Added demo directory

Signed-off-by: Lenard Nagy <lenard.nagy@ericsson.com>
diff --git a/demo/Bcm.cc b/demo/Bcm.cc
new file mode 100644
index 0000000..92d5e2d
--- /dev/null
+++ b/demo/Bcm.cc
@@ -0,0 +1,6364 @@
+// This C++ source file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+/* Including header files */
+
+#include "Bcm.hh"
+
+namespace Bcm {
+
+/* Prototypes of static functions */
+
+static void pre_init_module();
+static void post_init_module();
+
+/* Literal string constants */
+
+static const unsigned char module_checksum[] = { 0x42, 0xd3, 0x31, 0x8a, 0x5d, 0xa7, 0x3a, 0x27, 0x33, 0xab, 0xa8, 0x67, 0x69, 0x35, 0x6f, 0x9e };
+
+/* Global variable definitions */
+
+static INTEGER const_CAN__FRAME__MAX__NUMBER;
+const INTEGER& CAN__FRAME__MAX__NUMBER = const_CAN__FRAME__MAX__NUMBER;
+// No XER for BcmFlagsBitIndex__enum
+const TTCN_Typedescriptor_t BcmFlagsBitIndex__enum_descr_ = { "@Bcm.BcmFlagsBitIndex_enum", NULL, NULL, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for BcmFlags__enum
+const TTCN_Typedescriptor_t BcmFlags__enum_descr_ = { "@Bcm.BcmFlags_enum", NULL, NULL, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for BcmOpcode__enum
+const TTCN_Typedescriptor_t BcmOpcode__enum_descr_ = { "@Bcm.BcmOpcode_enum", NULL, NULL, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       Bcm__long_xer_ = { {"Bcm_long>\n", "Bcm_long>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t Bcm__long_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t Bcm__long_descr_ = { "@Bcm.Bcm_long", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &Bcm__long_xer_, &INTEGER_json_, &Bcm__long_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       Bcm__timeval_tv__sec_xer_ = { {"tv_sec>\n", "tv_sec>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t Bcm__timeval_tv__sec_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t Bcm__timeval_tv__sec_descr_ = { "@Bcm.Bcm_timeval.tv_sec", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &Bcm__timeval_tv__sec_xer_, &INTEGER_json_, &Bcm__timeval_tv__sec_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       Bcm__timeval_tv__usec_xer_ = { {"tv_usec>\n", "tv_usec>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t Bcm__timeval_tv__usec_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t Bcm__timeval_tv__usec_descr_ = { "@Bcm.Bcm_timeval.tv_usec", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &Bcm__timeval_tv__usec_xer_, &INTEGER_json_, &Bcm__timeval_tv__usec_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for Bcm__timeval
+const TTCN_Typedescriptor_t Bcm__timeval_descr_ = { "@Bcm.Bcm_timeval", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SocketCAN__bcm__frame_opcode_xer_ = { {"opcode>\n", "opcode>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SocketCAN__bcm__frame_opcode_oer_ext_arr_[0] = {};
+const int SocketCAN__bcm__frame_opcode_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SocketCAN__bcm__frame_opcode_oer_ = { -1, TRUE, 4, FALSE, 0, 0, SocketCAN__bcm__frame_opcode_oer_ext_arr_, 0, SocketCAN__bcm__frame_opcode_oer_p_};
+const TTCN_Typedescriptor_t SocketCAN__bcm__frame_opcode_descr_ = { "@Bcm.SocketCAN_bcm_frame.opcode", &OCTETSTRING_ber_, &General__Types::OCT4_raw_, &OCTETSTRING_text_, &SocketCAN__bcm__frame_opcode_xer_, &OCTETSTRING_json_, &SocketCAN__bcm__frame_opcode_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SocketCAN__bcm__frame_flags_raw_ = {32,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       SocketCAN__bcm__frame_flags_xer_ = { {"flags>\n", "flags>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SocketCAN__bcm__frame_flags_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SocketCAN__bcm__frame_flags_descr_ = { "@Bcm.SocketCAN_bcm_frame.flags", &BITSTRING_ber_, &SocketCAN__bcm__frame_flags_raw_, NULL, &SocketCAN__bcm__frame_flags_xer_, &BITSTRING_json_, &SocketCAN__bcm__frame_flags_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SocketCAN__bcm__frame_count_xer_ = { {"count>\n", "count>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SocketCAN__bcm__frame_count_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SocketCAN__bcm__frame_count_descr_ = { "@Bcm.SocketCAN_bcm_frame.count", &INTEGER_ber_, &General__Types::LIN4__BO__LAST_raw_, &INTEGER_text_, &SocketCAN__bcm__frame_count_xer_, &INTEGER_json_, &SocketCAN__bcm__frame_count_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SocketCAN__bcm__frame_can__id_xer_ = { {"can_id>\n", "can_id>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SocketCAN__bcm__frame_can__id_oer_ext_arr_[0] = {};
+const int SocketCAN__bcm__frame_can__id_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SocketCAN__bcm__frame_can__id_oer_ = { -1, TRUE, 4, FALSE, 0, 0, SocketCAN__bcm__frame_can__id_oer_ext_arr_, 0, SocketCAN__bcm__frame_can__id_oer_p_};
+const TTCN_Typedescriptor_t SocketCAN__bcm__frame_can__id_descr_ = { "@Bcm.SocketCAN_bcm_frame.can_id", &OCTETSTRING_ber_, &Can::CAN__id_raw_, &OCTETSTRING_text_, &SocketCAN__bcm__frame_can__id_xer_, &OCTETSTRING_json_, &SocketCAN__bcm__frame_can__id_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for SocketCAN__bcm__frame_frames
+const TTCN_Typedescriptor_t SocketCAN__bcm__frame_frames_descr_ = { "@Bcm.SocketCAN_bcm_frame.frames", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for SocketCAN__bcm__frame_frames_can__frame
+const TTCN_Typedescriptor_t SocketCAN__bcm__frame_frames_can__frame_descr_ = { "@Bcm.SocketCAN_bcm_frame.frames.can_frame", NULL, NULL, NULL, NULL, NULL, NULL, &Can::CAN__frame_descr_, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for SocketCAN__bcm__frame_frames_canfd__frame
+const TTCN_Typedescriptor_t SocketCAN__bcm__frame_frames_canfd__frame_descr_ = { "@Bcm.SocketCAN_bcm_frame.frames.canfd_frame", NULL, NULL, NULL, NULL, NULL, NULL, &Can::CANFD__frame_descr_, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for SocketCAN__bcm__frame
+const TTCN_Typedescriptor_t SocketCAN__bcm__frame_descr_ = { "@Bcm.SocketCAN_bcm_frame", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+TTCN_Module module_object("Bcm", __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);
+
+static const RuntimeVersionChecker ver_checker(  current_runtime_version.requires_major_version_6,
+  current_runtime_version.requires_minor_version_6,
+  current_runtime_version.requires_patch_level_0,  current_runtime_version.requires_runtime_1);
+
+/* Member functions of C++ classes */
+
+BcmFlagsBitIndex__enum::BcmFlagsBitIndex__enum()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+BcmFlagsBitIndex__enum::BcmFlagsBitIndex__enum(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @Bcm.BcmFlagsBitIndex_enum with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+BcmFlagsBitIndex__enum::BcmFlagsBitIndex__enum(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+BcmFlagsBitIndex__enum::BcmFlagsBitIndex__enum(const BcmFlagsBitIndex__enum& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @Bcm.BcmFlagsBitIndex_enum.");
+enum_value = other_value.enum_value;
+}
+
+BcmFlagsBitIndex__enum& BcmFlagsBitIndex__enum::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @Bcm.BcmFlagsBitIndex_enum.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+BcmFlagsBitIndex__enum& BcmFlagsBitIndex__enum::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+BcmFlagsBitIndex__enum& BcmFlagsBitIndex__enum::operator=(const BcmFlagsBitIndex__enum& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @Bcm.BcmFlagsBitIndex_enum.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean BcmFlagsBitIndex__enum::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Bcm.BcmFlagsBitIndex_enum.");
+return enum_value == other_value;
+}
+
+boolean BcmFlagsBitIndex__enum::operator==(const BcmFlagsBitIndex__enum& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Bcm.BcmFlagsBitIndex_enum.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @Bcm.BcmFlagsBitIndex_enum.");
+return enum_value == other_value.enum_value;
+}
+
+boolean BcmFlagsBitIndex__enum::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Bcm.BcmFlagsBitIndex_enum.");
+return enum_value < other_value;
+}
+
+boolean BcmFlagsBitIndex__enum::operator<(const BcmFlagsBitIndex__enum& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Bcm.BcmFlagsBitIndex_enum.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @Bcm.BcmFlagsBitIndex_enum.");
+return enum_value < other_value.enum_value;
+}
+
+boolean BcmFlagsBitIndex__enum::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Bcm.BcmFlagsBitIndex_enum.");
+return enum_value > other_value;
+}
+
+boolean BcmFlagsBitIndex__enum::operator>(const BcmFlagsBitIndex__enum& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Bcm.BcmFlagsBitIndex_enum.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @Bcm.BcmFlagsBitIndex_enum.");
+return enum_value > other_value.enum_value;
+}
+
+const char *BcmFlagsBitIndex__enum::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case e__CAN__BCM__SETTIMER__BITINDEX: return "e_CAN_BCM_SETTIMER_BITINDEX";
+case e__CAN__BCM__STARTTIMER__BITINDEX: return "e_CAN_BCM_STARTTIMER_BITINDEX";
+case e__CAN__BCM__TX__COUNTEVT__BITINDEX: return "e_CAN_BCM_TX_COUNTEVT_BITINDEX";
+case e__CAN__BCM__TX__ANNOUNCE__BITINDEX: return "e_CAN_BCM_TX_ANNOUNCE_BITINDEX";
+case e__CAN__BCM__TX__CP__CAN__ID__BITINDEX: return "e_CAN_BCM_TX_CP_CAN_ID_BITINDEX";
+case e__CAN__BCM__RX__FILTER__ID__BITINDEX: return "e_CAN_BCM_RX_FILTER_ID_BITINDEX";
+case e__CAN__BCM__RX__CHECK__DLC__BITINDEX: return "e_CAN_BCM_RX_CHECK_DLC_BITINDEX";
+case e__CAN__BCM__RX__NO__AUTOTIMER__BITINDEX: return "e_CAN_BCM_RX_NO_AUTOTIMER_BITINDEX";
+case e__CAN__BCM__RX__ANNOUNCE__RESUME__BITINDEX: return "e_CAN_BCM_RX_ANNOUNCE_RESUME_BITINDEX";
+case e__CAN__BCM__TX__RESET__MULTI__IDX__BITINDEX: return "e_CAN_BCM_TX_RESET_MULTI_IDX_BITINDEX";
+case e__CAN__BCM__RX__RTR__FRAME__BITINDEX: return "e_CAN_BCM_RX_RTR_FRAME_BITINDEX";
+default: return "<unknown>";
+}
+}
+
+BcmFlagsBitIndex__enum::enum_type BcmFlagsBitIndex__enum::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "e_CAN_BCM_SETTIMER_BITINDEX")) return e__CAN__BCM__SETTIMER__BITINDEX;
+else if (!strcmp(str_par, "e_CAN_BCM_STARTTIMER_BITINDEX")) return e__CAN__BCM__STARTTIMER__BITINDEX;
+else if (!strcmp(str_par, "e_CAN_BCM_TX_COUNTEVT_BITINDEX")) return e__CAN__BCM__TX__COUNTEVT__BITINDEX;
+else if (!strcmp(str_par, "e_CAN_BCM_TX_ANNOUNCE_BITINDEX")) return e__CAN__BCM__TX__ANNOUNCE__BITINDEX;
+else if (!strcmp(str_par, "e_CAN_BCM_TX_CP_CAN_ID_BITINDEX")) return e__CAN__BCM__TX__CP__CAN__ID__BITINDEX;
+else if (!strcmp(str_par, "e_CAN_BCM_RX_FILTER_ID_BITINDEX")) return e__CAN__BCM__RX__FILTER__ID__BITINDEX;
+else if (!strcmp(str_par, "e_CAN_BCM_RX_CHECK_DLC_BITINDEX")) return e__CAN__BCM__RX__CHECK__DLC__BITINDEX;
+else if (!strcmp(str_par, "e_CAN_BCM_RX_NO_AUTOTIMER_BITINDEX")) return e__CAN__BCM__RX__NO__AUTOTIMER__BITINDEX;
+else if (!strcmp(str_par, "e_CAN_BCM_RX_ANNOUNCE_RESUME_BITINDEX")) return e__CAN__BCM__RX__ANNOUNCE__RESUME__BITINDEX;
+else if (!strcmp(str_par, "e_CAN_BCM_TX_RESET_MULTI_IDX_BITINDEX")) return e__CAN__BCM__TX__RESET__MULTI__IDX__BITINDEX;
+else if (!strcmp(str_par, "e_CAN_BCM_RX_RTR_FRAME_BITINDEX")) return e__CAN__BCM__RX__RTR__FRAME__BITINDEX;
+else return UNKNOWN_VALUE;
+}
+
+boolean BcmFlagsBitIndex__enum::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 0:
+case 1:
+case 2:
+case 3:
+case 4:
+case 5:
+case 6:
+case 7:
+case 8:
+case 9:
+case 10:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int BcmFlagsBitIndex__enum::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @Bcm.BcmFlagsBitIndex_enum.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int BcmFlagsBitIndex__enum::enum2int(const BcmFlagsBitIndex__enum& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @Bcm.BcmFlagsBitIndex_enum.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void BcmFlagsBitIndex__enum::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @Bcm.BcmFlagsBitIndex_enum.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+BcmFlagsBitIndex__enum::operator BcmFlagsBitIndex__enum::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @Bcm.BcmFlagsBitIndex_enum.");
+return enum_value;
+}
+
+void BcmFlagsBitIndex__enum::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void BcmFlagsBitIndex__enum::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@Bcm.BcmFlagsBitIndex_enum");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @Bcm.BcmFlagsBitIndex_enum.");
+  }
+}
+
+void BcmFlagsBitIndex__enum::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @Bcm.BcmFlagsBitIndex_enum.");
+text_buf.push_int(enum_value);
+}
+
+void BcmFlagsBitIndex__enum::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @Bcm.BcmFlagsBitIndex_enum.", enum_value);
+}
+
+void BcmFlagsBitIndex__enum_template::copy_template(const BcmFlagsBitIndex__enum_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new BcmFlagsBitIndex__enum_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @Bcm.BcmFlagsBitIndex_enum.");
+}
+}
+
+BcmFlagsBitIndex__enum_template::BcmFlagsBitIndex__enum_template()
+{
+}
+
+BcmFlagsBitIndex__enum_template::BcmFlagsBitIndex__enum_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+BcmFlagsBitIndex__enum_template::BcmFlagsBitIndex__enum_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!BcmFlagsBitIndex__enum::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @Bcm.BcmFlagsBitIndex_enum with unknown numeric value %d.", other_value);
+single_value = (BcmFlagsBitIndex__enum::enum_type)other_value;
+}
+
+BcmFlagsBitIndex__enum_template::BcmFlagsBitIndex__enum_template(BcmFlagsBitIndex__enum::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+BcmFlagsBitIndex__enum_template::BcmFlagsBitIndex__enum_template(const BcmFlagsBitIndex__enum& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == BcmFlagsBitIndex__enum::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @Bcm.BcmFlagsBitIndex_enum.");
+single_value = other_value.enum_value;
+}
+
+BcmFlagsBitIndex__enum_template::BcmFlagsBitIndex__enum_template(const OPTIONAL<BcmFlagsBitIndex__enum>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (BcmFlagsBitIndex__enum::enum_type)(const BcmFlagsBitIndex__enum&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @Bcm.BcmFlagsBitIndex_enum from an unbound optional field.");
+}
+}
+
+BcmFlagsBitIndex__enum_template::BcmFlagsBitIndex__enum_template(const BcmFlagsBitIndex__enum_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+BcmFlagsBitIndex__enum_template::~BcmFlagsBitIndex__enum_template()
+{
+clean_up();
+}
+
+boolean BcmFlagsBitIndex__enum_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean BcmFlagsBitIndex__enum_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != BcmFlagsBitIndex__enum::UNBOUND_VALUE;
+}
+
+void BcmFlagsBitIndex__enum_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+BcmFlagsBitIndex__enum_template& BcmFlagsBitIndex__enum_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+BcmFlagsBitIndex__enum_template& BcmFlagsBitIndex__enum_template::operator=(int other_value)
+{
+if (!BcmFlagsBitIndex__enum::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @Bcm.BcmFlagsBitIndex_enum.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (BcmFlagsBitIndex__enum::enum_type)other_value;
+return *this;
+}
+
+BcmFlagsBitIndex__enum_template& BcmFlagsBitIndex__enum_template::operator=(BcmFlagsBitIndex__enum::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+BcmFlagsBitIndex__enum_template& BcmFlagsBitIndex__enum_template::operator=(const BcmFlagsBitIndex__enum& other_value)
+{
+if (other_value.enum_value == BcmFlagsBitIndex__enum::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @Bcm.BcmFlagsBitIndex_enum to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+BcmFlagsBitIndex__enum_template& BcmFlagsBitIndex__enum_template::operator=(const OPTIONAL<BcmFlagsBitIndex__enum>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (BcmFlagsBitIndex__enum::enum_type)(const BcmFlagsBitIndex__enum&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @Bcm.BcmFlagsBitIndex_enum.");
+}
+return *this;
+}
+
+BcmFlagsBitIndex__enum_template& BcmFlagsBitIndex__enum_template::operator=(const BcmFlagsBitIndex__enum_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean BcmFlagsBitIndex__enum_template::match(BcmFlagsBitIndex__enum::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @Bcm.BcmFlagsBitIndex_enum.");
+}
+return FALSE;
+}
+
+boolean BcmFlagsBitIndex__enum_template::match(const BcmFlagsBitIndex__enum& other_value, boolean) const
+{
+if (other_value.enum_value == BcmFlagsBitIndex__enum::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @Bcm.BcmFlagsBitIndex_enum with an unbound value.");
+return match(other_value.enum_value);
+}
+
+BcmFlagsBitIndex__enum::enum_type BcmFlagsBitIndex__enum_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @Bcm.BcmFlagsBitIndex_enum.");
+return single_value;
+}
+
+void BcmFlagsBitIndex__enum_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @Bcm.BcmFlagsBitIndex_enum.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new BcmFlagsBitIndex__enum_template[list_length];
+}
+
+BcmFlagsBitIndex__enum_template& BcmFlagsBitIndex__enum_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @Bcm.BcmFlagsBitIndex_enum.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @Bcm.BcmFlagsBitIndex_enum.");
+return value_list.list_value[list_index];
+}
+
+void BcmFlagsBitIndex__enum_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(BcmFlagsBitIndex__enum::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void BcmFlagsBitIndex__enum_template::log_match(const BcmFlagsBitIndex__enum& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void BcmFlagsBitIndex__enum_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @Bcm.BcmFlagsBitIndex_enum.");
+}
+}
+
+void BcmFlagsBitIndex__enum_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (BcmFlagsBitIndex__enum::enum_type)text_buf.pull_int().get_val();
+if (!BcmFlagsBitIndex__enum::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @Bcm.BcmFlagsBitIndex_enum.", single_value);
+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 BcmFlagsBitIndex__enum_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @Bcm.BcmFlagsBitIndex_enum.");
+}
+}
+
+boolean BcmFlagsBitIndex__enum_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean BcmFlagsBitIndex__enum_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 BcmFlagsBitIndex__enum_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    BcmFlagsBitIndex__enum_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    BcmFlagsBitIndex__enum::enum_type enum_val = BcmFlagsBitIndex__enum::str_to_enum(m_p->get_enumerated());
+    if (!BcmFlagsBitIndex__enum::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @Bcm.BcmFlagsBitIndex_enum.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@Bcm.BcmFlagsBitIndex_enum");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void BcmFlagsBitIndex__enum_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@Bcm.BcmFlagsBitIndex_enum");
+}
+
+BcmFlags__enum::BcmFlags__enum()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+BcmFlags__enum::BcmFlags__enum(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @Bcm.BcmFlags_enum with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+BcmFlags__enum::BcmFlags__enum(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+BcmFlags__enum::BcmFlags__enum(const BcmFlags__enum& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @Bcm.BcmFlags_enum.");
+enum_value = other_value.enum_value;
+}
+
+BcmFlags__enum& BcmFlags__enum::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @Bcm.BcmFlags_enum.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+BcmFlags__enum& BcmFlags__enum::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+BcmFlags__enum& BcmFlags__enum::operator=(const BcmFlags__enum& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @Bcm.BcmFlags_enum.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean BcmFlags__enum::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Bcm.BcmFlags_enum.");
+return enum_value == other_value;
+}
+
+boolean BcmFlags__enum::operator==(const BcmFlags__enum& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Bcm.BcmFlags_enum.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @Bcm.BcmFlags_enum.");
+return enum_value == other_value.enum_value;
+}
+
+boolean BcmFlags__enum::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Bcm.BcmFlags_enum.");
+return enum_value < other_value;
+}
+
+boolean BcmFlags__enum::operator<(const BcmFlags__enum& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Bcm.BcmFlags_enum.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @Bcm.BcmFlags_enum.");
+return enum_value < other_value.enum_value;
+}
+
+boolean BcmFlags__enum::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Bcm.BcmFlags_enum.");
+return enum_value > other_value;
+}
+
+boolean BcmFlags__enum::operator>(const BcmFlags__enum& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Bcm.BcmFlags_enum.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @Bcm.BcmFlags_enum.");
+return enum_value > other_value.enum_value;
+}
+
+const char *BcmFlags__enum::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case e__CAN__BCM__SETTIMER: return "e_CAN_BCM_SETTIMER";
+case e__CAN__BCM__STARTTIMER: return "e_CAN_BCM_STARTTIMER";
+case e__CAN__BCM__TX__COUNTEVT: return "e_CAN_BCM_TX_COUNTEVT";
+case e__CAN__BCM__TX__ANNOUNCE: return "e_CAN_BCM_TX_ANNOUNCE";
+case e__CAN__BCM__TX__CP__CAN__ID: return "e_CAN_BCM_TX_CP_CAN_ID";
+case e__CAN__BCM__RX__FILTER__ID: return "e_CAN_BCM_RX_FILTER_ID";
+case e__CAN__BCM__RX__CHECK__DLC: return "e_CAN_BCM_RX_CHECK_DLC";
+case e__CAN__BCM__RX__NO__AUTOTIMER: return "e_CAN_BCM_RX_NO_AUTOTIMER";
+case e__CAN__BCM__RX__ANNOUNCE__RESUME: return "e_CAN_BCM_RX_ANNOUNCE_RESUME";
+case e__CAN__BCM__TX__RESET__MULTI__IDX: return "e_CAN_BCM_TX_RESET_MULTI_IDX";
+case e__CAN__BCM__RX__RTR__FRAME: return "e_CAN_BCM_RX_RTR_FRAME";
+default: return "<unknown>";
+}
+}
+
+BcmFlags__enum::enum_type BcmFlags__enum::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "e_CAN_BCM_SETTIMER")) return e__CAN__BCM__SETTIMER;
+else if (!strcmp(str_par, "e_CAN_BCM_STARTTIMER")) return e__CAN__BCM__STARTTIMER;
+else if (!strcmp(str_par, "e_CAN_BCM_TX_COUNTEVT")) return e__CAN__BCM__TX__COUNTEVT;
+else if (!strcmp(str_par, "e_CAN_BCM_TX_ANNOUNCE")) return e__CAN__BCM__TX__ANNOUNCE;
+else if (!strcmp(str_par, "e_CAN_BCM_TX_CP_CAN_ID")) return e__CAN__BCM__TX__CP__CAN__ID;
+else if (!strcmp(str_par, "e_CAN_BCM_RX_FILTER_ID")) return e__CAN__BCM__RX__FILTER__ID;
+else if (!strcmp(str_par, "e_CAN_BCM_RX_CHECK_DLC")) return e__CAN__BCM__RX__CHECK__DLC;
+else if (!strcmp(str_par, "e_CAN_BCM_RX_NO_AUTOTIMER")) return e__CAN__BCM__RX__NO__AUTOTIMER;
+else if (!strcmp(str_par, "e_CAN_BCM_RX_ANNOUNCE_RESUME")) return e__CAN__BCM__RX__ANNOUNCE__RESUME;
+else if (!strcmp(str_par, "e_CAN_BCM_TX_RESET_MULTI_IDX")) return e__CAN__BCM__TX__RESET__MULTI__IDX;
+else if (!strcmp(str_par, "e_CAN_BCM_RX_RTR_FRAME")) return e__CAN__BCM__RX__RTR__FRAME;
+else return UNKNOWN_VALUE;
+}
+
+boolean BcmFlags__enum::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 1:
+case 2:
+case 4:
+case 8:
+case 16:
+case 32:
+case 64:
+case 128:
+case 256:
+case 512:
+case 1024:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int BcmFlags__enum::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @Bcm.BcmFlags_enum.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int BcmFlags__enum::enum2int(const BcmFlags__enum& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @Bcm.BcmFlags_enum.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void BcmFlags__enum::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @Bcm.BcmFlags_enum.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+BcmFlags__enum::operator BcmFlags__enum::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @Bcm.BcmFlags_enum.");
+return enum_value;
+}
+
+void BcmFlags__enum::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void BcmFlags__enum::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@Bcm.BcmFlags_enum");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @Bcm.BcmFlags_enum.");
+  }
+}
+
+void BcmFlags__enum::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @Bcm.BcmFlags_enum.");
+text_buf.push_int(enum_value);
+}
+
+void BcmFlags__enum::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @Bcm.BcmFlags_enum.", enum_value);
+}
+
+void BcmFlags__enum_template::copy_template(const BcmFlags__enum_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new BcmFlags__enum_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @Bcm.BcmFlags_enum.");
+}
+}
+
+BcmFlags__enum_template::BcmFlags__enum_template()
+{
+}
+
+BcmFlags__enum_template::BcmFlags__enum_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+BcmFlags__enum_template::BcmFlags__enum_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!BcmFlags__enum::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @Bcm.BcmFlags_enum with unknown numeric value %d.", other_value);
+single_value = (BcmFlags__enum::enum_type)other_value;
+}
+
+BcmFlags__enum_template::BcmFlags__enum_template(BcmFlags__enum::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+BcmFlags__enum_template::BcmFlags__enum_template(const BcmFlags__enum& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == BcmFlags__enum::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @Bcm.BcmFlags_enum.");
+single_value = other_value.enum_value;
+}
+
+BcmFlags__enum_template::BcmFlags__enum_template(const OPTIONAL<BcmFlags__enum>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (BcmFlags__enum::enum_type)(const BcmFlags__enum&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @Bcm.BcmFlags_enum from an unbound optional field.");
+}
+}
+
+BcmFlags__enum_template::BcmFlags__enum_template(const BcmFlags__enum_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+BcmFlags__enum_template::~BcmFlags__enum_template()
+{
+clean_up();
+}
+
+boolean BcmFlags__enum_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean BcmFlags__enum_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != BcmFlags__enum::UNBOUND_VALUE;
+}
+
+void BcmFlags__enum_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+BcmFlags__enum_template& BcmFlags__enum_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+BcmFlags__enum_template& BcmFlags__enum_template::operator=(int other_value)
+{
+if (!BcmFlags__enum::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @Bcm.BcmFlags_enum.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (BcmFlags__enum::enum_type)other_value;
+return *this;
+}
+
+BcmFlags__enum_template& BcmFlags__enum_template::operator=(BcmFlags__enum::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+BcmFlags__enum_template& BcmFlags__enum_template::operator=(const BcmFlags__enum& other_value)
+{
+if (other_value.enum_value == BcmFlags__enum::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @Bcm.BcmFlags_enum to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+BcmFlags__enum_template& BcmFlags__enum_template::operator=(const OPTIONAL<BcmFlags__enum>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (BcmFlags__enum::enum_type)(const BcmFlags__enum&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @Bcm.BcmFlags_enum.");
+}
+return *this;
+}
+
+BcmFlags__enum_template& BcmFlags__enum_template::operator=(const BcmFlags__enum_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean BcmFlags__enum_template::match(BcmFlags__enum::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @Bcm.BcmFlags_enum.");
+}
+return FALSE;
+}
+
+boolean BcmFlags__enum_template::match(const BcmFlags__enum& other_value, boolean) const
+{
+if (other_value.enum_value == BcmFlags__enum::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @Bcm.BcmFlags_enum with an unbound value.");
+return match(other_value.enum_value);
+}
+
+BcmFlags__enum::enum_type BcmFlags__enum_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @Bcm.BcmFlags_enum.");
+return single_value;
+}
+
+void BcmFlags__enum_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @Bcm.BcmFlags_enum.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new BcmFlags__enum_template[list_length];
+}
+
+BcmFlags__enum_template& BcmFlags__enum_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @Bcm.BcmFlags_enum.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @Bcm.BcmFlags_enum.");
+return value_list.list_value[list_index];
+}
+
+void BcmFlags__enum_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(BcmFlags__enum::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void BcmFlags__enum_template::log_match(const BcmFlags__enum& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void BcmFlags__enum_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @Bcm.BcmFlags_enum.");
+}
+}
+
+void BcmFlags__enum_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (BcmFlags__enum::enum_type)text_buf.pull_int().get_val();
+if (!BcmFlags__enum::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @Bcm.BcmFlags_enum.", single_value);
+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 BcmFlags__enum_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @Bcm.BcmFlags_enum.");
+}
+}
+
+boolean BcmFlags__enum_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean BcmFlags__enum_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 BcmFlags__enum_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    BcmFlags__enum_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    BcmFlags__enum::enum_type enum_val = BcmFlags__enum::str_to_enum(m_p->get_enumerated());
+    if (!BcmFlags__enum::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @Bcm.BcmFlags_enum.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@Bcm.BcmFlags_enum");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void BcmFlags__enum_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@Bcm.BcmFlags_enum");
+}
+
+BcmOpcode__enum::BcmOpcode__enum()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+BcmOpcode__enum::BcmOpcode__enum(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @Bcm.BcmOpcode_enum with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+BcmOpcode__enum::BcmOpcode__enum(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+BcmOpcode__enum::BcmOpcode__enum(const BcmOpcode__enum& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @Bcm.BcmOpcode_enum.");
+enum_value = other_value.enum_value;
+}
+
+BcmOpcode__enum& BcmOpcode__enum::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @Bcm.BcmOpcode_enum.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+BcmOpcode__enum& BcmOpcode__enum::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+BcmOpcode__enum& BcmOpcode__enum::operator=(const BcmOpcode__enum& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @Bcm.BcmOpcode_enum.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean BcmOpcode__enum::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Bcm.BcmOpcode_enum.");
+return enum_value == other_value;
+}
+
+boolean BcmOpcode__enum::operator==(const BcmOpcode__enum& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Bcm.BcmOpcode_enum.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @Bcm.BcmOpcode_enum.");
+return enum_value == other_value.enum_value;
+}
+
+boolean BcmOpcode__enum::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Bcm.BcmOpcode_enum.");
+return enum_value < other_value;
+}
+
+boolean BcmOpcode__enum::operator<(const BcmOpcode__enum& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Bcm.BcmOpcode_enum.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @Bcm.BcmOpcode_enum.");
+return enum_value < other_value.enum_value;
+}
+
+boolean BcmOpcode__enum::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Bcm.BcmOpcode_enum.");
+return enum_value > other_value;
+}
+
+boolean BcmOpcode__enum::operator>(const BcmOpcode__enum& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Bcm.BcmOpcode_enum.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @Bcm.BcmOpcode_enum.");
+return enum_value > other_value.enum_value;
+}
+
+const char *BcmOpcode__enum::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case e__CAN__BCM__TX__SETUP: return "e_CAN_BCM_TX_SETUP";
+case e__CAN__BCM__TX__DELETE: return "e_CAN_BCM_TX_DELETE";
+case e__CAN__BCM__TX__READ: return "e_CAN_BCM_TX_READ";
+case e__CAN__BCM__TX__SEND: return "e_CAN_BCM_TX_SEND";
+case e__CAN__BCM__RX__SETUP: return "e_CAN_BCM_RX_SETUP";
+case e__CAN__BCM__RX__DELETE: return "e_CAN_BCM_RX_DELETE";
+case e__CAN__BCM__RX__READ: return "e_CAN_BCM_RX_READ";
+case e__CAN__BCM__TX__STATUS: return "e_CAN_BCM_TX_STATUS";
+case e__CAN__BCM__TX__EXPIRED: return "e_CAN_BCM_TX_EXPIRED";
+case e__CAN__BCM__RX__STATUS: return "e_CAN_BCM_RX_STATUS";
+case e__CAN__BCM__RX__TIMEOUT: return "e_CAN_BCM_RX_TIMEOUT";
+case e__CAN__BCM__RX__CHANGED: return "e_CAN_BCM_RX_CHANGED";
+default: return "<unknown>";
+}
+}
+
+BcmOpcode__enum::enum_type BcmOpcode__enum::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "e_CAN_BCM_TX_SETUP")) return e__CAN__BCM__TX__SETUP;
+else if (!strcmp(str_par, "e_CAN_BCM_TX_DELETE")) return e__CAN__BCM__TX__DELETE;
+else if (!strcmp(str_par, "e_CAN_BCM_TX_READ")) return e__CAN__BCM__TX__READ;
+else if (!strcmp(str_par, "e_CAN_BCM_TX_SEND")) return e__CAN__BCM__TX__SEND;
+else if (!strcmp(str_par, "e_CAN_BCM_RX_SETUP")) return e__CAN__BCM__RX__SETUP;
+else if (!strcmp(str_par, "e_CAN_BCM_RX_DELETE")) return e__CAN__BCM__RX__DELETE;
+else if (!strcmp(str_par, "e_CAN_BCM_RX_READ")) return e__CAN__BCM__RX__READ;
+else if (!strcmp(str_par, "e_CAN_BCM_TX_STATUS")) return e__CAN__BCM__TX__STATUS;
+else if (!strcmp(str_par, "e_CAN_BCM_TX_EXPIRED")) return e__CAN__BCM__TX__EXPIRED;
+else if (!strcmp(str_par, "e_CAN_BCM_RX_STATUS")) return e__CAN__BCM__RX__STATUS;
+else if (!strcmp(str_par, "e_CAN_BCM_RX_TIMEOUT")) return e__CAN__BCM__RX__TIMEOUT;
+else if (!strcmp(str_par, "e_CAN_BCM_RX_CHANGED")) return e__CAN__BCM__RX__CHANGED;
+else return UNKNOWN_VALUE;
+}
+
+boolean BcmOpcode__enum::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 1:
+case 2:
+case 3:
+case 4:
+case 5:
+case 6:
+case 7:
+case 8:
+case 9:
+case 10:
+case 11:
+case 12:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int BcmOpcode__enum::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @Bcm.BcmOpcode_enum.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int BcmOpcode__enum::enum2int(const BcmOpcode__enum& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @Bcm.BcmOpcode_enum.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void BcmOpcode__enum::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @Bcm.BcmOpcode_enum.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+BcmOpcode__enum::operator BcmOpcode__enum::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @Bcm.BcmOpcode_enum.");
+return enum_value;
+}
+
+void BcmOpcode__enum::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void BcmOpcode__enum::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@Bcm.BcmOpcode_enum");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @Bcm.BcmOpcode_enum.");
+  }
+}
+
+void BcmOpcode__enum::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @Bcm.BcmOpcode_enum.");
+text_buf.push_int(enum_value);
+}
+
+void BcmOpcode__enum::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @Bcm.BcmOpcode_enum.", enum_value);
+}
+
+void BcmOpcode__enum_template::copy_template(const BcmOpcode__enum_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new BcmOpcode__enum_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @Bcm.BcmOpcode_enum.");
+}
+}
+
+BcmOpcode__enum_template::BcmOpcode__enum_template()
+{
+}
+
+BcmOpcode__enum_template::BcmOpcode__enum_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+BcmOpcode__enum_template::BcmOpcode__enum_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!BcmOpcode__enum::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @Bcm.BcmOpcode_enum with unknown numeric value %d.", other_value);
+single_value = (BcmOpcode__enum::enum_type)other_value;
+}
+
+BcmOpcode__enum_template::BcmOpcode__enum_template(BcmOpcode__enum::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+BcmOpcode__enum_template::BcmOpcode__enum_template(const BcmOpcode__enum& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == BcmOpcode__enum::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @Bcm.BcmOpcode_enum.");
+single_value = other_value.enum_value;
+}
+
+BcmOpcode__enum_template::BcmOpcode__enum_template(const OPTIONAL<BcmOpcode__enum>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (BcmOpcode__enum::enum_type)(const BcmOpcode__enum&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @Bcm.BcmOpcode_enum from an unbound optional field.");
+}
+}
+
+BcmOpcode__enum_template::BcmOpcode__enum_template(const BcmOpcode__enum_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+BcmOpcode__enum_template::~BcmOpcode__enum_template()
+{
+clean_up();
+}
+
+boolean BcmOpcode__enum_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean BcmOpcode__enum_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != BcmOpcode__enum::UNBOUND_VALUE;
+}
+
+void BcmOpcode__enum_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+BcmOpcode__enum_template& BcmOpcode__enum_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+BcmOpcode__enum_template& BcmOpcode__enum_template::operator=(int other_value)
+{
+if (!BcmOpcode__enum::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @Bcm.BcmOpcode_enum.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (BcmOpcode__enum::enum_type)other_value;
+return *this;
+}
+
+BcmOpcode__enum_template& BcmOpcode__enum_template::operator=(BcmOpcode__enum::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+BcmOpcode__enum_template& BcmOpcode__enum_template::operator=(const BcmOpcode__enum& other_value)
+{
+if (other_value.enum_value == BcmOpcode__enum::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @Bcm.BcmOpcode_enum to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+BcmOpcode__enum_template& BcmOpcode__enum_template::operator=(const OPTIONAL<BcmOpcode__enum>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (BcmOpcode__enum::enum_type)(const BcmOpcode__enum&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @Bcm.BcmOpcode_enum.");
+}
+return *this;
+}
+
+BcmOpcode__enum_template& BcmOpcode__enum_template::operator=(const BcmOpcode__enum_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean BcmOpcode__enum_template::match(BcmOpcode__enum::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @Bcm.BcmOpcode_enum.");
+}
+return FALSE;
+}
+
+boolean BcmOpcode__enum_template::match(const BcmOpcode__enum& other_value, boolean) const
+{
+if (other_value.enum_value == BcmOpcode__enum::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @Bcm.BcmOpcode_enum with an unbound value.");
+return match(other_value.enum_value);
+}
+
+BcmOpcode__enum::enum_type BcmOpcode__enum_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @Bcm.BcmOpcode_enum.");
+return single_value;
+}
+
+void BcmOpcode__enum_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @Bcm.BcmOpcode_enum.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new BcmOpcode__enum_template[list_length];
+}
+
+BcmOpcode__enum_template& BcmOpcode__enum_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @Bcm.BcmOpcode_enum.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @Bcm.BcmOpcode_enum.");
+return value_list.list_value[list_index];
+}
+
+void BcmOpcode__enum_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(BcmOpcode__enum::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void BcmOpcode__enum_template::log_match(const BcmOpcode__enum& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void BcmOpcode__enum_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @Bcm.BcmOpcode_enum.");
+}
+}
+
+void BcmOpcode__enum_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (BcmOpcode__enum::enum_type)text_buf.pull_int().get_val();
+if (!BcmOpcode__enum::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @Bcm.BcmOpcode_enum.", single_value);
+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 BcmOpcode__enum_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @Bcm.BcmOpcode_enum.");
+}
+}
+
+boolean BcmOpcode__enum_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean BcmOpcode__enum_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 BcmOpcode__enum_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    BcmOpcode__enum_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    BcmOpcode__enum::enum_type enum_val = BcmOpcode__enum::str_to_enum(m_p->get_enumerated());
+    if (!BcmOpcode__enum::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @Bcm.BcmOpcode_enum.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@Bcm.BcmOpcode_enum");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void BcmOpcode__enum_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@Bcm.BcmOpcode_enum");
+}
+
+Bcm__timeval::Bcm__timeval()
+{
+}
+
+Bcm__timeval::Bcm__timeval(const INTEGER& par_tv__sec,
+    const INTEGER& par_tv__usec)
+  :   field_tv__sec(par_tv__sec),
+  field_tv__usec(par_tv__usec)
+{
+}
+
+Bcm__timeval::Bcm__timeval(const Bcm__timeval& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @Bcm.Bcm_timeval.");
+if (other_value.tv__sec().is_bound()) field_tv__sec = other_value.tv__sec();
+else field_tv__sec.clean_up();
+if (other_value.tv__usec().is_bound()) field_tv__usec = other_value.tv__usec();
+else field_tv__usec.clean_up();
+}
+
+void Bcm__timeval::clean_up()
+{
+field_tv__sec.clean_up();
+field_tv__usec.clean_up();
+}
+
+const TTCN_Typedescriptor_t* Bcm__timeval::get_descriptor() const { return &Bcm__timeval_descr_; }
+Bcm__timeval& Bcm__timeval::operator=(const Bcm__timeval& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @Bcm.Bcm_timeval.");
+  if (other_value.tv__sec().is_bound()) field_tv__sec = other_value.tv__sec();
+  else field_tv__sec.clean_up();
+  if (other_value.tv__usec().is_bound()) field_tv__usec = other_value.tv__usec();
+  else field_tv__usec.clean_up();
+}
+return *this;
+}
+
+boolean Bcm__timeval::operator==(const Bcm__timeval& other_value) const
+{
+return field_tv__sec==other_value.field_tv__sec
+  && field_tv__usec==other_value.field_tv__usec;
+}
+
+boolean Bcm__timeval::is_bound() const
+{
+return (field_tv__sec.is_bound())
+  || (field_tv__usec.is_bound());
+}
+boolean Bcm__timeval::is_value() const
+{
+return field_tv__sec.is_value()
+  && field_tv__usec.is_value();
+}
+void Bcm__timeval::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ tv_sec := ");
+field_tv__sec.log();
+TTCN_Logger::log_event_str(", tv_usec := ");
+field_tv__usec.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void Bcm__timeval::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 @Bcm.Bcm_timeval 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) tv__sec().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) tv__usec().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(), "tv_sec")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          tv__sec().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(), "tv_usec")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          tv__usec().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 @Bcm.Bcm_timeval: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@Bcm.Bcm_timeval");
+  }
+}
+
+void Bcm__timeval::set_implicit_omit()
+{
+if (tv__sec().is_bound()) tv__sec().set_implicit_omit();
+if (tv__usec().is_bound()) tv__usec().set_implicit_omit();
+}
+
+void Bcm__timeval::encode_text(Text_Buf& text_buf) const
+{
+field_tv__sec.encode_text(text_buf);
+field_tv__usec.encode_text(text_buf);
+}
+
+void Bcm__timeval::decode_text(Text_Buf& text_buf)
+{
+field_tv__sec.decode_text(text_buf);
+field_tv__usec.decode_text(text_buf);
+}
+
+struct Bcm__timeval_template::single_value_struct {
+INTEGER_template field_tv__sec;
+INTEGER_template field_tv__usec;
+};
+
+void Bcm__timeval_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_tv__sec = ANY_VALUE;
+single_value->field_tv__usec = ANY_VALUE;
+}
+}
+}
+
+void Bcm__timeval_template::copy_value(const Bcm__timeval& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.tv__sec().is_bound()) {
+  single_value->field_tv__sec = other_value.tv__sec();
+} else {
+  single_value->field_tv__sec.clean_up();
+}
+if (other_value.tv__usec().is_bound()) {
+  single_value->field_tv__usec = other_value.tv__usec();
+} else {
+  single_value->field_tv__usec.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void Bcm__timeval_template::copy_template(const Bcm__timeval_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.tv__sec().get_selection()) {
+single_value->field_tv__sec = other_value.tv__sec();
+} else {
+single_value->field_tv__sec.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.tv__usec().get_selection()) {
+single_value->field_tv__usec = other_value.tv__usec();
+} else {
+single_value->field_tv__usec.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new Bcm__timeval_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @Bcm.Bcm_timeval.");
+break;
+}
+set_selection(other_value);
+}
+
+Bcm__timeval_template::Bcm__timeval_template()
+{
+}
+
+Bcm__timeval_template::Bcm__timeval_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+Bcm__timeval_template::Bcm__timeval_template(const Bcm__timeval& other_value)
+{
+copy_value(other_value);
+}
+
+Bcm__timeval_template::Bcm__timeval_template(const OPTIONAL<Bcm__timeval>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const Bcm__timeval&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @Bcm.Bcm_timeval from an unbound optional field.");
+}
+}
+
+Bcm__timeval_template::Bcm__timeval_template(const Bcm__timeval_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+Bcm__timeval_template::~Bcm__timeval_template()
+{
+clean_up();
+}
+
+Bcm__timeval_template& Bcm__timeval_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+Bcm__timeval_template& Bcm__timeval_template::operator=(const Bcm__timeval& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+Bcm__timeval_template& Bcm__timeval_template::operator=(const OPTIONAL<Bcm__timeval>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const Bcm__timeval&)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 @Bcm.Bcm_timeval.");
+}
+return *this;
+}
+
+Bcm__timeval_template& Bcm__timeval_template::operator=(const Bcm__timeval_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean Bcm__timeval_template::match(const Bcm__timeval& 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.tv__sec().is_bound()) return FALSE;
+if(!single_value->field_tv__sec.match(other_value.tv__sec(), legacy))return FALSE;
+if(!other_value.tv__usec().is_bound()) return FALSE;
+if(!single_value->field_tv__usec.match(other_value.tv__usec(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @Bcm.Bcm_timeval.");
+}
+return FALSE;
+}
+
+boolean Bcm__timeval_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_tv__sec.is_bound()
+
+ ||single_value->field_tv__usec.is_bound()
+;
+}
+
+boolean Bcm__timeval_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_tv__sec.is_value()
+ &&single_value->field_tv__usec.is_value();
+}
+
+void Bcm__timeval_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+Bcm__timeval Bcm__timeval_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 @Bcm.Bcm_timeval.");
+Bcm__timeval ret_val;
+if (single_value->field_tv__sec.is_bound()) {
+ret_val.tv__sec() = single_value->field_tv__sec.valueof();
+}
+if (single_value->field_tv__usec.is_bound()) {
+ret_val.tv__usec() = single_value->field_tv__usec.valueof();
+}
+return ret_val;
+}
+
+void Bcm__timeval_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @Bcm.Bcm_timeval.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new Bcm__timeval_template[list_length];
+}
+
+Bcm__timeval_template& Bcm__timeval_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @Bcm.Bcm_timeval.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @Bcm.Bcm_timeval.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& Bcm__timeval_template::tv__sec()
+{
+set_specific();
+return single_value->field_tv__sec;
+}
+
+const INTEGER_template& Bcm__timeval_template::tv__sec() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field tv_sec of a non-specific template of type @Bcm.Bcm_timeval.");
+return single_value->field_tv__sec;
+}
+
+INTEGER_template& Bcm__timeval_template::tv__usec()
+{
+set_specific();
+return single_value->field_tv__usec;
+}
+
+const INTEGER_template& Bcm__timeval_template::tv__usec() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field tv_usec of a non-specific template of type @Bcm.Bcm_timeval.");
+return single_value->field_tv__usec;
+}
+
+int Bcm__timeval_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @Bcm.Bcm_timeval 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 @Bcm.Bcm_timeval 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 @Bcm.Bcm_timeval containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @Bcm.Bcm_timeval containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @Bcm.Bcm_timeval containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @Bcm.Bcm_timeval containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @Bcm.Bcm_timeval.");
+  }
+  return 0;
+}
+
+void Bcm__timeval_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ tv_sec := ");
+single_value->field_tv__sec.log();
+TTCN_Logger::log_event_str(", tv_usec := ");
+single_value->field_tv__usec.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void Bcm__timeval_template::log_match(const Bcm__timeval& 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_tv__sec.match(match_value.tv__sec(), legacy)){
+TTCN_Logger::log_logmatch_info(".tv_sec");
+single_value->field_tv__sec.log_match(match_value.tv__sec(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_tv__usec.match(match_value.tv__usec(), legacy)){
+TTCN_Logger::log_logmatch_info(".tv_usec");
+single_value->field_tv__usec.log_match(match_value.tv__usec(), 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("{ tv_sec := ");
+single_value->field_tv__sec.log_match(match_value.tv__sec(), legacy);
+TTCN_Logger::log_event_str(", tv_usec := ");
+single_value->field_tv__usec.log_match(match_value.tv__usec(), 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 Bcm__timeval_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_tv__sec.encode_text(text_buf);
+single_value->field_tv__usec.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 @Bcm.Bcm_timeval.");
+}
+}
+
+void Bcm__timeval_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_tv__sec.decode_text(text_buf);
+single_value->field_tv__usec.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 Bcm__timeval_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 @Bcm.Bcm_timeval.");
+}
+}
+
+void Bcm__timeval_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: {
+    Bcm__timeval_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @Bcm.Bcm_timeval 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) tv__sec().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) tv__usec().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(), "tv_sec")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          tv__sec().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(), "tv_usec")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          tv__usec().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 @Bcm.Bcm_timeval: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@Bcm.Bcm_timeval");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void Bcm__timeval_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_tv__sec.check_restriction(t_res, t_name ? t_name : "@Bcm.Bcm_timeval");
+single_value->field_tv__usec.check_restriction(t_res, t_name ? t_name : "@Bcm.Bcm_timeval");
+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 : "@Bcm.Bcm_timeval");
+}
+
+boolean Bcm__timeval_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean Bcm__timeval_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 SocketCAN__bcm__frame_frames::copy_value(const SocketCAN__bcm__frame_frames& other_value)
+{
+switch (other_value.union_selection) {
+case ALT_can__frame:
+field_can__frame = new SocketCAN__bcm__frame_frames_can__frame(*other_value.field_can__frame);
+break;
+case ALT_canfd__frame:
+field_canfd__frame = new SocketCAN__bcm__frame_frames_canfd__frame(*other_value.field_canfd__frame);
+break;
+default:
+TTCN_error("Assignment of an unbound union value of type @Bcm.SocketCAN_bcm_frame.frames.");
+}
+union_selection = other_value.union_selection;
+}
+
+SocketCAN__bcm__frame_frames::SocketCAN__bcm__frame_frames()
+{
+union_selection = UNBOUND_VALUE;
+}
+
+SocketCAN__bcm__frame_frames::SocketCAN__bcm__frame_frames(const SocketCAN__bcm__frame_frames& other_value)
+: Base_Type(){
+copy_value(other_value);
+}
+
+SocketCAN__bcm__frame_frames::~SocketCAN__bcm__frame_frames()
+{
+clean_up();
+}
+
+SocketCAN__bcm__frame_frames& SocketCAN__bcm__frame_frames::operator=(const SocketCAN__bcm__frame_frames& other_value)
+{
+if (this != &other_value) {
+clean_up();
+copy_value(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__bcm__frame_frames::operator==(const SocketCAN__bcm__frame_frames& other_value) const
+{
+if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @Bcm.SocketCAN_bcm_frame.frames.");
+if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @Bcm.SocketCAN_bcm_frame.frames.");
+if (union_selection != other_value.union_selection) return FALSE;
+switch (union_selection) {
+case ALT_can__frame:
+return *field_can__frame == *other_value.field_can__frame;
+case ALT_canfd__frame:
+return *field_canfd__frame == *other_value.field_canfd__frame;
+default:
+return FALSE;
+}
+}
+
+SocketCAN__bcm__frame_frames_can__frame& SocketCAN__bcm__frame_frames::can__frame()
+{
+if (union_selection != ALT_can__frame) {
+clean_up();
+field_can__frame = new SocketCAN__bcm__frame_frames_can__frame;
+union_selection = ALT_can__frame;
+}
+return *field_can__frame;
+}
+
+const SocketCAN__bcm__frame_frames_can__frame& SocketCAN__bcm__frame_frames::can__frame() const
+{
+if (union_selection != ALT_can__frame) TTCN_error("Using non-selected field can_frame in a value of union type @Bcm.SocketCAN_bcm_frame.frames.");
+return *field_can__frame;
+}
+
+SocketCAN__bcm__frame_frames_canfd__frame& SocketCAN__bcm__frame_frames::canfd__frame()
+{
+if (union_selection != ALT_canfd__frame) {
+clean_up();
+field_canfd__frame = new SocketCAN__bcm__frame_frames_canfd__frame;
+union_selection = ALT_canfd__frame;
+}
+return *field_canfd__frame;
+}
+
+const SocketCAN__bcm__frame_frames_canfd__frame& SocketCAN__bcm__frame_frames::canfd__frame() const
+{
+if (union_selection != ALT_canfd__frame) TTCN_error("Using non-selected field canfd_frame in a value of union type @Bcm.SocketCAN_bcm_frame.frames.");
+return *field_canfd__frame;
+}
+
+boolean SocketCAN__bcm__frame_frames::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 @Bcm.SocketCAN_bcm_frame.frames.");
+return union_selection == checked_selection;
+}
+
+boolean SocketCAN__bcm__frame_frames::is_bound() const
+{
+  return union_selection != UNBOUND_VALUE;
+}
+
+boolean SocketCAN__bcm__frame_frames::is_value() const
+{
+switch (union_selection) {
+case UNBOUND_VALUE: return FALSE;
+case ALT_can__frame: return field_can__frame->is_value();
+case ALT_canfd__frame: return field_canfd__frame->is_value();
+default: TTCN_error("Invalid selection in union is_bound");}
+}
+
+void SocketCAN__bcm__frame_frames::clean_up()
+{
+switch (union_selection) {
+case ALT_can__frame:
+  delete field_can__frame;
+  break;
+case ALT_canfd__frame:
+  delete field_canfd__frame;
+  break;
+default:
+  break;
+}
+union_selection = UNBOUND_VALUE;
+}
+
+void SocketCAN__bcm__frame_frames::log() const
+{
+switch (union_selection) {
+case ALT_can__frame:
+TTCN_Logger::log_event_str("{ can_frame := ");
+field_can__frame->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_canfd__frame:
+TTCN_Logger::log_event_str("{ canfd_frame := ");
+field_canfd__frame->log();
+TTCN_Logger::log_event_str(" }");
+break;
+default:
+TTCN_Logger::log_event_unbound();
+}
+}
+
+void SocketCAN__bcm__frame_frames::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, "can_frame")) {
+    can__frame().set_param(*mp_last);
+    if (!can__frame().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "canfd_frame")) {
+    canfd__frame().set_param(*mp_last);
+    if (!canfd__frame().is_bound()) clean_up();
+    return;
+  }
+  mp_last->error("Field %s does not exist in type @Bcm.SocketCAN_bcm_frame.frames.", last_name);
+}
+
+void SocketCAN__bcm__frame_frames::set_implicit_omit()
+{
+switch (union_selection) {
+case ALT_can__frame:
+field_can__frame->set_implicit_omit(); break;
+case ALT_canfd__frame:
+field_canfd__frame->set_implicit_omit(); break;
+default: break;
+}
+}
+
+void SocketCAN__bcm__frame_frames::encode_text(Text_Buf& text_buf) const
+{
+text_buf.push_int(union_selection);
+switch (union_selection) {
+case ALT_can__frame:
+field_can__frame->encode_text(text_buf);
+break;
+case ALT_canfd__frame:
+field_canfd__frame->encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an unbound value of union type @Bcm.SocketCAN_bcm_frame.frames.");
+}
+}
+
+void SocketCAN__bcm__frame_frames::decode_text(Text_Buf& text_buf)
+{
+switch ((union_selection_type)text_buf.pull_int().get_val()) {
+case ALT_can__frame:
+can__frame().decode_text(text_buf);
+break;
+case ALT_canfd__frame:
+canfd__frame().decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for type @Bcm.SocketCAN_bcm_frame.frames.");
+}
+}
+
+void SocketCAN__bcm__frame_frames_template::copy_value(const SocketCAN__bcm__frame_frames& other_value)
+{
+single_value.union_selection = other_value.get_selection();
+switch (single_value.union_selection) {
+case SocketCAN__bcm__frame_frames::ALT_can__frame:
+single_value.field_can__frame = new SocketCAN__bcm__frame_frames_can__frame_template(other_value.can__frame());
+break;
+case SocketCAN__bcm__frame_frames::ALT_canfd__frame:
+single_value.field_canfd__frame = new SocketCAN__bcm__frame_frames_canfd__frame_template(other_value.canfd__frame());
+break;
+default:
+TTCN_error("Initializing a template with an unbound value of type @Bcm.SocketCAN_bcm_frame.frames.");
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SocketCAN__bcm__frame_frames_template::copy_template(const SocketCAN__bcm__frame_frames_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 SocketCAN__bcm__frame_frames::ALT_can__frame:
+single_value.field_can__frame = new SocketCAN__bcm__frame_frames_can__frame_template(*other_value.single_value.field_can__frame);
+break;
+case SocketCAN__bcm__frame_frames::ALT_canfd__frame:
+single_value.field_canfd__frame = new SocketCAN__bcm__frame_frames_canfd__frame_template(*other_value.single_value.field_canfd__frame);
+break;
+default:
+TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @Bcm.SocketCAN_bcm_frame.frames.");
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SocketCAN__bcm__frame_frames_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;
+default:
+TTCN_error("Copying an uninitialized template of union type @Bcm.SocketCAN_bcm_frame.frames.");
+}
+set_selection(other_value);
+}
+
+SocketCAN__bcm__frame_frames_template::SocketCAN__bcm__frame_frames_template()
+{
+}
+
+SocketCAN__bcm__frame_frames_template::SocketCAN__bcm__frame_frames_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SocketCAN__bcm__frame_frames_template::SocketCAN__bcm__frame_frames_template(const SocketCAN__bcm__frame_frames& other_value)
+{
+copy_value(other_value);
+}
+
+SocketCAN__bcm__frame_frames_template::SocketCAN__bcm__frame_frames_template(const OPTIONAL<SocketCAN__bcm__frame_frames>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__bcm__frame_frames&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of union type @Bcm.SocketCAN_bcm_frame.frames from an unbound optional field.");
+}
+}
+
+SocketCAN__bcm__frame_frames_template::SocketCAN__bcm__frame_frames_template(const SocketCAN__bcm__frame_frames_template& other_value)
+: Base_Template(){
+copy_template(other_value);
+}
+
+SocketCAN__bcm__frame_frames_template::~SocketCAN__bcm__frame_frames_template()
+{
+clean_up();
+}
+
+void SocketCAN__bcm__frame_frames_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case SocketCAN__bcm__frame_frames::ALT_can__frame:
+delete single_value.field_can__frame;
+break;
+case SocketCAN__bcm__frame_frames::ALT_canfd__frame:
+delete single_value.field_canfd__frame;
+default:
+break;
+}
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SocketCAN__bcm__frame_frames_template& SocketCAN__bcm__frame_frames_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SocketCAN__bcm__frame_frames_template& SocketCAN__bcm__frame_frames_template::operator=(const SocketCAN__bcm__frame_frames& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SocketCAN__bcm__frame_frames_template& SocketCAN__bcm__frame_frames_template::operator=(const OPTIONAL<SocketCAN__bcm__frame_frames>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__bcm__frame_frames&)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 @Bcm.SocketCAN_bcm_frame.frames.");
+}
+return *this;
+}
+
+SocketCAN__bcm__frame_frames_template& SocketCAN__bcm__frame_frames_template::operator=(const SocketCAN__bcm__frame_frames_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__bcm__frame_frames_template::match(const SocketCAN__bcm__frame_frames& 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:
+{
+SocketCAN__bcm__frame_frames::union_selection_type value_selection = other_value.get_selection();
+if (value_selection == SocketCAN__bcm__frame_frames::UNBOUND_VALUE) return FALSE;
+if (value_selection != single_value.union_selection) return FALSE;
+switch (value_selection) {
+case SocketCAN__bcm__frame_frames::ALT_can__frame:
+return single_value.field_can__frame->match(other_value.can__frame(), legacy);
+case SocketCAN__bcm__frame_frames::ALT_canfd__frame:
+return single_value.field_canfd__frame->match(other_value.canfd__frame(), legacy);
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @Bcm.SocketCAN_bcm_frame.frames.");
+}
+}
+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;
+default:
+TTCN_error ("Matching an uninitialized template of union type @Bcm.SocketCAN_bcm_frame.frames.");
+}
+return FALSE;
+}
+
+boolean SocketCAN__bcm__frame_frames_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+switch (single_value.union_selection) {
+case SocketCAN__bcm__frame_frames::ALT_can__frame:
+return single_value.field_can__frame->is_value();
+case SocketCAN__bcm__frame_frames::ALT_canfd__frame:
+return single_value.field_canfd__frame->is_value();
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @Bcm.SocketCAN_bcm_frame.frames.");
+}
+}
+
+SocketCAN__bcm__frame_frames SocketCAN__bcm__frame_frames_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 @Bcm.SocketCAN_bcm_frame.frames.");
+SocketCAN__bcm__frame_frames ret_val;
+switch (single_value.union_selection) {
+case SocketCAN__bcm__frame_frames::ALT_can__frame:
+ret_val.can__frame() = single_value.field_can__frame->valueof();
+break;
+case SocketCAN__bcm__frame_frames::ALT_canfd__frame:
+ret_val.canfd__frame() = single_value.field_canfd__frame->valueof();
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @Bcm.SocketCAN_bcm_frame.frames.");
+}
+return ret_val;
+}
+
+SocketCAN__bcm__frame_frames_template& SocketCAN__bcm__frame_frames_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @Bcm.SocketCAN_bcm_frame.frames.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @Bcm.SocketCAN_bcm_frame.frames.");
+return value_list.list_value[list_index];
+}
+void SocketCAN__bcm__frame_frames_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error ("Internal error: Setting an invalid list for a template of union type @Bcm.SocketCAN_bcm_frame.frames.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SocketCAN__bcm__frame_frames_template[list_length];
+}
+
+SocketCAN__bcm__frame_frames_can__frame_template& SocketCAN__bcm__frame_frames_template::can__frame()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != SocketCAN__bcm__frame_frames::ALT_can__frame) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_can__frame = new SocketCAN__bcm__frame_frames_can__frame_template(ANY_VALUE);
+else single_value.field_can__frame = new SocketCAN__bcm__frame_frames_can__frame_template;
+single_value.union_selection = SocketCAN__bcm__frame_frames::ALT_can__frame;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_can__frame;
+}
+
+const SocketCAN__bcm__frame_frames_can__frame_template& SocketCAN__bcm__frame_frames_template::can__frame() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field can_frame in a non-specific template of union type @Bcm.SocketCAN_bcm_frame.frames.");
+if (single_value.union_selection != SocketCAN__bcm__frame_frames::ALT_can__frame) TTCN_error("Accessing non-selected field can_frame in a template of union type @Bcm.SocketCAN_bcm_frame.frames.");
+return *single_value.field_can__frame;
+}
+
+SocketCAN__bcm__frame_frames_canfd__frame_template& SocketCAN__bcm__frame_frames_template::canfd__frame()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != SocketCAN__bcm__frame_frames::ALT_canfd__frame) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_canfd__frame = new SocketCAN__bcm__frame_frames_canfd__frame_template(ANY_VALUE);
+else single_value.field_canfd__frame = new SocketCAN__bcm__frame_frames_canfd__frame_template;
+single_value.union_selection = SocketCAN__bcm__frame_frames::ALT_canfd__frame;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_canfd__frame;
+}
+
+const SocketCAN__bcm__frame_frames_canfd__frame_template& SocketCAN__bcm__frame_frames_template::canfd__frame() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field canfd_frame in a non-specific template of union type @Bcm.SocketCAN_bcm_frame.frames.");
+if (single_value.union_selection != SocketCAN__bcm__frame_frames::ALT_canfd__frame) TTCN_error("Accessing non-selected field canfd_frame in a template of union type @Bcm.SocketCAN_bcm_frame.frames.");
+return *single_value.field_canfd__frame;
+}
+
+boolean SocketCAN__bcm__frame_frames_template::ischosen(SocketCAN__bcm__frame_frames::union_selection_type checked_selection) const
+{
+if (checked_selection == SocketCAN__bcm__frame_frames::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @Bcm.SocketCAN_bcm_frame.frames.");
+switch (template_selection) {
+case SPECIFIC_VALUE:
+if (single_value.union_selection == SocketCAN__bcm__frame_frames::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @Bcm.SocketCAN_bcm_frame.frames.");
+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 @Bcm.SocketCAN_bcm_frame.frames 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 SocketCAN__bcm__frame_frames_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case SocketCAN__bcm__frame_frames::ALT_can__frame:
+TTCN_Logger::log_event_str("{ can_frame := ");
+single_value.field_can__frame->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case SocketCAN__bcm__frame_frames::ALT_canfd__frame:
+TTCN_Logger::log_event_str("{ canfd_frame := ");
+single_value.field_canfd__frame->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 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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SocketCAN__bcm__frame_frames_template::log_match(const SocketCAN__bcm__frame_frames& 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()) {
+switch (single_value.union_selection) {
+case SocketCAN__bcm__frame_frames::ALT_can__frame:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".can_frame");
+single_value.field_can__frame->log_match(match_value.can__frame(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ can_frame := ");
+single_value.field_can__frame->log_match(match_value.can__frame(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case SocketCAN__bcm__frame_frames::ALT_canfd__frame:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".canfd_frame");
+single_value.field_canfd__frame->log_match(match_value.canfd__frame(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ canfd_frame := ");
+single_value.field_canfd__frame->log_match(match_value.canfd__frame(), 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 SocketCAN__bcm__frame_frames_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 SocketCAN__bcm__frame_frames::ALT_can__frame:
+single_value.field_can__frame->encode_text(text_buf);
+break;
+case SocketCAN__bcm__frame_frames::ALT_canfd__frame:
+single_value.field_canfd__frame->encode_text(text_buf);
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @Bcm.SocketCAN_bcm_frame.frames.");
+}
+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 @Bcm.SocketCAN_bcm_frame.frames.");
+}
+}
+
+void SocketCAN__bcm__frame_frames_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+{
+single_value.union_selection = SocketCAN__bcm__frame_frames::UNBOUND_VALUE;
+SocketCAN__bcm__frame_frames::union_selection_type new_selection = (SocketCAN__bcm__frame_frames::union_selection_type)text_buf.pull_int().get_val();
+switch (new_selection) {
+case SocketCAN__bcm__frame_frames::ALT_can__frame:
+single_value.field_can__frame = new SocketCAN__bcm__frame_frames_can__frame_template;
+single_value.field_can__frame->decode_text(text_buf);
+break;
+case SocketCAN__bcm__frame_frames::ALT_canfd__frame:
+single_value.field_canfd__frame = new SocketCAN__bcm__frame_frames_canfd__frame_template;
+single_value.field_canfd__frame->decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @Bcm.SocketCAN_bcm_frame.frames.");
+}
+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 SocketCAN__bcm__frame_frames_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 @Bcm.SocketCAN_bcm_frame.frames.");
+}
+}
+
+boolean SocketCAN__bcm__frame_frames_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SocketCAN__bcm__frame_frames_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 SocketCAN__bcm__frame_frames_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 `@Bcm.SocketCAN_bcm_frame.frames'");
+    }
+    if (strcmp("can_frame", param_field) == 0) {
+      can__frame().set_param(param);
+      return;
+    } else if (strcmp("canfd_frame", param_field) == 0) {
+      canfd__frame().set_param(param);
+      return;
+    } else param.error("Field `%s' not found in union template type `@Bcm.SocketCAN_bcm_frame.frames'", 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: {
+    SocketCAN__bcm__frame_frames_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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", "@Bcm.SocketCAN_bcm_frame.frames");
+    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, "can_frame")) {
+      can__frame().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "canfd_frame")) {
+      canfd__frame().set_param(*mp_last);
+      break;
+    }
+    mp_last->error("Field %s does not exist in type @Bcm.SocketCAN_bcm_frame.frames.", last_name);
+  } break;
+  default:
+    param.type_error("union template", "@Bcm.SocketCAN_bcm_frame.frames");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SocketCAN__bcm__frame_frames_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 SocketCAN__bcm__frame_frames::ALT_can__frame:
+single_value.field_can__frame->check_restriction(t_res, t_name ? t_name : "@Bcm.SocketCAN_bcm_frame.frames");
+return;
+case SocketCAN__bcm__frame_frames::ALT_canfd__frame:
+single_value.field_canfd__frame->check_restriction(t_res, t_name ? t_name : "@Bcm.SocketCAN_bcm_frame.frames");
+return;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @Bcm.SocketCAN_bcm_frame.frames.");
+}
+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 : "@Bcm.SocketCAN_bcm_frame.frames");
+}
+
+
+const Can::CAN__frame SocketCAN__bcm__frame_frames_can__frame::UNBOUND_ELEM;
+SocketCAN__bcm__frame_frames_can__frame::SocketCAN__bcm__frame_frames_can__frame()
+{
+val_ptr = NULL;
+}
+
+SocketCAN__bcm__frame_frames_can__frame::SocketCAN__bcm__frame_frames_can__frame(null_type)
+{
+val_ptr = new recordof_setof_struct;
+val_ptr->ref_count = 1;
+val_ptr->n_elements = 0;
+val_ptr->value_elements = NULL;
+}
+
+SocketCAN__bcm__frame_frames_can__frame::SocketCAN__bcm__frame_frames_can__frame(const SocketCAN__bcm__frame_frames_can__frame& other_value)
+{
+if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @Bcm.SocketCAN_bcm_frame.frames.can_frame.");
+val_ptr = other_value.val_ptr;
+val_ptr->ref_count++;
+}
+
+SocketCAN__bcm__frame_frames_can__frame::~SocketCAN__bcm__frame_frames_can__frame()
+{
+clean_up();
+if (val_ptr != NULL) val_ptr = NULL;
+}
+
+void SocketCAN__bcm__frame_frames_can__frame::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.");
+}
+}
+
+SocketCAN__bcm__frame_frames_can__frame& SocketCAN__bcm__frame_frames_can__frame::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;
+}
+
+SocketCAN__bcm__frame_frames_can__frame& SocketCAN__bcm__frame_frames_can__frame::operator=(const SocketCAN__bcm__frame_frames_can__frame& other_value)
+{
+if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @Bcm.SocketCAN_bcm_frame.frames.can_frame.");
+if (this != &other_value) {
+clean_up();
+val_ptr = other_value.val_ptr;
+val_ptr->ref_count++;
+}
+return *this;
+}
+
+boolean SocketCAN__bcm__frame_frames_can__frame::operator==(null_type) const
+{
+if (val_ptr == NULL)
+TTCN_error("The left operand of comparison is an unbound value of type @Bcm.SocketCAN_bcm_frame.frames.can_frame.");
+return val_ptr->n_elements == 0 ;
+}
+
+boolean SocketCAN__bcm__frame_frames_can__frame::operator==(const SocketCAN__bcm__frame_frames_can__frame& other_value) const
+{
+if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @Bcm.SocketCAN_bcm_frame.frames.can_frame.");
+if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @Bcm.SocketCAN_bcm_frame.frames.can_frame.");
+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;
+}
+
+Can::CAN__frame& SocketCAN__bcm__frame_frames_can__frame::operator[](int index_value)
+{
+if (index_value < 0) TTCN_error("Accessing an element of type @Bcm.SocketCAN_bcm_frame.frames.can_frame 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 = (Can::CAN__frame**)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 Can::CAN__frame(*(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 Can::CAN__frame;
+}
+return *val_ptr->value_elements[index_value];
+}
+
+Can::CAN__frame& SocketCAN__bcm__frame_frames_can__frame::operator[](const INTEGER& index_value)
+{
+index_value.must_bound("Using an unbound integer value for indexing a value of type @Bcm.SocketCAN_bcm_frame.frames.can_frame.");
+return (*this)[(int)index_value];
+}
+
+const Can::CAN__frame& SocketCAN__bcm__frame_frames_can__frame::operator[](int index_value) const
+{
+if (val_ptr == NULL)
+TTCN_error("Accessing an element in an unbound value of type @Bcm.SocketCAN_bcm_frame.frames.can_frame.");
+if (index_value < 0) TTCN_error("Accessing an element of type @Bcm.SocketCAN_bcm_frame.frames.can_frame using a negative index: %d.", index_value);
+if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @Bcm.SocketCAN_bcm_frame.frames.can_frame: 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 Can::CAN__frame& SocketCAN__bcm__frame_frames_can__frame::operator[](const INTEGER& index_value) const
+{
+index_value.must_bound("Using an unbound integer value for indexing a value of type @Bcm.SocketCAN_bcm_frame.frames.can_frame.");
+return (*this)[(int)index_value];
+}
+
+SocketCAN__bcm__frame_frames_can__frame SocketCAN__bcm__frame_frames_can__frame::operator<<=(int rotate_count) const
+{
+return *this >>= (-rotate_count);
+}
+
+SocketCAN__bcm__frame_frames_can__frame SocketCAN__bcm__frame_frames_can__frame::operator<<=(const INTEGER& rotate_count) const
+{
+rotate_count.must_bound("Unbound integer operand of rotate left operator.");
+return *this >>= (int)(-rotate_count);
+}
+
+SocketCAN__bcm__frame_frames_can__frame SocketCAN__bcm__frame_frames_can__frame::operator>>=(const INTEGER& rotate_count) const
+{
+rotate_count.must_bound("Unbound integer operand of rotate right operator.");
+return *this >>= (int)rotate_count;
+}
+
+SocketCAN__bcm__frame_frames_can__frame SocketCAN__bcm__frame_frames_can__frame::operator>>=(int rotate_count) const
+{
+if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @Bcm.SocketCAN_bcm_frame.frames.can_frame.");
+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;
+SocketCAN__bcm__frame_frames_can__frame 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 Can::CAN__frame(*val_ptr->value_elements[i]);
+}
+}
+return ret_val;
+}
+
+SocketCAN__bcm__frame_frames_can__frame SocketCAN__bcm__frame_frames_can__frame::operator+(const SocketCAN__bcm__frame_frames_can__frame& other_value) const
+{
+if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @Bcm.SocketCAN_bcm_frame.frames.can_frame concatenation.");
+if (val_ptr->n_elements == 0) return other_value;
+if (other_value.val_ptr->n_elements == 0) return *this;
+SocketCAN__bcm__frame_frames_can__frame 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 Can::CAN__frame(*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 Can::CAN__frame(*other_value.val_ptr->value_elements[i]);
+}
+}
+return ret_val;
+}
+
+SocketCAN__bcm__frame_frames_can__frame SocketCAN__bcm__frame_frames_can__frame::substr(int index, int returncount) const
+{
+if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @Bcm.SocketCAN_bcm_frame.frames.can_frame.");
+check_substr_arguments(val_ptr->n_elements, index, returncount, "@Bcm.SocketCAN_bcm_frame.frames.can_frame","element");
+SocketCAN__bcm__frame_frames_can__frame 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 Can::CAN__frame(*val_ptr->value_elements[i+index]);
+}
+}
+return ret_val;
+}
+
+SocketCAN__bcm__frame_frames_can__frame SocketCAN__bcm__frame_frames_can__frame::replace(int index, int len, const SocketCAN__bcm__frame_frames_can__frame& repl) const
+{
+if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @Bcm.SocketCAN_bcm_frame.frames.can_frame.");
+if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @Bcm.SocketCAN_bcm_frame.frames.can_frame.");
+check_replace_arguments(val_ptr->n_elements, index, len, "@Bcm.SocketCAN_bcm_frame.frames.can_frame","element");
+SocketCAN__bcm__frame_frames_can__frame 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 Can::CAN__frame(*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 Can::CAN__frame(*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 Can::CAN__frame(*val_ptr->value_elements[index+i+len]);
+}
+}
+return ret_val;
+}
+
+SocketCAN__bcm__frame_frames_can__frame SocketCAN__bcm__frame_frames_can__frame::replace(int index, int len, const SocketCAN__bcm__frame_frames_can__frame_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 SocketCAN__bcm__frame_frames_can__frame::set_size(int new_size)
+{
+if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @Bcm.SocketCAN_bcm_frame.frames.can_frame.");
+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 = (Can::CAN__frame**)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 Can::CAN__frame(*(val_ptr->value_elements[elem_count]));
+}
+}
+clean_up();
+val_ptr = new_val_ptr;
+}
+if (new_size > val_ptr->n_elements) {
+val_ptr->value_elements = (Can::CAN__frame**)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 @Bcm.SocketCAN_bcm_frame.frames.can_frame: %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 = (Can::CAN__frame**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size);
+val_ptr->n_elements = new_size;
+}
+}
+
+boolean SocketCAN__bcm__frame_frames_can__frame::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 SocketCAN__bcm__frame_frames_can__frame::size_of() const
+{
+if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @Bcm.SocketCAN_bcm_frame.frames.can_frame.");
+return val_ptr->n_elements;
+}
+
+int SocketCAN__bcm__frame_frames_can__frame::lengthof() const
+{
+if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @Bcm.SocketCAN_bcm_frame.frames.can_frame.");
+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 SocketCAN__bcm__frame_frames_can__frame::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 SocketCAN__bcm__frame_frames_can__frame::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", "@Bcm.SocketCAN_bcm_frame.frames.can_frame");
+    }
+    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", "@Bcm.SocketCAN_bcm_frame.frames.can_frame");
+    }
+    break;
+  default:
+    TTCN_error("Internal error: Unknown operation type.");
+  }
+}
+
+void SocketCAN__bcm__frame_frames_can__frame::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 SocketCAN__bcm__frame_frames_can__frame::encode_text(Text_Buf& text_buf) const
+{
+if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @Bcm.SocketCAN_bcm_frame.frames.can_frame.");
+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 SocketCAN__bcm__frame_frames_can__frame::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 @Bcm.SocketCAN_bcm_frame.frames.can_frame.");
+val_ptr->value_elements = (Can::CAN__frame**)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 Can::CAN__frame;
+val_ptr->value_elements[elem_count]->decode_text(text_buf);
+}
+}
+
+void SocketCAN__bcm__frame_frames_can__frame_template::copy_value(const SocketCAN__bcm__frame_frames_can__frame& other_value)
+{
+if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @Bcm.SocketCAN_bcm_frame.frames.can_frame with an unbound value.");
+single_value.n_elements = other_value.size_of();
+single_value.value_elements = (Can::CAN__frame_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 Can::CAN__frame_template(other_value[elem_count]);
+} else {
+single_value.value_elements[elem_count] = new Can::CAN__frame_template;
+}
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SocketCAN__bcm__frame_frames_can__frame_template::copy_template(const SocketCAN__bcm__frame_frames_can__frame_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 = (Can::CAN__frame_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 Can::CAN__frame_template(*other_value.single_value.value_elements[elem_count]);
+} else {
+single_value.value_elements[elem_count] = new Can::CAN__frame_template;
+}
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SocketCAN__bcm__frame_frames_can__frame_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @Bcm.SocketCAN_bcm_frame.frames.can_frame.");
+break;
+}
+set_selection(other_value);
+}
+
+boolean SocketCAN__bcm__frame_frames_can__frame_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 SocketCAN__bcm__frame_frames_can__frame_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const SocketCAN__bcm__frame_frames_can__frame*)value_ptr)[value_index], legacy);
+else return ((const SocketCAN__bcm__frame_frames_can__frame_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit();
+}
+
+SocketCAN__bcm__frame_frames_can__frame_template::SocketCAN__bcm__frame_frames_can__frame_template()
+{
+}
+
+SocketCAN__bcm__frame_frames_can__frame_template::SocketCAN__bcm__frame_frames_can__frame_template(template_sel other_value)
+ : Record_Of_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SocketCAN__bcm__frame_frames_can__frame_template::SocketCAN__bcm__frame_frames_can__frame_template(null_type)
+ : Record_Of_Template(SPECIFIC_VALUE)
+{
+single_value.n_elements = 0;
+single_value.value_elements = NULL;
+}
+
+SocketCAN__bcm__frame_frames_can__frame_template::SocketCAN__bcm__frame_frames_can__frame_template(const SocketCAN__bcm__frame_frames_can__frame& other_value)
+{
+copy_value(other_value);
+}
+
+SocketCAN__bcm__frame_frames_can__frame_template::SocketCAN__bcm__frame_frames_can__frame_template(const OPTIONAL<SocketCAN__bcm__frame_frames_can__frame>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__bcm__frame_frames_can__frame&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @Bcm.SocketCAN_bcm_frame.frames.can_frame from an unbound optional field.");
+}
+}
+
+SocketCAN__bcm__frame_frames_can__frame_template::SocketCAN__bcm__frame_frames_can__frame_template(const SocketCAN__bcm__frame_frames_can__frame_template& other_value)
+ : Record_Of_Template()
+{
+copy_template(other_value);
+}
+
+SocketCAN__bcm__frame_frames_can__frame_template::~SocketCAN__bcm__frame_frames_can__frame_template()
+{
+clean_up();
+}
+
+void SocketCAN__bcm__frame_frames_can__frame_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:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SocketCAN__bcm__frame_frames_can__frame_template& SocketCAN__bcm__frame_frames_can__frame_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SocketCAN__bcm__frame_frames_can__frame_template& SocketCAN__bcm__frame_frames_can__frame_template::operator=(null_type)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value.n_elements = 0;
+single_value.value_elements = NULL;
+return *this;
+}
+
+SocketCAN__bcm__frame_frames_can__frame_template& SocketCAN__bcm__frame_frames_can__frame_template::operator=(const SocketCAN__bcm__frame_frames_can__frame& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SocketCAN__bcm__frame_frames_can__frame_template& SocketCAN__bcm__frame_frames_can__frame_template::operator=(const OPTIONAL<SocketCAN__bcm__frame_frames_can__frame>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__bcm__frame_frames_can__frame&)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 @Bcm.SocketCAN_bcm_frame.frames.can_frame.");
+}
+return *this;
+}
+
+SocketCAN__bcm__frame_frames_can__frame_template& SocketCAN__bcm__frame_frames_can__frame_template::operator=(const SocketCAN__bcm__frame_frames_can__frame_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+Can::CAN__frame_template& SocketCAN__bcm__frame_frames_can__frame_template::operator[](int index_value)
+{
+if (index_value < 0) TTCN_error("Accessing an element of a template for type @Bcm.SocketCAN_bcm_frame.frames.can_frame 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 @Bcm.SocketCAN_bcm_frame.frames.can_frame.");
+    break;
+}
+return *single_value.value_elements[index_value];
+}
+
+Can::CAN__frame_template& SocketCAN__bcm__frame_frames_can__frame_template::operator[](const INTEGER& index_value)
+{
+index_value.must_bound("Using an unbound integer value for indexing a template of type @Bcm.SocketCAN_bcm_frame.frames.can_frame.");
+return (*this)[(int)index_value];
+}
+
+const Can::CAN__frame_template& SocketCAN__bcm__frame_frames_can__frame_template::operator[](int index_value) const
+{
+if (index_value < 0) TTCN_error("Accessing an element of a template for type @Bcm.SocketCAN_bcm_frame.frames.can_frame using a negative index: %d.", index_value);
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @Bcm.SocketCAN_bcm_frame.frames.can_frame.");
+if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @Bcm.SocketCAN_bcm_frame.frames.can_frame: 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 Can::CAN__frame_template& SocketCAN__bcm__frame_frames_can__frame_template::operator[](const INTEGER& index_value) const
+{
+index_value.must_bound("Using an unbound integer value for indexing a template of type @Bcm.SocketCAN_bcm_frame.frames.can_frame.");
+return (*this)[(int)index_value];
+}
+
+void SocketCAN__bcm__frame_frames_can__frame_template::set_size(int new_size)
+{
+if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @Bcm.SocketCAN_bcm_frame.frames.can_frame.");
+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 = (Can::CAN__frame_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 Can::CAN__frame_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 Can::CAN__frame_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 = (Can::CAN__frame_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size);
+single_value.n_elements = new_size;
+}
+}
+
+int SocketCAN__bcm__frame_frames_can__frame_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 SocketCAN__bcm__frame_frames_can__frame_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 @Bcm.SocketCAN_bcm_frame.frames.can_frame 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 @Bcm.SocketCAN_bcm_frame.frames.can_frame 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 @Bcm.SocketCAN_bcm_frame.frames.can_frame 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 @Bcm.SocketCAN_bcm_frame.frames.can_frame 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 @Bcm.SocketCAN_bcm_frame.frames.can_frame 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 @Bcm.SocketCAN_bcm_frame.frames.can_frame containing complemented list.", op_name);
+default:
+  TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @Bcm.SocketCAN_bcm_frame.frames.can_frame.", op_name);
+}
+return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @Bcm.SocketCAN_bcm_frame.frames.can_frame");
+}
+
+boolean SocketCAN__bcm__frame_frames_can__frame_template::match(const SocketCAN__bcm__frame_frames_can__frame& 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;
+default:
+TTCN_error("Matching with an uninitialized/unsupported template of type @Bcm.SocketCAN_bcm_frame.frames.can_frame.");
+}
+return FALSE;
+}
+
+boolean SocketCAN__bcm__frame_frames_can__frame_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;
+}
+
+SocketCAN__bcm__frame_frames_can__frame SocketCAN__bcm__frame_frames_can__frame_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 @Bcm.SocketCAN_bcm_frame.frames.can_frame.");
+SocketCAN__bcm__frame_frames_can__frame 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;
+}
+
+SocketCAN__bcm__frame_frames_can__frame SocketCAN__bcm__frame_frames_can__frame_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);
+}
+
+SocketCAN__bcm__frame_frames_can__frame SocketCAN__bcm__frame_frames_can__frame_template::replace(int index, int len, const SocketCAN__bcm__frame_frames_can__frame_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());
+}
+
+SocketCAN__bcm__frame_frames_can__frame SocketCAN__bcm__frame_frames_can__frame_template::replace(int index, int len, const SocketCAN__bcm__frame_frames_can__frame& 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 SocketCAN__bcm__frame_frames_can__frame_template::set_type(template_sel template_type, unsigned int list_length)
+{
+clean_up();
+switch (template_type) {
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = list_length;
+value_list.list_value = new SocketCAN__bcm__frame_frames_can__frame_template[list_length];
+break;
+default:
+TTCN_error("Internal error: Setting an invalid type for a template of type @Bcm.SocketCAN_bcm_frame.frames.can_frame.");
+}
+set_selection(template_type);
+}
+
+SocketCAN__bcm__frame_frames_can__frame_template& SocketCAN__bcm__frame_frames_can__frame_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of type @Bcm.SocketCAN_bcm_frame.frames.can_frame.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @Bcm.SocketCAN_bcm_frame.frames.can_frame.");
+return value_list.list_value[list_index];
+}
+
+void SocketCAN__bcm__frame_frames_can__frame_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 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;
+default:
+log_generic();
+}
+log_restricted();
+log_ifpresent();
+}
+
+void SocketCAN__bcm__frame_frames_can__frame_template::log_match(const SocketCAN__bcm__frame_frames_can__frame& 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 SocketCAN__bcm__frame_frames_can__frame_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 @Bcm.SocketCAN_bcm_frame.frames.can_frame.");
+}
+}
+
+void SocketCAN__bcm__frame_frames_can__frame_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 @Bcm.SocketCAN_bcm_frame.frames.can_frame.");
+single_value.value_elements = (Can::CAN__frame_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 Can::CAN__frame_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 SocketCAN__bcm__frame_frames_can__frame_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 @Bcm.SocketCAN_bcm_frame.frames.can_frame.");
+}
+}
+
+boolean SocketCAN__bcm__frame_frames_can__frame_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SocketCAN__bcm__frame_frames_can__frame_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 SocketCAN__bcm__frame_frames_can__frame_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: {
+    SocketCAN__bcm__frame_frames_can__frame_template temp;
+    temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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;
+  default:
+    param.type_error("record of template", "@Bcm.SocketCAN_bcm_frame.frames.can_frame");
+  }
+  is_ifpresent = param.get_ifpresent();
+  set_length_range(param);
+}
+
+void SocketCAN__bcm__frame_frames_can__frame_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 : "@Bcm.SocketCAN_bcm_frame.frames.can_frame");
+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 : "@Bcm.SocketCAN_bcm_frame.frames.can_frame");
+}
+
+boolean SocketCAN__bcm__frame_frames_can__frame_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);
+}
+}
+
+const Can::CANFD__frame SocketCAN__bcm__frame_frames_canfd__frame::UNBOUND_ELEM;
+SocketCAN__bcm__frame_frames_canfd__frame::SocketCAN__bcm__frame_frames_canfd__frame()
+{
+val_ptr = NULL;
+}
+
+SocketCAN__bcm__frame_frames_canfd__frame::SocketCAN__bcm__frame_frames_canfd__frame(null_type)
+{
+val_ptr = new recordof_setof_struct;
+val_ptr->ref_count = 1;
+val_ptr->n_elements = 0;
+val_ptr->value_elements = NULL;
+}
+
+SocketCAN__bcm__frame_frames_canfd__frame::SocketCAN__bcm__frame_frames_canfd__frame(const SocketCAN__bcm__frame_frames_canfd__frame& other_value)
+{
+if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @Bcm.SocketCAN_bcm_frame.frames.canfd_frame.");
+val_ptr = other_value.val_ptr;
+val_ptr->ref_count++;
+}
+
+SocketCAN__bcm__frame_frames_canfd__frame::~SocketCAN__bcm__frame_frames_canfd__frame()
+{
+clean_up();
+if (val_ptr != NULL) val_ptr = NULL;
+}
+
+void SocketCAN__bcm__frame_frames_canfd__frame::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.");
+}
+}
+
+SocketCAN__bcm__frame_frames_canfd__frame& SocketCAN__bcm__frame_frames_canfd__frame::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;
+}
+
+SocketCAN__bcm__frame_frames_canfd__frame& SocketCAN__bcm__frame_frames_canfd__frame::operator=(const SocketCAN__bcm__frame_frames_canfd__frame& other_value)
+{
+if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @Bcm.SocketCAN_bcm_frame.frames.canfd_frame.");
+if (this != &other_value) {
+clean_up();
+val_ptr = other_value.val_ptr;
+val_ptr->ref_count++;
+}
+return *this;
+}
+
+boolean SocketCAN__bcm__frame_frames_canfd__frame::operator==(null_type) const
+{
+if (val_ptr == NULL)
+TTCN_error("The left operand of comparison is an unbound value of type @Bcm.SocketCAN_bcm_frame.frames.canfd_frame.");
+return val_ptr->n_elements == 0 ;
+}
+
+boolean SocketCAN__bcm__frame_frames_canfd__frame::operator==(const SocketCAN__bcm__frame_frames_canfd__frame& other_value) const
+{
+if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @Bcm.SocketCAN_bcm_frame.frames.canfd_frame.");
+if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @Bcm.SocketCAN_bcm_frame.frames.canfd_frame.");
+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;
+}
+
+Can::CANFD__frame& SocketCAN__bcm__frame_frames_canfd__frame::operator[](int index_value)
+{
+if (index_value < 0) TTCN_error("Accessing an element of type @Bcm.SocketCAN_bcm_frame.frames.canfd_frame 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 = (Can::CANFD__frame**)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 Can::CANFD__frame(*(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 Can::CANFD__frame;
+}
+return *val_ptr->value_elements[index_value];
+}
+
+Can::CANFD__frame& SocketCAN__bcm__frame_frames_canfd__frame::operator[](const INTEGER& index_value)
+{
+index_value.must_bound("Using an unbound integer value for indexing a value of type @Bcm.SocketCAN_bcm_frame.frames.canfd_frame.");
+return (*this)[(int)index_value];
+}
+
+const Can::CANFD__frame& SocketCAN__bcm__frame_frames_canfd__frame::operator[](int index_value) const
+{
+if (val_ptr == NULL)
+TTCN_error("Accessing an element in an unbound value of type @Bcm.SocketCAN_bcm_frame.frames.canfd_frame.");
+if (index_value < 0) TTCN_error("Accessing an element of type @Bcm.SocketCAN_bcm_frame.frames.canfd_frame using a negative index: %d.", index_value);
+if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @Bcm.SocketCAN_bcm_frame.frames.canfd_frame: 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 Can::CANFD__frame& SocketCAN__bcm__frame_frames_canfd__frame::operator[](const INTEGER& index_value) const
+{
+index_value.must_bound("Using an unbound integer value for indexing a value of type @Bcm.SocketCAN_bcm_frame.frames.canfd_frame.");
+return (*this)[(int)index_value];
+}
+
+SocketCAN__bcm__frame_frames_canfd__frame SocketCAN__bcm__frame_frames_canfd__frame::operator<<=(int rotate_count) const
+{
+return *this >>= (-rotate_count);
+}
+
+SocketCAN__bcm__frame_frames_canfd__frame SocketCAN__bcm__frame_frames_canfd__frame::operator<<=(const INTEGER& rotate_count) const
+{
+rotate_count.must_bound("Unbound integer operand of rotate left operator.");
+return *this >>= (int)(-rotate_count);
+}
+
+SocketCAN__bcm__frame_frames_canfd__frame SocketCAN__bcm__frame_frames_canfd__frame::operator>>=(const INTEGER& rotate_count) const
+{
+rotate_count.must_bound("Unbound integer operand of rotate right operator.");
+return *this >>= (int)rotate_count;
+}
+
+SocketCAN__bcm__frame_frames_canfd__frame SocketCAN__bcm__frame_frames_canfd__frame::operator>>=(int rotate_count) const
+{
+if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @Bcm.SocketCAN_bcm_frame.frames.canfd_frame.");
+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;
+SocketCAN__bcm__frame_frames_canfd__frame 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 Can::CANFD__frame(*val_ptr->value_elements[i]);
+}
+}
+return ret_val;
+}
+
+SocketCAN__bcm__frame_frames_canfd__frame SocketCAN__bcm__frame_frames_canfd__frame::operator+(const SocketCAN__bcm__frame_frames_canfd__frame& other_value) const
+{
+if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @Bcm.SocketCAN_bcm_frame.frames.canfd_frame concatenation.");
+if (val_ptr->n_elements == 0) return other_value;
+if (other_value.val_ptr->n_elements == 0) return *this;
+SocketCAN__bcm__frame_frames_canfd__frame 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 Can::CANFD__frame(*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 Can::CANFD__frame(*other_value.val_ptr->value_elements[i]);
+}
+}
+return ret_val;
+}
+
+SocketCAN__bcm__frame_frames_canfd__frame SocketCAN__bcm__frame_frames_canfd__frame::substr(int index, int returncount) const
+{
+if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @Bcm.SocketCAN_bcm_frame.frames.canfd_frame.");
+check_substr_arguments(val_ptr->n_elements, index, returncount, "@Bcm.SocketCAN_bcm_frame.frames.canfd_frame","element");
+SocketCAN__bcm__frame_frames_canfd__frame 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 Can::CANFD__frame(*val_ptr->value_elements[i+index]);
+}
+}
+return ret_val;
+}
+
+SocketCAN__bcm__frame_frames_canfd__frame SocketCAN__bcm__frame_frames_canfd__frame::replace(int index, int len, const SocketCAN__bcm__frame_frames_canfd__frame& repl) const
+{
+if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @Bcm.SocketCAN_bcm_frame.frames.canfd_frame.");
+if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @Bcm.SocketCAN_bcm_frame.frames.canfd_frame.");
+check_replace_arguments(val_ptr->n_elements, index, len, "@Bcm.SocketCAN_bcm_frame.frames.canfd_frame","element");
+SocketCAN__bcm__frame_frames_canfd__frame 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 Can::CANFD__frame(*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 Can::CANFD__frame(*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 Can::CANFD__frame(*val_ptr->value_elements[index+i+len]);
+}
+}
+return ret_val;
+}
+
+SocketCAN__bcm__frame_frames_canfd__frame SocketCAN__bcm__frame_frames_canfd__frame::replace(int index, int len, const SocketCAN__bcm__frame_frames_canfd__frame_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 SocketCAN__bcm__frame_frames_canfd__frame::set_size(int new_size)
+{
+if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @Bcm.SocketCAN_bcm_frame.frames.canfd_frame.");
+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 = (Can::CANFD__frame**)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 Can::CANFD__frame(*(val_ptr->value_elements[elem_count]));
+}
+}
+clean_up();
+val_ptr = new_val_ptr;
+}
+if (new_size > val_ptr->n_elements) {
+val_ptr->value_elements = (Can::CANFD__frame**)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 @Bcm.SocketCAN_bcm_frame.frames.canfd_frame: %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 = (Can::CANFD__frame**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size);
+val_ptr->n_elements = new_size;
+}
+}
+
+boolean SocketCAN__bcm__frame_frames_canfd__frame::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 SocketCAN__bcm__frame_frames_canfd__frame::size_of() const
+{
+if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @Bcm.SocketCAN_bcm_frame.frames.canfd_frame.");
+return val_ptr->n_elements;
+}
+
+int SocketCAN__bcm__frame_frames_canfd__frame::lengthof() const
+{
+if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @Bcm.SocketCAN_bcm_frame.frames.canfd_frame.");
+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 SocketCAN__bcm__frame_frames_canfd__frame::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 SocketCAN__bcm__frame_frames_canfd__frame::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", "@Bcm.SocketCAN_bcm_frame.frames.canfd_frame");
+    }
+    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", "@Bcm.SocketCAN_bcm_frame.frames.canfd_frame");
+    }
+    break;
+  default:
+    TTCN_error("Internal error: Unknown operation type.");
+  }
+}
+
+void SocketCAN__bcm__frame_frames_canfd__frame::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 SocketCAN__bcm__frame_frames_canfd__frame::encode_text(Text_Buf& text_buf) const
+{
+if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @Bcm.SocketCAN_bcm_frame.frames.canfd_frame.");
+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 SocketCAN__bcm__frame_frames_canfd__frame::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 @Bcm.SocketCAN_bcm_frame.frames.canfd_frame.");
+val_ptr->value_elements = (Can::CANFD__frame**)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 Can::CANFD__frame;
+val_ptr->value_elements[elem_count]->decode_text(text_buf);
+}
+}
+
+void SocketCAN__bcm__frame_frames_canfd__frame_template::copy_value(const SocketCAN__bcm__frame_frames_canfd__frame& other_value)
+{
+if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @Bcm.SocketCAN_bcm_frame.frames.canfd_frame with an unbound value.");
+single_value.n_elements = other_value.size_of();
+single_value.value_elements = (Can::CANFD__frame_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 Can::CANFD__frame_template(other_value[elem_count]);
+} else {
+single_value.value_elements[elem_count] = new Can::CANFD__frame_template;
+}
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SocketCAN__bcm__frame_frames_canfd__frame_template::copy_template(const SocketCAN__bcm__frame_frames_canfd__frame_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 = (Can::CANFD__frame_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 Can::CANFD__frame_template(*other_value.single_value.value_elements[elem_count]);
+} else {
+single_value.value_elements[elem_count] = new Can::CANFD__frame_template;
+}
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SocketCAN__bcm__frame_frames_canfd__frame_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @Bcm.SocketCAN_bcm_frame.frames.canfd_frame.");
+break;
+}
+set_selection(other_value);
+}
+
+boolean SocketCAN__bcm__frame_frames_canfd__frame_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 SocketCAN__bcm__frame_frames_canfd__frame_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const SocketCAN__bcm__frame_frames_canfd__frame*)value_ptr)[value_index], legacy);
+else return ((const SocketCAN__bcm__frame_frames_canfd__frame_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit();
+}
+
+SocketCAN__bcm__frame_frames_canfd__frame_template::SocketCAN__bcm__frame_frames_canfd__frame_template()
+{
+}
+
+SocketCAN__bcm__frame_frames_canfd__frame_template::SocketCAN__bcm__frame_frames_canfd__frame_template(template_sel other_value)
+ : Record_Of_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SocketCAN__bcm__frame_frames_canfd__frame_template::SocketCAN__bcm__frame_frames_canfd__frame_template(null_type)
+ : Record_Of_Template(SPECIFIC_VALUE)
+{
+single_value.n_elements = 0;
+single_value.value_elements = NULL;
+}
+
+SocketCAN__bcm__frame_frames_canfd__frame_template::SocketCAN__bcm__frame_frames_canfd__frame_template(const SocketCAN__bcm__frame_frames_canfd__frame& other_value)
+{
+copy_value(other_value);
+}
+
+SocketCAN__bcm__frame_frames_canfd__frame_template::SocketCAN__bcm__frame_frames_canfd__frame_template(const OPTIONAL<SocketCAN__bcm__frame_frames_canfd__frame>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__bcm__frame_frames_canfd__frame&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @Bcm.SocketCAN_bcm_frame.frames.canfd_frame from an unbound optional field.");
+}
+}
+
+SocketCAN__bcm__frame_frames_canfd__frame_template::SocketCAN__bcm__frame_frames_canfd__frame_template(const SocketCAN__bcm__frame_frames_canfd__frame_template& other_value)
+ : Record_Of_Template()
+{
+copy_template(other_value);
+}
+
+SocketCAN__bcm__frame_frames_canfd__frame_template::~SocketCAN__bcm__frame_frames_canfd__frame_template()
+{
+clean_up();
+}
+
+void SocketCAN__bcm__frame_frames_canfd__frame_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:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SocketCAN__bcm__frame_frames_canfd__frame_template& SocketCAN__bcm__frame_frames_canfd__frame_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SocketCAN__bcm__frame_frames_canfd__frame_template& SocketCAN__bcm__frame_frames_canfd__frame_template::operator=(null_type)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value.n_elements = 0;
+single_value.value_elements = NULL;
+return *this;
+}
+
+SocketCAN__bcm__frame_frames_canfd__frame_template& SocketCAN__bcm__frame_frames_canfd__frame_template::operator=(const SocketCAN__bcm__frame_frames_canfd__frame& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SocketCAN__bcm__frame_frames_canfd__frame_template& SocketCAN__bcm__frame_frames_canfd__frame_template::operator=(const OPTIONAL<SocketCAN__bcm__frame_frames_canfd__frame>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__bcm__frame_frames_canfd__frame&)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 @Bcm.SocketCAN_bcm_frame.frames.canfd_frame.");
+}
+return *this;
+}
+
+SocketCAN__bcm__frame_frames_canfd__frame_template& SocketCAN__bcm__frame_frames_canfd__frame_template::operator=(const SocketCAN__bcm__frame_frames_canfd__frame_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+Can::CANFD__frame_template& SocketCAN__bcm__frame_frames_canfd__frame_template::operator[](int index_value)
+{
+if (index_value < 0) TTCN_error("Accessing an element of a template for type @Bcm.SocketCAN_bcm_frame.frames.canfd_frame 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 @Bcm.SocketCAN_bcm_frame.frames.canfd_frame.");
+    break;
+}
+return *single_value.value_elements[index_value];
+}
+
+Can::CANFD__frame_template& SocketCAN__bcm__frame_frames_canfd__frame_template::operator[](const INTEGER& index_value)
+{
+index_value.must_bound("Using an unbound integer value for indexing a template of type @Bcm.SocketCAN_bcm_frame.frames.canfd_frame.");
+return (*this)[(int)index_value];
+}
+
+const Can::CANFD__frame_template& SocketCAN__bcm__frame_frames_canfd__frame_template::operator[](int index_value) const
+{
+if (index_value < 0) TTCN_error("Accessing an element of a template for type @Bcm.SocketCAN_bcm_frame.frames.canfd_frame using a negative index: %d.", index_value);
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @Bcm.SocketCAN_bcm_frame.frames.canfd_frame.");
+if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @Bcm.SocketCAN_bcm_frame.frames.canfd_frame: 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 Can::CANFD__frame_template& SocketCAN__bcm__frame_frames_canfd__frame_template::operator[](const INTEGER& index_value) const
+{
+index_value.must_bound("Using an unbound integer value for indexing a template of type @Bcm.SocketCAN_bcm_frame.frames.canfd_frame.");
+return (*this)[(int)index_value];
+}
+
+void SocketCAN__bcm__frame_frames_canfd__frame_template::set_size(int new_size)
+{
+if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @Bcm.SocketCAN_bcm_frame.frames.canfd_frame.");
+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 = (Can::CANFD__frame_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 Can::CANFD__frame_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 Can::CANFD__frame_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 = (Can::CANFD__frame_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size);
+single_value.n_elements = new_size;
+}
+}
+
+int SocketCAN__bcm__frame_frames_canfd__frame_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 SocketCAN__bcm__frame_frames_canfd__frame_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 @Bcm.SocketCAN_bcm_frame.frames.canfd_frame 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 @Bcm.SocketCAN_bcm_frame.frames.canfd_frame 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 @Bcm.SocketCAN_bcm_frame.frames.canfd_frame 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 @Bcm.SocketCAN_bcm_frame.frames.canfd_frame 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 @Bcm.SocketCAN_bcm_frame.frames.canfd_frame 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 @Bcm.SocketCAN_bcm_frame.frames.canfd_frame containing complemented list.", op_name);
+default:
+  TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @Bcm.SocketCAN_bcm_frame.frames.canfd_frame.", op_name);
+}
+return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @Bcm.SocketCAN_bcm_frame.frames.canfd_frame");
+}
+
+boolean SocketCAN__bcm__frame_frames_canfd__frame_template::match(const SocketCAN__bcm__frame_frames_canfd__frame& 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;
+default:
+TTCN_error("Matching with an uninitialized/unsupported template of type @Bcm.SocketCAN_bcm_frame.frames.canfd_frame.");
+}
+return FALSE;
+}
+
+boolean SocketCAN__bcm__frame_frames_canfd__frame_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;
+}
+
+SocketCAN__bcm__frame_frames_canfd__frame SocketCAN__bcm__frame_frames_canfd__frame_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 @Bcm.SocketCAN_bcm_frame.frames.canfd_frame.");
+SocketCAN__bcm__frame_frames_canfd__frame 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;
+}
+
+SocketCAN__bcm__frame_frames_canfd__frame SocketCAN__bcm__frame_frames_canfd__frame_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);
+}
+
+SocketCAN__bcm__frame_frames_canfd__frame SocketCAN__bcm__frame_frames_canfd__frame_template::replace(int index, int len, const SocketCAN__bcm__frame_frames_canfd__frame_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());
+}
+
+SocketCAN__bcm__frame_frames_canfd__frame SocketCAN__bcm__frame_frames_canfd__frame_template::replace(int index, int len, const SocketCAN__bcm__frame_frames_canfd__frame& 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 SocketCAN__bcm__frame_frames_canfd__frame_template::set_type(template_sel template_type, unsigned int list_length)
+{
+clean_up();
+switch (template_type) {
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = list_length;
+value_list.list_value = new SocketCAN__bcm__frame_frames_canfd__frame_template[list_length];
+break;
+default:
+TTCN_error("Internal error: Setting an invalid type for a template of type @Bcm.SocketCAN_bcm_frame.frames.canfd_frame.");
+}
+set_selection(template_type);
+}
+
+SocketCAN__bcm__frame_frames_canfd__frame_template& SocketCAN__bcm__frame_frames_canfd__frame_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of type @Bcm.SocketCAN_bcm_frame.frames.canfd_frame.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @Bcm.SocketCAN_bcm_frame.frames.canfd_frame.");
+return value_list.list_value[list_index];
+}
+
+void SocketCAN__bcm__frame_frames_canfd__frame_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 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;
+default:
+log_generic();
+}
+log_restricted();
+log_ifpresent();
+}
+
+void SocketCAN__bcm__frame_frames_canfd__frame_template::log_match(const SocketCAN__bcm__frame_frames_canfd__frame& 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 SocketCAN__bcm__frame_frames_canfd__frame_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 @Bcm.SocketCAN_bcm_frame.frames.canfd_frame.");
+}
+}
+
+void SocketCAN__bcm__frame_frames_canfd__frame_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 @Bcm.SocketCAN_bcm_frame.frames.canfd_frame.");
+single_value.value_elements = (Can::CANFD__frame_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 Can::CANFD__frame_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 SocketCAN__bcm__frame_frames_canfd__frame_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 @Bcm.SocketCAN_bcm_frame.frames.canfd_frame.");
+}
+}
+
+boolean SocketCAN__bcm__frame_frames_canfd__frame_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SocketCAN__bcm__frame_frames_canfd__frame_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 SocketCAN__bcm__frame_frames_canfd__frame_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: {
+    SocketCAN__bcm__frame_frames_canfd__frame_template temp;
+    temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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;
+  default:
+    param.type_error("record of template", "@Bcm.SocketCAN_bcm_frame.frames.canfd_frame");
+  }
+  is_ifpresent = param.get_ifpresent();
+  set_length_range(param);
+}
+
+void SocketCAN__bcm__frame_frames_canfd__frame_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 : "@Bcm.SocketCAN_bcm_frame.frames.canfd_frame");
+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 : "@Bcm.SocketCAN_bcm_frame.frames.canfd_frame");
+}
+
+boolean SocketCAN__bcm__frame_frames_canfd__frame_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);
+}
+}
+SocketCAN__bcm__frame::SocketCAN__bcm__frame()
+{
+}
+
+SocketCAN__bcm__frame::SocketCAN__bcm__frame(const OCTETSTRING& par_opcode,
+    const BITSTRING& par_flags,
+    const INTEGER& par_count,
+    const Bcm__timeval& par_ival1,
+    const Bcm__timeval& par_ival2,
+    const OCTETSTRING& par_can__id,
+    const SocketCAN__bcm__frame_frames& par_frames)
+  :   field_opcode(par_opcode),
+  field_flags(par_flags),
+  field_count(par_count),
+  field_ival1(par_ival1),
+  field_ival2(par_ival2),
+  field_can__id(par_can__id),
+  field_frames(par_frames)
+{
+}
+
+SocketCAN__bcm__frame::SocketCAN__bcm__frame(const SocketCAN__bcm__frame& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @Bcm.SocketCAN_bcm_frame.");
+if (other_value.opcode().is_bound()) field_opcode = other_value.opcode();
+else field_opcode.clean_up();
+if (other_value.flags().is_bound()) field_flags = other_value.flags();
+else field_flags.clean_up();
+if (other_value.count().is_bound()) field_count = other_value.count();
+else field_count.clean_up();
+if (other_value.ival1().is_bound()) field_ival1 = other_value.ival1();
+else field_ival1.clean_up();
+if (other_value.ival2().is_bound()) field_ival2 = other_value.ival2();
+else field_ival2.clean_up();
+if (other_value.can__id().is_bound()) field_can__id = other_value.can__id();
+else field_can__id.clean_up();
+if (other_value.frames().is_bound()) field_frames = other_value.frames();
+else field_frames.clean_up();
+}
+
+void SocketCAN__bcm__frame::clean_up()
+{
+field_opcode.clean_up();
+field_flags.clean_up();
+field_count.clean_up();
+field_ival1.clean_up();
+field_ival2.clean_up();
+field_can__id.clean_up();
+field_frames.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SocketCAN__bcm__frame::get_descriptor() const { return &SocketCAN__bcm__frame_descr_; }
+SocketCAN__bcm__frame& SocketCAN__bcm__frame::operator=(const SocketCAN__bcm__frame& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @Bcm.SocketCAN_bcm_frame.");
+  if (other_value.opcode().is_bound()) field_opcode = other_value.opcode();
+  else field_opcode.clean_up();
+  if (other_value.flags().is_bound()) field_flags = other_value.flags();
+  else field_flags.clean_up();
+  if (other_value.count().is_bound()) field_count = other_value.count();
+  else field_count.clean_up();
+  if (other_value.ival1().is_bound()) field_ival1 = other_value.ival1();
+  else field_ival1.clean_up();
+  if (other_value.ival2().is_bound()) field_ival2 = other_value.ival2();
+  else field_ival2.clean_up();
+  if (other_value.can__id().is_bound()) field_can__id = other_value.can__id();
+  else field_can__id.clean_up();
+  if (other_value.frames().is_bound()) field_frames = other_value.frames();
+  else field_frames.clean_up();
+}
+return *this;
+}
+
+boolean SocketCAN__bcm__frame::operator==(const SocketCAN__bcm__frame& other_value) const
+{
+return field_opcode==other_value.field_opcode
+  && field_flags==other_value.field_flags
+  && field_count==other_value.field_count
+  && field_ival1==other_value.field_ival1
+  && field_ival2==other_value.field_ival2
+  && field_can__id==other_value.field_can__id
+  && field_frames==other_value.field_frames;
+}
+
+boolean SocketCAN__bcm__frame::is_bound() const
+{
+return (field_opcode.is_bound())
+  || (field_flags.is_bound())
+  || (field_count.is_bound())
+  || (field_ival1.is_bound())
+  || (field_ival2.is_bound())
+  || (field_can__id.is_bound())
+  || (field_frames.is_bound());
+}
+boolean SocketCAN__bcm__frame::is_value() const
+{
+return field_opcode.is_value()
+  && field_flags.is_value()
+  && field_count.is_value()
+  && field_ival1.is_value()
+  && field_ival2.is_value()
+  && field_can__id.is_value()
+  && field_frames.is_value();
+}
+void SocketCAN__bcm__frame::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ opcode := ");
+field_opcode.log();
+TTCN_Logger::log_event_str(", flags := ");
+field_flags.log();
+TTCN_Logger::log_event_str(", count := ");
+field_count.log();
+TTCN_Logger::log_event_str(", ival1 := ");
+field_ival1.log();
+TTCN_Logger::log_event_str(", ival2 := ");
+field_ival2.log();
+TTCN_Logger::log_event_str(", can_id := ");
+field_can__id.log();
+TTCN_Logger::log_event_str(", frames := ");
+field_frames.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SocketCAN__bcm__frame::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 @Bcm.SocketCAN_bcm_frame 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) opcode().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) flags().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) count().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) ival1().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) ival2().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) can__id().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) frames().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(), "opcode")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          opcode().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(), "flags")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          flags().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(), "count")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          count().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(), "ival1")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ival1().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(), "ival2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ival2().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(), "can_id")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          can__id().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(), "frames")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          frames().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 @Bcm.SocketCAN_bcm_frame: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@Bcm.SocketCAN_bcm_frame");
+  }
+}
+
+void SocketCAN__bcm__frame::set_implicit_omit()
+{
+if (opcode().is_bound()) opcode().set_implicit_omit();
+if (flags().is_bound()) flags().set_implicit_omit();
+if (count().is_bound()) count().set_implicit_omit();
+if (ival1().is_bound()) ival1().set_implicit_omit();
+if (ival2().is_bound()) ival2().set_implicit_omit();
+if (can__id().is_bound()) can__id().set_implicit_omit();
+if (frames().is_bound()) frames().set_implicit_omit();
+}
+
+void SocketCAN__bcm__frame::encode_text(Text_Buf& text_buf) const
+{
+field_opcode.encode_text(text_buf);
+field_flags.encode_text(text_buf);
+field_count.encode_text(text_buf);
+field_ival1.encode_text(text_buf);
+field_ival2.encode_text(text_buf);
+field_can__id.encode_text(text_buf);
+field_frames.encode_text(text_buf);
+}
+
+void SocketCAN__bcm__frame::decode_text(Text_Buf& text_buf)
+{
+field_opcode.decode_text(text_buf);
+field_flags.decode_text(text_buf);
+field_count.decode_text(text_buf);
+field_ival1.decode_text(text_buf);
+field_ival2.decode_text(text_buf);
+field_can__id.decode_text(text_buf);
+field_frames.decode_text(text_buf);
+}
+
+struct SocketCAN__bcm__frame_template::single_value_struct {
+OCTETSTRING_template field_opcode;
+BITSTRING_template field_flags;
+INTEGER_template field_count;
+Bcm__timeval_template field_ival1;
+Bcm__timeval_template field_ival2;
+OCTETSTRING_template field_can__id;
+SocketCAN__bcm__frame_frames_template field_frames;
+};
+
+void SocketCAN__bcm__frame_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_opcode = ANY_VALUE;
+single_value->field_flags = ANY_VALUE;
+single_value->field_count = ANY_VALUE;
+single_value->field_ival1 = ANY_VALUE;
+single_value->field_ival2 = ANY_VALUE;
+single_value->field_can__id = ANY_VALUE;
+single_value->field_frames = ANY_VALUE;
+}
+}
+}
+
+void SocketCAN__bcm__frame_template::copy_value(const SocketCAN__bcm__frame& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.opcode().is_bound()) {
+  single_value->field_opcode = other_value.opcode();
+} else {
+  single_value->field_opcode.clean_up();
+}
+if (other_value.flags().is_bound()) {
+  single_value->field_flags = other_value.flags();
+} else {
+  single_value->field_flags.clean_up();
+}
+if (other_value.count().is_bound()) {
+  single_value->field_count = other_value.count();
+} else {
+  single_value->field_count.clean_up();
+}
+if (other_value.ival1().is_bound()) {
+  single_value->field_ival1 = other_value.ival1();
+} else {
+  single_value->field_ival1.clean_up();
+}
+if (other_value.ival2().is_bound()) {
+  single_value->field_ival2 = other_value.ival2();
+} else {
+  single_value->field_ival2.clean_up();
+}
+if (other_value.can__id().is_bound()) {
+  single_value->field_can__id = other_value.can__id();
+} else {
+  single_value->field_can__id.clean_up();
+}
+if (other_value.frames().is_bound()) {
+  single_value->field_frames = other_value.frames();
+} else {
+  single_value->field_frames.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SocketCAN__bcm__frame_template::copy_template(const SocketCAN__bcm__frame_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.opcode().get_selection()) {
+single_value->field_opcode = other_value.opcode();
+} else {
+single_value->field_opcode.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.flags().get_selection()) {
+single_value->field_flags = other_value.flags();
+} else {
+single_value->field_flags.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.count().get_selection()) {
+single_value->field_count = other_value.count();
+} else {
+single_value->field_count.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.ival1().get_selection()) {
+single_value->field_ival1 = other_value.ival1();
+} else {
+single_value->field_ival1.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.ival2().get_selection()) {
+single_value->field_ival2 = other_value.ival2();
+} else {
+single_value->field_ival2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.can__id().get_selection()) {
+single_value->field_can__id = other_value.can__id();
+} else {
+single_value->field_can__id.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.frames().get_selection()) {
+single_value->field_frames = other_value.frames();
+} else {
+single_value->field_frames.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SocketCAN__bcm__frame_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @Bcm.SocketCAN_bcm_frame.");
+break;
+}
+set_selection(other_value);
+}
+
+SocketCAN__bcm__frame_template::SocketCAN__bcm__frame_template()
+{
+}
+
+SocketCAN__bcm__frame_template::SocketCAN__bcm__frame_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SocketCAN__bcm__frame_template::SocketCAN__bcm__frame_template(const SocketCAN__bcm__frame& other_value)
+{
+copy_value(other_value);
+}
+
+SocketCAN__bcm__frame_template::SocketCAN__bcm__frame_template(const OPTIONAL<SocketCAN__bcm__frame>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__bcm__frame&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @Bcm.SocketCAN_bcm_frame from an unbound optional field.");
+}
+}
+
+SocketCAN__bcm__frame_template::SocketCAN__bcm__frame_template(const SocketCAN__bcm__frame_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SocketCAN__bcm__frame_template::~SocketCAN__bcm__frame_template()
+{
+clean_up();
+}
+
+SocketCAN__bcm__frame_template& SocketCAN__bcm__frame_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SocketCAN__bcm__frame_template& SocketCAN__bcm__frame_template::operator=(const SocketCAN__bcm__frame& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SocketCAN__bcm__frame_template& SocketCAN__bcm__frame_template::operator=(const OPTIONAL<SocketCAN__bcm__frame>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__bcm__frame&)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 @Bcm.SocketCAN_bcm_frame.");
+}
+return *this;
+}
+
+SocketCAN__bcm__frame_template& SocketCAN__bcm__frame_template::operator=(const SocketCAN__bcm__frame_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__bcm__frame_template::match(const SocketCAN__bcm__frame& 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.opcode().is_bound()) return FALSE;
+if(!single_value->field_opcode.match(other_value.opcode(), legacy))return FALSE;
+if(!other_value.flags().is_bound()) return FALSE;
+if(!single_value->field_flags.match(other_value.flags(), legacy))return FALSE;
+if(!other_value.count().is_bound()) return FALSE;
+if(!single_value->field_count.match(other_value.count(), legacy))return FALSE;
+if(!other_value.ival1().is_bound()) return FALSE;
+if(!single_value->field_ival1.match(other_value.ival1(), legacy))return FALSE;
+if(!other_value.ival2().is_bound()) return FALSE;
+if(!single_value->field_ival2.match(other_value.ival2(), legacy))return FALSE;
+if(!other_value.can__id().is_bound()) return FALSE;
+if(!single_value->field_can__id.match(other_value.can__id(), legacy))return FALSE;
+if(!other_value.frames().is_bound()) return FALSE;
+if(!single_value->field_frames.match(other_value.frames(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @Bcm.SocketCAN_bcm_frame.");
+}
+return FALSE;
+}
+
+boolean SocketCAN__bcm__frame_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_opcode.is_bound()
+
+ ||single_value->field_flags.is_bound()
+
+ ||single_value->field_count.is_bound()
+
+ ||single_value->field_ival1.is_bound()
+
+ ||single_value->field_ival2.is_bound()
+
+ ||single_value->field_can__id.is_bound()
+
+ ||single_value->field_frames.is_bound()
+;
+}
+
+boolean SocketCAN__bcm__frame_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_opcode.is_value()
+ &&single_value->field_flags.is_value()
+ &&single_value->field_count.is_value()
+ &&single_value->field_ival1.is_value()
+ &&single_value->field_ival2.is_value()
+ &&single_value->field_can__id.is_value()
+ &&single_value->field_frames.is_value();
+}
+
+void SocketCAN__bcm__frame_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SocketCAN__bcm__frame SocketCAN__bcm__frame_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 @Bcm.SocketCAN_bcm_frame.");
+SocketCAN__bcm__frame ret_val;
+if (single_value->field_opcode.is_bound()) {
+ret_val.opcode() = single_value->field_opcode.valueof();
+}
+if (single_value->field_flags.is_bound()) {
+ret_val.flags() = single_value->field_flags.valueof();
+}
+if (single_value->field_count.is_bound()) {
+ret_val.count() = single_value->field_count.valueof();
+}
+if (single_value->field_ival1.is_bound()) {
+ret_val.ival1() = single_value->field_ival1.valueof();
+}
+if (single_value->field_ival2.is_bound()) {
+ret_val.ival2() = single_value->field_ival2.valueof();
+}
+if (single_value->field_can__id.is_bound()) {
+ret_val.can__id() = single_value->field_can__id.valueof();
+}
+if (single_value->field_frames.is_bound()) {
+ret_val.frames() = single_value->field_frames.valueof();
+}
+return ret_val;
+}
+
+void SocketCAN__bcm__frame_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @Bcm.SocketCAN_bcm_frame.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SocketCAN__bcm__frame_template[list_length];
+}
+
+SocketCAN__bcm__frame_template& SocketCAN__bcm__frame_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @Bcm.SocketCAN_bcm_frame.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @Bcm.SocketCAN_bcm_frame.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& SocketCAN__bcm__frame_template::opcode()
+{
+set_specific();
+return single_value->field_opcode;
+}
+
+const OCTETSTRING_template& SocketCAN__bcm__frame_template::opcode() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field opcode of a non-specific template of type @Bcm.SocketCAN_bcm_frame.");
+return single_value->field_opcode;
+}
+
+BITSTRING_template& SocketCAN__bcm__frame_template::flags()
+{
+set_specific();
+return single_value->field_flags;
+}
+
+const BITSTRING_template& SocketCAN__bcm__frame_template::flags() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field flags of a non-specific template of type @Bcm.SocketCAN_bcm_frame.");
+return single_value->field_flags;
+}
+
+INTEGER_template& SocketCAN__bcm__frame_template::count()
+{
+set_specific();
+return single_value->field_count;
+}
+
+const INTEGER_template& SocketCAN__bcm__frame_template::count() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field count of a non-specific template of type @Bcm.SocketCAN_bcm_frame.");
+return single_value->field_count;
+}
+
+Bcm__timeval_template& SocketCAN__bcm__frame_template::ival1()
+{
+set_specific();
+return single_value->field_ival1;
+}
+
+const Bcm__timeval_template& SocketCAN__bcm__frame_template::ival1() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field ival1 of a non-specific template of type @Bcm.SocketCAN_bcm_frame.");
+return single_value->field_ival1;
+}
+
+Bcm__timeval_template& SocketCAN__bcm__frame_template::ival2()
+{
+set_specific();
+return single_value->field_ival2;
+}
+
+const Bcm__timeval_template& SocketCAN__bcm__frame_template::ival2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field ival2 of a non-specific template of type @Bcm.SocketCAN_bcm_frame.");
+return single_value->field_ival2;
+}
+
+OCTETSTRING_template& SocketCAN__bcm__frame_template::can__id()
+{
+set_specific();
+return single_value->field_can__id;
+}
+
+const OCTETSTRING_template& SocketCAN__bcm__frame_template::can__id() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field can_id of a non-specific template of type @Bcm.SocketCAN_bcm_frame.");
+return single_value->field_can__id;
+}
+
+SocketCAN__bcm__frame_frames_template& SocketCAN__bcm__frame_template::frames()
+{
+set_specific();
+return single_value->field_frames;
+}
+
+const SocketCAN__bcm__frame_frames_template& SocketCAN__bcm__frame_template::frames() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field frames of a non-specific template of type @Bcm.SocketCAN_bcm_frame.");
+return single_value->field_frames;
+}
+
+int SocketCAN__bcm__frame_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @Bcm.SocketCAN_bcm_frame 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 @Bcm.SocketCAN_bcm_frame 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 @Bcm.SocketCAN_bcm_frame containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @Bcm.SocketCAN_bcm_frame containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @Bcm.SocketCAN_bcm_frame containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @Bcm.SocketCAN_bcm_frame containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @Bcm.SocketCAN_bcm_frame.");
+  }
+  return 0;
+}
+
+void SocketCAN__bcm__frame_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ opcode := ");
+single_value->field_opcode.log();
+TTCN_Logger::log_event_str(", flags := ");
+single_value->field_flags.log();
+TTCN_Logger::log_event_str(", count := ");
+single_value->field_count.log();
+TTCN_Logger::log_event_str(", ival1 := ");
+single_value->field_ival1.log();
+TTCN_Logger::log_event_str(", ival2 := ");
+single_value->field_ival2.log();
+TTCN_Logger::log_event_str(", can_id := ");
+single_value->field_can__id.log();
+TTCN_Logger::log_event_str(", frames := ");
+single_value->field_frames.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SocketCAN__bcm__frame_template::log_match(const SocketCAN__bcm__frame& 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_opcode.match(match_value.opcode(), legacy)){
+TTCN_Logger::log_logmatch_info(".opcode");
+single_value->field_opcode.log_match(match_value.opcode(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_flags.match(match_value.flags(), legacy)){
+TTCN_Logger::log_logmatch_info(".flags");
+single_value->field_flags.log_match(match_value.flags(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_count.match(match_value.count(), legacy)){
+TTCN_Logger::log_logmatch_info(".count");
+single_value->field_count.log_match(match_value.count(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_ival1.match(match_value.ival1(), legacy)){
+TTCN_Logger::log_logmatch_info(".ival1");
+single_value->field_ival1.log_match(match_value.ival1(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_ival2.match(match_value.ival2(), legacy)){
+TTCN_Logger::log_logmatch_info(".ival2");
+single_value->field_ival2.log_match(match_value.ival2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_can__id.match(match_value.can__id(), legacy)){
+TTCN_Logger::log_logmatch_info(".can_id");
+single_value->field_can__id.log_match(match_value.can__id(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_frames.match(match_value.frames(), legacy)){
+TTCN_Logger::log_logmatch_info(".frames");
+single_value->field_frames.log_match(match_value.frames(), 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("{ opcode := ");
+single_value->field_opcode.log_match(match_value.opcode(), legacy);
+TTCN_Logger::log_event_str(", flags := ");
+single_value->field_flags.log_match(match_value.flags(), legacy);
+TTCN_Logger::log_event_str(", count := ");
+single_value->field_count.log_match(match_value.count(), legacy);
+TTCN_Logger::log_event_str(", ival1 := ");
+single_value->field_ival1.log_match(match_value.ival1(), legacy);
+TTCN_Logger::log_event_str(", ival2 := ");
+single_value->field_ival2.log_match(match_value.ival2(), legacy);
+TTCN_Logger::log_event_str(", can_id := ");
+single_value->field_can__id.log_match(match_value.can__id(), legacy);
+TTCN_Logger::log_event_str(", frames := ");
+single_value->field_frames.log_match(match_value.frames(), 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 SocketCAN__bcm__frame_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_opcode.encode_text(text_buf);
+single_value->field_flags.encode_text(text_buf);
+single_value->field_count.encode_text(text_buf);
+single_value->field_ival1.encode_text(text_buf);
+single_value->field_ival2.encode_text(text_buf);
+single_value->field_can__id.encode_text(text_buf);
+single_value->field_frames.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 @Bcm.SocketCAN_bcm_frame.");
+}
+}
+
+void SocketCAN__bcm__frame_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_opcode.decode_text(text_buf);
+single_value->field_flags.decode_text(text_buf);
+single_value->field_count.decode_text(text_buf);
+single_value->field_ival1.decode_text(text_buf);
+single_value->field_ival2.decode_text(text_buf);
+single_value->field_can__id.decode_text(text_buf);
+single_value->field_frames.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 SocketCAN__bcm__frame_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 @Bcm.SocketCAN_bcm_frame.");
+}
+}
+
+void SocketCAN__bcm__frame_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: {
+    SocketCAN__bcm__frame_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @Bcm.SocketCAN_bcm_frame 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) opcode().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) flags().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) count().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) ival1().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) ival2().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) can__id().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) frames().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(), "opcode")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          opcode().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(), "flags")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          flags().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(), "count")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          count().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(), "ival1")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ival1().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(), "ival2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ival2().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(), "can_id")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          can__id().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(), "frames")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          frames().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 @Bcm.SocketCAN_bcm_frame: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@Bcm.SocketCAN_bcm_frame");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SocketCAN__bcm__frame_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_opcode.check_restriction(t_res, t_name ? t_name : "@Bcm.SocketCAN_bcm_frame");
+single_value->field_flags.check_restriction(t_res, t_name ? t_name : "@Bcm.SocketCAN_bcm_frame");
+single_value->field_count.check_restriction(t_res, t_name ? t_name : "@Bcm.SocketCAN_bcm_frame");
+single_value->field_ival1.check_restriction(t_res, t_name ? t_name : "@Bcm.SocketCAN_bcm_frame");
+single_value->field_ival2.check_restriction(t_res, t_name ? t_name : "@Bcm.SocketCAN_bcm_frame");
+single_value->field_can__id.check_restriction(t_res, t_name ? t_name : "@Bcm.SocketCAN_bcm_frame");
+single_value->field_frames.check_restriction(t_res, t_name ? t_name : "@Bcm.SocketCAN_bcm_frame");
+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 : "@Bcm.SocketCAN_bcm_frame");
+}
+
+boolean SocketCAN__bcm__frame_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SocketCAN__bcm__frame_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+
+/* Bodies of functions, altsteps and testcases */
+
+boolean operator==(null_type, const SocketCAN__bcm__frame_frames_can__frame& other_value)
+{
+if (other_value.val_ptr == NULL)
+TTCN_error("The right operand of comparison is an unbound value of type @Bcm.SocketCAN_bcm_frame.frames.can_frame.");
+return other_value.val_ptr->n_elements == 0;
+}
+
+boolean operator==(null_type, const SocketCAN__bcm__frame_frames_canfd__frame& other_value)
+{
+if (other_value.val_ptr == NULL)
+TTCN_error("The right operand of comparison is an unbound value of type @Bcm.SocketCAN_bcm_frame.frames.canfd_frame.");
+return other_value.val_ptr->n_elements == 0;
+}
+
+
+/* Bodies of static functions */
+
+static void pre_init_module()
+{
+TTCN_Location current_location("../src/Bcm.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "Bcm");
+Can::module_object.pre_init_module();
+current_location.update_lineno(19);
+#line 19 "../src/Bcm.ttcn"
+const_CAN__FRAME__MAX__NUMBER = 256;
+}
+
+static void post_init_module()
+{
+TTCN_Location current_location("../src/Bcm.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "Bcm");
+Can::module_object.post_init_module();
+}
+
+
+} /* end of namespace */
diff --git a/demo/Bcm.d b/demo/Bcm.d
new file mode 100644
index 0000000..fafa54c
--- /dev/null
+++ b/demo/Bcm.d
@@ -0,0 +1,59 @@
+Bcm.o Bcm.d : Bcm.cc Bcm.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TTCN3.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/version.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/cversion.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Types.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Vector.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Error.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Basetype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Encdec.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RInt.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON_Tokenizer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Logger.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Template.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Integer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ttcn3float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Boolean.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Null.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Optional.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Param_Types.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/memory.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/BER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Textbuf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Parameters.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XmlReader.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Objid.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Verdicttype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Component.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Bitstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RAW.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/CharCoding.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Hexstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Octetstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Any.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Universal_charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Struct_of.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Array.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_CharacterString.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_External.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TEXT.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_EmbeddedPDV.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Addfunc.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Timer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Port.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Event_Handler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/TitanLoggerApiSimple.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/PreGenRecordOf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Module_list.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Snapshot.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Default.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Runtime.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/OER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Profiler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ProfilerTools.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Debugger.hh Can.hh \
+ General_Types.hh
diff --git a/demo/Bcm.hh b/demo/Bcm.hh
new file mode 100644
index 0000000..a5a75bd
--- /dev/null
+++ b/demo/Bcm.hh
@@ -0,0 +1,945 @@
+// This C++ header file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+#ifndef Bcm_HH
+#define Bcm_HH
+
+#ifdef TITAN_RUNTIME_2
+#error Generated code does not match with used runtime.\
+ Code was generated without -R option but -DTITAN_RUNTIME_2 was used.
+#endif
+
+/* Header file includes */
+
+#include <TTCN3.hh>
+#include "Can.hh"
+
+#if TTCN3_VERSION != 60600
+#error Version mismatch detected.\
+ Please check the version of the TTCN-3 compiler and the base library.\
+ Run make clean and rebuild the project if the version of the compiler changed recently.
+#endif
+
+#ifndef LINUX
+#error This file should be compiled on LINUX
+#endif
+
+#undef Bcm_HH
+#endif
+
+namespace Bcm {
+
+/* Forward declarations of classes */
+
+class BcmFlagsBitIndex__enum;
+class BcmFlagsBitIndex__enum_template;
+class BcmFlags__enum;
+class BcmFlags__enum_template;
+class BcmOpcode__enum;
+class BcmOpcode__enum_template;
+class Bcm__timeval;
+class Bcm__timeval_template;
+class SocketCAN__bcm__frame_frames;
+class SocketCAN__bcm__frame_frames_template;
+class SocketCAN__bcm__frame_frames_can__frame;
+class SocketCAN__bcm__frame_frames_can__frame_template;
+class SocketCAN__bcm__frame_frames_canfd__frame;
+class SocketCAN__bcm__frame_frames_canfd__frame_template;
+class SocketCAN__bcm__frame;
+class SocketCAN__bcm__frame_template;
+
+} /* end of namespace */
+
+#ifndef Bcm_HH
+#define Bcm_HH
+
+namespace Bcm {
+
+/* Type definitions */
+
+typedef INTEGER Bcm__long;
+typedef INTEGER_template Bcm__long_template;
+
+/* Class definitions */
+
+class BcmFlagsBitIndex__enum : public Base_Type { // enum
+friend class BcmFlagsBitIndex__enum_template;
+public:
+enum enum_type { e__CAN__BCM__SETTIMER__BITINDEX = 0, e__CAN__BCM__STARTTIMER__BITINDEX = 1, e__CAN__BCM__TX__COUNTEVT__BITINDEX = 2, e__CAN__BCM__TX__ANNOUNCE__BITINDEX = 3, e__CAN__BCM__TX__CP__CAN__ID__BITINDEX = 4, e__CAN__BCM__RX__FILTER__ID__BITINDEX = 5, e__CAN__BCM__RX__CHECK__DLC__BITINDEX = 6, e__CAN__BCM__RX__NO__AUTOTIMER__BITINDEX = 7, e__CAN__BCM__RX__ANNOUNCE__RESUME__BITINDEX = 8, e__CAN__BCM__TX__RESET__MULTI__IDX__BITINDEX = 9, e__CAN__BCM__RX__RTR__FRAME__BITINDEX = 10, UNKNOWN_VALUE = 11, UNBOUND_VALUE = 12 };
+private:
+enum_type enum_value;
+
+public:
+BcmFlagsBitIndex__enum();
+BcmFlagsBitIndex__enum(int other_value);
+BcmFlagsBitIndex__enum(enum_type other_value);
+BcmFlagsBitIndex__enum(const BcmFlagsBitIndex__enum& other_value);
+
+BcmFlagsBitIndex__enum& operator=(int other_value);
+BcmFlagsBitIndex__enum& operator=(enum_type other_value);
+BcmFlagsBitIndex__enum& operator=(const BcmFlagsBitIndex__enum& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const BcmFlagsBitIndex__enum& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const BcmFlagsBitIndex__enum& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const BcmFlagsBitIndex__enum& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const BcmFlagsBitIndex__enum& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const BcmFlagsBitIndex__enum& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const BcmFlagsBitIndex__enum& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const BcmFlagsBitIndex__enum& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+};
+
+class BcmFlagsBitIndex__enum_template : public Base_Template {
+union {
+BcmFlagsBitIndex__enum::enum_type single_value;
+struct {
+unsigned int n_values;
+BcmFlagsBitIndex__enum_template *list_value;
+} value_list;
+};
+
+void copy_template(const BcmFlagsBitIndex__enum_template& other_value);
+
+public:
+BcmFlagsBitIndex__enum_template();
+BcmFlagsBitIndex__enum_template(template_sel other_value);
+BcmFlagsBitIndex__enum_template(int other_value);
+BcmFlagsBitIndex__enum_template(BcmFlagsBitIndex__enum::enum_type other_value);
+BcmFlagsBitIndex__enum_template(const BcmFlagsBitIndex__enum& other_value);
+BcmFlagsBitIndex__enum_template(const OPTIONAL<BcmFlagsBitIndex__enum>& other_value);
+BcmFlagsBitIndex__enum_template(const BcmFlagsBitIndex__enum_template& other_value);
+~BcmFlagsBitIndex__enum_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+BcmFlagsBitIndex__enum_template& operator=(template_sel other_value);
+BcmFlagsBitIndex__enum_template& operator=(int other_value);
+BcmFlagsBitIndex__enum_template& operator=(BcmFlagsBitIndex__enum::enum_type other_value);
+BcmFlagsBitIndex__enum_template& operator=(const BcmFlagsBitIndex__enum& other_value);
+BcmFlagsBitIndex__enum_template& operator=(const OPTIONAL<BcmFlagsBitIndex__enum>& other_value);
+BcmFlagsBitIndex__enum_template& operator=(const BcmFlagsBitIndex__enum_template& other_value);
+
+boolean match(BcmFlagsBitIndex__enum::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const BcmFlagsBitIndex__enum& other_value, boolean legacy = FALSE) const;
+BcmFlagsBitIndex__enum::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+BcmFlagsBitIndex__enum_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const BcmFlagsBitIndex__enum& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class BcmFlags__enum : public Base_Type { // enum
+friend class BcmFlags__enum_template;
+public:
+enum enum_type { e__CAN__BCM__SETTIMER = 1, e__CAN__BCM__STARTTIMER = 2, e__CAN__BCM__TX__COUNTEVT = 4, e__CAN__BCM__TX__ANNOUNCE = 8, e__CAN__BCM__TX__CP__CAN__ID = 16, e__CAN__BCM__RX__FILTER__ID = 32, e__CAN__BCM__RX__CHECK__DLC = 64, e__CAN__BCM__RX__NO__AUTOTIMER = 128, e__CAN__BCM__RX__ANNOUNCE__RESUME = 256, e__CAN__BCM__TX__RESET__MULTI__IDX = 512, e__CAN__BCM__RX__RTR__FRAME = 1024, UNKNOWN_VALUE = 0, UNBOUND_VALUE = 3 };
+private:
+enum_type enum_value;
+
+public:
+BcmFlags__enum();
+BcmFlags__enum(int other_value);
+BcmFlags__enum(enum_type other_value);
+BcmFlags__enum(const BcmFlags__enum& other_value);
+
+BcmFlags__enum& operator=(int other_value);
+BcmFlags__enum& operator=(enum_type other_value);
+BcmFlags__enum& operator=(const BcmFlags__enum& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const BcmFlags__enum& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const BcmFlags__enum& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const BcmFlags__enum& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const BcmFlags__enum& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const BcmFlags__enum& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const BcmFlags__enum& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const BcmFlags__enum& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+};
+
+class BcmFlags__enum_template : public Base_Template {
+union {
+BcmFlags__enum::enum_type single_value;
+struct {
+unsigned int n_values;
+BcmFlags__enum_template *list_value;
+} value_list;
+};
+
+void copy_template(const BcmFlags__enum_template& other_value);
+
+public:
+BcmFlags__enum_template();
+BcmFlags__enum_template(template_sel other_value);
+BcmFlags__enum_template(int other_value);
+BcmFlags__enum_template(BcmFlags__enum::enum_type other_value);
+BcmFlags__enum_template(const BcmFlags__enum& other_value);
+BcmFlags__enum_template(const OPTIONAL<BcmFlags__enum>& other_value);
+BcmFlags__enum_template(const BcmFlags__enum_template& other_value);
+~BcmFlags__enum_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+BcmFlags__enum_template& operator=(template_sel other_value);
+BcmFlags__enum_template& operator=(int other_value);
+BcmFlags__enum_template& operator=(BcmFlags__enum::enum_type other_value);
+BcmFlags__enum_template& operator=(const BcmFlags__enum& other_value);
+BcmFlags__enum_template& operator=(const OPTIONAL<BcmFlags__enum>& other_value);
+BcmFlags__enum_template& operator=(const BcmFlags__enum_template& other_value);
+
+boolean match(BcmFlags__enum::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const BcmFlags__enum& other_value, boolean legacy = FALSE) const;
+BcmFlags__enum::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+BcmFlags__enum_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const BcmFlags__enum& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class BcmOpcode__enum : public Base_Type { // enum
+friend class BcmOpcode__enum_template;
+public:
+enum enum_type { e__CAN__BCM__TX__SETUP = 1, e__CAN__BCM__TX__DELETE = 2, e__CAN__BCM__TX__READ = 3, e__CAN__BCM__TX__SEND = 4, e__CAN__BCM__RX__SETUP = 5, e__CAN__BCM__RX__DELETE = 6, e__CAN__BCM__RX__READ = 7, e__CAN__BCM__TX__STATUS = 8, e__CAN__BCM__TX__EXPIRED = 9, e__CAN__BCM__RX__STATUS = 10, e__CAN__BCM__RX__TIMEOUT = 11, e__CAN__BCM__RX__CHANGED = 12, UNKNOWN_VALUE = 0, UNBOUND_VALUE = 13 };
+private:
+enum_type enum_value;
+
+public:
+BcmOpcode__enum();
+BcmOpcode__enum(int other_value);
+BcmOpcode__enum(enum_type other_value);
+BcmOpcode__enum(const BcmOpcode__enum& other_value);
+
+BcmOpcode__enum& operator=(int other_value);
+BcmOpcode__enum& operator=(enum_type other_value);
+BcmOpcode__enum& operator=(const BcmOpcode__enum& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const BcmOpcode__enum& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const BcmOpcode__enum& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const BcmOpcode__enum& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const BcmOpcode__enum& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const BcmOpcode__enum& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const BcmOpcode__enum& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const BcmOpcode__enum& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+};
+
+class BcmOpcode__enum_template : public Base_Template {
+union {
+BcmOpcode__enum::enum_type single_value;
+struct {
+unsigned int n_values;
+BcmOpcode__enum_template *list_value;
+} value_list;
+};
+
+void copy_template(const BcmOpcode__enum_template& other_value);
+
+public:
+BcmOpcode__enum_template();
+BcmOpcode__enum_template(template_sel other_value);
+BcmOpcode__enum_template(int other_value);
+BcmOpcode__enum_template(BcmOpcode__enum::enum_type other_value);
+BcmOpcode__enum_template(const BcmOpcode__enum& other_value);
+BcmOpcode__enum_template(const OPTIONAL<BcmOpcode__enum>& other_value);
+BcmOpcode__enum_template(const BcmOpcode__enum_template& other_value);
+~BcmOpcode__enum_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+BcmOpcode__enum_template& operator=(template_sel other_value);
+BcmOpcode__enum_template& operator=(int other_value);
+BcmOpcode__enum_template& operator=(BcmOpcode__enum::enum_type other_value);
+BcmOpcode__enum_template& operator=(const BcmOpcode__enum& other_value);
+BcmOpcode__enum_template& operator=(const OPTIONAL<BcmOpcode__enum>& other_value);
+BcmOpcode__enum_template& operator=(const BcmOpcode__enum_template& other_value);
+
+boolean match(BcmOpcode__enum::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const BcmOpcode__enum& other_value, boolean legacy = FALSE) const;
+BcmOpcode__enum::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+BcmOpcode__enum_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const BcmOpcode__enum& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class Bcm__timeval {
+  INTEGER field_tv__sec;
+  INTEGER field_tv__usec;
+public:
+  Bcm__timeval();
+  Bcm__timeval(const INTEGER& par_tv__sec,
+    const INTEGER& par_tv__usec);
+  Bcm__timeval(const Bcm__timeval& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  Bcm__timeval& operator=(const Bcm__timeval& other_value);
+  boolean operator==(const Bcm__timeval& other_value) const;
+  inline boolean operator!=(const Bcm__timeval& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& tv__sec()
+    {return field_tv__sec;}
+  inline const INTEGER& tv__sec() const
+    {return field_tv__sec;}
+  inline INTEGER& tv__usec()
+    {return field_tv__usec;}
+  inline const INTEGER& tv__usec() const
+    {return field_tv__usec;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+};
+
+class Bcm__timeval_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+Bcm__timeval_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const Bcm__timeval& other_value);
+void copy_template(const Bcm__timeval_template& other_value);
+
+public:
+Bcm__timeval_template();
+Bcm__timeval_template(template_sel other_value);
+Bcm__timeval_template(const Bcm__timeval& other_value);
+Bcm__timeval_template(const OPTIONAL<Bcm__timeval>& other_value);
+Bcm__timeval_template(const Bcm__timeval_template& other_value);
+~Bcm__timeval_template();
+Bcm__timeval_template& operator=(template_sel other_value);
+Bcm__timeval_template& operator=(const Bcm__timeval& other_value);
+Bcm__timeval_template& operator=(const OPTIONAL<Bcm__timeval>& other_value);
+Bcm__timeval_template& operator=(const Bcm__timeval_template& other_value);
+boolean match(const Bcm__timeval& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+Bcm__timeval valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+Bcm__timeval_template& list_item(unsigned int list_index) const;
+INTEGER_template& tv__sec();
+const INTEGER_template& tv__sec() const;
+INTEGER_template& tv__usec();
+const INTEGER_template& tv__usec() const;
+int size_of() const;
+void log() const;
+void log_match(const Bcm__timeval& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SocketCAN__bcm__frame_frames : public Base_Type {
+public:
+enum union_selection_type { UNBOUND_VALUE = 0, ALT_can__frame = 1, ALT_canfd__frame = 2 };
+private:
+union_selection_type union_selection;
+union {
+SocketCAN__bcm__frame_frames_can__frame *field_can__frame;
+SocketCAN__bcm__frame_frames_canfd__frame *field_canfd__frame;
+};
+void copy_value(const SocketCAN__bcm__frame_frames& other_value);
+
+public:
+SocketCAN__bcm__frame_frames();
+SocketCAN__bcm__frame_frames(const SocketCAN__bcm__frame_frames& other_value);
+~SocketCAN__bcm__frame_frames();
+SocketCAN__bcm__frame_frames& operator=(const SocketCAN__bcm__frame_frames& other_value);
+boolean operator==(const SocketCAN__bcm__frame_frames& other_value) const;
+inline boolean operator!=(const SocketCAN__bcm__frame_frames& other_value) const { return !(*this == other_value); }
+SocketCAN__bcm__frame_frames_can__frame& can__frame();
+const SocketCAN__bcm__frame_frames_can__frame& can__frame() const;
+SocketCAN__bcm__frame_frames_canfd__frame& canfd__frame();
+const SocketCAN__bcm__frame_frames_canfd__frame& canfd__frame() const;
+inline union_selection_type get_selection() const { return union_selection; }
+boolean ischosen(union_selection_type checked_selection) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+};
+
+class SocketCAN__bcm__frame_frames_template : public Base_Template {
+union {
+struct {
+SocketCAN__bcm__frame_frames::union_selection_type union_selection;
+union {
+SocketCAN__bcm__frame_frames_can__frame_template *field_can__frame;
+SocketCAN__bcm__frame_frames_canfd__frame_template *field_canfd__frame;
+};
+} single_value;
+struct {
+unsigned int n_values;
+SocketCAN__bcm__frame_frames_template *list_value;
+} value_list;
+};
+void copy_value(const SocketCAN__bcm__frame_frames& other_value);
+
+void copy_template(const SocketCAN__bcm__frame_frames_template& other_value);
+
+public:
+SocketCAN__bcm__frame_frames_template();
+SocketCAN__bcm__frame_frames_template(template_sel other_value);
+SocketCAN__bcm__frame_frames_template(const SocketCAN__bcm__frame_frames& other_value);
+SocketCAN__bcm__frame_frames_template(const OPTIONAL<SocketCAN__bcm__frame_frames>& other_value);
+SocketCAN__bcm__frame_frames_template(const SocketCAN__bcm__frame_frames_template& other_value);
+~SocketCAN__bcm__frame_frames_template();
+void clean_up();
+SocketCAN__bcm__frame_frames_template& operator=(template_sel other_value);
+SocketCAN__bcm__frame_frames_template& operator=(const SocketCAN__bcm__frame_frames& other_value);
+SocketCAN__bcm__frame_frames_template& operator=(const OPTIONAL<SocketCAN__bcm__frame_frames>& other_value);
+SocketCAN__bcm__frame_frames_template& operator=(const SocketCAN__bcm__frame_frames_template& other_value);
+boolean match(const SocketCAN__bcm__frame_frames& other_value, boolean legacy = FALSE) const;
+boolean is_value() const;SocketCAN__bcm__frame_frames valueof() const;
+SocketCAN__bcm__frame_frames_template& list_item(unsigned int list_index) const;
+void set_type(template_sel template_type, unsigned int list_length);
+SocketCAN__bcm__frame_frames_can__frame_template& can__frame();
+const SocketCAN__bcm__frame_frames_can__frame_template& can__frame() const;
+SocketCAN__bcm__frame_frames_canfd__frame_template& canfd__frame();
+const SocketCAN__bcm__frame_frames_canfd__frame_template& canfd__frame() const;
+boolean ischosen(SocketCAN__bcm__frame_frames::union_selection_type checked_selection) const;
+void log() const;
+void log_match(const SocketCAN__bcm__frame_frames& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class SocketCAN__bcm__frame_frames_can__frame : public Base_Type {
+struct recordof_setof_struct {
+int ref_count;
+int n_elements;
+Can::CAN__frame **value_elements;
+} *val_ptr;
+
+static const Can::CAN__frame UNBOUND_ELEM;
+private:
+friend boolean operator==(null_type null_value, const SocketCAN__bcm__frame_frames_can__frame& other_value);
+
+public:
+  typedef Can::CAN__frame of_type;
+SocketCAN__bcm__frame_frames_can__frame();
+SocketCAN__bcm__frame_frames_can__frame(null_type other_value);
+SocketCAN__bcm__frame_frames_can__frame(const SocketCAN__bcm__frame_frames_can__frame& other_value);
+~SocketCAN__bcm__frame_frames_can__frame();
+
+void clean_up();
+SocketCAN__bcm__frame_frames_can__frame& operator=(null_type other_value);
+SocketCAN__bcm__frame_frames_can__frame& operator=(const SocketCAN__bcm__frame_frames_can__frame& other_value);
+
+boolean operator==(null_type other_value) const;
+boolean operator==(const SocketCAN__bcm__frame_frames_can__frame& other_value) const;
+inline boolean operator!=(null_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const SocketCAN__bcm__frame_frames_can__frame& other_value) const { return !(*this == other_value); }
+
+Can::CAN__frame& operator[](int index_value);
+Can::CAN__frame& operator[](const INTEGER& index_value);
+const Can::CAN__frame& operator[](int index_value) const;
+const Can::CAN__frame& operator[](const INTEGER& index_value) const;
+
+SocketCAN__bcm__frame_frames_can__frame operator<<=(int rotate_count) const;
+SocketCAN__bcm__frame_frames_can__frame operator<<=(const INTEGER& rotate_count) const;
+SocketCAN__bcm__frame_frames_can__frame operator>>=(int rotate_count) const;
+SocketCAN__bcm__frame_frames_can__frame operator>>=(const INTEGER& rotate_count) const;
+
+SocketCAN__bcm__frame_frames_can__frame operator+(const SocketCAN__bcm__frame_frames_can__frame& other_value) const;
+
+SocketCAN__bcm__frame_frames_can__frame substr(int index, int returncount) const;
+
+SocketCAN__bcm__frame_frames_can__frame replace(int index, int len, const SocketCAN__bcm__frame_frames_can__frame& repl) const;
+
+SocketCAN__bcm__frame_frames_can__frame replace(int index, int len, const SocketCAN__bcm__frame_frames_can__frame_template& repl) const;
+
+void set_size(int new_size);
+inline boolean is_bound() const {return val_ptr != NULL; }
+inline boolean is_present() const { return is_bound(); }
+boolean is_value() const;
+int size_of() const;
+int n_elem() const { return size_of(); }
+int lengthof() const;
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+};
+
+class SocketCAN__bcm__frame_frames_can__frame_template : public Record_Of_Template {
+union {
+struct {
+int n_elements;
+Can::CAN__frame_template **value_elements;
+} single_value;
+struct {
+unsigned int n_values;
+SocketCAN__bcm__frame_frames_can__frame_template *list_value;
+} value_list;
+};
+void copy_value(const SocketCAN__bcm__frame_frames_can__frame& other_value);
+void copy_template(const SocketCAN__bcm__frame_frames_can__frame_template& other_value);
+static boolean match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy);
+
+public:
+SocketCAN__bcm__frame_frames_can__frame_template();
+SocketCAN__bcm__frame_frames_can__frame_template(template_sel other_value);
+SocketCAN__bcm__frame_frames_can__frame_template(null_type other_value);
+SocketCAN__bcm__frame_frames_can__frame_template(const SocketCAN__bcm__frame_frames_can__frame& other_value);
+SocketCAN__bcm__frame_frames_can__frame_template(const OPTIONAL<SocketCAN__bcm__frame_frames_can__frame>& other_value);
+SocketCAN__bcm__frame_frames_can__frame_template(const SocketCAN__bcm__frame_frames_can__frame_template& other_value);
+~SocketCAN__bcm__frame_frames_can__frame_template();
+
+void clean_up();
+SocketCAN__bcm__frame_frames_can__frame_template& operator=(template_sel other_value);
+SocketCAN__bcm__frame_frames_can__frame_template& operator=(null_type other_value);
+SocketCAN__bcm__frame_frames_can__frame_template& operator=(const SocketCAN__bcm__frame_frames_can__frame& other_value);
+SocketCAN__bcm__frame_frames_can__frame_template& operator=(const OPTIONAL<SocketCAN__bcm__frame_frames_can__frame>& other_value);
+SocketCAN__bcm__frame_frames_can__frame_template& operator=(const SocketCAN__bcm__frame_frames_can__frame_template& other_value);
+
+Can::CAN__frame_template& operator[](int index_value);
+Can::CAN__frame_template& operator[](const INTEGER& index_value);
+const Can::CAN__frame_template& operator[](int index_value) const;
+const Can::CAN__frame_template& operator[](const INTEGER& index_value) const;
+
+void set_size(int new_size);
+int n_elem() const;
+int size_of(boolean is_size) const;
+inline int size_of() const { return size_of(TRUE); }
+inline int lengthof() const { return size_of(FALSE); }
+boolean match(const SocketCAN__bcm__frame_frames_can__frame& other_value, boolean legacy = FALSE) const;
+inline boolean is_bound() const 
+  {return template_selection != UNINITIALIZED_TEMPLATE; }
+boolean is_value() const;
+SocketCAN__bcm__frame_frames_can__frame valueof() const;
+SocketCAN__bcm__frame_frames_can__frame substr(int index, int returncount) const;
+
+SocketCAN__bcm__frame_frames_can__frame replace(int index, int len, const SocketCAN__bcm__frame_frames_can__frame_template& repl) const;
+
+SocketCAN__bcm__frame_frames_can__frame replace(int index, int len, const SocketCAN__bcm__frame_frames_can__frame& repl) const;
+
+void set_type(template_sel template_type, unsigned int list_length);
+SocketCAN__bcm__frame_frames_can__frame_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const SocketCAN__bcm__frame_frames_can__frame& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean get_istemplate_kind(const char* type) const;
+};
+
+class SocketCAN__bcm__frame_frames_canfd__frame : public Base_Type {
+struct recordof_setof_struct {
+int ref_count;
+int n_elements;
+Can::CANFD__frame **value_elements;
+} *val_ptr;
+
+static const Can::CANFD__frame UNBOUND_ELEM;
+private:
+friend boolean operator==(null_type null_value, const SocketCAN__bcm__frame_frames_canfd__frame& other_value);
+
+public:
+  typedef Can::CANFD__frame of_type;
+SocketCAN__bcm__frame_frames_canfd__frame();
+SocketCAN__bcm__frame_frames_canfd__frame(null_type other_value);
+SocketCAN__bcm__frame_frames_canfd__frame(const SocketCAN__bcm__frame_frames_canfd__frame& other_value);
+~SocketCAN__bcm__frame_frames_canfd__frame();
+
+void clean_up();
+SocketCAN__bcm__frame_frames_canfd__frame& operator=(null_type other_value);
+SocketCAN__bcm__frame_frames_canfd__frame& operator=(const SocketCAN__bcm__frame_frames_canfd__frame& other_value);
+
+boolean operator==(null_type other_value) const;
+boolean operator==(const SocketCAN__bcm__frame_frames_canfd__frame& other_value) const;
+inline boolean operator!=(null_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const SocketCAN__bcm__frame_frames_canfd__frame& other_value) const { return !(*this == other_value); }
+
+Can::CANFD__frame& operator[](int index_value);
+Can::CANFD__frame& operator[](const INTEGER& index_value);
+const Can::CANFD__frame& operator[](int index_value) const;
+const Can::CANFD__frame& operator[](const INTEGER& index_value) const;
+
+SocketCAN__bcm__frame_frames_canfd__frame operator<<=(int rotate_count) const;
+SocketCAN__bcm__frame_frames_canfd__frame operator<<=(const INTEGER& rotate_count) const;
+SocketCAN__bcm__frame_frames_canfd__frame operator>>=(int rotate_count) const;
+SocketCAN__bcm__frame_frames_canfd__frame operator>>=(const INTEGER& rotate_count) const;
+
+SocketCAN__bcm__frame_frames_canfd__frame operator+(const SocketCAN__bcm__frame_frames_canfd__frame& other_value) const;
+
+SocketCAN__bcm__frame_frames_canfd__frame substr(int index, int returncount) const;
+
+SocketCAN__bcm__frame_frames_canfd__frame replace(int index, int len, const SocketCAN__bcm__frame_frames_canfd__frame& repl) const;
+
+SocketCAN__bcm__frame_frames_canfd__frame replace(int index, int len, const SocketCAN__bcm__frame_frames_canfd__frame_template& repl) const;
+
+void set_size(int new_size);
+inline boolean is_bound() const {return val_ptr != NULL; }
+inline boolean is_present() const { return is_bound(); }
+boolean is_value() const;
+int size_of() const;
+int n_elem() const { return size_of(); }
+int lengthof() const;
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+};
+
+class SocketCAN__bcm__frame_frames_canfd__frame_template : public Record_Of_Template {
+union {
+struct {
+int n_elements;
+Can::CANFD__frame_template **value_elements;
+} single_value;
+struct {
+unsigned int n_values;
+SocketCAN__bcm__frame_frames_canfd__frame_template *list_value;
+} value_list;
+};
+void copy_value(const SocketCAN__bcm__frame_frames_canfd__frame& other_value);
+void copy_template(const SocketCAN__bcm__frame_frames_canfd__frame_template& other_value);
+static boolean match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy);
+
+public:
+SocketCAN__bcm__frame_frames_canfd__frame_template();
+SocketCAN__bcm__frame_frames_canfd__frame_template(template_sel other_value);
+SocketCAN__bcm__frame_frames_canfd__frame_template(null_type other_value);
+SocketCAN__bcm__frame_frames_canfd__frame_template(const SocketCAN__bcm__frame_frames_canfd__frame& other_value);
+SocketCAN__bcm__frame_frames_canfd__frame_template(const OPTIONAL<SocketCAN__bcm__frame_frames_canfd__frame>& other_value);
+SocketCAN__bcm__frame_frames_canfd__frame_template(const SocketCAN__bcm__frame_frames_canfd__frame_template& other_value);
+~SocketCAN__bcm__frame_frames_canfd__frame_template();
+
+void clean_up();
+SocketCAN__bcm__frame_frames_canfd__frame_template& operator=(template_sel other_value);
+SocketCAN__bcm__frame_frames_canfd__frame_template& operator=(null_type other_value);
+SocketCAN__bcm__frame_frames_canfd__frame_template& operator=(const SocketCAN__bcm__frame_frames_canfd__frame& other_value);
+SocketCAN__bcm__frame_frames_canfd__frame_template& operator=(const OPTIONAL<SocketCAN__bcm__frame_frames_canfd__frame>& other_value);
+SocketCAN__bcm__frame_frames_canfd__frame_template& operator=(const SocketCAN__bcm__frame_frames_canfd__frame_template& other_value);
+
+Can::CANFD__frame_template& operator[](int index_value);
+Can::CANFD__frame_template& operator[](const INTEGER& index_value);
+const Can::CANFD__frame_template& operator[](int index_value) const;
+const Can::CANFD__frame_template& operator[](const INTEGER& index_value) const;
+
+void set_size(int new_size);
+int n_elem() const;
+int size_of(boolean is_size) const;
+inline int size_of() const { return size_of(TRUE); }
+inline int lengthof() const { return size_of(FALSE); }
+boolean match(const SocketCAN__bcm__frame_frames_canfd__frame& other_value, boolean legacy = FALSE) const;
+inline boolean is_bound() const 
+  {return template_selection != UNINITIALIZED_TEMPLATE; }
+boolean is_value() const;
+SocketCAN__bcm__frame_frames_canfd__frame valueof() const;
+SocketCAN__bcm__frame_frames_canfd__frame substr(int index, int returncount) const;
+
+SocketCAN__bcm__frame_frames_canfd__frame replace(int index, int len, const SocketCAN__bcm__frame_frames_canfd__frame_template& repl) const;
+
+SocketCAN__bcm__frame_frames_canfd__frame replace(int index, int len, const SocketCAN__bcm__frame_frames_canfd__frame& repl) const;
+
+void set_type(template_sel template_type, unsigned int list_length);
+SocketCAN__bcm__frame_frames_canfd__frame_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const SocketCAN__bcm__frame_frames_canfd__frame& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean get_istemplate_kind(const char* type) const;
+};
+
+class SocketCAN__bcm__frame {
+  OCTETSTRING field_opcode;
+  BITSTRING field_flags;
+  INTEGER field_count;
+  Bcm__timeval field_ival1;
+  Bcm__timeval field_ival2;
+  OCTETSTRING field_can__id;
+  SocketCAN__bcm__frame_frames field_frames;
+public:
+  SocketCAN__bcm__frame();
+  SocketCAN__bcm__frame(const OCTETSTRING& par_opcode,
+    const BITSTRING& par_flags,
+    const INTEGER& par_count,
+    const Bcm__timeval& par_ival1,
+    const Bcm__timeval& par_ival2,
+    const OCTETSTRING& par_can__id,
+    const SocketCAN__bcm__frame_frames& par_frames);
+  SocketCAN__bcm__frame(const SocketCAN__bcm__frame& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SocketCAN__bcm__frame& operator=(const SocketCAN__bcm__frame& other_value);
+  boolean operator==(const SocketCAN__bcm__frame& other_value) const;
+  inline boolean operator!=(const SocketCAN__bcm__frame& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& opcode()
+    {return field_opcode;}
+  inline const OCTETSTRING& opcode() const
+    {return field_opcode;}
+  inline BITSTRING& flags()
+    {return field_flags;}
+  inline const BITSTRING& flags() const
+    {return field_flags;}
+  inline INTEGER& count()
+    {return field_count;}
+  inline const INTEGER& count() const
+    {return field_count;}
+  inline Bcm__timeval& ival1()
+    {return field_ival1;}
+  inline const Bcm__timeval& ival1() const
+    {return field_ival1;}
+  inline Bcm__timeval& ival2()
+    {return field_ival2;}
+  inline const Bcm__timeval& ival2() const
+    {return field_ival2;}
+  inline OCTETSTRING& can__id()
+    {return field_can__id;}
+  inline const OCTETSTRING& can__id() const
+    {return field_can__id;}
+  inline SocketCAN__bcm__frame_frames& frames()
+    {return field_frames;}
+  inline const SocketCAN__bcm__frame_frames& frames() const
+    {return field_frames;}
+  inline int size_of() const
+    {return 7;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+};
+
+class SocketCAN__bcm__frame_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SocketCAN__bcm__frame_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SocketCAN__bcm__frame& other_value);
+void copy_template(const SocketCAN__bcm__frame_template& other_value);
+
+public:
+SocketCAN__bcm__frame_template();
+SocketCAN__bcm__frame_template(template_sel other_value);
+SocketCAN__bcm__frame_template(const SocketCAN__bcm__frame& other_value);
+SocketCAN__bcm__frame_template(const OPTIONAL<SocketCAN__bcm__frame>& other_value);
+SocketCAN__bcm__frame_template(const SocketCAN__bcm__frame_template& other_value);
+~SocketCAN__bcm__frame_template();
+SocketCAN__bcm__frame_template& operator=(template_sel other_value);
+SocketCAN__bcm__frame_template& operator=(const SocketCAN__bcm__frame& other_value);
+SocketCAN__bcm__frame_template& operator=(const OPTIONAL<SocketCAN__bcm__frame>& other_value);
+SocketCAN__bcm__frame_template& operator=(const SocketCAN__bcm__frame_template& other_value);
+boolean match(const SocketCAN__bcm__frame& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SocketCAN__bcm__frame valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SocketCAN__bcm__frame_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& opcode();
+const OCTETSTRING_template& opcode() const;
+BITSTRING_template& flags();
+const BITSTRING_template& flags() const;
+INTEGER_template& count();
+const INTEGER_template& count() const;
+Bcm__timeval_template& ival1();
+const Bcm__timeval_template& ival1() const;
+Bcm__timeval_template& ival2();
+const Bcm__timeval_template& ival2() const;
+OCTETSTRING_template& can__id();
+const OCTETSTRING_template& can__id() const;
+SocketCAN__bcm__frame_frames_template& frames();
+const SocketCAN__bcm__frame_frames_template& frames() const;
+int size_of() const;
+void log() const;
+void log_match(const SocketCAN__bcm__frame& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+
+/* Function prototypes */
+
+extern boolean operator==(null_type null_value, const SocketCAN__bcm__frame_frames_can__frame& other_value);
+inline boolean operator!=(null_type null_value, const SocketCAN__bcm__frame_frames_can__frame& other_value) { return !(null_value == other_value); }
+extern boolean operator==(null_type null_value, const SocketCAN__bcm__frame_frames_canfd__frame& other_value);
+inline boolean operator!=(null_type null_value, const SocketCAN__bcm__frame_frames_canfd__frame& other_value) { return !(null_value == other_value); }
+
+/* Global variable declarations */
+
+extern const INTEGER& CAN__FRAME__MAX__NUMBER;
+extern const TTCN_Typedescriptor_t BcmFlagsBitIndex__enum_descr_;
+extern const TTCN_Typedescriptor_t BcmFlags__enum_descr_;
+extern const TTCN_Typedescriptor_t BcmOpcode__enum_descr_;
+extern const XERdescriptor_t Bcm__long_xer_;
+extern const TTCN_OERdescriptor_t Bcm__long_oer_;
+extern const TTCN_Typedescriptor_t Bcm__long_descr_;
+extern const XERdescriptor_t Bcm__timeval_tv__sec_xer_;
+extern const TTCN_OERdescriptor_t Bcm__timeval_tv__sec_oer_;
+extern const TTCN_Typedescriptor_t Bcm__timeval_tv__sec_descr_;
+extern const XERdescriptor_t Bcm__timeval_tv__usec_xer_;
+extern const TTCN_OERdescriptor_t Bcm__timeval_tv__usec_oer_;
+extern const TTCN_Typedescriptor_t Bcm__timeval_tv__usec_descr_;
+extern const TTCN_Typedescriptor_t Bcm__timeval_descr_;
+extern const XERdescriptor_t SocketCAN__bcm__frame_opcode_xer_;
+extern const TTCN_OERdescriptor_t SocketCAN__bcm__frame_opcode_oer_;
+extern const TTCN_Typedescriptor_t SocketCAN__bcm__frame_opcode_descr_;
+extern const TTCN_RAWdescriptor_t SocketCAN__bcm__frame_flags_raw_;
+extern const XERdescriptor_t SocketCAN__bcm__frame_flags_xer_;
+extern const TTCN_OERdescriptor_t SocketCAN__bcm__frame_flags_oer_;
+extern const TTCN_Typedescriptor_t SocketCAN__bcm__frame_flags_descr_;
+extern const XERdescriptor_t SocketCAN__bcm__frame_count_xer_;
+extern const TTCN_OERdescriptor_t SocketCAN__bcm__frame_count_oer_;
+extern const TTCN_Typedescriptor_t SocketCAN__bcm__frame_count_descr_;
+extern const XERdescriptor_t SocketCAN__bcm__frame_can__id_xer_;
+extern const TTCN_OERdescriptor_t SocketCAN__bcm__frame_can__id_oer_;
+extern const TTCN_Typedescriptor_t SocketCAN__bcm__frame_can__id_descr_;
+extern const TTCN_Typedescriptor_t SocketCAN__bcm__frame_frames_descr_;
+extern const TTCN_Typedescriptor_t SocketCAN__bcm__frame_frames_can__frame_descr_;
+extern const TTCN_Typedescriptor_t SocketCAN__bcm__frame_frames_canfd__frame_descr_;
+extern const TTCN_Typedescriptor_t SocketCAN__bcm__frame_descr_;
+extern TTCN_Module module_object;
+
+} /* end of namespace */
+
+#endif
diff --git a/demo/Bcm.o b/demo/Bcm.o
new file mode 100644
index 0000000..8d03bef
--- /dev/null
+++ b/demo/Bcm.o
Binary files differ
diff --git a/demo/CANFD_matrix_messages.cc b/demo/CANFD_matrix_messages.cc
new file mode 100644
index 0000000..d82a425
--- /dev/null
+++ b/demo/CANFD_matrix_messages.cc
@@ -0,0 +1,6625 @@
+// This C++ source file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+/* Including header files */
+
+#include "CANFD_matrix_messages.hh"
+
+namespace CANFD__matrix__messages {
+
+/* Prototypes of static functions */
+
+static void pre_init_module();
+static void post_init_module();
+
+/* Literal string constants */
+
+static const unsigned char os_0_octets[] = { 0, 0, 1, 34 },
+os_1_octets[] = { 0, 0, 1, 35 },
+os_2_octets[] = { 0, 0, 1, 36 },
+os_3_octets[] = { 0, 0, 1, 37 },
+os_4_octets[] = { 128, 0, 0, 1 };
+static const OCTETSTRING os_0(4, os_0_octets),
+os_1(4, os_1_octets),
+os_2(4, os_2_octets),
+os_3(4, os_3_octets),
+os_4(4, os_4_octets);
+static const unsigned char module_checksum[] = { 0x23, 0x12, 0x87, 0x6a, 0xa7, 0xe1, 0xed, 0x39, 0xe3, 0x5a, 0xcf, 0xde, 0x64, 0xd8, 0x44, 0x22 };
+
+/* Global variable definitions */
+
+const TTCN_RAWdescriptor_t CANFD__MESSAGE__TESTFRAME0__msg__type_test__sig__11__bit__bitstring__lsb__coded_raw_ = {11,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,11,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       CANFD__MESSAGE__TESTFRAME0__msg__type_test__sig__11__bit__bitstring__lsb__coded_xer_ = { {"test_sig_11_bit_bitstring_lsb_coded>\n", "test_sig_11_bit_bitstring_lsb_coded>\n"}, {37, 37}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t CANFD__MESSAGE__TESTFRAME0__msg__type_test__sig__11__bit__bitstring__lsb__coded_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t CANFD__MESSAGE__TESTFRAME0__msg__type_test__sig__11__bit__bitstring__lsb__coded_descr_ = { "@CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME0_msg_type.test_sig_11_bit_bitstring_lsb_coded", &BITSTRING_ber_, &CANFD__MESSAGE__TESTFRAME0__msg__type_test__sig__11__bit__bitstring__lsb__coded_raw_, NULL, &CANFD__MESSAGE__TESTFRAME0__msg__type_test__sig__11__bit__bitstring__lsb__coded_xer_, &BITSTRING_json_, &CANFD__MESSAGE__TESTFRAME0__msg__type_test__sig__11__bit__bitstring__lsb__coded_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CANFD__MESSAGE__TESTFRAME0__msg__type_test__sig__5__bit__bitstring__lsb__coded_raw_ = {5,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,5,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       CANFD__MESSAGE__TESTFRAME0__msg__type_test__sig__5__bit__bitstring__lsb__coded_xer_ = { {"test_sig_5_bit_bitstring_lsb_coded>\n", "test_sig_5_bit_bitstring_lsb_coded>\n"}, {36, 36}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t CANFD__MESSAGE__TESTFRAME0__msg__type_test__sig__5__bit__bitstring__lsb__coded_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t CANFD__MESSAGE__TESTFRAME0__msg__type_test__sig__5__bit__bitstring__lsb__coded_descr_ = { "@CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME0_msg_type.test_sig_5_bit_bitstring_lsb_coded", &BITSTRING_ber_, &CANFD__MESSAGE__TESTFRAME0__msg__type_test__sig__5__bit__bitstring__lsb__coded_raw_, NULL, &CANFD__MESSAGE__TESTFRAME0__msg__type_test__sig__5__bit__bitstring__lsb__coded_xer_, &BITSTRING_json_, &CANFD__MESSAGE__TESTFRAME0__msg__type_test__sig__5__bit__bitstring__lsb__coded_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CANFD__MESSAGE__TESTFRAME0__msg__type_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,NULL,false};
+// No XER for CANFD__MESSAGE__TESTFRAME0__msg__type
+const TTCN_Typedescriptor_t CANFD__MESSAGE__TESTFRAME0__msg__type_descr_ = { "@CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME0_msg_type", NULL, &CANFD__MESSAGE__TESTFRAME0__msg__type_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CANFD__MESSAGE__TESTFRAME1__msg__type_test__sig__11__bit__bitstring__msb__coded_raw_ = {11,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_MSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,11,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       CANFD__MESSAGE__TESTFRAME1__msg__type_test__sig__11__bit__bitstring__msb__coded_xer_ = { {"test_sig_11_bit_bitstring_msb_coded>\n", "test_sig_11_bit_bitstring_msb_coded>\n"}, {37, 37}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t CANFD__MESSAGE__TESTFRAME1__msg__type_test__sig__11__bit__bitstring__msb__coded_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t CANFD__MESSAGE__TESTFRAME1__msg__type_test__sig__11__bit__bitstring__msb__coded_descr_ = { "@CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME1_msg_type.test_sig_11_bit_bitstring_msb_coded", &BITSTRING_ber_, &CANFD__MESSAGE__TESTFRAME1__msg__type_test__sig__11__bit__bitstring__msb__coded_raw_, NULL, &CANFD__MESSAGE__TESTFRAME1__msg__type_test__sig__11__bit__bitstring__msb__coded_xer_, &BITSTRING_json_, &CANFD__MESSAGE__TESTFRAME1__msg__type_test__sig__11__bit__bitstring__msb__coded_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CANFD__MESSAGE__TESTFRAME1__msg__type_test__sig__5__bit__bitstring__msb__coded_raw_ = {5,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_MSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,5,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       CANFD__MESSAGE__TESTFRAME1__msg__type_test__sig__5__bit__bitstring__msb__coded_xer_ = { {"test_sig_5_bit_bitstring_msb_coded>\n", "test_sig_5_bit_bitstring_msb_coded>\n"}, {36, 36}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t CANFD__MESSAGE__TESTFRAME1__msg__type_test__sig__5__bit__bitstring__msb__coded_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t CANFD__MESSAGE__TESTFRAME1__msg__type_test__sig__5__bit__bitstring__msb__coded_descr_ = { "@CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME1_msg_type.test_sig_5_bit_bitstring_msb_coded", &BITSTRING_ber_, &CANFD__MESSAGE__TESTFRAME1__msg__type_test__sig__5__bit__bitstring__msb__coded_raw_, NULL, &CANFD__MESSAGE__TESTFRAME1__msg__type_test__sig__5__bit__bitstring__msb__coded_xer_, &BITSTRING_json_, &CANFD__MESSAGE__TESTFRAME1__msg__type_test__sig__5__bit__bitstring__msb__coded_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CANFD__MESSAGE__TESTFRAME1__msg__type_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,NULL,false};
+// No XER for CANFD__MESSAGE__TESTFRAME1__msg__type
+const TTCN_Typedescriptor_t CANFD__MESSAGE__TESTFRAME1__msg__type_descr_ = { "@CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME1_msg_type", NULL, &CANFD__MESSAGE__TESTFRAME1__msg__type_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CANFD__MESSAGE__TESTFRAME2__msg__type_test__sig__11__bit__integer__msb__coded_raw_ = {11,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_MSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       CANFD__MESSAGE__TESTFRAME2__msg__type_test__sig__11__bit__integer__msb__coded_xer_ = { {"test_sig_11_bit_integer_msb_coded>\n", "test_sig_11_bit_integer_msb_coded>\n"}, {35, 35}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t CANFD__MESSAGE__TESTFRAME2__msg__type_test__sig__11__bit__integer__msb__coded_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t CANFD__MESSAGE__TESTFRAME2__msg__type_test__sig__11__bit__integer__msb__coded_descr_ = { "@CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME2_msg_type.test_sig_11_bit_integer_msb_coded", &INTEGER_ber_, &CANFD__MESSAGE__TESTFRAME2__msg__type_test__sig__11__bit__integer__msb__coded_raw_, &INTEGER_text_, &CANFD__MESSAGE__TESTFRAME2__msg__type_test__sig__11__bit__integer__msb__coded_xer_, &INTEGER_json_, &CANFD__MESSAGE__TESTFRAME2__msg__type_test__sig__11__bit__integer__msb__coded_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CANFD__MESSAGE__TESTFRAME2__msg__type_test__sig__5__bit__integer__msb__coded_raw_ = {5,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_MSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       CANFD__MESSAGE__TESTFRAME2__msg__type_test__sig__5__bit__integer__msb__coded_xer_ = { {"test_sig_5_bit_integer_msb_coded>\n", "test_sig_5_bit_integer_msb_coded>\n"}, {34, 34}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t CANFD__MESSAGE__TESTFRAME2__msg__type_test__sig__5__bit__integer__msb__coded_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t CANFD__MESSAGE__TESTFRAME2__msg__type_test__sig__5__bit__integer__msb__coded_descr_ = { "@CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME2_msg_type.test_sig_5_bit_integer_msb_coded", &INTEGER_ber_, &CANFD__MESSAGE__TESTFRAME2__msg__type_test__sig__5__bit__integer__msb__coded_raw_, &INTEGER_text_, &CANFD__MESSAGE__TESTFRAME2__msg__type_test__sig__5__bit__integer__msb__coded_xer_, &INTEGER_json_, &CANFD__MESSAGE__TESTFRAME2__msg__type_test__sig__5__bit__integer__msb__coded_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CANFD__MESSAGE__TESTFRAME2__msg__type_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,NULL,false};
+// No XER for CANFD__MESSAGE__TESTFRAME2__msg__type
+const TTCN_Typedescriptor_t CANFD__MESSAGE__TESTFRAME2__msg__type_descr_ = { "@CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME2_msg_type", NULL, &CANFD__MESSAGE__TESTFRAME2__msg__type_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       CANFD__MESSAGE__TESTFRAME3__msg__type_test__sig__1__byte__octetstring__msb__coded_xer_ = { {"test_sig_1_byte_octetstring_msb_coded>\n", "test_sig_1_byte_octetstring_msb_coded>\n"}, {39, 39}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int CANFD__MESSAGE__TESTFRAME3__msg__type_test__sig__1__byte__octetstring__msb__coded_oer_ext_arr_[0] = {};
+const int CANFD__MESSAGE__TESTFRAME3__msg__type_test__sig__1__byte__octetstring__msb__coded_oer_p_[0] = {};
+const TTCN_OERdescriptor_t CANFD__MESSAGE__TESTFRAME3__msg__type_test__sig__1__byte__octetstring__msb__coded_oer_ = { -1, TRUE, 1, FALSE, 0, 0, CANFD__MESSAGE__TESTFRAME3__msg__type_test__sig__1__byte__octetstring__msb__coded_oer_ext_arr_, 0, CANFD__MESSAGE__TESTFRAME3__msg__type_test__sig__1__byte__octetstring__msb__coded_oer_p_};
+const TTCN_Typedescriptor_t CANFD__MESSAGE__TESTFRAME3__msg__type_test__sig__1__byte__octetstring__msb__coded_descr_ = { "@CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME3_msg_type.test_sig_1_byte_octetstring_msb_coded", &OCTETSTRING_ber_, &CAN__matrix__signals::OCT1__signal__type_raw_, &OCTETSTRING_text_, &CANFD__MESSAGE__TESTFRAME3__msg__type_test__sig__1__byte__octetstring__msb__coded_xer_, &OCTETSTRING_json_, &CANFD__MESSAGE__TESTFRAME3__msg__type_test__sig__1__byte__octetstring__msb__coded_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       CANFD__MESSAGE__TESTFRAME3__msg__type_test__sig__2__byte__octetstring__msb__coded_xer_ = { {"test_sig_2_byte_octetstring_msb_coded>\n", "test_sig_2_byte_octetstring_msb_coded>\n"}, {39, 39}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int CANFD__MESSAGE__TESTFRAME3__msg__type_test__sig__2__byte__octetstring__msb__coded_oer_ext_arr_[0] = {};
+const int CANFD__MESSAGE__TESTFRAME3__msg__type_test__sig__2__byte__octetstring__msb__coded_oer_p_[0] = {};
+const TTCN_OERdescriptor_t CANFD__MESSAGE__TESTFRAME3__msg__type_test__sig__2__byte__octetstring__msb__coded_oer_ = { -1, TRUE, 2, FALSE, 0, 0, CANFD__MESSAGE__TESTFRAME3__msg__type_test__sig__2__byte__octetstring__msb__coded_oer_ext_arr_, 0, CANFD__MESSAGE__TESTFRAME3__msg__type_test__sig__2__byte__octetstring__msb__coded_oer_p_};
+const TTCN_Typedescriptor_t CANFD__MESSAGE__TESTFRAME3__msg__type_test__sig__2__byte__octetstring__msb__coded_descr_ = { "@CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME3_msg_type.test_sig_2_byte_octetstring_msb_coded", &OCTETSTRING_ber_, &CAN__matrix__signals::OCT2__signal__type_raw_, &OCTETSTRING_text_, &CANFD__MESSAGE__TESTFRAME3__msg__type_test__sig__2__byte__octetstring__msb__coded_xer_, &OCTETSTRING_json_, &CANFD__MESSAGE__TESTFRAME3__msg__type_test__sig__2__byte__octetstring__msb__coded_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CANFD__MESSAGE__TESTFRAME3__msg__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,NULL,false};
+// No XER for CANFD__MESSAGE__TESTFRAME3__msg__type
+const TTCN_Typedescriptor_t CANFD__MESSAGE__TESTFRAME3__msg__type_descr_ = { "@CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME3_msg_type", NULL, &CANFD__MESSAGE__TESTFRAME3__msg__type_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_test__sig__2__byte__octetstring__msb__coded_xer_ = { {"test_sig_2_byte_octetstring_msb_coded>\n", "test_sig_2_byte_octetstring_msb_coded>\n"}, {39, 39}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_test__sig__2__byte__octetstring__msb__coded_oer_ext_arr_[0] = {};
+const int CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_test__sig__2__byte__octetstring__msb__coded_oer_p_[0] = {};
+const TTCN_OERdescriptor_t CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_test__sig__2__byte__octetstring__msb__coded_oer_ = { -1, TRUE, 2, FALSE, 0, 0, CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_test__sig__2__byte__octetstring__msb__coded_oer_ext_arr_, 0, CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_test__sig__2__byte__octetstring__msb__coded_oer_p_};
+const TTCN_Typedescriptor_t CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_test__sig__2__byte__octetstring__msb__coded_descr_ = { "@CANFD_matrix_messages.CANFD_MESSAGE_EXTENDEDFRAME1_msg_type.test_sig_2_byte_octetstring_msb_coded", &OCTETSTRING_ber_, &CAN__matrix__signals::OCT2__signal__type_raw_, &OCTETSTRING_text_, &CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_test__sig__2__byte__octetstring__msb__coded_xer_, &OCTETSTRING_json_, &CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_test__sig__2__byte__octetstring__msb__coded_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CANFD__MESSAGE__EXTENDEDFRAME1__msg__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,NULL,false};
+// No XER for CANFD__MESSAGE__EXTENDEDFRAME1__msg__type
+const TTCN_Typedescriptor_t CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_descr_ = { "@CANFD_matrix_messages.CANFD_MESSAGE_EXTENDEDFRAME1_msg_type", NULL, &CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CANFD__MatrixPayloadUnion_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for CANFD__MatrixPayloadUnion
+const TTCN_Typedescriptor_t CANFD__MatrixPayloadUnion_descr_ = { "@CANFD_matrix_messages.CANFD_MatrixPayloadUnion", NULL, &CANFD__MatrixPayloadUnion_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       CANFD__MatrixUnion_can__id_xer_ = { {"can_id>\n", "can_id>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int CANFD__MatrixUnion_can__id_oer_ext_arr_[0] = {};
+const int CANFD__MatrixUnion_can__id_oer_p_[0] = {};
+const TTCN_OERdescriptor_t CANFD__MatrixUnion_can__id_oer_ = { -1, TRUE, 4, FALSE, 0, 0, CANFD__MatrixUnion_can__id_oer_ext_arr_, 0, CANFD__MatrixUnion_can__id_oer_p_};
+const TTCN_Typedescriptor_t CANFD__MatrixUnion_can__id_descr_ = { "@CANFD_matrix_messages.CANFD_MatrixUnion.can_id", &OCTETSTRING_ber_, &Can::CAN__id_raw_, &OCTETSTRING_text_, &CANFD__MatrixUnion_can__id_xer_, &OCTETSTRING_json_, &CANFD__MatrixUnion_can__id_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       CANFD__MatrixUnion_can__flags_xer_ = { {"can_flags>\n", "can_flags>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t CANFD__MatrixUnion_can__flags_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t CANFD__MatrixUnion_can__flags_descr_ = { "@CANFD_matrix_messages.CANFD_MatrixUnion.can_flags", &BITSTRING_ber_, &Can::CAN__flags_raw_, NULL, &CANFD__MatrixUnion_can__flags_xer_, &BITSTRING_json_, &CANFD__MatrixUnion_can__flags_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CANFD__MatrixUnion_can__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,NULL,false};
+// No XER for CANFD__MatrixUnion_can__pdu
+const TTCN_Typedescriptor_t CANFD__MatrixUnion_can__pdu_descr_ = { "@CANFD_matrix_messages.CANFD_MatrixUnion.can_pdu", NULL, &CANFD__MatrixUnion_can__pdu_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CANFD__MatrixUnion_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for CANFD__MatrixUnion
+const TTCN_Typedescriptor_t CANFD__MatrixUnion_descr_ = { "@CANFD_matrix_messages.CANFD_MatrixUnion", NULL, &CANFD__MatrixUnion_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+TTCN_Module module_object("CANFD_matrix_messages", __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);
+
+static const RuntimeVersionChecker ver_checker(  current_runtime_version.requires_major_version_6,
+  current_runtime_version.requires_minor_version_6,
+  current_runtime_version.requires_patch_level_0,  current_runtime_version.requires_runtime_1);
+
+/* Member functions of C++ classes */
+
+CANFD__MESSAGE__TESTFRAME0__msg__type::CANFD__MESSAGE__TESTFRAME0__msg__type()
+{
+}
+
+CANFD__MESSAGE__TESTFRAME0__msg__type::CANFD__MESSAGE__TESTFRAME0__msg__type(const BITSTRING& par_test__sig__11__bit__bitstring__lsb__coded,
+    const BITSTRING& par_test__sig__5__bit__bitstring__lsb__coded)
+  :   field_test__sig__11__bit__bitstring__lsb__coded(par_test__sig__11__bit__bitstring__lsb__coded),
+  field_test__sig__5__bit__bitstring__lsb__coded(par_test__sig__5__bit__bitstring__lsb__coded)
+{
+}
+
+CANFD__MESSAGE__TESTFRAME0__msg__type::CANFD__MESSAGE__TESTFRAME0__msg__type(const CANFD__MESSAGE__TESTFRAME0__msg__type& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME0_msg_type.");
+if (other_value.test__sig__11__bit__bitstring__lsb__coded().is_bound()) field_test__sig__11__bit__bitstring__lsb__coded = other_value.test__sig__11__bit__bitstring__lsb__coded();
+else field_test__sig__11__bit__bitstring__lsb__coded.clean_up();
+if (other_value.test__sig__5__bit__bitstring__lsb__coded().is_bound()) field_test__sig__5__bit__bitstring__lsb__coded = other_value.test__sig__5__bit__bitstring__lsb__coded();
+else field_test__sig__5__bit__bitstring__lsb__coded.clean_up();
+}
+
+void CANFD__MESSAGE__TESTFRAME0__msg__type::clean_up()
+{
+field_test__sig__11__bit__bitstring__lsb__coded.clean_up();
+field_test__sig__5__bit__bitstring__lsb__coded.clean_up();
+}
+
+const TTCN_Typedescriptor_t* CANFD__MESSAGE__TESTFRAME0__msg__type::get_descriptor() const { return &CANFD__MESSAGE__TESTFRAME0__msg__type_descr_; }
+CANFD__MESSAGE__TESTFRAME0__msg__type& CANFD__MESSAGE__TESTFRAME0__msg__type::operator=(const CANFD__MESSAGE__TESTFRAME0__msg__type& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME0_msg_type.");
+  if (other_value.test__sig__11__bit__bitstring__lsb__coded().is_bound()) field_test__sig__11__bit__bitstring__lsb__coded = other_value.test__sig__11__bit__bitstring__lsb__coded();
+  else field_test__sig__11__bit__bitstring__lsb__coded.clean_up();
+  if (other_value.test__sig__5__bit__bitstring__lsb__coded().is_bound()) field_test__sig__5__bit__bitstring__lsb__coded = other_value.test__sig__5__bit__bitstring__lsb__coded();
+  else field_test__sig__5__bit__bitstring__lsb__coded.clean_up();
+}
+return *this;
+}
+
+boolean CANFD__MESSAGE__TESTFRAME0__msg__type::operator==(const CANFD__MESSAGE__TESTFRAME0__msg__type& other_value) const
+{
+return field_test__sig__11__bit__bitstring__lsb__coded==other_value.field_test__sig__11__bit__bitstring__lsb__coded
+  && field_test__sig__5__bit__bitstring__lsb__coded==other_value.field_test__sig__5__bit__bitstring__lsb__coded;
+}
+
+boolean CANFD__MESSAGE__TESTFRAME0__msg__type::is_bound() const
+{
+return (field_test__sig__11__bit__bitstring__lsb__coded.is_bound())
+  || (field_test__sig__5__bit__bitstring__lsb__coded.is_bound());
+}
+boolean CANFD__MESSAGE__TESTFRAME0__msg__type::is_value() const
+{
+return field_test__sig__11__bit__bitstring__lsb__coded.is_value()
+  && field_test__sig__5__bit__bitstring__lsb__coded.is_value();
+}
+void CANFD__MESSAGE__TESTFRAME0__msg__type::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ test_sig_11_bit_bitstring_lsb_coded := ");
+field_test__sig__11__bit__bitstring__lsb__coded.log();
+TTCN_Logger::log_event_str(", test_sig_5_bit_bitstring_lsb_coded := ");
+field_test__sig__5__bit__bitstring__lsb__coded.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void CANFD__MESSAGE__TESTFRAME0__msg__type::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 @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME0_msg_type 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) test__sig__11__bit__bitstring__lsb__coded().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) test__sig__5__bit__bitstring__lsb__coded().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(), "test_sig_11_bit_bitstring_lsb_coded")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          test__sig__11__bit__bitstring__lsb__coded().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(), "test_sig_5_bit_bitstring_lsb_coded")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          test__sig__5__bit__bitstring__lsb__coded().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 @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME0_msg_type: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME0_msg_type");
+  }
+}
+
+void CANFD__MESSAGE__TESTFRAME0__msg__type::set_implicit_omit()
+{
+if (test__sig__11__bit__bitstring__lsb__coded().is_bound()) test__sig__11__bit__bitstring__lsb__coded().set_implicit_omit();
+if (test__sig__5__bit__bitstring__lsb__coded().is_bound()) test__sig__5__bit__bitstring__lsb__coded().set_implicit_omit();
+}
+
+void CANFD__MESSAGE__TESTFRAME0__msg__type::encode_text(Text_Buf& text_buf) const
+{
+field_test__sig__11__bit__bitstring__lsb__coded.encode_text(text_buf);
+field_test__sig__5__bit__bitstring__lsb__coded.encode_text(text_buf);
+}
+
+void CANFD__MESSAGE__TESTFRAME0__msg__type::decode_text(Text_Buf& text_buf)
+{
+field_test__sig__11__bit__bitstring__lsb__coded.decode_text(text_buf);
+field_test__sig__5__bit__bitstring__lsb__coded.decode_text(text_buf);
+}
+
+void CANFD__MESSAGE__TESTFRAME0__msg__type::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void CANFD__MESSAGE__TESTFRAME0__msg__type::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int CANFD__MESSAGE__TESTFRAME0__msg__type::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, CANFD__MESSAGE__TESTFRAME0__msg__type_test__sig__11__bit__bitstring__lsb__coded_descr_.raw->forceomit);
+  decoded_field_length = field_test__sig__11__bit__bitstring__lsb__coded.RAW_decode(CANFD__MESSAGE__TESTFRAME0__msg__type_test__sig__11__bit__bitstring__lsb__coded_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, CANFD__MESSAGE__TESTFRAME0__msg__type_test__sig__5__bit__bitstring__lsb__coded_descr_.raw->forceomit);
+  decoded_field_length = field_test__sig__5__bit__bitstring__lsb__coded.RAW_decode(CANFD__MESSAGE__TESTFRAME0__msg__type_test__sig__5__bit__bitstring__lsb__coded_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 CANFD__MESSAGE__TESTFRAME0__msg__type::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, CANFD__MESSAGE__TESTFRAME0__msg__type_test__sig__11__bit__bitstring__lsb__coded_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, CANFD__MESSAGE__TESTFRAME0__msg__type_test__sig__5__bit__bitstring__lsb__coded_descr_.raw);
+  encoded_length += field_test__sig__11__bit__bitstring__lsb__coded.RAW_encode(CANFD__MESSAGE__TESTFRAME0__msg__type_test__sig__11__bit__bitstring__lsb__coded_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_test__sig__5__bit__bitstring__lsb__coded.RAW_encode(CANFD__MESSAGE__TESTFRAME0__msg__type_test__sig__5__bit__bitstring__lsb__coded_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct CANFD__MESSAGE__TESTFRAME0__msg__type_template::single_value_struct {
+BITSTRING_template field_test__sig__11__bit__bitstring__lsb__coded;
+BITSTRING_template field_test__sig__5__bit__bitstring__lsb__coded;
+};
+
+void CANFD__MESSAGE__TESTFRAME0__msg__type_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_test__sig__11__bit__bitstring__lsb__coded = ANY_VALUE;
+single_value->field_test__sig__5__bit__bitstring__lsb__coded = ANY_VALUE;
+}
+}
+}
+
+void CANFD__MESSAGE__TESTFRAME0__msg__type_template::copy_value(const CANFD__MESSAGE__TESTFRAME0__msg__type& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.test__sig__11__bit__bitstring__lsb__coded().is_bound()) {
+  single_value->field_test__sig__11__bit__bitstring__lsb__coded = other_value.test__sig__11__bit__bitstring__lsb__coded();
+} else {
+  single_value->field_test__sig__11__bit__bitstring__lsb__coded.clean_up();
+}
+if (other_value.test__sig__5__bit__bitstring__lsb__coded().is_bound()) {
+  single_value->field_test__sig__5__bit__bitstring__lsb__coded = other_value.test__sig__5__bit__bitstring__lsb__coded();
+} else {
+  single_value->field_test__sig__5__bit__bitstring__lsb__coded.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void CANFD__MESSAGE__TESTFRAME0__msg__type_template::copy_template(const CANFD__MESSAGE__TESTFRAME0__msg__type_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.test__sig__11__bit__bitstring__lsb__coded().get_selection()) {
+single_value->field_test__sig__11__bit__bitstring__lsb__coded = other_value.test__sig__11__bit__bitstring__lsb__coded();
+} else {
+single_value->field_test__sig__11__bit__bitstring__lsb__coded.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.test__sig__5__bit__bitstring__lsb__coded().get_selection()) {
+single_value->field_test__sig__5__bit__bitstring__lsb__coded = other_value.test__sig__5__bit__bitstring__lsb__coded();
+} else {
+single_value->field_test__sig__5__bit__bitstring__lsb__coded.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new CANFD__MESSAGE__TESTFRAME0__msg__type_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME0_msg_type.");
+break;
+}
+set_selection(other_value);
+}
+
+CANFD__MESSAGE__TESTFRAME0__msg__type_template::CANFD__MESSAGE__TESTFRAME0__msg__type_template()
+{
+}
+
+CANFD__MESSAGE__TESTFRAME0__msg__type_template::CANFD__MESSAGE__TESTFRAME0__msg__type_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+CANFD__MESSAGE__TESTFRAME0__msg__type_template::CANFD__MESSAGE__TESTFRAME0__msg__type_template(const CANFD__MESSAGE__TESTFRAME0__msg__type& other_value)
+{
+copy_value(other_value);
+}
+
+CANFD__MESSAGE__TESTFRAME0__msg__type_template::CANFD__MESSAGE__TESTFRAME0__msg__type_template(const OPTIONAL<CANFD__MESSAGE__TESTFRAME0__msg__type>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CANFD__MESSAGE__TESTFRAME0__msg__type&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME0_msg_type from an unbound optional field.");
+}
+}
+
+CANFD__MESSAGE__TESTFRAME0__msg__type_template::CANFD__MESSAGE__TESTFRAME0__msg__type_template(const CANFD__MESSAGE__TESTFRAME0__msg__type_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+CANFD__MESSAGE__TESTFRAME0__msg__type_template::~CANFD__MESSAGE__TESTFRAME0__msg__type_template()
+{
+clean_up();
+}
+
+CANFD__MESSAGE__TESTFRAME0__msg__type_template& CANFD__MESSAGE__TESTFRAME0__msg__type_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+CANFD__MESSAGE__TESTFRAME0__msg__type_template& CANFD__MESSAGE__TESTFRAME0__msg__type_template::operator=(const CANFD__MESSAGE__TESTFRAME0__msg__type& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+CANFD__MESSAGE__TESTFRAME0__msg__type_template& CANFD__MESSAGE__TESTFRAME0__msg__type_template::operator=(const OPTIONAL<CANFD__MESSAGE__TESTFRAME0__msg__type>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CANFD__MESSAGE__TESTFRAME0__msg__type&)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 @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME0_msg_type.");
+}
+return *this;
+}
+
+CANFD__MESSAGE__TESTFRAME0__msg__type_template& CANFD__MESSAGE__TESTFRAME0__msg__type_template::operator=(const CANFD__MESSAGE__TESTFRAME0__msg__type_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean CANFD__MESSAGE__TESTFRAME0__msg__type_template::match(const CANFD__MESSAGE__TESTFRAME0__msg__type& 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.test__sig__11__bit__bitstring__lsb__coded().is_bound()) return FALSE;
+if(!single_value->field_test__sig__11__bit__bitstring__lsb__coded.match(other_value.test__sig__11__bit__bitstring__lsb__coded(), legacy))return FALSE;
+if(!other_value.test__sig__5__bit__bitstring__lsb__coded().is_bound()) return FALSE;
+if(!single_value->field_test__sig__5__bit__bitstring__lsb__coded.match(other_value.test__sig__5__bit__bitstring__lsb__coded(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME0_msg_type.");
+}
+return FALSE;
+}
+
+boolean CANFD__MESSAGE__TESTFRAME0__msg__type_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_test__sig__11__bit__bitstring__lsb__coded.is_bound()
+
+ ||single_value->field_test__sig__5__bit__bitstring__lsb__coded.is_bound()
+;
+}
+
+boolean CANFD__MESSAGE__TESTFRAME0__msg__type_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_test__sig__11__bit__bitstring__lsb__coded.is_value()
+ &&single_value->field_test__sig__5__bit__bitstring__lsb__coded.is_value();
+}
+
+void CANFD__MESSAGE__TESTFRAME0__msg__type_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+CANFD__MESSAGE__TESTFRAME0__msg__type CANFD__MESSAGE__TESTFRAME0__msg__type_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 @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME0_msg_type.");
+CANFD__MESSAGE__TESTFRAME0__msg__type ret_val;
+if (single_value->field_test__sig__11__bit__bitstring__lsb__coded.is_bound()) {
+ret_val.test__sig__11__bit__bitstring__lsb__coded() = single_value->field_test__sig__11__bit__bitstring__lsb__coded.valueof();
+}
+if (single_value->field_test__sig__5__bit__bitstring__lsb__coded.is_bound()) {
+ret_val.test__sig__5__bit__bitstring__lsb__coded() = single_value->field_test__sig__5__bit__bitstring__lsb__coded.valueof();
+}
+return ret_val;
+}
+
+void CANFD__MESSAGE__TESTFRAME0__msg__type_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME0_msg_type.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new CANFD__MESSAGE__TESTFRAME0__msg__type_template[list_length];
+}
+
+CANFD__MESSAGE__TESTFRAME0__msg__type_template& CANFD__MESSAGE__TESTFRAME0__msg__type_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME0_msg_type.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME0_msg_type.");
+return value_list.list_value[list_index];
+}
+
+BITSTRING_template& CANFD__MESSAGE__TESTFRAME0__msg__type_template::test__sig__11__bit__bitstring__lsb__coded()
+{
+set_specific();
+return single_value->field_test__sig__11__bit__bitstring__lsb__coded;
+}
+
+const BITSTRING_template& CANFD__MESSAGE__TESTFRAME0__msg__type_template::test__sig__11__bit__bitstring__lsb__coded() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field test_sig_11_bit_bitstring_lsb_coded of a non-specific template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME0_msg_type.");
+return single_value->field_test__sig__11__bit__bitstring__lsb__coded;
+}
+
+BITSTRING_template& CANFD__MESSAGE__TESTFRAME0__msg__type_template::test__sig__5__bit__bitstring__lsb__coded()
+{
+set_specific();
+return single_value->field_test__sig__5__bit__bitstring__lsb__coded;
+}
+
+const BITSTRING_template& CANFD__MESSAGE__TESTFRAME0__msg__type_template::test__sig__5__bit__bitstring__lsb__coded() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field test_sig_5_bit_bitstring_lsb_coded of a non-specific template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME0_msg_type.");
+return single_value->field_test__sig__5__bit__bitstring__lsb__coded;
+}
+
+int CANFD__MESSAGE__TESTFRAME0__msg__type_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME0_msg_type 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 @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME0_msg_type 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 @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME0_msg_type containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME0_msg_type containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME0_msg_type containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME0_msg_type containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME0_msg_type.");
+  }
+  return 0;
+}
+
+void CANFD__MESSAGE__TESTFRAME0__msg__type_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ test_sig_11_bit_bitstring_lsb_coded := ");
+single_value->field_test__sig__11__bit__bitstring__lsb__coded.log();
+TTCN_Logger::log_event_str(", test_sig_5_bit_bitstring_lsb_coded := ");
+single_value->field_test__sig__5__bit__bitstring__lsb__coded.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void CANFD__MESSAGE__TESTFRAME0__msg__type_template::log_match(const CANFD__MESSAGE__TESTFRAME0__msg__type& 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_test__sig__11__bit__bitstring__lsb__coded.match(match_value.test__sig__11__bit__bitstring__lsb__coded(), legacy)){
+TTCN_Logger::log_logmatch_info(".test_sig_11_bit_bitstring_lsb_coded");
+single_value->field_test__sig__11__bit__bitstring__lsb__coded.log_match(match_value.test__sig__11__bit__bitstring__lsb__coded(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_test__sig__5__bit__bitstring__lsb__coded.match(match_value.test__sig__5__bit__bitstring__lsb__coded(), legacy)){
+TTCN_Logger::log_logmatch_info(".test_sig_5_bit_bitstring_lsb_coded");
+single_value->field_test__sig__5__bit__bitstring__lsb__coded.log_match(match_value.test__sig__5__bit__bitstring__lsb__coded(), 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("{ test_sig_11_bit_bitstring_lsb_coded := ");
+single_value->field_test__sig__11__bit__bitstring__lsb__coded.log_match(match_value.test__sig__11__bit__bitstring__lsb__coded(), legacy);
+TTCN_Logger::log_event_str(", test_sig_5_bit_bitstring_lsb_coded := ");
+single_value->field_test__sig__5__bit__bitstring__lsb__coded.log_match(match_value.test__sig__5__bit__bitstring__lsb__coded(), 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 CANFD__MESSAGE__TESTFRAME0__msg__type_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_test__sig__11__bit__bitstring__lsb__coded.encode_text(text_buf);
+single_value->field_test__sig__5__bit__bitstring__lsb__coded.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 @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME0_msg_type.");
+}
+}
+
+void CANFD__MESSAGE__TESTFRAME0__msg__type_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_test__sig__11__bit__bitstring__lsb__coded.decode_text(text_buf);
+single_value->field_test__sig__5__bit__bitstring__lsb__coded.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 CANFD__MESSAGE__TESTFRAME0__msg__type_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 @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME0_msg_type.");
+}
+}
+
+void CANFD__MESSAGE__TESTFRAME0__msg__type_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: {
+    CANFD__MESSAGE__TESTFRAME0__msg__type_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME0_msg_type 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) test__sig__11__bit__bitstring__lsb__coded().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) test__sig__5__bit__bitstring__lsb__coded().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(), "test_sig_11_bit_bitstring_lsb_coded")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          test__sig__11__bit__bitstring__lsb__coded().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(), "test_sig_5_bit_bitstring_lsb_coded")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          test__sig__5__bit__bitstring__lsb__coded().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 @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME0_msg_type: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME0_msg_type");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void CANFD__MESSAGE__TESTFRAME0__msg__type_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_test__sig__11__bit__bitstring__lsb__coded.check_restriction(t_res, t_name ? t_name : "@CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME0_msg_type");
+single_value->field_test__sig__5__bit__bitstring__lsb__coded.check_restriction(t_res, t_name ? t_name : "@CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME0_msg_type");
+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 : "@CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME0_msg_type");
+}
+
+boolean CANFD__MESSAGE__TESTFRAME0__msg__type_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean CANFD__MESSAGE__TESTFRAME0__msg__type_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+CANFD__MESSAGE__TESTFRAME1__msg__type::CANFD__MESSAGE__TESTFRAME1__msg__type()
+{
+}
+
+CANFD__MESSAGE__TESTFRAME1__msg__type::CANFD__MESSAGE__TESTFRAME1__msg__type(const BITSTRING& par_test__sig__11__bit__bitstring__msb__coded,
+    const BITSTRING& par_test__sig__5__bit__bitstring__msb__coded)
+  :   field_test__sig__11__bit__bitstring__msb__coded(par_test__sig__11__bit__bitstring__msb__coded),
+  field_test__sig__5__bit__bitstring__msb__coded(par_test__sig__5__bit__bitstring__msb__coded)
+{
+}
+
+CANFD__MESSAGE__TESTFRAME1__msg__type::CANFD__MESSAGE__TESTFRAME1__msg__type(const CANFD__MESSAGE__TESTFRAME1__msg__type& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME1_msg_type.");
+if (other_value.test__sig__11__bit__bitstring__msb__coded().is_bound()) field_test__sig__11__bit__bitstring__msb__coded = other_value.test__sig__11__bit__bitstring__msb__coded();
+else field_test__sig__11__bit__bitstring__msb__coded.clean_up();
+if (other_value.test__sig__5__bit__bitstring__msb__coded().is_bound()) field_test__sig__5__bit__bitstring__msb__coded = other_value.test__sig__5__bit__bitstring__msb__coded();
+else field_test__sig__5__bit__bitstring__msb__coded.clean_up();
+}
+
+void CANFD__MESSAGE__TESTFRAME1__msg__type::clean_up()
+{
+field_test__sig__11__bit__bitstring__msb__coded.clean_up();
+field_test__sig__5__bit__bitstring__msb__coded.clean_up();
+}
+
+const TTCN_Typedescriptor_t* CANFD__MESSAGE__TESTFRAME1__msg__type::get_descriptor() const { return &CANFD__MESSAGE__TESTFRAME1__msg__type_descr_; }
+CANFD__MESSAGE__TESTFRAME1__msg__type& CANFD__MESSAGE__TESTFRAME1__msg__type::operator=(const CANFD__MESSAGE__TESTFRAME1__msg__type& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME1_msg_type.");
+  if (other_value.test__sig__11__bit__bitstring__msb__coded().is_bound()) field_test__sig__11__bit__bitstring__msb__coded = other_value.test__sig__11__bit__bitstring__msb__coded();
+  else field_test__sig__11__bit__bitstring__msb__coded.clean_up();
+  if (other_value.test__sig__5__bit__bitstring__msb__coded().is_bound()) field_test__sig__5__bit__bitstring__msb__coded = other_value.test__sig__5__bit__bitstring__msb__coded();
+  else field_test__sig__5__bit__bitstring__msb__coded.clean_up();
+}
+return *this;
+}
+
+boolean CANFD__MESSAGE__TESTFRAME1__msg__type::operator==(const CANFD__MESSAGE__TESTFRAME1__msg__type& other_value) const
+{
+return field_test__sig__11__bit__bitstring__msb__coded==other_value.field_test__sig__11__bit__bitstring__msb__coded
+  && field_test__sig__5__bit__bitstring__msb__coded==other_value.field_test__sig__5__bit__bitstring__msb__coded;
+}
+
+boolean CANFD__MESSAGE__TESTFRAME1__msg__type::is_bound() const
+{
+return (field_test__sig__11__bit__bitstring__msb__coded.is_bound())
+  || (field_test__sig__5__bit__bitstring__msb__coded.is_bound());
+}
+boolean CANFD__MESSAGE__TESTFRAME1__msg__type::is_value() const
+{
+return field_test__sig__11__bit__bitstring__msb__coded.is_value()
+  && field_test__sig__5__bit__bitstring__msb__coded.is_value();
+}
+void CANFD__MESSAGE__TESTFRAME1__msg__type::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ test_sig_11_bit_bitstring_msb_coded := ");
+field_test__sig__11__bit__bitstring__msb__coded.log();
+TTCN_Logger::log_event_str(", test_sig_5_bit_bitstring_msb_coded := ");
+field_test__sig__5__bit__bitstring__msb__coded.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void CANFD__MESSAGE__TESTFRAME1__msg__type::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 @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME1_msg_type 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) test__sig__11__bit__bitstring__msb__coded().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) test__sig__5__bit__bitstring__msb__coded().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(), "test_sig_11_bit_bitstring_msb_coded")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          test__sig__11__bit__bitstring__msb__coded().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(), "test_sig_5_bit_bitstring_msb_coded")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          test__sig__5__bit__bitstring__msb__coded().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 @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME1_msg_type: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME1_msg_type");
+  }
+}
+
+void CANFD__MESSAGE__TESTFRAME1__msg__type::set_implicit_omit()
+{
+if (test__sig__11__bit__bitstring__msb__coded().is_bound()) test__sig__11__bit__bitstring__msb__coded().set_implicit_omit();
+if (test__sig__5__bit__bitstring__msb__coded().is_bound()) test__sig__5__bit__bitstring__msb__coded().set_implicit_omit();
+}
+
+void CANFD__MESSAGE__TESTFRAME1__msg__type::encode_text(Text_Buf& text_buf) const
+{
+field_test__sig__11__bit__bitstring__msb__coded.encode_text(text_buf);
+field_test__sig__5__bit__bitstring__msb__coded.encode_text(text_buf);
+}
+
+void CANFD__MESSAGE__TESTFRAME1__msg__type::decode_text(Text_Buf& text_buf)
+{
+field_test__sig__11__bit__bitstring__msb__coded.decode_text(text_buf);
+field_test__sig__5__bit__bitstring__msb__coded.decode_text(text_buf);
+}
+
+void CANFD__MESSAGE__TESTFRAME1__msg__type::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void CANFD__MESSAGE__TESTFRAME1__msg__type::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int CANFD__MESSAGE__TESTFRAME1__msg__type::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, CANFD__MESSAGE__TESTFRAME1__msg__type_test__sig__11__bit__bitstring__msb__coded_descr_.raw->forceomit);
+  decoded_field_length = field_test__sig__11__bit__bitstring__msb__coded.RAW_decode(CANFD__MESSAGE__TESTFRAME1__msg__type_test__sig__11__bit__bitstring__msb__coded_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, CANFD__MESSAGE__TESTFRAME1__msg__type_test__sig__5__bit__bitstring__msb__coded_descr_.raw->forceomit);
+  decoded_field_length = field_test__sig__5__bit__bitstring__msb__coded.RAW_decode(CANFD__MESSAGE__TESTFRAME1__msg__type_test__sig__5__bit__bitstring__msb__coded_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 CANFD__MESSAGE__TESTFRAME1__msg__type::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, CANFD__MESSAGE__TESTFRAME1__msg__type_test__sig__11__bit__bitstring__msb__coded_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, CANFD__MESSAGE__TESTFRAME1__msg__type_test__sig__5__bit__bitstring__msb__coded_descr_.raw);
+  encoded_length += field_test__sig__11__bit__bitstring__msb__coded.RAW_encode(CANFD__MESSAGE__TESTFRAME1__msg__type_test__sig__11__bit__bitstring__msb__coded_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_test__sig__5__bit__bitstring__msb__coded.RAW_encode(CANFD__MESSAGE__TESTFRAME1__msg__type_test__sig__5__bit__bitstring__msb__coded_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct CANFD__MESSAGE__TESTFRAME1__msg__type_template::single_value_struct {
+BITSTRING_template field_test__sig__11__bit__bitstring__msb__coded;
+BITSTRING_template field_test__sig__5__bit__bitstring__msb__coded;
+};
+
+void CANFD__MESSAGE__TESTFRAME1__msg__type_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_test__sig__11__bit__bitstring__msb__coded = ANY_VALUE;
+single_value->field_test__sig__5__bit__bitstring__msb__coded = ANY_VALUE;
+}
+}
+}
+
+void CANFD__MESSAGE__TESTFRAME1__msg__type_template::copy_value(const CANFD__MESSAGE__TESTFRAME1__msg__type& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.test__sig__11__bit__bitstring__msb__coded().is_bound()) {
+  single_value->field_test__sig__11__bit__bitstring__msb__coded = other_value.test__sig__11__bit__bitstring__msb__coded();
+} else {
+  single_value->field_test__sig__11__bit__bitstring__msb__coded.clean_up();
+}
+if (other_value.test__sig__5__bit__bitstring__msb__coded().is_bound()) {
+  single_value->field_test__sig__5__bit__bitstring__msb__coded = other_value.test__sig__5__bit__bitstring__msb__coded();
+} else {
+  single_value->field_test__sig__5__bit__bitstring__msb__coded.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void CANFD__MESSAGE__TESTFRAME1__msg__type_template::copy_template(const CANFD__MESSAGE__TESTFRAME1__msg__type_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.test__sig__11__bit__bitstring__msb__coded().get_selection()) {
+single_value->field_test__sig__11__bit__bitstring__msb__coded = other_value.test__sig__11__bit__bitstring__msb__coded();
+} else {
+single_value->field_test__sig__11__bit__bitstring__msb__coded.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.test__sig__5__bit__bitstring__msb__coded().get_selection()) {
+single_value->field_test__sig__5__bit__bitstring__msb__coded = other_value.test__sig__5__bit__bitstring__msb__coded();
+} else {
+single_value->field_test__sig__5__bit__bitstring__msb__coded.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new CANFD__MESSAGE__TESTFRAME1__msg__type_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME1_msg_type.");
+break;
+}
+set_selection(other_value);
+}
+
+CANFD__MESSAGE__TESTFRAME1__msg__type_template::CANFD__MESSAGE__TESTFRAME1__msg__type_template()
+{
+}
+
+CANFD__MESSAGE__TESTFRAME1__msg__type_template::CANFD__MESSAGE__TESTFRAME1__msg__type_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+CANFD__MESSAGE__TESTFRAME1__msg__type_template::CANFD__MESSAGE__TESTFRAME1__msg__type_template(const CANFD__MESSAGE__TESTFRAME1__msg__type& other_value)
+{
+copy_value(other_value);
+}
+
+CANFD__MESSAGE__TESTFRAME1__msg__type_template::CANFD__MESSAGE__TESTFRAME1__msg__type_template(const OPTIONAL<CANFD__MESSAGE__TESTFRAME1__msg__type>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CANFD__MESSAGE__TESTFRAME1__msg__type&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME1_msg_type from an unbound optional field.");
+}
+}
+
+CANFD__MESSAGE__TESTFRAME1__msg__type_template::CANFD__MESSAGE__TESTFRAME1__msg__type_template(const CANFD__MESSAGE__TESTFRAME1__msg__type_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+CANFD__MESSAGE__TESTFRAME1__msg__type_template::~CANFD__MESSAGE__TESTFRAME1__msg__type_template()
+{
+clean_up();
+}
+
+CANFD__MESSAGE__TESTFRAME1__msg__type_template& CANFD__MESSAGE__TESTFRAME1__msg__type_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+CANFD__MESSAGE__TESTFRAME1__msg__type_template& CANFD__MESSAGE__TESTFRAME1__msg__type_template::operator=(const CANFD__MESSAGE__TESTFRAME1__msg__type& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+CANFD__MESSAGE__TESTFRAME1__msg__type_template& CANFD__MESSAGE__TESTFRAME1__msg__type_template::operator=(const OPTIONAL<CANFD__MESSAGE__TESTFRAME1__msg__type>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CANFD__MESSAGE__TESTFRAME1__msg__type&)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 @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME1_msg_type.");
+}
+return *this;
+}
+
+CANFD__MESSAGE__TESTFRAME1__msg__type_template& CANFD__MESSAGE__TESTFRAME1__msg__type_template::operator=(const CANFD__MESSAGE__TESTFRAME1__msg__type_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean CANFD__MESSAGE__TESTFRAME1__msg__type_template::match(const CANFD__MESSAGE__TESTFRAME1__msg__type& 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.test__sig__11__bit__bitstring__msb__coded().is_bound()) return FALSE;
+if(!single_value->field_test__sig__11__bit__bitstring__msb__coded.match(other_value.test__sig__11__bit__bitstring__msb__coded(), legacy))return FALSE;
+if(!other_value.test__sig__5__bit__bitstring__msb__coded().is_bound()) return FALSE;
+if(!single_value->field_test__sig__5__bit__bitstring__msb__coded.match(other_value.test__sig__5__bit__bitstring__msb__coded(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME1_msg_type.");
+}
+return FALSE;
+}
+
+boolean CANFD__MESSAGE__TESTFRAME1__msg__type_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_test__sig__11__bit__bitstring__msb__coded.is_bound()
+
+ ||single_value->field_test__sig__5__bit__bitstring__msb__coded.is_bound()
+;
+}
+
+boolean CANFD__MESSAGE__TESTFRAME1__msg__type_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_test__sig__11__bit__bitstring__msb__coded.is_value()
+ &&single_value->field_test__sig__5__bit__bitstring__msb__coded.is_value();
+}
+
+void CANFD__MESSAGE__TESTFRAME1__msg__type_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+CANFD__MESSAGE__TESTFRAME1__msg__type CANFD__MESSAGE__TESTFRAME1__msg__type_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 @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME1_msg_type.");
+CANFD__MESSAGE__TESTFRAME1__msg__type ret_val;
+if (single_value->field_test__sig__11__bit__bitstring__msb__coded.is_bound()) {
+ret_val.test__sig__11__bit__bitstring__msb__coded() = single_value->field_test__sig__11__bit__bitstring__msb__coded.valueof();
+}
+if (single_value->field_test__sig__5__bit__bitstring__msb__coded.is_bound()) {
+ret_val.test__sig__5__bit__bitstring__msb__coded() = single_value->field_test__sig__5__bit__bitstring__msb__coded.valueof();
+}
+return ret_val;
+}
+
+void CANFD__MESSAGE__TESTFRAME1__msg__type_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME1_msg_type.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new CANFD__MESSAGE__TESTFRAME1__msg__type_template[list_length];
+}
+
+CANFD__MESSAGE__TESTFRAME1__msg__type_template& CANFD__MESSAGE__TESTFRAME1__msg__type_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME1_msg_type.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME1_msg_type.");
+return value_list.list_value[list_index];
+}
+
+BITSTRING_template& CANFD__MESSAGE__TESTFRAME1__msg__type_template::test__sig__11__bit__bitstring__msb__coded()
+{
+set_specific();
+return single_value->field_test__sig__11__bit__bitstring__msb__coded;
+}
+
+const BITSTRING_template& CANFD__MESSAGE__TESTFRAME1__msg__type_template::test__sig__11__bit__bitstring__msb__coded() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field test_sig_11_bit_bitstring_msb_coded of a non-specific template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME1_msg_type.");
+return single_value->field_test__sig__11__bit__bitstring__msb__coded;
+}
+
+BITSTRING_template& CANFD__MESSAGE__TESTFRAME1__msg__type_template::test__sig__5__bit__bitstring__msb__coded()
+{
+set_specific();
+return single_value->field_test__sig__5__bit__bitstring__msb__coded;
+}
+
+const BITSTRING_template& CANFD__MESSAGE__TESTFRAME1__msg__type_template::test__sig__5__bit__bitstring__msb__coded() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field test_sig_5_bit_bitstring_msb_coded of a non-specific template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME1_msg_type.");
+return single_value->field_test__sig__5__bit__bitstring__msb__coded;
+}
+
+int CANFD__MESSAGE__TESTFRAME1__msg__type_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME1_msg_type 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 @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME1_msg_type 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 @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME1_msg_type containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME1_msg_type containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME1_msg_type containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME1_msg_type containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME1_msg_type.");
+  }
+  return 0;
+}
+
+void CANFD__MESSAGE__TESTFRAME1__msg__type_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ test_sig_11_bit_bitstring_msb_coded := ");
+single_value->field_test__sig__11__bit__bitstring__msb__coded.log();
+TTCN_Logger::log_event_str(", test_sig_5_bit_bitstring_msb_coded := ");
+single_value->field_test__sig__5__bit__bitstring__msb__coded.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void CANFD__MESSAGE__TESTFRAME1__msg__type_template::log_match(const CANFD__MESSAGE__TESTFRAME1__msg__type& 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_test__sig__11__bit__bitstring__msb__coded.match(match_value.test__sig__11__bit__bitstring__msb__coded(), legacy)){
+TTCN_Logger::log_logmatch_info(".test_sig_11_bit_bitstring_msb_coded");
+single_value->field_test__sig__11__bit__bitstring__msb__coded.log_match(match_value.test__sig__11__bit__bitstring__msb__coded(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_test__sig__5__bit__bitstring__msb__coded.match(match_value.test__sig__5__bit__bitstring__msb__coded(), legacy)){
+TTCN_Logger::log_logmatch_info(".test_sig_5_bit_bitstring_msb_coded");
+single_value->field_test__sig__5__bit__bitstring__msb__coded.log_match(match_value.test__sig__5__bit__bitstring__msb__coded(), 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("{ test_sig_11_bit_bitstring_msb_coded := ");
+single_value->field_test__sig__11__bit__bitstring__msb__coded.log_match(match_value.test__sig__11__bit__bitstring__msb__coded(), legacy);
+TTCN_Logger::log_event_str(", test_sig_5_bit_bitstring_msb_coded := ");
+single_value->field_test__sig__5__bit__bitstring__msb__coded.log_match(match_value.test__sig__5__bit__bitstring__msb__coded(), 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 CANFD__MESSAGE__TESTFRAME1__msg__type_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_test__sig__11__bit__bitstring__msb__coded.encode_text(text_buf);
+single_value->field_test__sig__5__bit__bitstring__msb__coded.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 @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME1_msg_type.");
+}
+}
+
+void CANFD__MESSAGE__TESTFRAME1__msg__type_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_test__sig__11__bit__bitstring__msb__coded.decode_text(text_buf);
+single_value->field_test__sig__5__bit__bitstring__msb__coded.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 CANFD__MESSAGE__TESTFRAME1__msg__type_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 @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME1_msg_type.");
+}
+}
+
+void CANFD__MESSAGE__TESTFRAME1__msg__type_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: {
+    CANFD__MESSAGE__TESTFRAME1__msg__type_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME1_msg_type 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) test__sig__11__bit__bitstring__msb__coded().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) test__sig__5__bit__bitstring__msb__coded().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(), "test_sig_11_bit_bitstring_msb_coded")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          test__sig__11__bit__bitstring__msb__coded().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(), "test_sig_5_bit_bitstring_msb_coded")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          test__sig__5__bit__bitstring__msb__coded().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 @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME1_msg_type: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME1_msg_type");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void CANFD__MESSAGE__TESTFRAME1__msg__type_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_test__sig__11__bit__bitstring__msb__coded.check_restriction(t_res, t_name ? t_name : "@CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME1_msg_type");
+single_value->field_test__sig__5__bit__bitstring__msb__coded.check_restriction(t_res, t_name ? t_name : "@CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME1_msg_type");
+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 : "@CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME1_msg_type");
+}
+
+boolean CANFD__MESSAGE__TESTFRAME1__msg__type_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean CANFD__MESSAGE__TESTFRAME1__msg__type_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+CANFD__MESSAGE__TESTFRAME2__msg__type::CANFD__MESSAGE__TESTFRAME2__msg__type()
+{
+}
+
+CANFD__MESSAGE__TESTFRAME2__msg__type::CANFD__MESSAGE__TESTFRAME2__msg__type(const INTEGER& par_test__sig__11__bit__integer__msb__coded,
+    const INTEGER& par_test__sig__5__bit__integer__msb__coded)
+  :   field_test__sig__11__bit__integer__msb__coded(par_test__sig__11__bit__integer__msb__coded),
+  field_test__sig__5__bit__integer__msb__coded(par_test__sig__5__bit__integer__msb__coded)
+{
+}
+
+CANFD__MESSAGE__TESTFRAME2__msg__type::CANFD__MESSAGE__TESTFRAME2__msg__type(const CANFD__MESSAGE__TESTFRAME2__msg__type& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME2_msg_type.");
+if (other_value.test__sig__11__bit__integer__msb__coded().is_bound()) field_test__sig__11__bit__integer__msb__coded = other_value.test__sig__11__bit__integer__msb__coded();
+else field_test__sig__11__bit__integer__msb__coded.clean_up();
+if (other_value.test__sig__5__bit__integer__msb__coded().is_bound()) field_test__sig__5__bit__integer__msb__coded = other_value.test__sig__5__bit__integer__msb__coded();
+else field_test__sig__5__bit__integer__msb__coded.clean_up();
+}
+
+void CANFD__MESSAGE__TESTFRAME2__msg__type::clean_up()
+{
+field_test__sig__11__bit__integer__msb__coded.clean_up();
+field_test__sig__5__bit__integer__msb__coded.clean_up();
+}
+
+const TTCN_Typedescriptor_t* CANFD__MESSAGE__TESTFRAME2__msg__type::get_descriptor() const { return &CANFD__MESSAGE__TESTFRAME2__msg__type_descr_; }
+CANFD__MESSAGE__TESTFRAME2__msg__type& CANFD__MESSAGE__TESTFRAME2__msg__type::operator=(const CANFD__MESSAGE__TESTFRAME2__msg__type& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME2_msg_type.");
+  if (other_value.test__sig__11__bit__integer__msb__coded().is_bound()) field_test__sig__11__bit__integer__msb__coded = other_value.test__sig__11__bit__integer__msb__coded();
+  else field_test__sig__11__bit__integer__msb__coded.clean_up();
+  if (other_value.test__sig__5__bit__integer__msb__coded().is_bound()) field_test__sig__5__bit__integer__msb__coded = other_value.test__sig__5__bit__integer__msb__coded();
+  else field_test__sig__5__bit__integer__msb__coded.clean_up();
+}
+return *this;
+}
+
+boolean CANFD__MESSAGE__TESTFRAME2__msg__type::operator==(const CANFD__MESSAGE__TESTFRAME2__msg__type& other_value) const
+{
+return field_test__sig__11__bit__integer__msb__coded==other_value.field_test__sig__11__bit__integer__msb__coded
+  && field_test__sig__5__bit__integer__msb__coded==other_value.field_test__sig__5__bit__integer__msb__coded;
+}
+
+boolean CANFD__MESSAGE__TESTFRAME2__msg__type::is_bound() const
+{
+return (field_test__sig__11__bit__integer__msb__coded.is_bound())
+  || (field_test__sig__5__bit__integer__msb__coded.is_bound());
+}
+boolean CANFD__MESSAGE__TESTFRAME2__msg__type::is_value() const
+{
+return field_test__sig__11__bit__integer__msb__coded.is_value()
+  && field_test__sig__5__bit__integer__msb__coded.is_value();
+}
+void CANFD__MESSAGE__TESTFRAME2__msg__type::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ test_sig_11_bit_integer_msb_coded := ");
+field_test__sig__11__bit__integer__msb__coded.log();
+TTCN_Logger::log_event_str(", test_sig_5_bit_integer_msb_coded := ");
+field_test__sig__5__bit__integer__msb__coded.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void CANFD__MESSAGE__TESTFRAME2__msg__type::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 @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME2_msg_type 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) test__sig__11__bit__integer__msb__coded().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) test__sig__5__bit__integer__msb__coded().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(), "test_sig_11_bit_integer_msb_coded")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          test__sig__11__bit__integer__msb__coded().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(), "test_sig_5_bit_integer_msb_coded")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          test__sig__5__bit__integer__msb__coded().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 @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME2_msg_type: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME2_msg_type");
+  }
+}
+
+void CANFD__MESSAGE__TESTFRAME2__msg__type::set_implicit_omit()
+{
+if (test__sig__11__bit__integer__msb__coded().is_bound()) test__sig__11__bit__integer__msb__coded().set_implicit_omit();
+if (test__sig__5__bit__integer__msb__coded().is_bound()) test__sig__5__bit__integer__msb__coded().set_implicit_omit();
+}
+
+void CANFD__MESSAGE__TESTFRAME2__msg__type::encode_text(Text_Buf& text_buf) const
+{
+field_test__sig__11__bit__integer__msb__coded.encode_text(text_buf);
+field_test__sig__5__bit__integer__msb__coded.encode_text(text_buf);
+}
+
+void CANFD__MESSAGE__TESTFRAME2__msg__type::decode_text(Text_Buf& text_buf)
+{
+field_test__sig__11__bit__integer__msb__coded.decode_text(text_buf);
+field_test__sig__5__bit__integer__msb__coded.decode_text(text_buf);
+}
+
+void CANFD__MESSAGE__TESTFRAME2__msg__type::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void CANFD__MESSAGE__TESTFRAME2__msg__type::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int CANFD__MESSAGE__TESTFRAME2__msg__type::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, CANFD__MESSAGE__TESTFRAME2__msg__type_test__sig__11__bit__integer__msb__coded_descr_.raw->forceomit);
+  decoded_field_length = field_test__sig__11__bit__integer__msb__coded.RAW_decode(CANFD__MESSAGE__TESTFRAME2__msg__type_test__sig__11__bit__integer__msb__coded_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, CANFD__MESSAGE__TESTFRAME2__msg__type_test__sig__5__bit__integer__msb__coded_descr_.raw->forceomit);
+  decoded_field_length = field_test__sig__5__bit__integer__msb__coded.RAW_decode(CANFD__MESSAGE__TESTFRAME2__msg__type_test__sig__5__bit__integer__msb__coded_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 CANFD__MESSAGE__TESTFRAME2__msg__type::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, CANFD__MESSAGE__TESTFRAME2__msg__type_test__sig__11__bit__integer__msb__coded_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, CANFD__MESSAGE__TESTFRAME2__msg__type_test__sig__5__bit__integer__msb__coded_descr_.raw);
+  encoded_length += field_test__sig__11__bit__integer__msb__coded.RAW_encode(CANFD__MESSAGE__TESTFRAME2__msg__type_test__sig__11__bit__integer__msb__coded_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_test__sig__5__bit__integer__msb__coded.RAW_encode(CANFD__MESSAGE__TESTFRAME2__msg__type_test__sig__5__bit__integer__msb__coded_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct CANFD__MESSAGE__TESTFRAME2__msg__type_template::single_value_struct {
+INTEGER_template field_test__sig__11__bit__integer__msb__coded;
+INTEGER_template field_test__sig__5__bit__integer__msb__coded;
+};
+
+void CANFD__MESSAGE__TESTFRAME2__msg__type_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_test__sig__11__bit__integer__msb__coded = ANY_VALUE;
+single_value->field_test__sig__5__bit__integer__msb__coded = ANY_VALUE;
+}
+}
+}
+
+void CANFD__MESSAGE__TESTFRAME2__msg__type_template::copy_value(const CANFD__MESSAGE__TESTFRAME2__msg__type& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.test__sig__11__bit__integer__msb__coded().is_bound()) {
+  single_value->field_test__sig__11__bit__integer__msb__coded = other_value.test__sig__11__bit__integer__msb__coded();
+} else {
+  single_value->field_test__sig__11__bit__integer__msb__coded.clean_up();
+}
+if (other_value.test__sig__5__bit__integer__msb__coded().is_bound()) {
+  single_value->field_test__sig__5__bit__integer__msb__coded = other_value.test__sig__5__bit__integer__msb__coded();
+} else {
+  single_value->field_test__sig__5__bit__integer__msb__coded.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void CANFD__MESSAGE__TESTFRAME2__msg__type_template::copy_template(const CANFD__MESSAGE__TESTFRAME2__msg__type_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.test__sig__11__bit__integer__msb__coded().get_selection()) {
+single_value->field_test__sig__11__bit__integer__msb__coded = other_value.test__sig__11__bit__integer__msb__coded();
+} else {
+single_value->field_test__sig__11__bit__integer__msb__coded.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.test__sig__5__bit__integer__msb__coded().get_selection()) {
+single_value->field_test__sig__5__bit__integer__msb__coded = other_value.test__sig__5__bit__integer__msb__coded();
+} else {
+single_value->field_test__sig__5__bit__integer__msb__coded.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new CANFD__MESSAGE__TESTFRAME2__msg__type_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME2_msg_type.");
+break;
+}
+set_selection(other_value);
+}
+
+CANFD__MESSAGE__TESTFRAME2__msg__type_template::CANFD__MESSAGE__TESTFRAME2__msg__type_template()
+{
+}
+
+CANFD__MESSAGE__TESTFRAME2__msg__type_template::CANFD__MESSAGE__TESTFRAME2__msg__type_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+CANFD__MESSAGE__TESTFRAME2__msg__type_template::CANFD__MESSAGE__TESTFRAME2__msg__type_template(const CANFD__MESSAGE__TESTFRAME2__msg__type& other_value)
+{
+copy_value(other_value);
+}
+
+CANFD__MESSAGE__TESTFRAME2__msg__type_template::CANFD__MESSAGE__TESTFRAME2__msg__type_template(const OPTIONAL<CANFD__MESSAGE__TESTFRAME2__msg__type>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CANFD__MESSAGE__TESTFRAME2__msg__type&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME2_msg_type from an unbound optional field.");
+}
+}
+
+CANFD__MESSAGE__TESTFRAME2__msg__type_template::CANFD__MESSAGE__TESTFRAME2__msg__type_template(const CANFD__MESSAGE__TESTFRAME2__msg__type_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+CANFD__MESSAGE__TESTFRAME2__msg__type_template::~CANFD__MESSAGE__TESTFRAME2__msg__type_template()
+{
+clean_up();
+}
+
+CANFD__MESSAGE__TESTFRAME2__msg__type_template& CANFD__MESSAGE__TESTFRAME2__msg__type_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+CANFD__MESSAGE__TESTFRAME2__msg__type_template& CANFD__MESSAGE__TESTFRAME2__msg__type_template::operator=(const CANFD__MESSAGE__TESTFRAME2__msg__type& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+CANFD__MESSAGE__TESTFRAME2__msg__type_template& CANFD__MESSAGE__TESTFRAME2__msg__type_template::operator=(const OPTIONAL<CANFD__MESSAGE__TESTFRAME2__msg__type>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CANFD__MESSAGE__TESTFRAME2__msg__type&)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 @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME2_msg_type.");
+}
+return *this;
+}
+
+CANFD__MESSAGE__TESTFRAME2__msg__type_template& CANFD__MESSAGE__TESTFRAME2__msg__type_template::operator=(const CANFD__MESSAGE__TESTFRAME2__msg__type_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean CANFD__MESSAGE__TESTFRAME2__msg__type_template::match(const CANFD__MESSAGE__TESTFRAME2__msg__type& 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.test__sig__11__bit__integer__msb__coded().is_bound()) return FALSE;
+if(!single_value->field_test__sig__11__bit__integer__msb__coded.match(other_value.test__sig__11__bit__integer__msb__coded(), legacy))return FALSE;
+if(!other_value.test__sig__5__bit__integer__msb__coded().is_bound()) return FALSE;
+if(!single_value->field_test__sig__5__bit__integer__msb__coded.match(other_value.test__sig__5__bit__integer__msb__coded(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME2_msg_type.");
+}
+return FALSE;
+}
+
+boolean CANFD__MESSAGE__TESTFRAME2__msg__type_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_test__sig__11__bit__integer__msb__coded.is_bound()
+
+ ||single_value->field_test__sig__5__bit__integer__msb__coded.is_bound()
+;
+}
+
+boolean CANFD__MESSAGE__TESTFRAME2__msg__type_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_test__sig__11__bit__integer__msb__coded.is_value()
+ &&single_value->field_test__sig__5__bit__integer__msb__coded.is_value();
+}
+
+void CANFD__MESSAGE__TESTFRAME2__msg__type_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+CANFD__MESSAGE__TESTFRAME2__msg__type CANFD__MESSAGE__TESTFRAME2__msg__type_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 @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME2_msg_type.");
+CANFD__MESSAGE__TESTFRAME2__msg__type ret_val;
+if (single_value->field_test__sig__11__bit__integer__msb__coded.is_bound()) {
+ret_val.test__sig__11__bit__integer__msb__coded() = single_value->field_test__sig__11__bit__integer__msb__coded.valueof();
+}
+if (single_value->field_test__sig__5__bit__integer__msb__coded.is_bound()) {
+ret_val.test__sig__5__bit__integer__msb__coded() = single_value->field_test__sig__5__bit__integer__msb__coded.valueof();
+}
+return ret_val;
+}
+
+void CANFD__MESSAGE__TESTFRAME2__msg__type_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME2_msg_type.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new CANFD__MESSAGE__TESTFRAME2__msg__type_template[list_length];
+}
+
+CANFD__MESSAGE__TESTFRAME2__msg__type_template& CANFD__MESSAGE__TESTFRAME2__msg__type_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME2_msg_type.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME2_msg_type.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& CANFD__MESSAGE__TESTFRAME2__msg__type_template::test__sig__11__bit__integer__msb__coded()
+{
+set_specific();
+return single_value->field_test__sig__11__bit__integer__msb__coded;
+}
+
+const INTEGER_template& CANFD__MESSAGE__TESTFRAME2__msg__type_template::test__sig__11__bit__integer__msb__coded() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field test_sig_11_bit_integer_msb_coded of a non-specific template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME2_msg_type.");
+return single_value->field_test__sig__11__bit__integer__msb__coded;
+}
+
+INTEGER_template& CANFD__MESSAGE__TESTFRAME2__msg__type_template::test__sig__5__bit__integer__msb__coded()
+{
+set_specific();
+return single_value->field_test__sig__5__bit__integer__msb__coded;
+}
+
+const INTEGER_template& CANFD__MESSAGE__TESTFRAME2__msg__type_template::test__sig__5__bit__integer__msb__coded() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field test_sig_5_bit_integer_msb_coded of a non-specific template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME2_msg_type.");
+return single_value->field_test__sig__5__bit__integer__msb__coded;
+}
+
+int CANFD__MESSAGE__TESTFRAME2__msg__type_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME2_msg_type 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 @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME2_msg_type 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 @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME2_msg_type containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME2_msg_type containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME2_msg_type containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME2_msg_type containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME2_msg_type.");
+  }
+  return 0;
+}
+
+void CANFD__MESSAGE__TESTFRAME2__msg__type_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ test_sig_11_bit_integer_msb_coded := ");
+single_value->field_test__sig__11__bit__integer__msb__coded.log();
+TTCN_Logger::log_event_str(", test_sig_5_bit_integer_msb_coded := ");
+single_value->field_test__sig__5__bit__integer__msb__coded.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void CANFD__MESSAGE__TESTFRAME2__msg__type_template::log_match(const CANFD__MESSAGE__TESTFRAME2__msg__type& 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_test__sig__11__bit__integer__msb__coded.match(match_value.test__sig__11__bit__integer__msb__coded(), legacy)){
+TTCN_Logger::log_logmatch_info(".test_sig_11_bit_integer_msb_coded");
+single_value->field_test__sig__11__bit__integer__msb__coded.log_match(match_value.test__sig__11__bit__integer__msb__coded(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_test__sig__5__bit__integer__msb__coded.match(match_value.test__sig__5__bit__integer__msb__coded(), legacy)){
+TTCN_Logger::log_logmatch_info(".test_sig_5_bit_integer_msb_coded");
+single_value->field_test__sig__5__bit__integer__msb__coded.log_match(match_value.test__sig__5__bit__integer__msb__coded(), 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("{ test_sig_11_bit_integer_msb_coded := ");
+single_value->field_test__sig__11__bit__integer__msb__coded.log_match(match_value.test__sig__11__bit__integer__msb__coded(), legacy);
+TTCN_Logger::log_event_str(", test_sig_5_bit_integer_msb_coded := ");
+single_value->field_test__sig__5__bit__integer__msb__coded.log_match(match_value.test__sig__5__bit__integer__msb__coded(), 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 CANFD__MESSAGE__TESTFRAME2__msg__type_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_test__sig__11__bit__integer__msb__coded.encode_text(text_buf);
+single_value->field_test__sig__5__bit__integer__msb__coded.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 @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME2_msg_type.");
+}
+}
+
+void CANFD__MESSAGE__TESTFRAME2__msg__type_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_test__sig__11__bit__integer__msb__coded.decode_text(text_buf);
+single_value->field_test__sig__5__bit__integer__msb__coded.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 CANFD__MESSAGE__TESTFRAME2__msg__type_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 @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME2_msg_type.");
+}
+}
+
+void CANFD__MESSAGE__TESTFRAME2__msg__type_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: {
+    CANFD__MESSAGE__TESTFRAME2__msg__type_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME2_msg_type 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) test__sig__11__bit__integer__msb__coded().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) test__sig__5__bit__integer__msb__coded().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(), "test_sig_11_bit_integer_msb_coded")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          test__sig__11__bit__integer__msb__coded().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(), "test_sig_5_bit_integer_msb_coded")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          test__sig__5__bit__integer__msb__coded().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 @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME2_msg_type: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME2_msg_type");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void CANFD__MESSAGE__TESTFRAME2__msg__type_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_test__sig__11__bit__integer__msb__coded.check_restriction(t_res, t_name ? t_name : "@CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME2_msg_type");
+single_value->field_test__sig__5__bit__integer__msb__coded.check_restriction(t_res, t_name ? t_name : "@CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME2_msg_type");
+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 : "@CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME2_msg_type");
+}
+
+boolean CANFD__MESSAGE__TESTFRAME2__msg__type_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean CANFD__MESSAGE__TESTFRAME2__msg__type_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+CANFD__MESSAGE__TESTFRAME3__msg__type::CANFD__MESSAGE__TESTFRAME3__msg__type()
+{
+}
+
+CANFD__MESSAGE__TESTFRAME3__msg__type::CANFD__MESSAGE__TESTFRAME3__msg__type(const OCTETSTRING& par_test__sig__1__byte__octetstring__msb__coded,
+    const OCTETSTRING& par_test__sig__2__byte__octetstring__msb__coded)
+  :   field_test__sig__1__byte__octetstring__msb__coded(par_test__sig__1__byte__octetstring__msb__coded),
+  field_test__sig__2__byte__octetstring__msb__coded(par_test__sig__2__byte__octetstring__msb__coded)
+{
+}
+
+CANFD__MESSAGE__TESTFRAME3__msg__type::CANFD__MESSAGE__TESTFRAME3__msg__type(const CANFD__MESSAGE__TESTFRAME3__msg__type& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME3_msg_type.");
+if (other_value.test__sig__1__byte__octetstring__msb__coded().is_bound()) field_test__sig__1__byte__octetstring__msb__coded = other_value.test__sig__1__byte__octetstring__msb__coded();
+else field_test__sig__1__byte__octetstring__msb__coded.clean_up();
+if (other_value.test__sig__2__byte__octetstring__msb__coded().is_bound()) field_test__sig__2__byte__octetstring__msb__coded = other_value.test__sig__2__byte__octetstring__msb__coded();
+else field_test__sig__2__byte__octetstring__msb__coded.clean_up();
+}
+
+void CANFD__MESSAGE__TESTFRAME3__msg__type::clean_up()
+{
+field_test__sig__1__byte__octetstring__msb__coded.clean_up();
+field_test__sig__2__byte__octetstring__msb__coded.clean_up();
+}
+
+const TTCN_Typedescriptor_t* CANFD__MESSAGE__TESTFRAME3__msg__type::get_descriptor() const { return &CANFD__MESSAGE__TESTFRAME3__msg__type_descr_; }
+CANFD__MESSAGE__TESTFRAME3__msg__type& CANFD__MESSAGE__TESTFRAME3__msg__type::operator=(const CANFD__MESSAGE__TESTFRAME3__msg__type& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME3_msg_type.");
+  if (other_value.test__sig__1__byte__octetstring__msb__coded().is_bound()) field_test__sig__1__byte__octetstring__msb__coded = other_value.test__sig__1__byte__octetstring__msb__coded();
+  else field_test__sig__1__byte__octetstring__msb__coded.clean_up();
+  if (other_value.test__sig__2__byte__octetstring__msb__coded().is_bound()) field_test__sig__2__byte__octetstring__msb__coded = other_value.test__sig__2__byte__octetstring__msb__coded();
+  else field_test__sig__2__byte__octetstring__msb__coded.clean_up();
+}
+return *this;
+}
+
+boolean CANFD__MESSAGE__TESTFRAME3__msg__type::operator==(const CANFD__MESSAGE__TESTFRAME3__msg__type& other_value) const
+{
+return field_test__sig__1__byte__octetstring__msb__coded==other_value.field_test__sig__1__byte__octetstring__msb__coded
+  && field_test__sig__2__byte__octetstring__msb__coded==other_value.field_test__sig__2__byte__octetstring__msb__coded;
+}
+
+boolean CANFD__MESSAGE__TESTFRAME3__msg__type::is_bound() const
+{
+return (field_test__sig__1__byte__octetstring__msb__coded.is_bound())
+  || (field_test__sig__2__byte__octetstring__msb__coded.is_bound());
+}
+boolean CANFD__MESSAGE__TESTFRAME3__msg__type::is_value() const
+{
+return field_test__sig__1__byte__octetstring__msb__coded.is_value()
+  && field_test__sig__2__byte__octetstring__msb__coded.is_value();
+}
+void CANFD__MESSAGE__TESTFRAME3__msg__type::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ test_sig_1_byte_octetstring_msb_coded := ");
+field_test__sig__1__byte__octetstring__msb__coded.log();
+TTCN_Logger::log_event_str(", test_sig_2_byte_octetstring_msb_coded := ");
+field_test__sig__2__byte__octetstring__msb__coded.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void CANFD__MESSAGE__TESTFRAME3__msg__type::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 @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME3_msg_type 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) test__sig__1__byte__octetstring__msb__coded().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) test__sig__2__byte__octetstring__msb__coded().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(), "test_sig_1_byte_octetstring_msb_coded")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          test__sig__1__byte__octetstring__msb__coded().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(), "test_sig_2_byte_octetstring_msb_coded")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          test__sig__2__byte__octetstring__msb__coded().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 @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME3_msg_type: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME3_msg_type");
+  }
+}
+
+void CANFD__MESSAGE__TESTFRAME3__msg__type::set_implicit_omit()
+{
+if (test__sig__1__byte__octetstring__msb__coded().is_bound()) test__sig__1__byte__octetstring__msb__coded().set_implicit_omit();
+if (test__sig__2__byte__octetstring__msb__coded().is_bound()) test__sig__2__byte__octetstring__msb__coded().set_implicit_omit();
+}
+
+void CANFD__MESSAGE__TESTFRAME3__msg__type::encode_text(Text_Buf& text_buf) const
+{
+field_test__sig__1__byte__octetstring__msb__coded.encode_text(text_buf);
+field_test__sig__2__byte__octetstring__msb__coded.encode_text(text_buf);
+}
+
+void CANFD__MESSAGE__TESTFRAME3__msg__type::decode_text(Text_Buf& text_buf)
+{
+field_test__sig__1__byte__octetstring__msb__coded.decode_text(text_buf);
+field_test__sig__2__byte__octetstring__msb__coded.decode_text(text_buf);
+}
+
+void CANFD__MESSAGE__TESTFRAME3__msg__type::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void CANFD__MESSAGE__TESTFRAME3__msg__type::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int CANFD__MESSAGE__TESTFRAME3__msg__type::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, CAN__matrix__signals::OCT1__signal__type_descr_.raw->forceomit);
+  decoded_field_length = field_test__sig__1__byte__octetstring__msb__coded.RAW_decode(CAN__matrix__signals::OCT1__signal__type_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, CAN__matrix__signals::OCT2__signal__type_descr_.raw->forceomit);
+  decoded_field_length = field_test__sig__2__byte__octetstring__msb__coded.RAW_decode(CAN__matrix__signals::OCT2__signal__type_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 CANFD__MESSAGE__TESTFRAME3__msg__type::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, CAN__matrix__signals::OCT1__signal__type_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, CAN__matrix__signals::OCT2__signal__type_descr_.raw);
+  encoded_length += field_test__sig__1__byte__octetstring__msb__coded.RAW_encode(CAN__matrix__signals::OCT1__signal__type_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_test__sig__2__byte__octetstring__msb__coded.RAW_encode(CAN__matrix__signals::OCT2__signal__type_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct CANFD__MESSAGE__TESTFRAME3__msg__type_template::single_value_struct {
+OCTETSTRING_template field_test__sig__1__byte__octetstring__msb__coded;
+OCTETSTRING_template field_test__sig__2__byte__octetstring__msb__coded;
+};
+
+void CANFD__MESSAGE__TESTFRAME3__msg__type_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_test__sig__1__byte__octetstring__msb__coded = ANY_VALUE;
+single_value->field_test__sig__2__byte__octetstring__msb__coded = ANY_VALUE;
+}
+}
+}
+
+void CANFD__MESSAGE__TESTFRAME3__msg__type_template::copy_value(const CANFD__MESSAGE__TESTFRAME3__msg__type& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.test__sig__1__byte__octetstring__msb__coded().is_bound()) {
+  single_value->field_test__sig__1__byte__octetstring__msb__coded = other_value.test__sig__1__byte__octetstring__msb__coded();
+} else {
+  single_value->field_test__sig__1__byte__octetstring__msb__coded.clean_up();
+}
+if (other_value.test__sig__2__byte__octetstring__msb__coded().is_bound()) {
+  single_value->field_test__sig__2__byte__octetstring__msb__coded = other_value.test__sig__2__byte__octetstring__msb__coded();
+} else {
+  single_value->field_test__sig__2__byte__octetstring__msb__coded.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void CANFD__MESSAGE__TESTFRAME3__msg__type_template::copy_template(const CANFD__MESSAGE__TESTFRAME3__msg__type_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.test__sig__1__byte__octetstring__msb__coded().get_selection()) {
+single_value->field_test__sig__1__byte__octetstring__msb__coded = other_value.test__sig__1__byte__octetstring__msb__coded();
+} else {
+single_value->field_test__sig__1__byte__octetstring__msb__coded.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.test__sig__2__byte__octetstring__msb__coded().get_selection()) {
+single_value->field_test__sig__2__byte__octetstring__msb__coded = other_value.test__sig__2__byte__octetstring__msb__coded();
+} else {
+single_value->field_test__sig__2__byte__octetstring__msb__coded.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new CANFD__MESSAGE__TESTFRAME3__msg__type_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME3_msg_type.");
+break;
+}
+set_selection(other_value);
+}
+
+CANFD__MESSAGE__TESTFRAME3__msg__type_template::CANFD__MESSAGE__TESTFRAME3__msg__type_template()
+{
+}
+
+CANFD__MESSAGE__TESTFRAME3__msg__type_template::CANFD__MESSAGE__TESTFRAME3__msg__type_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+CANFD__MESSAGE__TESTFRAME3__msg__type_template::CANFD__MESSAGE__TESTFRAME3__msg__type_template(const CANFD__MESSAGE__TESTFRAME3__msg__type& other_value)
+{
+copy_value(other_value);
+}
+
+CANFD__MESSAGE__TESTFRAME3__msg__type_template::CANFD__MESSAGE__TESTFRAME3__msg__type_template(const OPTIONAL<CANFD__MESSAGE__TESTFRAME3__msg__type>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CANFD__MESSAGE__TESTFRAME3__msg__type&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME3_msg_type from an unbound optional field.");
+}
+}
+
+CANFD__MESSAGE__TESTFRAME3__msg__type_template::CANFD__MESSAGE__TESTFRAME3__msg__type_template(const CANFD__MESSAGE__TESTFRAME3__msg__type_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+CANFD__MESSAGE__TESTFRAME3__msg__type_template::~CANFD__MESSAGE__TESTFRAME3__msg__type_template()
+{
+clean_up();
+}
+
+CANFD__MESSAGE__TESTFRAME3__msg__type_template& CANFD__MESSAGE__TESTFRAME3__msg__type_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+CANFD__MESSAGE__TESTFRAME3__msg__type_template& CANFD__MESSAGE__TESTFRAME3__msg__type_template::operator=(const CANFD__MESSAGE__TESTFRAME3__msg__type& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+CANFD__MESSAGE__TESTFRAME3__msg__type_template& CANFD__MESSAGE__TESTFRAME3__msg__type_template::operator=(const OPTIONAL<CANFD__MESSAGE__TESTFRAME3__msg__type>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CANFD__MESSAGE__TESTFRAME3__msg__type&)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 @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME3_msg_type.");
+}
+return *this;
+}
+
+CANFD__MESSAGE__TESTFRAME3__msg__type_template& CANFD__MESSAGE__TESTFRAME3__msg__type_template::operator=(const CANFD__MESSAGE__TESTFRAME3__msg__type_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean CANFD__MESSAGE__TESTFRAME3__msg__type_template::match(const CANFD__MESSAGE__TESTFRAME3__msg__type& 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.test__sig__1__byte__octetstring__msb__coded().is_bound()) return FALSE;
+if(!single_value->field_test__sig__1__byte__octetstring__msb__coded.match(other_value.test__sig__1__byte__octetstring__msb__coded(), legacy))return FALSE;
+if(!other_value.test__sig__2__byte__octetstring__msb__coded().is_bound()) return FALSE;
+if(!single_value->field_test__sig__2__byte__octetstring__msb__coded.match(other_value.test__sig__2__byte__octetstring__msb__coded(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME3_msg_type.");
+}
+return FALSE;
+}
+
+boolean CANFD__MESSAGE__TESTFRAME3__msg__type_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_test__sig__1__byte__octetstring__msb__coded.is_bound()
+
+ ||single_value->field_test__sig__2__byte__octetstring__msb__coded.is_bound()
+;
+}
+
+boolean CANFD__MESSAGE__TESTFRAME3__msg__type_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_test__sig__1__byte__octetstring__msb__coded.is_value()
+ &&single_value->field_test__sig__2__byte__octetstring__msb__coded.is_value();
+}
+
+void CANFD__MESSAGE__TESTFRAME3__msg__type_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+CANFD__MESSAGE__TESTFRAME3__msg__type CANFD__MESSAGE__TESTFRAME3__msg__type_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 @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME3_msg_type.");
+CANFD__MESSAGE__TESTFRAME3__msg__type ret_val;
+if (single_value->field_test__sig__1__byte__octetstring__msb__coded.is_bound()) {
+ret_val.test__sig__1__byte__octetstring__msb__coded() = single_value->field_test__sig__1__byte__octetstring__msb__coded.valueof();
+}
+if (single_value->field_test__sig__2__byte__octetstring__msb__coded.is_bound()) {
+ret_val.test__sig__2__byte__octetstring__msb__coded() = single_value->field_test__sig__2__byte__octetstring__msb__coded.valueof();
+}
+return ret_val;
+}
+
+void CANFD__MESSAGE__TESTFRAME3__msg__type_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME3_msg_type.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new CANFD__MESSAGE__TESTFRAME3__msg__type_template[list_length];
+}
+
+CANFD__MESSAGE__TESTFRAME3__msg__type_template& CANFD__MESSAGE__TESTFRAME3__msg__type_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME3_msg_type.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME3_msg_type.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& CANFD__MESSAGE__TESTFRAME3__msg__type_template::test__sig__1__byte__octetstring__msb__coded()
+{
+set_specific();
+return single_value->field_test__sig__1__byte__octetstring__msb__coded;
+}
+
+const OCTETSTRING_template& CANFD__MESSAGE__TESTFRAME3__msg__type_template::test__sig__1__byte__octetstring__msb__coded() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field test_sig_1_byte_octetstring_msb_coded of a non-specific template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME3_msg_type.");
+return single_value->field_test__sig__1__byte__octetstring__msb__coded;
+}
+
+OCTETSTRING_template& CANFD__MESSAGE__TESTFRAME3__msg__type_template::test__sig__2__byte__octetstring__msb__coded()
+{
+set_specific();
+return single_value->field_test__sig__2__byte__octetstring__msb__coded;
+}
+
+const OCTETSTRING_template& CANFD__MESSAGE__TESTFRAME3__msg__type_template::test__sig__2__byte__octetstring__msb__coded() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field test_sig_2_byte_octetstring_msb_coded of a non-specific template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME3_msg_type.");
+return single_value->field_test__sig__2__byte__octetstring__msb__coded;
+}
+
+int CANFD__MESSAGE__TESTFRAME3__msg__type_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME3_msg_type 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 @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME3_msg_type 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 @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME3_msg_type containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME3_msg_type containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME3_msg_type containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME3_msg_type containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME3_msg_type.");
+  }
+  return 0;
+}
+
+void CANFD__MESSAGE__TESTFRAME3__msg__type_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ test_sig_1_byte_octetstring_msb_coded := ");
+single_value->field_test__sig__1__byte__octetstring__msb__coded.log();
+TTCN_Logger::log_event_str(", test_sig_2_byte_octetstring_msb_coded := ");
+single_value->field_test__sig__2__byte__octetstring__msb__coded.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void CANFD__MESSAGE__TESTFRAME3__msg__type_template::log_match(const CANFD__MESSAGE__TESTFRAME3__msg__type& 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_test__sig__1__byte__octetstring__msb__coded.match(match_value.test__sig__1__byte__octetstring__msb__coded(), legacy)){
+TTCN_Logger::log_logmatch_info(".test_sig_1_byte_octetstring_msb_coded");
+single_value->field_test__sig__1__byte__octetstring__msb__coded.log_match(match_value.test__sig__1__byte__octetstring__msb__coded(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_test__sig__2__byte__octetstring__msb__coded.match(match_value.test__sig__2__byte__octetstring__msb__coded(), legacy)){
+TTCN_Logger::log_logmatch_info(".test_sig_2_byte_octetstring_msb_coded");
+single_value->field_test__sig__2__byte__octetstring__msb__coded.log_match(match_value.test__sig__2__byte__octetstring__msb__coded(), 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("{ test_sig_1_byte_octetstring_msb_coded := ");
+single_value->field_test__sig__1__byte__octetstring__msb__coded.log_match(match_value.test__sig__1__byte__octetstring__msb__coded(), legacy);
+TTCN_Logger::log_event_str(", test_sig_2_byte_octetstring_msb_coded := ");
+single_value->field_test__sig__2__byte__octetstring__msb__coded.log_match(match_value.test__sig__2__byte__octetstring__msb__coded(), 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 CANFD__MESSAGE__TESTFRAME3__msg__type_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_test__sig__1__byte__octetstring__msb__coded.encode_text(text_buf);
+single_value->field_test__sig__2__byte__octetstring__msb__coded.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 @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME3_msg_type.");
+}
+}
+
+void CANFD__MESSAGE__TESTFRAME3__msg__type_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_test__sig__1__byte__octetstring__msb__coded.decode_text(text_buf);
+single_value->field_test__sig__2__byte__octetstring__msb__coded.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 CANFD__MESSAGE__TESTFRAME3__msg__type_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 @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME3_msg_type.");
+}
+}
+
+void CANFD__MESSAGE__TESTFRAME3__msg__type_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: {
+    CANFD__MESSAGE__TESTFRAME3__msg__type_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME3_msg_type 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) test__sig__1__byte__octetstring__msb__coded().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) test__sig__2__byte__octetstring__msb__coded().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(), "test_sig_1_byte_octetstring_msb_coded")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          test__sig__1__byte__octetstring__msb__coded().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(), "test_sig_2_byte_octetstring_msb_coded")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          test__sig__2__byte__octetstring__msb__coded().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 @CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME3_msg_type: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME3_msg_type");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void CANFD__MESSAGE__TESTFRAME3__msg__type_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_test__sig__1__byte__octetstring__msb__coded.check_restriction(t_res, t_name ? t_name : "@CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME3_msg_type");
+single_value->field_test__sig__2__byte__octetstring__msb__coded.check_restriction(t_res, t_name ? t_name : "@CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME3_msg_type");
+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 : "@CANFD_matrix_messages.CANFD_MESSAGE_TESTFRAME3_msg_type");
+}
+
+boolean CANFD__MESSAGE__TESTFRAME3__msg__type_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean CANFD__MESSAGE__TESTFRAME3__msg__type_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+CANFD__MESSAGE__EXTENDEDFRAME1__msg__type::CANFD__MESSAGE__EXTENDEDFRAME1__msg__type()
+{
+}
+
+CANFD__MESSAGE__EXTENDEDFRAME1__msg__type::CANFD__MESSAGE__EXTENDEDFRAME1__msg__type(const OCTETSTRING& par_test__sig__2__byte__octetstring__msb__coded)
+  :   field_test__sig__2__byte__octetstring__msb__coded(par_test__sig__2__byte__octetstring__msb__coded)
+{
+}
+
+CANFD__MESSAGE__EXTENDEDFRAME1__msg__type::CANFD__MESSAGE__EXTENDEDFRAME1__msg__type(const CANFD__MESSAGE__EXTENDEDFRAME1__msg__type& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @CANFD_matrix_messages.CANFD_MESSAGE_EXTENDEDFRAME1_msg_type.");
+if (other_value.test__sig__2__byte__octetstring__msb__coded().is_bound()) field_test__sig__2__byte__octetstring__msb__coded = other_value.test__sig__2__byte__octetstring__msb__coded();
+else field_test__sig__2__byte__octetstring__msb__coded.clean_up();
+}
+
+void CANFD__MESSAGE__EXTENDEDFRAME1__msg__type::clean_up()
+{
+field_test__sig__2__byte__octetstring__msb__coded.clean_up();
+}
+
+const TTCN_Typedescriptor_t* CANFD__MESSAGE__EXTENDEDFRAME1__msg__type::get_descriptor() const { return &CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_descr_; }
+CANFD__MESSAGE__EXTENDEDFRAME1__msg__type& CANFD__MESSAGE__EXTENDEDFRAME1__msg__type::operator=(const CANFD__MESSAGE__EXTENDEDFRAME1__msg__type& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @CANFD_matrix_messages.CANFD_MESSAGE_EXTENDEDFRAME1_msg_type.");
+  if (other_value.test__sig__2__byte__octetstring__msb__coded().is_bound()) field_test__sig__2__byte__octetstring__msb__coded = other_value.test__sig__2__byte__octetstring__msb__coded();
+  else field_test__sig__2__byte__octetstring__msb__coded.clean_up();
+}
+return *this;
+}
+
+boolean CANFD__MESSAGE__EXTENDEDFRAME1__msg__type::operator==(const CANFD__MESSAGE__EXTENDEDFRAME1__msg__type& other_value) const
+{
+return field_test__sig__2__byte__octetstring__msb__coded==other_value.field_test__sig__2__byte__octetstring__msb__coded;
+}
+
+boolean CANFD__MESSAGE__EXTENDEDFRAME1__msg__type::is_bound() const
+{
+return (field_test__sig__2__byte__octetstring__msb__coded.is_bound());
+}
+boolean CANFD__MESSAGE__EXTENDEDFRAME1__msg__type::is_value() const
+{
+return field_test__sig__2__byte__octetstring__msb__coded.is_value();
+}
+void CANFD__MESSAGE__EXTENDEDFRAME1__msg__type::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ test_sig_2_byte_octetstring_msb_coded := ");
+field_test__sig__2__byte__octetstring__msb__coded.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void CANFD__MESSAGE__EXTENDEDFRAME1__msg__type::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 (1<param.get_size()) {
+      param.error("record value of type @CANFD_matrix_messages.CANFD_MESSAGE_EXTENDEDFRAME1_msg_type has 1 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) test__sig__2__byte__octetstring__msb__coded().set_param(*param.get_elem(0));
+    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(), "test_sig_2_byte_octetstring_msb_coded")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          test__sig__2__byte__octetstring__msb__coded().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 @CANFD_matrix_messages.CANFD_MESSAGE_EXTENDEDFRAME1_msg_type: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@CANFD_matrix_messages.CANFD_MESSAGE_EXTENDEDFRAME1_msg_type");
+  }
+}
+
+void CANFD__MESSAGE__EXTENDEDFRAME1__msg__type::set_implicit_omit()
+{
+if (test__sig__2__byte__octetstring__msb__coded().is_bound()) test__sig__2__byte__octetstring__msb__coded().set_implicit_omit();
+}
+
+void CANFD__MESSAGE__EXTENDEDFRAME1__msg__type::encode_text(Text_Buf& text_buf) const
+{
+field_test__sig__2__byte__octetstring__msb__coded.encode_text(text_buf);
+}
+
+void CANFD__MESSAGE__EXTENDEDFRAME1__msg__type::decode_text(Text_Buf& text_buf)
+{
+field_test__sig__2__byte__octetstring__msb__coded.decode_text(text_buf);
+}
+
+void CANFD__MESSAGE__EXTENDEDFRAME1__msg__type::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void CANFD__MESSAGE__EXTENDEDFRAME1__msg__type::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int CANFD__MESSAGE__EXTENDEDFRAME1__msg__type::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, CAN__matrix__signals::OCT2__signal__type_descr_.raw->forceomit);
+  decoded_field_length = field_test__sig__2__byte__octetstring__msb__coded.RAW_decode(CAN__matrix__signals::OCT2__signal__type_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int CANFD__MESSAGE__EXTENDEDFRAME1__msg__type::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 = 1;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(1);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, CAN__matrix__signals::OCT2__signal__type_descr_.raw);
+  encoded_length += field_test__sig__2__byte__octetstring__msb__coded.RAW_encode(CAN__matrix__signals::OCT2__signal__type_descr_, *myleaf.body.node.nodes[0]);
+  return myleaf.length = encoded_length;
+}
+
+struct CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template::single_value_struct {
+OCTETSTRING_template field_test__sig__2__byte__octetstring__msb__coded;
+};
+
+void CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_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_test__sig__2__byte__octetstring__msb__coded = ANY_VALUE;
+}
+}
+}
+
+void CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template::copy_value(const CANFD__MESSAGE__EXTENDEDFRAME1__msg__type& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.test__sig__2__byte__octetstring__msb__coded().is_bound()) {
+  single_value->field_test__sig__2__byte__octetstring__msb__coded = other_value.test__sig__2__byte__octetstring__msb__coded();
+} else {
+  single_value->field_test__sig__2__byte__octetstring__msb__coded.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template::copy_template(const CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.test__sig__2__byte__octetstring__msb__coded().get_selection()) {
+single_value->field_test__sig__2__byte__octetstring__msb__coded = other_value.test__sig__2__byte__octetstring__msb__coded();
+} else {
+single_value->field_test__sig__2__byte__octetstring__msb__coded.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @CANFD_matrix_messages.CANFD_MESSAGE_EXTENDEDFRAME1_msg_type.");
+break;
+}
+set_selection(other_value);
+}
+
+CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template::CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template()
+{
+}
+
+CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template::CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template::CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template(const CANFD__MESSAGE__EXTENDEDFRAME1__msg__type& other_value)
+{
+copy_value(other_value);
+}
+
+CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template::CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template(const OPTIONAL<CANFD__MESSAGE__EXTENDEDFRAME1__msg__type>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CANFD__MESSAGE__EXTENDEDFRAME1__msg__type&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @CANFD_matrix_messages.CANFD_MESSAGE_EXTENDEDFRAME1_msg_type from an unbound optional field.");
+}
+}
+
+CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template::CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template(const CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template::~CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template()
+{
+clean_up();
+}
+
+CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template& CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template& CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template::operator=(const CANFD__MESSAGE__EXTENDEDFRAME1__msg__type& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template& CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template::operator=(const OPTIONAL<CANFD__MESSAGE__EXTENDEDFRAME1__msg__type>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CANFD__MESSAGE__EXTENDEDFRAME1__msg__type&)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 @CANFD_matrix_messages.CANFD_MESSAGE_EXTENDEDFRAME1_msg_type.");
+}
+return *this;
+}
+
+CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template& CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template::operator=(const CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template::match(const CANFD__MESSAGE__EXTENDEDFRAME1__msg__type& 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.test__sig__2__byte__octetstring__msb__coded().is_bound()) return FALSE;
+if(!single_value->field_test__sig__2__byte__octetstring__msb__coded.match(other_value.test__sig__2__byte__octetstring__msb__coded(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @CANFD_matrix_messages.CANFD_MESSAGE_EXTENDEDFRAME1_msg_type.");
+}
+return FALSE;
+}
+
+boolean CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_test__sig__2__byte__octetstring__msb__coded.is_bound()
+;
+}
+
+boolean CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_test__sig__2__byte__octetstring__msb__coded.is_value();
+}
+
+void CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+CANFD__MESSAGE__EXTENDEDFRAME1__msg__type CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_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 @CANFD_matrix_messages.CANFD_MESSAGE_EXTENDEDFRAME1_msg_type.");
+CANFD__MESSAGE__EXTENDEDFRAME1__msg__type ret_val;
+if (single_value->field_test__sig__2__byte__octetstring__msb__coded.is_bound()) {
+ret_val.test__sig__2__byte__octetstring__msb__coded() = single_value->field_test__sig__2__byte__octetstring__msb__coded.valueof();
+}
+return ret_val;
+}
+
+void CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @CANFD_matrix_messages.CANFD_MESSAGE_EXTENDEDFRAME1_msg_type.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template[list_length];
+}
+
+CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template& CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @CANFD_matrix_messages.CANFD_MESSAGE_EXTENDEDFRAME1_msg_type.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @CANFD_matrix_messages.CANFD_MESSAGE_EXTENDEDFRAME1_msg_type.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template::test__sig__2__byte__octetstring__msb__coded()
+{
+set_specific();
+return single_value->field_test__sig__2__byte__octetstring__msb__coded;
+}
+
+const OCTETSTRING_template& CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template::test__sig__2__byte__octetstring__msb__coded() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field test_sig_2_byte_octetstring_msb_coded of a non-specific template of type @CANFD_matrix_messages.CANFD_MESSAGE_EXTENDEDFRAME1_msg_type.");
+return single_value->field_test__sig__2__byte__octetstring__msb__coded;
+}
+
+int CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @CANFD_matrix_messages.CANFD_MESSAGE_EXTENDEDFRAME1_msg_type which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 1;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @CANFD_matrix_messages.CANFD_MESSAGE_EXTENDEDFRAME1_msg_type 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 @CANFD_matrix_messages.CANFD_MESSAGE_EXTENDEDFRAME1_msg_type containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @CANFD_matrix_messages.CANFD_MESSAGE_EXTENDEDFRAME1_msg_type containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @CANFD_matrix_messages.CANFD_MESSAGE_EXTENDEDFRAME1_msg_type containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @CANFD_matrix_messages.CANFD_MESSAGE_EXTENDEDFRAME1_msg_type containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @CANFD_matrix_messages.CANFD_MESSAGE_EXTENDEDFRAME1_msg_type.");
+  }
+  return 0;
+}
+
+void CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ test_sig_2_byte_octetstring_msb_coded := ");
+single_value->field_test__sig__2__byte__octetstring__msb__coded.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template::log_match(const CANFD__MESSAGE__EXTENDEDFRAME1__msg__type& 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_test__sig__2__byte__octetstring__msb__coded.match(match_value.test__sig__2__byte__octetstring__msb__coded(), legacy)){
+TTCN_Logger::log_logmatch_info(".test_sig_2_byte_octetstring_msb_coded");
+single_value->field_test__sig__2__byte__octetstring__msb__coded.log_match(match_value.test__sig__2__byte__octetstring__msb__coded(), 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("{ test_sig_2_byte_octetstring_msb_coded := ");
+single_value->field_test__sig__2__byte__octetstring__msb__coded.log_match(match_value.test__sig__2__byte__octetstring__msb__coded(), 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 CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_test__sig__2__byte__octetstring__msb__coded.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 @CANFD_matrix_messages.CANFD_MESSAGE_EXTENDEDFRAME1_msg_type.");
+}
+}
+
+void CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_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_test__sig__2__byte__octetstring__msb__coded.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 CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_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 @CANFD_matrix_messages.CANFD_MESSAGE_EXTENDEDFRAME1_msg_type.");
+}
+}
+
+void CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_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: {
+    CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (1<param.get_size()) {
+      param.error("record template of type @CANFD_matrix_messages.CANFD_MESSAGE_EXTENDEDFRAME1_msg_type has 1 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) test__sig__2__byte__octetstring__msb__coded().set_param(*param.get_elem(0));
+    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(), "test_sig_2_byte_octetstring_msb_coded")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          test__sig__2__byte__octetstring__msb__coded().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 @CANFD_matrix_messages.CANFD_MESSAGE_EXTENDEDFRAME1_msg_type: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@CANFD_matrix_messages.CANFD_MESSAGE_EXTENDEDFRAME1_msg_type");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_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_test__sig__2__byte__octetstring__msb__coded.check_restriction(t_res, t_name ? t_name : "@CANFD_matrix_messages.CANFD_MESSAGE_EXTENDEDFRAME1_msg_type");
+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 : "@CANFD_matrix_messages.CANFD_MESSAGE_EXTENDEDFRAME1_msg_type");
+}
+
+boolean CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 CANFD__MatrixPayloadUnion::copy_value(const CANFD__MatrixPayloadUnion& other_value)
+{
+switch (other_value.union_selection) {
+case ALT_message__MyTestframe0:
+field_message__MyTestframe0 = new CANFD__MESSAGE__TESTFRAME0__msg__type(*other_value.field_message__MyTestframe0);
+break;
+case ALT_message__MyTestframe1:
+field_message__MyTestframe1 = new CANFD__MESSAGE__TESTFRAME1__msg__type(*other_value.field_message__MyTestframe1);
+break;
+case ALT_message__MyTestframe2:
+field_message__MyTestframe2 = new CANFD__MESSAGE__TESTFRAME2__msg__type(*other_value.field_message__MyTestframe2);
+break;
+case ALT_message__MyTestframe3:
+field_message__MyTestframe3 = new CANFD__MESSAGE__TESTFRAME3__msg__type(*other_value.field_message__MyTestframe3);
+break;
+case ALT_message__extendedFrame1:
+field_message__extendedFrame1 = new CANFD__MESSAGE__EXTENDEDFRAME1__msg__type(*other_value.field_message__extendedFrame1);
+break;
+default:
+TTCN_error("Assignment of an unbound union value of type @CANFD_matrix_messages.CANFD_MatrixPayloadUnion.");
+}
+union_selection = other_value.union_selection;
+}
+
+CANFD__MatrixPayloadUnion::CANFD__MatrixPayloadUnion()
+{
+union_selection = UNBOUND_VALUE;
+}
+
+CANFD__MatrixPayloadUnion::CANFD__MatrixPayloadUnion(const CANFD__MatrixPayloadUnion& other_value)
+: Base_Type(){
+copy_value(other_value);
+}
+
+CANFD__MatrixPayloadUnion::~CANFD__MatrixPayloadUnion()
+{
+clean_up();
+}
+
+CANFD__MatrixPayloadUnion& CANFD__MatrixPayloadUnion::operator=(const CANFD__MatrixPayloadUnion& other_value)
+{
+if (this != &other_value) {
+clean_up();
+copy_value(other_value);
+}
+return *this;
+}
+
+boolean CANFD__MatrixPayloadUnion::operator==(const CANFD__MatrixPayloadUnion& other_value) const
+{
+if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @CANFD_matrix_messages.CANFD_MatrixPayloadUnion.");
+if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @CANFD_matrix_messages.CANFD_MatrixPayloadUnion.");
+if (union_selection != other_value.union_selection) return FALSE;
+switch (union_selection) {
+case ALT_message__MyTestframe0:
+return *field_message__MyTestframe0 == *other_value.field_message__MyTestframe0;
+case ALT_message__MyTestframe1:
+return *field_message__MyTestframe1 == *other_value.field_message__MyTestframe1;
+case ALT_message__MyTestframe2:
+return *field_message__MyTestframe2 == *other_value.field_message__MyTestframe2;
+case ALT_message__MyTestframe3:
+return *field_message__MyTestframe3 == *other_value.field_message__MyTestframe3;
+case ALT_message__extendedFrame1:
+return *field_message__extendedFrame1 == *other_value.field_message__extendedFrame1;
+default:
+return FALSE;
+}
+}
+
+CANFD__MESSAGE__TESTFRAME0__msg__type& CANFD__MatrixPayloadUnion::message__MyTestframe0()
+{
+if (union_selection != ALT_message__MyTestframe0) {
+clean_up();
+field_message__MyTestframe0 = new CANFD__MESSAGE__TESTFRAME0__msg__type;
+union_selection = ALT_message__MyTestframe0;
+}
+return *field_message__MyTestframe0;
+}
+
+const CANFD__MESSAGE__TESTFRAME0__msg__type& CANFD__MatrixPayloadUnion::message__MyTestframe0() const
+{
+if (union_selection != ALT_message__MyTestframe0) TTCN_error("Using non-selected field message_MyTestframe0 in a value of union type @CANFD_matrix_messages.CANFD_MatrixPayloadUnion.");
+return *field_message__MyTestframe0;
+}
+
+CANFD__MESSAGE__TESTFRAME1__msg__type& CANFD__MatrixPayloadUnion::message__MyTestframe1()
+{
+if (union_selection != ALT_message__MyTestframe1) {
+clean_up();
+field_message__MyTestframe1 = new CANFD__MESSAGE__TESTFRAME1__msg__type;
+union_selection = ALT_message__MyTestframe1;
+}
+return *field_message__MyTestframe1;
+}
+
+const CANFD__MESSAGE__TESTFRAME1__msg__type& CANFD__MatrixPayloadUnion::message__MyTestframe1() const
+{
+if (union_selection != ALT_message__MyTestframe1) TTCN_error("Using non-selected field message_MyTestframe1 in a value of union type @CANFD_matrix_messages.CANFD_MatrixPayloadUnion.");
+return *field_message__MyTestframe1;
+}
+
+CANFD__MESSAGE__TESTFRAME2__msg__type& CANFD__MatrixPayloadUnion::message__MyTestframe2()
+{
+if (union_selection != ALT_message__MyTestframe2) {
+clean_up();
+field_message__MyTestframe2 = new CANFD__MESSAGE__TESTFRAME2__msg__type;
+union_selection = ALT_message__MyTestframe2;
+}
+return *field_message__MyTestframe2;
+}
+
+const CANFD__MESSAGE__TESTFRAME2__msg__type& CANFD__MatrixPayloadUnion::message__MyTestframe2() const
+{
+if (union_selection != ALT_message__MyTestframe2) TTCN_error("Using non-selected field message_MyTestframe2 in a value of union type @CANFD_matrix_messages.CANFD_MatrixPayloadUnion.");
+return *field_message__MyTestframe2;
+}
+
+CANFD__MESSAGE__TESTFRAME3__msg__type& CANFD__MatrixPayloadUnion::message__MyTestframe3()
+{
+if (union_selection != ALT_message__MyTestframe3) {
+clean_up();
+field_message__MyTestframe3 = new CANFD__MESSAGE__TESTFRAME3__msg__type;
+union_selection = ALT_message__MyTestframe3;
+}
+return *field_message__MyTestframe3;
+}
+
+const CANFD__MESSAGE__TESTFRAME3__msg__type& CANFD__MatrixPayloadUnion::message__MyTestframe3() const
+{
+if (union_selection != ALT_message__MyTestframe3) TTCN_error("Using non-selected field message_MyTestframe3 in a value of union type @CANFD_matrix_messages.CANFD_MatrixPayloadUnion.");
+return *field_message__MyTestframe3;
+}
+
+CANFD__MESSAGE__EXTENDEDFRAME1__msg__type& CANFD__MatrixPayloadUnion::message__extendedFrame1()
+{
+if (union_selection != ALT_message__extendedFrame1) {
+clean_up();
+field_message__extendedFrame1 = new CANFD__MESSAGE__EXTENDEDFRAME1__msg__type;
+union_selection = ALT_message__extendedFrame1;
+}
+return *field_message__extendedFrame1;
+}
+
+const CANFD__MESSAGE__EXTENDEDFRAME1__msg__type& CANFD__MatrixPayloadUnion::message__extendedFrame1() const
+{
+if (union_selection != ALT_message__extendedFrame1) TTCN_error("Using non-selected field message_extendedFrame1 in a value of union type @CANFD_matrix_messages.CANFD_MatrixPayloadUnion.");
+return *field_message__extendedFrame1;
+}
+
+boolean CANFD__MatrixPayloadUnion::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 @CANFD_matrix_messages.CANFD_MatrixPayloadUnion.");
+return union_selection == checked_selection;
+}
+
+boolean CANFD__MatrixPayloadUnion::is_bound() const
+{
+  return union_selection != UNBOUND_VALUE;
+}
+
+boolean CANFD__MatrixPayloadUnion::is_value() const
+{
+switch (union_selection) {
+case UNBOUND_VALUE: return FALSE;
+case ALT_message__MyTestframe0: return field_message__MyTestframe0->is_value();
+case ALT_message__MyTestframe1: return field_message__MyTestframe1->is_value();
+case ALT_message__MyTestframe2: return field_message__MyTestframe2->is_value();
+case ALT_message__MyTestframe3: return field_message__MyTestframe3->is_value();
+case ALT_message__extendedFrame1: return field_message__extendedFrame1->is_value();
+default: TTCN_error("Invalid selection in union is_bound");}
+}
+
+void CANFD__MatrixPayloadUnion::clean_up()
+{
+switch (union_selection) {
+case ALT_message__MyTestframe0:
+  delete field_message__MyTestframe0;
+  break;
+case ALT_message__MyTestframe1:
+  delete field_message__MyTestframe1;
+  break;
+case ALT_message__MyTestframe2:
+  delete field_message__MyTestframe2;
+  break;
+case ALT_message__MyTestframe3:
+  delete field_message__MyTestframe3;
+  break;
+case ALT_message__extendedFrame1:
+  delete field_message__extendedFrame1;
+  break;
+default:
+  break;
+}
+union_selection = UNBOUND_VALUE;
+}
+
+void CANFD__MatrixPayloadUnion::log() const
+{
+switch (union_selection) {
+case ALT_message__MyTestframe0:
+TTCN_Logger::log_event_str("{ message_MyTestframe0 := ");
+field_message__MyTestframe0->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_message__MyTestframe1:
+TTCN_Logger::log_event_str("{ message_MyTestframe1 := ");
+field_message__MyTestframe1->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_message__MyTestframe2:
+TTCN_Logger::log_event_str("{ message_MyTestframe2 := ");
+field_message__MyTestframe2->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_message__MyTestframe3:
+TTCN_Logger::log_event_str("{ message_MyTestframe3 := ");
+field_message__MyTestframe3->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_message__extendedFrame1:
+TTCN_Logger::log_event_str("{ message_extendedFrame1 := ");
+field_message__extendedFrame1->log();
+TTCN_Logger::log_event_str(" }");
+break;
+default:
+TTCN_Logger::log_event_unbound();
+}
+}
+
+void CANFD__MatrixPayloadUnion::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, "message_MyTestframe0")) {
+    message__MyTestframe0().set_param(*mp_last);
+    if (!message__MyTestframe0().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "message_MyTestframe1")) {
+    message__MyTestframe1().set_param(*mp_last);
+    if (!message__MyTestframe1().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "message_MyTestframe2")) {
+    message__MyTestframe2().set_param(*mp_last);
+    if (!message__MyTestframe2().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "message_MyTestframe3")) {
+    message__MyTestframe3().set_param(*mp_last);
+    if (!message__MyTestframe3().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "message_extendedFrame1")) {
+    message__extendedFrame1().set_param(*mp_last);
+    if (!message__extendedFrame1().is_bound()) clean_up();
+    return;
+  }
+  mp_last->error("Field %s does not exist in type @CANFD_matrix_messages.CANFD_MatrixPayloadUnion.", last_name);
+}
+
+void CANFD__MatrixPayloadUnion::set_implicit_omit()
+{
+switch (union_selection) {
+case ALT_message__MyTestframe0:
+field_message__MyTestframe0->set_implicit_omit(); break;
+case ALT_message__MyTestframe1:
+field_message__MyTestframe1->set_implicit_omit(); break;
+case ALT_message__MyTestframe2:
+field_message__MyTestframe2->set_implicit_omit(); break;
+case ALT_message__MyTestframe3:
+field_message__MyTestframe3->set_implicit_omit(); break;
+case ALT_message__extendedFrame1:
+field_message__extendedFrame1->set_implicit_omit(); break;
+default: break;
+}
+}
+
+void CANFD__MatrixPayloadUnion::encode_text(Text_Buf& text_buf) const
+{
+text_buf.push_int(union_selection);
+switch (union_selection) {
+case ALT_message__MyTestframe0:
+field_message__MyTestframe0->encode_text(text_buf);
+break;
+case ALT_message__MyTestframe1:
+field_message__MyTestframe1->encode_text(text_buf);
+break;
+case ALT_message__MyTestframe2:
+field_message__MyTestframe2->encode_text(text_buf);
+break;
+case ALT_message__MyTestframe3:
+field_message__MyTestframe3->encode_text(text_buf);
+break;
+case ALT_message__extendedFrame1:
+field_message__extendedFrame1->encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an unbound value of union type @CANFD_matrix_messages.CANFD_MatrixPayloadUnion.");
+}
+}
+
+void CANFD__MatrixPayloadUnion::decode_text(Text_Buf& text_buf)
+{
+switch ((union_selection_type)text_buf.pull_int().get_val()) {
+case ALT_message__MyTestframe0:
+message__MyTestframe0().decode_text(text_buf);
+break;
+case ALT_message__MyTestframe1:
+message__MyTestframe1().decode_text(text_buf);
+break;
+case ALT_message__MyTestframe2:
+message__MyTestframe2().decode_text(text_buf);
+break;
+case ALT_message__MyTestframe3:
+message__MyTestframe3().decode_text(text_buf);
+break;
+case ALT_message__extendedFrame1:
+message__extendedFrame1().decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for type @CANFD_matrix_messages.CANFD_MatrixPayloadUnion.");
+}
+}
+
+void CANFD__MatrixPayloadUnion::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void CANFD__MatrixPayloadUnion::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int CANFD__MatrixPayloadUnion::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, CANFD__MESSAGE__TESTFRAME0__msg__type_descr_.raw->forceomit);
+      decoded_length = message__MyTestframe0().RAW_decode(CANFD__MESSAGE__TESTFRAME0__msg__type_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, CANFD__MESSAGE__TESTFRAME1__msg__type_descr_.raw->forceomit);
+      decoded_length = message__MyTestframe1().RAW_decode(CANFD__MESSAGE__TESTFRAME1__msg__type_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, CANFD__MESSAGE__TESTFRAME2__msg__type_descr_.raw->forceomit);
+      decoded_length = message__MyTestframe2().RAW_decode(CANFD__MESSAGE__TESTFRAME2__msg__type_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 3: {
+      RAW_Force_Omit field_force_omit(3, force_omit, CANFD__MESSAGE__TESTFRAME3__msg__type_descr_.raw->forceomit);
+      decoded_length = message__MyTestframe3().RAW_decode(CANFD__MESSAGE__TESTFRAME3__msg__type_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 4: {
+      RAW_Force_Omit field_force_omit(4, force_omit, CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_descr_.raw->forceomit);
+      decoded_length = message__extendedFrame1().RAW_decode(CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_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, CANFD__MESSAGE__TESTFRAME0__msg__type_descr_.raw->forceomit);
+      decoded_length = message__MyTestframe0().RAW_decode(CANFD__MESSAGE__TESTFRAME0__msg__type_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, CANFD__MESSAGE__TESTFRAME1__msg__type_descr_.raw->forceomit);
+      decoded_length = message__MyTestframe1().RAW_decode(CANFD__MESSAGE__TESTFRAME1__msg__type_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, CANFD__MESSAGE__TESTFRAME2__msg__type_descr_.raw->forceomit);
+      decoded_length = message__MyTestframe2().RAW_decode(CANFD__MESSAGE__TESTFRAME2__msg__type_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;
+       }
+      p_buf.set_pos_bit(starting_pos);
+      RAW_Force_Omit field_3_force_omit(3, force_omit, CANFD__MESSAGE__TESTFRAME3__msg__type_descr_.raw->forceomit);
+      decoded_length = message__MyTestframe3().RAW_decode(CANFD__MESSAGE__TESTFRAME3__msg__type_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_3_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_4_force_omit(4, force_omit, CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_descr_.raw->forceomit);
+      decoded_length = message__extendedFrame1().RAW_decode(CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_4_force_omit);
+      if (decoded_length >= 0) {
+         return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+       }
+ }
+ clean_up();
+ return -1;
+}
+
+int CANFD__MatrixPayloadUnion::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const
+{
+  int encoded_length = 0;
+  myleaf.isleaf = FALSE;
+  myleaf.body.node.num_of_nodes = 5;  myleaf.body.node.nodes = init_nodes_of_enc_tree(5);
+  memset(myleaf.body.node.nodes, 0, 5 * sizeof(RAW_enc_tree *));
+  switch (union_selection) {
+  case ALT_message__MyTestframe0:
+    myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 0, CANFD__MESSAGE__TESTFRAME0__msg__type_descr_.raw);
+    encoded_length = field_message__MyTestframe0->RAW_encode(CANFD__MESSAGE__TESTFRAME0__msg__type_descr_, *myleaf.body.node.nodes[0]);
+    myleaf.body.node.nodes[0]->coding_descr = &CANFD__MESSAGE__TESTFRAME0__msg__type_descr_;
+    break;
+  case ALT_message__MyTestframe1:
+    myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 1, CANFD__MESSAGE__TESTFRAME1__msg__type_descr_.raw);
+    encoded_length = field_message__MyTestframe1->RAW_encode(CANFD__MESSAGE__TESTFRAME1__msg__type_descr_, *myleaf.body.node.nodes[1]);
+    myleaf.body.node.nodes[1]->coding_descr = &CANFD__MESSAGE__TESTFRAME1__msg__type_descr_;
+    break;
+  case ALT_message__MyTestframe2:
+    myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 2, CANFD__MESSAGE__TESTFRAME2__msg__type_descr_.raw);
+    encoded_length = field_message__MyTestframe2->RAW_encode(CANFD__MESSAGE__TESTFRAME2__msg__type_descr_, *myleaf.body.node.nodes[2]);
+    myleaf.body.node.nodes[2]->coding_descr = &CANFD__MESSAGE__TESTFRAME2__msg__type_descr_;
+    break;
+  case ALT_message__MyTestframe3:
+    myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 3, CANFD__MESSAGE__TESTFRAME3__msg__type_descr_.raw);
+    encoded_length = field_message__MyTestframe3->RAW_encode(CANFD__MESSAGE__TESTFRAME3__msg__type_descr_, *myleaf.body.node.nodes[3]);
+    myleaf.body.node.nodes[3]->coding_descr = &CANFD__MESSAGE__TESTFRAME3__msg__type_descr_;
+    break;
+  case ALT_message__extendedFrame1:
+    myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 4, CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_descr_.raw);
+    encoded_length = field_message__extendedFrame1->RAW_encode(CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_descr_, *myleaf.body.node.nodes[4]);
+    myleaf.body.node.nodes[4]->coding_descr = &CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_descr_;
+    break;
+  default:
+    TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
+  }
+  return encoded_length;
+}
+
+void CANFD__MatrixPayloadUnion_template::copy_value(const CANFD__MatrixPayloadUnion& other_value)
+{
+single_value.union_selection = other_value.get_selection();
+switch (single_value.union_selection) {
+case CANFD__MatrixPayloadUnion::ALT_message__MyTestframe0:
+single_value.field_message__MyTestframe0 = new CANFD__MESSAGE__TESTFRAME0__msg__type_template(other_value.message__MyTestframe0());
+break;
+case CANFD__MatrixPayloadUnion::ALT_message__MyTestframe1:
+single_value.field_message__MyTestframe1 = new CANFD__MESSAGE__TESTFRAME1__msg__type_template(other_value.message__MyTestframe1());
+break;
+case CANFD__MatrixPayloadUnion::ALT_message__MyTestframe2:
+single_value.field_message__MyTestframe2 = new CANFD__MESSAGE__TESTFRAME2__msg__type_template(other_value.message__MyTestframe2());
+break;
+case CANFD__MatrixPayloadUnion::ALT_message__MyTestframe3:
+single_value.field_message__MyTestframe3 = new CANFD__MESSAGE__TESTFRAME3__msg__type_template(other_value.message__MyTestframe3());
+break;
+case CANFD__MatrixPayloadUnion::ALT_message__extendedFrame1:
+single_value.field_message__extendedFrame1 = new CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template(other_value.message__extendedFrame1());
+break;
+default:
+TTCN_error("Initializing a template with an unbound value of type @CANFD_matrix_messages.CANFD_MatrixPayloadUnion.");
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void CANFD__MatrixPayloadUnion_template::copy_template(const CANFD__MatrixPayloadUnion_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 CANFD__MatrixPayloadUnion::ALT_message__MyTestframe0:
+single_value.field_message__MyTestframe0 = new CANFD__MESSAGE__TESTFRAME0__msg__type_template(*other_value.single_value.field_message__MyTestframe0);
+break;
+case CANFD__MatrixPayloadUnion::ALT_message__MyTestframe1:
+single_value.field_message__MyTestframe1 = new CANFD__MESSAGE__TESTFRAME1__msg__type_template(*other_value.single_value.field_message__MyTestframe1);
+break;
+case CANFD__MatrixPayloadUnion::ALT_message__MyTestframe2:
+single_value.field_message__MyTestframe2 = new CANFD__MESSAGE__TESTFRAME2__msg__type_template(*other_value.single_value.field_message__MyTestframe2);
+break;
+case CANFD__MatrixPayloadUnion::ALT_message__MyTestframe3:
+single_value.field_message__MyTestframe3 = new CANFD__MESSAGE__TESTFRAME3__msg__type_template(*other_value.single_value.field_message__MyTestframe3);
+break;
+case CANFD__MatrixPayloadUnion::ALT_message__extendedFrame1:
+single_value.field_message__extendedFrame1 = new CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template(*other_value.single_value.field_message__extendedFrame1);
+break;
+default:
+TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @CANFD_matrix_messages.CANFD_MatrixPayloadUnion.");
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new CANFD__MatrixPayloadUnion_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;
+default:
+TTCN_error("Copying an uninitialized template of union type @CANFD_matrix_messages.CANFD_MatrixPayloadUnion.");
+}
+set_selection(other_value);
+}
+
+CANFD__MatrixPayloadUnion_template::CANFD__MatrixPayloadUnion_template()
+{
+}
+
+CANFD__MatrixPayloadUnion_template::CANFD__MatrixPayloadUnion_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+CANFD__MatrixPayloadUnion_template::CANFD__MatrixPayloadUnion_template(const CANFD__MatrixPayloadUnion& other_value)
+{
+copy_value(other_value);
+}
+
+CANFD__MatrixPayloadUnion_template::CANFD__MatrixPayloadUnion_template(const OPTIONAL<CANFD__MatrixPayloadUnion>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CANFD__MatrixPayloadUnion&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of union type @CANFD_matrix_messages.CANFD_MatrixPayloadUnion from an unbound optional field.");
+}
+}
+
+CANFD__MatrixPayloadUnion_template::CANFD__MatrixPayloadUnion_template(const CANFD__MatrixPayloadUnion_template& other_value)
+: Base_Template(){
+copy_template(other_value);
+}
+
+CANFD__MatrixPayloadUnion_template::~CANFD__MatrixPayloadUnion_template()
+{
+clean_up();
+}
+
+void CANFD__MatrixPayloadUnion_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case CANFD__MatrixPayloadUnion::ALT_message__MyTestframe0:
+delete single_value.field_message__MyTestframe0;
+break;
+case CANFD__MatrixPayloadUnion::ALT_message__MyTestframe1:
+delete single_value.field_message__MyTestframe1;
+break;
+case CANFD__MatrixPayloadUnion::ALT_message__MyTestframe2:
+delete single_value.field_message__MyTestframe2;
+break;
+case CANFD__MatrixPayloadUnion::ALT_message__MyTestframe3:
+delete single_value.field_message__MyTestframe3;
+break;
+case CANFD__MatrixPayloadUnion::ALT_message__extendedFrame1:
+delete single_value.field_message__extendedFrame1;
+default:
+break;
+}
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+CANFD__MatrixPayloadUnion_template& CANFD__MatrixPayloadUnion_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+CANFD__MatrixPayloadUnion_template& CANFD__MatrixPayloadUnion_template::operator=(const CANFD__MatrixPayloadUnion& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+CANFD__MatrixPayloadUnion_template& CANFD__MatrixPayloadUnion_template::operator=(const OPTIONAL<CANFD__MatrixPayloadUnion>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CANFD__MatrixPayloadUnion&)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 @CANFD_matrix_messages.CANFD_MatrixPayloadUnion.");
+}
+return *this;
+}
+
+CANFD__MatrixPayloadUnion_template& CANFD__MatrixPayloadUnion_template::operator=(const CANFD__MatrixPayloadUnion_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean CANFD__MatrixPayloadUnion_template::match(const CANFD__MatrixPayloadUnion& 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:
+{
+CANFD__MatrixPayloadUnion::union_selection_type value_selection = other_value.get_selection();
+if (value_selection == CANFD__MatrixPayloadUnion::UNBOUND_VALUE) return FALSE;
+if (value_selection != single_value.union_selection) return FALSE;
+switch (value_selection) {
+case CANFD__MatrixPayloadUnion::ALT_message__MyTestframe0:
+return single_value.field_message__MyTestframe0->match(other_value.message__MyTestframe0(), legacy);
+case CANFD__MatrixPayloadUnion::ALT_message__MyTestframe1:
+return single_value.field_message__MyTestframe1->match(other_value.message__MyTestframe1(), legacy);
+case CANFD__MatrixPayloadUnion::ALT_message__MyTestframe2:
+return single_value.field_message__MyTestframe2->match(other_value.message__MyTestframe2(), legacy);
+case CANFD__MatrixPayloadUnion::ALT_message__MyTestframe3:
+return single_value.field_message__MyTestframe3->match(other_value.message__MyTestframe3(), legacy);
+case CANFD__MatrixPayloadUnion::ALT_message__extendedFrame1:
+return single_value.field_message__extendedFrame1->match(other_value.message__extendedFrame1(), legacy);
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @CANFD_matrix_messages.CANFD_MatrixPayloadUnion.");
+}
+}
+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;
+default:
+TTCN_error ("Matching an uninitialized template of union type @CANFD_matrix_messages.CANFD_MatrixPayloadUnion.");
+}
+return FALSE;
+}
+
+boolean CANFD__MatrixPayloadUnion_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+switch (single_value.union_selection) {
+case CANFD__MatrixPayloadUnion::ALT_message__MyTestframe0:
+return single_value.field_message__MyTestframe0->is_value();
+case CANFD__MatrixPayloadUnion::ALT_message__MyTestframe1:
+return single_value.field_message__MyTestframe1->is_value();
+case CANFD__MatrixPayloadUnion::ALT_message__MyTestframe2:
+return single_value.field_message__MyTestframe2->is_value();
+case CANFD__MatrixPayloadUnion::ALT_message__MyTestframe3:
+return single_value.field_message__MyTestframe3->is_value();
+case CANFD__MatrixPayloadUnion::ALT_message__extendedFrame1:
+return single_value.field_message__extendedFrame1->is_value();
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @CANFD_matrix_messages.CANFD_MatrixPayloadUnion.");
+}
+}
+
+CANFD__MatrixPayloadUnion CANFD__MatrixPayloadUnion_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 @CANFD_matrix_messages.CANFD_MatrixPayloadUnion.");
+CANFD__MatrixPayloadUnion ret_val;
+switch (single_value.union_selection) {
+case CANFD__MatrixPayloadUnion::ALT_message__MyTestframe0:
+ret_val.message__MyTestframe0() = single_value.field_message__MyTestframe0->valueof();
+break;
+case CANFD__MatrixPayloadUnion::ALT_message__MyTestframe1:
+ret_val.message__MyTestframe1() = single_value.field_message__MyTestframe1->valueof();
+break;
+case CANFD__MatrixPayloadUnion::ALT_message__MyTestframe2:
+ret_val.message__MyTestframe2() = single_value.field_message__MyTestframe2->valueof();
+break;
+case CANFD__MatrixPayloadUnion::ALT_message__MyTestframe3:
+ret_val.message__MyTestframe3() = single_value.field_message__MyTestframe3->valueof();
+break;
+case CANFD__MatrixPayloadUnion::ALT_message__extendedFrame1:
+ret_val.message__extendedFrame1() = single_value.field_message__extendedFrame1->valueof();
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @CANFD_matrix_messages.CANFD_MatrixPayloadUnion.");
+}
+return ret_val;
+}
+
+CANFD__MatrixPayloadUnion_template& CANFD__MatrixPayloadUnion_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @CANFD_matrix_messages.CANFD_MatrixPayloadUnion.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @CANFD_matrix_messages.CANFD_MatrixPayloadUnion.");
+return value_list.list_value[list_index];
+}
+void CANFD__MatrixPayloadUnion_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error ("Internal error: Setting an invalid list for a template of union type @CANFD_matrix_messages.CANFD_MatrixPayloadUnion.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new CANFD__MatrixPayloadUnion_template[list_length];
+}
+
+CANFD__MESSAGE__TESTFRAME0__msg__type_template& CANFD__MatrixPayloadUnion_template::message__MyTestframe0()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != CANFD__MatrixPayloadUnion::ALT_message__MyTestframe0) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_message__MyTestframe0 = new CANFD__MESSAGE__TESTFRAME0__msg__type_template(ANY_VALUE);
+else single_value.field_message__MyTestframe0 = new CANFD__MESSAGE__TESTFRAME0__msg__type_template;
+single_value.union_selection = CANFD__MatrixPayloadUnion::ALT_message__MyTestframe0;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_message__MyTestframe0;
+}
+
+const CANFD__MESSAGE__TESTFRAME0__msg__type_template& CANFD__MatrixPayloadUnion_template::message__MyTestframe0() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field message_MyTestframe0 in a non-specific template of union type @CANFD_matrix_messages.CANFD_MatrixPayloadUnion.");
+if (single_value.union_selection != CANFD__MatrixPayloadUnion::ALT_message__MyTestframe0) TTCN_error("Accessing non-selected field message_MyTestframe0 in a template of union type @CANFD_matrix_messages.CANFD_MatrixPayloadUnion.");
+return *single_value.field_message__MyTestframe0;
+}
+
+CANFD__MESSAGE__TESTFRAME1__msg__type_template& CANFD__MatrixPayloadUnion_template::message__MyTestframe1()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != CANFD__MatrixPayloadUnion::ALT_message__MyTestframe1) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_message__MyTestframe1 = new CANFD__MESSAGE__TESTFRAME1__msg__type_template(ANY_VALUE);
+else single_value.field_message__MyTestframe1 = new CANFD__MESSAGE__TESTFRAME1__msg__type_template;
+single_value.union_selection = CANFD__MatrixPayloadUnion::ALT_message__MyTestframe1;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_message__MyTestframe1;
+}
+
+const CANFD__MESSAGE__TESTFRAME1__msg__type_template& CANFD__MatrixPayloadUnion_template::message__MyTestframe1() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field message_MyTestframe1 in a non-specific template of union type @CANFD_matrix_messages.CANFD_MatrixPayloadUnion.");
+if (single_value.union_selection != CANFD__MatrixPayloadUnion::ALT_message__MyTestframe1) TTCN_error("Accessing non-selected field message_MyTestframe1 in a template of union type @CANFD_matrix_messages.CANFD_MatrixPayloadUnion.");
+return *single_value.field_message__MyTestframe1;
+}
+
+CANFD__MESSAGE__TESTFRAME2__msg__type_template& CANFD__MatrixPayloadUnion_template::message__MyTestframe2()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != CANFD__MatrixPayloadUnion::ALT_message__MyTestframe2) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_message__MyTestframe2 = new CANFD__MESSAGE__TESTFRAME2__msg__type_template(ANY_VALUE);
+else single_value.field_message__MyTestframe2 = new CANFD__MESSAGE__TESTFRAME2__msg__type_template;
+single_value.union_selection = CANFD__MatrixPayloadUnion::ALT_message__MyTestframe2;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_message__MyTestframe2;
+}
+
+const CANFD__MESSAGE__TESTFRAME2__msg__type_template& CANFD__MatrixPayloadUnion_template::message__MyTestframe2() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field message_MyTestframe2 in a non-specific template of union type @CANFD_matrix_messages.CANFD_MatrixPayloadUnion.");
+if (single_value.union_selection != CANFD__MatrixPayloadUnion::ALT_message__MyTestframe2) TTCN_error("Accessing non-selected field message_MyTestframe2 in a template of union type @CANFD_matrix_messages.CANFD_MatrixPayloadUnion.");
+return *single_value.field_message__MyTestframe2;
+}
+
+CANFD__MESSAGE__TESTFRAME3__msg__type_template& CANFD__MatrixPayloadUnion_template::message__MyTestframe3()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != CANFD__MatrixPayloadUnion::ALT_message__MyTestframe3) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_message__MyTestframe3 = new CANFD__MESSAGE__TESTFRAME3__msg__type_template(ANY_VALUE);
+else single_value.field_message__MyTestframe3 = new CANFD__MESSAGE__TESTFRAME3__msg__type_template;
+single_value.union_selection = CANFD__MatrixPayloadUnion::ALT_message__MyTestframe3;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_message__MyTestframe3;
+}
+
+const CANFD__MESSAGE__TESTFRAME3__msg__type_template& CANFD__MatrixPayloadUnion_template::message__MyTestframe3() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field message_MyTestframe3 in a non-specific template of union type @CANFD_matrix_messages.CANFD_MatrixPayloadUnion.");
+if (single_value.union_selection != CANFD__MatrixPayloadUnion::ALT_message__MyTestframe3) TTCN_error("Accessing non-selected field message_MyTestframe3 in a template of union type @CANFD_matrix_messages.CANFD_MatrixPayloadUnion.");
+return *single_value.field_message__MyTestframe3;
+}
+
+CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template& CANFD__MatrixPayloadUnion_template::message__extendedFrame1()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != CANFD__MatrixPayloadUnion::ALT_message__extendedFrame1) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_message__extendedFrame1 = new CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template(ANY_VALUE);
+else single_value.field_message__extendedFrame1 = new CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template;
+single_value.union_selection = CANFD__MatrixPayloadUnion::ALT_message__extendedFrame1;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_message__extendedFrame1;
+}
+
+const CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template& CANFD__MatrixPayloadUnion_template::message__extendedFrame1() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field message_extendedFrame1 in a non-specific template of union type @CANFD_matrix_messages.CANFD_MatrixPayloadUnion.");
+if (single_value.union_selection != CANFD__MatrixPayloadUnion::ALT_message__extendedFrame1) TTCN_error("Accessing non-selected field message_extendedFrame1 in a template of union type @CANFD_matrix_messages.CANFD_MatrixPayloadUnion.");
+return *single_value.field_message__extendedFrame1;
+}
+
+boolean CANFD__MatrixPayloadUnion_template::ischosen(CANFD__MatrixPayloadUnion::union_selection_type checked_selection) const
+{
+if (checked_selection == CANFD__MatrixPayloadUnion::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @CANFD_matrix_messages.CANFD_MatrixPayloadUnion.");
+switch (template_selection) {
+case SPECIFIC_VALUE:
+if (single_value.union_selection == CANFD__MatrixPayloadUnion::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @CANFD_matrix_messages.CANFD_MatrixPayloadUnion.");
+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 @CANFD_matrix_messages.CANFD_MatrixPayloadUnion 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 CANFD__MatrixPayloadUnion_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case CANFD__MatrixPayloadUnion::ALT_message__MyTestframe0:
+TTCN_Logger::log_event_str("{ message_MyTestframe0 := ");
+single_value.field_message__MyTestframe0->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case CANFD__MatrixPayloadUnion::ALT_message__MyTestframe1:
+TTCN_Logger::log_event_str("{ message_MyTestframe1 := ");
+single_value.field_message__MyTestframe1->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case CANFD__MatrixPayloadUnion::ALT_message__MyTestframe2:
+TTCN_Logger::log_event_str("{ message_MyTestframe2 := ");
+single_value.field_message__MyTestframe2->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case CANFD__MatrixPayloadUnion::ALT_message__MyTestframe3:
+TTCN_Logger::log_event_str("{ message_MyTestframe3 := ");
+single_value.field_message__MyTestframe3->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case CANFD__MatrixPayloadUnion::ALT_message__extendedFrame1:
+TTCN_Logger::log_event_str("{ message_extendedFrame1 := ");
+single_value.field_message__extendedFrame1->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 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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void CANFD__MatrixPayloadUnion_template::log_match(const CANFD__MatrixPayloadUnion& 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()) {
+switch (single_value.union_selection) {
+case CANFD__MatrixPayloadUnion::ALT_message__MyTestframe0:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".message_MyTestframe0");
+single_value.field_message__MyTestframe0->log_match(match_value.message__MyTestframe0(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ message_MyTestframe0 := ");
+single_value.field_message__MyTestframe0->log_match(match_value.message__MyTestframe0(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case CANFD__MatrixPayloadUnion::ALT_message__MyTestframe1:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".message_MyTestframe1");
+single_value.field_message__MyTestframe1->log_match(match_value.message__MyTestframe1(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ message_MyTestframe1 := ");
+single_value.field_message__MyTestframe1->log_match(match_value.message__MyTestframe1(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case CANFD__MatrixPayloadUnion::ALT_message__MyTestframe2:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".message_MyTestframe2");
+single_value.field_message__MyTestframe2->log_match(match_value.message__MyTestframe2(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ message_MyTestframe2 := ");
+single_value.field_message__MyTestframe2->log_match(match_value.message__MyTestframe2(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case CANFD__MatrixPayloadUnion::ALT_message__MyTestframe3:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".message_MyTestframe3");
+single_value.field_message__MyTestframe3->log_match(match_value.message__MyTestframe3(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ message_MyTestframe3 := ");
+single_value.field_message__MyTestframe3->log_match(match_value.message__MyTestframe3(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case CANFD__MatrixPayloadUnion::ALT_message__extendedFrame1:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".message_extendedFrame1");
+single_value.field_message__extendedFrame1->log_match(match_value.message__extendedFrame1(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ message_extendedFrame1 := ");
+single_value.field_message__extendedFrame1->log_match(match_value.message__extendedFrame1(), 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 CANFD__MatrixPayloadUnion_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 CANFD__MatrixPayloadUnion::ALT_message__MyTestframe0:
+single_value.field_message__MyTestframe0->encode_text(text_buf);
+break;
+case CANFD__MatrixPayloadUnion::ALT_message__MyTestframe1:
+single_value.field_message__MyTestframe1->encode_text(text_buf);
+break;
+case CANFD__MatrixPayloadUnion::ALT_message__MyTestframe2:
+single_value.field_message__MyTestframe2->encode_text(text_buf);
+break;
+case CANFD__MatrixPayloadUnion::ALT_message__MyTestframe3:
+single_value.field_message__MyTestframe3->encode_text(text_buf);
+break;
+case CANFD__MatrixPayloadUnion::ALT_message__extendedFrame1:
+single_value.field_message__extendedFrame1->encode_text(text_buf);
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @CANFD_matrix_messages.CANFD_MatrixPayloadUnion.");
+}
+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 @CANFD_matrix_messages.CANFD_MatrixPayloadUnion.");
+}
+}
+
+void CANFD__MatrixPayloadUnion_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+{
+single_value.union_selection = CANFD__MatrixPayloadUnion::UNBOUND_VALUE;
+CANFD__MatrixPayloadUnion::union_selection_type new_selection = (CANFD__MatrixPayloadUnion::union_selection_type)text_buf.pull_int().get_val();
+switch (new_selection) {
+case CANFD__MatrixPayloadUnion::ALT_message__MyTestframe0:
+single_value.field_message__MyTestframe0 = new CANFD__MESSAGE__TESTFRAME0__msg__type_template;
+single_value.field_message__MyTestframe0->decode_text(text_buf);
+break;
+case CANFD__MatrixPayloadUnion::ALT_message__MyTestframe1:
+single_value.field_message__MyTestframe1 = new CANFD__MESSAGE__TESTFRAME1__msg__type_template;
+single_value.field_message__MyTestframe1->decode_text(text_buf);
+break;
+case CANFD__MatrixPayloadUnion::ALT_message__MyTestframe2:
+single_value.field_message__MyTestframe2 = new CANFD__MESSAGE__TESTFRAME2__msg__type_template;
+single_value.field_message__MyTestframe2->decode_text(text_buf);
+break;
+case CANFD__MatrixPayloadUnion::ALT_message__MyTestframe3:
+single_value.field_message__MyTestframe3 = new CANFD__MESSAGE__TESTFRAME3__msg__type_template;
+single_value.field_message__MyTestframe3->decode_text(text_buf);
+break;
+case CANFD__MatrixPayloadUnion::ALT_message__extendedFrame1:
+single_value.field_message__extendedFrame1 = new CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template;
+single_value.field_message__extendedFrame1->decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @CANFD_matrix_messages.CANFD_MatrixPayloadUnion.");
+}
+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 CANFD__MatrixPayloadUnion_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 @CANFD_matrix_messages.CANFD_MatrixPayloadUnion.");
+}
+}
+
+boolean CANFD__MatrixPayloadUnion_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean CANFD__MatrixPayloadUnion_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 CANFD__MatrixPayloadUnion_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 `@CANFD_matrix_messages.CANFD_MatrixPayloadUnion'");
+    }
+    if (strcmp("message_MyTestframe0", param_field) == 0) {
+      message__MyTestframe0().set_param(param);
+      return;
+    } else if (strcmp("message_MyTestframe1", param_field) == 0) {
+      message__MyTestframe1().set_param(param);
+      return;
+    } else if (strcmp("message_MyTestframe2", param_field) == 0) {
+      message__MyTestframe2().set_param(param);
+      return;
+    } else if (strcmp("message_MyTestframe3", param_field) == 0) {
+      message__MyTestframe3().set_param(param);
+      return;
+    } else if (strcmp("message_extendedFrame1", param_field) == 0) {
+      message__extendedFrame1().set_param(param);
+      return;
+    } else param.error("Field `%s' not found in union template type `@CANFD_matrix_messages.CANFD_MatrixPayloadUnion'", 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: {
+    CANFD__MatrixPayloadUnion_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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", "@CANFD_matrix_messages.CANFD_MatrixPayloadUnion");
+    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, "message_MyTestframe0")) {
+      message__MyTestframe0().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "message_MyTestframe1")) {
+      message__MyTestframe1().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "message_MyTestframe2")) {
+      message__MyTestframe2().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "message_MyTestframe3")) {
+      message__MyTestframe3().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "message_extendedFrame1")) {
+      message__extendedFrame1().set_param(*mp_last);
+      break;
+    }
+    mp_last->error("Field %s does not exist in type @CANFD_matrix_messages.CANFD_MatrixPayloadUnion.", last_name);
+  } break;
+  default:
+    param.type_error("union template", "@CANFD_matrix_messages.CANFD_MatrixPayloadUnion");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void CANFD__MatrixPayloadUnion_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 CANFD__MatrixPayloadUnion::ALT_message__MyTestframe0:
+single_value.field_message__MyTestframe0->check_restriction(t_res, t_name ? t_name : "@CANFD_matrix_messages.CANFD_MatrixPayloadUnion");
+return;
+case CANFD__MatrixPayloadUnion::ALT_message__MyTestframe1:
+single_value.field_message__MyTestframe1->check_restriction(t_res, t_name ? t_name : "@CANFD_matrix_messages.CANFD_MatrixPayloadUnion");
+return;
+case CANFD__MatrixPayloadUnion::ALT_message__MyTestframe2:
+single_value.field_message__MyTestframe2->check_restriction(t_res, t_name ? t_name : "@CANFD_matrix_messages.CANFD_MatrixPayloadUnion");
+return;
+case CANFD__MatrixPayloadUnion::ALT_message__MyTestframe3:
+single_value.field_message__MyTestframe3->check_restriction(t_res, t_name ? t_name : "@CANFD_matrix_messages.CANFD_MatrixPayloadUnion");
+return;
+case CANFD__MatrixPayloadUnion::ALT_message__extendedFrame1:
+single_value.field_message__extendedFrame1->check_restriction(t_res, t_name ? t_name : "@CANFD_matrix_messages.CANFD_MatrixPayloadUnion");
+return;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @CANFD_matrix_messages.CANFD_MatrixPayloadUnion.");
+}
+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 : "@CANFD_matrix_messages.CANFD_MatrixPayloadUnion");
+}
+
+CANFD__MatrixUnion::CANFD__MatrixUnion()
+{
+}
+
+CANFD__MatrixUnion::CANFD__MatrixUnion(const OCTETSTRING& par_can__id,
+    const BITSTRING& par_can__flags,
+    const CANFD__MatrixPayloadUnion& par_can__pdu)
+  :   field_can__id(par_can__id),
+  field_can__flags(par_can__flags),
+  field_can__pdu(par_can__pdu)
+{
+}
+
+CANFD__MatrixUnion::CANFD__MatrixUnion(const CANFD__MatrixUnion& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @CANFD_matrix_messages.CANFD_MatrixUnion.");
+if (other_value.can__id().is_bound()) field_can__id = other_value.can__id();
+else field_can__id.clean_up();
+if (other_value.can__flags().is_bound()) field_can__flags = other_value.can__flags();
+else field_can__flags.clean_up();
+if (other_value.can__pdu().is_bound()) field_can__pdu = other_value.can__pdu();
+else field_can__pdu.clean_up();
+}
+
+void CANFD__MatrixUnion::clean_up()
+{
+field_can__id.clean_up();
+field_can__flags.clean_up();
+field_can__pdu.clean_up();
+}
+
+const TTCN_Typedescriptor_t* CANFD__MatrixUnion::get_descriptor() const { return &CANFD__MatrixUnion_descr_; }
+CANFD__MatrixUnion& CANFD__MatrixUnion::operator=(const CANFD__MatrixUnion& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @CANFD_matrix_messages.CANFD_MatrixUnion.");
+  if (other_value.can__id().is_bound()) field_can__id = other_value.can__id();
+  else field_can__id.clean_up();
+  if (other_value.can__flags().is_bound()) field_can__flags = other_value.can__flags();
+  else field_can__flags.clean_up();
+  if (other_value.can__pdu().is_bound()) field_can__pdu = other_value.can__pdu();
+  else field_can__pdu.clean_up();
+}
+return *this;
+}
+
+boolean CANFD__MatrixUnion::operator==(const CANFD__MatrixUnion& other_value) const
+{
+return field_can__id==other_value.field_can__id
+  && field_can__flags==other_value.field_can__flags
+  && field_can__pdu==other_value.field_can__pdu;
+}
+
+boolean CANFD__MatrixUnion::is_bound() const
+{
+return (field_can__id.is_bound())
+  || (field_can__flags.is_bound())
+  || (field_can__pdu.is_bound());
+}
+boolean CANFD__MatrixUnion::is_value() const
+{
+return field_can__id.is_value()
+  && field_can__flags.is_value()
+  && field_can__pdu.is_value();
+}
+void CANFD__MatrixUnion::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ can_id := ");
+field_can__id.log();
+TTCN_Logger::log_event_str(", can_flags := ");
+field_can__flags.log();
+TTCN_Logger::log_event_str(", can_pdu := ");
+field_can__pdu.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void CANFD__MatrixUnion::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 @CANFD_matrix_messages.CANFD_MatrixUnion 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) can__id().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) can__flags().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) can__pdu().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(), "can_id")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          can__id().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(), "can_flags")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          can__flags().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(), "can_pdu")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          can__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 @CANFD_matrix_messages.CANFD_MatrixUnion: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@CANFD_matrix_messages.CANFD_MatrixUnion");
+  }
+}
+
+void CANFD__MatrixUnion::set_implicit_omit()
+{
+if (can__id().is_bound()) can__id().set_implicit_omit();
+if (can__flags().is_bound()) can__flags().set_implicit_omit();
+if (can__pdu().is_bound()) can__pdu().set_implicit_omit();
+}
+
+void CANFD__MatrixUnion::encode_text(Text_Buf& text_buf) const
+{
+field_can__id.encode_text(text_buf);
+field_can__flags.encode_text(text_buf);
+field_can__pdu.encode_text(text_buf);
+}
+
+void CANFD__MatrixUnion::decode_text(Text_Buf& text_buf)
+{
+field_can__id.decode_text(text_buf);
+field_can__flags.decode_text(text_buf);
+field_can__pdu.decode_text(text_buf);
+}
+
+void CANFD__MatrixUnion::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void CANFD__MatrixUnion::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int CANFD__MatrixUnion::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, Can::CAN__id_descr_.raw->forceomit);
+  decoded_field_length = field_can__id.RAW_decode(Can::CAN__id_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, Can::CAN__flags_descr_.raw->forceomit);
+  decoded_field_length = field_can__flags.RAW_decode(Can::CAN__flags_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_can__id ==  os_0) selected_field = 0;
+  else if (field_can__id ==  os_1) selected_field = 1;
+  else if (field_can__id ==  os_2) selected_field = 2;
+  else if (field_can__id ==  os_3) selected_field = 3;
+  else if (field_can__id ==  os_4) selected_field = 4;
+  else selected_field = -1;
+  RAW_Force_Omit field_2_force_omit(2, force_omit, CANFD__MatrixUnion_can__pdu_descr_.raw->forceomit);
+  decoded_field_length = field_can__pdu.RAW_decode(CANFD__MatrixUnion_can__pdu_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int CANFD__MatrixUnion::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, Can::CAN__id_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, Can::CAN__flags_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, CANFD__MatrixUnion_can__pdu_descr_.raw);
+  encoded_length += field_can__id.RAW_encode(Can::CAN__id_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_can__flags.RAW_encode(Can::CAN__flags_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_can__pdu.RAW_encode(CANFD__MatrixUnion_can__pdu_descr_, *myleaf.body.node.nodes[2]);
+  switch (field_can__pdu.get_selection()) {
+  case CANFD__MatrixPayloadUnion::ALT_message__MyTestframe0:
+  if (field_can__id !=  os_0) {
+  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)
+     os_0.RAW_encode(Can::CAN__id_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 CANFD__MatrixPayloadUnion::ALT_message__MyTestframe1:
+  if (field_can__id !=  os_1) {
+  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)
+     os_1.RAW_encode(Can::CAN__id_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 CANFD__MatrixPayloadUnion::ALT_message__MyTestframe2:
+  if (field_can__id !=  os_2) {
+  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)
+     os_2.RAW_encode(Can::CAN__id_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 CANFD__MatrixPayloadUnion::ALT_message__MyTestframe3:
+  if (field_can__id !=  os_3) {
+  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)
+     os_3.RAW_encode(Can::CAN__id_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 CANFD__MatrixPayloadUnion::ALT_message__extendedFrame1:
+  if (field_can__id !=  os_4) {
+  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)
+     os_4.RAW_encode(Can::CAN__id_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 CANFD__MatrixUnion_template::single_value_struct {
+OCTETSTRING_template field_can__id;
+BITSTRING_template field_can__flags;
+CANFD__MatrixPayloadUnion_template field_can__pdu;
+};
+
+void CANFD__MatrixUnion_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_can__id = ANY_VALUE;
+single_value->field_can__flags = ANY_VALUE;
+single_value->field_can__pdu = ANY_VALUE;
+}
+}
+}
+
+void CANFD__MatrixUnion_template::copy_value(const CANFD__MatrixUnion& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.can__id().is_bound()) {
+  single_value->field_can__id = other_value.can__id();
+} else {
+  single_value->field_can__id.clean_up();
+}
+if (other_value.can__flags().is_bound()) {
+  single_value->field_can__flags = other_value.can__flags();
+} else {
+  single_value->field_can__flags.clean_up();
+}
+if (other_value.can__pdu().is_bound()) {
+  single_value->field_can__pdu = other_value.can__pdu();
+} else {
+  single_value->field_can__pdu.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void CANFD__MatrixUnion_template::copy_template(const CANFD__MatrixUnion_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.can__id().get_selection()) {
+single_value->field_can__id = other_value.can__id();
+} else {
+single_value->field_can__id.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.can__flags().get_selection()) {
+single_value->field_can__flags = other_value.can__flags();
+} else {
+single_value->field_can__flags.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.can__pdu().get_selection()) {
+single_value->field_can__pdu = other_value.can__pdu();
+} else {
+single_value->field_can__pdu.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new CANFD__MatrixUnion_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @CANFD_matrix_messages.CANFD_MatrixUnion.");
+break;
+}
+set_selection(other_value);
+}
+
+CANFD__MatrixUnion_template::CANFD__MatrixUnion_template()
+{
+}
+
+CANFD__MatrixUnion_template::CANFD__MatrixUnion_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+CANFD__MatrixUnion_template::CANFD__MatrixUnion_template(const CANFD__MatrixUnion& other_value)
+{
+copy_value(other_value);
+}
+
+CANFD__MatrixUnion_template::CANFD__MatrixUnion_template(const OPTIONAL<CANFD__MatrixUnion>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CANFD__MatrixUnion&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @CANFD_matrix_messages.CANFD_MatrixUnion from an unbound optional field.");
+}
+}
+
+CANFD__MatrixUnion_template::CANFD__MatrixUnion_template(const CANFD__MatrixUnion_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+CANFD__MatrixUnion_template::~CANFD__MatrixUnion_template()
+{
+clean_up();
+}
+
+CANFD__MatrixUnion_template& CANFD__MatrixUnion_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+CANFD__MatrixUnion_template& CANFD__MatrixUnion_template::operator=(const CANFD__MatrixUnion& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+CANFD__MatrixUnion_template& CANFD__MatrixUnion_template::operator=(const OPTIONAL<CANFD__MatrixUnion>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CANFD__MatrixUnion&)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 @CANFD_matrix_messages.CANFD_MatrixUnion.");
+}
+return *this;
+}
+
+CANFD__MatrixUnion_template& CANFD__MatrixUnion_template::operator=(const CANFD__MatrixUnion_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean CANFD__MatrixUnion_template::match(const CANFD__MatrixUnion& 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.can__id().is_bound()) return FALSE;
+if(!single_value->field_can__id.match(other_value.can__id(), legacy))return FALSE;
+if(!other_value.can__flags().is_bound()) return FALSE;
+if(!single_value->field_can__flags.match(other_value.can__flags(), legacy))return FALSE;
+if(!other_value.can__pdu().is_bound()) return FALSE;
+if(!single_value->field_can__pdu.match(other_value.can__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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @CANFD_matrix_messages.CANFD_MatrixUnion.");
+}
+return FALSE;
+}
+
+boolean CANFD__MatrixUnion_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_can__id.is_bound()
+
+ ||single_value->field_can__flags.is_bound()
+
+ ||single_value->field_can__pdu.is_bound()
+;
+}
+
+boolean CANFD__MatrixUnion_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_can__id.is_value()
+ &&single_value->field_can__flags.is_value()
+ &&single_value->field_can__pdu.is_value();
+}
+
+void CANFD__MatrixUnion_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+CANFD__MatrixUnion CANFD__MatrixUnion_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 @CANFD_matrix_messages.CANFD_MatrixUnion.");
+CANFD__MatrixUnion ret_val;
+if (single_value->field_can__id.is_bound()) {
+ret_val.can__id() = single_value->field_can__id.valueof();
+}
+if (single_value->field_can__flags.is_bound()) {
+ret_val.can__flags() = single_value->field_can__flags.valueof();
+}
+if (single_value->field_can__pdu.is_bound()) {
+ret_val.can__pdu() = single_value->field_can__pdu.valueof();
+}
+return ret_val;
+}
+
+void CANFD__MatrixUnion_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @CANFD_matrix_messages.CANFD_MatrixUnion.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new CANFD__MatrixUnion_template[list_length];
+}
+
+CANFD__MatrixUnion_template& CANFD__MatrixUnion_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @CANFD_matrix_messages.CANFD_MatrixUnion.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @CANFD_matrix_messages.CANFD_MatrixUnion.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& CANFD__MatrixUnion_template::can__id()
+{
+set_specific();
+return single_value->field_can__id;
+}
+
+const OCTETSTRING_template& CANFD__MatrixUnion_template::can__id() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field can_id of a non-specific template of type @CANFD_matrix_messages.CANFD_MatrixUnion.");
+return single_value->field_can__id;
+}
+
+BITSTRING_template& CANFD__MatrixUnion_template::can__flags()
+{
+set_specific();
+return single_value->field_can__flags;
+}
+
+const BITSTRING_template& CANFD__MatrixUnion_template::can__flags() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field can_flags of a non-specific template of type @CANFD_matrix_messages.CANFD_MatrixUnion.");
+return single_value->field_can__flags;
+}
+
+CANFD__MatrixPayloadUnion_template& CANFD__MatrixUnion_template::can__pdu()
+{
+set_specific();
+return single_value->field_can__pdu;
+}
+
+const CANFD__MatrixPayloadUnion_template& CANFD__MatrixUnion_template::can__pdu() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field can_pdu of a non-specific template of type @CANFD_matrix_messages.CANFD_MatrixUnion.");
+return single_value->field_can__pdu;
+}
+
+int CANFD__MatrixUnion_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @CANFD_matrix_messages.CANFD_MatrixUnion 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 @CANFD_matrix_messages.CANFD_MatrixUnion 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 @CANFD_matrix_messages.CANFD_MatrixUnion containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @CANFD_matrix_messages.CANFD_MatrixUnion containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @CANFD_matrix_messages.CANFD_MatrixUnion containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @CANFD_matrix_messages.CANFD_MatrixUnion containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @CANFD_matrix_messages.CANFD_MatrixUnion.");
+  }
+  return 0;
+}
+
+void CANFD__MatrixUnion_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ can_id := ");
+single_value->field_can__id.log();
+TTCN_Logger::log_event_str(", can_flags := ");
+single_value->field_can__flags.log();
+TTCN_Logger::log_event_str(", can_pdu := ");
+single_value->field_can__pdu.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void CANFD__MatrixUnion_template::log_match(const CANFD__MatrixUnion& 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_can__id.match(match_value.can__id(), legacy)){
+TTCN_Logger::log_logmatch_info(".can_id");
+single_value->field_can__id.log_match(match_value.can__id(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_can__flags.match(match_value.can__flags(), legacy)){
+TTCN_Logger::log_logmatch_info(".can_flags");
+single_value->field_can__flags.log_match(match_value.can__flags(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_can__pdu.match(match_value.can__pdu(), legacy)){
+TTCN_Logger::log_logmatch_info(".can_pdu");
+single_value->field_can__pdu.log_match(match_value.can__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("{ can_id := ");
+single_value->field_can__id.log_match(match_value.can__id(), legacy);
+TTCN_Logger::log_event_str(", can_flags := ");
+single_value->field_can__flags.log_match(match_value.can__flags(), legacy);
+TTCN_Logger::log_event_str(", can_pdu := ");
+single_value->field_can__pdu.log_match(match_value.can__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 CANFD__MatrixUnion_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_can__id.encode_text(text_buf);
+single_value->field_can__flags.encode_text(text_buf);
+single_value->field_can__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 @CANFD_matrix_messages.CANFD_MatrixUnion.");
+}
+}
+
+void CANFD__MatrixUnion_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_can__id.decode_text(text_buf);
+single_value->field_can__flags.decode_text(text_buf);
+single_value->field_can__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 CANFD__MatrixUnion_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 @CANFD_matrix_messages.CANFD_MatrixUnion.");
+}
+}
+
+void CANFD__MatrixUnion_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: {
+    CANFD__MatrixUnion_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @CANFD_matrix_messages.CANFD_MatrixUnion 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) can__id().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) can__flags().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) can__pdu().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(), "can_id")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          can__id().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(), "can_flags")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          can__flags().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(), "can_pdu")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          can__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 @CANFD_matrix_messages.CANFD_MatrixUnion: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@CANFD_matrix_messages.CANFD_MatrixUnion");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void CANFD__MatrixUnion_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_can__id.check_restriction(t_res, t_name ? t_name : "@CANFD_matrix_messages.CANFD_MatrixUnion");
+single_value->field_can__flags.check_restriction(t_res, t_name ? t_name : "@CANFD_matrix_messages.CANFD_MatrixUnion");
+single_value->field_can__pdu.check_restriction(t_res, t_name ? t_name : "@CANFD_matrix_messages.CANFD_MatrixUnion");
+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 : "@CANFD_matrix_messages.CANFD_MatrixUnion");
+}
+
+boolean CANFD__MatrixUnion_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean CANFD__MatrixUnion_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+
+/* Bodies of static functions */
+
+static void pre_init_module()
+{
+TTCN_Location current_location("CANFD_matrix_messages.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "CANFD_matrix_messages");
+Can::module_object.pre_init_module();
+CAN__matrix__signals::module_object.pre_init_module();
+}
+
+static void post_init_module()
+{
+TTCN_Location current_location("CANFD_matrix_messages.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "CANFD_matrix_messages");
+Can::module_object.post_init_module();
+CAN__matrix__signals::module_object.post_init_module();
+}
+
+
+} /* end of namespace */
diff --git a/demo/CANFD_matrix_messages.d b/demo/CANFD_matrix_messages.d
new file mode 100644
index 0000000..6ca7d30
--- /dev/null
+++ b/demo/CANFD_matrix_messages.d
@@ -0,0 +1,60 @@
+CANFD_matrix_messages.o CANFD_matrix_messages.d : CANFD_matrix_messages.cc \
+ CANFD_matrix_messages.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TTCN3.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/version.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/cversion.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Types.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Vector.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Error.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Basetype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Encdec.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RInt.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON_Tokenizer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Logger.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Template.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Integer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ttcn3float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Boolean.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Null.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Optional.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Param_Types.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/memory.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/BER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Textbuf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Parameters.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XmlReader.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Objid.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Verdicttype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Component.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Bitstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RAW.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/CharCoding.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Hexstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Octetstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Any.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Universal_charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Struct_of.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Array.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_CharacterString.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_External.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TEXT.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_EmbeddedPDV.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Addfunc.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Timer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Port.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Event_Handler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/TitanLoggerApiSimple.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/PreGenRecordOf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Module_list.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Snapshot.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Default.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Runtime.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/OER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Profiler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ProfilerTools.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Debugger.hh Can.hh \
+ General_Types.hh CAN_matrix_signals.hh CAN_matrix_general_types.hh
diff --git a/demo/CANFD_matrix_messages.hh b/demo/CANFD_matrix_messages.hh
new file mode 100644
index 0000000..524e89c
--- /dev/null
+++ b/demo/CANFD_matrix_messages.hh
@@ -0,0 +1,766 @@
+// This C++ header file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+#ifndef CANFD__matrix__messages_HH
+#define CANFD__matrix__messages_HH
+
+#ifdef TITAN_RUNTIME_2
+#error Generated code does not match with used runtime.\
+ Code was generated without -R option but -DTITAN_RUNTIME_2 was used.
+#endif
+
+/* Header file includes */
+
+#include <TTCN3.hh>
+#include "Can.hh"
+#include "CAN_matrix_signals.hh"
+
+#if TTCN3_VERSION != 60600
+#error Version mismatch detected.\
+ Please check the version of the TTCN-3 compiler and the base library.\
+ Run make clean and rebuild the project if the version of the compiler changed recently.
+#endif
+
+#ifndef LINUX
+#error This file should be compiled on LINUX
+#endif
+
+#undef CANFD__matrix__messages_HH
+#endif
+
+namespace CANFD__matrix__messages {
+
+/* Forward declarations of classes */
+
+class CANFD__MESSAGE__TESTFRAME0__msg__type;
+class CANFD__MESSAGE__TESTFRAME0__msg__type_template;
+class CANFD__MESSAGE__TESTFRAME1__msg__type;
+class CANFD__MESSAGE__TESTFRAME1__msg__type_template;
+class CANFD__MESSAGE__TESTFRAME2__msg__type;
+class CANFD__MESSAGE__TESTFRAME2__msg__type_template;
+class CANFD__MESSAGE__TESTFRAME3__msg__type;
+class CANFD__MESSAGE__TESTFRAME3__msg__type_template;
+class CANFD__MESSAGE__EXTENDEDFRAME1__msg__type;
+class CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template;
+class CANFD__MatrixPayloadUnion;
+class CANFD__MatrixPayloadUnion_template;
+class CANFD__MatrixUnion;
+class CANFD__MatrixUnion_template;
+
+} /* end of namespace */
+
+#ifndef CANFD__matrix__messages_HH
+#define CANFD__matrix__messages_HH
+
+namespace CANFD__matrix__messages {
+
+/* Class definitions */
+
+class CANFD__MESSAGE__TESTFRAME0__msg__type : public Base_Type {
+  BITSTRING field_test__sig__11__bit__bitstring__lsb__coded;
+  BITSTRING field_test__sig__5__bit__bitstring__lsb__coded;
+public:
+  CANFD__MESSAGE__TESTFRAME0__msg__type();
+  CANFD__MESSAGE__TESTFRAME0__msg__type(const BITSTRING& par_test__sig__11__bit__bitstring__lsb__coded,
+    const BITSTRING& par_test__sig__5__bit__bitstring__lsb__coded);
+  CANFD__MESSAGE__TESTFRAME0__msg__type(const CANFD__MESSAGE__TESTFRAME0__msg__type& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  CANFD__MESSAGE__TESTFRAME0__msg__type& operator=(const CANFD__MESSAGE__TESTFRAME0__msg__type& other_value);
+  boolean operator==(const CANFD__MESSAGE__TESTFRAME0__msg__type& other_value) const;
+  inline boolean operator!=(const CANFD__MESSAGE__TESTFRAME0__msg__type& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BITSTRING& test__sig__11__bit__bitstring__lsb__coded()
+    {return field_test__sig__11__bit__bitstring__lsb__coded;}
+  inline const BITSTRING& test__sig__11__bit__bitstring__lsb__coded() const
+    {return field_test__sig__11__bit__bitstring__lsb__coded;}
+  inline BITSTRING& test__sig__5__bit__bitstring__lsb__coded()
+    {return field_test__sig__5__bit__bitstring__lsb__coded;}
+  inline const BITSTRING& test__sig__5__bit__bitstring__lsb__coded() const
+    {return field_test__sig__5__bit__bitstring__lsb__coded;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class CANFD__MESSAGE__TESTFRAME0__msg__type_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+CANFD__MESSAGE__TESTFRAME0__msg__type_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const CANFD__MESSAGE__TESTFRAME0__msg__type& other_value);
+void copy_template(const CANFD__MESSAGE__TESTFRAME0__msg__type_template& other_value);
+
+public:
+CANFD__MESSAGE__TESTFRAME0__msg__type_template();
+CANFD__MESSAGE__TESTFRAME0__msg__type_template(template_sel other_value);
+CANFD__MESSAGE__TESTFRAME0__msg__type_template(const CANFD__MESSAGE__TESTFRAME0__msg__type& other_value);
+CANFD__MESSAGE__TESTFRAME0__msg__type_template(const OPTIONAL<CANFD__MESSAGE__TESTFRAME0__msg__type>& other_value);
+CANFD__MESSAGE__TESTFRAME0__msg__type_template(const CANFD__MESSAGE__TESTFRAME0__msg__type_template& other_value);
+~CANFD__MESSAGE__TESTFRAME0__msg__type_template();
+CANFD__MESSAGE__TESTFRAME0__msg__type_template& operator=(template_sel other_value);
+CANFD__MESSAGE__TESTFRAME0__msg__type_template& operator=(const CANFD__MESSAGE__TESTFRAME0__msg__type& other_value);
+CANFD__MESSAGE__TESTFRAME0__msg__type_template& operator=(const OPTIONAL<CANFD__MESSAGE__TESTFRAME0__msg__type>& other_value);
+CANFD__MESSAGE__TESTFRAME0__msg__type_template& operator=(const CANFD__MESSAGE__TESTFRAME0__msg__type_template& other_value);
+boolean match(const CANFD__MESSAGE__TESTFRAME0__msg__type& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+CANFD__MESSAGE__TESTFRAME0__msg__type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+CANFD__MESSAGE__TESTFRAME0__msg__type_template& list_item(unsigned int list_index) const;
+BITSTRING_template& test__sig__11__bit__bitstring__lsb__coded();
+const BITSTRING_template& test__sig__11__bit__bitstring__lsb__coded() const;
+BITSTRING_template& test__sig__5__bit__bitstring__lsb__coded();
+const BITSTRING_template& test__sig__5__bit__bitstring__lsb__coded() const;
+int size_of() const;
+void log() const;
+void log_match(const CANFD__MESSAGE__TESTFRAME0__msg__type& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class CANFD__MESSAGE__TESTFRAME1__msg__type : public Base_Type {
+  BITSTRING field_test__sig__11__bit__bitstring__msb__coded;
+  BITSTRING field_test__sig__5__bit__bitstring__msb__coded;
+public:
+  CANFD__MESSAGE__TESTFRAME1__msg__type();
+  CANFD__MESSAGE__TESTFRAME1__msg__type(const BITSTRING& par_test__sig__11__bit__bitstring__msb__coded,
+    const BITSTRING& par_test__sig__5__bit__bitstring__msb__coded);
+  CANFD__MESSAGE__TESTFRAME1__msg__type(const CANFD__MESSAGE__TESTFRAME1__msg__type& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  CANFD__MESSAGE__TESTFRAME1__msg__type& operator=(const CANFD__MESSAGE__TESTFRAME1__msg__type& other_value);
+  boolean operator==(const CANFD__MESSAGE__TESTFRAME1__msg__type& other_value) const;
+  inline boolean operator!=(const CANFD__MESSAGE__TESTFRAME1__msg__type& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BITSTRING& test__sig__11__bit__bitstring__msb__coded()
+    {return field_test__sig__11__bit__bitstring__msb__coded;}
+  inline const BITSTRING& test__sig__11__bit__bitstring__msb__coded() const
+    {return field_test__sig__11__bit__bitstring__msb__coded;}
+  inline BITSTRING& test__sig__5__bit__bitstring__msb__coded()
+    {return field_test__sig__5__bit__bitstring__msb__coded;}
+  inline const BITSTRING& test__sig__5__bit__bitstring__msb__coded() const
+    {return field_test__sig__5__bit__bitstring__msb__coded;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class CANFD__MESSAGE__TESTFRAME1__msg__type_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+CANFD__MESSAGE__TESTFRAME1__msg__type_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const CANFD__MESSAGE__TESTFRAME1__msg__type& other_value);
+void copy_template(const CANFD__MESSAGE__TESTFRAME1__msg__type_template& other_value);
+
+public:
+CANFD__MESSAGE__TESTFRAME1__msg__type_template();
+CANFD__MESSAGE__TESTFRAME1__msg__type_template(template_sel other_value);
+CANFD__MESSAGE__TESTFRAME1__msg__type_template(const CANFD__MESSAGE__TESTFRAME1__msg__type& other_value);
+CANFD__MESSAGE__TESTFRAME1__msg__type_template(const OPTIONAL<CANFD__MESSAGE__TESTFRAME1__msg__type>& other_value);
+CANFD__MESSAGE__TESTFRAME1__msg__type_template(const CANFD__MESSAGE__TESTFRAME1__msg__type_template& other_value);
+~CANFD__MESSAGE__TESTFRAME1__msg__type_template();
+CANFD__MESSAGE__TESTFRAME1__msg__type_template& operator=(template_sel other_value);
+CANFD__MESSAGE__TESTFRAME1__msg__type_template& operator=(const CANFD__MESSAGE__TESTFRAME1__msg__type& other_value);
+CANFD__MESSAGE__TESTFRAME1__msg__type_template& operator=(const OPTIONAL<CANFD__MESSAGE__TESTFRAME1__msg__type>& other_value);
+CANFD__MESSAGE__TESTFRAME1__msg__type_template& operator=(const CANFD__MESSAGE__TESTFRAME1__msg__type_template& other_value);
+boolean match(const CANFD__MESSAGE__TESTFRAME1__msg__type& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+CANFD__MESSAGE__TESTFRAME1__msg__type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+CANFD__MESSAGE__TESTFRAME1__msg__type_template& list_item(unsigned int list_index) const;
+BITSTRING_template& test__sig__11__bit__bitstring__msb__coded();
+const BITSTRING_template& test__sig__11__bit__bitstring__msb__coded() const;
+BITSTRING_template& test__sig__5__bit__bitstring__msb__coded();
+const BITSTRING_template& test__sig__5__bit__bitstring__msb__coded() const;
+int size_of() const;
+void log() const;
+void log_match(const CANFD__MESSAGE__TESTFRAME1__msg__type& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class CANFD__MESSAGE__TESTFRAME2__msg__type : public Base_Type {
+  INTEGER field_test__sig__11__bit__integer__msb__coded;
+  INTEGER field_test__sig__5__bit__integer__msb__coded;
+public:
+  CANFD__MESSAGE__TESTFRAME2__msg__type();
+  CANFD__MESSAGE__TESTFRAME2__msg__type(const INTEGER& par_test__sig__11__bit__integer__msb__coded,
+    const INTEGER& par_test__sig__5__bit__integer__msb__coded);
+  CANFD__MESSAGE__TESTFRAME2__msg__type(const CANFD__MESSAGE__TESTFRAME2__msg__type& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  CANFD__MESSAGE__TESTFRAME2__msg__type& operator=(const CANFD__MESSAGE__TESTFRAME2__msg__type& other_value);
+  boolean operator==(const CANFD__MESSAGE__TESTFRAME2__msg__type& other_value) const;
+  inline boolean operator!=(const CANFD__MESSAGE__TESTFRAME2__msg__type& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& test__sig__11__bit__integer__msb__coded()
+    {return field_test__sig__11__bit__integer__msb__coded;}
+  inline const INTEGER& test__sig__11__bit__integer__msb__coded() const
+    {return field_test__sig__11__bit__integer__msb__coded;}
+  inline INTEGER& test__sig__5__bit__integer__msb__coded()
+    {return field_test__sig__5__bit__integer__msb__coded;}
+  inline const INTEGER& test__sig__5__bit__integer__msb__coded() const
+    {return field_test__sig__5__bit__integer__msb__coded;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class CANFD__MESSAGE__TESTFRAME2__msg__type_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+CANFD__MESSAGE__TESTFRAME2__msg__type_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const CANFD__MESSAGE__TESTFRAME2__msg__type& other_value);
+void copy_template(const CANFD__MESSAGE__TESTFRAME2__msg__type_template& other_value);
+
+public:
+CANFD__MESSAGE__TESTFRAME2__msg__type_template();
+CANFD__MESSAGE__TESTFRAME2__msg__type_template(template_sel other_value);
+CANFD__MESSAGE__TESTFRAME2__msg__type_template(const CANFD__MESSAGE__TESTFRAME2__msg__type& other_value);
+CANFD__MESSAGE__TESTFRAME2__msg__type_template(const OPTIONAL<CANFD__MESSAGE__TESTFRAME2__msg__type>& other_value);
+CANFD__MESSAGE__TESTFRAME2__msg__type_template(const CANFD__MESSAGE__TESTFRAME2__msg__type_template& other_value);
+~CANFD__MESSAGE__TESTFRAME2__msg__type_template();
+CANFD__MESSAGE__TESTFRAME2__msg__type_template& operator=(template_sel other_value);
+CANFD__MESSAGE__TESTFRAME2__msg__type_template& operator=(const CANFD__MESSAGE__TESTFRAME2__msg__type& other_value);
+CANFD__MESSAGE__TESTFRAME2__msg__type_template& operator=(const OPTIONAL<CANFD__MESSAGE__TESTFRAME2__msg__type>& other_value);
+CANFD__MESSAGE__TESTFRAME2__msg__type_template& operator=(const CANFD__MESSAGE__TESTFRAME2__msg__type_template& other_value);
+boolean match(const CANFD__MESSAGE__TESTFRAME2__msg__type& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+CANFD__MESSAGE__TESTFRAME2__msg__type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+CANFD__MESSAGE__TESTFRAME2__msg__type_template& list_item(unsigned int list_index) const;
+INTEGER_template& test__sig__11__bit__integer__msb__coded();
+const INTEGER_template& test__sig__11__bit__integer__msb__coded() const;
+INTEGER_template& test__sig__5__bit__integer__msb__coded();
+const INTEGER_template& test__sig__5__bit__integer__msb__coded() const;
+int size_of() const;
+void log() const;
+void log_match(const CANFD__MESSAGE__TESTFRAME2__msg__type& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class CANFD__MESSAGE__TESTFRAME3__msg__type : public Base_Type {
+  OCTETSTRING field_test__sig__1__byte__octetstring__msb__coded;
+  OCTETSTRING field_test__sig__2__byte__octetstring__msb__coded;
+public:
+  CANFD__MESSAGE__TESTFRAME3__msg__type();
+  CANFD__MESSAGE__TESTFRAME3__msg__type(const OCTETSTRING& par_test__sig__1__byte__octetstring__msb__coded,
+    const OCTETSTRING& par_test__sig__2__byte__octetstring__msb__coded);
+  CANFD__MESSAGE__TESTFRAME3__msg__type(const CANFD__MESSAGE__TESTFRAME3__msg__type& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  CANFD__MESSAGE__TESTFRAME3__msg__type& operator=(const CANFD__MESSAGE__TESTFRAME3__msg__type& other_value);
+  boolean operator==(const CANFD__MESSAGE__TESTFRAME3__msg__type& other_value) const;
+  inline boolean operator!=(const CANFD__MESSAGE__TESTFRAME3__msg__type& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& test__sig__1__byte__octetstring__msb__coded()
+    {return field_test__sig__1__byte__octetstring__msb__coded;}
+  inline const OCTETSTRING& test__sig__1__byte__octetstring__msb__coded() const
+    {return field_test__sig__1__byte__octetstring__msb__coded;}
+  inline OCTETSTRING& test__sig__2__byte__octetstring__msb__coded()
+    {return field_test__sig__2__byte__octetstring__msb__coded;}
+  inline const OCTETSTRING& test__sig__2__byte__octetstring__msb__coded() const
+    {return field_test__sig__2__byte__octetstring__msb__coded;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class CANFD__MESSAGE__TESTFRAME3__msg__type_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+CANFD__MESSAGE__TESTFRAME3__msg__type_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const CANFD__MESSAGE__TESTFRAME3__msg__type& other_value);
+void copy_template(const CANFD__MESSAGE__TESTFRAME3__msg__type_template& other_value);
+
+public:
+CANFD__MESSAGE__TESTFRAME3__msg__type_template();
+CANFD__MESSAGE__TESTFRAME3__msg__type_template(template_sel other_value);
+CANFD__MESSAGE__TESTFRAME3__msg__type_template(const CANFD__MESSAGE__TESTFRAME3__msg__type& other_value);
+CANFD__MESSAGE__TESTFRAME3__msg__type_template(const OPTIONAL<CANFD__MESSAGE__TESTFRAME3__msg__type>& other_value);
+CANFD__MESSAGE__TESTFRAME3__msg__type_template(const CANFD__MESSAGE__TESTFRAME3__msg__type_template& other_value);
+~CANFD__MESSAGE__TESTFRAME3__msg__type_template();
+CANFD__MESSAGE__TESTFRAME3__msg__type_template& operator=(template_sel other_value);
+CANFD__MESSAGE__TESTFRAME3__msg__type_template& operator=(const CANFD__MESSAGE__TESTFRAME3__msg__type& other_value);
+CANFD__MESSAGE__TESTFRAME3__msg__type_template& operator=(const OPTIONAL<CANFD__MESSAGE__TESTFRAME3__msg__type>& other_value);
+CANFD__MESSAGE__TESTFRAME3__msg__type_template& operator=(const CANFD__MESSAGE__TESTFRAME3__msg__type_template& other_value);
+boolean match(const CANFD__MESSAGE__TESTFRAME3__msg__type& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+CANFD__MESSAGE__TESTFRAME3__msg__type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+CANFD__MESSAGE__TESTFRAME3__msg__type_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& test__sig__1__byte__octetstring__msb__coded();
+const OCTETSTRING_template& test__sig__1__byte__octetstring__msb__coded() const;
+OCTETSTRING_template& test__sig__2__byte__octetstring__msb__coded();
+const OCTETSTRING_template& test__sig__2__byte__octetstring__msb__coded() const;
+int size_of() const;
+void log() const;
+void log_match(const CANFD__MESSAGE__TESTFRAME3__msg__type& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class CANFD__MESSAGE__EXTENDEDFRAME1__msg__type : public Base_Type {
+  OCTETSTRING field_test__sig__2__byte__octetstring__msb__coded;
+public:
+  CANFD__MESSAGE__EXTENDEDFRAME1__msg__type();
+  CANFD__MESSAGE__EXTENDEDFRAME1__msg__type(const OCTETSTRING& par_test__sig__2__byte__octetstring__msb__coded);
+  CANFD__MESSAGE__EXTENDEDFRAME1__msg__type(const CANFD__MESSAGE__EXTENDEDFRAME1__msg__type& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  CANFD__MESSAGE__EXTENDEDFRAME1__msg__type& operator=(const CANFD__MESSAGE__EXTENDEDFRAME1__msg__type& other_value);
+  boolean operator==(const CANFD__MESSAGE__EXTENDEDFRAME1__msg__type& other_value) const;
+  inline boolean operator!=(const CANFD__MESSAGE__EXTENDEDFRAME1__msg__type& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& test__sig__2__byte__octetstring__msb__coded()
+    {return field_test__sig__2__byte__octetstring__msb__coded;}
+  inline const OCTETSTRING& test__sig__2__byte__octetstring__msb__coded() const
+    {return field_test__sig__2__byte__octetstring__msb__coded;}
+  inline int size_of() const
+    {return 1;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const CANFD__MESSAGE__EXTENDEDFRAME1__msg__type& other_value);
+void copy_template(const CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template& other_value);
+
+public:
+CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template();
+CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template(template_sel other_value);
+CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template(const CANFD__MESSAGE__EXTENDEDFRAME1__msg__type& other_value);
+CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template(const OPTIONAL<CANFD__MESSAGE__EXTENDEDFRAME1__msg__type>& other_value);
+CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template(const CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template& other_value);
+~CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template();
+CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template& operator=(template_sel other_value);
+CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template& operator=(const CANFD__MESSAGE__EXTENDEDFRAME1__msg__type& other_value);
+CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template& operator=(const OPTIONAL<CANFD__MESSAGE__EXTENDEDFRAME1__msg__type>& other_value);
+CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template& operator=(const CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template& other_value);
+boolean match(const CANFD__MESSAGE__EXTENDEDFRAME1__msg__type& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+CANFD__MESSAGE__EXTENDEDFRAME1__msg__type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& test__sig__2__byte__octetstring__msb__coded();
+const OCTETSTRING_template& test__sig__2__byte__octetstring__msb__coded() const;
+int size_of() const;
+void log() const;
+void log_match(const CANFD__MESSAGE__EXTENDEDFRAME1__msg__type& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class CANFD__MatrixPayloadUnion : public Base_Type {
+public:
+enum union_selection_type { UNBOUND_VALUE = 0, ALT_message__MyTestframe0 = 1, ALT_message__MyTestframe1 = 2, ALT_message__MyTestframe2 = 3, ALT_message__MyTestframe3 = 4, ALT_message__extendedFrame1 = 5 };
+private:
+union_selection_type union_selection;
+union {
+CANFD__MESSAGE__TESTFRAME0__msg__type *field_message__MyTestframe0;
+CANFD__MESSAGE__TESTFRAME1__msg__type *field_message__MyTestframe1;
+CANFD__MESSAGE__TESTFRAME2__msg__type *field_message__MyTestframe2;
+CANFD__MESSAGE__TESTFRAME3__msg__type *field_message__MyTestframe3;
+CANFD__MESSAGE__EXTENDEDFRAME1__msg__type *field_message__extendedFrame1;
+};
+void copy_value(const CANFD__MatrixPayloadUnion& other_value);
+
+public:
+CANFD__MatrixPayloadUnion();
+CANFD__MatrixPayloadUnion(const CANFD__MatrixPayloadUnion& other_value);
+~CANFD__MatrixPayloadUnion();
+CANFD__MatrixPayloadUnion& operator=(const CANFD__MatrixPayloadUnion& other_value);
+boolean operator==(const CANFD__MatrixPayloadUnion& other_value) const;
+inline boolean operator!=(const CANFD__MatrixPayloadUnion& other_value) const { return !(*this == other_value); }
+CANFD__MESSAGE__TESTFRAME0__msg__type& message__MyTestframe0();
+const CANFD__MESSAGE__TESTFRAME0__msg__type& message__MyTestframe0() const;
+CANFD__MESSAGE__TESTFRAME1__msg__type& message__MyTestframe1();
+const CANFD__MESSAGE__TESTFRAME1__msg__type& message__MyTestframe1() const;
+CANFD__MESSAGE__TESTFRAME2__msg__type& message__MyTestframe2();
+const CANFD__MESSAGE__TESTFRAME2__msg__type& message__MyTestframe2() const;
+CANFD__MESSAGE__TESTFRAME3__msg__type& message__MyTestframe3();
+const CANFD__MESSAGE__TESTFRAME3__msg__type& message__MyTestframe3() const;
+CANFD__MESSAGE__EXTENDEDFRAME1__msg__type& message__extendedFrame1();
+const CANFD__MESSAGE__EXTENDEDFRAME1__msg__type& message__extendedFrame1() const;
+inline union_selection_type get_selection() const { return union_selection; }
+boolean ischosen(union_selection_type checked_selection) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class CANFD__MatrixPayloadUnion_template : public Base_Template {
+union {
+struct {
+CANFD__MatrixPayloadUnion::union_selection_type union_selection;
+union {
+CANFD__MESSAGE__TESTFRAME0__msg__type_template *field_message__MyTestframe0;
+CANFD__MESSAGE__TESTFRAME1__msg__type_template *field_message__MyTestframe1;
+CANFD__MESSAGE__TESTFRAME2__msg__type_template *field_message__MyTestframe2;
+CANFD__MESSAGE__TESTFRAME3__msg__type_template *field_message__MyTestframe3;
+CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template *field_message__extendedFrame1;
+};
+} single_value;
+struct {
+unsigned int n_values;
+CANFD__MatrixPayloadUnion_template *list_value;
+} value_list;
+};
+void copy_value(const CANFD__MatrixPayloadUnion& other_value);
+
+void copy_template(const CANFD__MatrixPayloadUnion_template& other_value);
+
+public:
+CANFD__MatrixPayloadUnion_template();
+CANFD__MatrixPayloadUnion_template(template_sel other_value);
+CANFD__MatrixPayloadUnion_template(const CANFD__MatrixPayloadUnion& other_value);
+CANFD__MatrixPayloadUnion_template(const OPTIONAL<CANFD__MatrixPayloadUnion>& other_value);
+CANFD__MatrixPayloadUnion_template(const CANFD__MatrixPayloadUnion_template& other_value);
+~CANFD__MatrixPayloadUnion_template();
+void clean_up();
+CANFD__MatrixPayloadUnion_template& operator=(template_sel other_value);
+CANFD__MatrixPayloadUnion_template& operator=(const CANFD__MatrixPayloadUnion& other_value);
+CANFD__MatrixPayloadUnion_template& operator=(const OPTIONAL<CANFD__MatrixPayloadUnion>& other_value);
+CANFD__MatrixPayloadUnion_template& operator=(const CANFD__MatrixPayloadUnion_template& other_value);
+boolean match(const CANFD__MatrixPayloadUnion& other_value, boolean legacy = FALSE) const;
+boolean is_value() const;CANFD__MatrixPayloadUnion valueof() const;
+CANFD__MatrixPayloadUnion_template& list_item(unsigned int list_index) const;
+void set_type(template_sel template_type, unsigned int list_length);
+CANFD__MESSAGE__TESTFRAME0__msg__type_template& message__MyTestframe0();
+const CANFD__MESSAGE__TESTFRAME0__msg__type_template& message__MyTestframe0() const;
+CANFD__MESSAGE__TESTFRAME1__msg__type_template& message__MyTestframe1();
+const CANFD__MESSAGE__TESTFRAME1__msg__type_template& message__MyTestframe1() const;
+CANFD__MESSAGE__TESTFRAME2__msg__type_template& message__MyTestframe2();
+const CANFD__MESSAGE__TESTFRAME2__msg__type_template& message__MyTestframe2() const;
+CANFD__MESSAGE__TESTFRAME3__msg__type_template& message__MyTestframe3();
+const CANFD__MESSAGE__TESTFRAME3__msg__type_template& message__MyTestframe3() const;
+CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template& message__extendedFrame1();
+const CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_template& message__extendedFrame1() const;
+boolean ischosen(CANFD__MatrixPayloadUnion::union_selection_type checked_selection) const;
+void log() const;
+void log_match(const CANFD__MatrixPayloadUnion& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class CANFD__MatrixUnion : public Base_Type {
+  OCTETSTRING field_can__id;
+  BITSTRING field_can__flags;
+  CANFD__MatrixPayloadUnion field_can__pdu;
+public:
+  CANFD__MatrixUnion();
+  CANFD__MatrixUnion(const OCTETSTRING& par_can__id,
+    const BITSTRING& par_can__flags,
+    const CANFD__MatrixPayloadUnion& par_can__pdu);
+  CANFD__MatrixUnion(const CANFD__MatrixUnion& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  CANFD__MatrixUnion& operator=(const CANFD__MatrixUnion& other_value);
+  boolean operator==(const CANFD__MatrixUnion& other_value) const;
+  inline boolean operator!=(const CANFD__MatrixUnion& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& can__id()
+    {return field_can__id;}
+  inline const OCTETSTRING& can__id() const
+    {return field_can__id;}
+  inline BITSTRING& can__flags()
+    {return field_can__flags;}
+  inline const BITSTRING& can__flags() const
+    {return field_can__flags;}
+  inline CANFD__MatrixPayloadUnion& can__pdu()
+    {return field_can__pdu;}
+  inline const CANFD__MatrixPayloadUnion& can__pdu() const
+    {return field_can__pdu;}
+  inline int size_of() const
+    {return 3;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class CANFD__MatrixUnion_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+CANFD__MatrixUnion_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const CANFD__MatrixUnion& other_value);
+void copy_template(const CANFD__MatrixUnion_template& other_value);
+
+public:
+CANFD__MatrixUnion_template();
+CANFD__MatrixUnion_template(template_sel other_value);
+CANFD__MatrixUnion_template(const CANFD__MatrixUnion& other_value);
+CANFD__MatrixUnion_template(const OPTIONAL<CANFD__MatrixUnion>& other_value);
+CANFD__MatrixUnion_template(const CANFD__MatrixUnion_template& other_value);
+~CANFD__MatrixUnion_template();
+CANFD__MatrixUnion_template& operator=(template_sel other_value);
+CANFD__MatrixUnion_template& operator=(const CANFD__MatrixUnion& other_value);
+CANFD__MatrixUnion_template& operator=(const OPTIONAL<CANFD__MatrixUnion>& other_value);
+CANFD__MatrixUnion_template& operator=(const CANFD__MatrixUnion_template& other_value);
+boolean match(const CANFD__MatrixUnion& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+CANFD__MatrixUnion valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+CANFD__MatrixUnion_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& can__id();
+const OCTETSTRING_template& can__id() const;
+BITSTRING_template& can__flags();
+const BITSTRING_template& can__flags() const;
+CANFD__MatrixPayloadUnion_template& can__pdu();
+const CANFD__MatrixPayloadUnion_template& can__pdu() const;
+int size_of() const;
+void log() const;
+void log_match(const CANFD__MatrixUnion& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+
+/* Global variable declarations */
+
+extern const TTCN_RAWdescriptor_t CANFD__MESSAGE__TESTFRAME0__msg__type_test__sig__11__bit__bitstring__lsb__coded_raw_;
+extern const XERdescriptor_t CANFD__MESSAGE__TESTFRAME0__msg__type_test__sig__11__bit__bitstring__lsb__coded_xer_;
+extern const TTCN_OERdescriptor_t CANFD__MESSAGE__TESTFRAME0__msg__type_test__sig__11__bit__bitstring__lsb__coded_oer_;
+extern const TTCN_Typedescriptor_t CANFD__MESSAGE__TESTFRAME0__msg__type_test__sig__11__bit__bitstring__lsb__coded_descr_;
+extern const TTCN_RAWdescriptor_t CANFD__MESSAGE__TESTFRAME0__msg__type_test__sig__5__bit__bitstring__lsb__coded_raw_;
+extern const XERdescriptor_t CANFD__MESSAGE__TESTFRAME0__msg__type_test__sig__5__bit__bitstring__lsb__coded_xer_;
+extern const TTCN_OERdescriptor_t CANFD__MESSAGE__TESTFRAME0__msg__type_test__sig__5__bit__bitstring__lsb__coded_oer_;
+extern const TTCN_Typedescriptor_t CANFD__MESSAGE__TESTFRAME0__msg__type_test__sig__5__bit__bitstring__lsb__coded_descr_;
+extern const TTCN_RAWdescriptor_t CANFD__MESSAGE__TESTFRAME0__msg__type_raw_;
+extern const TTCN_Typedescriptor_t CANFD__MESSAGE__TESTFRAME0__msg__type_descr_;
+extern const TTCN_RAWdescriptor_t CANFD__MESSAGE__TESTFRAME1__msg__type_test__sig__11__bit__bitstring__msb__coded_raw_;
+extern const XERdescriptor_t CANFD__MESSAGE__TESTFRAME1__msg__type_test__sig__11__bit__bitstring__msb__coded_xer_;
+extern const TTCN_OERdescriptor_t CANFD__MESSAGE__TESTFRAME1__msg__type_test__sig__11__bit__bitstring__msb__coded_oer_;
+extern const TTCN_Typedescriptor_t CANFD__MESSAGE__TESTFRAME1__msg__type_test__sig__11__bit__bitstring__msb__coded_descr_;
+extern const TTCN_RAWdescriptor_t CANFD__MESSAGE__TESTFRAME1__msg__type_test__sig__5__bit__bitstring__msb__coded_raw_;
+extern const XERdescriptor_t CANFD__MESSAGE__TESTFRAME1__msg__type_test__sig__5__bit__bitstring__msb__coded_xer_;
+extern const TTCN_OERdescriptor_t CANFD__MESSAGE__TESTFRAME1__msg__type_test__sig__5__bit__bitstring__msb__coded_oer_;
+extern const TTCN_Typedescriptor_t CANFD__MESSAGE__TESTFRAME1__msg__type_test__sig__5__bit__bitstring__msb__coded_descr_;
+extern const TTCN_RAWdescriptor_t CANFD__MESSAGE__TESTFRAME1__msg__type_raw_;
+extern const TTCN_Typedescriptor_t CANFD__MESSAGE__TESTFRAME1__msg__type_descr_;
+extern const TTCN_RAWdescriptor_t CANFD__MESSAGE__TESTFRAME2__msg__type_test__sig__11__bit__integer__msb__coded_raw_;
+extern const XERdescriptor_t CANFD__MESSAGE__TESTFRAME2__msg__type_test__sig__11__bit__integer__msb__coded_xer_;
+extern const TTCN_OERdescriptor_t CANFD__MESSAGE__TESTFRAME2__msg__type_test__sig__11__bit__integer__msb__coded_oer_;
+extern const TTCN_Typedescriptor_t CANFD__MESSAGE__TESTFRAME2__msg__type_test__sig__11__bit__integer__msb__coded_descr_;
+extern const TTCN_RAWdescriptor_t CANFD__MESSAGE__TESTFRAME2__msg__type_test__sig__5__bit__integer__msb__coded_raw_;
+extern const XERdescriptor_t CANFD__MESSAGE__TESTFRAME2__msg__type_test__sig__5__bit__integer__msb__coded_xer_;
+extern const TTCN_OERdescriptor_t CANFD__MESSAGE__TESTFRAME2__msg__type_test__sig__5__bit__integer__msb__coded_oer_;
+extern const TTCN_Typedescriptor_t CANFD__MESSAGE__TESTFRAME2__msg__type_test__sig__5__bit__integer__msb__coded_descr_;
+extern const TTCN_RAWdescriptor_t CANFD__MESSAGE__TESTFRAME2__msg__type_raw_;
+extern const TTCN_Typedescriptor_t CANFD__MESSAGE__TESTFRAME2__msg__type_descr_;
+extern const XERdescriptor_t CANFD__MESSAGE__TESTFRAME3__msg__type_test__sig__1__byte__octetstring__msb__coded_xer_;
+extern const TTCN_OERdescriptor_t CANFD__MESSAGE__TESTFRAME3__msg__type_test__sig__1__byte__octetstring__msb__coded_oer_;
+extern const TTCN_Typedescriptor_t CANFD__MESSAGE__TESTFRAME3__msg__type_test__sig__1__byte__octetstring__msb__coded_descr_;
+extern const XERdescriptor_t CANFD__MESSAGE__TESTFRAME3__msg__type_test__sig__2__byte__octetstring__msb__coded_xer_;
+extern const TTCN_OERdescriptor_t CANFD__MESSAGE__TESTFRAME3__msg__type_test__sig__2__byte__octetstring__msb__coded_oer_;
+extern const TTCN_Typedescriptor_t CANFD__MESSAGE__TESTFRAME3__msg__type_test__sig__2__byte__octetstring__msb__coded_descr_;
+extern const TTCN_RAWdescriptor_t CANFD__MESSAGE__TESTFRAME3__msg__type_raw_;
+extern const TTCN_Typedescriptor_t CANFD__MESSAGE__TESTFRAME3__msg__type_descr_;
+extern const XERdescriptor_t CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_test__sig__2__byte__octetstring__msb__coded_xer_;
+extern const TTCN_OERdescriptor_t CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_test__sig__2__byte__octetstring__msb__coded_oer_;
+extern const TTCN_Typedescriptor_t CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_test__sig__2__byte__octetstring__msb__coded_descr_;
+extern const TTCN_RAWdescriptor_t CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_raw_;
+extern const TTCN_Typedescriptor_t CANFD__MESSAGE__EXTENDEDFRAME1__msg__type_descr_;
+extern const TTCN_RAWdescriptor_t CANFD__MatrixPayloadUnion_raw_;
+extern const TTCN_Typedescriptor_t CANFD__MatrixPayloadUnion_descr_;
+extern const XERdescriptor_t CANFD__MatrixUnion_can__id_xer_;
+extern const TTCN_OERdescriptor_t CANFD__MatrixUnion_can__id_oer_;
+extern const TTCN_Typedescriptor_t CANFD__MatrixUnion_can__id_descr_;
+extern const XERdescriptor_t CANFD__MatrixUnion_can__flags_xer_;
+extern const TTCN_OERdescriptor_t CANFD__MatrixUnion_can__flags_oer_;
+extern const TTCN_Typedescriptor_t CANFD__MatrixUnion_can__flags_descr_;
+extern const TTCN_RAWdescriptor_t CANFD__MatrixUnion_can__pdu_raw_;
+extern const TTCN_Typedescriptor_t CANFD__MatrixUnion_can__pdu_descr_;
+extern const TTCN_RAWdescriptor_t CANFD__MatrixUnion_raw_;
+extern const TTCN_Typedescriptor_t CANFD__MatrixUnion_descr_;
+extern TTCN_Module module_object;
+
+} /* end of namespace */
+
+#endif
diff --git a/demo/CANFD_matrix_messages.o b/demo/CANFD_matrix_messages.o
new file mode 100644
index 0000000..6ec3ea3
--- /dev/null
+++ b/demo/CANFD_matrix_messages.o
Binary files differ
diff --git a/demo/CAN_matrix.cc b/demo/CAN_matrix.cc
new file mode 100644
index 0000000..57d2275
--- /dev/null
+++ b/demo/CAN_matrix.cc
@@ -0,0 +1,249 @@
+// This C++ source file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+/* Including header files */
+
+#include "CAN_matrix.hh"
+
+namespace CAN__matrix {
+
+/* Prototypes of static functions */
+
+static void pre_init_module();
+static void post_init_module();
+
+/* Literal string constants */
+
+static const unsigned char module_checksum[] = { 0x8e, 0x22, 0x0d, 0xe7, 0xf7, 0x4f, 0x31, 0xaa, 0xcd, 0x58, 0xc4, 0xbe, 0x36, 0x30, 0xe3, 0x71 };
+
+/* Global variable definitions */
+
+TTCN_Module module_object("CAN_matrix", __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);
+
+static const RuntimeVersionChecker ver_checker(  current_runtime_version.requires_major_version_6,
+  current_runtime_version.requires_minor_version_6,
+  current_runtime_version.requires_patch_level_0,  current_runtime_version.requires_runtime_1);
+
+/* Bodies of functions, altsteps and testcases */
+
+OCTETSTRING f__encode__can__matrix(const CAN__matrix__messages::CAN__MatrixUnion& pdu)
+{
+if (TTCN_Logger::log_this_event(TTCN_Logger::DEBUG_ENCDEC)) {
+TTCN_Logger::begin_event(TTCN_Logger::DEBUG_ENCDEC);
+TTCN_Logger::log_event_str("f_encode_can_matrix(): Encoding @CAN_matrix_messages.CAN_MatrixUnion: ");
+pdu.log();
+TTCN_Logger::end_event();
+}
+TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT);
+TTCN_Buffer ttcn_buffer;
+pdu.encode(CAN__matrix__messages::CAN__MatrixUnion_descr_, ttcn_buffer, TTCN_EncDec::CT_RAW, 0);
+OCTETSTRING ret_val;
+ttcn_buffer.get_string(ret_val);
+if (TTCN_Logger::log_this_event(TTCN_Logger::DEBUG_ENCDEC)) {
+TTCN_Logger::begin_event(TTCN_Logger::DEBUG_ENCDEC);
+TTCN_Logger::log_event_str("f_encode_can_matrix(): Stream after encoding: ");
+ret_val.log();
+TTCN_Logger::end_event();
+}
+return ret_val;
+}
+
+CAN__matrix__messages::CAN__MatrixUnion f__decode__can__matrix(const OCTETSTRING& data)
+{
+if (TTCN_Logger::log_this_event(TTCN_Logger::DEBUG_ENCDEC)) {
+TTCN_Logger::begin_event(TTCN_Logger::DEBUG_ENCDEC);
+TTCN_Logger::log_event_str("f_decode_can_matrix(): Stream before decoding: ");
+data.log();
+TTCN_Logger::end_event();
+}
+TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT);
+TTCN_EncDec::clear_error();
+TTCN_Buffer ttcn_buffer(data);
+CAN__matrix__messages::CAN__MatrixUnion ret_val;
+ret_val.decode(CAN__matrix__messages::CAN__MatrixUnion_descr_, ttcn_buffer, TTCN_EncDec::CT_RAW);
+if (TTCN_Logger::log_this_event(TTCN_Logger::DEBUG_ENCDEC)) {
+TTCN_Logger::begin_event(TTCN_Logger::DEBUG_ENCDEC);
+TTCN_Logger::log_event_str("f_decode_can_matrix(): Decoded @CAN_matrix_messages.CAN_MatrixUnion: ");
+ret_val.log();
+TTCN_Logger::end_event();
+}
+if (TTCN_EncDec::get_last_error_type() == TTCN_EncDec::ET_NONE) {
+if (ttcn_buffer.get_pos() < ttcn_buffer.get_len()) {
+ttcn_buffer.cut();
+OCTETSTRING tmp_os;
+ttcn_buffer.get_string(tmp_os);
+TTCN_Logger::begin_event_log2str();
+tmp_os.log();
+CHARSTRING remaining_stream = TTCN_Logger::end_event_log2str();
+TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_EXTRA_DATA, "f_decode_can_matrix(): Data remained at the end of the stream after successful decoding: %s", (const char*) remaining_stream);
+}
+}
+return ret_val;
+}
+
+OCTETSTRING f__encode__canfd__matrix(const CANFD__matrix__messages::CANFD__MatrixUnion& pdu)
+{
+if (TTCN_Logger::log_this_event(TTCN_Logger::DEBUG_ENCDEC)) {
+TTCN_Logger::begin_event(TTCN_Logger::DEBUG_ENCDEC);
+TTCN_Logger::log_event_str("f_encode_canfd_matrix(): Encoding @CANFD_matrix_messages.CANFD_MatrixUnion: ");
+pdu.log();
+TTCN_Logger::end_event();
+}
+TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT);
+TTCN_Buffer ttcn_buffer;
+pdu.encode(CANFD__matrix__messages::CANFD__MatrixUnion_descr_, ttcn_buffer, TTCN_EncDec::CT_RAW, 0);
+OCTETSTRING ret_val;
+ttcn_buffer.get_string(ret_val);
+if (TTCN_Logger::log_this_event(TTCN_Logger::DEBUG_ENCDEC)) {
+TTCN_Logger::begin_event(TTCN_Logger::DEBUG_ENCDEC);
+TTCN_Logger::log_event_str("f_encode_canfd_matrix(): Stream after encoding: ");
+ret_val.log();
+TTCN_Logger::end_event();
+}
+return ret_val;
+}
+
+CANFD__matrix__messages::CANFD__MatrixUnion f__decode__canfd__matrix(const OCTETSTRING& data)
+{
+if (TTCN_Logger::log_this_event(TTCN_Logger::DEBUG_ENCDEC)) {
+TTCN_Logger::begin_event(TTCN_Logger::DEBUG_ENCDEC);
+TTCN_Logger::log_event_str("f_decode_canfd_matrix(): Stream before decoding: ");
+data.log();
+TTCN_Logger::end_event();
+}
+TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT);
+TTCN_EncDec::clear_error();
+TTCN_Buffer ttcn_buffer(data);
+CANFD__matrix__messages::CANFD__MatrixUnion ret_val;
+ret_val.decode(CANFD__matrix__messages::CANFD__MatrixUnion_descr_, ttcn_buffer, TTCN_EncDec::CT_RAW);
+if (TTCN_Logger::log_this_event(TTCN_Logger::DEBUG_ENCDEC)) {
+TTCN_Logger::begin_event(TTCN_Logger::DEBUG_ENCDEC);
+TTCN_Logger::log_event_str("f_decode_canfd_matrix(): Decoded @CANFD_matrix_messages.CANFD_MatrixUnion: ");
+ret_val.log();
+TTCN_Logger::end_event();
+}
+if (TTCN_EncDec::get_last_error_type() == TTCN_EncDec::ET_NONE) {
+if (ttcn_buffer.get_pos() < ttcn_buffer.get_len()) {
+ttcn_buffer.cut();
+OCTETSTRING tmp_os;
+ttcn_buffer.get_string(tmp_os);
+TTCN_Logger::begin_event_log2str();
+tmp_os.log();
+CHARSTRING remaining_stream = TTCN_Logger::end_event_log2str();
+TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_EXTRA_DATA, "f_decode_canfd_matrix(): Data remained at the end of the stream after successful decoding: %s", (const char*) remaining_stream);
+}
+}
+return ret_val;
+}
+
+CAN__matrix__messages::CAN__MatrixUnion canframe2canmatrixframe(const Can::CAN__frame& p__can__frame)
+{
+TTCN_Location current_location("CAN_matrix.ttcn", 21, TTCN_Location::LOCATION_FUNCTION, "canframe2canmatrixframe");
+current_location.update_lineno(23);
+#line 23 "CAN_matrix.ttcn"
+CAN__matrix__messages::CAN__MatrixUnion v__can__frame__can__matrix;
+current_location.update_lineno(28);
+#line 28 "CAN_matrix.ttcn"
+v__can__frame__can__matrix = f__decode__can__matrix((const_cast< const Can::CAN__frame&>(p__can__frame).can__id() + const_cast< const Can::CAN__frame&>(p__can__frame).can__pdu()));
+current_location.update_lineno(31);
+#line 31 "CAN_matrix.ttcn"
+return v__can__frame__can__matrix;
+}
+
+Can::CAN__frame canmatrixframe2can(const CAN__matrix__messages::CAN__MatrixUnion& p__can__matrix__frame)
+{
+TTCN_Location current_location("CAN_matrix.ttcn", 35, TTCN_Location::LOCATION_FUNCTION, "canmatrixframe2can");
+current_location.update_lineno(37);
+#line 37 "CAN_matrix.ttcn"
+Can::CAN__frame v__can__frame;
+current_location.update_lineno(39);
+#line 39 "CAN_matrix.ttcn"
+v__can__frame.can__id() = const_cast< const CAN__matrix__messages::CAN__MatrixUnion&>(p__can__matrix__frame).can__id();
+current_location.update_lineno(40);
+#line 40 "CAN_matrix.ttcn"
+OCTETSTRING v__encoded;
+current_location.update_lineno(41);
+#line 41 "CAN_matrix.ttcn"
+v__encoded = f__encode__can__matrix(p__can__matrix__frame);
+current_location.update_lineno(42);
+#line 42 "CAN_matrix.ttcn"
+v__can__frame.can__pdu() = substr(v__encoded, 4, (v__encoded.lengthof() - 4));
+current_location.update_lineno(43);
+#line 43 "CAN_matrix.ttcn"
+return v__can__frame;
+}
+
+CANFD__matrix__messages::CANFD__MatrixUnion canfdframe2canfdmatrixframe(const Can::CANFD__frame& p__canfd__frame)
+{
+TTCN_Location current_location("CAN_matrix.ttcn", 47, TTCN_Location::LOCATION_FUNCTION, "canfdframe2canfdmatrixframe");
+current_location.update_lineno(49);
+#line 49 "CAN_matrix.ttcn"
+CANFD__matrix__messages::CANFD__MatrixUnion v__canfd__frame__canfd__matrix;
+current_location.update_lineno(54);
+#line 54 "CAN_matrix.ttcn"
+v__canfd__frame__canfd__matrix = f__decode__canfd__matrix(((const_cast< const Can::CANFD__frame&>(p__canfd__frame).can__id() + bit2oct(const_cast< const Can::CANFD__frame&>(p__canfd__frame).can__flags())) + const_cast< const Can::CANFD__frame&>(p__canfd__frame).can__pdu()));
+current_location.update_lineno(57);
+#line 57 "CAN_matrix.ttcn"
+return v__canfd__frame__canfd__matrix;
+}
+
+Can::CANFD__frame canfdmatrixframe2canfd(const CANFD__matrix__messages::CANFD__MatrixUnion& p__canfd__matrix__frame)
+{
+TTCN_Location current_location("CAN_matrix.ttcn", 61, TTCN_Location::LOCATION_FUNCTION, "canfdmatrixframe2canfd");
+current_location.update_lineno(63);
+#line 63 "CAN_matrix.ttcn"
+Can::CANFD__frame v__canfd__frame;
+current_location.update_lineno(65);
+#line 65 "CAN_matrix.ttcn"
+v__canfd__frame.can__id() = const_cast< const CANFD__matrix__messages::CANFD__MatrixUnion&>(p__canfd__matrix__frame).can__id();
+current_location.update_lineno(66);
+#line 66 "CAN_matrix.ttcn"
+OCTETSTRING v__encoded;
+current_location.update_lineno(67);
+#line 67 "CAN_matrix.ttcn"
+v__encoded = f__encode__canfd__matrix(p__canfd__matrix__frame);
+current_location.update_lineno(68);
+#line 68 "CAN_matrix.ttcn"
+v__canfd__frame.can__pdu() = substr(v__encoded, 4, 1);
+current_location.update_lineno(69);
+#line 69 "CAN_matrix.ttcn"
+v__canfd__frame.can__pdu() = substr(v__encoded, 5, (v__encoded.lengthof() - 5));
+current_location.update_lineno(70);
+#line 70 "CAN_matrix.ttcn"
+return v__canfd__frame;
+}
+
+
+/* Bodies of static functions */
+
+static void pre_init_module()
+{
+TTCN_Location current_location("CAN_matrix.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "CAN_matrix");
+SocketCAN__Types::module_object.pre_init_module();
+CAN__matrix__messages::module_object.pre_init_module();
+CANFD__matrix__messages::module_object.pre_init_module();
+module_object.add_function("f_encode_can_matrix", (genericfunc_t)&f__encode__can__matrix, NULL);
+module_object.add_function("f_decode_can_matrix", (genericfunc_t)&f__decode__can__matrix, NULL);
+module_object.add_function("f_encode_canfd_matrix", (genericfunc_t)&f__encode__canfd__matrix, NULL);
+module_object.add_function("f_decode_canfd_matrix", (genericfunc_t)&f__decode__canfd__matrix, NULL);
+module_object.add_function("canframe2canmatrixframe", (genericfunc_t)&canframe2canmatrixframe, NULL);
+module_object.add_function("canmatrixframe2can", (genericfunc_t)&canmatrixframe2can, NULL);
+module_object.add_function("canfdframe2canfdmatrixframe", (genericfunc_t)&canfdframe2canfdmatrixframe, NULL);
+module_object.add_function("canfdmatrixframe2canfd", (genericfunc_t)&canfdmatrixframe2canfd, NULL);
+}
+
+static void post_init_module()
+{
+TTCN_Location current_location("CAN_matrix.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "CAN_matrix");
+SocketCAN__Types::module_object.post_init_module();
+CAN__matrix__messages::module_object.post_init_module();
+CANFD__matrix__messages::module_object.post_init_module();
+}
+
+
+} /* end of namespace */
diff --git a/demo/CAN_matrix.d b/demo/CAN_matrix.d
new file mode 100644
index 0000000..23db9ad
--- /dev/null
+++ b/demo/CAN_matrix.d
@@ -0,0 +1,61 @@
+CAN_matrix.o CAN_matrix.d : CAN_matrix.cc CAN_matrix.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TTCN3.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/version.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/cversion.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Types.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Vector.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Error.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Basetype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Encdec.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RInt.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON_Tokenizer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Logger.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Template.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Integer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ttcn3float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Boolean.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Null.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Optional.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Param_Types.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/memory.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/BER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Textbuf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Parameters.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XmlReader.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Objid.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Verdicttype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Component.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Bitstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RAW.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/CharCoding.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Hexstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Octetstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Any.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Universal_charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Struct_of.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Array.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_CharacterString.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_External.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TEXT.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_EmbeddedPDV.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Addfunc.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Timer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Port.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Event_Handler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/TitanLoggerApiSimple.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/PreGenRecordOf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Module_list.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Snapshot.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Default.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Runtime.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/OER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Profiler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ProfilerTools.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Debugger.hh \
+ SocketCAN_Types.hh Bcm.hh Can.hh General_Types.hh Raw.hh \
+ CAN_matrix_messages.hh CAN_matrix_signals.hh CAN_matrix_general_types.hh \
+ CANFD_matrix_messages.hh
diff --git a/demo/CAN_matrix.hh b/demo/CAN_matrix.hh
new file mode 100644
index 0000000..d8d74a3
--- /dev/null
+++ b/demo/CAN_matrix.hh
@@ -0,0 +1,53 @@
+// This C++ header file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+#ifndef CAN__matrix_HH
+#define CAN__matrix_HH
+
+#ifdef TITAN_RUNTIME_2
+#error Generated code does not match with used runtime.\
+ Code was generated without -R option but -DTITAN_RUNTIME_2 was used.
+#endif
+
+/* Header file includes */
+
+#include <TTCN3.hh>
+#include "SocketCAN_Types.hh"
+#include "CAN_matrix_messages.hh"
+#include "CANFD_matrix_messages.hh"
+
+#if TTCN3_VERSION != 60600
+#error Version mismatch detected.\
+ Please check the version of the TTCN-3 compiler and the base library.\
+ Run make clean and rebuild the project if the version of the compiler changed recently.
+#endif
+
+#ifndef LINUX
+#error This file should be compiled on LINUX
+#endif
+
+namespace CAN__matrix {
+
+/* Function prototypes */
+
+extern OCTETSTRING f__encode__can__matrix(const CAN__matrix__messages::CAN__MatrixUnion& pdu);
+extern CAN__matrix__messages::CAN__MatrixUnion f__decode__can__matrix(const OCTETSTRING& data);
+extern OCTETSTRING f__encode__canfd__matrix(const CANFD__matrix__messages::CANFD__MatrixUnion& pdu);
+extern CANFD__matrix__messages::CANFD__MatrixUnion f__decode__canfd__matrix(const OCTETSTRING& data);
+extern CAN__matrix__messages::CAN__MatrixUnion canframe2canmatrixframe(const Can::CAN__frame& p__can__frame);
+extern Can::CAN__frame canmatrixframe2can(const CAN__matrix__messages::CAN__MatrixUnion& p__can__matrix__frame);
+extern CANFD__matrix__messages::CANFD__MatrixUnion canfdframe2canfdmatrixframe(const Can::CANFD__frame& p__canfd__frame);
+extern Can::CANFD__frame canfdmatrixframe2canfd(const CANFD__matrix__messages::CANFD__MatrixUnion& p__canfd__matrix__frame);
+
+/* Global variable declarations */
+
+extern TTCN_Module module_object;
+
+} /* end of namespace */
+
+#endif
diff --git a/demo/CAN_matrix.o b/demo/CAN_matrix.o
new file mode 100644
index 0000000..90d093c
--- /dev/null
+++ b/demo/CAN_matrix.o
Binary files differ
diff --git a/demo/CAN_matrix_general_types.cc b/demo/CAN_matrix_general_types.cc
new file mode 100644
index 0000000..6967b73
--- /dev/null
+++ b/demo/CAN_matrix_general_types.cc
@@ -0,0 +1,595 @@
+// This C++ source file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+/* Including header files */
+
+#include "CAN_matrix_general_types.hh"
+
+namespace CAN__matrix__general__types {
+
+/* Literal string constants */
+
+static const unsigned char module_checksum[] = { 0x62, 0x28, 0x4b, 0x2b, 0xf8, 0x3b, 0x33, 0xae, 0x48, 0x23, 0x0e, 0xdf, 0x90, 0x75, 0xec, 0x9e };
+
+/* Global variable definitions */
+
+const TTCN_RAWdescriptor_t INT1_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,NULL,false};
+const XERdescriptor_t       INT1_xer_ = { {"INT1>\n", "INT1>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT1_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT1_descr_ = { "@CAN_matrix_general_types.INT1", &INTEGER_ber_, &INT1_raw_, &INTEGER_text_, &INT1_xer_, &INTEGER_json_, &INT1_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT2_raw_ = {16,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT2_xer_ = { {"INT2>\n", "INT2>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT2_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT2_descr_ = { "@CAN_matrix_general_types.INT2", &INTEGER_ber_, &INT2_raw_, &INTEGER_text_, &INT2_xer_, &INTEGER_json_, &INT2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT3_raw_ = {24,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT3_xer_ = { {"INT3>\n", "INT3>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT3_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT3_descr_ = { "@CAN_matrix_general_types.INT3", &INTEGER_ber_, &INT3_raw_, &INTEGER_text_, &INT3_xer_, &INTEGER_json_, &INT3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT4_raw_ = {32,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT4_xer_ = { {"INT4>\n", "INT4>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT4_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT4_descr_ = { "@CAN_matrix_general_types.INT4", &INTEGER_ber_, &INT4_raw_, &INTEGER_text_, &INT4_xer_, &INTEGER_json_, &INT4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT1__MSB_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT1__MSB_xer_ = { {"INT_BIT1_MSB>\n", "INT_BIT1_MSB>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT1__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT1__MSB_descr_ = { "@CAN_matrix_general_types.INT_BIT1_MSB", &INTEGER_ber_, &INT__BIT1__MSB_raw_, &INTEGER_text_, &INT__BIT1__MSB_xer_, &INTEGER_json_, &INT__BIT1__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT2__MSB_raw_ = {2,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT2__MSB_xer_ = { {"INT_BIT2_MSB>\n", "INT_BIT2_MSB>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT2__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT2__MSB_descr_ = { "@CAN_matrix_general_types.INT_BIT2_MSB", &INTEGER_ber_, &INT__BIT2__MSB_raw_, &INTEGER_text_, &INT__BIT2__MSB_xer_, &INTEGER_json_, &INT__BIT2__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT3__MSB_raw_ = {3,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT3__MSB_xer_ = { {"INT_BIT3_MSB>\n", "INT_BIT3_MSB>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT3__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT3__MSB_descr_ = { "@CAN_matrix_general_types.INT_BIT3_MSB", &INTEGER_ber_, &INT__BIT3__MSB_raw_, &INTEGER_text_, &INT__BIT3__MSB_xer_, &INTEGER_json_, &INT__BIT3__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT4__MSB_raw_ = {4,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT4__MSB_xer_ = { {"INT_BIT4_MSB>\n", "INT_BIT4_MSB>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT4__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT4__MSB_descr_ = { "@CAN_matrix_general_types.INT_BIT4_MSB", &INTEGER_ber_, &INT__BIT4__MSB_raw_, &INTEGER_text_, &INT__BIT4__MSB_xer_, &INTEGER_json_, &INT__BIT4__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT5__MSB_raw_ = {5,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT5__MSB_xer_ = { {"INT_BIT5_MSB>\n", "INT_BIT5_MSB>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT5__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT5__MSB_descr_ = { "@CAN_matrix_general_types.INT_BIT5_MSB", &INTEGER_ber_, &INT__BIT5__MSB_raw_, &INTEGER_text_, &INT__BIT5__MSB_xer_, &INTEGER_json_, &INT__BIT5__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT6__MSB_raw_ = {6,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT6__MSB_xer_ = { {"INT_BIT6_MSB>\n", "INT_BIT6_MSB>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT6__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT6__MSB_descr_ = { "@CAN_matrix_general_types.INT_BIT6_MSB", &INTEGER_ber_, &INT__BIT6__MSB_raw_, &INTEGER_text_, &INT__BIT6__MSB_xer_, &INTEGER_json_, &INT__BIT6__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT7__MSB_raw_ = {7,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT7__MSB_xer_ = { {"INT_BIT7_MSB>\n", "INT_BIT7_MSB>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT7__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT7__MSB_descr_ = { "@CAN_matrix_general_types.INT_BIT7_MSB", &INTEGER_ber_, &INT__BIT7__MSB_raw_, &INTEGER_text_, &INT__BIT7__MSB_xer_, &INTEGER_json_, &INT__BIT7__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT8__MSB_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT8__MSB_xer_ = { {"INT_BIT8_MSB>\n", "INT_BIT8_MSB>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT8__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT8__MSB_descr_ = { "@CAN_matrix_general_types.INT_BIT8_MSB", &INTEGER_ber_, &INT__BIT8__MSB_raw_, &INTEGER_text_, &INT__BIT8__MSB_xer_, &INTEGER_json_, &INT__BIT8__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT9__MSB_raw_ = {9,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT9__MSB_xer_ = { {"INT_BIT9_MSB>\n", "INT_BIT9_MSB>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT9__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT9__MSB_descr_ = { "@CAN_matrix_general_types.INT_BIT9_MSB", &INTEGER_ber_, &INT__BIT9__MSB_raw_, &INTEGER_text_, &INT__BIT9__MSB_xer_, &INTEGER_json_, &INT__BIT9__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT10__MSB_raw_ = {10,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT10__MSB_xer_ = { {"INT_BIT10_MSB>\n", "INT_BIT10_MSB>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT10__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT10__MSB_descr_ = { "@CAN_matrix_general_types.INT_BIT10_MSB", &INTEGER_ber_, &INT__BIT10__MSB_raw_, &INTEGER_text_, &INT__BIT10__MSB_xer_, &INTEGER_json_, &INT__BIT10__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT11__MSB_raw_ = {11,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT11__MSB_xer_ = { {"INT_BIT11_MSB>\n", "INT_BIT11_MSB>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT11__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT11__MSB_descr_ = { "@CAN_matrix_general_types.INT_BIT11_MSB", &INTEGER_ber_, &INT__BIT11__MSB_raw_, &INTEGER_text_, &INT__BIT11__MSB_xer_, &INTEGER_json_, &INT__BIT11__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT12__MSB_raw_ = {12,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT12__MSB_xer_ = { {"INT_BIT12_MSB>\n", "INT_BIT12_MSB>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT12__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT12__MSB_descr_ = { "@CAN_matrix_general_types.INT_BIT12_MSB", &INTEGER_ber_, &INT__BIT12__MSB_raw_, &INTEGER_text_, &INT__BIT12__MSB_xer_, &INTEGER_json_, &INT__BIT12__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT13__MSB_raw_ = {13,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT13__MSB_xer_ = { {"INT_BIT13_MSB>\n", "INT_BIT13_MSB>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT13__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT13__MSB_descr_ = { "@CAN_matrix_general_types.INT_BIT13_MSB", &INTEGER_ber_, &INT__BIT13__MSB_raw_, &INTEGER_text_, &INT__BIT13__MSB_xer_, &INTEGER_json_, &INT__BIT13__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT14__MSB_raw_ = {14,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT14__MSB_xer_ = { {"INT_BIT14_MSB>\n", "INT_BIT14_MSB>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT14__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT14__MSB_descr_ = { "@CAN_matrix_general_types.INT_BIT14_MSB", &INTEGER_ber_, &INT__BIT14__MSB_raw_, &INTEGER_text_, &INT__BIT14__MSB_xer_, &INTEGER_json_, &INT__BIT14__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT15__MSB_raw_ = {15,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT15__MSB_xer_ = { {"INT_BIT15_MSB>\n", "INT_BIT15_MSB>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT15__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT15__MSB_descr_ = { "@CAN_matrix_general_types.INT_BIT15_MSB", &INTEGER_ber_, &INT__BIT15__MSB_raw_, &INTEGER_text_, &INT__BIT15__MSB_xer_, &INTEGER_json_, &INT__BIT15__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT16__MSB_raw_ = {16,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT16__MSB_xer_ = { {"INT_BIT16_MSB>\n", "INT_BIT16_MSB>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT16__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT16__MSB_descr_ = { "@CAN_matrix_general_types.INT_BIT16_MSB", &INTEGER_ber_, &INT__BIT16__MSB_raw_, &INTEGER_text_, &INT__BIT16__MSB_xer_, &INTEGER_json_, &INT__BIT16__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT17__MSB_raw_ = {17,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT17__MSB_xer_ = { {"INT_BIT17_MSB>\n", "INT_BIT17_MSB>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT17__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT17__MSB_descr_ = { "@CAN_matrix_general_types.INT_BIT17_MSB", &INTEGER_ber_, &INT__BIT17__MSB_raw_, &INTEGER_text_, &INT__BIT17__MSB_xer_, &INTEGER_json_, &INT__BIT17__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT18__MSB_raw_ = {18,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT18__MSB_xer_ = { {"INT_BIT18_MSB>\n", "INT_BIT18_MSB>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT18__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT18__MSB_descr_ = { "@CAN_matrix_general_types.INT_BIT18_MSB", &INTEGER_ber_, &INT__BIT18__MSB_raw_, &INTEGER_text_, &INT__BIT18__MSB_xer_, &INTEGER_json_, &INT__BIT18__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT19__MSB_raw_ = {19,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT19__MSB_xer_ = { {"INT_BIT19_MSB>\n", "INT_BIT19_MSB>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT19__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT19__MSB_descr_ = { "@CAN_matrix_general_types.INT_BIT19_MSB", &INTEGER_ber_, &INT__BIT19__MSB_raw_, &INTEGER_text_, &INT__BIT19__MSB_xer_, &INTEGER_json_, &INT__BIT19__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT20__MSB_raw_ = {20,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT20__MSB_xer_ = { {"INT_BIT20_MSB>\n", "INT_BIT20_MSB>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT20__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT20__MSB_descr_ = { "@CAN_matrix_general_types.INT_BIT20_MSB", &INTEGER_ber_, &INT__BIT20__MSB_raw_, &INTEGER_text_, &INT__BIT20__MSB_xer_, &INTEGER_json_, &INT__BIT20__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT21__MSB_raw_ = {21,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT21__MSB_xer_ = { {"INT_BIT21_MSB>\n", "INT_BIT21_MSB>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT21__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT21__MSB_descr_ = { "@CAN_matrix_general_types.INT_BIT21_MSB", &INTEGER_ber_, &INT__BIT21__MSB_raw_, &INTEGER_text_, &INT__BIT21__MSB_xer_, &INTEGER_json_, &INT__BIT21__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT22__MSB_raw_ = {22,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT22__MSB_xer_ = { {"INT_BIT22_MSB>\n", "INT_BIT22_MSB>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT22__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT22__MSB_descr_ = { "@CAN_matrix_general_types.INT_BIT22_MSB", &INTEGER_ber_, &INT__BIT22__MSB_raw_, &INTEGER_text_, &INT__BIT22__MSB_xer_, &INTEGER_json_, &INT__BIT22__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT23__MSB_raw_ = {23,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT23__MSB_xer_ = { {"INT_BIT23_MSB>\n", "INT_BIT23_MSB>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT23__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT23__MSB_descr_ = { "@CAN_matrix_general_types.INT_BIT23_MSB", &INTEGER_ber_, &INT__BIT23__MSB_raw_, &INTEGER_text_, &INT__BIT23__MSB_xer_, &INTEGER_json_, &INT__BIT23__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT24__MSB_raw_ = {24,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT24__MSB_xer_ = { {"INT_BIT24_MSB>\n", "INT_BIT24_MSB>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT24__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT24__MSB_descr_ = { "@CAN_matrix_general_types.INT_BIT24_MSB", &INTEGER_ber_, &INT__BIT24__MSB_raw_, &INTEGER_text_, &INT__BIT24__MSB_xer_, &INTEGER_json_, &INT__BIT24__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT25__MSB_raw_ = {25,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT25__MSB_xer_ = { {"INT_BIT25_MSB>\n", "INT_BIT25_MSB>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT25__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT25__MSB_descr_ = { "@CAN_matrix_general_types.INT_BIT25_MSB", &INTEGER_ber_, &INT__BIT25__MSB_raw_, &INTEGER_text_, &INT__BIT25__MSB_xer_, &INTEGER_json_, &INT__BIT25__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT26__MSB_raw_ = {26,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT26__MSB_xer_ = { {"INT_BIT26_MSB>\n", "INT_BIT26_MSB>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT26__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT26__MSB_descr_ = { "@CAN_matrix_general_types.INT_BIT26_MSB", &INTEGER_ber_, &INT__BIT26__MSB_raw_, &INTEGER_text_, &INT__BIT26__MSB_xer_, &INTEGER_json_, &INT__BIT26__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT27__MSB_raw_ = {27,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT27__MSB_xer_ = { {"INT_BIT27_MSB>\n", "INT_BIT27_MSB>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT27__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT27__MSB_descr_ = { "@CAN_matrix_general_types.INT_BIT27_MSB", &INTEGER_ber_, &INT__BIT27__MSB_raw_, &INTEGER_text_, &INT__BIT27__MSB_xer_, &INTEGER_json_, &INT__BIT27__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT28__MSB_raw_ = {28,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT28__MSB_xer_ = { {"INT_BIT28_MSB>\n", "INT_BIT28_MSB>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT28__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT28__MSB_descr_ = { "@CAN_matrix_general_types.INT_BIT28_MSB", &INTEGER_ber_, &INT__BIT28__MSB_raw_, &INTEGER_text_, &INT__BIT28__MSB_xer_, &INTEGER_json_, &INT__BIT28__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT39__MSB_raw_ = {29,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT39__MSB_xer_ = { {"INT_BIT39_MSB>\n", "INT_BIT39_MSB>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT39__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT39__MSB_descr_ = { "@CAN_matrix_general_types.INT_BIT39_MSB", &INTEGER_ber_, &INT__BIT39__MSB_raw_, &INTEGER_text_, &INT__BIT39__MSB_xer_, &INTEGER_json_, &INT__BIT39__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT30__MSB_raw_ = {30,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT30__MSB_xer_ = { {"INT_BIT30_MSB>\n", "INT_BIT30_MSB>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT30__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT30__MSB_descr_ = { "@CAN_matrix_general_types.INT_BIT30_MSB", &INTEGER_ber_, &INT__BIT30__MSB_raw_, &INTEGER_text_, &INT__BIT30__MSB_xer_, &INTEGER_json_, &INT__BIT30__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT31__MSB_raw_ = {31,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT31__MSB_xer_ = { {"INT_BIT31_MSB>\n", "INT_BIT31_MSB>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT31__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT31__MSB_descr_ = { "@CAN_matrix_general_types.INT_BIT31_MSB", &INTEGER_ber_, &INT__BIT31__MSB_raw_, &INTEGER_text_, &INT__BIT31__MSB_xer_, &INTEGER_json_, &INT__BIT31__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT32__MSB_raw_ = {32,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT32__MSB_xer_ = { {"INT_BIT32_MSB>\n", "INT_BIT32_MSB>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT32__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT32__MSB_descr_ = { "@CAN_matrix_general_types.INT_BIT32_MSB", &INTEGER_ber_, &INT__BIT32__MSB_raw_, &INTEGER_text_, &INT__BIT32__MSB_xer_, &INTEGER_json_, &INT__BIT32__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT1__LSB_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT1__LSB_xer_ = { {"INT_BIT1_LSB>\n", "INT_BIT1_LSB>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT1__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT1__LSB_descr_ = { "@CAN_matrix_general_types.INT_BIT1_LSB", &INTEGER_ber_, &INT__BIT1__LSB_raw_, &INTEGER_text_, &INT__BIT1__LSB_xer_, &INTEGER_json_, &INT__BIT1__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT2__LSB_raw_ = {2,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT2__LSB_xer_ = { {"INT_BIT2_LSB>\n", "INT_BIT2_LSB>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT2__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT2__LSB_descr_ = { "@CAN_matrix_general_types.INT_BIT2_LSB", &INTEGER_ber_, &INT__BIT2__LSB_raw_, &INTEGER_text_, &INT__BIT2__LSB_xer_, &INTEGER_json_, &INT__BIT2__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT3__LSB_raw_ = {3,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT3__LSB_xer_ = { {"INT_BIT3_LSB>\n", "INT_BIT3_LSB>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT3__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT3__LSB_descr_ = { "@CAN_matrix_general_types.INT_BIT3_LSB", &INTEGER_ber_, &INT__BIT3__LSB_raw_, &INTEGER_text_, &INT__BIT3__LSB_xer_, &INTEGER_json_, &INT__BIT3__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT4__LSB_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,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT4__LSB_xer_ = { {"INT_BIT4_LSB>\n", "INT_BIT4_LSB>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT4__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT4__LSB_descr_ = { "@CAN_matrix_general_types.INT_BIT4_LSB", &INTEGER_ber_, &INT__BIT4__LSB_raw_, &INTEGER_text_, &INT__BIT4__LSB_xer_, &INTEGER_json_, &INT__BIT4__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT5__LSB_raw_ = {5,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT5__LSB_xer_ = { {"INT_BIT5_LSB>\n", "INT_BIT5_LSB>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT5__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT5__LSB_descr_ = { "@CAN_matrix_general_types.INT_BIT5_LSB", &INTEGER_ber_, &INT__BIT5__LSB_raw_, &INTEGER_text_, &INT__BIT5__LSB_xer_, &INTEGER_json_, &INT__BIT5__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT6__LSB_raw_ = {6,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT6__LSB_xer_ = { {"INT_BIT6_LSB>\n", "INT_BIT6_LSB>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT6__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT6__LSB_descr_ = { "@CAN_matrix_general_types.INT_BIT6_LSB", &INTEGER_ber_, &INT__BIT6__LSB_raw_, &INTEGER_text_, &INT__BIT6__LSB_xer_, &INTEGER_json_, &INT__BIT6__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT7__LSB_raw_ = {7,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT7__LSB_xer_ = { {"INT_BIT7_LSB>\n", "INT_BIT7_LSB>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT7__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT7__LSB_descr_ = { "@CAN_matrix_general_types.INT_BIT7_LSB", &INTEGER_ber_, &INT__BIT7__LSB_raw_, &INTEGER_text_, &INT__BIT7__LSB_xer_, &INTEGER_json_, &INT__BIT7__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT8__LSB_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,NULL,false};
+const XERdescriptor_t       INT__BIT8__LSB_xer_ = { {"INT_BIT8_LSB>\n", "INT_BIT8_LSB>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT8__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT8__LSB_descr_ = { "@CAN_matrix_general_types.INT_BIT8_LSB", &INTEGER_ber_, &INT__BIT8__LSB_raw_, &INTEGER_text_, &INT__BIT8__LSB_xer_, &INTEGER_json_, &INT__BIT8__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT9__LSB_raw_ = {9,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT9__LSB_xer_ = { {"INT_BIT9_LSB>\n", "INT_BIT9_LSB>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT9__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT9__LSB_descr_ = { "@CAN_matrix_general_types.INT_BIT9_LSB", &INTEGER_ber_, &INT__BIT9__LSB_raw_, &INTEGER_text_, &INT__BIT9__LSB_xer_, &INTEGER_json_, &INT__BIT9__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT10__LSB_raw_ = {10,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT10__LSB_xer_ = { {"INT_BIT10_LSB>\n", "INT_BIT10_LSB>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT10__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT10__LSB_descr_ = { "@CAN_matrix_general_types.INT_BIT10_LSB", &INTEGER_ber_, &INT__BIT10__LSB_raw_, &INTEGER_text_, &INT__BIT10__LSB_xer_, &INTEGER_json_, &INT__BIT10__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT11__LSB_raw_ = {11,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT11__LSB_xer_ = { {"INT_BIT11_LSB>\n", "INT_BIT11_LSB>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT11__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT11__LSB_descr_ = { "@CAN_matrix_general_types.INT_BIT11_LSB", &INTEGER_ber_, &INT__BIT11__LSB_raw_, &INTEGER_text_, &INT__BIT11__LSB_xer_, &INTEGER_json_, &INT__BIT11__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT12__LSB_raw_ = {12,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT12__LSB_xer_ = { {"INT_BIT12_LSB>\n", "INT_BIT12_LSB>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT12__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT12__LSB_descr_ = { "@CAN_matrix_general_types.INT_BIT12_LSB", &INTEGER_ber_, &INT__BIT12__LSB_raw_, &INTEGER_text_, &INT__BIT12__LSB_xer_, &INTEGER_json_, &INT__BIT12__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT13__LSB_raw_ = {13,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT13__LSB_xer_ = { {"INT_BIT13_LSB>\n", "INT_BIT13_LSB>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT13__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT13__LSB_descr_ = { "@CAN_matrix_general_types.INT_BIT13_LSB", &INTEGER_ber_, &INT__BIT13__LSB_raw_, &INTEGER_text_, &INT__BIT13__LSB_xer_, &INTEGER_json_, &INT__BIT13__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT14__LSB_raw_ = {14,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT14__LSB_xer_ = { {"INT_BIT14_LSB>\n", "INT_BIT14_LSB>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT14__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT14__LSB_descr_ = { "@CAN_matrix_general_types.INT_BIT14_LSB", &INTEGER_ber_, &INT__BIT14__LSB_raw_, &INTEGER_text_, &INT__BIT14__LSB_xer_, &INTEGER_json_, &INT__BIT14__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT15__LSB_raw_ = {15,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT15__LSB_xer_ = { {"INT_BIT15_LSB>\n", "INT_BIT15_LSB>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT15__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT15__LSB_descr_ = { "@CAN_matrix_general_types.INT_BIT15_LSB", &INTEGER_ber_, &INT__BIT15__LSB_raw_, &INTEGER_text_, &INT__BIT15__LSB_xer_, &INTEGER_json_, &INT__BIT15__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT16__LSB_raw_ = {16,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT16__LSB_xer_ = { {"INT_BIT16_LSB>\n", "INT_BIT16_LSB>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT16__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT16__LSB_descr_ = { "@CAN_matrix_general_types.INT_BIT16_LSB", &INTEGER_ber_, &INT__BIT16__LSB_raw_, &INTEGER_text_, &INT__BIT16__LSB_xer_, &INTEGER_json_, &INT__BIT16__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT17__LSB_raw_ = {17,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT17__LSB_xer_ = { {"INT_BIT17_LSB>\n", "INT_BIT17_LSB>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT17__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT17__LSB_descr_ = { "@CAN_matrix_general_types.INT_BIT17_LSB", &INTEGER_ber_, &INT__BIT17__LSB_raw_, &INTEGER_text_, &INT__BIT17__LSB_xer_, &INTEGER_json_, &INT__BIT17__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT18__LSB_raw_ = {18,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT18__LSB_xer_ = { {"INT_BIT18_LSB>\n", "INT_BIT18_LSB>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT18__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT18__LSB_descr_ = { "@CAN_matrix_general_types.INT_BIT18_LSB", &INTEGER_ber_, &INT__BIT18__LSB_raw_, &INTEGER_text_, &INT__BIT18__LSB_xer_, &INTEGER_json_, &INT__BIT18__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT19__LSB_raw_ = {19,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT19__LSB_xer_ = { {"INT_BIT19_LSB>\n", "INT_BIT19_LSB>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT19__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT19__LSB_descr_ = { "@CAN_matrix_general_types.INT_BIT19_LSB", &INTEGER_ber_, &INT__BIT19__LSB_raw_, &INTEGER_text_, &INT__BIT19__LSB_xer_, &INTEGER_json_, &INT__BIT19__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT20__LSB_raw_ = {20,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT20__LSB_xer_ = { {"INT_BIT20_LSB>\n", "INT_BIT20_LSB>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT20__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT20__LSB_descr_ = { "@CAN_matrix_general_types.INT_BIT20_LSB", &INTEGER_ber_, &INT__BIT20__LSB_raw_, &INTEGER_text_, &INT__BIT20__LSB_xer_, &INTEGER_json_, &INT__BIT20__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT21__LSB_raw_ = {21,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT21__LSB_xer_ = { {"INT_BIT21_LSB>\n", "INT_BIT21_LSB>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT21__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT21__LSB_descr_ = { "@CAN_matrix_general_types.INT_BIT21_LSB", &INTEGER_ber_, &INT__BIT21__LSB_raw_, &INTEGER_text_, &INT__BIT21__LSB_xer_, &INTEGER_json_, &INT__BIT21__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT22__LSB_raw_ = {22,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT22__LSB_xer_ = { {"INT_BIT22_LSB>\n", "INT_BIT22_LSB>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT22__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT22__LSB_descr_ = { "@CAN_matrix_general_types.INT_BIT22_LSB", &INTEGER_ber_, &INT__BIT22__LSB_raw_, &INTEGER_text_, &INT__BIT22__LSB_xer_, &INTEGER_json_, &INT__BIT22__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT23__LSB_raw_ = {23,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT23__LSB_xer_ = { {"INT_BIT23_LSB>\n", "INT_BIT23_LSB>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT23__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT23__LSB_descr_ = { "@CAN_matrix_general_types.INT_BIT23_LSB", &INTEGER_ber_, &INT__BIT23__LSB_raw_, &INTEGER_text_, &INT__BIT23__LSB_xer_, &INTEGER_json_, &INT__BIT23__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT24__LSB_raw_ = {24,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT24__LSB_xer_ = { {"INT_BIT24_LSB>\n", "INT_BIT24_LSB>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT24__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT24__LSB_descr_ = { "@CAN_matrix_general_types.INT_BIT24_LSB", &INTEGER_ber_, &INT__BIT24__LSB_raw_, &INTEGER_text_, &INT__BIT24__LSB_xer_, &INTEGER_json_, &INT__BIT24__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT25__LSB_raw_ = {25,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT25__LSB_xer_ = { {"INT_BIT25_LSB>\n", "INT_BIT25_LSB>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT25__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT25__LSB_descr_ = { "@CAN_matrix_general_types.INT_BIT25_LSB", &INTEGER_ber_, &INT__BIT25__LSB_raw_, &INTEGER_text_, &INT__BIT25__LSB_xer_, &INTEGER_json_, &INT__BIT25__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT26__LSB_raw_ = {26,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT26__LSB_xer_ = { {"INT_BIT26_LSB>\n", "INT_BIT26_LSB>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT26__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT26__LSB_descr_ = { "@CAN_matrix_general_types.INT_BIT26_LSB", &INTEGER_ber_, &INT__BIT26__LSB_raw_, &INTEGER_text_, &INT__BIT26__LSB_xer_, &INTEGER_json_, &INT__BIT26__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT27__LSB_raw_ = {27,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT27__LSB_xer_ = { {"INT_BIT27_LSB>\n", "INT_BIT27_LSB>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT27__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT27__LSB_descr_ = { "@CAN_matrix_general_types.INT_BIT27_LSB", &INTEGER_ber_, &INT__BIT27__LSB_raw_, &INTEGER_text_, &INT__BIT27__LSB_xer_, &INTEGER_json_, &INT__BIT27__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT28__LSB_raw_ = {28,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT28__LSB_xer_ = { {"INT_BIT28_LSB>\n", "INT_BIT28_LSB>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT28__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT28__LSB_descr_ = { "@CAN_matrix_general_types.INT_BIT28_LSB", &INTEGER_ber_, &INT__BIT28__LSB_raw_, &INTEGER_text_, &INT__BIT28__LSB_xer_, &INTEGER_json_, &INT__BIT28__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT39__LSB_raw_ = {29,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT39__LSB_xer_ = { {"INT_BIT39_LSB>\n", "INT_BIT39_LSB>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT39__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT39__LSB_descr_ = { "@CAN_matrix_general_types.INT_BIT39_LSB", &INTEGER_ber_, &INT__BIT39__LSB_raw_, &INTEGER_text_, &INT__BIT39__LSB_xer_, &INTEGER_json_, &INT__BIT39__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT30__LSB_raw_ = {30,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT30__LSB_xer_ = { {"INT_BIT30_LSB>\n", "INT_BIT30_LSB>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT30__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT30__LSB_descr_ = { "@CAN_matrix_general_types.INT_BIT30_LSB", &INTEGER_ber_, &INT__BIT30__LSB_raw_, &INTEGER_text_, &INT__BIT30__LSB_xer_, &INTEGER_json_, &INT__BIT30__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT31__LSB_raw_ = {31,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT31__LSB_xer_ = { {"INT_BIT31_LSB>\n", "INT_BIT31_LSB>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT31__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT31__LSB_descr_ = { "@CAN_matrix_general_types.INT_BIT31_LSB", &INTEGER_ber_, &INT__BIT31__LSB_raw_, &INTEGER_text_, &INT__BIT31__LSB_xer_, &INTEGER_json_, &INT__BIT31__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT32__LSB_raw_ = {32,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT32__LSB_xer_ = { {"INT_BIT32_LSB>\n", "INT_BIT32_LSB>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT32__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT32__LSB_descr_ = { "@CAN_matrix_general_types.INT_BIT32_LSB", &INTEGER_ber_, &INT__BIT32__LSB_raw_, &INTEGER_text_, &INT__BIT32__LSB_xer_, &INTEGER_json_, &INT__BIT32__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT1__MSB_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT1__MSB_xer_ = { {"BIT1_MSB>\n", "BIT1_MSB>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT1__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT1__MSB_descr_ = { "@CAN_matrix_general_types.BIT1_MSB", &BITSTRING_ber_, &BIT1__MSB_raw_, NULL, &BIT1__MSB_xer_, &BITSTRING_json_, &BIT1__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT2__MSB_raw_ = {2,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT2__MSB_xer_ = { {"BIT2_MSB>\n", "BIT2_MSB>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT2__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT2__MSB_descr_ = { "@CAN_matrix_general_types.BIT2_MSB", &BITSTRING_ber_, &BIT2__MSB_raw_, NULL, &BIT2__MSB_xer_, &BITSTRING_json_, &BIT2__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT3__MSB_raw_ = {3,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,3,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT3__MSB_xer_ = { {"BIT3_MSB>\n", "BIT3_MSB>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT3__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT3__MSB_descr_ = { "@CAN_matrix_general_types.BIT3_MSB", &BITSTRING_ber_, &BIT3__MSB_raw_, NULL, &BIT3__MSB_xer_, &BITSTRING_json_, &BIT3__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT4__MSB_raw_ = {4,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,4,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT4__MSB_xer_ = { {"BIT4_MSB>\n", "BIT4_MSB>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT4__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT4__MSB_descr_ = { "@CAN_matrix_general_types.BIT4_MSB", &BITSTRING_ber_, &BIT4__MSB_raw_, NULL, &BIT4__MSB_xer_, &BITSTRING_json_, &BIT4__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT5__MSB_raw_ = {5,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,5,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT5__MSB_xer_ = { {"BIT5_MSB>\n", "BIT5_MSB>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT5__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT5__MSB_descr_ = { "@CAN_matrix_general_types.BIT5_MSB", &BITSTRING_ber_, &BIT5__MSB_raw_, NULL, &BIT5__MSB_xer_, &BITSTRING_json_, &BIT5__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT6__MSB_raw_ = {6,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,6,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT6__MSB_xer_ = { {"BIT6_MSB>\n", "BIT6_MSB>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT6__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT6__MSB_descr_ = { "@CAN_matrix_general_types.BIT6_MSB", &BITSTRING_ber_, &BIT6__MSB_raw_, NULL, &BIT6__MSB_xer_, &BITSTRING_json_, &BIT6__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT7__MSB_raw_ = {7,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,7,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT7__MSB_xer_ = { {"BIT7_MSB>\n", "BIT7_MSB>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT7__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT7__MSB_descr_ = { "@CAN_matrix_general_types.BIT7_MSB", &BITSTRING_ber_, &BIT7__MSB_raw_, NULL, &BIT7__MSB_xer_, &BITSTRING_json_, &BIT7__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT8__MSB_raw_ = {8,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,8,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT8__MSB_xer_ = { {"BIT8_MSB>\n", "BIT8_MSB>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT8__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT8__MSB_descr_ = { "@CAN_matrix_general_types.BIT8_MSB", &BITSTRING_ber_, &BIT8__MSB_raw_, NULL, &BIT8__MSB_xer_, &BITSTRING_json_, &BIT8__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT9__MSB_raw_ = {9,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,9,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT9__MSB_xer_ = { {"BIT9_MSB>\n", "BIT9_MSB>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT9__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT9__MSB_descr_ = { "@CAN_matrix_general_types.BIT9_MSB", &BITSTRING_ber_, &BIT9__MSB_raw_, NULL, &BIT9__MSB_xer_, &BITSTRING_json_, &BIT9__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT10__MSB_raw_ = {10,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,10,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT10__MSB_xer_ = { {"BIT10_MSB>\n", "BIT10_MSB>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT10__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT10__MSB_descr_ = { "@CAN_matrix_general_types.BIT10_MSB", &BITSTRING_ber_, &BIT10__MSB_raw_, NULL, &BIT10__MSB_xer_, &BITSTRING_json_, &BIT10__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT11__MSB_raw_ = {11,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,11,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT11__MSB_xer_ = { {"BIT11_MSB>\n", "BIT11_MSB>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT11__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT11__MSB_descr_ = { "@CAN_matrix_general_types.BIT11_MSB", &BITSTRING_ber_, &BIT11__MSB_raw_, NULL, &BIT11__MSB_xer_, &BITSTRING_json_, &BIT11__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT12__MSB_raw_ = {12,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,12,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT12__MSB_xer_ = { {"BIT12_MSB>\n", "BIT12_MSB>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT12__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT12__MSB_descr_ = { "@CAN_matrix_general_types.BIT12_MSB", &BITSTRING_ber_, &BIT12__MSB_raw_, NULL, &BIT12__MSB_xer_, &BITSTRING_json_, &BIT12__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT13__MSB_raw_ = {13,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,13,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT13__MSB_xer_ = { {"BIT13_MSB>\n", "BIT13_MSB>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT13__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT13__MSB_descr_ = { "@CAN_matrix_general_types.BIT13_MSB", &BITSTRING_ber_, &BIT13__MSB_raw_, NULL, &BIT13__MSB_xer_, &BITSTRING_json_, &BIT13__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT14__MSB_raw_ = {14,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,14,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT14__MSB_xer_ = { {"BIT14_MSB>\n", "BIT14_MSB>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT14__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT14__MSB_descr_ = { "@CAN_matrix_general_types.BIT14_MSB", &BITSTRING_ber_, &BIT14__MSB_raw_, NULL, &BIT14__MSB_xer_, &BITSTRING_json_, &BIT14__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT15__MSB_raw_ = {15,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,15,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT15__MSB_xer_ = { {"BIT15_MSB>\n", "BIT15_MSB>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT15__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT15__MSB_descr_ = { "@CAN_matrix_general_types.BIT15_MSB", &BITSTRING_ber_, &BIT15__MSB_raw_, NULL, &BIT15__MSB_xer_, &BITSTRING_json_, &BIT15__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT16__MSB_raw_ = {16,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,16,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT16__MSB_xer_ = { {"BIT16_MSB>\n", "BIT16_MSB>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT16__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT16__MSB_descr_ = { "@CAN_matrix_general_types.BIT16_MSB", &BITSTRING_ber_, &BIT16__MSB_raw_, NULL, &BIT16__MSB_xer_, &BITSTRING_json_, &BIT16__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT17__MSB_raw_ = {17,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,17,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT17__MSB_xer_ = { {"BIT17_MSB>\n", "BIT17_MSB>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT17__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT17__MSB_descr_ = { "@CAN_matrix_general_types.BIT17_MSB", &BITSTRING_ber_, &BIT17__MSB_raw_, NULL, &BIT17__MSB_xer_, &BITSTRING_json_, &BIT17__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT18__MSB_raw_ = {18,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,18,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT18__MSB_xer_ = { {"BIT18_MSB>\n", "BIT18_MSB>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT18__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT18__MSB_descr_ = { "@CAN_matrix_general_types.BIT18_MSB", &BITSTRING_ber_, &BIT18__MSB_raw_, NULL, &BIT18__MSB_xer_, &BITSTRING_json_, &BIT18__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT19__MSB_raw_ = {19,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,19,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT19__MSB_xer_ = { {"BIT19_MSB>\n", "BIT19_MSB>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT19__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT19__MSB_descr_ = { "@CAN_matrix_general_types.BIT19_MSB", &BITSTRING_ber_, &BIT19__MSB_raw_, NULL, &BIT19__MSB_xer_, &BITSTRING_json_, &BIT19__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT20__MSB_raw_ = {20,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,20,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT20__MSB_xer_ = { {"BIT20_MSB>\n", "BIT20_MSB>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT20__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT20__MSB_descr_ = { "@CAN_matrix_general_types.BIT20_MSB", &BITSTRING_ber_, &BIT20__MSB_raw_, NULL, &BIT20__MSB_xer_, &BITSTRING_json_, &BIT20__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT21__MSB_raw_ = {21,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,21,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT21__MSB_xer_ = { {"BIT21_MSB>\n", "BIT21_MSB>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT21__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT21__MSB_descr_ = { "@CAN_matrix_general_types.BIT21_MSB", &BITSTRING_ber_, &BIT21__MSB_raw_, NULL, &BIT21__MSB_xer_, &BITSTRING_json_, &BIT21__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT22__MSB_raw_ = {22,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,22,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT22__MSB_xer_ = { {"BIT22_MSB>\n", "BIT22_MSB>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT22__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT22__MSB_descr_ = { "@CAN_matrix_general_types.BIT22_MSB", &BITSTRING_ber_, &BIT22__MSB_raw_, NULL, &BIT22__MSB_xer_, &BITSTRING_json_, &BIT22__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT24__MSB_raw_ = {24,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,24,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT24__MSB_xer_ = { {"BIT24_MSB>\n", "BIT24_MSB>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT24__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT24__MSB_descr_ = { "@CAN_matrix_general_types.BIT24_MSB", &BITSTRING_ber_, &BIT24__MSB_raw_, NULL, &BIT24__MSB_xer_, &BITSTRING_json_, &BIT24__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT25__MSB_raw_ = {25,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,25,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT25__MSB_xer_ = { {"BIT25_MSB>\n", "BIT25_MSB>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT25__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT25__MSB_descr_ = { "@CAN_matrix_general_types.BIT25_MSB", &BITSTRING_ber_, &BIT25__MSB_raw_, NULL, &BIT25__MSB_xer_, &BITSTRING_json_, &BIT25__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT26__MSB_raw_ = {26,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,26,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT26__MSB_xer_ = { {"BIT26_MSB>\n", "BIT26_MSB>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT26__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT26__MSB_descr_ = { "@CAN_matrix_general_types.BIT26_MSB", &BITSTRING_ber_, &BIT26__MSB_raw_, NULL, &BIT26__MSB_xer_, &BITSTRING_json_, &BIT26__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT27__MSB_raw_ = {27,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,27,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT27__MSB_xer_ = { {"BIT27_MSB>\n", "BIT27_MSB>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT27__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT27__MSB_descr_ = { "@CAN_matrix_general_types.BIT27_MSB", &BITSTRING_ber_, &BIT27__MSB_raw_, NULL, &BIT27__MSB_xer_, &BITSTRING_json_, &BIT27__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT28__MSB_raw_ = {28,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,28,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT28__MSB_xer_ = { {"BIT28_MSB>\n", "BIT28_MSB>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT28__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT28__MSB_descr_ = { "@CAN_matrix_general_types.BIT28_MSB", &BITSTRING_ber_, &BIT28__MSB_raw_, NULL, &BIT28__MSB_xer_, &BITSTRING_json_, &BIT28__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT29__MSB_raw_ = {29,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,29,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT29__MSB_xer_ = { {"BIT29_MSB>\n", "BIT29_MSB>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT29__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT29__MSB_descr_ = { "@CAN_matrix_general_types.BIT29_MSB", &BITSTRING_ber_, &BIT29__MSB_raw_, NULL, &BIT29__MSB_xer_, &BITSTRING_json_, &BIT29__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT30__MSB_raw_ = {30,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,30,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT30__MSB_xer_ = { {"BIT30_MSB>\n", "BIT30_MSB>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT30__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT30__MSB_descr_ = { "@CAN_matrix_general_types.BIT30_MSB", &BITSTRING_ber_, &BIT30__MSB_raw_, NULL, &BIT30__MSB_xer_, &BITSTRING_json_, &BIT30__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT31__MSB_raw_ = {31,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,31,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT31__MSB_xer_ = { {"BIT31_MSB>\n", "BIT31_MSB>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT31__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT31__MSB_descr_ = { "@CAN_matrix_general_types.BIT31_MSB", &BITSTRING_ber_, &BIT31__MSB_raw_, NULL, &BIT31__MSB_xer_, &BITSTRING_json_, &BIT31__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT32__MSB_raw_ = {32,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,32,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT32__MSB_xer_ = { {"BIT32_MSB>\n", "BIT32_MSB>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT32__MSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT32__MSB_descr_ = { "@CAN_matrix_general_types.BIT32_MSB", &BITSTRING_ber_, &BIT32__MSB_raw_, NULL, &BIT32__MSB_xer_, &BITSTRING_json_, &BIT32__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT1__LSB_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT1__LSB_xer_ = { {"BIT1_LSB>\n", "BIT1_LSB>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT1__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT1__LSB_descr_ = { "@CAN_matrix_general_types.BIT1_LSB", &BITSTRING_ber_, &BIT1__LSB_raw_, NULL, &BIT1__LSB_xer_, &BITSTRING_json_, &BIT1__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT2__LSB_raw_ = {2,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT2__LSB_xer_ = { {"BIT2_LSB>\n", "BIT2_LSB>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT2__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT2__LSB_descr_ = { "@CAN_matrix_general_types.BIT2_LSB", &BITSTRING_ber_, &BIT2__LSB_raw_, NULL, &BIT2__LSB_xer_, &BITSTRING_json_, &BIT2__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT3__LSB_raw_ = {3,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,3,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT3__LSB_xer_ = { {"BIT3_LSB>\n", "BIT3_LSB>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT3__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT3__LSB_descr_ = { "@CAN_matrix_general_types.BIT3_LSB", &BITSTRING_ber_, &BIT3__LSB_raw_, NULL, &BIT3__LSB_xer_, &BITSTRING_json_, &BIT3__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT4__LSB_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,NULL,false};
+const XERdescriptor_t       BIT4__LSB_xer_ = { {"BIT4_LSB>\n", "BIT4_LSB>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT4__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT4__LSB_descr_ = { "@CAN_matrix_general_types.BIT4_LSB", &BITSTRING_ber_, &BIT4__LSB_raw_, NULL, &BIT4__LSB_xer_, &BITSTRING_json_, &BIT4__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT5__LSB_raw_ = {5,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,5,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT5__LSB_xer_ = { {"BIT5_LSB>\n", "BIT5_LSB>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT5__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT5__LSB_descr_ = { "@CAN_matrix_general_types.BIT5_LSB", &BITSTRING_ber_, &BIT5__LSB_raw_, NULL, &BIT5__LSB_xer_, &BITSTRING_json_, &BIT5__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT6__LSB_raw_ = {6,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,6,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT6__LSB_xer_ = { {"BIT6_LSB>\n", "BIT6_LSB>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT6__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT6__LSB_descr_ = { "@CAN_matrix_general_types.BIT6_LSB", &BITSTRING_ber_, &BIT6__LSB_raw_, NULL, &BIT6__LSB_xer_, &BITSTRING_json_, &BIT6__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT7__LSB_raw_ = {7,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,7,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT7__LSB_xer_ = { {"BIT7_LSB>\n", "BIT7_LSB>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT7__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT7__LSB_descr_ = { "@CAN_matrix_general_types.BIT7_LSB", &BITSTRING_ber_, &BIT7__LSB_raw_, NULL, &BIT7__LSB_xer_, &BITSTRING_json_, &BIT7__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT8__LSB_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,8,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT8__LSB_xer_ = { {"BIT8_LSB>\n", "BIT8_LSB>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT8__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT8__LSB_descr_ = { "@CAN_matrix_general_types.BIT8_LSB", &BITSTRING_ber_, &BIT8__LSB_raw_, NULL, &BIT8__LSB_xer_, &BITSTRING_json_, &BIT8__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT9__LSB_raw_ = {9,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,9,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT9__LSB_xer_ = { {"BIT9_LSB>\n", "BIT9_LSB>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT9__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT9__LSB_descr_ = { "@CAN_matrix_general_types.BIT9_LSB", &BITSTRING_ber_, &BIT9__LSB_raw_, NULL, &BIT9__LSB_xer_, &BITSTRING_json_, &BIT9__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT10__LSB_raw_ = {10,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,10,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT10__LSB_xer_ = { {"BIT10_LSB>\n", "BIT10_LSB>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT10__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT10__LSB_descr_ = { "@CAN_matrix_general_types.BIT10_LSB", &BITSTRING_ber_, &BIT10__LSB_raw_, NULL, &BIT10__LSB_xer_, &BITSTRING_json_, &BIT10__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT11__LSB_raw_ = {11,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,11,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT11__LSB_xer_ = { {"BIT11_LSB>\n", "BIT11_LSB>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT11__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT11__LSB_descr_ = { "@CAN_matrix_general_types.BIT11_LSB", &BITSTRING_ber_, &BIT11__LSB_raw_, NULL, &BIT11__LSB_xer_, &BITSTRING_json_, &BIT11__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT12__LSB_raw_ = {12,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,12,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT12__LSB_xer_ = { {"BIT12_LSB>\n", "BIT12_LSB>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT12__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT12__LSB_descr_ = { "@CAN_matrix_general_types.BIT12_LSB", &BITSTRING_ber_, &BIT12__LSB_raw_, NULL, &BIT12__LSB_xer_, &BITSTRING_json_, &BIT12__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT13__LSB_raw_ = {13,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,13,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT13__LSB_xer_ = { {"BIT13_LSB>\n", "BIT13_LSB>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT13__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT13__LSB_descr_ = { "@CAN_matrix_general_types.BIT13_LSB", &BITSTRING_ber_, &BIT13__LSB_raw_, NULL, &BIT13__LSB_xer_, &BITSTRING_json_, &BIT13__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT14__LSB_raw_ = {14,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,14,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT14__LSB_xer_ = { {"BIT14_LSB>\n", "BIT14_LSB>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT14__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT14__LSB_descr_ = { "@CAN_matrix_general_types.BIT14_LSB", &BITSTRING_ber_, &BIT14__LSB_raw_, NULL, &BIT14__LSB_xer_, &BITSTRING_json_, &BIT14__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT15__LSB_raw_ = {15,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,15,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT15__LSB_xer_ = { {"BIT15_LSB>\n", "BIT15_LSB>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT15__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT15__LSB_descr_ = { "@CAN_matrix_general_types.BIT15_LSB", &BITSTRING_ber_, &BIT15__LSB_raw_, NULL, &BIT15__LSB_xer_, &BITSTRING_json_, &BIT15__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT16__LSB_raw_ = {16,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,16,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT16__LSB_xer_ = { {"BIT16_LSB>\n", "BIT16_LSB>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT16__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT16__LSB_descr_ = { "@CAN_matrix_general_types.BIT16_LSB", &BITSTRING_ber_, &BIT16__LSB_raw_, NULL, &BIT16__LSB_xer_, &BITSTRING_json_, &BIT16__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT17__LSB_raw_ = {17,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,17,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT17__LSB_xer_ = { {"BIT17_LSB>\n", "BIT17_LSB>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT17__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT17__LSB_descr_ = { "@CAN_matrix_general_types.BIT17_LSB", &BITSTRING_ber_, &BIT17__LSB_raw_, NULL, &BIT17__LSB_xer_, &BITSTRING_json_, &BIT17__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT18__LSB_raw_ = {18,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,18,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT18__LSB_xer_ = { {"BIT18_LSB>\n", "BIT18_LSB>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT18__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT18__LSB_descr_ = { "@CAN_matrix_general_types.BIT18_LSB", &BITSTRING_ber_, &BIT18__LSB_raw_, NULL, &BIT18__LSB_xer_, &BITSTRING_json_, &BIT18__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT19__LSB_raw_ = {19,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,19,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT19__LSB_xer_ = { {"BIT19_LSB>\n", "BIT19_LSB>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT19__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT19__LSB_descr_ = { "@CAN_matrix_general_types.BIT19_LSB", &BITSTRING_ber_, &BIT19__LSB_raw_, NULL, &BIT19__LSB_xer_, &BITSTRING_json_, &BIT19__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT20__LSB_raw_ = {20,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,20,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT20__LSB_xer_ = { {"BIT20_LSB>\n", "BIT20_LSB>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT20__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT20__LSB_descr_ = { "@CAN_matrix_general_types.BIT20_LSB", &BITSTRING_ber_, &BIT20__LSB_raw_, NULL, &BIT20__LSB_xer_, &BITSTRING_json_, &BIT20__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT21__LSB_raw_ = {21,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,21,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT21__LSB_xer_ = { {"BIT21_LSB>\n", "BIT21_LSB>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT21__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT21__LSB_descr_ = { "@CAN_matrix_general_types.BIT21_LSB", &BITSTRING_ber_, &BIT21__LSB_raw_, NULL, &BIT21__LSB_xer_, &BITSTRING_json_, &BIT21__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT22__LSB_raw_ = {22,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,22,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT22__LSB_xer_ = { {"BIT22_LSB>\n", "BIT22_LSB>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT22__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT22__LSB_descr_ = { "@CAN_matrix_general_types.BIT22_LSB", &BITSTRING_ber_, &BIT22__LSB_raw_, NULL, &BIT22__LSB_xer_, &BITSTRING_json_, &BIT22__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT24__LSB_raw_ = {24,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,24,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT24__LSB_xer_ = { {"BIT24_LSB>\n", "BIT24_LSB>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT24__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT24__LSB_descr_ = { "@CAN_matrix_general_types.BIT24_LSB", &BITSTRING_ber_, &BIT24__LSB_raw_, NULL, &BIT24__LSB_xer_, &BITSTRING_json_, &BIT24__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT25__LSB_raw_ = {25,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,25,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT25__LSB_xer_ = { {"BIT25_LSB>\n", "BIT25_LSB>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT25__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT25__LSB_descr_ = { "@CAN_matrix_general_types.BIT25_LSB", &BITSTRING_ber_, &BIT25__LSB_raw_, NULL, &BIT25__LSB_xer_, &BITSTRING_json_, &BIT25__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT26__LSB_raw_ = {26,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,26,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT26__LSB_xer_ = { {"BIT26_LSB>\n", "BIT26_LSB>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT26__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT26__LSB_descr_ = { "@CAN_matrix_general_types.BIT26_LSB", &BITSTRING_ber_, &BIT26__LSB_raw_, NULL, &BIT26__LSB_xer_, &BITSTRING_json_, &BIT26__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT27__LSB_raw_ = {27,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,27,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT27__LSB_xer_ = { {"BIT27_LSB>\n", "BIT27_LSB>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT27__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT27__LSB_descr_ = { "@CAN_matrix_general_types.BIT27_LSB", &BITSTRING_ber_, &BIT27__LSB_raw_, NULL, &BIT27__LSB_xer_, &BITSTRING_json_, &BIT27__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT28__LSB_raw_ = {28,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,28,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT28__LSB_xer_ = { {"BIT28_LSB>\n", "BIT28_LSB>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT28__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT28__LSB_descr_ = { "@CAN_matrix_general_types.BIT28_LSB", &BITSTRING_ber_, &BIT28__LSB_raw_, NULL, &BIT28__LSB_xer_, &BITSTRING_json_, &BIT28__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT29__LSB_raw_ = {29,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,29,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT29__LSB_xer_ = { {"BIT29_LSB>\n", "BIT29_LSB>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT29__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT29__LSB_descr_ = { "@CAN_matrix_general_types.BIT29_LSB", &BITSTRING_ber_, &BIT29__LSB_raw_, NULL, &BIT29__LSB_xer_, &BITSTRING_json_, &BIT29__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT30__LSB_raw_ = {30,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,30,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT30__LSB_xer_ = { {"BIT30_LSB>\n", "BIT30_LSB>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT30__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT30__LSB_descr_ = { "@CAN_matrix_general_types.BIT30_LSB", &BITSTRING_ber_, &BIT30__LSB_raw_, NULL, &BIT30__LSB_xer_, &BITSTRING_json_, &BIT30__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT31__LSB_raw_ = {31,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,31,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT31__LSB_xer_ = { {"BIT31_LSB>\n", "BIT31_LSB>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT31__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT31__LSB_descr_ = { "@CAN_matrix_general_types.BIT31_LSB", &BITSTRING_ber_, &BIT31__LSB_raw_, NULL, &BIT31__LSB_xer_, &BITSTRING_json_, &BIT31__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT32__LSB_raw_ = {32,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,32,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT32__LSB_xer_ = { {"BIT32_LSB>\n", "BIT32_LSB>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT32__LSB_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT32__LSB_descr_ = { "@CAN_matrix_general_types.BIT32_LSB", &BITSTRING_ber_, &BIT32__LSB_raw_, NULL, &BIT32__LSB_xer_, &BITSTRING_json_, &BIT32__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT1__MSB_raw_ = {8,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       OCT1__MSB_xer_ = { {"OCT1_MSB>\n", "OCT1_MSB>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT1__MSB_oer_ext_arr_[0] = {};
+const int OCT1__MSB_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT1__MSB_oer_ = { -1, TRUE, 1, FALSE, 0, 0, OCT1__MSB_oer_ext_arr_, 0, OCT1__MSB_oer_p_};
+const TTCN_Typedescriptor_t OCT1__MSB_descr_ = { "@CAN_matrix_general_types.OCT1_MSB", &OCTETSTRING_ber_, &OCT1__MSB_raw_, &OCTETSTRING_text_, &OCT1__MSB_xer_, &OCTETSTRING_json_, &OCT1__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT2__MSB_raw_ = {16,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       OCT2__MSB_xer_ = { {"OCT2_MSB>\n", "OCT2_MSB>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT2__MSB_oer_ext_arr_[0] = {};
+const int OCT2__MSB_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT2__MSB_oer_ = { -1, TRUE, 2, FALSE, 0, 0, OCT2__MSB_oer_ext_arr_, 0, OCT2__MSB_oer_p_};
+const TTCN_Typedescriptor_t OCT2__MSB_descr_ = { "@CAN_matrix_general_types.OCT2_MSB", &OCTETSTRING_ber_, &OCT2__MSB_raw_, &OCTETSTRING_text_, &OCT2__MSB_xer_, &OCTETSTRING_json_, &OCT2__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT3__MSB_raw_ = {24,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,3,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       OCT3__MSB_xer_ = { {"OCT3_MSB>\n", "OCT3_MSB>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT3__MSB_oer_ext_arr_[0] = {};
+const int OCT3__MSB_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT3__MSB_oer_ = { -1, TRUE, 3, FALSE, 0, 0, OCT3__MSB_oer_ext_arr_, 0, OCT3__MSB_oer_p_};
+const TTCN_Typedescriptor_t OCT3__MSB_descr_ = { "@CAN_matrix_general_types.OCT3_MSB", &OCTETSTRING_ber_, &OCT3__MSB_raw_, &OCTETSTRING_text_, &OCT3__MSB_xer_, &OCTETSTRING_json_, &OCT3__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT4__MSB_raw_ = {32,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,4,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       OCT4__MSB_xer_ = { {"OCT4_MSB>\n", "OCT4_MSB>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT4__MSB_oer_ext_arr_[0] = {};
+const int OCT4__MSB_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT4__MSB_oer_ = { -1, TRUE, 4, FALSE, 0, 0, OCT4__MSB_oer_ext_arr_, 0, OCT4__MSB_oer_p_};
+const TTCN_Typedescriptor_t OCT4__MSB_descr_ = { "@CAN_matrix_general_types.OCT4_MSB", &OCTETSTRING_ber_, &OCT4__MSB_raw_, &OCTETSTRING_text_, &OCT4__MSB_xer_, &OCTETSTRING_json_, &OCT4__MSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT1__LSB_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       OCT1__LSB_xer_ = { {"OCT1_LSB>\n", "OCT1_LSB>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT1__LSB_oer_ext_arr_[0] = {};
+const int OCT1__LSB_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT1__LSB_oer_ = { -1, TRUE, 1, FALSE, 0, 0, OCT1__LSB_oer_ext_arr_, 0, OCT1__LSB_oer_p_};
+const TTCN_Typedescriptor_t OCT1__LSB_descr_ = { "@CAN_matrix_general_types.OCT1_LSB", &OCTETSTRING_ber_, &OCT1__LSB_raw_, &OCTETSTRING_text_, &OCT1__LSB_xer_, &OCTETSTRING_json_, &OCT1__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT2__LSB_raw_ = {16,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,2,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       OCT2__LSB_xer_ = { {"OCT2_LSB>\n", "OCT2_LSB>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT2__LSB_oer_ext_arr_[0] = {};
+const int OCT2__LSB_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT2__LSB_oer_ = { -1, TRUE, 2, FALSE, 0, 0, OCT2__LSB_oer_ext_arr_, 0, OCT2__LSB_oer_p_};
+const TTCN_Typedescriptor_t OCT2__LSB_descr_ = { "@CAN_matrix_general_types.OCT2_LSB", &OCTETSTRING_ber_, &OCT2__LSB_raw_, &OCTETSTRING_text_, &OCT2__LSB_xer_, &OCTETSTRING_json_, &OCT2__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT3__LSB_raw_ = {24,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,3,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       OCT3__LSB_xer_ = { {"OCT3_LSB>\n", "OCT3_LSB>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT3__LSB_oer_ext_arr_[0] = {};
+const int OCT3__LSB_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT3__LSB_oer_ = { -1, TRUE, 3, FALSE, 0, 0, OCT3__LSB_oer_ext_arr_, 0, OCT3__LSB_oer_p_};
+const TTCN_Typedescriptor_t OCT3__LSB_descr_ = { "@CAN_matrix_general_types.OCT3_LSB", &OCTETSTRING_ber_, &OCT3__LSB_raw_, &OCTETSTRING_text_, &OCT3__LSB_xer_, &OCTETSTRING_json_, &OCT3__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT4__LSB_raw_ = {32,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,4,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       OCT4__LSB_xer_ = { {"OCT4_LSB>\n", "OCT4_LSB>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT4__LSB_oer_ext_arr_[0] = {};
+const int OCT4__LSB_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT4__LSB_oer_ = { -1, TRUE, 4, FALSE, 0, 0, OCT4__LSB_oer_ext_arr_, 0, OCT4__LSB_oer_p_};
+const TTCN_Typedescriptor_t OCT4__LSB_descr_ = { "@CAN_matrix_general_types.OCT4_LSB", &OCTETSTRING_ber_, &OCT4__LSB_raw_, &OCTETSTRING_text_, &OCT4__LSB_xer_, &OCTETSTRING_json_, &OCT4__LSB_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+TTCN_Module module_object("CAN_matrix_general_types", __DATE__, __TIME__, module_checksum, NULL, NULL, 0U, 4294967295U, 4294967295U, 4294967295U, NULL, 0LU, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+
+static const RuntimeVersionChecker ver_checker(  current_runtime_version.requires_major_version_6,
+  current_runtime_version.requires_minor_version_6,
+  current_runtime_version.requires_patch_level_0,  current_runtime_version.requires_runtime_1);
+
+} /* end of namespace */
diff --git a/demo/CAN_matrix_general_types.d b/demo/CAN_matrix_general_types.d
new file mode 100644
index 0000000..db1ff0f
--- /dev/null
+++ b/demo/CAN_matrix_general_types.d
@@ -0,0 +1,59 @@
+CAN_matrix_general_types.o CAN_matrix_general_types.d : CAN_matrix_general_types.cc \
+ CAN_matrix_general_types.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TTCN3.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/version.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/cversion.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Types.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Vector.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Error.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Basetype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Encdec.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RInt.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON_Tokenizer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Logger.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Template.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Integer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ttcn3float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Boolean.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Null.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Optional.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Param_Types.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/memory.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/BER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Textbuf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Parameters.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XmlReader.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Objid.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Verdicttype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Component.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Bitstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RAW.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/CharCoding.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Hexstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Octetstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Any.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Universal_charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Struct_of.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Array.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_CharacterString.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_External.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TEXT.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_EmbeddedPDV.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Addfunc.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Timer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Port.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Event_Handler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/TitanLoggerApiSimple.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/PreGenRecordOf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Module_list.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Snapshot.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Default.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Runtime.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/OER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Profiler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ProfilerTools.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Debugger.hh
diff --git a/demo/CAN_matrix_general_types.hh b/demo/CAN_matrix_general_types.hh
new file mode 100644
index 0000000..c718cea
--- /dev/null
+++ b/demo/CAN_matrix_general_types.hh
@@ -0,0 +1,870 @@
+// This C++ header file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+#ifndef CAN__matrix__general__types_HH
+#define CAN__matrix__general__types_HH
+
+#ifdef TITAN_RUNTIME_2
+#error Generated code does not match with used runtime.\
+ Code was generated without -R option but -DTITAN_RUNTIME_2 was used.
+#endif
+
+/* Header file includes */
+
+#include <TTCN3.hh>
+
+#if TTCN3_VERSION != 60600
+#error Version mismatch detected.\
+ Please check the version of the TTCN-3 compiler and the base library.\
+ Run make clean and rebuild the project if the version of the compiler changed recently.
+#endif
+
+#ifndef LINUX
+#error This file should be compiled on LINUX
+#endif
+
+namespace CAN__matrix__general__types {
+
+/* Type definitions */
+
+typedef INTEGER INT1;
+typedef INTEGER_template INT1_template;
+typedef INTEGER INT2;
+typedef INTEGER_template INT2_template;
+typedef INTEGER INT3;
+typedef INTEGER_template INT3_template;
+typedef INTEGER INT4;
+typedef INTEGER_template INT4_template;
+typedef INTEGER INT__BIT1__MSB;
+typedef INTEGER_template INT__BIT1__MSB_template;
+typedef INTEGER INT__BIT2__MSB;
+typedef INTEGER_template INT__BIT2__MSB_template;
+typedef INTEGER INT__BIT3__MSB;
+typedef INTEGER_template INT__BIT3__MSB_template;
+typedef INTEGER INT__BIT4__MSB;
+typedef INTEGER_template INT__BIT4__MSB_template;
+typedef INTEGER INT__BIT5__MSB;
+typedef INTEGER_template INT__BIT5__MSB_template;
+typedef INTEGER INT__BIT6__MSB;
+typedef INTEGER_template INT__BIT6__MSB_template;
+typedef INTEGER INT__BIT7__MSB;
+typedef INTEGER_template INT__BIT7__MSB_template;
+typedef INTEGER INT__BIT8__MSB;
+typedef INTEGER_template INT__BIT8__MSB_template;
+typedef INTEGER INT__BIT9__MSB;
+typedef INTEGER_template INT__BIT9__MSB_template;
+typedef INTEGER INT__BIT10__MSB;
+typedef INTEGER_template INT__BIT10__MSB_template;
+typedef INTEGER INT__BIT11__MSB;
+typedef INTEGER_template INT__BIT11__MSB_template;
+typedef INTEGER INT__BIT12__MSB;
+typedef INTEGER_template INT__BIT12__MSB_template;
+typedef INTEGER INT__BIT13__MSB;
+typedef INTEGER_template INT__BIT13__MSB_template;
+typedef INTEGER INT__BIT14__MSB;
+typedef INTEGER_template INT__BIT14__MSB_template;
+typedef INTEGER INT__BIT15__MSB;
+typedef INTEGER_template INT__BIT15__MSB_template;
+typedef INTEGER INT__BIT16__MSB;
+typedef INTEGER_template INT__BIT16__MSB_template;
+typedef INTEGER INT__BIT17__MSB;
+typedef INTEGER_template INT__BIT17__MSB_template;
+typedef INTEGER INT__BIT18__MSB;
+typedef INTEGER_template INT__BIT18__MSB_template;
+typedef INTEGER INT__BIT19__MSB;
+typedef INTEGER_template INT__BIT19__MSB_template;
+typedef INTEGER INT__BIT20__MSB;
+typedef INTEGER_template INT__BIT20__MSB_template;
+typedef INTEGER INT__BIT21__MSB;
+typedef INTEGER_template INT__BIT21__MSB_template;
+typedef INTEGER INT__BIT22__MSB;
+typedef INTEGER_template INT__BIT22__MSB_template;
+typedef INTEGER INT__BIT23__MSB;
+typedef INTEGER_template INT__BIT23__MSB_template;
+typedef INTEGER INT__BIT24__MSB;
+typedef INTEGER_template INT__BIT24__MSB_template;
+typedef INTEGER INT__BIT25__MSB;
+typedef INTEGER_template INT__BIT25__MSB_template;
+typedef INTEGER INT__BIT26__MSB;
+typedef INTEGER_template INT__BIT26__MSB_template;
+typedef INTEGER INT__BIT27__MSB;
+typedef INTEGER_template INT__BIT27__MSB_template;
+typedef INTEGER INT__BIT28__MSB;
+typedef INTEGER_template INT__BIT28__MSB_template;
+typedef INTEGER INT__BIT39__MSB;
+typedef INTEGER_template INT__BIT39__MSB_template;
+typedef INTEGER INT__BIT30__MSB;
+typedef INTEGER_template INT__BIT30__MSB_template;
+typedef INTEGER INT__BIT31__MSB;
+typedef INTEGER_template INT__BIT31__MSB_template;
+typedef INTEGER INT__BIT32__MSB;
+typedef INTEGER_template INT__BIT32__MSB_template;
+typedef INTEGER INT__BIT1__LSB;
+typedef INTEGER_template INT__BIT1__LSB_template;
+typedef INTEGER INT__BIT2__LSB;
+typedef INTEGER_template INT__BIT2__LSB_template;
+typedef INTEGER INT__BIT3__LSB;
+typedef INTEGER_template INT__BIT3__LSB_template;
+typedef INTEGER INT__BIT4__LSB;
+typedef INTEGER_template INT__BIT4__LSB_template;
+typedef INTEGER INT__BIT5__LSB;
+typedef INTEGER_template INT__BIT5__LSB_template;
+typedef INTEGER INT__BIT6__LSB;
+typedef INTEGER_template INT__BIT6__LSB_template;
+typedef INTEGER INT__BIT7__LSB;
+typedef INTEGER_template INT__BIT7__LSB_template;
+typedef INTEGER INT__BIT8__LSB;
+typedef INTEGER_template INT__BIT8__LSB_template;
+typedef INTEGER INT__BIT9__LSB;
+typedef INTEGER_template INT__BIT9__LSB_template;
+typedef INTEGER INT__BIT10__LSB;
+typedef INTEGER_template INT__BIT10__LSB_template;
+typedef INTEGER INT__BIT11__LSB;
+typedef INTEGER_template INT__BIT11__LSB_template;
+typedef INTEGER INT__BIT12__LSB;
+typedef INTEGER_template INT__BIT12__LSB_template;
+typedef INTEGER INT__BIT13__LSB;
+typedef INTEGER_template INT__BIT13__LSB_template;
+typedef INTEGER INT__BIT14__LSB;
+typedef INTEGER_template INT__BIT14__LSB_template;
+typedef INTEGER INT__BIT15__LSB;
+typedef INTEGER_template INT__BIT15__LSB_template;
+typedef INTEGER INT__BIT16__LSB;
+typedef INTEGER_template INT__BIT16__LSB_template;
+typedef INTEGER INT__BIT17__LSB;
+typedef INTEGER_template INT__BIT17__LSB_template;
+typedef INTEGER INT__BIT18__LSB;
+typedef INTEGER_template INT__BIT18__LSB_template;
+typedef INTEGER INT__BIT19__LSB;
+typedef INTEGER_template INT__BIT19__LSB_template;
+typedef INTEGER INT__BIT20__LSB;
+typedef INTEGER_template INT__BIT20__LSB_template;
+typedef INTEGER INT__BIT21__LSB;
+typedef INTEGER_template INT__BIT21__LSB_template;
+typedef INTEGER INT__BIT22__LSB;
+typedef INTEGER_template INT__BIT22__LSB_template;
+typedef INTEGER INT__BIT23__LSB;
+typedef INTEGER_template INT__BIT23__LSB_template;
+typedef INTEGER INT__BIT24__LSB;
+typedef INTEGER_template INT__BIT24__LSB_template;
+typedef INTEGER INT__BIT25__LSB;
+typedef INTEGER_template INT__BIT25__LSB_template;
+typedef INTEGER INT__BIT26__LSB;
+typedef INTEGER_template INT__BIT26__LSB_template;
+typedef INTEGER INT__BIT27__LSB;
+typedef INTEGER_template INT__BIT27__LSB_template;
+typedef INTEGER INT__BIT28__LSB;
+typedef INTEGER_template INT__BIT28__LSB_template;
+typedef INTEGER INT__BIT39__LSB;
+typedef INTEGER_template INT__BIT39__LSB_template;
+typedef INTEGER INT__BIT30__LSB;
+typedef INTEGER_template INT__BIT30__LSB_template;
+typedef INTEGER INT__BIT31__LSB;
+typedef INTEGER_template INT__BIT31__LSB_template;
+typedef INTEGER INT__BIT32__LSB;
+typedef INTEGER_template INT__BIT32__LSB_template;
+typedef BITSTRING BIT1__MSB;
+typedef BITSTRING_template BIT1__MSB_template;
+typedef BITSTRING BIT2__MSB;
+typedef BITSTRING_template BIT2__MSB_template;
+typedef BITSTRING BIT3__MSB;
+typedef BITSTRING_template BIT3__MSB_template;
+typedef BITSTRING BIT4__MSB;
+typedef BITSTRING_template BIT4__MSB_template;
+typedef BITSTRING BIT5__MSB;
+typedef BITSTRING_template BIT5__MSB_template;
+typedef BITSTRING BIT6__MSB;
+typedef BITSTRING_template BIT6__MSB_template;
+typedef BITSTRING BIT7__MSB;
+typedef BITSTRING_template BIT7__MSB_template;
+typedef BITSTRING BIT8__MSB;
+typedef BITSTRING_template BIT8__MSB_template;
+typedef BITSTRING BIT9__MSB;
+typedef BITSTRING_template BIT9__MSB_template;
+typedef BITSTRING BIT10__MSB;
+typedef BITSTRING_template BIT10__MSB_template;
+typedef BITSTRING BIT11__MSB;
+typedef BITSTRING_template BIT11__MSB_template;
+typedef BITSTRING BIT12__MSB;
+typedef BITSTRING_template BIT12__MSB_template;
+typedef BITSTRING BIT13__MSB;
+typedef BITSTRING_template BIT13__MSB_template;
+typedef BITSTRING BIT14__MSB;
+typedef BITSTRING_template BIT14__MSB_template;
+typedef BITSTRING BIT15__MSB;
+typedef BITSTRING_template BIT15__MSB_template;
+typedef BITSTRING BIT16__MSB;
+typedef BITSTRING_template BIT16__MSB_template;
+typedef BITSTRING BIT17__MSB;
+typedef BITSTRING_template BIT17__MSB_template;
+typedef BITSTRING BIT18__MSB;
+typedef BITSTRING_template BIT18__MSB_template;
+typedef BITSTRING BIT19__MSB;
+typedef BITSTRING_template BIT19__MSB_template;
+typedef BITSTRING BIT20__MSB;
+typedef BITSTRING_template BIT20__MSB_template;
+typedef BITSTRING BIT21__MSB;
+typedef BITSTRING_template BIT21__MSB_template;
+typedef BITSTRING BIT22__MSB;
+typedef BITSTRING_template BIT22__MSB_template;
+typedef BITSTRING BIT24__MSB;
+typedef BITSTRING_template BIT24__MSB_template;
+typedef BITSTRING BIT25__MSB;
+typedef BITSTRING_template BIT25__MSB_template;
+typedef BITSTRING BIT26__MSB;
+typedef BITSTRING_template BIT26__MSB_template;
+typedef BITSTRING BIT27__MSB;
+typedef BITSTRING_template BIT27__MSB_template;
+typedef BITSTRING BIT28__MSB;
+typedef BITSTRING_template BIT28__MSB_template;
+typedef BITSTRING BIT29__MSB;
+typedef BITSTRING_template BIT29__MSB_template;
+typedef BITSTRING BIT30__MSB;
+typedef BITSTRING_template BIT30__MSB_template;
+typedef BITSTRING BIT31__MSB;
+typedef BITSTRING_template BIT31__MSB_template;
+typedef BITSTRING BIT32__MSB;
+typedef BITSTRING_template BIT32__MSB_template;
+typedef BITSTRING BIT1__LSB;
+typedef BITSTRING_template BIT1__LSB_template;
+typedef BITSTRING BIT2__LSB;
+typedef BITSTRING_template BIT2__LSB_template;
+typedef BITSTRING BIT3__LSB;
+typedef BITSTRING_template BIT3__LSB_template;
+typedef BITSTRING BIT4__LSB;
+typedef BITSTRING_template BIT4__LSB_template;
+typedef BITSTRING BIT5__LSB;
+typedef BITSTRING_template BIT5__LSB_template;
+typedef BITSTRING BIT6__LSB;
+typedef BITSTRING_template BIT6__LSB_template;
+typedef BITSTRING BIT7__LSB;
+typedef BITSTRING_template BIT7__LSB_template;
+typedef BITSTRING BIT8__LSB;
+typedef BITSTRING_template BIT8__LSB_template;
+typedef BITSTRING BIT9__LSB;
+typedef BITSTRING_template BIT9__LSB_template;
+typedef BITSTRING BIT10__LSB;
+typedef BITSTRING_template BIT10__LSB_template;
+typedef BITSTRING BIT11__LSB;
+typedef BITSTRING_template BIT11__LSB_template;
+typedef BITSTRING BIT12__LSB;
+typedef BITSTRING_template BIT12__LSB_template;
+typedef BITSTRING BIT13__LSB;
+typedef BITSTRING_template BIT13__LSB_template;
+typedef BITSTRING BIT14__LSB;
+typedef BITSTRING_template BIT14__LSB_template;
+typedef BITSTRING BIT15__LSB;
+typedef BITSTRING_template BIT15__LSB_template;
+typedef BITSTRING BIT16__LSB;
+typedef BITSTRING_template BIT16__LSB_template;
+typedef BITSTRING BIT17__LSB;
+typedef BITSTRING_template BIT17__LSB_template;
+typedef BITSTRING BIT18__LSB;
+typedef BITSTRING_template BIT18__LSB_template;
+typedef BITSTRING BIT19__LSB;
+typedef BITSTRING_template BIT19__LSB_template;
+typedef BITSTRING BIT20__LSB;
+typedef BITSTRING_template BIT20__LSB_template;
+typedef BITSTRING BIT21__LSB;
+typedef BITSTRING_template BIT21__LSB_template;
+typedef BITSTRING BIT22__LSB;
+typedef BITSTRING_template BIT22__LSB_template;
+typedef BITSTRING BIT24__LSB;
+typedef BITSTRING_template BIT24__LSB_template;
+typedef BITSTRING BIT25__LSB;
+typedef BITSTRING_template BIT25__LSB_template;
+typedef BITSTRING BIT26__LSB;
+typedef BITSTRING_template BIT26__LSB_template;
+typedef BITSTRING BIT27__LSB;
+typedef BITSTRING_template BIT27__LSB_template;
+typedef BITSTRING BIT28__LSB;
+typedef BITSTRING_template BIT28__LSB_template;
+typedef BITSTRING BIT29__LSB;
+typedef BITSTRING_template BIT29__LSB_template;
+typedef BITSTRING BIT30__LSB;
+typedef BITSTRING_template BIT30__LSB_template;
+typedef BITSTRING BIT31__LSB;
+typedef BITSTRING_template BIT31__LSB_template;
+typedef BITSTRING BIT32__LSB;
+typedef BITSTRING_template BIT32__LSB_template;
+typedef OCTETSTRING OCT1__MSB;
+typedef OCTETSTRING_template OCT1__MSB_template;
+typedef OCTETSTRING OCT2__MSB;
+typedef OCTETSTRING_template OCT2__MSB_template;
+typedef OCTETSTRING OCT3__MSB;
+typedef OCTETSTRING_template OCT3__MSB_template;
+typedef OCTETSTRING OCT4__MSB;
+typedef OCTETSTRING_template OCT4__MSB_template;
+typedef OCTETSTRING OCT1__LSB;
+typedef OCTETSTRING_template OCT1__LSB_template;
+typedef OCTETSTRING OCT2__LSB;
+typedef OCTETSTRING_template OCT2__LSB_template;
+typedef OCTETSTRING OCT3__LSB;
+typedef OCTETSTRING_template OCT3__LSB_template;
+typedef OCTETSTRING OCT4__LSB;
+typedef OCTETSTRING_template OCT4__LSB_template;
+
+/* Global variable declarations */
+
+extern const TTCN_RAWdescriptor_t INT1_raw_;
+extern const XERdescriptor_t INT1_xer_;
+extern const TTCN_OERdescriptor_t INT1_oer_;
+extern const TTCN_Typedescriptor_t INT1_descr_;
+extern const TTCN_RAWdescriptor_t INT2_raw_;
+extern const XERdescriptor_t INT2_xer_;
+extern const TTCN_OERdescriptor_t INT2_oer_;
+extern const TTCN_Typedescriptor_t INT2_descr_;
+extern const TTCN_RAWdescriptor_t INT3_raw_;
+extern const XERdescriptor_t INT3_xer_;
+extern const TTCN_OERdescriptor_t INT3_oer_;
+extern const TTCN_Typedescriptor_t INT3_descr_;
+extern const TTCN_RAWdescriptor_t INT4_raw_;
+extern const XERdescriptor_t INT4_xer_;
+extern const TTCN_OERdescriptor_t INT4_oer_;
+extern const TTCN_Typedescriptor_t INT4_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT1__MSB_raw_;
+extern const XERdescriptor_t INT__BIT1__MSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT1__MSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT1__MSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT2__MSB_raw_;
+extern const XERdescriptor_t INT__BIT2__MSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT2__MSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT2__MSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT3__MSB_raw_;
+extern const XERdescriptor_t INT__BIT3__MSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT3__MSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT3__MSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT4__MSB_raw_;
+extern const XERdescriptor_t INT__BIT4__MSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT4__MSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT4__MSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT5__MSB_raw_;
+extern const XERdescriptor_t INT__BIT5__MSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT5__MSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT5__MSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT6__MSB_raw_;
+extern const XERdescriptor_t INT__BIT6__MSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT6__MSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT6__MSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT7__MSB_raw_;
+extern const XERdescriptor_t INT__BIT7__MSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT7__MSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT7__MSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT8__MSB_raw_;
+extern const XERdescriptor_t INT__BIT8__MSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT8__MSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT8__MSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT9__MSB_raw_;
+extern const XERdescriptor_t INT__BIT9__MSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT9__MSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT9__MSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT10__MSB_raw_;
+extern const XERdescriptor_t INT__BIT10__MSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT10__MSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT10__MSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT11__MSB_raw_;
+extern const XERdescriptor_t INT__BIT11__MSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT11__MSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT11__MSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT12__MSB_raw_;
+extern const XERdescriptor_t INT__BIT12__MSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT12__MSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT12__MSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT13__MSB_raw_;
+extern const XERdescriptor_t INT__BIT13__MSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT13__MSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT13__MSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT14__MSB_raw_;
+extern const XERdescriptor_t INT__BIT14__MSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT14__MSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT14__MSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT15__MSB_raw_;
+extern const XERdescriptor_t INT__BIT15__MSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT15__MSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT15__MSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT16__MSB_raw_;
+extern const XERdescriptor_t INT__BIT16__MSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT16__MSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT16__MSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT17__MSB_raw_;
+extern const XERdescriptor_t INT__BIT17__MSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT17__MSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT17__MSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT18__MSB_raw_;
+extern const XERdescriptor_t INT__BIT18__MSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT18__MSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT18__MSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT19__MSB_raw_;
+extern const XERdescriptor_t INT__BIT19__MSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT19__MSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT19__MSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT20__MSB_raw_;
+extern const XERdescriptor_t INT__BIT20__MSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT20__MSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT20__MSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT21__MSB_raw_;
+extern const XERdescriptor_t INT__BIT21__MSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT21__MSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT21__MSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT22__MSB_raw_;
+extern const XERdescriptor_t INT__BIT22__MSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT22__MSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT22__MSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT23__MSB_raw_;
+extern const XERdescriptor_t INT__BIT23__MSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT23__MSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT23__MSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT24__MSB_raw_;
+extern const XERdescriptor_t INT__BIT24__MSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT24__MSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT24__MSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT25__MSB_raw_;
+extern const XERdescriptor_t INT__BIT25__MSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT25__MSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT25__MSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT26__MSB_raw_;
+extern const XERdescriptor_t INT__BIT26__MSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT26__MSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT26__MSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT27__MSB_raw_;
+extern const XERdescriptor_t INT__BIT27__MSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT27__MSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT27__MSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT28__MSB_raw_;
+extern const XERdescriptor_t INT__BIT28__MSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT28__MSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT28__MSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT39__MSB_raw_;
+extern const XERdescriptor_t INT__BIT39__MSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT39__MSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT39__MSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT30__MSB_raw_;
+extern const XERdescriptor_t INT__BIT30__MSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT30__MSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT30__MSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT31__MSB_raw_;
+extern const XERdescriptor_t INT__BIT31__MSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT31__MSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT31__MSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT32__MSB_raw_;
+extern const XERdescriptor_t INT__BIT32__MSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT32__MSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT32__MSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT1__LSB_raw_;
+extern const XERdescriptor_t INT__BIT1__LSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT1__LSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT1__LSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT2__LSB_raw_;
+extern const XERdescriptor_t INT__BIT2__LSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT2__LSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT2__LSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT3__LSB_raw_;
+extern const XERdescriptor_t INT__BIT3__LSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT3__LSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT3__LSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT4__LSB_raw_;
+extern const XERdescriptor_t INT__BIT4__LSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT4__LSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT4__LSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT5__LSB_raw_;
+extern const XERdescriptor_t INT__BIT5__LSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT5__LSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT5__LSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT6__LSB_raw_;
+extern const XERdescriptor_t INT__BIT6__LSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT6__LSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT6__LSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT7__LSB_raw_;
+extern const XERdescriptor_t INT__BIT7__LSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT7__LSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT7__LSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT8__LSB_raw_;
+extern const XERdescriptor_t INT__BIT8__LSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT8__LSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT8__LSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT9__LSB_raw_;
+extern const XERdescriptor_t INT__BIT9__LSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT9__LSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT9__LSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT10__LSB_raw_;
+extern const XERdescriptor_t INT__BIT10__LSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT10__LSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT10__LSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT11__LSB_raw_;
+extern const XERdescriptor_t INT__BIT11__LSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT11__LSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT11__LSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT12__LSB_raw_;
+extern const XERdescriptor_t INT__BIT12__LSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT12__LSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT12__LSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT13__LSB_raw_;
+extern const XERdescriptor_t INT__BIT13__LSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT13__LSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT13__LSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT14__LSB_raw_;
+extern const XERdescriptor_t INT__BIT14__LSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT14__LSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT14__LSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT15__LSB_raw_;
+extern const XERdescriptor_t INT__BIT15__LSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT15__LSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT15__LSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT16__LSB_raw_;
+extern const XERdescriptor_t INT__BIT16__LSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT16__LSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT16__LSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT17__LSB_raw_;
+extern const XERdescriptor_t INT__BIT17__LSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT17__LSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT17__LSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT18__LSB_raw_;
+extern const XERdescriptor_t INT__BIT18__LSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT18__LSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT18__LSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT19__LSB_raw_;
+extern const XERdescriptor_t INT__BIT19__LSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT19__LSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT19__LSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT20__LSB_raw_;
+extern const XERdescriptor_t INT__BIT20__LSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT20__LSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT20__LSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT21__LSB_raw_;
+extern const XERdescriptor_t INT__BIT21__LSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT21__LSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT21__LSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT22__LSB_raw_;
+extern const XERdescriptor_t INT__BIT22__LSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT22__LSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT22__LSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT23__LSB_raw_;
+extern const XERdescriptor_t INT__BIT23__LSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT23__LSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT23__LSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT24__LSB_raw_;
+extern const XERdescriptor_t INT__BIT24__LSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT24__LSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT24__LSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT25__LSB_raw_;
+extern const XERdescriptor_t INT__BIT25__LSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT25__LSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT25__LSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT26__LSB_raw_;
+extern const XERdescriptor_t INT__BIT26__LSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT26__LSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT26__LSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT27__LSB_raw_;
+extern const XERdescriptor_t INT__BIT27__LSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT27__LSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT27__LSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT28__LSB_raw_;
+extern const XERdescriptor_t INT__BIT28__LSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT28__LSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT28__LSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT39__LSB_raw_;
+extern const XERdescriptor_t INT__BIT39__LSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT39__LSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT39__LSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT30__LSB_raw_;
+extern const XERdescriptor_t INT__BIT30__LSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT30__LSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT30__LSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT31__LSB_raw_;
+extern const XERdescriptor_t INT__BIT31__LSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT31__LSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT31__LSB_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT32__LSB_raw_;
+extern const XERdescriptor_t INT__BIT32__LSB_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT32__LSB_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT32__LSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT1__MSB_raw_;
+extern const XERdescriptor_t BIT1__MSB_xer_;
+extern const TTCN_OERdescriptor_t BIT1__MSB_oer_;
+extern const TTCN_Typedescriptor_t BIT1__MSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT2__MSB_raw_;
+extern const XERdescriptor_t BIT2__MSB_xer_;
+extern const TTCN_OERdescriptor_t BIT2__MSB_oer_;
+extern const TTCN_Typedescriptor_t BIT2__MSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT3__MSB_raw_;
+extern const XERdescriptor_t BIT3__MSB_xer_;
+extern const TTCN_OERdescriptor_t BIT3__MSB_oer_;
+extern const TTCN_Typedescriptor_t BIT3__MSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT4__MSB_raw_;
+extern const XERdescriptor_t BIT4__MSB_xer_;
+extern const TTCN_OERdescriptor_t BIT4__MSB_oer_;
+extern const TTCN_Typedescriptor_t BIT4__MSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT5__MSB_raw_;
+extern const XERdescriptor_t BIT5__MSB_xer_;
+extern const TTCN_OERdescriptor_t BIT5__MSB_oer_;
+extern const TTCN_Typedescriptor_t BIT5__MSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT6__MSB_raw_;
+extern const XERdescriptor_t BIT6__MSB_xer_;
+extern const TTCN_OERdescriptor_t BIT6__MSB_oer_;
+extern const TTCN_Typedescriptor_t BIT6__MSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT7__MSB_raw_;
+extern const XERdescriptor_t BIT7__MSB_xer_;
+extern const TTCN_OERdescriptor_t BIT7__MSB_oer_;
+extern const TTCN_Typedescriptor_t BIT7__MSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT8__MSB_raw_;
+extern const XERdescriptor_t BIT8__MSB_xer_;
+extern const TTCN_OERdescriptor_t BIT8__MSB_oer_;
+extern const TTCN_Typedescriptor_t BIT8__MSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT9__MSB_raw_;
+extern const XERdescriptor_t BIT9__MSB_xer_;
+extern const TTCN_OERdescriptor_t BIT9__MSB_oer_;
+extern const TTCN_Typedescriptor_t BIT9__MSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT10__MSB_raw_;
+extern const XERdescriptor_t BIT10__MSB_xer_;
+extern const TTCN_OERdescriptor_t BIT10__MSB_oer_;
+extern const TTCN_Typedescriptor_t BIT10__MSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT11__MSB_raw_;
+extern const XERdescriptor_t BIT11__MSB_xer_;
+extern const TTCN_OERdescriptor_t BIT11__MSB_oer_;
+extern const TTCN_Typedescriptor_t BIT11__MSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT12__MSB_raw_;
+extern const XERdescriptor_t BIT12__MSB_xer_;
+extern const TTCN_OERdescriptor_t BIT12__MSB_oer_;
+extern const TTCN_Typedescriptor_t BIT12__MSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT13__MSB_raw_;
+extern const XERdescriptor_t BIT13__MSB_xer_;
+extern const TTCN_OERdescriptor_t BIT13__MSB_oer_;
+extern const TTCN_Typedescriptor_t BIT13__MSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT14__MSB_raw_;
+extern const XERdescriptor_t BIT14__MSB_xer_;
+extern const TTCN_OERdescriptor_t BIT14__MSB_oer_;
+extern const TTCN_Typedescriptor_t BIT14__MSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT15__MSB_raw_;
+extern const XERdescriptor_t BIT15__MSB_xer_;
+extern const TTCN_OERdescriptor_t BIT15__MSB_oer_;
+extern const TTCN_Typedescriptor_t BIT15__MSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT16__MSB_raw_;
+extern const XERdescriptor_t BIT16__MSB_xer_;
+extern const TTCN_OERdescriptor_t BIT16__MSB_oer_;
+extern const TTCN_Typedescriptor_t BIT16__MSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT17__MSB_raw_;
+extern const XERdescriptor_t BIT17__MSB_xer_;
+extern const TTCN_OERdescriptor_t BIT17__MSB_oer_;
+extern const TTCN_Typedescriptor_t BIT17__MSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT18__MSB_raw_;
+extern const XERdescriptor_t BIT18__MSB_xer_;
+extern const TTCN_OERdescriptor_t BIT18__MSB_oer_;
+extern const TTCN_Typedescriptor_t BIT18__MSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT19__MSB_raw_;
+extern const XERdescriptor_t BIT19__MSB_xer_;
+extern const TTCN_OERdescriptor_t BIT19__MSB_oer_;
+extern const TTCN_Typedescriptor_t BIT19__MSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT20__MSB_raw_;
+extern const XERdescriptor_t BIT20__MSB_xer_;
+extern const TTCN_OERdescriptor_t BIT20__MSB_oer_;
+extern const TTCN_Typedescriptor_t BIT20__MSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT21__MSB_raw_;
+extern const XERdescriptor_t BIT21__MSB_xer_;
+extern const TTCN_OERdescriptor_t BIT21__MSB_oer_;
+extern const TTCN_Typedescriptor_t BIT21__MSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT22__MSB_raw_;
+extern const XERdescriptor_t BIT22__MSB_xer_;
+extern const TTCN_OERdescriptor_t BIT22__MSB_oer_;
+extern const TTCN_Typedescriptor_t BIT22__MSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT24__MSB_raw_;
+extern const XERdescriptor_t BIT24__MSB_xer_;
+extern const TTCN_OERdescriptor_t BIT24__MSB_oer_;
+extern const TTCN_Typedescriptor_t BIT24__MSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT25__MSB_raw_;
+extern const XERdescriptor_t BIT25__MSB_xer_;
+extern const TTCN_OERdescriptor_t BIT25__MSB_oer_;
+extern const TTCN_Typedescriptor_t BIT25__MSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT26__MSB_raw_;
+extern const XERdescriptor_t BIT26__MSB_xer_;
+extern const TTCN_OERdescriptor_t BIT26__MSB_oer_;
+extern const TTCN_Typedescriptor_t BIT26__MSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT27__MSB_raw_;
+extern const XERdescriptor_t BIT27__MSB_xer_;
+extern const TTCN_OERdescriptor_t BIT27__MSB_oer_;
+extern const TTCN_Typedescriptor_t BIT27__MSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT28__MSB_raw_;
+extern const XERdescriptor_t BIT28__MSB_xer_;
+extern const TTCN_OERdescriptor_t BIT28__MSB_oer_;
+extern const TTCN_Typedescriptor_t BIT28__MSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT29__MSB_raw_;
+extern const XERdescriptor_t BIT29__MSB_xer_;
+extern const TTCN_OERdescriptor_t BIT29__MSB_oer_;
+extern const TTCN_Typedescriptor_t BIT29__MSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT30__MSB_raw_;
+extern const XERdescriptor_t BIT30__MSB_xer_;
+extern const TTCN_OERdescriptor_t BIT30__MSB_oer_;
+extern const TTCN_Typedescriptor_t BIT30__MSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT31__MSB_raw_;
+extern const XERdescriptor_t BIT31__MSB_xer_;
+extern const TTCN_OERdescriptor_t BIT31__MSB_oer_;
+extern const TTCN_Typedescriptor_t BIT31__MSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT32__MSB_raw_;
+extern const XERdescriptor_t BIT32__MSB_xer_;
+extern const TTCN_OERdescriptor_t BIT32__MSB_oer_;
+extern const TTCN_Typedescriptor_t BIT32__MSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT1__LSB_raw_;
+extern const XERdescriptor_t BIT1__LSB_xer_;
+extern const TTCN_OERdescriptor_t BIT1__LSB_oer_;
+extern const TTCN_Typedescriptor_t BIT1__LSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT2__LSB_raw_;
+extern const XERdescriptor_t BIT2__LSB_xer_;
+extern const TTCN_OERdescriptor_t BIT2__LSB_oer_;
+extern const TTCN_Typedescriptor_t BIT2__LSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT3__LSB_raw_;
+extern const XERdescriptor_t BIT3__LSB_xer_;
+extern const TTCN_OERdescriptor_t BIT3__LSB_oer_;
+extern const TTCN_Typedescriptor_t BIT3__LSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT4__LSB_raw_;
+extern const XERdescriptor_t BIT4__LSB_xer_;
+extern const TTCN_OERdescriptor_t BIT4__LSB_oer_;
+extern const TTCN_Typedescriptor_t BIT4__LSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT5__LSB_raw_;
+extern const XERdescriptor_t BIT5__LSB_xer_;
+extern const TTCN_OERdescriptor_t BIT5__LSB_oer_;
+extern const TTCN_Typedescriptor_t BIT5__LSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT6__LSB_raw_;
+extern const XERdescriptor_t BIT6__LSB_xer_;
+extern const TTCN_OERdescriptor_t BIT6__LSB_oer_;
+extern const TTCN_Typedescriptor_t BIT6__LSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT7__LSB_raw_;
+extern const XERdescriptor_t BIT7__LSB_xer_;
+extern const TTCN_OERdescriptor_t BIT7__LSB_oer_;
+extern const TTCN_Typedescriptor_t BIT7__LSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT8__LSB_raw_;
+extern const XERdescriptor_t BIT8__LSB_xer_;
+extern const TTCN_OERdescriptor_t BIT8__LSB_oer_;
+extern const TTCN_Typedescriptor_t BIT8__LSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT9__LSB_raw_;
+extern const XERdescriptor_t BIT9__LSB_xer_;
+extern const TTCN_OERdescriptor_t BIT9__LSB_oer_;
+extern const TTCN_Typedescriptor_t BIT9__LSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT10__LSB_raw_;
+extern const XERdescriptor_t BIT10__LSB_xer_;
+extern const TTCN_OERdescriptor_t BIT10__LSB_oer_;
+extern const TTCN_Typedescriptor_t BIT10__LSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT11__LSB_raw_;
+extern const XERdescriptor_t BIT11__LSB_xer_;
+extern const TTCN_OERdescriptor_t BIT11__LSB_oer_;
+extern const TTCN_Typedescriptor_t BIT11__LSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT12__LSB_raw_;
+extern const XERdescriptor_t BIT12__LSB_xer_;
+extern const TTCN_OERdescriptor_t BIT12__LSB_oer_;
+extern const TTCN_Typedescriptor_t BIT12__LSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT13__LSB_raw_;
+extern const XERdescriptor_t BIT13__LSB_xer_;
+extern const TTCN_OERdescriptor_t BIT13__LSB_oer_;
+extern const TTCN_Typedescriptor_t BIT13__LSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT14__LSB_raw_;
+extern const XERdescriptor_t BIT14__LSB_xer_;
+extern const TTCN_OERdescriptor_t BIT14__LSB_oer_;
+extern const TTCN_Typedescriptor_t BIT14__LSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT15__LSB_raw_;
+extern const XERdescriptor_t BIT15__LSB_xer_;
+extern const TTCN_OERdescriptor_t BIT15__LSB_oer_;
+extern const TTCN_Typedescriptor_t BIT15__LSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT16__LSB_raw_;
+extern const XERdescriptor_t BIT16__LSB_xer_;
+extern const TTCN_OERdescriptor_t BIT16__LSB_oer_;
+extern const TTCN_Typedescriptor_t BIT16__LSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT17__LSB_raw_;
+extern const XERdescriptor_t BIT17__LSB_xer_;
+extern const TTCN_OERdescriptor_t BIT17__LSB_oer_;
+extern const TTCN_Typedescriptor_t BIT17__LSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT18__LSB_raw_;
+extern const XERdescriptor_t BIT18__LSB_xer_;
+extern const TTCN_OERdescriptor_t BIT18__LSB_oer_;
+extern const TTCN_Typedescriptor_t BIT18__LSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT19__LSB_raw_;
+extern const XERdescriptor_t BIT19__LSB_xer_;
+extern const TTCN_OERdescriptor_t BIT19__LSB_oer_;
+extern const TTCN_Typedescriptor_t BIT19__LSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT20__LSB_raw_;
+extern const XERdescriptor_t BIT20__LSB_xer_;
+extern const TTCN_OERdescriptor_t BIT20__LSB_oer_;
+extern const TTCN_Typedescriptor_t BIT20__LSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT21__LSB_raw_;
+extern const XERdescriptor_t BIT21__LSB_xer_;
+extern const TTCN_OERdescriptor_t BIT21__LSB_oer_;
+extern const TTCN_Typedescriptor_t BIT21__LSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT22__LSB_raw_;
+extern const XERdescriptor_t BIT22__LSB_xer_;
+extern const TTCN_OERdescriptor_t BIT22__LSB_oer_;
+extern const TTCN_Typedescriptor_t BIT22__LSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT24__LSB_raw_;
+extern const XERdescriptor_t BIT24__LSB_xer_;
+extern const TTCN_OERdescriptor_t BIT24__LSB_oer_;
+extern const TTCN_Typedescriptor_t BIT24__LSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT25__LSB_raw_;
+extern const XERdescriptor_t BIT25__LSB_xer_;
+extern const TTCN_OERdescriptor_t BIT25__LSB_oer_;
+extern const TTCN_Typedescriptor_t BIT25__LSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT26__LSB_raw_;
+extern const XERdescriptor_t BIT26__LSB_xer_;
+extern const TTCN_OERdescriptor_t BIT26__LSB_oer_;
+extern const TTCN_Typedescriptor_t BIT26__LSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT27__LSB_raw_;
+extern const XERdescriptor_t BIT27__LSB_xer_;
+extern const TTCN_OERdescriptor_t BIT27__LSB_oer_;
+extern const TTCN_Typedescriptor_t BIT27__LSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT28__LSB_raw_;
+extern const XERdescriptor_t BIT28__LSB_xer_;
+extern const TTCN_OERdescriptor_t BIT28__LSB_oer_;
+extern const TTCN_Typedescriptor_t BIT28__LSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT29__LSB_raw_;
+extern const XERdescriptor_t BIT29__LSB_xer_;
+extern const TTCN_OERdescriptor_t BIT29__LSB_oer_;
+extern const TTCN_Typedescriptor_t BIT29__LSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT30__LSB_raw_;
+extern const XERdescriptor_t BIT30__LSB_xer_;
+extern const TTCN_OERdescriptor_t BIT30__LSB_oer_;
+extern const TTCN_Typedescriptor_t BIT30__LSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT31__LSB_raw_;
+extern const XERdescriptor_t BIT31__LSB_xer_;
+extern const TTCN_OERdescriptor_t BIT31__LSB_oer_;
+extern const TTCN_Typedescriptor_t BIT31__LSB_descr_;
+extern const TTCN_RAWdescriptor_t BIT32__LSB_raw_;
+extern const XERdescriptor_t BIT32__LSB_xer_;
+extern const TTCN_OERdescriptor_t BIT32__LSB_oer_;
+extern const TTCN_Typedescriptor_t BIT32__LSB_descr_;
+extern const TTCN_RAWdescriptor_t OCT1__MSB_raw_;
+extern const XERdescriptor_t OCT1__MSB_xer_;
+extern const TTCN_OERdescriptor_t OCT1__MSB_oer_;
+extern const TTCN_Typedescriptor_t OCT1__MSB_descr_;
+extern const TTCN_RAWdescriptor_t OCT2__MSB_raw_;
+extern const XERdescriptor_t OCT2__MSB_xer_;
+extern const TTCN_OERdescriptor_t OCT2__MSB_oer_;
+extern const TTCN_Typedescriptor_t OCT2__MSB_descr_;
+extern const TTCN_RAWdescriptor_t OCT3__MSB_raw_;
+extern const XERdescriptor_t OCT3__MSB_xer_;
+extern const TTCN_OERdescriptor_t OCT3__MSB_oer_;
+extern const TTCN_Typedescriptor_t OCT3__MSB_descr_;
+extern const TTCN_RAWdescriptor_t OCT4__MSB_raw_;
+extern const XERdescriptor_t OCT4__MSB_xer_;
+extern const TTCN_OERdescriptor_t OCT4__MSB_oer_;
+extern const TTCN_Typedescriptor_t OCT4__MSB_descr_;
+extern const TTCN_RAWdescriptor_t OCT1__LSB_raw_;
+extern const XERdescriptor_t OCT1__LSB_xer_;
+extern const TTCN_OERdescriptor_t OCT1__LSB_oer_;
+extern const TTCN_Typedescriptor_t OCT1__LSB_descr_;
+extern const TTCN_RAWdescriptor_t OCT2__LSB_raw_;
+extern const XERdescriptor_t OCT2__LSB_xer_;
+extern const TTCN_OERdescriptor_t OCT2__LSB_oer_;
+extern const TTCN_Typedescriptor_t OCT2__LSB_descr_;
+extern const TTCN_RAWdescriptor_t OCT3__LSB_raw_;
+extern const XERdescriptor_t OCT3__LSB_xer_;
+extern const TTCN_OERdescriptor_t OCT3__LSB_oer_;
+extern const TTCN_Typedescriptor_t OCT3__LSB_descr_;
+extern const TTCN_RAWdescriptor_t OCT4__LSB_raw_;
+extern const XERdescriptor_t OCT4__LSB_xer_;
+extern const TTCN_OERdescriptor_t OCT4__LSB_oer_;
+extern const TTCN_Typedescriptor_t OCT4__LSB_descr_;
+extern TTCN_Module module_object;
+
+} /* end of namespace */
+
+#endif
diff --git a/demo/CAN_matrix_general_types.o b/demo/CAN_matrix_general_types.o
new file mode 100644
index 0000000..2ec5d3a
--- /dev/null
+++ b/demo/CAN_matrix_general_types.o
Binary files differ
diff --git a/demo/CAN_matrix_messages.cc b/demo/CAN_matrix_messages.cc
new file mode 100644
index 0000000..59d12c6
--- /dev/null
+++ b/demo/CAN_matrix_messages.cc
@@ -0,0 +1,8533 @@
+// This C++ source file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+/* Including header files */
+
+#include "CAN_matrix_messages.hh"
+
+namespace CAN__matrix__messages {
+
+/* Prototypes of static functions */
+
+static void pre_init_module();
+static void post_init_module();
+
+/* Literal string constants */
+
+static const unsigned char os_0_octets[] = { 0, 0, 1, 34 },
+os_1_octets[] = { 0, 0, 1, 35 },
+os_2_octets[] = { 0, 0, 1, 36 },
+os_3_octets[] = { 0, 0, 1, 37 },
+os_4_octets[] = { 0, 0, 1, 38 },
+os_5_octets[] = { 0, 0, 1, 39 },
+os_6_octets[] = { 128, 0, 0, 1 };
+static const OCTETSTRING os_0(4, os_0_octets),
+os_1(4, os_1_octets),
+os_2(4, os_2_octets),
+os_3(4, os_3_octets),
+os_4(4, os_4_octets),
+os_5(4, os_5_octets),
+os_6(4, os_6_octets);
+static const unsigned char module_checksum[] = { 0x8d, 0x75, 0x4a, 0x7d, 0x73, 0xfb, 0x93, 0xd7, 0x5b, 0xbe, 0x7e, 0xb1, 0x6e, 0xe5, 0xfa, 0x1a };
+
+/* Global variable definitions */
+
+const TTCN_RAWdescriptor_t CAN__MESSAGE__TESTFRAME0__msg__type_test__sig__11__bit__bitstring__little__endian__coded_raw_ = {11,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,11,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       CAN__MESSAGE__TESTFRAME0__msg__type_test__sig__11__bit__bitstring__little__endian__coded_xer_ = { {"test_sig_11_bit_bitstring_little_endian_coded>\n", "test_sig_11_bit_bitstring_little_endian_coded>\n"}, {47, 47}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t CAN__MESSAGE__TESTFRAME0__msg__type_test__sig__11__bit__bitstring__little__endian__coded_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t CAN__MESSAGE__TESTFRAME0__msg__type_test__sig__11__bit__bitstring__little__endian__coded_descr_ = { "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME0_msg_type.test_sig_11_bit_bitstring_little_endian_coded", &BITSTRING_ber_, &CAN__MESSAGE__TESTFRAME0__msg__type_test__sig__11__bit__bitstring__little__endian__coded_raw_, NULL, &CAN__MESSAGE__TESTFRAME0__msg__type_test__sig__11__bit__bitstring__little__endian__coded_xer_, &BITSTRING_json_, &CAN__MESSAGE__TESTFRAME0__msg__type_test__sig__11__bit__bitstring__little__endian__coded_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CAN__MESSAGE__TESTFRAME0__msg__type_test__sig__5__bit__bitstring__little__endian__coded_raw_ = {5,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,5,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       CAN__MESSAGE__TESTFRAME0__msg__type_test__sig__5__bit__bitstring__little__endian__coded_xer_ = { {"test_sig_5_bit_bitstring_little_endian_coded>\n", "test_sig_5_bit_bitstring_little_endian_coded>\n"}, {46, 46}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t CAN__MESSAGE__TESTFRAME0__msg__type_test__sig__5__bit__bitstring__little__endian__coded_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t CAN__MESSAGE__TESTFRAME0__msg__type_test__sig__5__bit__bitstring__little__endian__coded_descr_ = { "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME0_msg_type.test_sig_5_bit_bitstring_little_endian_coded", &BITSTRING_ber_, &CAN__MESSAGE__TESTFRAME0__msg__type_test__sig__5__bit__bitstring__little__endian__coded_raw_, NULL, &CAN__MESSAGE__TESTFRAME0__msg__type_test__sig__5__bit__bitstring__little__endian__coded_xer_, &BITSTRING_json_, &CAN__MESSAGE__TESTFRAME0__msg__type_test__sig__5__bit__bitstring__little__endian__coded_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CAN__MESSAGE__TESTFRAME0__msg__type_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,NULL,false};
+// No XER for CAN__MESSAGE__TESTFRAME0__msg__type
+const TTCN_Typedescriptor_t CAN__MESSAGE__TESTFRAME0__msg__type_descr_ = { "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME0_msg_type", NULL, &CAN__MESSAGE__TESTFRAME0__msg__type_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CAN__MESSAGE__TESTFRAME1__msg__type_test__sig__11__bit__bitstring__big__endian__coded_raw_ = {11,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_MSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,11,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       CAN__MESSAGE__TESTFRAME1__msg__type_test__sig__11__bit__bitstring__big__endian__coded_xer_ = { {"test_sig_11_bit_bitstring_big_endian_coded>\n", "test_sig_11_bit_bitstring_big_endian_coded>\n"}, {44, 44}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t CAN__MESSAGE__TESTFRAME1__msg__type_test__sig__11__bit__bitstring__big__endian__coded_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t CAN__MESSAGE__TESTFRAME1__msg__type_test__sig__11__bit__bitstring__big__endian__coded_descr_ = { "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME1_msg_type.test_sig_11_bit_bitstring_big_endian_coded", &BITSTRING_ber_, &CAN__MESSAGE__TESTFRAME1__msg__type_test__sig__11__bit__bitstring__big__endian__coded_raw_, NULL, &CAN__MESSAGE__TESTFRAME1__msg__type_test__sig__11__bit__bitstring__big__endian__coded_xer_, &BITSTRING_json_, &CAN__MESSAGE__TESTFRAME1__msg__type_test__sig__11__bit__bitstring__big__endian__coded_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CAN__MESSAGE__TESTFRAME1__msg__type_test__sig__5__bit__bitstring__big__endian__coded_raw_ = {5,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_MSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,5,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       CAN__MESSAGE__TESTFRAME1__msg__type_test__sig__5__bit__bitstring__big__endian__coded_xer_ = { {"test_sig_5_bit_bitstring_big_endian_coded>\n", "test_sig_5_bit_bitstring_big_endian_coded>\n"}, {43, 43}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t CAN__MESSAGE__TESTFRAME1__msg__type_test__sig__5__bit__bitstring__big__endian__coded_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t CAN__MESSAGE__TESTFRAME1__msg__type_test__sig__5__bit__bitstring__big__endian__coded_descr_ = { "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME1_msg_type.test_sig_5_bit_bitstring_big_endian_coded", &BITSTRING_ber_, &CAN__MESSAGE__TESTFRAME1__msg__type_test__sig__5__bit__bitstring__big__endian__coded_raw_, NULL, &CAN__MESSAGE__TESTFRAME1__msg__type_test__sig__5__bit__bitstring__big__endian__coded_xer_, &BITSTRING_json_, &CAN__MESSAGE__TESTFRAME1__msg__type_test__sig__5__bit__bitstring__big__endian__coded_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CAN__MESSAGE__TESTFRAME1__msg__type_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,NULL,false};
+// No XER for CAN__MESSAGE__TESTFRAME1__msg__type
+const TTCN_Typedescriptor_t CAN__MESSAGE__TESTFRAME1__msg__type_descr_ = { "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME1_msg_type", NULL, &CAN__MESSAGE__TESTFRAME1__msg__type_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CAN__MESSAGE__TESTFRAME2__msg__type_test__sig__11__bit__integer__big__endian__coded_raw_ = {11,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_MSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       CAN__MESSAGE__TESTFRAME2__msg__type_test__sig__11__bit__integer__big__endian__coded_xer_ = { {"test_sig_11_bit_integer_big_endian_coded>\n", "test_sig_11_bit_integer_big_endian_coded>\n"}, {42, 42}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t CAN__MESSAGE__TESTFRAME2__msg__type_test__sig__11__bit__integer__big__endian__coded_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t CAN__MESSAGE__TESTFRAME2__msg__type_test__sig__11__bit__integer__big__endian__coded_descr_ = { "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME2_msg_type.test_sig_11_bit_integer_big_endian_coded", &INTEGER_ber_, &CAN__MESSAGE__TESTFRAME2__msg__type_test__sig__11__bit__integer__big__endian__coded_raw_, &INTEGER_text_, &CAN__MESSAGE__TESTFRAME2__msg__type_test__sig__11__bit__integer__big__endian__coded_xer_, &INTEGER_json_, &CAN__MESSAGE__TESTFRAME2__msg__type_test__sig__11__bit__integer__big__endian__coded_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CAN__MESSAGE__TESTFRAME2__msg__type_test__sig__5__bit__integer__big__endian__coded_raw_ = {5,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_MSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       CAN__MESSAGE__TESTFRAME2__msg__type_test__sig__5__bit__integer__big__endian__coded_xer_ = { {"test_sig_5_bit_integer_big_endian_coded>\n", "test_sig_5_bit_integer_big_endian_coded>\n"}, {41, 41}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t CAN__MESSAGE__TESTFRAME2__msg__type_test__sig__5__bit__integer__big__endian__coded_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t CAN__MESSAGE__TESTFRAME2__msg__type_test__sig__5__bit__integer__big__endian__coded_descr_ = { "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME2_msg_type.test_sig_5_bit_integer_big_endian_coded", &INTEGER_ber_, &CAN__MESSAGE__TESTFRAME2__msg__type_test__sig__5__bit__integer__big__endian__coded_raw_, &INTEGER_text_, &CAN__MESSAGE__TESTFRAME2__msg__type_test__sig__5__bit__integer__big__endian__coded_xer_, &INTEGER_json_, &CAN__MESSAGE__TESTFRAME2__msg__type_test__sig__5__bit__integer__big__endian__coded_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CAN__MESSAGE__TESTFRAME2__msg__type_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,NULL,false};
+// No XER for CAN__MESSAGE__TESTFRAME2__msg__type
+const TTCN_Typedescriptor_t CAN__MESSAGE__TESTFRAME2__msg__type_descr_ = { "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME2_msg_type", NULL, &CAN__MESSAGE__TESTFRAME2__msg__type_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CAN__MESSAGE__TESTFRAME3__msg__type_test__sig__1__byte__octetstring__big__endian__coded_raw_ = {8,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_MSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       CAN__MESSAGE__TESTFRAME3__msg__type_test__sig__1__byte__octetstring__big__endian__coded_xer_ = { {"test_sig_1_byte_octetstring_big_endian_coded>\n", "test_sig_1_byte_octetstring_big_endian_coded>\n"}, {46, 46}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int CAN__MESSAGE__TESTFRAME3__msg__type_test__sig__1__byte__octetstring__big__endian__coded_oer_ext_arr_[0] = {};
+const int CAN__MESSAGE__TESTFRAME3__msg__type_test__sig__1__byte__octetstring__big__endian__coded_oer_p_[0] = {};
+const TTCN_OERdescriptor_t CAN__MESSAGE__TESTFRAME3__msg__type_test__sig__1__byte__octetstring__big__endian__coded_oer_ = { -1, TRUE, 1, FALSE, 0, 0, CAN__MESSAGE__TESTFRAME3__msg__type_test__sig__1__byte__octetstring__big__endian__coded_oer_ext_arr_, 0, CAN__MESSAGE__TESTFRAME3__msg__type_test__sig__1__byte__octetstring__big__endian__coded_oer_p_};
+const TTCN_Typedescriptor_t CAN__MESSAGE__TESTFRAME3__msg__type_test__sig__1__byte__octetstring__big__endian__coded_descr_ = { "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME3_msg_type.test_sig_1_byte_octetstring_big_endian_coded", &OCTETSTRING_ber_, &CAN__MESSAGE__TESTFRAME3__msg__type_test__sig__1__byte__octetstring__big__endian__coded_raw_, &OCTETSTRING_text_, &CAN__MESSAGE__TESTFRAME3__msg__type_test__sig__1__byte__octetstring__big__endian__coded_xer_, &OCTETSTRING_json_, &CAN__MESSAGE__TESTFRAME3__msg__type_test__sig__1__byte__octetstring__big__endian__coded_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CAN__MESSAGE__TESTFRAME3__msg__type_test__sig__2__byte__octetstring__big__endian__coded_raw_ = {16,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_MSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       CAN__MESSAGE__TESTFRAME3__msg__type_test__sig__2__byte__octetstring__big__endian__coded_xer_ = { {"test_sig_2_byte_octetstring_big_endian_coded>\n", "test_sig_2_byte_octetstring_big_endian_coded>\n"}, {46, 46}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int CAN__MESSAGE__TESTFRAME3__msg__type_test__sig__2__byte__octetstring__big__endian__coded_oer_ext_arr_[0] = {};
+const int CAN__MESSAGE__TESTFRAME3__msg__type_test__sig__2__byte__octetstring__big__endian__coded_oer_p_[0] = {};
+const TTCN_OERdescriptor_t CAN__MESSAGE__TESTFRAME3__msg__type_test__sig__2__byte__octetstring__big__endian__coded_oer_ = { -1, TRUE, 2, FALSE, 0, 0, CAN__MESSAGE__TESTFRAME3__msg__type_test__sig__2__byte__octetstring__big__endian__coded_oer_ext_arr_, 0, CAN__MESSAGE__TESTFRAME3__msg__type_test__sig__2__byte__octetstring__big__endian__coded_oer_p_};
+const TTCN_Typedescriptor_t CAN__MESSAGE__TESTFRAME3__msg__type_test__sig__2__byte__octetstring__big__endian__coded_descr_ = { "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME3_msg_type.test_sig_2_byte_octetstring_big_endian_coded", &OCTETSTRING_ber_, &CAN__MESSAGE__TESTFRAME3__msg__type_test__sig__2__byte__octetstring__big__endian__coded_raw_, &OCTETSTRING_text_, &CAN__MESSAGE__TESTFRAME3__msg__type_test__sig__2__byte__octetstring__big__endian__coded_xer_, &OCTETSTRING_json_, &CAN__MESSAGE__TESTFRAME3__msg__type_test__sig__2__byte__octetstring__big__endian__coded_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CAN__MESSAGE__TESTFRAME3__msg__type_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,NULL,false};
+// No XER for CAN__MESSAGE__TESTFRAME3__msg__type
+const TTCN_Typedescriptor_t CAN__MESSAGE__TESTFRAME3__msg__type_descr_ = { "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME3_msg_type", NULL, &CAN__MESSAGE__TESTFRAME3__msg__type_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CAN__MESSAGE__TESTFRAME4__msg__type_test__unsig__9__bit__2__padded__integer__big__endian__coded_raw_ = {11,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_MSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       CAN__MESSAGE__TESTFRAME4__msg__type_test__unsig__9__bit__2__padded__integer__big__endian__coded_xer_ = { {"test_unsig_9_bit_2_padded_integer_big_endian_coded>\n", "test_unsig_9_bit_2_padded_integer_big_endian_coded>\n"}, {52, 52}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t CAN__MESSAGE__TESTFRAME4__msg__type_test__unsig__9__bit__2__padded__integer__big__endian__coded_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t CAN__MESSAGE__TESTFRAME4__msg__type_test__unsig__9__bit__2__padded__integer__big__endian__coded_descr_ = { "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME4_msg_type.test_unsig_9_bit_2_padded_integer_big_endian_coded", &INTEGER_ber_, &CAN__MESSAGE__TESTFRAME4__msg__type_test__unsig__9__bit__2__padded__integer__big__endian__coded_raw_, &INTEGER_text_, &CAN__MESSAGE__TESTFRAME4__msg__type_test__unsig__9__bit__2__padded__integer__big__endian__coded_xer_, &INTEGER_json_, &CAN__MESSAGE__TESTFRAME4__msg__type_test__unsig__9__bit__2__padded__integer__big__endian__coded_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CAN__MESSAGE__TESTFRAME4__msg__type_test__sig__5__bit__integer__big__endian__coded_raw_ = {5,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_MSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       CAN__MESSAGE__TESTFRAME4__msg__type_test__sig__5__bit__integer__big__endian__coded_xer_ = { {"test_sig_5_bit_integer_big_endian_coded>\n", "test_sig_5_bit_integer_big_endian_coded>\n"}, {41, 41}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t CAN__MESSAGE__TESTFRAME4__msg__type_test__sig__5__bit__integer__big__endian__coded_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t CAN__MESSAGE__TESTFRAME4__msg__type_test__sig__5__bit__integer__big__endian__coded_descr_ = { "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME4_msg_type.test_sig_5_bit_integer_big_endian_coded", &INTEGER_ber_, &CAN__MESSAGE__TESTFRAME4__msg__type_test__sig__5__bit__integer__big__endian__coded_raw_, &INTEGER_text_, &CAN__MESSAGE__TESTFRAME4__msg__type_test__sig__5__bit__integer__big__endian__coded_xer_, &INTEGER_json_, &CAN__MESSAGE__TESTFRAME4__msg__type_test__sig__5__bit__integer__big__endian__coded_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CAN__MESSAGE__TESTFRAME4__msg__type_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,NULL,false};
+// No XER for CAN__MESSAGE__TESTFRAME4__msg__type
+const TTCN_Typedescriptor_t CAN__MESSAGE__TESTFRAME4__msg__type_descr_ = { "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME4_msg_type", NULL, &CAN__MESSAGE__TESTFRAME4__msg__type_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CAN__MESSAGE__TESTFRAME5__msg__type_test__unsig__9__bit__2__padded__integer__big__endian__coded_raw_ = {11,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       CAN__MESSAGE__TESTFRAME5__msg__type_test__unsig__9__bit__2__padded__integer__big__endian__coded_xer_ = { {"test_unsig_9_bit_2_padded_integer_big_endian_coded>\n", "test_unsig_9_bit_2_padded_integer_big_endian_coded>\n"}, {52, 52}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t CAN__MESSAGE__TESTFRAME5__msg__type_test__unsig__9__bit__2__padded__integer__big__endian__coded_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t CAN__MESSAGE__TESTFRAME5__msg__type_test__unsig__9__bit__2__padded__integer__big__endian__coded_descr_ = { "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME5_msg_type.test_unsig_9_bit_2_padded_integer_big_endian_coded", &INTEGER_ber_, &CAN__MESSAGE__TESTFRAME5__msg__type_test__unsig__9__bit__2__padded__integer__big__endian__coded_raw_, &INTEGER_text_, &CAN__MESSAGE__TESTFRAME5__msg__type_test__unsig__9__bit__2__padded__integer__big__endian__coded_xer_, &INTEGER_json_, &CAN__MESSAGE__TESTFRAME5__msg__type_test__unsig__9__bit__2__padded__integer__big__endian__coded_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CAN__MESSAGE__TESTFRAME5__msg__type_test__sig__5__bit__integer__big__endian__coded_raw_ = {5,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       CAN__MESSAGE__TESTFRAME5__msg__type_test__sig__5__bit__integer__big__endian__coded_xer_ = { {"test_sig_5_bit_integer_big_endian_coded>\n", "test_sig_5_bit_integer_big_endian_coded>\n"}, {41, 41}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t CAN__MESSAGE__TESTFRAME5__msg__type_test__sig__5__bit__integer__big__endian__coded_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t CAN__MESSAGE__TESTFRAME5__msg__type_test__sig__5__bit__integer__big__endian__coded_descr_ = { "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME5_msg_type.test_sig_5_bit_integer_big_endian_coded", &INTEGER_ber_, &CAN__MESSAGE__TESTFRAME5__msg__type_test__sig__5__bit__integer__big__endian__coded_raw_, &INTEGER_text_, &CAN__MESSAGE__TESTFRAME5__msg__type_test__sig__5__bit__integer__big__endian__coded_xer_, &INTEGER_json_, &CAN__MESSAGE__TESTFRAME5__msg__type_test__sig__5__bit__integer__big__endian__coded_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CAN__MESSAGE__TESTFRAME5__msg__type_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,NULL,false};
+// No XER for CAN__MESSAGE__TESTFRAME5__msg__type
+const TTCN_Typedescriptor_t CAN__MESSAGE__TESTFRAME5__msg__type_descr_ = { "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME5_msg_type", NULL, &CAN__MESSAGE__TESTFRAME5__msg__type_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CAN__MESSAGE__EXTENDEDFRAME1__msg__type_test__sig__2__byte__octetstring__msb__coded_raw_ = {16,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       CAN__MESSAGE__EXTENDEDFRAME1__msg__type_test__sig__2__byte__octetstring__msb__coded_xer_ = { {"test_sig_2_byte_octetstring_msb_coded>\n", "test_sig_2_byte_octetstring_msb_coded>\n"}, {39, 39}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int CAN__MESSAGE__EXTENDEDFRAME1__msg__type_test__sig__2__byte__octetstring__msb__coded_oer_ext_arr_[0] = {};
+const int CAN__MESSAGE__EXTENDEDFRAME1__msg__type_test__sig__2__byte__octetstring__msb__coded_oer_p_[0] = {};
+const TTCN_OERdescriptor_t CAN__MESSAGE__EXTENDEDFRAME1__msg__type_test__sig__2__byte__octetstring__msb__coded_oer_ = { -1, TRUE, 2, FALSE, 0, 0, CAN__MESSAGE__EXTENDEDFRAME1__msg__type_test__sig__2__byte__octetstring__msb__coded_oer_ext_arr_, 0, CAN__MESSAGE__EXTENDEDFRAME1__msg__type_test__sig__2__byte__octetstring__msb__coded_oer_p_};
+const TTCN_Typedescriptor_t CAN__MESSAGE__EXTENDEDFRAME1__msg__type_test__sig__2__byte__octetstring__msb__coded_descr_ = { "@CAN_matrix_messages.CAN_MESSAGE_EXTENDEDFRAME1_msg_type.test_sig_2_byte_octetstring_msb_coded", &OCTETSTRING_ber_, &CAN__MESSAGE__EXTENDEDFRAME1__msg__type_test__sig__2__byte__octetstring__msb__coded_raw_, &OCTETSTRING_text_, &CAN__MESSAGE__EXTENDEDFRAME1__msg__type_test__sig__2__byte__octetstring__msb__coded_xer_, &OCTETSTRING_json_, &CAN__MESSAGE__EXTENDEDFRAME1__msg__type_test__sig__2__byte__octetstring__msb__coded_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CAN__MESSAGE__EXTENDEDFRAME1__msg__type_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,NULL,false};
+// No XER for CAN__MESSAGE__EXTENDEDFRAME1__msg__type
+const TTCN_Typedescriptor_t CAN__MESSAGE__EXTENDEDFRAME1__msg__type_descr_ = { "@CAN_matrix_messages.CAN_MESSAGE_EXTENDEDFRAME1_msg_type", NULL, &CAN__MESSAGE__EXTENDEDFRAME1__msg__type_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CAN__MatrixPayloadUnion_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for CAN__MatrixPayloadUnion
+const TTCN_Typedescriptor_t CAN__MatrixPayloadUnion_descr_ = { "@CAN_matrix_messages.CAN_MatrixPayloadUnion", NULL, &CAN__MatrixPayloadUnion_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       CAN__MatrixUnion_can__id_xer_ = { {"can_id>\n", "can_id>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int CAN__MatrixUnion_can__id_oer_ext_arr_[0] = {};
+const int CAN__MatrixUnion_can__id_oer_p_[0] = {};
+const TTCN_OERdescriptor_t CAN__MatrixUnion_can__id_oer_ = { -1, TRUE, 4, FALSE, 0, 0, CAN__MatrixUnion_can__id_oer_ext_arr_, 0, CAN__MatrixUnion_can__id_oer_p_};
+const TTCN_Typedescriptor_t CAN__MatrixUnion_can__id_descr_ = { "@CAN_matrix_messages.CAN_MatrixUnion.can_id", &OCTETSTRING_ber_, &Can::CAN__id_raw_, &OCTETSTRING_text_, &CAN__MatrixUnion_can__id_xer_, &OCTETSTRING_json_, &CAN__MatrixUnion_can__id_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CAN__MatrixUnion_can__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,NULL,false};
+// No XER for CAN__MatrixUnion_can__pdu
+const TTCN_Typedescriptor_t CAN__MatrixUnion_can__pdu_descr_ = { "@CAN_matrix_messages.CAN_MatrixUnion.can_pdu", NULL, &CAN__MatrixUnion_can__pdu_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CAN__MatrixUnion_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for CAN__MatrixUnion
+const TTCN_Typedescriptor_t CAN__MatrixUnion_descr_ = { "@CAN_matrix_messages.CAN_MatrixUnion", NULL, &CAN__MatrixUnion_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+TTCN_Module module_object("CAN_matrix_messages", __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);
+
+static const RuntimeVersionChecker ver_checker(  current_runtime_version.requires_major_version_6,
+  current_runtime_version.requires_minor_version_6,
+  current_runtime_version.requires_patch_level_0,  current_runtime_version.requires_runtime_1);
+
+/* Member functions of C++ classes */
+
+CAN__MESSAGE__TESTFRAME0__msg__type::CAN__MESSAGE__TESTFRAME0__msg__type()
+{
+}
+
+CAN__MESSAGE__TESTFRAME0__msg__type::CAN__MESSAGE__TESTFRAME0__msg__type(const BITSTRING& par_test__sig__11__bit__bitstring__little__endian__coded,
+    const BITSTRING& par_test__sig__5__bit__bitstring__little__endian__coded)
+  :   field_test__sig__11__bit__bitstring__little__endian__coded(par_test__sig__11__bit__bitstring__little__endian__coded),
+  field_test__sig__5__bit__bitstring__little__endian__coded(par_test__sig__5__bit__bitstring__little__endian__coded)
+{
+}
+
+CAN__MESSAGE__TESTFRAME0__msg__type::CAN__MESSAGE__TESTFRAME0__msg__type(const CAN__MESSAGE__TESTFRAME0__msg__type& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME0_msg_type.");
+if (other_value.test__sig__11__bit__bitstring__little__endian__coded().is_bound()) field_test__sig__11__bit__bitstring__little__endian__coded = other_value.test__sig__11__bit__bitstring__little__endian__coded();
+else field_test__sig__11__bit__bitstring__little__endian__coded.clean_up();
+if (other_value.test__sig__5__bit__bitstring__little__endian__coded().is_bound()) field_test__sig__5__bit__bitstring__little__endian__coded = other_value.test__sig__5__bit__bitstring__little__endian__coded();
+else field_test__sig__5__bit__bitstring__little__endian__coded.clean_up();
+}
+
+void CAN__MESSAGE__TESTFRAME0__msg__type::clean_up()
+{
+field_test__sig__11__bit__bitstring__little__endian__coded.clean_up();
+field_test__sig__5__bit__bitstring__little__endian__coded.clean_up();
+}
+
+const TTCN_Typedescriptor_t* CAN__MESSAGE__TESTFRAME0__msg__type::get_descriptor() const { return &CAN__MESSAGE__TESTFRAME0__msg__type_descr_; }
+CAN__MESSAGE__TESTFRAME0__msg__type& CAN__MESSAGE__TESTFRAME0__msg__type::operator=(const CAN__MESSAGE__TESTFRAME0__msg__type& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME0_msg_type.");
+  if (other_value.test__sig__11__bit__bitstring__little__endian__coded().is_bound()) field_test__sig__11__bit__bitstring__little__endian__coded = other_value.test__sig__11__bit__bitstring__little__endian__coded();
+  else field_test__sig__11__bit__bitstring__little__endian__coded.clean_up();
+  if (other_value.test__sig__5__bit__bitstring__little__endian__coded().is_bound()) field_test__sig__5__bit__bitstring__little__endian__coded = other_value.test__sig__5__bit__bitstring__little__endian__coded();
+  else field_test__sig__5__bit__bitstring__little__endian__coded.clean_up();
+}
+return *this;
+}
+
+boolean CAN__MESSAGE__TESTFRAME0__msg__type::operator==(const CAN__MESSAGE__TESTFRAME0__msg__type& other_value) const
+{
+return field_test__sig__11__bit__bitstring__little__endian__coded==other_value.field_test__sig__11__bit__bitstring__little__endian__coded
+  && field_test__sig__5__bit__bitstring__little__endian__coded==other_value.field_test__sig__5__bit__bitstring__little__endian__coded;
+}
+
+boolean CAN__MESSAGE__TESTFRAME0__msg__type::is_bound() const
+{
+return (field_test__sig__11__bit__bitstring__little__endian__coded.is_bound())
+  || (field_test__sig__5__bit__bitstring__little__endian__coded.is_bound());
+}
+boolean CAN__MESSAGE__TESTFRAME0__msg__type::is_value() const
+{
+return field_test__sig__11__bit__bitstring__little__endian__coded.is_value()
+  && field_test__sig__5__bit__bitstring__little__endian__coded.is_value();
+}
+void CAN__MESSAGE__TESTFRAME0__msg__type::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ test_sig_11_bit_bitstring_little_endian_coded := ");
+field_test__sig__11__bit__bitstring__little__endian__coded.log();
+TTCN_Logger::log_event_str(", test_sig_5_bit_bitstring_little_endian_coded := ");
+field_test__sig__5__bit__bitstring__little__endian__coded.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void CAN__MESSAGE__TESTFRAME0__msg__type::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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME0_msg_type 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) test__sig__11__bit__bitstring__little__endian__coded().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) test__sig__5__bit__bitstring__little__endian__coded().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(), "test_sig_11_bit_bitstring_little_endian_coded")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          test__sig__11__bit__bitstring__little__endian__coded().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(), "test_sig_5_bit_bitstring_little_endian_coded")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          test__sig__5__bit__bitstring__little__endian__coded().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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME0_msg_type: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME0_msg_type");
+  }
+}
+
+void CAN__MESSAGE__TESTFRAME0__msg__type::set_implicit_omit()
+{
+if (test__sig__11__bit__bitstring__little__endian__coded().is_bound()) test__sig__11__bit__bitstring__little__endian__coded().set_implicit_omit();
+if (test__sig__5__bit__bitstring__little__endian__coded().is_bound()) test__sig__5__bit__bitstring__little__endian__coded().set_implicit_omit();
+}
+
+void CAN__MESSAGE__TESTFRAME0__msg__type::encode_text(Text_Buf& text_buf) const
+{
+field_test__sig__11__bit__bitstring__little__endian__coded.encode_text(text_buf);
+field_test__sig__5__bit__bitstring__little__endian__coded.encode_text(text_buf);
+}
+
+void CAN__MESSAGE__TESTFRAME0__msg__type::decode_text(Text_Buf& text_buf)
+{
+field_test__sig__11__bit__bitstring__little__endian__coded.decode_text(text_buf);
+field_test__sig__5__bit__bitstring__little__endian__coded.decode_text(text_buf);
+}
+
+void CAN__MESSAGE__TESTFRAME0__msg__type::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void CAN__MESSAGE__TESTFRAME0__msg__type::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int CAN__MESSAGE__TESTFRAME0__msg__type::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, CAN__MESSAGE__TESTFRAME0__msg__type_test__sig__11__bit__bitstring__little__endian__coded_descr_.raw->forceomit);
+  decoded_field_length = field_test__sig__11__bit__bitstring__little__endian__coded.RAW_decode(CAN__MESSAGE__TESTFRAME0__msg__type_test__sig__11__bit__bitstring__little__endian__coded_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, CAN__MESSAGE__TESTFRAME0__msg__type_test__sig__5__bit__bitstring__little__endian__coded_descr_.raw->forceomit);
+  decoded_field_length = field_test__sig__5__bit__bitstring__little__endian__coded.RAW_decode(CAN__MESSAGE__TESTFRAME0__msg__type_test__sig__5__bit__bitstring__little__endian__coded_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 CAN__MESSAGE__TESTFRAME0__msg__type::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, CAN__MESSAGE__TESTFRAME0__msg__type_test__sig__11__bit__bitstring__little__endian__coded_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, CAN__MESSAGE__TESTFRAME0__msg__type_test__sig__5__bit__bitstring__little__endian__coded_descr_.raw);
+  encoded_length += field_test__sig__11__bit__bitstring__little__endian__coded.RAW_encode(CAN__MESSAGE__TESTFRAME0__msg__type_test__sig__11__bit__bitstring__little__endian__coded_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_test__sig__5__bit__bitstring__little__endian__coded.RAW_encode(CAN__MESSAGE__TESTFRAME0__msg__type_test__sig__5__bit__bitstring__little__endian__coded_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct CAN__MESSAGE__TESTFRAME0__msg__type_template::single_value_struct {
+BITSTRING_template field_test__sig__11__bit__bitstring__little__endian__coded;
+BITSTRING_template field_test__sig__5__bit__bitstring__little__endian__coded;
+};
+
+void CAN__MESSAGE__TESTFRAME0__msg__type_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_test__sig__11__bit__bitstring__little__endian__coded = ANY_VALUE;
+single_value->field_test__sig__5__bit__bitstring__little__endian__coded = ANY_VALUE;
+}
+}
+}
+
+void CAN__MESSAGE__TESTFRAME0__msg__type_template::copy_value(const CAN__MESSAGE__TESTFRAME0__msg__type& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.test__sig__11__bit__bitstring__little__endian__coded().is_bound()) {
+  single_value->field_test__sig__11__bit__bitstring__little__endian__coded = other_value.test__sig__11__bit__bitstring__little__endian__coded();
+} else {
+  single_value->field_test__sig__11__bit__bitstring__little__endian__coded.clean_up();
+}
+if (other_value.test__sig__5__bit__bitstring__little__endian__coded().is_bound()) {
+  single_value->field_test__sig__5__bit__bitstring__little__endian__coded = other_value.test__sig__5__bit__bitstring__little__endian__coded();
+} else {
+  single_value->field_test__sig__5__bit__bitstring__little__endian__coded.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void CAN__MESSAGE__TESTFRAME0__msg__type_template::copy_template(const CAN__MESSAGE__TESTFRAME0__msg__type_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.test__sig__11__bit__bitstring__little__endian__coded().get_selection()) {
+single_value->field_test__sig__11__bit__bitstring__little__endian__coded = other_value.test__sig__11__bit__bitstring__little__endian__coded();
+} else {
+single_value->field_test__sig__11__bit__bitstring__little__endian__coded.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.test__sig__5__bit__bitstring__little__endian__coded().get_selection()) {
+single_value->field_test__sig__5__bit__bitstring__little__endian__coded = other_value.test__sig__5__bit__bitstring__little__endian__coded();
+} else {
+single_value->field_test__sig__5__bit__bitstring__little__endian__coded.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new CAN__MESSAGE__TESTFRAME0__msg__type_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME0_msg_type.");
+break;
+}
+set_selection(other_value);
+}
+
+CAN__MESSAGE__TESTFRAME0__msg__type_template::CAN__MESSAGE__TESTFRAME0__msg__type_template()
+{
+}
+
+CAN__MESSAGE__TESTFRAME0__msg__type_template::CAN__MESSAGE__TESTFRAME0__msg__type_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+CAN__MESSAGE__TESTFRAME0__msg__type_template::CAN__MESSAGE__TESTFRAME0__msg__type_template(const CAN__MESSAGE__TESTFRAME0__msg__type& other_value)
+{
+copy_value(other_value);
+}
+
+CAN__MESSAGE__TESTFRAME0__msg__type_template::CAN__MESSAGE__TESTFRAME0__msg__type_template(const OPTIONAL<CAN__MESSAGE__TESTFRAME0__msg__type>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CAN__MESSAGE__TESTFRAME0__msg__type&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME0_msg_type from an unbound optional field.");
+}
+}
+
+CAN__MESSAGE__TESTFRAME0__msg__type_template::CAN__MESSAGE__TESTFRAME0__msg__type_template(const CAN__MESSAGE__TESTFRAME0__msg__type_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+CAN__MESSAGE__TESTFRAME0__msg__type_template::~CAN__MESSAGE__TESTFRAME0__msg__type_template()
+{
+clean_up();
+}
+
+CAN__MESSAGE__TESTFRAME0__msg__type_template& CAN__MESSAGE__TESTFRAME0__msg__type_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+CAN__MESSAGE__TESTFRAME0__msg__type_template& CAN__MESSAGE__TESTFRAME0__msg__type_template::operator=(const CAN__MESSAGE__TESTFRAME0__msg__type& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+CAN__MESSAGE__TESTFRAME0__msg__type_template& CAN__MESSAGE__TESTFRAME0__msg__type_template::operator=(const OPTIONAL<CAN__MESSAGE__TESTFRAME0__msg__type>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CAN__MESSAGE__TESTFRAME0__msg__type&)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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME0_msg_type.");
+}
+return *this;
+}
+
+CAN__MESSAGE__TESTFRAME0__msg__type_template& CAN__MESSAGE__TESTFRAME0__msg__type_template::operator=(const CAN__MESSAGE__TESTFRAME0__msg__type_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean CAN__MESSAGE__TESTFRAME0__msg__type_template::match(const CAN__MESSAGE__TESTFRAME0__msg__type& 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.test__sig__11__bit__bitstring__little__endian__coded().is_bound()) return FALSE;
+if(!single_value->field_test__sig__11__bit__bitstring__little__endian__coded.match(other_value.test__sig__11__bit__bitstring__little__endian__coded(), legacy))return FALSE;
+if(!other_value.test__sig__5__bit__bitstring__little__endian__coded().is_bound()) return FALSE;
+if(!single_value->field_test__sig__5__bit__bitstring__little__endian__coded.match(other_value.test__sig__5__bit__bitstring__little__endian__coded(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME0_msg_type.");
+}
+return FALSE;
+}
+
+boolean CAN__MESSAGE__TESTFRAME0__msg__type_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_test__sig__11__bit__bitstring__little__endian__coded.is_bound()
+
+ ||single_value->field_test__sig__5__bit__bitstring__little__endian__coded.is_bound()
+;
+}
+
+boolean CAN__MESSAGE__TESTFRAME0__msg__type_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_test__sig__11__bit__bitstring__little__endian__coded.is_value()
+ &&single_value->field_test__sig__5__bit__bitstring__little__endian__coded.is_value();
+}
+
+void CAN__MESSAGE__TESTFRAME0__msg__type_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+CAN__MESSAGE__TESTFRAME0__msg__type CAN__MESSAGE__TESTFRAME0__msg__type_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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME0_msg_type.");
+CAN__MESSAGE__TESTFRAME0__msg__type ret_val;
+if (single_value->field_test__sig__11__bit__bitstring__little__endian__coded.is_bound()) {
+ret_val.test__sig__11__bit__bitstring__little__endian__coded() = single_value->field_test__sig__11__bit__bitstring__little__endian__coded.valueof();
+}
+if (single_value->field_test__sig__5__bit__bitstring__little__endian__coded.is_bound()) {
+ret_val.test__sig__5__bit__bitstring__little__endian__coded() = single_value->field_test__sig__5__bit__bitstring__little__endian__coded.valueof();
+}
+return ret_val;
+}
+
+void CAN__MESSAGE__TESTFRAME0__msg__type_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME0_msg_type.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new CAN__MESSAGE__TESTFRAME0__msg__type_template[list_length];
+}
+
+CAN__MESSAGE__TESTFRAME0__msg__type_template& CAN__MESSAGE__TESTFRAME0__msg__type_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME0_msg_type.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME0_msg_type.");
+return value_list.list_value[list_index];
+}
+
+BITSTRING_template& CAN__MESSAGE__TESTFRAME0__msg__type_template::test__sig__11__bit__bitstring__little__endian__coded()
+{
+set_specific();
+return single_value->field_test__sig__11__bit__bitstring__little__endian__coded;
+}
+
+const BITSTRING_template& CAN__MESSAGE__TESTFRAME0__msg__type_template::test__sig__11__bit__bitstring__little__endian__coded() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field test_sig_11_bit_bitstring_little_endian_coded of a non-specific template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME0_msg_type.");
+return single_value->field_test__sig__11__bit__bitstring__little__endian__coded;
+}
+
+BITSTRING_template& CAN__MESSAGE__TESTFRAME0__msg__type_template::test__sig__5__bit__bitstring__little__endian__coded()
+{
+set_specific();
+return single_value->field_test__sig__5__bit__bitstring__little__endian__coded;
+}
+
+const BITSTRING_template& CAN__MESSAGE__TESTFRAME0__msg__type_template::test__sig__5__bit__bitstring__little__endian__coded() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field test_sig_5_bit_bitstring_little_endian_coded of a non-specific template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME0_msg_type.");
+return single_value->field_test__sig__5__bit__bitstring__little__endian__coded;
+}
+
+int CAN__MESSAGE__TESTFRAME0__msg__type_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME0_msg_type 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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME0_msg_type 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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME0_msg_type containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME0_msg_type containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME0_msg_type containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME0_msg_type containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME0_msg_type.");
+  }
+  return 0;
+}
+
+void CAN__MESSAGE__TESTFRAME0__msg__type_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ test_sig_11_bit_bitstring_little_endian_coded := ");
+single_value->field_test__sig__11__bit__bitstring__little__endian__coded.log();
+TTCN_Logger::log_event_str(", test_sig_5_bit_bitstring_little_endian_coded := ");
+single_value->field_test__sig__5__bit__bitstring__little__endian__coded.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void CAN__MESSAGE__TESTFRAME0__msg__type_template::log_match(const CAN__MESSAGE__TESTFRAME0__msg__type& 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_test__sig__11__bit__bitstring__little__endian__coded.match(match_value.test__sig__11__bit__bitstring__little__endian__coded(), legacy)){
+TTCN_Logger::log_logmatch_info(".test_sig_11_bit_bitstring_little_endian_coded");
+single_value->field_test__sig__11__bit__bitstring__little__endian__coded.log_match(match_value.test__sig__11__bit__bitstring__little__endian__coded(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_test__sig__5__bit__bitstring__little__endian__coded.match(match_value.test__sig__5__bit__bitstring__little__endian__coded(), legacy)){
+TTCN_Logger::log_logmatch_info(".test_sig_5_bit_bitstring_little_endian_coded");
+single_value->field_test__sig__5__bit__bitstring__little__endian__coded.log_match(match_value.test__sig__5__bit__bitstring__little__endian__coded(), 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("{ test_sig_11_bit_bitstring_little_endian_coded := ");
+single_value->field_test__sig__11__bit__bitstring__little__endian__coded.log_match(match_value.test__sig__11__bit__bitstring__little__endian__coded(), legacy);
+TTCN_Logger::log_event_str(", test_sig_5_bit_bitstring_little_endian_coded := ");
+single_value->field_test__sig__5__bit__bitstring__little__endian__coded.log_match(match_value.test__sig__5__bit__bitstring__little__endian__coded(), 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 CAN__MESSAGE__TESTFRAME0__msg__type_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_test__sig__11__bit__bitstring__little__endian__coded.encode_text(text_buf);
+single_value->field_test__sig__5__bit__bitstring__little__endian__coded.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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME0_msg_type.");
+}
+}
+
+void CAN__MESSAGE__TESTFRAME0__msg__type_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_test__sig__11__bit__bitstring__little__endian__coded.decode_text(text_buf);
+single_value->field_test__sig__5__bit__bitstring__little__endian__coded.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 CAN__MESSAGE__TESTFRAME0__msg__type_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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME0_msg_type.");
+}
+}
+
+void CAN__MESSAGE__TESTFRAME0__msg__type_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: {
+    CAN__MESSAGE__TESTFRAME0__msg__type_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME0_msg_type 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) test__sig__11__bit__bitstring__little__endian__coded().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) test__sig__5__bit__bitstring__little__endian__coded().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(), "test_sig_11_bit_bitstring_little_endian_coded")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          test__sig__11__bit__bitstring__little__endian__coded().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(), "test_sig_5_bit_bitstring_little_endian_coded")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          test__sig__5__bit__bitstring__little__endian__coded().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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME0_msg_type: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME0_msg_type");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void CAN__MESSAGE__TESTFRAME0__msg__type_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_test__sig__11__bit__bitstring__little__endian__coded.check_restriction(t_res, t_name ? t_name : "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME0_msg_type");
+single_value->field_test__sig__5__bit__bitstring__little__endian__coded.check_restriction(t_res, t_name ? t_name : "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME0_msg_type");
+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 : "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME0_msg_type");
+}
+
+boolean CAN__MESSAGE__TESTFRAME0__msg__type_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean CAN__MESSAGE__TESTFRAME0__msg__type_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+CAN__MESSAGE__TESTFRAME1__msg__type::CAN__MESSAGE__TESTFRAME1__msg__type()
+{
+}
+
+CAN__MESSAGE__TESTFRAME1__msg__type::CAN__MESSAGE__TESTFRAME1__msg__type(const BITSTRING& par_test__sig__11__bit__bitstring__big__endian__coded,
+    const BITSTRING& par_test__sig__5__bit__bitstring__big__endian__coded)
+  :   field_test__sig__11__bit__bitstring__big__endian__coded(par_test__sig__11__bit__bitstring__big__endian__coded),
+  field_test__sig__5__bit__bitstring__big__endian__coded(par_test__sig__5__bit__bitstring__big__endian__coded)
+{
+}
+
+CAN__MESSAGE__TESTFRAME1__msg__type::CAN__MESSAGE__TESTFRAME1__msg__type(const CAN__MESSAGE__TESTFRAME1__msg__type& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME1_msg_type.");
+if (other_value.test__sig__11__bit__bitstring__big__endian__coded().is_bound()) field_test__sig__11__bit__bitstring__big__endian__coded = other_value.test__sig__11__bit__bitstring__big__endian__coded();
+else field_test__sig__11__bit__bitstring__big__endian__coded.clean_up();
+if (other_value.test__sig__5__bit__bitstring__big__endian__coded().is_bound()) field_test__sig__5__bit__bitstring__big__endian__coded = other_value.test__sig__5__bit__bitstring__big__endian__coded();
+else field_test__sig__5__bit__bitstring__big__endian__coded.clean_up();
+}
+
+void CAN__MESSAGE__TESTFRAME1__msg__type::clean_up()
+{
+field_test__sig__11__bit__bitstring__big__endian__coded.clean_up();
+field_test__sig__5__bit__bitstring__big__endian__coded.clean_up();
+}
+
+const TTCN_Typedescriptor_t* CAN__MESSAGE__TESTFRAME1__msg__type::get_descriptor() const { return &CAN__MESSAGE__TESTFRAME1__msg__type_descr_; }
+CAN__MESSAGE__TESTFRAME1__msg__type& CAN__MESSAGE__TESTFRAME1__msg__type::operator=(const CAN__MESSAGE__TESTFRAME1__msg__type& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME1_msg_type.");
+  if (other_value.test__sig__11__bit__bitstring__big__endian__coded().is_bound()) field_test__sig__11__bit__bitstring__big__endian__coded = other_value.test__sig__11__bit__bitstring__big__endian__coded();
+  else field_test__sig__11__bit__bitstring__big__endian__coded.clean_up();
+  if (other_value.test__sig__5__bit__bitstring__big__endian__coded().is_bound()) field_test__sig__5__bit__bitstring__big__endian__coded = other_value.test__sig__5__bit__bitstring__big__endian__coded();
+  else field_test__sig__5__bit__bitstring__big__endian__coded.clean_up();
+}
+return *this;
+}
+
+boolean CAN__MESSAGE__TESTFRAME1__msg__type::operator==(const CAN__MESSAGE__TESTFRAME1__msg__type& other_value) const
+{
+return field_test__sig__11__bit__bitstring__big__endian__coded==other_value.field_test__sig__11__bit__bitstring__big__endian__coded
+  && field_test__sig__5__bit__bitstring__big__endian__coded==other_value.field_test__sig__5__bit__bitstring__big__endian__coded;
+}
+
+boolean CAN__MESSAGE__TESTFRAME1__msg__type::is_bound() const
+{
+return (field_test__sig__11__bit__bitstring__big__endian__coded.is_bound())
+  || (field_test__sig__5__bit__bitstring__big__endian__coded.is_bound());
+}
+boolean CAN__MESSAGE__TESTFRAME1__msg__type::is_value() const
+{
+return field_test__sig__11__bit__bitstring__big__endian__coded.is_value()
+  && field_test__sig__5__bit__bitstring__big__endian__coded.is_value();
+}
+void CAN__MESSAGE__TESTFRAME1__msg__type::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ test_sig_11_bit_bitstring_big_endian_coded := ");
+field_test__sig__11__bit__bitstring__big__endian__coded.log();
+TTCN_Logger::log_event_str(", test_sig_5_bit_bitstring_big_endian_coded := ");
+field_test__sig__5__bit__bitstring__big__endian__coded.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void CAN__MESSAGE__TESTFRAME1__msg__type::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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME1_msg_type 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) test__sig__11__bit__bitstring__big__endian__coded().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) test__sig__5__bit__bitstring__big__endian__coded().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(), "test_sig_11_bit_bitstring_big_endian_coded")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          test__sig__11__bit__bitstring__big__endian__coded().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(), "test_sig_5_bit_bitstring_big_endian_coded")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          test__sig__5__bit__bitstring__big__endian__coded().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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME1_msg_type: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME1_msg_type");
+  }
+}
+
+void CAN__MESSAGE__TESTFRAME1__msg__type::set_implicit_omit()
+{
+if (test__sig__11__bit__bitstring__big__endian__coded().is_bound()) test__sig__11__bit__bitstring__big__endian__coded().set_implicit_omit();
+if (test__sig__5__bit__bitstring__big__endian__coded().is_bound()) test__sig__5__bit__bitstring__big__endian__coded().set_implicit_omit();
+}
+
+void CAN__MESSAGE__TESTFRAME1__msg__type::encode_text(Text_Buf& text_buf) const
+{
+field_test__sig__11__bit__bitstring__big__endian__coded.encode_text(text_buf);
+field_test__sig__5__bit__bitstring__big__endian__coded.encode_text(text_buf);
+}
+
+void CAN__MESSAGE__TESTFRAME1__msg__type::decode_text(Text_Buf& text_buf)
+{
+field_test__sig__11__bit__bitstring__big__endian__coded.decode_text(text_buf);
+field_test__sig__5__bit__bitstring__big__endian__coded.decode_text(text_buf);
+}
+
+void CAN__MESSAGE__TESTFRAME1__msg__type::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void CAN__MESSAGE__TESTFRAME1__msg__type::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int CAN__MESSAGE__TESTFRAME1__msg__type::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, CAN__MESSAGE__TESTFRAME1__msg__type_test__sig__11__bit__bitstring__big__endian__coded_descr_.raw->forceomit);
+  decoded_field_length = field_test__sig__11__bit__bitstring__big__endian__coded.RAW_decode(CAN__MESSAGE__TESTFRAME1__msg__type_test__sig__11__bit__bitstring__big__endian__coded_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, CAN__MESSAGE__TESTFRAME1__msg__type_test__sig__5__bit__bitstring__big__endian__coded_descr_.raw->forceomit);
+  decoded_field_length = field_test__sig__5__bit__bitstring__big__endian__coded.RAW_decode(CAN__MESSAGE__TESTFRAME1__msg__type_test__sig__5__bit__bitstring__big__endian__coded_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 CAN__MESSAGE__TESTFRAME1__msg__type::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, CAN__MESSAGE__TESTFRAME1__msg__type_test__sig__11__bit__bitstring__big__endian__coded_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, CAN__MESSAGE__TESTFRAME1__msg__type_test__sig__5__bit__bitstring__big__endian__coded_descr_.raw);
+  encoded_length += field_test__sig__11__bit__bitstring__big__endian__coded.RAW_encode(CAN__MESSAGE__TESTFRAME1__msg__type_test__sig__11__bit__bitstring__big__endian__coded_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_test__sig__5__bit__bitstring__big__endian__coded.RAW_encode(CAN__MESSAGE__TESTFRAME1__msg__type_test__sig__5__bit__bitstring__big__endian__coded_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct CAN__MESSAGE__TESTFRAME1__msg__type_template::single_value_struct {
+BITSTRING_template field_test__sig__11__bit__bitstring__big__endian__coded;
+BITSTRING_template field_test__sig__5__bit__bitstring__big__endian__coded;
+};
+
+void CAN__MESSAGE__TESTFRAME1__msg__type_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_test__sig__11__bit__bitstring__big__endian__coded = ANY_VALUE;
+single_value->field_test__sig__5__bit__bitstring__big__endian__coded = ANY_VALUE;
+}
+}
+}
+
+void CAN__MESSAGE__TESTFRAME1__msg__type_template::copy_value(const CAN__MESSAGE__TESTFRAME1__msg__type& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.test__sig__11__bit__bitstring__big__endian__coded().is_bound()) {
+  single_value->field_test__sig__11__bit__bitstring__big__endian__coded = other_value.test__sig__11__bit__bitstring__big__endian__coded();
+} else {
+  single_value->field_test__sig__11__bit__bitstring__big__endian__coded.clean_up();
+}
+if (other_value.test__sig__5__bit__bitstring__big__endian__coded().is_bound()) {
+  single_value->field_test__sig__5__bit__bitstring__big__endian__coded = other_value.test__sig__5__bit__bitstring__big__endian__coded();
+} else {
+  single_value->field_test__sig__5__bit__bitstring__big__endian__coded.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void CAN__MESSAGE__TESTFRAME1__msg__type_template::copy_template(const CAN__MESSAGE__TESTFRAME1__msg__type_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.test__sig__11__bit__bitstring__big__endian__coded().get_selection()) {
+single_value->field_test__sig__11__bit__bitstring__big__endian__coded = other_value.test__sig__11__bit__bitstring__big__endian__coded();
+} else {
+single_value->field_test__sig__11__bit__bitstring__big__endian__coded.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.test__sig__5__bit__bitstring__big__endian__coded().get_selection()) {
+single_value->field_test__sig__5__bit__bitstring__big__endian__coded = other_value.test__sig__5__bit__bitstring__big__endian__coded();
+} else {
+single_value->field_test__sig__5__bit__bitstring__big__endian__coded.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new CAN__MESSAGE__TESTFRAME1__msg__type_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME1_msg_type.");
+break;
+}
+set_selection(other_value);
+}
+
+CAN__MESSAGE__TESTFRAME1__msg__type_template::CAN__MESSAGE__TESTFRAME1__msg__type_template()
+{
+}
+
+CAN__MESSAGE__TESTFRAME1__msg__type_template::CAN__MESSAGE__TESTFRAME1__msg__type_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+CAN__MESSAGE__TESTFRAME1__msg__type_template::CAN__MESSAGE__TESTFRAME1__msg__type_template(const CAN__MESSAGE__TESTFRAME1__msg__type& other_value)
+{
+copy_value(other_value);
+}
+
+CAN__MESSAGE__TESTFRAME1__msg__type_template::CAN__MESSAGE__TESTFRAME1__msg__type_template(const OPTIONAL<CAN__MESSAGE__TESTFRAME1__msg__type>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CAN__MESSAGE__TESTFRAME1__msg__type&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME1_msg_type from an unbound optional field.");
+}
+}
+
+CAN__MESSAGE__TESTFRAME1__msg__type_template::CAN__MESSAGE__TESTFRAME1__msg__type_template(const CAN__MESSAGE__TESTFRAME1__msg__type_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+CAN__MESSAGE__TESTFRAME1__msg__type_template::~CAN__MESSAGE__TESTFRAME1__msg__type_template()
+{
+clean_up();
+}
+
+CAN__MESSAGE__TESTFRAME1__msg__type_template& CAN__MESSAGE__TESTFRAME1__msg__type_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+CAN__MESSAGE__TESTFRAME1__msg__type_template& CAN__MESSAGE__TESTFRAME1__msg__type_template::operator=(const CAN__MESSAGE__TESTFRAME1__msg__type& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+CAN__MESSAGE__TESTFRAME1__msg__type_template& CAN__MESSAGE__TESTFRAME1__msg__type_template::operator=(const OPTIONAL<CAN__MESSAGE__TESTFRAME1__msg__type>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CAN__MESSAGE__TESTFRAME1__msg__type&)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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME1_msg_type.");
+}
+return *this;
+}
+
+CAN__MESSAGE__TESTFRAME1__msg__type_template& CAN__MESSAGE__TESTFRAME1__msg__type_template::operator=(const CAN__MESSAGE__TESTFRAME1__msg__type_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean CAN__MESSAGE__TESTFRAME1__msg__type_template::match(const CAN__MESSAGE__TESTFRAME1__msg__type& 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.test__sig__11__bit__bitstring__big__endian__coded().is_bound()) return FALSE;
+if(!single_value->field_test__sig__11__bit__bitstring__big__endian__coded.match(other_value.test__sig__11__bit__bitstring__big__endian__coded(), legacy))return FALSE;
+if(!other_value.test__sig__5__bit__bitstring__big__endian__coded().is_bound()) return FALSE;
+if(!single_value->field_test__sig__5__bit__bitstring__big__endian__coded.match(other_value.test__sig__5__bit__bitstring__big__endian__coded(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME1_msg_type.");
+}
+return FALSE;
+}
+
+boolean CAN__MESSAGE__TESTFRAME1__msg__type_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_test__sig__11__bit__bitstring__big__endian__coded.is_bound()
+
+ ||single_value->field_test__sig__5__bit__bitstring__big__endian__coded.is_bound()
+;
+}
+
+boolean CAN__MESSAGE__TESTFRAME1__msg__type_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_test__sig__11__bit__bitstring__big__endian__coded.is_value()
+ &&single_value->field_test__sig__5__bit__bitstring__big__endian__coded.is_value();
+}
+
+void CAN__MESSAGE__TESTFRAME1__msg__type_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+CAN__MESSAGE__TESTFRAME1__msg__type CAN__MESSAGE__TESTFRAME1__msg__type_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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME1_msg_type.");
+CAN__MESSAGE__TESTFRAME1__msg__type ret_val;
+if (single_value->field_test__sig__11__bit__bitstring__big__endian__coded.is_bound()) {
+ret_val.test__sig__11__bit__bitstring__big__endian__coded() = single_value->field_test__sig__11__bit__bitstring__big__endian__coded.valueof();
+}
+if (single_value->field_test__sig__5__bit__bitstring__big__endian__coded.is_bound()) {
+ret_val.test__sig__5__bit__bitstring__big__endian__coded() = single_value->field_test__sig__5__bit__bitstring__big__endian__coded.valueof();
+}
+return ret_val;
+}
+
+void CAN__MESSAGE__TESTFRAME1__msg__type_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME1_msg_type.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new CAN__MESSAGE__TESTFRAME1__msg__type_template[list_length];
+}
+
+CAN__MESSAGE__TESTFRAME1__msg__type_template& CAN__MESSAGE__TESTFRAME1__msg__type_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME1_msg_type.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME1_msg_type.");
+return value_list.list_value[list_index];
+}
+
+BITSTRING_template& CAN__MESSAGE__TESTFRAME1__msg__type_template::test__sig__11__bit__bitstring__big__endian__coded()
+{
+set_specific();
+return single_value->field_test__sig__11__bit__bitstring__big__endian__coded;
+}
+
+const BITSTRING_template& CAN__MESSAGE__TESTFRAME1__msg__type_template::test__sig__11__bit__bitstring__big__endian__coded() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field test_sig_11_bit_bitstring_big_endian_coded of a non-specific template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME1_msg_type.");
+return single_value->field_test__sig__11__bit__bitstring__big__endian__coded;
+}
+
+BITSTRING_template& CAN__MESSAGE__TESTFRAME1__msg__type_template::test__sig__5__bit__bitstring__big__endian__coded()
+{
+set_specific();
+return single_value->field_test__sig__5__bit__bitstring__big__endian__coded;
+}
+
+const BITSTRING_template& CAN__MESSAGE__TESTFRAME1__msg__type_template::test__sig__5__bit__bitstring__big__endian__coded() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field test_sig_5_bit_bitstring_big_endian_coded of a non-specific template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME1_msg_type.");
+return single_value->field_test__sig__5__bit__bitstring__big__endian__coded;
+}
+
+int CAN__MESSAGE__TESTFRAME1__msg__type_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME1_msg_type 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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME1_msg_type 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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME1_msg_type containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME1_msg_type containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME1_msg_type containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME1_msg_type containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME1_msg_type.");
+  }
+  return 0;
+}
+
+void CAN__MESSAGE__TESTFRAME1__msg__type_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ test_sig_11_bit_bitstring_big_endian_coded := ");
+single_value->field_test__sig__11__bit__bitstring__big__endian__coded.log();
+TTCN_Logger::log_event_str(", test_sig_5_bit_bitstring_big_endian_coded := ");
+single_value->field_test__sig__5__bit__bitstring__big__endian__coded.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void CAN__MESSAGE__TESTFRAME1__msg__type_template::log_match(const CAN__MESSAGE__TESTFRAME1__msg__type& 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_test__sig__11__bit__bitstring__big__endian__coded.match(match_value.test__sig__11__bit__bitstring__big__endian__coded(), legacy)){
+TTCN_Logger::log_logmatch_info(".test_sig_11_bit_bitstring_big_endian_coded");
+single_value->field_test__sig__11__bit__bitstring__big__endian__coded.log_match(match_value.test__sig__11__bit__bitstring__big__endian__coded(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_test__sig__5__bit__bitstring__big__endian__coded.match(match_value.test__sig__5__bit__bitstring__big__endian__coded(), legacy)){
+TTCN_Logger::log_logmatch_info(".test_sig_5_bit_bitstring_big_endian_coded");
+single_value->field_test__sig__5__bit__bitstring__big__endian__coded.log_match(match_value.test__sig__5__bit__bitstring__big__endian__coded(), 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("{ test_sig_11_bit_bitstring_big_endian_coded := ");
+single_value->field_test__sig__11__bit__bitstring__big__endian__coded.log_match(match_value.test__sig__11__bit__bitstring__big__endian__coded(), legacy);
+TTCN_Logger::log_event_str(", test_sig_5_bit_bitstring_big_endian_coded := ");
+single_value->field_test__sig__5__bit__bitstring__big__endian__coded.log_match(match_value.test__sig__5__bit__bitstring__big__endian__coded(), 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 CAN__MESSAGE__TESTFRAME1__msg__type_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_test__sig__11__bit__bitstring__big__endian__coded.encode_text(text_buf);
+single_value->field_test__sig__5__bit__bitstring__big__endian__coded.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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME1_msg_type.");
+}
+}
+
+void CAN__MESSAGE__TESTFRAME1__msg__type_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_test__sig__11__bit__bitstring__big__endian__coded.decode_text(text_buf);
+single_value->field_test__sig__5__bit__bitstring__big__endian__coded.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 CAN__MESSAGE__TESTFRAME1__msg__type_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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME1_msg_type.");
+}
+}
+
+void CAN__MESSAGE__TESTFRAME1__msg__type_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: {
+    CAN__MESSAGE__TESTFRAME1__msg__type_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME1_msg_type 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) test__sig__11__bit__bitstring__big__endian__coded().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) test__sig__5__bit__bitstring__big__endian__coded().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(), "test_sig_11_bit_bitstring_big_endian_coded")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          test__sig__11__bit__bitstring__big__endian__coded().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(), "test_sig_5_bit_bitstring_big_endian_coded")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          test__sig__5__bit__bitstring__big__endian__coded().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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME1_msg_type: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME1_msg_type");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void CAN__MESSAGE__TESTFRAME1__msg__type_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_test__sig__11__bit__bitstring__big__endian__coded.check_restriction(t_res, t_name ? t_name : "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME1_msg_type");
+single_value->field_test__sig__5__bit__bitstring__big__endian__coded.check_restriction(t_res, t_name ? t_name : "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME1_msg_type");
+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 : "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME1_msg_type");
+}
+
+boolean CAN__MESSAGE__TESTFRAME1__msg__type_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean CAN__MESSAGE__TESTFRAME1__msg__type_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+CAN__MESSAGE__TESTFRAME2__msg__type::CAN__MESSAGE__TESTFRAME2__msg__type()
+{
+}
+
+CAN__MESSAGE__TESTFRAME2__msg__type::CAN__MESSAGE__TESTFRAME2__msg__type(const INTEGER& par_test__sig__11__bit__integer__big__endian__coded,
+    const INTEGER& par_test__sig__5__bit__integer__big__endian__coded)
+  :   field_test__sig__11__bit__integer__big__endian__coded(par_test__sig__11__bit__integer__big__endian__coded),
+  field_test__sig__5__bit__integer__big__endian__coded(par_test__sig__5__bit__integer__big__endian__coded)
+{
+}
+
+CAN__MESSAGE__TESTFRAME2__msg__type::CAN__MESSAGE__TESTFRAME2__msg__type(const CAN__MESSAGE__TESTFRAME2__msg__type& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME2_msg_type.");
+if (other_value.test__sig__11__bit__integer__big__endian__coded().is_bound()) field_test__sig__11__bit__integer__big__endian__coded = other_value.test__sig__11__bit__integer__big__endian__coded();
+else field_test__sig__11__bit__integer__big__endian__coded.clean_up();
+if (other_value.test__sig__5__bit__integer__big__endian__coded().is_bound()) field_test__sig__5__bit__integer__big__endian__coded = other_value.test__sig__5__bit__integer__big__endian__coded();
+else field_test__sig__5__bit__integer__big__endian__coded.clean_up();
+}
+
+void CAN__MESSAGE__TESTFRAME2__msg__type::clean_up()
+{
+field_test__sig__11__bit__integer__big__endian__coded.clean_up();
+field_test__sig__5__bit__integer__big__endian__coded.clean_up();
+}
+
+const TTCN_Typedescriptor_t* CAN__MESSAGE__TESTFRAME2__msg__type::get_descriptor() const { return &CAN__MESSAGE__TESTFRAME2__msg__type_descr_; }
+CAN__MESSAGE__TESTFRAME2__msg__type& CAN__MESSAGE__TESTFRAME2__msg__type::operator=(const CAN__MESSAGE__TESTFRAME2__msg__type& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME2_msg_type.");
+  if (other_value.test__sig__11__bit__integer__big__endian__coded().is_bound()) field_test__sig__11__bit__integer__big__endian__coded = other_value.test__sig__11__bit__integer__big__endian__coded();
+  else field_test__sig__11__bit__integer__big__endian__coded.clean_up();
+  if (other_value.test__sig__5__bit__integer__big__endian__coded().is_bound()) field_test__sig__5__bit__integer__big__endian__coded = other_value.test__sig__5__bit__integer__big__endian__coded();
+  else field_test__sig__5__bit__integer__big__endian__coded.clean_up();
+}
+return *this;
+}
+
+boolean CAN__MESSAGE__TESTFRAME2__msg__type::operator==(const CAN__MESSAGE__TESTFRAME2__msg__type& other_value) const
+{
+return field_test__sig__11__bit__integer__big__endian__coded==other_value.field_test__sig__11__bit__integer__big__endian__coded
+  && field_test__sig__5__bit__integer__big__endian__coded==other_value.field_test__sig__5__bit__integer__big__endian__coded;
+}
+
+boolean CAN__MESSAGE__TESTFRAME2__msg__type::is_bound() const
+{
+return (field_test__sig__11__bit__integer__big__endian__coded.is_bound())
+  || (field_test__sig__5__bit__integer__big__endian__coded.is_bound());
+}
+boolean CAN__MESSAGE__TESTFRAME2__msg__type::is_value() const
+{
+return field_test__sig__11__bit__integer__big__endian__coded.is_value()
+  && field_test__sig__5__bit__integer__big__endian__coded.is_value();
+}
+void CAN__MESSAGE__TESTFRAME2__msg__type::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ test_sig_11_bit_integer_big_endian_coded := ");
+field_test__sig__11__bit__integer__big__endian__coded.log();
+TTCN_Logger::log_event_str(", test_sig_5_bit_integer_big_endian_coded := ");
+field_test__sig__5__bit__integer__big__endian__coded.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void CAN__MESSAGE__TESTFRAME2__msg__type::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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME2_msg_type 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) test__sig__11__bit__integer__big__endian__coded().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) test__sig__5__bit__integer__big__endian__coded().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(), "test_sig_11_bit_integer_big_endian_coded")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          test__sig__11__bit__integer__big__endian__coded().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(), "test_sig_5_bit_integer_big_endian_coded")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          test__sig__5__bit__integer__big__endian__coded().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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME2_msg_type: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME2_msg_type");
+  }
+}
+
+void CAN__MESSAGE__TESTFRAME2__msg__type::set_implicit_omit()
+{
+if (test__sig__11__bit__integer__big__endian__coded().is_bound()) test__sig__11__bit__integer__big__endian__coded().set_implicit_omit();
+if (test__sig__5__bit__integer__big__endian__coded().is_bound()) test__sig__5__bit__integer__big__endian__coded().set_implicit_omit();
+}
+
+void CAN__MESSAGE__TESTFRAME2__msg__type::encode_text(Text_Buf& text_buf) const
+{
+field_test__sig__11__bit__integer__big__endian__coded.encode_text(text_buf);
+field_test__sig__5__bit__integer__big__endian__coded.encode_text(text_buf);
+}
+
+void CAN__MESSAGE__TESTFRAME2__msg__type::decode_text(Text_Buf& text_buf)
+{
+field_test__sig__11__bit__integer__big__endian__coded.decode_text(text_buf);
+field_test__sig__5__bit__integer__big__endian__coded.decode_text(text_buf);
+}
+
+void CAN__MESSAGE__TESTFRAME2__msg__type::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void CAN__MESSAGE__TESTFRAME2__msg__type::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int CAN__MESSAGE__TESTFRAME2__msg__type::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, CAN__MESSAGE__TESTFRAME2__msg__type_test__sig__11__bit__integer__big__endian__coded_descr_.raw->forceomit);
+  decoded_field_length = field_test__sig__11__bit__integer__big__endian__coded.RAW_decode(CAN__MESSAGE__TESTFRAME2__msg__type_test__sig__11__bit__integer__big__endian__coded_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, CAN__MESSAGE__TESTFRAME2__msg__type_test__sig__5__bit__integer__big__endian__coded_descr_.raw->forceomit);
+  decoded_field_length = field_test__sig__5__bit__integer__big__endian__coded.RAW_decode(CAN__MESSAGE__TESTFRAME2__msg__type_test__sig__5__bit__integer__big__endian__coded_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 CAN__MESSAGE__TESTFRAME2__msg__type::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, CAN__MESSAGE__TESTFRAME2__msg__type_test__sig__11__bit__integer__big__endian__coded_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, CAN__MESSAGE__TESTFRAME2__msg__type_test__sig__5__bit__integer__big__endian__coded_descr_.raw);
+  encoded_length += field_test__sig__11__bit__integer__big__endian__coded.RAW_encode(CAN__MESSAGE__TESTFRAME2__msg__type_test__sig__11__bit__integer__big__endian__coded_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_test__sig__5__bit__integer__big__endian__coded.RAW_encode(CAN__MESSAGE__TESTFRAME2__msg__type_test__sig__5__bit__integer__big__endian__coded_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct CAN__MESSAGE__TESTFRAME2__msg__type_template::single_value_struct {
+INTEGER_template field_test__sig__11__bit__integer__big__endian__coded;
+INTEGER_template field_test__sig__5__bit__integer__big__endian__coded;
+};
+
+void CAN__MESSAGE__TESTFRAME2__msg__type_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_test__sig__11__bit__integer__big__endian__coded = ANY_VALUE;
+single_value->field_test__sig__5__bit__integer__big__endian__coded = ANY_VALUE;
+}
+}
+}
+
+void CAN__MESSAGE__TESTFRAME2__msg__type_template::copy_value(const CAN__MESSAGE__TESTFRAME2__msg__type& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.test__sig__11__bit__integer__big__endian__coded().is_bound()) {
+  single_value->field_test__sig__11__bit__integer__big__endian__coded = other_value.test__sig__11__bit__integer__big__endian__coded();
+} else {
+  single_value->field_test__sig__11__bit__integer__big__endian__coded.clean_up();
+}
+if (other_value.test__sig__5__bit__integer__big__endian__coded().is_bound()) {
+  single_value->field_test__sig__5__bit__integer__big__endian__coded = other_value.test__sig__5__bit__integer__big__endian__coded();
+} else {
+  single_value->field_test__sig__5__bit__integer__big__endian__coded.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void CAN__MESSAGE__TESTFRAME2__msg__type_template::copy_template(const CAN__MESSAGE__TESTFRAME2__msg__type_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.test__sig__11__bit__integer__big__endian__coded().get_selection()) {
+single_value->field_test__sig__11__bit__integer__big__endian__coded = other_value.test__sig__11__bit__integer__big__endian__coded();
+} else {
+single_value->field_test__sig__11__bit__integer__big__endian__coded.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.test__sig__5__bit__integer__big__endian__coded().get_selection()) {
+single_value->field_test__sig__5__bit__integer__big__endian__coded = other_value.test__sig__5__bit__integer__big__endian__coded();
+} else {
+single_value->field_test__sig__5__bit__integer__big__endian__coded.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new CAN__MESSAGE__TESTFRAME2__msg__type_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME2_msg_type.");
+break;
+}
+set_selection(other_value);
+}
+
+CAN__MESSAGE__TESTFRAME2__msg__type_template::CAN__MESSAGE__TESTFRAME2__msg__type_template()
+{
+}
+
+CAN__MESSAGE__TESTFRAME2__msg__type_template::CAN__MESSAGE__TESTFRAME2__msg__type_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+CAN__MESSAGE__TESTFRAME2__msg__type_template::CAN__MESSAGE__TESTFRAME2__msg__type_template(const CAN__MESSAGE__TESTFRAME2__msg__type& other_value)
+{
+copy_value(other_value);
+}
+
+CAN__MESSAGE__TESTFRAME2__msg__type_template::CAN__MESSAGE__TESTFRAME2__msg__type_template(const OPTIONAL<CAN__MESSAGE__TESTFRAME2__msg__type>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CAN__MESSAGE__TESTFRAME2__msg__type&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME2_msg_type from an unbound optional field.");
+}
+}
+
+CAN__MESSAGE__TESTFRAME2__msg__type_template::CAN__MESSAGE__TESTFRAME2__msg__type_template(const CAN__MESSAGE__TESTFRAME2__msg__type_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+CAN__MESSAGE__TESTFRAME2__msg__type_template::~CAN__MESSAGE__TESTFRAME2__msg__type_template()
+{
+clean_up();
+}
+
+CAN__MESSAGE__TESTFRAME2__msg__type_template& CAN__MESSAGE__TESTFRAME2__msg__type_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+CAN__MESSAGE__TESTFRAME2__msg__type_template& CAN__MESSAGE__TESTFRAME2__msg__type_template::operator=(const CAN__MESSAGE__TESTFRAME2__msg__type& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+CAN__MESSAGE__TESTFRAME2__msg__type_template& CAN__MESSAGE__TESTFRAME2__msg__type_template::operator=(const OPTIONAL<CAN__MESSAGE__TESTFRAME2__msg__type>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CAN__MESSAGE__TESTFRAME2__msg__type&)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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME2_msg_type.");
+}
+return *this;
+}
+
+CAN__MESSAGE__TESTFRAME2__msg__type_template& CAN__MESSAGE__TESTFRAME2__msg__type_template::operator=(const CAN__MESSAGE__TESTFRAME2__msg__type_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean CAN__MESSAGE__TESTFRAME2__msg__type_template::match(const CAN__MESSAGE__TESTFRAME2__msg__type& 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.test__sig__11__bit__integer__big__endian__coded().is_bound()) return FALSE;
+if(!single_value->field_test__sig__11__bit__integer__big__endian__coded.match(other_value.test__sig__11__bit__integer__big__endian__coded(), legacy))return FALSE;
+if(!other_value.test__sig__5__bit__integer__big__endian__coded().is_bound()) return FALSE;
+if(!single_value->field_test__sig__5__bit__integer__big__endian__coded.match(other_value.test__sig__5__bit__integer__big__endian__coded(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME2_msg_type.");
+}
+return FALSE;
+}
+
+boolean CAN__MESSAGE__TESTFRAME2__msg__type_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_test__sig__11__bit__integer__big__endian__coded.is_bound()
+
+ ||single_value->field_test__sig__5__bit__integer__big__endian__coded.is_bound()
+;
+}
+
+boolean CAN__MESSAGE__TESTFRAME2__msg__type_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_test__sig__11__bit__integer__big__endian__coded.is_value()
+ &&single_value->field_test__sig__5__bit__integer__big__endian__coded.is_value();
+}
+
+void CAN__MESSAGE__TESTFRAME2__msg__type_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+CAN__MESSAGE__TESTFRAME2__msg__type CAN__MESSAGE__TESTFRAME2__msg__type_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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME2_msg_type.");
+CAN__MESSAGE__TESTFRAME2__msg__type ret_val;
+if (single_value->field_test__sig__11__bit__integer__big__endian__coded.is_bound()) {
+ret_val.test__sig__11__bit__integer__big__endian__coded() = single_value->field_test__sig__11__bit__integer__big__endian__coded.valueof();
+}
+if (single_value->field_test__sig__5__bit__integer__big__endian__coded.is_bound()) {
+ret_val.test__sig__5__bit__integer__big__endian__coded() = single_value->field_test__sig__5__bit__integer__big__endian__coded.valueof();
+}
+return ret_val;
+}
+
+void CAN__MESSAGE__TESTFRAME2__msg__type_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME2_msg_type.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new CAN__MESSAGE__TESTFRAME2__msg__type_template[list_length];
+}
+
+CAN__MESSAGE__TESTFRAME2__msg__type_template& CAN__MESSAGE__TESTFRAME2__msg__type_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME2_msg_type.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME2_msg_type.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& CAN__MESSAGE__TESTFRAME2__msg__type_template::test__sig__11__bit__integer__big__endian__coded()
+{
+set_specific();
+return single_value->field_test__sig__11__bit__integer__big__endian__coded;
+}
+
+const INTEGER_template& CAN__MESSAGE__TESTFRAME2__msg__type_template::test__sig__11__bit__integer__big__endian__coded() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field test_sig_11_bit_integer_big_endian_coded of a non-specific template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME2_msg_type.");
+return single_value->field_test__sig__11__bit__integer__big__endian__coded;
+}
+
+INTEGER_template& CAN__MESSAGE__TESTFRAME2__msg__type_template::test__sig__5__bit__integer__big__endian__coded()
+{
+set_specific();
+return single_value->field_test__sig__5__bit__integer__big__endian__coded;
+}
+
+const INTEGER_template& CAN__MESSAGE__TESTFRAME2__msg__type_template::test__sig__5__bit__integer__big__endian__coded() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field test_sig_5_bit_integer_big_endian_coded of a non-specific template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME2_msg_type.");
+return single_value->field_test__sig__5__bit__integer__big__endian__coded;
+}
+
+int CAN__MESSAGE__TESTFRAME2__msg__type_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME2_msg_type 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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME2_msg_type 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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME2_msg_type containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME2_msg_type containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME2_msg_type containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME2_msg_type containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME2_msg_type.");
+  }
+  return 0;
+}
+
+void CAN__MESSAGE__TESTFRAME2__msg__type_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ test_sig_11_bit_integer_big_endian_coded := ");
+single_value->field_test__sig__11__bit__integer__big__endian__coded.log();
+TTCN_Logger::log_event_str(", test_sig_5_bit_integer_big_endian_coded := ");
+single_value->field_test__sig__5__bit__integer__big__endian__coded.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void CAN__MESSAGE__TESTFRAME2__msg__type_template::log_match(const CAN__MESSAGE__TESTFRAME2__msg__type& 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_test__sig__11__bit__integer__big__endian__coded.match(match_value.test__sig__11__bit__integer__big__endian__coded(), legacy)){
+TTCN_Logger::log_logmatch_info(".test_sig_11_bit_integer_big_endian_coded");
+single_value->field_test__sig__11__bit__integer__big__endian__coded.log_match(match_value.test__sig__11__bit__integer__big__endian__coded(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_test__sig__5__bit__integer__big__endian__coded.match(match_value.test__sig__5__bit__integer__big__endian__coded(), legacy)){
+TTCN_Logger::log_logmatch_info(".test_sig_5_bit_integer_big_endian_coded");
+single_value->field_test__sig__5__bit__integer__big__endian__coded.log_match(match_value.test__sig__5__bit__integer__big__endian__coded(), 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("{ test_sig_11_bit_integer_big_endian_coded := ");
+single_value->field_test__sig__11__bit__integer__big__endian__coded.log_match(match_value.test__sig__11__bit__integer__big__endian__coded(), legacy);
+TTCN_Logger::log_event_str(", test_sig_5_bit_integer_big_endian_coded := ");
+single_value->field_test__sig__5__bit__integer__big__endian__coded.log_match(match_value.test__sig__5__bit__integer__big__endian__coded(), 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 CAN__MESSAGE__TESTFRAME2__msg__type_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_test__sig__11__bit__integer__big__endian__coded.encode_text(text_buf);
+single_value->field_test__sig__5__bit__integer__big__endian__coded.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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME2_msg_type.");
+}
+}
+
+void CAN__MESSAGE__TESTFRAME2__msg__type_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_test__sig__11__bit__integer__big__endian__coded.decode_text(text_buf);
+single_value->field_test__sig__5__bit__integer__big__endian__coded.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 CAN__MESSAGE__TESTFRAME2__msg__type_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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME2_msg_type.");
+}
+}
+
+void CAN__MESSAGE__TESTFRAME2__msg__type_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: {
+    CAN__MESSAGE__TESTFRAME2__msg__type_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME2_msg_type 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) test__sig__11__bit__integer__big__endian__coded().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) test__sig__5__bit__integer__big__endian__coded().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(), "test_sig_11_bit_integer_big_endian_coded")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          test__sig__11__bit__integer__big__endian__coded().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(), "test_sig_5_bit_integer_big_endian_coded")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          test__sig__5__bit__integer__big__endian__coded().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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME2_msg_type: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME2_msg_type");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void CAN__MESSAGE__TESTFRAME2__msg__type_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_test__sig__11__bit__integer__big__endian__coded.check_restriction(t_res, t_name ? t_name : "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME2_msg_type");
+single_value->field_test__sig__5__bit__integer__big__endian__coded.check_restriction(t_res, t_name ? t_name : "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME2_msg_type");
+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 : "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME2_msg_type");
+}
+
+boolean CAN__MESSAGE__TESTFRAME2__msg__type_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean CAN__MESSAGE__TESTFRAME2__msg__type_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+CAN__MESSAGE__TESTFRAME3__msg__type::CAN__MESSAGE__TESTFRAME3__msg__type()
+{
+}
+
+CAN__MESSAGE__TESTFRAME3__msg__type::CAN__MESSAGE__TESTFRAME3__msg__type(const OCTETSTRING& par_test__sig__1__byte__octetstring__big__endian__coded,
+    const OCTETSTRING& par_test__sig__2__byte__octetstring__big__endian__coded)
+  :   field_test__sig__1__byte__octetstring__big__endian__coded(par_test__sig__1__byte__octetstring__big__endian__coded),
+  field_test__sig__2__byte__octetstring__big__endian__coded(par_test__sig__2__byte__octetstring__big__endian__coded)
+{
+}
+
+CAN__MESSAGE__TESTFRAME3__msg__type::CAN__MESSAGE__TESTFRAME3__msg__type(const CAN__MESSAGE__TESTFRAME3__msg__type& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME3_msg_type.");
+if (other_value.test__sig__1__byte__octetstring__big__endian__coded().is_bound()) field_test__sig__1__byte__octetstring__big__endian__coded = other_value.test__sig__1__byte__octetstring__big__endian__coded();
+else field_test__sig__1__byte__octetstring__big__endian__coded.clean_up();
+if (other_value.test__sig__2__byte__octetstring__big__endian__coded().is_bound()) field_test__sig__2__byte__octetstring__big__endian__coded = other_value.test__sig__2__byte__octetstring__big__endian__coded();
+else field_test__sig__2__byte__octetstring__big__endian__coded.clean_up();
+}
+
+void CAN__MESSAGE__TESTFRAME3__msg__type::clean_up()
+{
+field_test__sig__1__byte__octetstring__big__endian__coded.clean_up();
+field_test__sig__2__byte__octetstring__big__endian__coded.clean_up();
+}
+
+const TTCN_Typedescriptor_t* CAN__MESSAGE__TESTFRAME3__msg__type::get_descriptor() const { return &CAN__MESSAGE__TESTFRAME3__msg__type_descr_; }
+CAN__MESSAGE__TESTFRAME3__msg__type& CAN__MESSAGE__TESTFRAME3__msg__type::operator=(const CAN__MESSAGE__TESTFRAME3__msg__type& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME3_msg_type.");
+  if (other_value.test__sig__1__byte__octetstring__big__endian__coded().is_bound()) field_test__sig__1__byte__octetstring__big__endian__coded = other_value.test__sig__1__byte__octetstring__big__endian__coded();
+  else field_test__sig__1__byte__octetstring__big__endian__coded.clean_up();
+  if (other_value.test__sig__2__byte__octetstring__big__endian__coded().is_bound()) field_test__sig__2__byte__octetstring__big__endian__coded = other_value.test__sig__2__byte__octetstring__big__endian__coded();
+  else field_test__sig__2__byte__octetstring__big__endian__coded.clean_up();
+}
+return *this;
+}
+
+boolean CAN__MESSAGE__TESTFRAME3__msg__type::operator==(const CAN__MESSAGE__TESTFRAME3__msg__type& other_value) const
+{
+return field_test__sig__1__byte__octetstring__big__endian__coded==other_value.field_test__sig__1__byte__octetstring__big__endian__coded
+  && field_test__sig__2__byte__octetstring__big__endian__coded==other_value.field_test__sig__2__byte__octetstring__big__endian__coded;
+}
+
+boolean CAN__MESSAGE__TESTFRAME3__msg__type::is_bound() const
+{
+return (field_test__sig__1__byte__octetstring__big__endian__coded.is_bound())
+  || (field_test__sig__2__byte__octetstring__big__endian__coded.is_bound());
+}
+boolean CAN__MESSAGE__TESTFRAME3__msg__type::is_value() const
+{
+return field_test__sig__1__byte__octetstring__big__endian__coded.is_value()
+  && field_test__sig__2__byte__octetstring__big__endian__coded.is_value();
+}
+void CAN__MESSAGE__TESTFRAME3__msg__type::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ test_sig_1_byte_octetstring_big_endian_coded := ");
+field_test__sig__1__byte__octetstring__big__endian__coded.log();
+TTCN_Logger::log_event_str(", test_sig_2_byte_octetstring_big_endian_coded := ");
+field_test__sig__2__byte__octetstring__big__endian__coded.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void CAN__MESSAGE__TESTFRAME3__msg__type::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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME3_msg_type 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) test__sig__1__byte__octetstring__big__endian__coded().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) test__sig__2__byte__octetstring__big__endian__coded().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(), "test_sig_1_byte_octetstring_big_endian_coded")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          test__sig__1__byte__octetstring__big__endian__coded().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(), "test_sig_2_byte_octetstring_big_endian_coded")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          test__sig__2__byte__octetstring__big__endian__coded().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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME3_msg_type: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME3_msg_type");
+  }
+}
+
+void CAN__MESSAGE__TESTFRAME3__msg__type::set_implicit_omit()
+{
+if (test__sig__1__byte__octetstring__big__endian__coded().is_bound()) test__sig__1__byte__octetstring__big__endian__coded().set_implicit_omit();
+if (test__sig__2__byte__octetstring__big__endian__coded().is_bound()) test__sig__2__byte__octetstring__big__endian__coded().set_implicit_omit();
+}
+
+void CAN__MESSAGE__TESTFRAME3__msg__type::encode_text(Text_Buf& text_buf) const
+{
+field_test__sig__1__byte__octetstring__big__endian__coded.encode_text(text_buf);
+field_test__sig__2__byte__octetstring__big__endian__coded.encode_text(text_buf);
+}
+
+void CAN__MESSAGE__TESTFRAME3__msg__type::decode_text(Text_Buf& text_buf)
+{
+field_test__sig__1__byte__octetstring__big__endian__coded.decode_text(text_buf);
+field_test__sig__2__byte__octetstring__big__endian__coded.decode_text(text_buf);
+}
+
+void CAN__MESSAGE__TESTFRAME3__msg__type::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void CAN__MESSAGE__TESTFRAME3__msg__type::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int CAN__MESSAGE__TESTFRAME3__msg__type::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, CAN__MESSAGE__TESTFRAME3__msg__type_test__sig__1__byte__octetstring__big__endian__coded_descr_.raw->forceomit);
+  decoded_field_length = field_test__sig__1__byte__octetstring__big__endian__coded.RAW_decode(CAN__MESSAGE__TESTFRAME3__msg__type_test__sig__1__byte__octetstring__big__endian__coded_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, CAN__MESSAGE__TESTFRAME3__msg__type_test__sig__2__byte__octetstring__big__endian__coded_descr_.raw->forceomit);
+  decoded_field_length = field_test__sig__2__byte__octetstring__big__endian__coded.RAW_decode(CAN__MESSAGE__TESTFRAME3__msg__type_test__sig__2__byte__octetstring__big__endian__coded_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 CAN__MESSAGE__TESTFRAME3__msg__type::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, CAN__MESSAGE__TESTFRAME3__msg__type_test__sig__1__byte__octetstring__big__endian__coded_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, CAN__MESSAGE__TESTFRAME3__msg__type_test__sig__2__byte__octetstring__big__endian__coded_descr_.raw);
+  encoded_length += field_test__sig__1__byte__octetstring__big__endian__coded.RAW_encode(CAN__MESSAGE__TESTFRAME3__msg__type_test__sig__1__byte__octetstring__big__endian__coded_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_test__sig__2__byte__octetstring__big__endian__coded.RAW_encode(CAN__MESSAGE__TESTFRAME3__msg__type_test__sig__2__byte__octetstring__big__endian__coded_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct CAN__MESSAGE__TESTFRAME3__msg__type_template::single_value_struct {
+OCTETSTRING_template field_test__sig__1__byte__octetstring__big__endian__coded;
+OCTETSTRING_template field_test__sig__2__byte__octetstring__big__endian__coded;
+};
+
+void CAN__MESSAGE__TESTFRAME3__msg__type_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_test__sig__1__byte__octetstring__big__endian__coded = ANY_VALUE;
+single_value->field_test__sig__2__byte__octetstring__big__endian__coded = ANY_VALUE;
+}
+}
+}
+
+void CAN__MESSAGE__TESTFRAME3__msg__type_template::copy_value(const CAN__MESSAGE__TESTFRAME3__msg__type& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.test__sig__1__byte__octetstring__big__endian__coded().is_bound()) {
+  single_value->field_test__sig__1__byte__octetstring__big__endian__coded = other_value.test__sig__1__byte__octetstring__big__endian__coded();
+} else {
+  single_value->field_test__sig__1__byte__octetstring__big__endian__coded.clean_up();
+}
+if (other_value.test__sig__2__byte__octetstring__big__endian__coded().is_bound()) {
+  single_value->field_test__sig__2__byte__octetstring__big__endian__coded = other_value.test__sig__2__byte__octetstring__big__endian__coded();
+} else {
+  single_value->field_test__sig__2__byte__octetstring__big__endian__coded.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void CAN__MESSAGE__TESTFRAME3__msg__type_template::copy_template(const CAN__MESSAGE__TESTFRAME3__msg__type_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.test__sig__1__byte__octetstring__big__endian__coded().get_selection()) {
+single_value->field_test__sig__1__byte__octetstring__big__endian__coded = other_value.test__sig__1__byte__octetstring__big__endian__coded();
+} else {
+single_value->field_test__sig__1__byte__octetstring__big__endian__coded.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.test__sig__2__byte__octetstring__big__endian__coded().get_selection()) {
+single_value->field_test__sig__2__byte__octetstring__big__endian__coded = other_value.test__sig__2__byte__octetstring__big__endian__coded();
+} else {
+single_value->field_test__sig__2__byte__octetstring__big__endian__coded.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new CAN__MESSAGE__TESTFRAME3__msg__type_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME3_msg_type.");
+break;
+}
+set_selection(other_value);
+}
+
+CAN__MESSAGE__TESTFRAME3__msg__type_template::CAN__MESSAGE__TESTFRAME3__msg__type_template()
+{
+}
+
+CAN__MESSAGE__TESTFRAME3__msg__type_template::CAN__MESSAGE__TESTFRAME3__msg__type_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+CAN__MESSAGE__TESTFRAME3__msg__type_template::CAN__MESSAGE__TESTFRAME3__msg__type_template(const CAN__MESSAGE__TESTFRAME3__msg__type& other_value)
+{
+copy_value(other_value);
+}
+
+CAN__MESSAGE__TESTFRAME3__msg__type_template::CAN__MESSAGE__TESTFRAME3__msg__type_template(const OPTIONAL<CAN__MESSAGE__TESTFRAME3__msg__type>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CAN__MESSAGE__TESTFRAME3__msg__type&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME3_msg_type from an unbound optional field.");
+}
+}
+
+CAN__MESSAGE__TESTFRAME3__msg__type_template::CAN__MESSAGE__TESTFRAME3__msg__type_template(const CAN__MESSAGE__TESTFRAME3__msg__type_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+CAN__MESSAGE__TESTFRAME3__msg__type_template::~CAN__MESSAGE__TESTFRAME3__msg__type_template()
+{
+clean_up();
+}
+
+CAN__MESSAGE__TESTFRAME3__msg__type_template& CAN__MESSAGE__TESTFRAME3__msg__type_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+CAN__MESSAGE__TESTFRAME3__msg__type_template& CAN__MESSAGE__TESTFRAME3__msg__type_template::operator=(const CAN__MESSAGE__TESTFRAME3__msg__type& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+CAN__MESSAGE__TESTFRAME3__msg__type_template& CAN__MESSAGE__TESTFRAME3__msg__type_template::operator=(const OPTIONAL<CAN__MESSAGE__TESTFRAME3__msg__type>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CAN__MESSAGE__TESTFRAME3__msg__type&)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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME3_msg_type.");
+}
+return *this;
+}
+
+CAN__MESSAGE__TESTFRAME3__msg__type_template& CAN__MESSAGE__TESTFRAME3__msg__type_template::operator=(const CAN__MESSAGE__TESTFRAME3__msg__type_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean CAN__MESSAGE__TESTFRAME3__msg__type_template::match(const CAN__MESSAGE__TESTFRAME3__msg__type& 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.test__sig__1__byte__octetstring__big__endian__coded().is_bound()) return FALSE;
+if(!single_value->field_test__sig__1__byte__octetstring__big__endian__coded.match(other_value.test__sig__1__byte__octetstring__big__endian__coded(), legacy))return FALSE;
+if(!other_value.test__sig__2__byte__octetstring__big__endian__coded().is_bound()) return FALSE;
+if(!single_value->field_test__sig__2__byte__octetstring__big__endian__coded.match(other_value.test__sig__2__byte__octetstring__big__endian__coded(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME3_msg_type.");
+}
+return FALSE;
+}
+
+boolean CAN__MESSAGE__TESTFRAME3__msg__type_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_test__sig__1__byte__octetstring__big__endian__coded.is_bound()
+
+ ||single_value->field_test__sig__2__byte__octetstring__big__endian__coded.is_bound()
+;
+}
+
+boolean CAN__MESSAGE__TESTFRAME3__msg__type_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_test__sig__1__byte__octetstring__big__endian__coded.is_value()
+ &&single_value->field_test__sig__2__byte__octetstring__big__endian__coded.is_value();
+}
+
+void CAN__MESSAGE__TESTFRAME3__msg__type_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+CAN__MESSAGE__TESTFRAME3__msg__type CAN__MESSAGE__TESTFRAME3__msg__type_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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME3_msg_type.");
+CAN__MESSAGE__TESTFRAME3__msg__type ret_val;
+if (single_value->field_test__sig__1__byte__octetstring__big__endian__coded.is_bound()) {
+ret_val.test__sig__1__byte__octetstring__big__endian__coded() = single_value->field_test__sig__1__byte__octetstring__big__endian__coded.valueof();
+}
+if (single_value->field_test__sig__2__byte__octetstring__big__endian__coded.is_bound()) {
+ret_val.test__sig__2__byte__octetstring__big__endian__coded() = single_value->field_test__sig__2__byte__octetstring__big__endian__coded.valueof();
+}
+return ret_val;
+}
+
+void CAN__MESSAGE__TESTFRAME3__msg__type_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME3_msg_type.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new CAN__MESSAGE__TESTFRAME3__msg__type_template[list_length];
+}
+
+CAN__MESSAGE__TESTFRAME3__msg__type_template& CAN__MESSAGE__TESTFRAME3__msg__type_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME3_msg_type.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME3_msg_type.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& CAN__MESSAGE__TESTFRAME3__msg__type_template::test__sig__1__byte__octetstring__big__endian__coded()
+{
+set_specific();
+return single_value->field_test__sig__1__byte__octetstring__big__endian__coded;
+}
+
+const OCTETSTRING_template& CAN__MESSAGE__TESTFRAME3__msg__type_template::test__sig__1__byte__octetstring__big__endian__coded() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field test_sig_1_byte_octetstring_big_endian_coded of a non-specific template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME3_msg_type.");
+return single_value->field_test__sig__1__byte__octetstring__big__endian__coded;
+}
+
+OCTETSTRING_template& CAN__MESSAGE__TESTFRAME3__msg__type_template::test__sig__2__byte__octetstring__big__endian__coded()
+{
+set_specific();
+return single_value->field_test__sig__2__byte__octetstring__big__endian__coded;
+}
+
+const OCTETSTRING_template& CAN__MESSAGE__TESTFRAME3__msg__type_template::test__sig__2__byte__octetstring__big__endian__coded() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field test_sig_2_byte_octetstring_big_endian_coded of a non-specific template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME3_msg_type.");
+return single_value->field_test__sig__2__byte__octetstring__big__endian__coded;
+}
+
+int CAN__MESSAGE__TESTFRAME3__msg__type_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME3_msg_type 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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME3_msg_type 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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME3_msg_type containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME3_msg_type containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME3_msg_type containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME3_msg_type containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME3_msg_type.");
+  }
+  return 0;
+}
+
+void CAN__MESSAGE__TESTFRAME3__msg__type_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ test_sig_1_byte_octetstring_big_endian_coded := ");
+single_value->field_test__sig__1__byte__octetstring__big__endian__coded.log();
+TTCN_Logger::log_event_str(", test_sig_2_byte_octetstring_big_endian_coded := ");
+single_value->field_test__sig__2__byte__octetstring__big__endian__coded.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void CAN__MESSAGE__TESTFRAME3__msg__type_template::log_match(const CAN__MESSAGE__TESTFRAME3__msg__type& 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_test__sig__1__byte__octetstring__big__endian__coded.match(match_value.test__sig__1__byte__octetstring__big__endian__coded(), legacy)){
+TTCN_Logger::log_logmatch_info(".test_sig_1_byte_octetstring_big_endian_coded");
+single_value->field_test__sig__1__byte__octetstring__big__endian__coded.log_match(match_value.test__sig__1__byte__octetstring__big__endian__coded(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_test__sig__2__byte__octetstring__big__endian__coded.match(match_value.test__sig__2__byte__octetstring__big__endian__coded(), legacy)){
+TTCN_Logger::log_logmatch_info(".test_sig_2_byte_octetstring_big_endian_coded");
+single_value->field_test__sig__2__byte__octetstring__big__endian__coded.log_match(match_value.test__sig__2__byte__octetstring__big__endian__coded(), 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("{ test_sig_1_byte_octetstring_big_endian_coded := ");
+single_value->field_test__sig__1__byte__octetstring__big__endian__coded.log_match(match_value.test__sig__1__byte__octetstring__big__endian__coded(), legacy);
+TTCN_Logger::log_event_str(", test_sig_2_byte_octetstring_big_endian_coded := ");
+single_value->field_test__sig__2__byte__octetstring__big__endian__coded.log_match(match_value.test__sig__2__byte__octetstring__big__endian__coded(), 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 CAN__MESSAGE__TESTFRAME3__msg__type_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_test__sig__1__byte__octetstring__big__endian__coded.encode_text(text_buf);
+single_value->field_test__sig__2__byte__octetstring__big__endian__coded.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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME3_msg_type.");
+}
+}
+
+void CAN__MESSAGE__TESTFRAME3__msg__type_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_test__sig__1__byte__octetstring__big__endian__coded.decode_text(text_buf);
+single_value->field_test__sig__2__byte__octetstring__big__endian__coded.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 CAN__MESSAGE__TESTFRAME3__msg__type_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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME3_msg_type.");
+}
+}
+
+void CAN__MESSAGE__TESTFRAME3__msg__type_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: {
+    CAN__MESSAGE__TESTFRAME3__msg__type_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME3_msg_type 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) test__sig__1__byte__octetstring__big__endian__coded().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) test__sig__2__byte__octetstring__big__endian__coded().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(), "test_sig_1_byte_octetstring_big_endian_coded")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          test__sig__1__byte__octetstring__big__endian__coded().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(), "test_sig_2_byte_octetstring_big_endian_coded")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          test__sig__2__byte__octetstring__big__endian__coded().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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME3_msg_type: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME3_msg_type");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void CAN__MESSAGE__TESTFRAME3__msg__type_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_test__sig__1__byte__octetstring__big__endian__coded.check_restriction(t_res, t_name ? t_name : "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME3_msg_type");
+single_value->field_test__sig__2__byte__octetstring__big__endian__coded.check_restriction(t_res, t_name ? t_name : "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME3_msg_type");
+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 : "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME3_msg_type");
+}
+
+boolean CAN__MESSAGE__TESTFRAME3__msg__type_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean CAN__MESSAGE__TESTFRAME3__msg__type_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+CAN__MESSAGE__TESTFRAME4__msg__type::CAN__MESSAGE__TESTFRAME4__msg__type()
+{
+}
+
+CAN__MESSAGE__TESTFRAME4__msg__type::CAN__MESSAGE__TESTFRAME4__msg__type(const INTEGER& par_test__unsig__9__bit__2__padded__integer__big__endian__coded,
+    const INTEGER& par_test__sig__5__bit__integer__big__endian__coded)
+  :   field_test__unsig__9__bit__2__padded__integer__big__endian__coded(par_test__unsig__9__bit__2__padded__integer__big__endian__coded),
+  field_test__sig__5__bit__integer__big__endian__coded(par_test__sig__5__bit__integer__big__endian__coded)
+{
+}
+
+CAN__MESSAGE__TESTFRAME4__msg__type::CAN__MESSAGE__TESTFRAME4__msg__type(const CAN__MESSAGE__TESTFRAME4__msg__type& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME4_msg_type.");
+if (other_value.test__unsig__9__bit__2__padded__integer__big__endian__coded().is_bound()) field_test__unsig__9__bit__2__padded__integer__big__endian__coded = other_value.test__unsig__9__bit__2__padded__integer__big__endian__coded();
+else field_test__unsig__9__bit__2__padded__integer__big__endian__coded.clean_up();
+if (other_value.test__sig__5__bit__integer__big__endian__coded().is_bound()) field_test__sig__5__bit__integer__big__endian__coded = other_value.test__sig__5__bit__integer__big__endian__coded();
+else field_test__sig__5__bit__integer__big__endian__coded.clean_up();
+}
+
+void CAN__MESSAGE__TESTFRAME4__msg__type::clean_up()
+{
+field_test__unsig__9__bit__2__padded__integer__big__endian__coded.clean_up();
+field_test__sig__5__bit__integer__big__endian__coded.clean_up();
+}
+
+const TTCN_Typedescriptor_t* CAN__MESSAGE__TESTFRAME4__msg__type::get_descriptor() const { return &CAN__MESSAGE__TESTFRAME4__msg__type_descr_; }
+CAN__MESSAGE__TESTFRAME4__msg__type& CAN__MESSAGE__TESTFRAME4__msg__type::operator=(const CAN__MESSAGE__TESTFRAME4__msg__type& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME4_msg_type.");
+  if (other_value.test__unsig__9__bit__2__padded__integer__big__endian__coded().is_bound()) field_test__unsig__9__bit__2__padded__integer__big__endian__coded = other_value.test__unsig__9__bit__2__padded__integer__big__endian__coded();
+  else field_test__unsig__9__bit__2__padded__integer__big__endian__coded.clean_up();
+  if (other_value.test__sig__5__bit__integer__big__endian__coded().is_bound()) field_test__sig__5__bit__integer__big__endian__coded = other_value.test__sig__5__bit__integer__big__endian__coded();
+  else field_test__sig__5__bit__integer__big__endian__coded.clean_up();
+}
+return *this;
+}
+
+boolean CAN__MESSAGE__TESTFRAME4__msg__type::operator==(const CAN__MESSAGE__TESTFRAME4__msg__type& other_value) const
+{
+return field_test__unsig__9__bit__2__padded__integer__big__endian__coded==other_value.field_test__unsig__9__bit__2__padded__integer__big__endian__coded
+  && field_test__sig__5__bit__integer__big__endian__coded==other_value.field_test__sig__5__bit__integer__big__endian__coded;
+}
+
+boolean CAN__MESSAGE__TESTFRAME4__msg__type::is_bound() const
+{
+return (field_test__unsig__9__bit__2__padded__integer__big__endian__coded.is_bound())
+  || (field_test__sig__5__bit__integer__big__endian__coded.is_bound());
+}
+boolean CAN__MESSAGE__TESTFRAME4__msg__type::is_value() const
+{
+return field_test__unsig__9__bit__2__padded__integer__big__endian__coded.is_value()
+  && field_test__sig__5__bit__integer__big__endian__coded.is_value();
+}
+void CAN__MESSAGE__TESTFRAME4__msg__type::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ test_unsig_9_bit_2_padded_integer_big_endian_coded := ");
+field_test__unsig__9__bit__2__padded__integer__big__endian__coded.log();
+TTCN_Logger::log_event_str(", test_sig_5_bit_integer_big_endian_coded := ");
+field_test__sig__5__bit__integer__big__endian__coded.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void CAN__MESSAGE__TESTFRAME4__msg__type::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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME4_msg_type 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) test__unsig__9__bit__2__padded__integer__big__endian__coded().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) test__sig__5__bit__integer__big__endian__coded().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(), "test_unsig_9_bit_2_padded_integer_big_endian_coded")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          test__unsig__9__bit__2__padded__integer__big__endian__coded().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(), "test_sig_5_bit_integer_big_endian_coded")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          test__sig__5__bit__integer__big__endian__coded().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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME4_msg_type: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME4_msg_type");
+  }
+}
+
+void CAN__MESSAGE__TESTFRAME4__msg__type::set_implicit_omit()
+{
+if (test__unsig__9__bit__2__padded__integer__big__endian__coded().is_bound()) test__unsig__9__bit__2__padded__integer__big__endian__coded().set_implicit_omit();
+if (test__sig__5__bit__integer__big__endian__coded().is_bound()) test__sig__5__bit__integer__big__endian__coded().set_implicit_omit();
+}
+
+void CAN__MESSAGE__TESTFRAME4__msg__type::encode_text(Text_Buf& text_buf) const
+{
+field_test__unsig__9__bit__2__padded__integer__big__endian__coded.encode_text(text_buf);
+field_test__sig__5__bit__integer__big__endian__coded.encode_text(text_buf);
+}
+
+void CAN__MESSAGE__TESTFRAME4__msg__type::decode_text(Text_Buf& text_buf)
+{
+field_test__unsig__9__bit__2__padded__integer__big__endian__coded.decode_text(text_buf);
+field_test__sig__5__bit__integer__big__endian__coded.decode_text(text_buf);
+}
+
+void CAN__MESSAGE__TESTFRAME4__msg__type::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void CAN__MESSAGE__TESTFRAME4__msg__type::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int CAN__MESSAGE__TESTFRAME4__msg__type::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, CAN__MESSAGE__TESTFRAME4__msg__type_test__unsig__9__bit__2__padded__integer__big__endian__coded_descr_.raw->forceomit);
+  decoded_field_length = field_test__unsig__9__bit__2__padded__integer__big__endian__coded.RAW_decode(CAN__MESSAGE__TESTFRAME4__msg__type_test__unsig__9__bit__2__padded__integer__big__endian__coded_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, CAN__MESSAGE__TESTFRAME4__msg__type_test__sig__5__bit__integer__big__endian__coded_descr_.raw->forceomit);
+  decoded_field_length = field_test__sig__5__bit__integer__big__endian__coded.RAW_decode(CAN__MESSAGE__TESTFRAME4__msg__type_test__sig__5__bit__integer__big__endian__coded_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 CAN__MESSAGE__TESTFRAME4__msg__type::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, CAN__MESSAGE__TESTFRAME4__msg__type_test__unsig__9__bit__2__padded__integer__big__endian__coded_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, CAN__MESSAGE__TESTFRAME4__msg__type_test__sig__5__bit__integer__big__endian__coded_descr_.raw);
+  encoded_length += field_test__unsig__9__bit__2__padded__integer__big__endian__coded.RAW_encode(CAN__MESSAGE__TESTFRAME4__msg__type_test__unsig__9__bit__2__padded__integer__big__endian__coded_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_test__sig__5__bit__integer__big__endian__coded.RAW_encode(CAN__MESSAGE__TESTFRAME4__msg__type_test__sig__5__bit__integer__big__endian__coded_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct CAN__MESSAGE__TESTFRAME4__msg__type_template::single_value_struct {
+INTEGER_template field_test__unsig__9__bit__2__padded__integer__big__endian__coded;
+INTEGER_template field_test__sig__5__bit__integer__big__endian__coded;
+};
+
+void CAN__MESSAGE__TESTFRAME4__msg__type_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_test__unsig__9__bit__2__padded__integer__big__endian__coded = ANY_VALUE;
+single_value->field_test__sig__5__bit__integer__big__endian__coded = ANY_VALUE;
+}
+}
+}
+
+void CAN__MESSAGE__TESTFRAME4__msg__type_template::copy_value(const CAN__MESSAGE__TESTFRAME4__msg__type& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.test__unsig__9__bit__2__padded__integer__big__endian__coded().is_bound()) {
+  single_value->field_test__unsig__9__bit__2__padded__integer__big__endian__coded = other_value.test__unsig__9__bit__2__padded__integer__big__endian__coded();
+} else {
+  single_value->field_test__unsig__9__bit__2__padded__integer__big__endian__coded.clean_up();
+}
+if (other_value.test__sig__5__bit__integer__big__endian__coded().is_bound()) {
+  single_value->field_test__sig__5__bit__integer__big__endian__coded = other_value.test__sig__5__bit__integer__big__endian__coded();
+} else {
+  single_value->field_test__sig__5__bit__integer__big__endian__coded.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void CAN__MESSAGE__TESTFRAME4__msg__type_template::copy_template(const CAN__MESSAGE__TESTFRAME4__msg__type_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.test__unsig__9__bit__2__padded__integer__big__endian__coded().get_selection()) {
+single_value->field_test__unsig__9__bit__2__padded__integer__big__endian__coded = other_value.test__unsig__9__bit__2__padded__integer__big__endian__coded();
+} else {
+single_value->field_test__unsig__9__bit__2__padded__integer__big__endian__coded.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.test__sig__5__bit__integer__big__endian__coded().get_selection()) {
+single_value->field_test__sig__5__bit__integer__big__endian__coded = other_value.test__sig__5__bit__integer__big__endian__coded();
+} else {
+single_value->field_test__sig__5__bit__integer__big__endian__coded.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new CAN__MESSAGE__TESTFRAME4__msg__type_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME4_msg_type.");
+break;
+}
+set_selection(other_value);
+}
+
+CAN__MESSAGE__TESTFRAME4__msg__type_template::CAN__MESSAGE__TESTFRAME4__msg__type_template()
+{
+}
+
+CAN__MESSAGE__TESTFRAME4__msg__type_template::CAN__MESSAGE__TESTFRAME4__msg__type_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+CAN__MESSAGE__TESTFRAME4__msg__type_template::CAN__MESSAGE__TESTFRAME4__msg__type_template(const CAN__MESSAGE__TESTFRAME4__msg__type& other_value)
+{
+copy_value(other_value);
+}
+
+CAN__MESSAGE__TESTFRAME4__msg__type_template::CAN__MESSAGE__TESTFRAME4__msg__type_template(const OPTIONAL<CAN__MESSAGE__TESTFRAME4__msg__type>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CAN__MESSAGE__TESTFRAME4__msg__type&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME4_msg_type from an unbound optional field.");
+}
+}
+
+CAN__MESSAGE__TESTFRAME4__msg__type_template::CAN__MESSAGE__TESTFRAME4__msg__type_template(const CAN__MESSAGE__TESTFRAME4__msg__type_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+CAN__MESSAGE__TESTFRAME4__msg__type_template::~CAN__MESSAGE__TESTFRAME4__msg__type_template()
+{
+clean_up();
+}
+
+CAN__MESSAGE__TESTFRAME4__msg__type_template& CAN__MESSAGE__TESTFRAME4__msg__type_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+CAN__MESSAGE__TESTFRAME4__msg__type_template& CAN__MESSAGE__TESTFRAME4__msg__type_template::operator=(const CAN__MESSAGE__TESTFRAME4__msg__type& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+CAN__MESSAGE__TESTFRAME4__msg__type_template& CAN__MESSAGE__TESTFRAME4__msg__type_template::operator=(const OPTIONAL<CAN__MESSAGE__TESTFRAME4__msg__type>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CAN__MESSAGE__TESTFRAME4__msg__type&)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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME4_msg_type.");
+}
+return *this;
+}
+
+CAN__MESSAGE__TESTFRAME4__msg__type_template& CAN__MESSAGE__TESTFRAME4__msg__type_template::operator=(const CAN__MESSAGE__TESTFRAME4__msg__type_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean CAN__MESSAGE__TESTFRAME4__msg__type_template::match(const CAN__MESSAGE__TESTFRAME4__msg__type& 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.test__unsig__9__bit__2__padded__integer__big__endian__coded().is_bound()) return FALSE;
+if(!single_value->field_test__unsig__9__bit__2__padded__integer__big__endian__coded.match(other_value.test__unsig__9__bit__2__padded__integer__big__endian__coded(), legacy))return FALSE;
+if(!other_value.test__sig__5__bit__integer__big__endian__coded().is_bound()) return FALSE;
+if(!single_value->field_test__sig__5__bit__integer__big__endian__coded.match(other_value.test__sig__5__bit__integer__big__endian__coded(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME4_msg_type.");
+}
+return FALSE;
+}
+
+boolean CAN__MESSAGE__TESTFRAME4__msg__type_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_test__unsig__9__bit__2__padded__integer__big__endian__coded.is_bound()
+
+ ||single_value->field_test__sig__5__bit__integer__big__endian__coded.is_bound()
+;
+}
+
+boolean CAN__MESSAGE__TESTFRAME4__msg__type_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_test__unsig__9__bit__2__padded__integer__big__endian__coded.is_value()
+ &&single_value->field_test__sig__5__bit__integer__big__endian__coded.is_value();
+}
+
+void CAN__MESSAGE__TESTFRAME4__msg__type_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+CAN__MESSAGE__TESTFRAME4__msg__type CAN__MESSAGE__TESTFRAME4__msg__type_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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME4_msg_type.");
+CAN__MESSAGE__TESTFRAME4__msg__type ret_val;
+if (single_value->field_test__unsig__9__bit__2__padded__integer__big__endian__coded.is_bound()) {
+ret_val.test__unsig__9__bit__2__padded__integer__big__endian__coded() = single_value->field_test__unsig__9__bit__2__padded__integer__big__endian__coded.valueof();
+}
+if (single_value->field_test__sig__5__bit__integer__big__endian__coded.is_bound()) {
+ret_val.test__sig__5__bit__integer__big__endian__coded() = single_value->field_test__sig__5__bit__integer__big__endian__coded.valueof();
+}
+return ret_val;
+}
+
+void CAN__MESSAGE__TESTFRAME4__msg__type_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME4_msg_type.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new CAN__MESSAGE__TESTFRAME4__msg__type_template[list_length];
+}
+
+CAN__MESSAGE__TESTFRAME4__msg__type_template& CAN__MESSAGE__TESTFRAME4__msg__type_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME4_msg_type.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME4_msg_type.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& CAN__MESSAGE__TESTFRAME4__msg__type_template::test__unsig__9__bit__2__padded__integer__big__endian__coded()
+{
+set_specific();
+return single_value->field_test__unsig__9__bit__2__padded__integer__big__endian__coded;
+}
+
+const INTEGER_template& CAN__MESSAGE__TESTFRAME4__msg__type_template::test__unsig__9__bit__2__padded__integer__big__endian__coded() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field test_unsig_9_bit_2_padded_integer_big_endian_coded of a non-specific template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME4_msg_type.");
+return single_value->field_test__unsig__9__bit__2__padded__integer__big__endian__coded;
+}
+
+INTEGER_template& CAN__MESSAGE__TESTFRAME4__msg__type_template::test__sig__5__bit__integer__big__endian__coded()
+{
+set_specific();
+return single_value->field_test__sig__5__bit__integer__big__endian__coded;
+}
+
+const INTEGER_template& CAN__MESSAGE__TESTFRAME4__msg__type_template::test__sig__5__bit__integer__big__endian__coded() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field test_sig_5_bit_integer_big_endian_coded of a non-specific template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME4_msg_type.");
+return single_value->field_test__sig__5__bit__integer__big__endian__coded;
+}
+
+int CAN__MESSAGE__TESTFRAME4__msg__type_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME4_msg_type 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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME4_msg_type 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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME4_msg_type containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME4_msg_type containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME4_msg_type containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME4_msg_type containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME4_msg_type.");
+  }
+  return 0;
+}
+
+void CAN__MESSAGE__TESTFRAME4__msg__type_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ test_unsig_9_bit_2_padded_integer_big_endian_coded := ");
+single_value->field_test__unsig__9__bit__2__padded__integer__big__endian__coded.log();
+TTCN_Logger::log_event_str(", test_sig_5_bit_integer_big_endian_coded := ");
+single_value->field_test__sig__5__bit__integer__big__endian__coded.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void CAN__MESSAGE__TESTFRAME4__msg__type_template::log_match(const CAN__MESSAGE__TESTFRAME4__msg__type& 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_test__unsig__9__bit__2__padded__integer__big__endian__coded.match(match_value.test__unsig__9__bit__2__padded__integer__big__endian__coded(), legacy)){
+TTCN_Logger::log_logmatch_info(".test_unsig_9_bit_2_padded_integer_big_endian_coded");
+single_value->field_test__unsig__9__bit__2__padded__integer__big__endian__coded.log_match(match_value.test__unsig__9__bit__2__padded__integer__big__endian__coded(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_test__sig__5__bit__integer__big__endian__coded.match(match_value.test__sig__5__bit__integer__big__endian__coded(), legacy)){
+TTCN_Logger::log_logmatch_info(".test_sig_5_bit_integer_big_endian_coded");
+single_value->field_test__sig__5__bit__integer__big__endian__coded.log_match(match_value.test__sig__5__bit__integer__big__endian__coded(), 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("{ test_unsig_9_bit_2_padded_integer_big_endian_coded := ");
+single_value->field_test__unsig__9__bit__2__padded__integer__big__endian__coded.log_match(match_value.test__unsig__9__bit__2__padded__integer__big__endian__coded(), legacy);
+TTCN_Logger::log_event_str(", test_sig_5_bit_integer_big_endian_coded := ");
+single_value->field_test__sig__5__bit__integer__big__endian__coded.log_match(match_value.test__sig__5__bit__integer__big__endian__coded(), 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 CAN__MESSAGE__TESTFRAME4__msg__type_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_test__unsig__9__bit__2__padded__integer__big__endian__coded.encode_text(text_buf);
+single_value->field_test__sig__5__bit__integer__big__endian__coded.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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME4_msg_type.");
+}
+}
+
+void CAN__MESSAGE__TESTFRAME4__msg__type_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_test__unsig__9__bit__2__padded__integer__big__endian__coded.decode_text(text_buf);
+single_value->field_test__sig__5__bit__integer__big__endian__coded.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 CAN__MESSAGE__TESTFRAME4__msg__type_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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME4_msg_type.");
+}
+}
+
+void CAN__MESSAGE__TESTFRAME4__msg__type_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: {
+    CAN__MESSAGE__TESTFRAME4__msg__type_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME4_msg_type 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) test__unsig__9__bit__2__padded__integer__big__endian__coded().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) test__sig__5__bit__integer__big__endian__coded().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(), "test_unsig_9_bit_2_padded_integer_big_endian_coded")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          test__unsig__9__bit__2__padded__integer__big__endian__coded().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(), "test_sig_5_bit_integer_big_endian_coded")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          test__sig__5__bit__integer__big__endian__coded().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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME4_msg_type: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME4_msg_type");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void CAN__MESSAGE__TESTFRAME4__msg__type_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_test__unsig__9__bit__2__padded__integer__big__endian__coded.check_restriction(t_res, t_name ? t_name : "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME4_msg_type");
+single_value->field_test__sig__5__bit__integer__big__endian__coded.check_restriction(t_res, t_name ? t_name : "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME4_msg_type");
+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 : "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME4_msg_type");
+}
+
+boolean CAN__MESSAGE__TESTFRAME4__msg__type_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean CAN__MESSAGE__TESTFRAME4__msg__type_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+CAN__MESSAGE__TESTFRAME5__msg__type::CAN__MESSAGE__TESTFRAME5__msg__type()
+{
+}
+
+CAN__MESSAGE__TESTFRAME5__msg__type::CAN__MESSAGE__TESTFRAME5__msg__type(const INTEGER& par_test__unsig__9__bit__2__padded__integer__big__endian__coded,
+    const INTEGER& par_test__sig__5__bit__integer__big__endian__coded)
+  :   field_test__unsig__9__bit__2__padded__integer__big__endian__coded(par_test__unsig__9__bit__2__padded__integer__big__endian__coded),
+  field_test__sig__5__bit__integer__big__endian__coded(par_test__sig__5__bit__integer__big__endian__coded)
+{
+}
+
+CAN__MESSAGE__TESTFRAME5__msg__type::CAN__MESSAGE__TESTFRAME5__msg__type(const CAN__MESSAGE__TESTFRAME5__msg__type& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME5_msg_type.");
+if (other_value.test__unsig__9__bit__2__padded__integer__big__endian__coded().is_bound()) field_test__unsig__9__bit__2__padded__integer__big__endian__coded = other_value.test__unsig__9__bit__2__padded__integer__big__endian__coded();
+else field_test__unsig__9__bit__2__padded__integer__big__endian__coded.clean_up();
+if (other_value.test__sig__5__bit__integer__big__endian__coded().is_bound()) field_test__sig__5__bit__integer__big__endian__coded = other_value.test__sig__5__bit__integer__big__endian__coded();
+else field_test__sig__5__bit__integer__big__endian__coded.clean_up();
+}
+
+void CAN__MESSAGE__TESTFRAME5__msg__type::clean_up()
+{
+field_test__unsig__9__bit__2__padded__integer__big__endian__coded.clean_up();
+field_test__sig__5__bit__integer__big__endian__coded.clean_up();
+}
+
+const TTCN_Typedescriptor_t* CAN__MESSAGE__TESTFRAME5__msg__type::get_descriptor() const { return &CAN__MESSAGE__TESTFRAME5__msg__type_descr_; }
+CAN__MESSAGE__TESTFRAME5__msg__type& CAN__MESSAGE__TESTFRAME5__msg__type::operator=(const CAN__MESSAGE__TESTFRAME5__msg__type& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME5_msg_type.");
+  if (other_value.test__unsig__9__bit__2__padded__integer__big__endian__coded().is_bound()) field_test__unsig__9__bit__2__padded__integer__big__endian__coded = other_value.test__unsig__9__bit__2__padded__integer__big__endian__coded();
+  else field_test__unsig__9__bit__2__padded__integer__big__endian__coded.clean_up();
+  if (other_value.test__sig__5__bit__integer__big__endian__coded().is_bound()) field_test__sig__5__bit__integer__big__endian__coded = other_value.test__sig__5__bit__integer__big__endian__coded();
+  else field_test__sig__5__bit__integer__big__endian__coded.clean_up();
+}
+return *this;
+}
+
+boolean CAN__MESSAGE__TESTFRAME5__msg__type::operator==(const CAN__MESSAGE__TESTFRAME5__msg__type& other_value) const
+{
+return field_test__unsig__9__bit__2__padded__integer__big__endian__coded==other_value.field_test__unsig__9__bit__2__padded__integer__big__endian__coded
+  && field_test__sig__5__bit__integer__big__endian__coded==other_value.field_test__sig__5__bit__integer__big__endian__coded;
+}
+
+boolean CAN__MESSAGE__TESTFRAME5__msg__type::is_bound() const
+{
+return (field_test__unsig__9__bit__2__padded__integer__big__endian__coded.is_bound())
+  || (field_test__sig__5__bit__integer__big__endian__coded.is_bound());
+}
+boolean CAN__MESSAGE__TESTFRAME5__msg__type::is_value() const
+{
+return field_test__unsig__9__bit__2__padded__integer__big__endian__coded.is_value()
+  && field_test__sig__5__bit__integer__big__endian__coded.is_value();
+}
+void CAN__MESSAGE__TESTFRAME5__msg__type::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ test_unsig_9_bit_2_padded_integer_big_endian_coded := ");
+field_test__unsig__9__bit__2__padded__integer__big__endian__coded.log();
+TTCN_Logger::log_event_str(", test_sig_5_bit_integer_big_endian_coded := ");
+field_test__sig__5__bit__integer__big__endian__coded.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void CAN__MESSAGE__TESTFRAME5__msg__type::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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME5_msg_type 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) test__unsig__9__bit__2__padded__integer__big__endian__coded().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) test__sig__5__bit__integer__big__endian__coded().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(), "test_unsig_9_bit_2_padded_integer_big_endian_coded")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          test__unsig__9__bit__2__padded__integer__big__endian__coded().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(), "test_sig_5_bit_integer_big_endian_coded")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          test__sig__5__bit__integer__big__endian__coded().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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME5_msg_type: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME5_msg_type");
+  }
+}
+
+void CAN__MESSAGE__TESTFRAME5__msg__type::set_implicit_omit()
+{
+if (test__unsig__9__bit__2__padded__integer__big__endian__coded().is_bound()) test__unsig__9__bit__2__padded__integer__big__endian__coded().set_implicit_omit();
+if (test__sig__5__bit__integer__big__endian__coded().is_bound()) test__sig__5__bit__integer__big__endian__coded().set_implicit_omit();
+}
+
+void CAN__MESSAGE__TESTFRAME5__msg__type::encode_text(Text_Buf& text_buf) const
+{
+field_test__unsig__9__bit__2__padded__integer__big__endian__coded.encode_text(text_buf);
+field_test__sig__5__bit__integer__big__endian__coded.encode_text(text_buf);
+}
+
+void CAN__MESSAGE__TESTFRAME5__msg__type::decode_text(Text_Buf& text_buf)
+{
+field_test__unsig__9__bit__2__padded__integer__big__endian__coded.decode_text(text_buf);
+field_test__sig__5__bit__integer__big__endian__coded.decode_text(text_buf);
+}
+
+void CAN__MESSAGE__TESTFRAME5__msg__type::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void CAN__MESSAGE__TESTFRAME5__msg__type::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int CAN__MESSAGE__TESTFRAME5__msg__type::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, CAN__MESSAGE__TESTFRAME5__msg__type_test__unsig__9__bit__2__padded__integer__big__endian__coded_descr_.raw->forceomit);
+  decoded_field_length = field_test__unsig__9__bit__2__padded__integer__big__endian__coded.RAW_decode(CAN__MESSAGE__TESTFRAME5__msg__type_test__unsig__9__bit__2__padded__integer__big__endian__coded_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, CAN__MESSAGE__TESTFRAME5__msg__type_test__sig__5__bit__integer__big__endian__coded_descr_.raw->forceomit);
+  decoded_field_length = field_test__sig__5__bit__integer__big__endian__coded.RAW_decode(CAN__MESSAGE__TESTFRAME5__msg__type_test__sig__5__bit__integer__big__endian__coded_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 CAN__MESSAGE__TESTFRAME5__msg__type::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, CAN__MESSAGE__TESTFRAME5__msg__type_test__unsig__9__bit__2__padded__integer__big__endian__coded_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, CAN__MESSAGE__TESTFRAME5__msg__type_test__sig__5__bit__integer__big__endian__coded_descr_.raw);
+  encoded_length += field_test__unsig__9__bit__2__padded__integer__big__endian__coded.RAW_encode(CAN__MESSAGE__TESTFRAME5__msg__type_test__unsig__9__bit__2__padded__integer__big__endian__coded_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_test__sig__5__bit__integer__big__endian__coded.RAW_encode(CAN__MESSAGE__TESTFRAME5__msg__type_test__sig__5__bit__integer__big__endian__coded_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct CAN__MESSAGE__TESTFRAME5__msg__type_template::single_value_struct {
+INTEGER_template field_test__unsig__9__bit__2__padded__integer__big__endian__coded;
+INTEGER_template field_test__sig__5__bit__integer__big__endian__coded;
+};
+
+void CAN__MESSAGE__TESTFRAME5__msg__type_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_test__unsig__9__bit__2__padded__integer__big__endian__coded = ANY_VALUE;
+single_value->field_test__sig__5__bit__integer__big__endian__coded = ANY_VALUE;
+}
+}
+}
+
+void CAN__MESSAGE__TESTFRAME5__msg__type_template::copy_value(const CAN__MESSAGE__TESTFRAME5__msg__type& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.test__unsig__9__bit__2__padded__integer__big__endian__coded().is_bound()) {
+  single_value->field_test__unsig__9__bit__2__padded__integer__big__endian__coded = other_value.test__unsig__9__bit__2__padded__integer__big__endian__coded();
+} else {
+  single_value->field_test__unsig__9__bit__2__padded__integer__big__endian__coded.clean_up();
+}
+if (other_value.test__sig__5__bit__integer__big__endian__coded().is_bound()) {
+  single_value->field_test__sig__5__bit__integer__big__endian__coded = other_value.test__sig__5__bit__integer__big__endian__coded();
+} else {
+  single_value->field_test__sig__5__bit__integer__big__endian__coded.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void CAN__MESSAGE__TESTFRAME5__msg__type_template::copy_template(const CAN__MESSAGE__TESTFRAME5__msg__type_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.test__unsig__9__bit__2__padded__integer__big__endian__coded().get_selection()) {
+single_value->field_test__unsig__9__bit__2__padded__integer__big__endian__coded = other_value.test__unsig__9__bit__2__padded__integer__big__endian__coded();
+} else {
+single_value->field_test__unsig__9__bit__2__padded__integer__big__endian__coded.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.test__sig__5__bit__integer__big__endian__coded().get_selection()) {
+single_value->field_test__sig__5__bit__integer__big__endian__coded = other_value.test__sig__5__bit__integer__big__endian__coded();
+} else {
+single_value->field_test__sig__5__bit__integer__big__endian__coded.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new CAN__MESSAGE__TESTFRAME5__msg__type_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME5_msg_type.");
+break;
+}
+set_selection(other_value);
+}
+
+CAN__MESSAGE__TESTFRAME5__msg__type_template::CAN__MESSAGE__TESTFRAME5__msg__type_template()
+{
+}
+
+CAN__MESSAGE__TESTFRAME5__msg__type_template::CAN__MESSAGE__TESTFRAME5__msg__type_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+CAN__MESSAGE__TESTFRAME5__msg__type_template::CAN__MESSAGE__TESTFRAME5__msg__type_template(const CAN__MESSAGE__TESTFRAME5__msg__type& other_value)
+{
+copy_value(other_value);
+}
+
+CAN__MESSAGE__TESTFRAME5__msg__type_template::CAN__MESSAGE__TESTFRAME5__msg__type_template(const OPTIONAL<CAN__MESSAGE__TESTFRAME5__msg__type>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CAN__MESSAGE__TESTFRAME5__msg__type&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME5_msg_type from an unbound optional field.");
+}
+}
+
+CAN__MESSAGE__TESTFRAME5__msg__type_template::CAN__MESSAGE__TESTFRAME5__msg__type_template(const CAN__MESSAGE__TESTFRAME5__msg__type_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+CAN__MESSAGE__TESTFRAME5__msg__type_template::~CAN__MESSAGE__TESTFRAME5__msg__type_template()
+{
+clean_up();
+}
+
+CAN__MESSAGE__TESTFRAME5__msg__type_template& CAN__MESSAGE__TESTFRAME5__msg__type_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+CAN__MESSAGE__TESTFRAME5__msg__type_template& CAN__MESSAGE__TESTFRAME5__msg__type_template::operator=(const CAN__MESSAGE__TESTFRAME5__msg__type& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+CAN__MESSAGE__TESTFRAME5__msg__type_template& CAN__MESSAGE__TESTFRAME5__msg__type_template::operator=(const OPTIONAL<CAN__MESSAGE__TESTFRAME5__msg__type>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CAN__MESSAGE__TESTFRAME5__msg__type&)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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME5_msg_type.");
+}
+return *this;
+}
+
+CAN__MESSAGE__TESTFRAME5__msg__type_template& CAN__MESSAGE__TESTFRAME5__msg__type_template::operator=(const CAN__MESSAGE__TESTFRAME5__msg__type_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean CAN__MESSAGE__TESTFRAME5__msg__type_template::match(const CAN__MESSAGE__TESTFRAME5__msg__type& 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.test__unsig__9__bit__2__padded__integer__big__endian__coded().is_bound()) return FALSE;
+if(!single_value->field_test__unsig__9__bit__2__padded__integer__big__endian__coded.match(other_value.test__unsig__9__bit__2__padded__integer__big__endian__coded(), legacy))return FALSE;
+if(!other_value.test__sig__5__bit__integer__big__endian__coded().is_bound()) return FALSE;
+if(!single_value->field_test__sig__5__bit__integer__big__endian__coded.match(other_value.test__sig__5__bit__integer__big__endian__coded(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME5_msg_type.");
+}
+return FALSE;
+}
+
+boolean CAN__MESSAGE__TESTFRAME5__msg__type_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_test__unsig__9__bit__2__padded__integer__big__endian__coded.is_bound()
+
+ ||single_value->field_test__sig__5__bit__integer__big__endian__coded.is_bound()
+;
+}
+
+boolean CAN__MESSAGE__TESTFRAME5__msg__type_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_test__unsig__9__bit__2__padded__integer__big__endian__coded.is_value()
+ &&single_value->field_test__sig__5__bit__integer__big__endian__coded.is_value();
+}
+
+void CAN__MESSAGE__TESTFRAME5__msg__type_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+CAN__MESSAGE__TESTFRAME5__msg__type CAN__MESSAGE__TESTFRAME5__msg__type_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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME5_msg_type.");
+CAN__MESSAGE__TESTFRAME5__msg__type ret_val;
+if (single_value->field_test__unsig__9__bit__2__padded__integer__big__endian__coded.is_bound()) {
+ret_val.test__unsig__9__bit__2__padded__integer__big__endian__coded() = single_value->field_test__unsig__9__bit__2__padded__integer__big__endian__coded.valueof();
+}
+if (single_value->field_test__sig__5__bit__integer__big__endian__coded.is_bound()) {
+ret_val.test__sig__5__bit__integer__big__endian__coded() = single_value->field_test__sig__5__bit__integer__big__endian__coded.valueof();
+}
+return ret_val;
+}
+
+void CAN__MESSAGE__TESTFRAME5__msg__type_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME5_msg_type.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new CAN__MESSAGE__TESTFRAME5__msg__type_template[list_length];
+}
+
+CAN__MESSAGE__TESTFRAME5__msg__type_template& CAN__MESSAGE__TESTFRAME5__msg__type_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME5_msg_type.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME5_msg_type.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& CAN__MESSAGE__TESTFRAME5__msg__type_template::test__unsig__9__bit__2__padded__integer__big__endian__coded()
+{
+set_specific();
+return single_value->field_test__unsig__9__bit__2__padded__integer__big__endian__coded;
+}
+
+const INTEGER_template& CAN__MESSAGE__TESTFRAME5__msg__type_template::test__unsig__9__bit__2__padded__integer__big__endian__coded() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field test_unsig_9_bit_2_padded_integer_big_endian_coded of a non-specific template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME5_msg_type.");
+return single_value->field_test__unsig__9__bit__2__padded__integer__big__endian__coded;
+}
+
+INTEGER_template& CAN__MESSAGE__TESTFRAME5__msg__type_template::test__sig__5__bit__integer__big__endian__coded()
+{
+set_specific();
+return single_value->field_test__sig__5__bit__integer__big__endian__coded;
+}
+
+const INTEGER_template& CAN__MESSAGE__TESTFRAME5__msg__type_template::test__sig__5__bit__integer__big__endian__coded() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field test_sig_5_bit_integer_big_endian_coded of a non-specific template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME5_msg_type.");
+return single_value->field_test__sig__5__bit__integer__big__endian__coded;
+}
+
+int CAN__MESSAGE__TESTFRAME5__msg__type_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME5_msg_type 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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME5_msg_type 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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME5_msg_type containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME5_msg_type containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME5_msg_type containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME5_msg_type containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME5_msg_type.");
+  }
+  return 0;
+}
+
+void CAN__MESSAGE__TESTFRAME5__msg__type_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ test_unsig_9_bit_2_padded_integer_big_endian_coded := ");
+single_value->field_test__unsig__9__bit__2__padded__integer__big__endian__coded.log();
+TTCN_Logger::log_event_str(", test_sig_5_bit_integer_big_endian_coded := ");
+single_value->field_test__sig__5__bit__integer__big__endian__coded.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void CAN__MESSAGE__TESTFRAME5__msg__type_template::log_match(const CAN__MESSAGE__TESTFRAME5__msg__type& 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_test__unsig__9__bit__2__padded__integer__big__endian__coded.match(match_value.test__unsig__9__bit__2__padded__integer__big__endian__coded(), legacy)){
+TTCN_Logger::log_logmatch_info(".test_unsig_9_bit_2_padded_integer_big_endian_coded");
+single_value->field_test__unsig__9__bit__2__padded__integer__big__endian__coded.log_match(match_value.test__unsig__9__bit__2__padded__integer__big__endian__coded(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_test__sig__5__bit__integer__big__endian__coded.match(match_value.test__sig__5__bit__integer__big__endian__coded(), legacy)){
+TTCN_Logger::log_logmatch_info(".test_sig_5_bit_integer_big_endian_coded");
+single_value->field_test__sig__5__bit__integer__big__endian__coded.log_match(match_value.test__sig__5__bit__integer__big__endian__coded(), 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("{ test_unsig_9_bit_2_padded_integer_big_endian_coded := ");
+single_value->field_test__unsig__9__bit__2__padded__integer__big__endian__coded.log_match(match_value.test__unsig__9__bit__2__padded__integer__big__endian__coded(), legacy);
+TTCN_Logger::log_event_str(", test_sig_5_bit_integer_big_endian_coded := ");
+single_value->field_test__sig__5__bit__integer__big__endian__coded.log_match(match_value.test__sig__5__bit__integer__big__endian__coded(), 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 CAN__MESSAGE__TESTFRAME5__msg__type_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_test__unsig__9__bit__2__padded__integer__big__endian__coded.encode_text(text_buf);
+single_value->field_test__sig__5__bit__integer__big__endian__coded.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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME5_msg_type.");
+}
+}
+
+void CAN__MESSAGE__TESTFRAME5__msg__type_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_test__unsig__9__bit__2__padded__integer__big__endian__coded.decode_text(text_buf);
+single_value->field_test__sig__5__bit__integer__big__endian__coded.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 CAN__MESSAGE__TESTFRAME5__msg__type_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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME5_msg_type.");
+}
+}
+
+void CAN__MESSAGE__TESTFRAME5__msg__type_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: {
+    CAN__MESSAGE__TESTFRAME5__msg__type_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME5_msg_type 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) test__unsig__9__bit__2__padded__integer__big__endian__coded().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) test__sig__5__bit__integer__big__endian__coded().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(), "test_unsig_9_bit_2_padded_integer_big_endian_coded")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          test__unsig__9__bit__2__padded__integer__big__endian__coded().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(), "test_sig_5_bit_integer_big_endian_coded")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          test__sig__5__bit__integer__big__endian__coded().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 @CAN_matrix_messages.CAN_MESSAGE_TESTFRAME5_msg_type: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME5_msg_type");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void CAN__MESSAGE__TESTFRAME5__msg__type_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_test__unsig__9__bit__2__padded__integer__big__endian__coded.check_restriction(t_res, t_name ? t_name : "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME5_msg_type");
+single_value->field_test__sig__5__bit__integer__big__endian__coded.check_restriction(t_res, t_name ? t_name : "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME5_msg_type");
+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 : "@CAN_matrix_messages.CAN_MESSAGE_TESTFRAME5_msg_type");
+}
+
+boolean CAN__MESSAGE__TESTFRAME5__msg__type_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean CAN__MESSAGE__TESTFRAME5__msg__type_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+CAN__MESSAGE__EXTENDEDFRAME1__msg__type::CAN__MESSAGE__EXTENDEDFRAME1__msg__type()
+{
+}
+
+CAN__MESSAGE__EXTENDEDFRAME1__msg__type::CAN__MESSAGE__EXTENDEDFRAME1__msg__type(const OCTETSTRING& par_test__sig__2__byte__octetstring__msb__coded)
+  :   field_test__sig__2__byte__octetstring__msb__coded(par_test__sig__2__byte__octetstring__msb__coded)
+{
+}
+
+CAN__MESSAGE__EXTENDEDFRAME1__msg__type::CAN__MESSAGE__EXTENDEDFRAME1__msg__type(const CAN__MESSAGE__EXTENDEDFRAME1__msg__type& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @CAN_matrix_messages.CAN_MESSAGE_EXTENDEDFRAME1_msg_type.");
+if (other_value.test__sig__2__byte__octetstring__msb__coded().is_bound()) field_test__sig__2__byte__octetstring__msb__coded = other_value.test__sig__2__byte__octetstring__msb__coded();
+else field_test__sig__2__byte__octetstring__msb__coded.clean_up();
+}
+
+void CAN__MESSAGE__EXTENDEDFRAME1__msg__type::clean_up()
+{
+field_test__sig__2__byte__octetstring__msb__coded.clean_up();
+}
+
+const TTCN_Typedescriptor_t* CAN__MESSAGE__EXTENDEDFRAME1__msg__type::get_descriptor() const { return &CAN__MESSAGE__EXTENDEDFRAME1__msg__type_descr_; }
+CAN__MESSAGE__EXTENDEDFRAME1__msg__type& CAN__MESSAGE__EXTENDEDFRAME1__msg__type::operator=(const CAN__MESSAGE__EXTENDEDFRAME1__msg__type& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @CAN_matrix_messages.CAN_MESSAGE_EXTENDEDFRAME1_msg_type.");
+  if (other_value.test__sig__2__byte__octetstring__msb__coded().is_bound()) field_test__sig__2__byte__octetstring__msb__coded = other_value.test__sig__2__byte__octetstring__msb__coded();
+  else field_test__sig__2__byte__octetstring__msb__coded.clean_up();
+}
+return *this;
+}
+
+boolean CAN__MESSAGE__EXTENDEDFRAME1__msg__type::operator==(const CAN__MESSAGE__EXTENDEDFRAME1__msg__type& other_value) const
+{
+return field_test__sig__2__byte__octetstring__msb__coded==other_value.field_test__sig__2__byte__octetstring__msb__coded;
+}
+
+boolean CAN__MESSAGE__EXTENDEDFRAME1__msg__type::is_bound() const
+{
+return (field_test__sig__2__byte__octetstring__msb__coded.is_bound());
+}
+boolean CAN__MESSAGE__EXTENDEDFRAME1__msg__type::is_value() const
+{
+return field_test__sig__2__byte__octetstring__msb__coded.is_value();
+}
+void CAN__MESSAGE__EXTENDEDFRAME1__msg__type::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ test_sig_2_byte_octetstring_msb_coded := ");
+field_test__sig__2__byte__octetstring__msb__coded.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void CAN__MESSAGE__EXTENDEDFRAME1__msg__type::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 (1<param.get_size()) {
+      param.error("record value of type @CAN_matrix_messages.CAN_MESSAGE_EXTENDEDFRAME1_msg_type has 1 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) test__sig__2__byte__octetstring__msb__coded().set_param(*param.get_elem(0));
+    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(), "test_sig_2_byte_octetstring_msb_coded")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          test__sig__2__byte__octetstring__msb__coded().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 @CAN_matrix_messages.CAN_MESSAGE_EXTENDEDFRAME1_msg_type: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@CAN_matrix_messages.CAN_MESSAGE_EXTENDEDFRAME1_msg_type");
+  }
+}
+
+void CAN__MESSAGE__EXTENDEDFRAME1__msg__type::set_implicit_omit()
+{
+if (test__sig__2__byte__octetstring__msb__coded().is_bound()) test__sig__2__byte__octetstring__msb__coded().set_implicit_omit();
+}
+
+void CAN__MESSAGE__EXTENDEDFRAME1__msg__type::encode_text(Text_Buf& text_buf) const
+{
+field_test__sig__2__byte__octetstring__msb__coded.encode_text(text_buf);
+}
+
+void CAN__MESSAGE__EXTENDEDFRAME1__msg__type::decode_text(Text_Buf& text_buf)
+{
+field_test__sig__2__byte__octetstring__msb__coded.decode_text(text_buf);
+}
+
+void CAN__MESSAGE__EXTENDEDFRAME1__msg__type::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void CAN__MESSAGE__EXTENDEDFRAME1__msg__type::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int CAN__MESSAGE__EXTENDEDFRAME1__msg__type::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, CAN__MESSAGE__EXTENDEDFRAME1__msg__type_test__sig__2__byte__octetstring__msb__coded_descr_.raw->forceomit);
+  decoded_field_length = field_test__sig__2__byte__octetstring__msb__coded.RAW_decode(CAN__MESSAGE__EXTENDEDFRAME1__msg__type_test__sig__2__byte__octetstring__msb__coded_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int CAN__MESSAGE__EXTENDEDFRAME1__msg__type::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 = 1;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(1);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, CAN__MESSAGE__EXTENDEDFRAME1__msg__type_test__sig__2__byte__octetstring__msb__coded_descr_.raw);
+  encoded_length += field_test__sig__2__byte__octetstring__msb__coded.RAW_encode(CAN__MESSAGE__EXTENDEDFRAME1__msg__type_test__sig__2__byte__octetstring__msb__coded_descr_, *myleaf.body.node.nodes[0]);
+  return myleaf.length = encoded_length;
+}
+
+struct CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template::single_value_struct {
+OCTETSTRING_template field_test__sig__2__byte__octetstring__msb__coded;
+};
+
+void CAN__MESSAGE__EXTENDEDFRAME1__msg__type_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_test__sig__2__byte__octetstring__msb__coded = ANY_VALUE;
+}
+}
+}
+
+void CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template::copy_value(const CAN__MESSAGE__EXTENDEDFRAME1__msg__type& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.test__sig__2__byte__octetstring__msb__coded().is_bound()) {
+  single_value->field_test__sig__2__byte__octetstring__msb__coded = other_value.test__sig__2__byte__octetstring__msb__coded();
+} else {
+  single_value->field_test__sig__2__byte__octetstring__msb__coded.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template::copy_template(const CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.test__sig__2__byte__octetstring__msb__coded().get_selection()) {
+single_value->field_test__sig__2__byte__octetstring__msb__coded = other_value.test__sig__2__byte__octetstring__msb__coded();
+} else {
+single_value->field_test__sig__2__byte__octetstring__msb__coded.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new CAN__MESSAGE__EXTENDEDFRAME1__msg__type_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @CAN_matrix_messages.CAN_MESSAGE_EXTENDEDFRAME1_msg_type.");
+break;
+}
+set_selection(other_value);
+}
+
+CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template::CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template()
+{
+}
+
+CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template::CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template::CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template(const CAN__MESSAGE__EXTENDEDFRAME1__msg__type& other_value)
+{
+copy_value(other_value);
+}
+
+CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template::CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template(const OPTIONAL<CAN__MESSAGE__EXTENDEDFRAME1__msg__type>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CAN__MESSAGE__EXTENDEDFRAME1__msg__type&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @CAN_matrix_messages.CAN_MESSAGE_EXTENDEDFRAME1_msg_type from an unbound optional field.");
+}
+}
+
+CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template::CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template(const CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template::~CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template()
+{
+clean_up();
+}
+
+CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template& CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template& CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template::operator=(const CAN__MESSAGE__EXTENDEDFRAME1__msg__type& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template& CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template::operator=(const OPTIONAL<CAN__MESSAGE__EXTENDEDFRAME1__msg__type>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CAN__MESSAGE__EXTENDEDFRAME1__msg__type&)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 @CAN_matrix_messages.CAN_MESSAGE_EXTENDEDFRAME1_msg_type.");
+}
+return *this;
+}
+
+CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template& CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template::operator=(const CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template::match(const CAN__MESSAGE__EXTENDEDFRAME1__msg__type& 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.test__sig__2__byte__octetstring__msb__coded().is_bound()) return FALSE;
+if(!single_value->field_test__sig__2__byte__octetstring__msb__coded.match(other_value.test__sig__2__byte__octetstring__msb__coded(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @CAN_matrix_messages.CAN_MESSAGE_EXTENDEDFRAME1_msg_type.");
+}
+return FALSE;
+}
+
+boolean CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_test__sig__2__byte__octetstring__msb__coded.is_bound()
+;
+}
+
+boolean CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_test__sig__2__byte__octetstring__msb__coded.is_value();
+}
+
+void CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+CAN__MESSAGE__EXTENDEDFRAME1__msg__type CAN__MESSAGE__EXTENDEDFRAME1__msg__type_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 @CAN_matrix_messages.CAN_MESSAGE_EXTENDEDFRAME1_msg_type.");
+CAN__MESSAGE__EXTENDEDFRAME1__msg__type ret_val;
+if (single_value->field_test__sig__2__byte__octetstring__msb__coded.is_bound()) {
+ret_val.test__sig__2__byte__octetstring__msb__coded() = single_value->field_test__sig__2__byte__octetstring__msb__coded.valueof();
+}
+return ret_val;
+}
+
+void CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @CAN_matrix_messages.CAN_MESSAGE_EXTENDEDFRAME1_msg_type.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template[list_length];
+}
+
+CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template& CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @CAN_matrix_messages.CAN_MESSAGE_EXTENDEDFRAME1_msg_type.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @CAN_matrix_messages.CAN_MESSAGE_EXTENDEDFRAME1_msg_type.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template::test__sig__2__byte__octetstring__msb__coded()
+{
+set_specific();
+return single_value->field_test__sig__2__byte__octetstring__msb__coded;
+}
+
+const OCTETSTRING_template& CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template::test__sig__2__byte__octetstring__msb__coded() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field test_sig_2_byte_octetstring_msb_coded of a non-specific template of type @CAN_matrix_messages.CAN_MESSAGE_EXTENDEDFRAME1_msg_type.");
+return single_value->field_test__sig__2__byte__octetstring__msb__coded;
+}
+
+int CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @CAN_matrix_messages.CAN_MESSAGE_EXTENDEDFRAME1_msg_type which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 1;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @CAN_matrix_messages.CAN_MESSAGE_EXTENDEDFRAME1_msg_type 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 @CAN_matrix_messages.CAN_MESSAGE_EXTENDEDFRAME1_msg_type containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @CAN_matrix_messages.CAN_MESSAGE_EXTENDEDFRAME1_msg_type containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @CAN_matrix_messages.CAN_MESSAGE_EXTENDEDFRAME1_msg_type containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @CAN_matrix_messages.CAN_MESSAGE_EXTENDEDFRAME1_msg_type containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @CAN_matrix_messages.CAN_MESSAGE_EXTENDEDFRAME1_msg_type.");
+  }
+  return 0;
+}
+
+void CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ test_sig_2_byte_octetstring_msb_coded := ");
+single_value->field_test__sig__2__byte__octetstring__msb__coded.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template::log_match(const CAN__MESSAGE__EXTENDEDFRAME1__msg__type& 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_test__sig__2__byte__octetstring__msb__coded.match(match_value.test__sig__2__byte__octetstring__msb__coded(), legacy)){
+TTCN_Logger::log_logmatch_info(".test_sig_2_byte_octetstring_msb_coded");
+single_value->field_test__sig__2__byte__octetstring__msb__coded.log_match(match_value.test__sig__2__byte__octetstring__msb__coded(), 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("{ test_sig_2_byte_octetstring_msb_coded := ");
+single_value->field_test__sig__2__byte__octetstring__msb__coded.log_match(match_value.test__sig__2__byte__octetstring__msb__coded(), 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 CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_test__sig__2__byte__octetstring__msb__coded.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 @CAN_matrix_messages.CAN_MESSAGE_EXTENDEDFRAME1_msg_type.");
+}
+}
+
+void CAN__MESSAGE__EXTENDEDFRAME1__msg__type_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_test__sig__2__byte__octetstring__msb__coded.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 CAN__MESSAGE__EXTENDEDFRAME1__msg__type_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 @CAN_matrix_messages.CAN_MESSAGE_EXTENDEDFRAME1_msg_type.");
+}
+}
+
+void CAN__MESSAGE__EXTENDEDFRAME1__msg__type_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: {
+    CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (1<param.get_size()) {
+      param.error("record template of type @CAN_matrix_messages.CAN_MESSAGE_EXTENDEDFRAME1_msg_type has 1 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) test__sig__2__byte__octetstring__msb__coded().set_param(*param.get_elem(0));
+    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(), "test_sig_2_byte_octetstring_msb_coded")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          test__sig__2__byte__octetstring__msb__coded().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 @CAN_matrix_messages.CAN_MESSAGE_EXTENDEDFRAME1_msg_type: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@CAN_matrix_messages.CAN_MESSAGE_EXTENDEDFRAME1_msg_type");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void CAN__MESSAGE__EXTENDEDFRAME1__msg__type_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_test__sig__2__byte__octetstring__msb__coded.check_restriction(t_res, t_name ? t_name : "@CAN_matrix_messages.CAN_MESSAGE_EXTENDEDFRAME1_msg_type");
+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 : "@CAN_matrix_messages.CAN_MESSAGE_EXTENDEDFRAME1_msg_type");
+}
+
+boolean CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 CAN__MatrixPayloadUnion::copy_value(const CAN__MatrixPayloadUnion& other_value)
+{
+switch (other_value.union_selection) {
+case ALT_message__MyTestframe0:
+field_message__MyTestframe0 = new CAN__MESSAGE__TESTFRAME0__msg__type(*other_value.field_message__MyTestframe0);
+break;
+case ALT_message__MyTestframe1:
+field_message__MyTestframe1 = new CAN__MESSAGE__TESTFRAME1__msg__type(*other_value.field_message__MyTestframe1);
+break;
+case ALT_message__MyTestframe2:
+field_message__MyTestframe2 = new CAN__MESSAGE__TESTFRAME2__msg__type(*other_value.field_message__MyTestframe2);
+break;
+case ALT_message__MyTestframe3:
+field_message__MyTestframe3 = new CAN__MESSAGE__TESTFRAME3__msg__type(*other_value.field_message__MyTestframe3);
+break;
+case ALT_message__MyTestframe4:
+field_message__MyTestframe4 = new CAN__MESSAGE__TESTFRAME4__msg__type(*other_value.field_message__MyTestframe4);
+break;
+case ALT_message__MyTestframe5:
+field_message__MyTestframe5 = new CAN__MESSAGE__TESTFRAME5__msg__type(*other_value.field_message__MyTestframe5);
+break;
+case ALT_message__extendedFrame1:
+field_message__extendedFrame1 = new CAN__MESSAGE__EXTENDEDFRAME1__msg__type(*other_value.field_message__extendedFrame1);
+break;
+default:
+TTCN_error("Assignment of an unbound union value of type @CAN_matrix_messages.CAN_MatrixPayloadUnion.");
+}
+union_selection = other_value.union_selection;
+}
+
+CAN__MatrixPayloadUnion::CAN__MatrixPayloadUnion()
+{
+union_selection = UNBOUND_VALUE;
+}
+
+CAN__MatrixPayloadUnion::CAN__MatrixPayloadUnion(const CAN__MatrixPayloadUnion& other_value)
+: Base_Type(){
+copy_value(other_value);
+}
+
+CAN__MatrixPayloadUnion::~CAN__MatrixPayloadUnion()
+{
+clean_up();
+}
+
+CAN__MatrixPayloadUnion& CAN__MatrixPayloadUnion::operator=(const CAN__MatrixPayloadUnion& other_value)
+{
+if (this != &other_value) {
+clean_up();
+copy_value(other_value);
+}
+return *this;
+}
+
+boolean CAN__MatrixPayloadUnion::operator==(const CAN__MatrixPayloadUnion& other_value) const
+{
+if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @CAN_matrix_messages.CAN_MatrixPayloadUnion.");
+if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @CAN_matrix_messages.CAN_MatrixPayloadUnion.");
+if (union_selection != other_value.union_selection) return FALSE;
+switch (union_selection) {
+case ALT_message__MyTestframe0:
+return *field_message__MyTestframe0 == *other_value.field_message__MyTestframe0;
+case ALT_message__MyTestframe1:
+return *field_message__MyTestframe1 == *other_value.field_message__MyTestframe1;
+case ALT_message__MyTestframe2:
+return *field_message__MyTestframe2 == *other_value.field_message__MyTestframe2;
+case ALT_message__MyTestframe3:
+return *field_message__MyTestframe3 == *other_value.field_message__MyTestframe3;
+case ALT_message__MyTestframe4:
+return *field_message__MyTestframe4 == *other_value.field_message__MyTestframe4;
+case ALT_message__MyTestframe5:
+return *field_message__MyTestframe5 == *other_value.field_message__MyTestframe5;
+case ALT_message__extendedFrame1:
+return *field_message__extendedFrame1 == *other_value.field_message__extendedFrame1;
+default:
+return FALSE;
+}
+}
+
+CAN__MESSAGE__TESTFRAME0__msg__type& CAN__MatrixPayloadUnion::message__MyTestframe0()
+{
+if (union_selection != ALT_message__MyTestframe0) {
+clean_up();
+field_message__MyTestframe0 = new CAN__MESSAGE__TESTFRAME0__msg__type;
+union_selection = ALT_message__MyTestframe0;
+}
+return *field_message__MyTestframe0;
+}
+
+const CAN__MESSAGE__TESTFRAME0__msg__type& CAN__MatrixPayloadUnion::message__MyTestframe0() const
+{
+if (union_selection != ALT_message__MyTestframe0) TTCN_error("Using non-selected field message_MyTestframe0 in a value of union type @CAN_matrix_messages.CAN_MatrixPayloadUnion.");
+return *field_message__MyTestframe0;
+}
+
+CAN__MESSAGE__TESTFRAME1__msg__type& CAN__MatrixPayloadUnion::message__MyTestframe1()
+{
+if (union_selection != ALT_message__MyTestframe1) {
+clean_up();
+field_message__MyTestframe1 = new CAN__MESSAGE__TESTFRAME1__msg__type;
+union_selection = ALT_message__MyTestframe1;
+}
+return *field_message__MyTestframe1;
+}
+
+const CAN__MESSAGE__TESTFRAME1__msg__type& CAN__MatrixPayloadUnion::message__MyTestframe1() const
+{
+if (union_selection != ALT_message__MyTestframe1) TTCN_error("Using non-selected field message_MyTestframe1 in a value of union type @CAN_matrix_messages.CAN_MatrixPayloadUnion.");
+return *field_message__MyTestframe1;
+}
+
+CAN__MESSAGE__TESTFRAME2__msg__type& CAN__MatrixPayloadUnion::message__MyTestframe2()
+{
+if (union_selection != ALT_message__MyTestframe2) {
+clean_up();
+field_message__MyTestframe2 = new CAN__MESSAGE__TESTFRAME2__msg__type;
+union_selection = ALT_message__MyTestframe2;
+}
+return *field_message__MyTestframe2;
+}
+
+const CAN__MESSAGE__TESTFRAME2__msg__type& CAN__MatrixPayloadUnion::message__MyTestframe2() const
+{
+if (union_selection != ALT_message__MyTestframe2) TTCN_error("Using non-selected field message_MyTestframe2 in a value of union type @CAN_matrix_messages.CAN_MatrixPayloadUnion.");
+return *field_message__MyTestframe2;
+}
+
+CAN__MESSAGE__TESTFRAME3__msg__type& CAN__MatrixPayloadUnion::message__MyTestframe3()
+{
+if (union_selection != ALT_message__MyTestframe3) {
+clean_up();
+field_message__MyTestframe3 = new CAN__MESSAGE__TESTFRAME3__msg__type;
+union_selection = ALT_message__MyTestframe3;
+}
+return *field_message__MyTestframe3;
+}
+
+const CAN__MESSAGE__TESTFRAME3__msg__type& CAN__MatrixPayloadUnion::message__MyTestframe3() const
+{
+if (union_selection != ALT_message__MyTestframe3) TTCN_error("Using non-selected field message_MyTestframe3 in a value of union type @CAN_matrix_messages.CAN_MatrixPayloadUnion.");
+return *field_message__MyTestframe3;
+}
+
+CAN__MESSAGE__TESTFRAME4__msg__type& CAN__MatrixPayloadUnion::message__MyTestframe4()
+{
+if (union_selection != ALT_message__MyTestframe4) {
+clean_up();
+field_message__MyTestframe4 = new CAN__MESSAGE__TESTFRAME4__msg__type;
+union_selection = ALT_message__MyTestframe4;
+}
+return *field_message__MyTestframe4;
+}
+
+const CAN__MESSAGE__TESTFRAME4__msg__type& CAN__MatrixPayloadUnion::message__MyTestframe4() const
+{
+if (union_selection != ALT_message__MyTestframe4) TTCN_error("Using non-selected field message_MyTestframe4 in a value of union type @CAN_matrix_messages.CAN_MatrixPayloadUnion.");
+return *field_message__MyTestframe4;
+}
+
+CAN__MESSAGE__TESTFRAME5__msg__type& CAN__MatrixPayloadUnion::message__MyTestframe5()
+{
+if (union_selection != ALT_message__MyTestframe5) {
+clean_up();
+field_message__MyTestframe5 = new CAN__MESSAGE__TESTFRAME5__msg__type;
+union_selection = ALT_message__MyTestframe5;
+}
+return *field_message__MyTestframe5;
+}
+
+const CAN__MESSAGE__TESTFRAME5__msg__type& CAN__MatrixPayloadUnion::message__MyTestframe5() const
+{
+if (union_selection != ALT_message__MyTestframe5) TTCN_error("Using non-selected field message_MyTestframe5 in a value of union type @CAN_matrix_messages.CAN_MatrixPayloadUnion.");
+return *field_message__MyTestframe5;
+}
+
+CAN__MESSAGE__EXTENDEDFRAME1__msg__type& CAN__MatrixPayloadUnion::message__extendedFrame1()
+{
+if (union_selection != ALT_message__extendedFrame1) {
+clean_up();
+field_message__extendedFrame1 = new CAN__MESSAGE__EXTENDEDFRAME1__msg__type;
+union_selection = ALT_message__extendedFrame1;
+}
+return *field_message__extendedFrame1;
+}
+
+const CAN__MESSAGE__EXTENDEDFRAME1__msg__type& CAN__MatrixPayloadUnion::message__extendedFrame1() const
+{
+if (union_selection != ALT_message__extendedFrame1) TTCN_error("Using non-selected field message_extendedFrame1 in a value of union type @CAN_matrix_messages.CAN_MatrixPayloadUnion.");
+return *field_message__extendedFrame1;
+}
+
+boolean CAN__MatrixPayloadUnion::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 @CAN_matrix_messages.CAN_MatrixPayloadUnion.");
+return union_selection == checked_selection;
+}
+
+boolean CAN__MatrixPayloadUnion::is_bound() const
+{
+  return union_selection != UNBOUND_VALUE;
+}
+
+boolean CAN__MatrixPayloadUnion::is_value() const
+{
+switch (union_selection) {
+case UNBOUND_VALUE: return FALSE;
+case ALT_message__MyTestframe0: return field_message__MyTestframe0->is_value();
+case ALT_message__MyTestframe1: return field_message__MyTestframe1->is_value();
+case ALT_message__MyTestframe2: return field_message__MyTestframe2->is_value();
+case ALT_message__MyTestframe3: return field_message__MyTestframe3->is_value();
+case ALT_message__MyTestframe4: return field_message__MyTestframe4->is_value();
+case ALT_message__MyTestframe5: return field_message__MyTestframe5->is_value();
+case ALT_message__extendedFrame1: return field_message__extendedFrame1->is_value();
+default: TTCN_error("Invalid selection in union is_bound");}
+}
+
+void CAN__MatrixPayloadUnion::clean_up()
+{
+switch (union_selection) {
+case ALT_message__MyTestframe0:
+  delete field_message__MyTestframe0;
+  break;
+case ALT_message__MyTestframe1:
+  delete field_message__MyTestframe1;
+  break;
+case ALT_message__MyTestframe2:
+  delete field_message__MyTestframe2;
+  break;
+case ALT_message__MyTestframe3:
+  delete field_message__MyTestframe3;
+  break;
+case ALT_message__MyTestframe4:
+  delete field_message__MyTestframe4;
+  break;
+case ALT_message__MyTestframe5:
+  delete field_message__MyTestframe5;
+  break;
+case ALT_message__extendedFrame1:
+  delete field_message__extendedFrame1;
+  break;
+default:
+  break;
+}
+union_selection = UNBOUND_VALUE;
+}
+
+void CAN__MatrixPayloadUnion::log() const
+{
+switch (union_selection) {
+case ALT_message__MyTestframe0:
+TTCN_Logger::log_event_str("{ message_MyTestframe0 := ");
+field_message__MyTestframe0->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_message__MyTestframe1:
+TTCN_Logger::log_event_str("{ message_MyTestframe1 := ");
+field_message__MyTestframe1->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_message__MyTestframe2:
+TTCN_Logger::log_event_str("{ message_MyTestframe2 := ");
+field_message__MyTestframe2->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_message__MyTestframe3:
+TTCN_Logger::log_event_str("{ message_MyTestframe3 := ");
+field_message__MyTestframe3->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_message__MyTestframe4:
+TTCN_Logger::log_event_str("{ message_MyTestframe4 := ");
+field_message__MyTestframe4->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_message__MyTestframe5:
+TTCN_Logger::log_event_str("{ message_MyTestframe5 := ");
+field_message__MyTestframe5->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_message__extendedFrame1:
+TTCN_Logger::log_event_str("{ message_extendedFrame1 := ");
+field_message__extendedFrame1->log();
+TTCN_Logger::log_event_str(" }");
+break;
+default:
+TTCN_Logger::log_event_unbound();
+}
+}
+
+void CAN__MatrixPayloadUnion::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, "message_MyTestframe0")) {
+    message__MyTestframe0().set_param(*mp_last);
+    if (!message__MyTestframe0().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "message_MyTestframe1")) {
+    message__MyTestframe1().set_param(*mp_last);
+    if (!message__MyTestframe1().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "message_MyTestframe2")) {
+    message__MyTestframe2().set_param(*mp_last);
+    if (!message__MyTestframe2().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "message_MyTestframe3")) {
+    message__MyTestframe3().set_param(*mp_last);
+    if (!message__MyTestframe3().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "message_MyTestframe4")) {
+    message__MyTestframe4().set_param(*mp_last);
+    if (!message__MyTestframe4().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "message_MyTestframe5")) {
+    message__MyTestframe5().set_param(*mp_last);
+    if (!message__MyTestframe5().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "message_extendedFrame1")) {
+    message__extendedFrame1().set_param(*mp_last);
+    if (!message__extendedFrame1().is_bound()) clean_up();
+    return;
+  }
+  mp_last->error("Field %s does not exist in type @CAN_matrix_messages.CAN_MatrixPayloadUnion.", last_name);
+}
+
+void CAN__MatrixPayloadUnion::set_implicit_omit()
+{
+switch (union_selection) {
+case ALT_message__MyTestframe0:
+field_message__MyTestframe0->set_implicit_omit(); break;
+case ALT_message__MyTestframe1:
+field_message__MyTestframe1->set_implicit_omit(); break;
+case ALT_message__MyTestframe2:
+field_message__MyTestframe2->set_implicit_omit(); break;
+case ALT_message__MyTestframe3:
+field_message__MyTestframe3->set_implicit_omit(); break;
+case ALT_message__MyTestframe4:
+field_message__MyTestframe4->set_implicit_omit(); break;
+case ALT_message__MyTestframe5:
+field_message__MyTestframe5->set_implicit_omit(); break;
+case ALT_message__extendedFrame1:
+field_message__extendedFrame1->set_implicit_omit(); break;
+default: break;
+}
+}
+
+void CAN__MatrixPayloadUnion::encode_text(Text_Buf& text_buf) const
+{
+text_buf.push_int(union_selection);
+switch (union_selection) {
+case ALT_message__MyTestframe0:
+field_message__MyTestframe0->encode_text(text_buf);
+break;
+case ALT_message__MyTestframe1:
+field_message__MyTestframe1->encode_text(text_buf);
+break;
+case ALT_message__MyTestframe2:
+field_message__MyTestframe2->encode_text(text_buf);
+break;
+case ALT_message__MyTestframe3:
+field_message__MyTestframe3->encode_text(text_buf);
+break;
+case ALT_message__MyTestframe4:
+field_message__MyTestframe4->encode_text(text_buf);
+break;
+case ALT_message__MyTestframe5:
+field_message__MyTestframe5->encode_text(text_buf);
+break;
+case ALT_message__extendedFrame1:
+field_message__extendedFrame1->encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an unbound value of union type @CAN_matrix_messages.CAN_MatrixPayloadUnion.");
+}
+}
+
+void CAN__MatrixPayloadUnion::decode_text(Text_Buf& text_buf)
+{
+switch ((union_selection_type)text_buf.pull_int().get_val()) {
+case ALT_message__MyTestframe0:
+message__MyTestframe0().decode_text(text_buf);
+break;
+case ALT_message__MyTestframe1:
+message__MyTestframe1().decode_text(text_buf);
+break;
+case ALT_message__MyTestframe2:
+message__MyTestframe2().decode_text(text_buf);
+break;
+case ALT_message__MyTestframe3:
+message__MyTestframe3().decode_text(text_buf);
+break;
+case ALT_message__MyTestframe4:
+message__MyTestframe4().decode_text(text_buf);
+break;
+case ALT_message__MyTestframe5:
+message__MyTestframe5().decode_text(text_buf);
+break;
+case ALT_message__extendedFrame1:
+message__extendedFrame1().decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for type @CAN_matrix_messages.CAN_MatrixPayloadUnion.");
+}
+}
+
+void CAN__MatrixPayloadUnion::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void CAN__MatrixPayloadUnion::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int CAN__MatrixPayloadUnion::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, CAN__MESSAGE__TESTFRAME0__msg__type_descr_.raw->forceomit);
+      decoded_length = message__MyTestframe0().RAW_decode(CAN__MESSAGE__TESTFRAME0__msg__type_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, CAN__MESSAGE__TESTFRAME1__msg__type_descr_.raw->forceomit);
+      decoded_length = message__MyTestframe1().RAW_decode(CAN__MESSAGE__TESTFRAME1__msg__type_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, CAN__MESSAGE__TESTFRAME2__msg__type_descr_.raw->forceomit);
+      decoded_length = message__MyTestframe2().RAW_decode(CAN__MESSAGE__TESTFRAME2__msg__type_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 3: {
+      RAW_Force_Omit field_force_omit(3, force_omit, CAN__MESSAGE__TESTFRAME3__msg__type_descr_.raw->forceomit);
+      decoded_length = message__MyTestframe3().RAW_decode(CAN__MESSAGE__TESTFRAME3__msg__type_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 4: {
+      RAW_Force_Omit field_force_omit(4, force_omit, CAN__MESSAGE__TESTFRAME4__msg__type_descr_.raw->forceomit);
+      decoded_length = message__MyTestframe4().RAW_decode(CAN__MESSAGE__TESTFRAME4__msg__type_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 5: {
+      RAW_Force_Omit field_force_omit(5, force_omit, CAN__MESSAGE__TESTFRAME5__msg__type_descr_.raw->forceomit);
+      decoded_length = message__MyTestframe5().RAW_decode(CAN__MESSAGE__TESTFRAME5__msg__type_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 6: {
+      RAW_Force_Omit field_force_omit(6, force_omit, CAN__MESSAGE__EXTENDEDFRAME1__msg__type_descr_.raw->forceomit);
+      decoded_length = message__extendedFrame1().RAW_decode(CAN__MESSAGE__EXTENDEDFRAME1__msg__type_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, CAN__MESSAGE__TESTFRAME0__msg__type_descr_.raw->forceomit);
+      decoded_length = message__MyTestframe0().RAW_decode(CAN__MESSAGE__TESTFRAME0__msg__type_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, CAN__MESSAGE__TESTFRAME1__msg__type_descr_.raw->forceomit);
+      decoded_length = message__MyTestframe1().RAW_decode(CAN__MESSAGE__TESTFRAME1__msg__type_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, CAN__MESSAGE__TESTFRAME2__msg__type_descr_.raw->forceomit);
+      decoded_length = message__MyTestframe2().RAW_decode(CAN__MESSAGE__TESTFRAME2__msg__type_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;
+       }
+      p_buf.set_pos_bit(starting_pos);
+      RAW_Force_Omit field_3_force_omit(3, force_omit, CAN__MESSAGE__TESTFRAME3__msg__type_descr_.raw->forceomit);
+      decoded_length = message__MyTestframe3().RAW_decode(CAN__MESSAGE__TESTFRAME3__msg__type_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_3_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_4_force_omit(4, force_omit, CAN__MESSAGE__TESTFRAME4__msg__type_descr_.raw->forceomit);
+      decoded_length = message__MyTestframe4().RAW_decode(CAN__MESSAGE__TESTFRAME4__msg__type_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_4_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_5_force_omit(5, force_omit, CAN__MESSAGE__TESTFRAME5__msg__type_descr_.raw->forceomit);
+      decoded_length = message__MyTestframe5().RAW_decode(CAN__MESSAGE__TESTFRAME5__msg__type_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_5_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_6_force_omit(6, force_omit, CAN__MESSAGE__EXTENDEDFRAME1__msg__type_descr_.raw->forceomit);
+      decoded_length = message__extendedFrame1().RAW_decode(CAN__MESSAGE__EXTENDEDFRAME1__msg__type_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_6_force_omit);
+      if (decoded_length >= 0) {
+         return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+       }
+ }
+ clean_up();
+ return -1;
+}
+
+int CAN__MatrixPayloadUnion::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const
+{
+  int encoded_length = 0;
+  myleaf.isleaf = FALSE;
+  myleaf.body.node.num_of_nodes = 7;  myleaf.body.node.nodes = init_nodes_of_enc_tree(7);
+  memset(myleaf.body.node.nodes, 0, 7 * sizeof(RAW_enc_tree *));
+  switch (union_selection) {
+  case ALT_message__MyTestframe0:
+    myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 0, CAN__MESSAGE__TESTFRAME0__msg__type_descr_.raw);
+    encoded_length = field_message__MyTestframe0->RAW_encode(CAN__MESSAGE__TESTFRAME0__msg__type_descr_, *myleaf.body.node.nodes[0]);
+    myleaf.body.node.nodes[0]->coding_descr = &CAN__MESSAGE__TESTFRAME0__msg__type_descr_;
+    break;
+  case ALT_message__MyTestframe1:
+    myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 1, CAN__MESSAGE__TESTFRAME1__msg__type_descr_.raw);
+    encoded_length = field_message__MyTestframe1->RAW_encode(CAN__MESSAGE__TESTFRAME1__msg__type_descr_, *myleaf.body.node.nodes[1]);
+    myleaf.body.node.nodes[1]->coding_descr = &CAN__MESSAGE__TESTFRAME1__msg__type_descr_;
+    break;
+  case ALT_message__MyTestframe2:
+    myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 2, CAN__MESSAGE__TESTFRAME2__msg__type_descr_.raw);
+    encoded_length = field_message__MyTestframe2->RAW_encode(CAN__MESSAGE__TESTFRAME2__msg__type_descr_, *myleaf.body.node.nodes[2]);
+    myleaf.body.node.nodes[2]->coding_descr = &CAN__MESSAGE__TESTFRAME2__msg__type_descr_;
+    break;
+  case ALT_message__MyTestframe3:
+    myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 3, CAN__MESSAGE__TESTFRAME3__msg__type_descr_.raw);
+    encoded_length = field_message__MyTestframe3->RAW_encode(CAN__MESSAGE__TESTFRAME3__msg__type_descr_, *myleaf.body.node.nodes[3]);
+    myleaf.body.node.nodes[3]->coding_descr = &CAN__MESSAGE__TESTFRAME3__msg__type_descr_;
+    break;
+  case ALT_message__MyTestframe4:
+    myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 4, CAN__MESSAGE__TESTFRAME4__msg__type_descr_.raw);
+    encoded_length = field_message__MyTestframe4->RAW_encode(CAN__MESSAGE__TESTFRAME4__msg__type_descr_, *myleaf.body.node.nodes[4]);
+    myleaf.body.node.nodes[4]->coding_descr = &CAN__MESSAGE__TESTFRAME4__msg__type_descr_;
+    break;
+  case ALT_message__MyTestframe5:
+    myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 5, CAN__MESSAGE__TESTFRAME5__msg__type_descr_.raw);
+    encoded_length = field_message__MyTestframe5->RAW_encode(CAN__MESSAGE__TESTFRAME5__msg__type_descr_, *myleaf.body.node.nodes[5]);
+    myleaf.body.node.nodes[5]->coding_descr = &CAN__MESSAGE__TESTFRAME5__msg__type_descr_;
+    break;
+  case ALT_message__extendedFrame1:
+    myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 6, CAN__MESSAGE__EXTENDEDFRAME1__msg__type_descr_.raw);
+    encoded_length = field_message__extendedFrame1->RAW_encode(CAN__MESSAGE__EXTENDEDFRAME1__msg__type_descr_, *myleaf.body.node.nodes[6]);
+    myleaf.body.node.nodes[6]->coding_descr = &CAN__MESSAGE__EXTENDEDFRAME1__msg__type_descr_;
+    break;
+  default:
+    TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
+  }
+  return encoded_length;
+}
+
+void CAN__MatrixPayloadUnion_template::copy_value(const CAN__MatrixPayloadUnion& other_value)
+{
+single_value.union_selection = other_value.get_selection();
+switch (single_value.union_selection) {
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe0:
+single_value.field_message__MyTestframe0 = new CAN__MESSAGE__TESTFRAME0__msg__type_template(other_value.message__MyTestframe0());
+break;
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe1:
+single_value.field_message__MyTestframe1 = new CAN__MESSAGE__TESTFRAME1__msg__type_template(other_value.message__MyTestframe1());
+break;
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe2:
+single_value.field_message__MyTestframe2 = new CAN__MESSAGE__TESTFRAME2__msg__type_template(other_value.message__MyTestframe2());
+break;
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe3:
+single_value.field_message__MyTestframe3 = new CAN__MESSAGE__TESTFRAME3__msg__type_template(other_value.message__MyTestframe3());
+break;
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe4:
+single_value.field_message__MyTestframe4 = new CAN__MESSAGE__TESTFRAME4__msg__type_template(other_value.message__MyTestframe4());
+break;
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe5:
+single_value.field_message__MyTestframe5 = new CAN__MESSAGE__TESTFRAME5__msg__type_template(other_value.message__MyTestframe5());
+break;
+case CAN__MatrixPayloadUnion::ALT_message__extendedFrame1:
+single_value.field_message__extendedFrame1 = new CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template(other_value.message__extendedFrame1());
+break;
+default:
+TTCN_error("Initializing a template with an unbound value of type @CAN_matrix_messages.CAN_MatrixPayloadUnion.");
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void CAN__MatrixPayloadUnion_template::copy_template(const CAN__MatrixPayloadUnion_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 CAN__MatrixPayloadUnion::ALT_message__MyTestframe0:
+single_value.field_message__MyTestframe0 = new CAN__MESSAGE__TESTFRAME0__msg__type_template(*other_value.single_value.field_message__MyTestframe0);
+break;
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe1:
+single_value.field_message__MyTestframe1 = new CAN__MESSAGE__TESTFRAME1__msg__type_template(*other_value.single_value.field_message__MyTestframe1);
+break;
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe2:
+single_value.field_message__MyTestframe2 = new CAN__MESSAGE__TESTFRAME2__msg__type_template(*other_value.single_value.field_message__MyTestframe2);
+break;
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe3:
+single_value.field_message__MyTestframe3 = new CAN__MESSAGE__TESTFRAME3__msg__type_template(*other_value.single_value.field_message__MyTestframe3);
+break;
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe4:
+single_value.field_message__MyTestframe4 = new CAN__MESSAGE__TESTFRAME4__msg__type_template(*other_value.single_value.field_message__MyTestframe4);
+break;
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe5:
+single_value.field_message__MyTestframe5 = new CAN__MESSAGE__TESTFRAME5__msg__type_template(*other_value.single_value.field_message__MyTestframe5);
+break;
+case CAN__MatrixPayloadUnion::ALT_message__extendedFrame1:
+single_value.field_message__extendedFrame1 = new CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template(*other_value.single_value.field_message__extendedFrame1);
+break;
+default:
+TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @CAN_matrix_messages.CAN_MatrixPayloadUnion.");
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new CAN__MatrixPayloadUnion_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;
+default:
+TTCN_error("Copying an uninitialized template of union type @CAN_matrix_messages.CAN_MatrixPayloadUnion.");
+}
+set_selection(other_value);
+}
+
+CAN__MatrixPayloadUnion_template::CAN__MatrixPayloadUnion_template()
+{
+}
+
+CAN__MatrixPayloadUnion_template::CAN__MatrixPayloadUnion_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+CAN__MatrixPayloadUnion_template::CAN__MatrixPayloadUnion_template(const CAN__MatrixPayloadUnion& other_value)
+{
+copy_value(other_value);
+}
+
+CAN__MatrixPayloadUnion_template::CAN__MatrixPayloadUnion_template(const OPTIONAL<CAN__MatrixPayloadUnion>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CAN__MatrixPayloadUnion&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of union type @CAN_matrix_messages.CAN_MatrixPayloadUnion from an unbound optional field.");
+}
+}
+
+CAN__MatrixPayloadUnion_template::CAN__MatrixPayloadUnion_template(const CAN__MatrixPayloadUnion_template& other_value)
+: Base_Template(){
+copy_template(other_value);
+}
+
+CAN__MatrixPayloadUnion_template::~CAN__MatrixPayloadUnion_template()
+{
+clean_up();
+}
+
+void CAN__MatrixPayloadUnion_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe0:
+delete single_value.field_message__MyTestframe0;
+break;
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe1:
+delete single_value.field_message__MyTestframe1;
+break;
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe2:
+delete single_value.field_message__MyTestframe2;
+break;
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe3:
+delete single_value.field_message__MyTestframe3;
+break;
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe4:
+delete single_value.field_message__MyTestframe4;
+break;
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe5:
+delete single_value.field_message__MyTestframe5;
+break;
+case CAN__MatrixPayloadUnion::ALT_message__extendedFrame1:
+delete single_value.field_message__extendedFrame1;
+default:
+break;
+}
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+CAN__MatrixPayloadUnion_template& CAN__MatrixPayloadUnion_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+CAN__MatrixPayloadUnion_template& CAN__MatrixPayloadUnion_template::operator=(const CAN__MatrixPayloadUnion& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+CAN__MatrixPayloadUnion_template& CAN__MatrixPayloadUnion_template::operator=(const OPTIONAL<CAN__MatrixPayloadUnion>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CAN__MatrixPayloadUnion&)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 @CAN_matrix_messages.CAN_MatrixPayloadUnion.");
+}
+return *this;
+}
+
+CAN__MatrixPayloadUnion_template& CAN__MatrixPayloadUnion_template::operator=(const CAN__MatrixPayloadUnion_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean CAN__MatrixPayloadUnion_template::match(const CAN__MatrixPayloadUnion& 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:
+{
+CAN__MatrixPayloadUnion::union_selection_type value_selection = other_value.get_selection();
+if (value_selection == CAN__MatrixPayloadUnion::UNBOUND_VALUE) return FALSE;
+if (value_selection != single_value.union_selection) return FALSE;
+switch (value_selection) {
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe0:
+return single_value.field_message__MyTestframe0->match(other_value.message__MyTestframe0(), legacy);
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe1:
+return single_value.field_message__MyTestframe1->match(other_value.message__MyTestframe1(), legacy);
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe2:
+return single_value.field_message__MyTestframe2->match(other_value.message__MyTestframe2(), legacy);
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe3:
+return single_value.field_message__MyTestframe3->match(other_value.message__MyTestframe3(), legacy);
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe4:
+return single_value.field_message__MyTestframe4->match(other_value.message__MyTestframe4(), legacy);
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe5:
+return single_value.field_message__MyTestframe5->match(other_value.message__MyTestframe5(), legacy);
+case CAN__MatrixPayloadUnion::ALT_message__extendedFrame1:
+return single_value.field_message__extendedFrame1->match(other_value.message__extendedFrame1(), legacy);
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @CAN_matrix_messages.CAN_MatrixPayloadUnion.");
+}
+}
+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;
+default:
+TTCN_error ("Matching an uninitialized template of union type @CAN_matrix_messages.CAN_MatrixPayloadUnion.");
+}
+return FALSE;
+}
+
+boolean CAN__MatrixPayloadUnion_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+switch (single_value.union_selection) {
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe0:
+return single_value.field_message__MyTestframe0->is_value();
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe1:
+return single_value.field_message__MyTestframe1->is_value();
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe2:
+return single_value.field_message__MyTestframe2->is_value();
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe3:
+return single_value.field_message__MyTestframe3->is_value();
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe4:
+return single_value.field_message__MyTestframe4->is_value();
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe5:
+return single_value.field_message__MyTestframe5->is_value();
+case CAN__MatrixPayloadUnion::ALT_message__extendedFrame1:
+return single_value.field_message__extendedFrame1->is_value();
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @CAN_matrix_messages.CAN_MatrixPayloadUnion.");
+}
+}
+
+CAN__MatrixPayloadUnion CAN__MatrixPayloadUnion_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 @CAN_matrix_messages.CAN_MatrixPayloadUnion.");
+CAN__MatrixPayloadUnion ret_val;
+switch (single_value.union_selection) {
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe0:
+ret_val.message__MyTestframe0() = single_value.field_message__MyTestframe0->valueof();
+break;
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe1:
+ret_val.message__MyTestframe1() = single_value.field_message__MyTestframe1->valueof();
+break;
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe2:
+ret_val.message__MyTestframe2() = single_value.field_message__MyTestframe2->valueof();
+break;
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe3:
+ret_val.message__MyTestframe3() = single_value.field_message__MyTestframe3->valueof();
+break;
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe4:
+ret_val.message__MyTestframe4() = single_value.field_message__MyTestframe4->valueof();
+break;
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe5:
+ret_val.message__MyTestframe5() = single_value.field_message__MyTestframe5->valueof();
+break;
+case CAN__MatrixPayloadUnion::ALT_message__extendedFrame1:
+ret_val.message__extendedFrame1() = single_value.field_message__extendedFrame1->valueof();
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @CAN_matrix_messages.CAN_MatrixPayloadUnion.");
+}
+return ret_val;
+}
+
+CAN__MatrixPayloadUnion_template& CAN__MatrixPayloadUnion_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @CAN_matrix_messages.CAN_MatrixPayloadUnion.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @CAN_matrix_messages.CAN_MatrixPayloadUnion.");
+return value_list.list_value[list_index];
+}
+void CAN__MatrixPayloadUnion_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error ("Internal error: Setting an invalid list for a template of union type @CAN_matrix_messages.CAN_MatrixPayloadUnion.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new CAN__MatrixPayloadUnion_template[list_length];
+}
+
+CAN__MESSAGE__TESTFRAME0__msg__type_template& CAN__MatrixPayloadUnion_template::message__MyTestframe0()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != CAN__MatrixPayloadUnion::ALT_message__MyTestframe0) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_message__MyTestframe0 = new CAN__MESSAGE__TESTFRAME0__msg__type_template(ANY_VALUE);
+else single_value.field_message__MyTestframe0 = new CAN__MESSAGE__TESTFRAME0__msg__type_template;
+single_value.union_selection = CAN__MatrixPayloadUnion::ALT_message__MyTestframe0;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_message__MyTestframe0;
+}
+
+const CAN__MESSAGE__TESTFRAME0__msg__type_template& CAN__MatrixPayloadUnion_template::message__MyTestframe0() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field message_MyTestframe0 in a non-specific template of union type @CAN_matrix_messages.CAN_MatrixPayloadUnion.");
+if (single_value.union_selection != CAN__MatrixPayloadUnion::ALT_message__MyTestframe0) TTCN_error("Accessing non-selected field message_MyTestframe0 in a template of union type @CAN_matrix_messages.CAN_MatrixPayloadUnion.");
+return *single_value.field_message__MyTestframe0;
+}
+
+CAN__MESSAGE__TESTFRAME1__msg__type_template& CAN__MatrixPayloadUnion_template::message__MyTestframe1()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != CAN__MatrixPayloadUnion::ALT_message__MyTestframe1) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_message__MyTestframe1 = new CAN__MESSAGE__TESTFRAME1__msg__type_template(ANY_VALUE);
+else single_value.field_message__MyTestframe1 = new CAN__MESSAGE__TESTFRAME1__msg__type_template;
+single_value.union_selection = CAN__MatrixPayloadUnion::ALT_message__MyTestframe1;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_message__MyTestframe1;
+}
+
+const CAN__MESSAGE__TESTFRAME1__msg__type_template& CAN__MatrixPayloadUnion_template::message__MyTestframe1() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field message_MyTestframe1 in a non-specific template of union type @CAN_matrix_messages.CAN_MatrixPayloadUnion.");
+if (single_value.union_selection != CAN__MatrixPayloadUnion::ALT_message__MyTestframe1) TTCN_error("Accessing non-selected field message_MyTestframe1 in a template of union type @CAN_matrix_messages.CAN_MatrixPayloadUnion.");
+return *single_value.field_message__MyTestframe1;
+}
+
+CAN__MESSAGE__TESTFRAME2__msg__type_template& CAN__MatrixPayloadUnion_template::message__MyTestframe2()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != CAN__MatrixPayloadUnion::ALT_message__MyTestframe2) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_message__MyTestframe2 = new CAN__MESSAGE__TESTFRAME2__msg__type_template(ANY_VALUE);
+else single_value.field_message__MyTestframe2 = new CAN__MESSAGE__TESTFRAME2__msg__type_template;
+single_value.union_selection = CAN__MatrixPayloadUnion::ALT_message__MyTestframe2;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_message__MyTestframe2;
+}
+
+const CAN__MESSAGE__TESTFRAME2__msg__type_template& CAN__MatrixPayloadUnion_template::message__MyTestframe2() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field message_MyTestframe2 in a non-specific template of union type @CAN_matrix_messages.CAN_MatrixPayloadUnion.");
+if (single_value.union_selection != CAN__MatrixPayloadUnion::ALT_message__MyTestframe2) TTCN_error("Accessing non-selected field message_MyTestframe2 in a template of union type @CAN_matrix_messages.CAN_MatrixPayloadUnion.");
+return *single_value.field_message__MyTestframe2;
+}
+
+CAN__MESSAGE__TESTFRAME3__msg__type_template& CAN__MatrixPayloadUnion_template::message__MyTestframe3()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != CAN__MatrixPayloadUnion::ALT_message__MyTestframe3) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_message__MyTestframe3 = new CAN__MESSAGE__TESTFRAME3__msg__type_template(ANY_VALUE);
+else single_value.field_message__MyTestframe3 = new CAN__MESSAGE__TESTFRAME3__msg__type_template;
+single_value.union_selection = CAN__MatrixPayloadUnion::ALT_message__MyTestframe3;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_message__MyTestframe3;
+}
+
+const CAN__MESSAGE__TESTFRAME3__msg__type_template& CAN__MatrixPayloadUnion_template::message__MyTestframe3() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field message_MyTestframe3 in a non-specific template of union type @CAN_matrix_messages.CAN_MatrixPayloadUnion.");
+if (single_value.union_selection != CAN__MatrixPayloadUnion::ALT_message__MyTestframe3) TTCN_error("Accessing non-selected field message_MyTestframe3 in a template of union type @CAN_matrix_messages.CAN_MatrixPayloadUnion.");
+return *single_value.field_message__MyTestframe3;
+}
+
+CAN__MESSAGE__TESTFRAME4__msg__type_template& CAN__MatrixPayloadUnion_template::message__MyTestframe4()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != CAN__MatrixPayloadUnion::ALT_message__MyTestframe4) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_message__MyTestframe4 = new CAN__MESSAGE__TESTFRAME4__msg__type_template(ANY_VALUE);
+else single_value.field_message__MyTestframe4 = new CAN__MESSAGE__TESTFRAME4__msg__type_template;
+single_value.union_selection = CAN__MatrixPayloadUnion::ALT_message__MyTestframe4;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_message__MyTestframe4;
+}
+
+const CAN__MESSAGE__TESTFRAME4__msg__type_template& CAN__MatrixPayloadUnion_template::message__MyTestframe4() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field message_MyTestframe4 in a non-specific template of union type @CAN_matrix_messages.CAN_MatrixPayloadUnion.");
+if (single_value.union_selection != CAN__MatrixPayloadUnion::ALT_message__MyTestframe4) TTCN_error("Accessing non-selected field message_MyTestframe4 in a template of union type @CAN_matrix_messages.CAN_MatrixPayloadUnion.");
+return *single_value.field_message__MyTestframe4;
+}
+
+CAN__MESSAGE__TESTFRAME5__msg__type_template& CAN__MatrixPayloadUnion_template::message__MyTestframe5()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != CAN__MatrixPayloadUnion::ALT_message__MyTestframe5) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_message__MyTestframe5 = new CAN__MESSAGE__TESTFRAME5__msg__type_template(ANY_VALUE);
+else single_value.field_message__MyTestframe5 = new CAN__MESSAGE__TESTFRAME5__msg__type_template;
+single_value.union_selection = CAN__MatrixPayloadUnion::ALT_message__MyTestframe5;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_message__MyTestframe5;
+}
+
+const CAN__MESSAGE__TESTFRAME5__msg__type_template& CAN__MatrixPayloadUnion_template::message__MyTestframe5() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field message_MyTestframe5 in a non-specific template of union type @CAN_matrix_messages.CAN_MatrixPayloadUnion.");
+if (single_value.union_selection != CAN__MatrixPayloadUnion::ALT_message__MyTestframe5) TTCN_error("Accessing non-selected field message_MyTestframe5 in a template of union type @CAN_matrix_messages.CAN_MatrixPayloadUnion.");
+return *single_value.field_message__MyTestframe5;
+}
+
+CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template& CAN__MatrixPayloadUnion_template::message__extendedFrame1()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != CAN__MatrixPayloadUnion::ALT_message__extendedFrame1) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_message__extendedFrame1 = new CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template(ANY_VALUE);
+else single_value.field_message__extendedFrame1 = new CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template;
+single_value.union_selection = CAN__MatrixPayloadUnion::ALT_message__extendedFrame1;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_message__extendedFrame1;
+}
+
+const CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template& CAN__MatrixPayloadUnion_template::message__extendedFrame1() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field message_extendedFrame1 in a non-specific template of union type @CAN_matrix_messages.CAN_MatrixPayloadUnion.");
+if (single_value.union_selection != CAN__MatrixPayloadUnion::ALT_message__extendedFrame1) TTCN_error("Accessing non-selected field message_extendedFrame1 in a template of union type @CAN_matrix_messages.CAN_MatrixPayloadUnion.");
+return *single_value.field_message__extendedFrame1;
+}
+
+boolean CAN__MatrixPayloadUnion_template::ischosen(CAN__MatrixPayloadUnion::union_selection_type checked_selection) const
+{
+if (checked_selection == CAN__MatrixPayloadUnion::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @CAN_matrix_messages.CAN_MatrixPayloadUnion.");
+switch (template_selection) {
+case SPECIFIC_VALUE:
+if (single_value.union_selection == CAN__MatrixPayloadUnion::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @CAN_matrix_messages.CAN_MatrixPayloadUnion.");
+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 @CAN_matrix_messages.CAN_MatrixPayloadUnion 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 CAN__MatrixPayloadUnion_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe0:
+TTCN_Logger::log_event_str("{ message_MyTestframe0 := ");
+single_value.field_message__MyTestframe0->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe1:
+TTCN_Logger::log_event_str("{ message_MyTestframe1 := ");
+single_value.field_message__MyTestframe1->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe2:
+TTCN_Logger::log_event_str("{ message_MyTestframe2 := ");
+single_value.field_message__MyTestframe2->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe3:
+TTCN_Logger::log_event_str("{ message_MyTestframe3 := ");
+single_value.field_message__MyTestframe3->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe4:
+TTCN_Logger::log_event_str("{ message_MyTestframe4 := ");
+single_value.field_message__MyTestframe4->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe5:
+TTCN_Logger::log_event_str("{ message_MyTestframe5 := ");
+single_value.field_message__MyTestframe5->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case CAN__MatrixPayloadUnion::ALT_message__extendedFrame1:
+TTCN_Logger::log_event_str("{ message_extendedFrame1 := ");
+single_value.field_message__extendedFrame1->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 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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void CAN__MatrixPayloadUnion_template::log_match(const CAN__MatrixPayloadUnion& 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()) {
+switch (single_value.union_selection) {
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe0:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".message_MyTestframe0");
+single_value.field_message__MyTestframe0->log_match(match_value.message__MyTestframe0(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ message_MyTestframe0 := ");
+single_value.field_message__MyTestframe0->log_match(match_value.message__MyTestframe0(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe1:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".message_MyTestframe1");
+single_value.field_message__MyTestframe1->log_match(match_value.message__MyTestframe1(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ message_MyTestframe1 := ");
+single_value.field_message__MyTestframe1->log_match(match_value.message__MyTestframe1(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe2:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".message_MyTestframe2");
+single_value.field_message__MyTestframe2->log_match(match_value.message__MyTestframe2(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ message_MyTestframe2 := ");
+single_value.field_message__MyTestframe2->log_match(match_value.message__MyTestframe2(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe3:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".message_MyTestframe3");
+single_value.field_message__MyTestframe3->log_match(match_value.message__MyTestframe3(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ message_MyTestframe3 := ");
+single_value.field_message__MyTestframe3->log_match(match_value.message__MyTestframe3(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe4:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".message_MyTestframe4");
+single_value.field_message__MyTestframe4->log_match(match_value.message__MyTestframe4(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ message_MyTestframe4 := ");
+single_value.field_message__MyTestframe4->log_match(match_value.message__MyTestframe4(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe5:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".message_MyTestframe5");
+single_value.field_message__MyTestframe5->log_match(match_value.message__MyTestframe5(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ message_MyTestframe5 := ");
+single_value.field_message__MyTestframe5->log_match(match_value.message__MyTestframe5(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case CAN__MatrixPayloadUnion::ALT_message__extendedFrame1:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".message_extendedFrame1");
+single_value.field_message__extendedFrame1->log_match(match_value.message__extendedFrame1(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ message_extendedFrame1 := ");
+single_value.field_message__extendedFrame1->log_match(match_value.message__extendedFrame1(), 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 CAN__MatrixPayloadUnion_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 CAN__MatrixPayloadUnion::ALT_message__MyTestframe0:
+single_value.field_message__MyTestframe0->encode_text(text_buf);
+break;
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe1:
+single_value.field_message__MyTestframe1->encode_text(text_buf);
+break;
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe2:
+single_value.field_message__MyTestframe2->encode_text(text_buf);
+break;
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe3:
+single_value.field_message__MyTestframe3->encode_text(text_buf);
+break;
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe4:
+single_value.field_message__MyTestframe4->encode_text(text_buf);
+break;
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe5:
+single_value.field_message__MyTestframe5->encode_text(text_buf);
+break;
+case CAN__MatrixPayloadUnion::ALT_message__extendedFrame1:
+single_value.field_message__extendedFrame1->encode_text(text_buf);
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @CAN_matrix_messages.CAN_MatrixPayloadUnion.");
+}
+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 @CAN_matrix_messages.CAN_MatrixPayloadUnion.");
+}
+}
+
+void CAN__MatrixPayloadUnion_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+{
+single_value.union_selection = CAN__MatrixPayloadUnion::UNBOUND_VALUE;
+CAN__MatrixPayloadUnion::union_selection_type new_selection = (CAN__MatrixPayloadUnion::union_selection_type)text_buf.pull_int().get_val();
+switch (new_selection) {
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe0:
+single_value.field_message__MyTestframe0 = new CAN__MESSAGE__TESTFRAME0__msg__type_template;
+single_value.field_message__MyTestframe0->decode_text(text_buf);
+break;
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe1:
+single_value.field_message__MyTestframe1 = new CAN__MESSAGE__TESTFRAME1__msg__type_template;
+single_value.field_message__MyTestframe1->decode_text(text_buf);
+break;
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe2:
+single_value.field_message__MyTestframe2 = new CAN__MESSAGE__TESTFRAME2__msg__type_template;
+single_value.field_message__MyTestframe2->decode_text(text_buf);
+break;
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe3:
+single_value.field_message__MyTestframe3 = new CAN__MESSAGE__TESTFRAME3__msg__type_template;
+single_value.field_message__MyTestframe3->decode_text(text_buf);
+break;
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe4:
+single_value.field_message__MyTestframe4 = new CAN__MESSAGE__TESTFRAME4__msg__type_template;
+single_value.field_message__MyTestframe4->decode_text(text_buf);
+break;
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe5:
+single_value.field_message__MyTestframe5 = new CAN__MESSAGE__TESTFRAME5__msg__type_template;
+single_value.field_message__MyTestframe5->decode_text(text_buf);
+break;
+case CAN__MatrixPayloadUnion::ALT_message__extendedFrame1:
+single_value.field_message__extendedFrame1 = new CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template;
+single_value.field_message__extendedFrame1->decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @CAN_matrix_messages.CAN_MatrixPayloadUnion.");
+}
+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 CAN__MatrixPayloadUnion_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 @CAN_matrix_messages.CAN_MatrixPayloadUnion.");
+}
+}
+
+boolean CAN__MatrixPayloadUnion_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean CAN__MatrixPayloadUnion_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 CAN__MatrixPayloadUnion_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 `@CAN_matrix_messages.CAN_MatrixPayloadUnion'");
+    }
+    if (strcmp("message_MyTestframe0", param_field) == 0) {
+      message__MyTestframe0().set_param(param);
+      return;
+    } else if (strcmp("message_MyTestframe1", param_field) == 0) {
+      message__MyTestframe1().set_param(param);
+      return;
+    } else if (strcmp("message_MyTestframe2", param_field) == 0) {
+      message__MyTestframe2().set_param(param);
+      return;
+    } else if (strcmp("message_MyTestframe3", param_field) == 0) {
+      message__MyTestframe3().set_param(param);
+      return;
+    } else if (strcmp("message_MyTestframe4", param_field) == 0) {
+      message__MyTestframe4().set_param(param);
+      return;
+    } else if (strcmp("message_MyTestframe5", param_field) == 0) {
+      message__MyTestframe5().set_param(param);
+      return;
+    } else if (strcmp("message_extendedFrame1", param_field) == 0) {
+      message__extendedFrame1().set_param(param);
+      return;
+    } else param.error("Field `%s' not found in union template type `@CAN_matrix_messages.CAN_MatrixPayloadUnion'", 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: {
+    CAN__MatrixPayloadUnion_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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", "@CAN_matrix_messages.CAN_MatrixPayloadUnion");
+    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, "message_MyTestframe0")) {
+      message__MyTestframe0().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "message_MyTestframe1")) {
+      message__MyTestframe1().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "message_MyTestframe2")) {
+      message__MyTestframe2().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "message_MyTestframe3")) {
+      message__MyTestframe3().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "message_MyTestframe4")) {
+      message__MyTestframe4().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "message_MyTestframe5")) {
+      message__MyTestframe5().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "message_extendedFrame1")) {
+      message__extendedFrame1().set_param(*mp_last);
+      break;
+    }
+    mp_last->error("Field %s does not exist in type @CAN_matrix_messages.CAN_MatrixPayloadUnion.", last_name);
+  } break;
+  default:
+    param.type_error("union template", "@CAN_matrix_messages.CAN_MatrixPayloadUnion");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void CAN__MatrixPayloadUnion_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 CAN__MatrixPayloadUnion::ALT_message__MyTestframe0:
+single_value.field_message__MyTestframe0->check_restriction(t_res, t_name ? t_name : "@CAN_matrix_messages.CAN_MatrixPayloadUnion");
+return;
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe1:
+single_value.field_message__MyTestframe1->check_restriction(t_res, t_name ? t_name : "@CAN_matrix_messages.CAN_MatrixPayloadUnion");
+return;
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe2:
+single_value.field_message__MyTestframe2->check_restriction(t_res, t_name ? t_name : "@CAN_matrix_messages.CAN_MatrixPayloadUnion");
+return;
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe3:
+single_value.field_message__MyTestframe3->check_restriction(t_res, t_name ? t_name : "@CAN_matrix_messages.CAN_MatrixPayloadUnion");
+return;
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe4:
+single_value.field_message__MyTestframe4->check_restriction(t_res, t_name ? t_name : "@CAN_matrix_messages.CAN_MatrixPayloadUnion");
+return;
+case CAN__MatrixPayloadUnion::ALT_message__MyTestframe5:
+single_value.field_message__MyTestframe5->check_restriction(t_res, t_name ? t_name : "@CAN_matrix_messages.CAN_MatrixPayloadUnion");
+return;
+case CAN__MatrixPayloadUnion::ALT_message__extendedFrame1:
+single_value.field_message__extendedFrame1->check_restriction(t_res, t_name ? t_name : "@CAN_matrix_messages.CAN_MatrixPayloadUnion");
+return;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @CAN_matrix_messages.CAN_MatrixPayloadUnion.");
+}
+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 : "@CAN_matrix_messages.CAN_MatrixPayloadUnion");
+}
+
+CAN__MatrixUnion::CAN__MatrixUnion()
+{
+}
+
+CAN__MatrixUnion::CAN__MatrixUnion(const OCTETSTRING& par_can__id,
+    const CAN__MatrixPayloadUnion& par_can__pdu)
+  :   field_can__id(par_can__id),
+  field_can__pdu(par_can__pdu)
+{
+}
+
+CAN__MatrixUnion::CAN__MatrixUnion(const CAN__MatrixUnion& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @CAN_matrix_messages.CAN_MatrixUnion.");
+if (other_value.can__id().is_bound()) field_can__id = other_value.can__id();
+else field_can__id.clean_up();
+if (other_value.can__pdu().is_bound()) field_can__pdu = other_value.can__pdu();
+else field_can__pdu.clean_up();
+}
+
+void CAN__MatrixUnion::clean_up()
+{
+field_can__id.clean_up();
+field_can__pdu.clean_up();
+}
+
+const TTCN_Typedescriptor_t* CAN__MatrixUnion::get_descriptor() const { return &CAN__MatrixUnion_descr_; }
+CAN__MatrixUnion& CAN__MatrixUnion::operator=(const CAN__MatrixUnion& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @CAN_matrix_messages.CAN_MatrixUnion.");
+  if (other_value.can__id().is_bound()) field_can__id = other_value.can__id();
+  else field_can__id.clean_up();
+  if (other_value.can__pdu().is_bound()) field_can__pdu = other_value.can__pdu();
+  else field_can__pdu.clean_up();
+}
+return *this;
+}
+
+boolean CAN__MatrixUnion::operator==(const CAN__MatrixUnion& other_value) const
+{
+return field_can__id==other_value.field_can__id
+  && field_can__pdu==other_value.field_can__pdu;
+}
+
+boolean CAN__MatrixUnion::is_bound() const
+{
+return (field_can__id.is_bound())
+  || (field_can__pdu.is_bound());
+}
+boolean CAN__MatrixUnion::is_value() const
+{
+return field_can__id.is_value()
+  && field_can__pdu.is_value();
+}
+void CAN__MatrixUnion::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ can_id := ");
+field_can__id.log();
+TTCN_Logger::log_event_str(", can_pdu := ");
+field_can__pdu.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void CAN__MatrixUnion::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 @CAN_matrix_messages.CAN_MatrixUnion 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) can__id().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) can__pdu().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(), "can_id")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          can__id().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(), "can_pdu")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          can__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 @CAN_matrix_messages.CAN_MatrixUnion: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@CAN_matrix_messages.CAN_MatrixUnion");
+  }
+}
+
+void CAN__MatrixUnion::set_implicit_omit()
+{
+if (can__id().is_bound()) can__id().set_implicit_omit();
+if (can__pdu().is_bound()) can__pdu().set_implicit_omit();
+}
+
+void CAN__MatrixUnion::encode_text(Text_Buf& text_buf) const
+{
+field_can__id.encode_text(text_buf);
+field_can__pdu.encode_text(text_buf);
+}
+
+void CAN__MatrixUnion::decode_text(Text_Buf& text_buf)
+{
+field_can__id.decode_text(text_buf);
+field_can__pdu.decode_text(text_buf);
+}
+
+void CAN__MatrixUnion::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void CAN__MatrixUnion::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int CAN__MatrixUnion::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, Can::CAN__id_descr_.raw->forceomit);
+  decoded_field_length = field_can__id.RAW_decode(Can::CAN__id_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_can__id ==  os_0) selected_field = 0;
+  else if (field_can__id ==  os_1) selected_field = 1;
+  else if (field_can__id ==  os_2) selected_field = 2;
+  else if (field_can__id ==  os_3) selected_field = 3;
+  else if (field_can__id ==  os_4) selected_field = 4;
+  else if (field_can__id ==  os_5) selected_field = 5;
+  else if (field_can__id ==  os_6) selected_field = 6;
+  else selected_field = -1;
+  RAW_Force_Omit field_1_force_omit(1, force_omit, CAN__MatrixUnion_can__pdu_descr_.raw->forceomit);
+  decoded_field_length = field_can__pdu.RAW_decode(CAN__MatrixUnion_can__pdu_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 CAN__MatrixUnion::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, Can::CAN__id_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, CAN__MatrixUnion_can__pdu_descr_.raw);
+  encoded_length += field_can__id.RAW_encode(Can::CAN__id_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_can__pdu.RAW_encode(CAN__MatrixUnion_can__pdu_descr_, *myleaf.body.node.nodes[1]);
+  switch (field_can__pdu.get_selection()) {
+  case CAN__MatrixPayloadUnion::ALT_message__MyTestframe0:
+  if (field_can__id !=  os_0) {
+  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)
+     os_0.RAW_encode(Can::CAN__id_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 CAN__MatrixPayloadUnion::ALT_message__MyTestframe1:
+  if (field_can__id !=  os_1) {
+  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)
+     os_1.RAW_encode(Can::CAN__id_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 CAN__MatrixPayloadUnion::ALT_message__MyTestframe2:
+  if (field_can__id !=  os_2) {
+  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)
+     os_2.RAW_encode(Can::CAN__id_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 CAN__MatrixPayloadUnion::ALT_message__MyTestframe3:
+  if (field_can__id !=  os_3) {
+  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)
+     os_3.RAW_encode(Can::CAN__id_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 CAN__MatrixPayloadUnion::ALT_message__MyTestframe4:
+  if (field_can__id !=  os_4) {
+  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)
+     os_4.RAW_encode(Can::CAN__id_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 CAN__MatrixPayloadUnion::ALT_message__MyTestframe5:
+  if (field_can__id !=  os_5) {
+  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)
+     os_5.RAW_encode(Can::CAN__id_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 CAN__MatrixPayloadUnion::ALT_message__extendedFrame1:
+  if (field_can__id !=  os_6) {
+  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)
+     os_6.RAW_encode(Can::CAN__id_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 CAN__MatrixUnion_template::single_value_struct {
+OCTETSTRING_template field_can__id;
+CAN__MatrixPayloadUnion_template field_can__pdu;
+};
+
+void CAN__MatrixUnion_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_can__id = ANY_VALUE;
+single_value->field_can__pdu = ANY_VALUE;
+}
+}
+}
+
+void CAN__MatrixUnion_template::copy_value(const CAN__MatrixUnion& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.can__id().is_bound()) {
+  single_value->field_can__id = other_value.can__id();
+} else {
+  single_value->field_can__id.clean_up();
+}
+if (other_value.can__pdu().is_bound()) {
+  single_value->field_can__pdu = other_value.can__pdu();
+} else {
+  single_value->field_can__pdu.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void CAN__MatrixUnion_template::copy_template(const CAN__MatrixUnion_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.can__id().get_selection()) {
+single_value->field_can__id = other_value.can__id();
+} else {
+single_value->field_can__id.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.can__pdu().get_selection()) {
+single_value->field_can__pdu = other_value.can__pdu();
+} else {
+single_value->field_can__pdu.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new CAN__MatrixUnion_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @CAN_matrix_messages.CAN_MatrixUnion.");
+break;
+}
+set_selection(other_value);
+}
+
+CAN__MatrixUnion_template::CAN__MatrixUnion_template()
+{
+}
+
+CAN__MatrixUnion_template::CAN__MatrixUnion_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+CAN__MatrixUnion_template::CAN__MatrixUnion_template(const CAN__MatrixUnion& other_value)
+{
+copy_value(other_value);
+}
+
+CAN__MatrixUnion_template::CAN__MatrixUnion_template(const OPTIONAL<CAN__MatrixUnion>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CAN__MatrixUnion&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @CAN_matrix_messages.CAN_MatrixUnion from an unbound optional field.");
+}
+}
+
+CAN__MatrixUnion_template::CAN__MatrixUnion_template(const CAN__MatrixUnion_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+CAN__MatrixUnion_template::~CAN__MatrixUnion_template()
+{
+clean_up();
+}
+
+CAN__MatrixUnion_template& CAN__MatrixUnion_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+CAN__MatrixUnion_template& CAN__MatrixUnion_template::operator=(const CAN__MatrixUnion& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+CAN__MatrixUnion_template& CAN__MatrixUnion_template::operator=(const OPTIONAL<CAN__MatrixUnion>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CAN__MatrixUnion&)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 @CAN_matrix_messages.CAN_MatrixUnion.");
+}
+return *this;
+}
+
+CAN__MatrixUnion_template& CAN__MatrixUnion_template::operator=(const CAN__MatrixUnion_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean CAN__MatrixUnion_template::match(const CAN__MatrixUnion& 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.can__id().is_bound()) return FALSE;
+if(!single_value->field_can__id.match(other_value.can__id(), legacy))return FALSE;
+if(!other_value.can__pdu().is_bound()) return FALSE;
+if(!single_value->field_can__pdu.match(other_value.can__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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @CAN_matrix_messages.CAN_MatrixUnion.");
+}
+return FALSE;
+}
+
+boolean CAN__MatrixUnion_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_can__id.is_bound()
+
+ ||single_value->field_can__pdu.is_bound()
+;
+}
+
+boolean CAN__MatrixUnion_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_can__id.is_value()
+ &&single_value->field_can__pdu.is_value();
+}
+
+void CAN__MatrixUnion_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+CAN__MatrixUnion CAN__MatrixUnion_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 @CAN_matrix_messages.CAN_MatrixUnion.");
+CAN__MatrixUnion ret_val;
+if (single_value->field_can__id.is_bound()) {
+ret_val.can__id() = single_value->field_can__id.valueof();
+}
+if (single_value->field_can__pdu.is_bound()) {
+ret_val.can__pdu() = single_value->field_can__pdu.valueof();
+}
+return ret_val;
+}
+
+void CAN__MatrixUnion_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @CAN_matrix_messages.CAN_MatrixUnion.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new CAN__MatrixUnion_template[list_length];
+}
+
+CAN__MatrixUnion_template& CAN__MatrixUnion_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @CAN_matrix_messages.CAN_MatrixUnion.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @CAN_matrix_messages.CAN_MatrixUnion.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& CAN__MatrixUnion_template::can__id()
+{
+set_specific();
+return single_value->field_can__id;
+}
+
+const OCTETSTRING_template& CAN__MatrixUnion_template::can__id() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field can_id of a non-specific template of type @CAN_matrix_messages.CAN_MatrixUnion.");
+return single_value->field_can__id;
+}
+
+CAN__MatrixPayloadUnion_template& CAN__MatrixUnion_template::can__pdu()
+{
+set_specific();
+return single_value->field_can__pdu;
+}
+
+const CAN__MatrixPayloadUnion_template& CAN__MatrixUnion_template::can__pdu() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field can_pdu of a non-specific template of type @CAN_matrix_messages.CAN_MatrixUnion.");
+return single_value->field_can__pdu;
+}
+
+int CAN__MatrixUnion_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @CAN_matrix_messages.CAN_MatrixUnion 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 @CAN_matrix_messages.CAN_MatrixUnion 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 @CAN_matrix_messages.CAN_MatrixUnion containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @CAN_matrix_messages.CAN_MatrixUnion containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @CAN_matrix_messages.CAN_MatrixUnion containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @CAN_matrix_messages.CAN_MatrixUnion containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @CAN_matrix_messages.CAN_MatrixUnion.");
+  }
+  return 0;
+}
+
+void CAN__MatrixUnion_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ can_id := ");
+single_value->field_can__id.log();
+TTCN_Logger::log_event_str(", can_pdu := ");
+single_value->field_can__pdu.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void CAN__MatrixUnion_template::log_match(const CAN__MatrixUnion& 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_can__id.match(match_value.can__id(), legacy)){
+TTCN_Logger::log_logmatch_info(".can_id");
+single_value->field_can__id.log_match(match_value.can__id(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_can__pdu.match(match_value.can__pdu(), legacy)){
+TTCN_Logger::log_logmatch_info(".can_pdu");
+single_value->field_can__pdu.log_match(match_value.can__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("{ can_id := ");
+single_value->field_can__id.log_match(match_value.can__id(), legacy);
+TTCN_Logger::log_event_str(", can_pdu := ");
+single_value->field_can__pdu.log_match(match_value.can__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 CAN__MatrixUnion_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_can__id.encode_text(text_buf);
+single_value->field_can__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 @CAN_matrix_messages.CAN_MatrixUnion.");
+}
+}
+
+void CAN__MatrixUnion_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_can__id.decode_text(text_buf);
+single_value->field_can__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 CAN__MatrixUnion_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 @CAN_matrix_messages.CAN_MatrixUnion.");
+}
+}
+
+void CAN__MatrixUnion_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: {
+    CAN__MatrixUnion_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @CAN_matrix_messages.CAN_MatrixUnion 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) can__id().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) can__pdu().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(), "can_id")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          can__id().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(), "can_pdu")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          can__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 @CAN_matrix_messages.CAN_MatrixUnion: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@CAN_matrix_messages.CAN_MatrixUnion");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void CAN__MatrixUnion_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_can__id.check_restriction(t_res, t_name ? t_name : "@CAN_matrix_messages.CAN_MatrixUnion");
+single_value->field_can__pdu.check_restriction(t_res, t_name ? t_name : "@CAN_matrix_messages.CAN_MatrixUnion");
+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 : "@CAN_matrix_messages.CAN_MatrixUnion");
+}
+
+boolean CAN__MatrixUnion_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean CAN__MatrixUnion_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+
+/* Bodies of static functions */
+
+static void pre_init_module()
+{
+TTCN_Location current_location("CAN_matrix_messages.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "CAN_matrix_messages");
+Can::module_object.pre_init_module();
+CAN__matrix__signals::module_object.pre_init_module();
+}
+
+static void post_init_module()
+{
+TTCN_Location current_location("CAN_matrix_messages.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "CAN_matrix_messages");
+Can::module_object.post_init_module();
+CAN__matrix__signals::module_object.post_init_module();
+}
+
+
+} /* end of namespace */
diff --git a/demo/CAN_matrix_messages.d b/demo/CAN_matrix_messages.d
new file mode 100644
index 0000000..d8901e9
--- /dev/null
+++ b/demo/CAN_matrix_messages.d
@@ -0,0 +1,59 @@
+CAN_matrix_messages.o CAN_matrix_messages.d : CAN_matrix_messages.cc CAN_matrix_messages.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TTCN3.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/version.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/cversion.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Types.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Vector.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Error.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Basetype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Encdec.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RInt.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON_Tokenizer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Logger.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Template.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Integer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ttcn3float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Boolean.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Null.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Optional.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Param_Types.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/memory.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/BER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Textbuf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Parameters.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XmlReader.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Objid.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Verdicttype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Component.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Bitstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RAW.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/CharCoding.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Hexstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Octetstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Any.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Universal_charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Struct_of.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Array.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_CharacterString.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_External.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TEXT.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_EmbeddedPDV.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Addfunc.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Timer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Port.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Event_Handler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/TitanLoggerApiSimple.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/PreGenRecordOf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Module_list.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Snapshot.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Default.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Runtime.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/OER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Profiler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ProfilerTools.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Debugger.hh Can.hh \
+ General_Types.hh CAN_matrix_signals.hh CAN_matrix_general_types.hh
diff --git a/demo/CAN_matrix_messages.hh b/demo/CAN_matrix_messages.hh
new file mode 100644
index 0000000..f10355f
--- /dev/null
+++ b/demo/CAN_matrix_messages.hh
@@ -0,0 +1,972 @@
+// This C++ header file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+#ifndef CAN__matrix__messages_HH
+#define CAN__matrix__messages_HH
+
+#ifdef TITAN_RUNTIME_2
+#error Generated code does not match with used runtime.\
+ Code was generated without -R option but -DTITAN_RUNTIME_2 was used.
+#endif
+
+/* Header file includes */
+
+#include <TTCN3.hh>
+#include "Can.hh"
+#include "CAN_matrix_signals.hh"
+
+#if TTCN3_VERSION != 60600
+#error Version mismatch detected.\
+ Please check the version of the TTCN-3 compiler and the base library.\
+ Run make clean and rebuild the project if the version of the compiler changed recently.
+#endif
+
+#ifndef LINUX
+#error This file should be compiled on LINUX
+#endif
+
+#undef CAN__matrix__messages_HH
+#endif
+
+namespace CAN__matrix__messages {
+
+/* Forward declarations of classes */
+
+class CAN__MESSAGE__TESTFRAME0__msg__type;
+class CAN__MESSAGE__TESTFRAME0__msg__type_template;
+class CAN__MESSAGE__TESTFRAME1__msg__type;
+class CAN__MESSAGE__TESTFRAME1__msg__type_template;
+class CAN__MESSAGE__TESTFRAME2__msg__type;
+class CAN__MESSAGE__TESTFRAME2__msg__type_template;
+class CAN__MESSAGE__TESTFRAME3__msg__type;
+class CAN__MESSAGE__TESTFRAME3__msg__type_template;
+class CAN__MESSAGE__TESTFRAME4__msg__type;
+class CAN__MESSAGE__TESTFRAME4__msg__type_template;
+class CAN__MESSAGE__TESTFRAME5__msg__type;
+class CAN__MESSAGE__TESTFRAME5__msg__type_template;
+class CAN__MESSAGE__EXTENDEDFRAME1__msg__type;
+class CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template;
+class CAN__MatrixPayloadUnion;
+class CAN__MatrixPayloadUnion_template;
+class CAN__MatrixUnion;
+class CAN__MatrixUnion_template;
+
+} /* end of namespace */
+
+#ifndef CAN__matrix__messages_HH
+#define CAN__matrix__messages_HH
+
+namespace CAN__matrix__messages {
+
+/* Class definitions */
+
+class CAN__MESSAGE__TESTFRAME0__msg__type : public Base_Type {
+  BITSTRING field_test__sig__11__bit__bitstring__little__endian__coded;
+  BITSTRING field_test__sig__5__bit__bitstring__little__endian__coded;
+public:
+  CAN__MESSAGE__TESTFRAME0__msg__type();
+  CAN__MESSAGE__TESTFRAME0__msg__type(const BITSTRING& par_test__sig__11__bit__bitstring__little__endian__coded,
+    const BITSTRING& par_test__sig__5__bit__bitstring__little__endian__coded);
+  CAN__MESSAGE__TESTFRAME0__msg__type(const CAN__MESSAGE__TESTFRAME0__msg__type& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  CAN__MESSAGE__TESTFRAME0__msg__type& operator=(const CAN__MESSAGE__TESTFRAME0__msg__type& other_value);
+  boolean operator==(const CAN__MESSAGE__TESTFRAME0__msg__type& other_value) const;
+  inline boolean operator!=(const CAN__MESSAGE__TESTFRAME0__msg__type& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BITSTRING& test__sig__11__bit__bitstring__little__endian__coded()
+    {return field_test__sig__11__bit__bitstring__little__endian__coded;}
+  inline const BITSTRING& test__sig__11__bit__bitstring__little__endian__coded() const
+    {return field_test__sig__11__bit__bitstring__little__endian__coded;}
+  inline BITSTRING& test__sig__5__bit__bitstring__little__endian__coded()
+    {return field_test__sig__5__bit__bitstring__little__endian__coded;}
+  inline const BITSTRING& test__sig__5__bit__bitstring__little__endian__coded() const
+    {return field_test__sig__5__bit__bitstring__little__endian__coded;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class CAN__MESSAGE__TESTFRAME0__msg__type_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+CAN__MESSAGE__TESTFRAME0__msg__type_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const CAN__MESSAGE__TESTFRAME0__msg__type& other_value);
+void copy_template(const CAN__MESSAGE__TESTFRAME0__msg__type_template& other_value);
+
+public:
+CAN__MESSAGE__TESTFRAME0__msg__type_template();
+CAN__MESSAGE__TESTFRAME0__msg__type_template(template_sel other_value);
+CAN__MESSAGE__TESTFRAME0__msg__type_template(const CAN__MESSAGE__TESTFRAME0__msg__type& other_value);
+CAN__MESSAGE__TESTFRAME0__msg__type_template(const OPTIONAL<CAN__MESSAGE__TESTFRAME0__msg__type>& other_value);
+CAN__MESSAGE__TESTFRAME0__msg__type_template(const CAN__MESSAGE__TESTFRAME0__msg__type_template& other_value);
+~CAN__MESSAGE__TESTFRAME0__msg__type_template();
+CAN__MESSAGE__TESTFRAME0__msg__type_template& operator=(template_sel other_value);
+CAN__MESSAGE__TESTFRAME0__msg__type_template& operator=(const CAN__MESSAGE__TESTFRAME0__msg__type& other_value);
+CAN__MESSAGE__TESTFRAME0__msg__type_template& operator=(const OPTIONAL<CAN__MESSAGE__TESTFRAME0__msg__type>& other_value);
+CAN__MESSAGE__TESTFRAME0__msg__type_template& operator=(const CAN__MESSAGE__TESTFRAME0__msg__type_template& other_value);
+boolean match(const CAN__MESSAGE__TESTFRAME0__msg__type& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+CAN__MESSAGE__TESTFRAME0__msg__type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+CAN__MESSAGE__TESTFRAME0__msg__type_template& list_item(unsigned int list_index) const;
+BITSTRING_template& test__sig__11__bit__bitstring__little__endian__coded();
+const BITSTRING_template& test__sig__11__bit__bitstring__little__endian__coded() const;
+BITSTRING_template& test__sig__5__bit__bitstring__little__endian__coded();
+const BITSTRING_template& test__sig__5__bit__bitstring__little__endian__coded() const;
+int size_of() const;
+void log() const;
+void log_match(const CAN__MESSAGE__TESTFRAME0__msg__type& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class CAN__MESSAGE__TESTFRAME1__msg__type : public Base_Type {
+  BITSTRING field_test__sig__11__bit__bitstring__big__endian__coded;
+  BITSTRING field_test__sig__5__bit__bitstring__big__endian__coded;
+public:
+  CAN__MESSAGE__TESTFRAME1__msg__type();
+  CAN__MESSAGE__TESTFRAME1__msg__type(const BITSTRING& par_test__sig__11__bit__bitstring__big__endian__coded,
+    const BITSTRING& par_test__sig__5__bit__bitstring__big__endian__coded);
+  CAN__MESSAGE__TESTFRAME1__msg__type(const CAN__MESSAGE__TESTFRAME1__msg__type& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  CAN__MESSAGE__TESTFRAME1__msg__type& operator=(const CAN__MESSAGE__TESTFRAME1__msg__type& other_value);
+  boolean operator==(const CAN__MESSAGE__TESTFRAME1__msg__type& other_value) const;
+  inline boolean operator!=(const CAN__MESSAGE__TESTFRAME1__msg__type& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BITSTRING& test__sig__11__bit__bitstring__big__endian__coded()
+    {return field_test__sig__11__bit__bitstring__big__endian__coded;}
+  inline const BITSTRING& test__sig__11__bit__bitstring__big__endian__coded() const
+    {return field_test__sig__11__bit__bitstring__big__endian__coded;}
+  inline BITSTRING& test__sig__5__bit__bitstring__big__endian__coded()
+    {return field_test__sig__5__bit__bitstring__big__endian__coded;}
+  inline const BITSTRING& test__sig__5__bit__bitstring__big__endian__coded() const
+    {return field_test__sig__5__bit__bitstring__big__endian__coded;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class CAN__MESSAGE__TESTFRAME1__msg__type_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+CAN__MESSAGE__TESTFRAME1__msg__type_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const CAN__MESSAGE__TESTFRAME1__msg__type& other_value);
+void copy_template(const CAN__MESSAGE__TESTFRAME1__msg__type_template& other_value);
+
+public:
+CAN__MESSAGE__TESTFRAME1__msg__type_template();
+CAN__MESSAGE__TESTFRAME1__msg__type_template(template_sel other_value);
+CAN__MESSAGE__TESTFRAME1__msg__type_template(const CAN__MESSAGE__TESTFRAME1__msg__type& other_value);
+CAN__MESSAGE__TESTFRAME1__msg__type_template(const OPTIONAL<CAN__MESSAGE__TESTFRAME1__msg__type>& other_value);
+CAN__MESSAGE__TESTFRAME1__msg__type_template(const CAN__MESSAGE__TESTFRAME1__msg__type_template& other_value);
+~CAN__MESSAGE__TESTFRAME1__msg__type_template();
+CAN__MESSAGE__TESTFRAME1__msg__type_template& operator=(template_sel other_value);
+CAN__MESSAGE__TESTFRAME1__msg__type_template& operator=(const CAN__MESSAGE__TESTFRAME1__msg__type& other_value);
+CAN__MESSAGE__TESTFRAME1__msg__type_template& operator=(const OPTIONAL<CAN__MESSAGE__TESTFRAME1__msg__type>& other_value);
+CAN__MESSAGE__TESTFRAME1__msg__type_template& operator=(const CAN__MESSAGE__TESTFRAME1__msg__type_template& other_value);
+boolean match(const CAN__MESSAGE__TESTFRAME1__msg__type& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+CAN__MESSAGE__TESTFRAME1__msg__type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+CAN__MESSAGE__TESTFRAME1__msg__type_template& list_item(unsigned int list_index) const;
+BITSTRING_template& test__sig__11__bit__bitstring__big__endian__coded();
+const BITSTRING_template& test__sig__11__bit__bitstring__big__endian__coded() const;
+BITSTRING_template& test__sig__5__bit__bitstring__big__endian__coded();
+const BITSTRING_template& test__sig__5__bit__bitstring__big__endian__coded() const;
+int size_of() const;
+void log() const;
+void log_match(const CAN__MESSAGE__TESTFRAME1__msg__type& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class CAN__MESSAGE__TESTFRAME2__msg__type : public Base_Type {
+  INTEGER field_test__sig__11__bit__integer__big__endian__coded;
+  INTEGER field_test__sig__5__bit__integer__big__endian__coded;
+public:
+  CAN__MESSAGE__TESTFRAME2__msg__type();
+  CAN__MESSAGE__TESTFRAME2__msg__type(const INTEGER& par_test__sig__11__bit__integer__big__endian__coded,
+    const INTEGER& par_test__sig__5__bit__integer__big__endian__coded);
+  CAN__MESSAGE__TESTFRAME2__msg__type(const CAN__MESSAGE__TESTFRAME2__msg__type& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  CAN__MESSAGE__TESTFRAME2__msg__type& operator=(const CAN__MESSAGE__TESTFRAME2__msg__type& other_value);
+  boolean operator==(const CAN__MESSAGE__TESTFRAME2__msg__type& other_value) const;
+  inline boolean operator!=(const CAN__MESSAGE__TESTFRAME2__msg__type& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& test__sig__11__bit__integer__big__endian__coded()
+    {return field_test__sig__11__bit__integer__big__endian__coded;}
+  inline const INTEGER& test__sig__11__bit__integer__big__endian__coded() const
+    {return field_test__sig__11__bit__integer__big__endian__coded;}
+  inline INTEGER& test__sig__5__bit__integer__big__endian__coded()
+    {return field_test__sig__5__bit__integer__big__endian__coded;}
+  inline const INTEGER& test__sig__5__bit__integer__big__endian__coded() const
+    {return field_test__sig__5__bit__integer__big__endian__coded;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class CAN__MESSAGE__TESTFRAME2__msg__type_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+CAN__MESSAGE__TESTFRAME2__msg__type_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const CAN__MESSAGE__TESTFRAME2__msg__type& other_value);
+void copy_template(const CAN__MESSAGE__TESTFRAME2__msg__type_template& other_value);
+
+public:
+CAN__MESSAGE__TESTFRAME2__msg__type_template();
+CAN__MESSAGE__TESTFRAME2__msg__type_template(template_sel other_value);
+CAN__MESSAGE__TESTFRAME2__msg__type_template(const CAN__MESSAGE__TESTFRAME2__msg__type& other_value);
+CAN__MESSAGE__TESTFRAME2__msg__type_template(const OPTIONAL<CAN__MESSAGE__TESTFRAME2__msg__type>& other_value);
+CAN__MESSAGE__TESTFRAME2__msg__type_template(const CAN__MESSAGE__TESTFRAME2__msg__type_template& other_value);
+~CAN__MESSAGE__TESTFRAME2__msg__type_template();
+CAN__MESSAGE__TESTFRAME2__msg__type_template& operator=(template_sel other_value);
+CAN__MESSAGE__TESTFRAME2__msg__type_template& operator=(const CAN__MESSAGE__TESTFRAME2__msg__type& other_value);
+CAN__MESSAGE__TESTFRAME2__msg__type_template& operator=(const OPTIONAL<CAN__MESSAGE__TESTFRAME2__msg__type>& other_value);
+CAN__MESSAGE__TESTFRAME2__msg__type_template& operator=(const CAN__MESSAGE__TESTFRAME2__msg__type_template& other_value);
+boolean match(const CAN__MESSAGE__TESTFRAME2__msg__type& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+CAN__MESSAGE__TESTFRAME2__msg__type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+CAN__MESSAGE__TESTFRAME2__msg__type_template& list_item(unsigned int list_index) const;
+INTEGER_template& test__sig__11__bit__integer__big__endian__coded();
+const INTEGER_template& test__sig__11__bit__integer__big__endian__coded() const;
+INTEGER_template& test__sig__5__bit__integer__big__endian__coded();
+const INTEGER_template& test__sig__5__bit__integer__big__endian__coded() const;
+int size_of() const;
+void log() const;
+void log_match(const CAN__MESSAGE__TESTFRAME2__msg__type& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class CAN__MESSAGE__TESTFRAME3__msg__type : public Base_Type {
+  OCTETSTRING field_test__sig__1__byte__octetstring__big__endian__coded;
+  OCTETSTRING field_test__sig__2__byte__octetstring__big__endian__coded;
+public:
+  CAN__MESSAGE__TESTFRAME3__msg__type();
+  CAN__MESSAGE__TESTFRAME3__msg__type(const OCTETSTRING& par_test__sig__1__byte__octetstring__big__endian__coded,
+    const OCTETSTRING& par_test__sig__2__byte__octetstring__big__endian__coded);
+  CAN__MESSAGE__TESTFRAME3__msg__type(const CAN__MESSAGE__TESTFRAME3__msg__type& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  CAN__MESSAGE__TESTFRAME3__msg__type& operator=(const CAN__MESSAGE__TESTFRAME3__msg__type& other_value);
+  boolean operator==(const CAN__MESSAGE__TESTFRAME3__msg__type& other_value) const;
+  inline boolean operator!=(const CAN__MESSAGE__TESTFRAME3__msg__type& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& test__sig__1__byte__octetstring__big__endian__coded()
+    {return field_test__sig__1__byte__octetstring__big__endian__coded;}
+  inline const OCTETSTRING& test__sig__1__byte__octetstring__big__endian__coded() const
+    {return field_test__sig__1__byte__octetstring__big__endian__coded;}
+  inline OCTETSTRING& test__sig__2__byte__octetstring__big__endian__coded()
+    {return field_test__sig__2__byte__octetstring__big__endian__coded;}
+  inline const OCTETSTRING& test__sig__2__byte__octetstring__big__endian__coded() const
+    {return field_test__sig__2__byte__octetstring__big__endian__coded;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class CAN__MESSAGE__TESTFRAME3__msg__type_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+CAN__MESSAGE__TESTFRAME3__msg__type_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const CAN__MESSAGE__TESTFRAME3__msg__type& other_value);
+void copy_template(const CAN__MESSAGE__TESTFRAME3__msg__type_template& other_value);
+
+public:
+CAN__MESSAGE__TESTFRAME3__msg__type_template();
+CAN__MESSAGE__TESTFRAME3__msg__type_template(template_sel other_value);
+CAN__MESSAGE__TESTFRAME3__msg__type_template(const CAN__MESSAGE__TESTFRAME3__msg__type& other_value);
+CAN__MESSAGE__TESTFRAME3__msg__type_template(const OPTIONAL<CAN__MESSAGE__TESTFRAME3__msg__type>& other_value);
+CAN__MESSAGE__TESTFRAME3__msg__type_template(const CAN__MESSAGE__TESTFRAME3__msg__type_template& other_value);
+~CAN__MESSAGE__TESTFRAME3__msg__type_template();
+CAN__MESSAGE__TESTFRAME3__msg__type_template& operator=(template_sel other_value);
+CAN__MESSAGE__TESTFRAME3__msg__type_template& operator=(const CAN__MESSAGE__TESTFRAME3__msg__type& other_value);
+CAN__MESSAGE__TESTFRAME3__msg__type_template& operator=(const OPTIONAL<CAN__MESSAGE__TESTFRAME3__msg__type>& other_value);
+CAN__MESSAGE__TESTFRAME3__msg__type_template& operator=(const CAN__MESSAGE__TESTFRAME3__msg__type_template& other_value);
+boolean match(const CAN__MESSAGE__TESTFRAME3__msg__type& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+CAN__MESSAGE__TESTFRAME3__msg__type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+CAN__MESSAGE__TESTFRAME3__msg__type_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& test__sig__1__byte__octetstring__big__endian__coded();
+const OCTETSTRING_template& test__sig__1__byte__octetstring__big__endian__coded() const;
+OCTETSTRING_template& test__sig__2__byte__octetstring__big__endian__coded();
+const OCTETSTRING_template& test__sig__2__byte__octetstring__big__endian__coded() const;
+int size_of() const;
+void log() const;
+void log_match(const CAN__MESSAGE__TESTFRAME3__msg__type& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class CAN__MESSAGE__TESTFRAME4__msg__type : public Base_Type {
+  INTEGER field_test__unsig__9__bit__2__padded__integer__big__endian__coded;
+  INTEGER field_test__sig__5__bit__integer__big__endian__coded;
+public:
+  CAN__MESSAGE__TESTFRAME4__msg__type();
+  CAN__MESSAGE__TESTFRAME4__msg__type(const INTEGER& par_test__unsig__9__bit__2__padded__integer__big__endian__coded,
+    const INTEGER& par_test__sig__5__bit__integer__big__endian__coded);
+  CAN__MESSAGE__TESTFRAME4__msg__type(const CAN__MESSAGE__TESTFRAME4__msg__type& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  CAN__MESSAGE__TESTFRAME4__msg__type& operator=(const CAN__MESSAGE__TESTFRAME4__msg__type& other_value);
+  boolean operator==(const CAN__MESSAGE__TESTFRAME4__msg__type& other_value) const;
+  inline boolean operator!=(const CAN__MESSAGE__TESTFRAME4__msg__type& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& test__unsig__9__bit__2__padded__integer__big__endian__coded()
+    {return field_test__unsig__9__bit__2__padded__integer__big__endian__coded;}
+  inline const INTEGER& test__unsig__9__bit__2__padded__integer__big__endian__coded() const
+    {return field_test__unsig__9__bit__2__padded__integer__big__endian__coded;}
+  inline INTEGER& test__sig__5__bit__integer__big__endian__coded()
+    {return field_test__sig__5__bit__integer__big__endian__coded;}
+  inline const INTEGER& test__sig__5__bit__integer__big__endian__coded() const
+    {return field_test__sig__5__bit__integer__big__endian__coded;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class CAN__MESSAGE__TESTFRAME4__msg__type_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+CAN__MESSAGE__TESTFRAME4__msg__type_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const CAN__MESSAGE__TESTFRAME4__msg__type& other_value);
+void copy_template(const CAN__MESSAGE__TESTFRAME4__msg__type_template& other_value);
+
+public:
+CAN__MESSAGE__TESTFRAME4__msg__type_template();
+CAN__MESSAGE__TESTFRAME4__msg__type_template(template_sel other_value);
+CAN__MESSAGE__TESTFRAME4__msg__type_template(const CAN__MESSAGE__TESTFRAME4__msg__type& other_value);
+CAN__MESSAGE__TESTFRAME4__msg__type_template(const OPTIONAL<CAN__MESSAGE__TESTFRAME4__msg__type>& other_value);
+CAN__MESSAGE__TESTFRAME4__msg__type_template(const CAN__MESSAGE__TESTFRAME4__msg__type_template& other_value);
+~CAN__MESSAGE__TESTFRAME4__msg__type_template();
+CAN__MESSAGE__TESTFRAME4__msg__type_template& operator=(template_sel other_value);
+CAN__MESSAGE__TESTFRAME4__msg__type_template& operator=(const CAN__MESSAGE__TESTFRAME4__msg__type& other_value);
+CAN__MESSAGE__TESTFRAME4__msg__type_template& operator=(const OPTIONAL<CAN__MESSAGE__TESTFRAME4__msg__type>& other_value);
+CAN__MESSAGE__TESTFRAME4__msg__type_template& operator=(const CAN__MESSAGE__TESTFRAME4__msg__type_template& other_value);
+boolean match(const CAN__MESSAGE__TESTFRAME4__msg__type& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+CAN__MESSAGE__TESTFRAME4__msg__type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+CAN__MESSAGE__TESTFRAME4__msg__type_template& list_item(unsigned int list_index) const;
+INTEGER_template& test__unsig__9__bit__2__padded__integer__big__endian__coded();
+const INTEGER_template& test__unsig__9__bit__2__padded__integer__big__endian__coded() const;
+INTEGER_template& test__sig__5__bit__integer__big__endian__coded();
+const INTEGER_template& test__sig__5__bit__integer__big__endian__coded() const;
+int size_of() const;
+void log() const;
+void log_match(const CAN__MESSAGE__TESTFRAME4__msg__type& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class CAN__MESSAGE__TESTFRAME5__msg__type : public Base_Type {
+  INTEGER field_test__unsig__9__bit__2__padded__integer__big__endian__coded;
+  INTEGER field_test__sig__5__bit__integer__big__endian__coded;
+public:
+  CAN__MESSAGE__TESTFRAME5__msg__type();
+  CAN__MESSAGE__TESTFRAME5__msg__type(const INTEGER& par_test__unsig__9__bit__2__padded__integer__big__endian__coded,
+    const INTEGER& par_test__sig__5__bit__integer__big__endian__coded);
+  CAN__MESSAGE__TESTFRAME5__msg__type(const CAN__MESSAGE__TESTFRAME5__msg__type& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  CAN__MESSAGE__TESTFRAME5__msg__type& operator=(const CAN__MESSAGE__TESTFRAME5__msg__type& other_value);
+  boolean operator==(const CAN__MESSAGE__TESTFRAME5__msg__type& other_value) const;
+  inline boolean operator!=(const CAN__MESSAGE__TESTFRAME5__msg__type& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& test__unsig__9__bit__2__padded__integer__big__endian__coded()
+    {return field_test__unsig__9__bit__2__padded__integer__big__endian__coded;}
+  inline const INTEGER& test__unsig__9__bit__2__padded__integer__big__endian__coded() const
+    {return field_test__unsig__9__bit__2__padded__integer__big__endian__coded;}
+  inline INTEGER& test__sig__5__bit__integer__big__endian__coded()
+    {return field_test__sig__5__bit__integer__big__endian__coded;}
+  inline const INTEGER& test__sig__5__bit__integer__big__endian__coded() const
+    {return field_test__sig__5__bit__integer__big__endian__coded;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class CAN__MESSAGE__TESTFRAME5__msg__type_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+CAN__MESSAGE__TESTFRAME5__msg__type_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const CAN__MESSAGE__TESTFRAME5__msg__type& other_value);
+void copy_template(const CAN__MESSAGE__TESTFRAME5__msg__type_template& other_value);
+
+public:
+CAN__MESSAGE__TESTFRAME5__msg__type_template();
+CAN__MESSAGE__TESTFRAME5__msg__type_template(template_sel other_value);
+CAN__MESSAGE__TESTFRAME5__msg__type_template(const CAN__MESSAGE__TESTFRAME5__msg__type& other_value);
+CAN__MESSAGE__TESTFRAME5__msg__type_template(const OPTIONAL<CAN__MESSAGE__TESTFRAME5__msg__type>& other_value);
+CAN__MESSAGE__TESTFRAME5__msg__type_template(const CAN__MESSAGE__TESTFRAME5__msg__type_template& other_value);
+~CAN__MESSAGE__TESTFRAME5__msg__type_template();
+CAN__MESSAGE__TESTFRAME5__msg__type_template& operator=(template_sel other_value);
+CAN__MESSAGE__TESTFRAME5__msg__type_template& operator=(const CAN__MESSAGE__TESTFRAME5__msg__type& other_value);
+CAN__MESSAGE__TESTFRAME5__msg__type_template& operator=(const OPTIONAL<CAN__MESSAGE__TESTFRAME5__msg__type>& other_value);
+CAN__MESSAGE__TESTFRAME5__msg__type_template& operator=(const CAN__MESSAGE__TESTFRAME5__msg__type_template& other_value);
+boolean match(const CAN__MESSAGE__TESTFRAME5__msg__type& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+CAN__MESSAGE__TESTFRAME5__msg__type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+CAN__MESSAGE__TESTFRAME5__msg__type_template& list_item(unsigned int list_index) const;
+INTEGER_template& test__unsig__9__bit__2__padded__integer__big__endian__coded();
+const INTEGER_template& test__unsig__9__bit__2__padded__integer__big__endian__coded() const;
+INTEGER_template& test__sig__5__bit__integer__big__endian__coded();
+const INTEGER_template& test__sig__5__bit__integer__big__endian__coded() const;
+int size_of() const;
+void log() const;
+void log_match(const CAN__MESSAGE__TESTFRAME5__msg__type& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class CAN__MESSAGE__EXTENDEDFRAME1__msg__type : public Base_Type {
+  OCTETSTRING field_test__sig__2__byte__octetstring__msb__coded;
+public:
+  CAN__MESSAGE__EXTENDEDFRAME1__msg__type();
+  CAN__MESSAGE__EXTENDEDFRAME1__msg__type(const OCTETSTRING& par_test__sig__2__byte__octetstring__msb__coded);
+  CAN__MESSAGE__EXTENDEDFRAME1__msg__type(const CAN__MESSAGE__EXTENDEDFRAME1__msg__type& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  CAN__MESSAGE__EXTENDEDFRAME1__msg__type& operator=(const CAN__MESSAGE__EXTENDEDFRAME1__msg__type& other_value);
+  boolean operator==(const CAN__MESSAGE__EXTENDEDFRAME1__msg__type& other_value) const;
+  inline boolean operator!=(const CAN__MESSAGE__EXTENDEDFRAME1__msg__type& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& test__sig__2__byte__octetstring__msb__coded()
+    {return field_test__sig__2__byte__octetstring__msb__coded;}
+  inline const OCTETSTRING& test__sig__2__byte__octetstring__msb__coded() const
+    {return field_test__sig__2__byte__octetstring__msb__coded;}
+  inline int size_of() const
+    {return 1;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const CAN__MESSAGE__EXTENDEDFRAME1__msg__type& other_value);
+void copy_template(const CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template& other_value);
+
+public:
+CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template();
+CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template(template_sel other_value);
+CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template(const CAN__MESSAGE__EXTENDEDFRAME1__msg__type& other_value);
+CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template(const OPTIONAL<CAN__MESSAGE__EXTENDEDFRAME1__msg__type>& other_value);
+CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template(const CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template& other_value);
+~CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template();
+CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template& operator=(template_sel other_value);
+CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template& operator=(const CAN__MESSAGE__EXTENDEDFRAME1__msg__type& other_value);
+CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template& operator=(const OPTIONAL<CAN__MESSAGE__EXTENDEDFRAME1__msg__type>& other_value);
+CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template& operator=(const CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template& other_value);
+boolean match(const CAN__MESSAGE__EXTENDEDFRAME1__msg__type& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+CAN__MESSAGE__EXTENDEDFRAME1__msg__type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& test__sig__2__byte__octetstring__msb__coded();
+const OCTETSTRING_template& test__sig__2__byte__octetstring__msb__coded() const;
+int size_of() const;
+void log() const;
+void log_match(const CAN__MESSAGE__EXTENDEDFRAME1__msg__type& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class CAN__MatrixPayloadUnion : public Base_Type {
+public:
+enum union_selection_type { UNBOUND_VALUE = 0, ALT_message__MyTestframe0 = 1, ALT_message__MyTestframe1 = 2, ALT_message__MyTestframe2 = 3, ALT_message__MyTestframe3 = 4, ALT_message__MyTestframe4 = 5, ALT_message__MyTestframe5 = 6, ALT_message__extendedFrame1 = 7 };
+private:
+union_selection_type union_selection;
+union {
+CAN__MESSAGE__TESTFRAME0__msg__type *field_message__MyTestframe0;
+CAN__MESSAGE__TESTFRAME1__msg__type *field_message__MyTestframe1;
+CAN__MESSAGE__TESTFRAME2__msg__type *field_message__MyTestframe2;
+CAN__MESSAGE__TESTFRAME3__msg__type *field_message__MyTestframe3;
+CAN__MESSAGE__TESTFRAME4__msg__type *field_message__MyTestframe4;
+CAN__MESSAGE__TESTFRAME5__msg__type *field_message__MyTestframe5;
+CAN__MESSAGE__EXTENDEDFRAME1__msg__type *field_message__extendedFrame1;
+};
+void copy_value(const CAN__MatrixPayloadUnion& other_value);
+
+public:
+CAN__MatrixPayloadUnion();
+CAN__MatrixPayloadUnion(const CAN__MatrixPayloadUnion& other_value);
+~CAN__MatrixPayloadUnion();
+CAN__MatrixPayloadUnion& operator=(const CAN__MatrixPayloadUnion& other_value);
+boolean operator==(const CAN__MatrixPayloadUnion& other_value) const;
+inline boolean operator!=(const CAN__MatrixPayloadUnion& other_value) const { return !(*this == other_value); }
+CAN__MESSAGE__TESTFRAME0__msg__type& message__MyTestframe0();
+const CAN__MESSAGE__TESTFRAME0__msg__type& message__MyTestframe0() const;
+CAN__MESSAGE__TESTFRAME1__msg__type& message__MyTestframe1();
+const CAN__MESSAGE__TESTFRAME1__msg__type& message__MyTestframe1() const;
+CAN__MESSAGE__TESTFRAME2__msg__type& message__MyTestframe2();
+const CAN__MESSAGE__TESTFRAME2__msg__type& message__MyTestframe2() const;
+CAN__MESSAGE__TESTFRAME3__msg__type& message__MyTestframe3();
+const CAN__MESSAGE__TESTFRAME3__msg__type& message__MyTestframe3() const;
+CAN__MESSAGE__TESTFRAME4__msg__type& message__MyTestframe4();
+const CAN__MESSAGE__TESTFRAME4__msg__type& message__MyTestframe4() const;
+CAN__MESSAGE__TESTFRAME5__msg__type& message__MyTestframe5();
+const CAN__MESSAGE__TESTFRAME5__msg__type& message__MyTestframe5() const;
+CAN__MESSAGE__EXTENDEDFRAME1__msg__type& message__extendedFrame1();
+const CAN__MESSAGE__EXTENDEDFRAME1__msg__type& message__extendedFrame1() const;
+inline union_selection_type get_selection() const { return union_selection; }
+boolean ischosen(union_selection_type checked_selection) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class CAN__MatrixPayloadUnion_template : public Base_Template {
+union {
+struct {
+CAN__MatrixPayloadUnion::union_selection_type union_selection;
+union {
+CAN__MESSAGE__TESTFRAME0__msg__type_template *field_message__MyTestframe0;
+CAN__MESSAGE__TESTFRAME1__msg__type_template *field_message__MyTestframe1;
+CAN__MESSAGE__TESTFRAME2__msg__type_template *field_message__MyTestframe2;
+CAN__MESSAGE__TESTFRAME3__msg__type_template *field_message__MyTestframe3;
+CAN__MESSAGE__TESTFRAME4__msg__type_template *field_message__MyTestframe4;
+CAN__MESSAGE__TESTFRAME5__msg__type_template *field_message__MyTestframe5;
+CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template *field_message__extendedFrame1;
+};
+} single_value;
+struct {
+unsigned int n_values;
+CAN__MatrixPayloadUnion_template *list_value;
+} value_list;
+};
+void copy_value(const CAN__MatrixPayloadUnion& other_value);
+
+void copy_template(const CAN__MatrixPayloadUnion_template& other_value);
+
+public:
+CAN__MatrixPayloadUnion_template();
+CAN__MatrixPayloadUnion_template(template_sel other_value);
+CAN__MatrixPayloadUnion_template(const CAN__MatrixPayloadUnion& other_value);
+CAN__MatrixPayloadUnion_template(const OPTIONAL<CAN__MatrixPayloadUnion>& other_value);
+CAN__MatrixPayloadUnion_template(const CAN__MatrixPayloadUnion_template& other_value);
+~CAN__MatrixPayloadUnion_template();
+void clean_up();
+CAN__MatrixPayloadUnion_template& operator=(template_sel other_value);
+CAN__MatrixPayloadUnion_template& operator=(const CAN__MatrixPayloadUnion& other_value);
+CAN__MatrixPayloadUnion_template& operator=(const OPTIONAL<CAN__MatrixPayloadUnion>& other_value);
+CAN__MatrixPayloadUnion_template& operator=(const CAN__MatrixPayloadUnion_template& other_value);
+boolean match(const CAN__MatrixPayloadUnion& other_value, boolean legacy = FALSE) const;
+boolean is_value() const;CAN__MatrixPayloadUnion valueof() const;
+CAN__MatrixPayloadUnion_template& list_item(unsigned int list_index) const;
+void set_type(template_sel template_type, unsigned int list_length);
+CAN__MESSAGE__TESTFRAME0__msg__type_template& message__MyTestframe0();
+const CAN__MESSAGE__TESTFRAME0__msg__type_template& message__MyTestframe0() const;
+CAN__MESSAGE__TESTFRAME1__msg__type_template& message__MyTestframe1();
+const CAN__MESSAGE__TESTFRAME1__msg__type_template& message__MyTestframe1() const;
+CAN__MESSAGE__TESTFRAME2__msg__type_template& message__MyTestframe2();
+const CAN__MESSAGE__TESTFRAME2__msg__type_template& message__MyTestframe2() const;
+CAN__MESSAGE__TESTFRAME3__msg__type_template& message__MyTestframe3();
+const CAN__MESSAGE__TESTFRAME3__msg__type_template& message__MyTestframe3() const;
+CAN__MESSAGE__TESTFRAME4__msg__type_template& message__MyTestframe4();
+const CAN__MESSAGE__TESTFRAME4__msg__type_template& message__MyTestframe4() const;
+CAN__MESSAGE__TESTFRAME5__msg__type_template& message__MyTestframe5();
+const CAN__MESSAGE__TESTFRAME5__msg__type_template& message__MyTestframe5() const;
+CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template& message__extendedFrame1();
+const CAN__MESSAGE__EXTENDEDFRAME1__msg__type_template& message__extendedFrame1() const;
+boolean ischosen(CAN__MatrixPayloadUnion::union_selection_type checked_selection) const;
+void log() const;
+void log_match(const CAN__MatrixPayloadUnion& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class CAN__MatrixUnion : public Base_Type {
+  OCTETSTRING field_can__id;
+  CAN__MatrixPayloadUnion field_can__pdu;
+public:
+  CAN__MatrixUnion();
+  CAN__MatrixUnion(const OCTETSTRING& par_can__id,
+    const CAN__MatrixPayloadUnion& par_can__pdu);
+  CAN__MatrixUnion(const CAN__MatrixUnion& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  CAN__MatrixUnion& operator=(const CAN__MatrixUnion& other_value);
+  boolean operator==(const CAN__MatrixUnion& other_value) const;
+  inline boolean operator!=(const CAN__MatrixUnion& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& can__id()
+    {return field_can__id;}
+  inline const OCTETSTRING& can__id() const
+    {return field_can__id;}
+  inline CAN__MatrixPayloadUnion& can__pdu()
+    {return field_can__pdu;}
+  inline const CAN__MatrixPayloadUnion& can__pdu() const
+    {return field_can__pdu;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class CAN__MatrixUnion_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+CAN__MatrixUnion_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const CAN__MatrixUnion& other_value);
+void copy_template(const CAN__MatrixUnion_template& other_value);
+
+public:
+CAN__MatrixUnion_template();
+CAN__MatrixUnion_template(template_sel other_value);
+CAN__MatrixUnion_template(const CAN__MatrixUnion& other_value);
+CAN__MatrixUnion_template(const OPTIONAL<CAN__MatrixUnion>& other_value);
+CAN__MatrixUnion_template(const CAN__MatrixUnion_template& other_value);
+~CAN__MatrixUnion_template();
+CAN__MatrixUnion_template& operator=(template_sel other_value);
+CAN__MatrixUnion_template& operator=(const CAN__MatrixUnion& other_value);
+CAN__MatrixUnion_template& operator=(const OPTIONAL<CAN__MatrixUnion>& other_value);
+CAN__MatrixUnion_template& operator=(const CAN__MatrixUnion_template& other_value);
+boolean match(const CAN__MatrixUnion& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+CAN__MatrixUnion valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+CAN__MatrixUnion_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& can__id();
+const OCTETSTRING_template& can__id() const;
+CAN__MatrixPayloadUnion_template& can__pdu();
+const CAN__MatrixPayloadUnion_template& can__pdu() const;
+int size_of() const;
+void log() const;
+void log_match(const CAN__MatrixUnion& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+
+/* Global variable declarations */
+
+extern const TTCN_RAWdescriptor_t CAN__MESSAGE__TESTFRAME0__msg__type_test__sig__11__bit__bitstring__little__endian__coded_raw_;
+extern const XERdescriptor_t CAN__MESSAGE__TESTFRAME0__msg__type_test__sig__11__bit__bitstring__little__endian__coded_xer_;
+extern const TTCN_OERdescriptor_t CAN__MESSAGE__TESTFRAME0__msg__type_test__sig__11__bit__bitstring__little__endian__coded_oer_;
+extern const TTCN_Typedescriptor_t CAN__MESSAGE__TESTFRAME0__msg__type_test__sig__11__bit__bitstring__little__endian__coded_descr_;
+extern const TTCN_RAWdescriptor_t CAN__MESSAGE__TESTFRAME0__msg__type_test__sig__5__bit__bitstring__little__endian__coded_raw_;
+extern const XERdescriptor_t CAN__MESSAGE__TESTFRAME0__msg__type_test__sig__5__bit__bitstring__little__endian__coded_xer_;
+extern const TTCN_OERdescriptor_t CAN__MESSAGE__TESTFRAME0__msg__type_test__sig__5__bit__bitstring__little__endian__coded_oer_;
+extern const TTCN_Typedescriptor_t CAN__MESSAGE__TESTFRAME0__msg__type_test__sig__5__bit__bitstring__little__endian__coded_descr_;
+extern const TTCN_RAWdescriptor_t CAN__MESSAGE__TESTFRAME0__msg__type_raw_;
+extern const TTCN_Typedescriptor_t CAN__MESSAGE__TESTFRAME0__msg__type_descr_;
+extern const TTCN_RAWdescriptor_t CAN__MESSAGE__TESTFRAME1__msg__type_test__sig__11__bit__bitstring__big__endian__coded_raw_;
+extern const XERdescriptor_t CAN__MESSAGE__TESTFRAME1__msg__type_test__sig__11__bit__bitstring__big__endian__coded_xer_;
+extern const TTCN_OERdescriptor_t CAN__MESSAGE__TESTFRAME1__msg__type_test__sig__11__bit__bitstring__big__endian__coded_oer_;
+extern const TTCN_Typedescriptor_t CAN__MESSAGE__TESTFRAME1__msg__type_test__sig__11__bit__bitstring__big__endian__coded_descr_;
+extern const TTCN_RAWdescriptor_t CAN__MESSAGE__TESTFRAME1__msg__type_test__sig__5__bit__bitstring__big__endian__coded_raw_;
+extern const XERdescriptor_t CAN__MESSAGE__TESTFRAME1__msg__type_test__sig__5__bit__bitstring__big__endian__coded_xer_;
+extern const TTCN_OERdescriptor_t CAN__MESSAGE__TESTFRAME1__msg__type_test__sig__5__bit__bitstring__big__endian__coded_oer_;
+extern const TTCN_Typedescriptor_t CAN__MESSAGE__TESTFRAME1__msg__type_test__sig__5__bit__bitstring__big__endian__coded_descr_;
+extern const TTCN_RAWdescriptor_t CAN__MESSAGE__TESTFRAME1__msg__type_raw_;
+extern const TTCN_Typedescriptor_t CAN__MESSAGE__TESTFRAME1__msg__type_descr_;
+extern const TTCN_RAWdescriptor_t CAN__MESSAGE__TESTFRAME2__msg__type_test__sig__11__bit__integer__big__endian__coded_raw_;
+extern const XERdescriptor_t CAN__MESSAGE__TESTFRAME2__msg__type_test__sig__11__bit__integer__big__endian__coded_xer_;
+extern const TTCN_OERdescriptor_t CAN__MESSAGE__TESTFRAME2__msg__type_test__sig__11__bit__integer__big__endian__coded_oer_;
+extern const TTCN_Typedescriptor_t CAN__MESSAGE__TESTFRAME2__msg__type_test__sig__11__bit__integer__big__endian__coded_descr_;
+extern const TTCN_RAWdescriptor_t CAN__MESSAGE__TESTFRAME2__msg__type_test__sig__5__bit__integer__big__endian__coded_raw_;
+extern const XERdescriptor_t CAN__MESSAGE__TESTFRAME2__msg__type_test__sig__5__bit__integer__big__endian__coded_xer_;
+extern const TTCN_OERdescriptor_t CAN__MESSAGE__TESTFRAME2__msg__type_test__sig__5__bit__integer__big__endian__coded_oer_;
+extern const TTCN_Typedescriptor_t CAN__MESSAGE__TESTFRAME2__msg__type_test__sig__5__bit__integer__big__endian__coded_descr_;
+extern const TTCN_RAWdescriptor_t CAN__MESSAGE__TESTFRAME2__msg__type_raw_;
+extern const TTCN_Typedescriptor_t CAN__MESSAGE__TESTFRAME2__msg__type_descr_;
+extern const TTCN_RAWdescriptor_t CAN__MESSAGE__TESTFRAME3__msg__type_test__sig__1__byte__octetstring__big__endian__coded_raw_;
+extern const XERdescriptor_t CAN__MESSAGE__TESTFRAME3__msg__type_test__sig__1__byte__octetstring__big__endian__coded_xer_;
+extern const TTCN_OERdescriptor_t CAN__MESSAGE__TESTFRAME3__msg__type_test__sig__1__byte__octetstring__big__endian__coded_oer_;
+extern const TTCN_Typedescriptor_t CAN__MESSAGE__TESTFRAME3__msg__type_test__sig__1__byte__octetstring__big__endian__coded_descr_;
+extern const TTCN_RAWdescriptor_t CAN__MESSAGE__TESTFRAME3__msg__type_test__sig__2__byte__octetstring__big__endian__coded_raw_;
+extern const XERdescriptor_t CAN__MESSAGE__TESTFRAME3__msg__type_test__sig__2__byte__octetstring__big__endian__coded_xer_;
+extern const TTCN_OERdescriptor_t CAN__MESSAGE__TESTFRAME3__msg__type_test__sig__2__byte__octetstring__big__endian__coded_oer_;
+extern const TTCN_Typedescriptor_t CAN__MESSAGE__TESTFRAME3__msg__type_test__sig__2__byte__octetstring__big__endian__coded_descr_;
+extern const TTCN_RAWdescriptor_t CAN__MESSAGE__TESTFRAME3__msg__type_raw_;
+extern const TTCN_Typedescriptor_t CAN__MESSAGE__TESTFRAME3__msg__type_descr_;
+extern const TTCN_RAWdescriptor_t CAN__MESSAGE__TESTFRAME4__msg__type_test__unsig__9__bit__2__padded__integer__big__endian__coded_raw_;
+extern const XERdescriptor_t CAN__MESSAGE__TESTFRAME4__msg__type_test__unsig__9__bit__2__padded__integer__big__endian__coded_xer_;
+extern const TTCN_OERdescriptor_t CAN__MESSAGE__TESTFRAME4__msg__type_test__unsig__9__bit__2__padded__integer__big__endian__coded_oer_;
+extern const TTCN_Typedescriptor_t CAN__MESSAGE__TESTFRAME4__msg__type_test__unsig__9__bit__2__padded__integer__big__endian__coded_descr_;
+extern const TTCN_RAWdescriptor_t CAN__MESSAGE__TESTFRAME4__msg__type_test__sig__5__bit__integer__big__endian__coded_raw_;
+extern const XERdescriptor_t CAN__MESSAGE__TESTFRAME4__msg__type_test__sig__5__bit__integer__big__endian__coded_xer_;
+extern const TTCN_OERdescriptor_t CAN__MESSAGE__TESTFRAME4__msg__type_test__sig__5__bit__integer__big__endian__coded_oer_;
+extern const TTCN_Typedescriptor_t CAN__MESSAGE__TESTFRAME4__msg__type_test__sig__5__bit__integer__big__endian__coded_descr_;
+extern const TTCN_RAWdescriptor_t CAN__MESSAGE__TESTFRAME4__msg__type_raw_;
+extern const TTCN_Typedescriptor_t CAN__MESSAGE__TESTFRAME4__msg__type_descr_;
+extern const TTCN_RAWdescriptor_t CAN__MESSAGE__TESTFRAME5__msg__type_test__unsig__9__bit__2__padded__integer__big__endian__coded_raw_;
+extern const XERdescriptor_t CAN__MESSAGE__TESTFRAME5__msg__type_test__unsig__9__bit__2__padded__integer__big__endian__coded_xer_;
+extern const TTCN_OERdescriptor_t CAN__MESSAGE__TESTFRAME5__msg__type_test__unsig__9__bit__2__padded__integer__big__endian__coded_oer_;
+extern const TTCN_Typedescriptor_t CAN__MESSAGE__TESTFRAME5__msg__type_test__unsig__9__bit__2__padded__integer__big__endian__coded_descr_;
+extern const TTCN_RAWdescriptor_t CAN__MESSAGE__TESTFRAME5__msg__type_test__sig__5__bit__integer__big__endian__coded_raw_;
+extern const XERdescriptor_t CAN__MESSAGE__TESTFRAME5__msg__type_test__sig__5__bit__integer__big__endian__coded_xer_;
+extern const TTCN_OERdescriptor_t CAN__MESSAGE__TESTFRAME5__msg__type_test__sig__5__bit__integer__big__endian__coded_oer_;
+extern const TTCN_Typedescriptor_t CAN__MESSAGE__TESTFRAME5__msg__type_test__sig__5__bit__integer__big__endian__coded_descr_;
+extern const TTCN_RAWdescriptor_t CAN__MESSAGE__TESTFRAME5__msg__type_raw_;
+extern const TTCN_Typedescriptor_t CAN__MESSAGE__TESTFRAME5__msg__type_descr_;
+extern const TTCN_RAWdescriptor_t CAN__MESSAGE__EXTENDEDFRAME1__msg__type_test__sig__2__byte__octetstring__msb__coded_raw_;
+extern const XERdescriptor_t CAN__MESSAGE__EXTENDEDFRAME1__msg__type_test__sig__2__byte__octetstring__msb__coded_xer_;
+extern const TTCN_OERdescriptor_t CAN__MESSAGE__EXTENDEDFRAME1__msg__type_test__sig__2__byte__octetstring__msb__coded_oer_;
+extern const TTCN_Typedescriptor_t CAN__MESSAGE__EXTENDEDFRAME1__msg__type_test__sig__2__byte__octetstring__msb__coded_descr_;
+extern const TTCN_RAWdescriptor_t CAN__MESSAGE__EXTENDEDFRAME1__msg__type_raw_;
+extern const TTCN_Typedescriptor_t CAN__MESSAGE__EXTENDEDFRAME1__msg__type_descr_;
+extern const TTCN_RAWdescriptor_t CAN__MatrixPayloadUnion_raw_;
+extern const TTCN_Typedescriptor_t CAN__MatrixPayloadUnion_descr_;
+extern const XERdescriptor_t CAN__MatrixUnion_can__id_xer_;
+extern const TTCN_OERdescriptor_t CAN__MatrixUnion_can__id_oer_;
+extern const TTCN_Typedescriptor_t CAN__MatrixUnion_can__id_descr_;
+extern const TTCN_RAWdescriptor_t CAN__MatrixUnion_can__pdu_raw_;
+extern const TTCN_Typedescriptor_t CAN__MatrixUnion_can__pdu_descr_;
+extern const TTCN_RAWdescriptor_t CAN__MatrixUnion_raw_;
+extern const TTCN_Typedescriptor_t CAN__MatrixUnion_descr_;
+extern TTCN_Module module_object;
+
+} /* end of namespace */
+
+#endif
diff --git a/demo/CAN_matrix_messages.o b/demo/CAN_matrix_messages.o
new file mode 100644
index 0000000..18104e6
--- /dev/null
+++ b/demo/CAN_matrix_messages.o
Binary files differ
diff --git a/demo/CAN_matrix_signals.cc b/demo/CAN_matrix_signals.cc
new file mode 100644
index 0000000..8119e93
--- /dev/null
+++ b/demo/CAN_matrix_signals.cc
@@ -0,0 +1,85 @@
+// This C++ source file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+/* Including header files */
+
+#include "CAN_matrix_signals.hh"
+
+namespace CAN__matrix__signals {
+
+/* Prototypes of static functions */
+
+static void pre_init_module();
+static void post_init_module();
+
+/* Literal string constants */
+
+static const unsigned char module_checksum[] = { 0x49, 0x44, 0x36, 0xb9, 0x67, 0xf1, 0x37, 0x59, 0x8b, 0x49, 0x2f, 0xf6, 0xff, 0x0b, 0x69, 0xd8 };
+
+/* Global variable definitions */
+
+const TTCN_RAWdescriptor_t BIT11__signal__type_raw_ = {11,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,11,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT11__signal__type_xer_ = { {"BIT11_signal_type>\n", "BIT11_signal_type>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT11__signal__type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT11__signal__type_descr_ = { "@CAN_matrix_signals.BIT11_signal_type", &BITSTRING_ber_, &BIT11__signal__type_raw_, NULL, &BIT11__signal__type_xer_, &BITSTRING_json_, &BIT11__signal__type_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT5__signal__type_raw_ = {5,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,5,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT5__signal__type_xer_ = { {"BIT5_signal_type>\n", "BIT5_signal_type>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT5__signal__type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT5__signal__type_descr_ = { "@CAN_matrix_signals.BIT5_signal_type", &BITSTRING_ber_, &BIT5__signal__type_raw_, NULL, &BIT5__signal__type_xer_, &BITSTRING_json_, &BIT5__signal__type_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT__BIT9__PADDED__2__signal__type_raw_ = {11,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT__BIT9__PADDED__2__signal__type_xer_ = { {"BIT_BIT9_PADDED_2_signal_type>\n", "BIT_BIT9_PADDED_2_signal_type>\n"}, {31, 31}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT__BIT9__PADDED__2__signal__type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT__BIT9__PADDED__2__signal__type_descr_ = { "@CAN_matrix_signals.BIT_BIT9_PADDED_2_signal_type", &INTEGER_ber_, &BIT__BIT9__PADDED__2__signal__type_raw_, &INTEGER_text_, &BIT__BIT9__PADDED__2__signal__type_xer_, &INTEGER_json_, &BIT__BIT9__PADDED__2__signal__type_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT11__signal__type_raw_ = {11,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT11__signal__type_xer_ = { {"INT_BIT11_signal_type>\n", "INT_BIT11_signal_type>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT11__signal__type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT11__signal__type_descr_ = { "@CAN_matrix_signals.INT_BIT11_signal_type", &INTEGER_ber_, &INT__BIT11__signal__type_raw_, &INTEGER_text_, &INT__BIT11__signal__type_xer_, &INTEGER_json_, &INT__BIT11__signal__type_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT5__signal__type_raw_ = {5,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT5__signal__type_xer_ = { {"INT_BIT5_signal_type>\n", "INT_BIT5_signal_type>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT5__signal__type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT5__signal__type_descr_ = { "@CAN_matrix_signals.INT_BIT5_signal_type", &INTEGER_ber_, &INT__BIT5__signal__type_raw_, &INTEGER_text_, &INT__BIT5__signal__type_xer_, &INTEGER_json_, &INT__BIT5__signal__type_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT__BIT9__PADDED__2__signal__type_raw_ = {11,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT__BIT9__PADDED__2__signal__type_xer_ = { {"INT_BIT9_PADDED_2_signal_type>\n", "INT_BIT9_PADDED_2_signal_type>\n"}, {31, 31}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT__BIT9__PADDED__2__signal__type_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT__BIT9__PADDED__2__signal__type_descr_ = { "@CAN_matrix_signals.INT_BIT9_PADDED_2_signal_type", &INTEGER_ber_, &INT__BIT9__PADDED__2__signal__type_raw_, &INTEGER_text_, &INT__BIT9__PADDED__2__signal__type_xer_, &INTEGER_json_, &INT__BIT9__PADDED__2__signal__type_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT1__signal__type_raw_ = {8,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       OCT1__signal__type_xer_ = { {"OCT1_signal_type>\n", "OCT1_signal_type>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT1__signal__type_oer_ext_arr_[0] = {};
+const int OCT1__signal__type_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT1__signal__type_oer_ = { -1, TRUE, 1, FALSE, 0, 0, OCT1__signal__type_oer_ext_arr_, 0, OCT1__signal__type_oer_p_};
+const TTCN_Typedescriptor_t OCT1__signal__type_descr_ = { "@CAN_matrix_signals.OCT1_signal_type", &OCTETSTRING_ber_, &OCT1__signal__type_raw_, &OCTETSTRING_text_, &OCT1__signal__type_xer_, &OCTETSTRING_json_, &OCT1__signal__type_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT2__signal__type_raw_ = {16,SG_NO,ORDER_LSB,ORDER_MSB,ORDER_LSB,ORDER_MSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       OCT2__signal__type_xer_ = { {"OCT2_signal_type>\n", "OCT2_signal_type>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT2__signal__type_oer_ext_arr_[0] = {};
+const int OCT2__signal__type_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT2__signal__type_oer_ = { -1, TRUE, 2, FALSE, 0, 0, OCT2__signal__type_oer_ext_arr_, 0, OCT2__signal__type_oer_p_};
+const TTCN_Typedescriptor_t OCT2__signal__type_descr_ = { "@CAN_matrix_signals.OCT2_signal_type", &OCTETSTRING_ber_, &OCT2__signal__type_raw_, &OCTETSTRING_text_, &OCT2__signal__type_xer_, &OCTETSTRING_json_, &OCT2__signal__type_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+TTCN_Module module_object("CAN_matrix_signals", __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);
+
+static const RuntimeVersionChecker ver_checker(  current_runtime_version.requires_major_version_6,
+  current_runtime_version.requires_minor_version_6,
+  current_runtime_version.requires_patch_level_0,  current_runtime_version.requires_runtime_1);
+
+/* Bodies of static functions */
+
+static void pre_init_module()
+{
+TTCN_Location current_location("CAN_matrix_signals.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "CAN_matrix_signals");
+General__Types::module_object.pre_init_module();
+CAN__matrix__general__types::module_object.pre_init_module();
+}
+
+static void post_init_module()
+{
+TTCN_Location current_location("CAN_matrix_signals.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "CAN_matrix_signals");
+General__Types::module_object.post_init_module();
+CAN__matrix__general__types::module_object.post_init_module();
+}
+
+
+} /* end of namespace */
diff --git a/demo/CAN_matrix_signals.d b/demo/CAN_matrix_signals.d
new file mode 100644
index 0000000..67b64d7
--- /dev/null
+++ b/demo/CAN_matrix_signals.d
@@ -0,0 +1,59 @@
+CAN_matrix_signals.o CAN_matrix_signals.d : CAN_matrix_signals.cc CAN_matrix_signals.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TTCN3.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/version.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/cversion.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Types.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Vector.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Error.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Basetype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Encdec.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RInt.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON_Tokenizer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Logger.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Template.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Integer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ttcn3float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Boolean.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Null.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Optional.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Param_Types.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/memory.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/BER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Textbuf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Parameters.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XmlReader.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Objid.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Verdicttype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Component.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Bitstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RAW.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/CharCoding.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Hexstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Octetstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Any.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Universal_charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Struct_of.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Array.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_CharacterString.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_External.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TEXT.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_EmbeddedPDV.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Addfunc.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Timer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Port.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Event_Handler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/TitanLoggerApiSimple.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/PreGenRecordOf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Module_list.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Snapshot.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Default.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Runtime.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/OER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Profiler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ProfilerTools.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Debugger.hh \
+ General_Types.hh CAN_matrix_general_types.hh
diff --git a/demo/CAN_matrix_signals.hh b/demo/CAN_matrix_signals.hh
new file mode 100644
index 0000000..ef53662
--- /dev/null
+++ b/demo/CAN_matrix_signals.hh
@@ -0,0 +1,92 @@
+// This C++ header file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+#ifndef CAN__matrix__signals_HH
+#define CAN__matrix__signals_HH
+
+#ifdef TITAN_RUNTIME_2
+#error Generated code does not match with used runtime.\
+ Code was generated without -R option but -DTITAN_RUNTIME_2 was used.
+#endif
+
+/* Header file includes */
+
+#include <TTCN3.hh>
+#include "General_Types.hh"
+#include "CAN_matrix_general_types.hh"
+
+#if TTCN3_VERSION != 60600
+#error Version mismatch detected.\
+ Please check the version of the TTCN-3 compiler and the base library.\
+ Run make clean and rebuild the project if the version of the compiler changed recently.
+#endif
+
+#ifndef LINUX
+#error This file should be compiled on LINUX
+#endif
+
+namespace CAN__matrix__signals {
+
+/* Type definitions */
+
+typedef BITSTRING BIT11__signal__type;
+typedef BITSTRING_template BIT11__signal__type_template;
+typedef BITSTRING BIT5__signal__type;
+typedef BITSTRING_template BIT5__signal__type_template;
+typedef INTEGER BIT__BIT9__PADDED__2__signal__type;
+typedef INTEGER_template BIT__BIT9__PADDED__2__signal__type_template;
+typedef INTEGER INT__BIT11__signal__type;
+typedef INTEGER_template INT__BIT11__signal__type_template;
+typedef INTEGER INT__BIT5__signal__type;
+typedef INTEGER_template INT__BIT5__signal__type_template;
+typedef INTEGER INT__BIT9__PADDED__2__signal__type;
+typedef INTEGER_template INT__BIT9__PADDED__2__signal__type_template;
+typedef OCTETSTRING OCT1__signal__type;
+typedef OCTETSTRING_template OCT1__signal__type_template;
+typedef OCTETSTRING OCT2__signal__type;
+typedef OCTETSTRING_template OCT2__signal__type_template;
+
+/* Global variable declarations */
+
+extern const TTCN_RAWdescriptor_t BIT11__signal__type_raw_;
+extern const XERdescriptor_t BIT11__signal__type_xer_;
+extern const TTCN_OERdescriptor_t BIT11__signal__type_oer_;
+extern const TTCN_Typedescriptor_t BIT11__signal__type_descr_;
+extern const TTCN_RAWdescriptor_t BIT5__signal__type_raw_;
+extern const XERdescriptor_t BIT5__signal__type_xer_;
+extern const TTCN_OERdescriptor_t BIT5__signal__type_oer_;
+extern const TTCN_Typedescriptor_t BIT5__signal__type_descr_;
+extern const TTCN_RAWdescriptor_t BIT__BIT9__PADDED__2__signal__type_raw_;
+extern const XERdescriptor_t BIT__BIT9__PADDED__2__signal__type_xer_;
+extern const TTCN_OERdescriptor_t BIT__BIT9__PADDED__2__signal__type_oer_;
+extern const TTCN_Typedescriptor_t BIT__BIT9__PADDED__2__signal__type_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT11__signal__type_raw_;
+extern const XERdescriptor_t INT__BIT11__signal__type_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT11__signal__type_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT11__signal__type_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT5__signal__type_raw_;
+extern const XERdescriptor_t INT__BIT5__signal__type_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT5__signal__type_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT5__signal__type_descr_;
+extern const TTCN_RAWdescriptor_t INT__BIT9__PADDED__2__signal__type_raw_;
+extern const XERdescriptor_t INT__BIT9__PADDED__2__signal__type_xer_;
+extern const TTCN_OERdescriptor_t INT__BIT9__PADDED__2__signal__type_oer_;
+extern const TTCN_Typedescriptor_t INT__BIT9__PADDED__2__signal__type_descr_;
+extern const TTCN_RAWdescriptor_t OCT1__signal__type_raw_;
+extern const XERdescriptor_t OCT1__signal__type_xer_;
+extern const TTCN_OERdescriptor_t OCT1__signal__type_oer_;
+extern const TTCN_Typedescriptor_t OCT1__signal__type_descr_;
+extern const TTCN_RAWdescriptor_t OCT2__signal__type_raw_;
+extern const XERdescriptor_t OCT2__signal__type_xer_;
+extern const TTCN_OERdescriptor_t OCT2__signal__type_oer_;
+extern const TTCN_Typedescriptor_t OCT2__signal__type_descr_;
+extern TTCN_Module module_object;
+
+} /* end of namespace */
+
+#endif
diff --git a/demo/CAN_matrix_signals.o b/demo/CAN_matrix_signals.o
new file mode 100644
index 0000000..7fd6e47
--- /dev/null
+++ b/demo/CAN_matrix_signals.o
Binary files differ
diff --git a/demo/CAN_matrix_templates.cc b/demo/CAN_matrix_templates.cc
new file mode 100644
index 0000000..2ef537b
--- /dev/null
+++ b/demo/CAN_matrix_templates.cc
@@ -0,0 +1,65 @@
+// This C++ source file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+/* Including header files */
+
+#include "CAN_matrix_templates.hh"
+
+namespace CAN__matrix__templates {
+
+/* Prototypes of static functions */
+
+static void pre_init_module();
+static void post_init_module();
+
+/* Literal string constants */
+
+static const unsigned char os_0_octets[] = { 0, 0, 1, 39 };
+static const OCTETSTRING os_0(4, os_0_octets);
+static const unsigned char module_checksum[] = { 0x73, 0xda, 0x2e, 0xbd, 0x00, 0xb7, 0xfa, 0x8a, 0x3b, 0x04, 0x1a, 0xfc, 0x10, 0x66, 0x1b, 0xdf };
+
+/* Global variable definitions */
+
+TTCN_Module module_object("CAN_matrix_templates", __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);
+
+static const RuntimeVersionChecker ver_checker(  current_runtime_version.requires_major_version_6,
+  current_runtime_version.requires_minor_version_6,
+  current_runtime_version.requires_patch_level_0,  current_runtime_version.requires_runtime_1);
+
+/* Bodies of functions, altsteps and testcases */
+
+CAN__matrix__messages::CAN__MatrixUnion_template t__message__Frame5__2__parm(const INTEGER& parameter1, const INTEGER& parameter2)
+{
+TTCN_Location current_location("CAN_matrix_templates.ttcn", 23, TTCN_Location::LOCATION_TEMPLATE, "t_message_Frame5_2_parm");
+CAN__matrix__messages::CAN__MatrixUnion_template ret_val;
+ret_val.can__id() = os_0;
+{
+CAN__matrix__messages::CAN__MESSAGE__TESTFRAME5__msg__type_template& tmp_0 = ret_val.can__pdu().message__MyTestframe5();
+tmp_0.test__unsig__9__bit__2__padded__integer__big__endian__coded() = parameter1;
+tmp_0.test__sig__5__bit__integer__big__endian__coded() = parameter2;
+}
+return ret_val;
+}
+
+
+/* Bodies of static functions */
+
+static void pre_init_module()
+{
+TTCN_Location current_location("CAN_matrix_templates.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "CAN_matrix_templates");
+CAN__matrix::module_object.pre_init_module();
+}
+
+static void post_init_module()
+{
+TTCN_Location current_location("CAN_matrix_templates.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "CAN_matrix_templates");
+CAN__matrix::module_object.post_init_module();
+}
+
+
+} /* end of namespace */
diff --git a/demo/CAN_matrix_templates.d b/demo/CAN_matrix_templates.d
new file mode 100644
index 0000000..67592d2
--- /dev/null
+++ b/demo/CAN_matrix_templates.d
@@ -0,0 +1,61 @@
+CAN_matrix_templates.o CAN_matrix_templates.d : CAN_matrix_templates.cc CAN_matrix_templates.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TTCN3.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/version.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/cversion.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Types.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Vector.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Error.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Basetype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Encdec.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RInt.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON_Tokenizer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Logger.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Template.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Integer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ttcn3float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Boolean.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Null.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Optional.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Param_Types.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/memory.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/BER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Textbuf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Parameters.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XmlReader.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Objid.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Verdicttype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Component.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Bitstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RAW.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/CharCoding.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Hexstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Octetstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Any.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Universal_charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Struct_of.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Array.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_CharacterString.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_External.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TEXT.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_EmbeddedPDV.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Addfunc.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Timer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Port.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Event_Handler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/TitanLoggerApiSimple.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/PreGenRecordOf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Module_list.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Snapshot.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Default.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Runtime.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/OER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Profiler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ProfilerTools.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Debugger.hh \
+ CAN_matrix.hh SocketCAN_Types.hh Bcm.hh Can.hh General_Types.hh Raw.hh \
+ CAN_matrix_messages.hh CAN_matrix_signals.hh CAN_matrix_general_types.hh \
+ CANFD_matrix_messages.hh
diff --git a/demo/CAN_matrix_templates.hh b/demo/CAN_matrix_templates.hh
new file mode 100644
index 0000000..ba6ed27
--- /dev/null
+++ b/demo/CAN_matrix_templates.hh
@@ -0,0 +1,44 @@
+// This C++ header file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+#ifndef CAN__matrix__templates_HH
+#define CAN__matrix__templates_HH
+
+#ifdef TITAN_RUNTIME_2
+#error Generated code does not match with used runtime.\
+ Code was generated without -R option but -DTITAN_RUNTIME_2 was used.
+#endif
+
+/* Header file includes */
+
+#include <TTCN3.hh>
+#include "CAN_matrix.hh"
+
+#if TTCN3_VERSION != 60600
+#error Version mismatch detected.\
+ Please check the version of the TTCN-3 compiler and the base library.\
+ Run make clean and rebuild the project if the version of the compiler changed recently.
+#endif
+
+#ifndef LINUX
+#error This file should be compiled on LINUX
+#endif
+
+namespace CAN__matrix__templates {
+
+/* Function prototypes */
+
+extern CAN__matrix__messages::CAN__MatrixUnion_template t__message__Frame5__2__parm(const INTEGER& parameter1, const INTEGER& parameter2);
+
+/* Global variable declarations */
+
+extern TTCN_Module module_object;
+
+} /* end of namespace */
+
+#endif
diff --git a/demo/CAN_matrix_templates.o b/demo/CAN_matrix_templates.o
new file mode 100644
index 0000000..b627319
--- /dev/null
+++ b/demo/CAN_matrix_templates.o
Binary files differ
diff --git a/demo/CAN_matrix_test.cc b/demo/CAN_matrix_test.cc
new file mode 100644
index 0000000..f5bc2ea
--- /dev/null
+++ b/demo/CAN_matrix_test.cc
@@ -0,0 +1,903 @@
+// This C++ source file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+/* Including header files */
+
+#include "CAN_matrix_test.hh"
+
+namespace CAN__matrix__test {
+
+/* Prototypes of static functions */
+
+static void pre_init_module();
+static void post_init_module();
+static boolean init_comp_type(const char *component_type, boolean init_base_comps);
+
+/* Literal string constants */
+
+static const unsigned char bs_2_bits[] = { 170 },
+bs_0_bits[] = { 170, 6 },
+bs_3_bits[] = { 85 },
+bs_1_bits[] = { 31 };
+static const BITSTRING bs_2(8, bs_2_bits),
+bs_0(11, bs_0_bits),
+bs_3(8, bs_3_bits),
+bs_1(5, bs_1_bits);
+static const unsigned char os_12_octets[] = { 0, 0, 0, 21 },
+os_0_octets[] = { 0, 0, 1, 34 },
+os_3_octets[] = { 0, 0, 1, 35 },
+os_2_octets[] = { 0, 0, 1, 36 },
+os_4_octets[] = { 0, 0, 1, 37 },
+os_9_octets[] = { 0, 0, 1, 38 },
+os_10_octets[] = { 0, 0, 1, 39 },
+os_11_octets[] = { 1, 35, 69, 103, 137, 171, 205, 239 },
+os_13_octets[] = { 1, 35, 69, 103, 137, 171, 205, 239, 1, 35, 69, 103, 137, 171, 205, 239, 1, 35, 69, 103, 137, 171, 205, 239, 1, 35, 69, 103, 137, 171, 205, 239, 1, 35, 69, 103, 137, 171, 205, 239, 1, 35, 69, 103, 137, 171, 205, 239, 1, 35, 69, 103, 137, 171, 205, 239, 1, 35, 69, 103, 137, 171, 205, 239 },
+os_1_octets[] = { 18, 52 },
+os_6_octets[] = { 18, 63 },
+os_7_octets[] = { 128, 0, 0, 1 },
+os_5_octets[] = { 255 },
+os_8_octets[] = { 255, 255 };
+static const OCTETSTRING os_12(4, os_12_octets),
+os_0(4, os_0_octets),
+os_3(4, os_3_octets),
+os_2(4, os_2_octets),
+os_4(4, os_4_octets),
+os_9(4, os_9_octets),
+os_10(4, os_10_octets),
+os_11(8, os_11_octets),
+os_13(64, os_13_octets),
+os_1(2, os_1_octets),
+os_6(2, os_6_octets),
+os_7(4, os_7_octets),
+os_5(1, os_5_octets),
+os_8(2, os_8_octets);
+static const unsigned char module_checksum[] = { 0xc0, 0x4b, 0x3b, 0x6e, 0x4a, 0xdb, 0x3f, 0xaa, 0xa8, 0xe7, 0x99, 0x2a, 0x7e, 0x3f, 0xdf, 0x82 };
+
+/* Global variable definitions */
+
+const TTCN_Typedescriptor_t& MTC__CT_descr_ = COMPONENT_descr_;
+TTCN_Module module_object("CAN_matrix_test", __DATE__, __TIME__, module_checksum, pre_init_module, NULL, 0U, 4294967295U, 4294967295U, 4294967295U, NULL, 0LU, 0, post_init_module, NULL, NULL, NULL, init_comp_type, NULL, NULL, NULL);
+
+static const RuntimeVersionChecker ver_checker(  current_runtime_version.requires_major_version_6,
+  current_runtime_version.requires_minor_version_6,
+  current_runtime_version.requires_patch_level_0,  current_runtime_version.requires_runtime_1);
+
+/* Bodies of functions, altsteps and testcases */
+
+verdicttype testcase_tc__encdec(boolean has_timer, double timer_value)
+{
+TTCN_Runtime::check_begin_testcase(has_timer, timer_value);
+TTCN_Location current_location("CAN_matrix_test.ttcn", 22, TTCN_Location::LOCATION_TESTCASE, "tc_encdec");
+try {
+TTCN_Runtime::begin_testcase("CAN_matrix_test", "tc_encdec", "CAN_matrix_test", "MTC_CT", "CAN_matrix_test", "MTC_CT", has_timer, timer_value);
+current_location.update_lineno(25);
+#line 25 "CAN_matrix_test.ttcn"
+Can::CAN__frame my__can__id;
+current_location.update_lineno(26);
+#line 26 "CAN_matrix_test.ttcn"
+my__can__id.can__id() = os_0;
+my__can__id.can__pdu() = os_1;
+current_location.update_lineno(27);
+#line 27 "CAN_matrix_test.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+my__can__id.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(28);
+#line 28 "CAN_matrix_test.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+{
+Can::CAN__frame tmp_1;
+tmp_1.can__id() = os_0;
+tmp_1.can__pdu() = os_1;
+CAN__matrix::canframe2canmatrixframe(tmp_1).log();
+}
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(29);
+#line 29 "CAN_matrix_test.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "--------------------------------------------");
+current_location.update_lineno(31);
+#line 31 "CAN_matrix_test.ttcn"
+CAN__matrix__messages::CAN__MatrixUnion my__can__message;
+current_location.update_lineno(33);
+#line 33 "CAN_matrix_test.ttcn"
+my__can__message.can__id() = os_2;
+{
+CAN__matrix__messages::CAN__MESSAGE__TESTFRAME2__msg__type& tmp_3 = my__can__message.can__pdu().message__MyTestframe2();
+tmp_3.test__sig__11__bit__integer__big__endian__coded() = 2047;
+tmp_3.test__sig__5__bit__integer__big__endian__coded() = 2;
+}
+current_location.update_lineno(39);
+#line 39 "CAN_matrix_test.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+my__can__message.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(40);
+#line 40 "CAN_matrix_test.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+CAN__matrix::canmatrixframe2can(my__can__message).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(41);
+#line 41 "CAN_matrix_test.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "--------------------------------------------");
+current_location.update_lineno(44);
+#line 44 "CAN_matrix_test.ttcn"
+CAN__matrix__messages::CAN__MatrixUnion_template t__message__testFrame0__1;
+t__message__testFrame0__1.can__id() = os_0;
+{
+CAN__matrix__messages::CAN__MESSAGE__TESTFRAME0__msg__type_template& tmp_4 = t__message__testFrame0__1.can__pdu().message__MyTestframe0();
+tmp_4.test__sig__11__bit__bitstring__little__endian__coded() = bs_0;
+tmp_4.test__sig__5__bit__bitstring__little__endian__coded() = bs_1;
+}
+current_location.update_lineno(55);
+#line 55 "CAN_matrix_test.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+CAN__matrix::f__encode__can__matrix(t__message__testFrame0__1.valueof()).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(56);
+#line 56 "CAN_matrix_test.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "--------------------------------------------");
+current_location.update_lineno(57);
+#line 57 "CAN_matrix_test.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+CAN__matrix::f__decode__can__matrix(CAN__matrix::f__encode__can__matrix(t__message__testFrame0__1.valueof())).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(58);
+#line 58 "CAN_matrix_test.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "--------------------------------------------");
+current_location.update_lineno(60);
+#line 60 "CAN_matrix_test.ttcn"
+CAN__matrix__messages::CAN__MatrixUnion_template t__message__testFrame1__1;
+t__message__testFrame1__1.can__id() = os_3;
+{
+CAN__matrix__messages::CAN__MESSAGE__TESTFRAME1__msg__type_template& tmp_5 = t__message__testFrame1__1.can__pdu().message__MyTestframe1();
+tmp_5.test__sig__11__bit__bitstring__big__endian__coded() = bs_0;
+tmp_5.test__sig__5__bit__bitstring__big__endian__coded() = bs_1;
+}
+current_location.update_lineno(71);
+#line 71 "CAN_matrix_test.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+CAN__matrix::f__encode__can__matrix(t__message__testFrame1__1.valueof()).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(72);
+#line 72 "CAN_matrix_test.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "--------------------------------------------");
+current_location.update_lineno(73);
+#line 73 "CAN_matrix_test.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+CAN__matrix::f__decode__can__matrix(CAN__matrix::f__encode__can__matrix(t__message__testFrame1__1.valueof())).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(74);
+#line 74 "CAN_matrix_test.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "--------------------------------------------");
+current_location.update_lineno(76);
+#line 76 "CAN_matrix_test.ttcn"
+CAN__matrix__messages::CAN__MatrixUnion_template t__message__testFrame2__1;
+t__message__testFrame2__1.can__id() = os_2;
+{
+CAN__matrix__messages::CAN__MESSAGE__TESTFRAME2__msg__type_template& tmp_6 = t__message__testFrame2__1.can__pdu().message__MyTestframe2();
+tmp_6.test__sig__11__bit__integer__big__endian__coded() = 2047;
+tmp_6.test__sig__5__bit__integer__big__endian__coded() = 2;
+}
+current_location.update_lineno(88);
+#line 88 "CAN_matrix_test.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+CAN__matrix::f__encode__can__matrix(t__message__testFrame2__1.valueof()).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(89);
+#line 89 "CAN_matrix_test.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "--------------------------------------------");
+current_location.update_lineno(90);
+#line 90 "CAN_matrix_test.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+CAN__matrix::f__decode__can__matrix(CAN__matrix::f__encode__can__matrix(t__message__testFrame2__1.valueof())).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(91);
+#line 91 "CAN_matrix_test.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "--------------------------------------------");
+current_location.update_lineno(94);
+#line 94 "CAN_matrix_test.ttcn"
+CAN__matrix__messages::CAN__MatrixUnion_template t__message__testFrame3__1;
+t__message__testFrame3__1.can__id() = os_4;
+{
+CAN__matrix__messages::CAN__MESSAGE__TESTFRAME3__msg__type_template& tmp_7 = t__message__testFrame3__1.can__pdu().message__MyTestframe3();
+tmp_7.test__sig__1__byte__octetstring__big__endian__coded() = os_5;
+tmp_7.test__sig__2__byte__octetstring__big__endian__coded() = os_6;
+}
+current_location.update_lineno(105);
+#line 105 "CAN_matrix_test.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+CAN__matrix::f__encode__can__matrix(t__message__testFrame3__1.valueof()).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(106);
+#line 106 "CAN_matrix_test.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "--------------------------------------------");
+current_location.update_lineno(107);
+#line 107 "CAN_matrix_test.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+CAN__matrix::f__decode__can__matrix(CAN__matrix::f__encode__can__matrix(t__message__testFrame3__1.valueof())).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(108);
+#line 108 "CAN_matrix_test.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "--------------------------------------------");
+current_location.update_lineno(112);
+#line 112 "CAN_matrix_test.ttcn"
+CAN__matrix__messages::CAN__MatrixUnion_template t__message__extendedFrame1__1;
+t__message__extendedFrame1__1.can__id() = os_7;
+t__message__extendedFrame1__1.can__pdu().message__extendedFrame1().test__sig__2__byte__octetstring__msb__coded() = os_8;
+current_location.update_lineno(122);
+#line 122 "CAN_matrix_test.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+CAN__matrix::f__encode__can__matrix(t__message__extendedFrame1__1.valueof()).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(123);
+#line 123 "CAN_matrix_test.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "--------------------------------------------");
+current_location.update_lineno(124);
+#line 124 "CAN_matrix_test.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+CAN__matrix::f__decode__can__matrix(CAN__matrix::f__encode__can__matrix(t__message__extendedFrame1__1.valueof())).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(125);
+#line 125 "CAN_matrix_test.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "--------------------------------------------");
+current_location.update_lineno(127);
+#line 127 "CAN_matrix_test.ttcn"
+CAN__matrix__messages::CAN__MESSAGE__TESTFRAME1__msg__type v__message__Frame1__2;
+current_location.update_lineno(128);
+#line 128 "CAN_matrix_test.ttcn"
+CAN__matrix__messages::CAN__MESSAGE__TESTFRAME2__msg__type v__message__Frame2__2;
+current_location.update_lineno(129);
+#line 129 "CAN_matrix_test.ttcn"
+CAN__matrix__messages::CAN__MESSAGE__TESTFRAME3__msg__type v__message__Frame3__2;
+current_location.update_lineno(130);
+#line 130 "CAN_matrix_test.ttcn"
+CAN__matrix__messages::CAN__MESSAGE__TESTFRAME4__msg__type v__message__Frame4__2;
+current_location.update_lineno(131);
+#line 131 "CAN_matrix_test.ttcn"
+CAN__matrix__messages::CAN__MESSAGE__TESTFRAME5__msg__type v__message__Frame5__2;
+current_location.update_lineno(132);
+#line 132 "CAN_matrix_test.ttcn"
+CAN__matrix__messages::CAN__MESSAGE__EXTENDEDFRAME1__msg__type v__message__extendedFrame1__2;
+current_location.update_lineno(134);
+#line 134 "CAN_matrix_test.ttcn"
+v__message__Frame1__2.test__sig__11__bit__bitstring__big__endian__coded() = bs_0;
+v__message__Frame1__2.test__sig__5__bit__bitstring__big__endian__coded() = bs_1;
+current_location.update_lineno(141);
+#line 141 "CAN_matrix_test.ttcn"
+CAN__matrix__messages::CAN__MatrixUnion_template t__message__Frame1__2;
+t__message__Frame1__2.can__id() = os_3;
+t__message__Frame1__2.can__pdu().message__MyTestframe1() = v__message__Frame1__2;
+current_location.update_lineno(147);
+#line 147 "CAN_matrix_test.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+CAN__matrix::f__encode__can__matrix(t__message__Frame1__2.valueof()).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(148);
+#line 148 "CAN_matrix_test.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "--------------------------------------------");
+current_location.update_lineno(149);
+#line 149 "CAN_matrix_test.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+CAN__matrix::f__decode__can__matrix(CAN__matrix::f__encode__can__matrix(t__message__Frame1__2.valueof())).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(150);
+#line 150 "CAN_matrix_test.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "--------------------------------------------");
+current_location.update_lineno(152);
+#line 152 "CAN_matrix_test.ttcn"
+v__message__Frame2__2.test__sig__11__bit__integer__big__endian__coded() = 2047;
+v__message__Frame2__2.test__sig__5__bit__integer__big__endian__coded() = 2;
+current_location.update_lineno(159);
+#line 159 "CAN_matrix_test.ttcn"
+CAN__matrix__messages::CAN__MatrixUnion_template t__message__Frame2__2;
+t__message__Frame2__2.can__id() = os_2;
+t__message__Frame2__2.can__pdu().message__MyTestframe2() = v__message__Frame2__2;
+current_location.update_lineno(165);
+#line 165 "CAN_matrix_test.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+CAN__matrix::f__encode__can__matrix(t__message__Frame2__2.valueof()).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(166);
+#line 166 "CAN_matrix_test.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "--------------------------------------------");
+current_location.update_lineno(167);
+#line 167 "CAN_matrix_test.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+CAN__matrix::f__decode__can__matrix(CAN__matrix::f__encode__can__matrix(t__message__Frame2__2.valueof())).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(168);
+#line 168 "CAN_matrix_test.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "--------------------------------------------");
+current_location.update_lineno(171);
+#line 171 "CAN_matrix_test.ttcn"
+v__message__Frame3__2.test__sig__1__byte__octetstring__big__endian__coded() = os_5;
+v__message__Frame3__2.test__sig__2__byte__octetstring__big__endian__coded() = os_6;
+current_location.update_lineno(178);
+#line 178 "CAN_matrix_test.ttcn"
+CAN__matrix__messages::CAN__MatrixUnion_template t__message__Frame3__2;
+t__message__Frame3__2.can__id() = os_4;
+t__message__Frame3__2.can__pdu().message__MyTestframe3() = v__message__Frame3__2;
+current_location.update_lineno(184);
+#line 184 "CAN_matrix_test.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+CAN__matrix::f__encode__can__matrix(t__message__Frame3__2.valueof()).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(185);
+#line 185 "CAN_matrix_test.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "--------------------------------------------");
+current_location.update_lineno(186);
+#line 186 "CAN_matrix_test.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+CAN__matrix::f__decode__can__matrix(CAN__matrix::f__encode__can__matrix(t__message__Frame3__2.valueof())).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(187);
+#line 187 "CAN_matrix_test.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "--------------------------------------------");
+current_location.update_lineno(189);
+#line 189 "CAN_matrix_test.ttcn"
+v__message__Frame4__2.test__unsig__9__bit__2__padded__integer__big__endian__coded() = 511;
+v__message__Frame4__2.test__sig__5__bit__integer__big__endian__coded() = 8;
+current_location.update_lineno(195);
+#line 195 "CAN_matrix_test.ttcn"
+CAN__matrix__messages::CAN__MatrixUnion_template t__message__Frame4__2;
+t__message__Frame4__2.can__id() = os_9;
+t__message__Frame4__2.can__pdu().message__MyTestframe4() = v__message__Frame4__2;
+current_location.update_lineno(201);
+#line 201 "CAN_matrix_test.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+CAN__matrix::f__encode__can__matrix(t__message__Frame4__2.valueof()).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(202);
+#line 202 "CAN_matrix_test.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "--------------------------------------------");
+current_location.update_lineno(203);
+#line 203 "CAN_matrix_test.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+CAN__matrix::f__decode__can__matrix(CAN__matrix::f__encode__can__matrix(t__message__Frame4__2.valueof())).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(204);
+#line 204 "CAN_matrix_test.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "--------------------------------------------");
+current_location.update_lineno(206);
+#line 206 "CAN_matrix_test.ttcn"
+v__message__Frame5__2.test__unsig__9__bit__2__padded__integer__big__endian__coded() = 127;
+v__message__Frame5__2.test__sig__5__bit__integer__big__endian__coded() = 16;
+current_location.update_lineno(212);
+#line 212 "CAN_matrix_test.ttcn"
+CAN__matrix__messages::CAN__MatrixUnion_template t__message__Frame5__2;
+t__message__Frame5__2.can__id() = os_10;
+t__message__Frame5__2.can__pdu().message__MyTestframe5() = v__message__Frame5__2;
+current_location.update_lineno(218);
+#line 218 "CAN_matrix_test.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+CAN__matrix::f__encode__can__matrix(t__message__Frame5__2.valueof()).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(219);
+#line 219 "CAN_matrix_test.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "--------------------------------------------");
+current_location.update_lineno(220);
+#line 220 "CAN_matrix_test.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+CAN__matrix::f__decode__can__matrix(CAN__matrix::f__encode__can__matrix(t__message__Frame5__2.valueof())).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(221);
+#line 221 "CAN_matrix_test.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "--------------------------------------------");
+current_location.update_lineno(223);
+#line 223 "CAN_matrix_test.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "********************************************");
+current_location.update_lineno(225);
+#line 225 "CAN_matrix_test.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+CAN__matrix::f__encode__can__matrix(CAN__matrix__templates::t__message__Frame5__2__parm(7, 1).valueof()).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(226);
+#line 226 "CAN_matrix_test.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "--------------------------------------------");
+current_location.update_lineno(227);
+#line 227 "CAN_matrix_test.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+CAN__matrix::f__decode__can__matrix(CAN__matrix::f__encode__can__matrix(CAN__matrix__templates::t__message__Frame5__2__parm(7, 1).valueof())).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(228);
+#line 228 "CAN_matrix_test.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "--------------------------------------------");
+current_location.update_lineno(230);
+#line 230 "CAN_matrix_test.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "********************************************");
+current_location.update_lineno(232);
+#line 232 "CAN_matrix_test.ttcn"
+v__message__extendedFrame1__2.test__sig__2__byte__octetstring__msb__coded() = os_8;
+current_location.update_lineno(238);
+#line 238 "CAN_matrix_test.ttcn"
+CAN__matrix__messages::CAN__MatrixUnion_template t__message__extendedFrame1__2;
+t__message__extendedFrame1__2.can__id() = os_7;
+t__message__extendedFrame1__2.can__pdu().message__extendedFrame1() = v__message__extendedFrame1__2;
+current_location.update_lineno(244);
+#line 244 "CAN_matrix_test.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+CAN__matrix::f__encode__can__matrix(t__message__extendedFrame1__2.valueof()).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(245);
+#line 245 "CAN_matrix_test.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "--------------------------------------------");
+current_location.update_lineno(246);
+#line 246 "CAN_matrix_test.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+CAN__matrix::f__decode__can__matrix(CAN__matrix::f__encode__can__matrix(t__message__extendedFrame1__2.valueof())).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(247);
+#line 247 "CAN_matrix_test.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "--------------------------------------------");
+current_location.update_lineno(249);
+#line 249 "CAN_matrix_test.ttcn"
+SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame v__frame__to__send1;
+current_location.update_lineno(249);
+#line 249 "CAN_matrix_test.ttcn"
+SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame v__frame__to__send2;
+current_location.update_lineno(253);
+#line 253 "CAN_matrix_test.ttcn"
+{
+Can::CAN__frame& tmp_15 = v__frame__to__send1.can__frame();
+tmp_15.can__id() = os_0;
+tmp_15.can__pdu() = os_11;
+}
+current_location.update_lineno(260);
+#line 260 "CAN_matrix_test.ttcn"
+Can::CAN__frame can__frame;
+current_location.update_lineno(262);
+#line 262 "CAN_matrix_test.ttcn"
+can__frame = const_cast< const SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame&>(v__frame__to__send1).can__frame();
+current_location.update_lineno(266);
+#line 266 "CAN_matrix_test.ttcn"
+{
+Can::CANFD__frame& tmp_18 = v__frame__to__send2.canfd__frame();
+tmp_18.can__id() = os_12;
+tmp_18.can__flags() = bs_2;
+tmp_18.can__pdu() = os_13;
+}
+current_location.update_lineno(272);
+#line 272 "CAN_matrix_test.ttcn"
+TTCN_Runtime::setverdict(PASS);
+} catch (const TC_Error& tc_error) {
+} catch (const TC_End& tc_end) {
+TTCN_Logger::log_str(TTCN_FUNCTION, "Test case tc_encdec was stopped.");
+}
+return TTCN_Runtime::end_testcase();
+}
+
+verdicttype testcase_tc__can__raw__send__and__receive__can__frame(boolean has_timer, double timer_value)
+{
+TTCN_Runtime::check_begin_testcase(has_timer, timer_value);
+TTCN_Location current_location("CAN_matrix_test.ttcn", 275, TTCN_Location::LOCATION_TESTCASE, "tc_can_raw_send_and_receive_can_frame");
+try {
+TTCN_Runtime::begin_testcase("CAN_matrix_test", "tc_can_raw_send_and_receive_can_frame", "SocketCANtest", "MTC", "SocketCANtest", "MTC", has_timer, timer_value);
+current_location.update_lineno(276);
+#line 276 "CAN_matrix_test.ttcn"
+COMPONENT v__ptc__rawSendInitiator(TTCN_Runtime::create_component("SocketCANtest", "PTC", "PTC1_ptc_rawSendInitiator", NULL, TRUE));
+current_location.update_lineno(277);
+#line 277 "CAN_matrix_test.ttcn"
+COMPONENT v__ptc__rawFrameReceiver(TTCN_Runtime::create_component("SocketCANtest", "PTC", "PTC2_ptc_rawFrameReceiver", NULL, TRUE));
+current_location.update_lineno(279);
+#line 279 "CAN_matrix_test.ttcn"
+SocketCANtest::f__addSyncSlaveSet(v__ptc__rawSendInitiator, SocketCANtest::MTC_component_v__PTCSet);
+current_location.update_lineno(280);
+#line 280 "CAN_matrix_test.ttcn"
+SocketCANtest::f__addSyncSlaveSet(v__ptc__rawFrameReceiver, SocketCANtest::MTC_component_v__PTCSet);
+current_location.update_lineno(281);
+#line 281 "CAN_matrix_test.ttcn"
+TTCN_Runtime::connect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawSendInitiator, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(282);
+#line 282 "CAN_matrix_test.ttcn"
+TTCN_Runtime::connect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawFrameReceiver, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(285);
+#line 285 "CAN_matrix_test.ttcn"
+CAN__matrix__messages::CAN__MESSAGE__TESTFRAME1__msg__type v__message__Frame1__3;
+current_location.update_lineno(287);
+#line 287 "CAN_matrix_test.ttcn"
+v__message__Frame1__3.test__sig__11__bit__bitstring__big__endian__coded() = bs_0;
+v__message__Frame1__3.test__sig__5__bit__bitstring__big__endian__coded() = bs_1;
+current_location.update_lineno(294);
+#line 294 "CAN_matrix_test.ttcn"
+CAN__matrix__messages::CAN__MatrixUnion_template t__message__Frame1__3;
+t__message__Frame1__3.can__id() = os_3;
+t__message__Frame1__3.can__pdu().message__MyTestframe1() = v__message__Frame1__3;
+current_location.update_lineno(300);
+#line 300 "CAN_matrix_test.ttcn"
+SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame v__frame__to__send;
+current_location.update_lineno(301);
+#line 301 "CAN_matrix_test.ttcn"
+v__frame__to__send.can__frame() = CAN__matrix::canmatrixframe2can(t__message__Frame1__3.valueof());
+current_location.update_lineno(303);
+#line 303 "CAN_matrix_test.ttcn"
+SocketCANtest::start_f__ptc__RawSendInitiator(v__ptc__rawSendInitiator, SocketCANtest::e__Phase::e__testbody1, v__frame__to__send);
+current_location.update_lineno(304);
+#line 304 "CAN_matrix_test.ttcn"
+SocketCANtest::start_f__ptc__RawFrameReceiver(v__ptc__rawFrameReceiver, SocketCANtest::e__Phase::e__testbody3, SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame_template(v__frame__to__send));
+current_location.update_lineno(306);
+#line 306 "CAN_matrix_test.ttcn"
+SocketCANtest::e__Phase v__phase;
+current_location.update_lineno(308);
+#line 308 "CAN_matrix_test.ttcn"
+v__phase = SocketCANtest::c__firstPhase;
+current_location.update_lineno(308);
+#line 308 "CAN_matrix_test.ttcn"
+for ( ; ; ) {
+current_location.update_lineno(308);
+#line 308 "CAN_matrix_test.ttcn"
+if (!(v__phase < SocketCANtest::e__Phase::e__testcase__complete)) break;
+current_location.update_lineno(309);
+#line 309 "CAN_matrix_test.ttcn"
+SocketCANtest::f__startPhase(v__phase);
+current_location.update_lineno(310);
+#line 310 "CAN_matrix_test.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("MTC: ");
+v__phase.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(311);
+#line 311 "CAN_matrix_test.ttcn"
+SocketCANtest::f__awaitEndPhase(v__phase);
+current_location.update_lineno(308);
+#line 308 "CAN_matrix_test.ttcn"
+v__phase = SocketCANtest::f__incMTCPhase(v__phase);
+}
+current_location.update_lineno(314);
+#line 314 "CAN_matrix_test.ttcn"
+{
+tmp_23:
+alt_status alt_flag = ALT_UNCHECKED, default_flag = ALT_UNCHECKED;
+TTCN_Snapshot::take_new(FALSE);
+for ( ; ; ) {
+if (alt_flag != ALT_NO) {
+alt_flag = TTCN_Runtime::component_done(ALL_COMPREF);
+if (alt_flag == ALT_YES) break;
+else if (alt_flag == ALT_REPEAT) goto tmp_23;
+}
+if (default_flag != ALT_NO) {
+default_flag = TTCN_Default::try_altsteps();
+if (default_flag == ALT_YES || default_flag == ALT_BREAK) break;
+else if (default_flag == ALT_REPEAT) goto tmp_23;
+}
+current_location.update_lineno(314);
+#line 314 "CAN_matrix_test.ttcn"
+if (alt_flag == ALT_NO && default_flag == ALT_NO) TTCN_error("Stand-alone done statement failed in file CAN_matrix_test.ttcn, line 314.");
+TTCN_Snapshot::take_new(TRUE);
+}
+}
+current_location.update_lineno(315);
+#line 315 "CAN_matrix_test.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "MTC done");
+current_location.update_lineno(317);
+#line 317 "CAN_matrix_test.ttcn"
+TTCN_Runtime::disconnect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawSendInitiator, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(318);
+#line 318 "CAN_matrix_test.ttcn"
+TTCN_Runtime::disconnect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawFrameReceiver, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(320);
+#line 320 "CAN_matrix_test.ttcn"
+TTCN_Runtime::kill_component(ALL_COMPREF);
+} catch (const TC_Error& tc_error) {
+} catch (const TC_End& tc_end) {
+TTCN_Logger::log_str(TTCN_FUNCTION, "Test case tc_can_raw_send_and_receive_can_frame was stopped.");
+}
+return TTCN_Runtime::end_testcase();
+}
+
+verdicttype testcase_tc__can__raw__send__and__receive__canfd__frame(boolean has_timer, double timer_value)
+{
+TTCN_Runtime::check_begin_testcase(has_timer, timer_value);
+TTCN_Location current_location("CAN_matrix_test.ttcn", 323, TTCN_Location::LOCATION_TESTCASE, "tc_can_raw_send_and_receive_canfd_frame");
+try {
+TTCN_Runtime::begin_testcase("CAN_matrix_test", "tc_can_raw_send_and_receive_canfd_frame", "SocketCANtest", "MTC", "SocketCANtest", "MTC", has_timer, timer_value);
+current_location.update_lineno(324);
+#line 324 "CAN_matrix_test.ttcn"
+COMPONENT v__ptc__rawSendInitiator(TTCN_Runtime::create_component("SocketCANtest", "PTC", "PTC1_ptc_rawSendInitiator", NULL, TRUE));
+current_location.update_lineno(325);
+#line 325 "CAN_matrix_test.ttcn"
+COMPONENT v__ptc__rawFrameReceiver(TTCN_Runtime::create_component("SocketCANtest", "PTC", "PTC2_ptc_rawFrameReceiver", NULL, TRUE));
+current_location.update_lineno(328);
+#line 328 "CAN_matrix_test.ttcn"
+SocketCANtest::f__addSyncSlaveSet(v__ptc__rawSendInitiator, SocketCANtest::MTC_component_v__PTCSet);
+current_location.update_lineno(329);
+#line 329 "CAN_matrix_test.ttcn"
+SocketCANtest::f__addSyncSlaveSet(v__ptc__rawFrameReceiver, SocketCANtest::MTC_component_v__PTCSet);
+current_location.update_lineno(331);
+#line 331 "CAN_matrix_test.ttcn"
+TTCN_Runtime::connect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawSendInitiator, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(332);
+#line 332 "CAN_matrix_test.ttcn"
+TTCN_Runtime::connect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawFrameReceiver, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(334);
+#line 334 "CAN_matrix_test.ttcn"
+SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame v__canfd__frame__to__send;
+current_location.update_lineno(335);
+#line 335 "CAN_matrix_test.ttcn"
+{
+Can::CANFD__frame& tmp_25 = v__canfd__frame__to__send.canfd__frame();
+tmp_25.can__id() = os_12;
+tmp_25.can__flags() = bs_3;
+tmp_25.can__pdu() = os_13;
+}
+current_location.update_lineno(341);
+#line 341 "CAN_matrix_test.ttcn"
+CANFD__matrix__messages::CANFD__MESSAGE__TESTFRAME1__msg__type v__message__Frame1__4;
+current_location.update_lineno(343);
+#line 343 "CAN_matrix_test.ttcn"
+v__message__Frame1__4.test__sig__11__bit__bitstring__msb__coded() = bs_0;
+v__message__Frame1__4.test__sig__5__bit__bitstring__msb__coded() = bs_1;
+current_location.update_lineno(350);
+#line 350 "CAN_matrix_test.ttcn"
+CANFD__matrix__messages::CANFD__MatrixUnion_template t__message__Frame1__4;
+t__message__Frame1__4.can__id() = os_3;
+t__message__Frame1__4.can__flags() = bs_3;
+t__message__Frame1__4.can__pdu().message__MyTestframe1() = v__message__Frame1__4;
+current_location.update_lineno(357);
+#line 357 "CAN_matrix_test.ttcn"
+SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame v__frame__to__send;
+current_location.update_lineno(358);
+#line 358 "CAN_matrix_test.ttcn"
+v__frame__to__send.canfd__frame() = CAN__matrix::canfdmatrixframe2canfd(t__message__Frame1__4.valueof());
+current_location.update_lineno(361);
+#line 361 "CAN_matrix_test.ttcn"
+SocketCANtest::start_f__ptc__RawSendInitiator(v__ptc__rawSendInitiator, SocketCANtest::e__Phase::e__testbody2, v__canfd__frame__to__send);
+current_location.update_lineno(362);
+#line 362 "CAN_matrix_test.ttcn"
+SocketCANtest::start_f__ptc__RawFrameReceiver(v__ptc__rawFrameReceiver, SocketCANtest::e__Phase::e__testbody3, SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame_template(v__canfd__frame__to__send));
+current_location.update_lineno(364);
+#line 364 "CAN_matrix_test.ttcn"
+SocketCANtest::e__Phase v__phase;
+current_location.update_lineno(366);
+#line 366 "CAN_matrix_test.ttcn"
+v__phase = SocketCANtest::c__firstPhase;
+current_location.update_lineno(366);
+#line 366 "CAN_matrix_test.ttcn"
+for ( ; ; ) {
+current_location.update_lineno(366);
+#line 366 "CAN_matrix_test.ttcn"
+if (!(v__phase < SocketCANtest::e__Phase::e__testcase__complete)) break;
+current_location.update_lineno(367);
+#line 367 "CAN_matrix_test.ttcn"
+SocketCANtest::f__startPhase(v__phase);
+current_location.update_lineno(368);
+#line 368 "CAN_matrix_test.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("MTC: ");
+v__phase.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(369);
+#line 369 "CAN_matrix_test.ttcn"
+SocketCANtest::f__awaitEndPhase(v__phase);
+current_location.update_lineno(366);
+#line 366 "CAN_matrix_test.ttcn"
+v__phase = SocketCANtest::f__incMTCPhase(v__phase);
+}
+current_location.update_lineno(372);
+#line 372 "CAN_matrix_test.ttcn"
+{
+tmp_30:
+alt_status alt_flag = ALT_UNCHECKED, default_flag = ALT_UNCHECKED;
+TTCN_Snapshot::take_new(FALSE);
+for ( ; ; ) {
+if (alt_flag != ALT_NO) {
+alt_flag = TTCN_Runtime::component_done(ALL_COMPREF);
+if (alt_flag == ALT_YES) break;
+else if (alt_flag == ALT_REPEAT) goto tmp_30;
+}
+if (default_flag != ALT_NO) {
+default_flag = TTCN_Default::try_altsteps();
+if (default_flag == ALT_YES || default_flag == ALT_BREAK) break;
+else if (default_flag == ALT_REPEAT) goto tmp_30;
+}
+current_location.update_lineno(372);
+#line 372 "CAN_matrix_test.ttcn"
+if (alt_flag == ALT_NO && default_flag == ALT_NO) TTCN_error("Stand-alone done statement failed in file CAN_matrix_test.ttcn, line 372.");
+TTCN_Snapshot::take_new(TRUE);
+}
+}
+current_location.update_lineno(373);
+#line 373 "CAN_matrix_test.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "MTC done");
+current_location.update_lineno(376);
+#line 376 "CAN_matrix_test.ttcn"
+TTCN_Runtime::disconnect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawSendInitiator, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(377);
+#line 377 "CAN_matrix_test.ttcn"
+TTCN_Runtime::disconnect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawFrameReceiver, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(379);
+#line 379 "CAN_matrix_test.ttcn"
+TTCN_Runtime::kill_component(ALL_COMPREF);
+} catch (const TC_Error& tc_error) {
+} catch (const TC_End& tc_end) {
+TTCN_Logger::log_str(TTCN_FUNCTION, "Test case tc_can_raw_send_and_receive_canfd_frame was stopped.");
+}
+return TTCN_Runtime::end_testcase();
+}
+
+
+/* Bodies of static functions */
+
+static void pre_init_module()
+{
+TTCN_Location current_location("CAN_matrix_test.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "CAN_matrix_test");
+CanError::module_object.pre_init_module();
+SocketCANtest::module_object.pre_init_module();
+CAN__matrix__templates::module_object.pre_init_module();
+module_object.add_testcase_nonpard("tc_encdec", testcase_tc__encdec);
+module_object.add_testcase_nonpard("tc_can_raw_send_and_receive_can_frame", testcase_tc__can__raw__send__and__receive__can__frame);
+module_object.add_testcase_nonpard("tc_can_raw_send_and_receive_canfd_frame", testcase_tc__can__raw__send__and__receive__canfd__frame);
+}
+
+static void post_init_module()
+{
+TTCN_Location current_location("CAN_matrix_test.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "CAN_matrix_test");
+CanError::module_object.post_init_module();
+SocketCANtest::module_object.post_init_module();
+CAN__matrix__templates::module_object.post_init_module();
+}
+
+static boolean init_comp_type(const char *component_type, boolean init_base_comps)
+{
+(void)init_base_comps;
+if (!strcmp(component_type, "MTC_CT")) {
+return TRUE;
+} else return FALSE;
+}
+
+
+} /* end of namespace */
diff --git a/demo/CAN_matrix_test.d b/demo/CAN_matrix_test.d
new file mode 100644
index 0000000..9bb61e1
--- /dev/null
+++ b/demo/CAN_matrix_test.d
@@ -0,0 +1,63 @@
+CAN_matrix_test.o CAN_matrix_test.d : CAN_matrix_test.cc CAN_matrix_test.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TTCN3.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/version.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/cversion.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Types.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Vector.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Error.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Basetype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Encdec.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RInt.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON_Tokenizer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Logger.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Template.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Integer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ttcn3float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Boolean.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Null.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Optional.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Param_Types.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/memory.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/BER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Textbuf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Parameters.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XmlReader.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Objid.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Verdicttype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Component.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Bitstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RAW.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/CharCoding.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Hexstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Octetstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Any.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Universal_charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Struct_of.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Array.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_CharacterString.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_External.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TEXT.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_EmbeddedPDV.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Addfunc.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Timer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Port.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Event_Handler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/TitanLoggerApiSimple.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/PreGenRecordOf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Module_list.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Snapshot.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Default.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Runtime.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/OER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Profiler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ProfilerTools.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Debugger.hh \
+ CanError.hh SocketCANtest.hh SocketCAN_PortType.hh SocketCAN_Types.hh \
+ Bcm.hh Can.hh General_Types.hh Raw.hh ../src/SocketCAN_PT.hh \
+ SocketCAN_Types.hh SocketCAN_Templates.hh CAN_matrix_templates.hh \
+ CAN_matrix.hh CAN_matrix_messages.hh CAN_matrix_signals.hh \
+ CAN_matrix_general_types.hh CANFD_matrix_messages.hh
diff --git a/demo/CAN_matrix_test.hh b/demo/CAN_matrix_test.hh
new file mode 100644
index 0000000..3719dea
--- /dev/null
+++ b/demo/CAN_matrix_test.hh
@@ -0,0 +1,54 @@
+// This C++ header file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+#ifndef CAN__matrix__test_HH
+#define CAN__matrix__test_HH
+
+#ifdef TITAN_RUNTIME_2
+#error Generated code does not match with used runtime.\
+ Code was generated without -R option but -DTITAN_RUNTIME_2 was used.
+#endif
+
+/* Header file includes */
+
+#include <TTCN3.hh>
+#include "CanError.hh"
+#include "SocketCANtest.hh"
+#include "CAN_matrix_templates.hh"
+
+#if TTCN3_VERSION != 60600
+#error Version mismatch detected.\
+ Please check the version of the TTCN-3 compiler and the base library.\
+ Run make clean and rebuild the project if the version of the compiler changed recently.
+#endif
+
+#ifndef LINUX
+#error This file should be compiled on LINUX
+#endif
+
+namespace CAN__matrix__test {
+
+/* Type definitions */
+
+typedef COMPONENT MTC__CT;
+typedef COMPONENT_template MTC__CT_template;
+
+/* Function prototypes */
+
+extern verdicttype testcase_tc__encdec(boolean has_timer, double timer_value);
+extern verdicttype testcase_tc__can__raw__send__and__receive__can__frame(boolean has_timer, double timer_value);
+extern verdicttype testcase_tc__can__raw__send__and__receive__canfd__frame(boolean has_timer, double timer_value);
+
+/* Global variable declarations */
+
+extern const TTCN_Typedescriptor_t& MTC__CT_descr_;
+extern TTCN_Module module_object;
+
+} /* end of namespace */
+
+#endif
diff --git a/demo/CAN_matrix_test.o b/demo/CAN_matrix_test.o
new file mode 100644
index 0000000..bd58c67
--- /dev/null
+++ b/demo/CAN_matrix_test.o
Binary files differ
diff --git a/demo/Can.cc b/demo/Can.cc
new file mode 100644
index 0000000..e5f6a61
--- /dev/null
+++ b/demo/Can.cc
@@ -0,0 +1,4171 @@
+// This C++ source file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+/* Including header files */
+
+#include "Can.hh"
+
+namespace Can {
+
+/* Prototypes of static functions */
+
+static void pre_init_module();
+static void post_init_module();
+
+/* Literal string constants */
+
+static const unsigned char os_3_octets[] = { 0, 0, 7, 255 },
+os_4_octets[] = { 31, 255, 255, 255 },
+os_2_octets[] = { 32, 0, 0, 0 },
+os_1_octets[] = { 64, 0, 0, 0 },
+os_0_octets[] = { 128, 0, 0, 0 };
+static const OCTETSTRING os_3(4, os_3_octets),
+os_4(4, os_4_octets),
+os_2(4, os_2_octets),
+os_1(4, os_1_octets),
+os_0(4, os_0_octets);
+static const unsigned short op_128_elements[] = { 0, 256, 256, 256 },
+op_129_elements[] = { 1, 256, 256, 256 },
+op_130_elements[] = { 2, 256, 256, 256 },
+op_131_elements[] = { 3, 256, 256, 256 },
+op_132_elements[] = { 4, 256, 256, 256 },
+op_133_elements[] = { 5, 256, 256, 256 },
+op_134_elements[] = { 6, 256, 256, 256 },
+op_135_elements[] = { 7, 256, 256, 256 },
+op_136_elements[] = { 8, 256, 256, 256 },
+op_137_elements[] = { 9, 256, 256, 256 },
+op_138_elements[] = { 10, 256, 256, 256 },
+op_139_elements[] = { 11, 256, 256, 256 },
+op_140_elements[] = { 12, 256, 256, 256 },
+op_141_elements[] = { 13, 256, 256, 256 },
+op_142_elements[] = { 14, 256, 256, 256 },
+op_143_elements[] = { 15, 256, 256, 256 },
+op_144_elements[] = { 16, 256, 256, 256 },
+op_145_elements[] = { 17, 256, 256, 256 },
+op_146_elements[] = { 18, 256, 256, 256 },
+op_147_elements[] = { 19, 256, 256, 256 },
+op_148_elements[] = { 20, 256, 256, 256 },
+op_149_elements[] = { 21, 256, 256, 256 },
+op_150_elements[] = { 22, 256, 256, 256 },
+op_151_elements[] = { 23, 256, 256, 256 },
+op_152_elements[] = { 24, 256, 256, 256 },
+op_153_elements[] = { 25, 256, 256, 256 },
+op_154_elements[] = { 26, 256, 256, 256 },
+op_155_elements[] = { 27, 256, 256, 256 },
+op_156_elements[] = { 28, 256, 256, 256 },
+op_157_elements[] = { 29, 256, 256, 256 },
+op_158_elements[] = { 30, 256, 256, 256 },
+op_159_elements[] = { 31, 256, 256, 256 },
+op_160_elements[] = { 32, 256, 256, 256 },
+op_161_elements[] = { 33, 256, 256, 256 },
+op_162_elements[] = { 34, 256, 256, 256 },
+op_163_elements[] = { 35, 256, 256, 256 },
+op_164_elements[] = { 36, 256, 256, 256 },
+op_165_elements[] = { 37, 256, 256, 256 },
+op_166_elements[] = { 38, 256, 256, 256 },
+op_167_elements[] = { 39, 256, 256, 256 },
+op_168_elements[] = { 40, 256, 256, 256 },
+op_169_elements[] = { 41, 256, 256, 256 },
+op_170_elements[] = { 42, 256, 256, 256 },
+op_171_elements[] = { 43, 256, 256, 256 },
+op_172_elements[] = { 44, 256, 256, 256 },
+op_173_elements[] = { 45, 256, 256, 256 },
+op_174_elements[] = { 46, 256, 256, 256 },
+op_175_elements[] = { 47, 256, 256, 256 },
+op_176_elements[] = { 48, 256, 256, 256 },
+op_177_elements[] = { 49, 256, 256, 256 },
+op_178_elements[] = { 50, 256, 256, 256 },
+op_179_elements[] = { 51, 256, 256, 256 },
+op_180_elements[] = { 52, 256, 256, 256 },
+op_181_elements[] = { 53, 256, 256, 256 },
+op_182_elements[] = { 54, 256, 256, 256 },
+op_183_elements[] = { 55, 256, 256, 256 },
+op_184_elements[] = { 56, 256, 256, 256 },
+op_185_elements[] = { 57, 256, 256, 256 },
+op_186_elements[] = { 58, 256, 256, 256 },
+op_187_elements[] = { 59, 256, 256, 256 },
+op_188_elements[] = { 60, 256, 256, 256 },
+op_189_elements[] = { 61, 256, 256, 256 },
+op_190_elements[] = { 62, 256, 256, 256 },
+op_191_elements[] = { 63, 256, 256, 256 },
+op_192_elements[] = { 64, 256, 256, 256 },
+op_193_elements[] = { 65, 256, 256, 256 },
+op_194_elements[] = { 66, 256, 256, 256 },
+op_195_elements[] = { 67, 256, 256, 256 },
+op_196_elements[] = { 68, 256, 256, 256 },
+op_197_elements[] = { 69, 256, 256, 256 },
+op_198_elements[] = { 70, 256, 256, 256 },
+op_199_elements[] = { 71, 256, 256, 256 },
+op_200_elements[] = { 72, 256, 256, 256 },
+op_201_elements[] = { 73, 256, 256, 256 },
+op_202_elements[] = { 74, 256, 256, 256 },
+op_203_elements[] = { 75, 256, 256, 256 },
+op_204_elements[] = { 76, 256, 256, 256 },
+op_205_elements[] = { 77, 256, 256, 256 },
+op_206_elements[] = { 78, 256, 256, 256 },
+op_207_elements[] = { 79, 256, 256, 256 },
+op_208_elements[] = { 80, 256, 256, 256 },
+op_209_elements[] = { 81, 256, 256, 256 },
+op_210_elements[] = { 82, 256, 256, 256 },
+op_211_elements[] = { 83, 256, 256, 256 },
+op_212_elements[] = { 84, 256, 256, 256 },
+op_213_elements[] = { 85, 256, 256, 256 },
+op_214_elements[] = { 86, 256, 256, 256 },
+op_215_elements[] = { 87, 256, 256, 256 },
+op_216_elements[] = { 88, 256, 256, 256 },
+op_217_elements[] = { 89, 256, 256, 256 },
+op_218_elements[] = { 90, 256, 256, 256 },
+op_219_elements[] = { 91, 256, 256, 256 },
+op_220_elements[] = { 92, 256, 256, 256 },
+op_221_elements[] = { 93, 256, 256, 256 },
+op_222_elements[] = { 94, 256, 256, 256 },
+op_223_elements[] = { 95, 256, 256, 256 },
+op_224_elements[] = { 96, 256, 256, 256 },
+op_225_elements[] = { 97, 256, 256, 256 },
+op_226_elements[] = { 98, 256, 256, 256 },
+op_227_elements[] = { 99, 256, 256, 256 },
+op_228_elements[] = { 100, 256, 256, 256 },
+op_229_elements[] = { 101, 256, 256, 256 },
+op_230_elements[] = { 102, 256, 256, 256 },
+op_231_elements[] = { 103, 256, 256, 256 },
+op_232_elements[] = { 104, 256, 256, 256 },
+op_233_elements[] = { 105, 256, 256, 256 },
+op_234_elements[] = { 106, 256, 256, 256 },
+op_235_elements[] = { 107, 256, 256, 256 },
+op_236_elements[] = { 108, 256, 256, 256 },
+op_237_elements[] = { 109, 256, 256, 256 },
+op_238_elements[] = { 110, 256, 256, 256 },
+op_239_elements[] = { 111, 256, 256, 256 },
+op_240_elements[] = { 112, 256, 256, 256 },
+op_241_elements[] = { 113, 256, 256, 256 },
+op_242_elements[] = { 114, 256, 256, 256 },
+op_243_elements[] = { 115, 256, 256, 256 },
+op_244_elements[] = { 116, 256, 256, 256 },
+op_245_elements[] = { 117, 256, 256, 256 },
+op_246_elements[] = { 118, 256, 256, 256 },
+op_247_elements[] = { 119, 256, 256, 256 },
+op_248_elements[] = { 120, 256, 256, 256 },
+op_249_elements[] = { 121, 256, 256, 256 },
+op_250_elements[] = { 122, 256, 256, 256 },
+op_251_elements[] = { 123, 256, 256, 256 },
+op_252_elements[] = { 124, 256, 256, 256 },
+op_253_elements[] = { 125, 256, 256, 256 },
+op_254_elements[] = { 126, 256, 256, 256 },
+op_255_elements[] = { 127, 256, 256, 256 },
+op_0_elements[] = { 128, 256, 256, 256 },
+op_1_elements[] = { 129, 256, 256, 256 },
+op_2_elements[] = { 130, 256, 256, 256 },
+op_3_elements[] = { 131, 256, 256, 256 },
+op_4_elements[] = { 132, 256, 256, 256 },
+op_5_elements[] = { 133, 256, 256, 256 },
+op_6_elements[] = { 134, 256, 256, 256 },
+op_7_elements[] = { 135, 256, 256, 256 },
+op_8_elements[] = { 136, 256, 256, 256 },
+op_9_elements[] = { 137, 256, 256, 256 },
+op_10_elements[] = { 138, 256, 256, 256 },
+op_11_elements[] = { 139, 256, 256, 256 },
+op_12_elements[] = { 140, 256, 256, 256 },
+op_13_elements[] = { 141, 256, 256, 256 },
+op_14_elements[] = { 142, 256, 256, 256 },
+op_15_elements[] = { 143, 256, 256, 256 },
+op_16_elements[] = { 144, 256, 256, 256 },
+op_17_elements[] = { 145, 256, 256, 256 },
+op_18_elements[] = { 146, 256, 256, 256 },
+op_19_elements[] = { 147, 256, 256, 256 },
+op_20_elements[] = { 148, 256, 256, 256 },
+op_21_elements[] = { 149, 256, 256, 256 },
+op_22_elements[] = { 150, 256, 256, 256 },
+op_23_elements[] = { 151, 256, 256, 256 },
+op_24_elements[] = { 152, 256, 256, 256 },
+op_25_elements[] = { 153, 256, 256, 256 },
+op_26_elements[] = { 154, 256, 256, 256 },
+op_27_elements[] = { 155, 256, 256, 256 },
+op_28_elements[] = { 156, 256, 256, 256 },
+op_29_elements[] = { 157, 256, 256, 256 },
+op_30_elements[] = { 158, 256, 256, 256 },
+op_31_elements[] = { 159, 256, 256, 256 },
+op_32_elements[] = { 160, 256, 256, 256 },
+op_33_elements[] = { 161, 256, 256, 256 },
+op_34_elements[] = { 162, 256, 256, 256 },
+op_35_elements[] = { 163, 256, 256, 256 },
+op_36_elements[] = { 164, 256, 256, 256 },
+op_37_elements[] = { 165, 256, 256, 256 },
+op_38_elements[] = { 166, 256, 256, 256 },
+op_39_elements[] = { 167, 256, 256, 256 },
+op_40_elements[] = { 168, 256, 256, 256 },
+op_41_elements[] = { 169, 256, 256, 256 },
+op_42_elements[] = { 170, 256, 256, 256 },
+op_43_elements[] = { 171, 256, 256, 256 },
+op_44_elements[] = { 172, 256, 256, 256 },
+op_45_elements[] = { 173, 256, 256, 256 },
+op_46_elements[] = { 174, 256, 256, 256 },
+op_47_elements[] = { 175, 256, 256, 256 },
+op_48_elements[] = { 176, 256, 256, 256 },
+op_49_elements[] = { 177, 256, 256, 256 },
+op_50_elements[] = { 178, 256, 256, 256 },
+op_51_elements[] = { 179, 256, 256, 256 },
+op_52_elements[] = { 180, 256, 256, 256 },
+op_53_elements[] = { 181, 256, 256, 256 },
+op_54_elements[] = { 182, 256, 256, 256 },
+op_55_elements[] = { 183, 256, 256, 256 },
+op_56_elements[] = { 184, 256, 256, 256 },
+op_57_elements[] = { 185, 256, 256, 256 },
+op_58_elements[] = { 186, 256, 256, 256 },
+op_59_elements[] = { 187, 256, 256, 256 },
+op_60_elements[] = { 188, 256, 256, 256 },
+op_61_elements[] = { 189, 256, 256, 256 },
+op_62_elements[] = { 190, 256, 256, 256 },
+op_63_elements[] = { 191, 256, 256, 256 },
+op_64_elements[] = { 192, 256, 256, 256 },
+op_65_elements[] = { 193, 256, 256, 256 },
+op_66_elements[] = { 194, 256, 256, 256 },
+op_67_elements[] = { 195, 256, 256, 256 },
+op_68_elements[] = { 196, 256, 256, 256 },
+op_69_elements[] = { 197, 256, 256, 256 },
+op_70_elements[] = { 198, 256, 256, 256 },
+op_71_elements[] = { 199, 256, 256, 256 },
+op_72_elements[] = { 200, 256, 256, 256 },
+op_73_elements[] = { 201, 256, 256, 256 },
+op_74_elements[] = { 202, 256, 256, 256 },
+op_75_elements[] = { 203, 256, 256, 256 },
+op_76_elements[] = { 204, 256, 256, 256 },
+op_77_elements[] = { 205, 256, 256, 256 },
+op_78_elements[] = { 206, 256, 256, 256 },
+op_79_elements[] = { 207, 256, 256, 256 },
+op_80_elements[] = { 208, 256, 256, 256 },
+op_81_elements[] = { 209, 256, 256, 256 },
+op_82_elements[] = { 210, 256, 256, 256 },
+op_83_elements[] = { 211, 256, 256, 256 },
+op_84_elements[] = { 212, 256, 256, 256 },
+op_85_elements[] = { 213, 256, 256, 256 },
+op_86_elements[] = { 214, 256, 256, 256 },
+op_87_elements[] = { 215, 256, 256, 256 },
+op_88_elements[] = { 216, 256, 256, 256 },
+op_89_elements[] = { 217, 256, 256, 256 },
+op_90_elements[] = { 218, 256, 256, 256 },
+op_91_elements[] = { 219, 256, 256, 256 },
+op_92_elements[] = { 220, 256, 256, 256 },
+op_93_elements[] = { 221, 256, 256, 256 },
+op_94_elements[] = { 222, 256, 256, 256 },
+op_95_elements[] = { 223, 256, 256, 256 },
+op_96_elements[] = { 224, 256, 256, 256 },
+op_97_elements[] = { 225, 256, 256, 256 },
+op_98_elements[] = { 226, 256, 256, 256 },
+op_99_elements[] = { 227, 256, 256, 256 },
+op_100_elements[] = { 228, 256, 256, 256 },
+op_101_elements[] = { 229, 256, 256, 256 },
+op_102_elements[] = { 230, 256, 256, 256 },
+op_103_elements[] = { 231, 256, 256, 256 },
+op_104_elements[] = { 232, 256, 256, 256 },
+op_105_elements[] = { 233, 256, 256, 256 },
+op_106_elements[] = { 234, 256, 256, 256 },
+op_107_elements[] = { 235, 256, 256, 256 },
+op_108_elements[] = { 236, 256, 256, 256 },
+op_109_elements[] = { 237, 256, 256, 256 },
+op_110_elements[] = { 238, 256, 256, 256 },
+op_111_elements[] = { 239, 256, 256, 256 },
+op_112_elements[] = { 240, 256, 256, 256 },
+op_113_elements[] = { 241, 256, 256, 256 },
+op_114_elements[] = { 242, 256, 256, 256 },
+op_115_elements[] = { 243, 256, 256, 256 },
+op_116_elements[] = { 244, 256, 256, 256 },
+op_117_elements[] = { 245, 256, 256, 256 },
+op_118_elements[] = { 246, 256, 256, 256 },
+op_119_elements[] = { 247, 256, 256, 256 },
+op_120_elements[] = { 248, 256, 256, 256 },
+op_121_elements[] = { 249, 256, 256, 256 },
+op_122_elements[] = { 250, 256, 256, 256 },
+op_123_elements[] = { 251, 256, 256, 256 },
+op_124_elements[] = { 252, 256, 256, 256 },
+op_125_elements[] = { 253, 256, 256, 256 },
+op_126_elements[] = { 254, 256, 256, 256 },
+op_127_elements[] = { 255, 256, 256, 256 };
+static const OCTETSTRING_template op_128(4, op_128_elements),
+op_129(4, op_129_elements),
+op_130(4, op_130_elements),
+op_131(4, op_131_elements),
+op_132(4, op_132_elements),
+op_133(4, op_133_elements),
+op_134(4, op_134_elements),
+op_135(4, op_135_elements),
+op_136(4, op_136_elements),
+op_137(4, op_137_elements),
+op_138(4, op_138_elements),
+op_139(4, op_139_elements),
+op_140(4, op_140_elements),
+op_141(4, op_141_elements),
+op_142(4, op_142_elements),
+op_143(4, op_143_elements),
+op_144(4, op_144_elements),
+op_145(4, op_145_elements),
+op_146(4, op_146_elements),
+op_147(4, op_147_elements),
+op_148(4, op_148_elements),
+op_149(4, op_149_elements),
+op_150(4, op_150_elements),
+op_151(4, op_151_elements),
+op_152(4, op_152_elements),
+op_153(4, op_153_elements),
+op_154(4, op_154_elements),
+op_155(4, op_155_elements),
+op_156(4, op_156_elements),
+op_157(4, op_157_elements),
+op_158(4, op_158_elements),
+op_159(4, op_159_elements),
+op_160(4, op_160_elements),
+op_161(4, op_161_elements),
+op_162(4, op_162_elements),
+op_163(4, op_163_elements),
+op_164(4, op_164_elements),
+op_165(4, op_165_elements),
+op_166(4, op_166_elements),
+op_167(4, op_167_elements),
+op_168(4, op_168_elements),
+op_169(4, op_169_elements),
+op_170(4, op_170_elements),
+op_171(4, op_171_elements),
+op_172(4, op_172_elements),
+op_173(4, op_173_elements),
+op_174(4, op_174_elements),
+op_175(4, op_175_elements),
+op_176(4, op_176_elements),
+op_177(4, op_177_elements),
+op_178(4, op_178_elements),
+op_179(4, op_179_elements),
+op_180(4, op_180_elements),
+op_181(4, op_181_elements),
+op_182(4, op_182_elements),
+op_183(4, op_183_elements),
+op_184(4, op_184_elements),
+op_185(4, op_185_elements),
+op_186(4, op_186_elements),
+op_187(4, op_187_elements),
+op_188(4, op_188_elements),
+op_189(4, op_189_elements),
+op_190(4, op_190_elements),
+op_191(4, op_191_elements),
+op_192(4, op_192_elements),
+op_193(4, op_193_elements),
+op_194(4, op_194_elements),
+op_195(4, op_195_elements),
+op_196(4, op_196_elements),
+op_197(4, op_197_elements),
+op_198(4, op_198_elements),
+op_199(4, op_199_elements),
+op_200(4, op_200_elements),
+op_201(4, op_201_elements),
+op_202(4, op_202_elements),
+op_203(4, op_203_elements),
+op_204(4, op_204_elements),
+op_205(4, op_205_elements),
+op_206(4, op_206_elements),
+op_207(4, op_207_elements),
+op_208(4, op_208_elements),
+op_209(4, op_209_elements),
+op_210(4, op_210_elements),
+op_211(4, op_211_elements),
+op_212(4, op_212_elements),
+op_213(4, op_213_elements),
+op_214(4, op_214_elements),
+op_215(4, op_215_elements),
+op_216(4, op_216_elements),
+op_217(4, op_217_elements),
+op_218(4, op_218_elements),
+op_219(4, op_219_elements),
+op_220(4, op_220_elements),
+op_221(4, op_221_elements),
+op_222(4, op_222_elements),
+op_223(4, op_223_elements),
+op_224(4, op_224_elements),
+op_225(4, op_225_elements),
+op_226(4, op_226_elements),
+op_227(4, op_227_elements),
+op_228(4, op_228_elements),
+op_229(4, op_229_elements),
+op_230(4, op_230_elements),
+op_231(4, op_231_elements),
+op_232(4, op_232_elements),
+op_233(4, op_233_elements),
+op_234(4, op_234_elements),
+op_235(4, op_235_elements),
+op_236(4, op_236_elements),
+op_237(4, op_237_elements),
+op_238(4, op_238_elements),
+op_239(4, op_239_elements),
+op_240(4, op_240_elements),
+op_241(4, op_241_elements),
+op_242(4, op_242_elements),
+op_243(4, op_243_elements),
+op_244(4, op_244_elements),
+op_245(4, op_245_elements),
+op_246(4, op_246_elements),
+op_247(4, op_247_elements),
+op_248(4, op_248_elements),
+op_249(4, op_249_elements),
+op_250(4, op_250_elements),
+op_251(4, op_251_elements),
+op_252(4, op_252_elements),
+op_253(4, op_253_elements),
+op_254(4, op_254_elements),
+op_255(4, op_255_elements),
+op_0(4, op_0_elements),
+op_1(4, op_1_elements),
+op_2(4, op_2_elements),
+op_3(4, op_3_elements),
+op_4(4, op_4_elements),
+op_5(4, op_5_elements),
+op_6(4, op_6_elements),
+op_7(4, op_7_elements),
+op_8(4, op_8_elements),
+op_9(4, op_9_elements),
+op_10(4, op_10_elements),
+op_11(4, op_11_elements),
+op_12(4, op_12_elements),
+op_13(4, op_13_elements),
+op_14(4, op_14_elements),
+op_15(4, op_15_elements),
+op_16(4, op_16_elements),
+op_17(4, op_17_elements),
+op_18(4, op_18_elements),
+op_19(4, op_19_elements),
+op_20(4, op_20_elements),
+op_21(4, op_21_elements),
+op_22(4, op_22_elements),
+op_23(4, op_23_elements),
+op_24(4, op_24_elements),
+op_25(4, op_25_elements),
+op_26(4, op_26_elements),
+op_27(4, op_27_elements),
+op_28(4, op_28_elements),
+op_29(4, op_29_elements),
+op_30(4, op_30_elements),
+op_31(4, op_31_elements),
+op_32(4, op_32_elements),
+op_33(4, op_33_elements),
+op_34(4, op_34_elements),
+op_35(4, op_35_elements),
+op_36(4, op_36_elements),
+op_37(4, op_37_elements),
+op_38(4, op_38_elements),
+op_39(4, op_39_elements),
+op_40(4, op_40_elements),
+op_41(4, op_41_elements),
+op_42(4, op_42_elements),
+op_43(4, op_43_elements),
+op_44(4, op_44_elements),
+op_45(4, op_45_elements),
+op_46(4, op_46_elements),
+op_47(4, op_47_elements),
+op_48(4, op_48_elements),
+op_49(4, op_49_elements),
+op_50(4, op_50_elements),
+op_51(4, op_51_elements),
+op_52(4, op_52_elements),
+op_53(4, op_53_elements),
+op_54(4, op_54_elements),
+op_55(4, op_55_elements),
+op_56(4, op_56_elements),
+op_57(4, op_57_elements),
+op_58(4, op_58_elements),
+op_59(4, op_59_elements),
+op_60(4, op_60_elements),
+op_61(4, op_61_elements),
+op_62(4, op_62_elements),
+op_63(4, op_63_elements),
+op_64(4, op_64_elements),
+op_65(4, op_65_elements),
+op_66(4, op_66_elements),
+op_67(4, op_67_elements),
+op_68(4, op_68_elements),
+op_69(4, op_69_elements),
+op_70(4, op_70_elements),
+op_71(4, op_71_elements),
+op_72(4, op_72_elements),
+op_73(4, op_73_elements),
+op_74(4, op_74_elements),
+op_75(4, op_75_elements),
+op_76(4, op_76_elements),
+op_77(4, op_77_elements),
+op_78(4, op_78_elements),
+op_79(4, op_79_elements),
+op_80(4, op_80_elements),
+op_81(4, op_81_elements),
+op_82(4, op_82_elements),
+op_83(4, op_83_elements),
+op_84(4, op_84_elements),
+op_85(4, op_85_elements),
+op_86(4, op_86_elements),
+op_87(4, op_87_elements),
+op_88(4, op_88_elements),
+op_89(4, op_89_elements),
+op_90(4, op_90_elements),
+op_91(4, op_91_elements),
+op_92(4, op_92_elements),
+op_93(4, op_93_elements),
+op_94(4, op_94_elements),
+op_95(4, op_95_elements),
+op_96(4, op_96_elements),
+op_97(4, op_97_elements),
+op_98(4, op_98_elements),
+op_99(4, op_99_elements),
+op_100(4, op_100_elements),
+op_101(4, op_101_elements),
+op_102(4, op_102_elements),
+op_103(4, op_103_elements),
+op_104(4, op_104_elements),
+op_105(4, op_105_elements),
+op_106(4, op_106_elements),
+op_107(4, op_107_elements),
+op_108(4, op_108_elements),
+op_109(4, op_109_elements),
+op_110(4, op_110_elements),
+op_111(4, op_111_elements),
+op_112(4, op_112_elements),
+op_113(4, op_113_elements),
+op_114(4, op_114_elements),
+op_115(4, op_115_elements),
+op_116(4, op_116_elements),
+op_117(4, op_117_elements),
+op_118(4, op_118_elements),
+op_119(4, op_119_elements),
+op_120(4, op_120_elements),
+op_121(4, op_121_elements),
+op_122(4, op_122_elements),
+op_123(4, op_123_elements),
+op_124(4, op_124_elements),
+op_125(4, op_125_elements),
+op_126(4, op_126_elements),
+op_127(4, op_127_elements);
+static const unsigned char module_checksum[] = { 0x53, 0x65, 0xa1, 0xba, 0x1c, 0x6d, 0x2a, 0xa6, 0xcc, 0xb6, 0x37, 0x4b, 0xb9, 0x1b, 0xae, 0xe1 };
+
+/* Global variable definitions */
+
+static OCTETSTRING const_CAN__EFF__FLAG;
+const OCTETSTRING& CAN__EFF__FLAG = const_CAN__EFF__FLAG;
+static OCTETSTRING const_CAN__RTR__FLAG;
+const OCTETSTRING& CAN__RTR__FLAG = const_CAN__RTR__FLAG;
+static OCTETSTRING const_CAN__ERR__FLAG;
+const OCTETSTRING& CAN__ERR__FLAG = const_CAN__ERR__FLAG;
+static OCTETSTRING const_CAN__SFF__MASK;
+const OCTETSTRING& CAN__SFF__MASK = const_CAN__SFF__MASK;
+static OCTETSTRING const_CAN__EFF__MASK;
+const OCTETSTRING& CAN__EFF__MASK = const_CAN__EFF__MASK;
+static OCTETSTRING const_CAN__ERR__MASK;
+const OCTETSTRING& CAN__ERR__MASK = const_CAN__ERR__MASK;
+static OCTETSTRING_template template_t__CAN__EFF__FLAG;
+const OCTETSTRING_template& t__CAN__EFF__FLAG = template_t__CAN__EFF__FLAG;
+static OCTETSTRING_template template_t__CAN__SFF__FLAG;
+const OCTETSTRING_template& t__CAN__SFF__FLAG = template_t__CAN__SFF__FLAG;
+static OCTETSTRING_template template_t__CAN__RTR__FLAG;
+const OCTETSTRING_template& t__CAN__RTR__FLAG = template_t__CAN__RTR__FLAG;
+static OCTETSTRING_template template_t__CAN__ERR__FLAG;
+const OCTETSTRING_template& t__CAN__ERR__FLAG = template_t__CAN__ERR__FLAG;
+// No XER for AdresseFamily__enum
+const TTCN_Typedescriptor_t AdresseFamily__enum_descr_ = { "@Can.AdresseFamily_enum", NULL, NULL, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+static INTEGER const_AF__CAN;
+const INTEGER& AF__CAN = const_AF__CAN;
+// No XER for ProtocolFamily__enum
+const TTCN_Typedescriptor_t ProtocolFamily__enum_descr_ = { "@Can.ProtocolFamily_enum", NULL, NULL, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for PF__CAN__protocols__enum
+const TTCN_Typedescriptor_t PF__CAN__protocols__enum_descr_ = { "@Can.PF_CAN_protocols_enum", NULL, NULL, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+static INTEGER const_CAN__MAX__DLEN;
+const INTEGER& CAN__MAX__DLEN = const_CAN__MAX__DLEN;
+static INTEGER const_CANFD__MAX__DLEN;
+const INTEGER& CANFD__MAX__DLEN = const_CANFD__MAX__DLEN;
+const TTCN_RAWdescriptor_t CAN__id_raw_ = {32,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,NULL,false};
+const XERdescriptor_t       CAN__id_xer_ = { {"CAN_id>\n", "CAN_id>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int CAN__id_oer_ext_arr_[0] = {};
+const int CAN__id_oer_p_[0] = {};
+const TTCN_OERdescriptor_t CAN__id_oer_ = { -1, TRUE, 4, FALSE, 0, 0, CAN__id_oer_ext_arr_, 0, CAN__id_oer_p_};
+const TTCN_Typedescriptor_t CAN__id_descr_ = { "@Can.CAN_id", &OCTETSTRING_ber_, &CAN__id_raw_, &OCTETSTRING_text_, &CAN__id_xer_, &OCTETSTRING_json_, &CAN__id_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CAN__flags_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,NULL,false};
+const XERdescriptor_t       CAN__flags_xer_ = { {"CAN_flags>\n", "CAN_flags>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t CAN__flags_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t CAN__flags_descr_ = { "@Can.CAN_flags", &BITSTRING_ber_, &CAN__flags_raw_, NULL, &CAN__flags_xer_, &BITSTRING_json_, &CAN__flags_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       CAN__PDU_xer_ = { {"CAN_PDU>\n", "CAN_PDU>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int CAN__PDU_oer_ext_arr_[0] = {};
+const int CAN__PDU_oer_p_[0] = {};
+const TTCN_OERdescriptor_t CAN__PDU_oer_ = { -1, TRUE, -1, FALSE, 0, 0, CAN__PDU_oer_ext_arr_, 0, CAN__PDU_oer_p_};
+const TTCN_Typedescriptor_t CAN__PDU_descr_ = { "@Can.CAN_PDU", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &CAN__PDU_xer_, &OCTETSTRING_json_, &CAN__PDU_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       CAN__frame_can__id_xer_ = { {"can_id>\n", "can_id>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int CAN__frame_can__id_oer_ext_arr_[0] = {};
+const int CAN__frame_can__id_oer_p_[0] = {};
+const TTCN_OERdescriptor_t CAN__frame_can__id_oer_ = { -1, TRUE, 4, FALSE, 0, 0, CAN__frame_can__id_oer_ext_arr_, 0, CAN__frame_can__id_oer_p_};
+const TTCN_Typedescriptor_t CAN__frame_can__id_descr_ = { "@Can.CAN_frame.can_id", &OCTETSTRING_ber_, &CAN__id_raw_, &OCTETSTRING_text_, &CAN__frame_can__id_xer_, &OCTETSTRING_json_, &CAN__frame_can__id_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       CAN__frame_can__pdu_xer_ = { {"can_pdu>\n", "can_pdu>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int CAN__frame_can__pdu_oer_ext_arr_[0] = {};
+const int CAN__frame_can__pdu_oer_p_[0] = {};
+const TTCN_OERdescriptor_t CAN__frame_can__pdu_oer_ = { -1, TRUE, -1, FALSE, 0, 0, CAN__frame_can__pdu_oer_ext_arr_, 0, CAN__frame_can__pdu_oer_p_};
+const TTCN_Typedescriptor_t CAN__frame_can__pdu_descr_ = { "@Can.CAN_frame.can_pdu", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &CAN__frame_can__pdu_xer_, &OCTETSTRING_json_, &CAN__frame_can__pdu_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for CAN__frame
+const TTCN_Typedescriptor_t CAN__frame_descr_ = { "@Can.CAN_frame", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       CANFD__frame_can__id_xer_ = { {"can_id>\n", "can_id>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int CANFD__frame_can__id_oer_ext_arr_[0] = {};
+const int CANFD__frame_can__id_oer_p_[0] = {};
+const TTCN_OERdescriptor_t CANFD__frame_can__id_oer_ = { -1, TRUE, 4, FALSE, 0, 0, CANFD__frame_can__id_oer_ext_arr_, 0, CANFD__frame_can__id_oer_p_};
+const TTCN_Typedescriptor_t CANFD__frame_can__id_descr_ = { "@Can.CANFD_frame.can_id", &OCTETSTRING_ber_, &CAN__id_raw_, &OCTETSTRING_text_, &CANFD__frame_can__id_xer_, &OCTETSTRING_json_, &CANFD__frame_can__id_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       CANFD__frame_can__flags_xer_ = { {"can_flags>\n", "can_flags>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t CANFD__frame_can__flags_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t CANFD__frame_can__flags_descr_ = { "@Can.CANFD_frame.can_flags", &BITSTRING_ber_, &CAN__flags_raw_, NULL, &CANFD__frame_can__flags_xer_, &BITSTRING_json_, &CANFD__frame_can__flags_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       CANFD__frame_can__pdu_xer_ = { {"can_pdu>\n", "can_pdu>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int CANFD__frame_can__pdu_oer_ext_arr_[0] = {};
+const int CANFD__frame_can__pdu_oer_p_[0] = {};
+const TTCN_OERdescriptor_t CANFD__frame_can__pdu_oer_ = { -1, TRUE, -1, FALSE, 0, 0, CANFD__frame_can__pdu_oer_ext_arr_, 0, CANFD__frame_can__pdu_oer_p_};
+const TTCN_Typedescriptor_t CANFD__frame_can__pdu_descr_ = { "@Can.CANFD_frame.can_pdu", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &CANFD__frame_can__pdu_xer_, &OCTETSTRING_json_, &CANFD__frame_can__pdu_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for CANFD__frame
+const TTCN_Typedescriptor_t CANFD__frame_descr_ = { "@Can.CANFD_frame", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+TTCN_Module module_object("Can", __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);
+
+static const RuntimeVersionChecker ver_checker(  current_runtime_version.requires_major_version_6,
+  current_runtime_version.requires_minor_version_6,
+  current_runtime_version.requires_patch_level_0,  current_runtime_version.requires_runtime_1);
+
+/* Member functions of C++ classes */
+
+AdresseFamily__enum::AdresseFamily__enum()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+AdresseFamily__enum::AdresseFamily__enum(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @Can.AdresseFamily_enum with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+AdresseFamily__enum::AdresseFamily__enum(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+AdresseFamily__enum::AdresseFamily__enum(const AdresseFamily__enum& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @Can.AdresseFamily_enum.");
+enum_value = other_value.enum_value;
+}
+
+AdresseFamily__enum& AdresseFamily__enum::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @Can.AdresseFamily_enum.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+AdresseFamily__enum& AdresseFamily__enum::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+AdresseFamily__enum& AdresseFamily__enum::operator=(const AdresseFamily__enum& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @Can.AdresseFamily_enum.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean AdresseFamily__enum::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Can.AdresseFamily_enum.");
+return enum_value == other_value;
+}
+
+boolean AdresseFamily__enum::operator==(const AdresseFamily__enum& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Can.AdresseFamily_enum.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @Can.AdresseFamily_enum.");
+return enum_value == other_value.enum_value;
+}
+
+boolean AdresseFamily__enum::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Can.AdresseFamily_enum.");
+return enum_value < other_value;
+}
+
+boolean AdresseFamily__enum::operator<(const AdresseFamily__enum& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Can.AdresseFamily_enum.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @Can.AdresseFamily_enum.");
+return enum_value < other_value.enum_value;
+}
+
+boolean AdresseFamily__enum::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Can.AdresseFamily_enum.");
+return enum_value > other_value;
+}
+
+boolean AdresseFamily__enum::operator>(const AdresseFamily__enum& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Can.AdresseFamily_enum.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @Can.AdresseFamily_enum.");
+return enum_value > other_value.enum_value;
+}
+
+const char *AdresseFamily__enum::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case PF__CAN: return "PF_CAN";
+default: return "<unknown>";
+}
+}
+
+AdresseFamily__enum::enum_type AdresseFamily__enum::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "PF_CAN")) return PF__CAN;
+else return UNKNOWN_VALUE;
+}
+
+boolean AdresseFamily__enum::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 29:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int AdresseFamily__enum::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @Can.AdresseFamily_enum.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int AdresseFamily__enum::enum2int(const AdresseFamily__enum& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @Can.AdresseFamily_enum.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void AdresseFamily__enum::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @Can.AdresseFamily_enum.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+AdresseFamily__enum::operator AdresseFamily__enum::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @Can.AdresseFamily_enum.");
+return enum_value;
+}
+
+void AdresseFamily__enum::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void AdresseFamily__enum::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@Can.AdresseFamily_enum");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @Can.AdresseFamily_enum.");
+  }
+}
+
+void AdresseFamily__enum::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @Can.AdresseFamily_enum.");
+text_buf.push_int(enum_value);
+}
+
+void AdresseFamily__enum::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @Can.AdresseFamily_enum.", enum_value);
+}
+
+void AdresseFamily__enum_template::copy_template(const AdresseFamily__enum_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new AdresseFamily__enum_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @Can.AdresseFamily_enum.");
+}
+}
+
+AdresseFamily__enum_template::AdresseFamily__enum_template()
+{
+}
+
+AdresseFamily__enum_template::AdresseFamily__enum_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+AdresseFamily__enum_template::AdresseFamily__enum_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!AdresseFamily__enum::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @Can.AdresseFamily_enum with unknown numeric value %d.", other_value);
+single_value = (AdresseFamily__enum::enum_type)other_value;
+}
+
+AdresseFamily__enum_template::AdresseFamily__enum_template(AdresseFamily__enum::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+AdresseFamily__enum_template::AdresseFamily__enum_template(const AdresseFamily__enum& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == AdresseFamily__enum::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @Can.AdresseFamily_enum.");
+single_value = other_value.enum_value;
+}
+
+AdresseFamily__enum_template::AdresseFamily__enum_template(const OPTIONAL<AdresseFamily__enum>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (AdresseFamily__enum::enum_type)(const AdresseFamily__enum&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @Can.AdresseFamily_enum from an unbound optional field.");
+}
+}
+
+AdresseFamily__enum_template::AdresseFamily__enum_template(const AdresseFamily__enum_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+AdresseFamily__enum_template::~AdresseFamily__enum_template()
+{
+clean_up();
+}
+
+boolean AdresseFamily__enum_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean AdresseFamily__enum_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != AdresseFamily__enum::UNBOUND_VALUE;
+}
+
+void AdresseFamily__enum_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+AdresseFamily__enum_template& AdresseFamily__enum_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+AdresseFamily__enum_template& AdresseFamily__enum_template::operator=(int other_value)
+{
+if (!AdresseFamily__enum::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @Can.AdresseFamily_enum.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (AdresseFamily__enum::enum_type)other_value;
+return *this;
+}
+
+AdresseFamily__enum_template& AdresseFamily__enum_template::operator=(AdresseFamily__enum::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+AdresseFamily__enum_template& AdresseFamily__enum_template::operator=(const AdresseFamily__enum& other_value)
+{
+if (other_value.enum_value == AdresseFamily__enum::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @Can.AdresseFamily_enum to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+AdresseFamily__enum_template& AdresseFamily__enum_template::operator=(const OPTIONAL<AdresseFamily__enum>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (AdresseFamily__enum::enum_type)(const AdresseFamily__enum&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @Can.AdresseFamily_enum.");
+}
+return *this;
+}
+
+AdresseFamily__enum_template& AdresseFamily__enum_template::operator=(const AdresseFamily__enum_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean AdresseFamily__enum_template::match(AdresseFamily__enum::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @Can.AdresseFamily_enum.");
+}
+return FALSE;
+}
+
+boolean AdresseFamily__enum_template::match(const AdresseFamily__enum& other_value, boolean) const
+{
+if (other_value.enum_value == AdresseFamily__enum::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @Can.AdresseFamily_enum with an unbound value.");
+return match(other_value.enum_value);
+}
+
+AdresseFamily__enum::enum_type AdresseFamily__enum_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @Can.AdresseFamily_enum.");
+return single_value;
+}
+
+void AdresseFamily__enum_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @Can.AdresseFamily_enum.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new AdresseFamily__enum_template[list_length];
+}
+
+AdresseFamily__enum_template& AdresseFamily__enum_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @Can.AdresseFamily_enum.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @Can.AdresseFamily_enum.");
+return value_list.list_value[list_index];
+}
+
+void AdresseFamily__enum_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(AdresseFamily__enum::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void AdresseFamily__enum_template::log_match(const AdresseFamily__enum& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void AdresseFamily__enum_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @Can.AdresseFamily_enum.");
+}
+}
+
+void AdresseFamily__enum_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (AdresseFamily__enum::enum_type)text_buf.pull_int().get_val();
+if (!AdresseFamily__enum::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @Can.AdresseFamily_enum.", single_value);
+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 AdresseFamily__enum_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @Can.AdresseFamily_enum.");
+}
+}
+
+boolean AdresseFamily__enum_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean AdresseFamily__enum_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 AdresseFamily__enum_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    AdresseFamily__enum_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    AdresseFamily__enum::enum_type enum_val = AdresseFamily__enum::str_to_enum(m_p->get_enumerated());
+    if (!AdresseFamily__enum::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @Can.AdresseFamily_enum.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@Can.AdresseFamily_enum");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void AdresseFamily__enum_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@Can.AdresseFamily_enum");
+}
+
+ProtocolFamily__enum::ProtocolFamily__enum()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+ProtocolFamily__enum::ProtocolFamily__enum(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @Can.ProtocolFamily_enum with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+ProtocolFamily__enum::ProtocolFamily__enum(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+ProtocolFamily__enum::ProtocolFamily__enum(const ProtocolFamily__enum& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @Can.ProtocolFamily_enum.");
+enum_value = other_value.enum_value;
+}
+
+ProtocolFamily__enum& ProtocolFamily__enum::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @Can.ProtocolFamily_enum.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+ProtocolFamily__enum& ProtocolFamily__enum::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+ProtocolFamily__enum& ProtocolFamily__enum::operator=(const ProtocolFamily__enum& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @Can.ProtocolFamily_enum.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean ProtocolFamily__enum::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Can.ProtocolFamily_enum.");
+return enum_value == other_value;
+}
+
+boolean ProtocolFamily__enum::operator==(const ProtocolFamily__enum& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Can.ProtocolFamily_enum.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @Can.ProtocolFamily_enum.");
+return enum_value == other_value.enum_value;
+}
+
+boolean ProtocolFamily__enum::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Can.ProtocolFamily_enum.");
+return enum_value < other_value;
+}
+
+boolean ProtocolFamily__enum::operator<(const ProtocolFamily__enum& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Can.ProtocolFamily_enum.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @Can.ProtocolFamily_enum.");
+return enum_value < other_value.enum_value;
+}
+
+boolean ProtocolFamily__enum::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Can.ProtocolFamily_enum.");
+return enum_value > other_value;
+}
+
+boolean ProtocolFamily__enum::operator>(const ProtocolFamily__enum& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Can.ProtocolFamily_enum.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @Can.ProtocolFamily_enum.");
+return enum_value > other_value.enum_value;
+}
+
+const char *ProtocolFamily__enum::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case SOCK__DGRAM: return "SOCK_DGRAM";
+case SOCK__RAW: return "SOCK_RAW";
+default: return "<unknown>";
+}
+}
+
+ProtocolFamily__enum::enum_type ProtocolFamily__enum::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "SOCK_DGRAM")) return SOCK__DGRAM;
+else if (!strcmp(str_par, "SOCK_RAW")) return SOCK__RAW;
+else return UNKNOWN_VALUE;
+}
+
+boolean ProtocolFamily__enum::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 2:
+case 3:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int ProtocolFamily__enum::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @Can.ProtocolFamily_enum.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int ProtocolFamily__enum::enum2int(const ProtocolFamily__enum& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @Can.ProtocolFamily_enum.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void ProtocolFamily__enum::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @Can.ProtocolFamily_enum.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+ProtocolFamily__enum::operator ProtocolFamily__enum::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @Can.ProtocolFamily_enum.");
+return enum_value;
+}
+
+void ProtocolFamily__enum::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void ProtocolFamily__enum::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@Can.ProtocolFamily_enum");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @Can.ProtocolFamily_enum.");
+  }
+}
+
+void ProtocolFamily__enum::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @Can.ProtocolFamily_enum.");
+text_buf.push_int(enum_value);
+}
+
+void ProtocolFamily__enum::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @Can.ProtocolFamily_enum.", enum_value);
+}
+
+void ProtocolFamily__enum_template::copy_template(const ProtocolFamily__enum_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ProtocolFamily__enum_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @Can.ProtocolFamily_enum.");
+}
+}
+
+ProtocolFamily__enum_template::ProtocolFamily__enum_template()
+{
+}
+
+ProtocolFamily__enum_template::ProtocolFamily__enum_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ProtocolFamily__enum_template::ProtocolFamily__enum_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!ProtocolFamily__enum::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @Can.ProtocolFamily_enum with unknown numeric value %d.", other_value);
+single_value = (ProtocolFamily__enum::enum_type)other_value;
+}
+
+ProtocolFamily__enum_template::ProtocolFamily__enum_template(ProtocolFamily__enum::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+ProtocolFamily__enum_template::ProtocolFamily__enum_template(const ProtocolFamily__enum& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == ProtocolFamily__enum::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @Can.ProtocolFamily_enum.");
+single_value = other_value.enum_value;
+}
+
+ProtocolFamily__enum_template::ProtocolFamily__enum_template(const OPTIONAL<ProtocolFamily__enum>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (ProtocolFamily__enum::enum_type)(const ProtocolFamily__enum&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @Can.ProtocolFamily_enum from an unbound optional field.");
+}
+}
+
+ProtocolFamily__enum_template::ProtocolFamily__enum_template(const ProtocolFamily__enum_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+ProtocolFamily__enum_template::~ProtocolFamily__enum_template()
+{
+clean_up();
+}
+
+boolean ProtocolFamily__enum_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean ProtocolFamily__enum_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != ProtocolFamily__enum::UNBOUND_VALUE;
+}
+
+void ProtocolFamily__enum_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ProtocolFamily__enum_template& ProtocolFamily__enum_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ProtocolFamily__enum_template& ProtocolFamily__enum_template::operator=(int other_value)
+{
+if (!ProtocolFamily__enum::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @Can.ProtocolFamily_enum.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (ProtocolFamily__enum::enum_type)other_value;
+return *this;
+}
+
+ProtocolFamily__enum_template& ProtocolFamily__enum_template::operator=(ProtocolFamily__enum::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+ProtocolFamily__enum_template& ProtocolFamily__enum_template::operator=(const ProtocolFamily__enum& other_value)
+{
+if (other_value.enum_value == ProtocolFamily__enum::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @Can.ProtocolFamily_enum to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+ProtocolFamily__enum_template& ProtocolFamily__enum_template::operator=(const OPTIONAL<ProtocolFamily__enum>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (ProtocolFamily__enum::enum_type)(const ProtocolFamily__enum&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @Can.ProtocolFamily_enum.");
+}
+return *this;
+}
+
+ProtocolFamily__enum_template& ProtocolFamily__enum_template::operator=(const ProtocolFamily__enum_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ProtocolFamily__enum_template::match(ProtocolFamily__enum::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @Can.ProtocolFamily_enum.");
+}
+return FALSE;
+}
+
+boolean ProtocolFamily__enum_template::match(const ProtocolFamily__enum& other_value, boolean) const
+{
+if (other_value.enum_value == ProtocolFamily__enum::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @Can.ProtocolFamily_enum with an unbound value.");
+return match(other_value.enum_value);
+}
+
+ProtocolFamily__enum::enum_type ProtocolFamily__enum_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @Can.ProtocolFamily_enum.");
+return single_value;
+}
+
+void ProtocolFamily__enum_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @Can.ProtocolFamily_enum.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ProtocolFamily__enum_template[list_length];
+}
+
+ProtocolFamily__enum_template& ProtocolFamily__enum_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @Can.ProtocolFamily_enum.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @Can.ProtocolFamily_enum.");
+return value_list.list_value[list_index];
+}
+
+void ProtocolFamily__enum_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(ProtocolFamily__enum::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ProtocolFamily__enum_template::log_match(const ProtocolFamily__enum& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void ProtocolFamily__enum_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @Can.ProtocolFamily_enum.");
+}
+}
+
+void ProtocolFamily__enum_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (ProtocolFamily__enum::enum_type)text_buf.pull_int().get_val();
+if (!ProtocolFamily__enum::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @Can.ProtocolFamily_enum.", single_value);
+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 ProtocolFamily__enum_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @Can.ProtocolFamily_enum.");
+}
+}
+
+boolean ProtocolFamily__enum_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ProtocolFamily__enum_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 ProtocolFamily__enum_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    ProtocolFamily__enum_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    ProtocolFamily__enum::enum_type enum_val = ProtocolFamily__enum::str_to_enum(m_p->get_enumerated());
+    if (!ProtocolFamily__enum::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @Can.ProtocolFamily_enum.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@Can.ProtocolFamily_enum");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ProtocolFamily__enum_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@Can.ProtocolFamily_enum");
+}
+
+PF__CAN__protocols__enum::PF__CAN__protocols__enum()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+PF__CAN__protocols__enum::PF__CAN__protocols__enum(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @Can.PF_CAN_protocols_enum with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+PF__CAN__protocols__enum::PF__CAN__protocols__enum(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+PF__CAN__protocols__enum::PF__CAN__protocols__enum(const PF__CAN__protocols__enum& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @Can.PF_CAN_protocols_enum.");
+enum_value = other_value.enum_value;
+}
+
+PF__CAN__protocols__enum& PF__CAN__protocols__enum::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @Can.PF_CAN_protocols_enum.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+PF__CAN__protocols__enum& PF__CAN__protocols__enum::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+PF__CAN__protocols__enum& PF__CAN__protocols__enum::operator=(const PF__CAN__protocols__enum& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @Can.PF_CAN_protocols_enum.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean PF__CAN__protocols__enum::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Can.PF_CAN_protocols_enum.");
+return enum_value == other_value;
+}
+
+boolean PF__CAN__protocols__enum::operator==(const PF__CAN__protocols__enum& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Can.PF_CAN_protocols_enum.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @Can.PF_CAN_protocols_enum.");
+return enum_value == other_value.enum_value;
+}
+
+boolean PF__CAN__protocols__enum::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Can.PF_CAN_protocols_enum.");
+return enum_value < other_value;
+}
+
+boolean PF__CAN__protocols__enum::operator<(const PF__CAN__protocols__enum& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Can.PF_CAN_protocols_enum.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @Can.PF_CAN_protocols_enum.");
+return enum_value < other_value.enum_value;
+}
+
+boolean PF__CAN__protocols__enum::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Can.PF_CAN_protocols_enum.");
+return enum_value > other_value;
+}
+
+boolean PF__CAN__protocols__enum::operator>(const PF__CAN__protocols__enum& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Can.PF_CAN_protocols_enum.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @Can.PF_CAN_protocols_enum.");
+return enum_value > other_value.enum_value;
+}
+
+const char *PF__CAN__protocols__enum::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case CAN__RAW: return "CAN_RAW";
+case CAN__BCM: return "CAN_BCM";
+case CAN__TP16: return "CAN_TP16";
+case CAN__TP20: return "CAN_TP20";
+case CAN__MCNET: return "CAN_MCNET";
+case CAN__ISOTP: return "CAN_ISOTP";
+case CAN__NPROTO: return "CAN_NPROTO";
+default: return "<unknown>";
+}
+}
+
+PF__CAN__protocols__enum::enum_type PF__CAN__protocols__enum::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "CAN_RAW")) return CAN__RAW;
+else if (!strcmp(str_par, "CAN_BCM")) return CAN__BCM;
+else if (!strcmp(str_par, "CAN_TP16")) return CAN__TP16;
+else if (!strcmp(str_par, "CAN_TP20")) return CAN__TP20;
+else if (!strcmp(str_par, "CAN_MCNET")) return CAN__MCNET;
+else if (!strcmp(str_par, "CAN_ISOTP")) return CAN__ISOTP;
+else if (!strcmp(str_par, "CAN_NPROTO")) return CAN__NPROTO;
+else return UNKNOWN_VALUE;
+}
+
+boolean PF__CAN__protocols__enum::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 1:
+case 2:
+case 3:
+case 4:
+case 5:
+case 6:
+case 7:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int PF__CAN__protocols__enum::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @Can.PF_CAN_protocols_enum.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int PF__CAN__protocols__enum::enum2int(const PF__CAN__protocols__enum& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @Can.PF_CAN_protocols_enum.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void PF__CAN__protocols__enum::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @Can.PF_CAN_protocols_enum.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+PF__CAN__protocols__enum::operator PF__CAN__protocols__enum::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @Can.PF_CAN_protocols_enum.");
+return enum_value;
+}
+
+void PF__CAN__protocols__enum::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void PF__CAN__protocols__enum::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@Can.PF_CAN_protocols_enum");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @Can.PF_CAN_protocols_enum.");
+  }
+}
+
+void PF__CAN__protocols__enum::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @Can.PF_CAN_protocols_enum.");
+text_buf.push_int(enum_value);
+}
+
+void PF__CAN__protocols__enum::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @Can.PF_CAN_protocols_enum.", enum_value);
+}
+
+void PF__CAN__protocols__enum_template::copy_template(const PF__CAN__protocols__enum_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new PF__CAN__protocols__enum_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @Can.PF_CAN_protocols_enum.");
+}
+}
+
+PF__CAN__protocols__enum_template::PF__CAN__protocols__enum_template()
+{
+}
+
+PF__CAN__protocols__enum_template::PF__CAN__protocols__enum_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+PF__CAN__protocols__enum_template::PF__CAN__protocols__enum_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!PF__CAN__protocols__enum::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @Can.PF_CAN_protocols_enum with unknown numeric value %d.", other_value);
+single_value = (PF__CAN__protocols__enum::enum_type)other_value;
+}
+
+PF__CAN__protocols__enum_template::PF__CAN__protocols__enum_template(PF__CAN__protocols__enum::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+PF__CAN__protocols__enum_template::PF__CAN__protocols__enum_template(const PF__CAN__protocols__enum& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == PF__CAN__protocols__enum::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @Can.PF_CAN_protocols_enum.");
+single_value = other_value.enum_value;
+}
+
+PF__CAN__protocols__enum_template::PF__CAN__protocols__enum_template(const OPTIONAL<PF__CAN__protocols__enum>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (PF__CAN__protocols__enum::enum_type)(const PF__CAN__protocols__enum&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @Can.PF_CAN_protocols_enum from an unbound optional field.");
+}
+}
+
+PF__CAN__protocols__enum_template::PF__CAN__protocols__enum_template(const PF__CAN__protocols__enum_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+PF__CAN__protocols__enum_template::~PF__CAN__protocols__enum_template()
+{
+clean_up();
+}
+
+boolean PF__CAN__protocols__enum_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean PF__CAN__protocols__enum_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != PF__CAN__protocols__enum::UNBOUND_VALUE;
+}
+
+void PF__CAN__protocols__enum_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+PF__CAN__protocols__enum_template& PF__CAN__protocols__enum_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+PF__CAN__protocols__enum_template& PF__CAN__protocols__enum_template::operator=(int other_value)
+{
+if (!PF__CAN__protocols__enum::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @Can.PF_CAN_protocols_enum.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (PF__CAN__protocols__enum::enum_type)other_value;
+return *this;
+}
+
+PF__CAN__protocols__enum_template& PF__CAN__protocols__enum_template::operator=(PF__CAN__protocols__enum::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+PF__CAN__protocols__enum_template& PF__CAN__protocols__enum_template::operator=(const PF__CAN__protocols__enum& other_value)
+{
+if (other_value.enum_value == PF__CAN__protocols__enum::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @Can.PF_CAN_protocols_enum to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+PF__CAN__protocols__enum_template& PF__CAN__protocols__enum_template::operator=(const OPTIONAL<PF__CAN__protocols__enum>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (PF__CAN__protocols__enum::enum_type)(const PF__CAN__protocols__enum&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @Can.PF_CAN_protocols_enum.");
+}
+return *this;
+}
+
+PF__CAN__protocols__enum_template& PF__CAN__protocols__enum_template::operator=(const PF__CAN__protocols__enum_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean PF__CAN__protocols__enum_template::match(PF__CAN__protocols__enum::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @Can.PF_CAN_protocols_enum.");
+}
+return FALSE;
+}
+
+boolean PF__CAN__protocols__enum_template::match(const PF__CAN__protocols__enum& other_value, boolean) const
+{
+if (other_value.enum_value == PF__CAN__protocols__enum::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @Can.PF_CAN_protocols_enum with an unbound value.");
+return match(other_value.enum_value);
+}
+
+PF__CAN__protocols__enum::enum_type PF__CAN__protocols__enum_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @Can.PF_CAN_protocols_enum.");
+return single_value;
+}
+
+void PF__CAN__protocols__enum_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @Can.PF_CAN_protocols_enum.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new PF__CAN__protocols__enum_template[list_length];
+}
+
+PF__CAN__protocols__enum_template& PF__CAN__protocols__enum_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @Can.PF_CAN_protocols_enum.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @Can.PF_CAN_protocols_enum.");
+return value_list.list_value[list_index];
+}
+
+void PF__CAN__protocols__enum_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(PF__CAN__protocols__enum::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void PF__CAN__protocols__enum_template::log_match(const PF__CAN__protocols__enum& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void PF__CAN__protocols__enum_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @Can.PF_CAN_protocols_enum.");
+}
+}
+
+void PF__CAN__protocols__enum_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (PF__CAN__protocols__enum::enum_type)text_buf.pull_int().get_val();
+if (!PF__CAN__protocols__enum::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @Can.PF_CAN_protocols_enum.", single_value);
+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 PF__CAN__protocols__enum_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @Can.PF_CAN_protocols_enum.");
+}
+}
+
+boolean PF__CAN__protocols__enum_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean PF__CAN__protocols__enum_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 PF__CAN__protocols__enum_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    PF__CAN__protocols__enum_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    PF__CAN__protocols__enum::enum_type enum_val = PF__CAN__protocols__enum::str_to_enum(m_p->get_enumerated());
+    if (!PF__CAN__protocols__enum::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @Can.PF_CAN_protocols_enum.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@Can.PF_CAN_protocols_enum");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void PF__CAN__protocols__enum_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@Can.PF_CAN_protocols_enum");
+}
+
+CAN__frame::CAN__frame()
+{
+}
+
+CAN__frame::CAN__frame(const OCTETSTRING& par_can__id,
+    const OCTETSTRING& par_can__pdu)
+  :   field_can__id(par_can__id),
+  field_can__pdu(par_can__pdu)
+{
+}
+
+CAN__frame::CAN__frame(const CAN__frame& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @Can.CAN_frame.");
+if (other_value.can__id().is_bound()) field_can__id = other_value.can__id();
+else field_can__id.clean_up();
+if (other_value.can__pdu().is_bound()) field_can__pdu = other_value.can__pdu();
+else field_can__pdu.clean_up();
+}
+
+void CAN__frame::clean_up()
+{
+field_can__id.clean_up();
+field_can__pdu.clean_up();
+}
+
+const TTCN_Typedescriptor_t* CAN__frame::get_descriptor() const { return &CAN__frame_descr_; }
+CAN__frame& CAN__frame::operator=(const CAN__frame& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @Can.CAN_frame.");
+  if (other_value.can__id().is_bound()) field_can__id = other_value.can__id();
+  else field_can__id.clean_up();
+  if (other_value.can__pdu().is_bound()) field_can__pdu = other_value.can__pdu();
+  else field_can__pdu.clean_up();
+}
+return *this;
+}
+
+boolean CAN__frame::operator==(const CAN__frame& other_value) const
+{
+return field_can__id==other_value.field_can__id
+  && field_can__pdu==other_value.field_can__pdu;
+}
+
+boolean CAN__frame::is_bound() const
+{
+return (field_can__id.is_bound())
+  || (field_can__pdu.is_bound());
+}
+boolean CAN__frame::is_value() const
+{
+return field_can__id.is_value()
+  && field_can__pdu.is_value();
+}
+void CAN__frame::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ can_id := ");
+field_can__id.log();
+TTCN_Logger::log_event_str(", can_pdu := ");
+field_can__pdu.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void CAN__frame::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 @Can.CAN_frame 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) can__id().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) can__pdu().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(), "can_id")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          can__id().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(), "can_pdu")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          can__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 @Can.CAN_frame: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@Can.CAN_frame");
+  }
+}
+
+void CAN__frame::set_implicit_omit()
+{
+if (can__id().is_bound()) can__id().set_implicit_omit();
+if (can__pdu().is_bound()) can__pdu().set_implicit_omit();
+}
+
+void CAN__frame::encode_text(Text_Buf& text_buf) const
+{
+field_can__id.encode_text(text_buf);
+field_can__pdu.encode_text(text_buf);
+}
+
+void CAN__frame::decode_text(Text_Buf& text_buf)
+{
+field_can__id.decode_text(text_buf);
+field_can__pdu.decode_text(text_buf);
+}
+
+struct CAN__frame_template::single_value_struct {
+OCTETSTRING_template field_can__id;
+OCTETSTRING_template field_can__pdu;
+};
+
+void CAN__frame_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_can__id = ANY_VALUE;
+single_value->field_can__pdu = ANY_VALUE;
+}
+}
+}
+
+void CAN__frame_template::copy_value(const CAN__frame& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.can__id().is_bound()) {
+  single_value->field_can__id = other_value.can__id();
+} else {
+  single_value->field_can__id.clean_up();
+}
+if (other_value.can__pdu().is_bound()) {
+  single_value->field_can__pdu = other_value.can__pdu();
+} else {
+  single_value->field_can__pdu.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void CAN__frame_template::copy_template(const CAN__frame_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.can__id().get_selection()) {
+single_value->field_can__id = other_value.can__id();
+} else {
+single_value->field_can__id.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.can__pdu().get_selection()) {
+single_value->field_can__pdu = other_value.can__pdu();
+} else {
+single_value->field_can__pdu.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new CAN__frame_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @Can.CAN_frame.");
+break;
+}
+set_selection(other_value);
+}
+
+CAN__frame_template::CAN__frame_template()
+{
+}
+
+CAN__frame_template::CAN__frame_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+CAN__frame_template::CAN__frame_template(const CAN__frame& other_value)
+{
+copy_value(other_value);
+}
+
+CAN__frame_template::CAN__frame_template(const OPTIONAL<CAN__frame>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CAN__frame&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @Can.CAN_frame from an unbound optional field.");
+}
+}
+
+CAN__frame_template::CAN__frame_template(const CAN__frame_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+CAN__frame_template::~CAN__frame_template()
+{
+clean_up();
+}
+
+CAN__frame_template& CAN__frame_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+CAN__frame_template& CAN__frame_template::operator=(const CAN__frame& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+CAN__frame_template& CAN__frame_template::operator=(const OPTIONAL<CAN__frame>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CAN__frame&)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 @Can.CAN_frame.");
+}
+return *this;
+}
+
+CAN__frame_template& CAN__frame_template::operator=(const CAN__frame_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean CAN__frame_template::match(const CAN__frame& 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.can__id().is_bound()) return FALSE;
+if(!single_value->field_can__id.match(other_value.can__id(), legacy))return FALSE;
+if(!other_value.can__pdu().is_bound()) return FALSE;
+if(!single_value->field_can__pdu.match(other_value.can__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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @Can.CAN_frame.");
+}
+return FALSE;
+}
+
+boolean CAN__frame_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_can__id.is_bound()
+
+ ||single_value->field_can__pdu.is_bound()
+;
+}
+
+boolean CAN__frame_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_can__id.is_value()
+ &&single_value->field_can__pdu.is_value();
+}
+
+void CAN__frame_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+CAN__frame CAN__frame_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 @Can.CAN_frame.");
+CAN__frame ret_val;
+if (single_value->field_can__id.is_bound()) {
+ret_val.can__id() = single_value->field_can__id.valueof();
+}
+if (single_value->field_can__pdu.is_bound()) {
+ret_val.can__pdu() = single_value->field_can__pdu.valueof();
+}
+return ret_val;
+}
+
+void CAN__frame_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @Can.CAN_frame.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new CAN__frame_template[list_length];
+}
+
+CAN__frame_template& CAN__frame_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @Can.CAN_frame.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @Can.CAN_frame.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& CAN__frame_template::can__id()
+{
+set_specific();
+return single_value->field_can__id;
+}
+
+const OCTETSTRING_template& CAN__frame_template::can__id() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field can_id of a non-specific template of type @Can.CAN_frame.");
+return single_value->field_can__id;
+}
+
+OCTETSTRING_template& CAN__frame_template::can__pdu()
+{
+set_specific();
+return single_value->field_can__pdu;
+}
+
+const OCTETSTRING_template& CAN__frame_template::can__pdu() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field can_pdu of a non-specific template of type @Can.CAN_frame.");
+return single_value->field_can__pdu;
+}
+
+int CAN__frame_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @Can.CAN_frame 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 @Can.CAN_frame 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 @Can.CAN_frame containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @Can.CAN_frame containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @Can.CAN_frame containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @Can.CAN_frame containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @Can.CAN_frame.");
+  }
+  return 0;
+}
+
+void CAN__frame_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ can_id := ");
+single_value->field_can__id.log();
+TTCN_Logger::log_event_str(", can_pdu := ");
+single_value->field_can__pdu.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void CAN__frame_template::log_match(const CAN__frame& 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_can__id.match(match_value.can__id(), legacy)){
+TTCN_Logger::log_logmatch_info(".can_id");
+single_value->field_can__id.log_match(match_value.can__id(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_can__pdu.match(match_value.can__pdu(), legacy)){
+TTCN_Logger::log_logmatch_info(".can_pdu");
+single_value->field_can__pdu.log_match(match_value.can__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("{ can_id := ");
+single_value->field_can__id.log_match(match_value.can__id(), legacy);
+TTCN_Logger::log_event_str(", can_pdu := ");
+single_value->field_can__pdu.log_match(match_value.can__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 CAN__frame_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_can__id.encode_text(text_buf);
+single_value->field_can__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 @Can.CAN_frame.");
+}
+}
+
+void CAN__frame_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_can__id.decode_text(text_buf);
+single_value->field_can__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 CAN__frame_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 @Can.CAN_frame.");
+}
+}
+
+void CAN__frame_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: {
+    CAN__frame_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @Can.CAN_frame 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) can__id().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) can__pdu().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(), "can_id")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          can__id().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(), "can_pdu")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          can__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 @Can.CAN_frame: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@Can.CAN_frame");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void CAN__frame_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_can__id.check_restriction(t_res, t_name ? t_name : "@Can.CAN_frame");
+single_value->field_can__pdu.check_restriction(t_res, t_name ? t_name : "@Can.CAN_frame");
+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 : "@Can.CAN_frame");
+}
+
+boolean CAN__frame_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean CAN__frame_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+CANFD__frame::CANFD__frame()
+{
+}
+
+CANFD__frame::CANFD__frame(const OCTETSTRING& par_can__id,
+    const BITSTRING& par_can__flags,
+    const OCTETSTRING& par_can__pdu)
+  :   field_can__id(par_can__id),
+  field_can__flags(par_can__flags),
+  field_can__pdu(par_can__pdu)
+{
+}
+
+CANFD__frame::CANFD__frame(const CANFD__frame& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @Can.CANFD_frame.");
+if (other_value.can__id().is_bound()) field_can__id = other_value.can__id();
+else field_can__id.clean_up();
+if (other_value.can__flags().is_bound()) field_can__flags = other_value.can__flags();
+else field_can__flags.clean_up();
+if (other_value.can__pdu().is_bound()) field_can__pdu = other_value.can__pdu();
+else field_can__pdu.clean_up();
+}
+
+void CANFD__frame::clean_up()
+{
+field_can__id.clean_up();
+field_can__flags.clean_up();
+field_can__pdu.clean_up();
+}
+
+const TTCN_Typedescriptor_t* CANFD__frame::get_descriptor() const { return &CANFD__frame_descr_; }
+CANFD__frame& CANFD__frame::operator=(const CANFD__frame& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @Can.CANFD_frame.");
+  if (other_value.can__id().is_bound()) field_can__id = other_value.can__id();
+  else field_can__id.clean_up();
+  if (other_value.can__flags().is_bound()) field_can__flags = other_value.can__flags();
+  else field_can__flags.clean_up();
+  if (other_value.can__pdu().is_bound()) field_can__pdu = other_value.can__pdu();
+  else field_can__pdu.clean_up();
+}
+return *this;
+}
+
+boolean CANFD__frame::operator==(const CANFD__frame& other_value) const
+{
+return field_can__id==other_value.field_can__id
+  && field_can__flags==other_value.field_can__flags
+  && field_can__pdu==other_value.field_can__pdu;
+}
+
+boolean CANFD__frame::is_bound() const
+{
+return (field_can__id.is_bound())
+  || (field_can__flags.is_bound())
+  || (field_can__pdu.is_bound());
+}
+boolean CANFD__frame::is_value() const
+{
+return field_can__id.is_value()
+  && field_can__flags.is_value()
+  && field_can__pdu.is_value();
+}
+void CANFD__frame::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ can_id := ");
+field_can__id.log();
+TTCN_Logger::log_event_str(", can_flags := ");
+field_can__flags.log();
+TTCN_Logger::log_event_str(", can_pdu := ");
+field_can__pdu.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void CANFD__frame::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 @Can.CANFD_frame 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) can__id().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) can__flags().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) can__pdu().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(), "can_id")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          can__id().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(), "can_flags")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          can__flags().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(), "can_pdu")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          can__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 @Can.CANFD_frame: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@Can.CANFD_frame");
+  }
+}
+
+void CANFD__frame::set_implicit_omit()
+{
+if (can__id().is_bound()) can__id().set_implicit_omit();
+if (can__flags().is_bound()) can__flags().set_implicit_omit();
+if (can__pdu().is_bound()) can__pdu().set_implicit_omit();
+}
+
+void CANFD__frame::encode_text(Text_Buf& text_buf) const
+{
+field_can__id.encode_text(text_buf);
+field_can__flags.encode_text(text_buf);
+field_can__pdu.encode_text(text_buf);
+}
+
+void CANFD__frame::decode_text(Text_Buf& text_buf)
+{
+field_can__id.decode_text(text_buf);
+field_can__flags.decode_text(text_buf);
+field_can__pdu.decode_text(text_buf);
+}
+
+struct CANFD__frame_template::single_value_struct {
+OCTETSTRING_template field_can__id;
+BITSTRING_template field_can__flags;
+OCTETSTRING_template field_can__pdu;
+};
+
+void CANFD__frame_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_can__id = ANY_VALUE;
+single_value->field_can__flags = ANY_VALUE;
+single_value->field_can__pdu = ANY_VALUE;
+}
+}
+}
+
+void CANFD__frame_template::copy_value(const CANFD__frame& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.can__id().is_bound()) {
+  single_value->field_can__id = other_value.can__id();
+} else {
+  single_value->field_can__id.clean_up();
+}
+if (other_value.can__flags().is_bound()) {
+  single_value->field_can__flags = other_value.can__flags();
+} else {
+  single_value->field_can__flags.clean_up();
+}
+if (other_value.can__pdu().is_bound()) {
+  single_value->field_can__pdu = other_value.can__pdu();
+} else {
+  single_value->field_can__pdu.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void CANFD__frame_template::copy_template(const CANFD__frame_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.can__id().get_selection()) {
+single_value->field_can__id = other_value.can__id();
+} else {
+single_value->field_can__id.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.can__flags().get_selection()) {
+single_value->field_can__flags = other_value.can__flags();
+} else {
+single_value->field_can__flags.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.can__pdu().get_selection()) {
+single_value->field_can__pdu = other_value.can__pdu();
+} else {
+single_value->field_can__pdu.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new CANFD__frame_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @Can.CANFD_frame.");
+break;
+}
+set_selection(other_value);
+}
+
+CANFD__frame_template::CANFD__frame_template()
+{
+}
+
+CANFD__frame_template::CANFD__frame_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+CANFD__frame_template::CANFD__frame_template(const CANFD__frame& other_value)
+{
+copy_value(other_value);
+}
+
+CANFD__frame_template::CANFD__frame_template(const OPTIONAL<CANFD__frame>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CANFD__frame&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @Can.CANFD_frame from an unbound optional field.");
+}
+}
+
+CANFD__frame_template::CANFD__frame_template(const CANFD__frame_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+CANFD__frame_template::~CANFD__frame_template()
+{
+clean_up();
+}
+
+CANFD__frame_template& CANFD__frame_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+CANFD__frame_template& CANFD__frame_template::operator=(const CANFD__frame& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+CANFD__frame_template& CANFD__frame_template::operator=(const OPTIONAL<CANFD__frame>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CANFD__frame&)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 @Can.CANFD_frame.");
+}
+return *this;
+}
+
+CANFD__frame_template& CANFD__frame_template::operator=(const CANFD__frame_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean CANFD__frame_template::match(const CANFD__frame& 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.can__id().is_bound()) return FALSE;
+if(!single_value->field_can__id.match(other_value.can__id(), legacy))return FALSE;
+if(!other_value.can__flags().is_bound()) return FALSE;
+if(!single_value->field_can__flags.match(other_value.can__flags(), legacy))return FALSE;
+if(!other_value.can__pdu().is_bound()) return FALSE;
+if(!single_value->field_can__pdu.match(other_value.can__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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @Can.CANFD_frame.");
+}
+return FALSE;
+}
+
+boolean CANFD__frame_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_can__id.is_bound()
+
+ ||single_value->field_can__flags.is_bound()
+
+ ||single_value->field_can__pdu.is_bound()
+;
+}
+
+boolean CANFD__frame_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_can__id.is_value()
+ &&single_value->field_can__flags.is_value()
+ &&single_value->field_can__pdu.is_value();
+}
+
+void CANFD__frame_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+CANFD__frame CANFD__frame_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 @Can.CANFD_frame.");
+CANFD__frame ret_val;
+if (single_value->field_can__id.is_bound()) {
+ret_val.can__id() = single_value->field_can__id.valueof();
+}
+if (single_value->field_can__flags.is_bound()) {
+ret_val.can__flags() = single_value->field_can__flags.valueof();
+}
+if (single_value->field_can__pdu.is_bound()) {
+ret_val.can__pdu() = single_value->field_can__pdu.valueof();
+}
+return ret_val;
+}
+
+void CANFD__frame_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @Can.CANFD_frame.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new CANFD__frame_template[list_length];
+}
+
+CANFD__frame_template& CANFD__frame_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @Can.CANFD_frame.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @Can.CANFD_frame.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& CANFD__frame_template::can__id()
+{
+set_specific();
+return single_value->field_can__id;
+}
+
+const OCTETSTRING_template& CANFD__frame_template::can__id() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field can_id of a non-specific template of type @Can.CANFD_frame.");
+return single_value->field_can__id;
+}
+
+BITSTRING_template& CANFD__frame_template::can__flags()
+{
+set_specific();
+return single_value->field_can__flags;
+}
+
+const BITSTRING_template& CANFD__frame_template::can__flags() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field can_flags of a non-specific template of type @Can.CANFD_frame.");
+return single_value->field_can__flags;
+}
+
+OCTETSTRING_template& CANFD__frame_template::can__pdu()
+{
+set_specific();
+return single_value->field_can__pdu;
+}
+
+const OCTETSTRING_template& CANFD__frame_template::can__pdu() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field can_pdu of a non-specific template of type @Can.CANFD_frame.");
+return single_value->field_can__pdu;
+}
+
+int CANFD__frame_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @Can.CANFD_frame 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 @Can.CANFD_frame 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 @Can.CANFD_frame containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @Can.CANFD_frame containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @Can.CANFD_frame containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @Can.CANFD_frame containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @Can.CANFD_frame.");
+  }
+  return 0;
+}
+
+void CANFD__frame_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ can_id := ");
+single_value->field_can__id.log();
+TTCN_Logger::log_event_str(", can_flags := ");
+single_value->field_can__flags.log();
+TTCN_Logger::log_event_str(", can_pdu := ");
+single_value->field_can__pdu.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void CANFD__frame_template::log_match(const CANFD__frame& 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_can__id.match(match_value.can__id(), legacy)){
+TTCN_Logger::log_logmatch_info(".can_id");
+single_value->field_can__id.log_match(match_value.can__id(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_can__flags.match(match_value.can__flags(), legacy)){
+TTCN_Logger::log_logmatch_info(".can_flags");
+single_value->field_can__flags.log_match(match_value.can__flags(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_can__pdu.match(match_value.can__pdu(), legacy)){
+TTCN_Logger::log_logmatch_info(".can_pdu");
+single_value->field_can__pdu.log_match(match_value.can__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("{ can_id := ");
+single_value->field_can__id.log_match(match_value.can__id(), legacy);
+TTCN_Logger::log_event_str(", can_flags := ");
+single_value->field_can__flags.log_match(match_value.can__flags(), legacy);
+TTCN_Logger::log_event_str(", can_pdu := ");
+single_value->field_can__pdu.log_match(match_value.can__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 CANFD__frame_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_can__id.encode_text(text_buf);
+single_value->field_can__flags.encode_text(text_buf);
+single_value->field_can__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 @Can.CANFD_frame.");
+}
+}
+
+void CANFD__frame_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_can__id.decode_text(text_buf);
+single_value->field_can__flags.decode_text(text_buf);
+single_value->field_can__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 CANFD__frame_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 @Can.CANFD_frame.");
+}
+}
+
+void CANFD__frame_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: {
+    CANFD__frame_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @Can.CANFD_frame 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) can__id().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) can__flags().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) can__pdu().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(), "can_id")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          can__id().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(), "can_flags")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          can__flags().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(), "can_pdu")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          can__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 @Can.CANFD_frame: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@Can.CANFD_frame");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void CANFD__frame_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_can__id.check_restriction(t_res, t_name ? t_name : "@Can.CANFD_frame");
+single_value->field_can__flags.check_restriction(t_res, t_name ? t_name : "@Can.CANFD_frame");
+single_value->field_can__pdu.check_restriction(t_res, t_name ? t_name : "@Can.CANFD_frame");
+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 : "@Can.CANFD_frame");
+}
+
+boolean CANFD__frame_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean CANFD__frame_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+
+/* Bodies of static functions */
+
+static void pre_init_module()
+{
+TTCN_Location current_location("../src/Can.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "Can");
+General__Types::module_object.pre_init_module();
+current_location.update_lineno(21);
+#line 21 "../src/Can.ttcn"
+const_CAN__EFF__FLAG = os_0;
+current_location.update_lineno(22);
+#line 22 "../src/Can.ttcn"
+const_CAN__RTR__FLAG = os_1;
+current_location.update_lineno(23);
+#line 23 "../src/Can.ttcn"
+const_CAN__ERR__FLAG = os_2;
+current_location.update_lineno(26);
+#line 26 "../src/Can.ttcn"
+const_CAN__SFF__MASK = os_3;
+current_location.update_lineno(27);
+#line 27 "../src/Can.ttcn"
+const_CAN__EFF__MASK = os_4;
+current_location.update_lineno(28);
+#line 28 "../src/Can.ttcn"
+const_CAN__ERR__MASK = os_4;
+current_location.update_lineno(109);
+#line 109 "../src/Can.ttcn"
+const_AF__CAN = 29;
+current_location.update_lineno(134);
+#line 134 "../src/Can.ttcn"
+const_CAN__MAX__DLEN = 8;
+current_location.update_lineno(138);
+#line 138 "../src/Can.ttcn"
+const_CANFD__MAX__DLEN = 64;
+}
+
+static void post_init_module()
+{
+TTCN_Location current_location("../src/Can.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "Can");
+General__Types::module_object.post_init_module();
+current_location.update_lineno(30);
+#line 30 "../src/Can.ttcn"
+template_t__CAN__EFF__FLAG.set_type(VALUE_LIST, 128);
+template_t__CAN__EFF__FLAG.list_item(0) = op_0;
+template_t__CAN__EFF__FLAG.list_item(1) = op_1;
+template_t__CAN__EFF__FLAG.list_item(2) = op_2;
+template_t__CAN__EFF__FLAG.list_item(3) = op_3;
+template_t__CAN__EFF__FLAG.list_item(4) = op_4;
+template_t__CAN__EFF__FLAG.list_item(5) = op_5;
+template_t__CAN__EFF__FLAG.list_item(6) = op_6;
+template_t__CAN__EFF__FLAG.list_item(7) = op_7;
+template_t__CAN__EFF__FLAG.list_item(8) = op_8;
+template_t__CAN__EFF__FLAG.list_item(9) = op_9;
+template_t__CAN__EFF__FLAG.list_item(10) = op_10;
+template_t__CAN__EFF__FLAG.list_item(11) = op_11;
+template_t__CAN__EFF__FLAG.list_item(12) = op_12;
+template_t__CAN__EFF__FLAG.list_item(13) = op_13;
+template_t__CAN__EFF__FLAG.list_item(14) = op_14;
+template_t__CAN__EFF__FLAG.list_item(15) = op_15;
+template_t__CAN__EFF__FLAG.list_item(16) = op_16;
+template_t__CAN__EFF__FLAG.list_item(17) = op_17;
+template_t__CAN__EFF__FLAG.list_item(18) = op_18;
+template_t__CAN__EFF__FLAG.list_item(19) = op_19;
+template_t__CAN__EFF__FLAG.list_item(20) = op_20;
+template_t__CAN__EFF__FLAG.list_item(21) = op_21;
+template_t__CAN__EFF__FLAG.list_item(22) = op_22;
+template_t__CAN__EFF__FLAG.list_item(23) = op_23;
+template_t__CAN__EFF__FLAG.list_item(24) = op_24;
+template_t__CAN__EFF__FLAG.list_item(25) = op_25;
+template_t__CAN__EFF__FLAG.list_item(26) = op_26;
+template_t__CAN__EFF__FLAG.list_item(27) = op_27;
+template_t__CAN__EFF__FLAG.list_item(28) = op_28;
+template_t__CAN__EFF__FLAG.list_item(29) = op_29;
+template_t__CAN__EFF__FLAG.list_item(30) = op_30;
+template_t__CAN__EFF__FLAG.list_item(31) = op_31;
+template_t__CAN__EFF__FLAG.list_item(32) = op_32;
+template_t__CAN__EFF__FLAG.list_item(33) = op_33;
+template_t__CAN__EFF__FLAG.list_item(34) = op_34;
+template_t__CAN__EFF__FLAG.list_item(35) = op_35;
+template_t__CAN__EFF__FLAG.list_item(36) = op_36;
+template_t__CAN__EFF__FLAG.list_item(37) = op_37;
+template_t__CAN__EFF__FLAG.list_item(38) = op_38;
+template_t__CAN__EFF__FLAG.list_item(39) = op_39;
+template_t__CAN__EFF__FLAG.list_item(40) = op_40;
+template_t__CAN__EFF__FLAG.list_item(41) = op_41;
+template_t__CAN__EFF__FLAG.list_item(42) = op_42;
+template_t__CAN__EFF__FLAG.list_item(43) = op_43;
+template_t__CAN__EFF__FLAG.list_item(44) = op_44;
+template_t__CAN__EFF__FLAG.list_item(45) = op_45;
+template_t__CAN__EFF__FLAG.list_item(46) = op_46;
+template_t__CAN__EFF__FLAG.list_item(47) = op_47;
+template_t__CAN__EFF__FLAG.list_item(48) = op_48;
+template_t__CAN__EFF__FLAG.list_item(49) = op_49;
+template_t__CAN__EFF__FLAG.list_item(50) = op_50;
+template_t__CAN__EFF__FLAG.list_item(51) = op_51;
+template_t__CAN__EFF__FLAG.list_item(52) = op_52;
+template_t__CAN__EFF__FLAG.list_item(53) = op_53;
+template_t__CAN__EFF__FLAG.list_item(54) = op_54;
+template_t__CAN__EFF__FLAG.list_item(55) = op_55;
+template_t__CAN__EFF__FLAG.list_item(56) = op_56;
+template_t__CAN__EFF__FLAG.list_item(57) = op_57;
+template_t__CAN__EFF__FLAG.list_item(58) = op_58;
+template_t__CAN__EFF__FLAG.list_item(59) = op_59;
+template_t__CAN__EFF__FLAG.list_item(60) = op_60;
+template_t__CAN__EFF__FLAG.list_item(61) = op_61;
+template_t__CAN__EFF__FLAG.list_item(62) = op_62;
+template_t__CAN__EFF__FLAG.list_item(63) = op_63;
+template_t__CAN__EFF__FLAG.list_item(64) = op_64;
+template_t__CAN__EFF__FLAG.list_item(65) = op_65;
+template_t__CAN__EFF__FLAG.list_item(66) = op_66;
+template_t__CAN__EFF__FLAG.list_item(67) = op_67;
+template_t__CAN__EFF__FLAG.list_item(68) = op_68;
+template_t__CAN__EFF__FLAG.list_item(69) = op_69;
+template_t__CAN__EFF__FLAG.list_item(70) = op_70;
+template_t__CAN__EFF__FLAG.list_item(71) = op_71;
+template_t__CAN__EFF__FLAG.list_item(72) = op_72;
+template_t__CAN__EFF__FLAG.list_item(73) = op_73;
+template_t__CAN__EFF__FLAG.list_item(74) = op_74;
+template_t__CAN__EFF__FLAG.list_item(75) = op_75;
+template_t__CAN__EFF__FLAG.list_item(76) = op_76;
+template_t__CAN__EFF__FLAG.list_item(77) = op_77;
+template_t__CAN__EFF__FLAG.list_item(78) = op_78;
+template_t__CAN__EFF__FLAG.list_item(79) = op_79;
+template_t__CAN__EFF__FLAG.list_item(80) = op_80;
+template_t__CAN__EFF__FLAG.list_item(81) = op_81;
+template_t__CAN__EFF__FLAG.list_item(82) = op_82;
+template_t__CAN__EFF__FLAG.list_item(83) = op_83;
+template_t__CAN__EFF__FLAG.list_item(84) = op_84;
+template_t__CAN__EFF__FLAG.list_item(85) = op_85;
+template_t__CAN__EFF__FLAG.list_item(86) = op_86;
+template_t__CAN__EFF__FLAG.list_item(87) = op_87;
+template_t__CAN__EFF__FLAG.list_item(88) = op_88;
+template_t__CAN__EFF__FLAG.list_item(89) = op_89;
+template_t__CAN__EFF__FLAG.list_item(90) = op_90;
+template_t__CAN__EFF__FLAG.list_item(91) = op_91;
+template_t__CAN__EFF__FLAG.list_item(92) = op_92;
+template_t__CAN__EFF__FLAG.list_item(93) = op_93;
+template_t__CAN__EFF__FLAG.list_item(94) = op_94;
+template_t__CAN__EFF__FLAG.list_item(95) = op_95;
+template_t__CAN__EFF__FLAG.list_item(96) = op_96;
+template_t__CAN__EFF__FLAG.list_item(97) = op_97;
+template_t__CAN__EFF__FLAG.list_item(98) = op_98;
+template_t__CAN__EFF__FLAG.list_item(99) = op_99;
+template_t__CAN__EFF__FLAG.list_item(100) = op_100;
+template_t__CAN__EFF__FLAG.list_item(101) = op_101;
+template_t__CAN__EFF__FLAG.list_item(102) = op_102;
+template_t__CAN__EFF__FLAG.list_item(103) = op_103;
+template_t__CAN__EFF__FLAG.list_item(104) = op_104;
+template_t__CAN__EFF__FLAG.list_item(105) = op_105;
+template_t__CAN__EFF__FLAG.list_item(106) = op_106;
+template_t__CAN__EFF__FLAG.list_item(107) = op_107;
+template_t__CAN__EFF__FLAG.list_item(108) = op_108;
+template_t__CAN__EFF__FLAG.list_item(109) = op_109;
+template_t__CAN__EFF__FLAG.list_item(110) = op_110;
+template_t__CAN__EFF__FLAG.list_item(111) = op_111;
+template_t__CAN__EFF__FLAG.list_item(112) = op_112;
+template_t__CAN__EFF__FLAG.list_item(113) = op_113;
+template_t__CAN__EFF__FLAG.list_item(114) = op_114;
+template_t__CAN__EFF__FLAG.list_item(115) = op_115;
+template_t__CAN__EFF__FLAG.list_item(116) = op_116;
+template_t__CAN__EFF__FLAG.list_item(117) = op_117;
+template_t__CAN__EFF__FLAG.list_item(118) = op_118;
+template_t__CAN__EFF__FLAG.list_item(119) = op_119;
+template_t__CAN__EFF__FLAG.list_item(120) = op_120;
+template_t__CAN__EFF__FLAG.list_item(121) = op_121;
+template_t__CAN__EFF__FLAG.list_item(122) = op_122;
+template_t__CAN__EFF__FLAG.list_item(123) = op_123;
+template_t__CAN__EFF__FLAG.list_item(124) = op_124;
+template_t__CAN__EFF__FLAG.list_item(125) = op_125;
+template_t__CAN__EFF__FLAG.list_item(126) = op_126;
+template_t__CAN__EFF__FLAG.list_item(127) = op_127;
+current_location.update_lineno(48);
+#line 48 "../src/Can.ttcn"
+template_t__CAN__SFF__FLAG.set_type(VALUE_LIST, 128);
+template_t__CAN__SFF__FLAG.list_item(0) = op_128;
+template_t__CAN__SFF__FLAG.list_item(1) = op_129;
+template_t__CAN__SFF__FLAG.list_item(2) = op_130;
+template_t__CAN__SFF__FLAG.list_item(3) = op_131;
+template_t__CAN__SFF__FLAG.list_item(4) = op_132;
+template_t__CAN__SFF__FLAG.list_item(5) = op_133;
+template_t__CAN__SFF__FLAG.list_item(6) = op_134;
+template_t__CAN__SFF__FLAG.list_item(7) = op_135;
+template_t__CAN__SFF__FLAG.list_item(8) = op_136;
+template_t__CAN__SFF__FLAG.list_item(9) = op_137;
+template_t__CAN__SFF__FLAG.list_item(10) = op_138;
+template_t__CAN__SFF__FLAG.list_item(11) = op_139;
+template_t__CAN__SFF__FLAG.list_item(12) = op_140;
+template_t__CAN__SFF__FLAG.list_item(13) = op_141;
+template_t__CAN__SFF__FLAG.list_item(14) = op_142;
+template_t__CAN__SFF__FLAG.list_item(15) = op_143;
+template_t__CAN__SFF__FLAG.list_item(16) = op_144;
+template_t__CAN__SFF__FLAG.list_item(17) = op_145;
+template_t__CAN__SFF__FLAG.list_item(18) = op_146;
+template_t__CAN__SFF__FLAG.list_item(19) = op_147;
+template_t__CAN__SFF__FLAG.list_item(20) = op_148;
+template_t__CAN__SFF__FLAG.list_item(21) = op_149;
+template_t__CAN__SFF__FLAG.list_item(22) = op_150;
+template_t__CAN__SFF__FLAG.list_item(23) = op_151;
+template_t__CAN__SFF__FLAG.list_item(24) = op_152;
+template_t__CAN__SFF__FLAG.list_item(25) = op_153;
+template_t__CAN__SFF__FLAG.list_item(26) = op_154;
+template_t__CAN__SFF__FLAG.list_item(27) = op_155;
+template_t__CAN__SFF__FLAG.list_item(28) = op_156;
+template_t__CAN__SFF__FLAG.list_item(29) = op_157;
+template_t__CAN__SFF__FLAG.list_item(30) = op_158;
+template_t__CAN__SFF__FLAG.list_item(31) = op_159;
+template_t__CAN__SFF__FLAG.list_item(32) = op_160;
+template_t__CAN__SFF__FLAG.list_item(33) = op_161;
+template_t__CAN__SFF__FLAG.list_item(34) = op_162;
+template_t__CAN__SFF__FLAG.list_item(35) = op_163;
+template_t__CAN__SFF__FLAG.list_item(36) = op_164;
+template_t__CAN__SFF__FLAG.list_item(37) = op_165;
+template_t__CAN__SFF__FLAG.list_item(38) = op_166;
+template_t__CAN__SFF__FLAG.list_item(39) = op_167;
+template_t__CAN__SFF__FLAG.list_item(40) = op_168;
+template_t__CAN__SFF__FLAG.list_item(41) = op_169;
+template_t__CAN__SFF__FLAG.list_item(42) = op_170;
+template_t__CAN__SFF__FLAG.list_item(43) = op_171;
+template_t__CAN__SFF__FLAG.list_item(44) = op_172;
+template_t__CAN__SFF__FLAG.list_item(45) = op_173;
+template_t__CAN__SFF__FLAG.list_item(46) = op_174;
+template_t__CAN__SFF__FLAG.list_item(47) = op_175;
+template_t__CAN__SFF__FLAG.list_item(48) = op_176;
+template_t__CAN__SFF__FLAG.list_item(49) = op_177;
+template_t__CAN__SFF__FLAG.list_item(50) = op_178;
+template_t__CAN__SFF__FLAG.list_item(51) = op_179;
+template_t__CAN__SFF__FLAG.list_item(52) = op_180;
+template_t__CAN__SFF__FLAG.list_item(53) = op_181;
+template_t__CAN__SFF__FLAG.list_item(54) = op_182;
+template_t__CAN__SFF__FLAG.list_item(55) = op_183;
+template_t__CAN__SFF__FLAG.list_item(56) = op_184;
+template_t__CAN__SFF__FLAG.list_item(57) = op_185;
+template_t__CAN__SFF__FLAG.list_item(58) = op_186;
+template_t__CAN__SFF__FLAG.list_item(59) = op_187;
+template_t__CAN__SFF__FLAG.list_item(60) = op_188;
+template_t__CAN__SFF__FLAG.list_item(61) = op_189;
+template_t__CAN__SFF__FLAG.list_item(62) = op_190;
+template_t__CAN__SFF__FLAG.list_item(63) = op_191;
+template_t__CAN__SFF__FLAG.list_item(64) = op_192;
+template_t__CAN__SFF__FLAG.list_item(65) = op_193;
+template_t__CAN__SFF__FLAG.list_item(66) = op_194;
+template_t__CAN__SFF__FLAG.list_item(67) = op_195;
+template_t__CAN__SFF__FLAG.list_item(68) = op_196;
+template_t__CAN__SFF__FLAG.list_item(69) = op_197;
+template_t__CAN__SFF__FLAG.list_item(70) = op_198;
+template_t__CAN__SFF__FLAG.list_item(71) = op_199;
+template_t__CAN__SFF__FLAG.list_item(72) = op_200;
+template_t__CAN__SFF__FLAG.list_item(73) = op_201;
+template_t__CAN__SFF__FLAG.list_item(74) = op_202;
+template_t__CAN__SFF__FLAG.list_item(75) = op_203;
+template_t__CAN__SFF__FLAG.list_item(76) = op_204;
+template_t__CAN__SFF__FLAG.list_item(77) = op_205;
+template_t__CAN__SFF__FLAG.list_item(78) = op_206;
+template_t__CAN__SFF__FLAG.list_item(79) = op_207;
+template_t__CAN__SFF__FLAG.list_item(80) = op_208;
+template_t__CAN__SFF__FLAG.list_item(81) = op_209;
+template_t__CAN__SFF__FLAG.list_item(82) = op_210;
+template_t__CAN__SFF__FLAG.list_item(83) = op_211;
+template_t__CAN__SFF__FLAG.list_item(84) = op_212;
+template_t__CAN__SFF__FLAG.list_item(85) = op_213;
+template_t__CAN__SFF__FLAG.list_item(86) = op_214;
+template_t__CAN__SFF__FLAG.list_item(87) = op_215;
+template_t__CAN__SFF__FLAG.list_item(88) = op_216;
+template_t__CAN__SFF__FLAG.list_item(89) = op_217;
+template_t__CAN__SFF__FLAG.list_item(90) = op_218;
+template_t__CAN__SFF__FLAG.list_item(91) = op_219;
+template_t__CAN__SFF__FLAG.list_item(92) = op_220;
+template_t__CAN__SFF__FLAG.list_item(93) = op_221;
+template_t__CAN__SFF__FLAG.list_item(94) = op_222;
+template_t__CAN__SFF__FLAG.list_item(95) = op_223;
+template_t__CAN__SFF__FLAG.list_item(96) = op_224;
+template_t__CAN__SFF__FLAG.list_item(97) = op_225;
+template_t__CAN__SFF__FLAG.list_item(98) = op_226;
+template_t__CAN__SFF__FLAG.list_item(99) = op_227;
+template_t__CAN__SFF__FLAG.list_item(100) = op_228;
+template_t__CAN__SFF__FLAG.list_item(101) = op_229;
+template_t__CAN__SFF__FLAG.list_item(102) = op_230;
+template_t__CAN__SFF__FLAG.list_item(103) = op_231;
+template_t__CAN__SFF__FLAG.list_item(104) = op_232;
+template_t__CAN__SFF__FLAG.list_item(105) = op_233;
+template_t__CAN__SFF__FLAG.list_item(106) = op_234;
+template_t__CAN__SFF__FLAG.list_item(107) = op_235;
+template_t__CAN__SFF__FLAG.list_item(108) = op_236;
+template_t__CAN__SFF__FLAG.list_item(109) = op_237;
+template_t__CAN__SFF__FLAG.list_item(110) = op_238;
+template_t__CAN__SFF__FLAG.list_item(111) = op_239;
+template_t__CAN__SFF__FLAG.list_item(112) = op_240;
+template_t__CAN__SFF__FLAG.list_item(113) = op_241;
+template_t__CAN__SFF__FLAG.list_item(114) = op_242;
+template_t__CAN__SFF__FLAG.list_item(115) = op_243;
+template_t__CAN__SFF__FLAG.list_item(116) = op_244;
+template_t__CAN__SFF__FLAG.list_item(117) = op_245;
+template_t__CAN__SFF__FLAG.list_item(118) = op_246;
+template_t__CAN__SFF__FLAG.list_item(119) = op_247;
+template_t__CAN__SFF__FLAG.list_item(120) = op_248;
+template_t__CAN__SFF__FLAG.list_item(121) = op_249;
+template_t__CAN__SFF__FLAG.list_item(122) = op_250;
+template_t__CAN__SFF__FLAG.list_item(123) = op_251;
+template_t__CAN__SFF__FLAG.list_item(124) = op_252;
+template_t__CAN__SFF__FLAG.list_item(125) = op_253;
+template_t__CAN__SFF__FLAG.list_item(126) = op_254;
+template_t__CAN__SFF__FLAG.list_item(127) = op_255;
+current_location.update_lineno(66);
+#line 66 "../src/Can.ttcn"
+template_t__CAN__RTR__FLAG.set_type(VALUE_LIST, 128);
+template_t__CAN__RTR__FLAG.list_item(0) = op_192;
+template_t__CAN__RTR__FLAG.list_item(1) = op_193;
+template_t__CAN__RTR__FLAG.list_item(2) = op_194;
+template_t__CAN__RTR__FLAG.list_item(3) = op_195;
+template_t__CAN__RTR__FLAG.list_item(4) = op_196;
+template_t__CAN__RTR__FLAG.list_item(5) = op_197;
+template_t__CAN__RTR__FLAG.list_item(6) = op_198;
+template_t__CAN__RTR__FLAG.list_item(7) = op_199;
+template_t__CAN__RTR__FLAG.list_item(8) = op_200;
+template_t__CAN__RTR__FLAG.list_item(9) = op_201;
+template_t__CAN__RTR__FLAG.list_item(10) = op_202;
+template_t__CAN__RTR__FLAG.list_item(11) = op_203;
+template_t__CAN__RTR__FLAG.list_item(12) = op_204;
+template_t__CAN__RTR__FLAG.list_item(13) = op_205;
+template_t__CAN__RTR__FLAG.list_item(14) = op_206;
+template_t__CAN__RTR__FLAG.list_item(15) = op_207;
+template_t__CAN__RTR__FLAG.list_item(16) = op_208;
+template_t__CAN__RTR__FLAG.list_item(17) = op_209;
+template_t__CAN__RTR__FLAG.list_item(18) = op_210;
+template_t__CAN__RTR__FLAG.list_item(19) = op_211;
+template_t__CAN__RTR__FLAG.list_item(20) = op_212;
+template_t__CAN__RTR__FLAG.list_item(21) = op_213;
+template_t__CAN__RTR__FLAG.list_item(22) = op_214;
+template_t__CAN__RTR__FLAG.list_item(23) = op_215;
+template_t__CAN__RTR__FLAG.list_item(24) = op_216;
+template_t__CAN__RTR__FLAG.list_item(25) = op_217;
+template_t__CAN__RTR__FLAG.list_item(26) = op_218;
+template_t__CAN__RTR__FLAG.list_item(27) = op_219;
+template_t__CAN__RTR__FLAG.list_item(28) = op_220;
+template_t__CAN__RTR__FLAG.list_item(29) = op_221;
+template_t__CAN__RTR__FLAG.list_item(30) = op_222;
+template_t__CAN__RTR__FLAG.list_item(31) = op_223;
+template_t__CAN__RTR__FLAG.list_item(32) = op_224;
+template_t__CAN__RTR__FLAG.list_item(33) = op_225;
+template_t__CAN__RTR__FLAG.list_item(34) = op_226;
+template_t__CAN__RTR__FLAG.list_item(35) = op_227;
+template_t__CAN__RTR__FLAG.list_item(36) = op_228;
+template_t__CAN__RTR__FLAG.list_item(37) = op_229;
+template_t__CAN__RTR__FLAG.list_item(38) = op_230;
+template_t__CAN__RTR__FLAG.list_item(39) = op_231;
+template_t__CAN__RTR__FLAG.list_item(40) = op_232;
+template_t__CAN__RTR__FLAG.list_item(41) = op_233;
+template_t__CAN__RTR__FLAG.list_item(42) = op_234;
+template_t__CAN__RTR__FLAG.list_item(43) = op_235;
+template_t__CAN__RTR__FLAG.list_item(44) = op_236;
+template_t__CAN__RTR__FLAG.list_item(45) = op_237;
+template_t__CAN__RTR__FLAG.list_item(46) = op_238;
+template_t__CAN__RTR__FLAG.list_item(47) = op_239;
+template_t__CAN__RTR__FLAG.list_item(48) = op_240;
+template_t__CAN__RTR__FLAG.list_item(49) = op_241;
+template_t__CAN__RTR__FLAG.list_item(50) = op_242;
+template_t__CAN__RTR__FLAG.list_item(51) = op_243;
+template_t__CAN__RTR__FLAG.list_item(52) = op_244;
+template_t__CAN__RTR__FLAG.list_item(53) = op_245;
+template_t__CAN__RTR__FLAG.list_item(54) = op_246;
+template_t__CAN__RTR__FLAG.list_item(55) = op_247;
+template_t__CAN__RTR__FLAG.list_item(56) = op_248;
+template_t__CAN__RTR__FLAG.list_item(57) = op_249;
+template_t__CAN__RTR__FLAG.list_item(58) = op_250;
+template_t__CAN__RTR__FLAG.list_item(59) = op_251;
+template_t__CAN__RTR__FLAG.list_item(60) = op_252;
+template_t__CAN__RTR__FLAG.list_item(61) = op_253;
+template_t__CAN__RTR__FLAG.list_item(62) = op_254;
+template_t__CAN__RTR__FLAG.list_item(63) = op_255;
+template_t__CAN__RTR__FLAG.list_item(64) = op_64;
+template_t__CAN__RTR__FLAG.list_item(65) = op_65;
+template_t__CAN__RTR__FLAG.list_item(66) = op_66;
+template_t__CAN__RTR__FLAG.list_item(67) = op_67;
+template_t__CAN__RTR__FLAG.list_item(68) = op_68;
+template_t__CAN__RTR__FLAG.list_item(69) = op_69;
+template_t__CAN__RTR__FLAG.list_item(70) = op_70;
+template_t__CAN__RTR__FLAG.list_item(71) = op_71;
+template_t__CAN__RTR__FLAG.list_item(72) = op_72;
+template_t__CAN__RTR__FLAG.list_item(73) = op_73;
+template_t__CAN__RTR__FLAG.list_item(74) = op_74;
+template_t__CAN__RTR__FLAG.list_item(75) = op_75;
+template_t__CAN__RTR__FLAG.list_item(76) = op_76;
+template_t__CAN__RTR__FLAG.list_item(77) = op_77;
+template_t__CAN__RTR__FLAG.list_item(78) = op_78;
+template_t__CAN__RTR__FLAG.list_item(79) = op_79;
+template_t__CAN__RTR__FLAG.list_item(80) = op_80;
+template_t__CAN__RTR__FLAG.list_item(81) = op_81;
+template_t__CAN__RTR__FLAG.list_item(82) = op_82;
+template_t__CAN__RTR__FLAG.list_item(83) = op_83;
+template_t__CAN__RTR__FLAG.list_item(84) = op_84;
+template_t__CAN__RTR__FLAG.list_item(85) = op_85;
+template_t__CAN__RTR__FLAG.list_item(86) = op_86;
+template_t__CAN__RTR__FLAG.list_item(87) = op_87;
+template_t__CAN__RTR__FLAG.list_item(88) = op_88;
+template_t__CAN__RTR__FLAG.list_item(89) = op_89;
+template_t__CAN__RTR__FLAG.list_item(90) = op_90;
+template_t__CAN__RTR__FLAG.list_item(91) = op_91;
+template_t__CAN__RTR__FLAG.list_item(92) = op_92;
+template_t__CAN__RTR__FLAG.list_item(93) = op_93;
+template_t__CAN__RTR__FLAG.list_item(94) = op_94;
+template_t__CAN__RTR__FLAG.list_item(95) = op_95;
+template_t__CAN__RTR__FLAG.list_item(96) = op_96;
+template_t__CAN__RTR__FLAG.list_item(97) = op_97;
+template_t__CAN__RTR__FLAG.list_item(98) = op_98;
+template_t__CAN__RTR__FLAG.list_item(99) = op_99;
+template_t__CAN__RTR__FLAG.list_item(100) = op_100;
+template_t__CAN__RTR__FLAG.list_item(101) = op_101;
+template_t__CAN__RTR__FLAG.list_item(102) = op_102;
+template_t__CAN__RTR__FLAG.list_item(103) = op_103;
+template_t__CAN__RTR__FLAG.list_item(104) = op_104;
+template_t__CAN__RTR__FLAG.list_item(105) = op_105;
+template_t__CAN__RTR__FLAG.list_item(106) = op_106;
+template_t__CAN__RTR__FLAG.list_item(107) = op_107;
+template_t__CAN__RTR__FLAG.list_item(108) = op_108;
+template_t__CAN__RTR__FLAG.list_item(109) = op_109;
+template_t__CAN__RTR__FLAG.list_item(110) = op_110;
+template_t__CAN__RTR__FLAG.list_item(111) = op_111;
+template_t__CAN__RTR__FLAG.list_item(112) = op_112;
+template_t__CAN__RTR__FLAG.list_item(113) = op_113;
+template_t__CAN__RTR__FLAG.list_item(114) = op_114;
+template_t__CAN__RTR__FLAG.list_item(115) = op_115;
+template_t__CAN__RTR__FLAG.list_item(116) = op_116;
+template_t__CAN__RTR__FLAG.list_item(117) = op_117;
+template_t__CAN__RTR__FLAG.list_item(118) = op_118;
+template_t__CAN__RTR__FLAG.list_item(119) = op_119;
+template_t__CAN__RTR__FLAG.list_item(120) = op_120;
+template_t__CAN__RTR__FLAG.list_item(121) = op_121;
+template_t__CAN__RTR__FLAG.list_item(122) = op_122;
+template_t__CAN__RTR__FLAG.list_item(123) = op_123;
+template_t__CAN__RTR__FLAG.list_item(124) = op_124;
+template_t__CAN__RTR__FLAG.list_item(125) = op_125;
+template_t__CAN__RTR__FLAG.list_item(126) = op_126;
+template_t__CAN__RTR__FLAG.list_item(127) = op_127;
+current_location.update_lineno(84);
+#line 84 "../src/Can.ttcn"
+template_t__CAN__ERR__FLAG.set_type(VALUE_LIST, 128);
+template_t__CAN__ERR__FLAG.list_item(0) = op_160;
+template_t__CAN__ERR__FLAG.list_item(1) = op_161;
+template_t__CAN__ERR__FLAG.list_item(2) = op_162;
+template_t__CAN__ERR__FLAG.list_item(3) = op_163;
+template_t__CAN__ERR__FLAG.list_item(4) = op_164;
+template_t__CAN__ERR__FLAG.list_item(5) = op_165;
+template_t__CAN__ERR__FLAG.list_item(6) = op_166;
+template_t__CAN__ERR__FLAG.list_item(7) = op_167;
+template_t__CAN__ERR__FLAG.list_item(8) = op_168;
+template_t__CAN__ERR__FLAG.list_item(9) = op_169;
+template_t__CAN__ERR__FLAG.list_item(10) = op_170;
+template_t__CAN__ERR__FLAG.list_item(11) = op_171;
+template_t__CAN__ERR__FLAG.list_item(12) = op_172;
+template_t__CAN__ERR__FLAG.list_item(13) = op_173;
+template_t__CAN__ERR__FLAG.list_item(14) = op_174;
+template_t__CAN__ERR__FLAG.list_item(15) = op_175;
+template_t__CAN__ERR__FLAG.list_item(16) = op_176;
+template_t__CAN__ERR__FLAG.list_item(17) = op_177;
+template_t__CAN__ERR__FLAG.list_item(18) = op_178;
+template_t__CAN__ERR__FLAG.list_item(19) = op_179;
+template_t__CAN__ERR__FLAG.list_item(20) = op_180;
+template_t__CAN__ERR__FLAG.list_item(21) = op_181;
+template_t__CAN__ERR__FLAG.list_item(22) = op_182;
+template_t__CAN__ERR__FLAG.list_item(23) = op_183;
+template_t__CAN__ERR__FLAG.list_item(24) = op_184;
+template_t__CAN__ERR__FLAG.list_item(25) = op_185;
+template_t__CAN__ERR__FLAG.list_item(26) = op_186;
+template_t__CAN__ERR__FLAG.list_item(27) = op_187;
+template_t__CAN__ERR__FLAG.list_item(28) = op_188;
+template_t__CAN__ERR__FLAG.list_item(29) = op_189;
+template_t__CAN__ERR__FLAG.list_item(30) = op_190;
+template_t__CAN__ERR__FLAG.list_item(31) = op_191;
+template_t__CAN__ERR__FLAG.list_item(32) = op_224;
+template_t__CAN__ERR__FLAG.list_item(33) = op_225;
+template_t__CAN__ERR__FLAG.list_item(34) = op_226;
+template_t__CAN__ERR__FLAG.list_item(35) = op_227;
+template_t__CAN__ERR__FLAG.list_item(36) = op_228;
+template_t__CAN__ERR__FLAG.list_item(37) = op_229;
+template_t__CAN__ERR__FLAG.list_item(38) = op_230;
+template_t__CAN__ERR__FLAG.list_item(39) = op_231;
+template_t__CAN__ERR__FLAG.list_item(40) = op_232;
+template_t__CAN__ERR__FLAG.list_item(41) = op_233;
+template_t__CAN__ERR__FLAG.list_item(42) = op_234;
+template_t__CAN__ERR__FLAG.list_item(43) = op_235;
+template_t__CAN__ERR__FLAG.list_item(44) = op_236;
+template_t__CAN__ERR__FLAG.list_item(45) = op_237;
+template_t__CAN__ERR__FLAG.list_item(46) = op_238;
+template_t__CAN__ERR__FLAG.list_item(47) = op_239;
+template_t__CAN__ERR__FLAG.list_item(48) = op_240;
+template_t__CAN__ERR__FLAG.list_item(49) = op_241;
+template_t__CAN__ERR__FLAG.list_item(50) = op_242;
+template_t__CAN__ERR__FLAG.list_item(51) = op_243;
+template_t__CAN__ERR__FLAG.list_item(52) = op_244;
+template_t__CAN__ERR__FLAG.list_item(53) = op_245;
+template_t__CAN__ERR__FLAG.list_item(54) = op_246;
+template_t__CAN__ERR__FLAG.list_item(55) = op_247;
+template_t__CAN__ERR__FLAG.list_item(56) = op_248;
+template_t__CAN__ERR__FLAG.list_item(57) = op_249;
+template_t__CAN__ERR__FLAG.list_item(58) = op_250;
+template_t__CAN__ERR__FLAG.list_item(59) = op_251;
+template_t__CAN__ERR__FLAG.list_item(60) = op_252;
+template_t__CAN__ERR__FLAG.list_item(61) = op_253;
+template_t__CAN__ERR__FLAG.list_item(62) = op_254;
+template_t__CAN__ERR__FLAG.list_item(63) = op_255;
+template_t__CAN__ERR__FLAG.list_item(64) = op_32;
+template_t__CAN__ERR__FLAG.list_item(65) = op_33;
+template_t__CAN__ERR__FLAG.list_item(66) = op_34;
+template_t__CAN__ERR__FLAG.list_item(67) = op_35;
+template_t__CAN__ERR__FLAG.list_item(68) = op_36;
+template_t__CAN__ERR__FLAG.list_item(69) = op_37;
+template_t__CAN__ERR__FLAG.list_item(70) = op_38;
+template_t__CAN__ERR__FLAG.list_item(71) = op_39;
+template_t__CAN__ERR__FLAG.list_item(72) = op_40;
+template_t__CAN__ERR__FLAG.list_item(73) = op_41;
+template_t__CAN__ERR__FLAG.list_item(74) = op_42;
+template_t__CAN__ERR__FLAG.list_item(75) = op_43;
+template_t__CAN__ERR__FLAG.list_item(76) = op_44;
+template_t__CAN__ERR__FLAG.list_item(77) = op_45;
+template_t__CAN__ERR__FLAG.list_item(78) = op_46;
+template_t__CAN__ERR__FLAG.list_item(79) = op_47;
+template_t__CAN__ERR__FLAG.list_item(80) = op_48;
+template_t__CAN__ERR__FLAG.list_item(81) = op_49;
+template_t__CAN__ERR__FLAG.list_item(82) = op_50;
+template_t__CAN__ERR__FLAG.list_item(83) = op_51;
+template_t__CAN__ERR__FLAG.list_item(84) = op_52;
+template_t__CAN__ERR__FLAG.list_item(85) = op_53;
+template_t__CAN__ERR__FLAG.list_item(86) = op_54;
+template_t__CAN__ERR__FLAG.list_item(87) = op_55;
+template_t__CAN__ERR__FLAG.list_item(88) = op_56;
+template_t__CAN__ERR__FLAG.list_item(89) = op_57;
+template_t__CAN__ERR__FLAG.list_item(90) = op_58;
+template_t__CAN__ERR__FLAG.list_item(91) = op_59;
+template_t__CAN__ERR__FLAG.list_item(92) = op_60;
+template_t__CAN__ERR__FLAG.list_item(93) = op_61;
+template_t__CAN__ERR__FLAG.list_item(94) = op_62;
+template_t__CAN__ERR__FLAG.list_item(95) = op_63;
+template_t__CAN__ERR__FLAG.list_item(96) = op_96;
+template_t__CAN__ERR__FLAG.list_item(97) = op_97;
+template_t__CAN__ERR__FLAG.list_item(98) = op_98;
+template_t__CAN__ERR__FLAG.list_item(99) = op_99;
+template_t__CAN__ERR__FLAG.list_item(100) = op_100;
+template_t__CAN__ERR__FLAG.list_item(101) = op_101;
+template_t__CAN__ERR__FLAG.list_item(102) = op_102;
+template_t__CAN__ERR__FLAG.list_item(103) = op_103;
+template_t__CAN__ERR__FLAG.list_item(104) = op_104;
+template_t__CAN__ERR__FLAG.list_item(105) = op_105;
+template_t__CAN__ERR__FLAG.list_item(106) = op_106;
+template_t__CAN__ERR__FLAG.list_item(107) = op_107;
+template_t__CAN__ERR__FLAG.list_item(108) = op_108;
+template_t__CAN__ERR__FLAG.list_item(109) = op_109;
+template_t__CAN__ERR__FLAG.list_item(110) = op_110;
+template_t__CAN__ERR__FLAG.list_item(111) = op_111;
+template_t__CAN__ERR__FLAG.list_item(112) = op_112;
+template_t__CAN__ERR__FLAG.list_item(113) = op_113;
+template_t__CAN__ERR__FLAG.list_item(114) = op_114;
+template_t__CAN__ERR__FLAG.list_item(115) = op_115;
+template_t__CAN__ERR__FLAG.list_item(116) = op_116;
+template_t__CAN__ERR__FLAG.list_item(117) = op_117;
+template_t__CAN__ERR__FLAG.list_item(118) = op_118;
+template_t__CAN__ERR__FLAG.list_item(119) = op_119;
+template_t__CAN__ERR__FLAG.list_item(120) = op_120;
+template_t__CAN__ERR__FLAG.list_item(121) = op_121;
+template_t__CAN__ERR__FLAG.list_item(122) = op_122;
+template_t__CAN__ERR__FLAG.list_item(123) = op_123;
+template_t__CAN__ERR__FLAG.list_item(124) = op_124;
+template_t__CAN__ERR__FLAG.list_item(125) = op_125;
+template_t__CAN__ERR__FLAG.list_item(126) = op_126;
+template_t__CAN__ERR__FLAG.list_item(127) = op_127;
+}
+
+
+} /* end of namespace */
diff --git a/demo/Can.d b/demo/Can.d
new file mode 100644
index 0000000..3d61251
--- /dev/null
+++ b/demo/Can.d
@@ -0,0 +1,59 @@
+Can.o Can.d : Can.cc Can.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TTCN3.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/version.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/cversion.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Types.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Vector.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Error.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Basetype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Encdec.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RInt.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON_Tokenizer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Logger.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Template.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Integer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ttcn3float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Boolean.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Null.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Optional.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Param_Types.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/memory.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/BER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Textbuf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Parameters.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XmlReader.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Objid.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Verdicttype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Component.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Bitstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RAW.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/CharCoding.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Hexstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Octetstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Any.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Universal_charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Struct_of.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Array.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_CharacterString.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_External.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TEXT.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_EmbeddedPDV.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Addfunc.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Timer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Port.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Event_Handler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/TitanLoggerApiSimple.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/PreGenRecordOf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Module_list.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Snapshot.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Default.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Runtime.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/OER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Profiler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ProfilerTools.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Debugger.hh \
+ General_Types.hh
diff --git a/demo/Can.hh b/demo/Can.hh
new file mode 100644
index 0000000..b656c84
--- /dev/null
+++ b/demo/Can.hh
@@ -0,0 +1,585 @@
+// This C++ header file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+#ifndef Can_HH
+#define Can_HH
+
+#ifdef TITAN_RUNTIME_2
+#error Generated code does not match with used runtime.\
+ Code was generated without -R option but -DTITAN_RUNTIME_2 was used.
+#endif
+
+/* Header file includes */
+
+#include <TTCN3.hh>
+#include "General_Types.hh"
+
+#if TTCN3_VERSION != 60600
+#error Version mismatch detected.\
+ Please check the version of the TTCN-3 compiler and the base library.\
+ Run make clean and rebuild the project if the version of the compiler changed recently.
+#endif
+
+#ifndef LINUX
+#error This file should be compiled on LINUX
+#endif
+
+#undef Can_HH
+#endif
+
+namespace Can {
+
+/* Forward declarations of classes */
+
+class AdresseFamily__enum;
+class AdresseFamily__enum_template;
+class ProtocolFamily__enum;
+class ProtocolFamily__enum_template;
+class PF__CAN__protocols__enum;
+class PF__CAN__protocols__enum_template;
+class CAN__frame;
+class CAN__frame_template;
+class CANFD__frame;
+class CANFD__frame_template;
+
+} /* end of namespace */
+
+#ifndef Can_HH
+#define Can_HH
+
+namespace Can {
+
+/* Type definitions */
+
+typedef OCTETSTRING CAN__id;
+typedef OCTETSTRING_template CAN__id_template;
+typedef BITSTRING CAN__flags;
+typedef BITSTRING_template CAN__flags_template;
+typedef OCTETSTRING CAN__PDU;
+typedef OCTETSTRING_template CAN__PDU_template;
+
+/* Class definitions */
+
+class AdresseFamily__enum : public Base_Type { // enum
+friend class AdresseFamily__enum_template;
+public:
+enum enum_type { PF__CAN = 29, UNKNOWN_VALUE = 0, UNBOUND_VALUE = 1 };
+private:
+enum_type enum_value;
+
+public:
+AdresseFamily__enum();
+AdresseFamily__enum(int other_value);
+AdresseFamily__enum(enum_type other_value);
+AdresseFamily__enum(const AdresseFamily__enum& other_value);
+
+AdresseFamily__enum& operator=(int other_value);
+AdresseFamily__enum& operator=(enum_type other_value);
+AdresseFamily__enum& operator=(const AdresseFamily__enum& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const AdresseFamily__enum& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const AdresseFamily__enum& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const AdresseFamily__enum& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const AdresseFamily__enum& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const AdresseFamily__enum& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const AdresseFamily__enum& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const AdresseFamily__enum& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+};
+
+class AdresseFamily__enum_template : public Base_Template {
+union {
+AdresseFamily__enum::enum_type single_value;
+struct {
+unsigned int n_values;
+AdresseFamily__enum_template *list_value;
+} value_list;
+};
+
+void copy_template(const AdresseFamily__enum_template& other_value);
+
+public:
+AdresseFamily__enum_template();
+AdresseFamily__enum_template(template_sel other_value);
+AdresseFamily__enum_template(int other_value);
+AdresseFamily__enum_template(AdresseFamily__enum::enum_type other_value);
+AdresseFamily__enum_template(const AdresseFamily__enum& other_value);
+AdresseFamily__enum_template(const OPTIONAL<AdresseFamily__enum>& other_value);
+AdresseFamily__enum_template(const AdresseFamily__enum_template& other_value);
+~AdresseFamily__enum_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+AdresseFamily__enum_template& operator=(template_sel other_value);
+AdresseFamily__enum_template& operator=(int other_value);
+AdresseFamily__enum_template& operator=(AdresseFamily__enum::enum_type other_value);
+AdresseFamily__enum_template& operator=(const AdresseFamily__enum& other_value);
+AdresseFamily__enum_template& operator=(const OPTIONAL<AdresseFamily__enum>& other_value);
+AdresseFamily__enum_template& operator=(const AdresseFamily__enum_template& other_value);
+
+boolean match(AdresseFamily__enum::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const AdresseFamily__enum& other_value, boolean legacy = FALSE) const;
+AdresseFamily__enum::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+AdresseFamily__enum_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const AdresseFamily__enum& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class ProtocolFamily__enum : public Base_Type { // enum
+friend class ProtocolFamily__enum_template;
+public:
+enum enum_type { SOCK__DGRAM = 2, SOCK__RAW = 3, UNKNOWN_VALUE = 0, UNBOUND_VALUE = 1 };
+private:
+enum_type enum_value;
+
+public:
+ProtocolFamily__enum();
+ProtocolFamily__enum(int other_value);
+ProtocolFamily__enum(enum_type other_value);
+ProtocolFamily__enum(const ProtocolFamily__enum& other_value);
+
+ProtocolFamily__enum& operator=(int other_value);
+ProtocolFamily__enum& operator=(enum_type other_value);
+ProtocolFamily__enum& operator=(const ProtocolFamily__enum& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const ProtocolFamily__enum& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const ProtocolFamily__enum& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const ProtocolFamily__enum& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const ProtocolFamily__enum& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const ProtocolFamily__enum& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const ProtocolFamily__enum& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const ProtocolFamily__enum& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+};
+
+class ProtocolFamily__enum_template : public Base_Template {
+union {
+ProtocolFamily__enum::enum_type single_value;
+struct {
+unsigned int n_values;
+ProtocolFamily__enum_template *list_value;
+} value_list;
+};
+
+void copy_template(const ProtocolFamily__enum_template& other_value);
+
+public:
+ProtocolFamily__enum_template();
+ProtocolFamily__enum_template(template_sel other_value);
+ProtocolFamily__enum_template(int other_value);
+ProtocolFamily__enum_template(ProtocolFamily__enum::enum_type other_value);
+ProtocolFamily__enum_template(const ProtocolFamily__enum& other_value);
+ProtocolFamily__enum_template(const OPTIONAL<ProtocolFamily__enum>& other_value);
+ProtocolFamily__enum_template(const ProtocolFamily__enum_template& other_value);
+~ProtocolFamily__enum_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ProtocolFamily__enum_template& operator=(template_sel other_value);
+ProtocolFamily__enum_template& operator=(int other_value);
+ProtocolFamily__enum_template& operator=(ProtocolFamily__enum::enum_type other_value);
+ProtocolFamily__enum_template& operator=(const ProtocolFamily__enum& other_value);
+ProtocolFamily__enum_template& operator=(const OPTIONAL<ProtocolFamily__enum>& other_value);
+ProtocolFamily__enum_template& operator=(const ProtocolFamily__enum_template& other_value);
+
+boolean match(ProtocolFamily__enum::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const ProtocolFamily__enum& other_value, boolean legacy = FALSE) const;
+ProtocolFamily__enum::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ProtocolFamily__enum_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const ProtocolFamily__enum& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class PF__CAN__protocols__enum : public Base_Type { // enum
+friend class PF__CAN__protocols__enum_template;
+public:
+enum enum_type { CAN__RAW = 1, CAN__BCM = 2, CAN__TP16 = 3, CAN__TP20 = 4, CAN__MCNET = 5, CAN__ISOTP = 6, CAN__NPROTO = 7, UNKNOWN_VALUE = 0, UNBOUND_VALUE = 8 };
+private:
+enum_type enum_value;
+
+public:
+PF__CAN__protocols__enum();
+PF__CAN__protocols__enum(int other_value);
+PF__CAN__protocols__enum(enum_type other_value);
+PF__CAN__protocols__enum(const PF__CAN__protocols__enum& other_value);
+
+PF__CAN__protocols__enum& operator=(int other_value);
+PF__CAN__protocols__enum& operator=(enum_type other_value);
+PF__CAN__protocols__enum& operator=(const PF__CAN__protocols__enum& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const PF__CAN__protocols__enum& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const PF__CAN__protocols__enum& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const PF__CAN__protocols__enum& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const PF__CAN__protocols__enum& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const PF__CAN__protocols__enum& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const PF__CAN__protocols__enum& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const PF__CAN__protocols__enum& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+};
+
+class PF__CAN__protocols__enum_template : public Base_Template {
+union {
+PF__CAN__protocols__enum::enum_type single_value;
+struct {
+unsigned int n_values;
+PF__CAN__protocols__enum_template *list_value;
+} value_list;
+};
+
+void copy_template(const PF__CAN__protocols__enum_template& other_value);
+
+public:
+PF__CAN__protocols__enum_template();
+PF__CAN__protocols__enum_template(template_sel other_value);
+PF__CAN__protocols__enum_template(int other_value);
+PF__CAN__protocols__enum_template(PF__CAN__protocols__enum::enum_type other_value);
+PF__CAN__protocols__enum_template(const PF__CAN__protocols__enum& other_value);
+PF__CAN__protocols__enum_template(const OPTIONAL<PF__CAN__protocols__enum>& other_value);
+PF__CAN__protocols__enum_template(const PF__CAN__protocols__enum_template& other_value);
+~PF__CAN__protocols__enum_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+PF__CAN__protocols__enum_template& operator=(template_sel other_value);
+PF__CAN__protocols__enum_template& operator=(int other_value);
+PF__CAN__protocols__enum_template& operator=(PF__CAN__protocols__enum::enum_type other_value);
+PF__CAN__protocols__enum_template& operator=(const PF__CAN__protocols__enum& other_value);
+PF__CAN__protocols__enum_template& operator=(const OPTIONAL<PF__CAN__protocols__enum>& other_value);
+PF__CAN__protocols__enum_template& operator=(const PF__CAN__protocols__enum_template& other_value);
+
+boolean match(PF__CAN__protocols__enum::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const PF__CAN__protocols__enum& other_value, boolean legacy = FALSE) const;
+PF__CAN__protocols__enum::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+PF__CAN__protocols__enum_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const PF__CAN__protocols__enum& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class CAN__frame {
+  OCTETSTRING field_can__id;
+  OCTETSTRING field_can__pdu;
+public:
+  CAN__frame();
+  CAN__frame(const OCTETSTRING& par_can__id,
+    const OCTETSTRING& par_can__pdu);
+  CAN__frame(const CAN__frame& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  CAN__frame& operator=(const CAN__frame& other_value);
+  boolean operator==(const CAN__frame& other_value) const;
+  inline boolean operator!=(const CAN__frame& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& can__id()
+    {return field_can__id;}
+  inline const OCTETSTRING& can__id() const
+    {return field_can__id;}
+  inline OCTETSTRING& can__pdu()
+    {return field_can__pdu;}
+  inline const OCTETSTRING& can__pdu() const
+    {return field_can__pdu;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+};
+
+class CAN__frame_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+CAN__frame_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const CAN__frame& other_value);
+void copy_template(const CAN__frame_template& other_value);
+
+public:
+CAN__frame_template();
+CAN__frame_template(template_sel other_value);
+CAN__frame_template(const CAN__frame& other_value);
+CAN__frame_template(const OPTIONAL<CAN__frame>& other_value);
+CAN__frame_template(const CAN__frame_template& other_value);
+~CAN__frame_template();
+CAN__frame_template& operator=(template_sel other_value);
+CAN__frame_template& operator=(const CAN__frame& other_value);
+CAN__frame_template& operator=(const OPTIONAL<CAN__frame>& other_value);
+CAN__frame_template& operator=(const CAN__frame_template& other_value);
+boolean match(const CAN__frame& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+CAN__frame valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+CAN__frame_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& can__id();
+const OCTETSTRING_template& can__id() const;
+OCTETSTRING_template& can__pdu();
+const OCTETSTRING_template& can__pdu() const;
+int size_of() const;
+void log() const;
+void log_match(const CAN__frame& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class CANFD__frame {
+  OCTETSTRING field_can__id;
+  BITSTRING field_can__flags;
+  OCTETSTRING field_can__pdu;
+public:
+  CANFD__frame();
+  CANFD__frame(const OCTETSTRING& par_can__id,
+    const BITSTRING& par_can__flags,
+    const OCTETSTRING& par_can__pdu);
+  CANFD__frame(const CANFD__frame& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  CANFD__frame& operator=(const CANFD__frame& other_value);
+  boolean operator==(const CANFD__frame& other_value) const;
+  inline boolean operator!=(const CANFD__frame& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& can__id()
+    {return field_can__id;}
+  inline const OCTETSTRING& can__id() const
+    {return field_can__id;}
+  inline BITSTRING& can__flags()
+    {return field_can__flags;}
+  inline const BITSTRING& can__flags() const
+    {return field_can__flags;}
+  inline OCTETSTRING& can__pdu()
+    {return field_can__pdu;}
+  inline const OCTETSTRING& can__pdu() const
+    {return field_can__pdu;}
+  inline int size_of() const
+    {return 3;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+};
+
+class CANFD__frame_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+CANFD__frame_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const CANFD__frame& other_value);
+void copy_template(const CANFD__frame_template& other_value);
+
+public:
+CANFD__frame_template();
+CANFD__frame_template(template_sel other_value);
+CANFD__frame_template(const CANFD__frame& other_value);
+CANFD__frame_template(const OPTIONAL<CANFD__frame>& other_value);
+CANFD__frame_template(const CANFD__frame_template& other_value);
+~CANFD__frame_template();
+CANFD__frame_template& operator=(template_sel other_value);
+CANFD__frame_template& operator=(const CANFD__frame& other_value);
+CANFD__frame_template& operator=(const OPTIONAL<CANFD__frame>& other_value);
+CANFD__frame_template& operator=(const CANFD__frame_template& other_value);
+boolean match(const CANFD__frame& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+CANFD__frame valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+CANFD__frame_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& can__id();
+const OCTETSTRING_template& can__id() const;
+BITSTRING_template& can__flags();
+const BITSTRING_template& can__flags() const;
+OCTETSTRING_template& can__pdu();
+const OCTETSTRING_template& can__pdu() const;
+int size_of() const;
+void log() const;
+void log_match(const CANFD__frame& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+
+/* Global variable declarations */
+
+extern const OCTETSTRING& CAN__EFF__FLAG;
+extern const OCTETSTRING& CAN__RTR__FLAG;
+extern const OCTETSTRING& CAN__ERR__FLAG;
+extern const OCTETSTRING& CAN__SFF__MASK;
+extern const OCTETSTRING& CAN__EFF__MASK;
+extern const OCTETSTRING& CAN__ERR__MASK;
+extern const OCTETSTRING_template& t__CAN__EFF__FLAG;
+extern const OCTETSTRING_template& t__CAN__SFF__FLAG;
+extern const OCTETSTRING_template& t__CAN__RTR__FLAG;
+extern const OCTETSTRING_template& t__CAN__ERR__FLAG;
+extern const TTCN_Typedescriptor_t AdresseFamily__enum_descr_;
+extern const INTEGER& AF__CAN;
+extern const TTCN_Typedescriptor_t ProtocolFamily__enum_descr_;
+extern const TTCN_Typedescriptor_t PF__CAN__protocols__enum_descr_;
+extern const INTEGER& CAN__MAX__DLEN;
+extern const INTEGER& CANFD__MAX__DLEN;
+extern const TTCN_RAWdescriptor_t CAN__id_raw_;
+extern const XERdescriptor_t CAN__id_xer_;
+extern const TTCN_OERdescriptor_t CAN__id_oer_;
+extern const TTCN_Typedescriptor_t CAN__id_descr_;
+extern const TTCN_RAWdescriptor_t CAN__flags_raw_;
+extern const XERdescriptor_t CAN__flags_xer_;
+extern const TTCN_OERdescriptor_t CAN__flags_oer_;
+extern const TTCN_Typedescriptor_t CAN__flags_descr_;
+extern const XERdescriptor_t CAN__PDU_xer_;
+extern const TTCN_OERdescriptor_t CAN__PDU_oer_;
+extern const TTCN_Typedescriptor_t CAN__PDU_descr_;
+extern const XERdescriptor_t CAN__frame_can__id_xer_;
+extern const TTCN_OERdescriptor_t CAN__frame_can__id_oer_;
+extern const TTCN_Typedescriptor_t CAN__frame_can__id_descr_;
+extern const XERdescriptor_t CAN__frame_can__pdu_xer_;
+extern const TTCN_OERdescriptor_t CAN__frame_can__pdu_oer_;
+extern const TTCN_Typedescriptor_t CAN__frame_can__pdu_descr_;
+extern const TTCN_Typedescriptor_t CAN__frame_descr_;
+extern const XERdescriptor_t CANFD__frame_can__id_xer_;
+extern const TTCN_OERdescriptor_t CANFD__frame_can__id_oer_;
+extern const TTCN_Typedescriptor_t CANFD__frame_can__id_descr_;
+extern const XERdescriptor_t CANFD__frame_can__flags_xer_;
+extern const TTCN_OERdescriptor_t CANFD__frame_can__flags_oer_;
+extern const TTCN_Typedescriptor_t CANFD__frame_can__flags_descr_;
+extern const XERdescriptor_t CANFD__frame_can__pdu_xer_;
+extern const TTCN_OERdescriptor_t CANFD__frame_can__pdu_oer_;
+extern const TTCN_Typedescriptor_t CANFD__frame_can__pdu_descr_;
+extern const TTCN_Typedescriptor_t CANFD__frame_descr_;
+extern TTCN_Module module_object;
+
+} /* end of namespace */
+
+#endif
diff --git a/demo/Can.o b/demo/Can.o
new file mode 100644
index 0000000..4dd131e
--- /dev/null
+++ b/demo/Can.o
Binary files differ
diff --git a/demo/CanError.cc b/demo/CanError.cc
new file mode 100644
index 0000000..dd52464
--- /dev/null
+++ b/demo/CanError.cc
@@ -0,0 +1,403 @@
+// This C++ source file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+/* Including header files */
+
+#include "CanError.hh"
+
+namespace CanError {
+
+/* Prototypes of static functions */
+
+static void pre_init_module();
+
+/* Literal string constants */
+
+static const unsigned char os_9_octets[] = { 0 },
+os_0_octets[] = { 0, 0, 0, 1 },
+os_1_octets[] = { 0, 0, 0, 2 },
+os_2_octets[] = { 0, 0, 0, 4 },
+os_3_octets[] = { 0, 0, 0, 8 },
+os_4_octets[] = { 0, 0, 0, 16 },
+os_5_octets[] = { 0, 0, 0, 32 },
+os_6_octets[] = { 0, 0, 0, 64 },
+os_7_octets[] = { 0, 0, 0, 128 },
+os_8_octets[] = { 0, 0, 1, 0 },
+os_10_octets[] = { 1 },
+os_11_octets[] = { 2 },
+os_18_octets[] = { 3 },
+os_12_octets[] = { 4 },
+os_20_octets[] = { 5 },
+os_19_octets[] = { 6 },
+os_21_octets[] = { 7 },
+os_13_octets[] = { 8 },
+os_26_octets[] = { 9 },
+os_28_octets[] = { 10 },
+os_27_octets[] = { 11 },
+os_24_octets[] = { 12 },
+os_25_octets[] = { 13 },
+os_23_octets[] = { 14 },
+os_22_octets[] = { 15 },
+os_14_octets[] = { 16 },
+os_33_octets[] = { 18 },
+os_29_octets[] = { 24 },
+os_30_octets[] = { 25 },
+os_32_octets[] = { 26 },
+os_31_octets[] = { 27 },
+os_15_octets[] = { 32 },
+os_16_octets[] = { 64 },
+os_34_octets[] = { 80 },
+os_35_octets[] = { 96 },
+os_36_octets[] = { 112 },
+os_17_octets[] = { 128 };
+static const OCTETSTRING os_9(1, os_9_octets),
+os_0(4, os_0_octets),
+os_1(4, os_1_octets),
+os_2(4, os_2_octets),
+os_3(4, os_3_octets),
+os_4(4, os_4_octets),
+os_5(4, os_5_octets),
+os_6(4, os_6_octets),
+os_7(4, os_7_octets),
+os_8(4, os_8_octets),
+os_10(1, os_10_octets),
+os_11(1, os_11_octets),
+os_18(1, os_18_octets),
+os_12(1, os_12_octets),
+os_20(1, os_20_octets),
+os_19(1, os_19_octets),
+os_21(1, os_21_octets),
+os_13(1, os_13_octets),
+os_26(1, os_26_octets),
+os_28(1, os_28_octets),
+os_27(1, os_27_octets),
+os_24(1, os_24_octets),
+os_25(1, os_25_octets),
+os_23(1, os_23_octets),
+os_22(1, os_22_octets),
+os_14(1, os_14_octets),
+os_33(1, os_33_octets),
+os_29(1, os_29_octets),
+os_30(1, os_30_octets),
+os_32(1, os_32_octets),
+os_31(1, os_31_octets),
+os_15(1, os_15_octets),
+os_16(1, os_16_octets),
+os_34(1, os_34_octets),
+os_35(1, os_35_octets),
+os_36(1, os_36_octets),
+os_17(1, os_17_octets);
+static const unsigned char module_checksum[] = { 0xa1, 0x48, 0x1f, 0x80, 0xd2, 0x74, 0xfa, 0xcc, 0xdb, 0xb8, 0x7b, 0x2f, 0x67, 0xc4, 0x12, 0xe5 };
+
+/* Global variable definitions */
+
+static INTEGER const_CAN__ERR__DLC;
+const INTEGER& CAN__ERR__DLC = const_CAN__ERR__DLC;
+static OCTETSTRING const_CAN__ERR__TX__TIMEOUT;
+const OCTETSTRING& CAN__ERR__TX__TIMEOUT = const_CAN__ERR__TX__TIMEOUT;
+static OCTETSTRING const_CAN__ERR__LOSTARB;
+const OCTETSTRING& CAN__ERR__LOSTARB = const_CAN__ERR__LOSTARB;
+static OCTETSTRING const_CAN__ERR__CRTL;
+const OCTETSTRING& CAN__ERR__CRTL = const_CAN__ERR__CRTL;
+static OCTETSTRING const_CAN__ERR__PROT;
+const OCTETSTRING& CAN__ERR__PROT = const_CAN__ERR__PROT;
+static OCTETSTRING const_CAN__ERR__TRX;
+const OCTETSTRING& CAN__ERR__TRX = const_CAN__ERR__TRX;
+static OCTETSTRING const_CAN__ERR__ACK;
+const OCTETSTRING& CAN__ERR__ACK = const_CAN__ERR__ACK;
+static OCTETSTRING const_CAN__ERR__BUSOFF;
+const OCTETSTRING& CAN__ERR__BUSOFF = const_CAN__ERR__BUSOFF;
+static OCTETSTRING const_CAN__ERR__BUSERROR;
+const OCTETSTRING& CAN__ERR__BUSERROR = const_CAN__ERR__BUSERROR;
+static OCTETSTRING const_CAN__ERR__RESTARTED;
+const OCTETSTRING& CAN__ERR__RESTARTED = const_CAN__ERR__RESTARTED;
+static OCTETSTRING const_CAN__ERR__LOSTARB__UNSPEC;
+const OCTETSTRING& CAN__ERR__LOSTARB__UNSPEC = const_CAN__ERR__LOSTARB__UNSPEC;
+static OCTETSTRING const_CAN__ERR__CRTL__UNSPEC;
+const OCTETSTRING& CAN__ERR__CRTL__UNSPEC = const_CAN__ERR__CRTL__UNSPEC;
+static OCTETSTRING const_CAN__ERR__CRTL__RX__OVERFLOW;
+const OCTETSTRING& CAN__ERR__CRTL__RX__OVERFLOW = const_CAN__ERR__CRTL__RX__OVERFLOW;
+static OCTETSTRING const_CAN__ERR__CRTL__TX__OVERFLOW;
+const OCTETSTRING& CAN__ERR__CRTL__TX__OVERFLOW = const_CAN__ERR__CRTL__TX__OVERFLOW;
+static OCTETSTRING const_CAN__ERR__CRTL__RX__WARNING;
+const OCTETSTRING& CAN__ERR__CRTL__RX__WARNING = const_CAN__ERR__CRTL__RX__WARNING;
+static OCTETSTRING const_CAN__ERR__CRTL__TX__WARNING;
+const OCTETSTRING& CAN__ERR__CRTL__TX__WARNING = const_CAN__ERR__CRTL__TX__WARNING;
+static OCTETSTRING const_CAN__ERR__CRTL__RX__PASSIVE;
+const OCTETSTRING& CAN__ERR__CRTL__RX__PASSIVE = const_CAN__ERR__CRTL__RX__PASSIVE;
+static OCTETSTRING const_CAN__ERR__CRTL__TX__PASSIVE;
+const OCTETSTRING& CAN__ERR__CRTL__TX__PASSIVE = const_CAN__ERR__CRTL__TX__PASSIVE;
+static OCTETSTRING const_CAN__ERR__CRTL__ACTIVE;
+const OCTETSTRING& CAN__ERR__CRTL__ACTIVE = const_CAN__ERR__CRTL__ACTIVE;
+static OCTETSTRING const_CAN__ERR__PROT__UNSPEC;
+const OCTETSTRING& CAN__ERR__PROT__UNSPEC = const_CAN__ERR__PROT__UNSPEC;
+static OCTETSTRING const_CAN__ERR__PROT__BIT;
+const OCTETSTRING& CAN__ERR__PROT__BIT = const_CAN__ERR__PROT__BIT;
+static OCTETSTRING const_CAN__ERR__PROT__FORM;
+const OCTETSTRING& CAN__ERR__PROT__FORM = const_CAN__ERR__PROT__FORM;
+static OCTETSTRING const_CAN__ERR__PROT__STUFF;
+const OCTETSTRING& CAN__ERR__PROT__STUFF = const_CAN__ERR__PROT__STUFF;
+static OCTETSTRING const_CAN__ERR__PROT__BIT0;
+const OCTETSTRING& CAN__ERR__PROT__BIT0 = const_CAN__ERR__PROT__BIT0;
+static OCTETSTRING const_CAN__ERR__PROT__BIT1;
+const OCTETSTRING& CAN__ERR__PROT__BIT1 = const_CAN__ERR__PROT__BIT1;
+static OCTETSTRING const_CAN__ERR__PROT__OVERLOAD;
+const OCTETSTRING& CAN__ERR__PROT__OVERLOAD = const_CAN__ERR__PROT__OVERLOAD;
+static OCTETSTRING const_CAN__ERR__PROT__ACTIVE;
+const OCTETSTRING& CAN__ERR__PROT__ACTIVE = const_CAN__ERR__PROT__ACTIVE;
+static OCTETSTRING const_CAN__ERR__PROT__TX;
+const OCTETSTRING& CAN__ERR__PROT__TX = const_CAN__ERR__PROT__TX;
+static OCTETSTRING const_CAN__ERR__PROT__LOC__UNSPEC;
+const OCTETSTRING& CAN__ERR__PROT__LOC__UNSPEC = const_CAN__ERR__PROT__LOC__UNSPEC;
+static OCTETSTRING const_CAN__ERR__PROT__LOC__SOF;
+const OCTETSTRING& CAN__ERR__PROT__LOC__SOF = const_CAN__ERR__PROT__LOC__SOF;
+static OCTETSTRING const_CAN__ERR__PROT__LOC__ID28__21;
+const OCTETSTRING& CAN__ERR__PROT__LOC__ID28__21 = const_CAN__ERR__PROT__LOC__ID28__21;
+static OCTETSTRING const_CAN__ERR__PROT__LOC__ID20__18;
+const OCTETSTRING& CAN__ERR__PROT__LOC__ID20__18 = const_CAN__ERR__PROT__LOC__ID20__18;
+static OCTETSTRING const_CAN__ERR__PROT__LOC__SRTR;
+const OCTETSTRING& CAN__ERR__PROT__LOC__SRTR = const_CAN__ERR__PROT__LOC__SRTR;
+static OCTETSTRING const_CAN__ERR__PROT__LOC__IDE;
+const OCTETSTRING& CAN__ERR__PROT__LOC__IDE = const_CAN__ERR__PROT__LOC__IDE;
+static OCTETSTRING const_CAN__ERR__PROT__LOC__ID17__13;
+const OCTETSTRING& CAN__ERR__PROT__LOC__ID17__13 = const_CAN__ERR__PROT__LOC__ID17__13;
+static OCTETSTRING const_CAN__ERR__PROT__LOC__ID12__05;
+const OCTETSTRING& CAN__ERR__PROT__LOC__ID12__05 = const_CAN__ERR__PROT__LOC__ID12__05;
+static OCTETSTRING const_CAN__ERR__PROT__LOC__ID04__00;
+const OCTETSTRING& CAN__ERR__PROT__LOC__ID04__00 = const_CAN__ERR__PROT__LOC__ID04__00;
+static OCTETSTRING const_CAN__ERR__PROT__LOC__RTR;
+const OCTETSTRING& CAN__ERR__PROT__LOC__RTR = const_CAN__ERR__PROT__LOC__RTR;
+static OCTETSTRING const_CAN__ERR__PROT__LOC__RES1;
+const OCTETSTRING& CAN__ERR__PROT__LOC__RES1 = const_CAN__ERR__PROT__LOC__RES1;
+static OCTETSTRING const_CAN__ERR__PROT__LOC__RES0;
+const OCTETSTRING& CAN__ERR__PROT__LOC__RES0 = const_CAN__ERR__PROT__LOC__RES0;
+static OCTETSTRING const_CAN__ERR__PROT__LOC__DLC;
+const OCTETSTRING& CAN__ERR__PROT__LOC__DLC = const_CAN__ERR__PROT__LOC__DLC;
+static OCTETSTRING const_CAN__ERR__PROT__LOC__DATA;
+const OCTETSTRING& CAN__ERR__PROT__LOC__DATA = const_CAN__ERR__PROT__LOC__DATA;
+static OCTETSTRING const_CAN__ERR__PROT__LOC__CRC__SEQ;
+const OCTETSTRING& CAN__ERR__PROT__LOC__CRC__SEQ = const_CAN__ERR__PROT__LOC__CRC__SEQ;
+static OCTETSTRING const_CAN__ERR__PROT__LOC__CRC__DEL;
+const OCTETSTRING& CAN__ERR__PROT__LOC__CRC__DEL = const_CAN__ERR__PROT__LOC__CRC__DEL;
+static OCTETSTRING const_CAN__ERR__PROT__LOC__ACK;
+const OCTETSTRING& CAN__ERR__PROT__LOC__ACK = const_CAN__ERR__PROT__LOC__ACK;
+static OCTETSTRING const_CAN__ERR__PROT__LOC__ACK__DEL;
+const OCTETSTRING& CAN__ERR__PROT__LOC__ACK__DEL = const_CAN__ERR__PROT__LOC__ACK__DEL;
+static OCTETSTRING const_CAN__ERR__PROT__LOC__EOF;
+const OCTETSTRING& CAN__ERR__PROT__LOC__EOF = const_CAN__ERR__PROT__LOC__EOF;
+static OCTETSTRING const_CAN__ERR__PROT__LOC__INTERM;
+const OCTETSTRING& CAN__ERR__PROT__LOC__INTERM = const_CAN__ERR__PROT__LOC__INTERM;
+static OCTETSTRING const_CAN__ERR__TRX__UNSPEC;
+const OCTETSTRING& CAN__ERR__TRX__UNSPEC = const_CAN__ERR__TRX__UNSPEC;
+static OCTETSTRING const_CAN__ERR__TRX__CANH__NO__WIRE;
+const OCTETSTRING& CAN__ERR__TRX__CANH__NO__WIRE = const_CAN__ERR__TRX__CANH__NO__WIRE;
+static OCTETSTRING const_CAN__ERR__TRX__CANH__SHORT__TO__BAT;
+const OCTETSTRING& CAN__ERR__TRX__CANH__SHORT__TO__BAT = const_CAN__ERR__TRX__CANH__SHORT__TO__BAT;
+static OCTETSTRING const_CAN__ERR__TRX__CANH__SHORT__TO__VCC;
+const OCTETSTRING& CAN__ERR__TRX__CANH__SHORT__TO__VCC = const_CAN__ERR__TRX__CANH__SHORT__TO__VCC;
+static OCTETSTRING const_CAN__ERR__TRX__CANH__SHORT__TO__GND;
+const OCTETSTRING& CAN__ERR__TRX__CANH__SHORT__TO__GND = const_CAN__ERR__TRX__CANH__SHORT__TO__GND;
+static OCTETSTRING const_CAN__ERR__TRX__CANL__NO__WIRE;
+const OCTETSTRING& CAN__ERR__TRX__CANL__NO__WIRE = const_CAN__ERR__TRX__CANL__NO__WIRE;
+static OCTETSTRING const_CAN__ERR__TRX__CANL__SHORT__TO__BAT;
+const OCTETSTRING& CAN__ERR__TRX__CANL__SHORT__TO__BAT = const_CAN__ERR__TRX__CANL__SHORT__TO__BAT;
+static OCTETSTRING const_CAN__ERR__TRX__CANL__SHORT__TO__VCC;
+const OCTETSTRING& CAN__ERR__TRX__CANL__SHORT__TO__VCC = const_CAN__ERR__TRX__CANL__SHORT__TO__VCC;
+static OCTETSTRING const_CAN__ERR__TRX__CANL__SHORT__TO__GND;
+const OCTETSTRING& CAN__ERR__TRX__CANL__SHORT__TO__GND = const_CAN__ERR__TRX__CANL__SHORT__TO__GND;
+static OCTETSTRING const_CAN__ERR__TRX__CANL__SHORT__TO__CANH;
+const OCTETSTRING& CAN__ERR__TRX__CANL__SHORT__TO__CANH = const_CAN__ERR__TRX__CANL__SHORT__TO__CANH;
+TTCN_Module module_object("CanError", __DATE__, __TIME__, module_checksum, pre_init_module, NULL, 0U, 4294967295U, 4294967295U, 4294967295U, NULL, 0LU, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+
+static const RuntimeVersionChecker ver_checker(  current_runtime_version.requires_major_version_6,
+  current_runtime_version.requires_minor_version_6,
+  current_runtime_version.requires_patch_level_0,  current_runtime_version.requires_runtime_1);
+
+/* Bodies of static functions */
+
+static void pre_init_module()
+{
+TTCN_Location current_location("../src/CanError.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "CanError");
+current_location.update_lineno(16);
+#line 16 "../src/CanError.ttcn"
+const_CAN__ERR__DLC = 8;
+current_location.update_lineno(19);
+#line 19 "../src/CanError.ttcn"
+const_CAN__ERR__TX__TIMEOUT = os_0;
+current_location.update_lineno(20);
+#line 20 "../src/CanError.ttcn"
+const_CAN__ERR__LOSTARB = os_1;
+current_location.update_lineno(21);
+#line 21 "../src/CanError.ttcn"
+const_CAN__ERR__CRTL = os_2;
+current_location.update_lineno(22);
+#line 22 "../src/CanError.ttcn"
+const_CAN__ERR__PROT = os_3;
+current_location.update_lineno(23);
+#line 23 "../src/CanError.ttcn"
+const_CAN__ERR__TRX = os_4;
+current_location.update_lineno(24);
+#line 24 "../src/CanError.ttcn"
+const_CAN__ERR__ACK = os_5;
+current_location.update_lineno(25);
+#line 25 "../src/CanError.ttcn"
+const_CAN__ERR__BUSOFF = os_6;
+current_location.update_lineno(26);
+#line 26 "../src/CanError.ttcn"
+const_CAN__ERR__BUSERROR = os_7;
+current_location.update_lineno(27);
+#line 27 "../src/CanError.ttcn"
+const_CAN__ERR__RESTARTED = os_8;
+current_location.update_lineno(30);
+#line 30 "../src/CanError.ttcn"
+const_CAN__ERR__LOSTARB__UNSPEC = os_9;
+current_location.update_lineno(34);
+#line 34 "../src/CanError.ttcn"
+const_CAN__ERR__CRTL__UNSPEC = os_9;
+current_location.update_lineno(35);
+#line 35 "../src/CanError.ttcn"
+const_CAN__ERR__CRTL__RX__OVERFLOW = os_10;
+current_location.update_lineno(36);
+#line 36 "../src/CanError.ttcn"
+const_CAN__ERR__CRTL__TX__OVERFLOW = os_11;
+current_location.update_lineno(37);
+#line 37 "../src/CanError.ttcn"
+const_CAN__ERR__CRTL__RX__WARNING = os_12;
+current_location.update_lineno(38);
+#line 38 "../src/CanError.ttcn"
+const_CAN__ERR__CRTL__TX__WARNING = os_13;
+current_location.update_lineno(39);
+#line 39 "../src/CanError.ttcn"
+const_CAN__ERR__CRTL__RX__PASSIVE = os_14;
+current_location.update_lineno(40);
+#line 40 "../src/CanError.ttcn"
+const_CAN__ERR__CRTL__TX__PASSIVE = os_15;
+current_location.update_lineno(43);
+#line 43 "../src/CanError.ttcn"
+const_CAN__ERR__CRTL__ACTIVE = os_16;
+current_location.update_lineno(46);
+#line 46 "../src/CanError.ttcn"
+const_CAN__ERR__PROT__UNSPEC = os_9;
+current_location.update_lineno(47);
+#line 47 "../src/CanError.ttcn"
+const_CAN__ERR__PROT__BIT = os_10;
+current_location.update_lineno(48);
+#line 48 "../src/CanError.ttcn"
+const_CAN__ERR__PROT__FORM = os_11;
+current_location.update_lineno(49);
+#line 49 "../src/CanError.ttcn"
+const_CAN__ERR__PROT__STUFF = os_12;
+current_location.update_lineno(50);
+#line 50 "../src/CanError.ttcn"
+const_CAN__ERR__PROT__BIT0 = os_13;
+current_location.update_lineno(51);
+#line 51 "../src/CanError.ttcn"
+const_CAN__ERR__PROT__BIT1 = os_14;
+current_location.update_lineno(52);
+#line 52 "../src/CanError.ttcn"
+const_CAN__ERR__PROT__OVERLOAD = os_15;
+current_location.update_lineno(53);
+#line 53 "../src/CanError.ttcn"
+const_CAN__ERR__PROT__ACTIVE = os_16;
+current_location.update_lineno(54);
+#line 54 "../src/CanError.ttcn"
+const_CAN__ERR__PROT__TX = os_17;
+current_location.update_lineno(57);
+#line 57 "../src/CanError.ttcn"
+const_CAN__ERR__PROT__LOC__UNSPEC = os_9;
+current_location.update_lineno(58);
+#line 58 "../src/CanError.ttcn"
+const_CAN__ERR__PROT__LOC__SOF = os_18;
+current_location.update_lineno(59);
+#line 59 "../src/CanError.ttcn"
+const_CAN__ERR__PROT__LOC__ID28__21 = os_11;
+current_location.update_lineno(60);
+#line 60 "../src/CanError.ttcn"
+const_CAN__ERR__PROT__LOC__ID20__18 = os_19;
+current_location.update_lineno(61);
+#line 61 "../src/CanError.ttcn"
+const_CAN__ERR__PROT__LOC__SRTR = os_12;
+current_location.update_lineno(62);
+#line 62 "../src/CanError.ttcn"
+const_CAN__ERR__PROT__LOC__IDE = os_20;
+current_location.update_lineno(63);
+#line 63 "../src/CanError.ttcn"
+const_CAN__ERR__PROT__LOC__ID17__13 = os_21;
+current_location.update_lineno(64);
+#line 64 "../src/CanError.ttcn"
+const_CAN__ERR__PROT__LOC__ID12__05 = os_22;
+current_location.update_lineno(65);
+#line 65 "../src/CanError.ttcn"
+const_CAN__ERR__PROT__LOC__ID04__00 = os_23;
+current_location.update_lineno(66);
+#line 66 "../src/CanError.ttcn"
+const_CAN__ERR__PROT__LOC__RTR = os_24;
+current_location.update_lineno(67);
+#line 67 "../src/CanError.ttcn"
+const_CAN__ERR__PROT__LOC__RES1 = os_25;
+current_location.update_lineno(68);
+#line 68 "../src/CanError.ttcn"
+const_CAN__ERR__PROT__LOC__RES0 = os_26;
+current_location.update_lineno(69);
+#line 69 "../src/CanError.ttcn"
+const_CAN__ERR__PROT__LOC__DLC = os_27;
+current_location.update_lineno(70);
+#line 70 "../src/CanError.ttcn"
+const_CAN__ERR__PROT__LOC__DATA = os_28;
+current_location.update_lineno(71);
+#line 71 "../src/CanError.ttcn"
+const_CAN__ERR__PROT__LOC__CRC__SEQ = os_13;
+current_location.update_lineno(72);
+#line 72 "../src/CanError.ttcn"
+const_CAN__ERR__PROT__LOC__CRC__DEL = os_29;
+current_location.update_lineno(73);
+#line 73 "../src/CanError.ttcn"
+const_CAN__ERR__PROT__LOC__ACK = os_30;
+current_location.update_lineno(74);
+#line 74 "../src/CanError.ttcn"
+const_CAN__ERR__PROT__LOC__ACK__DEL = os_31;
+current_location.update_lineno(75);
+#line 75 "../src/CanError.ttcn"
+const_CAN__ERR__PROT__LOC__EOF = os_32;
+current_location.update_lineno(76);
+#line 76 "../src/CanError.ttcn"
+const_CAN__ERR__PROT__LOC__INTERM = os_33;
+current_location.update_lineno(80);
+#line 80 "../src/CanError.ttcn"
+const_CAN__ERR__TRX__UNSPEC = os_9;
+current_location.update_lineno(81);
+#line 81 "../src/CanError.ttcn"
+const_CAN__ERR__TRX__CANH__NO__WIRE = os_12;
+current_location.update_lineno(82);
+#line 82 "../src/CanError.ttcn"
+const_CAN__ERR__TRX__CANH__SHORT__TO__BAT = os_20;
+current_location.update_lineno(83);
+#line 83 "../src/CanError.ttcn"
+const_CAN__ERR__TRX__CANH__SHORT__TO__VCC = os_19;
+current_location.update_lineno(84);
+#line 84 "../src/CanError.ttcn"
+const_CAN__ERR__TRX__CANH__SHORT__TO__GND = os_21;
+current_location.update_lineno(85);
+#line 85 "../src/CanError.ttcn"
+const_CAN__ERR__TRX__CANL__NO__WIRE = os_16;
+current_location.update_lineno(86);
+#line 86 "../src/CanError.ttcn"
+const_CAN__ERR__TRX__CANL__SHORT__TO__BAT = os_34;
+current_location.update_lineno(87);
+#line 87 "../src/CanError.ttcn"
+const_CAN__ERR__TRX__CANL__SHORT__TO__VCC = os_35;
+current_location.update_lineno(88);
+#line 88 "../src/CanError.ttcn"
+const_CAN__ERR__TRX__CANL__SHORT__TO__GND = os_36;
+current_location.update_lineno(89);
+#line 89 "../src/CanError.ttcn"
+const_CAN__ERR__TRX__CANL__SHORT__TO__CANH = os_17;
+}
+
+
+} /* end of namespace */
diff --git a/demo/CanError.d b/demo/CanError.d
new file mode 100644
index 0000000..26a6814
--- /dev/null
+++ b/demo/CanError.d
@@ -0,0 +1,58 @@
+CanError.o CanError.d : CanError.cc CanError.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TTCN3.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/version.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/cversion.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Types.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Vector.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Error.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Basetype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Encdec.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RInt.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON_Tokenizer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Logger.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Template.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Integer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ttcn3float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Boolean.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Null.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Optional.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Param_Types.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/memory.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/BER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Textbuf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Parameters.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XmlReader.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Objid.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Verdicttype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Component.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Bitstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RAW.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/CharCoding.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Hexstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Octetstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Any.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Universal_charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Struct_of.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Array.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_CharacterString.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_External.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TEXT.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_EmbeddedPDV.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Addfunc.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Timer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Port.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Event_Handler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/TitanLoggerApiSimple.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/PreGenRecordOf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Module_list.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Snapshot.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Default.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Runtime.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/OER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Profiler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ProfilerTools.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Debugger.hh
diff --git a/demo/CanError.hh b/demo/CanError.hh
new file mode 100644
index 0000000..e5d4076
--- /dev/null
+++ b/demo/CanError.hh
@@ -0,0 +1,97 @@
+// This C++ header file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+#ifndef CanError_HH
+#define CanError_HH
+
+#ifdef TITAN_RUNTIME_2
+#error Generated code does not match with used runtime.\
+ Code was generated without -R option but -DTITAN_RUNTIME_2 was used.
+#endif
+
+/* Header file includes */
+
+#include <TTCN3.hh>
+
+#if TTCN3_VERSION != 60600
+#error Version mismatch detected.\
+ Please check the version of the TTCN-3 compiler and the base library.\
+ Run make clean and rebuild the project if the version of the compiler changed recently.
+#endif
+
+#ifndef LINUX
+#error This file should be compiled on LINUX
+#endif
+
+namespace CanError {
+
+/* Global variable declarations */
+
+extern const INTEGER& CAN__ERR__DLC;
+extern const OCTETSTRING& CAN__ERR__TX__TIMEOUT;
+extern const OCTETSTRING& CAN__ERR__LOSTARB;
+extern const OCTETSTRING& CAN__ERR__CRTL;
+extern const OCTETSTRING& CAN__ERR__PROT;
+extern const OCTETSTRING& CAN__ERR__TRX;
+extern const OCTETSTRING& CAN__ERR__ACK;
+extern const OCTETSTRING& CAN__ERR__BUSOFF;
+extern const OCTETSTRING& CAN__ERR__BUSERROR;
+extern const OCTETSTRING& CAN__ERR__RESTARTED;
+extern const OCTETSTRING& CAN__ERR__LOSTARB__UNSPEC;
+extern const OCTETSTRING& CAN__ERR__CRTL__UNSPEC;
+extern const OCTETSTRING& CAN__ERR__CRTL__RX__OVERFLOW;
+extern const OCTETSTRING& CAN__ERR__CRTL__TX__OVERFLOW;
+extern const OCTETSTRING& CAN__ERR__CRTL__RX__WARNING;
+extern const OCTETSTRING& CAN__ERR__CRTL__TX__WARNING;
+extern const OCTETSTRING& CAN__ERR__CRTL__RX__PASSIVE;
+extern const OCTETSTRING& CAN__ERR__CRTL__TX__PASSIVE;
+extern const OCTETSTRING& CAN__ERR__CRTL__ACTIVE;
+extern const OCTETSTRING& CAN__ERR__PROT__UNSPEC;
+extern const OCTETSTRING& CAN__ERR__PROT__BIT;
+extern const OCTETSTRING& CAN__ERR__PROT__FORM;
+extern const OCTETSTRING& CAN__ERR__PROT__STUFF;
+extern const OCTETSTRING& CAN__ERR__PROT__BIT0;
+extern const OCTETSTRING& CAN__ERR__PROT__BIT1;
+extern const OCTETSTRING& CAN__ERR__PROT__OVERLOAD;
+extern const OCTETSTRING& CAN__ERR__PROT__ACTIVE;
+extern const OCTETSTRING& CAN__ERR__PROT__TX;
+extern const OCTETSTRING& CAN__ERR__PROT__LOC__UNSPEC;
+extern const OCTETSTRING& CAN__ERR__PROT__LOC__SOF;
+extern const OCTETSTRING& CAN__ERR__PROT__LOC__ID28__21;
+extern const OCTETSTRING& CAN__ERR__PROT__LOC__ID20__18;
+extern const OCTETSTRING& CAN__ERR__PROT__LOC__SRTR;
+extern const OCTETSTRING& CAN__ERR__PROT__LOC__IDE;
+extern const OCTETSTRING& CAN__ERR__PROT__LOC__ID17__13;
+extern const OCTETSTRING& CAN__ERR__PROT__LOC__ID12__05;
+extern const OCTETSTRING& CAN__ERR__PROT__LOC__ID04__00;
+extern const OCTETSTRING& CAN__ERR__PROT__LOC__RTR;
+extern const OCTETSTRING& CAN__ERR__PROT__LOC__RES1;
+extern const OCTETSTRING& CAN__ERR__PROT__LOC__RES0;
+extern const OCTETSTRING& CAN__ERR__PROT__LOC__DLC;
+extern const OCTETSTRING& CAN__ERR__PROT__LOC__DATA;
+extern const OCTETSTRING& CAN__ERR__PROT__LOC__CRC__SEQ;
+extern const OCTETSTRING& CAN__ERR__PROT__LOC__CRC__DEL;
+extern const OCTETSTRING& CAN__ERR__PROT__LOC__ACK;
+extern const OCTETSTRING& CAN__ERR__PROT__LOC__ACK__DEL;
+extern const OCTETSTRING& CAN__ERR__PROT__LOC__EOF;
+extern const OCTETSTRING& CAN__ERR__PROT__LOC__INTERM;
+extern const OCTETSTRING& CAN__ERR__TRX__UNSPEC;
+extern const OCTETSTRING& CAN__ERR__TRX__CANH__NO__WIRE;
+extern const OCTETSTRING& CAN__ERR__TRX__CANH__SHORT__TO__BAT;
+extern const OCTETSTRING& CAN__ERR__TRX__CANH__SHORT__TO__VCC;
+extern const OCTETSTRING& CAN__ERR__TRX__CANH__SHORT__TO__GND;
+extern const OCTETSTRING& CAN__ERR__TRX__CANL__NO__WIRE;
+extern const OCTETSTRING& CAN__ERR__TRX__CANL__SHORT__TO__BAT;
+extern const OCTETSTRING& CAN__ERR__TRX__CANL__SHORT__TO__VCC;
+extern const OCTETSTRING& CAN__ERR__TRX__CANL__SHORT__TO__GND;
+extern const OCTETSTRING& CAN__ERR__TRX__CANL__SHORT__TO__CANH;
+extern TTCN_Module module_object;
+
+} /* end of namespace */
+
+#endif
diff --git a/demo/CanError.o b/demo/CanError.o
new file mode 100644
index 0000000..c117f63
--- /dev/null
+++ b/demo/CanError.o
Binary files differ
diff --git a/demo/General_Types.cc b/demo/General_Types.cc
new file mode 100644
index 0000000..20b0bec
--- /dev/null
+++ b/demo/General_Types.cc
@@ -0,0 +1,12858 @@
+// This C++ source file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+/* Including header files */
+
+#include "General_Types.hh"
+
+namespace General__Types {
+
+/* Prototypes of static functions */
+
+static boolean init_comp_type(const char *component_type, boolean init_base_comps);
+
+/* Literal string constants */
+
+static const unsigned char module_checksum[] = { 0x38, 0xab, 0x27, 0xd4, 0xfd, 0x80, 0xda, 0x36, 0xf2, 0xea, 0x3a, 0x72, 0x9f, 0x2a, 0xd2, 0xb5 };
+
+/* Global variable definitions */
+
+const TTCN_RAWdescriptor_t BIT1n_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT1n_xer_ = { {"BIT1n>\n", "BIT1n>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT1n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT1n_descr_ = { "@General_Types.BIT1n", &BITSTRING_ber_, &BIT1n_raw_, NULL, &BIT1n_xer_, &BITSTRING_json_, &BIT1n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT2n_raw_ = {2,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT2n_xer_ = { {"BIT2n>\n", "BIT2n>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT2n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT2n_descr_ = { "@General_Types.BIT2n", &BITSTRING_ber_, &BIT2n_raw_, NULL, &BIT2n_xer_, &BITSTRING_json_, &BIT2n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT3n_raw_ = {3,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT3n_xer_ = { {"BIT3n>\n", "BIT3n>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT3n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT3n_descr_ = { "@General_Types.BIT3n", &BITSTRING_ber_, &BIT3n_raw_, NULL, &BIT3n_xer_, &BITSTRING_json_, &BIT3n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT4n_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,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT4n_xer_ = { {"BIT4n>\n", "BIT4n>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT4n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT4n_descr_ = { "@General_Types.BIT4n", &BITSTRING_ber_, &BIT4n_raw_, NULL, &BIT4n_xer_, &BITSTRING_json_, &BIT4n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT5n_raw_ = {5,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT5n_xer_ = { {"BIT5n>\n", "BIT5n>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT5n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT5n_descr_ = { "@General_Types.BIT5n", &BITSTRING_ber_, &BIT5n_raw_, NULL, &BIT5n_xer_, &BITSTRING_json_, &BIT5n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT6n_raw_ = {6,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT6n_xer_ = { {"BIT6n>\n", "BIT6n>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT6n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT6n_descr_ = { "@General_Types.BIT6n", &BITSTRING_ber_, &BIT6n_raw_, NULL, &BIT6n_xer_, &BITSTRING_json_, &BIT6n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT7n_raw_ = {7,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT7n_xer_ = { {"BIT7n>\n", "BIT7n>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT7n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT7n_descr_ = { "@General_Types.BIT7n", &BITSTRING_ber_, &BIT7n_raw_, NULL, &BIT7n_xer_, &BITSTRING_json_, &BIT7n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT8n_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,NULL,false};
+const XERdescriptor_t       BIT8n_xer_ = { {"BIT8n>\n", "BIT8n>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT8n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT8n_descr_ = { "@General_Types.BIT8n", &BITSTRING_ber_, &BIT8n_raw_, NULL, &BIT8n_xer_, &BITSTRING_json_, &BIT8n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT9n_raw_ = {9,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT9n_xer_ = { {"BIT9n>\n", "BIT9n>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT9n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT9n_descr_ = { "@General_Types.BIT9n", &BITSTRING_ber_, &BIT9n_raw_, NULL, &BIT9n_xer_, &BITSTRING_json_, &BIT9n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT12n_raw_ = {12,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT12n_xer_ = { {"BIT12n>\n", "BIT12n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT12n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT12n_descr_ = { "@General_Types.BIT12n", &BITSTRING_ber_, &BIT12n_raw_, NULL, &BIT12n_xer_, &BITSTRING_json_, &BIT12n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT14n_raw_ = {14,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT14n_xer_ = { {"BIT14n>\n", "BIT14n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT14n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT14n_descr_ = { "@General_Types.BIT14n", &BITSTRING_ber_, &BIT14n_raw_, NULL, &BIT14n_xer_, &BITSTRING_json_, &BIT14n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT15n_raw_ = {15,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT15n_xer_ = { {"BIT15n>\n", "BIT15n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT15n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT15n_descr_ = { "@General_Types.BIT15n", &BITSTRING_ber_, &BIT15n_raw_, NULL, &BIT15n_xer_, &BITSTRING_json_, &BIT15n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT16n_raw_ = {16,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT16n_xer_ = { {"BIT16n>\n", "BIT16n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT16n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT16n_descr_ = { "@General_Types.BIT16n", &BITSTRING_ber_, &BIT16n_raw_, NULL, &BIT16n_xer_, &BITSTRING_json_, &BIT16n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT56n_raw_ = {56,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT56n_xer_ = { {"BIT56n>\n", "BIT56n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT56n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT56n_descr_ = { "@General_Types.BIT56n", &BITSTRING_ber_, &BIT56n_raw_, NULL, &BIT56n_xer_, &BITSTRING_json_, &BIT56n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT14__24n_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT14__24n_xer_ = { {"BIT14_24n>\n", "BIT14_24n>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT14__24n_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT14__24n_descr_ = { "@General_Types.BIT14_24n", &BITSTRING_ber_, &BIT14__24n_raw_, NULL, &BIT14__24n_xer_, &BITSTRING_json_, &BIT14__24n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT1np_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT1np_xer_ = { {"BIT1np>\n", "BIT1np>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT1np_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT1np_descr_ = { "@General_Types.BIT1np", &BITSTRING_ber_, &BIT1np_raw_, NULL, &BIT1np_xer_, &BITSTRING_json_, &BIT1np_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT2np_raw_ = {2,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT2np_xer_ = { {"BIT2np>\n", "BIT2np>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT2np_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT2np_descr_ = { "@General_Types.BIT2np", &BITSTRING_ber_, &BIT2np_raw_, NULL, &BIT2np_xer_, &BITSTRING_json_, &BIT2np_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT3np_raw_ = {3,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT3np_xer_ = { {"BIT3np>\n", "BIT3np>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT3np_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT3np_descr_ = { "@General_Types.BIT3np", &BITSTRING_ber_, &BIT3np_raw_, NULL, &BIT3np_xer_, &BITSTRING_json_, &BIT3np_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT4np_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,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT4np_xer_ = { {"BIT4np>\n", "BIT4np>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT4np_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT4np_descr_ = { "@General_Types.BIT4np", &BITSTRING_ber_, &BIT4np_raw_, NULL, &BIT4np_xer_, &BITSTRING_json_, &BIT4np_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT5np_raw_ = {5,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT5np_xer_ = { {"BIT5np>\n", "BIT5np>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT5np_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT5np_descr_ = { "@General_Types.BIT5np", &BITSTRING_ber_, &BIT5np_raw_, NULL, &BIT5np_xer_, &BITSTRING_json_, &BIT5np_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT6np_raw_ = {6,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT6np_xer_ = { {"BIT6np>\n", "BIT6np>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT6np_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT6np_descr_ = { "@General_Types.BIT6np", &BITSTRING_ber_, &BIT6np_raw_, NULL, &BIT6np_xer_, &BITSTRING_json_, &BIT6np_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT7np_raw_ = {7,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT7np_xer_ = { {"BIT7np>\n", "BIT7np>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT7np_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT7np_descr_ = { "@General_Types.BIT7np", &BITSTRING_ber_, &BIT7np_raw_, NULL, &BIT7np_xer_, &BITSTRING_json_, &BIT7np_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT15np_raw_ = {15,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT15np_xer_ = { {"BIT15np>\n", "BIT15np>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT15np_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT15np_descr_ = { "@General_Types.BIT15np", &BITSTRING_ber_, &BIT15np_raw_, NULL, &BIT15np_xer_, &BITSTRING_json_, &BIT15np_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT1_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT1_xer_ = { {"BIT1>\n", "BIT1>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT1_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT1_descr_ = { "@General_Types.BIT1", &BITSTRING_ber_, &BIT1_raw_, NULL, &BIT1_xer_, &BITSTRING_json_, &BIT1_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT2_raw_ = {2,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,2,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT2_xer_ = { {"BIT2>\n", "BIT2>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT2_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT2_descr_ = { "@General_Types.BIT2", &BITSTRING_ber_, &BIT2_raw_, NULL, &BIT2_xer_, &BITSTRING_json_, &BIT2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT3_raw_ = {3,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,3,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT3_xer_ = { {"BIT3>\n", "BIT3>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT3_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT3_descr_ = { "@General_Types.BIT3", &BITSTRING_ber_, &BIT3_raw_, NULL, &BIT3_xer_, &BITSTRING_json_, &BIT3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT4_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,NULL,false};
+const XERdescriptor_t       BIT4_xer_ = { {"BIT4>\n", "BIT4>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT4_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT4_descr_ = { "@General_Types.BIT4", &BITSTRING_ber_, &BIT4_raw_, NULL, &BIT4_xer_, &BITSTRING_json_, &BIT4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT5_raw_ = {5,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,5,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT5_xer_ = { {"BIT5>\n", "BIT5>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT5_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT5_descr_ = { "@General_Types.BIT5", &BITSTRING_ber_, &BIT5_raw_, NULL, &BIT5_xer_, &BITSTRING_json_, &BIT5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT6_raw_ = {6,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,6,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT6_xer_ = { {"BIT6>\n", "BIT6>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT6_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT6_descr_ = { "@General_Types.BIT6", &BITSTRING_ber_, &BIT6_raw_, NULL, &BIT6_xer_, &BITSTRING_json_, &BIT6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT7_raw_ = {7,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,7,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT7_xer_ = { {"BIT7>\n", "BIT7>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT7_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT7_descr_ = { "@General_Types.BIT7", &BITSTRING_ber_, &BIT7_raw_, NULL, &BIT7_xer_, &BITSTRING_json_, &BIT7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT8_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,8,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT8_xer_ = { {"BIT8>\n", "BIT8>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT8_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT8_descr_ = { "@General_Types.BIT8", &BITSTRING_ber_, &BIT8_raw_, NULL, &BIT8_xer_, &BITSTRING_json_, &BIT8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT9_raw_ = {9,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,9,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT9_xer_ = { {"BIT9>\n", "BIT9>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT9_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT9_descr_ = { "@General_Types.BIT9", &BITSTRING_ber_, &BIT9_raw_, NULL, &BIT9_xer_, &BITSTRING_json_, &BIT9_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT10_raw_ = {10,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,10,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT10_xer_ = { {"BIT10>\n", "BIT10>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT10_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT10_descr_ = { "@General_Types.BIT10", &BITSTRING_ber_, &BIT10_raw_, NULL, &BIT10_xer_, &BITSTRING_json_, &BIT10_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT11_raw_ = {11,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,11,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT11_xer_ = { {"BIT11>\n", "BIT11>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT11_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT11_descr_ = { "@General_Types.BIT11", &BITSTRING_ber_, &BIT11_raw_, NULL, &BIT11_xer_, &BITSTRING_json_, &BIT11_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT12_raw_ = {12,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,12,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT12_xer_ = { {"BIT12>\n", "BIT12>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT12_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT12_descr_ = { "@General_Types.BIT12", &BITSTRING_ber_, &BIT12_raw_, NULL, &BIT12_xer_, &BITSTRING_json_, &BIT12_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT14_raw_ = {14,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,14,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT14_xer_ = { {"BIT14>\n", "BIT14>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT14_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT14_descr_ = { "@General_Types.BIT14", &BITSTRING_ber_, &BIT14_raw_, NULL, &BIT14_xer_, &BITSTRING_json_, &BIT14_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT15_raw_ = {15,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,15,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT15_xer_ = { {"BIT15>\n", "BIT15>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT15_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT15_descr_ = { "@General_Types.BIT15", &BITSTRING_ber_, &BIT15_raw_, NULL, &BIT15_xer_, &BITSTRING_json_, &BIT15_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT16_raw_ = {16,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,16,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT16_xer_ = { {"BIT16>\n", "BIT16>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT16_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT16_descr_ = { "@General_Types.BIT16", &BITSTRING_ber_, &BIT16_raw_, NULL, &BIT16_xer_, &BITSTRING_json_, &BIT16_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT24_raw_ = {24,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,24,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT24_xer_ = { {"BIT24>\n", "BIT24>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT24_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT24_descr_ = { "@General_Types.BIT24", &BITSTRING_ber_, &BIT24_raw_, NULL, &BIT24_xer_, &BITSTRING_json_, &BIT24_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT31_raw_ = {31,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,31,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT31_xer_ = { {"BIT31>\n", "BIT31>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT31_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT31_descr_ = { "@General_Types.BIT31", &BITSTRING_ber_, &BIT31_raw_, NULL, &BIT31_xer_, &BITSTRING_json_, &BIT31_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT56_raw_ = {56,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,56,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT56_xer_ = { {"BIT56>\n", "BIT56>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT56_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT56_descr_ = { "@General_Types.BIT56", &BITSTRING_ber_, &BIT56_raw_, NULL, &BIT56_xer_, &BITSTRING_json_, &BIT56_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t Bitstrings_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for Bitstrings
+const TTCN_Typedescriptor_t Bitstrings_descr_ = { "@General_Types.Bitstrings", NULL, &Bitstrings_raw_, NULL, NULL, NULL, NULL, &BITSTRING_descr_, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       Bitstrings_0_xer_ = { {"BITSTRING>\n", "BITSTRING>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t Bitstrings_0_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t Bitstrings_0_descr_ = { "@General_Types.Bitstrings.<oftype>", &BITSTRING_ber_, &BITSTRING_raw_, NULL, &Bitstrings_0_xer_, &BITSTRING_json_, &Bitstrings_0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_Typedescriptor_t& BitstringList_descr_ = Bitstrings_descr_;
+const TTCN_RAWdescriptor_t BitstringSet_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for BitstringSet
+const TTCN_Typedescriptor_t BitstringSet_descr_ = { "@General_Types.BitstringSet", NULL, &BitstringSet_raw_, NULL, NULL, NULL, NULL, &BITSTRING_descr_, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       BitstringSet_0_xer_ = { {"BITSTRING>\n", "BITSTRING>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BitstringSet_0_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BitstringSet_0_descr_ = { "@General_Types.BitstringSet.<oftype>", &BITSTRING_ber_, &BITSTRING_raw_, NULL, &BitstringSet_0_xer_, &BITSTRING_json_, &BitstringSet_0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT0n_raw_ = {0,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,NULL,false};
+const XERdescriptor_t       OCT0n_xer_ = { {"OCT0n>\n", "OCT0n>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT0n_oer_ext_arr_[0] = {};
+const int OCT0n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT0n_oer_ = { -1, TRUE, 0, FALSE, 0, 0, OCT0n_oer_ext_arr_, 0, OCT0n_oer_p_};
+const TTCN_Typedescriptor_t OCT0n_descr_ = { "@General_Types.OCT0n", &OCTETSTRING_ber_, &OCT0n_raw_, &OCTETSTRING_text_, &OCT0n_xer_, &OCTETSTRING_json_, &OCT0n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT1n_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       OCT1n_xer_ = { {"OCT1n>\n", "OCT1n>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT1n_oer_ext_arr_[0] = {};
+const int OCT1n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT1n_oer_ = { -1, TRUE, 1, FALSE, 0, 0, OCT1n_oer_ext_arr_, 0, OCT1n_oer_p_};
+const TTCN_Typedescriptor_t OCT1n_descr_ = { "@General_Types.OCT1n", &OCTETSTRING_ber_, &OCT1n_raw_, &OCTETSTRING_text_, &OCT1n_xer_, &OCTETSTRING_json_, &OCT1n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT2n_raw_ = {16,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,NULL,false};
+const XERdescriptor_t       OCT2n_xer_ = { {"OCT2n>\n", "OCT2n>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT2n_oer_ext_arr_[0] = {};
+const int OCT2n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT2n_oer_ = { -1, TRUE, 2, FALSE, 0, 0, OCT2n_oer_ext_arr_, 0, OCT2n_oer_p_};
+const TTCN_Typedescriptor_t OCT2n_descr_ = { "@General_Types.OCT2n", &OCTETSTRING_ber_, &OCT2n_raw_, &OCTETSTRING_text_, &OCT2n_xer_, &OCTETSTRING_json_, &OCT2n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT3n_raw_ = {24,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,NULL,false};
+const XERdescriptor_t       OCT3n_xer_ = { {"OCT3n>\n", "OCT3n>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT3n_oer_ext_arr_[0] = {};
+const int OCT3n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT3n_oer_ = { -1, TRUE, 3, FALSE, 0, 0, OCT3n_oer_ext_arr_, 0, OCT3n_oer_p_};
+const TTCN_Typedescriptor_t OCT3n_descr_ = { "@General_Types.OCT3n", &OCTETSTRING_ber_, &OCT3n_raw_, &OCTETSTRING_text_, &OCT3n_xer_, &OCTETSTRING_json_, &OCT3n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT4n_raw_ = {32,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,NULL,false};
+const XERdescriptor_t       OCT4n_xer_ = { {"OCT4n>\n", "OCT4n>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT4n_oer_ext_arr_[0] = {};
+const int OCT4n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT4n_oer_ = { -1, TRUE, 4, FALSE, 0, 0, OCT4n_oer_ext_arr_, 0, OCT4n_oer_p_};
+const TTCN_Typedescriptor_t OCT4n_descr_ = { "@General_Types.OCT4n", &OCTETSTRING_ber_, &OCT4n_raw_, &OCTETSTRING_text_, &OCT4n_xer_, &OCTETSTRING_json_, &OCT4n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT5n_raw_ = {40,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,NULL,false};
+const XERdescriptor_t       OCT5n_xer_ = { {"OCT5n>\n", "OCT5n>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT5n_oer_ext_arr_[0] = {};
+const int OCT5n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT5n_oer_ = { -1, TRUE, 5, FALSE, 0, 0, OCT5n_oer_ext_arr_, 0, OCT5n_oer_p_};
+const TTCN_Typedescriptor_t OCT5n_descr_ = { "@General_Types.OCT5n", &OCTETSTRING_ber_, &OCT5n_raw_, &OCTETSTRING_text_, &OCT5n_xer_, &OCTETSTRING_json_, &OCT5n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT6n_raw_ = {48,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,NULL,false};
+const XERdescriptor_t       OCT6n_xer_ = { {"OCT6n>\n", "OCT6n>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT6n_oer_ext_arr_[0] = {};
+const int OCT6n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT6n_oer_ = { -1, TRUE, 6, FALSE, 0, 0, OCT6n_oer_ext_arr_, 0, OCT6n_oer_p_};
+const TTCN_Typedescriptor_t OCT6n_descr_ = { "@General_Types.OCT6n", &OCTETSTRING_ber_, &OCT6n_raw_, &OCTETSTRING_text_, &OCT6n_xer_, &OCTETSTRING_json_, &OCT6n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT7n_raw_ = {56,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,NULL,false};
+const XERdescriptor_t       OCT7n_xer_ = { {"OCT7n>\n", "OCT7n>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT7n_oer_ext_arr_[0] = {};
+const int OCT7n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT7n_oer_ = { -1, TRUE, 7, FALSE, 0, 0, OCT7n_oer_ext_arr_, 0, OCT7n_oer_p_};
+const TTCN_Typedescriptor_t OCT7n_descr_ = { "@General_Types.OCT7n", &OCTETSTRING_ber_, &OCT7n_raw_, &OCTETSTRING_text_, &OCT7n_xer_, &OCTETSTRING_json_, &OCT7n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT8n_raw_ = {64,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,NULL,false};
+const XERdescriptor_t       OCT8n_xer_ = { {"OCT8n>\n", "OCT8n>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT8n_oer_ext_arr_[0] = {};
+const int OCT8n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT8n_oer_ = { -1, TRUE, 8, FALSE, 0, 0, OCT8n_oer_ext_arr_, 0, OCT8n_oer_p_};
+const TTCN_Typedescriptor_t OCT8n_descr_ = { "@General_Types.OCT8n", &OCTETSTRING_ber_, &OCT8n_raw_, &OCTETSTRING_text_, &OCT8n_xer_, &OCTETSTRING_json_, &OCT8n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT9n_raw_ = {72,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,NULL,false};
+const XERdescriptor_t       OCT9n_xer_ = { {"OCT9n>\n", "OCT9n>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT9n_oer_ext_arr_[0] = {};
+const int OCT9n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT9n_oer_ = { -1, TRUE, 9, FALSE, 0, 0, OCT9n_oer_ext_arr_, 0, OCT9n_oer_p_};
+const TTCN_Typedescriptor_t OCT9n_descr_ = { "@General_Types.OCT9n", &OCTETSTRING_ber_, &OCT9n_raw_, &OCTETSTRING_text_, &OCT9n_xer_, &OCTETSTRING_json_, &OCT9n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT10n_raw_ = {80,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,NULL,false};
+const XERdescriptor_t       OCT10n_xer_ = { {"OCT10n>\n", "OCT10n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT10n_oer_ext_arr_[0] = {};
+const int OCT10n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT10n_oer_ = { -1, TRUE, 10, FALSE, 0, 0, OCT10n_oer_ext_arr_, 0, OCT10n_oer_p_};
+const TTCN_Typedescriptor_t OCT10n_descr_ = { "@General_Types.OCT10n", &OCTETSTRING_ber_, &OCT10n_raw_, &OCTETSTRING_text_, &OCT10n_xer_, &OCTETSTRING_json_, &OCT10n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT11n_raw_ = {88,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,NULL,false};
+const XERdescriptor_t       OCT11n_xer_ = { {"OCT11n>\n", "OCT11n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT11n_oer_ext_arr_[0] = {};
+const int OCT11n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT11n_oer_ = { -1, TRUE, 11, FALSE, 0, 0, OCT11n_oer_ext_arr_, 0, OCT11n_oer_p_};
+const TTCN_Typedescriptor_t OCT11n_descr_ = { "@General_Types.OCT11n", &OCTETSTRING_ber_, &OCT11n_raw_, &OCTETSTRING_text_, &OCT11n_xer_, &OCTETSTRING_json_, &OCT11n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT12n_raw_ = {96,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,NULL,false};
+const XERdescriptor_t       OCT12n_xer_ = { {"OCT12n>\n", "OCT12n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT12n_oer_ext_arr_[0] = {};
+const int OCT12n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT12n_oer_ = { -1, TRUE, 12, FALSE, 0, 0, OCT12n_oer_ext_arr_, 0, OCT12n_oer_p_};
+const TTCN_Typedescriptor_t OCT12n_descr_ = { "@General_Types.OCT12n", &OCTETSTRING_ber_, &OCT12n_raw_, &OCTETSTRING_text_, &OCT12n_xer_, &OCTETSTRING_json_, &OCT12n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT13n_raw_ = {104,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,NULL,false};
+const XERdescriptor_t       OCT13n_xer_ = { {"OCT13n>\n", "OCT13n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT13n_oer_ext_arr_[0] = {};
+const int OCT13n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT13n_oer_ = { -1, TRUE, 13, FALSE, 0, 0, OCT13n_oer_ext_arr_, 0, OCT13n_oer_p_};
+const TTCN_Typedescriptor_t OCT13n_descr_ = { "@General_Types.OCT13n", &OCTETSTRING_ber_, &OCT13n_raw_, &OCTETSTRING_text_, &OCT13n_xer_, &OCTETSTRING_json_, &OCT13n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT14n_raw_ = {112,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,NULL,false};
+const XERdescriptor_t       OCT14n_xer_ = { {"OCT14n>\n", "OCT14n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT14n_oer_ext_arr_[0] = {};
+const int OCT14n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT14n_oer_ = { -1, TRUE, 14, FALSE, 0, 0, OCT14n_oer_ext_arr_, 0, OCT14n_oer_p_};
+const TTCN_Typedescriptor_t OCT14n_descr_ = { "@General_Types.OCT14n", &OCTETSTRING_ber_, &OCT14n_raw_, &OCTETSTRING_text_, &OCT14n_xer_, &OCTETSTRING_json_, &OCT14n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT15n_raw_ = {120,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,NULL,false};
+const XERdescriptor_t       OCT15n_xer_ = { {"OCT15n>\n", "OCT15n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT15n_oer_ext_arr_[0] = {};
+const int OCT15n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT15n_oer_ = { -1, TRUE, 15, FALSE, 0, 0, OCT15n_oer_ext_arr_, 0, OCT15n_oer_p_};
+const TTCN_Typedescriptor_t OCT15n_descr_ = { "@General_Types.OCT15n", &OCTETSTRING_ber_, &OCT15n_raw_, &OCTETSTRING_text_, &OCT15n_xer_, &OCTETSTRING_json_, &OCT15n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT16n_raw_ = {128,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,NULL,false};
+const XERdescriptor_t       OCT16n_xer_ = { {"OCT16n>\n", "OCT16n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT16n_oer_ext_arr_[0] = {};
+const int OCT16n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT16n_oer_ = { -1, TRUE, 16, FALSE, 0, 0, OCT16n_oer_ext_arr_, 0, OCT16n_oer_p_};
+const TTCN_Typedescriptor_t OCT16n_descr_ = { "@General_Types.OCT16n", &OCTETSTRING_ber_, &OCT16n_raw_, &OCTETSTRING_text_, &OCT16n_xer_, &OCTETSTRING_json_, &OCT16n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT17n_raw_ = {136,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,NULL,false};
+const XERdescriptor_t       OCT17n_xer_ = { {"OCT17n>\n", "OCT17n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT17n_oer_ext_arr_[0] = {};
+const int OCT17n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT17n_oer_ = { -1, TRUE, 17, FALSE, 0, 0, OCT17n_oer_ext_arr_, 0, OCT17n_oer_p_};
+const TTCN_Typedescriptor_t OCT17n_descr_ = { "@General_Types.OCT17n", &OCTETSTRING_ber_, &OCT17n_raw_, &OCTETSTRING_text_, &OCT17n_xer_, &OCTETSTRING_json_, &OCT17n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT18n_raw_ = {144,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,NULL,false};
+const XERdescriptor_t       OCT18n_xer_ = { {"OCT18n>\n", "OCT18n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT18n_oer_ext_arr_[0] = {};
+const int OCT18n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT18n_oer_ = { -1, TRUE, 18, FALSE, 0, 0, OCT18n_oer_ext_arr_, 0, OCT18n_oer_p_};
+const TTCN_Typedescriptor_t OCT18n_descr_ = { "@General_Types.OCT18n", &OCTETSTRING_ber_, &OCT18n_raw_, &OCTETSTRING_text_, &OCT18n_xer_, &OCTETSTRING_json_, &OCT18n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT19n_raw_ = {152,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,NULL,false};
+const XERdescriptor_t       OCT19n_xer_ = { {"OCT19n>\n", "OCT19n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT19n_oer_ext_arr_[0] = {};
+const int OCT19n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT19n_oer_ = { -1, TRUE, 19, FALSE, 0, 0, OCT19n_oer_ext_arr_, 0, OCT19n_oer_p_};
+const TTCN_Typedescriptor_t OCT19n_descr_ = { "@General_Types.OCT19n", &OCTETSTRING_ber_, &OCT19n_raw_, &OCTETSTRING_text_, &OCT19n_xer_, &OCTETSTRING_json_, &OCT19n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT20n_raw_ = {160,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,NULL,false};
+const XERdescriptor_t       OCT20n_xer_ = { {"OCT20n>\n", "OCT20n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT20n_oer_ext_arr_[0] = {};
+const int OCT20n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT20n_oer_ = { -1, TRUE, 20, FALSE, 0, 0, OCT20n_oer_ext_arr_, 0, OCT20n_oer_p_};
+const TTCN_Typedescriptor_t OCT20n_descr_ = { "@General_Types.OCT20n", &OCTETSTRING_ber_, &OCT20n_raw_, &OCTETSTRING_text_, &OCT20n_xer_, &OCTETSTRING_json_, &OCT20n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT28n_raw_ = {224,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,NULL,false};
+const XERdescriptor_t       OCT28n_xer_ = { {"OCT28n>\n", "OCT28n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT28n_oer_ext_arr_[0] = {};
+const int OCT28n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT28n_oer_ = { -1, TRUE, 28, FALSE, 0, 0, OCT28n_oer_ext_arr_, 0, OCT28n_oer_p_};
+const TTCN_Typedescriptor_t OCT28n_descr_ = { "@General_Types.OCT28n", &OCTETSTRING_ber_, &OCT28n_raw_, &OCTETSTRING_text_, &OCT28n_xer_, &OCTETSTRING_json_, &OCT28n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT32n_raw_ = {256,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,NULL,false};
+const XERdescriptor_t       OCT32n_xer_ = { {"OCT32n>\n", "OCT32n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT32n_oer_ext_arr_[0] = {};
+const int OCT32n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT32n_oer_ = { -1, TRUE, 32, FALSE, 0, 0, OCT32n_oer_ext_arr_, 0, OCT32n_oer_p_};
+const TTCN_Typedescriptor_t OCT32n_descr_ = { "@General_Types.OCT32n", &OCTETSTRING_ber_, &OCT32n_raw_, &OCTETSTRING_text_, &OCT32n_xer_, &OCTETSTRING_json_, &OCT32n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT34n_raw_ = {272,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,NULL,false};
+const XERdescriptor_t       OCT34n_xer_ = { {"OCT34n>\n", "OCT34n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT34n_oer_ext_arr_[0] = {};
+const int OCT34n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT34n_oer_ = { -1, TRUE, 34, FALSE, 0, 0, OCT34n_oer_ext_arr_, 0, OCT34n_oer_p_};
+const TTCN_Typedescriptor_t OCT34n_descr_ = { "@General_Types.OCT34n", &OCTETSTRING_ber_, &OCT34n_raw_, &OCTETSTRING_text_, &OCT34n_xer_, &OCTETSTRING_json_, &OCT34n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT46n_raw_ = {368,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,NULL,false};
+const XERdescriptor_t       OCT46n_xer_ = { {"OCT46n>\n", "OCT46n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT46n_oer_ext_arr_[0] = {};
+const int OCT46n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT46n_oer_ = { -1, TRUE, 46, FALSE, 0, 0, OCT46n_oer_ext_arr_, 0, OCT46n_oer_p_};
+const TTCN_Typedescriptor_t OCT46n_descr_ = { "@General_Types.OCT46n", &OCTETSTRING_ber_, &OCT46n_raw_, &OCTETSTRING_text_, &OCT46n_xer_, &OCTETSTRING_json_, &OCT46n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT50n_raw_ = {400,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,NULL,false};
+const XERdescriptor_t       OCT50n_xer_ = { {"OCT50n>\n", "OCT50n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT50n_oer_ext_arr_[0] = {};
+const int OCT50n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT50n_oer_ = { -1, TRUE, 50, FALSE, 0, 0, OCT50n_oer_ext_arr_, 0, OCT50n_oer_p_};
+const TTCN_Typedescriptor_t OCT50n_descr_ = { "@General_Types.OCT50n", &OCTETSTRING_ber_, &OCT50n_raw_, &OCTETSTRING_text_, &OCT50n_xer_, &OCTETSTRING_json_, &OCT50n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT69n_raw_ = {552,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,NULL,false};
+const XERdescriptor_t       OCT69n_xer_ = { {"OCT69n>\n", "OCT69n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT69n_oer_ext_arr_[0] = {};
+const int OCT69n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT69n_oer_ = { -1, TRUE, 69, FALSE, 0, 0, OCT69n_oer_ext_arr_, 0, OCT69n_oer_p_};
+const TTCN_Typedescriptor_t OCT69n_descr_ = { "@General_Types.OCT69n", &OCTETSTRING_ber_, &OCT69n_raw_, &OCTETSTRING_text_, &OCT69n_xer_, &OCTETSTRING_json_, &OCT69n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT100n_raw_ = {800,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,NULL,false};
+const XERdescriptor_t       OCT100n_xer_ = { {"OCT100n>\n", "OCT100n>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT100n_oer_ext_arr_[0] = {};
+const int OCT100n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT100n_oer_ = { -1, TRUE, 100, FALSE, 0, 0, OCT100n_oer_ext_arr_, 0, OCT100n_oer_p_};
+const TTCN_Typedescriptor_t OCT100n_descr_ = { "@General_Types.OCT100n", &OCTETSTRING_ber_, &OCT100n_raw_, &OCTETSTRING_text_, &OCT100n_xer_, &OCTETSTRING_json_, &OCT100n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT128n_raw_ = {1024,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,NULL,false};
+const XERdescriptor_t       OCT128n_xer_ = { {"OCT128n>\n", "OCT128n>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT128n_oer_ext_arr_[0] = {};
+const int OCT128n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT128n_oer_ = { -1, TRUE, 128, FALSE, 0, 0, OCT128n_oer_ext_arr_, 0, OCT128n_oer_p_};
+const TTCN_Typedescriptor_t OCT128n_descr_ = { "@General_Types.OCT128n", &OCTETSTRING_ber_, &OCT128n_raw_, &OCTETSTRING_text_, &OCT128n_xer_, &OCTETSTRING_json_, &OCT128n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT500n_raw_ = {4000,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,NULL,false};
+const XERdescriptor_t       OCT500n_xer_ = { {"OCT500n>\n", "OCT500n>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT500n_oer_ext_arr_[0] = {};
+const int OCT500n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT500n_oer_ = { -1, TRUE, 500, FALSE, 0, 0, OCT500n_oer_ext_arr_, 0, OCT500n_oer_p_};
+const TTCN_Typedescriptor_t OCT500n_descr_ = { "@General_Types.OCT500n", &OCTETSTRING_ber_, &OCT500n_raw_, &OCTETSTRING_text_, &OCT500n_xer_, &OCTETSTRING_json_, &OCT500n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCTNn_raw_ = {0,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,NULL,false};
+const XERdescriptor_t       OCTNn_xer_ = { {"OCTNn>\n", "OCTNn>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCTNn_oer_ext_arr_[0] = {};
+const int OCTNn_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCTNn_oer_ = { -1, TRUE, -1, FALSE, 0, 0, OCTNn_oer_ext_arr_, 0, OCTNn_oer_p_};
+const TTCN_Typedescriptor_t OCTNn_descr_ = { "@General_Types.OCTNn", &OCTETSTRING_ber_, &OCTNn_raw_, &OCTETSTRING_text_, &OCTNn_xer_, &OCTETSTRING_json_, &OCTNn_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT1__3n_raw_ = {0,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,NULL,false};
+const XERdescriptor_t       OCT1__3n_xer_ = { {"OCT1_3n>\n", "OCT1_3n>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT1__3n_oer_ext_arr_[0] = {};
+const int OCT1__3n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT1__3n_oer_ = { -1, TRUE, -1, FALSE, 0, 0, OCT1__3n_oer_ext_arr_, 0, OCT1__3n_oer_p_};
+const TTCN_Typedescriptor_t OCT1__3n_descr_ = { "@General_Types.OCT1_3n", &OCTETSTRING_ber_, &OCT1__3n_raw_, &OCTETSTRING_text_, &OCT1__3n_xer_, &OCTETSTRING_json_, &OCT1__3n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT1__4n_raw_ = {0,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,NULL,false};
+const XERdescriptor_t       OCT1__4n_xer_ = { {"OCT1_4n>\n", "OCT1_4n>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT1__4n_oer_ext_arr_[0] = {};
+const int OCT1__4n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT1__4n_oer_ = { -1, TRUE, -1, FALSE, 0, 0, OCT1__4n_oer_ext_arr_, 0, OCT1__4n_oer_p_};
+const TTCN_Typedescriptor_t OCT1__4n_descr_ = { "@General_Types.OCT1_4n", &OCTETSTRING_ber_, &OCT1__4n_raw_, &OCTETSTRING_text_, &OCT1__4n_xer_, &OCTETSTRING_json_, &OCT1__4n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT1__5n_raw_ = {0,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,NULL,false};
+const XERdescriptor_t       OCT1__5n_xer_ = { {"OCT1_5n>\n", "OCT1_5n>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT1__5n_oer_ext_arr_[0] = {};
+const int OCT1__5n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT1__5n_oer_ = { -1, TRUE, -1, FALSE, 0, 0, OCT1__5n_oer_ext_arr_, 0, OCT1__5n_oer_p_};
+const TTCN_Typedescriptor_t OCT1__5n_descr_ = { "@General_Types.OCT1_5n", &OCTETSTRING_ber_, &OCT1__5n_raw_, &OCTETSTRING_text_, &OCT1__5n_xer_, &OCTETSTRING_json_, &OCT1__5n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT1__6n_raw_ = {0,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,NULL,false};
+const XERdescriptor_t       OCT1__6n_xer_ = { {"OCT1_6n>\n", "OCT1_6n>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT1__6n_oer_ext_arr_[0] = {};
+const int OCT1__6n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT1__6n_oer_ = { -1, TRUE, -1, FALSE, 0, 0, OCT1__6n_oer_ext_arr_, 0, OCT1__6n_oer_p_};
+const TTCN_Typedescriptor_t OCT1__6n_descr_ = { "@General_Types.OCT1_6n", &OCTETSTRING_ber_, &OCT1__6n_raw_, &OCTETSTRING_text_, &OCT1__6n_xer_, &OCTETSTRING_json_, &OCT1__6n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT1__7n_raw_ = {0,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,NULL,false};
+const XERdescriptor_t       OCT1__7n_xer_ = { {"OCT1_7n>\n", "OCT1_7n>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT1__7n_oer_ext_arr_[0] = {};
+const int OCT1__7n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT1__7n_oer_ = { -1, TRUE, -1, FALSE, 0, 0, OCT1__7n_oer_ext_arr_, 0, OCT1__7n_oer_p_};
+const TTCN_Typedescriptor_t OCT1__7n_descr_ = { "@General_Types.OCT1_7n", &OCTETSTRING_ber_, &OCT1__7n_raw_, &OCTETSTRING_text_, &OCT1__7n_xer_, &OCTETSTRING_json_, &OCT1__7n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT1__8n_raw_ = {0,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,NULL,false};
+const XERdescriptor_t       OCT1__8n_xer_ = { {"OCT1_8n>\n", "OCT1_8n>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT1__8n_oer_ext_arr_[0] = {};
+const int OCT1__8n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT1__8n_oer_ = { -1, TRUE, -1, FALSE, 0, 0, OCT1__8n_oer_ext_arr_, 0, OCT1__8n_oer_p_};
+const TTCN_Typedescriptor_t OCT1__8n_descr_ = { "@General_Types.OCT1_8n", &OCTETSTRING_ber_, &OCT1__8n_raw_, &OCTETSTRING_text_, &OCT1__8n_xer_, &OCTETSTRING_json_, &OCT1__8n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT1__12n_raw_ = {0,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,NULL,false};
+const XERdescriptor_t       OCT1__12n_xer_ = { {"OCT1_12n>\n", "OCT1_12n>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT1__12n_oer_ext_arr_[0] = {};
+const int OCT1__12n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT1__12n_oer_ = { -1, TRUE, -1, FALSE, 0, 0, OCT1__12n_oer_ext_arr_, 0, OCT1__12n_oer_p_};
+const TTCN_Typedescriptor_t OCT1__12n_descr_ = { "@General_Types.OCT1_12n", &OCTETSTRING_ber_, &OCT1__12n_raw_, &OCTETSTRING_text_, &OCT1__12n_xer_, &OCTETSTRING_json_, &OCT1__12n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT1__15n_raw_ = {0,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,NULL,false};
+const XERdescriptor_t       OCT1__15n_xer_ = { {"OCT1_15n>\n", "OCT1_15n>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT1__15n_oer_ext_arr_[0] = {};
+const int OCT1__15n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT1__15n_oer_ = { -1, TRUE, -1, FALSE, 0, 0, OCT1__15n_oer_ext_arr_, 0, OCT1__15n_oer_p_};
+const TTCN_Typedescriptor_t OCT1__15n_descr_ = { "@General_Types.OCT1_15n", &OCTETSTRING_ber_, &OCT1__15n_raw_, &OCTETSTRING_text_, &OCT1__15n_xer_, &OCTETSTRING_json_, &OCT1__15n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT1__16n_raw_ = {0,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,NULL,false};
+const XERdescriptor_t       OCT1__16n_xer_ = { {"OCT1_16n>\n", "OCT1_16n>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT1__16n_oer_ext_arr_[0] = {};
+const int OCT1__16n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT1__16n_oer_ = { -1, TRUE, -1, FALSE, 0, 0, OCT1__16n_oer_ext_arr_, 0, OCT1__16n_oer_p_};
+const TTCN_Typedescriptor_t OCT1__16n_descr_ = { "@General_Types.OCT1_16n", &OCTETSTRING_ber_, &OCT1__16n_raw_, &OCTETSTRING_text_, &OCT1__16n_xer_, &OCTETSTRING_json_, &OCT1__16n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT1__18n_raw_ = {0,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,NULL,false};
+const XERdescriptor_t       OCT1__18n_xer_ = { {"OCT1_18n>\n", "OCT1_18n>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT1__18n_oer_ext_arr_[0] = {};
+const int OCT1__18n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT1__18n_oer_ = { -1, TRUE, -1, FALSE, 0, 0, OCT1__18n_oer_ext_arr_, 0, OCT1__18n_oer_p_};
+const TTCN_Typedescriptor_t OCT1__18n_descr_ = { "@General_Types.OCT1_18n", &OCTETSTRING_ber_, &OCT1__18n_raw_, &OCTETSTRING_text_, &OCT1__18n_xer_, &OCTETSTRING_json_, &OCT1__18n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT1__20n_raw_ = {0,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,NULL,false};
+const XERdescriptor_t       OCT1__20n_xer_ = { {"OCT1_20n>\n", "OCT1_20n>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT1__20n_oer_ext_arr_[0] = {};
+const int OCT1__20n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT1__20n_oer_ = { -1, TRUE, -1, FALSE, 0, 0, OCT1__20n_oer_ext_arr_, 0, OCT1__20n_oer_p_};
+const TTCN_Typedescriptor_t OCT1__20n_descr_ = { "@General_Types.OCT1_20n", &OCTETSTRING_ber_, &OCT1__20n_raw_, &OCTETSTRING_text_, &OCT1__20n_xer_, &OCTETSTRING_json_, &OCT1__20n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT1__24n_raw_ = {0,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,NULL,false};
+const XERdescriptor_t       OCT1__24n_xer_ = { {"OCT1_24n>\n", "OCT1_24n>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT1__24n_oer_ext_arr_[0] = {};
+const int OCT1__24n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT1__24n_oer_ = { -1, TRUE, -1, FALSE, 0, 0, OCT1__24n_oer_ext_arr_, 0, OCT1__24n_oer_p_};
+const TTCN_Typedescriptor_t OCT1__24n_descr_ = { "@General_Types.OCT1_24n", &OCTETSTRING_ber_, &OCT1__24n_raw_, &OCTETSTRING_text_, &OCT1__24n_xer_, &OCTETSTRING_json_, &OCT1__24n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT1__32n_raw_ = {0,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,NULL,false};
+const XERdescriptor_t       OCT1__32n_xer_ = { {"OCT1_32n>\n", "OCT1_32n>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT1__32n_oer_ext_arr_[0] = {};
+const int OCT1__32n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT1__32n_oer_ = { -1, TRUE, -1, FALSE, 0, 0, OCT1__32n_oer_ext_arr_, 0, OCT1__32n_oer_p_};
+const TTCN_Typedescriptor_t OCT1__32n_descr_ = { "@General_Types.OCT1_32n", &OCTETSTRING_ber_, &OCT1__32n_raw_, &OCTETSTRING_text_, &OCT1__32n_xer_, &OCTETSTRING_json_, &OCT1__32n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT1__34n_raw_ = {0,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,NULL,false};
+const XERdescriptor_t       OCT1__34n_xer_ = { {"OCT1_34n>\n", "OCT1_34n>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT1__34n_oer_ext_arr_[0] = {};
+const int OCT1__34n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT1__34n_oer_ = { -1, TRUE, -1, FALSE, 0, 0, OCT1__34n_oer_ext_arr_, 0, OCT1__34n_oer_p_};
+const TTCN_Typedescriptor_t OCT1__34n_descr_ = { "@General_Types.OCT1_34n", &OCTETSTRING_ber_, &OCT1__34n_raw_, &OCTETSTRING_text_, &OCT1__34n_xer_, &OCTETSTRING_json_, &OCT1__34n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT1__46n_raw_ = {0,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,NULL,false};
+const XERdescriptor_t       OCT1__46n_xer_ = { {"OCT1_46n>\n", "OCT1_46n>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT1__46n_oer_ext_arr_[0] = {};
+const int OCT1__46n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT1__46n_oer_ = { -1, TRUE, -1, FALSE, 0, 0, OCT1__46n_oer_ext_arr_, 0, OCT1__46n_oer_p_};
+const TTCN_Typedescriptor_t OCT1__46n_descr_ = { "@General_Types.OCT1_46n", &OCTETSTRING_ber_, &OCT1__46n_raw_, &OCTETSTRING_text_, &OCT1__46n_xer_, &OCTETSTRING_json_, &OCT1__46n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT1__50n_raw_ = {0,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,NULL,false};
+const XERdescriptor_t       OCT1__50n_xer_ = { {"OCT1_50n>\n", "OCT1_50n>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT1__50n_oer_ext_arr_[0] = {};
+const int OCT1__50n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT1__50n_oer_ = { -1, TRUE, -1, FALSE, 0, 0, OCT1__50n_oer_ext_arr_, 0, OCT1__50n_oer_p_};
+const TTCN_Typedescriptor_t OCT1__50n_descr_ = { "@General_Types.OCT1_50n", &OCTETSTRING_ber_, &OCT1__50n_raw_, &OCTETSTRING_text_, &OCT1__50n_xer_, &OCTETSTRING_json_, &OCT1__50n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT1__112n_raw_ = {0,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,NULL,false};
+const XERdescriptor_t       OCT1__112n_xer_ = { {"OCT1_112n>\n", "OCT1_112n>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT1__112n_oer_ext_arr_[0] = {};
+const int OCT1__112n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT1__112n_oer_ = { -1, TRUE, -1, FALSE, 0, 0, OCT1__112n_oer_ext_arr_, 0, OCT1__112n_oer_p_};
+const TTCN_Typedescriptor_t OCT1__112n_descr_ = { "@General_Types.OCT1_112n", &OCTETSTRING_ber_, &OCT1__112n_raw_, &OCTETSTRING_text_, &OCT1__112n_xer_, &OCTETSTRING_json_, &OCT1__112n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT1__127n_raw_ = {0,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,NULL,false};
+const XERdescriptor_t       OCT1__127n_xer_ = { {"OCT1_127n>\n", "OCT1_127n>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT1__127n_oer_ext_arr_[0] = {};
+const int OCT1__127n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT1__127n_oer_ = { -1, TRUE, -1, FALSE, 0, 0, OCT1__127n_oer_ext_arr_, 0, OCT1__127n_oer_p_};
+const TTCN_Typedescriptor_t OCT1__127n_descr_ = { "@General_Types.OCT1_127n", &OCTETSTRING_ber_, &OCT1__127n_raw_, &OCTETSTRING_text_, &OCT1__127n_xer_, &OCTETSTRING_json_, &OCT1__127n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT1__128n_raw_ = {0,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,NULL,false};
+const XERdescriptor_t       OCT1__128n_xer_ = { {"OCT1_128n>\n", "OCT1_128n>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT1__128n_oer_ext_arr_[0] = {};
+const int OCT1__128n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT1__128n_oer_ = { -1, TRUE, -1, FALSE, 0, 0, OCT1__128n_oer_ext_arr_, 0, OCT1__128n_oer_p_};
+const TTCN_Typedescriptor_t OCT1__128n_descr_ = { "@General_Types.OCT1_128n", &OCTETSTRING_ber_, &OCT1__128n_raw_, &OCTETSTRING_text_, &OCT1__128n_xer_, &OCTETSTRING_json_, &OCT1__128n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT1__172n_raw_ = {0,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,NULL,false};
+const XERdescriptor_t       OCT1__172n_xer_ = { {"OCT1_172n>\n", "OCT1_172n>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT1__172n_oer_ext_arr_[0] = {};
+const int OCT1__172n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT1__172n_oer_ = { -1, TRUE, -1, FALSE, 0, 0, OCT1__172n_oer_ext_arr_, 0, OCT1__172n_oer_p_};
+const TTCN_Typedescriptor_t OCT1__172n_descr_ = { "@General_Types.OCT1_172n", &OCTETSTRING_ber_, &OCT1__172n_raw_, &OCTETSTRING_text_, &OCT1__172n_xer_, &OCTETSTRING_json_, &OCT1__172n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT3__5n_raw_ = {0,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,NULL,false};
+const XERdescriptor_t       OCT3__5n_xer_ = { {"OCT3_5n>\n", "OCT3_5n>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT3__5n_oer_ext_arr_[0] = {};
+const int OCT3__5n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT3__5n_oer_ = { -1, TRUE, -1, FALSE, 0, 0, OCT3__5n_oer_ext_arr_, 0, OCT3__5n_oer_p_};
+const TTCN_Typedescriptor_t OCT3__5n_descr_ = { "@General_Types.OCT3_5n", &OCTETSTRING_ber_, &OCT3__5n_raw_, &OCTETSTRING_text_, &OCT3__5n_xer_, &OCTETSTRING_json_, &OCT3__5n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT3__7n_raw_ = {0,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,NULL,false};
+const XERdescriptor_t       OCT3__7n_xer_ = { {"OCT3_7n>\n", "OCT3_7n>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT3__7n_oer_ext_arr_[0] = {};
+const int OCT3__7n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT3__7n_oer_ = { -1, TRUE, -1, FALSE, 0, 0, OCT3__7n_oer_ext_arr_, 0, OCT3__7n_oer_p_};
+const TTCN_Typedescriptor_t OCT3__7n_descr_ = { "@General_Types.OCT3_7n", &OCTETSTRING_ber_, &OCT3__7n_raw_, &OCTETSTRING_text_, &OCT3__7n_xer_, &OCTETSTRING_json_, &OCT3__7n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT3__8n_raw_ = {0,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,NULL,false};
+const XERdescriptor_t       OCT3__8n_xer_ = { {"OCT3_8n>\n", "OCT3_8n>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT3__8n_oer_ext_arr_[0] = {};
+const int OCT3__8n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT3__8n_oer_ = { -1, TRUE, -1, FALSE, 0, 0, OCT3__8n_oer_ext_arr_, 0, OCT3__8n_oer_p_};
+const TTCN_Typedescriptor_t OCT3__8n_descr_ = { "@General_Types.OCT3_8n", &OCTETSTRING_ber_, &OCT3__8n_raw_, &OCTETSTRING_text_, &OCT3__8n_xer_, &OCTETSTRING_json_, &OCT3__8n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT3__14n_raw_ = {0,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,NULL,false};
+const XERdescriptor_t       OCT3__14n_xer_ = { {"OCT3_14n>\n", "OCT3_14n>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT3__14n_oer_ext_arr_[0] = {};
+const int OCT3__14n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT3__14n_oer_ = { -1, TRUE, -1, FALSE, 0, 0, OCT3__14n_oer_ext_arr_, 0, OCT3__14n_oer_p_};
+const TTCN_Typedescriptor_t OCT3__14n_descr_ = { "@General_Types.OCT3_14n", &OCTETSTRING_ber_, &OCT3__14n_raw_, &OCTETSTRING_text_, &OCT3__14n_xer_, &OCTETSTRING_json_, &OCT3__14n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT3__17n_raw_ = {0,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,NULL,false};
+const XERdescriptor_t       OCT3__17n_xer_ = { {"OCT3_17n>\n", "OCT3_17n>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT3__17n_oer_ext_arr_[0] = {};
+const int OCT3__17n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT3__17n_oer_ = { -1, TRUE, -1, FALSE, 0, 0, OCT3__17n_oer_ext_arr_, 0, OCT3__17n_oer_p_};
+const TTCN_Typedescriptor_t OCT3__17n_descr_ = { "@General_Types.OCT3_17n", &OCTETSTRING_ber_, &OCT3__17n_raw_, &OCTETSTRING_text_, &OCT3__17n_xer_, &OCTETSTRING_json_, &OCT3__17n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT4__8n_raw_ = {0,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,NULL,false};
+const XERdescriptor_t       OCT4__8n_xer_ = { {"OCT4_8n>\n", "OCT4_8n>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT4__8n_oer_ext_arr_[0] = {};
+const int OCT4__8n_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT4__8n_oer_ = { -1, TRUE, -1, FALSE, 0, 0, OCT4__8n_oer_ext_arr_, 0, OCT4__8n_oer_p_};
+const TTCN_Typedescriptor_t OCT4__8n_descr_ = { "@General_Types.OCT4_8n", &OCTETSTRING_ber_, &OCT4__8n_raw_, &OCTETSTRING_text_, &OCT4__8n_xer_, &OCTETSTRING_json_, &OCT4__8n_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t Octetstrings_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for Octetstrings
+const TTCN_Typedescriptor_t Octetstrings_descr_ = { "@General_Types.Octetstrings", NULL, &Octetstrings_raw_, NULL, NULL, NULL, NULL, &OCTETSTRING_descr_, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       Octetstrings_0_xer_ = { {"OCTETSTRING>\n", "OCTETSTRING>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int Octetstrings_0_oer_ext_arr_[0] = {};
+const int Octetstrings_0_oer_p_[0] = {};
+const TTCN_OERdescriptor_t Octetstrings_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Octetstrings_0_oer_ext_arr_, 0, Octetstrings_0_oer_p_};
+const TTCN_Typedescriptor_t Octetstrings_0_descr_ = { "@General_Types.Octetstrings.<oftype>", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &Octetstrings_0_xer_, &OCTETSTRING_json_, &Octetstrings_0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_Typedescriptor_t& OctetstringList_descr_ = Octetstrings_descr_;
+const TTCN_RAWdescriptor_t OctetstringSet_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for OctetstringSet
+const TTCN_Typedescriptor_t OctetstringSet_descr_ = { "@General_Types.OctetstringSet", NULL, &OctetstringSet_raw_, NULL, NULL, NULL, NULL, &OCTETSTRING_descr_, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       OctetstringSet_0_xer_ = { {"OCTETSTRING>\n", "OCTETSTRING>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OctetstringSet_0_oer_ext_arr_[0] = {};
+const int OctetstringSet_0_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OctetstringSet_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, OctetstringSet_0_oer_ext_arr_, 0, OctetstringSet_0_oer_p_};
+const TTCN_Typedescriptor_t OctetstringSet_0_descr_ = { "@General_Types.OctetstringSet.<oftype>", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &OctetstringSet_0_xer_, &OCTETSTRING_json_, &OctetstringSet_0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CHAR4_raw_ = {32,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       CHAR4_xer_ = { {"CHAR4>\n", "CHAR4>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_Typedescriptor_t CHAR4_descr_ = { "@General_Types.CHAR4", NULL, &CHAR4_raw_, &CHARSTRING_text_, &CHAR4_xer_, &CHARSTRING_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t Charstrings_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for Charstrings
+const TTCN_Typedescriptor_t Charstrings_descr_ = { "@General_Types.Charstrings", NULL, &Charstrings_raw_, NULL, NULL, NULL, NULL, &CHARSTRING_descr_, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       Charstrings_0_xer_ = { {"CHARSTRING>\n", "CHARSTRING>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_Typedescriptor_t Charstrings_0_descr_ = { "@General_Types.Charstrings.<oftype>", NULL, &CHARSTRING_raw_, &CHARSTRING_text_, &Charstrings_0_xer_, &CHARSTRING_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_Typedescriptor_t& CharstringList_descr_ = Charstrings_descr_;
+const TTCN_RAWdescriptor_t CharstringSet_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for CharstringSet
+const TTCN_Typedescriptor_t CharstringSet_descr_ = { "@General_Types.CharstringSet", NULL, &CharstringSet_raw_, NULL, NULL, NULL, NULL, &CHARSTRING_descr_, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       CharstringSet_0_xer_ = { {"CHARSTRING>\n", "CHARSTRING>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_Typedescriptor_t CharstringSet_0_descr_ = { "@General_Types.CharstringSet.<oftype>", NULL, &CHARSTRING_raw_, &CHARSTRING_text_, &CharstringSet_0_xer_, &CHARSTRING_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t HEX4n_raw_ = {16,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       HEX4n_xer_ = { {"HEX4n>\n", "HEX4n>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_Typedescriptor_t HEX4n_descr_ = { "@General_Types.HEX4n", NULL, &HEX4n_raw_, NULL, &HEX4n_xer_, &HEXSTRING_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t HEX6n_raw_ = {24,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       HEX6n_xer_ = { {"HEX6n>\n", "HEX6n>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_Typedescriptor_t HEX6n_descr_ = { "@General_Types.HEX6n", NULL, &HEX6n_raw_, NULL, &HEX6n_xer_, &HEXSTRING_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t HEX8n_raw_ = {32,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       HEX8n_xer_ = { {"HEX8n>\n", "HEX8n>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_Typedescriptor_t HEX8n_descr_ = { "@General_Types.HEX8n", NULL, &HEX8n_raw_, NULL, &HEX8n_xer_, &HEXSTRING_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t HEX15n_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,NULL,false};
+const XERdescriptor_t       HEX15n_xer_ = { {"HEX15n>\n", "HEX15n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_Typedescriptor_t HEX15n_descr_ = { "@General_Types.HEX15n", NULL, &HEX15n_raw_, NULL, &HEX15n_xer_, &HEXSTRING_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t HEX16n_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,NULL,false};
+const XERdescriptor_t       HEX16n_xer_ = { {"HEX16n>\n", "HEX16n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_Typedescriptor_t HEX16n_descr_ = { "@General_Types.HEX16n", NULL, &HEX16n_raw_, NULL, &HEX16n_xer_, &HEXSTRING_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t HEX24n_raw_ = {96,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       HEX24n_xer_ = { {"HEX24n>\n", "HEX24n>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_Typedescriptor_t HEX24n_descr_ = { "@General_Types.HEX24n", NULL, &HEX24n_raw_, NULL, &HEX24n_xer_, &HEXSTRING_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t HEX0__18n_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       HEX0__18n_xer_ = { {"HEX0_18n>\n", "HEX0_18n>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_Typedescriptor_t HEX0__18n_descr_ = { "@General_Types.HEX0_18n", NULL, &HEX0__18n_raw_, NULL, &HEX0__18n_xer_, &HEXSTRING_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t HEX1__20n_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       HEX1__20n_xer_ = { {"HEX1_20n>\n", "HEX1_20n>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_Typedescriptor_t HEX1__20n_descr_ = { "@General_Types.HEX1_20n", NULL, &HEX1__20n_raw_, NULL, &HEX1__20n_xer_, &HEXSTRING_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t HEX1__34n_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       HEX1__34n_xer_ = { {"HEX1_34n>\n", "HEX1_34n>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_Typedescriptor_t HEX1__34n_descr_ = { "@General_Types.HEX1_34n", NULL, &HEX1__34n_raw_, NULL, &HEX1__34n_xer_, &HEXSTRING_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t Hexstrings_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for Hexstrings
+const TTCN_Typedescriptor_t Hexstrings_descr_ = { "@General_Types.Hexstrings", NULL, &Hexstrings_raw_, NULL, NULL, NULL, NULL, &HEXSTRING_descr_, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       Hexstrings_0_xer_ = { {"HEXSTRING>\n", "HEXSTRING>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_Typedescriptor_t Hexstrings_0_descr_ = { "@General_Types.Hexstrings.<oftype>", NULL, &HEXSTRING_raw_, NULL, &Hexstrings_0_xer_, &HEXSTRING_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_Typedescriptor_t& HexstringList_descr_ = Hexstrings_descr_;
+const TTCN_RAWdescriptor_t HexstringSet_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for HexstringSet
+const TTCN_Typedescriptor_t HexstringSet_descr_ = { "@General_Types.HexstringSet", NULL, &HexstringSet_raw_, NULL, NULL, NULL, NULL, &HEXSTRING_descr_, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       HexstringSet_0_xer_ = { {"HEXSTRING>\n", "HEXSTRING>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_Typedescriptor_t HexstringSet_0_descr_ = { "@General_Types.HexstringSet.<oftype>", NULL, &HEXSTRING_raw_, NULL, &HexstringSet_0_xer_, &HEXSTRING_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT3nb_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,NULL,false};
+const XERdescriptor_t       INT3nb_xer_ = { {"INT3nb>\n", "INT3nb>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT3nb_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT3nb_descr_ = { "@General_Types.INT3nb", &INTEGER_ber_, &INT3nb_raw_, &INTEGER_text_, &INT3nb_xer_, &INTEGER_json_, &INT3nb_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT4nb_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,NULL,false};
+const XERdescriptor_t       INT4nb_xer_ = { {"INT4nb>\n", "INT4nb>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT4nb_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT4nb_descr_ = { "@General_Types.INT4nb", &INTEGER_ber_, &INT4nb_raw_, &INTEGER_text_, &INT4nb_xer_, &INTEGER_json_, &INT4nb_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT5nb_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,NULL,false};
+const XERdescriptor_t       INT5nb_xer_ = { {"INT5nb>\n", "INT5nb>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT5nb_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT5nb_descr_ = { "@General_Types.INT5nb", &INTEGER_ber_, &INT5nb_raw_, &INTEGER_text_, &INT5nb_xer_, &INTEGER_json_, &INT5nb_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT8nb_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,NULL,false};
+const XERdescriptor_t       INT8nb_xer_ = { {"INT8nb>\n", "INT8nb>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT8nb_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT8nb_descr_ = { "@General_Types.INT8nb", &INTEGER_ber_, &INT8nb_raw_, &INTEGER_text_, &INT8nb_xer_, &INTEGER_json_, &INT8nb_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT2nbp_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,NULL,false};
+const XERdescriptor_t       INT2nbp_xer_ = { {"INT2nbp>\n", "INT2nbp>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT2nbp_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT2nbp_descr_ = { "@General_Types.INT2nbp", &INTEGER_ber_, &INT2nbp_raw_, &INTEGER_text_, &INT2nbp_xer_, &INTEGER_json_, &INT2nbp_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT1nbp_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,NULL,false};
+const XERdescriptor_t       INT1nbp_xer_ = { {"INT1nbp>\n", "INT1nbp>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT1nbp_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT1nbp_descr_ = { "@General_Types.INT1nbp", &INTEGER_ber_, &INT1nbp_raw_, &INTEGER_text_, &INT1nbp_xer_, &INTEGER_json_, &INT1nbp_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT3nbp_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,NULL,false};
+const XERdescriptor_t       INT3nbp_xer_ = { {"INT3nbp>\n", "INT3nbp>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT3nbp_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT3nbp_descr_ = { "@General_Types.INT3nbp", &INTEGER_ber_, &INT3nbp_raw_, &INTEGER_text_, &INT3nbp_xer_, &INTEGER_json_, &INT3nbp_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT5nbp_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,NULL,false};
+const XERdescriptor_t       INT5nbp_xer_ = { {"INT5nbp>\n", "INT5nbp>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT5nbp_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT5nbp_descr_ = { "@General_Types.INT5nbp", &INTEGER_ber_, &INT5nbp_raw_, &INTEGER_text_, &INT5nbp_xer_, &INTEGER_json_, &INT5nbp_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT9nbp_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,NULL,false};
+const XERdescriptor_t       INT9nbp_xer_ = { {"INT9nbp>\n", "INT9nbp>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT9nbp_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT9nbp_descr_ = { "@General_Types.INT9nbp", &INTEGER_ber_, &INT9nbp_raw_, &INTEGER_text_, &INT9nbp_xer_, &INTEGER_json_, &INT9nbp_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT13nbp_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,NULL,false};
+const XERdescriptor_t       INT13nbp_xer_ = { {"INT13nbp>\n", "INT13nbp>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT13nbp_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT13nbp_descr_ = { "@General_Types.INT13nbp", &INTEGER_ber_, &INT13nbp_raw_, &INTEGER_text_, &INT13nbp_xer_, &INTEGER_json_, &INT13nbp_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT15nbp_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,NULL,false};
+const XERdescriptor_t       INT15nbp_xer_ = { {"INT15nbp>\n", "INT15nbp>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT15nbp_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT15nbp_descr_ = { "@General_Types.INT15nbp", &INTEGER_ber_, &INT15nbp_raw_, &INTEGER_text_, &INT15nbp_xer_, &INTEGER_json_, &INT15nbp_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t Integers_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for Integers
+const TTCN_Typedescriptor_t Integers_descr_ = { "@General_Types.Integers", NULL, &Integers_raw_, NULL, NULL, NULL, NULL, &INTEGER_descr_, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       Integers_0_xer_ = { {"INTEGER>\n", "INTEGER>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t Integers_0_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t Integers_0_descr_ = { "@General_Types.Integers.INTEGER", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &Integers_0_xer_, &INTEGER_json_, &Integers_0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_Typedescriptor_t& IntegerList_descr_ = Integers_descr_;
+const TTCN_RAWdescriptor_t Integer__array_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for Integer__array
+const TTCN_Typedescriptor_t Integer__array_descr_ = { "@General_Types.Integer_array", NULL, &Integer__array_raw_, NULL, NULL, NULL, NULL, &Integers_descr_, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t IntegerSet_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for IntegerSet
+const TTCN_Typedescriptor_t IntegerSet_descr_ = { "@General_Types.IntegerSet", NULL, &IntegerSet_raw_, NULL, NULL, NULL, NULL, &INTEGER_descr_, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       IntegerSet_0_xer_ = { {"INTEGER>\n", "INTEGER>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t IntegerSet_0_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t IntegerSet_0_descr_ = { "@General_Types.IntegerSet.INTEGER", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &IntegerSet_0_xer_, &INTEGER_json_, &IntegerSet_0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t Floats_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for Floats
+const TTCN_Typedescriptor_t Floats_descr_ = { "@General_Types.Floats", NULL, &Floats_raw_, NULL, NULL, NULL, NULL, &FLOAT_descr_, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       Floats_0_xer_ = { {"FLOAT>\n", "FLOAT>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int Floats_0_oer_ext_arr_[0] = {};
+const int Floats_0_oer_p_[0] = {};
+const TTCN_OERdescriptor_t Floats_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Floats_0_oer_ext_arr_, 0, Floats_0_oer_p_};
+const TTCN_Typedescriptor_t Floats_0_descr_ = { "@General_Types.Floats.<oftype>", &FLOAT_ber_, &FLOAT_raw_, NULL, &Floats_0_xer_, &FLOAT_json_, &Floats_0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_Typedescriptor_t& FloatList_descr_ = Floats_descr_;
+const TTCN_RAWdescriptor_t FloatSet_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for FloatSet
+const TTCN_Typedescriptor_t FloatSet_descr_ = { "@General_Types.FloatSet", NULL, &FloatSet_raw_, NULL, NULL, NULL, NULL, &FLOAT_descr_, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       FloatSet_0_xer_ = { {"FLOAT>\n", "FLOAT>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int FloatSet_0_oer_ext_arr_[0] = {};
+const int FloatSet_0_oer_p_[0] = {};
+const TTCN_OERdescriptor_t FloatSet_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, FloatSet_0_oer_ext_arr_, 0, FloatSet_0_oer_p_};
+const TTCN_Typedescriptor_t FloatSet_0_descr_ = { "@General_Types.FloatSet.<oftype>", &FLOAT_ber_, &FLOAT_raw_, NULL, &FloatSet_0_xer_, &FLOAT_json_, &FloatSet_0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t UniversalCharstrings_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for UniversalCharstrings
+const TTCN_Typedescriptor_t UniversalCharstrings_descr_ = { "@General_Types.UniversalCharstrings", NULL, &UniversalCharstrings_raw_, NULL, NULL, NULL, NULL, &UNIVERSAL_CHARSTRING_descr_, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       UniversalCharstrings_0_xer_ = { {"UNIVERSAL_CHARSTRING>\n", "UNIVERSAL_CHARSTRING>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_Typedescriptor_t UniversalCharstrings_0_descr_ = { "@General_Types.UniversalCharstrings.<oftype>", NULL, &UNIVERSAL_CHARSTRING_raw_, &UNIVERSAL_CHARSTRING_text_, &UniversalCharstrings_0_xer_, &UNIVERSAL_CHARSTRING_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_Typedescriptor_t& UniversalCharstringList_descr_ = UniversalCharstrings_descr_;
+const TTCN_RAWdescriptor_t UniversalCharstringSet_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for UniversalCharstringSet
+const TTCN_Typedescriptor_t UniversalCharstringSet_descr_ = { "@General_Types.UniversalCharstringSet", NULL, &UniversalCharstringSet_raw_, NULL, NULL, NULL, NULL, &UNIVERSAL_CHARSTRING_descr_, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       UniversalCharstringSet_0_xer_ = { {"UNIVERSAL_CHARSTRING>\n", "UNIVERSAL_CHARSTRING>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_Typedescriptor_t UniversalCharstringSet_0_descr_ = { "@General_Types.UniversalCharstringSet.<oftype>", NULL, &UNIVERSAL_CHARSTRING_raw_, &UNIVERSAL_CHARSTRING_text_, &UniversalCharstringSet_0_xer_, &UNIVERSAL_CHARSTRING_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t Booleans_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for Booleans
+const TTCN_Typedescriptor_t Booleans_descr_ = { "@General_Types.Booleans", NULL, &Booleans_raw_, NULL, NULL, NULL, NULL, &BOOLEAN_descr_, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       Booleans_0_xer_ = { {"BOOLEAN>\n", "BOOLEAN>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int Booleans_0_oer_ext_arr_[0] = {};
+const int Booleans_0_oer_p_[0] = {};
+const TTCN_OERdescriptor_t Booleans_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, Booleans_0_oer_ext_arr_, 0, Booleans_0_oer_p_};
+const TTCN_Typedescriptor_t Booleans_0_descr_ = { "@General_Types.Booleans.BOOLEAN", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &Booleans_0_xer_, &BOOLEAN_json_, &Booleans_0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_Typedescriptor_t& BooleanList_descr_ = Booleans_descr_;
+const TTCN_RAWdescriptor_t BooleanSet_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for BooleanSet
+const TTCN_Typedescriptor_t BooleanSet_descr_ = { "@General_Types.BooleanSet", NULL, &BooleanSet_raw_, NULL, NULL, NULL, NULL, &BOOLEAN_descr_, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       BooleanSet_0_xer_ = { {"BOOLEAN>\n", "BOOLEAN>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int BooleanSet_0_oer_ext_arr_[0] = {};
+const int BooleanSet_0_oer_p_[0] = {};
+const TTCN_OERdescriptor_t BooleanSet_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, BooleanSet_0_oer_ext_arr_, 0, BooleanSet_0_oer_p_};
+const TTCN_Typedescriptor_t BooleanSet_0_descr_ = { "@General_Types.BooleanSet.BOOLEAN", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &BooleanSet_0_xer_, &BOOLEAN_json_, &BooleanSet_0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t Verdicttypes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for Verdicttypes
+const TTCN_Typedescriptor_t Verdicttypes_descr_ = { "@General_Types.Verdicttypes", NULL, &Verdicttypes_raw_, NULL, NULL, NULL, NULL, &VERDICTTYPE_descr_, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       Verdicttypes_0_xer_ = { {"VERDICTTYPE>\n", "VERDICTTYPE>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_Typedescriptor_t Verdicttypes_0_descr_ = { "@General_Types.Verdicttypes.<oftype>", NULL, NULL, NULL, &Verdicttypes_0_xer_, &VERDICTTYPE_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_Typedescriptor_t& VerdicttypeList_descr_ = Verdicttypes_descr_;
+const TTCN_RAWdescriptor_t VerdicttypeSet_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for VerdicttypeSet
+const TTCN_Typedescriptor_t VerdicttypeSet_descr_ = { "@General_Types.VerdicttypeSet", NULL, &VerdicttypeSet_raw_, NULL, NULL, NULL, NULL, &VERDICTTYPE_descr_, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VerdicttypeSet_0_xer_ = { {"VERDICTTYPE>\n", "VERDICTTYPE>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_Typedescriptor_t VerdicttypeSet_0_descr_ = { "@General_Types.VerdicttypeSet.<oftype>", NULL, NULL, NULL, &VerdicttypeSet_0_xer_, &VERDICTTYPE_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t Anytypes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for Anytypes
+const TTCN_Typedescriptor_t Anytypes_descr_ = { "@General_Types.Anytypes", NULL, &Anytypes_raw_, NULL, NULL, NULL, NULL, &Anytypes_0_descr_, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for anytype
+const TTCN_Typedescriptor_t anytype_descr_ = { "@General_Types.anytype", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for Anytypes_0
+const TTCN_Typedescriptor_t Anytypes_0_descr_ = { "@General_Types.Anytypes.<oftype>", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_Typedescriptor_t& AnytypeList_descr_ = Anytypes_descr_;
+const TTCN_RAWdescriptor_t AnytypeSet_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for AnytypeSet
+const TTCN_Typedescriptor_t AnytypeSet_descr_ = { "@General_Types.AnytypeSet", NULL, &AnytypeSet_raw_, NULL, NULL, NULL, NULL, &AnytypeSet_0_descr_, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for AnytypeSet_0
+const TTCN_Typedescriptor_t AnytypeSet_0_descr_ = { "@General_Types.AnytypeSet.<oftype>", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT6__BO__LAST_raw_ = {6,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT6__BO__LAST_xer_ = { {"BIT6_BO_LAST>\n", "BIT6_BO_LAST>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT6__BO__LAST_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT6__BO__LAST_descr_ = { "@General_Types.BIT6_BO_LAST", &BITSTRING_ber_, &BIT6__BO__LAST_raw_, NULL, &BIT6__BO__LAST_xer_, &BITSTRING_json_, &BIT6__BO__LAST_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT16__BO__LAST_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT16__BO__LAST_xer_ = { {"BIT16_BO_LAST>\n", "BIT16_BO_LAST>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT16__BO__LAST_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT16__BO__LAST_descr_ = { "@General_Types.BIT16_BO_LAST", &BITSTRING_ber_, &BIT16__BO__LAST_raw_, NULL, &BIT16__BO__LAST_xer_, &BITSTRING_json_, &BIT16__BO__LAST_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT32__BO__LAST_raw_ = {32,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT32__BO__LAST_xer_ = { {"BIT32_BO_LAST>\n", "BIT32_BO_LAST>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT32__BO__LAST_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT32__BO__LAST_descr_ = { "@General_Types.BIT32_BO_LAST", &BITSTRING_ber_, &BIT32__BO__LAST_raw_, NULL, &BIT32__BO__LAST_xer_, &BITSTRING_json_, &BIT32__BO__LAST_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t Dummy_raw_ = {0,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,NULL,false};
+const XERdescriptor_t       Dummy_xer_ = { {"Dummy>\n", "Dummy>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int Dummy_oer_ext_arr_[0] = {};
+const int Dummy_oer_p_[0] = {};
+const TTCN_OERdescriptor_t Dummy_oer_ = { -1, TRUE, 0, FALSE, 0, 0, Dummy_oer_ext_arr_, 0, Dummy_oer_p_};
+const TTCN_Typedescriptor_t Dummy_descr_ = { "@General_Types.Dummy", &OCTETSTRING_ber_, &Dummy_raw_, &OCTETSTRING_text_, &Dummy_xer_, &OCTETSTRING_json_, &Dummy_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT0_raw_ = {0,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,NULL,false};
+const XERdescriptor_t       OCT0_xer_ = { {"OCT0>\n", "OCT0>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT0_oer_ext_arr_[0] = {};
+const int OCT0_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT0_oer_ = { -1, TRUE, 0, FALSE, 0, 0, OCT0_oer_ext_arr_, 0, OCT0_oer_p_};
+const TTCN_Typedescriptor_t OCT0_descr_ = { "@General_Types.OCT0", &OCTETSTRING_ber_, &OCT0_raw_, &OCTETSTRING_text_, &OCT0_xer_, &OCTETSTRING_json_, &OCT0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT1_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       OCT1_xer_ = { {"OCT1>\n", "OCT1>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT1_oer_ext_arr_[0] = {};
+const int OCT1_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT1_oer_ = { -1, TRUE, 1, FALSE, 0, 0, OCT1_oer_ext_arr_, 0, OCT1_oer_p_};
+const TTCN_Typedescriptor_t OCT1_descr_ = { "@General_Types.OCT1", &OCTETSTRING_ber_, &OCT1_raw_, &OCTETSTRING_text_, &OCT1_xer_, &OCTETSTRING_json_, &OCT1_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT2_raw_ = {16,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,2,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       OCT2_xer_ = { {"OCT2>\n", "OCT2>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT2_oer_ext_arr_[0] = {};
+const int OCT2_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT2_oer_ = { -1, TRUE, 2, FALSE, 0, 0, OCT2_oer_ext_arr_, 0, OCT2_oer_p_};
+const TTCN_Typedescriptor_t OCT2_descr_ = { "@General_Types.OCT2", &OCTETSTRING_ber_, &OCT2_raw_, &OCTETSTRING_text_, &OCT2_xer_, &OCTETSTRING_json_, &OCT2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT3_raw_ = {24,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,3,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       OCT3_xer_ = { {"OCT3>\n", "OCT3>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT3_oer_ext_arr_[0] = {};
+const int OCT3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT3_oer_ = { -1, TRUE, 3, FALSE, 0, 0, OCT3_oer_ext_arr_, 0, OCT3_oer_p_};
+const TTCN_Typedescriptor_t OCT3_descr_ = { "@General_Types.OCT3", &OCTETSTRING_ber_, &OCT3_raw_, &OCTETSTRING_text_, &OCT3_xer_, &OCTETSTRING_json_, &OCT3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT4_raw_ = {32,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,4,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       OCT4_xer_ = { {"OCT4>\n", "OCT4>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT4_oer_ext_arr_[0] = {};
+const int OCT4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT4_oer_ = { -1, TRUE, 4, FALSE, 0, 0, OCT4_oer_ext_arr_, 0, OCT4_oer_p_};
+const TTCN_Typedescriptor_t OCT4_descr_ = { "@General_Types.OCT4", &OCTETSTRING_ber_, &OCT4_raw_, &OCTETSTRING_text_, &OCT4_xer_, &OCTETSTRING_json_, &OCT4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT5_raw_ = {40,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,5,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       OCT5_xer_ = { {"OCT5>\n", "OCT5>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT5_oer_ext_arr_[0] = {};
+const int OCT5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT5_oer_ = { -1, TRUE, 5, FALSE, 0, 0, OCT5_oer_ext_arr_, 0, OCT5_oer_p_};
+const TTCN_Typedescriptor_t OCT5_descr_ = { "@General_Types.OCT5", &OCTETSTRING_ber_, &OCT5_raw_, &OCTETSTRING_text_, &OCT5_xer_, &OCTETSTRING_json_, &OCT5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT6_raw_ = {48,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,6,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       OCT6_xer_ = { {"OCT6>\n", "OCT6>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT6_oer_ext_arr_[0] = {};
+const int OCT6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT6_oer_ = { -1, TRUE, 6, FALSE, 0, 0, OCT6_oer_ext_arr_, 0, OCT6_oer_p_};
+const TTCN_Typedescriptor_t OCT6_descr_ = { "@General_Types.OCT6", &OCTETSTRING_ber_, &OCT6_raw_, &OCTETSTRING_text_, &OCT6_xer_, &OCTETSTRING_json_, &OCT6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT7_raw_ = {56,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,7,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       OCT7_xer_ = { {"OCT7>\n", "OCT7>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT7_oer_ext_arr_[0] = {};
+const int OCT7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT7_oer_ = { -1, TRUE, 7, FALSE, 0, 0, OCT7_oer_ext_arr_, 0, OCT7_oer_p_};
+const TTCN_Typedescriptor_t OCT7_descr_ = { "@General_Types.OCT7", &OCTETSTRING_ber_, &OCT7_raw_, &OCTETSTRING_text_, &OCT7_xer_, &OCTETSTRING_json_, &OCT7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT8_raw_ = {64,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,8,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       OCT8_xer_ = { {"OCT8>\n", "OCT8>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT8_oer_ext_arr_[0] = {};
+const int OCT8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT8_oer_ = { -1, TRUE, 8, FALSE, 0, 0, OCT8_oer_ext_arr_, 0, OCT8_oer_p_};
+const TTCN_Typedescriptor_t OCT8_descr_ = { "@General_Types.OCT8", &OCTETSTRING_ber_, &OCT8_raw_, &OCTETSTRING_text_, &OCT8_xer_, &OCTETSTRING_json_, &OCT8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT9_raw_ = {72,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,9,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       OCT9_xer_ = { {"OCT9>\n", "OCT9>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT9_oer_ext_arr_[0] = {};
+const int OCT9_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT9_oer_ = { -1, TRUE, 9, FALSE, 0, 0, OCT9_oer_ext_arr_, 0, OCT9_oer_p_};
+const TTCN_Typedescriptor_t OCT9_descr_ = { "@General_Types.OCT9", &OCTETSTRING_ber_, &OCT9_raw_, &OCTETSTRING_text_, &OCT9_xer_, &OCTETSTRING_json_, &OCT9_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT10_raw_ = {80,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,10,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       OCT10_xer_ = { {"OCT10>\n", "OCT10>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT10_oer_ext_arr_[0] = {};
+const int OCT10_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT10_oer_ = { -1, TRUE, 10, FALSE, 0, 0, OCT10_oer_ext_arr_, 0, OCT10_oer_p_};
+const TTCN_Typedescriptor_t OCT10_descr_ = { "@General_Types.OCT10", &OCTETSTRING_ber_, &OCT10_raw_, &OCTETSTRING_text_, &OCT10_xer_, &OCTETSTRING_json_, &OCT10_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT11_raw_ = {88,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,11,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       OCT11_xer_ = { {"OCT11>\n", "OCT11>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT11_oer_ext_arr_[0] = {};
+const int OCT11_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT11_oer_ = { -1, TRUE, 11, FALSE, 0, 0, OCT11_oer_ext_arr_, 0, OCT11_oer_p_};
+const TTCN_Typedescriptor_t OCT11_descr_ = { "@General_Types.OCT11", &OCTETSTRING_ber_, &OCT11_raw_, &OCTETSTRING_text_, &OCT11_xer_, &OCTETSTRING_json_, &OCT11_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT12_raw_ = {96,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,12,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       OCT12_xer_ = { {"OCT12>\n", "OCT12>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT12_oer_ext_arr_[0] = {};
+const int OCT12_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT12_oer_ = { -1, TRUE, 12, FALSE, 0, 0, OCT12_oer_ext_arr_, 0, OCT12_oer_p_};
+const TTCN_Typedescriptor_t OCT12_descr_ = { "@General_Types.OCT12", &OCTETSTRING_ber_, &OCT12_raw_, &OCTETSTRING_text_, &OCT12_xer_, &OCTETSTRING_json_, &OCT12_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT13_raw_ = {104,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,13,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       OCT13_xer_ = { {"OCT13>\n", "OCT13>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT13_oer_ext_arr_[0] = {};
+const int OCT13_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT13_oer_ = { -1, TRUE, 13, FALSE, 0, 0, OCT13_oer_ext_arr_, 0, OCT13_oer_p_};
+const TTCN_Typedescriptor_t OCT13_descr_ = { "@General_Types.OCT13", &OCTETSTRING_ber_, &OCT13_raw_, &OCTETSTRING_text_, &OCT13_xer_, &OCTETSTRING_json_, &OCT13_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT14_raw_ = {112,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,14,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       OCT14_xer_ = { {"OCT14>\n", "OCT14>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT14_oer_ext_arr_[0] = {};
+const int OCT14_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT14_oer_ = { -1, TRUE, 14, FALSE, 0, 0, OCT14_oer_ext_arr_, 0, OCT14_oer_p_};
+const TTCN_Typedescriptor_t OCT14_descr_ = { "@General_Types.OCT14", &OCTETSTRING_ber_, &OCT14_raw_, &OCTETSTRING_text_, &OCT14_xer_, &OCTETSTRING_json_, &OCT14_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT15_raw_ = {120,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,15,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       OCT15_xer_ = { {"OCT15>\n", "OCT15>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT15_oer_ext_arr_[0] = {};
+const int OCT15_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT15_oer_ = { -1, TRUE, 15, FALSE, 0, 0, OCT15_oer_ext_arr_, 0, OCT15_oer_p_};
+const TTCN_Typedescriptor_t OCT15_descr_ = { "@General_Types.OCT15", &OCTETSTRING_ber_, &OCT15_raw_, &OCTETSTRING_text_, &OCT15_xer_, &OCTETSTRING_json_, &OCT15_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT16_raw_ = {128,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,16,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       OCT16_xer_ = { {"OCT16>\n", "OCT16>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT16_oer_ext_arr_[0] = {};
+const int OCT16_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT16_oer_ = { -1, TRUE, 16, FALSE, 0, 0, OCT16_oer_ext_arr_, 0, OCT16_oer_p_};
+const TTCN_Typedescriptor_t OCT16_descr_ = { "@General_Types.OCT16", &OCTETSTRING_ber_, &OCT16_raw_, &OCTETSTRING_text_, &OCT16_xer_, &OCTETSTRING_json_, &OCT16_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT17_raw_ = {136,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,17,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       OCT17_xer_ = { {"OCT17>\n", "OCT17>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT17_oer_ext_arr_[0] = {};
+const int OCT17_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT17_oer_ = { -1, TRUE, 17, FALSE, 0, 0, OCT17_oer_ext_arr_, 0, OCT17_oer_p_};
+const TTCN_Typedescriptor_t OCT17_descr_ = { "@General_Types.OCT17", &OCTETSTRING_ber_, &OCT17_raw_, &OCTETSTRING_text_, &OCT17_xer_, &OCTETSTRING_json_, &OCT17_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT18_raw_ = {144,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,18,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       OCT18_xer_ = { {"OCT18>\n", "OCT18>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT18_oer_ext_arr_[0] = {};
+const int OCT18_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT18_oer_ = { -1, TRUE, 18, FALSE, 0, 0, OCT18_oer_ext_arr_, 0, OCT18_oer_p_};
+const TTCN_Typedescriptor_t OCT18_descr_ = { "@General_Types.OCT18", &OCTETSTRING_ber_, &OCT18_raw_, &OCTETSTRING_text_, &OCT18_xer_, &OCTETSTRING_json_, &OCT18_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT19_raw_ = {152,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,19,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       OCT19_xer_ = { {"OCT19>\n", "OCT19>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT19_oer_ext_arr_[0] = {};
+const int OCT19_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT19_oer_ = { -1, TRUE, 19, FALSE, 0, 0, OCT19_oer_ext_arr_, 0, OCT19_oer_p_};
+const TTCN_Typedescriptor_t OCT19_descr_ = { "@General_Types.OCT19", &OCTETSTRING_ber_, &OCT19_raw_, &OCTETSTRING_text_, &OCT19_xer_, &OCTETSTRING_json_, &OCT19_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT20_raw_ = {160,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,20,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       OCT20_xer_ = { {"OCT20>\n", "OCT20>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT20_oer_ext_arr_[0] = {};
+const int OCT20_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT20_oer_ = { -1, TRUE, 20, FALSE, 0, 0, OCT20_oer_ext_arr_, 0, OCT20_oer_p_};
+const TTCN_Typedescriptor_t OCT20_descr_ = { "@General_Types.OCT20", &OCTETSTRING_ber_, &OCT20_raw_, &OCTETSTRING_text_, &OCT20_xer_, &OCTETSTRING_json_, &OCT20_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT32_raw_ = {256,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,32,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       OCT32_xer_ = { {"OCT32>\n", "OCT32>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT32_oer_ext_arr_[0] = {};
+const int OCT32_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT32_oer_ = { -1, TRUE, 32, FALSE, 0, 0, OCT32_oer_ext_arr_, 0, OCT32_oer_p_};
+const TTCN_Typedescriptor_t OCT32_descr_ = { "@General_Types.OCT32", &OCTETSTRING_ber_, &OCT32_raw_, &OCTETSTRING_text_, &OCT32_xer_, &OCTETSTRING_json_, &OCT32_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT34_raw_ = {272,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,34,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       OCT34_xer_ = { {"OCT34>\n", "OCT34>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT34_oer_ext_arr_[0] = {};
+const int OCT34_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT34_oer_ = { -1, TRUE, 34, FALSE, 0, 0, OCT34_oer_ext_arr_, 0, OCT34_oer_p_};
+const TTCN_Typedescriptor_t OCT34_descr_ = { "@General_Types.OCT34", &OCTETSTRING_ber_, &OCT34_raw_, &OCTETSTRING_text_, &OCT34_xer_, &OCTETSTRING_json_, &OCT34_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT46_raw_ = {368,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,46,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       OCT46_xer_ = { {"OCT46>\n", "OCT46>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT46_oer_ext_arr_[0] = {};
+const int OCT46_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT46_oer_ = { -1, TRUE, 46, FALSE, 0, 0, OCT46_oer_ext_arr_, 0, OCT46_oer_p_};
+const TTCN_Typedescriptor_t OCT46_descr_ = { "@General_Types.OCT46", &OCTETSTRING_ber_, &OCT46_raw_, &OCTETSTRING_text_, &OCT46_xer_, &OCTETSTRING_json_, &OCT46_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT1__260_raw_ = {0,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,NULL,false};
+const XERdescriptor_t       OCT1__260_xer_ = { {"OCT1_260>\n", "OCT1_260>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT1__260_oer_ext_arr_[0] = {};
+const int OCT1__260_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT1__260_oer_ = { -1, TRUE, -1, FALSE, 0, 0, OCT1__260_oer_ext_arr_, 0, OCT1__260_oer_p_};
+const TTCN_Typedescriptor_t OCT1__260_descr_ = { "@General_Types.OCT1_260", &OCTETSTRING_ber_, &OCT1__260_raw_, &OCTETSTRING_text_, &OCT1__260_xer_, &OCTETSTRING_json_, &OCT1__260_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT1__8_raw_ = {0,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,NULL,false};
+const XERdescriptor_t       OCT1__8_xer_ = { {"OCT1_8>\n", "OCT1_8>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT1__8_oer_ext_arr_[0] = {};
+const int OCT1__8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT1__8_oer_ = { -1, TRUE, -1, FALSE, 0, 0, OCT1__8_oer_ext_arr_, 0, OCT1__8_oer_p_};
+const TTCN_Typedescriptor_t OCT1__8_descr_ = { "@General_Types.OCT1_8", &OCTETSTRING_ber_, &OCT1__8_raw_, &OCTETSTRING_text_, &OCT1__8_xer_, &OCTETSTRING_json_, &OCT1__8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT1__12_raw_ = {0,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,NULL,false};
+const XERdescriptor_t       OCT1__12_xer_ = { {"OCT1_12>\n", "OCT1_12>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT1__12_oer_ext_arr_[0] = {};
+const int OCT1__12_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT1__12_oer_ = { -1, TRUE, -1, FALSE, 0, 0, OCT1__12_oer_ext_arr_, 0, OCT1__12_oer_p_};
+const TTCN_Typedescriptor_t OCT1__12_descr_ = { "@General_Types.OCT1_12", &OCTETSTRING_ber_, &OCT1__12_raw_, &OCTETSTRING_text_, &OCT1__12_xer_, &OCTETSTRING_json_, &OCT1__12_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT1__32_raw_ = {0,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,NULL,false};
+const XERdescriptor_t       OCT1__32_xer_ = { {"OCT1_32>\n", "OCT1_32>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT1__32_oer_ext_arr_[0] = {};
+const int OCT1__32_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT1__32_oer_ = { -1, TRUE, -1, FALSE, 0, 0, OCT1__32_oer_ext_arr_, 0, OCT1__32_oer_p_};
+const TTCN_Typedescriptor_t OCT1__32_descr_ = { "@General_Types.OCT1_32", &OCTETSTRING_ber_, &OCT1__32_raw_, &OCTETSTRING_text_, &OCT1__32_xer_, &OCTETSTRING_json_, &OCT1__32_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT1__50_raw_ = {0,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,NULL,false};
+const XERdescriptor_t       OCT1__50_xer_ = { {"OCT1_50>\n", "OCT1_50>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT1__50_oer_ext_arr_[0] = {};
+const int OCT1__50_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT1__50_oer_ = { -1, TRUE, -1, FALSE, 0, 0, OCT1__50_oer_ext_arr_, 0, OCT1__50_oer_p_};
+const TTCN_Typedescriptor_t OCT1__50_descr_ = { "@General_Types.OCT1_50", &OCTETSTRING_ber_, &OCT1__50_raw_, &OCTETSTRING_text_, &OCT1__50_xer_, &OCTETSTRING_json_, &OCT1__50_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT3__8_raw_ = {0,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,NULL,false};
+const XERdescriptor_t       OCT3__8_xer_ = { {"OCT3_8>\n", "OCT3_8>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT3__8_oer_ext_arr_[0] = {};
+const int OCT3__8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT3__8_oer_ = { -1, TRUE, -1, FALSE, 0, 0, OCT3__8_oer_ext_arr_, 0, OCT3__8_oer_p_};
+const TTCN_Typedescriptor_t OCT3__8_descr_ = { "@General_Types.OCT3_8", &OCTETSTRING_ber_, &OCT3__8_raw_, &OCTETSTRING_text_, &OCT3__8_xer_, &OCTETSTRING_json_, &OCT3__8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCTN_raw_ = {0,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,NULL,false};
+const XERdescriptor_t       OCTN_xer_ = { {"OCTN>\n", "OCTN>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCTN_oer_ext_arr_[0] = {};
+const int OCTN_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCTN_oer_ = { -1, TRUE, -1, FALSE, 0, 0, OCTN_oer_ext_arr_, 0, OCTN_oer_p_};
+const TTCN_Typedescriptor_t OCTN_descr_ = { "@General_Types.OCTN", &OCTETSTRING_ber_, &OCTN_raw_, &OCTETSTRING_text_, &OCTN_xer_, &OCTETSTRING_json_, &OCTN_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t HEX1_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,1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       HEX1_xer_ = { {"HEX1>\n", "HEX1>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_Typedescriptor_t HEX1_descr_ = { "@General_Types.HEX1", NULL, &HEX1_raw_, NULL, &HEX1_xer_, &HEXSTRING_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t HEX0__16_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       HEX0__16_xer_ = { {"HEX0_16>\n", "HEX0_16>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_Typedescriptor_t HEX0__16_descr_ = { "@General_Types.HEX0_16", NULL, &HEX0__16_raw_, NULL, &HEX0__16_xer_, &HEXSTRING_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t HEX5__16_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       HEX5__16_xer_ = { {"HEX5_16>\n", "HEX5_16>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_Typedescriptor_t HEX5__16_descr_ = { "@General_Types.HEX5_16", NULL, &HEX5__16_raw_, NULL, &HEX5__16_xer_, &HEXSTRING_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t HEX1__32_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       HEX1__32_xer_ = { {"HEX1_32>\n", "HEX1_32>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_Typedescriptor_t HEX1__32_descr_ = { "@General_Types.HEX1_32", NULL, &HEX1__32_raw_, NULL, &HEX1__32_xer_, &HEXSTRING_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT1_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,NULL,false};
+const XERdescriptor_t       INT1_xer_ = { {"INT1>\n", "INT1>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT1_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT1_descr_ = { "@General_Types.INT1", &INTEGER_ber_, &INT1_raw_, &INTEGER_text_, &INT1_xer_, &INTEGER_json_, &INT1_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t LIN1_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,NULL,false};
+const XERdescriptor_t       LIN1_xer_ = { {"LIN1>\n", "LIN1>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t LIN1_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t LIN1_descr_ = { "@General_Types.LIN1", &INTEGER_ber_, &LIN1_raw_, &INTEGER_text_, &LIN1_xer_, &INTEGER_json_, &LIN1_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t LIN2_raw_ = {16,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       LIN2_xer_ = { {"LIN2>\n", "LIN2>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t LIN2_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t LIN2_descr_ = { "@General_Types.LIN2", &INTEGER_ber_, &LIN2_raw_, &INTEGER_text_, &LIN2_xer_, &INTEGER_json_, &LIN2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t LIN2__BO__LAST_raw_ = {16,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       LIN2__BO__LAST_xer_ = { {"LIN2_BO_LAST>\n", "LIN2_BO_LAST>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t LIN2__BO__LAST_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t LIN2__BO__LAST_descr_ = { "@General_Types.LIN2_BO_LAST", &INTEGER_ber_, &LIN2__BO__LAST_raw_, &INTEGER_text_, &LIN2__BO__LAST_xer_, &INTEGER_json_, &LIN2__BO__LAST_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t LIN3__BO__LAST_raw_ = {24,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       LIN3__BO__LAST_xer_ = { {"LIN3_BO_LAST>\n", "LIN3_BO_LAST>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t LIN3__BO__LAST_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t LIN3__BO__LAST_descr_ = { "@General_Types.LIN3_BO_LAST", &INTEGER_ber_, &LIN3__BO__LAST_raw_, &INTEGER_text_, &LIN3__BO__LAST_xer_, &INTEGER_json_, &LIN3__BO__LAST_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t LIN4__BO__LAST_raw_ = {32,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       LIN4__BO__LAST_xer_ = { {"LIN4_BO_LAST>\n", "LIN4_BO_LAST>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t LIN4__BO__LAST_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t LIN4__BO__LAST_descr_ = { "@General_Types.LIN4_BO_LAST", &INTEGER_ber_, &LIN4__BO__LAST_raw_, &INTEGER_text_, &LIN4__BO__LAST_xer_, &INTEGER_json_, &LIN4__BO__LAST_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT1b_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT1b_xer_ = { {"INT1b>\n", "INT1b>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT1b_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT1b_descr_ = { "@General_Types.INT1b", &INTEGER_ber_, &INT1b_raw_, &INTEGER_text_, &INT1b_xer_, &INTEGER_json_, &INT1b_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT2b_raw_ = {2,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT2b_xer_ = { {"INT2b>\n", "INT2b>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT2b_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT2b_descr_ = { "@General_Types.INT2b", &INTEGER_ber_, &INT2b_raw_, &INTEGER_text_, &INT2b_xer_, &INTEGER_json_, &INT2b_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT3b_raw_ = {3,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT3b_xer_ = { {"INT3b>\n", "INT3b>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT3b_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT3b_descr_ = { "@General_Types.INT3b", &INTEGER_ber_, &INT3b_raw_, &INTEGER_text_, &INT3b_xer_, &INTEGER_json_, &INT3b_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT4b_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,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT4b_xer_ = { {"INT4b>\n", "INT4b>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT4b_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT4b_descr_ = { "@General_Types.INT4b", &INTEGER_ber_, &INT4b_raw_, &INTEGER_text_, &INT4b_xer_, &INTEGER_json_, &INT4b_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT5b_raw_ = {5,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT5b_xer_ = { {"INT5b>\n", "INT5b>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT5b_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT5b_descr_ = { "@General_Types.INT5b", &INTEGER_ber_, &INT5b_raw_, &INTEGER_text_, &INT5b_xer_, &INTEGER_json_, &INT5b_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT6b_raw_ = {6,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT6b_xer_ = { {"INT6b>\n", "INT6b>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT6b_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT6b_descr_ = { "@General_Types.INT6b", &INTEGER_ber_, &INT6b_raw_, &INTEGER_text_, &INT6b_xer_, &INTEGER_json_, &INT6b_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT7b_raw_ = {7,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT7b_xer_ = { {"INT7b>\n", "INT7b>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT7b_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT7b_descr_ = { "@General_Types.INT7b", &INTEGER_ber_, &INT7b_raw_, &INTEGER_text_, &INT7b_xer_, &INTEGER_json_, &INT7b_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT11b__BO__LAST_raw_ = {11,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT11b__BO__LAST_xer_ = { {"INT11b_BO_LAST>\n", "INT11b_BO_LAST>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT11b__BO__LAST_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT11b__BO__LAST_descr_ = { "@General_Types.INT11b_BO_LAST", &INTEGER_ber_, &INT11b__BO__LAST_raw_, &INTEGER_text_, &INT11b__BO__LAST_xer_, &INTEGER_json_, &INT11b__BO__LAST_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT12b__BO__LAST_raw_ = {12,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT12b__BO__LAST_xer_ = { {"INT12b_BO_LAST>\n", "INT12b_BO_LAST>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT12b__BO__LAST_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT12b__BO__LAST_descr_ = { "@General_Types.INT12b_BO_LAST", &INTEGER_ber_, &INT12b__BO__LAST_raw_, &INTEGER_text_, &INT12b__BO__LAST_xer_, &INTEGER_json_, &INT12b__BO__LAST_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT13b__BO__LAST_raw_ = {13,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT13b__BO__LAST_xer_ = { {"INT13b_BO_LAST>\n", "INT13b_BO_LAST>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT13b__BO__LAST_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT13b__BO__LAST_descr_ = { "@General_Types.INT13b_BO_LAST", &INTEGER_ber_, &INT13b__BO__LAST_raw_, &INTEGER_text_, &INT13b__BO__LAST_xer_, &INTEGER_json_, &INT13b__BO__LAST_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT14b__BO__LAST_raw_ = {14,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT14b__BO__LAST_xer_ = { {"INT14b_BO_LAST>\n", "INT14b_BO_LAST>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT14b__BO__LAST_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT14b__BO__LAST_descr_ = { "@General_Types.INT14b_BO_LAST", &INTEGER_ber_, &INT14b__BO__LAST_raw_, &INTEGER_text_, &INT14b__BO__LAST_xer_, &INTEGER_json_, &INT14b__BO__LAST_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT20b__BO__LAST_raw_ = {20,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT20b__BO__LAST_xer_ = { {"INT20b_BO_LAST>\n", "INT20b_BO_LAST>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT20b__BO__LAST_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT20b__BO__LAST_descr_ = { "@General_Types.INT20b_BO_LAST", &INTEGER_ber_, &INT20b__BO__LAST_raw_, &INTEGER_text_, &INT20b__BO__LAST_xer_, &INTEGER_json_, &INT20b__BO__LAST_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT31b__BO__LAST_raw_ = {31,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT31b__BO__LAST_xer_ = { {"INT31b_BO_LAST>\n", "INT31b_BO_LAST>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT31b__BO__LAST_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT31b__BO__LAST_descr_ = { "@General_Types.INT31b_BO_LAST", &INTEGER_ber_, &INT31b__BO__LAST_raw_, &INTEGER_text_, &INT31b__BO__LAST_xer_, &INTEGER_json_, &INT31b__BO__LAST_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_Typedescriptor_t& Dummy__comptype_descr_ = COMPONENT_descr_;
+const TTCN_Typedescriptor_t& Dummy__CT_descr_ = COMPONENT_descr_;
+const TTCN_RAWdescriptor_t Protocols_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for Protocols
+const TTCN_Typedescriptor_t Protocols_descr_ = { "@General_Types.Protocols", NULL, &Protocols_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT1List_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for OCT1List
+const TTCN_Typedescriptor_t OCT1List_descr_ = { "@General_Types.OCT1List", NULL, &OCT1List_raw_, NULL, NULL, NULL, NULL, &OCT1_descr_, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       OCT1List_0_xer_ = { {"OCT1>\n", "OCT1>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT1List_0_oer_ext_arr_[0] = {};
+const int OCT1List_0_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT1List_0_oer_ = { -1, TRUE, 1, FALSE, 0, 0, OCT1List_0_oer_ext_arr_, 0, OCT1List_0_oer_p_};
+const TTCN_Typedescriptor_t OCT1List_0_descr_ = { "@General_Types.OCT1List.<oftype>", &OCTETSTRING_ber_, &OCT1_raw_, &OCTETSTRING_text_, &OCT1List_0_xer_, &OCTETSTRING_json_, &OCT1List_0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT2List_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for OCT2List
+const TTCN_Typedescriptor_t OCT2List_descr_ = { "@General_Types.OCT2List", NULL, &OCT2List_raw_, NULL, NULL, NULL, NULL, &OCT2_descr_, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       OCT2List_0_xer_ = { {"OCT2>\n", "OCT2>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT2List_0_oer_ext_arr_[0] = {};
+const int OCT2List_0_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT2List_0_oer_ = { -1, TRUE, 2, FALSE, 0, 0, OCT2List_0_oer_ext_arr_, 0, OCT2List_0_oer_p_};
+const TTCN_Typedescriptor_t OCT2List_0_descr_ = { "@General_Types.OCT2List.<oftype>", &OCTETSTRING_ber_, &OCT2_raw_, &OCTETSTRING_text_, &OCT2List_0_xer_, &OCTETSTRING_json_, &OCT2List_0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT3List_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for OCT3List
+const TTCN_Typedescriptor_t OCT3List_descr_ = { "@General_Types.OCT3List", NULL, &OCT3List_raw_, NULL, NULL, NULL, NULL, &OCT3_descr_, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       OCT3List_0_xer_ = { {"OCT3>\n", "OCT3>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT3List_0_oer_ext_arr_[0] = {};
+const int OCT3List_0_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT3List_0_oer_ = { -1, TRUE, 3, FALSE, 0, 0, OCT3List_0_oer_ext_arr_, 0, OCT3List_0_oer_p_};
+const TTCN_Typedescriptor_t OCT3List_0_descr_ = { "@General_Types.OCT3List.<oftype>", &OCTETSTRING_ber_, &OCT3_raw_, &OCTETSTRING_text_, &OCT3List_0_xer_, &OCTETSTRING_json_, &OCT3List_0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT4List_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for OCT4List
+const TTCN_Typedescriptor_t OCT4List_descr_ = { "@General_Types.OCT4List", NULL, &OCT4List_raw_, NULL, NULL, NULL, NULL, &OCT4_descr_, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       OCT4List_0_xer_ = { {"OCT4>\n", "OCT4>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT4List_0_oer_ext_arr_[0] = {};
+const int OCT4List_0_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT4List_0_oer_ = { -1, TRUE, 4, FALSE, 0, 0, OCT4List_0_oer_ext_arr_, 0, OCT4List_0_oer_p_};
+const TTCN_Typedescriptor_t OCT4List_0_descr_ = { "@General_Types.OCT4List.<oftype>", &OCTETSTRING_ber_, &OCT4_raw_, &OCTETSTRING_text_, &OCT4List_0_xer_, &OCTETSTRING_json_, &OCT4List_0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT5List_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for OCT5List
+const TTCN_Typedescriptor_t OCT5List_descr_ = { "@General_Types.OCT5List", NULL, &OCT5List_raw_, NULL, NULL, NULL, NULL, &OCT5_descr_, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       OCT5List_0_xer_ = { {"OCT5>\n", "OCT5>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT5List_0_oer_ext_arr_[0] = {};
+const int OCT5List_0_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT5List_0_oer_ = { -1, TRUE, 5, FALSE, 0, 0, OCT5List_0_oer_ext_arr_, 0, OCT5List_0_oer_p_};
+const TTCN_Typedescriptor_t OCT5List_0_descr_ = { "@General_Types.OCT5List.<oftype>", &OCTETSTRING_ber_, &OCT5_raw_, &OCTETSTRING_text_, &OCT5List_0_xer_, &OCTETSTRING_json_, &OCT5List_0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT6List_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for OCT6List
+const TTCN_Typedescriptor_t OCT6List_descr_ = { "@General_Types.OCT6List", NULL, &OCT6List_raw_, NULL, NULL, NULL, NULL, &OCT6_descr_, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       OCT6List_0_xer_ = { {"OCT6>\n", "OCT6>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT6List_0_oer_ext_arr_[0] = {};
+const int OCT6List_0_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT6List_0_oer_ = { -1, TRUE, 6, FALSE, 0, 0, OCT6List_0_oer_ext_arr_, 0, OCT6List_0_oer_p_};
+const TTCN_Typedescriptor_t OCT6List_0_descr_ = { "@General_Types.OCT6List.<oftype>", &OCTETSTRING_ber_, &OCT6_raw_, &OCTETSTRING_text_, &OCT6List_0_xer_, &OCTETSTRING_json_, &OCT6List_0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t OCT7List_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for OCT7List
+const TTCN_Typedescriptor_t OCT7List_descr_ = { "@General_Types.OCT7List", NULL, &OCT7List_raw_, NULL, NULL, NULL, NULL, &OCT7_descr_, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       OCT7List_0_xer_ = { {"OCT7>\n", "OCT7>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OCT7List_0_oer_ext_arr_[0] = {};
+const int OCT7List_0_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OCT7List_0_oer_ = { -1, TRUE, 7, FALSE, 0, 0, OCT7List_0_oer_ext_arr_, 0, OCT7List_0_oer_p_};
+const TTCN_Typedescriptor_t OCT7List_0_descr_ = { "@General_Types.OCT7List.<oftype>", &OCTETSTRING_ber_, &OCT7_raw_, &OCTETSTRING_text_, &OCT7List_0_xer_, &OCTETSTRING_json_, &OCT7List_0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ListOfDummy__comptype_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ListOfDummy__comptype
+const TTCN_Typedescriptor_t ListOfDummy__comptype_descr_ = { "@General_Types.ListOfDummy_comptype", NULL, &ListOfDummy__comptype_raw_, NULL, NULL, NULL, NULL, &COMPONENT_descr_, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ListOfDummy__CT_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ListOfDummy__CT
+const TTCN_Typedescriptor_t ListOfDummy__CT_descr_ = { "@General_Types.ListOfDummy_CT", NULL, &ListOfDummy__CT_raw_, NULL, NULL, NULL, NULL, &COMPONENT_descr_, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ProtocolList_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ProtocolList
+const TTCN_Typedescriptor_t ProtocolList_descr_ = { "@General_Types.ProtocolList", NULL, &ProtocolList_raw_, NULL, NULL, NULL, NULL, &Protocols_descr_, TTCN_Typedescriptor_t::DONTCARE };
+TTCN_Module module_object("General_Types", __DATE__, __TIME__, module_checksum, NULL, NULL, 0U, 4294967295U, 4294967295U, 4294967295U, NULL, 0LU, 0, NULL, NULL, NULL, NULL, init_comp_type, NULL, NULL, NULL);
+
+static const RuntimeVersionChecker ver_checker(  current_runtime_version.requires_major_version_6,
+  current_runtime_version.requires_minor_version_6,
+  current_runtime_version.requires_patch_level_0,  current_runtime_version.requires_runtime_1);
+
+/* Member functions of C++ classes */
+
+
+const Integers Integer__array::UNBOUND_ELEM;
+Integer__array::Integer__array()
+{
+val_ptr = NULL;
+}
+
+Integer__array::Integer__array(null_type)
+{
+val_ptr = new recordof_setof_struct;
+val_ptr->ref_count = 1;
+val_ptr->n_elements = 0;
+val_ptr->value_elements = NULL;
+}
+
+Integer__array::Integer__array(const Integer__array& other_value)
+{
+if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @General_Types.Integer_array.");
+val_ptr = other_value.val_ptr;
+val_ptr->ref_count++;
+}
+
+Integer__array::~Integer__array()
+{
+clean_up();
+if (val_ptr != NULL) val_ptr = NULL;
+}
+
+void Integer__array::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.");
+}
+}
+
+Integer__array& Integer__array::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;
+}
+
+Integer__array& Integer__array::operator=(const Integer__array& other_value)
+{
+if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @General_Types.Integer_array.");
+if (this != &other_value) {
+clean_up();
+val_ptr = other_value.val_ptr;
+val_ptr->ref_count++;
+}
+return *this;
+}
+
+boolean Integer__array::operator==(null_type) const
+{
+if (val_ptr == NULL)
+TTCN_error("The left operand of comparison is an unbound value of type @General_Types.Integer_array.");
+return val_ptr->n_elements == 0 ;
+}
+
+boolean Integer__array::operator==(const Integer__array& other_value) const
+{
+if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @General_Types.Integer_array.");
+if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @General_Types.Integer_array.");
+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;
+}
+
+Integers& Integer__array::operator[](int index_value)
+{
+if (index_value < 0) TTCN_error("Accessing an element of type @General_Types.Integer_array 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 = (Integers**)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 Integers(*(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 Integers;
+}
+return *val_ptr->value_elements[index_value];
+}
+
+Integers& Integer__array::operator[](const INTEGER& index_value)
+{
+index_value.must_bound("Using an unbound integer value for indexing a value of type @General_Types.Integer_array.");
+return (*this)[(int)index_value];
+}
+
+const Integers& Integer__array::operator[](int index_value) const
+{
+if (val_ptr == NULL)
+TTCN_error("Accessing an element in an unbound value of type @General_Types.Integer_array.");
+if (index_value < 0) TTCN_error("Accessing an element of type @General_Types.Integer_array using a negative index: %d.", index_value);
+if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @General_Types.Integer_array: 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 Integers& Integer__array::operator[](const INTEGER& index_value) const
+{
+index_value.must_bound("Using an unbound integer value for indexing a value of type @General_Types.Integer_array.");
+return (*this)[(int)index_value];
+}
+
+Integer__array Integer__array::operator<<=(int rotate_count) const
+{
+return *this >>= (-rotate_count);
+}
+
+Integer__array Integer__array::operator<<=(const INTEGER& rotate_count) const
+{
+rotate_count.must_bound("Unbound integer operand of rotate left operator.");
+return *this >>= (int)(-rotate_count);
+}
+
+Integer__array Integer__array::operator>>=(const INTEGER& rotate_count) const
+{
+rotate_count.must_bound("Unbound integer operand of rotate right operator.");
+return *this >>= (int)rotate_count;
+}
+
+Integer__array Integer__array::operator>>=(int rotate_count) const
+{
+if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @General_Types.Integer_array.");
+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;
+Integer__array 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 Integers(*val_ptr->value_elements[i]);
+}
+}
+return ret_val;
+}
+
+Integer__array Integer__array::operator+(const Integer__array& other_value) const
+{
+if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @General_Types.Integer_array concatenation.");
+if (val_ptr->n_elements == 0) return other_value;
+if (other_value.val_ptr->n_elements == 0) return *this;
+Integer__array 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 Integers(*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 Integers(*other_value.val_ptr->value_elements[i]);
+}
+}
+return ret_val;
+}
+
+Integer__array Integer__array::substr(int index, int returncount) const
+{
+if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @General_Types.Integer_array.");
+check_substr_arguments(val_ptr->n_elements, index, returncount, "@General_Types.Integer_array","element");
+Integer__array 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 Integers(*val_ptr->value_elements[i+index]);
+}
+}
+return ret_val;
+}
+
+Integer__array Integer__array::replace(int index, int len, const Integer__array& repl) const
+{
+if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @General_Types.Integer_array.");
+if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @General_Types.Integer_array.");
+check_replace_arguments(val_ptr->n_elements, index, len, "@General_Types.Integer_array","element");
+Integer__array 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 Integers(*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 Integers(*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 Integers(*val_ptr->value_elements[index+i+len]);
+}
+}
+return ret_val;
+}
+
+Integer__array Integer__array::replace(int index, int len, const Integer__array_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 Integer__array::set_size(int new_size)
+{
+if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @General_Types.Integer_array.");
+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 = (Integers**)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 Integers(*(val_ptr->value_elements[elem_count]));
+}
+}
+clean_up();
+val_ptr = new_val_ptr;
+}
+if (new_size > val_ptr->n_elements) {
+val_ptr->value_elements = (Integers**)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 @General_Types.Integer_array: %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 = (Integers**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size);
+val_ptr->n_elements = new_size;
+}
+}
+
+boolean Integer__array::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 Integer__array::size_of() const
+{
+if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @General_Types.Integer_array.");
+return val_ptr->n_elements;
+}
+
+int Integer__array::lengthof() const
+{
+if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @General_Types.Integer_array.");
+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 Integer__array::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 Integer__array::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", "@General_Types.Integer_array");
+    }
+    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", "@General_Types.Integer_array");
+    }
+    break;
+  default:
+    TTCN_error("Internal error: Unknown operation type.");
+  }
+}
+
+void Integer__array::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 Integer__array::encode_text(Text_Buf& text_buf) const
+{
+if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @General_Types.Integer_array.");
+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 Integer__array::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 @General_Types.Integer_array.");
+val_ptr->value_elements = (Integers**)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 Integers;
+val_ptr->value_elements[elem_count]->decode_text(text_buf);
+}
+}
+
+void Integer__array::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void Integer__array::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int Integer__array::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;
+    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) 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 Integer__array::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 Integer__array_template::copy_value(const Integer__array& other_value)
+{
+if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @General_Types.Integer_array with an unbound value.");
+single_value.n_elements = other_value.size_of();
+single_value.value_elements = (Integers_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 Integers_template(other_value[elem_count]);
+} else {
+single_value.value_elements[elem_count] = new Integers_template;
+}
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void Integer__array_template::copy_template(const Integer__array_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 = (Integers_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 Integers_template(*other_value.single_value.value_elements[elem_count]);
+} else {
+single_value.value_elements[elem_count] = new Integers_template;
+}
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new Integer__array_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @General_Types.Integer_array.");
+break;
+}
+set_selection(other_value);
+}
+
+boolean Integer__array_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 Integer__array_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const Integer__array*)value_ptr)[value_index], legacy);
+else return ((const Integer__array_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit();
+}
+
+Integer__array_template::Integer__array_template()
+{
+}
+
+Integer__array_template::Integer__array_template(template_sel other_value)
+ : Record_Of_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+Integer__array_template::Integer__array_template(null_type)
+ : Record_Of_Template(SPECIFIC_VALUE)
+{
+single_value.n_elements = 0;
+single_value.value_elements = NULL;
+}
+
+Integer__array_template::Integer__array_template(const Integer__array& other_value)
+{
+copy_value(other_value);
+}
+
+Integer__array_template::Integer__array_template(const OPTIONAL<Integer__array>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const Integer__array&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @General_Types.Integer_array from an unbound optional field.");
+}
+}
+
+Integer__array_template::Integer__array_template(const Integer__array_template& other_value)
+ : Record_Of_Template()
+{
+copy_template(other_value);
+}
+
+Integer__array_template::~Integer__array_template()
+{
+clean_up();
+}
+
+void Integer__array_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:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+Integer__array_template& Integer__array_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+Integer__array_template& Integer__array_template::operator=(null_type)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value.n_elements = 0;
+single_value.value_elements = NULL;
+return *this;
+}
+
+Integer__array_template& Integer__array_template::operator=(const Integer__array& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+Integer__array_template& Integer__array_template::operator=(const OPTIONAL<Integer__array>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const Integer__array&)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 @General_Types.Integer_array.");
+}
+return *this;
+}
+
+Integer__array_template& Integer__array_template::operator=(const Integer__array_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+Integers_template& Integer__array_template::operator[](int index_value)
+{
+if (index_value < 0) TTCN_error("Accessing an element of a template for type @General_Types.Integer_array 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 @General_Types.Integer_array.");
+    break;
+}
+return *single_value.value_elements[index_value];
+}
+
+Integers_template& Integer__array_template::operator[](const INTEGER& index_value)
+{
+index_value.must_bound("Using an unbound integer value for indexing a template of type @General_Types.Integer_array.");
+return (*this)[(int)index_value];
+}
+
+const Integers_template& Integer__array_template::operator[](int index_value) const
+{
+if (index_value < 0) TTCN_error("Accessing an element of a template for type @General_Types.Integer_array using a negative index: %d.", index_value);
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @General_Types.Integer_array.");
+if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @General_Types.Integer_array: 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 Integers_template& Integer__array_template::operator[](const INTEGER& index_value) const
+{
+index_value.must_bound("Using an unbound integer value for indexing a template of type @General_Types.Integer_array.");
+return (*this)[(int)index_value];
+}
+
+void Integer__array_template::set_size(int new_size)
+{
+if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @General_Types.Integer_array.");
+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 = (Integers_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 Integers_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 Integers_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 = (Integers_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size);
+single_value.n_elements = new_size;
+}
+}
+
+int Integer__array_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 Integer__array_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 @General_Types.Integer_array 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 @General_Types.Integer_array 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 @General_Types.Integer_array 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 @General_Types.Integer_array 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 @General_Types.Integer_array 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 @General_Types.Integer_array containing complemented list.", op_name);
+default:
+  TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @General_Types.Integer_array.", op_name);
+}
+return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @General_Types.Integer_array");
+}
+
+boolean Integer__array_template::match(const Integer__array& 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;
+default:
+TTCN_error("Matching with an uninitialized/unsupported template of type @General_Types.Integer_array.");
+}
+return FALSE;
+}
+
+boolean Integer__array_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;
+}
+
+Integer__array Integer__array_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 @General_Types.Integer_array.");
+Integer__array 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;
+}
+
+Integer__array Integer__array_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);
+}
+
+Integer__array Integer__array_template::replace(int index, int len, const Integer__array_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());
+}
+
+Integer__array Integer__array_template::replace(int index, int len, const Integer__array& 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 Integer__array_template::set_type(template_sel template_type, unsigned int list_length)
+{
+clean_up();
+switch (template_type) {
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = list_length;
+value_list.list_value = new Integer__array_template[list_length];
+break;
+default:
+TTCN_error("Internal error: Setting an invalid type for a template of type @General_Types.Integer_array.");
+}
+set_selection(template_type);
+}
+
+Integer__array_template& Integer__array_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of type @General_Types.Integer_array.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @General_Types.Integer_array.");
+return value_list.list_value[list_index];
+}
+
+void Integer__array_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 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;
+default:
+log_generic();
+}
+log_restricted();
+log_ifpresent();
+}
+
+void Integer__array_template::log_match(const Integer__array& 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 Integer__array_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 @General_Types.Integer_array.");
+}
+}
+
+void Integer__array_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 @General_Types.Integer_array.");
+single_value.value_elements = (Integers_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 Integers_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 Integer__array_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 @General_Types.Integer_array.");
+}
+}
+
+boolean Integer__array_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean Integer__array_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 Integer__array_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: {
+    Integer__array_template temp;
+    temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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;
+  default:
+    param.type_error("record of template", "@General_Types.Integer_array");
+  }
+  is_ifpresent = param.get_ifpresent();
+  set_length_range(param);
+}
+
+void Integer__array_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 : "@General_Types.Integer_array");
+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 : "@General_Types.Integer_array");
+}
+
+boolean Integer__array_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);
+}
+}
+
+const VERDICTTYPE Verdicttypes::UNBOUND_ELEM;
+Verdicttypes::Verdicttypes()
+{
+val_ptr = NULL;
+}
+
+Verdicttypes::Verdicttypes(null_type)
+{
+val_ptr = new recordof_setof_struct;
+val_ptr->ref_count = 1;
+val_ptr->n_elements = 0;
+val_ptr->value_elements = NULL;
+}
+
+Verdicttypes::Verdicttypes(const Verdicttypes& other_value)
+{
+if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @General_Types.Verdicttypes.");
+val_ptr = other_value.val_ptr;
+val_ptr->ref_count++;
+}
+
+Verdicttypes::~Verdicttypes()
+{
+clean_up();
+if (val_ptr != NULL) val_ptr = NULL;
+}
+
+void Verdicttypes::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.");
+}
+}
+
+Verdicttypes& Verdicttypes::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;
+}
+
+Verdicttypes& Verdicttypes::operator=(const Verdicttypes& other_value)
+{
+if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @General_Types.Verdicttypes.");
+if (this != &other_value) {
+clean_up();
+val_ptr = other_value.val_ptr;
+val_ptr->ref_count++;
+}
+return *this;
+}
+
+boolean Verdicttypes::operator==(null_type) const
+{
+if (val_ptr == NULL)
+TTCN_error("The left operand of comparison is an unbound value of type @General_Types.Verdicttypes.");
+return val_ptr->n_elements == 0 ;
+}
+
+boolean Verdicttypes::operator==(const Verdicttypes& other_value) const
+{
+if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @General_Types.Verdicttypes.");
+if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @General_Types.Verdicttypes.");
+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;
+}
+
+VERDICTTYPE& Verdicttypes::operator[](int index_value)
+{
+if (index_value < 0) TTCN_error("Accessing an element of type @General_Types.Verdicttypes 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 = (VERDICTTYPE**)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 VERDICTTYPE(*(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 VERDICTTYPE;
+}
+return *val_ptr->value_elements[index_value];
+}
+
+VERDICTTYPE& Verdicttypes::operator[](const INTEGER& index_value)
+{
+index_value.must_bound("Using an unbound integer value for indexing a value of type @General_Types.Verdicttypes.");
+return (*this)[(int)index_value];
+}
+
+const VERDICTTYPE& Verdicttypes::operator[](int index_value) const
+{
+if (val_ptr == NULL)
+TTCN_error("Accessing an element in an unbound value of type @General_Types.Verdicttypes.");
+if (index_value < 0) TTCN_error("Accessing an element of type @General_Types.Verdicttypes using a negative index: %d.", index_value);
+if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @General_Types.Verdicttypes: 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 VERDICTTYPE& Verdicttypes::operator[](const INTEGER& index_value) const
+{
+index_value.must_bound("Using an unbound integer value for indexing a value of type @General_Types.Verdicttypes.");
+return (*this)[(int)index_value];
+}
+
+Verdicttypes Verdicttypes::operator<<=(int rotate_count) const
+{
+return *this >>= (-rotate_count);
+}
+
+Verdicttypes Verdicttypes::operator<<=(const INTEGER& rotate_count) const
+{
+rotate_count.must_bound("Unbound integer operand of rotate left operator.");
+return *this >>= (int)(-rotate_count);
+}
+
+Verdicttypes Verdicttypes::operator>>=(const INTEGER& rotate_count) const
+{
+rotate_count.must_bound("Unbound integer operand of rotate right operator.");
+return *this >>= (int)rotate_count;
+}
+
+Verdicttypes Verdicttypes::operator>>=(int rotate_count) const
+{
+if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @General_Types.Verdicttypes.");
+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;
+Verdicttypes 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 VERDICTTYPE(*val_ptr->value_elements[i]);
+}
+}
+return ret_val;
+}
+
+Verdicttypes Verdicttypes::operator+(const Verdicttypes& other_value) const
+{
+if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @General_Types.Verdicttypes concatenation.");
+if (val_ptr->n_elements == 0) return other_value;
+if (other_value.val_ptr->n_elements == 0) return *this;
+Verdicttypes 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 VERDICTTYPE(*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 VERDICTTYPE(*other_value.val_ptr->value_elements[i]);
+}
+}
+return ret_val;
+}
+
+Verdicttypes Verdicttypes::substr(int index, int returncount) const
+{
+if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @General_Types.Verdicttypes.");
+check_substr_arguments(val_ptr->n_elements, index, returncount, "@General_Types.Verdicttypes","element");
+Verdicttypes 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 VERDICTTYPE(*val_ptr->value_elements[i+index]);
+}
+}
+return ret_val;
+}
+
+Verdicttypes Verdicttypes::replace(int index, int len, const Verdicttypes& repl) const
+{
+if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @General_Types.Verdicttypes.");
+if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @General_Types.Verdicttypes.");
+check_replace_arguments(val_ptr->n_elements, index, len, "@General_Types.Verdicttypes","element");
+Verdicttypes 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 VERDICTTYPE(*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 VERDICTTYPE(*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 VERDICTTYPE(*val_ptr->value_elements[index+i+len]);
+}
+}
+return ret_val;
+}
+
+Verdicttypes Verdicttypes::replace(int index, int len, const Verdicttypes_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 Verdicttypes::set_size(int new_size)
+{
+if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @General_Types.Verdicttypes.");
+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 = (VERDICTTYPE**)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 VERDICTTYPE(*(val_ptr->value_elements[elem_count]));
+}
+}
+clean_up();
+val_ptr = new_val_ptr;
+}
+if (new_size > val_ptr->n_elements) {
+val_ptr->value_elements = (VERDICTTYPE**)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 @General_Types.Verdicttypes: %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 = (VERDICTTYPE**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size);
+val_ptr->n_elements = new_size;
+}
+}
+
+boolean Verdicttypes::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 Verdicttypes::size_of() const
+{
+if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @General_Types.Verdicttypes.");
+return val_ptr->n_elements;
+}
+
+int Verdicttypes::lengthof() const
+{
+if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @General_Types.Verdicttypes.");
+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 Verdicttypes::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 Verdicttypes::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", "@General_Types.Verdicttypes");
+    }
+    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", "@General_Types.Verdicttypes");
+    }
+    break;
+  default:
+    TTCN_error("Internal error: Unknown operation type.");
+  }
+}
+
+void Verdicttypes::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 Verdicttypes::encode_text(Text_Buf& text_buf) const
+{
+if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @General_Types.Verdicttypes.");
+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 Verdicttypes::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 @General_Types.Verdicttypes.");
+val_ptr->value_elements = (VERDICTTYPE**)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 VERDICTTYPE;
+val_ptr->value_elements[elem_count]->decode_text(text_buf);
+}
+}
+
+void Verdicttypes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void Verdicttypes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int Verdicttypes::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;
+    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) 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 Verdicttypes::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 Verdicttypes_template::copy_value(const Verdicttypes& other_value)
+{
+if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @General_Types.Verdicttypes with an unbound value.");
+single_value.n_elements = other_value.size_of();
+single_value.value_elements = (VERDICTTYPE_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 VERDICTTYPE_template(other_value[elem_count]);
+} else {
+single_value.value_elements[elem_count] = new VERDICTTYPE_template;
+}
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void Verdicttypes_template::copy_template(const Verdicttypes_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 = (VERDICTTYPE_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 VERDICTTYPE_template(*other_value.single_value.value_elements[elem_count]);
+} else {
+single_value.value_elements[elem_count] = new VERDICTTYPE_template;
+}
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new Verdicttypes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @General_Types.Verdicttypes.");
+break;
+}
+set_selection(other_value);
+}
+
+boolean Verdicttypes_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 Verdicttypes_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const Verdicttypes*)value_ptr)[value_index], legacy);
+else return ((const Verdicttypes_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit();
+}
+
+Verdicttypes_template::Verdicttypes_template()
+{
+}
+
+Verdicttypes_template::Verdicttypes_template(template_sel other_value)
+ : Record_Of_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+Verdicttypes_template::Verdicttypes_template(null_type)
+ : Record_Of_Template(SPECIFIC_VALUE)
+{
+single_value.n_elements = 0;
+single_value.value_elements = NULL;
+}
+
+Verdicttypes_template::Verdicttypes_template(const Verdicttypes& other_value)
+{
+copy_value(other_value);
+}
+
+Verdicttypes_template::Verdicttypes_template(const OPTIONAL<Verdicttypes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const Verdicttypes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @General_Types.Verdicttypes from an unbound optional field.");
+}
+}
+
+Verdicttypes_template::Verdicttypes_template(const Verdicttypes_template& other_value)
+ : Record_Of_Template()
+{
+copy_template(other_value);
+}
+
+Verdicttypes_template::~Verdicttypes_template()
+{
+clean_up();
+}
+
+void Verdicttypes_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:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+Verdicttypes_template& Verdicttypes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+Verdicttypes_template& Verdicttypes_template::operator=(null_type)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value.n_elements = 0;
+single_value.value_elements = NULL;
+return *this;
+}
+
+Verdicttypes_template& Verdicttypes_template::operator=(const Verdicttypes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+Verdicttypes_template& Verdicttypes_template::operator=(const OPTIONAL<Verdicttypes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const Verdicttypes&)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 @General_Types.Verdicttypes.");
+}
+return *this;
+}
+
+Verdicttypes_template& Verdicttypes_template::operator=(const Verdicttypes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+VERDICTTYPE_template& Verdicttypes_template::operator[](int index_value)
+{
+if (index_value < 0) TTCN_error("Accessing an element of a template for type @General_Types.Verdicttypes 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 @General_Types.Verdicttypes.");
+    break;
+}
+return *single_value.value_elements[index_value];
+}
+
+VERDICTTYPE_template& Verdicttypes_template::operator[](const INTEGER& index_value)
+{
+index_value.must_bound("Using an unbound integer value for indexing a template of type @General_Types.Verdicttypes.");
+return (*this)[(int)index_value];
+}
+
+const VERDICTTYPE_template& Verdicttypes_template::operator[](int index_value) const
+{
+if (index_value < 0) TTCN_error("Accessing an element of a template for type @General_Types.Verdicttypes using a negative index: %d.", index_value);
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @General_Types.Verdicttypes.");
+if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @General_Types.Verdicttypes: 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 VERDICTTYPE_template& Verdicttypes_template::operator[](const INTEGER& index_value) const
+{
+index_value.must_bound("Using an unbound integer value for indexing a template of type @General_Types.Verdicttypes.");
+return (*this)[(int)index_value];
+}
+
+void Verdicttypes_template::set_size(int new_size)
+{
+if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @General_Types.Verdicttypes.");
+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 = (VERDICTTYPE_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 VERDICTTYPE_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 VERDICTTYPE_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 = (VERDICTTYPE_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size);
+single_value.n_elements = new_size;
+}
+}
+
+int Verdicttypes_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 Verdicttypes_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 @General_Types.Verdicttypes 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 @General_Types.Verdicttypes 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 @General_Types.Verdicttypes 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 @General_Types.Verdicttypes 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 @General_Types.Verdicttypes 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 @General_Types.Verdicttypes containing complemented list.", op_name);
+default:
+  TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @General_Types.Verdicttypes.", op_name);
+}
+return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @General_Types.Verdicttypes");
+}
+
+boolean Verdicttypes_template::match(const Verdicttypes& 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;
+default:
+TTCN_error("Matching with an uninitialized/unsupported template of type @General_Types.Verdicttypes.");
+}
+return FALSE;
+}
+
+boolean Verdicttypes_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;
+}
+
+Verdicttypes Verdicttypes_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 @General_Types.Verdicttypes.");
+Verdicttypes 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;
+}
+
+Verdicttypes Verdicttypes_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);
+}
+
+Verdicttypes Verdicttypes_template::replace(int index, int len, const Verdicttypes_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());
+}
+
+Verdicttypes Verdicttypes_template::replace(int index, int len, const Verdicttypes& 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 Verdicttypes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+clean_up();
+switch (template_type) {
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = list_length;
+value_list.list_value = new Verdicttypes_template[list_length];
+break;
+default:
+TTCN_error("Internal error: Setting an invalid type for a template of type @General_Types.Verdicttypes.");
+}
+set_selection(template_type);
+}
+
+Verdicttypes_template& Verdicttypes_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of type @General_Types.Verdicttypes.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @General_Types.Verdicttypes.");
+return value_list.list_value[list_index];
+}
+
+void Verdicttypes_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 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;
+default:
+log_generic();
+}
+log_restricted();
+log_ifpresent();
+}
+
+void Verdicttypes_template::log_match(const Verdicttypes& 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 Verdicttypes_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 @General_Types.Verdicttypes.");
+}
+}
+
+void Verdicttypes_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 @General_Types.Verdicttypes.");
+single_value.value_elements = (VERDICTTYPE_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 VERDICTTYPE_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 Verdicttypes_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 @General_Types.Verdicttypes.");
+}
+}
+
+boolean Verdicttypes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean Verdicttypes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 Verdicttypes_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: {
+    Verdicttypes_template temp;
+    temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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;
+  default:
+    param.type_error("record of template", "@General_Types.Verdicttypes");
+  }
+  is_ifpresent = param.get_ifpresent();
+  set_length_range(param);
+}
+
+void Verdicttypes_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 : "@General_Types.Verdicttypes");
+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 : "@General_Types.Verdicttypes");
+}
+
+boolean Verdicttypes_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);
+}
+}
+
+const VERDICTTYPE VerdicttypeSet::UNBOUND_ELEM;
+boolean VerdicttypeSet::compare_function(const Base_Type *left_ptr, int left_index, const Base_Type *right_ptr, int right_index)
+{
+if (((const VerdicttypeSet*)left_ptr)->val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @General_Types.VerdicttypeSet.");
+if (((const VerdicttypeSet*)right_ptr)->val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @General_Types.VerdicttypeSet.");
+if (((const VerdicttypeSet*)left_ptr)->val_ptr->value_elements[left_index] != NULL){
+if (((const VerdicttypeSet*)right_ptr)->val_ptr->value_elements[right_index] != NULL){
+return *((const VerdicttypeSet*)left_ptr)->val_ptr->value_elements[left_index] == *((const VerdicttypeSet*)right_ptr)->val_ptr->value_elements[right_index];
+} else return FALSE;
+} else {
+return ((const VerdicttypeSet*)right_ptr)->val_ptr->value_elements[right_index] == NULL;
+}
+}
+
+VerdicttypeSet::VerdicttypeSet()
+{
+val_ptr = NULL;
+}
+
+VerdicttypeSet::VerdicttypeSet(null_type)
+{
+val_ptr = new recordof_setof_struct;
+val_ptr->ref_count = 1;
+val_ptr->n_elements = 0;
+val_ptr->value_elements = NULL;
+}
+
+VerdicttypeSet::VerdicttypeSet(const VerdicttypeSet& other_value)
+{
+if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @General_Types.VerdicttypeSet.");
+val_ptr = other_value.val_ptr;
+val_ptr->ref_count++;
+}
+
+VerdicttypeSet::~VerdicttypeSet()
+{
+clean_up();
+if (val_ptr != NULL) val_ptr = NULL;
+}
+
+void VerdicttypeSet::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.");
+}
+}
+
+VerdicttypeSet& VerdicttypeSet::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;
+}
+
+VerdicttypeSet& VerdicttypeSet::operator=(const VerdicttypeSet& other_value)
+{
+if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @General_Types.VerdicttypeSet.");
+if (this != &other_value) {
+clean_up();
+val_ptr = other_value.val_ptr;
+val_ptr->ref_count++;
+}
+return *this;
+}
+
+boolean VerdicttypeSet::operator==(null_type) const
+{
+if (val_ptr == NULL)
+TTCN_error("The left operand of comparison is an unbound value of type @General_Types.VerdicttypeSet.");
+return val_ptr->n_elements == 0 ;
+}
+
+boolean VerdicttypeSet::operator==(const VerdicttypeSet& other_value) const
+{
+if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @General_Types.VerdicttypeSet.");
+if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @General_Types.VerdicttypeSet.");
+if (val_ptr == other_value.val_ptr) return TRUE;
+return compare_set_of(this, val_ptr->n_elements, &other_value, (other_value.val_ptr)->n_elements, compare_function);
+}
+
+VERDICTTYPE& VerdicttypeSet::operator[](int index_value)
+{
+if (index_value < 0) TTCN_error("Accessing an element of type @General_Types.VerdicttypeSet 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 = (VERDICTTYPE**)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 VERDICTTYPE(*(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 VERDICTTYPE;
+}
+return *val_ptr->value_elements[index_value];
+}
+
+VERDICTTYPE& VerdicttypeSet::operator[](const INTEGER& index_value)
+{
+index_value.must_bound("Using an unbound integer value for indexing a value of type @General_Types.VerdicttypeSet.");
+return (*this)[(int)index_value];
+}
+
+const VERDICTTYPE& VerdicttypeSet::operator[](int index_value) const
+{
+if (val_ptr == NULL)
+TTCN_error("Accessing an element in an unbound value of type @General_Types.VerdicttypeSet.");
+if (index_value < 0) TTCN_error("Accessing an element of type @General_Types.VerdicttypeSet using a negative index: %d.", index_value);
+if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @General_Types.VerdicttypeSet: 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 VERDICTTYPE& VerdicttypeSet::operator[](const INTEGER& index_value) const
+{
+index_value.must_bound("Using an unbound integer value for indexing a value of type @General_Types.VerdicttypeSet.");
+return (*this)[(int)index_value];
+}
+
+VerdicttypeSet VerdicttypeSet::operator<<=(int rotate_count) const
+{
+return *this >>= (-rotate_count);
+}
+
+VerdicttypeSet VerdicttypeSet::operator<<=(const INTEGER& rotate_count) const
+{
+rotate_count.must_bound("Unbound integer operand of rotate left operator.");
+return *this >>= (int)(-rotate_count);
+}
+
+VerdicttypeSet VerdicttypeSet::operator>>=(const INTEGER& rotate_count) const
+{
+rotate_count.must_bound("Unbound integer operand of rotate right operator.");
+return *this >>= (int)rotate_count;
+}
+
+VerdicttypeSet VerdicttypeSet::operator>>=(int rotate_count) const
+{
+if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @General_Types.VerdicttypeSet.");
+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;
+VerdicttypeSet 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 VERDICTTYPE(*val_ptr->value_elements[i]);
+}
+}
+return ret_val;
+}
+
+VerdicttypeSet VerdicttypeSet::operator+(const VerdicttypeSet& other_value) const
+{
+if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @General_Types.VerdicttypeSet concatenation.");
+if (val_ptr->n_elements == 0) return other_value;
+if (other_value.val_ptr->n_elements == 0) return *this;
+VerdicttypeSet 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 VERDICTTYPE(*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 VERDICTTYPE(*other_value.val_ptr->value_elements[i]);
+}
+}
+return ret_val;
+}
+
+VerdicttypeSet VerdicttypeSet::substr(int index, int returncount) const
+{
+if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @General_Types.VerdicttypeSet.");
+check_substr_arguments(val_ptr->n_elements, index, returncount, "@General_Types.VerdicttypeSet","element");
+VerdicttypeSet 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 VERDICTTYPE(*val_ptr->value_elements[i+index]);
+}
+}
+return ret_val;
+}
+
+VerdicttypeSet VerdicttypeSet::replace(int index, int len, const VerdicttypeSet& repl) const
+{
+if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @General_Types.VerdicttypeSet.");
+if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @General_Types.VerdicttypeSet.");
+check_replace_arguments(val_ptr->n_elements, index, len, "@General_Types.VerdicttypeSet","element");
+VerdicttypeSet 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 VERDICTTYPE(*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 VERDICTTYPE(*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 VERDICTTYPE(*val_ptr->value_elements[index+i+len]);
+}
+}
+return ret_val;
+}
+
+VerdicttypeSet VerdicttypeSet::replace(int index, int len, const VerdicttypeSet_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 VerdicttypeSet::set_size(int new_size)
+{
+if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @General_Types.VerdicttypeSet.");
+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 = (VERDICTTYPE**)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 VERDICTTYPE(*(val_ptr->value_elements[elem_count]));
+}
+}
+clean_up();
+val_ptr = new_val_ptr;
+}
+if (new_size > val_ptr->n_elements) {
+val_ptr->value_elements = (VERDICTTYPE**)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 @General_Types.VerdicttypeSet: %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 = (VERDICTTYPE**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size);
+val_ptr->n_elements = new_size;
+}
+}
+
+boolean VerdicttypeSet::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 VerdicttypeSet::size_of() const
+{
+if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @General_Types.VerdicttypeSet.");
+return val_ptr->n_elements;
+}
+
+int VerdicttypeSet::lengthof() const
+{
+if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @General_Types.VerdicttypeSet.");
+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 VerdicttypeSet::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 VerdicttypeSet::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE|Module_Param::BC_LIST, "set 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("set of value", "@General_Types.VerdicttypeSet");
+    }
+    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("set of value", "@General_Types.VerdicttypeSet");
+    }
+    break;
+  default:
+    TTCN_error("Internal error: Unknown operation type.");
+  }
+}
+
+void VerdicttypeSet::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 VerdicttypeSet::encode_text(Text_Buf& text_buf) const
+{
+if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @General_Types.VerdicttypeSet.");
+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 VerdicttypeSet::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 @General_Types.VerdicttypeSet.");
+val_ptr->value_elements = (VERDICTTYPE**)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 VERDICTTYPE;
+val_ptr->value_elements[elem_count]->decode_text(text_buf);
+}
+}
+
+void VerdicttypeSet::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void VerdicttypeSet::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int VerdicttypeSet::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;
+    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) 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 VerdicttypeSet::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 VerdicttypeSet_template::copy_value(const VerdicttypeSet& other_value)
+{
+if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @General_Types.VerdicttypeSet with an unbound value.");
+single_value.n_elements = other_value.size_of();
+single_value.value_elements = (VERDICTTYPE_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 VERDICTTYPE_template(other_value[elem_count]);
+} else {
+single_value.value_elements[elem_count] = new VERDICTTYPE_template;
+}
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void VerdicttypeSet_template::copy_template(const VerdicttypeSet_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 = (VERDICTTYPE_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 VERDICTTYPE_template(*other_value.single_value.value_elements[elem_count]);
+} else {
+single_value.value_elements[elem_count] = new VERDICTTYPE_template;
+}
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new VerdicttypeSet_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 SUPERSET_MATCH:
+case SUBSET_MATCH:
+value_set.n_items = other_value.value_set.n_items;
+value_set.set_items = new VERDICTTYPE_template[value_set.n_items];
+for (unsigned int set_count = 0; set_count < value_set.n_items; set_count++)
+value_set.set_items[set_count] = other_value.value_set.set_items[set_count];
+break;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @General_Types.VerdicttypeSet.");
+break;
+}
+set_selection(other_value);
+}
+
+boolean VerdicttypeSet_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 VerdicttypeSet_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const VerdicttypeSet*)value_ptr)[value_index], legacy);
+else return ((const VerdicttypeSet_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit();
+}
+
+boolean VerdicttypeSet_template::match_function_set(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 VerdicttypeSet_template*)template_ptr)->value_set.set_items[template_index].match((*(const VerdicttypeSet*)value_ptr)[value_index], legacy);
+else return ((const VerdicttypeSet_template*)template_ptr)->value_set.set_items[template_index].is_any_or_omit();
+}
+
+void VerdicttypeSet_template::log_function(const Base_Type *value_ptr, const Restricted_Length_Template *template_ptr, int index_value, int index_template, boolean legacy)
+{
+if (value_ptr == NULL) {
+if (template_ptr != NULL) {
+((const VerdicttypeSet_template*)template_ptr)->single_value.value_elements[index_template]->log();
+}
+} else if (template_ptr == NULL) {
+(*(const VerdicttypeSet*)value_ptr)[index_value].log();
+} else {
+((const VerdicttypeSet_template*)template_ptr)->single_value.value_elements[index_template]->log_match((*(const VerdicttypeSet*)value_ptr)[index_value], legacy);
+}
+}
+
+VerdicttypeSet_template::VerdicttypeSet_template()
+{
+}
+
+VerdicttypeSet_template::VerdicttypeSet_template(template_sel other_value)
+ : Restricted_Length_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+VerdicttypeSet_template::VerdicttypeSet_template(null_type)
+ : Restricted_Length_Template(SPECIFIC_VALUE)
+{
+single_value.n_elements = 0;
+single_value.value_elements = NULL;
+}
+
+VerdicttypeSet_template::VerdicttypeSet_template(const VerdicttypeSet& other_value)
+{
+copy_value(other_value);
+}
+
+VerdicttypeSet_template::VerdicttypeSet_template(const OPTIONAL<VerdicttypeSet>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VerdicttypeSet&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @General_Types.VerdicttypeSet from an unbound optional field.");
+}
+}
+
+VerdicttypeSet_template::VerdicttypeSet_template(const VerdicttypeSet_template& other_value)
+ : Restricted_Length_Template()
+{
+copy_template(other_value);
+}
+
+VerdicttypeSet_template::~VerdicttypeSet_template()
+{
+clean_up();
+}
+
+void VerdicttypeSet_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:
+delete [] value_list.list_value;
+break;
+case SUPERSET_MATCH:
+case SUBSET_MATCH:
+delete [] value_set.set_items;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+VerdicttypeSet_template& VerdicttypeSet_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+VerdicttypeSet_template& VerdicttypeSet_template::operator=(null_type)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value.n_elements = 0;
+single_value.value_elements = NULL;
+return *this;
+}
+
+VerdicttypeSet_template& VerdicttypeSet_template::operator=(const VerdicttypeSet& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+VerdicttypeSet_template& VerdicttypeSet_template::operator=(const OPTIONAL<VerdicttypeSet>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VerdicttypeSet&)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 @General_Types.VerdicttypeSet.");
+}
+return *this;
+}
+
+VerdicttypeSet_template& VerdicttypeSet_template::operator=(const VerdicttypeSet_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+VERDICTTYPE_template& VerdicttypeSet_template::operator[](int index_value)
+{
+if (index_value < 0) TTCN_error("Accessing an element of a template for type @General_Types.VerdicttypeSet 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 @General_Types.VerdicttypeSet.");
+    break;
+}
+return *single_value.value_elements[index_value];
+}
+
+VERDICTTYPE_template& VerdicttypeSet_template::operator[](const INTEGER& index_value)
+{
+index_value.must_bound("Using an unbound integer value for indexing a template of type @General_Types.VerdicttypeSet.");
+return (*this)[(int)index_value];
+}
+
+const VERDICTTYPE_template& VerdicttypeSet_template::operator[](int index_value) const
+{
+if (index_value < 0) TTCN_error("Accessing an element of a template for type @General_Types.VerdicttypeSet using a negative index: %d.", index_value);
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @General_Types.VerdicttypeSet.");
+if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @General_Types.VerdicttypeSet: 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 VERDICTTYPE_template& VerdicttypeSet_template::operator[](const INTEGER& index_value) const
+{
+index_value.must_bound("Using an unbound integer value for indexing a template of type @General_Types.VerdicttypeSet.");
+return (*this)[(int)index_value];
+}
+
+void VerdicttypeSet_template::set_size(int new_size)
+{
+if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @General_Types.VerdicttypeSet.");
+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 = (VERDICTTYPE_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 VERDICTTYPE_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 VERDICTTYPE_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 = (VERDICTTYPE_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size);
+single_value.n_elements = new_size;
+}
+}
+
+int VerdicttypeSet_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 VerdicttypeSet_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 @General_Types.VerdicttypeSet 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 @General_Types.VerdicttypeSet containing omit element.", op_name);
+    case ANY_OR_OMIT:
+      has_any_or_none = TRUE;
+      break;
+    default:
+      min_size++;
+      break;
+    }
+  }
+} break;
+case SUPERSET_MATCH:
+case SUBSET_MATCH: {
+  min_size = 0;
+  has_any_or_none = FALSE;
+  int elem_count = value_set.n_items;
+  if (!is_size) { while (elem_count>0 && !value_set.set_items[elem_count-1].is_bound()) elem_count--; }
+  for (int i=0; i<elem_count; i++) {
+    switch (value_set.set_items[i].get_selection())
+    {
+    case OMIT_VALUE:
+      TTCN_error("Performing %sof() operation on a template of type @General_Types.VerdicttypeSet containing omit element.", op_name);
+    case ANY_OR_OMIT:
+      has_any_or_none = TRUE;
+      break;
+    default:
+      min_size++;
+      break;
+    }
+  }
+  if (template_selection==SUPERSET_MATCH) {
+    has_any_or_none = TRUE;
+   } else {
+    int max_size = min_size;
+    min_size = 0;
+    if (!has_any_or_none) { // [0,max_size]
+      switch (length_restriction_type) {
+      case NO_LENGTH_RESTRICTION:
+        if (max_size==0) return 0;
+        TTCN_error("Performing %sof() operation on a template of type @General_Types.VerdicttypeSet with no exact size.", op_name);
+      case SINGLE_LENGTH_RESTRICTION:
+        if (length_restriction.single_length<=max_size)
+          return length_restriction.single_length;
+        TTCN_error("Performing %sof() operation on an invalid template of type @General_Types.VerdicttypeSet. The maximum size (%d) contradicts the length restriction (%d).", op_name, max_size, length_restriction.single_length);
+      case RANGE_LENGTH_RESTRICTION:
+        if (max_size==length_restriction.range_length.min_length) {
+          return max_size;
+        } else if (max_size>length_restriction.range_length.min_length){
+          TTCN_error("Performing %sof() operation on a template of type @General_Types.VerdicttypeSet with no exact size.", op_name);
+        } else
+          TTCN_error("Performing %sof() operation on an invalid template of type @General_Types.VerdicttypeSet. Maximum size (%d) contradicts the length restriction (%d..%d).", op_name, max_size, length_restriction.range_length.min_length, length_restriction.range_length.max_length);
+      default:
+        TTCN_error("Internal error: Template has invalid length restriction type.");
+      }
+    }
+  }
+} break;
+case OMIT_VALUE:
+  TTCN_error("Performing %sof() operation on a template of type @General_Types.VerdicttypeSet 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 @General_Types.VerdicttypeSet 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 @General_Types.VerdicttypeSet 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 @General_Types.VerdicttypeSet containing complemented list.", op_name);
+default:
+  TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @General_Types.VerdicttypeSet.", op_name);
+}
+return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @General_Types.VerdicttypeSet");
+}
+
+boolean VerdicttypeSet_template::match(const VerdicttypeSet& 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_set_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 SUPERSET_MATCH:
+case SUBSET_MATCH:
+return match_set_of(&other_value, value_length, this, value_set.n_items, match_function_set, legacy);
+default:
+TTCN_error("Matching with an uninitialized/unsupported template of type @General_Types.VerdicttypeSet.");
+}
+return FALSE;
+}
+
+boolean VerdicttypeSet_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;
+}
+
+VerdicttypeSet VerdicttypeSet_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 @General_Types.VerdicttypeSet.");
+VerdicttypeSet 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;
+}
+
+VerdicttypeSet VerdicttypeSet_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);
+}
+
+VerdicttypeSet VerdicttypeSet_template::replace(int index, int len, const VerdicttypeSet_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());
+}
+
+VerdicttypeSet VerdicttypeSet_template::replace(int index, int len, const VerdicttypeSet& 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 VerdicttypeSet_template::set_type(template_sel template_type, unsigned int list_length)
+{
+clean_up();
+switch (template_type) {
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = list_length;
+value_list.list_value = new VerdicttypeSet_template[list_length];
+break;
+case SUPERSET_MATCH:
+case SUBSET_MATCH:
+value_set.n_items = list_length;
+value_set.set_items = new VERDICTTYPE_template[list_length];
+break;
+default:
+TTCN_error("Internal error: Setting an invalid type for a template of type @General_Types.VerdicttypeSet.");
+}
+set_selection(template_type);
+}
+
+VerdicttypeSet_template& VerdicttypeSet_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of type @General_Types.VerdicttypeSet.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @General_Types.VerdicttypeSet.");
+return value_list.list_value[list_index];
+}
+
+VERDICTTYPE_template& VerdicttypeSet_template::set_item(unsigned int set_index)
+{
+if (template_selection != SUPERSET_MATCH && template_selection != SUBSET_MATCH) TTCN_error("Internal error: Accessing a set element of a non-set template of type @General_Types.VerdicttypeSet.");
+if (set_index >= value_set.n_items) TTCN_error("Internal error: Index overflow in a set template of type @General_Types.VerdicttypeSet.");
+return value_set.set_items[set_index];
+}
+
+void VerdicttypeSet_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(", ");
+single_value.value_elements[elem_count]->log();
+}
+TTCN_Logger::log_event_str(" }");
+} else TTCN_Logger::log_event_str("{ }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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 SUPERSET_MATCH:
+case SUBSET_MATCH:
+TTCN_Logger::log_event("%s(", template_selection == SUPERSET_MATCH ? "superset" : "subset");
+for (unsigned int set_count = 0; set_count < value_set.n_items; set_count++) {
+if (set_count > 0) TTCN_Logger::log_event_str(", ");
+value_set.set_items[set_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_restricted();
+log_ifpresent();
+}
+
+void VerdicttypeSet_template::log_match(const VerdicttypeSet& 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{
+size_t previous_size = TTCN_Logger::get_logmatch_buffer_len();
+if (template_selection == SPECIFIC_VALUE)
+  log_match_heuristics(&match_value, match_value.size_of(), this, single_value.n_elements, match_function_specific, log_function, legacy);
+else{
+if(previous_size != 0){
+TTCN_Logger::print_logmatch_buffer();
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+TTCN_Logger::log_event_str(":=");
+}
+}
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+TTCN_Logger::log_event_str(" unmatched");
+}
+return;
+}
+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");
+if (template_selection == SPECIFIC_VALUE) log_match_heuristics(&match_value, match_value.size_of(), this, single_value.n_elements, match_function_specific, log_function, legacy);
+}
+}
+
+void VerdicttypeSet_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_restricted(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;
+case SUPERSET_MATCH:
+case SUBSET_MATCH:
+text_buf.push_int(value_set.n_items);
+for (unsigned int set_count = 0; set_count < value_set.n_items; set_count++)
+value_set.set_items[set_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @General_Types.VerdicttypeSet.");
+}
+}
+
+void VerdicttypeSet_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_restricted(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 @General_Types.VerdicttypeSet.");
+single_value.value_elements = (VERDICTTYPE_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 VERDICTTYPE_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 VerdicttypeSet_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;
+case SUPERSET_MATCH:
+case SUBSET_MATCH:
+value_set.n_items = text_buf.pull_int().get_val();
+value_set.set_items = new VERDICTTYPE_template[value_set.n_items];
+for (unsigned int set_count = 0; set_count < value_set.n_items; set_count++)
+value_set.set_items[set_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of type @General_Types.VerdicttypeSet.");
+}
+}
+
+boolean VerdicttypeSet_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean VerdicttypeSet_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 VerdicttypeSet_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE|Module_Param::BC_LIST, "set 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: {
+    VerdicttypeSet_template temp;
+    temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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());
+    for (size_t p_i=0; p_i<param.get_size(); ++p_i) {
+      if (param.get_elem(p_i)->get_type()!=Module_Param::MP_NotUsed) {
+        (*this)[p_i].set_param(*param.get_elem(p_i));
+      }
+    }
+    break;
+  case Module_Param::MP_Superset_Template:
+  case Module_Param::MP_Subset_Template:
+    set_type(param.get_type()==Module_Param::MP_Superset_Template ? SUPERSET_MATCH : SUBSET_MATCH, param.get_size());
+    for (size_t p_i=0; p_i<param.get_size(); p_i++) {
+      set_item(p_i).set_param(*param.get_elem(p_i));
+    }
+    break;
+  default:
+    param.type_error("set of template", "@General_Types.VerdicttypeSet");
+  }
+  is_ifpresent = param.get_ifpresent();
+  set_length_range(param);
+}
+
+void VerdicttypeSet_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 : "@General_Types.VerdicttypeSet");
+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 : "@General_Types.VerdicttypeSet");
+}
+
+boolean VerdicttypeSet_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 FALSE;
+} else if (!strcmp(type, "length")) {
+  return length_restriction_type != NO_LENGTH_RESTRICTION;
+} else {
+  return Base_Template::get_istemplate_kind(type);
+}
+}
+
+const anytype Anytypes::UNBOUND_ELEM;
+Anytypes::Anytypes()
+{
+val_ptr = NULL;
+}
+
+Anytypes::Anytypes(null_type)
+{
+val_ptr = new recordof_setof_struct;
+val_ptr->ref_count = 1;
+val_ptr->n_elements = 0;
+val_ptr->value_elements = NULL;
+}
+
+Anytypes::Anytypes(const Anytypes& other_value)
+{
+if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @General_Types.Anytypes.");
+val_ptr = other_value.val_ptr;
+val_ptr->ref_count++;
+}
+
+Anytypes::~Anytypes()
+{
+clean_up();
+if (val_ptr != NULL) val_ptr = NULL;
+}
+
+void Anytypes::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.");
+}
+}
+
+Anytypes& Anytypes::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;
+}
+
+Anytypes& Anytypes::operator=(const Anytypes& other_value)
+{
+if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @General_Types.Anytypes.");
+if (this != &other_value) {
+clean_up();
+val_ptr = other_value.val_ptr;
+val_ptr->ref_count++;
+}
+return *this;
+}
+
+boolean Anytypes::operator==(null_type) const
+{
+if (val_ptr == NULL)
+TTCN_error("The left operand of comparison is an unbound value of type @General_Types.Anytypes.");
+return val_ptr->n_elements == 0 ;
+}
+
+boolean Anytypes::operator==(const Anytypes& other_value) const
+{
+if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @General_Types.Anytypes.");
+if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @General_Types.Anytypes.");
+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;
+}
+
+anytype& Anytypes::operator[](int index_value)
+{
+if (index_value < 0) TTCN_error("Accessing an element of type @General_Types.Anytypes 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 = (anytype**)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 anytype(*(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 anytype;
+}
+return *val_ptr->value_elements[index_value];
+}
+
+anytype& Anytypes::operator[](const INTEGER& index_value)
+{
+index_value.must_bound("Using an unbound integer value for indexing a value of type @General_Types.Anytypes.");
+return (*this)[(int)index_value];
+}
+
+const anytype& Anytypes::operator[](int index_value) const
+{
+if (val_ptr == NULL)
+TTCN_error("Accessing an element in an unbound value of type @General_Types.Anytypes.");
+if (index_value < 0) TTCN_error("Accessing an element of type @General_Types.Anytypes using a negative index: %d.", index_value);
+if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @General_Types.Anytypes: 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 anytype& Anytypes::operator[](const INTEGER& index_value) const
+{
+index_value.must_bound("Using an unbound integer value for indexing a value of type @General_Types.Anytypes.");
+return (*this)[(int)index_value];
+}
+
+Anytypes Anytypes::operator<<=(int rotate_count) const
+{
+return *this >>= (-rotate_count);
+}
+
+Anytypes Anytypes::operator<<=(const INTEGER& rotate_count) const
+{
+rotate_count.must_bound("Unbound integer operand of rotate left operator.");
+return *this >>= (int)(-rotate_count);
+}
+
+Anytypes Anytypes::operator>>=(const INTEGER& rotate_count) const
+{
+rotate_count.must_bound("Unbound integer operand of rotate right operator.");
+return *this >>= (int)rotate_count;
+}
+
+Anytypes Anytypes::operator>>=(int rotate_count) const
+{
+if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @General_Types.Anytypes.");
+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;
+Anytypes 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 anytype(*val_ptr->value_elements[i]);
+}
+}
+return ret_val;
+}
+
+Anytypes Anytypes::operator+(const Anytypes& other_value) const
+{
+if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @General_Types.Anytypes concatenation.");
+if (val_ptr->n_elements == 0) return other_value;
+if (other_value.val_ptr->n_elements == 0) return *this;
+Anytypes 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 anytype(*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 anytype(*other_value.val_ptr->value_elements[i]);
+}
+}
+return ret_val;
+}
+
+Anytypes Anytypes::substr(int index, int returncount) const
+{
+if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @General_Types.Anytypes.");
+check_substr_arguments(val_ptr->n_elements, index, returncount, "@General_Types.Anytypes","element");
+Anytypes 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 anytype(*val_ptr->value_elements[i+index]);
+}
+}
+return ret_val;
+}
+
+Anytypes Anytypes::replace(int index, int len, const Anytypes& repl) const
+{
+if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @General_Types.Anytypes.");
+if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @General_Types.Anytypes.");
+check_replace_arguments(val_ptr->n_elements, index, len, "@General_Types.Anytypes","element");
+Anytypes 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 anytype(*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 anytype(*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 anytype(*val_ptr->value_elements[index+i+len]);
+}
+}
+return ret_val;
+}
+
+Anytypes Anytypes::replace(int index, int len, const Anytypes_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 Anytypes::set_size(int new_size)
+{
+if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @General_Types.Anytypes.");
+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 = (anytype**)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 anytype(*(val_ptr->value_elements[elem_count]));
+}
+}
+clean_up();
+val_ptr = new_val_ptr;
+}
+if (new_size > val_ptr->n_elements) {
+val_ptr->value_elements = (anytype**)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 @General_Types.Anytypes: %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 = (anytype**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size);
+val_ptr->n_elements = new_size;
+}
+}
+
+boolean Anytypes::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 Anytypes::size_of() const
+{
+if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @General_Types.Anytypes.");
+return val_ptr->n_elements;
+}
+
+int Anytypes::lengthof() const
+{
+if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @General_Types.Anytypes.");
+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 Anytypes::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 Anytypes::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", "@General_Types.Anytypes");
+    }
+    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", "@General_Types.Anytypes");
+    }
+    break;
+  default:
+    TTCN_error("Internal error: Unknown operation type.");
+  }
+}
+
+void Anytypes::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 Anytypes::encode_text(Text_Buf& text_buf) const
+{
+if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @General_Types.Anytypes.");
+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 Anytypes::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 @General_Types.Anytypes.");
+val_ptr->value_elements = (anytype**)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 anytype;
+val_ptr->value_elements[elem_count]->decode_text(text_buf);
+}
+}
+
+void Anytypes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void Anytypes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int Anytypes::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;
+    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) 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 Anytypes::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 Anytypes_template::copy_value(const Anytypes& other_value)
+{
+if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @General_Types.Anytypes with an unbound value.");
+single_value.n_elements = other_value.size_of();
+single_value.value_elements = (anytype_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 anytype_template(other_value[elem_count]);
+} else {
+single_value.value_elements[elem_count] = new anytype_template;
+}
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void Anytypes_template::copy_template(const Anytypes_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 = (anytype_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 anytype_template(*other_value.single_value.value_elements[elem_count]);
+} else {
+single_value.value_elements[elem_count] = new anytype_template;
+}
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new Anytypes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @General_Types.Anytypes.");
+break;
+}
+set_selection(other_value);
+}
+
+boolean Anytypes_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 Anytypes_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const Anytypes*)value_ptr)[value_index], legacy);
+else return ((const Anytypes_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit();
+}
+
+Anytypes_template::Anytypes_template()
+{
+}
+
+Anytypes_template::Anytypes_template(template_sel other_value)
+ : Record_Of_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+Anytypes_template::Anytypes_template(null_type)
+ : Record_Of_Template(SPECIFIC_VALUE)
+{
+single_value.n_elements = 0;
+single_value.value_elements = NULL;
+}
+
+Anytypes_template::Anytypes_template(const Anytypes& other_value)
+{
+copy_value(other_value);
+}
+
+Anytypes_template::Anytypes_template(const OPTIONAL<Anytypes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const Anytypes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @General_Types.Anytypes from an unbound optional field.");
+}
+}
+
+Anytypes_template::Anytypes_template(const Anytypes_template& other_value)
+ : Record_Of_Template()
+{
+copy_template(other_value);
+}
+
+Anytypes_template::~Anytypes_template()
+{
+clean_up();
+}
+
+void Anytypes_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:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+Anytypes_template& Anytypes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+Anytypes_template& Anytypes_template::operator=(null_type)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value.n_elements = 0;
+single_value.value_elements = NULL;
+return *this;
+}
+
+Anytypes_template& Anytypes_template::operator=(const Anytypes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+Anytypes_template& Anytypes_template::operator=(const OPTIONAL<Anytypes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const Anytypes&)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 @General_Types.Anytypes.");
+}
+return *this;
+}
+
+Anytypes_template& Anytypes_template::operator=(const Anytypes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+anytype_template& Anytypes_template::operator[](int index_value)
+{
+if (index_value < 0) TTCN_error("Accessing an element of a template for type @General_Types.Anytypes 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 @General_Types.Anytypes.");
+    break;
+}
+return *single_value.value_elements[index_value];
+}
+
+anytype_template& Anytypes_template::operator[](const INTEGER& index_value)
+{
+index_value.must_bound("Using an unbound integer value for indexing a template of type @General_Types.Anytypes.");
+return (*this)[(int)index_value];
+}
+
+const anytype_template& Anytypes_template::operator[](int index_value) const
+{
+if (index_value < 0) TTCN_error("Accessing an element of a template for type @General_Types.Anytypes using a negative index: %d.", index_value);
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @General_Types.Anytypes.");
+if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @General_Types.Anytypes: 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 anytype_template& Anytypes_template::operator[](const INTEGER& index_value) const
+{
+index_value.must_bound("Using an unbound integer value for indexing a template of type @General_Types.Anytypes.");
+return (*this)[(int)index_value];
+}
+
+void Anytypes_template::set_size(int new_size)
+{
+if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @General_Types.Anytypes.");
+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 = (anytype_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 anytype_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 anytype_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 = (anytype_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size);
+single_value.n_elements = new_size;
+}
+}
+
+int Anytypes_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 Anytypes_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 @General_Types.Anytypes 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 @General_Types.Anytypes 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 @General_Types.Anytypes 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 @General_Types.Anytypes 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 @General_Types.Anytypes 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 @General_Types.Anytypes containing complemented list.", op_name);
+default:
+  TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @General_Types.Anytypes.", op_name);
+}
+return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @General_Types.Anytypes");
+}
+
+boolean Anytypes_template::match(const Anytypes& 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;
+default:
+TTCN_error("Matching with an uninitialized/unsupported template of type @General_Types.Anytypes.");
+}
+return FALSE;
+}
+
+boolean Anytypes_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;
+}
+
+Anytypes Anytypes_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 @General_Types.Anytypes.");
+Anytypes 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;
+}
+
+Anytypes Anytypes_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);
+}
+
+Anytypes Anytypes_template::replace(int index, int len, const Anytypes_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());
+}
+
+Anytypes Anytypes_template::replace(int index, int len, const Anytypes& 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 Anytypes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+clean_up();
+switch (template_type) {
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = list_length;
+value_list.list_value = new Anytypes_template[list_length];
+break;
+default:
+TTCN_error("Internal error: Setting an invalid type for a template of type @General_Types.Anytypes.");
+}
+set_selection(template_type);
+}
+
+Anytypes_template& Anytypes_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of type @General_Types.Anytypes.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @General_Types.Anytypes.");
+return value_list.list_value[list_index];
+}
+
+void Anytypes_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 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;
+default:
+log_generic();
+}
+log_restricted();
+log_ifpresent();
+}
+
+void Anytypes_template::log_match(const Anytypes& 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 Anytypes_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 @General_Types.Anytypes.");
+}
+}
+
+void Anytypes_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 @General_Types.Anytypes.");
+single_value.value_elements = (anytype_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 anytype_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 Anytypes_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 @General_Types.Anytypes.");
+}
+}
+
+boolean Anytypes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean Anytypes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 Anytypes_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: {
+    Anytypes_template temp;
+    temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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;
+  default:
+    param.type_error("record of template", "@General_Types.Anytypes");
+  }
+  is_ifpresent = param.get_ifpresent();
+  set_length_range(param);
+}
+
+void Anytypes_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 : "@General_Types.Anytypes");
+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 : "@General_Types.Anytypes");
+}
+
+boolean Anytypes_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);
+}
+}
+void anytype::copy_value(const anytype& other_value)
+{
+switch (other_value.union_selection) {
+default:
+TTCN_error("Assignment of an unbound union value of type @General_Types.anytype.");
+}
+union_selection = other_value.union_selection;
+}
+
+anytype::anytype()
+{
+union_selection = UNBOUND_VALUE;
+}
+
+anytype::anytype(const anytype& other_value)
+: Base_Type(){
+copy_value(other_value);
+}
+
+anytype::~anytype()
+{
+clean_up();
+}
+
+anytype& anytype::operator=(const anytype& other_value)
+{
+if (this != &other_value) {
+clean_up();
+copy_value(other_value);
+}
+return *this;
+}
+
+boolean anytype::operator==(const anytype& other_value) const
+{
+if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @General_Types.anytype.");
+if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @General_Types.anytype.");
+if (union_selection != other_value.union_selection) return FALSE;
+switch (union_selection) {
+default:
+return FALSE;
+}
+}
+
+boolean anytype::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 @General_Types.anytype.");
+return union_selection == checked_selection;
+}
+
+boolean anytype::is_bound() const
+{
+  return union_selection != UNBOUND_VALUE;
+}
+
+boolean anytype::is_value() const
+{
+switch (union_selection) {
+case UNBOUND_VALUE: return FALSE;
+default: TTCN_error("Invalid selection in union is_bound");}
+}
+
+void anytype::clean_up()
+{
+switch (union_selection) {
+default:
+  break;
+}
+union_selection = UNBOUND_VALUE;
+}
+
+void anytype::log() const
+{
+switch (union_selection) {
+default:
+TTCN_Logger::log_event_unbound();
+}
+}
+
+void anytype::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();
+  mp_last->error("Field %s does not exist in type @General_Types.anytype.", last_name);
+}
+
+void anytype::set_implicit_omit()
+{
+switch (union_selection) {
+default: break;
+}
+}
+
+void anytype::encode_text(Text_Buf& text_buf) const
+{
+text_buf.push_int(union_selection);
+switch (union_selection) {
+default:
+TTCN_error("Text encoder: Encoding an unbound value of union type @General_Types.anytype.");
+}
+}
+
+void anytype::decode_text(Text_Buf& text_buf)
+{
+switch ((union_selection_type)text_buf.pull_int().get_val()) {
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for type @General_Types.anytype.");
+}
+}
+
+void anytype_template::copy_value(const anytype& other_value)
+{
+single_value.union_selection = other_value.get_selection();
+switch (single_value.union_selection) {
+default:
+TTCN_error("Initializing a template with an unbound value of type @General_Types.anytype.");
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void anytype_template::copy_template(const anytype_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) {
+default:
+TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @General_Types.anytype.");
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new anytype_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;
+default:
+TTCN_error("Copying an uninitialized template of union type @General_Types.anytype.");
+}
+set_selection(other_value);
+}
+
+anytype_template::anytype_template()
+{
+}
+
+anytype_template::anytype_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+anytype_template::anytype_template(const anytype& other_value)
+{
+copy_value(other_value);
+}
+
+anytype_template::anytype_template(const OPTIONAL<anytype>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const anytype&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of union type @General_Types.anytype from an unbound optional field.");
+}
+}
+
+anytype_template::anytype_template(const anytype_template& other_value)
+: Base_Template(){
+copy_template(other_value);
+}
+
+anytype_template::~anytype_template()
+{
+clean_up();
+}
+
+void anytype_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+default:
+break;
+}
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+anytype_template& anytype_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+anytype_template& anytype_template::operator=(const anytype& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+anytype_template& anytype_template::operator=(const OPTIONAL<anytype>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const anytype&)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 @General_Types.anytype.");
+}
+return *this;
+}
+
+anytype_template& anytype_template::operator=(const anytype_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean anytype_template::match(const anytype& 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:
+{
+anytype::union_selection_type value_selection = other_value.get_selection();
+if (value_selection == anytype::UNBOUND_VALUE) return FALSE;
+if (value_selection != single_value.union_selection) return FALSE;
+switch (value_selection) {
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @General_Types.anytype.");
+}
+}
+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;
+default:
+TTCN_error ("Matching an uninitialized template of union type @General_Types.anytype.");
+}
+return FALSE;
+}
+
+boolean anytype_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+switch (single_value.union_selection) {
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @General_Types.anytype.");
+}
+}
+
+anytype anytype_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 @General_Types.anytype.");
+anytype ret_val;
+switch (single_value.union_selection) {
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @General_Types.anytype.");
+}
+return ret_val;
+}
+
+anytype_template& anytype_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @General_Types.anytype.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @General_Types.anytype.");
+return value_list.list_value[list_index];
+}
+void anytype_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error ("Internal error: Setting an invalid list for a template of union type @General_Types.anytype.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new anytype_template[list_length];
+}
+
+boolean anytype_template::ischosen(anytype::union_selection_type checked_selection) const
+{
+if (checked_selection == anytype::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @General_Types.anytype.");
+switch (template_selection) {
+case SPECIFIC_VALUE:
+if (single_value.union_selection == anytype::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @General_Types.anytype.");
+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 @General_Types.anytype 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 anytype_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+default:
+TTCN_Logger::log_event_str("<invalid selector>");
+}
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void anytype_template::log_match(const anytype& 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()) {
+switch (single_value.union_selection) {
+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 anytype_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) {
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @General_Types.anytype.");
+}
+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 @General_Types.anytype.");
+}
+}
+
+void anytype_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+{
+single_value.union_selection = anytype::UNBOUND_VALUE;
+anytype::union_selection_type new_selection = (anytype::union_selection_type)text_buf.pull_int().get_val();
+switch (new_selection) {
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @General_Types.anytype.");
+}
+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 anytype_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 @General_Types.anytype.");
+}
+}
+
+boolean anytype_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean anytype_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 anytype_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 `@General_Types.anytype'");
+    }
+    param.error("Field `%s' not found in union template type `@General_Types.anytype'", 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: {
+    anytype_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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", "@General_Types.anytype");
+    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();
+    mp_last->error("Field %s does not exist in type @General_Types.anytype.", last_name);
+  } break;
+  default:
+    param.type_error("union template", "@General_Types.anytype");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void anytype_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) {
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @General_Types.anytype.");
+}
+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 : "@General_Types.anytype");
+}
+
+
+const anytype AnytypeSet::UNBOUND_ELEM;
+boolean AnytypeSet::compare_function(const Base_Type *left_ptr, int left_index, const Base_Type *right_ptr, int right_index)
+{
+if (((const AnytypeSet*)left_ptr)->val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @General_Types.AnytypeSet.");
+if (((const AnytypeSet*)right_ptr)->val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @General_Types.AnytypeSet.");
+if (((const AnytypeSet*)left_ptr)->val_ptr->value_elements[left_index] != NULL){
+if (((const AnytypeSet*)right_ptr)->val_ptr->value_elements[right_index] != NULL){
+return *((const AnytypeSet*)left_ptr)->val_ptr->value_elements[left_index] == *((const AnytypeSet*)right_ptr)->val_ptr->value_elements[right_index];
+} else return FALSE;
+} else {
+return ((const AnytypeSet*)right_ptr)->val_ptr->value_elements[right_index] == NULL;
+}
+}
+
+AnytypeSet::AnytypeSet()
+{
+val_ptr = NULL;
+}
+
+AnytypeSet::AnytypeSet(null_type)
+{
+val_ptr = new recordof_setof_struct;
+val_ptr->ref_count = 1;
+val_ptr->n_elements = 0;
+val_ptr->value_elements = NULL;
+}
+
+AnytypeSet::AnytypeSet(const AnytypeSet& other_value)
+{
+if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @General_Types.AnytypeSet.");
+val_ptr = other_value.val_ptr;
+val_ptr->ref_count++;
+}
+
+AnytypeSet::~AnytypeSet()
+{
+clean_up();
+if (val_ptr != NULL) val_ptr = NULL;
+}
+
+void AnytypeSet::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.");
+}
+}
+
+AnytypeSet& AnytypeSet::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;
+}
+
+AnytypeSet& AnytypeSet::operator=(const AnytypeSet& other_value)
+{
+if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @General_Types.AnytypeSet.");
+if (this != &other_value) {
+clean_up();
+val_ptr = other_value.val_ptr;
+val_ptr->ref_count++;
+}
+return *this;
+}
+
+boolean AnytypeSet::operator==(null_type) const
+{
+if (val_ptr == NULL)
+TTCN_error("The left operand of comparison is an unbound value of type @General_Types.AnytypeSet.");
+return val_ptr->n_elements == 0 ;
+}
+
+boolean AnytypeSet::operator==(const AnytypeSet& other_value) const
+{
+if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @General_Types.AnytypeSet.");
+if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @General_Types.AnytypeSet.");
+if (val_ptr == other_value.val_ptr) return TRUE;
+return compare_set_of(this, val_ptr->n_elements, &other_value, (other_value.val_ptr)->n_elements, compare_function);
+}
+
+anytype& AnytypeSet::operator[](int index_value)
+{
+if (index_value < 0) TTCN_error("Accessing an element of type @General_Types.AnytypeSet 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 = (anytype**)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 anytype(*(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 anytype;
+}
+return *val_ptr->value_elements[index_value];
+}
+
+anytype& AnytypeSet::operator[](const INTEGER& index_value)
+{
+index_value.must_bound("Using an unbound integer value for indexing a value of type @General_Types.AnytypeSet.");
+return (*this)[(int)index_value];
+}
+
+const anytype& AnytypeSet::operator[](int index_value) const
+{
+if (val_ptr == NULL)
+TTCN_error("Accessing an element in an unbound value of type @General_Types.AnytypeSet.");
+if (index_value < 0) TTCN_error("Accessing an element of type @General_Types.AnytypeSet using a negative index: %d.", index_value);
+if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @General_Types.AnytypeSet: 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 anytype& AnytypeSet::operator[](const INTEGER& index_value) const
+{
+index_value.must_bound("Using an unbound integer value for indexing a value of type @General_Types.AnytypeSet.");
+return (*this)[(int)index_value];
+}
+
+AnytypeSet AnytypeSet::operator<<=(int rotate_count) const
+{
+return *this >>= (-rotate_count);
+}
+
+AnytypeSet AnytypeSet::operator<<=(const INTEGER& rotate_count) const
+{
+rotate_count.must_bound("Unbound integer operand of rotate left operator.");
+return *this >>= (int)(-rotate_count);
+}
+
+AnytypeSet AnytypeSet::operator>>=(const INTEGER& rotate_count) const
+{
+rotate_count.must_bound("Unbound integer operand of rotate right operator.");
+return *this >>= (int)rotate_count;
+}
+
+AnytypeSet AnytypeSet::operator>>=(int rotate_count) const
+{
+if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @General_Types.AnytypeSet.");
+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;
+AnytypeSet 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 anytype(*val_ptr->value_elements[i]);
+}
+}
+return ret_val;
+}
+
+AnytypeSet AnytypeSet::operator+(const AnytypeSet& other_value) const
+{
+if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @General_Types.AnytypeSet concatenation.");
+if (val_ptr->n_elements == 0) return other_value;
+if (other_value.val_ptr->n_elements == 0) return *this;
+AnytypeSet 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 anytype(*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 anytype(*other_value.val_ptr->value_elements[i]);
+}
+}
+return ret_val;
+}
+
+AnytypeSet AnytypeSet::substr(int index, int returncount) const
+{
+if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @General_Types.AnytypeSet.");
+check_substr_arguments(val_ptr->n_elements, index, returncount, "@General_Types.AnytypeSet","element");
+AnytypeSet 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 anytype(*val_ptr->value_elements[i+index]);
+}
+}
+return ret_val;
+}
+
+AnytypeSet AnytypeSet::replace(int index, int len, const AnytypeSet& repl) const
+{
+if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @General_Types.AnytypeSet.");
+if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @General_Types.AnytypeSet.");
+check_replace_arguments(val_ptr->n_elements, index, len, "@General_Types.AnytypeSet","element");
+AnytypeSet 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 anytype(*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 anytype(*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 anytype(*val_ptr->value_elements[index+i+len]);
+}
+}
+return ret_val;
+}
+
+AnytypeSet AnytypeSet::replace(int index, int len, const AnytypeSet_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 AnytypeSet::set_size(int new_size)
+{
+if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @General_Types.AnytypeSet.");
+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 = (anytype**)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 anytype(*(val_ptr->value_elements[elem_count]));
+}
+}
+clean_up();
+val_ptr = new_val_ptr;
+}
+if (new_size > val_ptr->n_elements) {
+val_ptr->value_elements = (anytype**)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 @General_Types.AnytypeSet: %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 = (anytype**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size);
+val_ptr->n_elements = new_size;
+}
+}
+
+boolean AnytypeSet::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 AnytypeSet::size_of() const
+{
+if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @General_Types.AnytypeSet.");
+return val_ptr->n_elements;
+}
+
+int AnytypeSet::lengthof() const
+{
+if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @General_Types.AnytypeSet.");
+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 AnytypeSet::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 AnytypeSet::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE|Module_Param::BC_LIST, "set 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("set of value", "@General_Types.AnytypeSet");
+    }
+    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("set of value", "@General_Types.AnytypeSet");
+    }
+    break;
+  default:
+    TTCN_error("Internal error: Unknown operation type.");
+  }
+}
+
+void AnytypeSet::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 AnytypeSet::encode_text(Text_Buf& text_buf) const
+{
+if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @General_Types.AnytypeSet.");
+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 AnytypeSet::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 @General_Types.AnytypeSet.");
+val_ptr->value_elements = (anytype**)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 anytype;
+val_ptr->value_elements[elem_count]->decode_text(text_buf);
+}
+}
+
+void AnytypeSet::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void AnytypeSet::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int AnytypeSet::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;
+    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) 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 AnytypeSet::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 AnytypeSet_template::copy_value(const AnytypeSet& other_value)
+{
+if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @General_Types.AnytypeSet with an unbound value.");
+single_value.n_elements = other_value.size_of();
+single_value.value_elements = (anytype_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 anytype_template(other_value[elem_count]);
+} else {
+single_value.value_elements[elem_count] = new anytype_template;
+}
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void AnytypeSet_template::copy_template(const AnytypeSet_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 = (anytype_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 anytype_template(*other_value.single_value.value_elements[elem_count]);
+} else {
+single_value.value_elements[elem_count] = new anytype_template;
+}
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new AnytypeSet_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 SUPERSET_MATCH:
+case SUBSET_MATCH:
+value_set.n_items = other_value.value_set.n_items;
+value_set.set_items = new anytype_template[value_set.n_items];
+for (unsigned int set_count = 0; set_count < value_set.n_items; set_count++)
+value_set.set_items[set_count] = other_value.value_set.set_items[set_count];
+break;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @General_Types.AnytypeSet.");
+break;
+}
+set_selection(other_value);
+}
+
+boolean AnytypeSet_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 AnytypeSet_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const AnytypeSet*)value_ptr)[value_index], legacy);
+else return ((const AnytypeSet_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit();
+}
+
+boolean AnytypeSet_template::match_function_set(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 AnytypeSet_template*)template_ptr)->value_set.set_items[template_index].match((*(const AnytypeSet*)value_ptr)[value_index], legacy);
+else return ((const AnytypeSet_template*)template_ptr)->value_set.set_items[template_index].is_any_or_omit();
+}
+
+void AnytypeSet_template::log_function(const Base_Type *value_ptr, const Restricted_Length_Template *template_ptr, int index_value, int index_template, boolean legacy)
+{
+if (value_ptr == NULL) {
+if (template_ptr != NULL) {
+((const AnytypeSet_template*)template_ptr)->single_value.value_elements[index_template]->log();
+}
+} else if (template_ptr == NULL) {
+(*(const AnytypeSet*)value_ptr)[index_value].log();
+} else {
+((const AnytypeSet_template*)template_ptr)->single_value.value_elements[index_template]->log_match((*(const AnytypeSet*)value_ptr)[index_value], legacy);
+}
+}
+
+AnytypeSet_template::AnytypeSet_template()
+{
+}
+
+AnytypeSet_template::AnytypeSet_template(template_sel other_value)
+ : Restricted_Length_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+AnytypeSet_template::AnytypeSet_template(null_type)
+ : Restricted_Length_Template(SPECIFIC_VALUE)
+{
+single_value.n_elements = 0;
+single_value.value_elements = NULL;
+}
+
+AnytypeSet_template::AnytypeSet_template(const AnytypeSet& other_value)
+{
+copy_value(other_value);
+}
+
+AnytypeSet_template::AnytypeSet_template(const OPTIONAL<AnytypeSet>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const AnytypeSet&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @General_Types.AnytypeSet from an unbound optional field.");
+}
+}
+
+AnytypeSet_template::AnytypeSet_template(const AnytypeSet_template& other_value)
+ : Restricted_Length_Template()
+{
+copy_template(other_value);
+}
+
+AnytypeSet_template::~AnytypeSet_template()
+{
+clean_up();
+}
+
+void AnytypeSet_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:
+delete [] value_list.list_value;
+break;
+case SUPERSET_MATCH:
+case SUBSET_MATCH:
+delete [] value_set.set_items;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+AnytypeSet_template& AnytypeSet_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+AnytypeSet_template& AnytypeSet_template::operator=(null_type)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value.n_elements = 0;
+single_value.value_elements = NULL;
+return *this;
+}
+
+AnytypeSet_template& AnytypeSet_template::operator=(const AnytypeSet& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+AnytypeSet_template& AnytypeSet_template::operator=(const OPTIONAL<AnytypeSet>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const AnytypeSet&)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 @General_Types.AnytypeSet.");
+}
+return *this;
+}
+
+AnytypeSet_template& AnytypeSet_template::operator=(const AnytypeSet_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+anytype_template& AnytypeSet_template::operator[](int index_value)
+{
+if (index_value < 0) TTCN_error("Accessing an element of a template for type @General_Types.AnytypeSet 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 @General_Types.AnytypeSet.");
+    break;
+}
+return *single_value.value_elements[index_value];
+}
+
+anytype_template& AnytypeSet_template::operator[](const INTEGER& index_value)
+{
+index_value.must_bound("Using an unbound integer value for indexing a template of type @General_Types.AnytypeSet.");
+return (*this)[(int)index_value];
+}
+
+const anytype_template& AnytypeSet_template::operator[](int index_value) const
+{
+if (index_value < 0) TTCN_error("Accessing an element of a template for type @General_Types.AnytypeSet using a negative index: %d.", index_value);
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @General_Types.AnytypeSet.");
+if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @General_Types.AnytypeSet: 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 anytype_template& AnytypeSet_template::operator[](const INTEGER& index_value) const
+{
+index_value.must_bound("Using an unbound integer value for indexing a template of type @General_Types.AnytypeSet.");
+return (*this)[(int)index_value];
+}
+
+void AnytypeSet_template::set_size(int new_size)
+{
+if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @General_Types.AnytypeSet.");
+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 = (anytype_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 anytype_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 anytype_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 = (anytype_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size);
+single_value.n_elements = new_size;
+}
+}
+
+int AnytypeSet_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 AnytypeSet_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 @General_Types.AnytypeSet 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 @General_Types.AnytypeSet containing omit element.", op_name);
+    case ANY_OR_OMIT:
+      has_any_or_none = TRUE;
+      break;
+    default:
+      min_size++;
+      break;
+    }
+  }
+} break;
+case SUPERSET_MATCH:
+case SUBSET_MATCH: {
+  min_size = 0;
+  has_any_or_none = FALSE;
+  int elem_count = value_set.n_items;
+  if (!is_size) { while (elem_count>0 && !value_set.set_items[elem_count-1].is_bound()) elem_count--; }
+  for (int i=0; i<elem_count; i++) {
+    switch (value_set.set_items[i].get_selection())
+    {
+    case OMIT_VALUE:
+      TTCN_error("Performing %sof() operation on a template of type @General_Types.AnytypeSet containing omit element.", op_name);
+    case ANY_OR_OMIT:
+      has_any_or_none = TRUE;
+      break;
+    default:
+      min_size++;
+      break;
+    }
+  }
+  if (template_selection==SUPERSET_MATCH) {
+    has_any_or_none = TRUE;
+   } else {
+    int max_size = min_size;
+    min_size = 0;
+    if (!has_any_or_none) { // [0,max_size]
+      switch (length_restriction_type) {
+      case NO_LENGTH_RESTRICTION:
+        if (max_size==0) return 0;
+        TTCN_error("Performing %sof() operation on a template of type @General_Types.AnytypeSet with no exact size.", op_name);
+      case SINGLE_LENGTH_RESTRICTION:
+        if (length_restriction.single_length<=max_size)
+          return length_restriction.single_length;
+        TTCN_error("Performing %sof() operation on an invalid template of type @General_Types.AnytypeSet. The maximum size (%d) contradicts the length restriction (%d).", op_name, max_size, length_restriction.single_length);
+      case RANGE_LENGTH_RESTRICTION:
+        if (max_size==length_restriction.range_length.min_length) {
+          return max_size;
+        } else if (max_size>length_restriction.range_length.min_length){
+          TTCN_error("Performing %sof() operation on a template of type @General_Types.AnytypeSet with no exact size.", op_name);
+        } else
+          TTCN_error("Performing %sof() operation on an invalid template of type @General_Types.AnytypeSet. Maximum size (%d) contradicts the length restriction (%d..%d).", op_name, max_size, length_restriction.range_length.min_length, length_restriction.range_length.max_length);
+      default:
+        TTCN_error("Internal error: Template has invalid length restriction type.");
+      }
+    }
+  }
+} break;
+case OMIT_VALUE:
+  TTCN_error("Performing %sof() operation on a template of type @General_Types.AnytypeSet 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 @General_Types.AnytypeSet 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 @General_Types.AnytypeSet 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 @General_Types.AnytypeSet containing complemented list.", op_name);
+default:
+  TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @General_Types.AnytypeSet.", op_name);
+}
+return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @General_Types.AnytypeSet");
+}
+
+boolean AnytypeSet_template::match(const AnytypeSet& 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_set_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 SUPERSET_MATCH:
+case SUBSET_MATCH:
+return match_set_of(&other_value, value_length, this, value_set.n_items, match_function_set, legacy);
+default:
+TTCN_error("Matching with an uninitialized/unsupported template of type @General_Types.AnytypeSet.");
+}
+return FALSE;
+}
+
+boolean AnytypeSet_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;
+}
+
+AnytypeSet AnytypeSet_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 @General_Types.AnytypeSet.");
+AnytypeSet 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;
+}
+
+AnytypeSet AnytypeSet_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);
+}
+
+AnytypeSet AnytypeSet_template::replace(int index, int len, const AnytypeSet_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());
+}
+
+AnytypeSet AnytypeSet_template::replace(int index, int len, const AnytypeSet& 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 AnytypeSet_template::set_type(template_sel template_type, unsigned int list_length)
+{
+clean_up();
+switch (template_type) {
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = list_length;
+value_list.list_value = new AnytypeSet_template[list_length];
+break;
+case SUPERSET_MATCH:
+case SUBSET_MATCH:
+value_set.n_items = list_length;
+value_set.set_items = new anytype_template[list_length];
+break;
+default:
+TTCN_error("Internal error: Setting an invalid type for a template of type @General_Types.AnytypeSet.");
+}
+set_selection(template_type);
+}
+
+AnytypeSet_template& AnytypeSet_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of type @General_Types.AnytypeSet.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @General_Types.AnytypeSet.");
+return value_list.list_value[list_index];
+}
+
+anytype_template& AnytypeSet_template::set_item(unsigned int set_index)
+{
+if (template_selection != SUPERSET_MATCH && template_selection != SUBSET_MATCH) TTCN_error("Internal error: Accessing a set element of a non-set template of type @General_Types.AnytypeSet.");
+if (set_index >= value_set.n_items) TTCN_error("Internal error: Index overflow in a set template of type @General_Types.AnytypeSet.");
+return value_set.set_items[set_index];
+}
+
+void AnytypeSet_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(", ");
+single_value.value_elements[elem_count]->log();
+}
+TTCN_Logger::log_event_str(" }");
+} else TTCN_Logger::log_event_str("{ }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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 SUPERSET_MATCH:
+case SUBSET_MATCH:
+TTCN_Logger::log_event("%s(", template_selection == SUPERSET_MATCH ? "superset" : "subset");
+for (unsigned int set_count = 0; set_count < value_set.n_items; set_count++) {
+if (set_count > 0) TTCN_Logger::log_event_str(", ");
+value_set.set_items[set_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_restricted();
+log_ifpresent();
+}
+
+void AnytypeSet_template::log_match(const AnytypeSet& 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{
+size_t previous_size = TTCN_Logger::get_logmatch_buffer_len();
+if (template_selection == SPECIFIC_VALUE)
+  log_match_heuristics(&match_value, match_value.size_of(), this, single_value.n_elements, match_function_specific, log_function, legacy);
+else{
+if(previous_size != 0){
+TTCN_Logger::print_logmatch_buffer();
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+TTCN_Logger::log_event_str(":=");
+}
+}
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+TTCN_Logger::log_event_str(" unmatched");
+}
+return;
+}
+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");
+if (template_selection == SPECIFIC_VALUE) log_match_heuristics(&match_value, match_value.size_of(), this, single_value.n_elements, match_function_specific, log_function, legacy);
+}
+}
+
+void AnytypeSet_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_restricted(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;
+case SUPERSET_MATCH:
+case SUBSET_MATCH:
+text_buf.push_int(value_set.n_items);
+for (unsigned int set_count = 0; set_count < value_set.n_items; set_count++)
+value_set.set_items[set_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of type @General_Types.AnytypeSet.");
+}
+}
+
+void AnytypeSet_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_restricted(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 @General_Types.AnytypeSet.");
+single_value.value_elements = (anytype_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 anytype_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 AnytypeSet_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;
+case SUPERSET_MATCH:
+case SUBSET_MATCH:
+value_set.n_items = text_buf.pull_int().get_val();
+value_set.set_items = new anytype_template[value_set.n_items];
+for (unsigned int set_count = 0; set_count < value_set.n_items; set_count++)
+value_set.set_items[set_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of type @General_Types.AnytypeSet.");
+}
+}
+
+boolean AnytypeSet_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean AnytypeSet_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 AnytypeSet_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE|Module_Param::BC_LIST, "set 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: {
+    AnytypeSet_template temp;
+    temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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());
+    for (size_t p_i=0; p_i<param.get_size(); ++p_i) {
+      if (param.get_elem(p_i)->get_type()!=Module_Param::MP_NotUsed) {
+        (*this)[p_i].set_param(*param.get_elem(p_i));
+      }
+    }
+    break;
+  case Module_Param::MP_Superset_Template:
+  case Module_Param::MP_Subset_Template:
+    set_type(param.get_type()==Module_Param::MP_Superset_Template ? SUPERSET_MATCH : SUBSET_MATCH, param.get_size());
+    for (size_t p_i=0; p_i<param.get_size(); p_i++) {
+      set_item(p_i).set_param(*param.get_elem(p_i));
+    }
+    break;
+  default:
+    param.type_error("set of template", "@General_Types.AnytypeSet");
+  }
+  is_ifpresent = param.get_ifpresent();
+  set_length_range(param);
+}
+
+void AnytypeSet_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 : "@General_Types.AnytypeSet");
+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 : "@General_Types.AnytypeSet");
+}
+
+boolean AnytypeSet_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 FALSE;
+} else if (!strcmp(type, "length")) {
+  return length_restriction_type != NO_LENGTH_RESTRICTION;
+} else {
+  return Base_Template::get_istemplate_kind(type);
+}
+}
+Protocols::Protocols()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+Protocols::Protocols(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @General_Types.Protocols with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+Protocols::Protocols(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+Protocols::Protocols(const Protocols& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @General_Types.Protocols.");
+enum_value = other_value.enum_value;
+}
+
+Protocols& Protocols::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @General_Types.Protocols.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+Protocols& Protocols::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+Protocols& Protocols::operator=(const Protocols& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @General_Types.Protocols.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean Protocols::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @General_Types.Protocols.");
+return enum_value == other_value;
+}
+
+boolean Protocols::operator==(const Protocols& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @General_Types.Protocols.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @General_Types.Protocols.");
+return enum_value == other_value.enum_value;
+}
+
+boolean Protocols::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @General_Types.Protocols.");
+return enum_value < other_value;
+}
+
+boolean Protocols::operator<(const Protocols& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @General_Types.Protocols.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @General_Types.Protocols.");
+return enum_value < other_value.enum_value;
+}
+
+boolean Protocols::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @General_Types.Protocols.");
+return enum_value > other_value;
+}
+
+boolean Protocols::operator>(const Protocols& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @General_Types.Protocols.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @General_Types.Protocols.");
+return enum_value > other_value.enum_value;
+}
+
+const char *Protocols::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case mtp3: return "mtp3";
+case sccp: return "sccp";
+case isup: return "isup";
+case bicc: return "bicc";
+case qaal2: return "qaal2";
+case gcp: return "gcp";
+case bssap: return "bssap";
+case bssmap: return "bssmap";
+case ranap: return "ranap";
+case dtap: return "dtap";
+default: return "<unknown>";
+}
+}
+
+Protocols::enum_type Protocols::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "mtp3")) return mtp3;
+else if (!strcmp(str_par, "sccp")) return sccp;
+else if (!strcmp(str_par, "isup")) return isup;
+else if (!strcmp(str_par, "bicc")) return bicc;
+else if (!strcmp(str_par, "qaal2")) return qaal2;
+else if (!strcmp(str_par, "gcp")) return gcp;
+else if (!strcmp(str_par, "bssap")) return bssap;
+else if (!strcmp(str_par, "bssmap")) return bssmap;
+else if (!strcmp(str_par, "ranap")) return ranap;
+else if (!strcmp(str_par, "dtap")) return dtap;
+else return UNKNOWN_VALUE;
+}
+
+boolean Protocols::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 0:
+case 1:
+case 2:
+case 3:
+case 4:
+case 5:
+case 6:
+case 7:
+case 8:
+case 9:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int Protocols::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @General_Types.Protocols.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int Protocols::enum2int(const Protocols& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @General_Types.Protocols.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void Protocols::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @General_Types.Protocols.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+Protocols::operator Protocols::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @General_Types.Protocols.");
+return enum_value;
+}
+
+void Protocols::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void Protocols::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@General_Types.Protocols");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @General_Types.Protocols.");
+  }
+}
+
+void Protocols::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @General_Types.Protocols.");
+text_buf.push_int(enum_value);
+}
+
+void Protocols::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @General_Types.Protocols.", enum_value);
+}
+
+void Protocols::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void Protocols::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int Protocols::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*)
+{
+  int decoded_value = 0;
+  int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 4, no_err);
+  if (decoded_length < 0) return decoded_length;
+  if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value;
+  else {
+    if(no_err){
+     return -1;
+    } else {
+    TTCN_EncDec_ErrorContext::error
+      (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name);
+    enum_value = UNKNOWN_VALUE;
+    }
+  }
+  return decoded_length;
+}
+
+int Protocols::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const
+{
+  return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 4);
+}
+
+void Protocols_template::copy_template(const Protocols_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new Protocols_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @General_Types.Protocols.");
+}
+}
+
+Protocols_template::Protocols_template()
+{
+}
+
+Protocols_template::Protocols_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+Protocols_template::Protocols_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!Protocols::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @General_Types.Protocols with unknown numeric value %d.", other_value);
+single_value = (Protocols::enum_type)other_value;
+}
+
+Protocols_template::Protocols_template(Protocols::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+Protocols_template::Protocols_template(const Protocols& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == Protocols::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @General_Types.Protocols.");
+single_value = other_value.enum_value;
+}
+
+Protocols_template::Protocols_template(const OPTIONAL<Protocols>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (Protocols::enum_type)(const Protocols&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @General_Types.Protocols from an unbound optional field.");
+}
+}
+
+Protocols_template::Protocols_template(const Protocols_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+Protocols_template::~Protocols_template()
+{
+clean_up();
+}
+
+boolean Protocols_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean Protocols_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != Protocols::UNBOUND_VALUE;
+}
+
+void Protocols_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+Protocols_template& Protocols_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+Protocols_template& Protocols_template::operator=(int other_value)
+{
+if (!Protocols::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @General_Types.Protocols.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (Protocols::enum_type)other_value;
+return *this;
+}
+
+Protocols_template& Protocols_template::operator=(Protocols::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+Protocols_template& Protocols_template::operator=(const Protocols& other_value)
+{
+if (other_value.enum_value == Protocols::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @General_Types.Protocols to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+Protocols_template& Protocols_template::operator=(const OPTIONAL<Protocols>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (Protocols::enum_type)(const Protocols&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @General_Types.Protocols.");
+}
+return *this;
+}
+
+Protocols_template& Protocols_template::operator=(const Protocols_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean Protocols_template::match(Protocols::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @General_Types.Protocols.");
+}
+return FALSE;
+}
+
+boolean Protocols_template::match(const Protocols& other_value, boolean) const
+{
+if (other_value.enum_value == Protocols::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @General_Types.Protocols with an unbound value.");
+return match(other_value.enum_value);
+}
+
+Protocols::enum_type Protocols_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @General_Types.Protocols.");
+return single_value;
+}
+
+void Protocols_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @General_Types.Protocols.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new Protocols_template[list_length];
+}
+
+Protocols_template& Protocols_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @General_Types.Protocols.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @General_Types.Protocols.");
+return value_list.list_value[list_index];
+}
+
+void Protocols_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(Protocols::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void Protocols_template::log_match(const Protocols& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void Protocols_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @General_Types.Protocols.");
+}
+}
+
+void Protocols_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (Protocols::enum_type)text_buf.pull_int().get_val();
+if (!Protocols::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @General_Types.Protocols.", single_value);
+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 Protocols_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @General_Types.Protocols.");
+}
+}
+
+boolean Protocols_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean Protocols_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 Protocols_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    Protocols_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    Protocols::enum_type enum_val = Protocols::str_to_enum(m_p->get_enumerated());
+    if (!Protocols::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @General_Types.Protocols.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@General_Types.Protocols");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void Protocols_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@General_Types.Protocols");
+}
+
+
+const COMPONENT ListOfDummy__comptype::UNBOUND_ELEM;
+ListOfDummy__comptype::ListOfDummy__comptype()
+{
+val_ptr = NULL;
+}
+
+ListOfDummy__comptype::ListOfDummy__comptype(null_type)
+{
+val_ptr = new recordof_setof_struct;
+val_ptr->ref_count = 1;
+val_ptr->n_elements = 0;
+val_ptr->value_elements = NULL;
+}
+
+ListOfDummy__comptype::ListOfDummy__comptype(const ListOfDummy__comptype& other_value)
+{
+if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @General_Types.ListOfDummy_comptype.");
+val_ptr = other_value.val_ptr;
+val_ptr->ref_count++;
+}
+
+ListOfDummy__comptype::~ListOfDummy__comptype()
+{
+clean_up();
+if (val_ptr != NULL) val_ptr = NULL;
+}
+
+void ListOfDummy__comptype::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.");
+}
+}
+
+ListOfDummy__comptype& ListOfDummy__comptype::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;
+}
+
+ListOfDummy__comptype& ListOfDummy__comptype::operator=(const ListOfDummy__comptype& other_value)
+{
+if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @General_Types.ListOfDummy_comptype.");
+if (this != &other_value) {
+clean_up();
+val_ptr = other_value.val_ptr;
+val_ptr->ref_count++;
+}
+return *this;
+}
+
+boolean ListOfDummy__comptype::operator==(null_type) const
+{
+if (val_ptr == NULL)
+TTCN_error("The left operand of comparison is an unbound value of type @General_Types.ListOfDummy_comptype.");
+return val_ptr->n_elements == 0 ;
+}
+
+boolean ListOfDummy__comptype::operator==(const ListOfDummy__comptype& other_value) const
+{
+if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @General_Types.ListOfDummy_comptype.");
+if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @General_Types.ListOfDummy_comptype.");
+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;
+}
+
+COMPONENT& ListOfDummy__comptype::operator[](int index_value)
+{
+if (index_value < 0) TTCN_error("Accessing an element of type @General_Types.ListOfDummy_comptype 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 = (COMPONENT**)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 COMPONENT(*(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 COMPONENT;
+}
+return *val_ptr->value_elements[index_value];
+}
+
+COMPONENT& ListOfDummy__comptype::operator[](const INTEGER& index_value)
+{
+index_value.must_bound("Using an unbound integer value for indexing a value of type @General_Types.ListOfDummy_comptype.");
+return (*this)[(int)index_value];
+}
+
+const COMPONENT& ListOfDummy__comptype::operator[](int index_value) const
+{
+if (val_ptr == NULL)
+TTCN_error("Accessing an element in an unbound value of type @General_Types.ListOfDummy_comptype.");
+if (index_value < 0) TTCN_error("Accessing an element of type @General_Types.ListOfDummy_comptype using a negative index: %d.", index_value);
+if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @General_Types.ListOfDummy_comptype: 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 COMPONENT& ListOfDummy__comptype::operator[](const INTEGER& index_value) const
+{
+index_value.must_bound("Using an unbound integer value for indexing a value of type @General_Types.ListOfDummy_comptype.");
+return (*this)[(int)index_value];
+}
+
+ListOfDummy__comptype ListOfDummy__comptype::operator<<=(int rotate_count) const
+{
+return *this >>= (-rotate_count);
+}
+
+ListOfDummy__comptype ListOfDummy__comptype::operator<<=(const INTEGER& rotate_count) const
+{
+rotate_count.must_bound("Unbound integer operand of rotate left operator.");
+return *this >>= (int)(-rotate_count);
+}
+
+ListOfDummy__comptype ListOfDummy__comptype::operator>>=(const INTEGER& rotate_count) const
+{
+rotate_count.must_bound("Unbound integer operand of rotate right operator.");
+return *this >>= (int)rotate_count;
+}
+
+ListOfDummy__comptype ListOfDummy__comptype::operator>>=(int rotate_count) const
+{
+if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @General_Types.ListOfDummy_comptype.");
+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;
+ListOfDummy__comptype 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 COMPONENT(*val_ptr->value_elements[i]);
+}
+}
+return ret_val;
+}
+
+ListOfDummy__comptype ListOfDummy__comptype::operator+(const ListOfDummy__comptype& other_value) const
+{
+if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @General_Types.ListOfDummy_comptype concatenation.");
+if (val_ptr->n_elements == 0) return other_value;
+if (other_value.val_ptr->n_elements == 0) return *this;
+ListOfDummy__comptype 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 COMPONENT(*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 COMPONENT(*other_value.val_ptr->value_elements[i]);
+}
+}
+return ret_val;
+}
+
+ListOfDummy__comptype ListOfDummy__comptype::substr(int index, int returncount) const
+{
+if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @General_Types.ListOfDummy_comptype.");
+check_substr_arguments(val_ptr->n_elements, index, returncount, "@General_Types.ListOfDummy_comptype","element");
+ListOfDummy__comptype 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 COMPONENT(*val_ptr->value_elements[i+index]);
+}
+}
+return ret_val;
+}
+
+ListOfDummy__comptype ListOfDummy__comptype::replace(int index, int len, const ListOfDummy__comptype& repl) const
+{
+if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @General_Types.ListOfDummy_comptype.");
+if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @General_Types.ListOfDummy_comptype.");
+check_replace_arguments(val_ptr->n_elements, index, len, "@General_Types.ListOfDummy_comptype","element");
+ListOfDummy__comptype 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 COMPONENT(*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 COMPONENT(*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 COMPONENT(*val_ptr->value_elements[index+i+len]);
+}
+}
+return ret_val;
+}
+
+ListOfDummy__comptype ListOfDummy__comptype::replace(int index, int len, const ListOfDummy__comptype_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 ListOfDummy__comptype::set_size(int new_size)
+{
+if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @General_Types.ListOfDummy_comptype.");
+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 = (COMPONENT**)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 COMPONENT(*(val_ptr->value_elements[elem_count]));
+}
+}
+clean_up();
+val_ptr = new_val_ptr;
+}
+if (new_size > val_ptr->n_elements) {
+val_ptr->value_elements = (COMPONENT**)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 @General_Types.ListOfDummy_comptype: %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 = (COMPONENT**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size);
+val_ptr->n_elements = new_size;
+}
+}
+
+boolean ListOfDummy__comptype::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 ListOfDummy__comptype::size_of() const
+{
+if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @General_Types.ListOfDummy_comptype.");
+return val_ptr->n_elements;
+}
+
+int ListOfDummy__comptype::lengthof() const
+{
+if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @General_Types.ListOfDummy_comptype.");
+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 ListOfDummy__comptype::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 ListOfDummy__comptype::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", "@General_Types.ListOfDummy_comptype");
+    }
+    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", "@General_Types.ListOfDummy_comptype");
+    }
+    break;
+  default:
+    TTCN_error("Internal error: Unknown operation type.");
+  }
+}
+
+void ListOfDummy__comptype::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 ListOfDummy__comptype::encode_text(Text_Buf& text_buf) const
+{
+if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @General_Types.ListOfDummy_comptype.");
+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 ListOfDummy__comptype::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 @General_Types.ListOfDummy_comptype.");
+val_ptr->value_elements = (COMPONENT**)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 COMPONENT;
+val_ptr->value_elements[elem_count]->decode_text(text_buf);
+}
+}
+
+void ListOfDummy__comptype::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ListOfDummy__comptype::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ListOfDummy__comptype::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;
+    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) 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 ListOfDummy__comptype::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 ListOfDummy__comptype_template::copy_value(const ListOfDummy__comptype& other_value)
+{
+if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @General_Types.ListOfDummy_comptype with an unbound value.");
+single_value.n_elements = other_value.size_of();
+single_value.value_elements = (COMPONENT_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 COMPONENT_template(other_value[elem_count]);
+} else {
+single_value.value_elements[elem_count] = new COMPONENT_template;
+}
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ListOfDummy__comptype_template::copy_template(const ListOfDummy__comptype_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 = (COMPONENT_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 COMPONENT_template(*other_value.single_value.value_elements[elem_count]);
+} else {
+single_value.value_elements[elem_count] = new COMPONENT_template;
+}
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ListOfDummy__comptype_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @General_Types.ListOfDummy_comptype.");
+break;
+}
+set_selection(other_value);
+}
+
+boolean ListOfDummy__comptype_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 ListOfDummy__comptype_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const ListOfDummy__comptype*)value_ptr)[value_index], legacy);
+else return ((const ListOfDummy__comptype_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit();
+}
+
+ListOfDummy__comptype_template::ListOfDummy__comptype_template()
+{
+}
+
+ListOfDummy__comptype_template::ListOfDummy__comptype_template(template_sel other_value)
+ : Record_Of_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ListOfDummy__comptype_template::ListOfDummy__comptype_template(null_type)
+ : Record_Of_Template(SPECIFIC_VALUE)
+{
+single_value.n_elements = 0;
+single_value.value_elements = NULL;
+}
+
+ListOfDummy__comptype_template::ListOfDummy__comptype_template(const ListOfDummy__comptype& other_value)
+{
+copy_value(other_value);
+}
+
+ListOfDummy__comptype_template::ListOfDummy__comptype_template(const OPTIONAL<ListOfDummy__comptype>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ListOfDummy__comptype&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @General_Types.ListOfDummy_comptype from an unbound optional field.");
+}
+}
+
+ListOfDummy__comptype_template::ListOfDummy__comptype_template(const ListOfDummy__comptype_template& other_value)
+ : Record_Of_Template()
+{
+copy_template(other_value);
+}
+
+ListOfDummy__comptype_template::~ListOfDummy__comptype_template()
+{
+clean_up();
+}
+
+void ListOfDummy__comptype_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:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ListOfDummy__comptype_template& ListOfDummy__comptype_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ListOfDummy__comptype_template& ListOfDummy__comptype_template::operator=(null_type)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value.n_elements = 0;
+single_value.value_elements = NULL;
+return *this;
+}
+
+ListOfDummy__comptype_template& ListOfDummy__comptype_template::operator=(const ListOfDummy__comptype& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ListOfDummy__comptype_template& ListOfDummy__comptype_template::operator=(const OPTIONAL<ListOfDummy__comptype>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ListOfDummy__comptype&)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 @General_Types.ListOfDummy_comptype.");
+}
+return *this;
+}
+
+ListOfDummy__comptype_template& ListOfDummy__comptype_template::operator=(const ListOfDummy__comptype_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+COMPONENT_template& ListOfDummy__comptype_template::operator[](int index_value)
+{
+if (index_value < 0) TTCN_error("Accessing an element of a template for type @General_Types.ListOfDummy_comptype 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 @General_Types.ListOfDummy_comptype.");
+    break;
+}
+return *single_value.value_elements[index_value];
+}
+
+COMPONENT_template& ListOfDummy__comptype_template::operator[](const INTEGER& index_value)
+{
+index_value.must_bound("Using an unbound integer value for indexing a template of type @General_Types.ListOfDummy_comptype.");
+return (*this)[(int)index_value];
+}
+
+const COMPONENT_template& ListOfDummy__comptype_template::operator[](int index_value) const
+{
+if (index_value < 0) TTCN_error("Accessing an element of a template for type @General_Types.ListOfDummy_comptype using a negative index: %d.", index_value);
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @General_Types.ListOfDummy_comptype.");
+if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @General_Types.ListOfDummy_comptype: 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 COMPONENT_template& ListOfDummy__comptype_template::operator[](const INTEGER& index_value) const
+{
+index_value.must_bound("Using an unbound integer value for indexing a template of type @General_Types.ListOfDummy_comptype.");
+return (*this)[(int)index_value];
+}
+
+void ListOfDummy__comptype_template::set_size(int new_size)
+{
+if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @General_Types.ListOfDummy_comptype.");
+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 = (COMPONENT_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 COMPONENT_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 COMPONENT_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 = (COMPONENT_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size);
+single_value.n_elements = new_size;
+}
+}
+
+int ListOfDummy__comptype_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 ListOfDummy__comptype_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 @General_Types.ListOfDummy_comptype 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 @General_Types.ListOfDummy_comptype 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 @General_Types.ListOfDummy_comptype 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 @General_Types.ListOfDummy_comptype 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 @General_Types.ListOfDummy_comptype 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 @General_Types.ListOfDummy_comptype containing complemented list.", op_name);
+default:
+  TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @General_Types.ListOfDummy_comptype.", op_name);
+}
+return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @General_Types.ListOfDummy_comptype");
+}
+
+boolean ListOfDummy__comptype_template::match(const ListOfDummy__comptype& 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;
+default:
+TTCN_error("Matching with an uninitialized/unsupported template of type @General_Types.ListOfDummy_comptype.");
+}
+return FALSE;
+}
+
+boolean ListOfDummy__comptype_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;
+}
+
+ListOfDummy__comptype ListOfDummy__comptype_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 @General_Types.ListOfDummy_comptype.");
+ListOfDummy__comptype 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;
+}
+
+ListOfDummy__comptype ListOfDummy__comptype_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);
+}
+
+ListOfDummy__comptype ListOfDummy__comptype_template::replace(int index, int len, const ListOfDummy__comptype_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());
+}
+
+ListOfDummy__comptype ListOfDummy__comptype_template::replace(int index, int len, const ListOfDummy__comptype& 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 ListOfDummy__comptype_template::set_type(template_sel template_type, unsigned int list_length)
+{
+clean_up();
+switch (template_type) {
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = list_length;
+value_list.list_value = new ListOfDummy__comptype_template[list_length];
+break;
+default:
+TTCN_error("Internal error: Setting an invalid type for a template of type @General_Types.ListOfDummy_comptype.");
+}
+set_selection(template_type);
+}
+
+ListOfDummy__comptype_template& ListOfDummy__comptype_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of type @General_Types.ListOfDummy_comptype.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @General_Types.ListOfDummy_comptype.");
+return value_list.list_value[list_index];
+}
+
+void ListOfDummy__comptype_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 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;
+default:
+log_generic();
+}
+log_restricted();
+log_ifpresent();
+}
+
+void ListOfDummy__comptype_template::log_match(const ListOfDummy__comptype& 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 ListOfDummy__comptype_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 @General_Types.ListOfDummy_comptype.");
+}
+}
+
+void ListOfDummy__comptype_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 @General_Types.ListOfDummy_comptype.");
+single_value.value_elements = (COMPONENT_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 COMPONENT_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 ListOfDummy__comptype_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 @General_Types.ListOfDummy_comptype.");
+}
+}
+
+boolean ListOfDummy__comptype_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ListOfDummy__comptype_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 ListOfDummy__comptype_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: {
+    ListOfDummy__comptype_template temp;
+    temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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;
+  default:
+    param.type_error("record of template", "@General_Types.ListOfDummy_comptype");
+  }
+  is_ifpresent = param.get_ifpresent();
+  set_length_range(param);
+}
+
+void ListOfDummy__comptype_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 : "@General_Types.ListOfDummy_comptype");
+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 : "@General_Types.ListOfDummy_comptype");
+}
+
+boolean ListOfDummy__comptype_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);
+}
+}
+
+const COMPONENT ListOfDummy__CT::UNBOUND_ELEM;
+ListOfDummy__CT::ListOfDummy__CT()
+{
+val_ptr = NULL;
+}
+
+ListOfDummy__CT::ListOfDummy__CT(null_type)
+{
+val_ptr = new recordof_setof_struct;
+val_ptr->ref_count = 1;
+val_ptr->n_elements = 0;
+val_ptr->value_elements = NULL;
+}
+
+ListOfDummy__CT::ListOfDummy__CT(const ListOfDummy__CT& other_value)
+{
+if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @General_Types.ListOfDummy_CT.");
+val_ptr = other_value.val_ptr;
+val_ptr->ref_count++;
+}
+
+ListOfDummy__CT::~ListOfDummy__CT()
+{
+clean_up();
+if (val_ptr != NULL) val_ptr = NULL;
+}
+
+void ListOfDummy__CT::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.");
+}
+}
+
+ListOfDummy__CT& ListOfDummy__CT::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;
+}
+
+ListOfDummy__CT& ListOfDummy__CT::operator=(const ListOfDummy__CT& other_value)
+{
+if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @General_Types.ListOfDummy_CT.");
+if (this != &other_value) {
+clean_up();
+val_ptr = other_value.val_ptr;
+val_ptr->ref_count++;
+}
+return *this;
+}
+
+boolean ListOfDummy__CT::operator==(null_type) const
+{
+if (val_ptr == NULL)
+TTCN_error("The left operand of comparison is an unbound value of type @General_Types.ListOfDummy_CT.");
+return val_ptr->n_elements == 0 ;
+}
+
+boolean ListOfDummy__CT::operator==(const ListOfDummy__CT& other_value) const
+{
+if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @General_Types.ListOfDummy_CT.");
+if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @General_Types.ListOfDummy_CT.");
+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;
+}
+
+COMPONENT& ListOfDummy__CT::operator[](int index_value)
+{
+if (index_value < 0) TTCN_error("Accessing an element of type @General_Types.ListOfDummy_CT 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 = (COMPONENT**)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 COMPONENT(*(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 COMPONENT;
+}
+return *val_ptr->value_elements[index_value];
+}
+
+COMPONENT& ListOfDummy__CT::operator[](const INTEGER& index_value)
+{
+index_value.must_bound("Using an unbound integer value for indexing a value of type @General_Types.ListOfDummy_CT.");
+return (*this)[(int)index_value];
+}
+
+const COMPONENT& ListOfDummy__CT::operator[](int index_value) const
+{
+if (val_ptr == NULL)
+TTCN_error("Accessing an element in an unbound value of type @General_Types.ListOfDummy_CT.");
+if (index_value < 0) TTCN_error("Accessing an element of type @General_Types.ListOfDummy_CT using a negative index: %d.", index_value);
+if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @General_Types.ListOfDummy_CT: 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 COMPONENT& ListOfDummy__CT::operator[](const INTEGER& index_value) const
+{
+index_value.must_bound("Using an unbound integer value for indexing a value of type @General_Types.ListOfDummy_CT.");
+return (*this)[(int)index_value];
+}
+
+ListOfDummy__CT ListOfDummy__CT::operator<<=(int rotate_count) const
+{
+return *this >>= (-rotate_count);
+}
+
+ListOfDummy__CT ListOfDummy__CT::operator<<=(const INTEGER& rotate_count) const
+{
+rotate_count.must_bound("Unbound integer operand of rotate left operator.");
+return *this >>= (int)(-rotate_count);
+}
+
+ListOfDummy__CT ListOfDummy__CT::operator>>=(const INTEGER& rotate_count) const
+{
+rotate_count.must_bound("Unbound integer operand of rotate right operator.");
+return *this >>= (int)rotate_count;
+}
+
+ListOfDummy__CT ListOfDummy__CT::operator>>=(int rotate_count) const
+{
+if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @General_Types.ListOfDummy_CT.");
+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;
+ListOfDummy__CT 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 COMPONENT(*val_ptr->value_elements[i]);
+}
+}
+return ret_val;
+}
+
+ListOfDummy__CT ListOfDummy__CT::operator+(const ListOfDummy__CT& other_value) const
+{
+if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @General_Types.ListOfDummy_CT concatenation.");
+if (val_ptr->n_elements == 0) return other_value;
+if (other_value.val_ptr->n_elements == 0) return *this;
+ListOfDummy__CT 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 COMPONENT(*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 COMPONENT(*other_value.val_ptr->value_elements[i]);
+}
+}
+return ret_val;
+}
+
+ListOfDummy__CT ListOfDummy__CT::substr(int index, int returncount) const
+{
+if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @General_Types.ListOfDummy_CT.");
+check_substr_arguments(val_ptr->n_elements, index, returncount, "@General_Types.ListOfDummy_CT","element");
+ListOfDummy__CT 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 COMPONENT(*val_ptr->value_elements[i+index]);
+}
+}
+return ret_val;
+}
+
+ListOfDummy__CT ListOfDummy__CT::replace(int index, int len, const ListOfDummy__CT& repl) const
+{
+if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @General_Types.ListOfDummy_CT.");
+if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @General_Types.ListOfDummy_CT.");
+check_replace_arguments(val_ptr->n_elements, index, len, "@General_Types.ListOfDummy_CT","element");
+ListOfDummy__CT 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 COMPONENT(*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 COMPONENT(*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 COMPONENT(*val_ptr->value_elements[index+i+len]);
+}
+}
+return ret_val;
+}
+
+ListOfDummy__CT ListOfDummy__CT::replace(int index, int len, const ListOfDummy__CT_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 ListOfDummy__CT::set_size(int new_size)
+{
+if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @General_Types.ListOfDummy_CT.");
+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 = (COMPONENT**)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 COMPONENT(*(val_ptr->value_elements[elem_count]));
+}
+}
+clean_up();
+val_ptr = new_val_ptr;
+}
+if (new_size > val_ptr->n_elements) {
+val_ptr->value_elements = (COMPONENT**)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 @General_Types.ListOfDummy_CT: %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 = (COMPONENT**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size);
+val_ptr->n_elements = new_size;
+}
+}
+
+boolean ListOfDummy__CT::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 ListOfDummy__CT::size_of() const
+{
+if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @General_Types.ListOfDummy_CT.");
+return val_ptr->n_elements;
+}
+
+int ListOfDummy__CT::lengthof() const
+{
+if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @General_Types.ListOfDummy_CT.");
+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 ListOfDummy__CT::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 ListOfDummy__CT::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", "@General_Types.ListOfDummy_CT");
+    }
+    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", "@General_Types.ListOfDummy_CT");
+    }
+    break;
+  default:
+    TTCN_error("Internal error: Unknown operation type.");
+  }
+}
+
+void ListOfDummy__CT::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 ListOfDummy__CT::encode_text(Text_Buf& text_buf) const
+{
+if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @General_Types.ListOfDummy_CT.");
+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 ListOfDummy__CT::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 @General_Types.ListOfDummy_CT.");
+val_ptr->value_elements = (COMPONENT**)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 COMPONENT;
+val_ptr->value_elements[elem_count]->decode_text(text_buf);
+}
+}
+
+void ListOfDummy__CT::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ListOfDummy__CT::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ListOfDummy__CT::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;
+    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) 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 ListOfDummy__CT::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 ListOfDummy__CT_template::copy_value(const ListOfDummy__CT& other_value)
+{
+if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @General_Types.ListOfDummy_CT with an unbound value.");
+single_value.n_elements = other_value.size_of();
+single_value.value_elements = (COMPONENT_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 COMPONENT_template(other_value[elem_count]);
+} else {
+single_value.value_elements[elem_count] = new COMPONENT_template;
+}
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ListOfDummy__CT_template::copy_template(const ListOfDummy__CT_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 = (COMPONENT_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 COMPONENT_template(*other_value.single_value.value_elements[elem_count]);
+} else {
+single_value.value_elements[elem_count] = new COMPONENT_template;
+}
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ListOfDummy__CT_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @General_Types.ListOfDummy_CT.");
+break;
+}
+set_selection(other_value);
+}
+
+boolean ListOfDummy__CT_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 ListOfDummy__CT_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const ListOfDummy__CT*)value_ptr)[value_index], legacy);
+else return ((const ListOfDummy__CT_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit();
+}
+
+ListOfDummy__CT_template::ListOfDummy__CT_template()
+{
+}
+
+ListOfDummy__CT_template::ListOfDummy__CT_template(template_sel other_value)
+ : Record_Of_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ListOfDummy__CT_template::ListOfDummy__CT_template(null_type)
+ : Record_Of_Template(SPECIFIC_VALUE)
+{
+single_value.n_elements = 0;
+single_value.value_elements = NULL;
+}
+
+ListOfDummy__CT_template::ListOfDummy__CT_template(const ListOfDummy__CT& other_value)
+{
+copy_value(other_value);
+}
+
+ListOfDummy__CT_template::ListOfDummy__CT_template(const OPTIONAL<ListOfDummy__CT>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ListOfDummy__CT&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @General_Types.ListOfDummy_CT from an unbound optional field.");
+}
+}
+
+ListOfDummy__CT_template::ListOfDummy__CT_template(const ListOfDummy__CT_template& other_value)
+ : Record_Of_Template()
+{
+copy_template(other_value);
+}
+
+ListOfDummy__CT_template::~ListOfDummy__CT_template()
+{
+clean_up();
+}
+
+void ListOfDummy__CT_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:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ListOfDummy__CT_template& ListOfDummy__CT_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ListOfDummy__CT_template& ListOfDummy__CT_template::operator=(null_type)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value.n_elements = 0;
+single_value.value_elements = NULL;
+return *this;
+}
+
+ListOfDummy__CT_template& ListOfDummy__CT_template::operator=(const ListOfDummy__CT& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ListOfDummy__CT_template& ListOfDummy__CT_template::operator=(const OPTIONAL<ListOfDummy__CT>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ListOfDummy__CT&)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 @General_Types.ListOfDummy_CT.");
+}
+return *this;
+}
+
+ListOfDummy__CT_template& ListOfDummy__CT_template::operator=(const ListOfDummy__CT_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+COMPONENT_template& ListOfDummy__CT_template::operator[](int index_value)
+{
+if (index_value < 0) TTCN_error("Accessing an element of a template for type @General_Types.ListOfDummy_CT 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 @General_Types.ListOfDummy_CT.");
+    break;
+}
+return *single_value.value_elements[index_value];
+}
+
+COMPONENT_template& ListOfDummy__CT_template::operator[](const INTEGER& index_value)
+{
+index_value.must_bound("Using an unbound integer value for indexing a template of type @General_Types.ListOfDummy_CT.");
+return (*this)[(int)index_value];
+}
+
+const COMPONENT_template& ListOfDummy__CT_template::operator[](int index_value) const
+{
+if (index_value < 0) TTCN_error("Accessing an element of a template for type @General_Types.ListOfDummy_CT using a negative index: %d.", index_value);
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @General_Types.ListOfDummy_CT.");
+if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @General_Types.ListOfDummy_CT: 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 COMPONENT_template& ListOfDummy__CT_template::operator[](const INTEGER& index_value) const
+{
+index_value.must_bound("Using an unbound integer value for indexing a template of type @General_Types.ListOfDummy_CT.");
+return (*this)[(int)index_value];
+}
+
+void ListOfDummy__CT_template::set_size(int new_size)
+{
+if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @General_Types.ListOfDummy_CT.");
+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 = (COMPONENT_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 COMPONENT_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 COMPONENT_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 = (COMPONENT_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size);
+single_value.n_elements = new_size;
+}
+}
+
+int ListOfDummy__CT_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 ListOfDummy__CT_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 @General_Types.ListOfDummy_CT 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 @General_Types.ListOfDummy_CT 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 @General_Types.ListOfDummy_CT 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 @General_Types.ListOfDummy_CT 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 @General_Types.ListOfDummy_CT 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 @General_Types.ListOfDummy_CT containing complemented list.", op_name);
+default:
+  TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @General_Types.ListOfDummy_CT.", op_name);
+}
+return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @General_Types.ListOfDummy_CT");
+}
+
+boolean ListOfDummy__CT_template::match(const ListOfDummy__CT& 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;
+default:
+TTCN_error("Matching with an uninitialized/unsupported template of type @General_Types.ListOfDummy_CT.");
+}
+return FALSE;
+}
+
+boolean ListOfDummy__CT_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;
+}
+
+ListOfDummy__CT ListOfDummy__CT_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 @General_Types.ListOfDummy_CT.");
+ListOfDummy__CT 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;
+}
+
+ListOfDummy__CT ListOfDummy__CT_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);
+}
+
+ListOfDummy__CT ListOfDummy__CT_template::replace(int index, int len, const ListOfDummy__CT_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());
+}
+
+ListOfDummy__CT ListOfDummy__CT_template::replace(int index, int len, const ListOfDummy__CT& 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 ListOfDummy__CT_template::set_type(template_sel template_type, unsigned int list_length)
+{
+clean_up();
+switch (template_type) {
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = list_length;
+value_list.list_value = new ListOfDummy__CT_template[list_length];
+break;
+default:
+TTCN_error("Internal error: Setting an invalid type for a template of type @General_Types.ListOfDummy_CT.");
+}
+set_selection(template_type);
+}
+
+ListOfDummy__CT_template& ListOfDummy__CT_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of type @General_Types.ListOfDummy_CT.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @General_Types.ListOfDummy_CT.");
+return value_list.list_value[list_index];
+}
+
+void ListOfDummy__CT_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 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;
+default:
+log_generic();
+}
+log_restricted();
+log_ifpresent();
+}
+
+void ListOfDummy__CT_template::log_match(const ListOfDummy__CT& 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 ListOfDummy__CT_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 @General_Types.ListOfDummy_CT.");
+}
+}
+
+void ListOfDummy__CT_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 @General_Types.ListOfDummy_CT.");
+single_value.value_elements = (COMPONENT_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 COMPONENT_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 ListOfDummy__CT_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 @General_Types.ListOfDummy_CT.");
+}
+}
+
+boolean ListOfDummy__CT_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ListOfDummy__CT_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 ListOfDummy__CT_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: {
+    ListOfDummy__CT_template temp;
+    temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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;
+  default:
+    param.type_error("record of template", "@General_Types.ListOfDummy_CT");
+  }
+  is_ifpresent = param.get_ifpresent();
+  set_length_range(param);
+}
+
+void ListOfDummy__CT_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 : "@General_Types.ListOfDummy_CT");
+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 : "@General_Types.ListOfDummy_CT");
+}
+
+boolean ListOfDummy__CT_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);
+}
+}
+
+const Protocols ProtocolList::UNBOUND_ELEM;
+ProtocolList::ProtocolList()
+{
+val_ptr = NULL;
+}
+
+ProtocolList::ProtocolList(null_type)
+{
+val_ptr = new recordof_setof_struct;
+val_ptr->ref_count = 1;
+val_ptr->n_elements = 0;
+val_ptr->value_elements = NULL;
+}
+
+ProtocolList::ProtocolList(const ProtocolList& other_value)
+{
+if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @General_Types.ProtocolList.");
+val_ptr = other_value.val_ptr;
+val_ptr->ref_count++;
+}
+
+ProtocolList::~ProtocolList()
+{
+clean_up();
+if (val_ptr != NULL) val_ptr = NULL;
+}
+
+void ProtocolList::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.");
+}
+}
+
+ProtocolList& ProtocolList::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;
+}
+
+ProtocolList& ProtocolList::operator=(const ProtocolList& other_value)
+{
+if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @General_Types.ProtocolList.");
+if (this != &other_value) {
+clean_up();
+val_ptr = other_value.val_ptr;
+val_ptr->ref_count++;
+}
+return *this;
+}
+
+boolean ProtocolList::operator==(null_type) const
+{
+if (val_ptr == NULL)
+TTCN_error("The left operand of comparison is an unbound value of type @General_Types.ProtocolList.");
+return val_ptr->n_elements == 0 ;
+}
+
+boolean ProtocolList::operator==(const ProtocolList& other_value) const
+{
+if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @General_Types.ProtocolList.");
+if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @General_Types.ProtocolList.");
+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;
+}
+
+Protocols& ProtocolList::operator[](int index_value)
+{
+if (index_value < 0) TTCN_error("Accessing an element of type @General_Types.ProtocolList 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 = (Protocols**)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 Protocols(*(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 Protocols;
+}
+return *val_ptr->value_elements[index_value];
+}
+
+Protocols& ProtocolList::operator[](const INTEGER& index_value)
+{
+index_value.must_bound("Using an unbound integer value for indexing a value of type @General_Types.ProtocolList.");
+return (*this)[(int)index_value];
+}
+
+const Protocols& ProtocolList::operator[](int index_value) const
+{
+if (val_ptr == NULL)
+TTCN_error("Accessing an element in an unbound value of type @General_Types.ProtocolList.");
+if (index_value < 0) TTCN_error("Accessing an element of type @General_Types.ProtocolList using a negative index: %d.", index_value);
+if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @General_Types.ProtocolList: 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 Protocols& ProtocolList::operator[](const INTEGER& index_value) const
+{
+index_value.must_bound("Using an unbound integer value for indexing a value of type @General_Types.ProtocolList.");
+return (*this)[(int)index_value];
+}
+
+ProtocolList ProtocolList::operator<<=(int rotate_count) const
+{
+return *this >>= (-rotate_count);
+}
+
+ProtocolList ProtocolList::operator<<=(const INTEGER& rotate_count) const
+{
+rotate_count.must_bound("Unbound integer operand of rotate left operator.");
+return *this >>= (int)(-rotate_count);
+}
+
+ProtocolList ProtocolList::operator>>=(const INTEGER& rotate_count) const
+{
+rotate_count.must_bound("Unbound integer operand of rotate right operator.");
+return *this >>= (int)rotate_count;
+}
+
+ProtocolList ProtocolList::operator>>=(int rotate_count) const
+{
+if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @General_Types.ProtocolList.");
+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;
+ProtocolList 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 Protocols(*val_ptr->value_elements[i]);
+}
+}
+return ret_val;
+}
+
+ProtocolList ProtocolList::operator+(const ProtocolList& other_value) const
+{
+if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @General_Types.ProtocolList concatenation.");
+if (val_ptr->n_elements == 0) return other_value;
+if (other_value.val_ptr->n_elements == 0) return *this;
+ProtocolList 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 Protocols(*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 Protocols(*other_value.val_ptr->value_elements[i]);
+}
+}
+return ret_val;
+}
+
+ProtocolList ProtocolList::substr(int index, int returncount) const
+{
+if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @General_Types.ProtocolList.");
+check_substr_arguments(val_ptr->n_elements, index, returncount, "@General_Types.ProtocolList","element");
+ProtocolList 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 Protocols(*val_ptr->value_elements[i+index]);
+}
+}
+return ret_val;
+}
+
+ProtocolList ProtocolList::replace(int index, int len, const ProtocolList& repl) const
+{
+if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @General_Types.ProtocolList.");
+if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @General_Types.ProtocolList.");
+check_replace_arguments(val_ptr->n_elements, index, len, "@General_Types.ProtocolList","element");
+ProtocolList 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 Protocols(*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 Protocols(*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 Protocols(*val_ptr->value_elements[index+i+len]);
+}
+}
+return ret_val;
+}
+
+ProtocolList ProtocolList::replace(int index, int len, const ProtocolList_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 ProtocolList::set_size(int new_size)
+{
+if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @General_Types.ProtocolList.");
+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 = (Protocols**)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 Protocols(*(val_ptr->value_elements[elem_count]));
+}
+}
+clean_up();
+val_ptr = new_val_ptr;
+}
+if (new_size > val_ptr->n_elements) {
+val_ptr->value_elements = (Protocols**)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 @General_Types.ProtocolList: %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 = (Protocols**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size);
+val_ptr->n_elements = new_size;
+}
+}
+
+boolean ProtocolList::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 ProtocolList::size_of() const
+{
+if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @General_Types.ProtocolList.");
+return val_ptr->n_elements;
+}
+
+int ProtocolList::lengthof() const
+{
+if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @General_Types.ProtocolList.");
+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 ProtocolList::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 ProtocolList::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", "@General_Types.ProtocolList");
+    }
+    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", "@General_Types.ProtocolList");
+    }
+    break;
+  default:
+    TTCN_error("Internal error: Unknown operation type.");
+  }
+}
+
+void ProtocolList::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 ProtocolList::encode_text(Text_Buf& text_buf) const
+{
+if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @General_Types.ProtocolList.");
+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 ProtocolList::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 @General_Types.ProtocolList.");
+val_ptr->value_elements = (Protocols**)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 Protocols;
+val_ptr->value_elements[elem_count]->decode_text(text_buf);
+}
+}
+
+void ProtocolList::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ProtocolList::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ProtocolList::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;
+    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) 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 ProtocolList::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 ProtocolList_template::copy_value(const ProtocolList& other_value)
+{
+if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @General_Types.ProtocolList with an unbound value.");
+single_value.n_elements = other_value.size_of();
+single_value.value_elements = (Protocols_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 Protocols_template(other_value[elem_count]);
+} else {
+single_value.value_elements[elem_count] = new Protocols_template;
+}
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ProtocolList_template::copy_template(const ProtocolList_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 = (Protocols_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 Protocols_template(*other_value.single_value.value_elements[elem_count]);
+} else {
+single_value.value_elements[elem_count] = new Protocols_template;
+}
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ProtocolList_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @General_Types.ProtocolList.");
+break;
+}
+set_selection(other_value);
+}
+
+boolean ProtocolList_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 ProtocolList_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const ProtocolList*)value_ptr)[value_index], legacy);
+else return ((const ProtocolList_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit();
+}
+
+ProtocolList_template::ProtocolList_template()
+{
+}
+
+ProtocolList_template::ProtocolList_template(template_sel other_value)
+ : Record_Of_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ProtocolList_template::ProtocolList_template(null_type)
+ : Record_Of_Template(SPECIFIC_VALUE)
+{
+single_value.n_elements = 0;
+single_value.value_elements = NULL;
+}
+
+ProtocolList_template::ProtocolList_template(const ProtocolList& other_value)
+{
+copy_value(other_value);
+}
+
+ProtocolList_template::ProtocolList_template(const OPTIONAL<ProtocolList>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ProtocolList&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @General_Types.ProtocolList from an unbound optional field.");
+}
+}
+
+ProtocolList_template::ProtocolList_template(const ProtocolList_template& other_value)
+ : Record_Of_Template()
+{
+copy_template(other_value);
+}
+
+ProtocolList_template::~ProtocolList_template()
+{
+clean_up();
+}
+
+void ProtocolList_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:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ProtocolList_template& ProtocolList_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ProtocolList_template& ProtocolList_template::operator=(null_type)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value.n_elements = 0;
+single_value.value_elements = NULL;
+return *this;
+}
+
+ProtocolList_template& ProtocolList_template::operator=(const ProtocolList& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ProtocolList_template& ProtocolList_template::operator=(const OPTIONAL<ProtocolList>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ProtocolList&)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 @General_Types.ProtocolList.");
+}
+return *this;
+}
+
+ProtocolList_template& ProtocolList_template::operator=(const ProtocolList_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+Protocols_template& ProtocolList_template::operator[](int index_value)
+{
+if (index_value < 0) TTCN_error("Accessing an element of a template for type @General_Types.ProtocolList 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 @General_Types.ProtocolList.");
+    break;
+}
+return *single_value.value_elements[index_value];
+}
+
+Protocols_template& ProtocolList_template::operator[](const INTEGER& index_value)
+{
+index_value.must_bound("Using an unbound integer value for indexing a template of type @General_Types.ProtocolList.");
+return (*this)[(int)index_value];
+}
+
+const Protocols_template& ProtocolList_template::operator[](int index_value) const
+{
+if (index_value < 0) TTCN_error("Accessing an element of a template for type @General_Types.ProtocolList using a negative index: %d.", index_value);
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @General_Types.ProtocolList.");
+if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @General_Types.ProtocolList: 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 Protocols_template& ProtocolList_template::operator[](const INTEGER& index_value) const
+{
+index_value.must_bound("Using an unbound integer value for indexing a template of type @General_Types.ProtocolList.");
+return (*this)[(int)index_value];
+}
+
+void ProtocolList_template::set_size(int new_size)
+{
+if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @General_Types.ProtocolList.");
+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 = (Protocols_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 Protocols_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 Protocols_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 = (Protocols_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size);
+single_value.n_elements = new_size;
+}
+}
+
+int ProtocolList_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 ProtocolList_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 @General_Types.ProtocolList 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 @General_Types.ProtocolList 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 @General_Types.ProtocolList 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 @General_Types.ProtocolList 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 @General_Types.ProtocolList 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 @General_Types.ProtocolList containing complemented list.", op_name);
+default:
+  TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @General_Types.ProtocolList.", op_name);
+}
+return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @General_Types.ProtocolList");
+}
+
+boolean ProtocolList_template::match(const ProtocolList& 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;
+default:
+TTCN_error("Matching with an uninitialized/unsupported template of type @General_Types.ProtocolList.");
+}
+return FALSE;
+}
+
+boolean ProtocolList_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;
+}
+
+ProtocolList ProtocolList_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 @General_Types.ProtocolList.");
+ProtocolList 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;
+}
+
+ProtocolList ProtocolList_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);
+}
+
+ProtocolList ProtocolList_template::replace(int index, int len, const ProtocolList_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());
+}
+
+ProtocolList ProtocolList_template::replace(int index, int len, const ProtocolList& 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 ProtocolList_template::set_type(template_sel template_type, unsigned int list_length)
+{
+clean_up();
+switch (template_type) {
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = list_length;
+value_list.list_value = new ProtocolList_template[list_length];
+break;
+default:
+TTCN_error("Internal error: Setting an invalid type for a template of type @General_Types.ProtocolList.");
+}
+set_selection(template_type);
+}
+
+ProtocolList_template& ProtocolList_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of type @General_Types.ProtocolList.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @General_Types.ProtocolList.");
+return value_list.list_value[list_index];
+}
+
+void ProtocolList_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 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;
+default:
+log_generic();
+}
+log_restricted();
+log_ifpresent();
+}
+
+void ProtocolList_template::log_match(const ProtocolList& 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 ProtocolList_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 @General_Types.ProtocolList.");
+}
+}
+
+void ProtocolList_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 @General_Types.ProtocolList.");
+single_value.value_elements = (Protocols_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 Protocols_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 ProtocolList_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 @General_Types.ProtocolList.");
+}
+}
+
+boolean ProtocolList_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ProtocolList_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 ProtocolList_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: {
+    ProtocolList_template temp;
+    temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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;
+  default:
+    param.type_error("record of template", "@General_Types.ProtocolList");
+  }
+  is_ifpresent = param.get_ifpresent();
+  set_length_range(param);
+}
+
+void ProtocolList_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 : "@General_Types.ProtocolList");
+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 : "@General_Types.ProtocolList");
+}
+
+boolean ProtocolList_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);
+}
+}
+
+/* Bodies of functions, altsteps and testcases */
+
+boolean operator==(null_type, const Integer__array& other_value)
+{
+if (other_value.val_ptr == NULL)
+TTCN_error("The right operand of comparison is an unbound value of type @General_Types.Integer_array.");
+return other_value.val_ptr->n_elements == 0;
+}
+
+boolean operator==(null_type, const Verdicttypes& other_value)
+{
+if (other_value.val_ptr == NULL)
+TTCN_error("The right operand of comparison is an unbound value of type @General_Types.Verdicttypes.");
+return other_value.val_ptr->n_elements == 0;
+}
+
+boolean operator==(null_type, const VerdicttypeSet& other_value)
+{
+if (other_value.val_ptr == NULL)
+TTCN_error("The right operand of comparison is an unbound value of type @General_Types.VerdicttypeSet.");
+return other_value.val_ptr->n_elements == 0;
+}
+
+boolean operator==(null_type, const Anytypes& other_value)
+{
+if (other_value.val_ptr == NULL)
+TTCN_error("The right operand of comparison is an unbound value of type @General_Types.Anytypes.");
+return other_value.val_ptr->n_elements == 0;
+}
+
+boolean operator==(null_type, const AnytypeSet& other_value)
+{
+if (other_value.val_ptr == NULL)
+TTCN_error("The right operand of comparison is an unbound value of type @General_Types.AnytypeSet.");
+return other_value.val_ptr->n_elements == 0;
+}
+
+boolean operator==(null_type, const ListOfDummy__comptype& other_value)
+{
+if (other_value.val_ptr == NULL)
+TTCN_error("The right operand of comparison is an unbound value of type @General_Types.ListOfDummy_comptype.");
+return other_value.val_ptr->n_elements == 0;
+}
+
+boolean operator==(null_type, const ListOfDummy__CT& other_value)
+{
+if (other_value.val_ptr == NULL)
+TTCN_error("The right operand of comparison is an unbound value of type @General_Types.ListOfDummy_CT.");
+return other_value.val_ptr->n_elements == 0;
+}
+
+boolean operator==(null_type, const ProtocolList& other_value)
+{
+if (other_value.val_ptr == NULL)
+TTCN_error("The right operand of comparison is an unbound value of type @General_Types.ProtocolList.");
+return other_value.val_ptr->n_elements == 0;
+}
+
+
+/* Bodies of static functions */
+
+static boolean init_comp_type(const char *component_type, boolean init_base_comps)
+{
+(void)init_base_comps;
+if (!strcmp(component_type, "Dummy_comptype")) {
+return TRUE;
+} else if (!strcmp(component_type, "Dummy_CT")) {
+return TRUE;
+} else return FALSE;
+}
+
+
+} /* end of namespace */
diff --git a/demo/General_Types.d b/demo/General_Types.d
new file mode 100644
index 0000000..e39a30f
--- /dev/null
+++ b/demo/General_Types.d
@@ -0,0 +1,58 @@
+General_Types.o General_Types.d : General_Types.cc General_Types.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TTCN3.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/version.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/cversion.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Types.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Vector.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Error.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Basetype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Encdec.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RInt.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON_Tokenizer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Logger.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Template.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Integer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ttcn3float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Boolean.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Null.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Optional.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Param_Types.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/memory.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/BER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Textbuf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Parameters.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XmlReader.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Objid.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Verdicttype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Component.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Bitstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RAW.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/CharCoding.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Hexstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Octetstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Any.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Universal_charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Struct_of.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Array.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_CharacterString.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_External.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TEXT.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_EmbeddedPDV.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Addfunc.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Timer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Port.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Event_Handler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/TitanLoggerApiSimple.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/PreGenRecordOf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Module_list.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Snapshot.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Default.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Runtime.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/OER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Profiler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ProfilerTools.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Debugger.hh
diff --git a/demo/General_Types.hh b/demo/General_Types.hh
new file mode 100644
index 0000000..6096e98
--- /dev/null
+++ b/demo/General_Types.hh
@@ -0,0 +1,2573 @@
+// This C++ header file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+#ifndef General__Types_HH
+#define General__Types_HH
+
+#ifdef TITAN_RUNTIME_2
+#error Generated code does not match with used runtime.\
+ Code was generated without -R option but -DTITAN_RUNTIME_2 was used.
+#endif
+
+/* Header file includes */
+
+#include <TTCN3.hh>
+
+#if TTCN3_VERSION != 60600
+#error Version mismatch detected.\
+ Please check the version of the TTCN-3 compiler and the base library.\
+ Run make clean and rebuild the project if the version of the compiler changed recently.
+#endif
+
+#ifndef LINUX
+#error This file should be compiled on LINUX
+#endif
+
+#undef General__Types_HH
+#endif
+
+namespace General__Types {
+
+/* Forward declarations of classes */
+
+typedef PreGenRecordOf::PREGEN__RECORD__OF__BITSTRING Bitstrings;
+typedef PreGenRecordOf::PREGEN__RECORD__OF__BITSTRING_template Bitstrings_template;
+typedef PreGenRecordOf::PREGEN__SET__OF__BITSTRING BitstringSet;
+typedef PreGenRecordOf::PREGEN__SET__OF__BITSTRING_template BitstringSet_template;
+typedef PreGenRecordOf::PREGEN__RECORD__OF__OCTETSTRING Octetstrings;
+typedef PreGenRecordOf::PREGEN__RECORD__OF__OCTETSTRING_template Octetstrings_template;
+typedef PreGenRecordOf::PREGEN__SET__OF__OCTETSTRING OctetstringSet;
+typedef PreGenRecordOf::PREGEN__SET__OF__OCTETSTRING_template OctetstringSet_template;
+typedef PreGenRecordOf::PREGEN__RECORD__OF__CHARSTRING Charstrings;
+typedef PreGenRecordOf::PREGEN__RECORD__OF__CHARSTRING_template Charstrings_template;
+typedef PreGenRecordOf::PREGEN__SET__OF__CHARSTRING CharstringSet;
+typedef PreGenRecordOf::PREGEN__SET__OF__CHARSTRING_template CharstringSet_template;
+typedef PreGenRecordOf::PREGEN__RECORD__OF__HEXSTRING Hexstrings;
+typedef PreGenRecordOf::PREGEN__RECORD__OF__HEXSTRING_template Hexstrings_template;
+typedef PreGenRecordOf::PREGEN__SET__OF__HEXSTRING HexstringSet;
+typedef PreGenRecordOf::PREGEN__SET__OF__HEXSTRING_template HexstringSet_template;
+typedef PreGenRecordOf::PREGEN__RECORD__OF__INTEGER Integers;
+typedef PreGenRecordOf::PREGEN__RECORD__OF__INTEGER_template Integers_template;
+class Integer__array;
+class Integer__array_template;
+typedef PreGenRecordOf::PREGEN__SET__OF__INTEGER IntegerSet;
+typedef PreGenRecordOf::PREGEN__SET__OF__INTEGER_template IntegerSet_template;
+typedef PreGenRecordOf::PREGEN__RECORD__OF__FLOAT Floats;
+typedef PreGenRecordOf::PREGEN__RECORD__OF__FLOAT_template Floats_template;
+typedef PreGenRecordOf::PREGEN__SET__OF__FLOAT FloatSet;
+typedef PreGenRecordOf::PREGEN__SET__OF__FLOAT_template FloatSet_template;
+typedef PreGenRecordOf::PREGEN__RECORD__OF__UNIVERSAL__CHARSTRING UniversalCharstrings;
+typedef PreGenRecordOf::PREGEN__RECORD__OF__UNIVERSAL__CHARSTRING_template UniversalCharstrings_template;
+typedef PreGenRecordOf::PREGEN__SET__OF__UNIVERSAL__CHARSTRING UniversalCharstringSet;
+typedef PreGenRecordOf::PREGEN__SET__OF__UNIVERSAL__CHARSTRING_template UniversalCharstringSet_template;
+typedef PreGenRecordOf::PREGEN__RECORD__OF__BOOLEAN Booleans;
+typedef PreGenRecordOf::PREGEN__RECORD__OF__BOOLEAN_template Booleans_template;
+typedef PreGenRecordOf::PREGEN__SET__OF__BOOLEAN BooleanSet;
+typedef PreGenRecordOf::PREGEN__SET__OF__BOOLEAN_template BooleanSet_template;
+class Verdicttypes;
+class Verdicttypes_template;
+class VerdicttypeSet;
+class VerdicttypeSet_template;
+class Anytypes;
+class Anytypes_template;
+class anytype;
+class anytype_template;
+class AnytypeSet;
+class AnytypeSet_template;
+class Protocols;
+class Protocols_template;
+typedef PreGenRecordOf::PREGEN__RECORD__OF__OCTETSTRING OCT1List;
+typedef PreGenRecordOf::PREGEN__RECORD__OF__OCTETSTRING_template OCT1List_template;
+typedef PreGenRecordOf::PREGEN__RECORD__OF__OCTETSTRING OCT2List;
+typedef PreGenRecordOf::PREGEN__RECORD__OF__OCTETSTRING_template OCT2List_template;
+typedef PreGenRecordOf::PREGEN__RECORD__OF__OCTETSTRING OCT3List;
+typedef PreGenRecordOf::PREGEN__RECORD__OF__OCTETSTRING_template OCT3List_template;
+typedef PreGenRecordOf::PREGEN__RECORD__OF__OCTETSTRING OCT4List;
+typedef PreGenRecordOf::PREGEN__RECORD__OF__OCTETSTRING_template OCT4List_template;
+typedef PreGenRecordOf::PREGEN__RECORD__OF__OCTETSTRING OCT5List;
+typedef PreGenRecordOf::PREGEN__RECORD__OF__OCTETSTRING_template OCT5List_template;
+typedef PreGenRecordOf::PREGEN__RECORD__OF__OCTETSTRING OCT6List;
+typedef PreGenRecordOf::PREGEN__RECORD__OF__OCTETSTRING_template OCT6List_template;
+typedef PreGenRecordOf::PREGEN__RECORD__OF__OCTETSTRING OCT7List;
+typedef PreGenRecordOf::PREGEN__RECORD__OF__OCTETSTRING_template OCT7List_template;
+class ListOfDummy__comptype;
+class ListOfDummy__comptype_template;
+class ListOfDummy__CT;
+class ListOfDummy__CT_template;
+class ProtocolList;
+class ProtocolList_template;
+
+} /* end of namespace */
+
+#ifndef General__Types_HH
+#define General__Types_HH
+
+namespace General__Types {
+
+/* Type definitions */
+
+typedef BITSTRING BIT1n;
+typedef BITSTRING_template BIT1n_template;
+typedef BITSTRING BIT2n;
+typedef BITSTRING_template BIT2n_template;
+typedef BITSTRING BIT3n;
+typedef BITSTRING_template BIT3n_template;
+typedef BITSTRING BIT4n;
+typedef BITSTRING_template BIT4n_template;
+typedef BITSTRING BIT5n;
+typedef BITSTRING_template BIT5n_template;
+typedef BITSTRING BIT6n;
+typedef BITSTRING_template BIT6n_template;
+typedef BITSTRING BIT7n;
+typedef BITSTRING_template BIT7n_template;
+typedef BITSTRING BIT8n;
+typedef BITSTRING_template BIT8n_template;
+typedef BITSTRING BIT9n;
+typedef BITSTRING_template BIT9n_template;
+typedef BITSTRING BIT12n;
+typedef BITSTRING_template BIT12n_template;
+typedef BITSTRING BIT14n;
+typedef BITSTRING_template BIT14n_template;
+typedef BITSTRING BIT15n;
+typedef BITSTRING_template BIT15n_template;
+typedef BITSTRING BIT16n;
+typedef BITSTRING_template BIT16n_template;
+typedef BITSTRING BIT56n;
+typedef BITSTRING_template BIT56n_template;
+typedef BITSTRING BIT14__24n;
+typedef BITSTRING_template BIT14__24n_template;
+typedef BITSTRING BIT1np;
+typedef BITSTRING_template BIT1np_template;
+typedef BITSTRING BIT2np;
+typedef BITSTRING_template BIT2np_template;
+typedef BITSTRING BIT3np;
+typedef BITSTRING_template BIT3np_template;
+typedef BITSTRING BIT4np;
+typedef BITSTRING_template BIT4np_template;
+typedef BITSTRING BIT5np;
+typedef BITSTRING_template BIT5np_template;
+typedef BITSTRING BIT6np;
+typedef BITSTRING_template BIT6np_template;
+typedef BITSTRING BIT7np;
+typedef BITSTRING_template BIT7np_template;
+typedef BITSTRING BIT15np;
+typedef BITSTRING_template BIT15np_template;
+typedef BITSTRING BIT1;
+typedef BITSTRING_template BIT1_template;
+typedef BITSTRING BIT2;
+typedef BITSTRING_template BIT2_template;
+typedef BITSTRING BIT3;
+typedef BITSTRING_template BIT3_template;
+typedef BITSTRING BIT4;
+typedef BITSTRING_template BIT4_template;
+typedef BITSTRING BIT5;
+typedef BITSTRING_template BIT5_template;
+typedef BITSTRING BIT6;
+typedef BITSTRING_template BIT6_template;
+typedef BITSTRING BIT7;
+typedef BITSTRING_template BIT7_template;
+typedef BITSTRING BIT8;
+typedef BITSTRING_template BIT8_template;
+typedef BITSTRING BIT9;
+typedef BITSTRING_template BIT9_template;
+typedef BITSTRING BIT10;
+typedef BITSTRING_template BIT10_template;
+typedef BITSTRING BIT11;
+typedef BITSTRING_template BIT11_template;
+typedef BITSTRING BIT12;
+typedef BITSTRING_template BIT12_template;
+typedef BITSTRING BIT14;
+typedef BITSTRING_template BIT14_template;
+typedef BITSTRING BIT15;
+typedef BITSTRING_template BIT15_template;
+typedef BITSTRING BIT16;
+typedef BITSTRING_template BIT16_template;
+typedef BITSTRING BIT24;
+typedef BITSTRING_template BIT24_template;
+typedef BITSTRING BIT31;
+typedef BITSTRING_template BIT31_template;
+typedef BITSTRING BIT56;
+typedef BITSTRING_template BIT56_template;
+typedef Bitstrings BitstringList;
+typedef Bitstrings_template BitstringList_template;
+typedef OCTETSTRING OCT0n;
+typedef OCTETSTRING_template OCT0n_template;
+typedef OCTETSTRING OCT1n;
+typedef OCTETSTRING_template OCT1n_template;
+typedef OCTETSTRING OCT2n;
+typedef OCTETSTRING_template OCT2n_template;
+typedef OCTETSTRING OCT3n;
+typedef OCTETSTRING_template OCT3n_template;
+typedef OCTETSTRING OCT4n;
+typedef OCTETSTRING_template OCT4n_template;
+typedef OCTETSTRING OCT5n;
+typedef OCTETSTRING_template OCT5n_template;
+typedef OCTETSTRING OCT6n;
+typedef OCTETSTRING_template OCT6n_template;
+typedef OCTETSTRING OCT7n;
+typedef OCTETSTRING_template OCT7n_template;
+typedef OCTETSTRING OCT8n;
+typedef OCTETSTRING_template OCT8n_template;
+typedef OCTETSTRING OCT9n;
+typedef OCTETSTRING_template OCT9n_template;
+typedef OCTETSTRING OCT10n;
+typedef OCTETSTRING_template OCT10n_template;
+typedef OCTETSTRING OCT11n;
+typedef OCTETSTRING_template OCT11n_template;
+typedef OCTETSTRING OCT12n;
+typedef OCTETSTRING_template OCT12n_template;
+typedef OCTETSTRING OCT13n;
+typedef OCTETSTRING_template OCT13n_template;
+typedef OCTETSTRING OCT14n;
+typedef OCTETSTRING_template OCT14n_template;
+typedef OCTETSTRING OCT15n;
+typedef OCTETSTRING_template OCT15n_template;
+typedef OCTETSTRING OCT16n;
+typedef OCTETSTRING_template OCT16n_template;
+typedef OCTETSTRING OCT17n;
+typedef OCTETSTRING_template OCT17n_template;
+typedef OCTETSTRING OCT18n;
+typedef OCTETSTRING_template OCT18n_template;
+typedef OCTETSTRING OCT19n;
+typedef OCTETSTRING_template OCT19n_template;
+typedef OCTETSTRING OCT20n;
+typedef OCTETSTRING_template OCT20n_template;
+typedef OCTETSTRING OCT28n;
+typedef OCTETSTRING_template OCT28n_template;
+typedef OCTETSTRING OCT32n;
+typedef OCTETSTRING_template OCT32n_template;
+typedef OCTETSTRING OCT34n;
+typedef OCTETSTRING_template OCT34n_template;
+typedef OCTETSTRING OCT46n;
+typedef OCTETSTRING_template OCT46n_template;
+typedef OCTETSTRING OCT50n;
+typedef OCTETSTRING_template OCT50n_template;
+typedef OCTETSTRING OCT69n;
+typedef OCTETSTRING_template OCT69n_template;
+typedef OCTETSTRING OCT100n;
+typedef OCTETSTRING_template OCT100n_template;
+typedef OCTETSTRING OCT128n;
+typedef OCTETSTRING_template OCT128n_template;
+typedef OCTETSTRING OCT500n;
+typedef OCTETSTRING_template OCT500n_template;
+typedef OCTETSTRING OCTNn;
+typedef OCTETSTRING_template OCTNn_template;
+typedef OCTETSTRING OCT1__3n;
+typedef OCTETSTRING_template OCT1__3n_template;
+typedef OCTETSTRING OCT1__4n;
+typedef OCTETSTRING_template OCT1__4n_template;
+typedef OCTETSTRING OCT1__5n;
+typedef OCTETSTRING_template OCT1__5n_template;
+typedef OCTETSTRING OCT1__6n;
+typedef OCTETSTRING_template OCT1__6n_template;
+typedef OCTETSTRING OCT1__7n;
+typedef OCTETSTRING_template OCT1__7n_template;
+typedef OCTETSTRING OCT1__8n;
+typedef OCTETSTRING_template OCT1__8n_template;
+typedef OCTETSTRING OCT1__12n;
+typedef OCTETSTRING_template OCT1__12n_template;
+typedef OCTETSTRING OCT1__15n;
+typedef OCTETSTRING_template OCT1__15n_template;
+typedef OCTETSTRING OCT1__16n;
+typedef OCTETSTRING_template OCT1__16n_template;
+typedef OCTETSTRING OCT1__18n;
+typedef OCTETSTRING_template OCT1__18n_template;
+typedef OCTETSTRING OCT1__20n;
+typedef OCTETSTRING_template OCT1__20n_template;
+typedef OCTETSTRING OCT1__24n;
+typedef OCTETSTRING_template OCT1__24n_template;
+typedef OCTETSTRING OCT1__32n;
+typedef OCTETSTRING_template OCT1__32n_template;
+typedef OCTETSTRING OCT1__34n;
+typedef OCTETSTRING_template OCT1__34n_template;
+typedef OCTETSTRING OCT1__46n;
+typedef OCTETSTRING_template OCT1__46n_template;
+typedef OCTETSTRING OCT1__50n;
+typedef OCTETSTRING_template OCT1__50n_template;
+typedef OCTETSTRING OCT1__112n;
+typedef OCTETSTRING_template OCT1__112n_template;
+typedef OCTETSTRING OCT1__127n;
+typedef OCTETSTRING_template OCT1__127n_template;
+typedef OCTETSTRING OCT1__128n;
+typedef OCTETSTRING_template OCT1__128n_template;
+typedef OCTETSTRING OCT1__172n;
+typedef OCTETSTRING_template OCT1__172n_template;
+typedef OCTETSTRING OCT3__5n;
+typedef OCTETSTRING_template OCT3__5n_template;
+typedef OCTETSTRING OCT3__7n;
+typedef OCTETSTRING_template OCT3__7n_template;
+typedef OCTETSTRING OCT3__8n;
+typedef OCTETSTRING_template OCT3__8n_template;
+typedef OCTETSTRING OCT3__14n;
+typedef OCTETSTRING_template OCT3__14n_template;
+typedef OCTETSTRING OCT3__17n;
+typedef OCTETSTRING_template OCT3__17n_template;
+typedef OCTETSTRING OCT4__8n;
+typedef OCTETSTRING_template OCT4__8n_template;
+typedef Octetstrings OctetstringList;
+typedef Octetstrings_template OctetstringList_template;
+typedef CHARSTRING CHAR4;
+typedef CHARSTRING_template CHAR4_template;
+typedef Charstrings CharstringList;
+typedef Charstrings_template CharstringList_template;
+typedef HEXSTRING HEX4n;
+typedef HEXSTRING_template HEX4n_template;
+typedef HEXSTRING HEX6n;
+typedef HEXSTRING_template HEX6n_template;
+typedef HEXSTRING HEX8n;
+typedef HEXSTRING_template HEX8n_template;
+typedef HEXSTRING HEX15n;
+typedef HEXSTRING_template HEX15n_template;
+typedef HEXSTRING HEX16n;
+typedef HEXSTRING_template HEX16n_template;
+typedef HEXSTRING HEX24n;
+typedef HEXSTRING_template HEX24n_template;
+typedef HEXSTRING HEX0__18n;
+typedef HEXSTRING_template HEX0__18n_template;
+typedef HEXSTRING HEX1__20n;
+typedef HEXSTRING_template HEX1__20n_template;
+typedef HEXSTRING HEX1__34n;
+typedef HEXSTRING_template HEX1__34n_template;
+typedef Hexstrings HexstringList;
+typedef Hexstrings_template HexstringList_template;
+typedef INTEGER INT3nb;
+typedef INTEGER_template INT3nb_template;
+typedef INTEGER INT4nb;
+typedef INTEGER_template INT4nb_template;
+typedef INTEGER INT5nb;
+typedef INTEGER_template INT5nb_template;
+typedef INTEGER INT8nb;
+typedef INTEGER_template INT8nb_template;
+typedef INTEGER INT2nbp;
+typedef INTEGER_template INT2nbp_template;
+typedef INTEGER INT1nbp;
+typedef INTEGER_template INT1nbp_template;
+typedef INTEGER INT3nbp;
+typedef INTEGER_template INT3nbp_template;
+typedef INTEGER INT5nbp;
+typedef INTEGER_template INT5nbp_template;
+typedef INTEGER INT9nbp;
+typedef INTEGER_template INT9nbp_template;
+typedef INTEGER INT13nbp;
+typedef INTEGER_template INT13nbp_template;
+typedef INTEGER INT15nbp;
+typedef INTEGER_template INT15nbp_template;
+typedef Integers IntegerList;
+typedef Integers_template IntegerList_template;
+typedef Floats FloatList;
+typedef Floats_template FloatList_template;
+typedef UniversalCharstrings UniversalCharstringList;
+typedef UniversalCharstrings_template UniversalCharstringList_template;
+typedef Booleans BooleanList;
+typedef Booleans_template BooleanList_template;
+typedef Verdicttypes VerdicttypeList;
+typedef Verdicttypes_template VerdicttypeList_template;
+typedef Anytypes AnytypeList;
+typedef Anytypes_template AnytypeList_template;
+typedef BITSTRING BIT6__BO__LAST;
+typedef BITSTRING_template BIT6__BO__LAST_template;
+typedef BITSTRING BIT16__BO__LAST;
+typedef BITSTRING_template BIT16__BO__LAST_template;
+typedef BITSTRING BIT32__BO__LAST;
+typedef BITSTRING_template BIT32__BO__LAST_template;
+typedef OCTETSTRING Dummy;
+typedef OCTETSTRING_template Dummy_template;
+typedef OCTETSTRING OCT0;
+typedef OCTETSTRING_template OCT0_template;
+typedef OCTETSTRING OCT1;
+typedef OCTETSTRING_template OCT1_template;
+typedef OCTETSTRING OCT2;
+typedef OCTETSTRING_template OCT2_template;
+typedef OCTETSTRING OCT3;
+typedef OCTETSTRING_template OCT3_template;
+typedef OCTETSTRING OCT4;
+typedef OCTETSTRING_template OCT4_template;
+typedef OCTETSTRING OCT5;
+typedef OCTETSTRING_template OCT5_template;
+typedef OCTETSTRING OCT6;
+typedef OCTETSTRING_template OCT6_template;
+typedef OCTETSTRING OCT7;
+typedef OCTETSTRING_template OCT7_template;
+typedef OCTETSTRING OCT8;
+typedef OCTETSTRING_template OCT8_template;
+typedef OCTETSTRING OCT9;
+typedef OCTETSTRING_template OCT9_template;
+typedef OCTETSTRING OCT10;
+typedef OCTETSTRING_template OCT10_template;
+typedef OCTETSTRING OCT11;
+typedef OCTETSTRING_template OCT11_template;
+typedef OCTETSTRING OCT12;
+typedef OCTETSTRING_template OCT12_template;
+typedef OCTETSTRING OCT13;
+typedef OCTETSTRING_template OCT13_template;
+typedef OCTETSTRING OCT14;
+typedef OCTETSTRING_template OCT14_template;
+typedef OCTETSTRING OCT15;
+typedef OCTETSTRING_template OCT15_template;
+typedef OCTETSTRING OCT16;
+typedef OCTETSTRING_template OCT16_template;
+typedef OCTETSTRING OCT17;
+typedef OCTETSTRING_template OCT17_template;
+typedef OCTETSTRING OCT18;
+typedef OCTETSTRING_template OCT18_template;
+typedef OCTETSTRING OCT19;
+typedef OCTETSTRING_template OCT19_template;
+typedef OCTETSTRING OCT20;
+typedef OCTETSTRING_template OCT20_template;
+typedef OCTETSTRING OCT32;
+typedef OCTETSTRING_template OCT32_template;
+typedef OCTETSTRING OCT34;
+typedef OCTETSTRING_template OCT34_template;
+typedef OCTETSTRING OCT46;
+typedef OCTETSTRING_template OCT46_template;
+typedef OCTETSTRING OCT1__260;
+typedef OCTETSTRING_template OCT1__260_template;
+typedef OCTETSTRING OCT1__8;
+typedef OCTETSTRING_template OCT1__8_template;
+typedef OCTETSTRING OCT1__12;
+typedef OCTETSTRING_template OCT1__12_template;
+typedef OCTETSTRING OCT1__32;
+typedef OCTETSTRING_template OCT1__32_template;
+typedef OCTETSTRING OCT1__50;
+typedef OCTETSTRING_template OCT1__50_template;
+typedef OCTETSTRING OCT3__8;
+typedef OCTETSTRING_template OCT3__8_template;
+typedef OCTETSTRING OCTN;
+typedef OCTETSTRING_template OCTN_template;
+typedef HEXSTRING HEX1;
+typedef HEXSTRING_template HEX1_template;
+typedef HEXSTRING HEX0__16;
+typedef HEXSTRING_template HEX0__16_template;
+typedef HEXSTRING HEX5__16;
+typedef HEXSTRING_template HEX5__16_template;
+typedef HEXSTRING HEX1__32;
+typedef HEXSTRING_template HEX1__32_template;
+typedef INTEGER INT1;
+typedef INTEGER_template INT1_template;
+typedef INTEGER LIN1;
+typedef INTEGER_template LIN1_template;
+typedef INTEGER LIN2;
+typedef INTEGER_template LIN2_template;
+typedef INTEGER LIN2__BO__LAST;
+typedef INTEGER_template LIN2__BO__LAST_template;
+typedef INTEGER LIN3__BO__LAST;
+typedef INTEGER_template LIN3__BO__LAST_template;
+typedef INTEGER LIN4__BO__LAST;
+typedef INTEGER_template LIN4__BO__LAST_template;
+typedef INTEGER INT1b;
+typedef INTEGER_template INT1b_template;
+typedef INTEGER INT2b;
+typedef INTEGER_template INT2b_template;
+typedef INTEGER INT3b;
+typedef INTEGER_template INT3b_template;
+typedef INTEGER INT4b;
+typedef INTEGER_template INT4b_template;
+typedef INTEGER INT5b;
+typedef INTEGER_template INT5b_template;
+typedef INTEGER INT6b;
+typedef INTEGER_template INT6b_template;
+typedef INTEGER INT7b;
+typedef INTEGER_template INT7b_template;
+typedef INTEGER INT11b__BO__LAST;
+typedef INTEGER_template INT11b__BO__LAST_template;
+typedef INTEGER INT12b__BO__LAST;
+typedef INTEGER_template INT12b__BO__LAST_template;
+typedef INTEGER INT13b__BO__LAST;
+typedef INTEGER_template INT13b__BO__LAST_template;
+typedef INTEGER INT14b__BO__LAST;
+typedef INTEGER_template INT14b__BO__LAST_template;
+typedef INTEGER INT20b__BO__LAST;
+typedef INTEGER_template INT20b__BO__LAST_template;
+typedef INTEGER INT31b__BO__LAST;
+typedef INTEGER_template INT31b__BO__LAST_template;
+typedef COMPONENT Dummy__comptype;
+typedef COMPONENT_template Dummy__comptype_template;
+typedef COMPONENT Dummy__CT;
+typedef COMPONENT_template Dummy__CT_template;
+
+/* Class definitions */
+
+class Integer__array : public Base_Type {
+struct recordof_setof_struct {
+int ref_count;
+int n_elements;
+Integers **value_elements;
+} *val_ptr;
+
+static const Integers UNBOUND_ELEM;
+private:
+friend boolean operator==(null_type null_value, const Integer__array& other_value);
+
+public:
+  typedef Integers of_type;
+Integer__array();
+Integer__array(null_type other_value);
+Integer__array(const Integer__array& other_value);
+~Integer__array();
+
+void clean_up();
+Integer__array& operator=(null_type other_value);
+Integer__array& operator=(const Integer__array& other_value);
+
+boolean operator==(null_type other_value) const;
+boolean operator==(const Integer__array& other_value) const;
+inline boolean operator!=(null_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const Integer__array& other_value) const { return !(*this == other_value); }
+
+Integers& operator[](int index_value);
+Integers& operator[](const INTEGER& index_value);
+const Integers& operator[](int index_value) const;
+const Integers& operator[](const INTEGER& index_value) const;
+
+Integer__array operator<<=(int rotate_count) const;
+Integer__array operator<<=(const INTEGER& rotate_count) const;
+Integer__array operator>>=(int rotate_count) const;
+Integer__array operator>>=(const INTEGER& rotate_count) const;
+
+Integer__array operator+(const Integer__array& other_value) const;
+
+Integer__array substr(int index, int returncount) const;
+
+Integer__array replace(int index, int len, const Integer__array& repl) const;
+
+Integer__array replace(int index, int len, const Integer__array_template& repl) const;
+
+void set_size(int new_size);
+inline boolean is_bound() const {return val_ptr != NULL; }
+inline boolean is_present() const { return is_bound(); }
+boolean is_value() const;
+int size_of() const;
+int n_elem() const { return size_of(); }
+int lengthof() const;
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class Integer__array_template : public Record_Of_Template {
+union {
+struct {
+int n_elements;
+Integers_template **value_elements;
+} single_value;
+struct {
+unsigned int n_values;
+Integer__array_template *list_value;
+} value_list;
+};
+void copy_value(const Integer__array& other_value);
+void copy_template(const Integer__array_template& other_value);
+static boolean match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy);
+
+public:
+Integer__array_template();
+Integer__array_template(template_sel other_value);
+Integer__array_template(null_type other_value);
+Integer__array_template(const Integer__array& other_value);
+Integer__array_template(const OPTIONAL<Integer__array>& other_value);
+Integer__array_template(const Integer__array_template& other_value);
+~Integer__array_template();
+
+void clean_up();
+Integer__array_template& operator=(template_sel other_value);
+Integer__array_template& operator=(null_type other_value);
+Integer__array_template& operator=(const Integer__array& other_value);
+Integer__array_template& operator=(const OPTIONAL<Integer__array>& other_value);
+Integer__array_template& operator=(const Integer__array_template& other_value);
+
+Integers_template& operator[](int index_value);
+Integers_template& operator[](const INTEGER& index_value);
+const Integers_template& operator[](int index_value) const;
+const Integers_template& operator[](const INTEGER& index_value) const;
+
+void set_size(int new_size);
+int n_elem() const;
+int size_of(boolean is_size) const;
+inline int size_of() const { return size_of(TRUE); }
+inline int lengthof() const { return size_of(FALSE); }
+boolean match(const Integer__array& other_value, boolean legacy = FALSE) const;
+inline boolean is_bound() const 
+  {return template_selection != UNINITIALIZED_TEMPLATE; }
+boolean is_value() const;
+Integer__array valueof() const;
+Integer__array substr(int index, int returncount) const;
+
+Integer__array replace(int index, int len, const Integer__array_template& repl) const;
+
+Integer__array replace(int index, int len, const Integer__array& repl) const;
+
+void set_type(template_sel template_type, unsigned int list_length);
+Integer__array_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const Integer__array& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean get_istemplate_kind(const char* type) const;
+};
+
+class Verdicttypes : public Base_Type {
+struct recordof_setof_struct {
+int ref_count;
+int n_elements;
+VERDICTTYPE **value_elements;
+} *val_ptr;
+
+static const VERDICTTYPE UNBOUND_ELEM;
+private:
+friend boolean operator==(null_type null_value, const Verdicttypes& other_value);
+
+public:
+  typedef VERDICTTYPE of_type;
+Verdicttypes();
+Verdicttypes(null_type other_value);
+Verdicttypes(const Verdicttypes& other_value);
+~Verdicttypes();
+
+void clean_up();
+Verdicttypes& operator=(null_type other_value);
+Verdicttypes& operator=(const Verdicttypes& other_value);
+
+boolean operator==(null_type other_value) const;
+boolean operator==(const Verdicttypes& other_value) const;
+inline boolean operator!=(null_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const Verdicttypes& other_value) const { return !(*this == other_value); }
+
+VERDICTTYPE& operator[](int index_value);
+VERDICTTYPE& operator[](const INTEGER& index_value);
+const VERDICTTYPE& operator[](int index_value) const;
+const VERDICTTYPE& operator[](const INTEGER& index_value) const;
+
+Verdicttypes operator<<=(int rotate_count) const;
+Verdicttypes operator<<=(const INTEGER& rotate_count) const;
+Verdicttypes operator>>=(int rotate_count) const;
+Verdicttypes operator>>=(const INTEGER& rotate_count) const;
+
+Verdicttypes operator+(const Verdicttypes& other_value) const;
+
+Verdicttypes substr(int index, int returncount) const;
+
+Verdicttypes replace(int index, int len, const Verdicttypes& repl) const;
+
+Verdicttypes replace(int index, int len, const Verdicttypes_template& repl) const;
+
+void set_size(int new_size);
+inline boolean is_bound() const {return val_ptr != NULL; }
+inline boolean is_present() const { return is_bound(); }
+boolean is_value() const;
+int size_of() const;
+int n_elem() const { return size_of(); }
+int lengthof() const;
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class Verdicttypes_template : public Record_Of_Template {
+union {
+struct {
+int n_elements;
+VERDICTTYPE_template **value_elements;
+} single_value;
+struct {
+unsigned int n_values;
+Verdicttypes_template *list_value;
+} value_list;
+};
+void copy_value(const Verdicttypes& other_value);
+void copy_template(const Verdicttypes_template& other_value);
+static boolean match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy);
+
+public:
+Verdicttypes_template();
+Verdicttypes_template(template_sel other_value);
+Verdicttypes_template(null_type other_value);
+Verdicttypes_template(const Verdicttypes& other_value);
+Verdicttypes_template(const OPTIONAL<Verdicttypes>& other_value);
+Verdicttypes_template(const Verdicttypes_template& other_value);
+~Verdicttypes_template();
+
+void clean_up();
+Verdicttypes_template& operator=(template_sel other_value);
+Verdicttypes_template& operator=(null_type other_value);
+Verdicttypes_template& operator=(const Verdicttypes& other_value);
+Verdicttypes_template& operator=(const OPTIONAL<Verdicttypes>& other_value);
+Verdicttypes_template& operator=(const Verdicttypes_template& other_value);
+
+VERDICTTYPE_template& operator[](int index_value);
+VERDICTTYPE_template& operator[](const INTEGER& index_value);
+const VERDICTTYPE_template& operator[](int index_value) const;
+const VERDICTTYPE_template& operator[](const INTEGER& index_value) const;
+
+void set_size(int new_size);
+int n_elem() const;
+int size_of(boolean is_size) const;
+inline int size_of() const { return size_of(TRUE); }
+inline int lengthof() const { return size_of(FALSE); }
+boolean match(const Verdicttypes& other_value, boolean legacy = FALSE) const;
+inline boolean is_bound() const 
+  {return template_selection != UNINITIALIZED_TEMPLATE; }
+boolean is_value() const;
+Verdicttypes valueof() const;
+Verdicttypes substr(int index, int returncount) const;
+
+Verdicttypes replace(int index, int len, const Verdicttypes_template& repl) const;
+
+Verdicttypes replace(int index, int len, const Verdicttypes& repl) const;
+
+void set_type(template_sel template_type, unsigned int list_length);
+Verdicttypes_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const Verdicttypes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean get_istemplate_kind(const char* type) const;
+};
+
+class VerdicttypeSet : public Base_Type {
+struct recordof_setof_struct {
+int ref_count;
+int n_elements;
+VERDICTTYPE **value_elements;
+} *val_ptr;
+
+static const VERDICTTYPE UNBOUND_ELEM;
+private:
+friend boolean operator==(null_type null_value, const VerdicttypeSet& other_value);
+static boolean compare_function(const Base_Type *left_ptr, int left_index, const Base_Type *right_ptr, int right_index);
+
+public:
+  typedef VERDICTTYPE of_type;
+VerdicttypeSet();
+VerdicttypeSet(null_type other_value);
+VerdicttypeSet(const VerdicttypeSet& other_value);
+~VerdicttypeSet();
+
+void clean_up();
+VerdicttypeSet& operator=(null_type other_value);
+VerdicttypeSet& operator=(const VerdicttypeSet& other_value);
+
+boolean operator==(null_type other_value) const;
+boolean operator==(const VerdicttypeSet& other_value) const;
+inline boolean operator!=(null_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const VerdicttypeSet& other_value) const { return !(*this == other_value); }
+
+VERDICTTYPE& operator[](int index_value);
+VERDICTTYPE& operator[](const INTEGER& index_value);
+const VERDICTTYPE& operator[](int index_value) const;
+const VERDICTTYPE& operator[](const INTEGER& index_value) const;
+
+VerdicttypeSet operator<<=(int rotate_count) const;
+VerdicttypeSet operator<<=(const INTEGER& rotate_count) const;
+VerdicttypeSet operator>>=(int rotate_count) const;
+VerdicttypeSet operator>>=(const INTEGER& rotate_count) const;
+
+VerdicttypeSet operator+(const VerdicttypeSet& other_value) const;
+
+VerdicttypeSet substr(int index, int returncount) const;
+
+VerdicttypeSet replace(int index, int len, const VerdicttypeSet& repl) const;
+
+VerdicttypeSet replace(int index, int len, const VerdicttypeSet_template& repl) const;
+
+void set_size(int new_size);
+inline boolean is_bound() const {return val_ptr != NULL; }
+inline boolean is_present() const { return is_bound(); }
+boolean is_value() const;
+int size_of() const;
+int n_elem() const { return size_of(); }
+int lengthof() const;
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class VerdicttypeSet_template : public Restricted_Length_Template {
+union {
+struct {
+int n_elements;
+VERDICTTYPE_template **value_elements;
+} single_value;
+struct {
+unsigned int n_values;
+VerdicttypeSet_template *list_value;
+} value_list;
+struct {
+unsigned int n_items;
+VERDICTTYPE_template *set_items;
+} value_set;
+};
+void copy_value(const VerdicttypeSet& other_value);
+void copy_template(const VerdicttypeSet_template& other_value);
+static boolean match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy);
+static boolean match_function_set(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy);
+static void log_function(const Base_Type *value_ptr, const Restricted_Length_Template *template_ptr, int index_value, int index_template, boolean legacy);
+
+public:
+VerdicttypeSet_template();
+VerdicttypeSet_template(template_sel other_value);
+VerdicttypeSet_template(null_type other_value);
+VerdicttypeSet_template(const VerdicttypeSet& other_value);
+VerdicttypeSet_template(const OPTIONAL<VerdicttypeSet>& other_value);
+VerdicttypeSet_template(const VerdicttypeSet_template& other_value);
+~VerdicttypeSet_template();
+
+void clean_up();
+VerdicttypeSet_template& operator=(template_sel other_value);
+VerdicttypeSet_template& operator=(null_type other_value);
+VerdicttypeSet_template& operator=(const VerdicttypeSet& other_value);
+VerdicttypeSet_template& operator=(const OPTIONAL<VerdicttypeSet>& other_value);
+VerdicttypeSet_template& operator=(const VerdicttypeSet_template& other_value);
+
+VERDICTTYPE_template& operator[](int index_value);
+VERDICTTYPE_template& operator[](const INTEGER& index_value);
+const VERDICTTYPE_template& operator[](int index_value) const;
+const VERDICTTYPE_template& operator[](const INTEGER& index_value) const;
+
+void set_size(int new_size);
+int n_elem() const;
+int size_of(boolean is_size) const;
+inline int size_of() const { return size_of(TRUE); }
+inline int lengthof() const { return size_of(FALSE); }
+boolean match(const VerdicttypeSet& other_value, boolean legacy = FALSE) const;
+inline boolean is_bound() const 
+  {return template_selection != UNINITIALIZED_TEMPLATE; }
+boolean is_value() const;
+VerdicttypeSet valueof() const;
+VerdicttypeSet substr(int index, int returncount) const;
+
+VerdicttypeSet replace(int index, int len, const VerdicttypeSet_template& repl) const;
+
+VerdicttypeSet replace(int index, int len, const VerdicttypeSet& repl) const;
+
+void set_type(template_sel template_type, unsigned int list_length);
+VerdicttypeSet_template& list_item(unsigned int list_index);
+VERDICTTYPE_template& set_item(unsigned int set_index);
+void log() const;
+void log_match(const VerdicttypeSet& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean get_istemplate_kind(const char* type) const;
+};
+
+class Anytypes : public Base_Type {
+struct recordof_setof_struct {
+int ref_count;
+int n_elements;
+anytype **value_elements;
+} *val_ptr;
+
+static const anytype UNBOUND_ELEM;
+private:
+friend boolean operator==(null_type null_value, const Anytypes& other_value);
+
+public:
+  typedef anytype of_type;
+Anytypes();
+Anytypes(null_type other_value);
+Anytypes(const Anytypes& other_value);
+~Anytypes();
+
+void clean_up();
+Anytypes& operator=(null_type other_value);
+Anytypes& operator=(const Anytypes& other_value);
+
+boolean operator==(null_type other_value) const;
+boolean operator==(const Anytypes& other_value) const;
+inline boolean operator!=(null_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const Anytypes& other_value) const { return !(*this == other_value); }
+
+anytype& operator[](int index_value);
+anytype& operator[](const INTEGER& index_value);
+const anytype& operator[](int index_value) const;
+const anytype& operator[](const INTEGER& index_value) const;
+
+Anytypes operator<<=(int rotate_count) const;
+Anytypes operator<<=(const INTEGER& rotate_count) const;
+Anytypes operator>>=(int rotate_count) const;
+Anytypes operator>>=(const INTEGER& rotate_count) const;
+
+Anytypes operator+(const Anytypes& other_value) const;
+
+Anytypes substr(int index, int returncount) const;
+
+Anytypes replace(int index, int len, const Anytypes& repl) const;
+
+Anytypes replace(int index, int len, const Anytypes_template& repl) const;
+
+void set_size(int new_size);
+inline boolean is_bound() const {return val_ptr != NULL; }
+inline boolean is_present() const { return is_bound(); }
+boolean is_value() const;
+int size_of() const;
+int n_elem() const { return size_of(); }
+int lengthof() const;
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class Anytypes_template : public Record_Of_Template {
+union {
+struct {
+int n_elements;
+anytype_template **value_elements;
+} single_value;
+struct {
+unsigned int n_values;
+Anytypes_template *list_value;
+} value_list;
+};
+void copy_value(const Anytypes& other_value);
+void copy_template(const Anytypes_template& other_value);
+static boolean match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy);
+
+public:
+Anytypes_template();
+Anytypes_template(template_sel other_value);
+Anytypes_template(null_type other_value);
+Anytypes_template(const Anytypes& other_value);
+Anytypes_template(const OPTIONAL<Anytypes>& other_value);
+Anytypes_template(const Anytypes_template& other_value);
+~Anytypes_template();
+
+void clean_up();
+Anytypes_template& operator=(template_sel other_value);
+Anytypes_template& operator=(null_type other_value);
+Anytypes_template& operator=(const Anytypes& other_value);
+Anytypes_template& operator=(const OPTIONAL<Anytypes>& other_value);
+Anytypes_template& operator=(const Anytypes_template& other_value);
+
+anytype_template& operator[](int index_value);
+anytype_template& operator[](const INTEGER& index_value);
+const anytype_template& operator[](int index_value) const;
+const anytype_template& operator[](const INTEGER& index_value) const;
+
+void set_size(int new_size);
+int n_elem() const;
+int size_of(boolean is_size) const;
+inline int size_of() const { return size_of(TRUE); }
+inline int lengthof() const { return size_of(FALSE); }
+boolean match(const Anytypes& other_value, boolean legacy = FALSE) const;
+inline boolean is_bound() const 
+  {return template_selection != UNINITIALIZED_TEMPLATE; }
+boolean is_value() const;
+Anytypes valueof() const;
+Anytypes substr(int index, int returncount) const;
+
+Anytypes replace(int index, int len, const Anytypes_template& repl) const;
+
+Anytypes replace(int index, int len, const Anytypes& repl) const;
+
+void set_type(template_sel template_type, unsigned int list_length);
+Anytypes_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const Anytypes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean get_istemplate_kind(const char* type) const;
+};
+
+class anytype : public Base_Type {
+public:
+enum union_selection_type { UNBOUND_VALUE = 0 };
+private:
+union_selection_type union_selection;
+union {
+};
+void copy_value(const anytype& other_value);
+
+public:
+anytype();
+anytype(const anytype& other_value);
+~anytype();
+anytype& operator=(const anytype& other_value);
+boolean operator==(const anytype& other_value) const;
+inline boolean operator!=(const anytype& other_value) const { return !(*this == other_value); }
+inline union_selection_type get_selection() const { return union_selection; }
+boolean ischosen(union_selection_type checked_selection) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+};
+
+class anytype_template : public Base_Template {
+union {
+struct {
+anytype::union_selection_type union_selection;
+union {
+};
+} single_value;
+struct {
+unsigned int n_values;
+anytype_template *list_value;
+} value_list;
+};
+void copy_value(const anytype& other_value);
+
+void copy_template(const anytype_template& other_value);
+
+public:
+anytype_template();
+anytype_template(template_sel other_value);
+anytype_template(const anytype& other_value);
+anytype_template(const OPTIONAL<anytype>& other_value);
+anytype_template(const anytype_template& other_value);
+~anytype_template();
+void clean_up();
+anytype_template& operator=(template_sel other_value);
+anytype_template& operator=(const anytype& other_value);
+anytype_template& operator=(const OPTIONAL<anytype>& other_value);
+anytype_template& operator=(const anytype_template& other_value);
+boolean match(const anytype& other_value, boolean legacy = FALSE) const;
+boolean is_value() const;anytype valueof() const;
+anytype_template& list_item(unsigned int list_index) const;
+void set_type(template_sel template_type, unsigned int list_length);
+boolean ischosen(anytype::union_selection_type checked_selection) const;
+void log() const;
+void log_match(const anytype& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class AnytypeSet : public Base_Type {
+struct recordof_setof_struct {
+int ref_count;
+int n_elements;
+anytype **value_elements;
+} *val_ptr;
+
+static const anytype UNBOUND_ELEM;
+private:
+friend boolean operator==(null_type null_value, const AnytypeSet& other_value);
+static boolean compare_function(const Base_Type *left_ptr, int left_index, const Base_Type *right_ptr, int right_index);
+
+public:
+  typedef anytype of_type;
+AnytypeSet();
+AnytypeSet(null_type other_value);
+AnytypeSet(const AnytypeSet& other_value);
+~AnytypeSet();
+
+void clean_up();
+AnytypeSet& operator=(null_type other_value);
+AnytypeSet& operator=(const AnytypeSet& other_value);
+
+boolean operator==(null_type other_value) const;
+boolean operator==(const AnytypeSet& other_value) const;
+inline boolean operator!=(null_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const AnytypeSet& other_value) const { return !(*this == other_value); }
+
+anytype& operator[](int index_value);
+anytype& operator[](const INTEGER& index_value);
+const anytype& operator[](int index_value) const;
+const anytype& operator[](const INTEGER& index_value) const;
+
+AnytypeSet operator<<=(int rotate_count) const;
+AnytypeSet operator<<=(const INTEGER& rotate_count) const;
+AnytypeSet operator>>=(int rotate_count) const;
+AnytypeSet operator>>=(const INTEGER& rotate_count) const;
+
+AnytypeSet operator+(const AnytypeSet& other_value) const;
+
+AnytypeSet substr(int index, int returncount) const;
+
+AnytypeSet replace(int index, int len, const AnytypeSet& repl) const;
+
+AnytypeSet replace(int index, int len, const AnytypeSet_template& repl) const;
+
+void set_size(int new_size);
+inline boolean is_bound() const {return val_ptr != NULL; }
+inline boolean is_present() const { return is_bound(); }
+boolean is_value() const;
+int size_of() const;
+int n_elem() const { return size_of(); }
+int lengthof() const;
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class AnytypeSet_template : public Restricted_Length_Template {
+union {
+struct {
+int n_elements;
+anytype_template **value_elements;
+} single_value;
+struct {
+unsigned int n_values;
+AnytypeSet_template *list_value;
+} value_list;
+struct {
+unsigned int n_items;
+anytype_template *set_items;
+} value_set;
+};
+void copy_value(const AnytypeSet& other_value);
+void copy_template(const AnytypeSet_template& other_value);
+static boolean match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy);
+static boolean match_function_set(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy);
+static void log_function(const Base_Type *value_ptr, const Restricted_Length_Template *template_ptr, int index_value, int index_template, boolean legacy);
+
+public:
+AnytypeSet_template();
+AnytypeSet_template(template_sel other_value);
+AnytypeSet_template(null_type other_value);
+AnytypeSet_template(const AnytypeSet& other_value);
+AnytypeSet_template(const OPTIONAL<AnytypeSet>& other_value);
+AnytypeSet_template(const AnytypeSet_template& other_value);
+~AnytypeSet_template();
+
+void clean_up();
+AnytypeSet_template& operator=(template_sel other_value);
+AnytypeSet_template& operator=(null_type other_value);
+AnytypeSet_template& operator=(const AnytypeSet& other_value);
+AnytypeSet_template& operator=(const OPTIONAL<AnytypeSet>& other_value);
+AnytypeSet_template& operator=(const AnytypeSet_template& other_value);
+
+anytype_template& operator[](int index_value);
+anytype_template& operator[](const INTEGER& index_value);
+const anytype_template& operator[](int index_value) const;
+const anytype_template& operator[](const INTEGER& index_value) const;
+
+void set_size(int new_size);
+int n_elem() const;
+int size_of(boolean is_size) const;
+inline int size_of() const { return size_of(TRUE); }
+inline int lengthof() const { return size_of(FALSE); }
+boolean match(const AnytypeSet& other_value, boolean legacy = FALSE) const;
+inline boolean is_bound() const 
+  {return template_selection != UNINITIALIZED_TEMPLATE; }
+boolean is_value() const;
+AnytypeSet valueof() const;
+AnytypeSet substr(int index, int returncount) const;
+
+AnytypeSet replace(int index, int len, const AnytypeSet_template& repl) const;
+
+AnytypeSet replace(int index, int len, const AnytypeSet& repl) const;
+
+void set_type(template_sel template_type, unsigned int list_length);
+AnytypeSet_template& list_item(unsigned int list_index);
+anytype_template& set_item(unsigned int set_index);
+void log() const;
+void log_match(const AnytypeSet& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean get_istemplate_kind(const char* type) const;
+};
+
+class Protocols : public Base_Type { // enum
+friend class Protocols_template;
+public:
+enum enum_type { mtp3 = 0, sccp = 1, isup = 2, bicc = 3, qaal2 = 4, gcp = 5, bssap = 6, bssmap = 7, ranap = 8, dtap = 9, UNKNOWN_VALUE = 10, UNBOUND_VALUE = 11 };
+private:
+enum_type enum_value;
+
+public:
+Protocols();
+Protocols(int other_value);
+Protocols(enum_type other_value);
+Protocols(const Protocols& other_value);
+
+Protocols& operator=(int other_value);
+Protocols& operator=(enum_type other_value);
+Protocols& operator=(const Protocols& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const Protocols& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const Protocols& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const Protocols& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const Protocols& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const Protocols& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const Protocols& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const Protocols& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class Protocols_template : public Base_Template {
+union {
+Protocols::enum_type single_value;
+struct {
+unsigned int n_values;
+Protocols_template *list_value;
+} value_list;
+};
+
+void copy_template(const Protocols_template& other_value);
+
+public:
+Protocols_template();
+Protocols_template(template_sel other_value);
+Protocols_template(int other_value);
+Protocols_template(Protocols::enum_type other_value);
+Protocols_template(const Protocols& other_value);
+Protocols_template(const OPTIONAL<Protocols>& other_value);
+Protocols_template(const Protocols_template& other_value);
+~Protocols_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+Protocols_template& operator=(template_sel other_value);
+Protocols_template& operator=(int other_value);
+Protocols_template& operator=(Protocols::enum_type other_value);
+Protocols_template& operator=(const Protocols& other_value);
+Protocols_template& operator=(const OPTIONAL<Protocols>& other_value);
+Protocols_template& operator=(const Protocols_template& other_value);
+
+boolean match(Protocols::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const Protocols& other_value, boolean legacy = FALSE) const;
+Protocols::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+Protocols_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const Protocols& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class ListOfDummy__comptype : public Base_Type {
+struct recordof_setof_struct {
+int ref_count;
+int n_elements;
+COMPONENT **value_elements;
+} *val_ptr;
+
+static const COMPONENT UNBOUND_ELEM;
+private:
+friend boolean operator==(null_type null_value, const ListOfDummy__comptype& other_value);
+
+public:
+  typedef COMPONENT of_type;
+ListOfDummy__comptype();
+ListOfDummy__comptype(null_type other_value);
+ListOfDummy__comptype(const ListOfDummy__comptype& other_value);
+~ListOfDummy__comptype();
+
+void clean_up();
+ListOfDummy__comptype& operator=(null_type other_value);
+ListOfDummy__comptype& operator=(const ListOfDummy__comptype& other_value);
+
+boolean operator==(null_type other_value) const;
+boolean operator==(const ListOfDummy__comptype& other_value) const;
+inline boolean operator!=(null_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const ListOfDummy__comptype& other_value) const { return !(*this == other_value); }
+
+COMPONENT& operator[](int index_value);
+COMPONENT& operator[](const INTEGER& index_value);
+const COMPONENT& operator[](int index_value) const;
+const COMPONENT& operator[](const INTEGER& index_value) const;
+
+ListOfDummy__comptype operator<<=(int rotate_count) const;
+ListOfDummy__comptype operator<<=(const INTEGER& rotate_count) const;
+ListOfDummy__comptype operator>>=(int rotate_count) const;
+ListOfDummy__comptype operator>>=(const INTEGER& rotate_count) const;
+
+ListOfDummy__comptype operator+(const ListOfDummy__comptype& other_value) const;
+
+ListOfDummy__comptype substr(int index, int returncount) const;
+
+ListOfDummy__comptype replace(int index, int len, const ListOfDummy__comptype& repl) const;
+
+ListOfDummy__comptype replace(int index, int len, const ListOfDummy__comptype_template& repl) const;
+
+void set_size(int new_size);
+inline boolean is_bound() const {return val_ptr != NULL; }
+inline boolean is_present() const { return is_bound(); }
+boolean is_value() const;
+int size_of() const;
+int n_elem() const { return size_of(); }
+int lengthof() const;
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ListOfDummy__comptype_template : public Record_Of_Template {
+union {
+struct {
+int n_elements;
+COMPONENT_template **value_elements;
+} single_value;
+struct {
+unsigned int n_values;
+ListOfDummy__comptype_template *list_value;
+} value_list;
+};
+void copy_value(const ListOfDummy__comptype& other_value);
+void copy_template(const ListOfDummy__comptype_template& other_value);
+static boolean match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy);
+
+public:
+ListOfDummy__comptype_template();
+ListOfDummy__comptype_template(template_sel other_value);
+ListOfDummy__comptype_template(null_type other_value);
+ListOfDummy__comptype_template(const ListOfDummy__comptype& other_value);
+ListOfDummy__comptype_template(const OPTIONAL<ListOfDummy__comptype>& other_value);
+ListOfDummy__comptype_template(const ListOfDummy__comptype_template& other_value);
+~ListOfDummy__comptype_template();
+
+void clean_up();
+ListOfDummy__comptype_template& operator=(template_sel other_value);
+ListOfDummy__comptype_template& operator=(null_type other_value);
+ListOfDummy__comptype_template& operator=(const ListOfDummy__comptype& other_value);
+ListOfDummy__comptype_template& operator=(const OPTIONAL<ListOfDummy__comptype>& other_value);
+ListOfDummy__comptype_template& operator=(const ListOfDummy__comptype_template& other_value);
+
+COMPONENT_template& operator[](int index_value);
+COMPONENT_template& operator[](const INTEGER& index_value);
+const COMPONENT_template& operator[](int index_value) const;
+const COMPONENT_template& operator[](const INTEGER& index_value) const;
+
+void set_size(int new_size);
+int n_elem() const;
+int size_of(boolean is_size) const;
+inline int size_of() const { return size_of(TRUE); }
+inline int lengthof() const { return size_of(FALSE); }
+boolean match(const ListOfDummy__comptype& other_value, boolean legacy = FALSE) const;
+inline boolean is_bound() const 
+  {return template_selection != UNINITIALIZED_TEMPLATE; }
+boolean is_value() const;
+ListOfDummy__comptype valueof() const;
+ListOfDummy__comptype substr(int index, int returncount) const;
+
+ListOfDummy__comptype replace(int index, int len, const ListOfDummy__comptype_template& repl) const;
+
+ListOfDummy__comptype replace(int index, int len, const ListOfDummy__comptype& repl) const;
+
+void set_type(template_sel template_type, unsigned int list_length);
+ListOfDummy__comptype_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const ListOfDummy__comptype& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean get_istemplate_kind(const char* type) const;
+};
+
+class ListOfDummy__CT : public Base_Type {
+struct recordof_setof_struct {
+int ref_count;
+int n_elements;
+COMPONENT **value_elements;
+} *val_ptr;
+
+static const COMPONENT UNBOUND_ELEM;
+private:
+friend boolean operator==(null_type null_value, const ListOfDummy__CT& other_value);
+
+public:
+  typedef COMPONENT of_type;
+ListOfDummy__CT();
+ListOfDummy__CT(null_type other_value);
+ListOfDummy__CT(const ListOfDummy__CT& other_value);
+~ListOfDummy__CT();
+
+void clean_up();
+ListOfDummy__CT& operator=(null_type other_value);
+ListOfDummy__CT& operator=(const ListOfDummy__CT& other_value);
+
+boolean operator==(null_type other_value) const;
+boolean operator==(const ListOfDummy__CT& other_value) const;
+inline boolean operator!=(null_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const ListOfDummy__CT& other_value) const { return !(*this == other_value); }
+
+COMPONENT& operator[](int index_value);
+COMPONENT& operator[](const INTEGER& index_value);
+const COMPONENT& operator[](int index_value) const;
+const COMPONENT& operator[](const INTEGER& index_value) const;
+
+ListOfDummy__CT operator<<=(int rotate_count) const;
+ListOfDummy__CT operator<<=(const INTEGER& rotate_count) const;
+ListOfDummy__CT operator>>=(int rotate_count) const;
+ListOfDummy__CT operator>>=(const INTEGER& rotate_count) const;
+
+ListOfDummy__CT operator+(const ListOfDummy__CT& other_value) const;
+
+ListOfDummy__CT substr(int index, int returncount) const;
+
+ListOfDummy__CT replace(int index, int len, const ListOfDummy__CT& repl) const;
+
+ListOfDummy__CT replace(int index, int len, const ListOfDummy__CT_template& repl) const;
+
+void set_size(int new_size);
+inline boolean is_bound() const {return val_ptr != NULL; }
+inline boolean is_present() const { return is_bound(); }
+boolean is_value() const;
+int size_of() const;
+int n_elem() const { return size_of(); }
+int lengthof() const;
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ListOfDummy__CT_template : public Record_Of_Template {
+union {
+struct {
+int n_elements;
+COMPONENT_template **value_elements;
+} single_value;
+struct {
+unsigned int n_values;
+ListOfDummy__CT_template *list_value;
+} value_list;
+};
+void copy_value(const ListOfDummy__CT& other_value);
+void copy_template(const ListOfDummy__CT_template& other_value);
+static boolean match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy);
+
+public:
+ListOfDummy__CT_template();
+ListOfDummy__CT_template(template_sel other_value);
+ListOfDummy__CT_template(null_type other_value);
+ListOfDummy__CT_template(const ListOfDummy__CT& other_value);
+ListOfDummy__CT_template(const OPTIONAL<ListOfDummy__CT>& other_value);
+ListOfDummy__CT_template(const ListOfDummy__CT_template& other_value);
+~ListOfDummy__CT_template();
+
+void clean_up();
+ListOfDummy__CT_template& operator=(template_sel other_value);
+ListOfDummy__CT_template& operator=(null_type other_value);
+ListOfDummy__CT_template& operator=(const ListOfDummy__CT& other_value);
+ListOfDummy__CT_template& operator=(const OPTIONAL<ListOfDummy__CT>& other_value);
+ListOfDummy__CT_template& operator=(const ListOfDummy__CT_template& other_value);
+
+COMPONENT_template& operator[](int index_value);
+COMPONENT_template& operator[](const INTEGER& index_value);
+const COMPONENT_template& operator[](int index_value) const;
+const COMPONENT_template& operator[](const INTEGER& index_value) const;
+
+void set_size(int new_size);
+int n_elem() const;
+int size_of(boolean is_size) const;
+inline int size_of() const { return size_of(TRUE); }
+inline int lengthof() const { return size_of(FALSE); }
+boolean match(const ListOfDummy__CT& other_value, boolean legacy = FALSE) const;
+inline boolean is_bound() const 
+  {return template_selection != UNINITIALIZED_TEMPLATE; }
+boolean is_value() const;
+ListOfDummy__CT valueof() const;
+ListOfDummy__CT substr(int index, int returncount) const;
+
+ListOfDummy__CT replace(int index, int len, const ListOfDummy__CT_template& repl) const;
+
+ListOfDummy__CT replace(int index, int len, const ListOfDummy__CT& repl) const;
+
+void set_type(template_sel template_type, unsigned int list_length);
+ListOfDummy__CT_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const ListOfDummy__CT& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean get_istemplate_kind(const char* type) const;
+};
+
+class ProtocolList : public Base_Type {
+struct recordof_setof_struct {
+int ref_count;
+int n_elements;
+Protocols **value_elements;
+} *val_ptr;
+
+static const Protocols UNBOUND_ELEM;
+private:
+friend boolean operator==(null_type null_value, const ProtocolList& other_value);
+
+public:
+  typedef Protocols of_type;
+ProtocolList();
+ProtocolList(null_type other_value);
+ProtocolList(const ProtocolList& other_value);
+~ProtocolList();
+
+void clean_up();
+ProtocolList& operator=(null_type other_value);
+ProtocolList& operator=(const ProtocolList& other_value);
+
+boolean operator==(null_type other_value) const;
+boolean operator==(const ProtocolList& other_value) const;
+inline boolean operator!=(null_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const ProtocolList& other_value) const { return !(*this == other_value); }
+
+Protocols& operator[](int index_value);
+Protocols& operator[](const INTEGER& index_value);
+const Protocols& operator[](int index_value) const;
+const Protocols& operator[](const INTEGER& index_value) const;
+
+ProtocolList operator<<=(int rotate_count) const;
+ProtocolList operator<<=(const INTEGER& rotate_count) const;
+ProtocolList operator>>=(int rotate_count) const;
+ProtocolList operator>>=(const INTEGER& rotate_count) const;
+
+ProtocolList operator+(const ProtocolList& other_value) const;
+
+ProtocolList substr(int index, int returncount) const;
+
+ProtocolList replace(int index, int len, const ProtocolList& repl) const;
+
+ProtocolList replace(int index, int len, const ProtocolList_template& repl) const;
+
+void set_size(int new_size);
+inline boolean is_bound() const {return val_ptr != NULL; }
+inline boolean is_present() const { return is_bound(); }
+boolean is_value() const;
+int size_of() const;
+int n_elem() const { return size_of(); }
+int lengthof() const;
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ProtocolList_template : public Record_Of_Template {
+union {
+struct {
+int n_elements;
+Protocols_template **value_elements;
+} single_value;
+struct {
+unsigned int n_values;
+ProtocolList_template *list_value;
+} value_list;
+};
+void copy_value(const ProtocolList& other_value);
+void copy_template(const ProtocolList_template& other_value);
+static boolean match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy);
+
+public:
+ProtocolList_template();
+ProtocolList_template(template_sel other_value);
+ProtocolList_template(null_type other_value);
+ProtocolList_template(const ProtocolList& other_value);
+ProtocolList_template(const OPTIONAL<ProtocolList>& other_value);
+ProtocolList_template(const ProtocolList_template& other_value);
+~ProtocolList_template();
+
+void clean_up();
+ProtocolList_template& operator=(template_sel other_value);
+ProtocolList_template& operator=(null_type other_value);
+ProtocolList_template& operator=(const ProtocolList& other_value);
+ProtocolList_template& operator=(const OPTIONAL<ProtocolList>& other_value);
+ProtocolList_template& operator=(const ProtocolList_template& other_value);
+
+Protocols_template& operator[](int index_value);
+Protocols_template& operator[](const INTEGER& index_value);
+const Protocols_template& operator[](int index_value) const;
+const Protocols_template& operator[](const INTEGER& index_value) const;
+
+void set_size(int new_size);
+int n_elem() const;
+int size_of(boolean is_size) const;
+inline int size_of() const { return size_of(TRUE); }
+inline int lengthof() const { return size_of(FALSE); }
+boolean match(const ProtocolList& other_value, boolean legacy = FALSE) const;
+inline boolean is_bound() const 
+  {return template_selection != UNINITIALIZED_TEMPLATE; }
+boolean is_value() const;
+ProtocolList valueof() const;
+ProtocolList substr(int index, int returncount) const;
+
+ProtocolList replace(int index, int len, const ProtocolList_template& repl) const;
+
+ProtocolList replace(int index, int len, const ProtocolList& repl) const;
+
+void set_type(template_sel template_type, unsigned int list_length);
+ProtocolList_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const ProtocolList& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean get_istemplate_kind(const char* type) const;
+};
+
+
+/* Function prototypes */
+
+extern boolean operator==(null_type null_value, const Integer__array& other_value);
+inline boolean operator!=(null_type null_value, const Integer__array& other_value) { return !(null_value == other_value); }
+extern boolean operator==(null_type null_value, const Verdicttypes& other_value);
+inline boolean operator!=(null_type null_value, const Verdicttypes& other_value) { return !(null_value == other_value); }
+extern boolean operator==(null_type null_value, const VerdicttypeSet& other_value);
+inline boolean operator!=(null_type null_value, const VerdicttypeSet& other_value) { return !(null_value == other_value); }
+extern boolean operator==(null_type null_value, const Anytypes& other_value);
+inline boolean operator!=(null_type null_value, const Anytypes& other_value) { return !(null_value == other_value); }
+extern boolean operator==(null_type null_value, const AnytypeSet& other_value);
+inline boolean operator!=(null_type null_value, const AnytypeSet& other_value) { return !(null_value == other_value); }
+extern boolean operator==(null_type null_value, const ListOfDummy__comptype& other_value);
+inline boolean operator!=(null_type null_value, const ListOfDummy__comptype& other_value) { return !(null_value == other_value); }
+extern boolean operator==(null_type null_value, const ListOfDummy__CT& other_value);
+inline boolean operator!=(null_type null_value, const ListOfDummy__CT& other_value) { return !(null_value == other_value); }
+extern boolean operator==(null_type null_value, const ProtocolList& other_value);
+inline boolean operator!=(null_type null_value, const ProtocolList& other_value) { return !(null_value == other_value); }
+
+/* Global variable declarations */
+
+extern const TTCN_RAWdescriptor_t BIT1n_raw_;
+extern const XERdescriptor_t BIT1n_xer_;
+extern const TTCN_OERdescriptor_t BIT1n_oer_;
+extern const TTCN_Typedescriptor_t BIT1n_descr_;
+extern const TTCN_RAWdescriptor_t BIT2n_raw_;
+extern const XERdescriptor_t BIT2n_xer_;
+extern const TTCN_OERdescriptor_t BIT2n_oer_;
+extern const TTCN_Typedescriptor_t BIT2n_descr_;
+extern const TTCN_RAWdescriptor_t BIT3n_raw_;
+extern const XERdescriptor_t BIT3n_xer_;
+extern const TTCN_OERdescriptor_t BIT3n_oer_;
+extern const TTCN_Typedescriptor_t BIT3n_descr_;
+extern const TTCN_RAWdescriptor_t BIT4n_raw_;
+extern const XERdescriptor_t BIT4n_xer_;
+extern const TTCN_OERdescriptor_t BIT4n_oer_;
+extern const TTCN_Typedescriptor_t BIT4n_descr_;
+extern const TTCN_RAWdescriptor_t BIT5n_raw_;
+extern const XERdescriptor_t BIT5n_xer_;
+extern const TTCN_OERdescriptor_t BIT5n_oer_;
+extern const TTCN_Typedescriptor_t BIT5n_descr_;
+extern const TTCN_RAWdescriptor_t BIT6n_raw_;
+extern const XERdescriptor_t BIT6n_xer_;
+extern const TTCN_OERdescriptor_t BIT6n_oer_;
+extern const TTCN_Typedescriptor_t BIT6n_descr_;
+extern const TTCN_RAWdescriptor_t BIT7n_raw_;
+extern const XERdescriptor_t BIT7n_xer_;
+extern const TTCN_OERdescriptor_t BIT7n_oer_;
+extern const TTCN_Typedescriptor_t BIT7n_descr_;
+extern const TTCN_RAWdescriptor_t BIT8n_raw_;
+extern const XERdescriptor_t BIT8n_xer_;
+extern const TTCN_OERdescriptor_t BIT8n_oer_;
+extern const TTCN_Typedescriptor_t BIT8n_descr_;
+extern const TTCN_RAWdescriptor_t BIT9n_raw_;
+extern const XERdescriptor_t BIT9n_xer_;
+extern const TTCN_OERdescriptor_t BIT9n_oer_;
+extern const TTCN_Typedescriptor_t BIT9n_descr_;
+extern const TTCN_RAWdescriptor_t BIT12n_raw_;
+extern const XERdescriptor_t BIT12n_xer_;
+extern const TTCN_OERdescriptor_t BIT12n_oer_;
+extern const TTCN_Typedescriptor_t BIT12n_descr_;
+extern const TTCN_RAWdescriptor_t BIT14n_raw_;
+extern const XERdescriptor_t BIT14n_xer_;
+extern const TTCN_OERdescriptor_t BIT14n_oer_;
+extern const TTCN_Typedescriptor_t BIT14n_descr_;
+extern const TTCN_RAWdescriptor_t BIT15n_raw_;
+extern const XERdescriptor_t BIT15n_xer_;
+extern const TTCN_OERdescriptor_t BIT15n_oer_;
+extern const TTCN_Typedescriptor_t BIT15n_descr_;
+extern const TTCN_RAWdescriptor_t BIT16n_raw_;
+extern const XERdescriptor_t BIT16n_xer_;
+extern const TTCN_OERdescriptor_t BIT16n_oer_;
+extern const TTCN_Typedescriptor_t BIT16n_descr_;
+extern const TTCN_RAWdescriptor_t BIT56n_raw_;
+extern const XERdescriptor_t BIT56n_xer_;
+extern const TTCN_OERdescriptor_t BIT56n_oer_;
+extern const TTCN_Typedescriptor_t BIT56n_descr_;
+extern const TTCN_RAWdescriptor_t BIT14__24n_raw_;
+extern const XERdescriptor_t BIT14__24n_xer_;
+extern const TTCN_OERdescriptor_t BIT14__24n_oer_;
+extern const TTCN_Typedescriptor_t BIT14__24n_descr_;
+extern const TTCN_RAWdescriptor_t BIT1np_raw_;
+extern const XERdescriptor_t BIT1np_xer_;
+extern const TTCN_OERdescriptor_t BIT1np_oer_;
+extern const TTCN_Typedescriptor_t BIT1np_descr_;
+extern const TTCN_RAWdescriptor_t BIT2np_raw_;
+extern const XERdescriptor_t BIT2np_xer_;
+extern const TTCN_OERdescriptor_t BIT2np_oer_;
+extern const TTCN_Typedescriptor_t BIT2np_descr_;
+extern const TTCN_RAWdescriptor_t BIT3np_raw_;
+extern const XERdescriptor_t BIT3np_xer_;
+extern const TTCN_OERdescriptor_t BIT3np_oer_;
+extern const TTCN_Typedescriptor_t BIT3np_descr_;
+extern const TTCN_RAWdescriptor_t BIT4np_raw_;
+extern const XERdescriptor_t BIT4np_xer_;
+extern const TTCN_OERdescriptor_t BIT4np_oer_;
+extern const TTCN_Typedescriptor_t BIT4np_descr_;
+extern const TTCN_RAWdescriptor_t BIT5np_raw_;
+extern const XERdescriptor_t BIT5np_xer_;
+extern const TTCN_OERdescriptor_t BIT5np_oer_;
+extern const TTCN_Typedescriptor_t BIT5np_descr_;
+extern const TTCN_RAWdescriptor_t BIT6np_raw_;
+extern const XERdescriptor_t BIT6np_xer_;
+extern const TTCN_OERdescriptor_t BIT6np_oer_;
+extern const TTCN_Typedescriptor_t BIT6np_descr_;
+extern const TTCN_RAWdescriptor_t BIT7np_raw_;
+extern const XERdescriptor_t BIT7np_xer_;
+extern const TTCN_OERdescriptor_t BIT7np_oer_;
+extern const TTCN_Typedescriptor_t BIT7np_descr_;
+extern const TTCN_RAWdescriptor_t BIT15np_raw_;
+extern const XERdescriptor_t BIT15np_xer_;
+extern const TTCN_OERdescriptor_t BIT15np_oer_;
+extern const TTCN_Typedescriptor_t BIT15np_descr_;
+extern const TTCN_RAWdescriptor_t BIT1_raw_;
+extern const XERdescriptor_t BIT1_xer_;
+extern const TTCN_OERdescriptor_t BIT1_oer_;
+extern const TTCN_Typedescriptor_t BIT1_descr_;
+extern const TTCN_RAWdescriptor_t BIT2_raw_;
+extern const XERdescriptor_t BIT2_xer_;
+extern const TTCN_OERdescriptor_t BIT2_oer_;
+extern const TTCN_Typedescriptor_t BIT2_descr_;
+extern const TTCN_RAWdescriptor_t BIT3_raw_;
+extern const XERdescriptor_t BIT3_xer_;
+extern const TTCN_OERdescriptor_t BIT3_oer_;
+extern const TTCN_Typedescriptor_t BIT3_descr_;
+extern const TTCN_RAWdescriptor_t BIT4_raw_;
+extern const XERdescriptor_t BIT4_xer_;
+extern const TTCN_OERdescriptor_t BIT4_oer_;
+extern const TTCN_Typedescriptor_t BIT4_descr_;
+extern const TTCN_RAWdescriptor_t BIT5_raw_;
+extern const XERdescriptor_t BIT5_xer_;
+extern const TTCN_OERdescriptor_t BIT5_oer_;
+extern const TTCN_Typedescriptor_t BIT5_descr_;
+extern const TTCN_RAWdescriptor_t BIT6_raw_;
+extern const XERdescriptor_t BIT6_xer_;
+extern const TTCN_OERdescriptor_t BIT6_oer_;
+extern const TTCN_Typedescriptor_t BIT6_descr_;
+extern const TTCN_RAWdescriptor_t BIT7_raw_;
+extern const XERdescriptor_t BIT7_xer_;
+extern const TTCN_OERdescriptor_t BIT7_oer_;
+extern const TTCN_Typedescriptor_t BIT7_descr_;
+extern const TTCN_RAWdescriptor_t BIT8_raw_;
+extern const XERdescriptor_t BIT8_xer_;
+extern const TTCN_OERdescriptor_t BIT8_oer_;
+extern const TTCN_Typedescriptor_t BIT8_descr_;
+extern const TTCN_RAWdescriptor_t BIT9_raw_;
+extern const XERdescriptor_t BIT9_xer_;
+extern const TTCN_OERdescriptor_t BIT9_oer_;
+extern const TTCN_Typedescriptor_t BIT9_descr_;
+extern const TTCN_RAWdescriptor_t BIT10_raw_;
+extern const XERdescriptor_t BIT10_xer_;
+extern const TTCN_OERdescriptor_t BIT10_oer_;
+extern const TTCN_Typedescriptor_t BIT10_descr_;
+extern const TTCN_RAWdescriptor_t BIT11_raw_;
+extern const XERdescriptor_t BIT11_xer_;
+extern const TTCN_OERdescriptor_t BIT11_oer_;
+extern const TTCN_Typedescriptor_t BIT11_descr_;
+extern const TTCN_RAWdescriptor_t BIT12_raw_;
+extern const XERdescriptor_t BIT12_xer_;
+extern const TTCN_OERdescriptor_t BIT12_oer_;
+extern const TTCN_Typedescriptor_t BIT12_descr_;
+extern const TTCN_RAWdescriptor_t BIT14_raw_;
+extern const XERdescriptor_t BIT14_xer_;
+extern const TTCN_OERdescriptor_t BIT14_oer_;
+extern const TTCN_Typedescriptor_t BIT14_descr_;
+extern const TTCN_RAWdescriptor_t BIT15_raw_;
+extern const XERdescriptor_t BIT15_xer_;
+extern const TTCN_OERdescriptor_t BIT15_oer_;
+extern const TTCN_Typedescriptor_t BIT15_descr_;
+extern const TTCN_RAWdescriptor_t BIT16_raw_;
+extern const XERdescriptor_t BIT16_xer_;
+extern const TTCN_OERdescriptor_t BIT16_oer_;
+extern const TTCN_Typedescriptor_t BIT16_descr_;
+extern const TTCN_RAWdescriptor_t BIT24_raw_;
+extern const XERdescriptor_t BIT24_xer_;
+extern const TTCN_OERdescriptor_t BIT24_oer_;
+extern const TTCN_Typedescriptor_t BIT24_descr_;
+extern const TTCN_RAWdescriptor_t BIT31_raw_;
+extern const XERdescriptor_t BIT31_xer_;
+extern const TTCN_OERdescriptor_t BIT31_oer_;
+extern const TTCN_Typedescriptor_t BIT31_descr_;
+extern const TTCN_RAWdescriptor_t BIT56_raw_;
+extern const XERdescriptor_t BIT56_xer_;
+extern const TTCN_OERdescriptor_t BIT56_oer_;
+extern const TTCN_Typedescriptor_t BIT56_descr_;
+extern const TTCN_RAWdescriptor_t Bitstrings_raw_;
+extern const TTCN_Typedescriptor_t Bitstrings_descr_;
+extern const XERdescriptor_t Bitstrings_0_xer_;
+extern const TTCN_OERdescriptor_t Bitstrings_0_oer_;
+extern const TTCN_Typedescriptor_t Bitstrings_0_descr_;
+extern const TTCN_Typedescriptor_t& BitstringList_descr_;
+extern const TTCN_RAWdescriptor_t BitstringSet_raw_;
+extern const TTCN_Typedescriptor_t BitstringSet_descr_;
+extern const XERdescriptor_t BitstringSet_0_xer_;
+extern const TTCN_OERdescriptor_t BitstringSet_0_oer_;
+extern const TTCN_Typedescriptor_t BitstringSet_0_descr_;
+extern const TTCN_RAWdescriptor_t OCT0n_raw_;
+extern const XERdescriptor_t OCT0n_xer_;
+extern const TTCN_OERdescriptor_t OCT0n_oer_;
+extern const TTCN_Typedescriptor_t OCT0n_descr_;
+extern const TTCN_RAWdescriptor_t OCT1n_raw_;
+extern const XERdescriptor_t OCT1n_xer_;
+extern const TTCN_OERdescriptor_t OCT1n_oer_;
+extern const TTCN_Typedescriptor_t OCT1n_descr_;
+extern const TTCN_RAWdescriptor_t OCT2n_raw_;
+extern const XERdescriptor_t OCT2n_xer_;
+extern const TTCN_OERdescriptor_t OCT2n_oer_;
+extern const TTCN_Typedescriptor_t OCT2n_descr_;
+extern const TTCN_RAWdescriptor_t OCT3n_raw_;
+extern const XERdescriptor_t OCT3n_xer_;
+extern const TTCN_OERdescriptor_t OCT3n_oer_;
+extern const TTCN_Typedescriptor_t OCT3n_descr_;
+extern const TTCN_RAWdescriptor_t OCT4n_raw_;
+extern const XERdescriptor_t OCT4n_xer_;
+extern const TTCN_OERdescriptor_t OCT4n_oer_;
+extern const TTCN_Typedescriptor_t OCT4n_descr_;
+extern const TTCN_RAWdescriptor_t OCT5n_raw_;
+extern const XERdescriptor_t OCT5n_xer_;
+extern const TTCN_OERdescriptor_t OCT5n_oer_;
+extern const TTCN_Typedescriptor_t OCT5n_descr_;
+extern const TTCN_RAWdescriptor_t OCT6n_raw_;
+extern const XERdescriptor_t OCT6n_xer_;
+extern const TTCN_OERdescriptor_t OCT6n_oer_;
+extern const TTCN_Typedescriptor_t OCT6n_descr_;
+extern const TTCN_RAWdescriptor_t OCT7n_raw_;
+extern const XERdescriptor_t OCT7n_xer_;
+extern const TTCN_OERdescriptor_t OCT7n_oer_;
+extern const TTCN_Typedescriptor_t OCT7n_descr_;
+extern const TTCN_RAWdescriptor_t OCT8n_raw_;
+extern const XERdescriptor_t OCT8n_xer_;
+extern const TTCN_OERdescriptor_t OCT8n_oer_;
+extern const TTCN_Typedescriptor_t OCT8n_descr_;
+extern const TTCN_RAWdescriptor_t OCT9n_raw_;
+extern const XERdescriptor_t OCT9n_xer_;
+extern const TTCN_OERdescriptor_t OCT9n_oer_;
+extern const TTCN_Typedescriptor_t OCT9n_descr_;
+extern const TTCN_RAWdescriptor_t OCT10n_raw_;
+extern const XERdescriptor_t OCT10n_xer_;
+extern const TTCN_OERdescriptor_t OCT10n_oer_;
+extern const TTCN_Typedescriptor_t OCT10n_descr_;
+extern const TTCN_RAWdescriptor_t OCT11n_raw_;
+extern const XERdescriptor_t OCT11n_xer_;
+extern const TTCN_OERdescriptor_t OCT11n_oer_;
+extern const TTCN_Typedescriptor_t OCT11n_descr_;
+extern const TTCN_RAWdescriptor_t OCT12n_raw_;
+extern const XERdescriptor_t OCT12n_xer_;
+extern const TTCN_OERdescriptor_t OCT12n_oer_;
+extern const TTCN_Typedescriptor_t OCT12n_descr_;
+extern const TTCN_RAWdescriptor_t OCT13n_raw_;
+extern const XERdescriptor_t OCT13n_xer_;
+extern const TTCN_OERdescriptor_t OCT13n_oer_;
+extern const TTCN_Typedescriptor_t OCT13n_descr_;
+extern const TTCN_RAWdescriptor_t OCT14n_raw_;
+extern const XERdescriptor_t OCT14n_xer_;
+extern const TTCN_OERdescriptor_t OCT14n_oer_;
+extern const TTCN_Typedescriptor_t OCT14n_descr_;
+extern const TTCN_RAWdescriptor_t OCT15n_raw_;
+extern const XERdescriptor_t OCT15n_xer_;
+extern const TTCN_OERdescriptor_t OCT15n_oer_;
+extern const TTCN_Typedescriptor_t OCT15n_descr_;
+extern const TTCN_RAWdescriptor_t OCT16n_raw_;
+extern const XERdescriptor_t OCT16n_xer_;
+extern const TTCN_OERdescriptor_t OCT16n_oer_;
+extern const TTCN_Typedescriptor_t OCT16n_descr_;
+extern const TTCN_RAWdescriptor_t OCT17n_raw_;
+extern const XERdescriptor_t OCT17n_xer_;
+extern const TTCN_OERdescriptor_t OCT17n_oer_;
+extern const TTCN_Typedescriptor_t OCT17n_descr_;
+extern const TTCN_RAWdescriptor_t OCT18n_raw_;
+extern const XERdescriptor_t OCT18n_xer_;
+extern const TTCN_OERdescriptor_t OCT18n_oer_;
+extern const TTCN_Typedescriptor_t OCT18n_descr_;
+extern const TTCN_RAWdescriptor_t OCT19n_raw_;
+extern const XERdescriptor_t OCT19n_xer_;
+extern const TTCN_OERdescriptor_t OCT19n_oer_;
+extern const TTCN_Typedescriptor_t OCT19n_descr_;
+extern const TTCN_RAWdescriptor_t OCT20n_raw_;
+extern const XERdescriptor_t OCT20n_xer_;
+extern const TTCN_OERdescriptor_t OCT20n_oer_;
+extern const TTCN_Typedescriptor_t OCT20n_descr_;
+extern const TTCN_RAWdescriptor_t OCT28n_raw_;
+extern const XERdescriptor_t OCT28n_xer_;
+extern const TTCN_OERdescriptor_t OCT28n_oer_;
+extern const TTCN_Typedescriptor_t OCT28n_descr_;
+extern const TTCN_RAWdescriptor_t OCT32n_raw_;
+extern const XERdescriptor_t OCT32n_xer_;
+extern const TTCN_OERdescriptor_t OCT32n_oer_;
+extern const TTCN_Typedescriptor_t OCT32n_descr_;
+extern const TTCN_RAWdescriptor_t OCT34n_raw_;
+extern const XERdescriptor_t OCT34n_xer_;
+extern const TTCN_OERdescriptor_t OCT34n_oer_;
+extern const TTCN_Typedescriptor_t OCT34n_descr_;
+extern const TTCN_RAWdescriptor_t OCT46n_raw_;
+extern const XERdescriptor_t OCT46n_xer_;
+extern const TTCN_OERdescriptor_t OCT46n_oer_;
+extern const TTCN_Typedescriptor_t OCT46n_descr_;
+extern const TTCN_RAWdescriptor_t OCT50n_raw_;
+extern const XERdescriptor_t OCT50n_xer_;
+extern const TTCN_OERdescriptor_t OCT50n_oer_;
+extern const TTCN_Typedescriptor_t OCT50n_descr_;
+extern const TTCN_RAWdescriptor_t OCT69n_raw_;
+extern const XERdescriptor_t OCT69n_xer_;
+extern const TTCN_OERdescriptor_t OCT69n_oer_;
+extern const TTCN_Typedescriptor_t OCT69n_descr_;
+extern const TTCN_RAWdescriptor_t OCT100n_raw_;
+extern const XERdescriptor_t OCT100n_xer_;
+extern const TTCN_OERdescriptor_t OCT100n_oer_;
+extern const TTCN_Typedescriptor_t OCT100n_descr_;
+extern const TTCN_RAWdescriptor_t OCT128n_raw_;
+extern const XERdescriptor_t OCT128n_xer_;
+extern const TTCN_OERdescriptor_t OCT128n_oer_;
+extern const TTCN_Typedescriptor_t OCT128n_descr_;
+extern const TTCN_RAWdescriptor_t OCT500n_raw_;
+extern const XERdescriptor_t OCT500n_xer_;
+extern const TTCN_OERdescriptor_t OCT500n_oer_;
+extern const TTCN_Typedescriptor_t OCT500n_descr_;
+extern const TTCN_RAWdescriptor_t OCTNn_raw_;
+extern const XERdescriptor_t OCTNn_xer_;
+extern const TTCN_OERdescriptor_t OCTNn_oer_;
+extern const TTCN_Typedescriptor_t OCTNn_descr_;
+extern const TTCN_RAWdescriptor_t OCT1__3n_raw_;
+extern const XERdescriptor_t OCT1__3n_xer_;
+extern const TTCN_OERdescriptor_t OCT1__3n_oer_;
+extern const TTCN_Typedescriptor_t OCT1__3n_descr_;
+extern const TTCN_RAWdescriptor_t OCT1__4n_raw_;
+extern const XERdescriptor_t OCT1__4n_xer_;
+extern const TTCN_OERdescriptor_t OCT1__4n_oer_;
+extern const TTCN_Typedescriptor_t OCT1__4n_descr_;
+extern const TTCN_RAWdescriptor_t OCT1__5n_raw_;
+extern const XERdescriptor_t OCT1__5n_xer_;
+extern const TTCN_OERdescriptor_t OCT1__5n_oer_;
+extern const TTCN_Typedescriptor_t OCT1__5n_descr_;
+extern const TTCN_RAWdescriptor_t OCT1__6n_raw_;
+extern const XERdescriptor_t OCT1__6n_xer_;
+extern const TTCN_OERdescriptor_t OCT1__6n_oer_;
+extern const TTCN_Typedescriptor_t OCT1__6n_descr_;
+extern const TTCN_RAWdescriptor_t OCT1__7n_raw_;
+extern const XERdescriptor_t OCT1__7n_xer_;
+extern const TTCN_OERdescriptor_t OCT1__7n_oer_;
+extern const TTCN_Typedescriptor_t OCT1__7n_descr_;
+extern const TTCN_RAWdescriptor_t OCT1__8n_raw_;
+extern const XERdescriptor_t OCT1__8n_xer_;
+extern const TTCN_OERdescriptor_t OCT1__8n_oer_;
+extern const TTCN_Typedescriptor_t OCT1__8n_descr_;
+extern const TTCN_RAWdescriptor_t OCT1__12n_raw_;
+extern const XERdescriptor_t OCT1__12n_xer_;
+extern const TTCN_OERdescriptor_t OCT1__12n_oer_;
+extern const TTCN_Typedescriptor_t OCT1__12n_descr_;
+extern const TTCN_RAWdescriptor_t OCT1__15n_raw_;
+extern const XERdescriptor_t OCT1__15n_xer_;
+extern const TTCN_OERdescriptor_t OCT1__15n_oer_;
+extern const TTCN_Typedescriptor_t OCT1__15n_descr_;
+extern const TTCN_RAWdescriptor_t OCT1__16n_raw_;
+extern const XERdescriptor_t OCT1__16n_xer_;
+extern const TTCN_OERdescriptor_t OCT1__16n_oer_;
+extern const TTCN_Typedescriptor_t OCT1__16n_descr_;
+extern const TTCN_RAWdescriptor_t OCT1__18n_raw_;
+extern const XERdescriptor_t OCT1__18n_xer_;
+extern const TTCN_OERdescriptor_t OCT1__18n_oer_;
+extern const TTCN_Typedescriptor_t OCT1__18n_descr_;
+extern const TTCN_RAWdescriptor_t OCT1__20n_raw_;
+extern const XERdescriptor_t OCT1__20n_xer_;
+extern const TTCN_OERdescriptor_t OCT1__20n_oer_;
+extern const TTCN_Typedescriptor_t OCT1__20n_descr_;
+extern const TTCN_RAWdescriptor_t OCT1__24n_raw_;
+extern const XERdescriptor_t OCT1__24n_xer_;
+extern const TTCN_OERdescriptor_t OCT1__24n_oer_;
+extern const TTCN_Typedescriptor_t OCT1__24n_descr_;
+extern const TTCN_RAWdescriptor_t OCT1__32n_raw_;
+extern const XERdescriptor_t OCT1__32n_xer_;
+extern const TTCN_OERdescriptor_t OCT1__32n_oer_;
+extern const TTCN_Typedescriptor_t OCT1__32n_descr_;
+extern const TTCN_RAWdescriptor_t OCT1__34n_raw_;
+extern const XERdescriptor_t OCT1__34n_xer_;
+extern const TTCN_OERdescriptor_t OCT1__34n_oer_;
+extern const TTCN_Typedescriptor_t OCT1__34n_descr_;
+extern const TTCN_RAWdescriptor_t OCT1__46n_raw_;
+extern const XERdescriptor_t OCT1__46n_xer_;
+extern const TTCN_OERdescriptor_t OCT1__46n_oer_;
+extern const TTCN_Typedescriptor_t OCT1__46n_descr_;
+extern const TTCN_RAWdescriptor_t OCT1__50n_raw_;
+extern const XERdescriptor_t OCT1__50n_xer_;
+extern const TTCN_OERdescriptor_t OCT1__50n_oer_;
+extern const TTCN_Typedescriptor_t OCT1__50n_descr_;
+extern const TTCN_RAWdescriptor_t OCT1__112n_raw_;
+extern const XERdescriptor_t OCT1__112n_xer_;
+extern const TTCN_OERdescriptor_t OCT1__112n_oer_;
+extern const TTCN_Typedescriptor_t OCT1__112n_descr_;
+extern const TTCN_RAWdescriptor_t OCT1__127n_raw_;
+extern const XERdescriptor_t OCT1__127n_xer_;
+extern const TTCN_OERdescriptor_t OCT1__127n_oer_;
+extern const TTCN_Typedescriptor_t OCT1__127n_descr_;
+extern const TTCN_RAWdescriptor_t OCT1__128n_raw_;
+extern const XERdescriptor_t OCT1__128n_xer_;
+extern const TTCN_OERdescriptor_t OCT1__128n_oer_;
+extern const TTCN_Typedescriptor_t OCT1__128n_descr_;
+extern const TTCN_RAWdescriptor_t OCT1__172n_raw_;
+extern const XERdescriptor_t OCT1__172n_xer_;
+extern const TTCN_OERdescriptor_t OCT1__172n_oer_;
+extern const TTCN_Typedescriptor_t OCT1__172n_descr_;
+extern const TTCN_RAWdescriptor_t OCT3__5n_raw_;
+extern const XERdescriptor_t OCT3__5n_xer_;
+extern const TTCN_OERdescriptor_t OCT3__5n_oer_;
+extern const TTCN_Typedescriptor_t OCT3__5n_descr_;
+extern const TTCN_RAWdescriptor_t OCT3__7n_raw_;
+extern const XERdescriptor_t OCT3__7n_xer_;
+extern const TTCN_OERdescriptor_t OCT3__7n_oer_;
+extern const TTCN_Typedescriptor_t OCT3__7n_descr_;
+extern const TTCN_RAWdescriptor_t OCT3__8n_raw_;
+extern const XERdescriptor_t OCT3__8n_xer_;
+extern const TTCN_OERdescriptor_t OCT3__8n_oer_;
+extern const TTCN_Typedescriptor_t OCT3__8n_descr_;
+extern const TTCN_RAWdescriptor_t OCT3__14n_raw_;
+extern const XERdescriptor_t OCT3__14n_xer_;
+extern const TTCN_OERdescriptor_t OCT3__14n_oer_;
+extern const TTCN_Typedescriptor_t OCT3__14n_descr_;
+extern const TTCN_RAWdescriptor_t OCT3__17n_raw_;
+extern const XERdescriptor_t OCT3__17n_xer_;
+extern const TTCN_OERdescriptor_t OCT3__17n_oer_;
+extern const TTCN_Typedescriptor_t OCT3__17n_descr_;
+extern const TTCN_RAWdescriptor_t OCT4__8n_raw_;
+extern const XERdescriptor_t OCT4__8n_xer_;
+extern const TTCN_OERdescriptor_t OCT4__8n_oer_;
+extern const TTCN_Typedescriptor_t OCT4__8n_descr_;
+extern const TTCN_RAWdescriptor_t Octetstrings_raw_;
+extern const TTCN_Typedescriptor_t Octetstrings_descr_;
+extern const XERdescriptor_t Octetstrings_0_xer_;
+extern const TTCN_OERdescriptor_t Octetstrings_0_oer_;
+extern const TTCN_Typedescriptor_t Octetstrings_0_descr_;
+extern const TTCN_Typedescriptor_t& OctetstringList_descr_;
+extern const TTCN_RAWdescriptor_t OctetstringSet_raw_;
+extern const TTCN_Typedescriptor_t OctetstringSet_descr_;
+extern const XERdescriptor_t OctetstringSet_0_xer_;
+extern const TTCN_OERdescriptor_t OctetstringSet_0_oer_;
+extern const TTCN_Typedescriptor_t OctetstringSet_0_descr_;
+extern const TTCN_RAWdescriptor_t CHAR4_raw_;
+extern const XERdescriptor_t CHAR4_xer_;
+extern const TTCN_Typedescriptor_t CHAR4_descr_;
+extern const TTCN_RAWdescriptor_t Charstrings_raw_;
+extern const TTCN_Typedescriptor_t Charstrings_descr_;
+extern const XERdescriptor_t Charstrings_0_xer_;
+extern const TTCN_Typedescriptor_t Charstrings_0_descr_;
+extern const TTCN_Typedescriptor_t& CharstringList_descr_;
+extern const TTCN_RAWdescriptor_t CharstringSet_raw_;
+extern const TTCN_Typedescriptor_t CharstringSet_descr_;
+extern const XERdescriptor_t CharstringSet_0_xer_;
+extern const TTCN_Typedescriptor_t CharstringSet_0_descr_;
+extern const TTCN_RAWdescriptor_t HEX4n_raw_;
+extern const XERdescriptor_t HEX4n_xer_;
+extern const TTCN_Typedescriptor_t HEX4n_descr_;
+extern const TTCN_RAWdescriptor_t HEX6n_raw_;
+extern const XERdescriptor_t HEX6n_xer_;
+extern const TTCN_Typedescriptor_t HEX6n_descr_;
+extern const TTCN_RAWdescriptor_t HEX8n_raw_;
+extern const XERdescriptor_t HEX8n_xer_;
+extern const TTCN_Typedescriptor_t HEX8n_descr_;
+extern const TTCN_RAWdescriptor_t HEX15n_raw_;
+extern const XERdescriptor_t HEX15n_xer_;
+extern const TTCN_Typedescriptor_t HEX15n_descr_;
+extern const TTCN_RAWdescriptor_t HEX16n_raw_;
+extern const XERdescriptor_t HEX16n_xer_;
+extern const TTCN_Typedescriptor_t HEX16n_descr_;
+extern const TTCN_RAWdescriptor_t HEX24n_raw_;
+extern const XERdescriptor_t HEX24n_xer_;
+extern const TTCN_Typedescriptor_t HEX24n_descr_;
+extern const TTCN_RAWdescriptor_t HEX0__18n_raw_;
+extern const XERdescriptor_t HEX0__18n_xer_;
+extern const TTCN_Typedescriptor_t HEX0__18n_descr_;
+extern const TTCN_RAWdescriptor_t HEX1__20n_raw_;
+extern const XERdescriptor_t HEX1__20n_xer_;
+extern const TTCN_Typedescriptor_t HEX1__20n_descr_;
+extern const TTCN_RAWdescriptor_t HEX1__34n_raw_;
+extern const XERdescriptor_t HEX1__34n_xer_;
+extern const TTCN_Typedescriptor_t HEX1__34n_descr_;
+extern const TTCN_RAWdescriptor_t Hexstrings_raw_;
+extern const TTCN_Typedescriptor_t Hexstrings_descr_;
+extern const XERdescriptor_t Hexstrings_0_xer_;
+extern const TTCN_Typedescriptor_t Hexstrings_0_descr_;
+extern const TTCN_Typedescriptor_t& HexstringList_descr_;
+extern const TTCN_RAWdescriptor_t HexstringSet_raw_;
+extern const TTCN_Typedescriptor_t HexstringSet_descr_;
+extern const XERdescriptor_t HexstringSet_0_xer_;
+extern const TTCN_Typedescriptor_t HexstringSet_0_descr_;
+extern const TTCN_RAWdescriptor_t INT3nb_raw_;
+extern const XERdescriptor_t INT3nb_xer_;
+extern const TTCN_OERdescriptor_t INT3nb_oer_;
+extern const TTCN_Typedescriptor_t INT3nb_descr_;
+extern const TTCN_RAWdescriptor_t INT4nb_raw_;
+extern const XERdescriptor_t INT4nb_xer_;
+extern const TTCN_OERdescriptor_t INT4nb_oer_;
+extern const TTCN_Typedescriptor_t INT4nb_descr_;
+extern const TTCN_RAWdescriptor_t INT5nb_raw_;
+extern const XERdescriptor_t INT5nb_xer_;
+extern const TTCN_OERdescriptor_t INT5nb_oer_;
+extern const TTCN_Typedescriptor_t INT5nb_descr_;
+extern const TTCN_RAWdescriptor_t INT8nb_raw_;
+extern const XERdescriptor_t INT8nb_xer_;
+extern const TTCN_OERdescriptor_t INT8nb_oer_;
+extern const TTCN_Typedescriptor_t INT8nb_descr_;
+extern const TTCN_RAWdescriptor_t INT2nbp_raw_;
+extern const XERdescriptor_t INT2nbp_xer_;
+extern const TTCN_OERdescriptor_t INT2nbp_oer_;
+extern const TTCN_Typedescriptor_t INT2nbp_descr_;
+extern const TTCN_RAWdescriptor_t INT1nbp_raw_;
+extern const XERdescriptor_t INT1nbp_xer_;
+extern const TTCN_OERdescriptor_t INT1nbp_oer_;
+extern const TTCN_Typedescriptor_t INT1nbp_descr_;
+extern const TTCN_RAWdescriptor_t INT3nbp_raw_;
+extern const XERdescriptor_t INT3nbp_xer_;
+extern const TTCN_OERdescriptor_t INT3nbp_oer_;
+extern const TTCN_Typedescriptor_t INT3nbp_descr_;
+extern const TTCN_RAWdescriptor_t INT5nbp_raw_;
+extern const XERdescriptor_t INT5nbp_xer_;
+extern const TTCN_OERdescriptor_t INT5nbp_oer_;
+extern const TTCN_Typedescriptor_t INT5nbp_descr_;
+extern const TTCN_RAWdescriptor_t INT9nbp_raw_;
+extern const XERdescriptor_t INT9nbp_xer_;
+extern const TTCN_OERdescriptor_t INT9nbp_oer_;
+extern const TTCN_Typedescriptor_t INT9nbp_descr_;
+extern const TTCN_RAWdescriptor_t INT13nbp_raw_;
+extern const XERdescriptor_t INT13nbp_xer_;
+extern const TTCN_OERdescriptor_t INT13nbp_oer_;
+extern const TTCN_Typedescriptor_t INT13nbp_descr_;
+extern const TTCN_RAWdescriptor_t INT15nbp_raw_;
+extern const XERdescriptor_t INT15nbp_xer_;
+extern const TTCN_OERdescriptor_t INT15nbp_oer_;
+extern const TTCN_Typedescriptor_t INT15nbp_descr_;
+extern const TTCN_RAWdescriptor_t Integers_raw_;
+extern const TTCN_Typedescriptor_t Integers_descr_;
+extern const XERdescriptor_t Integers_0_xer_;
+extern const TTCN_OERdescriptor_t Integers_0_oer_;
+extern const TTCN_Typedescriptor_t Integers_0_descr_;
+extern const TTCN_Typedescriptor_t& IntegerList_descr_;
+extern const TTCN_RAWdescriptor_t Integer__array_raw_;
+extern const TTCN_Typedescriptor_t Integer__array_descr_;
+extern const TTCN_RAWdescriptor_t IntegerSet_raw_;
+extern const TTCN_Typedescriptor_t IntegerSet_descr_;
+extern const XERdescriptor_t IntegerSet_0_xer_;
+extern const TTCN_OERdescriptor_t IntegerSet_0_oer_;
+extern const TTCN_Typedescriptor_t IntegerSet_0_descr_;
+extern const TTCN_RAWdescriptor_t Floats_raw_;
+extern const TTCN_Typedescriptor_t Floats_descr_;
+extern const XERdescriptor_t Floats_0_xer_;
+extern const TTCN_OERdescriptor_t Floats_0_oer_;
+extern const TTCN_Typedescriptor_t Floats_0_descr_;
+extern const TTCN_Typedescriptor_t& FloatList_descr_;
+extern const TTCN_RAWdescriptor_t FloatSet_raw_;
+extern const TTCN_Typedescriptor_t FloatSet_descr_;
+extern const XERdescriptor_t FloatSet_0_xer_;
+extern const TTCN_OERdescriptor_t FloatSet_0_oer_;
+extern const TTCN_Typedescriptor_t FloatSet_0_descr_;
+extern const TTCN_RAWdescriptor_t UniversalCharstrings_raw_;
+extern const TTCN_Typedescriptor_t UniversalCharstrings_descr_;
+extern const XERdescriptor_t UniversalCharstrings_0_xer_;
+extern const TTCN_Typedescriptor_t UniversalCharstrings_0_descr_;
+extern const TTCN_Typedescriptor_t& UniversalCharstringList_descr_;
+extern const TTCN_RAWdescriptor_t UniversalCharstringSet_raw_;
+extern const TTCN_Typedescriptor_t UniversalCharstringSet_descr_;
+extern const XERdescriptor_t UniversalCharstringSet_0_xer_;
+extern const TTCN_Typedescriptor_t UniversalCharstringSet_0_descr_;
+extern const TTCN_RAWdescriptor_t Booleans_raw_;
+extern const TTCN_Typedescriptor_t Booleans_descr_;
+extern const XERdescriptor_t Booleans_0_xer_;
+extern const TTCN_OERdescriptor_t Booleans_0_oer_;
+extern const TTCN_Typedescriptor_t Booleans_0_descr_;
+extern const TTCN_Typedescriptor_t& BooleanList_descr_;
+extern const TTCN_RAWdescriptor_t BooleanSet_raw_;
+extern const TTCN_Typedescriptor_t BooleanSet_descr_;
+extern const XERdescriptor_t BooleanSet_0_xer_;
+extern const TTCN_OERdescriptor_t BooleanSet_0_oer_;
+extern const TTCN_Typedescriptor_t BooleanSet_0_descr_;
+extern const TTCN_RAWdescriptor_t Verdicttypes_raw_;
+extern const TTCN_Typedescriptor_t Verdicttypes_descr_;
+extern const XERdescriptor_t Verdicttypes_0_xer_;
+extern const TTCN_Typedescriptor_t Verdicttypes_0_descr_;
+extern const TTCN_Typedescriptor_t& VerdicttypeList_descr_;
+extern const TTCN_RAWdescriptor_t VerdicttypeSet_raw_;
+extern const TTCN_Typedescriptor_t VerdicttypeSet_descr_;
+extern const XERdescriptor_t VerdicttypeSet_0_xer_;
+extern const TTCN_Typedescriptor_t VerdicttypeSet_0_descr_;
+extern const TTCN_RAWdescriptor_t Anytypes_raw_;
+extern const TTCN_Typedescriptor_t Anytypes_descr_;
+extern const TTCN_Typedescriptor_t anytype_descr_;
+extern const TTCN_Typedescriptor_t Anytypes_0_descr_;
+extern const TTCN_Typedescriptor_t& AnytypeList_descr_;
+extern const TTCN_RAWdescriptor_t AnytypeSet_raw_;
+extern const TTCN_Typedescriptor_t AnytypeSet_descr_;
+extern const TTCN_Typedescriptor_t AnytypeSet_0_descr_;
+extern const TTCN_RAWdescriptor_t BIT6__BO__LAST_raw_;
+extern const XERdescriptor_t BIT6__BO__LAST_xer_;
+extern const TTCN_OERdescriptor_t BIT6__BO__LAST_oer_;
+extern const TTCN_Typedescriptor_t BIT6__BO__LAST_descr_;
+extern const TTCN_RAWdescriptor_t BIT16__BO__LAST_raw_;
+extern const XERdescriptor_t BIT16__BO__LAST_xer_;
+extern const TTCN_OERdescriptor_t BIT16__BO__LAST_oer_;
+extern const TTCN_Typedescriptor_t BIT16__BO__LAST_descr_;
+extern const TTCN_RAWdescriptor_t BIT32__BO__LAST_raw_;
+extern const XERdescriptor_t BIT32__BO__LAST_xer_;
+extern const TTCN_OERdescriptor_t BIT32__BO__LAST_oer_;
+extern const TTCN_Typedescriptor_t BIT32__BO__LAST_descr_;
+extern const TTCN_RAWdescriptor_t Dummy_raw_;
+extern const XERdescriptor_t Dummy_xer_;
+extern const TTCN_OERdescriptor_t Dummy_oer_;
+extern const TTCN_Typedescriptor_t Dummy_descr_;
+extern const TTCN_RAWdescriptor_t OCT0_raw_;
+extern const XERdescriptor_t OCT0_xer_;
+extern const TTCN_OERdescriptor_t OCT0_oer_;
+extern const TTCN_Typedescriptor_t OCT0_descr_;
+extern const TTCN_RAWdescriptor_t OCT1_raw_;
+extern const XERdescriptor_t OCT1_xer_;
+extern const TTCN_OERdescriptor_t OCT1_oer_;
+extern const TTCN_Typedescriptor_t OCT1_descr_;
+extern const TTCN_RAWdescriptor_t OCT2_raw_;
+extern const XERdescriptor_t OCT2_xer_;
+extern const TTCN_OERdescriptor_t OCT2_oer_;
+extern const TTCN_Typedescriptor_t OCT2_descr_;
+extern const TTCN_RAWdescriptor_t OCT3_raw_;
+extern const XERdescriptor_t OCT3_xer_;
+extern const TTCN_OERdescriptor_t OCT3_oer_;
+extern const TTCN_Typedescriptor_t OCT3_descr_;
+extern const TTCN_RAWdescriptor_t OCT4_raw_;
+extern const XERdescriptor_t OCT4_xer_;
+extern const TTCN_OERdescriptor_t OCT4_oer_;
+extern const TTCN_Typedescriptor_t OCT4_descr_;
+extern const TTCN_RAWdescriptor_t OCT5_raw_;
+extern const XERdescriptor_t OCT5_xer_;
+extern const TTCN_OERdescriptor_t OCT5_oer_;
+extern const TTCN_Typedescriptor_t OCT5_descr_;
+extern const TTCN_RAWdescriptor_t OCT6_raw_;
+extern const XERdescriptor_t OCT6_xer_;
+extern const TTCN_OERdescriptor_t OCT6_oer_;
+extern const TTCN_Typedescriptor_t OCT6_descr_;
+extern const TTCN_RAWdescriptor_t OCT7_raw_;
+extern const XERdescriptor_t OCT7_xer_;
+extern const TTCN_OERdescriptor_t OCT7_oer_;
+extern const TTCN_Typedescriptor_t OCT7_descr_;
+extern const TTCN_RAWdescriptor_t OCT8_raw_;
+extern const XERdescriptor_t OCT8_xer_;
+extern const TTCN_OERdescriptor_t OCT8_oer_;
+extern const TTCN_Typedescriptor_t OCT8_descr_;
+extern const TTCN_RAWdescriptor_t OCT9_raw_;
+extern const XERdescriptor_t OCT9_xer_;
+extern const TTCN_OERdescriptor_t OCT9_oer_;
+extern const TTCN_Typedescriptor_t OCT9_descr_;
+extern const TTCN_RAWdescriptor_t OCT10_raw_;
+extern const XERdescriptor_t OCT10_xer_;
+extern const TTCN_OERdescriptor_t OCT10_oer_;
+extern const TTCN_Typedescriptor_t OCT10_descr_;
+extern const TTCN_RAWdescriptor_t OCT11_raw_;
+extern const XERdescriptor_t OCT11_xer_;
+extern const TTCN_OERdescriptor_t OCT11_oer_;
+extern const TTCN_Typedescriptor_t OCT11_descr_;
+extern const TTCN_RAWdescriptor_t OCT12_raw_;
+extern const XERdescriptor_t OCT12_xer_;
+extern const TTCN_OERdescriptor_t OCT12_oer_;
+extern const TTCN_Typedescriptor_t OCT12_descr_;
+extern const TTCN_RAWdescriptor_t OCT13_raw_;
+extern const XERdescriptor_t OCT13_xer_;
+extern const TTCN_OERdescriptor_t OCT13_oer_;
+extern const TTCN_Typedescriptor_t OCT13_descr_;
+extern const TTCN_RAWdescriptor_t OCT14_raw_;
+extern const XERdescriptor_t OCT14_xer_;
+extern const TTCN_OERdescriptor_t OCT14_oer_;
+extern const TTCN_Typedescriptor_t OCT14_descr_;
+extern const TTCN_RAWdescriptor_t OCT15_raw_;
+extern const XERdescriptor_t OCT15_xer_;
+extern const TTCN_OERdescriptor_t OCT15_oer_;
+extern const TTCN_Typedescriptor_t OCT15_descr_;
+extern const TTCN_RAWdescriptor_t OCT16_raw_;
+extern const XERdescriptor_t OCT16_xer_;
+extern const TTCN_OERdescriptor_t OCT16_oer_;
+extern const TTCN_Typedescriptor_t OCT16_descr_;
+extern const TTCN_RAWdescriptor_t OCT17_raw_;
+extern const XERdescriptor_t OCT17_xer_;
+extern const TTCN_OERdescriptor_t OCT17_oer_;
+extern const TTCN_Typedescriptor_t OCT17_descr_;
+extern const TTCN_RAWdescriptor_t OCT18_raw_;
+extern const XERdescriptor_t OCT18_xer_;
+extern const TTCN_OERdescriptor_t OCT18_oer_;
+extern const TTCN_Typedescriptor_t OCT18_descr_;
+extern const TTCN_RAWdescriptor_t OCT19_raw_;
+extern const XERdescriptor_t OCT19_xer_;
+extern const TTCN_OERdescriptor_t OCT19_oer_;
+extern const TTCN_Typedescriptor_t OCT19_descr_;
+extern const TTCN_RAWdescriptor_t OCT20_raw_;
+extern const XERdescriptor_t OCT20_xer_;
+extern const TTCN_OERdescriptor_t OCT20_oer_;
+extern const TTCN_Typedescriptor_t OCT20_descr_;
+extern const TTCN_RAWdescriptor_t OCT32_raw_;
+extern const XERdescriptor_t OCT32_xer_;
+extern const TTCN_OERdescriptor_t OCT32_oer_;
+extern const TTCN_Typedescriptor_t OCT32_descr_;
+extern const TTCN_RAWdescriptor_t OCT34_raw_;
+extern const XERdescriptor_t OCT34_xer_;
+extern const TTCN_OERdescriptor_t OCT34_oer_;
+extern const TTCN_Typedescriptor_t OCT34_descr_;
+extern const TTCN_RAWdescriptor_t OCT46_raw_;
+extern const XERdescriptor_t OCT46_xer_;
+extern const TTCN_OERdescriptor_t OCT46_oer_;
+extern const TTCN_Typedescriptor_t OCT46_descr_;
+extern const TTCN_RAWdescriptor_t OCT1__260_raw_;
+extern const XERdescriptor_t OCT1__260_xer_;
+extern const TTCN_OERdescriptor_t OCT1__260_oer_;
+extern const TTCN_Typedescriptor_t OCT1__260_descr_;
+extern const TTCN_RAWdescriptor_t OCT1__8_raw_;
+extern const XERdescriptor_t OCT1__8_xer_;
+extern const TTCN_OERdescriptor_t OCT1__8_oer_;
+extern const TTCN_Typedescriptor_t OCT1__8_descr_;
+extern const TTCN_RAWdescriptor_t OCT1__12_raw_;
+extern const XERdescriptor_t OCT1__12_xer_;
+extern const TTCN_OERdescriptor_t OCT1__12_oer_;
+extern const TTCN_Typedescriptor_t OCT1__12_descr_;
+extern const TTCN_RAWdescriptor_t OCT1__32_raw_;
+extern const XERdescriptor_t OCT1__32_xer_;
+extern const TTCN_OERdescriptor_t OCT1__32_oer_;
+extern const TTCN_Typedescriptor_t OCT1__32_descr_;
+extern const TTCN_RAWdescriptor_t OCT1__50_raw_;
+extern const XERdescriptor_t OCT1__50_xer_;
+extern const TTCN_OERdescriptor_t OCT1__50_oer_;
+extern const TTCN_Typedescriptor_t OCT1__50_descr_;
+extern const TTCN_RAWdescriptor_t OCT3__8_raw_;
+extern const XERdescriptor_t OCT3__8_xer_;
+extern const TTCN_OERdescriptor_t OCT3__8_oer_;
+extern const TTCN_Typedescriptor_t OCT3__8_descr_;
+extern const TTCN_RAWdescriptor_t OCTN_raw_;
+extern const XERdescriptor_t OCTN_xer_;
+extern const TTCN_OERdescriptor_t OCTN_oer_;
+extern const TTCN_Typedescriptor_t OCTN_descr_;
+extern const TTCN_RAWdescriptor_t HEX1_raw_;
+extern const XERdescriptor_t HEX1_xer_;
+extern const TTCN_Typedescriptor_t HEX1_descr_;
+extern const TTCN_RAWdescriptor_t HEX0__16_raw_;
+extern const XERdescriptor_t HEX0__16_xer_;
+extern const TTCN_Typedescriptor_t HEX0__16_descr_;
+extern const TTCN_RAWdescriptor_t HEX5__16_raw_;
+extern const XERdescriptor_t HEX5__16_xer_;
+extern const TTCN_Typedescriptor_t HEX5__16_descr_;
+extern const TTCN_RAWdescriptor_t HEX1__32_raw_;
+extern const XERdescriptor_t HEX1__32_xer_;
+extern const TTCN_Typedescriptor_t HEX1__32_descr_;
+extern const TTCN_RAWdescriptor_t INT1_raw_;
+extern const XERdescriptor_t INT1_xer_;
+extern const TTCN_OERdescriptor_t INT1_oer_;
+extern const TTCN_Typedescriptor_t INT1_descr_;
+extern const TTCN_RAWdescriptor_t LIN1_raw_;
+extern const XERdescriptor_t LIN1_xer_;
+extern const TTCN_OERdescriptor_t LIN1_oer_;
+extern const TTCN_Typedescriptor_t LIN1_descr_;
+extern const TTCN_RAWdescriptor_t LIN2_raw_;
+extern const XERdescriptor_t LIN2_xer_;
+extern const TTCN_OERdescriptor_t LIN2_oer_;
+extern const TTCN_Typedescriptor_t LIN2_descr_;
+extern const TTCN_RAWdescriptor_t LIN2__BO__LAST_raw_;
+extern const XERdescriptor_t LIN2__BO__LAST_xer_;
+extern const TTCN_OERdescriptor_t LIN2__BO__LAST_oer_;
+extern const TTCN_Typedescriptor_t LIN2__BO__LAST_descr_;
+extern const TTCN_RAWdescriptor_t LIN3__BO__LAST_raw_;
+extern const XERdescriptor_t LIN3__BO__LAST_xer_;
+extern const TTCN_OERdescriptor_t LIN3__BO__LAST_oer_;
+extern const TTCN_Typedescriptor_t LIN3__BO__LAST_descr_;
+extern const TTCN_RAWdescriptor_t LIN4__BO__LAST_raw_;
+extern const XERdescriptor_t LIN4__BO__LAST_xer_;
+extern const TTCN_OERdescriptor_t LIN4__BO__LAST_oer_;
+extern const TTCN_Typedescriptor_t LIN4__BO__LAST_descr_;
+extern const TTCN_RAWdescriptor_t INT1b_raw_;
+extern const XERdescriptor_t INT1b_xer_;
+extern const TTCN_OERdescriptor_t INT1b_oer_;
+extern const TTCN_Typedescriptor_t INT1b_descr_;
+extern const TTCN_RAWdescriptor_t INT2b_raw_;
+extern const XERdescriptor_t INT2b_xer_;
+extern const TTCN_OERdescriptor_t INT2b_oer_;
+extern const TTCN_Typedescriptor_t INT2b_descr_;
+extern const TTCN_RAWdescriptor_t INT3b_raw_;
+extern const XERdescriptor_t INT3b_xer_;
+extern const TTCN_OERdescriptor_t INT3b_oer_;
+extern const TTCN_Typedescriptor_t INT3b_descr_;
+extern const TTCN_RAWdescriptor_t INT4b_raw_;
+extern const XERdescriptor_t INT4b_xer_;
+extern const TTCN_OERdescriptor_t INT4b_oer_;
+extern const TTCN_Typedescriptor_t INT4b_descr_;
+extern const TTCN_RAWdescriptor_t INT5b_raw_;
+extern const XERdescriptor_t INT5b_xer_;
+extern const TTCN_OERdescriptor_t INT5b_oer_;
+extern const TTCN_Typedescriptor_t INT5b_descr_;
+extern const TTCN_RAWdescriptor_t INT6b_raw_;
+extern const XERdescriptor_t INT6b_xer_;
+extern const TTCN_OERdescriptor_t INT6b_oer_;
+extern const TTCN_Typedescriptor_t INT6b_descr_;
+extern const TTCN_RAWdescriptor_t INT7b_raw_;
+extern const XERdescriptor_t INT7b_xer_;
+extern const TTCN_OERdescriptor_t INT7b_oer_;
+extern const TTCN_Typedescriptor_t INT7b_descr_;
+extern const TTCN_RAWdescriptor_t INT11b__BO__LAST_raw_;
+extern const XERdescriptor_t INT11b__BO__LAST_xer_;
+extern const TTCN_OERdescriptor_t INT11b__BO__LAST_oer_;
+extern const TTCN_Typedescriptor_t INT11b__BO__LAST_descr_;
+extern const TTCN_RAWdescriptor_t INT12b__BO__LAST_raw_;
+extern const XERdescriptor_t INT12b__BO__LAST_xer_;
+extern const TTCN_OERdescriptor_t INT12b__BO__LAST_oer_;
+extern const TTCN_Typedescriptor_t INT12b__BO__LAST_descr_;
+extern const TTCN_RAWdescriptor_t INT13b__BO__LAST_raw_;
+extern const XERdescriptor_t INT13b__BO__LAST_xer_;
+extern const TTCN_OERdescriptor_t INT13b__BO__LAST_oer_;
+extern const TTCN_Typedescriptor_t INT13b__BO__LAST_descr_;
+extern const TTCN_RAWdescriptor_t INT14b__BO__LAST_raw_;
+extern const XERdescriptor_t INT14b__BO__LAST_xer_;
+extern const TTCN_OERdescriptor_t INT14b__BO__LAST_oer_;
+extern const TTCN_Typedescriptor_t INT14b__BO__LAST_descr_;
+extern const TTCN_RAWdescriptor_t INT20b__BO__LAST_raw_;
+extern const XERdescriptor_t INT20b__BO__LAST_xer_;
+extern const TTCN_OERdescriptor_t INT20b__BO__LAST_oer_;
+extern const TTCN_Typedescriptor_t INT20b__BO__LAST_descr_;
+extern const TTCN_RAWdescriptor_t INT31b__BO__LAST_raw_;
+extern const XERdescriptor_t INT31b__BO__LAST_xer_;
+extern const TTCN_OERdescriptor_t INT31b__BO__LAST_oer_;
+extern const TTCN_Typedescriptor_t INT31b__BO__LAST_descr_;
+extern const TTCN_Typedescriptor_t& Dummy__comptype_descr_;
+extern const TTCN_Typedescriptor_t& Dummy__CT_descr_;
+extern const TTCN_RAWdescriptor_t Protocols_raw_;
+extern const TTCN_Typedescriptor_t Protocols_descr_;
+extern const TTCN_RAWdescriptor_t OCT1List_raw_;
+extern const TTCN_Typedescriptor_t OCT1List_descr_;
+extern const XERdescriptor_t OCT1List_0_xer_;
+extern const TTCN_OERdescriptor_t OCT1List_0_oer_;
+extern const TTCN_Typedescriptor_t OCT1List_0_descr_;
+extern const TTCN_RAWdescriptor_t OCT2List_raw_;
+extern const TTCN_Typedescriptor_t OCT2List_descr_;
+extern const XERdescriptor_t OCT2List_0_xer_;
+extern const TTCN_OERdescriptor_t OCT2List_0_oer_;
+extern const TTCN_Typedescriptor_t OCT2List_0_descr_;
+extern const TTCN_RAWdescriptor_t OCT3List_raw_;
+extern const TTCN_Typedescriptor_t OCT3List_descr_;
+extern const XERdescriptor_t OCT3List_0_xer_;
+extern const TTCN_OERdescriptor_t OCT3List_0_oer_;
+extern const TTCN_Typedescriptor_t OCT3List_0_descr_;
+extern const TTCN_RAWdescriptor_t OCT4List_raw_;
+extern const TTCN_Typedescriptor_t OCT4List_descr_;
+extern const XERdescriptor_t OCT4List_0_xer_;
+extern const TTCN_OERdescriptor_t OCT4List_0_oer_;
+extern const TTCN_Typedescriptor_t OCT4List_0_descr_;
+extern const TTCN_RAWdescriptor_t OCT5List_raw_;
+extern const TTCN_Typedescriptor_t OCT5List_descr_;
+extern const XERdescriptor_t OCT5List_0_xer_;
+extern const TTCN_OERdescriptor_t OCT5List_0_oer_;
+extern const TTCN_Typedescriptor_t OCT5List_0_descr_;
+extern const TTCN_RAWdescriptor_t OCT6List_raw_;
+extern const TTCN_Typedescriptor_t OCT6List_descr_;
+extern const XERdescriptor_t OCT6List_0_xer_;
+extern const TTCN_OERdescriptor_t OCT6List_0_oer_;
+extern const TTCN_Typedescriptor_t OCT6List_0_descr_;
+extern const TTCN_RAWdescriptor_t OCT7List_raw_;
+extern const TTCN_Typedescriptor_t OCT7List_descr_;
+extern const XERdescriptor_t OCT7List_0_xer_;
+extern const TTCN_OERdescriptor_t OCT7List_0_oer_;
+extern const TTCN_Typedescriptor_t OCT7List_0_descr_;
+extern const TTCN_RAWdescriptor_t ListOfDummy__comptype_raw_;
+extern const TTCN_Typedescriptor_t ListOfDummy__comptype_descr_;
+extern const TTCN_RAWdescriptor_t ListOfDummy__CT_raw_;
+extern const TTCN_Typedescriptor_t ListOfDummy__CT_descr_;
+extern const TTCN_RAWdescriptor_t ProtocolList_raw_;
+extern const TTCN_Typedescriptor_t ProtocolList_descr_;
+extern TTCN_Module module_object;
+
+} /* end of namespace */
+
+#endif
diff --git a/demo/General_Types.o b/demo/General_Types.o
new file mode 100644
index 0000000..6137e30
--- /dev/null
+++ b/demo/General_Types.o
Binary files differ
diff --git a/demo/Isobus.cc b/demo/Isobus.cc
new file mode 100644
index 0000000..000679d
--- /dev/null
+++ b/demo/Isobus.cc
@@ -0,0 +1,7087 @@
+// This C++ source file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+/* Including header files */
+
+#include "Isobus.hh"
+
+namespace Isobus {
+
+/* Prototypes of static functions */
+
+static void pre_init_module();
+static void post_init_module();
+
+/* Literal string constants */
+
+static const unsigned char os_19_octets[] = { 0 },
+os_23_octets[] = { 0, 0 },
+os_16_octets[] = { 0, 0, 0, 255 },
+os_15_octets[] = { 0, 0, 255, 0 },
+os_14_octets[] = { 0, 255, 0, 0 },
+os_13_octets[] = { 1, 0, 0, 0 },
+os_12_octets[] = { 2, 0, 0, 0 },
+os_11_octets[] = { 28, 0, 0, 0 },
+os_0_octets[] = { 199, 0, 0 },
+os_1_octets[] = { 200, 0, 0 },
+os_18_octets[] = { 216 },
+os_2_octets[] = { 230, 0, 0 },
+os_3_octets[] = { 231, 0, 0 },
+os_4_octets[] = { 234, 0, 0 },
+os_5_octets[] = { 235, 0, 0 },
+os_6_octets[] = { 236, 0, 0 },
+os_7_octets[] = { 237, 0, 0 },
+os_20_octets[] = { 238 },
+os_9_octets[] = { 238, 255, 0 },
+os_8_octets[] = { 238, 255, 254 },
+os_17_octets[] = { 254 },
+os_10_octets[] = { 254, 216, 0 },
+os_21_octets[] = { 255 };
+static const OCTETSTRING os_22(0, NULL),
+os_19(1, os_19_octets),
+os_23(2, os_23_octets),
+os_16(4, os_16_octets),
+os_15(4, os_15_octets),
+os_14(4, os_14_octets),
+os_13(4, os_13_octets),
+os_12(4, os_12_octets),
+os_11(4, os_11_octets),
+os_0(3, os_0_octets),
+os_1(3, os_1_octets),
+os_18(1, os_18_octets),
+os_2(3, os_2_octets),
+os_3(3, os_3_octets),
+os_4(3, os_4_octets),
+os_5(3, os_5_octets),
+os_6(3, os_6_octets),
+os_7(3, os_7_octets),
+os_20(1, os_20_octets),
+os_9(3, os_9_octets),
+os_8(3, os_8_octets),
+os_17(1, os_17_octets),
+os_10(3, os_10_octets),
+os_21(1, os_21_octets);
+static const unsigned char module_checksum[] = { 0xf6, 0x9c, 0xa1, 0xef, 0xcb, 0xb0, 0x54, 0x87, 0x7c, 0x99, 0xc2, 0x03, 0x00, 0xfe, 0xf8, 0x32 };
+
+/* Global variable definitions */
+
+static OCTETSTRING const_ISOBUS__PRIORITY__MASK;
+const OCTETSTRING& ISOBUS__PRIORITY__MASK = const_ISOBUS__PRIORITY__MASK;
+static OCTETSTRING const_ISOBUS__RESERVED__MASK;
+const OCTETSTRING& ISOBUS__RESERVED__MASK = const_ISOBUS__RESERVED__MASK;
+static OCTETSTRING const_ISOBUS__DATAPAGE__MASK;
+const OCTETSTRING& ISOBUS__DATAPAGE__MASK = const_ISOBUS__DATAPAGE__MASK;
+static OCTETSTRING const_ISOBUS__PDUFORMAT__MASK;
+const OCTETSTRING& ISOBUS__PDUFORMAT__MASK = const_ISOBUS__PDUFORMAT__MASK;
+static OCTETSTRING const_ISOBUS__PDUSPECIFIC__MASK;
+const OCTETSTRING& ISOBUS__PDUSPECIFIC__MASK = const_ISOBUS__PDUSPECIFIC__MASK;
+static OCTETSTRING const_ISOBUS__SOURCEADDRESS__MASK;
+const OCTETSTRING& ISOBUS__SOURCEADDRESS__MASK = const_ISOBUS__SOURCEADDRESS__MASK;
+const TTCN_RAWdescriptor_t Priority_raw_ = {6,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,6,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       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 Priority_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t Priority_descr_ = { "@Isobus.Priority", &BITSTRING_ber_, &Priority_raw_, NULL, &Priority_xer_, &BITSTRING_json_, &Priority_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t J1939_prio_raw_ = {6,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,6,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       J1939_prio_xer_ = { {"prio>\n", "prio>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t J1939_prio_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t J1939_prio_descr_ = { "@Isobus.J1939.prio", &BITSTRING_ber_, &J1939_prio_raw_, NULL, &J1939_prio_xer_, &BITSTRING_json_, &J1939_prio_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t J1939_res_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,NULL,false};
+const XERdescriptor_t       J1939_res_xer_ = { {"res>\n", "res>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t J1939_res_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t J1939_res_descr_ = { "@Isobus.J1939.res", &BITSTRING_ber_, &J1939_res_raw_, NULL, &J1939_res_xer_, &BITSTRING_json_, &J1939_res_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t J1939_dp_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,NULL,false};
+const XERdescriptor_t       J1939_dp_xer_ = { {"dp>\n", "dp>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t J1939_dp_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t J1939_dp_descr_ = { "@Isobus.J1939.dp", &BITSTRING_ber_, &J1939_dp_raw_, NULL, &J1939_dp_xer_, &BITSTRING_json_, &J1939_dp_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t J1939_pf_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,NULL,false};
+const XERdescriptor_t       J1939_pf_xer_ = { {"pf>\n", "pf>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int J1939_pf_oer_ext_arr_[0] = {};
+const int J1939_pf_oer_p_[0] = {};
+const TTCN_OERdescriptor_t J1939_pf_oer_ = { -1, TRUE, 1, FALSE, 0, 0, J1939_pf_oer_ext_arr_, 0, J1939_pf_oer_p_};
+const TTCN_Typedescriptor_t J1939_pf_descr_ = { "@Isobus.J1939.pf", &OCTETSTRING_ber_, &J1939_pf_raw_, &OCTETSTRING_text_, &J1939_pf_xer_, &OCTETSTRING_json_, &J1939_pf_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t J1939_ps_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,NULL,false};
+const XERdescriptor_t       J1939_ps_xer_ = { {"ps>\n", "ps>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int J1939_ps_oer_ext_arr_[0] = {};
+const int J1939_ps_oer_p_[0] = {};
+const TTCN_OERdescriptor_t J1939_ps_oer_ = { -1, TRUE, 1, FALSE, 0, 0, J1939_ps_oer_ext_arr_, 0, J1939_ps_oer_p_};
+const TTCN_Typedescriptor_t J1939_ps_descr_ = { "@Isobus.J1939.ps", &OCTETSTRING_ber_, &J1939_ps_raw_, &OCTETSTRING_text_, &J1939_ps_xer_, &OCTETSTRING_json_, &J1939_ps_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t J1939_sa_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,NULL,false};
+const XERdescriptor_t       J1939_sa_xer_ = { {"sa>\n", "sa>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int J1939_sa_oer_ext_arr_[0] = {};
+const int J1939_sa_oer_p_[0] = {};
+const TTCN_OERdescriptor_t J1939_sa_oer_ = { -1, TRUE, 1, FALSE, 0, 0, J1939_sa_oer_ext_arr_, 0, J1939_sa_oer_p_};
+const TTCN_Typedescriptor_t J1939_sa_descr_ = { "@Isobus.J1939.sa", &OCTETSTRING_ber_, &J1939_sa_raw_, &OCTETSTRING_text_, &J1939_sa_xer_, &OCTETSTRING_json_, &J1939_sa_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t J1939_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,NULL,false};
+// No XER for J1939
+const TTCN_Typedescriptor_t J1939_descr_ = { "@Isobus.J1939", NULL, &J1939_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t J1939mod_prio_raw_ = {6,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,6,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       J1939mod_prio_xer_ = { {"prio>\n", "prio>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t J1939mod_prio_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t J1939mod_prio_descr_ = { "@Isobus.J1939mod.prio", &BITSTRING_ber_, &J1939mod_prio_raw_, NULL, &J1939mod_prio_xer_, &BITSTRING_json_, &J1939mod_prio_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t J1939mod_res_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,NULL,false};
+const XERdescriptor_t       J1939mod_res_xer_ = { {"res>\n", "res>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t J1939mod_res_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t J1939mod_res_descr_ = { "@Isobus.J1939mod.res", &BITSTRING_ber_, &J1939mod_res_raw_, NULL, &J1939mod_res_xer_, &BITSTRING_json_, &J1939mod_res_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t J1939mod_dp_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,NULL,false};
+const XERdescriptor_t       J1939mod_dp_xer_ = { {"dp>\n", "dp>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t J1939mod_dp_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t J1939mod_dp_descr_ = { "@Isobus.J1939mod.dp", &BITSTRING_ber_, &J1939mod_dp_raw_, NULL, &J1939mod_dp_xer_, &BITSTRING_json_, &J1939mod_dp_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t J1939mod_pf_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,NULL,false};
+const XERdescriptor_t       J1939mod_pf_xer_ = { {"pf>\n", "pf>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int J1939mod_pf_oer_ext_arr_[0] = {};
+const int J1939mod_pf_oer_p_[0] = {};
+const TTCN_OERdescriptor_t J1939mod_pf_oer_ = { -1, TRUE, 1, FALSE, 0, 0, J1939mod_pf_oer_ext_arr_, 0, J1939mod_pf_oer_p_};
+const TTCN_Typedescriptor_t J1939mod_pf_descr_ = { "@Isobus.J1939mod.pf", &OCTETSTRING_ber_, &J1939mod_pf_raw_, &OCTETSTRING_text_, &J1939mod_pf_xer_, &OCTETSTRING_json_, &J1939mod_pf_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t J1939mod_ps_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,NULL,false};
+const XERdescriptor_t       J1939mod_ps_xer_ = { {"ps>\n", "ps>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int J1939mod_ps_oer_ext_arr_[0] = {};
+const int J1939mod_ps_oer_p_[0] = {};
+const TTCN_OERdescriptor_t J1939mod_ps_oer_ = { -1, TRUE, 1, FALSE, 0, 0, J1939mod_ps_oer_ext_arr_, 0, J1939mod_ps_oer_p_};
+const TTCN_Typedescriptor_t J1939mod_ps_descr_ = { "@Isobus.J1939mod.ps", &OCTETSTRING_ber_, &J1939mod_ps_raw_, &OCTETSTRING_text_, &J1939mod_ps_xer_, &OCTETSTRING_json_, &J1939mod_ps_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t J1939mod_sa_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,NULL,false};
+const XERdescriptor_t       J1939mod_sa_xer_ = { {"sa>\n", "sa>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int J1939mod_sa_oer_ext_arr_[0] = {};
+const int J1939mod_sa_oer_p_[0] = {};
+const TTCN_OERdescriptor_t J1939mod_sa_oer_ = { -1, TRUE, 1, FALSE, 0, 0, J1939mod_sa_oer_ext_arr_, 0, J1939mod_sa_oer_p_};
+const TTCN_Typedescriptor_t J1939mod_sa_descr_ = { "@Isobus.J1939mod.sa", &OCTETSTRING_ber_, &J1939mod_sa_raw_, &OCTETSTRING_text_, &J1939mod_sa_xer_, &OCTETSTRING_json_, &J1939mod_sa_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t J1939mod_comp_raw_ = {24,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,3,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       J1939mod_comp_xer_ = { {"comp>\n", "comp>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int J1939mod_comp_oer_ext_arr_[0] = {};
+const int J1939mod_comp_oer_p_[0] = {};
+const TTCN_OERdescriptor_t J1939mod_comp_oer_ = { -1, TRUE, 3, FALSE, 0, 0, J1939mod_comp_oer_ext_arr_, 0, J1939mod_comp_oer_p_};
+const TTCN_Typedescriptor_t J1939mod_comp_descr_ = { "@Isobus.J1939mod.comp", &OCTETSTRING_ber_, &J1939mod_comp_raw_, &OCTETSTRING_text_, &J1939mod_comp_xer_, &OCTETSTRING_json_, &J1939mod_comp_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t J1939mod_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,NULL,false};
+// No XER for J1939mod
+const TTCN_Typedescriptor_t J1939mod_descr_ = { "@Isobus.J1939mod", NULL, &J1939mod_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t AnyIsoBusPdu_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for AnyIsoBusPdu
+const TTCN_Typedescriptor_t AnyIsoBusPdu_descr_ = { "@Isobus.AnyIsoBusPdu", NULL, &AnyIsoBusPdu_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CAN__frame__j1939_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for CAN__frame__j1939
+const TTCN_Typedescriptor_t CAN__frame__j1939_descr_ = { "@Isobus.CAN_frame_j1939", NULL, &CAN__frame__j1939_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CAN__frame__j1939mod_can__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,NULL,false};
+// No XER for CAN__frame__j1939mod_can__pdu
+const TTCN_Typedescriptor_t CAN__frame__j1939mod_can__pdu_descr_ = { "@Isobus.CAN_frame_j1939mod.can_pdu", NULL, &CAN__frame__j1939mod_can__pdu_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CAN__frame__j1939mod_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for CAN__frame__j1939mod
+const TTCN_Typedescriptor_t CAN__frame__j1939mod_descr_ = { "@Isobus.CAN_frame_j1939mod", NULL, &CAN__frame__j1939mod_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+TTCN_Module module_object("Isobus", __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);
+
+static const RuntimeVersionChecker ver_checker(  current_runtime_version.requires_major_version_6,
+  current_runtime_version.requires_minor_version_6,
+  current_runtime_version.requires_patch_level_0,  current_runtime_version.requires_runtime_1);
+
+/* Member functions of C++ classes */
+
+J1939::J1939()
+{
+}
+
+J1939::J1939(const BITSTRING& par_prio,
+    const BITSTRING& par_res,
+    const BITSTRING& par_dp,
+    const OCTETSTRING& par_pf,
+    const OCTETSTRING& par_ps,
+    const OCTETSTRING& par_sa)
+  :   field_prio(par_prio),
+  field_res(par_res),
+  field_dp(par_dp),
+  field_pf(par_pf),
+  field_ps(par_ps),
+  field_sa(par_sa)
+{
+}
+
+J1939::J1939(const J1939& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @Isobus.J1939.");
+if (other_value.prio().is_bound()) field_prio = other_value.prio();
+else field_prio.clean_up();
+if (other_value.res().is_bound()) field_res = other_value.res();
+else field_res.clean_up();
+if (other_value.dp().is_bound()) field_dp = other_value.dp();
+else field_dp.clean_up();
+if (other_value.pf().is_bound()) field_pf = other_value.pf();
+else field_pf.clean_up();
+if (other_value.ps().is_bound()) field_ps = other_value.ps();
+else field_ps.clean_up();
+if (other_value.sa().is_bound()) field_sa = other_value.sa();
+else field_sa.clean_up();
+}
+
+void J1939::clean_up()
+{
+field_prio.clean_up();
+field_res.clean_up();
+field_dp.clean_up();
+field_pf.clean_up();
+field_ps.clean_up();
+field_sa.clean_up();
+}
+
+const TTCN_Typedescriptor_t* J1939::get_descriptor() const { return &J1939_descr_; }
+J1939& J1939::operator=(const J1939& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @Isobus.J1939.");
+  if (other_value.prio().is_bound()) field_prio = other_value.prio();
+  else field_prio.clean_up();
+  if (other_value.res().is_bound()) field_res = other_value.res();
+  else field_res.clean_up();
+  if (other_value.dp().is_bound()) field_dp = other_value.dp();
+  else field_dp.clean_up();
+  if (other_value.pf().is_bound()) field_pf = other_value.pf();
+  else field_pf.clean_up();
+  if (other_value.ps().is_bound()) field_ps = other_value.ps();
+  else field_ps.clean_up();
+  if (other_value.sa().is_bound()) field_sa = other_value.sa();
+  else field_sa.clean_up();
+}
+return *this;
+}
+
+boolean J1939::operator==(const J1939& other_value) const
+{
+return field_prio==other_value.field_prio
+  && field_res==other_value.field_res
+  && field_dp==other_value.field_dp
+  && field_pf==other_value.field_pf
+  && field_ps==other_value.field_ps
+  && field_sa==other_value.field_sa;
+}
+
+boolean J1939::is_bound() const
+{
+return (field_prio.is_bound())
+  || (field_res.is_bound())
+  || (field_dp.is_bound())
+  || (field_pf.is_bound())
+  || (field_ps.is_bound())
+  || (field_sa.is_bound());
+}
+boolean J1939::is_value() const
+{
+return field_prio.is_value()
+  && field_res.is_value()
+  && field_dp.is_value()
+  && field_pf.is_value()
+  && field_ps.is_value()
+  && field_sa.is_value();
+}
+void J1939::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ prio := ");
+field_prio.log();
+TTCN_Logger::log_event_str(", res := ");
+field_res.log();
+TTCN_Logger::log_event_str(", dp := ");
+field_dp.log();
+TTCN_Logger::log_event_str(", pf := ");
+field_pf.log();
+TTCN_Logger::log_event_str(", ps := ");
+field_ps.log();
+TTCN_Logger::log_event_str(", sa := ");
+field_sa.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void J1939::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 @Isobus.J1939 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) prio().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) res().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) dp().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) pf().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) ps().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) sa().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(), "prio")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          prio().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(), "res")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          res().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(), "dp")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          dp().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(), "pf")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          pf().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(), "ps")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ps().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(), "sa")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          sa().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 @Isobus.J1939: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@Isobus.J1939");
+  }
+}
+
+void J1939::set_implicit_omit()
+{
+if (prio().is_bound()) prio().set_implicit_omit();
+if (res().is_bound()) res().set_implicit_omit();
+if (dp().is_bound()) dp().set_implicit_omit();
+if (pf().is_bound()) pf().set_implicit_omit();
+if (ps().is_bound()) ps().set_implicit_omit();
+if (sa().is_bound()) sa().set_implicit_omit();
+}
+
+void J1939::encode_text(Text_Buf& text_buf) const
+{
+field_prio.encode_text(text_buf);
+field_res.encode_text(text_buf);
+field_dp.encode_text(text_buf);
+field_pf.encode_text(text_buf);
+field_ps.encode_text(text_buf);
+field_sa.encode_text(text_buf);
+}
+
+void J1939::decode_text(Text_Buf& text_buf)
+{
+field_prio.decode_text(text_buf);
+field_res.decode_text(text_buf);
+field_dp.decode_text(text_buf);
+field_pf.decode_text(text_buf);
+field_ps.decode_text(text_buf);
+field_sa.decode_text(text_buf);
+}
+
+void J1939::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void J1939::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int J1939::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, J1939_prio_descr_.raw->forceomit);
+  decoded_field_length = field_prio.RAW_decode(J1939_prio_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, J1939_res_descr_.raw->forceomit);
+  decoded_field_length = field_res.RAW_decode(J1939_res_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, J1939_dp_descr_.raw->forceomit);
+  decoded_field_length = field_dp.RAW_decode(J1939_dp_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, J1939_pf_descr_.raw->forceomit);
+  decoded_field_length = field_pf.RAW_decode(J1939_pf_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, J1939_ps_descr_.raw->forceomit);
+  decoded_field_length = field_ps.RAW_decode(J1939_ps_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, J1939_sa_descr_.raw->forceomit);
+  decoded_field_length = field_sa.RAW_decode(J1939_sa_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int J1939::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, J1939_prio_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, J1939_res_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, J1939_dp_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, J1939_pf_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, J1939_ps_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, J1939_sa_descr_.raw);
+  encoded_length += field_prio.RAW_encode(J1939_prio_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_res.RAW_encode(J1939_res_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_dp.RAW_encode(J1939_dp_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_pf.RAW_encode(J1939_pf_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_ps.RAW_encode(J1939_ps_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_sa.RAW_encode(J1939_sa_descr_, *myleaf.body.node.nodes[5]);
+  return myleaf.length = encoded_length;
+}
+
+struct J1939_template::single_value_struct {
+BITSTRING_template field_prio;
+BITSTRING_template field_res;
+BITSTRING_template field_dp;
+OCTETSTRING_template field_pf;
+OCTETSTRING_template field_ps;
+OCTETSTRING_template field_sa;
+};
+
+void J1939_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_prio = ANY_VALUE;
+single_value->field_res = ANY_VALUE;
+single_value->field_dp = ANY_VALUE;
+single_value->field_pf = ANY_VALUE;
+single_value->field_ps = ANY_VALUE;
+single_value->field_sa = ANY_VALUE;
+}
+}
+}
+
+void J1939_template::copy_value(const J1939& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.prio().is_bound()) {
+  single_value->field_prio = other_value.prio();
+} else {
+  single_value->field_prio.clean_up();
+}
+if (other_value.res().is_bound()) {
+  single_value->field_res = other_value.res();
+} else {
+  single_value->field_res.clean_up();
+}
+if (other_value.dp().is_bound()) {
+  single_value->field_dp = other_value.dp();
+} else {
+  single_value->field_dp.clean_up();
+}
+if (other_value.pf().is_bound()) {
+  single_value->field_pf = other_value.pf();
+} else {
+  single_value->field_pf.clean_up();
+}
+if (other_value.ps().is_bound()) {
+  single_value->field_ps = other_value.ps();
+} else {
+  single_value->field_ps.clean_up();
+}
+if (other_value.sa().is_bound()) {
+  single_value->field_sa = other_value.sa();
+} else {
+  single_value->field_sa.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void J1939_template::copy_template(const J1939_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.prio().get_selection()) {
+single_value->field_prio = other_value.prio();
+} else {
+single_value->field_prio.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.res().get_selection()) {
+single_value->field_res = other_value.res();
+} else {
+single_value->field_res.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.dp().get_selection()) {
+single_value->field_dp = other_value.dp();
+} else {
+single_value->field_dp.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.pf().get_selection()) {
+single_value->field_pf = other_value.pf();
+} else {
+single_value->field_pf.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.ps().get_selection()) {
+single_value->field_ps = other_value.ps();
+} else {
+single_value->field_ps.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.sa().get_selection()) {
+single_value->field_sa = other_value.sa();
+} else {
+single_value->field_sa.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new J1939_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @Isobus.J1939.");
+break;
+}
+set_selection(other_value);
+}
+
+J1939_template::J1939_template()
+{
+}
+
+J1939_template::J1939_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+J1939_template::J1939_template(const J1939& other_value)
+{
+copy_value(other_value);
+}
+
+J1939_template::J1939_template(const OPTIONAL<J1939>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const J1939&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @Isobus.J1939 from an unbound optional field.");
+}
+}
+
+J1939_template::J1939_template(const J1939_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+J1939_template::~J1939_template()
+{
+clean_up();
+}
+
+J1939_template& J1939_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+J1939_template& J1939_template::operator=(const J1939& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+J1939_template& J1939_template::operator=(const OPTIONAL<J1939>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const J1939&)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 @Isobus.J1939.");
+}
+return *this;
+}
+
+J1939_template& J1939_template::operator=(const J1939_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean J1939_template::match(const J1939& 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.prio().is_bound()) return FALSE;
+if(!single_value->field_prio.match(other_value.prio(), legacy))return FALSE;
+if(!other_value.res().is_bound()) return FALSE;
+if(!single_value->field_res.match(other_value.res(), legacy))return FALSE;
+if(!other_value.dp().is_bound()) return FALSE;
+if(!single_value->field_dp.match(other_value.dp(), legacy))return FALSE;
+if(!other_value.pf().is_bound()) return FALSE;
+if(!single_value->field_pf.match(other_value.pf(), legacy))return FALSE;
+if(!other_value.ps().is_bound()) return FALSE;
+if(!single_value->field_ps.match(other_value.ps(), legacy))return FALSE;
+if(!other_value.sa().is_bound()) return FALSE;
+if(!single_value->field_sa.match(other_value.sa(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @Isobus.J1939.");
+}
+return FALSE;
+}
+
+boolean J1939_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_prio.is_bound()
+
+ ||single_value->field_res.is_bound()
+
+ ||single_value->field_dp.is_bound()
+
+ ||single_value->field_pf.is_bound()
+
+ ||single_value->field_ps.is_bound()
+
+ ||single_value->field_sa.is_bound()
+;
+}
+
+boolean J1939_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_prio.is_value()
+ &&single_value->field_res.is_value()
+ &&single_value->field_dp.is_value()
+ &&single_value->field_pf.is_value()
+ &&single_value->field_ps.is_value()
+ &&single_value->field_sa.is_value();
+}
+
+void J1939_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+J1939 J1939_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 @Isobus.J1939.");
+J1939 ret_val;
+if (single_value->field_prio.is_bound()) {
+ret_val.prio() = single_value->field_prio.valueof();
+}
+if (single_value->field_res.is_bound()) {
+ret_val.res() = single_value->field_res.valueof();
+}
+if (single_value->field_dp.is_bound()) {
+ret_val.dp() = single_value->field_dp.valueof();
+}
+if (single_value->field_pf.is_bound()) {
+ret_val.pf() = single_value->field_pf.valueof();
+}
+if (single_value->field_ps.is_bound()) {
+ret_val.ps() = single_value->field_ps.valueof();
+}
+if (single_value->field_sa.is_bound()) {
+ret_val.sa() = single_value->field_sa.valueof();
+}
+return ret_val;
+}
+
+void J1939_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @Isobus.J1939.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new J1939_template[list_length];
+}
+
+J1939_template& J1939_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @Isobus.J1939.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @Isobus.J1939.");
+return value_list.list_value[list_index];
+}
+
+BITSTRING_template& J1939_template::prio()
+{
+set_specific();
+return single_value->field_prio;
+}
+
+const BITSTRING_template& J1939_template::prio() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field prio of a non-specific template of type @Isobus.J1939.");
+return single_value->field_prio;
+}
+
+BITSTRING_template& J1939_template::res()
+{
+set_specific();
+return single_value->field_res;
+}
+
+const BITSTRING_template& J1939_template::res() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field res of a non-specific template of type @Isobus.J1939.");
+return single_value->field_res;
+}
+
+BITSTRING_template& J1939_template::dp()
+{
+set_specific();
+return single_value->field_dp;
+}
+
+const BITSTRING_template& J1939_template::dp() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field dp of a non-specific template of type @Isobus.J1939.");
+return single_value->field_dp;
+}
+
+OCTETSTRING_template& J1939_template::pf()
+{
+set_specific();
+return single_value->field_pf;
+}
+
+const OCTETSTRING_template& J1939_template::pf() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field pf of a non-specific template of type @Isobus.J1939.");
+return single_value->field_pf;
+}
+
+OCTETSTRING_template& J1939_template::ps()
+{
+set_specific();
+return single_value->field_ps;
+}
+
+const OCTETSTRING_template& J1939_template::ps() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field ps of a non-specific template of type @Isobus.J1939.");
+return single_value->field_ps;
+}
+
+OCTETSTRING_template& J1939_template::sa()
+{
+set_specific();
+return single_value->field_sa;
+}
+
+const OCTETSTRING_template& J1939_template::sa() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field sa of a non-specific template of type @Isobus.J1939.");
+return single_value->field_sa;
+}
+
+int J1939_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @Isobus.J1939 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 @Isobus.J1939 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 @Isobus.J1939 containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @Isobus.J1939 containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @Isobus.J1939 containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @Isobus.J1939 containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @Isobus.J1939.");
+  }
+  return 0;
+}
+
+void J1939_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ prio := ");
+single_value->field_prio.log();
+TTCN_Logger::log_event_str(", res := ");
+single_value->field_res.log();
+TTCN_Logger::log_event_str(", dp := ");
+single_value->field_dp.log();
+TTCN_Logger::log_event_str(", pf := ");
+single_value->field_pf.log();
+TTCN_Logger::log_event_str(", ps := ");
+single_value->field_ps.log();
+TTCN_Logger::log_event_str(", sa := ");
+single_value->field_sa.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void J1939_template::log_match(const J1939& 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_prio.match(match_value.prio(), legacy)){
+TTCN_Logger::log_logmatch_info(".prio");
+single_value->field_prio.log_match(match_value.prio(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_res.match(match_value.res(), legacy)){
+TTCN_Logger::log_logmatch_info(".res");
+single_value->field_res.log_match(match_value.res(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_dp.match(match_value.dp(), legacy)){
+TTCN_Logger::log_logmatch_info(".dp");
+single_value->field_dp.log_match(match_value.dp(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_pf.match(match_value.pf(), legacy)){
+TTCN_Logger::log_logmatch_info(".pf");
+single_value->field_pf.log_match(match_value.pf(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_ps.match(match_value.ps(), legacy)){
+TTCN_Logger::log_logmatch_info(".ps");
+single_value->field_ps.log_match(match_value.ps(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_sa.match(match_value.sa(), legacy)){
+TTCN_Logger::log_logmatch_info(".sa");
+single_value->field_sa.log_match(match_value.sa(), 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("{ prio := ");
+single_value->field_prio.log_match(match_value.prio(), legacy);
+TTCN_Logger::log_event_str(", res := ");
+single_value->field_res.log_match(match_value.res(), legacy);
+TTCN_Logger::log_event_str(", dp := ");
+single_value->field_dp.log_match(match_value.dp(), legacy);
+TTCN_Logger::log_event_str(", pf := ");
+single_value->field_pf.log_match(match_value.pf(), legacy);
+TTCN_Logger::log_event_str(", ps := ");
+single_value->field_ps.log_match(match_value.ps(), legacy);
+TTCN_Logger::log_event_str(", sa := ");
+single_value->field_sa.log_match(match_value.sa(), 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 J1939_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_prio.encode_text(text_buf);
+single_value->field_res.encode_text(text_buf);
+single_value->field_dp.encode_text(text_buf);
+single_value->field_pf.encode_text(text_buf);
+single_value->field_ps.encode_text(text_buf);
+single_value->field_sa.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 @Isobus.J1939.");
+}
+}
+
+void J1939_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_prio.decode_text(text_buf);
+single_value->field_res.decode_text(text_buf);
+single_value->field_dp.decode_text(text_buf);
+single_value->field_pf.decode_text(text_buf);
+single_value->field_ps.decode_text(text_buf);
+single_value->field_sa.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 J1939_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 @Isobus.J1939.");
+}
+}
+
+void J1939_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: {
+    J1939_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @Isobus.J1939 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) prio().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) res().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) dp().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) pf().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) ps().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) sa().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(), "prio")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          prio().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(), "res")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          res().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(), "dp")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          dp().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(), "pf")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          pf().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(), "ps")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ps().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(), "sa")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          sa().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 @Isobus.J1939: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@Isobus.J1939");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void J1939_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_prio.check_restriction(t_res, t_name ? t_name : "@Isobus.J1939");
+single_value->field_res.check_restriction(t_res, t_name ? t_name : "@Isobus.J1939");
+single_value->field_dp.check_restriction(t_res, t_name ? t_name : "@Isobus.J1939");
+single_value->field_pf.check_restriction(t_res, t_name ? t_name : "@Isobus.J1939");
+single_value->field_ps.check_restriction(t_res, t_name ? t_name : "@Isobus.J1939");
+single_value->field_sa.check_restriction(t_res, t_name ? t_name : "@Isobus.J1939");
+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 : "@Isobus.J1939");
+}
+
+boolean J1939_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean J1939_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+J1939mod::J1939mod()
+{
+}
+
+J1939mod::J1939mod(const BITSTRING& par_prio,
+    const BITSTRING& par_res,
+    const BITSTRING& par_dp,
+    const OCTETSTRING& par_pf,
+    const OCTETSTRING& par_ps,
+    const OCTETSTRING& par_sa,
+    const OCTETSTRING& par_comp)
+  :   field_prio(par_prio),
+  field_res(par_res),
+  field_dp(par_dp),
+  field_pf(par_pf),
+  field_ps(par_ps),
+  field_sa(par_sa),
+  field_comp(par_comp)
+{
+}
+
+J1939mod::J1939mod(const J1939mod& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @Isobus.J1939mod.");
+if (other_value.prio().is_bound()) field_prio = other_value.prio();
+else field_prio.clean_up();
+if (other_value.res().is_bound()) field_res = other_value.res();
+else field_res.clean_up();
+if (other_value.dp().is_bound()) field_dp = other_value.dp();
+else field_dp.clean_up();
+if (other_value.pf().is_bound()) field_pf = other_value.pf();
+else field_pf.clean_up();
+if (other_value.ps().is_bound()) field_ps = other_value.ps();
+else field_ps.clean_up();
+if (other_value.sa().is_bound()) field_sa = other_value.sa();
+else field_sa.clean_up();
+if (other_value.comp().is_bound()) field_comp = other_value.comp();
+else field_comp.clean_up();
+}
+
+void J1939mod::clean_up()
+{
+field_prio.clean_up();
+field_res.clean_up();
+field_dp.clean_up();
+field_pf.clean_up();
+field_ps.clean_up();
+field_sa.clean_up();
+field_comp.clean_up();
+}
+
+const TTCN_Typedescriptor_t* J1939mod::get_descriptor() const { return &J1939mod_descr_; }
+J1939mod& J1939mod::operator=(const J1939mod& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @Isobus.J1939mod.");
+  if (other_value.prio().is_bound()) field_prio = other_value.prio();
+  else field_prio.clean_up();
+  if (other_value.res().is_bound()) field_res = other_value.res();
+  else field_res.clean_up();
+  if (other_value.dp().is_bound()) field_dp = other_value.dp();
+  else field_dp.clean_up();
+  if (other_value.pf().is_bound()) field_pf = other_value.pf();
+  else field_pf.clean_up();
+  if (other_value.ps().is_bound()) field_ps = other_value.ps();
+  else field_ps.clean_up();
+  if (other_value.sa().is_bound()) field_sa = other_value.sa();
+  else field_sa.clean_up();
+  if (other_value.comp().is_bound()) field_comp = other_value.comp();
+  else field_comp.clean_up();
+}
+return *this;
+}
+
+boolean J1939mod::operator==(const J1939mod& other_value) const
+{
+return field_prio==other_value.field_prio
+  && field_res==other_value.field_res
+  && field_dp==other_value.field_dp
+  && field_pf==other_value.field_pf
+  && field_ps==other_value.field_ps
+  && field_sa==other_value.field_sa
+  && field_comp==other_value.field_comp;
+}
+
+boolean J1939mod::is_bound() const
+{
+return (field_prio.is_bound())
+  || (field_res.is_bound())
+  || (field_dp.is_bound())
+  || (field_pf.is_bound())
+  || (field_ps.is_bound())
+  || (field_sa.is_bound())
+  || (field_comp.is_bound());
+}
+boolean J1939mod::is_value() const
+{
+return field_prio.is_value()
+  && field_res.is_value()
+  && field_dp.is_value()
+  && field_pf.is_value()
+  && field_ps.is_value()
+  && field_sa.is_value()
+  && field_comp.is_value();
+}
+void J1939mod::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ prio := ");
+field_prio.log();
+TTCN_Logger::log_event_str(", res := ");
+field_res.log();
+TTCN_Logger::log_event_str(", dp := ");
+field_dp.log();
+TTCN_Logger::log_event_str(", pf := ");
+field_pf.log();
+TTCN_Logger::log_event_str(", ps := ");
+field_ps.log();
+TTCN_Logger::log_event_str(", sa := ");
+field_sa.log();
+TTCN_Logger::log_event_str(", comp := ");
+field_comp.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void J1939mod::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 @Isobus.J1939mod 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) prio().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) res().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) dp().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) pf().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) ps().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) sa().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) comp().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(), "prio")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          prio().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(), "res")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          res().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(), "dp")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          dp().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(), "pf")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          pf().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(), "ps")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ps().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(), "sa")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          sa().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(), "comp")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          comp().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 @Isobus.J1939mod: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@Isobus.J1939mod");
+  }
+}
+
+void J1939mod::set_implicit_omit()
+{
+if (prio().is_bound()) prio().set_implicit_omit();
+if (res().is_bound()) res().set_implicit_omit();
+if (dp().is_bound()) dp().set_implicit_omit();
+if (pf().is_bound()) pf().set_implicit_omit();
+if (ps().is_bound()) ps().set_implicit_omit();
+if (sa().is_bound()) sa().set_implicit_omit();
+if (comp().is_bound()) comp().set_implicit_omit();
+}
+
+void J1939mod::encode_text(Text_Buf& text_buf) const
+{
+field_prio.encode_text(text_buf);
+field_res.encode_text(text_buf);
+field_dp.encode_text(text_buf);
+field_pf.encode_text(text_buf);
+field_ps.encode_text(text_buf);
+field_sa.encode_text(text_buf);
+field_comp.encode_text(text_buf);
+}
+
+void J1939mod::decode_text(Text_Buf& text_buf)
+{
+field_prio.decode_text(text_buf);
+field_res.decode_text(text_buf);
+field_dp.decode_text(text_buf);
+field_pf.decode_text(text_buf);
+field_ps.decode_text(text_buf);
+field_sa.decode_text(text_buf);
+field_comp.decode_text(text_buf);
+}
+
+void J1939mod::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void J1939mod::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int J1939mod::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, J1939mod_prio_descr_.raw->forceomit);
+  decoded_field_length = field_prio.RAW_decode(J1939mod_prio_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, J1939mod_res_descr_.raw->forceomit);
+  decoded_field_length = field_res.RAW_decode(J1939mod_res_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, J1939mod_dp_descr_.raw->forceomit);
+  decoded_field_length = field_dp.RAW_decode(J1939mod_dp_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, J1939mod_pf_descr_.raw->forceomit);
+  decoded_field_length = field_pf.RAW_decode(J1939mod_pf_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, J1939mod_ps_descr_.raw->forceomit);
+  decoded_field_length = field_ps.RAW_decode(J1939mod_ps_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, J1939mod_sa_descr_.raw->forceomit);
+  decoded_field_length = field_sa.RAW_decode(J1939mod_sa_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, J1939mod_comp_descr_.raw->forceomit);
+  decoded_field_length = field_comp.RAW_decode(J1939mod_comp_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int J1939mod::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, J1939mod_prio_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, J1939mod_res_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, J1939mod_dp_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, J1939mod_pf_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, J1939mod_ps_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, J1939mod_sa_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, J1939mod_comp_descr_.raw);
+  encoded_length += field_prio.RAW_encode(J1939mod_prio_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_res.RAW_encode(J1939mod_res_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_dp.RAW_encode(J1939mod_dp_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_pf.RAW_encode(J1939mod_pf_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_ps.RAW_encode(J1939mod_ps_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_sa.RAW_encode(J1939mod_sa_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_comp.RAW_encode(J1939mod_comp_descr_, *myleaf.body.node.nodes[6]);
+  return myleaf.length = encoded_length;
+}
+
+struct J1939mod_template::single_value_struct {
+BITSTRING_template field_prio;
+BITSTRING_template field_res;
+BITSTRING_template field_dp;
+OCTETSTRING_template field_pf;
+OCTETSTRING_template field_ps;
+OCTETSTRING_template field_sa;
+OCTETSTRING_template field_comp;
+};
+
+void J1939mod_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_prio = ANY_VALUE;
+single_value->field_res = ANY_VALUE;
+single_value->field_dp = ANY_VALUE;
+single_value->field_pf = ANY_VALUE;
+single_value->field_ps = ANY_VALUE;
+single_value->field_sa = ANY_VALUE;
+single_value->field_comp = ANY_VALUE;
+}
+}
+}
+
+void J1939mod_template::copy_value(const J1939mod& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.prio().is_bound()) {
+  single_value->field_prio = other_value.prio();
+} else {
+  single_value->field_prio.clean_up();
+}
+if (other_value.res().is_bound()) {
+  single_value->field_res = other_value.res();
+} else {
+  single_value->field_res.clean_up();
+}
+if (other_value.dp().is_bound()) {
+  single_value->field_dp = other_value.dp();
+} else {
+  single_value->field_dp.clean_up();
+}
+if (other_value.pf().is_bound()) {
+  single_value->field_pf = other_value.pf();
+} else {
+  single_value->field_pf.clean_up();
+}
+if (other_value.ps().is_bound()) {
+  single_value->field_ps = other_value.ps();
+} else {
+  single_value->field_ps.clean_up();
+}
+if (other_value.sa().is_bound()) {
+  single_value->field_sa = other_value.sa();
+} else {
+  single_value->field_sa.clean_up();
+}
+if (other_value.comp().is_bound()) {
+  single_value->field_comp = other_value.comp();
+} else {
+  single_value->field_comp.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void J1939mod_template::copy_template(const J1939mod_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.prio().get_selection()) {
+single_value->field_prio = other_value.prio();
+} else {
+single_value->field_prio.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.res().get_selection()) {
+single_value->field_res = other_value.res();
+} else {
+single_value->field_res.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.dp().get_selection()) {
+single_value->field_dp = other_value.dp();
+} else {
+single_value->field_dp.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.pf().get_selection()) {
+single_value->field_pf = other_value.pf();
+} else {
+single_value->field_pf.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.ps().get_selection()) {
+single_value->field_ps = other_value.ps();
+} else {
+single_value->field_ps.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.sa().get_selection()) {
+single_value->field_sa = other_value.sa();
+} else {
+single_value->field_sa.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.comp().get_selection()) {
+single_value->field_comp = other_value.comp();
+} else {
+single_value->field_comp.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new J1939mod_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @Isobus.J1939mod.");
+break;
+}
+set_selection(other_value);
+}
+
+J1939mod_template::J1939mod_template()
+{
+}
+
+J1939mod_template::J1939mod_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+J1939mod_template::J1939mod_template(const J1939mod& other_value)
+{
+copy_value(other_value);
+}
+
+J1939mod_template::J1939mod_template(const OPTIONAL<J1939mod>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const J1939mod&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @Isobus.J1939mod from an unbound optional field.");
+}
+}
+
+J1939mod_template::J1939mod_template(const J1939mod_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+J1939mod_template::~J1939mod_template()
+{
+clean_up();
+}
+
+J1939mod_template& J1939mod_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+J1939mod_template& J1939mod_template::operator=(const J1939mod& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+J1939mod_template& J1939mod_template::operator=(const OPTIONAL<J1939mod>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const J1939mod&)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 @Isobus.J1939mod.");
+}
+return *this;
+}
+
+J1939mod_template& J1939mod_template::operator=(const J1939mod_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean J1939mod_template::match(const J1939mod& 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.prio().is_bound()) return FALSE;
+if(!single_value->field_prio.match(other_value.prio(), legacy))return FALSE;
+if(!other_value.res().is_bound()) return FALSE;
+if(!single_value->field_res.match(other_value.res(), legacy))return FALSE;
+if(!other_value.dp().is_bound()) return FALSE;
+if(!single_value->field_dp.match(other_value.dp(), legacy))return FALSE;
+if(!other_value.pf().is_bound()) return FALSE;
+if(!single_value->field_pf.match(other_value.pf(), legacy))return FALSE;
+if(!other_value.ps().is_bound()) return FALSE;
+if(!single_value->field_ps.match(other_value.ps(), legacy))return FALSE;
+if(!other_value.sa().is_bound()) return FALSE;
+if(!single_value->field_sa.match(other_value.sa(), legacy))return FALSE;
+if(!other_value.comp().is_bound()) return FALSE;
+if(!single_value->field_comp.match(other_value.comp(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @Isobus.J1939mod.");
+}
+return FALSE;
+}
+
+boolean J1939mod_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_prio.is_bound()
+
+ ||single_value->field_res.is_bound()
+
+ ||single_value->field_dp.is_bound()
+
+ ||single_value->field_pf.is_bound()
+
+ ||single_value->field_ps.is_bound()
+
+ ||single_value->field_sa.is_bound()
+
+ ||single_value->field_comp.is_bound()
+;
+}
+
+boolean J1939mod_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_prio.is_value()
+ &&single_value->field_res.is_value()
+ &&single_value->field_dp.is_value()
+ &&single_value->field_pf.is_value()
+ &&single_value->field_ps.is_value()
+ &&single_value->field_sa.is_value()
+ &&single_value->field_comp.is_value();
+}
+
+void J1939mod_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+J1939mod J1939mod_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 @Isobus.J1939mod.");
+J1939mod ret_val;
+if (single_value->field_prio.is_bound()) {
+ret_val.prio() = single_value->field_prio.valueof();
+}
+if (single_value->field_res.is_bound()) {
+ret_val.res() = single_value->field_res.valueof();
+}
+if (single_value->field_dp.is_bound()) {
+ret_val.dp() = single_value->field_dp.valueof();
+}
+if (single_value->field_pf.is_bound()) {
+ret_val.pf() = single_value->field_pf.valueof();
+}
+if (single_value->field_ps.is_bound()) {
+ret_val.ps() = single_value->field_ps.valueof();
+}
+if (single_value->field_sa.is_bound()) {
+ret_val.sa() = single_value->field_sa.valueof();
+}
+if (single_value->field_comp.is_bound()) {
+ret_val.comp() = single_value->field_comp.valueof();
+}
+return ret_val;
+}
+
+void J1939mod_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @Isobus.J1939mod.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new J1939mod_template[list_length];
+}
+
+J1939mod_template& J1939mod_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @Isobus.J1939mod.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @Isobus.J1939mod.");
+return value_list.list_value[list_index];
+}
+
+BITSTRING_template& J1939mod_template::prio()
+{
+set_specific();
+return single_value->field_prio;
+}
+
+const BITSTRING_template& J1939mod_template::prio() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field prio of a non-specific template of type @Isobus.J1939mod.");
+return single_value->field_prio;
+}
+
+BITSTRING_template& J1939mod_template::res()
+{
+set_specific();
+return single_value->field_res;
+}
+
+const BITSTRING_template& J1939mod_template::res() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field res of a non-specific template of type @Isobus.J1939mod.");
+return single_value->field_res;
+}
+
+BITSTRING_template& J1939mod_template::dp()
+{
+set_specific();
+return single_value->field_dp;
+}
+
+const BITSTRING_template& J1939mod_template::dp() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field dp of a non-specific template of type @Isobus.J1939mod.");
+return single_value->field_dp;
+}
+
+OCTETSTRING_template& J1939mod_template::pf()
+{
+set_specific();
+return single_value->field_pf;
+}
+
+const OCTETSTRING_template& J1939mod_template::pf() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field pf of a non-specific template of type @Isobus.J1939mod.");
+return single_value->field_pf;
+}
+
+OCTETSTRING_template& J1939mod_template::ps()
+{
+set_specific();
+return single_value->field_ps;
+}
+
+const OCTETSTRING_template& J1939mod_template::ps() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field ps of a non-specific template of type @Isobus.J1939mod.");
+return single_value->field_ps;
+}
+
+OCTETSTRING_template& J1939mod_template::sa()
+{
+set_specific();
+return single_value->field_sa;
+}
+
+const OCTETSTRING_template& J1939mod_template::sa() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field sa of a non-specific template of type @Isobus.J1939mod.");
+return single_value->field_sa;
+}
+
+OCTETSTRING_template& J1939mod_template::comp()
+{
+set_specific();
+return single_value->field_comp;
+}
+
+const OCTETSTRING_template& J1939mod_template::comp() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field comp of a non-specific template of type @Isobus.J1939mod.");
+return single_value->field_comp;
+}
+
+int J1939mod_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @Isobus.J1939mod 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 @Isobus.J1939mod 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 @Isobus.J1939mod containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @Isobus.J1939mod containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @Isobus.J1939mod containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @Isobus.J1939mod containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @Isobus.J1939mod.");
+  }
+  return 0;
+}
+
+void J1939mod_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ prio := ");
+single_value->field_prio.log();
+TTCN_Logger::log_event_str(", res := ");
+single_value->field_res.log();
+TTCN_Logger::log_event_str(", dp := ");
+single_value->field_dp.log();
+TTCN_Logger::log_event_str(", pf := ");
+single_value->field_pf.log();
+TTCN_Logger::log_event_str(", ps := ");
+single_value->field_ps.log();
+TTCN_Logger::log_event_str(", sa := ");
+single_value->field_sa.log();
+TTCN_Logger::log_event_str(", comp := ");
+single_value->field_comp.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void J1939mod_template::log_match(const J1939mod& 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_prio.match(match_value.prio(), legacy)){
+TTCN_Logger::log_logmatch_info(".prio");
+single_value->field_prio.log_match(match_value.prio(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_res.match(match_value.res(), legacy)){
+TTCN_Logger::log_logmatch_info(".res");
+single_value->field_res.log_match(match_value.res(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_dp.match(match_value.dp(), legacy)){
+TTCN_Logger::log_logmatch_info(".dp");
+single_value->field_dp.log_match(match_value.dp(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_pf.match(match_value.pf(), legacy)){
+TTCN_Logger::log_logmatch_info(".pf");
+single_value->field_pf.log_match(match_value.pf(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_ps.match(match_value.ps(), legacy)){
+TTCN_Logger::log_logmatch_info(".ps");
+single_value->field_ps.log_match(match_value.ps(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_sa.match(match_value.sa(), legacy)){
+TTCN_Logger::log_logmatch_info(".sa");
+single_value->field_sa.log_match(match_value.sa(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_comp.match(match_value.comp(), legacy)){
+TTCN_Logger::log_logmatch_info(".comp");
+single_value->field_comp.log_match(match_value.comp(), 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("{ prio := ");
+single_value->field_prio.log_match(match_value.prio(), legacy);
+TTCN_Logger::log_event_str(", res := ");
+single_value->field_res.log_match(match_value.res(), legacy);
+TTCN_Logger::log_event_str(", dp := ");
+single_value->field_dp.log_match(match_value.dp(), legacy);
+TTCN_Logger::log_event_str(", pf := ");
+single_value->field_pf.log_match(match_value.pf(), legacy);
+TTCN_Logger::log_event_str(", ps := ");
+single_value->field_ps.log_match(match_value.ps(), legacy);
+TTCN_Logger::log_event_str(", sa := ");
+single_value->field_sa.log_match(match_value.sa(), legacy);
+TTCN_Logger::log_event_str(", comp := ");
+single_value->field_comp.log_match(match_value.comp(), 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 J1939mod_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_prio.encode_text(text_buf);
+single_value->field_res.encode_text(text_buf);
+single_value->field_dp.encode_text(text_buf);
+single_value->field_pf.encode_text(text_buf);
+single_value->field_ps.encode_text(text_buf);
+single_value->field_sa.encode_text(text_buf);
+single_value->field_comp.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 @Isobus.J1939mod.");
+}
+}
+
+void J1939mod_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_prio.decode_text(text_buf);
+single_value->field_res.decode_text(text_buf);
+single_value->field_dp.decode_text(text_buf);
+single_value->field_pf.decode_text(text_buf);
+single_value->field_ps.decode_text(text_buf);
+single_value->field_sa.decode_text(text_buf);
+single_value->field_comp.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 J1939mod_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 @Isobus.J1939mod.");
+}
+}
+
+void J1939mod_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: {
+    J1939mod_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @Isobus.J1939mod 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) prio().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) res().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) dp().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) pf().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) ps().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) sa().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) comp().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(), "prio")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          prio().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(), "res")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          res().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(), "dp")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          dp().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(), "pf")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          pf().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(), "ps")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ps().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(), "sa")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          sa().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(), "comp")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          comp().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 @Isobus.J1939mod: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@Isobus.J1939mod");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void J1939mod_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_prio.check_restriction(t_res, t_name ? t_name : "@Isobus.J1939mod");
+single_value->field_res.check_restriction(t_res, t_name ? t_name : "@Isobus.J1939mod");
+single_value->field_dp.check_restriction(t_res, t_name ? t_name : "@Isobus.J1939mod");
+single_value->field_pf.check_restriction(t_res, t_name ? t_name : "@Isobus.J1939mod");
+single_value->field_ps.check_restriction(t_res, t_name ? t_name : "@Isobus.J1939mod");
+single_value->field_sa.check_restriction(t_res, t_name ? t_name : "@Isobus.J1939mod");
+single_value->field_comp.check_restriction(t_res, t_name ? t_name : "@Isobus.J1939mod");
+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 : "@Isobus.J1939mod");
+}
+
+boolean J1939mod_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean J1939mod_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 AnyIsoBusPdu::copy_value(const AnyIsoBusPdu& other_value)
+{
+switch (other_value.union_selection) {
+case ALT_etp__dt:
+field_etp__dt = new IsobusCMMessageTypes::ETP__DT(*other_value.field_etp__dt);
+break;
+case ALT_etp__cm:
+field_etp__cm = new IsobusCMMessageTypes::ETP__CM(*other_value.field_etp__cm);
+break;
+case ALT_vt2ecu:
+field_vt2ecu = new IsobusVTMessageTypes::VT2ECU(*other_value.field_vt2ecu);
+break;
+case ALT_ecu2vt:
+field_ecu2vt = new IsobusVTMessageTypes::ECU2VT(*other_value.field_ecu2vt);
+break;
+case ALT_requestForAddressClaimed:
+field_requestForAddressClaimed = new IsobusNMMessageTypes::RequestForAddressClaimed(*other_value.field_requestForAddressClaimed);
+break;
+case ALT_tp__dt:
+field_tp__dt = new IsobusCMMessageTypes::TP__DT(*other_value.field_tp__dt);
+break;
+case ALT_tp__cm:
+field_tp__cm = new IsobusCMMessageTypes::TP__CM(*other_value.field_tp__cm);
+break;
+case ALT_networkMessage:
+field_networkMessage = new IsobusNMMessageTypes::NetworkMessage(*other_value.field_networkMessage);
+break;
+case ALT_cannotClaimSourceAddress:
+field_cannotClaimSourceAddress = new IsobusNMMessageTypes::CannotClaimSourceAddress(*other_value.field_cannotClaimSourceAddress);
+break;
+case ALT_addressClaimed:
+field_addressClaimed = new IsobusNMMessageTypes::AddressClaimed(*other_value.field_addressClaimed);
+break;
+case ALT_commandedAddress:
+field_commandedAddress = new IsobusNMMessageTypes::CommandedAddress(*other_value.field_commandedAddress);
+break;
+default:
+TTCN_error("Assignment of an unbound union value of type @Isobus.AnyIsoBusPdu.");
+}
+union_selection = other_value.union_selection;
+}
+
+AnyIsoBusPdu::AnyIsoBusPdu()
+{
+union_selection = UNBOUND_VALUE;
+}
+
+AnyIsoBusPdu::AnyIsoBusPdu(const AnyIsoBusPdu& other_value)
+: Base_Type(){
+copy_value(other_value);
+}
+
+AnyIsoBusPdu::~AnyIsoBusPdu()
+{
+clean_up();
+}
+
+AnyIsoBusPdu& AnyIsoBusPdu::operator=(const AnyIsoBusPdu& other_value)
+{
+if (this != &other_value) {
+clean_up();
+copy_value(other_value);
+}
+return *this;
+}
+
+boolean AnyIsoBusPdu::operator==(const AnyIsoBusPdu& other_value) const
+{
+if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @Isobus.AnyIsoBusPdu.");
+if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @Isobus.AnyIsoBusPdu.");
+if (union_selection != other_value.union_selection) return FALSE;
+switch (union_selection) {
+case ALT_etp__dt:
+return *field_etp__dt == *other_value.field_etp__dt;
+case ALT_etp__cm:
+return *field_etp__cm == *other_value.field_etp__cm;
+case ALT_vt2ecu:
+return *field_vt2ecu == *other_value.field_vt2ecu;
+case ALT_ecu2vt:
+return *field_ecu2vt == *other_value.field_ecu2vt;
+case ALT_requestForAddressClaimed:
+return *field_requestForAddressClaimed == *other_value.field_requestForAddressClaimed;
+case ALT_tp__dt:
+return *field_tp__dt == *other_value.field_tp__dt;
+case ALT_tp__cm:
+return *field_tp__cm == *other_value.field_tp__cm;
+case ALT_networkMessage:
+return *field_networkMessage == *other_value.field_networkMessage;
+case ALT_cannotClaimSourceAddress:
+return *field_cannotClaimSourceAddress == *other_value.field_cannotClaimSourceAddress;
+case ALT_addressClaimed:
+return *field_addressClaimed == *other_value.field_addressClaimed;
+case ALT_commandedAddress:
+return *field_commandedAddress == *other_value.field_commandedAddress;
+default:
+return FALSE;
+}
+}
+
+IsobusCMMessageTypes::ETP__DT& AnyIsoBusPdu::etp__dt()
+{
+if (union_selection != ALT_etp__dt) {
+clean_up();
+field_etp__dt = new IsobusCMMessageTypes::ETP__DT;
+union_selection = ALT_etp__dt;
+}
+return *field_etp__dt;
+}
+
+const IsobusCMMessageTypes::ETP__DT& AnyIsoBusPdu::etp__dt() const
+{
+if (union_selection != ALT_etp__dt) TTCN_error("Using non-selected field etp_dt in a value of union type @Isobus.AnyIsoBusPdu.");
+return *field_etp__dt;
+}
+
+IsobusCMMessageTypes::ETP__CM& AnyIsoBusPdu::etp__cm()
+{
+if (union_selection != ALT_etp__cm) {
+clean_up();
+field_etp__cm = new IsobusCMMessageTypes::ETP__CM;
+union_selection = ALT_etp__cm;
+}
+return *field_etp__cm;
+}
+
+const IsobusCMMessageTypes::ETP__CM& AnyIsoBusPdu::etp__cm() const
+{
+if (union_selection != ALT_etp__cm) TTCN_error("Using non-selected field etp_cm in a value of union type @Isobus.AnyIsoBusPdu.");
+return *field_etp__cm;
+}
+
+IsobusVTMessageTypes::VT2ECU& AnyIsoBusPdu::vt2ecu()
+{
+if (union_selection != ALT_vt2ecu) {
+clean_up();
+field_vt2ecu = new IsobusVTMessageTypes::VT2ECU;
+union_selection = ALT_vt2ecu;
+}
+return *field_vt2ecu;
+}
+
+const IsobusVTMessageTypes::VT2ECU& AnyIsoBusPdu::vt2ecu() const
+{
+if (union_selection != ALT_vt2ecu) TTCN_error("Using non-selected field vt2ecu in a value of union type @Isobus.AnyIsoBusPdu.");
+return *field_vt2ecu;
+}
+
+IsobusVTMessageTypes::ECU2VT& AnyIsoBusPdu::ecu2vt()
+{
+if (union_selection != ALT_ecu2vt) {
+clean_up();
+field_ecu2vt = new IsobusVTMessageTypes::ECU2VT;
+union_selection = ALT_ecu2vt;
+}
+return *field_ecu2vt;
+}
+
+const IsobusVTMessageTypes::ECU2VT& AnyIsoBusPdu::ecu2vt() const
+{
+if (union_selection != ALT_ecu2vt) TTCN_error("Using non-selected field ecu2vt in a value of union type @Isobus.AnyIsoBusPdu.");
+return *field_ecu2vt;
+}
+
+IsobusNMMessageTypes::RequestForAddressClaimed& AnyIsoBusPdu::requestForAddressClaimed()
+{
+if (union_selection != ALT_requestForAddressClaimed) {
+clean_up();
+field_requestForAddressClaimed = new IsobusNMMessageTypes::RequestForAddressClaimed;
+union_selection = ALT_requestForAddressClaimed;
+}
+return *field_requestForAddressClaimed;
+}
+
+const IsobusNMMessageTypes::RequestForAddressClaimed& AnyIsoBusPdu::requestForAddressClaimed() const
+{
+if (union_selection != ALT_requestForAddressClaimed) TTCN_error("Using non-selected field requestForAddressClaimed in a value of union type @Isobus.AnyIsoBusPdu.");
+return *field_requestForAddressClaimed;
+}
+
+IsobusCMMessageTypes::TP__DT& AnyIsoBusPdu::tp__dt()
+{
+if (union_selection != ALT_tp__dt) {
+clean_up();
+field_tp__dt = new IsobusCMMessageTypes::TP__DT;
+union_selection = ALT_tp__dt;
+}
+return *field_tp__dt;
+}
+
+const IsobusCMMessageTypes::TP__DT& AnyIsoBusPdu::tp__dt() const
+{
+if (union_selection != ALT_tp__dt) TTCN_error("Using non-selected field tp_dt in a value of union type @Isobus.AnyIsoBusPdu.");
+return *field_tp__dt;
+}
+
+IsobusCMMessageTypes::TP__CM& AnyIsoBusPdu::tp__cm()
+{
+if (union_selection != ALT_tp__cm) {
+clean_up();
+field_tp__cm = new IsobusCMMessageTypes::TP__CM;
+union_selection = ALT_tp__cm;
+}
+return *field_tp__cm;
+}
+
+const IsobusCMMessageTypes::TP__CM& AnyIsoBusPdu::tp__cm() const
+{
+if (union_selection != ALT_tp__cm) TTCN_error("Using non-selected field tp_cm in a value of union type @Isobus.AnyIsoBusPdu.");
+return *field_tp__cm;
+}
+
+IsobusNMMessageTypes::NetworkMessage& AnyIsoBusPdu::networkMessage()
+{
+if (union_selection != ALT_networkMessage) {
+clean_up();
+field_networkMessage = new IsobusNMMessageTypes::NetworkMessage;
+union_selection = ALT_networkMessage;
+}
+return *field_networkMessage;
+}
+
+const IsobusNMMessageTypes::NetworkMessage& AnyIsoBusPdu::networkMessage() const
+{
+if (union_selection != ALT_networkMessage) TTCN_error("Using non-selected field networkMessage in a value of union type @Isobus.AnyIsoBusPdu.");
+return *field_networkMessage;
+}
+
+IsobusNMMessageTypes::CannotClaimSourceAddress& AnyIsoBusPdu::cannotClaimSourceAddress()
+{
+if (union_selection != ALT_cannotClaimSourceAddress) {
+clean_up();
+field_cannotClaimSourceAddress = new IsobusNMMessageTypes::CannotClaimSourceAddress;
+union_selection = ALT_cannotClaimSourceAddress;
+}
+return *field_cannotClaimSourceAddress;
+}
+
+const IsobusNMMessageTypes::CannotClaimSourceAddress& AnyIsoBusPdu::cannotClaimSourceAddress() const
+{
+if (union_selection != ALT_cannotClaimSourceAddress) TTCN_error("Using non-selected field cannotClaimSourceAddress in a value of union type @Isobus.AnyIsoBusPdu.");
+return *field_cannotClaimSourceAddress;
+}
+
+IsobusNMMessageTypes::AddressClaimed& AnyIsoBusPdu::addressClaimed()
+{
+if (union_selection != ALT_addressClaimed) {
+clean_up();
+field_addressClaimed = new IsobusNMMessageTypes::AddressClaimed;
+union_selection = ALT_addressClaimed;
+}
+return *field_addressClaimed;
+}
+
+const IsobusNMMessageTypes::AddressClaimed& AnyIsoBusPdu::addressClaimed() const
+{
+if (union_selection != ALT_addressClaimed) TTCN_error("Using non-selected field addressClaimed in a value of union type @Isobus.AnyIsoBusPdu.");
+return *field_addressClaimed;
+}
+
+IsobusNMMessageTypes::CommandedAddress& AnyIsoBusPdu::commandedAddress()
+{
+if (union_selection != ALT_commandedAddress) {
+clean_up();
+field_commandedAddress = new IsobusNMMessageTypes::CommandedAddress;
+union_selection = ALT_commandedAddress;
+}
+return *field_commandedAddress;
+}
+
+const IsobusNMMessageTypes::CommandedAddress& AnyIsoBusPdu::commandedAddress() const
+{
+if (union_selection != ALT_commandedAddress) TTCN_error("Using non-selected field commandedAddress in a value of union type @Isobus.AnyIsoBusPdu.");
+return *field_commandedAddress;
+}
+
+boolean AnyIsoBusPdu::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 @Isobus.AnyIsoBusPdu.");
+return union_selection == checked_selection;
+}
+
+boolean AnyIsoBusPdu::is_bound() const
+{
+  return union_selection != UNBOUND_VALUE;
+}
+
+boolean AnyIsoBusPdu::is_value() const
+{
+switch (union_selection) {
+case UNBOUND_VALUE: return FALSE;
+case ALT_etp__dt: return field_etp__dt->is_value();
+case ALT_etp__cm: return field_etp__cm->is_value();
+case ALT_vt2ecu: return field_vt2ecu->is_value();
+case ALT_ecu2vt: return field_ecu2vt->is_value();
+case ALT_requestForAddressClaimed: return field_requestForAddressClaimed->is_value();
+case ALT_tp__dt: return field_tp__dt->is_value();
+case ALT_tp__cm: return field_tp__cm->is_value();
+case ALT_networkMessage: return field_networkMessage->is_value();
+case ALT_cannotClaimSourceAddress: return field_cannotClaimSourceAddress->is_value();
+case ALT_addressClaimed: return field_addressClaimed->is_value();
+case ALT_commandedAddress: return field_commandedAddress->is_value();
+default: TTCN_error("Invalid selection in union is_bound");}
+}
+
+void AnyIsoBusPdu::clean_up()
+{
+switch (union_selection) {
+case ALT_etp__dt:
+  delete field_etp__dt;
+  break;
+case ALT_etp__cm:
+  delete field_etp__cm;
+  break;
+case ALT_vt2ecu:
+  delete field_vt2ecu;
+  break;
+case ALT_ecu2vt:
+  delete field_ecu2vt;
+  break;
+case ALT_requestForAddressClaimed:
+  delete field_requestForAddressClaimed;
+  break;
+case ALT_tp__dt:
+  delete field_tp__dt;
+  break;
+case ALT_tp__cm:
+  delete field_tp__cm;
+  break;
+case ALT_networkMessage:
+  delete field_networkMessage;
+  break;
+case ALT_cannotClaimSourceAddress:
+  delete field_cannotClaimSourceAddress;
+  break;
+case ALT_addressClaimed:
+  delete field_addressClaimed;
+  break;
+case ALT_commandedAddress:
+  delete field_commandedAddress;
+  break;
+default:
+  break;
+}
+union_selection = UNBOUND_VALUE;
+}
+
+void AnyIsoBusPdu::log() const
+{
+switch (union_selection) {
+case ALT_etp__dt:
+TTCN_Logger::log_event_str("{ etp_dt := ");
+field_etp__dt->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_etp__cm:
+TTCN_Logger::log_event_str("{ etp_cm := ");
+field_etp__cm->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_vt2ecu:
+TTCN_Logger::log_event_str("{ vt2ecu := ");
+field_vt2ecu->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_ecu2vt:
+TTCN_Logger::log_event_str("{ ecu2vt := ");
+field_ecu2vt->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_requestForAddressClaimed:
+TTCN_Logger::log_event_str("{ requestForAddressClaimed := ");
+field_requestForAddressClaimed->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_tp__dt:
+TTCN_Logger::log_event_str("{ tp_dt := ");
+field_tp__dt->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_tp__cm:
+TTCN_Logger::log_event_str("{ tp_cm := ");
+field_tp__cm->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_networkMessage:
+TTCN_Logger::log_event_str("{ networkMessage := ");
+field_networkMessage->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_cannotClaimSourceAddress:
+TTCN_Logger::log_event_str("{ cannotClaimSourceAddress := ");
+field_cannotClaimSourceAddress->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_addressClaimed:
+TTCN_Logger::log_event_str("{ addressClaimed := ");
+field_addressClaimed->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_commandedAddress:
+TTCN_Logger::log_event_str("{ commandedAddress := ");
+field_commandedAddress->log();
+TTCN_Logger::log_event_str(" }");
+break;
+default:
+TTCN_Logger::log_event_unbound();
+}
+}
+
+void AnyIsoBusPdu::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, "etp_dt")) {
+    etp__dt().set_param(*mp_last);
+    if (!etp__dt().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "etp_cm")) {
+    etp__cm().set_param(*mp_last);
+    if (!etp__cm().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "vt2ecu")) {
+    vt2ecu().set_param(*mp_last);
+    if (!vt2ecu().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "ecu2vt")) {
+    ecu2vt().set_param(*mp_last);
+    if (!ecu2vt().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "requestForAddressClaimed")) {
+    requestForAddressClaimed().set_param(*mp_last);
+    if (!requestForAddressClaimed().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "tp_dt")) {
+    tp__dt().set_param(*mp_last);
+    if (!tp__dt().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "tp_cm")) {
+    tp__cm().set_param(*mp_last);
+    if (!tp__cm().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "networkMessage")) {
+    networkMessage().set_param(*mp_last);
+    if (!networkMessage().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "cannotClaimSourceAddress")) {
+    cannotClaimSourceAddress().set_param(*mp_last);
+    if (!cannotClaimSourceAddress().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "addressClaimed")) {
+    addressClaimed().set_param(*mp_last);
+    if (!addressClaimed().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "commandedAddress")) {
+    commandedAddress().set_param(*mp_last);
+    if (!commandedAddress().is_bound()) clean_up();
+    return;
+  }
+  mp_last->error("Field %s does not exist in type @Isobus.AnyIsoBusPdu.", last_name);
+}
+
+void AnyIsoBusPdu::set_implicit_omit()
+{
+switch (union_selection) {
+case ALT_etp__dt:
+field_etp__dt->set_implicit_omit(); break;
+case ALT_etp__cm:
+field_etp__cm->set_implicit_omit(); break;
+case ALT_vt2ecu:
+field_vt2ecu->set_implicit_omit(); break;
+case ALT_ecu2vt:
+field_ecu2vt->set_implicit_omit(); break;
+case ALT_requestForAddressClaimed:
+field_requestForAddressClaimed->set_implicit_omit(); break;
+case ALT_tp__dt:
+field_tp__dt->set_implicit_omit(); break;
+case ALT_tp__cm:
+field_tp__cm->set_implicit_omit(); break;
+case ALT_networkMessage:
+field_networkMessage->set_implicit_omit(); break;
+case ALT_cannotClaimSourceAddress:
+field_cannotClaimSourceAddress->set_implicit_omit(); break;
+case ALT_addressClaimed:
+field_addressClaimed->set_implicit_omit(); break;
+case ALT_commandedAddress:
+field_commandedAddress->set_implicit_omit(); break;
+default: break;
+}
+}
+
+void AnyIsoBusPdu::encode_text(Text_Buf& text_buf) const
+{
+text_buf.push_int(union_selection);
+switch (union_selection) {
+case ALT_etp__dt:
+field_etp__dt->encode_text(text_buf);
+break;
+case ALT_etp__cm:
+field_etp__cm->encode_text(text_buf);
+break;
+case ALT_vt2ecu:
+field_vt2ecu->encode_text(text_buf);
+break;
+case ALT_ecu2vt:
+field_ecu2vt->encode_text(text_buf);
+break;
+case ALT_requestForAddressClaimed:
+field_requestForAddressClaimed->encode_text(text_buf);
+break;
+case ALT_tp__dt:
+field_tp__dt->encode_text(text_buf);
+break;
+case ALT_tp__cm:
+field_tp__cm->encode_text(text_buf);
+break;
+case ALT_networkMessage:
+field_networkMessage->encode_text(text_buf);
+break;
+case ALT_cannotClaimSourceAddress:
+field_cannotClaimSourceAddress->encode_text(text_buf);
+break;
+case ALT_addressClaimed:
+field_addressClaimed->encode_text(text_buf);
+break;
+case ALT_commandedAddress:
+field_commandedAddress->encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an unbound value of union type @Isobus.AnyIsoBusPdu.");
+}
+}
+
+void AnyIsoBusPdu::decode_text(Text_Buf& text_buf)
+{
+switch ((union_selection_type)text_buf.pull_int().get_val()) {
+case ALT_etp__dt:
+etp__dt().decode_text(text_buf);
+break;
+case ALT_etp__cm:
+etp__cm().decode_text(text_buf);
+break;
+case ALT_vt2ecu:
+vt2ecu().decode_text(text_buf);
+break;
+case ALT_ecu2vt:
+ecu2vt().decode_text(text_buf);
+break;
+case ALT_requestForAddressClaimed:
+requestForAddressClaimed().decode_text(text_buf);
+break;
+case ALT_tp__dt:
+tp__dt().decode_text(text_buf);
+break;
+case ALT_tp__cm:
+tp__cm().decode_text(text_buf);
+break;
+case ALT_networkMessage:
+networkMessage().decode_text(text_buf);
+break;
+case ALT_cannotClaimSourceAddress:
+cannotClaimSourceAddress().decode_text(text_buf);
+break;
+case ALT_addressClaimed:
+addressClaimed().decode_text(text_buf);
+break;
+case ALT_commandedAddress:
+commandedAddress().decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for type @Isobus.AnyIsoBusPdu.");
+}
+}
+
+void AnyIsoBusPdu::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void AnyIsoBusPdu::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int AnyIsoBusPdu::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, IsobusCMMessageTypes::ETP__DT_descr_.raw->forceomit);
+      decoded_length = etp__dt().RAW_decode(IsobusCMMessageTypes::ETP__DT_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, IsobusCMMessageTypes::ETP__CM_descr_.raw->forceomit);
+      decoded_length = etp__cm().RAW_decode(IsobusCMMessageTypes::ETP__CM_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, IsobusVTMessageTypes::VT2ECU_descr_.raw->forceomit);
+      decoded_length = vt2ecu().RAW_decode(IsobusVTMessageTypes::VT2ECU_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 3: {
+      RAW_Force_Omit field_force_omit(3, force_omit, IsobusVTMessageTypes::ECU2VT_descr_.raw->forceomit);
+      decoded_length = ecu2vt().RAW_decode(IsobusVTMessageTypes::ECU2VT_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 4: {
+      RAW_Force_Omit field_force_omit(4, force_omit, IsobusNMMessageTypes::RequestForAddressClaimed_descr_.raw->forceomit);
+      decoded_length = requestForAddressClaimed().RAW_decode(IsobusNMMessageTypes::RequestForAddressClaimed_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 5: {
+      RAW_Force_Omit field_force_omit(5, force_omit, IsobusCMMessageTypes::TP__DT_descr_.raw->forceomit);
+      decoded_length = tp__dt().RAW_decode(IsobusCMMessageTypes::TP__DT_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 6: {
+      RAW_Force_Omit field_force_omit(6, force_omit, IsobusCMMessageTypes::TP__CM_descr_.raw->forceomit);
+      decoded_length = tp__cm().RAW_decode(IsobusCMMessageTypes::TP__CM_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 7: {
+      RAW_Force_Omit field_force_omit(7, force_omit, IsobusNMMessageTypes::NetworkMessage_descr_.raw->forceomit);
+      decoded_length = networkMessage().RAW_decode(IsobusNMMessageTypes::NetworkMessage_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 8: {
+      RAW_Force_Omit field_force_omit(8, force_omit, IsobusNMMessageTypes::CannotClaimSourceAddress_descr_.raw->forceomit);
+      decoded_length = cannotClaimSourceAddress().RAW_decode(IsobusNMMessageTypes::CannotClaimSourceAddress_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 9: {
+      RAW_Force_Omit field_force_omit(9, force_omit, IsobusNMMessageTypes::AddressClaimed_descr_.raw->forceomit);
+      decoded_length = addressClaimed().RAW_decode(IsobusNMMessageTypes::AddressClaimed_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 10: {
+      RAW_Force_Omit field_force_omit(10, force_omit, IsobusNMMessageTypes::CommandedAddress_descr_.raw->forceomit);
+      decoded_length = commandedAddress().RAW_decode(IsobusNMMessageTypes::CommandedAddress_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, IsobusCMMessageTypes::ETP__DT_descr_.raw->forceomit);
+      decoded_length = etp__dt().RAW_decode(IsobusCMMessageTypes::ETP__DT_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, IsobusCMMessageTypes::ETP__CM_descr_.raw->forceomit);
+      decoded_length = etp__cm().RAW_decode(IsobusCMMessageTypes::ETP__CM_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, IsobusVTMessageTypes::VT2ECU_descr_.raw->forceomit);
+      decoded_length = vt2ecu().RAW_decode(IsobusVTMessageTypes::VT2ECU_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;
+       }
+      p_buf.set_pos_bit(starting_pos);
+      RAW_Force_Omit field_3_force_omit(3, force_omit, IsobusVTMessageTypes::ECU2VT_descr_.raw->forceomit);
+      decoded_length = ecu2vt().RAW_decode(IsobusVTMessageTypes::ECU2VT_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_3_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_4_force_omit(4, force_omit, IsobusNMMessageTypes::RequestForAddressClaimed_descr_.raw->forceomit);
+      decoded_length = requestForAddressClaimed().RAW_decode(IsobusNMMessageTypes::RequestForAddressClaimed_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_4_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_5_force_omit(5, force_omit, IsobusCMMessageTypes::TP__DT_descr_.raw->forceomit);
+      decoded_length = tp__dt().RAW_decode(IsobusCMMessageTypes::TP__DT_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_5_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_6_force_omit(6, force_omit, IsobusCMMessageTypes::TP__CM_descr_.raw->forceomit);
+      decoded_length = tp__cm().RAW_decode(IsobusCMMessageTypes::TP__CM_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_6_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_7_force_omit(7, force_omit, IsobusNMMessageTypes::NetworkMessage_descr_.raw->forceomit);
+      decoded_length = networkMessage().RAW_decode(IsobusNMMessageTypes::NetworkMessage_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_7_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_8_force_omit(8, force_omit, IsobusNMMessageTypes::CannotClaimSourceAddress_descr_.raw->forceomit);
+      decoded_length = cannotClaimSourceAddress().RAW_decode(IsobusNMMessageTypes::CannotClaimSourceAddress_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_8_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_9_force_omit(9, force_omit, IsobusNMMessageTypes::AddressClaimed_descr_.raw->forceomit);
+      decoded_length = addressClaimed().RAW_decode(IsobusNMMessageTypes::AddressClaimed_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_9_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_10_force_omit(10, force_omit, IsobusNMMessageTypes::CommandedAddress_descr_.raw->forceomit);
+      decoded_length = commandedAddress().RAW_decode(IsobusNMMessageTypes::CommandedAddress_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_10_force_omit);
+      if (decoded_length >= 0) {
+         return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+       }
+ }
+ clean_up();
+ return -1;
+}
+
+int AnyIsoBusPdu::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const
+{
+  int encoded_length = 0;
+  myleaf.isleaf = FALSE;
+  myleaf.body.node.num_of_nodes = 11;  myleaf.body.node.nodes = init_nodes_of_enc_tree(11);
+  memset(myleaf.body.node.nodes, 0, 11 * sizeof(RAW_enc_tree *));
+  switch (union_selection) {
+  case ALT_etp__dt:
+    myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 0, IsobusCMMessageTypes::ETP__DT_descr_.raw);
+    encoded_length = field_etp__dt->RAW_encode(IsobusCMMessageTypes::ETP__DT_descr_, *myleaf.body.node.nodes[0]);
+    myleaf.body.node.nodes[0]->coding_descr = &IsobusCMMessageTypes::ETP__DT_descr_;
+    break;
+  case ALT_etp__cm:
+    myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 1, IsobusCMMessageTypes::ETP__CM_descr_.raw);
+    encoded_length = field_etp__cm->RAW_encode(IsobusCMMessageTypes::ETP__CM_descr_, *myleaf.body.node.nodes[1]);
+    myleaf.body.node.nodes[1]->coding_descr = &IsobusCMMessageTypes::ETP__CM_descr_;
+    break;
+  case ALT_vt2ecu:
+    myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 2, IsobusVTMessageTypes::VT2ECU_descr_.raw);
+    encoded_length = field_vt2ecu->RAW_encode(IsobusVTMessageTypes::VT2ECU_descr_, *myleaf.body.node.nodes[2]);
+    myleaf.body.node.nodes[2]->coding_descr = &IsobusVTMessageTypes::VT2ECU_descr_;
+    break;
+  case ALT_ecu2vt:
+    myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 3, IsobusVTMessageTypes::ECU2VT_descr_.raw);
+    encoded_length = field_ecu2vt->RAW_encode(IsobusVTMessageTypes::ECU2VT_descr_, *myleaf.body.node.nodes[3]);
+    myleaf.body.node.nodes[3]->coding_descr = &IsobusVTMessageTypes::ECU2VT_descr_;
+    break;
+  case ALT_requestForAddressClaimed:
+    myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 4, IsobusNMMessageTypes::RequestForAddressClaimed_descr_.raw);
+    encoded_length = field_requestForAddressClaimed->RAW_encode(IsobusNMMessageTypes::RequestForAddressClaimed_descr_, *myleaf.body.node.nodes[4]);
+    myleaf.body.node.nodes[4]->coding_descr = &IsobusNMMessageTypes::RequestForAddressClaimed_descr_;
+    break;
+  case ALT_tp__dt:
+    myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 5, IsobusCMMessageTypes::TP__DT_descr_.raw);
+    encoded_length = field_tp__dt->RAW_encode(IsobusCMMessageTypes::TP__DT_descr_, *myleaf.body.node.nodes[5]);
+    myleaf.body.node.nodes[5]->coding_descr = &IsobusCMMessageTypes::TP__DT_descr_;
+    break;
+  case ALT_tp__cm:
+    myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 6, IsobusCMMessageTypes::TP__CM_descr_.raw);
+    encoded_length = field_tp__cm->RAW_encode(IsobusCMMessageTypes::TP__CM_descr_, *myleaf.body.node.nodes[6]);
+    myleaf.body.node.nodes[6]->coding_descr = &IsobusCMMessageTypes::TP__CM_descr_;
+    break;
+  case ALT_networkMessage:
+    myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 7, IsobusNMMessageTypes::NetworkMessage_descr_.raw);
+    encoded_length = field_networkMessage->RAW_encode(IsobusNMMessageTypes::NetworkMessage_descr_, *myleaf.body.node.nodes[7]);
+    myleaf.body.node.nodes[7]->coding_descr = &IsobusNMMessageTypes::NetworkMessage_descr_;
+    break;
+  case ALT_cannotClaimSourceAddress:
+    myleaf.body.node.nodes[8] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 8, IsobusNMMessageTypes::CannotClaimSourceAddress_descr_.raw);
+    encoded_length = field_cannotClaimSourceAddress->RAW_encode(IsobusNMMessageTypes::CannotClaimSourceAddress_descr_, *myleaf.body.node.nodes[8]);
+    myleaf.body.node.nodes[8]->coding_descr = &IsobusNMMessageTypes::CannotClaimSourceAddress_descr_;
+    break;
+  case ALT_addressClaimed:
+    myleaf.body.node.nodes[9] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 9, IsobusNMMessageTypes::AddressClaimed_descr_.raw);
+    encoded_length = field_addressClaimed->RAW_encode(IsobusNMMessageTypes::AddressClaimed_descr_, *myleaf.body.node.nodes[9]);
+    myleaf.body.node.nodes[9]->coding_descr = &IsobusNMMessageTypes::AddressClaimed_descr_;
+    break;
+  case ALT_commandedAddress:
+    myleaf.body.node.nodes[10] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 10, IsobusNMMessageTypes::CommandedAddress_descr_.raw);
+    encoded_length = field_commandedAddress->RAW_encode(IsobusNMMessageTypes::CommandedAddress_descr_, *myleaf.body.node.nodes[10]);
+    myleaf.body.node.nodes[10]->coding_descr = &IsobusNMMessageTypes::CommandedAddress_descr_;
+    break;
+  default:
+    TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
+  }
+  return encoded_length;
+}
+
+void AnyIsoBusPdu_template::copy_value(const AnyIsoBusPdu& other_value)
+{
+single_value.union_selection = other_value.get_selection();
+switch (single_value.union_selection) {
+case AnyIsoBusPdu::ALT_etp__dt:
+single_value.field_etp__dt = new IsobusCMMessageTypes::ETP__DT_template(other_value.etp__dt());
+break;
+case AnyIsoBusPdu::ALT_etp__cm:
+single_value.field_etp__cm = new IsobusCMMessageTypes::ETP__CM_template(other_value.etp__cm());
+break;
+case AnyIsoBusPdu::ALT_vt2ecu:
+single_value.field_vt2ecu = new IsobusVTMessageTypes::VT2ECU_template(other_value.vt2ecu());
+break;
+case AnyIsoBusPdu::ALT_ecu2vt:
+single_value.field_ecu2vt = new IsobusVTMessageTypes::ECU2VT_template(other_value.ecu2vt());
+break;
+case AnyIsoBusPdu::ALT_requestForAddressClaimed:
+single_value.field_requestForAddressClaimed = new IsobusNMMessageTypes::RequestForAddressClaimed_template(other_value.requestForAddressClaimed());
+break;
+case AnyIsoBusPdu::ALT_tp__dt:
+single_value.field_tp__dt = new IsobusCMMessageTypes::TP__DT_template(other_value.tp__dt());
+break;
+case AnyIsoBusPdu::ALT_tp__cm:
+single_value.field_tp__cm = new IsobusCMMessageTypes::TP__CM_template(other_value.tp__cm());
+break;
+case AnyIsoBusPdu::ALT_networkMessage:
+single_value.field_networkMessage = new IsobusNMMessageTypes::NetworkMessage_template(other_value.networkMessage());
+break;
+case AnyIsoBusPdu::ALT_cannotClaimSourceAddress:
+single_value.field_cannotClaimSourceAddress = new IsobusNMMessageTypes::CannotClaimSourceAddress_template(other_value.cannotClaimSourceAddress());
+break;
+case AnyIsoBusPdu::ALT_addressClaimed:
+single_value.field_addressClaimed = new IsobusNMMessageTypes::AddressClaimed_template(other_value.addressClaimed());
+break;
+case AnyIsoBusPdu::ALT_commandedAddress:
+single_value.field_commandedAddress = new IsobusNMMessageTypes::CommandedAddress_template(other_value.commandedAddress());
+break;
+default:
+TTCN_error("Initializing a template with an unbound value of type @Isobus.AnyIsoBusPdu.");
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void AnyIsoBusPdu_template::copy_template(const AnyIsoBusPdu_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 AnyIsoBusPdu::ALT_etp__dt:
+single_value.field_etp__dt = new IsobusCMMessageTypes::ETP__DT_template(*other_value.single_value.field_etp__dt);
+break;
+case AnyIsoBusPdu::ALT_etp__cm:
+single_value.field_etp__cm = new IsobusCMMessageTypes::ETP__CM_template(*other_value.single_value.field_etp__cm);
+break;
+case AnyIsoBusPdu::ALT_vt2ecu:
+single_value.field_vt2ecu = new IsobusVTMessageTypes::VT2ECU_template(*other_value.single_value.field_vt2ecu);
+break;
+case AnyIsoBusPdu::ALT_ecu2vt:
+single_value.field_ecu2vt = new IsobusVTMessageTypes::ECU2VT_template(*other_value.single_value.field_ecu2vt);
+break;
+case AnyIsoBusPdu::ALT_requestForAddressClaimed:
+single_value.field_requestForAddressClaimed = new IsobusNMMessageTypes::RequestForAddressClaimed_template(*other_value.single_value.field_requestForAddressClaimed);
+break;
+case AnyIsoBusPdu::ALT_tp__dt:
+single_value.field_tp__dt = new IsobusCMMessageTypes::TP__DT_template(*other_value.single_value.field_tp__dt);
+break;
+case AnyIsoBusPdu::ALT_tp__cm:
+single_value.field_tp__cm = new IsobusCMMessageTypes::TP__CM_template(*other_value.single_value.field_tp__cm);
+break;
+case AnyIsoBusPdu::ALT_networkMessage:
+single_value.field_networkMessage = new IsobusNMMessageTypes::NetworkMessage_template(*other_value.single_value.field_networkMessage);
+break;
+case AnyIsoBusPdu::ALT_cannotClaimSourceAddress:
+single_value.field_cannotClaimSourceAddress = new IsobusNMMessageTypes::CannotClaimSourceAddress_template(*other_value.single_value.field_cannotClaimSourceAddress);
+break;
+case AnyIsoBusPdu::ALT_addressClaimed:
+single_value.field_addressClaimed = new IsobusNMMessageTypes::AddressClaimed_template(*other_value.single_value.field_addressClaimed);
+break;
+case AnyIsoBusPdu::ALT_commandedAddress:
+single_value.field_commandedAddress = new IsobusNMMessageTypes::CommandedAddress_template(*other_value.single_value.field_commandedAddress);
+break;
+default:
+TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @Isobus.AnyIsoBusPdu.");
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new AnyIsoBusPdu_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;
+default:
+TTCN_error("Copying an uninitialized template of union type @Isobus.AnyIsoBusPdu.");
+}
+set_selection(other_value);
+}
+
+AnyIsoBusPdu_template::AnyIsoBusPdu_template()
+{
+}
+
+AnyIsoBusPdu_template::AnyIsoBusPdu_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+AnyIsoBusPdu_template::AnyIsoBusPdu_template(const AnyIsoBusPdu& other_value)
+{
+copy_value(other_value);
+}
+
+AnyIsoBusPdu_template::AnyIsoBusPdu_template(const OPTIONAL<AnyIsoBusPdu>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const AnyIsoBusPdu&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of union type @Isobus.AnyIsoBusPdu from an unbound optional field.");
+}
+}
+
+AnyIsoBusPdu_template::AnyIsoBusPdu_template(const AnyIsoBusPdu_template& other_value)
+: Base_Template(){
+copy_template(other_value);
+}
+
+AnyIsoBusPdu_template::~AnyIsoBusPdu_template()
+{
+clean_up();
+}
+
+void AnyIsoBusPdu_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case AnyIsoBusPdu::ALT_etp__dt:
+delete single_value.field_etp__dt;
+break;
+case AnyIsoBusPdu::ALT_etp__cm:
+delete single_value.field_etp__cm;
+break;
+case AnyIsoBusPdu::ALT_vt2ecu:
+delete single_value.field_vt2ecu;
+break;
+case AnyIsoBusPdu::ALT_ecu2vt:
+delete single_value.field_ecu2vt;
+break;
+case AnyIsoBusPdu::ALT_requestForAddressClaimed:
+delete single_value.field_requestForAddressClaimed;
+break;
+case AnyIsoBusPdu::ALT_tp__dt:
+delete single_value.field_tp__dt;
+break;
+case AnyIsoBusPdu::ALT_tp__cm:
+delete single_value.field_tp__cm;
+break;
+case AnyIsoBusPdu::ALT_networkMessage:
+delete single_value.field_networkMessage;
+break;
+case AnyIsoBusPdu::ALT_cannotClaimSourceAddress:
+delete single_value.field_cannotClaimSourceAddress;
+break;
+case AnyIsoBusPdu::ALT_addressClaimed:
+delete single_value.field_addressClaimed;
+break;
+case AnyIsoBusPdu::ALT_commandedAddress:
+delete single_value.field_commandedAddress;
+default:
+break;
+}
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+AnyIsoBusPdu_template& AnyIsoBusPdu_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+AnyIsoBusPdu_template& AnyIsoBusPdu_template::operator=(const AnyIsoBusPdu& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+AnyIsoBusPdu_template& AnyIsoBusPdu_template::operator=(const OPTIONAL<AnyIsoBusPdu>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const AnyIsoBusPdu&)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 @Isobus.AnyIsoBusPdu.");
+}
+return *this;
+}
+
+AnyIsoBusPdu_template& AnyIsoBusPdu_template::operator=(const AnyIsoBusPdu_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean AnyIsoBusPdu_template::match(const AnyIsoBusPdu& 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:
+{
+AnyIsoBusPdu::union_selection_type value_selection = other_value.get_selection();
+if (value_selection == AnyIsoBusPdu::UNBOUND_VALUE) return FALSE;
+if (value_selection != single_value.union_selection) return FALSE;
+switch (value_selection) {
+case AnyIsoBusPdu::ALT_etp__dt:
+return single_value.field_etp__dt->match(other_value.etp__dt(), legacy);
+case AnyIsoBusPdu::ALT_etp__cm:
+return single_value.field_etp__cm->match(other_value.etp__cm(), legacy);
+case AnyIsoBusPdu::ALT_vt2ecu:
+return single_value.field_vt2ecu->match(other_value.vt2ecu(), legacy);
+case AnyIsoBusPdu::ALT_ecu2vt:
+return single_value.field_ecu2vt->match(other_value.ecu2vt(), legacy);
+case AnyIsoBusPdu::ALT_requestForAddressClaimed:
+return single_value.field_requestForAddressClaimed->match(other_value.requestForAddressClaimed(), legacy);
+case AnyIsoBusPdu::ALT_tp__dt:
+return single_value.field_tp__dt->match(other_value.tp__dt(), legacy);
+case AnyIsoBusPdu::ALT_tp__cm:
+return single_value.field_tp__cm->match(other_value.tp__cm(), legacy);
+case AnyIsoBusPdu::ALT_networkMessage:
+return single_value.field_networkMessage->match(other_value.networkMessage(), legacy);
+case AnyIsoBusPdu::ALT_cannotClaimSourceAddress:
+return single_value.field_cannotClaimSourceAddress->match(other_value.cannotClaimSourceAddress(), legacy);
+case AnyIsoBusPdu::ALT_addressClaimed:
+return single_value.field_addressClaimed->match(other_value.addressClaimed(), legacy);
+case AnyIsoBusPdu::ALT_commandedAddress:
+return single_value.field_commandedAddress->match(other_value.commandedAddress(), legacy);
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @Isobus.AnyIsoBusPdu.");
+}
+}
+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;
+default:
+TTCN_error ("Matching an uninitialized template of union type @Isobus.AnyIsoBusPdu.");
+}
+return FALSE;
+}
+
+boolean AnyIsoBusPdu_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+switch (single_value.union_selection) {
+case AnyIsoBusPdu::ALT_etp__dt:
+return single_value.field_etp__dt->is_value();
+case AnyIsoBusPdu::ALT_etp__cm:
+return single_value.field_etp__cm->is_value();
+case AnyIsoBusPdu::ALT_vt2ecu:
+return single_value.field_vt2ecu->is_value();
+case AnyIsoBusPdu::ALT_ecu2vt:
+return single_value.field_ecu2vt->is_value();
+case AnyIsoBusPdu::ALT_requestForAddressClaimed:
+return single_value.field_requestForAddressClaimed->is_value();
+case AnyIsoBusPdu::ALT_tp__dt:
+return single_value.field_tp__dt->is_value();
+case AnyIsoBusPdu::ALT_tp__cm:
+return single_value.field_tp__cm->is_value();
+case AnyIsoBusPdu::ALT_networkMessage:
+return single_value.field_networkMessage->is_value();
+case AnyIsoBusPdu::ALT_cannotClaimSourceAddress:
+return single_value.field_cannotClaimSourceAddress->is_value();
+case AnyIsoBusPdu::ALT_addressClaimed:
+return single_value.field_addressClaimed->is_value();
+case AnyIsoBusPdu::ALT_commandedAddress:
+return single_value.field_commandedAddress->is_value();
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @Isobus.AnyIsoBusPdu.");
+}
+}
+
+AnyIsoBusPdu AnyIsoBusPdu_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 @Isobus.AnyIsoBusPdu.");
+AnyIsoBusPdu ret_val;
+switch (single_value.union_selection) {
+case AnyIsoBusPdu::ALT_etp__dt:
+ret_val.etp__dt() = single_value.field_etp__dt->valueof();
+break;
+case AnyIsoBusPdu::ALT_etp__cm:
+ret_val.etp__cm() = single_value.field_etp__cm->valueof();
+break;
+case AnyIsoBusPdu::ALT_vt2ecu:
+ret_val.vt2ecu() = single_value.field_vt2ecu->valueof();
+break;
+case AnyIsoBusPdu::ALT_ecu2vt:
+ret_val.ecu2vt() = single_value.field_ecu2vt->valueof();
+break;
+case AnyIsoBusPdu::ALT_requestForAddressClaimed:
+ret_val.requestForAddressClaimed() = single_value.field_requestForAddressClaimed->valueof();
+break;
+case AnyIsoBusPdu::ALT_tp__dt:
+ret_val.tp__dt() = single_value.field_tp__dt->valueof();
+break;
+case AnyIsoBusPdu::ALT_tp__cm:
+ret_val.tp__cm() = single_value.field_tp__cm->valueof();
+break;
+case AnyIsoBusPdu::ALT_networkMessage:
+ret_val.networkMessage() = single_value.field_networkMessage->valueof();
+break;
+case AnyIsoBusPdu::ALT_cannotClaimSourceAddress:
+ret_val.cannotClaimSourceAddress() = single_value.field_cannotClaimSourceAddress->valueof();
+break;
+case AnyIsoBusPdu::ALT_addressClaimed:
+ret_val.addressClaimed() = single_value.field_addressClaimed->valueof();
+break;
+case AnyIsoBusPdu::ALT_commandedAddress:
+ret_val.commandedAddress() = single_value.field_commandedAddress->valueof();
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @Isobus.AnyIsoBusPdu.");
+}
+return ret_val;
+}
+
+AnyIsoBusPdu_template& AnyIsoBusPdu_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @Isobus.AnyIsoBusPdu.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @Isobus.AnyIsoBusPdu.");
+return value_list.list_value[list_index];
+}
+void AnyIsoBusPdu_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error ("Internal error: Setting an invalid list for a template of union type @Isobus.AnyIsoBusPdu.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new AnyIsoBusPdu_template[list_length];
+}
+
+IsobusCMMessageTypes::ETP__DT_template& AnyIsoBusPdu_template::etp__dt()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != AnyIsoBusPdu::ALT_etp__dt) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_etp__dt = new IsobusCMMessageTypes::ETP__DT_template(ANY_VALUE);
+else single_value.field_etp__dt = new IsobusCMMessageTypes::ETP__DT_template;
+single_value.union_selection = AnyIsoBusPdu::ALT_etp__dt;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_etp__dt;
+}
+
+const IsobusCMMessageTypes::ETP__DT_template& AnyIsoBusPdu_template::etp__dt() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field etp_dt in a non-specific template of union type @Isobus.AnyIsoBusPdu.");
+if (single_value.union_selection != AnyIsoBusPdu::ALT_etp__dt) TTCN_error("Accessing non-selected field etp_dt in a template of union type @Isobus.AnyIsoBusPdu.");
+return *single_value.field_etp__dt;
+}
+
+IsobusCMMessageTypes::ETP__CM_template& AnyIsoBusPdu_template::etp__cm()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != AnyIsoBusPdu::ALT_etp__cm) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_etp__cm = new IsobusCMMessageTypes::ETP__CM_template(ANY_VALUE);
+else single_value.field_etp__cm = new IsobusCMMessageTypes::ETP__CM_template;
+single_value.union_selection = AnyIsoBusPdu::ALT_etp__cm;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_etp__cm;
+}
+
+const IsobusCMMessageTypes::ETP__CM_template& AnyIsoBusPdu_template::etp__cm() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field etp_cm in a non-specific template of union type @Isobus.AnyIsoBusPdu.");
+if (single_value.union_selection != AnyIsoBusPdu::ALT_etp__cm) TTCN_error("Accessing non-selected field etp_cm in a template of union type @Isobus.AnyIsoBusPdu.");
+return *single_value.field_etp__cm;
+}
+
+IsobusVTMessageTypes::VT2ECU_template& AnyIsoBusPdu_template::vt2ecu()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != AnyIsoBusPdu::ALT_vt2ecu) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_vt2ecu = new IsobusVTMessageTypes::VT2ECU_template(ANY_VALUE);
+else single_value.field_vt2ecu = new IsobusVTMessageTypes::VT2ECU_template;
+single_value.union_selection = AnyIsoBusPdu::ALT_vt2ecu;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_vt2ecu;
+}
+
+const IsobusVTMessageTypes::VT2ECU_template& AnyIsoBusPdu_template::vt2ecu() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field vt2ecu in a non-specific template of union type @Isobus.AnyIsoBusPdu.");
+if (single_value.union_selection != AnyIsoBusPdu::ALT_vt2ecu) TTCN_error("Accessing non-selected field vt2ecu in a template of union type @Isobus.AnyIsoBusPdu.");
+return *single_value.field_vt2ecu;
+}
+
+IsobusVTMessageTypes::ECU2VT_template& AnyIsoBusPdu_template::ecu2vt()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != AnyIsoBusPdu::ALT_ecu2vt) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_ecu2vt = new IsobusVTMessageTypes::ECU2VT_template(ANY_VALUE);
+else single_value.field_ecu2vt = new IsobusVTMessageTypes::ECU2VT_template;
+single_value.union_selection = AnyIsoBusPdu::ALT_ecu2vt;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_ecu2vt;
+}
+
+const IsobusVTMessageTypes::ECU2VT_template& AnyIsoBusPdu_template::ecu2vt() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field ecu2vt in a non-specific template of union type @Isobus.AnyIsoBusPdu.");
+if (single_value.union_selection != AnyIsoBusPdu::ALT_ecu2vt) TTCN_error("Accessing non-selected field ecu2vt in a template of union type @Isobus.AnyIsoBusPdu.");
+return *single_value.field_ecu2vt;
+}
+
+IsobusNMMessageTypes::RequestForAddressClaimed_template& AnyIsoBusPdu_template::requestForAddressClaimed()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != AnyIsoBusPdu::ALT_requestForAddressClaimed) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_requestForAddressClaimed = new IsobusNMMessageTypes::RequestForAddressClaimed_template(ANY_VALUE);
+else single_value.field_requestForAddressClaimed = new IsobusNMMessageTypes::RequestForAddressClaimed_template;
+single_value.union_selection = AnyIsoBusPdu::ALT_requestForAddressClaimed;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_requestForAddressClaimed;
+}
+
+const IsobusNMMessageTypes::RequestForAddressClaimed_template& AnyIsoBusPdu_template::requestForAddressClaimed() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field requestForAddressClaimed in a non-specific template of union type @Isobus.AnyIsoBusPdu.");
+if (single_value.union_selection != AnyIsoBusPdu::ALT_requestForAddressClaimed) TTCN_error("Accessing non-selected field requestForAddressClaimed in a template of union type @Isobus.AnyIsoBusPdu.");
+return *single_value.field_requestForAddressClaimed;
+}
+
+IsobusCMMessageTypes::TP__DT_template& AnyIsoBusPdu_template::tp__dt()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != AnyIsoBusPdu::ALT_tp__dt) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_tp__dt = new IsobusCMMessageTypes::TP__DT_template(ANY_VALUE);
+else single_value.field_tp__dt = new IsobusCMMessageTypes::TP__DT_template;
+single_value.union_selection = AnyIsoBusPdu::ALT_tp__dt;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_tp__dt;
+}
+
+const IsobusCMMessageTypes::TP__DT_template& AnyIsoBusPdu_template::tp__dt() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field tp_dt in a non-specific template of union type @Isobus.AnyIsoBusPdu.");
+if (single_value.union_selection != AnyIsoBusPdu::ALT_tp__dt) TTCN_error("Accessing non-selected field tp_dt in a template of union type @Isobus.AnyIsoBusPdu.");
+return *single_value.field_tp__dt;
+}
+
+IsobusCMMessageTypes::TP__CM_template& AnyIsoBusPdu_template::tp__cm()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != AnyIsoBusPdu::ALT_tp__cm) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_tp__cm = new IsobusCMMessageTypes::TP__CM_template(ANY_VALUE);
+else single_value.field_tp__cm = new IsobusCMMessageTypes::TP__CM_template;
+single_value.union_selection = AnyIsoBusPdu::ALT_tp__cm;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_tp__cm;
+}
+
+const IsobusCMMessageTypes::TP__CM_template& AnyIsoBusPdu_template::tp__cm() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field tp_cm in a non-specific template of union type @Isobus.AnyIsoBusPdu.");
+if (single_value.union_selection != AnyIsoBusPdu::ALT_tp__cm) TTCN_error("Accessing non-selected field tp_cm in a template of union type @Isobus.AnyIsoBusPdu.");
+return *single_value.field_tp__cm;
+}
+
+IsobusNMMessageTypes::NetworkMessage_template& AnyIsoBusPdu_template::networkMessage()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != AnyIsoBusPdu::ALT_networkMessage) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_networkMessage = new IsobusNMMessageTypes::NetworkMessage_template(ANY_VALUE);
+else single_value.field_networkMessage = new IsobusNMMessageTypes::NetworkMessage_template;
+single_value.union_selection = AnyIsoBusPdu::ALT_networkMessage;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_networkMessage;
+}
+
+const IsobusNMMessageTypes::NetworkMessage_template& AnyIsoBusPdu_template::networkMessage() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field networkMessage in a non-specific template of union type @Isobus.AnyIsoBusPdu.");
+if (single_value.union_selection != AnyIsoBusPdu::ALT_networkMessage) TTCN_error("Accessing non-selected field networkMessage in a template of union type @Isobus.AnyIsoBusPdu.");
+return *single_value.field_networkMessage;
+}
+
+IsobusNMMessageTypes::CannotClaimSourceAddress_template& AnyIsoBusPdu_template::cannotClaimSourceAddress()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != AnyIsoBusPdu::ALT_cannotClaimSourceAddress) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_cannotClaimSourceAddress = new IsobusNMMessageTypes::CannotClaimSourceAddress_template(ANY_VALUE);
+else single_value.field_cannotClaimSourceAddress = new IsobusNMMessageTypes::CannotClaimSourceAddress_template;
+single_value.union_selection = AnyIsoBusPdu::ALT_cannotClaimSourceAddress;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_cannotClaimSourceAddress;
+}
+
+const IsobusNMMessageTypes::CannotClaimSourceAddress_template& AnyIsoBusPdu_template::cannotClaimSourceAddress() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field cannotClaimSourceAddress in a non-specific template of union type @Isobus.AnyIsoBusPdu.");
+if (single_value.union_selection != AnyIsoBusPdu::ALT_cannotClaimSourceAddress) TTCN_error("Accessing non-selected field cannotClaimSourceAddress in a template of union type @Isobus.AnyIsoBusPdu.");
+return *single_value.field_cannotClaimSourceAddress;
+}
+
+IsobusNMMessageTypes::AddressClaimed_template& AnyIsoBusPdu_template::addressClaimed()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != AnyIsoBusPdu::ALT_addressClaimed) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_addressClaimed = new IsobusNMMessageTypes::AddressClaimed_template(ANY_VALUE);
+else single_value.field_addressClaimed = new IsobusNMMessageTypes::AddressClaimed_template;
+single_value.union_selection = AnyIsoBusPdu::ALT_addressClaimed;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_addressClaimed;
+}
+
+const IsobusNMMessageTypes::AddressClaimed_template& AnyIsoBusPdu_template::addressClaimed() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field addressClaimed in a non-specific template of union type @Isobus.AnyIsoBusPdu.");
+if (single_value.union_selection != AnyIsoBusPdu::ALT_addressClaimed) TTCN_error("Accessing non-selected field addressClaimed in a template of union type @Isobus.AnyIsoBusPdu.");
+return *single_value.field_addressClaimed;
+}
+
+IsobusNMMessageTypes::CommandedAddress_template& AnyIsoBusPdu_template::commandedAddress()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != AnyIsoBusPdu::ALT_commandedAddress) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_commandedAddress = new IsobusNMMessageTypes::CommandedAddress_template(ANY_VALUE);
+else single_value.field_commandedAddress = new IsobusNMMessageTypes::CommandedAddress_template;
+single_value.union_selection = AnyIsoBusPdu::ALT_commandedAddress;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_commandedAddress;
+}
+
+const IsobusNMMessageTypes::CommandedAddress_template& AnyIsoBusPdu_template::commandedAddress() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field commandedAddress in a non-specific template of union type @Isobus.AnyIsoBusPdu.");
+if (single_value.union_selection != AnyIsoBusPdu::ALT_commandedAddress) TTCN_error("Accessing non-selected field commandedAddress in a template of union type @Isobus.AnyIsoBusPdu.");
+return *single_value.field_commandedAddress;
+}
+
+boolean AnyIsoBusPdu_template::ischosen(AnyIsoBusPdu::union_selection_type checked_selection) const
+{
+if (checked_selection == AnyIsoBusPdu::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @Isobus.AnyIsoBusPdu.");
+switch (template_selection) {
+case SPECIFIC_VALUE:
+if (single_value.union_selection == AnyIsoBusPdu::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @Isobus.AnyIsoBusPdu.");
+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 @Isobus.AnyIsoBusPdu 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 AnyIsoBusPdu_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case AnyIsoBusPdu::ALT_etp__dt:
+TTCN_Logger::log_event_str("{ etp_dt := ");
+single_value.field_etp__dt->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case AnyIsoBusPdu::ALT_etp__cm:
+TTCN_Logger::log_event_str("{ etp_cm := ");
+single_value.field_etp__cm->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case AnyIsoBusPdu::ALT_vt2ecu:
+TTCN_Logger::log_event_str("{ vt2ecu := ");
+single_value.field_vt2ecu->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case AnyIsoBusPdu::ALT_ecu2vt:
+TTCN_Logger::log_event_str("{ ecu2vt := ");
+single_value.field_ecu2vt->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case AnyIsoBusPdu::ALT_requestForAddressClaimed:
+TTCN_Logger::log_event_str("{ requestForAddressClaimed := ");
+single_value.field_requestForAddressClaimed->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case AnyIsoBusPdu::ALT_tp__dt:
+TTCN_Logger::log_event_str("{ tp_dt := ");
+single_value.field_tp__dt->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case AnyIsoBusPdu::ALT_tp__cm:
+TTCN_Logger::log_event_str("{ tp_cm := ");
+single_value.field_tp__cm->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case AnyIsoBusPdu::ALT_networkMessage:
+TTCN_Logger::log_event_str("{ networkMessage := ");
+single_value.field_networkMessage->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case AnyIsoBusPdu::ALT_cannotClaimSourceAddress:
+TTCN_Logger::log_event_str("{ cannotClaimSourceAddress := ");
+single_value.field_cannotClaimSourceAddress->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case AnyIsoBusPdu::ALT_addressClaimed:
+TTCN_Logger::log_event_str("{ addressClaimed := ");
+single_value.field_addressClaimed->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case AnyIsoBusPdu::ALT_commandedAddress:
+TTCN_Logger::log_event_str("{ commandedAddress := ");
+single_value.field_commandedAddress->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 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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void AnyIsoBusPdu_template::log_match(const AnyIsoBusPdu& 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()) {
+switch (single_value.union_selection) {
+case AnyIsoBusPdu::ALT_etp__dt:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".etp_dt");
+single_value.field_etp__dt->log_match(match_value.etp__dt(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ etp_dt := ");
+single_value.field_etp__dt->log_match(match_value.etp__dt(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case AnyIsoBusPdu::ALT_etp__cm:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".etp_cm");
+single_value.field_etp__cm->log_match(match_value.etp__cm(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ etp_cm := ");
+single_value.field_etp__cm->log_match(match_value.etp__cm(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case AnyIsoBusPdu::ALT_vt2ecu:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".vt2ecu");
+single_value.field_vt2ecu->log_match(match_value.vt2ecu(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ vt2ecu := ");
+single_value.field_vt2ecu->log_match(match_value.vt2ecu(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case AnyIsoBusPdu::ALT_ecu2vt:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".ecu2vt");
+single_value.field_ecu2vt->log_match(match_value.ecu2vt(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ ecu2vt := ");
+single_value.field_ecu2vt->log_match(match_value.ecu2vt(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case AnyIsoBusPdu::ALT_requestForAddressClaimed:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".requestForAddressClaimed");
+single_value.field_requestForAddressClaimed->log_match(match_value.requestForAddressClaimed(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ requestForAddressClaimed := ");
+single_value.field_requestForAddressClaimed->log_match(match_value.requestForAddressClaimed(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case AnyIsoBusPdu::ALT_tp__dt:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".tp_dt");
+single_value.field_tp__dt->log_match(match_value.tp__dt(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ tp_dt := ");
+single_value.field_tp__dt->log_match(match_value.tp__dt(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case AnyIsoBusPdu::ALT_tp__cm:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".tp_cm");
+single_value.field_tp__cm->log_match(match_value.tp__cm(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ tp_cm := ");
+single_value.field_tp__cm->log_match(match_value.tp__cm(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case AnyIsoBusPdu::ALT_networkMessage:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".networkMessage");
+single_value.field_networkMessage->log_match(match_value.networkMessage(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ networkMessage := ");
+single_value.field_networkMessage->log_match(match_value.networkMessage(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case AnyIsoBusPdu::ALT_cannotClaimSourceAddress:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".cannotClaimSourceAddress");
+single_value.field_cannotClaimSourceAddress->log_match(match_value.cannotClaimSourceAddress(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ cannotClaimSourceAddress := ");
+single_value.field_cannotClaimSourceAddress->log_match(match_value.cannotClaimSourceAddress(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case AnyIsoBusPdu::ALT_addressClaimed:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".addressClaimed");
+single_value.field_addressClaimed->log_match(match_value.addressClaimed(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ addressClaimed := ");
+single_value.field_addressClaimed->log_match(match_value.addressClaimed(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case AnyIsoBusPdu::ALT_commandedAddress:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".commandedAddress");
+single_value.field_commandedAddress->log_match(match_value.commandedAddress(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ commandedAddress := ");
+single_value.field_commandedAddress->log_match(match_value.commandedAddress(), 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 AnyIsoBusPdu_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 AnyIsoBusPdu::ALT_etp__dt:
+single_value.field_etp__dt->encode_text(text_buf);
+break;
+case AnyIsoBusPdu::ALT_etp__cm:
+single_value.field_etp__cm->encode_text(text_buf);
+break;
+case AnyIsoBusPdu::ALT_vt2ecu:
+single_value.field_vt2ecu->encode_text(text_buf);
+break;
+case AnyIsoBusPdu::ALT_ecu2vt:
+single_value.field_ecu2vt->encode_text(text_buf);
+break;
+case AnyIsoBusPdu::ALT_requestForAddressClaimed:
+single_value.field_requestForAddressClaimed->encode_text(text_buf);
+break;
+case AnyIsoBusPdu::ALT_tp__dt:
+single_value.field_tp__dt->encode_text(text_buf);
+break;
+case AnyIsoBusPdu::ALT_tp__cm:
+single_value.field_tp__cm->encode_text(text_buf);
+break;
+case AnyIsoBusPdu::ALT_networkMessage:
+single_value.field_networkMessage->encode_text(text_buf);
+break;
+case AnyIsoBusPdu::ALT_cannotClaimSourceAddress:
+single_value.field_cannotClaimSourceAddress->encode_text(text_buf);
+break;
+case AnyIsoBusPdu::ALT_addressClaimed:
+single_value.field_addressClaimed->encode_text(text_buf);
+break;
+case AnyIsoBusPdu::ALT_commandedAddress:
+single_value.field_commandedAddress->encode_text(text_buf);
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @Isobus.AnyIsoBusPdu.");
+}
+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 @Isobus.AnyIsoBusPdu.");
+}
+}
+
+void AnyIsoBusPdu_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+{
+single_value.union_selection = AnyIsoBusPdu::UNBOUND_VALUE;
+AnyIsoBusPdu::union_selection_type new_selection = (AnyIsoBusPdu::union_selection_type)text_buf.pull_int().get_val();
+switch (new_selection) {
+case AnyIsoBusPdu::ALT_etp__dt:
+single_value.field_etp__dt = new IsobusCMMessageTypes::ETP__DT_template;
+single_value.field_etp__dt->decode_text(text_buf);
+break;
+case AnyIsoBusPdu::ALT_etp__cm:
+single_value.field_etp__cm = new IsobusCMMessageTypes::ETP__CM_template;
+single_value.field_etp__cm->decode_text(text_buf);
+break;
+case AnyIsoBusPdu::ALT_vt2ecu:
+single_value.field_vt2ecu = new IsobusVTMessageTypes::VT2ECU_template;
+single_value.field_vt2ecu->decode_text(text_buf);
+break;
+case AnyIsoBusPdu::ALT_ecu2vt:
+single_value.field_ecu2vt = new IsobusVTMessageTypes::ECU2VT_template;
+single_value.field_ecu2vt->decode_text(text_buf);
+break;
+case AnyIsoBusPdu::ALT_requestForAddressClaimed:
+single_value.field_requestForAddressClaimed = new IsobusNMMessageTypes::RequestForAddressClaimed_template;
+single_value.field_requestForAddressClaimed->decode_text(text_buf);
+break;
+case AnyIsoBusPdu::ALT_tp__dt:
+single_value.field_tp__dt = new IsobusCMMessageTypes::TP__DT_template;
+single_value.field_tp__dt->decode_text(text_buf);
+break;
+case AnyIsoBusPdu::ALT_tp__cm:
+single_value.field_tp__cm = new IsobusCMMessageTypes::TP__CM_template;
+single_value.field_tp__cm->decode_text(text_buf);
+break;
+case AnyIsoBusPdu::ALT_networkMessage:
+single_value.field_networkMessage = new IsobusNMMessageTypes::NetworkMessage_template;
+single_value.field_networkMessage->decode_text(text_buf);
+break;
+case AnyIsoBusPdu::ALT_cannotClaimSourceAddress:
+single_value.field_cannotClaimSourceAddress = new IsobusNMMessageTypes::CannotClaimSourceAddress_template;
+single_value.field_cannotClaimSourceAddress->decode_text(text_buf);
+break;
+case AnyIsoBusPdu::ALT_addressClaimed:
+single_value.field_addressClaimed = new IsobusNMMessageTypes::AddressClaimed_template;
+single_value.field_addressClaimed->decode_text(text_buf);
+break;
+case AnyIsoBusPdu::ALT_commandedAddress:
+single_value.field_commandedAddress = new IsobusNMMessageTypes::CommandedAddress_template;
+single_value.field_commandedAddress->decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @Isobus.AnyIsoBusPdu.");
+}
+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 AnyIsoBusPdu_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 @Isobus.AnyIsoBusPdu.");
+}
+}
+
+boolean AnyIsoBusPdu_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean AnyIsoBusPdu_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 AnyIsoBusPdu_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 `@Isobus.AnyIsoBusPdu'");
+    }
+    if (strcmp("etp_dt", param_field) == 0) {
+      etp__dt().set_param(param);
+      return;
+    } else if (strcmp("etp_cm", param_field) == 0) {
+      etp__cm().set_param(param);
+      return;
+    } else if (strcmp("vt2ecu", param_field) == 0) {
+      vt2ecu().set_param(param);
+      return;
+    } else if (strcmp("ecu2vt", param_field) == 0) {
+      ecu2vt().set_param(param);
+      return;
+    } else if (strcmp("requestForAddressClaimed", param_field) == 0) {
+      requestForAddressClaimed().set_param(param);
+      return;
+    } else if (strcmp("tp_dt", param_field) == 0) {
+      tp__dt().set_param(param);
+      return;
+    } else if (strcmp("tp_cm", param_field) == 0) {
+      tp__cm().set_param(param);
+      return;
+    } else if (strcmp("networkMessage", param_field) == 0) {
+      networkMessage().set_param(param);
+      return;
+    } else if (strcmp("cannotClaimSourceAddress", param_field) == 0) {
+      cannotClaimSourceAddress().set_param(param);
+      return;
+    } else if (strcmp("addressClaimed", param_field) == 0) {
+      addressClaimed().set_param(param);
+      return;
+    } else if (strcmp("commandedAddress", param_field) == 0) {
+      commandedAddress().set_param(param);
+      return;
+    } else param.error("Field `%s' not found in union template type `@Isobus.AnyIsoBusPdu'", 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: {
+    AnyIsoBusPdu_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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", "@Isobus.AnyIsoBusPdu");
+    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, "etp_dt")) {
+      etp__dt().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "etp_cm")) {
+      etp__cm().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "vt2ecu")) {
+      vt2ecu().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "ecu2vt")) {
+      ecu2vt().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "requestForAddressClaimed")) {
+      requestForAddressClaimed().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "tp_dt")) {
+      tp__dt().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "tp_cm")) {
+      tp__cm().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "networkMessage")) {
+      networkMessage().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "cannotClaimSourceAddress")) {
+      cannotClaimSourceAddress().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "addressClaimed")) {
+      addressClaimed().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "commandedAddress")) {
+      commandedAddress().set_param(*mp_last);
+      break;
+    }
+    mp_last->error("Field %s does not exist in type @Isobus.AnyIsoBusPdu.", last_name);
+  } break;
+  default:
+    param.type_error("union template", "@Isobus.AnyIsoBusPdu");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void AnyIsoBusPdu_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 AnyIsoBusPdu::ALT_etp__dt:
+single_value.field_etp__dt->check_restriction(t_res, t_name ? t_name : "@Isobus.AnyIsoBusPdu");
+return;
+case AnyIsoBusPdu::ALT_etp__cm:
+single_value.field_etp__cm->check_restriction(t_res, t_name ? t_name : "@Isobus.AnyIsoBusPdu");
+return;
+case AnyIsoBusPdu::ALT_vt2ecu:
+single_value.field_vt2ecu->check_restriction(t_res, t_name ? t_name : "@Isobus.AnyIsoBusPdu");
+return;
+case AnyIsoBusPdu::ALT_ecu2vt:
+single_value.field_ecu2vt->check_restriction(t_res, t_name ? t_name : "@Isobus.AnyIsoBusPdu");
+return;
+case AnyIsoBusPdu::ALT_requestForAddressClaimed:
+single_value.field_requestForAddressClaimed->check_restriction(t_res, t_name ? t_name : "@Isobus.AnyIsoBusPdu");
+return;
+case AnyIsoBusPdu::ALT_tp__dt:
+single_value.field_tp__dt->check_restriction(t_res, t_name ? t_name : "@Isobus.AnyIsoBusPdu");
+return;
+case AnyIsoBusPdu::ALT_tp__cm:
+single_value.field_tp__cm->check_restriction(t_res, t_name ? t_name : "@Isobus.AnyIsoBusPdu");
+return;
+case AnyIsoBusPdu::ALT_networkMessage:
+single_value.field_networkMessage->check_restriction(t_res, t_name ? t_name : "@Isobus.AnyIsoBusPdu");
+return;
+case AnyIsoBusPdu::ALT_cannotClaimSourceAddress:
+single_value.field_cannotClaimSourceAddress->check_restriction(t_res, t_name ? t_name : "@Isobus.AnyIsoBusPdu");
+return;
+case AnyIsoBusPdu::ALT_addressClaimed:
+single_value.field_addressClaimed->check_restriction(t_res, t_name ? t_name : "@Isobus.AnyIsoBusPdu");
+return;
+case AnyIsoBusPdu::ALT_commandedAddress:
+single_value.field_commandedAddress->check_restriction(t_res, t_name ? t_name : "@Isobus.AnyIsoBusPdu");
+return;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @Isobus.AnyIsoBusPdu.");
+}
+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 : "@Isobus.AnyIsoBusPdu");
+}
+
+CAN__frame__j1939::CAN__frame__j1939()
+{
+}
+
+CAN__frame__j1939::CAN__frame__j1939(const J1939& par_can__j1939,
+    const AnyIsoBusPdu& par_can__pdu)
+  :   field_can__j1939(par_can__j1939),
+  field_can__pdu(par_can__pdu)
+{
+}
+
+CAN__frame__j1939::CAN__frame__j1939(const CAN__frame__j1939& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @Isobus.CAN_frame_j1939.");
+if (other_value.can__j1939().is_bound()) field_can__j1939 = other_value.can__j1939();
+else field_can__j1939.clean_up();
+if (other_value.can__pdu().is_bound()) field_can__pdu = other_value.can__pdu();
+else field_can__pdu.clean_up();
+}
+
+void CAN__frame__j1939::clean_up()
+{
+field_can__j1939.clean_up();
+field_can__pdu.clean_up();
+}
+
+const TTCN_Typedescriptor_t* CAN__frame__j1939::get_descriptor() const { return &CAN__frame__j1939_descr_; }
+CAN__frame__j1939& CAN__frame__j1939::operator=(const CAN__frame__j1939& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @Isobus.CAN_frame_j1939.");
+  if (other_value.can__j1939().is_bound()) field_can__j1939 = other_value.can__j1939();
+  else field_can__j1939.clean_up();
+  if (other_value.can__pdu().is_bound()) field_can__pdu = other_value.can__pdu();
+  else field_can__pdu.clean_up();
+}
+return *this;
+}
+
+boolean CAN__frame__j1939::operator==(const CAN__frame__j1939& other_value) const
+{
+return field_can__j1939==other_value.field_can__j1939
+  && field_can__pdu==other_value.field_can__pdu;
+}
+
+boolean CAN__frame__j1939::is_bound() const
+{
+return (field_can__j1939.is_bound())
+  || (field_can__pdu.is_bound());
+}
+boolean CAN__frame__j1939::is_value() const
+{
+return field_can__j1939.is_value()
+  && field_can__pdu.is_value();
+}
+void CAN__frame__j1939::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ can_j1939 := ");
+field_can__j1939.log();
+TTCN_Logger::log_event_str(", can_pdu := ");
+field_can__pdu.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void CAN__frame__j1939::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 @Isobus.CAN_frame_j1939 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) can__j1939().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) can__pdu().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(), "can_j1939")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          can__j1939().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(), "can_pdu")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          can__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 @Isobus.CAN_frame_j1939: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@Isobus.CAN_frame_j1939");
+  }
+}
+
+void CAN__frame__j1939::set_implicit_omit()
+{
+if (can__j1939().is_bound()) can__j1939().set_implicit_omit();
+if (can__pdu().is_bound()) can__pdu().set_implicit_omit();
+}
+
+void CAN__frame__j1939::encode_text(Text_Buf& text_buf) const
+{
+field_can__j1939.encode_text(text_buf);
+field_can__pdu.encode_text(text_buf);
+}
+
+void CAN__frame__j1939::decode_text(Text_Buf& text_buf)
+{
+field_can__j1939.decode_text(text_buf);
+field_can__pdu.decode_text(text_buf);
+}
+
+void CAN__frame__j1939::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void CAN__frame__j1939::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int CAN__frame__j1939::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, J1939_descr_.raw->forceomit);
+  decoded_field_length = field_can__j1939.RAW_decode(J1939_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, AnyIsoBusPdu_descr_.raw->forceomit);
+  decoded_field_length = field_can__pdu.RAW_decode(AnyIsoBusPdu_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 CAN__frame__j1939::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, J1939_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, AnyIsoBusPdu_descr_.raw);
+  encoded_length += field_can__j1939.RAW_encode(J1939_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_can__pdu.RAW_encode(AnyIsoBusPdu_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct CAN__frame__j1939_template::single_value_struct {
+J1939_template field_can__j1939;
+AnyIsoBusPdu_template field_can__pdu;
+};
+
+void CAN__frame__j1939_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_can__j1939 = ANY_VALUE;
+single_value->field_can__pdu = ANY_VALUE;
+}
+}
+}
+
+void CAN__frame__j1939_template::copy_value(const CAN__frame__j1939& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.can__j1939().is_bound()) {
+  single_value->field_can__j1939 = other_value.can__j1939();
+} else {
+  single_value->field_can__j1939.clean_up();
+}
+if (other_value.can__pdu().is_bound()) {
+  single_value->field_can__pdu = other_value.can__pdu();
+} else {
+  single_value->field_can__pdu.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void CAN__frame__j1939_template::copy_template(const CAN__frame__j1939_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.can__j1939().get_selection()) {
+single_value->field_can__j1939 = other_value.can__j1939();
+} else {
+single_value->field_can__j1939.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.can__pdu().get_selection()) {
+single_value->field_can__pdu = other_value.can__pdu();
+} else {
+single_value->field_can__pdu.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new CAN__frame__j1939_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @Isobus.CAN_frame_j1939.");
+break;
+}
+set_selection(other_value);
+}
+
+CAN__frame__j1939_template::CAN__frame__j1939_template()
+{
+}
+
+CAN__frame__j1939_template::CAN__frame__j1939_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+CAN__frame__j1939_template::CAN__frame__j1939_template(const CAN__frame__j1939& other_value)
+{
+copy_value(other_value);
+}
+
+CAN__frame__j1939_template::CAN__frame__j1939_template(const OPTIONAL<CAN__frame__j1939>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CAN__frame__j1939&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @Isobus.CAN_frame_j1939 from an unbound optional field.");
+}
+}
+
+CAN__frame__j1939_template::CAN__frame__j1939_template(const CAN__frame__j1939_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+CAN__frame__j1939_template::~CAN__frame__j1939_template()
+{
+clean_up();
+}
+
+CAN__frame__j1939_template& CAN__frame__j1939_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+CAN__frame__j1939_template& CAN__frame__j1939_template::operator=(const CAN__frame__j1939& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+CAN__frame__j1939_template& CAN__frame__j1939_template::operator=(const OPTIONAL<CAN__frame__j1939>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CAN__frame__j1939&)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 @Isobus.CAN_frame_j1939.");
+}
+return *this;
+}
+
+CAN__frame__j1939_template& CAN__frame__j1939_template::operator=(const CAN__frame__j1939_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean CAN__frame__j1939_template::match(const CAN__frame__j1939& 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.can__j1939().is_bound()) return FALSE;
+if(!single_value->field_can__j1939.match(other_value.can__j1939(), legacy))return FALSE;
+if(!other_value.can__pdu().is_bound()) return FALSE;
+if(!single_value->field_can__pdu.match(other_value.can__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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @Isobus.CAN_frame_j1939.");
+}
+return FALSE;
+}
+
+boolean CAN__frame__j1939_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_can__j1939.is_bound()
+
+ ||single_value->field_can__pdu.is_bound()
+;
+}
+
+boolean CAN__frame__j1939_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_can__j1939.is_value()
+ &&single_value->field_can__pdu.is_value();
+}
+
+void CAN__frame__j1939_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+CAN__frame__j1939 CAN__frame__j1939_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 @Isobus.CAN_frame_j1939.");
+CAN__frame__j1939 ret_val;
+if (single_value->field_can__j1939.is_bound()) {
+ret_val.can__j1939() = single_value->field_can__j1939.valueof();
+}
+if (single_value->field_can__pdu.is_bound()) {
+ret_val.can__pdu() = single_value->field_can__pdu.valueof();
+}
+return ret_val;
+}
+
+void CAN__frame__j1939_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @Isobus.CAN_frame_j1939.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new CAN__frame__j1939_template[list_length];
+}
+
+CAN__frame__j1939_template& CAN__frame__j1939_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @Isobus.CAN_frame_j1939.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @Isobus.CAN_frame_j1939.");
+return value_list.list_value[list_index];
+}
+
+J1939_template& CAN__frame__j1939_template::can__j1939()
+{
+set_specific();
+return single_value->field_can__j1939;
+}
+
+const J1939_template& CAN__frame__j1939_template::can__j1939() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field can_j1939 of a non-specific template of type @Isobus.CAN_frame_j1939.");
+return single_value->field_can__j1939;
+}
+
+AnyIsoBusPdu_template& CAN__frame__j1939_template::can__pdu()
+{
+set_specific();
+return single_value->field_can__pdu;
+}
+
+const AnyIsoBusPdu_template& CAN__frame__j1939_template::can__pdu() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field can_pdu of a non-specific template of type @Isobus.CAN_frame_j1939.");
+return single_value->field_can__pdu;
+}
+
+int CAN__frame__j1939_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @Isobus.CAN_frame_j1939 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 @Isobus.CAN_frame_j1939 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 @Isobus.CAN_frame_j1939 containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @Isobus.CAN_frame_j1939 containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @Isobus.CAN_frame_j1939 containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @Isobus.CAN_frame_j1939 containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @Isobus.CAN_frame_j1939.");
+  }
+  return 0;
+}
+
+void CAN__frame__j1939_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ can_j1939 := ");
+single_value->field_can__j1939.log();
+TTCN_Logger::log_event_str(", can_pdu := ");
+single_value->field_can__pdu.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void CAN__frame__j1939_template::log_match(const CAN__frame__j1939& 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_can__j1939.match(match_value.can__j1939(), legacy)){
+TTCN_Logger::log_logmatch_info(".can_j1939");
+single_value->field_can__j1939.log_match(match_value.can__j1939(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_can__pdu.match(match_value.can__pdu(), legacy)){
+TTCN_Logger::log_logmatch_info(".can_pdu");
+single_value->field_can__pdu.log_match(match_value.can__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("{ can_j1939 := ");
+single_value->field_can__j1939.log_match(match_value.can__j1939(), legacy);
+TTCN_Logger::log_event_str(", can_pdu := ");
+single_value->field_can__pdu.log_match(match_value.can__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 CAN__frame__j1939_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_can__j1939.encode_text(text_buf);
+single_value->field_can__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 @Isobus.CAN_frame_j1939.");
+}
+}
+
+void CAN__frame__j1939_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_can__j1939.decode_text(text_buf);
+single_value->field_can__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 CAN__frame__j1939_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 @Isobus.CAN_frame_j1939.");
+}
+}
+
+void CAN__frame__j1939_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: {
+    CAN__frame__j1939_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @Isobus.CAN_frame_j1939 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) can__j1939().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) can__pdu().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(), "can_j1939")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          can__j1939().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(), "can_pdu")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          can__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 @Isobus.CAN_frame_j1939: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@Isobus.CAN_frame_j1939");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void CAN__frame__j1939_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_can__j1939.check_restriction(t_res, t_name ? t_name : "@Isobus.CAN_frame_j1939");
+single_value->field_can__pdu.check_restriction(t_res, t_name ? t_name : "@Isobus.CAN_frame_j1939");
+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 : "@Isobus.CAN_frame_j1939");
+}
+
+boolean CAN__frame__j1939_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean CAN__frame__j1939_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+CAN__frame__j1939mod::CAN__frame__j1939mod()
+{
+}
+
+CAN__frame__j1939mod::CAN__frame__j1939mod(const J1939mod& par_can__j1939,
+    const AnyIsoBusPdu& par_can__pdu)
+  :   field_can__j1939(par_can__j1939),
+  field_can__pdu(par_can__pdu)
+{
+}
+
+CAN__frame__j1939mod::CAN__frame__j1939mod(const CAN__frame__j1939mod& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @Isobus.CAN_frame_j1939mod.");
+if (other_value.can__j1939().is_bound()) field_can__j1939 = other_value.can__j1939();
+else field_can__j1939.clean_up();
+if (other_value.can__pdu().is_bound()) field_can__pdu = other_value.can__pdu();
+else field_can__pdu.clean_up();
+}
+
+void CAN__frame__j1939mod::clean_up()
+{
+field_can__j1939.clean_up();
+field_can__pdu.clean_up();
+}
+
+const TTCN_Typedescriptor_t* CAN__frame__j1939mod::get_descriptor() const { return &CAN__frame__j1939mod_descr_; }
+CAN__frame__j1939mod& CAN__frame__j1939mod::operator=(const CAN__frame__j1939mod& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @Isobus.CAN_frame_j1939mod.");
+  if (other_value.can__j1939().is_bound()) field_can__j1939 = other_value.can__j1939();
+  else field_can__j1939.clean_up();
+  if (other_value.can__pdu().is_bound()) field_can__pdu = other_value.can__pdu();
+  else field_can__pdu.clean_up();
+}
+return *this;
+}
+
+boolean CAN__frame__j1939mod::operator==(const CAN__frame__j1939mod& other_value) const
+{
+return field_can__j1939==other_value.field_can__j1939
+  && field_can__pdu==other_value.field_can__pdu;
+}
+
+boolean CAN__frame__j1939mod::is_bound() const
+{
+return (field_can__j1939.is_bound())
+  || (field_can__pdu.is_bound());
+}
+boolean CAN__frame__j1939mod::is_value() const
+{
+return field_can__j1939.is_value()
+  && field_can__pdu.is_value();
+}
+void CAN__frame__j1939mod::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ can_j1939 := ");
+field_can__j1939.log();
+TTCN_Logger::log_event_str(", can_pdu := ");
+field_can__pdu.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void CAN__frame__j1939mod::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 @Isobus.CAN_frame_j1939mod 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) can__j1939().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) can__pdu().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(), "can_j1939")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          can__j1939().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(), "can_pdu")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          can__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 @Isobus.CAN_frame_j1939mod: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@Isobus.CAN_frame_j1939mod");
+  }
+}
+
+void CAN__frame__j1939mod::set_implicit_omit()
+{
+if (can__j1939().is_bound()) can__j1939().set_implicit_omit();
+if (can__pdu().is_bound()) can__pdu().set_implicit_omit();
+}
+
+void CAN__frame__j1939mod::encode_text(Text_Buf& text_buf) const
+{
+field_can__j1939.encode_text(text_buf);
+field_can__pdu.encode_text(text_buf);
+}
+
+void CAN__frame__j1939mod::decode_text(Text_Buf& text_buf)
+{
+field_can__j1939.decode_text(text_buf);
+field_can__pdu.decode_text(text_buf);
+}
+
+void CAN__frame__j1939mod::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void CAN__frame__j1939mod::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int CAN__frame__j1939mod::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, J1939mod_descr_.raw->forceomit);
+  decoded_field_length = field_can__j1939.RAW_decode(J1939mod_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_can__j1939.comp() ==  os_0) selected_field = 0;
+  else if (field_can__j1939.comp() ==  os_1) selected_field = 1;
+  else if (field_can__j1939.comp() ==  os_2) selected_field = 2;
+  else if (field_can__j1939.comp() ==  os_3) selected_field = 3;
+  else if (field_can__j1939.comp() ==  os_4) selected_field = 4;
+  else if (field_can__j1939.comp() ==  os_5) selected_field = 5;
+  else if (field_can__j1939.comp() ==  os_6) selected_field = 6;
+  else if (field_can__j1939.comp() ==  os_7) selected_field = 7;
+  else if (field_can__j1939.comp() ==  os_8) selected_field = 8;
+  else if (field_can__j1939.comp() ==  os_9) selected_field = 9;
+  else if (field_can__j1939.comp() ==  os_10) selected_field = 10;
+  else selected_field = -1;
+  RAW_Force_Omit field_1_force_omit(1, force_omit, CAN__frame__j1939mod_can__pdu_descr_.raw->forceomit);
+  decoded_field_length = field_can__pdu.RAW_decode(CAN__frame__j1939mod_can__pdu_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 CAN__frame__j1939mod::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, J1939mod_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, CAN__frame__j1939mod_can__pdu_descr_.raw);
+  encoded_length += field_can__j1939.RAW_encode(J1939mod_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_can__pdu.RAW_encode(CAN__frame__j1939mod_can__pdu_descr_, *myleaf.body.node.nodes[1]);
+  switch (field_can__pdu.get_selection()) {
+  case AnyIsoBusPdu::ALT_etp__dt:
+  if (field_can__j1939.comp() !=  os_0) {
+  RAW_enc_tr_pos pr_pos;
+  pr_pos.level = myleaf.curr_pos.level + 2;
+  int new_pos[] = { 0, 6 };
+  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 2, new_pos);
+  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
+  if (temp_leaf != NULL)
+     os_0.RAW_encode(J1939mod_comp_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 AnyIsoBusPdu::ALT_etp__cm:
+  if (field_can__j1939.comp() !=  os_1) {
+  RAW_enc_tr_pos pr_pos;
+  pr_pos.level = myleaf.curr_pos.level + 2;
+  int new_pos[] = { 0, 6 };
+  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 2, new_pos);
+  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
+  if (temp_leaf != NULL)
+     os_1.RAW_encode(J1939mod_comp_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 AnyIsoBusPdu::ALT_vt2ecu:
+  if (field_can__j1939.comp() !=  os_2) {
+  RAW_enc_tr_pos pr_pos;
+  pr_pos.level = myleaf.curr_pos.level + 2;
+  int new_pos[] = { 0, 6 };
+  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 2, new_pos);
+  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
+  if (temp_leaf != NULL)
+     os_2.RAW_encode(J1939mod_comp_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 AnyIsoBusPdu::ALT_ecu2vt:
+  if (field_can__j1939.comp() !=  os_3) {
+  RAW_enc_tr_pos pr_pos;
+  pr_pos.level = myleaf.curr_pos.level + 2;
+  int new_pos[] = { 0, 6 };
+  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 2, new_pos);
+  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
+  if (temp_leaf != NULL)
+     os_3.RAW_encode(J1939mod_comp_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 AnyIsoBusPdu::ALT_requestForAddressClaimed:
+  if (field_can__j1939.comp() !=  os_4) {
+  RAW_enc_tr_pos pr_pos;
+  pr_pos.level = myleaf.curr_pos.level + 2;
+  int new_pos[] = { 0, 6 };
+  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 2, new_pos);
+  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
+  if (temp_leaf != NULL)
+     os_4.RAW_encode(J1939mod_comp_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 AnyIsoBusPdu::ALT_tp__dt:
+  if (field_can__j1939.comp() !=  os_5) {
+  RAW_enc_tr_pos pr_pos;
+  pr_pos.level = myleaf.curr_pos.level + 2;
+  int new_pos[] = { 0, 6 };
+  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 2, new_pos);
+  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
+  if (temp_leaf != NULL)
+     os_5.RAW_encode(J1939mod_comp_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 AnyIsoBusPdu::ALT_tp__cm:
+  if (field_can__j1939.comp() !=  os_6) {
+  RAW_enc_tr_pos pr_pos;
+  pr_pos.level = myleaf.curr_pos.level + 2;
+  int new_pos[] = { 0, 6 };
+  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 2, new_pos);
+  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
+  if (temp_leaf != NULL)
+     os_6.RAW_encode(J1939mod_comp_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 AnyIsoBusPdu::ALT_networkMessage:
+  if (field_can__j1939.comp() !=  os_7) {
+  RAW_enc_tr_pos pr_pos;
+  pr_pos.level = myleaf.curr_pos.level + 2;
+  int new_pos[] = { 0, 6 };
+  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 2, new_pos);
+  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
+  if (temp_leaf != NULL)
+     os_7.RAW_encode(J1939mod_comp_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 AnyIsoBusPdu::ALT_cannotClaimSourceAddress:
+  if (field_can__j1939.comp() !=  os_8) {
+  RAW_enc_tr_pos pr_pos;
+  pr_pos.level = myleaf.curr_pos.level + 2;
+  int new_pos[] = { 0, 6 };
+  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 2, new_pos);
+  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
+  if (temp_leaf != NULL)
+     os_8.RAW_encode(J1939mod_comp_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 AnyIsoBusPdu::ALT_addressClaimed:
+  if (field_can__j1939.comp() !=  os_9) {
+  RAW_enc_tr_pos pr_pos;
+  pr_pos.level = myleaf.curr_pos.level + 2;
+  int new_pos[] = { 0, 6 };
+  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 2, new_pos);
+  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
+  if (temp_leaf != NULL)
+     os_9.RAW_encode(J1939mod_comp_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 AnyIsoBusPdu::ALT_commandedAddress:
+  if (field_can__j1939.comp() !=  os_10) {
+  RAW_enc_tr_pos pr_pos;
+  pr_pos.level = myleaf.curr_pos.level + 2;
+  int new_pos[] = { 0, 6 };
+  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 2, new_pos);
+  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
+  if (temp_leaf != NULL)
+     os_10.RAW_encode(J1939mod_comp_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 CAN__frame__j1939mod_template::single_value_struct {
+J1939mod_template field_can__j1939;
+AnyIsoBusPdu_template field_can__pdu;
+};
+
+void CAN__frame__j1939mod_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_can__j1939 = ANY_VALUE;
+single_value->field_can__pdu = ANY_VALUE;
+}
+}
+}
+
+void CAN__frame__j1939mod_template::copy_value(const CAN__frame__j1939mod& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.can__j1939().is_bound()) {
+  single_value->field_can__j1939 = other_value.can__j1939();
+} else {
+  single_value->field_can__j1939.clean_up();
+}
+if (other_value.can__pdu().is_bound()) {
+  single_value->field_can__pdu = other_value.can__pdu();
+} else {
+  single_value->field_can__pdu.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void CAN__frame__j1939mod_template::copy_template(const CAN__frame__j1939mod_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.can__j1939().get_selection()) {
+single_value->field_can__j1939 = other_value.can__j1939();
+} else {
+single_value->field_can__j1939.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.can__pdu().get_selection()) {
+single_value->field_can__pdu = other_value.can__pdu();
+} else {
+single_value->field_can__pdu.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new CAN__frame__j1939mod_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @Isobus.CAN_frame_j1939mod.");
+break;
+}
+set_selection(other_value);
+}
+
+CAN__frame__j1939mod_template::CAN__frame__j1939mod_template()
+{
+}
+
+CAN__frame__j1939mod_template::CAN__frame__j1939mod_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+CAN__frame__j1939mod_template::CAN__frame__j1939mod_template(const CAN__frame__j1939mod& other_value)
+{
+copy_value(other_value);
+}
+
+CAN__frame__j1939mod_template::CAN__frame__j1939mod_template(const OPTIONAL<CAN__frame__j1939mod>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CAN__frame__j1939mod&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @Isobus.CAN_frame_j1939mod from an unbound optional field.");
+}
+}
+
+CAN__frame__j1939mod_template::CAN__frame__j1939mod_template(const CAN__frame__j1939mod_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+CAN__frame__j1939mod_template::~CAN__frame__j1939mod_template()
+{
+clean_up();
+}
+
+CAN__frame__j1939mod_template& CAN__frame__j1939mod_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+CAN__frame__j1939mod_template& CAN__frame__j1939mod_template::operator=(const CAN__frame__j1939mod& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+CAN__frame__j1939mod_template& CAN__frame__j1939mod_template::operator=(const OPTIONAL<CAN__frame__j1939mod>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CAN__frame__j1939mod&)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 @Isobus.CAN_frame_j1939mod.");
+}
+return *this;
+}
+
+CAN__frame__j1939mod_template& CAN__frame__j1939mod_template::operator=(const CAN__frame__j1939mod_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean CAN__frame__j1939mod_template::match(const CAN__frame__j1939mod& 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.can__j1939().is_bound()) return FALSE;
+if(!single_value->field_can__j1939.match(other_value.can__j1939(), legacy))return FALSE;
+if(!other_value.can__pdu().is_bound()) return FALSE;
+if(!single_value->field_can__pdu.match(other_value.can__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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @Isobus.CAN_frame_j1939mod.");
+}
+return FALSE;
+}
+
+boolean CAN__frame__j1939mod_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_can__j1939.is_bound()
+
+ ||single_value->field_can__pdu.is_bound()
+;
+}
+
+boolean CAN__frame__j1939mod_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_can__j1939.is_value()
+ &&single_value->field_can__pdu.is_value();
+}
+
+void CAN__frame__j1939mod_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+CAN__frame__j1939mod CAN__frame__j1939mod_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 @Isobus.CAN_frame_j1939mod.");
+CAN__frame__j1939mod ret_val;
+if (single_value->field_can__j1939.is_bound()) {
+ret_val.can__j1939() = single_value->field_can__j1939.valueof();
+}
+if (single_value->field_can__pdu.is_bound()) {
+ret_val.can__pdu() = single_value->field_can__pdu.valueof();
+}
+return ret_val;
+}
+
+void CAN__frame__j1939mod_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @Isobus.CAN_frame_j1939mod.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new CAN__frame__j1939mod_template[list_length];
+}
+
+CAN__frame__j1939mod_template& CAN__frame__j1939mod_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @Isobus.CAN_frame_j1939mod.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @Isobus.CAN_frame_j1939mod.");
+return value_list.list_value[list_index];
+}
+
+J1939mod_template& CAN__frame__j1939mod_template::can__j1939()
+{
+set_specific();
+return single_value->field_can__j1939;
+}
+
+const J1939mod_template& CAN__frame__j1939mod_template::can__j1939() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field can_j1939 of a non-specific template of type @Isobus.CAN_frame_j1939mod.");
+return single_value->field_can__j1939;
+}
+
+AnyIsoBusPdu_template& CAN__frame__j1939mod_template::can__pdu()
+{
+set_specific();
+return single_value->field_can__pdu;
+}
+
+const AnyIsoBusPdu_template& CAN__frame__j1939mod_template::can__pdu() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field can_pdu of a non-specific template of type @Isobus.CAN_frame_j1939mod.");
+return single_value->field_can__pdu;
+}
+
+int CAN__frame__j1939mod_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @Isobus.CAN_frame_j1939mod 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 @Isobus.CAN_frame_j1939mod 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 @Isobus.CAN_frame_j1939mod containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @Isobus.CAN_frame_j1939mod containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @Isobus.CAN_frame_j1939mod containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @Isobus.CAN_frame_j1939mod containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @Isobus.CAN_frame_j1939mod.");
+  }
+  return 0;
+}
+
+void CAN__frame__j1939mod_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ can_j1939 := ");
+single_value->field_can__j1939.log();
+TTCN_Logger::log_event_str(", can_pdu := ");
+single_value->field_can__pdu.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void CAN__frame__j1939mod_template::log_match(const CAN__frame__j1939mod& 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_can__j1939.match(match_value.can__j1939(), legacy)){
+TTCN_Logger::log_logmatch_info(".can_j1939");
+single_value->field_can__j1939.log_match(match_value.can__j1939(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_can__pdu.match(match_value.can__pdu(), legacy)){
+TTCN_Logger::log_logmatch_info(".can_pdu");
+single_value->field_can__pdu.log_match(match_value.can__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("{ can_j1939 := ");
+single_value->field_can__j1939.log_match(match_value.can__j1939(), legacy);
+TTCN_Logger::log_event_str(", can_pdu := ");
+single_value->field_can__pdu.log_match(match_value.can__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 CAN__frame__j1939mod_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_can__j1939.encode_text(text_buf);
+single_value->field_can__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 @Isobus.CAN_frame_j1939mod.");
+}
+}
+
+void CAN__frame__j1939mod_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_can__j1939.decode_text(text_buf);
+single_value->field_can__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 CAN__frame__j1939mod_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 @Isobus.CAN_frame_j1939mod.");
+}
+}
+
+void CAN__frame__j1939mod_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: {
+    CAN__frame__j1939mod_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @Isobus.CAN_frame_j1939mod 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) can__j1939().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) can__pdu().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(), "can_j1939")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          can__j1939().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(), "can_pdu")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          can__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 @Isobus.CAN_frame_j1939mod: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@Isobus.CAN_frame_j1939mod");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void CAN__frame__j1939mod_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_can__j1939.check_restriction(t_res, t_name ? t_name : "@Isobus.CAN_frame_j1939mod");
+single_value->field_can__pdu.check_restriction(t_res, t_name ? t_name : "@Isobus.CAN_frame_j1939mod");
+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 : "@Isobus.CAN_frame_j1939mod");
+}
+
+boolean CAN__frame__j1939mod_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean CAN__frame__j1939mod_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+
+/* Bodies of functions, altsteps and testcases */
+
+OCTETSTRING encode__CAN__frame__j1939mod(const CAN__frame__j1939mod& pdu)
+{
+if (TTCN_Logger::log_this_event(TTCN_Logger::DEBUG_ENCDEC)) {
+TTCN_Logger::begin_event(TTCN_Logger::DEBUG_ENCDEC);
+TTCN_Logger::log_event_str("encode_CAN_frame_j1939mod(): Encoding @Isobus.CAN_frame_j1939mod: ");
+pdu.log();
+TTCN_Logger::end_event();
+}
+TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT);
+TTCN_Buffer ttcn_buffer;
+pdu.encode(CAN__frame__j1939mod_descr_, ttcn_buffer, TTCN_EncDec::CT_RAW, 0);
+OCTETSTRING ret_val;
+ttcn_buffer.get_string(ret_val);
+if (TTCN_Logger::log_this_event(TTCN_Logger::DEBUG_ENCDEC)) {
+TTCN_Logger::begin_event(TTCN_Logger::DEBUG_ENCDEC);
+TTCN_Logger::log_event_str("encode_CAN_frame_j1939mod(): Stream after encoding: ");
+ret_val.log();
+TTCN_Logger::end_event();
+}
+return ret_val;
+}
+
+CAN__frame__j1939mod decode__CAN__frame__j1939mod(const OCTETSTRING& data)
+{
+if (TTCN_Logger::log_this_event(TTCN_Logger::DEBUG_ENCDEC)) {
+TTCN_Logger::begin_event(TTCN_Logger::DEBUG_ENCDEC);
+TTCN_Logger::log_event_str("decode_CAN_frame_j1939mod(): Stream before decoding: ");
+data.log();
+TTCN_Logger::end_event();
+}
+TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT);
+TTCN_EncDec::clear_error();
+TTCN_Buffer ttcn_buffer(data);
+CAN__frame__j1939mod ret_val;
+ret_val.decode(CAN__frame__j1939mod_descr_, ttcn_buffer, TTCN_EncDec::CT_RAW);
+if (TTCN_Logger::log_this_event(TTCN_Logger::DEBUG_ENCDEC)) {
+TTCN_Logger::begin_event(TTCN_Logger::DEBUG_ENCDEC);
+TTCN_Logger::log_event_str("decode_CAN_frame_j1939mod(): Decoded @Isobus.CAN_frame_j1939mod: ");
+ret_val.log();
+TTCN_Logger::end_event();
+}
+if (TTCN_EncDec::get_last_error_type() == TTCN_EncDec::ET_NONE) {
+if (ttcn_buffer.get_pos() < ttcn_buffer.get_len()) {
+ttcn_buffer.cut();
+OCTETSTRING tmp_os;
+ttcn_buffer.get_string(tmp_os);
+TTCN_Logger::begin_event_log2str();
+tmp_os.log();
+CHARSTRING remaining_stream = TTCN_Logger::end_event_log2str();
+TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_EXTRA_DATA, "decode_CAN_frame_j1939mod(): Data remained at the end of the stream after successful decoding: %s", (const char*) remaining_stream);
+}
+}
+return ret_val;
+}
+
+Can::CAN__frame j1939frame2can(const CAN__frame__j1939& p__can__frame__j1939, const BITSTRING& p__priority, const OCTETSTRING& p__da, const OCTETSTRING& p__sa)
+{
+TTCN_Location current_location("Isobus.ttcn", 116, TTCN_Location::LOCATION_FUNCTION, "j1939frame2can");
+current_location.update_lineno(117);
+#line 117 "Isobus.ttcn"
+Can::CAN__frame v__can__frame;
+current_location.update_lineno(118);
+#line 118 "Isobus.ttcn"
+v__can__frame.can__id() = pdu1__j1939id2canid(const_cast< const CAN__frame__j1939&>(p__can__frame__j1939).can__j1939(), p__priority, p__da, p__sa);
+current_location.update_lineno(120);
+#line 120 "Isobus.ttcn"
+v__can__frame.can__pdu() = substr(f__encode__CAN__frame__j1939(p__can__frame__j1939), 0, 3);
+current_location.update_lineno(121);
+#line 121 "Isobus.ttcn"
+return v__can__frame;
+}
+
+OCTETSTRING pdu1__j1939id2canid(const J1939& p__j1939, const BITSTRING& p__priority, const OCTETSTRING& p__da, const OCTETSTRING& p__sa)
+{
+TTCN_Location current_location("Isobus.ttcn", 124, TTCN_Location::LOCATION_FUNCTION, "pdu1_j1939id2canid");
+current_location.update_lineno(125);
+#line 125 "Isobus.ttcn"
+OCTETSTRING v__can__id;
+current_location.update_lineno(126);
+#line 126 "Isobus.ttcn"
+v__can__id = bit2oct((((((oct2bit(p__sa) | (oct2bit(p__da) << 8)) | (oct2bit(const_cast< const J1939&>(p__j1939).pf()) << 16)) | (const_cast< const J1939&>(p__j1939).dp() << 24)) | (const_cast< const J1939&>(p__j1939).res() << 25)) | (int2bit(bit2int(p__priority), 32) << 26)));
+current_location.update_lineno(128);
+#line 128 "Isobus.ttcn"
+return v__can__id;
+}
+
+OCTETSTRING j1939id2canid(const J1939& p__j1939)
+{
+TTCN_Location current_location("Isobus.ttcn", 140, TTCN_Location::LOCATION_FUNCTION, "j1939id2canid");
+current_location.update_lineno(141);
+#line 141 "Isobus.ttcn"
+OCTETSTRING v__can__id;
+current_location.update_lineno(142);
+#line 142 "Isobus.ttcn"
+v__can__id = int2oct((((((oct2int(const_cast< const J1939&>(p__j1939).sa()) + (oct2int(const_cast< const J1939&>(p__j1939).ps()) * 256)) + ((oct2int(const_cast< const J1939&>(p__j1939).pf()) * 256) * 256)) + (((bit2int(const_cast< const J1939&>(p__j1939).dp()) * 256) * 256) * 256)) + ((((bit2int(const_cast< const J1939&>(p__j1939).res()) * 256) * 256) * 256) * 2)) + (((((bit2int(const_cast< const J1939&>(p__j1939).prio()) * 256) * 256) * 256) * 2) * 2)), 4);
+current_location.update_lineno(147);
+#line 147 "Isobus.ttcn"
+return v__can__id;
+}
+
+CAN__frame__j1939 can2j1939frame(const Can::CAN__frame& p__can__frame)
+{
+TTCN_Location current_location("Isobus.ttcn", 151, TTCN_Location::LOCATION_FUNCTION, "can2j1939frame");
+current_location.update_lineno(153);
+#line 153 "Isobus.ttcn"
+CAN__frame__j1939 v__can__frame__j1939;
+current_location.update_lineno(158);
+#line 158 "Isobus.ttcn"
+v__can__frame__j1939 = f__decode__CAN__frame__j1939((const_cast< const Can::CAN__frame&>(p__can__frame).can__id() + const_cast< const Can::CAN__frame&>(p__can__frame).can__pdu()));
+current_location.update_lineno(161);
+#line 161 "Isobus.ttcn"
+return v__can__frame__j1939;
+}
+
+J1939 canid2j1939(const OCTETSTRING& p__can__id)
+{
+TTCN_Location current_location("Isobus.ttcn", 164, TTCN_Location::LOCATION_FUNCTION, "canid2j1939");
+current_location.update_lineno(167);
+#line 167 "Isobus.ttcn"
+BITSTRING v__can__id__bitstring(oct2bit(p__can__id));
+current_location.update_lineno(168);
+#line 168 "Isobus.ttcn"
+J1939 v__j1939;
+current_location.update_lineno(170);
+#line 170 "Isobus.ttcn"
+v__j1939.prio() = substr(v__can__id__bitstring, 0, 6);
+current_location.update_lineno(171);
+#line 171 "Isobus.ttcn"
+v__j1939.res() = const_cast< const BITSTRING&>(v__can__id__bitstring)[6];
+current_location.update_lineno(172);
+#line 172 "Isobus.ttcn"
+v__j1939.dp() = const_cast< const BITSTRING&>(v__can__id__bitstring)[7];
+current_location.update_lineno(173);
+#line 173 "Isobus.ttcn"
+v__j1939.pf() = const_cast< const OCTETSTRING&>(p__can__id)[1];
+current_location.update_lineno(174);
+#line 174 "Isobus.ttcn"
+v__j1939.ps() = const_cast< const OCTETSTRING&>(p__can__id)[2];
+current_location.update_lineno(175);
+#line 175 "Isobus.ttcn"
+v__j1939.sa() = const_cast< const OCTETSTRING&>(p__can__id)[3];
+current_location.update_lineno(177);
+#line 177 "Isobus.ttcn"
+return v__j1939;
+}
+
+OCTETSTRING f__insert__aux__hdr(const OCTETSTRING& p__os)
+{
+TTCN_Location current_location("Isobus.ttcn", 185, TTCN_Location::LOCATION_FUNCTION, "f_insert_aux_hdr");
+current_location.update_lineno(188);
+#line 188 "Isobus.ttcn"
+OCTETSTRING v__os;
+current_location.update_lineno(191);
+#line 191 "Isobus.ttcn"
+v__os[0] = const_cast< const OCTETSTRING&>(p__os)[1];
+current_location.update_lineno(192);
+#line 192 "Isobus.ttcn"
+if ((const_cast< const OCTETSTRING&>(p__os)[1] == os_17)) {
+current_location.update_lineno(194);
+#line 194 "Isobus.ttcn"
+if ((const_cast< const OCTETSTRING&>(p__os)[2] == os_18)) {
+current_location.update_lineno(194);
+#line 194 "Isobus.ttcn"
+v__os[1] = os_18;
+current_location.update_lineno(194);
+#line 194 "Isobus.ttcn"
+v__os[2] = os_19;
+}
+}
+else {
+current_location.update_lineno(197);
+#line 197 "Isobus.ttcn"
+if ((const_cast< const OCTETSTRING&>(p__os)[1] == os_20)) {
+current_location.update_lineno(199);
+#line 199 "Isobus.ttcn"
+if ((const_cast< const OCTETSTRING&>(p__os)[2] == os_21)) {
+current_location.update_lineno(200);
+#line 200 "Isobus.ttcn"
+if ((const_cast< const OCTETSTRING&>(p__os)[3] == os_17)) {
+current_location.update_lineno(200);
+#line 200 "Isobus.ttcn"
+v__os[1] = os_21;
+current_location.update_lineno(200);
+#line 200 "Isobus.ttcn"
+v__os[2] = os_17;
+}
+else {
+current_location.update_lineno(201);
+#line 201 "Isobus.ttcn"
+v__os[1] = os_21;
+current_location.update_lineno(201);
+#line 201 "Isobus.ttcn"
+v__os[2] = os_19;
+}
+}
+}
+else {
+current_location.update_lineno(207);
+#line 207 "Isobus.ttcn"
+v__os[1] = os_19;
+current_location.update_lineno(207);
+#line 207 "Isobus.ttcn"
+v__os[2] = os_19;
+}
+}
+current_location.update_lineno(212);
+#line 212 "Isobus.ttcn"
+return replace(p__os, 4, 0, v__os);
+}
+
+OCTETSTRING f__remove__aux__hdr(const OCTETSTRING& p__os)
+{
+TTCN_Location current_location("Isobus.ttcn", 216, TTCN_Location::LOCATION_FUNCTION, "f_remove_aux_hdr");
+OCTETSTRING p__os_shadow(p__os);
+current_location.update_lineno(222);
+#line 222 "Isobus.ttcn"
+{
+OCTETSTRING tmp_20;
+tmp_20 = const_cast< const OCTETSTRING&>(p__os_shadow)[4];
+p__os_shadow[1] = tmp_20;
+}
+current_location.update_lineno(223);
+#line 223 "Isobus.ttcn"
+if ((const_cast< const OCTETSTRING&>(p__os_shadow)[4] == os_20)) {
+current_location.update_lineno(225);
+#line 225 "Isobus.ttcn"
+if ((const_cast< const OCTETSTRING&>(p__os_shadow)[6] == os_17)) {
+current_location.update_lineno(226);
+#line 226 "Isobus.ttcn"
+{
+OCTETSTRING tmp_21;
+tmp_21 = const_cast< const OCTETSTRING&>(p__os_shadow)[5];
+p__os_shadow[2] = tmp_21;
+}
+current_location.update_lineno(227);
+#line 227 "Isobus.ttcn"
+{
+OCTETSTRING tmp_22;
+tmp_22 = const_cast< const OCTETSTRING&>(p__os_shadow)[6];
+p__os_shadow[3] = tmp_22;
+}
+}
+else {
+current_location.update_lineno(230);
+#line 230 "Isobus.ttcn"
+{
+OCTETSTRING tmp_23;
+tmp_23 = const_cast< const OCTETSTRING&>(p__os_shadow)[5];
+p__os_shadow[2] = tmp_23;
+}
+}
+}
+else {
+current_location.update_lineno(233);
+#line 233 "Isobus.ttcn"
+if ((const_cast< const OCTETSTRING&>(p__os_shadow)[4] == os_17)) {
+current_location.update_lineno(235);
+#line 235 "Isobus.ttcn"
+{
+OCTETSTRING tmp_24;
+tmp_24 = const_cast< const OCTETSTRING&>(p__os_shadow)[5];
+p__os_shadow[2] = tmp_24;
+}
+}
+}
+current_location.update_lineno(242);
+#line 242 "Isobus.ttcn"
+return replace(p__os_shadow, 4, 3, os_22);
+}
+
+CAN__frame__j1939 f__map__mod2frame(const CAN__frame__j1939mod& p__frame)
+{
+TTCN_Location current_location("Isobus.ttcn", 246, TTCN_Location::LOCATION_FUNCTION, "f_map_mod2frame");
+current_location.update_lineno(249);
+#line 249 "Isobus.ttcn"
+CAN__frame__j1939 v__CAN__frame__j1939;
+current_location.update_lineno(251);
+#line 251 "Isobus.ttcn"
+v__CAN__frame__j1939.can__pdu() = const_cast< const CAN__frame__j1939mod&>(p__frame).can__pdu();
+current_location.update_lineno(252);
+#line 252 "Isobus.ttcn"
+v__CAN__frame__j1939.can__j1939().prio() = const_cast< const CAN__frame__j1939mod&>(p__frame).can__j1939().prio();
+current_location.update_lineno(253);
+#line 253 "Isobus.ttcn"
+v__CAN__frame__j1939.can__j1939().res() = const_cast< const CAN__frame__j1939mod&>(p__frame).can__j1939().res();
+current_location.update_lineno(254);
+#line 254 "Isobus.ttcn"
+v__CAN__frame__j1939.can__j1939().dp() = const_cast< const CAN__frame__j1939mod&>(p__frame).can__j1939().dp();
+current_location.update_lineno(255);
+#line 255 "Isobus.ttcn"
+v__CAN__frame__j1939.can__j1939().pf() = const_cast< const CAN__frame__j1939mod&>(p__frame).can__j1939().pf();
+current_location.update_lineno(256);
+#line 256 "Isobus.ttcn"
+v__CAN__frame__j1939.can__j1939().ps() = const_cast< const CAN__frame__j1939mod&>(p__frame).can__j1939().ps();
+current_location.update_lineno(257);
+#line 257 "Isobus.ttcn"
+v__CAN__frame__j1939.can__j1939().sa() = const_cast< const CAN__frame__j1939mod&>(p__frame).can__j1939().sa();
+current_location.update_lineno(261);
+#line 261 "Isobus.ttcn"
+return v__CAN__frame__j1939;
+}
+
+CAN__frame__j1939mod f__map__frame2mod(const CAN__frame__j1939& p__frame)
+{
+TTCN_Location current_location("Isobus.ttcn", 267, TTCN_Location::LOCATION_FUNCTION, "f_map_frame2mod");
+current_location.update_lineno(270);
+#line 270 "Isobus.ttcn"
+CAN__frame__j1939mod v__CAN__frame__j1939mod;
+current_location.update_lineno(273);
+#line 273 "Isobus.ttcn"
+v__CAN__frame__j1939mod.can__pdu() = const_cast< const CAN__frame__j1939&>(p__frame).can__pdu();
+current_location.update_lineno(274);
+#line 274 "Isobus.ttcn"
+v__CAN__frame__j1939mod.can__j1939().prio() = const_cast< const CAN__frame__j1939&>(p__frame).can__j1939().prio();
+current_location.update_lineno(275);
+#line 275 "Isobus.ttcn"
+v__CAN__frame__j1939mod.can__j1939().res() = const_cast< const CAN__frame__j1939&>(p__frame).can__j1939().res();
+current_location.update_lineno(276);
+#line 276 "Isobus.ttcn"
+v__CAN__frame__j1939mod.can__j1939().dp() = const_cast< const CAN__frame__j1939&>(p__frame).can__j1939().dp();
+current_location.update_lineno(277);
+#line 277 "Isobus.ttcn"
+v__CAN__frame__j1939mod.can__j1939().pf() = const_cast< const CAN__frame__j1939&>(p__frame).can__j1939().pf();
+current_location.update_lineno(278);
+#line 278 "Isobus.ttcn"
+v__CAN__frame__j1939mod.can__j1939().ps() = const_cast< const CAN__frame__j1939&>(p__frame).can__j1939().ps();
+current_location.update_lineno(279);
+#line 279 "Isobus.ttcn"
+v__CAN__frame__j1939mod.can__j1939().sa() = const_cast< const CAN__frame__j1939&>(p__frame).can__j1939().sa();
+current_location.update_lineno(280);
+#line 280 "Isobus.ttcn"
+if ((const_cast< const CAN__frame__j1939&>(p__frame).can__j1939().pf() == os_20)) {
+current_location.update_lineno(282);
+#line 282 "Isobus.ttcn"
+if ((const_cast< const CAN__frame__j1939&>(p__frame).can__j1939().ps() == os_18)) {
+current_location.update_lineno(283);
+#line 283 "Isobus.ttcn"
+v__CAN__frame__j1939mod.can__j1939().comp() = ((const_cast< const CAN__frame__j1939&>(p__frame).can__j1939().pf() + const_cast< const CAN__frame__j1939&>(p__frame).can__j1939().ps()) + os_19);
+}
+else {
+current_location.update_lineno(284);
+#line 284 "Isobus.ttcn"
+if ((const_cast< const CAN__frame__j1939&>(p__frame).can__j1939().ps() == os_21)) {
+current_location.update_lineno(285);
+#line 285 "Isobus.ttcn"
+if ((const_cast< const CAN__frame__j1939&>(p__frame).can__j1939().sa() == os_17)) {
+current_location.update_lineno(286);
+#line 286 "Isobus.ttcn"
+v__CAN__frame__j1939mod.can__j1939().comp() = ((const_cast< const CAN__frame__j1939&>(p__frame).can__j1939().pf() + const_cast< const CAN__frame__j1939&>(p__frame).can__j1939().ps()) + const_cast< const CAN__frame__j1939&>(p__frame).can__j1939().sa());
+}
+else {
+current_location.update_lineno(288);
+#line 288 "Isobus.ttcn"
+v__CAN__frame__j1939mod.can__j1939().comp() = (const_cast< const CAN__frame__j1939&>(p__frame).can__j1939().pf() + os_23);
+}
+}
+else {
+current_location.update_lineno(291);
+#line 291 "Isobus.ttcn"
+v__CAN__frame__j1939mod.can__j1939().comp() = (const_cast< const CAN__frame__j1939&>(p__frame).can__j1939().pf() + os_23);
+}
+}
+}
+else {
+current_location.update_lineno(294);
+#line 294 "Isobus.ttcn"
+v__CAN__frame__j1939mod.can__j1939().comp() = (const_cast< const CAN__frame__j1939&>(p__frame).can__j1939().pf() + os_23);
+}
+current_location.update_lineno(297);
+#line 297 "Isobus.ttcn"
+return v__CAN__frame__j1939mod;
+}
+
+OCTETSTRING f__encode__CAN__frame__j1939(const CAN__frame__j1939& pdu)
+{
+TTCN_Location current_location("Isobus.ttcn", 303, TTCN_Location::LOCATION_FUNCTION, "f_encode_CAN_frame_j1939");
+current_location.update_lineno(307);
+#line 307 "Isobus.ttcn"
+return f__remove__aux__hdr(encode__CAN__frame__j1939mod(f__map__frame2mod(pdu)));
+}
+
+CAN__frame__j1939 f__decode__CAN__frame__j1939(const OCTETSTRING& data)
+{
+TTCN_Location current_location("Isobus.ttcn", 312, TTCN_Location::LOCATION_FUNCTION, "f_decode_CAN_frame_j1939");
+current_location.update_lineno(315);
+#line 315 "Isobus.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("f_insert_aux_hdr(data)");
+f__insert__aux__hdr(data).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(316);
+#line 316 "Isobus.ttcn"
+return f__map__mod2frame(decode__CAN__frame__j1939mod(f__insert__aux__hdr(data)));
+}
+
+
+/* Bodies of static functions */
+
+static void pre_init_module()
+{
+TTCN_Location current_location("Isobus.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "Isobus");
+Can::module_object.pre_init_module();
+IsobusCMMessageTypes::module_object.pre_init_module();
+IsobusNMMessageTypes::module_object.pre_init_module();
+IsobusVTMessageTypes::module_object.pre_init_module();
+module_object.add_function("encode_CAN_frame_j1939mod", (genericfunc_t)&encode__CAN__frame__j1939mod, NULL);
+module_object.add_function("decode_CAN_frame_j1939mod", (genericfunc_t)&decode__CAN__frame__j1939mod, NULL);
+current_location.update_lineno(33);
+#line 33 "Isobus.ttcn"
+const_ISOBUS__PRIORITY__MASK = os_11;
+current_location.update_lineno(34);
+#line 34 "Isobus.ttcn"
+const_ISOBUS__RESERVED__MASK = os_12;
+current_location.update_lineno(35);
+#line 35 "Isobus.ttcn"
+const_ISOBUS__DATAPAGE__MASK = os_13;
+current_location.update_lineno(36);
+#line 36 "Isobus.ttcn"
+const_ISOBUS__PDUFORMAT__MASK = os_14;
+current_location.update_lineno(37);
+#line 37 "Isobus.ttcn"
+const_ISOBUS__PDUSPECIFIC__MASK = os_15;
+current_location.update_lineno(38);
+#line 38 "Isobus.ttcn"
+const_ISOBUS__SOURCEADDRESS__MASK = os_16;
+module_object.add_function("j1939frame2can", (genericfunc_t)&j1939frame2can, NULL);
+module_object.add_function("pdu1_j1939id2canid", (genericfunc_t)&pdu1__j1939id2canid, NULL);
+module_object.add_function("j1939id2canid", (genericfunc_t)&j1939id2canid, NULL);
+module_object.add_function("can2j1939frame", (genericfunc_t)&can2j1939frame, NULL);
+module_object.add_function("canid2j1939", (genericfunc_t)&canid2j1939, NULL);
+module_object.add_function("f_insert_aux_hdr", (genericfunc_t)&f__insert__aux__hdr, NULL);
+module_object.add_function("f_remove_aux_hdr", (genericfunc_t)&f__remove__aux__hdr, NULL);
+module_object.add_function("f_map_mod2frame", (genericfunc_t)&f__map__mod2frame, NULL);
+module_object.add_function("f_map_frame2mod", (genericfunc_t)&f__map__frame2mod, NULL);
+module_object.add_function("f_encode_CAN_frame_j1939", (genericfunc_t)&f__encode__CAN__frame__j1939, NULL);
+module_object.add_function("f_decode_CAN_frame_j1939", (genericfunc_t)&f__decode__CAN__frame__j1939, NULL);
+}
+
+static void post_init_module()
+{
+TTCN_Location current_location("Isobus.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "Isobus");
+Can::module_object.post_init_module();
+IsobusCMMessageTypes::module_object.post_init_module();
+IsobusNMMessageTypes::module_object.post_init_module();
+IsobusVTMessageTypes::module_object.post_init_module();
+}
+
+
+} /* end of namespace */
diff --git a/demo/Isobus.d b/demo/Isobus.d
new file mode 100644
index 0000000..0e887e5
--- /dev/null
+++ b/demo/Isobus.d
@@ -0,0 +1,60 @@
+Isobus.o Isobus.d : Isobus.cc Isobus.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TTCN3.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/version.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/cversion.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Types.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Vector.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Error.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Basetype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Encdec.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RInt.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON_Tokenizer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Logger.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Template.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Integer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ttcn3float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Boolean.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Null.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Optional.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Param_Types.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/memory.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/BER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Textbuf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Parameters.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XmlReader.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Objid.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Verdicttype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Component.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Bitstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RAW.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/CharCoding.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Hexstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Octetstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Any.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Universal_charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Struct_of.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Array.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_CharacterString.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_External.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TEXT.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_EmbeddedPDV.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Addfunc.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Timer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Port.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Event_Handler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/TitanLoggerApiSimple.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/PreGenRecordOf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Module_list.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Snapshot.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Default.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Runtime.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/OER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Profiler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ProfilerTools.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Debugger.hh Can.hh \
+ General_Types.hh IsobusCMMessageTypes.hh IsobusMessageTypes.hh \
+ IsobusNMMessageTypes.hh IsobusVTMessageTypes.hh
diff --git a/demo/Isobus.hh b/demo/Isobus.hh
new file mode 100644
index 0000000..a66e0f1
--- /dev/null
+++ b/demo/Isobus.hh
@@ -0,0 +1,734 @@
+// This C++ header file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+#ifndef Isobus_HH
+#define Isobus_HH
+
+#ifdef TITAN_RUNTIME_2
+#error Generated code does not match with used runtime.\
+ Code was generated without -R option but -DTITAN_RUNTIME_2 was used.
+#endif
+
+/* Header file includes */
+
+#include <TTCN3.hh>
+#include "Can.hh"
+#include "IsobusCMMessageTypes.hh"
+#include "IsobusNMMessageTypes.hh"
+#include "IsobusVTMessageTypes.hh"
+
+#if TTCN3_VERSION != 60600
+#error Version mismatch detected.\
+ Please check the version of the TTCN-3 compiler and the base library.\
+ Run make clean and rebuild the project if the version of the compiler changed recently.
+#endif
+
+#ifndef LINUX
+#error This file should be compiled on LINUX
+#endif
+
+#undef Isobus_HH
+#endif
+
+namespace Isobus {
+
+/* Forward declarations of classes */
+
+class J1939;
+class J1939_template;
+class J1939mod;
+class J1939mod_template;
+class AnyIsoBusPdu;
+class AnyIsoBusPdu_template;
+class CAN__frame__j1939;
+class CAN__frame__j1939_template;
+class CAN__frame__j1939mod;
+class CAN__frame__j1939mod_template;
+
+} /* end of namespace */
+
+#ifndef Isobus_HH
+#define Isobus_HH
+
+namespace Isobus {
+
+/* Type definitions */
+
+typedef BITSTRING Priority;
+typedef BITSTRING_template Priority_template;
+
+/* Class definitions */
+
+class J1939 : public Base_Type {
+  BITSTRING field_prio;
+  BITSTRING field_res;
+  BITSTRING field_dp;
+  OCTETSTRING field_pf;
+  OCTETSTRING field_ps;
+  OCTETSTRING field_sa;
+public:
+  J1939();
+  J1939(const BITSTRING& par_prio,
+    const BITSTRING& par_res,
+    const BITSTRING& par_dp,
+    const OCTETSTRING& par_pf,
+    const OCTETSTRING& par_ps,
+    const OCTETSTRING& par_sa);
+  J1939(const J1939& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  J1939& operator=(const J1939& other_value);
+  boolean operator==(const J1939& other_value) const;
+  inline boolean operator!=(const J1939& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BITSTRING& prio()
+    {return field_prio;}
+  inline const BITSTRING& prio() const
+    {return field_prio;}
+  inline BITSTRING& res()
+    {return field_res;}
+  inline const BITSTRING& res() const
+    {return field_res;}
+  inline BITSTRING& dp()
+    {return field_dp;}
+  inline const BITSTRING& dp() const
+    {return field_dp;}
+  inline OCTETSTRING& pf()
+    {return field_pf;}
+  inline const OCTETSTRING& pf() const
+    {return field_pf;}
+  inline OCTETSTRING& ps()
+    {return field_ps;}
+  inline const OCTETSTRING& ps() const
+    {return field_ps;}
+  inline OCTETSTRING& sa()
+    {return field_sa;}
+  inline const OCTETSTRING& sa() const
+    {return field_sa;}
+  inline int size_of() const
+    {return 6;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class J1939_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+J1939_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const J1939& other_value);
+void copy_template(const J1939_template& other_value);
+
+public:
+J1939_template();
+J1939_template(template_sel other_value);
+J1939_template(const J1939& other_value);
+J1939_template(const OPTIONAL<J1939>& other_value);
+J1939_template(const J1939_template& other_value);
+~J1939_template();
+J1939_template& operator=(template_sel other_value);
+J1939_template& operator=(const J1939& other_value);
+J1939_template& operator=(const OPTIONAL<J1939>& other_value);
+J1939_template& operator=(const J1939_template& other_value);
+boolean match(const J1939& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+J1939 valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+J1939_template& list_item(unsigned int list_index) const;
+BITSTRING_template& prio();
+const BITSTRING_template& prio() const;
+BITSTRING_template& res();
+const BITSTRING_template& res() const;
+BITSTRING_template& dp();
+const BITSTRING_template& dp() const;
+OCTETSTRING_template& pf();
+const OCTETSTRING_template& pf() const;
+OCTETSTRING_template& ps();
+const OCTETSTRING_template& ps() const;
+OCTETSTRING_template& sa();
+const OCTETSTRING_template& sa() const;
+int size_of() const;
+void log() const;
+void log_match(const J1939& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class J1939mod : public Base_Type {
+  BITSTRING field_prio;
+  BITSTRING field_res;
+  BITSTRING field_dp;
+  OCTETSTRING field_pf;
+  OCTETSTRING field_ps;
+  OCTETSTRING field_sa;
+  OCTETSTRING field_comp;
+public:
+  J1939mod();
+  J1939mod(const BITSTRING& par_prio,
+    const BITSTRING& par_res,
+    const BITSTRING& par_dp,
+    const OCTETSTRING& par_pf,
+    const OCTETSTRING& par_ps,
+    const OCTETSTRING& par_sa,
+    const OCTETSTRING& par_comp);
+  J1939mod(const J1939mod& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  J1939mod& operator=(const J1939mod& other_value);
+  boolean operator==(const J1939mod& other_value) const;
+  inline boolean operator!=(const J1939mod& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BITSTRING& prio()
+    {return field_prio;}
+  inline const BITSTRING& prio() const
+    {return field_prio;}
+  inline BITSTRING& res()
+    {return field_res;}
+  inline const BITSTRING& res() const
+    {return field_res;}
+  inline BITSTRING& dp()
+    {return field_dp;}
+  inline const BITSTRING& dp() const
+    {return field_dp;}
+  inline OCTETSTRING& pf()
+    {return field_pf;}
+  inline const OCTETSTRING& pf() const
+    {return field_pf;}
+  inline OCTETSTRING& ps()
+    {return field_ps;}
+  inline const OCTETSTRING& ps() const
+    {return field_ps;}
+  inline OCTETSTRING& sa()
+    {return field_sa;}
+  inline const OCTETSTRING& sa() const
+    {return field_sa;}
+  inline OCTETSTRING& comp()
+    {return field_comp;}
+  inline const OCTETSTRING& comp() const
+    {return field_comp;}
+  inline int size_of() const
+    {return 7;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class J1939mod_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+J1939mod_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const J1939mod& other_value);
+void copy_template(const J1939mod_template& other_value);
+
+public:
+J1939mod_template();
+J1939mod_template(template_sel other_value);
+J1939mod_template(const J1939mod& other_value);
+J1939mod_template(const OPTIONAL<J1939mod>& other_value);
+J1939mod_template(const J1939mod_template& other_value);
+~J1939mod_template();
+J1939mod_template& operator=(template_sel other_value);
+J1939mod_template& operator=(const J1939mod& other_value);
+J1939mod_template& operator=(const OPTIONAL<J1939mod>& other_value);
+J1939mod_template& operator=(const J1939mod_template& other_value);
+boolean match(const J1939mod& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+J1939mod valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+J1939mod_template& list_item(unsigned int list_index) const;
+BITSTRING_template& prio();
+const BITSTRING_template& prio() const;
+BITSTRING_template& res();
+const BITSTRING_template& res() const;
+BITSTRING_template& dp();
+const BITSTRING_template& dp() const;
+OCTETSTRING_template& pf();
+const OCTETSTRING_template& pf() const;
+OCTETSTRING_template& ps();
+const OCTETSTRING_template& ps() const;
+OCTETSTRING_template& sa();
+const OCTETSTRING_template& sa() const;
+OCTETSTRING_template& comp();
+const OCTETSTRING_template& comp() const;
+int size_of() const;
+void log() const;
+void log_match(const J1939mod& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class AnyIsoBusPdu : public Base_Type {
+public:
+enum union_selection_type { UNBOUND_VALUE = 0, ALT_etp__dt = 1, ALT_etp__cm = 2, ALT_vt2ecu = 3, ALT_ecu2vt = 4, ALT_requestForAddressClaimed = 5, ALT_tp__dt = 6, ALT_tp__cm = 7, ALT_networkMessage = 8, ALT_cannotClaimSourceAddress = 9, ALT_addressClaimed = 10, ALT_commandedAddress = 11 };
+private:
+union_selection_type union_selection;
+union {
+IsobusCMMessageTypes::ETP__DT *field_etp__dt;
+IsobusCMMessageTypes::ETP__CM *field_etp__cm;
+IsobusVTMessageTypes::VT2ECU *field_vt2ecu;
+IsobusVTMessageTypes::ECU2VT *field_ecu2vt;
+IsobusNMMessageTypes::RequestForAddressClaimed *field_requestForAddressClaimed;
+IsobusCMMessageTypes::TP__DT *field_tp__dt;
+IsobusCMMessageTypes::TP__CM *field_tp__cm;
+IsobusNMMessageTypes::NetworkMessage *field_networkMessage;
+IsobusNMMessageTypes::CannotClaimSourceAddress *field_cannotClaimSourceAddress;
+IsobusNMMessageTypes::AddressClaimed *field_addressClaimed;
+IsobusNMMessageTypes::CommandedAddress *field_commandedAddress;
+};
+void copy_value(const AnyIsoBusPdu& other_value);
+
+public:
+AnyIsoBusPdu();
+AnyIsoBusPdu(const AnyIsoBusPdu& other_value);
+~AnyIsoBusPdu();
+AnyIsoBusPdu& operator=(const AnyIsoBusPdu& other_value);
+boolean operator==(const AnyIsoBusPdu& other_value) const;
+inline boolean operator!=(const AnyIsoBusPdu& other_value) const { return !(*this == other_value); }
+IsobusCMMessageTypes::ETP__DT& etp__dt();
+const IsobusCMMessageTypes::ETP__DT& etp__dt() const;
+IsobusCMMessageTypes::ETP__CM& etp__cm();
+const IsobusCMMessageTypes::ETP__CM& etp__cm() const;
+IsobusVTMessageTypes::VT2ECU& vt2ecu();
+const IsobusVTMessageTypes::VT2ECU& vt2ecu() const;
+IsobusVTMessageTypes::ECU2VT& ecu2vt();
+const IsobusVTMessageTypes::ECU2VT& ecu2vt() const;
+IsobusNMMessageTypes::RequestForAddressClaimed& requestForAddressClaimed();
+const IsobusNMMessageTypes::RequestForAddressClaimed& requestForAddressClaimed() const;
+IsobusCMMessageTypes::TP__DT& tp__dt();
+const IsobusCMMessageTypes::TP__DT& tp__dt() const;
+IsobusCMMessageTypes::TP__CM& tp__cm();
+const IsobusCMMessageTypes::TP__CM& tp__cm() const;
+IsobusNMMessageTypes::NetworkMessage& networkMessage();
+const IsobusNMMessageTypes::NetworkMessage& networkMessage() const;
+IsobusNMMessageTypes::CannotClaimSourceAddress& cannotClaimSourceAddress();
+const IsobusNMMessageTypes::CannotClaimSourceAddress& cannotClaimSourceAddress() const;
+IsobusNMMessageTypes::AddressClaimed& addressClaimed();
+const IsobusNMMessageTypes::AddressClaimed& addressClaimed() const;
+IsobusNMMessageTypes::CommandedAddress& commandedAddress();
+const IsobusNMMessageTypes::CommandedAddress& commandedAddress() const;
+inline union_selection_type get_selection() const { return union_selection; }
+boolean ischosen(union_selection_type checked_selection) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class AnyIsoBusPdu_template : public Base_Template {
+union {
+struct {
+AnyIsoBusPdu::union_selection_type union_selection;
+union {
+IsobusCMMessageTypes::ETP__DT_template *field_etp__dt;
+IsobusCMMessageTypes::ETP__CM_template *field_etp__cm;
+IsobusVTMessageTypes::VT2ECU_template *field_vt2ecu;
+IsobusVTMessageTypes::ECU2VT_template *field_ecu2vt;
+IsobusNMMessageTypes::RequestForAddressClaimed_template *field_requestForAddressClaimed;
+IsobusCMMessageTypes::TP__DT_template *field_tp__dt;
+IsobusCMMessageTypes::TP__CM_template *field_tp__cm;
+IsobusNMMessageTypes::NetworkMessage_template *field_networkMessage;
+IsobusNMMessageTypes::CannotClaimSourceAddress_template *field_cannotClaimSourceAddress;
+IsobusNMMessageTypes::AddressClaimed_template *field_addressClaimed;
+IsobusNMMessageTypes::CommandedAddress_template *field_commandedAddress;
+};
+} single_value;
+struct {
+unsigned int n_values;
+AnyIsoBusPdu_template *list_value;
+} value_list;
+};
+void copy_value(const AnyIsoBusPdu& other_value);
+
+void copy_template(const AnyIsoBusPdu_template& other_value);
+
+public:
+AnyIsoBusPdu_template();
+AnyIsoBusPdu_template(template_sel other_value);
+AnyIsoBusPdu_template(const AnyIsoBusPdu& other_value);
+AnyIsoBusPdu_template(const OPTIONAL<AnyIsoBusPdu>& other_value);
+AnyIsoBusPdu_template(const AnyIsoBusPdu_template& other_value);
+~AnyIsoBusPdu_template();
+void clean_up();
+AnyIsoBusPdu_template& operator=(template_sel other_value);
+AnyIsoBusPdu_template& operator=(const AnyIsoBusPdu& other_value);
+AnyIsoBusPdu_template& operator=(const OPTIONAL<AnyIsoBusPdu>& other_value);
+AnyIsoBusPdu_template& operator=(const AnyIsoBusPdu_template& other_value);
+boolean match(const AnyIsoBusPdu& other_value, boolean legacy = FALSE) const;
+boolean is_value() const;AnyIsoBusPdu valueof() const;
+AnyIsoBusPdu_template& list_item(unsigned int list_index) const;
+void set_type(template_sel template_type, unsigned int list_length);
+IsobusCMMessageTypes::ETP__DT_template& etp__dt();
+const IsobusCMMessageTypes::ETP__DT_template& etp__dt() const;
+IsobusCMMessageTypes::ETP__CM_template& etp__cm();
+const IsobusCMMessageTypes::ETP__CM_template& etp__cm() const;
+IsobusVTMessageTypes::VT2ECU_template& vt2ecu();
+const IsobusVTMessageTypes::VT2ECU_template& vt2ecu() const;
+IsobusVTMessageTypes::ECU2VT_template& ecu2vt();
+const IsobusVTMessageTypes::ECU2VT_template& ecu2vt() const;
+IsobusNMMessageTypes::RequestForAddressClaimed_template& requestForAddressClaimed();
+const IsobusNMMessageTypes::RequestForAddressClaimed_template& requestForAddressClaimed() const;
+IsobusCMMessageTypes::TP__DT_template& tp__dt();
+const IsobusCMMessageTypes::TP__DT_template& tp__dt() const;
+IsobusCMMessageTypes::TP__CM_template& tp__cm();
+const IsobusCMMessageTypes::TP__CM_template& tp__cm() const;
+IsobusNMMessageTypes::NetworkMessage_template& networkMessage();
+const IsobusNMMessageTypes::NetworkMessage_template& networkMessage() const;
+IsobusNMMessageTypes::CannotClaimSourceAddress_template& cannotClaimSourceAddress();
+const IsobusNMMessageTypes::CannotClaimSourceAddress_template& cannotClaimSourceAddress() const;
+IsobusNMMessageTypes::AddressClaimed_template& addressClaimed();
+const IsobusNMMessageTypes::AddressClaimed_template& addressClaimed() const;
+IsobusNMMessageTypes::CommandedAddress_template& commandedAddress();
+const IsobusNMMessageTypes::CommandedAddress_template& commandedAddress() const;
+boolean ischosen(AnyIsoBusPdu::union_selection_type checked_selection) const;
+void log() const;
+void log_match(const AnyIsoBusPdu& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class CAN__frame__j1939 : public Base_Type {
+  J1939 field_can__j1939;
+  AnyIsoBusPdu field_can__pdu;
+public:
+  CAN__frame__j1939();
+  CAN__frame__j1939(const J1939& par_can__j1939,
+    const AnyIsoBusPdu& par_can__pdu);
+  CAN__frame__j1939(const CAN__frame__j1939& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  CAN__frame__j1939& operator=(const CAN__frame__j1939& other_value);
+  boolean operator==(const CAN__frame__j1939& other_value) const;
+  inline boolean operator!=(const CAN__frame__j1939& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline J1939& can__j1939()
+    {return field_can__j1939;}
+  inline const J1939& can__j1939() const
+    {return field_can__j1939;}
+  inline AnyIsoBusPdu& can__pdu()
+    {return field_can__pdu;}
+  inline const AnyIsoBusPdu& can__pdu() const
+    {return field_can__pdu;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class CAN__frame__j1939_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+CAN__frame__j1939_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const CAN__frame__j1939& other_value);
+void copy_template(const CAN__frame__j1939_template& other_value);
+
+public:
+CAN__frame__j1939_template();
+CAN__frame__j1939_template(template_sel other_value);
+CAN__frame__j1939_template(const CAN__frame__j1939& other_value);
+CAN__frame__j1939_template(const OPTIONAL<CAN__frame__j1939>& other_value);
+CAN__frame__j1939_template(const CAN__frame__j1939_template& other_value);
+~CAN__frame__j1939_template();
+CAN__frame__j1939_template& operator=(template_sel other_value);
+CAN__frame__j1939_template& operator=(const CAN__frame__j1939& other_value);
+CAN__frame__j1939_template& operator=(const OPTIONAL<CAN__frame__j1939>& other_value);
+CAN__frame__j1939_template& operator=(const CAN__frame__j1939_template& other_value);
+boolean match(const CAN__frame__j1939& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+CAN__frame__j1939 valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+CAN__frame__j1939_template& list_item(unsigned int list_index) const;
+J1939_template& can__j1939();
+const J1939_template& can__j1939() const;
+AnyIsoBusPdu_template& can__pdu();
+const AnyIsoBusPdu_template& can__pdu() const;
+int size_of() const;
+void log() const;
+void log_match(const CAN__frame__j1939& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class CAN__frame__j1939mod : public Base_Type {
+  J1939mod field_can__j1939;
+  AnyIsoBusPdu field_can__pdu;
+public:
+  CAN__frame__j1939mod();
+  CAN__frame__j1939mod(const J1939mod& par_can__j1939,
+    const AnyIsoBusPdu& par_can__pdu);
+  CAN__frame__j1939mod(const CAN__frame__j1939mod& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  CAN__frame__j1939mod& operator=(const CAN__frame__j1939mod& other_value);
+  boolean operator==(const CAN__frame__j1939mod& other_value) const;
+  inline boolean operator!=(const CAN__frame__j1939mod& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline J1939mod& can__j1939()
+    {return field_can__j1939;}
+  inline const J1939mod& can__j1939() const
+    {return field_can__j1939;}
+  inline AnyIsoBusPdu& can__pdu()
+    {return field_can__pdu;}
+  inline const AnyIsoBusPdu& can__pdu() const
+    {return field_can__pdu;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class CAN__frame__j1939mod_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+CAN__frame__j1939mod_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const CAN__frame__j1939mod& other_value);
+void copy_template(const CAN__frame__j1939mod_template& other_value);
+
+public:
+CAN__frame__j1939mod_template();
+CAN__frame__j1939mod_template(template_sel other_value);
+CAN__frame__j1939mod_template(const CAN__frame__j1939mod& other_value);
+CAN__frame__j1939mod_template(const OPTIONAL<CAN__frame__j1939mod>& other_value);
+CAN__frame__j1939mod_template(const CAN__frame__j1939mod_template& other_value);
+~CAN__frame__j1939mod_template();
+CAN__frame__j1939mod_template& operator=(template_sel other_value);
+CAN__frame__j1939mod_template& operator=(const CAN__frame__j1939mod& other_value);
+CAN__frame__j1939mod_template& operator=(const OPTIONAL<CAN__frame__j1939mod>& other_value);
+CAN__frame__j1939mod_template& operator=(const CAN__frame__j1939mod_template& other_value);
+boolean match(const CAN__frame__j1939mod& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+CAN__frame__j1939mod valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+CAN__frame__j1939mod_template& list_item(unsigned int list_index) const;
+J1939mod_template& can__j1939();
+const J1939mod_template& can__j1939() const;
+AnyIsoBusPdu_template& can__pdu();
+const AnyIsoBusPdu_template& can__pdu() const;
+int size_of() const;
+void log() const;
+void log_match(const CAN__frame__j1939mod& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+
+/* Function prototypes */
+
+extern OCTETSTRING encode__CAN__frame__j1939mod(const CAN__frame__j1939mod& pdu);
+extern CAN__frame__j1939mod decode__CAN__frame__j1939mod(const OCTETSTRING& data);
+extern Can::CAN__frame j1939frame2can(const CAN__frame__j1939& p__can__frame__j1939, const BITSTRING& p__priority, const OCTETSTRING& p__da, const OCTETSTRING& p__sa);
+extern OCTETSTRING pdu1__j1939id2canid(const J1939& p__j1939, const BITSTRING& p__priority, const OCTETSTRING& p__da, const OCTETSTRING& p__sa);
+extern OCTETSTRING j1939id2canid(const J1939& p__j1939);
+extern CAN__frame__j1939 can2j1939frame(const Can::CAN__frame& p__can__frame);
+extern J1939 canid2j1939(const OCTETSTRING& p__can__id);
+extern OCTETSTRING f__insert__aux__hdr(const OCTETSTRING& p__os);
+extern OCTETSTRING f__remove__aux__hdr(const OCTETSTRING& p__os);
+extern CAN__frame__j1939 f__map__mod2frame(const CAN__frame__j1939mod& p__frame);
+extern CAN__frame__j1939mod f__map__frame2mod(const CAN__frame__j1939& p__frame);
+extern OCTETSTRING f__encode__CAN__frame__j1939(const CAN__frame__j1939& pdu);
+extern CAN__frame__j1939 f__decode__CAN__frame__j1939(const OCTETSTRING& data);
+
+/* Global variable declarations */
+
+extern const OCTETSTRING& ISOBUS__PRIORITY__MASK;
+extern const OCTETSTRING& ISOBUS__RESERVED__MASK;
+extern const OCTETSTRING& ISOBUS__DATAPAGE__MASK;
+extern const OCTETSTRING& ISOBUS__PDUFORMAT__MASK;
+extern const OCTETSTRING& ISOBUS__PDUSPECIFIC__MASK;
+extern const OCTETSTRING& ISOBUS__SOURCEADDRESS__MASK;
+extern const TTCN_RAWdescriptor_t Priority_raw_;
+extern const XERdescriptor_t Priority_xer_;
+extern const TTCN_OERdescriptor_t Priority_oer_;
+extern const TTCN_Typedescriptor_t Priority_descr_;
+extern const TTCN_RAWdescriptor_t J1939_prio_raw_;
+extern const XERdescriptor_t J1939_prio_xer_;
+extern const TTCN_OERdescriptor_t J1939_prio_oer_;
+extern const TTCN_Typedescriptor_t J1939_prio_descr_;
+extern const TTCN_RAWdescriptor_t J1939_res_raw_;
+extern const XERdescriptor_t J1939_res_xer_;
+extern const TTCN_OERdescriptor_t J1939_res_oer_;
+extern const TTCN_Typedescriptor_t J1939_res_descr_;
+extern const TTCN_RAWdescriptor_t J1939_dp_raw_;
+extern const XERdescriptor_t J1939_dp_xer_;
+extern const TTCN_OERdescriptor_t J1939_dp_oer_;
+extern const TTCN_Typedescriptor_t J1939_dp_descr_;
+extern const TTCN_RAWdescriptor_t J1939_pf_raw_;
+extern const XERdescriptor_t J1939_pf_xer_;
+extern const TTCN_OERdescriptor_t J1939_pf_oer_;
+extern const TTCN_Typedescriptor_t J1939_pf_descr_;
+extern const TTCN_RAWdescriptor_t J1939_ps_raw_;
+extern const XERdescriptor_t J1939_ps_xer_;
+extern const TTCN_OERdescriptor_t J1939_ps_oer_;
+extern const TTCN_Typedescriptor_t J1939_ps_descr_;
+extern const TTCN_RAWdescriptor_t J1939_sa_raw_;
+extern const XERdescriptor_t J1939_sa_xer_;
+extern const TTCN_OERdescriptor_t J1939_sa_oer_;
+extern const TTCN_Typedescriptor_t J1939_sa_descr_;
+extern const TTCN_RAWdescriptor_t J1939_raw_;
+extern const TTCN_Typedescriptor_t J1939_descr_;
+extern const TTCN_RAWdescriptor_t J1939mod_prio_raw_;
+extern const XERdescriptor_t J1939mod_prio_xer_;
+extern const TTCN_OERdescriptor_t J1939mod_prio_oer_;
+extern const TTCN_Typedescriptor_t J1939mod_prio_descr_;
+extern const TTCN_RAWdescriptor_t J1939mod_res_raw_;
+extern const XERdescriptor_t J1939mod_res_xer_;
+extern const TTCN_OERdescriptor_t J1939mod_res_oer_;
+extern const TTCN_Typedescriptor_t J1939mod_res_descr_;
+extern const TTCN_RAWdescriptor_t J1939mod_dp_raw_;
+extern const XERdescriptor_t J1939mod_dp_xer_;
+extern const TTCN_OERdescriptor_t J1939mod_dp_oer_;
+extern const TTCN_Typedescriptor_t J1939mod_dp_descr_;
+extern const TTCN_RAWdescriptor_t J1939mod_pf_raw_;
+extern const XERdescriptor_t J1939mod_pf_xer_;
+extern const TTCN_OERdescriptor_t J1939mod_pf_oer_;
+extern const TTCN_Typedescriptor_t J1939mod_pf_descr_;
+extern const TTCN_RAWdescriptor_t J1939mod_ps_raw_;
+extern const XERdescriptor_t J1939mod_ps_xer_;
+extern const TTCN_OERdescriptor_t J1939mod_ps_oer_;
+extern const TTCN_Typedescriptor_t J1939mod_ps_descr_;
+extern const TTCN_RAWdescriptor_t J1939mod_sa_raw_;
+extern const XERdescriptor_t J1939mod_sa_xer_;
+extern const TTCN_OERdescriptor_t J1939mod_sa_oer_;
+extern const TTCN_Typedescriptor_t J1939mod_sa_descr_;
+extern const TTCN_RAWdescriptor_t J1939mod_comp_raw_;
+extern const XERdescriptor_t J1939mod_comp_xer_;
+extern const TTCN_OERdescriptor_t J1939mod_comp_oer_;
+extern const TTCN_Typedescriptor_t J1939mod_comp_descr_;
+extern const TTCN_RAWdescriptor_t J1939mod_raw_;
+extern const TTCN_Typedescriptor_t J1939mod_descr_;
+extern const TTCN_RAWdescriptor_t AnyIsoBusPdu_raw_;
+extern const TTCN_Typedescriptor_t AnyIsoBusPdu_descr_;
+extern const TTCN_RAWdescriptor_t CAN__frame__j1939_raw_;
+extern const TTCN_Typedescriptor_t CAN__frame__j1939_descr_;
+extern const TTCN_RAWdescriptor_t CAN__frame__j1939mod_can__pdu_raw_;
+extern const TTCN_Typedescriptor_t CAN__frame__j1939mod_can__pdu_descr_;
+extern const TTCN_RAWdescriptor_t CAN__frame__j1939mod_raw_;
+extern const TTCN_Typedescriptor_t CAN__frame__j1939mod_descr_;
+extern TTCN_Module module_object;
+
+} /* end of namespace */
+
+#endif
diff --git a/demo/Isobus.o b/demo/Isobus.o
new file mode 100644
index 0000000..9c1493b
--- /dev/null
+++ b/demo/Isobus.o
Binary files differ
diff --git a/demo/IsobusCMMessageTypes.cc b/demo/IsobusCMMessageTypes.cc
new file mode 100644
index 0000000..3608fa1
--- /dev/null
+++ b/demo/IsobusCMMessageTypes.cc
@@ -0,0 +1,17419 @@
+// This C++ source file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+/* Including header files */
+
+#include "IsobusCMMessageTypes.hh"
+
+namespace IsobusCMMessageTypes {
+
+/* Prototypes of static functions */
+
+static void pre_init_module();
+static void post_init_module();
+
+/* Literal string constants */
+
+static const unsigned char os_0_octets[] = { 16 },
+os_1_octets[] = { 17 },
+os_2_octets[] = { 19 },
+os_3_octets[] = { 32 },
+os_5_octets[] = { 33 },
+os_6_octets[] = { 34 },
+os_7_octets[] = { 35 },
+os_4_octets[] = { 255 };
+static const OCTETSTRING os_0(1, os_0_octets),
+os_1(1, os_1_octets),
+os_2(1, os_2_octets),
+os_3(1, os_3_octets),
+os_5(1, os_5_octets),
+os_6(1, os_6_octets),
+os_7(1, os_7_octets),
+os_4(1, os_4_octets);
+static const unsigned char module_checksum[] = { 0xf5, 0x67, 0x02, 0xbc, 0x33, 0x07, 0xbc, 0xd1, 0x80, 0xb3, 0xef, 0x1b, 0x59, 0x25, 0x7c, 0x3f };
+
+/* Global variable definitions */
+
+const TTCN_RAWdescriptor_t SEQ__NO_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,NULL,false};
+const XERdescriptor_t       SEQ__NO_xer_ = { {"SEQ_NO>\n", "SEQ_NO>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SEQ__NO_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SEQ__NO_descr_ = { "@IsobusCMMessageTypes.SEQ_NO", &INTEGER_ber_, &SEQ__NO_raw_, &INTEGER_text_, &SEQ__NO_xer_, &INTEGER_json_, &SEQ__NO_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t NUMBER__OF__PACKETS_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,NULL,false};
+const XERdescriptor_t       NUMBER__OF__PACKETS_xer_ = { {"NUMBER_OF_PACKETS>\n", "NUMBER_OF_PACKETS>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t NUMBER__OF__PACKETS_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t NUMBER__OF__PACKETS_descr_ = { "@IsobusCMMessageTypes.NUMBER_OF_PACKETS", &INTEGER_ber_, &NUMBER__OF__PACKETS_raw_, &INTEGER_text_, &NUMBER__OF__PACKETS_xer_, &INTEGER_json_, &NUMBER__OF__PACKETS_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       Ctrl_xer_ = { {"Ctrl>\n", "Ctrl>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int Ctrl_oer_ext_arr_[0] = {};
+const int Ctrl_oer_p_[0] = {};
+const TTCN_OERdescriptor_t Ctrl_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Ctrl_oer_ext_arr_, 0, Ctrl_oer_p_};
+const TTCN_Typedescriptor_t Ctrl_descr_ = { "@IsobusCMMessageTypes.Ctrl", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &Ctrl_xer_, &OCTETSTRING_json_, &Ctrl_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t RequestToSend_ctrl_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       RequestToSend_ctrl_xer_ = { {"ctrl>\n", "ctrl>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int RequestToSend_ctrl_oer_ext_arr_[0] = {};
+const int RequestToSend_ctrl_oer_p_[0] = {};
+const TTCN_OERdescriptor_t RequestToSend_ctrl_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RequestToSend_ctrl_oer_ext_arr_, 0, RequestToSend_ctrl_oer_p_};
+const TTCN_Typedescriptor_t RequestToSend_ctrl_descr_ = { "@IsobusCMMessageTypes.RequestToSend.ctrl", &OCTETSTRING_ber_, &RequestToSend_ctrl_raw_, &OCTETSTRING_text_, &RequestToSend_ctrl_xer_, &OCTETSTRING_json_, &RequestToSend_ctrl_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       RequestToSend_msgSizeInBytes_xer_ = { {"msgSizeInBytes>\n", "msgSizeInBytes>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t RequestToSend_msgSizeInBytes_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t RequestToSend_msgSizeInBytes_descr_ = { "@IsobusCMMessageTypes.RequestToSend.msgSizeInBytes", &INTEGER_ber_, &IsobusMessageTypes::INT2_raw_, &INTEGER_text_, &RequestToSend_msgSizeInBytes_xer_, &INTEGER_json_, &RequestToSend_msgSizeInBytes_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       RequestToSend_totalNumberOfPackets_xer_ = { {"totalNumberOfPackets>\n", "totalNumberOfPackets>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t RequestToSend_totalNumberOfPackets_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t RequestToSend_totalNumberOfPackets_descr_ = { "@IsobusCMMessageTypes.RequestToSend.totalNumberOfPackets", &INTEGER_ber_, &NUMBER__OF__PACKETS_raw_, &INTEGER_text_, &RequestToSend_totalNumberOfPackets_xer_, &INTEGER_json_, &RequestToSend_totalNumberOfPackets_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       RequestToSend_maxNoOfPacketsInResponseToCTS_xer_ = { {"maxNoOfPacketsInResponseToCTS>\n", "maxNoOfPacketsInResponseToCTS>\n"}, {31, 31}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t RequestToSend_maxNoOfPacketsInResponseToCTS_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t RequestToSend_maxNoOfPacketsInResponseToCTS_descr_ = { "@IsobusCMMessageTypes.RequestToSend.maxNoOfPacketsInResponseToCTS", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &RequestToSend_maxNoOfPacketsInResponseToCTS_xer_, &INTEGER_json_, &RequestToSend_maxNoOfPacketsInResponseToCTS_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       RequestToSend_pgnOfMultiPacketMessage_xer_ = { {"pgnOfMultiPacketMessage>\n", "pgnOfMultiPacketMessage>\n"}, {25, 25}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t RequestToSend_pgnOfMultiPacketMessage_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t RequestToSend_pgnOfMultiPacketMessage_descr_ = { "@IsobusCMMessageTypes.RequestToSend.pgnOfMultiPacketMessage", &INTEGER_ber_, &IsobusMessageTypes::INT24nb_raw_, &INTEGER_text_, &RequestToSend_pgnOfMultiPacketMessage_xer_, &INTEGER_json_, &RequestToSend_pgnOfMultiPacketMessage_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t RequestToSend_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for RequestToSend
+const TTCN_Typedescriptor_t RequestToSend_descr_ = { "@IsobusCMMessageTypes.RequestToSend", NULL, &RequestToSend_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ClearToSend_ctrl_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ClearToSend_ctrl_xer_ = { {"ctrl>\n", "ctrl>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ClearToSend_ctrl_oer_ext_arr_[0] = {};
+const int ClearToSend_ctrl_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ClearToSend_ctrl_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ClearToSend_ctrl_oer_ext_arr_, 0, ClearToSend_ctrl_oer_p_};
+const TTCN_Typedescriptor_t ClearToSend_ctrl_descr_ = { "@IsobusCMMessageTypes.ClearToSend.ctrl", &OCTETSTRING_ber_, &ClearToSend_ctrl_raw_, &OCTETSTRING_text_, &ClearToSend_ctrl_xer_, &OCTETSTRING_json_, &ClearToSend_ctrl_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ClearToSend_totalNumberOfPackets_xer_ = { {"totalNumberOfPackets>\n", "totalNumberOfPackets>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ClearToSend_totalNumberOfPackets_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ClearToSend_totalNumberOfPackets_descr_ = { "@IsobusCMMessageTypes.ClearToSend.totalNumberOfPackets", &INTEGER_ber_, &NUMBER__OF__PACKETS_raw_, &INTEGER_text_, &ClearToSend_totalNumberOfPackets_xer_, &INTEGER_json_, &ClearToSend_totalNumberOfPackets_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ClearToSend_nextPacketNumber_xer_ = { {"nextPacketNumber>\n", "nextPacketNumber>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ClearToSend_nextPacketNumber_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ClearToSend_nextPacketNumber_descr_ = { "@IsobusCMMessageTypes.ClearToSend.nextPacketNumber", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ClearToSend_nextPacketNumber_xer_, &INTEGER_json_, &ClearToSend_nextPacketNumber_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ClearToSend_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ClearToSend_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ClearToSend_reserved4_oer_ext_arr_[0] = {};
+const int ClearToSend_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ClearToSend_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ClearToSend_reserved4_oer_ext_arr_, 0, ClearToSend_reserved4_oer_p_};
+const TTCN_Typedescriptor_t ClearToSend_reserved4_descr_ = { "@IsobusCMMessageTypes.ClearToSend.reserved4", &OCTETSTRING_ber_, &ClearToSend_reserved4_raw_, &OCTETSTRING_text_, &ClearToSend_reserved4_xer_, &OCTETSTRING_json_, &ClearToSend_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ClearToSend_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ClearToSend_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ClearToSend_reserved5_oer_ext_arr_[0] = {};
+const int ClearToSend_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ClearToSend_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ClearToSend_reserved5_oer_ext_arr_, 0, ClearToSend_reserved5_oer_p_};
+const TTCN_Typedescriptor_t ClearToSend_reserved5_descr_ = { "@IsobusCMMessageTypes.ClearToSend.reserved5", &OCTETSTRING_ber_, &ClearToSend_reserved5_raw_, &OCTETSTRING_text_, &ClearToSend_reserved5_xer_, &OCTETSTRING_json_, &ClearToSend_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ClearToSend_pgnOfMultiPacketMessage_xer_ = { {"pgnOfMultiPacketMessage>\n", "pgnOfMultiPacketMessage>\n"}, {25, 25}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ClearToSend_pgnOfMultiPacketMessage_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ClearToSend_pgnOfMultiPacketMessage_descr_ = { "@IsobusCMMessageTypes.ClearToSend.pgnOfMultiPacketMessage", &INTEGER_ber_, &IsobusMessageTypes::INT24nb_raw_, &INTEGER_text_, &ClearToSend_pgnOfMultiPacketMessage_xer_, &INTEGER_json_, &ClearToSend_pgnOfMultiPacketMessage_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ClearToSend_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ClearToSend
+const TTCN_Typedescriptor_t ClearToSend_descr_ = { "@IsobusCMMessageTypes.ClearToSend", NULL, &ClearToSend_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EndOfMessageAcknowledgement_ctrl_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       EndOfMessageAcknowledgement_ctrl_xer_ = { {"ctrl>\n", "ctrl>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int EndOfMessageAcknowledgement_ctrl_oer_ext_arr_[0] = {};
+const int EndOfMessageAcknowledgement_ctrl_oer_p_[0] = {};
+const TTCN_OERdescriptor_t EndOfMessageAcknowledgement_ctrl_oer_ = { -1, TRUE, 1, FALSE, 0, 0, EndOfMessageAcknowledgement_ctrl_oer_ext_arr_, 0, EndOfMessageAcknowledgement_ctrl_oer_p_};
+const TTCN_Typedescriptor_t EndOfMessageAcknowledgement_ctrl_descr_ = { "@IsobusCMMessageTypes.EndOfMessageAcknowledgement.ctrl", &OCTETSTRING_ber_, &EndOfMessageAcknowledgement_ctrl_raw_, &OCTETSTRING_text_, &EndOfMessageAcknowledgement_ctrl_xer_, &OCTETSTRING_json_, &EndOfMessageAcknowledgement_ctrl_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       EndOfMessageAcknowledgement_msgSizeInByte_xer_ = { {"msgSizeInByte>\n", "msgSizeInByte>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t EndOfMessageAcknowledgement_msgSizeInByte_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t EndOfMessageAcknowledgement_msgSizeInByte_descr_ = { "@IsobusCMMessageTypes.EndOfMessageAcknowledgement.msgSizeInByte", &INTEGER_ber_, &IsobusMessageTypes::INT2_raw_, &INTEGER_text_, &EndOfMessageAcknowledgement_msgSizeInByte_xer_, &INTEGER_json_, &EndOfMessageAcknowledgement_msgSizeInByte_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       EndOfMessageAcknowledgement_totalNumberOfPackets_xer_ = { {"totalNumberOfPackets>\n", "totalNumberOfPackets>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t EndOfMessageAcknowledgement_totalNumberOfPackets_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t EndOfMessageAcknowledgement_totalNumberOfPackets_descr_ = { "@IsobusCMMessageTypes.EndOfMessageAcknowledgement.totalNumberOfPackets", &INTEGER_ber_, &NUMBER__OF__PACKETS_raw_, &INTEGER_text_, &EndOfMessageAcknowledgement_totalNumberOfPackets_xer_, &INTEGER_json_, &EndOfMessageAcknowledgement_totalNumberOfPackets_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EndOfMessageAcknowledgement_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       EndOfMessageAcknowledgement_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int EndOfMessageAcknowledgement_reserved5_oer_ext_arr_[0] = {};
+const int EndOfMessageAcknowledgement_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t EndOfMessageAcknowledgement_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, EndOfMessageAcknowledgement_reserved5_oer_ext_arr_, 0, EndOfMessageAcknowledgement_reserved5_oer_p_};
+const TTCN_Typedescriptor_t EndOfMessageAcknowledgement_reserved5_descr_ = { "@IsobusCMMessageTypes.EndOfMessageAcknowledgement.reserved5", &OCTETSTRING_ber_, &EndOfMessageAcknowledgement_reserved5_raw_, &OCTETSTRING_text_, &EndOfMessageAcknowledgement_reserved5_xer_, &OCTETSTRING_json_, &EndOfMessageAcknowledgement_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       EndOfMessageAcknowledgement_pgnOfMultiPacketMessage_xer_ = { {"pgnOfMultiPacketMessage>\n", "pgnOfMultiPacketMessage>\n"}, {25, 25}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t EndOfMessageAcknowledgement_pgnOfMultiPacketMessage_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t EndOfMessageAcknowledgement_pgnOfMultiPacketMessage_descr_ = { "@IsobusCMMessageTypes.EndOfMessageAcknowledgement.pgnOfMultiPacketMessage", &INTEGER_ber_, &IsobusMessageTypes::INT24nb_raw_, &INTEGER_text_, &EndOfMessageAcknowledgement_pgnOfMultiPacketMessage_xer_, &INTEGER_json_, &EndOfMessageAcknowledgement_pgnOfMultiPacketMessage_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EndOfMessageAcknowledgement_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for EndOfMessageAcknowledgement
+const TTCN_Typedescriptor_t EndOfMessageAcknowledgement_descr_ = { "@IsobusCMMessageTypes.EndOfMessageAcknowledgement", NULL, &EndOfMessageAcknowledgement_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t e__ConnectionAbort__AbortReason_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,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for e__ConnectionAbort__AbortReason
+const TTCN_Typedescriptor_t e__ConnectionAbort__AbortReason_descr_ = { "@IsobusCMMessageTypes.e_ConnectionAbort_AbortReason", NULL, &e__ConnectionAbort__AbortReason_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ConnectionAbort_ctrl_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ConnectionAbort_ctrl_xer_ = { {"ctrl>\n", "ctrl>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ConnectionAbort_ctrl_oer_ext_arr_[0] = {};
+const int ConnectionAbort_ctrl_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ConnectionAbort_ctrl_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ConnectionAbort_ctrl_oer_ext_arr_, 0, ConnectionAbort_ctrl_oer_p_};
+const TTCN_Typedescriptor_t ConnectionAbort_ctrl_descr_ = { "@IsobusCMMessageTypes.ConnectionAbort.ctrl", &OCTETSTRING_ber_, &ConnectionAbort_ctrl_raw_, &OCTETSTRING_text_, &ConnectionAbort_ctrl_xer_, &OCTETSTRING_json_, &ConnectionAbort_ctrl_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ConnectionAbort_reserved3_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ConnectionAbort_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ConnectionAbort_reserved3_oer_ext_arr_[0] = {};
+const int ConnectionAbort_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ConnectionAbort_reserved3_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ConnectionAbort_reserved3_oer_ext_arr_, 0, ConnectionAbort_reserved3_oer_p_};
+const TTCN_Typedescriptor_t ConnectionAbort_reserved3_descr_ = { "@IsobusCMMessageTypes.ConnectionAbort.reserved3", &OCTETSTRING_ber_, &ConnectionAbort_reserved3_raw_, &OCTETSTRING_text_, &ConnectionAbort_reserved3_xer_, &OCTETSTRING_json_, &ConnectionAbort_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ConnectionAbort_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ConnectionAbort_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ConnectionAbort_reserved4_oer_ext_arr_[0] = {};
+const int ConnectionAbort_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ConnectionAbort_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ConnectionAbort_reserved4_oer_ext_arr_, 0, ConnectionAbort_reserved4_oer_p_};
+const TTCN_Typedescriptor_t ConnectionAbort_reserved4_descr_ = { "@IsobusCMMessageTypes.ConnectionAbort.reserved4", &OCTETSTRING_ber_, &ConnectionAbort_reserved4_raw_, &OCTETSTRING_text_, &ConnectionAbort_reserved4_xer_, &OCTETSTRING_json_, &ConnectionAbort_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ConnectionAbort_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ConnectionAbort_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ConnectionAbort_reserved5_oer_ext_arr_[0] = {};
+const int ConnectionAbort_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ConnectionAbort_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ConnectionAbort_reserved5_oer_ext_arr_, 0, ConnectionAbort_reserved5_oer_p_};
+const TTCN_Typedescriptor_t ConnectionAbort_reserved5_descr_ = { "@IsobusCMMessageTypes.ConnectionAbort.reserved5", &OCTETSTRING_ber_, &ConnectionAbort_reserved5_raw_, &OCTETSTRING_text_, &ConnectionAbort_reserved5_xer_, &OCTETSTRING_json_, &ConnectionAbort_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ConnectionAbort_pgnOfMultiPacketMessage_xer_ = { {"pgnOfMultiPacketMessage>\n", "pgnOfMultiPacketMessage>\n"}, {25, 25}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ConnectionAbort_pgnOfMultiPacketMessage_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ConnectionAbort_pgnOfMultiPacketMessage_descr_ = { "@IsobusCMMessageTypes.ConnectionAbort.pgnOfMultiPacketMessage", &INTEGER_ber_, &IsobusMessageTypes::INT24nb_raw_, &INTEGER_text_, &ConnectionAbort_pgnOfMultiPacketMessage_xer_, &INTEGER_json_, &ConnectionAbort_pgnOfMultiPacketMessage_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ConnectionAbort_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ConnectionAbort
+const TTCN_Typedescriptor_t ConnectionAbort_descr_ = { "@IsobusCMMessageTypes.ConnectionAbort", NULL, &ConnectionAbort_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BroadcastAnnounce_ctrl_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       BroadcastAnnounce_ctrl_xer_ = { {"ctrl>\n", "ctrl>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int BroadcastAnnounce_ctrl_oer_ext_arr_[0] = {};
+const int BroadcastAnnounce_ctrl_oer_p_[0] = {};
+const TTCN_OERdescriptor_t BroadcastAnnounce_ctrl_oer_ = { -1, TRUE, 1, FALSE, 0, 0, BroadcastAnnounce_ctrl_oer_ext_arr_, 0, BroadcastAnnounce_ctrl_oer_p_};
+const TTCN_Typedescriptor_t BroadcastAnnounce_ctrl_descr_ = { "@IsobusCMMessageTypes.BroadcastAnnounce.ctrl", &OCTETSTRING_ber_, &BroadcastAnnounce_ctrl_raw_, &OCTETSTRING_text_, &BroadcastAnnounce_ctrl_xer_, &OCTETSTRING_json_, &BroadcastAnnounce_ctrl_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       BroadcastAnnounce_msgSizeInByte_xer_ = { {"msgSizeInByte>\n", "msgSizeInByte>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BroadcastAnnounce_msgSizeInByte_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BroadcastAnnounce_msgSizeInByte_descr_ = { "@IsobusCMMessageTypes.BroadcastAnnounce.msgSizeInByte", &INTEGER_ber_, &IsobusMessageTypes::INT2_raw_, &INTEGER_text_, &BroadcastAnnounce_msgSizeInByte_xer_, &INTEGER_json_, &BroadcastAnnounce_msgSizeInByte_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       BroadcastAnnounce_totalNumberOfPackets_xer_ = { {"totalNumberOfPackets>\n", "totalNumberOfPackets>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BroadcastAnnounce_totalNumberOfPackets_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BroadcastAnnounce_totalNumberOfPackets_descr_ = { "@IsobusCMMessageTypes.BroadcastAnnounce.totalNumberOfPackets", &INTEGER_ber_, &NUMBER__OF__PACKETS_raw_, &INTEGER_text_, &BroadcastAnnounce_totalNumberOfPackets_xer_, &INTEGER_json_, &BroadcastAnnounce_totalNumberOfPackets_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BroadcastAnnounce_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       BroadcastAnnounce_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int BroadcastAnnounce_reserved5_oer_ext_arr_[0] = {};
+const int BroadcastAnnounce_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t BroadcastAnnounce_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, BroadcastAnnounce_reserved5_oer_ext_arr_, 0, BroadcastAnnounce_reserved5_oer_p_};
+const TTCN_Typedescriptor_t BroadcastAnnounce_reserved5_descr_ = { "@IsobusCMMessageTypes.BroadcastAnnounce.reserved5", &OCTETSTRING_ber_, &BroadcastAnnounce_reserved5_raw_, &OCTETSTRING_text_, &BroadcastAnnounce_reserved5_xer_, &OCTETSTRING_json_, &BroadcastAnnounce_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       BroadcastAnnounce_pgnOfMultiPacketMessage_xer_ = { {"pgnOfMultiPacketMessage>\n", "pgnOfMultiPacketMessage>\n"}, {25, 25}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BroadcastAnnounce_pgnOfMultiPacketMessage_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BroadcastAnnounce_pgnOfMultiPacketMessage_descr_ = { "@IsobusCMMessageTypes.BroadcastAnnounce.pgnOfMultiPacketMessage", &INTEGER_ber_, &IsobusMessageTypes::INT24nb_raw_, &INTEGER_text_, &BroadcastAnnounce_pgnOfMultiPacketMessage_xer_, &INTEGER_json_, &BroadcastAnnounce_pgnOfMultiPacketMessage_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BroadcastAnnounce_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for BroadcastAnnounce
+const TTCN_Typedescriptor_t BroadcastAnnounce_descr_ = { "@IsobusCMMessageTypes.BroadcastAnnounce", NULL, &BroadcastAnnounce_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t TP__CM_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for TP__CM
+const TTCN_Typedescriptor_t TP__CM_descr_ = { "@IsobusCMMessageTypes.TP_CM", NULL, &TP__CM_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ETP__MSG__SIZE_raw_ = {32,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       ETP__MSG__SIZE_xer_ = { {"ETP_MSG_SIZE>\n", "ETP_MSG_SIZE>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ETP__MSG__SIZE_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ETP__MSG__SIZE_descr_ = { "@IsobusCMMessageTypes.ETP_MSG_SIZE", &INTEGER_ber_, &ETP__MSG__SIZE_raw_, &INTEGER_text_, &ETP__MSG__SIZE_xer_, &INTEGER_json_, &ETP__MSG__SIZE_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedMessageRequestToSend_ctrl_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExtendedMessageRequestToSend_ctrl_xer_ = { {"ctrl>\n", "ctrl>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedMessageRequestToSend_ctrl_oer_ext_arr_[0] = {};
+const int ExtendedMessageRequestToSend_ctrl_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedMessageRequestToSend_ctrl_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExtendedMessageRequestToSend_ctrl_oer_ext_arr_, 0, ExtendedMessageRequestToSend_ctrl_oer_p_};
+const TTCN_Typedescriptor_t ExtendedMessageRequestToSend_ctrl_descr_ = { "@IsobusCMMessageTypes.ExtendedMessageRequestToSend.ctrl", &OCTETSTRING_ber_, &ExtendedMessageRequestToSend_ctrl_raw_, &OCTETSTRING_text_, &ExtendedMessageRequestToSend_ctrl_xer_, &OCTETSTRING_json_, &ExtendedMessageRequestToSend_ctrl_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedMessageRequestToSend_msgSizeInBytes_xer_ = { {"msgSizeInBytes>\n", "msgSizeInBytes>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ExtendedMessageRequestToSend_msgSizeInBytes_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ExtendedMessageRequestToSend_msgSizeInBytes_descr_ = { "@IsobusCMMessageTypes.ExtendedMessageRequestToSend.msgSizeInBytes", &INTEGER_ber_, &ETP__MSG__SIZE_raw_, &INTEGER_text_, &ExtendedMessageRequestToSend_msgSizeInBytes_xer_, &INTEGER_json_, &ExtendedMessageRequestToSend_msgSizeInBytes_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedMessageRequestToSend_pgnOfExtendedPacketedMessage_xer_ = { {"pgnOfExtendedPacketedMessage>\n", "pgnOfExtendedPacketedMessage>\n"}, {30, 30}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ExtendedMessageRequestToSend_pgnOfExtendedPacketedMessage_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ExtendedMessageRequestToSend_pgnOfExtendedPacketedMessage_descr_ = { "@IsobusCMMessageTypes.ExtendedMessageRequestToSend.pgnOfExtendedPacketedMessage", &INTEGER_ber_, &IsobusMessageTypes::INT24nb_raw_, &INTEGER_text_, &ExtendedMessageRequestToSend_pgnOfExtendedPacketedMessage_xer_, &INTEGER_json_, &ExtendedMessageRequestToSend_pgnOfExtendedPacketedMessage_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedMessageRequestToSend_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ExtendedMessageRequestToSend
+const TTCN_Typedescriptor_t ExtendedMessageRequestToSend_descr_ = { "@IsobusCMMessageTypes.ExtendedMessageRequestToSend", NULL, &ExtendedMessageRequestToSend_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ETP__NextPacketNumberToSend_raw_ = {32,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       ETP__NextPacketNumberToSend_xer_ = { {"ETP_NextPacketNumberToSend>\n", "ETP_NextPacketNumberToSend>\n"}, {28, 28}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ETP__NextPacketNumberToSend_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ETP__NextPacketNumberToSend_descr_ = { "@IsobusCMMessageTypes.ETP_NextPacketNumberToSend", &INTEGER_ber_, &ETP__NextPacketNumberToSend_raw_, &INTEGER_text_, &ETP__NextPacketNumberToSend_xer_, &INTEGER_json_, &ETP__NextPacketNumberToSend_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedMessageClearToSend_ctrl_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExtendedMessageClearToSend_ctrl_xer_ = { {"ctrl>\n", "ctrl>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedMessageClearToSend_ctrl_oer_ext_arr_[0] = {};
+const int ExtendedMessageClearToSend_ctrl_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedMessageClearToSend_ctrl_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExtendedMessageClearToSend_ctrl_oer_ext_arr_, 0, ExtendedMessageClearToSend_ctrl_oer_p_};
+const TTCN_Typedescriptor_t ExtendedMessageClearToSend_ctrl_descr_ = { "@IsobusCMMessageTypes.ExtendedMessageClearToSend.ctrl", &OCTETSTRING_ber_, &ExtendedMessageClearToSend_ctrl_raw_, &OCTETSTRING_text_, &ExtendedMessageClearToSend_ctrl_xer_, &OCTETSTRING_json_, &ExtendedMessageClearToSend_ctrl_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedMessageClearToSend_NumberOfPacketsToSend_xer_ = { {"NumberOfPacketsToSend>\n", "NumberOfPacketsToSend>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ExtendedMessageClearToSend_NumberOfPacketsToSend_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ExtendedMessageClearToSend_NumberOfPacketsToSend_descr_ = { "@IsobusCMMessageTypes.ExtendedMessageClearToSend.NumberOfPacketsToSend", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ExtendedMessageClearToSend_NumberOfPacketsToSend_xer_, &INTEGER_json_, &ExtendedMessageClearToSend_NumberOfPacketsToSend_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedMessageClearToSend_nextPacketNumberToSend_xer_ = { {"nextPacketNumberToSend>\n", "nextPacketNumberToSend>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ExtendedMessageClearToSend_nextPacketNumberToSend_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ExtendedMessageClearToSend_nextPacketNumberToSend_descr_ = { "@IsobusCMMessageTypes.ExtendedMessageClearToSend.nextPacketNumberToSend", &INTEGER_ber_, &ETP__NextPacketNumberToSend_raw_, &INTEGER_text_, &ExtendedMessageClearToSend_nextPacketNumberToSend_xer_, &INTEGER_json_, &ExtendedMessageClearToSend_nextPacketNumberToSend_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedMessageClearToSend_pgnOfExtendedPacketedMessage_xer_ = { {"pgnOfExtendedPacketedMessage>\n", "pgnOfExtendedPacketedMessage>\n"}, {30, 30}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ExtendedMessageClearToSend_pgnOfExtendedPacketedMessage_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ExtendedMessageClearToSend_pgnOfExtendedPacketedMessage_descr_ = { "@IsobusCMMessageTypes.ExtendedMessageClearToSend.pgnOfExtendedPacketedMessage", &INTEGER_ber_, &IsobusMessageTypes::INT24nb_raw_, &INTEGER_text_, &ExtendedMessageClearToSend_pgnOfExtendedPacketedMessage_xer_, &INTEGER_json_, &ExtendedMessageClearToSend_pgnOfExtendedPacketedMessage_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedMessageClearToSend_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ExtendedMessageClearToSend
+const TTCN_Typedescriptor_t ExtendedMessageClearToSend_descr_ = { "@IsobusCMMessageTypes.ExtendedMessageClearToSend", NULL, &ExtendedMessageClearToSend_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ETP__NoPacketForOffset_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,NULL,false};
+const XERdescriptor_t       ETP__NoPacketForOffset_xer_ = { {"ETP_NoPacketForOffset>\n", "ETP_NoPacketForOffset>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ETP__NoPacketForOffset_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ETP__NoPacketForOffset_descr_ = { "@IsobusCMMessageTypes.ETP_NoPacketForOffset", &INTEGER_ber_, &ETP__NoPacketForOffset_raw_, &INTEGER_text_, &ETP__NoPacketForOffset_xer_, &INTEGER_json_, &ETP__NoPacketForOffset_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedMessageDataPacketOffset_ctrl_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExtendedMessageDataPacketOffset_ctrl_xer_ = { {"ctrl>\n", "ctrl>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedMessageDataPacketOffset_ctrl_oer_ext_arr_[0] = {};
+const int ExtendedMessageDataPacketOffset_ctrl_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedMessageDataPacketOffset_ctrl_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExtendedMessageDataPacketOffset_ctrl_oer_ext_arr_, 0, ExtendedMessageDataPacketOffset_ctrl_oer_p_};
+const TTCN_Typedescriptor_t ExtendedMessageDataPacketOffset_ctrl_descr_ = { "@IsobusCMMessageTypes.ExtendedMessageDataPacketOffset.ctrl", &OCTETSTRING_ber_, &ExtendedMessageDataPacketOffset_ctrl_raw_, &OCTETSTRING_text_, &ExtendedMessageDataPacketOffset_ctrl_xer_, &OCTETSTRING_json_, &ExtendedMessageDataPacketOffset_ctrl_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedMessageDataPacketOffset_numberOfPacketsToWhichToApplyTheOffset_xer_ = { {"numberOfPacketsToWhichToApplyTheOffset>\n", "numberOfPacketsToWhichToApplyTheOffset>\n"}, {40, 40}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ExtendedMessageDataPacketOffset_numberOfPacketsToWhichToApplyTheOffset_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ExtendedMessageDataPacketOffset_numberOfPacketsToWhichToApplyTheOffset_descr_ = { "@IsobusCMMessageTypes.ExtendedMessageDataPacketOffset.numberOfPacketsToWhichToApplyTheOffset", &INTEGER_ber_, &ETP__NoPacketForOffset_raw_, &INTEGER_text_, &ExtendedMessageDataPacketOffset_numberOfPacketsToWhichToApplyTheOffset_xer_, &INTEGER_json_, &ExtendedMessageDataPacketOffset_numberOfPacketsToWhichToApplyTheOffset_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedMessageDataPacketOffset_totalNumberOfPackets_xer_ = { {"totalNumberOfPackets>\n", "totalNumberOfPackets>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ExtendedMessageDataPacketOffset_totalNumberOfPackets_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ExtendedMessageDataPacketOffset_totalNumberOfPackets_descr_ = { "@IsobusCMMessageTypes.ExtendedMessageDataPacketOffset.totalNumberOfPackets", &INTEGER_ber_, &NUMBER__OF__PACKETS_raw_, &INTEGER_text_, &ExtendedMessageDataPacketOffset_totalNumberOfPackets_xer_, &INTEGER_json_, &ExtendedMessageDataPacketOffset_totalNumberOfPackets_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedMessageDataPacketOffset_dataPacketOffset_xer_ = { {"dataPacketOffset>\n", "dataPacketOffset>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ExtendedMessageDataPacketOffset_dataPacketOffset_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ExtendedMessageDataPacketOffset_dataPacketOffset_descr_ = { "@IsobusCMMessageTypes.ExtendedMessageDataPacketOffset.dataPacketOffset", &INTEGER_ber_, &ETP__NextPacketNumberToSend_raw_, &INTEGER_text_, &ExtendedMessageDataPacketOffset_dataPacketOffset_xer_, &INTEGER_json_, &ExtendedMessageDataPacketOffset_dataPacketOffset_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedMessageDataPacketOffset_pgnOfExtendedPacketedMessage_xer_ = { {"pgnOfExtendedPacketedMessage>\n", "pgnOfExtendedPacketedMessage>\n"}, {30, 30}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ExtendedMessageDataPacketOffset_pgnOfExtendedPacketedMessage_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ExtendedMessageDataPacketOffset_pgnOfExtendedPacketedMessage_descr_ = { "@IsobusCMMessageTypes.ExtendedMessageDataPacketOffset.pgnOfExtendedPacketedMessage", &INTEGER_ber_, &IsobusMessageTypes::INT24nb_raw_, &INTEGER_text_, &ExtendedMessageDataPacketOffset_pgnOfExtendedPacketedMessage_xer_, &INTEGER_json_, &ExtendedMessageDataPacketOffset_pgnOfExtendedPacketedMessage_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedMessageDataPacketOffset_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ExtendedMessageDataPacketOffset
+const TTCN_Typedescriptor_t ExtendedMessageDataPacketOffset_descr_ = { "@IsobusCMMessageTypes.ExtendedMessageDataPacketOffset", NULL, &ExtendedMessageDataPacketOffset_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedMessageEndOfMessageAcknowledgement_ctrl_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExtendedMessageEndOfMessageAcknowledgement_ctrl_xer_ = { {"ctrl>\n", "ctrl>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedMessageEndOfMessageAcknowledgement_ctrl_oer_ext_arr_[0] = {};
+const int ExtendedMessageEndOfMessageAcknowledgement_ctrl_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedMessageEndOfMessageAcknowledgement_ctrl_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExtendedMessageEndOfMessageAcknowledgement_ctrl_oer_ext_arr_, 0, ExtendedMessageEndOfMessageAcknowledgement_ctrl_oer_p_};
+const TTCN_Typedescriptor_t ExtendedMessageEndOfMessageAcknowledgement_ctrl_descr_ = { "@IsobusCMMessageTypes.ExtendedMessageEndOfMessageAcknowledgement.ctrl", &OCTETSTRING_ber_, &ExtendedMessageEndOfMessageAcknowledgement_ctrl_raw_, &OCTETSTRING_text_, &ExtendedMessageEndOfMessageAcknowledgement_ctrl_xer_, &OCTETSTRING_json_, &ExtendedMessageEndOfMessageAcknowledgement_ctrl_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedMessageEndOfMessageAcknowledgement_numberOfBytesTransferred_xer_ = { {"numberOfBytesTransferred>\n", "numberOfBytesTransferred>\n"}, {26, 26}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ExtendedMessageEndOfMessageAcknowledgement_numberOfBytesTransferred_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ExtendedMessageEndOfMessageAcknowledgement_numberOfBytesTransferred_descr_ = { "@IsobusCMMessageTypes.ExtendedMessageEndOfMessageAcknowledgement.numberOfBytesTransferred", &INTEGER_ber_, &ETP__MSG__SIZE_raw_, &INTEGER_text_, &ExtendedMessageEndOfMessageAcknowledgement_numberOfBytesTransferred_xer_, &INTEGER_json_, &ExtendedMessageEndOfMessageAcknowledgement_numberOfBytesTransferred_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedMessageEndOfMessageAcknowledgement_pgnOfExtendedPacketedMessage_xer_ = { {"pgnOfExtendedPacketedMessage>\n", "pgnOfExtendedPacketedMessage>\n"}, {30, 30}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ExtendedMessageEndOfMessageAcknowledgement_pgnOfExtendedPacketedMessage_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ExtendedMessageEndOfMessageAcknowledgement_pgnOfExtendedPacketedMessage_descr_ = { "@IsobusCMMessageTypes.ExtendedMessageEndOfMessageAcknowledgement.pgnOfExtendedPacketedMessage", &INTEGER_ber_, &IsobusMessageTypes::INT24nb_raw_, &INTEGER_text_, &ExtendedMessageEndOfMessageAcknowledgement_pgnOfExtendedPacketedMessage_xer_, &INTEGER_json_, &ExtendedMessageEndOfMessageAcknowledgement_pgnOfExtendedPacketedMessage_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedMessageEndOfMessageAcknowledgement_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ExtendedMessageEndOfMessageAcknowledgement
+const TTCN_Typedescriptor_t ExtendedMessageEndOfMessageAcknowledgement_descr_ = { "@IsobusCMMessageTypes.ExtendedMessageEndOfMessageAcknowledgement", NULL, &ExtendedMessageEndOfMessageAcknowledgement_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t e__ETP__ConnectionAbort__AbortReason_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,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for e__ETP__ConnectionAbort__AbortReason
+const TTCN_Typedescriptor_t e__ETP__ConnectionAbort__AbortReason_descr_ = { "@IsobusCMMessageTypes.e_ETP_ConnectionAbort_AbortReason", NULL, &e__ETP__ConnectionAbort__AbortReason_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedMessageConnectionAbort_ctrl_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExtendedMessageConnectionAbort_ctrl_xer_ = { {"ctrl>\n", "ctrl>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedMessageConnectionAbort_ctrl_oer_ext_arr_[0] = {};
+const int ExtendedMessageConnectionAbort_ctrl_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedMessageConnectionAbort_ctrl_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExtendedMessageConnectionAbort_ctrl_oer_ext_arr_, 0, ExtendedMessageConnectionAbort_ctrl_oer_p_};
+const TTCN_Typedescriptor_t ExtendedMessageConnectionAbort_ctrl_descr_ = { "@IsobusCMMessageTypes.ExtendedMessageConnectionAbort.ctrl", &OCTETSTRING_ber_, &ExtendedMessageConnectionAbort_ctrl_raw_, &OCTETSTRING_text_, &ExtendedMessageConnectionAbort_ctrl_xer_, &OCTETSTRING_json_, &ExtendedMessageConnectionAbort_ctrl_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedMessageConnectionAbort_reserved3_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExtendedMessageConnectionAbort_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedMessageConnectionAbort_reserved3_oer_ext_arr_[0] = {};
+const int ExtendedMessageConnectionAbort_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedMessageConnectionAbort_reserved3_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExtendedMessageConnectionAbort_reserved3_oer_ext_arr_, 0, ExtendedMessageConnectionAbort_reserved3_oer_p_};
+const TTCN_Typedescriptor_t ExtendedMessageConnectionAbort_reserved3_descr_ = { "@IsobusCMMessageTypes.ExtendedMessageConnectionAbort.reserved3", &OCTETSTRING_ber_, &ExtendedMessageConnectionAbort_reserved3_raw_, &OCTETSTRING_text_, &ExtendedMessageConnectionAbort_reserved3_xer_, &OCTETSTRING_json_, &ExtendedMessageConnectionAbort_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedMessageConnectionAbort_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExtendedMessageConnectionAbort_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedMessageConnectionAbort_reserved4_oer_ext_arr_[0] = {};
+const int ExtendedMessageConnectionAbort_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedMessageConnectionAbort_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExtendedMessageConnectionAbort_reserved4_oer_ext_arr_, 0, ExtendedMessageConnectionAbort_reserved4_oer_p_};
+const TTCN_Typedescriptor_t ExtendedMessageConnectionAbort_reserved4_descr_ = { "@IsobusCMMessageTypes.ExtendedMessageConnectionAbort.reserved4", &OCTETSTRING_ber_, &ExtendedMessageConnectionAbort_reserved4_raw_, &OCTETSTRING_text_, &ExtendedMessageConnectionAbort_reserved4_xer_, &OCTETSTRING_json_, &ExtendedMessageConnectionAbort_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedMessageConnectionAbort_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExtendedMessageConnectionAbort_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedMessageConnectionAbort_reserved5_oer_ext_arr_[0] = {};
+const int ExtendedMessageConnectionAbort_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedMessageConnectionAbort_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExtendedMessageConnectionAbort_reserved5_oer_ext_arr_, 0, ExtendedMessageConnectionAbort_reserved5_oer_p_};
+const TTCN_Typedescriptor_t ExtendedMessageConnectionAbort_reserved5_descr_ = { "@IsobusCMMessageTypes.ExtendedMessageConnectionAbort.reserved5", &OCTETSTRING_ber_, &ExtendedMessageConnectionAbort_reserved5_raw_, &OCTETSTRING_text_, &ExtendedMessageConnectionAbort_reserved5_xer_, &OCTETSTRING_json_, &ExtendedMessageConnectionAbort_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedMessageConnectionAbort_pgnOfExtendedPacketedMessage_xer_ = { {"pgnOfExtendedPacketedMessage>\n", "pgnOfExtendedPacketedMessage>\n"}, {30, 30}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ExtendedMessageConnectionAbort_pgnOfExtendedPacketedMessage_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ExtendedMessageConnectionAbort_pgnOfExtendedPacketedMessage_descr_ = { "@IsobusCMMessageTypes.ExtendedMessageConnectionAbort.pgnOfExtendedPacketedMessage", &INTEGER_ber_, &IsobusMessageTypes::INT24nb_raw_, &INTEGER_text_, &ExtendedMessageConnectionAbort_pgnOfExtendedPacketedMessage_xer_, &INTEGER_json_, &ExtendedMessageConnectionAbort_pgnOfExtendedPacketedMessage_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedMessageConnectionAbort_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ExtendedMessageConnectionAbort
+const TTCN_Typedescriptor_t ExtendedMessageConnectionAbort_descr_ = { "@IsobusCMMessageTypes.ExtendedMessageConnectionAbort", NULL, &ExtendedMessageConnectionAbort_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ETP__CM_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ETP__CM
+const TTCN_Typedescriptor_t ETP__CM_descr_ = { "@IsobusCMMessageTypes.ETP_CM", NULL, &ETP__CM_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       TP__DT_seq__no_xer_ = { {"seq_no>\n", "seq_no>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t TP__DT_seq__no_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t TP__DT_seq__no_descr_ = { "@IsobusCMMessageTypes.TP_DT.seq_no", &INTEGER_ber_, &SEQ__NO_raw_, &INTEGER_text_, &TP__DT_seq__no_xer_, &INTEGER_json_, &TP__DT_seq__no_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       TP__DT_data_xer_ = { {"data>\n", "data>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int TP__DT_data_oer_ext_arr_[0] = {};
+const int TP__DT_data_oer_p_[0] = {};
+const TTCN_OERdescriptor_t TP__DT_data_oer_ = { -1, TRUE, 7, FALSE, 0, 0, TP__DT_data_oer_ext_arr_, 0, TP__DT_data_oer_p_};
+const TTCN_Typedescriptor_t TP__DT_data_descr_ = { "@IsobusCMMessageTypes.TP_DT.data", &OCTETSTRING_ber_, &General__Types::OCT7_raw_, &OCTETSTRING_text_, &TP__DT_data_xer_, &OCTETSTRING_json_, &TP__DT_data_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t TP__DT_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for TP__DT
+const TTCN_Typedescriptor_t TP__DT_descr_ = { "@IsobusCMMessageTypes.TP_DT", NULL, &TP__DT_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ETP__DT_seq__no_xer_ = { {"seq_no>\n", "seq_no>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ETP__DT_seq__no_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ETP__DT_seq__no_descr_ = { "@IsobusCMMessageTypes.ETP_DT.seq_no", &INTEGER_ber_, &SEQ__NO_raw_, &INTEGER_text_, &ETP__DT_seq__no_xer_, &INTEGER_json_, &ETP__DT_seq__no_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ETP__DT_data_xer_ = { {"data>\n", "data>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ETP__DT_data_oer_ext_arr_[0] = {};
+const int ETP__DT_data_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ETP__DT_data_oer_ = { -1, TRUE, 7, FALSE, 0, 0, ETP__DT_data_oer_ext_arr_, 0, ETP__DT_data_oer_p_};
+const TTCN_Typedescriptor_t ETP__DT_data_descr_ = { "@IsobusCMMessageTypes.ETP_DT.data", &OCTETSTRING_ber_, &General__Types::OCT7_raw_, &OCTETSTRING_text_, &ETP__DT_data_xer_, &OCTETSTRING_json_, &ETP__DT_data_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ETP__DT_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ETP__DT
+const TTCN_Typedescriptor_t ETP__DT_descr_ = { "@IsobusCMMessageTypes.ETP_DT", NULL, &ETP__DT_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+TTCN_Module module_object("IsobusCMMessageTypes", __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);
+
+static const RuntimeVersionChecker ver_checker(  current_runtime_version.requires_major_version_6,
+  current_runtime_version.requires_minor_version_6,
+  current_runtime_version.requires_patch_level_0,  current_runtime_version.requires_runtime_1);
+
+/* Member functions of C++ classes */
+
+RequestToSend::RequestToSend()
+{
+}
+
+RequestToSend::RequestToSend(const OCTETSTRING& par_ctrl,
+    const INTEGER& par_msgSizeInBytes,
+    const INTEGER& par_totalNumberOfPackets,
+    const INTEGER& par_maxNoOfPacketsInResponseToCTS,
+    const INTEGER& par_pgnOfMultiPacketMessage)
+  :   field_ctrl(par_ctrl),
+  field_msgSizeInBytes(par_msgSizeInBytes),
+  field_totalNumberOfPackets(par_totalNumberOfPackets),
+  field_maxNoOfPacketsInResponseToCTS(par_maxNoOfPacketsInResponseToCTS),
+  field_pgnOfMultiPacketMessage(par_pgnOfMultiPacketMessage)
+{
+}
+
+RequestToSend::RequestToSend(const RequestToSend& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusCMMessageTypes.RequestToSend.");
+if (other_value.ctrl().is_bound()) field_ctrl = other_value.ctrl();
+else field_ctrl.clean_up();
+if (other_value.msgSizeInBytes().is_bound()) field_msgSizeInBytes = other_value.msgSizeInBytes();
+else field_msgSizeInBytes.clean_up();
+if (other_value.totalNumberOfPackets().is_bound()) field_totalNumberOfPackets = other_value.totalNumberOfPackets();
+else field_totalNumberOfPackets.clean_up();
+if (other_value.maxNoOfPacketsInResponseToCTS().is_bound()) field_maxNoOfPacketsInResponseToCTS = other_value.maxNoOfPacketsInResponseToCTS();
+else field_maxNoOfPacketsInResponseToCTS.clean_up();
+if (other_value.pgnOfMultiPacketMessage().is_bound()) field_pgnOfMultiPacketMessage = other_value.pgnOfMultiPacketMessage();
+else field_pgnOfMultiPacketMessage.clean_up();
+}
+
+void RequestToSend::clean_up()
+{
+field_ctrl.clean_up();
+field_msgSizeInBytes.clean_up();
+field_totalNumberOfPackets.clean_up();
+field_maxNoOfPacketsInResponseToCTS.clean_up();
+field_pgnOfMultiPacketMessage.clean_up();
+}
+
+const TTCN_Typedescriptor_t* RequestToSend::get_descriptor() const { return &RequestToSend_descr_; }
+RequestToSend& RequestToSend::operator=(const RequestToSend& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusCMMessageTypes.RequestToSend.");
+  if (other_value.ctrl().is_bound()) field_ctrl = other_value.ctrl();
+  else field_ctrl.clean_up();
+  if (other_value.msgSizeInBytes().is_bound()) field_msgSizeInBytes = other_value.msgSizeInBytes();
+  else field_msgSizeInBytes.clean_up();
+  if (other_value.totalNumberOfPackets().is_bound()) field_totalNumberOfPackets = other_value.totalNumberOfPackets();
+  else field_totalNumberOfPackets.clean_up();
+  if (other_value.maxNoOfPacketsInResponseToCTS().is_bound()) field_maxNoOfPacketsInResponseToCTS = other_value.maxNoOfPacketsInResponseToCTS();
+  else field_maxNoOfPacketsInResponseToCTS.clean_up();
+  if (other_value.pgnOfMultiPacketMessage().is_bound()) field_pgnOfMultiPacketMessage = other_value.pgnOfMultiPacketMessage();
+  else field_pgnOfMultiPacketMessage.clean_up();
+}
+return *this;
+}
+
+boolean RequestToSend::operator==(const RequestToSend& other_value) const
+{
+return field_ctrl==other_value.field_ctrl
+  && field_msgSizeInBytes==other_value.field_msgSizeInBytes
+  && field_totalNumberOfPackets==other_value.field_totalNumberOfPackets
+  && field_maxNoOfPacketsInResponseToCTS==other_value.field_maxNoOfPacketsInResponseToCTS
+  && field_pgnOfMultiPacketMessage==other_value.field_pgnOfMultiPacketMessage;
+}
+
+boolean RequestToSend::is_bound() const
+{
+return (field_ctrl.is_bound())
+  || (field_msgSizeInBytes.is_bound())
+  || (field_totalNumberOfPackets.is_bound())
+  || (field_maxNoOfPacketsInResponseToCTS.is_bound())
+  || (field_pgnOfMultiPacketMessage.is_bound());
+}
+boolean RequestToSend::is_value() const
+{
+return field_ctrl.is_value()
+  && field_msgSizeInBytes.is_value()
+  && field_totalNumberOfPackets.is_value()
+  && field_maxNoOfPacketsInResponseToCTS.is_value()
+  && field_pgnOfMultiPacketMessage.is_value();
+}
+void RequestToSend::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ ctrl := ");
+field_ctrl.log();
+TTCN_Logger::log_event_str(", msgSizeInBytes := ");
+field_msgSizeInBytes.log();
+TTCN_Logger::log_event_str(", totalNumberOfPackets := ");
+field_totalNumberOfPackets.log();
+TTCN_Logger::log_event_str(", maxNoOfPacketsInResponseToCTS := ");
+field_maxNoOfPacketsInResponseToCTS.log();
+TTCN_Logger::log_event_str(", pgnOfMultiPacketMessage := ");
+field_pgnOfMultiPacketMessage.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void RequestToSend::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 @IsobusCMMessageTypes.RequestToSend 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) ctrl().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) msgSizeInBytes().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) totalNumberOfPackets().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) maxNoOfPacketsInResponseToCTS().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) pgnOfMultiPacketMessage().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(), "ctrl")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ctrl().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(), "msgSizeInBytes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgSizeInBytes().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(), "totalNumberOfPackets")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          totalNumberOfPackets().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(), "maxNoOfPacketsInResponseToCTS")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          maxNoOfPacketsInResponseToCTS().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(), "pgnOfMultiPacketMessage")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          pgnOfMultiPacketMessage().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 @IsobusCMMessageTypes.RequestToSend: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusCMMessageTypes.RequestToSend");
+  }
+}
+
+void RequestToSend::set_implicit_omit()
+{
+if (ctrl().is_bound()) ctrl().set_implicit_omit();
+if (msgSizeInBytes().is_bound()) msgSizeInBytes().set_implicit_omit();
+if (totalNumberOfPackets().is_bound()) totalNumberOfPackets().set_implicit_omit();
+if (maxNoOfPacketsInResponseToCTS().is_bound()) maxNoOfPacketsInResponseToCTS().set_implicit_omit();
+if (pgnOfMultiPacketMessage().is_bound()) pgnOfMultiPacketMessage().set_implicit_omit();
+}
+
+void RequestToSend::encode_text(Text_Buf& text_buf) const
+{
+field_ctrl.encode_text(text_buf);
+field_msgSizeInBytes.encode_text(text_buf);
+field_totalNumberOfPackets.encode_text(text_buf);
+field_maxNoOfPacketsInResponseToCTS.encode_text(text_buf);
+field_pgnOfMultiPacketMessage.encode_text(text_buf);
+}
+
+void RequestToSend::decode_text(Text_Buf& text_buf)
+{
+field_ctrl.decode_text(text_buf);
+field_msgSizeInBytes.decode_text(text_buf);
+field_totalNumberOfPackets.decode_text(text_buf);
+field_maxNoOfPacketsInResponseToCTS.decode_text(text_buf);
+field_pgnOfMultiPacketMessage.decode_text(text_buf);
+}
+
+void RequestToSend::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void RequestToSend::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int RequestToSend::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, RequestToSend_ctrl_descr_.raw->forceomit);
+  decoded_field_length = field_ctrl.RAW_decode(RequestToSend_ctrl_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, IsobusMessageTypes::INT2_descr_.raw->forceomit);
+  decoded_field_length = field_msgSizeInBytes.RAW_decode(IsobusMessageTypes::INT2_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, NUMBER__OF__PACKETS_descr_.raw->forceomit);
+  decoded_field_length = field_totalNumberOfPackets.RAW_decode(NUMBER__OF__PACKETS_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::INT1_descr_.raw->forceomit);
+  decoded_field_length = field_maxNoOfPacketsInResponseToCTS.RAW_decode(General__Types::INT1_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, IsobusMessageTypes::PGN_descr_.raw->forceomit);
+  decoded_field_length = field_pgnOfMultiPacketMessage.RAW_decode(IsobusMessageTypes::PGN_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 RequestToSend::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, RequestToSend_ctrl_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, IsobusMessageTypes::INT2_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, NUMBER__OF__PACKETS_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, General__Types::INT1_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, IsobusMessageTypes::PGN_descr_.raw);
+  encoded_length += field_ctrl.RAW_encode(RequestToSend_ctrl_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_msgSizeInBytes.RAW_encode(IsobusMessageTypes::INT2_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_totalNumberOfPackets.RAW_encode(NUMBER__OF__PACKETS_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_maxNoOfPacketsInResponseToCTS.RAW_encode(General__Types::INT1_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_pgnOfMultiPacketMessage.RAW_encode(IsobusMessageTypes::PGN_descr_, *myleaf.body.node.nodes[4]);
+  return myleaf.length = encoded_length;
+}
+
+struct RequestToSend_template::single_value_struct {
+OCTETSTRING_template field_ctrl;
+INTEGER_template field_msgSizeInBytes;
+INTEGER_template field_totalNumberOfPackets;
+INTEGER_template field_maxNoOfPacketsInResponseToCTS;
+INTEGER_template field_pgnOfMultiPacketMessage;
+};
+
+void RequestToSend_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_ctrl = ANY_VALUE;
+single_value->field_msgSizeInBytes = ANY_VALUE;
+single_value->field_totalNumberOfPackets = ANY_VALUE;
+single_value->field_maxNoOfPacketsInResponseToCTS = ANY_VALUE;
+single_value->field_pgnOfMultiPacketMessage = ANY_VALUE;
+}
+}
+}
+
+void RequestToSend_template::copy_value(const RequestToSend& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.ctrl().is_bound()) {
+  single_value->field_ctrl = other_value.ctrl();
+} else {
+  single_value->field_ctrl.clean_up();
+}
+if (other_value.msgSizeInBytes().is_bound()) {
+  single_value->field_msgSizeInBytes = other_value.msgSizeInBytes();
+} else {
+  single_value->field_msgSizeInBytes.clean_up();
+}
+if (other_value.totalNumberOfPackets().is_bound()) {
+  single_value->field_totalNumberOfPackets = other_value.totalNumberOfPackets();
+} else {
+  single_value->field_totalNumberOfPackets.clean_up();
+}
+if (other_value.maxNoOfPacketsInResponseToCTS().is_bound()) {
+  single_value->field_maxNoOfPacketsInResponseToCTS = other_value.maxNoOfPacketsInResponseToCTS();
+} else {
+  single_value->field_maxNoOfPacketsInResponseToCTS.clean_up();
+}
+if (other_value.pgnOfMultiPacketMessage().is_bound()) {
+  single_value->field_pgnOfMultiPacketMessage = other_value.pgnOfMultiPacketMessage();
+} else {
+  single_value->field_pgnOfMultiPacketMessage.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void RequestToSend_template::copy_template(const RequestToSend_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.ctrl().get_selection()) {
+single_value->field_ctrl = other_value.ctrl();
+} else {
+single_value->field_ctrl.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.msgSizeInBytes().get_selection()) {
+single_value->field_msgSizeInBytes = other_value.msgSizeInBytes();
+} else {
+single_value->field_msgSizeInBytes.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.totalNumberOfPackets().get_selection()) {
+single_value->field_totalNumberOfPackets = other_value.totalNumberOfPackets();
+} else {
+single_value->field_totalNumberOfPackets.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.maxNoOfPacketsInResponseToCTS().get_selection()) {
+single_value->field_maxNoOfPacketsInResponseToCTS = other_value.maxNoOfPacketsInResponseToCTS();
+} else {
+single_value->field_maxNoOfPacketsInResponseToCTS.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.pgnOfMultiPacketMessage().get_selection()) {
+single_value->field_pgnOfMultiPacketMessage = other_value.pgnOfMultiPacketMessage();
+} else {
+single_value->field_pgnOfMultiPacketMessage.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new RequestToSend_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusCMMessageTypes.RequestToSend.");
+break;
+}
+set_selection(other_value);
+}
+
+RequestToSend_template::RequestToSend_template()
+{
+}
+
+RequestToSend_template::RequestToSend_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+RequestToSend_template::RequestToSend_template(const RequestToSend& other_value)
+{
+copy_value(other_value);
+}
+
+RequestToSend_template::RequestToSend_template(const OPTIONAL<RequestToSend>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const RequestToSend&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusCMMessageTypes.RequestToSend from an unbound optional field.");
+}
+}
+
+RequestToSend_template::RequestToSend_template(const RequestToSend_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+RequestToSend_template::~RequestToSend_template()
+{
+clean_up();
+}
+
+RequestToSend_template& RequestToSend_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+RequestToSend_template& RequestToSend_template::operator=(const RequestToSend& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+RequestToSend_template& RequestToSend_template::operator=(const OPTIONAL<RequestToSend>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const RequestToSend&)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 @IsobusCMMessageTypes.RequestToSend.");
+}
+return *this;
+}
+
+RequestToSend_template& RequestToSend_template::operator=(const RequestToSend_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean RequestToSend_template::match(const RequestToSend& 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.ctrl().is_bound()) return FALSE;
+if(!single_value->field_ctrl.match(other_value.ctrl(), legacy))return FALSE;
+if(!other_value.msgSizeInBytes().is_bound()) return FALSE;
+if(!single_value->field_msgSizeInBytes.match(other_value.msgSizeInBytes(), legacy))return FALSE;
+if(!other_value.totalNumberOfPackets().is_bound()) return FALSE;
+if(!single_value->field_totalNumberOfPackets.match(other_value.totalNumberOfPackets(), legacy))return FALSE;
+if(!other_value.maxNoOfPacketsInResponseToCTS().is_bound()) return FALSE;
+if(!single_value->field_maxNoOfPacketsInResponseToCTS.match(other_value.maxNoOfPacketsInResponseToCTS(), legacy))return FALSE;
+if(!other_value.pgnOfMultiPacketMessage().is_bound()) return FALSE;
+if(!single_value->field_pgnOfMultiPacketMessage.match(other_value.pgnOfMultiPacketMessage(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusCMMessageTypes.RequestToSend.");
+}
+return FALSE;
+}
+
+boolean RequestToSend_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_ctrl.is_bound()
+
+ ||single_value->field_msgSizeInBytes.is_bound()
+
+ ||single_value->field_totalNumberOfPackets.is_bound()
+
+ ||single_value->field_maxNoOfPacketsInResponseToCTS.is_bound()
+
+ ||single_value->field_pgnOfMultiPacketMessage.is_bound()
+;
+}
+
+boolean RequestToSend_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_ctrl.is_value()
+ &&single_value->field_msgSizeInBytes.is_value()
+ &&single_value->field_totalNumberOfPackets.is_value()
+ &&single_value->field_maxNoOfPacketsInResponseToCTS.is_value()
+ &&single_value->field_pgnOfMultiPacketMessage.is_value();
+}
+
+void RequestToSend_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+RequestToSend RequestToSend_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 @IsobusCMMessageTypes.RequestToSend.");
+RequestToSend ret_val;
+if (single_value->field_ctrl.is_bound()) {
+ret_val.ctrl() = single_value->field_ctrl.valueof();
+}
+if (single_value->field_msgSizeInBytes.is_bound()) {
+ret_val.msgSizeInBytes() = single_value->field_msgSizeInBytes.valueof();
+}
+if (single_value->field_totalNumberOfPackets.is_bound()) {
+ret_val.totalNumberOfPackets() = single_value->field_totalNumberOfPackets.valueof();
+}
+if (single_value->field_maxNoOfPacketsInResponseToCTS.is_bound()) {
+ret_val.maxNoOfPacketsInResponseToCTS() = single_value->field_maxNoOfPacketsInResponseToCTS.valueof();
+}
+if (single_value->field_pgnOfMultiPacketMessage.is_bound()) {
+ret_val.pgnOfMultiPacketMessage() = single_value->field_pgnOfMultiPacketMessage.valueof();
+}
+return ret_val;
+}
+
+void RequestToSend_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusCMMessageTypes.RequestToSend.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new RequestToSend_template[list_length];
+}
+
+RequestToSend_template& RequestToSend_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusCMMessageTypes.RequestToSend.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusCMMessageTypes.RequestToSend.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& RequestToSend_template::ctrl()
+{
+set_specific();
+return single_value->field_ctrl;
+}
+
+const OCTETSTRING_template& RequestToSend_template::ctrl() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field ctrl of a non-specific template of type @IsobusCMMessageTypes.RequestToSend.");
+return single_value->field_ctrl;
+}
+
+INTEGER_template& RequestToSend_template::msgSizeInBytes()
+{
+set_specific();
+return single_value->field_msgSizeInBytes;
+}
+
+const INTEGER_template& RequestToSend_template::msgSizeInBytes() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field msgSizeInBytes of a non-specific template of type @IsobusCMMessageTypes.RequestToSend.");
+return single_value->field_msgSizeInBytes;
+}
+
+INTEGER_template& RequestToSend_template::totalNumberOfPackets()
+{
+set_specific();
+return single_value->field_totalNumberOfPackets;
+}
+
+const INTEGER_template& RequestToSend_template::totalNumberOfPackets() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field totalNumberOfPackets of a non-specific template of type @IsobusCMMessageTypes.RequestToSend.");
+return single_value->field_totalNumberOfPackets;
+}
+
+INTEGER_template& RequestToSend_template::maxNoOfPacketsInResponseToCTS()
+{
+set_specific();
+return single_value->field_maxNoOfPacketsInResponseToCTS;
+}
+
+const INTEGER_template& RequestToSend_template::maxNoOfPacketsInResponseToCTS() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field maxNoOfPacketsInResponseToCTS of a non-specific template of type @IsobusCMMessageTypes.RequestToSend.");
+return single_value->field_maxNoOfPacketsInResponseToCTS;
+}
+
+INTEGER_template& RequestToSend_template::pgnOfMultiPacketMessage()
+{
+set_specific();
+return single_value->field_pgnOfMultiPacketMessage;
+}
+
+const INTEGER_template& RequestToSend_template::pgnOfMultiPacketMessage() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field pgnOfMultiPacketMessage of a non-specific template of type @IsobusCMMessageTypes.RequestToSend.");
+return single_value->field_pgnOfMultiPacketMessage;
+}
+
+int RequestToSend_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.RequestToSend 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 @IsobusCMMessageTypes.RequestToSend 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 @IsobusCMMessageTypes.RequestToSend containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.RequestToSend containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.RequestToSend containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.RequestToSend containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusCMMessageTypes.RequestToSend.");
+  }
+  return 0;
+}
+
+void RequestToSend_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ ctrl := ");
+single_value->field_ctrl.log();
+TTCN_Logger::log_event_str(", msgSizeInBytes := ");
+single_value->field_msgSizeInBytes.log();
+TTCN_Logger::log_event_str(", totalNumberOfPackets := ");
+single_value->field_totalNumberOfPackets.log();
+TTCN_Logger::log_event_str(", maxNoOfPacketsInResponseToCTS := ");
+single_value->field_maxNoOfPacketsInResponseToCTS.log();
+TTCN_Logger::log_event_str(", pgnOfMultiPacketMessage := ");
+single_value->field_pgnOfMultiPacketMessage.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void RequestToSend_template::log_match(const RequestToSend& 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_ctrl.match(match_value.ctrl(), legacy)){
+TTCN_Logger::log_logmatch_info(".ctrl");
+single_value->field_ctrl.log_match(match_value.ctrl(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_msgSizeInBytes.match(match_value.msgSizeInBytes(), legacy)){
+TTCN_Logger::log_logmatch_info(".msgSizeInBytes");
+single_value->field_msgSizeInBytes.log_match(match_value.msgSizeInBytes(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_totalNumberOfPackets.match(match_value.totalNumberOfPackets(), legacy)){
+TTCN_Logger::log_logmatch_info(".totalNumberOfPackets");
+single_value->field_totalNumberOfPackets.log_match(match_value.totalNumberOfPackets(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_maxNoOfPacketsInResponseToCTS.match(match_value.maxNoOfPacketsInResponseToCTS(), legacy)){
+TTCN_Logger::log_logmatch_info(".maxNoOfPacketsInResponseToCTS");
+single_value->field_maxNoOfPacketsInResponseToCTS.log_match(match_value.maxNoOfPacketsInResponseToCTS(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_pgnOfMultiPacketMessage.match(match_value.pgnOfMultiPacketMessage(), legacy)){
+TTCN_Logger::log_logmatch_info(".pgnOfMultiPacketMessage");
+single_value->field_pgnOfMultiPacketMessage.log_match(match_value.pgnOfMultiPacketMessage(), 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("{ ctrl := ");
+single_value->field_ctrl.log_match(match_value.ctrl(), legacy);
+TTCN_Logger::log_event_str(", msgSizeInBytes := ");
+single_value->field_msgSizeInBytes.log_match(match_value.msgSizeInBytes(), legacy);
+TTCN_Logger::log_event_str(", totalNumberOfPackets := ");
+single_value->field_totalNumberOfPackets.log_match(match_value.totalNumberOfPackets(), legacy);
+TTCN_Logger::log_event_str(", maxNoOfPacketsInResponseToCTS := ");
+single_value->field_maxNoOfPacketsInResponseToCTS.log_match(match_value.maxNoOfPacketsInResponseToCTS(), legacy);
+TTCN_Logger::log_event_str(", pgnOfMultiPacketMessage := ");
+single_value->field_pgnOfMultiPacketMessage.log_match(match_value.pgnOfMultiPacketMessage(), 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 RequestToSend_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_ctrl.encode_text(text_buf);
+single_value->field_msgSizeInBytes.encode_text(text_buf);
+single_value->field_totalNumberOfPackets.encode_text(text_buf);
+single_value->field_maxNoOfPacketsInResponseToCTS.encode_text(text_buf);
+single_value->field_pgnOfMultiPacketMessage.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 @IsobusCMMessageTypes.RequestToSend.");
+}
+}
+
+void RequestToSend_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_ctrl.decode_text(text_buf);
+single_value->field_msgSizeInBytes.decode_text(text_buf);
+single_value->field_totalNumberOfPackets.decode_text(text_buf);
+single_value->field_maxNoOfPacketsInResponseToCTS.decode_text(text_buf);
+single_value->field_pgnOfMultiPacketMessage.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 RequestToSend_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 @IsobusCMMessageTypes.RequestToSend.");
+}
+}
+
+void RequestToSend_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: {
+    RequestToSend_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusCMMessageTypes.RequestToSend 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) ctrl().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) msgSizeInBytes().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) totalNumberOfPackets().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) maxNoOfPacketsInResponseToCTS().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) pgnOfMultiPacketMessage().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(), "ctrl")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ctrl().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(), "msgSizeInBytes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgSizeInBytes().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(), "totalNumberOfPackets")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          totalNumberOfPackets().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(), "maxNoOfPacketsInResponseToCTS")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          maxNoOfPacketsInResponseToCTS().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(), "pgnOfMultiPacketMessage")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          pgnOfMultiPacketMessage().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 @IsobusCMMessageTypes.RequestToSend: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusCMMessageTypes.RequestToSend");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void RequestToSend_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_ctrl.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.RequestToSend");
+single_value->field_msgSizeInBytes.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.RequestToSend");
+single_value->field_totalNumberOfPackets.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.RequestToSend");
+single_value->field_maxNoOfPacketsInResponseToCTS.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.RequestToSend");
+single_value->field_pgnOfMultiPacketMessage.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.RequestToSend");
+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 : "@IsobusCMMessageTypes.RequestToSend");
+}
+
+boolean RequestToSend_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean RequestToSend_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ClearToSend::ClearToSend()
+{
+}
+
+ClearToSend::ClearToSend(const OCTETSTRING& par_ctrl,
+    const INTEGER& par_totalNumberOfPackets,
+    const INTEGER& par_nextPacketNumber,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const INTEGER& par_pgnOfMultiPacketMessage)
+  :   field_ctrl(par_ctrl),
+  field_totalNumberOfPackets(par_totalNumberOfPackets),
+  field_nextPacketNumber(par_nextPacketNumber),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_pgnOfMultiPacketMessage(par_pgnOfMultiPacketMessage)
+{
+}
+
+ClearToSend::ClearToSend(const ClearToSend& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusCMMessageTypes.ClearToSend.");
+if (other_value.ctrl().is_bound()) field_ctrl = other_value.ctrl();
+else field_ctrl.clean_up();
+if (other_value.totalNumberOfPackets().is_bound()) field_totalNumberOfPackets = other_value.totalNumberOfPackets();
+else field_totalNumberOfPackets.clean_up();
+if (other_value.nextPacketNumber().is_bound()) field_nextPacketNumber = other_value.nextPacketNumber();
+else field_nextPacketNumber.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.pgnOfMultiPacketMessage().is_bound()) field_pgnOfMultiPacketMessage = other_value.pgnOfMultiPacketMessage();
+else field_pgnOfMultiPacketMessage.clean_up();
+}
+
+void ClearToSend::clean_up()
+{
+field_ctrl.clean_up();
+field_totalNumberOfPackets.clean_up();
+field_nextPacketNumber.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_pgnOfMultiPacketMessage.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ClearToSend::get_descriptor() const { return &ClearToSend_descr_; }
+ClearToSend& ClearToSend::operator=(const ClearToSend& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusCMMessageTypes.ClearToSend.");
+  if (other_value.ctrl().is_bound()) field_ctrl = other_value.ctrl();
+  else field_ctrl.clean_up();
+  if (other_value.totalNumberOfPackets().is_bound()) field_totalNumberOfPackets = other_value.totalNumberOfPackets();
+  else field_totalNumberOfPackets.clean_up();
+  if (other_value.nextPacketNumber().is_bound()) field_nextPacketNumber = other_value.nextPacketNumber();
+  else field_nextPacketNumber.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.pgnOfMultiPacketMessage().is_bound()) field_pgnOfMultiPacketMessage = other_value.pgnOfMultiPacketMessage();
+  else field_pgnOfMultiPacketMessage.clean_up();
+}
+return *this;
+}
+
+boolean ClearToSend::operator==(const ClearToSend& other_value) const
+{
+return field_ctrl==other_value.field_ctrl
+  && field_totalNumberOfPackets==other_value.field_totalNumberOfPackets
+  && field_nextPacketNumber==other_value.field_nextPacketNumber
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_pgnOfMultiPacketMessage==other_value.field_pgnOfMultiPacketMessage;
+}
+
+boolean ClearToSend::is_bound() const
+{
+return (field_ctrl.is_bound())
+  || (field_totalNumberOfPackets.is_bound())
+  || (field_nextPacketNumber.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_pgnOfMultiPacketMessage.is_bound());
+}
+boolean ClearToSend::is_value() const
+{
+return field_ctrl.is_value()
+  && field_totalNumberOfPackets.is_value()
+  && field_nextPacketNumber.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_pgnOfMultiPacketMessage.is_value();
+}
+void ClearToSend::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ ctrl := ");
+field_ctrl.log();
+TTCN_Logger::log_event_str(", totalNumberOfPackets := ");
+field_totalNumberOfPackets.log();
+TTCN_Logger::log_event_str(", nextPacketNumber := ");
+field_nextPacketNumber.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", pgnOfMultiPacketMessage := ");
+field_pgnOfMultiPacketMessage.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ClearToSend::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 @IsobusCMMessageTypes.ClearToSend 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) ctrl().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) totalNumberOfPackets().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) nextPacketNumber().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) pgnOfMultiPacketMessage().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(), "ctrl")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ctrl().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(), "totalNumberOfPackets")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          totalNumberOfPackets().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(), "nextPacketNumber")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          nextPacketNumber().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "pgnOfMultiPacketMessage")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          pgnOfMultiPacketMessage().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 @IsobusCMMessageTypes.ClearToSend: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusCMMessageTypes.ClearToSend");
+  }
+}
+
+void ClearToSend::set_implicit_omit()
+{
+if (ctrl().is_bound()) ctrl().set_implicit_omit();
+if (totalNumberOfPackets().is_bound()) totalNumberOfPackets().set_implicit_omit();
+if (nextPacketNumber().is_bound()) nextPacketNumber().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (pgnOfMultiPacketMessage().is_bound()) pgnOfMultiPacketMessage().set_implicit_omit();
+}
+
+void ClearToSend::encode_text(Text_Buf& text_buf) const
+{
+field_ctrl.encode_text(text_buf);
+field_totalNumberOfPackets.encode_text(text_buf);
+field_nextPacketNumber.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_pgnOfMultiPacketMessage.encode_text(text_buf);
+}
+
+void ClearToSend::decode_text(Text_Buf& text_buf)
+{
+field_ctrl.decode_text(text_buf);
+field_totalNumberOfPackets.decode_text(text_buf);
+field_nextPacketNumber.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_pgnOfMultiPacketMessage.decode_text(text_buf);
+}
+
+void ClearToSend::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ClearToSend::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ClearToSend::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, ClearToSend_ctrl_descr_.raw->forceomit);
+  decoded_field_length = field_ctrl.RAW_decode(ClearToSend_ctrl_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, NUMBER__OF__PACKETS_descr_.raw->forceomit);
+  decoded_field_length = field_totalNumberOfPackets.RAW_decode(NUMBER__OF__PACKETS_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::INT1_descr_.raw->forceomit);
+  decoded_field_length = field_nextPacketNumber.RAW_decode(General__Types::INT1_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, ClearToSend_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(ClearToSend_reserved4_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, ClearToSend_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(ClearToSend_reserved5_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, IsobusMessageTypes::PGN_descr_.raw->forceomit);
+  decoded_field_length = field_pgnOfMultiPacketMessage.RAW_decode(IsobusMessageTypes::PGN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ClearToSend::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, ClearToSend_ctrl_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, NUMBER__OF__PACKETS_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, General__Types::INT1_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, ClearToSend_reserved4_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, ClearToSend_reserved5_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, IsobusMessageTypes::PGN_descr_.raw);
+  encoded_length += field_ctrl.RAW_encode(ClearToSend_ctrl_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_totalNumberOfPackets.RAW_encode(NUMBER__OF__PACKETS_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_nextPacketNumber.RAW_encode(General__Types::INT1_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved4.RAW_encode(ClearToSend_reserved4_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved5.RAW_encode(ClearToSend_reserved5_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_pgnOfMultiPacketMessage.RAW_encode(IsobusMessageTypes::PGN_descr_, *myleaf.body.node.nodes[5]);
+  return myleaf.length = encoded_length;
+}
+
+struct ClearToSend_template::single_value_struct {
+OCTETSTRING_template field_ctrl;
+INTEGER_template field_totalNumberOfPackets;
+INTEGER_template field_nextPacketNumber;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+INTEGER_template field_pgnOfMultiPacketMessage;
+};
+
+void ClearToSend_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_ctrl = ANY_VALUE;
+single_value->field_totalNumberOfPackets = ANY_VALUE;
+single_value->field_nextPacketNumber = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_pgnOfMultiPacketMessage = ANY_VALUE;
+}
+}
+}
+
+void ClearToSend_template::copy_value(const ClearToSend& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.ctrl().is_bound()) {
+  single_value->field_ctrl = other_value.ctrl();
+} else {
+  single_value->field_ctrl.clean_up();
+}
+if (other_value.totalNumberOfPackets().is_bound()) {
+  single_value->field_totalNumberOfPackets = other_value.totalNumberOfPackets();
+} else {
+  single_value->field_totalNumberOfPackets.clean_up();
+}
+if (other_value.nextPacketNumber().is_bound()) {
+  single_value->field_nextPacketNumber = other_value.nextPacketNumber();
+} else {
+  single_value->field_nextPacketNumber.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.pgnOfMultiPacketMessage().is_bound()) {
+  single_value->field_pgnOfMultiPacketMessage = other_value.pgnOfMultiPacketMessage();
+} else {
+  single_value->field_pgnOfMultiPacketMessage.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ClearToSend_template::copy_template(const ClearToSend_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.ctrl().get_selection()) {
+single_value->field_ctrl = other_value.ctrl();
+} else {
+single_value->field_ctrl.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.totalNumberOfPackets().get_selection()) {
+single_value->field_totalNumberOfPackets = other_value.totalNumberOfPackets();
+} else {
+single_value->field_totalNumberOfPackets.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.nextPacketNumber().get_selection()) {
+single_value->field_nextPacketNumber = other_value.nextPacketNumber();
+} else {
+single_value->field_nextPacketNumber.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.pgnOfMultiPacketMessage().get_selection()) {
+single_value->field_pgnOfMultiPacketMessage = other_value.pgnOfMultiPacketMessage();
+} else {
+single_value->field_pgnOfMultiPacketMessage.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ClearToSend_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusCMMessageTypes.ClearToSend.");
+break;
+}
+set_selection(other_value);
+}
+
+ClearToSend_template::ClearToSend_template()
+{
+}
+
+ClearToSend_template::ClearToSend_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ClearToSend_template::ClearToSend_template(const ClearToSend& other_value)
+{
+copy_value(other_value);
+}
+
+ClearToSend_template::ClearToSend_template(const OPTIONAL<ClearToSend>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ClearToSend&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusCMMessageTypes.ClearToSend from an unbound optional field.");
+}
+}
+
+ClearToSend_template::ClearToSend_template(const ClearToSend_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ClearToSend_template::~ClearToSend_template()
+{
+clean_up();
+}
+
+ClearToSend_template& ClearToSend_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ClearToSend_template& ClearToSend_template::operator=(const ClearToSend& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ClearToSend_template& ClearToSend_template::operator=(const OPTIONAL<ClearToSend>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ClearToSend&)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 @IsobusCMMessageTypes.ClearToSend.");
+}
+return *this;
+}
+
+ClearToSend_template& ClearToSend_template::operator=(const ClearToSend_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ClearToSend_template::match(const ClearToSend& 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.ctrl().is_bound()) return FALSE;
+if(!single_value->field_ctrl.match(other_value.ctrl(), legacy))return FALSE;
+if(!other_value.totalNumberOfPackets().is_bound()) return FALSE;
+if(!single_value->field_totalNumberOfPackets.match(other_value.totalNumberOfPackets(), legacy))return FALSE;
+if(!other_value.nextPacketNumber().is_bound()) return FALSE;
+if(!single_value->field_nextPacketNumber.match(other_value.nextPacketNumber(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.pgnOfMultiPacketMessage().is_bound()) return FALSE;
+if(!single_value->field_pgnOfMultiPacketMessage.match(other_value.pgnOfMultiPacketMessage(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusCMMessageTypes.ClearToSend.");
+}
+return FALSE;
+}
+
+boolean ClearToSend_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_ctrl.is_bound()
+
+ ||single_value->field_totalNumberOfPackets.is_bound()
+
+ ||single_value->field_nextPacketNumber.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_pgnOfMultiPacketMessage.is_bound()
+;
+}
+
+boolean ClearToSend_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_ctrl.is_value()
+ &&single_value->field_totalNumberOfPackets.is_value()
+ &&single_value->field_nextPacketNumber.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_pgnOfMultiPacketMessage.is_value();
+}
+
+void ClearToSend_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ClearToSend ClearToSend_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 @IsobusCMMessageTypes.ClearToSend.");
+ClearToSend ret_val;
+if (single_value->field_ctrl.is_bound()) {
+ret_val.ctrl() = single_value->field_ctrl.valueof();
+}
+if (single_value->field_totalNumberOfPackets.is_bound()) {
+ret_val.totalNumberOfPackets() = single_value->field_totalNumberOfPackets.valueof();
+}
+if (single_value->field_nextPacketNumber.is_bound()) {
+ret_val.nextPacketNumber() = single_value->field_nextPacketNumber.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_pgnOfMultiPacketMessage.is_bound()) {
+ret_val.pgnOfMultiPacketMessage() = single_value->field_pgnOfMultiPacketMessage.valueof();
+}
+return ret_val;
+}
+
+void ClearToSend_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusCMMessageTypes.ClearToSend.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ClearToSend_template[list_length];
+}
+
+ClearToSend_template& ClearToSend_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusCMMessageTypes.ClearToSend.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusCMMessageTypes.ClearToSend.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& ClearToSend_template::ctrl()
+{
+set_specific();
+return single_value->field_ctrl;
+}
+
+const OCTETSTRING_template& ClearToSend_template::ctrl() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field ctrl of a non-specific template of type @IsobusCMMessageTypes.ClearToSend.");
+return single_value->field_ctrl;
+}
+
+INTEGER_template& ClearToSend_template::totalNumberOfPackets()
+{
+set_specific();
+return single_value->field_totalNumberOfPackets;
+}
+
+const INTEGER_template& ClearToSend_template::totalNumberOfPackets() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field totalNumberOfPackets of a non-specific template of type @IsobusCMMessageTypes.ClearToSend.");
+return single_value->field_totalNumberOfPackets;
+}
+
+INTEGER_template& ClearToSend_template::nextPacketNumber()
+{
+set_specific();
+return single_value->field_nextPacketNumber;
+}
+
+const INTEGER_template& ClearToSend_template::nextPacketNumber() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field nextPacketNumber of a non-specific template of type @IsobusCMMessageTypes.ClearToSend.");
+return single_value->field_nextPacketNumber;
+}
+
+OCTETSTRING_template& ClearToSend_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& ClearToSend_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusCMMessageTypes.ClearToSend.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& ClearToSend_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& ClearToSend_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusCMMessageTypes.ClearToSend.");
+return single_value->field_reserved5;
+}
+
+INTEGER_template& ClearToSend_template::pgnOfMultiPacketMessage()
+{
+set_specific();
+return single_value->field_pgnOfMultiPacketMessage;
+}
+
+const INTEGER_template& ClearToSend_template::pgnOfMultiPacketMessage() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field pgnOfMultiPacketMessage of a non-specific template of type @IsobusCMMessageTypes.ClearToSend.");
+return single_value->field_pgnOfMultiPacketMessage;
+}
+
+int ClearToSend_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.ClearToSend 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 @IsobusCMMessageTypes.ClearToSend 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 @IsobusCMMessageTypes.ClearToSend containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.ClearToSend containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.ClearToSend containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.ClearToSend containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusCMMessageTypes.ClearToSend.");
+  }
+  return 0;
+}
+
+void ClearToSend_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ ctrl := ");
+single_value->field_ctrl.log();
+TTCN_Logger::log_event_str(", totalNumberOfPackets := ");
+single_value->field_totalNumberOfPackets.log();
+TTCN_Logger::log_event_str(", nextPacketNumber := ");
+single_value->field_nextPacketNumber.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", pgnOfMultiPacketMessage := ");
+single_value->field_pgnOfMultiPacketMessage.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ClearToSend_template::log_match(const ClearToSend& 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_ctrl.match(match_value.ctrl(), legacy)){
+TTCN_Logger::log_logmatch_info(".ctrl");
+single_value->field_ctrl.log_match(match_value.ctrl(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_totalNumberOfPackets.match(match_value.totalNumberOfPackets(), legacy)){
+TTCN_Logger::log_logmatch_info(".totalNumberOfPackets");
+single_value->field_totalNumberOfPackets.log_match(match_value.totalNumberOfPackets(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_nextPacketNumber.match(match_value.nextPacketNumber(), legacy)){
+TTCN_Logger::log_logmatch_info(".nextPacketNumber");
+single_value->field_nextPacketNumber.log_match(match_value.nextPacketNumber(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_pgnOfMultiPacketMessage.match(match_value.pgnOfMultiPacketMessage(), legacy)){
+TTCN_Logger::log_logmatch_info(".pgnOfMultiPacketMessage");
+single_value->field_pgnOfMultiPacketMessage.log_match(match_value.pgnOfMultiPacketMessage(), 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("{ ctrl := ");
+single_value->field_ctrl.log_match(match_value.ctrl(), legacy);
+TTCN_Logger::log_event_str(", totalNumberOfPackets := ");
+single_value->field_totalNumberOfPackets.log_match(match_value.totalNumberOfPackets(), legacy);
+TTCN_Logger::log_event_str(", nextPacketNumber := ");
+single_value->field_nextPacketNumber.log_match(match_value.nextPacketNumber(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", pgnOfMultiPacketMessage := ");
+single_value->field_pgnOfMultiPacketMessage.log_match(match_value.pgnOfMultiPacketMessage(), 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 ClearToSend_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_ctrl.encode_text(text_buf);
+single_value->field_totalNumberOfPackets.encode_text(text_buf);
+single_value->field_nextPacketNumber.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_pgnOfMultiPacketMessage.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 @IsobusCMMessageTypes.ClearToSend.");
+}
+}
+
+void ClearToSend_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_ctrl.decode_text(text_buf);
+single_value->field_totalNumberOfPackets.decode_text(text_buf);
+single_value->field_nextPacketNumber.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_pgnOfMultiPacketMessage.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 ClearToSend_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 @IsobusCMMessageTypes.ClearToSend.");
+}
+}
+
+void ClearToSend_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: {
+    ClearToSend_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusCMMessageTypes.ClearToSend 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) ctrl().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) totalNumberOfPackets().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) nextPacketNumber().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) pgnOfMultiPacketMessage().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(), "ctrl")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ctrl().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(), "totalNumberOfPackets")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          totalNumberOfPackets().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(), "nextPacketNumber")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          nextPacketNumber().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "pgnOfMultiPacketMessage")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          pgnOfMultiPacketMessage().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 @IsobusCMMessageTypes.ClearToSend: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusCMMessageTypes.ClearToSend");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ClearToSend_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_ctrl.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.ClearToSend");
+single_value->field_totalNumberOfPackets.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.ClearToSend");
+single_value->field_nextPacketNumber.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.ClearToSend");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.ClearToSend");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.ClearToSend");
+single_value->field_pgnOfMultiPacketMessage.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.ClearToSend");
+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 : "@IsobusCMMessageTypes.ClearToSend");
+}
+
+boolean ClearToSend_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ClearToSend_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+EndOfMessageAcknowledgement::EndOfMessageAcknowledgement()
+{
+}
+
+EndOfMessageAcknowledgement::EndOfMessageAcknowledgement(const OCTETSTRING& par_ctrl,
+    const INTEGER& par_msgSizeInByte,
+    const INTEGER& par_totalNumberOfPackets,
+    const OCTETSTRING& par_reserved5,
+    const INTEGER& par_pgnOfMultiPacketMessage)
+  :   field_ctrl(par_ctrl),
+  field_msgSizeInByte(par_msgSizeInByte),
+  field_totalNumberOfPackets(par_totalNumberOfPackets),
+  field_reserved5(par_reserved5),
+  field_pgnOfMultiPacketMessage(par_pgnOfMultiPacketMessage)
+{
+}
+
+EndOfMessageAcknowledgement::EndOfMessageAcknowledgement(const EndOfMessageAcknowledgement& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusCMMessageTypes.EndOfMessageAcknowledgement.");
+if (other_value.ctrl().is_bound()) field_ctrl = other_value.ctrl();
+else field_ctrl.clean_up();
+if (other_value.msgSizeInByte().is_bound()) field_msgSizeInByte = other_value.msgSizeInByte();
+else field_msgSizeInByte.clean_up();
+if (other_value.totalNumberOfPackets().is_bound()) field_totalNumberOfPackets = other_value.totalNumberOfPackets();
+else field_totalNumberOfPackets.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.pgnOfMultiPacketMessage().is_bound()) field_pgnOfMultiPacketMessage = other_value.pgnOfMultiPacketMessage();
+else field_pgnOfMultiPacketMessage.clean_up();
+}
+
+void EndOfMessageAcknowledgement::clean_up()
+{
+field_ctrl.clean_up();
+field_msgSizeInByte.clean_up();
+field_totalNumberOfPackets.clean_up();
+field_reserved5.clean_up();
+field_pgnOfMultiPacketMessage.clean_up();
+}
+
+const TTCN_Typedescriptor_t* EndOfMessageAcknowledgement::get_descriptor() const { return &EndOfMessageAcknowledgement_descr_; }
+EndOfMessageAcknowledgement& EndOfMessageAcknowledgement::operator=(const EndOfMessageAcknowledgement& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusCMMessageTypes.EndOfMessageAcknowledgement.");
+  if (other_value.ctrl().is_bound()) field_ctrl = other_value.ctrl();
+  else field_ctrl.clean_up();
+  if (other_value.msgSizeInByte().is_bound()) field_msgSizeInByte = other_value.msgSizeInByte();
+  else field_msgSizeInByte.clean_up();
+  if (other_value.totalNumberOfPackets().is_bound()) field_totalNumberOfPackets = other_value.totalNumberOfPackets();
+  else field_totalNumberOfPackets.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.pgnOfMultiPacketMessage().is_bound()) field_pgnOfMultiPacketMessage = other_value.pgnOfMultiPacketMessage();
+  else field_pgnOfMultiPacketMessage.clean_up();
+}
+return *this;
+}
+
+boolean EndOfMessageAcknowledgement::operator==(const EndOfMessageAcknowledgement& other_value) const
+{
+return field_ctrl==other_value.field_ctrl
+  && field_msgSizeInByte==other_value.field_msgSizeInByte
+  && field_totalNumberOfPackets==other_value.field_totalNumberOfPackets
+  && field_reserved5==other_value.field_reserved5
+  && field_pgnOfMultiPacketMessage==other_value.field_pgnOfMultiPacketMessage;
+}
+
+boolean EndOfMessageAcknowledgement::is_bound() const
+{
+return (field_ctrl.is_bound())
+  || (field_msgSizeInByte.is_bound())
+  || (field_totalNumberOfPackets.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_pgnOfMultiPacketMessage.is_bound());
+}
+boolean EndOfMessageAcknowledgement::is_value() const
+{
+return field_ctrl.is_value()
+  && field_msgSizeInByte.is_value()
+  && field_totalNumberOfPackets.is_value()
+  && field_reserved5.is_value()
+  && field_pgnOfMultiPacketMessage.is_value();
+}
+void EndOfMessageAcknowledgement::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ ctrl := ");
+field_ctrl.log();
+TTCN_Logger::log_event_str(", msgSizeInByte := ");
+field_msgSizeInByte.log();
+TTCN_Logger::log_event_str(", totalNumberOfPackets := ");
+field_totalNumberOfPackets.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", pgnOfMultiPacketMessage := ");
+field_pgnOfMultiPacketMessage.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void EndOfMessageAcknowledgement::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 @IsobusCMMessageTypes.EndOfMessageAcknowledgement 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) ctrl().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) msgSizeInByte().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) totalNumberOfPackets().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) pgnOfMultiPacketMessage().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(), "ctrl")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ctrl().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(), "msgSizeInByte")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgSizeInByte().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(), "totalNumberOfPackets")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          totalNumberOfPackets().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "pgnOfMultiPacketMessage")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          pgnOfMultiPacketMessage().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 @IsobusCMMessageTypes.EndOfMessageAcknowledgement: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusCMMessageTypes.EndOfMessageAcknowledgement");
+  }
+}
+
+void EndOfMessageAcknowledgement::set_implicit_omit()
+{
+if (ctrl().is_bound()) ctrl().set_implicit_omit();
+if (msgSizeInByte().is_bound()) msgSizeInByte().set_implicit_omit();
+if (totalNumberOfPackets().is_bound()) totalNumberOfPackets().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (pgnOfMultiPacketMessage().is_bound()) pgnOfMultiPacketMessage().set_implicit_omit();
+}
+
+void EndOfMessageAcknowledgement::encode_text(Text_Buf& text_buf) const
+{
+field_ctrl.encode_text(text_buf);
+field_msgSizeInByte.encode_text(text_buf);
+field_totalNumberOfPackets.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_pgnOfMultiPacketMessage.encode_text(text_buf);
+}
+
+void EndOfMessageAcknowledgement::decode_text(Text_Buf& text_buf)
+{
+field_ctrl.decode_text(text_buf);
+field_msgSizeInByte.decode_text(text_buf);
+field_totalNumberOfPackets.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_pgnOfMultiPacketMessage.decode_text(text_buf);
+}
+
+void EndOfMessageAcknowledgement::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void EndOfMessageAcknowledgement::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int EndOfMessageAcknowledgement::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, EndOfMessageAcknowledgement_ctrl_descr_.raw->forceomit);
+  decoded_field_length = field_ctrl.RAW_decode(EndOfMessageAcknowledgement_ctrl_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, IsobusMessageTypes::INT2_descr_.raw->forceomit);
+  decoded_field_length = field_msgSizeInByte.RAW_decode(IsobusMessageTypes::INT2_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, NUMBER__OF__PACKETS_descr_.raw->forceomit);
+  decoded_field_length = field_totalNumberOfPackets.RAW_decode(NUMBER__OF__PACKETS_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, EndOfMessageAcknowledgement_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(EndOfMessageAcknowledgement_reserved5_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, IsobusMessageTypes::PGN_descr_.raw->forceomit);
+  decoded_field_length = field_pgnOfMultiPacketMessage.RAW_decode(IsobusMessageTypes::PGN_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 EndOfMessageAcknowledgement::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, EndOfMessageAcknowledgement_ctrl_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, IsobusMessageTypes::INT2_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, NUMBER__OF__PACKETS_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, EndOfMessageAcknowledgement_reserved5_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, IsobusMessageTypes::PGN_descr_.raw);
+  encoded_length += field_ctrl.RAW_encode(EndOfMessageAcknowledgement_ctrl_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_msgSizeInByte.RAW_encode(IsobusMessageTypes::INT2_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_totalNumberOfPackets.RAW_encode(NUMBER__OF__PACKETS_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved5.RAW_encode(EndOfMessageAcknowledgement_reserved5_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_pgnOfMultiPacketMessage.RAW_encode(IsobusMessageTypes::PGN_descr_, *myleaf.body.node.nodes[4]);
+  return myleaf.length = encoded_length;
+}
+
+struct EndOfMessageAcknowledgement_template::single_value_struct {
+OCTETSTRING_template field_ctrl;
+INTEGER_template field_msgSizeInByte;
+INTEGER_template field_totalNumberOfPackets;
+OCTETSTRING_template field_reserved5;
+INTEGER_template field_pgnOfMultiPacketMessage;
+};
+
+void EndOfMessageAcknowledgement_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_ctrl = ANY_VALUE;
+single_value->field_msgSizeInByte = ANY_VALUE;
+single_value->field_totalNumberOfPackets = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_pgnOfMultiPacketMessage = ANY_VALUE;
+}
+}
+}
+
+void EndOfMessageAcknowledgement_template::copy_value(const EndOfMessageAcknowledgement& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.ctrl().is_bound()) {
+  single_value->field_ctrl = other_value.ctrl();
+} else {
+  single_value->field_ctrl.clean_up();
+}
+if (other_value.msgSizeInByte().is_bound()) {
+  single_value->field_msgSizeInByte = other_value.msgSizeInByte();
+} else {
+  single_value->field_msgSizeInByte.clean_up();
+}
+if (other_value.totalNumberOfPackets().is_bound()) {
+  single_value->field_totalNumberOfPackets = other_value.totalNumberOfPackets();
+} else {
+  single_value->field_totalNumberOfPackets.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.pgnOfMultiPacketMessage().is_bound()) {
+  single_value->field_pgnOfMultiPacketMessage = other_value.pgnOfMultiPacketMessage();
+} else {
+  single_value->field_pgnOfMultiPacketMessage.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void EndOfMessageAcknowledgement_template::copy_template(const EndOfMessageAcknowledgement_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.ctrl().get_selection()) {
+single_value->field_ctrl = other_value.ctrl();
+} else {
+single_value->field_ctrl.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.msgSizeInByte().get_selection()) {
+single_value->field_msgSizeInByte = other_value.msgSizeInByte();
+} else {
+single_value->field_msgSizeInByte.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.totalNumberOfPackets().get_selection()) {
+single_value->field_totalNumberOfPackets = other_value.totalNumberOfPackets();
+} else {
+single_value->field_totalNumberOfPackets.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.pgnOfMultiPacketMessage().get_selection()) {
+single_value->field_pgnOfMultiPacketMessage = other_value.pgnOfMultiPacketMessage();
+} else {
+single_value->field_pgnOfMultiPacketMessage.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new EndOfMessageAcknowledgement_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusCMMessageTypes.EndOfMessageAcknowledgement.");
+break;
+}
+set_selection(other_value);
+}
+
+EndOfMessageAcknowledgement_template::EndOfMessageAcknowledgement_template()
+{
+}
+
+EndOfMessageAcknowledgement_template::EndOfMessageAcknowledgement_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+EndOfMessageAcknowledgement_template::EndOfMessageAcknowledgement_template(const EndOfMessageAcknowledgement& other_value)
+{
+copy_value(other_value);
+}
+
+EndOfMessageAcknowledgement_template::EndOfMessageAcknowledgement_template(const OPTIONAL<EndOfMessageAcknowledgement>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const EndOfMessageAcknowledgement&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusCMMessageTypes.EndOfMessageAcknowledgement from an unbound optional field.");
+}
+}
+
+EndOfMessageAcknowledgement_template::EndOfMessageAcknowledgement_template(const EndOfMessageAcknowledgement_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+EndOfMessageAcknowledgement_template::~EndOfMessageAcknowledgement_template()
+{
+clean_up();
+}
+
+EndOfMessageAcknowledgement_template& EndOfMessageAcknowledgement_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+EndOfMessageAcknowledgement_template& EndOfMessageAcknowledgement_template::operator=(const EndOfMessageAcknowledgement& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+EndOfMessageAcknowledgement_template& EndOfMessageAcknowledgement_template::operator=(const OPTIONAL<EndOfMessageAcknowledgement>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const EndOfMessageAcknowledgement&)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 @IsobusCMMessageTypes.EndOfMessageAcknowledgement.");
+}
+return *this;
+}
+
+EndOfMessageAcknowledgement_template& EndOfMessageAcknowledgement_template::operator=(const EndOfMessageAcknowledgement_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean EndOfMessageAcknowledgement_template::match(const EndOfMessageAcknowledgement& 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.ctrl().is_bound()) return FALSE;
+if(!single_value->field_ctrl.match(other_value.ctrl(), legacy))return FALSE;
+if(!other_value.msgSizeInByte().is_bound()) return FALSE;
+if(!single_value->field_msgSizeInByte.match(other_value.msgSizeInByte(), legacy))return FALSE;
+if(!other_value.totalNumberOfPackets().is_bound()) return FALSE;
+if(!single_value->field_totalNumberOfPackets.match(other_value.totalNumberOfPackets(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.pgnOfMultiPacketMessage().is_bound()) return FALSE;
+if(!single_value->field_pgnOfMultiPacketMessage.match(other_value.pgnOfMultiPacketMessage(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusCMMessageTypes.EndOfMessageAcknowledgement.");
+}
+return FALSE;
+}
+
+boolean EndOfMessageAcknowledgement_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_ctrl.is_bound()
+
+ ||single_value->field_msgSizeInByte.is_bound()
+
+ ||single_value->field_totalNumberOfPackets.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_pgnOfMultiPacketMessage.is_bound()
+;
+}
+
+boolean EndOfMessageAcknowledgement_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_ctrl.is_value()
+ &&single_value->field_msgSizeInByte.is_value()
+ &&single_value->field_totalNumberOfPackets.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_pgnOfMultiPacketMessage.is_value();
+}
+
+void EndOfMessageAcknowledgement_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+EndOfMessageAcknowledgement EndOfMessageAcknowledgement_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 @IsobusCMMessageTypes.EndOfMessageAcknowledgement.");
+EndOfMessageAcknowledgement ret_val;
+if (single_value->field_ctrl.is_bound()) {
+ret_val.ctrl() = single_value->field_ctrl.valueof();
+}
+if (single_value->field_msgSizeInByte.is_bound()) {
+ret_val.msgSizeInByte() = single_value->field_msgSizeInByte.valueof();
+}
+if (single_value->field_totalNumberOfPackets.is_bound()) {
+ret_val.totalNumberOfPackets() = single_value->field_totalNumberOfPackets.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_pgnOfMultiPacketMessage.is_bound()) {
+ret_val.pgnOfMultiPacketMessage() = single_value->field_pgnOfMultiPacketMessage.valueof();
+}
+return ret_val;
+}
+
+void EndOfMessageAcknowledgement_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusCMMessageTypes.EndOfMessageAcknowledgement.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new EndOfMessageAcknowledgement_template[list_length];
+}
+
+EndOfMessageAcknowledgement_template& EndOfMessageAcknowledgement_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusCMMessageTypes.EndOfMessageAcknowledgement.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusCMMessageTypes.EndOfMessageAcknowledgement.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& EndOfMessageAcknowledgement_template::ctrl()
+{
+set_specific();
+return single_value->field_ctrl;
+}
+
+const OCTETSTRING_template& EndOfMessageAcknowledgement_template::ctrl() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field ctrl of a non-specific template of type @IsobusCMMessageTypes.EndOfMessageAcknowledgement.");
+return single_value->field_ctrl;
+}
+
+INTEGER_template& EndOfMessageAcknowledgement_template::msgSizeInByte()
+{
+set_specific();
+return single_value->field_msgSizeInByte;
+}
+
+const INTEGER_template& EndOfMessageAcknowledgement_template::msgSizeInByte() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field msgSizeInByte of a non-specific template of type @IsobusCMMessageTypes.EndOfMessageAcknowledgement.");
+return single_value->field_msgSizeInByte;
+}
+
+INTEGER_template& EndOfMessageAcknowledgement_template::totalNumberOfPackets()
+{
+set_specific();
+return single_value->field_totalNumberOfPackets;
+}
+
+const INTEGER_template& EndOfMessageAcknowledgement_template::totalNumberOfPackets() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field totalNumberOfPackets of a non-specific template of type @IsobusCMMessageTypes.EndOfMessageAcknowledgement.");
+return single_value->field_totalNumberOfPackets;
+}
+
+OCTETSTRING_template& EndOfMessageAcknowledgement_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& EndOfMessageAcknowledgement_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusCMMessageTypes.EndOfMessageAcknowledgement.");
+return single_value->field_reserved5;
+}
+
+INTEGER_template& EndOfMessageAcknowledgement_template::pgnOfMultiPacketMessage()
+{
+set_specific();
+return single_value->field_pgnOfMultiPacketMessage;
+}
+
+const INTEGER_template& EndOfMessageAcknowledgement_template::pgnOfMultiPacketMessage() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field pgnOfMultiPacketMessage of a non-specific template of type @IsobusCMMessageTypes.EndOfMessageAcknowledgement.");
+return single_value->field_pgnOfMultiPacketMessage;
+}
+
+int EndOfMessageAcknowledgement_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.EndOfMessageAcknowledgement 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 @IsobusCMMessageTypes.EndOfMessageAcknowledgement 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 @IsobusCMMessageTypes.EndOfMessageAcknowledgement containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.EndOfMessageAcknowledgement containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.EndOfMessageAcknowledgement containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.EndOfMessageAcknowledgement containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusCMMessageTypes.EndOfMessageAcknowledgement.");
+  }
+  return 0;
+}
+
+void EndOfMessageAcknowledgement_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ ctrl := ");
+single_value->field_ctrl.log();
+TTCN_Logger::log_event_str(", msgSizeInByte := ");
+single_value->field_msgSizeInByte.log();
+TTCN_Logger::log_event_str(", totalNumberOfPackets := ");
+single_value->field_totalNumberOfPackets.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", pgnOfMultiPacketMessage := ");
+single_value->field_pgnOfMultiPacketMessage.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void EndOfMessageAcknowledgement_template::log_match(const EndOfMessageAcknowledgement& 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_ctrl.match(match_value.ctrl(), legacy)){
+TTCN_Logger::log_logmatch_info(".ctrl");
+single_value->field_ctrl.log_match(match_value.ctrl(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_msgSizeInByte.match(match_value.msgSizeInByte(), legacy)){
+TTCN_Logger::log_logmatch_info(".msgSizeInByte");
+single_value->field_msgSizeInByte.log_match(match_value.msgSizeInByte(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_totalNumberOfPackets.match(match_value.totalNumberOfPackets(), legacy)){
+TTCN_Logger::log_logmatch_info(".totalNumberOfPackets");
+single_value->field_totalNumberOfPackets.log_match(match_value.totalNumberOfPackets(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_pgnOfMultiPacketMessage.match(match_value.pgnOfMultiPacketMessage(), legacy)){
+TTCN_Logger::log_logmatch_info(".pgnOfMultiPacketMessage");
+single_value->field_pgnOfMultiPacketMessage.log_match(match_value.pgnOfMultiPacketMessage(), 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("{ ctrl := ");
+single_value->field_ctrl.log_match(match_value.ctrl(), legacy);
+TTCN_Logger::log_event_str(", msgSizeInByte := ");
+single_value->field_msgSizeInByte.log_match(match_value.msgSizeInByte(), legacy);
+TTCN_Logger::log_event_str(", totalNumberOfPackets := ");
+single_value->field_totalNumberOfPackets.log_match(match_value.totalNumberOfPackets(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", pgnOfMultiPacketMessage := ");
+single_value->field_pgnOfMultiPacketMessage.log_match(match_value.pgnOfMultiPacketMessage(), 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 EndOfMessageAcknowledgement_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_ctrl.encode_text(text_buf);
+single_value->field_msgSizeInByte.encode_text(text_buf);
+single_value->field_totalNumberOfPackets.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_pgnOfMultiPacketMessage.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 @IsobusCMMessageTypes.EndOfMessageAcknowledgement.");
+}
+}
+
+void EndOfMessageAcknowledgement_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_ctrl.decode_text(text_buf);
+single_value->field_msgSizeInByte.decode_text(text_buf);
+single_value->field_totalNumberOfPackets.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_pgnOfMultiPacketMessage.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 EndOfMessageAcknowledgement_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 @IsobusCMMessageTypes.EndOfMessageAcknowledgement.");
+}
+}
+
+void EndOfMessageAcknowledgement_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: {
+    EndOfMessageAcknowledgement_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusCMMessageTypes.EndOfMessageAcknowledgement 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) ctrl().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) msgSizeInByte().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) totalNumberOfPackets().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) pgnOfMultiPacketMessage().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(), "ctrl")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ctrl().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(), "msgSizeInByte")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgSizeInByte().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(), "totalNumberOfPackets")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          totalNumberOfPackets().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "pgnOfMultiPacketMessage")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          pgnOfMultiPacketMessage().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 @IsobusCMMessageTypes.EndOfMessageAcknowledgement: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusCMMessageTypes.EndOfMessageAcknowledgement");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void EndOfMessageAcknowledgement_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_ctrl.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.EndOfMessageAcknowledgement");
+single_value->field_msgSizeInByte.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.EndOfMessageAcknowledgement");
+single_value->field_totalNumberOfPackets.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.EndOfMessageAcknowledgement");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.EndOfMessageAcknowledgement");
+single_value->field_pgnOfMultiPacketMessage.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.EndOfMessageAcknowledgement");
+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 : "@IsobusCMMessageTypes.EndOfMessageAcknowledgement");
+}
+
+boolean EndOfMessageAcknowledgement_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean EndOfMessageAcknowledgement_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+e__ConnectionAbort__AbortReason::e__ConnectionAbort__AbortReason()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+e__ConnectionAbort__AbortReason::e__ConnectionAbort__AbortReason(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @IsobusCMMessageTypes.e_ConnectionAbort_AbortReason with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+e__ConnectionAbort__AbortReason::e__ConnectionAbort__AbortReason(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+e__ConnectionAbort__AbortReason::e__ConnectionAbort__AbortReason(const e__ConnectionAbort__AbortReason& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @IsobusCMMessageTypes.e_ConnectionAbort_AbortReason.");
+enum_value = other_value.enum_value;
+}
+
+e__ConnectionAbort__AbortReason& e__ConnectionAbort__AbortReason::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @IsobusCMMessageTypes.e_ConnectionAbort_AbortReason.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+e__ConnectionAbort__AbortReason& e__ConnectionAbort__AbortReason::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+e__ConnectionAbort__AbortReason& e__ConnectionAbort__AbortReason::operator=(const e__ConnectionAbort__AbortReason& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusCMMessageTypes.e_ConnectionAbort_AbortReason.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean e__ConnectionAbort__AbortReason::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusCMMessageTypes.e_ConnectionAbort_AbortReason.");
+return enum_value == other_value;
+}
+
+boolean e__ConnectionAbort__AbortReason::operator==(const e__ConnectionAbort__AbortReason& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusCMMessageTypes.e_ConnectionAbort_AbortReason.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusCMMessageTypes.e_ConnectionAbort_AbortReason.");
+return enum_value == other_value.enum_value;
+}
+
+boolean e__ConnectionAbort__AbortReason::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusCMMessageTypes.e_ConnectionAbort_AbortReason.");
+return enum_value < other_value;
+}
+
+boolean e__ConnectionAbort__AbortReason::operator<(const e__ConnectionAbort__AbortReason& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusCMMessageTypes.e_ConnectionAbort_AbortReason.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusCMMessageTypes.e_ConnectionAbort_AbortReason.");
+return enum_value < other_value.enum_value;
+}
+
+boolean e__ConnectionAbort__AbortReason::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusCMMessageTypes.e_ConnectionAbort_AbortReason.");
+return enum_value > other_value;
+}
+
+boolean e__ConnectionAbort__AbortReason::operator>(const e__ConnectionAbort__AbortReason& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusCMMessageTypes.e_ConnectionAbort_AbortReason.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusCMMessageTypes.e_ConnectionAbort_AbortReason.");
+return enum_value > other_value.enum_value;
+}
+
+const char *e__ConnectionAbort__AbortReason::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case alreadyInOneOrMoreConnectionManagedSessionsAndCannotSupportAnother: return "alreadyInOneOrMoreConnectionManagedSessionsAndCannotSupportAnother";
+case systemResourcesWereNeededForAnotherTaskSoThisConnectionManagedSessionWasTerminated: return "systemResourcesWereNeededForAnotherTaskSoThisConnectionManagedSessionWasTerminated";
+case aTimeoutOccurredAndThisIsTheConnectionAbortToCloseTheSession: return "aTimeoutOccurredAndThisIsTheConnectionAbortToCloseTheSession";
+case cts__MessagesReceivedWhenDataTransferIsInProgress: return "cts_MessagesReceivedWhenDataTransferIsInProgress";
+case maximumRetransmitRequestLimitReached: return "maximumRetransmitRequestLimitReached";
+case unexpectedDataTransferPacket: return "unexpectedDataTransferPacket";
+case badSequenceNumber: return "badSequenceNumber";
+case duplicateSequenceNumber: return "duplicateSequenceNumber";
+case iso__11783__7__error__code__251: return "iso_11783_7_error_code_251";
+case iso__11783__7__error__code__252: return "iso_11783_7_error_code_252";
+case iso__11783__7__error__code__253: return "iso_11783_7_error_code_253";
+case iso__11783__7__error__code__254: return "iso_11783_7_error_code_254";
+case iso__11783__7__error__code__255: return "iso_11783_7_error_code_255";
+default: return "<unknown>";
+}
+}
+
+e__ConnectionAbort__AbortReason::enum_type e__ConnectionAbort__AbortReason::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "alreadyInOneOrMoreConnectionManagedSessionsAndCannotSupportAnother")) return alreadyInOneOrMoreConnectionManagedSessionsAndCannotSupportAnother;
+else if (!strcmp(str_par, "systemResourcesWereNeededForAnotherTaskSoThisConnectionManagedSessionWasTerminated")) return systemResourcesWereNeededForAnotherTaskSoThisConnectionManagedSessionWasTerminated;
+else if (!strcmp(str_par, "aTimeoutOccurredAndThisIsTheConnectionAbortToCloseTheSession")) return aTimeoutOccurredAndThisIsTheConnectionAbortToCloseTheSession;
+else if (!strcmp(str_par, "cts_MessagesReceivedWhenDataTransferIsInProgress")) return cts__MessagesReceivedWhenDataTransferIsInProgress;
+else if (!strcmp(str_par, "maximumRetransmitRequestLimitReached")) return maximumRetransmitRequestLimitReached;
+else if (!strcmp(str_par, "unexpectedDataTransferPacket")) return unexpectedDataTransferPacket;
+else if (!strcmp(str_par, "badSequenceNumber")) return badSequenceNumber;
+else if (!strcmp(str_par, "duplicateSequenceNumber")) return duplicateSequenceNumber;
+else if (!strcmp(str_par, "iso_11783_7_error_code_251")) return iso__11783__7__error__code__251;
+else if (!strcmp(str_par, "iso_11783_7_error_code_252")) return iso__11783__7__error__code__252;
+else if (!strcmp(str_par, "iso_11783_7_error_code_253")) return iso__11783__7__error__code__253;
+else if (!strcmp(str_par, "iso_11783_7_error_code_254")) return iso__11783__7__error__code__254;
+else if (!strcmp(str_par, "iso_11783_7_error_code_255")) return iso__11783__7__error__code__255;
+else return UNKNOWN_VALUE;
+}
+
+boolean e__ConnectionAbort__AbortReason::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 1:
+case 2:
+case 3:
+case 4:
+case 5:
+case 6:
+case 7:
+case 8:
+case 251:
+case 252:
+case 253:
+case 254:
+case 255:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int e__ConnectionAbort__AbortReason::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusCMMessageTypes.e_ConnectionAbort_AbortReason.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int e__ConnectionAbort__AbortReason::enum2int(const e__ConnectionAbort__AbortReason& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusCMMessageTypes.e_ConnectionAbort_AbortReason.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void e__ConnectionAbort__AbortReason::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @IsobusCMMessageTypes.e_ConnectionAbort_AbortReason.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+e__ConnectionAbort__AbortReason::operator e__ConnectionAbort__AbortReason::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @IsobusCMMessageTypes.e_ConnectionAbort_AbortReason.");
+return enum_value;
+}
+
+void e__ConnectionAbort__AbortReason::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void e__ConnectionAbort__AbortReason::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@IsobusCMMessageTypes.e_ConnectionAbort_AbortReason");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @IsobusCMMessageTypes.e_ConnectionAbort_AbortReason.");
+  }
+}
+
+void e__ConnectionAbort__AbortReason::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @IsobusCMMessageTypes.e_ConnectionAbort_AbortReason.");
+text_buf.push_int(enum_value);
+}
+
+void e__ConnectionAbort__AbortReason::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @IsobusCMMessageTypes.e_ConnectionAbort_AbortReason.", enum_value);
+}
+
+void e__ConnectionAbort__AbortReason::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void e__ConnectionAbort__AbortReason::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int e__ConnectionAbort__AbortReason::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*)
+{
+  int decoded_value = 0;
+  int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 8, no_err);
+  if (decoded_length < 0) return decoded_length;
+  if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value;
+  else {
+    if(no_err){
+     return -1;
+    } else {
+    TTCN_EncDec_ErrorContext::error
+      (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name);
+    enum_value = UNKNOWN_VALUE;
+    }
+  }
+  return decoded_length;
+}
+
+int e__ConnectionAbort__AbortReason::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const
+{
+  return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 8);
+}
+
+void e__ConnectionAbort__AbortReason_template::copy_template(const e__ConnectionAbort__AbortReason_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new e__ConnectionAbort__AbortReason_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @IsobusCMMessageTypes.e_ConnectionAbort_AbortReason.");
+}
+}
+
+e__ConnectionAbort__AbortReason_template::e__ConnectionAbort__AbortReason_template()
+{
+}
+
+e__ConnectionAbort__AbortReason_template::e__ConnectionAbort__AbortReason_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+e__ConnectionAbort__AbortReason_template::e__ConnectionAbort__AbortReason_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!e__ConnectionAbort__AbortReason::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @IsobusCMMessageTypes.e_ConnectionAbort_AbortReason with unknown numeric value %d.", other_value);
+single_value = (e__ConnectionAbort__AbortReason::enum_type)other_value;
+}
+
+e__ConnectionAbort__AbortReason_template::e__ConnectionAbort__AbortReason_template(e__ConnectionAbort__AbortReason::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+e__ConnectionAbort__AbortReason_template::e__ConnectionAbort__AbortReason_template(const e__ConnectionAbort__AbortReason& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == e__ConnectionAbort__AbortReason::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @IsobusCMMessageTypes.e_ConnectionAbort_AbortReason.");
+single_value = other_value.enum_value;
+}
+
+e__ConnectionAbort__AbortReason_template::e__ConnectionAbort__AbortReason_template(const OPTIONAL<e__ConnectionAbort__AbortReason>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__ConnectionAbort__AbortReason::enum_type)(const e__ConnectionAbort__AbortReason&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @IsobusCMMessageTypes.e_ConnectionAbort_AbortReason from an unbound optional field.");
+}
+}
+
+e__ConnectionAbort__AbortReason_template::e__ConnectionAbort__AbortReason_template(const e__ConnectionAbort__AbortReason_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+e__ConnectionAbort__AbortReason_template::~e__ConnectionAbort__AbortReason_template()
+{
+clean_up();
+}
+
+boolean e__ConnectionAbort__AbortReason_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean e__ConnectionAbort__AbortReason_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != e__ConnectionAbort__AbortReason::UNBOUND_VALUE;
+}
+
+void e__ConnectionAbort__AbortReason_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+e__ConnectionAbort__AbortReason_template& e__ConnectionAbort__AbortReason_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+e__ConnectionAbort__AbortReason_template& e__ConnectionAbort__AbortReason_template::operator=(int other_value)
+{
+if (!e__ConnectionAbort__AbortReason::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @IsobusCMMessageTypes.e_ConnectionAbort_AbortReason.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (e__ConnectionAbort__AbortReason::enum_type)other_value;
+return *this;
+}
+
+e__ConnectionAbort__AbortReason_template& e__ConnectionAbort__AbortReason_template::operator=(e__ConnectionAbort__AbortReason::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+e__ConnectionAbort__AbortReason_template& e__ConnectionAbort__AbortReason_template::operator=(const e__ConnectionAbort__AbortReason& other_value)
+{
+if (other_value.enum_value == e__ConnectionAbort__AbortReason::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusCMMessageTypes.e_ConnectionAbort_AbortReason to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+e__ConnectionAbort__AbortReason_template& e__ConnectionAbort__AbortReason_template::operator=(const OPTIONAL<e__ConnectionAbort__AbortReason>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__ConnectionAbort__AbortReason::enum_type)(const e__ConnectionAbort__AbortReason&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @IsobusCMMessageTypes.e_ConnectionAbort_AbortReason.");
+}
+return *this;
+}
+
+e__ConnectionAbort__AbortReason_template& e__ConnectionAbort__AbortReason_template::operator=(const e__ConnectionAbort__AbortReason_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean e__ConnectionAbort__AbortReason_template::match(e__ConnectionAbort__AbortReason::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @IsobusCMMessageTypes.e_ConnectionAbort_AbortReason.");
+}
+return FALSE;
+}
+
+boolean e__ConnectionAbort__AbortReason_template::match(const e__ConnectionAbort__AbortReason& other_value, boolean) const
+{
+if (other_value.enum_value == e__ConnectionAbort__AbortReason::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @IsobusCMMessageTypes.e_ConnectionAbort_AbortReason with an unbound value.");
+return match(other_value.enum_value);
+}
+
+e__ConnectionAbort__AbortReason::enum_type e__ConnectionAbort__AbortReason_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @IsobusCMMessageTypes.e_ConnectionAbort_AbortReason.");
+return single_value;
+}
+
+void e__ConnectionAbort__AbortReason_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @IsobusCMMessageTypes.e_ConnectionAbort_AbortReason.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new e__ConnectionAbort__AbortReason_template[list_length];
+}
+
+e__ConnectionAbort__AbortReason_template& e__ConnectionAbort__AbortReason_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @IsobusCMMessageTypes.e_ConnectionAbort_AbortReason.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @IsobusCMMessageTypes.e_ConnectionAbort_AbortReason.");
+return value_list.list_value[list_index];
+}
+
+void e__ConnectionAbort__AbortReason_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(e__ConnectionAbort__AbortReason::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void e__ConnectionAbort__AbortReason_template::log_match(const e__ConnectionAbort__AbortReason& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void e__ConnectionAbort__AbortReason_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @IsobusCMMessageTypes.e_ConnectionAbort_AbortReason.");
+}
+}
+
+void e__ConnectionAbort__AbortReason_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (e__ConnectionAbort__AbortReason::enum_type)text_buf.pull_int().get_val();
+if (!e__ConnectionAbort__AbortReason::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @IsobusCMMessageTypes.e_ConnectionAbort_AbortReason.", single_value);
+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 e__ConnectionAbort__AbortReason_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @IsobusCMMessageTypes.e_ConnectionAbort_AbortReason.");
+}
+}
+
+boolean e__ConnectionAbort__AbortReason_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean e__ConnectionAbort__AbortReason_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 e__ConnectionAbort__AbortReason_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    e__ConnectionAbort__AbortReason_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    e__ConnectionAbort__AbortReason::enum_type enum_val = e__ConnectionAbort__AbortReason::str_to_enum(m_p->get_enumerated());
+    if (!e__ConnectionAbort__AbortReason::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @IsobusCMMessageTypes.e_ConnectionAbort_AbortReason.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@IsobusCMMessageTypes.e_ConnectionAbort_AbortReason");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void e__ConnectionAbort__AbortReason_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@IsobusCMMessageTypes.e_ConnectionAbort_AbortReason");
+}
+
+ConnectionAbort::ConnectionAbort()
+{
+}
+
+ConnectionAbort::ConnectionAbort(const OCTETSTRING& par_ctrl,
+    const e__ConnectionAbort__AbortReason& par_connectionAbortReason,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const INTEGER& par_pgnOfMultiPacketMessage)
+  :   field_ctrl(par_ctrl),
+  field_connectionAbortReason(par_connectionAbortReason),
+  field_reserved3(par_reserved3),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_pgnOfMultiPacketMessage(par_pgnOfMultiPacketMessage)
+{
+}
+
+ConnectionAbort::ConnectionAbort(const ConnectionAbort& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusCMMessageTypes.ConnectionAbort.");
+if (other_value.ctrl().is_bound()) field_ctrl = other_value.ctrl();
+else field_ctrl.clean_up();
+if (other_value.connectionAbortReason().is_bound()) field_connectionAbortReason = other_value.connectionAbortReason();
+else field_connectionAbortReason.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.pgnOfMultiPacketMessage().is_bound()) field_pgnOfMultiPacketMessage = other_value.pgnOfMultiPacketMessage();
+else field_pgnOfMultiPacketMessage.clean_up();
+}
+
+void ConnectionAbort::clean_up()
+{
+field_ctrl.clean_up();
+field_connectionAbortReason.clean_up();
+field_reserved3.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_pgnOfMultiPacketMessage.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ConnectionAbort::get_descriptor() const { return &ConnectionAbort_descr_; }
+ConnectionAbort& ConnectionAbort::operator=(const ConnectionAbort& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusCMMessageTypes.ConnectionAbort.");
+  if (other_value.ctrl().is_bound()) field_ctrl = other_value.ctrl();
+  else field_ctrl.clean_up();
+  if (other_value.connectionAbortReason().is_bound()) field_connectionAbortReason = other_value.connectionAbortReason();
+  else field_connectionAbortReason.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.pgnOfMultiPacketMessage().is_bound()) field_pgnOfMultiPacketMessage = other_value.pgnOfMultiPacketMessage();
+  else field_pgnOfMultiPacketMessage.clean_up();
+}
+return *this;
+}
+
+boolean ConnectionAbort::operator==(const ConnectionAbort& other_value) const
+{
+return field_ctrl==other_value.field_ctrl
+  && field_connectionAbortReason==other_value.field_connectionAbortReason
+  && field_reserved3==other_value.field_reserved3
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_pgnOfMultiPacketMessage==other_value.field_pgnOfMultiPacketMessage;
+}
+
+boolean ConnectionAbort::is_bound() const
+{
+return (field_ctrl.is_bound())
+  || (field_connectionAbortReason.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_pgnOfMultiPacketMessage.is_bound());
+}
+boolean ConnectionAbort::is_value() const
+{
+return field_ctrl.is_value()
+  && field_connectionAbortReason.is_value()
+  && field_reserved3.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_pgnOfMultiPacketMessage.is_value();
+}
+void ConnectionAbort::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ ctrl := ");
+field_ctrl.log();
+TTCN_Logger::log_event_str(", connectionAbortReason := ");
+field_connectionAbortReason.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", pgnOfMultiPacketMessage := ");
+field_pgnOfMultiPacketMessage.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ConnectionAbort::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 @IsobusCMMessageTypes.ConnectionAbort 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) ctrl().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) connectionAbortReason().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) pgnOfMultiPacketMessage().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(), "ctrl")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ctrl().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(), "connectionAbortReason")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          connectionAbortReason().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "pgnOfMultiPacketMessage")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          pgnOfMultiPacketMessage().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 @IsobusCMMessageTypes.ConnectionAbort: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusCMMessageTypes.ConnectionAbort");
+  }
+}
+
+void ConnectionAbort::set_implicit_omit()
+{
+if (ctrl().is_bound()) ctrl().set_implicit_omit();
+if (connectionAbortReason().is_bound()) connectionAbortReason().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (pgnOfMultiPacketMessage().is_bound()) pgnOfMultiPacketMessage().set_implicit_omit();
+}
+
+void ConnectionAbort::encode_text(Text_Buf& text_buf) const
+{
+field_ctrl.encode_text(text_buf);
+field_connectionAbortReason.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_pgnOfMultiPacketMessage.encode_text(text_buf);
+}
+
+void ConnectionAbort::decode_text(Text_Buf& text_buf)
+{
+field_ctrl.decode_text(text_buf);
+field_connectionAbortReason.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_pgnOfMultiPacketMessage.decode_text(text_buf);
+}
+
+void ConnectionAbort::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ConnectionAbort::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ConnectionAbort::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, ConnectionAbort_ctrl_descr_.raw->forceomit);
+  decoded_field_length = field_ctrl.RAW_decode(ConnectionAbort_ctrl_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, e__ConnectionAbort__AbortReason_descr_.raw->forceomit);
+  decoded_field_length = field_connectionAbortReason.RAW_decode(e__ConnectionAbort__AbortReason_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, ConnectionAbort_reserved3_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(ConnectionAbort_reserved3_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, ConnectionAbort_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(ConnectionAbort_reserved4_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, ConnectionAbort_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(ConnectionAbort_reserved5_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, IsobusMessageTypes::PGN_descr_.raw->forceomit);
+  decoded_field_length = field_pgnOfMultiPacketMessage.RAW_decode(IsobusMessageTypes::PGN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ConnectionAbort::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, ConnectionAbort_ctrl_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, e__ConnectionAbort__AbortReason_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ConnectionAbort_reserved3_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, ConnectionAbort_reserved4_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, ConnectionAbort_reserved5_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, IsobusMessageTypes::PGN_descr_.raw);
+  encoded_length += field_ctrl.RAW_encode(ConnectionAbort_ctrl_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_connectionAbortReason.RAW_encode(e__ConnectionAbort__AbortReason_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved3.RAW_encode(ConnectionAbort_reserved3_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved4.RAW_encode(ConnectionAbort_reserved4_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved5.RAW_encode(ConnectionAbort_reserved5_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_pgnOfMultiPacketMessage.RAW_encode(IsobusMessageTypes::PGN_descr_, *myleaf.body.node.nodes[5]);
+  return myleaf.length = encoded_length;
+}
+
+struct ConnectionAbort_template::single_value_struct {
+OCTETSTRING_template field_ctrl;
+e__ConnectionAbort__AbortReason_template field_connectionAbortReason;
+OCTETSTRING_template field_reserved3;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+INTEGER_template field_pgnOfMultiPacketMessage;
+};
+
+void ConnectionAbort_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_ctrl = ANY_VALUE;
+single_value->field_connectionAbortReason = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_pgnOfMultiPacketMessage = ANY_VALUE;
+}
+}
+}
+
+void ConnectionAbort_template::copy_value(const ConnectionAbort& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.ctrl().is_bound()) {
+  single_value->field_ctrl = other_value.ctrl();
+} else {
+  single_value->field_ctrl.clean_up();
+}
+if (other_value.connectionAbortReason().is_bound()) {
+  single_value->field_connectionAbortReason = other_value.connectionAbortReason();
+} else {
+  single_value->field_connectionAbortReason.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.pgnOfMultiPacketMessage().is_bound()) {
+  single_value->field_pgnOfMultiPacketMessage = other_value.pgnOfMultiPacketMessage();
+} else {
+  single_value->field_pgnOfMultiPacketMessage.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ConnectionAbort_template::copy_template(const ConnectionAbort_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.ctrl().get_selection()) {
+single_value->field_ctrl = other_value.ctrl();
+} else {
+single_value->field_ctrl.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.connectionAbortReason().get_selection()) {
+single_value->field_connectionAbortReason = other_value.connectionAbortReason();
+} else {
+single_value->field_connectionAbortReason.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.pgnOfMultiPacketMessage().get_selection()) {
+single_value->field_pgnOfMultiPacketMessage = other_value.pgnOfMultiPacketMessage();
+} else {
+single_value->field_pgnOfMultiPacketMessage.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ConnectionAbort_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusCMMessageTypes.ConnectionAbort.");
+break;
+}
+set_selection(other_value);
+}
+
+ConnectionAbort_template::ConnectionAbort_template()
+{
+}
+
+ConnectionAbort_template::ConnectionAbort_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ConnectionAbort_template::ConnectionAbort_template(const ConnectionAbort& other_value)
+{
+copy_value(other_value);
+}
+
+ConnectionAbort_template::ConnectionAbort_template(const OPTIONAL<ConnectionAbort>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ConnectionAbort&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusCMMessageTypes.ConnectionAbort from an unbound optional field.");
+}
+}
+
+ConnectionAbort_template::ConnectionAbort_template(const ConnectionAbort_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ConnectionAbort_template::~ConnectionAbort_template()
+{
+clean_up();
+}
+
+ConnectionAbort_template& ConnectionAbort_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ConnectionAbort_template& ConnectionAbort_template::operator=(const ConnectionAbort& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ConnectionAbort_template& ConnectionAbort_template::operator=(const OPTIONAL<ConnectionAbort>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ConnectionAbort&)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 @IsobusCMMessageTypes.ConnectionAbort.");
+}
+return *this;
+}
+
+ConnectionAbort_template& ConnectionAbort_template::operator=(const ConnectionAbort_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ConnectionAbort_template::match(const ConnectionAbort& 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.ctrl().is_bound()) return FALSE;
+if(!single_value->field_ctrl.match(other_value.ctrl(), legacy))return FALSE;
+if(!other_value.connectionAbortReason().is_bound()) return FALSE;
+if(!single_value->field_connectionAbortReason.match(other_value.connectionAbortReason(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.pgnOfMultiPacketMessage().is_bound()) return FALSE;
+if(!single_value->field_pgnOfMultiPacketMessage.match(other_value.pgnOfMultiPacketMessage(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusCMMessageTypes.ConnectionAbort.");
+}
+return FALSE;
+}
+
+boolean ConnectionAbort_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_ctrl.is_bound()
+
+ ||single_value->field_connectionAbortReason.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_pgnOfMultiPacketMessage.is_bound()
+;
+}
+
+boolean ConnectionAbort_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_ctrl.is_value()
+ &&single_value->field_connectionAbortReason.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_pgnOfMultiPacketMessage.is_value();
+}
+
+void ConnectionAbort_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ConnectionAbort ConnectionAbort_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 @IsobusCMMessageTypes.ConnectionAbort.");
+ConnectionAbort ret_val;
+if (single_value->field_ctrl.is_bound()) {
+ret_val.ctrl() = single_value->field_ctrl.valueof();
+}
+if (single_value->field_connectionAbortReason.is_bound()) {
+ret_val.connectionAbortReason() = single_value->field_connectionAbortReason.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_pgnOfMultiPacketMessage.is_bound()) {
+ret_val.pgnOfMultiPacketMessage() = single_value->field_pgnOfMultiPacketMessage.valueof();
+}
+return ret_val;
+}
+
+void ConnectionAbort_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusCMMessageTypes.ConnectionAbort.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ConnectionAbort_template[list_length];
+}
+
+ConnectionAbort_template& ConnectionAbort_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusCMMessageTypes.ConnectionAbort.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusCMMessageTypes.ConnectionAbort.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& ConnectionAbort_template::ctrl()
+{
+set_specific();
+return single_value->field_ctrl;
+}
+
+const OCTETSTRING_template& ConnectionAbort_template::ctrl() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field ctrl of a non-specific template of type @IsobusCMMessageTypes.ConnectionAbort.");
+return single_value->field_ctrl;
+}
+
+e__ConnectionAbort__AbortReason_template& ConnectionAbort_template::connectionAbortReason()
+{
+set_specific();
+return single_value->field_connectionAbortReason;
+}
+
+const e__ConnectionAbort__AbortReason_template& ConnectionAbort_template::connectionAbortReason() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field connectionAbortReason of a non-specific template of type @IsobusCMMessageTypes.ConnectionAbort.");
+return single_value->field_connectionAbortReason;
+}
+
+OCTETSTRING_template& ConnectionAbort_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const OCTETSTRING_template& ConnectionAbort_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusCMMessageTypes.ConnectionAbort.");
+return single_value->field_reserved3;
+}
+
+OCTETSTRING_template& ConnectionAbort_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& ConnectionAbort_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusCMMessageTypes.ConnectionAbort.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& ConnectionAbort_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& ConnectionAbort_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusCMMessageTypes.ConnectionAbort.");
+return single_value->field_reserved5;
+}
+
+INTEGER_template& ConnectionAbort_template::pgnOfMultiPacketMessage()
+{
+set_specific();
+return single_value->field_pgnOfMultiPacketMessage;
+}
+
+const INTEGER_template& ConnectionAbort_template::pgnOfMultiPacketMessage() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field pgnOfMultiPacketMessage of a non-specific template of type @IsobusCMMessageTypes.ConnectionAbort.");
+return single_value->field_pgnOfMultiPacketMessage;
+}
+
+int ConnectionAbort_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.ConnectionAbort 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 @IsobusCMMessageTypes.ConnectionAbort 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 @IsobusCMMessageTypes.ConnectionAbort containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.ConnectionAbort containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.ConnectionAbort containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.ConnectionAbort containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusCMMessageTypes.ConnectionAbort.");
+  }
+  return 0;
+}
+
+void ConnectionAbort_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ ctrl := ");
+single_value->field_ctrl.log();
+TTCN_Logger::log_event_str(", connectionAbortReason := ");
+single_value->field_connectionAbortReason.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", pgnOfMultiPacketMessage := ");
+single_value->field_pgnOfMultiPacketMessage.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ConnectionAbort_template::log_match(const ConnectionAbort& 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_ctrl.match(match_value.ctrl(), legacy)){
+TTCN_Logger::log_logmatch_info(".ctrl");
+single_value->field_ctrl.log_match(match_value.ctrl(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_connectionAbortReason.match(match_value.connectionAbortReason(), legacy)){
+TTCN_Logger::log_logmatch_info(".connectionAbortReason");
+single_value->field_connectionAbortReason.log_match(match_value.connectionAbortReason(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_pgnOfMultiPacketMessage.match(match_value.pgnOfMultiPacketMessage(), legacy)){
+TTCN_Logger::log_logmatch_info(".pgnOfMultiPacketMessage");
+single_value->field_pgnOfMultiPacketMessage.log_match(match_value.pgnOfMultiPacketMessage(), 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("{ ctrl := ");
+single_value->field_ctrl.log_match(match_value.ctrl(), legacy);
+TTCN_Logger::log_event_str(", connectionAbortReason := ");
+single_value->field_connectionAbortReason.log_match(match_value.connectionAbortReason(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", pgnOfMultiPacketMessage := ");
+single_value->field_pgnOfMultiPacketMessage.log_match(match_value.pgnOfMultiPacketMessage(), 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 ConnectionAbort_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_ctrl.encode_text(text_buf);
+single_value->field_connectionAbortReason.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_pgnOfMultiPacketMessage.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 @IsobusCMMessageTypes.ConnectionAbort.");
+}
+}
+
+void ConnectionAbort_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_ctrl.decode_text(text_buf);
+single_value->field_connectionAbortReason.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_pgnOfMultiPacketMessage.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 ConnectionAbort_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 @IsobusCMMessageTypes.ConnectionAbort.");
+}
+}
+
+void ConnectionAbort_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: {
+    ConnectionAbort_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusCMMessageTypes.ConnectionAbort 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) ctrl().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) connectionAbortReason().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) pgnOfMultiPacketMessage().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(), "ctrl")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ctrl().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(), "connectionAbortReason")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          connectionAbortReason().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "pgnOfMultiPacketMessage")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          pgnOfMultiPacketMessage().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 @IsobusCMMessageTypes.ConnectionAbort: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusCMMessageTypes.ConnectionAbort");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ConnectionAbort_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_ctrl.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.ConnectionAbort");
+single_value->field_connectionAbortReason.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.ConnectionAbort");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.ConnectionAbort");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.ConnectionAbort");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.ConnectionAbort");
+single_value->field_pgnOfMultiPacketMessage.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.ConnectionAbort");
+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 : "@IsobusCMMessageTypes.ConnectionAbort");
+}
+
+boolean ConnectionAbort_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ConnectionAbort_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+BroadcastAnnounce::BroadcastAnnounce()
+{
+}
+
+BroadcastAnnounce::BroadcastAnnounce(const OCTETSTRING& par_ctrl,
+    const INTEGER& par_msgSizeInByte,
+    const INTEGER& par_totalNumberOfPackets,
+    const OCTETSTRING& par_reserved5,
+    const INTEGER& par_pgnOfMultiPacketMessage)
+  :   field_ctrl(par_ctrl),
+  field_msgSizeInByte(par_msgSizeInByte),
+  field_totalNumberOfPackets(par_totalNumberOfPackets),
+  field_reserved5(par_reserved5),
+  field_pgnOfMultiPacketMessage(par_pgnOfMultiPacketMessage)
+{
+}
+
+BroadcastAnnounce::BroadcastAnnounce(const BroadcastAnnounce& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusCMMessageTypes.BroadcastAnnounce.");
+if (other_value.ctrl().is_bound()) field_ctrl = other_value.ctrl();
+else field_ctrl.clean_up();
+if (other_value.msgSizeInByte().is_bound()) field_msgSizeInByte = other_value.msgSizeInByte();
+else field_msgSizeInByte.clean_up();
+if (other_value.totalNumberOfPackets().is_bound()) field_totalNumberOfPackets = other_value.totalNumberOfPackets();
+else field_totalNumberOfPackets.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.pgnOfMultiPacketMessage().is_bound()) field_pgnOfMultiPacketMessage = other_value.pgnOfMultiPacketMessage();
+else field_pgnOfMultiPacketMessage.clean_up();
+}
+
+void BroadcastAnnounce::clean_up()
+{
+field_ctrl.clean_up();
+field_msgSizeInByte.clean_up();
+field_totalNumberOfPackets.clean_up();
+field_reserved5.clean_up();
+field_pgnOfMultiPacketMessage.clean_up();
+}
+
+const TTCN_Typedescriptor_t* BroadcastAnnounce::get_descriptor() const { return &BroadcastAnnounce_descr_; }
+BroadcastAnnounce& BroadcastAnnounce::operator=(const BroadcastAnnounce& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusCMMessageTypes.BroadcastAnnounce.");
+  if (other_value.ctrl().is_bound()) field_ctrl = other_value.ctrl();
+  else field_ctrl.clean_up();
+  if (other_value.msgSizeInByte().is_bound()) field_msgSizeInByte = other_value.msgSizeInByte();
+  else field_msgSizeInByte.clean_up();
+  if (other_value.totalNumberOfPackets().is_bound()) field_totalNumberOfPackets = other_value.totalNumberOfPackets();
+  else field_totalNumberOfPackets.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.pgnOfMultiPacketMessage().is_bound()) field_pgnOfMultiPacketMessage = other_value.pgnOfMultiPacketMessage();
+  else field_pgnOfMultiPacketMessage.clean_up();
+}
+return *this;
+}
+
+boolean BroadcastAnnounce::operator==(const BroadcastAnnounce& other_value) const
+{
+return field_ctrl==other_value.field_ctrl
+  && field_msgSizeInByte==other_value.field_msgSizeInByte
+  && field_totalNumberOfPackets==other_value.field_totalNumberOfPackets
+  && field_reserved5==other_value.field_reserved5
+  && field_pgnOfMultiPacketMessage==other_value.field_pgnOfMultiPacketMessage;
+}
+
+boolean BroadcastAnnounce::is_bound() const
+{
+return (field_ctrl.is_bound())
+  || (field_msgSizeInByte.is_bound())
+  || (field_totalNumberOfPackets.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_pgnOfMultiPacketMessage.is_bound());
+}
+boolean BroadcastAnnounce::is_value() const
+{
+return field_ctrl.is_value()
+  && field_msgSizeInByte.is_value()
+  && field_totalNumberOfPackets.is_value()
+  && field_reserved5.is_value()
+  && field_pgnOfMultiPacketMessage.is_value();
+}
+void BroadcastAnnounce::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ ctrl := ");
+field_ctrl.log();
+TTCN_Logger::log_event_str(", msgSizeInByte := ");
+field_msgSizeInByte.log();
+TTCN_Logger::log_event_str(", totalNumberOfPackets := ");
+field_totalNumberOfPackets.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", pgnOfMultiPacketMessage := ");
+field_pgnOfMultiPacketMessage.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void BroadcastAnnounce::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 @IsobusCMMessageTypes.BroadcastAnnounce 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) ctrl().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) msgSizeInByte().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) totalNumberOfPackets().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) pgnOfMultiPacketMessage().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(), "ctrl")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ctrl().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(), "msgSizeInByte")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgSizeInByte().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(), "totalNumberOfPackets")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          totalNumberOfPackets().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "pgnOfMultiPacketMessage")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          pgnOfMultiPacketMessage().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 @IsobusCMMessageTypes.BroadcastAnnounce: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusCMMessageTypes.BroadcastAnnounce");
+  }
+}
+
+void BroadcastAnnounce::set_implicit_omit()
+{
+if (ctrl().is_bound()) ctrl().set_implicit_omit();
+if (msgSizeInByte().is_bound()) msgSizeInByte().set_implicit_omit();
+if (totalNumberOfPackets().is_bound()) totalNumberOfPackets().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (pgnOfMultiPacketMessage().is_bound()) pgnOfMultiPacketMessage().set_implicit_omit();
+}
+
+void BroadcastAnnounce::encode_text(Text_Buf& text_buf) const
+{
+field_ctrl.encode_text(text_buf);
+field_msgSizeInByte.encode_text(text_buf);
+field_totalNumberOfPackets.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_pgnOfMultiPacketMessage.encode_text(text_buf);
+}
+
+void BroadcastAnnounce::decode_text(Text_Buf& text_buf)
+{
+field_ctrl.decode_text(text_buf);
+field_msgSizeInByte.decode_text(text_buf);
+field_totalNumberOfPackets.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_pgnOfMultiPacketMessage.decode_text(text_buf);
+}
+
+void BroadcastAnnounce::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void BroadcastAnnounce::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int BroadcastAnnounce::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, BroadcastAnnounce_ctrl_descr_.raw->forceomit);
+  decoded_field_length = field_ctrl.RAW_decode(BroadcastAnnounce_ctrl_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, IsobusMessageTypes::INT2_descr_.raw->forceomit);
+  decoded_field_length = field_msgSizeInByte.RAW_decode(IsobusMessageTypes::INT2_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, NUMBER__OF__PACKETS_descr_.raw->forceomit);
+  decoded_field_length = field_totalNumberOfPackets.RAW_decode(NUMBER__OF__PACKETS_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, BroadcastAnnounce_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(BroadcastAnnounce_reserved5_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, IsobusMessageTypes::PGN_descr_.raw->forceomit);
+  decoded_field_length = field_pgnOfMultiPacketMessage.RAW_decode(IsobusMessageTypes::PGN_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 BroadcastAnnounce::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, BroadcastAnnounce_ctrl_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, IsobusMessageTypes::INT2_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, NUMBER__OF__PACKETS_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BroadcastAnnounce_reserved5_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, IsobusMessageTypes::PGN_descr_.raw);
+  encoded_length += field_ctrl.RAW_encode(BroadcastAnnounce_ctrl_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_msgSizeInByte.RAW_encode(IsobusMessageTypes::INT2_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_totalNumberOfPackets.RAW_encode(NUMBER__OF__PACKETS_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved5.RAW_encode(BroadcastAnnounce_reserved5_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_pgnOfMultiPacketMessage.RAW_encode(IsobusMessageTypes::PGN_descr_, *myleaf.body.node.nodes[4]);
+  return myleaf.length = encoded_length;
+}
+
+struct BroadcastAnnounce_template::single_value_struct {
+OCTETSTRING_template field_ctrl;
+INTEGER_template field_msgSizeInByte;
+INTEGER_template field_totalNumberOfPackets;
+OCTETSTRING_template field_reserved5;
+INTEGER_template field_pgnOfMultiPacketMessage;
+};
+
+void BroadcastAnnounce_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_ctrl = ANY_VALUE;
+single_value->field_msgSizeInByte = ANY_VALUE;
+single_value->field_totalNumberOfPackets = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_pgnOfMultiPacketMessage = ANY_VALUE;
+}
+}
+}
+
+void BroadcastAnnounce_template::copy_value(const BroadcastAnnounce& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.ctrl().is_bound()) {
+  single_value->field_ctrl = other_value.ctrl();
+} else {
+  single_value->field_ctrl.clean_up();
+}
+if (other_value.msgSizeInByte().is_bound()) {
+  single_value->field_msgSizeInByte = other_value.msgSizeInByte();
+} else {
+  single_value->field_msgSizeInByte.clean_up();
+}
+if (other_value.totalNumberOfPackets().is_bound()) {
+  single_value->field_totalNumberOfPackets = other_value.totalNumberOfPackets();
+} else {
+  single_value->field_totalNumberOfPackets.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.pgnOfMultiPacketMessage().is_bound()) {
+  single_value->field_pgnOfMultiPacketMessage = other_value.pgnOfMultiPacketMessage();
+} else {
+  single_value->field_pgnOfMultiPacketMessage.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void BroadcastAnnounce_template::copy_template(const BroadcastAnnounce_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.ctrl().get_selection()) {
+single_value->field_ctrl = other_value.ctrl();
+} else {
+single_value->field_ctrl.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.msgSizeInByte().get_selection()) {
+single_value->field_msgSizeInByte = other_value.msgSizeInByte();
+} else {
+single_value->field_msgSizeInByte.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.totalNumberOfPackets().get_selection()) {
+single_value->field_totalNumberOfPackets = other_value.totalNumberOfPackets();
+} else {
+single_value->field_totalNumberOfPackets.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.pgnOfMultiPacketMessage().get_selection()) {
+single_value->field_pgnOfMultiPacketMessage = other_value.pgnOfMultiPacketMessage();
+} else {
+single_value->field_pgnOfMultiPacketMessage.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new BroadcastAnnounce_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusCMMessageTypes.BroadcastAnnounce.");
+break;
+}
+set_selection(other_value);
+}
+
+BroadcastAnnounce_template::BroadcastAnnounce_template()
+{
+}
+
+BroadcastAnnounce_template::BroadcastAnnounce_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+BroadcastAnnounce_template::BroadcastAnnounce_template(const BroadcastAnnounce& other_value)
+{
+copy_value(other_value);
+}
+
+BroadcastAnnounce_template::BroadcastAnnounce_template(const OPTIONAL<BroadcastAnnounce>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const BroadcastAnnounce&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusCMMessageTypes.BroadcastAnnounce from an unbound optional field.");
+}
+}
+
+BroadcastAnnounce_template::BroadcastAnnounce_template(const BroadcastAnnounce_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+BroadcastAnnounce_template::~BroadcastAnnounce_template()
+{
+clean_up();
+}
+
+BroadcastAnnounce_template& BroadcastAnnounce_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+BroadcastAnnounce_template& BroadcastAnnounce_template::operator=(const BroadcastAnnounce& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+BroadcastAnnounce_template& BroadcastAnnounce_template::operator=(const OPTIONAL<BroadcastAnnounce>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const BroadcastAnnounce&)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 @IsobusCMMessageTypes.BroadcastAnnounce.");
+}
+return *this;
+}
+
+BroadcastAnnounce_template& BroadcastAnnounce_template::operator=(const BroadcastAnnounce_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean BroadcastAnnounce_template::match(const BroadcastAnnounce& 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.ctrl().is_bound()) return FALSE;
+if(!single_value->field_ctrl.match(other_value.ctrl(), legacy))return FALSE;
+if(!other_value.msgSizeInByte().is_bound()) return FALSE;
+if(!single_value->field_msgSizeInByte.match(other_value.msgSizeInByte(), legacy))return FALSE;
+if(!other_value.totalNumberOfPackets().is_bound()) return FALSE;
+if(!single_value->field_totalNumberOfPackets.match(other_value.totalNumberOfPackets(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.pgnOfMultiPacketMessage().is_bound()) return FALSE;
+if(!single_value->field_pgnOfMultiPacketMessage.match(other_value.pgnOfMultiPacketMessage(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusCMMessageTypes.BroadcastAnnounce.");
+}
+return FALSE;
+}
+
+boolean BroadcastAnnounce_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_ctrl.is_bound()
+
+ ||single_value->field_msgSizeInByte.is_bound()
+
+ ||single_value->field_totalNumberOfPackets.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_pgnOfMultiPacketMessage.is_bound()
+;
+}
+
+boolean BroadcastAnnounce_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_ctrl.is_value()
+ &&single_value->field_msgSizeInByte.is_value()
+ &&single_value->field_totalNumberOfPackets.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_pgnOfMultiPacketMessage.is_value();
+}
+
+void BroadcastAnnounce_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+BroadcastAnnounce BroadcastAnnounce_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 @IsobusCMMessageTypes.BroadcastAnnounce.");
+BroadcastAnnounce ret_val;
+if (single_value->field_ctrl.is_bound()) {
+ret_val.ctrl() = single_value->field_ctrl.valueof();
+}
+if (single_value->field_msgSizeInByte.is_bound()) {
+ret_val.msgSizeInByte() = single_value->field_msgSizeInByte.valueof();
+}
+if (single_value->field_totalNumberOfPackets.is_bound()) {
+ret_val.totalNumberOfPackets() = single_value->field_totalNumberOfPackets.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_pgnOfMultiPacketMessage.is_bound()) {
+ret_val.pgnOfMultiPacketMessage() = single_value->field_pgnOfMultiPacketMessage.valueof();
+}
+return ret_val;
+}
+
+void BroadcastAnnounce_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusCMMessageTypes.BroadcastAnnounce.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new BroadcastAnnounce_template[list_length];
+}
+
+BroadcastAnnounce_template& BroadcastAnnounce_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusCMMessageTypes.BroadcastAnnounce.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusCMMessageTypes.BroadcastAnnounce.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& BroadcastAnnounce_template::ctrl()
+{
+set_specific();
+return single_value->field_ctrl;
+}
+
+const OCTETSTRING_template& BroadcastAnnounce_template::ctrl() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field ctrl of a non-specific template of type @IsobusCMMessageTypes.BroadcastAnnounce.");
+return single_value->field_ctrl;
+}
+
+INTEGER_template& BroadcastAnnounce_template::msgSizeInByte()
+{
+set_specific();
+return single_value->field_msgSizeInByte;
+}
+
+const INTEGER_template& BroadcastAnnounce_template::msgSizeInByte() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field msgSizeInByte of a non-specific template of type @IsobusCMMessageTypes.BroadcastAnnounce.");
+return single_value->field_msgSizeInByte;
+}
+
+INTEGER_template& BroadcastAnnounce_template::totalNumberOfPackets()
+{
+set_specific();
+return single_value->field_totalNumberOfPackets;
+}
+
+const INTEGER_template& BroadcastAnnounce_template::totalNumberOfPackets() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field totalNumberOfPackets of a non-specific template of type @IsobusCMMessageTypes.BroadcastAnnounce.");
+return single_value->field_totalNumberOfPackets;
+}
+
+OCTETSTRING_template& BroadcastAnnounce_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& BroadcastAnnounce_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusCMMessageTypes.BroadcastAnnounce.");
+return single_value->field_reserved5;
+}
+
+INTEGER_template& BroadcastAnnounce_template::pgnOfMultiPacketMessage()
+{
+set_specific();
+return single_value->field_pgnOfMultiPacketMessage;
+}
+
+const INTEGER_template& BroadcastAnnounce_template::pgnOfMultiPacketMessage() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field pgnOfMultiPacketMessage of a non-specific template of type @IsobusCMMessageTypes.BroadcastAnnounce.");
+return single_value->field_pgnOfMultiPacketMessage;
+}
+
+int BroadcastAnnounce_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.BroadcastAnnounce 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 @IsobusCMMessageTypes.BroadcastAnnounce 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 @IsobusCMMessageTypes.BroadcastAnnounce containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.BroadcastAnnounce containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.BroadcastAnnounce containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.BroadcastAnnounce containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusCMMessageTypes.BroadcastAnnounce.");
+  }
+  return 0;
+}
+
+void BroadcastAnnounce_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ ctrl := ");
+single_value->field_ctrl.log();
+TTCN_Logger::log_event_str(", msgSizeInByte := ");
+single_value->field_msgSizeInByte.log();
+TTCN_Logger::log_event_str(", totalNumberOfPackets := ");
+single_value->field_totalNumberOfPackets.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", pgnOfMultiPacketMessage := ");
+single_value->field_pgnOfMultiPacketMessage.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void BroadcastAnnounce_template::log_match(const BroadcastAnnounce& 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_ctrl.match(match_value.ctrl(), legacy)){
+TTCN_Logger::log_logmatch_info(".ctrl");
+single_value->field_ctrl.log_match(match_value.ctrl(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_msgSizeInByte.match(match_value.msgSizeInByte(), legacy)){
+TTCN_Logger::log_logmatch_info(".msgSizeInByte");
+single_value->field_msgSizeInByte.log_match(match_value.msgSizeInByte(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_totalNumberOfPackets.match(match_value.totalNumberOfPackets(), legacy)){
+TTCN_Logger::log_logmatch_info(".totalNumberOfPackets");
+single_value->field_totalNumberOfPackets.log_match(match_value.totalNumberOfPackets(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_pgnOfMultiPacketMessage.match(match_value.pgnOfMultiPacketMessage(), legacy)){
+TTCN_Logger::log_logmatch_info(".pgnOfMultiPacketMessage");
+single_value->field_pgnOfMultiPacketMessage.log_match(match_value.pgnOfMultiPacketMessage(), 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("{ ctrl := ");
+single_value->field_ctrl.log_match(match_value.ctrl(), legacy);
+TTCN_Logger::log_event_str(", msgSizeInByte := ");
+single_value->field_msgSizeInByte.log_match(match_value.msgSizeInByte(), legacy);
+TTCN_Logger::log_event_str(", totalNumberOfPackets := ");
+single_value->field_totalNumberOfPackets.log_match(match_value.totalNumberOfPackets(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", pgnOfMultiPacketMessage := ");
+single_value->field_pgnOfMultiPacketMessage.log_match(match_value.pgnOfMultiPacketMessage(), 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 BroadcastAnnounce_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_ctrl.encode_text(text_buf);
+single_value->field_msgSizeInByte.encode_text(text_buf);
+single_value->field_totalNumberOfPackets.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_pgnOfMultiPacketMessage.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 @IsobusCMMessageTypes.BroadcastAnnounce.");
+}
+}
+
+void BroadcastAnnounce_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_ctrl.decode_text(text_buf);
+single_value->field_msgSizeInByte.decode_text(text_buf);
+single_value->field_totalNumberOfPackets.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_pgnOfMultiPacketMessage.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 BroadcastAnnounce_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 @IsobusCMMessageTypes.BroadcastAnnounce.");
+}
+}
+
+void BroadcastAnnounce_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: {
+    BroadcastAnnounce_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusCMMessageTypes.BroadcastAnnounce 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) ctrl().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) msgSizeInByte().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) totalNumberOfPackets().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) pgnOfMultiPacketMessage().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(), "ctrl")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ctrl().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(), "msgSizeInByte")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgSizeInByte().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(), "totalNumberOfPackets")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          totalNumberOfPackets().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "pgnOfMultiPacketMessage")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          pgnOfMultiPacketMessage().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 @IsobusCMMessageTypes.BroadcastAnnounce: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusCMMessageTypes.BroadcastAnnounce");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void BroadcastAnnounce_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_ctrl.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.BroadcastAnnounce");
+single_value->field_msgSizeInByte.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.BroadcastAnnounce");
+single_value->field_totalNumberOfPackets.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.BroadcastAnnounce");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.BroadcastAnnounce");
+single_value->field_pgnOfMultiPacketMessage.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.BroadcastAnnounce");
+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 : "@IsobusCMMessageTypes.BroadcastAnnounce");
+}
+
+boolean BroadcastAnnounce_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean BroadcastAnnounce_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 TP__CM::copy_value(const TP__CM& other_value)
+{
+switch (other_value.union_selection) {
+case ALT_requestToSend:
+field_requestToSend = new RequestToSend(*other_value.field_requestToSend);
+break;
+case ALT_clearToSend:
+field_clearToSend = new ClearToSend(*other_value.field_clearToSend);
+break;
+case ALT_endOfMessageAcknowledgement:
+field_endOfMessageAcknowledgement = new EndOfMessageAcknowledgement(*other_value.field_endOfMessageAcknowledgement);
+break;
+case ALT_broadcastAnnounce:
+field_broadcastAnnounce = new BroadcastAnnounce(*other_value.field_broadcastAnnounce);
+break;
+case ALT_connectionAbort:
+field_connectionAbort = new ConnectionAbort(*other_value.field_connectionAbort);
+break;
+default:
+TTCN_error("Assignment of an unbound union value of type @IsobusCMMessageTypes.TP_CM.");
+}
+union_selection = other_value.union_selection;
+}
+
+TP__CM::TP__CM()
+{
+union_selection = UNBOUND_VALUE;
+}
+
+TP__CM::TP__CM(const TP__CM& other_value)
+: Base_Type(){
+copy_value(other_value);
+}
+
+TP__CM::~TP__CM()
+{
+clean_up();
+}
+
+TP__CM& TP__CM::operator=(const TP__CM& other_value)
+{
+if (this != &other_value) {
+clean_up();
+copy_value(other_value);
+}
+return *this;
+}
+
+boolean TP__CM::operator==(const TP__CM& other_value) const
+{
+if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @IsobusCMMessageTypes.TP_CM.");
+if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @IsobusCMMessageTypes.TP_CM.");
+if (union_selection != other_value.union_selection) return FALSE;
+switch (union_selection) {
+case ALT_requestToSend:
+return *field_requestToSend == *other_value.field_requestToSend;
+case ALT_clearToSend:
+return *field_clearToSend == *other_value.field_clearToSend;
+case ALT_endOfMessageAcknowledgement:
+return *field_endOfMessageAcknowledgement == *other_value.field_endOfMessageAcknowledgement;
+case ALT_broadcastAnnounce:
+return *field_broadcastAnnounce == *other_value.field_broadcastAnnounce;
+case ALT_connectionAbort:
+return *field_connectionAbort == *other_value.field_connectionAbort;
+default:
+return FALSE;
+}
+}
+
+RequestToSend& TP__CM::requestToSend()
+{
+if (union_selection != ALT_requestToSend) {
+clean_up();
+field_requestToSend = new RequestToSend;
+union_selection = ALT_requestToSend;
+}
+return *field_requestToSend;
+}
+
+const RequestToSend& TP__CM::requestToSend() const
+{
+if (union_selection != ALT_requestToSend) TTCN_error("Using non-selected field requestToSend in a value of union type @IsobusCMMessageTypes.TP_CM.");
+return *field_requestToSend;
+}
+
+ClearToSend& TP__CM::clearToSend()
+{
+if (union_selection != ALT_clearToSend) {
+clean_up();
+field_clearToSend = new ClearToSend;
+union_selection = ALT_clearToSend;
+}
+return *field_clearToSend;
+}
+
+const ClearToSend& TP__CM::clearToSend() const
+{
+if (union_selection != ALT_clearToSend) TTCN_error("Using non-selected field clearToSend in a value of union type @IsobusCMMessageTypes.TP_CM.");
+return *field_clearToSend;
+}
+
+EndOfMessageAcknowledgement& TP__CM::endOfMessageAcknowledgement()
+{
+if (union_selection != ALT_endOfMessageAcknowledgement) {
+clean_up();
+field_endOfMessageAcknowledgement = new EndOfMessageAcknowledgement;
+union_selection = ALT_endOfMessageAcknowledgement;
+}
+return *field_endOfMessageAcknowledgement;
+}
+
+const EndOfMessageAcknowledgement& TP__CM::endOfMessageAcknowledgement() const
+{
+if (union_selection != ALT_endOfMessageAcknowledgement) TTCN_error("Using non-selected field endOfMessageAcknowledgement in a value of union type @IsobusCMMessageTypes.TP_CM.");
+return *field_endOfMessageAcknowledgement;
+}
+
+BroadcastAnnounce& TP__CM::broadcastAnnounce()
+{
+if (union_selection != ALT_broadcastAnnounce) {
+clean_up();
+field_broadcastAnnounce = new BroadcastAnnounce;
+union_selection = ALT_broadcastAnnounce;
+}
+return *field_broadcastAnnounce;
+}
+
+const BroadcastAnnounce& TP__CM::broadcastAnnounce() const
+{
+if (union_selection != ALT_broadcastAnnounce) TTCN_error("Using non-selected field broadcastAnnounce in a value of union type @IsobusCMMessageTypes.TP_CM.");
+return *field_broadcastAnnounce;
+}
+
+ConnectionAbort& TP__CM::connectionAbort()
+{
+if (union_selection != ALT_connectionAbort) {
+clean_up();
+field_connectionAbort = new ConnectionAbort;
+union_selection = ALT_connectionAbort;
+}
+return *field_connectionAbort;
+}
+
+const ConnectionAbort& TP__CM::connectionAbort() const
+{
+if (union_selection != ALT_connectionAbort) TTCN_error("Using non-selected field connectionAbort in a value of union type @IsobusCMMessageTypes.TP_CM.");
+return *field_connectionAbort;
+}
+
+boolean TP__CM::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 @IsobusCMMessageTypes.TP_CM.");
+return union_selection == checked_selection;
+}
+
+boolean TP__CM::is_bound() const
+{
+  return union_selection != UNBOUND_VALUE;
+}
+
+boolean TP__CM::is_value() const
+{
+switch (union_selection) {
+case UNBOUND_VALUE: return FALSE;
+case ALT_requestToSend: return field_requestToSend->is_value();
+case ALT_clearToSend: return field_clearToSend->is_value();
+case ALT_endOfMessageAcknowledgement: return field_endOfMessageAcknowledgement->is_value();
+case ALT_broadcastAnnounce: return field_broadcastAnnounce->is_value();
+case ALT_connectionAbort: return field_connectionAbort->is_value();
+default: TTCN_error("Invalid selection in union is_bound");}
+}
+
+void TP__CM::clean_up()
+{
+switch (union_selection) {
+case ALT_requestToSend:
+  delete field_requestToSend;
+  break;
+case ALT_clearToSend:
+  delete field_clearToSend;
+  break;
+case ALT_endOfMessageAcknowledgement:
+  delete field_endOfMessageAcknowledgement;
+  break;
+case ALT_broadcastAnnounce:
+  delete field_broadcastAnnounce;
+  break;
+case ALT_connectionAbort:
+  delete field_connectionAbort;
+  break;
+default:
+  break;
+}
+union_selection = UNBOUND_VALUE;
+}
+
+void TP__CM::log() const
+{
+switch (union_selection) {
+case ALT_requestToSend:
+TTCN_Logger::log_event_str("{ requestToSend := ");
+field_requestToSend->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_clearToSend:
+TTCN_Logger::log_event_str("{ clearToSend := ");
+field_clearToSend->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_endOfMessageAcknowledgement:
+TTCN_Logger::log_event_str("{ endOfMessageAcknowledgement := ");
+field_endOfMessageAcknowledgement->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_broadcastAnnounce:
+TTCN_Logger::log_event_str("{ broadcastAnnounce := ");
+field_broadcastAnnounce->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_connectionAbort:
+TTCN_Logger::log_event_str("{ connectionAbort := ");
+field_connectionAbort->log();
+TTCN_Logger::log_event_str(" }");
+break;
+default:
+TTCN_Logger::log_event_unbound();
+}
+}
+
+void TP__CM::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, "requestToSend")) {
+    requestToSend().set_param(*mp_last);
+    if (!requestToSend().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "clearToSend")) {
+    clearToSend().set_param(*mp_last);
+    if (!clearToSend().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "endOfMessageAcknowledgement")) {
+    endOfMessageAcknowledgement().set_param(*mp_last);
+    if (!endOfMessageAcknowledgement().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "broadcastAnnounce")) {
+    broadcastAnnounce().set_param(*mp_last);
+    if (!broadcastAnnounce().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "connectionAbort")) {
+    connectionAbort().set_param(*mp_last);
+    if (!connectionAbort().is_bound()) clean_up();
+    return;
+  }
+  mp_last->error("Field %s does not exist in type @IsobusCMMessageTypes.TP_CM.", last_name);
+}
+
+void TP__CM::set_implicit_omit()
+{
+switch (union_selection) {
+case ALT_requestToSend:
+field_requestToSend->set_implicit_omit(); break;
+case ALT_clearToSend:
+field_clearToSend->set_implicit_omit(); break;
+case ALT_endOfMessageAcknowledgement:
+field_endOfMessageAcknowledgement->set_implicit_omit(); break;
+case ALT_broadcastAnnounce:
+field_broadcastAnnounce->set_implicit_omit(); break;
+case ALT_connectionAbort:
+field_connectionAbort->set_implicit_omit(); break;
+default: break;
+}
+}
+
+void TP__CM::encode_text(Text_Buf& text_buf) const
+{
+text_buf.push_int(union_selection);
+switch (union_selection) {
+case ALT_requestToSend:
+field_requestToSend->encode_text(text_buf);
+break;
+case ALT_clearToSend:
+field_clearToSend->encode_text(text_buf);
+break;
+case ALT_endOfMessageAcknowledgement:
+field_endOfMessageAcknowledgement->encode_text(text_buf);
+break;
+case ALT_broadcastAnnounce:
+field_broadcastAnnounce->encode_text(text_buf);
+break;
+case ALT_connectionAbort:
+field_connectionAbort->encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an unbound value of union type @IsobusCMMessageTypes.TP_CM.");
+}
+}
+
+void TP__CM::decode_text(Text_Buf& text_buf)
+{
+switch ((union_selection_type)text_buf.pull_int().get_val()) {
+case ALT_requestToSend:
+requestToSend().decode_text(text_buf);
+break;
+case ALT_clearToSend:
+clearToSend().decode_text(text_buf);
+break;
+case ALT_endOfMessageAcknowledgement:
+endOfMessageAcknowledgement().decode_text(text_buf);
+break;
+case ALT_broadcastAnnounce:
+broadcastAnnounce().decode_text(text_buf);
+break;
+case ALT_connectionAbort:
+connectionAbort().decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for type @IsobusCMMessageTypes.TP_CM.");
+}
+}
+
+void TP__CM::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void TP__CM::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int TP__CM::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, RequestToSend_descr_.raw->forceomit);
+      decoded_length = requestToSend().RAW_decode(RequestToSend_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, ClearToSend_descr_.raw->forceomit);
+      decoded_length = clearToSend().RAW_decode(ClearToSend_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, EndOfMessageAcknowledgement_descr_.raw->forceomit);
+      decoded_length = endOfMessageAcknowledgement().RAW_decode(EndOfMessageAcknowledgement_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 3: {
+      RAW_Force_Omit field_force_omit(3, force_omit, BroadcastAnnounce_descr_.raw->forceomit);
+      decoded_length = broadcastAnnounce().RAW_decode(BroadcastAnnounce_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 4: {
+      RAW_Force_Omit field_force_omit(4, force_omit, ConnectionAbort_descr_.raw->forceomit);
+      decoded_length = connectionAbort().RAW_decode(ConnectionAbort_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 {
+    boolean already_failed = FALSE;
+    already_failed = FALSE;
+    if (!already_failed) {
+      OCTETSTRING temporal_0;
+      int decoded_0_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_0_length = temporal_0.RAW_decode(RequestToSend_ctrl_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_0_length > 0) {
+        if (temporal_0 ==  os_0) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(0, force_omit, RequestToSend_descr_.raw->forceomit);
+          decoded_length = requestToSend().RAW_decode(RequestToSend_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_requestToSend).ctrl() ==  os_0) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      OCTETSTRING temporal_1;
+      int decoded_1_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_1_length = temporal_1.RAW_decode(ClearToSend_ctrl_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_1_length > 0) {
+        if (temporal_1 ==  os_1) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(1, force_omit, ClearToSend_descr_.raw->forceomit);
+          decoded_length = clearToSend().RAW_decode(ClearToSend_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_clearToSend).ctrl() ==  os_1) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      OCTETSTRING temporal_2;
+      int decoded_2_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_2_length = temporal_2.RAW_decode(EndOfMessageAcknowledgement_ctrl_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_2_length > 0) {
+        if (temporal_2 ==  os_2) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(2, force_omit, EndOfMessageAcknowledgement_descr_.raw->forceomit);
+          decoded_length = endOfMessageAcknowledgement().RAW_decode(EndOfMessageAcknowledgement_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_endOfMessageAcknowledgement).ctrl() ==  os_2) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      OCTETSTRING temporal_3;
+      int decoded_3_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_3_length = temporal_3.RAW_decode(BroadcastAnnounce_ctrl_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_3_length > 0) {
+        if (temporal_3 ==  os_3) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(3, force_omit, BroadcastAnnounce_descr_.raw->forceomit);
+          decoded_length = broadcastAnnounce().RAW_decode(BroadcastAnnounce_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_broadcastAnnounce).ctrl() ==  os_3) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      OCTETSTRING temporal_4;
+      int decoded_4_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_4_length = temporal_4.RAW_decode(ConnectionAbort_ctrl_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_4_length > 0) {
+        if (temporal_4 ==  os_4) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(4, force_omit, ConnectionAbort_descr_.raw->forceomit);
+          decoded_length = connectionAbort().RAW_decode(ConnectionAbort_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_connectionAbort).ctrl() ==  os_4) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+ }
+ clean_up();
+ return -1;
+}
+
+int TP__CM::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const
+{
+  int encoded_length = 0;
+  myleaf.isleaf = FALSE;
+  myleaf.body.node.num_of_nodes = 5;  myleaf.body.node.nodes = init_nodes_of_enc_tree(5);
+  memset(myleaf.body.node.nodes, 0, 5 * sizeof(RAW_enc_tree *));
+  switch (union_selection) {
+  case ALT_requestToSend:
+    myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 0, RequestToSend_descr_.raw);
+    encoded_length = field_requestToSend->RAW_encode(RequestToSend_descr_, *myleaf.body.node.nodes[0]);
+    myleaf.body.node.nodes[0]->coding_descr = &RequestToSend_descr_;
+    if ((*field_requestToSend).ctrl() !=  os_0) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={0,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   os_0.RAW_encode(RequestToSend_ctrl_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);
+  }
+    }
+    break;
+  case ALT_clearToSend:
+    myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 1, ClearToSend_descr_.raw);
+    encoded_length = field_clearToSend->RAW_encode(ClearToSend_descr_, *myleaf.body.node.nodes[1]);
+    myleaf.body.node.nodes[1]->coding_descr = &ClearToSend_descr_;
+    if ((*field_clearToSend).ctrl() !=  os_1) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={1,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   os_1.RAW_encode(ClearToSend_ctrl_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);
+  }
+    }
+    break;
+  case ALT_endOfMessageAcknowledgement:
+    myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 2, EndOfMessageAcknowledgement_descr_.raw);
+    encoded_length = field_endOfMessageAcknowledgement->RAW_encode(EndOfMessageAcknowledgement_descr_, *myleaf.body.node.nodes[2]);
+    myleaf.body.node.nodes[2]->coding_descr = &EndOfMessageAcknowledgement_descr_;
+    if ((*field_endOfMessageAcknowledgement).ctrl() !=  os_2) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={2,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   os_2.RAW_encode(EndOfMessageAcknowledgement_ctrl_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);
+  }
+    }
+    break;
+  case ALT_broadcastAnnounce:
+    myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 3, BroadcastAnnounce_descr_.raw);
+    encoded_length = field_broadcastAnnounce->RAW_encode(BroadcastAnnounce_descr_, *myleaf.body.node.nodes[3]);
+    myleaf.body.node.nodes[3]->coding_descr = &BroadcastAnnounce_descr_;
+    if ((*field_broadcastAnnounce).ctrl() !=  os_3) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={3,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   os_3.RAW_encode(BroadcastAnnounce_ctrl_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);
+  }
+    }
+    break;
+  case ALT_connectionAbort:
+    myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 4, ConnectionAbort_descr_.raw);
+    encoded_length = field_connectionAbort->RAW_encode(ConnectionAbort_descr_, *myleaf.body.node.nodes[4]);
+    myleaf.body.node.nodes[4]->coding_descr = &ConnectionAbort_descr_;
+    if ((*field_connectionAbort).ctrl() !=  os_4) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={4,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   os_4.RAW_encode(ConnectionAbort_ctrl_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);
+  }
+    }
+    break;
+  default:
+    TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
+  }
+  return encoded_length;
+}
+
+void TP__CM_template::copy_value(const TP__CM& other_value)
+{
+single_value.union_selection = other_value.get_selection();
+switch (single_value.union_selection) {
+case TP__CM::ALT_requestToSend:
+single_value.field_requestToSend = new RequestToSend_template(other_value.requestToSend());
+break;
+case TP__CM::ALT_clearToSend:
+single_value.field_clearToSend = new ClearToSend_template(other_value.clearToSend());
+break;
+case TP__CM::ALT_endOfMessageAcknowledgement:
+single_value.field_endOfMessageAcknowledgement = new EndOfMessageAcknowledgement_template(other_value.endOfMessageAcknowledgement());
+break;
+case TP__CM::ALT_broadcastAnnounce:
+single_value.field_broadcastAnnounce = new BroadcastAnnounce_template(other_value.broadcastAnnounce());
+break;
+case TP__CM::ALT_connectionAbort:
+single_value.field_connectionAbort = new ConnectionAbort_template(other_value.connectionAbort());
+break;
+default:
+TTCN_error("Initializing a template with an unbound value of type @IsobusCMMessageTypes.TP_CM.");
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void TP__CM_template::copy_template(const TP__CM_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 TP__CM::ALT_requestToSend:
+single_value.field_requestToSend = new RequestToSend_template(*other_value.single_value.field_requestToSend);
+break;
+case TP__CM::ALT_clearToSend:
+single_value.field_clearToSend = new ClearToSend_template(*other_value.single_value.field_clearToSend);
+break;
+case TP__CM::ALT_endOfMessageAcknowledgement:
+single_value.field_endOfMessageAcknowledgement = new EndOfMessageAcknowledgement_template(*other_value.single_value.field_endOfMessageAcknowledgement);
+break;
+case TP__CM::ALT_broadcastAnnounce:
+single_value.field_broadcastAnnounce = new BroadcastAnnounce_template(*other_value.single_value.field_broadcastAnnounce);
+break;
+case TP__CM::ALT_connectionAbort:
+single_value.field_connectionAbort = new ConnectionAbort_template(*other_value.single_value.field_connectionAbort);
+break;
+default:
+TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @IsobusCMMessageTypes.TP_CM.");
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new TP__CM_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;
+default:
+TTCN_error("Copying an uninitialized template of union type @IsobusCMMessageTypes.TP_CM.");
+}
+set_selection(other_value);
+}
+
+TP__CM_template::TP__CM_template()
+{
+}
+
+TP__CM_template::TP__CM_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+TP__CM_template::TP__CM_template(const TP__CM& other_value)
+{
+copy_value(other_value);
+}
+
+TP__CM_template::TP__CM_template(const OPTIONAL<TP__CM>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const TP__CM&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of union type @IsobusCMMessageTypes.TP_CM from an unbound optional field.");
+}
+}
+
+TP__CM_template::TP__CM_template(const TP__CM_template& other_value)
+: Base_Template(){
+copy_template(other_value);
+}
+
+TP__CM_template::~TP__CM_template()
+{
+clean_up();
+}
+
+void TP__CM_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case TP__CM::ALT_requestToSend:
+delete single_value.field_requestToSend;
+break;
+case TP__CM::ALT_clearToSend:
+delete single_value.field_clearToSend;
+break;
+case TP__CM::ALT_endOfMessageAcknowledgement:
+delete single_value.field_endOfMessageAcknowledgement;
+break;
+case TP__CM::ALT_broadcastAnnounce:
+delete single_value.field_broadcastAnnounce;
+break;
+case TP__CM::ALT_connectionAbort:
+delete single_value.field_connectionAbort;
+default:
+break;
+}
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+TP__CM_template& TP__CM_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+TP__CM_template& TP__CM_template::operator=(const TP__CM& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+TP__CM_template& TP__CM_template::operator=(const OPTIONAL<TP__CM>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const TP__CM&)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 @IsobusCMMessageTypes.TP_CM.");
+}
+return *this;
+}
+
+TP__CM_template& TP__CM_template::operator=(const TP__CM_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean TP__CM_template::match(const TP__CM& 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:
+{
+TP__CM::union_selection_type value_selection = other_value.get_selection();
+if (value_selection == TP__CM::UNBOUND_VALUE) return FALSE;
+if (value_selection != single_value.union_selection) return FALSE;
+switch (value_selection) {
+case TP__CM::ALT_requestToSend:
+return single_value.field_requestToSend->match(other_value.requestToSend(), legacy);
+case TP__CM::ALT_clearToSend:
+return single_value.field_clearToSend->match(other_value.clearToSend(), legacy);
+case TP__CM::ALT_endOfMessageAcknowledgement:
+return single_value.field_endOfMessageAcknowledgement->match(other_value.endOfMessageAcknowledgement(), legacy);
+case TP__CM::ALT_broadcastAnnounce:
+return single_value.field_broadcastAnnounce->match(other_value.broadcastAnnounce(), legacy);
+case TP__CM::ALT_connectionAbort:
+return single_value.field_connectionAbort->match(other_value.connectionAbort(), legacy);
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @IsobusCMMessageTypes.TP_CM.");
+}
+}
+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;
+default:
+TTCN_error ("Matching an uninitialized template of union type @IsobusCMMessageTypes.TP_CM.");
+}
+return FALSE;
+}
+
+boolean TP__CM_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+switch (single_value.union_selection) {
+case TP__CM::ALT_requestToSend:
+return single_value.field_requestToSend->is_value();
+case TP__CM::ALT_clearToSend:
+return single_value.field_clearToSend->is_value();
+case TP__CM::ALT_endOfMessageAcknowledgement:
+return single_value.field_endOfMessageAcknowledgement->is_value();
+case TP__CM::ALT_broadcastAnnounce:
+return single_value.field_broadcastAnnounce->is_value();
+case TP__CM::ALT_connectionAbort:
+return single_value.field_connectionAbort->is_value();
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @IsobusCMMessageTypes.TP_CM.");
+}
+}
+
+TP__CM TP__CM_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 @IsobusCMMessageTypes.TP_CM.");
+TP__CM ret_val;
+switch (single_value.union_selection) {
+case TP__CM::ALT_requestToSend:
+ret_val.requestToSend() = single_value.field_requestToSend->valueof();
+break;
+case TP__CM::ALT_clearToSend:
+ret_val.clearToSend() = single_value.field_clearToSend->valueof();
+break;
+case TP__CM::ALT_endOfMessageAcknowledgement:
+ret_val.endOfMessageAcknowledgement() = single_value.field_endOfMessageAcknowledgement->valueof();
+break;
+case TP__CM::ALT_broadcastAnnounce:
+ret_val.broadcastAnnounce() = single_value.field_broadcastAnnounce->valueof();
+break;
+case TP__CM::ALT_connectionAbort:
+ret_val.connectionAbort() = single_value.field_connectionAbort->valueof();
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @IsobusCMMessageTypes.TP_CM.");
+}
+return ret_val;
+}
+
+TP__CM_template& TP__CM_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @IsobusCMMessageTypes.TP_CM.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @IsobusCMMessageTypes.TP_CM.");
+return value_list.list_value[list_index];
+}
+void TP__CM_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error ("Internal error: Setting an invalid list for a template of union type @IsobusCMMessageTypes.TP_CM.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new TP__CM_template[list_length];
+}
+
+RequestToSend_template& TP__CM_template::requestToSend()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != TP__CM::ALT_requestToSend) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_requestToSend = new RequestToSend_template(ANY_VALUE);
+else single_value.field_requestToSend = new RequestToSend_template;
+single_value.union_selection = TP__CM::ALT_requestToSend;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_requestToSend;
+}
+
+const RequestToSend_template& TP__CM_template::requestToSend() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field requestToSend in a non-specific template of union type @IsobusCMMessageTypes.TP_CM.");
+if (single_value.union_selection != TP__CM::ALT_requestToSend) TTCN_error("Accessing non-selected field requestToSend in a template of union type @IsobusCMMessageTypes.TP_CM.");
+return *single_value.field_requestToSend;
+}
+
+ClearToSend_template& TP__CM_template::clearToSend()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != TP__CM::ALT_clearToSend) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_clearToSend = new ClearToSend_template(ANY_VALUE);
+else single_value.field_clearToSend = new ClearToSend_template;
+single_value.union_selection = TP__CM::ALT_clearToSend;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_clearToSend;
+}
+
+const ClearToSend_template& TP__CM_template::clearToSend() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field clearToSend in a non-specific template of union type @IsobusCMMessageTypes.TP_CM.");
+if (single_value.union_selection != TP__CM::ALT_clearToSend) TTCN_error("Accessing non-selected field clearToSend in a template of union type @IsobusCMMessageTypes.TP_CM.");
+return *single_value.field_clearToSend;
+}
+
+EndOfMessageAcknowledgement_template& TP__CM_template::endOfMessageAcknowledgement()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != TP__CM::ALT_endOfMessageAcknowledgement) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_endOfMessageAcknowledgement = new EndOfMessageAcknowledgement_template(ANY_VALUE);
+else single_value.field_endOfMessageAcknowledgement = new EndOfMessageAcknowledgement_template;
+single_value.union_selection = TP__CM::ALT_endOfMessageAcknowledgement;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_endOfMessageAcknowledgement;
+}
+
+const EndOfMessageAcknowledgement_template& TP__CM_template::endOfMessageAcknowledgement() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field endOfMessageAcknowledgement in a non-specific template of union type @IsobusCMMessageTypes.TP_CM.");
+if (single_value.union_selection != TP__CM::ALT_endOfMessageAcknowledgement) TTCN_error("Accessing non-selected field endOfMessageAcknowledgement in a template of union type @IsobusCMMessageTypes.TP_CM.");
+return *single_value.field_endOfMessageAcknowledgement;
+}
+
+BroadcastAnnounce_template& TP__CM_template::broadcastAnnounce()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != TP__CM::ALT_broadcastAnnounce) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_broadcastAnnounce = new BroadcastAnnounce_template(ANY_VALUE);
+else single_value.field_broadcastAnnounce = new BroadcastAnnounce_template;
+single_value.union_selection = TP__CM::ALT_broadcastAnnounce;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_broadcastAnnounce;
+}
+
+const BroadcastAnnounce_template& TP__CM_template::broadcastAnnounce() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field broadcastAnnounce in a non-specific template of union type @IsobusCMMessageTypes.TP_CM.");
+if (single_value.union_selection != TP__CM::ALT_broadcastAnnounce) TTCN_error("Accessing non-selected field broadcastAnnounce in a template of union type @IsobusCMMessageTypes.TP_CM.");
+return *single_value.field_broadcastAnnounce;
+}
+
+ConnectionAbort_template& TP__CM_template::connectionAbort()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != TP__CM::ALT_connectionAbort) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_connectionAbort = new ConnectionAbort_template(ANY_VALUE);
+else single_value.field_connectionAbort = new ConnectionAbort_template;
+single_value.union_selection = TP__CM::ALT_connectionAbort;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_connectionAbort;
+}
+
+const ConnectionAbort_template& TP__CM_template::connectionAbort() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field connectionAbort in a non-specific template of union type @IsobusCMMessageTypes.TP_CM.");
+if (single_value.union_selection != TP__CM::ALT_connectionAbort) TTCN_error("Accessing non-selected field connectionAbort in a template of union type @IsobusCMMessageTypes.TP_CM.");
+return *single_value.field_connectionAbort;
+}
+
+boolean TP__CM_template::ischosen(TP__CM::union_selection_type checked_selection) const
+{
+if (checked_selection == TP__CM::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @IsobusCMMessageTypes.TP_CM.");
+switch (template_selection) {
+case SPECIFIC_VALUE:
+if (single_value.union_selection == TP__CM::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @IsobusCMMessageTypes.TP_CM.");
+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 @IsobusCMMessageTypes.TP_CM 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 TP__CM_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case TP__CM::ALT_requestToSend:
+TTCN_Logger::log_event_str("{ requestToSend := ");
+single_value.field_requestToSend->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case TP__CM::ALT_clearToSend:
+TTCN_Logger::log_event_str("{ clearToSend := ");
+single_value.field_clearToSend->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case TP__CM::ALT_endOfMessageAcknowledgement:
+TTCN_Logger::log_event_str("{ endOfMessageAcknowledgement := ");
+single_value.field_endOfMessageAcknowledgement->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case TP__CM::ALT_broadcastAnnounce:
+TTCN_Logger::log_event_str("{ broadcastAnnounce := ");
+single_value.field_broadcastAnnounce->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case TP__CM::ALT_connectionAbort:
+TTCN_Logger::log_event_str("{ connectionAbort := ");
+single_value.field_connectionAbort->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 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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void TP__CM_template::log_match(const TP__CM& 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()) {
+switch (single_value.union_selection) {
+case TP__CM::ALT_requestToSend:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".requestToSend");
+single_value.field_requestToSend->log_match(match_value.requestToSend(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ requestToSend := ");
+single_value.field_requestToSend->log_match(match_value.requestToSend(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case TP__CM::ALT_clearToSend:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".clearToSend");
+single_value.field_clearToSend->log_match(match_value.clearToSend(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ clearToSend := ");
+single_value.field_clearToSend->log_match(match_value.clearToSend(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case TP__CM::ALT_endOfMessageAcknowledgement:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".endOfMessageAcknowledgement");
+single_value.field_endOfMessageAcknowledgement->log_match(match_value.endOfMessageAcknowledgement(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ endOfMessageAcknowledgement := ");
+single_value.field_endOfMessageAcknowledgement->log_match(match_value.endOfMessageAcknowledgement(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case TP__CM::ALT_broadcastAnnounce:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".broadcastAnnounce");
+single_value.field_broadcastAnnounce->log_match(match_value.broadcastAnnounce(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ broadcastAnnounce := ");
+single_value.field_broadcastAnnounce->log_match(match_value.broadcastAnnounce(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case TP__CM::ALT_connectionAbort:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".connectionAbort");
+single_value.field_connectionAbort->log_match(match_value.connectionAbort(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ connectionAbort := ");
+single_value.field_connectionAbort->log_match(match_value.connectionAbort(), 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 TP__CM_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 TP__CM::ALT_requestToSend:
+single_value.field_requestToSend->encode_text(text_buf);
+break;
+case TP__CM::ALT_clearToSend:
+single_value.field_clearToSend->encode_text(text_buf);
+break;
+case TP__CM::ALT_endOfMessageAcknowledgement:
+single_value.field_endOfMessageAcknowledgement->encode_text(text_buf);
+break;
+case TP__CM::ALT_broadcastAnnounce:
+single_value.field_broadcastAnnounce->encode_text(text_buf);
+break;
+case TP__CM::ALT_connectionAbort:
+single_value.field_connectionAbort->encode_text(text_buf);
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @IsobusCMMessageTypes.TP_CM.");
+}
+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 @IsobusCMMessageTypes.TP_CM.");
+}
+}
+
+void TP__CM_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+{
+single_value.union_selection = TP__CM::UNBOUND_VALUE;
+TP__CM::union_selection_type new_selection = (TP__CM::union_selection_type)text_buf.pull_int().get_val();
+switch (new_selection) {
+case TP__CM::ALT_requestToSend:
+single_value.field_requestToSend = new RequestToSend_template;
+single_value.field_requestToSend->decode_text(text_buf);
+break;
+case TP__CM::ALT_clearToSend:
+single_value.field_clearToSend = new ClearToSend_template;
+single_value.field_clearToSend->decode_text(text_buf);
+break;
+case TP__CM::ALT_endOfMessageAcknowledgement:
+single_value.field_endOfMessageAcknowledgement = new EndOfMessageAcknowledgement_template;
+single_value.field_endOfMessageAcknowledgement->decode_text(text_buf);
+break;
+case TP__CM::ALT_broadcastAnnounce:
+single_value.field_broadcastAnnounce = new BroadcastAnnounce_template;
+single_value.field_broadcastAnnounce->decode_text(text_buf);
+break;
+case TP__CM::ALT_connectionAbort:
+single_value.field_connectionAbort = new ConnectionAbort_template;
+single_value.field_connectionAbort->decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @IsobusCMMessageTypes.TP_CM.");
+}
+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 TP__CM_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 @IsobusCMMessageTypes.TP_CM.");
+}
+}
+
+boolean TP__CM_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean TP__CM_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 TP__CM_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 `@IsobusCMMessageTypes.TP_CM'");
+    }
+    if (strcmp("requestToSend", param_field) == 0) {
+      requestToSend().set_param(param);
+      return;
+    } else if (strcmp("clearToSend", param_field) == 0) {
+      clearToSend().set_param(param);
+      return;
+    } else if (strcmp("endOfMessageAcknowledgement", param_field) == 0) {
+      endOfMessageAcknowledgement().set_param(param);
+      return;
+    } else if (strcmp("broadcastAnnounce", param_field) == 0) {
+      broadcastAnnounce().set_param(param);
+      return;
+    } else if (strcmp("connectionAbort", param_field) == 0) {
+      connectionAbort().set_param(param);
+      return;
+    } else param.error("Field `%s' not found in union template type `@IsobusCMMessageTypes.TP_CM'", 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: {
+    TP__CM_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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", "@IsobusCMMessageTypes.TP_CM");
+    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, "requestToSend")) {
+      requestToSend().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "clearToSend")) {
+      clearToSend().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "endOfMessageAcknowledgement")) {
+      endOfMessageAcknowledgement().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "broadcastAnnounce")) {
+      broadcastAnnounce().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "connectionAbort")) {
+      connectionAbort().set_param(*mp_last);
+      break;
+    }
+    mp_last->error("Field %s does not exist in type @IsobusCMMessageTypes.TP_CM.", last_name);
+  } break;
+  default:
+    param.type_error("union template", "@IsobusCMMessageTypes.TP_CM");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void TP__CM_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 TP__CM::ALT_requestToSend:
+single_value.field_requestToSend->check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.TP_CM");
+return;
+case TP__CM::ALT_clearToSend:
+single_value.field_clearToSend->check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.TP_CM");
+return;
+case TP__CM::ALT_endOfMessageAcknowledgement:
+single_value.field_endOfMessageAcknowledgement->check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.TP_CM");
+return;
+case TP__CM::ALT_broadcastAnnounce:
+single_value.field_broadcastAnnounce->check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.TP_CM");
+return;
+case TP__CM::ALT_connectionAbort:
+single_value.field_connectionAbort->check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.TP_CM");
+return;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @IsobusCMMessageTypes.TP_CM.");
+}
+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 : "@IsobusCMMessageTypes.TP_CM");
+}
+
+ExtendedMessageRequestToSend::ExtendedMessageRequestToSend()
+{
+}
+
+ExtendedMessageRequestToSend::ExtendedMessageRequestToSend(const OCTETSTRING& par_ctrl,
+    const INTEGER& par_msgSizeInBytes,
+    const INTEGER& par_pgnOfExtendedPacketedMessage)
+  :   field_ctrl(par_ctrl),
+  field_msgSizeInBytes(par_msgSizeInBytes),
+  field_pgnOfExtendedPacketedMessage(par_pgnOfExtendedPacketedMessage)
+{
+}
+
+ExtendedMessageRequestToSend::ExtendedMessageRequestToSend(const ExtendedMessageRequestToSend& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusCMMessageTypes.ExtendedMessageRequestToSend.");
+if (other_value.ctrl().is_bound()) field_ctrl = other_value.ctrl();
+else field_ctrl.clean_up();
+if (other_value.msgSizeInBytes().is_bound()) field_msgSizeInBytes = other_value.msgSizeInBytes();
+else field_msgSizeInBytes.clean_up();
+if (other_value.pgnOfExtendedPacketedMessage().is_bound()) field_pgnOfExtendedPacketedMessage = other_value.pgnOfExtendedPacketedMessage();
+else field_pgnOfExtendedPacketedMessage.clean_up();
+}
+
+void ExtendedMessageRequestToSend::clean_up()
+{
+field_ctrl.clean_up();
+field_msgSizeInBytes.clean_up();
+field_pgnOfExtendedPacketedMessage.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ExtendedMessageRequestToSend::get_descriptor() const { return &ExtendedMessageRequestToSend_descr_; }
+ExtendedMessageRequestToSend& ExtendedMessageRequestToSend::operator=(const ExtendedMessageRequestToSend& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusCMMessageTypes.ExtendedMessageRequestToSend.");
+  if (other_value.ctrl().is_bound()) field_ctrl = other_value.ctrl();
+  else field_ctrl.clean_up();
+  if (other_value.msgSizeInBytes().is_bound()) field_msgSizeInBytes = other_value.msgSizeInBytes();
+  else field_msgSizeInBytes.clean_up();
+  if (other_value.pgnOfExtendedPacketedMessage().is_bound()) field_pgnOfExtendedPacketedMessage = other_value.pgnOfExtendedPacketedMessage();
+  else field_pgnOfExtendedPacketedMessage.clean_up();
+}
+return *this;
+}
+
+boolean ExtendedMessageRequestToSend::operator==(const ExtendedMessageRequestToSend& other_value) const
+{
+return field_ctrl==other_value.field_ctrl
+  && field_msgSizeInBytes==other_value.field_msgSizeInBytes
+  && field_pgnOfExtendedPacketedMessage==other_value.field_pgnOfExtendedPacketedMessage;
+}
+
+boolean ExtendedMessageRequestToSend::is_bound() const
+{
+return (field_ctrl.is_bound())
+  || (field_msgSizeInBytes.is_bound())
+  || (field_pgnOfExtendedPacketedMessage.is_bound());
+}
+boolean ExtendedMessageRequestToSend::is_value() const
+{
+return field_ctrl.is_value()
+  && field_msgSizeInBytes.is_value()
+  && field_pgnOfExtendedPacketedMessage.is_value();
+}
+void ExtendedMessageRequestToSend::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ ctrl := ");
+field_ctrl.log();
+TTCN_Logger::log_event_str(", msgSizeInBytes := ");
+field_msgSizeInBytes.log();
+TTCN_Logger::log_event_str(", pgnOfExtendedPacketedMessage := ");
+field_pgnOfExtendedPacketedMessage.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ExtendedMessageRequestToSend::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 @IsobusCMMessageTypes.ExtendedMessageRequestToSend 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) ctrl().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) msgSizeInBytes().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) pgnOfExtendedPacketedMessage().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(), "ctrl")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ctrl().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(), "msgSizeInBytes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgSizeInBytes().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(), "pgnOfExtendedPacketedMessage")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          pgnOfExtendedPacketedMessage().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 @IsobusCMMessageTypes.ExtendedMessageRequestToSend: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusCMMessageTypes.ExtendedMessageRequestToSend");
+  }
+}
+
+void ExtendedMessageRequestToSend::set_implicit_omit()
+{
+if (ctrl().is_bound()) ctrl().set_implicit_omit();
+if (msgSizeInBytes().is_bound()) msgSizeInBytes().set_implicit_omit();
+if (pgnOfExtendedPacketedMessage().is_bound()) pgnOfExtendedPacketedMessage().set_implicit_omit();
+}
+
+void ExtendedMessageRequestToSend::encode_text(Text_Buf& text_buf) const
+{
+field_ctrl.encode_text(text_buf);
+field_msgSizeInBytes.encode_text(text_buf);
+field_pgnOfExtendedPacketedMessage.encode_text(text_buf);
+}
+
+void ExtendedMessageRequestToSend::decode_text(Text_Buf& text_buf)
+{
+field_ctrl.decode_text(text_buf);
+field_msgSizeInBytes.decode_text(text_buf);
+field_pgnOfExtendedPacketedMessage.decode_text(text_buf);
+}
+
+void ExtendedMessageRequestToSend::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ExtendedMessageRequestToSend::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ExtendedMessageRequestToSend::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, ExtendedMessageRequestToSend_ctrl_descr_.raw->forceomit);
+  decoded_field_length = field_ctrl.RAW_decode(ExtendedMessageRequestToSend_ctrl_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, ETP__MSG__SIZE_descr_.raw->forceomit);
+  decoded_field_length = field_msgSizeInBytes.RAW_decode(ETP__MSG__SIZE_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, IsobusMessageTypes::PGN_descr_.raw->forceomit);
+  decoded_field_length = field_pgnOfExtendedPacketedMessage.RAW_decode(IsobusMessageTypes::PGN_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 ExtendedMessageRequestToSend::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, ExtendedMessageRequestToSend_ctrl_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ETP__MSG__SIZE_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, IsobusMessageTypes::PGN_descr_.raw);
+  encoded_length += field_ctrl.RAW_encode(ExtendedMessageRequestToSend_ctrl_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_msgSizeInBytes.RAW_encode(ETP__MSG__SIZE_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_pgnOfExtendedPacketedMessage.RAW_encode(IsobusMessageTypes::PGN_descr_, *myleaf.body.node.nodes[2]);
+  return myleaf.length = encoded_length;
+}
+
+struct ExtendedMessageRequestToSend_template::single_value_struct {
+OCTETSTRING_template field_ctrl;
+INTEGER_template field_msgSizeInBytes;
+INTEGER_template field_pgnOfExtendedPacketedMessage;
+};
+
+void ExtendedMessageRequestToSend_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_ctrl = ANY_VALUE;
+single_value->field_msgSizeInBytes = ANY_VALUE;
+single_value->field_pgnOfExtendedPacketedMessage = ANY_VALUE;
+}
+}
+}
+
+void ExtendedMessageRequestToSend_template::copy_value(const ExtendedMessageRequestToSend& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.ctrl().is_bound()) {
+  single_value->field_ctrl = other_value.ctrl();
+} else {
+  single_value->field_ctrl.clean_up();
+}
+if (other_value.msgSizeInBytes().is_bound()) {
+  single_value->field_msgSizeInBytes = other_value.msgSizeInBytes();
+} else {
+  single_value->field_msgSizeInBytes.clean_up();
+}
+if (other_value.pgnOfExtendedPacketedMessage().is_bound()) {
+  single_value->field_pgnOfExtendedPacketedMessage = other_value.pgnOfExtendedPacketedMessage();
+} else {
+  single_value->field_pgnOfExtendedPacketedMessage.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ExtendedMessageRequestToSend_template::copy_template(const ExtendedMessageRequestToSend_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.ctrl().get_selection()) {
+single_value->field_ctrl = other_value.ctrl();
+} else {
+single_value->field_ctrl.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.msgSizeInBytes().get_selection()) {
+single_value->field_msgSizeInBytes = other_value.msgSizeInBytes();
+} else {
+single_value->field_msgSizeInBytes.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.pgnOfExtendedPacketedMessage().get_selection()) {
+single_value->field_pgnOfExtendedPacketedMessage = other_value.pgnOfExtendedPacketedMessage();
+} else {
+single_value->field_pgnOfExtendedPacketedMessage.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ExtendedMessageRequestToSend_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusCMMessageTypes.ExtendedMessageRequestToSend.");
+break;
+}
+set_selection(other_value);
+}
+
+ExtendedMessageRequestToSend_template::ExtendedMessageRequestToSend_template()
+{
+}
+
+ExtendedMessageRequestToSend_template::ExtendedMessageRequestToSend_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ExtendedMessageRequestToSend_template::ExtendedMessageRequestToSend_template(const ExtendedMessageRequestToSend& other_value)
+{
+copy_value(other_value);
+}
+
+ExtendedMessageRequestToSend_template::ExtendedMessageRequestToSend_template(const OPTIONAL<ExtendedMessageRequestToSend>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExtendedMessageRequestToSend&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusCMMessageTypes.ExtendedMessageRequestToSend from an unbound optional field.");
+}
+}
+
+ExtendedMessageRequestToSend_template::ExtendedMessageRequestToSend_template(const ExtendedMessageRequestToSend_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ExtendedMessageRequestToSend_template::~ExtendedMessageRequestToSend_template()
+{
+clean_up();
+}
+
+ExtendedMessageRequestToSend_template& ExtendedMessageRequestToSend_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ExtendedMessageRequestToSend_template& ExtendedMessageRequestToSend_template::operator=(const ExtendedMessageRequestToSend& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ExtendedMessageRequestToSend_template& ExtendedMessageRequestToSend_template::operator=(const OPTIONAL<ExtendedMessageRequestToSend>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExtendedMessageRequestToSend&)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 @IsobusCMMessageTypes.ExtendedMessageRequestToSend.");
+}
+return *this;
+}
+
+ExtendedMessageRequestToSend_template& ExtendedMessageRequestToSend_template::operator=(const ExtendedMessageRequestToSend_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ExtendedMessageRequestToSend_template::match(const ExtendedMessageRequestToSend& 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.ctrl().is_bound()) return FALSE;
+if(!single_value->field_ctrl.match(other_value.ctrl(), legacy))return FALSE;
+if(!other_value.msgSizeInBytes().is_bound()) return FALSE;
+if(!single_value->field_msgSizeInBytes.match(other_value.msgSizeInBytes(), legacy))return FALSE;
+if(!other_value.pgnOfExtendedPacketedMessage().is_bound()) return FALSE;
+if(!single_value->field_pgnOfExtendedPacketedMessage.match(other_value.pgnOfExtendedPacketedMessage(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusCMMessageTypes.ExtendedMessageRequestToSend.");
+}
+return FALSE;
+}
+
+boolean ExtendedMessageRequestToSend_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_ctrl.is_bound()
+
+ ||single_value->field_msgSizeInBytes.is_bound()
+
+ ||single_value->field_pgnOfExtendedPacketedMessage.is_bound()
+;
+}
+
+boolean ExtendedMessageRequestToSend_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_ctrl.is_value()
+ &&single_value->field_msgSizeInBytes.is_value()
+ &&single_value->field_pgnOfExtendedPacketedMessage.is_value();
+}
+
+void ExtendedMessageRequestToSend_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ExtendedMessageRequestToSend ExtendedMessageRequestToSend_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 @IsobusCMMessageTypes.ExtendedMessageRequestToSend.");
+ExtendedMessageRequestToSend ret_val;
+if (single_value->field_ctrl.is_bound()) {
+ret_val.ctrl() = single_value->field_ctrl.valueof();
+}
+if (single_value->field_msgSizeInBytes.is_bound()) {
+ret_val.msgSizeInBytes() = single_value->field_msgSizeInBytes.valueof();
+}
+if (single_value->field_pgnOfExtendedPacketedMessage.is_bound()) {
+ret_val.pgnOfExtendedPacketedMessage() = single_value->field_pgnOfExtendedPacketedMessage.valueof();
+}
+return ret_val;
+}
+
+void ExtendedMessageRequestToSend_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusCMMessageTypes.ExtendedMessageRequestToSend.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ExtendedMessageRequestToSend_template[list_length];
+}
+
+ExtendedMessageRequestToSend_template& ExtendedMessageRequestToSend_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusCMMessageTypes.ExtendedMessageRequestToSend.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusCMMessageTypes.ExtendedMessageRequestToSend.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& ExtendedMessageRequestToSend_template::ctrl()
+{
+set_specific();
+return single_value->field_ctrl;
+}
+
+const OCTETSTRING_template& ExtendedMessageRequestToSend_template::ctrl() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field ctrl of a non-specific template of type @IsobusCMMessageTypes.ExtendedMessageRequestToSend.");
+return single_value->field_ctrl;
+}
+
+INTEGER_template& ExtendedMessageRequestToSend_template::msgSizeInBytes()
+{
+set_specific();
+return single_value->field_msgSizeInBytes;
+}
+
+const INTEGER_template& ExtendedMessageRequestToSend_template::msgSizeInBytes() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field msgSizeInBytes of a non-specific template of type @IsobusCMMessageTypes.ExtendedMessageRequestToSend.");
+return single_value->field_msgSizeInBytes;
+}
+
+INTEGER_template& ExtendedMessageRequestToSend_template::pgnOfExtendedPacketedMessage()
+{
+set_specific();
+return single_value->field_pgnOfExtendedPacketedMessage;
+}
+
+const INTEGER_template& ExtendedMessageRequestToSend_template::pgnOfExtendedPacketedMessage() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field pgnOfExtendedPacketedMessage of a non-specific template of type @IsobusCMMessageTypes.ExtendedMessageRequestToSend.");
+return single_value->field_pgnOfExtendedPacketedMessage;
+}
+
+int ExtendedMessageRequestToSend_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.ExtendedMessageRequestToSend 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 @IsobusCMMessageTypes.ExtendedMessageRequestToSend 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 @IsobusCMMessageTypes.ExtendedMessageRequestToSend containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.ExtendedMessageRequestToSend containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.ExtendedMessageRequestToSend containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.ExtendedMessageRequestToSend containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusCMMessageTypes.ExtendedMessageRequestToSend.");
+  }
+  return 0;
+}
+
+void ExtendedMessageRequestToSend_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ ctrl := ");
+single_value->field_ctrl.log();
+TTCN_Logger::log_event_str(", msgSizeInBytes := ");
+single_value->field_msgSizeInBytes.log();
+TTCN_Logger::log_event_str(", pgnOfExtendedPacketedMessage := ");
+single_value->field_pgnOfExtendedPacketedMessage.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ExtendedMessageRequestToSend_template::log_match(const ExtendedMessageRequestToSend& 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_ctrl.match(match_value.ctrl(), legacy)){
+TTCN_Logger::log_logmatch_info(".ctrl");
+single_value->field_ctrl.log_match(match_value.ctrl(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_msgSizeInBytes.match(match_value.msgSizeInBytes(), legacy)){
+TTCN_Logger::log_logmatch_info(".msgSizeInBytes");
+single_value->field_msgSizeInBytes.log_match(match_value.msgSizeInBytes(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_pgnOfExtendedPacketedMessage.match(match_value.pgnOfExtendedPacketedMessage(), legacy)){
+TTCN_Logger::log_logmatch_info(".pgnOfExtendedPacketedMessage");
+single_value->field_pgnOfExtendedPacketedMessage.log_match(match_value.pgnOfExtendedPacketedMessage(), 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("{ ctrl := ");
+single_value->field_ctrl.log_match(match_value.ctrl(), legacy);
+TTCN_Logger::log_event_str(", msgSizeInBytes := ");
+single_value->field_msgSizeInBytes.log_match(match_value.msgSizeInBytes(), legacy);
+TTCN_Logger::log_event_str(", pgnOfExtendedPacketedMessage := ");
+single_value->field_pgnOfExtendedPacketedMessage.log_match(match_value.pgnOfExtendedPacketedMessage(), 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 ExtendedMessageRequestToSend_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_ctrl.encode_text(text_buf);
+single_value->field_msgSizeInBytes.encode_text(text_buf);
+single_value->field_pgnOfExtendedPacketedMessage.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 @IsobusCMMessageTypes.ExtendedMessageRequestToSend.");
+}
+}
+
+void ExtendedMessageRequestToSend_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_ctrl.decode_text(text_buf);
+single_value->field_msgSizeInBytes.decode_text(text_buf);
+single_value->field_pgnOfExtendedPacketedMessage.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 ExtendedMessageRequestToSend_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 @IsobusCMMessageTypes.ExtendedMessageRequestToSend.");
+}
+}
+
+void ExtendedMessageRequestToSend_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: {
+    ExtendedMessageRequestToSend_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusCMMessageTypes.ExtendedMessageRequestToSend 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) ctrl().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) msgSizeInBytes().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) pgnOfExtendedPacketedMessage().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(), "ctrl")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ctrl().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(), "msgSizeInBytes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgSizeInBytes().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(), "pgnOfExtendedPacketedMessage")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          pgnOfExtendedPacketedMessage().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 @IsobusCMMessageTypes.ExtendedMessageRequestToSend: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusCMMessageTypes.ExtendedMessageRequestToSend");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ExtendedMessageRequestToSend_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_ctrl.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.ExtendedMessageRequestToSend");
+single_value->field_msgSizeInBytes.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.ExtendedMessageRequestToSend");
+single_value->field_pgnOfExtendedPacketedMessage.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.ExtendedMessageRequestToSend");
+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 : "@IsobusCMMessageTypes.ExtendedMessageRequestToSend");
+}
+
+boolean ExtendedMessageRequestToSend_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ExtendedMessageRequestToSend_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ExtendedMessageClearToSend::ExtendedMessageClearToSend()
+{
+}
+
+ExtendedMessageClearToSend::ExtendedMessageClearToSend(const OCTETSTRING& par_ctrl,
+    const INTEGER& par_NumberOfPacketsToSend,
+    const INTEGER& par_nextPacketNumberToSend,
+    const INTEGER& par_pgnOfExtendedPacketedMessage)
+  :   field_ctrl(par_ctrl),
+  field_NumberOfPacketsToSend(par_NumberOfPacketsToSend),
+  field_nextPacketNumberToSend(par_nextPacketNumberToSend),
+  field_pgnOfExtendedPacketedMessage(par_pgnOfExtendedPacketedMessage)
+{
+}
+
+ExtendedMessageClearToSend::ExtendedMessageClearToSend(const ExtendedMessageClearToSend& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusCMMessageTypes.ExtendedMessageClearToSend.");
+if (other_value.ctrl().is_bound()) field_ctrl = other_value.ctrl();
+else field_ctrl.clean_up();
+if (other_value.NumberOfPacketsToSend().is_bound()) field_NumberOfPacketsToSend = other_value.NumberOfPacketsToSend();
+else field_NumberOfPacketsToSend.clean_up();
+if (other_value.nextPacketNumberToSend().is_bound()) field_nextPacketNumberToSend = other_value.nextPacketNumberToSend();
+else field_nextPacketNumberToSend.clean_up();
+if (other_value.pgnOfExtendedPacketedMessage().is_bound()) field_pgnOfExtendedPacketedMessage = other_value.pgnOfExtendedPacketedMessage();
+else field_pgnOfExtendedPacketedMessage.clean_up();
+}
+
+void ExtendedMessageClearToSend::clean_up()
+{
+field_ctrl.clean_up();
+field_NumberOfPacketsToSend.clean_up();
+field_nextPacketNumberToSend.clean_up();
+field_pgnOfExtendedPacketedMessage.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ExtendedMessageClearToSend::get_descriptor() const { return &ExtendedMessageClearToSend_descr_; }
+ExtendedMessageClearToSend& ExtendedMessageClearToSend::operator=(const ExtendedMessageClearToSend& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusCMMessageTypes.ExtendedMessageClearToSend.");
+  if (other_value.ctrl().is_bound()) field_ctrl = other_value.ctrl();
+  else field_ctrl.clean_up();
+  if (other_value.NumberOfPacketsToSend().is_bound()) field_NumberOfPacketsToSend = other_value.NumberOfPacketsToSend();
+  else field_NumberOfPacketsToSend.clean_up();
+  if (other_value.nextPacketNumberToSend().is_bound()) field_nextPacketNumberToSend = other_value.nextPacketNumberToSend();
+  else field_nextPacketNumberToSend.clean_up();
+  if (other_value.pgnOfExtendedPacketedMessage().is_bound()) field_pgnOfExtendedPacketedMessage = other_value.pgnOfExtendedPacketedMessage();
+  else field_pgnOfExtendedPacketedMessage.clean_up();
+}
+return *this;
+}
+
+boolean ExtendedMessageClearToSend::operator==(const ExtendedMessageClearToSend& other_value) const
+{
+return field_ctrl==other_value.field_ctrl
+  && field_NumberOfPacketsToSend==other_value.field_NumberOfPacketsToSend
+  && field_nextPacketNumberToSend==other_value.field_nextPacketNumberToSend
+  && field_pgnOfExtendedPacketedMessage==other_value.field_pgnOfExtendedPacketedMessage;
+}
+
+boolean ExtendedMessageClearToSend::is_bound() const
+{
+return (field_ctrl.is_bound())
+  || (field_NumberOfPacketsToSend.is_bound())
+  || (field_nextPacketNumberToSend.is_bound())
+  || (field_pgnOfExtendedPacketedMessage.is_bound());
+}
+boolean ExtendedMessageClearToSend::is_value() const
+{
+return field_ctrl.is_value()
+  && field_NumberOfPacketsToSend.is_value()
+  && field_nextPacketNumberToSend.is_value()
+  && field_pgnOfExtendedPacketedMessage.is_value();
+}
+void ExtendedMessageClearToSend::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ ctrl := ");
+field_ctrl.log();
+TTCN_Logger::log_event_str(", NumberOfPacketsToSend := ");
+field_NumberOfPacketsToSend.log();
+TTCN_Logger::log_event_str(", nextPacketNumberToSend := ");
+field_nextPacketNumberToSend.log();
+TTCN_Logger::log_event_str(", pgnOfExtendedPacketedMessage := ");
+field_pgnOfExtendedPacketedMessage.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ExtendedMessageClearToSend::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 @IsobusCMMessageTypes.ExtendedMessageClearToSend 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) ctrl().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) NumberOfPacketsToSend().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) nextPacketNumberToSend().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) pgnOfExtendedPacketedMessage().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(), "ctrl")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ctrl().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(), "NumberOfPacketsToSend")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          NumberOfPacketsToSend().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(), "nextPacketNumberToSend")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          nextPacketNumberToSend().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(), "pgnOfExtendedPacketedMessage")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          pgnOfExtendedPacketedMessage().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 @IsobusCMMessageTypes.ExtendedMessageClearToSend: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusCMMessageTypes.ExtendedMessageClearToSend");
+  }
+}
+
+void ExtendedMessageClearToSend::set_implicit_omit()
+{
+if (ctrl().is_bound()) ctrl().set_implicit_omit();
+if (NumberOfPacketsToSend().is_bound()) NumberOfPacketsToSend().set_implicit_omit();
+if (nextPacketNumberToSend().is_bound()) nextPacketNumberToSend().set_implicit_omit();
+if (pgnOfExtendedPacketedMessage().is_bound()) pgnOfExtendedPacketedMessage().set_implicit_omit();
+}
+
+void ExtendedMessageClearToSend::encode_text(Text_Buf& text_buf) const
+{
+field_ctrl.encode_text(text_buf);
+field_NumberOfPacketsToSend.encode_text(text_buf);
+field_nextPacketNumberToSend.encode_text(text_buf);
+field_pgnOfExtendedPacketedMessage.encode_text(text_buf);
+}
+
+void ExtendedMessageClearToSend::decode_text(Text_Buf& text_buf)
+{
+field_ctrl.decode_text(text_buf);
+field_NumberOfPacketsToSend.decode_text(text_buf);
+field_nextPacketNumberToSend.decode_text(text_buf);
+field_pgnOfExtendedPacketedMessage.decode_text(text_buf);
+}
+
+void ExtendedMessageClearToSend::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ExtendedMessageClearToSend::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ExtendedMessageClearToSend::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, ExtendedMessageClearToSend_ctrl_descr_.raw->forceomit);
+  decoded_field_length = field_ctrl.RAW_decode(ExtendedMessageClearToSend_ctrl_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::INT1_descr_.raw->forceomit);
+  decoded_field_length = field_NumberOfPacketsToSend.RAW_decode(General__Types::INT1_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, ETP__NextPacketNumberToSend_descr_.raw->forceomit);
+  decoded_field_length = field_nextPacketNumberToSend.RAW_decode(ETP__NextPacketNumberToSend_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, IsobusMessageTypes::PGN_descr_.raw->forceomit);
+  decoded_field_length = field_pgnOfExtendedPacketedMessage.RAW_decode(IsobusMessageTypes::PGN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ExtendedMessageClearToSend::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, ExtendedMessageClearToSend_ctrl_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, General__Types::INT1_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ETP__NextPacketNumberToSend_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, IsobusMessageTypes::PGN_descr_.raw);
+  encoded_length += field_ctrl.RAW_encode(ExtendedMessageClearToSend_ctrl_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_NumberOfPacketsToSend.RAW_encode(General__Types::INT1_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_nextPacketNumberToSend.RAW_encode(ETP__NextPacketNumberToSend_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_pgnOfExtendedPacketedMessage.RAW_encode(IsobusMessageTypes::PGN_descr_, *myleaf.body.node.nodes[3]);
+  return myleaf.length = encoded_length;
+}
+
+struct ExtendedMessageClearToSend_template::single_value_struct {
+OCTETSTRING_template field_ctrl;
+INTEGER_template field_NumberOfPacketsToSend;
+INTEGER_template field_nextPacketNumberToSend;
+INTEGER_template field_pgnOfExtendedPacketedMessage;
+};
+
+void ExtendedMessageClearToSend_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_ctrl = ANY_VALUE;
+single_value->field_NumberOfPacketsToSend = ANY_VALUE;
+single_value->field_nextPacketNumberToSend = ANY_VALUE;
+single_value->field_pgnOfExtendedPacketedMessage = ANY_VALUE;
+}
+}
+}
+
+void ExtendedMessageClearToSend_template::copy_value(const ExtendedMessageClearToSend& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.ctrl().is_bound()) {
+  single_value->field_ctrl = other_value.ctrl();
+} else {
+  single_value->field_ctrl.clean_up();
+}
+if (other_value.NumberOfPacketsToSend().is_bound()) {
+  single_value->field_NumberOfPacketsToSend = other_value.NumberOfPacketsToSend();
+} else {
+  single_value->field_NumberOfPacketsToSend.clean_up();
+}
+if (other_value.nextPacketNumberToSend().is_bound()) {
+  single_value->field_nextPacketNumberToSend = other_value.nextPacketNumberToSend();
+} else {
+  single_value->field_nextPacketNumberToSend.clean_up();
+}
+if (other_value.pgnOfExtendedPacketedMessage().is_bound()) {
+  single_value->field_pgnOfExtendedPacketedMessage = other_value.pgnOfExtendedPacketedMessage();
+} else {
+  single_value->field_pgnOfExtendedPacketedMessage.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ExtendedMessageClearToSend_template::copy_template(const ExtendedMessageClearToSend_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.ctrl().get_selection()) {
+single_value->field_ctrl = other_value.ctrl();
+} else {
+single_value->field_ctrl.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.NumberOfPacketsToSend().get_selection()) {
+single_value->field_NumberOfPacketsToSend = other_value.NumberOfPacketsToSend();
+} else {
+single_value->field_NumberOfPacketsToSend.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.nextPacketNumberToSend().get_selection()) {
+single_value->field_nextPacketNumberToSend = other_value.nextPacketNumberToSend();
+} else {
+single_value->field_nextPacketNumberToSend.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.pgnOfExtendedPacketedMessage().get_selection()) {
+single_value->field_pgnOfExtendedPacketedMessage = other_value.pgnOfExtendedPacketedMessage();
+} else {
+single_value->field_pgnOfExtendedPacketedMessage.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ExtendedMessageClearToSend_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusCMMessageTypes.ExtendedMessageClearToSend.");
+break;
+}
+set_selection(other_value);
+}
+
+ExtendedMessageClearToSend_template::ExtendedMessageClearToSend_template()
+{
+}
+
+ExtendedMessageClearToSend_template::ExtendedMessageClearToSend_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ExtendedMessageClearToSend_template::ExtendedMessageClearToSend_template(const ExtendedMessageClearToSend& other_value)
+{
+copy_value(other_value);
+}
+
+ExtendedMessageClearToSend_template::ExtendedMessageClearToSend_template(const OPTIONAL<ExtendedMessageClearToSend>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExtendedMessageClearToSend&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusCMMessageTypes.ExtendedMessageClearToSend from an unbound optional field.");
+}
+}
+
+ExtendedMessageClearToSend_template::ExtendedMessageClearToSend_template(const ExtendedMessageClearToSend_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ExtendedMessageClearToSend_template::~ExtendedMessageClearToSend_template()
+{
+clean_up();
+}
+
+ExtendedMessageClearToSend_template& ExtendedMessageClearToSend_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ExtendedMessageClearToSend_template& ExtendedMessageClearToSend_template::operator=(const ExtendedMessageClearToSend& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ExtendedMessageClearToSend_template& ExtendedMessageClearToSend_template::operator=(const OPTIONAL<ExtendedMessageClearToSend>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExtendedMessageClearToSend&)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 @IsobusCMMessageTypes.ExtendedMessageClearToSend.");
+}
+return *this;
+}
+
+ExtendedMessageClearToSend_template& ExtendedMessageClearToSend_template::operator=(const ExtendedMessageClearToSend_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ExtendedMessageClearToSend_template::match(const ExtendedMessageClearToSend& 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.ctrl().is_bound()) return FALSE;
+if(!single_value->field_ctrl.match(other_value.ctrl(), legacy))return FALSE;
+if(!other_value.NumberOfPacketsToSend().is_bound()) return FALSE;
+if(!single_value->field_NumberOfPacketsToSend.match(other_value.NumberOfPacketsToSend(), legacy))return FALSE;
+if(!other_value.nextPacketNumberToSend().is_bound()) return FALSE;
+if(!single_value->field_nextPacketNumberToSend.match(other_value.nextPacketNumberToSend(), legacy))return FALSE;
+if(!other_value.pgnOfExtendedPacketedMessage().is_bound()) return FALSE;
+if(!single_value->field_pgnOfExtendedPacketedMessage.match(other_value.pgnOfExtendedPacketedMessage(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusCMMessageTypes.ExtendedMessageClearToSend.");
+}
+return FALSE;
+}
+
+boolean ExtendedMessageClearToSend_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_ctrl.is_bound()
+
+ ||single_value->field_NumberOfPacketsToSend.is_bound()
+
+ ||single_value->field_nextPacketNumberToSend.is_bound()
+
+ ||single_value->field_pgnOfExtendedPacketedMessage.is_bound()
+;
+}
+
+boolean ExtendedMessageClearToSend_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_ctrl.is_value()
+ &&single_value->field_NumberOfPacketsToSend.is_value()
+ &&single_value->field_nextPacketNumberToSend.is_value()
+ &&single_value->field_pgnOfExtendedPacketedMessage.is_value();
+}
+
+void ExtendedMessageClearToSend_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ExtendedMessageClearToSend ExtendedMessageClearToSend_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 @IsobusCMMessageTypes.ExtendedMessageClearToSend.");
+ExtendedMessageClearToSend ret_val;
+if (single_value->field_ctrl.is_bound()) {
+ret_val.ctrl() = single_value->field_ctrl.valueof();
+}
+if (single_value->field_NumberOfPacketsToSend.is_bound()) {
+ret_val.NumberOfPacketsToSend() = single_value->field_NumberOfPacketsToSend.valueof();
+}
+if (single_value->field_nextPacketNumberToSend.is_bound()) {
+ret_val.nextPacketNumberToSend() = single_value->field_nextPacketNumberToSend.valueof();
+}
+if (single_value->field_pgnOfExtendedPacketedMessage.is_bound()) {
+ret_val.pgnOfExtendedPacketedMessage() = single_value->field_pgnOfExtendedPacketedMessage.valueof();
+}
+return ret_val;
+}
+
+void ExtendedMessageClearToSend_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusCMMessageTypes.ExtendedMessageClearToSend.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ExtendedMessageClearToSend_template[list_length];
+}
+
+ExtendedMessageClearToSend_template& ExtendedMessageClearToSend_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusCMMessageTypes.ExtendedMessageClearToSend.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusCMMessageTypes.ExtendedMessageClearToSend.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& ExtendedMessageClearToSend_template::ctrl()
+{
+set_specific();
+return single_value->field_ctrl;
+}
+
+const OCTETSTRING_template& ExtendedMessageClearToSend_template::ctrl() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field ctrl of a non-specific template of type @IsobusCMMessageTypes.ExtendedMessageClearToSend.");
+return single_value->field_ctrl;
+}
+
+INTEGER_template& ExtendedMessageClearToSend_template::NumberOfPacketsToSend()
+{
+set_specific();
+return single_value->field_NumberOfPacketsToSend;
+}
+
+const INTEGER_template& ExtendedMessageClearToSend_template::NumberOfPacketsToSend() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field NumberOfPacketsToSend of a non-specific template of type @IsobusCMMessageTypes.ExtendedMessageClearToSend.");
+return single_value->field_NumberOfPacketsToSend;
+}
+
+INTEGER_template& ExtendedMessageClearToSend_template::nextPacketNumberToSend()
+{
+set_specific();
+return single_value->field_nextPacketNumberToSend;
+}
+
+const INTEGER_template& ExtendedMessageClearToSend_template::nextPacketNumberToSend() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field nextPacketNumberToSend of a non-specific template of type @IsobusCMMessageTypes.ExtendedMessageClearToSend.");
+return single_value->field_nextPacketNumberToSend;
+}
+
+INTEGER_template& ExtendedMessageClearToSend_template::pgnOfExtendedPacketedMessage()
+{
+set_specific();
+return single_value->field_pgnOfExtendedPacketedMessage;
+}
+
+const INTEGER_template& ExtendedMessageClearToSend_template::pgnOfExtendedPacketedMessage() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field pgnOfExtendedPacketedMessage of a non-specific template of type @IsobusCMMessageTypes.ExtendedMessageClearToSend.");
+return single_value->field_pgnOfExtendedPacketedMessage;
+}
+
+int ExtendedMessageClearToSend_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.ExtendedMessageClearToSend 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 @IsobusCMMessageTypes.ExtendedMessageClearToSend 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 @IsobusCMMessageTypes.ExtendedMessageClearToSend containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.ExtendedMessageClearToSend containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.ExtendedMessageClearToSend containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.ExtendedMessageClearToSend containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusCMMessageTypes.ExtendedMessageClearToSend.");
+  }
+  return 0;
+}
+
+void ExtendedMessageClearToSend_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ ctrl := ");
+single_value->field_ctrl.log();
+TTCN_Logger::log_event_str(", NumberOfPacketsToSend := ");
+single_value->field_NumberOfPacketsToSend.log();
+TTCN_Logger::log_event_str(", nextPacketNumberToSend := ");
+single_value->field_nextPacketNumberToSend.log();
+TTCN_Logger::log_event_str(", pgnOfExtendedPacketedMessage := ");
+single_value->field_pgnOfExtendedPacketedMessage.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ExtendedMessageClearToSend_template::log_match(const ExtendedMessageClearToSend& 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_ctrl.match(match_value.ctrl(), legacy)){
+TTCN_Logger::log_logmatch_info(".ctrl");
+single_value->field_ctrl.log_match(match_value.ctrl(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_NumberOfPacketsToSend.match(match_value.NumberOfPacketsToSend(), legacy)){
+TTCN_Logger::log_logmatch_info(".NumberOfPacketsToSend");
+single_value->field_NumberOfPacketsToSend.log_match(match_value.NumberOfPacketsToSend(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_nextPacketNumberToSend.match(match_value.nextPacketNumberToSend(), legacy)){
+TTCN_Logger::log_logmatch_info(".nextPacketNumberToSend");
+single_value->field_nextPacketNumberToSend.log_match(match_value.nextPacketNumberToSend(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_pgnOfExtendedPacketedMessage.match(match_value.pgnOfExtendedPacketedMessage(), legacy)){
+TTCN_Logger::log_logmatch_info(".pgnOfExtendedPacketedMessage");
+single_value->field_pgnOfExtendedPacketedMessage.log_match(match_value.pgnOfExtendedPacketedMessage(), 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("{ ctrl := ");
+single_value->field_ctrl.log_match(match_value.ctrl(), legacy);
+TTCN_Logger::log_event_str(", NumberOfPacketsToSend := ");
+single_value->field_NumberOfPacketsToSend.log_match(match_value.NumberOfPacketsToSend(), legacy);
+TTCN_Logger::log_event_str(", nextPacketNumberToSend := ");
+single_value->field_nextPacketNumberToSend.log_match(match_value.nextPacketNumberToSend(), legacy);
+TTCN_Logger::log_event_str(", pgnOfExtendedPacketedMessage := ");
+single_value->field_pgnOfExtendedPacketedMessage.log_match(match_value.pgnOfExtendedPacketedMessage(), 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 ExtendedMessageClearToSend_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_ctrl.encode_text(text_buf);
+single_value->field_NumberOfPacketsToSend.encode_text(text_buf);
+single_value->field_nextPacketNumberToSend.encode_text(text_buf);
+single_value->field_pgnOfExtendedPacketedMessage.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 @IsobusCMMessageTypes.ExtendedMessageClearToSend.");
+}
+}
+
+void ExtendedMessageClearToSend_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_ctrl.decode_text(text_buf);
+single_value->field_NumberOfPacketsToSend.decode_text(text_buf);
+single_value->field_nextPacketNumberToSend.decode_text(text_buf);
+single_value->field_pgnOfExtendedPacketedMessage.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 ExtendedMessageClearToSend_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 @IsobusCMMessageTypes.ExtendedMessageClearToSend.");
+}
+}
+
+void ExtendedMessageClearToSend_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: {
+    ExtendedMessageClearToSend_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusCMMessageTypes.ExtendedMessageClearToSend 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) ctrl().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) NumberOfPacketsToSend().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) nextPacketNumberToSend().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) pgnOfExtendedPacketedMessage().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(), "ctrl")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ctrl().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(), "NumberOfPacketsToSend")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          NumberOfPacketsToSend().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(), "nextPacketNumberToSend")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          nextPacketNumberToSend().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(), "pgnOfExtendedPacketedMessage")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          pgnOfExtendedPacketedMessage().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 @IsobusCMMessageTypes.ExtendedMessageClearToSend: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusCMMessageTypes.ExtendedMessageClearToSend");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ExtendedMessageClearToSend_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_ctrl.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.ExtendedMessageClearToSend");
+single_value->field_NumberOfPacketsToSend.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.ExtendedMessageClearToSend");
+single_value->field_nextPacketNumberToSend.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.ExtendedMessageClearToSend");
+single_value->field_pgnOfExtendedPacketedMessage.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.ExtendedMessageClearToSend");
+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 : "@IsobusCMMessageTypes.ExtendedMessageClearToSend");
+}
+
+boolean ExtendedMessageClearToSend_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ExtendedMessageClearToSend_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ExtendedMessageDataPacketOffset::ExtendedMessageDataPacketOffset()
+{
+}
+
+ExtendedMessageDataPacketOffset::ExtendedMessageDataPacketOffset(const OCTETSTRING& par_ctrl,
+    const INTEGER& par_numberOfPacketsToWhichToApplyTheOffset,
+    const INTEGER& par_totalNumberOfPackets,
+    const INTEGER& par_dataPacketOffset,
+    const INTEGER& par_pgnOfExtendedPacketedMessage)
+  :   field_ctrl(par_ctrl),
+  field_numberOfPacketsToWhichToApplyTheOffset(par_numberOfPacketsToWhichToApplyTheOffset),
+  field_totalNumberOfPackets(par_totalNumberOfPackets),
+  field_dataPacketOffset(par_dataPacketOffset),
+  field_pgnOfExtendedPacketedMessage(par_pgnOfExtendedPacketedMessage)
+{
+}
+
+ExtendedMessageDataPacketOffset::ExtendedMessageDataPacketOffset(const ExtendedMessageDataPacketOffset& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusCMMessageTypes.ExtendedMessageDataPacketOffset.");
+if (other_value.ctrl().is_bound()) field_ctrl = other_value.ctrl();
+else field_ctrl.clean_up();
+if (other_value.numberOfPacketsToWhichToApplyTheOffset().is_bound()) field_numberOfPacketsToWhichToApplyTheOffset = other_value.numberOfPacketsToWhichToApplyTheOffset();
+else field_numberOfPacketsToWhichToApplyTheOffset.clean_up();
+if (other_value.totalNumberOfPackets().is_bound()) field_totalNumberOfPackets = other_value.totalNumberOfPackets();
+else field_totalNumberOfPackets.clean_up();
+if (other_value.dataPacketOffset().is_bound()) field_dataPacketOffset = other_value.dataPacketOffset();
+else field_dataPacketOffset.clean_up();
+if (other_value.pgnOfExtendedPacketedMessage().is_bound()) field_pgnOfExtendedPacketedMessage = other_value.pgnOfExtendedPacketedMessage();
+else field_pgnOfExtendedPacketedMessage.clean_up();
+}
+
+void ExtendedMessageDataPacketOffset::clean_up()
+{
+field_ctrl.clean_up();
+field_numberOfPacketsToWhichToApplyTheOffset.clean_up();
+field_totalNumberOfPackets.clean_up();
+field_dataPacketOffset.clean_up();
+field_pgnOfExtendedPacketedMessage.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ExtendedMessageDataPacketOffset::get_descriptor() const { return &ExtendedMessageDataPacketOffset_descr_; }
+ExtendedMessageDataPacketOffset& ExtendedMessageDataPacketOffset::operator=(const ExtendedMessageDataPacketOffset& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusCMMessageTypes.ExtendedMessageDataPacketOffset.");
+  if (other_value.ctrl().is_bound()) field_ctrl = other_value.ctrl();
+  else field_ctrl.clean_up();
+  if (other_value.numberOfPacketsToWhichToApplyTheOffset().is_bound()) field_numberOfPacketsToWhichToApplyTheOffset = other_value.numberOfPacketsToWhichToApplyTheOffset();
+  else field_numberOfPacketsToWhichToApplyTheOffset.clean_up();
+  if (other_value.totalNumberOfPackets().is_bound()) field_totalNumberOfPackets = other_value.totalNumberOfPackets();
+  else field_totalNumberOfPackets.clean_up();
+  if (other_value.dataPacketOffset().is_bound()) field_dataPacketOffset = other_value.dataPacketOffset();
+  else field_dataPacketOffset.clean_up();
+  if (other_value.pgnOfExtendedPacketedMessage().is_bound()) field_pgnOfExtendedPacketedMessage = other_value.pgnOfExtendedPacketedMessage();
+  else field_pgnOfExtendedPacketedMessage.clean_up();
+}
+return *this;
+}
+
+boolean ExtendedMessageDataPacketOffset::operator==(const ExtendedMessageDataPacketOffset& other_value) const
+{
+return field_ctrl==other_value.field_ctrl
+  && field_numberOfPacketsToWhichToApplyTheOffset==other_value.field_numberOfPacketsToWhichToApplyTheOffset
+  && field_totalNumberOfPackets==other_value.field_totalNumberOfPackets
+  && field_dataPacketOffset==other_value.field_dataPacketOffset
+  && field_pgnOfExtendedPacketedMessage==other_value.field_pgnOfExtendedPacketedMessage;
+}
+
+boolean ExtendedMessageDataPacketOffset::is_bound() const
+{
+return (field_ctrl.is_bound())
+  || (field_numberOfPacketsToWhichToApplyTheOffset.is_bound())
+  || (field_totalNumberOfPackets.is_bound())
+  || (field_dataPacketOffset.is_bound())
+  || (field_pgnOfExtendedPacketedMessage.is_bound());
+}
+boolean ExtendedMessageDataPacketOffset::is_value() const
+{
+return field_ctrl.is_value()
+  && field_numberOfPacketsToWhichToApplyTheOffset.is_value()
+  && field_totalNumberOfPackets.is_value()
+  && field_dataPacketOffset.is_value()
+  && field_pgnOfExtendedPacketedMessage.is_value();
+}
+void ExtendedMessageDataPacketOffset::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ ctrl := ");
+field_ctrl.log();
+TTCN_Logger::log_event_str(", numberOfPacketsToWhichToApplyTheOffset := ");
+field_numberOfPacketsToWhichToApplyTheOffset.log();
+TTCN_Logger::log_event_str(", totalNumberOfPackets := ");
+field_totalNumberOfPackets.log();
+TTCN_Logger::log_event_str(", dataPacketOffset := ");
+field_dataPacketOffset.log();
+TTCN_Logger::log_event_str(", pgnOfExtendedPacketedMessage := ");
+field_pgnOfExtendedPacketedMessage.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ExtendedMessageDataPacketOffset::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 @IsobusCMMessageTypes.ExtendedMessageDataPacketOffset 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) ctrl().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) numberOfPacketsToWhichToApplyTheOffset().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) totalNumberOfPackets().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) dataPacketOffset().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) pgnOfExtendedPacketedMessage().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(), "ctrl")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ctrl().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(), "numberOfPacketsToWhichToApplyTheOffset")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          numberOfPacketsToWhichToApplyTheOffset().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(), "totalNumberOfPackets")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          totalNumberOfPackets().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(), "dataPacketOffset")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          dataPacketOffset().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(), "pgnOfExtendedPacketedMessage")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          pgnOfExtendedPacketedMessage().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 @IsobusCMMessageTypes.ExtendedMessageDataPacketOffset: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusCMMessageTypes.ExtendedMessageDataPacketOffset");
+  }
+}
+
+void ExtendedMessageDataPacketOffset::set_implicit_omit()
+{
+if (ctrl().is_bound()) ctrl().set_implicit_omit();
+if (numberOfPacketsToWhichToApplyTheOffset().is_bound()) numberOfPacketsToWhichToApplyTheOffset().set_implicit_omit();
+if (totalNumberOfPackets().is_bound()) totalNumberOfPackets().set_implicit_omit();
+if (dataPacketOffset().is_bound()) dataPacketOffset().set_implicit_omit();
+if (pgnOfExtendedPacketedMessage().is_bound()) pgnOfExtendedPacketedMessage().set_implicit_omit();
+}
+
+void ExtendedMessageDataPacketOffset::encode_text(Text_Buf& text_buf) const
+{
+field_ctrl.encode_text(text_buf);
+field_numberOfPacketsToWhichToApplyTheOffset.encode_text(text_buf);
+field_totalNumberOfPackets.encode_text(text_buf);
+field_dataPacketOffset.encode_text(text_buf);
+field_pgnOfExtendedPacketedMessage.encode_text(text_buf);
+}
+
+void ExtendedMessageDataPacketOffset::decode_text(Text_Buf& text_buf)
+{
+field_ctrl.decode_text(text_buf);
+field_numberOfPacketsToWhichToApplyTheOffset.decode_text(text_buf);
+field_totalNumberOfPackets.decode_text(text_buf);
+field_dataPacketOffset.decode_text(text_buf);
+field_pgnOfExtendedPacketedMessage.decode_text(text_buf);
+}
+
+void ExtendedMessageDataPacketOffset::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ExtendedMessageDataPacketOffset::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ExtendedMessageDataPacketOffset::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, ExtendedMessageDataPacketOffset_ctrl_descr_.raw->forceomit);
+  decoded_field_length = field_ctrl.RAW_decode(ExtendedMessageDataPacketOffset_ctrl_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, ETP__NoPacketForOffset_descr_.raw->forceomit);
+  decoded_field_length = field_numberOfPacketsToWhichToApplyTheOffset.RAW_decode(ETP__NoPacketForOffset_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, NUMBER__OF__PACKETS_descr_.raw->forceomit);
+  decoded_field_length = field_totalNumberOfPackets.RAW_decode(NUMBER__OF__PACKETS_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, ETP__NextPacketNumberToSend_descr_.raw->forceomit);
+  decoded_field_length = field_dataPacketOffset.RAW_decode(ETP__NextPacketNumberToSend_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, IsobusMessageTypes::PGN_descr_.raw->forceomit);
+  decoded_field_length = field_pgnOfExtendedPacketedMessage.RAW_decode(IsobusMessageTypes::PGN_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 ExtendedMessageDataPacketOffset::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, ExtendedMessageDataPacketOffset_ctrl_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ETP__NoPacketForOffset_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, NUMBER__OF__PACKETS_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, ETP__NextPacketNumberToSend_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, IsobusMessageTypes::PGN_descr_.raw);
+  encoded_length += field_ctrl.RAW_encode(ExtendedMessageDataPacketOffset_ctrl_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_numberOfPacketsToWhichToApplyTheOffset.RAW_encode(ETP__NoPacketForOffset_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_totalNumberOfPackets.RAW_encode(NUMBER__OF__PACKETS_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_dataPacketOffset.RAW_encode(ETP__NextPacketNumberToSend_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_pgnOfExtendedPacketedMessage.RAW_encode(IsobusMessageTypes::PGN_descr_, *myleaf.body.node.nodes[4]);
+  return myleaf.length = encoded_length;
+}
+
+struct ExtendedMessageDataPacketOffset_template::single_value_struct {
+OCTETSTRING_template field_ctrl;
+INTEGER_template field_numberOfPacketsToWhichToApplyTheOffset;
+INTEGER_template field_totalNumberOfPackets;
+INTEGER_template field_dataPacketOffset;
+INTEGER_template field_pgnOfExtendedPacketedMessage;
+};
+
+void ExtendedMessageDataPacketOffset_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_ctrl = ANY_VALUE;
+single_value->field_numberOfPacketsToWhichToApplyTheOffset = ANY_VALUE;
+single_value->field_totalNumberOfPackets = ANY_VALUE;
+single_value->field_dataPacketOffset = ANY_VALUE;
+single_value->field_pgnOfExtendedPacketedMessage = ANY_VALUE;
+}
+}
+}
+
+void ExtendedMessageDataPacketOffset_template::copy_value(const ExtendedMessageDataPacketOffset& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.ctrl().is_bound()) {
+  single_value->field_ctrl = other_value.ctrl();
+} else {
+  single_value->field_ctrl.clean_up();
+}
+if (other_value.numberOfPacketsToWhichToApplyTheOffset().is_bound()) {
+  single_value->field_numberOfPacketsToWhichToApplyTheOffset = other_value.numberOfPacketsToWhichToApplyTheOffset();
+} else {
+  single_value->field_numberOfPacketsToWhichToApplyTheOffset.clean_up();
+}
+if (other_value.totalNumberOfPackets().is_bound()) {
+  single_value->field_totalNumberOfPackets = other_value.totalNumberOfPackets();
+} else {
+  single_value->field_totalNumberOfPackets.clean_up();
+}
+if (other_value.dataPacketOffset().is_bound()) {
+  single_value->field_dataPacketOffset = other_value.dataPacketOffset();
+} else {
+  single_value->field_dataPacketOffset.clean_up();
+}
+if (other_value.pgnOfExtendedPacketedMessage().is_bound()) {
+  single_value->field_pgnOfExtendedPacketedMessage = other_value.pgnOfExtendedPacketedMessage();
+} else {
+  single_value->field_pgnOfExtendedPacketedMessage.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ExtendedMessageDataPacketOffset_template::copy_template(const ExtendedMessageDataPacketOffset_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.ctrl().get_selection()) {
+single_value->field_ctrl = other_value.ctrl();
+} else {
+single_value->field_ctrl.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.numberOfPacketsToWhichToApplyTheOffset().get_selection()) {
+single_value->field_numberOfPacketsToWhichToApplyTheOffset = other_value.numberOfPacketsToWhichToApplyTheOffset();
+} else {
+single_value->field_numberOfPacketsToWhichToApplyTheOffset.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.totalNumberOfPackets().get_selection()) {
+single_value->field_totalNumberOfPackets = other_value.totalNumberOfPackets();
+} else {
+single_value->field_totalNumberOfPackets.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.dataPacketOffset().get_selection()) {
+single_value->field_dataPacketOffset = other_value.dataPacketOffset();
+} else {
+single_value->field_dataPacketOffset.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.pgnOfExtendedPacketedMessage().get_selection()) {
+single_value->field_pgnOfExtendedPacketedMessage = other_value.pgnOfExtendedPacketedMessage();
+} else {
+single_value->field_pgnOfExtendedPacketedMessage.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ExtendedMessageDataPacketOffset_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusCMMessageTypes.ExtendedMessageDataPacketOffset.");
+break;
+}
+set_selection(other_value);
+}
+
+ExtendedMessageDataPacketOffset_template::ExtendedMessageDataPacketOffset_template()
+{
+}
+
+ExtendedMessageDataPacketOffset_template::ExtendedMessageDataPacketOffset_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ExtendedMessageDataPacketOffset_template::ExtendedMessageDataPacketOffset_template(const ExtendedMessageDataPacketOffset& other_value)
+{
+copy_value(other_value);
+}
+
+ExtendedMessageDataPacketOffset_template::ExtendedMessageDataPacketOffset_template(const OPTIONAL<ExtendedMessageDataPacketOffset>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExtendedMessageDataPacketOffset&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusCMMessageTypes.ExtendedMessageDataPacketOffset from an unbound optional field.");
+}
+}
+
+ExtendedMessageDataPacketOffset_template::ExtendedMessageDataPacketOffset_template(const ExtendedMessageDataPacketOffset_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ExtendedMessageDataPacketOffset_template::~ExtendedMessageDataPacketOffset_template()
+{
+clean_up();
+}
+
+ExtendedMessageDataPacketOffset_template& ExtendedMessageDataPacketOffset_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ExtendedMessageDataPacketOffset_template& ExtendedMessageDataPacketOffset_template::operator=(const ExtendedMessageDataPacketOffset& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ExtendedMessageDataPacketOffset_template& ExtendedMessageDataPacketOffset_template::operator=(const OPTIONAL<ExtendedMessageDataPacketOffset>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExtendedMessageDataPacketOffset&)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 @IsobusCMMessageTypes.ExtendedMessageDataPacketOffset.");
+}
+return *this;
+}
+
+ExtendedMessageDataPacketOffset_template& ExtendedMessageDataPacketOffset_template::operator=(const ExtendedMessageDataPacketOffset_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ExtendedMessageDataPacketOffset_template::match(const ExtendedMessageDataPacketOffset& 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.ctrl().is_bound()) return FALSE;
+if(!single_value->field_ctrl.match(other_value.ctrl(), legacy))return FALSE;
+if(!other_value.numberOfPacketsToWhichToApplyTheOffset().is_bound()) return FALSE;
+if(!single_value->field_numberOfPacketsToWhichToApplyTheOffset.match(other_value.numberOfPacketsToWhichToApplyTheOffset(), legacy))return FALSE;
+if(!other_value.totalNumberOfPackets().is_bound()) return FALSE;
+if(!single_value->field_totalNumberOfPackets.match(other_value.totalNumberOfPackets(), legacy))return FALSE;
+if(!other_value.dataPacketOffset().is_bound()) return FALSE;
+if(!single_value->field_dataPacketOffset.match(other_value.dataPacketOffset(), legacy))return FALSE;
+if(!other_value.pgnOfExtendedPacketedMessage().is_bound()) return FALSE;
+if(!single_value->field_pgnOfExtendedPacketedMessage.match(other_value.pgnOfExtendedPacketedMessage(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusCMMessageTypes.ExtendedMessageDataPacketOffset.");
+}
+return FALSE;
+}
+
+boolean ExtendedMessageDataPacketOffset_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_ctrl.is_bound()
+
+ ||single_value->field_numberOfPacketsToWhichToApplyTheOffset.is_bound()
+
+ ||single_value->field_totalNumberOfPackets.is_bound()
+
+ ||single_value->field_dataPacketOffset.is_bound()
+
+ ||single_value->field_pgnOfExtendedPacketedMessage.is_bound()
+;
+}
+
+boolean ExtendedMessageDataPacketOffset_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_ctrl.is_value()
+ &&single_value->field_numberOfPacketsToWhichToApplyTheOffset.is_value()
+ &&single_value->field_totalNumberOfPackets.is_value()
+ &&single_value->field_dataPacketOffset.is_value()
+ &&single_value->field_pgnOfExtendedPacketedMessage.is_value();
+}
+
+void ExtendedMessageDataPacketOffset_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ExtendedMessageDataPacketOffset ExtendedMessageDataPacketOffset_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 @IsobusCMMessageTypes.ExtendedMessageDataPacketOffset.");
+ExtendedMessageDataPacketOffset ret_val;
+if (single_value->field_ctrl.is_bound()) {
+ret_val.ctrl() = single_value->field_ctrl.valueof();
+}
+if (single_value->field_numberOfPacketsToWhichToApplyTheOffset.is_bound()) {
+ret_val.numberOfPacketsToWhichToApplyTheOffset() = single_value->field_numberOfPacketsToWhichToApplyTheOffset.valueof();
+}
+if (single_value->field_totalNumberOfPackets.is_bound()) {
+ret_val.totalNumberOfPackets() = single_value->field_totalNumberOfPackets.valueof();
+}
+if (single_value->field_dataPacketOffset.is_bound()) {
+ret_val.dataPacketOffset() = single_value->field_dataPacketOffset.valueof();
+}
+if (single_value->field_pgnOfExtendedPacketedMessage.is_bound()) {
+ret_val.pgnOfExtendedPacketedMessage() = single_value->field_pgnOfExtendedPacketedMessage.valueof();
+}
+return ret_val;
+}
+
+void ExtendedMessageDataPacketOffset_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusCMMessageTypes.ExtendedMessageDataPacketOffset.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ExtendedMessageDataPacketOffset_template[list_length];
+}
+
+ExtendedMessageDataPacketOffset_template& ExtendedMessageDataPacketOffset_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusCMMessageTypes.ExtendedMessageDataPacketOffset.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusCMMessageTypes.ExtendedMessageDataPacketOffset.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& ExtendedMessageDataPacketOffset_template::ctrl()
+{
+set_specific();
+return single_value->field_ctrl;
+}
+
+const OCTETSTRING_template& ExtendedMessageDataPacketOffset_template::ctrl() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field ctrl of a non-specific template of type @IsobusCMMessageTypes.ExtendedMessageDataPacketOffset.");
+return single_value->field_ctrl;
+}
+
+INTEGER_template& ExtendedMessageDataPacketOffset_template::numberOfPacketsToWhichToApplyTheOffset()
+{
+set_specific();
+return single_value->field_numberOfPacketsToWhichToApplyTheOffset;
+}
+
+const INTEGER_template& ExtendedMessageDataPacketOffset_template::numberOfPacketsToWhichToApplyTheOffset() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field numberOfPacketsToWhichToApplyTheOffset of a non-specific template of type @IsobusCMMessageTypes.ExtendedMessageDataPacketOffset.");
+return single_value->field_numberOfPacketsToWhichToApplyTheOffset;
+}
+
+INTEGER_template& ExtendedMessageDataPacketOffset_template::totalNumberOfPackets()
+{
+set_specific();
+return single_value->field_totalNumberOfPackets;
+}
+
+const INTEGER_template& ExtendedMessageDataPacketOffset_template::totalNumberOfPackets() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field totalNumberOfPackets of a non-specific template of type @IsobusCMMessageTypes.ExtendedMessageDataPacketOffset.");
+return single_value->field_totalNumberOfPackets;
+}
+
+INTEGER_template& ExtendedMessageDataPacketOffset_template::dataPacketOffset()
+{
+set_specific();
+return single_value->field_dataPacketOffset;
+}
+
+const INTEGER_template& ExtendedMessageDataPacketOffset_template::dataPacketOffset() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field dataPacketOffset of a non-specific template of type @IsobusCMMessageTypes.ExtendedMessageDataPacketOffset.");
+return single_value->field_dataPacketOffset;
+}
+
+INTEGER_template& ExtendedMessageDataPacketOffset_template::pgnOfExtendedPacketedMessage()
+{
+set_specific();
+return single_value->field_pgnOfExtendedPacketedMessage;
+}
+
+const INTEGER_template& ExtendedMessageDataPacketOffset_template::pgnOfExtendedPacketedMessage() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field pgnOfExtendedPacketedMessage of a non-specific template of type @IsobusCMMessageTypes.ExtendedMessageDataPacketOffset.");
+return single_value->field_pgnOfExtendedPacketedMessage;
+}
+
+int ExtendedMessageDataPacketOffset_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.ExtendedMessageDataPacketOffset 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 @IsobusCMMessageTypes.ExtendedMessageDataPacketOffset 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 @IsobusCMMessageTypes.ExtendedMessageDataPacketOffset containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.ExtendedMessageDataPacketOffset containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.ExtendedMessageDataPacketOffset containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.ExtendedMessageDataPacketOffset containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusCMMessageTypes.ExtendedMessageDataPacketOffset.");
+  }
+  return 0;
+}
+
+void ExtendedMessageDataPacketOffset_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ ctrl := ");
+single_value->field_ctrl.log();
+TTCN_Logger::log_event_str(", numberOfPacketsToWhichToApplyTheOffset := ");
+single_value->field_numberOfPacketsToWhichToApplyTheOffset.log();
+TTCN_Logger::log_event_str(", totalNumberOfPackets := ");
+single_value->field_totalNumberOfPackets.log();
+TTCN_Logger::log_event_str(", dataPacketOffset := ");
+single_value->field_dataPacketOffset.log();
+TTCN_Logger::log_event_str(", pgnOfExtendedPacketedMessage := ");
+single_value->field_pgnOfExtendedPacketedMessage.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ExtendedMessageDataPacketOffset_template::log_match(const ExtendedMessageDataPacketOffset& 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_ctrl.match(match_value.ctrl(), legacy)){
+TTCN_Logger::log_logmatch_info(".ctrl");
+single_value->field_ctrl.log_match(match_value.ctrl(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_numberOfPacketsToWhichToApplyTheOffset.match(match_value.numberOfPacketsToWhichToApplyTheOffset(), legacy)){
+TTCN_Logger::log_logmatch_info(".numberOfPacketsToWhichToApplyTheOffset");
+single_value->field_numberOfPacketsToWhichToApplyTheOffset.log_match(match_value.numberOfPacketsToWhichToApplyTheOffset(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_totalNumberOfPackets.match(match_value.totalNumberOfPackets(), legacy)){
+TTCN_Logger::log_logmatch_info(".totalNumberOfPackets");
+single_value->field_totalNumberOfPackets.log_match(match_value.totalNumberOfPackets(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_dataPacketOffset.match(match_value.dataPacketOffset(), legacy)){
+TTCN_Logger::log_logmatch_info(".dataPacketOffset");
+single_value->field_dataPacketOffset.log_match(match_value.dataPacketOffset(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_pgnOfExtendedPacketedMessage.match(match_value.pgnOfExtendedPacketedMessage(), legacy)){
+TTCN_Logger::log_logmatch_info(".pgnOfExtendedPacketedMessage");
+single_value->field_pgnOfExtendedPacketedMessage.log_match(match_value.pgnOfExtendedPacketedMessage(), 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("{ ctrl := ");
+single_value->field_ctrl.log_match(match_value.ctrl(), legacy);
+TTCN_Logger::log_event_str(", numberOfPacketsToWhichToApplyTheOffset := ");
+single_value->field_numberOfPacketsToWhichToApplyTheOffset.log_match(match_value.numberOfPacketsToWhichToApplyTheOffset(), legacy);
+TTCN_Logger::log_event_str(", totalNumberOfPackets := ");
+single_value->field_totalNumberOfPackets.log_match(match_value.totalNumberOfPackets(), legacy);
+TTCN_Logger::log_event_str(", dataPacketOffset := ");
+single_value->field_dataPacketOffset.log_match(match_value.dataPacketOffset(), legacy);
+TTCN_Logger::log_event_str(", pgnOfExtendedPacketedMessage := ");
+single_value->field_pgnOfExtendedPacketedMessage.log_match(match_value.pgnOfExtendedPacketedMessage(), 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 ExtendedMessageDataPacketOffset_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_ctrl.encode_text(text_buf);
+single_value->field_numberOfPacketsToWhichToApplyTheOffset.encode_text(text_buf);
+single_value->field_totalNumberOfPackets.encode_text(text_buf);
+single_value->field_dataPacketOffset.encode_text(text_buf);
+single_value->field_pgnOfExtendedPacketedMessage.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 @IsobusCMMessageTypes.ExtendedMessageDataPacketOffset.");
+}
+}
+
+void ExtendedMessageDataPacketOffset_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_ctrl.decode_text(text_buf);
+single_value->field_numberOfPacketsToWhichToApplyTheOffset.decode_text(text_buf);
+single_value->field_totalNumberOfPackets.decode_text(text_buf);
+single_value->field_dataPacketOffset.decode_text(text_buf);
+single_value->field_pgnOfExtendedPacketedMessage.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 ExtendedMessageDataPacketOffset_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 @IsobusCMMessageTypes.ExtendedMessageDataPacketOffset.");
+}
+}
+
+void ExtendedMessageDataPacketOffset_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: {
+    ExtendedMessageDataPacketOffset_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusCMMessageTypes.ExtendedMessageDataPacketOffset 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) ctrl().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) numberOfPacketsToWhichToApplyTheOffset().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) totalNumberOfPackets().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) dataPacketOffset().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) pgnOfExtendedPacketedMessage().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(), "ctrl")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ctrl().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(), "numberOfPacketsToWhichToApplyTheOffset")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          numberOfPacketsToWhichToApplyTheOffset().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(), "totalNumberOfPackets")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          totalNumberOfPackets().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(), "dataPacketOffset")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          dataPacketOffset().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(), "pgnOfExtendedPacketedMessage")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          pgnOfExtendedPacketedMessage().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 @IsobusCMMessageTypes.ExtendedMessageDataPacketOffset: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusCMMessageTypes.ExtendedMessageDataPacketOffset");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ExtendedMessageDataPacketOffset_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_ctrl.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.ExtendedMessageDataPacketOffset");
+single_value->field_numberOfPacketsToWhichToApplyTheOffset.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.ExtendedMessageDataPacketOffset");
+single_value->field_totalNumberOfPackets.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.ExtendedMessageDataPacketOffset");
+single_value->field_dataPacketOffset.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.ExtendedMessageDataPacketOffset");
+single_value->field_pgnOfExtendedPacketedMessage.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.ExtendedMessageDataPacketOffset");
+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 : "@IsobusCMMessageTypes.ExtendedMessageDataPacketOffset");
+}
+
+boolean ExtendedMessageDataPacketOffset_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ExtendedMessageDataPacketOffset_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ExtendedMessageEndOfMessageAcknowledgement::ExtendedMessageEndOfMessageAcknowledgement()
+{
+}
+
+ExtendedMessageEndOfMessageAcknowledgement::ExtendedMessageEndOfMessageAcknowledgement(const OCTETSTRING& par_ctrl,
+    const INTEGER& par_numberOfBytesTransferred,
+    const INTEGER& par_pgnOfExtendedPacketedMessage)
+  :   field_ctrl(par_ctrl),
+  field_numberOfBytesTransferred(par_numberOfBytesTransferred),
+  field_pgnOfExtendedPacketedMessage(par_pgnOfExtendedPacketedMessage)
+{
+}
+
+ExtendedMessageEndOfMessageAcknowledgement::ExtendedMessageEndOfMessageAcknowledgement(const ExtendedMessageEndOfMessageAcknowledgement& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusCMMessageTypes.ExtendedMessageEndOfMessageAcknowledgement.");
+if (other_value.ctrl().is_bound()) field_ctrl = other_value.ctrl();
+else field_ctrl.clean_up();
+if (other_value.numberOfBytesTransferred().is_bound()) field_numberOfBytesTransferred = other_value.numberOfBytesTransferred();
+else field_numberOfBytesTransferred.clean_up();
+if (other_value.pgnOfExtendedPacketedMessage().is_bound()) field_pgnOfExtendedPacketedMessage = other_value.pgnOfExtendedPacketedMessage();
+else field_pgnOfExtendedPacketedMessage.clean_up();
+}
+
+void ExtendedMessageEndOfMessageAcknowledgement::clean_up()
+{
+field_ctrl.clean_up();
+field_numberOfBytesTransferred.clean_up();
+field_pgnOfExtendedPacketedMessage.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ExtendedMessageEndOfMessageAcknowledgement::get_descriptor() const { return &ExtendedMessageEndOfMessageAcknowledgement_descr_; }
+ExtendedMessageEndOfMessageAcknowledgement& ExtendedMessageEndOfMessageAcknowledgement::operator=(const ExtendedMessageEndOfMessageAcknowledgement& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusCMMessageTypes.ExtendedMessageEndOfMessageAcknowledgement.");
+  if (other_value.ctrl().is_bound()) field_ctrl = other_value.ctrl();
+  else field_ctrl.clean_up();
+  if (other_value.numberOfBytesTransferred().is_bound()) field_numberOfBytesTransferred = other_value.numberOfBytesTransferred();
+  else field_numberOfBytesTransferred.clean_up();
+  if (other_value.pgnOfExtendedPacketedMessage().is_bound()) field_pgnOfExtendedPacketedMessage = other_value.pgnOfExtendedPacketedMessage();
+  else field_pgnOfExtendedPacketedMessage.clean_up();
+}
+return *this;
+}
+
+boolean ExtendedMessageEndOfMessageAcknowledgement::operator==(const ExtendedMessageEndOfMessageAcknowledgement& other_value) const
+{
+return field_ctrl==other_value.field_ctrl
+  && field_numberOfBytesTransferred==other_value.field_numberOfBytesTransferred
+  && field_pgnOfExtendedPacketedMessage==other_value.field_pgnOfExtendedPacketedMessage;
+}
+
+boolean ExtendedMessageEndOfMessageAcknowledgement::is_bound() const
+{
+return (field_ctrl.is_bound())
+  || (field_numberOfBytesTransferred.is_bound())
+  || (field_pgnOfExtendedPacketedMessage.is_bound());
+}
+boolean ExtendedMessageEndOfMessageAcknowledgement::is_value() const
+{
+return field_ctrl.is_value()
+  && field_numberOfBytesTransferred.is_value()
+  && field_pgnOfExtendedPacketedMessage.is_value();
+}
+void ExtendedMessageEndOfMessageAcknowledgement::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ ctrl := ");
+field_ctrl.log();
+TTCN_Logger::log_event_str(", numberOfBytesTransferred := ");
+field_numberOfBytesTransferred.log();
+TTCN_Logger::log_event_str(", pgnOfExtendedPacketedMessage := ");
+field_pgnOfExtendedPacketedMessage.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ExtendedMessageEndOfMessageAcknowledgement::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 @IsobusCMMessageTypes.ExtendedMessageEndOfMessageAcknowledgement 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) ctrl().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) numberOfBytesTransferred().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) pgnOfExtendedPacketedMessage().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(), "ctrl")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ctrl().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(), "numberOfBytesTransferred")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          numberOfBytesTransferred().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(), "pgnOfExtendedPacketedMessage")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          pgnOfExtendedPacketedMessage().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 @IsobusCMMessageTypes.ExtendedMessageEndOfMessageAcknowledgement: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusCMMessageTypes.ExtendedMessageEndOfMessageAcknowledgement");
+  }
+}
+
+void ExtendedMessageEndOfMessageAcknowledgement::set_implicit_omit()
+{
+if (ctrl().is_bound()) ctrl().set_implicit_omit();
+if (numberOfBytesTransferred().is_bound()) numberOfBytesTransferred().set_implicit_omit();
+if (pgnOfExtendedPacketedMessage().is_bound()) pgnOfExtendedPacketedMessage().set_implicit_omit();
+}
+
+void ExtendedMessageEndOfMessageAcknowledgement::encode_text(Text_Buf& text_buf) const
+{
+field_ctrl.encode_text(text_buf);
+field_numberOfBytesTransferred.encode_text(text_buf);
+field_pgnOfExtendedPacketedMessage.encode_text(text_buf);
+}
+
+void ExtendedMessageEndOfMessageAcknowledgement::decode_text(Text_Buf& text_buf)
+{
+field_ctrl.decode_text(text_buf);
+field_numberOfBytesTransferred.decode_text(text_buf);
+field_pgnOfExtendedPacketedMessage.decode_text(text_buf);
+}
+
+void ExtendedMessageEndOfMessageAcknowledgement::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ExtendedMessageEndOfMessageAcknowledgement::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ExtendedMessageEndOfMessageAcknowledgement::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, ExtendedMessageEndOfMessageAcknowledgement_ctrl_descr_.raw->forceomit);
+  decoded_field_length = field_ctrl.RAW_decode(ExtendedMessageEndOfMessageAcknowledgement_ctrl_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, ETP__MSG__SIZE_descr_.raw->forceomit);
+  decoded_field_length = field_numberOfBytesTransferred.RAW_decode(ETP__MSG__SIZE_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, IsobusMessageTypes::PGN_descr_.raw->forceomit);
+  decoded_field_length = field_pgnOfExtendedPacketedMessage.RAW_decode(IsobusMessageTypes::PGN_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 ExtendedMessageEndOfMessageAcknowledgement::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, ExtendedMessageEndOfMessageAcknowledgement_ctrl_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ETP__MSG__SIZE_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, IsobusMessageTypes::PGN_descr_.raw);
+  encoded_length += field_ctrl.RAW_encode(ExtendedMessageEndOfMessageAcknowledgement_ctrl_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_numberOfBytesTransferred.RAW_encode(ETP__MSG__SIZE_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_pgnOfExtendedPacketedMessage.RAW_encode(IsobusMessageTypes::PGN_descr_, *myleaf.body.node.nodes[2]);
+  return myleaf.length = encoded_length;
+}
+
+struct ExtendedMessageEndOfMessageAcknowledgement_template::single_value_struct {
+OCTETSTRING_template field_ctrl;
+INTEGER_template field_numberOfBytesTransferred;
+INTEGER_template field_pgnOfExtendedPacketedMessage;
+};
+
+void ExtendedMessageEndOfMessageAcknowledgement_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_ctrl = ANY_VALUE;
+single_value->field_numberOfBytesTransferred = ANY_VALUE;
+single_value->field_pgnOfExtendedPacketedMessage = ANY_VALUE;
+}
+}
+}
+
+void ExtendedMessageEndOfMessageAcknowledgement_template::copy_value(const ExtendedMessageEndOfMessageAcknowledgement& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.ctrl().is_bound()) {
+  single_value->field_ctrl = other_value.ctrl();
+} else {
+  single_value->field_ctrl.clean_up();
+}
+if (other_value.numberOfBytesTransferred().is_bound()) {
+  single_value->field_numberOfBytesTransferred = other_value.numberOfBytesTransferred();
+} else {
+  single_value->field_numberOfBytesTransferred.clean_up();
+}
+if (other_value.pgnOfExtendedPacketedMessage().is_bound()) {
+  single_value->field_pgnOfExtendedPacketedMessage = other_value.pgnOfExtendedPacketedMessage();
+} else {
+  single_value->field_pgnOfExtendedPacketedMessage.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ExtendedMessageEndOfMessageAcknowledgement_template::copy_template(const ExtendedMessageEndOfMessageAcknowledgement_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.ctrl().get_selection()) {
+single_value->field_ctrl = other_value.ctrl();
+} else {
+single_value->field_ctrl.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.numberOfBytesTransferred().get_selection()) {
+single_value->field_numberOfBytesTransferred = other_value.numberOfBytesTransferred();
+} else {
+single_value->field_numberOfBytesTransferred.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.pgnOfExtendedPacketedMessage().get_selection()) {
+single_value->field_pgnOfExtendedPacketedMessage = other_value.pgnOfExtendedPacketedMessage();
+} else {
+single_value->field_pgnOfExtendedPacketedMessage.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ExtendedMessageEndOfMessageAcknowledgement_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusCMMessageTypes.ExtendedMessageEndOfMessageAcknowledgement.");
+break;
+}
+set_selection(other_value);
+}
+
+ExtendedMessageEndOfMessageAcknowledgement_template::ExtendedMessageEndOfMessageAcknowledgement_template()
+{
+}
+
+ExtendedMessageEndOfMessageAcknowledgement_template::ExtendedMessageEndOfMessageAcknowledgement_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ExtendedMessageEndOfMessageAcknowledgement_template::ExtendedMessageEndOfMessageAcknowledgement_template(const ExtendedMessageEndOfMessageAcknowledgement& other_value)
+{
+copy_value(other_value);
+}
+
+ExtendedMessageEndOfMessageAcknowledgement_template::ExtendedMessageEndOfMessageAcknowledgement_template(const OPTIONAL<ExtendedMessageEndOfMessageAcknowledgement>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExtendedMessageEndOfMessageAcknowledgement&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusCMMessageTypes.ExtendedMessageEndOfMessageAcknowledgement from an unbound optional field.");
+}
+}
+
+ExtendedMessageEndOfMessageAcknowledgement_template::ExtendedMessageEndOfMessageAcknowledgement_template(const ExtendedMessageEndOfMessageAcknowledgement_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ExtendedMessageEndOfMessageAcknowledgement_template::~ExtendedMessageEndOfMessageAcknowledgement_template()
+{
+clean_up();
+}
+
+ExtendedMessageEndOfMessageAcknowledgement_template& ExtendedMessageEndOfMessageAcknowledgement_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ExtendedMessageEndOfMessageAcknowledgement_template& ExtendedMessageEndOfMessageAcknowledgement_template::operator=(const ExtendedMessageEndOfMessageAcknowledgement& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ExtendedMessageEndOfMessageAcknowledgement_template& ExtendedMessageEndOfMessageAcknowledgement_template::operator=(const OPTIONAL<ExtendedMessageEndOfMessageAcknowledgement>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExtendedMessageEndOfMessageAcknowledgement&)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 @IsobusCMMessageTypes.ExtendedMessageEndOfMessageAcknowledgement.");
+}
+return *this;
+}
+
+ExtendedMessageEndOfMessageAcknowledgement_template& ExtendedMessageEndOfMessageAcknowledgement_template::operator=(const ExtendedMessageEndOfMessageAcknowledgement_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ExtendedMessageEndOfMessageAcknowledgement_template::match(const ExtendedMessageEndOfMessageAcknowledgement& 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.ctrl().is_bound()) return FALSE;
+if(!single_value->field_ctrl.match(other_value.ctrl(), legacy))return FALSE;
+if(!other_value.numberOfBytesTransferred().is_bound()) return FALSE;
+if(!single_value->field_numberOfBytesTransferred.match(other_value.numberOfBytesTransferred(), legacy))return FALSE;
+if(!other_value.pgnOfExtendedPacketedMessage().is_bound()) return FALSE;
+if(!single_value->field_pgnOfExtendedPacketedMessage.match(other_value.pgnOfExtendedPacketedMessage(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusCMMessageTypes.ExtendedMessageEndOfMessageAcknowledgement.");
+}
+return FALSE;
+}
+
+boolean ExtendedMessageEndOfMessageAcknowledgement_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_ctrl.is_bound()
+
+ ||single_value->field_numberOfBytesTransferred.is_bound()
+
+ ||single_value->field_pgnOfExtendedPacketedMessage.is_bound()
+;
+}
+
+boolean ExtendedMessageEndOfMessageAcknowledgement_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_ctrl.is_value()
+ &&single_value->field_numberOfBytesTransferred.is_value()
+ &&single_value->field_pgnOfExtendedPacketedMessage.is_value();
+}
+
+void ExtendedMessageEndOfMessageAcknowledgement_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ExtendedMessageEndOfMessageAcknowledgement ExtendedMessageEndOfMessageAcknowledgement_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 @IsobusCMMessageTypes.ExtendedMessageEndOfMessageAcknowledgement.");
+ExtendedMessageEndOfMessageAcknowledgement ret_val;
+if (single_value->field_ctrl.is_bound()) {
+ret_val.ctrl() = single_value->field_ctrl.valueof();
+}
+if (single_value->field_numberOfBytesTransferred.is_bound()) {
+ret_val.numberOfBytesTransferred() = single_value->field_numberOfBytesTransferred.valueof();
+}
+if (single_value->field_pgnOfExtendedPacketedMessage.is_bound()) {
+ret_val.pgnOfExtendedPacketedMessage() = single_value->field_pgnOfExtendedPacketedMessage.valueof();
+}
+return ret_val;
+}
+
+void ExtendedMessageEndOfMessageAcknowledgement_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusCMMessageTypes.ExtendedMessageEndOfMessageAcknowledgement.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ExtendedMessageEndOfMessageAcknowledgement_template[list_length];
+}
+
+ExtendedMessageEndOfMessageAcknowledgement_template& ExtendedMessageEndOfMessageAcknowledgement_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusCMMessageTypes.ExtendedMessageEndOfMessageAcknowledgement.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusCMMessageTypes.ExtendedMessageEndOfMessageAcknowledgement.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& ExtendedMessageEndOfMessageAcknowledgement_template::ctrl()
+{
+set_specific();
+return single_value->field_ctrl;
+}
+
+const OCTETSTRING_template& ExtendedMessageEndOfMessageAcknowledgement_template::ctrl() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field ctrl of a non-specific template of type @IsobusCMMessageTypes.ExtendedMessageEndOfMessageAcknowledgement.");
+return single_value->field_ctrl;
+}
+
+INTEGER_template& ExtendedMessageEndOfMessageAcknowledgement_template::numberOfBytesTransferred()
+{
+set_specific();
+return single_value->field_numberOfBytesTransferred;
+}
+
+const INTEGER_template& ExtendedMessageEndOfMessageAcknowledgement_template::numberOfBytesTransferred() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field numberOfBytesTransferred of a non-specific template of type @IsobusCMMessageTypes.ExtendedMessageEndOfMessageAcknowledgement.");
+return single_value->field_numberOfBytesTransferred;
+}
+
+INTEGER_template& ExtendedMessageEndOfMessageAcknowledgement_template::pgnOfExtendedPacketedMessage()
+{
+set_specific();
+return single_value->field_pgnOfExtendedPacketedMessage;
+}
+
+const INTEGER_template& ExtendedMessageEndOfMessageAcknowledgement_template::pgnOfExtendedPacketedMessage() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field pgnOfExtendedPacketedMessage of a non-specific template of type @IsobusCMMessageTypes.ExtendedMessageEndOfMessageAcknowledgement.");
+return single_value->field_pgnOfExtendedPacketedMessage;
+}
+
+int ExtendedMessageEndOfMessageAcknowledgement_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.ExtendedMessageEndOfMessageAcknowledgement 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 @IsobusCMMessageTypes.ExtendedMessageEndOfMessageAcknowledgement 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 @IsobusCMMessageTypes.ExtendedMessageEndOfMessageAcknowledgement containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.ExtendedMessageEndOfMessageAcknowledgement containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.ExtendedMessageEndOfMessageAcknowledgement containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.ExtendedMessageEndOfMessageAcknowledgement containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusCMMessageTypes.ExtendedMessageEndOfMessageAcknowledgement.");
+  }
+  return 0;
+}
+
+void ExtendedMessageEndOfMessageAcknowledgement_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ ctrl := ");
+single_value->field_ctrl.log();
+TTCN_Logger::log_event_str(", numberOfBytesTransferred := ");
+single_value->field_numberOfBytesTransferred.log();
+TTCN_Logger::log_event_str(", pgnOfExtendedPacketedMessage := ");
+single_value->field_pgnOfExtendedPacketedMessage.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ExtendedMessageEndOfMessageAcknowledgement_template::log_match(const ExtendedMessageEndOfMessageAcknowledgement& 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_ctrl.match(match_value.ctrl(), legacy)){
+TTCN_Logger::log_logmatch_info(".ctrl");
+single_value->field_ctrl.log_match(match_value.ctrl(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_numberOfBytesTransferred.match(match_value.numberOfBytesTransferred(), legacy)){
+TTCN_Logger::log_logmatch_info(".numberOfBytesTransferred");
+single_value->field_numberOfBytesTransferred.log_match(match_value.numberOfBytesTransferred(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_pgnOfExtendedPacketedMessage.match(match_value.pgnOfExtendedPacketedMessage(), legacy)){
+TTCN_Logger::log_logmatch_info(".pgnOfExtendedPacketedMessage");
+single_value->field_pgnOfExtendedPacketedMessage.log_match(match_value.pgnOfExtendedPacketedMessage(), 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("{ ctrl := ");
+single_value->field_ctrl.log_match(match_value.ctrl(), legacy);
+TTCN_Logger::log_event_str(", numberOfBytesTransferred := ");
+single_value->field_numberOfBytesTransferred.log_match(match_value.numberOfBytesTransferred(), legacy);
+TTCN_Logger::log_event_str(", pgnOfExtendedPacketedMessage := ");
+single_value->field_pgnOfExtendedPacketedMessage.log_match(match_value.pgnOfExtendedPacketedMessage(), 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 ExtendedMessageEndOfMessageAcknowledgement_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_ctrl.encode_text(text_buf);
+single_value->field_numberOfBytesTransferred.encode_text(text_buf);
+single_value->field_pgnOfExtendedPacketedMessage.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 @IsobusCMMessageTypes.ExtendedMessageEndOfMessageAcknowledgement.");
+}
+}
+
+void ExtendedMessageEndOfMessageAcknowledgement_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_ctrl.decode_text(text_buf);
+single_value->field_numberOfBytesTransferred.decode_text(text_buf);
+single_value->field_pgnOfExtendedPacketedMessage.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 ExtendedMessageEndOfMessageAcknowledgement_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 @IsobusCMMessageTypes.ExtendedMessageEndOfMessageAcknowledgement.");
+}
+}
+
+void ExtendedMessageEndOfMessageAcknowledgement_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: {
+    ExtendedMessageEndOfMessageAcknowledgement_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusCMMessageTypes.ExtendedMessageEndOfMessageAcknowledgement 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) ctrl().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) numberOfBytesTransferred().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) pgnOfExtendedPacketedMessage().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(), "ctrl")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ctrl().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(), "numberOfBytesTransferred")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          numberOfBytesTransferred().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(), "pgnOfExtendedPacketedMessage")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          pgnOfExtendedPacketedMessage().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 @IsobusCMMessageTypes.ExtendedMessageEndOfMessageAcknowledgement: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusCMMessageTypes.ExtendedMessageEndOfMessageAcknowledgement");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ExtendedMessageEndOfMessageAcknowledgement_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_ctrl.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.ExtendedMessageEndOfMessageAcknowledgement");
+single_value->field_numberOfBytesTransferred.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.ExtendedMessageEndOfMessageAcknowledgement");
+single_value->field_pgnOfExtendedPacketedMessage.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.ExtendedMessageEndOfMessageAcknowledgement");
+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 : "@IsobusCMMessageTypes.ExtendedMessageEndOfMessageAcknowledgement");
+}
+
+boolean ExtendedMessageEndOfMessageAcknowledgement_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ExtendedMessageEndOfMessageAcknowledgement_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+e__ETP__ConnectionAbort__AbortReason::e__ETP__ConnectionAbort__AbortReason()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+e__ETP__ConnectionAbort__AbortReason::e__ETP__ConnectionAbort__AbortReason(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @IsobusCMMessageTypes.e_ETP_ConnectionAbort_AbortReason with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+e__ETP__ConnectionAbort__AbortReason::e__ETP__ConnectionAbort__AbortReason(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+e__ETP__ConnectionAbort__AbortReason::e__ETP__ConnectionAbort__AbortReason(const e__ETP__ConnectionAbort__AbortReason& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @IsobusCMMessageTypes.e_ETP_ConnectionAbort_AbortReason.");
+enum_value = other_value.enum_value;
+}
+
+e__ETP__ConnectionAbort__AbortReason& e__ETP__ConnectionAbort__AbortReason::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @IsobusCMMessageTypes.e_ETP_ConnectionAbort_AbortReason.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+e__ETP__ConnectionAbort__AbortReason& e__ETP__ConnectionAbort__AbortReason::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+e__ETP__ConnectionAbort__AbortReason& e__ETP__ConnectionAbort__AbortReason::operator=(const e__ETP__ConnectionAbort__AbortReason& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusCMMessageTypes.e_ETP_ConnectionAbort_AbortReason.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean e__ETP__ConnectionAbort__AbortReason::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusCMMessageTypes.e_ETP_ConnectionAbort_AbortReason.");
+return enum_value == other_value;
+}
+
+boolean e__ETP__ConnectionAbort__AbortReason::operator==(const e__ETP__ConnectionAbort__AbortReason& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusCMMessageTypes.e_ETP_ConnectionAbort_AbortReason.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusCMMessageTypes.e_ETP_ConnectionAbort_AbortReason.");
+return enum_value == other_value.enum_value;
+}
+
+boolean e__ETP__ConnectionAbort__AbortReason::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusCMMessageTypes.e_ETP_ConnectionAbort_AbortReason.");
+return enum_value < other_value;
+}
+
+boolean e__ETP__ConnectionAbort__AbortReason::operator<(const e__ETP__ConnectionAbort__AbortReason& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusCMMessageTypes.e_ETP_ConnectionAbort_AbortReason.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusCMMessageTypes.e_ETP_ConnectionAbort_AbortReason.");
+return enum_value < other_value.enum_value;
+}
+
+boolean e__ETP__ConnectionAbort__AbortReason::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusCMMessageTypes.e_ETP_ConnectionAbort_AbortReason.");
+return enum_value > other_value;
+}
+
+boolean e__ETP__ConnectionAbort__AbortReason::operator>(const e__ETP__ConnectionAbort__AbortReason& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusCMMessageTypes.e_ETP_ConnectionAbort_AbortReason.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusCMMessageTypes.e_ETP_ConnectionAbort_AbortReason.");
+return enum_value > other_value.enum_value;
+}
+
+const char *e__ETP__ConnectionAbort__AbortReason::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case alreadyInOneOrMoreConnectionManagedSessionsAndCannotSupportAnother: return "alreadyInOneOrMoreConnectionManagedSessionsAndCannotSupportAnother";
+case systemResourcesWereNeededForAnotherTaskSoThisConnectionManagedSessionWasTerminated: return "systemResourcesWereNeededForAnotherTaskSoThisConnectionManagedSessionWasTerminated";
+case aTimeoutOccurredAndThisIsTheConnectionAbortToCloseTheSession: return "aTimeoutOccurredAndThisIsTheConnectionAbortToCloseTheSession";
+case cts__MessagesReceivedWhenDataTransferIsInProgress: return "cts_MessagesReceivedWhenDataTransferIsInProgress";
+case maximumRetransmitRequestLimitReached: return "maximumRetransmitRequestLimitReached";
+case unexpectedDataTransferPacket: return "unexpectedDataTransferPacket";
+case badSequenceNumber: return "badSequenceNumber";
+case duplicateSequenceNumber: return "duplicateSequenceNumber";
+case unexpectedEDPO__Packet: return "unexpectedEDPO_Packet";
+case unexpectedEDPO__PGN: return "unexpectedEDPO_PGN";
+case edpo__numberOfPacketsIsGreaterThanCTS: return "edpo_numberOfPacketsIsGreaterThanCTS";
+case badEDPO__Offset: return "badEDPO_Offset";
+case unexpectedECTS__PGN: return "unexpectedECTS_PGN";
+case ECTS__requestedPacketsExceedsMessageSize: return "ECTS_requestedPacketsExceedsMessageSize";
+case iso__11783__7__error__code__251: return "iso_11783_7_error_code_251";
+case iso__11783__7__error__code__252: return "iso_11783_7_error_code_252";
+case iso__11783__7__error__code__253: return "iso_11783_7_error_code_253";
+case iso__11783__7__error__code__254: return "iso_11783_7_error_code_254";
+case iso__11783__7__error__code__255: return "iso_11783_7_error_code_255";
+default: return "<unknown>";
+}
+}
+
+e__ETP__ConnectionAbort__AbortReason::enum_type e__ETP__ConnectionAbort__AbortReason::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "alreadyInOneOrMoreConnectionManagedSessionsAndCannotSupportAnother")) return alreadyInOneOrMoreConnectionManagedSessionsAndCannotSupportAnother;
+else if (!strcmp(str_par, "systemResourcesWereNeededForAnotherTaskSoThisConnectionManagedSessionWasTerminated")) return systemResourcesWereNeededForAnotherTaskSoThisConnectionManagedSessionWasTerminated;
+else if (!strcmp(str_par, "aTimeoutOccurredAndThisIsTheConnectionAbortToCloseTheSession")) return aTimeoutOccurredAndThisIsTheConnectionAbortToCloseTheSession;
+else if (!strcmp(str_par, "cts_MessagesReceivedWhenDataTransferIsInProgress")) return cts__MessagesReceivedWhenDataTransferIsInProgress;
+else if (!strcmp(str_par, "maximumRetransmitRequestLimitReached")) return maximumRetransmitRequestLimitReached;
+else if (!strcmp(str_par, "unexpectedDataTransferPacket")) return unexpectedDataTransferPacket;
+else if (!strcmp(str_par, "badSequenceNumber")) return badSequenceNumber;
+else if (!strcmp(str_par, "duplicateSequenceNumber")) return duplicateSequenceNumber;
+else if (!strcmp(str_par, "unexpectedEDPO_Packet")) return unexpectedEDPO__Packet;
+else if (!strcmp(str_par, "unexpectedEDPO_PGN")) return unexpectedEDPO__PGN;
+else if (!strcmp(str_par, "edpo_numberOfPacketsIsGreaterThanCTS")) return edpo__numberOfPacketsIsGreaterThanCTS;
+else if (!strcmp(str_par, "badEDPO_Offset")) return badEDPO__Offset;
+else if (!strcmp(str_par, "unexpectedECTS_PGN")) return unexpectedECTS__PGN;
+else if (!strcmp(str_par, "ECTS_requestedPacketsExceedsMessageSize")) return ECTS__requestedPacketsExceedsMessageSize;
+else if (!strcmp(str_par, "iso_11783_7_error_code_251")) return iso__11783__7__error__code__251;
+else if (!strcmp(str_par, "iso_11783_7_error_code_252")) return iso__11783__7__error__code__252;
+else if (!strcmp(str_par, "iso_11783_7_error_code_253")) return iso__11783__7__error__code__253;
+else if (!strcmp(str_par, "iso_11783_7_error_code_254")) return iso__11783__7__error__code__254;
+else if (!strcmp(str_par, "iso_11783_7_error_code_255")) return iso__11783__7__error__code__255;
+else return UNKNOWN_VALUE;
+}
+
+boolean e__ETP__ConnectionAbort__AbortReason::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 1:
+case 2:
+case 3:
+case 4:
+case 5:
+case 6:
+case 7:
+case 8:
+case 9:
+case 10:
+case 11:
+case 12:
+case 14:
+case 15:
+case 251:
+case 252:
+case 253:
+case 254:
+case 255:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int e__ETP__ConnectionAbort__AbortReason::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusCMMessageTypes.e_ETP_ConnectionAbort_AbortReason.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int e__ETP__ConnectionAbort__AbortReason::enum2int(const e__ETP__ConnectionAbort__AbortReason& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusCMMessageTypes.e_ETP_ConnectionAbort_AbortReason.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void e__ETP__ConnectionAbort__AbortReason::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @IsobusCMMessageTypes.e_ETP_ConnectionAbort_AbortReason.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+e__ETP__ConnectionAbort__AbortReason::operator e__ETP__ConnectionAbort__AbortReason::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @IsobusCMMessageTypes.e_ETP_ConnectionAbort_AbortReason.");
+return enum_value;
+}
+
+void e__ETP__ConnectionAbort__AbortReason::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void e__ETP__ConnectionAbort__AbortReason::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@IsobusCMMessageTypes.e_ETP_ConnectionAbort_AbortReason");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @IsobusCMMessageTypes.e_ETP_ConnectionAbort_AbortReason.");
+  }
+}
+
+void e__ETP__ConnectionAbort__AbortReason::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @IsobusCMMessageTypes.e_ETP_ConnectionAbort_AbortReason.");
+text_buf.push_int(enum_value);
+}
+
+void e__ETP__ConnectionAbort__AbortReason::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @IsobusCMMessageTypes.e_ETP_ConnectionAbort_AbortReason.", enum_value);
+}
+
+void e__ETP__ConnectionAbort__AbortReason::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void e__ETP__ConnectionAbort__AbortReason::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int e__ETP__ConnectionAbort__AbortReason::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*)
+{
+  int decoded_value = 0;
+  int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 8, no_err);
+  if (decoded_length < 0) return decoded_length;
+  if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value;
+  else {
+    if(no_err){
+     return -1;
+    } else {
+    TTCN_EncDec_ErrorContext::error
+      (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name);
+    enum_value = UNKNOWN_VALUE;
+    }
+  }
+  return decoded_length;
+}
+
+int e__ETP__ConnectionAbort__AbortReason::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const
+{
+  return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 8);
+}
+
+void e__ETP__ConnectionAbort__AbortReason_template::copy_template(const e__ETP__ConnectionAbort__AbortReason_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new e__ETP__ConnectionAbort__AbortReason_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @IsobusCMMessageTypes.e_ETP_ConnectionAbort_AbortReason.");
+}
+}
+
+e__ETP__ConnectionAbort__AbortReason_template::e__ETP__ConnectionAbort__AbortReason_template()
+{
+}
+
+e__ETP__ConnectionAbort__AbortReason_template::e__ETP__ConnectionAbort__AbortReason_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+e__ETP__ConnectionAbort__AbortReason_template::e__ETP__ConnectionAbort__AbortReason_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!e__ETP__ConnectionAbort__AbortReason::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @IsobusCMMessageTypes.e_ETP_ConnectionAbort_AbortReason with unknown numeric value %d.", other_value);
+single_value = (e__ETP__ConnectionAbort__AbortReason::enum_type)other_value;
+}
+
+e__ETP__ConnectionAbort__AbortReason_template::e__ETP__ConnectionAbort__AbortReason_template(e__ETP__ConnectionAbort__AbortReason::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+e__ETP__ConnectionAbort__AbortReason_template::e__ETP__ConnectionAbort__AbortReason_template(const e__ETP__ConnectionAbort__AbortReason& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == e__ETP__ConnectionAbort__AbortReason::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @IsobusCMMessageTypes.e_ETP_ConnectionAbort_AbortReason.");
+single_value = other_value.enum_value;
+}
+
+e__ETP__ConnectionAbort__AbortReason_template::e__ETP__ConnectionAbort__AbortReason_template(const OPTIONAL<e__ETP__ConnectionAbort__AbortReason>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__ETP__ConnectionAbort__AbortReason::enum_type)(const e__ETP__ConnectionAbort__AbortReason&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @IsobusCMMessageTypes.e_ETP_ConnectionAbort_AbortReason from an unbound optional field.");
+}
+}
+
+e__ETP__ConnectionAbort__AbortReason_template::e__ETP__ConnectionAbort__AbortReason_template(const e__ETP__ConnectionAbort__AbortReason_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+e__ETP__ConnectionAbort__AbortReason_template::~e__ETP__ConnectionAbort__AbortReason_template()
+{
+clean_up();
+}
+
+boolean e__ETP__ConnectionAbort__AbortReason_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean e__ETP__ConnectionAbort__AbortReason_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != e__ETP__ConnectionAbort__AbortReason::UNBOUND_VALUE;
+}
+
+void e__ETP__ConnectionAbort__AbortReason_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+e__ETP__ConnectionAbort__AbortReason_template& e__ETP__ConnectionAbort__AbortReason_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+e__ETP__ConnectionAbort__AbortReason_template& e__ETP__ConnectionAbort__AbortReason_template::operator=(int other_value)
+{
+if (!e__ETP__ConnectionAbort__AbortReason::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @IsobusCMMessageTypes.e_ETP_ConnectionAbort_AbortReason.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (e__ETP__ConnectionAbort__AbortReason::enum_type)other_value;
+return *this;
+}
+
+e__ETP__ConnectionAbort__AbortReason_template& e__ETP__ConnectionAbort__AbortReason_template::operator=(e__ETP__ConnectionAbort__AbortReason::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+e__ETP__ConnectionAbort__AbortReason_template& e__ETP__ConnectionAbort__AbortReason_template::operator=(const e__ETP__ConnectionAbort__AbortReason& other_value)
+{
+if (other_value.enum_value == e__ETP__ConnectionAbort__AbortReason::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusCMMessageTypes.e_ETP_ConnectionAbort_AbortReason to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+e__ETP__ConnectionAbort__AbortReason_template& e__ETP__ConnectionAbort__AbortReason_template::operator=(const OPTIONAL<e__ETP__ConnectionAbort__AbortReason>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__ETP__ConnectionAbort__AbortReason::enum_type)(const e__ETP__ConnectionAbort__AbortReason&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @IsobusCMMessageTypes.e_ETP_ConnectionAbort_AbortReason.");
+}
+return *this;
+}
+
+e__ETP__ConnectionAbort__AbortReason_template& e__ETP__ConnectionAbort__AbortReason_template::operator=(const e__ETP__ConnectionAbort__AbortReason_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean e__ETP__ConnectionAbort__AbortReason_template::match(e__ETP__ConnectionAbort__AbortReason::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @IsobusCMMessageTypes.e_ETP_ConnectionAbort_AbortReason.");
+}
+return FALSE;
+}
+
+boolean e__ETP__ConnectionAbort__AbortReason_template::match(const e__ETP__ConnectionAbort__AbortReason& other_value, boolean) const
+{
+if (other_value.enum_value == e__ETP__ConnectionAbort__AbortReason::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @IsobusCMMessageTypes.e_ETP_ConnectionAbort_AbortReason with an unbound value.");
+return match(other_value.enum_value);
+}
+
+e__ETP__ConnectionAbort__AbortReason::enum_type e__ETP__ConnectionAbort__AbortReason_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @IsobusCMMessageTypes.e_ETP_ConnectionAbort_AbortReason.");
+return single_value;
+}
+
+void e__ETP__ConnectionAbort__AbortReason_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @IsobusCMMessageTypes.e_ETP_ConnectionAbort_AbortReason.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new e__ETP__ConnectionAbort__AbortReason_template[list_length];
+}
+
+e__ETP__ConnectionAbort__AbortReason_template& e__ETP__ConnectionAbort__AbortReason_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @IsobusCMMessageTypes.e_ETP_ConnectionAbort_AbortReason.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @IsobusCMMessageTypes.e_ETP_ConnectionAbort_AbortReason.");
+return value_list.list_value[list_index];
+}
+
+void e__ETP__ConnectionAbort__AbortReason_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(e__ETP__ConnectionAbort__AbortReason::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void e__ETP__ConnectionAbort__AbortReason_template::log_match(const e__ETP__ConnectionAbort__AbortReason& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void e__ETP__ConnectionAbort__AbortReason_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @IsobusCMMessageTypes.e_ETP_ConnectionAbort_AbortReason.");
+}
+}
+
+void e__ETP__ConnectionAbort__AbortReason_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (e__ETP__ConnectionAbort__AbortReason::enum_type)text_buf.pull_int().get_val();
+if (!e__ETP__ConnectionAbort__AbortReason::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @IsobusCMMessageTypes.e_ETP_ConnectionAbort_AbortReason.", single_value);
+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 e__ETP__ConnectionAbort__AbortReason_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @IsobusCMMessageTypes.e_ETP_ConnectionAbort_AbortReason.");
+}
+}
+
+boolean e__ETP__ConnectionAbort__AbortReason_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean e__ETP__ConnectionAbort__AbortReason_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 e__ETP__ConnectionAbort__AbortReason_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    e__ETP__ConnectionAbort__AbortReason_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    e__ETP__ConnectionAbort__AbortReason::enum_type enum_val = e__ETP__ConnectionAbort__AbortReason::str_to_enum(m_p->get_enumerated());
+    if (!e__ETP__ConnectionAbort__AbortReason::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @IsobusCMMessageTypes.e_ETP_ConnectionAbort_AbortReason.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@IsobusCMMessageTypes.e_ETP_ConnectionAbort_AbortReason");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void e__ETP__ConnectionAbort__AbortReason_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@IsobusCMMessageTypes.e_ETP_ConnectionAbort_AbortReason");
+}
+
+ExtendedMessageConnectionAbort::ExtendedMessageConnectionAbort()
+{
+}
+
+ExtendedMessageConnectionAbort::ExtendedMessageConnectionAbort(const OCTETSTRING& par_ctrl,
+    const e__ETP__ConnectionAbort__AbortReason& par_connectionAbortReason,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const INTEGER& par_pgnOfExtendedPacketedMessage)
+  :   field_ctrl(par_ctrl),
+  field_connectionAbortReason(par_connectionAbortReason),
+  field_reserved3(par_reserved3),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_pgnOfExtendedPacketedMessage(par_pgnOfExtendedPacketedMessage)
+{
+}
+
+ExtendedMessageConnectionAbort::ExtendedMessageConnectionAbort(const ExtendedMessageConnectionAbort& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusCMMessageTypes.ExtendedMessageConnectionAbort.");
+if (other_value.ctrl().is_bound()) field_ctrl = other_value.ctrl();
+else field_ctrl.clean_up();
+if (other_value.connectionAbortReason().is_bound()) field_connectionAbortReason = other_value.connectionAbortReason();
+else field_connectionAbortReason.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.pgnOfExtendedPacketedMessage().is_bound()) field_pgnOfExtendedPacketedMessage = other_value.pgnOfExtendedPacketedMessage();
+else field_pgnOfExtendedPacketedMessage.clean_up();
+}
+
+void ExtendedMessageConnectionAbort::clean_up()
+{
+field_ctrl.clean_up();
+field_connectionAbortReason.clean_up();
+field_reserved3.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_pgnOfExtendedPacketedMessage.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ExtendedMessageConnectionAbort::get_descriptor() const { return &ExtendedMessageConnectionAbort_descr_; }
+ExtendedMessageConnectionAbort& ExtendedMessageConnectionAbort::operator=(const ExtendedMessageConnectionAbort& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusCMMessageTypes.ExtendedMessageConnectionAbort.");
+  if (other_value.ctrl().is_bound()) field_ctrl = other_value.ctrl();
+  else field_ctrl.clean_up();
+  if (other_value.connectionAbortReason().is_bound()) field_connectionAbortReason = other_value.connectionAbortReason();
+  else field_connectionAbortReason.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.pgnOfExtendedPacketedMessage().is_bound()) field_pgnOfExtendedPacketedMessage = other_value.pgnOfExtendedPacketedMessage();
+  else field_pgnOfExtendedPacketedMessage.clean_up();
+}
+return *this;
+}
+
+boolean ExtendedMessageConnectionAbort::operator==(const ExtendedMessageConnectionAbort& other_value) const
+{
+return field_ctrl==other_value.field_ctrl
+  && field_connectionAbortReason==other_value.field_connectionAbortReason
+  && field_reserved3==other_value.field_reserved3
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_pgnOfExtendedPacketedMessage==other_value.field_pgnOfExtendedPacketedMessage;
+}
+
+boolean ExtendedMessageConnectionAbort::is_bound() const
+{
+return (field_ctrl.is_bound())
+  || (field_connectionAbortReason.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_pgnOfExtendedPacketedMessage.is_bound());
+}
+boolean ExtendedMessageConnectionAbort::is_value() const
+{
+return field_ctrl.is_value()
+  && field_connectionAbortReason.is_value()
+  && field_reserved3.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_pgnOfExtendedPacketedMessage.is_value();
+}
+void ExtendedMessageConnectionAbort::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ ctrl := ");
+field_ctrl.log();
+TTCN_Logger::log_event_str(", connectionAbortReason := ");
+field_connectionAbortReason.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", pgnOfExtendedPacketedMessage := ");
+field_pgnOfExtendedPacketedMessage.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ExtendedMessageConnectionAbort::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 @IsobusCMMessageTypes.ExtendedMessageConnectionAbort 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) ctrl().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) connectionAbortReason().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) pgnOfExtendedPacketedMessage().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(), "ctrl")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ctrl().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(), "connectionAbortReason")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          connectionAbortReason().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "pgnOfExtendedPacketedMessage")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          pgnOfExtendedPacketedMessage().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 @IsobusCMMessageTypes.ExtendedMessageConnectionAbort: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusCMMessageTypes.ExtendedMessageConnectionAbort");
+  }
+}
+
+void ExtendedMessageConnectionAbort::set_implicit_omit()
+{
+if (ctrl().is_bound()) ctrl().set_implicit_omit();
+if (connectionAbortReason().is_bound()) connectionAbortReason().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (pgnOfExtendedPacketedMessage().is_bound()) pgnOfExtendedPacketedMessage().set_implicit_omit();
+}
+
+void ExtendedMessageConnectionAbort::encode_text(Text_Buf& text_buf) const
+{
+field_ctrl.encode_text(text_buf);
+field_connectionAbortReason.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_pgnOfExtendedPacketedMessage.encode_text(text_buf);
+}
+
+void ExtendedMessageConnectionAbort::decode_text(Text_Buf& text_buf)
+{
+field_ctrl.decode_text(text_buf);
+field_connectionAbortReason.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_pgnOfExtendedPacketedMessage.decode_text(text_buf);
+}
+
+void ExtendedMessageConnectionAbort::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ExtendedMessageConnectionAbort::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ExtendedMessageConnectionAbort::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, ExtendedMessageConnectionAbort_ctrl_descr_.raw->forceomit);
+  decoded_field_length = field_ctrl.RAW_decode(ExtendedMessageConnectionAbort_ctrl_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, e__ETP__ConnectionAbort__AbortReason_descr_.raw->forceomit);
+  decoded_field_length = field_connectionAbortReason.RAW_decode(e__ETP__ConnectionAbort__AbortReason_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, ExtendedMessageConnectionAbort_reserved3_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(ExtendedMessageConnectionAbort_reserved3_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, ExtendedMessageConnectionAbort_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(ExtendedMessageConnectionAbort_reserved4_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, ExtendedMessageConnectionAbort_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(ExtendedMessageConnectionAbort_reserved5_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, IsobusMessageTypes::PGN_descr_.raw->forceomit);
+  decoded_field_length = field_pgnOfExtendedPacketedMessage.RAW_decode(IsobusMessageTypes::PGN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ExtendedMessageConnectionAbort::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, ExtendedMessageConnectionAbort_ctrl_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, e__ETP__ConnectionAbort__AbortReason_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ExtendedMessageConnectionAbort_reserved3_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, ExtendedMessageConnectionAbort_reserved4_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, ExtendedMessageConnectionAbort_reserved5_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, IsobusMessageTypes::PGN_descr_.raw);
+  encoded_length += field_ctrl.RAW_encode(ExtendedMessageConnectionAbort_ctrl_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_connectionAbortReason.RAW_encode(e__ETP__ConnectionAbort__AbortReason_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved3.RAW_encode(ExtendedMessageConnectionAbort_reserved3_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved4.RAW_encode(ExtendedMessageConnectionAbort_reserved4_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved5.RAW_encode(ExtendedMessageConnectionAbort_reserved5_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_pgnOfExtendedPacketedMessage.RAW_encode(IsobusMessageTypes::PGN_descr_, *myleaf.body.node.nodes[5]);
+  return myleaf.length = encoded_length;
+}
+
+struct ExtendedMessageConnectionAbort_template::single_value_struct {
+OCTETSTRING_template field_ctrl;
+e__ETP__ConnectionAbort__AbortReason_template field_connectionAbortReason;
+OCTETSTRING_template field_reserved3;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+INTEGER_template field_pgnOfExtendedPacketedMessage;
+};
+
+void ExtendedMessageConnectionAbort_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_ctrl = ANY_VALUE;
+single_value->field_connectionAbortReason = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_pgnOfExtendedPacketedMessage = ANY_VALUE;
+}
+}
+}
+
+void ExtendedMessageConnectionAbort_template::copy_value(const ExtendedMessageConnectionAbort& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.ctrl().is_bound()) {
+  single_value->field_ctrl = other_value.ctrl();
+} else {
+  single_value->field_ctrl.clean_up();
+}
+if (other_value.connectionAbortReason().is_bound()) {
+  single_value->field_connectionAbortReason = other_value.connectionAbortReason();
+} else {
+  single_value->field_connectionAbortReason.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.pgnOfExtendedPacketedMessage().is_bound()) {
+  single_value->field_pgnOfExtendedPacketedMessage = other_value.pgnOfExtendedPacketedMessage();
+} else {
+  single_value->field_pgnOfExtendedPacketedMessage.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ExtendedMessageConnectionAbort_template::copy_template(const ExtendedMessageConnectionAbort_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.ctrl().get_selection()) {
+single_value->field_ctrl = other_value.ctrl();
+} else {
+single_value->field_ctrl.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.connectionAbortReason().get_selection()) {
+single_value->field_connectionAbortReason = other_value.connectionAbortReason();
+} else {
+single_value->field_connectionAbortReason.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.pgnOfExtendedPacketedMessage().get_selection()) {
+single_value->field_pgnOfExtendedPacketedMessage = other_value.pgnOfExtendedPacketedMessage();
+} else {
+single_value->field_pgnOfExtendedPacketedMessage.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ExtendedMessageConnectionAbort_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusCMMessageTypes.ExtendedMessageConnectionAbort.");
+break;
+}
+set_selection(other_value);
+}
+
+ExtendedMessageConnectionAbort_template::ExtendedMessageConnectionAbort_template()
+{
+}
+
+ExtendedMessageConnectionAbort_template::ExtendedMessageConnectionAbort_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ExtendedMessageConnectionAbort_template::ExtendedMessageConnectionAbort_template(const ExtendedMessageConnectionAbort& other_value)
+{
+copy_value(other_value);
+}
+
+ExtendedMessageConnectionAbort_template::ExtendedMessageConnectionAbort_template(const OPTIONAL<ExtendedMessageConnectionAbort>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExtendedMessageConnectionAbort&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusCMMessageTypes.ExtendedMessageConnectionAbort from an unbound optional field.");
+}
+}
+
+ExtendedMessageConnectionAbort_template::ExtendedMessageConnectionAbort_template(const ExtendedMessageConnectionAbort_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ExtendedMessageConnectionAbort_template::~ExtendedMessageConnectionAbort_template()
+{
+clean_up();
+}
+
+ExtendedMessageConnectionAbort_template& ExtendedMessageConnectionAbort_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ExtendedMessageConnectionAbort_template& ExtendedMessageConnectionAbort_template::operator=(const ExtendedMessageConnectionAbort& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ExtendedMessageConnectionAbort_template& ExtendedMessageConnectionAbort_template::operator=(const OPTIONAL<ExtendedMessageConnectionAbort>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExtendedMessageConnectionAbort&)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 @IsobusCMMessageTypes.ExtendedMessageConnectionAbort.");
+}
+return *this;
+}
+
+ExtendedMessageConnectionAbort_template& ExtendedMessageConnectionAbort_template::operator=(const ExtendedMessageConnectionAbort_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ExtendedMessageConnectionAbort_template::match(const ExtendedMessageConnectionAbort& 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.ctrl().is_bound()) return FALSE;
+if(!single_value->field_ctrl.match(other_value.ctrl(), legacy))return FALSE;
+if(!other_value.connectionAbortReason().is_bound()) return FALSE;
+if(!single_value->field_connectionAbortReason.match(other_value.connectionAbortReason(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.pgnOfExtendedPacketedMessage().is_bound()) return FALSE;
+if(!single_value->field_pgnOfExtendedPacketedMessage.match(other_value.pgnOfExtendedPacketedMessage(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusCMMessageTypes.ExtendedMessageConnectionAbort.");
+}
+return FALSE;
+}
+
+boolean ExtendedMessageConnectionAbort_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_ctrl.is_bound()
+
+ ||single_value->field_connectionAbortReason.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_pgnOfExtendedPacketedMessage.is_bound()
+;
+}
+
+boolean ExtendedMessageConnectionAbort_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_ctrl.is_value()
+ &&single_value->field_connectionAbortReason.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_pgnOfExtendedPacketedMessage.is_value();
+}
+
+void ExtendedMessageConnectionAbort_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ExtendedMessageConnectionAbort ExtendedMessageConnectionAbort_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 @IsobusCMMessageTypes.ExtendedMessageConnectionAbort.");
+ExtendedMessageConnectionAbort ret_val;
+if (single_value->field_ctrl.is_bound()) {
+ret_val.ctrl() = single_value->field_ctrl.valueof();
+}
+if (single_value->field_connectionAbortReason.is_bound()) {
+ret_val.connectionAbortReason() = single_value->field_connectionAbortReason.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_pgnOfExtendedPacketedMessage.is_bound()) {
+ret_val.pgnOfExtendedPacketedMessage() = single_value->field_pgnOfExtendedPacketedMessage.valueof();
+}
+return ret_val;
+}
+
+void ExtendedMessageConnectionAbort_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusCMMessageTypes.ExtendedMessageConnectionAbort.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ExtendedMessageConnectionAbort_template[list_length];
+}
+
+ExtendedMessageConnectionAbort_template& ExtendedMessageConnectionAbort_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusCMMessageTypes.ExtendedMessageConnectionAbort.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusCMMessageTypes.ExtendedMessageConnectionAbort.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& ExtendedMessageConnectionAbort_template::ctrl()
+{
+set_specific();
+return single_value->field_ctrl;
+}
+
+const OCTETSTRING_template& ExtendedMessageConnectionAbort_template::ctrl() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field ctrl of a non-specific template of type @IsobusCMMessageTypes.ExtendedMessageConnectionAbort.");
+return single_value->field_ctrl;
+}
+
+e__ETP__ConnectionAbort__AbortReason_template& ExtendedMessageConnectionAbort_template::connectionAbortReason()
+{
+set_specific();
+return single_value->field_connectionAbortReason;
+}
+
+const e__ETP__ConnectionAbort__AbortReason_template& ExtendedMessageConnectionAbort_template::connectionAbortReason() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field connectionAbortReason of a non-specific template of type @IsobusCMMessageTypes.ExtendedMessageConnectionAbort.");
+return single_value->field_connectionAbortReason;
+}
+
+OCTETSTRING_template& ExtendedMessageConnectionAbort_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const OCTETSTRING_template& ExtendedMessageConnectionAbort_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusCMMessageTypes.ExtendedMessageConnectionAbort.");
+return single_value->field_reserved3;
+}
+
+OCTETSTRING_template& ExtendedMessageConnectionAbort_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& ExtendedMessageConnectionAbort_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusCMMessageTypes.ExtendedMessageConnectionAbort.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& ExtendedMessageConnectionAbort_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& ExtendedMessageConnectionAbort_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusCMMessageTypes.ExtendedMessageConnectionAbort.");
+return single_value->field_reserved5;
+}
+
+INTEGER_template& ExtendedMessageConnectionAbort_template::pgnOfExtendedPacketedMessage()
+{
+set_specific();
+return single_value->field_pgnOfExtendedPacketedMessage;
+}
+
+const INTEGER_template& ExtendedMessageConnectionAbort_template::pgnOfExtendedPacketedMessage() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field pgnOfExtendedPacketedMessage of a non-specific template of type @IsobusCMMessageTypes.ExtendedMessageConnectionAbort.");
+return single_value->field_pgnOfExtendedPacketedMessage;
+}
+
+int ExtendedMessageConnectionAbort_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.ExtendedMessageConnectionAbort 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 @IsobusCMMessageTypes.ExtendedMessageConnectionAbort 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 @IsobusCMMessageTypes.ExtendedMessageConnectionAbort containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.ExtendedMessageConnectionAbort containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.ExtendedMessageConnectionAbort containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.ExtendedMessageConnectionAbort containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusCMMessageTypes.ExtendedMessageConnectionAbort.");
+  }
+  return 0;
+}
+
+void ExtendedMessageConnectionAbort_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ ctrl := ");
+single_value->field_ctrl.log();
+TTCN_Logger::log_event_str(", connectionAbortReason := ");
+single_value->field_connectionAbortReason.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", pgnOfExtendedPacketedMessage := ");
+single_value->field_pgnOfExtendedPacketedMessage.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ExtendedMessageConnectionAbort_template::log_match(const ExtendedMessageConnectionAbort& 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_ctrl.match(match_value.ctrl(), legacy)){
+TTCN_Logger::log_logmatch_info(".ctrl");
+single_value->field_ctrl.log_match(match_value.ctrl(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_connectionAbortReason.match(match_value.connectionAbortReason(), legacy)){
+TTCN_Logger::log_logmatch_info(".connectionAbortReason");
+single_value->field_connectionAbortReason.log_match(match_value.connectionAbortReason(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_pgnOfExtendedPacketedMessage.match(match_value.pgnOfExtendedPacketedMessage(), legacy)){
+TTCN_Logger::log_logmatch_info(".pgnOfExtendedPacketedMessage");
+single_value->field_pgnOfExtendedPacketedMessage.log_match(match_value.pgnOfExtendedPacketedMessage(), 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("{ ctrl := ");
+single_value->field_ctrl.log_match(match_value.ctrl(), legacy);
+TTCN_Logger::log_event_str(", connectionAbortReason := ");
+single_value->field_connectionAbortReason.log_match(match_value.connectionAbortReason(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", pgnOfExtendedPacketedMessage := ");
+single_value->field_pgnOfExtendedPacketedMessage.log_match(match_value.pgnOfExtendedPacketedMessage(), 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 ExtendedMessageConnectionAbort_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_ctrl.encode_text(text_buf);
+single_value->field_connectionAbortReason.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_pgnOfExtendedPacketedMessage.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 @IsobusCMMessageTypes.ExtendedMessageConnectionAbort.");
+}
+}
+
+void ExtendedMessageConnectionAbort_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_ctrl.decode_text(text_buf);
+single_value->field_connectionAbortReason.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_pgnOfExtendedPacketedMessage.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 ExtendedMessageConnectionAbort_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 @IsobusCMMessageTypes.ExtendedMessageConnectionAbort.");
+}
+}
+
+void ExtendedMessageConnectionAbort_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: {
+    ExtendedMessageConnectionAbort_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusCMMessageTypes.ExtendedMessageConnectionAbort 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) ctrl().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) connectionAbortReason().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) pgnOfExtendedPacketedMessage().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(), "ctrl")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ctrl().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(), "connectionAbortReason")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          connectionAbortReason().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "pgnOfExtendedPacketedMessage")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          pgnOfExtendedPacketedMessage().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 @IsobusCMMessageTypes.ExtendedMessageConnectionAbort: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusCMMessageTypes.ExtendedMessageConnectionAbort");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ExtendedMessageConnectionAbort_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_ctrl.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.ExtendedMessageConnectionAbort");
+single_value->field_connectionAbortReason.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.ExtendedMessageConnectionAbort");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.ExtendedMessageConnectionAbort");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.ExtendedMessageConnectionAbort");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.ExtendedMessageConnectionAbort");
+single_value->field_pgnOfExtendedPacketedMessage.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.ExtendedMessageConnectionAbort");
+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 : "@IsobusCMMessageTypes.ExtendedMessageConnectionAbort");
+}
+
+boolean ExtendedMessageConnectionAbort_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ExtendedMessageConnectionAbort_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 ETP__CM::copy_value(const ETP__CM& other_value)
+{
+switch (other_value.union_selection) {
+case ALT_extendedMessageRequestToSend:
+field_extendedMessageRequestToSend = new ExtendedMessageRequestToSend(*other_value.field_extendedMessageRequestToSend);
+break;
+case ALT_extendedMessageClearToSend:
+field_extendedMessageClearToSend = new ExtendedMessageClearToSend(*other_value.field_extendedMessageClearToSend);
+break;
+case ALT_extendedMessageDataPacketOffset:
+field_extendedMessageDataPacketOffset = new ExtendedMessageDataPacketOffset(*other_value.field_extendedMessageDataPacketOffset);
+break;
+case ALT_extendedMessageEndOfMessageAcknowledgement:
+field_extendedMessageEndOfMessageAcknowledgement = new ExtendedMessageEndOfMessageAcknowledgement(*other_value.field_extendedMessageEndOfMessageAcknowledgement);
+break;
+case ALT_extendedMessageConnectionAbort:
+field_extendedMessageConnectionAbort = new ExtendedMessageConnectionAbort(*other_value.field_extendedMessageConnectionAbort);
+break;
+default:
+TTCN_error("Assignment of an unbound union value of type @IsobusCMMessageTypes.ETP_CM.");
+}
+union_selection = other_value.union_selection;
+}
+
+ETP__CM::ETP__CM()
+{
+union_selection = UNBOUND_VALUE;
+}
+
+ETP__CM::ETP__CM(const ETP__CM& other_value)
+: Base_Type(){
+copy_value(other_value);
+}
+
+ETP__CM::~ETP__CM()
+{
+clean_up();
+}
+
+ETP__CM& ETP__CM::operator=(const ETP__CM& other_value)
+{
+if (this != &other_value) {
+clean_up();
+copy_value(other_value);
+}
+return *this;
+}
+
+boolean ETP__CM::operator==(const ETP__CM& other_value) const
+{
+if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @IsobusCMMessageTypes.ETP_CM.");
+if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @IsobusCMMessageTypes.ETP_CM.");
+if (union_selection != other_value.union_selection) return FALSE;
+switch (union_selection) {
+case ALT_extendedMessageRequestToSend:
+return *field_extendedMessageRequestToSend == *other_value.field_extendedMessageRequestToSend;
+case ALT_extendedMessageClearToSend:
+return *field_extendedMessageClearToSend == *other_value.field_extendedMessageClearToSend;
+case ALT_extendedMessageDataPacketOffset:
+return *field_extendedMessageDataPacketOffset == *other_value.field_extendedMessageDataPacketOffset;
+case ALT_extendedMessageEndOfMessageAcknowledgement:
+return *field_extendedMessageEndOfMessageAcknowledgement == *other_value.field_extendedMessageEndOfMessageAcknowledgement;
+case ALT_extendedMessageConnectionAbort:
+return *field_extendedMessageConnectionAbort == *other_value.field_extendedMessageConnectionAbort;
+default:
+return FALSE;
+}
+}
+
+ExtendedMessageRequestToSend& ETP__CM::extendedMessageRequestToSend()
+{
+if (union_selection != ALT_extendedMessageRequestToSend) {
+clean_up();
+field_extendedMessageRequestToSend = new ExtendedMessageRequestToSend;
+union_selection = ALT_extendedMessageRequestToSend;
+}
+return *field_extendedMessageRequestToSend;
+}
+
+const ExtendedMessageRequestToSend& ETP__CM::extendedMessageRequestToSend() const
+{
+if (union_selection != ALT_extendedMessageRequestToSend) TTCN_error("Using non-selected field extendedMessageRequestToSend in a value of union type @IsobusCMMessageTypes.ETP_CM.");
+return *field_extendedMessageRequestToSend;
+}
+
+ExtendedMessageClearToSend& ETP__CM::extendedMessageClearToSend()
+{
+if (union_selection != ALT_extendedMessageClearToSend) {
+clean_up();
+field_extendedMessageClearToSend = new ExtendedMessageClearToSend;
+union_selection = ALT_extendedMessageClearToSend;
+}
+return *field_extendedMessageClearToSend;
+}
+
+const ExtendedMessageClearToSend& ETP__CM::extendedMessageClearToSend() const
+{
+if (union_selection != ALT_extendedMessageClearToSend) TTCN_error("Using non-selected field extendedMessageClearToSend in a value of union type @IsobusCMMessageTypes.ETP_CM.");
+return *field_extendedMessageClearToSend;
+}
+
+ExtendedMessageDataPacketOffset& ETP__CM::extendedMessageDataPacketOffset()
+{
+if (union_selection != ALT_extendedMessageDataPacketOffset) {
+clean_up();
+field_extendedMessageDataPacketOffset = new ExtendedMessageDataPacketOffset;
+union_selection = ALT_extendedMessageDataPacketOffset;
+}
+return *field_extendedMessageDataPacketOffset;
+}
+
+const ExtendedMessageDataPacketOffset& ETP__CM::extendedMessageDataPacketOffset() const
+{
+if (union_selection != ALT_extendedMessageDataPacketOffset) TTCN_error("Using non-selected field extendedMessageDataPacketOffset in a value of union type @IsobusCMMessageTypes.ETP_CM.");
+return *field_extendedMessageDataPacketOffset;
+}
+
+ExtendedMessageEndOfMessageAcknowledgement& ETP__CM::extendedMessageEndOfMessageAcknowledgement()
+{
+if (union_selection != ALT_extendedMessageEndOfMessageAcknowledgement) {
+clean_up();
+field_extendedMessageEndOfMessageAcknowledgement = new ExtendedMessageEndOfMessageAcknowledgement;
+union_selection = ALT_extendedMessageEndOfMessageAcknowledgement;
+}
+return *field_extendedMessageEndOfMessageAcknowledgement;
+}
+
+const ExtendedMessageEndOfMessageAcknowledgement& ETP__CM::extendedMessageEndOfMessageAcknowledgement() const
+{
+if (union_selection != ALT_extendedMessageEndOfMessageAcknowledgement) TTCN_error("Using non-selected field extendedMessageEndOfMessageAcknowledgement in a value of union type @IsobusCMMessageTypes.ETP_CM.");
+return *field_extendedMessageEndOfMessageAcknowledgement;
+}
+
+ExtendedMessageConnectionAbort& ETP__CM::extendedMessageConnectionAbort()
+{
+if (union_selection != ALT_extendedMessageConnectionAbort) {
+clean_up();
+field_extendedMessageConnectionAbort = new ExtendedMessageConnectionAbort;
+union_selection = ALT_extendedMessageConnectionAbort;
+}
+return *field_extendedMessageConnectionAbort;
+}
+
+const ExtendedMessageConnectionAbort& ETP__CM::extendedMessageConnectionAbort() const
+{
+if (union_selection != ALT_extendedMessageConnectionAbort) TTCN_error("Using non-selected field extendedMessageConnectionAbort in a value of union type @IsobusCMMessageTypes.ETP_CM.");
+return *field_extendedMessageConnectionAbort;
+}
+
+boolean ETP__CM::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 @IsobusCMMessageTypes.ETP_CM.");
+return union_selection == checked_selection;
+}
+
+boolean ETP__CM::is_bound() const
+{
+  return union_selection != UNBOUND_VALUE;
+}
+
+boolean ETP__CM::is_value() const
+{
+switch (union_selection) {
+case UNBOUND_VALUE: return FALSE;
+case ALT_extendedMessageRequestToSend: return field_extendedMessageRequestToSend->is_value();
+case ALT_extendedMessageClearToSend: return field_extendedMessageClearToSend->is_value();
+case ALT_extendedMessageDataPacketOffset: return field_extendedMessageDataPacketOffset->is_value();
+case ALT_extendedMessageEndOfMessageAcknowledgement: return field_extendedMessageEndOfMessageAcknowledgement->is_value();
+case ALT_extendedMessageConnectionAbort: return field_extendedMessageConnectionAbort->is_value();
+default: TTCN_error("Invalid selection in union is_bound");}
+}
+
+void ETP__CM::clean_up()
+{
+switch (union_selection) {
+case ALT_extendedMessageRequestToSend:
+  delete field_extendedMessageRequestToSend;
+  break;
+case ALT_extendedMessageClearToSend:
+  delete field_extendedMessageClearToSend;
+  break;
+case ALT_extendedMessageDataPacketOffset:
+  delete field_extendedMessageDataPacketOffset;
+  break;
+case ALT_extendedMessageEndOfMessageAcknowledgement:
+  delete field_extendedMessageEndOfMessageAcknowledgement;
+  break;
+case ALT_extendedMessageConnectionAbort:
+  delete field_extendedMessageConnectionAbort;
+  break;
+default:
+  break;
+}
+union_selection = UNBOUND_VALUE;
+}
+
+void ETP__CM::log() const
+{
+switch (union_selection) {
+case ALT_extendedMessageRequestToSend:
+TTCN_Logger::log_event_str("{ extendedMessageRequestToSend := ");
+field_extendedMessageRequestToSend->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_extendedMessageClearToSend:
+TTCN_Logger::log_event_str("{ extendedMessageClearToSend := ");
+field_extendedMessageClearToSend->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_extendedMessageDataPacketOffset:
+TTCN_Logger::log_event_str("{ extendedMessageDataPacketOffset := ");
+field_extendedMessageDataPacketOffset->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_extendedMessageEndOfMessageAcknowledgement:
+TTCN_Logger::log_event_str("{ extendedMessageEndOfMessageAcknowledgement := ");
+field_extendedMessageEndOfMessageAcknowledgement->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_extendedMessageConnectionAbort:
+TTCN_Logger::log_event_str("{ extendedMessageConnectionAbort := ");
+field_extendedMessageConnectionAbort->log();
+TTCN_Logger::log_event_str(" }");
+break;
+default:
+TTCN_Logger::log_event_unbound();
+}
+}
+
+void ETP__CM::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, "extendedMessageRequestToSend")) {
+    extendedMessageRequestToSend().set_param(*mp_last);
+    if (!extendedMessageRequestToSend().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "extendedMessageClearToSend")) {
+    extendedMessageClearToSend().set_param(*mp_last);
+    if (!extendedMessageClearToSend().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "extendedMessageDataPacketOffset")) {
+    extendedMessageDataPacketOffset().set_param(*mp_last);
+    if (!extendedMessageDataPacketOffset().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "extendedMessageEndOfMessageAcknowledgement")) {
+    extendedMessageEndOfMessageAcknowledgement().set_param(*mp_last);
+    if (!extendedMessageEndOfMessageAcknowledgement().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "extendedMessageConnectionAbort")) {
+    extendedMessageConnectionAbort().set_param(*mp_last);
+    if (!extendedMessageConnectionAbort().is_bound()) clean_up();
+    return;
+  }
+  mp_last->error("Field %s does not exist in type @IsobusCMMessageTypes.ETP_CM.", last_name);
+}
+
+void ETP__CM::set_implicit_omit()
+{
+switch (union_selection) {
+case ALT_extendedMessageRequestToSend:
+field_extendedMessageRequestToSend->set_implicit_omit(); break;
+case ALT_extendedMessageClearToSend:
+field_extendedMessageClearToSend->set_implicit_omit(); break;
+case ALT_extendedMessageDataPacketOffset:
+field_extendedMessageDataPacketOffset->set_implicit_omit(); break;
+case ALT_extendedMessageEndOfMessageAcknowledgement:
+field_extendedMessageEndOfMessageAcknowledgement->set_implicit_omit(); break;
+case ALT_extendedMessageConnectionAbort:
+field_extendedMessageConnectionAbort->set_implicit_omit(); break;
+default: break;
+}
+}
+
+void ETP__CM::encode_text(Text_Buf& text_buf) const
+{
+text_buf.push_int(union_selection);
+switch (union_selection) {
+case ALT_extendedMessageRequestToSend:
+field_extendedMessageRequestToSend->encode_text(text_buf);
+break;
+case ALT_extendedMessageClearToSend:
+field_extendedMessageClearToSend->encode_text(text_buf);
+break;
+case ALT_extendedMessageDataPacketOffset:
+field_extendedMessageDataPacketOffset->encode_text(text_buf);
+break;
+case ALT_extendedMessageEndOfMessageAcknowledgement:
+field_extendedMessageEndOfMessageAcknowledgement->encode_text(text_buf);
+break;
+case ALT_extendedMessageConnectionAbort:
+field_extendedMessageConnectionAbort->encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an unbound value of union type @IsobusCMMessageTypes.ETP_CM.");
+}
+}
+
+void ETP__CM::decode_text(Text_Buf& text_buf)
+{
+switch ((union_selection_type)text_buf.pull_int().get_val()) {
+case ALT_extendedMessageRequestToSend:
+extendedMessageRequestToSend().decode_text(text_buf);
+break;
+case ALT_extendedMessageClearToSend:
+extendedMessageClearToSend().decode_text(text_buf);
+break;
+case ALT_extendedMessageDataPacketOffset:
+extendedMessageDataPacketOffset().decode_text(text_buf);
+break;
+case ALT_extendedMessageEndOfMessageAcknowledgement:
+extendedMessageEndOfMessageAcknowledgement().decode_text(text_buf);
+break;
+case ALT_extendedMessageConnectionAbort:
+extendedMessageConnectionAbort().decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for type @IsobusCMMessageTypes.ETP_CM.");
+}
+}
+
+void ETP__CM::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ETP__CM::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ETP__CM::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, ExtendedMessageRequestToSend_descr_.raw->forceomit);
+      decoded_length = extendedMessageRequestToSend().RAW_decode(ExtendedMessageRequestToSend_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, ExtendedMessageClearToSend_descr_.raw->forceomit);
+      decoded_length = extendedMessageClearToSend().RAW_decode(ExtendedMessageClearToSend_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, ExtendedMessageDataPacketOffset_descr_.raw->forceomit);
+      decoded_length = extendedMessageDataPacketOffset().RAW_decode(ExtendedMessageDataPacketOffset_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 3: {
+      RAW_Force_Omit field_force_omit(3, force_omit, ExtendedMessageEndOfMessageAcknowledgement_descr_.raw->forceomit);
+      decoded_length = extendedMessageEndOfMessageAcknowledgement().RAW_decode(ExtendedMessageEndOfMessageAcknowledgement_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 4: {
+      RAW_Force_Omit field_force_omit(4, force_omit, ExtendedMessageConnectionAbort_descr_.raw->forceomit);
+      decoded_length = extendedMessageConnectionAbort().RAW_decode(ExtendedMessageConnectionAbort_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 {
+    boolean already_failed = FALSE;
+    already_failed = FALSE;
+    if (!already_failed) {
+      OCTETSTRING temporal_0;
+      int decoded_0_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_0_length = temporal_0.RAW_decode(ExtendedMessageRequestToSend_ctrl_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_0_length > 0) {
+        if (temporal_0 ==  os_3) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(0, force_omit, ExtendedMessageRequestToSend_descr_.raw->forceomit);
+          decoded_length = extendedMessageRequestToSend().RAW_decode(ExtendedMessageRequestToSend_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_extendedMessageRequestToSend).ctrl() ==  os_3) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      OCTETSTRING temporal_1;
+      int decoded_1_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_1_length = temporal_1.RAW_decode(ExtendedMessageClearToSend_ctrl_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_1_length > 0) {
+        if (temporal_1 ==  os_5) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(1, force_omit, ExtendedMessageClearToSend_descr_.raw->forceomit);
+          decoded_length = extendedMessageClearToSend().RAW_decode(ExtendedMessageClearToSend_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_extendedMessageClearToSend).ctrl() ==  os_5) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      OCTETSTRING temporal_2;
+      int decoded_2_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_2_length = temporal_2.RAW_decode(ExtendedMessageDataPacketOffset_ctrl_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_2_length > 0) {
+        if (temporal_2 ==  os_6) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(2, force_omit, ExtendedMessageDataPacketOffset_descr_.raw->forceomit);
+          decoded_length = extendedMessageDataPacketOffset().RAW_decode(ExtendedMessageDataPacketOffset_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_extendedMessageDataPacketOffset).ctrl() ==  os_6) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      OCTETSTRING temporal_3;
+      int decoded_3_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_3_length = temporal_3.RAW_decode(ExtendedMessageEndOfMessageAcknowledgement_ctrl_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_3_length > 0) {
+        if (temporal_3 ==  os_7) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(3, force_omit, ExtendedMessageEndOfMessageAcknowledgement_descr_.raw->forceomit);
+          decoded_length = extendedMessageEndOfMessageAcknowledgement().RAW_decode(ExtendedMessageEndOfMessageAcknowledgement_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_extendedMessageEndOfMessageAcknowledgement).ctrl() ==  os_7) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      OCTETSTRING temporal_4;
+      int decoded_4_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_4_length = temporal_4.RAW_decode(ExtendedMessageConnectionAbort_ctrl_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_4_length > 0) {
+        if (temporal_4 ==  os_4) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(4, force_omit, ExtendedMessageConnectionAbort_descr_.raw->forceomit);
+          decoded_length = extendedMessageConnectionAbort().RAW_decode(ExtendedMessageConnectionAbort_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_extendedMessageConnectionAbort).ctrl() ==  os_4) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+ }
+ clean_up();
+ return -1;
+}
+
+int ETP__CM::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const
+{
+  int encoded_length = 0;
+  myleaf.isleaf = FALSE;
+  myleaf.body.node.num_of_nodes = 5;  myleaf.body.node.nodes = init_nodes_of_enc_tree(5);
+  memset(myleaf.body.node.nodes, 0, 5 * sizeof(RAW_enc_tree *));
+  switch (union_selection) {
+  case ALT_extendedMessageRequestToSend:
+    myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 0, ExtendedMessageRequestToSend_descr_.raw);
+    encoded_length = field_extendedMessageRequestToSend->RAW_encode(ExtendedMessageRequestToSend_descr_, *myleaf.body.node.nodes[0]);
+    myleaf.body.node.nodes[0]->coding_descr = &ExtendedMessageRequestToSend_descr_;
+    if ((*field_extendedMessageRequestToSend).ctrl() !=  os_3) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={0,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   os_3.RAW_encode(ExtendedMessageRequestToSend_ctrl_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);
+  }
+    }
+    break;
+  case ALT_extendedMessageClearToSend:
+    myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 1, ExtendedMessageClearToSend_descr_.raw);
+    encoded_length = field_extendedMessageClearToSend->RAW_encode(ExtendedMessageClearToSend_descr_, *myleaf.body.node.nodes[1]);
+    myleaf.body.node.nodes[1]->coding_descr = &ExtendedMessageClearToSend_descr_;
+    if ((*field_extendedMessageClearToSend).ctrl() !=  os_5) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={1,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   os_5.RAW_encode(ExtendedMessageClearToSend_ctrl_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);
+  }
+    }
+    break;
+  case ALT_extendedMessageDataPacketOffset:
+    myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 2, ExtendedMessageDataPacketOffset_descr_.raw);
+    encoded_length = field_extendedMessageDataPacketOffset->RAW_encode(ExtendedMessageDataPacketOffset_descr_, *myleaf.body.node.nodes[2]);
+    myleaf.body.node.nodes[2]->coding_descr = &ExtendedMessageDataPacketOffset_descr_;
+    if ((*field_extendedMessageDataPacketOffset).ctrl() !=  os_6) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={2,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   os_6.RAW_encode(ExtendedMessageDataPacketOffset_ctrl_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);
+  }
+    }
+    break;
+  case ALT_extendedMessageEndOfMessageAcknowledgement:
+    myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 3, ExtendedMessageEndOfMessageAcknowledgement_descr_.raw);
+    encoded_length = field_extendedMessageEndOfMessageAcknowledgement->RAW_encode(ExtendedMessageEndOfMessageAcknowledgement_descr_, *myleaf.body.node.nodes[3]);
+    myleaf.body.node.nodes[3]->coding_descr = &ExtendedMessageEndOfMessageAcknowledgement_descr_;
+    if ((*field_extendedMessageEndOfMessageAcknowledgement).ctrl() !=  os_7) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={3,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   os_7.RAW_encode(ExtendedMessageEndOfMessageAcknowledgement_ctrl_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);
+  }
+    }
+    break;
+  case ALT_extendedMessageConnectionAbort:
+    myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 4, ExtendedMessageConnectionAbort_descr_.raw);
+    encoded_length = field_extendedMessageConnectionAbort->RAW_encode(ExtendedMessageConnectionAbort_descr_, *myleaf.body.node.nodes[4]);
+    myleaf.body.node.nodes[4]->coding_descr = &ExtendedMessageConnectionAbort_descr_;
+    if ((*field_extendedMessageConnectionAbort).ctrl() !=  os_4) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={4,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   os_4.RAW_encode(ExtendedMessageConnectionAbort_ctrl_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);
+  }
+    }
+    break;
+  default:
+    TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
+  }
+  return encoded_length;
+}
+
+void ETP__CM_template::copy_value(const ETP__CM& other_value)
+{
+single_value.union_selection = other_value.get_selection();
+switch (single_value.union_selection) {
+case ETP__CM::ALT_extendedMessageRequestToSend:
+single_value.field_extendedMessageRequestToSend = new ExtendedMessageRequestToSend_template(other_value.extendedMessageRequestToSend());
+break;
+case ETP__CM::ALT_extendedMessageClearToSend:
+single_value.field_extendedMessageClearToSend = new ExtendedMessageClearToSend_template(other_value.extendedMessageClearToSend());
+break;
+case ETP__CM::ALT_extendedMessageDataPacketOffset:
+single_value.field_extendedMessageDataPacketOffset = new ExtendedMessageDataPacketOffset_template(other_value.extendedMessageDataPacketOffset());
+break;
+case ETP__CM::ALT_extendedMessageEndOfMessageAcknowledgement:
+single_value.field_extendedMessageEndOfMessageAcknowledgement = new ExtendedMessageEndOfMessageAcknowledgement_template(other_value.extendedMessageEndOfMessageAcknowledgement());
+break;
+case ETP__CM::ALT_extendedMessageConnectionAbort:
+single_value.field_extendedMessageConnectionAbort = new ExtendedMessageConnectionAbort_template(other_value.extendedMessageConnectionAbort());
+break;
+default:
+TTCN_error("Initializing a template with an unbound value of type @IsobusCMMessageTypes.ETP_CM.");
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ETP__CM_template::copy_template(const ETP__CM_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 ETP__CM::ALT_extendedMessageRequestToSend:
+single_value.field_extendedMessageRequestToSend = new ExtendedMessageRequestToSend_template(*other_value.single_value.field_extendedMessageRequestToSend);
+break;
+case ETP__CM::ALT_extendedMessageClearToSend:
+single_value.field_extendedMessageClearToSend = new ExtendedMessageClearToSend_template(*other_value.single_value.field_extendedMessageClearToSend);
+break;
+case ETP__CM::ALT_extendedMessageDataPacketOffset:
+single_value.field_extendedMessageDataPacketOffset = new ExtendedMessageDataPacketOffset_template(*other_value.single_value.field_extendedMessageDataPacketOffset);
+break;
+case ETP__CM::ALT_extendedMessageEndOfMessageAcknowledgement:
+single_value.field_extendedMessageEndOfMessageAcknowledgement = new ExtendedMessageEndOfMessageAcknowledgement_template(*other_value.single_value.field_extendedMessageEndOfMessageAcknowledgement);
+break;
+case ETP__CM::ALT_extendedMessageConnectionAbort:
+single_value.field_extendedMessageConnectionAbort = new ExtendedMessageConnectionAbort_template(*other_value.single_value.field_extendedMessageConnectionAbort);
+break;
+default:
+TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @IsobusCMMessageTypes.ETP_CM.");
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ETP__CM_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;
+default:
+TTCN_error("Copying an uninitialized template of union type @IsobusCMMessageTypes.ETP_CM.");
+}
+set_selection(other_value);
+}
+
+ETP__CM_template::ETP__CM_template()
+{
+}
+
+ETP__CM_template::ETP__CM_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ETP__CM_template::ETP__CM_template(const ETP__CM& other_value)
+{
+copy_value(other_value);
+}
+
+ETP__CM_template::ETP__CM_template(const OPTIONAL<ETP__CM>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ETP__CM&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of union type @IsobusCMMessageTypes.ETP_CM from an unbound optional field.");
+}
+}
+
+ETP__CM_template::ETP__CM_template(const ETP__CM_template& other_value)
+: Base_Template(){
+copy_template(other_value);
+}
+
+ETP__CM_template::~ETP__CM_template()
+{
+clean_up();
+}
+
+void ETP__CM_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case ETP__CM::ALT_extendedMessageRequestToSend:
+delete single_value.field_extendedMessageRequestToSend;
+break;
+case ETP__CM::ALT_extendedMessageClearToSend:
+delete single_value.field_extendedMessageClearToSend;
+break;
+case ETP__CM::ALT_extendedMessageDataPacketOffset:
+delete single_value.field_extendedMessageDataPacketOffset;
+break;
+case ETP__CM::ALT_extendedMessageEndOfMessageAcknowledgement:
+delete single_value.field_extendedMessageEndOfMessageAcknowledgement;
+break;
+case ETP__CM::ALT_extendedMessageConnectionAbort:
+delete single_value.field_extendedMessageConnectionAbort;
+default:
+break;
+}
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ETP__CM_template& ETP__CM_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ETP__CM_template& ETP__CM_template::operator=(const ETP__CM& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ETP__CM_template& ETP__CM_template::operator=(const OPTIONAL<ETP__CM>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ETP__CM&)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 @IsobusCMMessageTypes.ETP_CM.");
+}
+return *this;
+}
+
+ETP__CM_template& ETP__CM_template::operator=(const ETP__CM_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ETP__CM_template::match(const ETP__CM& 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:
+{
+ETP__CM::union_selection_type value_selection = other_value.get_selection();
+if (value_selection == ETP__CM::UNBOUND_VALUE) return FALSE;
+if (value_selection != single_value.union_selection) return FALSE;
+switch (value_selection) {
+case ETP__CM::ALT_extendedMessageRequestToSend:
+return single_value.field_extendedMessageRequestToSend->match(other_value.extendedMessageRequestToSend(), legacy);
+case ETP__CM::ALT_extendedMessageClearToSend:
+return single_value.field_extendedMessageClearToSend->match(other_value.extendedMessageClearToSend(), legacy);
+case ETP__CM::ALT_extendedMessageDataPacketOffset:
+return single_value.field_extendedMessageDataPacketOffset->match(other_value.extendedMessageDataPacketOffset(), legacy);
+case ETP__CM::ALT_extendedMessageEndOfMessageAcknowledgement:
+return single_value.field_extendedMessageEndOfMessageAcknowledgement->match(other_value.extendedMessageEndOfMessageAcknowledgement(), legacy);
+case ETP__CM::ALT_extendedMessageConnectionAbort:
+return single_value.field_extendedMessageConnectionAbort->match(other_value.extendedMessageConnectionAbort(), legacy);
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @IsobusCMMessageTypes.ETP_CM.");
+}
+}
+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;
+default:
+TTCN_error ("Matching an uninitialized template of union type @IsobusCMMessageTypes.ETP_CM.");
+}
+return FALSE;
+}
+
+boolean ETP__CM_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+switch (single_value.union_selection) {
+case ETP__CM::ALT_extendedMessageRequestToSend:
+return single_value.field_extendedMessageRequestToSend->is_value();
+case ETP__CM::ALT_extendedMessageClearToSend:
+return single_value.field_extendedMessageClearToSend->is_value();
+case ETP__CM::ALT_extendedMessageDataPacketOffset:
+return single_value.field_extendedMessageDataPacketOffset->is_value();
+case ETP__CM::ALT_extendedMessageEndOfMessageAcknowledgement:
+return single_value.field_extendedMessageEndOfMessageAcknowledgement->is_value();
+case ETP__CM::ALT_extendedMessageConnectionAbort:
+return single_value.field_extendedMessageConnectionAbort->is_value();
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @IsobusCMMessageTypes.ETP_CM.");
+}
+}
+
+ETP__CM ETP__CM_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 @IsobusCMMessageTypes.ETP_CM.");
+ETP__CM ret_val;
+switch (single_value.union_selection) {
+case ETP__CM::ALT_extendedMessageRequestToSend:
+ret_val.extendedMessageRequestToSend() = single_value.field_extendedMessageRequestToSend->valueof();
+break;
+case ETP__CM::ALT_extendedMessageClearToSend:
+ret_val.extendedMessageClearToSend() = single_value.field_extendedMessageClearToSend->valueof();
+break;
+case ETP__CM::ALT_extendedMessageDataPacketOffset:
+ret_val.extendedMessageDataPacketOffset() = single_value.field_extendedMessageDataPacketOffset->valueof();
+break;
+case ETP__CM::ALT_extendedMessageEndOfMessageAcknowledgement:
+ret_val.extendedMessageEndOfMessageAcknowledgement() = single_value.field_extendedMessageEndOfMessageAcknowledgement->valueof();
+break;
+case ETP__CM::ALT_extendedMessageConnectionAbort:
+ret_val.extendedMessageConnectionAbort() = single_value.field_extendedMessageConnectionAbort->valueof();
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @IsobusCMMessageTypes.ETP_CM.");
+}
+return ret_val;
+}
+
+ETP__CM_template& ETP__CM_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @IsobusCMMessageTypes.ETP_CM.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @IsobusCMMessageTypes.ETP_CM.");
+return value_list.list_value[list_index];
+}
+void ETP__CM_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error ("Internal error: Setting an invalid list for a template of union type @IsobusCMMessageTypes.ETP_CM.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ETP__CM_template[list_length];
+}
+
+ExtendedMessageRequestToSend_template& ETP__CM_template::extendedMessageRequestToSend()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ETP__CM::ALT_extendedMessageRequestToSend) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_extendedMessageRequestToSend = new ExtendedMessageRequestToSend_template(ANY_VALUE);
+else single_value.field_extendedMessageRequestToSend = new ExtendedMessageRequestToSend_template;
+single_value.union_selection = ETP__CM::ALT_extendedMessageRequestToSend;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_extendedMessageRequestToSend;
+}
+
+const ExtendedMessageRequestToSend_template& ETP__CM_template::extendedMessageRequestToSend() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field extendedMessageRequestToSend in a non-specific template of union type @IsobusCMMessageTypes.ETP_CM.");
+if (single_value.union_selection != ETP__CM::ALT_extendedMessageRequestToSend) TTCN_error("Accessing non-selected field extendedMessageRequestToSend in a template of union type @IsobusCMMessageTypes.ETP_CM.");
+return *single_value.field_extendedMessageRequestToSend;
+}
+
+ExtendedMessageClearToSend_template& ETP__CM_template::extendedMessageClearToSend()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ETP__CM::ALT_extendedMessageClearToSend) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_extendedMessageClearToSend = new ExtendedMessageClearToSend_template(ANY_VALUE);
+else single_value.field_extendedMessageClearToSend = new ExtendedMessageClearToSend_template;
+single_value.union_selection = ETP__CM::ALT_extendedMessageClearToSend;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_extendedMessageClearToSend;
+}
+
+const ExtendedMessageClearToSend_template& ETP__CM_template::extendedMessageClearToSend() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field extendedMessageClearToSend in a non-specific template of union type @IsobusCMMessageTypes.ETP_CM.");
+if (single_value.union_selection != ETP__CM::ALT_extendedMessageClearToSend) TTCN_error("Accessing non-selected field extendedMessageClearToSend in a template of union type @IsobusCMMessageTypes.ETP_CM.");
+return *single_value.field_extendedMessageClearToSend;
+}
+
+ExtendedMessageDataPacketOffset_template& ETP__CM_template::extendedMessageDataPacketOffset()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ETP__CM::ALT_extendedMessageDataPacketOffset) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_extendedMessageDataPacketOffset = new ExtendedMessageDataPacketOffset_template(ANY_VALUE);
+else single_value.field_extendedMessageDataPacketOffset = new ExtendedMessageDataPacketOffset_template;
+single_value.union_selection = ETP__CM::ALT_extendedMessageDataPacketOffset;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_extendedMessageDataPacketOffset;
+}
+
+const ExtendedMessageDataPacketOffset_template& ETP__CM_template::extendedMessageDataPacketOffset() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field extendedMessageDataPacketOffset in a non-specific template of union type @IsobusCMMessageTypes.ETP_CM.");
+if (single_value.union_selection != ETP__CM::ALT_extendedMessageDataPacketOffset) TTCN_error("Accessing non-selected field extendedMessageDataPacketOffset in a template of union type @IsobusCMMessageTypes.ETP_CM.");
+return *single_value.field_extendedMessageDataPacketOffset;
+}
+
+ExtendedMessageEndOfMessageAcknowledgement_template& ETP__CM_template::extendedMessageEndOfMessageAcknowledgement()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ETP__CM::ALT_extendedMessageEndOfMessageAcknowledgement) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_extendedMessageEndOfMessageAcknowledgement = new ExtendedMessageEndOfMessageAcknowledgement_template(ANY_VALUE);
+else single_value.field_extendedMessageEndOfMessageAcknowledgement = new ExtendedMessageEndOfMessageAcknowledgement_template;
+single_value.union_selection = ETP__CM::ALT_extendedMessageEndOfMessageAcknowledgement;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_extendedMessageEndOfMessageAcknowledgement;
+}
+
+const ExtendedMessageEndOfMessageAcknowledgement_template& ETP__CM_template::extendedMessageEndOfMessageAcknowledgement() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field extendedMessageEndOfMessageAcknowledgement in a non-specific template of union type @IsobusCMMessageTypes.ETP_CM.");
+if (single_value.union_selection != ETP__CM::ALT_extendedMessageEndOfMessageAcknowledgement) TTCN_error("Accessing non-selected field extendedMessageEndOfMessageAcknowledgement in a template of union type @IsobusCMMessageTypes.ETP_CM.");
+return *single_value.field_extendedMessageEndOfMessageAcknowledgement;
+}
+
+ExtendedMessageConnectionAbort_template& ETP__CM_template::extendedMessageConnectionAbort()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ETP__CM::ALT_extendedMessageConnectionAbort) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_extendedMessageConnectionAbort = new ExtendedMessageConnectionAbort_template(ANY_VALUE);
+else single_value.field_extendedMessageConnectionAbort = new ExtendedMessageConnectionAbort_template;
+single_value.union_selection = ETP__CM::ALT_extendedMessageConnectionAbort;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_extendedMessageConnectionAbort;
+}
+
+const ExtendedMessageConnectionAbort_template& ETP__CM_template::extendedMessageConnectionAbort() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field extendedMessageConnectionAbort in a non-specific template of union type @IsobusCMMessageTypes.ETP_CM.");
+if (single_value.union_selection != ETP__CM::ALT_extendedMessageConnectionAbort) TTCN_error("Accessing non-selected field extendedMessageConnectionAbort in a template of union type @IsobusCMMessageTypes.ETP_CM.");
+return *single_value.field_extendedMessageConnectionAbort;
+}
+
+boolean ETP__CM_template::ischosen(ETP__CM::union_selection_type checked_selection) const
+{
+if (checked_selection == ETP__CM::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @IsobusCMMessageTypes.ETP_CM.");
+switch (template_selection) {
+case SPECIFIC_VALUE:
+if (single_value.union_selection == ETP__CM::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @IsobusCMMessageTypes.ETP_CM.");
+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 @IsobusCMMessageTypes.ETP_CM 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 ETP__CM_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case ETP__CM::ALT_extendedMessageRequestToSend:
+TTCN_Logger::log_event_str("{ extendedMessageRequestToSend := ");
+single_value.field_extendedMessageRequestToSend->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ETP__CM::ALT_extendedMessageClearToSend:
+TTCN_Logger::log_event_str("{ extendedMessageClearToSend := ");
+single_value.field_extendedMessageClearToSend->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ETP__CM::ALT_extendedMessageDataPacketOffset:
+TTCN_Logger::log_event_str("{ extendedMessageDataPacketOffset := ");
+single_value.field_extendedMessageDataPacketOffset->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ETP__CM::ALT_extendedMessageEndOfMessageAcknowledgement:
+TTCN_Logger::log_event_str("{ extendedMessageEndOfMessageAcknowledgement := ");
+single_value.field_extendedMessageEndOfMessageAcknowledgement->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ETP__CM::ALT_extendedMessageConnectionAbort:
+TTCN_Logger::log_event_str("{ extendedMessageConnectionAbort := ");
+single_value.field_extendedMessageConnectionAbort->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 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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ETP__CM_template::log_match(const ETP__CM& 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()) {
+switch (single_value.union_selection) {
+case ETP__CM::ALT_extendedMessageRequestToSend:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".extendedMessageRequestToSend");
+single_value.field_extendedMessageRequestToSend->log_match(match_value.extendedMessageRequestToSend(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ extendedMessageRequestToSend := ");
+single_value.field_extendedMessageRequestToSend->log_match(match_value.extendedMessageRequestToSend(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ETP__CM::ALT_extendedMessageClearToSend:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".extendedMessageClearToSend");
+single_value.field_extendedMessageClearToSend->log_match(match_value.extendedMessageClearToSend(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ extendedMessageClearToSend := ");
+single_value.field_extendedMessageClearToSend->log_match(match_value.extendedMessageClearToSend(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ETP__CM::ALT_extendedMessageDataPacketOffset:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".extendedMessageDataPacketOffset");
+single_value.field_extendedMessageDataPacketOffset->log_match(match_value.extendedMessageDataPacketOffset(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ extendedMessageDataPacketOffset := ");
+single_value.field_extendedMessageDataPacketOffset->log_match(match_value.extendedMessageDataPacketOffset(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ETP__CM::ALT_extendedMessageEndOfMessageAcknowledgement:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".extendedMessageEndOfMessageAcknowledgement");
+single_value.field_extendedMessageEndOfMessageAcknowledgement->log_match(match_value.extendedMessageEndOfMessageAcknowledgement(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ extendedMessageEndOfMessageAcknowledgement := ");
+single_value.field_extendedMessageEndOfMessageAcknowledgement->log_match(match_value.extendedMessageEndOfMessageAcknowledgement(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ETP__CM::ALT_extendedMessageConnectionAbort:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".extendedMessageConnectionAbort");
+single_value.field_extendedMessageConnectionAbort->log_match(match_value.extendedMessageConnectionAbort(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ extendedMessageConnectionAbort := ");
+single_value.field_extendedMessageConnectionAbort->log_match(match_value.extendedMessageConnectionAbort(), 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 ETP__CM_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 ETP__CM::ALT_extendedMessageRequestToSend:
+single_value.field_extendedMessageRequestToSend->encode_text(text_buf);
+break;
+case ETP__CM::ALT_extendedMessageClearToSend:
+single_value.field_extendedMessageClearToSend->encode_text(text_buf);
+break;
+case ETP__CM::ALT_extendedMessageDataPacketOffset:
+single_value.field_extendedMessageDataPacketOffset->encode_text(text_buf);
+break;
+case ETP__CM::ALT_extendedMessageEndOfMessageAcknowledgement:
+single_value.field_extendedMessageEndOfMessageAcknowledgement->encode_text(text_buf);
+break;
+case ETP__CM::ALT_extendedMessageConnectionAbort:
+single_value.field_extendedMessageConnectionAbort->encode_text(text_buf);
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @IsobusCMMessageTypes.ETP_CM.");
+}
+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 @IsobusCMMessageTypes.ETP_CM.");
+}
+}
+
+void ETP__CM_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+{
+single_value.union_selection = ETP__CM::UNBOUND_VALUE;
+ETP__CM::union_selection_type new_selection = (ETP__CM::union_selection_type)text_buf.pull_int().get_val();
+switch (new_selection) {
+case ETP__CM::ALT_extendedMessageRequestToSend:
+single_value.field_extendedMessageRequestToSend = new ExtendedMessageRequestToSend_template;
+single_value.field_extendedMessageRequestToSend->decode_text(text_buf);
+break;
+case ETP__CM::ALT_extendedMessageClearToSend:
+single_value.field_extendedMessageClearToSend = new ExtendedMessageClearToSend_template;
+single_value.field_extendedMessageClearToSend->decode_text(text_buf);
+break;
+case ETP__CM::ALT_extendedMessageDataPacketOffset:
+single_value.field_extendedMessageDataPacketOffset = new ExtendedMessageDataPacketOffset_template;
+single_value.field_extendedMessageDataPacketOffset->decode_text(text_buf);
+break;
+case ETP__CM::ALT_extendedMessageEndOfMessageAcknowledgement:
+single_value.field_extendedMessageEndOfMessageAcknowledgement = new ExtendedMessageEndOfMessageAcknowledgement_template;
+single_value.field_extendedMessageEndOfMessageAcknowledgement->decode_text(text_buf);
+break;
+case ETP__CM::ALT_extendedMessageConnectionAbort:
+single_value.field_extendedMessageConnectionAbort = new ExtendedMessageConnectionAbort_template;
+single_value.field_extendedMessageConnectionAbort->decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @IsobusCMMessageTypes.ETP_CM.");
+}
+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 ETP__CM_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 @IsobusCMMessageTypes.ETP_CM.");
+}
+}
+
+boolean ETP__CM_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ETP__CM_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 ETP__CM_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 `@IsobusCMMessageTypes.ETP_CM'");
+    }
+    if (strcmp("extendedMessageRequestToSend", param_field) == 0) {
+      extendedMessageRequestToSend().set_param(param);
+      return;
+    } else if (strcmp("extendedMessageClearToSend", param_field) == 0) {
+      extendedMessageClearToSend().set_param(param);
+      return;
+    } else if (strcmp("extendedMessageDataPacketOffset", param_field) == 0) {
+      extendedMessageDataPacketOffset().set_param(param);
+      return;
+    } else if (strcmp("extendedMessageEndOfMessageAcknowledgement", param_field) == 0) {
+      extendedMessageEndOfMessageAcknowledgement().set_param(param);
+      return;
+    } else if (strcmp("extendedMessageConnectionAbort", param_field) == 0) {
+      extendedMessageConnectionAbort().set_param(param);
+      return;
+    } else param.error("Field `%s' not found in union template type `@IsobusCMMessageTypes.ETP_CM'", 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: {
+    ETP__CM_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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", "@IsobusCMMessageTypes.ETP_CM");
+    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, "extendedMessageRequestToSend")) {
+      extendedMessageRequestToSend().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "extendedMessageClearToSend")) {
+      extendedMessageClearToSend().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "extendedMessageDataPacketOffset")) {
+      extendedMessageDataPacketOffset().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "extendedMessageEndOfMessageAcknowledgement")) {
+      extendedMessageEndOfMessageAcknowledgement().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "extendedMessageConnectionAbort")) {
+      extendedMessageConnectionAbort().set_param(*mp_last);
+      break;
+    }
+    mp_last->error("Field %s does not exist in type @IsobusCMMessageTypes.ETP_CM.", last_name);
+  } break;
+  default:
+    param.type_error("union template", "@IsobusCMMessageTypes.ETP_CM");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ETP__CM_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 ETP__CM::ALT_extendedMessageRequestToSend:
+single_value.field_extendedMessageRequestToSend->check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.ETP_CM");
+return;
+case ETP__CM::ALT_extendedMessageClearToSend:
+single_value.field_extendedMessageClearToSend->check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.ETP_CM");
+return;
+case ETP__CM::ALT_extendedMessageDataPacketOffset:
+single_value.field_extendedMessageDataPacketOffset->check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.ETP_CM");
+return;
+case ETP__CM::ALT_extendedMessageEndOfMessageAcknowledgement:
+single_value.field_extendedMessageEndOfMessageAcknowledgement->check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.ETP_CM");
+return;
+case ETP__CM::ALT_extendedMessageConnectionAbort:
+single_value.field_extendedMessageConnectionAbort->check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.ETP_CM");
+return;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @IsobusCMMessageTypes.ETP_CM.");
+}
+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 : "@IsobusCMMessageTypes.ETP_CM");
+}
+
+TP__DT::TP__DT()
+{
+}
+
+TP__DT::TP__DT(const INTEGER& par_seq__no,
+    const OCTETSTRING& par_data)
+  :   field_seq__no(par_seq__no),
+  field_data(par_data)
+{
+}
+
+TP__DT::TP__DT(const TP__DT& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusCMMessageTypes.TP_DT.");
+if (other_value.seq__no().is_bound()) field_seq__no = other_value.seq__no();
+else field_seq__no.clean_up();
+if (other_value.data().is_bound()) field_data = other_value.data();
+else field_data.clean_up();
+}
+
+void TP__DT::clean_up()
+{
+field_seq__no.clean_up();
+field_data.clean_up();
+}
+
+const TTCN_Typedescriptor_t* TP__DT::get_descriptor() const { return &TP__DT_descr_; }
+TP__DT& TP__DT::operator=(const TP__DT& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusCMMessageTypes.TP_DT.");
+  if (other_value.seq__no().is_bound()) field_seq__no = other_value.seq__no();
+  else field_seq__no.clean_up();
+  if (other_value.data().is_bound()) field_data = other_value.data();
+  else field_data.clean_up();
+}
+return *this;
+}
+
+boolean TP__DT::operator==(const TP__DT& other_value) const
+{
+return field_seq__no==other_value.field_seq__no
+  && field_data==other_value.field_data;
+}
+
+boolean TP__DT::is_bound() const
+{
+return (field_seq__no.is_bound())
+  || (field_data.is_bound());
+}
+boolean TP__DT::is_value() const
+{
+return field_seq__no.is_value()
+  && field_data.is_value();
+}
+void TP__DT::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ seq_no := ");
+field_seq__no.log();
+TTCN_Logger::log_event_str(", data := ");
+field_data.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void TP__DT::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 @IsobusCMMessageTypes.TP_DT 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) seq__no().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) data().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(), "seq_no")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          seq__no().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(), "data")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          data().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 @IsobusCMMessageTypes.TP_DT: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusCMMessageTypes.TP_DT");
+  }
+}
+
+void TP__DT::set_implicit_omit()
+{
+if (seq__no().is_bound()) seq__no().set_implicit_omit();
+if (data().is_bound()) data().set_implicit_omit();
+}
+
+void TP__DT::encode_text(Text_Buf& text_buf) const
+{
+field_seq__no.encode_text(text_buf);
+field_data.encode_text(text_buf);
+}
+
+void TP__DT::decode_text(Text_Buf& text_buf)
+{
+field_seq__no.decode_text(text_buf);
+field_data.decode_text(text_buf);
+}
+
+void TP__DT::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void TP__DT::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int TP__DT::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, SEQ__NO_descr_.raw->forceomit);
+  decoded_field_length = field_seq__no.RAW_decode(SEQ__NO_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::OCT7_descr_.raw->forceomit);
+  decoded_field_length = field_data.RAW_decode(General__Types::OCT7_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 TP__DT::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, SEQ__NO_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, General__Types::OCT7_descr_.raw);
+  encoded_length += field_seq__no.RAW_encode(SEQ__NO_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_data.RAW_encode(General__Types::OCT7_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct TP__DT_template::single_value_struct {
+INTEGER_template field_seq__no;
+OCTETSTRING_template field_data;
+};
+
+void TP__DT_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_seq__no = ANY_VALUE;
+single_value->field_data = ANY_VALUE;
+}
+}
+}
+
+void TP__DT_template::copy_value(const TP__DT& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.seq__no().is_bound()) {
+  single_value->field_seq__no = other_value.seq__no();
+} else {
+  single_value->field_seq__no.clean_up();
+}
+if (other_value.data().is_bound()) {
+  single_value->field_data = other_value.data();
+} else {
+  single_value->field_data.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void TP__DT_template::copy_template(const TP__DT_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.seq__no().get_selection()) {
+single_value->field_seq__no = other_value.seq__no();
+} else {
+single_value->field_seq__no.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.data().get_selection()) {
+single_value->field_data = other_value.data();
+} else {
+single_value->field_data.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new TP__DT_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusCMMessageTypes.TP_DT.");
+break;
+}
+set_selection(other_value);
+}
+
+TP__DT_template::TP__DT_template()
+{
+}
+
+TP__DT_template::TP__DT_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+TP__DT_template::TP__DT_template(const TP__DT& other_value)
+{
+copy_value(other_value);
+}
+
+TP__DT_template::TP__DT_template(const OPTIONAL<TP__DT>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const TP__DT&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusCMMessageTypes.TP_DT from an unbound optional field.");
+}
+}
+
+TP__DT_template::TP__DT_template(const TP__DT_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+TP__DT_template::~TP__DT_template()
+{
+clean_up();
+}
+
+TP__DT_template& TP__DT_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+TP__DT_template& TP__DT_template::operator=(const TP__DT& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+TP__DT_template& TP__DT_template::operator=(const OPTIONAL<TP__DT>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const TP__DT&)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 @IsobusCMMessageTypes.TP_DT.");
+}
+return *this;
+}
+
+TP__DT_template& TP__DT_template::operator=(const TP__DT_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean TP__DT_template::match(const TP__DT& 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.seq__no().is_bound()) return FALSE;
+if(!single_value->field_seq__no.match(other_value.seq__no(), legacy))return FALSE;
+if(!other_value.data().is_bound()) return FALSE;
+if(!single_value->field_data.match(other_value.data(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusCMMessageTypes.TP_DT.");
+}
+return FALSE;
+}
+
+boolean TP__DT_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_seq__no.is_bound()
+
+ ||single_value->field_data.is_bound()
+;
+}
+
+boolean TP__DT_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_seq__no.is_value()
+ &&single_value->field_data.is_value();
+}
+
+void TP__DT_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+TP__DT TP__DT_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 @IsobusCMMessageTypes.TP_DT.");
+TP__DT ret_val;
+if (single_value->field_seq__no.is_bound()) {
+ret_val.seq__no() = single_value->field_seq__no.valueof();
+}
+if (single_value->field_data.is_bound()) {
+ret_val.data() = single_value->field_data.valueof();
+}
+return ret_val;
+}
+
+void TP__DT_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusCMMessageTypes.TP_DT.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new TP__DT_template[list_length];
+}
+
+TP__DT_template& TP__DT_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusCMMessageTypes.TP_DT.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusCMMessageTypes.TP_DT.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& TP__DT_template::seq__no()
+{
+set_specific();
+return single_value->field_seq__no;
+}
+
+const INTEGER_template& TP__DT_template::seq__no() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field seq_no of a non-specific template of type @IsobusCMMessageTypes.TP_DT.");
+return single_value->field_seq__no;
+}
+
+OCTETSTRING_template& TP__DT_template::data()
+{
+set_specific();
+return single_value->field_data;
+}
+
+const OCTETSTRING_template& TP__DT_template::data() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field data of a non-specific template of type @IsobusCMMessageTypes.TP_DT.");
+return single_value->field_data;
+}
+
+int TP__DT_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.TP_DT 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 @IsobusCMMessageTypes.TP_DT 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 @IsobusCMMessageTypes.TP_DT containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.TP_DT containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.TP_DT containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.TP_DT containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusCMMessageTypes.TP_DT.");
+  }
+  return 0;
+}
+
+void TP__DT_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ seq_no := ");
+single_value->field_seq__no.log();
+TTCN_Logger::log_event_str(", data := ");
+single_value->field_data.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void TP__DT_template::log_match(const TP__DT& 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_seq__no.match(match_value.seq__no(), legacy)){
+TTCN_Logger::log_logmatch_info(".seq_no");
+single_value->field_seq__no.log_match(match_value.seq__no(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_data.match(match_value.data(), legacy)){
+TTCN_Logger::log_logmatch_info(".data");
+single_value->field_data.log_match(match_value.data(), 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("{ seq_no := ");
+single_value->field_seq__no.log_match(match_value.seq__no(), legacy);
+TTCN_Logger::log_event_str(", data := ");
+single_value->field_data.log_match(match_value.data(), 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 TP__DT_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_seq__no.encode_text(text_buf);
+single_value->field_data.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 @IsobusCMMessageTypes.TP_DT.");
+}
+}
+
+void TP__DT_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_seq__no.decode_text(text_buf);
+single_value->field_data.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 TP__DT_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 @IsobusCMMessageTypes.TP_DT.");
+}
+}
+
+void TP__DT_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: {
+    TP__DT_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusCMMessageTypes.TP_DT 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) seq__no().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) data().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(), "seq_no")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          seq__no().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(), "data")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          data().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 @IsobusCMMessageTypes.TP_DT: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusCMMessageTypes.TP_DT");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void TP__DT_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_seq__no.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.TP_DT");
+single_value->field_data.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.TP_DT");
+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 : "@IsobusCMMessageTypes.TP_DT");
+}
+
+boolean TP__DT_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean TP__DT_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ETP__DT::ETP__DT()
+{
+}
+
+ETP__DT::ETP__DT(const INTEGER& par_seq__no,
+    const OCTETSTRING& par_data)
+  :   field_seq__no(par_seq__no),
+  field_data(par_data)
+{
+}
+
+ETP__DT::ETP__DT(const ETP__DT& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusCMMessageTypes.ETP_DT.");
+if (other_value.seq__no().is_bound()) field_seq__no = other_value.seq__no();
+else field_seq__no.clean_up();
+if (other_value.data().is_bound()) field_data = other_value.data();
+else field_data.clean_up();
+}
+
+void ETP__DT::clean_up()
+{
+field_seq__no.clean_up();
+field_data.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ETP__DT::get_descriptor() const { return &ETP__DT_descr_; }
+ETP__DT& ETP__DT::operator=(const ETP__DT& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusCMMessageTypes.ETP_DT.");
+  if (other_value.seq__no().is_bound()) field_seq__no = other_value.seq__no();
+  else field_seq__no.clean_up();
+  if (other_value.data().is_bound()) field_data = other_value.data();
+  else field_data.clean_up();
+}
+return *this;
+}
+
+boolean ETP__DT::operator==(const ETP__DT& other_value) const
+{
+return field_seq__no==other_value.field_seq__no
+  && field_data==other_value.field_data;
+}
+
+boolean ETP__DT::is_bound() const
+{
+return (field_seq__no.is_bound())
+  || (field_data.is_bound());
+}
+boolean ETP__DT::is_value() const
+{
+return field_seq__no.is_value()
+  && field_data.is_value();
+}
+void ETP__DT::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ seq_no := ");
+field_seq__no.log();
+TTCN_Logger::log_event_str(", data := ");
+field_data.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ETP__DT::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 @IsobusCMMessageTypes.ETP_DT 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) seq__no().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) data().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(), "seq_no")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          seq__no().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(), "data")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          data().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 @IsobusCMMessageTypes.ETP_DT: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusCMMessageTypes.ETP_DT");
+  }
+}
+
+void ETP__DT::set_implicit_omit()
+{
+if (seq__no().is_bound()) seq__no().set_implicit_omit();
+if (data().is_bound()) data().set_implicit_omit();
+}
+
+void ETP__DT::encode_text(Text_Buf& text_buf) const
+{
+field_seq__no.encode_text(text_buf);
+field_data.encode_text(text_buf);
+}
+
+void ETP__DT::decode_text(Text_Buf& text_buf)
+{
+field_seq__no.decode_text(text_buf);
+field_data.decode_text(text_buf);
+}
+
+void ETP__DT::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ETP__DT::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ETP__DT::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, SEQ__NO_descr_.raw->forceomit);
+  decoded_field_length = field_seq__no.RAW_decode(SEQ__NO_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::OCT7_descr_.raw->forceomit);
+  decoded_field_length = field_data.RAW_decode(General__Types::OCT7_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 ETP__DT::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, SEQ__NO_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, General__Types::OCT7_descr_.raw);
+  encoded_length += field_seq__no.RAW_encode(SEQ__NO_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_data.RAW_encode(General__Types::OCT7_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct ETP__DT_template::single_value_struct {
+INTEGER_template field_seq__no;
+OCTETSTRING_template field_data;
+};
+
+void ETP__DT_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_seq__no = ANY_VALUE;
+single_value->field_data = ANY_VALUE;
+}
+}
+}
+
+void ETP__DT_template::copy_value(const ETP__DT& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.seq__no().is_bound()) {
+  single_value->field_seq__no = other_value.seq__no();
+} else {
+  single_value->field_seq__no.clean_up();
+}
+if (other_value.data().is_bound()) {
+  single_value->field_data = other_value.data();
+} else {
+  single_value->field_data.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ETP__DT_template::copy_template(const ETP__DT_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.seq__no().get_selection()) {
+single_value->field_seq__no = other_value.seq__no();
+} else {
+single_value->field_seq__no.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.data().get_selection()) {
+single_value->field_data = other_value.data();
+} else {
+single_value->field_data.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ETP__DT_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusCMMessageTypes.ETP_DT.");
+break;
+}
+set_selection(other_value);
+}
+
+ETP__DT_template::ETP__DT_template()
+{
+}
+
+ETP__DT_template::ETP__DT_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ETP__DT_template::ETP__DT_template(const ETP__DT& other_value)
+{
+copy_value(other_value);
+}
+
+ETP__DT_template::ETP__DT_template(const OPTIONAL<ETP__DT>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ETP__DT&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusCMMessageTypes.ETP_DT from an unbound optional field.");
+}
+}
+
+ETP__DT_template::ETP__DT_template(const ETP__DT_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ETP__DT_template::~ETP__DT_template()
+{
+clean_up();
+}
+
+ETP__DT_template& ETP__DT_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ETP__DT_template& ETP__DT_template::operator=(const ETP__DT& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ETP__DT_template& ETP__DT_template::operator=(const OPTIONAL<ETP__DT>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ETP__DT&)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 @IsobusCMMessageTypes.ETP_DT.");
+}
+return *this;
+}
+
+ETP__DT_template& ETP__DT_template::operator=(const ETP__DT_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ETP__DT_template::match(const ETP__DT& 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.seq__no().is_bound()) return FALSE;
+if(!single_value->field_seq__no.match(other_value.seq__no(), legacy))return FALSE;
+if(!other_value.data().is_bound()) return FALSE;
+if(!single_value->field_data.match(other_value.data(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusCMMessageTypes.ETP_DT.");
+}
+return FALSE;
+}
+
+boolean ETP__DT_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_seq__no.is_bound()
+
+ ||single_value->field_data.is_bound()
+;
+}
+
+boolean ETP__DT_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_seq__no.is_value()
+ &&single_value->field_data.is_value();
+}
+
+void ETP__DT_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ETP__DT ETP__DT_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 @IsobusCMMessageTypes.ETP_DT.");
+ETP__DT ret_val;
+if (single_value->field_seq__no.is_bound()) {
+ret_val.seq__no() = single_value->field_seq__no.valueof();
+}
+if (single_value->field_data.is_bound()) {
+ret_val.data() = single_value->field_data.valueof();
+}
+return ret_val;
+}
+
+void ETP__DT_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusCMMessageTypes.ETP_DT.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ETP__DT_template[list_length];
+}
+
+ETP__DT_template& ETP__DT_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusCMMessageTypes.ETP_DT.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusCMMessageTypes.ETP_DT.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ETP__DT_template::seq__no()
+{
+set_specific();
+return single_value->field_seq__no;
+}
+
+const INTEGER_template& ETP__DT_template::seq__no() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field seq_no of a non-specific template of type @IsobusCMMessageTypes.ETP_DT.");
+return single_value->field_seq__no;
+}
+
+OCTETSTRING_template& ETP__DT_template::data()
+{
+set_specific();
+return single_value->field_data;
+}
+
+const OCTETSTRING_template& ETP__DT_template::data() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field data of a non-specific template of type @IsobusCMMessageTypes.ETP_DT.");
+return single_value->field_data;
+}
+
+int ETP__DT_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.ETP_DT 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 @IsobusCMMessageTypes.ETP_DT 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 @IsobusCMMessageTypes.ETP_DT containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.ETP_DT containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.ETP_DT containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusCMMessageTypes.ETP_DT containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusCMMessageTypes.ETP_DT.");
+  }
+  return 0;
+}
+
+void ETP__DT_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ seq_no := ");
+single_value->field_seq__no.log();
+TTCN_Logger::log_event_str(", data := ");
+single_value->field_data.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ETP__DT_template::log_match(const ETP__DT& 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_seq__no.match(match_value.seq__no(), legacy)){
+TTCN_Logger::log_logmatch_info(".seq_no");
+single_value->field_seq__no.log_match(match_value.seq__no(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_data.match(match_value.data(), legacy)){
+TTCN_Logger::log_logmatch_info(".data");
+single_value->field_data.log_match(match_value.data(), 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("{ seq_no := ");
+single_value->field_seq__no.log_match(match_value.seq__no(), legacy);
+TTCN_Logger::log_event_str(", data := ");
+single_value->field_data.log_match(match_value.data(), 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 ETP__DT_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_seq__no.encode_text(text_buf);
+single_value->field_data.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 @IsobusCMMessageTypes.ETP_DT.");
+}
+}
+
+void ETP__DT_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_seq__no.decode_text(text_buf);
+single_value->field_data.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 ETP__DT_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 @IsobusCMMessageTypes.ETP_DT.");
+}
+}
+
+void ETP__DT_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: {
+    ETP__DT_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusCMMessageTypes.ETP_DT 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) seq__no().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) data().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(), "seq_no")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          seq__no().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(), "data")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          data().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 @IsobusCMMessageTypes.ETP_DT: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusCMMessageTypes.ETP_DT");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ETP__DT_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_seq__no.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.ETP_DT");
+single_value->field_data.check_restriction(t_res, t_name ? t_name : "@IsobusCMMessageTypes.ETP_DT");
+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 : "@IsobusCMMessageTypes.ETP_DT");
+}
+
+boolean ETP__DT_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ETP__DT_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+
+/* Bodies of static functions */
+
+static void pre_init_module()
+{
+TTCN_Location current_location("IsobusCMMessageTypes.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "IsobusCMMessageTypes");
+General__Types::module_object.pre_init_module();
+IsobusMessageTypes::module_object.pre_init_module();
+}
+
+static void post_init_module()
+{
+TTCN_Location current_location("IsobusCMMessageTypes.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "IsobusCMMessageTypes");
+General__Types::module_object.post_init_module();
+IsobusMessageTypes::module_object.post_init_module();
+}
+
+
+} /* end of namespace */
diff --git a/demo/IsobusCMMessageTypes.d b/demo/IsobusCMMessageTypes.d
new file mode 100644
index 0000000..92b4173
--- /dev/null
+++ b/demo/IsobusCMMessageTypes.d
@@ -0,0 +1,59 @@
+IsobusCMMessageTypes.o IsobusCMMessageTypes.d : IsobusCMMessageTypes.cc IsobusCMMessageTypes.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TTCN3.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/version.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/cversion.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Types.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Vector.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Error.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Basetype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Encdec.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RInt.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON_Tokenizer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Logger.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Template.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Integer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ttcn3float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Boolean.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Null.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Optional.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Param_Types.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/memory.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/BER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Textbuf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Parameters.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XmlReader.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Objid.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Verdicttype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Component.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Bitstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RAW.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/CharCoding.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Hexstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Octetstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Any.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Universal_charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Struct_of.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Array.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_CharacterString.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_External.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TEXT.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_EmbeddedPDV.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Addfunc.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Timer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Port.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Event_Handler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/TitanLoggerApiSimple.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/PreGenRecordOf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Module_list.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Snapshot.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Default.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Runtime.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/OER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Profiler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ProfilerTools.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Debugger.hh \
+ General_Types.hh IsobusMessageTypes.hh
diff --git a/demo/IsobusCMMessageTypes.hh b/demo/IsobusCMMessageTypes.hh
new file mode 100644
index 0000000..1d9034a
--- /dev/null
+++ b/demo/IsobusCMMessageTypes.hh
@@ -0,0 +1,2033 @@
+// This C++ header file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+#ifndef IsobusCMMessageTypes_HH
+#define IsobusCMMessageTypes_HH
+
+#ifdef TITAN_RUNTIME_2
+#error Generated code does not match with used runtime.\
+ Code was generated without -R option but -DTITAN_RUNTIME_2 was used.
+#endif
+
+/* Header file includes */
+
+#include <TTCN3.hh>
+#include "General_Types.hh"
+#include "IsobusMessageTypes.hh"
+
+#if TTCN3_VERSION != 60600
+#error Version mismatch detected.\
+ Please check the version of the TTCN-3 compiler and the base library.\
+ Run make clean and rebuild the project if the version of the compiler changed recently.
+#endif
+
+#ifndef LINUX
+#error This file should be compiled on LINUX
+#endif
+
+#undef IsobusCMMessageTypes_HH
+#endif
+
+namespace IsobusCMMessageTypes {
+
+/* Forward declarations of classes */
+
+class RequestToSend;
+class RequestToSend_template;
+class ClearToSend;
+class ClearToSend_template;
+class EndOfMessageAcknowledgement;
+class EndOfMessageAcknowledgement_template;
+class e__ConnectionAbort__AbortReason;
+class e__ConnectionAbort__AbortReason_template;
+class ConnectionAbort;
+class ConnectionAbort_template;
+class BroadcastAnnounce;
+class BroadcastAnnounce_template;
+class TP__CM;
+class TP__CM_template;
+class ExtendedMessageRequestToSend;
+class ExtendedMessageRequestToSend_template;
+class ExtendedMessageClearToSend;
+class ExtendedMessageClearToSend_template;
+class ExtendedMessageDataPacketOffset;
+class ExtendedMessageDataPacketOffset_template;
+class ExtendedMessageEndOfMessageAcknowledgement;
+class ExtendedMessageEndOfMessageAcknowledgement_template;
+class e__ETP__ConnectionAbort__AbortReason;
+class e__ETP__ConnectionAbort__AbortReason_template;
+class ExtendedMessageConnectionAbort;
+class ExtendedMessageConnectionAbort_template;
+class ETP__CM;
+class ETP__CM_template;
+class TP__DT;
+class TP__DT_template;
+class ETP__DT;
+class ETP__DT_template;
+
+} /* end of namespace */
+
+#ifndef IsobusCMMessageTypes_HH
+#define IsobusCMMessageTypes_HH
+
+namespace IsobusCMMessageTypes {
+
+/* Type definitions */
+
+typedef INTEGER SEQ__NO;
+typedef INTEGER_template SEQ__NO_template;
+typedef INTEGER NUMBER__OF__PACKETS;
+typedef INTEGER_template NUMBER__OF__PACKETS_template;
+typedef OCTETSTRING Ctrl;
+typedef OCTETSTRING_template Ctrl_template;
+typedef INTEGER ETP__MSG__SIZE;
+typedef INTEGER_template ETP__MSG__SIZE_template;
+typedef INTEGER ETP__NextPacketNumberToSend;
+typedef INTEGER_template ETP__NextPacketNumberToSend_template;
+typedef INTEGER ETP__NoPacketForOffset;
+typedef INTEGER_template ETP__NoPacketForOffset_template;
+
+/* Class definitions */
+
+class RequestToSend : public Base_Type {
+  OCTETSTRING field_ctrl;
+  INTEGER field_msgSizeInBytes;
+  INTEGER field_totalNumberOfPackets;
+  INTEGER field_maxNoOfPacketsInResponseToCTS;
+  INTEGER field_pgnOfMultiPacketMessage;
+public:
+  RequestToSend();
+  RequestToSend(const OCTETSTRING& par_ctrl,
+    const INTEGER& par_msgSizeInBytes,
+    const INTEGER& par_totalNumberOfPackets,
+    const INTEGER& par_maxNoOfPacketsInResponseToCTS,
+    const INTEGER& par_pgnOfMultiPacketMessage);
+  RequestToSend(const RequestToSend& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  RequestToSend& operator=(const RequestToSend& other_value);
+  boolean operator==(const RequestToSend& other_value) const;
+  inline boolean operator!=(const RequestToSend& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& ctrl()
+    {return field_ctrl;}
+  inline const OCTETSTRING& ctrl() const
+    {return field_ctrl;}
+  inline INTEGER& msgSizeInBytes()
+    {return field_msgSizeInBytes;}
+  inline const INTEGER& msgSizeInBytes() const
+    {return field_msgSizeInBytes;}
+  inline INTEGER& totalNumberOfPackets()
+    {return field_totalNumberOfPackets;}
+  inline const INTEGER& totalNumberOfPackets() const
+    {return field_totalNumberOfPackets;}
+  inline INTEGER& maxNoOfPacketsInResponseToCTS()
+    {return field_maxNoOfPacketsInResponseToCTS;}
+  inline const INTEGER& maxNoOfPacketsInResponseToCTS() const
+    {return field_maxNoOfPacketsInResponseToCTS;}
+  inline INTEGER& pgnOfMultiPacketMessage()
+    {return field_pgnOfMultiPacketMessage;}
+  inline const INTEGER& pgnOfMultiPacketMessage() const
+    {return field_pgnOfMultiPacketMessage;}
+  inline int size_of() const
+    {return 5;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class RequestToSend_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+RequestToSend_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const RequestToSend& other_value);
+void copy_template(const RequestToSend_template& other_value);
+
+public:
+RequestToSend_template();
+RequestToSend_template(template_sel other_value);
+RequestToSend_template(const RequestToSend& other_value);
+RequestToSend_template(const OPTIONAL<RequestToSend>& other_value);
+RequestToSend_template(const RequestToSend_template& other_value);
+~RequestToSend_template();
+RequestToSend_template& operator=(template_sel other_value);
+RequestToSend_template& operator=(const RequestToSend& other_value);
+RequestToSend_template& operator=(const OPTIONAL<RequestToSend>& other_value);
+RequestToSend_template& operator=(const RequestToSend_template& other_value);
+boolean match(const RequestToSend& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+RequestToSend valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+RequestToSend_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& ctrl();
+const OCTETSTRING_template& ctrl() const;
+INTEGER_template& msgSizeInBytes();
+const INTEGER_template& msgSizeInBytes() const;
+INTEGER_template& totalNumberOfPackets();
+const INTEGER_template& totalNumberOfPackets() const;
+INTEGER_template& maxNoOfPacketsInResponseToCTS();
+const INTEGER_template& maxNoOfPacketsInResponseToCTS() const;
+INTEGER_template& pgnOfMultiPacketMessage();
+const INTEGER_template& pgnOfMultiPacketMessage() const;
+int size_of() const;
+void log() const;
+void log_match(const RequestToSend& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ClearToSend : public Base_Type {
+  OCTETSTRING field_ctrl;
+  INTEGER field_totalNumberOfPackets;
+  INTEGER field_nextPacketNumber;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  INTEGER field_pgnOfMultiPacketMessage;
+public:
+  ClearToSend();
+  ClearToSend(const OCTETSTRING& par_ctrl,
+    const INTEGER& par_totalNumberOfPackets,
+    const INTEGER& par_nextPacketNumber,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const INTEGER& par_pgnOfMultiPacketMessage);
+  ClearToSend(const ClearToSend& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ClearToSend& operator=(const ClearToSend& other_value);
+  boolean operator==(const ClearToSend& other_value) const;
+  inline boolean operator!=(const ClearToSend& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& ctrl()
+    {return field_ctrl;}
+  inline const OCTETSTRING& ctrl() const
+    {return field_ctrl;}
+  inline INTEGER& totalNumberOfPackets()
+    {return field_totalNumberOfPackets;}
+  inline const INTEGER& totalNumberOfPackets() const
+    {return field_totalNumberOfPackets;}
+  inline INTEGER& nextPacketNumber()
+    {return field_nextPacketNumber;}
+  inline const INTEGER& nextPacketNumber() const
+    {return field_nextPacketNumber;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline INTEGER& pgnOfMultiPacketMessage()
+    {return field_pgnOfMultiPacketMessage;}
+  inline const INTEGER& pgnOfMultiPacketMessage() const
+    {return field_pgnOfMultiPacketMessage;}
+  inline int size_of() const
+    {return 6;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ClearToSend_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ClearToSend_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ClearToSend& other_value);
+void copy_template(const ClearToSend_template& other_value);
+
+public:
+ClearToSend_template();
+ClearToSend_template(template_sel other_value);
+ClearToSend_template(const ClearToSend& other_value);
+ClearToSend_template(const OPTIONAL<ClearToSend>& other_value);
+ClearToSend_template(const ClearToSend_template& other_value);
+~ClearToSend_template();
+ClearToSend_template& operator=(template_sel other_value);
+ClearToSend_template& operator=(const ClearToSend& other_value);
+ClearToSend_template& operator=(const OPTIONAL<ClearToSend>& other_value);
+ClearToSend_template& operator=(const ClearToSend_template& other_value);
+boolean match(const ClearToSend& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ClearToSend valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ClearToSend_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& ctrl();
+const OCTETSTRING_template& ctrl() const;
+INTEGER_template& totalNumberOfPackets();
+const INTEGER_template& totalNumberOfPackets() const;
+INTEGER_template& nextPacketNumber();
+const INTEGER_template& nextPacketNumber() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+INTEGER_template& pgnOfMultiPacketMessage();
+const INTEGER_template& pgnOfMultiPacketMessage() const;
+int size_of() const;
+void log() const;
+void log_match(const ClearToSend& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class EndOfMessageAcknowledgement : public Base_Type {
+  OCTETSTRING field_ctrl;
+  INTEGER field_msgSizeInByte;
+  INTEGER field_totalNumberOfPackets;
+  OCTETSTRING field_reserved5;
+  INTEGER field_pgnOfMultiPacketMessage;
+public:
+  EndOfMessageAcknowledgement();
+  EndOfMessageAcknowledgement(const OCTETSTRING& par_ctrl,
+    const INTEGER& par_msgSizeInByte,
+    const INTEGER& par_totalNumberOfPackets,
+    const OCTETSTRING& par_reserved5,
+    const INTEGER& par_pgnOfMultiPacketMessage);
+  EndOfMessageAcknowledgement(const EndOfMessageAcknowledgement& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  EndOfMessageAcknowledgement& operator=(const EndOfMessageAcknowledgement& other_value);
+  boolean operator==(const EndOfMessageAcknowledgement& other_value) const;
+  inline boolean operator!=(const EndOfMessageAcknowledgement& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& ctrl()
+    {return field_ctrl;}
+  inline const OCTETSTRING& ctrl() const
+    {return field_ctrl;}
+  inline INTEGER& msgSizeInByte()
+    {return field_msgSizeInByte;}
+  inline const INTEGER& msgSizeInByte() const
+    {return field_msgSizeInByte;}
+  inline INTEGER& totalNumberOfPackets()
+    {return field_totalNumberOfPackets;}
+  inline const INTEGER& totalNumberOfPackets() const
+    {return field_totalNumberOfPackets;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline INTEGER& pgnOfMultiPacketMessage()
+    {return field_pgnOfMultiPacketMessage;}
+  inline const INTEGER& pgnOfMultiPacketMessage() const
+    {return field_pgnOfMultiPacketMessage;}
+  inline int size_of() const
+    {return 5;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class EndOfMessageAcknowledgement_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+EndOfMessageAcknowledgement_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const EndOfMessageAcknowledgement& other_value);
+void copy_template(const EndOfMessageAcknowledgement_template& other_value);
+
+public:
+EndOfMessageAcknowledgement_template();
+EndOfMessageAcknowledgement_template(template_sel other_value);
+EndOfMessageAcknowledgement_template(const EndOfMessageAcknowledgement& other_value);
+EndOfMessageAcknowledgement_template(const OPTIONAL<EndOfMessageAcknowledgement>& other_value);
+EndOfMessageAcknowledgement_template(const EndOfMessageAcknowledgement_template& other_value);
+~EndOfMessageAcknowledgement_template();
+EndOfMessageAcknowledgement_template& operator=(template_sel other_value);
+EndOfMessageAcknowledgement_template& operator=(const EndOfMessageAcknowledgement& other_value);
+EndOfMessageAcknowledgement_template& operator=(const OPTIONAL<EndOfMessageAcknowledgement>& other_value);
+EndOfMessageAcknowledgement_template& operator=(const EndOfMessageAcknowledgement_template& other_value);
+boolean match(const EndOfMessageAcknowledgement& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+EndOfMessageAcknowledgement valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+EndOfMessageAcknowledgement_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& ctrl();
+const OCTETSTRING_template& ctrl() const;
+INTEGER_template& msgSizeInByte();
+const INTEGER_template& msgSizeInByte() const;
+INTEGER_template& totalNumberOfPackets();
+const INTEGER_template& totalNumberOfPackets() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+INTEGER_template& pgnOfMultiPacketMessage();
+const INTEGER_template& pgnOfMultiPacketMessage() const;
+int size_of() const;
+void log() const;
+void log_match(const EndOfMessageAcknowledgement& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class e__ConnectionAbort__AbortReason : public Base_Type { // enum
+friend class e__ConnectionAbort__AbortReason_template;
+public:
+enum enum_type { alreadyInOneOrMoreConnectionManagedSessionsAndCannotSupportAnother = 1, systemResourcesWereNeededForAnotherTaskSoThisConnectionManagedSessionWasTerminated = 2, aTimeoutOccurredAndThisIsTheConnectionAbortToCloseTheSession = 3, cts__MessagesReceivedWhenDataTransferIsInProgress = 4, maximumRetransmitRequestLimitReached = 5, unexpectedDataTransferPacket = 6, badSequenceNumber = 7, duplicateSequenceNumber = 8, iso__11783__7__error__code__251 = 251, iso__11783__7__error__code__252 = 252, iso__11783__7__error__code__253 = 253, iso__11783__7__error__code__254 = 254, iso__11783__7__error__code__255 = 255, UNKNOWN_VALUE = 0, UNBOUND_VALUE = 9 };
+private:
+enum_type enum_value;
+
+public:
+e__ConnectionAbort__AbortReason();
+e__ConnectionAbort__AbortReason(int other_value);
+e__ConnectionAbort__AbortReason(enum_type other_value);
+e__ConnectionAbort__AbortReason(const e__ConnectionAbort__AbortReason& other_value);
+
+e__ConnectionAbort__AbortReason& operator=(int other_value);
+e__ConnectionAbort__AbortReason& operator=(enum_type other_value);
+e__ConnectionAbort__AbortReason& operator=(const e__ConnectionAbort__AbortReason& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const e__ConnectionAbort__AbortReason& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const e__ConnectionAbort__AbortReason& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const e__ConnectionAbort__AbortReason& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const e__ConnectionAbort__AbortReason& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const e__ConnectionAbort__AbortReason& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const e__ConnectionAbort__AbortReason& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const e__ConnectionAbort__AbortReason& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class e__ConnectionAbort__AbortReason_template : public Base_Template {
+union {
+e__ConnectionAbort__AbortReason::enum_type single_value;
+struct {
+unsigned int n_values;
+e__ConnectionAbort__AbortReason_template *list_value;
+} value_list;
+};
+
+void copy_template(const e__ConnectionAbort__AbortReason_template& other_value);
+
+public:
+e__ConnectionAbort__AbortReason_template();
+e__ConnectionAbort__AbortReason_template(template_sel other_value);
+e__ConnectionAbort__AbortReason_template(int other_value);
+e__ConnectionAbort__AbortReason_template(e__ConnectionAbort__AbortReason::enum_type other_value);
+e__ConnectionAbort__AbortReason_template(const e__ConnectionAbort__AbortReason& other_value);
+e__ConnectionAbort__AbortReason_template(const OPTIONAL<e__ConnectionAbort__AbortReason>& other_value);
+e__ConnectionAbort__AbortReason_template(const e__ConnectionAbort__AbortReason_template& other_value);
+~e__ConnectionAbort__AbortReason_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+e__ConnectionAbort__AbortReason_template& operator=(template_sel other_value);
+e__ConnectionAbort__AbortReason_template& operator=(int other_value);
+e__ConnectionAbort__AbortReason_template& operator=(e__ConnectionAbort__AbortReason::enum_type other_value);
+e__ConnectionAbort__AbortReason_template& operator=(const e__ConnectionAbort__AbortReason& other_value);
+e__ConnectionAbort__AbortReason_template& operator=(const OPTIONAL<e__ConnectionAbort__AbortReason>& other_value);
+e__ConnectionAbort__AbortReason_template& operator=(const e__ConnectionAbort__AbortReason_template& other_value);
+
+boolean match(e__ConnectionAbort__AbortReason::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const e__ConnectionAbort__AbortReason& other_value, boolean legacy = FALSE) const;
+e__ConnectionAbort__AbortReason::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+e__ConnectionAbort__AbortReason_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const e__ConnectionAbort__AbortReason& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class ConnectionAbort : public Base_Type {
+  OCTETSTRING field_ctrl;
+  e__ConnectionAbort__AbortReason field_connectionAbortReason;
+  OCTETSTRING field_reserved3;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  INTEGER field_pgnOfMultiPacketMessage;
+public:
+  ConnectionAbort();
+  ConnectionAbort(const OCTETSTRING& par_ctrl,
+    const e__ConnectionAbort__AbortReason& par_connectionAbortReason,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const INTEGER& par_pgnOfMultiPacketMessage);
+  ConnectionAbort(const ConnectionAbort& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ConnectionAbort& operator=(const ConnectionAbort& other_value);
+  boolean operator==(const ConnectionAbort& other_value) const;
+  inline boolean operator!=(const ConnectionAbort& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& ctrl()
+    {return field_ctrl;}
+  inline const OCTETSTRING& ctrl() const
+    {return field_ctrl;}
+  inline e__ConnectionAbort__AbortReason& connectionAbortReason()
+    {return field_connectionAbortReason;}
+  inline const e__ConnectionAbort__AbortReason& connectionAbortReason() const
+    {return field_connectionAbortReason;}
+  inline OCTETSTRING& reserved3()
+    {return field_reserved3;}
+  inline const OCTETSTRING& reserved3() const
+    {return field_reserved3;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline INTEGER& pgnOfMultiPacketMessage()
+    {return field_pgnOfMultiPacketMessage;}
+  inline const INTEGER& pgnOfMultiPacketMessage() const
+    {return field_pgnOfMultiPacketMessage;}
+  inline int size_of() const
+    {return 6;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ConnectionAbort_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ConnectionAbort_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ConnectionAbort& other_value);
+void copy_template(const ConnectionAbort_template& other_value);
+
+public:
+ConnectionAbort_template();
+ConnectionAbort_template(template_sel other_value);
+ConnectionAbort_template(const ConnectionAbort& other_value);
+ConnectionAbort_template(const OPTIONAL<ConnectionAbort>& other_value);
+ConnectionAbort_template(const ConnectionAbort_template& other_value);
+~ConnectionAbort_template();
+ConnectionAbort_template& operator=(template_sel other_value);
+ConnectionAbort_template& operator=(const ConnectionAbort& other_value);
+ConnectionAbort_template& operator=(const OPTIONAL<ConnectionAbort>& other_value);
+ConnectionAbort_template& operator=(const ConnectionAbort_template& other_value);
+boolean match(const ConnectionAbort& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ConnectionAbort valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ConnectionAbort_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& ctrl();
+const OCTETSTRING_template& ctrl() const;
+e__ConnectionAbort__AbortReason_template& connectionAbortReason();
+const e__ConnectionAbort__AbortReason_template& connectionAbortReason() const;
+OCTETSTRING_template& reserved3();
+const OCTETSTRING_template& reserved3() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+INTEGER_template& pgnOfMultiPacketMessage();
+const INTEGER_template& pgnOfMultiPacketMessage() const;
+int size_of() const;
+void log() const;
+void log_match(const ConnectionAbort& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class BroadcastAnnounce : public Base_Type {
+  OCTETSTRING field_ctrl;
+  INTEGER field_msgSizeInByte;
+  INTEGER field_totalNumberOfPackets;
+  OCTETSTRING field_reserved5;
+  INTEGER field_pgnOfMultiPacketMessage;
+public:
+  BroadcastAnnounce();
+  BroadcastAnnounce(const OCTETSTRING& par_ctrl,
+    const INTEGER& par_msgSizeInByte,
+    const INTEGER& par_totalNumberOfPackets,
+    const OCTETSTRING& par_reserved5,
+    const INTEGER& par_pgnOfMultiPacketMessage);
+  BroadcastAnnounce(const BroadcastAnnounce& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  BroadcastAnnounce& operator=(const BroadcastAnnounce& other_value);
+  boolean operator==(const BroadcastAnnounce& other_value) const;
+  inline boolean operator!=(const BroadcastAnnounce& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& ctrl()
+    {return field_ctrl;}
+  inline const OCTETSTRING& ctrl() const
+    {return field_ctrl;}
+  inline INTEGER& msgSizeInByte()
+    {return field_msgSizeInByte;}
+  inline const INTEGER& msgSizeInByte() const
+    {return field_msgSizeInByte;}
+  inline INTEGER& totalNumberOfPackets()
+    {return field_totalNumberOfPackets;}
+  inline const INTEGER& totalNumberOfPackets() const
+    {return field_totalNumberOfPackets;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline INTEGER& pgnOfMultiPacketMessage()
+    {return field_pgnOfMultiPacketMessage;}
+  inline const INTEGER& pgnOfMultiPacketMessage() const
+    {return field_pgnOfMultiPacketMessage;}
+  inline int size_of() const
+    {return 5;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class BroadcastAnnounce_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+BroadcastAnnounce_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const BroadcastAnnounce& other_value);
+void copy_template(const BroadcastAnnounce_template& other_value);
+
+public:
+BroadcastAnnounce_template();
+BroadcastAnnounce_template(template_sel other_value);
+BroadcastAnnounce_template(const BroadcastAnnounce& other_value);
+BroadcastAnnounce_template(const OPTIONAL<BroadcastAnnounce>& other_value);
+BroadcastAnnounce_template(const BroadcastAnnounce_template& other_value);
+~BroadcastAnnounce_template();
+BroadcastAnnounce_template& operator=(template_sel other_value);
+BroadcastAnnounce_template& operator=(const BroadcastAnnounce& other_value);
+BroadcastAnnounce_template& operator=(const OPTIONAL<BroadcastAnnounce>& other_value);
+BroadcastAnnounce_template& operator=(const BroadcastAnnounce_template& other_value);
+boolean match(const BroadcastAnnounce& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+BroadcastAnnounce valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+BroadcastAnnounce_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& ctrl();
+const OCTETSTRING_template& ctrl() const;
+INTEGER_template& msgSizeInByte();
+const INTEGER_template& msgSizeInByte() const;
+INTEGER_template& totalNumberOfPackets();
+const INTEGER_template& totalNumberOfPackets() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+INTEGER_template& pgnOfMultiPacketMessage();
+const INTEGER_template& pgnOfMultiPacketMessage() const;
+int size_of() const;
+void log() const;
+void log_match(const BroadcastAnnounce& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class TP__CM : public Base_Type {
+public:
+enum union_selection_type { UNBOUND_VALUE = 0, ALT_requestToSend = 1, ALT_clearToSend = 2, ALT_endOfMessageAcknowledgement = 3, ALT_broadcastAnnounce = 4, ALT_connectionAbort = 5 };
+private:
+union_selection_type union_selection;
+union {
+RequestToSend *field_requestToSend;
+ClearToSend *field_clearToSend;
+EndOfMessageAcknowledgement *field_endOfMessageAcknowledgement;
+BroadcastAnnounce *field_broadcastAnnounce;
+ConnectionAbort *field_connectionAbort;
+};
+void copy_value(const TP__CM& other_value);
+
+public:
+TP__CM();
+TP__CM(const TP__CM& other_value);
+~TP__CM();
+TP__CM& operator=(const TP__CM& other_value);
+boolean operator==(const TP__CM& other_value) const;
+inline boolean operator!=(const TP__CM& other_value) const { return !(*this == other_value); }
+RequestToSend& requestToSend();
+const RequestToSend& requestToSend() const;
+ClearToSend& clearToSend();
+const ClearToSend& clearToSend() const;
+EndOfMessageAcknowledgement& endOfMessageAcknowledgement();
+const EndOfMessageAcknowledgement& endOfMessageAcknowledgement() const;
+BroadcastAnnounce& broadcastAnnounce();
+const BroadcastAnnounce& broadcastAnnounce() const;
+ConnectionAbort& connectionAbort();
+const ConnectionAbort& connectionAbort() const;
+inline union_selection_type get_selection() const { return union_selection; }
+boolean ischosen(union_selection_type checked_selection) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class TP__CM_template : public Base_Template {
+union {
+struct {
+TP__CM::union_selection_type union_selection;
+union {
+RequestToSend_template *field_requestToSend;
+ClearToSend_template *field_clearToSend;
+EndOfMessageAcknowledgement_template *field_endOfMessageAcknowledgement;
+BroadcastAnnounce_template *field_broadcastAnnounce;
+ConnectionAbort_template *field_connectionAbort;
+};
+} single_value;
+struct {
+unsigned int n_values;
+TP__CM_template *list_value;
+} value_list;
+};
+void copy_value(const TP__CM& other_value);
+
+void copy_template(const TP__CM_template& other_value);
+
+public:
+TP__CM_template();
+TP__CM_template(template_sel other_value);
+TP__CM_template(const TP__CM& other_value);
+TP__CM_template(const OPTIONAL<TP__CM>& other_value);
+TP__CM_template(const TP__CM_template& other_value);
+~TP__CM_template();
+void clean_up();
+TP__CM_template& operator=(template_sel other_value);
+TP__CM_template& operator=(const TP__CM& other_value);
+TP__CM_template& operator=(const OPTIONAL<TP__CM>& other_value);
+TP__CM_template& operator=(const TP__CM_template& other_value);
+boolean match(const TP__CM& other_value, boolean legacy = FALSE) const;
+boolean is_value() const;TP__CM valueof() const;
+TP__CM_template& list_item(unsigned int list_index) const;
+void set_type(template_sel template_type, unsigned int list_length);
+RequestToSend_template& requestToSend();
+const RequestToSend_template& requestToSend() const;
+ClearToSend_template& clearToSend();
+const ClearToSend_template& clearToSend() const;
+EndOfMessageAcknowledgement_template& endOfMessageAcknowledgement();
+const EndOfMessageAcknowledgement_template& endOfMessageAcknowledgement() const;
+BroadcastAnnounce_template& broadcastAnnounce();
+const BroadcastAnnounce_template& broadcastAnnounce() const;
+ConnectionAbort_template& connectionAbort();
+const ConnectionAbort_template& connectionAbort() const;
+boolean ischosen(TP__CM::union_selection_type checked_selection) const;
+void log() const;
+void log_match(const TP__CM& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class ExtendedMessageRequestToSend : public Base_Type {
+  OCTETSTRING field_ctrl;
+  INTEGER field_msgSizeInBytes;
+  INTEGER field_pgnOfExtendedPacketedMessage;
+public:
+  ExtendedMessageRequestToSend();
+  ExtendedMessageRequestToSend(const OCTETSTRING& par_ctrl,
+    const INTEGER& par_msgSizeInBytes,
+    const INTEGER& par_pgnOfExtendedPacketedMessage);
+  ExtendedMessageRequestToSend(const ExtendedMessageRequestToSend& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ExtendedMessageRequestToSend& operator=(const ExtendedMessageRequestToSend& other_value);
+  boolean operator==(const ExtendedMessageRequestToSend& other_value) const;
+  inline boolean operator!=(const ExtendedMessageRequestToSend& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& ctrl()
+    {return field_ctrl;}
+  inline const OCTETSTRING& ctrl() const
+    {return field_ctrl;}
+  inline INTEGER& msgSizeInBytes()
+    {return field_msgSizeInBytes;}
+  inline const INTEGER& msgSizeInBytes() const
+    {return field_msgSizeInBytes;}
+  inline INTEGER& pgnOfExtendedPacketedMessage()
+    {return field_pgnOfExtendedPacketedMessage;}
+  inline const INTEGER& pgnOfExtendedPacketedMessage() const
+    {return field_pgnOfExtendedPacketedMessage;}
+  inline int size_of() const
+    {return 3;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ExtendedMessageRequestToSend_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ExtendedMessageRequestToSend_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ExtendedMessageRequestToSend& other_value);
+void copy_template(const ExtendedMessageRequestToSend_template& other_value);
+
+public:
+ExtendedMessageRequestToSend_template();
+ExtendedMessageRequestToSend_template(template_sel other_value);
+ExtendedMessageRequestToSend_template(const ExtendedMessageRequestToSend& other_value);
+ExtendedMessageRequestToSend_template(const OPTIONAL<ExtendedMessageRequestToSend>& other_value);
+ExtendedMessageRequestToSend_template(const ExtendedMessageRequestToSend_template& other_value);
+~ExtendedMessageRequestToSend_template();
+ExtendedMessageRequestToSend_template& operator=(template_sel other_value);
+ExtendedMessageRequestToSend_template& operator=(const ExtendedMessageRequestToSend& other_value);
+ExtendedMessageRequestToSend_template& operator=(const OPTIONAL<ExtendedMessageRequestToSend>& other_value);
+ExtendedMessageRequestToSend_template& operator=(const ExtendedMessageRequestToSend_template& other_value);
+boolean match(const ExtendedMessageRequestToSend& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ExtendedMessageRequestToSend valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ExtendedMessageRequestToSend_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& ctrl();
+const OCTETSTRING_template& ctrl() const;
+INTEGER_template& msgSizeInBytes();
+const INTEGER_template& msgSizeInBytes() const;
+INTEGER_template& pgnOfExtendedPacketedMessage();
+const INTEGER_template& pgnOfExtendedPacketedMessage() const;
+int size_of() const;
+void log() const;
+void log_match(const ExtendedMessageRequestToSend& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ExtendedMessageClearToSend : public Base_Type {
+  OCTETSTRING field_ctrl;
+  INTEGER field_NumberOfPacketsToSend;
+  INTEGER field_nextPacketNumberToSend;
+  INTEGER field_pgnOfExtendedPacketedMessage;
+public:
+  ExtendedMessageClearToSend();
+  ExtendedMessageClearToSend(const OCTETSTRING& par_ctrl,
+    const INTEGER& par_NumberOfPacketsToSend,
+    const INTEGER& par_nextPacketNumberToSend,
+    const INTEGER& par_pgnOfExtendedPacketedMessage);
+  ExtendedMessageClearToSend(const ExtendedMessageClearToSend& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ExtendedMessageClearToSend& operator=(const ExtendedMessageClearToSend& other_value);
+  boolean operator==(const ExtendedMessageClearToSend& other_value) const;
+  inline boolean operator!=(const ExtendedMessageClearToSend& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& ctrl()
+    {return field_ctrl;}
+  inline const OCTETSTRING& ctrl() const
+    {return field_ctrl;}
+  inline INTEGER& NumberOfPacketsToSend()
+    {return field_NumberOfPacketsToSend;}
+  inline const INTEGER& NumberOfPacketsToSend() const
+    {return field_NumberOfPacketsToSend;}
+  inline INTEGER& nextPacketNumberToSend()
+    {return field_nextPacketNumberToSend;}
+  inline const INTEGER& nextPacketNumberToSend() const
+    {return field_nextPacketNumberToSend;}
+  inline INTEGER& pgnOfExtendedPacketedMessage()
+    {return field_pgnOfExtendedPacketedMessage;}
+  inline const INTEGER& pgnOfExtendedPacketedMessage() const
+    {return field_pgnOfExtendedPacketedMessage;}
+  inline int size_of() const
+    {return 4;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ExtendedMessageClearToSend_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ExtendedMessageClearToSend_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ExtendedMessageClearToSend& other_value);
+void copy_template(const ExtendedMessageClearToSend_template& other_value);
+
+public:
+ExtendedMessageClearToSend_template();
+ExtendedMessageClearToSend_template(template_sel other_value);
+ExtendedMessageClearToSend_template(const ExtendedMessageClearToSend& other_value);
+ExtendedMessageClearToSend_template(const OPTIONAL<ExtendedMessageClearToSend>& other_value);
+ExtendedMessageClearToSend_template(const ExtendedMessageClearToSend_template& other_value);
+~ExtendedMessageClearToSend_template();
+ExtendedMessageClearToSend_template& operator=(template_sel other_value);
+ExtendedMessageClearToSend_template& operator=(const ExtendedMessageClearToSend& other_value);
+ExtendedMessageClearToSend_template& operator=(const OPTIONAL<ExtendedMessageClearToSend>& other_value);
+ExtendedMessageClearToSend_template& operator=(const ExtendedMessageClearToSend_template& other_value);
+boolean match(const ExtendedMessageClearToSend& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ExtendedMessageClearToSend valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ExtendedMessageClearToSend_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& ctrl();
+const OCTETSTRING_template& ctrl() const;
+INTEGER_template& NumberOfPacketsToSend();
+const INTEGER_template& NumberOfPacketsToSend() const;
+INTEGER_template& nextPacketNumberToSend();
+const INTEGER_template& nextPacketNumberToSend() const;
+INTEGER_template& pgnOfExtendedPacketedMessage();
+const INTEGER_template& pgnOfExtendedPacketedMessage() const;
+int size_of() const;
+void log() const;
+void log_match(const ExtendedMessageClearToSend& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ExtendedMessageDataPacketOffset : public Base_Type {
+  OCTETSTRING field_ctrl;
+  INTEGER field_numberOfPacketsToWhichToApplyTheOffset;
+  INTEGER field_totalNumberOfPackets;
+  INTEGER field_dataPacketOffset;
+  INTEGER field_pgnOfExtendedPacketedMessage;
+public:
+  ExtendedMessageDataPacketOffset();
+  ExtendedMessageDataPacketOffset(const OCTETSTRING& par_ctrl,
+    const INTEGER& par_numberOfPacketsToWhichToApplyTheOffset,
+    const INTEGER& par_totalNumberOfPackets,
+    const INTEGER& par_dataPacketOffset,
+    const INTEGER& par_pgnOfExtendedPacketedMessage);
+  ExtendedMessageDataPacketOffset(const ExtendedMessageDataPacketOffset& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ExtendedMessageDataPacketOffset& operator=(const ExtendedMessageDataPacketOffset& other_value);
+  boolean operator==(const ExtendedMessageDataPacketOffset& other_value) const;
+  inline boolean operator!=(const ExtendedMessageDataPacketOffset& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& ctrl()
+    {return field_ctrl;}
+  inline const OCTETSTRING& ctrl() const
+    {return field_ctrl;}
+  inline INTEGER& numberOfPacketsToWhichToApplyTheOffset()
+    {return field_numberOfPacketsToWhichToApplyTheOffset;}
+  inline const INTEGER& numberOfPacketsToWhichToApplyTheOffset() const
+    {return field_numberOfPacketsToWhichToApplyTheOffset;}
+  inline INTEGER& totalNumberOfPackets()
+    {return field_totalNumberOfPackets;}
+  inline const INTEGER& totalNumberOfPackets() const
+    {return field_totalNumberOfPackets;}
+  inline INTEGER& dataPacketOffset()
+    {return field_dataPacketOffset;}
+  inline const INTEGER& dataPacketOffset() const
+    {return field_dataPacketOffset;}
+  inline INTEGER& pgnOfExtendedPacketedMessage()
+    {return field_pgnOfExtendedPacketedMessage;}
+  inline const INTEGER& pgnOfExtendedPacketedMessage() const
+    {return field_pgnOfExtendedPacketedMessage;}
+  inline int size_of() const
+    {return 5;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ExtendedMessageDataPacketOffset_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ExtendedMessageDataPacketOffset_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ExtendedMessageDataPacketOffset& other_value);
+void copy_template(const ExtendedMessageDataPacketOffset_template& other_value);
+
+public:
+ExtendedMessageDataPacketOffset_template();
+ExtendedMessageDataPacketOffset_template(template_sel other_value);
+ExtendedMessageDataPacketOffset_template(const ExtendedMessageDataPacketOffset& other_value);
+ExtendedMessageDataPacketOffset_template(const OPTIONAL<ExtendedMessageDataPacketOffset>& other_value);
+ExtendedMessageDataPacketOffset_template(const ExtendedMessageDataPacketOffset_template& other_value);
+~ExtendedMessageDataPacketOffset_template();
+ExtendedMessageDataPacketOffset_template& operator=(template_sel other_value);
+ExtendedMessageDataPacketOffset_template& operator=(const ExtendedMessageDataPacketOffset& other_value);
+ExtendedMessageDataPacketOffset_template& operator=(const OPTIONAL<ExtendedMessageDataPacketOffset>& other_value);
+ExtendedMessageDataPacketOffset_template& operator=(const ExtendedMessageDataPacketOffset_template& other_value);
+boolean match(const ExtendedMessageDataPacketOffset& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ExtendedMessageDataPacketOffset valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ExtendedMessageDataPacketOffset_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& ctrl();
+const OCTETSTRING_template& ctrl() const;
+INTEGER_template& numberOfPacketsToWhichToApplyTheOffset();
+const INTEGER_template& numberOfPacketsToWhichToApplyTheOffset() const;
+INTEGER_template& totalNumberOfPackets();
+const INTEGER_template& totalNumberOfPackets() const;
+INTEGER_template& dataPacketOffset();
+const INTEGER_template& dataPacketOffset() const;
+INTEGER_template& pgnOfExtendedPacketedMessage();
+const INTEGER_template& pgnOfExtendedPacketedMessage() const;
+int size_of() const;
+void log() const;
+void log_match(const ExtendedMessageDataPacketOffset& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ExtendedMessageEndOfMessageAcknowledgement : public Base_Type {
+  OCTETSTRING field_ctrl;
+  INTEGER field_numberOfBytesTransferred;
+  INTEGER field_pgnOfExtendedPacketedMessage;
+public:
+  ExtendedMessageEndOfMessageAcknowledgement();
+  ExtendedMessageEndOfMessageAcknowledgement(const OCTETSTRING& par_ctrl,
+    const INTEGER& par_numberOfBytesTransferred,
+    const INTEGER& par_pgnOfExtendedPacketedMessage);
+  ExtendedMessageEndOfMessageAcknowledgement(const ExtendedMessageEndOfMessageAcknowledgement& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ExtendedMessageEndOfMessageAcknowledgement& operator=(const ExtendedMessageEndOfMessageAcknowledgement& other_value);
+  boolean operator==(const ExtendedMessageEndOfMessageAcknowledgement& other_value) const;
+  inline boolean operator!=(const ExtendedMessageEndOfMessageAcknowledgement& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& ctrl()
+    {return field_ctrl;}
+  inline const OCTETSTRING& ctrl() const
+    {return field_ctrl;}
+  inline INTEGER& numberOfBytesTransferred()
+    {return field_numberOfBytesTransferred;}
+  inline const INTEGER& numberOfBytesTransferred() const
+    {return field_numberOfBytesTransferred;}
+  inline INTEGER& pgnOfExtendedPacketedMessage()
+    {return field_pgnOfExtendedPacketedMessage;}
+  inline const INTEGER& pgnOfExtendedPacketedMessage() const
+    {return field_pgnOfExtendedPacketedMessage;}
+  inline int size_of() const
+    {return 3;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ExtendedMessageEndOfMessageAcknowledgement_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ExtendedMessageEndOfMessageAcknowledgement_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ExtendedMessageEndOfMessageAcknowledgement& other_value);
+void copy_template(const ExtendedMessageEndOfMessageAcknowledgement_template& other_value);
+
+public:
+ExtendedMessageEndOfMessageAcknowledgement_template();
+ExtendedMessageEndOfMessageAcknowledgement_template(template_sel other_value);
+ExtendedMessageEndOfMessageAcknowledgement_template(const ExtendedMessageEndOfMessageAcknowledgement& other_value);
+ExtendedMessageEndOfMessageAcknowledgement_template(const OPTIONAL<ExtendedMessageEndOfMessageAcknowledgement>& other_value);
+ExtendedMessageEndOfMessageAcknowledgement_template(const ExtendedMessageEndOfMessageAcknowledgement_template& other_value);
+~ExtendedMessageEndOfMessageAcknowledgement_template();
+ExtendedMessageEndOfMessageAcknowledgement_template& operator=(template_sel other_value);
+ExtendedMessageEndOfMessageAcknowledgement_template& operator=(const ExtendedMessageEndOfMessageAcknowledgement& other_value);
+ExtendedMessageEndOfMessageAcknowledgement_template& operator=(const OPTIONAL<ExtendedMessageEndOfMessageAcknowledgement>& other_value);
+ExtendedMessageEndOfMessageAcknowledgement_template& operator=(const ExtendedMessageEndOfMessageAcknowledgement_template& other_value);
+boolean match(const ExtendedMessageEndOfMessageAcknowledgement& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ExtendedMessageEndOfMessageAcknowledgement valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ExtendedMessageEndOfMessageAcknowledgement_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& ctrl();
+const OCTETSTRING_template& ctrl() const;
+INTEGER_template& numberOfBytesTransferred();
+const INTEGER_template& numberOfBytesTransferred() const;
+INTEGER_template& pgnOfExtendedPacketedMessage();
+const INTEGER_template& pgnOfExtendedPacketedMessage() const;
+int size_of() const;
+void log() const;
+void log_match(const ExtendedMessageEndOfMessageAcknowledgement& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class e__ETP__ConnectionAbort__AbortReason : public Base_Type { // enum
+friend class e__ETP__ConnectionAbort__AbortReason_template;
+public:
+enum enum_type { alreadyInOneOrMoreConnectionManagedSessionsAndCannotSupportAnother = 1, systemResourcesWereNeededForAnotherTaskSoThisConnectionManagedSessionWasTerminated = 2, aTimeoutOccurredAndThisIsTheConnectionAbortToCloseTheSession = 3, cts__MessagesReceivedWhenDataTransferIsInProgress = 4, maximumRetransmitRequestLimitReached = 5, unexpectedDataTransferPacket = 6, badSequenceNumber = 7, duplicateSequenceNumber = 8, unexpectedEDPO__Packet = 9, unexpectedEDPO__PGN = 10, edpo__numberOfPacketsIsGreaterThanCTS = 11, badEDPO__Offset = 12, unexpectedECTS__PGN = 14, ECTS__requestedPacketsExceedsMessageSize = 15, iso__11783__7__error__code__251 = 251, iso__11783__7__error__code__252 = 252, iso__11783__7__error__code__253 = 253, iso__11783__7__error__code__254 = 254, iso__11783__7__error__code__255 = 255, UNKNOWN_VALUE = 0, UNBOUND_VALUE = 13 };
+private:
+enum_type enum_value;
+
+public:
+e__ETP__ConnectionAbort__AbortReason();
+e__ETP__ConnectionAbort__AbortReason(int other_value);
+e__ETP__ConnectionAbort__AbortReason(enum_type other_value);
+e__ETP__ConnectionAbort__AbortReason(const e__ETP__ConnectionAbort__AbortReason& other_value);
+
+e__ETP__ConnectionAbort__AbortReason& operator=(int other_value);
+e__ETP__ConnectionAbort__AbortReason& operator=(enum_type other_value);
+e__ETP__ConnectionAbort__AbortReason& operator=(const e__ETP__ConnectionAbort__AbortReason& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const e__ETP__ConnectionAbort__AbortReason& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const e__ETP__ConnectionAbort__AbortReason& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const e__ETP__ConnectionAbort__AbortReason& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const e__ETP__ConnectionAbort__AbortReason& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const e__ETP__ConnectionAbort__AbortReason& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const e__ETP__ConnectionAbort__AbortReason& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const e__ETP__ConnectionAbort__AbortReason& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class e__ETP__ConnectionAbort__AbortReason_template : public Base_Template {
+union {
+e__ETP__ConnectionAbort__AbortReason::enum_type single_value;
+struct {
+unsigned int n_values;
+e__ETP__ConnectionAbort__AbortReason_template *list_value;
+} value_list;
+};
+
+void copy_template(const e__ETP__ConnectionAbort__AbortReason_template& other_value);
+
+public:
+e__ETP__ConnectionAbort__AbortReason_template();
+e__ETP__ConnectionAbort__AbortReason_template(template_sel other_value);
+e__ETP__ConnectionAbort__AbortReason_template(int other_value);
+e__ETP__ConnectionAbort__AbortReason_template(e__ETP__ConnectionAbort__AbortReason::enum_type other_value);
+e__ETP__ConnectionAbort__AbortReason_template(const e__ETP__ConnectionAbort__AbortReason& other_value);
+e__ETP__ConnectionAbort__AbortReason_template(const OPTIONAL<e__ETP__ConnectionAbort__AbortReason>& other_value);
+e__ETP__ConnectionAbort__AbortReason_template(const e__ETP__ConnectionAbort__AbortReason_template& other_value);
+~e__ETP__ConnectionAbort__AbortReason_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+e__ETP__ConnectionAbort__AbortReason_template& operator=(template_sel other_value);
+e__ETP__ConnectionAbort__AbortReason_template& operator=(int other_value);
+e__ETP__ConnectionAbort__AbortReason_template& operator=(e__ETP__ConnectionAbort__AbortReason::enum_type other_value);
+e__ETP__ConnectionAbort__AbortReason_template& operator=(const e__ETP__ConnectionAbort__AbortReason& other_value);
+e__ETP__ConnectionAbort__AbortReason_template& operator=(const OPTIONAL<e__ETP__ConnectionAbort__AbortReason>& other_value);
+e__ETP__ConnectionAbort__AbortReason_template& operator=(const e__ETP__ConnectionAbort__AbortReason_template& other_value);
+
+boolean match(e__ETP__ConnectionAbort__AbortReason::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const e__ETP__ConnectionAbort__AbortReason& other_value, boolean legacy = FALSE) const;
+e__ETP__ConnectionAbort__AbortReason::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+e__ETP__ConnectionAbort__AbortReason_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const e__ETP__ConnectionAbort__AbortReason& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class ExtendedMessageConnectionAbort : public Base_Type {
+  OCTETSTRING field_ctrl;
+  e__ETP__ConnectionAbort__AbortReason field_connectionAbortReason;
+  OCTETSTRING field_reserved3;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  INTEGER field_pgnOfExtendedPacketedMessage;
+public:
+  ExtendedMessageConnectionAbort();
+  ExtendedMessageConnectionAbort(const OCTETSTRING& par_ctrl,
+    const e__ETP__ConnectionAbort__AbortReason& par_connectionAbortReason,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const INTEGER& par_pgnOfExtendedPacketedMessage);
+  ExtendedMessageConnectionAbort(const ExtendedMessageConnectionAbort& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ExtendedMessageConnectionAbort& operator=(const ExtendedMessageConnectionAbort& other_value);
+  boolean operator==(const ExtendedMessageConnectionAbort& other_value) const;
+  inline boolean operator!=(const ExtendedMessageConnectionAbort& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& ctrl()
+    {return field_ctrl;}
+  inline const OCTETSTRING& ctrl() const
+    {return field_ctrl;}
+  inline e__ETP__ConnectionAbort__AbortReason& connectionAbortReason()
+    {return field_connectionAbortReason;}
+  inline const e__ETP__ConnectionAbort__AbortReason& connectionAbortReason() const
+    {return field_connectionAbortReason;}
+  inline OCTETSTRING& reserved3()
+    {return field_reserved3;}
+  inline const OCTETSTRING& reserved3() const
+    {return field_reserved3;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline INTEGER& pgnOfExtendedPacketedMessage()
+    {return field_pgnOfExtendedPacketedMessage;}
+  inline const INTEGER& pgnOfExtendedPacketedMessage() const
+    {return field_pgnOfExtendedPacketedMessage;}
+  inline int size_of() const
+    {return 6;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ExtendedMessageConnectionAbort_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ExtendedMessageConnectionAbort_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ExtendedMessageConnectionAbort& other_value);
+void copy_template(const ExtendedMessageConnectionAbort_template& other_value);
+
+public:
+ExtendedMessageConnectionAbort_template();
+ExtendedMessageConnectionAbort_template(template_sel other_value);
+ExtendedMessageConnectionAbort_template(const ExtendedMessageConnectionAbort& other_value);
+ExtendedMessageConnectionAbort_template(const OPTIONAL<ExtendedMessageConnectionAbort>& other_value);
+ExtendedMessageConnectionAbort_template(const ExtendedMessageConnectionAbort_template& other_value);
+~ExtendedMessageConnectionAbort_template();
+ExtendedMessageConnectionAbort_template& operator=(template_sel other_value);
+ExtendedMessageConnectionAbort_template& operator=(const ExtendedMessageConnectionAbort& other_value);
+ExtendedMessageConnectionAbort_template& operator=(const OPTIONAL<ExtendedMessageConnectionAbort>& other_value);
+ExtendedMessageConnectionAbort_template& operator=(const ExtendedMessageConnectionAbort_template& other_value);
+boolean match(const ExtendedMessageConnectionAbort& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ExtendedMessageConnectionAbort valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ExtendedMessageConnectionAbort_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& ctrl();
+const OCTETSTRING_template& ctrl() const;
+e__ETP__ConnectionAbort__AbortReason_template& connectionAbortReason();
+const e__ETP__ConnectionAbort__AbortReason_template& connectionAbortReason() const;
+OCTETSTRING_template& reserved3();
+const OCTETSTRING_template& reserved3() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+INTEGER_template& pgnOfExtendedPacketedMessage();
+const INTEGER_template& pgnOfExtendedPacketedMessage() const;
+int size_of() const;
+void log() const;
+void log_match(const ExtendedMessageConnectionAbort& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ETP__CM : public Base_Type {
+public:
+enum union_selection_type { UNBOUND_VALUE = 0, ALT_extendedMessageRequestToSend = 1, ALT_extendedMessageClearToSend = 2, ALT_extendedMessageDataPacketOffset = 3, ALT_extendedMessageEndOfMessageAcknowledgement = 4, ALT_extendedMessageConnectionAbort = 5 };
+private:
+union_selection_type union_selection;
+union {
+ExtendedMessageRequestToSend *field_extendedMessageRequestToSend;
+ExtendedMessageClearToSend *field_extendedMessageClearToSend;
+ExtendedMessageDataPacketOffset *field_extendedMessageDataPacketOffset;
+ExtendedMessageEndOfMessageAcknowledgement *field_extendedMessageEndOfMessageAcknowledgement;
+ExtendedMessageConnectionAbort *field_extendedMessageConnectionAbort;
+};
+void copy_value(const ETP__CM& other_value);
+
+public:
+ETP__CM();
+ETP__CM(const ETP__CM& other_value);
+~ETP__CM();
+ETP__CM& operator=(const ETP__CM& other_value);
+boolean operator==(const ETP__CM& other_value) const;
+inline boolean operator!=(const ETP__CM& other_value) const { return !(*this == other_value); }
+ExtendedMessageRequestToSend& extendedMessageRequestToSend();
+const ExtendedMessageRequestToSend& extendedMessageRequestToSend() const;
+ExtendedMessageClearToSend& extendedMessageClearToSend();
+const ExtendedMessageClearToSend& extendedMessageClearToSend() const;
+ExtendedMessageDataPacketOffset& extendedMessageDataPacketOffset();
+const ExtendedMessageDataPacketOffset& extendedMessageDataPacketOffset() const;
+ExtendedMessageEndOfMessageAcknowledgement& extendedMessageEndOfMessageAcknowledgement();
+const ExtendedMessageEndOfMessageAcknowledgement& extendedMessageEndOfMessageAcknowledgement() const;
+ExtendedMessageConnectionAbort& extendedMessageConnectionAbort();
+const ExtendedMessageConnectionAbort& extendedMessageConnectionAbort() const;
+inline union_selection_type get_selection() const { return union_selection; }
+boolean ischosen(union_selection_type checked_selection) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ETP__CM_template : public Base_Template {
+union {
+struct {
+ETP__CM::union_selection_type union_selection;
+union {
+ExtendedMessageRequestToSend_template *field_extendedMessageRequestToSend;
+ExtendedMessageClearToSend_template *field_extendedMessageClearToSend;
+ExtendedMessageDataPacketOffset_template *field_extendedMessageDataPacketOffset;
+ExtendedMessageEndOfMessageAcknowledgement_template *field_extendedMessageEndOfMessageAcknowledgement;
+ExtendedMessageConnectionAbort_template *field_extendedMessageConnectionAbort;
+};
+} single_value;
+struct {
+unsigned int n_values;
+ETP__CM_template *list_value;
+} value_list;
+};
+void copy_value(const ETP__CM& other_value);
+
+void copy_template(const ETP__CM_template& other_value);
+
+public:
+ETP__CM_template();
+ETP__CM_template(template_sel other_value);
+ETP__CM_template(const ETP__CM& other_value);
+ETP__CM_template(const OPTIONAL<ETP__CM>& other_value);
+ETP__CM_template(const ETP__CM_template& other_value);
+~ETP__CM_template();
+void clean_up();
+ETP__CM_template& operator=(template_sel other_value);
+ETP__CM_template& operator=(const ETP__CM& other_value);
+ETP__CM_template& operator=(const OPTIONAL<ETP__CM>& other_value);
+ETP__CM_template& operator=(const ETP__CM_template& other_value);
+boolean match(const ETP__CM& other_value, boolean legacy = FALSE) const;
+boolean is_value() const;ETP__CM valueof() const;
+ETP__CM_template& list_item(unsigned int list_index) const;
+void set_type(template_sel template_type, unsigned int list_length);
+ExtendedMessageRequestToSend_template& extendedMessageRequestToSend();
+const ExtendedMessageRequestToSend_template& extendedMessageRequestToSend() const;
+ExtendedMessageClearToSend_template& extendedMessageClearToSend();
+const ExtendedMessageClearToSend_template& extendedMessageClearToSend() const;
+ExtendedMessageDataPacketOffset_template& extendedMessageDataPacketOffset();
+const ExtendedMessageDataPacketOffset_template& extendedMessageDataPacketOffset() const;
+ExtendedMessageEndOfMessageAcknowledgement_template& extendedMessageEndOfMessageAcknowledgement();
+const ExtendedMessageEndOfMessageAcknowledgement_template& extendedMessageEndOfMessageAcknowledgement() const;
+ExtendedMessageConnectionAbort_template& extendedMessageConnectionAbort();
+const ExtendedMessageConnectionAbort_template& extendedMessageConnectionAbort() const;
+boolean ischosen(ETP__CM::union_selection_type checked_selection) const;
+void log() const;
+void log_match(const ETP__CM& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class TP__DT : public Base_Type {
+  INTEGER field_seq__no;
+  OCTETSTRING field_data;
+public:
+  TP__DT();
+  TP__DT(const INTEGER& par_seq__no,
+    const OCTETSTRING& par_data);
+  TP__DT(const TP__DT& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  TP__DT& operator=(const TP__DT& other_value);
+  boolean operator==(const TP__DT& other_value) const;
+  inline boolean operator!=(const TP__DT& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& seq__no()
+    {return field_seq__no;}
+  inline const INTEGER& seq__no() const
+    {return field_seq__no;}
+  inline OCTETSTRING& data()
+    {return field_data;}
+  inline const OCTETSTRING& data() const
+    {return field_data;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class TP__DT_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+TP__DT_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const TP__DT& other_value);
+void copy_template(const TP__DT_template& other_value);
+
+public:
+TP__DT_template();
+TP__DT_template(template_sel other_value);
+TP__DT_template(const TP__DT& other_value);
+TP__DT_template(const OPTIONAL<TP__DT>& other_value);
+TP__DT_template(const TP__DT_template& other_value);
+~TP__DT_template();
+TP__DT_template& operator=(template_sel other_value);
+TP__DT_template& operator=(const TP__DT& other_value);
+TP__DT_template& operator=(const OPTIONAL<TP__DT>& other_value);
+TP__DT_template& operator=(const TP__DT_template& other_value);
+boolean match(const TP__DT& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+TP__DT valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+TP__DT_template& list_item(unsigned int list_index) const;
+INTEGER_template& seq__no();
+const INTEGER_template& seq__no() const;
+OCTETSTRING_template& data();
+const OCTETSTRING_template& data() const;
+int size_of() const;
+void log() const;
+void log_match(const TP__DT& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ETP__DT : public Base_Type {
+  INTEGER field_seq__no;
+  OCTETSTRING field_data;
+public:
+  ETP__DT();
+  ETP__DT(const INTEGER& par_seq__no,
+    const OCTETSTRING& par_data);
+  ETP__DT(const ETP__DT& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ETP__DT& operator=(const ETP__DT& other_value);
+  boolean operator==(const ETP__DT& other_value) const;
+  inline boolean operator!=(const ETP__DT& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& seq__no()
+    {return field_seq__no;}
+  inline const INTEGER& seq__no() const
+    {return field_seq__no;}
+  inline OCTETSTRING& data()
+    {return field_data;}
+  inline const OCTETSTRING& data() const
+    {return field_data;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ETP__DT_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ETP__DT_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ETP__DT& other_value);
+void copy_template(const ETP__DT_template& other_value);
+
+public:
+ETP__DT_template();
+ETP__DT_template(template_sel other_value);
+ETP__DT_template(const ETP__DT& other_value);
+ETP__DT_template(const OPTIONAL<ETP__DT>& other_value);
+ETP__DT_template(const ETP__DT_template& other_value);
+~ETP__DT_template();
+ETP__DT_template& operator=(template_sel other_value);
+ETP__DT_template& operator=(const ETP__DT& other_value);
+ETP__DT_template& operator=(const OPTIONAL<ETP__DT>& other_value);
+ETP__DT_template& operator=(const ETP__DT_template& other_value);
+boolean match(const ETP__DT& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ETP__DT valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ETP__DT_template& list_item(unsigned int list_index) const;
+INTEGER_template& seq__no();
+const INTEGER_template& seq__no() const;
+OCTETSTRING_template& data();
+const OCTETSTRING_template& data() const;
+int size_of() const;
+void log() const;
+void log_match(const ETP__DT& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+
+/* Global variable declarations */
+
+extern const TTCN_RAWdescriptor_t SEQ__NO_raw_;
+extern const XERdescriptor_t SEQ__NO_xer_;
+extern const TTCN_OERdescriptor_t SEQ__NO_oer_;
+extern const TTCN_Typedescriptor_t SEQ__NO_descr_;
+extern const TTCN_RAWdescriptor_t NUMBER__OF__PACKETS_raw_;
+extern const XERdescriptor_t NUMBER__OF__PACKETS_xer_;
+extern const TTCN_OERdescriptor_t NUMBER__OF__PACKETS_oer_;
+extern const TTCN_Typedescriptor_t NUMBER__OF__PACKETS_descr_;
+extern const XERdescriptor_t Ctrl_xer_;
+extern const TTCN_OERdescriptor_t Ctrl_oer_;
+extern const TTCN_Typedescriptor_t Ctrl_descr_;
+extern const TTCN_RAWdescriptor_t RequestToSend_ctrl_raw_;
+extern const XERdescriptor_t RequestToSend_ctrl_xer_;
+extern const TTCN_OERdescriptor_t RequestToSend_ctrl_oer_;
+extern const TTCN_Typedescriptor_t RequestToSend_ctrl_descr_;
+extern const XERdescriptor_t RequestToSend_msgSizeInBytes_xer_;
+extern const TTCN_OERdescriptor_t RequestToSend_msgSizeInBytes_oer_;
+extern const TTCN_Typedescriptor_t RequestToSend_msgSizeInBytes_descr_;
+extern const XERdescriptor_t RequestToSend_totalNumberOfPackets_xer_;
+extern const TTCN_OERdescriptor_t RequestToSend_totalNumberOfPackets_oer_;
+extern const TTCN_Typedescriptor_t RequestToSend_totalNumberOfPackets_descr_;
+extern const XERdescriptor_t RequestToSend_maxNoOfPacketsInResponseToCTS_xer_;
+extern const TTCN_OERdescriptor_t RequestToSend_maxNoOfPacketsInResponseToCTS_oer_;
+extern const TTCN_Typedescriptor_t RequestToSend_maxNoOfPacketsInResponseToCTS_descr_;
+extern const XERdescriptor_t RequestToSend_pgnOfMultiPacketMessage_xer_;
+extern const TTCN_OERdescriptor_t RequestToSend_pgnOfMultiPacketMessage_oer_;
+extern const TTCN_Typedescriptor_t RequestToSend_pgnOfMultiPacketMessage_descr_;
+extern const TTCN_RAWdescriptor_t RequestToSend_raw_;
+extern const TTCN_Typedescriptor_t RequestToSend_descr_;
+extern const TTCN_RAWdescriptor_t ClearToSend_ctrl_raw_;
+extern const XERdescriptor_t ClearToSend_ctrl_xer_;
+extern const TTCN_OERdescriptor_t ClearToSend_ctrl_oer_;
+extern const TTCN_Typedescriptor_t ClearToSend_ctrl_descr_;
+extern const XERdescriptor_t ClearToSend_totalNumberOfPackets_xer_;
+extern const TTCN_OERdescriptor_t ClearToSend_totalNumberOfPackets_oer_;
+extern const TTCN_Typedescriptor_t ClearToSend_totalNumberOfPackets_descr_;
+extern const XERdescriptor_t ClearToSend_nextPacketNumber_xer_;
+extern const TTCN_OERdescriptor_t ClearToSend_nextPacketNumber_oer_;
+extern const TTCN_Typedescriptor_t ClearToSend_nextPacketNumber_descr_;
+extern const TTCN_RAWdescriptor_t ClearToSend_reserved4_raw_;
+extern const XERdescriptor_t ClearToSend_reserved4_xer_;
+extern const TTCN_OERdescriptor_t ClearToSend_reserved4_oer_;
+extern const TTCN_Typedescriptor_t ClearToSend_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t ClearToSend_reserved5_raw_;
+extern const XERdescriptor_t ClearToSend_reserved5_xer_;
+extern const TTCN_OERdescriptor_t ClearToSend_reserved5_oer_;
+extern const TTCN_Typedescriptor_t ClearToSend_reserved5_descr_;
+extern const XERdescriptor_t ClearToSend_pgnOfMultiPacketMessage_xer_;
+extern const TTCN_OERdescriptor_t ClearToSend_pgnOfMultiPacketMessage_oer_;
+extern const TTCN_Typedescriptor_t ClearToSend_pgnOfMultiPacketMessage_descr_;
+extern const TTCN_RAWdescriptor_t ClearToSend_raw_;
+extern const TTCN_Typedescriptor_t ClearToSend_descr_;
+extern const TTCN_RAWdescriptor_t EndOfMessageAcknowledgement_ctrl_raw_;
+extern const XERdescriptor_t EndOfMessageAcknowledgement_ctrl_xer_;
+extern const TTCN_OERdescriptor_t EndOfMessageAcknowledgement_ctrl_oer_;
+extern const TTCN_Typedescriptor_t EndOfMessageAcknowledgement_ctrl_descr_;
+extern const XERdescriptor_t EndOfMessageAcknowledgement_msgSizeInByte_xer_;
+extern const TTCN_OERdescriptor_t EndOfMessageAcknowledgement_msgSizeInByte_oer_;
+extern const TTCN_Typedescriptor_t EndOfMessageAcknowledgement_msgSizeInByte_descr_;
+extern const XERdescriptor_t EndOfMessageAcknowledgement_totalNumberOfPackets_xer_;
+extern const TTCN_OERdescriptor_t EndOfMessageAcknowledgement_totalNumberOfPackets_oer_;
+extern const TTCN_Typedescriptor_t EndOfMessageAcknowledgement_totalNumberOfPackets_descr_;
+extern const TTCN_RAWdescriptor_t EndOfMessageAcknowledgement_reserved5_raw_;
+extern const XERdescriptor_t EndOfMessageAcknowledgement_reserved5_xer_;
+extern const TTCN_OERdescriptor_t EndOfMessageAcknowledgement_reserved5_oer_;
+extern const TTCN_Typedescriptor_t EndOfMessageAcknowledgement_reserved5_descr_;
+extern const XERdescriptor_t EndOfMessageAcknowledgement_pgnOfMultiPacketMessage_xer_;
+extern const TTCN_OERdescriptor_t EndOfMessageAcknowledgement_pgnOfMultiPacketMessage_oer_;
+extern const TTCN_Typedescriptor_t EndOfMessageAcknowledgement_pgnOfMultiPacketMessage_descr_;
+extern const TTCN_RAWdescriptor_t EndOfMessageAcknowledgement_raw_;
+extern const TTCN_Typedescriptor_t EndOfMessageAcknowledgement_descr_;
+extern const TTCN_RAWdescriptor_t e__ConnectionAbort__AbortReason_raw_;
+extern const TTCN_Typedescriptor_t e__ConnectionAbort__AbortReason_descr_;
+extern const TTCN_RAWdescriptor_t ConnectionAbort_ctrl_raw_;
+extern const XERdescriptor_t ConnectionAbort_ctrl_xer_;
+extern const TTCN_OERdescriptor_t ConnectionAbort_ctrl_oer_;
+extern const TTCN_Typedescriptor_t ConnectionAbort_ctrl_descr_;
+extern const TTCN_RAWdescriptor_t ConnectionAbort_reserved3_raw_;
+extern const XERdescriptor_t ConnectionAbort_reserved3_xer_;
+extern const TTCN_OERdescriptor_t ConnectionAbort_reserved3_oer_;
+extern const TTCN_Typedescriptor_t ConnectionAbort_reserved3_descr_;
+extern const TTCN_RAWdescriptor_t ConnectionAbort_reserved4_raw_;
+extern const XERdescriptor_t ConnectionAbort_reserved4_xer_;
+extern const TTCN_OERdescriptor_t ConnectionAbort_reserved4_oer_;
+extern const TTCN_Typedescriptor_t ConnectionAbort_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t ConnectionAbort_reserved5_raw_;
+extern const XERdescriptor_t ConnectionAbort_reserved5_xer_;
+extern const TTCN_OERdescriptor_t ConnectionAbort_reserved5_oer_;
+extern const TTCN_Typedescriptor_t ConnectionAbort_reserved5_descr_;
+extern const XERdescriptor_t ConnectionAbort_pgnOfMultiPacketMessage_xer_;
+extern const TTCN_OERdescriptor_t ConnectionAbort_pgnOfMultiPacketMessage_oer_;
+extern const TTCN_Typedescriptor_t ConnectionAbort_pgnOfMultiPacketMessage_descr_;
+extern const TTCN_RAWdescriptor_t ConnectionAbort_raw_;
+extern const TTCN_Typedescriptor_t ConnectionAbort_descr_;
+extern const TTCN_RAWdescriptor_t BroadcastAnnounce_ctrl_raw_;
+extern const XERdescriptor_t BroadcastAnnounce_ctrl_xer_;
+extern const TTCN_OERdescriptor_t BroadcastAnnounce_ctrl_oer_;
+extern const TTCN_Typedescriptor_t BroadcastAnnounce_ctrl_descr_;
+extern const XERdescriptor_t BroadcastAnnounce_msgSizeInByte_xer_;
+extern const TTCN_OERdescriptor_t BroadcastAnnounce_msgSizeInByte_oer_;
+extern const TTCN_Typedescriptor_t BroadcastAnnounce_msgSizeInByte_descr_;
+extern const XERdescriptor_t BroadcastAnnounce_totalNumberOfPackets_xer_;
+extern const TTCN_OERdescriptor_t BroadcastAnnounce_totalNumberOfPackets_oer_;
+extern const TTCN_Typedescriptor_t BroadcastAnnounce_totalNumberOfPackets_descr_;
+extern const TTCN_RAWdescriptor_t BroadcastAnnounce_reserved5_raw_;
+extern const XERdescriptor_t BroadcastAnnounce_reserved5_xer_;
+extern const TTCN_OERdescriptor_t BroadcastAnnounce_reserved5_oer_;
+extern const TTCN_Typedescriptor_t BroadcastAnnounce_reserved5_descr_;
+extern const XERdescriptor_t BroadcastAnnounce_pgnOfMultiPacketMessage_xer_;
+extern const TTCN_OERdescriptor_t BroadcastAnnounce_pgnOfMultiPacketMessage_oer_;
+extern const TTCN_Typedescriptor_t BroadcastAnnounce_pgnOfMultiPacketMessage_descr_;
+extern const TTCN_RAWdescriptor_t BroadcastAnnounce_raw_;
+extern const TTCN_Typedescriptor_t BroadcastAnnounce_descr_;
+extern const TTCN_RAWdescriptor_t TP__CM_raw_;
+extern const TTCN_Typedescriptor_t TP__CM_descr_;
+extern const TTCN_RAWdescriptor_t ETP__MSG__SIZE_raw_;
+extern const XERdescriptor_t ETP__MSG__SIZE_xer_;
+extern const TTCN_OERdescriptor_t ETP__MSG__SIZE_oer_;
+extern const TTCN_Typedescriptor_t ETP__MSG__SIZE_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedMessageRequestToSend_ctrl_raw_;
+extern const XERdescriptor_t ExtendedMessageRequestToSend_ctrl_xer_;
+extern const TTCN_OERdescriptor_t ExtendedMessageRequestToSend_ctrl_oer_;
+extern const TTCN_Typedescriptor_t ExtendedMessageRequestToSend_ctrl_descr_;
+extern const XERdescriptor_t ExtendedMessageRequestToSend_msgSizeInBytes_xer_;
+extern const TTCN_OERdescriptor_t ExtendedMessageRequestToSend_msgSizeInBytes_oer_;
+extern const TTCN_Typedescriptor_t ExtendedMessageRequestToSend_msgSizeInBytes_descr_;
+extern const XERdescriptor_t ExtendedMessageRequestToSend_pgnOfExtendedPacketedMessage_xer_;
+extern const TTCN_OERdescriptor_t ExtendedMessageRequestToSend_pgnOfExtendedPacketedMessage_oer_;
+extern const TTCN_Typedescriptor_t ExtendedMessageRequestToSend_pgnOfExtendedPacketedMessage_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedMessageRequestToSend_raw_;
+extern const TTCN_Typedescriptor_t ExtendedMessageRequestToSend_descr_;
+extern const TTCN_RAWdescriptor_t ETP__NextPacketNumberToSend_raw_;
+extern const XERdescriptor_t ETP__NextPacketNumberToSend_xer_;
+extern const TTCN_OERdescriptor_t ETP__NextPacketNumberToSend_oer_;
+extern const TTCN_Typedescriptor_t ETP__NextPacketNumberToSend_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedMessageClearToSend_ctrl_raw_;
+extern const XERdescriptor_t ExtendedMessageClearToSend_ctrl_xer_;
+extern const TTCN_OERdescriptor_t ExtendedMessageClearToSend_ctrl_oer_;
+extern const TTCN_Typedescriptor_t ExtendedMessageClearToSend_ctrl_descr_;
+extern const XERdescriptor_t ExtendedMessageClearToSend_NumberOfPacketsToSend_xer_;
+extern const TTCN_OERdescriptor_t ExtendedMessageClearToSend_NumberOfPacketsToSend_oer_;
+extern const TTCN_Typedescriptor_t ExtendedMessageClearToSend_NumberOfPacketsToSend_descr_;
+extern const XERdescriptor_t ExtendedMessageClearToSend_nextPacketNumberToSend_xer_;
+extern const TTCN_OERdescriptor_t ExtendedMessageClearToSend_nextPacketNumberToSend_oer_;
+extern const TTCN_Typedescriptor_t ExtendedMessageClearToSend_nextPacketNumberToSend_descr_;
+extern const XERdescriptor_t ExtendedMessageClearToSend_pgnOfExtendedPacketedMessage_xer_;
+extern const TTCN_OERdescriptor_t ExtendedMessageClearToSend_pgnOfExtendedPacketedMessage_oer_;
+extern const TTCN_Typedescriptor_t ExtendedMessageClearToSend_pgnOfExtendedPacketedMessage_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedMessageClearToSend_raw_;
+extern const TTCN_Typedescriptor_t ExtendedMessageClearToSend_descr_;
+extern const TTCN_RAWdescriptor_t ETP__NoPacketForOffset_raw_;
+extern const XERdescriptor_t ETP__NoPacketForOffset_xer_;
+extern const TTCN_OERdescriptor_t ETP__NoPacketForOffset_oer_;
+extern const TTCN_Typedescriptor_t ETP__NoPacketForOffset_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedMessageDataPacketOffset_ctrl_raw_;
+extern const XERdescriptor_t ExtendedMessageDataPacketOffset_ctrl_xer_;
+extern const TTCN_OERdescriptor_t ExtendedMessageDataPacketOffset_ctrl_oer_;
+extern const TTCN_Typedescriptor_t ExtendedMessageDataPacketOffset_ctrl_descr_;
+extern const XERdescriptor_t ExtendedMessageDataPacketOffset_numberOfPacketsToWhichToApplyTheOffset_xer_;
+extern const TTCN_OERdescriptor_t ExtendedMessageDataPacketOffset_numberOfPacketsToWhichToApplyTheOffset_oer_;
+extern const TTCN_Typedescriptor_t ExtendedMessageDataPacketOffset_numberOfPacketsToWhichToApplyTheOffset_descr_;
+extern const XERdescriptor_t ExtendedMessageDataPacketOffset_totalNumberOfPackets_xer_;
+extern const TTCN_OERdescriptor_t ExtendedMessageDataPacketOffset_totalNumberOfPackets_oer_;
+extern const TTCN_Typedescriptor_t ExtendedMessageDataPacketOffset_totalNumberOfPackets_descr_;
+extern const XERdescriptor_t ExtendedMessageDataPacketOffset_dataPacketOffset_xer_;
+extern const TTCN_OERdescriptor_t ExtendedMessageDataPacketOffset_dataPacketOffset_oer_;
+extern const TTCN_Typedescriptor_t ExtendedMessageDataPacketOffset_dataPacketOffset_descr_;
+extern const XERdescriptor_t ExtendedMessageDataPacketOffset_pgnOfExtendedPacketedMessage_xer_;
+extern const TTCN_OERdescriptor_t ExtendedMessageDataPacketOffset_pgnOfExtendedPacketedMessage_oer_;
+extern const TTCN_Typedescriptor_t ExtendedMessageDataPacketOffset_pgnOfExtendedPacketedMessage_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedMessageDataPacketOffset_raw_;
+extern const TTCN_Typedescriptor_t ExtendedMessageDataPacketOffset_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedMessageEndOfMessageAcknowledgement_ctrl_raw_;
+extern const XERdescriptor_t ExtendedMessageEndOfMessageAcknowledgement_ctrl_xer_;
+extern const TTCN_OERdescriptor_t ExtendedMessageEndOfMessageAcknowledgement_ctrl_oer_;
+extern const TTCN_Typedescriptor_t ExtendedMessageEndOfMessageAcknowledgement_ctrl_descr_;
+extern const XERdescriptor_t ExtendedMessageEndOfMessageAcknowledgement_numberOfBytesTransferred_xer_;
+extern const TTCN_OERdescriptor_t ExtendedMessageEndOfMessageAcknowledgement_numberOfBytesTransferred_oer_;
+extern const TTCN_Typedescriptor_t ExtendedMessageEndOfMessageAcknowledgement_numberOfBytesTransferred_descr_;
+extern const XERdescriptor_t ExtendedMessageEndOfMessageAcknowledgement_pgnOfExtendedPacketedMessage_xer_;
+extern const TTCN_OERdescriptor_t ExtendedMessageEndOfMessageAcknowledgement_pgnOfExtendedPacketedMessage_oer_;
+extern const TTCN_Typedescriptor_t ExtendedMessageEndOfMessageAcknowledgement_pgnOfExtendedPacketedMessage_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedMessageEndOfMessageAcknowledgement_raw_;
+extern const TTCN_Typedescriptor_t ExtendedMessageEndOfMessageAcknowledgement_descr_;
+extern const TTCN_RAWdescriptor_t e__ETP__ConnectionAbort__AbortReason_raw_;
+extern const TTCN_Typedescriptor_t e__ETP__ConnectionAbort__AbortReason_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedMessageConnectionAbort_ctrl_raw_;
+extern const XERdescriptor_t ExtendedMessageConnectionAbort_ctrl_xer_;
+extern const TTCN_OERdescriptor_t ExtendedMessageConnectionAbort_ctrl_oer_;
+extern const TTCN_Typedescriptor_t ExtendedMessageConnectionAbort_ctrl_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedMessageConnectionAbort_reserved3_raw_;
+extern const XERdescriptor_t ExtendedMessageConnectionAbort_reserved3_xer_;
+extern const TTCN_OERdescriptor_t ExtendedMessageConnectionAbort_reserved3_oer_;
+extern const TTCN_Typedescriptor_t ExtendedMessageConnectionAbort_reserved3_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedMessageConnectionAbort_reserved4_raw_;
+extern const XERdescriptor_t ExtendedMessageConnectionAbort_reserved4_xer_;
+extern const TTCN_OERdescriptor_t ExtendedMessageConnectionAbort_reserved4_oer_;
+extern const TTCN_Typedescriptor_t ExtendedMessageConnectionAbort_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedMessageConnectionAbort_reserved5_raw_;
+extern const XERdescriptor_t ExtendedMessageConnectionAbort_reserved5_xer_;
+extern const TTCN_OERdescriptor_t ExtendedMessageConnectionAbort_reserved5_oer_;
+extern const TTCN_Typedescriptor_t ExtendedMessageConnectionAbort_reserved5_descr_;
+extern const XERdescriptor_t ExtendedMessageConnectionAbort_pgnOfExtendedPacketedMessage_xer_;
+extern const TTCN_OERdescriptor_t ExtendedMessageConnectionAbort_pgnOfExtendedPacketedMessage_oer_;
+extern const TTCN_Typedescriptor_t ExtendedMessageConnectionAbort_pgnOfExtendedPacketedMessage_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedMessageConnectionAbort_raw_;
+extern const TTCN_Typedescriptor_t ExtendedMessageConnectionAbort_descr_;
+extern const TTCN_RAWdescriptor_t ETP__CM_raw_;
+extern const TTCN_Typedescriptor_t ETP__CM_descr_;
+extern const XERdescriptor_t TP__DT_seq__no_xer_;
+extern const TTCN_OERdescriptor_t TP__DT_seq__no_oer_;
+extern const TTCN_Typedescriptor_t TP__DT_seq__no_descr_;
+extern const XERdescriptor_t TP__DT_data_xer_;
+extern const TTCN_OERdescriptor_t TP__DT_data_oer_;
+extern const TTCN_Typedescriptor_t TP__DT_data_descr_;
+extern const TTCN_RAWdescriptor_t TP__DT_raw_;
+extern const TTCN_Typedescriptor_t TP__DT_descr_;
+extern const XERdescriptor_t ETP__DT_seq__no_xer_;
+extern const TTCN_OERdescriptor_t ETP__DT_seq__no_oer_;
+extern const TTCN_Typedescriptor_t ETP__DT_seq__no_descr_;
+extern const XERdescriptor_t ETP__DT_data_xer_;
+extern const TTCN_OERdescriptor_t ETP__DT_data_oer_;
+extern const TTCN_Typedescriptor_t ETP__DT_data_descr_;
+extern const TTCN_RAWdescriptor_t ETP__DT_raw_;
+extern const TTCN_Typedescriptor_t ETP__DT_descr_;
+extern TTCN_Module module_object;
+
+} /* end of namespace */
+
+#endif
diff --git a/demo/IsobusCMMessageTypes.o b/demo/IsobusCMMessageTypes.o
new file mode 100644
index 0000000..f057375
--- /dev/null
+++ b/demo/IsobusCMMessageTypes.o
Binary files differ
diff --git a/demo/IsobusMessageTypes.cc b/demo/IsobusMessageTypes.cc
new file mode 100644
index 0000000..256d571
--- /dev/null
+++ b/demo/IsobusMessageTypes.cc
@@ -0,0 +1,46 @@
+// This C++ source file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+/* Including header files */
+
+#include "IsobusMessageTypes.hh"
+
+namespace IsobusMessageTypes {
+
+/* Literal string constants */
+
+static const unsigned char module_checksum[] = { 0x1a, 0x22, 0xb5, 0x85, 0xce, 0x2b, 0xc9, 0x77, 0x44, 0xc6, 0xff, 0x1c, 0xa5, 0x82, 0xcd, 0x02 };
+
+/* Global variable definitions */
+
+const TTCN_RAWdescriptor_t INT24nb_raw_ = {24,SG_NO,ORDER_MSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT24nb_xer_ = { {"INT24nb>\n", "INT24nb>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT24nb_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT24nb_descr_ = { "@IsobusMessageTypes.INT24nb", &INTEGER_ber_, &INT24nb_raw_, &INTEGER_text_, &INT24nb_xer_, &INTEGER_json_, &INT24nb_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       PGN_xer_ = { {"PGN>\n", "PGN>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t PGN_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t PGN_descr_ = { "@IsobusMessageTypes.PGN", &INTEGER_ber_, &INT24nb_raw_, &INTEGER_text_, &PGN_xer_, &INTEGER_json_, &PGN_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT21_raw_ = {21,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,21,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT21_xer_ = { {"BIT21>\n", "BIT21>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT21_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT21_descr_ = { "@IsobusMessageTypes.BIT21", &BITSTRING_ber_, &BIT21_raw_, NULL, &BIT21_xer_, &BITSTRING_json_, &BIT21_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT2_raw_ = {16,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT2_xer_ = { {"INT2>\n", "INT2>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT2_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT2_descr_ = { "@IsobusMessageTypes.INT2", &INTEGER_ber_, &INT2_raw_, &INTEGER_text_, &INT2_xer_, &INTEGER_json_, &INT2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t INT3_raw_ = {24,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       INT3_xer_ = { {"INT3>\n", "INT3>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t INT3_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t INT3_descr_ = { "@IsobusMessageTypes.INT3", &INTEGER_ber_, &INT3_raw_, &INTEGER_text_, &INT3_xer_, &INTEGER_json_, &INT3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+TTCN_Module module_object("IsobusMessageTypes", __DATE__, __TIME__, module_checksum, NULL, NULL, 0U, 4294967295U, 4294967295U, 4294967295U, NULL, 0LU, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
+
+static const RuntimeVersionChecker ver_checker(  current_runtime_version.requires_major_version_6,
+  current_runtime_version.requires_minor_version_6,
+  current_runtime_version.requires_patch_level_0,  current_runtime_version.requires_runtime_1);
+
+} /* end of namespace */
diff --git a/demo/IsobusMessageTypes.d b/demo/IsobusMessageTypes.d
new file mode 100644
index 0000000..c70f784
--- /dev/null
+++ b/demo/IsobusMessageTypes.d
@@ -0,0 +1,58 @@
+IsobusMessageTypes.o IsobusMessageTypes.d : IsobusMessageTypes.cc IsobusMessageTypes.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TTCN3.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/version.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/cversion.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Types.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Vector.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Error.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Basetype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Encdec.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RInt.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON_Tokenizer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Logger.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Template.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Integer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ttcn3float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Boolean.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Null.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Optional.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Param_Types.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/memory.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/BER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Textbuf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Parameters.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XmlReader.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Objid.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Verdicttype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Component.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Bitstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RAW.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/CharCoding.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Hexstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Octetstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Any.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Universal_charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Struct_of.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Array.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_CharacterString.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_External.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TEXT.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_EmbeddedPDV.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Addfunc.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Timer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Port.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Event_Handler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/TitanLoggerApiSimple.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/PreGenRecordOf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Module_list.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Snapshot.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Default.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Runtime.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/OER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Profiler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ProfilerTools.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Debugger.hh
diff --git a/demo/IsobusMessageTypes.hh b/demo/IsobusMessageTypes.hh
new file mode 100644
index 0000000..2d53566
--- /dev/null
+++ b/demo/IsobusMessageTypes.hh
@@ -0,0 +1,71 @@
+// This C++ header file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+#ifndef IsobusMessageTypes_HH
+#define IsobusMessageTypes_HH
+
+#ifdef TITAN_RUNTIME_2
+#error Generated code does not match with used runtime.\
+ Code was generated without -R option but -DTITAN_RUNTIME_2 was used.
+#endif
+
+/* Header file includes */
+
+#include <TTCN3.hh>
+
+#if TTCN3_VERSION != 60600
+#error Version mismatch detected.\
+ Please check the version of the TTCN-3 compiler and the base library.\
+ Run make clean and rebuild the project if the version of the compiler changed recently.
+#endif
+
+#ifndef LINUX
+#error This file should be compiled on LINUX
+#endif
+
+namespace IsobusMessageTypes {
+
+/* Type definitions */
+
+typedef INTEGER INT24nb;
+typedef INTEGER_template INT24nb_template;
+typedef INTEGER PGN;
+typedef INTEGER_template PGN_template;
+typedef BITSTRING BIT21;
+typedef BITSTRING_template BIT21_template;
+typedef INTEGER INT2;
+typedef INTEGER_template INT2_template;
+typedef INTEGER INT3;
+typedef INTEGER_template INT3_template;
+
+/* Global variable declarations */
+
+extern const TTCN_RAWdescriptor_t INT24nb_raw_;
+extern const XERdescriptor_t INT24nb_xer_;
+extern const TTCN_OERdescriptor_t INT24nb_oer_;
+extern const TTCN_Typedescriptor_t INT24nb_descr_;
+extern const XERdescriptor_t PGN_xer_;
+extern const TTCN_OERdescriptor_t PGN_oer_;
+extern const TTCN_Typedescriptor_t PGN_descr_;
+extern const TTCN_RAWdescriptor_t BIT21_raw_;
+extern const XERdescriptor_t BIT21_xer_;
+extern const TTCN_OERdescriptor_t BIT21_oer_;
+extern const TTCN_Typedescriptor_t BIT21_descr_;
+extern const TTCN_RAWdescriptor_t INT2_raw_;
+extern const XERdescriptor_t INT2_xer_;
+extern const TTCN_OERdescriptor_t INT2_oer_;
+extern const TTCN_Typedescriptor_t INT2_descr_;
+extern const TTCN_RAWdescriptor_t INT3_raw_;
+extern const XERdescriptor_t INT3_xer_;
+extern const TTCN_OERdescriptor_t INT3_oer_;
+extern const TTCN_Typedescriptor_t INT3_descr_;
+extern TTCN_Module module_object;
+
+} /* end of namespace */
+
+#endif
diff --git a/demo/IsobusMessageTypes.o b/demo/IsobusMessageTypes.o
new file mode 100644
index 0000000..f31754e
--- /dev/null
+++ b/demo/IsobusMessageTypes.o
Binary files differ
diff --git a/demo/IsobusNMMessageTypes.cc b/demo/IsobusNMMessageTypes.cc
new file mode 100644
index 0000000..537a96f
--- /dev/null
+++ b/demo/IsobusNMMessageTypes.cc
@@ -0,0 +1,47191 @@
+// This C++ source file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+/* Including header files */
+
+#include "IsobusNMMessageTypes.hh"
+
+namespace IsobusNMMessageTypes {
+
+/* Prototypes of static functions */
+
+static void pre_init_module();
+static void post_init_module();
+
+/* Literal string constants */
+
+static const unsigned char module_checksum[] = { 0xce, 0xbe, 0x6c, 0x08, 0xb0, 0x7a, 0xe6, 0x65, 0xa6, 0xe3, 0xd8, 0x5d, 0x42, 0xed, 0xc8, 0x2f };
+
+/* Global variable definitions */
+
+const XERdescriptor_t       DestinationAddress_xer_ = { {"DestinationAddress>\n", "DestinationAddress>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int DestinationAddress_oer_ext_arr_[0] = {};
+const int DestinationAddress_oer_p_[0] = {};
+const TTCN_OERdescriptor_t DestinationAddress_oer_ = { -1, TRUE, 1, FALSE, 0, 0, DestinationAddress_oer_ext_arr_, 0, DestinationAddress_oer_p_};
+const TTCN_Typedescriptor_t DestinationAddress_descr_ = { "@IsobusNMMessageTypes.DestinationAddress", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &DestinationAddress_xer_, &OCTETSTRING_json_, &DestinationAddress_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       PDUFormat_xer_ = { {"PDUFormat>\n", "PDUFormat>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int PDUFormat_oer_ext_arr_[0] = {};
+const int PDUFormat_oer_p_[0] = {};
+const TTCN_OERdescriptor_t PDUFormat_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PDUFormat_oer_ext_arr_, 0, PDUFormat_oer_p_};
+const TTCN_Typedescriptor_t PDUFormat_descr_ = { "@IsobusNMMessageTypes.PDUFormat", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PDUFormat_xer_, &OCTETSTRING_json_, &PDUFormat_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SourceAddress_xer_ = { {"SourceAddress>\n", "SourceAddress>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SourceAddress_oer_ext_arr_[0] = {};
+const int SourceAddress_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SourceAddress_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SourceAddress_oer_ext_arr_, 0, SourceAddress_oer_p_};
+const TTCN_Typedescriptor_t SourceAddress_descr_ = { "@IsobusNMMessageTypes.SourceAddress", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &SourceAddress_xer_, &OCTETSTRING_json_, &SourceAddress_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t Priority_raw_ = {6,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,6,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       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 Priority_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t Priority_descr_ = { "@IsobusNMMessageTypes.Priority", &BITSTRING_ber_, &Priority_raw_, NULL, &Priority_xer_, &BITSTRING_json_, &Priority_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SelfConfigurableAddressBits_xer_ = { {"SelfConfigurableAddressBits>\n", "SelfConfigurableAddressBits>\n"}, {29, 29}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SelfConfigurableAddressBits_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SelfConfigurableAddressBits_descr_ = { "@IsobusNMMessageTypes.SelfConfigurableAddressBits", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &SelfConfigurableAddressBits_xer_, &BITSTRING_json_, &SelfConfigurableAddressBits_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       IndustryGroupBits_xer_ = { {"IndustryGroupBits>\n", "IndustryGroupBits>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t IndustryGroupBits_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t IndustryGroupBits_descr_ = { "@IsobusNMMessageTypes.IndustryGroupBits", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &IndustryGroupBits_xer_, &BITSTRING_json_, &IndustryGroupBits_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       DeviceClassInstanceBits_xer_ = { {"DeviceClassInstanceBits>\n", "DeviceClassInstanceBits>\n"}, {25, 25}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t DeviceClassInstanceBits_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t DeviceClassInstanceBits_descr_ = { "@IsobusNMMessageTypes.DeviceClassInstanceBits", &BITSTRING_ber_, &General__Types::BIT4_raw_, NULL, &DeviceClassInstanceBits_xer_, &BITSTRING_json_, &DeviceClassInstanceBits_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       DeviceClassBits_xer_ = { {"DeviceClassBits>\n", "DeviceClassBits>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t DeviceClassBits_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t DeviceClassBits_descr_ = { "@IsobusNMMessageTypes.DeviceClassBits", &BITSTRING_ber_, &General__Types::BIT7_raw_, NULL, &DeviceClassBits_xer_, &BITSTRING_json_, &DeviceClassBits_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ReservedBits_xer_ = { {"ReservedBits>\n", "ReservedBits>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ReservedBits_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ReservedBits_descr_ = { "@IsobusNMMessageTypes.ReservedBits", &BITSTRING_ber_, &General__Types::BIT1_raw_, NULL, &ReservedBits_xer_, &BITSTRING_json_, &ReservedBits_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       FunctionBits_xer_ = { {"FunctionBits>\n", "FunctionBits>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t FunctionBits_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t FunctionBits_descr_ = { "@IsobusNMMessageTypes.FunctionBits", &BITSTRING_ber_, &General__Types::BIT8_raw_, NULL, &FunctionBits_xer_, &BITSTRING_json_, &FunctionBits_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       FunctionInstanceBits_xer_ = { {"FunctionInstanceBits>\n", "FunctionInstanceBits>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t FunctionInstanceBits_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t FunctionInstanceBits_descr_ = { "@IsobusNMMessageTypes.FunctionInstanceBits", &BITSTRING_ber_, &General__Types::BIT5_raw_, NULL, &FunctionInstanceBits_xer_, &BITSTRING_json_, &FunctionInstanceBits_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ECUInstanceBits_xer_ = { {"ECUInstanceBits>\n", "ECUInstanceBits>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ECUInstanceBits_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ECUInstanceBits_descr_ = { "@IsobusNMMessageTypes.ECUInstanceBits", &BITSTRING_ber_, &General__Types::BIT3_raw_, NULL, &ECUInstanceBits_xer_, &BITSTRING_json_, &ECUInstanceBits_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ManufacturerCodeBits_xer_ = { {"ManufacturerCodeBits>\n", "ManufacturerCodeBits>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ManufacturerCodeBits_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ManufacturerCodeBits_descr_ = { "@IsobusNMMessageTypes.ManufacturerCodeBits", &BITSTRING_ber_, &General__Types::BIT11_raw_, NULL, &ManufacturerCodeBits_xer_, &BITSTRING_json_, &ManufacturerCodeBits_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       IdentityNumberBits_xer_ = { {"IdentityNumberBits>\n", "IdentityNumberBits>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t IdentityNumberBits_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t IdentityNumberBits_descr_ = { "@IsobusNMMessageTypes.IdentityNumberBits", &BITSTRING_ber_, &IsobusMessageTypes::BIT21_raw_, NULL, &IdentityNumberBits_xer_, &BITSTRING_json_, &IdentityNumberBits_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t NAME_selfConfigurableAddressValue_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,NULL,false};
+const XERdescriptor_t       NAME_selfConfigurableAddressValue_xer_ = { {"selfConfigurableAddressValue>\n", "selfConfigurableAddressValue>\n"}, {30, 30}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t NAME_selfConfigurableAddressValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t NAME_selfConfigurableAddressValue_descr_ = { "@IsobusNMMessageTypes.NAME.selfConfigurableAddressValue", &BITSTRING_ber_, &NAME_selfConfigurableAddressValue_raw_, NULL, &NAME_selfConfigurableAddressValue_xer_, &BITSTRING_json_, &NAME_selfConfigurableAddressValue_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t NAME_industryGroupValue_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,NULL,false};
+const XERdescriptor_t       NAME_industryGroupValue_xer_ = { {"industryGroupValue>\n", "industryGroupValue>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t NAME_industryGroupValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t NAME_industryGroupValue_descr_ = { "@IsobusNMMessageTypes.NAME.industryGroupValue", &BITSTRING_ber_, &NAME_industryGroupValue_raw_, NULL, &NAME_industryGroupValue_xer_, &BITSTRING_json_, &NAME_industryGroupValue_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t NAME_deviceClassInstanceValue_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,4,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       NAME_deviceClassInstanceValue_xer_ = { {"deviceClassInstanceValue>\n", "deviceClassInstanceValue>\n"}, {26, 26}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t NAME_deviceClassInstanceValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t NAME_deviceClassInstanceValue_descr_ = { "@IsobusNMMessageTypes.NAME.deviceClassInstanceValue", &BITSTRING_ber_, &NAME_deviceClassInstanceValue_raw_, NULL, &NAME_deviceClassInstanceValue_xer_, &BITSTRING_json_, &NAME_deviceClassInstanceValue_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t NAME_deviceClassValue_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,NULL,false};
+const XERdescriptor_t       NAME_deviceClassValue_xer_ = { {"deviceClassValue>\n", "deviceClassValue>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t NAME_deviceClassValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t NAME_deviceClassValue_descr_ = { "@IsobusNMMessageTypes.NAME.deviceClassValue", &BITSTRING_ber_, &NAME_deviceClassValue_raw_, NULL, &NAME_deviceClassValue_xer_, &BITSTRING_json_, &NAME_deviceClassValue_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t NAME_reserveValued_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,NULL,false};
+const XERdescriptor_t       NAME_reserveValued_xer_ = { {"reserveValued>\n", "reserveValued>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t NAME_reserveValued_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t NAME_reserveValued_descr_ = { "@IsobusNMMessageTypes.NAME.reserveValued", &BITSTRING_ber_, &NAME_reserveValued_raw_, NULL, &NAME_reserveValued_xer_, &BITSTRING_json_, &NAME_reserveValued_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t NAME_functionValue_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,8,0,NULL,8,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       NAME_functionValue_xer_ = { {"functionValue>\n", "functionValue>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t NAME_functionValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t NAME_functionValue_descr_ = { "@IsobusNMMessageTypes.NAME.functionValue", &BITSTRING_ber_, &NAME_functionValue_raw_, NULL, &NAME_functionValue_xer_, &BITSTRING_json_, &NAME_functionValue_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t NAME_functionInstanceValue_raw_ = {5,SG_NO,ORDER_LSB,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,NULL,false};
+const XERdescriptor_t       NAME_functionInstanceValue_xer_ = { {"functionInstanceValue>\n", "functionInstanceValue>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t NAME_functionInstanceValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t NAME_functionInstanceValue_descr_ = { "@IsobusNMMessageTypes.NAME.functionInstanceValue", &BITSTRING_ber_, &NAME_functionInstanceValue_raw_, NULL, &NAME_functionInstanceValue_xer_, &BITSTRING_json_, &NAME_functionInstanceValue_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t NAME_ecuInstancceValue_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,NULL,false};
+const XERdescriptor_t       NAME_ecuInstancceValue_xer_ = { {"ecuInstancceValue>\n", "ecuInstancceValue>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t NAME_ecuInstancceValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t NAME_ecuInstancceValue_descr_ = { "@IsobusNMMessageTypes.NAME.ecuInstancceValue", &BITSTRING_ber_, &NAME_ecuInstancceValue_raw_, NULL, &NAME_ecuInstancceValue_xer_, &BITSTRING_json_, &NAME_ecuInstancceValue_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t NAME_manufacturerCodeValue_raw_ = {11,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,11,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       NAME_manufacturerCodeValue_xer_ = { {"manufacturerCodeValue>\n", "manufacturerCodeValue>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t NAME_manufacturerCodeValue_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t NAME_manufacturerCodeValue_descr_ = { "@IsobusNMMessageTypes.NAME.manufacturerCodeValue", &BITSTRING_ber_, &NAME_manufacturerCodeValue_raw_, NULL, &NAME_manufacturerCodeValue_xer_, &BITSTRING_json_, &NAME_manufacturerCodeValue_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t NAME_identityNumberBits_raw_ = {21,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,21,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       NAME_identityNumberBits_xer_ = { {"identityNumberBits>\n", "identityNumberBits>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t NAME_identityNumberBits_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t NAME_identityNumberBits_descr_ = { "@IsobusNMMessageTypes.NAME.identityNumberBits", &BITSTRING_ber_, &NAME_identityNumberBits_raw_, NULL, &NAME_identityNumberBits_xer_, &BITSTRING_json_, &NAME_identityNumberBits_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t NAME_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,NULL,false};
+// No XER for NAME
+const TTCN_Typedescriptor_t NAME_descr_ = { "@IsobusNMMessageTypes.NAME", NULL, &NAME_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CannotClaimSourceAddress_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for CannotClaimSourceAddress
+const TTCN_Typedescriptor_t CannotClaimSourceAddress_descr_ = { "@IsobusNMMessageTypes.CannotClaimSourceAddress", NULL, &CannotClaimSourceAddress_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t AddressClaimed_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for AddressClaimed
+const TTCN_Typedescriptor_t AddressClaimed_descr_ = { "@IsobusNMMessageTypes.AddressClaimed", NULL, &AddressClaimed_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       RequestForAddressClaimed_pgn_xer_ = { {"pgn>\n", "pgn>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t RequestForAddressClaimed_pgn_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t RequestForAddressClaimed_pgn_descr_ = { "@IsobusNMMessageTypes.RequestForAddressClaimed.pgn", &INTEGER_ber_, &IsobusMessageTypes::INT24nb_raw_, &INTEGER_text_, &RequestForAddressClaimed_pgn_xer_, &INTEGER_json_, &RequestForAddressClaimed_pgn_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t RequestForAddressClaimed_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for RequestForAddressClaimed
+const TTCN_Typedescriptor_t RequestForAddressClaimed_descr_ = { "@IsobusNMMessageTypes.RequestForAddressClaimed", NULL, &RequestForAddressClaimed_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       CommandedAddress_newSourceAddress_xer_ = { {"newSourceAddress>\n", "newSourceAddress>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int CommandedAddress_newSourceAddress_oer_ext_arr_[0] = {};
+const int CommandedAddress_newSourceAddress_oer_p_[0] = {};
+const TTCN_OERdescriptor_t CommandedAddress_newSourceAddress_oer_ = { -1, TRUE, 1, FALSE, 0, 0, CommandedAddress_newSourceAddress_oer_ext_arr_, 0, CommandedAddress_newSourceAddress_oer_p_};
+const TTCN_Typedescriptor_t CommandedAddress_newSourceAddress_descr_ = { "@IsobusNMMessageTypes.CommandedAddress.newSourceAddress", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &CommandedAddress_newSourceAddress_xer_, &OCTETSTRING_json_, &CommandedAddress_newSourceAddress_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CommandedAddress_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for CommandedAddress
+const TTCN_Typedescriptor_t CommandedAddress_descr_ = { "@IsobusNMMessageTypes.CommandedAddress", NULL, &CommandedAddress_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       Function_xer_ = { {"Function>\n", "Function>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t Function_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t Function_descr_ = { "@IsobusNMMessageTypes.Function", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &Function_xer_, &INTEGER_json_, &Function_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       N__MFDB__Request_msgFunction_xer_ = { {"msgFunction>\n", "msgFunction>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t N__MFDB__Request_msgFunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t N__MFDB__Request_msgFunction_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Request.msgFunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &N__MFDB__Request_msgFunction_xer_, &INTEGER_json_, &N__MFDB__Request_msgFunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t e__PortNumber_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,4,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for e__PortNumber
+const TTCN_Typedescriptor_t e__PortNumber_descr_ = { "@IsobusNMMessageTypes.e_PortNumber", NULL, &e__PortNumber_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t PortPair_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for PortPair
+const TTCN_Typedescriptor_t PortPair_descr_ = { "@IsobusNMMessageTypes.PortPair", NULL, &PortPair_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__MFDB__Request_reserved3_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       N__MFDB__Request_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int N__MFDB__Request_reserved3_oer_ext_arr_[0] = {};
+const int N__MFDB__Request_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t N__MFDB__Request_reserved3_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__MFDB__Request_reserved3_oer_ext_arr_, 0, N__MFDB__Request_reserved3_oer_p_};
+const TTCN_Typedescriptor_t N__MFDB__Request_reserved3_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Request.reserved3", &OCTETSTRING_ber_, &N__MFDB__Request_reserved3_raw_, &OCTETSTRING_text_, &N__MFDB__Request_reserved3_xer_, &OCTETSTRING_json_, &N__MFDB__Request_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__MFDB__Request_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       N__MFDB__Request_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int N__MFDB__Request_reserved4_oer_ext_arr_[0] = {};
+const int N__MFDB__Request_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t N__MFDB__Request_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__MFDB__Request_reserved4_oer_ext_arr_, 0, N__MFDB__Request_reserved4_oer_p_};
+const TTCN_Typedescriptor_t N__MFDB__Request_reserved4_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Request.reserved4", &OCTETSTRING_ber_, &N__MFDB__Request_reserved4_raw_, &OCTETSTRING_text_, &N__MFDB__Request_reserved4_xer_, &OCTETSTRING_json_, &N__MFDB__Request_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__MFDB__Request_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       N__MFDB__Request_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int N__MFDB__Request_reserved5_oer_ext_arr_[0] = {};
+const int N__MFDB__Request_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t N__MFDB__Request_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__MFDB__Request_reserved5_oer_ext_arr_, 0, N__MFDB__Request_reserved5_oer_p_};
+const TTCN_Typedescriptor_t N__MFDB__Request_reserved5_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Request.reserved5", &OCTETSTRING_ber_, &N__MFDB__Request_reserved5_raw_, &OCTETSTRING_text_, &N__MFDB__Request_reserved5_xer_, &OCTETSTRING_json_, &N__MFDB__Request_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__MFDB__Request_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       N__MFDB__Request_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int N__MFDB__Request_reserved6_oer_ext_arr_[0] = {};
+const int N__MFDB__Request_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t N__MFDB__Request_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__MFDB__Request_reserved6_oer_ext_arr_, 0, N__MFDB__Request_reserved6_oer_p_};
+const TTCN_Typedescriptor_t N__MFDB__Request_reserved6_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Request.reserved6", &OCTETSTRING_ber_, &N__MFDB__Request_reserved6_raw_, &OCTETSTRING_text_, &N__MFDB__Request_reserved6_xer_, &OCTETSTRING_json_, &N__MFDB__Request_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__MFDB__Request_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       N__MFDB__Request_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int N__MFDB__Request_reserved7_oer_ext_arr_[0] = {};
+const int N__MFDB__Request_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t N__MFDB__Request_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__MFDB__Request_reserved7_oer_ext_arr_, 0, N__MFDB__Request_reserved7_oer_p_};
+const TTCN_Typedescriptor_t N__MFDB__Request_reserved7_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Request.reserved7", &OCTETSTRING_ber_, &N__MFDB__Request_reserved7_raw_, &OCTETSTRING_text_, &N__MFDB__Request_reserved7_xer_, &OCTETSTRING_json_, &N__MFDB__Request_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__MFDB__Request_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       N__MFDB__Request_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int N__MFDB__Request_reserved8_oer_ext_arr_[0] = {};
+const int N__MFDB__Request_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t N__MFDB__Request_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__MFDB__Request_reserved8_oer_ext_arr_, 0, N__MFDB__Request_reserved8_oer_p_};
+const TTCN_Typedescriptor_t N__MFDB__Request_reserved8_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Request.reserved8", &OCTETSTRING_ber_, &N__MFDB__Request_reserved8_raw_, &OCTETSTRING_text_, &N__MFDB__Request_reserved8_xer_, &OCTETSTRING_json_, &N__MFDB__Request_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__MFDB__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,NULL,false};
+// No XER for N__MFDB__Request
+const TTCN_Typedescriptor_t N__MFDB__Request_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Request", NULL, &N__MFDB__Request_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       N__MFDB__Response_msgFunction_xer_ = { {"msgFunction>\n", "msgFunction>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t N__MFDB__Response_msgFunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t N__MFDB__Response_msgFunction_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Response.msgFunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &N__MFDB__Response_msgFunction_xer_, &INTEGER_json_, &N__MFDB__Response_msgFunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t e__FilterMode_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,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for e__FilterMode
+const TTCN_Typedescriptor_t e__FilterMode_descr_ = { "@IsobusNMMessageTypes.e_FilterMode", NULL, &e__FilterMode_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__MFDB__Response_pgnEntries_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for N__MFDB__Response_pgnEntries
+const TTCN_Typedescriptor_t N__MFDB__Response_pgnEntries_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Response.pgnEntries", NULL, &N__MFDB__Response_pgnEntries_raw_, NULL, NULL, NULL, NULL, &IsobusMessageTypes::PGN_descr_, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       N__MFDB__Response_pgnEntries_0_xer_ = { {"PGN>\n", "PGN>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t N__MFDB__Response_pgnEntries_0_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t N__MFDB__Response_pgnEntries_0_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Response.pgnEntries.<oftype>", &INTEGER_ber_, &IsobusMessageTypes::INT24nb_raw_, &INTEGER_text_, &N__MFDB__Response_pgnEntries_0_xer_, &INTEGER_json_, &N__MFDB__Response_pgnEntries_0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__MFDB__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,NULL,false};
+// No XER for N__MFDB__Response
+const TTCN_Typedescriptor_t N__MFDB__Response_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Response", NULL, &N__MFDB__Response_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       N__MFDB__Add_msgFunction_xer_ = { {"msgFunction>\n", "msgFunction>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t N__MFDB__Add_msgFunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t N__MFDB__Add_msgFunction_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Add.msgFunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &N__MFDB__Add_msgFunction_xer_, &INTEGER_json_, &N__MFDB__Add_msgFunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__MFDB__Add_pgnEntries_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for N__MFDB__Add_pgnEntries
+const TTCN_Typedescriptor_t N__MFDB__Add_pgnEntries_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Add.pgnEntries", NULL, &N__MFDB__Add_pgnEntries_raw_, NULL, NULL, NULL, NULL, &IsobusMessageTypes::PGN_descr_, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       N__MFDB__Add_pgnEntries_0_xer_ = { {"PGN>\n", "PGN>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t N__MFDB__Add_pgnEntries_0_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t N__MFDB__Add_pgnEntries_0_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Add.pgnEntries.<oftype>", &INTEGER_ber_, &IsobusMessageTypes::INT24nb_raw_, &INTEGER_text_, &N__MFDB__Add_pgnEntries_0_xer_, &INTEGER_json_, &N__MFDB__Add_pgnEntries_0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__MFDB__Add_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for N__MFDB__Add
+const TTCN_Typedescriptor_t N__MFDB__Add_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Add", NULL, &N__MFDB__Add_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       N__MFDB__Delete_msgFunction_xer_ = { {"msgFunction>\n", "msgFunction>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t N__MFDB__Delete_msgFunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t N__MFDB__Delete_msgFunction_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Delete.msgFunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &N__MFDB__Delete_msgFunction_xer_, &INTEGER_json_, &N__MFDB__Delete_msgFunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__MFDB__Delete_pgnEntries_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for N__MFDB__Delete_pgnEntries
+const TTCN_Typedescriptor_t N__MFDB__Delete_pgnEntries_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Delete.pgnEntries", NULL, &N__MFDB__Delete_pgnEntries_raw_, NULL, NULL, NULL, NULL, &IsobusMessageTypes::PGN_descr_, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       N__MFDB__Delete_pgnEntries_0_xer_ = { {"PGN>\n", "PGN>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t N__MFDB__Delete_pgnEntries_0_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t N__MFDB__Delete_pgnEntries_0_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Delete.pgnEntries.<oftype>", &INTEGER_ber_, &IsobusMessageTypes::INT24nb_raw_, &INTEGER_text_, &N__MFDB__Delete_pgnEntries_0_xer_, &INTEGER_json_, &N__MFDB__Delete_pgnEntries_0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__MFDB__Delete_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for N__MFDB__Delete
+const TTCN_Typedescriptor_t N__MFDB__Delete_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Delete", NULL, &N__MFDB__Delete_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       N__MFDB__Clear_msgFunction_xer_ = { {"msgFunction>\n", "msgFunction>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t N__MFDB__Clear_msgFunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t N__MFDB__Clear_msgFunction_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Clear.msgFunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &N__MFDB__Clear_msgFunction_xer_, &INTEGER_json_, &N__MFDB__Clear_msgFunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__MFDB__Clear_reserved3_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       N__MFDB__Clear_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int N__MFDB__Clear_reserved3_oer_ext_arr_[0] = {};
+const int N__MFDB__Clear_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t N__MFDB__Clear_reserved3_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__MFDB__Clear_reserved3_oer_ext_arr_, 0, N__MFDB__Clear_reserved3_oer_p_};
+const TTCN_Typedescriptor_t N__MFDB__Clear_reserved3_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Clear.reserved3", &OCTETSTRING_ber_, &N__MFDB__Clear_reserved3_raw_, &OCTETSTRING_text_, &N__MFDB__Clear_reserved3_xer_, &OCTETSTRING_json_, &N__MFDB__Clear_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__MFDB__Clear_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       N__MFDB__Clear_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int N__MFDB__Clear_reserved4_oer_ext_arr_[0] = {};
+const int N__MFDB__Clear_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t N__MFDB__Clear_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__MFDB__Clear_reserved4_oer_ext_arr_, 0, N__MFDB__Clear_reserved4_oer_p_};
+const TTCN_Typedescriptor_t N__MFDB__Clear_reserved4_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Clear.reserved4", &OCTETSTRING_ber_, &N__MFDB__Clear_reserved4_raw_, &OCTETSTRING_text_, &N__MFDB__Clear_reserved4_xer_, &OCTETSTRING_json_, &N__MFDB__Clear_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__MFDB__Clear_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       N__MFDB__Clear_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int N__MFDB__Clear_reserved5_oer_ext_arr_[0] = {};
+const int N__MFDB__Clear_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t N__MFDB__Clear_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__MFDB__Clear_reserved5_oer_ext_arr_, 0, N__MFDB__Clear_reserved5_oer_p_};
+const TTCN_Typedescriptor_t N__MFDB__Clear_reserved5_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Clear.reserved5", &OCTETSTRING_ber_, &N__MFDB__Clear_reserved5_raw_, &OCTETSTRING_text_, &N__MFDB__Clear_reserved5_xer_, &OCTETSTRING_json_, &N__MFDB__Clear_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__MFDB__Clear_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       N__MFDB__Clear_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int N__MFDB__Clear_reserved6_oer_ext_arr_[0] = {};
+const int N__MFDB__Clear_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t N__MFDB__Clear_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__MFDB__Clear_reserved6_oer_ext_arr_, 0, N__MFDB__Clear_reserved6_oer_p_};
+const TTCN_Typedescriptor_t N__MFDB__Clear_reserved6_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Clear.reserved6", &OCTETSTRING_ber_, &N__MFDB__Clear_reserved6_raw_, &OCTETSTRING_text_, &N__MFDB__Clear_reserved6_xer_, &OCTETSTRING_json_, &N__MFDB__Clear_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__MFDB__Clear_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       N__MFDB__Clear_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int N__MFDB__Clear_reserved7_oer_ext_arr_[0] = {};
+const int N__MFDB__Clear_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t N__MFDB__Clear_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__MFDB__Clear_reserved7_oer_ext_arr_, 0, N__MFDB__Clear_reserved7_oer_p_};
+const TTCN_Typedescriptor_t N__MFDB__Clear_reserved7_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Clear.reserved7", &OCTETSTRING_ber_, &N__MFDB__Clear_reserved7_raw_, &OCTETSTRING_text_, &N__MFDB__Clear_reserved7_xer_, &OCTETSTRING_json_, &N__MFDB__Clear_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__MFDB__Clear_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       N__MFDB__Clear_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int N__MFDB__Clear_reserved8_oer_ext_arr_[0] = {};
+const int N__MFDB__Clear_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t N__MFDB__Clear_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__MFDB__Clear_reserved8_oer_ext_arr_, 0, N__MFDB__Clear_reserved8_oer_p_};
+const TTCN_Typedescriptor_t N__MFDB__Clear_reserved8_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Clear.reserved8", &OCTETSTRING_ber_, &N__MFDB__Clear_reserved8_raw_, &OCTETSTRING_text_, &N__MFDB__Clear_reserved8_xer_, &OCTETSTRING_json_, &N__MFDB__Clear_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__MFDB__Clear_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for N__MFDB__Clear
+const TTCN_Typedescriptor_t N__MFDB__Clear_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Clear", NULL, &N__MFDB__Clear_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       N__MFDB__Create__Entry_msgFunction_xer_ = { {"msgFunction>\n", "msgFunction>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t N__MFDB__Create__Entry_msgFunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t N__MFDB__Create__Entry_msgFunction_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Create_Entry.msgFunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &N__MFDB__Create__Entry_msgFunction_xer_, &INTEGER_json_, &N__MFDB__Create__Entry_msgFunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__MFDB__Create__Entry_pgnEntries_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for N__MFDB__Create__Entry_pgnEntries
+const TTCN_Typedescriptor_t N__MFDB__Create__Entry_pgnEntries_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Create_Entry.pgnEntries", NULL, &N__MFDB__Create__Entry_pgnEntries_raw_, NULL, NULL, NULL, NULL, &IsobusMessageTypes::PGN_descr_, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       N__MFDB__Create__Entry_pgnEntries_0_xer_ = { {"PGN>\n", "PGN>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t N__MFDB__Create__Entry_pgnEntries_0_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t N__MFDB__Create__Entry_pgnEntries_0_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Create_Entry.pgnEntries.<oftype>", &INTEGER_ber_, &IsobusMessageTypes::INT24nb_raw_, &INTEGER_text_, &N__MFDB__Create__Entry_pgnEntries_0_xer_, &INTEGER_json_, &N__MFDB__Create__Entry_pgnEntries_0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__MFDB__Create__Entry_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for N__MFDB__Create__Entry
+const TTCN_Typedescriptor_t N__MFDB__Create__Entry_descr_ = { "@IsobusNMMessageTypes.N_MFDB_Create_Entry", NULL, &N__MFDB__Create__Entry_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       PGNEntry_maxTransferRate_xer_ = { {"maxTransferRate>\n", "maxTransferRate>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t PGNEntry_maxTransferRate_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t PGNEntry_maxTransferRate_descr_ = { "@IsobusNMMessageTypes.PGNEntry.maxTransferRate", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &PGNEntry_maxTransferRate_xer_, &INTEGER_json_, &PGNEntry_maxTransferRate_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       PGNEntry_pgn_xer_ = { {"pgn>\n", "pgn>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t PGNEntry_pgn_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t PGNEntry_pgn_descr_ = { "@IsobusNMMessageTypes.PGNEntry.pgn", &INTEGER_ber_, &IsobusMessageTypes::INT24nb_raw_, &INTEGER_text_, &PGNEntry_pgn_xer_, &INTEGER_json_, &PGNEntry_pgn_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       PGNEntry_nameQualifier_xer_ = { {"nameQualifier>\n", "nameQualifier>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int PGNEntry_nameQualifier_oer_ext_arr_[0] = {};
+const int PGNEntry_nameQualifier_oer_p_[0] = {};
+const TTCN_OERdescriptor_t PGNEntry_nameQualifier_oer_ = { -1, TRUE, 8, FALSE, 0, 0, PGNEntry_nameQualifier_oer_ext_arr_, 0, PGNEntry_nameQualifier_oer_p_};
+const TTCN_Typedescriptor_t PGNEntry_nameQualifier_descr_ = { "@IsobusNMMessageTypes.PGNEntry.nameQualifier", &OCTETSTRING_ber_, &General__Types::OCT8_raw_, &OCTETSTRING_text_, &PGNEntry_nameQualifier_xer_, &OCTETSTRING_json_, &PGNEntry_nameQualifier_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t PGNEntry_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for PGNEntry
+const TTCN_Typedescriptor_t PGNEntry_descr_ = { "@IsobusNMMessageTypes.PGNEntry", NULL, &PGNEntry_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       N__MFDBNQ__Add_msgFunction_xer_ = { {"msgFunction>\n", "msgFunction>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t N__MFDBNQ__Add_msgFunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t N__MFDBNQ__Add_msgFunction_descr_ = { "@IsobusNMMessageTypes.N_MFDBNQ_Add.msgFunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &N__MFDBNQ__Add_msgFunction_xer_, &INTEGER_json_, &N__MFDBNQ__Add_msgFunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__MFDBNQ__Add_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       N__MFDBNQ__Add_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int N__MFDBNQ__Add_reserved4_oer_ext_arr_[0] = {};
+const int N__MFDBNQ__Add_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t N__MFDBNQ__Add_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__MFDBNQ__Add_reserved4_oer_ext_arr_, 0, N__MFDBNQ__Add_reserved4_oer_p_};
+const TTCN_Typedescriptor_t N__MFDBNQ__Add_reserved4_descr_ = { "@IsobusNMMessageTypes.N_MFDBNQ_Add.reserved4", &OCTETSTRING_ber_, &N__MFDBNQ__Add_reserved4_raw_, &OCTETSTRING_text_, &N__MFDBNQ__Add_reserved4_xer_, &OCTETSTRING_json_, &N__MFDBNQ__Add_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__MFDBNQ__Add_pgnEntries_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for N__MFDBNQ__Add_pgnEntries
+const TTCN_Typedescriptor_t N__MFDBNQ__Add_pgnEntries_descr_ = { "@IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries", NULL, &N__MFDBNQ__Add_pgnEntries_raw_, NULL, NULL, NULL, NULL, &PGNEntry_descr_, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__MFDBNQ__Add_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for N__MFDBNQ__Add
+const TTCN_Typedescriptor_t N__MFDBNQ__Add_descr_ = { "@IsobusNMMessageTypes.N_MFDBNQ_Add", NULL, &N__MFDBNQ__Add_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       N__NT__Request_msgFunction_xer_ = { {"msgFunction>\n", "msgFunction>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t N__NT__Request_msgFunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t N__NT__Request_msgFunction_descr_ = { "@IsobusNMMessageTypes.N_NT_Request.msgFunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &N__NT__Request_msgFunction_xer_, &INTEGER_json_, &N__NT__Request_msgFunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t PortNibble_reserved_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,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       PortNibble_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_Typedescriptor_t PortNibble_reserved_descr_ = { "@IsobusNMMessageTypes.PortNibble.reserved", NULL, &PortNibble_reserved_raw_, NULL, &PortNibble_reserved_xer_, &HEXSTRING_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t PortNibble_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for PortNibble
+const TTCN_Typedescriptor_t PortNibble_descr_ = { "@IsobusNMMessageTypes.PortNibble", NULL, &PortNibble_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__NT__Request_reserved3_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       N__NT__Request_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int N__NT__Request_reserved3_oer_ext_arr_[0] = {};
+const int N__NT__Request_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t N__NT__Request_reserved3_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__NT__Request_reserved3_oer_ext_arr_, 0, N__NT__Request_reserved3_oer_p_};
+const TTCN_Typedescriptor_t N__NT__Request_reserved3_descr_ = { "@IsobusNMMessageTypes.N_NT_Request.reserved3", &OCTETSTRING_ber_, &N__NT__Request_reserved3_raw_, &OCTETSTRING_text_, &N__NT__Request_reserved3_xer_, &OCTETSTRING_json_, &N__NT__Request_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__NT__Request_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       N__NT__Request_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int N__NT__Request_reserved4_oer_ext_arr_[0] = {};
+const int N__NT__Request_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t N__NT__Request_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__NT__Request_reserved4_oer_ext_arr_, 0, N__NT__Request_reserved4_oer_p_};
+const TTCN_Typedescriptor_t N__NT__Request_reserved4_descr_ = { "@IsobusNMMessageTypes.N_NT_Request.reserved4", &OCTETSTRING_ber_, &N__NT__Request_reserved4_raw_, &OCTETSTRING_text_, &N__NT__Request_reserved4_xer_, &OCTETSTRING_json_, &N__NT__Request_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__NT__Request_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       N__NT__Request_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int N__NT__Request_reserved5_oer_ext_arr_[0] = {};
+const int N__NT__Request_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t N__NT__Request_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__NT__Request_reserved5_oer_ext_arr_, 0, N__NT__Request_reserved5_oer_p_};
+const TTCN_Typedescriptor_t N__NT__Request_reserved5_descr_ = { "@IsobusNMMessageTypes.N_NT_Request.reserved5", &OCTETSTRING_ber_, &N__NT__Request_reserved5_raw_, &OCTETSTRING_text_, &N__NT__Request_reserved5_xer_, &OCTETSTRING_json_, &N__NT__Request_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__NT__Request_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       N__NT__Request_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int N__NT__Request_reserved6_oer_ext_arr_[0] = {};
+const int N__NT__Request_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t N__NT__Request_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__NT__Request_reserved6_oer_ext_arr_, 0, N__NT__Request_reserved6_oer_p_};
+const TTCN_Typedescriptor_t N__NT__Request_reserved6_descr_ = { "@IsobusNMMessageTypes.N_NT_Request.reserved6", &OCTETSTRING_ber_, &N__NT__Request_reserved6_raw_, &OCTETSTRING_text_, &N__NT__Request_reserved6_xer_, &OCTETSTRING_json_, &N__NT__Request_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__NT__Request_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       N__NT__Request_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int N__NT__Request_reserved7_oer_ext_arr_[0] = {};
+const int N__NT__Request_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t N__NT__Request_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__NT__Request_reserved7_oer_ext_arr_, 0, N__NT__Request_reserved7_oer_p_};
+const TTCN_Typedescriptor_t N__NT__Request_reserved7_descr_ = { "@IsobusNMMessageTypes.N_NT_Request.reserved7", &OCTETSTRING_ber_, &N__NT__Request_reserved7_raw_, &OCTETSTRING_text_, &N__NT__Request_reserved7_xer_, &OCTETSTRING_json_, &N__NT__Request_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__NT__Request_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       N__NT__Request_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int N__NT__Request_reserved8_oer_ext_arr_[0] = {};
+const int N__NT__Request_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t N__NT__Request_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__NT__Request_reserved8_oer_ext_arr_, 0, N__NT__Request_reserved8_oer_p_};
+const TTCN_Typedescriptor_t N__NT__Request_reserved8_descr_ = { "@IsobusNMMessageTypes.N_NT_Request.reserved8", &OCTETSTRING_ber_, &N__NT__Request_reserved8_raw_, &OCTETSTRING_text_, &N__NT__Request_reserved8_xer_, &OCTETSTRING_json_, &N__NT__Request_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__NT__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,NULL,false};
+// No XER for N__NT__Request
+const TTCN_Typedescriptor_t N__NT__Request_descr_ = { "@IsobusNMMessageTypes.N_NT_Request", NULL, &N__NT__Request_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       N__NT__Response_msgFunction_xer_ = { {"msgFunction>\n", "msgFunction>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t N__NT__Response_msgFunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t N__NT__Response_msgFunction_descr_ = { "@IsobusNMMessageTypes.N_NT_Response.msgFunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &N__NT__Response_msgFunction_xer_, &INTEGER_json_, &N__NT__Response_msgFunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__NT__Response_SourceAddressEntries_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for N__NT__Response_SourceAddressEntries
+const TTCN_Typedescriptor_t N__NT__Response_SourceAddressEntries_descr_ = { "@IsobusNMMessageTypes.N_NT_Response.SourceAddressEntries", NULL, &N__NT__Response_SourceAddressEntries_raw_, NULL, NULL, NULL, NULL, &SourceAddress_descr_, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       N__NT__Response_SourceAddressEntries_0_xer_ = { {"SourceAddress>\n", "SourceAddress>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int N__NT__Response_SourceAddressEntries_0_oer_ext_arr_[0] = {};
+const int N__NT__Response_SourceAddressEntries_0_oer_p_[0] = {};
+const TTCN_OERdescriptor_t N__NT__Response_SourceAddressEntries_0_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__NT__Response_SourceAddressEntries_0_oer_ext_arr_, 0, N__NT__Response_SourceAddressEntries_0_oer_p_};
+const TTCN_Typedescriptor_t N__NT__Response_SourceAddressEntries_0_descr_ = { "@IsobusNMMessageTypes.N_NT_Response.SourceAddressEntries.<oftype>", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &N__NT__Response_SourceAddressEntries_0_xer_, &OCTETSTRING_json_, &N__NT__Response_SourceAddressEntries_0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__NT__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,NULL,false};
+// No XER for N__NT__Response
+const TTCN_Typedescriptor_t N__NT__Response_descr_ = { "@IsobusNMMessageTypes.N_NT_Response", NULL, &N__NT__Response_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       N__NTX__Request_msgFunction_xer_ = { {"msgFunction>\n", "msgFunction>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t N__NTX__Request_msgFunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t N__NTX__Request_msgFunction_descr_ = { "@IsobusNMMessageTypes.N_NTX_Request.msgFunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &N__NTX__Request_msgFunction_xer_, &INTEGER_json_, &N__NTX__Request_msgFunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__NTX__Request_reserved3_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       N__NTX__Request_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int N__NTX__Request_reserved3_oer_ext_arr_[0] = {};
+const int N__NTX__Request_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t N__NTX__Request_reserved3_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__NTX__Request_reserved3_oer_ext_arr_, 0, N__NTX__Request_reserved3_oer_p_};
+const TTCN_Typedescriptor_t N__NTX__Request_reserved3_descr_ = { "@IsobusNMMessageTypes.N_NTX_Request.reserved3", &OCTETSTRING_ber_, &N__NTX__Request_reserved3_raw_, &OCTETSTRING_text_, &N__NTX__Request_reserved3_xer_, &OCTETSTRING_json_, &N__NTX__Request_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__NTX__Request_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       N__NTX__Request_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int N__NTX__Request_reserved4_oer_ext_arr_[0] = {};
+const int N__NTX__Request_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t N__NTX__Request_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__NTX__Request_reserved4_oer_ext_arr_, 0, N__NTX__Request_reserved4_oer_p_};
+const TTCN_Typedescriptor_t N__NTX__Request_reserved4_descr_ = { "@IsobusNMMessageTypes.N_NTX_Request.reserved4", &OCTETSTRING_ber_, &N__NTX__Request_reserved4_raw_, &OCTETSTRING_text_, &N__NTX__Request_reserved4_xer_, &OCTETSTRING_json_, &N__NTX__Request_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__NTX__Request_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       N__NTX__Request_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int N__NTX__Request_reserved5_oer_ext_arr_[0] = {};
+const int N__NTX__Request_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t N__NTX__Request_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__NTX__Request_reserved5_oer_ext_arr_, 0, N__NTX__Request_reserved5_oer_p_};
+const TTCN_Typedescriptor_t N__NTX__Request_reserved5_descr_ = { "@IsobusNMMessageTypes.N_NTX_Request.reserved5", &OCTETSTRING_ber_, &N__NTX__Request_reserved5_raw_, &OCTETSTRING_text_, &N__NTX__Request_reserved5_xer_, &OCTETSTRING_json_, &N__NTX__Request_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__NTX__Request_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       N__NTX__Request_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int N__NTX__Request_reserved6_oer_ext_arr_[0] = {};
+const int N__NTX__Request_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t N__NTX__Request_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__NTX__Request_reserved6_oer_ext_arr_, 0, N__NTX__Request_reserved6_oer_p_};
+const TTCN_Typedescriptor_t N__NTX__Request_reserved6_descr_ = { "@IsobusNMMessageTypes.N_NTX_Request.reserved6", &OCTETSTRING_ber_, &N__NTX__Request_reserved6_raw_, &OCTETSTRING_text_, &N__NTX__Request_reserved6_xer_, &OCTETSTRING_json_, &N__NTX__Request_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__NTX__Request_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       N__NTX__Request_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int N__NTX__Request_reserved7_oer_ext_arr_[0] = {};
+const int N__NTX__Request_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t N__NTX__Request_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__NTX__Request_reserved7_oer_ext_arr_, 0, N__NTX__Request_reserved7_oer_p_};
+const TTCN_Typedescriptor_t N__NTX__Request_reserved7_descr_ = { "@IsobusNMMessageTypes.N_NTX_Request.reserved7", &OCTETSTRING_ber_, &N__NTX__Request_reserved7_raw_, &OCTETSTRING_text_, &N__NTX__Request_reserved7_xer_, &OCTETSTRING_json_, &N__NTX__Request_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__NTX__Request_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       N__NTX__Request_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int N__NTX__Request_reserved8_oer_ext_arr_[0] = {};
+const int N__NTX__Request_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t N__NTX__Request_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__NTX__Request_reserved8_oer_ext_arr_, 0, N__NTX__Request_reserved8_oer_p_};
+const TTCN_Typedescriptor_t N__NTX__Request_reserved8_descr_ = { "@IsobusNMMessageTypes.N_NTX_Request.reserved8", &OCTETSTRING_ber_, &N__NTX__Request_reserved8_raw_, &OCTETSTRING_text_, &N__NTX__Request_reserved8_xer_, &OCTETSTRING_json_, &N__NTX__Request_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__NTX__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,NULL,false};
+// No XER for N__NTX__Request
+const TTCN_Typedescriptor_t N__NTX__Request_descr_ = { "@IsobusNMMessageTypes.N_NTX_Request", NULL, &N__NTX__Request_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SA__NAME__pair_sourceAddress_xer_ = { {"sourceAddress>\n", "sourceAddress>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SA__NAME__pair_sourceAddress_oer_ext_arr_[0] = {};
+const int SA__NAME__pair_sourceAddress_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SA__NAME__pair_sourceAddress_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SA__NAME__pair_sourceAddress_oer_ext_arr_, 0, SA__NAME__pair_sourceAddress_oer_p_};
+const TTCN_Typedescriptor_t SA__NAME__pair_sourceAddress_descr_ = { "@IsobusNMMessageTypes.SA_NAME_pair.sourceAddress", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &SA__NAME__pair_sourceAddress_xer_, &OCTETSTRING_json_, &SA__NAME__pair_sourceAddress_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SA__NAME__pair_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for SA__NAME__pair
+const TTCN_Typedescriptor_t SA__NAME__pair_descr_ = { "@IsobusNMMessageTypes.SA_NAME_pair", NULL, &SA__NAME__pair_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       N__NTX__Response_msgFunction_xer_ = { {"msgFunction>\n", "msgFunction>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t N__NTX__Response_msgFunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t N__NTX__Response_msgFunction_descr_ = { "@IsobusNMMessageTypes.N_NTX_Response.msgFunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &N__NTX__Response_msgFunction_xer_, &INTEGER_json_, &N__NTX__Response_msgFunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__NTX__Response_numberOfReportedPorts_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,NULL,false};
+const XERdescriptor_t       N__NTX__Response_numberOfReportedPorts_xer_ = { {"numberOfReportedPorts>\n", "numberOfReportedPorts>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t N__NTX__Response_numberOfReportedPorts_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t N__NTX__Response_numberOfReportedPorts_descr_ = { "@IsobusNMMessageTypes.N_NTX_Response.numberOfReportedPorts", &INTEGER_ber_, &N__NTX__Response_numberOfReportedPorts_raw_, &INTEGER_text_, &N__NTX__Response_numberOfReportedPorts_xer_, &INTEGER_json_, &N__NTX__Response_numberOfReportedPorts_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__NTX__Response_sourceaddress__NAME__pairs_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for N__NTX__Response_sourceaddress__NAME__pairs
+const TTCN_Typedescriptor_t N__NTX__Response_sourceaddress__NAME__pairs_descr_ = { "@IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs", NULL, &N__NTX__Response_sourceaddress__NAME__pairs_raw_, NULL, NULL, NULL, NULL, &SA__NAME__pair_descr_, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__NTX__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,NULL,false};
+// No XER for N__NTX__Response
+const TTCN_Typedescriptor_t N__NTX__Response_descr_ = { "@IsobusNMMessageTypes.N_NTX_Response", NULL, &N__NTX__Response_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t e__ParametricIdentifier_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,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for e__ParametricIdentifier
+const TTCN_Typedescriptor_t e__ParametricIdentifier_descr_ = { "@IsobusNMMessageTypes.e_ParametricIdentifier", NULL, &e__ParametricIdentifier_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       N__GP__Request_msgFunction_xer_ = { {"msgFunction>\n", "msgFunction>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t N__GP__Request_msgFunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t N__GP__Request_msgFunction_descr_ = { "@IsobusNMMessageTypes.N_GP_Request.msgFunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &N__GP__Request_msgFunction_xer_, &INTEGER_json_, &N__GP__Request_msgFunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__GP__Request_parametricIdentifiers_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for N__GP__Request_parametricIdentifiers
+const TTCN_Typedescriptor_t N__GP__Request_parametricIdentifiers_descr_ = { "@IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers", NULL, &N__GP__Request_parametricIdentifiers_raw_, NULL, NULL, NULL, NULL, &e__ParametricIdentifier_descr_, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__GP__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,NULL,false};
+// No XER for N__GP__Request
+const TTCN_Typedescriptor_t N__GP__Request_descr_ = { "@IsobusNMMessageTypes.N_GP_Request", NULL, &N__GP__Request_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       Buffersize_xer_ = { {"Buffersize>\n", "Buffersize>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int Buffersize_oer_ext_arr_[0] = {};
+const int Buffersize_oer_p_[0] = {};
+const TTCN_OERdescriptor_t Buffersize_oer_ = { -1, TRUE, 2, FALSE, 0, 0, Buffersize_oer_ext_arr_, 0, Buffersize_oer_p_};
+const TTCN_Typedescriptor_t Buffersize_descr_ = { "@IsobusNMMessageTypes.Buffersize", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &Buffersize_xer_, &OCTETSTRING_json_, &Buffersize_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       MaximumFilterDatabaseSize_xer_ = { {"MaximumFilterDatabaseSize>\n", "MaximumFilterDatabaseSize>\n"}, {27, 27}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int MaximumFilterDatabaseSize_oer_ext_arr_[0] = {};
+const int MaximumFilterDatabaseSize_oer_p_[0] = {};
+const TTCN_OERdescriptor_t MaximumFilterDatabaseSize_oer_ = { -1, TRUE, 2, FALSE, 0, 0, MaximumFilterDatabaseSize_oer_ext_arr_, 0, MaximumFilterDatabaseSize_oer_p_};
+const TTCN_Typedescriptor_t MaximumFilterDatabaseSize_descr_ = { "@IsobusNMMessageTypes.MaximumFilterDatabaseSize", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &MaximumFilterDatabaseSize_xer_, &OCTETSTRING_json_, &MaximumFilterDatabaseSize_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       NumberOfFilterDatabaseEntries_xer_ = { {"NumberOfFilterDatabaseEntries>\n", "NumberOfFilterDatabaseEntries>\n"}, {31, 31}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int NumberOfFilterDatabaseEntries_oer_ext_arr_[0] = {};
+const int NumberOfFilterDatabaseEntries_oer_p_[0] = {};
+const TTCN_OERdescriptor_t NumberOfFilterDatabaseEntries_oer_ = { -1, TRUE, 2, FALSE, 0, 0, NumberOfFilterDatabaseEntries_oer_ext_arr_, 0, NumberOfFilterDatabaseEntries_oer_p_};
+const TTCN_Typedescriptor_t NumberOfFilterDatabaseEntries_descr_ = { "@IsobusNMMessageTypes.NumberOfFilterDatabaseEntries", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &NumberOfFilterDatabaseEntries_xer_, &OCTETSTRING_json_, &NumberOfFilterDatabaseEntries_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       MaximumNumberOfMessagesReceivedPerSecond_xer_ = { {"MaximumNumberOfMessagesReceivedPerSecond>\n", "MaximumNumberOfMessagesReceivedPerSecond>\n"}, {42, 42}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int MaximumNumberOfMessagesReceivedPerSecond_oer_ext_arr_[0] = {};
+const int MaximumNumberOfMessagesReceivedPerSecond_oer_p_[0] = {};
+const TTCN_OERdescriptor_t MaximumNumberOfMessagesReceivedPerSecond_oer_ = { -1, TRUE, 2, FALSE, 0, 0, MaximumNumberOfMessagesReceivedPerSecond_oer_ext_arr_, 0, MaximumNumberOfMessagesReceivedPerSecond_oer_p_};
+const TTCN_Typedescriptor_t MaximumNumberOfMessagesReceivedPerSecond_descr_ = { "@IsobusNMMessageTypes.MaximumNumberOfMessagesReceivedPerSecond", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &MaximumNumberOfMessagesReceivedPerSecond_xer_, &OCTETSTRING_json_, &MaximumNumberOfMessagesReceivedPerSecond_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       MaximumNumberOfMessagesForwardedPerSecond_xer_ = { {"MaximumNumberOfMessagesForwardedPerSecond>\n", "MaximumNumberOfMessagesForwardedPerSecond>\n"}, {43, 43}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int MaximumNumberOfMessagesForwardedPerSecond_oer_ext_arr_[0] = {};
+const int MaximumNumberOfMessagesForwardedPerSecond_oer_p_[0] = {};
+const TTCN_OERdescriptor_t MaximumNumberOfMessagesForwardedPerSecond_oer_ = { -1, TRUE, 2, FALSE, 0, 0, MaximumNumberOfMessagesForwardedPerSecond_oer_ext_arr_, 0, MaximumNumberOfMessagesForwardedPerSecond_oer_p_};
+const TTCN_Typedescriptor_t MaximumNumberOfMessagesForwardedPerSecond_descr_ = { "@IsobusNMMessageTypes.MaximumNumberOfMessagesForwardedPerSecond", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &MaximumNumberOfMessagesForwardedPerSecond_xer_, &OCTETSTRING_json_, &MaximumNumberOfMessagesForwardedPerSecond_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       MaximumNumberOfMessagesFilteredPerSecond_xer_ = { {"MaximumNumberOfMessagesFilteredPerSecond>\n", "MaximumNumberOfMessagesFilteredPerSecond>\n"}, {42, 42}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int MaximumNumberOfMessagesFilteredPerSecond_oer_ext_arr_[0] = {};
+const int MaximumNumberOfMessagesFilteredPerSecond_oer_p_[0] = {};
+const TTCN_OERdescriptor_t MaximumNumberOfMessagesFilteredPerSecond_oer_ = { -1, TRUE, 2, FALSE, 0, 0, MaximumNumberOfMessagesFilteredPerSecond_oer_ext_arr_, 0, MaximumNumberOfMessagesFilteredPerSecond_oer_p_};
+const TTCN_Typedescriptor_t MaximumNumberOfMessagesFilteredPerSecond_descr_ = { "@IsobusNMMessageTypes.MaximumNumberOfMessagesFilteredPerSecond", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &MaximumNumberOfMessagesFilteredPerSecond_xer_, &OCTETSTRING_json_, &MaximumNumberOfMessagesFilteredPerSecond_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       MaximumTransitDelayTime__ms_xer_ = { {"MaximumTransitDelayTime_ms>\n", "MaximumTransitDelayTime_ms>\n"}, {28, 28}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int MaximumTransitDelayTime__ms_oer_ext_arr_[0] = {};
+const int MaximumTransitDelayTime__ms_oer_p_[0] = {};
+const TTCN_OERdescriptor_t MaximumTransitDelayTime__ms_oer_ = { -1, TRUE, 2, FALSE, 0, 0, MaximumTransitDelayTime__ms_oer_ext_arr_, 0, MaximumTransitDelayTime__ms_oer_p_};
+const TTCN_Typedescriptor_t MaximumTransitDelayTime__ms_descr_ = { "@IsobusNMMessageTypes.MaximumTransitDelayTime_ms", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &MaximumTransitDelayTime__ms_xer_, &OCTETSTRING_json_, &MaximumTransitDelayTime__ms_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       AverageTransitDelayTime__ms_xer_ = { {"AverageTransitDelayTime_ms>\n", "AverageTransitDelayTime_ms>\n"}, {28, 28}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int AverageTransitDelayTime__ms_oer_ext_arr_[0] = {};
+const int AverageTransitDelayTime__ms_oer_p_[0] = {};
+const TTCN_OERdescriptor_t AverageTransitDelayTime__ms_oer_ = { -1, TRUE, 2, FALSE, 0, 0, AverageTransitDelayTime__ms_oer_ext_arr_, 0, AverageTransitDelayTime__ms_oer_p_};
+const TTCN_Typedescriptor_t AverageTransitDelayTime__ms_descr_ = { "@IsobusNMMessageTypes.AverageTransitDelayTime_ms", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &AverageTransitDelayTime__ms_xer_, &OCTETSTRING_json_, &AverageTransitDelayTime__ms_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       NumberOfMessagesLostDueToBufferOverflow_xer_ = { {"NumberOfMessagesLostDueToBufferOverflow>\n", "NumberOfMessagesLostDueToBufferOverflow>\n"}, {41, 41}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int NumberOfMessagesLostDueToBufferOverflow_oer_ext_arr_[0] = {};
+const int NumberOfMessagesLostDueToBufferOverflow_oer_p_[0] = {};
+const TTCN_OERdescriptor_t NumberOfMessagesLostDueToBufferOverflow_oer_ = { -1, TRUE, 2, FALSE, 0, 0, NumberOfMessagesLostDueToBufferOverflow_oer_ext_arr_, 0, NumberOfMessagesLostDueToBufferOverflow_oer_p_};
+const TTCN_Typedescriptor_t NumberOfMessagesLostDueToBufferOverflow_descr_ = { "@IsobusNMMessageTypes.NumberOfMessagesLostDueToBufferOverflow", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &NumberOfMessagesLostDueToBufferOverflow_xer_, &OCTETSTRING_json_, &NumberOfMessagesLostDueToBufferOverflow_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       NumberOfMessagesWithExcessTransitDelayTime_xer_ = { {"NumberOfMessagesWithExcessTransitDelayTime>\n", "NumberOfMessagesWithExcessTransitDelayTime>\n"}, {44, 44}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int NumberOfMessagesWithExcessTransitDelayTime_oer_ext_arr_[0] = {};
+const int NumberOfMessagesWithExcessTransitDelayTime_oer_p_[0] = {};
+const TTCN_OERdescriptor_t NumberOfMessagesWithExcessTransitDelayTime_oer_ = { -1, TRUE, 2, FALSE, 0, 0, NumberOfMessagesWithExcessTransitDelayTime_oer_ext_arr_, 0, NumberOfMessagesWithExcessTransitDelayTime_oer_p_};
+const TTCN_Typedescriptor_t NumberOfMessagesWithExcessTransitDelayTime_descr_ = { "@IsobusNMMessageTypes.NumberOfMessagesWithExcessTransitDelayTime", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &NumberOfMessagesWithExcessTransitDelayTime_xer_, &OCTETSTRING_json_, &NumberOfMessagesWithExcessTransitDelayTime_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       AverageNumberOfMessagesReceivedPerSecond_xer_ = { {"AverageNumberOfMessagesReceivedPerSecond>\n", "AverageNumberOfMessagesReceivedPerSecond>\n"}, {42, 42}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int AverageNumberOfMessagesReceivedPerSecond_oer_ext_arr_[0] = {};
+const int AverageNumberOfMessagesReceivedPerSecond_oer_p_[0] = {};
+const TTCN_OERdescriptor_t AverageNumberOfMessagesReceivedPerSecond_oer_ = { -1, TRUE, 2, FALSE, 0, 0, AverageNumberOfMessagesReceivedPerSecond_oer_ext_arr_, 0, AverageNumberOfMessagesReceivedPerSecond_oer_p_};
+const TTCN_Typedescriptor_t AverageNumberOfMessagesReceivedPerSecond_descr_ = { "@IsobusNMMessageTypes.AverageNumberOfMessagesReceivedPerSecond", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &AverageNumberOfMessagesReceivedPerSecond_xer_, &OCTETSTRING_json_, &AverageNumberOfMessagesReceivedPerSecond_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       AverageNumberOfMessagesForwardedPerSecond_xer_ = { {"AverageNumberOfMessagesForwardedPerSecond>\n", "AverageNumberOfMessagesForwardedPerSecond>\n"}, {43, 43}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int AverageNumberOfMessagesForwardedPerSecond_oer_ext_arr_[0] = {};
+const int AverageNumberOfMessagesForwardedPerSecond_oer_p_[0] = {};
+const TTCN_OERdescriptor_t AverageNumberOfMessagesForwardedPerSecond_oer_ = { -1, TRUE, 2, FALSE, 0, 0, AverageNumberOfMessagesForwardedPerSecond_oer_ext_arr_, 0, AverageNumberOfMessagesForwardedPerSecond_oer_p_};
+const TTCN_Typedescriptor_t AverageNumberOfMessagesForwardedPerSecond_descr_ = { "@IsobusNMMessageTypes.AverageNumberOfMessagesForwardedPerSecond", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &AverageNumberOfMessagesForwardedPerSecond_xer_, &OCTETSTRING_json_, &AverageNumberOfMessagesForwardedPerSecond_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       AverageNumberOfMessagesFilteredPerSecond_xer_ = { {"AverageNumberOfMessagesFilteredPerSecond>\n", "AverageNumberOfMessagesFilteredPerSecond>\n"}, {42, 42}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int AverageNumberOfMessagesFilteredPerSecond_oer_ext_arr_[0] = {};
+const int AverageNumberOfMessagesFilteredPerSecond_oer_p_[0] = {};
+const TTCN_OERdescriptor_t AverageNumberOfMessagesFilteredPerSecond_oer_ = { -1, TRUE, 2, FALSE, 0, 0, AverageNumberOfMessagesFilteredPerSecond_oer_ext_arr_, 0, AverageNumberOfMessagesFilteredPerSecond_oer_p_};
+const TTCN_Typedescriptor_t AverageNumberOfMessagesFilteredPerSecond_descr_ = { "@IsobusNMMessageTypes.AverageNumberOfMessagesFilteredPerSecond", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &AverageNumberOfMessagesFilteredPerSecond_xer_, &OCTETSTRING_json_, &AverageNumberOfMessagesFilteredPerSecond_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       UptimeSinceLastPowerOnReset__s_xer_ = { {"UptimeSinceLastPowerOnReset_s>\n", "UptimeSinceLastPowerOnReset_s>\n"}, {31, 31}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int UptimeSinceLastPowerOnReset__s_oer_ext_arr_[0] = {};
+const int UptimeSinceLastPowerOnReset__s_oer_p_[0] = {};
+const TTCN_OERdescriptor_t UptimeSinceLastPowerOnReset__s_oer_ = { -1, TRUE, 4, FALSE, 0, 0, UptimeSinceLastPowerOnReset__s_oer_ext_arr_, 0, UptimeSinceLastPowerOnReset__s_oer_p_};
+const TTCN_Typedescriptor_t UptimeSinceLastPowerOnReset__s_descr_ = { "@IsobusNMMessageTypes.UptimeSinceLastPowerOnReset_s", &OCTETSTRING_ber_, &General__Types::OCT4_raw_, &OCTETSTRING_text_, &UptimeSinceLastPowerOnReset__s_xer_, &OCTETSTRING_json_, &UptimeSinceLastPowerOnReset__s_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       NumberOfPorts_xer_ = { {"NumberOfPorts>\n", "NumberOfPorts>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int NumberOfPorts_oer_ext_arr_[0] = {};
+const int NumberOfPorts_oer_p_[0] = {};
+const TTCN_OERdescriptor_t NumberOfPorts_oer_ = { -1, TRUE, 1, FALSE, 0, 0, NumberOfPorts_oer_ext_arr_, 0, NumberOfPorts_oer_p_};
+const TTCN_Typedescriptor_t NumberOfPorts_descr_ = { "@IsobusNMMessageTypes.NumberOfPorts", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &NumberOfPorts_xer_, &OCTETSTRING_json_, &NumberOfPorts_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       NetworkInterconnectionUnitType_xer_ = { {"NetworkInterconnectionUnitType>\n", "NetworkInterconnectionUnitType>\n"}, {32, 32}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int NetworkInterconnectionUnitType_oer_ext_arr_[0] = {};
+const int NetworkInterconnectionUnitType_oer_p_[0] = {};
+const TTCN_OERdescriptor_t NetworkInterconnectionUnitType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, NetworkInterconnectionUnitType_oer_ext_arr_, 0, NetworkInterconnectionUnitType_oer_p_};
+const TTCN_Typedescriptor_t NetworkInterconnectionUnitType_descr_ = { "@IsobusNMMessageTypes.NetworkInterconnectionUnitType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &NetworkInterconnectionUnitType_xer_, &OCTETSTRING_json_, &NetworkInterconnectionUnitType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t Reserved_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       Reserved_xer_ = { {"Reserved>\n", "Reserved>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int Reserved_oer_ext_arr_[0] = {};
+const int Reserved_oer_p_[0] = {};
+const TTCN_OERdescriptor_t Reserved_oer_ = { -1, TRUE, 1, FALSE, 0, 0, Reserved_oer_ext_arr_, 0, Reserved_oer_p_};
+const TTCN_Typedescriptor_t Reserved_descr_ = { "@IsobusNMMessageTypes.Reserved", &OCTETSTRING_ber_, &Reserved_raw_, &OCTETSTRING_text_, &Reserved_xer_, &OCTETSTRING_json_, &Reserved_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t RequestedParametric_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for RequestedParametric
+const TTCN_Typedescriptor_t RequestedParametric_descr_ = { "@IsobusNMMessageTypes.RequestedParametric", NULL, &RequestedParametric_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       RequestedParametric_buffersize_xer_ = { {"buffersize>\n", "buffersize>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int RequestedParametric_buffersize_oer_ext_arr_[0] = {};
+const int RequestedParametric_buffersize_oer_p_[0] = {};
+const TTCN_OERdescriptor_t RequestedParametric_buffersize_oer_ = { -1, TRUE, 2, FALSE, 0, 0, RequestedParametric_buffersize_oer_ext_arr_, 0, RequestedParametric_buffersize_oer_p_};
+const TTCN_Typedescriptor_t RequestedParametric_buffersize_descr_ = { "@IsobusNMMessageTypes.RequestedParametric.buffersize", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &RequestedParametric_buffersize_xer_, &OCTETSTRING_json_, &RequestedParametric_buffersize_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       RequestedParametric_maximumFilterDatabaseSize_xer_ = { {"maximumFilterDatabaseSize>\n", "maximumFilterDatabaseSize>\n"}, {27, 27}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int RequestedParametric_maximumFilterDatabaseSize_oer_ext_arr_[0] = {};
+const int RequestedParametric_maximumFilterDatabaseSize_oer_p_[0] = {};
+const TTCN_OERdescriptor_t RequestedParametric_maximumFilterDatabaseSize_oer_ = { -1, TRUE, 2, FALSE, 0, 0, RequestedParametric_maximumFilterDatabaseSize_oer_ext_arr_, 0, RequestedParametric_maximumFilterDatabaseSize_oer_p_};
+const TTCN_Typedescriptor_t RequestedParametric_maximumFilterDatabaseSize_descr_ = { "@IsobusNMMessageTypes.RequestedParametric.maximumFilterDatabaseSize", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &RequestedParametric_maximumFilterDatabaseSize_xer_, &OCTETSTRING_json_, &RequestedParametric_maximumFilterDatabaseSize_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       RequestedParametric_numberOfFilterDatabaseEntries_xer_ = { {"numberOfFilterDatabaseEntries>\n", "numberOfFilterDatabaseEntries>\n"}, {31, 31}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int RequestedParametric_numberOfFilterDatabaseEntries_oer_ext_arr_[0] = {};
+const int RequestedParametric_numberOfFilterDatabaseEntries_oer_p_[0] = {};
+const TTCN_OERdescriptor_t RequestedParametric_numberOfFilterDatabaseEntries_oer_ = { -1, TRUE, 2, FALSE, 0, 0, RequestedParametric_numberOfFilterDatabaseEntries_oer_ext_arr_, 0, RequestedParametric_numberOfFilterDatabaseEntries_oer_p_};
+const TTCN_Typedescriptor_t RequestedParametric_numberOfFilterDatabaseEntries_descr_ = { "@IsobusNMMessageTypes.RequestedParametric.numberOfFilterDatabaseEntries", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &RequestedParametric_numberOfFilterDatabaseEntries_xer_, &OCTETSTRING_json_, &RequestedParametric_numberOfFilterDatabaseEntries_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       RequestedParametric_maximumNumberOfMessagesReceivedPerSecond_xer_ = { {"maximumNumberOfMessagesReceivedPerSecond>\n", "maximumNumberOfMessagesReceivedPerSecond>\n"}, {42, 42}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int RequestedParametric_maximumNumberOfMessagesReceivedPerSecond_oer_ext_arr_[0] = {};
+const int RequestedParametric_maximumNumberOfMessagesReceivedPerSecond_oer_p_[0] = {};
+const TTCN_OERdescriptor_t RequestedParametric_maximumNumberOfMessagesReceivedPerSecond_oer_ = { -1, TRUE, 2, FALSE, 0, 0, RequestedParametric_maximumNumberOfMessagesReceivedPerSecond_oer_ext_arr_, 0, RequestedParametric_maximumNumberOfMessagesReceivedPerSecond_oer_p_};
+const TTCN_Typedescriptor_t RequestedParametric_maximumNumberOfMessagesReceivedPerSecond_descr_ = { "@IsobusNMMessageTypes.RequestedParametric.maximumNumberOfMessagesReceivedPerSecond", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &RequestedParametric_maximumNumberOfMessagesReceivedPerSecond_xer_, &OCTETSTRING_json_, &RequestedParametric_maximumNumberOfMessagesReceivedPerSecond_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       RequestedParametric_maximumNumberOfMessagesForwardedPerSecond_xer_ = { {"maximumNumberOfMessagesForwardedPerSecond>\n", "maximumNumberOfMessagesForwardedPerSecond>\n"}, {43, 43}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int RequestedParametric_maximumNumberOfMessagesForwardedPerSecond_oer_ext_arr_[0] = {};
+const int RequestedParametric_maximumNumberOfMessagesForwardedPerSecond_oer_p_[0] = {};
+const TTCN_OERdescriptor_t RequestedParametric_maximumNumberOfMessagesForwardedPerSecond_oer_ = { -1, TRUE, 2, FALSE, 0, 0, RequestedParametric_maximumNumberOfMessagesForwardedPerSecond_oer_ext_arr_, 0, RequestedParametric_maximumNumberOfMessagesForwardedPerSecond_oer_p_};
+const TTCN_Typedescriptor_t RequestedParametric_maximumNumberOfMessagesForwardedPerSecond_descr_ = { "@IsobusNMMessageTypes.RequestedParametric.maximumNumberOfMessagesForwardedPerSecond", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &RequestedParametric_maximumNumberOfMessagesForwardedPerSecond_xer_, &OCTETSTRING_json_, &RequestedParametric_maximumNumberOfMessagesForwardedPerSecond_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       RequestedParametric_maximumNumberOfMessagesFilteredPerSecond_xer_ = { {"maximumNumberOfMessagesFilteredPerSecond>\n", "maximumNumberOfMessagesFilteredPerSecond>\n"}, {42, 42}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int RequestedParametric_maximumNumberOfMessagesFilteredPerSecond_oer_ext_arr_[0] = {};
+const int RequestedParametric_maximumNumberOfMessagesFilteredPerSecond_oer_p_[0] = {};
+const TTCN_OERdescriptor_t RequestedParametric_maximumNumberOfMessagesFilteredPerSecond_oer_ = { -1, TRUE, 2, FALSE, 0, 0, RequestedParametric_maximumNumberOfMessagesFilteredPerSecond_oer_ext_arr_, 0, RequestedParametric_maximumNumberOfMessagesFilteredPerSecond_oer_p_};
+const TTCN_Typedescriptor_t RequestedParametric_maximumNumberOfMessagesFilteredPerSecond_descr_ = { "@IsobusNMMessageTypes.RequestedParametric.maximumNumberOfMessagesFilteredPerSecond", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &RequestedParametric_maximumNumberOfMessagesFilteredPerSecond_xer_, &OCTETSTRING_json_, &RequestedParametric_maximumNumberOfMessagesFilteredPerSecond_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       RequestedParametric_maximumTransitDelayTime__ms_xer_ = { {"maximumTransitDelayTime_ms>\n", "maximumTransitDelayTime_ms>\n"}, {28, 28}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int RequestedParametric_maximumTransitDelayTime__ms_oer_ext_arr_[0] = {};
+const int RequestedParametric_maximumTransitDelayTime__ms_oer_p_[0] = {};
+const TTCN_OERdescriptor_t RequestedParametric_maximumTransitDelayTime__ms_oer_ = { -1, TRUE, 2, FALSE, 0, 0, RequestedParametric_maximumTransitDelayTime__ms_oer_ext_arr_, 0, RequestedParametric_maximumTransitDelayTime__ms_oer_p_};
+const TTCN_Typedescriptor_t RequestedParametric_maximumTransitDelayTime__ms_descr_ = { "@IsobusNMMessageTypes.RequestedParametric.maximumTransitDelayTime_ms", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &RequestedParametric_maximumTransitDelayTime__ms_xer_, &OCTETSTRING_json_, &RequestedParametric_maximumTransitDelayTime__ms_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       RequestedParametric_averageTransitDelayTime__ms_xer_ = { {"averageTransitDelayTime_ms>\n", "averageTransitDelayTime_ms>\n"}, {28, 28}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int RequestedParametric_averageTransitDelayTime__ms_oer_ext_arr_[0] = {};
+const int RequestedParametric_averageTransitDelayTime__ms_oer_p_[0] = {};
+const TTCN_OERdescriptor_t RequestedParametric_averageTransitDelayTime__ms_oer_ = { -1, TRUE, 2, FALSE, 0, 0, RequestedParametric_averageTransitDelayTime__ms_oer_ext_arr_, 0, RequestedParametric_averageTransitDelayTime__ms_oer_p_};
+const TTCN_Typedescriptor_t RequestedParametric_averageTransitDelayTime__ms_descr_ = { "@IsobusNMMessageTypes.RequestedParametric.averageTransitDelayTime_ms", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &RequestedParametric_averageTransitDelayTime__ms_xer_, &OCTETSTRING_json_, &RequestedParametric_averageTransitDelayTime__ms_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       RequestedParametric_numberOfMessagesLostDueToBufferOverflow_xer_ = { {"numberOfMessagesLostDueToBufferOverflow>\n", "numberOfMessagesLostDueToBufferOverflow>\n"}, {41, 41}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int RequestedParametric_numberOfMessagesLostDueToBufferOverflow_oer_ext_arr_[0] = {};
+const int RequestedParametric_numberOfMessagesLostDueToBufferOverflow_oer_p_[0] = {};
+const TTCN_OERdescriptor_t RequestedParametric_numberOfMessagesLostDueToBufferOverflow_oer_ = { -1, TRUE, 2, FALSE, 0, 0, RequestedParametric_numberOfMessagesLostDueToBufferOverflow_oer_ext_arr_, 0, RequestedParametric_numberOfMessagesLostDueToBufferOverflow_oer_p_};
+const TTCN_Typedescriptor_t RequestedParametric_numberOfMessagesLostDueToBufferOverflow_descr_ = { "@IsobusNMMessageTypes.RequestedParametric.numberOfMessagesLostDueToBufferOverflow", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &RequestedParametric_numberOfMessagesLostDueToBufferOverflow_xer_, &OCTETSTRING_json_, &RequestedParametric_numberOfMessagesLostDueToBufferOverflow_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       RequestedParametric_numberOfMessagesWithExcessTransitDelayTime_xer_ = { {"numberOfMessagesWithExcessTransitDelayTime>\n", "numberOfMessagesWithExcessTransitDelayTime>\n"}, {44, 44}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int RequestedParametric_numberOfMessagesWithExcessTransitDelayTime_oer_ext_arr_[0] = {};
+const int RequestedParametric_numberOfMessagesWithExcessTransitDelayTime_oer_p_[0] = {};
+const TTCN_OERdescriptor_t RequestedParametric_numberOfMessagesWithExcessTransitDelayTime_oer_ = { -1, TRUE, 2, FALSE, 0, 0, RequestedParametric_numberOfMessagesWithExcessTransitDelayTime_oer_ext_arr_, 0, RequestedParametric_numberOfMessagesWithExcessTransitDelayTime_oer_p_};
+const TTCN_Typedescriptor_t RequestedParametric_numberOfMessagesWithExcessTransitDelayTime_descr_ = { "@IsobusNMMessageTypes.RequestedParametric.numberOfMessagesWithExcessTransitDelayTime", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &RequestedParametric_numberOfMessagesWithExcessTransitDelayTime_xer_, &OCTETSTRING_json_, &RequestedParametric_numberOfMessagesWithExcessTransitDelayTime_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       RequestedParametric_averageNumberOfMessagesReceivedPerSecond_xer_ = { {"averageNumberOfMessagesReceivedPerSecond>\n", "averageNumberOfMessagesReceivedPerSecond>\n"}, {42, 42}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int RequestedParametric_averageNumberOfMessagesReceivedPerSecond_oer_ext_arr_[0] = {};
+const int RequestedParametric_averageNumberOfMessagesReceivedPerSecond_oer_p_[0] = {};
+const TTCN_OERdescriptor_t RequestedParametric_averageNumberOfMessagesReceivedPerSecond_oer_ = { -1, TRUE, 2, FALSE, 0, 0, RequestedParametric_averageNumberOfMessagesReceivedPerSecond_oer_ext_arr_, 0, RequestedParametric_averageNumberOfMessagesReceivedPerSecond_oer_p_};
+const TTCN_Typedescriptor_t RequestedParametric_averageNumberOfMessagesReceivedPerSecond_descr_ = { "@IsobusNMMessageTypes.RequestedParametric.averageNumberOfMessagesReceivedPerSecond", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &RequestedParametric_averageNumberOfMessagesReceivedPerSecond_xer_, &OCTETSTRING_json_, &RequestedParametric_averageNumberOfMessagesReceivedPerSecond_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       RequestedParametric_averageNumberOfMessagesForwardedPerSecond_xer_ = { {"averageNumberOfMessagesForwardedPerSecond>\n", "averageNumberOfMessagesForwardedPerSecond>\n"}, {43, 43}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int RequestedParametric_averageNumberOfMessagesForwardedPerSecond_oer_ext_arr_[0] = {};
+const int RequestedParametric_averageNumberOfMessagesForwardedPerSecond_oer_p_[0] = {};
+const TTCN_OERdescriptor_t RequestedParametric_averageNumberOfMessagesForwardedPerSecond_oer_ = { -1, TRUE, 2, FALSE, 0, 0, RequestedParametric_averageNumberOfMessagesForwardedPerSecond_oer_ext_arr_, 0, RequestedParametric_averageNumberOfMessagesForwardedPerSecond_oer_p_};
+const TTCN_Typedescriptor_t RequestedParametric_averageNumberOfMessagesForwardedPerSecond_descr_ = { "@IsobusNMMessageTypes.RequestedParametric.averageNumberOfMessagesForwardedPerSecond", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &RequestedParametric_averageNumberOfMessagesForwardedPerSecond_xer_, &OCTETSTRING_json_, &RequestedParametric_averageNumberOfMessagesForwardedPerSecond_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       RequestedParametric_averageNumberOfMessagesFilteredPerSecond_xer_ = { {"averageNumberOfMessagesFilteredPerSecond>\n", "averageNumberOfMessagesFilteredPerSecond>\n"}, {42, 42}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int RequestedParametric_averageNumberOfMessagesFilteredPerSecond_oer_ext_arr_[0] = {};
+const int RequestedParametric_averageNumberOfMessagesFilteredPerSecond_oer_p_[0] = {};
+const TTCN_OERdescriptor_t RequestedParametric_averageNumberOfMessagesFilteredPerSecond_oer_ = { -1, TRUE, 2, FALSE, 0, 0, RequestedParametric_averageNumberOfMessagesFilteredPerSecond_oer_ext_arr_, 0, RequestedParametric_averageNumberOfMessagesFilteredPerSecond_oer_p_};
+const TTCN_Typedescriptor_t RequestedParametric_averageNumberOfMessagesFilteredPerSecond_descr_ = { "@IsobusNMMessageTypes.RequestedParametric.averageNumberOfMessagesFilteredPerSecond", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &RequestedParametric_averageNumberOfMessagesFilteredPerSecond_xer_, &OCTETSTRING_json_, &RequestedParametric_averageNumberOfMessagesFilteredPerSecond_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       RequestedParametric_uptimeSinceLastPowerOnReset__s_xer_ = { {"uptimeSinceLastPowerOnReset_s>\n", "uptimeSinceLastPowerOnReset_s>\n"}, {31, 31}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int RequestedParametric_uptimeSinceLastPowerOnReset__s_oer_ext_arr_[0] = {};
+const int RequestedParametric_uptimeSinceLastPowerOnReset__s_oer_p_[0] = {};
+const TTCN_OERdescriptor_t RequestedParametric_uptimeSinceLastPowerOnReset__s_oer_ = { -1, TRUE, 4, FALSE, 0, 0, RequestedParametric_uptimeSinceLastPowerOnReset__s_oer_ext_arr_, 0, RequestedParametric_uptimeSinceLastPowerOnReset__s_oer_p_};
+const TTCN_Typedescriptor_t RequestedParametric_uptimeSinceLastPowerOnReset__s_descr_ = { "@IsobusNMMessageTypes.RequestedParametric.uptimeSinceLastPowerOnReset_s", &OCTETSTRING_ber_, &General__Types::OCT4_raw_, &OCTETSTRING_text_, &RequestedParametric_uptimeSinceLastPowerOnReset__s_xer_, &OCTETSTRING_json_, &RequestedParametric_uptimeSinceLastPowerOnReset__s_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       RequestedParametric_numberOfPorts_xer_ = { {"numberOfPorts>\n", "numberOfPorts>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int RequestedParametric_numberOfPorts_oer_ext_arr_[0] = {};
+const int RequestedParametric_numberOfPorts_oer_p_[0] = {};
+const TTCN_OERdescriptor_t RequestedParametric_numberOfPorts_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RequestedParametric_numberOfPorts_oer_ext_arr_, 0, RequestedParametric_numberOfPorts_oer_p_};
+const TTCN_Typedescriptor_t RequestedParametric_numberOfPorts_descr_ = { "@IsobusNMMessageTypes.RequestedParametric.numberOfPorts", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RequestedParametric_numberOfPorts_xer_, &OCTETSTRING_json_, &RequestedParametric_numberOfPorts_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       RequestedParametric_networkInterconnectionUnitType_xer_ = { {"networkInterconnectionUnitType>\n", "networkInterconnectionUnitType>\n"}, {32, 32}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int RequestedParametric_networkInterconnectionUnitType_oer_ext_arr_[0] = {};
+const int RequestedParametric_networkInterconnectionUnitType_oer_p_[0] = {};
+const TTCN_OERdescriptor_t RequestedParametric_networkInterconnectionUnitType_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RequestedParametric_networkInterconnectionUnitType_oer_ext_arr_, 0, RequestedParametric_networkInterconnectionUnitType_oer_p_};
+const TTCN_Typedescriptor_t RequestedParametric_networkInterconnectionUnitType_descr_ = { "@IsobusNMMessageTypes.RequestedParametric.networkInterconnectionUnitType", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &RequestedParametric_networkInterconnectionUnitType_xer_, &OCTETSTRING_json_, &RequestedParametric_networkInterconnectionUnitType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       RequestedParametric_reserved_xer_ = { {"reserved>\n", "reserved>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int RequestedParametric_reserved_oer_ext_arr_[0] = {};
+const int RequestedParametric_reserved_oer_p_[0] = {};
+const TTCN_OERdescriptor_t RequestedParametric_reserved_oer_ = { -1, TRUE, 1, FALSE, 0, 0, RequestedParametric_reserved_oer_ext_arr_, 0, RequestedParametric_reserved_oer_p_};
+const TTCN_Typedescriptor_t RequestedParametric_reserved_descr_ = { "@IsobusNMMessageTypes.RequestedParametric.reserved", &OCTETSTRING_ber_, &Reserved_raw_, &OCTETSTRING_text_, &RequestedParametric_reserved_xer_, &OCTETSTRING_json_, &RequestedParametric_reserved_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       N__GP__Response_msgFunction_xer_ = { {"msgFunction>\n", "msgFunction>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t N__GP__Response_msgFunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t N__GP__Response_msgFunction_descr_ = { "@IsobusNMMessageTypes.N_GP_Response.msgFunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &N__GP__Response_msgFunction_xer_, &INTEGER_json_, &N__GP__Response_msgFunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__GP__Response_requestedParametrics_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for N__GP__Response_requestedParametrics
+const TTCN_Typedescriptor_t N__GP__Response_requestedParametrics_descr_ = { "@IsobusNMMessageTypes.N_GP_Response.requestedParametrics", NULL, &N__GP__Response_requestedParametrics_raw_, NULL, NULL, NULL, NULL, &General__Types::OCT1_descr_, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       N__GP__Response_requestedParametrics_0_xer_ = { {"OCT1>\n", "OCT1>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int N__GP__Response_requestedParametrics_0_oer_ext_arr_[0] = {};
+const int N__GP__Response_requestedParametrics_0_oer_p_[0] = {};
+const TTCN_OERdescriptor_t N__GP__Response_requestedParametrics_0_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__GP__Response_requestedParametrics_0_oer_ext_arr_, 0, N__GP__Response_requestedParametrics_0_oer_p_};
+const TTCN_Typedescriptor_t N__GP__Response_requestedParametrics_0_descr_ = { "@IsobusNMMessageTypes.N_GP_Response.requestedParametrics.<oftype>", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &N__GP__Response_requestedParametrics_0_xer_, &OCTETSTRING_json_, &N__GP__Response_requestedParametrics_0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__GP__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,NULL,false};
+// No XER for N__GP__Response
+const TTCN_Typedescriptor_t N__GP__Response_descr_ = { "@IsobusNMMessageTypes.N_GP_Response", NULL, &N__GP__Response_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       N__GP__Reset__Statistics_msgFunction_xer_ = { {"msgFunction>\n", "msgFunction>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t N__GP__Reset__Statistics_msgFunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t N__GP__Reset__Statistics_msgFunction_descr_ = { "@IsobusNMMessageTypes.N_GP_Reset_Statistics.msgFunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &N__GP__Reset__Statistics_msgFunction_xer_, &INTEGER_json_, &N__GP__Reset__Statistics_msgFunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__GP__Reset__Statistics_reserved3_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       N__GP__Reset__Statistics_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int N__GP__Reset__Statistics_reserved3_oer_ext_arr_[0] = {};
+const int N__GP__Reset__Statistics_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t N__GP__Reset__Statistics_reserved3_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__GP__Reset__Statistics_reserved3_oer_ext_arr_, 0, N__GP__Reset__Statistics_reserved3_oer_p_};
+const TTCN_Typedescriptor_t N__GP__Reset__Statistics_reserved3_descr_ = { "@IsobusNMMessageTypes.N_GP_Reset_Statistics.reserved3", &OCTETSTRING_ber_, &N__GP__Reset__Statistics_reserved3_raw_, &OCTETSTRING_text_, &N__GP__Reset__Statistics_reserved3_xer_, &OCTETSTRING_json_, &N__GP__Reset__Statistics_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__GP__Reset__Statistics_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       N__GP__Reset__Statistics_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int N__GP__Reset__Statistics_reserved4_oer_ext_arr_[0] = {};
+const int N__GP__Reset__Statistics_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t N__GP__Reset__Statistics_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__GP__Reset__Statistics_reserved4_oer_ext_arr_, 0, N__GP__Reset__Statistics_reserved4_oer_p_};
+const TTCN_Typedescriptor_t N__GP__Reset__Statistics_reserved4_descr_ = { "@IsobusNMMessageTypes.N_GP_Reset_Statistics.reserved4", &OCTETSTRING_ber_, &N__GP__Reset__Statistics_reserved4_raw_, &OCTETSTRING_text_, &N__GP__Reset__Statistics_reserved4_xer_, &OCTETSTRING_json_, &N__GP__Reset__Statistics_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__GP__Reset__Statistics_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       N__GP__Reset__Statistics_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int N__GP__Reset__Statistics_reserved5_oer_ext_arr_[0] = {};
+const int N__GP__Reset__Statistics_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t N__GP__Reset__Statistics_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__GP__Reset__Statistics_reserved5_oer_ext_arr_, 0, N__GP__Reset__Statistics_reserved5_oer_p_};
+const TTCN_Typedescriptor_t N__GP__Reset__Statistics_reserved5_descr_ = { "@IsobusNMMessageTypes.N_GP_Reset_Statistics.reserved5", &OCTETSTRING_ber_, &N__GP__Reset__Statistics_reserved5_raw_, &OCTETSTRING_text_, &N__GP__Reset__Statistics_reserved5_xer_, &OCTETSTRING_json_, &N__GP__Reset__Statistics_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__GP__Reset__Statistics_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       N__GP__Reset__Statistics_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int N__GP__Reset__Statistics_reserved6_oer_ext_arr_[0] = {};
+const int N__GP__Reset__Statistics_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t N__GP__Reset__Statistics_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__GP__Reset__Statistics_reserved6_oer_ext_arr_, 0, N__GP__Reset__Statistics_reserved6_oer_p_};
+const TTCN_Typedescriptor_t N__GP__Reset__Statistics_reserved6_descr_ = { "@IsobusNMMessageTypes.N_GP_Reset_Statistics.reserved6", &OCTETSTRING_ber_, &N__GP__Reset__Statistics_reserved6_raw_, &OCTETSTRING_text_, &N__GP__Reset__Statistics_reserved6_xer_, &OCTETSTRING_json_, &N__GP__Reset__Statistics_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__GP__Reset__Statistics_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       N__GP__Reset__Statistics_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int N__GP__Reset__Statistics_reserved7_oer_ext_arr_[0] = {};
+const int N__GP__Reset__Statistics_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t N__GP__Reset__Statistics_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__GP__Reset__Statistics_reserved7_oer_ext_arr_, 0, N__GP__Reset__Statistics_reserved7_oer_p_};
+const TTCN_Typedescriptor_t N__GP__Reset__Statistics_reserved7_descr_ = { "@IsobusNMMessageTypes.N_GP_Reset_Statistics.reserved7", &OCTETSTRING_ber_, &N__GP__Reset__Statistics_reserved7_raw_, &OCTETSTRING_text_, &N__GP__Reset__Statistics_reserved7_xer_, &OCTETSTRING_json_, &N__GP__Reset__Statistics_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__GP__Reset__Statistics_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       N__GP__Reset__Statistics_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int N__GP__Reset__Statistics_reserved8_oer_ext_arr_[0] = {};
+const int N__GP__Reset__Statistics_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t N__GP__Reset__Statistics_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__GP__Reset__Statistics_reserved8_oer_ext_arr_, 0, N__GP__Reset__Statistics_reserved8_oer_p_};
+const TTCN_Typedescriptor_t N__GP__Reset__Statistics_reserved8_descr_ = { "@IsobusNMMessageTypes.N_GP_Reset_Statistics.reserved8", &OCTETSTRING_ber_, &N__GP__Reset__Statistics_reserved8_raw_, &OCTETSTRING_text_, &N__GP__Reset__Statistics_reserved8_xer_, &OCTETSTRING_json_, &N__GP__Reset__Statistics_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__GP__Reset__Statistics_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for N__GP__Reset__Statistics
+const TTCN_Typedescriptor_t N__GP__Reset__Statistics_descr_ = { "@IsobusNMMessageTypes.N_GP_Reset_Statistics", NULL, &N__GP__Reset__Statistics_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       N__SP__Request_msgFunction_xer_ = { {"msgFunction>\n", "msgFunction>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t N__SP__Request_msgFunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t N__SP__Request_msgFunction_descr_ = { "@IsobusNMMessageTypes.N_SP_Request.msgFunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &N__SP__Request_msgFunction_xer_, &INTEGER_json_, &N__SP__Request_msgFunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__SP__Request_parametricIdentifiers_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for N__SP__Request_parametricIdentifiers
+const TTCN_Typedescriptor_t N__SP__Request_parametricIdentifiers_descr_ = { "@IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers", NULL, &N__SP__Request_parametricIdentifiers_raw_, NULL, NULL, NULL, NULL, &e__ParametricIdentifier_descr_, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__SP__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,NULL,false};
+// No XER for N__SP__Request
+const TTCN_Typedescriptor_t N__SP__Request_descr_ = { "@IsobusNMMessageTypes.N_SP_Request", NULL, &N__SP__Request_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       N__SP__Response_msgFunction_xer_ = { {"msgFunction>\n", "msgFunction>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t N__SP__Response_msgFunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t N__SP__Response_msgFunction_descr_ = { "@IsobusNMMessageTypes.N_SP_Response.msgFunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &N__SP__Response_msgFunction_xer_, &INTEGER_json_, &N__SP__Response_msgFunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__SP__Response_requestedParametrics_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for N__SP__Response_requestedParametrics
+const TTCN_Typedescriptor_t N__SP__Response_requestedParametrics_descr_ = { "@IsobusNMMessageTypes.N_SP_Response.requestedParametrics", NULL, &N__SP__Response_requestedParametrics_raw_, NULL, NULL, NULL, NULL, &General__Types::OCT1_descr_, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       N__SP__Response_requestedParametrics_0_xer_ = { {"OCT1>\n", "OCT1>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int N__SP__Response_requestedParametrics_0_oer_ext_arr_[0] = {};
+const int N__SP__Response_requestedParametrics_0_oer_p_[0] = {};
+const TTCN_OERdescriptor_t N__SP__Response_requestedParametrics_0_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__SP__Response_requestedParametrics_0_oer_ext_arr_, 0, N__SP__Response_requestedParametrics_0_oer_p_};
+const TTCN_Typedescriptor_t N__SP__Response_requestedParametrics_0_descr_ = { "@IsobusNMMessageTypes.N_SP_Response.requestedParametrics.<oftype>", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &N__SP__Response_requestedParametrics_0_xer_, &OCTETSTRING_json_, &N__SP__Response_requestedParametrics_0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__SP__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,NULL,false};
+// No XER for N__SP__Response
+const TTCN_Typedescriptor_t N__SP__Response_descr_ = { "@IsobusNMMessageTypes.N_SP_Response", NULL, &N__SP__Response_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       N__SP__Reset__Statistics_msgFunction_xer_ = { {"msgFunction>\n", "msgFunction>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t N__SP__Reset__Statistics_msgFunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t N__SP__Reset__Statistics_msgFunction_descr_ = { "@IsobusNMMessageTypes.N_SP_Reset_Statistics.msgFunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &N__SP__Reset__Statistics_msgFunction_xer_, &INTEGER_json_, &N__SP__Reset__Statistics_msgFunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__SP__Reset__Statistics_reserved3_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       N__SP__Reset__Statistics_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int N__SP__Reset__Statistics_reserved3_oer_ext_arr_[0] = {};
+const int N__SP__Reset__Statistics_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t N__SP__Reset__Statistics_reserved3_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__SP__Reset__Statistics_reserved3_oer_ext_arr_, 0, N__SP__Reset__Statistics_reserved3_oer_p_};
+const TTCN_Typedescriptor_t N__SP__Reset__Statistics_reserved3_descr_ = { "@IsobusNMMessageTypes.N_SP_Reset_Statistics.reserved3", &OCTETSTRING_ber_, &N__SP__Reset__Statistics_reserved3_raw_, &OCTETSTRING_text_, &N__SP__Reset__Statistics_reserved3_xer_, &OCTETSTRING_json_, &N__SP__Reset__Statistics_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__SP__Reset__Statistics_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       N__SP__Reset__Statistics_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int N__SP__Reset__Statistics_reserved4_oer_ext_arr_[0] = {};
+const int N__SP__Reset__Statistics_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t N__SP__Reset__Statistics_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__SP__Reset__Statistics_reserved4_oer_ext_arr_, 0, N__SP__Reset__Statistics_reserved4_oer_p_};
+const TTCN_Typedescriptor_t N__SP__Reset__Statistics_reserved4_descr_ = { "@IsobusNMMessageTypes.N_SP_Reset_Statistics.reserved4", &OCTETSTRING_ber_, &N__SP__Reset__Statistics_reserved4_raw_, &OCTETSTRING_text_, &N__SP__Reset__Statistics_reserved4_xer_, &OCTETSTRING_json_, &N__SP__Reset__Statistics_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__SP__Reset__Statistics_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       N__SP__Reset__Statistics_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int N__SP__Reset__Statistics_reserved5_oer_ext_arr_[0] = {};
+const int N__SP__Reset__Statistics_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t N__SP__Reset__Statistics_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__SP__Reset__Statistics_reserved5_oer_ext_arr_, 0, N__SP__Reset__Statistics_reserved5_oer_p_};
+const TTCN_Typedescriptor_t N__SP__Reset__Statistics_reserved5_descr_ = { "@IsobusNMMessageTypes.N_SP_Reset_Statistics.reserved5", &OCTETSTRING_ber_, &N__SP__Reset__Statistics_reserved5_raw_, &OCTETSTRING_text_, &N__SP__Reset__Statistics_reserved5_xer_, &OCTETSTRING_json_, &N__SP__Reset__Statistics_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__SP__Reset__Statistics_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       N__SP__Reset__Statistics_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int N__SP__Reset__Statistics_reserved6_oer_ext_arr_[0] = {};
+const int N__SP__Reset__Statistics_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t N__SP__Reset__Statistics_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__SP__Reset__Statistics_reserved6_oer_ext_arr_, 0, N__SP__Reset__Statistics_reserved6_oer_p_};
+const TTCN_Typedescriptor_t N__SP__Reset__Statistics_reserved6_descr_ = { "@IsobusNMMessageTypes.N_SP_Reset_Statistics.reserved6", &OCTETSTRING_ber_, &N__SP__Reset__Statistics_reserved6_raw_, &OCTETSTRING_text_, &N__SP__Reset__Statistics_reserved6_xer_, &OCTETSTRING_json_, &N__SP__Reset__Statistics_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__SP__Reset__Statistics_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       N__SP__Reset__Statistics_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int N__SP__Reset__Statistics_reserved7_oer_ext_arr_[0] = {};
+const int N__SP__Reset__Statistics_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t N__SP__Reset__Statistics_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__SP__Reset__Statistics_reserved7_oer_ext_arr_, 0, N__SP__Reset__Statistics_reserved7_oer_p_};
+const TTCN_Typedescriptor_t N__SP__Reset__Statistics_reserved7_descr_ = { "@IsobusNMMessageTypes.N_SP_Reset_Statistics.reserved7", &OCTETSTRING_ber_, &N__SP__Reset__Statistics_reserved7_raw_, &OCTETSTRING_text_, &N__SP__Reset__Statistics_reserved7_xer_, &OCTETSTRING_json_, &N__SP__Reset__Statistics_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__SP__Reset__Statistics_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       N__SP__Reset__Statistics_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int N__SP__Reset__Statistics_reserved8_oer_ext_arr_[0] = {};
+const int N__SP__Reset__Statistics_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t N__SP__Reset__Statistics_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, N__SP__Reset__Statistics_reserved8_oer_ext_arr_, 0, N__SP__Reset__Statistics_reserved8_oer_p_};
+const TTCN_Typedescriptor_t N__SP__Reset__Statistics_reserved8_descr_ = { "@IsobusNMMessageTypes.N_SP_Reset_Statistics.reserved8", &OCTETSTRING_ber_, &N__SP__Reset__Statistics_reserved8_raw_, &OCTETSTRING_text_, &N__SP__Reset__Statistics_reserved8_xer_, &OCTETSTRING_json_, &N__SP__Reset__Statistics_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__SP__Reset__Statistics_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for N__SP__Reset__Statistics
+const TTCN_Typedescriptor_t N__SP__Reset__Statistics_descr_ = { "@IsobusNMMessageTypes.N_SP_Reset_Statistics", NULL, &N__SP__Reset__Statistics_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       N__OC__Request_msgFunction_xer_ = { {"msgFunction>\n", "msgFunction>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t N__OC__Request_msgFunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t N__OC__Request_msgFunction_descr_ = { "@IsobusNMMessageTypes.N_OC_Request.msgFunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &N__OC__Request_msgFunction_xer_, &INTEGER_json_, &N__OC__Request_msgFunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__OC__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,NULL,false};
+// No XER for N__OC__Request
+const TTCN_Typedescriptor_t N__OC__Request_descr_ = { "@IsobusNMMessageTypes.N_OC_Request", NULL, &N__OC__Request_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       N__CC__Request_msgFunction_xer_ = { {"msgFunction>\n", "msgFunction>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t N__CC__Request_msgFunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t N__CC__Request_msgFunction_descr_ = { "@IsobusNMMessageTypes.N_CC_Request.msgFunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &N__CC__Request_msgFunction_xer_, &INTEGER_json_, &N__CC__Request_msgFunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__CC__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,NULL,false};
+// No XER for N__CC__Request
+const TTCN_Typedescriptor_t N__CC__Request_descr_ = { "@IsobusNMMessageTypes.N_CC_Request", NULL, &N__CC__Request_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t e__Status_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,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for e__Status
+const TTCN_Typedescriptor_t e__Status_descr_ = { "@IsobusNMMessageTypes.e_Status", NULL, &e__Status_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t e__FailureReasonCode_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,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for e__FailureReasonCode
+const TTCN_Typedescriptor_t e__FailureReasonCode_descr_ = { "@IsobusNMMessageTypes.e_FailureReasonCode", NULL, &e__FailureReasonCode_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       N__OC__Response_msgFunction_xer_ = { {"msgFunction>\n", "msgFunction>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t N__OC__Response_msgFunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t N__OC__Response_msgFunction_descr_ = { "@IsobusNMMessageTypes.N_OC_Response.msgFunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &N__OC__Response_msgFunction_xer_, &INTEGER_json_, &N__OC__Response_msgFunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__OC__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,NULL,false};
+// No XER for N__OC__Response
+const TTCN_Typedescriptor_t N__OC__Response_descr_ = { "@IsobusNMMessageTypes.N_OC_Response", NULL, &N__OC__Response_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       N__CC__Response_msgFunction_xer_ = { {"msgFunction>\n", "msgFunction>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t N__CC__Response_msgFunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t N__CC__Response_msgFunction_descr_ = { "@IsobusNMMessageTypes.N_CC_Response.msgFunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &N__CC__Response_msgFunction_xer_, &INTEGER_json_, &N__CC__Response_msgFunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t N__CC__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,NULL,false};
+// No XER for N__CC__Response
+const TTCN_Typedescriptor_t N__CC__Response_descr_ = { "@IsobusNMMessageTypes.N_CC_Response", NULL, &N__CC__Response_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t NetworkMessage_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for NetworkMessage
+const TTCN_Typedescriptor_t NetworkMessage_descr_ = { "@IsobusNMMessageTypes.NetworkMessage", NULL, &NetworkMessage_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+TTCN_Module module_object("IsobusNMMessageTypes", __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);
+
+static const RuntimeVersionChecker ver_checker(  current_runtime_version.requires_major_version_6,
+  current_runtime_version.requires_minor_version_6,
+  current_runtime_version.requires_patch_level_0,  current_runtime_version.requires_runtime_1);
+
+/* Member functions of C++ classes */
+
+NAME::NAME()
+{
+}
+
+NAME::NAME(const BITSTRING& par_selfConfigurableAddressValue,
+    const BITSTRING& par_industryGroupValue,
+    const BITSTRING& par_deviceClassInstanceValue,
+    const BITSTRING& par_deviceClassValue,
+    const BITSTRING& par_reserveValued,
+    const BITSTRING& par_functionValue,
+    const BITSTRING& par_functionInstanceValue,
+    const BITSTRING& par_ecuInstancceValue,
+    const BITSTRING& par_manufacturerCodeValue,
+    const BITSTRING& par_identityNumberBits)
+  :   field_selfConfigurableAddressValue(par_selfConfigurableAddressValue),
+  field_industryGroupValue(par_industryGroupValue),
+  field_deviceClassInstanceValue(par_deviceClassInstanceValue),
+  field_deviceClassValue(par_deviceClassValue),
+  field_reserveValued(par_reserveValued),
+  field_functionValue(par_functionValue),
+  field_functionInstanceValue(par_functionInstanceValue),
+  field_ecuInstancceValue(par_ecuInstancceValue),
+  field_manufacturerCodeValue(par_manufacturerCodeValue),
+  field_identityNumberBits(par_identityNumberBits)
+{
+}
+
+NAME::NAME(const NAME& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.NAME.");
+if (other_value.selfConfigurableAddressValue().is_bound()) field_selfConfigurableAddressValue = other_value.selfConfigurableAddressValue();
+else field_selfConfigurableAddressValue.clean_up();
+if (other_value.industryGroupValue().is_bound()) field_industryGroupValue = other_value.industryGroupValue();
+else field_industryGroupValue.clean_up();
+if (other_value.deviceClassInstanceValue().is_bound()) field_deviceClassInstanceValue = other_value.deviceClassInstanceValue();
+else field_deviceClassInstanceValue.clean_up();
+if (other_value.deviceClassValue().is_bound()) field_deviceClassValue = other_value.deviceClassValue();
+else field_deviceClassValue.clean_up();
+if (other_value.reserveValued().is_bound()) field_reserveValued = other_value.reserveValued();
+else field_reserveValued.clean_up();
+if (other_value.functionValue().is_bound()) field_functionValue = other_value.functionValue();
+else field_functionValue.clean_up();
+if (other_value.functionInstanceValue().is_bound()) field_functionInstanceValue = other_value.functionInstanceValue();
+else field_functionInstanceValue.clean_up();
+if (other_value.ecuInstancceValue().is_bound()) field_ecuInstancceValue = other_value.ecuInstancceValue();
+else field_ecuInstancceValue.clean_up();
+if (other_value.manufacturerCodeValue().is_bound()) field_manufacturerCodeValue = other_value.manufacturerCodeValue();
+else field_manufacturerCodeValue.clean_up();
+if (other_value.identityNumberBits().is_bound()) field_identityNumberBits = other_value.identityNumberBits();
+else field_identityNumberBits.clean_up();
+}
+
+void NAME::clean_up()
+{
+field_selfConfigurableAddressValue.clean_up();
+field_industryGroupValue.clean_up();
+field_deviceClassInstanceValue.clean_up();
+field_deviceClassValue.clean_up();
+field_reserveValued.clean_up();
+field_functionValue.clean_up();
+field_functionInstanceValue.clean_up();
+field_ecuInstancceValue.clean_up();
+field_manufacturerCodeValue.clean_up();
+field_identityNumberBits.clean_up();
+}
+
+const TTCN_Typedescriptor_t* NAME::get_descriptor() const { return &NAME_descr_; }
+NAME& NAME::operator=(const NAME& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.NAME.");
+  if (other_value.selfConfigurableAddressValue().is_bound()) field_selfConfigurableAddressValue = other_value.selfConfigurableAddressValue();
+  else field_selfConfigurableAddressValue.clean_up();
+  if (other_value.industryGroupValue().is_bound()) field_industryGroupValue = other_value.industryGroupValue();
+  else field_industryGroupValue.clean_up();
+  if (other_value.deviceClassInstanceValue().is_bound()) field_deviceClassInstanceValue = other_value.deviceClassInstanceValue();
+  else field_deviceClassInstanceValue.clean_up();
+  if (other_value.deviceClassValue().is_bound()) field_deviceClassValue = other_value.deviceClassValue();
+  else field_deviceClassValue.clean_up();
+  if (other_value.reserveValued().is_bound()) field_reserveValued = other_value.reserveValued();
+  else field_reserveValued.clean_up();
+  if (other_value.functionValue().is_bound()) field_functionValue = other_value.functionValue();
+  else field_functionValue.clean_up();
+  if (other_value.functionInstanceValue().is_bound()) field_functionInstanceValue = other_value.functionInstanceValue();
+  else field_functionInstanceValue.clean_up();
+  if (other_value.ecuInstancceValue().is_bound()) field_ecuInstancceValue = other_value.ecuInstancceValue();
+  else field_ecuInstancceValue.clean_up();
+  if (other_value.manufacturerCodeValue().is_bound()) field_manufacturerCodeValue = other_value.manufacturerCodeValue();
+  else field_manufacturerCodeValue.clean_up();
+  if (other_value.identityNumberBits().is_bound()) field_identityNumberBits = other_value.identityNumberBits();
+  else field_identityNumberBits.clean_up();
+}
+return *this;
+}
+
+boolean NAME::operator==(const NAME& other_value) const
+{
+return field_selfConfigurableAddressValue==other_value.field_selfConfigurableAddressValue
+  && field_industryGroupValue==other_value.field_industryGroupValue
+  && field_deviceClassInstanceValue==other_value.field_deviceClassInstanceValue
+  && field_deviceClassValue==other_value.field_deviceClassValue
+  && field_reserveValued==other_value.field_reserveValued
+  && field_functionValue==other_value.field_functionValue
+  && field_functionInstanceValue==other_value.field_functionInstanceValue
+  && field_ecuInstancceValue==other_value.field_ecuInstancceValue
+  && field_manufacturerCodeValue==other_value.field_manufacturerCodeValue
+  && field_identityNumberBits==other_value.field_identityNumberBits;
+}
+
+boolean NAME::is_bound() const
+{
+return (field_selfConfigurableAddressValue.is_bound())
+  || (field_industryGroupValue.is_bound())
+  || (field_deviceClassInstanceValue.is_bound())
+  || (field_deviceClassValue.is_bound())
+  || (field_reserveValued.is_bound())
+  || (field_functionValue.is_bound())
+  || (field_functionInstanceValue.is_bound())
+  || (field_ecuInstancceValue.is_bound())
+  || (field_manufacturerCodeValue.is_bound())
+  || (field_identityNumberBits.is_bound());
+}
+boolean NAME::is_value() const
+{
+return field_selfConfigurableAddressValue.is_value()
+  && field_industryGroupValue.is_value()
+  && field_deviceClassInstanceValue.is_value()
+  && field_deviceClassValue.is_value()
+  && field_reserveValued.is_value()
+  && field_functionValue.is_value()
+  && field_functionInstanceValue.is_value()
+  && field_ecuInstancceValue.is_value()
+  && field_manufacturerCodeValue.is_value()
+  && field_identityNumberBits.is_value();
+}
+void NAME::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ selfConfigurableAddressValue := ");
+field_selfConfigurableAddressValue.log();
+TTCN_Logger::log_event_str(", industryGroupValue := ");
+field_industryGroupValue.log();
+TTCN_Logger::log_event_str(", deviceClassInstanceValue := ");
+field_deviceClassInstanceValue.log();
+TTCN_Logger::log_event_str(", deviceClassValue := ");
+field_deviceClassValue.log();
+TTCN_Logger::log_event_str(", reserveValued := ");
+field_reserveValued.log();
+TTCN_Logger::log_event_str(", functionValue := ");
+field_functionValue.log();
+TTCN_Logger::log_event_str(", functionInstanceValue := ");
+field_functionInstanceValue.log();
+TTCN_Logger::log_event_str(", ecuInstancceValue := ");
+field_ecuInstancceValue.log();
+TTCN_Logger::log_event_str(", manufacturerCodeValue := ");
+field_manufacturerCodeValue.log();
+TTCN_Logger::log_event_str(", identityNumberBits := ");
+field_identityNumberBits.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void NAME::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 @IsobusNMMessageTypes.NAME 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) selfConfigurableAddressValue().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) industryGroupValue().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) deviceClassInstanceValue().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) deviceClassValue().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserveValued().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) functionValue().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) functionInstanceValue().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) ecuInstancceValue().set_param(*param.get_elem(7));
+    if (param.get_size()>8 && param.get_elem(8)->get_type()!=Module_Param::MP_NotUsed) manufacturerCodeValue().set_param(*param.get_elem(8));
+    if (param.get_size()>9 && param.get_elem(9)->get_type()!=Module_Param::MP_NotUsed) identityNumberBits().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(), "selfConfigurableAddressValue")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          selfConfigurableAddressValue().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(), "industryGroupValue")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          industryGroupValue().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(), "deviceClassInstanceValue")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          deviceClassInstanceValue().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(), "deviceClassValue")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          deviceClassValue().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(), "reserveValued")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserveValued().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(), "functionValue")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          functionValue().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(), "functionInstanceValue")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          functionInstanceValue().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(), "ecuInstancceValue")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ecuInstancceValue().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(), "manufacturerCodeValue")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          manufacturerCodeValue().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(), "identityNumberBits")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          identityNumberBits().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 @IsobusNMMessageTypes.NAME: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusNMMessageTypes.NAME");
+  }
+}
+
+void NAME::set_implicit_omit()
+{
+if (selfConfigurableAddressValue().is_bound()) selfConfigurableAddressValue().set_implicit_omit();
+if (industryGroupValue().is_bound()) industryGroupValue().set_implicit_omit();
+if (deviceClassInstanceValue().is_bound()) deviceClassInstanceValue().set_implicit_omit();
+if (deviceClassValue().is_bound()) deviceClassValue().set_implicit_omit();
+if (reserveValued().is_bound()) reserveValued().set_implicit_omit();
+if (functionValue().is_bound()) functionValue().set_implicit_omit();
+if (functionInstanceValue().is_bound()) functionInstanceValue().set_implicit_omit();
+if (ecuInstancceValue().is_bound()) ecuInstancceValue().set_implicit_omit();
+if (manufacturerCodeValue().is_bound()) manufacturerCodeValue().set_implicit_omit();
+if (identityNumberBits().is_bound()) identityNumberBits().set_implicit_omit();
+}
+
+void NAME::encode_text(Text_Buf& text_buf) const
+{
+field_selfConfigurableAddressValue.encode_text(text_buf);
+field_industryGroupValue.encode_text(text_buf);
+field_deviceClassInstanceValue.encode_text(text_buf);
+field_deviceClassValue.encode_text(text_buf);
+field_reserveValued.encode_text(text_buf);
+field_functionValue.encode_text(text_buf);
+field_functionInstanceValue.encode_text(text_buf);
+field_ecuInstancceValue.encode_text(text_buf);
+field_manufacturerCodeValue.encode_text(text_buf);
+field_identityNumberBits.encode_text(text_buf);
+}
+
+void NAME::decode_text(Text_Buf& text_buf)
+{
+field_selfConfigurableAddressValue.decode_text(text_buf);
+field_industryGroupValue.decode_text(text_buf);
+field_deviceClassInstanceValue.decode_text(text_buf);
+field_deviceClassValue.decode_text(text_buf);
+field_reserveValued.decode_text(text_buf);
+field_functionValue.decode_text(text_buf);
+field_functionInstanceValue.decode_text(text_buf);
+field_ecuInstancceValue.decode_text(text_buf);
+field_manufacturerCodeValue.decode_text(text_buf);
+field_identityNumberBits.decode_text(text_buf);
+}
+
+void NAME::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void NAME::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int NAME::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, NAME_selfConfigurableAddressValue_descr_.raw->forceomit);
+  decoded_field_length = field_selfConfigurableAddressValue.RAW_decode(NAME_selfConfigurableAddressValue_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, NAME_industryGroupValue_descr_.raw->forceomit);
+  decoded_field_length = field_industryGroupValue.RAW_decode(NAME_industryGroupValue_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, NAME_deviceClassInstanceValue_descr_.raw->forceomit);
+  decoded_field_length = field_deviceClassInstanceValue.RAW_decode(NAME_deviceClassInstanceValue_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, NAME_deviceClassValue_descr_.raw->forceomit);
+  decoded_field_length = field_deviceClassValue.RAW_decode(NAME_deviceClassValue_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, NAME_reserveValued_descr_.raw->forceomit);
+  decoded_field_length = field_reserveValued.RAW_decode(NAME_reserveValued_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, NAME_functionValue_descr_.raw->forceomit);
+  decoded_field_length = field_functionValue.RAW_decode(NAME_functionValue_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, NAME_functionInstanceValue_descr_.raw->forceomit);
+  decoded_field_length = field_functionInstanceValue.RAW_decode(NAME_functionInstanceValue_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, NAME_ecuInstancceValue_descr_.raw->forceomit);
+  decoded_field_length = field_ecuInstancceValue.RAW_decode(NAME_ecuInstancceValue_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, NAME_manufacturerCodeValue_descr_.raw->forceomit);
+  decoded_field_length = field_manufacturerCodeValue.RAW_decode(NAME_manufacturerCodeValue_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());
+  RAW_Force_Omit field_9_force_omit(9, force_omit, NAME_identityNumberBits_descr_.raw->forceomit);
+  decoded_field_length = field_identityNumberBits.RAW_decode(NAME_identityNumberBits_descr_, p_buf, limit, 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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int NAME::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, NAME_selfConfigurableAddressValue_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, NAME_industryGroupValue_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, NAME_deviceClassInstanceValue_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, NAME_deviceClassValue_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, NAME_reserveValued_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, NAME_functionValue_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, NAME_functionInstanceValue_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, NAME_ecuInstancceValue_descr_.raw);
+  myleaf.body.node.nodes[8] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 8, NAME_manufacturerCodeValue_descr_.raw);
+  myleaf.body.node.nodes[9] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 9, NAME_identityNumberBits_descr_.raw);
+  encoded_length += field_selfConfigurableAddressValue.RAW_encode(NAME_selfConfigurableAddressValue_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_industryGroupValue.RAW_encode(NAME_industryGroupValue_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_deviceClassInstanceValue.RAW_encode(NAME_deviceClassInstanceValue_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_deviceClassValue.RAW_encode(NAME_deviceClassValue_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserveValued.RAW_encode(NAME_reserveValued_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_functionValue.RAW_encode(NAME_functionValue_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_functionInstanceValue.RAW_encode(NAME_functionInstanceValue_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_ecuInstancceValue.RAW_encode(NAME_ecuInstancceValue_descr_, *myleaf.body.node.nodes[7]);
+  encoded_length += field_manufacturerCodeValue.RAW_encode(NAME_manufacturerCodeValue_descr_, *myleaf.body.node.nodes[8]);
+  encoded_length += field_identityNumberBits.RAW_encode(NAME_identityNumberBits_descr_, *myleaf.body.node.nodes[9]);
+  return myleaf.length = encoded_length;
+}
+
+struct NAME_template::single_value_struct {
+BITSTRING_template field_selfConfigurableAddressValue;
+BITSTRING_template field_industryGroupValue;
+BITSTRING_template field_deviceClassInstanceValue;
+BITSTRING_template field_deviceClassValue;
+BITSTRING_template field_reserveValued;
+BITSTRING_template field_functionValue;
+BITSTRING_template field_functionInstanceValue;
+BITSTRING_template field_ecuInstancceValue;
+BITSTRING_template field_manufacturerCodeValue;
+BITSTRING_template field_identityNumberBits;
+};
+
+void NAME_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_selfConfigurableAddressValue = ANY_VALUE;
+single_value->field_industryGroupValue = ANY_VALUE;
+single_value->field_deviceClassInstanceValue = ANY_VALUE;
+single_value->field_deviceClassValue = ANY_VALUE;
+single_value->field_reserveValued = ANY_VALUE;
+single_value->field_functionValue = ANY_VALUE;
+single_value->field_functionInstanceValue = ANY_VALUE;
+single_value->field_ecuInstancceValue = ANY_VALUE;
+single_value->field_manufacturerCodeValue = ANY_VALUE;
+single_value->field_identityNumberBits = ANY_VALUE;
+}
+}
+}
+
+void NAME_template::copy_value(const NAME& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.selfConfigurableAddressValue().is_bound()) {
+  single_value->field_selfConfigurableAddressValue = other_value.selfConfigurableAddressValue();
+} else {
+  single_value->field_selfConfigurableAddressValue.clean_up();
+}
+if (other_value.industryGroupValue().is_bound()) {
+  single_value->field_industryGroupValue = other_value.industryGroupValue();
+} else {
+  single_value->field_industryGroupValue.clean_up();
+}
+if (other_value.deviceClassInstanceValue().is_bound()) {
+  single_value->field_deviceClassInstanceValue = other_value.deviceClassInstanceValue();
+} else {
+  single_value->field_deviceClassInstanceValue.clean_up();
+}
+if (other_value.deviceClassValue().is_bound()) {
+  single_value->field_deviceClassValue = other_value.deviceClassValue();
+} else {
+  single_value->field_deviceClassValue.clean_up();
+}
+if (other_value.reserveValued().is_bound()) {
+  single_value->field_reserveValued = other_value.reserveValued();
+} else {
+  single_value->field_reserveValued.clean_up();
+}
+if (other_value.functionValue().is_bound()) {
+  single_value->field_functionValue = other_value.functionValue();
+} else {
+  single_value->field_functionValue.clean_up();
+}
+if (other_value.functionInstanceValue().is_bound()) {
+  single_value->field_functionInstanceValue = other_value.functionInstanceValue();
+} else {
+  single_value->field_functionInstanceValue.clean_up();
+}
+if (other_value.ecuInstancceValue().is_bound()) {
+  single_value->field_ecuInstancceValue = other_value.ecuInstancceValue();
+} else {
+  single_value->field_ecuInstancceValue.clean_up();
+}
+if (other_value.manufacturerCodeValue().is_bound()) {
+  single_value->field_manufacturerCodeValue = other_value.manufacturerCodeValue();
+} else {
+  single_value->field_manufacturerCodeValue.clean_up();
+}
+if (other_value.identityNumberBits().is_bound()) {
+  single_value->field_identityNumberBits = other_value.identityNumberBits();
+} else {
+  single_value->field_identityNumberBits.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void NAME_template::copy_template(const NAME_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.selfConfigurableAddressValue().get_selection()) {
+single_value->field_selfConfigurableAddressValue = other_value.selfConfigurableAddressValue();
+} else {
+single_value->field_selfConfigurableAddressValue.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.industryGroupValue().get_selection()) {
+single_value->field_industryGroupValue = other_value.industryGroupValue();
+} else {
+single_value->field_industryGroupValue.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.deviceClassInstanceValue().get_selection()) {
+single_value->field_deviceClassInstanceValue = other_value.deviceClassInstanceValue();
+} else {
+single_value->field_deviceClassInstanceValue.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.deviceClassValue().get_selection()) {
+single_value->field_deviceClassValue = other_value.deviceClassValue();
+} else {
+single_value->field_deviceClassValue.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserveValued().get_selection()) {
+single_value->field_reserveValued = other_value.reserveValued();
+} else {
+single_value->field_reserveValued.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.functionValue().get_selection()) {
+single_value->field_functionValue = other_value.functionValue();
+} else {
+single_value->field_functionValue.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.functionInstanceValue().get_selection()) {
+single_value->field_functionInstanceValue = other_value.functionInstanceValue();
+} else {
+single_value->field_functionInstanceValue.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.ecuInstancceValue().get_selection()) {
+single_value->field_ecuInstancceValue = other_value.ecuInstancceValue();
+} else {
+single_value->field_ecuInstancceValue.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.manufacturerCodeValue().get_selection()) {
+single_value->field_manufacturerCodeValue = other_value.manufacturerCodeValue();
+} else {
+single_value->field_manufacturerCodeValue.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.identityNumberBits().get_selection()) {
+single_value->field_identityNumberBits = other_value.identityNumberBits();
+} else {
+single_value->field_identityNumberBits.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new NAME_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.NAME.");
+break;
+}
+set_selection(other_value);
+}
+
+NAME_template::NAME_template()
+{
+}
+
+NAME_template::NAME_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+NAME_template::NAME_template(const NAME& other_value)
+{
+copy_value(other_value);
+}
+
+NAME_template::NAME_template(const OPTIONAL<NAME>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const NAME&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusNMMessageTypes.NAME from an unbound optional field.");
+}
+}
+
+NAME_template::NAME_template(const NAME_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+NAME_template::~NAME_template()
+{
+clean_up();
+}
+
+NAME_template& NAME_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+NAME_template& NAME_template::operator=(const NAME& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+NAME_template& NAME_template::operator=(const OPTIONAL<NAME>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const NAME&)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 @IsobusNMMessageTypes.NAME.");
+}
+return *this;
+}
+
+NAME_template& NAME_template::operator=(const NAME_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean NAME_template::match(const NAME& 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.selfConfigurableAddressValue().is_bound()) return FALSE;
+if(!single_value->field_selfConfigurableAddressValue.match(other_value.selfConfigurableAddressValue(), legacy))return FALSE;
+if(!other_value.industryGroupValue().is_bound()) return FALSE;
+if(!single_value->field_industryGroupValue.match(other_value.industryGroupValue(), legacy))return FALSE;
+if(!other_value.deviceClassInstanceValue().is_bound()) return FALSE;
+if(!single_value->field_deviceClassInstanceValue.match(other_value.deviceClassInstanceValue(), legacy))return FALSE;
+if(!other_value.deviceClassValue().is_bound()) return FALSE;
+if(!single_value->field_deviceClassValue.match(other_value.deviceClassValue(), legacy))return FALSE;
+if(!other_value.reserveValued().is_bound()) return FALSE;
+if(!single_value->field_reserveValued.match(other_value.reserveValued(), legacy))return FALSE;
+if(!other_value.functionValue().is_bound()) return FALSE;
+if(!single_value->field_functionValue.match(other_value.functionValue(), legacy))return FALSE;
+if(!other_value.functionInstanceValue().is_bound()) return FALSE;
+if(!single_value->field_functionInstanceValue.match(other_value.functionInstanceValue(), legacy))return FALSE;
+if(!other_value.ecuInstancceValue().is_bound()) return FALSE;
+if(!single_value->field_ecuInstancceValue.match(other_value.ecuInstancceValue(), legacy))return FALSE;
+if(!other_value.manufacturerCodeValue().is_bound()) return FALSE;
+if(!single_value->field_manufacturerCodeValue.match(other_value.manufacturerCodeValue(), legacy))return FALSE;
+if(!other_value.identityNumberBits().is_bound()) return FALSE;
+if(!single_value->field_identityNumberBits.match(other_value.identityNumberBits(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.NAME.");
+}
+return FALSE;
+}
+
+boolean NAME_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_selfConfigurableAddressValue.is_bound()
+
+ ||single_value->field_industryGroupValue.is_bound()
+
+ ||single_value->field_deviceClassInstanceValue.is_bound()
+
+ ||single_value->field_deviceClassValue.is_bound()
+
+ ||single_value->field_reserveValued.is_bound()
+
+ ||single_value->field_functionValue.is_bound()
+
+ ||single_value->field_functionInstanceValue.is_bound()
+
+ ||single_value->field_ecuInstancceValue.is_bound()
+
+ ||single_value->field_manufacturerCodeValue.is_bound()
+
+ ||single_value->field_identityNumberBits.is_bound()
+;
+}
+
+boolean NAME_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_selfConfigurableAddressValue.is_value()
+ &&single_value->field_industryGroupValue.is_value()
+ &&single_value->field_deviceClassInstanceValue.is_value()
+ &&single_value->field_deviceClassValue.is_value()
+ &&single_value->field_reserveValued.is_value()
+ &&single_value->field_functionValue.is_value()
+ &&single_value->field_functionInstanceValue.is_value()
+ &&single_value->field_ecuInstancceValue.is_value()
+ &&single_value->field_manufacturerCodeValue.is_value()
+ &&single_value->field_identityNumberBits.is_value();
+}
+
+void NAME_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+NAME NAME_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 @IsobusNMMessageTypes.NAME.");
+NAME ret_val;
+if (single_value->field_selfConfigurableAddressValue.is_bound()) {
+ret_val.selfConfigurableAddressValue() = single_value->field_selfConfigurableAddressValue.valueof();
+}
+if (single_value->field_industryGroupValue.is_bound()) {
+ret_val.industryGroupValue() = single_value->field_industryGroupValue.valueof();
+}
+if (single_value->field_deviceClassInstanceValue.is_bound()) {
+ret_val.deviceClassInstanceValue() = single_value->field_deviceClassInstanceValue.valueof();
+}
+if (single_value->field_deviceClassValue.is_bound()) {
+ret_val.deviceClassValue() = single_value->field_deviceClassValue.valueof();
+}
+if (single_value->field_reserveValued.is_bound()) {
+ret_val.reserveValued() = single_value->field_reserveValued.valueof();
+}
+if (single_value->field_functionValue.is_bound()) {
+ret_val.functionValue() = single_value->field_functionValue.valueof();
+}
+if (single_value->field_functionInstanceValue.is_bound()) {
+ret_val.functionInstanceValue() = single_value->field_functionInstanceValue.valueof();
+}
+if (single_value->field_ecuInstancceValue.is_bound()) {
+ret_val.ecuInstancceValue() = single_value->field_ecuInstancceValue.valueof();
+}
+if (single_value->field_manufacturerCodeValue.is_bound()) {
+ret_val.manufacturerCodeValue() = single_value->field_manufacturerCodeValue.valueof();
+}
+if (single_value->field_identityNumberBits.is_bound()) {
+ret_val.identityNumberBits() = single_value->field_identityNumberBits.valueof();
+}
+return ret_val;
+}
+
+void NAME_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.NAME.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new NAME_template[list_length];
+}
+
+NAME_template& NAME_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.NAME.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.NAME.");
+return value_list.list_value[list_index];
+}
+
+BITSTRING_template& NAME_template::selfConfigurableAddressValue()
+{
+set_specific();
+return single_value->field_selfConfigurableAddressValue;
+}
+
+const BITSTRING_template& NAME_template::selfConfigurableAddressValue() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field selfConfigurableAddressValue of a non-specific template of type @IsobusNMMessageTypes.NAME.");
+return single_value->field_selfConfigurableAddressValue;
+}
+
+BITSTRING_template& NAME_template::industryGroupValue()
+{
+set_specific();
+return single_value->field_industryGroupValue;
+}
+
+const BITSTRING_template& NAME_template::industryGroupValue() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field industryGroupValue of a non-specific template of type @IsobusNMMessageTypes.NAME.");
+return single_value->field_industryGroupValue;
+}
+
+BITSTRING_template& NAME_template::deviceClassInstanceValue()
+{
+set_specific();
+return single_value->field_deviceClassInstanceValue;
+}
+
+const BITSTRING_template& NAME_template::deviceClassInstanceValue() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field deviceClassInstanceValue of a non-specific template of type @IsobusNMMessageTypes.NAME.");
+return single_value->field_deviceClassInstanceValue;
+}
+
+BITSTRING_template& NAME_template::deviceClassValue()
+{
+set_specific();
+return single_value->field_deviceClassValue;
+}
+
+const BITSTRING_template& NAME_template::deviceClassValue() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field deviceClassValue of a non-specific template of type @IsobusNMMessageTypes.NAME.");
+return single_value->field_deviceClassValue;
+}
+
+BITSTRING_template& NAME_template::reserveValued()
+{
+set_specific();
+return single_value->field_reserveValued;
+}
+
+const BITSTRING_template& NAME_template::reserveValued() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserveValued of a non-specific template of type @IsobusNMMessageTypes.NAME.");
+return single_value->field_reserveValued;
+}
+
+BITSTRING_template& NAME_template::functionValue()
+{
+set_specific();
+return single_value->field_functionValue;
+}
+
+const BITSTRING_template& NAME_template::functionValue() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field functionValue of a non-specific template of type @IsobusNMMessageTypes.NAME.");
+return single_value->field_functionValue;
+}
+
+BITSTRING_template& NAME_template::functionInstanceValue()
+{
+set_specific();
+return single_value->field_functionInstanceValue;
+}
+
+const BITSTRING_template& NAME_template::functionInstanceValue() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field functionInstanceValue of a non-specific template of type @IsobusNMMessageTypes.NAME.");
+return single_value->field_functionInstanceValue;
+}
+
+BITSTRING_template& NAME_template::ecuInstancceValue()
+{
+set_specific();
+return single_value->field_ecuInstancceValue;
+}
+
+const BITSTRING_template& NAME_template::ecuInstancceValue() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field ecuInstancceValue of a non-specific template of type @IsobusNMMessageTypes.NAME.");
+return single_value->field_ecuInstancceValue;
+}
+
+BITSTRING_template& NAME_template::manufacturerCodeValue()
+{
+set_specific();
+return single_value->field_manufacturerCodeValue;
+}
+
+const BITSTRING_template& NAME_template::manufacturerCodeValue() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field manufacturerCodeValue of a non-specific template of type @IsobusNMMessageTypes.NAME.");
+return single_value->field_manufacturerCodeValue;
+}
+
+BITSTRING_template& NAME_template::identityNumberBits()
+{
+set_specific();
+return single_value->field_identityNumberBits;
+}
+
+const BITSTRING_template& NAME_template::identityNumberBits() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field identityNumberBits of a non-specific template of type @IsobusNMMessageTypes.NAME.");
+return single_value->field_identityNumberBits;
+}
+
+int NAME_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.NAME 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 @IsobusNMMessageTypes.NAME 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 @IsobusNMMessageTypes.NAME containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.NAME containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.NAME containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.NAME containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.NAME.");
+  }
+  return 0;
+}
+
+void NAME_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ selfConfigurableAddressValue := ");
+single_value->field_selfConfigurableAddressValue.log();
+TTCN_Logger::log_event_str(", industryGroupValue := ");
+single_value->field_industryGroupValue.log();
+TTCN_Logger::log_event_str(", deviceClassInstanceValue := ");
+single_value->field_deviceClassInstanceValue.log();
+TTCN_Logger::log_event_str(", deviceClassValue := ");
+single_value->field_deviceClassValue.log();
+TTCN_Logger::log_event_str(", reserveValued := ");
+single_value->field_reserveValued.log();
+TTCN_Logger::log_event_str(", functionValue := ");
+single_value->field_functionValue.log();
+TTCN_Logger::log_event_str(", functionInstanceValue := ");
+single_value->field_functionInstanceValue.log();
+TTCN_Logger::log_event_str(", ecuInstancceValue := ");
+single_value->field_ecuInstancceValue.log();
+TTCN_Logger::log_event_str(", manufacturerCodeValue := ");
+single_value->field_manufacturerCodeValue.log();
+TTCN_Logger::log_event_str(", identityNumberBits := ");
+single_value->field_identityNumberBits.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void NAME_template::log_match(const NAME& 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_selfConfigurableAddressValue.match(match_value.selfConfigurableAddressValue(), legacy)){
+TTCN_Logger::log_logmatch_info(".selfConfigurableAddressValue");
+single_value->field_selfConfigurableAddressValue.log_match(match_value.selfConfigurableAddressValue(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_industryGroupValue.match(match_value.industryGroupValue(), legacy)){
+TTCN_Logger::log_logmatch_info(".industryGroupValue");
+single_value->field_industryGroupValue.log_match(match_value.industryGroupValue(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_deviceClassInstanceValue.match(match_value.deviceClassInstanceValue(), legacy)){
+TTCN_Logger::log_logmatch_info(".deviceClassInstanceValue");
+single_value->field_deviceClassInstanceValue.log_match(match_value.deviceClassInstanceValue(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_deviceClassValue.match(match_value.deviceClassValue(), legacy)){
+TTCN_Logger::log_logmatch_info(".deviceClassValue");
+single_value->field_deviceClassValue.log_match(match_value.deviceClassValue(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserveValued.match(match_value.reserveValued(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserveValued");
+single_value->field_reserveValued.log_match(match_value.reserveValued(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_functionValue.match(match_value.functionValue(), legacy)){
+TTCN_Logger::log_logmatch_info(".functionValue");
+single_value->field_functionValue.log_match(match_value.functionValue(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_functionInstanceValue.match(match_value.functionInstanceValue(), legacy)){
+TTCN_Logger::log_logmatch_info(".functionInstanceValue");
+single_value->field_functionInstanceValue.log_match(match_value.functionInstanceValue(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_ecuInstancceValue.match(match_value.ecuInstancceValue(), legacy)){
+TTCN_Logger::log_logmatch_info(".ecuInstancceValue");
+single_value->field_ecuInstancceValue.log_match(match_value.ecuInstancceValue(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_manufacturerCodeValue.match(match_value.manufacturerCodeValue(), legacy)){
+TTCN_Logger::log_logmatch_info(".manufacturerCodeValue");
+single_value->field_manufacturerCodeValue.log_match(match_value.manufacturerCodeValue(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_identityNumberBits.match(match_value.identityNumberBits(), legacy)){
+TTCN_Logger::log_logmatch_info(".identityNumberBits");
+single_value->field_identityNumberBits.log_match(match_value.identityNumberBits(), 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("{ selfConfigurableAddressValue := ");
+single_value->field_selfConfigurableAddressValue.log_match(match_value.selfConfigurableAddressValue(), legacy);
+TTCN_Logger::log_event_str(", industryGroupValue := ");
+single_value->field_industryGroupValue.log_match(match_value.industryGroupValue(), legacy);
+TTCN_Logger::log_event_str(", deviceClassInstanceValue := ");
+single_value->field_deviceClassInstanceValue.log_match(match_value.deviceClassInstanceValue(), legacy);
+TTCN_Logger::log_event_str(", deviceClassValue := ");
+single_value->field_deviceClassValue.log_match(match_value.deviceClassValue(), legacy);
+TTCN_Logger::log_event_str(", reserveValued := ");
+single_value->field_reserveValued.log_match(match_value.reserveValued(), legacy);
+TTCN_Logger::log_event_str(", functionValue := ");
+single_value->field_functionValue.log_match(match_value.functionValue(), legacy);
+TTCN_Logger::log_event_str(", functionInstanceValue := ");
+single_value->field_functionInstanceValue.log_match(match_value.functionInstanceValue(), legacy);
+TTCN_Logger::log_event_str(", ecuInstancceValue := ");
+single_value->field_ecuInstancceValue.log_match(match_value.ecuInstancceValue(), legacy);
+TTCN_Logger::log_event_str(", manufacturerCodeValue := ");
+single_value->field_manufacturerCodeValue.log_match(match_value.manufacturerCodeValue(), legacy);
+TTCN_Logger::log_event_str(", identityNumberBits := ");
+single_value->field_identityNumberBits.log_match(match_value.identityNumberBits(), 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 NAME_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_selfConfigurableAddressValue.encode_text(text_buf);
+single_value->field_industryGroupValue.encode_text(text_buf);
+single_value->field_deviceClassInstanceValue.encode_text(text_buf);
+single_value->field_deviceClassValue.encode_text(text_buf);
+single_value->field_reserveValued.encode_text(text_buf);
+single_value->field_functionValue.encode_text(text_buf);
+single_value->field_functionInstanceValue.encode_text(text_buf);
+single_value->field_ecuInstancceValue.encode_text(text_buf);
+single_value->field_manufacturerCodeValue.encode_text(text_buf);
+single_value->field_identityNumberBits.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 @IsobusNMMessageTypes.NAME.");
+}
+}
+
+void NAME_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_selfConfigurableAddressValue.decode_text(text_buf);
+single_value->field_industryGroupValue.decode_text(text_buf);
+single_value->field_deviceClassInstanceValue.decode_text(text_buf);
+single_value->field_deviceClassValue.decode_text(text_buf);
+single_value->field_reserveValued.decode_text(text_buf);
+single_value->field_functionValue.decode_text(text_buf);
+single_value->field_functionInstanceValue.decode_text(text_buf);
+single_value->field_ecuInstancceValue.decode_text(text_buf);
+single_value->field_manufacturerCodeValue.decode_text(text_buf);
+single_value->field_identityNumberBits.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 NAME_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 @IsobusNMMessageTypes.NAME.");
+}
+}
+
+void NAME_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: {
+    NAME_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusNMMessageTypes.NAME 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) selfConfigurableAddressValue().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) industryGroupValue().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) deviceClassInstanceValue().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) deviceClassValue().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserveValued().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) functionValue().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) functionInstanceValue().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) ecuInstancceValue().set_param(*param.get_elem(7));
+    if (param.get_size()>8 && param.get_elem(8)->get_type()!=Module_Param::MP_NotUsed) manufacturerCodeValue().set_param(*param.get_elem(8));
+    if (param.get_size()>9 && param.get_elem(9)->get_type()!=Module_Param::MP_NotUsed) identityNumberBits().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(), "selfConfigurableAddressValue")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          selfConfigurableAddressValue().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(), "industryGroupValue")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          industryGroupValue().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(), "deviceClassInstanceValue")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          deviceClassInstanceValue().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(), "deviceClassValue")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          deviceClassValue().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(), "reserveValued")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserveValued().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(), "functionValue")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          functionValue().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(), "functionInstanceValue")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          functionInstanceValue().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(), "ecuInstancceValue")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ecuInstancceValue().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(), "manufacturerCodeValue")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          manufacturerCodeValue().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(), "identityNumberBits")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          identityNumberBits().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 @IsobusNMMessageTypes.NAME: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusNMMessageTypes.NAME");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void NAME_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_selfConfigurableAddressValue.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NAME");
+single_value->field_industryGroupValue.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NAME");
+single_value->field_deviceClassInstanceValue.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NAME");
+single_value->field_deviceClassValue.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NAME");
+single_value->field_reserveValued.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NAME");
+single_value->field_functionValue.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NAME");
+single_value->field_functionInstanceValue.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NAME");
+single_value->field_ecuInstancceValue.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NAME");
+single_value->field_manufacturerCodeValue.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NAME");
+single_value->field_identityNumberBits.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NAME");
+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 : "@IsobusNMMessageTypes.NAME");
+}
+
+boolean NAME_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean NAME_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+CannotClaimSourceAddress::CannotClaimSourceAddress()
+{
+}
+
+CannotClaimSourceAddress::CannotClaimSourceAddress(const NAME& par_name)
+  :   field_name(par_name)
+{
+}
+
+CannotClaimSourceAddress::CannotClaimSourceAddress(const CannotClaimSourceAddress& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.CannotClaimSourceAddress.");
+if (other_value.name().is_bound()) field_name = other_value.name();
+else field_name.clean_up();
+}
+
+void CannotClaimSourceAddress::clean_up()
+{
+field_name.clean_up();
+}
+
+const TTCN_Typedescriptor_t* CannotClaimSourceAddress::get_descriptor() const { return &CannotClaimSourceAddress_descr_; }
+CannotClaimSourceAddress& CannotClaimSourceAddress::operator=(const CannotClaimSourceAddress& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.CannotClaimSourceAddress.");
+  if (other_value.name().is_bound()) field_name = other_value.name();
+  else field_name.clean_up();
+}
+return *this;
+}
+
+boolean CannotClaimSourceAddress::operator==(const CannotClaimSourceAddress& other_value) const
+{
+return field_name==other_value.field_name;
+}
+
+boolean CannotClaimSourceAddress::is_bound() const
+{
+return (field_name.is_bound());
+}
+boolean CannotClaimSourceAddress::is_value() const
+{
+return field_name.is_value();
+}
+void CannotClaimSourceAddress::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ name := ");
+field_name.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void CannotClaimSourceAddress::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 (1<param.get_size()) {
+      param.error("record value of type @IsobusNMMessageTypes.CannotClaimSourceAddress has 1 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) name().set_param(*param.get_elem(0));
+    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(), "name")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          name().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 @IsobusNMMessageTypes.CannotClaimSourceAddress: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusNMMessageTypes.CannotClaimSourceAddress");
+  }
+}
+
+void CannotClaimSourceAddress::set_implicit_omit()
+{
+if (name().is_bound()) name().set_implicit_omit();
+}
+
+void CannotClaimSourceAddress::encode_text(Text_Buf& text_buf) const
+{
+field_name.encode_text(text_buf);
+}
+
+void CannotClaimSourceAddress::decode_text(Text_Buf& text_buf)
+{
+field_name.decode_text(text_buf);
+}
+
+void CannotClaimSourceAddress::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void CannotClaimSourceAddress::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int CannotClaimSourceAddress::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, NAME_descr_.raw->forceomit);
+  decoded_field_length = field_name.RAW_decode(NAME_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int CannotClaimSourceAddress::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 = 1;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(1);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, NAME_descr_.raw);
+  encoded_length += field_name.RAW_encode(NAME_descr_, *myleaf.body.node.nodes[0]);
+  return myleaf.length = encoded_length;
+}
+
+struct CannotClaimSourceAddress_template::single_value_struct {
+NAME_template field_name;
+};
+
+void CannotClaimSourceAddress_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_name = ANY_VALUE;
+}
+}
+}
+
+void CannotClaimSourceAddress_template::copy_value(const CannotClaimSourceAddress& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.name().is_bound()) {
+  single_value->field_name = other_value.name();
+} else {
+  single_value->field_name.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void CannotClaimSourceAddress_template::copy_template(const CannotClaimSourceAddress_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.name().get_selection()) {
+single_value->field_name = other_value.name();
+} else {
+single_value->field_name.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new CannotClaimSourceAddress_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.CannotClaimSourceAddress.");
+break;
+}
+set_selection(other_value);
+}
+
+CannotClaimSourceAddress_template::CannotClaimSourceAddress_template()
+{
+}
+
+CannotClaimSourceAddress_template::CannotClaimSourceAddress_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+CannotClaimSourceAddress_template::CannotClaimSourceAddress_template(const CannotClaimSourceAddress& other_value)
+{
+copy_value(other_value);
+}
+
+CannotClaimSourceAddress_template::CannotClaimSourceAddress_template(const OPTIONAL<CannotClaimSourceAddress>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CannotClaimSourceAddress&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusNMMessageTypes.CannotClaimSourceAddress from an unbound optional field.");
+}
+}
+
+CannotClaimSourceAddress_template::CannotClaimSourceAddress_template(const CannotClaimSourceAddress_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+CannotClaimSourceAddress_template::~CannotClaimSourceAddress_template()
+{
+clean_up();
+}
+
+CannotClaimSourceAddress_template& CannotClaimSourceAddress_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+CannotClaimSourceAddress_template& CannotClaimSourceAddress_template::operator=(const CannotClaimSourceAddress& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+CannotClaimSourceAddress_template& CannotClaimSourceAddress_template::operator=(const OPTIONAL<CannotClaimSourceAddress>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CannotClaimSourceAddress&)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 @IsobusNMMessageTypes.CannotClaimSourceAddress.");
+}
+return *this;
+}
+
+CannotClaimSourceAddress_template& CannotClaimSourceAddress_template::operator=(const CannotClaimSourceAddress_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean CannotClaimSourceAddress_template::match(const CannotClaimSourceAddress& 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.name().is_bound()) return FALSE;
+if(!single_value->field_name.match(other_value.name(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.CannotClaimSourceAddress.");
+}
+return FALSE;
+}
+
+boolean CannotClaimSourceAddress_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_name.is_bound()
+;
+}
+
+boolean CannotClaimSourceAddress_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_name.is_value();
+}
+
+void CannotClaimSourceAddress_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+CannotClaimSourceAddress CannotClaimSourceAddress_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 @IsobusNMMessageTypes.CannotClaimSourceAddress.");
+CannotClaimSourceAddress ret_val;
+if (single_value->field_name.is_bound()) {
+ret_val.name() = single_value->field_name.valueof();
+}
+return ret_val;
+}
+
+void CannotClaimSourceAddress_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.CannotClaimSourceAddress.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new CannotClaimSourceAddress_template[list_length];
+}
+
+CannotClaimSourceAddress_template& CannotClaimSourceAddress_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.CannotClaimSourceAddress.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.CannotClaimSourceAddress.");
+return value_list.list_value[list_index];
+}
+
+NAME_template& CannotClaimSourceAddress_template::name()
+{
+set_specific();
+return single_value->field_name;
+}
+
+const NAME_template& CannotClaimSourceAddress_template::name() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field name of a non-specific template of type @IsobusNMMessageTypes.CannotClaimSourceAddress.");
+return single_value->field_name;
+}
+
+int CannotClaimSourceAddress_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.CannotClaimSourceAddress which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 1;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusNMMessageTypes.CannotClaimSourceAddress 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 @IsobusNMMessageTypes.CannotClaimSourceAddress containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.CannotClaimSourceAddress containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.CannotClaimSourceAddress containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.CannotClaimSourceAddress containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.CannotClaimSourceAddress.");
+  }
+  return 0;
+}
+
+void CannotClaimSourceAddress_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ name := ");
+single_value->field_name.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void CannotClaimSourceAddress_template::log_match(const CannotClaimSourceAddress& 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_name.match(match_value.name(), legacy)){
+TTCN_Logger::log_logmatch_info(".name");
+single_value->field_name.log_match(match_value.name(), 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("{ name := ");
+single_value->field_name.log_match(match_value.name(), 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 CannotClaimSourceAddress_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_name.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 @IsobusNMMessageTypes.CannotClaimSourceAddress.");
+}
+}
+
+void CannotClaimSourceAddress_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_name.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 CannotClaimSourceAddress_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 @IsobusNMMessageTypes.CannotClaimSourceAddress.");
+}
+}
+
+void CannotClaimSourceAddress_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: {
+    CannotClaimSourceAddress_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (1<param.get_size()) {
+      param.error("record template of type @IsobusNMMessageTypes.CannotClaimSourceAddress has 1 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) name().set_param(*param.get_elem(0));
+    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(), "name")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          name().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 @IsobusNMMessageTypes.CannotClaimSourceAddress: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusNMMessageTypes.CannotClaimSourceAddress");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void CannotClaimSourceAddress_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_name.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.CannotClaimSourceAddress");
+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 : "@IsobusNMMessageTypes.CannotClaimSourceAddress");
+}
+
+boolean CannotClaimSourceAddress_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean CannotClaimSourceAddress_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+AddressClaimed::AddressClaimed()
+{
+}
+
+AddressClaimed::AddressClaimed(const NAME& par_name)
+  :   field_name(par_name)
+{
+}
+
+AddressClaimed::AddressClaimed(const AddressClaimed& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.AddressClaimed.");
+if (other_value.name().is_bound()) field_name = other_value.name();
+else field_name.clean_up();
+}
+
+void AddressClaimed::clean_up()
+{
+field_name.clean_up();
+}
+
+const TTCN_Typedescriptor_t* AddressClaimed::get_descriptor() const { return &AddressClaimed_descr_; }
+AddressClaimed& AddressClaimed::operator=(const AddressClaimed& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.AddressClaimed.");
+  if (other_value.name().is_bound()) field_name = other_value.name();
+  else field_name.clean_up();
+}
+return *this;
+}
+
+boolean AddressClaimed::operator==(const AddressClaimed& other_value) const
+{
+return field_name==other_value.field_name;
+}
+
+boolean AddressClaimed::is_bound() const
+{
+return (field_name.is_bound());
+}
+boolean AddressClaimed::is_value() const
+{
+return field_name.is_value();
+}
+void AddressClaimed::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ name := ");
+field_name.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void AddressClaimed::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 (1<param.get_size()) {
+      param.error("record value of type @IsobusNMMessageTypes.AddressClaimed has 1 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) name().set_param(*param.get_elem(0));
+    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(), "name")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          name().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 @IsobusNMMessageTypes.AddressClaimed: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusNMMessageTypes.AddressClaimed");
+  }
+}
+
+void AddressClaimed::set_implicit_omit()
+{
+if (name().is_bound()) name().set_implicit_omit();
+}
+
+void AddressClaimed::encode_text(Text_Buf& text_buf) const
+{
+field_name.encode_text(text_buf);
+}
+
+void AddressClaimed::decode_text(Text_Buf& text_buf)
+{
+field_name.decode_text(text_buf);
+}
+
+void AddressClaimed::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void AddressClaimed::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int AddressClaimed::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, NAME_descr_.raw->forceomit);
+  decoded_field_length = field_name.RAW_decode(NAME_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int AddressClaimed::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 = 1;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(1);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, NAME_descr_.raw);
+  encoded_length += field_name.RAW_encode(NAME_descr_, *myleaf.body.node.nodes[0]);
+  return myleaf.length = encoded_length;
+}
+
+struct AddressClaimed_template::single_value_struct {
+NAME_template field_name;
+};
+
+void AddressClaimed_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_name = ANY_VALUE;
+}
+}
+}
+
+void AddressClaimed_template::copy_value(const AddressClaimed& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.name().is_bound()) {
+  single_value->field_name = other_value.name();
+} else {
+  single_value->field_name.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void AddressClaimed_template::copy_template(const AddressClaimed_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.name().get_selection()) {
+single_value->field_name = other_value.name();
+} else {
+single_value->field_name.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new AddressClaimed_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.AddressClaimed.");
+break;
+}
+set_selection(other_value);
+}
+
+AddressClaimed_template::AddressClaimed_template()
+{
+}
+
+AddressClaimed_template::AddressClaimed_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+AddressClaimed_template::AddressClaimed_template(const AddressClaimed& other_value)
+{
+copy_value(other_value);
+}
+
+AddressClaimed_template::AddressClaimed_template(const OPTIONAL<AddressClaimed>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const AddressClaimed&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusNMMessageTypes.AddressClaimed from an unbound optional field.");
+}
+}
+
+AddressClaimed_template::AddressClaimed_template(const AddressClaimed_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+AddressClaimed_template::~AddressClaimed_template()
+{
+clean_up();
+}
+
+AddressClaimed_template& AddressClaimed_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+AddressClaimed_template& AddressClaimed_template::operator=(const AddressClaimed& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+AddressClaimed_template& AddressClaimed_template::operator=(const OPTIONAL<AddressClaimed>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const AddressClaimed&)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 @IsobusNMMessageTypes.AddressClaimed.");
+}
+return *this;
+}
+
+AddressClaimed_template& AddressClaimed_template::operator=(const AddressClaimed_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean AddressClaimed_template::match(const AddressClaimed& 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.name().is_bound()) return FALSE;
+if(!single_value->field_name.match(other_value.name(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.AddressClaimed.");
+}
+return FALSE;
+}
+
+boolean AddressClaimed_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_name.is_bound()
+;
+}
+
+boolean AddressClaimed_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_name.is_value();
+}
+
+void AddressClaimed_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+AddressClaimed AddressClaimed_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 @IsobusNMMessageTypes.AddressClaimed.");
+AddressClaimed ret_val;
+if (single_value->field_name.is_bound()) {
+ret_val.name() = single_value->field_name.valueof();
+}
+return ret_val;
+}
+
+void AddressClaimed_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.AddressClaimed.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new AddressClaimed_template[list_length];
+}
+
+AddressClaimed_template& AddressClaimed_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.AddressClaimed.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.AddressClaimed.");
+return value_list.list_value[list_index];
+}
+
+NAME_template& AddressClaimed_template::name()
+{
+set_specific();
+return single_value->field_name;
+}
+
+const NAME_template& AddressClaimed_template::name() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field name of a non-specific template of type @IsobusNMMessageTypes.AddressClaimed.");
+return single_value->field_name;
+}
+
+int AddressClaimed_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.AddressClaimed which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 1;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusNMMessageTypes.AddressClaimed 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 @IsobusNMMessageTypes.AddressClaimed containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.AddressClaimed containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.AddressClaimed containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.AddressClaimed containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.AddressClaimed.");
+  }
+  return 0;
+}
+
+void AddressClaimed_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ name := ");
+single_value->field_name.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void AddressClaimed_template::log_match(const AddressClaimed& 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_name.match(match_value.name(), legacy)){
+TTCN_Logger::log_logmatch_info(".name");
+single_value->field_name.log_match(match_value.name(), 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("{ name := ");
+single_value->field_name.log_match(match_value.name(), 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 AddressClaimed_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_name.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 @IsobusNMMessageTypes.AddressClaimed.");
+}
+}
+
+void AddressClaimed_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_name.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 AddressClaimed_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 @IsobusNMMessageTypes.AddressClaimed.");
+}
+}
+
+void AddressClaimed_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: {
+    AddressClaimed_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (1<param.get_size()) {
+      param.error("record template of type @IsobusNMMessageTypes.AddressClaimed has 1 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) name().set_param(*param.get_elem(0));
+    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(), "name")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          name().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 @IsobusNMMessageTypes.AddressClaimed: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusNMMessageTypes.AddressClaimed");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void AddressClaimed_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_name.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.AddressClaimed");
+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 : "@IsobusNMMessageTypes.AddressClaimed");
+}
+
+boolean AddressClaimed_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean AddressClaimed_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+RequestForAddressClaimed::RequestForAddressClaimed()
+{
+}
+
+RequestForAddressClaimed::RequestForAddressClaimed(const INTEGER& par_pgn)
+  :   field_pgn(par_pgn)
+{
+}
+
+RequestForAddressClaimed::RequestForAddressClaimed(const RequestForAddressClaimed& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.RequestForAddressClaimed.");
+if (other_value.pgn().is_bound()) field_pgn = other_value.pgn();
+else field_pgn.clean_up();
+}
+
+void RequestForAddressClaimed::clean_up()
+{
+field_pgn.clean_up();
+}
+
+const TTCN_Typedescriptor_t* RequestForAddressClaimed::get_descriptor() const { return &RequestForAddressClaimed_descr_; }
+RequestForAddressClaimed& RequestForAddressClaimed::operator=(const RequestForAddressClaimed& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.RequestForAddressClaimed.");
+  if (other_value.pgn().is_bound()) field_pgn = other_value.pgn();
+  else field_pgn.clean_up();
+}
+return *this;
+}
+
+boolean RequestForAddressClaimed::operator==(const RequestForAddressClaimed& other_value) const
+{
+return field_pgn==other_value.field_pgn;
+}
+
+boolean RequestForAddressClaimed::is_bound() const
+{
+return (field_pgn.is_bound());
+}
+boolean RequestForAddressClaimed::is_value() const
+{
+return field_pgn.is_value();
+}
+void RequestForAddressClaimed::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ pgn := ");
+field_pgn.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void RequestForAddressClaimed::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 (1<param.get_size()) {
+      param.error("record value of type @IsobusNMMessageTypes.RequestForAddressClaimed has 1 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) pgn().set_param(*param.get_elem(0));
+    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(), "pgn")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          pgn().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 @IsobusNMMessageTypes.RequestForAddressClaimed: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusNMMessageTypes.RequestForAddressClaimed");
+  }
+}
+
+void RequestForAddressClaimed::set_implicit_omit()
+{
+if (pgn().is_bound()) pgn().set_implicit_omit();
+}
+
+void RequestForAddressClaimed::encode_text(Text_Buf& text_buf) const
+{
+field_pgn.encode_text(text_buf);
+}
+
+void RequestForAddressClaimed::decode_text(Text_Buf& text_buf)
+{
+field_pgn.decode_text(text_buf);
+}
+
+void RequestForAddressClaimed::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void RequestForAddressClaimed::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int RequestForAddressClaimed::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, IsobusMessageTypes::PGN_descr_.raw->forceomit);
+  decoded_field_length = field_pgn.RAW_decode(IsobusMessageTypes::PGN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int RequestForAddressClaimed::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 = 1;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(1);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, IsobusMessageTypes::PGN_descr_.raw);
+  encoded_length += field_pgn.RAW_encode(IsobusMessageTypes::PGN_descr_, *myleaf.body.node.nodes[0]);
+  return myleaf.length = encoded_length;
+}
+
+struct RequestForAddressClaimed_template::single_value_struct {
+INTEGER_template field_pgn;
+};
+
+void RequestForAddressClaimed_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_pgn = ANY_VALUE;
+}
+}
+}
+
+void RequestForAddressClaimed_template::copy_value(const RequestForAddressClaimed& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.pgn().is_bound()) {
+  single_value->field_pgn = other_value.pgn();
+} else {
+  single_value->field_pgn.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void RequestForAddressClaimed_template::copy_template(const RequestForAddressClaimed_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.pgn().get_selection()) {
+single_value->field_pgn = other_value.pgn();
+} else {
+single_value->field_pgn.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new RequestForAddressClaimed_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.RequestForAddressClaimed.");
+break;
+}
+set_selection(other_value);
+}
+
+RequestForAddressClaimed_template::RequestForAddressClaimed_template()
+{
+}
+
+RequestForAddressClaimed_template::RequestForAddressClaimed_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+RequestForAddressClaimed_template::RequestForAddressClaimed_template(const RequestForAddressClaimed& other_value)
+{
+copy_value(other_value);
+}
+
+RequestForAddressClaimed_template::RequestForAddressClaimed_template(const OPTIONAL<RequestForAddressClaimed>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const RequestForAddressClaimed&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusNMMessageTypes.RequestForAddressClaimed from an unbound optional field.");
+}
+}
+
+RequestForAddressClaimed_template::RequestForAddressClaimed_template(const RequestForAddressClaimed_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+RequestForAddressClaimed_template::~RequestForAddressClaimed_template()
+{
+clean_up();
+}
+
+RequestForAddressClaimed_template& RequestForAddressClaimed_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+RequestForAddressClaimed_template& RequestForAddressClaimed_template::operator=(const RequestForAddressClaimed& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+RequestForAddressClaimed_template& RequestForAddressClaimed_template::operator=(const OPTIONAL<RequestForAddressClaimed>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const RequestForAddressClaimed&)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 @IsobusNMMessageTypes.RequestForAddressClaimed.");
+}
+return *this;
+}
+
+RequestForAddressClaimed_template& RequestForAddressClaimed_template::operator=(const RequestForAddressClaimed_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean RequestForAddressClaimed_template::match(const RequestForAddressClaimed& 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.pgn().is_bound()) return FALSE;
+if(!single_value->field_pgn.match(other_value.pgn(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.RequestForAddressClaimed.");
+}
+return FALSE;
+}
+
+boolean RequestForAddressClaimed_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_pgn.is_bound()
+;
+}
+
+boolean RequestForAddressClaimed_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_pgn.is_value();
+}
+
+void RequestForAddressClaimed_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+RequestForAddressClaimed RequestForAddressClaimed_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 @IsobusNMMessageTypes.RequestForAddressClaimed.");
+RequestForAddressClaimed ret_val;
+if (single_value->field_pgn.is_bound()) {
+ret_val.pgn() = single_value->field_pgn.valueof();
+}
+return ret_val;
+}
+
+void RequestForAddressClaimed_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.RequestForAddressClaimed.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new RequestForAddressClaimed_template[list_length];
+}
+
+RequestForAddressClaimed_template& RequestForAddressClaimed_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.RequestForAddressClaimed.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.RequestForAddressClaimed.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& RequestForAddressClaimed_template::pgn()
+{
+set_specific();
+return single_value->field_pgn;
+}
+
+const INTEGER_template& RequestForAddressClaimed_template::pgn() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field pgn of a non-specific template of type @IsobusNMMessageTypes.RequestForAddressClaimed.");
+return single_value->field_pgn;
+}
+
+int RequestForAddressClaimed_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.RequestForAddressClaimed which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 1;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusNMMessageTypes.RequestForAddressClaimed 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 @IsobusNMMessageTypes.RequestForAddressClaimed containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.RequestForAddressClaimed containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.RequestForAddressClaimed containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.RequestForAddressClaimed containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.RequestForAddressClaimed.");
+  }
+  return 0;
+}
+
+void RequestForAddressClaimed_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ pgn := ");
+single_value->field_pgn.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void RequestForAddressClaimed_template::log_match(const RequestForAddressClaimed& 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_pgn.match(match_value.pgn(), legacy)){
+TTCN_Logger::log_logmatch_info(".pgn");
+single_value->field_pgn.log_match(match_value.pgn(), 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("{ pgn := ");
+single_value->field_pgn.log_match(match_value.pgn(), 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 RequestForAddressClaimed_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_pgn.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 @IsobusNMMessageTypes.RequestForAddressClaimed.");
+}
+}
+
+void RequestForAddressClaimed_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_pgn.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 RequestForAddressClaimed_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 @IsobusNMMessageTypes.RequestForAddressClaimed.");
+}
+}
+
+void RequestForAddressClaimed_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: {
+    RequestForAddressClaimed_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (1<param.get_size()) {
+      param.error("record template of type @IsobusNMMessageTypes.RequestForAddressClaimed has 1 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) pgn().set_param(*param.get_elem(0));
+    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(), "pgn")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          pgn().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 @IsobusNMMessageTypes.RequestForAddressClaimed: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusNMMessageTypes.RequestForAddressClaimed");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void RequestForAddressClaimed_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_pgn.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.RequestForAddressClaimed");
+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 : "@IsobusNMMessageTypes.RequestForAddressClaimed");
+}
+
+boolean RequestForAddressClaimed_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean RequestForAddressClaimed_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+CommandedAddress::CommandedAddress()
+{
+}
+
+CommandedAddress::CommandedAddress(const NAME& par_name,
+    const OCTETSTRING& par_newSourceAddress)
+  :   field_name(par_name),
+  field_newSourceAddress(par_newSourceAddress)
+{
+}
+
+CommandedAddress::CommandedAddress(const CommandedAddress& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.CommandedAddress.");
+if (other_value.name().is_bound()) field_name = other_value.name();
+else field_name.clean_up();
+if (other_value.newSourceAddress().is_bound()) field_newSourceAddress = other_value.newSourceAddress();
+else field_newSourceAddress.clean_up();
+}
+
+void CommandedAddress::clean_up()
+{
+field_name.clean_up();
+field_newSourceAddress.clean_up();
+}
+
+const TTCN_Typedescriptor_t* CommandedAddress::get_descriptor() const { return &CommandedAddress_descr_; }
+CommandedAddress& CommandedAddress::operator=(const CommandedAddress& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.CommandedAddress.");
+  if (other_value.name().is_bound()) field_name = other_value.name();
+  else field_name.clean_up();
+  if (other_value.newSourceAddress().is_bound()) field_newSourceAddress = other_value.newSourceAddress();
+  else field_newSourceAddress.clean_up();
+}
+return *this;
+}
+
+boolean CommandedAddress::operator==(const CommandedAddress& other_value) const
+{
+return field_name==other_value.field_name
+  && field_newSourceAddress==other_value.field_newSourceAddress;
+}
+
+boolean CommandedAddress::is_bound() const
+{
+return (field_name.is_bound())
+  || (field_newSourceAddress.is_bound());
+}
+boolean CommandedAddress::is_value() const
+{
+return field_name.is_value()
+  && field_newSourceAddress.is_value();
+}
+void CommandedAddress::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ name := ");
+field_name.log();
+TTCN_Logger::log_event_str(", newSourceAddress := ");
+field_newSourceAddress.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void CommandedAddress::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 @IsobusNMMessageTypes.CommandedAddress 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) name().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) newSourceAddress().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(), "name")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          name().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(), "newSourceAddress")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          newSourceAddress().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 @IsobusNMMessageTypes.CommandedAddress: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusNMMessageTypes.CommandedAddress");
+  }
+}
+
+void CommandedAddress::set_implicit_omit()
+{
+if (name().is_bound()) name().set_implicit_omit();
+if (newSourceAddress().is_bound()) newSourceAddress().set_implicit_omit();
+}
+
+void CommandedAddress::encode_text(Text_Buf& text_buf) const
+{
+field_name.encode_text(text_buf);
+field_newSourceAddress.encode_text(text_buf);
+}
+
+void CommandedAddress::decode_text(Text_Buf& text_buf)
+{
+field_name.decode_text(text_buf);
+field_newSourceAddress.decode_text(text_buf);
+}
+
+void CommandedAddress::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void CommandedAddress::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int CommandedAddress::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, NAME_descr_.raw->forceomit);
+  decoded_field_length = field_name.RAW_decode(NAME_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, SourceAddress_descr_.raw->forceomit);
+  decoded_field_length = field_newSourceAddress.RAW_decode(SourceAddress_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 CommandedAddress::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, NAME_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, SourceAddress_descr_.raw);
+  encoded_length += field_name.RAW_encode(NAME_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_newSourceAddress.RAW_encode(SourceAddress_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct CommandedAddress_template::single_value_struct {
+NAME_template field_name;
+OCTETSTRING_template field_newSourceAddress;
+};
+
+void CommandedAddress_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_name = ANY_VALUE;
+single_value->field_newSourceAddress = ANY_VALUE;
+}
+}
+}
+
+void CommandedAddress_template::copy_value(const CommandedAddress& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.name().is_bound()) {
+  single_value->field_name = other_value.name();
+} else {
+  single_value->field_name.clean_up();
+}
+if (other_value.newSourceAddress().is_bound()) {
+  single_value->field_newSourceAddress = other_value.newSourceAddress();
+} else {
+  single_value->field_newSourceAddress.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void CommandedAddress_template::copy_template(const CommandedAddress_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.name().get_selection()) {
+single_value->field_name = other_value.name();
+} else {
+single_value->field_name.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.newSourceAddress().get_selection()) {
+single_value->field_newSourceAddress = other_value.newSourceAddress();
+} else {
+single_value->field_newSourceAddress.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new CommandedAddress_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.CommandedAddress.");
+break;
+}
+set_selection(other_value);
+}
+
+CommandedAddress_template::CommandedAddress_template()
+{
+}
+
+CommandedAddress_template::CommandedAddress_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+CommandedAddress_template::CommandedAddress_template(const CommandedAddress& other_value)
+{
+copy_value(other_value);
+}
+
+CommandedAddress_template::CommandedAddress_template(const OPTIONAL<CommandedAddress>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CommandedAddress&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusNMMessageTypes.CommandedAddress from an unbound optional field.");
+}
+}
+
+CommandedAddress_template::CommandedAddress_template(const CommandedAddress_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+CommandedAddress_template::~CommandedAddress_template()
+{
+clean_up();
+}
+
+CommandedAddress_template& CommandedAddress_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+CommandedAddress_template& CommandedAddress_template::operator=(const CommandedAddress& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+CommandedAddress_template& CommandedAddress_template::operator=(const OPTIONAL<CommandedAddress>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CommandedAddress&)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 @IsobusNMMessageTypes.CommandedAddress.");
+}
+return *this;
+}
+
+CommandedAddress_template& CommandedAddress_template::operator=(const CommandedAddress_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean CommandedAddress_template::match(const CommandedAddress& 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.name().is_bound()) return FALSE;
+if(!single_value->field_name.match(other_value.name(), legacy))return FALSE;
+if(!other_value.newSourceAddress().is_bound()) return FALSE;
+if(!single_value->field_newSourceAddress.match(other_value.newSourceAddress(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.CommandedAddress.");
+}
+return FALSE;
+}
+
+boolean CommandedAddress_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_name.is_bound()
+
+ ||single_value->field_newSourceAddress.is_bound()
+;
+}
+
+boolean CommandedAddress_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_name.is_value()
+ &&single_value->field_newSourceAddress.is_value();
+}
+
+void CommandedAddress_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+CommandedAddress CommandedAddress_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 @IsobusNMMessageTypes.CommandedAddress.");
+CommandedAddress ret_val;
+if (single_value->field_name.is_bound()) {
+ret_val.name() = single_value->field_name.valueof();
+}
+if (single_value->field_newSourceAddress.is_bound()) {
+ret_val.newSourceAddress() = single_value->field_newSourceAddress.valueof();
+}
+return ret_val;
+}
+
+void CommandedAddress_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.CommandedAddress.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new CommandedAddress_template[list_length];
+}
+
+CommandedAddress_template& CommandedAddress_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.CommandedAddress.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.CommandedAddress.");
+return value_list.list_value[list_index];
+}
+
+NAME_template& CommandedAddress_template::name()
+{
+set_specific();
+return single_value->field_name;
+}
+
+const NAME_template& CommandedAddress_template::name() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field name of a non-specific template of type @IsobusNMMessageTypes.CommandedAddress.");
+return single_value->field_name;
+}
+
+OCTETSTRING_template& CommandedAddress_template::newSourceAddress()
+{
+set_specific();
+return single_value->field_newSourceAddress;
+}
+
+const OCTETSTRING_template& CommandedAddress_template::newSourceAddress() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field newSourceAddress of a non-specific template of type @IsobusNMMessageTypes.CommandedAddress.");
+return single_value->field_newSourceAddress;
+}
+
+int CommandedAddress_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.CommandedAddress 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 @IsobusNMMessageTypes.CommandedAddress 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 @IsobusNMMessageTypes.CommandedAddress containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.CommandedAddress containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.CommandedAddress containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.CommandedAddress containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.CommandedAddress.");
+  }
+  return 0;
+}
+
+void CommandedAddress_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ name := ");
+single_value->field_name.log();
+TTCN_Logger::log_event_str(", newSourceAddress := ");
+single_value->field_newSourceAddress.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void CommandedAddress_template::log_match(const CommandedAddress& 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_name.match(match_value.name(), legacy)){
+TTCN_Logger::log_logmatch_info(".name");
+single_value->field_name.log_match(match_value.name(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_newSourceAddress.match(match_value.newSourceAddress(), legacy)){
+TTCN_Logger::log_logmatch_info(".newSourceAddress");
+single_value->field_newSourceAddress.log_match(match_value.newSourceAddress(), 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("{ name := ");
+single_value->field_name.log_match(match_value.name(), legacy);
+TTCN_Logger::log_event_str(", newSourceAddress := ");
+single_value->field_newSourceAddress.log_match(match_value.newSourceAddress(), 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 CommandedAddress_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_name.encode_text(text_buf);
+single_value->field_newSourceAddress.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 @IsobusNMMessageTypes.CommandedAddress.");
+}
+}
+
+void CommandedAddress_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_name.decode_text(text_buf);
+single_value->field_newSourceAddress.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 CommandedAddress_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 @IsobusNMMessageTypes.CommandedAddress.");
+}
+}
+
+void CommandedAddress_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: {
+    CommandedAddress_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusNMMessageTypes.CommandedAddress 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) name().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) newSourceAddress().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(), "name")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          name().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(), "newSourceAddress")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          newSourceAddress().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 @IsobusNMMessageTypes.CommandedAddress: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusNMMessageTypes.CommandedAddress");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void CommandedAddress_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_name.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.CommandedAddress");
+single_value->field_newSourceAddress.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.CommandedAddress");
+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 : "@IsobusNMMessageTypes.CommandedAddress");
+}
+
+boolean CommandedAddress_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean CommandedAddress_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+e__PortNumber::e__PortNumber()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+e__PortNumber::e__PortNumber(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @IsobusNMMessageTypes.e_PortNumber with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+e__PortNumber::e__PortNumber(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+e__PortNumber::e__PortNumber(const e__PortNumber& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @IsobusNMMessageTypes.e_PortNumber.");
+enum_value = other_value.enum_value;
+}
+
+e__PortNumber& e__PortNumber::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @IsobusNMMessageTypes.e_PortNumber.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+e__PortNumber& e__PortNumber::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+e__PortNumber& e__PortNumber::operator=(const e__PortNumber& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusNMMessageTypes.e_PortNumber.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean e__PortNumber::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_PortNumber.");
+return enum_value == other_value;
+}
+
+boolean e__PortNumber::operator==(const e__PortNumber& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_PortNumber.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_PortNumber.");
+return enum_value == other_value.enum_value;
+}
+
+boolean e__PortNumber::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_PortNumber.");
+return enum_value < other_value;
+}
+
+boolean e__PortNumber::operator<(const e__PortNumber& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_PortNumber.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_PortNumber.");
+return enum_value < other_value.enum_value;
+}
+
+boolean e__PortNumber::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_PortNumber.");
+return enum_value > other_value;
+}
+
+boolean e__PortNumber::operator>(const e__PortNumber& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_PortNumber.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_PortNumber.");
+return enum_value > other_value.enum_value;
+}
+
+const char *e__PortNumber::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case port__local: return "port_local";
+case port__1: return "port_1";
+case port__2: return "port_2";
+case port__3: return "port_3";
+case port__4: return "port_4";
+case port__5: return "port_5";
+case port__6: return "port_6";
+case port__7: return "port_7";
+case port__8: return "port_8";
+case port__9: return "port_9";
+case port__10: return "port_10";
+case port__11: return "port_11";
+case port__12: return "port_12";
+case port__13: return "port_13";
+case port__14: return "port_14";
+case port__global: return "port_global";
+default: return "<unknown>";
+}
+}
+
+e__PortNumber::enum_type e__PortNumber::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "port_local")) return port__local;
+else if (!strcmp(str_par, "port_1")) return port__1;
+else if (!strcmp(str_par, "port_2")) return port__2;
+else if (!strcmp(str_par, "port_3")) return port__3;
+else if (!strcmp(str_par, "port_4")) return port__4;
+else if (!strcmp(str_par, "port_5")) return port__5;
+else if (!strcmp(str_par, "port_6")) return port__6;
+else if (!strcmp(str_par, "port_7")) return port__7;
+else if (!strcmp(str_par, "port_8")) return port__8;
+else if (!strcmp(str_par, "port_9")) return port__9;
+else if (!strcmp(str_par, "port_10")) return port__10;
+else if (!strcmp(str_par, "port_11")) return port__11;
+else if (!strcmp(str_par, "port_12")) return port__12;
+else if (!strcmp(str_par, "port_13")) return port__13;
+else if (!strcmp(str_par, "port_14")) return port__14;
+else if (!strcmp(str_par, "port_global")) return port__global;
+else return UNKNOWN_VALUE;
+}
+
+boolean e__PortNumber::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 0:
+case 1:
+case 2:
+case 3:
+case 4:
+case 5:
+case 6:
+case 7:
+case 8:
+case 9:
+case 10:
+case 11:
+case 12:
+case 13:
+case 14:
+case 15:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int e__PortNumber::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusNMMessageTypes.e_PortNumber.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int e__PortNumber::enum2int(const e__PortNumber& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusNMMessageTypes.e_PortNumber.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void e__PortNumber::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @IsobusNMMessageTypes.e_PortNumber.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+e__PortNumber::operator e__PortNumber::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @IsobusNMMessageTypes.e_PortNumber.");
+return enum_value;
+}
+
+void e__PortNumber::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void e__PortNumber::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@IsobusNMMessageTypes.e_PortNumber");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @IsobusNMMessageTypes.e_PortNumber.");
+  }
+}
+
+void e__PortNumber::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @IsobusNMMessageTypes.e_PortNumber.");
+text_buf.push_int(enum_value);
+}
+
+void e__PortNumber::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @IsobusNMMessageTypes.e_PortNumber.", enum_value);
+}
+
+void e__PortNumber::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void e__PortNumber::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int e__PortNumber::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*)
+{
+  int decoded_value = 0;
+  int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 5, no_err);
+  if (decoded_length < 0) return decoded_length;
+  if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value;
+  else {
+    if(no_err){
+     return -1;
+    } else {
+    TTCN_EncDec_ErrorContext::error
+      (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name);
+    enum_value = UNKNOWN_VALUE;
+    }
+  }
+  return decoded_length;
+}
+
+int e__PortNumber::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const
+{
+  return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 5);
+}
+
+void e__PortNumber_template::copy_template(const e__PortNumber_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new e__PortNumber_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @IsobusNMMessageTypes.e_PortNumber.");
+}
+}
+
+e__PortNumber_template::e__PortNumber_template()
+{
+}
+
+e__PortNumber_template::e__PortNumber_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+e__PortNumber_template::e__PortNumber_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!e__PortNumber::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @IsobusNMMessageTypes.e_PortNumber with unknown numeric value %d.", other_value);
+single_value = (e__PortNumber::enum_type)other_value;
+}
+
+e__PortNumber_template::e__PortNumber_template(e__PortNumber::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+e__PortNumber_template::e__PortNumber_template(const e__PortNumber& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == e__PortNumber::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @IsobusNMMessageTypes.e_PortNumber.");
+single_value = other_value.enum_value;
+}
+
+e__PortNumber_template::e__PortNumber_template(const OPTIONAL<e__PortNumber>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__PortNumber::enum_type)(const e__PortNumber&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @IsobusNMMessageTypes.e_PortNumber from an unbound optional field.");
+}
+}
+
+e__PortNumber_template::e__PortNumber_template(const e__PortNumber_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+e__PortNumber_template::~e__PortNumber_template()
+{
+clean_up();
+}
+
+boolean e__PortNumber_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean e__PortNumber_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != e__PortNumber::UNBOUND_VALUE;
+}
+
+void e__PortNumber_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+e__PortNumber_template& e__PortNumber_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+e__PortNumber_template& e__PortNumber_template::operator=(int other_value)
+{
+if (!e__PortNumber::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @IsobusNMMessageTypes.e_PortNumber.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (e__PortNumber::enum_type)other_value;
+return *this;
+}
+
+e__PortNumber_template& e__PortNumber_template::operator=(e__PortNumber::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+e__PortNumber_template& e__PortNumber_template::operator=(const e__PortNumber& other_value)
+{
+if (other_value.enum_value == e__PortNumber::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusNMMessageTypes.e_PortNumber to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+e__PortNumber_template& e__PortNumber_template::operator=(const OPTIONAL<e__PortNumber>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__PortNumber::enum_type)(const e__PortNumber&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @IsobusNMMessageTypes.e_PortNumber.");
+}
+return *this;
+}
+
+e__PortNumber_template& e__PortNumber_template::operator=(const e__PortNumber_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean e__PortNumber_template::match(e__PortNumber::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @IsobusNMMessageTypes.e_PortNumber.");
+}
+return FALSE;
+}
+
+boolean e__PortNumber_template::match(const e__PortNumber& other_value, boolean) const
+{
+if (other_value.enum_value == e__PortNumber::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @IsobusNMMessageTypes.e_PortNumber with an unbound value.");
+return match(other_value.enum_value);
+}
+
+e__PortNumber::enum_type e__PortNumber_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @IsobusNMMessageTypes.e_PortNumber.");
+return single_value;
+}
+
+void e__PortNumber_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @IsobusNMMessageTypes.e_PortNumber.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new e__PortNumber_template[list_length];
+}
+
+e__PortNumber_template& e__PortNumber_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @IsobusNMMessageTypes.e_PortNumber.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @IsobusNMMessageTypes.e_PortNumber.");
+return value_list.list_value[list_index];
+}
+
+void e__PortNumber_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(e__PortNumber::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void e__PortNumber_template::log_match(const e__PortNumber& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void e__PortNumber_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @IsobusNMMessageTypes.e_PortNumber.");
+}
+}
+
+void e__PortNumber_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (e__PortNumber::enum_type)text_buf.pull_int().get_val();
+if (!e__PortNumber::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @IsobusNMMessageTypes.e_PortNumber.", single_value);
+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 e__PortNumber_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @IsobusNMMessageTypes.e_PortNumber.");
+}
+}
+
+boolean e__PortNumber_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean e__PortNumber_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 e__PortNumber_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    e__PortNumber_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    e__PortNumber::enum_type enum_val = e__PortNumber::str_to_enum(m_p->get_enumerated());
+    if (!e__PortNumber::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @IsobusNMMessageTypes.e_PortNumber.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@IsobusNMMessageTypes.e_PortNumber");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void e__PortNumber_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@IsobusNMMessageTypes.e_PortNumber");
+}
+
+PortPair::PortPair()
+{
+}
+
+PortPair::PortPair(const e__PortNumber& par_fromPort,
+    const e__PortNumber& par_toPort)
+  :   field_fromPort(par_fromPort),
+  field_toPort(par_toPort)
+{
+}
+
+PortPair::PortPair(const PortPair& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.PortPair.");
+if (other_value.fromPort().is_bound()) field_fromPort = other_value.fromPort();
+else field_fromPort.clean_up();
+if (other_value.toPort().is_bound()) field_toPort = other_value.toPort();
+else field_toPort.clean_up();
+}
+
+void PortPair::clean_up()
+{
+field_fromPort.clean_up();
+field_toPort.clean_up();
+}
+
+const TTCN_Typedescriptor_t* PortPair::get_descriptor() const { return &PortPair_descr_; }
+PortPair& PortPair::operator=(const PortPair& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.PortPair.");
+  if (other_value.fromPort().is_bound()) field_fromPort = other_value.fromPort();
+  else field_fromPort.clean_up();
+  if (other_value.toPort().is_bound()) field_toPort = other_value.toPort();
+  else field_toPort.clean_up();
+}
+return *this;
+}
+
+boolean PortPair::operator==(const PortPair& other_value) const
+{
+return field_fromPort==other_value.field_fromPort
+  && field_toPort==other_value.field_toPort;
+}
+
+boolean PortPair::is_bound() const
+{
+return (field_fromPort.is_bound())
+  || (field_toPort.is_bound());
+}
+boolean PortPair::is_value() const
+{
+return field_fromPort.is_value()
+  && field_toPort.is_value();
+}
+void PortPair::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ fromPort := ");
+field_fromPort.log();
+TTCN_Logger::log_event_str(", toPort := ");
+field_toPort.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void PortPair::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 @IsobusNMMessageTypes.PortPair 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) fromPort().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) toPort().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(), "fromPort")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          fromPort().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(), "toPort")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          toPort().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 @IsobusNMMessageTypes.PortPair: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusNMMessageTypes.PortPair");
+  }
+}
+
+void PortPair::set_implicit_omit()
+{
+if (fromPort().is_bound()) fromPort().set_implicit_omit();
+if (toPort().is_bound()) toPort().set_implicit_omit();
+}
+
+void PortPair::encode_text(Text_Buf& text_buf) const
+{
+field_fromPort.encode_text(text_buf);
+field_toPort.encode_text(text_buf);
+}
+
+void PortPair::decode_text(Text_Buf& text_buf)
+{
+field_fromPort.decode_text(text_buf);
+field_toPort.decode_text(text_buf);
+}
+
+void PortPair::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void PortPair::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int PortPair::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, e__PortNumber_descr_.raw->forceomit);
+  decoded_field_length = field_fromPort.RAW_decode(e__PortNumber_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, e__PortNumber_descr_.raw->forceomit);
+  decoded_field_length = field_toPort.RAW_decode(e__PortNumber_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 PortPair::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, e__PortNumber_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, e__PortNumber_descr_.raw);
+  encoded_length += field_fromPort.RAW_encode(e__PortNumber_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_toPort.RAW_encode(e__PortNumber_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct PortPair_template::single_value_struct {
+e__PortNumber_template field_fromPort;
+e__PortNumber_template field_toPort;
+};
+
+void PortPair_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_fromPort = ANY_VALUE;
+single_value->field_toPort = ANY_VALUE;
+}
+}
+}
+
+void PortPair_template::copy_value(const PortPair& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.fromPort().is_bound()) {
+  single_value->field_fromPort = other_value.fromPort();
+} else {
+  single_value->field_fromPort.clean_up();
+}
+if (other_value.toPort().is_bound()) {
+  single_value->field_toPort = other_value.toPort();
+} else {
+  single_value->field_toPort.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void PortPair_template::copy_template(const PortPair_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.fromPort().get_selection()) {
+single_value->field_fromPort = other_value.fromPort();
+} else {
+single_value->field_fromPort.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.toPort().get_selection()) {
+single_value->field_toPort = other_value.toPort();
+} else {
+single_value->field_toPort.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new PortPair_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.PortPair.");
+break;
+}
+set_selection(other_value);
+}
+
+PortPair_template::PortPair_template()
+{
+}
+
+PortPair_template::PortPair_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+PortPair_template::PortPair_template(const PortPair& other_value)
+{
+copy_value(other_value);
+}
+
+PortPair_template::PortPair_template(const OPTIONAL<PortPair>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const PortPair&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusNMMessageTypes.PortPair from an unbound optional field.");
+}
+}
+
+PortPair_template::PortPair_template(const PortPair_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+PortPair_template::~PortPair_template()
+{
+clean_up();
+}
+
+PortPair_template& PortPair_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+PortPair_template& PortPair_template::operator=(const PortPair& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+PortPair_template& PortPair_template::operator=(const OPTIONAL<PortPair>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const PortPair&)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 @IsobusNMMessageTypes.PortPair.");
+}
+return *this;
+}
+
+PortPair_template& PortPair_template::operator=(const PortPair_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean PortPair_template::match(const PortPair& 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.fromPort().is_bound()) return FALSE;
+if(!single_value->field_fromPort.match(other_value.fromPort(), legacy))return FALSE;
+if(!other_value.toPort().is_bound()) return FALSE;
+if(!single_value->field_toPort.match(other_value.toPort(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.PortPair.");
+}
+return FALSE;
+}
+
+boolean PortPair_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_fromPort.is_bound()
+
+ ||single_value->field_toPort.is_bound()
+;
+}
+
+boolean PortPair_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_fromPort.is_value()
+ &&single_value->field_toPort.is_value();
+}
+
+void PortPair_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+PortPair PortPair_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 @IsobusNMMessageTypes.PortPair.");
+PortPair ret_val;
+if (single_value->field_fromPort.is_bound()) {
+ret_val.fromPort() = single_value->field_fromPort.valueof();
+}
+if (single_value->field_toPort.is_bound()) {
+ret_val.toPort() = single_value->field_toPort.valueof();
+}
+return ret_val;
+}
+
+void PortPair_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.PortPair.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new PortPair_template[list_length];
+}
+
+PortPair_template& PortPair_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.PortPair.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.PortPair.");
+return value_list.list_value[list_index];
+}
+
+e__PortNumber_template& PortPair_template::fromPort()
+{
+set_specific();
+return single_value->field_fromPort;
+}
+
+const e__PortNumber_template& PortPair_template::fromPort() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field fromPort of a non-specific template of type @IsobusNMMessageTypes.PortPair.");
+return single_value->field_fromPort;
+}
+
+e__PortNumber_template& PortPair_template::toPort()
+{
+set_specific();
+return single_value->field_toPort;
+}
+
+const e__PortNumber_template& PortPair_template::toPort() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field toPort of a non-specific template of type @IsobusNMMessageTypes.PortPair.");
+return single_value->field_toPort;
+}
+
+int PortPair_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.PortPair 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 @IsobusNMMessageTypes.PortPair 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 @IsobusNMMessageTypes.PortPair containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.PortPair containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.PortPair containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.PortPair containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.PortPair.");
+  }
+  return 0;
+}
+
+void PortPair_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ fromPort := ");
+single_value->field_fromPort.log();
+TTCN_Logger::log_event_str(", toPort := ");
+single_value->field_toPort.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void PortPair_template::log_match(const PortPair& 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_fromPort.match(match_value.fromPort(), legacy)){
+TTCN_Logger::log_logmatch_info(".fromPort");
+single_value->field_fromPort.log_match(match_value.fromPort(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_toPort.match(match_value.toPort(), legacy)){
+TTCN_Logger::log_logmatch_info(".toPort");
+single_value->field_toPort.log_match(match_value.toPort(), 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("{ fromPort := ");
+single_value->field_fromPort.log_match(match_value.fromPort(), legacy);
+TTCN_Logger::log_event_str(", toPort := ");
+single_value->field_toPort.log_match(match_value.toPort(), 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 PortPair_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_fromPort.encode_text(text_buf);
+single_value->field_toPort.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 @IsobusNMMessageTypes.PortPair.");
+}
+}
+
+void PortPair_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_fromPort.decode_text(text_buf);
+single_value->field_toPort.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 PortPair_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 @IsobusNMMessageTypes.PortPair.");
+}
+}
+
+void PortPair_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: {
+    PortPair_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusNMMessageTypes.PortPair 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) fromPort().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) toPort().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(), "fromPort")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          fromPort().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(), "toPort")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          toPort().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 @IsobusNMMessageTypes.PortPair: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusNMMessageTypes.PortPair");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void PortPair_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_fromPort.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.PortPair");
+single_value->field_toPort.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.PortPair");
+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 : "@IsobusNMMessageTypes.PortPair");
+}
+
+boolean PortPair_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean PortPair_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+N__MFDB__Request::N__MFDB__Request()
+{
+}
+
+N__MFDB__Request::N__MFDB__Request(const INTEGER& par_msgFunction,
+    const PortPair& par_portPair,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_msgFunction(par_msgFunction),
+  field_portPair(par_portPair),
+  field_reserved3(par_reserved3),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+N__MFDB__Request::N__MFDB__Request(const N__MFDB__Request& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_MFDB_Request.");
+if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction();
+else field_msgFunction.clean_up();
+if (other_value.portPair().is_bound()) field_portPair = other_value.portPair();
+else field_portPair.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void N__MFDB__Request::clean_up()
+{
+field_msgFunction.clean_up();
+field_portPair.clean_up();
+field_reserved3.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* N__MFDB__Request::get_descriptor() const { return &N__MFDB__Request_descr_; }
+N__MFDB__Request& N__MFDB__Request::operator=(const N__MFDB__Request& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.N_MFDB_Request.");
+  if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction();
+  else field_msgFunction.clean_up();
+  if (other_value.portPair().is_bound()) field_portPair = other_value.portPair();
+  else field_portPair.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean N__MFDB__Request::operator==(const N__MFDB__Request& other_value) const
+{
+return field_msgFunction==other_value.field_msgFunction
+  && field_portPair==other_value.field_portPair
+  && field_reserved3==other_value.field_reserved3
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean N__MFDB__Request::is_bound() const
+{
+return (field_msgFunction.is_bound())
+  || (field_portPair.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean N__MFDB__Request::is_value() const
+{
+return field_msgFunction.is_value()
+  && field_portPair.is_value()
+  && field_reserved3.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void N__MFDB__Request::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ msgFunction := ");
+field_msgFunction.log();
+TTCN_Logger::log_event_str(", portPair := ");
+field_portPair.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void N__MFDB__Request::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusNMMessageTypes.N_MFDB_Request has 8 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) msgFunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "msgFunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgFunction().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(), "portPair")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          portPair().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusNMMessageTypes.N_MFDB_Request: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusNMMessageTypes.N_MFDB_Request");
+  }
+}
+
+void N__MFDB__Request::set_implicit_omit()
+{
+if (msgFunction().is_bound()) msgFunction().set_implicit_omit();
+if (portPair().is_bound()) portPair().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void N__MFDB__Request::encode_text(Text_Buf& text_buf) const
+{
+field_msgFunction.encode_text(text_buf);
+field_portPair.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void N__MFDB__Request::decode_text(Text_Buf& text_buf)
+{
+field_msgFunction.decode_text(text_buf);
+field_portPair.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void N__MFDB__Request::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void N__MFDB__Request::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int N__MFDB__Request::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, Function_descr_.raw->forceomit);
+  decoded_field_length = field_msgFunction.RAW_decode(Function_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, PortPair_descr_.raw->forceomit);
+  decoded_field_length = field_portPair.RAW_decode(PortPair_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, N__MFDB__Request_reserved3_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(N__MFDB__Request_reserved3_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, N__MFDB__Request_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(N__MFDB__Request_reserved4_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, N__MFDB__Request_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(N__MFDB__Request_reserved5_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, N__MFDB__Request_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(N__MFDB__Request_reserved6_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, N__MFDB__Request_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(N__MFDB__Request_reserved7_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, N__MFDB__Request_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(N__MFDB__Request_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int N__MFDB__Request::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, Function_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PortPair_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, N__MFDB__Request_reserved3_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, N__MFDB__Request_reserved4_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, N__MFDB__Request_reserved5_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, N__MFDB__Request_reserved6_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, N__MFDB__Request_reserved7_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, N__MFDB__Request_reserved8_descr_.raw);
+  encoded_length += field_msgFunction.RAW_encode(Function_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_portPair.RAW_encode(PortPair_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved3.RAW_encode(N__MFDB__Request_reserved3_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved4.RAW_encode(N__MFDB__Request_reserved4_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved5.RAW_encode(N__MFDB__Request_reserved5_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved6.RAW_encode(N__MFDB__Request_reserved6_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved7.RAW_encode(N__MFDB__Request_reserved7_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved8.RAW_encode(N__MFDB__Request_reserved8_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct N__MFDB__Request_template::single_value_struct {
+INTEGER_template field_msgFunction;
+PortPair_template field_portPair;
+OCTETSTRING_template field_reserved3;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void N__MFDB__Request_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_msgFunction = ANY_VALUE;
+single_value->field_portPair = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void N__MFDB__Request_template::copy_value(const N__MFDB__Request& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.msgFunction().is_bound()) {
+  single_value->field_msgFunction = other_value.msgFunction();
+} else {
+  single_value->field_msgFunction.clean_up();
+}
+if (other_value.portPair().is_bound()) {
+  single_value->field_portPair = other_value.portPair();
+} else {
+  single_value->field_portPair.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void N__MFDB__Request_template::copy_template(const N__MFDB__Request_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.msgFunction().get_selection()) {
+single_value->field_msgFunction = other_value.msgFunction();
+} else {
+single_value->field_msgFunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.portPair().get_selection()) {
+single_value->field_portPair = other_value.portPair();
+} else {
+single_value->field_portPair.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new N__MFDB__Request_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDB_Request.");
+break;
+}
+set_selection(other_value);
+}
+
+N__MFDB__Request_template::N__MFDB__Request_template()
+{
+}
+
+N__MFDB__Request_template::N__MFDB__Request_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+N__MFDB__Request_template::N__MFDB__Request_template(const N__MFDB__Request& other_value)
+{
+copy_value(other_value);
+}
+
+N__MFDB__Request_template::N__MFDB__Request_template(const OPTIONAL<N__MFDB__Request>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__MFDB__Request&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_MFDB_Request from an unbound optional field.");
+}
+}
+
+N__MFDB__Request_template::N__MFDB__Request_template(const N__MFDB__Request_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+N__MFDB__Request_template::~N__MFDB__Request_template()
+{
+clean_up();
+}
+
+N__MFDB__Request_template& N__MFDB__Request_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+N__MFDB__Request_template& N__MFDB__Request_template::operator=(const N__MFDB__Request& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+N__MFDB__Request_template& N__MFDB__Request_template::operator=(const OPTIONAL<N__MFDB__Request>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__MFDB__Request&)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 @IsobusNMMessageTypes.N_MFDB_Request.");
+}
+return *this;
+}
+
+N__MFDB__Request_template& N__MFDB__Request_template::operator=(const N__MFDB__Request_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean N__MFDB__Request_template::match(const N__MFDB__Request& 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.msgFunction().is_bound()) return FALSE;
+if(!single_value->field_msgFunction.match(other_value.msgFunction(), legacy))return FALSE;
+if(!other_value.portPair().is_bound()) return FALSE;
+if(!single_value->field_portPair.match(other_value.portPair(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDB_Request.");
+}
+return FALSE;
+}
+
+boolean N__MFDB__Request_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_msgFunction.is_bound()
+
+ ||single_value->field_portPair.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean N__MFDB__Request_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_msgFunction.is_value()
+ &&single_value->field_portPair.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void N__MFDB__Request_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+N__MFDB__Request N__MFDB__Request_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 @IsobusNMMessageTypes.N_MFDB_Request.");
+N__MFDB__Request ret_val;
+if (single_value->field_msgFunction.is_bound()) {
+ret_val.msgFunction() = single_value->field_msgFunction.valueof();
+}
+if (single_value->field_portPair.is_bound()) {
+ret_val.portPair() = single_value->field_portPair.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void N__MFDB__Request_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.N_MFDB_Request.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new N__MFDB__Request_template[list_length];
+}
+
+N__MFDB__Request_template& N__MFDB__Request_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_MFDB_Request.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.N_MFDB_Request.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& N__MFDB__Request_template::msgFunction()
+{
+set_specific();
+return single_value->field_msgFunction;
+}
+
+const INTEGER_template& N__MFDB__Request_template::msgFunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field msgFunction of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Request.");
+return single_value->field_msgFunction;
+}
+
+PortPair_template& N__MFDB__Request_template::portPair()
+{
+set_specific();
+return single_value->field_portPair;
+}
+
+const PortPair_template& N__MFDB__Request_template::portPair() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field portPair of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Request.");
+return single_value->field_portPair;
+}
+
+OCTETSTRING_template& N__MFDB__Request_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const OCTETSTRING_template& N__MFDB__Request_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Request.");
+return single_value->field_reserved3;
+}
+
+OCTETSTRING_template& N__MFDB__Request_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& N__MFDB__Request_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Request.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& N__MFDB__Request_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& N__MFDB__Request_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Request.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& N__MFDB__Request_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& N__MFDB__Request_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Request.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& N__MFDB__Request_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& N__MFDB__Request_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Request.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& N__MFDB__Request_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& N__MFDB__Request_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Request.");
+return single_value->field_reserved8;
+}
+
+int N__MFDB__Request_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Request which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Request 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 @IsobusNMMessageTypes.N_MFDB_Request containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Request containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Request containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Request containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDB_Request.");
+  }
+  return 0;
+}
+
+void N__MFDB__Request_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ msgFunction := ");
+single_value->field_msgFunction.log();
+TTCN_Logger::log_event_str(", portPair := ");
+single_value->field_portPair.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void N__MFDB__Request_template::log_match(const N__MFDB__Request& 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_msgFunction.match(match_value.msgFunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".msgFunction");
+single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_portPair.match(match_value.portPair(), legacy)){
+TTCN_Logger::log_logmatch_info(".portPair");
+single_value->field_portPair.log_match(match_value.portPair(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ msgFunction := ");
+single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy);
+TTCN_Logger::log_event_str(", portPair := ");
+single_value->field_portPair.log_match(match_value.portPair(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 N__MFDB__Request_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_msgFunction.encode_text(text_buf);
+single_value->field_portPair.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusNMMessageTypes.N_MFDB_Request.");
+}
+}
+
+void N__MFDB__Request_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_msgFunction.decode_text(text_buf);
+single_value->field_portPair.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 N__MFDB__Request_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 @IsobusNMMessageTypes.N_MFDB_Request.");
+}
+}
+
+void N__MFDB__Request_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: {
+    N__MFDB__Request_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusNMMessageTypes.N_MFDB_Request has 8 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) msgFunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "msgFunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgFunction().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(), "portPair")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          portPair().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusNMMessageTypes.N_MFDB_Request: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusNMMessageTypes.N_MFDB_Request");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void N__MFDB__Request_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_msgFunction.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Request");
+single_value->field_portPair.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Request");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Request");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Request");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Request");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Request");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Request");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Request");
+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 : "@IsobusNMMessageTypes.N_MFDB_Request");
+}
+
+boolean N__MFDB__Request_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean N__MFDB__Request_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+e__FilterMode::e__FilterMode()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+e__FilterMode::e__FilterMode(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @IsobusNMMessageTypes.e_FilterMode with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+e__FilterMode::e__FilterMode(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+e__FilterMode::e__FilterMode(const e__FilterMode& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @IsobusNMMessageTypes.e_FilterMode.");
+enum_value = other_value.enum_value;
+}
+
+e__FilterMode& e__FilterMode::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @IsobusNMMessageTypes.e_FilterMode.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+e__FilterMode& e__FilterMode::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+e__FilterMode& e__FilterMode::operator=(const e__FilterMode& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusNMMessageTypes.e_FilterMode.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean e__FilterMode::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_FilterMode.");
+return enum_value == other_value;
+}
+
+boolean e__FilterMode::operator==(const e__FilterMode& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_FilterMode.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_FilterMode.");
+return enum_value == other_value.enum_value;
+}
+
+boolean e__FilterMode::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_FilterMode.");
+return enum_value < other_value;
+}
+
+boolean e__FilterMode::operator<(const e__FilterMode& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_FilterMode.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_FilterMode.");
+return enum_value < other_value.enum_value;
+}
+
+boolean e__FilterMode::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_FilterMode.");
+return enum_value > other_value;
+}
+
+boolean e__FilterMode::operator>(const e__FilterMode& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_FilterMode.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_FilterMode.");
+return enum_value > other_value.enum_value;
+}
+
+const char *e__FilterMode::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case blockSpecificPGNs: return "blockSpecificPGNs";
+case passSecificPGNs: return "passSecificPGNs";
+default: return "<unknown>";
+}
+}
+
+e__FilterMode::enum_type e__FilterMode::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "blockSpecificPGNs")) return blockSpecificPGNs;
+else if (!strcmp(str_par, "passSecificPGNs")) return passSecificPGNs;
+else return UNKNOWN_VALUE;
+}
+
+boolean e__FilterMode::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 0:
+case 1:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int e__FilterMode::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusNMMessageTypes.e_FilterMode.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int e__FilterMode::enum2int(const e__FilterMode& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusNMMessageTypes.e_FilterMode.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void e__FilterMode::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @IsobusNMMessageTypes.e_FilterMode.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+e__FilterMode::operator e__FilterMode::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @IsobusNMMessageTypes.e_FilterMode.");
+return enum_value;
+}
+
+void e__FilterMode::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void e__FilterMode::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@IsobusNMMessageTypes.e_FilterMode");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @IsobusNMMessageTypes.e_FilterMode.");
+  }
+}
+
+void e__FilterMode::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @IsobusNMMessageTypes.e_FilterMode.");
+text_buf.push_int(enum_value);
+}
+
+void e__FilterMode::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @IsobusNMMessageTypes.e_FilterMode.", enum_value);
+}
+
+void e__FilterMode::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void e__FilterMode::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int e__FilterMode::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*)
+{
+  int decoded_value = 0;
+  int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 2, no_err);
+  if (decoded_length < 0) return decoded_length;
+  if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value;
+  else {
+    if(no_err){
+     return -1;
+    } else {
+    TTCN_EncDec_ErrorContext::error
+      (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name);
+    enum_value = UNKNOWN_VALUE;
+    }
+  }
+  return decoded_length;
+}
+
+int e__FilterMode::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const
+{
+  return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 2);
+}
+
+void e__FilterMode_template::copy_template(const e__FilterMode_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new e__FilterMode_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @IsobusNMMessageTypes.e_FilterMode.");
+}
+}
+
+e__FilterMode_template::e__FilterMode_template()
+{
+}
+
+e__FilterMode_template::e__FilterMode_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+e__FilterMode_template::e__FilterMode_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!e__FilterMode::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @IsobusNMMessageTypes.e_FilterMode with unknown numeric value %d.", other_value);
+single_value = (e__FilterMode::enum_type)other_value;
+}
+
+e__FilterMode_template::e__FilterMode_template(e__FilterMode::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+e__FilterMode_template::e__FilterMode_template(const e__FilterMode& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == e__FilterMode::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @IsobusNMMessageTypes.e_FilterMode.");
+single_value = other_value.enum_value;
+}
+
+e__FilterMode_template::e__FilterMode_template(const OPTIONAL<e__FilterMode>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__FilterMode::enum_type)(const e__FilterMode&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @IsobusNMMessageTypes.e_FilterMode from an unbound optional field.");
+}
+}
+
+e__FilterMode_template::e__FilterMode_template(const e__FilterMode_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+e__FilterMode_template::~e__FilterMode_template()
+{
+clean_up();
+}
+
+boolean e__FilterMode_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean e__FilterMode_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != e__FilterMode::UNBOUND_VALUE;
+}
+
+void e__FilterMode_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+e__FilterMode_template& e__FilterMode_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+e__FilterMode_template& e__FilterMode_template::operator=(int other_value)
+{
+if (!e__FilterMode::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @IsobusNMMessageTypes.e_FilterMode.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (e__FilterMode::enum_type)other_value;
+return *this;
+}
+
+e__FilterMode_template& e__FilterMode_template::operator=(e__FilterMode::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+e__FilterMode_template& e__FilterMode_template::operator=(const e__FilterMode& other_value)
+{
+if (other_value.enum_value == e__FilterMode::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusNMMessageTypes.e_FilterMode to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+e__FilterMode_template& e__FilterMode_template::operator=(const OPTIONAL<e__FilterMode>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__FilterMode::enum_type)(const e__FilterMode&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @IsobusNMMessageTypes.e_FilterMode.");
+}
+return *this;
+}
+
+e__FilterMode_template& e__FilterMode_template::operator=(const e__FilterMode_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean e__FilterMode_template::match(e__FilterMode::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @IsobusNMMessageTypes.e_FilterMode.");
+}
+return FALSE;
+}
+
+boolean e__FilterMode_template::match(const e__FilterMode& other_value, boolean) const
+{
+if (other_value.enum_value == e__FilterMode::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @IsobusNMMessageTypes.e_FilterMode with an unbound value.");
+return match(other_value.enum_value);
+}
+
+e__FilterMode::enum_type e__FilterMode_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @IsobusNMMessageTypes.e_FilterMode.");
+return single_value;
+}
+
+void e__FilterMode_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @IsobusNMMessageTypes.e_FilterMode.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new e__FilterMode_template[list_length];
+}
+
+e__FilterMode_template& e__FilterMode_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @IsobusNMMessageTypes.e_FilterMode.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @IsobusNMMessageTypes.e_FilterMode.");
+return value_list.list_value[list_index];
+}
+
+void e__FilterMode_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(e__FilterMode::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void e__FilterMode_template::log_match(const e__FilterMode& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void e__FilterMode_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @IsobusNMMessageTypes.e_FilterMode.");
+}
+}
+
+void e__FilterMode_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (e__FilterMode::enum_type)text_buf.pull_int().get_val();
+if (!e__FilterMode::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @IsobusNMMessageTypes.e_FilterMode.", single_value);
+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 e__FilterMode_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @IsobusNMMessageTypes.e_FilterMode.");
+}
+}
+
+boolean e__FilterMode_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean e__FilterMode_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 e__FilterMode_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    e__FilterMode_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    e__FilterMode::enum_type enum_val = e__FilterMode::str_to_enum(m_p->get_enumerated());
+    if (!e__FilterMode::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @IsobusNMMessageTypes.e_FilterMode.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@IsobusNMMessageTypes.e_FilterMode");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void e__FilterMode_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@IsobusNMMessageTypes.e_FilterMode");
+}
+
+N__MFDB__Response::N__MFDB__Response()
+{
+}
+
+N__MFDB__Response::N__MFDB__Response(const INTEGER& par_msgFunction,
+    const PortPair& par_portPair,
+    const e__FilterMode& par_filterMode,
+    const N__MFDB__Response_pgnEntries& par_pgnEntries)
+  :   field_msgFunction(par_msgFunction),
+  field_portPair(par_portPair),
+  field_filterMode(par_filterMode),
+  field_pgnEntries(par_pgnEntries)
+{
+}
+
+N__MFDB__Response::N__MFDB__Response(const N__MFDB__Response& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_MFDB_Response.");
+if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction();
+else field_msgFunction.clean_up();
+if (other_value.portPair().is_bound()) field_portPair = other_value.portPair();
+else field_portPair.clean_up();
+if (other_value.filterMode().is_bound()) field_filterMode = other_value.filterMode();
+else field_filterMode.clean_up();
+if (other_value.pgnEntries().is_bound()) field_pgnEntries = other_value.pgnEntries();
+else field_pgnEntries.clean_up();
+}
+
+void N__MFDB__Response::clean_up()
+{
+field_msgFunction.clean_up();
+field_portPair.clean_up();
+field_filterMode.clean_up();
+field_pgnEntries.clean_up();
+}
+
+const TTCN_Typedescriptor_t* N__MFDB__Response::get_descriptor() const { return &N__MFDB__Response_descr_; }
+N__MFDB__Response& N__MFDB__Response::operator=(const N__MFDB__Response& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.N_MFDB_Response.");
+  if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction();
+  else field_msgFunction.clean_up();
+  if (other_value.portPair().is_bound()) field_portPair = other_value.portPair();
+  else field_portPair.clean_up();
+  if (other_value.filterMode().is_bound()) field_filterMode = other_value.filterMode();
+  else field_filterMode.clean_up();
+  if (other_value.pgnEntries().is_bound()) field_pgnEntries = other_value.pgnEntries();
+  else field_pgnEntries.clean_up();
+}
+return *this;
+}
+
+boolean N__MFDB__Response::operator==(const N__MFDB__Response& other_value) const
+{
+return field_msgFunction==other_value.field_msgFunction
+  && field_portPair==other_value.field_portPair
+  && field_filterMode==other_value.field_filterMode
+  && field_pgnEntries==other_value.field_pgnEntries;
+}
+
+boolean N__MFDB__Response::is_bound() const
+{
+return (field_msgFunction.is_bound())
+  || (field_portPair.is_bound())
+  || (field_filterMode.is_bound())
+  || (field_pgnEntries.is_bound());
+}
+boolean N__MFDB__Response::is_value() const
+{
+return field_msgFunction.is_value()
+  && field_portPair.is_value()
+  && field_filterMode.is_value()
+  && field_pgnEntries.is_value();
+}
+void N__MFDB__Response::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ msgFunction := ");
+field_msgFunction.log();
+TTCN_Logger::log_event_str(", portPair := ");
+field_portPair.log();
+TTCN_Logger::log_event_str(", filterMode := ");
+field_filterMode.log();
+TTCN_Logger::log_event_str(", pgnEntries := ");
+field_pgnEntries.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void N__MFDB__Response::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 @IsobusNMMessageTypes.N_MFDB_Response 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) msgFunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) filterMode().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) pgnEntries().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(), "msgFunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgFunction().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(), "portPair")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          portPair().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(), "filterMode")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          filterMode().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(), "pgnEntries")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          pgnEntries().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 @IsobusNMMessageTypes.N_MFDB_Response: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusNMMessageTypes.N_MFDB_Response");
+  }
+}
+
+void N__MFDB__Response::set_implicit_omit()
+{
+if (msgFunction().is_bound()) msgFunction().set_implicit_omit();
+if (portPair().is_bound()) portPair().set_implicit_omit();
+if (filterMode().is_bound()) filterMode().set_implicit_omit();
+if (pgnEntries().is_bound()) pgnEntries().set_implicit_omit();
+}
+
+void N__MFDB__Response::encode_text(Text_Buf& text_buf) const
+{
+field_msgFunction.encode_text(text_buf);
+field_portPair.encode_text(text_buf);
+field_filterMode.encode_text(text_buf);
+field_pgnEntries.encode_text(text_buf);
+}
+
+void N__MFDB__Response::decode_text(Text_Buf& text_buf)
+{
+field_msgFunction.decode_text(text_buf);
+field_portPair.decode_text(text_buf);
+field_filterMode.decode_text(text_buf);
+field_pgnEntries.decode_text(text_buf);
+}
+
+void N__MFDB__Response::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void N__MFDB__Response::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int N__MFDB__Response::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, Function_descr_.raw->forceomit);
+  decoded_field_length = field_msgFunction.RAW_decode(Function_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, PortPair_descr_.raw->forceomit);
+  decoded_field_length = field_portPair.RAW_decode(PortPair_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, e__FilterMode_descr_.raw->forceomit);
+  decoded_field_length = field_filterMode.RAW_decode(e__FilterMode_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, N__MFDB__Response_pgnEntries_descr_.raw->forceomit);
+  decoded_field_length = field_pgnEntries.RAW_decode(N__MFDB__Response_pgnEntries_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int N__MFDB__Response::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, Function_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PortPair_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, e__FilterMode_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, N__MFDB__Response_pgnEntries_descr_.raw);
+  encoded_length += field_msgFunction.RAW_encode(Function_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_portPair.RAW_encode(PortPair_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_filterMode.RAW_encode(e__FilterMode_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_pgnEntries.RAW_encode(N__MFDB__Response_pgnEntries_descr_, *myleaf.body.node.nodes[3]);
+  return myleaf.length = encoded_length;
+}
+
+struct N__MFDB__Response_template::single_value_struct {
+INTEGER_template field_msgFunction;
+PortPair_template field_portPair;
+e__FilterMode_template field_filterMode;
+N__MFDB__Response_pgnEntries_template field_pgnEntries;
+};
+
+void N__MFDB__Response_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_msgFunction = ANY_VALUE;
+single_value->field_portPair = ANY_VALUE;
+single_value->field_filterMode = ANY_VALUE;
+single_value->field_pgnEntries = ANY_VALUE;
+}
+}
+}
+
+void N__MFDB__Response_template::copy_value(const N__MFDB__Response& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.msgFunction().is_bound()) {
+  single_value->field_msgFunction = other_value.msgFunction();
+} else {
+  single_value->field_msgFunction.clean_up();
+}
+if (other_value.portPair().is_bound()) {
+  single_value->field_portPair = other_value.portPair();
+} else {
+  single_value->field_portPair.clean_up();
+}
+if (other_value.filterMode().is_bound()) {
+  single_value->field_filterMode = other_value.filterMode();
+} else {
+  single_value->field_filterMode.clean_up();
+}
+if (other_value.pgnEntries().is_bound()) {
+  single_value->field_pgnEntries = other_value.pgnEntries();
+} else {
+  single_value->field_pgnEntries.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void N__MFDB__Response_template::copy_template(const N__MFDB__Response_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.msgFunction().get_selection()) {
+single_value->field_msgFunction = other_value.msgFunction();
+} else {
+single_value->field_msgFunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.portPair().get_selection()) {
+single_value->field_portPair = other_value.portPair();
+} else {
+single_value->field_portPair.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.filterMode().get_selection()) {
+single_value->field_filterMode = other_value.filterMode();
+} else {
+single_value->field_filterMode.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.pgnEntries().get_selection()) {
+single_value->field_pgnEntries = other_value.pgnEntries();
+} else {
+single_value->field_pgnEntries.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new N__MFDB__Response_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDB_Response.");
+break;
+}
+set_selection(other_value);
+}
+
+N__MFDB__Response_template::N__MFDB__Response_template()
+{
+}
+
+N__MFDB__Response_template::N__MFDB__Response_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+N__MFDB__Response_template::N__MFDB__Response_template(const N__MFDB__Response& other_value)
+{
+copy_value(other_value);
+}
+
+N__MFDB__Response_template::N__MFDB__Response_template(const OPTIONAL<N__MFDB__Response>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__MFDB__Response&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_MFDB_Response from an unbound optional field.");
+}
+}
+
+N__MFDB__Response_template::N__MFDB__Response_template(const N__MFDB__Response_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+N__MFDB__Response_template::~N__MFDB__Response_template()
+{
+clean_up();
+}
+
+N__MFDB__Response_template& N__MFDB__Response_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+N__MFDB__Response_template& N__MFDB__Response_template::operator=(const N__MFDB__Response& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+N__MFDB__Response_template& N__MFDB__Response_template::operator=(const OPTIONAL<N__MFDB__Response>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__MFDB__Response&)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 @IsobusNMMessageTypes.N_MFDB_Response.");
+}
+return *this;
+}
+
+N__MFDB__Response_template& N__MFDB__Response_template::operator=(const N__MFDB__Response_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean N__MFDB__Response_template::match(const N__MFDB__Response& 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.msgFunction().is_bound()) return FALSE;
+if(!single_value->field_msgFunction.match(other_value.msgFunction(), legacy))return FALSE;
+if(!other_value.portPair().is_bound()) return FALSE;
+if(!single_value->field_portPair.match(other_value.portPair(), legacy))return FALSE;
+if(!other_value.filterMode().is_bound()) return FALSE;
+if(!single_value->field_filterMode.match(other_value.filterMode(), legacy))return FALSE;
+if(!other_value.pgnEntries().is_bound()) return FALSE;
+if(!single_value->field_pgnEntries.match(other_value.pgnEntries(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDB_Response.");
+}
+return FALSE;
+}
+
+boolean N__MFDB__Response_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_msgFunction.is_bound()
+
+ ||single_value->field_portPair.is_bound()
+
+ ||single_value->field_filterMode.is_bound()
+
+ ||single_value->field_pgnEntries.is_bound()
+;
+}
+
+boolean N__MFDB__Response_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_msgFunction.is_value()
+ &&single_value->field_portPair.is_value()
+ &&single_value->field_filterMode.is_value()
+ &&single_value->field_pgnEntries.is_value();
+}
+
+void N__MFDB__Response_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+N__MFDB__Response N__MFDB__Response_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 @IsobusNMMessageTypes.N_MFDB_Response.");
+N__MFDB__Response ret_val;
+if (single_value->field_msgFunction.is_bound()) {
+ret_val.msgFunction() = single_value->field_msgFunction.valueof();
+}
+if (single_value->field_portPair.is_bound()) {
+ret_val.portPair() = single_value->field_portPair.valueof();
+}
+if (single_value->field_filterMode.is_bound()) {
+ret_val.filterMode() = single_value->field_filterMode.valueof();
+}
+if (single_value->field_pgnEntries.is_bound()) {
+ret_val.pgnEntries() = single_value->field_pgnEntries.valueof();
+}
+return ret_val;
+}
+
+void N__MFDB__Response_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.N_MFDB_Response.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new N__MFDB__Response_template[list_length];
+}
+
+N__MFDB__Response_template& N__MFDB__Response_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_MFDB_Response.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.N_MFDB_Response.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& N__MFDB__Response_template::msgFunction()
+{
+set_specific();
+return single_value->field_msgFunction;
+}
+
+const INTEGER_template& N__MFDB__Response_template::msgFunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field msgFunction of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Response.");
+return single_value->field_msgFunction;
+}
+
+PortPair_template& N__MFDB__Response_template::portPair()
+{
+set_specific();
+return single_value->field_portPair;
+}
+
+const PortPair_template& N__MFDB__Response_template::portPair() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field portPair of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Response.");
+return single_value->field_portPair;
+}
+
+e__FilterMode_template& N__MFDB__Response_template::filterMode()
+{
+set_specific();
+return single_value->field_filterMode;
+}
+
+const e__FilterMode_template& N__MFDB__Response_template::filterMode() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field filterMode of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Response.");
+return single_value->field_filterMode;
+}
+
+N__MFDB__Response_pgnEntries_template& N__MFDB__Response_template::pgnEntries()
+{
+set_specific();
+return single_value->field_pgnEntries;
+}
+
+const N__MFDB__Response_pgnEntries_template& N__MFDB__Response_template::pgnEntries() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field pgnEntries of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Response.");
+return single_value->field_pgnEntries;
+}
+
+int N__MFDB__Response_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Response 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 @IsobusNMMessageTypes.N_MFDB_Response 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 @IsobusNMMessageTypes.N_MFDB_Response containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Response containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Response containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Response containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDB_Response.");
+  }
+  return 0;
+}
+
+void N__MFDB__Response_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ msgFunction := ");
+single_value->field_msgFunction.log();
+TTCN_Logger::log_event_str(", portPair := ");
+single_value->field_portPair.log();
+TTCN_Logger::log_event_str(", filterMode := ");
+single_value->field_filterMode.log();
+TTCN_Logger::log_event_str(", pgnEntries := ");
+single_value->field_pgnEntries.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void N__MFDB__Response_template::log_match(const N__MFDB__Response& 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_msgFunction.match(match_value.msgFunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".msgFunction");
+single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_portPair.match(match_value.portPair(), legacy)){
+TTCN_Logger::log_logmatch_info(".portPair");
+single_value->field_portPair.log_match(match_value.portPair(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_filterMode.match(match_value.filterMode(), legacy)){
+TTCN_Logger::log_logmatch_info(".filterMode");
+single_value->field_filterMode.log_match(match_value.filterMode(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_pgnEntries.match(match_value.pgnEntries(), legacy)){
+TTCN_Logger::log_logmatch_info(".pgnEntries");
+single_value->field_pgnEntries.log_match(match_value.pgnEntries(), 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("{ msgFunction := ");
+single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy);
+TTCN_Logger::log_event_str(", portPair := ");
+single_value->field_portPair.log_match(match_value.portPair(), legacy);
+TTCN_Logger::log_event_str(", filterMode := ");
+single_value->field_filterMode.log_match(match_value.filterMode(), legacy);
+TTCN_Logger::log_event_str(", pgnEntries := ");
+single_value->field_pgnEntries.log_match(match_value.pgnEntries(), 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 N__MFDB__Response_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_msgFunction.encode_text(text_buf);
+single_value->field_portPair.encode_text(text_buf);
+single_value->field_filterMode.encode_text(text_buf);
+single_value->field_pgnEntries.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 @IsobusNMMessageTypes.N_MFDB_Response.");
+}
+}
+
+void N__MFDB__Response_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_msgFunction.decode_text(text_buf);
+single_value->field_portPair.decode_text(text_buf);
+single_value->field_filterMode.decode_text(text_buf);
+single_value->field_pgnEntries.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 N__MFDB__Response_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 @IsobusNMMessageTypes.N_MFDB_Response.");
+}
+}
+
+void N__MFDB__Response_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: {
+    N__MFDB__Response_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusNMMessageTypes.N_MFDB_Response 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) msgFunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) filterMode().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) pgnEntries().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(), "msgFunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgFunction().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(), "portPair")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          portPair().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(), "filterMode")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          filterMode().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(), "pgnEntries")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          pgnEntries().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 @IsobusNMMessageTypes.N_MFDB_Response: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusNMMessageTypes.N_MFDB_Response");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void N__MFDB__Response_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_msgFunction.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Response");
+single_value->field_portPair.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Response");
+single_value->field_filterMode.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Response");
+single_value->field_pgnEntries.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Response");
+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 : "@IsobusNMMessageTypes.N_MFDB_Response");
+}
+
+boolean N__MFDB__Response_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean N__MFDB__Response_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+N__MFDB__Add::N__MFDB__Add()
+{
+}
+
+N__MFDB__Add::N__MFDB__Add(const INTEGER& par_msgFunction,
+    const PortPair& par_portPair,
+    const N__MFDB__Add_pgnEntries& par_pgnEntries)
+  :   field_msgFunction(par_msgFunction),
+  field_portPair(par_portPair),
+  field_pgnEntries(par_pgnEntries)
+{
+}
+
+N__MFDB__Add::N__MFDB__Add(const N__MFDB__Add& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_MFDB_Add.");
+if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction();
+else field_msgFunction.clean_up();
+if (other_value.portPair().is_bound()) field_portPair = other_value.portPair();
+else field_portPair.clean_up();
+if (other_value.pgnEntries().is_bound()) field_pgnEntries = other_value.pgnEntries();
+else field_pgnEntries.clean_up();
+}
+
+void N__MFDB__Add::clean_up()
+{
+field_msgFunction.clean_up();
+field_portPair.clean_up();
+field_pgnEntries.clean_up();
+}
+
+const TTCN_Typedescriptor_t* N__MFDB__Add::get_descriptor() const { return &N__MFDB__Add_descr_; }
+N__MFDB__Add& N__MFDB__Add::operator=(const N__MFDB__Add& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.N_MFDB_Add.");
+  if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction();
+  else field_msgFunction.clean_up();
+  if (other_value.portPair().is_bound()) field_portPair = other_value.portPair();
+  else field_portPair.clean_up();
+  if (other_value.pgnEntries().is_bound()) field_pgnEntries = other_value.pgnEntries();
+  else field_pgnEntries.clean_up();
+}
+return *this;
+}
+
+boolean N__MFDB__Add::operator==(const N__MFDB__Add& other_value) const
+{
+return field_msgFunction==other_value.field_msgFunction
+  && field_portPair==other_value.field_portPair
+  && field_pgnEntries==other_value.field_pgnEntries;
+}
+
+boolean N__MFDB__Add::is_bound() const
+{
+return (field_msgFunction.is_bound())
+  || (field_portPair.is_bound())
+  || (field_pgnEntries.is_bound());
+}
+boolean N__MFDB__Add::is_value() const
+{
+return field_msgFunction.is_value()
+  && field_portPair.is_value()
+  && field_pgnEntries.is_value();
+}
+void N__MFDB__Add::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ msgFunction := ");
+field_msgFunction.log();
+TTCN_Logger::log_event_str(", portPair := ");
+field_portPair.log();
+TTCN_Logger::log_event_str(", pgnEntries := ");
+field_pgnEntries.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void N__MFDB__Add::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 @IsobusNMMessageTypes.N_MFDB_Add 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) msgFunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) pgnEntries().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(), "msgFunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgFunction().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(), "portPair")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          portPair().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(), "pgnEntries")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          pgnEntries().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 @IsobusNMMessageTypes.N_MFDB_Add: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusNMMessageTypes.N_MFDB_Add");
+  }
+}
+
+void N__MFDB__Add::set_implicit_omit()
+{
+if (msgFunction().is_bound()) msgFunction().set_implicit_omit();
+if (portPair().is_bound()) portPair().set_implicit_omit();
+if (pgnEntries().is_bound()) pgnEntries().set_implicit_omit();
+}
+
+void N__MFDB__Add::encode_text(Text_Buf& text_buf) const
+{
+field_msgFunction.encode_text(text_buf);
+field_portPair.encode_text(text_buf);
+field_pgnEntries.encode_text(text_buf);
+}
+
+void N__MFDB__Add::decode_text(Text_Buf& text_buf)
+{
+field_msgFunction.decode_text(text_buf);
+field_portPair.decode_text(text_buf);
+field_pgnEntries.decode_text(text_buf);
+}
+
+void N__MFDB__Add::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void N__MFDB__Add::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int N__MFDB__Add::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, Function_descr_.raw->forceomit);
+  decoded_field_length = field_msgFunction.RAW_decode(Function_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, PortPair_descr_.raw->forceomit);
+  decoded_field_length = field_portPair.RAW_decode(PortPair_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, N__MFDB__Add_pgnEntries_descr_.raw->forceomit);
+  decoded_field_length = field_pgnEntries.RAW_decode(N__MFDB__Add_pgnEntries_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 N__MFDB__Add::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, Function_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PortPair_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, N__MFDB__Add_pgnEntries_descr_.raw);
+  encoded_length += field_msgFunction.RAW_encode(Function_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_portPair.RAW_encode(PortPair_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_pgnEntries.RAW_encode(N__MFDB__Add_pgnEntries_descr_, *myleaf.body.node.nodes[2]);
+  return myleaf.length = encoded_length;
+}
+
+struct N__MFDB__Add_template::single_value_struct {
+INTEGER_template field_msgFunction;
+PortPair_template field_portPair;
+N__MFDB__Add_pgnEntries_template field_pgnEntries;
+};
+
+void N__MFDB__Add_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_msgFunction = ANY_VALUE;
+single_value->field_portPair = ANY_VALUE;
+single_value->field_pgnEntries = ANY_VALUE;
+}
+}
+}
+
+void N__MFDB__Add_template::copy_value(const N__MFDB__Add& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.msgFunction().is_bound()) {
+  single_value->field_msgFunction = other_value.msgFunction();
+} else {
+  single_value->field_msgFunction.clean_up();
+}
+if (other_value.portPair().is_bound()) {
+  single_value->field_portPair = other_value.portPair();
+} else {
+  single_value->field_portPair.clean_up();
+}
+if (other_value.pgnEntries().is_bound()) {
+  single_value->field_pgnEntries = other_value.pgnEntries();
+} else {
+  single_value->field_pgnEntries.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void N__MFDB__Add_template::copy_template(const N__MFDB__Add_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.msgFunction().get_selection()) {
+single_value->field_msgFunction = other_value.msgFunction();
+} else {
+single_value->field_msgFunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.portPair().get_selection()) {
+single_value->field_portPair = other_value.portPair();
+} else {
+single_value->field_portPair.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.pgnEntries().get_selection()) {
+single_value->field_pgnEntries = other_value.pgnEntries();
+} else {
+single_value->field_pgnEntries.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new N__MFDB__Add_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDB_Add.");
+break;
+}
+set_selection(other_value);
+}
+
+N__MFDB__Add_template::N__MFDB__Add_template()
+{
+}
+
+N__MFDB__Add_template::N__MFDB__Add_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+N__MFDB__Add_template::N__MFDB__Add_template(const N__MFDB__Add& other_value)
+{
+copy_value(other_value);
+}
+
+N__MFDB__Add_template::N__MFDB__Add_template(const OPTIONAL<N__MFDB__Add>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__MFDB__Add&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_MFDB_Add from an unbound optional field.");
+}
+}
+
+N__MFDB__Add_template::N__MFDB__Add_template(const N__MFDB__Add_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+N__MFDB__Add_template::~N__MFDB__Add_template()
+{
+clean_up();
+}
+
+N__MFDB__Add_template& N__MFDB__Add_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+N__MFDB__Add_template& N__MFDB__Add_template::operator=(const N__MFDB__Add& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+N__MFDB__Add_template& N__MFDB__Add_template::operator=(const OPTIONAL<N__MFDB__Add>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__MFDB__Add&)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 @IsobusNMMessageTypes.N_MFDB_Add.");
+}
+return *this;
+}
+
+N__MFDB__Add_template& N__MFDB__Add_template::operator=(const N__MFDB__Add_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean N__MFDB__Add_template::match(const N__MFDB__Add& 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.msgFunction().is_bound()) return FALSE;
+if(!single_value->field_msgFunction.match(other_value.msgFunction(), legacy))return FALSE;
+if(!other_value.portPair().is_bound()) return FALSE;
+if(!single_value->field_portPair.match(other_value.portPair(), legacy))return FALSE;
+if(!other_value.pgnEntries().is_bound()) return FALSE;
+if(!single_value->field_pgnEntries.match(other_value.pgnEntries(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDB_Add.");
+}
+return FALSE;
+}
+
+boolean N__MFDB__Add_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_msgFunction.is_bound()
+
+ ||single_value->field_portPair.is_bound()
+
+ ||single_value->field_pgnEntries.is_bound()
+;
+}
+
+boolean N__MFDB__Add_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_msgFunction.is_value()
+ &&single_value->field_portPair.is_value()
+ &&single_value->field_pgnEntries.is_value();
+}
+
+void N__MFDB__Add_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+N__MFDB__Add N__MFDB__Add_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 @IsobusNMMessageTypes.N_MFDB_Add.");
+N__MFDB__Add ret_val;
+if (single_value->field_msgFunction.is_bound()) {
+ret_val.msgFunction() = single_value->field_msgFunction.valueof();
+}
+if (single_value->field_portPair.is_bound()) {
+ret_val.portPair() = single_value->field_portPair.valueof();
+}
+if (single_value->field_pgnEntries.is_bound()) {
+ret_val.pgnEntries() = single_value->field_pgnEntries.valueof();
+}
+return ret_val;
+}
+
+void N__MFDB__Add_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.N_MFDB_Add.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new N__MFDB__Add_template[list_length];
+}
+
+N__MFDB__Add_template& N__MFDB__Add_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_MFDB_Add.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.N_MFDB_Add.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& N__MFDB__Add_template::msgFunction()
+{
+set_specific();
+return single_value->field_msgFunction;
+}
+
+const INTEGER_template& N__MFDB__Add_template::msgFunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field msgFunction of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Add.");
+return single_value->field_msgFunction;
+}
+
+PortPair_template& N__MFDB__Add_template::portPair()
+{
+set_specific();
+return single_value->field_portPair;
+}
+
+const PortPair_template& N__MFDB__Add_template::portPair() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field portPair of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Add.");
+return single_value->field_portPair;
+}
+
+N__MFDB__Add_pgnEntries_template& N__MFDB__Add_template::pgnEntries()
+{
+set_specific();
+return single_value->field_pgnEntries;
+}
+
+const N__MFDB__Add_pgnEntries_template& N__MFDB__Add_template::pgnEntries() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field pgnEntries of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Add.");
+return single_value->field_pgnEntries;
+}
+
+int N__MFDB__Add_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Add 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 @IsobusNMMessageTypes.N_MFDB_Add 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 @IsobusNMMessageTypes.N_MFDB_Add containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Add containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Add containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Add containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDB_Add.");
+  }
+  return 0;
+}
+
+void N__MFDB__Add_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ msgFunction := ");
+single_value->field_msgFunction.log();
+TTCN_Logger::log_event_str(", portPair := ");
+single_value->field_portPair.log();
+TTCN_Logger::log_event_str(", pgnEntries := ");
+single_value->field_pgnEntries.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void N__MFDB__Add_template::log_match(const N__MFDB__Add& 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_msgFunction.match(match_value.msgFunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".msgFunction");
+single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_portPair.match(match_value.portPair(), legacy)){
+TTCN_Logger::log_logmatch_info(".portPair");
+single_value->field_portPair.log_match(match_value.portPair(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_pgnEntries.match(match_value.pgnEntries(), legacy)){
+TTCN_Logger::log_logmatch_info(".pgnEntries");
+single_value->field_pgnEntries.log_match(match_value.pgnEntries(), 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("{ msgFunction := ");
+single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy);
+TTCN_Logger::log_event_str(", portPair := ");
+single_value->field_portPair.log_match(match_value.portPair(), legacy);
+TTCN_Logger::log_event_str(", pgnEntries := ");
+single_value->field_pgnEntries.log_match(match_value.pgnEntries(), 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 N__MFDB__Add_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_msgFunction.encode_text(text_buf);
+single_value->field_portPair.encode_text(text_buf);
+single_value->field_pgnEntries.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 @IsobusNMMessageTypes.N_MFDB_Add.");
+}
+}
+
+void N__MFDB__Add_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_msgFunction.decode_text(text_buf);
+single_value->field_portPair.decode_text(text_buf);
+single_value->field_pgnEntries.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 N__MFDB__Add_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 @IsobusNMMessageTypes.N_MFDB_Add.");
+}
+}
+
+void N__MFDB__Add_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: {
+    N__MFDB__Add_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusNMMessageTypes.N_MFDB_Add 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) msgFunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) pgnEntries().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(), "msgFunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgFunction().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(), "portPair")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          portPair().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(), "pgnEntries")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          pgnEntries().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 @IsobusNMMessageTypes.N_MFDB_Add: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusNMMessageTypes.N_MFDB_Add");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void N__MFDB__Add_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_msgFunction.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Add");
+single_value->field_portPair.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Add");
+single_value->field_pgnEntries.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Add");
+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 : "@IsobusNMMessageTypes.N_MFDB_Add");
+}
+
+boolean N__MFDB__Add_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean N__MFDB__Add_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+N__MFDB__Delete::N__MFDB__Delete()
+{
+}
+
+N__MFDB__Delete::N__MFDB__Delete(const INTEGER& par_msgFunction,
+    const PortPair& par_portPair,
+    const N__MFDB__Delete_pgnEntries& par_pgnEntries)
+  :   field_msgFunction(par_msgFunction),
+  field_portPair(par_portPair),
+  field_pgnEntries(par_pgnEntries)
+{
+}
+
+N__MFDB__Delete::N__MFDB__Delete(const N__MFDB__Delete& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_MFDB_Delete.");
+if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction();
+else field_msgFunction.clean_up();
+if (other_value.portPair().is_bound()) field_portPair = other_value.portPair();
+else field_portPair.clean_up();
+if (other_value.pgnEntries().is_bound()) field_pgnEntries = other_value.pgnEntries();
+else field_pgnEntries.clean_up();
+}
+
+void N__MFDB__Delete::clean_up()
+{
+field_msgFunction.clean_up();
+field_portPair.clean_up();
+field_pgnEntries.clean_up();
+}
+
+const TTCN_Typedescriptor_t* N__MFDB__Delete::get_descriptor() const { return &N__MFDB__Delete_descr_; }
+N__MFDB__Delete& N__MFDB__Delete::operator=(const N__MFDB__Delete& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.N_MFDB_Delete.");
+  if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction();
+  else field_msgFunction.clean_up();
+  if (other_value.portPair().is_bound()) field_portPair = other_value.portPair();
+  else field_portPair.clean_up();
+  if (other_value.pgnEntries().is_bound()) field_pgnEntries = other_value.pgnEntries();
+  else field_pgnEntries.clean_up();
+}
+return *this;
+}
+
+boolean N__MFDB__Delete::operator==(const N__MFDB__Delete& other_value) const
+{
+return field_msgFunction==other_value.field_msgFunction
+  && field_portPair==other_value.field_portPair
+  && field_pgnEntries==other_value.field_pgnEntries;
+}
+
+boolean N__MFDB__Delete::is_bound() const
+{
+return (field_msgFunction.is_bound())
+  || (field_portPair.is_bound())
+  || (field_pgnEntries.is_bound());
+}
+boolean N__MFDB__Delete::is_value() const
+{
+return field_msgFunction.is_value()
+  && field_portPair.is_value()
+  && field_pgnEntries.is_value();
+}
+void N__MFDB__Delete::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ msgFunction := ");
+field_msgFunction.log();
+TTCN_Logger::log_event_str(", portPair := ");
+field_portPair.log();
+TTCN_Logger::log_event_str(", pgnEntries := ");
+field_pgnEntries.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void N__MFDB__Delete::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 @IsobusNMMessageTypes.N_MFDB_Delete 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) msgFunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) pgnEntries().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(), "msgFunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgFunction().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(), "portPair")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          portPair().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(), "pgnEntries")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          pgnEntries().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 @IsobusNMMessageTypes.N_MFDB_Delete: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusNMMessageTypes.N_MFDB_Delete");
+  }
+}
+
+void N__MFDB__Delete::set_implicit_omit()
+{
+if (msgFunction().is_bound()) msgFunction().set_implicit_omit();
+if (portPair().is_bound()) portPair().set_implicit_omit();
+if (pgnEntries().is_bound()) pgnEntries().set_implicit_omit();
+}
+
+void N__MFDB__Delete::encode_text(Text_Buf& text_buf) const
+{
+field_msgFunction.encode_text(text_buf);
+field_portPair.encode_text(text_buf);
+field_pgnEntries.encode_text(text_buf);
+}
+
+void N__MFDB__Delete::decode_text(Text_Buf& text_buf)
+{
+field_msgFunction.decode_text(text_buf);
+field_portPair.decode_text(text_buf);
+field_pgnEntries.decode_text(text_buf);
+}
+
+void N__MFDB__Delete::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void N__MFDB__Delete::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int N__MFDB__Delete::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, Function_descr_.raw->forceomit);
+  decoded_field_length = field_msgFunction.RAW_decode(Function_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, PortPair_descr_.raw->forceomit);
+  decoded_field_length = field_portPair.RAW_decode(PortPair_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, N__MFDB__Delete_pgnEntries_descr_.raw->forceomit);
+  decoded_field_length = field_pgnEntries.RAW_decode(N__MFDB__Delete_pgnEntries_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 N__MFDB__Delete::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, Function_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PortPair_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, N__MFDB__Delete_pgnEntries_descr_.raw);
+  encoded_length += field_msgFunction.RAW_encode(Function_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_portPair.RAW_encode(PortPair_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_pgnEntries.RAW_encode(N__MFDB__Delete_pgnEntries_descr_, *myleaf.body.node.nodes[2]);
+  return myleaf.length = encoded_length;
+}
+
+struct N__MFDB__Delete_template::single_value_struct {
+INTEGER_template field_msgFunction;
+PortPair_template field_portPair;
+N__MFDB__Delete_pgnEntries_template field_pgnEntries;
+};
+
+void N__MFDB__Delete_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_msgFunction = ANY_VALUE;
+single_value->field_portPair = ANY_VALUE;
+single_value->field_pgnEntries = ANY_VALUE;
+}
+}
+}
+
+void N__MFDB__Delete_template::copy_value(const N__MFDB__Delete& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.msgFunction().is_bound()) {
+  single_value->field_msgFunction = other_value.msgFunction();
+} else {
+  single_value->field_msgFunction.clean_up();
+}
+if (other_value.portPair().is_bound()) {
+  single_value->field_portPair = other_value.portPair();
+} else {
+  single_value->field_portPair.clean_up();
+}
+if (other_value.pgnEntries().is_bound()) {
+  single_value->field_pgnEntries = other_value.pgnEntries();
+} else {
+  single_value->field_pgnEntries.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void N__MFDB__Delete_template::copy_template(const N__MFDB__Delete_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.msgFunction().get_selection()) {
+single_value->field_msgFunction = other_value.msgFunction();
+} else {
+single_value->field_msgFunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.portPair().get_selection()) {
+single_value->field_portPair = other_value.portPair();
+} else {
+single_value->field_portPair.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.pgnEntries().get_selection()) {
+single_value->field_pgnEntries = other_value.pgnEntries();
+} else {
+single_value->field_pgnEntries.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new N__MFDB__Delete_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDB_Delete.");
+break;
+}
+set_selection(other_value);
+}
+
+N__MFDB__Delete_template::N__MFDB__Delete_template()
+{
+}
+
+N__MFDB__Delete_template::N__MFDB__Delete_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+N__MFDB__Delete_template::N__MFDB__Delete_template(const N__MFDB__Delete& other_value)
+{
+copy_value(other_value);
+}
+
+N__MFDB__Delete_template::N__MFDB__Delete_template(const OPTIONAL<N__MFDB__Delete>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__MFDB__Delete&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_MFDB_Delete from an unbound optional field.");
+}
+}
+
+N__MFDB__Delete_template::N__MFDB__Delete_template(const N__MFDB__Delete_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+N__MFDB__Delete_template::~N__MFDB__Delete_template()
+{
+clean_up();
+}
+
+N__MFDB__Delete_template& N__MFDB__Delete_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+N__MFDB__Delete_template& N__MFDB__Delete_template::operator=(const N__MFDB__Delete& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+N__MFDB__Delete_template& N__MFDB__Delete_template::operator=(const OPTIONAL<N__MFDB__Delete>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__MFDB__Delete&)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 @IsobusNMMessageTypes.N_MFDB_Delete.");
+}
+return *this;
+}
+
+N__MFDB__Delete_template& N__MFDB__Delete_template::operator=(const N__MFDB__Delete_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean N__MFDB__Delete_template::match(const N__MFDB__Delete& 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.msgFunction().is_bound()) return FALSE;
+if(!single_value->field_msgFunction.match(other_value.msgFunction(), legacy))return FALSE;
+if(!other_value.portPair().is_bound()) return FALSE;
+if(!single_value->field_portPair.match(other_value.portPair(), legacy))return FALSE;
+if(!other_value.pgnEntries().is_bound()) return FALSE;
+if(!single_value->field_pgnEntries.match(other_value.pgnEntries(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDB_Delete.");
+}
+return FALSE;
+}
+
+boolean N__MFDB__Delete_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_msgFunction.is_bound()
+
+ ||single_value->field_portPair.is_bound()
+
+ ||single_value->field_pgnEntries.is_bound()
+;
+}
+
+boolean N__MFDB__Delete_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_msgFunction.is_value()
+ &&single_value->field_portPair.is_value()
+ &&single_value->field_pgnEntries.is_value();
+}
+
+void N__MFDB__Delete_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+N__MFDB__Delete N__MFDB__Delete_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 @IsobusNMMessageTypes.N_MFDB_Delete.");
+N__MFDB__Delete ret_val;
+if (single_value->field_msgFunction.is_bound()) {
+ret_val.msgFunction() = single_value->field_msgFunction.valueof();
+}
+if (single_value->field_portPair.is_bound()) {
+ret_val.portPair() = single_value->field_portPair.valueof();
+}
+if (single_value->field_pgnEntries.is_bound()) {
+ret_val.pgnEntries() = single_value->field_pgnEntries.valueof();
+}
+return ret_val;
+}
+
+void N__MFDB__Delete_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.N_MFDB_Delete.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new N__MFDB__Delete_template[list_length];
+}
+
+N__MFDB__Delete_template& N__MFDB__Delete_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_MFDB_Delete.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.N_MFDB_Delete.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& N__MFDB__Delete_template::msgFunction()
+{
+set_specific();
+return single_value->field_msgFunction;
+}
+
+const INTEGER_template& N__MFDB__Delete_template::msgFunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field msgFunction of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Delete.");
+return single_value->field_msgFunction;
+}
+
+PortPair_template& N__MFDB__Delete_template::portPair()
+{
+set_specific();
+return single_value->field_portPair;
+}
+
+const PortPair_template& N__MFDB__Delete_template::portPair() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field portPair of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Delete.");
+return single_value->field_portPair;
+}
+
+N__MFDB__Delete_pgnEntries_template& N__MFDB__Delete_template::pgnEntries()
+{
+set_specific();
+return single_value->field_pgnEntries;
+}
+
+const N__MFDB__Delete_pgnEntries_template& N__MFDB__Delete_template::pgnEntries() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field pgnEntries of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Delete.");
+return single_value->field_pgnEntries;
+}
+
+int N__MFDB__Delete_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Delete 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 @IsobusNMMessageTypes.N_MFDB_Delete 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 @IsobusNMMessageTypes.N_MFDB_Delete containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Delete containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Delete containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Delete containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDB_Delete.");
+  }
+  return 0;
+}
+
+void N__MFDB__Delete_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ msgFunction := ");
+single_value->field_msgFunction.log();
+TTCN_Logger::log_event_str(", portPair := ");
+single_value->field_portPair.log();
+TTCN_Logger::log_event_str(", pgnEntries := ");
+single_value->field_pgnEntries.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void N__MFDB__Delete_template::log_match(const N__MFDB__Delete& 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_msgFunction.match(match_value.msgFunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".msgFunction");
+single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_portPair.match(match_value.portPair(), legacy)){
+TTCN_Logger::log_logmatch_info(".portPair");
+single_value->field_portPair.log_match(match_value.portPair(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_pgnEntries.match(match_value.pgnEntries(), legacy)){
+TTCN_Logger::log_logmatch_info(".pgnEntries");
+single_value->field_pgnEntries.log_match(match_value.pgnEntries(), 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("{ msgFunction := ");
+single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy);
+TTCN_Logger::log_event_str(", portPair := ");
+single_value->field_portPair.log_match(match_value.portPair(), legacy);
+TTCN_Logger::log_event_str(", pgnEntries := ");
+single_value->field_pgnEntries.log_match(match_value.pgnEntries(), 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 N__MFDB__Delete_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_msgFunction.encode_text(text_buf);
+single_value->field_portPair.encode_text(text_buf);
+single_value->field_pgnEntries.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 @IsobusNMMessageTypes.N_MFDB_Delete.");
+}
+}
+
+void N__MFDB__Delete_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_msgFunction.decode_text(text_buf);
+single_value->field_portPair.decode_text(text_buf);
+single_value->field_pgnEntries.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 N__MFDB__Delete_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 @IsobusNMMessageTypes.N_MFDB_Delete.");
+}
+}
+
+void N__MFDB__Delete_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: {
+    N__MFDB__Delete_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusNMMessageTypes.N_MFDB_Delete 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) msgFunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) pgnEntries().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(), "msgFunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgFunction().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(), "portPair")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          portPair().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(), "pgnEntries")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          pgnEntries().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 @IsobusNMMessageTypes.N_MFDB_Delete: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusNMMessageTypes.N_MFDB_Delete");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void N__MFDB__Delete_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_msgFunction.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Delete");
+single_value->field_portPair.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Delete");
+single_value->field_pgnEntries.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Delete");
+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 : "@IsobusNMMessageTypes.N_MFDB_Delete");
+}
+
+boolean N__MFDB__Delete_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean N__MFDB__Delete_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+N__MFDB__Clear::N__MFDB__Clear()
+{
+}
+
+N__MFDB__Clear::N__MFDB__Clear(const INTEGER& par_msgFunction,
+    const PortPair& par_portPair,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_msgFunction(par_msgFunction),
+  field_portPair(par_portPair),
+  field_reserved3(par_reserved3),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+N__MFDB__Clear::N__MFDB__Clear(const N__MFDB__Clear& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_MFDB_Clear.");
+if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction();
+else field_msgFunction.clean_up();
+if (other_value.portPair().is_bound()) field_portPair = other_value.portPair();
+else field_portPair.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void N__MFDB__Clear::clean_up()
+{
+field_msgFunction.clean_up();
+field_portPair.clean_up();
+field_reserved3.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* N__MFDB__Clear::get_descriptor() const { return &N__MFDB__Clear_descr_; }
+N__MFDB__Clear& N__MFDB__Clear::operator=(const N__MFDB__Clear& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.N_MFDB_Clear.");
+  if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction();
+  else field_msgFunction.clean_up();
+  if (other_value.portPair().is_bound()) field_portPair = other_value.portPair();
+  else field_portPair.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean N__MFDB__Clear::operator==(const N__MFDB__Clear& other_value) const
+{
+return field_msgFunction==other_value.field_msgFunction
+  && field_portPair==other_value.field_portPair
+  && field_reserved3==other_value.field_reserved3
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean N__MFDB__Clear::is_bound() const
+{
+return (field_msgFunction.is_bound())
+  || (field_portPair.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean N__MFDB__Clear::is_value() const
+{
+return field_msgFunction.is_value()
+  && field_portPair.is_value()
+  && field_reserved3.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void N__MFDB__Clear::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ msgFunction := ");
+field_msgFunction.log();
+TTCN_Logger::log_event_str(", portPair := ");
+field_portPair.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void N__MFDB__Clear::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusNMMessageTypes.N_MFDB_Clear has 8 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) msgFunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "msgFunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgFunction().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(), "portPair")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          portPair().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusNMMessageTypes.N_MFDB_Clear: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusNMMessageTypes.N_MFDB_Clear");
+  }
+}
+
+void N__MFDB__Clear::set_implicit_omit()
+{
+if (msgFunction().is_bound()) msgFunction().set_implicit_omit();
+if (portPair().is_bound()) portPair().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void N__MFDB__Clear::encode_text(Text_Buf& text_buf) const
+{
+field_msgFunction.encode_text(text_buf);
+field_portPair.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void N__MFDB__Clear::decode_text(Text_Buf& text_buf)
+{
+field_msgFunction.decode_text(text_buf);
+field_portPair.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void N__MFDB__Clear::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void N__MFDB__Clear::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int N__MFDB__Clear::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, Function_descr_.raw->forceomit);
+  decoded_field_length = field_msgFunction.RAW_decode(Function_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, PortPair_descr_.raw->forceomit);
+  decoded_field_length = field_portPair.RAW_decode(PortPair_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, N__MFDB__Clear_reserved3_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(N__MFDB__Clear_reserved3_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, N__MFDB__Clear_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(N__MFDB__Clear_reserved4_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, N__MFDB__Clear_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(N__MFDB__Clear_reserved5_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, N__MFDB__Clear_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(N__MFDB__Clear_reserved6_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, N__MFDB__Clear_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(N__MFDB__Clear_reserved7_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, N__MFDB__Clear_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(N__MFDB__Clear_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int N__MFDB__Clear::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, Function_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PortPair_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, N__MFDB__Clear_reserved3_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, N__MFDB__Clear_reserved4_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, N__MFDB__Clear_reserved5_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, N__MFDB__Clear_reserved6_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, N__MFDB__Clear_reserved7_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, N__MFDB__Clear_reserved8_descr_.raw);
+  encoded_length += field_msgFunction.RAW_encode(Function_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_portPair.RAW_encode(PortPair_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved3.RAW_encode(N__MFDB__Clear_reserved3_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved4.RAW_encode(N__MFDB__Clear_reserved4_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved5.RAW_encode(N__MFDB__Clear_reserved5_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved6.RAW_encode(N__MFDB__Clear_reserved6_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved7.RAW_encode(N__MFDB__Clear_reserved7_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved8.RAW_encode(N__MFDB__Clear_reserved8_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct N__MFDB__Clear_template::single_value_struct {
+INTEGER_template field_msgFunction;
+PortPair_template field_portPair;
+OCTETSTRING_template field_reserved3;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void N__MFDB__Clear_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_msgFunction = ANY_VALUE;
+single_value->field_portPair = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void N__MFDB__Clear_template::copy_value(const N__MFDB__Clear& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.msgFunction().is_bound()) {
+  single_value->field_msgFunction = other_value.msgFunction();
+} else {
+  single_value->field_msgFunction.clean_up();
+}
+if (other_value.portPair().is_bound()) {
+  single_value->field_portPair = other_value.portPair();
+} else {
+  single_value->field_portPair.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void N__MFDB__Clear_template::copy_template(const N__MFDB__Clear_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.msgFunction().get_selection()) {
+single_value->field_msgFunction = other_value.msgFunction();
+} else {
+single_value->field_msgFunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.portPair().get_selection()) {
+single_value->field_portPair = other_value.portPair();
+} else {
+single_value->field_portPair.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new N__MFDB__Clear_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDB_Clear.");
+break;
+}
+set_selection(other_value);
+}
+
+N__MFDB__Clear_template::N__MFDB__Clear_template()
+{
+}
+
+N__MFDB__Clear_template::N__MFDB__Clear_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+N__MFDB__Clear_template::N__MFDB__Clear_template(const N__MFDB__Clear& other_value)
+{
+copy_value(other_value);
+}
+
+N__MFDB__Clear_template::N__MFDB__Clear_template(const OPTIONAL<N__MFDB__Clear>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__MFDB__Clear&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_MFDB_Clear from an unbound optional field.");
+}
+}
+
+N__MFDB__Clear_template::N__MFDB__Clear_template(const N__MFDB__Clear_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+N__MFDB__Clear_template::~N__MFDB__Clear_template()
+{
+clean_up();
+}
+
+N__MFDB__Clear_template& N__MFDB__Clear_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+N__MFDB__Clear_template& N__MFDB__Clear_template::operator=(const N__MFDB__Clear& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+N__MFDB__Clear_template& N__MFDB__Clear_template::operator=(const OPTIONAL<N__MFDB__Clear>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__MFDB__Clear&)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 @IsobusNMMessageTypes.N_MFDB_Clear.");
+}
+return *this;
+}
+
+N__MFDB__Clear_template& N__MFDB__Clear_template::operator=(const N__MFDB__Clear_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean N__MFDB__Clear_template::match(const N__MFDB__Clear& 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.msgFunction().is_bound()) return FALSE;
+if(!single_value->field_msgFunction.match(other_value.msgFunction(), legacy))return FALSE;
+if(!other_value.portPair().is_bound()) return FALSE;
+if(!single_value->field_portPair.match(other_value.portPair(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDB_Clear.");
+}
+return FALSE;
+}
+
+boolean N__MFDB__Clear_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_msgFunction.is_bound()
+
+ ||single_value->field_portPair.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean N__MFDB__Clear_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_msgFunction.is_value()
+ &&single_value->field_portPair.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void N__MFDB__Clear_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+N__MFDB__Clear N__MFDB__Clear_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 @IsobusNMMessageTypes.N_MFDB_Clear.");
+N__MFDB__Clear ret_val;
+if (single_value->field_msgFunction.is_bound()) {
+ret_val.msgFunction() = single_value->field_msgFunction.valueof();
+}
+if (single_value->field_portPair.is_bound()) {
+ret_val.portPair() = single_value->field_portPair.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void N__MFDB__Clear_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.N_MFDB_Clear.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new N__MFDB__Clear_template[list_length];
+}
+
+N__MFDB__Clear_template& N__MFDB__Clear_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_MFDB_Clear.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.N_MFDB_Clear.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& N__MFDB__Clear_template::msgFunction()
+{
+set_specific();
+return single_value->field_msgFunction;
+}
+
+const INTEGER_template& N__MFDB__Clear_template::msgFunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field msgFunction of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Clear.");
+return single_value->field_msgFunction;
+}
+
+PortPair_template& N__MFDB__Clear_template::portPair()
+{
+set_specific();
+return single_value->field_portPair;
+}
+
+const PortPair_template& N__MFDB__Clear_template::portPair() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field portPair of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Clear.");
+return single_value->field_portPair;
+}
+
+OCTETSTRING_template& N__MFDB__Clear_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const OCTETSTRING_template& N__MFDB__Clear_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Clear.");
+return single_value->field_reserved3;
+}
+
+OCTETSTRING_template& N__MFDB__Clear_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& N__MFDB__Clear_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Clear.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& N__MFDB__Clear_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& N__MFDB__Clear_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Clear.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& N__MFDB__Clear_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& N__MFDB__Clear_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Clear.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& N__MFDB__Clear_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& N__MFDB__Clear_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Clear.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& N__MFDB__Clear_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& N__MFDB__Clear_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Clear.");
+return single_value->field_reserved8;
+}
+
+int N__MFDB__Clear_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Clear which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Clear 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 @IsobusNMMessageTypes.N_MFDB_Clear containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Clear containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Clear containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Clear containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDB_Clear.");
+  }
+  return 0;
+}
+
+void N__MFDB__Clear_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ msgFunction := ");
+single_value->field_msgFunction.log();
+TTCN_Logger::log_event_str(", portPair := ");
+single_value->field_portPair.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void N__MFDB__Clear_template::log_match(const N__MFDB__Clear& 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_msgFunction.match(match_value.msgFunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".msgFunction");
+single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_portPair.match(match_value.portPair(), legacy)){
+TTCN_Logger::log_logmatch_info(".portPair");
+single_value->field_portPair.log_match(match_value.portPair(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ msgFunction := ");
+single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy);
+TTCN_Logger::log_event_str(", portPair := ");
+single_value->field_portPair.log_match(match_value.portPair(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 N__MFDB__Clear_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_msgFunction.encode_text(text_buf);
+single_value->field_portPair.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusNMMessageTypes.N_MFDB_Clear.");
+}
+}
+
+void N__MFDB__Clear_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_msgFunction.decode_text(text_buf);
+single_value->field_portPair.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 N__MFDB__Clear_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 @IsobusNMMessageTypes.N_MFDB_Clear.");
+}
+}
+
+void N__MFDB__Clear_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: {
+    N__MFDB__Clear_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusNMMessageTypes.N_MFDB_Clear has 8 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) msgFunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "msgFunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgFunction().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(), "portPair")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          portPair().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusNMMessageTypes.N_MFDB_Clear: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusNMMessageTypes.N_MFDB_Clear");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void N__MFDB__Clear_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_msgFunction.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Clear");
+single_value->field_portPair.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Clear");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Clear");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Clear");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Clear");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Clear");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Clear");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Clear");
+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 : "@IsobusNMMessageTypes.N_MFDB_Clear");
+}
+
+boolean N__MFDB__Clear_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean N__MFDB__Clear_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+N__MFDB__Create__Entry::N__MFDB__Create__Entry()
+{
+}
+
+N__MFDB__Create__Entry::N__MFDB__Create__Entry(const INTEGER& par_msgFunction,
+    const PortPair& par_portPair,
+    const e__FilterMode& par_filterMode,
+    const N__MFDB__Create__Entry_pgnEntries& par_pgnEntries)
+  :   field_msgFunction(par_msgFunction),
+  field_portPair(par_portPair),
+  field_filterMode(par_filterMode),
+  field_pgnEntries(par_pgnEntries)
+{
+}
+
+N__MFDB__Create__Entry::N__MFDB__Create__Entry(const N__MFDB__Create__Entry& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_MFDB_Create_Entry.");
+if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction();
+else field_msgFunction.clean_up();
+if (other_value.portPair().is_bound()) field_portPair = other_value.portPair();
+else field_portPair.clean_up();
+if (other_value.filterMode().is_bound()) field_filterMode = other_value.filterMode();
+else field_filterMode.clean_up();
+if (other_value.pgnEntries().is_bound()) field_pgnEntries = other_value.pgnEntries();
+else field_pgnEntries.clean_up();
+}
+
+void N__MFDB__Create__Entry::clean_up()
+{
+field_msgFunction.clean_up();
+field_portPair.clean_up();
+field_filterMode.clean_up();
+field_pgnEntries.clean_up();
+}
+
+const TTCN_Typedescriptor_t* N__MFDB__Create__Entry::get_descriptor() const { return &N__MFDB__Create__Entry_descr_; }
+N__MFDB__Create__Entry& N__MFDB__Create__Entry::operator=(const N__MFDB__Create__Entry& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.N_MFDB_Create_Entry.");
+  if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction();
+  else field_msgFunction.clean_up();
+  if (other_value.portPair().is_bound()) field_portPair = other_value.portPair();
+  else field_portPair.clean_up();
+  if (other_value.filterMode().is_bound()) field_filterMode = other_value.filterMode();
+  else field_filterMode.clean_up();
+  if (other_value.pgnEntries().is_bound()) field_pgnEntries = other_value.pgnEntries();
+  else field_pgnEntries.clean_up();
+}
+return *this;
+}
+
+boolean N__MFDB__Create__Entry::operator==(const N__MFDB__Create__Entry& other_value) const
+{
+return field_msgFunction==other_value.field_msgFunction
+  && field_portPair==other_value.field_portPair
+  && field_filterMode==other_value.field_filterMode
+  && field_pgnEntries==other_value.field_pgnEntries;
+}
+
+boolean N__MFDB__Create__Entry::is_bound() const
+{
+return (field_msgFunction.is_bound())
+  || (field_portPair.is_bound())
+  || (field_filterMode.is_bound())
+  || (field_pgnEntries.is_bound());
+}
+boolean N__MFDB__Create__Entry::is_value() const
+{
+return field_msgFunction.is_value()
+  && field_portPair.is_value()
+  && field_filterMode.is_value()
+  && field_pgnEntries.is_value();
+}
+void N__MFDB__Create__Entry::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ msgFunction := ");
+field_msgFunction.log();
+TTCN_Logger::log_event_str(", portPair := ");
+field_portPair.log();
+TTCN_Logger::log_event_str(", filterMode := ");
+field_filterMode.log();
+TTCN_Logger::log_event_str(", pgnEntries := ");
+field_pgnEntries.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void N__MFDB__Create__Entry::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 @IsobusNMMessageTypes.N_MFDB_Create_Entry 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) msgFunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) filterMode().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) pgnEntries().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(), "msgFunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgFunction().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(), "portPair")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          portPair().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(), "filterMode")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          filterMode().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(), "pgnEntries")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          pgnEntries().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 @IsobusNMMessageTypes.N_MFDB_Create_Entry: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusNMMessageTypes.N_MFDB_Create_Entry");
+  }
+}
+
+void N__MFDB__Create__Entry::set_implicit_omit()
+{
+if (msgFunction().is_bound()) msgFunction().set_implicit_omit();
+if (portPair().is_bound()) portPair().set_implicit_omit();
+if (filterMode().is_bound()) filterMode().set_implicit_omit();
+if (pgnEntries().is_bound()) pgnEntries().set_implicit_omit();
+}
+
+void N__MFDB__Create__Entry::encode_text(Text_Buf& text_buf) const
+{
+field_msgFunction.encode_text(text_buf);
+field_portPair.encode_text(text_buf);
+field_filterMode.encode_text(text_buf);
+field_pgnEntries.encode_text(text_buf);
+}
+
+void N__MFDB__Create__Entry::decode_text(Text_Buf& text_buf)
+{
+field_msgFunction.decode_text(text_buf);
+field_portPair.decode_text(text_buf);
+field_filterMode.decode_text(text_buf);
+field_pgnEntries.decode_text(text_buf);
+}
+
+void N__MFDB__Create__Entry::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void N__MFDB__Create__Entry::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int N__MFDB__Create__Entry::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, Function_descr_.raw->forceomit);
+  decoded_field_length = field_msgFunction.RAW_decode(Function_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, PortPair_descr_.raw->forceomit);
+  decoded_field_length = field_portPair.RAW_decode(PortPair_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, e__FilterMode_descr_.raw->forceomit);
+  decoded_field_length = field_filterMode.RAW_decode(e__FilterMode_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, N__MFDB__Create__Entry_pgnEntries_descr_.raw->forceomit);
+  decoded_field_length = field_pgnEntries.RAW_decode(N__MFDB__Create__Entry_pgnEntries_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int N__MFDB__Create__Entry::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, Function_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PortPair_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, e__FilterMode_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, N__MFDB__Create__Entry_pgnEntries_descr_.raw);
+  encoded_length += field_msgFunction.RAW_encode(Function_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_portPair.RAW_encode(PortPair_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_filterMode.RAW_encode(e__FilterMode_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_pgnEntries.RAW_encode(N__MFDB__Create__Entry_pgnEntries_descr_, *myleaf.body.node.nodes[3]);
+  return myleaf.length = encoded_length;
+}
+
+struct N__MFDB__Create__Entry_template::single_value_struct {
+INTEGER_template field_msgFunction;
+PortPair_template field_portPair;
+e__FilterMode_template field_filterMode;
+N__MFDB__Create__Entry_pgnEntries_template field_pgnEntries;
+};
+
+void N__MFDB__Create__Entry_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_msgFunction = ANY_VALUE;
+single_value->field_portPair = ANY_VALUE;
+single_value->field_filterMode = ANY_VALUE;
+single_value->field_pgnEntries = ANY_VALUE;
+}
+}
+}
+
+void N__MFDB__Create__Entry_template::copy_value(const N__MFDB__Create__Entry& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.msgFunction().is_bound()) {
+  single_value->field_msgFunction = other_value.msgFunction();
+} else {
+  single_value->field_msgFunction.clean_up();
+}
+if (other_value.portPair().is_bound()) {
+  single_value->field_portPair = other_value.portPair();
+} else {
+  single_value->field_portPair.clean_up();
+}
+if (other_value.filterMode().is_bound()) {
+  single_value->field_filterMode = other_value.filterMode();
+} else {
+  single_value->field_filterMode.clean_up();
+}
+if (other_value.pgnEntries().is_bound()) {
+  single_value->field_pgnEntries = other_value.pgnEntries();
+} else {
+  single_value->field_pgnEntries.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void N__MFDB__Create__Entry_template::copy_template(const N__MFDB__Create__Entry_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.msgFunction().get_selection()) {
+single_value->field_msgFunction = other_value.msgFunction();
+} else {
+single_value->field_msgFunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.portPair().get_selection()) {
+single_value->field_portPair = other_value.portPair();
+} else {
+single_value->field_portPair.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.filterMode().get_selection()) {
+single_value->field_filterMode = other_value.filterMode();
+} else {
+single_value->field_filterMode.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.pgnEntries().get_selection()) {
+single_value->field_pgnEntries = other_value.pgnEntries();
+} else {
+single_value->field_pgnEntries.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new N__MFDB__Create__Entry_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDB_Create_Entry.");
+break;
+}
+set_selection(other_value);
+}
+
+N__MFDB__Create__Entry_template::N__MFDB__Create__Entry_template()
+{
+}
+
+N__MFDB__Create__Entry_template::N__MFDB__Create__Entry_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+N__MFDB__Create__Entry_template::N__MFDB__Create__Entry_template(const N__MFDB__Create__Entry& other_value)
+{
+copy_value(other_value);
+}
+
+N__MFDB__Create__Entry_template::N__MFDB__Create__Entry_template(const OPTIONAL<N__MFDB__Create__Entry>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__MFDB__Create__Entry&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_MFDB_Create_Entry from an unbound optional field.");
+}
+}
+
+N__MFDB__Create__Entry_template::N__MFDB__Create__Entry_template(const N__MFDB__Create__Entry_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+N__MFDB__Create__Entry_template::~N__MFDB__Create__Entry_template()
+{
+clean_up();
+}
+
+N__MFDB__Create__Entry_template& N__MFDB__Create__Entry_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+N__MFDB__Create__Entry_template& N__MFDB__Create__Entry_template::operator=(const N__MFDB__Create__Entry& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+N__MFDB__Create__Entry_template& N__MFDB__Create__Entry_template::operator=(const OPTIONAL<N__MFDB__Create__Entry>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__MFDB__Create__Entry&)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 @IsobusNMMessageTypes.N_MFDB_Create_Entry.");
+}
+return *this;
+}
+
+N__MFDB__Create__Entry_template& N__MFDB__Create__Entry_template::operator=(const N__MFDB__Create__Entry_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean N__MFDB__Create__Entry_template::match(const N__MFDB__Create__Entry& 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.msgFunction().is_bound()) return FALSE;
+if(!single_value->field_msgFunction.match(other_value.msgFunction(), legacy))return FALSE;
+if(!other_value.portPair().is_bound()) return FALSE;
+if(!single_value->field_portPair.match(other_value.portPair(), legacy))return FALSE;
+if(!other_value.filterMode().is_bound()) return FALSE;
+if(!single_value->field_filterMode.match(other_value.filterMode(), legacy))return FALSE;
+if(!other_value.pgnEntries().is_bound()) return FALSE;
+if(!single_value->field_pgnEntries.match(other_value.pgnEntries(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDB_Create_Entry.");
+}
+return FALSE;
+}
+
+boolean N__MFDB__Create__Entry_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_msgFunction.is_bound()
+
+ ||single_value->field_portPair.is_bound()
+
+ ||single_value->field_filterMode.is_bound()
+
+ ||single_value->field_pgnEntries.is_bound()
+;
+}
+
+boolean N__MFDB__Create__Entry_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_msgFunction.is_value()
+ &&single_value->field_portPair.is_value()
+ &&single_value->field_filterMode.is_value()
+ &&single_value->field_pgnEntries.is_value();
+}
+
+void N__MFDB__Create__Entry_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+N__MFDB__Create__Entry N__MFDB__Create__Entry_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 @IsobusNMMessageTypes.N_MFDB_Create_Entry.");
+N__MFDB__Create__Entry ret_val;
+if (single_value->field_msgFunction.is_bound()) {
+ret_val.msgFunction() = single_value->field_msgFunction.valueof();
+}
+if (single_value->field_portPair.is_bound()) {
+ret_val.portPair() = single_value->field_portPair.valueof();
+}
+if (single_value->field_filterMode.is_bound()) {
+ret_val.filterMode() = single_value->field_filterMode.valueof();
+}
+if (single_value->field_pgnEntries.is_bound()) {
+ret_val.pgnEntries() = single_value->field_pgnEntries.valueof();
+}
+return ret_val;
+}
+
+void N__MFDB__Create__Entry_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.N_MFDB_Create_Entry.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new N__MFDB__Create__Entry_template[list_length];
+}
+
+N__MFDB__Create__Entry_template& N__MFDB__Create__Entry_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_MFDB_Create_Entry.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.N_MFDB_Create_Entry.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& N__MFDB__Create__Entry_template::msgFunction()
+{
+set_specific();
+return single_value->field_msgFunction;
+}
+
+const INTEGER_template& N__MFDB__Create__Entry_template::msgFunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field msgFunction of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Create_Entry.");
+return single_value->field_msgFunction;
+}
+
+PortPair_template& N__MFDB__Create__Entry_template::portPair()
+{
+set_specific();
+return single_value->field_portPair;
+}
+
+const PortPair_template& N__MFDB__Create__Entry_template::portPair() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field portPair of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Create_Entry.");
+return single_value->field_portPair;
+}
+
+e__FilterMode_template& N__MFDB__Create__Entry_template::filterMode()
+{
+set_specific();
+return single_value->field_filterMode;
+}
+
+const e__FilterMode_template& N__MFDB__Create__Entry_template::filterMode() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field filterMode of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Create_Entry.");
+return single_value->field_filterMode;
+}
+
+N__MFDB__Create__Entry_pgnEntries_template& N__MFDB__Create__Entry_template::pgnEntries()
+{
+set_specific();
+return single_value->field_pgnEntries;
+}
+
+const N__MFDB__Create__Entry_pgnEntries_template& N__MFDB__Create__Entry_template::pgnEntries() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field pgnEntries of a non-specific template of type @IsobusNMMessageTypes.N_MFDB_Create_Entry.");
+return single_value->field_pgnEntries;
+}
+
+int N__MFDB__Create__Entry_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Create_Entry 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 @IsobusNMMessageTypes.N_MFDB_Create_Entry 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 @IsobusNMMessageTypes.N_MFDB_Create_Entry containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Create_Entry containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Create_Entry containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDB_Create_Entry containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDB_Create_Entry.");
+  }
+  return 0;
+}
+
+void N__MFDB__Create__Entry_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ msgFunction := ");
+single_value->field_msgFunction.log();
+TTCN_Logger::log_event_str(", portPair := ");
+single_value->field_portPair.log();
+TTCN_Logger::log_event_str(", filterMode := ");
+single_value->field_filterMode.log();
+TTCN_Logger::log_event_str(", pgnEntries := ");
+single_value->field_pgnEntries.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void N__MFDB__Create__Entry_template::log_match(const N__MFDB__Create__Entry& 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_msgFunction.match(match_value.msgFunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".msgFunction");
+single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_portPair.match(match_value.portPair(), legacy)){
+TTCN_Logger::log_logmatch_info(".portPair");
+single_value->field_portPair.log_match(match_value.portPair(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_filterMode.match(match_value.filterMode(), legacy)){
+TTCN_Logger::log_logmatch_info(".filterMode");
+single_value->field_filterMode.log_match(match_value.filterMode(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_pgnEntries.match(match_value.pgnEntries(), legacy)){
+TTCN_Logger::log_logmatch_info(".pgnEntries");
+single_value->field_pgnEntries.log_match(match_value.pgnEntries(), 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("{ msgFunction := ");
+single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy);
+TTCN_Logger::log_event_str(", portPair := ");
+single_value->field_portPair.log_match(match_value.portPair(), legacy);
+TTCN_Logger::log_event_str(", filterMode := ");
+single_value->field_filterMode.log_match(match_value.filterMode(), legacy);
+TTCN_Logger::log_event_str(", pgnEntries := ");
+single_value->field_pgnEntries.log_match(match_value.pgnEntries(), 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 N__MFDB__Create__Entry_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_msgFunction.encode_text(text_buf);
+single_value->field_portPair.encode_text(text_buf);
+single_value->field_filterMode.encode_text(text_buf);
+single_value->field_pgnEntries.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 @IsobusNMMessageTypes.N_MFDB_Create_Entry.");
+}
+}
+
+void N__MFDB__Create__Entry_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_msgFunction.decode_text(text_buf);
+single_value->field_portPair.decode_text(text_buf);
+single_value->field_filterMode.decode_text(text_buf);
+single_value->field_pgnEntries.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 N__MFDB__Create__Entry_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 @IsobusNMMessageTypes.N_MFDB_Create_Entry.");
+}
+}
+
+void N__MFDB__Create__Entry_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: {
+    N__MFDB__Create__Entry_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusNMMessageTypes.N_MFDB_Create_Entry 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) msgFunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) filterMode().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) pgnEntries().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(), "msgFunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgFunction().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(), "portPair")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          portPair().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(), "filterMode")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          filterMode().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(), "pgnEntries")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          pgnEntries().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 @IsobusNMMessageTypes.N_MFDB_Create_Entry: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusNMMessageTypes.N_MFDB_Create_Entry");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void N__MFDB__Create__Entry_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_msgFunction.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Create_Entry");
+single_value->field_portPair.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Create_Entry");
+single_value->field_filterMode.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Create_Entry");
+single_value->field_pgnEntries.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDB_Create_Entry");
+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 : "@IsobusNMMessageTypes.N_MFDB_Create_Entry");
+}
+
+boolean N__MFDB__Create__Entry_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean N__MFDB__Create__Entry_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+PGNEntry::PGNEntry()
+{
+}
+
+PGNEntry::PGNEntry(const INTEGER& par_maxTransferRate,
+    const INTEGER& par_pgn,
+    const NAME& par_name,
+    const OCTETSTRING& par_nameQualifier)
+  :   field_maxTransferRate(par_maxTransferRate),
+  field_pgn(par_pgn),
+  field_name(par_name),
+  field_nameQualifier(par_nameQualifier)
+{
+}
+
+PGNEntry::PGNEntry(const PGNEntry& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.PGNEntry.");
+if (other_value.maxTransferRate().is_bound()) field_maxTransferRate = other_value.maxTransferRate();
+else field_maxTransferRate.clean_up();
+if (other_value.pgn().is_bound()) field_pgn = other_value.pgn();
+else field_pgn.clean_up();
+if (other_value.name().is_bound()) field_name = other_value.name();
+else field_name.clean_up();
+if (other_value.nameQualifier().is_bound()) field_nameQualifier = other_value.nameQualifier();
+else field_nameQualifier.clean_up();
+}
+
+void PGNEntry::clean_up()
+{
+field_maxTransferRate.clean_up();
+field_pgn.clean_up();
+field_name.clean_up();
+field_nameQualifier.clean_up();
+}
+
+const TTCN_Typedescriptor_t* PGNEntry::get_descriptor() const { return &PGNEntry_descr_; }
+PGNEntry& PGNEntry::operator=(const PGNEntry& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.PGNEntry.");
+  if (other_value.maxTransferRate().is_bound()) field_maxTransferRate = other_value.maxTransferRate();
+  else field_maxTransferRate.clean_up();
+  if (other_value.pgn().is_bound()) field_pgn = other_value.pgn();
+  else field_pgn.clean_up();
+  if (other_value.name().is_bound()) field_name = other_value.name();
+  else field_name.clean_up();
+  if (other_value.nameQualifier().is_bound()) field_nameQualifier = other_value.nameQualifier();
+  else field_nameQualifier.clean_up();
+}
+return *this;
+}
+
+boolean PGNEntry::operator==(const PGNEntry& other_value) const
+{
+return field_maxTransferRate==other_value.field_maxTransferRate
+  && field_pgn==other_value.field_pgn
+  && field_name==other_value.field_name
+  && field_nameQualifier==other_value.field_nameQualifier;
+}
+
+boolean PGNEntry::is_bound() const
+{
+return (field_maxTransferRate.is_bound())
+  || (field_pgn.is_bound())
+  || (field_name.is_bound())
+  || (field_nameQualifier.is_bound());
+}
+boolean PGNEntry::is_value() const
+{
+return field_maxTransferRate.is_value()
+  && field_pgn.is_value()
+  && field_name.is_value()
+  && field_nameQualifier.is_value();
+}
+void PGNEntry::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ maxTransferRate := ");
+field_maxTransferRate.log();
+TTCN_Logger::log_event_str(", pgn := ");
+field_pgn.log();
+TTCN_Logger::log_event_str(", name := ");
+field_name.log();
+TTCN_Logger::log_event_str(", nameQualifier := ");
+field_nameQualifier.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void PGNEntry::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 @IsobusNMMessageTypes.PGNEntry 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) maxTransferRate().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) pgn().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) name().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) nameQualifier().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(), "maxTransferRate")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          maxTransferRate().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(), "pgn")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          pgn().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(), "name")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          name().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(), "nameQualifier")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          nameQualifier().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 @IsobusNMMessageTypes.PGNEntry: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusNMMessageTypes.PGNEntry");
+  }
+}
+
+void PGNEntry::set_implicit_omit()
+{
+if (maxTransferRate().is_bound()) maxTransferRate().set_implicit_omit();
+if (pgn().is_bound()) pgn().set_implicit_omit();
+if (name().is_bound()) name().set_implicit_omit();
+if (nameQualifier().is_bound()) nameQualifier().set_implicit_omit();
+}
+
+void PGNEntry::encode_text(Text_Buf& text_buf) const
+{
+field_maxTransferRate.encode_text(text_buf);
+field_pgn.encode_text(text_buf);
+field_name.encode_text(text_buf);
+field_nameQualifier.encode_text(text_buf);
+}
+
+void PGNEntry::decode_text(Text_Buf& text_buf)
+{
+field_maxTransferRate.decode_text(text_buf);
+field_pgn.decode_text(text_buf);
+field_name.decode_text(text_buf);
+field_nameQualifier.decode_text(text_buf);
+}
+
+void PGNEntry::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void PGNEntry::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int PGNEntry::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::INT1_descr_.raw->forceomit);
+  decoded_field_length = field_maxTransferRate.RAW_decode(General__Types::INT1_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, IsobusMessageTypes::PGN_descr_.raw->forceomit);
+  decoded_field_length = field_pgn.RAW_decode(IsobusMessageTypes::PGN_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, NAME_descr_.raw->forceomit);
+  decoded_field_length = field_name.RAW_decode(NAME_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::OCT8_descr_.raw->forceomit);
+  decoded_field_length = field_nameQualifier.RAW_decode(General__Types::OCT8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int PGNEntry::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::INT1_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, IsobusMessageTypes::PGN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, NAME_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, General__Types::OCT8_descr_.raw);
+  encoded_length += field_maxTransferRate.RAW_encode(General__Types::INT1_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_pgn.RAW_encode(IsobusMessageTypes::PGN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_name.RAW_encode(NAME_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_nameQualifier.RAW_encode(General__Types::OCT8_descr_, *myleaf.body.node.nodes[3]);
+  return myleaf.length = encoded_length;
+}
+
+struct PGNEntry_template::single_value_struct {
+INTEGER_template field_maxTransferRate;
+INTEGER_template field_pgn;
+NAME_template field_name;
+OCTETSTRING_template field_nameQualifier;
+};
+
+void PGNEntry_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_maxTransferRate = ANY_VALUE;
+single_value->field_pgn = ANY_VALUE;
+single_value->field_name = ANY_VALUE;
+single_value->field_nameQualifier = ANY_VALUE;
+}
+}
+}
+
+void PGNEntry_template::copy_value(const PGNEntry& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.maxTransferRate().is_bound()) {
+  single_value->field_maxTransferRate = other_value.maxTransferRate();
+} else {
+  single_value->field_maxTransferRate.clean_up();
+}
+if (other_value.pgn().is_bound()) {
+  single_value->field_pgn = other_value.pgn();
+} else {
+  single_value->field_pgn.clean_up();
+}
+if (other_value.name().is_bound()) {
+  single_value->field_name = other_value.name();
+} else {
+  single_value->field_name.clean_up();
+}
+if (other_value.nameQualifier().is_bound()) {
+  single_value->field_nameQualifier = other_value.nameQualifier();
+} else {
+  single_value->field_nameQualifier.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void PGNEntry_template::copy_template(const PGNEntry_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.maxTransferRate().get_selection()) {
+single_value->field_maxTransferRate = other_value.maxTransferRate();
+} else {
+single_value->field_maxTransferRate.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.pgn().get_selection()) {
+single_value->field_pgn = other_value.pgn();
+} else {
+single_value->field_pgn.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.name().get_selection()) {
+single_value->field_name = other_value.name();
+} else {
+single_value->field_name.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.nameQualifier().get_selection()) {
+single_value->field_nameQualifier = other_value.nameQualifier();
+} else {
+single_value->field_nameQualifier.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new PGNEntry_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.PGNEntry.");
+break;
+}
+set_selection(other_value);
+}
+
+PGNEntry_template::PGNEntry_template()
+{
+}
+
+PGNEntry_template::PGNEntry_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+PGNEntry_template::PGNEntry_template(const PGNEntry& other_value)
+{
+copy_value(other_value);
+}
+
+PGNEntry_template::PGNEntry_template(const OPTIONAL<PGNEntry>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const PGNEntry&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusNMMessageTypes.PGNEntry from an unbound optional field.");
+}
+}
+
+PGNEntry_template::PGNEntry_template(const PGNEntry_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+PGNEntry_template::~PGNEntry_template()
+{
+clean_up();
+}
+
+PGNEntry_template& PGNEntry_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+PGNEntry_template& PGNEntry_template::operator=(const PGNEntry& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+PGNEntry_template& PGNEntry_template::operator=(const OPTIONAL<PGNEntry>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const PGNEntry&)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 @IsobusNMMessageTypes.PGNEntry.");
+}
+return *this;
+}
+
+PGNEntry_template& PGNEntry_template::operator=(const PGNEntry_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean PGNEntry_template::match(const PGNEntry& 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.maxTransferRate().is_bound()) return FALSE;
+if(!single_value->field_maxTransferRate.match(other_value.maxTransferRate(), legacy))return FALSE;
+if(!other_value.pgn().is_bound()) return FALSE;
+if(!single_value->field_pgn.match(other_value.pgn(), legacy))return FALSE;
+if(!other_value.name().is_bound()) return FALSE;
+if(!single_value->field_name.match(other_value.name(), legacy))return FALSE;
+if(!other_value.nameQualifier().is_bound()) return FALSE;
+if(!single_value->field_nameQualifier.match(other_value.nameQualifier(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.PGNEntry.");
+}
+return FALSE;
+}
+
+boolean PGNEntry_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_maxTransferRate.is_bound()
+
+ ||single_value->field_pgn.is_bound()
+
+ ||single_value->field_name.is_bound()
+
+ ||single_value->field_nameQualifier.is_bound()
+;
+}
+
+boolean PGNEntry_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_maxTransferRate.is_value()
+ &&single_value->field_pgn.is_value()
+ &&single_value->field_name.is_value()
+ &&single_value->field_nameQualifier.is_value();
+}
+
+void PGNEntry_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+PGNEntry PGNEntry_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 @IsobusNMMessageTypes.PGNEntry.");
+PGNEntry ret_val;
+if (single_value->field_maxTransferRate.is_bound()) {
+ret_val.maxTransferRate() = single_value->field_maxTransferRate.valueof();
+}
+if (single_value->field_pgn.is_bound()) {
+ret_val.pgn() = single_value->field_pgn.valueof();
+}
+if (single_value->field_name.is_bound()) {
+ret_val.name() = single_value->field_name.valueof();
+}
+if (single_value->field_nameQualifier.is_bound()) {
+ret_val.nameQualifier() = single_value->field_nameQualifier.valueof();
+}
+return ret_val;
+}
+
+void PGNEntry_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.PGNEntry.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new PGNEntry_template[list_length];
+}
+
+PGNEntry_template& PGNEntry_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.PGNEntry.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.PGNEntry.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& PGNEntry_template::maxTransferRate()
+{
+set_specific();
+return single_value->field_maxTransferRate;
+}
+
+const INTEGER_template& PGNEntry_template::maxTransferRate() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field maxTransferRate of a non-specific template of type @IsobusNMMessageTypes.PGNEntry.");
+return single_value->field_maxTransferRate;
+}
+
+INTEGER_template& PGNEntry_template::pgn()
+{
+set_specific();
+return single_value->field_pgn;
+}
+
+const INTEGER_template& PGNEntry_template::pgn() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field pgn of a non-specific template of type @IsobusNMMessageTypes.PGNEntry.");
+return single_value->field_pgn;
+}
+
+NAME_template& PGNEntry_template::name()
+{
+set_specific();
+return single_value->field_name;
+}
+
+const NAME_template& PGNEntry_template::name() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field name of a non-specific template of type @IsobusNMMessageTypes.PGNEntry.");
+return single_value->field_name;
+}
+
+OCTETSTRING_template& PGNEntry_template::nameQualifier()
+{
+set_specific();
+return single_value->field_nameQualifier;
+}
+
+const OCTETSTRING_template& PGNEntry_template::nameQualifier() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field nameQualifier of a non-specific template of type @IsobusNMMessageTypes.PGNEntry.");
+return single_value->field_nameQualifier;
+}
+
+int PGNEntry_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.PGNEntry 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 @IsobusNMMessageTypes.PGNEntry 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 @IsobusNMMessageTypes.PGNEntry containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.PGNEntry containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.PGNEntry containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.PGNEntry containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.PGNEntry.");
+  }
+  return 0;
+}
+
+void PGNEntry_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ maxTransferRate := ");
+single_value->field_maxTransferRate.log();
+TTCN_Logger::log_event_str(", pgn := ");
+single_value->field_pgn.log();
+TTCN_Logger::log_event_str(", name := ");
+single_value->field_name.log();
+TTCN_Logger::log_event_str(", nameQualifier := ");
+single_value->field_nameQualifier.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void PGNEntry_template::log_match(const PGNEntry& 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_maxTransferRate.match(match_value.maxTransferRate(), legacy)){
+TTCN_Logger::log_logmatch_info(".maxTransferRate");
+single_value->field_maxTransferRate.log_match(match_value.maxTransferRate(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_pgn.match(match_value.pgn(), legacy)){
+TTCN_Logger::log_logmatch_info(".pgn");
+single_value->field_pgn.log_match(match_value.pgn(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_name.match(match_value.name(), legacy)){
+TTCN_Logger::log_logmatch_info(".name");
+single_value->field_name.log_match(match_value.name(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_nameQualifier.match(match_value.nameQualifier(), legacy)){
+TTCN_Logger::log_logmatch_info(".nameQualifier");
+single_value->field_nameQualifier.log_match(match_value.nameQualifier(), 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("{ maxTransferRate := ");
+single_value->field_maxTransferRate.log_match(match_value.maxTransferRate(), legacy);
+TTCN_Logger::log_event_str(", pgn := ");
+single_value->field_pgn.log_match(match_value.pgn(), legacy);
+TTCN_Logger::log_event_str(", name := ");
+single_value->field_name.log_match(match_value.name(), legacy);
+TTCN_Logger::log_event_str(", nameQualifier := ");
+single_value->field_nameQualifier.log_match(match_value.nameQualifier(), 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 PGNEntry_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_maxTransferRate.encode_text(text_buf);
+single_value->field_pgn.encode_text(text_buf);
+single_value->field_name.encode_text(text_buf);
+single_value->field_nameQualifier.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 @IsobusNMMessageTypes.PGNEntry.");
+}
+}
+
+void PGNEntry_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_maxTransferRate.decode_text(text_buf);
+single_value->field_pgn.decode_text(text_buf);
+single_value->field_name.decode_text(text_buf);
+single_value->field_nameQualifier.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 PGNEntry_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 @IsobusNMMessageTypes.PGNEntry.");
+}
+}
+
+void PGNEntry_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: {
+    PGNEntry_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusNMMessageTypes.PGNEntry 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) maxTransferRate().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) pgn().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) name().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) nameQualifier().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(), "maxTransferRate")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          maxTransferRate().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(), "pgn")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          pgn().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(), "name")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          name().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(), "nameQualifier")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          nameQualifier().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 @IsobusNMMessageTypes.PGNEntry: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusNMMessageTypes.PGNEntry");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void PGNEntry_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_maxTransferRate.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.PGNEntry");
+single_value->field_pgn.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.PGNEntry");
+single_value->field_name.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.PGNEntry");
+single_value->field_nameQualifier.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.PGNEntry");
+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 : "@IsobusNMMessageTypes.PGNEntry");
+}
+
+boolean PGNEntry_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean PGNEntry_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 PGNEntry N__MFDBNQ__Add_pgnEntries::UNBOUND_ELEM;
+N__MFDBNQ__Add_pgnEntries::N__MFDBNQ__Add_pgnEntries()
+{
+val_ptr = NULL;
+}
+
+N__MFDBNQ__Add_pgnEntries::N__MFDBNQ__Add_pgnEntries(null_type)
+{
+val_ptr = new recordof_setof_struct;
+val_ptr->ref_count = 1;
+val_ptr->n_elements = 0;
+val_ptr->value_elements = NULL;
+}
+
+N__MFDBNQ__Add_pgnEntries::N__MFDBNQ__Add_pgnEntries(const N__MFDBNQ__Add_pgnEntries& other_value)
+{
+if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries.");
+val_ptr = other_value.val_ptr;
+val_ptr->ref_count++;
+}
+
+N__MFDBNQ__Add_pgnEntries::~N__MFDBNQ__Add_pgnEntries()
+{
+clean_up();
+if (val_ptr != NULL) val_ptr = NULL;
+}
+
+void N__MFDBNQ__Add_pgnEntries::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.");
+}
+}
+
+N__MFDBNQ__Add_pgnEntries& N__MFDBNQ__Add_pgnEntries::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;
+}
+
+N__MFDBNQ__Add_pgnEntries& N__MFDBNQ__Add_pgnEntries::operator=(const N__MFDBNQ__Add_pgnEntries& other_value)
+{
+if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries.");
+if (this != &other_value) {
+clean_up();
+val_ptr = other_value.val_ptr;
+val_ptr->ref_count++;
+}
+return *this;
+}
+
+boolean N__MFDBNQ__Add_pgnEntries::operator==(null_type) const
+{
+if (val_ptr == NULL)
+TTCN_error("The left operand of comparison is an unbound value of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries.");
+return val_ptr->n_elements == 0 ;
+}
+
+boolean N__MFDBNQ__Add_pgnEntries::operator==(const N__MFDBNQ__Add_pgnEntries& other_value) const
+{
+if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries.");
+if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries.");
+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;
+}
+
+PGNEntry& N__MFDBNQ__Add_pgnEntries::operator[](int index_value)
+{
+if (index_value < 0) TTCN_error("Accessing an element of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries 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 = (PGNEntry**)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 PGNEntry(*(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 PGNEntry;
+}
+return *val_ptr->value_elements[index_value];
+}
+
+PGNEntry& N__MFDBNQ__Add_pgnEntries::operator[](const INTEGER& index_value)
+{
+index_value.must_bound("Using an unbound integer value for indexing a value of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries.");
+return (*this)[(int)index_value];
+}
+
+const PGNEntry& N__MFDBNQ__Add_pgnEntries::operator[](int index_value) const
+{
+if (val_ptr == NULL)
+TTCN_error("Accessing an element in an unbound value of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries.");
+if (index_value < 0) TTCN_error("Accessing an element of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries using a negative index: %d.", index_value);
+if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries: 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 PGNEntry& N__MFDBNQ__Add_pgnEntries::operator[](const INTEGER& index_value) const
+{
+index_value.must_bound("Using an unbound integer value for indexing a value of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries.");
+return (*this)[(int)index_value];
+}
+
+N__MFDBNQ__Add_pgnEntries N__MFDBNQ__Add_pgnEntries::operator<<=(int rotate_count) const
+{
+return *this >>= (-rotate_count);
+}
+
+N__MFDBNQ__Add_pgnEntries N__MFDBNQ__Add_pgnEntries::operator<<=(const INTEGER& rotate_count) const
+{
+rotate_count.must_bound("Unbound integer operand of rotate left operator.");
+return *this >>= (int)(-rotate_count);
+}
+
+N__MFDBNQ__Add_pgnEntries N__MFDBNQ__Add_pgnEntries::operator>>=(const INTEGER& rotate_count) const
+{
+rotate_count.must_bound("Unbound integer operand of rotate right operator.");
+return *this >>= (int)rotate_count;
+}
+
+N__MFDBNQ__Add_pgnEntries N__MFDBNQ__Add_pgnEntries::operator>>=(int rotate_count) const
+{
+if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries.");
+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;
+N__MFDBNQ__Add_pgnEntries 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 PGNEntry(*val_ptr->value_elements[i]);
+}
+}
+return ret_val;
+}
+
+N__MFDBNQ__Add_pgnEntries N__MFDBNQ__Add_pgnEntries::operator+(const N__MFDBNQ__Add_pgnEntries& other_value) const
+{
+if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries concatenation.");
+if (val_ptr->n_elements == 0) return other_value;
+if (other_value.val_ptr->n_elements == 0) return *this;
+N__MFDBNQ__Add_pgnEntries 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 PGNEntry(*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 PGNEntry(*other_value.val_ptr->value_elements[i]);
+}
+}
+return ret_val;
+}
+
+N__MFDBNQ__Add_pgnEntries N__MFDBNQ__Add_pgnEntries::substr(int index, int returncount) const
+{
+if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries.");
+check_substr_arguments(val_ptr->n_elements, index, returncount, "@IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries","element");
+N__MFDBNQ__Add_pgnEntries 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 PGNEntry(*val_ptr->value_elements[i+index]);
+}
+}
+return ret_val;
+}
+
+N__MFDBNQ__Add_pgnEntries N__MFDBNQ__Add_pgnEntries::replace(int index, int len, const N__MFDBNQ__Add_pgnEntries& repl) const
+{
+if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries.");
+if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries.");
+check_replace_arguments(val_ptr->n_elements, index, len, "@IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries","element");
+N__MFDBNQ__Add_pgnEntries 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 PGNEntry(*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 PGNEntry(*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 PGNEntry(*val_ptr->value_elements[index+i+len]);
+}
+}
+return ret_val;
+}
+
+N__MFDBNQ__Add_pgnEntries N__MFDBNQ__Add_pgnEntries::replace(int index, int len, const N__MFDBNQ__Add_pgnEntries_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 N__MFDBNQ__Add_pgnEntries::set_size(int new_size)
+{
+if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries.");
+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 = (PGNEntry**)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 PGNEntry(*(val_ptr->value_elements[elem_count]));
+}
+}
+clean_up();
+val_ptr = new_val_ptr;
+}
+if (new_size > val_ptr->n_elements) {
+val_ptr->value_elements = (PGNEntry**)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 @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries: %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 = (PGNEntry**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size);
+val_ptr->n_elements = new_size;
+}
+}
+
+boolean N__MFDBNQ__Add_pgnEntries::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 N__MFDBNQ__Add_pgnEntries::size_of() const
+{
+if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries.");
+return val_ptr->n_elements;
+}
+
+int N__MFDBNQ__Add_pgnEntries::lengthof() const
+{
+if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries.");
+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 N__MFDBNQ__Add_pgnEntries::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 N__MFDBNQ__Add_pgnEntries::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", "@IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries");
+    }
+    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", "@IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries");
+    }
+    break;
+  default:
+    TTCN_error("Internal error: Unknown operation type.");
+  }
+}
+
+void N__MFDBNQ__Add_pgnEntries::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 N__MFDBNQ__Add_pgnEntries::encode_text(Text_Buf& text_buf) const
+{
+if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries.");
+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 N__MFDBNQ__Add_pgnEntries::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 @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries.");
+val_ptr->value_elements = (PGNEntry**)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 PGNEntry;
+val_ptr->value_elements[elem_count]->decode_text(text_buf);
+}
+}
+
+void N__MFDBNQ__Add_pgnEntries::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void N__MFDBNQ__Add_pgnEntries::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int N__MFDBNQ__Add_pgnEntries::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;
+    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) 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 N__MFDBNQ__Add_pgnEntries::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 N__MFDBNQ__Add_pgnEntries_template::copy_value(const N__MFDBNQ__Add_pgnEntries& other_value)
+{
+if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries with an unbound value.");
+single_value.n_elements = other_value.size_of();
+single_value.value_elements = (PGNEntry_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 PGNEntry_template(other_value[elem_count]);
+} else {
+single_value.value_elements[elem_count] = new PGNEntry_template;
+}
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void N__MFDBNQ__Add_pgnEntries_template::copy_template(const N__MFDBNQ__Add_pgnEntries_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 = (PGNEntry_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 PGNEntry_template(*other_value.single_value.value_elements[elem_count]);
+} else {
+single_value.value_elements[elem_count] = new PGNEntry_template;
+}
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new N__MFDBNQ__Add_pgnEntries_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries.");
+break;
+}
+set_selection(other_value);
+}
+
+boolean N__MFDBNQ__Add_pgnEntries_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 N__MFDBNQ__Add_pgnEntries_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const N__MFDBNQ__Add_pgnEntries*)value_ptr)[value_index], legacy);
+else return ((const N__MFDBNQ__Add_pgnEntries_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit();
+}
+
+N__MFDBNQ__Add_pgnEntries_template::N__MFDBNQ__Add_pgnEntries_template()
+{
+}
+
+N__MFDBNQ__Add_pgnEntries_template::N__MFDBNQ__Add_pgnEntries_template(template_sel other_value)
+ : Record_Of_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+N__MFDBNQ__Add_pgnEntries_template::N__MFDBNQ__Add_pgnEntries_template(null_type)
+ : Record_Of_Template(SPECIFIC_VALUE)
+{
+single_value.n_elements = 0;
+single_value.value_elements = NULL;
+}
+
+N__MFDBNQ__Add_pgnEntries_template::N__MFDBNQ__Add_pgnEntries_template(const N__MFDBNQ__Add_pgnEntries& other_value)
+{
+copy_value(other_value);
+}
+
+N__MFDBNQ__Add_pgnEntries_template::N__MFDBNQ__Add_pgnEntries_template(const OPTIONAL<N__MFDBNQ__Add_pgnEntries>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__MFDBNQ__Add_pgnEntries&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries from an unbound optional field.");
+}
+}
+
+N__MFDBNQ__Add_pgnEntries_template::N__MFDBNQ__Add_pgnEntries_template(const N__MFDBNQ__Add_pgnEntries_template& other_value)
+ : Record_Of_Template()
+{
+copy_template(other_value);
+}
+
+N__MFDBNQ__Add_pgnEntries_template::~N__MFDBNQ__Add_pgnEntries_template()
+{
+clean_up();
+}
+
+void N__MFDBNQ__Add_pgnEntries_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:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+N__MFDBNQ__Add_pgnEntries_template& N__MFDBNQ__Add_pgnEntries_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+N__MFDBNQ__Add_pgnEntries_template& N__MFDBNQ__Add_pgnEntries_template::operator=(null_type)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value.n_elements = 0;
+single_value.value_elements = NULL;
+return *this;
+}
+
+N__MFDBNQ__Add_pgnEntries_template& N__MFDBNQ__Add_pgnEntries_template::operator=(const N__MFDBNQ__Add_pgnEntries& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+N__MFDBNQ__Add_pgnEntries_template& N__MFDBNQ__Add_pgnEntries_template::operator=(const OPTIONAL<N__MFDBNQ__Add_pgnEntries>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__MFDBNQ__Add_pgnEntries&)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 @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries.");
+}
+return *this;
+}
+
+N__MFDBNQ__Add_pgnEntries_template& N__MFDBNQ__Add_pgnEntries_template::operator=(const N__MFDBNQ__Add_pgnEntries_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+PGNEntry_template& N__MFDBNQ__Add_pgnEntries_template::operator[](int index_value)
+{
+if (index_value < 0) TTCN_error("Accessing an element of a template for type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries 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 @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries.");
+    break;
+}
+return *single_value.value_elements[index_value];
+}
+
+PGNEntry_template& N__MFDBNQ__Add_pgnEntries_template::operator[](const INTEGER& index_value)
+{
+index_value.must_bound("Using an unbound integer value for indexing a template of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries.");
+return (*this)[(int)index_value];
+}
+
+const PGNEntry_template& N__MFDBNQ__Add_pgnEntries_template::operator[](int index_value) const
+{
+if (index_value < 0) TTCN_error("Accessing an element of a template for type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries using a negative index: %d.", index_value);
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries.");
+if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries: 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 PGNEntry_template& N__MFDBNQ__Add_pgnEntries_template::operator[](const INTEGER& index_value) const
+{
+index_value.must_bound("Using an unbound integer value for indexing a template of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries.");
+return (*this)[(int)index_value];
+}
+
+void N__MFDBNQ__Add_pgnEntries_template::set_size(int new_size)
+{
+if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries.");
+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 = (PGNEntry_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 PGNEntry_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 PGNEntry_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 = (PGNEntry_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size);
+single_value.n_elements = new_size;
+}
+}
+
+int N__MFDBNQ__Add_pgnEntries_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 N__MFDBNQ__Add_pgnEntries_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 @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries 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 @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries 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 @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries 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 @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries 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 @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries 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 @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries containing complemented list.", op_name);
+default:
+  TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries.", op_name);
+}
+return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries");
+}
+
+boolean N__MFDBNQ__Add_pgnEntries_template::match(const N__MFDBNQ__Add_pgnEntries& 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;
+default:
+TTCN_error("Matching with an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries.");
+}
+return FALSE;
+}
+
+boolean N__MFDBNQ__Add_pgnEntries_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;
+}
+
+N__MFDBNQ__Add_pgnEntries N__MFDBNQ__Add_pgnEntries_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 @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries.");
+N__MFDBNQ__Add_pgnEntries 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;
+}
+
+N__MFDBNQ__Add_pgnEntries N__MFDBNQ__Add_pgnEntries_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);
+}
+
+N__MFDBNQ__Add_pgnEntries N__MFDBNQ__Add_pgnEntries_template::replace(int index, int len, const N__MFDBNQ__Add_pgnEntries_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());
+}
+
+N__MFDBNQ__Add_pgnEntries N__MFDBNQ__Add_pgnEntries_template::replace(int index, int len, const N__MFDBNQ__Add_pgnEntries& 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 N__MFDBNQ__Add_pgnEntries_template::set_type(template_sel template_type, unsigned int list_length)
+{
+clean_up();
+switch (template_type) {
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = list_length;
+value_list.list_value = new N__MFDBNQ__Add_pgnEntries_template[list_length];
+break;
+default:
+TTCN_error("Internal error: Setting an invalid type for a template of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries.");
+}
+set_selection(template_type);
+}
+
+N__MFDBNQ__Add_pgnEntries_template& N__MFDBNQ__Add_pgnEntries_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries.");
+return value_list.list_value[list_index];
+}
+
+void N__MFDBNQ__Add_pgnEntries_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 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;
+default:
+log_generic();
+}
+log_restricted();
+log_ifpresent();
+}
+
+void N__MFDBNQ__Add_pgnEntries_template::log_match(const N__MFDBNQ__Add_pgnEntries& 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 N__MFDBNQ__Add_pgnEntries_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 @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries.");
+}
+}
+
+void N__MFDBNQ__Add_pgnEntries_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 @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries.");
+single_value.value_elements = (PGNEntry_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 PGNEntry_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 N__MFDBNQ__Add_pgnEntries_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 @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries.");
+}
+}
+
+boolean N__MFDBNQ__Add_pgnEntries_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean N__MFDBNQ__Add_pgnEntries_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 N__MFDBNQ__Add_pgnEntries_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: {
+    N__MFDBNQ__Add_pgnEntries_template temp;
+    temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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;
+  default:
+    param.type_error("record of template", "@IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries");
+  }
+  is_ifpresent = param.get_ifpresent();
+  set_length_range(param);
+}
+
+void N__MFDBNQ__Add_pgnEntries_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 : "@IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries");
+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 : "@IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries");
+}
+
+boolean N__MFDBNQ__Add_pgnEntries_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);
+}
+}
+N__MFDBNQ__Add::N__MFDBNQ__Add()
+{
+}
+
+N__MFDBNQ__Add::N__MFDBNQ__Add(const INTEGER& par_msgFunction,
+    const PortPair& par_portPair,
+    const e__FilterMode& par_filterMode,
+    const OCTETSTRING& par_reserved4,
+    const N__MFDBNQ__Add_pgnEntries& par_pgnEntries)
+  :   field_msgFunction(par_msgFunction),
+  field_portPair(par_portPair),
+  field_filterMode(par_filterMode),
+  field_reserved4(par_reserved4),
+  field_pgnEntries(par_pgnEntries)
+{
+}
+
+N__MFDBNQ__Add::N__MFDBNQ__Add(const N__MFDBNQ__Add& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_MFDBNQ_Add.");
+if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction();
+else field_msgFunction.clean_up();
+if (other_value.portPair().is_bound()) field_portPair = other_value.portPair();
+else field_portPair.clean_up();
+if (other_value.filterMode().is_bound()) field_filterMode = other_value.filterMode();
+else field_filterMode.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.pgnEntries().is_bound()) field_pgnEntries = other_value.pgnEntries();
+else field_pgnEntries.clean_up();
+}
+
+void N__MFDBNQ__Add::clean_up()
+{
+field_msgFunction.clean_up();
+field_portPair.clean_up();
+field_filterMode.clean_up();
+field_reserved4.clean_up();
+field_pgnEntries.clean_up();
+}
+
+const TTCN_Typedescriptor_t* N__MFDBNQ__Add::get_descriptor() const { return &N__MFDBNQ__Add_descr_; }
+N__MFDBNQ__Add& N__MFDBNQ__Add::operator=(const N__MFDBNQ__Add& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.N_MFDBNQ_Add.");
+  if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction();
+  else field_msgFunction.clean_up();
+  if (other_value.portPair().is_bound()) field_portPair = other_value.portPair();
+  else field_portPair.clean_up();
+  if (other_value.filterMode().is_bound()) field_filterMode = other_value.filterMode();
+  else field_filterMode.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.pgnEntries().is_bound()) field_pgnEntries = other_value.pgnEntries();
+  else field_pgnEntries.clean_up();
+}
+return *this;
+}
+
+boolean N__MFDBNQ__Add::operator==(const N__MFDBNQ__Add& other_value) const
+{
+return field_msgFunction==other_value.field_msgFunction
+  && field_portPair==other_value.field_portPair
+  && field_filterMode==other_value.field_filterMode
+  && field_reserved4==other_value.field_reserved4
+  && field_pgnEntries==other_value.field_pgnEntries;
+}
+
+boolean N__MFDBNQ__Add::is_bound() const
+{
+return (field_msgFunction.is_bound())
+  || (field_portPair.is_bound())
+  || (field_filterMode.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_pgnEntries.is_bound());
+}
+boolean N__MFDBNQ__Add::is_value() const
+{
+return field_msgFunction.is_value()
+  && field_portPair.is_value()
+  && field_filterMode.is_value()
+  && field_reserved4.is_value()
+  && field_pgnEntries.is_value();
+}
+void N__MFDBNQ__Add::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ msgFunction := ");
+field_msgFunction.log();
+TTCN_Logger::log_event_str(", portPair := ");
+field_portPair.log();
+TTCN_Logger::log_event_str(", filterMode := ");
+field_filterMode.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", pgnEntries := ");
+field_pgnEntries.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void N__MFDBNQ__Add::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 @IsobusNMMessageTypes.N_MFDBNQ_Add 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) msgFunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) filterMode().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) pgnEntries().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(), "msgFunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgFunction().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(), "portPair")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          portPair().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(), "filterMode")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          filterMode().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "pgnEntries")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          pgnEntries().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 @IsobusNMMessageTypes.N_MFDBNQ_Add: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusNMMessageTypes.N_MFDBNQ_Add");
+  }
+}
+
+void N__MFDBNQ__Add::set_implicit_omit()
+{
+if (msgFunction().is_bound()) msgFunction().set_implicit_omit();
+if (portPair().is_bound()) portPair().set_implicit_omit();
+if (filterMode().is_bound()) filterMode().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (pgnEntries().is_bound()) pgnEntries().set_implicit_omit();
+}
+
+void N__MFDBNQ__Add::encode_text(Text_Buf& text_buf) const
+{
+field_msgFunction.encode_text(text_buf);
+field_portPair.encode_text(text_buf);
+field_filterMode.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_pgnEntries.encode_text(text_buf);
+}
+
+void N__MFDBNQ__Add::decode_text(Text_Buf& text_buf)
+{
+field_msgFunction.decode_text(text_buf);
+field_portPair.decode_text(text_buf);
+field_filterMode.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_pgnEntries.decode_text(text_buf);
+}
+
+void N__MFDBNQ__Add::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void N__MFDBNQ__Add::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int N__MFDBNQ__Add::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, Function_descr_.raw->forceomit);
+  decoded_field_length = field_msgFunction.RAW_decode(Function_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, PortPair_descr_.raw->forceomit);
+  decoded_field_length = field_portPair.RAW_decode(PortPair_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, e__FilterMode_descr_.raw->forceomit);
+  decoded_field_length = field_filterMode.RAW_decode(e__FilterMode_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, N__MFDBNQ__Add_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(N__MFDBNQ__Add_reserved4_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, N__MFDBNQ__Add_pgnEntries_descr_.raw->forceomit);
+  decoded_field_length = field_pgnEntries.RAW_decode(N__MFDBNQ__Add_pgnEntries_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 N__MFDBNQ__Add::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, Function_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PortPair_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, e__FilterMode_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, N__MFDBNQ__Add_reserved4_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, N__MFDBNQ__Add_pgnEntries_descr_.raw);
+  encoded_length += field_msgFunction.RAW_encode(Function_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_portPair.RAW_encode(PortPair_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_filterMode.RAW_encode(e__FilterMode_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved4.RAW_encode(N__MFDBNQ__Add_reserved4_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_pgnEntries.RAW_encode(N__MFDBNQ__Add_pgnEntries_descr_, *myleaf.body.node.nodes[4]);
+  return myleaf.length = encoded_length;
+}
+
+struct N__MFDBNQ__Add_template::single_value_struct {
+INTEGER_template field_msgFunction;
+PortPair_template field_portPair;
+e__FilterMode_template field_filterMode;
+OCTETSTRING_template field_reserved4;
+N__MFDBNQ__Add_pgnEntries_template field_pgnEntries;
+};
+
+void N__MFDBNQ__Add_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_msgFunction = ANY_VALUE;
+single_value->field_portPair = ANY_VALUE;
+single_value->field_filterMode = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_pgnEntries = ANY_VALUE;
+}
+}
+}
+
+void N__MFDBNQ__Add_template::copy_value(const N__MFDBNQ__Add& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.msgFunction().is_bound()) {
+  single_value->field_msgFunction = other_value.msgFunction();
+} else {
+  single_value->field_msgFunction.clean_up();
+}
+if (other_value.portPair().is_bound()) {
+  single_value->field_portPair = other_value.portPair();
+} else {
+  single_value->field_portPair.clean_up();
+}
+if (other_value.filterMode().is_bound()) {
+  single_value->field_filterMode = other_value.filterMode();
+} else {
+  single_value->field_filterMode.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.pgnEntries().is_bound()) {
+  single_value->field_pgnEntries = other_value.pgnEntries();
+} else {
+  single_value->field_pgnEntries.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void N__MFDBNQ__Add_template::copy_template(const N__MFDBNQ__Add_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.msgFunction().get_selection()) {
+single_value->field_msgFunction = other_value.msgFunction();
+} else {
+single_value->field_msgFunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.portPair().get_selection()) {
+single_value->field_portPair = other_value.portPair();
+} else {
+single_value->field_portPair.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.filterMode().get_selection()) {
+single_value->field_filterMode = other_value.filterMode();
+} else {
+single_value->field_filterMode.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.pgnEntries().get_selection()) {
+single_value->field_pgnEntries = other_value.pgnEntries();
+} else {
+single_value->field_pgnEntries.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new N__MFDBNQ__Add_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDBNQ_Add.");
+break;
+}
+set_selection(other_value);
+}
+
+N__MFDBNQ__Add_template::N__MFDBNQ__Add_template()
+{
+}
+
+N__MFDBNQ__Add_template::N__MFDBNQ__Add_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+N__MFDBNQ__Add_template::N__MFDBNQ__Add_template(const N__MFDBNQ__Add& other_value)
+{
+copy_value(other_value);
+}
+
+N__MFDBNQ__Add_template::N__MFDBNQ__Add_template(const OPTIONAL<N__MFDBNQ__Add>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__MFDBNQ__Add&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_MFDBNQ_Add from an unbound optional field.");
+}
+}
+
+N__MFDBNQ__Add_template::N__MFDBNQ__Add_template(const N__MFDBNQ__Add_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+N__MFDBNQ__Add_template::~N__MFDBNQ__Add_template()
+{
+clean_up();
+}
+
+N__MFDBNQ__Add_template& N__MFDBNQ__Add_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+N__MFDBNQ__Add_template& N__MFDBNQ__Add_template::operator=(const N__MFDBNQ__Add& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+N__MFDBNQ__Add_template& N__MFDBNQ__Add_template::operator=(const OPTIONAL<N__MFDBNQ__Add>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__MFDBNQ__Add&)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 @IsobusNMMessageTypes.N_MFDBNQ_Add.");
+}
+return *this;
+}
+
+N__MFDBNQ__Add_template& N__MFDBNQ__Add_template::operator=(const N__MFDBNQ__Add_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean N__MFDBNQ__Add_template::match(const N__MFDBNQ__Add& 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.msgFunction().is_bound()) return FALSE;
+if(!single_value->field_msgFunction.match(other_value.msgFunction(), legacy))return FALSE;
+if(!other_value.portPair().is_bound()) return FALSE;
+if(!single_value->field_portPair.match(other_value.portPair(), legacy))return FALSE;
+if(!other_value.filterMode().is_bound()) return FALSE;
+if(!single_value->field_filterMode.match(other_value.filterMode(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.pgnEntries().is_bound()) return FALSE;
+if(!single_value->field_pgnEntries.match(other_value.pgnEntries(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDBNQ_Add.");
+}
+return FALSE;
+}
+
+boolean N__MFDBNQ__Add_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_msgFunction.is_bound()
+
+ ||single_value->field_portPair.is_bound()
+
+ ||single_value->field_filterMode.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_pgnEntries.is_bound()
+;
+}
+
+boolean N__MFDBNQ__Add_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_msgFunction.is_value()
+ &&single_value->field_portPair.is_value()
+ &&single_value->field_filterMode.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_pgnEntries.is_value();
+}
+
+void N__MFDBNQ__Add_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+N__MFDBNQ__Add N__MFDBNQ__Add_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 @IsobusNMMessageTypes.N_MFDBNQ_Add.");
+N__MFDBNQ__Add ret_val;
+if (single_value->field_msgFunction.is_bound()) {
+ret_val.msgFunction() = single_value->field_msgFunction.valueof();
+}
+if (single_value->field_portPair.is_bound()) {
+ret_val.portPair() = single_value->field_portPair.valueof();
+}
+if (single_value->field_filterMode.is_bound()) {
+ret_val.filterMode() = single_value->field_filterMode.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_pgnEntries.is_bound()) {
+ret_val.pgnEntries() = single_value->field_pgnEntries.valueof();
+}
+return ret_val;
+}
+
+void N__MFDBNQ__Add_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.N_MFDBNQ_Add.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new N__MFDBNQ__Add_template[list_length];
+}
+
+N__MFDBNQ__Add_template& N__MFDBNQ__Add_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_MFDBNQ_Add.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.N_MFDBNQ_Add.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& N__MFDBNQ__Add_template::msgFunction()
+{
+set_specific();
+return single_value->field_msgFunction;
+}
+
+const INTEGER_template& N__MFDBNQ__Add_template::msgFunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field msgFunction of a non-specific template of type @IsobusNMMessageTypes.N_MFDBNQ_Add.");
+return single_value->field_msgFunction;
+}
+
+PortPair_template& N__MFDBNQ__Add_template::portPair()
+{
+set_specific();
+return single_value->field_portPair;
+}
+
+const PortPair_template& N__MFDBNQ__Add_template::portPair() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field portPair of a non-specific template of type @IsobusNMMessageTypes.N_MFDBNQ_Add.");
+return single_value->field_portPair;
+}
+
+e__FilterMode_template& N__MFDBNQ__Add_template::filterMode()
+{
+set_specific();
+return single_value->field_filterMode;
+}
+
+const e__FilterMode_template& N__MFDBNQ__Add_template::filterMode() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field filterMode of a non-specific template of type @IsobusNMMessageTypes.N_MFDBNQ_Add.");
+return single_value->field_filterMode;
+}
+
+OCTETSTRING_template& N__MFDBNQ__Add_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& N__MFDBNQ__Add_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusNMMessageTypes.N_MFDBNQ_Add.");
+return single_value->field_reserved4;
+}
+
+N__MFDBNQ__Add_pgnEntries_template& N__MFDBNQ__Add_template::pgnEntries()
+{
+set_specific();
+return single_value->field_pgnEntries;
+}
+
+const N__MFDBNQ__Add_pgnEntries_template& N__MFDBNQ__Add_template::pgnEntries() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field pgnEntries of a non-specific template of type @IsobusNMMessageTypes.N_MFDBNQ_Add.");
+return single_value->field_pgnEntries;
+}
+
+int N__MFDBNQ__Add_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDBNQ_Add 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 @IsobusNMMessageTypes.N_MFDBNQ_Add 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 @IsobusNMMessageTypes.N_MFDBNQ_Add containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDBNQ_Add containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDBNQ_Add containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_MFDBNQ_Add containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_MFDBNQ_Add.");
+  }
+  return 0;
+}
+
+void N__MFDBNQ__Add_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ msgFunction := ");
+single_value->field_msgFunction.log();
+TTCN_Logger::log_event_str(", portPair := ");
+single_value->field_portPair.log();
+TTCN_Logger::log_event_str(", filterMode := ");
+single_value->field_filterMode.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", pgnEntries := ");
+single_value->field_pgnEntries.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void N__MFDBNQ__Add_template::log_match(const N__MFDBNQ__Add& 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_msgFunction.match(match_value.msgFunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".msgFunction");
+single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_portPair.match(match_value.portPair(), legacy)){
+TTCN_Logger::log_logmatch_info(".portPair");
+single_value->field_portPair.log_match(match_value.portPair(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_filterMode.match(match_value.filterMode(), legacy)){
+TTCN_Logger::log_logmatch_info(".filterMode");
+single_value->field_filterMode.log_match(match_value.filterMode(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_pgnEntries.match(match_value.pgnEntries(), legacy)){
+TTCN_Logger::log_logmatch_info(".pgnEntries");
+single_value->field_pgnEntries.log_match(match_value.pgnEntries(), 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("{ msgFunction := ");
+single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy);
+TTCN_Logger::log_event_str(", portPair := ");
+single_value->field_portPair.log_match(match_value.portPair(), legacy);
+TTCN_Logger::log_event_str(", filterMode := ");
+single_value->field_filterMode.log_match(match_value.filterMode(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", pgnEntries := ");
+single_value->field_pgnEntries.log_match(match_value.pgnEntries(), 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 N__MFDBNQ__Add_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_msgFunction.encode_text(text_buf);
+single_value->field_portPair.encode_text(text_buf);
+single_value->field_filterMode.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_pgnEntries.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 @IsobusNMMessageTypes.N_MFDBNQ_Add.");
+}
+}
+
+void N__MFDBNQ__Add_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_msgFunction.decode_text(text_buf);
+single_value->field_portPair.decode_text(text_buf);
+single_value->field_filterMode.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_pgnEntries.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 N__MFDBNQ__Add_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 @IsobusNMMessageTypes.N_MFDBNQ_Add.");
+}
+}
+
+void N__MFDBNQ__Add_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: {
+    N__MFDBNQ__Add_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusNMMessageTypes.N_MFDBNQ_Add 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) msgFunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) filterMode().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) pgnEntries().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(), "msgFunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgFunction().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(), "portPair")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          portPair().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(), "filterMode")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          filterMode().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "pgnEntries")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          pgnEntries().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 @IsobusNMMessageTypes.N_MFDBNQ_Add: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusNMMessageTypes.N_MFDBNQ_Add");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void N__MFDBNQ__Add_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_msgFunction.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDBNQ_Add");
+single_value->field_portPair.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDBNQ_Add");
+single_value->field_filterMode.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDBNQ_Add");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDBNQ_Add");
+single_value->field_pgnEntries.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_MFDBNQ_Add");
+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 : "@IsobusNMMessageTypes.N_MFDBNQ_Add");
+}
+
+boolean N__MFDBNQ__Add_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean N__MFDBNQ__Add_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+PortNibble::PortNibble()
+{
+}
+
+PortNibble::PortNibble(const e__PortNumber& par_portNumber,
+    const HEXSTRING& par_reserved)
+  :   field_portNumber(par_portNumber),
+  field_reserved(par_reserved)
+{
+}
+
+PortNibble::PortNibble(const PortNibble& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.PortNibble.");
+if (other_value.portNumber().is_bound()) field_portNumber = other_value.portNumber();
+else field_portNumber.clean_up();
+if (other_value.reserved().is_bound()) field_reserved = other_value.reserved();
+else field_reserved.clean_up();
+}
+
+void PortNibble::clean_up()
+{
+field_portNumber.clean_up();
+field_reserved.clean_up();
+}
+
+const TTCN_Typedescriptor_t* PortNibble::get_descriptor() const { return &PortNibble_descr_; }
+PortNibble& PortNibble::operator=(const PortNibble& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.PortNibble.");
+  if (other_value.portNumber().is_bound()) field_portNumber = other_value.portNumber();
+  else field_portNumber.clean_up();
+  if (other_value.reserved().is_bound()) field_reserved = other_value.reserved();
+  else field_reserved.clean_up();
+}
+return *this;
+}
+
+boolean PortNibble::operator==(const PortNibble& other_value) const
+{
+return field_portNumber==other_value.field_portNumber
+  && field_reserved==other_value.field_reserved;
+}
+
+boolean PortNibble::is_bound() const
+{
+return (field_portNumber.is_bound())
+  || (field_reserved.is_bound());
+}
+boolean PortNibble::is_value() const
+{
+return field_portNumber.is_value()
+  && field_reserved.is_value();
+}
+void PortNibble::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ portNumber := ");
+field_portNumber.log();
+TTCN_Logger::log_event_str(", reserved := ");
+field_reserved.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void PortNibble::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 @IsobusNMMessageTypes.PortNibble 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) portNumber().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved().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(), "portNumber")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          portNumber().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(), "reserved")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved().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 @IsobusNMMessageTypes.PortNibble: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusNMMessageTypes.PortNibble");
+  }
+}
+
+void PortNibble::set_implicit_omit()
+{
+if (portNumber().is_bound()) portNumber().set_implicit_omit();
+if (reserved().is_bound()) reserved().set_implicit_omit();
+}
+
+void PortNibble::encode_text(Text_Buf& text_buf) const
+{
+field_portNumber.encode_text(text_buf);
+field_reserved.encode_text(text_buf);
+}
+
+void PortNibble::decode_text(Text_Buf& text_buf)
+{
+field_portNumber.decode_text(text_buf);
+field_reserved.decode_text(text_buf);
+}
+
+void PortNibble::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void PortNibble::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int PortNibble::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, e__PortNumber_descr_.raw->forceomit);
+  decoded_field_length = field_portNumber.RAW_decode(e__PortNumber_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, PortNibble_reserved_descr_.raw->forceomit);
+  decoded_field_length = field_reserved.RAW_decode(PortNibble_reserved_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 PortNibble::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, e__PortNumber_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PortNibble_reserved_descr_.raw);
+  encoded_length += field_portNumber.RAW_encode(e__PortNumber_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved.RAW_encode(PortNibble_reserved_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct PortNibble_template::single_value_struct {
+e__PortNumber_template field_portNumber;
+HEXSTRING_template field_reserved;
+};
+
+void PortNibble_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_portNumber = ANY_VALUE;
+single_value->field_reserved = ANY_VALUE;
+}
+}
+}
+
+void PortNibble_template::copy_value(const PortNibble& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.portNumber().is_bound()) {
+  single_value->field_portNumber = other_value.portNumber();
+} else {
+  single_value->field_portNumber.clean_up();
+}
+if (other_value.reserved().is_bound()) {
+  single_value->field_reserved = other_value.reserved();
+} else {
+  single_value->field_reserved.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void PortNibble_template::copy_template(const PortNibble_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.portNumber().get_selection()) {
+single_value->field_portNumber = other_value.portNumber();
+} else {
+single_value->field_portNumber.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved().get_selection()) {
+single_value->field_reserved = other_value.reserved();
+} else {
+single_value->field_reserved.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new PortNibble_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.PortNibble.");
+break;
+}
+set_selection(other_value);
+}
+
+PortNibble_template::PortNibble_template()
+{
+}
+
+PortNibble_template::PortNibble_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+PortNibble_template::PortNibble_template(const PortNibble& other_value)
+{
+copy_value(other_value);
+}
+
+PortNibble_template::PortNibble_template(const OPTIONAL<PortNibble>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const PortNibble&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusNMMessageTypes.PortNibble from an unbound optional field.");
+}
+}
+
+PortNibble_template::PortNibble_template(const PortNibble_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+PortNibble_template::~PortNibble_template()
+{
+clean_up();
+}
+
+PortNibble_template& PortNibble_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+PortNibble_template& PortNibble_template::operator=(const PortNibble& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+PortNibble_template& PortNibble_template::operator=(const OPTIONAL<PortNibble>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const PortNibble&)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 @IsobusNMMessageTypes.PortNibble.");
+}
+return *this;
+}
+
+PortNibble_template& PortNibble_template::operator=(const PortNibble_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean PortNibble_template::match(const PortNibble& 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.portNumber().is_bound()) return FALSE;
+if(!single_value->field_portNumber.match(other_value.portNumber(), legacy))return FALSE;
+if(!other_value.reserved().is_bound()) return FALSE;
+if(!single_value->field_reserved.match(other_value.reserved(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.PortNibble.");
+}
+return FALSE;
+}
+
+boolean PortNibble_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_portNumber.is_bound()
+
+ ||single_value->field_reserved.is_bound()
+;
+}
+
+boolean PortNibble_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_portNumber.is_value()
+ &&single_value->field_reserved.is_value();
+}
+
+void PortNibble_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+PortNibble PortNibble_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 @IsobusNMMessageTypes.PortNibble.");
+PortNibble ret_val;
+if (single_value->field_portNumber.is_bound()) {
+ret_val.portNumber() = single_value->field_portNumber.valueof();
+}
+if (single_value->field_reserved.is_bound()) {
+ret_val.reserved() = single_value->field_reserved.valueof();
+}
+return ret_val;
+}
+
+void PortNibble_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.PortNibble.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new PortNibble_template[list_length];
+}
+
+PortNibble_template& PortNibble_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.PortNibble.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.PortNibble.");
+return value_list.list_value[list_index];
+}
+
+e__PortNumber_template& PortNibble_template::portNumber()
+{
+set_specific();
+return single_value->field_portNumber;
+}
+
+const e__PortNumber_template& PortNibble_template::portNumber() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field portNumber of a non-specific template of type @IsobusNMMessageTypes.PortNibble.");
+return single_value->field_portNumber;
+}
+
+HEXSTRING_template& PortNibble_template::reserved()
+{
+set_specific();
+return single_value->field_reserved;
+}
+
+const HEXSTRING_template& PortNibble_template::reserved() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved of a non-specific template of type @IsobusNMMessageTypes.PortNibble.");
+return single_value->field_reserved;
+}
+
+int PortNibble_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.PortNibble 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 @IsobusNMMessageTypes.PortNibble 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 @IsobusNMMessageTypes.PortNibble containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.PortNibble containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.PortNibble containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.PortNibble containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.PortNibble.");
+  }
+  return 0;
+}
+
+void PortNibble_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ portNumber := ");
+single_value->field_portNumber.log();
+TTCN_Logger::log_event_str(", reserved := ");
+single_value->field_reserved.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void PortNibble_template::log_match(const PortNibble& 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_portNumber.match(match_value.portNumber(), legacy)){
+TTCN_Logger::log_logmatch_info(".portNumber");
+single_value->field_portNumber.log_match(match_value.portNumber(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved.match(match_value.reserved(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved");
+single_value->field_reserved.log_match(match_value.reserved(), 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("{ portNumber := ");
+single_value->field_portNumber.log_match(match_value.portNumber(), legacy);
+TTCN_Logger::log_event_str(", reserved := ");
+single_value->field_reserved.log_match(match_value.reserved(), 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 PortNibble_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_portNumber.encode_text(text_buf);
+single_value->field_reserved.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 @IsobusNMMessageTypes.PortNibble.");
+}
+}
+
+void PortNibble_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_portNumber.decode_text(text_buf);
+single_value->field_reserved.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 PortNibble_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 @IsobusNMMessageTypes.PortNibble.");
+}
+}
+
+void PortNibble_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: {
+    PortNibble_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusNMMessageTypes.PortNibble 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) portNumber().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved().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(), "portNumber")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          portNumber().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(), "reserved")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved().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 @IsobusNMMessageTypes.PortNibble: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusNMMessageTypes.PortNibble");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void PortNibble_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_portNumber.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.PortNibble");
+single_value->field_reserved.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.PortNibble");
+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 : "@IsobusNMMessageTypes.PortNibble");
+}
+
+boolean PortNibble_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean PortNibble_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+N__NT__Request::N__NT__Request()
+{
+}
+
+N__NT__Request::N__NT__Request(const INTEGER& par_msgFunction,
+    const PortNibble& par_portPair,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_msgFunction(par_msgFunction),
+  field_portPair(par_portPair),
+  field_reserved3(par_reserved3),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+N__NT__Request::N__NT__Request(const N__NT__Request& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_NT_Request.");
+if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction();
+else field_msgFunction.clean_up();
+if (other_value.portPair().is_bound()) field_portPair = other_value.portPair();
+else field_portPair.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void N__NT__Request::clean_up()
+{
+field_msgFunction.clean_up();
+field_portPair.clean_up();
+field_reserved3.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* N__NT__Request::get_descriptor() const { return &N__NT__Request_descr_; }
+N__NT__Request& N__NT__Request::operator=(const N__NT__Request& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.N_NT_Request.");
+  if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction();
+  else field_msgFunction.clean_up();
+  if (other_value.portPair().is_bound()) field_portPair = other_value.portPair();
+  else field_portPair.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean N__NT__Request::operator==(const N__NT__Request& other_value) const
+{
+return field_msgFunction==other_value.field_msgFunction
+  && field_portPair==other_value.field_portPair
+  && field_reserved3==other_value.field_reserved3
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean N__NT__Request::is_bound() const
+{
+return (field_msgFunction.is_bound())
+  || (field_portPair.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean N__NT__Request::is_value() const
+{
+return field_msgFunction.is_value()
+  && field_portPair.is_value()
+  && field_reserved3.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void N__NT__Request::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ msgFunction := ");
+field_msgFunction.log();
+TTCN_Logger::log_event_str(", portPair := ");
+field_portPair.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void N__NT__Request::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusNMMessageTypes.N_NT_Request has 8 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) msgFunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "msgFunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgFunction().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(), "portPair")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          portPair().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusNMMessageTypes.N_NT_Request: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusNMMessageTypes.N_NT_Request");
+  }
+}
+
+void N__NT__Request::set_implicit_omit()
+{
+if (msgFunction().is_bound()) msgFunction().set_implicit_omit();
+if (portPair().is_bound()) portPair().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void N__NT__Request::encode_text(Text_Buf& text_buf) const
+{
+field_msgFunction.encode_text(text_buf);
+field_portPair.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void N__NT__Request::decode_text(Text_Buf& text_buf)
+{
+field_msgFunction.decode_text(text_buf);
+field_portPair.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void N__NT__Request::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void N__NT__Request::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int N__NT__Request::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, Function_descr_.raw->forceomit);
+  decoded_field_length = field_msgFunction.RAW_decode(Function_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, PortNibble_descr_.raw->forceomit);
+  decoded_field_length = field_portPair.RAW_decode(PortNibble_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, N__NT__Request_reserved3_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(N__NT__Request_reserved3_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, N__NT__Request_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(N__NT__Request_reserved4_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, N__NT__Request_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(N__NT__Request_reserved5_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, N__NT__Request_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(N__NT__Request_reserved6_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, N__NT__Request_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(N__NT__Request_reserved7_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, N__NT__Request_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(N__NT__Request_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int N__NT__Request::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, Function_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PortNibble_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, N__NT__Request_reserved3_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, N__NT__Request_reserved4_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, N__NT__Request_reserved5_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, N__NT__Request_reserved6_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, N__NT__Request_reserved7_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, N__NT__Request_reserved8_descr_.raw);
+  encoded_length += field_msgFunction.RAW_encode(Function_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_portPair.RAW_encode(PortNibble_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved3.RAW_encode(N__NT__Request_reserved3_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved4.RAW_encode(N__NT__Request_reserved4_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved5.RAW_encode(N__NT__Request_reserved5_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved6.RAW_encode(N__NT__Request_reserved6_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved7.RAW_encode(N__NT__Request_reserved7_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved8.RAW_encode(N__NT__Request_reserved8_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct N__NT__Request_template::single_value_struct {
+INTEGER_template field_msgFunction;
+PortNibble_template field_portPair;
+OCTETSTRING_template field_reserved3;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void N__NT__Request_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_msgFunction = ANY_VALUE;
+single_value->field_portPair = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void N__NT__Request_template::copy_value(const N__NT__Request& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.msgFunction().is_bound()) {
+  single_value->field_msgFunction = other_value.msgFunction();
+} else {
+  single_value->field_msgFunction.clean_up();
+}
+if (other_value.portPair().is_bound()) {
+  single_value->field_portPair = other_value.portPair();
+} else {
+  single_value->field_portPair.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void N__NT__Request_template::copy_template(const N__NT__Request_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.msgFunction().get_selection()) {
+single_value->field_msgFunction = other_value.msgFunction();
+} else {
+single_value->field_msgFunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.portPair().get_selection()) {
+single_value->field_portPair = other_value.portPair();
+} else {
+single_value->field_portPair.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new N__NT__Request_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_NT_Request.");
+break;
+}
+set_selection(other_value);
+}
+
+N__NT__Request_template::N__NT__Request_template()
+{
+}
+
+N__NT__Request_template::N__NT__Request_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+N__NT__Request_template::N__NT__Request_template(const N__NT__Request& other_value)
+{
+copy_value(other_value);
+}
+
+N__NT__Request_template::N__NT__Request_template(const OPTIONAL<N__NT__Request>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__NT__Request&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_NT_Request from an unbound optional field.");
+}
+}
+
+N__NT__Request_template::N__NT__Request_template(const N__NT__Request_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+N__NT__Request_template::~N__NT__Request_template()
+{
+clean_up();
+}
+
+N__NT__Request_template& N__NT__Request_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+N__NT__Request_template& N__NT__Request_template::operator=(const N__NT__Request& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+N__NT__Request_template& N__NT__Request_template::operator=(const OPTIONAL<N__NT__Request>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__NT__Request&)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 @IsobusNMMessageTypes.N_NT_Request.");
+}
+return *this;
+}
+
+N__NT__Request_template& N__NT__Request_template::operator=(const N__NT__Request_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean N__NT__Request_template::match(const N__NT__Request& 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.msgFunction().is_bound()) return FALSE;
+if(!single_value->field_msgFunction.match(other_value.msgFunction(), legacy))return FALSE;
+if(!other_value.portPair().is_bound()) return FALSE;
+if(!single_value->field_portPair.match(other_value.portPair(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_NT_Request.");
+}
+return FALSE;
+}
+
+boolean N__NT__Request_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_msgFunction.is_bound()
+
+ ||single_value->field_portPair.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean N__NT__Request_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_msgFunction.is_value()
+ &&single_value->field_portPair.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void N__NT__Request_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+N__NT__Request N__NT__Request_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 @IsobusNMMessageTypes.N_NT_Request.");
+N__NT__Request ret_val;
+if (single_value->field_msgFunction.is_bound()) {
+ret_val.msgFunction() = single_value->field_msgFunction.valueof();
+}
+if (single_value->field_portPair.is_bound()) {
+ret_val.portPair() = single_value->field_portPair.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void N__NT__Request_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.N_NT_Request.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new N__NT__Request_template[list_length];
+}
+
+N__NT__Request_template& N__NT__Request_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_NT_Request.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.N_NT_Request.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& N__NT__Request_template::msgFunction()
+{
+set_specific();
+return single_value->field_msgFunction;
+}
+
+const INTEGER_template& N__NT__Request_template::msgFunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field msgFunction of a non-specific template of type @IsobusNMMessageTypes.N_NT_Request.");
+return single_value->field_msgFunction;
+}
+
+PortNibble_template& N__NT__Request_template::portPair()
+{
+set_specific();
+return single_value->field_portPair;
+}
+
+const PortNibble_template& N__NT__Request_template::portPair() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field portPair of a non-specific template of type @IsobusNMMessageTypes.N_NT_Request.");
+return single_value->field_portPair;
+}
+
+OCTETSTRING_template& N__NT__Request_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const OCTETSTRING_template& N__NT__Request_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusNMMessageTypes.N_NT_Request.");
+return single_value->field_reserved3;
+}
+
+OCTETSTRING_template& N__NT__Request_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& N__NT__Request_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusNMMessageTypes.N_NT_Request.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& N__NT__Request_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& N__NT__Request_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusNMMessageTypes.N_NT_Request.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& N__NT__Request_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& N__NT__Request_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusNMMessageTypes.N_NT_Request.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& N__NT__Request_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& N__NT__Request_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusNMMessageTypes.N_NT_Request.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& N__NT__Request_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& N__NT__Request_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusNMMessageTypes.N_NT_Request.");
+return single_value->field_reserved8;
+}
+
+int N__NT__Request_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_NT_Request which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_NT_Request 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 @IsobusNMMessageTypes.N_NT_Request containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_NT_Request containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_NT_Request containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_NT_Request containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_NT_Request.");
+  }
+  return 0;
+}
+
+void N__NT__Request_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ msgFunction := ");
+single_value->field_msgFunction.log();
+TTCN_Logger::log_event_str(", portPair := ");
+single_value->field_portPair.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void N__NT__Request_template::log_match(const N__NT__Request& 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_msgFunction.match(match_value.msgFunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".msgFunction");
+single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_portPair.match(match_value.portPair(), legacy)){
+TTCN_Logger::log_logmatch_info(".portPair");
+single_value->field_portPair.log_match(match_value.portPair(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ msgFunction := ");
+single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy);
+TTCN_Logger::log_event_str(", portPair := ");
+single_value->field_portPair.log_match(match_value.portPair(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 N__NT__Request_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_msgFunction.encode_text(text_buf);
+single_value->field_portPair.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusNMMessageTypes.N_NT_Request.");
+}
+}
+
+void N__NT__Request_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_msgFunction.decode_text(text_buf);
+single_value->field_portPair.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 N__NT__Request_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 @IsobusNMMessageTypes.N_NT_Request.");
+}
+}
+
+void N__NT__Request_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: {
+    N__NT__Request_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusNMMessageTypes.N_NT_Request has 8 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) msgFunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "msgFunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgFunction().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(), "portPair")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          portPair().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusNMMessageTypes.N_NT_Request: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusNMMessageTypes.N_NT_Request");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void N__NT__Request_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_msgFunction.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NT_Request");
+single_value->field_portPair.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NT_Request");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NT_Request");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NT_Request");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NT_Request");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NT_Request");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NT_Request");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NT_Request");
+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 : "@IsobusNMMessageTypes.N_NT_Request");
+}
+
+boolean N__NT__Request_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean N__NT__Request_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+N__NT__Response::N__NT__Response()
+{
+}
+
+N__NT__Response::N__NT__Response(const INTEGER& par_msgFunction,
+    const PortNibble& par_portPair,
+    const N__NT__Response_SourceAddressEntries& par_SourceAddressEntries)
+  :   field_msgFunction(par_msgFunction),
+  field_portPair(par_portPair),
+  field_SourceAddressEntries(par_SourceAddressEntries)
+{
+}
+
+N__NT__Response::N__NT__Response(const N__NT__Response& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_NT_Response.");
+if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction();
+else field_msgFunction.clean_up();
+if (other_value.portPair().is_bound()) field_portPair = other_value.portPair();
+else field_portPair.clean_up();
+if (other_value.SourceAddressEntries().is_bound()) field_SourceAddressEntries = other_value.SourceAddressEntries();
+else field_SourceAddressEntries.clean_up();
+}
+
+void N__NT__Response::clean_up()
+{
+field_msgFunction.clean_up();
+field_portPair.clean_up();
+field_SourceAddressEntries.clean_up();
+}
+
+const TTCN_Typedescriptor_t* N__NT__Response::get_descriptor() const { return &N__NT__Response_descr_; }
+N__NT__Response& N__NT__Response::operator=(const N__NT__Response& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.N_NT_Response.");
+  if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction();
+  else field_msgFunction.clean_up();
+  if (other_value.portPair().is_bound()) field_portPair = other_value.portPair();
+  else field_portPair.clean_up();
+  if (other_value.SourceAddressEntries().is_bound()) field_SourceAddressEntries = other_value.SourceAddressEntries();
+  else field_SourceAddressEntries.clean_up();
+}
+return *this;
+}
+
+boolean N__NT__Response::operator==(const N__NT__Response& other_value) const
+{
+return field_msgFunction==other_value.field_msgFunction
+  && field_portPair==other_value.field_portPair
+  && field_SourceAddressEntries==other_value.field_SourceAddressEntries;
+}
+
+boolean N__NT__Response::is_bound() const
+{
+return (field_msgFunction.is_bound())
+  || (field_portPair.is_bound())
+  || (field_SourceAddressEntries.is_bound());
+}
+boolean N__NT__Response::is_value() const
+{
+return field_msgFunction.is_value()
+  && field_portPair.is_value()
+  && field_SourceAddressEntries.is_value();
+}
+void N__NT__Response::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ msgFunction := ");
+field_msgFunction.log();
+TTCN_Logger::log_event_str(", portPair := ");
+field_portPair.log();
+TTCN_Logger::log_event_str(", SourceAddressEntries := ");
+field_SourceAddressEntries.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void N__NT__Response::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 @IsobusNMMessageTypes.N_NT_Response 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) msgFunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) SourceAddressEntries().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(), "msgFunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgFunction().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(), "portPair")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          portPair().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(), "SourceAddressEntries")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          SourceAddressEntries().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 @IsobusNMMessageTypes.N_NT_Response: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusNMMessageTypes.N_NT_Response");
+  }
+}
+
+void N__NT__Response::set_implicit_omit()
+{
+if (msgFunction().is_bound()) msgFunction().set_implicit_omit();
+if (portPair().is_bound()) portPair().set_implicit_omit();
+if (SourceAddressEntries().is_bound()) SourceAddressEntries().set_implicit_omit();
+}
+
+void N__NT__Response::encode_text(Text_Buf& text_buf) const
+{
+field_msgFunction.encode_text(text_buf);
+field_portPair.encode_text(text_buf);
+field_SourceAddressEntries.encode_text(text_buf);
+}
+
+void N__NT__Response::decode_text(Text_Buf& text_buf)
+{
+field_msgFunction.decode_text(text_buf);
+field_portPair.decode_text(text_buf);
+field_SourceAddressEntries.decode_text(text_buf);
+}
+
+void N__NT__Response::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void N__NT__Response::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int N__NT__Response::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, Function_descr_.raw->forceomit);
+  decoded_field_length = field_msgFunction.RAW_decode(Function_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, PortNibble_descr_.raw->forceomit);
+  decoded_field_length = field_portPair.RAW_decode(PortNibble_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, N__NT__Response_SourceAddressEntries_descr_.raw->forceomit);
+  decoded_field_length = field_SourceAddressEntries.RAW_decode(N__NT__Response_SourceAddressEntries_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 N__NT__Response::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, Function_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PortNibble_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, N__NT__Response_SourceAddressEntries_descr_.raw);
+  encoded_length += field_msgFunction.RAW_encode(Function_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_portPair.RAW_encode(PortNibble_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_SourceAddressEntries.RAW_encode(N__NT__Response_SourceAddressEntries_descr_, *myleaf.body.node.nodes[2]);
+  return myleaf.length = encoded_length;
+}
+
+struct N__NT__Response_template::single_value_struct {
+INTEGER_template field_msgFunction;
+PortNibble_template field_portPair;
+N__NT__Response_SourceAddressEntries_template field_SourceAddressEntries;
+};
+
+void N__NT__Response_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_msgFunction = ANY_VALUE;
+single_value->field_portPair = ANY_VALUE;
+single_value->field_SourceAddressEntries = ANY_VALUE;
+}
+}
+}
+
+void N__NT__Response_template::copy_value(const N__NT__Response& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.msgFunction().is_bound()) {
+  single_value->field_msgFunction = other_value.msgFunction();
+} else {
+  single_value->field_msgFunction.clean_up();
+}
+if (other_value.portPair().is_bound()) {
+  single_value->field_portPair = other_value.portPair();
+} else {
+  single_value->field_portPair.clean_up();
+}
+if (other_value.SourceAddressEntries().is_bound()) {
+  single_value->field_SourceAddressEntries = other_value.SourceAddressEntries();
+} else {
+  single_value->field_SourceAddressEntries.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void N__NT__Response_template::copy_template(const N__NT__Response_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.msgFunction().get_selection()) {
+single_value->field_msgFunction = other_value.msgFunction();
+} else {
+single_value->field_msgFunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.portPair().get_selection()) {
+single_value->field_portPair = other_value.portPair();
+} else {
+single_value->field_portPair.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.SourceAddressEntries().get_selection()) {
+single_value->field_SourceAddressEntries = other_value.SourceAddressEntries();
+} else {
+single_value->field_SourceAddressEntries.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new N__NT__Response_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_NT_Response.");
+break;
+}
+set_selection(other_value);
+}
+
+N__NT__Response_template::N__NT__Response_template()
+{
+}
+
+N__NT__Response_template::N__NT__Response_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+N__NT__Response_template::N__NT__Response_template(const N__NT__Response& other_value)
+{
+copy_value(other_value);
+}
+
+N__NT__Response_template::N__NT__Response_template(const OPTIONAL<N__NT__Response>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__NT__Response&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_NT_Response from an unbound optional field.");
+}
+}
+
+N__NT__Response_template::N__NT__Response_template(const N__NT__Response_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+N__NT__Response_template::~N__NT__Response_template()
+{
+clean_up();
+}
+
+N__NT__Response_template& N__NT__Response_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+N__NT__Response_template& N__NT__Response_template::operator=(const N__NT__Response& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+N__NT__Response_template& N__NT__Response_template::operator=(const OPTIONAL<N__NT__Response>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__NT__Response&)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 @IsobusNMMessageTypes.N_NT_Response.");
+}
+return *this;
+}
+
+N__NT__Response_template& N__NT__Response_template::operator=(const N__NT__Response_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean N__NT__Response_template::match(const N__NT__Response& 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.msgFunction().is_bound()) return FALSE;
+if(!single_value->field_msgFunction.match(other_value.msgFunction(), legacy))return FALSE;
+if(!other_value.portPair().is_bound()) return FALSE;
+if(!single_value->field_portPair.match(other_value.portPair(), legacy))return FALSE;
+if(!other_value.SourceAddressEntries().is_bound()) return FALSE;
+if(!single_value->field_SourceAddressEntries.match(other_value.SourceAddressEntries(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_NT_Response.");
+}
+return FALSE;
+}
+
+boolean N__NT__Response_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_msgFunction.is_bound()
+
+ ||single_value->field_portPair.is_bound()
+
+ ||single_value->field_SourceAddressEntries.is_bound()
+;
+}
+
+boolean N__NT__Response_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_msgFunction.is_value()
+ &&single_value->field_portPair.is_value()
+ &&single_value->field_SourceAddressEntries.is_value();
+}
+
+void N__NT__Response_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+N__NT__Response N__NT__Response_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 @IsobusNMMessageTypes.N_NT_Response.");
+N__NT__Response ret_val;
+if (single_value->field_msgFunction.is_bound()) {
+ret_val.msgFunction() = single_value->field_msgFunction.valueof();
+}
+if (single_value->field_portPair.is_bound()) {
+ret_val.portPair() = single_value->field_portPair.valueof();
+}
+if (single_value->field_SourceAddressEntries.is_bound()) {
+ret_val.SourceAddressEntries() = single_value->field_SourceAddressEntries.valueof();
+}
+return ret_val;
+}
+
+void N__NT__Response_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.N_NT_Response.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new N__NT__Response_template[list_length];
+}
+
+N__NT__Response_template& N__NT__Response_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_NT_Response.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.N_NT_Response.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& N__NT__Response_template::msgFunction()
+{
+set_specific();
+return single_value->field_msgFunction;
+}
+
+const INTEGER_template& N__NT__Response_template::msgFunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field msgFunction of a non-specific template of type @IsobusNMMessageTypes.N_NT_Response.");
+return single_value->field_msgFunction;
+}
+
+PortNibble_template& N__NT__Response_template::portPair()
+{
+set_specific();
+return single_value->field_portPair;
+}
+
+const PortNibble_template& N__NT__Response_template::portPair() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field portPair of a non-specific template of type @IsobusNMMessageTypes.N_NT_Response.");
+return single_value->field_portPair;
+}
+
+N__NT__Response_SourceAddressEntries_template& N__NT__Response_template::SourceAddressEntries()
+{
+set_specific();
+return single_value->field_SourceAddressEntries;
+}
+
+const N__NT__Response_SourceAddressEntries_template& N__NT__Response_template::SourceAddressEntries() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field SourceAddressEntries of a non-specific template of type @IsobusNMMessageTypes.N_NT_Response.");
+return single_value->field_SourceAddressEntries;
+}
+
+int N__NT__Response_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_NT_Response 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 @IsobusNMMessageTypes.N_NT_Response 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 @IsobusNMMessageTypes.N_NT_Response containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_NT_Response containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_NT_Response containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_NT_Response containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_NT_Response.");
+  }
+  return 0;
+}
+
+void N__NT__Response_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ msgFunction := ");
+single_value->field_msgFunction.log();
+TTCN_Logger::log_event_str(", portPair := ");
+single_value->field_portPair.log();
+TTCN_Logger::log_event_str(", SourceAddressEntries := ");
+single_value->field_SourceAddressEntries.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void N__NT__Response_template::log_match(const N__NT__Response& 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_msgFunction.match(match_value.msgFunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".msgFunction");
+single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_portPair.match(match_value.portPair(), legacy)){
+TTCN_Logger::log_logmatch_info(".portPair");
+single_value->field_portPair.log_match(match_value.portPair(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_SourceAddressEntries.match(match_value.SourceAddressEntries(), legacy)){
+TTCN_Logger::log_logmatch_info(".SourceAddressEntries");
+single_value->field_SourceAddressEntries.log_match(match_value.SourceAddressEntries(), 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("{ msgFunction := ");
+single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy);
+TTCN_Logger::log_event_str(", portPair := ");
+single_value->field_portPair.log_match(match_value.portPair(), legacy);
+TTCN_Logger::log_event_str(", SourceAddressEntries := ");
+single_value->field_SourceAddressEntries.log_match(match_value.SourceAddressEntries(), 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 N__NT__Response_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_msgFunction.encode_text(text_buf);
+single_value->field_portPair.encode_text(text_buf);
+single_value->field_SourceAddressEntries.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 @IsobusNMMessageTypes.N_NT_Response.");
+}
+}
+
+void N__NT__Response_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_msgFunction.decode_text(text_buf);
+single_value->field_portPair.decode_text(text_buf);
+single_value->field_SourceAddressEntries.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 N__NT__Response_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 @IsobusNMMessageTypes.N_NT_Response.");
+}
+}
+
+void N__NT__Response_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: {
+    N__NT__Response_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusNMMessageTypes.N_NT_Response 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) msgFunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) SourceAddressEntries().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(), "msgFunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgFunction().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(), "portPair")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          portPair().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(), "SourceAddressEntries")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          SourceAddressEntries().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 @IsobusNMMessageTypes.N_NT_Response: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusNMMessageTypes.N_NT_Response");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void N__NT__Response_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_msgFunction.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NT_Response");
+single_value->field_portPair.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NT_Response");
+single_value->field_SourceAddressEntries.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NT_Response");
+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 : "@IsobusNMMessageTypes.N_NT_Response");
+}
+
+boolean N__NT__Response_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean N__NT__Response_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+N__NTX__Request::N__NTX__Request()
+{
+}
+
+N__NTX__Request::N__NTX__Request(const INTEGER& par_msgFunction,
+    const PortNibble& par_portPair,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_msgFunction(par_msgFunction),
+  field_portPair(par_portPair),
+  field_reserved3(par_reserved3),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+N__NTX__Request::N__NTX__Request(const N__NTX__Request& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_NTX_Request.");
+if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction();
+else field_msgFunction.clean_up();
+if (other_value.portPair().is_bound()) field_portPair = other_value.portPair();
+else field_portPair.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void N__NTX__Request::clean_up()
+{
+field_msgFunction.clean_up();
+field_portPair.clean_up();
+field_reserved3.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* N__NTX__Request::get_descriptor() const { return &N__NTX__Request_descr_; }
+N__NTX__Request& N__NTX__Request::operator=(const N__NTX__Request& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.N_NTX_Request.");
+  if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction();
+  else field_msgFunction.clean_up();
+  if (other_value.portPair().is_bound()) field_portPair = other_value.portPair();
+  else field_portPair.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean N__NTX__Request::operator==(const N__NTX__Request& other_value) const
+{
+return field_msgFunction==other_value.field_msgFunction
+  && field_portPair==other_value.field_portPair
+  && field_reserved3==other_value.field_reserved3
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean N__NTX__Request::is_bound() const
+{
+return (field_msgFunction.is_bound())
+  || (field_portPair.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean N__NTX__Request::is_value() const
+{
+return field_msgFunction.is_value()
+  && field_portPair.is_value()
+  && field_reserved3.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void N__NTX__Request::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ msgFunction := ");
+field_msgFunction.log();
+TTCN_Logger::log_event_str(", portPair := ");
+field_portPair.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void N__NTX__Request::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusNMMessageTypes.N_NTX_Request has 8 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) msgFunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "msgFunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgFunction().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(), "portPair")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          portPair().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusNMMessageTypes.N_NTX_Request: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusNMMessageTypes.N_NTX_Request");
+  }
+}
+
+void N__NTX__Request::set_implicit_omit()
+{
+if (msgFunction().is_bound()) msgFunction().set_implicit_omit();
+if (portPair().is_bound()) portPair().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void N__NTX__Request::encode_text(Text_Buf& text_buf) const
+{
+field_msgFunction.encode_text(text_buf);
+field_portPair.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void N__NTX__Request::decode_text(Text_Buf& text_buf)
+{
+field_msgFunction.decode_text(text_buf);
+field_portPair.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void N__NTX__Request::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void N__NTX__Request::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int N__NTX__Request::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, Function_descr_.raw->forceomit);
+  decoded_field_length = field_msgFunction.RAW_decode(Function_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, PortNibble_descr_.raw->forceomit);
+  decoded_field_length = field_portPair.RAW_decode(PortNibble_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, N__NTX__Request_reserved3_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(N__NTX__Request_reserved3_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, N__NTX__Request_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(N__NTX__Request_reserved4_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, N__NTX__Request_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(N__NTX__Request_reserved5_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, N__NTX__Request_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(N__NTX__Request_reserved6_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, N__NTX__Request_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(N__NTX__Request_reserved7_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, N__NTX__Request_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(N__NTX__Request_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int N__NTX__Request::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, Function_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PortNibble_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, N__NTX__Request_reserved3_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, N__NTX__Request_reserved4_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, N__NTX__Request_reserved5_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, N__NTX__Request_reserved6_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, N__NTX__Request_reserved7_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, N__NTX__Request_reserved8_descr_.raw);
+  encoded_length += field_msgFunction.RAW_encode(Function_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_portPair.RAW_encode(PortNibble_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved3.RAW_encode(N__NTX__Request_reserved3_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved4.RAW_encode(N__NTX__Request_reserved4_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved5.RAW_encode(N__NTX__Request_reserved5_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved6.RAW_encode(N__NTX__Request_reserved6_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved7.RAW_encode(N__NTX__Request_reserved7_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved8.RAW_encode(N__NTX__Request_reserved8_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct N__NTX__Request_template::single_value_struct {
+INTEGER_template field_msgFunction;
+PortNibble_template field_portPair;
+OCTETSTRING_template field_reserved3;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void N__NTX__Request_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_msgFunction = ANY_VALUE;
+single_value->field_portPair = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void N__NTX__Request_template::copy_value(const N__NTX__Request& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.msgFunction().is_bound()) {
+  single_value->field_msgFunction = other_value.msgFunction();
+} else {
+  single_value->field_msgFunction.clean_up();
+}
+if (other_value.portPair().is_bound()) {
+  single_value->field_portPair = other_value.portPair();
+} else {
+  single_value->field_portPair.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void N__NTX__Request_template::copy_template(const N__NTX__Request_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.msgFunction().get_selection()) {
+single_value->field_msgFunction = other_value.msgFunction();
+} else {
+single_value->field_msgFunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.portPair().get_selection()) {
+single_value->field_portPair = other_value.portPair();
+} else {
+single_value->field_portPair.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new N__NTX__Request_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_NTX_Request.");
+break;
+}
+set_selection(other_value);
+}
+
+N__NTX__Request_template::N__NTX__Request_template()
+{
+}
+
+N__NTX__Request_template::N__NTX__Request_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+N__NTX__Request_template::N__NTX__Request_template(const N__NTX__Request& other_value)
+{
+copy_value(other_value);
+}
+
+N__NTX__Request_template::N__NTX__Request_template(const OPTIONAL<N__NTX__Request>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__NTX__Request&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_NTX_Request from an unbound optional field.");
+}
+}
+
+N__NTX__Request_template::N__NTX__Request_template(const N__NTX__Request_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+N__NTX__Request_template::~N__NTX__Request_template()
+{
+clean_up();
+}
+
+N__NTX__Request_template& N__NTX__Request_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+N__NTX__Request_template& N__NTX__Request_template::operator=(const N__NTX__Request& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+N__NTX__Request_template& N__NTX__Request_template::operator=(const OPTIONAL<N__NTX__Request>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__NTX__Request&)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 @IsobusNMMessageTypes.N_NTX_Request.");
+}
+return *this;
+}
+
+N__NTX__Request_template& N__NTX__Request_template::operator=(const N__NTX__Request_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean N__NTX__Request_template::match(const N__NTX__Request& 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.msgFunction().is_bound()) return FALSE;
+if(!single_value->field_msgFunction.match(other_value.msgFunction(), legacy))return FALSE;
+if(!other_value.portPair().is_bound()) return FALSE;
+if(!single_value->field_portPair.match(other_value.portPair(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_NTX_Request.");
+}
+return FALSE;
+}
+
+boolean N__NTX__Request_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_msgFunction.is_bound()
+
+ ||single_value->field_portPair.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean N__NTX__Request_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_msgFunction.is_value()
+ &&single_value->field_portPair.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void N__NTX__Request_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+N__NTX__Request N__NTX__Request_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 @IsobusNMMessageTypes.N_NTX_Request.");
+N__NTX__Request ret_val;
+if (single_value->field_msgFunction.is_bound()) {
+ret_val.msgFunction() = single_value->field_msgFunction.valueof();
+}
+if (single_value->field_portPair.is_bound()) {
+ret_val.portPair() = single_value->field_portPair.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void N__NTX__Request_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.N_NTX_Request.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new N__NTX__Request_template[list_length];
+}
+
+N__NTX__Request_template& N__NTX__Request_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_NTX_Request.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.N_NTX_Request.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& N__NTX__Request_template::msgFunction()
+{
+set_specific();
+return single_value->field_msgFunction;
+}
+
+const INTEGER_template& N__NTX__Request_template::msgFunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field msgFunction of a non-specific template of type @IsobusNMMessageTypes.N_NTX_Request.");
+return single_value->field_msgFunction;
+}
+
+PortNibble_template& N__NTX__Request_template::portPair()
+{
+set_specific();
+return single_value->field_portPair;
+}
+
+const PortNibble_template& N__NTX__Request_template::portPair() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field portPair of a non-specific template of type @IsobusNMMessageTypes.N_NTX_Request.");
+return single_value->field_portPair;
+}
+
+OCTETSTRING_template& N__NTX__Request_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const OCTETSTRING_template& N__NTX__Request_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusNMMessageTypes.N_NTX_Request.");
+return single_value->field_reserved3;
+}
+
+OCTETSTRING_template& N__NTX__Request_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& N__NTX__Request_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusNMMessageTypes.N_NTX_Request.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& N__NTX__Request_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& N__NTX__Request_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusNMMessageTypes.N_NTX_Request.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& N__NTX__Request_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& N__NTX__Request_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusNMMessageTypes.N_NTX_Request.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& N__NTX__Request_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& N__NTX__Request_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusNMMessageTypes.N_NTX_Request.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& N__NTX__Request_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& N__NTX__Request_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusNMMessageTypes.N_NTX_Request.");
+return single_value->field_reserved8;
+}
+
+int N__NTX__Request_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_NTX_Request which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_NTX_Request 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 @IsobusNMMessageTypes.N_NTX_Request containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_NTX_Request containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_NTX_Request containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_NTX_Request containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_NTX_Request.");
+  }
+  return 0;
+}
+
+void N__NTX__Request_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ msgFunction := ");
+single_value->field_msgFunction.log();
+TTCN_Logger::log_event_str(", portPair := ");
+single_value->field_portPair.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void N__NTX__Request_template::log_match(const N__NTX__Request& 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_msgFunction.match(match_value.msgFunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".msgFunction");
+single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_portPair.match(match_value.portPair(), legacy)){
+TTCN_Logger::log_logmatch_info(".portPair");
+single_value->field_portPair.log_match(match_value.portPair(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ msgFunction := ");
+single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy);
+TTCN_Logger::log_event_str(", portPair := ");
+single_value->field_portPair.log_match(match_value.portPair(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 N__NTX__Request_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_msgFunction.encode_text(text_buf);
+single_value->field_portPair.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusNMMessageTypes.N_NTX_Request.");
+}
+}
+
+void N__NTX__Request_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_msgFunction.decode_text(text_buf);
+single_value->field_portPair.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 N__NTX__Request_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 @IsobusNMMessageTypes.N_NTX_Request.");
+}
+}
+
+void N__NTX__Request_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: {
+    N__NTX__Request_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusNMMessageTypes.N_NTX_Request has 8 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) msgFunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "msgFunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgFunction().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(), "portPair")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          portPair().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusNMMessageTypes.N_NTX_Request: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusNMMessageTypes.N_NTX_Request");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void N__NTX__Request_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_msgFunction.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NTX_Request");
+single_value->field_portPair.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NTX_Request");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NTX_Request");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NTX_Request");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NTX_Request");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NTX_Request");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NTX_Request");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NTX_Request");
+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 : "@IsobusNMMessageTypes.N_NTX_Request");
+}
+
+boolean N__NTX__Request_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean N__NTX__Request_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+SA__NAME__pair::SA__NAME__pair()
+{
+}
+
+SA__NAME__pair::SA__NAME__pair(const OCTETSTRING& par_sourceAddress,
+    const NAME& par_name)
+  :   field_sourceAddress(par_sourceAddress),
+  field_name(par_name)
+{
+}
+
+SA__NAME__pair::SA__NAME__pair(const SA__NAME__pair& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.SA_NAME_pair.");
+if (other_value.sourceAddress().is_bound()) field_sourceAddress = other_value.sourceAddress();
+else field_sourceAddress.clean_up();
+if (other_value.name().is_bound()) field_name = other_value.name();
+else field_name.clean_up();
+}
+
+void SA__NAME__pair::clean_up()
+{
+field_sourceAddress.clean_up();
+field_name.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SA__NAME__pair::get_descriptor() const { return &SA__NAME__pair_descr_; }
+SA__NAME__pair& SA__NAME__pair::operator=(const SA__NAME__pair& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.SA_NAME_pair.");
+  if (other_value.sourceAddress().is_bound()) field_sourceAddress = other_value.sourceAddress();
+  else field_sourceAddress.clean_up();
+  if (other_value.name().is_bound()) field_name = other_value.name();
+  else field_name.clean_up();
+}
+return *this;
+}
+
+boolean SA__NAME__pair::operator==(const SA__NAME__pair& other_value) const
+{
+return field_sourceAddress==other_value.field_sourceAddress
+  && field_name==other_value.field_name;
+}
+
+boolean SA__NAME__pair::is_bound() const
+{
+return (field_sourceAddress.is_bound())
+  || (field_name.is_bound());
+}
+boolean SA__NAME__pair::is_value() const
+{
+return field_sourceAddress.is_value()
+  && field_name.is_value();
+}
+void SA__NAME__pair::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ sourceAddress := ");
+field_sourceAddress.log();
+TTCN_Logger::log_event_str(", name := ");
+field_name.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SA__NAME__pair::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 @IsobusNMMessageTypes.SA_NAME_pair 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) sourceAddress().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) name().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(), "sourceAddress")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          sourceAddress().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(), "name")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          name().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 @IsobusNMMessageTypes.SA_NAME_pair: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusNMMessageTypes.SA_NAME_pair");
+  }
+}
+
+void SA__NAME__pair::set_implicit_omit()
+{
+if (sourceAddress().is_bound()) sourceAddress().set_implicit_omit();
+if (name().is_bound()) name().set_implicit_omit();
+}
+
+void SA__NAME__pair::encode_text(Text_Buf& text_buf) const
+{
+field_sourceAddress.encode_text(text_buf);
+field_name.encode_text(text_buf);
+}
+
+void SA__NAME__pair::decode_text(Text_Buf& text_buf)
+{
+field_sourceAddress.decode_text(text_buf);
+field_name.decode_text(text_buf);
+}
+
+void SA__NAME__pair::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void SA__NAME__pair::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int SA__NAME__pair::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, SourceAddress_descr_.raw->forceomit);
+  decoded_field_length = field_sourceAddress.RAW_decode(SourceAddress_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, NAME_descr_.raw->forceomit);
+  decoded_field_length = field_name.RAW_decode(NAME_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 SA__NAME__pair::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, SourceAddress_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, NAME_descr_.raw);
+  encoded_length += field_sourceAddress.RAW_encode(SourceAddress_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_name.RAW_encode(NAME_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct SA__NAME__pair_template::single_value_struct {
+OCTETSTRING_template field_sourceAddress;
+NAME_template field_name;
+};
+
+void SA__NAME__pair_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_sourceAddress = ANY_VALUE;
+single_value->field_name = ANY_VALUE;
+}
+}
+}
+
+void SA__NAME__pair_template::copy_value(const SA__NAME__pair& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.sourceAddress().is_bound()) {
+  single_value->field_sourceAddress = other_value.sourceAddress();
+} else {
+  single_value->field_sourceAddress.clean_up();
+}
+if (other_value.name().is_bound()) {
+  single_value->field_name = other_value.name();
+} else {
+  single_value->field_name.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SA__NAME__pair_template::copy_template(const SA__NAME__pair_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.sourceAddress().get_selection()) {
+single_value->field_sourceAddress = other_value.sourceAddress();
+} else {
+single_value->field_sourceAddress.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.name().get_selection()) {
+single_value->field_name = other_value.name();
+} else {
+single_value->field_name.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SA__NAME__pair_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.SA_NAME_pair.");
+break;
+}
+set_selection(other_value);
+}
+
+SA__NAME__pair_template::SA__NAME__pair_template()
+{
+}
+
+SA__NAME__pair_template::SA__NAME__pair_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SA__NAME__pair_template::SA__NAME__pair_template(const SA__NAME__pair& other_value)
+{
+copy_value(other_value);
+}
+
+SA__NAME__pair_template::SA__NAME__pair_template(const OPTIONAL<SA__NAME__pair>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SA__NAME__pair&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusNMMessageTypes.SA_NAME_pair from an unbound optional field.");
+}
+}
+
+SA__NAME__pair_template::SA__NAME__pair_template(const SA__NAME__pair_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SA__NAME__pair_template::~SA__NAME__pair_template()
+{
+clean_up();
+}
+
+SA__NAME__pair_template& SA__NAME__pair_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SA__NAME__pair_template& SA__NAME__pair_template::operator=(const SA__NAME__pair& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SA__NAME__pair_template& SA__NAME__pair_template::operator=(const OPTIONAL<SA__NAME__pair>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SA__NAME__pair&)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 @IsobusNMMessageTypes.SA_NAME_pair.");
+}
+return *this;
+}
+
+SA__NAME__pair_template& SA__NAME__pair_template::operator=(const SA__NAME__pair_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SA__NAME__pair_template::match(const SA__NAME__pair& 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.sourceAddress().is_bound()) return FALSE;
+if(!single_value->field_sourceAddress.match(other_value.sourceAddress(), legacy))return FALSE;
+if(!other_value.name().is_bound()) return FALSE;
+if(!single_value->field_name.match(other_value.name(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.SA_NAME_pair.");
+}
+return FALSE;
+}
+
+boolean SA__NAME__pair_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_sourceAddress.is_bound()
+
+ ||single_value->field_name.is_bound()
+;
+}
+
+boolean SA__NAME__pair_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_sourceAddress.is_value()
+ &&single_value->field_name.is_value();
+}
+
+void SA__NAME__pair_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SA__NAME__pair SA__NAME__pair_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 @IsobusNMMessageTypes.SA_NAME_pair.");
+SA__NAME__pair ret_val;
+if (single_value->field_sourceAddress.is_bound()) {
+ret_val.sourceAddress() = single_value->field_sourceAddress.valueof();
+}
+if (single_value->field_name.is_bound()) {
+ret_val.name() = single_value->field_name.valueof();
+}
+return ret_val;
+}
+
+void SA__NAME__pair_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.SA_NAME_pair.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SA__NAME__pair_template[list_length];
+}
+
+SA__NAME__pair_template& SA__NAME__pair_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.SA_NAME_pair.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.SA_NAME_pair.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& SA__NAME__pair_template::sourceAddress()
+{
+set_specific();
+return single_value->field_sourceAddress;
+}
+
+const OCTETSTRING_template& SA__NAME__pair_template::sourceAddress() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field sourceAddress of a non-specific template of type @IsobusNMMessageTypes.SA_NAME_pair.");
+return single_value->field_sourceAddress;
+}
+
+NAME_template& SA__NAME__pair_template::name()
+{
+set_specific();
+return single_value->field_name;
+}
+
+const NAME_template& SA__NAME__pair_template::name() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field name of a non-specific template of type @IsobusNMMessageTypes.SA_NAME_pair.");
+return single_value->field_name;
+}
+
+int SA__NAME__pair_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.SA_NAME_pair 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 @IsobusNMMessageTypes.SA_NAME_pair 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 @IsobusNMMessageTypes.SA_NAME_pair containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.SA_NAME_pair containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.SA_NAME_pair containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.SA_NAME_pair containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.SA_NAME_pair.");
+  }
+  return 0;
+}
+
+void SA__NAME__pair_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ sourceAddress := ");
+single_value->field_sourceAddress.log();
+TTCN_Logger::log_event_str(", name := ");
+single_value->field_name.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SA__NAME__pair_template::log_match(const SA__NAME__pair& 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_sourceAddress.match(match_value.sourceAddress(), legacy)){
+TTCN_Logger::log_logmatch_info(".sourceAddress");
+single_value->field_sourceAddress.log_match(match_value.sourceAddress(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_name.match(match_value.name(), legacy)){
+TTCN_Logger::log_logmatch_info(".name");
+single_value->field_name.log_match(match_value.name(), 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("{ sourceAddress := ");
+single_value->field_sourceAddress.log_match(match_value.sourceAddress(), legacy);
+TTCN_Logger::log_event_str(", name := ");
+single_value->field_name.log_match(match_value.name(), 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 SA__NAME__pair_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_sourceAddress.encode_text(text_buf);
+single_value->field_name.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 @IsobusNMMessageTypes.SA_NAME_pair.");
+}
+}
+
+void SA__NAME__pair_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_sourceAddress.decode_text(text_buf);
+single_value->field_name.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 SA__NAME__pair_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 @IsobusNMMessageTypes.SA_NAME_pair.");
+}
+}
+
+void SA__NAME__pair_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: {
+    SA__NAME__pair_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusNMMessageTypes.SA_NAME_pair 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) sourceAddress().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) name().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(), "sourceAddress")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          sourceAddress().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(), "name")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          name().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 @IsobusNMMessageTypes.SA_NAME_pair: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusNMMessageTypes.SA_NAME_pair");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SA__NAME__pair_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_sourceAddress.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.SA_NAME_pair");
+single_value->field_name.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.SA_NAME_pair");
+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 : "@IsobusNMMessageTypes.SA_NAME_pair");
+}
+
+boolean SA__NAME__pair_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SA__NAME__pair_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 SA__NAME__pair N__NTX__Response_sourceaddress__NAME__pairs::UNBOUND_ELEM;
+N__NTX__Response_sourceaddress__NAME__pairs::N__NTX__Response_sourceaddress__NAME__pairs()
+{
+val_ptr = NULL;
+}
+
+N__NTX__Response_sourceaddress__NAME__pairs::N__NTX__Response_sourceaddress__NAME__pairs(null_type)
+{
+val_ptr = new recordof_setof_struct;
+val_ptr->ref_count = 1;
+val_ptr->n_elements = 0;
+val_ptr->value_elements = NULL;
+}
+
+N__NTX__Response_sourceaddress__NAME__pairs::N__NTX__Response_sourceaddress__NAME__pairs(const N__NTX__Response_sourceaddress__NAME__pairs& other_value)
+{
+if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs.");
+val_ptr = other_value.val_ptr;
+val_ptr->ref_count++;
+}
+
+N__NTX__Response_sourceaddress__NAME__pairs::~N__NTX__Response_sourceaddress__NAME__pairs()
+{
+clean_up();
+if (val_ptr != NULL) val_ptr = NULL;
+}
+
+void N__NTX__Response_sourceaddress__NAME__pairs::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.");
+}
+}
+
+N__NTX__Response_sourceaddress__NAME__pairs& N__NTX__Response_sourceaddress__NAME__pairs::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;
+}
+
+N__NTX__Response_sourceaddress__NAME__pairs& N__NTX__Response_sourceaddress__NAME__pairs::operator=(const N__NTX__Response_sourceaddress__NAME__pairs& other_value)
+{
+if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs.");
+if (this != &other_value) {
+clean_up();
+val_ptr = other_value.val_ptr;
+val_ptr->ref_count++;
+}
+return *this;
+}
+
+boolean N__NTX__Response_sourceaddress__NAME__pairs::operator==(null_type) const
+{
+if (val_ptr == NULL)
+TTCN_error("The left operand of comparison is an unbound value of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs.");
+return val_ptr->n_elements == 0 ;
+}
+
+boolean N__NTX__Response_sourceaddress__NAME__pairs::operator==(const N__NTX__Response_sourceaddress__NAME__pairs& other_value) const
+{
+if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs.");
+if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs.");
+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;
+}
+
+SA__NAME__pair& N__NTX__Response_sourceaddress__NAME__pairs::operator[](int index_value)
+{
+if (index_value < 0) TTCN_error("Accessing an element of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs 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 = (SA__NAME__pair**)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 SA__NAME__pair(*(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 SA__NAME__pair;
+}
+return *val_ptr->value_elements[index_value];
+}
+
+SA__NAME__pair& N__NTX__Response_sourceaddress__NAME__pairs::operator[](const INTEGER& index_value)
+{
+index_value.must_bound("Using an unbound integer value for indexing a value of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs.");
+return (*this)[(int)index_value];
+}
+
+const SA__NAME__pair& N__NTX__Response_sourceaddress__NAME__pairs::operator[](int index_value) const
+{
+if (val_ptr == NULL)
+TTCN_error("Accessing an element in an unbound value of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs.");
+if (index_value < 0) TTCN_error("Accessing an element of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs using a negative index: %d.", index_value);
+if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs: 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 SA__NAME__pair& N__NTX__Response_sourceaddress__NAME__pairs::operator[](const INTEGER& index_value) const
+{
+index_value.must_bound("Using an unbound integer value for indexing a value of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs.");
+return (*this)[(int)index_value];
+}
+
+N__NTX__Response_sourceaddress__NAME__pairs N__NTX__Response_sourceaddress__NAME__pairs::operator<<=(int rotate_count) const
+{
+return *this >>= (-rotate_count);
+}
+
+N__NTX__Response_sourceaddress__NAME__pairs N__NTX__Response_sourceaddress__NAME__pairs::operator<<=(const INTEGER& rotate_count) const
+{
+rotate_count.must_bound("Unbound integer operand of rotate left operator.");
+return *this >>= (int)(-rotate_count);
+}
+
+N__NTX__Response_sourceaddress__NAME__pairs N__NTX__Response_sourceaddress__NAME__pairs::operator>>=(const INTEGER& rotate_count) const
+{
+rotate_count.must_bound("Unbound integer operand of rotate right operator.");
+return *this >>= (int)rotate_count;
+}
+
+N__NTX__Response_sourceaddress__NAME__pairs N__NTX__Response_sourceaddress__NAME__pairs::operator>>=(int rotate_count) const
+{
+if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs.");
+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;
+N__NTX__Response_sourceaddress__NAME__pairs 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 SA__NAME__pair(*val_ptr->value_elements[i]);
+}
+}
+return ret_val;
+}
+
+N__NTX__Response_sourceaddress__NAME__pairs N__NTX__Response_sourceaddress__NAME__pairs::operator+(const N__NTX__Response_sourceaddress__NAME__pairs& other_value) const
+{
+if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs concatenation.");
+if (val_ptr->n_elements == 0) return other_value;
+if (other_value.val_ptr->n_elements == 0) return *this;
+N__NTX__Response_sourceaddress__NAME__pairs 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 SA__NAME__pair(*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 SA__NAME__pair(*other_value.val_ptr->value_elements[i]);
+}
+}
+return ret_val;
+}
+
+N__NTX__Response_sourceaddress__NAME__pairs N__NTX__Response_sourceaddress__NAME__pairs::substr(int index, int returncount) const
+{
+if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs.");
+check_substr_arguments(val_ptr->n_elements, index, returncount, "@IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs","element");
+N__NTX__Response_sourceaddress__NAME__pairs 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 SA__NAME__pair(*val_ptr->value_elements[i+index]);
+}
+}
+return ret_val;
+}
+
+N__NTX__Response_sourceaddress__NAME__pairs N__NTX__Response_sourceaddress__NAME__pairs::replace(int index, int len, const N__NTX__Response_sourceaddress__NAME__pairs& repl) const
+{
+if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs.");
+if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs.");
+check_replace_arguments(val_ptr->n_elements, index, len, "@IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs","element");
+N__NTX__Response_sourceaddress__NAME__pairs 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 SA__NAME__pair(*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 SA__NAME__pair(*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 SA__NAME__pair(*val_ptr->value_elements[index+i+len]);
+}
+}
+return ret_val;
+}
+
+N__NTX__Response_sourceaddress__NAME__pairs N__NTX__Response_sourceaddress__NAME__pairs::replace(int index, int len, const N__NTX__Response_sourceaddress__NAME__pairs_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 N__NTX__Response_sourceaddress__NAME__pairs::set_size(int new_size)
+{
+if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs.");
+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 = (SA__NAME__pair**)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 SA__NAME__pair(*(val_ptr->value_elements[elem_count]));
+}
+}
+clean_up();
+val_ptr = new_val_ptr;
+}
+if (new_size > val_ptr->n_elements) {
+val_ptr->value_elements = (SA__NAME__pair**)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 @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs: %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 = (SA__NAME__pair**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size);
+val_ptr->n_elements = new_size;
+}
+}
+
+boolean N__NTX__Response_sourceaddress__NAME__pairs::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 N__NTX__Response_sourceaddress__NAME__pairs::size_of() const
+{
+if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs.");
+return val_ptr->n_elements;
+}
+
+int N__NTX__Response_sourceaddress__NAME__pairs::lengthof() const
+{
+if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs.");
+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 N__NTX__Response_sourceaddress__NAME__pairs::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 N__NTX__Response_sourceaddress__NAME__pairs::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", "@IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs");
+    }
+    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", "@IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs");
+    }
+    break;
+  default:
+    TTCN_error("Internal error: Unknown operation type.");
+  }
+}
+
+void N__NTX__Response_sourceaddress__NAME__pairs::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 N__NTX__Response_sourceaddress__NAME__pairs::encode_text(Text_Buf& text_buf) const
+{
+if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs.");
+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 N__NTX__Response_sourceaddress__NAME__pairs::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 @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs.");
+val_ptr->value_elements = (SA__NAME__pair**)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 SA__NAME__pair;
+val_ptr->value_elements[elem_count]->decode_text(text_buf);
+}
+}
+
+void N__NTX__Response_sourceaddress__NAME__pairs::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void N__NTX__Response_sourceaddress__NAME__pairs::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int N__NTX__Response_sourceaddress__NAME__pairs::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;
+    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) 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 N__NTX__Response_sourceaddress__NAME__pairs::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 N__NTX__Response_sourceaddress__NAME__pairs_template::copy_value(const N__NTX__Response_sourceaddress__NAME__pairs& other_value)
+{
+if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs with an unbound value.");
+single_value.n_elements = other_value.size_of();
+single_value.value_elements = (SA__NAME__pair_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 SA__NAME__pair_template(other_value[elem_count]);
+} else {
+single_value.value_elements[elem_count] = new SA__NAME__pair_template;
+}
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void N__NTX__Response_sourceaddress__NAME__pairs_template::copy_template(const N__NTX__Response_sourceaddress__NAME__pairs_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 = (SA__NAME__pair_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 SA__NAME__pair_template(*other_value.single_value.value_elements[elem_count]);
+} else {
+single_value.value_elements[elem_count] = new SA__NAME__pair_template;
+}
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new N__NTX__Response_sourceaddress__NAME__pairs_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs.");
+break;
+}
+set_selection(other_value);
+}
+
+boolean N__NTX__Response_sourceaddress__NAME__pairs_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 N__NTX__Response_sourceaddress__NAME__pairs_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const N__NTX__Response_sourceaddress__NAME__pairs*)value_ptr)[value_index], legacy);
+else return ((const N__NTX__Response_sourceaddress__NAME__pairs_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit();
+}
+
+N__NTX__Response_sourceaddress__NAME__pairs_template::N__NTX__Response_sourceaddress__NAME__pairs_template()
+{
+}
+
+N__NTX__Response_sourceaddress__NAME__pairs_template::N__NTX__Response_sourceaddress__NAME__pairs_template(template_sel other_value)
+ : Record_Of_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+N__NTX__Response_sourceaddress__NAME__pairs_template::N__NTX__Response_sourceaddress__NAME__pairs_template(null_type)
+ : Record_Of_Template(SPECIFIC_VALUE)
+{
+single_value.n_elements = 0;
+single_value.value_elements = NULL;
+}
+
+N__NTX__Response_sourceaddress__NAME__pairs_template::N__NTX__Response_sourceaddress__NAME__pairs_template(const N__NTX__Response_sourceaddress__NAME__pairs& other_value)
+{
+copy_value(other_value);
+}
+
+N__NTX__Response_sourceaddress__NAME__pairs_template::N__NTX__Response_sourceaddress__NAME__pairs_template(const OPTIONAL<N__NTX__Response_sourceaddress__NAME__pairs>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__NTX__Response_sourceaddress__NAME__pairs&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs from an unbound optional field.");
+}
+}
+
+N__NTX__Response_sourceaddress__NAME__pairs_template::N__NTX__Response_sourceaddress__NAME__pairs_template(const N__NTX__Response_sourceaddress__NAME__pairs_template& other_value)
+ : Record_Of_Template()
+{
+copy_template(other_value);
+}
+
+N__NTX__Response_sourceaddress__NAME__pairs_template::~N__NTX__Response_sourceaddress__NAME__pairs_template()
+{
+clean_up();
+}
+
+void N__NTX__Response_sourceaddress__NAME__pairs_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:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+N__NTX__Response_sourceaddress__NAME__pairs_template& N__NTX__Response_sourceaddress__NAME__pairs_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+N__NTX__Response_sourceaddress__NAME__pairs_template& N__NTX__Response_sourceaddress__NAME__pairs_template::operator=(null_type)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value.n_elements = 0;
+single_value.value_elements = NULL;
+return *this;
+}
+
+N__NTX__Response_sourceaddress__NAME__pairs_template& N__NTX__Response_sourceaddress__NAME__pairs_template::operator=(const N__NTX__Response_sourceaddress__NAME__pairs& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+N__NTX__Response_sourceaddress__NAME__pairs_template& N__NTX__Response_sourceaddress__NAME__pairs_template::operator=(const OPTIONAL<N__NTX__Response_sourceaddress__NAME__pairs>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__NTX__Response_sourceaddress__NAME__pairs&)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 @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs.");
+}
+return *this;
+}
+
+N__NTX__Response_sourceaddress__NAME__pairs_template& N__NTX__Response_sourceaddress__NAME__pairs_template::operator=(const N__NTX__Response_sourceaddress__NAME__pairs_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+SA__NAME__pair_template& N__NTX__Response_sourceaddress__NAME__pairs_template::operator[](int index_value)
+{
+if (index_value < 0) TTCN_error("Accessing an element of a template for type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs 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 @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs.");
+    break;
+}
+return *single_value.value_elements[index_value];
+}
+
+SA__NAME__pair_template& N__NTX__Response_sourceaddress__NAME__pairs_template::operator[](const INTEGER& index_value)
+{
+index_value.must_bound("Using an unbound integer value for indexing a template of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs.");
+return (*this)[(int)index_value];
+}
+
+const SA__NAME__pair_template& N__NTX__Response_sourceaddress__NAME__pairs_template::operator[](int index_value) const
+{
+if (index_value < 0) TTCN_error("Accessing an element of a template for type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs using a negative index: %d.", index_value);
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs.");
+if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs: 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 SA__NAME__pair_template& N__NTX__Response_sourceaddress__NAME__pairs_template::operator[](const INTEGER& index_value) const
+{
+index_value.must_bound("Using an unbound integer value for indexing a template of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs.");
+return (*this)[(int)index_value];
+}
+
+void N__NTX__Response_sourceaddress__NAME__pairs_template::set_size(int new_size)
+{
+if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs.");
+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 = (SA__NAME__pair_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 SA__NAME__pair_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 SA__NAME__pair_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 = (SA__NAME__pair_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size);
+single_value.n_elements = new_size;
+}
+}
+
+int N__NTX__Response_sourceaddress__NAME__pairs_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 N__NTX__Response_sourceaddress__NAME__pairs_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 @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs 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 @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs 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 @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs 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 @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs 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 @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs 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 @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs containing complemented list.", op_name);
+default:
+  TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs.", op_name);
+}
+return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs");
+}
+
+boolean N__NTX__Response_sourceaddress__NAME__pairs_template::match(const N__NTX__Response_sourceaddress__NAME__pairs& 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;
+default:
+TTCN_error("Matching with an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs.");
+}
+return FALSE;
+}
+
+boolean N__NTX__Response_sourceaddress__NAME__pairs_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;
+}
+
+N__NTX__Response_sourceaddress__NAME__pairs N__NTX__Response_sourceaddress__NAME__pairs_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 @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs.");
+N__NTX__Response_sourceaddress__NAME__pairs 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;
+}
+
+N__NTX__Response_sourceaddress__NAME__pairs N__NTX__Response_sourceaddress__NAME__pairs_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);
+}
+
+N__NTX__Response_sourceaddress__NAME__pairs N__NTX__Response_sourceaddress__NAME__pairs_template::replace(int index, int len, const N__NTX__Response_sourceaddress__NAME__pairs_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());
+}
+
+N__NTX__Response_sourceaddress__NAME__pairs N__NTX__Response_sourceaddress__NAME__pairs_template::replace(int index, int len, const N__NTX__Response_sourceaddress__NAME__pairs& 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 N__NTX__Response_sourceaddress__NAME__pairs_template::set_type(template_sel template_type, unsigned int list_length)
+{
+clean_up();
+switch (template_type) {
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = list_length;
+value_list.list_value = new N__NTX__Response_sourceaddress__NAME__pairs_template[list_length];
+break;
+default:
+TTCN_error("Internal error: Setting an invalid type for a template of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs.");
+}
+set_selection(template_type);
+}
+
+N__NTX__Response_sourceaddress__NAME__pairs_template& N__NTX__Response_sourceaddress__NAME__pairs_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs.");
+return value_list.list_value[list_index];
+}
+
+void N__NTX__Response_sourceaddress__NAME__pairs_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 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;
+default:
+log_generic();
+}
+log_restricted();
+log_ifpresent();
+}
+
+void N__NTX__Response_sourceaddress__NAME__pairs_template::log_match(const N__NTX__Response_sourceaddress__NAME__pairs& 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 N__NTX__Response_sourceaddress__NAME__pairs_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 @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs.");
+}
+}
+
+void N__NTX__Response_sourceaddress__NAME__pairs_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 @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs.");
+single_value.value_elements = (SA__NAME__pair_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 SA__NAME__pair_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 N__NTX__Response_sourceaddress__NAME__pairs_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 @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs.");
+}
+}
+
+boolean N__NTX__Response_sourceaddress__NAME__pairs_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean N__NTX__Response_sourceaddress__NAME__pairs_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 N__NTX__Response_sourceaddress__NAME__pairs_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: {
+    N__NTX__Response_sourceaddress__NAME__pairs_template temp;
+    temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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;
+  default:
+    param.type_error("record of template", "@IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs");
+  }
+  is_ifpresent = param.get_ifpresent();
+  set_length_range(param);
+}
+
+void N__NTX__Response_sourceaddress__NAME__pairs_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 : "@IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs");
+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 : "@IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs");
+}
+
+boolean N__NTX__Response_sourceaddress__NAME__pairs_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);
+}
+}
+N__NTX__Response::N__NTX__Response()
+{
+}
+
+N__NTX__Response::N__NTX__Response(const INTEGER& par_msgFunction,
+    const PortNibble& par_portPair,
+    const INTEGER& par_numberOfReportedPorts,
+    const N__NTX__Response_sourceaddress__NAME__pairs& par_sourceaddress__NAME__pairs)
+  :   field_msgFunction(par_msgFunction),
+  field_portPair(par_portPair),
+  field_numberOfReportedPorts(par_numberOfReportedPorts),
+  field_sourceaddress__NAME__pairs(par_sourceaddress__NAME__pairs)
+{
+}
+
+N__NTX__Response::N__NTX__Response(const N__NTX__Response& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_NTX_Response.");
+if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction();
+else field_msgFunction.clean_up();
+if (other_value.portPair().is_bound()) field_portPair = other_value.portPair();
+else field_portPair.clean_up();
+if (other_value.numberOfReportedPorts().is_bound()) field_numberOfReportedPorts = other_value.numberOfReportedPorts();
+else field_numberOfReportedPorts.clean_up();
+if (other_value.sourceaddress__NAME__pairs().is_bound()) field_sourceaddress__NAME__pairs = other_value.sourceaddress__NAME__pairs();
+else field_sourceaddress__NAME__pairs.clean_up();
+}
+
+void N__NTX__Response::clean_up()
+{
+field_msgFunction.clean_up();
+field_portPair.clean_up();
+field_numberOfReportedPorts.clean_up();
+field_sourceaddress__NAME__pairs.clean_up();
+}
+
+const TTCN_Typedescriptor_t* N__NTX__Response::get_descriptor() const { return &N__NTX__Response_descr_; }
+N__NTX__Response& N__NTX__Response::operator=(const N__NTX__Response& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.N_NTX_Response.");
+  if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction();
+  else field_msgFunction.clean_up();
+  if (other_value.portPair().is_bound()) field_portPair = other_value.portPair();
+  else field_portPair.clean_up();
+  if (other_value.numberOfReportedPorts().is_bound()) field_numberOfReportedPorts = other_value.numberOfReportedPorts();
+  else field_numberOfReportedPorts.clean_up();
+  if (other_value.sourceaddress__NAME__pairs().is_bound()) field_sourceaddress__NAME__pairs = other_value.sourceaddress__NAME__pairs();
+  else field_sourceaddress__NAME__pairs.clean_up();
+}
+return *this;
+}
+
+boolean N__NTX__Response::operator==(const N__NTX__Response& other_value) const
+{
+return field_msgFunction==other_value.field_msgFunction
+  && field_portPair==other_value.field_portPair
+  && field_numberOfReportedPorts==other_value.field_numberOfReportedPorts
+  && field_sourceaddress__NAME__pairs==other_value.field_sourceaddress__NAME__pairs;
+}
+
+boolean N__NTX__Response::is_bound() const
+{
+return (field_msgFunction.is_bound())
+  || (field_portPair.is_bound())
+  || (field_numberOfReportedPorts.is_bound())
+  || (field_sourceaddress__NAME__pairs.is_bound());
+}
+boolean N__NTX__Response::is_value() const
+{
+return field_msgFunction.is_value()
+  && field_portPair.is_value()
+  && field_numberOfReportedPorts.is_value()
+  && field_sourceaddress__NAME__pairs.is_value();
+}
+void N__NTX__Response::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ msgFunction := ");
+field_msgFunction.log();
+TTCN_Logger::log_event_str(", portPair := ");
+field_portPair.log();
+TTCN_Logger::log_event_str(", numberOfReportedPorts := ");
+field_numberOfReportedPorts.log();
+TTCN_Logger::log_event_str(", sourceaddress_NAME_pairs := ");
+field_sourceaddress__NAME__pairs.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void N__NTX__Response::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 @IsobusNMMessageTypes.N_NTX_Response 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) msgFunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) numberOfReportedPorts().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) sourceaddress__NAME__pairs().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(), "msgFunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgFunction().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(), "portPair")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          portPair().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(), "numberOfReportedPorts")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          numberOfReportedPorts().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(), "sourceaddress_NAME_pairs")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          sourceaddress__NAME__pairs().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 @IsobusNMMessageTypes.N_NTX_Response: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusNMMessageTypes.N_NTX_Response");
+  }
+}
+
+void N__NTX__Response::set_implicit_omit()
+{
+if (msgFunction().is_bound()) msgFunction().set_implicit_omit();
+if (portPair().is_bound()) portPair().set_implicit_omit();
+if (numberOfReportedPorts().is_bound()) numberOfReportedPorts().set_implicit_omit();
+if (sourceaddress__NAME__pairs().is_bound()) sourceaddress__NAME__pairs().set_implicit_omit();
+}
+
+void N__NTX__Response::encode_text(Text_Buf& text_buf) const
+{
+field_msgFunction.encode_text(text_buf);
+field_portPair.encode_text(text_buf);
+field_numberOfReportedPorts.encode_text(text_buf);
+field_sourceaddress__NAME__pairs.encode_text(text_buf);
+}
+
+void N__NTX__Response::decode_text(Text_Buf& text_buf)
+{
+field_msgFunction.decode_text(text_buf);
+field_portPair.decode_text(text_buf);
+field_numberOfReportedPorts.decode_text(text_buf);
+field_sourceaddress__NAME__pairs.decode_text(text_buf);
+}
+
+void N__NTX__Response::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void N__NTX__Response::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int N__NTX__Response::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;
+  int value_of_length_field2 = 0;
+  RAW_Force_Omit field_0_force_omit(0, force_omit, Function_descr_.raw->forceomit);
+  decoded_field_length = field_msgFunction.RAW_decode(Function_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, PortNibble_descr_.raw->forceomit);
+  decoded_field_length = field_portPair.RAW_decode(PortNibble_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, N__NTX__Response_numberOfReportedPorts_descr_.raw->forceomit);
+  decoded_field_length = field_numberOfReportedPorts.RAW_decode(N__NTX__Response_numberOfReportedPorts_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());
+  value_of_length_field2+=field_numberOfReportedPorts.get_long_long_val()*1;
+  RAW_Force_Omit field_3_force_omit(3, force_omit, N__NTX__Response_sourceaddress__NAME__pairs_descr_.raw->forceomit);
+  decoded_field_length = field_sourceaddress__NAME__pairs.RAW_decode(N__NTX__Response_sourceaddress__NAME__pairs_descr_, p_buf, limit, local_top_order, no_err, value_of_length_field2, 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;
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int N__NTX__Response::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, Function_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PortNibble_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, N__NTX__Response_numberOfReportedPorts_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, N__NTX__Response_sourceaddress__NAME__pairs_descr_.raw);
+  encoded_length += field_msgFunction.RAW_encode(Function_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_portPair.RAW_encode(PortNibble_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += 8;
+  myleaf.body.node.nodes[2]->calc = CALC_LENGTH;
+  myleaf.body.node.nodes[2]->coding_descr = &N__NTX__Response_numberOfReportedPorts_descr_;
+  myleaf.body.node.nodes[2]->calcof.lengthto.num_of_fields = 1;
+  myleaf.body.node.nodes[2]->calcof.lengthto.unit = -1;
+  myleaf.body.node.nodes[2]->calcof.lengthto.offset = 0;
+  myleaf.body.node.nodes[2]->calcof.lengthto.fields = init_lengthto_fields_list(1);
+  myleaf.body.node.nodes[2]->length = 8;
+  myleaf.body.node.nodes[2]->calcof.lengthto.fields[0].level = myleaf.body.node.nodes[3]->curr_pos.level;
+  myleaf.body.node.nodes[2]->calcof.lengthto.fields[0].pos = myleaf.body.node.nodes[3]->curr_pos.pos;
+  encoded_length += field_sourceaddress__NAME__pairs.RAW_encode(N__NTX__Response_sourceaddress__NAME__pairs_descr_, *myleaf.body.node.nodes[3]);
+  return myleaf.length = encoded_length;
+}
+
+struct N__NTX__Response_template::single_value_struct {
+INTEGER_template field_msgFunction;
+PortNibble_template field_portPair;
+INTEGER_template field_numberOfReportedPorts;
+N__NTX__Response_sourceaddress__NAME__pairs_template field_sourceaddress__NAME__pairs;
+};
+
+void N__NTX__Response_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_msgFunction = ANY_VALUE;
+single_value->field_portPair = ANY_VALUE;
+single_value->field_numberOfReportedPorts = ANY_VALUE;
+single_value->field_sourceaddress__NAME__pairs = ANY_VALUE;
+}
+}
+}
+
+void N__NTX__Response_template::copy_value(const N__NTX__Response& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.msgFunction().is_bound()) {
+  single_value->field_msgFunction = other_value.msgFunction();
+} else {
+  single_value->field_msgFunction.clean_up();
+}
+if (other_value.portPair().is_bound()) {
+  single_value->field_portPair = other_value.portPair();
+} else {
+  single_value->field_portPair.clean_up();
+}
+if (other_value.numberOfReportedPorts().is_bound()) {
+  single_value->field_numberOfReportedPorts = other_value.numberOfReportedPorts();
+} else {
+  single_value->field_numberOfReportedPorts.clean_up();
+}
+if (other_value.sourceaddress__NAME__pairs().is_bound()) {
+  single_value->field_sourceaddress__NAME__pairs = other_value.sourceaddress__NAME__pairs();
+} else {
+  single_value->field_sourceaddress__NAME__pairs.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void N__NTX__Response_template::copy_template(const N__NTX__Response_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.msgFunction().get_selection()) {
+single_value->field_msgFunction = other_value.msgFunction();
+} else {
+single_value->field_msgFunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.portPair().get_selection()) {
+single_value->field_portPair = other_value.portPair();
+} else {
+single_value->field_portPair.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.numberOfReportedPorts().get_selection()) {
+single_value->field_numberOfReportedPorts = other_value.numberOfReportedPorts();
+} else {
+single_value->field_numberOfReportedPorts.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.sourceaddress__NAME__pairs().get_selection()) {
+single_value->field_sourceaddress__NAME__pairs = other_value.sourceaddress__NAME__pairs();
+} else {
+single_value->field_sourceaddress__NAME__pairs.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new N__NTX__Response_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_NTX_Response.");
+break;
+}
+set_selection(other_value);
+}
+
+N__NTX__Response_template::N__NTX__Response_template()
+{
+}
+
+N__NTX__Response_template::N__NTX__Response_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+N__NTX__Response_template::N__NTX__Response_template(const N__NTX__Response& other_value)
+{
+copy_value(other_value);
+}
+
+N__NTX__Response_template::N__NTX__Response_template(const OPTIONAL<N__NTX__Response>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__NTX__Response&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_NTX_Response from an unbound optional field.");
+}
+}
+
+N__NTX__Response_template::N__NTX__Response_template(const N__NTX__Response_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+N__NTX__Response_template::~N__NTX__Response_template()
+{
+clean_up();
+}
+
+N__NTX__Response_template& N__NTX__Response_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+N__NTX__Response_template& N__NTX__Response_template::operator=(const N__NTX__Response& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+N__NTX__Response_template& N__NTX__Response_template::operator=(const OPTIONAL<N__NTX__Response>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__NTX__Response&)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 @IsobusNMMessageTypes.N_NTX_Response.");
+}
+return *this;
+}
+
+N__NTX__Response_template& N__NTX__Response_template::operator=(const N__NTX__Response_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean N__NTX__Response_template::match(const N__NTX__Response& 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.msgFunction().is_bound()) return FALSE;
+if(!single_value->field_msgFunction.match(other_value.msgFunction(), legacy))return FALSE;
+if(!other_value.portPair().is_bound()) return FALSE;
+if(!single_value->field_portPair.match(other_value.portPair(), legacy))return FALSE;
+if(!other_value.numberOfReportedPorts().is_bound()) return FALSE;
+if(!single_value->field_numberOfReportedPorts.match(other_value.numberOfReportedPorts(), legacy))return FALSE;
+if(!other_value.sourceaddress__NAME__pairs().is_bound()) return FALSE;
+if(!single_value->field_sourceaddress__NAME__pairs.match(other_value.sourceaddress__NAME__pairs(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_NTX_Response.");
+}
+return FALSE;
+}
+
+boolean N__NTX__Response_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_msgFunction.is_bound()
+
+ ||single_value->field_portPair.is_bound()
+
+ ||single_value->field_numberOfReportedPorts.is_bound()
+
+ ||single_value->field_sourceaddress__NAME__pairs.is_bound()
+;
+}
+
+boolean N__NTX__Response_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_msgFunction.is_value()
+ &&single_value->field_portPair.is_value()
+ &&single_value->field_numberOfReportedPorts.is_value()
+ &&single_value->field_sourceaddress__NAME__pairs.is_value();
+}
+
+void N__NTX__Response_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+N__NTX__Response N__NTX__Response_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 @IsobusNMMessageTypes.N_NTX_Response.");
+N__NTX__Response ret_val;
+if (single_value->field_msgFunction.is_bound()) {
+ret_val.msgFunction() = single_value->field_msgFunction.valueof();
+}
+if (single_value->field_portPair.is_bound()) {
+ret_val.portPair() = single_value->field_portPair.valueof();
+}
+if (single_value->field_numberOfReportedPorts.is_bound()) {
+ret_val.numberOfReportedPorts() = single_value->field_numberOfReportedPorts.valueof();
+}
+if (single_value->field_sourceaddress__NAME__pairs.is_bound()) {
+ret_val.sourceaddress__NAME__pairs() = single_value->field_sourceaddress__NAME__pairs.valueof();
+}
+return ret_val;
+}
+
+void N__NTX__Response_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.N_NTX_Response.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new N__NTX__Response_template[list_length];
+}
+
+N__NTX__Response_template& N__NTX__Response_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_NTX_Response.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.N_NTX_Response.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& N__NTX__Response_template::msgFunction()
+{
+set_specific();
+return single_value->field_msgFunction;
+}
+
+const INTEGER_template& N__NTX__Response_template::msgFunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field msgFunction of a non-specific template of type @IsobusNMMessageTypes.N_NTX_Response.");
+return single_value->field_msgFunction;
+}
+
+PortNibble_template& N__NTX__Response_template::portPair()
+{
+set_specific();
+return single_value->field_portPair;
+}
+
+const PortNibble_template& N__NTX__Response_template::portPair() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field portPair of a non-specific template of type @IsobusNMMessageTypes.N_NTX_Response.");
+return single_value->field_portPair;
+}
+
+INTEGER_template& N__NTX__Response_template::numberOfReportedPorts()
+{
+set_specific();
+return single_value->field_numberOfReportedPorts;
+}
+
+const INTEGER_template& N__NTX__Response_template::numberOfReportedPorts() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field numberOfReportedPorts of a non-specific template of type @IsobusNMMessageTypes.N_NTX_Response.");
+return single_value->field_numberOfReportedPorts;
+}
+
+N__NTX__Response_sourceaddress__NAME__pairs_template& N__NTX__Response_template::sourceaddress__NAME__pairs()
+{
+set_specific();
+return single_value->field_sourceaddress__NAME__pairs;
+}
+
+const N__NTX__Response_sourceaddress__NAME__pairs_template& N__NTX__Response_template::sourceaddress__NAME__pairs() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field sourceaddress_NAME_pairs of a non-specific template of type @IsobusNMMessageTypes.N_NTX_Response.");
+return single_value->field_sourceaddress__NAME__pairs;
+}
+
+int N__NTX__Response_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_NTX_Response 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 @IsobusNMMessageTypes.N_NTX_Response 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 @IsobusNMMessageTypes.N_NTX_Response containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_NTX_Response containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_NTX_Response containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_NTX_Response containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_NTX_Response.");
+  }
+  return 0;
+}
+
+void N__NTX__Response_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ msgFunction := ");
+single_value->field_msgFunction.log();
+TTCN_Logger::log_event_str(", portPair := ");
+single_value->field_portPair.log();
+TTCN_Logger::log_event_str(", numberOfReportedPorts := ");
+single_value->field_numberOfReportedPorts.log();
+TTCN_Logger::log_event_str(", sourceaddress_NAME_pairs := ");
+single_value->field_sourceaddress__NAME__pairs.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void N__NTX__Response_template::log_match(const N__NTX__Response& 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_msgFunction.match(match_value.msgFunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".msgFunction");
+single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_portPair.match(match_value.portPair(), legacy)){
+TTCN_Logger::log_logmatch_info(".portPair");
+single_value->field_portPair.log_match(match_value.portPair(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_numberOfReportedPorts.match(match_value.numberOfReportedPorts(), legacy)){
+TTCN_Logger::log_logmatch_info(".numberOfReportedPorts");
+single_value->field_numberOfReportedPorts.log_match(match_value.numberOfReportedPorts(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_sourceaddress__NAME__pairs.match(match_value.sourceaddress__NAME__pairs(), legacy)){
+TTCN_Logger::log_logmatch_info(".sourceaddress_NAME_pairs");
+single_value->field_sourceaddress__NAME__pairs.log_match(match_value.sourceaddress__NAME__pairs(), 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("{ msgFunction := ");
+single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy);
+TTCN_Logger::log_event_str(", portPair := ");
+single_value->field_portPair.log_match(match_value.portPair(), legacy);
+TTCN_Logger::log_event_str(", numberOfReportedPorts := ");
+single_value->field_numberOfReportedPorts.log_match(match_value.numberOfReportedPorts(), legacy);
+TTCN_Logger::log_event_str(", sourceaddress_NAME_pairs := ");
+single_value->field_sourceaddress__NAME__pairs.log_match(match_value.sourceaddress__NAME__pairs(), 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 N__NTX__Response_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_msgFunction.encode_text(text_buf);
+single_value->field_portPair.encode_text(text_buf);
+single_value->field_numberOfReportedPorts.encode_text(text_buf);
+single_value->field_sourceaddress__NAME__pairs.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 @IsobusNMMessageTypes.N_NTX_Response.");
+}
+}
+
+void N__NTX__Response_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_msgFunction.decode_text(text_buf);
+single_value->field_portPair.decode_text(text_buf);
+single_value->field_numberOfReportedPorts.decode_text(text_buf);
+single_value->field_sourceaddress__NAME__pairs.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 N__NTX__Response_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 @IsobusNMMessageTypes.N_NTX_Response.");
+}
+}
+
+void N__NTX__Response_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: {
+    N__NTX__Response_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusNMMessageTypes.N_NTX_Response 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) msgFunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) numberOfReportedPorts().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) sourceaddress__NAME__pairs().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(), "msgFunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgFunction().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(), "portPair")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          portPair().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(), "numberOfReportedPorts")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          numberOfReportedPorts().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(), "sourceaddress_NAME_pairs")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          sourceaddress__NAME__pairs().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 @IsobusNMMessageTypes.N_NTX_Response: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusNMMessageTypes.N_NTX_Response");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void N__NTX__Response_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_msgFunction.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NTX_Response");
+single_value->field_portPair.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NTX_Response");
+single_value->field_numberOfReportedPorts.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NTX_Response");
+single_value->field_sourceaddress__NAME__pairs.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_NTX_Response");
+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 : "@IsobusNMMessageTypes.N_NTX_Response");
+}
+
+boolean N__NTX__Response_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean N__NTX__Response_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+e__ParametricIdentifier::e__ParametricIdentifier()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+e__ParametricIdentifier::e__ParametricIdentifier(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+e__ParametricIdentifier::e__ParametricIdentifier(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+e__ParametricIdentifier::e__ParametricIdentifier(const e__ParametricIdentifier& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier.");
+enum_value = other_value.enum_value;
+}
+
+e__ParametricIdentifier& e__ParametricIdentifier::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+e__ParametricIdentifier& e__ParametricIdentifier::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+e__ParametricIdentifier& e__ParametricIdentifier::operator=(const e__ParametricIdentifier& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean e__ParametricIdentifier::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier.");
+return enum_value == other_value;
+}
+
+boolean e__ParametricIdentifier::operator==(const e__ParametricIdentifier& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier.");
+return enum_value == other_value.enum_value;
+}
+
+boolean e__ParametricIdentifier::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier.");
+return enum_value < other_value;
+}
+
+boolean e__ParametricIdentifier::operator<(const e__ParametricIdentifier& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier.");
+return enum_value < other_value.enum_value;
+}
+
+boolean e__ParametricIdentifier::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier.");
+return enum_value > other_value;
+}
+
+boolean e__ParametricIdentifier::operator>(const e__ParametricIdentifier& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier.");
+return enum_value > other_value.enum_value;
+}
+
+const char *e__ParametricIdentifier::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case requestAllParameters: return "requestAllParameters";
+case buffersize: return "buffersize";
+case maximumFilterDatabaseSize: return "maximumFilterDatabaseSize";
+case numberOfFilterDatabaseEntries: return "numberOfFilterDatabaseEntries";
+case maximumNumberOfMessagesReceivedPerSecond: return "maximumNumberOfMessagesReceivedPerSecond";
+case maximumNumberOfMessagesForwardedPerSecond: return "maximumNumberOfMessagesForwardedPerSecond";
+case maximumNumberOfMessagesFilteredPerSecond: return "maximumNumberOfMessagesFilteredPerSecond";
+case maximumTransitDelayTime__ms: return "maximumTransitDelayTime_ms";
+case averageTransitDelayTime__ms: return "averageTransitDelayTime_ms";
+case numberOfMessagesLostDueToBufferOverflow: return "numberOfMessagesLostDueToBufferOverflow";
+case numberOfMessagesWithExcessTransitDelayTime: return "numberOfMessagesWithExcessTransitDelayTime";
+case averageNumberOfMessagesReceivedPerSecond: return "averageNumberOfMessagesReceivedPerSecond";
+case averageNumberOfMessagesForwardedPerSecond: return "averageNumberOfMessagesForwardedPerSecond";
+case averageNumberOfMessagesFilteredPerSecond: return "averageNumberOfMessagesFilteredPerSecond";
+case uptimeSinceLastPowerOnReset__s: return "uptimeSinceLastPowerOnReset_s";
+case numberOfPorts: return "numberOfPorts";
+case networkInterconnectionUnitType: return "networkInterconnectionUnitType";
+case reserved: return "reserved";
+default: return "<unknown>";
+}
+}
+
+e__ParametricIdentifier::enum_type e__ParametricIdentifier::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "requestAllParameters")) return requestAllParameters;
+else if (!strcmp(str_par, "buffersize")) return buffersize;
+else if (!strcmp(str_par, "maximumFilterDatabaseSize")) return maximumFilterDatabaseSize;
+else if (!strcmp(str_par, "numberOfFilterDatabaseEntries")) return numberOfFilterDatabaseEntries;
+else if (!strcmp(str_par, "maximumNumberOfMessagesReceivedPerSecond")) return maximumNumberOfMessagesReceivedPerSecond;
+else if (!strcmp(str_par, "maximumNumberOfMessagesForwardedPerSecond")) return maximumNumberOfMessagesForwardedPerSecond;
+else if (!strcmp(str_par, "maximumNumberOfMessagesFilteredPerSecond")) return maximumNumberOfMessagesFilteredPerSecond;
+else if (!strcmp(str_par, "maximumTransitDelayTime_ms")) return maximumTransitDelayTime__ms;
+else if (!strcmp(str_par, "averageTransitDelayTime_ms")) return averageTransitDelayTime__ms;
+else if (!strcmp(str_par, "numberOfMessagesLostDueToBufferOverflow")) return numberOfMessagesLostDueToBufferOverflow;
+else if (!strcmp(str_par, "numberOfMessagesWithExcessTransitDelayTime")) return numberOfMessagesWithExcessTransitDelayTime;
+else if (!strcmp(str_par, "averageNumberOfMessagesReceivedPerSecond")) return averageNumberOfMessagesReceivedPerSecond;
+else if (!strcmp(str_par, "averageNumberOfMessagesForwardedPerSecond")) return averageNumberOfMessagesForwardedPerSecond;
+else if (!strcmp(str_par, "averageNumberOfMessagesFilteredPerSecond")) return averageNumberOfMessagesFilteredPerSecond;
+else if (!strcmp(str_par, "uptimeSinceLastPowerOnReset_s")) return uptimeSinceLastPowerOnReset__s;
+else if (!strcmp(str_par, "numberOfPorts")) return numberOfPorts;
+else if (!strcmp(str_par, "networkInterconnectionUnitType")) return networkInterconnectionUnitType;
+else if (!strcmp(str_par, "reserved")) return reserved;
+else return UNKNOWN_VALUE;
+}
+
+boolean e__ParametricIdentifier::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 0:
+case 1:
+case 2:
+case 3:
+case 4:
+case 5:
+case 6:
+case 7:
+case 8:
+case 9:
+case 10:
+case 11:
+case 12:
+case 13:
+case 14:
+case 15:
+case 16:
+case 255:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int e__ParametricIdentifier::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int e__ParametricIdentifier::enum2int(const e__ParametricIdentifier& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void e__ParametricIdentifier::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+e__ParametricIdentifier::operator e__ParametricIdentifier::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier.");
+return enum_value;
+}
+
+void e__ParametricIdentifier::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void e__ParametricIdentifier::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@IsobusNMMessageTypes.e_ParametricIdentifier");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @IsobusNMMessageTypes.e_ParametricIdentifier.");
+  }
+}
+
+void e__ParametricIdentifier::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier.");
+text_buf.push_int(enum_value);
+}
+
+void e__ParametricIdentifier::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier.", enum_value);
+}
+
+void e__ParametricIdentifier::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void e__ParametricIdentifier::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int e__ParametricIdentifier::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*)
+{
+  int decoded_value = 0;
+  int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 8, no_err);
+  if (decoded_length < 0) return decoded_length;
+  if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value;
+  else {
+    if(no_err){
+     return -1;
+    } else {
+    TTCN_EncDec_ErrorContext::error
+      (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name);
+    enum_value = UNKNOWN_VALUE;
+    }
+  }
+  return decoded_length;
+}
+
+int e__ParametricIdentifier::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const
+{
+  return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 8);
+}
+
+void e__ParametricIdentifier_template::copy_template(const e__ParametricIdentifier_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new e__ParametricIdentifier_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier.");
+}
+}
+
+e__ParametricIdentifier_template::e__ParametricIdentifier_template()
+{
+}
+
+e__ParametricIdentifier_template::e__ParametricIdentifier_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+e__ParametricIdentifier_template::e__ParametricIdentifier_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!e__ParametricIdentifier::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier with unknown numeric value %d.", other_value);
+single_value = (e__ParametricIdentifier::enum_type)other_value;
+}
+
+e__ParametricIdentifier_template::e__ParametricIdentifier_template(e__ParametricIdentifier::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+e__ParametricIdentifier_template::e__ParametricIdentifier_template(const e__ParametricIdentifier& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == e__ParametricIdentifier::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier.");
+single_value = other_value.enum_value;
+}
+
+e__ParametricIdentifier_template::e__ParametricIdentifier_template(const OPTIONAL<e__ParametricIdentifier>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__ParametricIdentifier::enum_type)(const e__ParametricIdentifier&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier from an unbound optional field.");
+}
+}
+
+e__ParametricIdentifier_template::e__ParametricIdentifier_template(const e__ParametricIdentifier_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+e__ParametricIdentifier_template::~e__ParametricIdentifier_template()
+{
+clean_up();
+}
+
+boolean e__ParametricIdentifier_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean e__ParametricIdentifier_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != e__ParametricIdentifier::UNBOUND_VALUE;
+}
+
+void e__ParametricIdentifier_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+e__ParametricIdentifier_template& e__ParametricIdentifier_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+e__ParametricIdentifier_template& e__ParametricIdentifier_template::operator=(int other_value)
+{
+if (!e__ParametricIdentifier::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (e__ParametricIdentifier::enum_type)other_value;
+return *this;
+}
+
+e__ParametricIdentifier_template& e__ParametricIdentifier_template::operator=(e__ParametricIdentifier::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+e__ParametricIdentifier_template& e__ParametricIdentifier_template::operator=(const e__ParametricIdentifier& other_value)
+{
+if (other_value.enum_value == e__ParametricIdentifier::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+e__ParametricIdentifier_template& e__ParametricIdentifier_template::operator=(const OPTIONAL<e__ParametricIdentifier>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__ParametricIdentifier::enum_type)(const e__ParametricIdentifier&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier.");
+}
+return *this;
+}
+
+e__ParametricIdentifier_template& e__ParametricIdentifier_template::operator=(const e__ParametricIdentifier_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean e__ParametricIdentifier_template::match(e__ParametricIdentifier::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier.");
+}
+return FALSE;
+}
+
+boolean e__ParametricIdentifier_template::match(const e__ParametricIdentifier& other_value, boolean) const
+{
+if (other_value.enum_value == e__ParametricIdentifier::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier with an unbound value.");
+return match(other_value.enum_value);
+}
+
+e__ParametricIdentifier::enum_type e__ParametricIdentifier_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier.");
+return single_value;
+}
+
+void e__ParametricIdentifier_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new e__ParametricIdentifier_template[list_length];
+}
+
+e__ParametricIdentifier_template& e__ParametricIdentifier_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier.");
+return value_list.list_value[list_index];
+}
+
+void e__ParametricIdentifier_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(e__ParametricIdentifier::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void e__ParametricIdentifier_template::log_match(const e__ParametricIdentifier& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void e__ParametricIdentifier_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier.");
+}
+}
+
+void e__ParametricIdentifier_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (e__ParametricIdentifier::enum_type)text_buf.pull_int().get_val();
+if (!e__ParametricIdentifier::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier.", single_value);
+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 e__ParametricIdentifier_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @IsobusNMMessageTypes.e_ParametricIdentifier.");
+}
+}
+
+boolean e__ParametricIdentifier_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean e__ParametricIdentifier_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 e__ParametricIdentifier_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    e__ParametricIdentifier_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    e__ParametricIdentifier::enum_type enum_val = e__ParametricIdentifier::str_to_enum(m_p->get_enumerated());
+    if (!e__ParametricIdentifier::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @IsobusNMMessageTypes.e_ParametricIdentifier.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@IsobusNMMessageTypes.e_ParametricIdentifier");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void e__ParametricIdentifier_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@IsobusNMMessageTypes.e_ParametricIdentifier");
+}
+
+
+const e__ParametricIdentifier N__GP__Request_parametricIdentifiers::UNBOUND_ELEM;
+N__GP__Request_parametricIdentifiers::N__GP__Request_parametricIdentifiers()
+{
+val_ptr = NULL;
+}
+
+N__GP__Request_parametricIdentifiers::N__GP__Request_parametricIdentifiers(null_type)
+{
+val_ptr = new recordof_setof_struct;
+val_ptr->ref_count = 1;
+val_ptr->n_elements = 0;
+val_ptr->value_elements = NULL;
+}
+
+N__GP__Request_parametricIdentifiers::N__GP__Request_parametricIdentifiers(const N__GP__Request_parametricIdentifiers& other_value)
+{
+if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers.");
+val_ptr = other_value.val_ptr;
+val_ptr->ref_count++;
+}
+
+N__GP__Request_parametricIdentifiers::~N__GP__Request_parametricIdentifiers()
+{
+clean_up();
+if (val_ptr != NULL) val_ptr = NULL;
+}
+
+void N__GP__Request_parametricIdentifiers::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.");
+}
+}
+
+N__GP__Request_parametricIdentifiers& N__GP__Request_parametricIdentifiers::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;
+}
+
+N__GP__Request_parametricIdentifiers& N__GP__Request_parametricIdentifiers::operator=(const N__GP__Request_parametricIdentifiers& other_value)
+{
+if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers.");
+if (this != &other_value) {
+clean_up();
+val_ptr = other_value.val_ptr;
+val_ptr->ref_count++;
+}
+return *this;
+}
+
+boolean N__GP__Request_parametricIdentifiers::operator==(null_type) const
+{
+if (val_ptr == NULL)
+TTCN_error("The left operand of comparison is an unbound value of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers.");
+return val_ptr->n_elements == 0 ;
+}
+
+boolean N__GP__Request_parametricIdentifiers::operator==(const N__GP__Request_parametricIdentifiers& other_value) const
+{
+if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers.");
+if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers.");
+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;
+}
+
+e__ParametricIdentifier& N__GP__Request_parametricIdentifiers::operator[](int index_value)
+{
+if (index_value < 0) TTCN_error("Accessing an element of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers 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 = (e__ParametricIdentifier**)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 e__ParametricIdentifier(*(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 e__ParametricIdentifier;
+}
+return *val_ptr->value_elements[index_value];
+}
+
+e__ParametricIdentifier& N__GP__Request_parametricIdentifiers::operator[](const INTEGER& index_value)
+{
+index_value.must_bound("Using an unbound integer value for indexing a value of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers.");
+return (*this)[(int)index_value];
+}
+
+const e__ParametricIdentifier& N__GP__Request_parametricIdentifiers::operator[](int index_value) const
+{
+if (val_ptr == NULL)
+TTCN_error("Accessing an element in an unbound value of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers.");
+if (index_value < 0) TTCN_error("Accessing an element of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers using a negative index: %d.", index_value);
+if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers: 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 e__ParametricIdentifier& N__GP__Request_parametricIdentifiers::operator[](const INTEGER& index_value) const
+{
+index_value.must_bound("Using an unbound integer value for indexing a value of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers.");
+return (*this)[(int)index_value];
+}
+
+N__GP__Request_parametricIdentifiers N__GP__Request_parametricIdentifiers::operator<<=(int rotate_count) const
+{
+return *this >>= (-rotate_count);
+}
+
+N__GP__Request_parametricIdentifiers N__GP__Request_parametricIdentifiers::operator<<=(const INTEGER& rotate_count) const
+{
+rotate_count.must_bound("Unbound integer operand of rotate left operator.");
+return *this >>= (int)(-rotate_count);
+}
+
+N__GP__Request_parametricIdentifiers N__GP__Request_parametricIdentifiers::operator>>=(const INTEGER& rotate_count) const
+{
+rotate_count.must_bound("Unbound integer operand of rotate right operator.");
+return *this >>= (int)rotate_count;
+}
+
+N__GP__Request_parametricIdentifiers N__GP__Request_parametricIdentifiers::operator>>=(int rotate_count) const
+{
+if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers.");
+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;
+N__GP__Request_parametricIdentifiers 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 e__ParametricIdentifier(*val_ptr->value_elements[i]);
+}
+}
+return ret_val;
+}
+
+N__GP__Request_parametricIdentifiers N__GP__Request_parametricIdentifiers::operator+(const N__GP__Request_parametricIdentifiers& other_value) const
+{
+if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers concatenation.");
+if (val_ptr->n_elements == 0) return other_value;
+if (other_value.val_ptr->n_elements == 0) return *this;
+N__GP__Request_parametricIdentifiers 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 e__ParametricIdentifier(*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 e__ParametricIdentifier(*other_value.val_ptr->value_elements[i]);
+}
+}
+return ret_val;
+}
+
+N__GP__Request_parametricIdentifiers N__GP__Request_parametricIdentifiers::substr(int index, int returncount) const
+{
+if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers.");
+check_substr_arguments(val_ptr->n_elements, index, returncount, "@IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers","element");
+N__GP__Request_parametricIdentifiers 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 e__ParametricIdentifier(*val_ptr->value_elements[i+index]);
+}
+}
+return ret_val;
+}
+
+N__GP__Request_parametricIdentifiers N__GP__Request_parametricIdentifiers::replace(int index, int len, const N__GP__Request_parametricIdentifiers& repl) const
+{
+if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers.");
+if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers.");
+check_replace_arguments(val_ptr->n_elements, index, len, "@IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers","element");
+N__GP__Request_parametricIdentifiers 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 e__ParametricIdentifier(*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 e__ParametricIdentifier(*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 e__ParametricIdentifier(*val_ptr->value_elements[index+i+len]);
+}
+}
+return ret_val;
+}
+
+N__GP__Request_parametricIdentifiers N__GP__Request_parametricIdentifiers::replace(int index, int len, const N__GP__Request_parametricIdentifiers_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 N__GP__Request_parametricIdentifiers::set_size(int new_size)
+{
+if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers.");
+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 = (e__ParametricIdentifier**)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 e__ParametricIdentifier(*(val_ptr->value_elements[elem_count]));
+}
+}
+clean_up();
+val_ptr = new_val_ptr;
+}
+if (new_size > val_ptr->n_elements) {
+val_ptr->value_elements = (e__ParametricIdentifier**)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 @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers: %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 = (e__ParametricIdentifier**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size);
+val_ptr->n_elements = new_size;
+}
+}
+
+boolean N__GP__Request_parametricIdentifiers::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 N__GP__Request_parametricIdentifiers::size_of() const
+{
+if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers.");
+return val_ptr->n_elements;
+}
+
+int N__GP__Request_parametricIdentifiers::lengthof() const
+{
+if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers.");
+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 N__GP__Request_parametricIdentifiers::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 N__GP__Request_parametricIdentifiers::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", "@IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers");
+    }
+    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", "@IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers");
+    }
+    break;
+  default:
+    TTCN_error("Internal error: Unknown operation type.");
+  }
+}
+
+void N__GP__Request_parametricIdentifiers::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 N__GP__Request_parametricIdentifiers::encode_text(Text_Buf& text_buf) const
+{
+if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers.");
+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 N__GP__Request_parametricIdentifiers::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 @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers.");
+val_ptr->value_elements = (e__ParametricIdentifier**)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 e__ParametricIdentifier;
+val_ptr->value_elements[elem_count]->decode_text(text_buf);
+}
+}
+
+void N__GP__Request_parametricIdentifiers::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void N__GP__Request_parametricIdentifiers::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int N__GP__Request_parametricIdentifiers::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;
+    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) 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 N__GP__Request_parametricIdentifiers::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 N__GP__Request_parametricIdentifiers_template::copy_value(const N__GP__Request_parametricIdentifiers& other_value)
+{
+if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers with an unbound value.");
+single_value.n_elements = other_value.size_of();
+single_value.value_elements = (e__ParametricIdentifier_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 e__ParametricIdentifier_template(other_value[elem_count]);
+} else {
+single_value.value_elements[elem_count] = new e__ParametricIdentifier_template;
+}
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void N__GP__Request_parametricIdentifiers_template::copy_template(const N__GP__Request_parametricIdentifiers_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 = (e__ParametricIdentifier_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 e__ParametricIdentifier_template(*other_value.single_value.value_elements[elem_count]);
+} else {
+single_value.value_elements[elem_count] = new e__ParametricIdentifier_template;
+}
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new N__GP__Request_parametricIdentifiers_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers.");
+break;
+}
+set_selection(other_value);
+}
+
+boolean N__GP__Request_parametricIdentifiers_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 N__GP__Request_parametricIdentifiers_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const N__GP__Request_parametricIdentifiers*)value_ptr)[value_index], legacy);
+else return ((const N__GP__Request_parametricIdentifiers_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit();
+}
+
+N__GP__Request_parametricIdentifiers_template::N__GP__Request_parametricIdentifiers_template()
+{
+}
+
+N__GP__Request_parametricIdentifiers_template::N__GP__Request_parametricIdentifiers_template(template_sel other_value)
+ : Record_Of_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+N__GP__Request_parametricIdentifiers_template::N__GP__Request_parametricIdentifiers_template(null_type)
+ : Record_Of_Template(SPECIFIC_VALUE)
+{
+single_value.n_elements = 0;
+single_value.value_elements = NULL;
+}
+
+N__GP__Request_parametricIdentifiers_template::N__GP__Request_parametricIdentifiers_template(const N__GP__Request_parametricIdentifiers& other_value)
+{
+copy_value(other_value);
+}
+
+N__GP__Request_parametricIdentifiers_template::N__GP__Request_parametricIdentifiers_template(const OPTIONAL<N__GP__Request_parametricIdentifiers>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__GP__Request_parametricIdentifiers&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers from an unbound optional field.");
+}
+}
+
+N__GP__Request_parametricIdentifiers_template::N__GP__Request_parametricIdentifiers_template(const N__GP__Request_parametricIdentifiers_template& other_value)
+ : Record_Of_Template()
+{
+copy_template(other_value);
+}
+
+N__GP__Request_parametricIdentifiers_template::~N__GP__Request_parametricIdentifiers_template()
+{
+clean_up();
+}
+
+void N__GP__Request_parametricIdentifiers_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:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+N__GP__Request_parametricIdentifiers_template& N__GP__Request_parametricIdentifiers_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+N__GP__Request_parametricIdentifiers_template& N__GP__Request_parametricIdentifiers_template::operator=(null_type)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value.n_elements = 0;
+single_value.value_elements = NULL;
+return *this;
+}
+
+N__GP__Request_parametricIdentifiers_template& N__GP__Request_parametricIdentifiers_template::operator=(const N__GP__Request_parametricIdentifiers& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+N__GP__Request_parametricIdentifiers_template& N__GP__Request_parametricIdentifiers_template::operator=(const OPTIONAL<N__GP__Request_parametricIdentifiers>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__GP__Request_parametricIdentifiers&)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 @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers.");
+}
+return *this;
+}
+
+N__GP__Request_parametricIdentifiers_template& N__GP__Request_parametricIdentifiers_template::operator=(const N__GP__Request_parametricIdentifiers_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+e__ParametricIdentifier_template& N__GP__Request_parametricIdentifiers_template::operator[](int index_value)
+{
+if (index_value < 0) TTCN_error("Accessing an element of a template for type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers 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 @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers.");
+    break;
+}
+return *single_value.value_elements[index_value];
+}
+
+e__ParametricIdentifier_template& N__GP__Request_parametricIdentifiers_template::operator[](const INTEGER& index_value)
+{
+index_value.must_bound("Using an unbound integer value for indexing a template of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers.");
+return (*this)[(int)index_value];
+}
+
+const e__ParametricIdentifier_template& N__GP__Request_parametricIdentifiers_template::operator[](int index_value) const
+{
+if (index_value < 0) TTCN_error("Accessing an element of a template for type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers using a negative index: %d.", index_value);
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers.");
+if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers: 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 e__ParametricIdentifier_template& N__GP__Request_parametricIdentifiers_template::operator[](const INTEGER& index_value) const
+{
+index_value.must_bound("Using an unbound integer value for indexing a template of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers.");
+return (*this)[(int)index_value];
+}
+
+void N__GP__Request_parametricIdentifiers_template::set_size(int new_size)
+{
+if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers.");
+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 = (e__ParametricIdentifier_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 e__ParametricIdentifier_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 e__ParametricIdentifier_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 = (e__ParametricIdentifier_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size);
+single_value.n_elements = new_size;
+}
+}
+
+int N__GP__Request_parametricIdentifiers_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 N__GP__Request_parametricIdentifiers_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 @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers 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 @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers 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 @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers 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 @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers 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 @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers 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 @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers containing complemented list.", op_name);
+default:
+  TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers.", op_name);
+}
+return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers");
+}
+
+boolean N__GP__Request_parametricIdentifiers_template::match(const N__GP__Request_parametricIdentifiers& 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;
+default:
+TTCN_error("Matching with an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers.");
+}
+return FALSE;
+}
+
+boolean N__GP__Request_parametricIdentifiers_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;
+}
+
+N__GP__Request_parametricIdentifiers N__GP__Request_parametricIdentifiers_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 @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers.");
+N__GP__Request_parametricIdentifiers 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;
+}
+
+N__GP__Request_parametricIdentifiers N__GP__Request_parametricIdentifiers_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);
+}
+
+N__GP__Request_parametricIdentifiers N__GP__Request_parametricIdentifiers_template::replace(int index, int len, const N__GP__Request_parametricIdentifiers_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());
+}
+
+N__GP__Request_parametricIdentifiers N__GP__Request_parametricIdentifiers_template::replace(int index, int len, const N__GP__Request_parametricIdentifiers& 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 N__GP__Request_parametricIdentifiers_template::set_type(template_sel template_type, unsigned int list_length)
+{
+clean_up();
+switch (template_type) {
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = list_length;
+value_list.list_value = new N__GP__Request_parametricIdentifiers_template[list_length];
+break;
+default:
+TTCN_error("Internal error: Setting an invalid type for a template of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers.");
+}
+set_selection(template_type);
+}
+
+N__GP__Request_parametricIdentifiers_template& N__GP__Request_parametricIdentifiers_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers.");
+return value_list.list_value[list_index];
+}
+
+void N__GP__Request_parametricIdentifiers_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 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;
+default:
+log_generic();
+}
+log_restricted();
+log_ifpresent();
+}
+
+void N__GP__Request_parametricIdentifiers_template::log_match(const N__GP__Request_parametricIdentifiers& 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 N__GP__Request_parametricIdentifiers_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 @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers.");
+}
+}
+
+void N__GP__Request_parametricIdentifiers_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 @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers.");
+single_value.value_elements = (e__ParametricIdentifier_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 e__ParametricIdentifier_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 N__GP__Request_parametricIdentifiers_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 @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers.");
+}
+}
+
+boolean N__GP__Request_parametricIdentifiers_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean N__GP__Request_parametricIdentifiers_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 N__GP__Request_parametricIdentifiers_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: {
+    N__GP__Request_parametricIdentifiers_template temp;
+    temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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;
+  default:
+    param.type_error("record of template", "@IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers");
+  }
+  is_ifpresent = param.get_ifpresent();
+  set_length_range(param);
+}
+
+void N__GP__Request_parametricIdentifiers_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 : "@IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers");
+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 : "@IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers");
+}
+
+boolean N__GP__Request_parametricIdentifiers_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);
+}
+}
+N__GP__Request::N__GP__Request()
+{
+}
+
+N__GP__Request::N__GP__Request(const INTEGER& par_msgFunction,
+    const N__GP__Request_parametricIdentifiers& par_parametricIdentifiers)
+  :   field_msgFunction(par_msgFunction),
+  field_parametricIdentifiers(par_parametricIdentifiers)
+{
+}
+
+N__GP__Request::N__GP__Request(const N__GP__Request& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_GP_Request.");
+if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction();
+else field_msgFunction.clean_up();
+if (other_value.parametricIdentifiers().is_bound()) field_parametricIdentifiers = other_value.parametricIdentifiers();
+else field_parametricIdentifiers.clean_up();
+}
+
+void N__GP__Request::clean_up()
+{
+field_msgFunction.clean_up();
+field_parametricIdentifiers.clean_up();
+}
+
+const TTCN_Typedescriptor_t* N__GP__Request::get_descriptor() const { return &N__GP__Request_descr_; }
+N__GP__Request& N__GP__Request::operator=(const N__GP__Request& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.N_GP_Request.");
+  if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction();
+  else field_msgFunction.clean_up();
+  if (other_value.parametricIdentifiers().is_bound()) field_parametricIdentifiers = other_value.parametricIdentifiers();
+  else field_parametricIdentifiers.clean_up();
+}
+return *this;
+}
+
+boolean N__GP__Request::operator==(const N__GP__Request& other_value) const
+{
+return field_msgFunction==other_value.field_msgFunction
+  && field_parametricIdentifiers==other_value.field_parametricIdentifiers;
+}
+
+boolean N__GP__Request::is_bound() const
+{
+return (field_msgFunction.is_bound())
+  || (field_parametricIdentifiers.is_bound());
+}
+boolean N__GP__Request::is_value() const
+{
+return field_msgFunction.is_value()
+  && field_parametricIdentifiers.is_value();
+}
+void N__GP__Request::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ msgFunction := ");
+field_msgFunction.log();
+TTCN_Logger::log_event_str(", parametricIdentifiers := ");
+field_parametricIdentifiers.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void N__GP__Request::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 @IsobusNMMessageTypes.N_GP_Request 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) msgFunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) parametricIdentifiers().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(), "msgFunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgFunction().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(), "parametricIdentifiers")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          parametricIdentifiers().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 @IsobusNMMessageTypes.N_GP_Request: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusNMMessageTypes.N_GP_Request");
+  }
+}
+
+void N__GP__Request::set_implicit_omit()
+{
+if (msgFunction().is_bound()) msgFunction().set_implicit_omit();
+if (parametricIdentifiers().is_bound()) parametricIdentifiers().set_implicit_omit();
+}
+
+void N__GP__Request::encode_text(Text_Buf& text_buf) const
+{
+field_msgFunction.encode_text(text_buf);
+field_parametricIdentifiers.encode_text(text_buf);
+}
+
+void N__GP__Request::decode_text(Text_Buf& text_buf)
+{
+field_msgFunction.decode_text(text_buf);
+field_parametricIdentifiers.decode_text(text_buf);
+}
+
+void N__GP__Request::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void N__GP__Request::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int N__GP__Request::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, Function_descr_.raw->forceomit);
+  decoded_field_length = field_msgFunction.RAW_decode(Function_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, N__GP__Request_parametricIdentifiers_descr_.raw->forceomit);
+  decoded_field_length = field_parametricIdentifiers.RAW_decode(N__GP__Request_parametricIdentifiers_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 N__GP__Request::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, Function_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, N__GP__Request_parametricIdentifiers_descr_.raw);
+  encoded_length += field_msgFunction.RAW_encode(Function_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_parametricIdentifiers.RAW_encode(N__GP__Request_parametricIdentifiers_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct N__GP__Request_template::single_value_struct {
+INTEGER_template field_msgFunction;
+N__GP__Request_parametricIdentifiers_template field_parametricIdentifiers;
+};
+
+void N__GP__Request_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_msgFunction = ANY_VALUE;
+single_value->field_parametricIdentifiers = ANY_VALUE;
+}
+}
+}
+
+void N__GP__Request_template::copy_value(const N__GP__Request& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.msgFunction().is_bound()) {
+  single_value->field_msgFunction = other_value.msgFunction();
+} else {
+  single_value->field_msgFunction.clean_up();
+}
+if (other_value.parametricIdentifiers().is_bound()) {
+  single_value->field_parametricIdentifiers = other_value.parametricIdentifiers();
+} else {
+  single_value->field_parametricIdentifiers.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void N__GP__Request_template::copy_template(const N__GP__Request_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.msgFunction().get_selection()) {
+single_value->field_msgFunction = other_value.msgFunction();
+} else {
+single_value->field_msgFunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.parametricIdentifiers().get_selection()) {
+single_value->field_parametricIdentifiers = other_value.parametricIdentifiers();
+} else {
+single_value->field_parametricIdentifiers.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new N__GP__Request_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_GP_Request.");
+break;
+}
+set_selection(other_value);
+}
+
+N__GP__Request_template::N__GP__Request_template()
+{
+}
+
+N__GP__Request_template::N__GP__Request_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+N__GP__Request_template::N__GP__Request_template(const N__GP__Request& other_value)
+{
+copy_value(other_value);
+}
+
+N__GP__Request_template::N__GP__Request_template(const OPTIONAL<N__GP__Request>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__GP__Request&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_GP_Request from an unbound optional field.");
+}
+}
+
+N__GP__Request_template::N__GP__Request_template(const N__GP__Request_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+N__GP__Request_template::~N__GP__Request_template()
+{
+clean_up();
+}
+
+N__GP__Request_template& N__GP__Request_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+N__GP__Request_template& N__GP__Request_template::operator=(const N__GP__Request& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+N__GP__Request_template& N__GP__Request_template::operator=(const OPTIONAL<N__GP__Request>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__GP__Request&)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 @IsobusNMMessageTypes.N_GP_Request.");
+}
+return *this;
+}
+
+N__GP__Request_template& N__GP__Request_template::operator=(const N__GP__Request_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean N__GP__Request_template::match(const N__GP__Request& 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.msgFunction().is_bound()) return FALSE;
+if(!single_value->field_msgFunction.match(other_value.msgFunction(), legacy))return FALSE;
+if(!other_value.parametricIdentifiers().is_bound()) return FALSE;
+if(!single_value->field_parametricIdentifiers.match(other_value.parametricIdentifiers(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_GP_Request.");
+}
+return FALSE;
+}
+
+boolean N__GP__Request_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_msgFunction.is_bound()
+
+ ||single_value->field_parametricIdentifiers.is_bound()
+;
+}
+
+boolean N__GP__Request_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_msgFunction.is_value()
+ &&single_value->field_parametricIdentifiers.is_value();
+}
+
+void N__GP__Request_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+N__GP__Request N__GP__Request_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 @IsobusNMMessageTypes.N_GP_Request.");
+N__GP__Request ret_val;
+if (single_value->field_msgFunction.is_bound()) {
+ret_val.msgFunction() = single_value->field_msgFunction.valueof();
+}
+if (single_value->field_parametricIdentifiers.is_bound()) {
+ret_val.parametricIdentifiers() = single_value->field_parametricIdentifiers.valueof();
+}
+return ret_val;
+}
+
+void N__GP__Request_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.N_GP_Request.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new N__GP__Request_template[list_length];
+}
+
+N__GP__Request_template& N__GP__Request_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_GP_Request.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.N_GP_Request.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& N__GP__Request_template::msgFunction()
+{
+set_specific();
+return single_value->field_msgFunction;
+}
+
+const INTEGER_template& N__GP__Request_template::msgFunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field msgFunction of a non-specific template of type @IsobusNMMessageTypes.N_GP_Request.");
+return single_value->field_msgFunction;
+}
+
+N__GP__Request_parametricIdentifiers_template& N__GP__Request_template::parametricIdentifiers()
+{
+set_specific();
+return single_value->field_parametricIdentifiers;
+}
+
+const N__GP__Request_parametricIdentifiers_template& N__GP__Request_template::parametricIdentifiers() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field parametricIdentifiers of a non-specific template of type @IsobusNMMessageTypes.N_GP_Request.");
+return single_value->field_parametricIdentifiers;
+}
+
+int N__GP__Request_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_GP_Request 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 @IsobusNMMessageTypes.N_GP_Request 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 @IsobusNMMessageTypes.N_GP_Request containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_GP_Request containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_GP_Request containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_GP_Request containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_GP_Request.");
+  }
+  return 0;
+}
+
+void N__GP__Request_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ msgFunction := ");
+single_value->field_msgFunction.log();
+TTCN_Logger::log_event_str(", parametricIdentifiers := ");
+single_value->field_parametricIdentifiers.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void N__GP__Request_template::log_match(const N__GP__Request& 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_msgFunction.match(match_value.msgFunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".msgFunction");
+single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_parametricIdentifiers.match(match_value.parametricIdentifiers(), legacy)){
+TTCN_Logger::log_logmatch_info(".parametricIdentifiers");
+single_value->field_parametricIdentifiers.log_match(match_value.parametricIdentifiers(), 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("{ msgFunction := ");
+single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy);
+TTCN_Logger::log_event_str(", parametricIdentifiers := ");
+single_value->field_parametricIdentifiers.log_match(match_value.parametricIdentifiers(), 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 N__GP__Request_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_msgFunction.encode_text(text_buf);
+single_value->field_parametricIdentifiers.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 @IsobusNMMessageTypes.N_GP_Request.");
+}
+}
+
+void N__GP__Request_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_msgFunction.decode_text(text_buf);
+single_value->field_parametricIdentifiers.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 N__GP__Request_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 @IsobusNMMessageTypes.N_GP_Request.");
+}
+}
+
+void N__GP__Request_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: {
+    N__GP__Request_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusNMMessageTypes.N_GP_Request 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) msgFunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) parametricIdentifiers().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(), "msgFunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgFunction().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(), "parametricIdentifiers")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          parametricIdentifiers().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 @IsobusNMMessageTypes.N_GP_Request: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusNMMessageTypes.N_GP_Request");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void N__GP__Request_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_msgFunction.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_GP_Request");
+single_value->field_parametricIdentifiers.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_GP_Request");
+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 : "@IsobusNMMessageTypes.N_GP_Request");
+}
+
+boolean N__GP__Request_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean N__GP__Request_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 RequestedParametric::copy_value(const RequestedParametric& other_value)
+{
+switch (other_value.union_selection) {
+case ALT_buffersize:
+field_buffersize = new OCTETSTRING(*other_value.field_buffersize);
+break;
+case ALT_maximumFilterDatabaseSize:
+field_maximumFilterDatabaseSize = new OCTETSTRING(*other_value.field_maximumFilterDatabaseSize);
+break;
+case ALT_numberOfFilterDatabaseEntries:
+field_numberOfFilterDatabaseEntries = new OCTETSTRING(*other_value.field_numberOfFilterDatabaseEntries);
+break;
+case ALT_maximumNumberOfMessagesReceivedPerSecond:
+field_maximumNumberOfMessagesReceivedPerSecond = new OCTETSTRING(*other_value.field_maximumNumberOfMessagesReceivedPerSecond);
+break;
+case ALT_maximumNumberOfMessagesForwardedPerSecond:
+field_maximumNumberOfMessagesForwardedPerSecond = new OCTETSTRING(*other_value.field_maximumNumberOfMessagesForwardedPerSecond);
+break;
+case ALT_maximumNumberOfMessagesFilteredPerSecond:
+field_maximumNumberOfMessagesFilteredPerSecond = new OCTETSTRING(*other_value.field_maximumNumberOfMessagesFilteredPerSecond);
+break;
+case ALT_maximumTransitDelayTime__ms:
+field_maximumTransitDelayTime__ms = new OCTETSTRING(*other_value.field_maximumTransitDelayTime__ms);
+break;
+case ALT_averageTransitDelayTime__ms:
+field_averageTransitDelayTime__ms = new OCTETSTRING(*other_value.field_averageTransitDelayTime__ms);
+break;
+case ALT_numberOfMessagesLostDueToBufferOverflow:
+field_numberOfMessagesLostDueToBufferOverflow = new OCTETSTRING(*other_value.field_numberOfMessagesLostDueToBufferOverflow);
+break;
+case ALT_numberOfMessagesWithExcessTransitDelayTime:
+field_numberOfMessagesWithExcessTransitDelayTime = new OCTETSTRING(*other_value.field_numberOfMessagesWithExcessTransitDelayTime);
+break;
+case ALT_averageNumberOfMessagesReceivedPerSecond:
+field_averageNumberOfMessagesReceivedPerSecond = new OCTETSTRING(*other_value.field_averageNumberOfMessagesReceivedPerSecond);
+break;
+case ALT_averageNumberOfMessagesForwardedPerSecond:
+field_averageNumberOfMessagesForwardedPerSecond = new OCTETSTRING(*other_value.field_averageNumberOfMessagesForwardedPerSecond);
+break;
+case ALT_averageNumberOfMessagesFilteredPerSecond:
+field_averageNumberOfMessagesFilteredPerSecond = new OCTETSTRING(*other_value.field_averageNumberOfMessagesFilteredPerSecond);
+break;
+case ALT_uptimeSinceLastPowerOnReset__s:
+field_uptimeSinceLastPowerOnReset__s = new OCTETSTRING(*other_value.field_uptimeSinceLastPowerOnReset__s);
+break;
+case ALT_numberOfPorts:
+field_numberOfPorts = new OCTETSTRING(*other_value.field_numberOfPorts);
+break;
+case ALT_networkInterconnectionUnitType:
+field_networkInterconnectionUnitType = new OCTETSTRING(*other_value.field_networkInterconnectionUnitType);
+break;
+case ALT_reserved:
+field_reserved = new OCTETSTRING(*other_value.field_reserved);
+break;
+default:
+TTCN_error("Assignment of an unbound union value of type @IsobusNMMessageTypes.RequestedParametric.");
+}
+union_selection = other_value.union_selection;
+}
+
+RequestedParametric::RequestedParametric()
+{
+union_selection = UNBOUND_VALUE;
+}
+
+RequestedParametric::RequestedParametric(const RequestedParametric& other_value)
+: Base_Type(){
+copy_value(other_value);
+}
+
+RequestedParametric::~RequestedParametric()
+{
+clean_up();
+}
+
+RequestedParametric& RequestedParametric::operator=(const RequestedParametric& other_value)
+{
+if (this != &other_value) {
+clean_up();
+copy_value(other_value);
+}
+return *this;
+}
+
+boolean RequestedParametric::operator==(const RequestedParametric& other_value) const
+{
+if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @IsobusNMMessageTypes.RequestedParametric.");
+if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @IsobusNMMessageTypes.RequestedParametric.");
+if (union_selection != other_value.union_selection) return FALSE;
+switch (union_selection) {
+case ALT_buffersize:
+return *field_buffersize == *other_value.field_buffersize;
+case ALT_maximumFilterDatabaseSize:
+return *field_maximumFilterDatabaseSize == *other_value.field_maximumFilterDatabaseSize;
+case ALT_numberOfFilterDatabaseEntries:
+return *field_numberOfFilterDatabaseEntries == *other_value.field_numberOfFilterDatabaseEntries;
+case ALT_maximumNumberOfMessagesReceivedPerSecond:
+return *field_maximumNumberOfMessagesReceivedPerSecond == *other_value.field_maximumNumberOfMessagesReceivedPerSecond;
+case ALT_maximumNumberOfMessagesForwardedPerSecond:
+return *field_maximumNumberOfMessagesForwardedPerSecond == *other_value.field_maximumNumberOfMessagesForwardedPerSecond;
+case ALT_maximumNumberOfMessagesFilteredPerSecond:
+return *field_maximumNumberOfMessagesFilteredPerSecond == *other_value.field_maximumNumberOfMessagesFilteredPerSecond;
+case ALT_maximumTransitDelayTime__ms:
+return *field_maximumTransitDelayTime__ms == *other_value.field_maximumTransitDelayTime__ms;
+case ALT_averageTransitDelayTime__ms:
+return *field_averageTransitDelayTime__ms == *other_value.field_averageTransitDelayTime__ms;
+case ALT_numberOfMessagesLostDueToBufferOverflow:
+return *field_numberOfMessagesLostDueToBufferOverflow == *other_value.field_numberOfMessagesLostDueToBufferOverflow;
+case ALT_numberOfMessagesWithExcessTransitDelayTime:
+return *field_numberOfMessagesWithExcessTransitDelayTime == *other_value.field_numberOfMessagesWithExcessTransitDelayTime;
+case ALT_averageNumberOfMessagesReceivedPerSecond:
+return *field_averageNumberOfMessagesReceivedPerSecond == *other_value.field_averageNumberOfMessagesReceivedPerSecond;
+case ALT_averageNumberOfMessagesForwardedPerSecond:
+return *field_averageNumberOfMessagesForwardedPerSecond == *other_value.field_averageNumberOfMessagesForwardedPerSecond;
+case ALT_averageNumberOfMessagesFilteredPerSecond:
+return *field_averageNumberOfMessagesFilteredPerSecond == *other_value.field_averageNumberOfMessagesFilteredPerSecond;
+case ALT_uptimeSinceLastPowerOnReset__s:
+return *field_uptimeSinceLastPowerOnReset__s == *other_value.field_uptimeSinceLastPowerOnReset__s;
+case ALT_numberOfPorts:
+return *field_numberOfPorts == *other_value.field_numberOfPorts;
+case ALT_networkInterconnectionUnitType:
+return *field_networkInterconnectionUnitType == *other_value.field_networkInterconnectionUnitType;
+case ALT_reserved:
+return *field_reserved == *other_value.field_reserved;
+default:
+return FALSE;
+}
+}
+
+OCTETSTRING& RequestedParametric::buffersize()
+{
+if (union_selection != ALT_buffersize) {
+clean_up();
+field_buffersize = new OCTETSTRING;
+union_selection = ALT_buffersize;
+}
+return *field_buffersize;
+}
+
+const OCTETSTRING& RequestedParametric::buffersize() const
+{
+if (union_selection != ALT_buffersize) TTCN_error("Using non-selected field buffersize in a value of union type @IsobusNMMessageTypes.RequestedParametric.");
+return *field_buffersize;
+}
+
+OCTETSTRING& RequestedParametric::maximumFilterDatabaseSize()
+{
+if (union_selection != ALT_maximumFilterDatabaseSize) {
+clean_up();
+field_maximumFilterDatabaseSize = new OCTETSTRING;
+union_selection = ALT_maximumFilterDatabaseSize;
+}
+return *field_maximumFilterDatabaseSize;
+}
+
+const OCTETSTRING& RequestedParametric::maximumFilterDatabaseSize() const
+{
+if (union_selection != ALT_maximumFilterDatabaseSize) TTCN_error("Using non-selected field maximumFilterDatabaseSize in a value of union type @IsobusNMMessageTypes.RequestedParametric.");
+return *field_maximumFilterDatabaseSize;
+}
+
+OCTETSTRING& RequestedParametric::numberOfFilterDatabaseEntries()
+{
+if (union_selection != ALT_numberOfFilterDatabaseEntries) {
+clean_up();
+field_numberOfFilterDatabaseEntries = new OCTETSTRING;
+union_selection = ALT_numberOfFilterDatabaseEntries;
+}
+return *field_numberOfFilterDatabaseEntries;
+}
+
+const OCTETSTRING& RequestedParametric::numberOfFilterDatabaseEntries() const
+{
+if (union_selection != ALT_numberOfFilterDatabaseEntries) TTCN_error("Using non-selected field numberOfFilterDatabaseEntries in a value of union type @IsobusNMMessageTypes.RequestedParametric.");
+return *field_numberOfFilterDatabaseEntries;
+}
+
+OCTETSTRING& RequestedParametric::maximumNumberOfMessagesReceivedPerSecond()
+{
+if (union_selection != ALT_maximumNumberOfMessagesReceivedPerSecond) {
+clean_up();
+field_maximumNumberOfMessagesReceivedPerSecond = new OCTETSTRING;
+union_selection = ALT_maximumNumberOfMessagesReceivedPerSecond;
+}
+return *field_maximumNumberOfMessagesReceivedPerSecond;
+}
+
+const OCTETSTRING& RequestedParametric::maximumNumberOfMessagesReceivedPerSecond() const
+{
+if (union_selection != ALT_maximumNumberOfMessagesReceivedPerSecond) TTCN_error("Using non-selected field maximumNumberOfMessagesReceivedPerSecond in a value of union type @IsobusNMMessageTypes.RequestedParametric.");
+return *field_maximumNumberOfMessagesReceivedPerSecond;
+}
+
+OCTETSTRING& RequestedParametric::maximumNumberOfMessagesForwardedPerSecond()
+{
+if (union_selection != ALT_maximumNumberOfMessagesForwardedPerSecond) {
+clean_up();
+field_maximumNumberOfMessagesForwardedPerSecond = new OCTETSTRING;
+union_selection = ALT_maximumNumberOfMessagesForwardedPerSecond;
+}
+return *field_maximumNumberOfMessagesForwardedPerSecond;
+}
+
+const OCTETSTRING& RequestedParametric::maximumNumberOfMessagesForwardedPerSecond() const
+{
+if (union_selection != ALT_maximumNumberOfMessagesForwardedPerSecond) TTCN_error("Using non-selected field maximumNumberOfMessagesForwardedPerSecond in a value of union type @IsobusNMMessageTypes.RequestedParametric.");
+return *field_maximumNumberOfMessagesForwardedPerSecond;
+}
+
+OCTETSTRING& RequestedParametric::maximumNumberOfMessagesFilteredPerSecond()
+{
+if (union_selection != ALT_maximumNumberOfMessagesFilteredPerSecond) {
+clean_up();
+field_maximumNumberOfMessagesFilteredPerSecond = new OCTETSTRING;
+union_selection = ALT_maximumNumberOfMessagesFilteredPerSecond;
+}
+return *field_maximumNumberOfMessagesFilteredPerSecond;
+}
+
+const OCTETSTRING& RequestedParametric::maximumNumberOfMessagesFilteredPerSecond() const
+{
+if (union_selection != ALT_maximumNumberOfMessagesFilteredPerSecond) TTCN_error("Using non-selected field maximumNumberOfMessagesFilteredPerSecond in a value of union type @IsobusNMMessageTypes.RequestedParametric.");
+return *field_maximumNumberOfMessagesFilteredPerSecond;
+}
+
+OCTETSTRING& RequestedParametric::maximumTransitDelayTime__ms()
+{
+if (union_selection != ALT_maximumTransitDelayTime__ms) {
+clean_up();
+field_maximumTransitDelayTime__ms = new OCTETSTRING;
+union_selection = ALT_maximumTransitDelayTime__ms;
+}
+return *field_maximumTransitDelayTime__ms;
+}
+
+const OCTETSTRING& RequestedParametric::maximumTransitDelayTime__ms() const
+{
+if (union_selection != ALT_maximumTransitDelayTime__ms) TTCN_error("Using non-selected field maximumTransitDelayTime_ms in a value of union type @IsobusNMMessageTypes.RequestedParametric.");
+return *field_maximumTransitDelayTime__ms;
+}
+
+OCTETSTRING& RequestedParametric::averageTransitDelayTime__ms()
+{
+if (union_selection != ALT_averageTransitDelayTime__ms) {
+clean_up();
+field_averageTransitDelayTime__ms = new OCTETSTRING;
+union_selection = ALT_averageTransitDelayTime__ms;
+}
+return *field_averageTransitDelayTime__ms;
+}
+
+const OCTETSTRING& RequestedParametric::averageTransitDelayTime__ms() const
+{
+if (union_selection != ALT_averageTransitDelayTime__ms) TTCN_error("Using non-selected field averageTransitDelayTime_ms in a value of union type @IsobusNMMessageTypes.RequestedParametric.");
+return *field_averageTransitDelayTime__ms;
+}
+
+OCTETSTRING& RequestedParametric::numberOfMessagesLostDueToBufferOverflow()
+{
+if (union_selection != ALT_numberOfMessagesLostDueToBufferOverflow) {
+clean_up();
+field_numberOfMessagesLostDueToBufferOverflow = new OCTETSTRING;
+union_selection = ALT_numberOfMessagesLostDueToBufferOverflow;
+}
+return *field_numberOfMessagesLostDueToBufferOverflow;
+}
+
+const OCTETSTRING& RequestedParametric::numberOfMessagesLostDueToBufferOverflow() const
+{
+if (union_selection != ALT_numberOfMessagesLostDueToBufferOverflow) TTCN_error("Using non-selected field numberOfMessagesLostDueToBufferOverflow in a value of union type @IsobusNMMessageTypes.RequestedParametric.");
+return *field_numberOfMessagesLostDueToBufferOverflow;
+}
+
+OCTETSTRING& RequestedParametric::numberOfMessagesWithExcessTransitDelayTime()
+{
+if (union_selection != ALT_numberOfMessagesWithExcessTransitDelayTime) {
+clean_up();
+field_numberOfMessagesWithExcessTransitDelayTime = new OCTETSTRING;
+union_selection = ALT_numberOfMessagesWithExcessTransitDelayTime;
+}
+return *field_numberOfMessagesWithExcessTransitDelayTime;
+}
+
+const OCTETSTRING& RequestedParametric::numberOfMessagesWithExcessTransitDelayTime() const
+{
+if (union_selection != ALT_numberOfMessagesWithExcessTransitDelayTime) TTCN_error("Using non-selected field numberOfMessagesWithExcessTransitDelayTime in a value of union type @IsobusNMMessageTypes.RequestedParametric.");
+return *field_numberOfMessagesWithExcessTransitDelayTime;
+}
+
+OCTETSTRING& RequestedParametric::averageNumberOfMessagesReceivedPerSecond()
+{
+if (union_selection != ALT_averageNumberOfMessagesReceivedPerSecond) {
+clean_up();
+field_averageNumberOfMessagesReceivedPerSecond = new OCTETSTRING;
+union_selection = ALT_averageNumberOfMessagesReceivedPerSecond;
+}
+return *field_averageNumberOfMessagesReceivedPerSecond;
+}
+
+const OCTETSTRING& RequestedParametric::averageNumberOfMessagesReceivedPerSecond() const
+{
+if (union_selection != ALT_averageNumberOfMessagesReceivedPerSecond) TTCN_error("Using non-selected field averageNumberOfMessagesReceivedPerSecond in a value of union type @IsobusNMMessageTypes.RequestedParametric.");
+return *field_averageNumberOfMessagesReceivedPerSecond;
+}
+
+OCTETSTRING& RequestedParametric::averageNumberOfMessagesForwardedPerSecond()
+{
+if (union_selection != ALT_averageNumberOfMessagesForwardedPerSecond) {
+clean_up();
+field_averageNumberOfMessagesForwardedPerSecond = new OCTETSTRING;
+union_selection = ALT_averageNumberOfMessagesForwardedPerSecond;
+}
+return *field_averageNumberOfMessagesForwardedPerSecond;
+}
+
+const OCTETSTRING& RequestedParametric::averageNumberOfMessagesForwardedPerSecond() const
+{
+if (union_selection != ALT_averageNumberOfMessagesForwardedPerSecond) TTCN_error("Using non-selected field averageNumberOfMessagesForwardedPerSecond in a value of union type @IsobusNMMessageTypes.RequestedParametric.");
+return *field_averageNumberOfMessagesForwardedPerSecond;
+}
+
+OCTETSTRING& RequestedParametric::averageNumberOfMessagesFilteredPerSecond()
+{
+if (union_selection != ALT_averageNumberOfMessagesFilteredPerSecond) {
+clean_up();
+field_averageNumberOfMessagesFilteredPerSecond = new OCTETSTRING;
+union_selection = ALT_averageNumberOfMessagesFilteredPerSecond;
+}
+return *field_averageNumberOfMessagesFilteredPerSecond;
+}
+
+const OCTETSTRING& RequestedParametric::averageNumberOfMessagesFilteredPerSecond() const
+{
+if (union_selection != ALT_averageNumberOfMessagesFilteredPerSecond) TTCN_error("Using non-selected field averageNumberOfMessagesFilteredPerSecond in a value of union type @IsobusNMMessageTypes.RequestedParametric.");
+return *field_averageNumberOfMessagesFilteredPerSecond;
+}
+
+OCTETSTRING& RequestedParametric::uptimeSinceLastPowerOnReset__s()
+{
+if (union_selection != ALT_uptimeSinceLastPowerOnReset__s) {
+clean_up();
+field_uptimeSinceLastPowerOnReset__s = new OCTETSTRING;
+union_selection = ALT_uptimeSinceLastPowerOnReset__s;
+}
+return *field_uptimeSinceLastPowerOnReset__s;
+}
+
+const OCTETSTRING& RequestedParametric::uptimeSinceLastPowerOnReset__s() const
+{
+if (union_selection != ALT_uptimeSinceLastPowerOnReset__s) TTCN_error("Using non-selected field uptimeSinceLastPowerOnReset_s in a value of union type @IsobusNMMessageTypes.RequestedParametric.");
+return *field_uptimeSinceLastPowerOnReset__s;
+}
+
+OCTETSTRING& RequestedParametric::numberOfPorts()
+{
+if (union_selection != ALT_numberOfPorts) {
+clean_up();
+field_numberOfPorts = new OCTETSTRING;
+union_selection = ALT_numberOfPorts;
+}
+return *field_numberOfPorts;
+}
+
+const OCTETSTRING& RequestedParametric::numberOfPorts() const
+{
+if (union_selection != ALT_numberOfPorts) TTCN_error("Using non-selected field numberOfPorts in a value of union type @IsobusNMMessageTypes.RequestedParametric.");
+return *field_numberOfPorts;
+}
+
+OCTETSTRING& RequestedParametric::networkInterconnectionUnitType()
+{
+if (union_selection != ALT_networkInterconnectionUnitType) {
+clean_up();
+field_networkInterconnectionUnitType = new OCTETSTRING;
+union_selection = ALT_networkInterconnectionUnitType;
+}
+return *field_networkInterconnectionUnitType;
+}
+
+const OCTETSTRING& RequestedParametric::networkInterconnectionUnitType() const
+{
+if (union_selection != ALT_networkInterconnectionUnitType) TTCN_error("Using non-selected field networkInterconnectionUnitType in a value of union type @IsobusNMMessageTypes.RequestedParametric.");
+return *field_networkInterconnectionUnitType;
+}
+
+OCTETSTRING& RequestedParametric::reserved()
+{
+if (union_selection != ALT_reserved) {
+clean_up();
+field_reserved = new OCTETSTRING;
+union_selection = ALT_reserved;
+}
+return *field_reserved;
+}
+
+const OCTETSTRING& RequestedParametric::reserved() const
+{
+if (union_selection != ALT_reserved) TTCN_error("Using non-selected field reserved in a value of union type @IsobusNMMessageTypes.RequestedParametric.");
+return *field_reserved;
+}
+
+boolean RequestedParametric::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 @IsobusNMMessageTypes.RequestedParametric.");
+return union_selection == checked_selection;
+}
+
+boolean RequestedParametric::is_bound() const
+{
+  return union_selection != UNBOUND_VALUE;
+}
+
+boolean RequestedParametric::is_value() const
+{
+switch (union_selection) {
+case UNBOUND_VALUE: return FALSE;
+case ALT_buffersize: return field_buffersize->is_value();
+case ALT_maximumFilterDatabaseSize: return field_maximumFilterDatabaseSize->is_value();
+case ALT_numberOfFilterDatabaseEntries: return field_numberOfFilterDatabaseEntries->is_value();
+case ALT_maximumNumberOfMessagesReceivedPerSecond: return field_maximumNumberOfMessagesReceivedPerSecond->is_value();
+case ALT_maximumNumberOfMessagesForwardedPerSecond: return field_maximumNumberOfMessagesForwardedPerSecond->is_value();
+case ALT_maximumNumberOfMessagesFilteredPerSecond: return field_maximumNumberOfMessagesFilteredPerSecond->is_value();
+case ALT_maximumTransitDelayTime__ms: return field_maximumTransitDelayTime__ms->is_value();
+case ALT_averageTransitDelayTime__ms: return field_averageTransitDelayTime__ms->is_value();
+case ALT_numberOfMessagesLostDueToBufferOverflow: return field_numberOfMessagesLostDueToBufferOverflow->is_value();
+case ALT_numberOfMessagesWithExcessTransitDelayTime: return field_numberOfMessagesWithExcessTransitDelayTime->is_value();
+case ALT_averageNumberOfMessagesReceivedPerSecond: return field_averageNumberOfMessagesReceivedPerSecond->is_value();
+case ALT_averageNumberOfMessagesForwardedPerSecond: return field_averageNumberOfMessagesForwardedPerSecond->is_value();
+case ALT_averageNumberOfMessagesFilteredPerSecond: return field_averageNumberOfMessagesFilteredPerSecond->is_value();
+case ALT_uptimeSinceLastPowerOnReset__s: return field_uptimeSinceLastPowerOnReset__s->is_value();
+case ALT_numberOfPorts: return field_numberOfPorts->is_value();
+case ALT_networkInterconnectionUnitType: return field_networkInterconnectionUnitType->is_value();
+case ALT_reserved: return field_reserved->is_value();
+default: TTCN_error("Invalid selection in union is_bound");}
+}
+
+void RequestedParametric::clean_up()
+{
+switch (union_selection) {
+case ALT_buffersize:
+  delete field_buffersize;
+  break;
+case ALT_maximumFilterDatabaseSize:
+  delete field_maximumFilterDatabaseSize;
+  break;
+case ALT_numberOfFilterDatabaseEntries:
+  delete field_numberOfFilterDatabaseEntries;
+  break;
+case ALT_maximumNumberOfMessagesReceivedPerSecond:
+  delete field_maximumNumberOfMessagesReceivedPerSecond;
+  break;
+case ALT_maximumNumberOfMessagesForwardedPerSecond:
+  delete field_maximumNumberOfMessagesForwardedPerSecond;
+  break;
+case ALT_maximumNumberOfMessagesFilteredPerSecond:
+  delete field_maximumNumberOfMessagesFilteredPerSecond;
+  break;
+case ALT_maximumTransitDelayTime__ms:
+  delete field_maximumTransitDelayTime__ms;
+  break;
+case ALT_averageTransitDelayTime__ms:
+  delete field_averageTransitDelayTime__ms;
+  break;
+case ALT_numberOfMessagesLostDueToBufferOverflow:
+  delete field_numberOfMessagesLostDueToBufferOverflow;
+  break;
+case ALT_numberOfMessagesWithExcessTransitDelayTime:
+  delete field_numberOfMessagesWithExcessTransitDelayTime;
+  break;
+case ALT_averageNumberOfMessagesReceivedPerSecond:
+  delete field_averageNumberOfMessagesReceivedPerSecond;
+  break;
+case ALT_averageNumberOfMessagesForwardedPerSecond:
+  delete field_averageNumberOfMessagesForwardedPerSecond;
+  break;
+case ALT_averageNumberOfMessagesFilteredPerSecond:
+  delete field_averageNumberOfMessagesFilteredPerSecond;
+  break;
+case ALT_uptimeSinceLastPowerOnReset__s:
+  delete field_uptimeSinceLastPowerOnReset__s;
+  break;
+case ALT_numberOfPorts:
+  delete field_numberOfPorts;
+  break;
+case ALT_networkInterconnectionUnitType:
+  delete field_networkInterconnectionUnitType;
+  break;
+case ALT_reserved:
+  delete field_reserved;
+  break;
+default:
+  break;
+}
+union_selection = UNBOUND_VALUE;
+}
+
+void RequestedParametric::log() const
+{
+switch (union_selection) {
+case ALT_buffersize:
+TTCN_Logger::log_event_str("{ buffersize := ");
+field_buffersize->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_maximumFilterDatabaseSize:
+TTCN_Logger::log_event_str("{ maximumFilterDatabaseSize := ");
+field_maximumFilterDatabaseSize->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_numberOfFilterDatabaseEntries:
+TTCN_Logger::log_event_str("{ numberOfFilterDatabaseEntries := ");
+field_numberOfFilterDatabaseEntries->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_maximumNumberOfMessagesReceivedPerSecond:
+TTCN_Logger::log_event_str("{ maximumNumberOfMessagesReceivedPerSecond := ");
+field_maximumNumberOfMessagesReceivedPerSecond->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_maximumNumberOfMessagesForwardedPerSecond:
+TTCN_Logger::log_event_str("{ maximumNumberOfMessagesForwardedPerSecond := ");
+field_maximumNumberOfMessagesForwardedPerSecond->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_maximumNumberOfMessagesFilteredPerSecond:
+TTCN_Logger::log_event_str("{ maximumNumberOfMessagesFilteredPerSecond := ");
+field_maximumNumberOfMessagesFilteredPerSecond->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_maximumTransitDelayTime__ms:
+TTCN_Logger::log_event_str("{ maximumTransitDelayTime_ms := ");
+field_maximumTransitDelayTime__ms->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_averageTransitDelayTime__ms:
+TTCN_Logger::log_event_str("{ averageTransitDelayTime_ms := ");
+field_averageTransitDelayTime__ms->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_numberOfMessagesLostDueToBufferOverflow:
+TTCN_Logger::log_event_str("{ numberOfMessagesLostDueToBufferOverflow := ");
+field_numberOfMessagesLostDueToBufferOverflow->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_numberOfMessagesWithExcessTransitDelayTime:
+TTCN_Logger::log_event_str("{ numberOfMessagesWithExcessTransitDelayTime := ");
+field_numberOfMessagesWithExcessTransitDelayTime->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_averageNumberOfMessagesReceivedPerSecond:
+TTCN_Logger::log_event_str("{ averageNumberOfMessagesReceivedPerSecond := ");
+field_averageNumberOfMessagesReceivedPerSecond->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_averageNumberOfMessagesForwardedPerSecond:
+TTCN_Logger::log_event_str("{ averageNumberOfMessagesForwardedPerSecond := ");
+field_averageNumberOfMessagesForwardedPerSecond->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_averageNumberOfMessagesFilteredPerSecond:
+TTCN_Logger::log_event_str("{ averageNumberOfMessagesFilteredPerSecond := ");
+field_averageNumberOfMessagesFilteredPerSecond->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_uptimeSinceLastPowerOnReset__s:
+TTCN_Logger::log_event_str("{ uptimeSinceLastPowerOnReset_s := ");
+field_uptimeSinceLastPowerOnReset__s->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_numberOfPorts:
+TTCN_Logger::log_event_str("{ numberOfPorts := ");
+field_numberOfPorts->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_networkInterconnectionUnitType:
+TTCN_Logger::log_event_str("{ networkInterconnectionUnitType := ");
+field_networkInterconnectionUnitType->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_reserved:
+TTCN_Logger::log_event_str("{ reserved := ");
+field_reserved->log();
+TTCN_Logger::log_event_str(" }");
+break;
+default:
+TTCN_Logger::log_event_unbound();
+}
+}
+
+void RequestedParametric::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, "buffersize")) {
+    buffersize().set_param(*mp_last);
+    if (!buffersize().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "maximumFilterDatabaseSize")) {
+    maximumFilterDatabaseSize().set_param(*mp_last);
+    if (!maximumFilterDatabaseSize().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "numberOfFilterDatabaseEntries")) {
+    numberOfFilterDatabaseEntries().set_param(*mp_last);
+    if (!numberOfFilterDatabaseEntries().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "maximumNumberOfMessagesReceivedPerSecond")) {
+    maximumNumberOfMessagesReceivedPerSecond().set_param(*mp_last);
+    if (!maximumNumberOfMessagesReceivedPerSecond().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "maximumNumberOfMessagesForwardedPerSecond")) {
+    maximumNumberOfMessagesForwardedPerSecond().set_param(*mp_last);
+    if (!maximumNumberOfMessagesForwardedPerSecond().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "maximumNumberOfMessagesFilteredPerSecond")) {
+    maximumNumberOfMessagesFilteredPerSecond().set_param(*mp_last);
+    if (!maximumNumberOfMessagesFilteredPerSecond().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "maximumTransitDelayTime_ms")) {
+    maximumTransitDelayTime__ms().set_param(*mp_last);
+    if (!maximumTransitDelayTime__ms().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "averageTransitDelayTime_ms")) {
+    averageTransitDelayTime__ms().set_param(*mp_last);
+    if (!averageTransitDelayTime__ms().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "numberOfMessagesLostDueToBufferOverflow")) {
+    numberOfMessagesLostDueToBufferOverflow().set_param(*mp_last);
+    if (!numberOfMessagesLostDueToBufferOverflow().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "numberOfMessagesWithExcessTransitDelayTime")) {
+    numberOfMessagesWithExcessTransitDelayTime().set_param(*mp_last);
+    if (!numberOfMessagesWithExcessTransitDelayTime().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "averageNumberOfMessagesReceivedPerSecond")) {
+    averageNumberOfMessagesReceivedPerSecond().set_param(*mp_last);
+    if (!averageNumberOfMessagesReceivedPerSecond().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "averageNumberOfMessagesForwardedPerSecond")) {
+    averageNumberOfMessagesForwardedPerSecond().set_param(*mp_last);
+    if (!averageNumberOfMessagesForwardedPerSecond().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "averageNumberOfMessagesFilteredPerSecond")) {
+    averageNumberOfMessagesFilteredPerSecond().set_param(*mp_last);
+    if (!averageNumberOfMessagesFilteredPerSecond().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "uptimeSinceLastPowerOnReset_s")) {
+    uptimeSinceLastPowerOnReset__s().set_param(*mp_last);
+    if (!uptimeSinceLastPowerOnReset__s().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "numberOfPorts")) {
+    numberOfPorts().set_param(*mp_last);
+    if (!numberOfPorts().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "networkInterconnectionUnitType")) {
+    networkInterconnectionUnitType().set_param(*mp_last);
+    if (!networkInterconnectionUnitType().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "reserved")) {
+    reserved().set_param(*mp_last);
+    if (!reserved().is_bound()) clean_up();
+    return;
+  }
+  mp_last->error("Field %s does not exist in type @IsobusNMMessageTypes.RequestedParametric.", last_name);
+}
+
+void RequestedParametric::set_implicit_omit()
+{
+switch (union_selection) {
+case ALT_buffersize:
+field_buffersize->set_implicit_omit(); break;
+case ALT_maximumFilterDatabaseSize:
+field_maximumFilterDatabaseSize->set_implicit_omit(); break;
+case ALT_numberOfFilterDatabaseEntries:
+field_numberOfFilterDatabaseEntries->set_implicit_omit(); break;
+case ALT_maximumNumberOfMessagesReceivedPerSecond:
+field_maximumNumberOfMessagesReceivedPerSecond->set_implicit_omit(); break;
+case ALT_maximumNumberOfMessagesForwardedPerSecond:
+field_maximumNumberOfMessagesForwardedPerSecond->set_implicit_omit(); break;
+case ALT_maximumNumberOfMessagesFilteredPerSecond:
+field_maximumNumberOfMessagesFilteredPerSecond->set_implicit_omit(); break;
+case ALT_maximumTransitDelayTime__ms:
+field_maximumTransitDelayTime__ms->set_implicit_omit(); break;
+case ALT_averageTransitDelayTime__ms:
+field_averageTransitDelayTime__ms->set_implicit_omit(); break;
+case ALT_numberOfMessagesLostDueToBufferOverflow:
+field_numberOfMessagesLostDueToBufferOverflow->set_implicit_omit(); break;
+case ALT_numberOfMessagesWithExcessTransitDelayTime:
+field_numberOfMessagesWithExcessTransitDelayTime->set_implicit_omit(); break;
+case ALT_averageNumberOfMessagesReceivedPerSecond:
+field_averageNumberOfMessagesReceivedPerSecond->set_implicit_omit(); break;
+case ALT_averageNumberOfMessagesForwardedPerSecond:
+field_averageNumberOfMessagesForwardedPerSecond->set_implicit_omit(); break;
+case ALT_averageNumberOfMessagesFilteredPerSecond:
+field_averageNumberOfMessagesFilteredPerSecond->set_implicit_omit(); break;
+case ALT_uptimeSinceLastPowerOnReset__s:
+field_uptimeSinceLastPowerOnReset__s->set_implicit_omit(); break;
+case ALT_numberOfPorts:
+field_numberOfPorts->set_implicit_omit(); break;
+case ALT_networkInterconnectionUnitType:
+field_networkInterconnectionUnitType->set_implicit_omit(); break;
+case ALT_reserved:
+field_reserved->set_implicit_omit(); break;
+default: break;
+}
+}
+
+void RequestedParametric::encode_text(Text_Buf& text_buf) const
+{
+text_buf.push_int(union_selection);
+switch (union_selection) {
+case ALT_buffersize:
+field_buffersize->encode_text(text_buf);
+break;
+case ALT_maximumFilterDatabaseSize:
+field_maximumFilterDatabaseSize->encode_text(text_buf);
+break;
+case ALT_numberOfFilterDatabaseEntries:
+field_numberOfFilterDatabaseEntries->encode_text(text_buf);
+break;
+case ALT_maximumNumberOfMessagesReceivedPerSecond:
+field_maximumNumberOfMessagesReceivedPerSecond->encode_text(text_buf);
+break;
+case ALT_maximumNumberOfMessagesForwardedPerSecond:
+field_maximumNumberOfMessagesForwardedPerSecond->encode_text(text_buf);
+break;
+case ALT_maximumNumberOfMessagesFilteredPerSecond:
+field_maximumNumberOfMessagesFilteredPerSecond->encode_text(text_buf);
+break;
+case ALT_maximumTransitDelayTime__ms:
+field_maximumTransitDelayTime__ms->encode_text(text_buf);
+break;
+case ALT_averageTransitDelayTime__ms:
+field_averageTransitDelayTime__ms->encode_text(text_buf);
+break;
+case ALT_numberOfMessagesLostDueToBufferOverflow:
+field_numberOfMessagesLostDueToBufferOverflow->encode_text(text_buf);
+break;
+case ALT_numberOfMessagesWithExcessTransitDelayTime:
+field_numberOfMessagesWithExcessTransitDelayTime->encode_text(text_buf);
+break;
+case ALT_averageNumberOfMessagesReceivedPerSecond:
+field_averageNumberOfMessagesReceivedPerSecond->encode_text(text_buf);
+break;
+case ALT_averageNumberOfMessagesForwardedPerSecond:
+field_averageNumberOfMessagesForwardedPerSecond->encode_text(text_buf);
+break;
+case ALT_averageNumberOfMessagesFilteredPerSecond:
+field_averageNumberOfMessagesFilteredPerSecond->encode_text(text_buf);
+break;
+case ALT_uptimeSinceLastPowerOnReset__s:
+field_uptimeSinceLastPowerOnReset__s->encode_text(text_buf);
+break;
+case ALT_numberOfPorts:
+field_numberOfPorts->encode_text(text_buf);
+break;
+case ALT_networkInterconnectionUnitType:
+field_networkInterconnectionUnitType->encode_text(text_buf);
+break;
+case ALT_reserved:
+field_reserved->encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an unbound value of union type @IsobusNMMessageTypes.RequestedParametric.");
+}
+}
+
+void RequestedParametric::decode_text(Text_Buf& text_buf)
+{
+switch ((union_selection_type)text_buf.pull_int().get_val()) {
+case ALT_buffersize:
+buffersize().decode_text(text_buf);
+break;
+case ALT_maximumFilterDatabaseSize:
+maximumFilterDatabaseSize().decode_text(text_buf);
+break;
+case ALT_numberOfFilterDatabaseEntries:
+numberOfFilterDatabaseEntries().decode_text(text_buf);
+break;
+case ALT_maximumNumberOfMessagesReceivedPerSecond:
+maximumNumberOfMessagesReceivedPerSecond().decode_text(text_buf);
+break;
+case ALT_maximumNumberOfMessagesForwardedPerSecond:
+maximumNumberOfMessagesForwardedPerSecond().decode_text(text_buf);
+break;
+case ALT_maximumNumberOfMessagesFilteredPerSecond:
+maximumNumberOfMessagesFilteredPerSecond().decode_text(text_buf);
+break;
+case ALT_maximumTransitDelayTime__ms:
+maximumTransitDelayTime__ms().decode_text(text_buf);
+break;
+case ALT_averageTransitDelayTime__ms:
+averageTransitDelayTime__ms().decode_text(text_buf);
+break;
+case ALT_numberOfMessagesLostDueToBufferOverflow:
+numberOfMessagesLostDueToBufferOverflow().decode_text(text_buf);
+break;
+case ALT_numberOfMessagesWithExcessTransitDelayTime:
+numberOfMessagesWithExcessTransitDelayTime().decode_text(text_buf);
+break;
+case ALT_averageNumberOfMessagesReceivedPerSecond:
+averageNumberOfMessagesReceivedPerSecond().decode_text(text_buf);
+break;
+case ALT_averageNumberOfMessagesForwardedPerSecond:
+averageNumberOfMessagesForwardedPerSecond().decode_text(text_buf);
+break;
+case ALT_averageNumberOfMessagesFilteredPerSecond:
+averageNumberOfMessagesFilteredPerSecond().decode_text(text_buf);
+break;
+case ALT_uptimeSinceLastPowerOnReset__s:
+uptimeSinceLastPowerOnReset__s().decode_text(text_buf);
+break;
+case ALT_numberOfPorts:
+numberOfPorts().decode_text(text_buf);
+break;
+case ALT_networkInterconnectionUnitType:
+networkInterconnectionUnitType().decode_text(text_buf);
+break;
+case ALT_reserved:
+reserved().decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for type @IsobusNMMessageTypes.RequestedParametric.");
+}
+}
+
+void RequestedParametric::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void RequestedParametric::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int RequestedParametric::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, Buffersize_descr_.raw->forceomit);
+      decoded_length = buffersize().RAW_decode(Buffersize_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, MaximumFilterDatabaseSize_descr_.raw->forceomit);
+      decoded_length = maximumFilterDatabaseSize().RAW_decode(MaximumFilterDatabaseSize_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, NumberOfFilterDatabaseEntries_descr_.raw->forceomit);
+      decoded_length = numberOfFilterDatabaseEntries().RAW_decode(NumberOfFilterDatabaseEntries_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 3: {
+      RAW_Force_Omit field_force_omit(3, force_omit, MaximumNumberOfMessagesReceivedPerSecond_descr_.raw->forceomit);
+      decoded_length = maximumNumberOfMessagesReceivedPerSecond().RAW_decode(MaximumNumberOfMessagesReceivedPerSecond_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 4: {
+      RAW_Force_Omit field_force_omit(4, force_omit, MaximumNumberOfMessagesForwardedPerSecond_descr_.raw->forceomit);
+      decoded_length = maximumNumberOfMessagesForwardedPerSecond().RAW_decode(MaximumNumberOfMessagesForwardedPerSecond_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 5: {
+      RAW_Force_Omit field_force_omit(5, force_omit, MaximumNumberOfMessagesFilteredPerSecond_descr_.raw->forceomit);
+      decoded_length = maximumNumberOfMessagesFilteredPerSecond().RAW_decode(MaximumNumberOfMessagesFilteredPerSecond_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 6: {
+      RAW_Force_Omit field_force_omit(6, force_omit, MaximumTransitDelayTime__ms_descr_.raw->forceomit);
+      decoded_length = maximumTransitDelayTime__ms().RAW_decode(MaximumTransitDelayTime__ms_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 7: {
+      RAW_Force_Omit field_force_omit(7, force_omit, AverageTransitDelayTime__ms_descr_.raw->forceomit);
+      decoded_length = averageTransitDelayTime__ms().RAW_decode(AverageTransitDelayTime__ms_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 8: {
+      RAW_Force_Omit field_force_omit(8, force_omit, NumberOfMessagesLostDueToBufferOverflow_descr_.raw->forceomit);
+      decoded_length = numberOfMessagesLostDueToBufferOverflow().RAW_decode(NumberOfMessagesLostDueToBufferOverflow_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 9: {
+      RAW_Force_Omit field_force_omit(9, force_omit, NumberOfMessagesWithExcessTransitDelayTime_descr_.raw->forceomit);
+      decoded_length = numberOfMessagesWithExcessTransitDelayTime().RAW_decode(NumberOfMessagesWithExcessTransitDelayTime_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 10: {
+      RAW_Force_Omit field_force_omit(10, force_omit, AverageNumberOfMessagesReceivedPerSecond_descr_.raw->forceomit);
+      decoded_length = averageNumberOfMessagesReceivedPerSecond().RAW_decode(AverageNumberOfMessagesReceivedPerSecond_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 11: {
+      RAW_Force_Omit field_force_omit(11, force_omit, AverageNumberOfMessagesForwardedPerSecond_descr_.raw->forceomit);
+      decoded_length = averageNumberOfMessagesForwardedPerSecond().RAW_decode(AverageNumberOfMessagesForwardedPerSecond_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 12: {
+      RAW_Force_Omit field_force_omit(12, force_omit, AverageNumberOfMessagesFilteredPerSecond_descr_.raw->forceomit);
+      decoded_length = averageNumberOfMessagesFilteredPerSecond().RAW_decode(AverageNumberOfMessagesFilteredPerSecond_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 13: {
+      RAW_Force_Omit field_force_omit(13, force_omit, UptimeSinceLastPowerOnReset__s_descr_.raw->forceomit);
+      decoded_length = uptimeSinceLastPowerOnReset__s().RAW_decode(UptimeSinceLastPowerOnReset__s_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 14: {
+      RAW_Force_Omit field_force_omit(14, force_omit, NumberOfPorts_descr_.raw->forceomit);
+      decoded_length = numberOfPorts().RAW_decode(NumberOfPorts_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 15: {
+      RAW_Force_Omit field_force_omit(15, force_omit, NetworkInterconnectionUnitType_descr_.raw->forceomit);
+      decoded_length = networkInterconnectionUnitType().RAW_decode(NetworkInterconnectionUnitType_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 16: {
+      RAW_Force_Omit field_force_omit(16, force_omit, Reserved_descr_.raw->forceomit);
+      decoded_length = reserved().RAW_decode(Reserved_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, Buffersize_descr_.raw->forceomit);
+      decoded_length = buffersize().RAW_decode(Buffersize_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, MaximumFilterDatabaseSize_descr_.raw->forceomit);
+      decoded_length = maximumFilterDatabaseSize().RAW_decode(MaximumFilterDatabaseSize_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, NumberOfFilterDatabaseEntries_descr_.raw->forceomit);
+      decoded_length = numberOfFilterDatabaseEntries().RAW_decode(NumberOfFilterDatabaseEntries_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;
+       }
+      p_buf.set_pos_bit(starting_pos);
+      RAW_Force_Omit field_3_force_omit(3, force_omit, MaximumNumberOfMessagesReceivedPerSecond_descr_.raw->forceomit);
+      decoded_length = maximumNumberOfMessagesReceivedPerSecond().RAW_decode(MaximumNumberOfMessagesReceivedPerSecond_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_3_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_4_force_omit(4, force_omit, MaximumNumberOfMessagesForwardedPerSecond_descr_.raw->forceomit);
+      decoded_length = maximumNumberOfMessagesForwardedPerSecond().RAW_decode(MaximumNumberOfMessagesForwardedPerSecond_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_4_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_5_force_omit(5, force_omit, MaximumNumberOfMessagesFilteredPerSecond_descr_.raw->forceomit);
+      decoded_length = maximumNumberOfMessagesFilteredPerSecond().RAW_decode(MaximumNumberOfMessagesFilteredPerSecond_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_5_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_6_force_omit(6, force_omit, MaximumTransitDelayTime__ms_descr_.raw->forceomit);
+      decoded_length = maximumTransitDelayTime__ms().RAW_decode(MaximumTransitDelayTime__ms_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_6_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_7_force_omit(7, force_omit, AverageTransitDelayTime__ms_descr_.raw->forceomit);
+      decoded_length = averageTransitDelayTime__ms().RAW_decode(AverageTransitDelayTime__ms_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_7_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_8_force_omit(8, force_omit, NumberOfMessagesLostDueToBufferOverflow_descr_.raw->forceomit);
+      decoded_length = numberOfMessagesLostDueToBufferOverflow().RAW_decode(NumberOfMessagesLostDueToBufferOverflow_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_8_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_9_force_omit(9, force_omit, NumberOfMessagesWithExcessTransitDelayTime_descr_.raw->forceomit);
+      decoded_length = numberOfMessagesWithExcessTransitDelayTime().RAW_decode(NumberOfMessagesWithExcessTransitDelayTime_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_9_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_10_force_omit(10, force_omit, AverageNumberOfMessagesReceivedPerSecond_descr_.raw->forceomit);
+      decoded_length = averageNumberOfMessagesReceivedPerSecond().RAW_decode(AverageNumberOfMessagesReceivedPerSecond_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_10_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_11_force_omit(11, force_omit, AverageNumberOfMessagesForwardedPerSecond_descr_.raw->forceomit);
+      decoded_length = averageNumberOfMessagesForwardedPerSecond().RAW_decode(AverageNumberOfMessagesForwardedPerSecond_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_11_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_12_force_omit(12, force_omit, AverageNumberOfMessagesFilteredPerSecond_descr_.raw->forceomit);
+      decoded_length = averageNumberOfMessagesFilteredPerSecond().RAW_decode(AverageNumberOfMessagesFilteredPerSecond_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_12_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_13_force_omit(13, force_omit, UptimeSinceLastPowerOnReset__s_descr_.raw->forceomit);
+      decoded_length = uptimeSinceLastPowerOnReset__s().RAW_decode(UptimeSinceLastPowerOnReset__s_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_13_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_14_force_omit(14, force_omit, NumberOfPorts_descr_.raw->forceomit);
+      decoded_length = numberOfPorts().RAW_decode(NumberOfPorts_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_14_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_15_force_omit(15, force_omit, NetworkInterconnectionUnitType_descr_.raw->forceomit);
+      decoded_length = networkInterconnectionUnitType().RAW_decode(NetworkInterconnectionUnitType_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_15_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_16_force_omit(16, force_omit, Reserved_descr_.raw->forceomit);
+      decoded_length = reserved().RAW_decode(Reserved_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_16_force_omit);
+      if (decoded_length >= 0) {
+         return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+       }
+ }
+ clean_up();
+ return -1;
+}
+
+int RequestedParametric::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const
+{
+  int encoded_length = 0;
+  myleaf.isleaf = FALSE;
+  myleaf.body.node.num_of_nodes = 17;  myleaf.body.node.nodes = init_nodes_of_enc_tree(17);
+  memset(myleaf.body.node.nodes, 0, 17 * sizeof(RAW_enc_tree *));
+  switch (union_selection) {
+  case ALT_buffersize:
+    myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 0, Buffersize_descr_.raw);
+    encoded_length = field_buffersize->RAW_encode(Buffersize_descr_, *myleaf.body.node.nodes[0]);
+    myleaf.body.node.nodes[0]->coding_descr = &Buffersize_descr_;
+    break;
+  case ALT_maximumFilterDatabaseSize:
+    myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 1, MaximumFilterDatabaseSize_descr_.raw);
+    encoded_length = field_maximumFilterDatabaseSize->RAW_encode(MaximumFilterDatabaseSize_descr_, *myleaf.body.node.nodes[1]);
+    myleaf.body.node.nodes[1]->coding_descr = &MaximumFilterDatabaseSize_descr_;
+    break;
+  case ALT_numberOfFilterDatabaseEntries:
+    myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 2, NumberOfFilterDatabaseEntries_descr_.raw);
+    encoded_length = field_numberOfFilterDatabaseEntries->RAW_encode(NumberOfFilterDatabaseEntries_descr_, *myleaf.body.node.nodes[2]);
+    myleaf.body.node.nodes[2]->coding_descr = &NumberOfFilterDatabaseEntries_descr_;
+    break;
+  case ALT_maximumNumberOfMessagesReceivedPerSecond:
+    myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 3, MaximumNumberOfMessagesReceivedPerSecond_descr_.raw);
+    encoded_length = field_maximumNumberOfMessagesReceivedPerSecond->RAW_encode(MaximumNumberOfMessagesReceivedPerSecond_descr_, *myleaf.body.node.nodes[3]);
+    myleaf.body.node.nodes[3]->coding_descr = &MaximumNumberOfMessagesReceivedPerSecond_descr_;
+    break;
+  case ALT_maximumNumberOfMessagesForwardedPerSecond:
+    myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 4, MaximumNumberOfMessagesForwardedPerSecond_descr_.raw);
+    encoded_length = field_maximumNumberOfMessagesForwardedPerSecond->RAW_encode(MaximumNumberOfMessagesForwardedPerSecond_descr_, *myleaf.body.node.nodes[4]);
+    myleaf.body.node.nodes[4]->coding_descr = &MaximumNumberOfMessagesForwardedPerSecond_descr_;
+    break;
+  case ALT_maximumNumberOfMessagesFilteredPerSecond:
+    myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 5, MaximumNumberOfMessagesFilteredPerSecond_descr_.raw);
+    encoded_length = field_maximumNumberOfMessagesFilteredPerSecond->RAW_encode(MaximumNumberOfMessagesFilteredPerSecond_descr_, *myleaf.body.node.nodes[5]);
+    myleaf.body.node.nodes[5]->coding_descr = &MaximumNumberOfMessagesFilteredPerSecond_descr_;
+    break;
+  case ALT_maximumTransitDelayTime__ms:
+    myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 6, MaximumTransitDelayTime__ms_descr_.raw);
+    encoded_length = field_maximumTransitDelayTime__ms->RAW_encode(MaximumTransitDelayTime__ms_descr_, *myleaf.body.node.nodes[6]);
+    myleaf.body.node.nodes[6]->coding_descr = &MaximumTransitDelayTime__ms_descr_;
+    break;
+  case ALT_averageTransitDelayTime__ms:
+    myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 7, AverageTransitDelayTime__ms_descr_.raw);
+    encoded_length = field_averageTransitDelayTime__ms->RAW_encode(AverageTransitDelayTime__ms_descr_, *myleaf.body.node.nodes[7]);
+    myleaf.body.node.nodes[7]->coding_descr = &AverageTransitDelayTime__ms_descr_;
+    break;
+  case ALT_numberOfMessagesLostDueToBufferOverflow:
+    myleaf.body.node.nodes[8] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 8, NumberOfMessagesLostDueToBufferOverflow_descr_.raw);
+    encoded_length = field_numberOfMessagesLostDueToBufferOverflow->RAW_encode(NumberOfMessagesLostDueToBufferOverflow_descr_, *myleaf.body.node.nodes[8]);
+    myleaf.body.node.nodes[8]->coding_descr = &NumberOfMessagesLostDueToBufferOverflow_descr_;
+    break;
+  case ALT_numberOfMessagesWithExcessTransitDelayTime:
+    myleaf.body.node.nodes[9] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 9, NumberOfMessagesWithExcessTransitDelayTime_descr_.raw);
+    encoded_length = field_numberOfMessagesWithExcessTransitDelayTime->RAW_encode(NumberOfMessagesWithExcessTransitDelayTime_descr_, *myleaf.body.node.nodes[9]);
+    myleaf.body.node.nodes[9]->coding_descr = &NumberOfMessagesWithExcessTransitDelayTime_descr_;
+    break;
+  case ALT_averageNumberOfMessagesReceivedPerSecond:
+    myleaf.body.node.nodes[10] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 10, AverageNumberOfMessagesReceivedPerSecond_descr_.raw);
+    encoded_length = field_averageNumberOfMessagesReceivedPerSecond->RAW_encode(AverageNumberOfMessagesReceivedPerSecond_descr_, *myleaf.body.node.nodes[10]);
+    myleaf.body.node.nodes[10]->coding_descr = &AverageNumberOfMessagesReceivedPerSecond_descr_;
+    break;
+  case ALT_averageNumberOfMessagesForwardedPerSecond:
+    myleaf.body.node.nodes[11] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 11, AverageNumberOfMessagesForwardedPerSecond_descr_.raw);
+    encoded_length = field_averageNumberOfMessagesForwardedPerSecond->RAW_encode(AverageNumberOfMessagesForwardedPerSecond_descr_, *myleaf.body.node.nodes[11]);
+    myleaf.body.node.nodes[11]->coding_descr = &AverageNumberOfMessagesForwardedPerSecond_descr_;
+    break;
+  case ALT_averageNumberOfMessagesFilteredPerSecond:
+    myleaf.body.node.nodes[12] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 12, AverageNumberOfMessagesFilteredPerSecond_descr_.raw);
+    encoded_length = field_averageNumberOfMessagesFilteredPerSecond->RAW_encode(AverageNumberOfMessagesFilteredPerSecond_descr_, *myleaf.body.node.nodes[12]);
+    myleaf.body.node.nodes[12]->coding_descr = &AverageNumberOfMessagesFilteredPerSecond_descr_;
+    break;
+  case ALT_uptimeSinceLastPowerOnReset__s:
+    myleaf.body.node.nodes[13] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 13, UptimeSinceLastPowerOnReset__s_descr_.raw);
+    encoded_length = field_uptimeSinceLastPowerOnReset__s->RAW_encode(UptimeSinceLastPowerOnReset__s_descr_, *myleaf.body.node.nodes[13]);
+    myleaf.body.node.nodes[13]->coding_descr = &UptimeSinceLastPowerOnReset__s_descr_;
+    break;
+  case ALT_numberOfPorts:
+    myleaf.body.node.nodes[14] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 14, NumberOfPorts_descr_.raw);
+    encoded_length = field_numberOfPorts->RAW_encode(NumberOfPorts_descr_, *myleaf.body.node.nodes[14]);
+    myleaf.body.node.nodes[14]->coding_descr = &NumberOfPorts_descr_;
+    break;
+  case ALT_networkInterconnectionUnitType:
+    myleaf.body.node.nodes[15] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 15, NetworkInterconnectionUnitType_descr_.raw);
+    encoded_length = field_networkInterconnectionUnitType->RAW_encode(NetworkInterconnectionUnitType_descr_, *myleaf.body.node.nodes[15]);
+    myleaf.body.node.nodes[15]->coding_descr = &NetworkInterconnectionUnitType_descr_;
+    break;
+  case ALT_reserved:
+    myleaf.body.node.nodes[16] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 16, Reserved_descr_.raw);
+    encoded_length = field_reserved->RAW_encode(Reserved_descr_, *myleaf.body.node.nodes[16]);
+    myleaf.body.node.nodes[16]->coding_descr = &Reserved_descr_;
+    break;
+  default:
+    TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
+  }
+  return encoded_length;
+}
+
+void RequestedParametric_template::copy_value(const RequestedParametric& other_value)
+{
+single_value.union_selection = other_value.get_selection();
+switch (single_value.union_selection) {
+case RequestedParametric::ALT_buffersize:
+single_value.field_buffersize = new OCTETSTRING_template(other_value.buffersize());
+break;
+case RequestedParametric::ALT_maximumFilterDatabaseSize:
+single_value.field_maximumFilterDatabaseSize = new OCTETSTRING_template(other_value.maximumFilterDatabaseSize());
+break;
+case RequestedParametric::ALT_numberOfFilterDatabaseEntries:
+single_value.field_numberOfFilterDatabaseEntries = new OCTETSTRING_template(other_value.numberOfFilterDatabaseEntries());
+break;
+case RequestedParametric::ALT_maximumNumberOfMessagesReceivedPerSecond:
+single_value.field_maximumNumberOfMessagesReceivedPerSecond = new OCTETSTRING_template(other_value.maximumNumberOfMessagesReceivedPerSecond());
+break;
+case RequestedParametric::ALT_maximumNumberOfMessagesForwardedPerSecond:
+single_value.field_maximumNumberOfMessagesForwardedPerSecond = new OCTETSTRING_template(other_value.maximumNumberOfMessagesForwardedPerSecond());
+break;
+case RequestedParametric::ALT_maximumNumberOfMessagesFilteredPerSecond:
+single_value.field_maximumNumberOfMessagesFilteredPerSecond = new OCTETSTRING_template(other_value.maximumNumberOfMessagesFilteredPerSecond());
+break;
+case RequestedParametric::ALT_maximumTransitDelayTime__ms:
+single_value.field_maximumTransitDelayTime__ms = new OCTETSTRING_template(other_value.maximumTransitDelayTime__ms());
+break;
+case RequestedParametric::ALT_averageTransitDelayTime__ms:
+single_value.field_averageTransitDelayTime__ms = new OCTETSTRING_template(other_value.averageTransitDelayTime__ms());
+break;
+case RequestedParametric::ALT_numberOfMessagesLostDueToBufferOverflow:
+single_value.field_numberOfMessagesLostDueToBufferOverflow = new OCTETSTRING_template(other_value.numberOfMessagesLostDueToBufferOverflow());
+break;
+case RequestedParametric::ALT_numberOfMessagesWithExcessTransitDelayTime:
+single_value.field_numberOfMessagesWithExcessTransitDelayTime = new OCTETSTRING_template(other_value.numberOfMessagesWithExcessTransitDelayTime());
+break;
+case RequestedParametric::ALT_averageNumberOfMessagesReceivedPerSecond:
+single_value.field_averageNumberOfMessagesReceivedPerSecond = new OCTETSTRING_template(other_value.averageNumberOfMessagesReceivedPerSecond());
+break;
+case RequestedParametric::ALT_averageNumberOfMessagesForwardedPerSecond:
+single_value.field_averageNumberOfMessagesForwardedPerSecond = new OCTETSTRING_template(other_value.averageNumberOfMessagesForwardedPerSecond());
+break;
+case RequestedParametric::ALT_averageNumberOfMessagesFilteredPerSecond:
+single_value.field_averageNumberOfMessagesFilteredPerSecond = new OCTETSTRING_template(other_value.averageNumberOfMessagesFilteredPerSecond());
+break;
+case RequestedParametric::ALT_uptimeSinceLastPowerOnReset__s:
+single_value.field_uptimeSinceLastPowerOnReset__s = new OCTETSTRING_template(other_value.uptimeSinceLastPowerOnReset__s());
+break;
+case RequestedParametric::ALT_numberOfPorts:
+single_value.field_numberOfPorts = new OCTETSTRING_template(other_value.numberOfPorts());
+break;
+case RequestedParametric::ALT_networkInterconnectionUnitType:
+single_value.field_networkInterconnectionUnitType = new OCTETSTRING_template(other_value.networkInterconnectionUnitType());
+break;
+case RequestedParametric::ALT_reserved:
+single_value.field_reserved = new OCTETSTRING_template(other_value.reserved());
+break;
+default:
+TTCN_error("Initializing a template with an unbound value of type @IsobusNMMessageTypes.RequestedParametric.");
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void RequestedParametric_template::copy_template(const RequestedParametric_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 RequestedParametric::ALT_buffersize:
+single_value.field_buffersize = new OCTETSTRING_template(*other_value.single_value.field_buffersize);
+break;
+case RequestedParametric::ALT_maximumFilterDatabaseSize:
+single_value.field_maximumFilterDatabaseSize = new OCTETSTRING_template(*other_value.single_value.field_maximumFilterDatabaseSize);
+break;
+case RequestedParametric::ALT_numberOfFilterDatabaseEntries:
+single_value.field_numberOfFilterDatabaseEntries = new OCTETSTRING_template(*other_value.single_value.field_numberOfFilterDatabaseEntries);
+break;
+case RequestedParametric::ALT_maximumNumberOfMessagesReceivedPerSecond:
+single_value.field_maximumNumberOfMessagesReceivedPerSecond = new OCTETSTRING_template(*other_value.single_value.field_maximumNumberOfMessagesReceivedPerSecond);
+break;
+case RequestedParametric::ALT_maximumNumberOfMessagesForwardedPerSecond:
+single_value.field_maximumNumberOfMessagesForwardedPerSecond = new OCTETSTRING_template(*other_value.single_value.field_maximumNumberOfMessagesForwardedPerSecond);
+break;
+case RequestedParametric::ALT_maximumNumberOfMessagesFilteredPerSecond:
+single_value.field_maximumNumberOfMessagesFilteredPerSecond = new OCTETSTRING_template(*other_value.single_value.field_maximumNumberOfMessagesFilteredPerSecond);
+break;
+case RequestedParametric::ALT_maximumTransitDelayTime__ms:
+single_value.field_maximumTransitDelayTime__ms = new OCTETSTRING_template(*other_value.single_value.field_maximumTransitDelayTime__ms);
+break;
+case RequestedParametric::ALT_averageTransitDelayTime__ms:
+single_value.field_averageTransitDelayTime__ms = new OCTETSTRING_template(*other_value.single_value.field_averageTransitDelayTime__ms);
+break;
+case RequestedParametric::ALT_numberOfMessagesLostDueToBufferOverflow:
+single_value.field_numberOfMessagesLostDueToBufferOverflow = new OCTETSTRING_template(*other_value.single_value.field_numberOfMessagesLostDueToBufferOverflow);
+break;
+case RequestedParametric::ALT_numberOfMessagesWithExcessTransitDelayTime:
+single_value.field_numberOfMessagesWithExcessTransitDelayTime = new OCTETSTRING_template(*other_value.single_value.field_numberOfMessagesWithExcessTransitDelayTime);
+break;
+case RequestedParametric::ALT_averageNumberOfMessagesReceivedPerSecond:
+single_value.field_averageNumberOfMessagesReceivedPerSecond = new OCTETSTRING_template(*other_value.single_value.field_averageNumberOfMessagesReceivedPerSecond);
+break;
+case RequestedParametric::ALT_averageNumberOfMessagesForwardedPerSecond:
+single_value.field_averageNumberOfMessagesForwardedPerSecond = new OCTETSTRING_template(*other_value.single_value.field_averageNumberOfMessagesForwardedPerSecond);
+break;
+case RequestedParametric::ALT_averageNumberOfMessagesFilteredPerSecond:
+single_value.field_averageNumberOfMessagesFilteredPerSecond = new OCTETSTRING_template(*other_value.single_value.field_averageNumberOfMessagesFilteredPerSecond);
+break;
+case RequestedParametric::ALT_uptimeSinceLastPowerOnReset__s:
+single_value.field_uptimeSinceLastPowerOnReset__s = new OCTETSTRING_template(*other_value.single_value.field_uptimeSinceLastPowerOnReset__s);
+break;
+case RequestedParametric::ALT_numberOfPorts:
+single_value.field_numberOfPorts = new OCTETSTRING_template(*other_value.single_value.field_numberOfPorts);
+break;
+case RequestedParametric::ALT_networkInterconnectionUnitType:
+single_value.field_networkInterconnectionUnitType = new OCTETSTRING_template(*other_value.single_value.field_networkInterconnectionUnitType);
+break;
+case RequestedParametric::ALT_reserved:
+single_value.field_reserved = new OCTETSTRING_template(*other_value.single_value.field_reserved);
+break;
+default:
+TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @IsobusNMMessageTypes.RequestedParametric.");
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new RequestedParametric_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;
+default:
+TTCN_error("Copying an uninitialized template of union type @IsobusNMMessageTypes.RequestedParametric.");
+}
+set_selection(other_value);
+}
+
+RequestedParametric_template::RequestedParametric_template()
+{
+}
+
+RequestedParametric_template::RequestedParametric_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+RequestedParametric_template::RequestedParametric_template(const RequestedParametric& other_value)
+{
+copy_value(other_value);
+}
+
+RequestedParametric_template::RequestedParametric_template(const OPTIONAL<RequestedParametric>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const RequestedParametric&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of union type @IsobusNMMessageTypes.RequestedParametric from an unbound optional field.");
+}
+}
+
+RequestedParametric_template::RequestedParametric_template(const RequestedParametric_template& other_value)
+: Base_Template(){
+copy_template(other_value);
+}
+
+RequestedParametric_template::~RequestedParametric_template()
+{
+clean_up();
+}
+
+void RequestedParametric_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case RequestedParametric::ALT_buffersize:
+delete single_value.field_buffersize;
+break;
+case RequestedParametric::ALT_maximumFilterDatabaseSize:
+delete single_value.field_maximumFilterDatabaseSize;
+break;
+case RequestedParametric::ALT_numberOfFilterDatabaseEntries:
+delete single_value.field_numberOfFilterDatabaseEntries;
+break;
+case RequestedParametric::ALT_maximumNumberOfMessagesReceivedPerSecond:
+delete single_value.field_maximumNumberOfMessagesReceivedPerSecond;
+break;
+case RequestedParametric::ALT_maximumNumberOfMessagesForwardedPerSecond:
+delete single_value.field_maximumNumberOfMessagesForwardedPerSecond;
+break;
+case RequestedParametric::ALT_maximumNumberOfMessagesFilteredPerSecond:
+delete single_value.field_maximumNumberOfMessagesFilteredPerSecond;
+break;
+case RequestedParametric::ALT_maximumTransitDelayTime__ms:
+delete single_value.field_maximumTransitDelayTime__ms;
+break;
+case RequestedParametric::ALT_averageTransitDelayTime__ms:
+delete single_value.field_averageTransitDelayTime__ms;
+break;
+case RequestedParametric::ALT_numberOfMessagesLostDueToBufferOverflow:
+delete single_value.field_numberOfMessagesLostDueToBufferOverflow;
+break;
+case RequestedParametric::ALT_numberOfMessagesWithExcessTransitDelayTime:
+delete single_value.field_numberOfMessagesWithExcessTransitDelayTime;
+break;
+case RequestedParametric::ALT_averageNumberOfMessagesReceivedPerSecond:
+delete single_value.field_averageNumberOfMessagesReceivedPerSecond;
+break;
+case RequestedParametric::ALT_averageNumberOfMessagesForwardedPerSecond:
+delete single_value.field_averageNumberOfMessagesForwardedPerSecond;
+break;
+case RequestedParametric::ALT_averageNumberOfMessagesFilteredPerSecond:
+delete single_value.field_averageNumberOfMessagesFilteredPerSecond;
+break;
+case RequestedParametric::ALT_uptimeSinceLastPowerOnReset__s:
+delete single_value.field_uptimeSinceLastPowerOnReset__s;
+break;
+case RequestedParametric::ALT_numberOfPorts:
+delete single_value.field_numberOfPorts;
+break;
+case RequestedParametric::ALT_networkInterconnectionUnitType:
+delete single_value.field_networkInterconnectionUnitType;
+break;
+case RequestedParametric::ALT_reserved:
+delete single_value.field_reserved;
+default:
+break;
+}
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+RequestedParametric_template& RequestedParametric_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+RequestedParametric_template& RequestedParametric_template::operator=(const RequestedParametric& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+RequestedParametric_template& RequestedParametric_template::operator=(const OPTIONAL<RequestedParametric>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const RequestedParametric&)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 @IsobusNMMessageTypes.RequestedParametric.");
+}
+return *this;
+}
+
+RequestedParametric_template& RequestedParametric_template::operator=(const RequestedParametric_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean RequestedParametric_template::match(const RequestedParametric& 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:
+{
+RequestedParametric::union_selection_type value_selection = other_value.get_selection();
+if (value_selection == RequestedParametric::UNBOUND_VALUE) return FALSE;
+if (value_selection != single_value.union_selection) return FALSE;
+switch (value_selection) {
+case RequestedParametric::ALT_buffersize:
+return single_value.field_buffersize->match(other_value.buffersize(), legacy);
+case RequestedParametric::ALT_maximumFilterDatabaseSize:
+return single_value.field_maximumFilterDatabaseSize->match(other_value.maximumFilterDatabaseSize(), legacy);
+case RequestedParametric::ALT_numberOfFilterDatabaseEntries:
+return single_value.field_numberOfFilterDatabaseEntries->match(other_value.numberOfFilterDatabaseEntries(), legacy);
+case RequestedParametric::ALT_maximumNumberOfMessagesReceivedPerSecond:
+return single_value.field_maximumNumberOfMessagesReceivedPerSecond->match(other_value.maximumNumberOfMessagesReceivedPerSecond(), legacy);
+case RequestedParametric::ALT_maximumNumberOfMessagesForwardedPerSecond:
+return single_value.field_maximumNumberOfMessagesForwardedPerSecond->match(other_value.maximumNumberOfMessagesForwardedPerSecond(), legacy);
+case RequestedParametric::ALT_maximumNumberOfMessagesFilteredPerSecond:
+return single_value.field_maximumNumberOfMessagesFilteredPerSecond->match(other_value.maximumNumberOfMessagesFilteredPerSecond(), legacy);
+case RequestedParametric::ALT_maximumTransitDelayTime__ms:
+return single_value.field_maximumTransitDelayTime__ms->match(other_value.maximumTransitDelayTime__ms(), legacy);
+case RequestedParametric::ALT_averageTransitDelayTime__ms:
+return single_value.field_averageTransitDelayTime__ms->match(other_value.averageTransitDelayTime__ms(), legacy);
+case RequestedParametric::ALT_numberOfMessagesLostDueToBufferOverflow:
+return single_value.field_numberOfMessagesLostDueToBufferOverflow->match(other_value.numberOfMessagesLostDueToBufferOverflow(), legacy);
+case RequestedParametric::ALT_numberOfMessagesWithExcessTransitDelayTime:
+return single_value.field_numberOfMessagesWithExcessTransitDelayTime->match(other_value.numberOfMessagesWithExcessTransitDelayTime(), legacy);
+case RequestedParametric::ALT_averageNumberOfMessagesReceivedPerSecond:
+return single_value.field_averageNumberOfMessagesReceivedPerSecond->match(other_value.averageNumberOfMessagesReceivedPerSecond(), legacy);
+case RequestedParametric::ALT_averageNumberOfMessagesForwardedPerSecond:
+return single_value.field_averageNumberOfMessagesForwardedPerSecond->match(other_value.averageNumberOfMessagesForwardedPerSecond(), legacy);
+case RequestedParametric::ALT_averageNumberOfMessagesFilteredPerSecond:
+return single_value.field_averageNumberOfMessagesFilteredPerSecond->match(other_value.averageNumberOfMessagesFilteredPerSecond(), legacy);
+case RequestedParametric::ALT_uptimeSinceLastPowerOnReset__s:
+return single_value.field_uptimeSinceLastPowerOnReset__s->match(other_value.uptimeSinceLastPowerOnReset__s(), legacy);
+case RequestedParametric::ALT_numberOfPorts:
+return single_value.field_numberOfPorts->match(other_value.numberOfPorts(), legacy);
+case RequestedParametric::ALT_networkInterconnectionUnitType:
+return single_value.field_networkInterconnectionUnitType->match(other_value.networkInterconnectionUnitType(), legacy);
+case RequestedParametric::ALT_reserved:
+return single_value.field_reserved->match(other_value.reserved(), legacy);
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @IsobusNMMessageTypes.RequestedParametric.");
+}
+}
+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;
+default:
+TTCN_error ("Matching an uninitialized template of union type @IsobusNMMessageTypes.RequestedParametric.");
+}
+return FALSE;
+}
+
+boolean RequestedParametric_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+switch (single_value.union_selection) {
+case RequestedParametric::ALT_buffersize:
+return single_value.field_buffersize->is_value();
+case RequestedParametric::ALT_maximumFilterDatabaseSize:
+return single_value.field_maximumFilterDatabaseSize->is_value();
+case RequestedParametric::ALT_numberOfFilterDatabaseEntries:
+return single_value.field_numberOfFilterDatabaseEntries->is_value();
+case RequestedParametric::ALT_maximumNumberOfMessagesReceivedPerSecond:
+return single_value.field_maximumNumberOfMessagesReceivedPerSecond->is_value();
+case RequestedParametric::ALT_maximumNumberOfMessagesForwardedPerSecond:
+return single_value.field_maximumNumberOfMessagesForwardedPerSecond->is_value();
+case RequestedParametric::ALT_maximumNumberOfMessagesFilteredPerSecond:
+return single_value.field_maximumNumberOfMessagesFilteredPerSecond->is_value();
+case RequestedParametric::ALT_maximumTransitDelayTime__ms:
+return single_value.field_maximumTransitDelayTime__ms->is_value();
+case RequestedParametric::ALT_averageTransitDelayTime__ms:
+return single_value.field_averageTransitDelayTime__ms->is_value();
+case RequestedParametric::ALT_numberOfMessagesLostDueToBufferOverflow:
+return single_value.field_numberOfMessagesLostDueToBufferOverflow->is_value();
+case RequestedParametric::ALT_numberOfMessagesWithExcessTransitDelayTime:
+return single_value.field_numberOfMessagesWithExcessTransitDelayTime->is_value();
+case RequestedParametric::ALT_averageNumberOfMessagesReceivedPerSecond:
+return single_value.field_averageNumberOfMessagesReceivedPerSecond->is_value();
+case RequestedParametric::ALT_averageNumberOfMessagesForwardedPerSecond:
+return single_value.field_averageNumberOfMessagesForwardedPerSecond->is_value();
+case RequestedParametric::ALT_averageNumberOfMessagesFilteredPerSecond:
+return single_value.field_averageNumberOfMessagesFilteredPerSecond->is_value();
+case RequestedParametric::ALT_uptimeSinceLastPowerOnReset__s:
+return single_value.field_uptimeSinceLastPowerOnReset__s->is_value();
+case RequestedParametric::ALT_numberOfPorts:
+return single_value.field_numberOfPorts->is_value();
+case RequestedParametric::ALT_networkInterconnectionUnitType:
+return single_value.field_networkInterconnectionUnitType->is_value();
+case RequestedParametric::ALT_reserved:
+return single_value.field_reserved->is_value();
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @IsobusNMMessageTypes.RequestedParametric.");
+}
+}
+
+RequestedParametric RequestedParametric_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 @IsobusNMMessageTypes.RequestedParametric.");
+RequestedParametric ret_val;
+switch (single_value.union_selection) {
+case RequestedParametric::ALT_buffersize:
+ret_val.buffersize() = single_value.field_buffersize->valueof();
+break;
+case RequestedParametric::ALT_maximumFilterDatabaseSize:
+ret_val.maximumFilterDatabaseSize() = single_value.field_maximumFilterDatabaseSize->valueof();
+break;
+case RequestedParametric::ALT_numberOfFilterDatabaseEntries:
+ret_val.numberOfFilterDatabaseEntries() = single_value.field_numberOfFilterDatabaseEntries->valueof();
+break;
+case RequestedParametric::ALT_maximumNumberOfMessagesReceivedPerSecond:
+ret_val.maximumNumberOfMessagesReceivedPerSecond() = single_value.field_maximumNumberOfMessagesReceivedPerSecond->valueof();
+break;
+case RequestedParametric::ALT_maximumNumberOfMessagesForwardedPerSecond:
+ret_val.maximumNumberOfMessagesForwardedPerSecond() = single_value.field_maximumNumberOfMessagesForwardedPerSecond->valueof();
+break;
+case RequestedParametric::ALT_maximumNumberOfMessagesFilteredPerSecond:
+ret_val.maximumNumberOfMessagesFilteredPerSecond() = single_value.field_maximumNumberOfMessagesFilteredPerSecond->valueof();
+break;
+case RequestedParametric::ALT_maximumTransitDelayTime__ms:
+ret_val.maximumTransitDelayTime__ms() = single_value.field_maximumTransitDelayTime__ms->valueof();
+break;
+case RequestedParametric::ALT_averageTransitDelayTime__ms:
+ret_val.averageTransitDelayTime__ms() = single_value.field_averageTransitDelayTime__ms->valueof();
+break;
+case RequestedParametric::ALT_numberOfMessagesLostDueToBufferOverflow:
+ret_val.numberOfMessagesLostDueToBufferOverflow() = single_value.field_numberOfMessagesLostDueToBufferOverflow->valueof();
+break;
+case RequestedParametric::ALT_numberOfMessagesWithExcessTransitDelayTime:
+ret_val.numberOfMessagesWithExcessTransitDelayTime() = single_value.field_numberOfMessagesWithExcessTransitDelayTime->valueof();
+break;
+case RequestedParametric::ALT_averageNumberOfMessagesReceivedPerSecond:
+ret_val.averageNumberOfMessagesReceivedPerSecond() = single_value.field_averageNumberOfMessagesReceivedPerSecond->valueof();
+break;
+case RequestedParametric::ALT_averageNumberOfMessagesForwardedPerSecond:
+ret_val.averageNumberOfMessagesForwardedPerSecond() = single_value.field_averageNumberOfMessagesForwardedPerSecond->valueof();
+break;
+case RequestedParametric::ALT_averageNumberOfMessagesFilteredPerSecond:
+ret_val.averageNumberOfMessagesFilteredPerSecond() = single_value.field_averageNumberOfMessagesFilteredPerSecond->valueof();
+break;
+case RequestedParametric::ALT_uptimeSinceLastPowerOnReset__s:
+ret_val.uptimeSinceLastPowerOnReset__s() = single_value.field_uptimeSinceLastPowerOnReset__s->valueof();
+break;
+case RequestedParametric::ALT_numberOfPorts:
+ret_val.numberOfPorts() = single_value.field_numberOfPorts->valueof();
+break;
+case RequestedParametric::ALT_networkInterconnectionUnitType:
+ret_val.networkInterconnectionUnitType() = single_value.field_networkInterconnectionUnitType->valueof();
+break;
+case RequestedParametric::ALT_reserved:
+ret_val.reserved() = single_value.field_reserved->valueof();
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @IsobusNMMessageTypes.RequestedParametric.");
+}
+return ret_val;
+}
+
+RequestedParametric_template& RequestedParametric_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @IsobusNMMessageTypes.RequestedParametric.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @IsobusNMMessageTypes.RequestedParametric.");
+return value_list.list_value[list_index];
+}
+void RequestedParametric_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error ("Internal error: Setting an invalid list for a template of union type @IsobusNMMessageTypes.RequestedParametric.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new RequestedParametric_template[list_length];
+}
+
+OCTETSTRING_template& RequestedParametric_template::buffersize()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != RequestedParametric::ALT_buffersize) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_buffersize = new OCTETSTRING_template(ANY_VALUE);
+else single_value.field_buffersize = new OCTETSTRING_template;
+single_value.union_selection = RequestedParametric::ALT_buffersize;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_buffersize;
+}
+
+const OCTETSTRING_template& RequestedParametric_template::buffersize() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field buffersize in a non-specific template of union type @IsobusNMMessageTypes.RequestedParametric.");
+if (single_value.union_selection != RequestedParametric::ALT_buffersize) TTCN_error("Accessing non-selected field buffersize in a template of union type @IsobusNMMessageTypes.RequestedParametric.");
+return *single_value.field_buffersize;
+}
+
+OCTETSTRING_template& RequestedParametric_template::maximumFilterDatabaseSize()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != RequestedParametric::ALT_maximumFilterDatabaseSize) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_maximumFilterDatabaseSize = new OCTETSTRING_template(ANY_VALUE);
+else single_value.field_maximumFilterDatabaseSize = new OCTETSTRING_template;
+single_value.union_selection = RequestedParametric::ALT_maximumFilterDatabaseSize;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_maximumFilterDatabaseSize;
+}
+
+const OCTETSTRING_template& RequestedParametric_template::maximumFilterDatabaseSize() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field maximumFilterDatabaseSize in a non-specific template of union type @IsobusNMMessageTypes.RequestedParametric.");
+if (single_value.union_selection != RequestedParametric::ALT_maximumFilterDatabaseSize) TTCN_error("Accessing non-selected field maximumFilterDatabaseSize in a template of union type @IsobusNMMessageTypes.RequestedParametric.");
+return *single_value.field_maximumFilterDatabaseSize;
+}
+
+OCTETSTRING_template& RequestedParametric_template::numberOfFilterDatabaseEntries()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != RequestedParametric::ALT_numberOfFilterDatabaseEntries) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_numberOfFilterDatabaseEntries = new OCTETSTRING_template(ANY_VALUE);
+else single_value.field_numberOfFilterDatabaseEntries = new OCTETSTRING_template;
+single_value.union_selection = RequestedParametric::ALT_numberOfFilterDatabaseEntries;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_numberOfFilterDatabaseEntries;
+}
+
+const OCTETSTRING_template& RequestedParametric_template::numberOfFilterDatabaseEntries() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field numberOfFilterDatabaseEntries in a non-specific template of union type @IsobusNMMessageTypes.RequestedParametric.");
+if (single_value.union_selection != RequestedParametric::ALT_numberOfFilterDatabaseEntries) TTCN_error("Accessing non-selected field numberOfFilterDatabaseEntries in a template of union type @IsobusNMMessageTypes.RequestedParametric.");
+return *single_value.field_numberOfFilterDatabaseEntries;
+}
+
+OCTETSTRING_template& RequestedParametric_template::maximumNumberOfMessagesReceivedPerSecond()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != RequestedParametric::ALT_maximumNumberOfMessagesReceivedPerSecond) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_maximumNumberOfMessagesReceivedPerSecond = new OCTETSTRING_template(ANY_VALUE);
+else single_value.field_maximumNumberOfMessagesReceivedPerSecond = new OCTETSTRING_template;
+single_value.union_selection = RequestedParametric::ALT_maximumNumberOfMessagesReceivedPerSecond;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_maximumNumberOfMessagesReceivedPerSecond;
+}
+
+const OCTETSTRING_template& RequestedParametric_template::maximumNumberOfMessagesReceivedPerSecond() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field maximumNumberOfMessagesReceivedPerSecond in a non-specific template of union type @IsobusNMMessageTypes.RequestedParametric.");
+if (single_value.union_selection != RequestedParametric::ALT_maximumNumberOfMessagesReceivedPerSecond) TTCN_error("Accessing non-selected field maximumNumberOfMessagesReceivedPerSecond in a template of union type @IsobusNMMessageTypes.RequestedParametric.");
+return *single_value.field_maximumNumberOfMessagesReceivedPerSecond;
+}
+
+OCTETSTRING_template& RequestedParametric_template::maximumNumberOfMessagesForwardedPerSecond()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != RequestedParametric::ALT_maximumNumberOfMessagesForwardedPerSecond) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_maximumNumberOfMessagesForwardedPerSecond = new OCTETSTRING_template(ANY_VALUE);
+else single_value.field_maximumNumberOfMessagesForwardedPerSecond = new OCTETSTRING_template;
+single_value.union_selection = RequestedParametric::ALT_maximumNumberOfMessagesForwardedPerSecond;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_maximumNumberOfMessagesForwardedPerSecond;
+}
+
+const OCTETSTRING_template& RequestedParametric_template::maximumNumberOfMessagesForwardedPerSecond() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field maximumNumberOfMessagesForwardedPerSecond in a non-specific template of union type @IsobusNMMessageTypes.RequestedParametric.");
+if (single_value.union_selection != RequestedParametric::ALT_maximumNumberOfMessagesForwardedPerSecond) TTCN_error("Accessing non-selected field maximumNumberOfMessagesForwardedPerSecond in a template of union type @IsobusNMMessageTypes.RequestedParametric.");
+return *single_value.field_maximumNumberOfMessagesForwardedPerSecond;
+}
+
+OCTETSTRING_template& RequestedParametric_template::maximumNumberOfMessagesFilteredPerSecond()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != RequestedParametric::ALT_maximumNumberOfMessagesFilteredPerSecond) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_maximumNumberOfMessagesFilteredPerSecond = new OCTETSTRING_template(ANY_VALUE);
+else single_value.field_maximumNumberOfMessagesFilteredPerSecond = new OCTETSTRING_template;
+single_value.union_selection = RequestedParametric::ALT_maximumNumberOfMessagesFilteredPerSecond;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_maximumNumberOfMessagesFilteredPerSecond;
+}
+
+const OCTETSTRING_template& RequestedParametric_template::maximumNumberOfMessagesFilteredPerSecond() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field maximumNumberOfMessagesFilteredPerSecond in a non-specific template of union type @IsobusNMMessageTypes.RequestedParametric.");
+if (single_value.union_selection != RequestedParametric::ALT_maximumNumberOfMessagesFilteredPerSecond) TTCN_error("Accessing non-selected field maximumNumberOfMessagesFilteredPerSecond in a template of union type @IsobusNMMessageTypes.RequestedParametric.");
+return *single_value.field_maximumNumberOfMessagesFilteredPerSecond;
+}
+
+OCTETSTRING_template& RequestedParametric_template::maximumTransitDelayTime__ms()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != RequestedParametric::ALT_maximumTransitDelayTime__ms) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_maximumTransitDelayTime__ms = new OCTETSTRING_template(ANY_VALUE);
+else single_value.field_maximumTransitDelayTime__ms = new OCTETSTRING_template;
+single_value.union_selection = RequestedParametric::ALT_maximumTransitDelayTime__ms;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_maximumTransitDelayTime__ms;
+}
+
+const OCTETSTRING_template& RequestedParametric_template::maximumTransitDelayTime__ms() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field maximumTransitDelayTime_ms in a non-specific template of union type @IsobusNMMessageTypes.RequestedParametric.");
+if (single_value.union_selection != RequestedParametric::ALT_maximumTransitDelayTime__ms) TTCN_error("Accessing non-selected field maximumTransitDelayTime_ms in a template of union type @IsobusNMMessageTypes.RequestedParametric.");
+return *single_value.field_maximumTransitDelayTime__ms;
+}
+
+OCTETSTRING_template& RequestedParametric_template::averageTransitDelayTime__ms()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != RequestedParametric::ALT_averageTransitDelayTime__ms) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_averageTransitDelayTime__ms = new OCTETSTRING_template(ANY_VALUE);
+else single_value.field_averageTransitDelayTime__ms = new OCTETSTRING_template;
+single_value.union_selection = RequestedParametric::ALT_averageTransitDelayTime__ms;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_averageTransitDelayTime__ms;
+}
+
+const OCTETSTRING_template& RequestedParametric_template::averageTransitDelayTime__ms() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field averageTransitDelayTime_ms in a non-specific template of union type @IsobusNMMessageTypes.RequestedParametric.");
+if (single_value.union_selection != RequestedParametric::ALT_averageTransitDelayTime__ms) TTCN_error("Accessing non-selected field averageTransitDelayTime_ms in a template of union type @IsobusNMMessageTypes.RequestedParametric.");
+return *single_value.field_averageTransitDelayTime__ms;
+}
+
+OCTETSTRING_template& RequestedParametric_template::numberOfMessagesLostDueToBufferOverflow()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != RequestedParametric::ALT_numberOfMessagesLostDueToBufferOverflow) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_numberOfMessagesLostDueToBufferOverflow = new OCTETSTRING_template(ANY_VALUE);
+else single_value.field_numberOfMessagesLostDueToBufferOverflow = new OCTETSTRING_template;
+single_value.union_selection = RequestedParametric::ALT_numberOfMessagesLostDueToBufferOverflow;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_numberOfMessagesLostDueToBufferOverflow;
+}
+
+const OCTETSTRING_template& RequestedParametric_template::numberOfMessagesLostDueToBufferOverflow() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field numberOfMessagesLostDueToBufferOverflow in a non-specific template of union type @IsobusNMMessageTypes.RequestedParametric.");
+if (single_value.union_selection != RequestedParametric::ALT_numberOfMessagesLostDueToBufferOverflow) TTCN_error("Accessing non-selected field numberOfMessagesLostDueToBufferOverflow in a template of union type @IsobusNMMessageTypes.RequestedParametric.");
+return *single_value.field_numberOfMessagesLostDueToBufferOverflow;
+}
+
+OCTETSTRING_template& RequestedParametric_template::numberOfMessagesWithExcessTransitDelayTime()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != RequestedParametric::ALT_numberOfMessagesWithExcessTransitDelayTime) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_numberOfMessagesWithExcessTransitDelayTime = new OCTETSTRING_template(ANY_VALUE);
+else single_value.field_numberOfMessagesWithExcessTransitDelayTime = new OCTETSTRING_template;
+single_value.union_selection = RequestedParametric::ALT_numberOfMessagesWithExcessTransitDelayTime;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_numberOfMessagesWithExcessTransitDelayTime;
+}
+
+const OCTETSTRING_template& RequestedParametric_template::numberOfMessagesWithExcessTransitDelayTime() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field numberOfMessagesWithExcessTransitDelayTime in a non-specific template of union type @IsobusNMMessageTypes.RequestedParametric.");
+if (single_value.union_selection != RequestedParametric::ALT_numberOfMessagesWithExcessTransitDelayTime) TTCN_error("Accessing non-selected field numberOfMessagesWithExcessTransitDelayTime in a template of union type @IsobusNMMessageTypes.RequestedParametric.");
+return *single_value.field_numberOfMessagesWithExcessTransitDelayTime;
+}
+
+OCTETSTRING_template& RequestedParametric_template::averageNumberOfMessagesReceivedPerSecond()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != RequestedParametric::ALT_averageNumberOfMessagesReceivedPerSecond) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_averageNumberOfMessagesReceivedPerSecond = new OCTETSTRING_template(ANY_VALUE);
+else single_value.field_averageNumberOfMessagesReceivedPerSecond = new OCTETSTRING_template;
+single_value.union_selection = RequestedParametric::ALT_averageNumberOfMessagesReceivedPerSecond;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_averageNumberOfMessagesReceivedPerSecond;
+}
+
+const OCTETSTRING_template& RequestedParametric_template::averageNumberOfMessagesReceivedPerSecond() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field averageNumberOfMessagesReceivedPerSecond in a non-specific template of union type @IsobusNMMessageTypes.RequestedParametric.");
+if (single_value.union_selection != RequestedParametric::ALT_averageNumberOfMessagesReceivedPerSecond) TTCN_error("Accessing non-selected field averageNumberOfMessagesReceivedPerSecond in a template of union type @IsobusNMMessageTypes.RequestedParametric.");
+return *single_value.field_averageNumberOfMessagesReceivedPerSecond;
+}
+
+OCTETSTRING_template& RequestedParametric_template::averageNumberOfMessagesForwardedPerSecond()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != RequestedParametric::ALT_averageNumberOfMessagesForwardedPerSecond) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_averageNumberOfMessagesForwardedPerSecond = new OCTETSTRING_template(ANY_VALUE);
+else single_value.field_averageNumberOfMessagesForwardedPerSecond = new OCTETSTRING_template;
+single_value.union_selection = RequestedParametric::ALT_averageNumberOfMessagesForwardedPerSecond;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_averageNumberOfMessagesForwardedPerSecond;
+}
+
+const OCTETSTRING_template& RequestedParametric_template::averageNumberOfMessagesForwardedPerSecond() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field averageNumberOfMessagesForwardedPerSecond in a non-specific template of union type @IsobusNMMessageTypes.RequestedParametric.");
+if (single_value.union_selection != RequestedParametric::ALT_averageNumberOfMessagesForwardedPerSecond) TTCN_error("Accessing non-selected field averageNumberOfMessagesForwardedPerSecond in a template of union type @IsobusNMMessageTypes.RequestedParametric.");
+return *single_value.field_averageNumberOfMessagesForwardedPerSecond;
+}
+
+OCTETSTRING_template& RequestedParametric_template::averageNumberOfMessagesFilteredPerSecond()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != RequestedParametric::ALT_averageNumberOfMessagesFilteredPerSecond) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_averageNumberOfMessagesFilteredPerSecond = new OCTETSTRING_template(ANY_VALUE);
+else single_value.field_averageNumberOfMessagesFilteredPerSecond = new OCTETSTRING_template;
+single_value.union_selection = RequestedParametric::ALT_averageNumberOfMessagesFilteredPerSecond;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_averageNumberOfMessagesFilteredPerSecond;
+}
+
+const OCTETSTRING_template& RequestedParametric_template::averageNumberOfMessagesFilteredPerSecond() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field averageNumberOfMessagesFilteredPerSecond in a non-specific template of union type @IsobusNMMessageTypes.RequestedParametric.");
+if (single_value.union_selection != RequestedParametric::ALT_averageNumberOfMessagesFilteredPerSecond) TTCN_error("Accessing non-selected field averageNumberOfMessagesFilteredPerSecond in a template of union type @IsobusNMMessageTypes.RequestedParametric.");
+return *single_value.field_averageNumberOfMessagesFilteredPerSecond;
+}
+
+OCTETSTRING_template& RequestedParametric_template::uptimeSinceLastPowerOnReset__s()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != RequestedParametric::ALT_uptimeSinceLastPowerOnReset__s) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_uptimeSinceLastPowerOnReset__s = new OCTETSTRING_template(ANY_VALUE);
+else single_value.field_uptimeSinceLastPowerOnReset__s = new OCTETSTRING_template;
+single_value.union_selection = RequestedParametric::ALT_uptimeSinceLastPowerOnReset__s;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_uptimeSinceLastPowerOnReset__s;
+}
+
+const OCTETSTRING_template& RequestedParametric_template::uptimeSinceLastPowerOnReset__s() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field uptimeSinceLastPowerOnReset_s in a non-specific template of union type @IsobusNMMessageTypes.RequestedParametric.");
+if (single_value.union_selection != RequestedParametric::ALT_uptimeSinceLastPowerOnReset__s) TTCN_error("Accessing non-selected field uptimeSinceLastPowerOnReset_s in a template of union type @IsobusNMMessageTypes.RequestedParametric.");
+return *single_value.field_uptimeSinceLastPowerOnReset__s;
+}
+
+OCTETSTRING_template& RequestedParametric_template::numberOfPorts()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != RequestedParametric::ALT_numberOfPorts) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_numberOfPorts = new OCTETSTRING_template(ANY_VALUE);
+else single_value.field_numberOfPorts = new OCTETSTRING_template;
+single_value.union_selection = RequestedParametric::ALT_numberOfPorts;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_numberOfPorts;
+}
+
+const OCTETSTRING_template& RequestedParametric_template::numberOfPorts() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field numberOfPorts in a non-specific template of union type @IsobusNMMessageTypes.RequestedParametric.");
+if (single_value.union_selection != RequestedParametric::ALT_numberOfPorts) TTCN_error("Accessing non-selected field numberOfPorts in a template of union type @IsobusNMMessageTypes.RequestedParametric.");
+return *single_value.field_numberOfPorts;
+}
+
+OCTETSTRING_template& RequestedParametric_template::networkInterconnectionUnitType()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != RequestedParametric::ALT_networkInterconnectionUnitType) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_networkInterconnectionUnitType = new OCTETSTRING_template(ANY_VALUE);
+else single_value.field_networkInterconnectionUnitType = new OCTETSTRING_template;
+single_value.union_selection = RequestedParametric::ALT_networkInterconnectionUnitType;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_networkInterconnectionUnitType;
+}
+
+const OCTETSTRING_template& RequestedParametric_template::networkInterconnectionUnitType() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field networkInterconnectionUnitType in a non-specific template of union type @IsobusNMMessageTypes.RequestedParametric.");
+if (single_value.union_selection != RequestedParametric::ALT_networkInterconnectionUnitType) TTCN_error("Accessing non-selected field networkInterconnectionUnitType in a template of union type @IsobusNMMessageTypes.RequestedParametric.");
+return *single_value.field_networkInterconnectionUnitType;
+}
+
+OCTETSTRING_template& RequestedParametric_template::reserved()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != RequestedParametric::ALT_reserved) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_reserved = new OCTETSTRING_template(ANY_VALUE);
+else single_value.field_reserved = new OCTETSTRING_template;
+single_value.union_selection = RequestedParametric::ALT_reserved;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_reserved;
+}
+
+const OCTETSTRING_template& RequestedParametric_template::reserved() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field reserved in a non-specific template of union type @IsobusNMMessageTypes.RequestedParametric.");
+if (single_value.union_selection != RequestedParametric::ALT_reserved) TTCN_error("Accessing non-selected field reserved in a template of union type @IsobusNMMessageTypes.RequestedParametric.");
+return *single_value.field_reserved;
+}
+
+boolean RequestedParametric_template::ischosen(RequestedParametric::union_selection_type checked_selection) const
+{
+if (checked_selection == RequestedParametric::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @IsobusNMMessageTypes.RequestedParametric.");
+switch (template_selection) {
+case SPECIFIC_VALUE:
+if (single_value.union_selection == RequestedParametric::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @IsobusNMMessageTypes.RequestedParametric.");
+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 @IsobusNMMessageTypes.RequestedParametric 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 RequestedParametric_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case RequestedParametric::ALT_buffersize:
+TTCN_Logger::log_event_str("{ buffersize := ");
+single_value.field_buffersize->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case RequestedParametric::ALT_maximumFilterDatabaseSize:
+TTCN_Logger::log_event_str("{ maximumFilterDatabaseSize := ");
+single_value.field_maximumFilterDatabaseSize->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case RequestedParametric::ALT_numberOfFilterDatabaseEntries:
+TTCN_Logger::log_event_str("{ numberOfFilterDatabaseEntries := ");
+single_value.field_numberOfFilterDatabaseEntries->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case RequestedParametric::ALT_maximumNumberOfMessagesReceivedPerSecond:
+TTCN_Logger::log_event_str("{ maximumNumberOfMessagesReceivedPerSecond := ");
+single_value.field_maximumNumberOfMessagesReceivedPerSecond->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case RequestedParametric::ALT_maximumNumberOfMessagesForwardedPerSecond:
+TTCN_Logger::log_event_str("{ maximumNumberOfMessagesForwardedPerSecond := ");
+single_value.field_maximumNumberOfMessagesForwardedPerSecond->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case RequestedParametric::ALT_maximumNumberOfMessagesFilteredPerSecond:
+TTCN_Logger::log_event_str("{ maximumNumberOfMessagesFilteredPerSecond := ");
+single_value.field_maximumNumberOfMessagesFilteredPerSecond->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case RequestedParametric::ALT_maximumTransitDelayTime__ms:
+TTCN_Logger::log_event_str("{ maximumTransitDelayTime_ms := ");
+single_value.field_maximumTransitDelayTime__ms->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case RequestedParametric::ALT_averageTransitDelayTime__ms:
+TTCN_Logger::log_event_str("{ averageTransitDelayTime_ms := ");
+single_value.field_averageTransitDelayTime__ms->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case RequestedParametric::ALT_numberOfMessagesLostDueToBufferOverflow:
+TTCN_Logger::log_event_str("{ numberOfMessagesLostDueToBufferOverflow := ");
+single_value.field_numberOfMessagesLostDueToBufferOverflow->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case RequestedParametric::ALT_numberOfMessagesWithExcessTransitDelayTime:
+TTCN_Logger::log_event_str("{ numberOfMessagesWithExcessTransitDelayTime := ");
+single_value.field_numberOfMessagesWithExcessTransitDelayTime->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case RequestedParametric::ALT_averageNumberOfMessagesReceivedPerSecond:
+TTCN_Logger::log_event_str("{ averageNumberOfMessagesReceivedPerSecond := ");
+single_value.field_averageNumberOfMessagesReceivedPerSecond->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case RequestedParametric::ALT_averageNumberOfMessagesForwardedPerSecond:
+TTCN_Logger::log_event_str("{ averageNumberOfMessagesForwardedPerSecond := ");
+single_value.field_averageNumberOfMessagesForwardedPerSecond->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case RequestedParametric::ALT_averageNumberOfMessagesFilteredPerSecond:
+TTCN_Logger::log_event_str("{ averageNumberOfMessagesFilteredPerSecond := ");
+single_value.field_averageNumberOfMessagesFilteredPerSecond->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case RequestedParametric::ALT_uptimeSinceLastPowerOnReset__s:
+TTCN_Logger::log_event_str("{ uptimeSinceLastPowerOnReset_s := ");
+single_value.field_uptimeSinceLastPowerOnReset__s->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case RequestedParametric::ALT_numberOfPorts:
+TTCN_Logger::log_event_str("{ numberOfPorts := ");
+single_value.field_numberOfPorts->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case RequestedParametric::ALT_networkInterconnectionUnitType:
+TTCN_Logger::log_event_str("{ networkInterconnectionUnitType := ");
+single_value.field_networkInterconnectionUnitType->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case RequestedParametric::ALT_reserved:
+TTCN_Logger::log_event_str("{ reserved := ");
+single_value.field_reserved->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 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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void RequestedParametric_template::log_match(const RequestedParametric& 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()) {
+switch (single_value.union_selection) {
+case RequestedParametric::ALT_buffersize:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".buffersize");
+single_value.field_buffersize->log_match(match_value.buffersize(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ buffersize := ");
+single_value.field_buffersize->log_match(match_value.buffersize(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case RequestedParametric::ALT_maximumFilterDatabaseSize:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".maximumFilterDatabaseSize");
+single_value.field_maximumFilterDatabaseSize->log_match(match_value.maximumFilterDatabaseSize(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ maximumFilterDatabaseSize := ");
+single_value.field_maximumFilterDatabaseSize->log_match(match_value.maximumFilterDatabaseSize(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case RequestedParametric::ALT_numberOfFilterDatabaseEntries:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".numberOfFilterDatabaseEntries");
+single_value.field_numberOfFilterDatabaseEntries->log_match(match_value.numberOfFilterDatabaseEntries(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ numberOfFilterDatabaseEntries := ");
+single_value.field_numberOfFilterDatabaseEntries->log_match(match_value.numberOfFilterDatabaseEntries(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case RequestedParametric::ALT_maximumNumberOfMessagesReceivedPerSecond:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".maximumNumberOfMessagesReceivedPerSecond");
+single_value.field_maximumNumberOfMessagesReceivedPerSecond->log_match(match_value.maximumNumberOfMessagesReceivedPerSecond(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ maximumNumberOfMessagesReceivedPerSecond := ");
+single_value.field_maximumNumberOfMessagesReceivedPerSecond->log_match(match_value.maximumNumberOfMessagesReceivedPerSecond(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case RequestedParametric::ALT_maximumNumberOfMessagesForwardedPerSecond:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".maximumNumberOfMessagesForwardedPerSecond");
+single_value.field_maximumNumberOfMessagesForwardedPerSecond->log_match(match_value.maximumNumberOfMessagesForwardedPerSecond(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ maximumNumberOfMessagesForwardedPerSecond := ");
+single_value.field_maximumNumberOfMessagesForwardedPerSecond->log_match(match_value.maximumNumberOfMessagesForwardedPerSecond(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case RequestedParametric::ALT_maximumNumberOfMessagesFilteredPerSecond:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".maximumNumberOfMessagesFilteredPerSecond");
+single_value.field_maximumNumberOfMessagesFilteredPerSecond->log_match(match_value.maximumNumberOfMessagesFilteredPerSecond(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ maximumNumberOfMessagesFilteredPerSecond := ");
+single_value.field_maximumNumberOfMessagesFilteredPerSecond->log_match(match_value.maximumNumberOfMessagesFilteredPerSecond(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case RequestedParametric::ALT_maximumTransitDelayTime__ms:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".maximumTransitDelayTime_ms");
+single_value.field_maximumTransitDelayTime__ms->log_match(match_value.maximumTransitDelayTime__ms(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ maximumTransitDelayTime_ms := ");
+single_value.field_maximumTransitDelayTime__ms->log_match(match_value.maximumTransitDelayTime__ms(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case RequestedParametric::ALT_averageTransitDelayTime__ms:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".averageTransitDelayTime_ms");
+single_value.field_averageTransitDelayTime__ms->log_match(match_value.averageTransitDelayTime__ms(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ averageTransitDelayTime_ms := ");
+single_value.field_averageTransitDelayTime__ms->log_match(match_value.averageTransitDelayTime__ms(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case RequestedParametric::ALT_numberOfMessagesLostDueToBufferOverflow:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".numberOfMessagesLostDueToBufferOverflow");
+single_value.field_numberOfMessagesLostDueToBufferOverflow->log_match(match_value.numberOfMessagesLostDueToBufferOverflow(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ numberOfMessagesLostDueToBufferOverflow := ");
+single_value.field_numberOfMessagesLostDueToBufferOverflow->log_match(match_value.numberOfMessagesLostDueToBufferOverflow(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case RequestedParametric::ALT_numberOfMessagesWithExcessTransitDelayTime:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".numberOfMessagesWithExcessTransitDelayTime");
+single_value.field_numberOfMessagesWithExcessTransitDelayTime->log_match(match_value.numberOfMessagesWithExcessTransitDelayTime(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ numberOfMessagesWithExcessTransitDelayTime := ");
+single_value.field_numberOfMessagesWithExcessTransitDelayTime->log_match(match_value.numberOfMessagesWithExcessTransitDelayTime(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case RequestedParametric::ALT_averageNumberOfMessagesReceivedPerSecond:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".averageNumberOfMessagesReceivedPerSecond");
+single_value.field_averageNumberOfMessagesReceivedPerSecond->log_match(match_value.averageNumberOfMessagesReceivedPerSecond(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ averageNumberOfMessagesReceivedPerSecond := ");
+single_value.field_averageNumberOfMessagesReceivedPerSecond->log_match(match_value.averageNumberOfMessagesReceivedPerSecond(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case RequestedParametric::ALT_averageNumberOfMessagesForwardedPerSecond:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".averageNumberOfMessagesForwardedPerSecond");
+single_value.field_averageNumberOfMessagesForwardedPerSecond->log_match(match_value.averageNumberOfMessagesForwardedPerSecond(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ averageNumberOfMessagesForwardedPerSecond := ");
+single_value.field_averageNumberOfMessagesForwardedPerSecond->log_match(match_value.averageNumberOfMessagesForwardedPerSecond(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case RequestedParametric::ALT_averageNumberOfMessagesFilteredPerSecond:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".averageNumberOfMessagesFilteredPerSecond");
+single_value.field_averageNumberOfMessagesFilteredPerSecond->log_match(match_value.averageNumberOfMessagesFilteredPerSecond(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ averageNumberOfMessagesFilteredPerSecond := ");
+single_value.field_averageNumberOfMessagesFilteredPerSecond->log_match(match_value.averageNumberOfMessagesFilteredPerSecond(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case RequestedParametric::ALT_uptimeSinceLastPowerOnReset__s:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".uptimeSinceLastPowerOnReset_s");
+single_value.field_uptimeSinceLastPowerOnReset__s->log_match(match_value.uptimeSinceLastPowerOnReset__s(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ uptimeSinceLastPowerOnReset_s := ");
+single_value.field_uptimeSinceLastPowerOnReset__s->log_match(match_value.uptimeSinceLastPowerOnReset__s(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case RequestedParametric::ALT_numberOfPorts:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".numberOfPorts");
+single_value.field_numberOfPorts->log_match(match_value.numberOfPorts(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ numberOfPorts := ");
+single_value.field_numberOfPorts->log_match(match_value.numberOfPorts(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case RequestedParametric::ALT_networkInterconnectionUnitType:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".networkInterconnectionUnitType");
+single_value.field_networkInterconnectionUnitType->log_match(match_value.networkInterconnectionUnitType(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ networkInterconnectionUnitType := ");
+single_value.field_networkInterconnectionUnitType->log_match(match_value.networkInterconnectionUnitType(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case RequestedParametric::ALT_reserved:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".reserved");
+single_value.field_reserved->log_match(match_value.reserved(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ reserved := ");
+single_value.field_reserved->log_match(match_value.reserved(), 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 RequestedParametric_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 RequestedParametric::ALT_buffersize:
+single_value.field_buffersize->encode_text(text_buf);
+break;
+case RequestedParametric::ALT_maximumFilterDatabaseSize:
+single_value.field_maximumFilterDatabaseSize->encode_text(text_buf);
+break;
+case RequestedParametric::ALT_numberOfFilterDatabaseEntries:
+single_value.field_numberOfFilterDatabaseEntries->encode_text(text_buf);
+break;
+case RequestedParametric::ALT_maximumNumberOfMessagesReceivedPerSecond:
+single_value.field_maximumNumberOfMessagesReceivedPerSecond->encode_text(text_buf);
+break;
+case RequestedParametric::ALT_maximumNumberOfMessagesForwardedPerSecond:
+single_value.field_maximumNumberOfMessagesForwardedPerSecond->encode_text(text_buf);
+break;
+case RequestedParametric::ALT_maximumNumberOfMessagesFilteredPerSecond:
+single_value.field_maximumNumberOfMessagesFilteredPerSecond->encode_text(text_buf);
+break;
+case RequestedParametric::ALT_maximumTransitDelayTime__ms:
+single_value.field_maximumTransitDelayTime__ms->encode_text(text_buf);
+break;
+case RequestedParametric::ALT_averageTransitDelayTime__ms:
+single_value.field_averageTransitDelayTime__ms->encode_text(text_buf);
+break;
+case RequestedParametric::ALT_numberOfMessagesLostDueToBufferOverflow:
+single_value.field_numberOfMessagesLostDueToBufferOverflow->encode_text(text_buf);
+break;
+case RequestedParametric::ALT_numberOfMessagesWithExcessTransitDelayTime:
+single_value.field_numberOfMessagesWithExcessTransitDelayTime->encode_text(text_buf);
+break;
+case RequestedParametric::ALT_averageNumberOfMessagesReceivedPerSecond:
+single_value.field_averageNumberOfMessagesReceivedPerSecond->encode_text(text_buf);
+break;
+case RequestedParametric::ALT_averageNumberOfMessagesForwardedPerSecond:
+single_value.field_averageNumberOfMessagesForwardedPerSecond->encode_text(text_buf);
+break;
+case RequestedParametric::ALT_averageNumberOfMessagesFilteredPerSecond:
+single_value.field_averageNumberOfMessagesFilteredPerSecond->encode_text(text_buf);
+break;
+case RequestedParametric::ALT_uptimeSinceLastPowerOnReset__s:
+single_value.field_uptimeSinceLastPowerOnReset__s->encode_text(text_buf);
+break;
+case RequestedParametric::ALT_numberOfPorts:
+single_value.field_numberOfPorts->encode_text(text_buf);
+break;
+case RequestedParametric::ALT_networkInterconnectionUnitType:
+single_value.field_networkInterconnectionUnitType->encode_text(text_buf);
+break;
+case RequestedParametric::ALT_reserved:
+single_value.field_reserved->encode_text(text_buf);
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @IsobusNMMessageTypes.RequestedParametric.");
+}
+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 @IsobusNMMessageTypes.RequestedParametric.");
+}
+}
+
+void RequestedParametric_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+{
+single_value.union_selection = RequestedParametric::UNBOUND_VALUE;
+RequestedParametric::union_selection_type new_selection = (RequestedParametric::union_selection_type)text_buf.pull_int().get_val();
+switch (new_selection) {
+case RequestedParametric::ALT_buffersize:
+single_value.field_buffersize = new OCTETSTRING_template;
+single_value.field_buffersize->decode_text(text_buf);
+break;
+case RequestedParametric::ALT_maximumFilterDatabaseSize:
+single_value.field_maximumFilterDatabaseSize = new OCTETSTRING_template;
+single_value.field_maximumFilterDatabaseSize->decode_text(text_buf);
+break;
+case RequestedParametric::ALT_numberOfFilterDatabaseEntries:
+single_value.field_numberOfFilterDatabaseEntries = new OCTETSTRING_template;
+single_value.field_numberOfFilterDatabaseEntries->decode_text(text_buf);
+break;
+case RequestedParametric::ALT_maximumNumberOfMessagesReceivedPerSecond:
+single_value.field_maximumNumberOfMessagesReceivedPerSecond = new OCTETSTRING_template;
+single_value.field_maximumNumberOfMessagesReceivedPerSecond->decode_text(text_buf);
+break;
+case RequestedParametric::ALT_maximumNumberOfMessagesForwardedPerSecond:
+single_value.field_maximumNumberOfMessagesForwardedPerSecond = new OCTETSTRING_template;
+single_value.field_maximumNumberOfMessagesForwardedPerSecond->decode_text(text_buf);
+break;
+case RequestedParametric::ALT_maximumNumberOfMessagesFilteredPerSecond:
+single_value.field_maximumNumberOfMessagesFilteredPerSecond = new OCTETSTRING_template;
+single_value.field_maximumNumberOfMessagesFilteredPerSecond->decode_text(text_buf);
+break;
+case RequestedParametric::ALT_maximumTransitDelayTime__ms:
+single_value.field_maximumTransitDelayTime__ms = new OCTETSTRING_template;
+single_value.field_maximumTransitDelayTime__ms->decode_text(text_buf);
+break;
+case RequestedParametric::ALT_averageTransitDelayTime__ms:
+single_value.field_averageTransitDelayTime__ms = new OCTETSTRING_template;
+single_value.field_averageTransitDelayTime__ms->decode_text(text_buf);
+break;
+case RequestedParametric::ALT_numberOfMessagesLostDueToBufferOverflow:
+single_value.field_numberOfMessagesLostDueToBufferOverflow = new OCTETSTRING_template;
+single_value.field_numberOfMessagesLostDueToBufferOverflow->decode_text(text_buf);
+break;
+case RequestedParametric::ALT_numberOfMessagesWithExcessTransitDelayTime:
+single_value.field_numberOfMessagesWithExcessTransitDelayTime = new OCTETSTRING_template;
+single_value.field_numberOfMessagesWithExcessTransitDelayTime->decode_text(text_buf);
+break;
+case RequestedParametric::ALT_averageNumberOfMessagesReceivedPerSecond:
+single_value.field_averageNumberOfMessagesReceivedPerSecond = new OCTETSTRING_template;
+single_value.field_averageNumberOfMessagesReceivedPerSecond->decode_text(text_buf);
+break;
+case RequestedParametric::ALT_averageNumberOfMessagesForwardedPerSecond:
+single_value.field_averageNumberOfMessagesForwardedPerSecond = new OCTETSTRING_template;
+single_value.field_averageNumberOfMessagesForwardedPerSecond->decode_text(text_buf);
+break;
+case RequestedParametric::ALT_averageNumberOfMessagesFilteredPerSecond:
+single_value.field_averageNumberOfMessagesFilteredPerSecond = new OCTETSTRING_template;
+single_value.field_averageNumberOfMessagesFilteredPerSecond->decode_text(text_buf);
+break;
+case RequestedParametric::ALT_uptimeSinceLastPowerOnReset__s:
+single_value.field_uptimeSinceLastPowerOnReset__s = new OCTETSTRING_template;
+single_value.field_uptimeSinceLastPowerOnReset__s->decode_text(text_buf);
+break;
+case RequestedParametric::ALT_numberOfPorts:
+single_value.field_numberOfPorts = new OCTETSTRING_template;
+single_value.field_numberOfPorts->decode_text(text_buf);
+break;
+case RequestedParametric::ALT_networkInterconnectionUnitType:
+single_value.field_networkInterconnectionUnitType = new OCTETSTRING_template;
+single_value.field_networkInterconnectionUnitType->decode_text(text_buf);
+break;
+case RequestedParametric::ALT_reserved:
+single_value.field_reserved = new OCTETSTRING_template;
+single_value.field_reserved->decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @IsobusNMMessageTypes.RequestedParametric.");
+}
+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 RequestedParametric_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 @IsobusNMMessageTypes.RequestedParametric.");
+}
+}
+
+boolean RequestedParametric_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean RequestedParametric_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 RequestedParametric_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 `@IsobusNMMessageTypes.RequestedParametric'");
+    }
+    if (strcmp("buffersize", param_field) == 0) {
+      buffersize().set_param(param);
+      return;
+    } else if (strcmp("maximumFilterDatabaseSize", param_field) == 0) {
+      maximumFilterDatabaseSize().set_param(param);
+      return;
+    } else if (strcmp("numberOfFilterDatabaseEntries", param_field) == 0) {
+      numberOfFilterDatabaseEntries().set_param(param);
+      return;
+    } else if (strcmp("maximumNumberOfMessagesReceivedPerSecond", param_field) == 0) {
+      maximumNumberOfMessagesReceivedPerSecond().set_param(param);
+      return;
+    } else if (strcmp("maximumNumberOfMessagesForwardedPerSecond", param_field) == 0) {
+      maximumNumberOfMessagesForwardedPerSecond().set_param(param);
+      return;
+    } else if (strcmp("maximumNumberOfMessagesFilteredPerSecond", param_field) == 0) {
+      maximumNumberOfMessagesFilteredPerSecond().set_param(param);
+      return;
+    } else if (strcmp("maximumTransitDelayTime_ms", param_field) == 0) {
+      maximumTransitDelayTime__ms().set_param(param);
+      return;
+    } else if (strcmp("averageTransitDelayTime_ms", param_field) == 0) {
+      averageTransitDelayTime__ms().set_param(param);
+      return;
+    } else if (strcmp("numberOfMessagesLostDueToBufferOverflow", param_field) == 0) {
+      numberOfMessagesLostDueToBufferOverflow().set_param(param);
+      return;
+    } else if (strcmp("numberOfMessagesWithExcessTransitDelayTime", param_field) == 0) {
+      numberOfMessagesWithExcessTransitDelayTime().set_param(param);
+      return;
+    } else if (strcmp("averageNumberOfMessagesReceivedPerSecond", param_field) == 0) {
+      averageNumberOfMessagesReceivedPerSecond().set_param(param);
+      return;
+    } else if (strcmp("averageNumberOfMessagesForwardedPerSecond", param_field) == 0) {
+      averageNumberOfMessagesForwardedPerSecond().set_param(param);
+      return;
+    } else if (strcmp("averageNumberOfMessagesFilteredPerSecond", param_field) == 0) {
+      averageNumberOfMessagesFilteredPerSecond().set_param(param);
+      return;
+    } else if (strcmp("uptimeSinceLastPowerOnReset_s", param_field) == 0) {
+      uptimeSinceLastPowerOnReset__s().set_param(param);
+      return;
+    } else if (strcmp("numberOfPorts", param_field) == 0) {
+      numberOfPorts().set_param(param);
+      return;
+    } else if (strcmp("networkInterconnectionUnitType", param_field) == 0) {
+      networkInterconnectionUnitType().set_param(param);
+      return;
+    } else if (strcmp("reserved", param_field) == 0) {
+      reserved().set_param(param);
+      return;
+    } else param.error("Field `%s' not found in union template type `@IsobusNMMessageTypes.RequestedParametric'", 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: {
+    RequestedParametric_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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", "@IsobusNMMessageTypes.RequestedParametric");
+    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, "buffersize")) {
+      buffersize().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "maximumFilterDatabaseSize")) {
+      maximumFilterDatabaseSize().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "numberOfFilterDatabaseEntries")) {
+      numberOfFilterDatabaseEntries().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "maximumNumberOfMessagesReceivedPerSecond")) {
+      maximumNumberOfMessagesReceivedPerSecond().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "maximumNumberOfMessagesForwardedPerSecond")) {
+      maximumNumberOfMessagesForwardedPerSecond().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "maximumNumberOfMessagesFilteredPerSecond")) {
+      maximumNumberOfMessagesFilteredPerSecond().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "maximumTransitDelayTime_ms")) {
+      maximumTransitDelayTime__ms().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "averageTransitDelayTime_ms")) {
+      averageTransitDelayTime__ms().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "numberOfMessagesLostDueToBufferOverflow")) {
+      numberOfMessagesLostDueToBufferOverflow().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "numberOfMessagesWithExcessTransitDelayTime")) {
+      numberOfMessagesWithExcessTransitDelayTime().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "averageNumberOfMessagesReceivedPerSecond")) {
+      averageNumberOfMessagesReceivedPerSecond().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "averageNumberOfMessagesForwardedPerSecond")) {
+      averageNumberOfMessagesForwardedPerSecond().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "averageNumberOfMessagesFilteredPerSecond")) {
+      averageNumberOfMessagesFilteredPerSecond().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "uptimeSinceLastPowerOnReset_s")) {
+      uptimeSinceLastPowerOnReset__s().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "numberOfPorts")) {
+      numberOfPorts().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "networkInterconnectionUnitType")) {
+      networkInterconnectionUnitType().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "reserved")) {
+      reserved().set_param(*mp_last);
+      break;
+    }
+    mp_last->error("Field %s does not exist in type @IsobusNMMessageTypes.RequestedParametric.", last_name);
+  } break;
+  default:
+    param.type_error("union template", "@IsobusNMMessageTypes.RequestedParametric");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void RequestedParametric_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 RequestedParametric::ALT_buffersize:
+single_value.field_buffersize->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.RequestedParametric");
+return;
+case RequestedParametric::ALT_maximumFilterDatabaseSize:
+single_value.field_maximumFilterDatabaseSize->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.RequestedParametric");
+return;
+case RequestedParametric::ALT_numberOfFilterDatabaseEntries:
+single_value.field_numberOfFilterDatabaseEntries->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.RequestedParametric");
+return;
+case RequestedParametric::ALT_maximumNumberOfMessagesReceivedPerSecond:
+single_value.field_maximumNumberOfMessagesReceivedPerSecond->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.RequestedParametric");
+return;
+case RequestedParametric::ALT_maximumNumberOfMessagesForwardedPerSecond:
+single_value.field_maximumNumberOfMessagesForwardedPerSecond->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.RequestedParametric");
+return;
+case RequestedParametric::ALT_maximumNumberOfMessagesFilteredPerSecond:
+single_value.field_maximumNumberOfMessagesFilteredPerSecond->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.RequestedParametric");
+return;
+case RequestedParametric::ALT_maximumTransitDelayTime__ms:
+single_value.field_maximumTransitDelayTime__ms->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.RequestedParametric");
+return;
+case RequestedParametric::ALT_averageTransitDelayTime__ms:
+single_value.field_averageTransitDelayTime__ms->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.RequestedParametric");
+return;
+case RequestedParametric::ALT_numberOfMessagesLostDueToBufferOverflow:
+single_value.field_numberOfMessagesLostDueToBufferOverflow->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.RequestedParametric");
+return;
+case RequestedParametric::ALT_numberOfMessagesWithExcessTransitDelayTime:
+single_value.field_numberOfMessagesWithExcessTransitDelayTime->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.RequestedParametric");
+return;
+case RequestedParametric::ALT_averageNumberOfMessagesReceivedPerSecond:
+single_value.field_averageNumberOfMessagesReceivedPerSecond->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.RequestedParametric");
+return;
+case RequestedParametric::ALT_averageNumberOfMessagesForwardedPerSecond:
+single_value.field_averageNumberOfMessagesForwardedPerSecond->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.RequestedParametric");
+return;
+case RequestedParametric::ALT_averageNumberOfMessagesFilteredPerSecond:
+single_value.field_averageNumberOfMessagesFilteredPerSecond->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.RequestedParametric");
+return;
+case RequestedParametric::ALT_uptimeSinceLastPowerOnReset__s:
+single_value.field_uptimeSinceLastPowerOnReset__s->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.RequestedParametric");
+return;
+case RequestedParametric::ALT_numberOfPorts:
+single_value.field_numberOfPorts->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.RequestedParametric");
+return;
+case RequestedParametric::ALT_networkInterconnectionUnitType:
+single_value.field_networkInterconnectionUnitType->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.RequestedParametric");
+return;
+case RequestedParametric::ALT_reserved:
+single_value.field_reserved->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.RequestedParametric");
+return;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @IsobusNMMessageTypes.RequestedParametric.");
+}
+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 : "@IsobusNMMessageTypes.RequestedParametric");
+}
+
+N__GP__Response::N__GP__Response()
+{
+}
+
+N__GP__Response::N__GP__Response(const INTEGER& par_msgFunction,
+    const N__GP__Response_requestedParametrics& par_requestedParametrics)
+  :   field_msgFunction(par_msgFunction),
+  field_requestedParametrics(par_requestedParametrics)
+{
+}
+
+N__GP__Response::N__GP__Response(const N__GP__Response& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_GP_Response.");
+if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction();
+else field_msgFunction.clean_up();
+if (other_value.requestedParametrics().is_bound()) field_requestedParametrics = other_value.requestedParametrics();
+else field_requestedParametrics.clean_up();
+}
+
+void N__GP__Response::clean_up()
+{
+field_msgFunction.clean_up();
+field_requestedParametrics.clean_up();
+}
+
+const TTCN_Typedescriptor_t* N__GP__Response::get_descriptor() const { return &N__GP__Response_descr_; }
+N__GP__Response& N__GP__Response::operator=(const N__GP__Response& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.N_GP_Response.");
+  if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction();
+  else field_msgFunction.clean_up();
+  if (other_value.requestedParametrics().is_bound()) field_requestedParametrics = other_value.requestedParametrics();
+  else field_requestedParametrics.clean_up();
+}
+return *this;
+}
+
+boolean N__GP__Response::operator==(const N__GP__Response& other_value) const
+{
+return field_msgFunction==other_value.field_msgFunction
+  && field_requestedParametrics==other_value.field_requestedParametrics;
+}
+
+boolean N__GP__Response::is_bound() const
+{
+return (field_msgFunction.is_bound())
+  || (field_requestedParametrics.is_bound());
+}
+boolean N__GP__Response::is_value() const
+{
+return field_msgFunction.is_value()
+  && field_requestedParametrics.is_value();
+}
+void N__GP__Response::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ msgFunction := ");
+field_msgFunction.log();
+TTCN_Logger::log_event_str(", requestedParametrics := ");
+field_requestedParametrics.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void N__GP__Response::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 @IsobusNMMessageTypes.N_GP_Response 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) msgFunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) requestedParametrics().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(), "msgFunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgFunction().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(), "requestedParametrics")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          requestedParametrics().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 @IsobusNMMessageTypes.N_GP_Response: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusNMMessageTypes.N_GP_Response");
+  }
+}
+
+void N__GP__Response::set_implicit_omit()
+{
+if (msgFunction().is_bound()) msgFunction().set_implicit_omit();
+if (requestedParametrics().is_bound()) requestedParametrics().set_implicit_omit();
+}
+
+void N__GP__Response::encode_text(Text_Buf& text_buf) const
+{
+field_msgFunction.encode_text(text_buf);
+field_requestedParametrics.encode_text(text_buf);
+}
+
+void N__GP__Response::decode_text(Text_Buf& text_buf)
+{
+field_msgFunction.decode_text(text_buf);
+field_requestedParametrics.decode_text(text_buf);
+}
+
+void N__GP__Response::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void N__GP__Response::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int N__GP__Response::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, Function_descr_.raw->forceomit);
+  decoded_field_length = field_msgFunction.RAW_decode(Function_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, N__GP__Response_requestedParametrics_descr_.raw->forceomit);
+  decoded_field_length = field_requestedParametrics.RAW_decode(N__GP__Response_requestedParametrics_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 N__GP__Response::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, Function_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, N__GP__Response_requestedParametrics_descr_.raw);
+  encoded_length += field_msgFunction.RAW_encode(Function_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_requestedParametrics.RAW_encode(N__GP__Response_requestedParametrics_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct N__GP__Response_template::single_value_struct {
+INTEGER_template field_msgFunction;
+N__GP__Response_requestedParametrics_template field_requestedParametrics;
+};
+
+void N__GP__Response_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_msgFunction = ANY_VALUE;
+single_value->field_requestedParametrics = ANY_VALUE;
+}
+}
+}
+
+void N__GP__Response_template::copy_value(const N__GP__Response& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.msgFunction().is_bound()) {
+  single_value->field_msgFunction = other_value.msgFunction();
+} else {
+  single_value->field_msgFunction.clean_up();
+}
+if (other_value.requestedParametrics().is_bound()) {
+  single_value->field_requestedParametrics = other_value.requestedParametrics();
+} else {
+  single_value->field_requestedParametrics.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void N__GP__Response_template::copy_template(const N__GP__Response_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.msgFunction().get_selection()) {
+single_value->field_msgFunction = other_value.msgFunction();
+} else {
+single_value->field_msgFunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.requestedParametrics().get_selection()) {
+single_value->field_requestedParametrics = other_value.requestedParametrics();
+} else {
+single_value->field_requestedParametrics.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new N__GP__Response_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_GP_Response.");
+break;
+}
+set_selection(other_value);
+}
+
+N__GP__Response_template::N__GP__Response_template()
+{
+}
+
+N__GP__Response_template::N__GP__Response_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+N__GP__Response_template::N__GP__Response_template(const N__GP__Response& other_value)
+{
+copy_value(other_value);
+}
+
+N__GP__Response_template::N__GP__Response_template(const OPTIONAL<N__GP__Response>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__GP__Response&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_GP_Response from an unbound optional field.");
+}
+}
+
+N__GP__Response_template::N__GP__Response_template(const N__GP__Response_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+N__GP__Response_template::~N__GP__Response_template()
+{
+clean_up();
+}
+
+N__GP__Response_template& N__GP__Response_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+N__GP__Response_template& N__GP__Response_template::operator=(const N__GP__Response& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+N__GP__Response_template& N__GP__Response_template::operator=(const OPTIONAL<N__GP__Response>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__GP__Response&)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 @IsobusNMMessageTypes.N_GP_Response.");
+}
+return *this;
+}
+
+N__GP__Response_template& N__GP__Response_template::operator=(const N__GP__Response_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean N__GP__Response_template::match(const N__GP__Response& 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.msgFunction().is_bound()) return FALSE;
+if(!single_value->field_msgFunction.match(other_value.msgFunction(), legacy))return FALSE;
+if(!other_value.requestedParametrics().is_bound()) return FALSE;
+if(!single_value->field_requestedParametrics.match(other_value.requestedParametrics(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_GP_Response.");
+}
+return FALSE;
+}
+
+boolean N__GP__Response_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_msgFunction.is_bound()
+
+ ||single_value->field_requestedParametrics.is_bound()
+;
+}
+
+boolean N__GP__Response_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_msgFunction.is_value()
+ &&single_value->field_requestedParametrics.is_value();
+}
+
+void N__GP__Response_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+N__GP__Response N__GP__Response_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 @IsobusNMMessageTypes.N_GP_Response.");
+N__GP__Response ret_val;
+if (single_value->field_msgFunction.is_bound()) {
+ret_val.msgFunction() = single_value->field_msgFunction.valueof();
+}
+if (single_value->field_requestedParametrics.is_bound()) {
+ret_val.requestedParametrics() = single_value->field_requestedParametrics.valueof();
+}
+return ret_val;
+}
+
+void N__GP__Response_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.N_GP_Response.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new N__GP__Response_template[list_length];
+}
+
+N__GP__Response_template& N__GP__Response_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_GP_Response.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.N_GP_Response.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& N__GP__Response_template::msgFunction()
+{
+set_specific();
+return single_value->field_msgFunction;
+}
+
+const INTEGER_template& N__GP__Response_template::msgFunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field msgFunction of a non-specific template of type @IsobusNMMessageTypes.N_GP_Response.");
+return single_value->field_msgFunction;
+}
+
+N__GP__Response_requestedParametrics_template& N__GP__Response_template::requestedParametrics()
+{
+set_specific();
+return single_value->field_requestedParametrics;
+}
+
+const N__GP__Response_requestedParametrics_template& N__GP__Response_template::requestedParametrics() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field requestedParametrics of a non-specific template of type @IsobusNMMessageTypes.N_GP_Response.");
+return single_value->field_requestedParametrics;
+}
+
+int N__GP__Response_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_GP_Response 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 @IsobusNMMessageTypes.N_GP_Response 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 @IsobusNMMessageTypes.N_GP_Response containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_GP_Response containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_GP_Response containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_GP_Response containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_GP_Response.");
+  }
+  return 0;
+}
+
+void N__GP__Response_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ msgFunction := ");
+single_value->field_msgFunction.log();
+TTCN_Logger::log_event_str(", requestedParametrics := ");
+single_value->field_requestedParametrics.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void N__GP__Response_template::log_match(const N__GP__Response& 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_msgFunction.match(match_value.msgFunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".msgFunction");
+single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_requestedParametrics.match(match_value.requestedParametrics(), legacy)){
+TTCN_Logger::log_logmatch_info(".requestedParametrics");
+single_value->field_requestedParametrics.log_match(match_value.requestedParametrics(), 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("{ msgFunction := ");
+single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy);
+TTCN_Logger::log_event_str(", requestedParametrics := ");
+single_value->field_requestedParametrics.log_match(match_value.requestedParametrics(), 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 N__GP__Response_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_msgFunction.encode_text(text_buf);
+single_value->field_requestedParametrics.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 @IsobusNMMessageTypes.N_GP_Response.");
+}
+}
+
+void N__GP__Response_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_msgFunction.decode_text(text_buf);
+single_value->field_requestedParametrics.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 N__GP__Response_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 @IsobusNMMessageTypes.N_GP_Response.");
+}
+}
+
+void N__GP__Response_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: {
+    N__GP__Response_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusNMMessageTypes.N_GP_Response 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) msgFunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) requestedParametrics().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(), "msgFunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgFunction().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(), "requestedParametrics")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          requestedParametrics().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 @IsobusNMMessageTypes.N_GP_Response: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusNMMessageTypes.N_GP_Response");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void N__GP__Response_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_msgFunction.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_GP_Response");
+single_value->field_requestedParametrics.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_GP_Response");
+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 : "@IsobusNMMessageTypes.N_GP_Response");
+}
+
+boolean N__GP__Response_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean N__GP__Response_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+N__GP__Reset__Statistics::N__GP__Reset__Statistics()
+{
+}
+
+N__GP__Reset__Statistics::N__GP__Reset__Statistics(const INTEGER& par_msgFunction,
+    const PortNibble& par_portPair,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_msgFunction(par_msgFunction),
+  field_portPair(par_portPair),
+  field_reserved3(par_reserved3),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+N__GP__Reset__Statistics::N__GP__Reset__Statistics(const N__GP__Reset__Statistics& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_GP_Reset_Statistics.");
+if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction();
+else field_msgFunction.clean_up();
+if (other_value.portPair().is_bound()) field_portPair = other_value.portPair();
+else field_portPair.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void N__GP__Reset__Statistics::clean_up()
+{
+field_msgFunction.clean_up();
+field_portPair.clean_up();
+field_reserved3.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* N__GP__Reset__Statistics::get_descriptor() const { return &N__GP__Reset__Statistics_descr_; }
+N__GP__Reset__Statistics& N__GP__Reset__Statistics::operator=(const N__GP__Reset__Statistics& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.N_GP_Reset_Statistics.");
+  if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction();
+  else field_msgFunction.clean_up();
+  if (other_value.portPair().is_bound()) field_portPair = other_value.portPair();
+  else field_portPair.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean N__GP__Reset__Statistics::operator==(const N__GP__Reset__Statistics& other_value) const
+{
+return field_msgFunction==other_value.field_msgFunction
+  && field_portPair==other_value.field_portPair
+  && field_reserved3==other_value.field_reserved3
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean N__GP__Reset__Statistics::is_bound() const
+{
+return (field_msgFunction.is_bound())
+  || (field_portPair.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean N__GP__Reset__Statistics::is_value() const
+{
+return field_msgFunction.is_value()
+  && field_portPair.is_value()
+  && field_reserved3.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void N__GP__Reset__Statistics::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ msgFunction := ");
+field_msgFunction.log();
+TTCN_Logger::log_event_str(", portPair := ");
+field_portPair.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void N__GP__Reset__Statistics::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusNMMessageTypes.N_GP_Reset_Statistics has 8 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) msgFunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "msgFunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgFunction().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(), "portPair")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          portPair().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusNMMessageTypes.N_GP_Reset_Statistics: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusNMMessageTypes.N_GP_Reset_Statistics");
+  }
+}
+
+void N__GP__Reset__Statistics::set_implicit_omit()
+{
+if (msgFunction().is_bound()) msgFunction().set_implicit_omit();
+if (portPair().is_bound()) portPair().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void N__GP__Reset__Statistics::encode_text(Text_Buf& text_buf) const
+{
+field_msgFunction.encode_text(text_buf);
+field_portPair.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void N__GP__Reset__Statistics::decode_text(Text_Buf& text_buf)
+{
+field_msgFunction.decode_text(text_buf);
+field_portPair.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void N__GP__Reset__Statistics::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void N__GP__Reset__Statistics::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int N__GP__Reset__Statistics::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, Function_descr_.raw->forceomit);
+  decoded_field_length = field_msgFunction.RAW_decode(Function_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, PortNibble_descr_.raw->forceomit);
+  decoded_field_length = field_portPair.RAW_decode(PortNibble_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, N__GP__Reset__Statistics_reserved3_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(N__GP__Reset__Statistics_reserved3_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, N__GP__Reset__Statistics_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(N__GP__Reset__Statistics_reserved4_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, N__GP__Reset__Statistics_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(N__GP__Reset__Statistics_reserved5_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, N__GP__Reset__Statistics_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(N__GP__Reset__Statistics_reserved6_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, N__GP__Reset__Statistics_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(N__GP__Reset__Statistics_reserved7_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, N__GP__Reset__Statistics_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(N__GP__Reset__Statistics_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int N__GP__Reset__Statistics::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, Function_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PortNibble_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, N__GP__Reset__Statistics_reserved3_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, N__GP__Reset__Statistics_reserved4_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, N__GP__Reset__Statistics_reserved5_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, N__GP__Reset__Statistics_reserved6_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, N__GP__Reset__Statistics_reserved7_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, N__GP__Reset__Statistics_reserved8_descr_.raw);
+  encoded_length += field_msgFunction.RAW_encode(Function_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_portPair.RAW_encode(PortNibble_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved3.RAW_encode(N__GP__Reset__Statistics_reserved3_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved4.RAW_encode(N__GP__Reset__Statistics_reserved4_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved5.RAW_encode(N__GP__Reset__Statistics_reserved5_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved6.RAW_encode(N__GP__Reset__Statistics_reserved6_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved7.RAW_encode(N__GP__Reset__Statistics_reserved7_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved8.RAW_encode(N__GP__Reset__Statistics_reserved8_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct N__GP__Reset__Statistics_template::single_value_struct {
+INTEGER_template field_msgFunction;
+PortNibble_template field_portPair;
+OCTETSTRING_template field_reserved3;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void N__GP__Reset__Statistics_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_msgFunction = ANY_VALUE;
+single_value->field_portPair = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void N__GP__Reset__Statistics_template::copy_value(const N__GP__Reset__Statistics& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.msgFunction().is_bound()) {
+  single_value->field_msgFunction = other_value.msgFunction();
+} else {
+  single_value->field_msgFunction.clean_up();
+}
+if (other_value.portPair().is_bound()) {
+  single_value->field_portPair = other_value.portPair();
+} else {
+  single_value->field_portPair.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void N__GP__Reset__Statistics_template::copy_template(const N__GP__Reset__Statistics_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.msgFunction().get_selection()) {
+single_value->field_msgFunction = other_value.msgFunction();
+} else {
+single_value->field_msgFunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.portPair().get_selection()) {
+single_value->field_portPair = other_value.portPair();
+} else {
+single_value->field_portPair.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new N__GP__Reset__Statistics_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_GP_Reset_Statistics.");
+break;
+}
+set_selection(other_value);
+}
+
+N__GP__Reset__Statistics_template::N__GP__Reset__Statistics_template()
+{
+}
+
+N__GP__Reset__Statistics_template::N__GP__Reset__Statistics_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+N__GP__Reset__Statistics_template::N__GP__Reset__Statistics_template(const N__GP__Reset__Statistics& other_value)
+{
+copy_value(other_value);
+}
+
+N__GP__Reset__Statistics_template::N__GP__Reset__Statistics_template(const OPTIONAL<N__GP__Reset__Statistics>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__GP__Reset__Statistics&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_GP_Reset_Statistics from an unbound optional field.");
+}
+}
+
+N__GP__Reset__Statistics_template::N__GP__Reset__Statistics_template(const N__GP__Reset__Statistics_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+N__GP__Reset__Statistics_template::~N__GP__Reset__Statistics_template()
+{
+clean_up();
+}
+
+N__GP__Reset__Statistics_template& N__GP__Reset__Statistics_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+N__GP__Reset__Statistics_template& N__GP__Reset__Statistics_template::operator=(const N__GP__Reset__Statistics& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+N__GP__Reset__Statistics_template& N__GP__Reset__Statistics_template::operator=(const OPTIONAL<N__GP__Reset__Statistics>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__GP__Reset__Statistics&)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 @IsobusNMMessageTypes.N_GP_Reset_Statistics.");
+}
+return *this;
+}
+
+N__GP__Reset__Statistics_template& N__GP__Reset__Statistics_template::operator=(const N__GP__Reset__Statistics_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean N__GP__Reset__Statistics_template::match(const N__GP__Reset__Statistics& 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.msgFunction().is_bound()) return FALSE;
+if(!single_value->field_msgFunction.match(other_value.msgFunction(), legacy))return FALSE;
+if(!other_value.portPair().is_bound()) return FALSE;
+if(!single_value->field_portPair.match(other_value.portPair(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_GP_Reset_Statistics.");
+}
+return FALSE;
+}
+
+boolean N__GP__Reset__Statistics_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_msgFunction.is_bound()
+
+ ||single_value->field_portPair.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean N__GP__Reset__Statistics_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_msgFunction.is_value()
+ &&single_value->field_portPair.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void N__GP__Reset__Statistics_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+N__GP__Reset__Statistics N__GP__Reset__Statistics_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 @IsobusNMMessageTypes.N_GP_Reset_Statistics.");
+N__GP__Reset__Statistics ret_val;
+if (single_value->field_msgFunction.is_bound()) {
+ret_val.msgFunction() = single_value->field_msgFunction.valueof();
+}
+if (single_value->field_portPair.is_bound()) {
+ret_val.portPair() = single_value->field_portPair.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void N__GP__Reset__Statistics_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.N_GP_Reset_Statistics.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new N__GP__Reset__Statistics_template[list_length];
+}
+
+N__GP__Reset__Statistics_template& N__GP__Reset__Statistics_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_GP_Reset_Statistics.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.N_GP_Reset_Statistics.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& N__GP__Reset__Statistics_template::msgFunction()
+{
+set_specific();
+return single_value->field_msgFunction;
+}
+
+const INTEGER_template& N__GP__Reset__Statistics_template::msgFunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field msgFunction of a non-specific template of type @IsobusNMMessageTypes.N_GP_Reset_Statistics.");
+return single_value->field_msgFunction;
+}
+
+PortNibble_template& N__GP__Reset__Statistics_template::portPair()
+{
+set_specific();
+return single_value->field_portPair;
+}
+
+const PortNibble_template& N__GP__Reset__Statistics_template::portPair() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field portPair of a non-specific template of type @IsobusNMMessageTypes.N_GP_Reset_Statistics.");
+return single_value->field_portPair;
+}
+
+OCTETSTRING_template& N__GP__Reset__Statistics_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const OCTETSTRING_template& N__GP__Reset__Statistics_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusNMMessageTypes.N_GP_Reset_Statistics.");
+return single_value->field_reserved3;
+}
+
+OCTETSTRING_template& N__GP__Reset__Statistics_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& N__GP__Reset__Statistics_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusNMMessageTypes.N_GP_Reset_Statistics.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& N__GP__Reset__Statistics_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& N__GP__Reset__Statistics_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusNMMessageTypes.N_GP_Reset_Statistics.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& N__GP__Reset__Statistics_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& N__GP__Reset__Statistics_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusNMMessageTypes.N_GP_Reset_Statistics.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& N__GP__Reset__Statistics_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& N__GP__Reset__Statistics_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusNMMessageTypes.N_GP_Reset_Statistics.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& N__GP__Reset__Statistics_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& N__GP__Reset__Statistics_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusNMMessageTypes.N_GP_Reset_Statistics.");
+return single_value->field_reserved8;
+}
+
+int N__GP__Reset__Statistics_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_GP_Reset_Statistics which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_GP_Reset_Statistics 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 @IsobusNMMessageTypes.N_GP_Reset_Statistics containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_GP_Reset_Statistics containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_GP_Reset_Statistics containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_GP_Reset_Statistics containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_GP_Reset_Statistics.");
+  }
+  return 0;
+}
+
+void N__GP__Reset__Statistics_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ msgFunction := ");
+single_value->field_msgFunction.log();
+TTCN_Logger::log_event_str(", portPair := ");
+single_value->field_portPair.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void N__GP__Reset__Statistics_template::log_match(const N__GP__Reset__Statistics& 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_msgFunction.match(match_value.msgFunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".msgFunction");
+single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_portPair.match(match_value.portPair(), legacy)){
+TTCN_Logger::log_logmatch_info(".portPair");
+single_value->field_portPair.log_match(match_value.portPair(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ msgFunction := ");
+single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy);
+TTCN_Logger::log_event_str(", portPair := ");
+single_value->field_portPair.log_match(match_value.portPair(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 N__GP__Reset__Statistics_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_msgFunction.encode_text(text_buf);
+single_value->field_portPair.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusNMMessageTypes.N_GP_Reset_Statistics.");
+}
+}
+
+void N__GP__Reset__Statistics_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_msgFunction.decode_text(text_buf);
+single_value->field_portPair.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 N__GP__Reset__Statistics_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 @IsobusNMMessageTypes.N_GP_Reset_Statistics.");
+}
+}
+
+void N__GP__Reset__Statistics_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: {
+    N__GP__Reset__Statistics_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusNMMessageTypes.N_GP_Reset_Statistics has 8 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) msgFunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "msgFunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgFunction().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(), "portPair")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          portPair().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusNMMessageTypes.N_GP_Reset_Statistics: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusNMMessageTypes.N_GP_Reset_Statistics");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void N__GP__Reset__Statistics_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_msgFunction.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_GP_Reset_Statistics");
+single_value->field_portPair.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_GP_Reset_Statistics");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_GP_Reset_Statistics");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_GP_Reset_Statistics");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_GP_Reset_Statistics");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_GP_Reset_Statistics");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_GP_Reset_Statistics");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_GP_Reset_Statistics");
+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 : "@IsobusNMMessageTypes.N_GP_Reset_Statistics");
+}
+
+boolean N__GP__Reset__Statistics_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean N__GP__Reset__Statistics_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 e__ParametricIdentifier N__SP__Request_parametricIdentifiers::UNBOUND_ELEM;
+N__SP__Request_parametricIdentifiers::N__SP__Request_parametricIdentifiers()
+{
+val_ptr = NULL;
+}
+
+N__SP__Request_parametricIdentifiers::N__SP__Request_parametricIdentifiers(null_type)
+{
+val_ptr = new recordof_setof_struct;
+val_ptr->ref_count = 1;
+val_ptr->n_elements = 0;
+val_ptr->value_elements = NULL;
+}
+
+N__SP__Request_parametricIdentifiers::N__SP__Request_parametricIdentifiers(const N__SP__Request_parametricIdentifiers& other_value)
+{
+if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers.");
+val_ptr = other_value.val_ptr;
+val_ptr->ref_count++;
+}
+
+N__SP__Request_parametricIdentifiers::~N__SP__Request_parametricIdentifiers()
+{
+clean_up();
+if (val_ptr != NULL) val_ptr = NULL;
+}
+
+void N__SP__Request_parametricIdentifiers::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.");
+}
+}
+
+N__SP__Request_parametricIdentifiers& N__SP__Request_parametricIdentifiers::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;
+}
+
+N__SP__Request_parametricIdentifiers& N__SP__Request_parametricIdentifiers::operator=(const N__SP__Request_parametricIdentifiers& other_value)
+{
+if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers.");
+if (this != &other_value) {
+clean_up();
+val_ptr = other_value.val_ptr;
+val_ptr->ref_count++;
+}
+return *this;
+}
+
+boolean N__SP__Request_parametricIdentifiers::operator==(null_type) const
+{
+if (val_ptr == NULL)
+TTCN_error("The left operand of comparison is an unbound value of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers.");
+return val_ptr->n_elements == 0 ;
+}
+
+boolean N__SP__Request_parametricIdentifiers::operator==(const N__SP__Request_parametricIdentifiers& other_value) const
+{
+if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers.");
+if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers.");
+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;
+}
+
+e__ParametricIdentifier& N__SP__Request_parametricIdentifiers::operator[](int index_value)
+{
+if (index_value < 0) TTCN_error("Accessing an element of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers 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 = (e__ParametricIdentifier**)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 e__ParametricIdentifier(*(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 e__ParametricIdentifier;
+}
+return *val_ptr->value_elements[index_value];
+}
+
+e__ParametricIdentifier& N__SP__Request_parametricIdentifiers::operator[](const INTEGER& index_value)
+{
+index_value.must_bound("Using an unbound integer value for indexing a value of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers.");
+return (*this)[(int)index_value];
+}
+
+const e__ParametricIdentifier& N__SP__Request_parametricIdentifiers::operator[](int index_value) const
+{
+if (val_ptr == NULL)
+TTCN_error("Accessing an element in an unbound value of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers.");
+if (index_value < 0) TTCN_error("Accessing an element of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers using a negative index: %d.", index_value);
+if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers: 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 e__ParametricIdentifier& N__SP__Request_parametricIdentifiers::operator[](const INTEGER& index_value) const
+{
+index_value.must_bound("Using an unbound integer value for indexing a value of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers.");
+return (*this)[(int)index_value];
+}
+
+N__SP__Request_parametricIdentifiers N__SP__Request_parametricIdentifiers::operator<<=(int rotate_count) const
+{
+return *this >>= (-rotate_count);
+}
+
+N__SP__Request_parametricIdentifiers N__SP__Request_parametricIdentifiers::operator<<=(const INTEGER& rotate_count) const
+{
+rotate_count.must_bound("Unbound integer operand of rotate left operator.");
+return *this >>= (int)(-rotate_count);
+}
+
+N__SP__Request_parametricIdentifiers N__SP__Request_parametricIdentifiers::operator>>=(const INTEGER& rotate_count) const
+{
+rotate_count.must_bound("Unbound integer operand of rotate right operator.");
+return *this >>= (int)rotate_count;
+}
+
+N__SP__Request_parametricIdentifiers N__SP__Request_parametricIdentifiers::operator>>=(int rotate_count) const
+{
+if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers.");
+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;
+N__SP__Request_parametricIdentifiers 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 e__ParametricIdentifier(*val_ptr->value_elements[i]);
+}
+}
+return ret_val;
+}
+
+N__SP__Request_parametricIdentifiers N__SP__Request_parametricIdentifiers::operator+(const N__SP__Request_parametricIdentifiers& other_value) const
+{
+if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers concatenation.");
+if (val_ptr->n_elements == 0) return other_value;
+if (other_value.val_ptr->n_elements == 0) return *this;
+N__SP__Request_parametricIdentifiers 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 e__ParametricIdentifier(*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 e__ParametricIdentifier(*other_value.val_ptr->value_elements[i]);
+}
+}
+return ret_val;
+}
+
+N__SP__Request_parametricIdentifiers N__SP__Request_parametricIdentifiers::substr(int index, int returncount) const
+{
+if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers.");
+check_substr_arguments(val_ptr->n_elements, index, returncount, "@IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers","element");
+N__SP__Request_parametricIdentifiers 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 e__ParametricIdentifier(*val_ptr->value_elements[i+index]);
+}
+}
+return ret_val;
+}
+
+N__SP__Request_parametricIdentifiers N__SP__Request_parametricIdentifiers::replace(int index, int len, const N__SP__Request_parametricIdentifiers& repl) const
+{
+if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers.");
+if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers.");
+check_replace_arguments(val_ptr->n_elements, index, len, "@IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers","element");
+N__SP__Request_parametricIdentifiers 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 e__ParametricIdentifier(*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 e__ParametricIdentifier(*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 e__ParametricIdentifier(*val_ptr->value_elements[index+i+len]);
+}
+}
+return ret_val;
+}
+
+N__SP__Request_parametricIdentifiers N__SP__Request_parametricIdentifiers::replace(int index, int len, const N__SP__Request_parametricIdentifiers_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 N__SP__Request_parametricIdentifiers::set_size(int new_size)
+{
+if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers.");
+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 = (e__ParametricIdentifier**)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 e__ParametricIdentifier(*(val_ptr->value_elements[elem_count]));
+}
+}
+clean_up();
+val_ptr = new_val_ptr;
+}
+if (new_size > val_ptr->n_elements) {
+val_ptr->value_elements = (e__ParametricIdentifier**)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 @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers: %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 = (e__ParametricIdentifier**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size);
+val_ptr->n_elements = new_size;
+}
+}
+
+boolean N__SP__Request_parametricIdentifiers::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 N__SP__Request_parametricIdentifiers::size_of() const
+{
+if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers.");
+return val_ptr->n_elements;
+}
+
+int N__SP__Request_parametricIdentifiers::lengthof() const
+{
+if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers.");
+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 N__SP__Request_parametricIdentifiers::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 N__SP__Request_parametricIdentifiers::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", "@IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers");
+    }
+    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", "@IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers");
+    }
+    break;
+  default:
+    TTCN_error("Internal error: Unknown operation type.");
+  }
+}
+
+void N__SP__Request_parametricIdentifiers::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 N__SP__Request_parametricIdentifiers::encode_text(Text_Buf& text_buf) const
+{
+if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers.");
+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 N__SP__Request_parametricIdentifiers::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 @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers.");
+val_ptr->value_elements = (e__ParametricIdentifier**)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 e__ParametricIdentifier;
+val_ptr->value_elements[elem_count]->decode_text(text_buf);
+}
+}
+
+void N__SP__Request_parametricIdentifiers::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void N__SP__Request_parametricIdentifiers::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int N__SP__Request_parametricIdentifiers::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;
+    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) 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 N__SP__Request_parametricIdentifiers::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 N__SP__Request_parametricIdentifiers_template::copy_value(const N__SP__Request_parametricIdentifiers& other_value)
+{
+if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers with an unbound value.");
+single_value.n_elements = other_value.size_of();
+single_value.value_elements = (e__ParametricIdentifier_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 e__ParametricIdentifier_template(other_value[elem_count]);
+} else {
+single_value.value_elements[elem_count] = new e__ParametricIdentifier_template;
+}
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void N__SP__Request_parametricIdentifiers_template::copy_template(const N__SP__Request_parametricIdentifiers_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 = (e__ParametricIdentifier_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 e__ParametricIdentifier_template(*other_value.single_value.value_elements[elem_count]);
+} else {
+single_value.value_elements[elem_count] = new e__ParametricIdentifier_template;
+}
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new N__SP__Request_parametricIdentifiers_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers.");
+break;
+}
+set_selection(other_value);
+}
+
+boolean N__SP__Request_parametricIdentifiers_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 N__SP__Request_parametricIdentifiers_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const N__SP__Request_parametricIdentifiers*)value_ptr)[value_index], legacy);
+else return ((const N__SP__Request_parametricIdentifiers_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit();
+}
+
+N__SP__Request_parametricIdentifiers_template::N__SP__Request_parametricIdentifiers_template()
+{
+}
+
+N__SP__Request_parametricIdentifiers_template::N__SP__Request_parametricIdentifiers_template(template_sel other_value)
+ : Record_Of_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+N__SP__Request_parametricIdentifiers_template::N__SP__Request_parametricIdentifiers_template(null_type)
+ : Record_Of_Template(SPECIFIC_VALUE)
+{
+single_value.n_elements = 0;
+single_value.value_elements = NULL;
+}
+
+N__SP__Request_parametricIdentifiers_template::N__SP__Request_parametricIdentifiers_template(const N__SP__Request_parametricIdentifiers& other_value)
+{
+copy_value(other_value);
+}
+
+N__SP__Request_parametricIdentifiers_template::N__SP__Request_parametricIdentifiers_template(const OPTIONAL<N__SP__Request_parametricIdentifiers>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__SP__Request_parametricIdentifiers&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers from an unbound optional field.");
+}
+}
+
+N__SP__Request_parametricIdentifiers_template::N__SP__Request_parametricIdentifiers_template(const N__SP__Request_parametricIdentifiers_template& other_value)
+ : Record_Of_Template()
+{
+copy_template(other_value);
+}
+
+N__SP__Request_parametricIdentifiers_template::~N__SP__Request_parametricIdentifiers_template()
+{
+clean_up();
+}
+
+void N__SP__Request_parametricIdentifiers_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:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+N__SP__Request_parametricIdentifiers_template& N__SP__Request_parametricIdentifiers_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+N__SP__Request_parametricIdentifiers_template& N__SP__Request_parametricIdentifiers_template::operator=(null_type)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value.n_elements = 0;
+single_value.value_elements = NULL;
+return *this;
+}
+
+N__SP__Request_parametricIdentifiers_template& N__SP__Request_parametricIdentifiers_template::operator=(const N__SP__Request_parametricIdentifiers& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+N__SP__Request_parametricIdentifiers_template& N__SP__Request_parametricIdentifiers_template::operator=(const OPTIONAL<N__SP__Request_parametricIdentifiers>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__SP__Request_parametricIdentifiers&)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 @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers.");
+}
+return *this;
+}
+
+N__SP__Request_parametricIdentifiers_template& N__SP__Request_parametricIdentifiers_template::operator=(const N__SP__Request_parametricIdentifiers_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+e__ParametricIdentifier_template& N__SP__Request_parametricIdentifiers_template::operator[](int index_value)
+{
+if (index_value < 0) TTCN_error("Accessing an element of a template for type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers 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 @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers.");
+    break;
+}
+return *single_value.value_elements[index_value];
+}
+
+e__ParametricIdentifier_template& N__SP__Request_parametricIdentifiers_template::operator[](const INTEGER& index_value)
+{
+index_value.must_bound("Using an unbound integer value for indexing a template of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers.");
+return (*this)[(int)index_value];
+}
+
+const e__ParametricIdentifier_template& N__SP__Request_parametricIdentifiers_template::operator[](int index_value) const
+{
+if (index_value < 0) TTCN_error("Accessing an element of a template for type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers using a negative index: %d.", index_value);
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers.");
+if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers: 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 e__ParametricIdentifier_template& N__SP__Request_parametricIdentifiers_template::operator[](const INTEGER& index_value) const
+{
+index_value.must_bound("Using an unbound integer value for indexing a template of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers.");
+return (*this)[(int)index_value];
+}
+
+void N__SP__Request_parametricIdentifiers_template::set_size(int new_size)
+{
+if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers.");
+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 = (e__ParametricIdentifier_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 e__ParametricIdentifier_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 e__ParametricIdentifier_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 = (e__ParametricIdentifier_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size);
+single_value.n_elements = new_size;
+}
+}
+
+int N__SP__Request_parametricIdentifiers_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 N__SP__Request_parametricIdentifiers_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 @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers 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 @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers 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 @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers 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 @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers 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 @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers 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 @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers containing complemented list.", op_name);
+default:
+  TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers.", op_name);
+}
+return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers");
+}
+
+boolean N__SP__Request_parametricIdentifiers_template::match(const N__SP__Request_parametricIdentifiers& 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;
+default:
+TTCN_error("Matching with an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers.");
+}
+return FALSE;
+}
+
+boolean N__SP__Request_parametricIdentifiers_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;
+}
+
+N__SP__Request_parametricIdentifiers N__SP__Request_parametricIdentifiers_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 @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers.");
+N__SP__Request_parametricIdentifiers 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;
+}
+
+N__SP__Request_parametricIdentifiers N__SP__Request_parametricIdentifiers_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);
+}
+
+N__SP__Request_parametricIdentifiers N__SP__Request_parametricIdentifiers_template::replace(int index, int len, const N__SP__Request_parametricIdentifiers_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());
+}
+
+N__SP__Request_parametricIdentifiers N__SP__Request_parametricIdentifiers_template::replace(int index, int len, const N__SP__Request_parametricIdentifiers& 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 N__SP__Request_parametricIdentifiers_template::set_type(template_sel template_type, unsigned int list_length)
+{
+clean_up();
+switch (template_type) {
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = list_length;
+value_list.list_value = new N__SP__Request_parametricIdentifiers_template[list_length];
+break;
+default:
+TTCN_error("Internal error: Setting an invalid type for a template of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers.");
+}
+set_selection(template_type);
+}
+
+N__SP__Request_parametricIdentifiers_template& N__SP__Request_parametricIdentifiers_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers.");
+return value_list.list_value[list_index];
+}
+
+void N__SP__Request_parametricIdentifiers_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 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;
+default:
+log_generic();
+}
+log_restricted();
+log_ifpresent();
+}
+
+void N__SP__Request_parametricIdentifiers_template::log_match(const N__SP__Request_parametricIdentifiers& 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 N__SP__Request_parametricIdentifiers_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 @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers.");
+}
+}
+
+void N__SP__Request_parametricIdentifiers_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 @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers.");
+single_value.value_elements = (e__ParametricIdentifier_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 e__ParametricIdentifier_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 N__SP__Request_parametricIdentifiers_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 @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers.");
+}
+}
+
+boolean N__SP__Request_parametricIdentifiers_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean N__SP__Request_parametricIdentifiers_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 N__SP__Request_parametricIdentifiers_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: {
+    N__SP__Request_parametricIdentifiers_template temp;
+    temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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;
+  default:
+    param.type_error("record of template", "@IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers");
+  }
+  is_ifpresent = param.get_ifpresent();
+  set_length_range(param);
+}
+
+void N__SP__Request_parametricIdentifiers_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 : "@IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers");
+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 : "@IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers");
+}
+
+boolean N__SP__Request_parametricIdentifiers_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);
+}
+}
+N__SP__Request::N__SP__Request()
+{
+}
+
+N__SP__Request::N__SP__Request(const INTEGER& par_msgFunction,
+    const PortPair& par_portPair,
+    const N__SP__Request_parametricIdentifiers& par_parametricIdentifiers)
+  :   field_msgFunction(par_msgFunction),
+  field_portPair(par_portPair),
+  field_parametricIdentifiers(par_parametricIdentifiers)
+{
+}
+
+N__SP__Request::N__SP__Request(const N__SP__Request& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_SP_Request.");
+if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction();
+else field_msgFunction.clean_up();
+if (other_value.portPair().is_bound()) field_portPair = other_value.portPair();
+else field_portPair.clean_up();
+if (other_value.parametricIdentifiers().is_bound()) field_parametricIdentifiers = other_value.parametricIdentifiers();
+else field_parametricIdentifiers.clean_up();
+}
+
+void N__SP__Request::clean_up()
+{
+field_msgFunction.clean_up();
+field_portPair.clean_up();
+field_parametricIdentifiers.clean_up();
+}
+
+const TTCN_Typedescriptor_t* N__SP__Request::get_descriptor() const { return &N__SP__Request_descr_; }
+N__SP__Request& N__SP__Request::operator=(const N__SP__Request& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.N_SP_Request.");
+  if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction();
+  else field_msgFunction.clean_up();
+  if (other_value.portPair().is_bound()) field_portPair = other_value.portPair();
+  else field_portPair.clean_up();
+  if (other_value.parametricIdentifiers().is_bound()) field_parametricIdentifiers = other_value.parametricIdentifiers();
+  else field_parametricIdentifiers.clean_up();
+}
+return *this;
+}
+
+boolean N__SP__Request::operator==(const N__SP__Request& other_value) const
+{
+return field_msgFunction==other_value.field_msgFunction
+  && field_portPair==other_value.field_portPair
+  && field_parametricIdentifiers==other_value.field_parametricIdentifiers;
+}
+
+boolean N__SP__Request::is_bound() const
+{
+return (field_msgFunction.is_bound())
+  || (field_portPair.is_bound())
+  || (field_parametricIdentifiers.is_bound());
+}
+boolean N__SP__Request::is_value() const
+{
+return field_msgFunction.is_value()
+  && field_portPair.is_value()
+  && field_parametricIdentifiers.is_value();
+}
+void N__SP__Request::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ msgFunction := ");
+field_msgFunction.log();
+TTCN_Logger::log_event_str(", portPair := ");
+field_portPair.log();
+TTCN_Logger::log_event_str(", parametricIdentifiers := ");
+field_parametricIdentifiers.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void N__SP__Request::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 @IsobusNMMessageTypes.N_SP_Request 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) msgFunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) parametricIdentifiers().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(), "msgFunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgFunction().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(), "portPair")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          portPair().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(), "parametricIdentifiers")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          parametricIdentifiers().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 @IsobusNMMessageTypes.N_SP_Request: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusNMMessageTypes.N_SP_Request");
+  }
+}
+
+void N__SP__Request::set_implicit_omit()
+{
+if (msgFunction().is_bound()) msgFunction().set_implicit_omit();
+if (portPair().is_bound()) portPair().set_implicit_omit();
+if (parametricIdentifiers().is_bound()) parametricIdentifiers().set_implicit_omit();
+}
+
+void N__SP__Request::encode_text(Text_Buf& text_buf) const
+{
+field_msgFunction.encode_text(text_buf);
+field_portPair.encode_text(text_buf);
+field_parametricIdentifiers.encode_text(text_buf);
+}
+
+void N__SP__Request::decode_text(Text_Buf& text_buf)
+{
+field_msgFunction.decode_text(text_buf);
+field_portPair.decode_text(text_buf);
+field_parametricIdentifiers.decode_text(text_buf);
+}
+
+void N__SP__Request::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void N__SP__Request::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int N__SP__Request::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, Function_descr_.raw->forceomit);
+  decoded_field_length = field_msgFunction.RAW_decode(Function_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, PortPair_descr_.raw->forceomit);
+  decoded_field_length = field_portPair.RAW_decode(PortPair_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, N__SP__Request_parametricIdentifiers_descr_.raw->forceomit);
+  decoded_field_length = field_parametricIdentifiers.RAW_decode(N__SP__Request_parametricIdentifiers_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 N__SP__Request::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, Function_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PortPair_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, N__SP__Request_parametricIdentifiers_descr_.raw);
+  encoded_length += field_msgFunction.RAW_encode(Function_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_portPair.RAW_encode(PortPair_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_parametricIdentifiers.RAW_encode(N__SP__Request_parametricIdentifiers_descr_, *myleaf.body.node.nodes[2]);
+  return myleaf.length = encoded_length;
+}
+
+struct N__SP__Request_template::single_value_struct {
+INTEGER_template field_msgFunction;
+PortPair_template field_portPair;
+N__SP__Request_parametricIdentifiers_template field_parametricIdentifiers;
+};
+
+void N__SP__Request_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_msgFunction = ANY_VALUE;
+single_value->field_portPair = ANY_VALUE;
+single_value->field_parametricIdentifiers = ANY_VALUE;
+}
+}
+}
+
+void N__SP__Request_template::copy_value(const N__SP__Request& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.msgFunction().is_bound()) {
+  single_value->field_msgFunction = other_value.msgFunction();
+} else {
+  single_value->field_msgFunction.clean_up();
+}
+if (other_value.portPair().is_bound()) {
+  single_value->field_portPair = other_value.portPair();
+} else {
+  single_value->field_portPair.clean_up();
+}
+if (other_value.parametricIdentifiers().is_bound()) {
+  single_value->field_parametricIdentifiers = other_value.parametricIdentifiers();
+} else {
+  single_value->field_parametricIdentifiers.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void N__SP__Request_template::copy_template(const N__SP__Request_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.msgFunction().get_selection()) {
+single_value->field_msgFunction = other_value.msgFunction();
+} else {
+single_value->field_msgFunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.portPair().get_selection()) {
+single_value->field_portPair = other_value.portPair();
+} else {
+single_value->field_portPair.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.parametricIdentifiers().get_selection()) {
+single_value->field_parametricIdentifiers = other_value.parametricIdentifiers();
+} else {
+single_value->field_parametricIdentifiers.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new N__SP__Request_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_SP_Request.");
+break;
+}
+set_selection(other_value);
+}
+
+N__SP__Request_template::N__SP__Request_template()
+{
+}
+
+N__SP__Request_template::N__SP__Request_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+N__SP__Request_template::N__SP__Request_template(const N__SP__Request& other_value)
+{
+copy_value(other_value);
+}
+
+N__SP__Request_template::N__SP__Request_template(const OPTIONAL<N__SP__Request>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__SP__Request&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_SP_Request from an unbound optional field.");
+}
+}
+
+N__SP__Request_template::N__SP__Request_template(const N__SP__Request_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+N__SP__Request_template::~N__SP__Request_template()
+{
+clean_up();
+}
+
+N__SP__Request_template& N__SP__Request_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+N__SP__Request_template& N__SP__Request_template::operator=(const N__SP__Request& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+N__SP__Request_template& N__SP__Request_template::operator=(const OPTIONAL<N__SP__Request>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__SP__Request&)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 @IsobusNMMessageTypes.N_SP_Request.");
+}
+return *this;
+}
+
+N__SP__Request_template& N__SP__Request_template::operator=(const N__SP__Request_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean N__SP__Request_template::match(const N__SP__Request& 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.msgFunction().is_bound()) return FALSE;
+if(!single_value->field_msgFunction.match(other_value.msgFunction(), legacy))return FALSE;
+if(!other_value.portPair().is_bound()) return FALSE;
+if(!single_value->field_portPair.match(other_value.portPair(), legacy))return FALSE;
+if(!other_value.parametricIdentifiers().is_bound()) return FALSE;
+if(!single_value->field_parametricIdentifiers.match(other_value.parametricIdentifiers(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_SP_Request.");
+}
+return FALSE;
+}
+
+boolean N__SP__Request_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_msgFunction.is_bound()
+
+ ||single_value->field_portPair.is_bound()
+
+ ||single_value->field_parametricIdentifiers.is_bound()
+;
+}
+
+boolean N__SP__Request_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_msgFunction.is_value()
+ &&single_value->field_portPair.is_value()
+ &&single_value->field_parametricIdentifiers.is_value();
+}
+
+void N__SP__Request_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+N__SP__Request N__SP__Request_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 @IsobusNMMessageTypes.N_SP_Request.");
+N__SP__Request ret_val;
+if (single_value->field_msgFunction.is_bound()) {
+ret_val.msgFunction() = single_value->field_msgFunction.valueof();
+}
+if (single_value->field_portPair.is_bound()) {
+ret_val.portPair() = single_value->field_portPair.valueof();
+}
+if (single_value->field_parametricIdentifiers.is_bound()) {
+ret_val.parametricIdentifiers() = single_value->field_parametricIdentifiers.valueof();
+}
+return ret_val;
+}
+
+void N__SP__Request_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.N_SP_Request.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new N__SP__Request_template[list_length];
+}
+
+N__SP__Request_template& N__SP__Request_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_SP_Request.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.N_SP_Request.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& N__SP__Request_template::msgFunction()
+{
+set_specific();
+return single_value->field_msgFunction;
+}
+
+const INTEGER_template& N__SP__Request_template::msgFunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field msgFunction of a non-specific template of type @IsobusNMMessageTypes.N_SP_Request.");
+return single_value->field_msgFunction;
+}
+
+PortPair_template& N__SP__Request_template::portPair()
+{
+set_specific();
+return single_value->field_portPair;
+}
+
+const PortPair_template& N__SP__Request_template::portPair() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field portPair of a non-specific template of type @IsobusNMMessageTypes.N_SP_Request.");
+return single_value->field_portPair;
+}
+
+N__SP__Request_parametricIdentifiers_template& N__SP__Request_template::parametricIdentifiers()
+{
+set_specific();
+return single_value->field_parametricIdentifiers;
+}
+
+const N__SP__Request_parametricIdentifiers_template& N__SP__Request_template::parametricIdentifiers() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field parametricIdentifiers of a non-specific template of type @IsobusNMMessageTypes.N_SP_Request.");
+return single_value->field_parametricIdentifiers;
+}
+
+int N__SP__Request_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_SP_Request 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 @IsobusNMMessageTypes.N_SP_Request 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 @IsobusNMMessageTypes.N_SP_Request containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_SP_Request containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_SP_Request containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_SP_Request containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_SP_Request.");
+  }
+  return 0;
+}
+
+void N__SP__Request_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ msgFunction := ");
+single_value->field_msgFunction.log();
+TTCN_Logger::log_event_str(", portPair := ");
+single_value->field_portPair.log();
+TTCN_Logger::log_event_str(", parametricIdentifiers := ");
+single_value->field_parametricIdentifiers.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void N__SP__Request_template::log_match(const N__SP__Request& 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_msgFunction.match(match_value.msgFunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".msgFunction");
+single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_portPair.match(match_value.portPair(), legacy)){
+TTCN_Logger::log_logmatch_info(".portPair");
+single_value->field_portPair.log_match(match_value.portPair(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_parametricIdentifiers.match(match_value.parametricIdentifiers(), legacy)){
+TTCN_Logger::log_logmatch_info(".parametricIdentifiers");
+single_value->field_parametricIdentifiers.log_match(match_value.parametricIdentifiers(), 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("{ msgFunction := ");
+single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy);
+TTCN_Logger::log_event_str(", portPair := ");
+single_value->field_portPair.log_match(match_value.portPair(), legacy);
+TTCN_Logger::log_event_str(", parametricIdentifiers := ");
+single_value->field_parametricIdentifiers.log_match(match_value.parametricIdentifiers(), 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 N__SP__Request_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_msgFunction.encode_text(text_buf);
+single_value->field_portPair.encode_text(text_buf);
+single_value->field_parametricIdentifiers.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 @IsobusNMMessageTypes.N_SP_Request.");
+}
+}
+
+void N__SP__Request_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_msgFunction.decode_text(text_buf);
+single_value->field_portPair.decode_text(text_buf);
+single_value->field_parametricIdentifiers.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 N__SP__Request_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 @IsobusNMMessageTypes.N_SP_Request.");
+}
+}
+
+void N__SP__Request_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: {
+    N__SP__Request_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusNMMessageTypes.N_SP_Request 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) msgFunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) parametricIdentifiers().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(), "msgFunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgFunction().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(), "portPair")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          portPair().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(), "parametricIdentifiers")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          parametricIdentifiers().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 @IsobusNMMessageTypes.N_SP_Request: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusNMMessageTypes.N_SP_Request");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void N__SP__Request_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_msgFunction.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_SP_Request");
+single_value->field_portPair.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_SP_Request");
+single_value->field_parametricIdentifiers.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_SP_Request");
+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 : "@IsobusNMMessageTypes.N_SP_Request");
+}
+
+boolean N__SP__Request_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean N__SP__Request_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+N__SP__Response::N__SP__Response()
+{
+}
+
+N__SP__Response::N__SP__Response(const INTEGER& par_msgFunction,
+    const PortPair& par_portPair,
+    const N__SP__Response_requestedParametrics& par_requestedParametrics)
+  :   field_msgFunction(par_msgFunction),
+  field_portPair(par_portPair),
+  field_requestedParametrics(par_requestedParametrics)
+{
+}
+
+N__SP__Response::N__SP__Response(const N__SP__Response& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_SP_Response.");
+if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction();
+else field_msgFunction.clean_up();
+if (other_value.portPair().is_bound()) field_portPair = other_value.portPair();
+else field_portPair.clean_up();
+if (other_value.requestedParametrics().is_bound()) field_requestedParametrics = other_value.requestedParametrics();
+else field_requestedParametrics.clean_up();
+}
+
+void N__SP__Response::clean_up()
+{
+field_msgFunction.clean_up();
+field_portPair.clean_up();
+field_requestedParametrics.clean_up();
+}
+
+const TTCN_Typedescriptor_t* N__SP__Response::get_descriptor() const { return &N__SP__Response_descr_; }
+N__SP__Response& N__SP__Response::operator=(const N__SP__Response& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.N_SP_Response.");
+  if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction();
+  else field_msgFunction.clean_up();
+  if (other_value.portPair().is_bound()) field_portPair = other_value.portPair();
+  else field_portPair.clean_up();
+  if (other_value.requestedParametrics().is_bound()) field_requestedParametrics = other_value.requestedParametrics();
+  else field_requestedParametrics.clean_up();
+}
+return *this;
+}
+
+boolean N__SP__Response::operator==(const N__SP__Response& other_value) const
+{
+return field_msgFunction==other_value.field_msgFunction
+  && field_portPair==other_value.field_portPair
+  && field_requestedParametrics==other_value.field_requestedParametrics;
+}
+
+boolean N__SP__Response::is_bound() const
+{
+return (field_msgFunction.is_bound())
+  || (field_portPair.is_bound())
+  || (field_requestedParametrics.is_bound());
+}
+boolean N__SP__Response::is_value() const
+{
+return field_msgFunction.is_value()
+  && field_portPair.is_value()
+  && field_requestedParametrics.is_value();
+}
+void N__SP__Response::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ msgFunction := ");
+field_msgFunction.log();
+TTCN_Logger::log_event_str(", portPair := ");
+field_portPair.log();
+TTCN_Logger::log_event_str(", requestedParametrics := ");
+field_requestedParametrics.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void N__SP__Response::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 @IsobusNMMessageTypes.N_SP_Response 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) msgFunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) requestedParametrics().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(), "msgFunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgFunction().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(), "portPair")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          portPair().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(), "requestedParametrics")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          requestedParametrics().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 @IsobusNMMessageTypes.N_SP_Response: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusNMMessageTypes.N_SP_Response");
+  }
+}
+
+void N__SP__Response::set_implicit_omit()
+{
+if (msgFunction().is_bound()) msgFunction().set_implicit_omit();
+if (portPair().is_bound()) portPair().set_implicit_omit();
+if (requestedParametrics().is_bound()) requestedParametrics().set_implicit_omit();
+}
+
+void N__SP__Response::encode_text(Text_Buf& text_buf) const
+{
+field_msgFunction.encode_text(text_buf);
+field_portPair.encode_text(text_buf);
+field_requestedParametrics.encode_text(text_buf);
+}
+
+void N__SP__Response::decode_text(Text_Buf& text_buf)
+{
+field_msgFunction.decode_text(text_buf);
+field_portPair.decode_text(text_buf);
+field_requestedParametrics.decode_text(text_buf);
+}
+
+void N__SP__Response::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void N__SP__Response::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int N__SP__Response::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, Function_descr_.raw->forceomit);
+  decoded_field_length = field_msgFunction.RAW_decode(Function_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, PortPair_descr_.raw->forceomit);
+  decoded_field_length = field_portPair.RAW_decode(PortPair_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, N__SP__Response_requestedParametrics_descr_.raw->forceomit);
+  decoded_field_length = field_requestedParametrics.RAW_decode(N__SP__Response_requestedParametrics_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 N__SP__Response::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, Function_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PortPair_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, N__SP__Response_requestedParametrics_descr_.raw);
+  encoded_length += field_msgFunction.RAW_encode(Function_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_portPair.RAW_encode(PortPair_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_requestedParametrics.RAW_encode(N__SP__Response_requestedParametrics_descr_, *myleaf.body.node.nodes[2]);
+  return myleaf.length = encoded_length;
+}
+
+struct N__SP__Response_template::single_value_struct {
+INTEGER_template field_msgFunction;
+PortPair_template field_portPair;
+N__SP__Response_requestedParametrics_template field_requestedParametrics;
+};
+
+void N__SP__Response_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_msgFunction = ANY_VALUE;
+single_value->field_portPair = ANY_VALUE;
+single_value->field_requestedParametrics = ANY_VALUE;
+}
+}
+}
+
+void N__SP__Response_template::copy_value(const N__SP__Response& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.msgFunction().is_bound()) {
+  single_value->field_msgFunction = other_value.msgFunction();
+} else {
+  single_value->field_msgFunction.clean_up();
+}
+if (other_value.portPair().is_bound()) {
+  single_value->field_portPair = other_value.portPair();
+} else {
+  single_value->field_portPair.clean_up();
+}
+if (other_value.requestedParametrics().is_bound()) {
+  single_value->field_requestedParametrics = other_value.requestedParametrics();
+} else {
+  single_value->field_requestedParametrics.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void N__SP__Response_template::copy_template(const N__SP__Response_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.msgFunction().get_selection()) {
+single_value->field_msgFunction = other_value.msgFunction();
+} else {
+single_value->field_msgFunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.portPair().get_selection()) {
+single_value->field_portPair = other_value.portPair();
+} else {
+single_value->field_portPair.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.requestedParametrics().get_selection()) {
+single_value->field_requestedParametrics = other_value.requestedParametrics();
+} else {
+single_value->field_requestedParametrics.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new N__SP__Response_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_SP_Response.");
+break;
+}
+set_selection(other_value);
+}
+
+N__SP__Response_template::N__SP__Response_template()
+{
+}
+
+N__SP__Response_template::N__SP__Response_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+N__SP__Response_template::N__SP__Response_template(const N__SP__Response& other_value)
+{
+copy_value(other_value);
+}
+
+N__SP__Response_template::N__SP__Response_template(const OPTIONAL<N__SP__Response>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__SP__Response&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_SP_Response from an unbound optional field.");
+}
+}
+
+N__SP__Response_template::N__SP__Response_template(const N__SP__Response_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+N__SP__Response_template::~N__SP__Response_template()
+{
+clean_up();
+}
+
+N__SP__Response_template& N__SP__Response_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+N__SP__Response_template& N__SP__Response_template::operator=(const N__SP__Response& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+N__SP__Response_template& N__SP__Response_template::operator=(const OPTIONAL<N__SP__Response>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__SP__Response&)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 @IsobusNMMessageTypes.N_SP_Response.");
+}
+return *this;
+}
+
+N__SP__Response_template& N__SP__Response_template::operator=(const N__SP__Response_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean N__SP__Response_template::match(const N__SP__Response& 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.msgFunction().is_bound()) return FALSE;
+if(!single_value->field_msgFunction.match(other_value.msgFunction(), legacy))return FALSE;
+if(!other_value.portPair().is_bound()) return FALSE;
+if(!single_value->field_portPair.match(other_value.portPair(), legacy))return FALSE;
+if(!other_value.requestedParametrics().is_bound()) return FALSE;
+if(!single_value->field_requestedParametrics.match(other_value.requestedParametrics(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_SP_Response.");
+}
+return FALSE;
+}
+
+boolean N__SP__Response_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_msgFunction.is_bound()
+
+ ||single_value->field_portPair.is_bound()
+
+ ||single_value->field_requestedParametrics.is_bound()
+;
+}
+
+boolean N__SP__Response_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_msgFunction.is_value()
+ &&single_value->field_portPair.is_value()
+ &&single_value->field_requestedParametrics.is_value();
+}
+
+void N__SP__Response_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+N__SP__Response N__SP__Response_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 @IsobusNMMessageTypes.N_SP_Response.");
+N__SP__Response ret_val;
+if (single_value->field_msgFunction.is_bound()) {
+ret_val.msgFunction() = single_value->field_msgFunction.valueof();
+}
+if (single_value->field_portPair.is_bound()) {
+ret_val.portPair() = single_value->field_portPair.valueof();
+}
+if (single_value->field_requestedParametrics.is_bound()) {
+ret_val.requestedParametrics() = single_value->field_requestedParametrics.valueof();
+}
+return ret_val;
+}
+
+void N__SP__Response_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.N_SP_Response.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new N__SP__Response_template[list_length];
+}
+
+N__SP__Response_template& N__SP__Response_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_SP_Response.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.N_SP_Response.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& N__SP__Response_template::msgFunction()
+{
+set_specific();
+return single_value->field_msgFunction;
+}
+
+const INTEGER_template& N__SP__Response_template::msgFunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field msgFunction of a non-specific template of type @IsobusNMMessageTypes.N_SP_Response.");
+return single_value->field_msgFunction;
+}
+
+PortPair_template& N__SP__Response_template::portPair()
+{
+set_specific();
+return single_value->field_portPair;
+}
+
+const PortPair_template& N__SP__Response_template::portPair() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field portPair of a non-specific template of type @IsobusNMMessageTypes.N_SP_Response.");
+return single_value->field_portPair;
+}
+
+N__SP__Response_requestedParametrics_template& N__SP__Response_template::requestedParametrics()
+{
+set_specific();
+return single_value->field_requestedParametrics;
+}
+
+const N__SP__Response_requestedParametrics_template& N__SP__Response_template::requestedParametrics() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field requestedParametrics of a non-specific template of type @IsobusNMMessageTypes.N_SP_Response.");
+return single_value->field_requestedParametrics;
+}
+
+int N__SP__Response_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_SP_Response 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 @IsobusNMMessageTypes.N_SP_Response 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 @IsobusNMMessageTypes.N_SP_Response containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_SP_Response containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_SP_Response containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_SP_Response containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_SP_Response.");
+  }
+  return 0;
+}
+
+void N__SP__Response_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ msgFunction := ");
+single_value->field_msgFunction.log();
+TTCN_Logger::log_event_str(", portPair := ");
+single_value->field_portPair.log();
+TTCN_Logger::log_event_str(", requestedParametrics := ");
+single_value->field_requestedParametrics.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void N__SP__Response_template::log_match(const N__SP__Response& 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_msgFunction.match(match_value.msgFunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".msgFunction");
+single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_portPair.match(match_value.portPair(), legacy)){
+TTCN_Logger::log_logmatch_info(".portPair");
+single_value->field_portPair.log_match(match_value.portPair(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_requestedParametrics.match(match_value.requestedParametrics(), legacy)){
+TTCN_Logger::log_logmatch_info(".requestedParametrics");
+single_value->field_requestedParametrics.log_match(match_value.requestedParametrics(), 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("{ msgFunction := ");
+single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy);
+TTCN_Logger::log_event_str(", portPair := ");
+single_value->field_portPair.log_match(match_value.portPair(), legacy);
+TTCN_Logger::log_event_str(", requestedParametrics := ");
+single_value->field_requestedParametrics.log_match(match_value.requestedParametrics(), 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 N__SP__Response_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_msgFunction.encode_text(text_buf);
+single_value->field_portPair.encode_text(text_buf);
+single_value->field_requestedParametrics.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 @IsobusNMMessageTypes.N_SP_Response.");
+}
+}
+
+void N__SP__Response_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_msgFunction.decode_text(text_buf);
+single_value->field_portPair.decode_text(text_buf);
+single_value->field_requestedParametrics.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 N__SP__Response_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 @IsobusNMMessageTypes.N_SP_Response.");
+}
+}
+
+void N__SP__Response_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: {
+    N__SP__Response_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusNMMessageTypes.N_SP_Response 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) msgFunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) requestedParametrics().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(), "msgFunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgFunction().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(), "portPair")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          portPair().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(), "requestedParametrics")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          requestedParametrics().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 @IsobusNMMessageTypes.N_SP_Response: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusNMMessageTypes.N_SP_Response");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void N__SP__Response_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_msgFunction.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_SP_Response");
+single_value->field_portPair.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_SP_Response");
+single_value->field_requestedParametrics.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_SP_Response");
+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 : "@IsobusNMMessageTypes.N_SP_Response");
+}
+
+boolean N__SP__Response_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean N__SP__Response_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+N__SP__Reset__Statistics::N__SP__Reset__Statistics()
+{
+}
+
+N__SP__Reset__Statistics::N__SP__Reset__Statistics(const INTEGER& par_msgFunction,
+    const PortPair& par_portPair,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_msgFunction(par_msgFunction),
+  field_portPair(par_portPair),
+  field_reserved3(par_reserved3),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+N__SP__Reset__Statistics::N__SP__Reset__Statistics(const N__SP__Reset__Statistics& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_SP_Reset_Statistics.");
+if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction();
+else field_msgFunction.clean_up();
+if (other_value.portPair().is_bound()) field_portPair = other_value.portPair();
+else field_portPair.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void N__SP__Reset__Statistics::clean_up()
+{
+field_msgFunction.clean_up();
+field_portPair.clean_up();
+field_reserved3.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* N__SP__Reset__Statistics::get_descriptor() const { return &N__SP__Reset__Statistics_descr_; }
+N__SP__Reset__Statistics& N__SP__Reset__Statistics::operator=(const N__SP__Reset__Statistics& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.N_SP_Reset_Statistics.");
+  if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction();
+  else field_msgFunction.clean_up();
+  if (other_value.portPair().is_bound()) field_portPair = other_value.portPair();
+  else field_portPair.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean N__SP__Reset__Statistics::operator==(const N__SP__Reset__Statistics& other_value) const
+{
+return field_msgFunction==other_value.field_msgFunction
+  && field_portPair==other_value.field_portPair
+  && field_reserved3==other_value.field_reserved3
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean N__SP__Reset__Statistics::is_bound() const
+{
+return (field_msgFunction.is_bound())
+  || (field_portPair.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean N__SP__Reset__Statistics::is_value() const
+{
+return field_msgFunction.is_value()
+  && field_portPair.is_value()
+  && field_reserved3.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void N__SP__Reset__Statistics::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ msgFunction := ");
+field_msgFunction.log();
+TTCN_Logger::log_event_str(", portPair := ");
+field_portPair.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void N__SP__Reset__Statistics::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusNMMessageTypes.N_SP_Reset_Statistics has 8 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) msgFunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "msgFunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgFunction().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(), "portPair")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          portPair().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusNMMessageTypes.N_SP_Reset_Statistics: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusNMMessageTypes.N_SP_Reset_Statistics");
+  }
+}
+
+void N__SP__Reset__Statistics::set_implicit_omit()
+{
+if (msgFunction().is_bound()) msgFunction().set_implicit_omit();
+if (portPair().is_bound()) portPair().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void N__SP__Reset__Statistics::encode_text(Text_Buf& text_buf) const
+{
+field_msgFunction.encode_text(text_buf);
+field_portPair.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void N__SP__Reset__Statistics::decode_text(Text_Buf& text_buf)
+{
+field_msgFunction.decode_text(text_buf);
+field_portPair.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void N__SP__Reset__Statistics::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void N__SP__Reset__Statistics::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int N__SP__Reset__Statistics::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, Function_descr_.raw->forceomit);
+  decoded_field_length = field_msgFunction.RAW_decode(Function_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, PortPair_descr_.raw->forceomit);
+  decoded_field_length = field_portPair.RAW_decode(PortPair_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, N__SP__Reset__Statistics_reserved3_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(N__SP__Reset__Statistics_reserved3_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, N__SP__Reset__Statistics_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(N__SP__Reset__Statistics_reserved4_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, N__SP__Reset__Statistics_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(N__SP__Reset__Statistics_reserved5_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, N__SP__Reset__Statistics_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(N__SP__Reset__Statistics_reserved6_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, N__SP__Reset__Statistics_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(N__SP__Reset__Statistics_reserved7_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, N__SP__Reset__Statistics_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(N__SP__Reset__Statistics_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int N__SP__Reset__Statistics::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, Function_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PortPair_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, N__SP__Reset__Statistics_reserved3_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, N__SP__Reset__Statistics_reserved4_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, N__SP__Reset__Statistics_reserved5_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, N__SP__Reset__Statistics_reserved6_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, N__SP__Reset__Statistics_reserved7_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, N__SP__Reset__Statistics_reserved8_descr_.raw);
+  encoded_length += field_msgFunction.RAW_encode(Function_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_portPair.RAW_encode(PortPair_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved3.RAW_encode(N__SP__Reset__Statistics_reserved3_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved4.RAW_encode(N__SP__Reset__Statistics_reserved4_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved5.RAW_encode(N__SP__Reset__Statistics_reserved5_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved6.RAW_encode(N__SP__Reset__Statistics_reserved6_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved7.RAW_encode(N__SP__Reset__Statistics_reserved7_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved8.RAW_encode(N__SP__Reset__Statistics_reserved8_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct N__SP__Reset__Statistics_template::single_value_struct {
+INTEGER_template field_msgFunction;
+PortPair_template field_portPair;
+OCTETSTRING_template field_reserved3;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void N__SP__Reset__Statistics_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_msgFunction = ANY_VALUE;
+single_value->field_portPair = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void N__SP__Reset__Statistics_template::copy_value(const N__SP__Reset__Statistics& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.msgFunction().is_bound()) {
+  single_value->field_msgFunction = other_value.msgFunction();
+} else {
+  single_value->field_msgFunction.clean_up();
+}
+if (other_value.portPair().is_bound()) {
+  single_value->field_portPair = other_value.portPair();
+} else {
+  single_value->field_portPair.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void N__SP__Reset__Statistics_template::copy_template(const N__SP__Reset__Statistics_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.msgFunction().get_selection()) {
+single_value->field_msgFunction = other_value.msgFunction();
+} else {
+single_value->field_msgFunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.portPair().get_selection()) {
+single_value->field_portPair = other_value.portPair();
+} else {
+single_value->field_portPair.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new N__SP__Reset__Statistics_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_SP_Reset_Statistics.");
+break;
+}
+set_selection(other_value);
+}
+
+N__SP__Reset__Statistics_template::N__SP__Reset__Statistics_template()
+{
+}
+
+N__SP__Reset__Statistics_template::N__SP__Reset__Statistics_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+N__SP__Reset__Statistics_template::N__SP__Reset__Statistics_template(const N__SP__Reset__Statistics& other_value)
+{
+copy_value(other_value);
+}
+
+N__SP__Reset__Statistics_template::N__SP__Reset__Statistics_template(const OPTIONAL<N__SP__Reset__Statistics>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__SP__Reset__Statistics&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_SP_Reset_Statistics from an unbound optional field.");
+}
+}
+
+N__SP__Reset__Statistics_template::N__SP__Reset__Statistics_template(const N__SP__Reset__Statistics_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+N__SP__Reset__Statistics_template::~N__SP__Reset__Statistics_template()
+{
+clean_up();
+}
+
+N__SP__Reset__Statistics_template& N__SP__Reset__Statistics_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+N__SP__Reset__Statistics_template& N__SP__Reset__Statistics_template::operator=(const N__SP__Reset__Statistics& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+N__SP__Reset__Statistics_template& N__SP__Reset__Statistics_template::operator=(const OPTIONAL<N__SP__Reset__Statistics>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__SP__Reset__Statistics&)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 @IsobusNMMessageTypes.N_SP_Reset_Statistics.");
+}
+return *this;
+}
+
+N__SP__Reset__Statistics_template& N__SP__Reset__Statistics_template::operator=(const N__SP__Reset__Statistics_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean N__SP__Reset__Statistics_template::match(const N__SP__Reset__Statistics& 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.msgFunction().is_bound()) return FALSE;
+if(!single_value->field_msgFunction.match(other_value.msgFunction(), legacy))return FALSE;
+if(!other_value.portPair().is_bound()) return FALSE;
+if(!single_value->field_portPair.match(other_value.portPair(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_SP_Reset_Statistics.");
+}
+return FALSE;
+}
+
+boolean N__SP__Reset__Statistics_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_msgFunction.is_bound()
+
+ ||single_value->field_portPair.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean N__SP__Reset__Statistics_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_msgFunction.is_value()
+ &&single_value->field_portPair.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void N__SP__Reset__Statistics_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+N__SP__Reset__Statistics N__SP__Reset__Statistics_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 @IsobusNMMessageTypes.N_SP_Reset_Statistics.");
+N__SP__Reset__Statistics ret_val;
+if (single_value->field_msgFunction.is_bound()) {
+ret_val.msgFunction() = single_value->field_msgFunction.valueof();
+}
+if (single_value->field_portPair.is_bound()) {
+ret_val.portPair() = single_value->field_portPair.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void N__SP__Reset__Statistics_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.N_SP_Reset_Statistics.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new N__SP__Reset__Statistics_template[list_length];
+}
+
+N__SP__Reset__Statistics_template& N__SP__Reset__Statistics_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_SP_Reset_Statistics.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.N_SP_Reset_Statistics.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& N__SP__Reset__Statistics_template::msgFunction()
+{
+set_specific();
+return single_value->field_msgFunction;
+}
+
+const INTEGER_template& N__SP__Reset__Statistics_template::msgFunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field msgFunction of a non-specific template of type @IsobusNMMessageTypes.N_SP_Reset_Statistics.");
+return single_value->field_msgFunction;
+}
+
+PortPair_template& N__SP__Reset__Statistics_template::portPair()
+{
+set_specific();
+return single_value->field_portPair;
+}
+
+const PortPair_template& N__SP__Reset__Statistics_template::portPair() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field portPair of a non-specific template of type @IsobusNMMessageTypes.N_SP_Reset_Statistics.");
+return single_value->field_portPair;
+}
+
+OCTETSTRING_template& N__SP__Reset__Statistics_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const OCTETSTRING_template& N__SP__Reset__Statistics_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusNMMessageTypes.N_SP_Reset_Statistics.");
+return single_value->field_reserved3;
+}
+
+OCTETSTRING_template& N__SP__Reset__Statistics_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& N__SP__Reset__Statistics_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusNMMessageTypes.N_SP_Reset_Statistics.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& N__SP__Reset__Statistics_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& N__SP__Reset__Statistics_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusNMMessageTypes.N_SP_Reset_Statistics.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& N__SP__Reset__Statistics_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& N__SP__Reset__Statistics_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusNMMessageTypes.N_SP_Reset_Statistics.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& N__SP__Reset__Statistics_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& N__SP__Reset__Statistics_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusNMMessageTypes.N_SP_Reset_Statistics.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& N__SP__Reset__Statistics_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& N__SP__Reset__Statistics_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusNMMessageTypes.N_SP_Reset_Statistics.");
+return single_value->field_reserved8;
+}
+
+int N__SP__Reset__Statistics_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_SP_Reset_Statistics which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_SP_Reset_Statistics 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 @IsobusNMMessageTypes.N_SP_Reset_Statistics containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_SP_Reset_Statistics containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_SP_Reset_Statistics containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_SP_Reset_Statistics containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_SP_Reset_Statistics.");
+  }
+  return 0;
+}
+
+void N__SP__Reset__Statistics_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ msgFunction := ");
+single_value->field_msgFunction.log();
+TTCN_Logger::log_event_str(", portPair := ");
+single_value->field_portPair.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void N__SP__Reset__Statistics_template::log_match(const N__SP__Reset__Statistics& 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_msgFunction.match(match_value.msgFunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".msgFunction");
+single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_portPair.match(match_value.portPair(), legacy)){
+TTCN_Logger::log_logmatch_info(".portPair");
+single_value->field_portPair.log_match(match_value.portPair(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ msgFunction := ");
+single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy);
+TTCN_Logger::log_event_str(", portPair := ");
+single_value->field_portPair.log_match(match_value.portPair(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 N__SP__Reset__Statistics_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_msgFunction.encode_text(text_buf);
+single_value->field_portPair.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusNMMessageTypes.N_SP_Reset_Statistics.");
+}
+}
+
+void N__SP__Reset__Statistics_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_msgFunction.decode_text(text_buf);
+single_value->field_portPair.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 N__SP__Reset__Statistics_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 @IsobusNMMessageTypes.N_SP_Reset_Statistics.");
+}
+}
+
+void N__SP__Reset__Statistics_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: {
+    N__SP__Reset__Statistics_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusNMMessageTypes.N_SP_Reset_Statistics has 8 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) msgFunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "msgFunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgFunction().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(), "portPair")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          portPair().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusNMMessageTypes.N_SP_Reset_Statistics: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusNMMessageTypes.N_SP_Reset_Statistics");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void N__SP__Reset__Statistics_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_msgFunction.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_SP_Reset_Statistics");
+single_value->field_portPair.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_SP_Reset_Statistics");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_SP_Reset_Statistics");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_SP_Reset_Statistics");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_SP_Reset_Statistics");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_SP_Reset_Statistics");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_SP_Reset_Statistics");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_SP_Reset_Statistics");
+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 : "@IsobusNMMessageTypes.N_SP_Reset_Statistics");
+}
+
+boolean N__SP__Reset__Statistics_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean N__SP__Reset__Statistics_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+N__OC__Request::N__OC__Request()
+{
+}
+
+N__OC__Request::N__OC__Request(const INTEGER& par_msgFunction,
+    const PortPair& par_portPair,
+    const NAME& par_nameOfCF)
+  :   field_msgFunction(par_msgFunction),
+  field_portPair(par_portPair),
+  field_nameOfCF(par_nameOfCF)
+{
+}
+
+N__OC__Request::N__OC__Request(const N__OC__Request& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_OC_Request.");
+if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction();
+else field_msgFunction.clean_up();
+if (other_value.portPair().is_bound()) field_portPair = other_value.portPair();
+else field_portPair.clean_up();
+if (other_value.nameOfCF().is_bound()) field_nameOfCF = other_value.nameOfCF();
+else field_nameOfCF.clean_up();
+}
+
+void N__OC__Request::clean_up()
+{
+field_msgFunction.clean_up();
+field_portPair.clean_up();
+field_nameOfCF.clean_up();
+}
+
+const TTCN_Typedescriptor_t* N__OC__Request::get_descriptor() const { return &N__OC__Request_descr_; }
+N__OC__Request& N__OC__Request::operator=(const N__OC__Request& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.N_OC_Request.");
+  if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction();
+  else field_msgFunction.clean_up();
+  if (other_value.portPair().is_bound()) field_portPair = other_value.portPair();
+  else field_portPair.clean_up();
+  if (other_value.nameOfCF().is_bound()) field_nameOfCF = other_value.nameOfCF();
+  else field_nameOfCF.clean_up();
+}
+return *this;
+}
+
+boolean N__OC__Request::operator==(const N__OC__Request& other_value) const
+{
+return field_msgFunction==other_value.field_msgFunction
+  && field_portPair==other_value.field_portPair
+  && field_nameOfCF==other_value.field_nameOfCF;
+}
+
+boolean N__OC__Request::is_bound() const
+{
+return (field_msgFunction.is_bound())
+  || (field_portPair.is_bound())
+  || (field_nameOfCF.is_bound());
+}
+boolean N__OC__Request::is_value() const
+{
+return field_msgFunction.is_value()
+  && field_portPair.is_value()
+  && field_nameOfCF.is_value();
+}
+void N__OC__Request::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ msgFunction := ");
+field_msgFunction.log();
+TTCN_Logger::log_event_str(", portPair := ");
+field_portPair.log();
+TTCN_Logger::log_event_str(", nameOfCF := ");
+field_nameOfCF.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void N__OC__Request::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 @IsobusNMMessageTypes.N_OC_Request 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) msgFunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) nameOfCF().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(), "msgFunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgFunction().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(), "portPair")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          portPair().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(), "nameOfCF")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          nameOfCF().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 @IsobusNMMessageTypes.N_OC_Request: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusNMMessageTypes.N_OC_Request");
+  }
+}
+
+void N__OC__Request::set_implicit_omit()
+{
+if (msgFunction().is_bound()) msgFunction().set_implicit_omit();
+if (portPair().is_bound()) portPair().set_implicit_omit();
+if (nameOfCF().is_bound()) nameOfCF().set_implicit_omit();
+}
+
+void N__OC__Request::encode_text(Text_Buf& text_buf) const
+{
+field_msgFunction.encode_text(text_buf);
+field_portPair.encode_text(text_buf);
+field_nameOfCF.encode_text(text_buf);
+}
+
+void N__OC__Request::decode_text(Text_Buf& text_buf)
+{
+field_msgFunction.decode_text(text_buf);
+field_portPair.decode_text(text_buf);
+field_nameOfCF.decode_text(text_buf);
+}
+
+void N__OC__Request::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void N__OC__Request::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int N__OC__Request::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, Function_descr_.raw->forceomit);
+  decoded_field_length = field_msgFunction.RAW_decode(Function_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, PortPair_descr_.raw->forceomit);
+  decoded_field_length = field_portPair.RAW_decode(PortPair_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, NAME_descr_.raw->forceomit);
+  decoded_field_length = field_nameOfCF.RAW_decode(NAME_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 N__OC__Request::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, Function_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PortPair_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, NAME_descr_.raw);
+  encoded_length += field_msgFunction.RAW_encode(Function_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_portPair.RAW_encode(PortPair_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_nameOfCF.RAW_encode(NAME_descr_, *myleaf.body.node.nodes[2]);
+  return myleaf.length = encoded_length;
+}
+
+struct N__OC__Request_template::single_value_struct {
+INTEGER_template field_msgFunction;
+PortPair_template field_portPair;
+NAME_template field_nameOfCF;
+};
+
+void N__OC__Request_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_msgFunction = ANY_VALUE;
+single_value->field_portPair = ANY_VALUE;
+single_value->field_nameOfCF = ANY_VALUE;
+}
+}
+}
+
+void N__OC__Request_template::copy_value(const N__OC__Request& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.msgFunction().is_bound()) {
+  single_value->field_msgFunction = other_value.msgFunction();
+} else {
+  single_value->field_msgFunction.clean_up();
+}
+if (other_value.portPair().is_bound()) {
+  single_value->field_portPair = other_value.portPair();
+} else {
+  single_value->field_portPair.clean_up();
+}
+if (other_value.nameOfCF().is_bound()) {
+  single_value->field_nameOfCF = other_value.nameOfCF();
+} else {
+  single_value->field_nameOfCF.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void N__OC__Request_template::copy_template(const N__OC__Request_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.msgFunction().get_selection()) {
+single_value->field_msgFunction = other_value.msgFunction();
+} else {
+single_value->field_msgFunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.portPair().get_selection()) {
+single_value->field_portPair = other_value.portPair();
+} else {
+single_value->field_portPair.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.nameOfCF().get_selection()) {
+single_value->field_nameOfCF = other_value.nameOfCF();
+} else {
+single_value->field_nameOfCF.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new N__OC__Request_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_OC_Request.");
+break;
+}
+set_selection(other_value);
+}
+
+N__OC__Request_template::N__OC__Request_template()
+{
+}
+
+N__OC__Request_template::N__OC__Request_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+N__OC__Request_template::N__OC__Request_template(const N__OC__Request& other_value)
+{
+copy_value(other_value);
+}
+
+N__OC__Request_template::N__OC__Request_template(const OPTIONAL<N__OC__Request>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__OC__Request&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_OC_Request from an unbound optional field.");
+}
+}
+
+N__OC__Request_template::N__OC__Request_template(const N__OC__Request_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+N__OC__Request_template::~N__OC__Request_template()
+{
+clean_up();
+}
+
+N__OC__Request_template& N__OC__Request_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+N__OC__Request_template& N__OC__Request_template::operator=(const N__OC__Request& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+N__OC__Request_template& N__OC__Request_template::operator=(const OPTIONAL<N__OC__Request>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__OC__Request&)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 @IsobusNMMessageTypes.N_OC_Request.");
+}
+return *this;
+}
+
+N__OC__Request_template& N__OC__Request_template::operator=(const N__OC__Request_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean N__OC__Request_template::match(const N__OC__Request& 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.msgFunction().is_bound()) return FALSE;
+if(!single_value->field_msgFunction.match(other_value.msgFunction(), legacy))return FALSE;
+if(!other_value.portPair().is_bound()) return FALSE;
+if(!single_value->field_portPair.match(other_value.portPair(), legacy))return FALSE;
+if(!other_value.nameOfCF().is_bound()) return FALSE;
+if(!single_value->field_nameOfCF.match(other_value.nameOfCF(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_OC_Request.");
+}
+return FALSE;
+}
+
+boolean N__OC__Request_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_msgFunction.is_bound()
+
+ ||single_value->field_portPair.is_bound()
+
+ ||single_value->field_nameOfCF.is_bound()
+;
+}
+
+boolean N__OC__Request_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_msgFunction.is_value()
+ &&single_value->field_portPair.is_value()
+ &&single_value->field_nameOfCF.is_value();
+}
+
+void N__OC__Request_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+N__OC__Request N__OC__Request_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 @IsobusNMMessageTypes.N_OC_Request.");
+N__OC__Request ret_val;
+if (single_value->field_msgFunction.is_bound()) {
+ret_val.msgFunction() = single_value->field_msgFunction.valueof();
+}
+if (single_value->field_portPair.is_bound()) {
+ret_val.portPair() = single_value->field_portPair.valueof();
+}
+if (single_value->field_nameOfCF.is_bound()) {
+ret_val.nameOfCF() = single_value->field_nameOfCF.valueof();
+}
+return ret_val;
+}
+
+void N__OC__Request_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.N_OC_Request.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new N__OC__Request_template[list_length];
+}
+
+N__OC__Request_template& N__OC__Request_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_OC_Request.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.N_OC_Request.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& N__OC__Request_template::msgFunction()
+{
+set_specific();
+return single_value->field_msgFunction;
+}
+
+const INTEGER_template& N__OC__Request_template::msgFunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field msgFunction of a non-specific template of type @IsobusNMMessageTypes.N_OC_Request.");
+return single_value->field_msgFunction;
+}
+
+PortPair_template& N__OC__Request_template::portPair()
+{
+set_specific();
+return single_value->field_portPair;
+}
+
+const PortPair_template& N__OC__Request_template::portPair() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field portPair of a non-specific template of type @IsobusNMMessageTypes.N_OC_Request.");
+return single_value->field_portPair;
+}
+
+NAME_template& N__OC__Request_template::nameOfCF()
+{
+set_specific();
+return single_value->field_nameOfCF;
+}
+
+const NAME_template& N__OC__Request_template::nameOfCF() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field nameOfCF of a non-specific template of type @IsobusNMMessageTypes.N_OC_Request.");
+return single_value->field_nameOfCF;
+}
+
+int N__OC__Request_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_OC_Request 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 @IsobusNMMessageTypes.N_OC_Request 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 @IsobusNMMessageTypes.N_OC_Request containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_OC_Request containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_OC_Request containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_OC_Request containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_OC_Request.");
+  }
+  return 0;
+}
+
+void N__OC__Request_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ msgFunction := ");
+single_value->field_msgFunction.log();
+TTCN_Logger::log_event_str(", portPair := ");
+single_value->field_portPair.log();
+TTCN_Logger::log_event_str(", nameOfCF := ");
+single_value->field_nameOfCF.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void N__OC__Request_template::log_match(const N__OC__Request& 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_msgFunction.match(match_value.msgFunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".msgFunction");
+single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_portPair.match(match_value.portPair(), legacy)){
+TTCN_Logger::log_logmatch_info(".portPair");
+single_value->field_portPair.log_match(match_value.portPair(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_nameOfCF.match(match_value.nameOfCF(), legacy)){
+TTCN_Logger::log_logmatch_info(".nameOfCF");
+single_value->field_nameOfCF.log_match(match_value.nameOfCF(), 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("{ msgFunction := ");
+single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy);
+TTCN_Logger::log_event_str(", portPair := ");
+single_value->field_portPair.log_match(match_value.portPair(), legacy);
+TTCN_Logger::log_event_str(", nameOfCF := ");
+single_value->field_nameOfCF.log_match(match_value.nameOfCF(), 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 N__OC__Request_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_msgFunction.encode_text(text_buf);
+single_value->field_portPair.encode_text(text_buf);
+single_value->field_nameOfCF.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 @IsobusNMMessageTypes.N_OC_Request.");
+}
+}
+
+void N__OC__Request_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_msgFunction.decode_text(text_buf);
+single_value->field_portPair.decode_text(text_buf);
+single_value->field_nameOfCF.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 N__OC__Request_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 @IsobusNMMessageTypes.N_OC_Request.");
+}
+}
+
+void N__OC__Request_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: {
+    N__OC__Request_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusNMMessageTypes.N_OC_Request 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) msgFunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) nameOfCF().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(), "msgFunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgFunction().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(), "portPair")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          portPair().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(), "nameOfCF")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          nameOfCF().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 @IsobusNMMessageTypes.N_OC_Request: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusNMMessageTypes.N_OC_Request");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void N__OC__Request_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_msgFunction.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_OC_Request");
+single_value->field_portPair.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_OC_Request");
+single_value->field_nameOfCF.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_OC_Request");
+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 : "@IsobusNMMessageTypes.N_OC_Request");
+}
+
+boolean N__OC__Request_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean N__OC__Request_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+N__CC__Request::N__CC__Request()
+{
+}
+
+N__CC__Request::N__CC__Request(const INTEGER& par_msgFunction,
+    const PortPair& par_portPair,
+    const NAME& par_nameOfCF)
+  :   field_msgFunction(par_msgFunction),
+  field_portPair(par_portPair),
+  field_nameOfCF(par_nameOfCF)
+{
+}
+
+N__CC__Request::N__CC__Request(const N__CC__Request& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_CC_Request.");
+if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction();
+else field_msgFunction.clean_up();
+if (other_value.portPair().is_bound()) field_portPair = other_value.portPair();
+else field_portPair.clean_up();
+if (other_value.nameOfCF().is_bound()) field_nameOfCF = other_value.nameOfCF();
+else field_nameOfCF.clean_up();
+}
+
+void N__CC__Request::clean_up()
+{
+field_msgFunction.clean_up();
+field_portPair.clean_up();
+field_nameOfCF.clean_up();
+}
+
+const TTCN_Typedescriptor_t* N__CC__Request::get_descriptor() const { return &N__CC__Request_descr_; }
+N__CC__Request& N__CC__Request::operator=(const N__CC__Request& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.N_CC_Request.");
+  if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction();
+  else field_msgFunction.clean_up();
+  if (other_value.portPair().is_bound()) field_portPair = other_value.portPair();
+  else field_portPair.clean_up();
+  if (other_value.nameOfCF().is_bound()) field_nameOfCF = other_value.nameOfCF();
+  else field_nameOfCF.clean_up();
+}
+return *this;
+}
+
+boolean N__CC__Request::operator==(const N__CC__Request& other_value) const
+{
+return field_msgFunction==other_value.field_msgFunction
+  && field_portPair==other_value.field_portPair
+  && field_nameOfCF==other_value.field_nameOfCF;
+}
+
+boolean N__CC__Request::is_bound() const
+{
+return (field_msgFunction.is_bound())
+  || (field_portPair.is_bound())
+  || (field_nameOfCF.is_bound());
+}
+boolean N__CC__Request::is_value() const
+{
+return field_msgFunction.is_value()
+  && field_portPair.is_value()
+  && field_nameOfCF.is_value();
+}
+void N__CC__Request::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ msgFunction := ");
+field_msgFunction.log();
+TTCN_Logger::log_event_str(", portPair := ");
+field_portPair.log();
+TTCN_Logger::log_event_str(", nameOfCF := ");
+field_nameOfCF.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void N__CC__Request::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 @IsobusNMMessageTypes.N_CC_Request 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) msgFunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) nameOfCF().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(), "msgFunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgFunction().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(), "portPair")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          portPair().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(), "nameOfCF")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          nameOfCF().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 @IsobusNMMessageTypes.N_CC_Request: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusNMMessageTypes.N_CC_Request");
+  }
+}
+
+void N__CC__Request::set_implicit_omit()
+{
+if (msgFunction().is_bound()) msgFunction().set_implicit_omit();
+if (portPair().is_bound()) portPair().set_implicit_omit();
+if (nameOfCF().is_bound()) nameOfCF().set_implicit_omit();
+}
+
+void N__CC__Request::encode_text(Text_Buf& text_buf) const
+{
+field_msgFunction.encode_text(text_buf);
+field_portPair.encode_text(text_buf);
+field_nameOfCF.encode_text(text_buf);
+}
+
+void N__CC__Request::decode_text(Text_Buf& text_buf)
+{
+field_msgFunction.decode_text(text_buf);
+field_portPair.decode_text(text_buf);
+field_nameOfCF.decode_text(text_buf);
+}
+
+void N__CC__Request::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void N__CC__Request::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int N__CC__Request::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, Function_descr_.raw->forceomit);
+  decoded_field_length = field_msgFunction.RAW_decode(Function_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, PortPair_descr_.raw->forceomit);
+  decoded_field_length = field_portPair.RAW_decode(PortPair_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, NAME_descr_.raw->forceomit);
+  decoded_field_length = field_nameOfCF.RAW_decode(NAME_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 N__CC__Request::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, Function_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PortPair_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, NAME_descr_.raw);
+  encoded_length += field_msgFunction.RAW_encode(Function_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_portPair.RAW_encode(PortPair_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_nameOfCF.RAW_encode(NAME_descr_, *myleaf.body.node.nodes[2]);
+  return myleaf.length = encoded_length;
+}
+
+struct N__CC__Request_template::single_value_struct {
+INTEGER_template field_msgFunction;
+PortPair_template field_portPair;
+NAME_template field_nameOfCF;
+};
+
+void N__CC__Request_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_msgFunction = ANY_VALUE;
+single_value->field_portPair = ANY_VALUE;
+single_value->field_nameOfCF = ANY_VALUE;
+}
+}
+}
+
+void N__CC__Request_template::copy_value(const N__CC__Request& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.msgFunction().is_bound()) {
+  single_value->field_msgFunction = other_value.msgFunction();
+} else {
+  single_value->field_msgFunction.clean_up();
+}
+if (other_value.portPair().is_bound()) {
+  single_value->field_portPair = other_value.portPair();
+} else {
+  single_value->field_portPair.clean_up();
+}
+if (other_value.nameOfCF().is_bound()) {
+  single_value->field_nameOfCF = other_value.nameOfCF();
+} else {
+  single_value->field_nameOfCF.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void N__CC__Request_template::copy_template(const N__CC__Request_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.msgFunction().get_selection()) {
+single_value->field_msgFunction = other_value.msgFunction();
+} else {
+single_value->field_msgFunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.portPair().get_selection()) {
+single_value->field_portPair = other_value.portPair();
+} else {
+single_value->field_portPair.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.nameOfCF().get_selection()) {
+single_value->field_nameOfCF = other_value.nameOfCF();
+} else {
+single_value->field_nameOfCF.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new N__CC__Request_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_CC_Request.");
+break;
+}
+set_selection(other_value);
+}
+
+N__CC__Request_template::N__CC__Request_template()
+{
+}
+
+N__CC__Request_template::N__CC__Request_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+N__CC__Request_template::N__CC__Request_template(const N__CC__Request& other_value)
+{
+copy_value(other_value);
+}
+
+N__CC__Request_template::N__CC__Request_template(const OPTIONAL<N__CC__Request>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__CC__Request&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_CC_Request from an unbound optional field.");
+}
+}
+
+N__CC__Request_template::N__CC__Request_template(const N__CC__Request_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+N__CC__Request_template::~N__CC__Request_template()
+{
+clean_up();
+}
+
+N__CC__Request_template& N__CC__Request_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+N__CC__Request_template& N__CC__Request_template::operator=(const N__CC__Request& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+N__CC__Request_template& N__CC__Request_template::operator=(const OPTIONAL<N__CC__Request>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__CC__Request&)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 @IsobusNMMessageTypes.N_CC_Request.");
+}
+return *this;
+}
+
+N__CC__Request_template& N__CC__Request_template::operator=(const N__CC__Request_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean N__CC__Request_template::match(const N__CC__Request& 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.msgFunction().is_bound()) return FALSE;
+if(!single_value->field_msgFunction.match(other_value.msgFunction(), legacy))return FALSE;
+if(!other_value.portPair().is_bound()) return FALSE;
+if(!single_value->field_portPair.match(other_value.portPair(), legacy))return FALSE;
+if(!other_value.nameOfCF().is_bound()) return FALSE;
+if(!single_value->field_nameOfCF.match(other_value.nameOfCF(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_CC_Request.");
+}
+return FALSE;
+}
+
+boolean N__CC__Request_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_msgFunction.is_bound()
+
+ ||single_value->field_portPair.is_bound()
+
+ ||single_value->field_nameOfCF.is_bound()
+;
+}
+
+boolean N__CC__Request_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_msgFunction.is_value()
+ &&single_value->field_portPair.is_value()
+ &&single_value->field_nameOfCF.is_value();
+}
+
+void N__CC__Request_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+N__CC__Request N__CC__Request_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 @IsobusNMMessageTypes.N_CC_Request.");
+N__CC__Request ret_val;
+if (single_value->field_msgFunction.is_bound()) {
+ret_val.msgFunction() = single_value->field_msgFunction.valueof();
+}
+if (single_value->field_portPair.is_bound()) {
+ret_val.portPair() = single_value->field_portPair.valueof();
+}
+if (single_value->field_nameOfCF.is_bound()) {
+ret_val.nameOfCF() = single_value->field_nameOfCF.valueof();
+}
+return ret_val;
+}
+
+void N__CC__Request_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.N_CC_Request.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new N__CC__Request_template[list_length];
+}
+
+N__CC__Request_template& N__CC__Request_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_CC_Request.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.N_CC_Request.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& N__CC__Request_template::msgFunction()
+{
+set_specific();
+return single_value->field_msgFunction;
+}
+
+const INTEGER_template& N__CC__Request_template::msgFunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field msgFunction of a non-specific template of type @IsobusNMMessageTypes.N_CC_Request.");
+return single_value->field_msgFunction;
+}
+
+PortPair_template& N__CC__Request_template::portPair()
+{
+set_specific();
+return single_value->field_portPair;
+}
+
+const PortPair_template& N__CC__Request_template::portPair() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field portPair of a non-specific template of type @IsobusNMMessageTypes.N_CC_Request.");
+return single_value->field_portPair;
+}
+
+NAME_template& N__CC__Request_template::nameOfCF()
+{
+set_specific();
+return single_value->field_nameOfCF;
+}
+
+const NAME_template& N__CC__Request_template::nameOfCF() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field nameOfCF of a non-specific template of type @IsobusNMMessageTypes.N_CC_Request.");
+return single_value->field_nameOfCF;
+}
+
+int N__CC__Request_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_CC_Request 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 @IsobusNMMessageTypes.N_CC_Request 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 @IsobusNMMessageTypes.N_CC_Request containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_CC_Request containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_CC_Request containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_CC_Request containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_CC_Request.");
+  }
+  return 0;
+}
+
+void N__CC__Request_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ msgFunction := ");
+single_value->field_msgFunction.log();
+TTCN_Logger::log_event_str(", portPair := ");
+single_value->field_portPair.log();
+TTCN_Logger::log_event_str(", nameOfCF := ");
+single_value->field_nameOfCF.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void N__CC__Request_template::log_match(const N__CC__Request& 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_msgFunction.match(match_value.msgFunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".msgFunction");
+single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_portPair.match(match_value.portPair(), legacy)){
+TTCN_Logger::log_logmatch_info(".portPair");
+single_value->field_portPair.log_match(match_value.portPair(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_nameOfCF.match(match_value.nameOfCF(), legacy)){
+TTCN_Logger::log_logmatch_info(".nameOfCF");
+single_value->field_nameOfCF.log_match(match_value.nameOfCF(), 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("{ msgFunction := ");
+single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy);
+TTCN_Logger::log_event_str(", portPair := ");
+single_value->field_portPair.log_match(match_value.portPair(), legacy);
+TTCN_Logger::log_event_str(", nameOfCF := ");
+single_value->field_nameOfCF.log_match(match_value.nameOfCF(), 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 N__CC__Request_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_msgFunction.encode_text(text_buf);
+single_value->field_portPair.encode_text(text_buf);
+single_value->field_nameOfCF.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 @IsobusNMMessageTypes.N_CC_Request.");
+}
+}
+
+void N__CC__Request_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_msgFunction.decode_text(text_buf);
+single_value->field_portPair.decode_text(text_buf);
+single_value->field_nameOfCF.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 N__CC__Request_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 @IsobusNMMessageTypes.N_CC_Request.");
+}
+}
+
+void N__CC__Request_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: {
+    N__CC__Request_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusNMMessageTypes.N_CC_Request 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) msgFunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) nameOfCF().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(), "msgFunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgFunction().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(), "portPair")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          portPair().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(), "nameOfCF")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          nameOfCF().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 @IsobusNMMessageTypes.N_CC_Request: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusNMMessageTypes.N_CC_Request");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void N__CC__Request_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_msgFunction.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_CC_Request");
+single_value->field_portPair.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_CC_Request");
+single_value->field_nameOfCF.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_CC_Request");
+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 : "@IsobusNMMessageTypes.N_CC_Request");
+}
+
+boolean N__CC__Request_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean N__CC__Request_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+e__Status::e__Status()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+e__Status::e__Status(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @IsobusNMMessageTypes.e_Status with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+e__Status::e__Status(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+e__Status::e__Status(const e__Status& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @IsobusNMMessageTypes.e_Status.");
+enum_value = other_value.enum_value;
+}
+
+e__Status& e__Status::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @IsobusNMMessageTypes.e_Status.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+e__Status& e__Status::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+e__Status& e__Status::operator=(const e__Status& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusNMMessageTypes.e_Status.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean e__Status::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_Status.");
+return enum_value == other_value;
+}
+
+boolean e__Status::operator==(const e__Status& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_Status.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_Status.");
+return enum_value == other_value.enum_value;
+}
+
+boolean e__Status::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_Status.");
+return enum_value < other_value;
+}
+
+boolean e__Status::operator<(const e__Status& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_Status.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_Status.");
+return enum_value < other_value.enum_value;
+}
+
+boolean e__Status::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_Status.");
+return enum_value > other_value;
+}
+
+boolean e__Status::operator>(const e__Status& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_Status.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_Status.");
+return enum_value > other_value.enum_value;
+}
+
+const char *e__Status::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case failure: return "failure";
+case success: return "success";
+default: return "<unknown>";
+}
+}
+
+e__Status::enum_type e__Status::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "failure")) return failure;
+else if (!strcmp(str_par, "success")) return success;
+else return UNKNOWN_VALUE;
+}
+
+boolean e__Status::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 0:
+case 1:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int e__Status::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusNMMessageTypes.e_Status.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int e__Status::enum2int(const e__Status& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusNMMessageTypes.e_Status.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void e__Status::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @IsobusNMMessageTypes.e_Status.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+e__Status::operator e__Status::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @IsobusNMMessageTypes.e_Status.");
+return enum_value;
+}
+
+void e__Status::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void e__Status::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@IsobusNMMessageTypes.e_Status");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @IsobusNMMessageTypes.e_Status.");
+  }
+}
+
+void e__Status::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @IsobusNMMessageTypes.e_Status.");
+text_buf.push_int(enum_value);
+}
+
+void e__Status::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @IsobusNMMessageTypes.e_Status.", enum_value);
+}
+
+void e__Status::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void e__Status::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int e__Status::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*)
+{
+  int decoded_value = 0;
+  int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 2, no_err);
+  if (decoded_length < 0) return decoded_length;
+  if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value;
+  else {
+    if(no_err){
+     return -1;
+    } else {
+    TTCN_EncDec_ErrorContext::error
+      (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name);
+    enum_value = UNKNOWN_VALUE;
+    }
+  }
+  return decoded_length;
+}
+
+int e__Status::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const
+{
+  return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 2);
+}
+
+void e__Status_template::copy_template(const e__Status_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new e__Status_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @IsobusNMMessageTypes.e_Status.");
+}
+}
+
+e__Status_template::e__Status_template()
+{
+}
+
+e__Status_template::e__Status_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+e__Status_template::e__Status_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!e__Status::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @IsobusNMMessageTypes.e_Status with unknown numeric value %d.", other_value);
+single_value = (e__Status::enum_type)other_value;
+}
+
+e__Status_template::e__Status_template(e__Status::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+e__Status_template::e__Status_template(const e__Status& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == e__Status::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @IsobusNMMessageTypes.e_Status.");
+single_value = other_value.enum_value;
+}
+
+e__Status_template::e__Status_template(const OPTIONAL<e__Status>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__Status::enum_type)(const e__Status&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @IsobusNMMessageTypes.e_Status from an unbound optional field.");
+}
+}
+
+e__Status_template::e__Status_template(const e__Status_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+e__Status_template::~e__Status_template()
+{
+clean_up();
+}
+
+boolean e__Status_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean e__Status_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != e__Status::UNBOUND_VALUE;
+}
+
+void e__Status_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+e__Status_template& e__Status_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+e__Status_template& e__Status_template::operator=(int other_value)
+{
+if (!e__Status::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @IsobusNMMessageTypes.e_Status.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (e__Status::enum_type)other_value;
+return *this;
+}
+
+e__Status_template& e__Status_template::operator=(e__Status::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+e__Status_template& e__Status_template::operator=(const e__Status& other_value)
+{
+if (other_value.enum_value == e__Status::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusNMMessageTypes.e_Status to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+e__Status_template& e__Status_template::operator=(const OPTIONAL<e__Status>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__Status::enum_type)(const e__Status&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @IsobusNMMessageTypes.e_Status.");
+}
+return *this;
+}
+
+e__Status_template& e__Status_template::operator=(const e__Status_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean e__Status_template::match(e__Status::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @IsobusNMMessageTypes.e_Status.");
+}
+return FALSE;
+}
+
+boolean e__Status_template::match(const e__Status& other_value, boolean) const
+{
+if (other_value.enum_value == e__Status::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @IsobusNMMessageTypes.e_Status with an unbound value.");
+return match(other_value.enum_value);
+}
+
+e__Status::enum_type e__Status_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @IsobusNMMessageTypes.e_Status.");
+return single_value;
+}
+
+void e__Status_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @IsobusNMMessageTypes.e_Status.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new e__Status_template[list_length];
+}
+
+e__Status_template& e__Status_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @IsobusNMMessageTypes.e_Status.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @IsobusNMMessageTypes.e_Status.");
+return value_list.list_value[list_index];
+}
+
+void e__Status_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(e__Status::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void e__Status_template::log_match(const e__Status& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void e__Status_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @IsobusNMMessageTypes.e_Status.");
+}
+}
+
+void e__Status_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (e__Status::enum_type)text_buf.pull_int().get_val();
+if (!e__Status::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @IsobusNMMessageTypes.e_Status.", single_value);
+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 e__Status_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @IsobusNMMessageTypes.e_Status.");
+}
+}
+
+boolean e__Status_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean e__Status_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 e__Status_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    e__Status_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    e__Status::enum_type enum_val = e__Status::str_to_enum(m_p->get_enumerated());
+    if (!e__Status::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @IsobusNMMessageTypes.e_Status.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@IsobusNMMessageTypes.e_Status");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void e__Status_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@IsobusNMMessageTypes.e_Status");
+}
+
+e__FailureReasonCode::e__FailureReasonCode()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+e__FailureReasonCode::e__FailureReasonCode(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+e__FailureReasonCode::e__FailureReasonCode(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+e__FailureReasonCode::e__FailureReasonCode(const e__FailureReasonCode& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode.");
+enum_value = other_value.enum_value;
+}
+
+e__FailureReasonCode& e__FailureReasonCode::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+e__FailureReasonCode& e__FailureReasonCode::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+e__FailureReasonCode& e__FailureReasonCode::operator=(const e__FailureReasonCode& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean e__FailureReasonCode::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode.");
+return enum_value == other_value;
+}
+
+boolean e__FailureReasonCode::operator==(const e__FailureReasonCode& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode.");
+return enum_value == other_value.enum_value;
+}
+
+boolean e__FailureReasonCode::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode.");
+return enum_value < other_value;
+}
+
+boolean e__FailureReasonCode::operator<(const e__FailureReasonCode& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode.");
+return enum_value < other_value.enum_value;
+}
+
+boolean e__FailureReasonCode::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode.");
+return enum_value > other_value;
+}
+
+boolean e__FailureReasonCode::operator>(const e__FailureReasonCode& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode.");
+return enum_value > other_value.enum_value;
+}
+
+const char *e__FailureReasonCode::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case cannotFindCFwithNAME: return "cannotFindCFwithNAME";
+case numberOfConnectionsToNAMEexceeded: return "numberOfConnectionsToNAMEexceeded";
+case numberOfConnectionsToNIUexceeded: return "numberOfConnectionsToNIUexceeded";
+case busy: return "busy";
+case requestTypeNotSupported: return "requestTypeNotSupported";
+case notAvailable: return "notAvailable";
+default: return "<unknown>";
+}
+}
+
+e__FailureReasonCode::enum_type e__FailureReasonCode::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "cannotFindCFwithNAME")) return cannotFindCFwithNAME;
+else if (!strcmp(str_par, "numberOfConnectionsToNAMEexceeded")) return numberOfConnectionsToNAMEexceeded;
+else if (!strcmp(str_par, "numberOfConnectionsToNIUexceeded")) return numberOfConnectionsToNIUexceeded;
+else if (!strcmp(str_par, "busy")) return busy;
+else if (!strcmp(str_par, "requestTypeNotSupported")) return requestTypeNotSupported;
+else if (!strcmp(str_par, "notAvailable")) return notAvailable;
+else return UNKNOWN_VALUE;
+}
+
+boolean e__FailureReasonCode::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 0:
+case 1:
+case 2:
+case 3:
+case 4:
+case 255:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int e__FailureReasonCode::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int e__FailureReasonCode::enum2int(const e__FailureReasonCode& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void e__FailureReasonCode::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+e__FailureReasonCode::operator e__FailureReasonCode::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode.");
+return enum_value;
+}
+
+void e__FailureReasonCode::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void e__FailureReasonCode::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@IsobusNMMessageTypes.e_FailureReasonCode");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @IsobusNMMessageTypes.e_FailureReasonCode.");
+  }
+}
+
+void e__FailureReasonCode::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode.");
+text_buf.push_int(enum_value);
+}
+
+void e__FailureReasonCode::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @IsobusNMMessageTypes.e_FailureReasonCode.", enum_value);
+}
+
+void e__FailureReasonCode::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void e__FailureReasonCode::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int e__FailureReasonCode::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*)
+{
+  int decoded_value = 0;
+  int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 8, no_err);
+  if (decoded_length < 0) return decoded_length;
+  if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value;
+  else {
+    if(no_err){
+     return -1;
+    } else {
+    TTCN_EncDec_ErrorContext::error
+      (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name);
+    enum_value = UNKNOWN_VALUE;
+    }
+  }
+  return decoded_length;
+}
+
+int e__FailureReasonCode::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const
+{
+  return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 8);
+}
+
+void e__FailureReasonCode_template::copy_template(const e__FailureReasonCode_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new e__FailureReasonCode_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode.");
+}
+}
+
+e__FailureReasonCode_template::e__FailureReasonCode_template()
+{
+}
+
+e__FailureReasonCode_template::e__FailureReasonCode_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+e__FailureReasonCode_template::e__FailureReasonCode_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!e__FailureReasonCode::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode with unknown numeric value %d.", other_value);
+single_value = (e__FailureReasonCode::enum_type)other_value;
+}
+
+e__FailureReasonCode_template::e__FailureReasonCode_template(e__FailureReasonCode::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+e__FailureReasonCode_template::e__FailureReasonCode_template(const e__FailureReasonCode& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == e__FailureReasonCode::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode.");
+single_value = other_value.enum_value;
+}
+
+e__FailureReasonCode_template::e__FailureReasonCode_template(const OPTIONAL<e__FailureReasonCode>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__FailureReasonCode::enum_type)(const e__FailureReasonCode&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode from an unbound optional field.");
+}
+}
+
+e__FailureReasonCode_template::e__FailureReasonCode_template(const e__FailureReasonCode_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+e__FailureReasonCode_template::~e__FailureReasonCode_template()
+{
+clean_up();
+}
+
+boolean e__FailureReasonCode_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean e__FailureReasonCode_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != e__FailureReasonCode::UNBOUND_VALUE;
+}
+
+void e__FailureReasonCode_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+e__FailureReasonCode_template& e__FailureReasonCode_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+e__FailureReasonCode_template& e__FailureReasonCode_template::operator=(int other_value)
+{
+if (!e__FailureReasonCode::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (e__FailureReasonCode::enum_type)other_value;
+return *this;
+}
+
+e__FailureReasonCode_template& e__FailureReasonCode_template::operator=(e__FailureReasonCode::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+e__FailureReasonCode_template& e__FailureReasonCode_template::operator=(const e__FailureReasonCode& other_value)
+{
+if (other_value.enum_value == e__FailureReasonCode::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+e__FailureReasonCode_template& e__FailureReasonCode_template::operator=(const OPTIONAL<e__FailureReasonCode>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__FailureReasonCode::enum_type)(const e__FailureReasonCode&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode.");
+}
+return *this;
+}
+
+e__FailureReasonCode_template& e__FailureReasonCode_template::operator=(const e__FailureReasonCode_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean e__FailureReasonCode_template::match(e__FailureReasonCode::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode.");
+}
+return FALSE;
+}
+
+boolean e__FailureReasonCode_template::match(const e__FailureReasonCode& other_value, boolean) const
+{
+if (other_value.enum_value == e__FailureReasonCode::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode with an unbound value.");
+return match(other_value.enum_value);
+}
+
+e__FailureReasonCode::enum_type e__FailureReasonCode_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode.");
+return single_value;
+}
+
+void e__FailureReasonCode_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new e__FailureReasonCode_template[list_length];
+}
+
+e__FailureReasonCode_template& e__FailureReasonCode_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode.");
+return value_list.list_value[list_index];
+}
+
+void e__FailureReasonCode_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(e__FailureReasonCode::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void e__FailureReasonCode_template::log_match(const e__FailureReasonCode& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void e__FailureReasonCode_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode.");
+}
+}
+
+void e__FailureReasonCode_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (e__FailureReasonCode::enum_type)text_buf.pull_int().get_val();
+if (!e__FailureReasonCode::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode.", single_value);
+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 e__FailureReasonCode_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @IsobusNMMessageTypes.e_FailureReasonCode.");
+}
+}
+
+boolean e__FailureReasonCode_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean e__FailureReasonCode_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 e__FailureReasonCode_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    e__FailureReasonCode_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    e__FailureReasonCode::enum_type enum_val = e__FailureReasonCode::str_to_enum(m_p->get_enumerated());
+    if (!e__FailureReasonCode::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @IsobusNMMessageTypes.e_FailureReasonCode.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@IsobusNMMessageTypes.e_FailureReasonCode");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void e__FailureReasonCode_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@IsobusNMMessageTypes.e_FailureReasonCode");
+}
+
+N__OC__Response::N__OC__Response()
+{
+}
+
+N__OC__Response::N__OC__Response(const INTEGER& par_msgFunction,
+    const PortPair& par_portPair,
+    const e__Status& par_status,
+    const e__FailureReasonCode& par_failureReasonCode)
+  :   field_msgFunction(par_msgFunction),
+  field_portPair(par_portPair),
+  field_status(par_status),
+  field_failureReasonCode(par_failureReasonCode)
+{
+}
+
+N__OC__Response::N__OC__Response(const N__OC__Response& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_OC_Response.");
+if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction();
+else field_msgFunction.clean_up();
+if (other_value.portPair().is_bound()) field_portPair = other_value.portPair();
+else field_portPair.clean_up();
+if (other_value.status().is_bound()) field_status = other_value.status();
+else field_status.clean_up();
+if (other_value.failureReasonCode().is_bound()) field_failureReasonCode = other_value.failureReasonCode();
+else field_failureReasonCode.clean_up();
+}
+
+void N__OC__Response::clean_up()
+{
+field_msgFunction.clean_up();
+field_portPair.clean_up();
+field_status.clean_up();
+field_failureReasonCode.clean_up();
+}
+
+const TTCN_Typedescriptor_t* N__OC__Response::get_descriptor() const { return &N__OC__Response_descr_; }
+N__OC__Response& N__OC__Response::operator=(const N__OC__Response& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.N_OC_Response.");
+  if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction();
+  else field_msgFunction.clean_up();
+  if (other_value.portPair().is_bound()) field_portPair = other_value.portPair();
+  else field_portPair.clean_up();
+  if (other_value.status().is_bound()) field_status = other_value.status();
+  else field_status.clean_up();
+  if (other_value.failureReasonCode().is_bound()) field_failureReasonCode = other_value.failureReasonCode();
+  else field_failureReasonCode.clean_up();
+}
+return *this;
+}
+
+boolean N__OC__Response::operator==(const N__OC__Response& other_value) const
+{
+return field_msgFunction==other_value.field_msgFunction
+  && field_portPair==other_value.field_portPair
+  && field_status==other_value.field_status
+  && field_failureReasonCode==other_value.field_failureReasonCode;
+}
+
+boolean N__OC__Response::is_bound() const
+{
+return (field_msgFunction.is_bound())
+  || (field_portPair.is_bound())
+  || (field_status.is_bound())
+  || (field_failureReasonCode.is_bound());
+}
+boolean N__OC__Response::is_value() const
+{
+return field_msgFunction.is_value()
+  && field_portPair.is_value()
+  && field_status.is_value()
+  && field_failureReasonCode.is_value();
+}
+void N__OC__Response::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ msgFunction := ");
+field_msgFunction.log();
+TTCN_Logger::log_event_str(", portPair := ");
+field_portPair.log();
+TTCN_Logger::log_event_str(", status := ");
+field_status.log();
+TTCN_Logger::log_event_str(", failureReasonCode := ");
+field_failureReasonCode.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void N__OC__Response::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 @IsobusNMMessageTypes.N_OC_Response 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) msgFunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) status().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) failureReasonCode().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(), "msgFunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgFunction().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(), "portPair")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          portPair().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(), "status")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          status().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(), "failureReasonCode")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          failureReasonCode().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 @IsobusNMMessageTypes.N_OC_Response: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusNMMessageTypes.N_OC_Response");
+  }
+}
+
+void N__OC__Response::set_implicit_omit()
+{
+if (msgFunction().is_bound()) msgFunction().set_implicit_omit();
+if (portPair().is_bound()) portPair().set_implicit_omit();
+if (status().is_bound()) status().set_implicit_omit();
+if (failureReasonCode().is_bound()) failureReasonCode().set_implicit_omit();
+}
+
+void N__OC__Response::encode_text(Text_Buf& text_buf) const
+{
+field_msgFunction.encode_text(text_buf);
+field_portPair.encode_text(text_buf);
+field_status.encode_text(text_buf);
+field_failureReasonCode.encode_text(text_buf);
+}
+
+void N__OC__Response::decode_text(Text_Buf& text_buf)
+{
+field_msgFunction.decode_text(text_buf);
+field_portPair.decode_text(text_buf);
+field_status.decode_text(text_buf);
+field_failureReasonCode.decode_text(text_buf);
+}
+
+void N__OC__Response::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void N__OC__Response::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int N__OC__Response::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, Function_descr_.raw->forceomit);
+  decoded_field_length = field_msgFunction.RAW_decode(Function_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, PortPair_descr_.raw->forceomit);
+  decoded_field_length = field_portPair.RAW_decode(PortPair_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, e__Status_descr_.raw->forceomit);
+  decoded_field_length = field_status.RAW_decode(e__Status_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, e__FailureReasonCode_descr_.raw->forceomit);
+  decoded_field_length = field_failureReasonCode.RAW_decode(e__FailureReasonCode_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int N__OC__Response::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, Function_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PortPair_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, e__Status_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, e__FailureReasonCode_descr_.raw);
+  encoded_length += field_msgFunction.RAW_encode(Function_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_portPair.RAW_encode(PortPair_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_status.RAW_encode(e__Status_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_failureReasonCode.RAW_encode(e__FailureReasonCode_descr_, *myleaf.body.node.nodes[3]);
+  return myleaf.length = encoded_length;
+}
+
+struct N__OC__Response_template::single_value_struct {
+INTEGER_template field_msgFunction;
+PortPair_template field_portPair;
+e__Status_template field_status;
+e__FailureReasonCode_template field_failureReasonCode;
+};
+
+void N__OC__Response_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_msgFunction = ANY_VALUE;
+single_value->field_portPair = ANY_VALUE;
+single_value->field_status = ANY_VALUE;
+single_value->field_failureReasonCode = ANY_VALUE;
+}
+}
+}
+
+void N__OC__Response_template::copy_value(const N__OC__Response& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.msgFunction().is_bound()) {
+  single_value->field_msgFunction = other_value.msgFunction();
+} else {
+  single_value->field_msgFunction.clean_up();
+}
+if (other_value.portPair().is_bound()) {
+  single_value->field_portPair = other_value.portPair();
+} else {
+  single_value->field_portPair.clean_up();
+}
+if (other_value.status().is_bound()) {
+  single_value->field_status = other_value.status();
+} else {
+  single_value->field_status.clean_up();
+}
+if (other_value.failureReasonCode().is_bound()) {
+  single_value->field_failureReasonCode = other_value.failureReasonCode();
+} else {
+  single_value->field_failureReasonCode.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void N__OC__Response_template::copy_template(const N__OC__Response_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.msgFunction().get_selection()) {
+single_value->field_msgFunction = other_value.msgFunction();
+} else {
+single_value->field_msgFunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.portPair().get_selection()) {
+single_value->field_portPair = other_value.portPair();
+} else {
+single_value->field_portPair.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.status().get_selection()) {
+single_value->field_status = other_value.status();
+} else {
+single_value->field_status.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.failureReasonCode().get_selection()) {
+single_value->field_failureReasonCode = other_value.failureReasonCode();
+} else {
+single_value->field_failureReasonCode.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new N__OC__Response_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_OC_Response.");
+break;
+}
+set_selection(other_value);
+}
+
+N__OC__Response_template::N__OC__Response_template()
+{
+}
+
+N__OC__Response_template::N__OC__Response_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+N__OC__Response_template::N__OC__Response_template(const N__OC__Response& other_value)
+{
+copy_value(other_value);
+}
+
+N__OC__Response_template::N__OC__Response_template(const OPTIONAL<N__OC__Response>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__OC__Response&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_OC_Response from an unbound optional field.");
+}
+}
+
+N__OC__Response_template::N__OC__Response_template(const N__OC__Response_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+N__OC__Response_template::~N__OC__Response_template()
+{
+clean_up();
+}
+
+N__OC__Response_template& N__OC__Response_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+N__OC__Response_template& N__OC__Response_template::operator=(const N__OC__Response& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+N__OC__Response_template& N__OC__Response_template::operator=(const OPTIONAL<N__OC__Response>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__OC__Response&)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 @IsobusNMMessageTypes.N_OC_Response.");
+}
+return *this;
+}
+
+N__OC__Response_template& N__OC__Response_template::operator=(const N__OC__Response_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean N__OC__Response_template::match(const N__OC__Response& 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.msgFunction().is_bound()) return FALSE;
+if(!single_value->field_msgFunction.match(other_value.msgFunction(), legacy))return FALSE;
+if(!other_value.portPair().is_bound()) return FALSE;
+if(!single_value->field_portPair.match(other_value.portPair(), legacy))return FALSE;
+if(!other_value.status().is_bound()) return FALSE;
+if(!single_value->field_status.match(other_value.status(), legacy))return FALSE;
+if(!other_value.failureReasonCode().is_bound()) return FALSE;
+if(!single_value->field_failureReasonCode.match(other_value.failureReasonCode(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_OC_Response.");
+}
+return FALSE;
+}
+
+boolean N__OC__Response_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_msgFunction.is_bound()
+
+ ||single_value->field_portPair.is_bound()
+
+ ||single_value->field_status.is_bound()
+
+ ||single_value->field_failureReasonCode.is_bound()
+;
+}
+
+boolean N__OC__Response_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_msgFunction.is_value()
+ &&single_value->field_portPair.is_value()
+ &&single_value->field_status.is_value()
+ &&single_value->field_failureReasonCode.is_value();
+}
+
+void N__OC__Response_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+N__OC__Response N__OC__Response_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 @IsobusNMMessageTypes.N_OC_Response.");
+N__OC__Response ret_val;
+if (single_value->field_msgFunction.is_bound()) {
+ret_val.msgFunction() = single_value->field_msgFunction.valueof();
+}
+if (single_value->field_portPair.is_bound()) {
+ret_val.portPair() = single_value->field_portPair.valueof();
+}
+if (single_value->field_status.is_bound()) {
+ret_val.status() = single_value->field_status.valueof();
+}
+if (single_value->field_failureReasonCode.is_bound()) {
+ret_val.failureReasonCode() = single_value->field_failureReasonCode.valueof();
+}
+return ret_val;
+}
+
+void N__OC__Response_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.N_OC_Response.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new N__OC__Response_template[list_length];
+}
+
+N__OC__Response_template& N__OC__Response_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_OC_Response.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.N_OC_Response.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& N__OC__Response_template::msgFunction()
+{
+set_specific();
+return single_value->field_msgFunction;
+}
+
+const INTEGER_template& N__OC__Response_template::msgFunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field msgFunction of a non-specific template of type @IsobusNMMessageTypes.N_OC_Response.");
+return single_value->field_msgFunction;
+}
+
+PortPair_template& N__OC__Response_template::portPair()
+{
+set_specific();
+return single_value->field_portPair;
+}
+
+const PortPair_template& N__OC__Response_template::portPair() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field portPair of a non-specific template of type @IsobusNMMessageTypes.N_OC_Response.");
+return single_value->field_portPair;
+}
+
+e__Status_template& N__OC__Response_template::status()
+{
+set_specific();
+return single_value->field_status;
+}
+
+const e__Status_template& N__OC__Response_template::status() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field status of a non-specific template of type @IsobusNMMessageTypes.N_OC_Response.");
+return single_value->field_status;
+}
+
+e__FailureReasonCode_template& N__OC__Response_template::failureReasonCode()
+{
+set_specific();
+return single_value->field_failureReasonCode;
+}
+
+const e__FailureReasonCode_template& N__OC__Response_template::failureReasonCode() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field failureReasonCode of a non-specific template of type @IsobusNMMessageTypes.N_OC_Response.");
+return single_value->field_failureReasonCode;
+}
+
+int N__OC__Response_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_OC_Response 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 @IsobusNMMessageTypes.N_OC_Response 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 @IsobusNMMessageTypes.N_OC_Response containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_OC_Response containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_OC_Response containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_OC_Response containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_OC_Response.");
+  }
+  return 0;
+}
+
+void N__OC__Response_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ msgFunction := ");
+single_value->field_msgFunction.log();
+TTCN_Logger::log_event_str(", portPair := ");
+single_value->field_portPair.log();
+TTCN_Logger::log_event_str(", status := ");
+single_value->field_status.log();
+TTCN_Logger::log_event_str(", failureReasonCode := ");
+single_value->field_failureReasonCode.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void N__OC__Response_template::log_match(const N__OC__Response& 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_msgFunction.match(match_value.msgFunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".msgFunction");
+single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_portPair.match(match_value.portPair(), legacy)){
+TTCN_Logger::log_logmatch_info(".portPair");
+single_value->field_portPair.log_match(match_value.portPair(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_status.match(match_value.status(), legacy)){
+TTCN_Logger::log_logmatch_info(".status");
+single_value->field_status.log_match(match_value.status(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_failureReasonCode.match(match_value.failureReasonCode(), legacy)){
+TTCN_Logger::log_logmatch_info(".failureReasonCode");
+single_value->field_failureReasonCode.log_match(match_value.failureReasonCode(), 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("{ msgFunction := ");
+single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy);
+TTCN_Logger::log_event_str(", portPair := ");
+single_value->field_portPair.log_match(match_value.portPair(), legacy);
+TTCN_Logger::log_event_str(", status := ");
+single_value->field_status.log_match(match_value.status(), legacy);
+TTCN_Logger::log_event_str(", failureReasonCode := ");
+single_value->field_failureReasonCode.log_match(match_value.failureReasonCode(), 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 N__OC__Response_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_msgFunction.encode_text(text_buf);
+single_value->field_portPair.encode_text(text_buf);
+single_value->field_status.encode_text(text_buf);
+single_value->field_failureReasonCode.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 @IsobusNMMessageTypes.N_OC_Response.");
+}
+}
+
+void N__OC__Response_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_msgFunction.decode_text(text_buf);
+single_value->field_portPair.decode_text(text_buf);
+single_value->field_status.decode_text(text_buf);
+single_value->field_failureReasonCode.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 N__OC__Response_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 @IsobusNMMessageTypes.N_OC_Response.");
+}
+}
+
+void N__OC__Response_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: {
+    N__OC__Response_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusNMMessageTypes.N_OC_Response 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) msgFunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) status().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) failureReasonCode().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(), "msgFunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgFunction().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(), "portPair")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          portPair().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(), "status")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          status().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(), "failureReasonCode")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          failureReasonCode().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 @IsobusNMMessageTypes.N_OC_Response: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusNMMessageTypes.N_OC_Response");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void N__OC__Response_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_msgFunction.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_OC_Response");
+single_value->field_portPair.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_OC_Response");
+single_value->field_status.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_OC_Response");
+single_value->field_failureReasonCode.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_OC_Response");
+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 : "@IsobusNMMessageTypes.N_OC_Response");
+}
+
+boolean N__OC__Response_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean N__OC__Response_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+N__CC__Response::N__CC__Response()
+{
+}
+
+N__CC__Response::N__CC__Response(const INTEGER& par_msgFunction,
+    const PortPair& par_portPair,
+    const e__Status& par_status,
+    const e__FailureReasonCode& par_failureReasonCode)
+  :   field_msgFunction(par_msgFunction),
+  field_portPair(par_portPair),
+  field_status(par_status),
+  field_failureReasonCode(par_failureReasonCode)
+{
+}
+
+N__CC__Response::N__CC__Response(const N__CC__Response& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusNMMessageTypes.N_CC_Response.");
+if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction();
+else field_msgFunction.clean_up();
+if (other_value.portPair().is_bound()) field_portPair = other_value.portPair();
+else field_portPair.clean_up();
+if (other_value.status().is_bound()) field_status = other_value.status();
+else field_status.clean_up();
+if (other_value.failureReasonCode().is_bound()) field_failureReasonCode = other_value.failureReasonCode();
+else field_failureReasonCode.clean_up();
+}
+
+void N__CC__Response::clean_up()
+{
+field_msgFunction.clean_up();
+field_portPair.clean_up();
+field_status.clean_up();
+field_failureReasonCode.clean_up();
+}
+
+const TTCN_Typedescriptor_t* N__CC__Response::get_descriptor() const { return &N__CC__Response_descr_; }
+N__CC__Response& N__CC__Response::operator=(const N__CC__Response& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusNMMessageTypes.N_CC_Response.");
+  if (other_value.msgFunction().is_bound()) field_msgFunction = other_value.msgFunction();
+  else field_msgFunction.clean_up();
+  if (other_value.portPair().is_bound()) field_portPair = other_value.portPair();
+  else field_portPair.clean_up();
+  if (other_value.status().is_bound()) field_status = other_value.status();
+  else field_status.clean_up();
+  if (other_value.failureReasonCode().is_bound()) field_failureReasonCode = other_value.failureReasonCode();
+  else field_failureReasonCode.clean_up();
+}
+return *this;
+}
+
+boolean N__CC__Response::operator==(const N__CC__Response& other_value) const
+{
+return field_msgFunction==other_value.field_msgFunction
+  && field_portPair==other_value.field_portPair
+  && field_status==other_value.field_status
+  && field_failureReasonCode==other_value.field_failureReasonCode;
+}
+
+boolean N__CC__Response::is_bound() const
+{
+return (field_msgFunction.is_bound())
+  || (field_portPair.is_bound())
+  || (field_status.is_bound())
+  || (field_failureReasonCode.is_bound());
+}
+boolean N__CC__Response::is_value() const
+{
+return field_msgFunction.is_value()
+  && field_portPair.is_value()
+  && field_status.is_value()
+  && field_failureReasonCode.is_value();
+}
+void N__CC__Response::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ msgFunction := ");
+field_msgFunction.log();
+TTCN_Logger::log_event_str(", portPair := ");
+field_portPair.log();
+TTCN_Logger::log_event_str(", status := ");
+field_status.log();
+TTCN_Logger::log_event_str(", failureReasonCode := ");
+field_failureReasonCode.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void N__CC__Response::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 @IsobusNMMessageTypes.N_CC_Response 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) msgFunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) status().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) failureReasonCode().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(), "msgFunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgFunction().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(), "portPair")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          portPair().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(), "status")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          status().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(), "failureReasonCode")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          failureReasonCode().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 @IsobusNMMessageTypes.N_CC_Response: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusNMMessageTypes.N_CC_Response");
+  }
+}
+
+void N__CC__Response::set_implicit_omit()
+{
+if (msgFunction().is_bound()) msgFunction().set_implicit_omit();
+if (portPair().is_bound()) portPair().set_implicit_omit();
+if (status().is_bound()) status().set_implicit_omit();
+if (failureReasonCode().is_bound()) failureReasonCode().set_implicit_omit();
+}
+
+void N__CC__Response::encode_text(Text_Buf& text_buf) const
+{
+field_msgFunction.encode_text(text_buf);
+field_portPair.encode_text(text_buf);
+field_status.encode_text(text_buf);
+field_failureReasonCode.encode_text(text_buf);
+}
+
+void N__CC__Response::decode_text(Text_Buf& text_buf)
+{
+field_msgFunction.decode_text(text_buf);
+field_portPair.decode_text(text_buf);
+field_status.decode_text(text_buf);
+field_failureReasonCode.decode_text(text_buf);
+}
+
+void N__CC__Response::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void N__CC__Response::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int N__CC__Response::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, Function_descr_.raw->forceomit);
+  decoded_field_length = field_msgFunction.RAW_decode(Function_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, PortPair_descr_.raw->forceomit);
+  decoded_field_length = field_portPair.RAW_decode(PortPair_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, e__Status_descr_.raw->forceomit);
+  decoded_field_length = field_status.RAW_decode(e__Status_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, e__FailureReasonCode_descr_.raw->forceomit);
+  decoded_field_length = field_failureReasonCode.RAW_decode(e__FailureReasonCode_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int N__CC__Response::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, Function_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PortPair_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, e__Status_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, e__FailureReasonCode_descr_.raw);
+  encoded_length += field_msgFunction.RAW_encode(Function_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_portPair.RAW_encode(PortPair_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_status.RAW_encode(e__Status_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_failureReasonCode.RAW_encode(e__FailureReasonCode_descr_, *myleaf.body.node.nodes[3]);
+  return myleaf.length = encoded_length;
+}
+
+struct N__CC__Response_template::single_value_struct {
+INTEGER_template field_msgFunction;
+PortPair_template field_portPair;
+e__Status_template field_status;
+e__FailureReasonCode_template field_failureReasonCode;
+};
+
+void N__CC__Response_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_msgFunction = ANY_VALUE;
+single_value->field_portPair = ANY_VALUE;
+single_value->field_status = ANY_VALUE;
+single_value->field_failureReasonCode = ANY_VALUE;
+}
+}
+}
+
+void N__CC__Response_template::copy_value(const N__CC__Response& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.msgFunction().is_bound()) {
+  single_value->field_msgFunction = other_value.msgFunction();
+} else {
+  single_value->field_msgFunction.clean_up();
+}
+if (other_value.portPair().is_bound()) {
+  single_value->field_portPair = other_value.portPair();
+} else {
+  single_value->field_portPair.clean_up();
+}
+if (other_value.status().is_bound()) {
+  single_value->field_status = other_value.status();
+} else {
+  single_value->field_status.clean_up();
+}
+if (other_value.failureReasonCode().is_bound()) {
+  single_value->field_failureReasonCode = other_value.failureReasonCode();
+} else {
+  single_value->field_failureReasonCode.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void N__CC__Response_template::copy_template(const N__CC__Response_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.msgFunction().get_selection()) {
+single_value->field_msgFunction = other_value.msgFunction();
+} else {
+single_value->field_msgFunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.portPair().get_selection()) {
+single_value->field_portPair = other_value.portPair();
+} else {
+single_value->field_portPair.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.status().get_selection()) {
+single_value->field_status = other_value.status();
+} else {
+single_value->field_status.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.failureReasonCode().get_selection()) {
+single_value->field_failureReasonCode = other_value.failureReasonCode();
+} else {
+single_value->field_failureReasonCode.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new N__CC__Response_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_CC_Response.");
+break;
+}
+set_selection(other_value);
+}
+
+N__CC__Response_template::N__CC__Response_template()
+{
+}
+
+N__CC__Response_template::N__CC__Response_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+N__CC__Response_template::N__CC__Response_template(const N__CC__Response& other_value)
+{
+copy_value(other_value);
+}
+
+N__CC__Response_template::N__CC__Response_template(const OPTIONAL<N__CC__Response>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__CC__Response&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusNMMessageTypes.N_CC_Response from an unbound optional field.");
+}
+}
+
+N__CC__Response_template::N__CC__Response_template(const N__CC__Response_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+N__CC__Response_template::~N__CC__Response_template()
+{
+clean_up();
+}
+
+N__CC__Response_template& N__CC__Response_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+N__CC__Response_template& N__CC__Response_template::operator=(const N__CC__Response& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+N__CC__Response_template& N__CC__Response_template::operator=(const OPTIONAL<N__CC__Response>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const N__CC__Response&)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 @IsobusNMMessageTypes.N_CC_Response.");
+}
+return *this;
+}
+
+N__CC__Response_template& N__CC__Response_template::operator=(const N__CC__Response_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean N__CC__Response_template::match(const N__CC__Response& 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.msgFunction().is_bound()) return FALSE;
+if(!single_value->field_msgFunction.match(other_value.msgFunction(), legacy))return FALSE;
+if(!other_value.portPair().is_bound()) return FALSE;
+if(!single_value->field_portPair.match(other_value.portPair(), legacy))return FALSE;
+if(!other_value.status().is_bound()) return FALSE;
+if(!single_value->field_status.match(other_value.status(), legacy))return FALSE;
+if(!other_value.failureReasonCode().is_bound()) return FALSE;
+if(!single_value->field_failureReasonCode.match(other_value.failureReasonCode(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_CC_Response.");
+}
+return FALSE;
+}
+
+boolean N__CC__Response_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_msgFunction.is_bound()
+
+ ||single_value->field_portPair.is_bound()
+
+ ||single_value->field_status.is_bound()
+
+ ||single_value->field_failureReasonCode.is_bound()
+;
+}
+
+boolean N__CC__Response_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_msgFunction.is_value()
+ &&single_value->field_portPair.is_value()
+ &&single_value->field_status.is_value()
+ &&single_value->field_failureReasonCode.is_value();
+}
+
+void N__CC__Response_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+N__CC__Response N__CC__Response_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 @IsobusNMMessageTypes.N_CC_Response.");
+N__CC__Response ret_val;
+if (single_value->field_msgFunction.is_bound()) {
+ret_val.msgFunction() = single_value->field_msgFunction.valueof();
+}
+if (single_value->field_portPair.is_bound()) {
+ret_val.portPair() = single_value->field_portPair.valueof();
+}
+if (single_value->field_status.is_bound()) {
+ret_val.status() = single_value->field_status.valueof();
+}
+if (single_value->field_failureReasonCode.is_bound()) {
+ret_val.failureReasonCode() = single_value->field_failureReasonCode.valueof();
+}
+return ret_val;
+}
+
+void N__CC__Response_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusNMMessageTypes.N_CC_Response.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new N__CC__Response_template[list_length];
+}
+
+N__CC__Response_template& N__CC__Response_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusNMMessageTypes.N_CC_Response.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusNMMessageTypes.N_CC_Response.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& N__CC__Response_template::msgFunction()
+{
+set_specific();
+return single_value->field_msgFunction;
+}
+
+const INTEGER_template& N__CC__Response_template::msgFunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field msgFunction of a non-specific template of type @IsobusNMMessageTypes.N_CC_Response.");
+return single_value->field_msgFunction;
+}
+
+PortPair_template& N__CC__Response_template::portPair()
+{
+set_specific();
+return single_value->field_portPair;
+}
+
+const PortPair_template& N__CC__Response_template::portPair() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field portPair of a non-specific template of type @IsobusNMMessageTypes.N_CC_Response.");
+return single_value->field_portPair;
+}
+
+e__Status_template& N__CC__Response_template::status()
+{
+set_specific();
+return single_value->field_status;
+}
+
+const e__Status_template& N__CC__Response_template::status() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field status of a non-specific template of type @IsobusNMMessageTypes.N_CC_Response.");
+return single_value->field_status;
+}
+
+e__FailureReasonCode_template& N__CC__Response_template::failureReasonCode()
+{
+set_specific();
+return single_value->field_failureReasonCode;
+}
+
+const e__FailureReasonCode_template& N__CC__Response_template::failureReasonCode() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field failureReasonCode of a non-specific template of type @IsobusNMMessageTypes.N_CC_Response.");
+return single_value->field_failureReasonCode;
+}
+
+int N__CC__Response_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_CC_Response 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 @IsobusNMMessageTypes.N_CC_Response 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 @IsobusNMMessageTypes.N_CC_Response containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_CC_Response containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_CC_Response containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusNMMessageTypes.N_CC_Response containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusNMMessageTypes.N_CC_Response.");
+  }
+  return 0;
+}
+
+void N__CC__Response_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ msgFunction := ");
+single_value->field_msgFunction.log();
+TTCN_Logger::log_event_str(", portPair := ");
+single_value->field_portPair.log();
+TTCN_Logger::log_event_str(", status := ");
+single_value->field_status.log();
+TTCN_Logger::log_event_str(", failureReasonCode := ");
+single_value->field_failureReasonCode.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void N__CC__Response_template::log_match(const N__CC__Response& 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_msgFunction.match(match_value.msgFunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".msgFunction");
+single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_portPair.match(match_value.portPair(), legacy)){
+TTCN_Logger::log_logmatch_info(".portPair");
+single_value->field_portPair.log_match(match_value.portPair(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_status.match(match_value.status(), legacy)){
+TTCN_Logger::log_logmatch_info(".status");
+single_value->field_status.log_match(match_value.status(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_failureReasonCode.match(match_value.failureReasonCode(), legacy)){
+TTCN_Logger::log_logmatch_info(".failureReasonCode");
+single_value->field_failureReasonCode.log_match(match_value.failureReasonCode(), 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("{ msgFunction := ");
+single_value->field_msgFunction.log_match(match_value.msgFunction(), legacy);
+TTCN_Logger::log_event_str(", portPair := ");
+single_value->field_portPair.log_match(match_value.portPair(), legacy);
+TTCN_Logger::log_event_str(", status := ");
+single_value->field_status.log_match(match_value.status(), legacy);
+TTCN_Logger::log_event_str(", failureReasonCode := ");
+single_value->field_failureReasonCode.log_match(match_value.failureReasonCode(), 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 N__CC__Response_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_msgFunction.encode_text(text_buf);
+single_value->field_portPair.encode_text(text_buf);
+single_value->field_status.encode_text(text_buf);
+single_value->field_failureReasonCode.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 @IsobusNMMessageTypes.N_CC_Response.");
+}
+}
+
+void N__CC__Response_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_msgFunction.decode_text(text_buf);
+single_value->field_portPair.decode_text(text_buf);
+single_value->field_status.decode_text(text_buf);
+single_value->field_failureReasonCode.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 N__CC__Response_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 @IsobusNMMessageTypes.N_CC_Response.");
+}
+}
+
+void N__CC__Response_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: {
+    N__CC__Response_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusNMMessageTypes.N_CC_Response 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) msgFunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) portPair().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) status().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) failureReasonCode().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(), "msgFunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          msgFunction().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(), "portPair")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          portPair().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(), "status")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          status().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(), "failureReasonCode")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          failureReasonCode().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 @IsobusNMMessageTypes.N_CC_Response: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusNMMessageTypes.N_CC_Response");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void N__CC__Response_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_msgFunction.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_CC_Response");
+single_value->field_portPair.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_CC_Response");
+single_value->field_status.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_CC_Response");
+single_value->field_failureReasonCode.check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.N_CC_Response");
+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 : "@IsobusNMMessageTypes.N_CC_Response");
+}
+
+boolean N__CC__Response_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean N__CC__Response_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 NetworkMessage::copy_value(const NetworkMessage& other_value)
+{
+switch (other_value.union_selection) {
+case ALT_n__MFDB__Request:
+field_n__MFDB__Request = new N__MFDB__Request(*other_value.field_n__MFDB__Request);
+break;
+case ALT_n__MFDB__Response:
+field_n__MFDB__Response = new N__MFDB__Response(*other_value.field_n__MFDB__Response);
+break;
+case ALT_n__MFDB__Add:
+field_n__MFDB__Add = new N__MFDB__Add(*other_value.field_n__MFDB__Add);
+break;
+case ALT_n__MFDB__Delete:
+field_n__MFDB__Delete = new N__MFDB__Delete(*other_value.field_n__MFDB__Delete);
+break;
+case ALT_n__MFDB__Clear:
+field_n__MFDB__Clear = new N__MFDB__Clear(*other_value.field_n__MFDB__Clear);
+break;
+case ALT_n__MFDB__Create__Entry:
+field_n__MFDB__Create__Entry = new N__MFDB__Create__Entry(*other_value.field_n__MFDB__Create__Entry);
+break;
+case ALT_n__MFDBNQ__Add:
+field_n__MFDBNQ__Add = new N__MFDBNQ__Add(*other_value.field_n__MFDBNQ__Add);
+break;
+case ALT_n__NT__Request:
+field_n__NT__Request = new N__NT__Request(*other_value.field_n__NT__Request);
+break;
+case ALT_n__NT__Response:
+field_n__NT__Response = new N__NT__Response(*other_value.field_n__NT__Response);
+break;
+case ALT_n__NTX__Request:
+field_n__NTX__Request = new N__NTX__Request(*other_value.field_n__NTX__Request);
+break;
+case ALT_n__NTX__Response:
+field_n__NTX__Response = new N__NTX__Response(*other_value.field_n__NTX__Response);
+break;
+case ALT_n__GP__Request:
+field_n__GP__Request = new N__GP__Request(*other_value.field_n__GP__Request);
+break;
+case ALT_n__GP__Response:
+field_n__GP__Response = new N__GP__Response(*other_value.field_n__GP__Response);
+break;
+case ALT_n__GP__Reset__Statistics:
+field_n__GP__Reset__Statistics = new N__GP__Reset__Statistics(*other_value.field_n__GP__Reset__Statistics);
+break;
+case ALT_n__SP__Request:
+field_n__SP__Request = new N__SP__Request(*other_value.field_n__SP__Request);
+break;
+case ALT_n__SP__Response:
+field_n__SP__Response = new N__SP__Response(*other_value.field_n__SP__Response);
+break;
+case ALT_n__SP__Reset__Statistics:
+field_n__SP__Reset__Statistics = new N__SP__Reset__Statistics(*other_value.field_n__SP__Reset__Statistics);
+break;
+case ALT_n__OC__Request:
+field_n__OC__Request = new N__OC__Request(*other_value.field_n__OC__Request);
+break;
+case ALT_n__OC__Response:
+field_n__OC__Response = new N__OC__Response(*other_value.field_n__OC__Response);
+break;
+case ALT_n__CC__Request:
+field_n__CC__Request = new N__CC__Request(*other_value.field_n__CC__Request);
+break;
+case ALT_n__CC__Response:
+field_n__CC__Response = new N__CC__Response(*other_value.field_n__CC__Response);
+break;
+default:
+TTCN_error("Assignment of an unbound union value of type @IsobusNMMessageTypes.NetworkMessage.");
+}
+union_selection = other_value.union_selection;
+}
+
+NetworkMessage::NetworkMessage()
+{
+union_selection = UNBOUND_VALUE;
+}
+
+NetworkMessage::NetworkMessage(const NetworkMessage& other_value)
+: Base_Type(){
+copy_value(other_value);
+}
+
+NetworkMessage::~NetworkMessage()
+{
+clean_up();
+}
+
+NetworkMessage& NetworkMessage::operator=(const NetworkMessage& other_value)
+{
+if (this != &other_value) {
+clean_up();
+copy_value(other_value);
+}
+return *this;
+}
+
+boolean NetworkMessage::operator==(const NetworkMessage& other_value) const
+{
+if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @IsobusNMMessageTypes.NetworkMessage.");
+if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @IsobusNMMessageTypes.NetworkMessage.");
+if (union_selection != other_value.union_selection) return FALSE;
+switch (union_selection) {
+case ALT_n__MFDB__Request:
+return *field_n__MFDB__Request == *other_value.field_n__MFDB__Request;
+case ALT_n__MFDB__Response:
+return *field_n__MFDB__Response == *other_value.field_n__MFDB__Response;
+case ALT_n__MFDB__Add:
+return *field_n__MFDB__Add == *other_value.field_n__MFDB__Add;
+case ALT_n__MFDB__Delete:
+return *field_n__MFDB__Delete == *other_value.field_n__MFDB__Delete;
+case ALT_n__MFDB__Clear:
+return *field_n__MFDB__Clear == *other_value.field_n__MFDB__Clear;
+case ALT_n__MFDB__Create__Entry:
+return *field_n__MFDB__Create__Entry == *other_value.field_n__MFDB__Create__Entry;
+case ALT_n__MFDBNQ__Add:
+return *field_n__MFDBNQ__Add == *other_value.field_n__MFDBNQ__Add;
+case ALT_n__NT__Request:
+return *field_n__NT__Request == *other_value.field_n__NT__Request;
+case ALT_n__NT__Response:
+return *field_n__NT__Response == *other_value.field_n__NT__Response;
+case ALT_n__NTX__Request:
+return *field_n__NTX__Request == *other_value.field_n__NTX__Request;
+case ALT_n__NTX__Response:
+return *field_n__NTX__Response == *other_value.field_n__NTX__Response;
+case ALT_n__GP__Request:
+return *field_n__GP__Request == *other_value.field_n__GP__Request;
+case ALT_n__GP__Response:
+return *field_n__GP__Response == *other_value.field_n__GP__Response;
+case ALT_n__GP__Reset__Statistics:
+return *field_n__GP__Reset__Statistics == *other_value.field_n__GP__Reset__Statistics;
+case ALT_n__SP__Request:
+return *field_n__SP__Request == *other_value.field_n__SP__Request;
+case ALT_n__SP__Response:
+return *field_n__SP__Response == *other_value.field_n__SP__Response;
+case ALT_n__SP__Reset__Statistics:
+return *field_n__SP__Reset__Statistics == *other_value.field_n__SP__Reset__Statistics;
+case ALT_n__OC__Request:
+return *field_n__OC__Request == *other_value.field_n__OC__Request;
+case ALT_n__OC__Response:
+return *field_n__OC__Response == *other_value.field_n__OC__Response;
+case ALT_n__CC__Request:
+return *field_n__CC__Request == *other_value.field_n__CC__Request;
+case ALT_n__CC__Response:
+return *field_n__CC__Response == *other_value.field_n__CC__Response;
+default:
+return FALSE;
+}
+}
+
+N__MFDB__Request& NetworkMessage::n__MFDB__Request()
+{
+if (union_selection != ALT_n__MFDB__Request) {
+clean_up();
+field_n__MFDB__Request = new N__MFDB__Request;
+union_selection = ALT_n__MFDB__Request;
+}
+return *field_n__MFDB__Request;
+}
+
+const N__MFDB__Request& NetworkMessage::n__MFDB__Request() const
+{
+if (union_selection != ALT_n__MFDB__Request) TTCN_error("Using non-selected field n_MFDB_Request in a value of union type @IsobusNMMessageTypes.NetworkMessage.");
+return *field_n__MFDB__Request;
+}
+
+N__MFDB__Response& NetworkMessage::n__MFDB__Response()
+{
+if (union_selection != ALT_n__MFDB__Response) {
+clean_up();
+field_n__MFDB__Response = new N__MFDB__Response;
+union_selection = ALT_n__MFDB__Response;
+}
+return *field_n__MFDB__Response;
+}
+
+const N__MFDB__Response& NetworkMessage::n__MFDB__Response() const
+{
+if (union_selection != ALT_n__MFDB__Response) TTCN_error("Using non-selected field n_MFDB_Response in a value of union type @IsobusNMMessageTypes.NetworkMessage.");
+return *field_n__MFDB__Response;
+}
+
+N__MFDB__Add& NetworkMessage::n__MFDB__Add()
+{
+if (union_selection != ALT_n__MFDB__Add) {
+clean_up();
+field_n__MFDB__Add = new N__MFDB__Add;
+union_selection = ALT_n__MFDB__Add;
+}
+return *field_n__MFDB__Add;
+}
+
+const N__MFDB__Add& NetworkMessage::n__MFDB__Add() const
+{
+if (union_selection != ALT_n__MFDB__Add) TTCN_error("Using non-selected field n_MFDB_Add in a value of union type @IsobusNMMessageTypes.NetworkMessage.");
+return *field_n__MFDB__Add;
+}
+
+N__MFDB__Delete& NetworkMessage::n__MFDB__Delete()
+{
+if (union_selection != ALT_n__MFDB__Delete) {
+clean_up();
+field_n__MFDB__Delete = new N__MFDB__Delete;
+union_selection = ALT_n__MFDB__Delete;
+}
+return *field_n__MFDB__Delete;
+}
+
+const N__MFDB__Delete& NetworkMessage::n__MFDB__Delete() const
+{
+if (union_selection != ALT_n__MFDB__Delete) TTCN_error("Using non-selected field n_MFDB_Delete in a value of union type @IsobusNMMessageTypes.NetworkMessage.");
+return *field_n__MFDB__Delete;
+}
+
+N__MFDB__Clear& NetworkMessage::n__MFDB__Clear()
+{
+if (union_selection != ALT_n__MFDB__Clear) {
+clean_up();
+field_n__MFDB__Clear = new N__MFDB__Clear;
+union_selection = ALT_n__MFDB__Clear;
+}
+return *field_n__MFDB__Clear;
+}
+
+const N__MFDB__Clear& NetworkMessage::n__MFDB__Clear() const
+{
+if (union_selection != ALT_n__MFDB__Clear) TTCN_error("Using non-selected field n_MFDB_Clear in a value of union type @IsobusNMMessageTypes.NetworkMessage.");
+return *field_n__MFDB__Clear;
+}
+
+N__MFDB__Create__Entry& NetworkMessage::n__MFDB__Create__Entry()
+{
+if (union_selection != ALT_n__MFDB__Create__Entry) {
+clean_up();
+field_n__MFDB__Create__Entry = new N__MFDB__Create__Entry;
+union_selection = ALT_n__MFDB__Create__Entry;
+}
+return *field_n__MFDB__Create__Entry;
+}
+
+const N__MFDB__Create__Entry& NetworkMessage::n__MFDB__Create__Entry() const
+{
+if (union_selection != ALT_n__MFDB__Create__Entry) TTCN_error("Using non-selected field n_MFDB_Create_Entry in a value of union type @IsobusNMMessageTypes.NetworkMessage.");
+return *field_n__MFDB__Create__Entry;
+}
+
+N__MFDBNQ__Add& NetworkMessage::n__MFDBNQ__Add()
+{
+if (union_selection != ALT_n__MFDBNQ__Add) {
+clean_up();
+field_n__MFDBNQ__Add = new N__MFDBNQ__Add;
+union_selection = ALT_n__MFDBNQ__Add;
+}
+return *field_n__MFDBNQ__Add;
+}
+
+const N__MFDBNQ__Add& NetworkMessage::n__MFDBNQ__Add() const
+{
+if (union_selection != ALT_n__MFDBNQ__Add) TTCN_error("Using non-selected field n_MFDBNQ_Add in a value of union type @IsobusNMMessageTypes.NetworkMessage.");
+return *field_n__MFDBNQ__Add;
+}
+
+N__NT__Request& NetworkMessage::n__NT__Request()
+{
+if (union_selection != ALT_n__NT__Request) {
+clean_up();
+field_n__NT__Request = new N__NT__Request;
+union_selection = ALT_n__NT__Request;
+}
+return *field_n__NT__Request;
+}
+
+const N__NT__Request& NetworkMessage::n__NT__Request() const
+{
+if (union_selection != ALT_n__NT__Request) TTCN_error("Using non-selected field n_NT_Request in a value of union type @IsobusNMMessageTypes.NetworkMessage.");
+return *field_n__NT__Request;
+}
+
+N__NT__Response& NetworkMessage::n__NT__Response()
+{
+if (union_selection != ALT_n__NT__Response) {
+clean_up();
+field_n__NT__Response = new N__NT__Response;
+union_selection = ALT_n__NT__Response;
+}
+return *field_n__NT__Response;
+}
+
+const N__NT__Response& NetworkMessage::n__NT__Response() const
+{
+if (union_selection != ALT_n__NT__Response) TTCN_error("Using non-selected field n_NT_Response in a value of union type @IsobusNMMessageTypes.NetworkMessage.");
+return *field_n__NT__Response;
+}
+
+N__NTX__Request& NetworkMessage::n__NTX__Request()
+{
+if (union_selection != ALT_n__NTX__Request) {
+clean_up();
+field_n__NTX__Request = new N__NTX__Request;
+union_selection = ALT_n__NTX__Request;
+}
+return *field_n__NTX__Request;
+}
+
+const N__NTX__Request& NetworkMessage::n__NTX__Request() const
+{
+if (union_selection != ALT_n__NTX__Request) TTCN_error("Using non-selected field n_NTX_Request in a value of union type @IsobusNMMessageTypes.NetworkMessage.");
+return *field_n__NTX__Request;
+}
+
+N__NTX__Response& NetworkMessage::n__NTX__Response()
+{
+if (union_selection != ALT_n__NTX__Response) {
+clean_up();
+field_n__NTX__Response = new N__NTX__Response;
+union_selection = ALT_n__NTX__Response;
+}
+return *field_n__NTX__Response;
+}
+
+const N__NTX__Response& NetworkMessage::n__NTX__Response() const
+{
+if (union_selection != ALT_n__NTX__Response) TTCN_error("Using non-selected field n_NTX_Response in a value of union type @IsobusNMMessageTypes.NetworkMessage.");
+return *field_n__NTX__Response;
+}
+
+N__GP__Request& NetworkMessage::n__GP__Request()
+{
+if (union_selection != ALT_n__GP__Request) {
+clean_up();
+field_n__GP__Request = new N__GP__Request;
+union_selection = ALT_n__GP__Request;
+}
+return *field_n__GP__Request;
+}
+
+const N__GP__Request& NetworkMessage::n__GP__Request() const
+{
+if (union_selection != ALT_n__GP__Request) TTCN_error("Using non-selected field n_GP_Request in a value of union type @IsobusNMMessageTypes.NetworkMessage.");
+return *field_n__GP__Request;
+}
+
+N__GP__Response& NetworkMessage::n__GP__Response()
+{
+if (union_selection != ALT_n__GP__Response) {
+clean_up();
+field_n__GP__Response = new N__GP__Response;
+union_selection = ALT_n__GP__Response;
+}
+return *field_n__GP__Response;
+}
+
+const N__GP__Response& NetworkMessage::n__GP__Response() const
+{
+if (union_selection != ALT_n__GP__Response) TTCN_error("Using non-selected field n_GP_Response in a value of union type @IsobusNMMessageTypes.NetworkMessage.");
+return *field_n__GP__Response;
+}
+
+N__GP__Reset__Statistics& NetworkMessage::n__GP__Reset__Statistics()
+{
+if (union_selection != ALT_n__GP__Reset__Statistics) {
+clean_up();
+field_n__GP__Reset__Statistics = new N__GP__Reset__Statistics;
+union_selection = ALT_n__GP__Reset__Statistics;
+}
+return *field_n__GP__Reset__Statistics;
+}
+
+const N__GP__Reset__Statistics& NetworkMessage::n__GP__Reset__Statistics() const
+{
+if (union_selection != ALT_n__GP__Reset__Statistics) TTCN_error("Using non-selected field n_GP_Reset_Statistics in a value of union type @IsobusNMMessageTypes.NetworkMessage.");
+return *field_n__GP__Reset__Statistics;
+}
+
+N__SP__Request& NetworkMessage::n__SP__Request()
+{
+if (union_selection != ALT_n__SP__Request) {
+clean_up();
+field_n__SP__Request = new N__SP__Request;
+union_selection = ALT_n__SP__Request;
+}
+return *field_n__SP__Request;
+}
+
+const N__SP__Request& NetworkMessage::n__SP__Request() const
+{
+if (union_selection != ALT_n__SP__Request) TTCN_error("Using non-selected field n_SP_Request in a value of union type @IsobusNMMessageTypes.NetworkMessage.");
+return *field_n__SP__Request;
+}
+
+N__SP__Response& NetworkMessage::n__SP__Response()
+{
+if (union_selection != ALT_n__SP__Response) {
+clean_up();
+field_n__SP__Response = new N__SP__Response;
+union_selection = ALT_n__SP__Response;
+}
+return *field_n__SP__Response;
+}
+
+const N__SP__Response& NetworkMessage::n__SP__Response() const
+{
+if (union_selection != ALT_n__SP__Response) TTCN_error("Using non-selected field n_SP_Response in a value of union type @IsobusNMMessageTypes.NetworkMessage.");
+return *field_n__SP__Response;
+}
+
+N__SP__Reset__Statistics& NetworkMessage::n__SP__Reset__Statistics()
+{
+if (union_selection != ALT_n__SP__Reset__Statistics) {
+clean_up();
+field_n__SP__Reset__Statistics = new N__SP__Reset__Statistics;
+union_selection = ALT_n__SP__Reset__Statistics;
+}
+return *field_n__SP__Reset__Statistics;
+}
+
+const N__SP__Reset__Statistics& NetworkMessage::n__SP__Reset__Statistics() const
+{
+if (union_selection != ALT_n__SP__Reset__Statistics) TTCN_error("Using non-selected field n_SP_Reset_Statistics in a value of union type @IsobusNMMessageTypes.NetworkMessage.");
+return *field_n__SP__Reset__Statistics;
+}
+
+N__OC__Request& NetworkMessage::n__OC__Request()
+{
+if (union_selection != ALT_n__OC__Request) {
+clean_up();
+field_n__OC__Request = new N__OC__Request;
+union_selection = ALT_n__OC__Request;
+}
+return *field_n__OC__Request;
+}
+
+const N__OC__Request& NetworkMessage::n__OC__Request() const
+{
+if (union_selection != ALT_n__OC__Request) TTCN_error("Using non-selected field n_OC_Request in a value of union type @IsobusNMMessageTypes.NetworkMessage.");
+return *field_n__OC__Request;
+}
+
+N__OC__Response& NetworkMessage::n__OC__Response()
+{
+if (union_selection != ALT_n__OC__Response) {
+clean_up();
+field_n__OC__Response = new N__OC__Response;
+union_selection = ALT_n__OC__Response;
+}
+return *field_n__OC__Response;
+}
+
+const N__OC__Response& NetworkMessage::n__OC__Response() const
+{
+if (union_selection != ALT_n__OC__Response) TTCN_error("Using non-selected field n_OC_Response in a value of union type @IsobusNMMessageTypes.NetworkMessage.");
+return *field_n__OC__Response;
+}
+
+N__CC__Request& NetworkMessage::n__CC__Request()
+{
+if (union_selection != ALT_n__CC__Request) {
+clean_up();
+field_n__CC__Request = new N__CC__Request;
+union_selection = ALT_n__CC__Request;
+}
+return *field_n__CC__Request;
+}
+
+const N__CC__Request& NetworkMessage::n__CC__Request() const
+{
+if (union_selection != ALT_n__CC__Request) TTCN_error("Using non-selected field n_CC_Request in a value of union type @IsobusNMMessageTypes.NetworkMessage.");
+return *field_n__CC__Request;
+}
+
+N__CC__Response& NetworkMessage::n__CC__Response()
+{
+if (union_selection != ALT_n__CC__Response) {
+clean_up();
+field_n__CC__Response = new N__CC__Response;
+union_selection = ALT_n__CC__Response;
+}
+return *field_n__CC__Response;
+}
+
+const N__CC__Response& NetworkMessage::n__CC__Response() const
+{
+if (union_selection != ALT_n__CC__Response) TTCN_error("Using non-selected field n_CC_Response in a value of union type @IsobusNMMessageTypes.NetworkMessage.");
+return *field_n__CC__Response;
+}
+
+boolean NetworkMessage::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 @IsobusNMMessageTypes.NetworkMessage.");
+return union_selection == checked_selection;
+}
+
+boolean NetworkMessage::is_bound() const
+{
+  return union_selection != UNBOUND_VALUE;
+}
+
+boolean NetworkMessage::is_value() const
+{
+switch (union_selection) {
+case UNBOUND_VALUE: return FALSE;
+case ALT_n__MFDB__Request: return field_n__MFDB__Request->is_value();
+case ALT_n__MFDB__Response: return field_n__MFDB__Response->is_value();
+case ALT_n__MFDB__Add: return field_n__MFDB__Add->is_value();
+case ALT_n__MFDB__Delete: return field_n__MFDB__Delete->is_value();
+case ALT_n__MFDB__Clear: return field_n__MFDB__Clear->is_value();
+case ALT_n__MFDB__Create__Entry: return field_n__MFDB__Create__Entry->is_value();
+case ALT_n__MFDBNQ__Add: return field_n__MFDBNQ__Add->is_value();
+case ALT_n__NT__Request: return field_n__NT__Request->is_value();
+case ALT_n__NT__Response: return field_n__NT__Response->is_value();
+case ALT_n__NTX__Request: return field_n__NTX__Request->is_value();
+case ALT_n__NTX__Response: return field_n__NTX__Response->is_value();
+case ALT_n__GP__Request: return field_n__GP__Request->is_value();
+case ALT_n__GP__Response: return field_n__GP__Response->is_value();
+case ALT_n__GP__Reset__Statistics: return field_n__GP__Reset__Statistics->is_value();
+case ALT_n__SP__Request: return field_n__SP__Request->is_value();
+case ALT_n__SP__Response: return field_n__SP__Response->is_value();
+case ALT_n__SP__Reset__Statistics: return field_n__SP__Reset__Statistics->is_value();
+case ALT_n__OC__Request: return field_n__OC__Request->is_value();
+case ALT_n__OC__Response: return field_n__OC__Response->is_value();
+case ALT_n__CC__Request: return field_n__CC__Request->is_value();
+case ALT_n__CC__Response: return field_n__CC__Response->is_value();
+default: TTCN_error("Invalid selection in union is_bound");}
+}
+
+void NetworkMessage::clean_up()
+{
+switch (union_selection) {
+case ALT_n__MFDB__Request:
+  delete field_n__MFDB__Request;
+  break;
+case ALT_n__MFDB__Response:
+  delete field_n__MFDB__Response;
+  break;
+case ALT_n__MFDB__Add:
+  delete field_n__MFDB__Add;
+  break;
+case ALT_n__MFDB__Delete:
+  delete field_n__MFDB__Delete;
+  break;
+case ALT_n__MFDB__Clear:
+  delete field_n__MFDB__Clear;
+  break;
+case ALT_n__MFDB__Create__Entry:
+  delete field_n__MFDB__Create__Entry;
+  break;
+case ALT_n__MFDBNQ__Add:
+  delete field_n__MFDBNQ__Add;
+  break;
+case ALT_n__NT__Request:
+  delete field_n__NT__Request;
+  break;
+case ALT_n__NT__Response:
+  delete field_n__NT__Response;
+  break;
+case ALT_n__NTX__Request:
+  delete field_n__NTX__Request;
+  break;
+case ALT_n__NTX__Response:
+  delete field_n__NTX__Response;
+  break;
+case ALT_n__GP__Request:
+  delete field_n__GP__Request;
+  break;
+case ALT_n__GP__Response:
+  delete field_n__GP__Response;
+  break;
+case ALT_n__GP__Reset__Statistics:
+  delete field_n__GP__Reset__Statistics;
+  break;
+case ALT_n__SP__Request:
+  delete field_n__SP__Request;
+  break;
+case ALT_n__SP__Response:
+  delete field_n__SP__Response;
+  break;
+case ALT_n__SP__Reset__Statistics:
+  delete field_n__SP__Reset__Statistics;
+  break;
+case ALT_n__OC__Request:
+  delete field_n__OC__Request;
+  break;
+case ALT_n__OC__Response:
+  delete field_n__OC__Response;
+  break;
+case ALT_n__CC__Request:
+  delete field_n__CC__Request;
+  break;
+case ALT_n__CC__Response:
+  delete field_n__CC__Response;
+  break;
+default:
+  break;
+}
+union_selection = UNBOUND_VALUE;
+}
+
+void NetworkMessage::log() const
+{
+switch (union_selection) {
+case ALT_n__MFDB__Request:
+TTCN_Logger::log_event_str("{ n_MFDB_Request := ");
+field_n__MFDB__Request->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_n__MFDB__Response:
+TTCN_Logger::log_event_str("{ n_MFDB_Response := ");
+field_n__MFDB__Response->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_n__MFDB__Add:
+TTCN_Logger::log_event_str("{ n_MFDB_Add := ");
+field_n__MFDB__Add->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_n__MFDB__Delete:
+TTCN_Logger::log_event_str("{ n_MFDB_Delete := ");
+field_n__MFDB__Delete->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_n__MFDB__Clear:
+TTCN_Logger::log_event_str("{ n_MFDB_Clear := ");
+field_n__MFDB__Clear->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_n__MFDB__Create__Entry:
+TTCN_Logger::log_event_str("{ n_MFDB_Create_Entry := ");
+field_n__MFDB__Create__Entry->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_n__MFDBNQ__Add:
+TTCN_Logger::log_event_str("{ n_MFDBNQ_Add := ");
+field_n__MFDBNQ__Add->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_n__NT__Request:
+TTCN_Logger::log_event_str("{ n_NT_Request := ");
+field_n__NT__Request->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_n__NT__Response:
+TTCN_Logger::log_event_str("{ n_NT_Response := ");
+field_n__NT__Response->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_n__NTX__Request:
+TTCN_Logger::log_event_str("{ n_NTX_Request := ");
+field_n__NTX__Request->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_n__NTX__Response:
+TTCN_Logger::log_event_str("{ n_NTX_Response := ");
+field_n__NTX__Response->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_n__GP__Request:
+TTCN_Logger::log_event_str("{ n_GP_Request := ");
+field_n__GP__Request->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_n__GP__Response:
+TTCN_Logger::log_event_str("{ n_GP_Response := ");
+field_n__GP__Response->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_n__GP__Reset__Statistics:
+TTCN_Logger::log_event_str("{ n_GP_Reset_Statistics := ");
+field_n__GP__Reset__Statistics->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_n__SP__Request:
+TTCN_Logger::log_event_str("{ n_SP_Request := ");
+field_n__SP__Request->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_n__SP__Response:
+TTCN_Logger::log_event_str("{ n_SP_Response := ");
+field_n__SP__Response->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_n__SP__Reset__Statistics:
+TTCN_Logger::log_event_str("{ n_SP_Reset_Statistics := ");
+field_n__SP__Reset__Statistics->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_n__OC__Request:
+TTCN_Logger::log_event_str("{ n_OC_Request := ");
+field_n__OC__Request->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_n__OC__Response:
+TTCN_Logger::log_event_str("{ n_OC_Response := ");
+field_n__OC__Response->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_n__CC__Request:
+TTCN_Logger::log_event_str("{ n_CC_Request := ");
+field_n__CC__Request->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_n__CC__Response:
+TTCN_Logger::log_event_str("{ n_CC_Response := ");
+field_n__CC__Response->log();
+TTCN_Logger::log_event_str(" }");
+break;
+default:
+TTCN_Logger::log_event_unbound();
+}
+}
+
+void NetworkMessage::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, "n_MFDB_Request")) {
+    n__MFDB__Request().set_param(*mp_last);
+    if (!n__MFDB__Request().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "n_MFDB_Response")) {
+    n__MFDB__Response().set_param(*mp_last);
+    if (!n__MFDB__Response().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "n_MFDB_Add")) {
+    n__MFDB__Add().set_param(*mp_last);
+    if (!n__MFDB__Add().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "n_MFDB_Delete")) {
+    n__MFDB__Delete().set_param(*mp_last);
+    if (!n__MFDB__Delete().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "n_MFDB_Clear")) {
+    n__MFDB__Clear().set_param(*mp_last);
+    if (!n__MFDB__Clear().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "n_MFDB_Create_Entry")) {
+    n__MFDB__Create__Entry().set_param(*mp_last);
+    if (!n__MFDB__Create__Entry().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "n_MFDBNQ_Add")) {
+    n__MFDBNQ__Add().set_param(*mp_last);
+    if (!n__MFDBNQ__Add().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "n_NT_Request")) {
+    n__NT__Request().set_param(*mp_last);
+    if (!n__NT__Request().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "n_NT_Response")) {
+    n__NT__Response().set_param(*mp_last);
+    if (!n__NT__Response().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "n_NTX_Request")) {
+    n__NTX__Request().set_param(*mp_last);
+    if (!n__NTX__Request().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "n_NTX_Response")) {
+    n__NTX__Response().set_param(*mp_last);
+    if (!n__NTX__Response().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "n_GP_Request")) {
+    n__GP__Request().set_param(*mp_last);
+    if (!n__GP__Request().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "n_GP_Response")) {
+    n__GP__Response().set_param(*mp_last);
+    if (!n__GP__Response().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "n_GP_Reset_Statistics")) {
+    n__GP__Reset__Statistics().set_param(*mp_last);
+    if (!n__GP__Reset__Statistics().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "n_SP_Request")) {
+    n__SP__Request().set_param(*mp_last);
+    if (!n__SP__Request().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "n_SP_Response")) {
+    n__SP__Response().set_param(*mp_last);
+    if (!n__SP__Response().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "n_SP_Reset_Statistics")) {
+    n__SP__Reset__Statistics().set_param(*mp_last);
+    if (!n__SP__Reset__Statistics().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "n_OC_Request")) {
+    n__OC__Request().set_param(*mp_last);
+    if (!n__OC__Request().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "n_OC_Response")) {
+    n__OC__Response().set_param(*mp_last);
+    if (!n__OC__Response().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "n_CC_Request")) {
+    n__CC__Request().set_param(*mp_last);
+    if (!n__CC__Request().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "n_CC_Response")) {
+    n__CC__Response().set_param(*mp_last);
+    if (!n__CC__Response().is_bound()) clean_up();
+    return;
+  }
+  mp_last->error("Field %s does not exist in type @IsobusNMMessageTypes.NetworkMessage.", last_name);
+}
+
+void NetworkMessage::set_implicit_omit()
+{
+switch (union_selection) {
+case ALT_n__MFDB__Request:
+field_n__MFDB__Request->set_implicit_omit(); break;
+case ALT_n__MFDB__Response:
+field_n__MFDB__Response->set_implicit_omit(); break;
+case ALT_n__MFDB__Add:
+field_n__MFDB__Add->set_implicit_omit(); break;
+case ALT_n__MFDB__Delete:
+field_n__MFDB__Delete->set_implicit_omit(); break;
+case ALT_n__MFDB__Clear:
+field_n__MFDB__Clear->set_implicit_omit(); break;
+case ALT_n__MFDB__Create__Entry:
+field_n__MFDB__Create__Entry->set_implicit_omit(); break;
+case ALT_n__MFDBNQ__Add:
+field_n__MFDBNQ__Add->set_implicit_omit(); break;
+case ALT_n__NT__Request:
+field_n__NT__Request->set_implicit_omit(); break;
+case ALT_n__NT__Response:
+field_n__NT__Response->set_implicit_omit(); break;
+case ALT_n__NTX__Request:
+field_n__NTX__Request->set_implicit_omit(); break;
+case ALT_n__NTX__Response:
+field_n__NTX__Response->set_implicit_omit(); break;
+case ALT_n__GP__Request:
+field_n__GP__Request->set_implicit_omit(); break;
+case ALT_n__GP__Response:
+field_n__GP__Response->set_implicit_omit(); break;
+case ALT_n__GP__Reset__Statistics:
+field_n__GP__Reset__Statistics->set_implicit_omit(); break;
+case ALT_n__SP__Request:
+field_n__SP__Request->set_implicit_omit(); break;
+case ALT_n__SP__Response:
+field_n__SP__Response->set_implicit_omit(); break;
+case ALT_n__SP__Reset__Statistics:
+field_n__SP__Reset__Statistics->set_implicit_omit(); break;
+case ALT_n__OC__Request:
+field_n__OC__Request->set_implicit_omit(); break;
+case ALT_n__OC__Response:
+field_n__OC__Response->set_implicit_omit(); break;
+case ALT_n__CC__Request:
+field_n__CC__Request->set_implicit_omit(); break;
+case ALT_n__CC__Response:
+field_n__CC__Response->set_implicit_omit(); break;
+default: break;
+}
+}
+
+void NetworkMessage::encode_text(Text_Buf& text_buf) const
+{
+text_buf.push_int(union_selection);
+switch (union_selection) {
+case ALT_n__MFDB__Request:
+field_n__MFDB__Request->encode_text(text_buf);
+break;
+case ALT_n__MFDB__Response:
+field_n__MFDB__Response->encode_text(text_buf);
+break;
+case ALT_n__MFDB__Add:
+field_n__MFDB__Add->encode_text(text_buf);
+break;
+case ALT_n__MFDB__Delete:
+field_n__MFDB__Delete->encode_text(text_buf);
+break;
+case ALT_n__MFDB__Clear:
+field_n__MFDB__Clear->encode_text(text_buf);
+break;
+case ALT_n__MFDB__Create__Entry:
+field_n__MFDB__Create__Entry->encode_text(text_buf);
+break;
+case ALT_n__MFDBNQ__Add:
+field_n__MFDBNQ__Add->encode_text(text_buf);
+break;
+case ALT_n__NT__Request:
+field_n__NT__Request->encode_text(text_buf);
+break;
+case ALT_n__NT__Response:
+field_n__NT__Response->encode_text(text_buf);
+break;
+case ALT_n__NTX__Request:
+field_n__NTX__Request->encode_text(text_buf);
+break;
+case ALT_n__NTX__Response:
+field_n__NTX__Response->encode_text(text_buf);
+break;
+case ALT_n__GP__Request:
+field_n__GP__Request->encode_text(text_buf);
+break;
+case ALT_n__GP__Response:
+field_n__GP__Response->encode_text(text_buf);
+break;
+case ALT_n__GP__Reset__Statistics:
+field_n__GP__Reset__Statistics->encode_text(text_buf);
+break;
+case ALT_n__SP__Request:
+field_n__SP__Request->encode_text(text_buf);
+break;
+case ALT_n__SP__Response:
+field_n__SP__Response->encode_text(text_buf);
+break;
+case ALT_n__SP__Reset__Statistics:
+field_n__SP__Reset__Statistics->encode_text(text_buf);
+break;
+case ALT_n__OC__Request:
+field_n__OC__Request->encode_text(text_buf);
+break;
+case ALT_n__OC__Response:
+field_n__OC__Response->encode_text(text_buf);
+break;
+case ALT_n__CC__Request:
+field_n__CC__Request->encode_text(text_buf);
+break;
+case ALT_n__CC__Response:
+field_n__CC__Response->encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an unbound value of union type @IsobusNMMessageTypes.NetworkMessage.");
+}
+}
+
+void NetworkMessage::decode_text(Text_Buf& text_buf)
+{
+switch ((union_selection_type)text_buf.pull_int().get_val()) {
+case ALT_n__MFDB__Request:
+n__MFDB__Request().decode_text(text_buf);
+break;
+case ALT_n__MFDB__Response:
+n__MFDB__Response().decode_text(text_buf);
+break;
+case ALT_n__MFDB__Add:
+n__MFDB__Add().decode_text(text_buf);
+break;
+case ALT_n__MFDB__Delete:
+n__MFDB__Delete().decode_text(text_buf);
+break;
+case ALT_n__MFDB__Clear:
+n__MFDB__Clear().decode_text(text_buf);
+break;
+case ALT_n__MFDB__Create__Entry:
+n__MFDB__Create__Entry().decode_text(text_buf);
+break;
+case ALT_n__MFDBNQ__Add:
+n__MFDBNQ__Add().decode_text(text_buf);
+break;
+case ALT_n__NT__Request:
+n__NT__Request().decode_text(text_buf);
+break;
+case ALT_n__NT__Response:
+n__NT__Response().decode_text(text_buf);
+break;
+case ALT_n__NTX__Request:
+n__NTX__Request().decode_text(text_buf);
+break;
+case ALT_n__NTX__Response:
+n__NTX__Response().decode_text(text_buf);
+break;
+case ALT_n__GP__Request:
+n__GP__Request().decode_text(text_buf);
+break;
+case ALT_n__GP__Response:
+n__GP__Response().decode_text(text_buf);
+break;
+case ALT_n__GP__Reset__Statistics:
+n__GP__Reset__Statistics().decode_text(text_buf);
+break;
+case ALT_n__SP__Request:
+n__SP__Request().decode_text(text_buf);
+break;
+case ALT_n__SP__Response:
+n__SP__Response().decode_text(text_buf);
+break;
+case ALT_n__SP__Reset__Statistics:
+n__SP__Reset__Statistics().decode_text(text_buf);
+break;
+case ALT_n__OC__Request:
+n__OC__Request().decode_text(text_buf);
+break;
+case ALT_n__OC__Response:
+n__OC__Response().decode_text(text_buf);
+break;
+case ALT_n__CC__Request:
+n__CC__Request().decode_text(text_buf);
+break;
+case ALT_n__CC__Response:
+n__CC__Response().decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for type @IsobusNMMessageTypes.NetworkMessage.");
+}
+}
+
+void NetworkMessage::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void NetworkMessage::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int NetworkMessage::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, N__MFDB__Request_descr_.raw->forceomit);
+      decoded_length = n__MFDB__Request().RAW_decode(N__MFDB__Request_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, N__MFDB__Response_descr_.raw->forceomit);
+      decoded_length = n__MFDB__Response().RAW_decode(N__MFDB__Response_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, N__MFDB__Add_descr_.raw->forceomit);
+      decoded_length = n__MFDB__Add().RAW_decode(N__MFDB__Add_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 3: {
+      RAW_Force_Omit field_force_omit(3, force_omit, N__MFDB__Delete_descr_.raw->forceomit);
+      decoded_length = n__MFDB__Delete().RAW_decode(N__MFDB__Delete_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 4: {
+      RAW_Force_Omit field_force_omit(4, force_omit, N__MFDB__Clear_descr_.raw->forceomit);
+      decoded_length = n__MFDB__Clear().RAW_decode(N__MFDB__Clear_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 5: {
+      RAW_Force_Omit field_force_omit(5, force_omit, N__MFDB__Create__Entry_descr_.raw->forceomit);
+      decoded_length = n__MFDB__Create__Entry().RAW_decode(N__MFDB__Create__Entry_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 6: {
+      RAW_Force_Omit field_force_omit(6, force_omit, N__MFDBNQ__Add_descr_.raw->forceomit);
+      decoded_length = n__MFDBNQ__Add().RAW_decode(N__MFDBNQ__Add_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 7: {
+      RAW_Force_Omit field_force_omit(7, force_omit, N__NT__Request_descr_.raw->forceomit);
+      decoded_length = n__NT__Request().RAW_decode(N__NT__Request_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 8: {
+      RAW_Force_Omit field_force_omit(8, force_omit, N__NT__Response_descr_.raw->forceomit);
+      decoded_length = n__NT__Response().RAW_decode(N__NT__Response_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 9: {
+      RAW_Force_Omit field_force_omit(9, force_omit, N__NTX__Request_descr_.raw->forceomit);
+      decoded_length = n__NTX__Request().RAW_decode(N__NTX__Request_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 10: {
+      RAW_Force_Omit field_force_omit(10, force_omit, N__NTX__Response_descr_.raw->forceomit);
+      decoded_length = n__NTX__Response().RAW_decode(N__NTX__Response_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 11: {
+      RAW_Force_Omit field_force_omit(11, force_omit, N__GP__Request_descr_.raw->forceomit);
+      decoded_length = n__GP__Request().RAW_decode(N__GP__Request_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 12: {
+      RAW_Force_Omit field_force_omit(12, force_omit, N__GP__Response_descr_.raw->forceomit);
+      decoded_length = n__GP__Response().RAW_decode(N__GP__Response_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 13: {
+      RAW_Force_Omit field_force_omit(13, force_omit, N__GP__Reset__Statistics_descr_.raw->forceomit);
+      decoded_length = n__GP__Reset__Statistics().RAW_decode(N__GP__Reset__Statistics_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 14: {
+      RAW_Force_Omit field_force_omit(14, force_omit, N__SP__Request_descr_.raw->forceomit);
+      decoded_length = n__SP__Request().RAW_decode(N__SP__Request_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 15: {
+      RAW_Force_Omit field_force_omit(15, force_omit, N__SP__Response_descr_.raw->forceomit);
+      decoded_length = n__SP__Response().RAW_decode(N__SP__Response_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 16: {
+      RAW_Force_Omit field_force_omit(16, force_omit, N__SP__Reset__Statistics_descr_.raw->forceomit);
+      decoded_length = n__SP__Reset__Statistics().RAW_decode(N__SP__Reset__Statistics_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 17: {
+      RAW_Force_Omit field_force_omit(17, force_omit, N__OC__Request_descr_.raw->forceomit);
+      decoded_length = n__OC__Request().RAW_decode(N__OC__Request_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 18: {
+      RAW_Force_Omit field_force_omit(18, force_omit, N__OC__Response_descr_.raw->forceomit);
+      decoded_length = n__OC__Response().RAW_decode(N__OC__Response_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 19: {
+      RAW_Force_Omit field_force_omit(19, force_omit, N__CC__Request_descr_.raw->forceomit);
+      decoded_length = n__CC__Request().RAW_decode(N__CC__Request_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 20: {
+      RAW_Force_Omit field_force_omit(20, force_omit, N__CC__Response_descr_.raw->forceomit);
+      decoded_length = n__CC__Response().RAW_decode(N__CC__Response_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 {
+    boolean already_failed = FALSE;
+    INTEGER temporal_0;
+    int decoded_0_length;
+    already_failed = FALSE;
+    if (!already_failed) {
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_0_length = temporal_0.RAW_decode(Function_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 0) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(0, force_omit, N__MFDB__Request_descr_.raw->forceomit);
+          decoded_length = n__MFDB__Request().RAW_decode(N__MFDB__Request_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_n__MFDB__Request).msgFunction() == 0) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 1) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(1, force_omit, N__MFDB__Response_descr_.raw->forceomit);
+          decoded_length = n__MFDB__Response().RAW_decode(N__MFDB__Response_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_n__MFDB__Response).msgFunction() == 1) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 2) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(2, force_omit, N__MFDB__Add_descr_.raw->forceomit);
+          decoded_length = n__MFDB__Add().RAW_decode(N__MFDB__Add_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_n__MFDB__Add).msgFunction() == 2) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 3) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(3, force_omit, N__MFDB__Delete_descr_.raw->forceomit);
+          decoded_length = n__MFDB__Delete().RAW_decode(N__MFDB__Delete_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_n__MFDB__Delete).msgFunction() == 3) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 4) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(4, force_omit, N__MFDB__Clear_descr_.raw->forceomit);
+          decoded_length = n__MFDB__Clear().RAW_decode(N__MFDB__Clear_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_n__MFDB__Clear).msgFunction() == 4) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 6) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(5, force_omit, N__MFDB__Create__Entry_descr_.raw->forceomit);
+          decoded_length = n__MFDB__Create__Entry().RAW_decode(N__MFDB__Create__Entry_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_n__MFDB__Create__Entry).msgFunction() == 6) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 7) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(6, force_omit, N__MFDBNQ__Add_descr_.raw->forceomit);
+          decoded_length = n__MFDBNQ__Add().RAW_decode(N__MFDBNQ__Add_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_n__MFDBNQ__Add).msgFunction() == 7) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 64) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(7, force_omit, N__NT__Request_descr_.raw->forceomit);
+          decoded_length = n__NT__Request().RAW_decode(N__NT__Request_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_n__NT__Request).msgFunction() == 64) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 65) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(8, force_omit, N__NT__Response_descr_.raw->forceomit);
+          decoded_length = n__NT__Response().RAW_decode(N__NT__Response_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_n__NT__Response).msgFunction() == 65) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 66) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(9, force_omit, N__NTX__Request_descr_.raw->forceomit);
+          decoded_length = n__NTX__Request().RAW_decode(N__NTX__Request_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_n__NTX__Request).msgFunction() == 66) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 67) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(10, force_omit, N__NTX__Response_descr_.raw->forceomit);
+          decoded_length = n__NTX__Response().RAW_decode(N__NTX__Response_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_n__NTX__Response).msgFunction() == 67) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 128) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(11, force_omit, N__GP__Request_descr_.raw->forceomit);
+          decoded_length = n__GP__Request().RAW_decode(N__GP__Request_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_n__GP__Request).msgFunction() == 128) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 129) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(12, force_omit, N__GP__Response_descr_.raw->forceomit);
+          decoded_length = n__GP__Response().RAW_decode(N__GP__Response_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_n__GP__Response).msgFunction() == 129) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 130) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(13, force_omit, N__GP__Reset__Statistics_descr_.raw->forceomit);
+          decoded_length = n__GP__Reset__Statistics().RAW_decode(N__GP__Reset__Statistics_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_n__GP__Reset__Statistics).msgFunction() == 130) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 131) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(14, force_omit, N__SP__Request_descr_.raw->forceomit);
+          decoded_length = n__SP__Request().RAW_decode(N__SP__Request_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_n__SP__Request).msgFunction() == 131) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 132) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(15, force_omit, N__SP__Response_descr_.raw->forceomit);
+          decoded_length = n__SP__Response().RAW_decode(N__SP__Response_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_n__SP__Response).msgFunction() == 132) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 133) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(16, force_omit, N__SP__Reset__Statistics_descr_.raw->forceomit);
+          decoded_length = n__SP__Reset__Statistics().RAW_decode(N__SP__Reset__Statistics_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_n__SP__Reset__Statistics).msgFunction() == 133) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 192) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(17, force_omit, N__OC__Request_descr_.raw->forceomit);
+          decoded_length = n__OC__Request().RAW_decode(N__OC__Request_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_n__OC__Request).msgFunction() == 192) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 193) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(18, force_omit, N__OC__Response_descr_.raw->forceomit);
+          decoded_length = n__OC__Response().RAW_decode(N__OC__Response_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_n__OC__Response).msgFunction() == 193) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 194) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(19, force_omit, N__CC__Request_descr_.raw->forceomit);
+          decoded_length = n__CC__Request().RAW_decode(N__CC__Request_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_n__CC__Request).msgFunction() == 194) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 195) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(20, force_omit, N__CC__Response_descr_.raw->forceomit);
+          decoded_length = n__CC__Response().RAW_decode(N__CC__Response_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_n__CC__Response).msgFunction() == 195) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+ }
+ clean_up();
+ return -1;
+}
+
+int NetworkMessage::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const
+{
+  int encoded_length = 0;
+  myleaf.isleaf = FALSE;
+  myleaf.body.node.num_of_nodes = 21;  myleaf.body.node.nodes = init_nodes_of_enc_tree(21);
+  memset(myleaf.body.node.nodes, 0, 21 * sizeof(RAW_enc_tree *));
+  switch (union_selection) {
+  case ALT_n__MFDB__Request:
+    myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 0, N__MFDB__Request_descr_.raw);
+    encoded_length = field_n__MFDB__Request->RAW_encode(N__MFDB__Request_descr_, *myleaf.body.node.nodes[0]);
+    myleaf.body.node.nodes[0]->coding_descr = &N__MFDB__Request_descr_;
+    if ((*field_n__MFDB__Request).msgFunction() != 0) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={0,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 0;
+  new_val.RAW_encode(Function_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);
+  }
+    }
+    break;
+  case ALT_n__MFDB__Response:
+    myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 1, N__MFDB__Response_descr_.raw);
+    encoded_length = field_n__MFDB__Response->RAW_encode(N__MFDB__Response_descr_, *myleaf.body.node.nodes[1]);
+    myleaf.body.node.nodes[1]->coding_descr = &N__MFDB__Response_descr_;
+    if ((*field_n__MFDB__Response).msgFunction() != 1) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={1,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 1;
+  new_val.RAW_encode(Function_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);
+  }
+    }
+    break;
+  case ALT_n__MFDB__Add:
+    myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 2, N__MFDB__Add_descr_.raw);
+    encoded_length = field_n__MFDB__Add->RAW_encode(N__MFDB__Add_descr_, *myleaf.body.node.nodes[2]);
+    myleaf.body.node.nodes[2]->coding_descr = &N__MFDB__Add_descr_;
+    if ((*field_n__MFDB__Add).msgFunction() != 2) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={2,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 2;
+  new_val.RAW_encode(Function_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);
+  }
+    }
+    break;
+  case ALT_n__MFDB__Delete:
+    myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 3, N__MFDB__Delete_descr_.raw);
+    encoded_length = field_n__MFDB__Delete->RAW_encode(N__MFDB__Delete_descr_, *myleaf.body.node.nodes[3]);
+    myleaf.body.node.nodes[3]->coding_descr = &N__MFDB__Delete_descr_;
+    if ((*field_n__MFDB__Delete).msgFunction() != 3) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={3,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 3;
+  new_val.RAW_encode(Function_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);
+  }
+    }
+    break;
+  case ALT_n__MFDB__Clear:
+    myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 4, N__MFDB__Clear_descr_.raw);
+    encoded_length = field_n__MFDB__Clear->RAW_encode(N__MFDB__Clear_descr_, *myleaf.body.node.nodes[4]);
+    myleaf.body.node.nodes[4]->coding_descr = &N__MFDB__Clear_descr_;
+    if ((*field_n__MFDB__Clear).msgFunction() != 4) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={4,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 4;
+  new_val.RAW_encode(Function_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);
+  }
+    }
+    break;
+  case ALT_n__MFDB__Create__Entry:
+    myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 5, N__MFDB__Create__Entry_descr_.raw);
+    encoded_length = field_n__MFDB__Create__Entry->RAW_encode(N__MFDB__Create__Entry_descr_, *myleaf.body.node.nodes[5]);
+    myleaf.body.node.nodes[5]->coding_descr = &N__MFDB__Create__Entry_descr_;
+    if ((*field_n__MFDB__Create__Entry).msgFunction() != 6) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={5,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 6;
+  new_val.RAW_encode(Function_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);
+  }
+    }
+    break;
+  case ALT_n__MFDBNQ__Add:
+    myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 6, N__MFDBNQ__Add_descr_.raw);
+    encoded_length = field_n__MFDBNQ__Add->RAW_encode(N__MFDBNQ__Add_descr_, *myleaf.body.node.nodes[6]);
+    myleaf.body.node.nodes[6]->coding_descr = &N__MFDBNQ__Add_descr_;
+    if ((*field_n__MFDBNQ__Add).msgFunction() != 7) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={6,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 7;
+  new_val.RAW_encode(Function_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);
+  }
+    }
+    break;
+  case ALT_n__NT__Request:
+    myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 7, N__NT__Request_descr_.raw);
+    encoded_length = field_n__NT__Request->RAW_encode(N__NT__Request_descr_, *myleaf.body.node.nodes[7]);
+    myleaf.body.node.nodes[7]->coding_descr = &N__NT__Request_descr_;
+    if ((*field_n__NT__Request).msgFunction() != 64) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={7,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 64;
+  new_val.RAW_encode(Function_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);
+  }
+    }
+    break;
+  case ALT_n__NT__Response:
+    myleaf.body.node.nodes[8] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 8, N__NT__Response_descr_.raw);
+    encoded_length = field_n__NT__Response->RAW_encode(N__NT__Response_descr_, *myleaf.body.node.nodes[8]);
+    myleaf.body.node.nodes[8]->coding_descr = &N__NT__Response_descr_;
+    if ((*field_n__NT__Response).msgFunction() != 65) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={8,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 65;
+  new_val.RAW_encode(Function_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);
+  }
+    }
+    break;
+  case ALT_n__NTX__Request:
+    myleaf.body.node.nodes[9] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 9, N__NTX__Request_descr_.raw);
+    encoded_length = field_n__NTX__Request->RAW_encode(N__NTX__Request_descr_, *myleaf.body.node.nodes[9]);
+    myleaf.body.node.nodes[9]->coding_descr = &N__NTX__Request_descr_;
+    if ((*field_n__NTX__Request).msgFunction() != 66) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={9,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 66;
+  new_val.RAW_encode(Function_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);
+  }
+    }
+    break;
+  case ALT_n__NTX__Response:
+    myleaf.body.node.nodes[10] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 10, N__NTX__Response_descr_.raw);
+    encoded_length = field_n__NTX__Response->RAW_encode(N__NTX__Response_descr_, *myleaf.body.node.nodes[10]);
+    myleaf.body.node.nodes[10]->coding_descr = &N__NTX__Response_descr_;
+    if ((*field_n__NTX__Response).msgFunction() != 67) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={10,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 67;
+  new_val.RAW_encode(Function_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);
+  }
+    }
+    break;
+  case ALT_n__GP__Request:
+    myleaf.body.node.nodes[11] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 11, N__GP__Request_descr_.raw);
+    encoded_length = field_n__GP__Request->RAW_encode(N__GP__Request_descr_, *myleaf.body.node.nodes[11]);
+    myleaf.body.node.nodes[11]->coding_descr = &N__GP__Request_descr_;
+    if ((*field_n__GP__Request).msgFunction() != 128) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={11,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 128;
+  new_val.RAW_encode(Function_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);
+  }
+    }
+    break;
+  case ALT_n__GP__Response:
+    myleaf.body.node.nodes[12] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 12, N__GP__Response_descr_.raw);
+    encoded_length = field_n__GP__Response->RAW_encode(N__GP__Response_descr_, *myleaf.body.node.nodes[12]);
+    myleaf.body.node.nodes[12]->coding_descr = &N__GP__Response_descr_;
+    if ((*field_n__GP__Response).msgFunction() != 129) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={12,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 129;
+  new_val.RAW_encode(Function_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);
+  }
+    }
+    break;
+  case ALT_n__GP__Reset__Statistics:
+    myleaf.body.node.nodes[13] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 13, N__GP__Reset__Statistics_descr_.raw);
+    encoded_length = field_n__GP__Reset__Statistics->RAW_encode(N__GP__Reset__Statistics_descr_, *myleaf.body.node.nodes[13]);
+    myleaf.body.node.nodes[13]->coding_descr = &N__GP__Reset__Statistics_descr_;
+    if ((*field_n__GP__Reset__Statistics).msgFunction() != 130) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={13,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 130;
+  new_val.RAW_encode(Function_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);
+  }
+    }
+    break;
+  case ALT_n__SP__Request:
+    myleaf.body.node.nodes[14] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 14, N__SP__Request_descr_.raw);
+    encoded_length = field_n__SP__Request->RAW_encode(N__SP__Request_descr_, *myleaf.body.node.nodes[14]);
+    myleaf.body.node.nodes[14]->coding_descr = &N__SP__Request_descr_;
+    if ((*field_n__SP__Request).msgFunction() != 131) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={14,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 131;
+  new_val.RAW_encode(Function_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);
+  }
+    }
+    break;
+  case ALT_n__SP__Response:
+    myleaf.body.node.nodes[15] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 15, N__SP__Response_descr_.raw);
+    encoded_length = field_n__SP__Response->RAW_encode(N__SP__Response_descr_, *myleaf.body.node.nodes[15]);
+    myleaf.body.node.nodes[15]->coding_descr = &N__SP__Response_descr_;
+    if ((*field_n__SP__Response).msgFunction() != 132) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={15,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 132;
+  new_val.RAW_encode(Function_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);
+  }
+    }
+    break;
+  case ALT_n__SP__Reset__Statistics:
+    myleaf.body.node.nodes[16] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 16, N__SP__Reset__Statistics_descr_.raw);
+    encoded_length = field_n__SP__Reset__Statistics->RAW_encode(N__SP__Reset__Statistics_descr_, *myleaf.body.node.nodes[16]);
+    myleaf.body.node.nodes[16]->coding_descr = &N__SP__Reset__Statistics_descr_;
+    if ((*field_n__SP__Reset__Statistics).msgFunction() != 133) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={16,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 133;
+  new_val.RAW_encode(Function_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);
+  }
+    }
+    break;
+  case ALT_n__OC__Request:
+    myleaf.body.node.nodes[17] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 17, N__OC__Request_descr_.raw);
+    encoded_length = field_n__OC__Request->RAW_encode(N__OC__Request_descr_, *myleaf.body.node.nodes[17]);
+    myleaf.body.node.nodes[17]->coding_descr = &N__OC__Request_descr_;
+    if ((*field_n__OC__Request).msgFunction() != 192) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={17,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 192;
+  new_val.RAW_encode(Function_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);
+  }
+    }
+    break;
+  case ALT_n__OC__Response:
+    myleaf.body.node.nodes[18] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 18, N__OC__Response_descr_.raw);
+    encoded_length = field_n__OC__Response->RAW_encode(N__OC__Response_descr_, *myleaf.body.node.nodes[18]);
+    myleaf.body.node.nodes[18]->coding_descr = &N__OC__Response_descr_;
+    if ((*field_n__OC__Response).msgFunction() != 193) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={18,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 193;
+  new_val.RAW_encode(Function_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);
+  }
+    }
+    break;
+  case ALT_n__CC__Request:
+    myleaf.body.node.nodes[19] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 19, N__CC__Request_descr_.raw);
+    encoded_length = field_n__CC__Request->RAW_encode(N__CC__Request_descr_, *myleaf.body.node.nodes[19]);
+    myleaf.body.node.nodes[19]->coding_descr = &N__CC__Request_descr_;
+    if ((*field_n__CC__Request).msgFunction() != 194) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={19,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 194;
+  new_val.RAW_encode(Function_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);
+  }
+    }
+    break;
+  case ALT_n__CC__Response:
+    myleaf.body.node.nodes[20] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 20, N__CC__Response_descr_.raw);
+    encoded_length = field_n__CC__Response->RAW_encode(N__CC__Response_descr_, *myleaf.body.node.nodes[20]);
+    myleaf.body.node.nodes[20]->coding_descr = &N__CC__Response_descr_;
+    if ((*field_n__CC__Response).msgFunction() != 195) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={20,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 195;
+  new_val.RAW_encode(Function_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);
+  }
+    }
+    break;
+  default:
+    TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
+  }
+  return encoded_length;
+}
+
+void NetworkMessage_template::copy_value(const NetworkMessage& other_value)
+{
+single_value.union_selection = other_value.get_selection();
+switch (single_value.union_selection) {
+case NetworkMessage::ALT_n__MFDB__Request:
+single_value.field_n__MFDB__Request = new N__MFDB__Request_template(other_value.n__MFDB__Request());
+break;
+case NetworkMessage::ALT_n__MFDB__Response:
+single_value.field_n__MFDB__Response = new N__MFDB__Response_template(other_value.n__MFDB__Response());
+break;
+case NetworkMessage::ALT_n__MFDB__Add:
+single_value.field_n__MFDB__Add = new N__MFDB__Add_template(other_value.n__MFDB__Add());
+break;
+case NetworkMessage::ALT_n__MFDB__Delete:
+single_value.field_n__MFDB__Delete = new N__MFDB__Delete_template(other_value.n__MFDB__Delete());
+break;
+case NetworkMessage::ALT_n__MFDB__Clear:
+single_value.field_n__MFDB__Clear = new N__MFDB__Clear_template(other_value.n__MFDB__Clear());
+break;
+case NetworkMessage::ALT_n__MFDB__Create__Entry:
+single_value.field_n__MFDB__Create__Entry = new N__MFDB__Create__Entry_template(other_value.n__MFDB__Create__Entry());
+break;
+case NetworkMessage::ALT_n__MFDBNQ__Add:
+single_value.field_n__MFDBNQ__Add = new N__MFDBNQ__Add_template(other_value.n__MFDBNQ__Add());
+break;
+case NetworkMessage::ALT_n__NT__Request:
+single_value.field_n__NT__Request = new N__NT__Request_template(other_value.n__NT__Request());
+break;
+case NetworkMessage::ALT_n__NT__Response:
+single_value.field_n__NT__Response = new N__NT__Response_template(other_value.n__NT__Response());
+break;
+case NetworkMessage::ALT_n__NTX__Request:
+single_value.field_n__NTX__Request = new N__NTX__Request_template(other_value.n__NTX__Request());
+break;
+case NetworkMessage::ALT_n__NTX__Response:
+single_value.field_n__NTX__Response = new N__NTX__Response_template(other_value.n__NTX__Response());
+break;
+case NetworkMessage::ALT_n__GP__Request:
+single_value.field_n__GP__Request = new N__GP__Request_template(other_value.n__GP__Request());
+break;
+case NetworkMessage::ALT_n__GP__Response:
+single_value.field_n__GP__Response = new N__GP__Response_template(other_value.n__GP__Response());
+break;
+case NetworkMessage::ALT_n__GP__Reset__Statistics:
+single_value.field_n__GP__Reset__Statistics = new N__GP__Reset__Statistics_template(other_value.n__GP__Reset__Statistics());
+break;
+case NetworkMessage::ALT_n__SP__Request:
+single_value.field_n__SP__Request = new N__SP__Request_template(other_value.n__SP__Request());
+break;
+case NetworkMessage::ALT_n__SP__Response:
+single_value.field_n__SP__Response = new N__SP__Response_template(other_value.n__SP__Response());
+break;
+case NetworkMessage::ALT_n__SP__Reset__Statistics:
+single_value.field_n__SP__Reset__Statistics = new N__SP__Reset__Statistics_template(other_value.n__SP__Reset__Statistics());
+break;
+case NetworkMessage::ALT_n__OC__Request:
+single_value.field_n__OC__Request = new N__OC__Request_template(other_value.n__OC__Request());
+break;
+case NetworkMessage::ALT_n__OC__Response:
+single_value.field_n__OC__Response = new N__OC__Response_template(other_value.n__OC__Response());
+break;
+case NetworkMessage::ALT_n__CC__Request:
+single_value.field_n__CC__Request = new N__CC__Request_template(other_value.n__CC__Request());
+break;
+case NetworkMessage::ALT_n__CC__Response:
+single_value.field_n__CC__Response = new N__CC__Response_template(other_value.n__CC__Response());
+break;
+default:
+TTCN_error("Initializing a template with an unbound value of type @IsobusNMMessageTypes.NetworkMessage.");
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void NetworkMessage_template::copy_template(const NetworkMessage_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 NetworkMessage::ALT_n__MFDB__Request:
+single_value.field_n__MFDB__Request = new N__MFDB__Request_template(*other_value.single_value.field_n__MFDB__Request);
+break;
+case NetworkMessage::ALT_n__MFDB__Response:
+single_value.field_n__MFDB__Response = new N__MFDB__Response_template(*other_value.single_value.field_n__MFDB__Response);
+break;
+case NetworkMessage::ALT_n__MFDB__Add:
+single_value.field_n__MFDB__Add = new N__MFDB__Add_template(*other_value.single_value.field_n__MFDB__Add);
+break;
+case NetworkMessage::ALT_n__MFDB__Delete:
+single_value.field_n__MFDB__Delete = new N__MFDB__Delete_template(*other_value.single_value.field_n__MFDB__Delete);
+break;
+case NetworkMessage::ALT_n__MFDB__Clear:
+single_value.field_n__MFDB__Clear = new N__MFDB__Clear_template(*other_value.single_value.field_n__MFDB__Clear);
+break;
+case NetworkMessage::ALT_n__MFDB__Create__Entry:
+single_value.field_n__MFDB__Create__Entry = new N__MFDB__Create__Entry_template(*other_value.single_value.field_n__MFDB__Create__Entry);
+break;
+case NetworkMessage::ALT_n__MFDBNQ__Add:
+single_value.field_n__MFDBNQ__Add = new N__MFDBNQ__Add_template(*other_value.single_value.field_n__MFDBNQ__Add);
+break;
+case NetworkMessage::ALT_n__NT__Request:
+single_value.field_n__NT__Request = new N__NT__Request_template(*other_value.single_value.field_n__NT__Request);
+break;
+case NetworkMessage::ALT_n__NT__Response:
+single_value.field_n__NT__Response = new N__NT__Response_template(*other_value.single_value.field_n__NT__Response);
+break;
+case NetworkMessage::ALT_n__NTX__Request:
+single_value.field_n__NTX__Request = new N__NTX__Request_template(*other_value.single_value.field_n__NTX__Request);
+break;
+case NetworkMessage::ALT_n__NTX__Response:
+single_value.field_n__NTX__Response = new N__NTX__Response_template(*other_value.single_value.field_n__NTX__Response);
+break;
+case NetworkMessage::ALT_n__GP__Request:
+single_value.field_n__GP__Request = new N__GP__Request_template(*other_value.single_value.field_n__GP__Request);
+break;
+case NetworkMessage::ALT_n__GP__Response:
+single_value.field_n__GP__Response = new N__GP__Response_template(*other_value.single_value.field_n__GP__Response);
+break;
+case NetworkMessage::ALT_n__GP__Reset__Statistics:
+single_value.field_n__GP__Reset__Statistics = new N__GP__Reset__Statistics_template(*other_value.single_value.field_n__GP__Reset__Statistics);
+break;
+case NetworkMessage::ALT_n__SP__Request:
+single_value.field_n__SP__Request = new N__SP__Request_template(*other_value.single_value.field_n__SP__Request);
+break;
+case NetworkMessage::ALT_n__SP__Response:
+single_value.field_n__SP__Response = new N__SP__Response_template(*other_value.single_value.field_n__SP__Response);
+break;
+case NetworkMessage::ALT_n__SP__Reset__Statistics:
+single_value.field_n__SP__Reset__Statistics = new N__SP__Reset__Statistics_template(*other_value.single_value.field_n__SP__Reset__Statistics);
+break;
+case NetworkMessage::ALT_n__OC__Request:
+single_value.field_n__OC__Request = new N__OC__Request_template(*other_value.single_value.field_n__OC__Request);
+break;
+case NetworkMessage::ALT_n__OC__Response:
+single_value.field_n__OC__Response = new N__OC__Response_template(*other_value.single_value.field_n__OC__Response);
+break;
+case NetworkMessage::ALT_n__CC__Request:
+single_value.field_n__CC__Request = new N__CC__Request_template(*other_value.single_value.field_n__CC__Request);
+break;
+case NetworkMessage::ALT_n__CC__Response:
+single_value.field_n__CC__Response = new N__CC__Response_template(*other_value.single_value.field_n__CC__Response);
+break;
+default:
+TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @IsobusNMMessageTypes.NetworkMessage.");
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new NetworkMessage_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;
+default:
+TTCN_error("Copying an uninitialized template of union type @IsobusNMMessageTypes.NetworkMessage.");
+}
+set_selection(other_value);
+}
+
+NetworkMessage_template::NetworkMessage_template()
+{
+}
+
+NetworkMessage_template::NetworkMessage_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+NetworkMessage_template::NetworkMessage_template(const NetworkMessage& other_value)
+{
+copy_value(other_value);
+}
+
+NetworkMessage_template::NetworkMessage_template(const OPTIONAL<NetworkMessage>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const NetworkMessage&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of union type @IsobusNMMessageTypes.NetworkMessage from an unbound optional field.");
+}
+}
+
+NetworkMessage_template::NetworkMessage_template(const NetworkMessage_template& other_value)
+: Base_Template(){
+copy_template(other_value);
+}
+
+NetworkMessage_template::~NetworkMessage_template()
+{
+clean_up();
+}
+
+void NetworkMessage_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case NetworkMessage::ALT_n__MFDB__Request:
+delete single_value.field_n__MFDB__Request;
+break;
+case NetworkMessage::ALT_n__MFDB__Response:
+delete single_value.field_n__MFDB__Response;
+break;
+case NetworkMessage::ALT_n__MFDB__Add:
+delete single_value.field_n__MFDB__Add;
+break;
+case NetworkMessage::ALT_n__MFDB__Delete:
+delete single_value.field_n__MFDB__Delete;
+break;
+case NetworkMessage::ALT_n__MFDB__Clear:
+delete single_value.field_n__MFDB__Clear;
+break;
+case NetworkMessage::ALT_n__MFDB__Create__Entry:
+delete single_value.field_n__MFDB__Create__Entry;
+break;
+case NetworkMessage::ALT_n__MFDBNQ__Add:
+delete single_value.field_n__MFDBNQ__Add;
+break;
+case NetworkMessage::ALT_n__NT__Request:
+delete single_value.field_n__NT__Request;
+break;
+case NetworkMessage::ALT_n__NT__Response:
+delete single_value.field_n__NT__Response;
+break;
+case NetworkMessage::ALT_n__NTX__Request:
+delete single_value.field_n__NTX__Request;
+break;
+case NetworkMessage::ALT_n__NTX__Response:
+delete single_value.field_n__NTX__Response;
+break;
+case NetworkMessage::ALT_n__GP__Request:
+delete single_value.field_n__GP__Request;
+break;
+case NetworkMessage::ALT_n__GP__Response:
+delete single_value.field_n__GP__Response;
+break;
+case NetworkMessage::ALT_n__GP__Reset__Statistics:
+delete single_value.field_n__GP__Reset__Statistics;
+break;
+case NetworkMessage::ALT_n__SP__Request:
+delete single_value.field_n__SP__Request;
+break;
+case NetworkMessage::ALT_n__SP__Response:
+delete single_value.field_n__SP__Response;
+break;
+case NetworkMessage::ALT_n__SP__Reset__Statistics:
+delete single_value.field_n__SP__Reset__Statistics;
+break;
+case NetworkMessage::ALT_n__OC__Request:
+delete single_value.field_n__OC__Request;
+break;
+case NetworkMessage::ALT_n__OC__Response:
+delete single_value.field_n__OC__Response;
+break;
+case NetworkMessage::ALT_n__CC__Request:
+delete single_value.field_n__CC__Request;
+break;
+case NetworkMessage::ALT_n__CC__Response:
+delete single_value.field_n__CC__Response;
+default:
+break;
+}
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+NetworkMessage_template& NetworkMessage_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+NetworkMessage_template& NetworkMessage_template::operator=(const NetworkMessage& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+NetworkMessage_template& NetworkMessage_template::operator=(const OPTIONAL<NetworkMessage>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const NetworkMessage&)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 @IsobusNMMessageTypes.NetworkMessage.");
+}
+return *this;
+}
+
+NetworkMessage_template& NetworkMessage_template::operator=(const NetworkMessage_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean NetworkMessage_template::match(const NetworkMessage& 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:
+{
+NetworkMessage::union_selection_type value_selection = other_value.get_selection();
+if (value_selection == NetworkMessage::UNBOUND_VALUE) return FALSE;
+if (value_selection != single_value.union_selection) return FALSE;
+switch (value_selection) {
+case NetworkMessage::ALT_n__MFDB__Request:
+return single_value.field_n__MFDB__Request->match(other_value.n__MFDB__Request(), legacy);
+case NetworkMessage::ALT_n__MFDB__Response:
+return single_value.field_n__MFDB__Response->match(other_value.n__MFDB__Response(), legacy);
+case NetworkMessage::ALT_n__MFDB__Add:
+return single_value.field_n__MFDB__Add->match(other_value.n__MFDB__Add(), legacy);
+case NetworkMessage::ALT_n__MFDB__Delete:
+return single_value.field_n__MFDB__Delete->match(other_value.n__MFDB__Delete(), legacy);
+case NetworkMessage::ALT_n__MFDB__Clear:
+return single_value.field_n__MFDB__Clear->match(other_value.n__MFDB__Clear(), legacy);
+case NetworkMessage::ALT_n__MFDB__Create__Entry:
+return single_value.field_n__MFDB__Create__Entry->match(other_value.n__MFDB__Create__Entry(), legacy);
+case NetworkMessage::ALT_n__MFDBNQ__Add:
+return single_value.field_n__MFDBNQ__Add->match(other_value.n__MFDBNQ__Add(), legacy);
+case NetworkMessage::ALT_n__NT__Request:
+return single_value.field_n__NT__Request->match(other_value.n__NT__Request(), legacy);
+case NetworkMessage::ALT_n__NT__Response:
+return single_value.field_n__NT__Response->match(other_value.n__NT__Response(), legacy);
+case NetworkMessage::ALT_n__NTX__Request:
+return single_value.field_n__NTX__Request->match(other_value.n__NTX__Request(), legacy);
+case NetworkMessage::ALT_n__NTX__Response:
+return single_value.field_n__NTX__Response->match(other_value.n__NTX__Response(), legacy);
+case NetworkMessage::ALT_n__GP__Request:
+return single_value.field_n__GP__Request->match(other_value.n__GP__Request(), legacy);
+case NetworkMessage::ALT_n__GP__Response:
+return single_value.field_n__GP__Response->match(other_value.n__GP__Response(), legacy);
+case NetworkMessage::ALT_n__GP__Reset__Statistics:
+return single_value.field_n__GP__Reset__Statistics->match(other_value.n__GP__Reset__Statistics(), legacy);
+case NetworkMessage::ALT_n__SP__Request:
+return single_value.field_n__SP__Request->match(other_value.n__SP__Request(), legacy);
+case NetworkMessage::ALT_n__SP__Response:
+return single_value.field_n__SP__Response->match(other_value.n__SP__Response(), legacy);
+case NetworkMessage::ALT_n__SP__Reset__Statistics:
+return single_value.field_n__SP__Reset__Statistics->match(other_value.n__SP__Reset__Statistics(), legacy);
+case NetworkMessage::ALT_n__OC__Request:
+return single_value.field_n__OC__Request->match(other_value.n__OC__Request(), legacy);
+case NetworkMessage::ALT_n__OC__Response:
+return single_value.field_n__OC__Response->match(other_value.n__OC__Response(), legacy);
+case NetworkMessage::ALT_n__CC__Request:
+return single_value.field_n__CC__Request->match(other_value.n__CC__Request(), legacy);
+case NetworkMessage::ALT_n__CC__Response:
+return single_value.field_n__CC__Response->match(other_value.n__CC__Response(), legacy);
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @IsobusNMMessageTypes.NetworkMessage.");
+}
+}
+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;
+default:
+TTCN_error ("Matching an uninitialized template of union type @IsobusNMMessageTypes.NetworkMessage.");
+}
+return FALSE;
+}
+
+boolean NetworkMessage_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+switch (single_value.union_selection) {
+case NetworkMessage::ALT_n__MFDB__Request:
+return single_value.field_n__MFDB__Request->is_value();
+case NetworkMessage::ALT_n__MFDB__Response:
+return single_value.field_n__MFDB__Response->is_value();
+case NetworkMessage::ALT_n__MFDB__Add:
+return single_value.field_n__MFDB__Add->is_value();
+case NetworkMessage::ALT_n__MFDB__Delete:
+return single_value.field_n__MFDB__Delete->is_value();
+case NetworkMessage::ALT_n__MFDB__Clear:
+return single_value.field_n__MFDB__Clear->is_value();
+case NetworkMessage::ALT_n__MFDB__Create__Entry:
+return single_value.field_n__MFDB__Create__Entry->is_value();
+case NetworkMessage::ALT_n__MFDBNQ__Add:
+return single_value.field_n__MFDBNQ__Add->is_value();
+case NetworkMessage::ALT_n__NT__Request:
+return single_value.field_n__NT__Request->is_value();
+case NetworkMessage::ALT_n__NT__Response:
+return single_value.field_n__NT__Response->is_value();
+case NetworkMessage::ALT_n__NTX__Request:
+return single_value.field_n__NTX__Request->is_value();
+case NetworkMessage::ALT_n__NTX__Response:
+return single_value.field_n__NTX__Response->is_value();
+case NetworkMessage::ALT_n__GP__Request:
+return single_value.field_n__GP__Request->is_value();
+case NetworkMessage::ALT_n__GP__Response:
+return single_value.field_n__GP__Response->is_value();
+case NetworkMessage::ALT_n__GP__Reset__Statistics:
+return single_value.field_n__GP__Reset__Statistics->is_value();
+case NetworkMessage::ALT_n__SP__Request:
+return single_value.field_n__SP__Request->is_value();
+case NetworkMessage::ALT_n__SP__Response:
+return single_value.field_n__SP__Response->is_value();
+case NetworkMessage::ALT_n__SP__Reset__Statistics:
+return single_value.field_n__SP__Reset__Statistics->is_value();
+case NetworkMessage::ALT_n__OC__Request:
+return single_value.field_n__OC__Request->is_value();
+case NetworkMessage::ALT_n__OC__Response:
+return single_value.field_n__OC__Response->is_value();
+case NetworkMessage::ALT_n__CC__Request:
+return single_value.field_n__CC__Request->is_value();
+case NetworkMessage::ALT_n__CC__Response:
+return single_value.field_n__CC__Response->is_value();
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @IsobusNMMessageTypes.NetworkMessage.");
+}
+}
+
+NetworkMessage NetworkMessage_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 @IsobusNMMessageTypes.NetworkMessage.");
+NetworkMessage ret_val;
+switch (single_value.union_selection) {
+case NetworkMessage::ALT_n__MFDB__Request:
+ret_val.n__MFDB__Request() = single_value.field_n__MFDB__Request->valueof();
+break;
+case NetworkMessage::ALT_n__MFDB__Response:
+ret_val.n__MFDB__Response() = single_value.field_n__MFDB__Response->valueof();
+break;
+case NetworkMessage::ALT_n__MFDB__Add:
+ret_val.n__MFDB__Add() = single_value.field_n__MFDB__Add->valueof();
+break;
+case NetworkMessage::ALT_n__MFDB__Delete:
+ret_val.n__MFDB__Delete() = single_value.field_n__MFDB__Delete->valueof();
+break;
+case NetworkMessage::ALT_n__MFDB__Clear:
+ret_val.n__MFDB__Clear() = single_value.field_n__MFDB__Clear->valueof();
+break;
+case NetworkMessage::ALT_n__MFDB__Create__Entry:
+ret_val.n__MFDB__Create__Entry() = single_value.field_n__MFDB__Create__Entry->valueof();
+break;
+case NetworkMessage::ALT_n__MFDBNQ__Add:
+ret_val.n__MFDBNQ__Add() = single_value.field_n__MFDBNQ__Add->valueof();
+break;
+case NetworkMessage::ALT_n__NT__Request:
+ret_val.n__NT__Request() = single_value.field_n__NT__Request->valueof();
+break;
+case NetworkMessage::ALT_n__NT__Response:
+ret_val.n__NT__Response() = single_value.field_n__NT__Response->valueof();
+break;
+case NetworkMessage::ALT_n__NTX__Request:
+ret_val.n__NTX__Request() = single_value.field_n__NTX__Request->valueof();
+break;
+case NetworkMessage::ALT_n__NTX__Response:
+ret_val.n__NTX__Response() = single_value.field_n__NTX__Response->valueof();
+break;
+case NetworkMessage::ALT_n__GP__Request:
+ret_val.n__GP__Request() = single_value.field_n__GP__Request->valueof();
+break;
+case NetworkMessage::ALT_n__GP__Response:
+ret_val.n__GP__Response() = single_value.field_n__GP__Response->valueof();
+break;
+case NetworkMessage::ALT_n__GP__Reset__Statistics:
+ret_val.n__GP__Reset__Statistics() = single_value.field_n__GP__Reset__Statistics->valueof();
+break;
+case NetworkMessage::ALT_n__SP__Request:
+ret_val.n__SP__Request() = single_value.field_n__SP__Request->valueof();
+break;
+case NetworkMessage::ALT_n__SP__Response:
+ret_val.n__SP__Response() = single_value.field_n__SP__Response->valueof();
+break;
+case NetworkMessage::ALT_n__SP__Reset__Statistics:
+ret_val.n__SP__Reset__Statistics() = single_value.field_n__SP__Reset__Statistics->valueof();
+break;
+case NetworkMessage::ALT_n__OC__Request:
+ret_val.n__OC__Request() = single_value.field_n__OC__Request->valueof();
+break;
+case NetworkMessage::ALT_n__OC__Response:
+ret_val.n__OC__Response() = single_value.field_n__OC__Response->valueof();
+break;
+case NetworkMessage::ALT_n__CC__Request:
+ret_val.n__CC__Request() = single_value.field_n__CC__Request->valueof();
+break;
+case NetworkMessage::ALT_n__CC__Response:
+ret_val.n__CC__Response() = single_value.field_n__CC__Response->valueof();
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @IsobusNMMessageTypes.NetworkMessage.");
+}
+return ret_val;
+}
+
+NetworkMessage_template& NetworkMessage_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @IsobusNMMessageTypes.NetworkMessage.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @IsobusNMMessageTypes.NetworkMessage.");
+return value_list.list_value[list_index];
+}
+void NetworkMessage_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error ("Internal error: Setting an invalid list for a template of union type @IsobusNMMessageTypes.NetworkMessage.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new NetworkMessage_template[list_length];
+}
+
+N__MFDB__Request_template& NetworkMessage_template::n__MFDB__Request()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != NetworkMessage::ALT_n__MFDB__Request) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_n__MFDB__Request = new N__MFDB__Request_template(ANY_VALUE);
+else single_value.field_n__MFDB__Request = new N__MFDB__Request_template;
+single_value.union_selection = NetworkMessage::ALT_n__MFDB__Request;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_n__MFDB__Request;
+}
+
+const N__MFDB__Request_template& NetworkMessage_template::n__MFDB__Request() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field n_MFDB_Request in a non-specific template of union type @IsobusNMMessageTypes.NetworkMessage.");
+if (single_value.union_selection != NetworkMessage::ALT_n__MFDB__Request) TTCN_error("Accessing non-selected field n_MFDB_Request in a template of union type @IsobusNMMessageTypes.NetworkMessage.");
+return *single_value.field_n__MFDB__Request;
+}
+
+N__MFDB__Response_template& NetworkMessage_template::n__MFDB__Response()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != NetworkMessage::ALT_n__MFDB__Response) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_n__MFDB__Response = new N__MFDB__Response_template(ANY_VALUE);
+else single_value.field_n__MFDB__Response = new N__MFDB__Response_template;
+single_value.union_selection = NetworkMessage::ALT_n__MFDB__Response;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_n__MFDB__Response;
+}
+
+const N__MFDB__Response_template& NetworkMessage_template::n__MFDB__Response() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field n_MFDB_Response in a non-specific template of union type @IsobusNMMessageTypes.NetworkMessage.");
+if (single_value.union_selection != NetworkMessage::ALT_n__MFDB__Response) TTCN_error("Accessing non-selected field n_MFDB_Response in a template of union type @IsobusNMMessageTypes.NetworkMessage.");
+return *single_value.field_n__MFDB__Response;
+}
+
+N__MFDB__Add_template& NetworkMessage_template::n__MFDB__Add()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != NetworkMessage::ALT_n__MFDB__Add) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_n__MFDB__Add = new N__MFDB__Add_template(ANY_VALUE);
+else single_value.field_n__MFDB__Add = new N__MFDB__Add_template;
+single_value.union_selection = NetworkMessage::ALT_n__MFDB__Add;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_n__MFDB__Add;
+}
+
+const N__MFDB__Add_template& NetworkMessage_template::n__MFDB__Add() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field n_MFDB_Add in a non-specific template of union type @IsobusNMMessageTypes.NetworkMessage.");
+if (single_value.union_selection != NetworkMessage::ALT_n__MFDB__Add) TTCN_error("Accessing non-selected field n_MFDB_Add in a template of union type @IsobusNMMessageTypes.NetworkMessage.");
+return *single_value.field_n__MFDB__Add;
+}
+
+N__MFDB__Delete_template& NetworkMessage_template::n__MFDB__Delete()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != NetworkMessage::ALT_n__MFDB__Delete) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_n__MFDB__Delete = new N__MFDB__Delete_template(ANY_VALUE);
+else single_value.field_n__MFDB__Delete = new N__MFDB__Delete_template;
+single_value.union_selection = NetworkMessage::ALT_n__MFDB__Delete;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_n__MFDB__Delete;
+}
+
+const N__MFDB__Delete_template& NetworkMessage_template::n__MFDB__Delete() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field n_MFDB_Delete in a non-specific template of union type @IsobusNMMessageTypes.NetworkMessage.");
+if (single_value.union_selection != NetworkMessage::ALT_n__MFDB__Delete) TTCN_error("Accessing non-selected field n_MFDB_Delete in a template of union type @IsobusNMMessageTypes.NetworkMessage.");
+return *single_value.field_n__MFDB__Delete;
+}
+
+N__MFDB__Clear_template& NetworkMessage_template::n__MFDB__Clear()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != NetworkMessage::ALT_n__MFDB__Clear) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_n__MFDB__Clear = new N__MFDB__Clear_template(ANY_VALUE);
+else single_value.field_n__MFDB__Clear = new N__MFDB__Clear_template;
+single_value.union_selection = NetworkMessage::ALT_n__MFDB__Clear;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_n__MFDB__Clear;
+}
+
+const N__MFDB__Clear_template& NetworkMessage_template::n__MFDB__Clear() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field n_MFDB_Clear in a non-specific template of union type @IsobusNMMessageTypes.NetworkMessage.");
+if (single_value.union_selection != NetworkMessage::ALT_n__MFDB__Clear) TTCN_error("Accessing non-selected field n_MFDB_Clear in a template of union type @IsobusNMMessageTypes.NetworkMessage.");
+return *single_value.field_n__MFDB__Clear;
+}
+
+N__MFDB__Create__Entry_template& NetworkMessage_template::n__MFDB__Create__Entry()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != NetworkMessage::ALT_n__MFDB__Create__Entry) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_n__MFDB__Create__Entry = new N__MFDB__Create__Entry_template(ANY_VALUE);
+else single_value.field_n__MFDB__Create__Entry = new N__MFDB__Create__Entry_template;
+single_value.union_selection = NetworkMessage::ALT_n__MFDB__Create__Entry;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_n__MFDB__Create__Entry;
+}
+
+const N__MFDB__Create__Entry_template& NetworkMessage_template::n__MFDB__Create__Entry() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field n_MFDB_Create_Entry in a non-specific template of union type @IsobusNMMessageTypes.NetworkMessage.");
+if (single_value.union_selection != NetworkMessage::ALT_n__MFDB__Create__Entry) TTCN_error("Accessing non-selected field n_MFDB_Create_Entry in a template of union type @IsobusNMMessageTypes.NetworkMessage.");
+return *single_value.field_n__MFDB__Create__Entry;
+}
+
+N__MFDBNQ__Add_template& NetworkMessage_template::n__MFDBNQ__Add()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != NetworkMessage::ALT_n__MFDBNQ__Add) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_n__MFDBNQ__Add = new N__MFDBNQ__Add_template(ANY_VALUE);
+else single_value.field_n__MFDBNQ__Add = new N__MFDBNQ__Add_template;
+single_value.union_selection = NetworkMessage::ALT_n__MFDBNQ__Add;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_n__MFDBNQ__Add;
+}
+
+const N__MFDBNQ__Add_template& NetworkMessage_template::n__MFDBNQ__Add() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field n_MFDBNQ_Add in a non-specific template of union type @IsobusNMMessageTypes.NetworkMessage.");
+if (single_value.union_selection != NetworkMessage::ALT_n__MFDBNQ__Add) TTCN_error("Accessing non-selected field n_MFDBNQ_Add in a template of union type @IsobusNMMessageTypes.NetworkMessage.");
+return *single_value.field_n__MFDBNQ__Add;
+}
+
+N__NT__Request_template& NetworkMessage_template::n__NT__Request()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != NetworkMessage::ALT_n__NT__Request) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_n__NT__Request = new N__NT__Request_template(ANY_VALUE);
+else single_value.field_n__NT__Request = new N__NT__Request_template;
+single_value.union_selection = NetworkMessage::ALT_n__NT__Request;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_n__NT__Request;
+}
+
+const N__NT__Request_template& NetworkMessage_template::n__NT__Request() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field n_NT_Request in a non-specific template of union type @IsobusNMMessageTypes.NetworkMessage.");
+if (single_value.union_selection != NetworkMessage::ALT_n__NT__Request) TTCN_error("Accessing non-selected field n_NT_Request in a template of union type @IsobusNMMessageTypes.NetworkMessage.");
+return *single_value.field_n__NT__Request;
+}
+
+N__NT__Response_template& NetworkMessage_template::n__NT__Response()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != NetworkMessage::ALT_n__NT__Response) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_n__NT__Response = new N__NT__Response_template(ANY_VALUE);
+else single_value.field_n__NT__Response = new N__NT__Response_template;
+single_value.union_selection = NetworkMessage::ALT_n__NT__Response;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_n__NT__Response;
+}
+
+const N__NT__Response_template& NetworkMessage_template::n__NT__Response() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field n_NT_Response in a non-specific template of union type @IsobusNMMessageTypes.NetworkMessage.");
+if (single_value.union_selection != NetworkMessage::ALT_n__NT__Response) TTCN_error("Accessing non-selected field n_NT_Response in a template of union type @IsobusNMMessageTypes.NetworkMessage.");
+return *single_value.field_n__NT__Response;
+}
+
+N__NTX__Request_template& NetworkMessage_template::n__NTX__Request()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != NetworkMessage::ALT_n__NTX__Request) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_n__NTX__Request = new N__NTX__Request_template(ANY_VALUE);
+else single_value.field_n__NTX__Request = new N__NTX__Request_template;
+single_value.union_selection = NetworkMessage::ALT_n__NTX__Request;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_n__NTX__Request;
+}
+
+const N__NTX__Request_template& NetworkMessage_template::n__NTX__Request() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field n_NTX_Request in a non-specific template of union type @IsobusNMMessageTypes.NetworkMessage.");
+if (single_value.union_selection != NetworkMessage::ALT_n__NTX__Request) TTCN_error("Accessing non-selected field n_NTX_Request in a template of union type @IsobusNMMessageTypes.NetworkMessage.");
+return *single_value.field_n__NTX__Request;
+}
+
+N__NTX__Response_template& NetworkMessage_template::n__NTX__Response()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != NetworkMessage::ALT_n__NTX__Response) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_n__NTX__Response = new N__NTX__Response_template(ANY_VALUE);
+else single_value.field_n__NTX__Response = new N__NTX__Response_template;
+single_value.union_selection = NetworkMessage::ALT_n__NTX__Response;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_n__NTX__Response;
+}
+
+const N__NTX__Response_template& NetworkMessage_template::n__NTX__Response() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field n_NTX_Response in a non-specific template of union type @IsobusNMMessageTypes.NetworkMessage.");
+if (single_value.union_selection != NetworkMessage::ALT_n__NTX__Response) TTCN_error("Accessing non-selected field n_NTX_Response in a template of union type @IsobusNMMessageTypes.NetworkMessage.");
+return *single_value.field_n__NTX__Response;
+}
+
+N__GP__Request_template& NetworkMessage_template::n__GP__Request()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != NetworkMessage::ALT_n__GP__Request) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_n__GP__Request = new N__GP__Request_template(ANY_VALUE);
+else single_value.field_n__GP__Request = new N__GP__Request_template;
+single_value.union_selection = NetworkMessage::ALT_n__GP__Request;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_n__GP__Request;
+}
+
+const N__GP__Request_template& NetworkMessage_template::n__GP__Request() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field n_GP_Request in a non-specific template of union type @IsobusNMMessageTypes.NetworkMessage.");
+if (single_value.union_selection != NetworkMessage::ALT_n__GP__Request) TTCN_error("Accessing non-selected field n_GP_Request in a template of union type @IsobusNMMessageTypes.NetworkMessage.");
+return *single_value.field_n__GP__Request;
+}
+
+N__GP__Response_template& NetworkMessage_template::n__GP__Response()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != NetworkMessage::ALT_n__GP__Response) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_n__GP__Response = new N__GP__Response_template(ANY_VALUE);
+else single_value.field_n__GP__Response = new N__GP__Response_template;
+single_value.union_selection = NetworkMessage::ALT_n__GP__Response;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_n__GP__Response;
+}
+
+const N__GP__Response_template& NetworkMessage_template::n__GP__Response() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field n_GP_Response in a non-specific template of union type @IsobusNMMessageTypes.NetworkMessage.");
+if (single_value.union_selection != NetworkMessage::ALT_n__GP__Response) TTCN_error("Accessing non-selected field n_GP_Response in a template of union type @IsobusNMMessageTypes.NetworkMessage.");
+return *single_value.field_n__GP__Response;
+}
+
+N__GP__Reset__Statistics_template& NetworkMessage_template::n__GP__Reset__Statistics()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != NetworkMessage::ALT_n__GP__Reset__Statistics) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_n__GP__Reset__Statistics = new N__GP__Reset__Statistics_template(ANY_VALUE);
+else single_value.field_n__GP__Reset__Statistics = new N__GP__Reset__Statistics_template;
+single_value.union_selection = NetworkMessage::ALT_n__GP__Reset__Statistics;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_n__GP__Reset__Statistics;
+}
+
+const N__GP__Reset__Statistics_template& NetworkMessage_template::n__GP__Reset__Statistics() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field n_GP_Reset_Statistics in a non-specific template of union type @IsobusNMMessageTypes.NetworkMessage.");
+if (single_value.union_selection != NetworkMessage::ALT_n__GP__Reset__Statistics) TTCN_error("Accessing non-selected field n_GP_Reset_Statistics in a template of union type @IsobusNMMessageTypes.NetworkMessage.");
+return *single_value.field_n__GP__Reset__Statistics;
+}
+
+N__SP__Request_template& NetworkMessage_template::n__SP__Request()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != NetworkMessage::ALT_n__SP__Request) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_n__SP__Request = new N__SP__Request_template(ANY_VALUE);
+else single_value.field_n__SP__Request = new N__SP__Request_template;
+single_value.union_selection = NetworkMessage::ALT_n__SP__Request;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_n__SP__Request;
+}
+
+const N__SP__Request_template& NetworkMessage_template::n__SP__Request() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field n_SP_Request in a non-specific template of union type @IsobusNMMessageTypes.NetworkMessage.");
+if (single_value.union_selection != NetworkMessage::ALT_n__SP__Request) TTCN_error("Accessing non-selected field n_SP_Request in a template of union type @IsobusNMMessageTypes.NetworkMessage.");
+return *single_value.field_n__SP__Request;
+}
+
+N__SP__Response_template& NetworkMessage_template::n__SP__Response()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != NetworkMessage::ALT_n__SP__Response) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_n__SP__Response = new N__SP__Response_template(ANY_VALUE);
+else single_value.field_n__SP__Response = new N__SP__Response_template;
+single_value.union_selection = NetworkMessage::ALT_n__SP__Response;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_n__SP__Response;
+}
+
+const N__SP__Response_template& NetworkMessage_template::n__SP__Response() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field n_SP_Response in a non-specific template of union type @IsobusNMMessageTypes.NetworkMessage.");
+if (single_value.union_selection != NetworkMessage::ALT_n__SP__Response) TTCN_error("Accessing non-selected field n_SP_Response in a template of union type @IsobusNMMessageTypes.NetworkMessage.");
+return *single_value.field_n__SP__Response;
+}
+
+N__SP__Reset__Statistics_template& NetworkMessage_template::n__SP__Reset__Statistics()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != NetworkMessage::ALT_n__SP__Reset__Statistics) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_n__SP__Reset__Statistics = new N__SP__Reset__Statistics_template(ANY_VALUE);
+else single_value.field_n__SP__Reset__Statistics = new N__SP__Reset__Statistics_template;
+single_value.union_selection = NetworkMessage::ALT_n__SP__Reset__Statistics;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_n__SP__Reset__Statistics;
+}
+
+const N__SP__Reset__Statistics_template& NetworkMessage_template::n__SP__Reset__Statistics() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field n_SP_Reset_Statistics in a non-specific template of union type @IsobusNMMessageTypes.NetworkMessage.");
+if (single_value.union_selection != NetworkMessage::ALT_n__SP__Reset__Statistics) TTCN_error("Accessing non-selected field n_SP_Reset_Statistics in a template of union type @IsobusNMMessageTypes.NetworkMessage.");
+return *single_value.field_n__SP__Reset__Statistics;
+}
+
+N__OC__Request_template& NetworkMessage_template::n__OC__Request()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != NetworkMessage::ALT_n__OC__Request) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_n__OC__Request = new N__OC__Request_template(ANY_VALUE);
+else single_value.field_n__OC__Request = new N__OC__Request_template;
+single_value.union_selection = NetworkMessage::ALT_n__OC__Request;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_n__OC__Request;
+}
+
+const N__OC__Request_template& NetworkMessage_template::n__OC__Request() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field n_OC_Request in a non-specific template of union type @IsobusNMMessageTypes.NetworkMessage.");
+if (single_value.union_selection != NetworkMessage::ALT_n__OC__Request) TTCN_error("Accessing non-selected field n_OC_Request in a template of union type @IsobusNMMessageTypes.NetworkMessage.");
+return *single_value.field_n__OC__Request;
+}
+
+N__OC__Response_template& NetworkMessage_template::n__OC__Response()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != NetworkMessage::ALT_n__OC__Response) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_n__OC__Response = new N__OC__Response_template(ANY_VALUE);
+else single_value.field_n__OC__Response = new N__OC__Response_template;
+single_value.union_selection = NetworkMessage::ALT_n__OC__Response;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_n__OC__Response;
+}
+
+const N__OC__Response_template& NetworkMessage_template::n__OC__Response() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field n_OC_Response in a non-specific template of union type @IsobusNMMessageTypes.NetworkMessage.");
+if (single_value.union_selection != NetworkMessage::ALT_n__OC__Response) TTCN_error("Accessing non-selected field n_OC_Response in a template of union type @IsobusNMMessageTypes.NetworkMessage.");
+return *single_value.field_n__OC__Response;
+}
+
+N__CC__Request_template& NetworkMessage_template::n__CC__Request()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != NetworkMessage::ALT_n__CC__Request) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_n__CC__Request = new N__CC__Request_template(ANY_VALUE);
+else single_value.field_n__CC__Request = new N__CC__Request_template;
+single_value.union_selection = NetworkMessage::ALT_n__CC__Request;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_n__CC__Request;
+}
+
+const N__CC__Request_template& NetworkMessage_template::n__CC__Request() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field n_CC_Request in a non-specific template of union type @IsobusNMMessageTypes.NetworkMessage.");
+if (single_value.union_selection != NetworkMessage::ALT_n__CC__Request) TTCN_error("Accessing non-selected field n_CC_Request in a template of union type @IsobusNMMessageTypes.NetworkMessage.");
+return *single_value.field_n__CC__Request;
+}
+
+N__CC__Response_template& NetworkMessage_template::n__CC__Response()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != NetworkMessage::ALT_n__CC__Response) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_n__CC__Response = new N__CC__Response_template(ANY_VALUE);
+else single_value.field_n__CC__Response = new N__CC__Response_template;
+single_value.union_selection = NetworkMessage::ALT_n__CC__Response;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_n__CC__Response;
+}
+
+const N__CC__Response_template& NetworkMessage_template::n__CC__Response() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field n_CC_Response in a non-specific template of union type @IsobusNMMessageTypes.NetworkMessage.");
+if (single_value.union_selection != NetworkMessage::ALT_n__CC__Response) TTCN_error("Accessing non-selected field n_CC_Response in a template of union type @IsobusNMMessageTypes.NetworkMessage.");
+return *single_value.field_n__CC__Response;
+}
+
+boolean NetworkMessage_template::ischosen(NetworkMessage::union_selection_type checked_selection) const
+{
+if (checked_selection == NetworkMessage::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @IsobusNMMessageTypes.NetworkMessage.");
+switch (template_selection) {
+case SPECIFIC_VALUE:
+if (single_value.union_selection == NetworkMessage::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @IsobusNMMessageTypes.NetworkMessage.");
+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 @IsobusNMMessageTypes.NetworkMessage 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 NetworkMessage_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case NetworkMessage::ALT_n__MFDB__Request:
+TTCN_Logger::log_event_str("{ n_MFDB_Request := ");
+single_value.field_n__MFDB__Request->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case NetworkMessage::ALT_n__MFDB__Response:
+TTCN_Logger::log_event_str("{ n_MFDB_Response := ");
+single_value.field_n__MFDB__Response->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case NetworkMessage::ALT_n__MFDB__Add:
+TTCN_Logger::log_event_str("{ n_MFDB_Add := ");
+single_value.field_n__MFDB__Add->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case NetworkMessage::ALT_n__MFDB__Delete:
+TTCN_Logger::log_event_str("{ n_MFDB_Delete := ");
+single_value.field_n__MFDB__Delete->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case NetworkMessage::ALT_n__MFDB__Clear:
+TTCN_Logger::log_event_str("{ n_MFDB_Clear := ");
+single_value.field_n__MFDB__Clear->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case NetworkMessage::ALT_n__MFDB__Create__Entry:
+TTCN_Logger::log_event_str("{ n_MFDB_Create_Entry := ");
+single_value.field_n__MFDB__Create__Entry->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case NetworkMessage::ALT_n__MFDBNQ__Add:
+TTCN_Logger::log_event_str("{ n_MFDBNQ_Add := ");
+single_value.field_n__MFDBNQ__Add->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case NetworkMessage::ALT_n__NT__Request:
+TTCN_Logger::log_event_str("{ n_NT_Request := ");
+single_value.field_n__NT__Request->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case NetworkMessage::ALT_n__NT__Response:
+TTCN_Logger::log_event_str("{ n_NT_Response := ");
+single_value.field_n__NT__Response->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case NetworkMessage::ALT_n__NTX__Request:
+TTCN_Logger::log_event_str("{ n_NTX_Request := ");
+single_value.field_n__NTX__Request->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case NetworkMessage::ALT_n__NTX__Response:
+TTCN_Logger::log_event_str("{ n_NTX_Response := ");
+single_value.field_n__NTX__Response->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case NetworkMessage::ALT_n__GP__Request:
+TTCN_Logger::log_event_str("{ n_GP_Request := ");
+single_value.field_n__GP__Request->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case NetworkMessage::ALT_n__GP__Response:
+TTCN_Logger::log_event_str("{ n_GP_Response := ");
+single_value.field_n__GP__Response->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case NetworkMessage::ALT_n__GP__Reset__Statistics:
+TTCN_Logger::log_event_str("{ n_GP_Reset_Statistics := ");
+single_value.field_n__GP__Reset__Statistics->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case NetworkMessage::ALT_n__SP__Request:
+TTCN_Logger::log_event_str("{ n_SP_Request := ");
+single_value.field_n__SP__Request->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case NetworkMessage::ALT_n__SP__Response:
+TTCN_Logger::log_event_str("{ n_SP_Response := ");
+single_value.field_n__SP__Response->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case NetworkMessage::ALT_n__SP__Reset__Statistics:
+TTCN_Logger::log_event_str("{ n_SP_Reset_Statistics := ");
+single_value.field_n__SP__Reset__Statistics->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case NetworkMessage::ALT_n__OC__Request:
+TTCN_Logger::log_event_str("{ n_OC_Request := ");
+single_value.field_n__OC__Request->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case NetworkMessage::ALT_n__OC__Response:
+TTCN_Logger::log_event_str("{ n_OC_Response := ");
+single_value.field_n__OC__Response->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case NetworkMessage::ALT_n__CC__Request:
+TTCN_Logger::log_event_str("{ n_CC_Request := ");
+single_value.field_n__CC__Request->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case NetworkMessage::ALT_n__CC__Response:
+TTCN_Logger::log_event_str("{ n_CC_Response := ");
+single_value.field_n__CC__Response->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 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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void NetworkMessage_template::log_match(const NetworkMessage& 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()) {
+switch (single_value.union_selection) {
+case NetworkMessage::ALT_n__MFDB__Request:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".n_MFDB_Request");
+single_value.field_n__MFDB__Request->log_match(match_value.n__MFDB__Request(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ n_MFDB_Request := ");
+single_value.field_n__MFDB__Request->log_match(match_value.n__MFDB__Request(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case NetworkMessage::ALT_n__MFDB__Response:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".n_MFDB_Response");
+single_value.field_n__MFDB__Response->log_match(match_value.n__MFDB__Response(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ n_MFDB_Response := ");
+single_value.field_n__MFDB__Response->log_match(match_value.n__MFDB__Response(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case NetworkMessage::ALT_n__MFDB__Add:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".n_MFDB_Add");
+single_value.field_n__MFDB__Add->log_match(match_value.n__MFDB__Add(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ n_MFDB_Add := ");
+single_value.field_n__MFDB__Add->log_match(match_value.n__MFDB__Add(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case NetworkMessage::ALT_n__MFDB__Delete:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".n_MFDB_Delete");
+single_value.field_n__MFDB__Delete->log_match(match_value.n__MFDB__Delete(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ n_MFDB_Delete := ");
+single_value.field_n__MFDB__Delete->log_match(match_value.n__MFDB__Delete(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case NetworkMessage::ALT_n__MFDB__Clear:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".n_MFDB_Clear");
+single_value.field_n__MFDB__Clear->log_match(match_value.n__MFDB__Clear(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ n_MFDB_Clear := ");
+single_value.field_n__MFDB__Clear->log_match(match_value.n__MFDB__Clear(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case NetworkMessage::ALT_n__MFDB__Create__Entry:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".n_MFDB_Create_Entry");
+single_value.field_n__MFDB__Create__Entry->log_match(match_value.n__MFDB__Create__Entry(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ n_MFDB_Create_Entry := ");
+single_value.field_n__MFDB__Create__Entry->log_match(match_value.n__MFDB__Create__Entry(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case NetworkMessage::ALT_n__MFDBNQ__Add:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".n_MFDBNQ_Add");
+single_value.field_n__MFDBNQ__Add->log_match(match_value.n__MFDBNQ__Add(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ n_MFDBNQ_Add := ");
+single_value.field_n__MFDBNQ__Add->log_match(match_value.n__MFDBNQ__Add(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case NetworkMessage::ALT_n__NT__Request:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".n_NT_Request");
+single_value.field_n__NT__Request->log_match(match_value.n__NT__Request(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ n_NT_Request := ");
+single_value.field_n__NT__Request->log_match(match_value.n__NT__Request(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case NetworkMessage::ALT_n__NT__Response:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".n_NT_Response");
+single_value.field_n__NT__Response->log_match(match_value.n__NT__Response(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ n_NT_Response := ");
+single_value.field_n__NT__Response->log_match(match_value.n__NT__Response(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case NetworkMessage::ALT_n__NTX__Request:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".n_NTX_Request");
+single_value.field_n__NTX__Request->log_match(match_value.n__NTX__Request(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ n_NTX_Request := ");
+single_value.field_n__NTX__Request->log_match(match_value.n__NTX__Request(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case NetworkMessage::ALT_n__NTX__Response:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".n_NTX_Response");
+single_value.field_n__NTX__Response->log_match(match_value.n__NTX__Response(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ n_NTX_Response := ");
+single_value.field_n__NTX__Response->log_match(match_value.n__NTX__Response(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case NetworkMessage::ALT_n__GP__Request:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".n_GP_Request");
+single_value.field_n__GP__Request->log_match(match_value.n__GP__Request(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ n_GP_Request := ");
+single_value.field_n__GP__Request->log_match(match_value.n__GP__Request(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case NetworkMessage::ALT_n__GP__Response:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".n_GP_Response");
+single_value.field_n__GP__Response->log_match(match_value.n__GP__Response(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ n_GP_Response := ");
+single_value.field_n__GP__Response->log_match(match_value.n__GP__Response(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case NetworkMessage::ALT_n__GP__Reset__Statistics:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".n_GP_Reset_Statistics");
+single_value.field_n__GP__Reset__Statistics->log_match(match_value.n__GP__Reset__Statistics(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ n_GP_Reset_Statistics := ");
+single_value.field_n__GP__Reset__Statistics->log_match(match_value.n__GP__Reset__Statistics(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case NetworkMessage::ALT_n__SP__Request:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".n_SP_Request");
+single_value.field_n__SP__Request->log_match(match_value.n__SP__Request(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ n_SP_Request := ");
+single_value.field_n__SP__Request->log_match(match_value.n__SP__Request(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case NetworkMessage::ALT_n__SP__Response:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".n_SP_Response");
+single_value.field_n__SP__Response->log_match(match_value.n__SP__Response(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ n_SP_Response := ");
+single_value.field_n__SP__Response->log_match(match_value.n__SP__Response(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case NetworkMessage::ALT_n__SP__Reset__Statistics:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".n_SP_Reset_Statistics");
+single_value.field_n__SP__Reset__Statistics->log_match(match_value.n__SP__Reset__Statistics(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ n_SP_Reset_Statistics := ");
+single_value.field_n__SP__Reset__Statistics->log_match(match_value.n__SP__Reset__Statistics(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case NetworkMessage::ALT_n__OC__Request:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".n_OC_Request");
+single_value.field_n__OC__Request->log_match(match_value.n__OC__Request(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ n_OC_Request := ");
+single_value.field_n__OC__Request->log_match(match_value.n__OC__Request(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case NetworkMessage::ALT_n__OC__Response:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".n_OC_Response");
+single_value.field_n__OC__Response->log_match(match_value.n__OC__Response(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ n_OC_Response := ");
+single_value.field_n__OC__Response->log_match(match_value.n__OC__Response(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case NetworkMessage::ALT_n__CC__Request:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".n_CC_Request");
+single_value.field_n__CC__Request->log_match(match_value.n__CC__Request(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ n_CC_Request := ");
+single_value.field_n__CC__Request->log_match(match_value.n__CC__Request(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case NetworkMessage::ALT_n__CC__Response:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".n_CC_Response");
+single_value.field_n__CC__Response->log_match(match_value.n__CC__Response(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ n_CC_Response := ");
+single_value.field_n__CC__Response->log_match(match_value.n__CC__Response(), 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 NetworkMessage_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 NetworkMessage::ALT_n__MFDB__Request:
+single_value.field_n__MFDB__Request->encode_text(text_buf);
+break;
+case NetworkMessage::ALT_n__MFDB__Response:
+single_value.field_n__MFDB__Response->encode_text(text_buf);
+break;
+case NetworkMessage::ALT_n__MFDB__Add:
+single_value.field_n__MFDB__Add->encode_text(text_buf);
+break;
+case NetworkMessage::ALT_n__MFDB__Delete:
+single_value.field_n__MFDB__Delete->encode_text(text_buf);
+break;
+case NetworkMessage::ALT_n__MFDB__Clear:
+single_value.field_n__MFDB__Clear->encode_text(text_buf);
+break;
+case NetworkMessage::ALT_n__MFDB__Create__Entry:
+single_value.field_n__MFDB__Create__Entry->encode_text(text_buf);
+break;
+case NetworkMessage::ALT_n__MFDBNQ__Add:
+single_value.field_n__MFDBNQ__Add->encode_text(text_buf);
+break;
+case NetworkMessage::ALT_n__NT__Request:
+single_value.field_n__NT__Request->encode_text(text_buf);
+break;
+case NetworkMessage::ALT_n__NT__Response:
+single_value.field_n__NT__Response->encode_text(text_buf);
+break;
+case NetworkMessage::ALT_n__NTX__Request:
+single_value.field_n__NTX__Request->encode_text(text_buf);
+break;
+case NetworkMessage::ALT_n__NTX__Response:
+single_value.field_n__NTX__Response->encode_text(text_buf);
+break;
+case NetworkMessage::ALT_n__GP__Request:
+single_value.field_n__GP__Request->encode_text(text_buf);
+break;
+case NetworkMessage::ALT_n__GP__Response:
+single_value.field_n__GP__Response->encode_text(text_buf);
+break;
+case NetworkMessage::ALT_n__GP__Reset__Statistics:
+single_value.field_n__GP__Reset__Statistics->encode_text(text_buf);
+break;
+case NetworkMessage::ALT_n__SP__Request:
+single_value.field_n__SP__Request->encode_text(text_buf);
+break;
+case NetworkMessage::ALT_n__SP__Response:
+single_value.field_n__SP__Response->encode_text(text_buf);
+break;
+case NetworkMessage::ALT_n__SP__Reset__Statistics:
+single_value.field_n__SP__Reset__Statistics->encode_text(text_buf);
+break;
+case NetworkMessage::ALT_n__OC__Request:
+single_value.field_n__OC__Request->encode_text(text_buf);
+break;
+case NetworkMessage::ALT_n__OC__Response:
+single_value.field_n__OC__Response->encode_text(text_buf);
+break;
+case NetworkMessage::ALT_n__CC__Request:
+single_value.field_n__CC__Request->encode_text(text_buf);
+break;
+case NetworkMessage::ALT_n__CC__Response:
+single_value.field_n__CC__Response->encode_text(text_buf);
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @IsobusNMMessageTypes.NetworkMessage.");
+}
+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 @IsobusNMMessageTypes.NetworkMessage.");
+}
+}
+
+void NetworkMessage_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+{
+single_value.union_selection = NetworkMessage::UNBOUND_VALUE;
+NetworkMessage::union_selection_type new_selection = (NetworkMessage::union_selection_type)text_buf.pull_int().get_val();
+switch (new_selection) {
+case NetworkMessage::ALT_n__MFDB__Request:
+single_value.field_n__MFDB__Request = new N__MFDB__Request_template;
+single_value.field_n__MFDB__Request->decode_text(text_buf);
+break;
+case NetworkMessage::ALT_n__MFDB__Response:
+single_value.field_n__MFDB__Response = new N__MFDB__Response_template;
+single_value.field_n__MFDB__Response->decode_text(text_buf);
+break;
+case NetworkMessage::ALT_n__MFDB__Add:
+single_value.field_n__MFDB__Add = new N__MFDB__Add_template;
+single_value.field_n__MFDB__Add->decode_text(text_buf);
+break;
+case NetworkMessage::ALT_n__MFDB__Delete:
+single_value.field_n__MFDB__Delete = new N__MFDB__Delete_template;
+single_value.field_n__MFDB__Delete->decode_text(text_buf);
+break;
+case NetworkMessage::ALT_n__MFDB__Clear:
+single_value.field_n__MFDB__Clear = new N__MFDB__Clear_template;
+single_value.field_n__MFDB__Clear->decode_text(text_buf);
+break;
+case NetworkMessage::ALT_n__MFDB__Create__Entry:
+single_value.field_n__MFDB__Create__Entry = new N__MFDB__Create__Entry_template;
+single_value.field_n__MFDB__Create__Entry->decode_text(text_buf);
+break;
+case NetworkMessage::ALT_n__MFDBNQ__Add:
+single_value.field_n__MFDBNQ__Add = new N__MFDBNQ__Add_template;
+single_value.field_n__MFDBNQ__Add->decode_text(text_buf);
+break;
+case NetworkMessage::ALT_n__NT__Request:
+single_value.field_n__NT__Request = new N__NT__Request_template;
+single_value.field_n__NT__Request->decode_text(text_buf);
+break;
+case NetworkMessage::ALT_n__NT__Response:
+single_value.field_n__NT__Response = new N__NT__Response_template;
+single_value.field_n__NT__Response->decode_text(text_buf);
+break;
+case NetworkMessage::ALT_n__NTX__Request:
+single_value.field_n__NTX__Request = new N__NTX__Request_template;
+single_value.field_n__NTX__Request->decode_text(text_buf);
+break;
+case NetworkMessage::ALT_n__NTX__Response:
+single_value.field_n__NTX__Response = new N__NTX__Response_template;
+single_value.field_n__NTX__Response->decode_text(text_buf);
+break;
+case NetworkMessage::ALT_n__GP__Request:
+single_value.field_n__GP__Request = new N__GP__Request_template;
+single_value.field_n__GP__Request->decode_text(text_buf);
+break;
+case NetworkMessage::ALT_n__GP__Response:
+single_value.field_n__GP__Response = new N__GP__Response_template;
+single_value.field_n__GP__Response->decode_text(text_buf);
+break;
+case NetworkMessage::ALT_n__GP__Reset__Statistics:
+single_value.field_n__GP__Reset__Statistics = new N__GP__Reset__Statistics_template;
+single_value.field_n__GP__Reset__Statistics->decode_text(text_buf);
+break;
+case NetworkMessage::ALT_n__SP__Request:
+single_value.field_n__SP__Request = new N__SP__Request_template;
+single_value.field_n__SP__Request->decode_text(text_buf);
+break;
+case NetworkMessage::ALT_n__SP__Response:
+single_value.field_n__SP__Response = new N__SP__Response_template;
+single_value.field_n__SP__Response->decode_text(text_buf);
+break;
+case NetworkMessage::ALT_n__SP__Reset__Statistics:
+single_value.field_n__SP__Reset__Statistics = new N__SP__Reset__Statistics_template;
+single_value.field_n__SP__Reset__Statistics->decode_text(text_buf);
+break;
+case NetworkMessage::ALT_n__OC__Request:
+single_value.field_n__OC__Request = new N__OC__Request_template;
+single_value.field_n__OC__Request->decode_text(text_buf);
+break;
+case NetworkMessage::ALT_n__OC__Response:
+single_value.field_n__OC__Response = new N__OC__Response_template;
+single_value.field_n__OC__Response->decode_text(text_buf);
+break;
+case NetworkMessage::ALT_n__CC__Request:
+single_value.field_n__CC__Request = new N__CC__Request_template;
+single_value.field_n__CC__Request->decode_text(text_buf);
+break;
+case NetworkMessage::ALT_n__CC__Response:
+single_value.field_n__CC__Response = new N__CC__Response_template;
+single_value.field_n__CC__Response->decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @IsobusNMMessageTypes.NetworkMessage.");
+}
+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 NetworkMessage_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 @IsobusNMMessageTypes.NetworkMessage.");
+}
+}
+
+boolean NetworkMessage_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean NetworkMessage_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 NetworkMessage_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 `@IsobusNMMessageTypes.NetworkMessage'");
+    }
+    if (strcmp("n_MFDB_Request", param_field) == 0) {
+      n__MFDB__Request().set_param(param);
+      return;
+    } else if (strcmp("n_MFDB_Response", param_field) == 0) {
+      n__MFDB__Response().set_param(param);
+      return;
+    } else if (strcmp("n_MFDB_Add", param_field) == 0) {
+      n__MFDB__Add().set_param(param);
+      return;
+    } else if (strcmp("n_MFDB_Delete", param_field) == 0) {
+      n__MFDB__Delete().set_param(param);
+      return;
+    } else if (strcmp("n_MFDB_Clear", param_field) == 0) {
+      n__MFDB__Clear().set_param(param);
+      return;
+    } else if (strcmp("n_MFDB_Create_Entry", param_field) == 0) {
+      n__MFDB__Create__Entry().set_param(param);
+      return;
+    } else if (strcmp("n_MFDBNQ_Add", param_field) == 0) {
+      n__MFDBNQ__Add().set_param(param);
+      return;
+    } else if (strcmp("n_NT_Request", param_field) == 0) {
+      n__NT__Request().set_param(param);
+      return;
+    } else if (strcmp("n_NT_Response", param_field) == 0) {
+      n__NT__Response().set_param(param);
+      return;
+    } else if (strcmp("n_NTX_Request", param_field) == 0) {
+      n__NTX__Request().set_param(param);
+      return;
+    } else if (strcmp("n_NTX_Response", param_field) == 0) {
+      n__NTX__Response().set_param(param);
+      return;
+    } else if (strcmp("n_GP_Request", param_field) == 0) {
+      n__GP__Request().set_param(param);
+      return;
+    } else if (strcmp("n_GP_Response", param_field) == 0) {
+      n__GP__Response().set_param(param);
+      return;
+    } else if (strcmp("n_GP_Reset_Statistics", param_field) == 0) {
+      n__GP__Reset__Statistics().set_param(param);
+      return;
+    } else if (strcmp("n_SP_Request", param_field) == 0) {
+      n__SP__Request().set_param(param);
+      return;
+    } else if (strcmp("n_SP_Response", param_field) == 0) {
+      n__SP__Response().set_param(param);
+      return;
+    } else if (strcmp("n_SP_Reset_Statistics", param_field) == 0) {
+      n__SP__Reset__Statistics().set_param(param);
+      return;
+    } else if (strcmp("n_OC_Request", param_field) == 0) {
+      n__OC__Request().set_param(param);
+      return;
+    } else if (strcmp("n_OC_Response", param_field) == 0) {
+      n__OC__Response().set_param(param);
+      return;
+    } else if (strcmp("n_CC_Request", param_field) == 0) {
+      n__CC__Request().set_param(param);
+      return;
+    } else if (strcmp("n_CC_Response", param_field) == 0) {
+      n__CC__Response().set_param(param);
+      return;
+    } else param.error("Field `%s' not found in union template type `@IsobusNMMessageTypes.NetworkMessage'", 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: {
+    NetworkMessage_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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", "@IsobusNMMessageTypes.NetworkMessage");
+    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, "n_MFDB_Request")) {
+      n__MFDB__Request().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "n_MFDB_Response")) {
+      n__MFDB__Response().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "n_MFDB_Add")) {
+      n__MFDB__Add().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "n_MFDB_Delete")) {
+      n__MFDB__Delete().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "n_MFDB_Clear")) {
+      n__MFDB__Clear().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "n_MFDB_Create_Entry")) {
+      n__MFDB__Create__Entry().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "n_MFDBNQ_Add")) {
+      n__MFDBNQ__Add().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "n_NT_Request")) {
+      n__NT__Request().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "n_NT_Response")) {
+      n__NT__Response().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "n_NTX_Request")) {
+      n__NTX__Request().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "n_NTX_Response")) {
+      n__NTX__Response().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "n_GP_Request")) {
+      n__GP__Request().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "n_GP_Response")) {
+      n__GP__Response().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "n_GP_Reset_Statistics")) {
+      n__GP__Reset__Statistics().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "n_SP_Request")) {
+      n__SP__Request().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "n_SP_Response")) {
+      n__SP__Response().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "n_SP_Reset_Statistics")) {
+      n__SP__Reset__Statistics().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "n_OC_Request")) {
+      n__OC__Request().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "n_OC_Response")) {
+      n__OC__Response().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "n_CC_Request")) {
+      n__CC__Request().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "n_CC_Response")) {
+      n__CC__Response().set_param(*mp_last);
+      break;
+    }
+    mp_last->error("Field %s does not exist in type @IsobusNMMessageTypes.NetworkMessage.", last_name);
+  } break;
+  default:
+    param.type_error("union template", "@IsobusNMMessageTypes.NetworkMessage");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void NetworkMessage_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 NetworkMessage::ALT_n__MFDB__Request:
+single_value.field_n__MFDB__Request->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NetworkMessage");
+return;
+case NetworkMessage::ALT_n__MFDB__Response:
+single_value.field_n__MFDB__Response->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NetworkMessage");
+return;
+case NetworkMessage::ALT_n__MFDB__Add:
+single_value.field_n__MFDB__Add->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NetworkMessage");
+return;
+case NetworkMessage::ALT_n__MFDB__Delete:
+single_value.field_n__MFDB__Delete->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NetworkMessage");
+return;
+case NetworkMessage::ALT_n__MFDB__Clear:
+single_value.field_n__MFDB__Clear->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NetworkMessage");
+return;
+case NetworkMessage::ALT_n__MFDB__Create__Entry:
+single_value.field_n__MFDB__Create__Entry->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NetworkMessage");
+return;
+case NetworkMessage::ALT_n__MFDBNQ__Add:
+single_value.field_n__MFDBNQ__Add->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NetworkMessage");
+return;
+case NetworkMessage::ALT_n__NT__Request:
+single_value.field_n__NT__Request->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NetworkMessage");
+return;
+case NetworkMessage::ALT_n__NT__Response:
+single_value.field_n__NT__Response->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NetworkMessage");
+return;
+case NetworkMessage::ALT_n__NTX__Request:
+single_value.field_n__NTX__Request->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NetworkMessage");
+return;
+case NetworkMessage::ALT_n__NTX__Response:
+single_value.field_n__NTX__Response->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NetworkMessage");
+return;
+case NetworkMessage::ALT_n__GP__Request:
+single_value.field_n__GP__Request->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NetworkMessage");
+return;
+case NetworkMessage::ALT_n__GP__Response:
+single_value.field_n__GP__Response->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NetworkMessage");
+return;
+case NetworkMessage::ALT_n__GP__Reset__Statistics:
+single_value.field_n__GP__Reset__Statistics->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NetworkMessage");
+return;
+case NetworkMessage::ALT_n__SP__Request:
+single_value.field_n__SP__Request->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NetworkMessage");
+return;
+case NetworkMessage::ALT_n__SP__Response:
+single_value.field_n__SP__Response->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NetworkMessage");
+return;
+case NetworkMessage::ALT_n__SP__Reset__Statistics:
+single_value.field_n__SP__Reset__Statistics->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NetworkMessage");
+return;
+case NetworkMessage::ALT_n__OC__Request:
+single_value.field_n__OC__Request->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NetworkMessage");
+return;
+case NetworkMessage::ALT_n__OC__Response:
+single_value.field_n__OC__Response->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NetworkMessage");
+return;
+case NetworkMessage::ALT_n__CC__Request:
+single_value.field_n__CC__Request->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NetworkMessage");
+return;
+case NetworkMessage::ALT_n__CC__Response:
+single_value.field_n__CC__Response->check_restriction(t_res, t_name ? t_name : "@IsobusNMMessageTypes.NetworkMessage");
+return;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @IsobusNMMessageTypes.NetworkMessage.");
+}
+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 : "@IsobusNMMessageTypes.NetworkMessage");
+}
+
+
+/* Bodies of functions, altsteps and testcases */
+
+boolean operator==(null_type, const N__MFDBNQ__Add_pgnEntries& other_value)
+{
+if (other_value.val_ptr == NULL)
+TTCN_error("The right operand of comparison is an unbound value of type @IsobusNMMessageTypes.N_MFDBNQ_Add.pgnEntries.");
+return other_value.val_ptr->n_elements == 0;
+}
+
+boolean operator==(null_type, const N__NTX__Response_sourceaddress__NAME__pairs& other_value)
+{
+if (other_value.val_ptr == NULL)
+TTCN_error("The right operand of comparison is an unbound value of type @IsobusNMMessageTypes.N_NTX_Response.sourceaddress_NAME_pairs.");
+return other_value.val_ptr->n_elements == 0;
+}
+
+boolean operator==(null_type, const N__GP__Request_parametricIdentifiers& other_value)
+{
+if (other_value.val_ptr == NULL)
+TTCN_error("The right operand of comparison is an unbound value of type @IsobusNMMessageTypes.N_GP_Request.parametricIdentifiers.");
+return other_value.val_ptr->n_elements == 0;
+}
+
+boolean operator==(null_type, const N__SP__Request_parametricIdentifiers& other_value)
+{
+if (other_value.val_ptr == NULL)
+TTCN_error("The right operand of comparison is an unbound value of type @IsobusNMMessageTypes.N_SP_Request.parametricIdentifiers.");
+return other_value.val_ptr->n_elements == 0;
+}
+
+
+/* Bodies of static functions */
+
+static void pre_init_module()
+{
+TTCN_Location current_location("IsobusNMMessageTypes.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "IsobusNMMessageTypes");
+General__Types::module_object.pre_init_module();
+IsobusMessageTypes::module_object.pre_init_module();
+}
+
+static void post_init_module()
+{
+TTCN_Location current_location("IsobusNMMessageTypes.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "IsobusNMMessageTypes");
+General__Types::module_object.post_init_module();
+IsobusMessageTypes::module_object.post_init_module();
+}
+
+
+} /* end of namespace */
diff --git a/demo/IsobusNMMessageTypes.d b/demo/IsobusNMMessageTypes.d
new file mode 100644
index 0000000..c5de206
--- /dev/null
+++ b/demo/IsobusNMMessageTypes.d
@@ -0,0 +1,59 @@
+IsobusNMMessageTypes.o IsobusNMMessageTypes.d : IsobusNMMessageTypes.cc IsobusNMMessageTypes.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TTCN3.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/version.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/cversion.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Types.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Vector.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Error.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Basetype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Encdec.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RInt.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON_Tokenizer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Logger.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Template.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Integer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ttcn3float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Boolean.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Null.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Optional.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Param_Types.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/memory.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/BER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Textbuf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Parameters.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XmlReader.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Objid.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Verdicttype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Component.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Bitstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RAW.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/CharCoding.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Hexstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Octetstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Any.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Universal_charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Struct_of.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Array.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_CharacterString.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_External.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TEXT.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_EmbeddedPDV.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Addfunc.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Timer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Port.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Event_Handler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/TitanLoggerApiSimple.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/PreGenRecordOf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Module_list.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Snapshot.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Default.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Runtime.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/OER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Profiler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ProfilerTools.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Debugger.hh \
+ General_Types.hh IsobusMessageTypes.hh
diff --git a/demo/IsobusNMMessageTypes.hh b/demo/IsobusNMMessageTypes.hh
new file mode 100644
index 0000000..72c6bb4
--- /dev/null
+++ b/demo/IsobusNMMessageTypes.hh
@@ -0,0 +1,5339 @@
+// This C++ header file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+#ifndef IsobusNMMessageTypes_HH
+#define IsobusNMMessageTypes_HH
+
+#ifdef TITAN_RUNTIME_2
+#error Generated code does not match with used runtime.\
+ Code was generated without -R option but -DTITAN_RUNTIME_2 was used.
+#endif
+
+/* Header file includes */
+
+#include <TTCN3.hh>
+#include "General_Types.hh"
+#include "IsobusMessageTypes.hh"
+
+#if TTCN3_VERSION != 60600
+#error Version mismatch detected.\
+ Please check the version of the TTCN-3 compiler and the base library.\
+ Run make clean and rebuild the project if the version of the compiler changed recently.
+#endif
+
+#ifndef LINUX
+#error This file should be compiled on LINUX
+#endif
+
+#undef IsobusNMMessageTypes_HH
+#endif
+
+namespace IsobusNMMessageTypes {
+
+/* Forward declarations of classes */
+
+class NAME;
+class NAME_template;
+class CannotClaimSourceAddress;
+class CannotClaimSourceAddress_template;
+class AddressClaimed;
+class AddressClaimed_template;
+class RequestForAddressClaimed;
+class RequestForAddressClaimed_template;
+class CommandedAddress;
+class CommandedAddress_template;
+class e__PortNumber;
+class e__PortNumber_template;
+class PortPair;
+class PortPair_template;
+class N__MFDB__Request;
+class N__MFDB__Request_template;
+class e__FilterMode;
+class e__FilterMode_template;
+typedef PreGenRecordOf::PREGEN__RECORD__OF__INTEGER N__MFDB__Response_pgnEntries;
+typedef PreGenRecordOf::PREGEN__RECORD__OF__INTEGER_template N__MFDB__Response_pgnEntries_template;
+class N__MFDB__Response;
+class N__MFDB__Response_template;
+typedef PreGenRecordOf::PREGEN__RECORD__OF__INTEGER N__MFDB__Add_pgnEntries;
+typedef PreGenRecordOf::PREGEN__RECORD__OF__INTEGER_template N__MFDB__Add_pgnEntries_template;
+class N__MFDB__Add;
+class N__MFDB__Add_template;
+typedef PreGenRecordOf::PREGEN__RECORD__OF__INTEGER N__MFDB__Delete_pgnEntries;
+typedef PreGenRecordOf::PREGEN__RECORD__OF__INTEGER_template N__MFDB__Delete_pgnEntries_template;
+class N__MFDB__Delete;
+class N__MFDB__Delete_template;
+class N__MFDB__Clear;
+class N__MFDB__Clear_template;
+typedef PreGenRecordOf::PREGEN__RECORD__OF__INTEGER N__MFDB__Create__Entry_pgnEntries;
+typedef PreGenRecordOf::PREGEN__RECORD__OF__INTEGER_template N__MFDB__Create__Entry_pgnEntries_template;
+class N__MFDB__Create__Entry;
+class N__MFDB__Create__Entry_template;
+class PGNEntry;
+class PGNEntry_template;
+class N__MFDBNQ__Add_pgnEntries;
+class N__MFDBNQ__Add_pgnEntries_template;
+class N__MFDBNQ__Add;
+class N__MFDBNQ__Add_template;
+class PortNibble;
+class PortNibble_template;
+class N__NT__Request;
+class N__NT__Request_template;
+typedef PreGenRecordOf::PREGEN__RECORD__OF__OCTETSTRING N__NT__Response_SourceAddressEntries;
+typedef PreGenRecordOf::PREGEN__RECORD__OF__OCTETSTRING_template N__NT__Response_SourceAddressEntries_template;
+class N__NT__Response;
+class N__NT__Response_template;
+class N__NTX__Request;
+class N__NTX__Request_template;
+class SA__NAME__pair;
+class SA__NAME__pair_template;
+class N__NTX__Response_sourceaddress__NAME__pairs;
+class N__NTX__Response_sourceaddress__NAME__pairs_template;
+class N__NTX__Response;
+class N__NTX__Response_template;
+class e__ParametricIdentifier;
+class e__ParametricIdentifier_template;
+class N__GP__Request_parametricIdentifiers;
+class N__GP__Request_parametricIdentifiers_template;
+class N__GP__Request;
+class N__GP__Request_template;
+class RequestedParametric;
+class RequestedParametric_template;
+typedef PreGenRecordOf::PREGEN__RECORD__OF__OCTETSTRING N__GP__Response_requestedParametrics;
+typedef PreGenRecordOf::PREGEN__RECORD__OF__OCTETSTRING_template N__GP__Response_requestedParametrics_template;
+class N__GP__Response;
+class N__GP__Response_template;
+class N__GP__Reset__Statistics;
+class N__GP__Reset__Statistics_template;
+class N__SP__Request_parametricIdentifiers;
+class N__SP__Request_parametricIdentifiers_template;
+class N__SP__Request;
+class N__SP__Request_template;
+typedef PreGenRecordOf::PREGEN__RECORD__OF__OCTETSTRING N__SP__Response_requestedParametrics;
+typedef PreGenRecordOf::PREGEN__RECORD__OF__OCTETSTRING_template N__SP__Response_requestedParametrics_template;
+class N__SP__Response;
+class N__SP__Response_template;
+class N__SP__Reset__Statistics;
+class N__SP__Reset__Statistics_template;
+class N__OC__Request;
+class N__OC__Request_template;
+class N__CC__Request;
+class N__CC__Request_template;
+class e__Status;
+class e__Status_template;
+class e__FailureReasonCode;
+class e__FailureReasonCode_template;
+class N__OC__Response;
+class N__OC__Response_template;
+class N__CC__Response;
+class N__CC__Response_template;
+class NetworkMessage;
+class NetworkMessage_template;
+
+} /* end of namespace */
+
+#ifndef IsobusNMMessageTypes_HH
+#define IsobusNMMessageTypes_HH
+
+namespace IsobusNMMessageTypes {
+
+/* Type definitions */
+
+typedef OCTETSTRING DestinationAddress;
+typedef OCTETSTRING_template DestinationAddress_template;
+typedef OCTETSTRING PDUFormat;
+typedef OCTETSTRING_template PDUFormat_template;
+typedef OCTETSTRING SourceAddress;
+typedef OCTETSTRING_template SourceAddress_template;
+typedef BITSTRING Priority;
+typedef BITSTRING_template Priority_template;
+typedef BITSTRING SelfConfigurableAddressBits;
+typedef BITSTRING_template SelfConfigurableAddressBits_template;
+typedef BITSTRING IndustryGroupBits;
+typedef BITSTRING_template IndustryGroupBits_template;
+typedef BITSTRING DeviceClassInstanceBits;
+typedef BITSTRING_template DeviceClassInstanceBits_template;
+typedef BITSTRING DeviceClassBits;
+typedef BITSTRING_template DeviceClassBits_template;
+typedef BITSTRING ReservedBits;
+typedef BITSTRING_template ReservedBits_template;
+typedef BITSTRING FunctionBits;
+typedef BITSTRING_template FunctionBits_template;
+typedef BITSTRING FunctionInstanceBits;
+typedef BITSTRING_template FunctionInstanceBits_template;
+typedef BITSTRING ECUInstanceBits;
+typedef BITSTRING_template ECUInstanceBits_template;
+typedef BITSTRING ManufacturerCodeBits;
+typedef BITSTRING_template ManufacturerCodeBits_template;
+typedef BITSTRING IdentityNumberBits;
+typedef BITSTRING_template IdentityNumberBits_template;
+typedef INTEGER Function;
+typedef INTEGER_template Function_template;
+typedef OCTETSTRING Buffersize;
+typedef OCTETSTRING_template Buffersize_template;
+typedef OCTETSTRING MaximumFilterDatabaseSize;
+typedef OCTETSTRING_template MaximumFilterDatabaseSize_template;
+typedef OCTETSTRING NumberOfFilterDatabaseEntries;
+typedef OCTETSTRING_template NumberOfFilterDatabaseEntries_template;
+typedef OCTETSTRING MaximumNumberOfMessagesReceivedPerSecond;
+typedef OCTETSTRING_template MaximumNumberOfMessagesReceivedPerSecond_template;
+typedef OCTETSTRING MaximumNumberOfMessagesForwardedPerSecond;
+typedef OCTETSTRING_template MaximumNumberOfMessagesForwardedPerSecond_template;
+typedef OCTETSTRING MaximumNumberOfMessagesFilteredPerSecond;
+typedef OCTETSTRING_template MaximumNumberOfMessagesFilteredPerSecond_template;
+typedef OCTETSTRING MaximumTransitDelayTime__ms;
+typedef OCTETSTRING_template MaximumTransitDelayTime__ms_template;
+typedef OCTETSTRING AverageTransitDelayTime__ms;
+typedef OCTETSTRING_template AverageTransitDelayTime__ms_template;
+typedef OCTETSTRING NumberOfMessagesLostDueToBufferOverflow;
+typedef OCTETSTRING_template NumberOfMessagesLostDueToBufferOverflow_template;
+typedef OCTETSTRING NumberOfMessagesWithExcessTransitDelayTime;
+typedef OCTETSTRING_template NumberOfMessagesWithExcessTransitDelayTime_template;
+typedef OCTETSTRING AverageNumberOfMessagesReceivedPerSecond;
+typedef OCTETSTRING_template AverageNumberOfMessagesReceivedPerSecond_template;
+typedef OCTETSTRING AverageNumberOfMessagesForwardedPerSecond;
+typedef OCTETSTRING_template AverageNumberOfMessagesForwardedPerSecond_template;
+typedef OCTETSTRING AverageNumberOfMessagesFilteredPerSecond;
+typedef OCTETSTRING_template AverageNumberOfMessagesFilteredPerSecond_template;
+typedef OCTETSTRING UptimeSinceLastPowerOnReset__s;
+typedef OCTETSTRING_template UptimeSinceLastPowerOnReset__s_template;
+typedef OCTETSTRING NumberOfPorts;
+typedef OCTETSTRING_template NumberOfPorts_template;
+typedef OCTETSTRING NetworkInterconnectionUnitType;
+typedef OCTETSTRING_template NetworkInterconnectionUnitType_template;
+typedef OCTETSTRING Reserved;
+typedef OCTETSTRING_template Reserved_template;
+
+/* Class definitions */
+
+class NAME : public Base_Type {
+  BITSTRING field_selfConfigurableAddressValue;
+  BITSTRING field_industryGroupValue;
+  BITSTRING field_deviceClassInstanceValue;
+  BITSTRING field_deviceClassValue;
+  BITSTRING field_reserveValued;
+  BITSTRING field_functionValue;
+  BITSTRING field_functionInstanceValue;
+  BITSTRING field_ecuInstancceValue;
+  BITSTRING field_manufacturerCodeValue;
+  BITSTRING field_identityNumberBits;
+public:
+  NAME();
+  NAME(const BITSTRING& par_selfConfigurableAddressValue,
+    const BITSTRING& par_industryGroupValue,
+    const BITSTRING& par_deviceClassInstanceValue,
+    const BITSTRING& par_deviceClassValue,
+    const BITSTRING& par_reserveValued,
+    const BITSTRING& par_functionValue,
+    const BITSTRING& par_functionInstanceValue,
+    const BITSTRING& par_ecuInstancceValue,
+    const BITSTRING& par_manufacturerCodeValue,
+    const BITSTRING& par_identityNumberBits);
+  NAME(const NAME& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  NAME& operator=(const NAME& other_value);
+  boolean operator==(const NAME& other_value) const;
+  inline boolean operator!=(const NAME& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BITSTRING& selfConfigurableAddressValue()
+    {return field_selfConfigurableAddressValue;}
+  inline const BITSTRING& selfConfigurableAddressValue() const
+    {return field_selfConfigurableAddressValue;}
+  inline BITSTRING& industryGroupValue()
+    {return field_industryGroupValue;}
+  inline const BITSTRING& industryGroupValue() const
+    {return field_industryGroupValue;}
+  inline BITSTRING& deviceClassInstanceValue()
+    {return field_deviceClassInstanceValue;}
+  inline const BITSTRING& deviceClassInstanceValue() const
+    {return field_deviceClassInstanceValue;}
+  inline BITSTRING& deviceClassValue()
+    {return field_deviceClassValue;}
+  inline const BITSTRING& deviceClassValue() const
+    {return field_deviceClassValue;}
+  inline BITSTRING& reserveValued()
+    {return field_reserveValued;}
+  inline const BITSTRING& reserveValued() const
+    {return field_reserveValued;}
+  inline BITSTRING& functionValue()
+    {return field_functionValue;}
+  inline const BITSTRING& functionValue() const
+    {return field_functionValue;}
+  inline BITSTRING& functionInstanceValue()
+    {return field_functionInstanceValue;}
+  inline const BITSTRING& functionInstanceValue() const
+    {return field_functionInstanceValue;}
+  inline BITSTRING& ecuInstancceValue()
+    {return field_ecuInstancceValue;}
+  inline const BITSTRING& ecuInstancceValue() const
+    {return field_ecuInstancceValue;}
+  inline BITSTRING& manufacturerCodeValue()
+    {return field_manufacturerCodeValue;}
+  inline const BITSTRING& manufacturerCodeValue() const
+    {return field_manufacturerCodeValue;}
+  inline BITSTRING& identityNumberBits()
+    {return field_identityNumberBits;}
+  inline const BITSTRING& identityNumberBits() const
+    {return field_identityNumberBits;}
+  inline int size_of() const
+    {return 10;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class NAME_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+NAME_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const NAME& other_value);
+void copy_template(const NAME_template& other_value);
+
+public:
+NAME_template();
+NAME_template(template_sel other_value);
+NAME_template(const NAME& other_value);
+NAME_template(const OPTIONAL<NAME>& other_value);
+NAME_template(const NAME_template& other_value);
+~NAME_template();
+NAME_template& operator=(template_sel other_value);
+NAME_template& operator=(const NAME& other_value);
+NAME_template& operator=(const OPTIONAL<NAME>& other_value);
+NAME_template& operator=(const NAME_template& other_value);
+boolean match(const NAME& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+NAME valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+NAME_template& list_item(unsigned int list_index) const;
+BITSTRING_template& selfConfigurableAddressValue();
+const BITSTRING_template& selfConfigurableAddressValue() const;
+BITSTRING_template& industryGroupValue();
+const BITSTRING_template& industryGroupValue() const;
+BITSTRING_template& deviceClassInstanceValue();
+const BITSTRING_template& deviceClassInstanceValue() const;
+BITSTRING_template& deviceClassValue();
+const BITSTRING_template& deviceClassValue() const;
+BITSTRING_template& reserveValued();
+const BITSTRING_template& reserveValued() const;
+BITSTRING_template& functionValue();
+const BITSTRING_template& functionValue() const;
+BITSTRING_template& functionInstanceValue();
+const BITSTRING_template& functionInstanceValue() const;
+BITSTRING_template& ecuInstancceValue();
+const BITSTRING_template& ecuInstancceValue() const;
+BITSTRING_template& manufacturerCodeValue();
+const BITSTRING_template& manufacturerCodeValue() const;
+BITSTRING_template& identityNumberBits();
+const BITSTRING_template& identityNumberBits() const;
+int size_of() const;
+void log() const;
+void log_match(const NAME& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class CannotClaimSourceAddress : public Base_Type {
+  NAME field_name;
+public:
+  CannotClaimSourceAddress();
+  CannotClaimSourceAddress(const NAME& par_name);
+  CannotClaimSourceAddress(const CannotClaimSourceAddress& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  CannotClaimSourceAddress& operator=(const CannotClaimSourceAddress& other_value);
+  boolean operator==(const CannotClaimSourceAddress& other_value) const;
+  inline boolean operator!=(const CannotClaimSourceAddress& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline NAME& name()
+    {return field_name;}
+  inline const NAME& name() const
+    {return field_name;}
+  inline int size_of() const
+    {return 1;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class CannotClaimSourceAddress_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+CannotClaimSourceAddress_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const CannotClaimSourceAddress& other_value);
+void copy_template(const CannotClaimSourceAddress_template& other_value);
+
+public:
+CannotClaimSourceAddress_template();
+CannotClaimSourceAddress_template(template_sel other_value);
+CannotClaimSourceAddress_template(const CannotClaimSourceAddress& other_value);
+CannotClaimSourceAddress_template(const OPTIONAL<CannotClaimSourceAddress>& other_value);
+CannotClaimSourceAddress_template(const CannotClaimSourceAddress_template& other_value);
+~CannotClaimSourceAddress_template();
+CannotClaimSourceAddress_template& operator=(template_sel other_value);
+CannotClaimSourceAddress_template& operator=(const CannotClaimSourceAddress& other_value);
+CannotClaimSourceAddress_template& operator=(const OPTIONAL<CannotClaimSourceAddress>& other_value);
+CannotClaimSourceAddress_template& operator=(const CannotClaimSourceAddress_template& other_value);
+boolean match(const CannotClaimSourceAddress& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+CannotClaimSourceAddress valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+CannotClaimSourceAddress_template& list_item(unsigned int list_index) const;
+NAME_template& name();
+const NAME_template& name() const;
+int size_of() const;
+void log() const;
+void log_match(const CannotClaimSourceAddress& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class AddressClaimed : public Base_Type {
+  NAME field_name;
+public:
+  AddressClaimed();
+  AddressClaimed(const NAME& par_name);
+  AddressClaimed(const AddressClaimed& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  AddressClaimed& operator=(const AddressClaimed& other_value);
+  boolean operator==(const AddressClaimed& other_value) const;
+  inline boolean operator!=(const AddressClaimed& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline NAME& name()
+    {return field_name;}
+  inline const NAME& name() const
+    {return field_name;}
+  inline int size_of() const
+    {return 1;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class AddressClaimed_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+AddressClaimed_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const AddressClaimed& other_value);
+void copy_template(const AddressClaimed_template& other_value);
+
+public:
+AddressClaimed_template();
+AddressClaimed_template(template_sel other_value);
+AddressClaimed_template(const AddressClaimed& other_value);
+AddressClaimed_template(const OPTIONAL<AddressClaimed>& other_value);
+AddressClaimed_template(const AddressClaimed_template& other_value);
+~AddressClaimed_template();
+AddressClaimed_template& operator=(template_sel other_value);
+AddressClaimed_template& operator=(const AddressClaimed& other_value);
+AddressClaimed_template& operator=(const OPTIONAL<AddressClaimed>& other_value);
+AddressClaimed_template& operator=(const AddressClaimed_template& other_value);
+boolean match(const AddressClaimed& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+AddressClaimed valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+AddressClaimed_template& list_item(unsigned int list_index) const;
+NAME_template& name();
+const NAME_template& name() const;
+int size_of() const;
+void log() const;
+void log_match(const AddressClaimed& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class RequestForAddressClaimed : public Base_Type {
+  INTEGER field_pgn;
+public:
+  RequestForAddressClaimed();
+  RequestForAddressClaimed(const INTEGER& par_pgn);
+  RequestForAddressClaimed(const RequestForAddressClaimed& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  RequestForAddressClaimed& operator=(const RequestForAddressClaimed& other_value);
+  boolean operator==(const RequestForAddressClaimed& other_value) const;
+  inline boolean operator!=(const RequestForAddressClaimed& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& pgn()
+    {return field_pgn;}
+  inline const INTEGER& pgn() const
+    {return field_pgn;}
+  inline int size_of() const
+    {return 1;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class RequestForAddressClaimed_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+RequestForAddressClaimed_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const RequestForAddressClaimed& other_value);
+void copy_template(const RequestForAddressClaimed_template& other_value);
+
+public:
+RequestForAddressClaimed_template();
+RequestForAddressClaimed_template(template_sel other_value);
+RequestForAddressClaimed_template(const RequestForAddressClaimed& other_value);
+RequestForAddressClaimed_template(const OPTIONAL<RequestForAddressClaimed>& other_value);
+RequestForAddressClaimed_template(const RequestForAddressClaimed_template& other_value);
+~RequestForAddressClaimed_template();
+RequestForAddressClaimed_template& operator=(template_sel other_value);
+RequestForAddressClaimed_template& operator=(const RequestForAddressClaimed& other_value);
+RequestForAddressClaimed_template& operator=(const OPTIONAL<RequestForAddressClaimed>& other_value);
+RequestForAddressClaimed_template& operator=(const RequestForAddressClaimed_template& other_value);
+boolean match(const RequestForAddressClaimed& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+RequestForAddressClaimed valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+RequestForAddressClaimed_template& list_item(unsigned int list_index) const;
+INTEGER_template& pgn();
+const INTEGER_template& pgn() const;
+int size_of() const;
+void log() const;
+void log_match(const RequestForAddressClaimed& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class CommandedAddress : public Base_Type {
+  NAME field_name;
+  OCTETSTRING field_newSourceAddress;
+public:
+  CommandedAddress();
+  CommandedAddress(const NAME& par_name,
+    const OCTETSTRING& par_newSourceAddress);
+  CommandedAddress(const CommandedAddress& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  CommandedAddress& operator=(const CommandedAddress& other_value);
+  boolean operator==(const CommandedAddress& other_value) const;
+  inline boolean operator!=(const CommandedAddress& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline NAME& name()
+    {return field_name;}
+  inline const NAME& name() const
+    {return field_name;}
+  inline OCTETSTRING& newSourceAddress()
+    {return field_newSourceAddress;}
+  inline const OCTETSTRING& newSourceAddress() const
+    {return field_newSourceAddress;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class CommandedAddress_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+CommandedAddress_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const CommandedAddress& other_value);
+void copy_template(const CommandedAddress_template& other_value);
+
+public:
+CommandedAddress_template();
+CommandedAddress_template(template_sel other_value);
+CommandedAddress_template(const CommandedAddress& other_value);
+CommandedAddress_template(const OPTIONAL<CommandedAddress>& other_value);
+CommandedAddress_template(const CommandedAddress_template& other_value);
+~CommandedAddress_template();
+CommandedAddress_template& operator=(template_sel other_value);
+CommandedAddress_template& operator=(const CommandedAddress& other_value);
+CommandedAddress_template& operator=(const OPTIONAL<CommandedAddress>& other_value);
+CommandedAddress_template& operator=(const CommandedAddress_template& other_value);
+boolean match(const CommandedAddress& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+CommandedAddress valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+CommandedAddress_template& list_item(unsigned int list_index) const;
+NAME_template& name();
+const NAME_template& name() const;
+OCTETSTRING_template& newSourceAddress();
+const OCTETSTRING_template& newSourceAddress() const;
+int size_of() const;
+void log() const;
+void log_match(const CommandedAddress& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class e__PortNumber : public Base_Type { // enum
+friend class e__PortNumber_template;
+public:
+enum enum_type { port__local = 0, port__1 = 1, port__2 = 2, port__3 = 3, port__4 = 4, port__5 = 5, port__6 = 6, port__7 = 7, port__8 = 8, port__9 = 9, port__10 = 10, port__11 = 11, port__12 = 12, port__13 = 13, port__14 = 14, port__global = 15, UNKNOWN_VALUE = 16, UNBOUND_VALUE = 17 };
+private:
+enum_type enum_value;
+
+public:
+e__PortNumber();
+e__PortNumber(int other_value);
+e__PortNumber(enum_type other_value);
+e__PortNumber(const e__PortNumber& other_value);
+
+e__PortNumber& operator=(int other_value);
+e__PortNumber& operator=(enum_type other_value);
+e__PortNumber& operator=(const e__PortNumber& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const e__PortNumber& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const e__PortNumber& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const e__PortNumber& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const e__PortNumber& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const e__PortNumber& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const e__PortNumber& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const e__PortNumber& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class e__PortNumber_template : public Base_Template {
+union {
+e__PortNumber::enum_type single_value;
+struct {
+unsigned int n_values;
+e__PortNumber_template *list_value;
+} value_list;
+};
+
+void copy_template(const e__PortNumber_template& other_value);
+
+public:
+e__PortNumber_template();
+e__PortNumber_template(template_sel other_value);
+e__PortNumber_template(int other_value);
+e__PortNumber_template(e__PortNumber::enum_type other_value);
+e__PortNumber_template(const e__PortNumber& other_value);
+e__PortNumber_template(const OPTIONAL<e__PortNumber>& other_value);
+e__PortNumber_template(const e__PortNumber_template& other_value);
+~e__PortNumber_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+e__PortNumber_template& operator=(template_sel other_value);
+e__PortNumber_template& operator=(int other_value);
+e__PortNumber_template& operator=(e__PortNumber::enum_type other_value);
+e__PortNumber_template& operator=(const e__PortNumber& other_value);
+e__PortNumber_template& operator=(const OPTIONAL<e__PortNumber>& other_value);
+e__PortNumber_template& operator=(const e__PortNumber_template& other_value);
+
+boolean match(e__PortNumber::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const e__PortNumber& other_value, boolean legacy = FALSE) const;
+e__PortNumber::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+e__PortNumber_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const e__PortNumber& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class PortPair : public Base_Type {
+  e__PortNumber field_fromPort;
+  e__PortNumber field_toPort;
+public:
+  PortPair();
+  PortPair(const e__PortNumber& par_fromPort,
+    const e__PortNumber& par_toPort);
+  PortPair(const PortPair& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  PortPair& operator=(const PortPair& other_value);
+  boolean operator==(const PortPair& other_value) const;
+  inline boolean operator!=(const PortPair& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline e__PortNumber& fromPort()
+    {return field_fromPort;}
+  inline const e__PortNumber& fromPort() const
+    {return field_fromPort;}
+  inline e__PortNumber& toPort()
+    {return field_toPort;}
+  inline const e__PortNumber& toPort() const
+    {return field_toPort;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class PortPair_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+PortPair_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const PortPair& other_value);
+void copy_template(const PortPair_template& other_value);
+
+public:
+PortPair_template();
+PortPair_template(template_sel other_value);
+PortPair_template(const PortPair& other_value);
+PortPair_template(const OPTIONAL<PortPair>& other_value);
+PortPair_template(const PortPair_template& other_value);
+~PortPair_template();
+PortPair_template& operator=(template_sel other_value);
+PortPair_template& operator=(const PortPair& other_value);
+PortPair_template& operator=(const OPTIONAL<PortPair>& other_value);
+PortPair_template& operator=(const PortPair_template& other_value);
+boolean match(const PortPair& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+PortPair valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+PortPair_template& list_item(unsigned int list_index) const;
+e__PortNumber_template& fromPort();
+const e__PortNumber_template& fromPort() const;
+e__PortNumber_template& toPort();
+const e__PortNumber_template& toPort() const;
+int size_of() const;
+void log() const;
+void log_match(const PortPair& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class N__MFDB__Request : public Base_Type {
+  INTEGER field_msgFunction;
+  PortPair field_portPair;
+  OCTETSTRING field_reserved3;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  N__MFDB__Request();
+  N__MFDB__Request(const INTEGER& par_msgFunction,
+    const PortPair& par_portPair,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  N__MFDB__Request(const N__MFDB__Request& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  N__MFDB__Request& operator=(const N__MFDB__Request& other_value);
+  boolean operator==(const N__MFDB__Request& other_value) const;
+  inline boolean operator!=(const N__MFDB__Request& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& msgFunction()
+    {return field_msgFunction;}
+  inline const INTEGER& msgFunction() const
+    {return field_msgFunction;}
+  inline PortPair& portPair()
+    {return field_portPair;}
+  inline const PortPair& portPair() const
+    {return field_portPair;}
+  inline OCTETSTRING& reserved3()
+    {return field_reserved3;}
+  inline const OCTETSTRING& reserved3() const
+    {return field_reserved3;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class N__MFDB__Request_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+N__MFDB__Request_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const N__MFDB__Request& other_value);
+void copy_template(const N__MFDB__Request_template& other_value);
+
+public:
+N__MFDB__Request_template();
+N__MFDB__Request_template(template_sel other_value);
+N__MFDB__Request_template(const N__MFDB__Request& other_value);
+N__MFDB__Request_template(const OPTIONAL<N__MFDB__Request>& other_value);
+N__MFDB__Request_template(const N__MFDB__Request_template& other_value);
+~N__MFDB__Request_template();
+N__MFDB__Request_template& operator=(template_sel other_value);
+N__MFDB__Request_template& operator=(const N__MFDB__Request& other_value);
+N__MFDB__Request_template& operator=(const OPTIONAL<N__MFDB__Request>& other_value);
+N__MFDB__Request_template& operator=(const N__MFDB__Request_template& other_value);
+boolean match(const N__MFDB__Request& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+N__MFDB__Request valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+N__MFDB__Request_template& list_item(unsigned int list_index) const;
+INTEGER_template& msgFunction();
+const INTEGER_template& msgFunction() const;
+PortPair_template& portPair();
+const PortPair_template& portPair() const;
+OCTETSTRING_template& reserved3();
+const OCTETSTRING_template& reserved3() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const N__MFDB__Request& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class e__FilterMode : public Base_Type { // enum
+friend class e__FilterMode_template;
+public:
+enum enum_type { blockSpecificPGNs = 0, passSecificPGNs = 1, UNKNOWN_VALUE = 2, UNBOUND_VALUE = 3 };
+private:
+enum_type enum_value;
+
+public:
+e__FilterMode();
+e__FilterMode(int other_value);
+e__FilterMode(enum_type other_value);
+e__FilterMode(const e__FilterMode& other_value);
+
+e__FilterMode& operator=(int other_value);
+e__FilterMode& operator=(enum_type other_value);
+e__FilterMode& operator=(const e__FilterMode& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const e__FilterMode& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const e__FilterMode& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const e__FilterMode& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const e__FilterMode& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const e__FilterMode& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const e__FilterMode& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const e__FilterMode& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class e__FilterMode_template : public Base_Template {
+union {
+e__FilterMode::enum_type single_value;
+struct {
+unsigned int n_values;
+e__FilterMode_template *list_value;
+} value_list;
+};
+
+void copy_template(const e__FilterMode_template& other_value);
+
+public:
+e__FilterMode_template();
+e__FilterMode_template(template_sel other_value);
+e__FilterMode_template(int other_value);
+e__FilterMode_template(e__FilterMode::enum_type other_value);
+e__FilterMode_template(const e__FilterMode& other_value);
+e__FilterMode_template(const OPTIONAL<e__FilterMode>& other_value);
+e__FilterMode_template(const e__FilterMode_template& other_value);
+~e__FilterMode_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+e__FilterMode_template& operator=(template_sel other_value);
+e__FilterMode_template& operator=(int other_value);
+e__FilterMode_template& operator=(e__FilterMode::enum_type other_value);
+e__FilterMode_template& operator=(const e__FilterMode& other_value);
+e__FilterMode_template& operator=(const OPTIONAL<e__FilterMode>& other_value);
+e__FilterMode_template& operator=(const e__FilterMode_template& other_value);
+
+boolean match(e__FilterMode::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const e__FilterMode& other_value, boolean legacy = FALSE) const;
+e__FilterMode::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+e__FilterMode_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const e__FilterMode& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class N__MFDB__Response : public Base_Type {
+  INTEGER field_msgFunction;
+  PortPair field_portPair;
+  e__FilterMode field_filterMode;
+  N__MFDB__Response_pgnEntries field_pgnEntries;
+public:
+  N__MFDB__Response();
+  N__MFDB__Response(const INTEGER& par_msgFunction,
+    const PortPair& par_portPair,
+    const e__FilterMode& par_filterMode,
+    const N__MFDB__Response_pgnEntries& par_pgnEntries);
+  N__MFDB__Response(const N__MFDB__Response& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  N__MFDB__Response& operator=(const N__MFDB__Response& other_value);
+  boolean operator==(const N__MFDB__Response& other_value) const;
+  inline boolean operator!=(const N__MFDB__Response& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& msgFunction()
+    {return field_msgFunction;}
+  inline const INTEGER& msgFunction() const
+    {return field_msgFunction;}
+  inline PortPair& portPair()
+    {return field_portPair;}
+  inline const PortPair& portPair() const
+    {return field_portPair;}
+  inline e__FilterMode& filterMode()
+    {return field_filterMode;}
+  inline const e__FilterMode& filterMode() const
+    {return field_filterMode;}
+  inline N__MFDB__Response_pgnEntries& pgnEntries()
+    {return field_pgnEntries;}
+  inline const N__MFDB__Response_pgnEntries& pgnEntries() const
+    {return field_pgnEntries;}
+  inline int size_of() const
+    {return 4;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class N__MFDB__Response_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+N__MFDB__Response_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const N__MFDB__Response& other_value);
+void copy_template(const N__MFDB__Response_template& other_value);
+
+public:
+N__MFDB__Response_template();
+N__MFDB__Response_template(template_sel other_value);
+N__MFDB__Response_template(const N__MFDB__Response& other_value);
+N__MFDB__Response_template(const OPTIONAL<N__MFDB__Response>& other_value);
+N__MFDB__Response_template(const N__MFDB__Response_template& other_value);
+~N__MFDB__Response_template();
+N__MFDB__Response_template& operator=(template_sel other_value);
+N__MFDB__Response_template& operator=(const N__MFDB__Response& other_value);
+N__MFDB__Response_template& operator=(const OPTIONAL<N__MFDB__Response>& other_value);
+N__MFDB__Response_template& operator=(const N__MFDB__Response_template& other_value);
+boolean match(const N__MFDB__Response& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+N__MFDB__Response valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+N__MFDB__Response_template& list_item(unsigned int list_index) const;
+INTEGER_template& msgFunction();
+const INTEGER_template& msgFunction() const;
+PortPair_template& portPair();
+const PortPair_template& portPair() const;
+e__FilterMode_template& filterMode();
+const e__FilterMode_template& filterMode() const;
+N__MFDB__Response_pgnEntries_template& pgnEntries();
+const N__MFDB__Response_pgnEntries_template& pgnEntries() const;
+int size_of() const;
+void log() const;
+void log_match(const N__MFDB__Response& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class N__MFDB__Add : public Base_Type {
+  INTEGER field_msgFunction;
+  PortPair field_portPair;
+  N__MFDB__Add_pgnEntries field_pgnEntries;
+public:
+  N__MFDB__Add();
+  N__MFDB__Add(const INTEGER& par_msgFunction,
+    const PortPair& par_portPair,
+    const N__MFDB__Add_pgnEntries& par_pgnEntries);
+  N__MFDB__Add(const N__MFDB__Add& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  N__MFDB__Add& operator=(const N__MFDB__Add& other_value);
+  boolean operator==(const N__MFDB__Add& other_value) const;
+  inline boolean operator!=(const N__MFDB__Add& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& msgFunction()
+    {return field_msgFunction;}
+  inline const INTEGER& msgFunction() const
+    {return field_msgFunction;}
+  inline PortPair& portPair()
+    {return field_portPair;}
+  inline const PortPair& portPair() const
+    {return field_portPair;}
+  inline N__MFDB__Add_pgnEntries& pgnEntries()
+    {return field_pgnEntries;}
+  inline const N__MFDB__Add_pgnEntries& pgnEntries() const
+    {return field_pgnEntries;}
+  inline int size_of() const
+    {return 3;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class N__MFDB__Add_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+N__MFDB__Add_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const N__MFDB__Add& other_value);
+void copy_template(const N__MFDB__Add_template& other_value);
+
+public:
+N__MFDB__Add_template();
+N__MFDB__Add_template(template_sel other_value);
+N__MFDB__Add_template(const N__MFDB__Add& other_value);
+N__MFDB__Add_template(const OPTIONAL<N__MFDB__Add>& other_value);
+N__MFDB__Add_template(const N__MFDB__Add_template& other_value);
+~N__MFDB__Add_template();
+N__MFDB__Add_template& operator=(template_sel other_value);
+N__MFDB__Add_template& operator=(const N__MFDB__Add& other_value);
+N__MFDB__Add_template& operator=(const OPTIONAL<N__MFDB__Add>& other_value);
+N__MFDB__Add_template& operator=(const N__MFDB__Add_template& other_value);
+boolean match(const N__MFDB__Add& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+N__MFDB__Add valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+N__MFDB__Add_template& list_item(unsigned int list_index) const;
+INTEGER_template& msgFunction();
+const INTEGER_template& msgFunction() const;
+PortPair_template& portPair();
+const PortPair_template& portPair() const;
+N__MFDB__Add_pgnEntries_template& pgnEntries();
+const N__MFDB__Add_pgnEntries_template& pgnEntries() const;
+int size_of() const;
+void log() const;
+void log_match(const N__MFDB__Add& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class N__MFDB__Delete : public Base_Type {
+  INTEGER field_msgFunction;
+  PortPair field_portPair;
+  N__MFDB__Delete_pgnEntries field_pgnEntries;
+public:
+  N__MFDB__Delete();
+  N__MFDB__Delete(const INTEGER& par_msgFunction,
+    const PortPair& par_portPair,
+    const N__MFDB__Delete_pgnEntries& par_pgnEntries);
+  N__MFDB__Delete(const N__MFDB__Delete& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  N__MFDB__Delete& operator=(const N__MFDB__Delete& other_value);
+  boolean operator==(const N__MFDB__Delete& other_value) const;
+  inline boolean operator!=(const N__MFDB__Delete& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& msgFunction()
+    {return field_msgFunction;}
+  inline const INTEGER& msgFunction() const
+    {return field_msgFunction;}
+  inline PortPair& portPair()
+    {return field_portPair;}
+  inline const PortPair& portPair() const
+    {return field_portPair;}
+  inline N__MFDB__Delete_pgnEntries& pgnEntries()
+    {return field_pgnEntries;}
+  inline const N__MFDB__Delete_pgnEntries& pgnEntries() const
+    {return field_pgnEntries;}
+  inline int size_of() const
+    {return 3;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class N__MFDB__Delete_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+N__MFDB__Delete_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const N__MFDB__Delete& other_value);
+void copy_template(const N__MFDB__Delete_template& other_value);
+
+public:
+N__MFDB__Delete_template();
+N__MFDB__Delete_template(template_sel other_value);
+N__MFDB__Delete_template(const N__MFDB__Delete& other_value);
+N__MFDB__Delete_template(const OPTIONAL<N__MFDB__Delete>& other_value);
+N__MFDB__Delete_template(const N__MFDB__Delete_template& other_value);
+~N__MFDB__Delete_template();
+N__MFDB__Delete_template& operator=(template_sel other_value);
+N__MFDB__Delete_template& operator=(const N__MFDB__Delete& other_value);
+N__MFDB__Delete_template& operator=(const OPTIONAL<N__MFDB__Delete>& other_value);
+N__MFDB__Delete_template& operator=(const N__MFDB__Delete_template& other_value);
+boolean match(const N__MFDB__Delete& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+N__MFDB__Delete valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+N__MFDB__Delete_template& list_item(unsigned int list_index) const;
+INTEGER_template& msgFunction();
+const INTEGER_template& msgFunction() const;
+PortPair_template& portPair();
+const PortPair_template& portPair() const;
+N__MFDB__Delete_pgnEntries_template& pgnEntries();
+const N__MFDB__Delete_pgnEntries_template& pgnEntries() const;
+int size_of() const;
+void log() const;
+void log_match(const N__MFDB__Delete& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class N__MFDB__Clear : public Base_Type {
+  INTEGER field_msgFunction;
+  PortPair field_portPair;
+  OCTETSTRING field_reserved3;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  N__MFDB__Clear();
+  N__MFDB__Clear(const INTEGER& par_msgFunction,
+    const PortPair& par_portPair,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  N__MFDB__Clear(const N__MFDB__Clear& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  N__MFDB__Clear& operator=(const N__MFDB__Clear& other_value);
+  boolean operator==(const N__MFDB__Clear& other_value) const;
+  inline boolean operator!=(const N__MFDB__Clear& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& msgFunction()
+    {return field_msgFunction;}
+  inline const INTEGER& msgFunction() const
+    {return field_msgFunction;}
+  inline PortPair& portPair()
+    {return field_portPair;}
+  inline const PortPair& portPair() const
+    {return field_portPair;}
+  inline OCTETSTRING& reserved3()
+    {return field_reserved3;}
+  inline const OCTETSTRING& reserved3() const
+    {return field_reserved3;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class N__MFDB__Clear_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+N__MFDB__Clear_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const N__MFDB__Clear& other_value);
+void copy_template(const N__MFDB__Clear_template& other_value);
+
+public:
+N__MFDB__Clear_template();
+N__MFDB__Clear_template(template_sel other_value);
+N__MFDB__Clear_template(const N__MFDB__Clear& other_value);
+N__MFDB__Clear_template(const OPTIONAL<N__MFDB__Clear>& other_value);
+N__MFDB__Clear_template(const N__MFDB__Clear_template& other_value);
+~N__MFDB__Clear_template();
+N__MFDB__Clear_template& operator=(template_sel other_value);
+N__MFDB__Clear_template& operator=(const N__MFDB__Clear& other_value);
+N__MFDB__Clear_template& operator=(const OPTIONAL<N__MFDB__Clear>& other_value);
+N__MFDB__Clear_template& operator=(const N__MFDB__Clear_template& other_value);
+boolean match(const N__MFDB__Clear& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+N__MFDB__Clear valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+N__MFDB__Clear_template& list_item(unsigned int list_index) const;
+INTEGER_template& msgFunction();
+const INTEGER_template& msgFunction() const;
+PortPair_template& portPair();
+const PortPair_template& portPair() const;
+OCTETSTRING_template& reserved3();
+const OCTETSTRING_template& reserved3() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const N__MFDB__Clear& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class N__MFDB__Create__Entry : public Base_Type {
+  INTEGER field_msgFunction;
+  PortPair field_portPair;
+  e__FilterMode field_filterMode;
+  N__MFDB__Create__Entry_pgnEntries field_pgnEntries;
+public:
+  N__MFDB__Create__Entry();
+  N__MFDB__Create__Entry(const INTEGER& par_msgFunction,
+    const PortPair& par_portPair,
+    const e__FilterMode& par_filterMode,
+    const N__MFDB__Create__Entry_pgnEntries& par_pgnEntries);
+  N__MFDB__Create__Entry(const N__MFDB__Create__Entry& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  N__MFDB__Create__Entry& operator=(const N__MFDB__Create__Entry& other_value);
+  boolean operator==(const N__MFDB__Create__Entry& other_value) const;
+  inline boolean operator!=(const N__MFDB__Create__Entry& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& msgFunction()
+    {return field_msgFunction;}
+  inline const INTEGER& msgFunction() const
+    {return field_msgFunction;}
+  inline PortPair& portPair()
+    {return field_portPair;}
+  inline const PortPair& portPair() const
+    {return field_portPair;}
+  inline e__FilterMode& filterMode()
+    {return field_filterMode;}
+  inline const e__FilterMode& filterMode() const
+    {return field_filterMode;}
+  inline N__MFDB__Create__Entry_pgnEntries& pgnEntries()
+    {return field_pgnEntries;}
+  inline const N__MFDB__Create__Entry_pgnEntries& pgnEntries() const
+    {return field_pgnEntries;}
+  inline int size_of() const
+    {return 4;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class N__MFDB__Create__Entry_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+N__MFDB__Create__Entry_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const N__MFDB__Create__Entry& other_value);
+void copy_template(const N__MFDB__Create__Entry_template& other_value);
+
+public:
+N__MFDB__Create__Entry_template();
+N__MFDB__Create__Entry_template(template_sel other_value);
+N__MFDB__Create__Entry_template(const N__MFDB__Create__Entry& other_value);
+N__MFDB__Create__Entry_template(const OPTIONAL<N__MFDB__Create__Entry>& other_value);
+N__MFDB__Create__Entry_template(const N__MFDB__Create__Entry_template& other_value);
+~N__MFDB__Create__Entry_template();
+N__MFDB__Create__Entry_template& operator=(template_sel other_value);
+N__MFDB__Create__Entry_template& operator=(const N__MFDB__Create__Entry& other_value);
+N__MFDB__Create__Entry_template& operator=(const OPTIONAL<N__MFDB__Create__Entry>& other_value);
+N__MFDB__Create__Entry_template& operator=(const N__MFDB__Create__Entry_template& other_value);
+boolean match(const N__MFDB__Create__Entry& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+N__MFDB__Create__Entry valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+N__MFDB__Create__Entry_template& list_item(unsigned int list_index) const;
+INTEGER_template& msgFunction();
+const INTEGER_template& msgFunction() const;
+PortPair_template& portPair();
+const PortPair_template& portPair() const;
+e__FilterMode_template& filterMode();
+const e__FilterMode_template& filterMode() const;
+N__MFDB__Create__Entry_pgnEntries_template& pgnEntries();
+const N__MFDB__Create__Entry_pgnEntries_template& pgnEntries() const;
+int size_of() const;
+void log() const;
+void log_match(const N__MFDB__Create__Entry& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class PGNEntry : public Base_Type {
+  INTEGER field_maxTransferRate;
+  INTEGER field_pgn;
+  NAME field_name;
+  OCTETSTRING field_nameQualifier;
+public:
+  PGNEntry();
+  PGNEntry(const INTEGER& par_maxTransferRate,
+    const INTEGER& par_pgn,
+    const NAME& par_name,
+    const OCTETSTRING& par_nameQualifier);
+  PGNEntry(const PGNEntry& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  PGNEntry& operator=(const PGNEntry& other_value);
+  boolean operator==(const PGNEntry& other_value) const;
+  inline boolean operator!=(const PGNEntry& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& maxTransferRate()
+    {return field_maxTransferRate;}
+  inline const INTEGER& maxTransferRate() const
+    {return field_maxTransferRate;}
+  inline INTEGER& pgn()
+    {return field_pgn;}
+  inline const INTEGER& pgn() const
+    {return field_pgn;}
+  inline NAME& name()
+    {return field_name;}
+  inline const NAME& name() const
+    {return field_name;}
+  inline OCTETSTRING& nameQualifier()
+    {return field_nameQualifier;}
+  inline const OCTETSTRING& nameQualifier() const
+    {return field_nameQualifier;}
+  inline int size_of() const
+    {return 4;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class PGNEntry_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+PGNEntry_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const PGNEntry& other_value);
+void copy_template(const PGNEntry_template& other_value);
+
+public:
+PGNEntry_template();
+PGNEntry_template(template_sel other_value);
+PGNEntry_template(const PGNEntry& other_value);
+PGNEntry_template(const OPTIONAL<PGNEntry>& other_value);
+PGNEntry_template(const PGNEntry_template& other_value);
+~PGNEntry_template();
+PGNEntry_template& operator=(template_sel other_value);
+PGNEntry_template& operator=(const PGNEntry& other_value);
+PGNEntry_template& operator=(const OPTIONAL<PGNEntry>& other_value);
+PGNEntry_template& operator=(const PGNEntry_template& other_value);
+boolean match(const PGNEntry& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+PGNEntry valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+PGNEntry_template& list_item(unsigned int list_index) const;
+INTEGER_template& maxTransferRate();
+const INTEGER_template& maxTransferRate() const;
+INTEGER_template& pgn();
+const INTEGER_template& pgn() const;
+NAME_template& name();
+const NAME_template& name() const;
+OCTETSTRING_template& nameQualifier();
+const OCTETSTRING_template& nameQualifier() const;
+int size_of() const;
+void log() const;
+void log_match(const PGNEntry& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class N__MFDBNQ__Add_pgnEntries : public Base_Type {
+struct recordof_setof_struct {
+int ref_count;
+int n_elements;
+PGNEntry **value_elements;
+} *val_ptr;
+
+static const PGNEntry UNBOUND_ELEM;
+private:
+friend boolean operator==(null_type null_value, const N__MFDBNQ__Add_pgnEntries& other_value);
+
+public:
+  typedef PGNEntry of_type;
+N__MFDBNQ__Add_pgnEntries();
+N__MFDBNQ__Add_pgnEntries(null_type other_value);
+N__MFDBNQ__Add_pgnEntries(const N__MFDBNQ__Add_pgnEntries& other_value);
+~N__MFDBNQ__Add_pgnEntries();
+
+void clean_up();
+N__MFDBNQ__Add_pgnEntries& operator=(null_type other_value);
+N__MFDBNQ__Add_pgnEntries& operator=(const N__MFDBNQ__Add_pgnEntries& other_value);
+
+boolean operator==(null_type other_value) const;
+boolean operator==(const N__MFDBNQ__Add_pgnEntries& other_value) const;
+inline boolean operator!=(null_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const N__MFDBNQ__Add_pgnEntries& other_value) const { return !(*this == other_value); }
+
+PGNEntry& operator[](int index_value);
+PGNEntry& operator[](const INTEGER& index_value);
+const PGNEntry& operator[](int index_value) const;
+const PGNEntry& operator[](const INTEGER& index_value) const;
+
+N__MFDBNQ__Add_pgnEntries operator<<=(int rotate_count) const;
+N__MFDBNQ__Add_pgnEntries operator<<=(const INTEGER& rotate_count) const;
+N__MFDBNQ__Add_pgnEntries operator>>=(int rotate_count) const;
+N__MFDBNQ__Add_pgnEntries operator>>=(const INTEGER& rotate_count) const;
+
+N__MFDBNQ__Add_pgnEntries operator+(const N__MFDBNQ__Add_pgnEntries& other_value) const;
+
+N__MFDBNQ__Add_pgnEntries substr(int index, int returncount) const;
+
+N__MFDBNQ__Add_pgnEntries replace(int index, int len, const N__MFDBNQ__Add_pgnEntries& repl) const;
+
+N__MFDBNQ__Add_pgnEntries replace(int index, int len, const N__MFDBNQ__Add_pgnEntries_template& repl) const;
+
+void set_size(int new_size);
+inline boolean is_bound() const {return val_ptr != NULL; }
+inline boolean is_present() const { return is_bound(); }
+boolean is_value() const;
+int size_of() const;
+int n_elem() const { return size_of(); }
+int lengthof() const;
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class N__MFDBNQ__Add_pgnEntries_template : public Record_Of_Template {
+union {
+struct {
+int n_elements;
+PGNEntry_template **value_elements;
+} single_value;
+struct {
+unsigned int n_values;
+N__MFDBNQ__Add_pgnEntries_template *list_value;
+} value_list;
+};
+void copy_value(const N__MFDBNQ__Add_pgnEntries& other_value);
+void copy_template(const N__MFDBNQ__Add_pgnEntries_template& other_value);
+static boolean match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy);
+
+public:
+N__MFDBNQ__Add_pgnEntries_template();
+N__MFDBNQ__Add_pgnEntries_template(template_sel other_value);
+N__MFDBNQ__Add_pgnEntries_template(null_type other_value);
+N__MFDBNQ__Add_pgnEntries_template(const N__MFDBNQ__Add_pgnEntries& other_value);
+N__MFDBNQ__Add_pgnEntries_template(const OPTIONAL<N__MFDBNQ__Add_pgnEntries>& other_value);
+N__MFDBNQ__Add_pgnEntries_template(const N__MFDBNQ__Add_pgnEntries_template& other_value);
+~N__MFDBNQ__Add_pgnEntries_template();
+
+void clean_up();
+N__MFDBNQ__Add_pgnEntries_template& operator=(template_sel other_value);
+N__MFDBNQ__Add_pgnEntries_template& operator=(null_type other_value);
+N__MFDBNQ__Add_pgnEntries_template& operator=(const N__MFDBNQ__Add_pgnEntries& other_value);
+N__MFDBNQ__Add_pgnEntries_template& operator=(const OPTIONAL<N__MFDBNQ__Add_pgnEntries>& other_value);
+N__MFDBNQ__Add_pgnEntries_template& operator=(const N__MFDBNQ__Add_pgnEntries_template& other_value);
+
+PGNEntry_template& operator[](int index_value);
+PGNEntry_template& operator[](const INTEGER& index_value);
+const PGNEntry_template& operator[](int index_value) const;
+const PGNEntry_template& operator[](const INTEGER& index_value) const;
+
+void set_size(int new_size);
+int n_elem() const;
+int size_of(boolean is_size) const;
+inline int size_of() const { return size_of(TRUE); }
+inline int lengthof() const { return size_of(FALSE); }
+boolean match(const N__MFDBNQ__Add_pgnEntries& other_value, boolean legacy = FALSE) const;
+inline boolean is_bound() const 
+  {return template_selection != UNINITIALIZED_TEMPLATE; }
+boolean is_value() const;
+N__MFDBNQ__Add_pgnEntries valueof() const;
+N__MFDBNQ__Add_pgnEntries substr(int index, int returncount) const;
+
+N__MFDBNQ__Add_pgnEntries replace(int index, int len, const N__MFDBNQ__Add_pgnEntries_template& repl) const;
+
+N__MFDBNQ__Add_pgnEntries replace(int index, int len, const N__MFDBNQ__Add_pgnEntries& repl) const;
+
+void set_type(template_sel template_type, unsigned int list_length);
+N__MFDBNQ__Add_pgnEntries_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const N__MFDBNQ__Add_pgnEntries& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean get_istemplate_kind(const char* type) const;
+};
+
+class N__MFDBNQ__Add : public Base_Type {
+  INTEGER field_msgFunction;
+  PortPair field_portPair;
+  e__FilterMode field_filterMode;
+  OCTETSTRING field_reserved4;
+  N__MFDBNQ__Add_pgnEntries field_pgnEntries;
+public:
+  N__MFDBNQ__Add();
+  N__MFDBNQ__Add(const INTEGER& par_msgFunction,
+    const PortPair& par_portPair,
+    const e__FilterMode& par_filterMode,
+    const OCTETSTRING& par_reserved4,
+    const N__MFDBNQ__Add_pgnEntries& par_pgnEntries);
+  N__MFDBNQ__Add(const N__MFDBNQ__Add& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  N__MFDBNQ__Add& operator=(const N__MFDBNQ__Add& other_value);
+  boolean operator==(const N__MFDBNQ__Add& other_value) const;
+  inline boolean operator!=(const N__MFDBNQ__Add& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& msgFunction()
+    {return field_msgFunction;}
+  inline const INTEGER& msgFunction() const
+    {return field_msgFunction;}
+  inline PortPair& portPair()
+    {return field_portPair;}
+  inline const PortPair& portPair() const
+    {return field_portPair;}
+  inline e__FilterMode& filterMode()
+    {return field_filterMode;}
+  inline const e__FilterMode& filterMode() const
+    {return field_filterMode;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline N__MFDBNQ__Add_pgnEntries& pgnEntries()
+    {return field_pgnEntries;}
+  inline const N__MFDBNQ__Add_pgnEntries& pgnEntries() const
+    {return field_pgnEntries;}
+  inline int size_of() const
+    {return 5;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class N__MFDBNQ__Add_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+N__MFDBNQ__Add_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const N__MFDBNQ__Add& other_value);
+void copy_template(const N__MFDBNQ__Add_template& other_value);
+
+public:
+N__MFDBNQ__Add_template();
+N__MFDBNQ__Add_template(template_sel other_value);
+N__MFDBNQ__Add_template(const N__MFDBNQ__Add& other_value);
+N__MFDBNQ__Add_template(const OPTIONAL<N__MFDBNQ__Add>& other_value);
+N__MFDBNQ__Add_template(const N__MFDBNQ__Add_template& other_value);
+~N__MFDBNQ__Add_template();
+N__MFDBNQ__Add_template& operator=(template_sel other_value);
+N__MFDBNQ__Add_template& operator=(const N__MFDBNQ__Add& other_value);
+N__MFDBNQ__Add_template& operator=(const OPTIONAL<N__MFDBNQ__Add>& other_value);
+N__MFDBNQ__Add_template& operator=(const N__MFDBNQ__Add_template& other_value);
+boolean match(const N__MFDBNQ__Add& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+N__MFDBNQ__Add valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+N__MFDBNQ__Add_template& list_item(unsigned int list_index) const;
+INTEGER_template& msgFunction();
+const INTEGER_template& msgFunction() const;
+PortPair_template& portPair();
+const PortPair_template& portPair() const;
+e__FilterMode_template& filterMode();
+const e__FilterMode_template& filterMode() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+N__MFDBNQ__Add_pgnEntries_template& pgnEntries();
+const N__MFDBNQ__Add_pgnEntries_template& pgnEntries() const;
+int size_of() const;
+void log() const;
+void log_match(const N__MFDBNQ__Add& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class PortNibble : public Base_Type {
+  e__PortNumber field_portNumber;
+  HEXSTRING field_reserved;
+public:
+  PortNibble();
+  PortNibble(const e__PortNumber& par_portNumber,
+    const HEXSTRING& par_reserved);
+  PortNibble(const PortNibble& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  PortNibble& operator=(const PortNibble& other_value);
+  boolean operator==(const PortNibble& other_value) const;
+  inline boolean operator!=(const PortNibble& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline e__PortNumber& portNumber()
+    {return field_portNumber;}
+  inline const e__PortNumber& portNumber() const
+    {return field_portNumber;}
+  inline HEXSTRING& reserved()
+    {return field_reserved;}
+  inline const HEXSTRING& reserved() const
+    {return field_reserved;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class PortNibble_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+PortNibble_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const PortNibble& other_value);
+void copy_template(const PortNibble_template& other_value);
+
+public:
+PortNibble_template();
+PortNibble_template(template_sel other_value);
+PortNibble_template(const PortNibble& other_value);
+PortNibble_template(const OPTIONAL<PortNibble>& other_value);
+PortNibble_template(const PortNibble_template& other_value);
+~PortNibble_template();
+PortNibble_template& operator=(template_sel other_value);
+PortNibble_template& operator=(const PortNibble& other_value);
+PortNibble_template& operator=(const OPTIONAL<PortNibble>& other_value);
+PortNibble_template& operator=(const PortNibble_template& other_value);
+boolean match(const PortNibble& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+PortNibble valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+PortNibble_template& list_item(unsigned int list_index) const;
+e__PortNumber_template& portNumber();
+const e__PortNumber_template& portNumber() const;
+HEXSTRING_template& reserved();
+const HEXSTRING_template& reserved() const;
+int size_of() const;
+void log() const;
+void log_match(const PortNibble& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class N__NT__Request : public Base_Type {
+  INTEGER field_msgFunction;
+  PortNibble field_portPair;
+  OCTETSTRING field_reserved3;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  N__NT__Request();
+  N__NT__Request(const INTEGER& par_msgFunction,
+    const PortNibble& par_portPair,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  N__NT__Request(const N__NT__Request& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  N__NT__Request& operator=(const N__NT__Request& other_value);
+  boolean operator==(const N__NT__Request& other_value) const;
+  inline boolean operator!=(const N__NT__Request& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& msgFunction()
+    {return field_msgFunction;}
+  inline const INTEGER& msgFunction() const
+    {return field_msgFunction;}
+  inline PortNibble& portPair()
+    {return field_portPair;}
+  inline const PortNibble& portPair() const
+    {return field_portPair;}
+  inline OCTETSTRING& reserved3()
+    {return field_reserved3;}
+  inline const OCTETSTRING& reserved3() const
+    {return field_reserved3;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class N__NT__Request_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+N__NT__Request_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const N__NT__Request& other_value);
+void copy_template(const N__NT__Request_template& other_value);
+
+public:
+N__NT__Request_template();
+N__NT__Request_template(template_sel other_value);
+N__NT__Request_template(const N__NT__Request& other_value);
+N__NT__Request_template(const OPTIONAL<N__NT__Request>& other_value);
+N__NT__Request_template(const N__NT__Request_template& other_value);
+~N__NT__Request_template();
+N__NT__Request_template& operator=(template_sel other_value);
+N__NT__Request_template& operator=(const N__NT__Request& other_value);
+N__NT__Request_template& operator=(const OPTIONAL<N__NT__Request>& other_value);
+N__NT__Request_template& operator=(const N__NT__Request_template& other_value);
+boolean match(const N__NT__Request& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+N__NT__Request valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+N__NT__Request_template& list_item(unsigned int list_index) const;
+INTEGER_template& msgFunction();
+const INTEGER_template& msgFunction() const;
+PortNibble_template& portPair();
+const PortNibble_template& portPair() const;
+OCTETSTRING_template& reserved3();
+const OCTETSTRING_template& reserved3() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const N__NT__Request& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class N__NT__Response : public Base_Type {
+  INTEGER field_msgFunction;
+  PortNibble field_portPair;
+  N__NT__Response_SourceAddressEntries field_SourceAddressEntries;
+public:
+  N__NT__Response();
+  N__NT__Response(const INTEGER& par_msgFunction,
+    const PortNibble& par_portPair,
+    const N__NT__Response_SourceAddressEntries& par_SourceAddressEntries);
+  N__NT__Response(const N__NT__Response& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  N__NT__Response& operator=(const N__NT__Response& other_value);
+  boolean operator==(const N__NT__Response& other_value) const;
+  inline boolean operator!=(const N__NT__Response& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& msgFunction()
+    {return field_msgFunction;}
+  inline const INTEGER& msgFunction() const
+    {return field_msgFunction;}
+  inline PortNibble& portPair()
+    {return field_portPair;}
+  inline const PortNibble& portPair() const
+    {return field_portPair;}
+  inline N__NT__Response_SourceAddressEntries& SourceAddressEntries()
+    {return field_SourceAddressEntries;}
+  inline const N__NT__Response_SourceAddressEntries& SourceAddressEntries() const
+    {return field_SourceAddressEntries;}
+  inline int size_of() const
+    {return 3;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class N__NT__Response_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+N__NT__Response_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const N__NT__Response& other_value);
+void copy_template(const N__NT__Response_template& other_value);
+
+public:
+N__NT__Response_template();
+N__NT__Response_template(template_sel other_value);
+N__NT__Response_template(const N__NT__Response& other_value);
+N__NT__Response_template(const OPTIONAL<N__NT__Response>& other_value);
+N__NT__Response_template(const N__NT__Response_template& other_value);
+~N__NT__Response_template();
+N__NT__Response_template& operator=(template_sel other_value);
+N__NT__Response_template& operator=(const N__NT__Response& other_value);
+N__NT__Response_template& operator=(const OPTIONAL<N__NT__Response>& other_value);
+N__NT__Response_template& operator=(const N__NT__Response_template& other_value);
+boolean match(const N__NT__Response& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+N__NT__Response valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+N__NT__Response_template& list_item(unsigned int list_index) const;
+INTEGER_template& msgFunction();
+const INTEGER_template& msgFunction() const;
+PortNibble_template& portPair();
+const PortNibble_template& portPair() const;
+N__NT__Response_SourceAddressEntries_template& SourceAddressEntries();
+const N__NT__Response_SourceAddressEntries_template& SourceAddressEntries() const;
+int size_of() const;
+void log() const;
+void log_match(const N__NT__Response& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class N__NTX__Request : public Base_Type {
+  INTEGER field_msgFunction;
+  PortNibble field_portPair;
+  OCTETSTRING field_reserved3;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  N__NTX__Request();
+  N__NTX__Request(const INTEGER& par_msgFunction,
+    const PortNibble& par_portPair,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  N__NTX__Request(const N__NTX__Request& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  N__NTX__Request& operator=(const N__NTX__Request& other_value);
+  boolean operator==(const N__NTX__Request& other_value) const;
+  inline boolean operator!=(const N__NTX__Request& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& msgFunction()
+    {return field_msgFunction;}
+  inline const INTEGER& msgFunction() const
+    {return field_msgFunction;}
+  inline PortNibble& portPair()
+    {return field_portPair;}
+  inline const PortNibble& portPair() const
+    {return field_portPair;}
+  inline OCTETSTRING& reserved3()
+    {return field_reserved3;}
+  inline const OCTETSTRING& reserved3() const
+    {return field_reserved3;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class N__NTX__Request_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+N__NTX__Request_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const N__NTX__Request& other_value);
+void copy_template(const N__NTX__Request_template& other_value);
+
+public:
+N__NTX__Request_template();
+N__NTX__Request_template(template_sel other_value);
+N__NTX__Request_template(const N__NTX__Request& other_value);
+N__NTX__Request_template(const OPTIONAL<N__NTX__Request>& other_value);
+N__NTX__Request_template(const N__NTX__Request_template& other_value);
+~N__NTX__Request_template();
+N__NTX__Request_template& operator=(template_sel other_value);
+N__NTX__Request_template& operator=(const N__NTX__Request& other_value);
+N__NTX__Request_template& operator=(const OPTIONAL<N__NTX__Request>& other_value);
+N__NTX__Request_template& operator=(const N__NTX__Request_template& other_value);
+boolean match(const N__NTX__Request& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+N__NTX__Request valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+N__NTX__Request_template& list_item(unsigned int list_index) const;
+INTEGER_template& msgFunction();
+const INTEGER_template& msgFunction() const;
+PortNibble_template& portPair();
+const PortNibble_template& portPair() const;
+OCTETSTRING_template& reserved3();
+const OCTETSTRING_template& reserved3() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const N__NTX__Request& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SA__NAME__pair : public Base_Type {
+  OCTETSTRING field_sourceAddress;
+  NAME field_name;
+public:
+  SA__NAME__pair();
+  SA__NAME__pair(const OCTETSTRING& par_sourceAddress,
+    const NAME& par_name);
+  SA__NAME__pair(const SA__NAME__pair& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SA__NAME__pair& operator=(const SA__NAME__pair& other_value);
+  boolean operator==(const SA__NAME__pair& other_value) const;
+  inline boolean operator!=(const SA__NAME__pair& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& sourceAddress()
+    {return field_sourceAddress;}
+  inline const OCTETSTRING& sourceAddress() const
+    {return field_sourceAddress;}
+  inline NAME& name()
+    {return field_name;}
+  inline const NAME& name() const
+    {return field_name;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class SA__NAME__pair_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SA__NAME__pair_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SA__NAME__pair& other_value);
+void copy_template(const SA__NAME__pair_template& other_value);
+
+public:
+SA__NAME__pair_template();
+SA__NAME__pair_template(template_sel other_value);
+SA__NAME__pair_template(const SA__NAME__pair& other_value);
+SA__NAME__pair_template(const OPTIONAL<SA__NAME__pair>& other_value);
+SA__NAME__pair_template(const SA__NAME__pair_template& other_value);
+~SA__NAME__pair_template();
+SA__NAME__pair_template& operator=(template_sel other_value);
+SA__NAME__pair_template& operator=(const SA__NAME__pair& other_value);
+SA__NAME__pair_template& operator=(const OPTIONAL<SA__NAME__pair>& other_value);
+SA__NAME__pair_template& operator=(const SA__NAME__pair_template& other_value);
+boolean match(const SA__NAME__pair& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SA__NAME__pair valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SA__NAME__pair_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& sourceAddress();
+const OCTETSTRING_template& sourceAddress() const;
+NAME_template& name();
+const NAME_template& name() const;
+int size_of() const;
+void log() const;
+void log_match(const SA__NAME__pair& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class N__NTX__Response_sourceaddress__NAME__pairs : public Base_Type {
+struct recordof_setof_struct {
+int ref_count;
+int n_elements;
+SA__NAME__pair **value_elements;
+} *val_ptr;
+
+static const SA__NAME__pair UNBOUND_ELEM;
+private:
+friend boolean operator==(null_type null_value, const N__NTX__Response_sourceaddress__NAME__pairs& other_value);
+
+public:
+  typedef SA__NAME__pair of_type;
+N__NTX__Response_sourceaddress__NAME__pairs();
+N__NTX__Response_sourceaddress__NAME__pairs(null_type other_value);
+N__NTX__Response_sourceaddress__NAME__pairs(const N__NTX__Response_sourceaddress__NAME__pairs& other_value);
+~N__NTX__Response_sourceaddress__NAME__pairs();
+
+void clean_up();
+N__NTX__Response_sourceaddress__NAME__pairs& operator=(null_type other_value);
+N__NTX__Response_sourceaddress__NAME__pairs& operator=(const N__NTX__Response_sourceaddress__NAME__pairs& other_value);
+
+boolean operator==(null_type other_value) const;
+boolean operator==(const N__NTX__Response_sourceaddress__NAME__pairs& other_value) const;
+inline boolean operator!=(null_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const N__NTX__Response_sourceaddress__NAME__pairs& other_value) const { return !(*this == other_value); }
+
+SA__NAME__pair& operator[](int index_value);
+SA__NAME__pair& operator[](const INTEGER& index_value);
+const SA__NAME__pair& operator[](int index_value) const;
+const SA__NAME__pair& operator[](const INTEGER& index_value) const;
+
+N__NTX__Response_sourceaddress__NAME__pairs operator<<=(int rotate_count) const;
+N__NTX__Response_sourceaddress__NAME__pairs operator<<=(const INTEGER& rotate_count) const;
+N__NTX__Response_sourceaddress__NAME__pairs operator>>=(int rotate_count) const;
+N__NTX__Response_sourceaddress__NAME__pairs operator>>=(const INTEGER& rotate_count) const;
+
+N__NTX__Response_sourceaddress__NAME__pairs operator+(const N__NTX__Response_sourceaddress__NAME__pairs& other_value) const;
+
+N__NTX__Response_sourceaddress__NAME__pairs substr(int index, int returncount) const;
+
+N__NTX__Response_sourceaddress__NAME__pairs replace(int index, int len, const N__NTX__Response_sourceaddress__NAME__pairs& repl) const;
+
+N__NTX__Response_sourceaddress__NAME__pairs replace(int index, int len, const N__NTX__Response_sourceaddress__NAME__pairs_template& repl) const;
+
+void set_size(int new_size);
+inline boolean is_bound() const {return val_ptr != NULL; }
+inline boolean is_present() const { return is_bound(); }
+boolean is_value() const;
+int size_of() const;
+int n_elem() const { return size_of(); }
+int lengthof() const;
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class N__NTX__Response_sourceaddress__NAME__pairs_template : public Record_Of_Template {
+union {
+struct {
+int n_elements;
+SA__NAME__pair_template **value_elements;
+} single_value;
+struct {
+unsigned int n_values;
+N__NTX__Response_sourceaddress__NAME__pairs_template *list_value;
+} value_list;
+};
+void copy_value(const N__NTX__Response_sourceaddress__NAME__pairs& other_value);
+void copy_template(const N__NTX__Response_sourceaddress__NAME__pairs_template& other_value);
+static boolean match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy);
+
+public:
+N__NTX__Response_sourceaddress__NAME__pairs_template();
+N__NTX__Response_sourceaddress__NAME__pairs_template(template_sel other_value);
+N__NTX__Response_sourceaddress__NAME__pairs_template(null_type other_value);
+N__NTX__Response_sourceaddress__NAME__pairs_template(const N__NTX__Response_sourceaddress__NAME__pairs& other_value);
+N__NTX__Response_sourceaddress__NAME__pairs_template(const OPTIONAL<N__NTX__Response_sourceaddress__NAME__pairs>& other_value);
+N__NTX__Response_sourceaddress__NAME__pairs_template(const N__NTX__Response_sourceaddress__NAME__pairs_template& other_value);
+~N__NTX__Response_sourceaddress__NAME__pairs_template();
+
+void clean_up();
+N__NTX__Response_sourceaddress__NAME__pairs_template& operator=(template_sel other_value);
+N__NTX__Response_sourceaddress__NAME__pairs_template& operator=(null_type other_value);
+N__NTX__Response_sourceaddress__NAME__pairs_template& operator=(const N__NTX__Response_sourceaddress__NAME__pairs& other_value);
+N__NTX__Response_sourceaddress__NAME__pairs_template& operator=(const OPTIONAL<N__NTX__Response_sourceaddress__NAME__pairs>& other_value);
+N__NTX__Response_sourceaddress__NAME__pairs_template& operator=(const N__NTX__Response_sourceaddress__NAME__pairs_template& other_value);
+
+SA__NAME__pair_template& operator[](int index_value);
+SA__NAME__pair_template& operator[](const INTEGER& index_value);
+const SA__NAME__pair_template& operator[](int index_value) const;
+const SA__NAME__pair_template& operator[](const INTEGER& index_value) const;
+
+void set_size(int new_size);
+int n_elem() const;
+int size_of(boolean is_size) const;
+inline int size_of() const { return size_of(TRUE); }
+inline int lengthof() const { return size_of(FALSE); }
+boolean match(const N__NTX__Response_sourceaddress__NAME__pairs& other_value, boolean legacy = FALSE) const;
+inline boolean is_bound() const 
+  {return template_selection != UNINITIALIZED_TEMPLATE; }
+boolean is_value() const;
+N__NTX__Response_sourceaddress__NAME__pairs valueof() const;
+N__NTX__Response_sourceaddress__NAME__pairs substr(int index, int returncount) const;
+
+N__NTX__Response_sourceaddress__NAME__pairs replace(int index, int len, const N__NTX__Response_sourceaddress__NAME__pairs_template& repl) const;
+
+N__NTX__Response_sourceaddress__NAME__pairs replace(int index, int len, const N__NTX__Response_sourceaddress__NAME__pairs& repl) const;
+
+void set_type(template_sel template_type, unsigned int list_length);
+N__NTX__Response_sourceaddress__NAME__pairs_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const N__NTX__Response_sourceaddress__NAME__pairs& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean get_istemplate_kind(const char* type) const;
+};
+
+class N__NTX__Response : public Base_Type {
+  INTEGER field_msgFunction;
+  PortNibble field_portPair;
+  INTEGER field_numberOfReportedPorts;
+  N__NTX__Response_sourceaddress__NAME__pairs field_sourceaddress__NAME__pairs;
+public:
+  N__NTX__Response();
+  N__NTX__Response(const INTEGER& par_msgFunction,
+    const PortNibble& par_portPair,
+    const INTEGER& par_numberOfReportedPorts,
+    const N__NTX__Response_sourceaddress__NAME__pairs& par_sourceaddress__NAME__pairs);
+  N__NTX__Response(const N__NTX__Response& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  N__NTX__Response& operator=(const N__NTX__Response& other_value);
+  boolean operator==(const N__NTX__Response& other_value) const;
+  inline boolean operator!=(const N__NTX__Response& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& msgFunction()
+    {return field_msgFunction;}
+  inline const INTEGER& msgFunction() const
+    {return field_msgFunction;}
+  inline PortNibble& portPair()
+    {return field_portPair;}
+  inline const PortNibble& portPair() const
+    {return field_portPair;}
+  inline INTEGER& numberOfReportedPorts()
+    {return field_numberOfReportedPorts;}
+  inline const INTEGER& numberOfReportedPorts() const
+    {return field_numberOfReportedPorts;}
+  inline N__NTX__Response_sourceaddress__NAME__pairs& sourceaddress__NAME__pairs()
+    {return field_sourceaddress__NAME__pairs;}
+  inline const N__NTX__Response_sourceaddress__NAME__pairs& sourceaddress__NAME__pairs() const
+    {return field_sourceaddress__NAME__pairs;}
+  inline int size_of() const
+    {return 4;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class N__NTX__Response_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+N__NTX__Response_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const N__NTX__Response& other_value);
+void copy_template(const N__NTX__Response_template& other_value);
+
+public:
+N__NTX__Response_template();
+N__NTX__Response_template(template_sel other_value);
+N__NTX__Response_template(const N__NTX__Response& other_value);
+N__NTX__Response_template(const OPTIONAL<N__NTX__Response>& other_value);
+N__NTX__Response_template(const N__NTX__Response_template& other_value);
+~N__NTX__Response_template();
+N__NTX__Response_template& operator=(template_sel other_value);
+N__NTX__Response_template& operator=(const N__NTX__Response& other_value);
+N__NTX__Response_template& operator=(const OPTIONAL<N__NTX__Response>& other_value);
+N__NTX__Response_template& operator=(const N__NTX__Response_template& other_value);
+boolean match(const N__NTX__Response& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+N__NTX__Response valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+N__NTX__Response_template& list_item(unsigned int list_index) const;
+INTEGER_template& msgFunction();
+const INTEGER_template& msgFunction() const;
+PortNibble_template& portPair();
+const PortNibble_template& portPair() const;
+INTEGER_template& numberOfReportedPorts();
+const INTEGER_template& numberOfReportedPorts() const;
+N__NTX__Response_sourceaddress__NAME__pairs_template& sourceaddress__NAME__pairs();
+const N__NTX__Response_sourceaddress__NAME__pairs_template& sourceaddress__NAME__pairs() const;
+int size_of() const;
+void log() const;
+void log_match(const N__NTX__Response& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class e__ParametricIdentifier : public Base_Type { // enum
+friend class e__ParametricIdentifier_template;
+public:
+enum enum_type { requestAllParameters = 0, buffersize = 1, maximumFilterDatabaseSize = 2, numberOfFilterDatabaseEntries = 3, maximumNumberOfMessagesReceivedPerSecond = 4, maximumNumberOfMessagesForwardedPerSecond = 5, maximumNumberOfMessagesFilteredPerSecond = 6, maximumTransitDelayTime__ms = 7, averageTransitDelayTime__ms = 8, numberOfMessagesLostDueToBufferOverflow = 9, numberOfMessagesWithExcessTransitDelayTime = 10, averageNumberOfMessagesReceivedPerSecond = 11, averageNumberOfMessagesForwardedPerSecond = 12, averageNumberOfMessagesFilteredPerSecond = 13, uptimeSinceLastPowerOnReset__s = 14, numberOfPorts = 15, networkInterconnectionUnitType = 16, reserved = 255, UNKNOWN_VALUE = 17, UNBOUND_VALUE = 18 };
+private:
+enum_type enum_value;
+
+public:
+e__ParametricIdentifier();
+e__ParametricIdentifier(int other_value);
+e__ParametricIdentifier(enum_type other_value);
+e__ParametricIdentifier(const e__ParametricIdentifier& other_value);
+
+e__ParametricIdentifier& operator=(int other_value);
+e__ParametricIdentifier& operator=(enum_type other_value);
+e__ParametricIdentifier& operator=(const e__ParametricIdentifier& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const e__ParametricIdentifier& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const e__ParametricIdentifier& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const e__ParametricIdentifier& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const e__ParametricIdentifier& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const e__ParametricIdentifier& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const e__ParametricIdentifier& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const e__ParametricIdentifier& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class e__ParametricIdentifier_template : public Base_Template {
+union {
+e__ParametricIdentifier::enum_type single_value;
+struct {
+unsigned int n_values;
+e__ParametricIdentifier_template *list_value;
+} value_list;
+};
+
+void copy_template(const e__ParametricIdentifier_template& other_value);
+
+public:
+e__ParametricIdentifier_template();
+e__ParametricIdentifier_template(template_sel other_value);
+e__ParametricIdentifier_template(int other_value);
+e__ParametricIdentifier_template(e__ParametricIdentifier::enum_type other_value);
+e__ParametricIdentifier_template(const e__ParametricIdentifier& other_value);
+e__ParametricIdentifier_template(const OPTIONAL<e__ParametricIdentifier>& other_value);
+e__ParametricIdentifier_template(const e__ParametricIdentifier_template& other_value);
+~e__ParametricIdentifier_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+e__ParametricIdentifier_template& operator=(template_sel other_value);
+e__ParametricIdentifier_template& operator=(int other_value);
+e__ParametricIdentifier_template& operator=(e__ParametricIdentifier::enum_type other_value);
+e__ParametricIdentifier_template& operator=(const e__ParametricIdentifier& other_value);
+e__ParametricIdentifier_template& operator=(const OPTIONAL<e__ParametricIdentifier>& other_value);
+e__ParametricIdentifier_template& operator=(const e__ParametricIdentifier_template& other_value);
+
+boolean match(e__ParametricIdentifier::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const e__ParametricIdentifier& other_value, boolean legacy = FALSE) const;
+e__ParametricIdentifier::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+e__ParametricIdentifier_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const e__ParametricIdentifier& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class N__GP__Request_parametricIdentifiers : public Base_Type {
+struct recordof_setof_struct {
+int ref_count;
+int n_elements;
+e__ParametricIdentifier **value_elements;
+} *val_ptr;
+
+static const e__ParametricIdentifier UNBOUND_ELEM;
+private:
+friend boolean operator==(null_type null_value, const N__GP__Request_parametricIdentifiers& other_value);
+
+public:
+  typedef e__ParametricIdentifier of_type;
+N__GP__Request_parametricIdentifiers();
+N__GP__Request_parametricIdentifiers(null_type other_value);
+N__GP__Request_parametricIdentifiers(const N__GP__Request_parametricIdentifiers& other_value);
+~N__GP__Request_parametricIdentifiers();
+
+void clean_up();
+N__GP__Request_parametricIdentifiers& operator=(null_type other_value);
+N__GP__Request_parametricIdentifiers& operator=(const N__GP__Request_parametricIdentifiers& other_value);
+
+boolean operator==(null_type other_value) const;
+boolean operator==(const N__GP__Request_parametricIdentifiers& other_value) const;
+inline boolean operator!=(null_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const N__GP__Request_parametricIdentifiers& other_value) const { return !(*this == other_value); }
+
+e__ParametricIdentifier& operator[](int index_value);
+e__ParametricIdentifier& operator[](const INTEGER& index_value);
+const e__ParametricIdentifier& operator[](int index_value) const;
+const e__ParametricIdentifier& operator[](const INTEGER& index_value) const;
+
+N__GP__Request_parametricIdentifiers operator<<=(int rotate_count) const;
+N__GP__Request_parametricIdentifiers operator<<=(const INTEGER& rotate_count) const;
+N__GP__Request_parametricIdentifiers operator>>=(int rotate_count) const;
+N__GP__Request_parametricIdentifiers operator>>=(const INTEGER& rotate_count) const;
+
+N__GP__Request_parametricIdentifiers operator+(const N__GP__Request_parametricIdentifiers& other_value) const;
+
+N__GP__Request_parametricIdentifiers substr(int index, int returncount) const;
+
+N__GP__Request_parametricIdentifiers replace(int index, int len, const N__GP__Request_parametricIdentifiers& repl) const;
+
+N__GP__Request_parametricIdentifiers replace(int index, int len, const N__GP__Request_parametricIdentifiers_template& repl) const;
+
+void set_size(int new_size);
+inline boolean is_bound() const {return val_ptr != NULL; }
+inline boolean is_present() const { return is_bound(); }
+boolean is_value() const;
+int size_of() const;
+int n_elem() const { return size_of(); }
+int lengthof() const;
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class N__GP__Request_parametricIdentifiers_template : public Record_Of_Template {
+union {
+struct {
+int n_elements;
+e__ParametricIdentifier_template **value_elements;
+} single_value;
+struct {
+unsigned int n_values;
+N__GP__Request_parametricIdentifiers_template *list_value;
+} value_list;
+};
+void copy_value(const N__GP__Request_parametricIdentifiers& other_value);
+void copy_template(const N__GP__Request_parametricIdentifiers_template& other_value);
+static boolean match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy);
+
+public:
+N__GP__Request_parametricIdentifiers_template();
+N__GP__Request_parametricIdentifiers_template(template_sel other_value);
+N__GP__Request_parametricIdentifiers_template(null_type other_value);
+N__GP__Request_parametricIdentifiers_template(const N__GP__Request_parametricIdentifiers& other_value);
+N__GP__Request_parametricIdentifiers_template(const OPTIONAL<N__GP__Request_parametricIdentifiers>& other_value);
+N__GP__Request_parametricIdentifiers_template(const N__GP__Request_parametricIdentifiers_template& other_value);
+~N__GP__Request_parametricIdentifiers_template();
+
+void clean_up();
+N__GP__Request_parametricIdentifiers_template& operator=(template_sel other_value);
+N__GP__Request_parametricIdentifiers_template& operator=(null_type other_value);
+N__GP__Request_parametricIdentifiers_template& operator=(const N__GP__Request_parametricIdentifiers& other_value);
+N__GP__Request_parametricIdentifiers_template& operator=(const OPTIONAL<N__GP__Request_parametricIdentifiers>& other_value);
+N__GP__Request_parametricIdentifiers_template& operator=(const N__GP__Request_parametricIdentifiers_template& other_value);
+
+e__ParametricIdentifier_template& operator[](int index_value);
+e__ParametricIdentifier_template& operator[](const INTEGER& index_value);
+const e__ParametricIdentifier_template& operator[](int index_value) const;
+const e__ParametricIdentifier_template& operator[](const INTEGER& index_value) const;
+
+void set_size(int new_size);
+int n_elem() const;
+int size_of(boolean is_size) const;
+inline int size_of() const { return size_of(TRUE); }
+inline int lengthof() const { return size_of(FALSE); }
+boolean match(const N__GP__Request_parametricIdentifiers& other_value, boolean legacy = FALSE) const;
+inline boolean is_bound() const 
+  {return template_selection != UNINITIALIZED_TEMPLATE; }
+boolean is_value() const;
+N__GP__Request_parametricIdentifiers valueof() const;
+N__GP__Request_parametricIdentifiers substr(int index, int returncount) const;
+
+N__GP__Request_parametricIdentifiers replace(int index, int len, const N__GP__Request_parametricIdentifiers_template& repl) const;
+
+N__GP__Request_parametricIdentifiers replace(int index, int len, const N__GP__Request_parametricIdentifiers& repl) const;
+
+void set_type(template_sel template_type, unsigned int list_length);
+N__GP__Request_parametricIdentifiers_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const N__GP__Request_parametricIdentifiers& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean get_istemplate_kind(const char* type) const;
+};
+
+class N__GP__Request : public Base_Type {
+  INTEGER field_msgFunction;
+  N__GP__Request_parametricIdentifiers field_parametricIdentifiers;
+public:
+  N__GP__Request();
+  N__GP__Request(const INTEGER& par_msgFunction,
+    const N__GP__Request_parametricIdentifiers& par_parametricIdentifiers);
+  N__GP__Request(const N__GP__Request& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  N__GP__Request& operator=(const N__GP__Request& other_value);
+  boolean operator==(const N__GP__Request& other_value) const;
+  inline boolean operator!=(const N__GP__Request& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& msgFunction()
+    {return field_msgFunction;}
+  inline const INTEGER& msgFunction() const
+    {return field_msgFunction;}
+  inline N__GP__Request_parametricIdentifiers& parametricIdentifiers()
+    {return field_parametricIdentifiers;}
+  inline const N__GP__Request_parametricIdentifiers& parametricIdentifiers() const
+    {return field_parametricIdentifiers;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class N__GP__Request_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+N__GP__Request_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const N__GP__Request& other_value);
+void copy_template(const N__GP__Request_template& other_value);
+
+public:
+N__GP__Request_template();
+N__GP__Request_template(template_sel other_value);
+N__GP__Request_template(const N__GP__Request& other_value);
+N__GP__Request_template(const OPTIONAL<N__GP__Request>& other_value);
+N__GP__Request_template(const N__GP__Request_template& other_value);
+~N__GP__Request_template();
+N__GP__Request_template& operator=(template_sel other_value);
+N__GP__Request_template& operator=(const N__GP__Request& other_value);
+N__GP__Request_template& operator=(const OPTIONAL<N__GP__Request>& other_value);
+N__GP__Request_template& operator=(const N__GP__Request_template& other_value);
+boolean match(const N__GP__Request& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+N__GP__Request valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+N__GP__Request_template& list_item(unsigned int list_index) const;
+INTEGER_template& msgFunction();
+const INTEGER_template& msgFunction() const;
+N__GP__Request_parametricIdentifiers_template& parametricIdentifiers();
+const N__GP__Request_parametricIdentifiers_template& parametricIdentifiers() const;
+int size_of() const;
+void log() const;
+void log_match(const N__GP__Request& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class RequestedParametric : public Base_Type {
+public:
+enum union_selection_type { UNBOUND_VALUE = 0, ALT_buffersize = 1, ALT_maximumFilterDatabaseSize = 2, ALT_numberOfFilterDatabaseEntries = 3, ALT_maximumNumberOfMessagesReceivedPerSecond = 4, ALT_maximumNumberOfMessagesForwardedPerSecond = 5, ALT_maximumNumberOfMessagesFilteredPerSecond = 6, ALT_maximumTransitDelayTime__ms = 7, ALT_averageTransitDelayTime__ms = 8, ALT_numberOfMessagesLostDueToBufferOverflow = 9, ALT_numberOfMessagesWithExcessTransitDelayTime = 10, ALT_averageNumberOfMessagesReceivedPerSecond = 11, ALT_averageNumberOfMessagesForwardedPerSecond = 12, ALT_averageNumberOfMessagesFilteredPerSecond = 13, ALT_uptimeSinceLastPowerOnReset__s = 14, ALT_numberOfPorts = 15, ALT_networkInterconnectionUnitType = 16, ALT_reserved = 17 };
+private:
+union_selection_type union_selection;
+union {
+OCTETSTRING *field_buffersize;
+OCTETSTRING *field_maximumFilterDatabaseSize;
+OCTETSTRING *field_numberOfFilterDatabaseEntries;
+OCTETSTRING *field_maximumNumberOfMessagesReceivedPerSecond;
+OCTETSTRING *field_maximumNumberOfMessagesForwardedPerSecond;
+OCTETSTRING *field_maximumNumberOfMessagesFilteredPerSecond;
+OCTETSTRING *field_maximumTransitDelayTime__ms;
+OCTETSTRING *field_averageTransitDelayTime__ms;
+OCTETSTRING *field_numberOfMessagesLostDueToBufferOverflow;
+OCTETSTRING *field_numberOfMessagesWithExcessTransitDelayTime;
+OCTETSTRING *field_averageNumberOfMessagesReceivedPerSecond;
+OCTETSTRING *field_averageNumberOfMessagesForwardedPerSecond;
+OCTETSTRING *field_averageNumberOfMessagesFilteredPerSecond;
+OCTETSTRING *field_uptimeSinceLastPowerOnReset__s;
+OCTETSTRING *field_numberOfPorts;
+OCTETSTRING *field_networkInterconnectionUnitType;
+OCTETSTRING *field_reserved;
+};
+void copy_value(const RequestedParametric& other_value);
+
+public:
+RequestedParametric();
+RequestedParametric(const RequestedParametric& other_value);
+~RequestedParametric();
+RequestedParametric& operator=(const RequestedParametric& other_value);
+boolean operator==(const RequestedParametric& other_value) const;
+inline boolean operator!=(const RequestedParametric& other_value) const { return !(*this == other_value); }
+OCTETSTRING& buffersize();
+const OCTETSTRING& buffersize() const;
+OCTETSTRING& maximumFilterDatabaseSize();
+const OCTETSTRING& maximumFilterDatabaseSize() const;
+OCTETSTRING& numberOfFilterDatabaseEntries();
+const OCTETSTRING& numberOfFilterDatabaseEntries() const;
+OCTETSTRING& maximumNumberOfMessagesReceivedPerSecond();
+const OCTETSTRING& maximumNumberOfMessagesReceivedPerSecond() const;
+OCTETSTRING& maximumNumberOfMessagesForwardedPerSecond();
+const OCTETSTRING& maximumNumberOfMessagesForwardedPerSecond() const;
+OCTETSTRING& maximumNumberOfMessagesFilteredPerSecond();
+const OCTETSTRING& maximumNumberOfMessagesFilteredPerSecond() const;
+OCTETSTRING& maximumTransitDelayTime__ms();
+const OCTETSTRING& maximumTransitDelayTime__ms() const;
+OCTETSTRING& averageTransitDelayTime__ms();
+const OCTETSTRING& averageTransitDelayTime__ms() const;
+OCTETSTRING& numberOfMessagesLostDueToBufferOverflow();
+const OCTETSTRING& numberOfMessagesLostDueToBufferOverflow() const;
+OCTETSTRING& numberOfMessagesWithExcessTransitDelayTime();
+const OCTETSTRING& numberOfMessagesWithExcessTransitDelayTime() const;
+OCTETSTRING& averageNumberOfMessagesReceivedPerSecond();
+const OCTETSTRING& averageNumberOfMessagesReceivedPerSecond() const;
+OCTETSTRING& averageNumberOfMessagesForwardedPerSecond();
+const OCTETSTRING& averageNumberOfMessagesForwardedPerSecond() const;
+OCTETSTRING& averageNumberOfMessagesFilteredPerSecond();
+const OCTETSTRING& averageNumberOfMessagesFilteredPerSecond() const;
+OCTETSTRING& uptimeSinceLastPowerOnReset__s();
+const OCTETSTRING& uptimeSinceLastPowerOnReset__s() const;
+OCTETSTRING& numberOfPorts();
+const OCTETSTRING& numberOfPorts() const;
+OCTETSTRING& networkInterconnectionUnitType();
+const OCTETSTRING& networkInterconnectionUnitType() const;
+OCTETSTRING& reserved();
+const OCTETSTRING& reserved() const;
+inline union_selection_type get_selection() const { return union_selection; }
+boolean ischosen(union_selection_type checked_selection) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class RequestedParametric_template : public Base_Template {
+union {
+struct {
+RequestedParametric::union_selection_type union_selection;
+union {
+OCTETSTRING_template *field_buffersize;
+OCTETSTRING_template *field_maximumFilterDatabaseSize;
+OCTETSTRING_template *field_numberOfFilterDatabaseEntries;
+OCTETSTRING_template *field_maximumNumberOfMessagesReceivedPerSecond;
+OCTETSTRING_template *field_maximumNumberOfMessagesForwardedPerSecond;
+OCTETSTRING_template *field_maximumNumberOfMessagesFilteredPerSecond;
+OCTETSTRING_template *field_maximumTransitDelayTime__ms;
+OCTETSTRING_template *field_averageTransitDelayTime__ms;
+OCTETSTRING_template *field_numberOfMessagesLostDueToBufferOverflow;
+OCTETSTRING_template *field_numberOfMessagesWithExcessTransitDelayTime;
+OCTETSTRING_template *field_averageNumberOfMessagesReceivedPerSecond;
+OCTETSTRING_template *field_averageNumberOfMessagesForwardedPerSecond;
+OCTETSTRING_template *field_averageNumberOfMessagesFilteredPerSecond;
+OCTETSTRING_template *field_uptimeSinceLastPowerOnReset__s;
+OCTETSTRING_template *field_numberOfPorts;
+OCTETSTRING_template *field_networkInterconnectionUnitType;
+OCTETSTRING_template *field_reserved;
+};
+} single_value;
+struct {
+unsigned int n_values;
+RequestedParametric_template *list_value;
+} value_list;
+};
+void copy_value(const RequestedParametric& other_value);
+
+void copy_template(const RequestedParametric_template& other_value);
+
+public:
+RequestedParametric_template();
+RequestedParametric_template(template_sel other_value);
+RequestedParametric_template(const RequestedParametric& other_value);
+RequestedParametric_template(const OPTIONAL<RequestedParametric>& other_value);
+RequestedParametric_template(const RequestedParametric_template& other_value);
+~RequestedParametric_template();
+void clean_up();
+RequestedParametric_template& operator=(template_sel other_value);
+RequestedParametric_template& operator=(const RequestedParametric& other_value);
+RequestedParametric_template& operator=(const OPTIONAL<RequestedParametric>& other_value);
+RequestedParametric_template& operator=(const RequestedParametric_template& other_value);
+boolean match(const RequestedParametric& other_value, boolean legacy = FALSE) const;
+boolean is_value() const;RequestedParametric valueof() const;
+RequestedParametric_template& list_item(unsigned int list_index) const;
+void set_type(template_sel template_type, unsigned int list_length);
+OCTETSTRING_template& buffersize();
+const OCTETSTRING_template& buffersize() const;
+OCTETSTRING_template& maximumFilterDatabaseSize();
+const OCTETSTRING_template& maximumFilterDatabaseSize() const;
+OCTETSTRING_template& numberOfFilterDatabaseEntries();
+const OCTETSTRING_template& numberOfFilterDatabaseEntries() const;
+OCTETSTRING_template& maximumNumberOfMessagesReceivedPerSecond();
+const OCTETSTRING_template& maximumNumberOfMessagesReceivedPerSecond() const;
+OCTETSTRING_template& maximumNumberOfMessagesForwardedPerSecond();
+const OCTETSTRING_template& maximumNumberOfMessagesForwardedPerSecond() const;
+OCTETSTRING_template& maximumNumberOfMessagesFilteredPerSecond();
+const OCTETSTRING_template& maximumNumberOfMessagesFilteredPerSecond() const;
+OCTETSTRING_template& maximumTransitDelayTime__ms();
+const OCTETSTRING_template& maximumTransitDelayTime__ms() const;
+OCTETSTRING_template& averageTransitDelayTime__ms();
+const OCTETSTRING_template& averageTransitDelayTime__ms() const;
+OCTETSTRING_template& numberOfMessagesLostDueToBufferOverflow();
+const OCTETSTRING_template& numberOfMessagesLostDueToBufferOverflow() const;
+OCTETSTRING_template& numberOfMessagesWithExcessTransitDelayTime();
+const OCTETSTRING_template& numberOfMessagesWithExcessTransitDelayTime() const;
+OCTETSTRING_template& averageNumberOfMessagesReceivedPerSecond();
+const OCTETSTRING_template& averageNumberOfMessagesReceivedPerSecond() const;
+OCTETSTRING_template& averageNumberOfMessagesForwardedPerSecond();
+const OCTETSTRING_template& averageNumberOfMessagesForwardedPerSecond() const;
+OCTETSTRING_template& averageNumberOfMessagesFilteredPerSecond();
+const OCTETSTRING_template& averageNumberOfMessagesFilteredPerSecond() const;
+OCTETSTRING_template& uptimeSinceLastPowerOnReset__s();
+const OCTETSTRING_template& uptimeSinceLastPowerOnReset__s() const;
+OCTETSTRING_template& numberOfPorts();
+const OCTETSTRING_template& numberOfPorts() const;
+OCTETSTRING_template& networkInterconnectionUnitType();
+const OCTETSTRING_template& networkInterconnectionUnitType() const;
+OCTETSTRING_template& reserved();
+const OCTETSTRING_template& reserved() const;
+boolean ischosen(RequestedParametric::union_selection_type checked_selection) const;
+void log() const;
+void log_match(const RequestedParametric& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class N__GP__Response : public Base_Type {
+  INTEGER field_msgFunction;
+  N__GP__Response_requestedParametrics field_requestedParametrics;
+public:
+  N__GP__Response();
+  N__GP__Response(const INTEGER& par_msgFunction,
+    const N__GP__Response_requestedParametrics& par_requestedParametrics);
+  N__GP__Response(const N__GP__Response& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  N__GP__Response& operator=(const N__GP__Response& other_value);
+  boolean operator==(const N__GP__Response& other_value) const;
+  inline boolean operator!=(const N__GP__Response& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& msgFunction()
+    {return field_msgFunction;}
+  inline const INTEGER& msgFunction() const
+    {return field_msgFunction;}
+  inline N__GP__Response_requestedParametrics& requestedParametrics()
+    {return field_requestedParametrics;}
+  inline const N__GP__Response_requestedParametrics& requestedParametrics() const
+    {return field_requestedParametrics;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class N__GP__Response_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+N__GP__Response_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const N__GP__Response& other_value);
+void copy_template(const N__GP__Response_template& other_value);
+
+public:
+N__GP__Response_template();
+N__GP__Response_template(template_sel other_value);
+N__GP__Response_template(const N__GP__Response& other_value);
+N__GP__Response_template(const OPTIONAL<N__GP__Response>& other_value);
+N__GP__Response_template(const N__GP__Response_template& other_value);
+~N__GP__Response_template();
+N__GP__Response_template& operator=(template_sel other_value);
+N__GP__Response_template& operator=(const N__GP__Response& other_value);
+N__GP__Response_template& operator=(const OPTIONAL<N__GP__Response>& other_value);
+N__GP__Response_template& operator=(const N__GP__Response_template& other_value);
+boolean match(const N__GP__Response& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+N__GP__Response valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+N__GP__Response_template& list_item(unsigned int list_index) const;
+INTEGER_template& msgFunction();
+const INTEGER_template& msgFunction() const;
+N__GP__Response_requestedParametrics_template& requestedParametrics();
+const N__GP__Response_requestedParametrics_template& requestedParametrics() const;
+int size_of() const;
+void log() const;
+void log_match(const N__GP__Response& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class N__GP__Reset__Statistics : public Base_Type {
+  INTEGER field_msgFunction;
+  PortNibble field_portPair;
+  OCTETSTRING field_reserved3;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  N__GP__Reset__Statistics();
+  N__GP__Reset__Statistics(const INTEGER& par_msgFunction,
+    const PortNibble& par_portPair,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  N__GP__Reset__Statistics(const N__GP__Reset__Statistics& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  N__GP__Reset__Statistics& operator=(const N__GP__Reset__Statistics& other_value);
+  boolean operator==(const N__GP__Reset__Statistics& other_value) const;
+  inline boolean operator!=(const N__GP__Reset__Statistics& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& msgFunction()
+    {return field_msgFunction;}
+  inline const INTEGER& msgFunction() const
+    {return field_msgFunction;}
+  inline PortNibble& portPair()
+    {return field_portPair;}
+  inline const PortNibble& portPair() const
+    {return field_portPair;}
+  inline OCTETSTRING& reserved3()
+    {return field_reserved3;}
+  inline const OCTETSTRING& reserved3() const
+    {return field_reserved3;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class N__GP__Reset__Statistics_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+N__GP__Reset__Statistics_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const N__GP__Reset__Statistics& other_value);
+void copy_template(const N__GP__Reset__Statistics_template& other_value);
+
+public:
+N__GP__Reset__Statistics_template();
+N__GP__Reset__Statistics_template(template_sel other_value);
+N__GP__Reset__Statistics_template(const N__GP__Reset__Statistics& other_value);
+N__GP__Reset__Statistics_template(const OPTIONAL<N__GP__Reset__Statistics>& other_value);
+N__GP__Reset__Statistics_template(const N__GP__Reset__Statistics_template& other_value);
+~N__GP__Reset__Statistics_template();
+N__GP__Reset__Statistics_template& operator=(template_sel other_value);
+N__GP__Reset__Statistics_template& operator=(const N__GP__Reset__Statistics& other_value);
+N__GP__Reset__Statistics_template& operator=(const OPTIONAL<N__GP__Reset__Statistics>& other_value);
+N__GP__Reset__Statistics_template& operator=(const N__GP__Reset__Statistics_template& other_value);
+boolean match(const N__GP__Reset__Statistics& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+N__GP__Reset__Statistics valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+N__GP__Reset__Statistics_template& list_item(unsigned int list_index) const;
+INTEGER_template& msgFunction();
+const INTEGER_template& msgFunction() const;
+PortNibble_template& portPair();
+const PortNibble_template& portPair() const;
+OCTETSTRING_template& reserved3();
+const OCTETSTRING_template& reserved3() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const N__GP__Reset__Statistics& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class N__SP__Request_parametricIdentifiers : public Base_Type {
+struct recordof_setof_struct {
+int ref_count;
+int n_elements;
+e__ParametricIdentifier **value_elements;
+} *val_ptr;
+
+static const e__ParametricIdentifier UNBOUND_ELEM;
+private:
+friend boolean operator==(null_type null_value, const N__SP__Request_parametricIdentifiers& other_value);
+
+public:
+  typedef e__ParametricIdentifier of_type;
+N__SP__Request_parametricIdentifiers();
+N__SP__Request_parametricIdentifiers(null_type other_value);
+N__SP__Request_parametricIdentifiers(const N__SP__Request_parametricIdentifiers& other_value);
+~N__SP__Request_parametricIdentifiers();
+
+void clean_up();
+N__SP__Request_parametricIdentifiers& operator=(null_type other_value);
+N__SP__Request_parametricIdentifiers& operator=(const N__SP__Request_parametricIdentifiers& other_value);
+
+boolean operator==(null_type other_value) const;
+boolean operator==(const N__SP__Request_parametricIdentifiers& other_value) const;
+inline boolean operator!=(null_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const N__SP__Request_parametricIdentifiers& other_value) const { return !(*this == other_value); }
+
+e__ParametricIdentifier& operator[](int index_value);
+e__ParametricIdentifier& operator[](const INTEGER& index_value);
+const e__ParametricIdentifier& operator[](int index_value) const;
+const e__ParametricIdentifier& operator[](const INTEGER& index_value) const;
+
+N__SP__Request_parametricIdentifiers operator<<=(int rotate_count) const;
+N__SP__Request_parametricIdentifiers operator<<=(const INTEGER& rotate_count) const;
+N__SP__Request_parametricIdentifiers operator>>=(int rotate_count) const;
+N__SP__Request_parametricIdentifiers operator>>=(const INTEGER& rotate_count) const;
+
+N__SP__Request_parametricIdentifiers operator+(const N__SP__Request_parametricIdentifiers& other_value) const;
+
+N__SP__Request_parametricIdentifiers substr(int index, int returncount) const;
+
+N__SP__Request_parametricIdentifiers replace(int index, int len, const N__SP__Request_parametricIdentifiers& repl) const;
+
+N__SP__Request_parametricIdentifiers replace(int index, int len, const N__SP__Request_parametricIdentifiers_template& repl) const;
+
+void set_size(int new_size);
+inline boolean is_bound() const {return val_ptr != NULL; }
+inline boolean is_present() const { return is_bound(); }
+boolean is_value() const;
+int size_of() const;
+int n_elem() const { return size_of(); }
+int lengthof() const;
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class N__SP__Request_parametricIdentifiers_template : public Record_Of_Template {
+union {
+struct {
+int n_elements;
+e__ParametricIdentifier_template **value_elements;
+} single_value;
+struct {
+unsigned int n_values;
+N__SP__Request_parametricIdentifiers_template *list_value;
+} value_list;
+};
+void copy_value(const N__SP__Request_parametricIdentifiers& other_value);
+void copy_template(const N__SP__Request_parametricIdentifiers_template& other_value);
+static boolean match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy);
+
+public:
+N__SP__Request_parametricIdentifiers_template();
+N__SP__Request_parametricIdentifiers_template(template_sel other_value);
+N__SP__Request_parametricIdentifiers_template(null_type other_value);
+N__SP__Request_parametricIdentifiers_template(const N__SP__Request_parametricIdentifiers& other_value);
+N__SP__Request_parametricIdentifiers_template(const OPTIONAL<N__SP__Request_parametricIdentifiers>& other_value);
+N__SP__Request_parametricIdentifiers_template(const N__SP__Request_parametricIdentifiers_template& other_value);
+~N__SP__Request_parametricIdentifiers_template();
+
+void clean_up();
+N__SP__Request_parametricIdentifiers_template& operator=(template_sel other_value);
+N__SP__Request_parametricIdentifiers_template& operator=(null_type other_value);
+N__SP__Request_parametricIdentifiers_template& operator=(const N__SP__Request_parametricIdentifiers& other_value);
+N__SP__Request_parametricIdentifiers_template& operator=(const OPTIONAL<N__SP__Request_parametricIdentifiers>& other_value);
+N__SP__Request_parametricIdentifiers_template& operator=(const N__SP__Request_parametricIdentifiers_template& other_value);
+
+e__ParametricIdentifier_template& operator[](int index_value);
+e__ParametricIdentifier_template& operator[](const INTEGER& index_value);
+const e__ParametricIdentifier_template& operator[](int index_value) const;
+const e__ParametricIdentifier_template& operator[](const INTEGER& index_value) const;
+
+void set_size(int new_size);
+int n_elem() const;
+int size_of(boolean is_size) const;
+inline int size_of() const { return size_of(TRUE); }
+inline int lengthof() const { return size_of(FALSE); }
+boolean match(const N__SP__Request_parametricIdentifiers& other_value, boolean legacy = FALSE) const;
+inline boolean is_bound() const 
+  {return template_selection != UNINITIALIZED_TEMPLATE; }
+boolean is_value() const;
+N__SP__Request_parametricIdentifiers valueof() const;
+N__SP__Request_parametricIdentifiers substr(int index, int returncount) const;
+
+N__SP__Request_parametricIdentifiers replace(int index, int len, const N__SP__Request_parametricIdentifiers_template& repl) const;
+
+N__SP__Request_parametricIdentifiers replace(int index, int len, const N__SP__Request_parametricIdentifiers& repl) const;
+
+void set_type(template_sel template_type, unsigned int list_length);
+N__SP__Request_parametricIdentifiers_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const N__SP__Request_parametricIdentifiers& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean get_istemplate_kind(const char* type) const;
+};
+
+class N__SP__Request : public Base_Type {
+  INTEGER field_msgFunction;
+  PortPair field_portPair;
+  N__SP__Request_parametricIdentifiers field_parametricIdentifiers;
+public:
+  N__SP__Request();
+  N__SP__Request(const INTEGER& par_msgFunction,
+    const PortPair& par_portPair,
+    const N__SP__Request_parametricIdentifiers& par_parametricIdentifiers);
+  N__SP__Request(const N__SP__Request& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  N__SP__Request& operator=(const N__SP__Request& other_value);
+  boolean operator==(const N__SP__Request& other_value) const;
+  inline boolean operator!=(const N__SP__Request& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& msgFunction()
+    {return field_msgFunction;}
+  inline const INTEGER& msgFunction() const
+    {return field_msgFunction;}
+  inline PortPair& portPair()
+    {return field_portPair;}
+  inline const PortPair& portPair() const
+    {return field_portPair;}
+  inline N__SP__Request_parametricIdentifiers& parametricIdentifiers()
+    {return field_parametricIdentifiers;}
+  inline const N__SP__Request_parametricIdentifiers& parametricIdentifiers() const
+    {return field_parametricIdentifiers;}
+  inline int size_of() const
+    {return 3;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class N__SP__Request_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+N__SP__Request_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const N__SP__Request& other_value);
+void copy_template(const N__SP__Request_template& other_value);
+
+public:
+N__SP__Request_template();
+N__SP__Request_template(template_sel other_value);
+N__SP__Request_template(const N__SP__Request& other_value);
+N__SP__Request_template(const OPTIONAL<N__SP__Request>& other_value);
+N__SP__Request_template(const N__SP__Request_template& other_value);
+~N__SP__Request_template();
+N__SP__Request_template& operator=(template_sel other_value);
+N__SP__Request_template& operator=(const N__SP__Request& other_value);
+N__SP__Request_template& operator=(const OPTIONAL<N__SP__Request>& other_value);
+N__SP__Request_template& operator=(const N__SP__Request_template& other_value);
+boolean match(const N__SP__Request& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+N__SP__Request valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+N__SP__Request_template& list_item(unsigned int list_index) const;
+INTEGER_template& msgFunction();
+const INTEGER_template& msgFunction() const;
+PortPair_template& portPair();
+const PortPair_template& portPair() const;
+N__SP__Request_parametricIdentifiers_template& parametricIdentifiers();
+const N__SP__Request_parametricIdentifiers_template& parametricIdentifiers() const;
+int size_of() const;
+void log() const;
+void log_match(const N__SP__Request& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class N__SP__Response : public Base_Type {
+  INTEGER field_msgFunction;
+  PortPair field_portPair;
+  N__SP__Response_requestedParametrics field_requestedParametrics;
+public:
+  N__SP__Response();
+  N__SP__Response(const INTEGER& par_msgFunction,
+    const PortPair& par_portPair,
+    const N__SP__Response_requestedParametrics& par_requestedParametrics);
+  N__SP__Response(const N__SP__Response& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  N__SP__Response& operator=(const N__SP__Response& other_value);
+  boolean operator==(const N__SP__Response& other_value) const;
+  inline boolean operator!=(const N__SP__Response& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& msgFunction()
+    {return field_msgFunction;}
+  inline const INTEGER& msgFunction() const
+    {return field_msgFunction;}
+  inline PortPair& portPair()
+    {return field_portPair;}
+  inline const PortPair& portPair() const
+    {return field_portPair;}
+  inline N__SP__Response_requestedParametrics& requestedParametrics()
+    {return field_requestedParametrics;}
+  inline const N__SP__Response_requestedParametrics& requestedParametrics() const
+    {return field_requestedParametrics;}
+  inline int size_of() const
+    {return 3;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class N__SP__Response_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+N__SP__Response_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const N__SP__Response& other_value);
+void copy_template(const N__SP__Response_template& other_value);
+
+public:
+N__SP__Response_template();
+N__SP__Response_template(template_sel other_value);
+N__SP__Response_template(const N__SP__Response& other_value);
+N__SP__Response_template(const OPTIONAL<N__SP__Response>& other_value);
+N__SP__Response_template(const N__SP__Response_template& other_value);
+~N__SP__Response_template();
+N__SP__Response_template& operator=(template_sel other_value);
+N__SP__Response_template& operator=(const N__SP__Response& other_value);
+N__SP__Response_template& operator=(const OPTIONAL<N__SP__Response>& other_value);
+N__SP__Response_template& operator=(const N__SP__Response_template& other_value);
+boolean match(const N__SP__Response& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+N__SP__Response valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+N__SP__Response_template& list_item(unsigned int list_index) const;
+INTEGER_template& msgFunction();
+const INTEGER_template& msgFunction() const;
+PortPair_template& portPair();
+const PortPair_template& portPair() const;
+N__SP__Response_requestedParametrics_template& requestedParametrics();
+const N__SP__Response_requestedParametrics_template& requestedParametrics() const;
+int size_of() const;
+void log() const;
+void log_match(const N__SP__Response& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class N__SP__Reset__Statistics : public Base_Type {
+  INTEGER field_msgFunction;
+  PortPair field_portPair;
+  OCTETSTRING field_reserved3;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  N__SP__Reset__Statistics();
+  N__SP__Reset__Statistics(const INTEGER& par_msgFunction,
+    const PortPair& par_portPair,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  N__SP__Reset__Statistics(const N__SP__Reset__Statistics& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  N__SP__Reset__Statistics& operator=(const N__SP__Reset__Statistics& other_value);
+  boolean operator==(const N__SP__Reset__Statistics& other_value) const;
+  inline boolean operator!=(const N__SP__Reset__Statistics& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& msgFunction()
+    {return field_msgFunction;}
+  inline const INTEGER& msgFunction() const
+    {return field_msgFunction;}
+  inline PortPair& portPair()
+    {return field_portPair;}
+  inline const PortPair& portPair() const
+    {return field_portPair;}
+  inline OCTETSTRING& reserved3()
+    {return field_reserved3;}
+  inline const OCTETSTRING& reserved3() const
+    {return field_reserved3;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class N__SP__Reset__Statistics_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+N__SP__Reset__Statistics_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const N__SP__Reset__Statistics& other_value);
+void copy_template(const N__SP__Reset__Statistics_template& other_value);
+
+public:
+N__SP__Reset__Statistics_template();
+N__SP__Reset__Statistics_template(template_sel other_value);
+N__SP__Reset__Statistics_template(const N__SP__Reset__Statistics& other_value);
+N__SP__Reset__Statistics_template(const OPTIONAL<N__SP__Reset__Statistics>& other_value);
+N__SP__Reset__Statistics_template(const N__SP__Reset__Statistics_template& other_value);
+~N__SP__Reset__Statistics_template();
+N__SP__Reset__Statistics_template& operator=(template_sel other_value);
+N__SP__Reset__Statistics_template& operator=(const N__SP__Reset__Statistics& other_value);
+N__SP__Reset__Statistics_template& operator=(const OPTIONAL<N__SP__Reset__Statistics>& other_value);
+N__SP__Reset__Statistics_template& operator=(const N__SP__Reset__Statistics_template& other_value);
+boolean match(const N__SP__Reset__Statistics& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+N__SP__Reset__Statistics valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+N__SP__Reset__Statistics_template& list_item(unsigned int list_index) const;
+INTEGER_template& msgFunction();
+const INTEGER_template& msgFunction() const;
+PortPair_template& portPair();
+const PortPair_template& portPair() const;
+OCTETSTRING_template& reserved3();
+const OCTETSTRING_template& reserved3() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const N__SP__Reset__Statistics& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class N__OC__Request : public Base_Type {
+  INTEGER field_msgFunction;
+  PortPair field_portPair;
+  NAME field_nameOfCF;
+public:
+  N__OC__Request();
+  N__OC__Request(const INTEGER& par_msgFunction,
+    const PortPair& par_portPair,
+    const NAME& par_nameOfCF);
+  N__OC__Request(const N__OC__Request& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  N__OC__Request& operator=(const N__OC__Request& other_value);
+  boolean operator==(const N__OC__Request& other_value) const;
+  inline boolean operator!=(const N__OC__Request& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& msgFunction()
+    {return field_msgFunction;}
+  inline const INTEGER& msgFunction() const
+    {return field_msgFunction;}
+  inline PortPair& portPair()
+    {return field_portPair;}
+  inline const PortPair& portPair() const
+    {return field_portPair;}
+  inline NAME& nameOfCF()
+    {return field_nameOfCF;}
+  inline const NAME& nameOfCF() const
+    {return field_nameOfCF;}
+  inline int size_of() const
+    {return 3;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class N__OC__Request_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+N__OC__Request_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const N__OC__Request& other_value);
+void copy_template(const N__OC__Request_template& other_value);
+
+public:
+N__OC__Request_template();
+N__OC__Request_template(template_sel other_value);
+N__OC__Request_template(const N__OC__Request& other_value);
+N__OC__Request_template(const OPTIONAL<N__OC__Request>& other_value);
+N__OC__Request_template(const N__OC__Request_template& other_value);
+~N__OC__Request_template();
+N__OC__Request_template& operator=(template_sel other_value);
+N__OC__Request_template& operator=(const N__OC__Request& other_value);
+N__OC__Request_template& operator=(const OPTIONAL<N__OC__Request>& other_value);
+N__OC__Request_template& operator=(const N__OC__Request_template& other_value);
+boolean match(const N__OC__Request& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+N__OC__Request valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+N__OC__Request_template& list_item(unsigned int list_index) const;
+INTEGER_template& msgFunction();
+const INTEGER_template& msgFunction() const;
+PortPair_template& portPair();
+const PortPair_template& portPair() const;
+NAME_template& nameOfCF();
+const NAME_template& nameOfCF() const;
+int size_of() const;
+void log() const;
+void log_match(const N__OC__Request& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class N__CC__Request : public Base_Type {
+  INTEGER field_msgFunction;
+  PortPair field_portPair;
+  NAME field_nameOfCF;
+public:
+  N__CC__Request();
+  N__CC__Request(const INTEGER& par_msgFunction,
+    const PortPair& par_portPair,
+    const NAME& par_nameOfCF);
+  N__CC__Request(const N__CC__Request& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  N__CC__Request& operator=(const N__CC__Request& other_value);
+  boolean operator==(const N__CC__Request& other_value) const;
+  inline boolean operator!=(const N__CC__Request& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& msgFunction()
+    {return field_msgFunction;}
+  inline const INTEGER& msgFunction() const
+    {return field_msgFunction;}
+  inline PortPair& portPair()
+    {return field_portPair;}
+  inline const PortPair& portPair() const
+    {return field_portPair;}
+  inline NAME& nameOfCF()
+    {return field_nameOfCF;}
+  inline const NAME& nameOfCF() const
+    {return field_nameOfCF;}
+  inline int size_of() const
+    {return 3;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class N__CC__Request_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+N__CC__Request_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const N__CC__Request& other_value);
+void copy_template(const N__CC__Request_template& other_value);
+
+public:
+N__CC__Request_template();
+N__CC__Request_template(template_sel other_value);
+N__CC__Request_template(const N__CC__Request& other_value);
+N__CC__Request_template(const OPTIONAL<N__CC__Request>& other_value);
+N__CC__Request_template(const N__CC__Request_template& other_value);
+~N__CC__Request_template();
+N__CC__Request_template& operator=(template_sel other_value);
+N__CC__Request_template& operator=(const N__CC__Request& other_value);
+N__CC__Request_template& operator=(const OPTIONAL<N__CC__Request>& other_value);
+N__CC__Request_template& operator=(const N__CC__Request_template& other_value);
+boolean match(const N__CC__Request& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+N__CC__Request valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+N__CC__Request_template& list_item(unsigned int list_index) const;
+INTEGER_template& msgFunction();
+const INTEGER_template& msgFunction() const;
+PortPair_template& portPair();
+const PortPair_template& portPair() const;
+NAME_template& nameOfCF();
+const NAME_template& nameOfCF() const;
+int size_of() const;
+void log() const;
+void log_match(const N__CC__Request& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class e__Status : public Base_Type { // enum
+friend class e__Status_template;
+public:
+enum enum_type { failure = 0, success = 1, UNKNOWN_VALUE = 2, UNBOUND_VALUE = 3 };
+private:
+enum_type enum_value;
+
+public:
+e__Status();
+e__Status(int other_value);
+e__Status(enum_type other_value);
+e__Status(const e__Status& other_value);
+
+e__Status& operator=(int other_value);
+e__Status& operator=(enum_type other_value);
+e__Status& operator=(const e__Status& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const e__Status& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const e__Status& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const e__Status& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const e__Status& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const e__Status& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const e__Status& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const e__Status& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class e__Status_template : public Base_Template {
+union {
+e__Status::enum_type single_value;
+struct {
+unsigned int n_values;
+e__Status_template *list_value;
+} value_list;
+};
+
+void copy_template(const e__Status_template& other_value);
+
+public:
+e__Status_template();
+e__Status_template(template_sel other_value);
+e__Status_template(int other_value);
+e__Status_template(e__Status::enum_type other_value);
+e__Status_template(const e__Status& other_value);
+e__Status_template(const OPTIONAL<e__Status>& other_value);
+e__Status_template(const e__Status_template& other_value);
+~e__Status_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+e__Status_template& operator=(template_sel other_value);
+e__Status_template& operator=(int other_value);
+e__Status_template& operator=(e__Status::enum_type other_value);
+e__Status_template& operator=(const e__Status& other_value);
+e__Status_template& operator=(const OPTIONAL<e__Status>& other_value);
+e__Status_template& operator=(const e__Status_template& other_value);
+
+boolean match(e__Status::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const e__Status& other_value, boolean legacy = FALSE) const;
+e__Status::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+e__Status_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const e__Status& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class e__FailureReasonCode : public Base_Type { // enum
+friend class e__FailureReasonCode_template;
+public:
+enum enum_type { cannotFindCFwithNAME = 0, numberOfConnectionsToNAMEexceeded = 1, numberOfConnectionsToNIUexceeded = 2, busy = 3, requestTypeNotSupported = 4, notAvailable = 255, UNKNOWN_VALUE = 5, UNBOUND_VALUE = 6 };
+private:
+enum_type enum_value;
+
+public:
+e__FailureReasonCode();
+e__FailureReasonCode(int other_value);
+e__FailureReasonCode(enum_type other_value);
+e__FailureReasonCode(const e__FailureReasonCode& other_value);
+
+e__FailureReasonCode& operator=(int other_value);
+e__FailureReasonCode& operator=(enum_type other_value);
+e__FailureReasonCode& operator=(const e__FailureReasonCode& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const e__FailureReasonCode& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const e__FailureReasonCode& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const e__FailureReasonCode& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const e__FailureReasonCode& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const e__FailureReasonCode& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const e__FailureReasonCode& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const e__FailureReasonCode& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class e__FailureReasonCode_template : public Base_Template {
+union {
+e__FailureReasonCode::enum_type single_value;
+struct {
+unsigned int n_values;
+e__FailureReasonCode_template *list_value;
+} value_list;
+};
+
+void copy_template(const e__FailureReasonCode_template& other_value);
+
+public:
+e__FailureReasonCode_template();
+e__FailureReasonCode_template(template_sel other_value);
+e__FailureReasonCode_template(int other_value);
+e__FailureReasonCode_template(e__FailureReasonCode::enum_type other_value);
+e__FailureReasonCode_template(const e__FailureReasonCode& other_value);
+e__FailureReasonCode_template(const OPTIONAL<e__FailureReasonCode>& other_value);
+e__FailureReasonCode_template(const e__FailureReasonCode_template& other_value);
+~e__FailureReasonCode_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+e__FailureReasonCode_template& operator=(template_sel other_value);
+e__FailureReasonCode_template& operator=(int other_value);
+e__FailureReasonCode_template& operator=(e__FailureReasonCode::enum_type other_value);
+e__FailureReasonCode_template& operator=(const e__FailureReasonCode& other_value);
+e__FailureReasonCode_template& operator=(const OPTIONAL<e__FailureReasonCode>& other_value);
+e__FailureReasonCode_template& operator=(const e__FailureReasonCode_template& other_value);
+
+boolean match(e__FailureReasonCode::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const e__FailureReasonCode& other_value, boolean legacy = FALSE) const;
+e__FailureReasonCode::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+e__FailureReasonCode_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const e__FailureReasonCode& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class N__OC__Response : public Base_Type {
+  INTEGER field_msgFunction;
+  PortPair field_portPair;
+  e__Status field_status;
+  e__FailureReasonCode field_failureReasonCode;
+public:
+  N__OC__Response();
+  N__OC__Response(const INTEGER& par_msgFunction,
+    const PortPair& par_portPair,
+    const e__Status& par_status,
+    const e__FailureReasonCode& par_failureReasonCode);
+  N__OC__Response(const N__OC__Response& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  N__OC__Response& operator=(const N__OC__Response& other_value);
+  boolean operator==(const N__OC__Response& other_value) const;
+  inline boolean operator!=(const N__OC__Response& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& msgFunction()
+    {return field_msgFunction;}
+  inline const INTEGER& msgFunction() const
+    {return field_msgFunction;}
+  inline PortPair& portPair()
+    {return field_portPair;}
+  inline const PortPair& portPair() const
+    {return field_portPair;}
+  inline e__Status& status()
+    {return field_status;}
+  inline const e__Status& status() const
+    {return field_status;}
+  inline e__FailureReasonCode& failureReasonCode()
+    {return field_failureReasonCode;}
+  inline const e__FailureReasonCode& failureReasonCode() const
+    {return field_failureReasonCode;}
+  inline int size_of() const
+    {return 4;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class N__OC__Response_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+N__OC__Response_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const N__OC__Response& other_value);
+void copy_template(const N__OC__Response_template& other_value);
+
+public:
+N__OC__Response_template();
+N__OC__Response_template(template_sel other_value);
+N__OC__Response_template(const N__OC__Response& other_value);
+N__OC__Response_template(const OPTIONAL<N__OC__Response>& other_value);
+N__OC__Response_template(const N__OC__Response_template& other_value);
+~N__OC__Response_template();
+N__OC__Response_template& operator=(template_sel other_value);
+N__OC__Response_template& operator=(const N__OC__Response& other_value);
+N__OC__Response_template& operator=(const OPTIONAL<N__OC__Response>& other_value);
+N__OC__Response_template& operator=(const N__OC__Response_template& other_value);
+boolean match(const N__OC__Response& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+N__OC__Response valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+N__OC__Response_template& list_item(unsigned int list_index) const;
+INTEGER_template& msgFunction();
+const INTEGER_template& msgFunction() const;
+PortPair_template& portPair();
+const PortPair_template& portPair() const;
+e__Status_template& status();
+const e__Status_template& status() const;
+e__FailureReasonCode_template& failureReasonCode();
+const e__FailureReasonCode_template& failureReasonCode() const;
+int size_of() const;
+void log() const;
+void log_match(const N__OC__Response& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class N__CC__Response : public Base_Type {
+  INTEGER field_msgFunction;
+  PortPair field_portPair;
+  e__Status field_status;
+  e__FailureReasonCode field_failureReasonCode;
+public:
+  N__CC__Response();
+  N__CC__Response(const INTEGER& par_msgFunction,
+    const PortPair& par_portPair,
+    const e__Status& par_status,
+    const e__FailureReasonCode& par_failureReasonCode);
+  N__CC__Response(const N__CC__Response& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  N__CC__Response& operator=(const N__CC__Response& other_value);
+  boolean operator==(const N__CC__Response& other_value) const;
+  inline boolean operator!=(const N__CC__Response& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& msgFunction()
+    {return field_msgFunction;}
+  inline const INTEGER& msgFunction() const
+    {return field_msgFunction;}
+  inline PortPair& portPair()
+    {return field_portPair;}
+  inline const PortPair& portPair() const
+    {return field_portPair;}
+  inline e__Status& status()
+    {return field_status;}
+  inline const e__Status& status() const
+    {return field_status;}
+  inline e__FailureReasonCode& failureReasonCode()
+    {return field_failureReasonCode;}
+  inline const e__FailureReasonCode& failureReasonCode() const
+    {return field_failureReasonCode;}
+  inline int size_of() const
+    {return 4;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class N__CC__Response_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+N__CC__Response_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const N__CC__Response& other_value);
+void copy_template(const N__CC__Response_template& other_value);
+
+public:
+N__CC__Response_template();
+N__CC__Response_template(template_sel other_value);
+N__CC__Response_template(const N__CC__Response& other_value);
+N__CC__Response_template(const OPTIONAL<N__CC__Response>& other_value);
+N__CC__Response_template(const N__CC__Response_template& other_value);
+~N__CC__Response_template();
+N__CC__Response_template& operator=(template_sel other_value);
+N__CC__Response_template& operator=(const N__CC__Response& other_value);
+N__CC__Response_template& operator=(const OPTIONAL<N__CC__Response>& other_value);
+N__CC__Response_template& operator=(const N__CC__Response_template& other_value);
+boolean match(const N__CC__Response& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+N__CC__Response valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+N__CC__Response_template& list_item(unsigned int list_index) const;
+INTEGER_template& msgFunction();
+const INTEGER_template& msgFunction() const;
+PortPair_template& portPair();
+const PortPair_template& portPair() const;
+e__Status_template& status();
+const e__Status_template& status() const;
+e__FailureReasonCode_template& failureReasonCode();
+const e__FailureReasonCode_template& failureReasonCode() const;
+int size_of() const;
+void log() const;
+void log_match(const N__CC__Response& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class NetworkMessage : public Base_Type {
+public:
+enum union_selection_type { UNBOUND_VALUE = 0, ALT_n__MFDB__Request = 1, ALT_n__MFDB__Response = 2, ALT_n__MFDB__Add = 3, ALT_n__MFDB__Delete = 4, ALT_n__MFDB__Clear = 5, ALT_n__MFDB__Create__Entry = 6, ALT_n__MFDBNQ__Add = 7, ALT_n__NT__Request = 8, ALT_n__NT__Response = 9, ALT_n__NTX__Request = 10, ALT_n__NTX__Response = 11, ALT_n__GP__Request = 12, ALT_n__GP__Response = 13, ALT_n__GP__Reset__Statistics = 14, ALT_n__SP__Request = 15, ALT_n__SP__Response = 16, ALT_n__SP__Reset__Statistics = 17, ALT_n__OC__Request = 18, ALT_n__OC__Response = 19, ALT_n__CC__Request = 20, ALT_n__CC__Response = 21 };
+private:
+union_selection_type union_selection;
+union {
+N__MFDB__Request *field_n__MFDB__Request;
+N__MFDB__Response *field_n__MFDB__Response;
+N__MFDB__Add *field_n__MFDB__Add;
+N__MFDB__Delete *field_n__MFDB__Delete;
+N__MFDB__Clear *field_n__MFDB__Clear;
+N__MFDB__Create__Entry *field_n__MFDB__Create__Entry;
+N__MFDBNQ__Add *field_n__MFDBNQ__Add;
+N__NT__Request *field_n__NT__Request;
+N__NT__Response *field_n__NT__Response;
+N__NTX__Request *field_n__NTX__Request;
+N__NTX__Response *field_n__NTX__Response;
+N__GP__Request *field_n__GP__Request;
+N__GP__Response *field_n__GP__Response;
+N__GP__Reset__Statistics *field_n__GP__Reset__Statistics;
+N__SP__Request *field_n__SP__Request;
+N__SP__Response *field_n__SP__Response;
+N__SP__Reset__Statistics *field_n__SP__Reset__Statistics;
+N__OC__Request *field_n__OC__Request;
+N__OC__Response *field_n__OC__Response;
+N__CC__Request *field_n__CC__Request;
+N__CC__Response *field_n__CC__Response;
+};
+void copy_value(const NetworkMessage& other_value);
+
+public:
+NetworkMessage();
+NetworkMessage(const NetworkMessage& other_value);
+~NetworkMessage();
+NetworkMessage& operator=(const NetworkMessage& other_value);
+boolean operator==(const NetworkMessage& other_value) const;
+inline boolean operator!=(const NetworkMessage& other_value) const { return !(*this == other_value); }
+N__MFDB__Request& n__MFDB__Request();
+const N__MFDB__Request& n__MFDB__Request() const;
+N__MFDB__Response& n__MFDB__Response();
+const N__MFDB__Response& n__MFDB__Response() const;
+N__MFDB__Add& n__MFDB__Add();
+const N__MFDB__Add& n__MFDB__Add() const;
+N__MFDB__Delete& n__MFDB__Delete();
+const N__MFDB__Delete& n__MFDB__Delete() const;
+N__MFDB__Clear& n__MFDB__Clear();
+const N__MFDB__Clear& n__MFDB__Clear() const;
+N__MFDB__Create__Entry& n__MFDB__Create__Entry();
+const N__MFDB__Create__Entry& n__MFDB__Create__Entry() const;
+N__MFDBNQ__Add& n__MFDBNQ__Add();
+const N__MFDBNQ__Add& n__MFDBNQ__Add() const;
+N__NT__Request& n__NT__Request();
+const N__NT__Request& n__NT__Request() const;
+N__NT__Response& n__NT__Response();
+const N__NT__Response& n__NT__Response() const;
+N__NTX__Request& n__NTX__Request();
+const N__NTX__Request& n__NTX__Request() const;
+N__NTX__Response& n__NTX__Response();
+const N__NTX__Response& n__NTX__Response() const;
+N__GP__Request& n__GP__Request();
+const N__GP__Request& n__GP__Request() const;
+N__GP__Response& n__GP__Response();
+const N__GP__Response& n__GP__Response() const;
+N__GP__Reset__Statistics& n__GP__Reset__Statistics();
+const N__GP__Reset__Statistics& n__GP__Reset__Statistics() const;
+N__SP__Request& n__SP__Request();
+const N__SP__Request& n__SP__Request() const;
+N__SP__Response& n__SP__Response();
+const N__SP__Response& n__SP__Response() const;
+N__SP__Reset__Statistics& n__SP__Reset__Statistics();
+const N__SP__Reset__Statistics& n__SP__Reset__Statistics() const;
+N__OC__Request& n__OC__Request();
+const N__OC__Request& n__OC__Request() const;
+N__OC__Response& n__OC__Response();
+const N__OC__Response& n__OC__Response() const;
+N__CC__Request& n__CC__Request();
+const N__CC__Request& n__CC__Request() const;
+N__CC__Response& n__CC__Response();
+const N__CC__Response& n__CC__Response() const;
+inline union_selection_type get_selection() const { return union_selection; }
+boolean ischosen(union_selection_type checked_selection) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class NetworkMessage_template : public Base_Template {
+union {
+struct {
+NetworkMessage::union_selection_type union_selection;
+union {
+N__MFDB__Request_template *field_n__MFDB__Request;
+N__MFDB__Response_template *field_n__MFDB__Response;
+N__MFDB__Add_template *field_n__MFDB__Add;
+N__MFDB__Delete_template *field_n__MFDB__Delete;
+N__MFDB__Clear_template *field_n__MFDB__Clear;
+N__MFDB__Create__Entry_template *field_n__MFDB__Create__Entry;
+N__MFDBNQ__Add_template *field_n__MFDBNQ__Add;
+N__NT__Request_template *field_n__NT__Request;
+N__NT__Response_template *field_n__NT__Response;
+N__NTX__Request_template *field_n__NTX__Request;
+N__NTX__Response_template *field_n__NTX__Response;
+N__GP__Request_template *field_n__GP__Request;
+N__GP__Response_template *field_n__GP__Response;
+N__GP__Reset__Statistics_template *field_n__GP__Reset__Statistics;
+N__SP__Request_template *field_n__SP__Request;
+N__SP__Response_template *field_n__SP__Response;
+N__SP__Reset__Statistics_template *field_n__SP__Reset__Statistics;
+N__OC__Request_template *field_n__OC__Request;
+N__OC__Response_template *field_n__OC__Response;
+N__CC__Request_template *field_n__CC__Request;
+N__CC__Response_template *field_n__CC__Response;
+};
+} single_value;
+struct {
+unsigned int n_values;
+NetworkMessage_template *list_value;
+} value_list;
+};
+void copy_value(const NetworkMessage& other_value);
+
+void copy_template(const NetworkMessage_template& other_value);
+
+public:
+NetworkMessage_template();
+NetworkMessage_template(template_sel other_value);
+NetworkMessage_template(const NetworkMessage& other_value);
+NetworkMessage_template(const OPTIONAL<NetworkMessage>& other_value);
+NetworkMessage_template(const NetworkMessage_template& other_value);
+~NetworkMessage_template();
+void clean_up();
+NetworkMessage_template& operator=(template_sel other_value);
+NetworkMessage_template& operator=(const NetworkMessage& other_value);
+NetworkMessage_template& operator=(const OPTIONAL<NetworkMessage>& other_value);
+NetworkMessage_template& operator=(const NetworkMessage_template& other_value);
+boolean match(const NetworkMessage& other_value, boolean legacy = FALSE) const;
+boolean is_value() const;NetworkMessage valueof() const;
+NetworkMessage_template& list_item(unsigned int list_index) const;
+void set_type(template_sel template_type, unsigned int list_length);
+N__MFDB__Request_template& n__MFDB__Request();
+const N__MFDB__Request_template& n__MFDB__Request() const;
+N__MFDB__Response_template& n__MFDB__Response();
+const N__MFDB__Response_template& n__MFDB__Response() const;
+N__MFDB__Add_template& n__MFDB__Add();
+const N__MFDB__Add_template& n__MFDB__Add() const;
+N__MFDB__Delete_template& n__MFDB__Delete();
+const N__MFDB__Delete_template& n__MFDB__Delete() const;
+N__MFDB__Clear_template& n__MFDB__Clear();
+const N__MFDB__Clear_template& n__MFDB__Clear() const;
+N__MFDB__Create__Entry_template& n__MFDB__Create__Entry();
+const N__MFDB__Create__Entry_template& n__MFDB__Create__Entry() const;
+N__MFDBNQ__Add_template& n__MFDBNQ__Add();
+const N__MFDBNQ__Add_template& n__MFDBNQ__Add() const;
+N__NT__Request_template& n__NT__Request();
+const N__NT__Request_template& n__NT__Request() const;
+N__NT__Response_template& n__NT__Response();
+const N__NT__Response_template& n__NT__Response() const;
+N__NTX__Request_template& n__NTX__Request();
+const N__NTX__Request_template& n__NTX__Request() const;
+N__NTX__Response_template& n__NTX__Response();
+const N__NTX__Response_template& n__NTX__Response() const;
+N__GP__Request_template& n__GP__Request();
+const N__GP__Request_template& n__GP__Request() const;
+N__GP__Response_template& n__GP__Response();
+const N__GP__Response_template& n__GP__Response() const;
+N__GP__Reset__Statistics_template& n__GP__Reset__Statistics();
+const N__GP__Reset__Statistics_template& n__GP__Reset__Statistics() const;
+N__SP__Request_template& n__SP__Request();
+const N__SP__Request_template& n__SP__Request() const;
+N__SP__Response_template& n__SP__Response();
+const N__SP__Response_template& n__SP__Response() const;
+N__SP__Reset__Statistics_template& n__SP__Reset__Statistics();
+const N__SP__Reset__Statistics_template& n__SP__Reset__Statistics() const;
+N__OC__Request_template& n__OC__Request();
+const N__OC__Request_template& n__OC__Request() const;
+N__OC__Response_template& n__OC__Response();
+const N__OC__Response_template& n__OC__Response() const;
+N__CC__Request_template& n__CC__Request();
+const N__CC__Request_template& n__CC__Request() const;
+N__CC__Response_template& n__CC__Response();
+const N__CC__Response_template& n__CC__Response() const;
+boolean ischosen(NetworkMessage::union_selection_type checked_selection) const;
+void log() const;
+void log_match(const NetworkMessage& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+
+/* Function prototypes */
+
+extern boolean operator==(null_type null_value, const N__MFDBNQ__Add_pgnEntries& other_value);
+inline boolean operator!=(null_type null_value, const N__MFDBNQ__Add_pgnEntries& other_value) { return !(null_value == other_value); }
+extern boolean operator==(null_type null_value, const N__NTX__Response_sourceaddress__NAME__pairs& other_value);
+inline boolean operator!=(null_type null_value, const N__NTX__Response_sourceaddress__NAME__pairs& other_value) { return !(null_value == other_value); }
+extern boolean operator==(null_type null_value, const N__GP__Request_parametricIdentifiers& other_value);
+inline boolean operator!=(null_type null_value, const N__GP__Request_parametricIdentifiers& other_value) { return !(null_value == other_value); }
+extern boolean operator==(null_type null_value, const N__SP__Request_parametricIdentifiers& other_value);
+inline boolean operator!=(null_type null_value, const N__SP__Request_parametricIdentifiers& other_value) { return !(null_value == other_value); }
+
+/* Global variable declarations */
+
+extern const XERdescriptor_t DestinationAddress_xer_;
+extern const TTCN_OERdescriptor_t DestinationAddress_oer_;
+extern const TTCN_Typedescriptor_t DestinationAddress_descr_;
+extern const XERdescriptor_t PDUFormat_xer_;
+extern const TTCN_OERdescriptor_t PDUFormat_oer_;
+extern const TTCN_Typedescriptor_t PDUFormat_descr_;
+extern const XERdescriptor_t SourceAddress_xer_;
+extern const TTCN_OERdescriptor_t SourceAddress_oer_;
+extern const TTCN_Typedescriptor_t SourceAddress_descr_;
+extern const TTCN_RAWdescriptor_t Priority_raw_;
+extern const XERdescriptor_t Priority_xer_;
+extern const TTCN_OERdescriptor_t Priority_oer_;
+extern const TTCN_Typedescriptor_t Priority_descr_;
+extern const XERdescriptor_t SelfConfigurableAddressBits_xer_;
+extern const TTCN_OERdescriptor_t SelfConfigurableAddressBits_oer_;
+extern const TTCN_Typedescriptor_t SelfConfigurableAddressBits_descr_;
+extern const XERdescriptor_t IndustryGroupBits_xer_;
+extern const TTCN_OERdescriptor_t IndustryGroupBits_oer_;
+extern const TTCN_Typedescriptor_t IndustryGroupBits_descr_;
+extern const XERdescriptor_t DeviceClassInstanceBits_xer_;
+extern const TTCN_OERdescriptor_t DeviceClassInstanceBits_oer_;
+extern const TTCN_Typedescriptor_t DeviceClassInstanceBits_descr_;
+extern const XERdescriptor_t DeviceClassBits_xer_;
+extern const TTCN_OERdescriptor_t DeviceClassBits_oer_;
+extern const TTCN_Typedescriptor_t DeviceClassBits_descr_;
+extern const XERdescriptor_t ReservedBits_xer_;
+extern const TTCN_OERdescriptor_t ReservedBits_oer_;
+extern const TTCN_Typedescriptor_t ReservedBits_descr_;
+extern const XERdescriptor_t FunctionBits_xer_;
+extern const TTCN_OERdescriptor_t FunctionBits_oer_;
+extern const TTCN_Typedescriptor_t FunctionBits_descr_;
+extern const XERdescriptor_t FunctionInstanceBits_xer_;
+extern const TTCN_OERdescriptor_t FunctionInstanceBits_oer_;
+extern const TTCN_Typedescriptor_t FunctionInstanceBits_descr_;
+extern const XERdescriptor_t ECUInstanceBits_xer_;
+extern const TTCN_OERdescriptor_t ECUInstanceBits_oer_;
+extern const TTCN_Typedescriptor_t ECUInstanceBits_descr_;
+extern const XERdescriptor_t ManufacturerCodeBits_xer_;
+extern const TTCN_OERdescriptor_t ManufacturerCodeBits_oer_;
+extern const TTCN_Typedescriptor_t ManufacturerCodeBits_descr_;
+extern const XERdescriptor_t IdentityNumberBits_xer_;
+extern const TTCN_OERdescriptor_t IdentityNumberBits_oer_;
+extern const TTCN_Typedescriptor_t IdentityNumberBits_descr_;
+extern const TTCN_RAWdescriptor_t NAME_selfConfigurableAddressValue_raw_;
+extern const XERdescriptor_t NAME_selfConfigurableAddressValue_xer_;
+extern const TTCN_OERdescriptor_t NAME_selfConfigurableAddressValue_oer_;
+extern const TTCN_Typedescriptor_t NAME_selfConfigurableAddressValue_descr_;
+extern const TTCN_RAWdescriptor_t NAME_industryGroupValue_raw_;
+extern const XERdescriptor_t NAME_industryGroupValue_xer_;
+extern const TTCN_OERdescriptor_t NAME_industryGroupValue_oer_;
+extern const TTCN_Typedescriptor_t NAME_industryGroupValue_descr_;
+extern const TTCN_RAWdescriptor_t NAME_deviceClassInstanceValue_raw_;
+extern const XERdescriptor_t NAME_deviceClassInstanceValue_xer_;
+extern const TTCN_OERdescriptor_t NAME_deviceClassInstanceValue_oer_;
+extern const TTCN_Typedescriptor_t NAME_deviceClassInstanceValue_descr_;
+extern const TTCN_RAWdescriptor_t NAME_deviceClassValue_raw_;
+extern const XERdescriptor_t NAME_deviceClassValue_xer_;
+extern const TTCN_OERdescriptor_t NAME_deviceClassValue_oer_;
+extern const TTCN_Typedescriptor_t NAME_deviceClassValue_descr_;
+extern const TTCN_RAWdescriptor_t NAME_reserveValued_raw_;
+extern const XERdescriptor_t NAME_reserveValued_xer_;
+extern const TTCN_OERdescriptor_t NAME_reserveValued_oer_;
+extern const TTCN_Typedescriptor_t NAME_reserveValued_descr_;
+extern const TTCN_RAWdescriptor_t NAME_functionValue_raw_;
+extern const XERdescriptor_t NAME_functionValue_xer_;
+extern const TTCN_OERdescriptor_t NAME_functionValue_oer_;
+extern const TTCN_Typedescriptor_t NAME_functionValue_descr_;
+extern const TTCN_RAWdescriptor_t NAME_functionInstanceValue_raw_;
+extern const XERdescriptor_t NAME_functionInstanceValue_xer_;
+extern const TTCN_OERdescriptor_t NAME_functionInstanceValue_oer_;
+extern const TTCN_Typedescriptor_t NAME_functionInstanceValue_descr_;
+extern const TTCN_RAWdescriptor_t NAME_ecuInstancceValue_raw_;
+extern const XERdescriptor_t NAME_ecuInstancceValue_xer_;
+extern const TTCN_OERdescriptor_t NAME_ecuInstancceValue_oer_;
+extern const TTCN_Typedescriptor_t NAME_ecuInstancceValue_descr_;
+extern const TTCN_RAWdescriptor_t NAME_manufacturerCodeValue_raw_;
+extern const XERdescriptor_t NAME_manufacturerCodeValue_xer_;
+extern const TTCN_OERdescriptor_t NAME_manufacturerCodeValue_oer_;
+extern const TTCN_Typedescriptor_t NAME_manufacturerCodeValue_descr_;
+extern const TTCN_RAWdescriptor_t NAME_identityNumberBits_raw_;
+extern const XERdescriptor_t NAME_identityNumberBits_xer_;
+extern const TTCN_OERdescriptor_t NAME_identityNumberBits_oer_;
+extern const TTCN_Typedescriptor_t NAME_identityNumberBits_descr_;
+extern const TTCN_RAWdescriptor_t NAME_raw_;
+extern const TTCN_Typedescriptor_t NAME_descr_;
+extern const TTCN_RAWdescriptor_t CannotClaimSourceAddress_raw_;
+extern const TTCN_Typedescriptor_t CannotClaimSourceAddress_descr_;
+extern const TTCN_RAWdescriptor_t AddressClaimed_raw_;
+extern const TTCN_Typedescriptor_t AddressClaimed_descr_;
+extern const XERdescriptor_t RequestForAddressClaimed_pgn_xer_;
+extern const TTCN_OERdescriptor_t RequestForAddressClaimed_pgn_oer_;
+extern const TTCN_Typedescriptor_t RequestForAddressClaimed_pgn_descr_;
+extern const TTCN_RAWdescriptor_t RequestForAddressClaimed_raw_;
+extern const TTCN_Typedescriptor_t RequestForAddressClaimed_descr_;
+extern const XERdescriptor_t CommandedAddress_newSourceAddress_xer_;
+extern const TTCN_OERdescriptor_t CommandedAddress_newSourceAddress_oer_;
+extern const TTCN_Typedescriptor_t CommandedAddress_newSourceAddress_descr_;
+extern const TTCN_RAWdescriptor_t CommandedAddress_raw_;
+extern const TTCN_Typedescriptor_t CommandedAddress_descr_;
+extern const XERdescriptor_t Function_xer_;
+extern const TTCN_OERdescriptor_t Function_oer_;
+extern const TTCN_Typedescriptor_t Function_descr_;
+extern const XERdescriptor_t N__MFDB__Request_msgFunction_xer_;
+extern const TTCN_OERdescriptor_t N__MFDB__Request_msgFunction_oer_;
+extern const TTCN_Typedescriptor_t N__MFDB__Request_msgFunction_descr_;
+extern const TTCN_RAWdescriptor_t e__PortNumber_raw_;
+extern const TTCN_Typedescriptor_t e__PortNumber_descr_;
+extern const TTCN_RAWdescriptor_t PortPair_raw_;
+extern const TTCN_Typedescriptor_t PortPair_descr_;
+extern const TTCN_RAWdescriptor_t N__MFDB__Request_reserved3_raw_;
+extern const XERdescriptor_t N__MFDB__Request_reserved3_xer_;
+extern const TTCN_OERdescriptor_t N__MFDB__Request_reserved3_oer_;
+extern const TTCN_Typedescriptor_t N__MFDB__Request_reserved3_descr_;
+extern const TTCN_RAWdescriptor_t N__MFDB__Request_reserved4_raw_;
+extern const XERdescriptor_t N__MFDB__Request_reserved4_xer_;
+extern const TTCN_OERdescriptor_t N__MFDB__Request_reserved4_oer_;
+extern const TTCN_Typedescriptor_t N__MFDB__Request_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t N__MFDB__Request_reserved5_raw_;
+extern const XERdescriptor_t N__MFDB__Request_reserved5_xer_;
+extern const TTCN_OERdescriptor_t N__MFDB__Request_reserved5_oer_;
+extern const TTCN_Typedescriptor_t N__MFDB__Request_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t N__MFDB__Request_reserved6_raw_;
+extern const XERdescriptor_t N__MFDB__Request_reserved6_xer_;
+extern const TTCN_OERdescriptor_t N__MFDB__Request_reserved6_oer_;
+extern const TTCN_Typedescriptor_t N__MFDB__Request_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t N__MFDB__Request_reserved7_raw_;
+extern const XERdescriptor_t N__MFDB__Request_reserved7_xer_;
+extern const TTCN_OERdescriptor_t N__MFDB__Request_reserved7_oer_;
+extern const TTCN_Typedescriptor_t N__MFDB__Request_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t N__MFDB__Request_reserved8_raw_;
+extern const XERdescriptor_t N__MFDB__Request_reserved8_xer_;
+extern const TTCN_OERdescriptor_t N__MFDB__Request_reserved8_oer_;
+extern const TTCN_Typedescriptor_t N__MFDB__Request_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t N__MFDB__Request_raw_;
+extern const TTCN_Typedescriptor_t N__MFDB__Request_descr_;
+extern const XERdescriptor_t N__MFDB__Response_msgFunction_xer_;
+extern const TTCN_OERdescriptor_t N__MFDB__Response_msgFunction_oer_;
+extern const TTCN_Typedescriptor_t N__MFDB__Response_msgFunction_descr_;
+extern const TTCN_RAWdescriptor_t e__FilterMode_raw_;
+extern const TTCN_Typedescriptor_t e__FilterMode_descr_;
+extern const TTCN_RAWdescriptor_t N__MFDB__Response_pgnEntries_raw_;
+extern const TTCN_Typedescriptor_t N__MFDB__Response_pgnEntries_descr_;
+extern const XERdescriptor_t N__MFDB__Response_pgnEntries_0_xer_;
+extern const TTCN_OERdescriptor_t N__MFDB__Response_pgnEntries_0_oer_;
+extern const TTCN_Typedescriptor_t N__MFDB__Response_pgnEntries_0_descr_;
+extern const TTCN_RAWdescriptor_t N__MFDB__Response_raw_;
+extern const TTCN_Typedescriptor_t N__MFDB__Response_descr_;
+extern const XERdescriptor_t N__MFDB__Add_msgFunction_xer_;
+extern const TTCN_OERdescriptor_t N__MFDB__Add_msgFunction_oer_;
+extern const TTCN_Typedescriptor_t N__MFDB__Add_msgFunction_descr_;
+extern const TTCN_RAWdescriptor_t N__MFDB__Add_pgnEntries_raw_;
+extern const TTCN_Typedescriptor_t N__MFDB__Add_pgnEntries_descr_;
+extern const XERdescriptor_t N__MFDB__Add_pgnEntries_0_xer_;
+extern const TTCN_OERdescriptor_t N__MFDB__Add_pgnEntries_0_oer_;
+extern const TTCN_Typedescriptor_t N__MFDB__Add_pgnEntries_0_descr_;
+extern const TTCN_RAWdescriptor_t N__MFDB__Add_raw_;
+extern const TTCN_Typedescriptor_t N__MFDB__Add_descr_;
+extern const XERdescriptor_t N__MFDB__Delete_msgFunction_xer_;
+extern const TTCN_OERdescriptor_t N__MFDB__Delete_msgFunction_oer_;
+extern const TTCN_Typedescriptor_t N__MFDB__Delete_msgFunction_descr_;
+extern const TTCN_RAWdescriptor_t N__MFDB__Delete_pgnEntries_raw_;
+extern const TTCN_Typedescriptor_t N__MFDB__Delete_pgnEntries_descr_;
+extern const XERdescriptor_t N__MFDB__Delete_pgnEntries_0_xer_;
+extern const TTCN_OERdescriptor_t N__MFDB__Delete_pgnEntries_0_oer_;
+extern const TTCN_Typedescriptor_t N__MFDB__Delete_pgnEntries_0_descr_;
+extern const TTCN_RAWdescriptor_t N__MFDB__Delete_raw_;
+extern const TTCN_Typedescriptor_t N__MFDB__Delete_descr_;
+extern const XERdescriptor_t N__MFDB__Clear_msgFunction_xer_;
+extern const TTCN_OERdescriptor_t N__MFDB__Clear_msgFunction_oer_;
+extern const TTCN_Typedescriptor_t N__MFDB__Clear_msgFunction_descr_;
+extern const TTCN_RAWdescriptor_t N__MFDB__Clear_reserved3_raw_;
+extern const XERdescriptor_t N__MFDB__Clear_reserved3_xer_;
+extern const TTCN_OERdescriptor_t N__MFDB__Clear_reserved3_oer_;
+extern const TTCN_Typedescriptor_t N__MFDB__Clear_reserved3_descr_;
+extern const TTCN_RAWdescriptor_t N__MFDB__Clear_reserved4_raw_;
+extern const XERdescriptor_t N__MFDB__Clear_reserved4_xer_;
+extern const TTCN_OERdescriptor_t N__MFDB__Clear_reserved4_oer_;
+extern const TTCN_Typedescriptor_t N__MFDB__Clear_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t N__MFDB__Clear_reserved5_raw_;
+extern const XERdescriptor_t N__MFDB__Clear_reserved5_xer_;
+extern const TTCN_OERdescriptor_t N__MFDB__Clear_reserved5_oer_;
+extern const TTCN_Typedescriptor_t N__MFDB__Clear_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t N__MFDB__Clear_reserved6_raw_;
+extern const XERdescriptor_t N__MFDB__Clear_reserved6_xer_;
+extern const TTCN_OERdescriptor_t N__MFDB__Clear_reserved6_oer_;
+extern const TTCN_Typedescriptor_t N__MFDB__Clear_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t N__MFDB__Clear_reserved7_raw_;
+extern const XERdescriptor_t N__MFDB__Clear_reserved7_xer_;
+extern const TTCN_OERdescriptor_t N__MFDB__Clear_reserved7_oer_;
+extern const TTCN_Typedescriptor_t N__MFDB__Clear_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t N__MFDB__Clear_reserved8_raw_;
+extern const XERdescriptor_t N__MFDB__Clear_reserved8_xer_;
+extern const TTCN_OERdescriptor_t N__MFDB__Clear_reserved8_oer_;
+extern const TTCN_Typedescriptor_t N__MFDB__Clear_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t N__MFDB__Clear_raw_;
+extern const TTCN_Typedescriptor_t N__MFDB__Clear_descr_;
+extern const XERdescriptor_t N__MFDB__Create__Entry_msgFunction_xer_;
+extern const TTCN_OERdescriptor_t N__MFDB__Create__Entry_msgFunction_oer_;
+extern const TTCN_Typedescriptor_t N__MFDB__Create__Entry_msgFunction_descr_;
+extern const TTCN_RAWdescriptor_t N__MFDB__Create__Entry_pgnEntries_raw_;
+extern const TTCN_Typedescriptor_t N__MFDB__Create__Entry_pgnEntries_descr_;
+extern const XERdescriptor_t N__MFDB__Create__Entry_pgnEntries_0_xer_;
+extern const TTCN_OERdescriptor_t N__MFDB__Create__Entry_pgnEntries_0_oer_;
+extern const TTCN_Typedescriptor_t N__MFDB__Create__Entry_pgnEntries_0_descr_;
+extern const TTCN_RAWdescriptor_t N__MFDB__Create__Entry_raw_;
+extern const TTCN_Typedescriptor_t N__MFDB__Create__Entry_descr_;
+extern const XERdescriptor_t PGNEntry_maxTransferRate_xer_;
+extern const TTCN_OERdescriptor_t PGNEntry_maxTransferRate_oer_;
+extern const TTCN_Typedescriptor_t PGNEntry_maxTransferRate_descr_;
+extern const XERdescriptor_t PGNEntry_pgn_xer_;
+extern const TTCN_OERdescriptor_t PGNEntry_pgn_oer_;
+extern const TTCN_Typedescriptor_t PGNEntry_pgn_descr_;
+extern const XERdescriptor_t PGNEntry_nameQualifier_xer_;
+extern const TTCN_OERdescriptor_t PGNEntry_nameQualifier_oer_;
+extern const TTCN_Typedescriptor_t PGNEntry_nameQualifier_descr_;
+extern const TTCN_RAWdescriptor_t PGNEntry_raw_;
+extern const TTCN_Typedescriptor_t PGNEntry_descr_;
+extern const XERdescriptor_t N__MFDBNQ__Add_msgFunction_xer_;
+extern const TTCN_OERdescriptor_t N__MFDBNQ__Add_msgFunction_oer_;
+extern const TTCN_Typedescriptor_t N__MFDBNQ__Add_msgFunction_descr_;
+extern const TTCN_RAWdescriptor_t N__MFDBNQ__Add_reserved4_raw_;
+extern const XERdescriptor_t N__MFDBNQ__Add_reserved4_xer_;
+extern const TTCN_OERdescriptor_t N__MFDBNQ__Add_reserved4_oer_;
+extern const TTCN_Typedescriptor_t N__MFDBNQ__Add_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t N__MFDBNQ__Add_pgnEntries_raw_;
+extern const TTCN_Typedescriptor_t N__MFDBNQ__Add_pgnEntries_descr_;
+extern const TTCN_RAWdescriptor_t N__MFDBNQ__Add_raw_;
+extern const TTCN_Typedescriptor_t N__MFDBNQ__Add_descr_;
+extern const XERdescriptor_t N__NT__Request_msgFunction_xer_;
+extern const TTCN_OERdescriptor_t N__NT__Request_msgFunction_oer_;
+extern const TTCN_Typedescriptor_t N__NT__Request_msgFunction_descr_;
+extern const TTCN_RAWdescriptor_t PortNibble_reserved_raw_;
+extern const XERdescriptor_t PortNibble_reserved_xer_;
+extern const TTCN_Typedescriptor_t PortNibble_reserved_descr_;
+extern const TTCN_RAWdescriptor_t PortNibble_raw_;
+extern const TTCN_Typedescriptor_t PortNibble_descr_;
+extern const TTCN_RAWdescriptor_t N__NT__Request_reserved3_raw_;
+extern const XERdescriptor_t N__NT__Request_reserved3_xer_;
+extern const TTCN_OERdescriptor_t N__NT__Request_reserved3_oer_;
+extern const TTCN_Typedescriptor_t N__NT__Request_reserved3_descr_;
+extern const TTCN_RAWdescriptor_t N__NT__Request_reserved4_raw_;
+extern const XERdescriptor_t N__NT__Request_reserved4_xer_;
+extern const TTCN_OERdescriptor_t N__NT__Request_reserved4_oer_;
+extern const TTCN_Typedescriptor_t N__NT__Request_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t N__NT__Request_reserved5_raw_;
+extern const XERdescriptor_t N__NT__Request_reserved5_xer_;
+extern const TTCN_OERdescriptor_t N__NT__Request_reserved5_oer_;
+extern const TTCN_Typedescriptor_t N__NT__Request_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t N__NT__Request_reserved6_raw_;
+extern const XERdescriptor_t N__NT__Request_reserved6_xer_;
+extern const TTCN_OERdescriptor_t N__NT__Request_reserved6_oer_;
+extern const TTCN_Typedescriptor_t N__NT__Request_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t N__NT__Request_reserved7_raw_;
+extern const XERdescriptor_t N__NT__Request_reserved7_xer_;
+extern const TTCN_OERdescriptor_t N__NT__Request_reserved7_oer_;
+extern const TTCN_Typedescriptor_t N__NT__Request_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t N__NT__Request_reserved8_raw_;
+extern const XERdescriptor_t N__NT__Request_reserved8_xer_;
+extern const TTCN_OERdescriptor_t N__NT__Request_reserved8_oer_;
+extern const TTCN_Typedescriptor_t N__NT__Request_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t N__NT__Request_raw_;
+extern const TTCN_Typedescriptor_t N__NT__Request_descr_;
+extern const XERdescriptor_t N__NT__Response_msgFunction_xer_;
+extern const TTCN_OERdescriptor_t N__NT__Response_msgFunction_oer_;
+extern const TTCN_Typedescriptor_t N__NT__Response_msgFunction_descr_;
+extern const TTCN_RAWdescriptor_t N__NT__Response_SourceAddressEntries_raw_;
+extern const TTCN_Typedescriptor_t N__NT__Response_SourceAddressEntries_descr_;
+extern const XERdescriptor_t N__NT__Response_SourceAddressEntries_0_xer_;
+extern const TTCN_OERdescriptor_t N__NT__Response_SourceAddressEntries_0_oer_;
+extern const TTCN_Typedescriptor_t N__NT__Response_SourceAddressEntries_0_descr_;
+extern const TTCN_RAWdescriptor_t N__NT__Response_raw_;
+extern const TTCN_Typedescriptor_t N__NT__Response_descr_;
+extern const XERdescriptor_t N__NTX__Request_msgFunction_xer_;
+extern const TTCN_OERdescriptor_t N__NTX__Request_msgFunction_oer_;
+extern const TTCN_Typedescriptor_t N__NTX__Request_msgFunction_descr_;
+extern const TTCN_RAWdescriptor_t N__NTX__Request_reserved3_raw_;
+extern const XERdescriptor_t N__NTX__Request_reserved3_xer_;
+extern const TTCN_OERdescriptor_t N__NTX__Request_reserved3_oer_;
+extern const TTCN_Typedescriptor_t N__NTX__Request_reserved3_descr_;
+extern const TTCN_RAWdescriptor_t N__NTX__Request_reserved4_raw_;
+extern const XERdescriptor_t N__NTX__Request_reserved4_xer_;
+extern const TTCN_OERdescriptor_t N__NTX__Request_reserved4_oer_;
+extern const TTCN_Typedescriptor_t N__NTX__Request_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t N__NTX__Request_reserved5_raw_;
+extern const XERdescriptor_t N__NTX__Request_reserved5_xer_;
+extern const TTCN_OERdescriptor_t N__NTX__Request_reserved5_oer_;
+extern const TTCN_Typedescriptor_t N__NTX__Request_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t N__NTX__Request_reserved6_raw_;
+extern const XERdescriptor_t N__NTX__Request_reserved6_xer_;
+extern const TTCN_OERdescriptor_t N__NTX__Request_reserved6_oer_;
+extern const TTCN_Typedescriptor_t N__NTX__Request_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t N__NTX__Request_reserved7_raw_;
+extern const XERdescriptor_t N__NTX__Request_reserved7_xer_;
+extern const TTCN_OERdescriptor_t N__NTX__Request_reserved7_oer_;
+extern const TTCN_Typedescriptor_t N__NTX__Request_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t N__NTX__Request_reserved8_raw_;
+extern const XERdescriptor_t N__NTX__Request_reserved8_xer_;
+extern const TTCN_OERdescriptor_t N__NTX__Request_reserved8_oer_;
+extern const TTCN_Typedescriptor_t N__NTX__Request_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t N__NTX__Request_raw_;
+extern const TTCN_Typedescriptor_t N__NTX__Request_descr_;
+extern const XERdescriptor_t SA__NAME__pair_sourceAddress_xer_;
+extern const TTCN_OERdescriptor_t SA__NAME__pair_sourceAddress_oer_;
+extern const TTCN_Typedescriptor_t SA__NAME__pair_sourceAddress_descr_;
+extern const TTCN_RAWdescriptor_t SA__NAME__pair_raw_;
+extern const TTCN_Typedescriptor_t SA__NAME__pair_descr_;
+extern const XERdescriptor_t N__NTX__Response_msgFunction_xer_;
+extern const TTCN_OERdescriptor_t N__NTX__Response_msgFunction_oer_;
+extern const TTCN_Typedescriptor_t N__NTX__Response_msgFunction_descr_;
+extern const TTCN_RAWdescriptor_t N__NTX__Response_numberOfReportedPorts_raw_;
+extern const XERdescriptor_t N__NTX__Response_numberOfReportedPorts_xer_;
+extern const TTCN_OERdescriptor_t N__NTX__Response_numberOfReportedPorts_oer_;
+extern const TTCN_Typedescriptor_t N__NTX__Response_numberOfReportedPorts_descr_;
+extern const TTCN_RAWdescriptor_t N__NTX__Response_sourceaddress__NAME__pairs_raw_;
+extern const TTCN_Typedescriptor_t N__NTX__Response_sourceaddress__NAME__pairs_descr_;
+extern const TTCN_RAWdescriptor_t N__NTX__Response_raw_;
+extern const TTCN_Typedescriptor_t N__NTX__Response_descr_;
+extern const TTCN_RAWdescriptor_t e__ParametricIdentifier_raw_;
+extern const TTCN_Typedescriptor_t e__ParametricIdentifier_descr_;
+extern const XERdescriptor_t N__GP__Request_msgFunction_xer_;
+extern const TTCN_OERdescriptor_t N__GP__Request_msgFunction_oer_;
+extern const TTCN_Typedescriptor_t N__GP__Request_msgFunction_descr_;
+extern const TTCN_RAWdescriptor_t N__GP__Request_parametricIdentifiers_raw_;
+extern const TTCN_Typedescriptor_t N__GP__Request_parametricIdentifiers_descr_;
+extern const TTCN_RAWdescriptor_t N__GP__Request_raw_;
+extern const TTCN_Typedescriptor_t N__GP__Request_descr_;
+extern const XERdescriptor_t Buffersize_xer_;
+extern const TTCN_OERdescriptor_t Buffersize_oer_;
+extern const TTCN_Typedescriptor_t Buffersize_descr_;
+extern const XERdescriptor_t MaximumFilterDatabaseSize_xer_;
+extern const TTCN_OERdescriptor_t MaximumFilterDatabaseSize_oer_;
+extern const TTCN_Typedescriptor_t MaximumFilterDatabaseSize_descr_;
+extern const XERdescriptor_t NumberOfFilterDatabaseEntries_xer_;
+extern const TTCN_OERdescriptor_t NumberOfFilterDatabaseEntries_oer_;
+extern const TTCN_Typedescriptor_t NumberOfFilterDatabaseEntries_descr_;
+extern const XERdescriptor_t MaximumNumberOfMessagesReceivedPerSecond_xer_;
+extern const TTCN_OERdescriptor_t MaximumNumberOfMessagesReceivedPerSecond_oer_;
+extern const TTCN_Typedescriptor_t MaximumNumberOfMessagesReceivedPerSecond_descr_;
+extern const XERdescriptor_t MaximumNumberOfMessagesForwardedPerSecond_xer_;
+extern const TTCN_OERdescriptor_t MaximumNumberOfMessagesForwardedPerSecond_oer_;
+extern const TTCN_Typedescriptor_t MaximumNumberOfMessagesForwardedPerSecond_descr_;
+extern const XERdescriptor_t MaximumNumberOfMessagesFilteredPerSecond_xer_;
+extern const TTCN_OERdescriptor_t MaximumNumberOfMessagesFilteredPerSecond_oer_;
+extern const TTCN_Typedescriptor_t MaximumNumberOfMessagesFilteredPerSecond_descr_;
+extern const XERdescriptor_t MaximumTransitDelayTime__ms_xer_;
+extern const TTCN_OERdescriptor_t MaximumTransitDelayTime__ms_oer_;
+extern const TTCN_Typedescriptor_t MaximumTransitDelayTime__ms_descr_;
+extern const XERdescriptor_t AverageTransitDelayTime__ms_xer_;
+extern const TTCN_OERdescriptor_t AverageTransitDelayTime__ms_oer_;
+extern const TTCN_Typedescriptor_t AverageTransitDelayTime__ms_descr_;
+extern const XERdescriptor_t NumberOfMessagesLostDueToBufferOverflow_xer_;
+extern const TTCN_OERdescriptor_t NumberOfMessagesLostDueToBufferOverflow_oer_;
+extern const TTCN_Typedescriptor_t NumberOfMessagesLostDueToBufferOverflow_descr_;
+extern const XERdescriptor_t NumberOfMessagesWithExcessTransitDelayTime_xer_;
+extern const TTCN_OERdescriptor_t NumberOfMessagesWithExcessTransitDelayTime_oer_;
+extern const TTCN_Typedescriptor_t NumberOfMessagesWithExcessTransitDelayTime_descr_;
+extern const XERdescriptor_t AverageNumberOfMessagesReceivedPerSecond_xer_;
+extern const TTCN_OERdescriptor_t AverageNumberOfMessagesReceivedPerSecond_oer_;
+extern const TTCN_Typedescriptor_t AverageNumberOfMessagesReceivedPerSecond_descr_;
+extern const XERdescriptor_t AverageNumberOfMessagesForwardedPerSecond_xer_;
+extern const TTCN_OERdescriptor_t AverageNumberOfMessagesForwardedPerSecond_oer_;
+extern const TTCN_Typedescriptor_t AverageNumberOfMessagesForwardedPerSecond_descr_;
+extern const XERdescriptor_t AverageNumberOfMessagesFilteredPerSecond_xer_;
+extern const TTCN_OERdescriptor_t AverageNumberOfMessagesFilteredPerSecond_oer_;
+extern const TTCN_Typedescriptor_t AverageNumberOfMessagesFilteredPerSecond_descr_;
+extern const XERdescriptor_t UptimeSinceLastPowerOnReset__s_xer_;
+extern const TTCN_OERdescriptor_t UptimeSinceLastPowerOnReset__s_oer_;
+extern const TTCN_Typedescriptor_t UptimeSinceLastPowerOnReset__s_descr_;
+extern const XERdescriptor_t NumberOfPorts_xer_;
+extern const TTCN_OERdescriptor_t NumberOfPorts_oer_;
+extern const TTCN_Typedescriptor_t NumberOfPorts_descr_;
+extern const XERdescriptor_t NetworkInterconnectionUnitType_xer_;
+extern const TTCN_OERdescriptor_t NetworkInterconnectionUnitType_oer_;
+extern const TTCN_Typedescriptor_t NetworkInterconnectionUnitType_descr_;
+extern const TTCN_RAWdescriptor_t Reserved_raw_;
+extern const XERdescriptor_t Reserved_xer_;
+extern const TTCN_OERdescriptor_t Reserved_oer_;
+extern const TTCN_Typedescriptor_t Reserved_descr_;
+extern const TTCN_RAWdescriptor_t RequestedParametric_raw_;
+extern const TTCN_Typedescriptor_t RequestedParametric_descr_;
+extern const XERdescriptor_t RequestedParametric_buffersize_xer_;
+extern const TTCN_OERdescriptor_t RequestedParametric_buffersize_oer_;
+extern const TTCN_Typedescriptor_t RequestedParametric_buffersize_descr_;
+extern const XERdescriptor_t RequestedParametric_maximumFilterDatabaseSize_xer_;
+extern const TTCN_OERdescriptor_t RequestedParametric_maximumFilterDatabaseSize_oer_;
+extern const TTCN_Typedescriptor_t RequestedParametric_maximumFilterDatabaseSize_descr_;
+extern const XERdescriptor_t RequestedParametric_numberOfFilterDatabaseEntries_xer_;
+extern const TTCN_OERdescriptor_t RequestedParametric_numberOfFilterDatabaseEntries_oer_;
+extern const TTCN_Typedescriptor_t RequestedParametric_numberOfFilterDatabaseEntries_descr_;
+extern const XERdescriptor_t RequestedParametric_maximumNumberOfMessagesReceivedPerSecond_xer_;
+extern const TTCN_OERdescriptor_t RequestedParametric_maximumNumberOfMessagesReceivedPerSecond_oer_;
+extern const TTCN_Typedescriptor_t RequestedParametric_maximumNumberOfMessagesReceivedPerSecond_descr_;
+extern const XERdescriptor_t RequestedParametric_maximumNumberOfMessagesForwardedPerSecond_xer_;
+extern const TTCN_OERdescriptor_t RequestedParametric_maximumNumberOfMessagesForwardedPerSecond_oer_;
+extern const TTCN_Typedescriptor_t RequestedParametric_maximumNumberOfMessagesForwardedPerSecond_descr_;
+extern const XERdescriptor_t RequestedParametric_maximumNumberOfMessagesFilteredPerSecond_xer_;
+extern const TTCN_OERdescriptor_t RequestedParametric_maximumNumberOfMessagesFilteredPerSecond_oer_;
+extern const TTCN_Typedescriptor_t RequestedParametric_maximumNumberOfMessagesFilteredPerSecond_descr_;
+extern const XERdescriptor_t RequestedParametric_maximumTransitDelayTime__ms_xer_;
+extern const TTCN_OERdescriptor_t RequestedParametric_maximumTransitDelayTime__ms_oer_;
+extern const TTCN_Typedescriptor_t RequestedParametric_maximumTransitDelayTime__ms_descr_;
+extern const XERdescriptor_t RequestedParametric_averageTransitDelayTime__ms_xer_;
+extern const TTCN_OERdescriptor_t RequestedParametric_averageTransitDelayTime__ms_oer_;
+extern const TTCN_Typedescriptor_t RequestedParametric_averageTransitDelayTime__ms_descr_;
+extern const XERdescriptor_t RequestedParametric_numberOfMessagesLostDueToBufferOverflow_xer_;
+extern const TTCN_OERdescriptor_t RequestedParametric_numberOfMessagesLostDueToBufferOverflow_oer_;
+extern const TTCN_Typedescriptor_t RequestedParametric_numberOfMessagesLostDueToBufferOverflow_descr_;
+extern const XERdescriptor_t RequestedParametric_numberOfMessagesWithExcessTransitDelayTime_xer_;
+extern const TTCN_OERdescriptor_t RequestedParametric_numberOfMessagesWithExcessTransitDelayTime_oer_;
+extern const TTCN_Typedescriptor_t RequestedParametric_numberOfMessagesWithExcessTransitDelayTime_descr_;
+extern const XERdescriptor_t RequestedParametric_averageNumberOfMessagesReceivedPerSecond_xer_;
+extern const TTCN_OERdescriptor_t RequestedParametric_averageNumberOfMessagesReceivedPerSecond_oer_;
+extern const TTCN_Typedescriptor_t RequestedParametric_averageNumberOfMessagesReceivedPerSecond_descr_;
+extern const XERdescriptor_t RequestedParametric_averageNumberOfMessagesForwardedPerSecond_xer_;
+extern const TTCN_OERdescriptor_t RequestedParametric_averageNumberOfMessagesForwardedPerSecond_oer_;
+extern const TTCN_Typedescriptor_t RequestedParametric_averageNumberOfMessagesForwardedPerSecond_descr_;
+extern const XERdescriptor_t RequestedParametric_averageNumberOfMessagesFilteredPerSecond_xer_;
+extern const TTCN_OERdescriptor_t RequestedParametric_averageNumberOfMessagesFilteredPerSecond_oer_;
+extern const TTCN_Typedescriptor_t RequestedParametric_averageNumberOfMessagesFilteredPerSecond_descr_;
+extern const XERdescriptor_t RequestedParametric_uptimeSinceLastPowerOnReset__s_xer_;
+extern const TTCN_OERdescriptor_t RequestedParametric_uptimeSinceLastPowerOnReset__s_oer_;
+extern const TTCN_Typedescriptor_t RequestedParametric_uptimeSinceLastPowerOnReset__s_descr_;
+extern const XERdescriptor_t RequestedParametric_numberOfPorts_xer_;
+extern const TTCN_OERdescriptor_t RequestedParametric_numberOfPorts_oer_;
+extern const TTCN_Typedescriptor_t RequestedParametric_numberOfPorts_descr_;
+extern const XERdescriptor_t RequestedParametric_networkInterconnectionUnitType_xer_;
+extern const TTCN_OERdescriptor_t RequestedParametric_networkInterconnectionUnitType_oer_;
+extern const TTCN_Typedescriptor_t RequestedParametric_networkInterconnectionUnitType_descr_;
+extern const XERdescriptor_t RequestedParametric_reserved_xer_;
+extern const TTCN_OERdescriptor_t RequestedParametric_reserved_oer_;
+extern const TTCN_Typedescriptor_t RequestedParametric_reserved_descr_;
+extern const XERdescriptor_t N__GP__Response_msgFunction_xer_;
+extern const TTCN_OERdescriptor_t N__GP__Response_msgFunction_oer_;
+extern const TTCN_Typedescriptor_t N__GP__Response_msgFunction_descr_;
+extern const TTCN_RAWdescriptor_t N__GP__Response_requestedParametrics_raw_;
+extern const TTCN_Typedescriptor_t N__GP__Response_requestedParametrics_descr_;
+extern const XERdescriptor_t N__GP__Response_requestedParametrics_0_xer_;
+extern const TTCN_OERdescriptor_t N__GP__Response_requestedParametrics_0_oer_;
+extern const TTCN_Typedescriptor_t N__GP__Response_requestedParametrics_0_descr_;
+extern const TTCN_RAWdescriptor_t N__GP__Response_raw_;
+extern const TTCN_Typedescriptor_t N__GP__Response_descr_;
+extern const XERdescriptor_t N__GP__Reset__Statistics_msgFunction_xer_;
+extern const TTCN_OERdescriptor_t N__GP__Reset__Statistics_msgFunction_oer_;
+extern const TTCN_Typedescriptor_t N__GP__Reset__Statistics_msgFunction_descr_;
+extern const TTCN_RAWdescriptor_t N__GP__Reset__Statistics_reserved3_raw_;
+extern const XERdescriptor_t N__GP__Reset__Statistics_reserved3_xer_;
+extern const TTCN_OERdescriptor_t N__GP__Reset__Statistics_reserved3_oer_;
+extern const TTCN_Typedescriptor_t N__GP__Reset__Statistics_reserved3_descr_;
+extern const TTCN_RAWdescriptor_t N__GP__Reset__Statistics_reserved4_raw_;
+extern const XERdescriptor_t N__GP__Reset__Statistics_reserved4_xer_;
+extern const TTCN_OERdescriptor_t N__GP__Reset__Statistics_reserved4_oer_;
+extern const TTCN_Typedescriptor_t N__GP__Reset__Statistics_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t N__GP__Reset__Statistics_reserved5_raw_;
+extern const XERdescriptor_t N__GP__Reset__Statistics_reserved5_xer_;
+extern const TTCN_OERdescriptor_t N__GP__Reset__Statistics_reserved5_oer_;
+extern const TTCN_Typedescriptor_t N__GP__Reset__Statistics_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t N__GP__Reset__Statistics_reserved6_raw_;
+extern const XERdescriptor_t N__GP__Reset__Statistics_reserved6_xer_;
+extern const TTCN_OERdescriptor_t N__GP__Reset__Statistics_reserved6_oer_;
+extern const TTCN_Typedescriptor_t N__GP__Reset__Statistics_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t N__GP__Reset__Statistics_reserved7_raw_;
+extern const XERdescriptor_t N__GP__Reset__Statistics_reserved7_xer_;
+extern const TTCN_OERdescriptor_t N__GP__Reset__Statistics_reserved7_oer_;
+extern const TTCN_Typedescriptor_t N__GP__Reset__Statistics_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t N__GP__Reset__Statistics_reserved8_raw_;
+extern const XERdescriptor_t N__GP__Reset__Statistics_reserved8_xer_;
+extern const TTCN_OERdescriptor_t N__GP__Reset__Statistics_reserved8_oer_;
+extern const TTCN_Typedescriptor_t N__GP__Reset__Statistics_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t N__GP__Reset__Statistics_raw_;
+extern const TTCN_Typedescriptor_t N__GP__Reset__Statistics_descr_;
+extern const XERdescriptor_t N__SP__Request_msgFunction_xer_;
+extern const TTCN_OERdescriptor_t N__SP__Request_msgFunction_oer_;
+extern const TTCN_Typedescriptor_t N__SP__Request_msgFunction_descr_;
+extern const TTCN_RAWdescriptor_t N__SP__Request_parametricIdentifiers_raw_;
+extern const TTCN_Typedescriptor_t N__SP__Request_parametricIdentifiers_descr_;
+extern const TTCN_RAWdescriptor_t N__SP__Request_raw_;
+extern const TTCN_Typedescriptor_t N__SP__Request_descr_;
+extern const XERdescriptor_t N__SP__Response_msgFunction_xer_;
+extern const TTCN_OERdescriptor_t N__SP__Response_msgFunction_oer_;
+extern const TTCN_Typedescriptor_t N__SP__Response_msgFunction_descr_;
+extern const TTCN_RAWdescriptor_t N__SP__Response_requestedParametrics_raw_;
+extern const TTCN_Typedescriptor_t N__SP__Response_requestedParametrics_descr_;
+extern const XERdescriptor_t N__SP__Response_requestedParametrics_0_xer_;
+extern const TTCN_OERdescriptor_t N__SP__Response_requestedParametrics_0_oer_;
+extern const TTCN_Typedescriptor_t N__SP__Response_requestedParametrics_0_descr_;
+extern const TTCN_RAWdescriptor_t N__SP__Response_raw_;
+extern const TTCN_Typedescriptor_t N__SP__Response_descr_;
+extern const XERdescriptor_t N__SP__Reset__Statistics_msgFunction_xer_;
+extern const TTCN_OERdescriptor_t N__SP__Reset__Statistics_msgFunction_oer_;
+extern const TTCN_Typedescriptor_t N__SP__Reset__Statistics_msgFunction_descr_;
+extern const TTCN_RAWdescriptor_t N__SP__Reset__Statistics_reserved3_raw_;
+extern const XERdescriptor_t N__SP__Reset__Statistics_reserved3_xer_;
+extern const TTCN_OERdescriptor_t N__SP__Reset__Statistics_reserved3_oer_;
+extern const TTCN_Typedescriptor_t N__SP__Reset__Statistics_reserved3_descr_;
+extern const TTCN_RAWdescriptor_t N__SP__Reset__Statistics_reserved4_raw_;
+extern const XERdescriptor_t N__SP__Reset__Statistics_reserved4_xer_;
+extern const TTCN_OERdescriptor_t N__SP__Reset__Statistics_reserved4_oer_;
+extern const TTCN_Typedescriptor_t N__SP__Reset__Statistics_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t N__SP__Reset__Statistics_reserved5_raw_;
+extern const XERdescriptor_t N__SP__Reset__Statistics_reserved5_xer_;
+extern const TTCN_OERdescriptor_t N__SP__Reset__Statistics_reserved5_oer_;
+extern const TTCN_Typedescriptor_t N__SP__Reset__Statistics_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t N__SP__Reset__Statistics_reserved6_raw_;
+extern const XERdescriptor_t N__SP__Reset__Statistics_reserved6_xer_;
+extern const TTCN_OERdescriptor_t N__SP__Reset__Statistics_reserved6_oer_;
+extern const TTCN_Typedescriptor_t N__SP__Reset__Statistics_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t N__SP__Reset__Statistics_reserved7_raw_;
+extern const XERdescriptor_t N__SP__Reset__Statistics_reserved7_xer_;
+extern const TTCN_OERdescriptor_t N__SP__Reset__Statistics_reserved7_oer_;
+extern const TTCN_Typedescriptor_t N__SP__Reset__Statistics_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t N__SP__Reset__Statistics_reserved8_raw_;
+extern const XERdescriptor_t N__SP__Reset__Statistics_reserved8_xer_;
+extern const TTCN_OERdescriptor_t N__SP__Reset__Statistics_reserved8_oer_;
+extern const TTCN_Typedescriptor_t N__SP__Reset__Statistics_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t N__SP__Reset__Statistics_raw_;
+extern const TTCN_Typedescriptor_t N__SP__Reset__Statistics_descr_;
+extern const XERdescriptor_t N__OC__Request_msgFunction_xer_;
+extern const TTCN_OERdescriptor_t N__OC__Request_msgFunction_oer_;
+extern const TTCN_Typedescriptor_t N__OC__Request_msgFunction_descr_;
+extern const TTCN_RAWdescriptor_t N__OC__Request_raw_;
+extern const TTCN_Typedescriptor_t N__OC__Request_descr_;
+extern const XERdescriptor_t N__CC__Request_msgFunction_xer_;
+extern const TTCN_OERdescriptor_t N__CC__Request_msgFunction_oer_;
+extern const TTCN_Typedescriptor_t N__CC__Request_msgFunction_descr_;
+extern const TTCN_RAWdescriptor_t N__CC__Request_raw_;
+extern const TTCN_Typedescriptor_t N__CC__Request_descr_;
+extern const TTCN_RAWdescriptor_t e__Status_raw_;
+extern const TTCN_Typedescriptor_t e__Status_descr_;
+extern const TTCN_RAWdescriptor_t e__FailureReasonCode_raw_;
+extern const TTCN_Typedescriptor_t e__FailureReasonCode_descr_;
+extern const XERdescriptor_t N__OC__Response_msgFunction_xer_;
+extern const TTCN_OERdescriptor_t N__OC__Response_msgFunction_oer_;
+extern const TTCN_Typedescriptor_t N__OC__Response_msgFunction_descr_;
+extern const TTCN_RAWdescriptor_t N__OC__Response_raw_;
+extern const TTCN_Typedescriptor_t N__OC__Response_descr_;
+extern const XERdescriptor_t N__CC__Response_msgFunction_xer_;
+extern const TTCN_OERdescriptor_t N__CC__Response_msgFunction_oer_;
+extern const TTCN_Typedescriptor_t N__CC__Response_msgFunction_descr_;
+extern const TTCN_RAWdescriptor_t N__CC__Response_raw_;
+extern const TTCN_Typedescriptor_t N__CC__Response_descr_;
+extern const TTCN_RAWdescriptor_t NetworkMessage_raw_;
+extern const TTCN_Typedescriptor_t NetworkMessage_descr_;
+extern TTCN_Module module_object;
+
+} /* end of namespace */
+
+#endif
diff --git a/demo/IsobusNMMessageTypes.o b/demo/IsobusNMMessageTypes.o
new file mode 100644
index 0000000..4b4ba79
--- /dev/null
+++ b/demo/IsobusNMMessageTypes.o
Binary files differ
diff --git a/demo/IsobusVTMessageTypes.cc b/demo/IsobusVTMessageTypes.cc
new file mode 100644
index 0000000..3dc9445
--- /dev/null
+++ b/demo/IsobusVTMessageTypes.cc
@@ -0,0 +1,303750 @@
+// This C++ source file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+/* Including header files */
+
+#include "IsobusVTMessageTypes.hh"
+
+namespace IsobusVTMessageTypes {
+
+/* Prototypes of static functions */
+
+static void pre_init_module();
+static void post_init_module();
+
+/* Literal string constants */
+
+static const unsigned char module_checksum[] = { 0x0e, 0x29, 0x45, 0x7d, 0x17, 0x23, 0xa0, 0x52, 0xa6, 0xeb, 0x2b, 0xe5, 0xe8, 0xdf, 0xde, 0xb1 };
+
+/* Global variable definitions */
+
+const XERdescriptor_t       VTfunction_xer_ = { {"VTfunction>\n", "VTfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTfunction_descr_ = { "@IsobusVTMessageTypes.VTfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &VTfunction_xer_, &INTEGER_json_, &VTfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t AnyObjectID_raw_ = {16,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       AnyObjectID_xer_ = { {"AnyObjectID>\n", "AnyObjectID>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t AnyObjectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t AnyObjectID_descr_ = { "@IsobusVTMessageTypes.AnyObjectID", &INTEGER_ber_, &AnyObjectID_raw_, &INTEGER_text_, &AnyObjectID_xer_, &INTEGER_json_, &AnyObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ValidObjectID_raw_ = {16,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       ValidObjectID_xer_ = { {"ValidObjectID>\n", "ValidObjectID>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ValidObjectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ValidObjectID_descr_ = { "@IsobusVTMessageTypes.ValidObjectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ValidObjectID_xer_, &INTEGER_json_, &ValidObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t AttributeID_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,NULL,false};
+const XERdescriptor_t       AttributeID_xer_ = { {"AttributeID>\n", "AttributeID>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t AttributeID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t AttributeID_descr_ = { "@IsobusVTMessageTypes.AttributeID", &INTEGER_ber_, &AttributeID_raw_, &INTEGER_text_, &AttributeID_xer_, &INTEGER_json_, &AttributeID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t PercentType_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,NULL,false};
+const XERdescriptor_t       PercentType_xer_ = { {"PercentType>\n", "PercentType>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t PercentType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t PercentType_descr_ = { "@IsobusVTMessageTypes.PercentType", &INTEGER_ber_, &PercentType_raw_, &INTEGER_text_, &PercentType_xer_, &INTEGER_json_, &PercentType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DeltaPositionType_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,NULL,false};
+const XERdescriptor_t       DeltaPositionType_xer_ = { {"DeltaPositionType>\n", "DeltaPositionType>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t DeltaPositionType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t DeltaPositionType_descr_ = { "@IsobusVTMessageTypes.DeltaPositionType", &INTEGER_ber_, &DeltaPositionType_raw_, &INTEGER_text_, &DeltaPositionType_xer_, &INTEGER_json_, &DeltaPositionType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t XPositionType_raw_ = {16,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       XPositionType_xer_ = { {"XPositionType>\n", "XPositionType>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t XPositionType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t XPositionType_descr_ = { "@IsobusVTMessageTypes.XPositionType", &INTEGER_ber_, &XPositionType_raw_, &INTEGER_text_, &XPositionType_xer_, &INTEGER_json_, &XPositionType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t YPositionType_raw_ = {16,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       YPositionType_xer_ = { {"YPositionType>\n", "YPositionType>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t YPositionType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t YPositionType_descr_ = { "@IsobusVTMessageTypes.YPositionType", &INTEGER_ber_, &YPositionType_raw_, &INTEGER_text_, &YPositionType_xer_, &INTEGER_json_, &YPositionType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t XOffsetType_raw_ = {16,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       XOffsetType_xer_ = { {"XOffsetType>\n", "XOffsetType>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t XOffsetType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t XOffsetType_descr_ = { "@IsobusVTMessageTypes.XOffsetType", &INTEGER_ber_, &XOffsetType_raw_, &INTEGER_text_, &XOffsetType_xer_, &INTEGER_json_, &XOffsetType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t YOffsetType_raw_ = {16,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       YOffsetType_xer_ = { {"YOffsetType>\n", "YOffsetType>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t YOffsetType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t YOffsetType_descr_ = { "@IsobusVTMessageTypes.YOffsetType", &INTEGER_ber_, &YOffsetType_raw_, &INTEGER_text_, &YOffsetType_xer_, &INTEGER_json_, &YOffsetType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ViewportXAttribute_raw_ = {16,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       ViewportXAttribute_xer_ = { {"ViewportXAttribute>\n", "ViewportXAttribute>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ViewportXAttribute_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ViewportXAttribute_descr_ = { "@IsobusVTMessageTypes.ViewportXAttribute", &INTEGER_ber_, &ViewportXAttribute_raw_, &INTEGER_text_, &ViewportXAttribute_xer_, &INTEGER_json_, &ViewportXAttribute_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ViewportYAttribute_raw_ = {16,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       ViewportYAttribute_xer_ = { {"ViewportYAttribute>\n", "ViewportYAttribute>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ViewportYAttribute_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ViewportYAttribute_descr_ = { "@IsobusVTMessageTypes.ViewportYAttribute", &INTEGER_ber_, &ViewportYAttribute_raw_, &INTEGER_text_, &ViewportYAttribute_xer_, &INTEGER_json_, &ViewportYAttribute_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       WidthType_xer_ = { {"WidthType>\n", "WidthType>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t WidthType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t WidthType_descr_ = { "@IsobusVTMessageTypes.WidthType", &INTEGER_ber_, &IsobusMessageTypes::INT2_raw_, &INTEGER_text_, &WidthType_xer_, &INTEGER_json_, &WidthType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       HeightType_xer_ = { {"HeightType>\n", "HeightType>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t HeightType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t HeightType_descr_ = { "@IsobusVTMessageTypes.HeightType", &INTEGER_ber_, &IsobusMessageTypes::INT2_raw_, &INTEGER_text_, &HeightType_xer_, &INTEGER_json_, &HeightType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       PositionType_xer_ = { {"PositionType>\n", "PositionType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t PositionType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t PositionType_descr_ = { "@IsobusVTMessageTypes.PositionType", &INTEGER_ber_, &IsobusMessageTypes::INT2_raw_, &INTEGER_text_, &PositionType_xer_, &INTEGER_json_, &PositionType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       KeyNumberType_xer_ = { {"KeyNumberType>\n", "KeyNumberType>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t KeyNumberType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t KeyNumberType_descr_ = { "@IsobusVTMessageTypes.KeyNumberType", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &KeyNumberType_xer_, &INTEGER_json_, &KeyNumberType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       FrequencyType_xer_ = { {"FrequencyType>\n", "FrequencyType>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t FrequencyType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t FrequencyType_descr_ = { "@IsobusVTMessageTypes.FrequencyType", &INTEGER_ber_, &IsobusMessageTypes::INT2_raw_, &INTEGER_text_, &FrequencyType_xer_, &INTEGER_json_, &FrequencyType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ColorType_xer_ = { {"ColorType>\n", "ColorType>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ColorType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ColorType_descr_ = { "@IsobusVTMessageTypes.ColorType", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ColorType_xer_, &INTEGER_json_, &ColorType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       FontSize_xer_ = { {"FontSize>\n", "FontSize>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t FontSize_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t FontSize_descr_ = { "@IsobusVTMessageTypes.FontSize", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &FontSize_xer_, &INTEGER_json_, &FontSize_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       FontType_xer_ = { {"FontType>\n", "FontType>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t FontType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t FontType_descr_ = { "@IsobusVTMessageTypes.FontType", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &FontType_xer_, &INTEGER_json_, &FontType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       FontStyle_xer_ = { {"FontStyle>\n", "FontStyle>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t FontStyle_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t FontStyle_descr_ = { "@IsobusVTMessageTypes.FontStyle", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &FontStyle_xer_, &INTEGER_json_, &FontStyle_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       LineWidth_xer_ = { {"LineWidth>\n", "LineWidth>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t LineWidth_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t LineWidth_descr_ = { "@IsobusVTMessageTypes.LineWidth", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &LineWidth_xer_, &INTEGER_json_, &LineWidth_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       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 Priority_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t Priority_descr_ = { "@IsobusVTMessageTypes.Priority", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &Priority_xer_, &INTEGER_json_, &Priority_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       Index_xer_ = { {"Index>\n", "Index>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t Index_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t Index_descr_ = { "@IsobusVTMessageTypes.Index", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &Index_xer_, &INTEGER_json_, &Index_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       LineArt_xer_ = { {"LineArt>\n", "LineArt>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t LineArt_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t LineArt_descr_ = { "@IsobusVTMessageTypes.LineArt", &BITSTRING_ber_, &General__Types::BIT16n_raw_, NULL, &LineArt_xer_, &BITSTRING_json_, &LineArt_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CHR7_raw_ = {56,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,7,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       CHR7_xer_ = { {"CHR7>\n", "CHR7>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_Typedescriptor_t CHR7_descr_ = { "@IsobusVTMessageTypes.CHR7", NULL, &CHR7_raw_, &CHARSTRING_text_, &CHR7_xer_, &CHARSTRING_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VersionLabel7Char_xer_ = { {"VersionLabel7Char>\n", "VersionLabel7Char>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_Typedescriptor_t VersionLabel7Char_descr_ = { "@IsobusVTMessageTypes.VersionLabel7Char", NULL, &CHR7_raw_, &CHARSTRING_text_, &VersionLabel7Char_xer_, &CHARSTRING_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SingleFloat_raw_ = {32,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       SingleFloat_xer_ = { {"SingleFloat>\n", "SingleFloat>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SingleFloat_oer_ext_arr_[0] = {};
+const int SingleFloat_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SingleFloat_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SingleFloat_oer_ext_arr_, 0, SingleFloat_oer_p_};
+const TTCN_Typedescriptor_t SingleFloat_descr_ = { "@IsobusVTMessageTypes.SingleFloat", &FLOAT_ber_, &SingleFloat_raw_, NULL, &SingleFloat_xer_, &FLOAT_json_, &SingleFloat_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t e__SoftKeyActivationReq__KeyAactivationCode_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,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for e__SoftKeyActivationReq__KeyAactivationCode
+const TTCN_Typedescriptor_t e__SoftKeyActivationReq__KeyAactivationCode_descr_ = { "@IsobusVTMessageTypes.e_SoftKeyActivationReq_KeyAactivationCode", NULL, &e__SoftKeyActivationReq__KeyAactivationCode_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SoftKeyActivationReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SoftKeyActivationReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SoftKeyActivationReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.SoftKeyActivationReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &SoftKeyActivationReq_vtfunction_xer_, &INTEGER_json_, &SoftKeyActivationReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SoftKeyActivationReq_objectID_xer_ = { {"objectID>\n", "objectID>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SoftKeyActivationReq_objectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SoftKeyActivationReq_objectID_descr_ = { "@IsobusVTMessageTypes.SoftKeyActivationReq.objectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &SoftKeyActivationReq_objectID_xer_, &INTEGER_json_, &SoftKeyActivationReq_objectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SoftKeyActivationReq_parentObjectID_xer_ = { {"parentObjectID>\n", "parentObjectID>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SoftKeyActivationReq_parentObjectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SoftKeyActivationReq_parentObjectID_descr_ = { "@IsobusVTMessageTypes.SoftKeyActivationReq.parentObjectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &SoftKeyActivationReq_parentObjectID_xer_, &INTEGER_json_, &SoftKeyActivationReq_parentObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SoftKeyActivationReq_keyNumber_xer_ = { {"keyNumber>\n", "keyNumber>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SoftKeyActivationReq_keyNumber_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SoftKeyActivationReq_keyNumber_descr_ = { "@IsobusVTMessageTypes.SoftKeyActivationReq.keyNumber", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &SoftKeyActivationReq_keyNumber_xer_, &INTEGER_json_, &SoftKeyActivationReq_keyNumber_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SoftKeyActivationReq_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       SoftKeyActivationReq_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SoftKeyActivationReq_reserved8_oer_ext_arr_[0] = {};
+const int SoftKeyActivationReq_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SoftKeyActivationReq_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SoftKeyActivationReq_reserved8_oer_ext_arr_, 0, SoftKeyActivationReq_reserved8_oer_p_};
+const TTCN_Typedescriptor_t SoftKeyActivationReq_reserved8_descr_ = { "@IsobusVTMessageTypes.SoftKeyActivationReq.reserved8", &OCTETSTRING_ber_, &SoftKeyActivationReq_reserved8_raw_, &OCTETSTRING_text_, &SoftKeyActivationReq_reserved8_xer_, &OCTETSTRING_json_, &SoftKeyActivationReq_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SoftKeyActivationReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for SoftKeyActivationReq
+const TTCN_Typedescriptor_t SoftKeyActivationReq_descr_ = { "@IsobusVTMessageTypes.SoftKeyActivationReq", NULL, &SoftKeyActivationReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SoftKeyActivationRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SoftKeyActivationRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SoftKeyActivationRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.SoftKeyActivationRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &SoftKeyActivationRes_vtfunction_xer_, &INTEGER_json_, &SoftKeyActivationRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SoftKeyActivationRes_objectID_xer_ = { {"objectID>\n", "objectID>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SoftKeyActivationRes_objectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SoftKeyActivationRes_objectID_descr_ = { "@IsobusVTMessageTypes.SoftKeyActivationRes.objectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &SoftKeyActivationRes_objectID_xer_, &INTEGER_json_, &SoftKeyActivationRes_objectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SoftKeyActivationRes_parentObjectID_xer_ = { {"parentObjectID>\n", "parentObjectID>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SoftKeyActivationRes_parentObjectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SoftKeyActivationRes_parentObjectID_descr_ = { "@IsobusVTMessageTypes.SoftKeyActivationRes.parentObjectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &SoftKeyActivationRes_parentObjectID_xer_, &INTEGER_json_, &SoftKeyActivationRes_parentObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SoftKeyActivationRes_keyNumber_xer_ = { {"keyNumber>\n", "keyNumber>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SoftKeyActivationRes_keyNumber_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SoftKeyActivationRes_keyNumber_descr_ = { "@IsobusVTMessageTypes.SoftKeyActivationRes.keyNumber", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &SoftKeyActivationRes_keyNumber_xer_, &INTEGER_json_, &SoftKeyActivationRes_keyNumber_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SoftKeyActivationRes_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       SoftKeyActivationRes_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SoftKeyActivationRes_reserved8_oer_ext_arr_[0] = {};
+const int SoftKeyActivationRes_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SoftKeyActivationRes_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SoftKeyActivationRes_reserved8_oer_ext_arr_, 0, SoftKeyActivationRes_reserved8_oer_p_};
+const TTCN_Typedescriptor_t SoftKeyActivationRes_reserved8_descr_ = { "@IsobusVTMessageTypes.SoftKeyActivationRes.reserved8", &OCTETSTRING_ber_, &SoftKeyActivationRes_reserved8_raw_, &OCTETSTRING_text_, &SoftKeyActivationRes_reserved8_xer_, &OCTETSTRING_json_, &SoftKeyActivationRes_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SoftKeyActivationRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for SoftKeyActivationRes
+const TTCN_Typedescriptor_t SoftKeyActivationRes_descr_ = { "@IsobusVTMessageTypes.SoftKeyActivationRes", NULL, &SoftKeyActivationRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t e__ButtonActivationReq__KeyAactivationCode_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,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for e__ButtonActivationReq__KeyAactivationCode
+const TTCN_Typedescriptor_t e__ButtonActivationReq__KeyAactivationCode_descr_ = { "@IsobusVTMessageTypes.e_ButtonActivationReq_KeyAactivationCode", NULL, &e__ButtonActivationReq__KeyAactivationCode_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ButtonActivationReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ButtonActivationReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ButtonActivationReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.ButtonActivationReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ButtonActivationReq_vtfunction_xer_, &INTEGER_json_, &ButtonActivationReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ButtonActivationReq_objectID_xer_ = { {"objectID>\n", "objectID>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ButtonActivationReq_objectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ButtonActivationReq_objectID_descr_ = { "@IsobusVTMessageTypes.ButtonActivationReq.objectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ButtonActivationReq_objectID_xer_, &INTEGER_json_, &ButtonActivationReq_objectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ButtonActivationReq_parentObjectID_xer_ = { {"parentObjectID>\n", "parentObjectID>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ButtonActivationReq_parentObjectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ButtonActivationReq_parentObjectID_descr_ = { "@IsobusVTMessageTypes.ButtonActivationReq.parentObjectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ButtonActivationReq_parentObjectID_xer_, &INTEGER_json_, &ButtonActivationReq_parentObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ButtonActivationReq_buttonKeyCode_xer_ = { {"buttonKeyCode>\n", "buttonKeyCode>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ButtonActivationReq_buttonKeyCode_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ButtonActivationReq_buttonKeyCode_descr_ = { "@IsobusVTMessageTypes.ButtonActivationReq.buttonKeyCode", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ButtonActivationReq_buttonKeyCode_xer_, &INTEGER_json_, &ButtonActivationReq_buttonKeyCode_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ButtonActivationReq_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ButtonActivationReq_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ButtonActivationReq_reserved8_oer_ext_arr_[0] = {};
+const int ButtonActivationReq_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ButtonActivationReq_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ButtonActivationReq_reserved8_oer_ext_arr_, 0, ButtonActivationReq_reserved8_oer_p_};
+const TTCN_Typedescriptor_t ButtonActivationReq_reserved8_descr_ = { "@IsobusVTMessageTypes.ButtonActivationReq.reserved8", &OCTETSTRING_ber_, &ButtonActivationReq_reserved8_raw_, &OCTETSTRING_text_, &ButtonActivationReq_reserved8_xer_, &OCTETSTRING_json_, &ButtonActivationReq_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ButtonActivationReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ButtonActivationReq
+const TTCN_Typedescriptor_t ButtonActivationReq_descr_ = { "@IsobusVTMessageTypes.ButtonActivationReq", NULL, &ButtonActivationReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t e__ButtonActivationRes__KeyAactivationCode_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,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for e__ButtonActivationRes__KeyAactivationCode
+const TTCN_Typedescriptor_t e__ButtonActivationRes__KeyAactivationCode_descr_ = { "@IsobusVTMessageTypes.e_ButtonActivationRes_KeyAactivationCode", NULL, &e__ButtonActivationRes__KeyAactivationCode_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ButtonActivationRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ButtonActivationRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ButtonActivationRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.ButtonActivationRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ButtonActivationRes_vtfunction_xer_, &INTEGER_json_, &ButtonActivationRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ButtonActivationRes_objectID_xer_ = { {"objectID>\n", "objectID>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ButtonActivationRes_objectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ButtonActivationRes_objectID_descr_ = { "@IsobusVTMessageTypes.ButtonActivationRes.objectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ButtonActivationRes_objectID_xer_, &INTEGER_json_, &ButtonActivationRes_objectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ButtonActivationRes_parentObjectID_xer_ = { {"parentObjectID>\n", "parentObjectID>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ButtonActivationRes_parentObjectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ButtonActivationRes_parentObjectID_descr_ = { "@IsobusVTMessageTypes.ButtonActivationRes.parentObjectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ButtonActivationRes_parentObjectID_xer_, &INTEGER_json_, &ButtonActivationRes_parentObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ButtonActivationRes_buttonKeyCode_xer_ = { {"buttonKeyCode>\n", "buttonKeyCode>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ButtonActivationRes_buttonKeyCode_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ButtonActivationRes_buttonKeyCode_descr_ = { "@IsobusVTMessageTypes.ButtonActivationRes.buttonKeyCode", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ButtonActivationRes_buttonKeyCode_xer_, &INTEGER_json_, &ButtonActivationRes_buttonKeyCode_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ButtonActivationRes_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ButtonActivationRes_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ButtonActivationRes_reserved8_oer_ext_arr_[0] = {};
+const int ButtonActivationRes_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ButtonActivationRes_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ButtonActivationRes_reserved8_oer_ext_arr_, 0, ButtonActivationRes_reserved8_oer_p_};
+const TTCN_Typedescriptor_t ButtonActivationRes_reserved8_descr_ = { "@IsobusVTMessageTypes.ButtonActivationRes.reserved8", &OCTETSTRING_ber_, &ButtonActivationRes_reserved8_raw_, &OCTETSTRING_text_, &ButtonActivationRes_reserved8_xer_, &OCTETSTRING_json_, &ButtonActivationRes_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ButtonActivationRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ButtonActivationRes
+const TTCN_Typedescriptor_t ButtonActivationRes_descr_ = { "@IsobusVTMessageTypes.ButtonActivationRes", NULL, &ButtonActivationRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t e__PointingEvent__touchState_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,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for e__PointingEvent__touchState
+const TTCN_Typedescriptor_t e__PointingEvent__touchState_descr_ = { "@IsobusVTMessageTypes.e_PointingEvent_touchState", NULL, &e__PointingEvent__touchState_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       PointingEventReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t PointingEventReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t PointingEventReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.PointingEventReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &PointingEventReq_vtfunction_xer_, &INTEGER_json_, &PointingEventReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       PointingEventReq_x__position_xer_ = { {"x_position>\n", "x_position>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t PointingEventReq_x__position_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t PointingEventReq_x__position_descr_ = { "@IsobusVTMessageTypes.PointingEventReq.x_position", &INTEGER_ber_, &IsobusMessageTypes::INT2_raw_, &INTEGER_text_, &PointingEventReq_x__position_xer_, &INTEGER_json_, &PointingEventReq_x__position_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       PointingEventReq_y__position_xer_ = { {"y_position>\n", "y_position>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t PointingEventReq_y__position_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t PointingEventReq_y__position_descr_ = { "@IsobusVTMessageTypes.PointingEventReq.y_position", &INTEGER_ber_, &IsobusMessageTypes::INT2_raw_, &INTEGER_text_, &PointingEventReq_y__position_xer_, &INTEGER_json_, &PointingEventReq_y__position_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t PointingEventReq_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       PointingEventReq_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int PointingEventReq_reserved7_oer_ext_arr_[0] = {};
+const int PointingEventReq_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t PointingEventReq_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PointingEventReq_reserved7_oer_ext_arr_, 0, PointingEventReq_reserved7_oer_p_};
+const TTCN_Typedescriptor_t PointingEventReq_reserved7_descr_ = { "@IsobusVTMessageTypes.PointingEventReq.reserved7", &OCTETSTRING_ber_, &PointingEventReq_reserved7_raw_, &OCTETSTRING_text_, &PointingEventReq_reserved7_xer_, &OCTETSTRING_json_, &PointingEventReq_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t PointingEventReq_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       PointingEventReq_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int PointingEventReq_reserved8_oer_ext_arr_[0] = {};
+const int PointingEventReq_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t PointingEventReq_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PointingEventReq_reserved8_oer_ext_arr_, 0, PointingEventReq_reserved8_oer_p_};
+const TTCN_Typedescriptor_t PointingEventReq_reserved8_descr_ = { "@IsobusVTMessageTypes.PointingEventReq.reserved8", &OCTETSTRING_ber_, &PointingEventReq_reserved8_raw_, &OCTETSTRING_text_, &PointingEventReq_reserved8_xer_, &OCTETSTRING_json_, &PointingEventReq_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t PointingEventReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for PointingEventReq
+const TTCN_Typedescriptor_t PointingEventReq_descr_ = { "@IsobusVTMessageTypes.PointingEventReq", NULL, &PointingEventReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       PointingEventRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t PointingEventRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t PointingEventRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.PointingEventRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &PointingEventRes_vtfunction_xer_, &INTEGER_json_, &PointingEventRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       PointingEventRes_x__position_xer_ = { {"x_position>\n", "x_position>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t PointingEventRes_x__position_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t PointingEventRes_x__position_descr_ = { "@IsobusVTMessageTypes.PointingEventRes.x_position", &INTEGER_ber_, &IsobusMessageTypes::INT2_raw_, &INTEGER_text_, &PointingEventRes_x__position_xer_, &INTEGER_json_, &PointingEventRes_x__position_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       PointingEventRes_y__position_xer_ = { {"y_position>\n", "y_position>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t PointingEventRes_y__position_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t PointingEventRes_y__position_descr_ = { "@IsobusVTMessageTypes.PointingEventRes.y_position", &INTEGER_ber_, &IsobusMessageTypes::INT2_raw_, &INTEGER_text_, &PointingEventRes_y__position_xer_, &INTEGER_json_, &PointingEventRes_y__position_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t PointingEventRes_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       PointingEventRes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int PointingEventRes_reserved7_oer_ext_arr_[0] = {};
+const int PointingEventRes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t PointingEventRes_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PointingEventRes_reserved7_oer_ext_arr_, 0, PointingEventRes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t PointingEventRes_reserved7_descr_ = { "@IsobusVTMessageTypes.PointingEventRes.reserved7", &OCTETSTRING_ber_, &PointingEventRes_reserved7_raw_, &OCTETSTRING_text_, &PointingEventRes_reserved7_xer_, &OCTETSTRING_json_, &PointingEventRes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t PointingEventRes_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       PointingEventRes_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int PointingEventRes_reserved8_oer_ext_arr_[0] = {};
+const int PointingEventRes_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t PointingEventRes_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PointingEventRes_reserved8_oer_ext_arr_, 0, PointingEventRes_reserved8_oer_p_};
+const TTCN_Typedescriptor_t PointingEventRes_reserved8_descr_ = { "@IsobusVTMessageTypes.PointingEventRes.reserved8", &OCTETSTRING_ber_, &PointingEventRes_reserved8_raw_, &OCTETSTRING_text_, &PointingEventRes_reserved8_xer_, &OCTETSTRING_json_, &PointingEventRes_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t PointingEventRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for PointingEventRes
+const TTCN_Typedescriptor_t PointingEventRes_descr_ = { "@IsobusVTMessageTypes.PointingEventRes", NULL, &PointingEventRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t e__VTOnUserLayoutHideShow__state_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,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for e__VTOnUserLayoutHideShow__state
+const TTCN_Typedescriptor_t e__VTOnUserLayoutHideShow__state_descr_ = { "@IsobusVTMessageTypes.e_VTOnUserLayoutHideShow_state", NULL, &e__VTOnUserLayoutHideShow__state_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t e__VTSelectInputObject__selection_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,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for e__VTSelectInputObject__selection
+const TTCN_Typedescriptor_t e__VTSelectInputObject__selection_descr_ = { "@IsobusVTMessageTypes.e_VTSelectInputObject_selection", NULL, &e__VTSelectInputObject__selection_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTSelectInputObject__Bitmask_objectIsOpenForDataInput_xer_ = { {"objectIsOpenForDataInput>\n", "objectIsOpenForDataInput>\n"}, {26, 26}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTSelectInputObject__Bitmask_objectIsOpenForDataInput_oer_ext_arr_[0] = {};
+const int VTSelectInputObject__Bitmask_objectIsOpenForDataInput_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTSelectInputObject__Bitmask_objectIsOpenForDataInput_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTSelectInputObject__Bitmask_objectIsOpenForDataInput_oer_ext_arr_, 0, VTSelectInputObject__Bitmask_objectIsOpenForDataInput_oer_p_};
+const TTCN_Typedescriptor_t VTSelectInputObject__Bitmask_objectIsOpenForDataInput_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObject_Bitmask.objectIsOpenForDataInput", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTSelectInputObject__Bitmask_objectIsOpenForDataInput_xer_, &BOOLEAN_json_, &VTSelectInputObject__Bitmask_objectIsOpenForDataInput_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTSelectInputObject__Bitmask_reserved1_xer_ = { {"reserved1>\n", "reserved1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTSelectInputObject__Bitmask_reserved1_oer_ext_arr_[0] = {};
+const int VTSelectInputObject__Bitmask_reserved1_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTSelectInputObject__Bitmask_reserved1_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTSelectInputObject__Bitmask_reserved1_oer_ext_arr_, 0, VTSelectInputObject__Bitmask_reserved1_oer_p_};
+const TTCN_Typedescriptor_t VTSelectInputObject__Bitmask_reserved1_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObject_Bitmask.reserved1", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTSelectInputObject__Bitmask_reserved1_xer_, &BOOLEAN_json_, &VTSelectInputObject__Bitmask_reserved1_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTSelectInputObject__Bitmask_reserved2_xer_ = { {"reserved2>\n", "reserved2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTSelectInputObject__Bitmask_reserved2_oer_ext_arr_[0] = {};
+const int VTSelectInputObject__Bitmask_reserved2_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTSelectInputObject__Bitmask_reserved2_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTSelectInputObject__Bitmask_reserved2_oer_ext_arr_, 0, VTSelectInputObject__Bitmask_reserved2_oer_p_};
+const TTCN_Typedescriptor_t VTSelectInputObject__Bitmask_reserved2_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObject_Bitmask.reserved2", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTSelectInputObject__Bitmask_reserved2_xer_, &BOOLEAN_json_, &VTSelectInputObject__Bitmask_reserved2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTSelectInputObject__Bitmask_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTSelectInputObject__Bitmask_reserved3_oer_ext_arr_[0] = {};
+const int VTSelectInputObject__Bitmask_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTSelectInputObject__Bitmask_reserved3_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTSelectInputObject__Bitmask_reserved3_oer_ext_arr_, 0, VTSelectInputObject__Bitmask_reserved3_oer_p_};
+const TTCN_Typedescriptor_t VTSelectInputObject__Bitmask_reserved3_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObject_Bitmask.reserved3", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTSelectInputObject__Bitmask_reserved3_xer_, &BOOLEAN_json_, &VTSelectInputObject__Bitmask_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTSelectInputObject__Bitmask_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTSelectInputObject__Bitmask_reserved4_oer_ext_arr_[0] = {};
+const int VTSelectInputObject__Bitmask_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTSelectInputObject__Bitmask_reserved4_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTSelectInputObject__Bitmask_reserved4_oer_ext_arr_, 0, VTSelectInputObject__Bitmask_reserved4_oer_p_};
+const TTCN_Typedescriptor_t VTSelectInputObject__Bitmask_reserved4_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObject_Bitmask.reserved4", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTSelectInputObject__Bitmask_reserved4_xer_, &BOOLEAN_json_, &VTSelectInputObject__Bitmask_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTSelectInputObject__Bitmask_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTSelectInputObject__Bitmask_reserved5_oer_ext_arr_[0] = {};
+const int VTSelectInputObject__Bitmask_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTSelectInputObject__Bitmask_reserved5_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTSelectInputObject__Bitmask_reserved5_oer_ext_arr_, 0, VTSelectInputObject__Bitmask_reserved5_oer_p_};
+const TTCN_Typedescriptor_t VTSelectInputObject__Bitmask_reserved5_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObject_Bitmask.reserved5", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTSelectInputObject__Bitmask_reserved5_xer_, &BOOLEAN_json_, &VTSelectInputObject__Bitmask_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTSelectInputObject__Bitmask_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTSelectInputObject__Bitmask_reserved6_oer_ext_arr_[0] = {};
+const int VTSelectInputObject__Bitmask_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTSelectInputObject__Bitmask_reserved6_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTSelectInputObject__Bitmask_reserved6_oer_ext_arr_, 0, VTSelectInputObject__Bitmask_reserved6_oer_p_};
+const TTCN_Typedescriptor_t VTSelectInputObject__Bitmask_reserved6_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObject_Bitmask.reserved6", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTSelectInputObject__Bitmask_reserved6_xer_, &BOOLEAN_json_, &VTSelectInputObject__Bitmask_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTSelectInputObject__Bitmask_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTSelectInputObject__Bitmask_reserved7_oer_ext_arr_[0] = {};
+const int VTSelectInputObject__Bitmask_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTSelectInputObject__Bitmask_reserved7_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTSelectInputObject__Bitmask_reserved7_oer_ext_arr_, 0, VTSelectInputObject__Bitmask_reserved7_oer_p_};
+const TTCN_Typedescriptor_t VTSelectInputObject__Bitmask_reserved7_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObject_Bitmask.reserved7", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTSelectInputObject__Bitmask_reserved7_xer_, &BOOLEAN_json_, &VTSelectInputObject__Bitmask_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTSelectInputObject__Bitmask_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for VTSelectInputObject__Bitmask
+const TTCN_Typedescriptor_t VTSelectInputObject__Bitmask_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObject_Bitmask", NULL, &VTSelectInputObject__Bitmask_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTSelectInputObject__v4AndLater__Bitmask_objectIsOpenForDataInput_xer_ = { {"objectIsOpenForDataInput>\n", "objectIsOpenForDataInput>\n"}, {26, 26}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTSelectInputObject__v4AndLater__Bitmask_objectIsOpenForDataInput_oer_ext_arr_[0] = {};
+const int VTSelectInputObject__v4AndLater__Bitmask_objectIsOpenForDataInput_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTSelectInputObject__v4AndLater__Bitmask_objectIsOpenForDataInput_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTSelectInputObject__v4AndLater__Bitmask_objectIsOpenForDataInput_oer_ext_arr_, 0, VTSelectInputObject__v4AndLater__Bitmask_objectIsOpenForDataInput_oer_p_};
+const TTCN_Typedescriptor_t VTSelectInputObject__v4AndLater__Bitmask_objectIsOpenForDataInput_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask.objectIsOpenForDataInput", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTSelectInputObject__v4AndLater__Bitmask_objectIsOpenForDataInput_xer_, &BOOLEAN_json_, &VTSelectInputObject__v4AndLater__Bitmask_objectIsOpenForDataInput_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTSelectInputObject__v4AndLater__Bitmask_reserved1_xer_ = { {"reserved1>\n", "reserved1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTSelectInputObject__v4AndLater__Bitmask_reserved1_oer_ext_arr_[0] = {};
+const int VTSelectInputObject__v4AndLater__Bitmask_reserved1_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTSelectInputObject__v4AndLater__Bitmask_reserved1_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTSelectInputObject__v4AndLater__Bitmask_reserved1_oer_ext_arr_, 0, VTSelectInputObject__v4AndLater__Bitmask_reserved1_oer_p_};
+const TTCN_Typedescriptor_t VTSelectInputObject__v4AndLater__Bitmask_reserved1_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask.reserved1", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTSelectInputObject__v4AndLater__Bitmask_reserved1_xer_, &BOOLEAN_json_, &VTSelectInputObject__v4AndLater__Bitmask_reserved1_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTSelectInputObject__v4AndLater__Bitmask_reserved2_xer_ = { {"reserved2>\n", "reserved2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTSelectInputObject__v4AndLater__Bitmask_reserved2_oer_ext_arr_[0] = {};
+const int VTSelectInputObject__v4AndLater__Bitmask_reserved2_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTSelectInputObject__v4AndLater__Bitmask_reserved2_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTSelectInputObject__v4AndLater__Bitmask_reserved2_oer_ext_arr_, 0, VTSelectInputObject__v4AndLater__Bitmask_reserved2_oer_p_};
+const TTCN_Typedescriptor_t VTSelectInputObject__v4AndLater__Bitmask_reserved2_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask.reserved2", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTSelectInputObject__v4AndLater__Bitmask_reserved2_xer_, &BOOLEAN_json_, &VTSelectInputObject__v4AndLater__Bitmask_reserved2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTSelectInputObject__v4AndLater__Bitmask_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTSelectInputObject__v4AndLater__Bitmask_reserved3_oer_ext_arr_[0] = {};
+const int VTSelectInputObject__v4AndLater__Bitmask_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTSelectInputObject__v4AndLater__Bitmask_reserved3_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTSelectInputObject__v4AndLater__Bitmask_reserved3_oer_ext_arr_, 0, VTSelectInputObject__v4AndLater__Bitmask_reserved3_oer_p_};
+const TTCN_Typedescriptor_t VTSelectInputObject__v4AndLater__Bitmask_reserved3_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask.reserved3", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTSelectInputObject__v4AndLater__Bitmask_reserved3_xer_, &BOOLEAN_json_, &VTSelectInputObject__v4AndLater__Bitmask_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTSelectInputObject__v4AndLater__Bitmask_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTSelectInputObject__v4AndLater__Bitmask_reserved4_oer_ext_arr_[0] = {};
+const int VTSelectInputObject__v4AndLater__Bitmask_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTSelectInputObject__v4AndLater__Bitmask_reserved4_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTSelectInputObject__v4AndLater__Bitmask_reserved4_oer_ext_arr_, 0, VTSelectInputObject__v4AndLater__Bitmask_reserved4_oer_p_};
+const TTCN_Typedescriptor_t VTSelectInputObject__v4AndLater__Bitmask_reserved4_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask.reserved4", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTSelectInputObject__v4AndLater__Bitmask_reserved4_xer_, &BOOLEAN_json_, &VTSelectInputObject__v4AndLater__Bitmask_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTSelectInputObject__v4AndLater__Bitmask_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTSelectInputObject__v4AndLater__Bitmask_reserved5_oer_ext_arr_[0] = {};
+const int VTSelectInputObject__v4AndLater__Bitmask_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTSelectInputObject__v4AndLater__Bitmask_reserved5_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTSelectInputObject__v4AndLater__Bitmask_reserved5_oer_ext_arr_, 0, VTSelectInputObject__v4AndLater__Bitmask_reserved5_oer_p_};
+const TTCN_Typedescriptor_t VTSelectInputObject__v4AndLater__Bitmask_reserved5_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask.reserved5", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTSelectInputObject__v4AndLater__Bitmask_reserved5_xer_, &BOOLEAN_json_, &VTSelectInputObject__v4AndLater__Bitmask_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTSelectInputObject__v4AndLater__Bitmask_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTSelectInputObject__v4AndLater__Bitmask_reserved6_oer_ext_arr_[0] = {};
+const int VTSelectInputObject__v4AndLater__Bitmask_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTSelectInputObject__v4AndLater__Bitmask_reserved6_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTSelectInputObject__v4AndLater__Bitmask_reserved6_oer_ext_arr_, 0, VTSelectInputObject__v4AndLater__Bitmask_reserved6_oer_p_};
+const TTCN_Typedescriptor_t VTSelectInputObject__v4AndLater__Bitmask_reserved6_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask.reserved6", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTSelectInputObject__v4AndLater__Bitmask_reserved6_xer_, &BOOLEAN_json_, &VTSelectInputObject__v4AndLater__Bitmask_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTSelectInputObject__v4AndLater__Bitmask_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTSelectInputObject__v4AndLater__Bitmask_reserved7_oer_ext_arr_[0] = {};
+const int VTSelectInputObject__v4AndLater__Bitmask_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTSelectInputObject__v4AndLater__Bitmask_reserved7_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTSelectInputObject__v4AndLater__Bitmask_reserved7_oer_ext_arr_, 0, VTSelectInputObject__v4AndLater__Bitmask_reserved7_oer_p_};
+const TTCN_Typedescriptor_t VTSelectInputObject__v4AndLater__Bitmask_reserved7_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask.reserved7", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTSelectInputObject__v4AndLater__Bitmask_reserved7_xer_, &BOOLEAN_json_, &VTSelectInputObject__v4AndLater__Bitmask_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTSelectInputObject__v4AndLater__Bitmask_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for VTSelectInputObject__v4AndLater__Bitmask
+const TTCN_Typedescriptor_t VTSelectInputObject__v4AndLater__Bitmask_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask", NULL, &VTSelectInputObject__v4AndLater__Bitmask_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTSelectInputObjectReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTSelectInputObjectReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTSelectInputObjectReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObjectReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &VTSelectInputObjectReq_vtfunction_xer_, &INTEGER_json_, &VTSelectInputObjectReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTSelectInputObjectReq_objectID_xer_ = { {"objectID>\n", "objectID>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTSelectInputObjectReq_objectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTSelectInputObjectReq_objectID_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObjectReq.objectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &VTSelectInputObjectReq_objectID_xer_, &INTEGER_json_, &VTSelectInputObjectReq_objectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTSelectInputObjectReq_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTSelectInputObjectReq_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTSelectInputObjectReq_reserved6_oer_ext_arr_[0] = {};
+const int VTSelectInputObjectReq_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTSelectInputObjectReq_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTSelectInputObjectReq_reserved6_oer_ext_arr_, 0, VTSelectInputObjectReq_reserved6_oer_p_};
+const TTCN_Typedescriptor_t VTSelectInputObjectReq_reserved6_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObjectReq.reserved6", &OCTETSTRING_ber_, &VTSelectInputObjectReq_reserved6_raw_, &OCTETSTRING_text_, &VTSelectInputObjectReq_reserved6_xer_, &OCTETSTRING_json_, &VTSelectInputObjectReq_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTSelectInputObjectReq_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTSelectInputObjectReq_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTSelectInputObjectReq_reserved7_oer_ext_arr_[0] = {};
+const int VTSelectInputObjectReq_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTSelectInputObjectReq_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTSelectInputObjectReq_reserved7_oer_ext_arr_, 0, VTSelectInputObjectReq_reserved7_oer_p_};
+const TTCN_Typedescriptor_t VTSelectInputObjectReq_reserved7_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObjectReq.reserved7", &OCTETSTRING_ber_, &VTSelectInputObjectReq_reserved7_raw_, &OCTETSTRING_text_, &VTSelectInputObjectReq_reserved7_xer_, &OCTETSTRING_json_, &VTSelectInputObjectReq_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTSelectInputObjectReq_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTSelectInputObjectReq_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTSelectInputObjectReq_reserved8_oer_ext_arr_[0] = {};
+const int VTSelectInputObjectReq_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTSelectInputObjectReq_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTSelectInputObjectReq_reserved8_oer_ext_arr_, 0, VTSelectInputObjectReq_reserved8_oer_p_};
+const TTCN_Typedescriptor_t VTSelectInputObjectReq_reserved8_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObjectReq.reserved8", &OCTETSTRING_ber_, &VTSelectInputObjectReq_reserved8_raw_, &OCTETSTRING_text_, &VTSelectInputObjectReq_reserved8_xer_, &OCTETSTRING_json_, &VTSelectInputObjectReq_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTSelectInputObjectReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for VTSelectInputObjectReq
+const TTCN_Typedescriptor_t VTSelectInputObjectReq_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObjectReq", NULL, &VTSelectInputObjectReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTSelectInputObjectReq__v3AndPrior_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTSelectInputObjectReq__v3AndPrior_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTSelectInputObjectReq__v3AndPrior_vtfunction_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &VTSelectInputObjectReq__v3AndPrior_vtfunction_xer_, &INTEGER_json_, &VTSelectInputObjectReq__v3AndPrior_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTSelectInputObjectReq__v3AndPrior_objectID_xer_ = { {"objectID>\n", "objectID>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTSelectInputObjectReq__v3AndPrior_objectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTSelectInputObjectReq__v3AndPrior_objectID_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior.objectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &VTSelectInputObjectReq__v3AndPrior_objectID_xer_, &INTEGER_json_, &VTSelectInputObjectReq__v3AndPrior_objectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTSelectInputObjectReq__v3AndPrior_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTSelectInputObjectReq__v3AndPrior_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTSelectInputObjectReq__v3AndPrior_reserved5_oer_ext_arr_[0] = {};
+const int VTSelectInputObjectReq__v3AndPrior_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTSelectInputObjectReq__v3AndPrior_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTSelectInputObjectReq__v3AndPrior_reserved5_oer_ext_arr_, 0, VTSelectInputObjectReq__v3AndPrior_reserved5_oer_p_};
+const TTCN_Typedescriptor_t VTSelectInputObjectReq__v3AndPrior_reserved5_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior.reserved5", &OCTETSTRING_ber_, &VTSelectInputObjectReq__v3AndPrior_reserved5_raw_, &OCTETSTRING_text_, &VTSelectInputObjectReq__v3AndPrior_reserved5_xer_, &OCTETSTRING_json_, &VTSelectInputObjectReq__v3AndPrior_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTSelectInputObjectReq__v3AndPrior_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTSelectInputObjectReq__v3AndPrior_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTSelectInputObjectReq__v3AndPrior_reserved6_oer_ext_arr_[0] = {};
+const int VTSelectInputObjectReq__v3AndPrior_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTSelectInputObjectReq__v3AndPrior_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTSelectInputObjectReq__v3AndPrior_reserved6_oer_ext_arr_, 0, VTSelectInputObjectReq__v3AndPrior_reserved6_oer_p_};
+const TTCN_Typedescriptor_t VTSelectInputObjectReq__v3AndPrior_reserved6_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior.reserved6", &OCTETSTRING_ber_, &VTSelectInputObjectReq__v3AndPrior_reserved6_raw_, &OCTETSTRING_text_, &VTSelectInputObjectReq__v3AndPrior_reserved6_xer_, &OCTETSTRING_json_, &VTSelectInputObjectReq__v3AndPrior_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTSelectInputObjectReq__v3AndPrior_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTSelectInputObjectReq__v3AndPrior_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTSelectInputObjectReq__v3AndPrior_reserved7_oer_ext_arr_[0] = {};
+const int VTSelectInputObjectReq__v3AndPrior_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTSelectInputObjectReq__v3AndPrior_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTSelectInputObjectReq__v3AndPrior_reserved7_oer_ext_arr_, 0, VTSelectInputObjectReq__v3AndPrior_reserved7_oer_p_};
+const TTCN_Typedescriptor_t VTSelectInputObjectReq__v3AndPrior_reserved7_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior.reserved7", &OCTETSTRING_ber_, &VTSelectInputObjectReq__v3AndPrior_reserved7_raw_, &OCTETSTRING_text_, &VTSelectInputObjectReq__v3AndPrior_reserved7_xer_, &OCTETSTRING_json_, &VTSelectInputObjectReq__v3AndPrior_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTSelectInputObjectReq__v3AndPrior_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTSelectInputObjectReq__v3AndPrior_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTSelectInputObjectReq__v3AndPrior_reserved8_oer_ext_arr_[0] = {};
+const int VTSelectInputObjectReq__v3AndPrior_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTSelectInputObjectReq__v3AndPrior_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTSelectInputObjectReq__v3AndPrior_reserved8_oer_ext_arr_, 0, VTSelectInputObjectReq__v3AndPrior_reserved8_oer_p_};
+const TTCN_Typedescriptor_t VTSelectInputObjectReq__v3AndPrior_reserved8_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior.reserved8", &OCTETSTRING_ber_, &VTSelectInputObjectReq__v3AndPrior_reserved8_raw_, &OCTETSTRING_text_, &VTSelectInputObjectReq__v3AndPrior_reserved8_xer_, &OCTETSTRING_json_, &VTSelectInputObjectReq__v3AndPrior_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTSelectInputObjectReq__v3AndPrior_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for VTSelectInputObjectReq__v3AndPrior
+const TTCN_Typedescriptor_t VTSelectInputObjectReq__v3AndPrior_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior", NULL, &VTSelectInputObjectReq__v3AndPrior_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTSelectInputObjectReq__v4AndLater_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTSelectInputObjectReq__v4AndLater_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTSelectInputObjectReq__v4AndLater_vtfunction_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObjectReq_v4AndLater.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &VTSelectInputObjectReq__v4AndLater_vtfunction_xer_, &INTEGER_json_, &VTSelectInputObjectReq__v4AndLater_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTSelectInputObjectReq__v4AndLater_objectID_xer_ = { {"objectID>\n", "objectID>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTSelectInputObjectReq__v4AndLater_objectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTSelectInputObjectReq__v4AndLater_objectID_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObjectReq_v4AndLater.objectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &VTSelectInputObjectReq__v4AndLater_objectID_xer_, &INTEGER_json_, &VTSelectInputObjectReq__v4AndLater_objectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTSelectInputObjectReq__v4AndLater_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTSelectInputObjectReq__v4AndLater_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTSelectInputObjectReq__v4AndLater_reserved6_oer_ext_arr_[0] = {};
+const int VTSelectInputObjectReq__v4AndLater_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTSelectInputObjectReq__v4AndLater_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTSelectInputObjectReq__v4AndLater_reserved6_oer_ext_arr_, 0, VTSelectInputObjectReq__v4AndLater_reserved6_oer_p_};
+const TTCN_Typedescriptor_t VTSelectInputObjectReq__v4AndLater_reserved6_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObjectReq_v4AndLater.reserved6", &OCTETSTRING_ber_, &VTSelectInputObjectReq__v4AndLater_reserved6_raw_, &OCTETSTRING_text_, &VTSelectInputObjectReq__v4AndLater_reserved6_xer_, &OCTETSTRING_json_, &VTSelectInputObjectReq__v4AndLater_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTSelectInputObjectReq__v4AndLater_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTSelectInputObjectReq__v4AndLater_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTSelectInputObjectReq__v4AndLater_reserved7_oer_ext_arr_[0] = {};
+const int VTSelectInputObjectReq__v4AndLater_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTSelectInputObjectReq__v4AndLater_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTSelectInputObjectReq__v4AndLater_reserved7_oer_ext_arr_, 0, VTSelectInputObjectReq__v4AndLater_reserved7_oer_p_};
+const TTCN_Typedescriptor_t VTSelectInputObjectReq__v4AndLater_reserved7_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObjectReq_v4AndLater.reserved7", &OCTETSTRING_ber_, &VTSelectInputObjectReq__v4AndLater_reserved7_raw_, &OCTETSTRING_text_, &VTSelectInputObjectReq__v4AndLater_reserved7_xer_, &OCTETSTRING_json_, &VTSelectInputObjectReq__v4AndLater_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTSelectInputObjectReq__v4AndLater_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTSelectInputObjectReq__v4AndLater_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTSelectInputObjectReq__v4AndLater_reserved8_oer_ext_arr_[0] = {};
+const int VTSelectInputObjectReq__v4AndLater_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTSelectInputObjectReq__v4AndLater_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTSelectInputObjectReq__v4AndLater_reserved8_oer_ext_arr_, 0, VTSelectInputObjectReq__v4AndLater_reserved8_oer_p_};
+const TTCN_Typedescriptor_t VTSelectInputObjectReq__v4AndLater_reserved8_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObjectReq_v4AndLater.reserved8", &OCTETSTRING_ber_, &VTSelectInputObjectReq__v4AndLater_reserved8_raw_, &OCTETSTRING_text_, &VTSelectInputObjectReq__v4AndLater_reserved8_xer_, &OCTETSTRING_json_, &VTSelectInputObjectReq__v4AndLater_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTSelectInputObjectReq__v4AndLater_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for VTSelectInputObjectReq__v4AndLater
+const TTCN_Typedescriptor_t VTSelectInputObjectReq__v4AndLater_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObjectReq_v4AndLater", NULL, &VTSelectInputObjectReq__v4AndLater_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTSelectInputObjectRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTSelectInputObjectRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTSelectInputObjectRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObjectRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &VTSelectInputObjectRes_vtfunction_xer_, &INTEGER_json_, &VTSelectInputObjectRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTSelectInputObjectRes_objectID_xer_ = { {"objectID>\n", "objectID>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTSelectInputObjectRes_objectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTSelectInputObjectRes_objectID_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObjectRes.objectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &VTSelectInputObjectRes_objectID_xer_, &INTEGER_json_, &VTSelectInputObjectRes_objectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTSelectInputObjectRes_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTSelectInputObjectRes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTSelectInputObjectRes_reserved6_oer_ext_arr_[0] = {};
+const int VTSelectInputObjectRes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTSelectInputObjectRes_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTSelectInputObjectRes_reserved6_oer_ext_arr_, 0, VTSelectInputObjectRes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t VTSelectInputObjectRes_reserved6_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObjectRes.reserved6", &OCTETSTRING_ber_, &VTSelectInputObjectRes_reserved6_raw_, &OCTETSTRING_text_, &VTSelectInputObjectRes_reserved6_xer_, &OCTETSTRING_json_, &VTSelectInputObjectRes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTSelectInputObjectRes_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTSelectInputObjectRes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTSelectInputObjectRes_reserved7_oer_ext_arr_[0] = {};
+const int VTSelectInputObjectRes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTSelectInputObjectRes_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTSelectInputObjectRes_reserved7_oer_ext_arr_, 0, VTSelectInputObjectRes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t VTSelectInputObjectRes_reserved7_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObjectRes.reserved7", &OCTETSTRING_ber_, &VTSelectInputObjectRes_reserved7_raw_, &OCTETSTRING_text_, &VTSelectInputObjectRes_reserved7_xer_, &OCTETSTRING_json_, &VTSelectInputObjectRes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTSelectInputObjectRes_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTSelectInputObjectRes_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTSelectInputObjectRes_reserved8_oer_ext_arr_[0] = {};
+const int VTSelectInputObjectRes_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTSelectInputObjectRes_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTSelectInputObjectRes_reserved8_oer_ext_arr_, 0, VTSelectInputObjectRes_reserved8_oer_p_};
+const TTCN_Typedescriptor_t VTSelectInputObjectRes_reserved8_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObjectRes.reserved8", &OCTETSTRING_ber_, &VTSelectInputObjectRes_reserved8_raw_, &OCTETSTRING_text_, &VTSelectInputObjectRes_reserved8_xer_, &OCTETSTRING_json_, &VTSelectInputObjectRes_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTSelectInputObjectRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for VTSelectInputObjectRes
+const TTCN_Typedescriptor_t VTSelectInputObjectRes_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObjectRes", NULL, &VTSelectInputObjectRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTSelectInputObjectRes__v4AndPrior_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTSelectInputObjectRes__v4AndPrior_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTSelectInputObjectRes__v4AndPrior_vtfunction_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &VTSelectInputObjectRes__v4AndPrior_vtfunction_xer_, &INTEGER_json_, &VTSelectInputObjectRes__v4AndPrior_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTSelectInputObjectRes__v4AndPrior_objectID_xer_ = { {"objectID>\n", "objectID>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTSelectInputObjectRes__v4AndPrior_objectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTSelectInputObjectRes__v4AndPrior_objectID_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior.objectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &VTSelectInputObjectRes__v4AndPrior_objectID_xer_, &INTEGER_json_, &VTSelectInputObjectRes__v4AndPrior_objectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTSelectInputObjectRes__v4AndPrior_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTSelectInputObjectRes__v4AndPrior_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTSelectInputObjectRes__v4AndPrior_reserved5_oer_ext_arr_[0] = {};
+const int VTSelectInputObjectRes__v4AndPrior_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTSelectInputObjectRes__v4AndPrior_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTSelectInputObjectRes__v4AndPrior_reserved5_oer_ext_arr_, 0, VTSelectInputObjectRes__v4AndPrior_reserved5_oer_p_};
+const TTCN_Typedescriptor_t VTSelectInputObjectRes__v4AndPrior_reserved5_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior.reserved5", &OCTETSTRING_ber_, &VTSelectInputObjectRes__v4AndPrior_reserved5_raw_, &OCTETSTRING_text_, &VTSelectInputObjectRes__v4AndPrior_reserved5_xer_, &OCTETSTRING_json_, &VTSelectInputObjectRes__v4AndPrior_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTSelectInputObjectRes__v4AndPrior_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTSelectInputObjectRes__v4AndPrior_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTSelectInputObjectRes__v4AndPrior_reserved6_oer_ext_arr_[0] = {};
+const int VTSelectInputObjectRes__v4AndPrior_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTSelectInputObjectRes__v4AndPrior_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTSelectInputObjectRes__v4AndPrior_reserved6_oer_ext_arr_, 0, VTSelectInputObjectRes__v4AndPrior_reserved6_oer_p_};
+const TTCN_Typedescriptor_t VTSelectInputObjectRes__v4AndPrior_reserved6_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior.reserved6", &OCTETSTRING_ber_, &VTSelectInputObjectRes__v4AndPrior_reserved6_raw_, &OCTETSTRING_text_, &VTSelectInputObjectRes__v4AndPrior_reserved6_xer_, &OCTETSTRING_json_, &VTSelectInputObjectRes__v4AndPrior_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTSelectInputObjectRes__v4AndPrior_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTSelectInputObjectRes__v4AndPrior_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTSelectInputObjectRes__v4AndPrior_reserved7_oer_ext_arr_[0] = {};
+const int VTSelectInputObjectRes__v4AndPrior_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTSelectInputObjectRes__v4AndPrior_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTSelectInputObjectRes__v4AndPrior_reserved7_oer_ext_arr_, 0, VTSelectInputObjectRes__v4AndPrior_reserved7_oer_p_};
+const TTCN_Typedescriptor_t VTSelectInputObjectRes__v4AndPrior_reserved7_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior.reserved7", &OCTETSTRING_ber_, &VTSelectInputObjectRes__v4AndPrior_reserved7_raw_, &OCTETSTRING_text_, &VTSelectInputObjectRes__v4AndPrior_reserved7_xer_, &OCTETSTRING_json_, &VTSelectInputObjectRes__v4AndPrior_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTSelectInputObjectRes__v4AndPrior_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTSelectInputObjectRes__v4AndPrior_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTSelectInputObjectRes__v4AndPrior_reserved8_oer_ext_arr_[0] = {};
+const int VTSelectInputObjectRes__v4AndPrior_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTSelectInputObjectRes__v4AndPrior_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTSelectInputObjectRes__v4AndPrior_reserved8_oer_ext_arr_, 0, VTSelectInputObjectRes__v4AndPrior_reserved8_oer_p_};
+const TTCN_Typedescriptor_t VTSelectInputObjectRes__v4AndPrior_reserved8_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior.reserved8", &OCTETSTRING_ber_, &VTSelectInputObjectRes__v4AndPrior_reserved8_raw_, &OCTETSTRING_text_, &VTSelectInputObjectRes__v4AndPrior_reserved8_xer_, &OCTETSTRING_json_, &VTSelectInputObjectRes__v4AndPrior_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTSelectInputObjectRes__v4AndPrior_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for VTSelectInputObjectRes__v4AndPrior
+const TTCN_Typedescriptor_t VTSelectInputObjectRes__v4AndPrior_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior", NULL, &VTSelectInputObjectRes__v4AndPrior_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTSelectInputObjectRes__v5AndLater_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTSelectInputObjectRes__v5AndLater_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTSelectInputObjectRes__v5AndLater_vtfunction_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObjectRes_v5AndLater.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &VTSelectInputObjectRes__v5AndLater_vtfunction_xer_, &INTEGER_json_, &VTSelectInputObjectRes__v5AndLater_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTSelectInputObjectRes__v5AndLater_objectID_xer_ = { {"objectID>\n", "objectID>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTSelectInputObjectRes__v5AndLater_objectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTSelectInputObjectRes__v5AndLater_objectID_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObjectRes_v5AndLater.objectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &VTSelectInputObjectRes__v5AndLater_objectID_xer_, &INTEGER_json_, &VTSelectInputObjectRes__v5AndLater_objectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTSelectInputObjectRes__v5AndLater_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTSelectInputObjectRes__v5AndLater_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTSelectInputObjectRes__v5AndLater_reserved6_oer_ext_arr_[0] = {};
+const int VTSelectInputObjectRes__v5AndLater_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTSelectInputObjectRes__v5AndLater_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTSelectInputObjectRes__v5AndLater_reserved6_oer_ext_arr_, 0, VTSelectInputObjectRes__v5AndLater_reserved6_oer_p_};
+const TTCN_Typedescriptor_t VTSelectInputObjectRes__v5AndLater_reserved6_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObjectRes_v5AndLater.reserved6", &OCTETSTRING_ber_, &VTSelectInputObjectRes__v5AndLater_reserved6_raw_, &OCTETSTRING_text_, &VTSelectInputObjectRes__v5AndLater_reserved6_xer_, &OCTETSTRING_json_, &VTSelectInputObjectRes__v5AndLater_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTSelectInputObjectRes__v5AndLater_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTSelectInputObjectRes__v5AndLater_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTSelectInputObjectRes__v5AndLater_reserved7_oer_ext_arr_[0] = {};
+const int VTSelectInputObjectRes__v5AndLater_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTSelectInputObjectRes__v5AndLater_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTSelectInputObjectRes__v5AndLater_reserved7_oer_ext_arr_, 0, VTSelectInputObjectRes__v5AndLater_reserved7_oer_p_};
+const TTCN_Typedescriptor_t VTSelectInputObjectRes__v5AndLater_reserved7_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObjectRes_v5AndLater.reserved7", &OCTETSTRING_ber_, &VTSelectInputObjectRes__v5AndLater_reserved7_raw_, &OCTETSTRING_text_, &VTSelectInputObjectRes__v5AndLater_reserved7_xer_, &OCTETSTRING_json_, &VTSelectInputObjectRes__v5AndLater_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTSelectInputObjectRes__v5AndLater_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTSelectInputObjectRes__v5AndLater_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTSelectInputObjectRes__v5AndLater_reserved8_oer_ext_arr_[0] = {};
+const int VTSelectInputObjectRes__v5AndLater_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTSelectInputObjectRes__v5AndLater_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTSelectInputObjectRes__v5AndLater_reserved8_oer_ext_arr_, 0, VTSelectInputObjectRes__v5AndLater_reserved8_oer_p_};
+const TTCN_Typedescriptor_t VTSelectInputObjectRes__v5AndLater_reserved8_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObjectRes_v5AndLater.reserved8", &OCTETSTRING_ber_, &VTSelectInputObjectRes__v5AndLater_reserved8_raw_, &OCTETSTRING_text_, &VTSelectInputObjectRes__v5AndLater_reserved8_xer_, &OCTETSTRING_json_, &VTSelectInputObjectRes__v5AndLater_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTSelectInputObjectRes__v5AndLater_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for VTSelectInputObjectRes__v5AndLater
+const TTCN_Typedescriptor_t VTSelectInputObjectRes__v5AndLater_descr_ = { "@IsobusVTMessageTypes.VTSelectInputObjectRes_v5AndLater", NULL, &VTSelectInputObjectRes__v5AndLater_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTESC__ErrorCodes_noInputFieldIsSelected_xer_ = { {"noInputFieldIsSelected>\n", "noInputFieldIsSelected>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTESC__ErrorCodes_noInputFieldIsSelected_oer_ext_arr_[0] = {};
+const int VTESC__ErrorCodes_noInputFieldIsSelected_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTESC__ErrorCodes_noInputFieldIsSelected_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTESC__ErrorCodes_noInputFieldIsSelected_oer_ext_arr_, 0, VTESC__ErrorCodes_noInputFieldIsSelected_oer_p_};
+const TTCN_Typedescriptor_t VTESC__ErrorCodes_noInputFieldIsSelected_descr_ = { "@IsobusVTMessageTypes.VTESC_ErrorCodes.noInputFieldIsSelected", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTESC__ErrorCodes_noInputFieldIsSelected_xer_, &BOOLEAN_json_, &VTESC__ErrorCodes_noInputFieldIsSelected_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTESC__ErrorCodes_reserved1_xer_ = { {"reserved1>\n", "reserved1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTESC__ErrorCodes_reserved1_oer_ext_arr_[0] = {};
+const int VTESC__ErrorCodes_reserved1_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTESC__ErrorCodes_reserved1_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTESC__ErrorCodes_reserved1_oer_ext_arr_, 0, VTESC__ErrorCodes_reserved1_oer_p_};
+const TTCN_Typedescriptor_t VTESC__ErrorCodes_reserved1_descr_ = { "@IsobusVTMessageTypes.VTESC_ErrorCodes.reserved1", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTESC__ErrorCodes_reserved1_xer_, &BOOLEAN_json_, &VTESC__ErrorCodes_reserved1_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTESC__ErrorCodes_reserved2_xer_ = { {"reserved2>\n", "reserved2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTESC__ErrorCodes_reserved2_oer_ext_arr_[0] = {};
+const int VTESC__ErrorCodes_reserved2_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTESC__ErrorCodes_reserved2_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTESC__ErrorCodes_reserved2_oer_ext_arr_, 0, VTESC__ErrorCodes_reserved2_oer_p_};
+const TTCN_Typedescriptor_t VTESC__ErrorCodes_reserved2_descr_ = { "@IsobusVTMessageTypes.VTESC_ErrorCodes.reserved2", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTESC__ErrorCodes_reserved2_xer_, &BOOLEAN_json_, &VTESC__ErrorCodes_reserved2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTESC__ErrorCodes_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTESC__ErrorCodes_reserved3_oer_ext_arr_[0] = {};
+const int VTESC__ErrorCodes_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTESC__ErrorCodes_reserved3_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTESC__ErrorCodes_reserved3_oer_ext_arr_, 0, VTESC__ErrorCodes_reserved3_oer_p_};
+const TTCN_Typedescriptor_t VTESC__ErrorCodes_reserved3_descr_ = { "@IsobusVTMessageTypes.VTESC_ErrorCodes.reserved3", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTESC__ErrorCodes_reserved3_xer_, &BOOLEAN_json_, &VTESC__ErrorCodes_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTESC__ErrorCodes_anyOtherError_xer_ = { {"anyOtherError>\n", "anyOtherError>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTESC__ErrorCodes_anyOtherError_oer_ext_arr_[0] = {};
+const int VTESC__ErrorCodes_anyOtherError_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTESC__ErrorCodes_anyOtherError_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTESC__ErrorCodes_anyOtherError_oer_ext_arr_, 0, VTESC__ErrorCodes_anyOtherError_oer_p_};
+const TTCN_Typedescriptor_t VTESC__ErrorCodes_anyOtherError_descr_ = { "@IsobusVTMessageTypes.VTESC_ErrorCodes.anyOtherError", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTESC__ErrorCodes_anyOtherError_xer_, &BOOLEAN_json_, &VTESC__ErrorCodes_anyOtherError_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTESC__ErrorCodes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTESC__ErrorCodes_reserved5_oer_ext_arr_[0] = {};
+const int VTESC__ErrorCodes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTESC__ErrorCodes_reserved5_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTESC__ErrorCodes_reserved5_oer_ext_arr_, 0, VTESC__ErrorCodes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t VTESC__ErrorCodes_reserved5_descr_ = { "@IsobusVTMessageTypes.VTESC_ErrorCodes.reserved5", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTESC__ErrorCodes_reserved5_xer_, &BOOLEAN_json_, &VTESC__ErrorCodes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTESC__ErrorCodes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTESC__ErrorCodes_reserved6_oer_ext_arr_[0] = {};
+const int VTESC__ErrorCodes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTESC__ErrorCodes_reserved6_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTESC__ErrorCodes_reserved6_oer_ext_arr_, 0, VTESC__ErrorCodes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t VTESC__ErrorCodes_reserved6_descr_ = { "@IsobusVTMessageTypes.VTESC_ErrorCodes.reserved6", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTESC__ErrorCodes_reserved6_xer_, &BOOLEAN_json_, &VTESC__ErrorCodes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTESC__ErrorCodes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTESC__ErrorCodes_reserved7_oer_ext_arr_[0] = {};
+const int VTESC__ErrorCodes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTESC__ErrorCodes_reserved7_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTESC__ErrorCodes_reserved7_oer_ext_arr_, 0, VTESC__ErrorCodes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t VTESC__ErrorCodes_reserved7_descr_ = { "@IsobusVTMessageTypes.VTESC_ErrorCodes.reserved7", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTESC__ErrorCodes_reserved7_xer_, &BOOLEAN_json_, &VTESC__ErrorCodes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTESC__ErrorCodes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for VTESC__ErrorCodes
+const TTCN_Typedescriptor_t VTESC__ErrorCodes_descr_ = { "@IsobusVTMessageTypes.VTESC_ErrorCodes", NULL, &VTESC__ErrorCodes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTESCReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTESCReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTESCReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.VTESCReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &VTESCReq_vtfunction_xer_, &INTEGER_json_, &VTESCReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTESCReq_objectID_xer_ = { {"objectID>\n", "objectID>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTESCReq_objectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTESCReq_objectID_descr_ = { "@IsobusVTMessageTypes.VTESCReq.objectID", &INTEGER_ber_, &AnyObjectID_raw_, &INTEGER_text_, &VTESCReq_objectID_xer_, &INTEGER_json_, &VTESCReq_objectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTESCReq_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTESCReq_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTESCReq_reserved5_oer_ext_arr_[0] = {};
+const int VTESCReq_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTESCReq_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTESCReq_reserved5_oer_ext_arr_, 0, VTESCReq_reserved5_oer_p_};
+const TTCN_Typedescriptor_t VTESCReq_reserved5_descr_ = { "@IsobusVTMessageTypes.VTESCReq.reserved5", &OCTETSTRING_ber_, &VTESCReq_reserved5_raw_, &OCTETSTRING_text_, &VTESCReq_reserved5_xer_, &OCTETSTRING_json_, &VTESCReq_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTESCReq_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTESCReq_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTESCReq_reserved6_oer_ext_arr_[0] = {};
+const int VTESCReq_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTESCReq_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTESCReq_reserved6_oer_ext_arr_, 0, VTESCReq_reserved6_oer_p_};
+const TTCN_Typedescriptor_t VTESCReq_reserved6_descr_ = { "@IsobusVTMessageTypes.VTESCReq.reserved6", &OCTETSTRING_ber_, &VTESCReq_reserved6_raw_, &OCTETSTRING_text_, &VTESCReq_reserved6_xer_, &OCTETSTRING_json_, &VTESCReq_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTESCReq_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTESCReq_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTESCReq_reserved7_oer_ext_arr_[0] = {};
+const int VTESCReq_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTESCReq_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTESCReq_reserved7_oer_ext_arr_, 0, VTESCReq_reserved7_oer_p_};
+const TTCN_Typedescriptor_t VTESCReq_reserved7_descr_ = { "@IsobusVTMessageTypes.VTESCReq.reserved7", &OCTETSTRING_ber_, &VTESCReq_reserved7_raw_, &OCTETSTRING_text_, &VTESCReq_reserved7_xer_, &OCTETSTRING_json_, &VTESCReq_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTESCReq_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTESCReq_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTESCReq_reserved8_oer_ext_arr_[0] = {};
+const int VTESCReq_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTESCReq_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTESCReq_reserved8_oer_ext_arr_, 0, VTESCReq_reserved8_oer_p_};
+const TTCN_Typedescriptor_t VTESCReq_reserved8_descr_ = { "@IsobusVTMessageTypes.VTESCReq.reserved8", &OCTETSTRING_ber_, &VTESCReq_reserved8_raw_, &OCTETSTRING_text_, &VTESCReq_reserved8_xer_, &OCTETSTRING_json_, &VTESCReq_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTESCReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for VTESCReq
+const TTCN_Typedescriptor_t VTESCReq_descr_ = { "@IsobusVTMessageTypes.VTESCReq", NULL, &VTESCReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTESCRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTESCRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTESCRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.VTESCRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &VTESCRes_vtfunction_xer_, &INTEGER_json_, &VTESCRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTESCRes_objectID_xer_ = { {"objectID>\n", "objectID>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTESCRes_objectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTESCRes_objectID_descr_ = { "@IsobusVTMessageTypes.VTESCRes.objectID", &INTEGER_ber_, &AnyObjectID_raw_, &INTEGER_text_, &VTESCRes_objectID_xer_, &INTEGER_json_, &VTESCRes_objectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTESCRes_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTESCRes_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTESCRes_reserved4_oer_ext_arr_[0] = {};
+const int VTESCRes_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTESCRes_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTESCRes_reserved4_oer_ext_arr_, 0, VTESCRes_reserved4_oer_p_};
+const TTCN_Typedescriptor_t VTESCRes_reserved4_descr_ = { "@IsobusVTMessageTypes.VTESCRes.reserved4", &OCTETSTRING_ber_, &VTESCRes_reserved4_raw_, &OCTETSTRING_text_, &VTESCRes_reserved4_xer_, &OCTETSTRING_json_, &VTESCRes_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTESCRes_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTESCRes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTESCRes_reserved5_oer_ext_arr_[0] = {};
+const int VTESCRes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTESCRes_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTESCRes_reserved5_oer_ext_arr_, 0, VTESCRes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t VTESCRes_reserved5_descr_ = { "@IsobusVTMessageTypes.VTESCRes.reserved5", &OCTETSTRING_ber_, &VTESCRes_reserved5_raw_, &OCTETSTRING_text_, &VTESCRes_reserved5_xer_, &OCTETSTRING_json_, &VTESCRes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTESCRes_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTESCRes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTESCRes_reserved6_oer_ext_arr_[0] = {};
+const int VTESCRes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTESCRes_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTESCRes_reserved6_oer_ext_arr_, 0, VTESCRes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t VTESCRes_reserved6_descr_ = { "@IsobusVTMessageTypes.VTESCRes.reserved6", &OCTETSTRING_ber_, &VTESCRes_reserved6_raw_, &OCTETSTRING_text_, &VTESCRes_reserved6_xer_, &OCTETSTRING_json_, &VTESCRes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTESCRes_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTESCRes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTESCRes_reserved7_oer_ext_arr_[0] = {};
+const int VTESCRes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTESCRes_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTESCRes_reserved7_oer_ext_arr_, 0, VTESCRes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t VTESCRes_reserved7_descr_ = { "@IsobusVTMessageTypes.VTESCRes.reserved7", &OCTETSTRING_ber_, &VTESCRes_reserved7_raw_, &OCTETSTRING_text_, &VTESCRes_reserved7_xer_, &OCTETSTRING_json_, &VTESCRes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTESCRes_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTESCRes_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTESCRes_reserved8_oer_ext_arr_[0] = {};
+const int VTESCRes_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTESCRes_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTESCRes_reserved8_oer_ext_arr_, 0, VTESCRes_reserved8_oer_p_};
+const TTCN_Typedescriptor_t VTESCRes_reserved8_descr_ = { "@IsobusVTMessageTypes.VTESCRes.reserved8", &OCTETSTRING_ber_, &VTESCRes_reserved8_raw_, &OCTETSTRING_text_, &VTESCRes_reserved8_xer_, &OCTETSTRING_json_, &VTESCRes_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTESCRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for VTESCRes
+const TTCN_Typedescriptor_t VTESCRes_descr_ = { "@IsobusVTMessageTypes.VTESCRes", NULL, &VTESCRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTChangeNumericValueReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTChangeNumericValueReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTChangeNumericValueReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.VTChangeNumericValueReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &VTChangeNumericValueReq_vtfunction_xer_, &INTEGER_json_, &VTChangeNumericValueReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTChangeNumericValueReq_objectID_xer_ = { {"objectID>\n", "objectID>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTChangeNumericValueReq_objectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTChangeNumericValueReq_objectID_descr_ = { "@IsobusVTMessageTypes.VTChangeNumericValueReq.objectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &VTChangeNumericValueReq_objectID_xer_, &INTEGER_json_, &VTChangeNumericValueReq_objectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTChangeNumericValueReq_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTChangeNumericValueReq_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTChangeNumericValueReq_reserved4_oer_ext_arr_[0] = {};
+const int VTChangeNumericValueReq_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTChangeNumericValueReq_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTChangeNumericValueReq_reserved4_oer_ext_arr_, 0, VTChangeNumericValueReq_reserved4_oer_p_};
+const TTCN_Typedescriptor_t VTChangeNumericValueReq_reserved4_descr_ = { "@IsobusVTMessageTypes.VTChangeNumericValueReq.reserved4", &OCTETSTRING_ber_, &VTChangeNumericValueReq_reserved4_raw_, &OCTETSTRING_text_, &VTChangeNumericValueReq_reserved4_xer_, &OCTETSTRING_json_, &VTChangeNumericValueReq_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTChangeNumericValueReq_value___xer_ = { {"value_>\n", "value_>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTChangeNumericValueReq_value___oer_ext_arr_[0] = {};
+const int VTChangeNumericValueReq_value___oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTChangeNumericValueReq_value___oer_ = { -1, TRUE, 4, FALSE, 0, 0, VTChangeNumericValueReq_value___oer_ext_arr_, 0, VTChangeNumericValueReq_value___oer_p_};
+const TTCN_Typedescriptor_t VTChangeNumericValueReq_value___descr_ = { "@IsobusVTMessageTypes.VTChangeNumericValueReq.value_", &OCTETSTRING_ber_, &General__Types::OCT4_raw_, &OCTETSTRING_text_, &VTChangeNumericValueReq_value___xer_, &OCTETSTRING_json_, &VTChangeNumericValueReq_value___oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTChangeNumericValueReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for VTChangeNumericValueReq
+const TTCN_Typedescriptor_t VTChangeNumericValueReq_descr_ = { "@IsobusVTMessageTypes.VTChangeNumericValueReq", NULL, &VTChangeNumericValueReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTChangeNumericValueRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTChangeNumericValueRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTChangeNumericValueRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.VTChangeNumericValueRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &VTChangeNumericValueRes_vtfunction_xer_, &INTEGER_json_, &VTChangeNumericValueRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTChangeNumericValueRes_objectID_xer_ = { {"objectID>\n", "objectID>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTChangeNumericValueRes_objectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTChangeNumericValueRes_objectID_descr_ = { "@IsobusVTMessageTypes.VTChangeNumericValueRes.objectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &VTChangeNumericValueRes_objectID_xer_, &INTEGER_json_, &VTChangeNumericValueRes_objectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTChangeNumericValueRes_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTChangeNumericValueRes_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTChangeNumericValueRes_reserved4_oer_ext_arr_[0] = {};
+const int VTChangeNumericValueRes_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTChangeNumericValueRes_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTChangeNumericValueRes_reserved4_oer_ext_arr_, 0, VTChangeNumericValueRes_reserved4_oer_p_};
+const TTCN_Typedescriptor_t VTChangeNumericValueRes_reserved4_descr_ = { "@IsobusVTMessageTypes.VTChangeNumericValueRes.reserved4", &OCTETSTRING_ber_, &VTChangeNumericValueRes_reserved4_raw_, &OCTETSTRING_text_, &VTChangeNumericValueRes_reserved4_xer_, &OCTETSTRING_json_, &VTChangeNumericValueRes_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTChangeNumericValueRes_value___xer_ = { {"value_>\n", "value_>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTChangeNumericValueRes_value___oer_ext_arr_[0] = {};
+const int VTChangeNumericValueRes_value___oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTChangeNumericValueRes_value___oer_ = { -1, TRUE, 4, FALSE, 0, 0, VTChangeNumericValueRes_value___oer_ext_arr_, 0, VTChangeNumericValueRes_value___oer_p_};
+const TTCN_Typedescriptor_t VTChangeNumericValueRes_value___descr_ = { "@IsobusVTMessageTypes.VTChangeNumericValueRes.value_", &OCTETSTRING_ber_, &General__Types::OCT4_raw_, &OCTETSTRING_text_, &VTChangeNumericValueRes_value___xer_, &OCTETSTRING_json_, &VTChangeNumericValueRes_value___oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTChangeNumericValueRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for VTChangeNumericValueRes
+const TTCN_Typedescriptor_t VTChangeNumericValueRes_descr_ = { "@IsobusVTMessageTypes.VTChangeNumericValueRes", NULL, &VTChangeNumericValueRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTChangeActiveMasErrorcodes_reserved0_xer_ = { {"reserved0>\n", "reserved0>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTChangeActiveMasErrorcodes_reserved0_oer_ext_arr_[0] = {};
+const int VTChangeActiveMasErrorcodes_reserved0_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTChangeActiveMasErrorcodes_reserved0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTChangeActiveMasErrorcodes_reserved0_oer_ext_arr_, 0, VTChangeActiveMasErrorcodes_reserved0_oer_p_};
+const TTCN_Typedescriptor_t VTChangeActiveMasErrorcodes_reserved0_descr_ = { "@IsobusVTMessageTypes.VTChangeActiveMasErrorcodes.reserved0", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTChangeActiveMasErrorcodes_reserved0_xer_, &BOOLEAN_json_, &VTChangeActiveMasErrorcodes_reserved0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTChangeActiveMasErrorcodes_reserved1_xer_ = { {"reserved1>\n", "reserved1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTChangeActiveMasErrorcodes_reserved1_oer_ext_arr_[0] = {};
+const int VTChangeActiveMasErrorcodes_reserved1_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTChangeActiveMasErrorcodes_reserved1_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTChangeActiveMasErrorcodes_reserved1_oer_ext_arr_, 0, VTChangeActiveMasErrorcodes_reserved1_oer_p_};
+const TTCN_Typedescriptor_t VTChangeActiveMasErrorcodes_reserved1_descr_ = { "@IsobusVTMessageTypes.VTChangeActiveMasErrorcodes.reserved1", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTChangeActiveMasErrorcodes_reserved1_xer_, &BOOLEAN_json_, &VTChangeActiveMasErrorcodes_reserved1_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTChangeActiveMasErrorcodes_missingObjects_xer_ = { {"missingObjects>\n", "missingObjects>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTChangeActiveMasErrorcodes_missingObjects_oer_ext_arr_[0] = {};
+const int VTChangeActiveMasErrorcodes_missingObjects_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTChangeActiveMasErrorcodes_missingObjects_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTChangeActiveMasErrorcodes_missingObjects_oer_ext_arr_, 0, VTChangeActiveMasErrorcodes_missingObjects_oer_p_};
+const TTCN_Typedescriptor_t VTChangeActiveMasErrorcodes_missingObjects_descr_ = { "@IsobusVTMessageTypes.VTChangeActiveMasErrorcodes.missingObjects", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTChangeActiveMasErrorcodes_missingObjects_xer_, &BOOLEAN_json_, &VTChangeActiveMasErrorcodes_missingObjects_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTChangeActiveMasErrorcodes_maskOrChildObjectHasErrors_xer_ = { {"maskOrChildObjectHasErrors>\n", "maskOrChildObjectHasErrors>\n"}, {28, 28}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTChangeActiveMasErrorcodes_maskOrChildObjectHasErrors_oer_ext_arr_[0] = {};
+const int VTChangeActiveMasErrorcodes_maskOrChildObjectHasErrors_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTChangeActiveMasErrorcodes_maskOrChildObjectHasErrors_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTChangeActiveMasErrorcodes_maskOrChildObjectHasErrors_oer_ext_arr_, 0, VTChangeActiveMasErrorcodes_maskOrChildObjectHasErrors_oer_p_};
+const TTCN_Typedescriptor_t VTChangeActiveMasErrorcodes_maskOrChildObjectHasErrors_descr_ = { "@IsobusVTMessageTypes.VTChangeActiveMasErrorcodes.maskOrChildObjectHasErrors", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTChangeActiveMasErrorcodes_maskOrChildObjectHasErrors_xer_, &BOOLEAN_json_, &VTChangeActiveMasErrorcodes_maskOrChildObjectHasErrors_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTChangeActiveMasErrorcodes_anyOtherError_xer_ = { {"anyOtherError>\n", "anyOtherError>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTChangeActiveMasErrorcodes_anyOtherError_oer_ext_arr_[0] = {};
+const int VTChangeActiveMasErrorcodes_anyOtherError_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTChangeActiveMasErrorcodes_anyOtherError_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTChangeActiveMasErrorcodes_anyOtherError_oer_ext_arr_, 0, VTChangeActiveMasErrorcodes_anyOtherError_oer_p_};
+const TTCN_Typedescriptor_t VTChangeActiveMasErrorcodes_anyOtherError_descr_ = { "@IsobusVTMessageTypes.VTChangeActiveMasErrorcodes.anyOtherError", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTChangeActiveMasErrorcodes_anyOtherError_xer_, &BOOLEAN_json_, &VTChangeActiveMasErrorcodes_anyOtherError_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTChangeActiveMasErrorcodes_poolBeingDeleted_xer_ = { {"poolBeingDeleted>\n", "poolBeingDeleted>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTChangeActiveMasErrorcodes_poolBeingDeleted_oer_ext_arr_[0] = {};
+const int VTChangeActiveMasErrorcodes_poolBeingDeleted_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTChangeActiveMasErrorcodes_poolBeingDeleted_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTChangeActiveMasErrorcodes_poolBeingDeleted_oer_ext_arr_, 0, VTChangeActiveMasErrorcodes_poolBeingDeleted_oer_p_};
+const TTCN_Typedescriptor_t VTChangeActiveMasErrorcodes_poolBeingDeleted_descr_ = { "@IsobusVTMessageTypes.VTChangeActiveMasErrorcodes.poolBeingDeleted", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTChangeActiveMasErrorcodes_poolBeingDeleted_xer_, &BOOLEAN_json_, &VTChangeActiveMasErrorcodes_poolBeingDeleted_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTChangeActiveMasErrorcodes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTChangeActiveMasErrorcodes_reserved6_oer_ext_arr_[0] = {};
+const int VTChangeActiveMasErrorcodes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTChangeActiveMasErrorcodes_reserved6_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTChangeActiveMasErrorcodes_reserved6_oer_ext_arr_, 0, VTChangeActiveMasErrorcodes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t VTChangeActiveMasErrorcodes_reserved6_descr_ = { "@IsobusVTMessageTypes.VTChangeActiveMasErrorcodes.reserved6", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTChangeActiveMasErrorcodes_reserved6_xer_, &BOOLEAN_json_, &VTChangeActiveMasErrorcodes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTChangeActiveMasErrorcodes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTChangeActiveMasErrorcodes_reserved7_oer_ext_arr_[0] = {};
+const int VTChangeActiveMasErrorcodes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTChangeActiveMasErrorcodes_reserved7_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTChangeActiveMasErrorcodes_reserved7_oer_ext_arr_, 0, VTChangeActiveMasErrorcodes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t VTChangeActiveMasErrorcodes_reserved7_descr_ = { "@IsobusVTMessageTypes.VTChangeActiveMasErrorcodes.reserved7", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTChangeActiveMasErrorcodes_reserved7_xer_, &BOOLEAN_json_, &VTChangeActiveMasErrorcodes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTChangeActiveMasErrorcodes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for VTChangeActiveMasErrorcodes
+const TTCN_Typedescriptor_t VTChangeActiveMasErrorcodes_descr_ = { "@IsobusVTMessageTypes.VTChangeActiveMasErrorcodes", NULL, &VTChangeActiveMasErrorcodes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTChangeActiveMaskReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTChangeActiveMaskReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTChangeActiveMaskReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.VTChangeActiveMaskReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &VTChangeActiveMaskReq_vtfunction_xer_, &INTEGER_json_, &VTChangeActiveMaskReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTChangeActiveMaskReq_activeMaskOrWindowMaskOrKeyGroupObjectID_xer_ = { {"activeMaskOrWindowMaskOrKeyGroupObjectID>\n", "activeMaskOrWindowMaskOrKeyGroupObjectID>\n"}, {42, 42}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTChangeActiveMaskReq_activeMaskOrWindowMaskOrKeyGroupObjectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTChangeActiveMaskReq_activeMaskOrWindowMaskOrKeyGroupObjectID_descr_ = { "@IsobusVTMessageTypes.VTChangeActiveMaskReq.activeMaskOrWindowMaskOrKeyGroupObjectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &VTChangeActiveMaskReq_activeMaskOrWindowMaskOrKeyGroupObjectID_xer_, &INTEGER_json_, &VTChangeActiveMaskReq_activeMaskOrWindowMaskOrKeyGroupObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTChangeActiveMaskReq_objectIDcontainingError_xer_ = { {"objectIDcontainingError>\n", "objectIDcontainingError>\n"}, {25, 25}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTChangeActiveMaskReq_objectIDcontainingError_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTChangeActiveMaskReq_objectIDcontainingError_descr_ = { "@IsobusVTMessageTypes.VTChangeActiveMaskReq.objectIDcontainingError", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &VTChangeActiveMaskReq_objectIDcontainingError_xer_, &INTEGER_json_, &VTChangeActiveMaskReq_objectIDcontainingError_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTChangeActiveMaskReq_parentObjectIDofErrorObjectID_xer_ = { {"parentObjectIDofErrorObjectID>\n", "parentObjectIDofErrorObjectID>\n"}, {31, 31}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTChangeActiveMaskReq_parentObjectIDofErrorObjectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTChangeActiveMaskReq_parentObjectIDofErrorObjectID_descr_ = { "@IsobusVTMessageTypes.VTChangeActiveMaskReq.parentObjectIDofErrorObjectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &VTChangeActiveMaskReq_parentObjectIDofErrorObjectID_xer_, &INTEGER_json_, &VTChangeActiveMaskReq_parentObjectIDofErrorObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTChangeActiveMaskReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for VTChangeActiveMaskReq
+const TTCN_Typedescriptor_t VTChangeActiveMaskReq_descr_ = { "@IsobusVTMessageTypes.VTChangeActiveMaskReq", NULL, &VTChangeActiveMaskReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTChangeActiveMaskRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTChangeActiveMaskRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTChangeActiveMaskRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.VTChangeActiveMaskRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &VTChangeActiveMaskRes_vtfunction_xer_, &INTEGER_json_, &VTChangeActiveMaskRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTChangeActiveMaskRes_activeMaskObjectID_xer_ = { {"activeMaskObjectID>\n", "activeMaskObjectID>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTChangeActiveMaskRes_activeMaskObjectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTChangeActiveMaskRes_activeMaskObjectID_descr_ = { "@IsobusVTMessageTypes.VTChangeActiveMaskRes.activeMaskObjectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &VTChangeActiveMaskRes_activeMaskObjectID_xer_, &INTEGER_json_, &VTChangeActiveMaskRes_activeMaskObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTChangeActiveMaskRes_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTChangeActiveMaskRes_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTChangeActiveMaskRes_reserved4_oer_ext_arr_[0] = {};
+const int VTChangeActiveMaskRes_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTChangeActiveMaskRes_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTChangeActiveMaskRes_reserved4_oer_ext_arr_, 0, VTChangeActiveMaskRes_reserved4_oer_p_};
+const TTCN_Typedescriptor_t VTChangeActiveMaskRes_reserved4_descr_ = { "@IsobusVTMessageTypes.VTChangeActiveMaskRes.reserved4", &OCTETSTRING_ber_, &VTChangeActiveMaskRes_reserved4_raw_, &OCTETSTRING_text_, &VTChangeActiveMaskRes_reserved4_xer_, &OCTETSTRING_json_, &VTChangeActiveMaskRes_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTChangeActiveMaskRes_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTChangeActiveMaskRes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTChangeActiveMaskRes_reserved5_oer_ext_arr_[0] = {};
+const int VTChangeActiveMaskRes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTChangeActiveMaskRes_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTChangeActiveMaskRes_reserved5_oer_ext_arr_, 0, VTChangeActiveMaskRes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t VTChangeActiveMaskRes_reserved5_descr_ = { "@IsobusVTMessageTypes.VTChangeActiveMaskRes.reserved5", &OCTETSTRING_ber_, &VTChangeActiveMaskRes_reserved5_raw_, &OCTETSTRING_text_, &VTChangeActiveMaskRes_reserved5_xer_, &OCTETSTRING_json_, &VTChangeActiveMaskRes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTChangeActiveMaskRes_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTChangeActiveMaskRes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTChangeActiveMaskRes_reserved6_oer_ext_arr_[0] = {};
+const int VTChangeActiveMaskRes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTChangeActiveMaskRes_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTChangeActiveMaskRes_reserved6_oer_ext_arr_, 0, VTChangeActiveMaskRes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t VTChangeActiveMaskRes_reserved6_descr_ = { "@IsobusVTMessageTypes.VTChangeActiveMaskRes.reserved6", &OCTETSTRING_ber_, &VTChangeActiveMaskRes_reserved6_raw_, &OCTETSTRING_text_, &VTChangeActiveMaskRes_reserved6_xer_, &OCTETSTRING_json_, &VTChangeActiveMaskRes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTChangeActiveMaskRes_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTChangeActiveMaskRes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTChangeActiveMaskRes_reserved7_oer_ext_arr_[0] = {};
+const int VTChangeActiveMaskRes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTChangeActiveMaskRes_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTChangeActiveMaskRes_reserved7_oer_ext_arr_, 0, VTChangeActiveMaskRes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t VTChangeActiveMaskRes_reserved7_descr_ = { "@IsobusVTMessageTypes.VTChangeActiveMaskRes.reserved7", &OCTETSTRING_ber_, &VTChangeActiveMaskRes_reserved7_raw_, &OCTETSTRING_text_, &VTChangeActiveMaskRes_reserved7_xer_, &OCTETSTRING_json_, &VTChangeActiveMaskRes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTChangeActiveMaskRes_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTChangeActiveMaskRes_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTChangeActiveMaskRes_reserved8_oer_ext_arr_[0] = {};
+const int VTChangeActiveMaskRes_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTChangeActiveMaskRes_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTChangeActiveMaskRes_reserved8_oer_ext_arr_, 0, VTChangeActiveMaskRes_reserved8_oer_p_};
+const TTCN_Typedescriptor_t VTChangeActiveMaskRes_reserved8_descr_ = { "@IsobusVTMessageTypes.VTChangeActiveMaskRes.reserved8", &OCTETSTRING_ber_, &VTChangeActiveMaskRes_reserved8_raw_, &OCTETSTRING_text_, &VTChangeActiveMaskRes_reserved8_xer_, &OCTETSTRING_json_, &VTChangeActiveMaskRes_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTChangeActiveMaskRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for VTChangeActiveMaskRes
+const TTCN_Typedescriptor_t VTChangeActiveMaskRes_descr_ = { "@IsobusVTMessageTypes.VTChangeActiveMaskRes", NULL, &VTChangeActiveMaskRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTChangeSoftKeyMaskErrorCodes_reserved0_xer_ = { {"reserved0>\n", "reserved0>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTChangeSoftKeyMaskErrorCodes_reserved0_oer_ext_arr_[0] = {};
+const int VTChangeSoftKeyMaskErrorCodes_reserved0_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTChangeSoftKeyMaskErrorCodes_reserved0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTChangeSoftKeyMaskErrorCodes_reserved0_oer_ext_arr_, 0, VTChangeSoftKeyMaskErrorCodes_reserved0_oer_p_};
+const TTCN_Typedescriptor_t VTChangeSoftKeyMaskErrorCodes_reserved0_descr_ = { "@IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes.reserved0", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTChangeSoftKeyMaskErrorCodes_reserved0_xer_, &BOOLEAN_json_, &VTChangeSoftKeyMaskErrorCodes_reserved0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTChangeSoftKeyMaskErrorCodes_reserved1_xer_ = { {"reserved1>\n", "reserved1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTChangeSoftKeyMaskErrorCodes_reserved1_oer_ext_arr_[0] = {};
+const int VTChangeSoftKeyMaskErrorCodes_reserved1_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTChangeSoftKeyMaskErrorCodes_reserved1_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTChangeSoftKeyMaskErrorCodes_reserved1_oer_ext_arr_, 0, VTChangeSoftKeyMaskErrorCodes_reserved1_oer_p_};
+const TTCN_Typedescriptor_t VTChangeSoftKeyMaskErrorCodes_reserved1_descr_ = { "@IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes.reserved1", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTChangeSoftKeyMaskErrorCodes_reserved1_xer_, &BOOLEAN_json_, &VTChangeSoftKeyMaskErrorCodes_reserved1_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTChangeSoftKeyMaskErrorCodes_missingObjects_xer_ = { {"missingObjects>\n", "missingObjects>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTChangeSoftKeyMaskErrorCodes_missingObjects_oer_ext_arr_[0] = {};
+const int VTChangeSoftKeyMaskErrorCodes_missingObjects_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTChangeSoftKeyMaskErrorCodes_missingObjects_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTChangeSoftKeyMaskErrorCodes_missingObjects_oer_ext_arr_, 0, VTChangeSoftKeyMaskErrorCodes_missingObjects_oer_p_};
+const TTCN_Typedescriptor_t VTChangeSoftKeyMaskErrorCodes_missingObjects_descr_ = { "@IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes.missingObjects", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTChangeSoftKeyMaskErrorCodes_missingObjects_xer_, &BOOLEAN_json_, &VTChangeSoftKeyMaskErrorCodes_missingObjects_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTChangeSoftKeyMaskErrorCodes_maskOrChildObjectHasErrors_xer_ = { {"maskOrChildObjectHasErrors>\n", "maskOrChildObjectHasErrors>\n"}, {28, 28}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTChangeSoftKeyMaskErrorCodes_maskOrChildObjectHasErrors_oer_ext_arr_[0] = {};
+const int VTChangeSoftKeyMaskErrorCodes_maskOrChildObjectHasErrors_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTChangeSoftKeyMaskErrorCodes_maskOrChildObjectHasErrors_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTChangeSoftKeyMaskErrorCodes_maskOrChildObjectHasErrors_oer_ext_arr_, 0, VTChangeSoftKeyMaskErrorCodes_maskOrChildObjectHasErrors_oer_p_};
+const TTCN_Typedescriptor_t VTChangeSoftKeyMaskErrorCodes_maskOrChildObjectHasErrors_descr_ = { "@IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes.maskOrChildObjectHasErrors", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTChangeSoftKeyMaskErrorCodes_maskOrChildObjectHasErrors_xer_, &BOOLEAN_json_, &VTChangeSoftKeyMaskErrorCodes_maskOrChildObjectHasErrors_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTChangeSoftKeyMaskErrorCodes_anyOtherError_xer_ = { {"anyOtherError>\n", "anyOtherError>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTChangeSoftKeyMaskErrorCodes_anyOtherError_oer_ext_arr_[0] = {};
+const int VTChangeSoftKeyMaskErrorCodes_anyOtherError_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTChangeSoftKeyMaskErrorCodes_anyOtherError_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTChangeSoftKeyMaskErrorCodes_anyOtherError_oer_ext_arr_, 0, VTChangeSoftKeyMaskErrorCodes_anyOtherError_oer_p_};
+const TTCN_Typedescriptor_t VTChangeSoftKeyMaskErrorCodes_anyOtherError_descr_ = { "@IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes.anyOtherError", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTChangeSoftKeyMaskErrorCodes_anyOtherError_xer_, &BOOLEAN_json_, &VTChangeSoftKeyMaskErrorCodes_anyOtherError_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTChangeSoftKeyMaskErrorCodes_poolBeingDeleted_xer_ = { {"poolBeingDeleted>\n", "poolBeingDeleted>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTChangeSoftKeyMaskErrorCodes_poolBeingDeleted_oer_ext_arr_[0] = {};
+const int VTChangeSoftKeyMaskErrorCodes_poolBeingDeleted_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTChangeSoftKeyMaskErrorCodes_poolBeingDeleted_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTChangeSoftKeyMaskErrorCodes_poolBeingDeleted_oer_ext_arr_, 0, VTChangeSoftKeyMaskErrorCodes_poolBeingDeleted_oer_p_};
+const TTCN_Typedescriptor_t VTChangeSoftKeyMaskErrorCodes_poolBeingDeleted_descr_ = { "@IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes.poolBeingDeleted", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTChangeSoftKeyMaskErrorCodes_poolBeingDeleted_xer_, &BOOLEAN_json_, &VTChangeSoftKeyMaskErrorCodes_poolBeingDeleted_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTChangeSoftKeyMaskErrorCodes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTChangeSoftKeyMaskErrorCodes_reserved6_oer_ext_arr_[0] = {};
+const int VTChangeSoftKeyMaskErrorCodes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTChangeSoftKeyMaskErrorCodes_reserved6_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTChangeSoftKeyMaskErrorCodes_reserved6_oer_ext_arr_, 0, VTChangeSoftKeyMaskErrorCodes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t VTChangeSoftKeyMaskErrorCodes_reserved6_descr_ = { "@IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes.reserved6", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTChangeSoftKeyMaskErrorCodes_reserved6_xer_, &BOOLEAN_json_, &VTChangeSoftKeyMaskErrorCodes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTChangeSoftKeyMaskErrorCodes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTChangeSoftKeyMaskErrorCodes_reserved7_oer_ext_arr_[0] = {};
+const int VTChangeSoftKeyMaskErrorCodes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTChangeSoftKeyMaskErrorCodes_reserved7_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTChangeSoftKeyMaskErrorCodes_reserved7_oer_ext_arr_, 0, VTChangeSoftKeyMaskErrorCodes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t VTChangeSoftKeyMaskErrorCodes_reserved7_descr_ = { "@IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes.reserved7", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTChangeSoftKeyMaskErrorCodes_reserved7_xer_, &BOOLEAN_json_, &VTChangeSoftKeyMaskErrorCodes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTChangeSoftKeyMaskErrorCodes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for VTChangeSoftKeyMaskErrorCodes
+const TTCN_Typedescriptor_t VTChangeSoftKeyMaskErrorCodes_descr_ = { "@IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes", NULL, &VTChangeSoftKeyMaskErrorCodes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTChangeSoftKeyMaskReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTChangeSoftKeyMaskReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTChangeSoftKeyMaskReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.VTChangeSoftKeyMaskReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &VTChangeSoftKeyMaskReq_vtfunction_xer_, &INTEGER_json_, &VTChangeSoftKeyMaskReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTChangeSoftKeyMaskReq_dataOrAlarmMaskObjectID_xer_ = { {"dataOrAlarmMaskObjectID>\n", "dataOrAlarmMaskObjectID>\n"}, {25, 25}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTChangeSoftKeyMaskReq_dataOrAlarmMaskObjectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTChangeSoftKeyMaskReq_dataOrAlarmMaskObjectID_descr_ = { "@IsobusVTMessageTypes.VTChangeSoftKeyMaskReq.dataOrAlarmMaskObjectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &VTChangeSoftKeyMaskReq_dataOrAlarmMaskObjectID_xer_, &INTEGER_json_, &VTChangeSoftKeyMaskReq_dataOrAlarmMaskObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTChangeSoftKeyMaskReq_softKeyMaskObjectID_xer_ = { {"softKeyMaskObjectID>\n", "softKeyMaskObjectID>\n"}, {21, 21}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTChangeSoftKeyMaskReq_softKeyMaskObjectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTChangeSoftKeyMaskReq_softKeyMaskObjectID_descr_ = { "@IsobusVTMessageTypes.VTChangeSoftKeyMaskReq.softKeyMaskObjectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &VTChangeSoftKeyMaskReq_softKeyMaskObjectID_xer_, &INTEGER_json_, &VTChangeSoftKeyMaskReq_softKeyMaskObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTChangeSoftKeyMaskReq_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTChangeSoftKeyMaskReq_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTChangeSoftKeyMaskReq_reserved7_oer_ext_arr_[0] = {};
+const int VTChangeSoftKeyMaskReq_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTChangeSoftKeyMaskReq_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTChangeSoftKeyMaskReq_reserved7_oer_ext_arr_, 0, VTChangeSoftKeyMaskReq_reserved7_oer_p_};
+const TTCN_Typedescriptor_t VTChangeSoftKeyMaskReq_reserved7_descr_ = { "@IsobusVTMessageTypes.VTChangeSoftKeyMaskReq.reserved7", &OCTETSTRING_ber_, &VTChangeSoftKeyMaskReq_reserved7_raw_, &OCTETSTRING_text_, &VTChangeSoftKeyMaskReq_reserved7_xer_, &OCTETSTRING_json_, &VTChangeSoftKeyMaskReq_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTChangeSoftKeyMaskReq_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTChangeSoftKeyMaskReq_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTChangeSoftKeyMaskReq_reserved8_oer_ext_arr_[0] = {};
+const int VTChangeSoftKeyMaskReq_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTChangeSoftKeyMaskReq_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTChangeSoftKeyMaskReq_reserved8_oer_ext_arr_, 0, VTChangeSoftKeyMaskReq_reserved8_oer_p_};
+const TTCN_Typedescriptor_t VTChangeSoftKeyMaskReq_reserved8_descr_ = { "@IsobusVTMessageTypes.VTChangeSoftKeyMaskReq.reserved8", &OCTETSTRING_ber_, &VTChangeSoftKeyMaskReq_reserved8_raw_, &OCTETSTRING_text_, &VTChangeSoftKeyMaskReq_reserved8_xer_, &OCTETSTRING_json_, &VTChangeSoftKeyMaskReq_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTChangeSoftKeyMaskReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for VTChangeSoftKeyMaskReq
+const TTCN_Typedescriptor_t VTChangeSoftKeyMaskReq_descr_ = { "@IsobusVTMessageTypes.VTChangeSoftKeyMaskReq", NULL, &VTChangeSoftKeyMaskReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTChangeSoftKeyMaskRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTChangeSoftKeyMaskRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTChangeSoftKeyMaskRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.VTChangeSoftKeyMaskRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &VTChangeSoftKeyMaskRes_vtfunction_xer_, &INTEGER_json_, &VTChangeSoftKeyMaskRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTChangeSoftKeyMaskRes_dataOrAlarmMaskObjectID_xer_ = { {"dataOrAlarmMaskObjectID>\n", "dataOrAlarmMaskObjectID>\n"}, {25, 25}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTChangeSoftKeyMaskRes_dataOrAlarmMaskObjectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTChangeSoftKeyMaskRes_dataOrAlarmMaskObjectID_descr_ = { "@IsobusVTMessageTypes.VTChangeSoftKeyMaskRes.dataOrAlarmMaskObjectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &VTChangeSoftKeyMaskRes_dataOrAlarmMaskObjectID_xer_, &INTEGER_json_, &VTChangeSoftKeyMaskRes_dataOrAlarmMaskObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTChangeSoftKeyMaskRes_softKeyMaskObjectID_xer_ = { {"softKeyMaskObjectID>\n", "softKeyMaskObjectID>\n"}, {21, 21}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTChangeSoftKeyMaskRes_softKeyMaskObjectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTChangeSoftKeyMaskRes_softKeyMaskObjectID_descr_ = { "@IsobusVTMessageTypes.VTChangeSoftKeyMaskRes.softKeyMaskObjectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &VTChangeSoftKeyMaskRes_softKeyMaskObjectID_xer_, &INTEGER_json_, &VTChangeSoftKeyMaskRes_softKeyMaskObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTChangeSoftKeyMaskRes_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTChangeSoftKeyMaskRes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTChangeSoftKeyMaskRes_reserved6_oer_ext_arr_[0] = {};
+const int VTChangeSoftKeyMaskRes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTChangeSoftKeyMaskRes_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTChangeSoftKeyMaskRes_reserved6_oer_ext_arr_, 0, VTChangeSoftKeyMaskRes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t VTChangeSoftKeyMaskRes_reserved6_descr_ = { "@IsobusVTMessageTypes.VTChangeSoftKeyMaskRes.reserved6", &OCTETSTRING_ber_, &VTChangeSoftKeyMaskRes_reserved6_raw_, &OCTETSTRING_text_, &VTChangeSoftKeyMaskRes_reserved6_xer_, &OCTETSTRING_json_, &VTChangeSoftKeyMaskRes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTChangeSoftKeyMaskRes_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTChangeSoftKeyMaskRes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTChangeSoftKeyMaskRes_reserved7_oer_ext_arr_[0] = {};
+const int VTChangeSoftKeyMaskRes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTChangeSoftKeyMaskRes_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTChangeSoftKeyMaskRes_reserved7_oer_ext_arr_, 0, VTChangeSoftKeyMaskRes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t VTChangeSoftKeyMaskRes_reserved7_descr_ = { "@IsobusVTMessageTypes.VTChangeSoftKeyMaskRes.reserved7", &OCTETSTRING_ber_, &VTChangeSoftKeyMaskRes_reserved7_raw_, &OCTETSTRING_text_, &VTChangeSoftKeyMaskRes_reserved7_xer_, &OCTETSTRING_json_, &VTChangeSoftKeyMaskRes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTChangeSoftKeyMaskRes_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTChangeSoftKeyMaskRes_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTChangeSoftKeyMaskRes_reserved8_oer_ext_arr_[0] = {};
+const int VTChangeSoftKeyMaskRes_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTChangeSoftKeyMaskRes_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTChangeSoftKeyMaskRes_reserved8_oer_ext_arr_, 0, VTChangeSoftKeyMaskRes_reserved8_oer_p_};
+const TTCN_Typedescriptor_t VTChangeSoftKeyMaskRes_reserved8_descr_ = { "@IsobusVTMessageTypes.VTChangeSoftKeyMaskRes.reserved8", &OCTETSTRING_ber_, &VTChangeSoftKeyMaskRes_reserved8_raw_, &OCTETSTRING_text_, &VTChangeSoftKeyMaskRes_reserved8_xer_, &OCTETSTRING_json_, &VTChangeSoftKeyMaskRes_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTChangeSoftKeyMaskRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for VTChangeSoftKeyMaskRes
+const TTCN_Typedescriptor_t VTChangeSoftKeyMaskRes_descr_ = { "@IsobusVTMessageTypes.VTChangeSoftKeyMaskRes", NULL, &VTChangeSoftKeyMaskRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTChangeStringValueReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTChangeStringValueReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTChangeStringValueReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.VTChangeStringValueReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &VTChangeStringValueReq_vtfunction_xer_, &INTEGER_json_, &VTChangeStringValueReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTChangeStringValueReq_inputStringOrStringVariableObjectID_xer_ = { {"inputStringOrStringVariableObjectID>\n", "inputStringOrStringVariableObjectID>\n"}, {37, 37}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTChangeStringValueReq_inputStringOrStringVariableObjectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTChangeStringValueReq_inputStringOrStringVariableObjectID_descr_ = { "@IsobusVTMessageTypes.VTChangeStringValueReq.inputStringOrStringVariableObjectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &VTChangeStringValueReq_inputStringOrStringVariableObjectID_xer_, &INTEGER_json_, &VTChangeStringValueReq_inputStringOrStringVariableObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTChangeStringValueReq_numberOfBytes_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,NULL,false};
+const XERdescriptor_t       VTChangeStringValueReq_numberOfBytes_xer_ = { {"numberOfBytes>\n", "numberOfBytes>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTChangeStringValueReq_numberOfBytes_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTChangeStringValueReq_numberOfBytes_descr_ = { "@IsobusVTMessageTypes.VTChangeStringValueReq.numberOfBytes", &INTEGER_ber_, &VTChangeStringValueReq_numberOfBytes_raw_, &INTEGER_text_, &VTChangeStringValueReq_numberOfBytes_xer_, &INTEGER_json_, &VTChangeStringValueReq_numberOfBytes_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTChangeStringValueReq_enteredStringValue_xer_ = { {"enteredStringValue>\n", "enteredStringValue>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTChangeStringValueReq_enteredStringValue_oer_ext_arr_[0] = {};
+const int VTChangeStringValueReq_enteredStringValue_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTChangeStringValueReq_enteredStringValue_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTChangeStringValueReq_enteredStringValue_oer_ext_arr_, 0, VTChangeStringValueReq_enteredStringValue_oer_p_};
+const TTCN_Typedescriptor_t VTChangeStringValueReq_enteredStringValue_descr_ = { "@IsobusVTMessageTypes.VTChangeStringValueReq.enteredStringValue", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &VTChangeStringValueReq_enteredStringValue_xer_, &OCTETSTRING_json_, &VTChangeStringValueReq_enteredStringValue_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTChangeStringValueReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for VTChangeStringValueReq
+const TTCN_Typedescriptor_t VTChangeStringValueReq_descr_ = { "@IsobusVTMessageTypes.VTChangeStringValueReq", NULL, &VTChangeStringValueReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTChangeStringValueRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTChangeStringValueRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTChangeStringValueRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.VTChangeStringValueRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &VTChangeStringValueRes_vtfunction_xer_, &INTEGER_json_, &VTChangeStringValueRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTChangeStringValueRes_reserved2_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTChangeStringValueRes_reserved2_xer_ = { {"reserved2>\n", "reserved2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTChangeStringValueRes_reserved2_oer_ext_arr_[0] = {};
+const int VTChangeStringValueRes_reserved2_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTChangeStringValueRes_reserved2_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTChangeStringValueRes_reserved2_oer_ext_arr_, 0, VTChangeStringValueRes_reserved2_oer_p_};
+const TTCN_Typedescriptor_t VTChangeStringValueRes_reserved2_descr_ = { "@IsobusVTMessageTypes.VTChangeStringValueRes.reserved2", &OCTETSTRING_ber_, &VTChangeStringValueRes_reserved2_raw_, &OCTETSTRING_text_, &VTChangeStringValueRes_reserved2_xer_, &OCTETSTRING_json_, &VTChangeStringValueRes_reserved2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTChangeStringValueRes_reserved3_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTChangeStringValueRes_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTChangeStringValueRes_reserved3_oer_ext_arr_[0] = {};
+const int VTChangeStringValueRes_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTChangeStringValueRes_reserved3_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTChangeStringValueRes_reserved3_oer_ext_arr_, 0, VTChangeStringValueRes_reserved3_oer_p_};
+const TTCN_Typedescriptor_t VTChangeStringValueRes_reserved3_descr_ = { "@IsobusVTMessageTypes.VTChangeStringValueRes.reserved3", &OCTETSTRING_ber_, &VTChangeStringValueRes_reserved3_raw_, &OCTETSTRING_text_, &VTChangeStringValueRes_reserved3_xer_, &OCTETSTRING_json_, &VTChangeStringValueRes_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTChangeStringValueRes_inputStringOrStringVariableObjectID_xer_ = { {"inputStringOrStringVariableObjectID>\n", "inputStringOrStringVariableObjectID>\n"}, {37, 37}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTChangeStringValueRes_inputStringOrStringVariableObjectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTChangeStringValueRes_inputStringOrStringVariableObjectID_descr_ = { "@IsobusVTMessageTypes.VTChangeStringValueRes.inputStringOrStringVariableObjectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &VTChangeStringValueRes_inputStringOrStringVariableObjectID_xer_, &INTEGER_json_, &VTChangeStringValueRes_inputStringOrStringVariableObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTChangeStringValueRes_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTChangeStringValueRes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTChangeStringValueRes_reserved6_oer_ext_arr_[0] = {};
+const int VTChangeStringValueRes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTChangeStringValueRes_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTChangeStringValueRes_reserved6_oer_ext_arr_, 0, VTChangeStringValueRes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t VTChangeStringValueRes_reserved6_descr_ = { "@IsobusVTMessageTypes.VTChangeStringValueRes.reserved6", &OCTETSTRING_ber_, &VTChangeStringValueRes_reserved6_raw_, &OCTETSTRING_text_, &VTChangeStringValueRes_reserved6_xer_, &OCTETSTRING_json_, &VTChangeStringValueRes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTChangeStringValueRes_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTChangeStringValueRes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTChangeStringValueRes_reserved7_oer_ext_arr_[0] = {};
+const int VTChangeStringValueRes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTChangeStringValueRes_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTChangeStringValueRes_reserved7_oer_ext_arr_, 0, VTChangeStringValueRes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t VTChangeStringValueRes_reserved7_descr_ = { "@IsobusVTMessageTypes.VTChangeStringValueRes.reserved7", &OCTETSTRING_ber_, &VTChangeStringValueRes_reserved7_raw_, &OCTETSTRING_text_, &VTChangeStringValueRes_reserved7_xer_, &OCTETSTRING_json_, &VTChangeStringValueRes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTChangeStringValueRes_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTChangeStringValueRes_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTChangeStringValueRes_reserved8_oer_ext_arr_[0] = {};
+const int VTChangeStringValueRes_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTChangeStringValueRes_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTChangeStringValueRes_reserved8_oer_ext_arr_, 0, VTChangeStringValueRes_reserved8_oer_p_};
+const TTCN_Typedescriptor_t VTChangeStringValueRes_reserved8_descr_ = { "@IsobusVTMessageTypes.VTChangeStringValueRes.reserved8", &OCTETSTRING_ber_, &VTChangeStringValueRes_reserved8_raw_, &OCTETSTRING_text_, &VTChangeStringValueRes_reserved8_xer_, &OCTETSTRING_json_, &VTChangeStringValueRes_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTChangeStringValueRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for VTChangeStringValueRes
+const TTCN_Typedescriptor_t VTChangeStringValueRes_descr_ = { "@IsobusVTMessageTypes.VTChangeStringValueRes", NULL, &VTChangeStringValueRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTOnUserLayoutHideShowReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTOnUserLayoutHideShowReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTOnUserLayoutHideShowReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.VTOnUserLayoutHideShowReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &VTOnUserLayoutHideShowReq_vtfunction_xer_, &INTEGER_json_, &VTOnUserLayoutHideShowReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTOnUserLayoutHideShowReq_objectID1_xer_ = { {"objectID1>\n", "objectID1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTOnUserLayoutHideShowReq_objectID1_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTOnUserLayoutHideShowReq_objectID1_descr_ = { "@IsobusVTMessageTypes.VTOnUserLayoutHideShowReq.objectID1", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &VTOnUserLayoutHideShowReq_objectID1_xer_, &INTEGER_json_, &VTOnUserLayoutHideShowReq_objectID1_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTOnUserLayoutHideShowReq_objectID2_xer_ = { {"objectID2>\n", "objectID2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTOnUserLayoutHideShowReq_objectID2_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTOnUserLayoutHideShowReq_objectID2_descr_ = { "@IsobusVTMessageTypes.VTOnUserLayoutHideShowReq.objectID2", &INTEGER_ber_, &AnyObjectID_raw_, &INTEGER_text_, &VTOnUserLayoutHideShowReq_objectID2_xer_, &INTEGER_json_, &VTOnUserLayoutHideShowReq_objectID2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTOnUserLayoutHideShowReq_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTOnUserLayoutHideShowReq_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTOnUserLayoutHideShowReq_reserved8_oer_ext_arr_[0] = {};
+const int VTOnUserLayoutHideShowReq_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTOnUserLayoutHideShowReq_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTOnUserLayoutHideShowReq_reserved8_oer_ext_arr_, 0, VTOnUserLayoutHideShowReq_reserved8_oer_p_};
+const TTCN_Typedescriptor_t VTOnUserLayoutHideShowReq_reserved8_descr_ = { "@IsobusVTMessageTypes.VTOnUserLayoutHideShowReq.reserved8", &OCTETSTRING_ber_, &VTOnUserLayoutHideShowReq_reserved8_raw_, &OCTETSTRING_text_, &VTOnUserLayoutHideShowReq_reserved8_xer_, &OCTETSTRING_json_, &VTOnUserLayoutHideShowReq_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTOnUserLayoutHideShowReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for VTOnUserLayoutHideShowReq
+const TTCN_Typedescriptor_t VTOnUserLayoutHideShowReq_descr_ = { "@IsobusVTMessageTypes.VTOnUserLayoutHideShowReq", NULL, &VTOnUserLayoutHideShowReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTOnUserLayoutHideShowRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTOnUserLayoutHideShowRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTOnUserLayoutHideShowRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.VTOnUserLayoutHideShowRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &VTOnUserLayoutHideShowRes_vtfunction_xer_, &INTEGER_json_, &VTOnUserLayoutHideShowRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTOnUserLayoutHideShowRes_objectID1_xer_ = { {"objectID1>\n", "objectID1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTOnUserLayoutHideShowRes_objectID1_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTOnUserLayoutHideShowRes_objectID1_descr_ = { "@IsobusVTMessageTypes.VTOnUserLayoutHideShowRes.objectID1", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &VTOnUserLayoutHideShowRes_objectID1_xer_, &INTEGER_json_, &VTOnUserLayoutHideShowRes_objectID1_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTOnUserLayoutHideShowRes_objectID2_xer_ = { {"objectID2>\n", "objectID2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTOnUserLayoutHideShowRes_objectID2_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTOnUserLayoutHideShowRes_objectID2_descr_ = { "@IsobusVTMessageTypes.VTOnUserLayoutHideShowRes.objectID2", &INTEGER_ber_, &AnyObjectID_raw_, &INTEGER_text_, &VTOnUserLayoutHideShowRes_objectID2_xer_, &INTEGER_json_, &VTOnUserLayoutHideShowRes_objectID2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTOnUserLayoutHideShowRes_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTOnUserLayoutHideShowRes_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTOnUserLayoutHideShowRes_reserved8_oer_ext_arr_[0] = {};
+const int VTOnUserLayoutHideShowRes_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTOnUserLayoutHideShowRes_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTOnUserLayoutHideShowRes_reserved8_oer_ext_arr_, 0, VTOnUserLayoutHideShowRes_reserved8_oer_p_};
+const TTCN_Typedescriptor_t VTOnUserLayoutHideShowRes_reserved8_descr_ = { "@IsobusVTMessageTypes.VTOnUserLayoutHideShowRes.reserved8", &OCTETSTRING_ber_, &VTOnUserLayoutHideShowRes_reserved8_raw_, &OCTETSTRING_text_, &VTOnUserLayoutHideShowRes_reserved8_xer_, &OCTETSTRING_json_, &VTOnUserLayoutHideShowRes_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTOnUserLayoutHideShowRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for VTOnUserLayoutHideShowRes
+const TTCN_Typedescriptor_t VTOnUserLayoutHideShowRes_descr_ = { "@IsobusVTMessageTypes.VTOnUserLayoutHideShowRes", NULL, &VTOnUserLayoutHideShowRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTControlAudioSignalTerminationParameterTerminationCause_AudioWasTerminated_xer_ = { {"AudioWasTerminated>\n", "AudioWasTerminated>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTControlAudioSignalTerminationParameterTerminationCause_AudioWasTerminated_oer_ext_arr_[0] = {};
+const int VTControlAudioSignalTerminationParameterTerminationCause_AudioWasTerminated_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTControlAudioSignalTerminationParameterTerminationCause_AudioWasTerminated_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTControlAudioSignalTerminationParameterTerminationCause_AudioWasTerminated_oer_ext_arr_, 0, VTControlAudioSignalTerminationParameterTerminationCause_AudioWasTerminated_oer_p_};
+const TTCN_Typedescriptor_t VTControlAudioSignalTerminationParameterTerminationCause_AudioWasTerminated_descr_ = { "@IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause.AudioWasTerminated", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTControlAudioSignalTerminationParameterTerminationCause_AudioWasTerminated_xer_, &BOOLEAN_json_, &VTControlAudioSignalTerminationParameterTerminationCause_AudioWasTerminated_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTControlAudioSignalTerminationParameterTerminationCause_reserved1_xer_ = { {"reserved1>\n", "reserved1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTControlAudioSignalTerminationParameterTerminationCause_reserved1_oer_ext_arr_[0] = {};
+const int VTControlAudioSignalTerminationParameterTerminationCause_reserved1_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTControlAudioSignalTerminationParameterTerminationCause_reserved1_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTControlAudioSignalTerminationParameterTerminationCause_reserved1_oer_ext_arr_, 0, VTControlAudioSignalTerminationParameterTerminationCause_reserved1_oer_p_};
+const TTCN_Typedescriptor_t VTControlAudioSignalTerminationParameterTerminationCause_reserved1_descr_ = { "@IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause.reserved1", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTControlAudioSignalTerminationParameterTerminationCause_reserved1_xer_, &BOOLEAN_json_, &VTControlAudioSignalTerminationParameterTerminationCause_reserved1_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTControlAudioSignalTerminationParameterTerminationCause_reserved2_xer_ = { {"reserved2>\n", "reserved2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTControlAudioSignalTerminationParameterTerminationCause_reserved2_oer_ext_arr_[0] = {};
+const int VTControlAudioSignalTerminationParameterTerminationCause_reserved2_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTControlAudioSignalTerminationParameterTerminationCause_reserved2_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTControlAudioSignalTerminationParameterTerminationCause_reserved2_oer_ext_arr_, 0, VTControlAudioSignalTerminationParameterTerminationCause_reserved2_oer_p_};
+const TTCN_Typedescriptor_t VTControlAudioSignalTerminationParameterTerminationCause_reserved2_descr_ = { "@IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause.reserved2", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTControlAudioSignalTerminationParameterTerminationCause_reserved2_xer_, &BOOLEAN_json_, &VTControlAudioSignalTerminationParameterTerminationCause_reserved2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTControlAudioSignalTerminationParameterTerminationCause_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTControlAudioSignalTerminationParameterTerminationCause_reserved3_oer_ext_arr_[0] = {};
+const int VTControlAudioSignalTerminationParameterTerminationCause_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTControlAudioSignalTerminationParameterTerminationCause_reserved3_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTControlAudioSignalTerminationParameterTerminationCause_reserved3_oer_ext_arr_, 0, VTControlAudioSignalTerminationParameterTerminationCause_reserved3_oer_p_};
+const TTCN_Typedescriptor_t VTControlAudioSignalTerminationParameterTerminationCause_reserved3_descr_ = { "@IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause.reserved3", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTControlAudioSignalTerminationParameterTerminationCause_reserved3_xer_, &BOOLEAN_json_, &VTControlAudioSignalTerminationParameterTerminationCause_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTControlAudioSignalTerminationParameterTerminationCause_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTControlAudioSignalTerminationParameterTerminationCause_reserved4_oer_ext_arr_[0] = {};
+const int VTControlAudioSignalTerminationParameterTerminationCause_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTControlAudioSignalTerminationParameterTerminationCause_reserved4_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTControlAudioSignalTerminationParameterTerminationCause_reserved4_oer_ext_arr_, 0, VTControlAudioSignalTerminationParameterTerminationCause_reserved4_oer_p_};
+const TTCN_Typedescriptor_t VTControlAudioSignalTerminationParameterTerminationCause_reserved4_descr_ = { "@IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause.reserved4", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTControlAudioSignalTerminationParameterTerminationCause_reserved4_xer_, &BOOLEAN_json_, &VTControlAudioSignalTerminationParameterTerminationCause_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTControlAudioSignalTerminationParameterTerminationCause_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTControlAudioSignalTerminationParameterTerminationCause_reserved5_oer_ext_arr_[0] = {};
+const int VTControlAudioSignalTerminationParameterTerminationCause_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTControlAudioSignalTerminationParameterTerminationCause_reserved5_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTControlAudioSignalTerminationParameterTerminationCause_reserved5_oer_ext_arr_, 0, VTControlAudioSignalTerminationParameterTerminationCause_reserved5_oer_p_};
+const TTCN_Typedescriptor_t VTControlAudioSignalTerminationParameterTerminationCause_reserved5_descr_ = { "@IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause.reserved5", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTControlAudioSignalTerminationParameterTerminationCause_reserved5_xer_, &BOOLEAN_json_, &VTControlAudioSignalTerminationParameterTerminationCause_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTControlAudioSignalTerminationParameterTerminationCause_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTControlAudioSignalTerminationParameterTerminationCause_reserved6_oer_ext_arr_[0] = {};
+const int VTControlAudioSignalTerminationParameterTerminationCause_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTControlAudioSignalTerminationParameterTerminationCause_reserved6_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTControlAudioSignalTerminationParameterTerminationCause_reserved6_oer_ext_arr_, 0, VTControlAudioSignalTerminationParameterTerminationCause_reserved6_oer_p_};
+const TTCN_Typedescriptor_t VTControlAudioSignalTerminationParameterTerminationCause_reserved6_descr_ = { "@IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause.reserved6", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTControlAudioSignalTerminationParameterTerminationCause_reserved6_xer_, &BOOLEAN_json_, &VTControlAudioSignalTerminationParameterTerminationCause_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTControlAudioSignalTerminationParameterTerminationCause_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTControlAudioSignalTerminationParameterTerminationCause_reserved7_oer_ext_arr_[0] = {};
+const int VTControlAudioSignalTerminationParameterTerminationCause_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTControlAudioSignalTerminationParameterTerminationCause_reserved7_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTControlAudioSignalTerminationParameterTerminationCause_reserved7_oer_ext_arr_, 0, VTControlAudioSignalTerminationParameterTerminationCause_reserved7_oer_p_};
+const TTCN_Typedescriptor_t VTControlAudioSignalTerminationParameterTerminationCause_reserved7_descr_ = { "@IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause.reserved7", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &VTControlAudioSignalTerminationParameterTerminationCause_reserved7_xer_, &BOOLEAN_json_, &VTControlAudioSignalTerminationParameterTerminationCause_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTControlAudioSignalTerminationParameterTerminationCause_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for VTControlAudioSignalTerminationParameterTerminationCause
+const TTCN_Typedescriptor_t VTControlAudioSignalTerminationParameterTerminationCause_descr_ = { "@IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause", NULL, &VTControlAudioSignalTerminationParameterTerminationCause_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTControlAudioSignalTerminationInd_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTControlAudioSignalTerminationInd_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTControlAudioSignalTerminationInd_vtfunction_descr_ = { "@IsobusVTMessageTypes.VTControlAudioSignalTerminationInd.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &VTControlAudioSignalTerminationInd_vtfunction_xer_, &INTEGER_json_, &VTControlAudioSignalTerminationInd_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTControlAudioSignalTerminationInd_reserved3_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTControlAudioSignalTerminationInd_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTControlAudioSignalTerminationInd_reserved3_oer_ext_arr_[0] = {};
+const int VTControlAudioSignalTerminationInd_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTControlAudioSignalTerminationInd_reserved3_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTControlAudioSignalTerminationInd_reserved3_oer_ext_arr_, 0, VTControlAudioSignalTerminationInd_reserved3_oer_p_};
+const TTCN_Typedescriptor_t VTControlAudioSignalTerminationInd_reserved3_descr_ = { "@IsobusVTMessageTypes.VTControlAudioSignalTerminationInd.reserved3", &OCTETSTRING_ber_, &VTControlAudioSignalTerminationInd_reserved3_raw_, &OCTETSTRING_text_, &VTControlAudioSignalTerminationInd_reserved3_xer_, &OCTETSTRING_json_, &VTControlAudioSignalTerminationInd_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTControlAudioSignalTerminationInd_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTControlAudioSignalTerminationInd_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTControlAudioSignalTerminationInd_reserved4_oer_ext_arr_[0] = {};
+const int VTControlAudioSignalTerminationInd_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTControlAudioSignalTerminationInd_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTControlAudioSignalTerminationInd_reserved4_oer_ext_arr_, 0, VTControlAudioSignalTerminationInd_reserved4_oer_p_};
+const TTCN_Typedescriptor_t VTControlAudioSignalTerminationInd_reserved4_descr_ = { "@IsobusVTMessageTypes.VTControlAudioSignalTerminationInd.reserved4", &OCTETSTRING_ber_, &VTControlAudioSignalTerminationInd_reserved4_raw_, &OCTETSTRING_text_, &VTControlAudioSignalTerminationInd_reserved4_xer_, &OCTETSTRING_json_, &VTControlAudioSignalTerminationInd_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTControlAudioSignalTerminationInd_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTControlAudioSignalTerminationInd_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTControlAudioSignalTerminationInd_reserved5_oer_ext_arr_[0] = {};
+const int VTControlAudioSignalTerminationInd_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTControlAudioSignalTerminationInd_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTControlAudioSignalTerminationInd_reserved5_oer_ext_arr_, 0, VTControlAudioSignalTerminationInd_reserved5_oer_p_};
+const TTCN_Typedescriptor_t VTControlAudioSignalTerminationInd_reserved5_descr_ = { "@IsobusVTMessageTypes.VTControlAudioSignalTerminationInd.reserved5", &OCTETSTRING_ber_, &VTControlAudioSignalTerminationInd_reserved5_raw_, &OCTETSTRING_text_, &VTControlAudioSignalTerminationInd_reserved5_xer_, &OCTETSTRING_json_, &VTControlAudioSignalTerminationInd_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTControlAudioSignalTerminationInd_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTControlAudioSignalTerminationInd_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTControlAudioSignalTerminationInd_reserved6_oer_ext_arr_[0] = {};
+const int VTControlAudioSignalTerminationInd_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTControlAudioSignalTerminationInd_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTControlAudioSignalTerminationInd_reserved6_oer_ext_arr_, 0, VTControlAudioSignalTerminationInd_reserved6_oer_p_};
+const TTCN_Typedescriptor_t VTControlAudioSignalTerminationInd_reserved6_descr_ = { "@IsobusVTMessageTypes.VTControlAudioSignalTerminationInd.reserved6", &OCTETSTRING_ber_, &VTControlAudioSignalTerminationInd_reserved6_raw_, &OCTETSTRING_text_, &VTControlAudioSignalTerminationInd_reserved6_xer_, &OCTETSTRING_json_, &VTControlAudioSignalTerminationInd_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTControlAudioSignalTerminationInd_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTControlAudioSignalTerminationInd_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTControlAudioSignalTerminationInd_reserved7_oer_ext_arr_[0] = {};
+const int VTControlAudioSignalTerminationInd_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTControlAudioSignalTerminationInd_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTControlAudioSignalTerminationInd_reserved7_oer_ext_arr_, 0, VTControlAudioSignalTerminationInd_reserved7_oer_p_};
+const TTCN_Typedescriptor_t VTControlAudioSignalTerminationInd_reserved7_descr_ = { "@IsobusVTMessageTypes.VTControlAudioSignalTerminationInd.reserved7", &OCTETSTRING_ber_, &VTControlAudioSignalTerminationInd_reserved7_raw_, &OCTETSTRING_text_, &VTControlAudioSignalTerminationInd_reserved7_xer_, &OCTETSTRING_json_, &VTControlAudioSignalTerminationInd_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTControlAudioSignalTerminationInd_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTControlAudioSignalTerminationInd_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTControlAudioSignalTerminationInd_reserved8_oer_ext_arr_[0] = {};
+const int VTControlAudioSignalTerminationInd_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTControlAudioSignalTerminationInd_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTControlAudioSignalTerminationInd_reserved8_oer_ext_arr_, 0, VTControlAudioSignalTerminationInd_reserved8_oer_p_};
+const TTCN_Typedescriptor_t VTControlAudioSignalTerminationInd_reserved8_descr_ = { "@IsobusVTMessageTypes.VTControlAudioSignalTerminationInd.reserved8", &OCTETSTRING_ber_, &VTControlAudioSignalTerminationInd_reserved8_raw_, &OCTETSTRING_text_, &VTControlAudioSignalTerminationInd_reserved8_xer_, &OCTETSTRING_json_, &VTControlAudioSignalTerminationInd_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTControlAudioSignalTerminationInd_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for VTControlAudioSignalTerminationInd
+const TTCN_Typedescriptor_t VTControlAudioSignalTerminationInd_descr_ = { "@IsobusVTMessageTypes.VTControlAudioSignalTerminationInd", NULL, &VTControlAudioSignalTerminationInd_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ObjectPoolRecords_raw_ = {0,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,NULL,false};
+const XERdescriptor_t       ObjectPoolRecords_xer_ = { {"ObjectPoolRecords>\n", "ObjectPoolRecords>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ObjectPoolRecords_oer_ext_arr_[0] = {};
+const int ObjectPoolRecords_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ObjectPoolRecords_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ObjectPoolRecords_oer_ext_arr_, 0, ObjectPoolRecords_oer_p_};
+const TTCN_Typedescriptor_t ObjectPoolRecords_descr_ = { "@IsobusVTMessageTypes.ObjectPoolRecords", &OCTETSTRING_ber_, &ObjectPoolRecords_raw_, &OCTETSTRING_text_, &ObjectPoolRecords_xer_, &OCTETSTRING_json_, &ObjectPoolRecords_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ObjectPoolTransferInd_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ObjectPoolTransferInd_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ObjectPoolTransferInd_vtfunction_descr_ = { "@IsobusVTMessageTypes.ObjectPoolTransferInd.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ObjectPoolTransferInd_vtfunction_xer_, &INTEGER_json_, &ObjectPoolTransferInd_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ObjectPoolTransferInd_objectPoolRecords_xer_ = { {"objectPoolRecords>\n", "objectPoolRecords>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ObjectPoolTransferInd_objectPoolRecords_oer_ext_arr_[0] = {};
+const int ObjectPoolTransferInd_objectPoolRecords_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ObjectPoolTransferInd_objectPoolRecords_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ObjectPoolTransferInd_objectPoolRecords_oer_ext_arr_, 0, ObjectPoolTransferInd_objectPoolRecords_oer_p_};
+const TTCN_Typedescriptor_t ObjectPoolTransferInd_objectPoolRecords_descr_ = { "@IsobusVTMessageTypes.ObjectPoolTransferInd.objectPoolRecords", &OCTETSTRING_ber_, &ObjectPoolRecords_raw_, &OCTETSTRING_text_, &ObjectPoolTransferInd_objectPoolRecords_xer_, &OCTETSTRING_json_, &ObjectPoolTransferInd_objectPoolRecords_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ObjectPoolTransferInd_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ObjectPoolTransferInd
+const TTCN_Typedescriptor_t ObjectPoolTransferInd_descr_ = { "@IsobusVTMessageTypes.ObjectPoolTransferInd", NULL, &ObjectPoolTransferInd_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       EndOfObjectPoolReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t EndOfObjectPoolReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t EndOfObjectPoolReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.EndOfObjectPoolReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &EndOfObjectPoolReq_vtfunction_xer_, &INTEGER_json_, &EndOfObjectPoolReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EndOfObjectPoolReq_reserved2_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       EndOfObjectPoolReq_reserved2_xer_ = { {"reserved2>\n", "reserved2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int EndOfObjectPoolReq_reserved2_oer_ext_arr_[0] = {};
+const int EndOfObjectPoolReq_reserved2_oer_p_[0] = {};
+const TTCN_OERdescriptor_t EndOfObjectPoolReq_reserved2_oer_ = { -1, TRUE, 1, FALSE, 0, 0, EndOfObjectPoolReq_reserved2_oer_ext_arr_, 0, EndOfObjectPoolReq_reserved2_oer_p_};
+const TTCN_Typedescriptor_t EndOfObjectPoolReq_reserved2_descr_ = { "@IsobusVTMessageTypes.EndOfObjectPoolReq.reserved2", &OCTETSTRING_ber_, &EndOfObjectPoolReq_reserved2_raw_, &OCTETSTRING_text_, &EndOfObjectPoolReq_reserved2_xer_, &OCTETSTRING_json_, &EndOfObjectPoolReq_reserved2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EndOfObjectPoolReq_reserved3_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       EndOfObjectPoolReq_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int EndOfObjectPoolReq_reserved3_oer_ext_arr_[0] = {};
+const int EndOfObjectPoolReq_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t EndOfObjectPoolReq_reserved3_oer_ = { -1, TRUE, 1, FALSE, 0, 0, EndOfObjectPoolReq_reserved3_oer_ext_arr_, 0, EndOfObjectPoolReq_reserved3_oer_p_};
+const TTCN_Typedescriptor_t EndOfObjectPoolReq_reserved3_descr_ = { "@IsobusVTMessageTypes.EndOfObjectPoolReq.reserved3", &OCTETSTRING_ber_, &EndOfObjectPoolReq_reserved3_raw_, &OCTETSTRING_text_, &EndOfObjectPoolReq_reserved3_xer_, &OCTETSTRING_json_, &EndOfObjectPoolReq_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EndOfObjectPoolReq_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       EndOfObjectPoolReq_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int EndOfObjectPoolReq_reserved4_oer_ext_arr_[0] = {};
+const int EndOfObjectPoolReq_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t EndOfObjectPoolReq_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, EndOfObjectPoolReq_reserved4_oer_ext_arr_, 0, EndOfObjectPoolReq_reserved4_oer_p_};
+const TTCN_Typedescriptor_t EndOfObjectPoolReq_reserved4_descr_ = { "@IsobusVTMessageTypes.EndOfObjectPoolReq.reserved4", &OCTETSTRING_ber_, &EndOfObjectPoolReq_reserved4_raw_, &OCTETSTRING_text_, &EndOfObjectPoolReq_reserved4_xer_, &OCTETSTRING_json_, &EndOfObjectPoolReq_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EndOfObjectPoolReq_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       EndOfObjectPoolReq_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int EndOfObjectPoolReq_reserved5_oer_ext_arr_[0] = {};
+const int EndOfObjectPoolReq_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t EndOfObjectPoolReq_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, EndOfObjectPoolReq_reserved5_oer_ext_arr_, 0, EndOfObjectPoolReq_reserved5_oer_p_};
+const TTCN_Typedescriptor_t EndOfObjectPoolReq_reserved5_descr_ = { "@IsobusVTMessageTypes.EndOfObjectPoolReq.reserved5", &OCTETSTRING_ber_, &EndOfObjectPoolReq_reserved5_raw_, &OCTETSTRING_text_, &EndOfObjectPoolReq_reserved5_xer_, &OCTETSTRING_json_, &EndOfObjectPoolReq_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EndOfObjectPoolReq_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       EndOfObjectPoolReq_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int EndOfObjectPoolReq_reserved6_oer_ext_arr_[0] = {};
+const int EndOfObjectPoolReq_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t EndOfObjectPoolReq_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, EndOfObjectPoolReq_reserved6_oer_ext_arr_, 0, EndOfObjectPoolReq_reserved6_oer_p_};
+const TTCN_Typedescriptor_t EndOfObjectPoolReq_reserved6_descr_ = { "@IsobusVTMessageTypes.EndOfObjectPoolReq.reserved6", &OCTETSTRING_ber_, &EndOfObjectPoolReq_reserved6_raw_, &OCTETSTRING_text_, &EndOfObjectPoolReq_reserved6_xer_, &OCTETSTRING_json_, &EndOfObjectPoolReq_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EndOfObjectPoolReq_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       EndOfObjectPoolReq_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int EndOfObjectPoolReq_reserved7_oer_ext_arr_[0] = {};
+const int EndOfObjectPoolReq_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t EndOfObjectPoolReq_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, EndOfObjectPoolReq_reserved7_oer_ext_arr_, 0, EndOfObjectPoolReq_reserved7_oer_p_};
+const TTCN_Typedescriptor_t EndOfObjectPoolReq_reserved7_descr_ = { "@IsobusVTMessageTypes.EndOfObjectPoolReq.reserved7", &OCTETSTRING_ber_, &EndOfObjectPoolReq_reserved7_raw_, &OCTETSTRING_text_, &EndOfObjectPoolReq_reserved7_xer_, &OCTETSTRING_json_, &EndOfObjectPoolReq_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EndOfObjectPoolReq_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       EndOfObjectPoolReq_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int EndOfObjectPoolReq_reserved8_oer_ext_arr_[0] = {};
+const int EndOfObjectPoolReq_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t EndOfObjectPoolReq_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, EndOfObjectPoolReq_reserved8_oer_ext_arr_, 0, EndOfObjectPoolReq_reserved8_oer_p_};
+const TTCN_Typedescriptor_t EndOfObjectPoolReq_reserved8_descr_ = { "@IsobusVTMessageTypes.EndOfObjectPoolReq.reserved8", &OCTETSTRING_ber_, &EndOfObjectPoolReq_reserved8_raw_, &OCTETSTRING_text_, &EndOfObjectPoolReq_reserved8_xer_, &OCTETSTRING_json_, &EndOfObjectPoolReq_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EndOfObjectPoolReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for EndOfObjectPoolReq
+const TTCN_Typedescriptor_t EndOfObjectPoolReq_descr_ = { "@IsobusVTMessageTypes.EndOfObjectPoolReq", NULL, &EndOfObjectPoolReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       EndOfObjectPoolResErrorCodes_thereAreErrorsInTheObjectPool_xer_ = { {"thereAreErrorsInTheObjectPool>\n", "thereAreErrorsInTheObjectPool>\n"}, {31, 31}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int EndOfObjectPoolResErrorCodes_thereAreErrorsInTheObjectPool_oer_ext_arr_[0] = {};
+const int EndOfObjectPoolResErrorCodes_thereAreErrorsInTheObjectPool_oer_p_[0] = {};
+const TTCN_OERdescriptor_t EndOfObjectPoolResErrorCodes_thereAreErrorsInTheObjectPool_oer_ = { -1, TRUE, -1, FALSE, 0, 0, EndOfObjectPoolResErrorCodes_thereAreErrorsInTheObjectPool_oer_ext_arr_, 0, EndOfObjectPoolResErrorCodes_thereAreErrorsInTheObjectPool_oer_p_};
+const TTCN_Typedescriptor_t EndOfObjectPoolResErrorCodes_thereAreErrorsInTheObjectPool_descr_ = { "@IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes.thereAreErrorsInTheObjectPool", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &EndOfObjectPoolResErrorCodes_thereAreErrorsInTheObjectPool_xer_, &BOOLEAN_json_, &EndOfObjectPoolResErrorCodes_thereAreErrorsInTheObjectPool_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       EndOfObjectPoolResErrorCodes_vtRanOutOfMemoryDuringTransfer_xer_ = { {"vtRanOutOfMemoryDuringTransfer>\n", "vtRanOutOfMemoryDuringTransfer>\n"}, {32, 32}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int EndOfObjectPoolResErrorCodes_vtRanOutOfMemoryDuringTransfer_oer_ext_arr_[0] = {};
+const int EndOfObjectPoolResErrorCodes_vtRanOutOfMemoryDuringTransfer_oer_p_[0] = {};
+const TTCN_OERdescriptor_t EndOfObjectPoolResErrorCodes_vtRanOutOfMemoryDuringTransfer_oer_ = { -1, TRUE, -1, FALSE, 0, 0, EndOfObjectPoolResErrorCodes_vtRanOutOfMemoryDuringTransfer_oer_ext_arr_, 0, EndOfObjectPoolResErrorCodes_vtRanOutOfMemoryDuringTransfer_oer_p_};
+const TTCN_Typedescriptor_t EndOfObjectPoolResErrorCodes_vtRanOutOfMemoryDuringTransfer_descr_ = { "@IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes.vtRanOutOfMemoryDuringTransfer", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &EndOfObjectPoolResErrorCodes_vtRanOutOfMemoryDuringTransfer_xer_, &BOOLEAN_json_, &EndOfObjectPoolResErrorCodes_vtRanOutOfMemoryDuringTransfer_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       EndOfObjectPoolResErrorCodes_reserved2_xer_ = { {"reserved2>\n", "reserved2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int EndOfObjectPoolResErrorCodes_reserved2_oer_ext_arr_[0] = {};
+const int EndOfObjectPoolResErrorCodes_reserved2_oer_p_[0] = {};
+const TTCN_OERdescriptor_t EndOfObjectPoolResErrorCodes_reserved2_oer_ = { -1, TRUE, -1, FALSE, 0, 0, EndOfObjectPoolResErrorCodes_reserved2_oer_ext_arr_, 0, EndOfObjectPoolResErrorCodes_reserved2_oer_p_};
+const TTCN_Typedescriptor_t EndOfObjectPoolResErrorCodes_reserved2_descr_ = { "@IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes.reserved2", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &EndOfObjectPoolResErrorCodes_reserved2_xer_, &BOOLEAN_json_, &EndOfObjectPoolResErrorCodes_reserved2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       EndOfObjectPoolResErrorCodes_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int EndOfObjectPoolResErrorCodes_reserved3_oer_ext_arr_[0] = {};
+const int EndOfObjectPoolResErrorCodes_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t EndOfObjectPoolResErrorCodes_reserved3_oer_ = { -1, TRUE, -1, FALSE, 0, 0, EndOfObjectPoolResErrorCodes_reserved3_oer_ext_arr_, 0, EndOfObjectPoolResErrorCodes_reserved3_oer_p_};
+const TTCN_Typedescriptor_t EndOfObjectPoolResErrorCodes_reserved3_descr_ = { "@IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes.reserved3", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &EndOfObjectPoolResErrorCodes_reserved3_xer_, &BOOLEAN_json_, &EndOfObjectPoolResErrorCodes_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       EndOfObjectPoolResErrorCodes_anyOtherError_xer_ = { {"anyOtherError>\n", "anyOtherError>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int EndOfObjectPoolResErrorCodes_anyOtherError_oer_ext_arr_[0] = {};
+const int EndOfObjectPoolResErrorCodes_anyOtherError_oer_p_[0] = {};
+const TTCN_OERdescriptor_t EndOfObjectPoolResErrorCodes_anyOtherError_oer_ = { -1, TRUE, -1, FALSE, 0, 0, EndOfObjectPoolResErrorCodes_anyOtherError_oer_ext_arr_, 0, EndOfObjectPoolResErrorCodes_anyOtherError_oer_p_};
+const TTCN_Typedescriptor_t EndOfObjectPoolResErrorCodes_anyOtherError_descr_ = { "@IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes.anyOtherError", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &EndOfObjectPoolResErrorCodes_anyOtherError_xer_, &BOOLEAN_json_, &EndOfObjectPoolResErrorCodes_anyOtherError_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       EndOfObjectPoolResErrorCodes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int EndOfObjectPoolResErrorCodes_reserved5_oer_ext_arr_[0] = {};
+const int EndOfObjectPoolResErrorCodes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t EndOfObjectPoolResErrorCodes_reserved5_oer_ = { -1, TRUE, -1, FALSE, 0, 0, EndOfObjectPoolResErrorCodes_reserved5_oer_ext_arr_, 0, EndOfObjectPoolResErrorCodes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t EndOfObjectPoolResErrorCodes_reserved5_descr_ = { "@IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes.reserved5", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &EndOfObjectPoolResErrorCodes_reserved5_xer_, &BOOLEAN_json_, &EndOfObjectPoolResErrorCodes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       EndOfObjectPoolResErrorCodes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int EndOfObjectPoolResErrorCodes_reserved6_oer_ext_arr_[0] = {};
+const int EndOfObjectPoolResErrorCodes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t EndOfObjectPoolResErrorCodes_reserved6_oer_ = { -1, TRUE, -1, FALSE, 0, 0, EndOfObjectPoolResErrorCodes_reserved6_oer_ext_arr_, 0, EndOfObjectPoolResErrorCodes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t EndOfObjectPoolResErrorCodes_reserved6_descr_ = { "@IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes.reserved6", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &EndOfObjectPoolResErrorCodes_reserved6_xer_, &BOOLEAN_json_, &EndOfObjectPoolResErrorCodes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       EndOfObjectPoolResErrorCodes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int EndOfObjectPoolResErrorCodes_reserved7_oer_ext_arr_[0] = {};
+const int EndOfObjectPoolResErrorCodes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t EndOfObjectPoolResErrorCodes_reserved7_oer_ = { -1, TRUE, -1, FALSE, 0, 0, EndOfObjectPoolResErrorCodes_reserved7_oer_ext_arr_, 0, EndOfObjectPoolResErrorCodes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t EndOfObjectPoolResErrorCodes_reserved7_descr_ = { "@IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes.reserved7", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &EndOfObjectPoolResErrorCodes_reserved7_xer_, &BOOLEAN_json_, &EndOfObjectPoolResErrorCodes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EndOfObjectPoolResErrorCodes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for EndOfObjectPoolResErrorCodes
+const TTCN_Typedescriptor_t EndOfObjectPoolResErrorCodes_descr_ = { "@IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes", NULL, &EndOfObjectPoolResErrorCodes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       EndOfObjectPoolResObjectPoolErrorCodes_methodOrAttributeNotSupportedByTheVT_xer_ = { {"methodOrAttributeNotSupportedByTheVT>\n", "methodOrAttributeNotSupportedByTheVT>\n"}, {38, 38}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int EndOfObjectPoolResObjectPoolErrorCodes_methodOrAttributeNotSupportedByTheVT_oer_ext_arr_[0] = {};
+const int EndOfObjectPoolResObjectPoolErrorCodes_methodOrAttributeNotSupportedByTheVT_oer_p_[0] = {};
+const TTCN_OERdescriptor_t EndOfObjectPoolResObjectPoolErrorCodes_methodOrAttributeNotSupportedByTheVT_oer_ = { -1, TRUE, -1, FALSE, 0, 0, EndOfObjectPoolResObjectPoolErrorCodes_methodOrAttributeNotSupportedByTheVT_oer_ext_arr_, 0, EndOfObjectPoolResObjectPoolErrorCodes_methodOrAttributeNotSupportedByTheVT_oer_p_};
+const TTCN_Typedescriptor_t EndOfObjectPoolResObjectPoolErrorCodes_methodOrAttributeNotSupportedByTheVT_descr_ = { "@IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes.methodOrAttributeNotSupportedByTheVT", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &EndOfObjectPoolResObjectPoolErrorCodes_methodOrAttributeNotSupportedByTheVT_xer_, &BOOLEAN_json_, &EndOfObjectPoolResObjectPoolErrorCodes_methodOrAttributeNotSupportedByTheVT_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       EndOfObjectPoolResObjectPoolErrorCodes_unknownObjectReference_xer_ = { {"unknownObjectReference>\n", "unknownObjectReference>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int EndOfObjectPoolResObjectPoolErrorCodes_unknownObjectReference_oer_ext_arr_[0] = {};
+const int EndOfObjectPoolResObjectPoolErrorCodes_unknownObjectReference_oer_p_[0] = {};
+const TTCN_OERdescriptor_t EndOfObjectPoolResObjectPoolErrorCodes_unknownObjectReference_oer_ = { -1, TRUE, -1, FALSE, 0, 0, EndOfObjectPoolResObjectPoolErrorCodes_unknownObjectReference_oer_ext_arr_, 0, EndOfObjectPoolResObjectPoolErrorCodes_unknownObjectReference_oer_p_};
+const TTCN_Typedescriptor_t EndOfObjectPoolResObjectPoolErrorCodes_unknownObjectReference_descr_ = { "@IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes.unknownObjectReference", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &EndOfObjectPoolResObjectPoolErrorCodes_unknownObjectReference_xer_, &BOOLEAN_json_, &EndOfObjectPoolResObjectPoolErrorCodes_unknownObjectReference_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       EndOfObjectPoolResObjectPoolErrorCodes_anyOtherError_xer_ = { {"anyOtherError>\n", "anyOtherError>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int EndOfObjectPoolResObjectPoolErrorCodes_anyOtherError_oer_ext_arr_[0] = {};
+const int EndOfObjectPoolResObjectPoolErrorCodes_anyOtherError_oer_p_[0] = {};
+const TTCN_OERdescriptor_t EndOfObjectPoolResObjectPoolErrorCodes_anyOtherError_oer_ = { -1, TRUE, -1, FALSE, 0, 0, EndOfObjectPoolResObjectPoolErrorCodes_anyOtherError_oer_ext_arr_, 0, EndOfObjectPoolResObjectPoolErrorCodes_anyOtherError_oer_p_};
+const TTCN_Typedescriptor_t EndOfObjectPoolResObjectPoolErrorCodes_anyOtherError_descr_ = { "@IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes.anyOtherError", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &EndOfObjectPoolResObjectPoolErrorCodes_anyOtherError_xer_, &BOOLEAN_json_, &EndOfObjectPoolResObjectPoolErrorCodes_anyOtherError_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       EndOfObjectPoolResObjectPoolErrorCodes_objectPoolWasDeletedFromVolatileMemory_xer_ = { {"objectPoolWasDeletedFromVolatileMemory>\n", "objectPoolWasDeletedFromVolatileMemory>\n"}, {40, 40}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int EndOfObjectPoolResObjectPoolErrorCodes_objectPoolWasDeletedFromVolatileMemory_oer_ext_arr_[0] = {};
+const int EndOfObjectPoolResObjectPoolErrorCodes_objectPoolWasDeletedFromVolatileMemory_oer_p_[0] = {};
+const TTCN_OERdescriptor_t EndOfObjectPoolResObjectPoolErrorCodes_objectPoolWasDeletedFromVolatileMemory_oer_ = { -1, TRUE, -1, FALSE, 0, 0, EndOfObjectPoolResObjectPoolErrorCodes_objectPoolWasDeletedFromVolatileMemory_oer_ext_arr_, 0, EndOfObjectPoolResObjectPoolErrorCodes_objectPoolWasDeletedFromVolatileMemory_oer_p_};
+const TTCN_Typedescriptor_t EndOfObjectPoolResObjectPoolErrorCodes_objectPoolWasDeletedFromVolatileMemory_descr_ = { "@IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes.objectPoolWasDeletedFromVolatileMemory", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &EndOfObjectPoolResObjectPoolErrorCodes_objectPoolWasDeletedFromVolatileMemory_xer_, &BOOLEAN_json_, &EndOfObjectPoolResObjectPoolErrorCodes_objectPoolWasDeletedFromVolatileMemory_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       EndOfObjectPoolResObjectPoolErrorCodes_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int EndOfObjectPoolResObjectPoolErrorCodes_reserved4_oer_ext_arr_[0] = {};
+const int EndOfObjectPoolResObjectPoolErrorCodes_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t EndOfObjectPoolResObjectPoolErrorCodes_reserved4_oer_ = { -1, TRUE, -1, FALSE, 0, 0, EndOfObjectPoolResObjectPoolErrorCodes_reserved4_oer_ext_arr_, 0, EndOfObjectPoolResObjectPoolErrorCodes_reserved4_oer_p_};
+const TTCN_Typedescriptor_t EndOfObjectPoolResObjectPoolErrorCodes_reserved4_descr_ = { "@IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes.reserved4", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &EndOfObjectPoolResObjectPoolErrorCodes_reserved4_xer_, &BOOLEAN_json_, &EndOfObjectPoolResObjectPoolErrorCodes_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       EndOfObjectPoolResObjectPoolErrorCodes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int EndOfObjectPoolResObjectPoolErrorCodes_reserved5_oer_ext_arr_[0] = {};
+const int EndOfObjectPoolResObjectPoolErrorCodes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t EndOfObjectPoolResObjectPoolErrorCodes_reserved5_oer_ = { -1, TRUE, -1, FALSE, 0, 0, EndOfObjectPoolResObjectPoolErrorCodes_reserved5_oer_ext_arr_, 0, EndOfObjectPoolResObjectPoolErrorCodes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t EndOfObjectPoolResObjectPoolErrorCodes_reserved5_descr_ = { "@IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes.reserved5", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &EndOfObjectPoolResObjectPoolErrorCodes_reserved5_xer_, &BOOLEAN_json_, &EndOfObjectPoolResObjectPoolErrorCodes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       EndOfObjectPoolResObjectPoolErrorCodes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int EndOfObjectPoolResObjectPoolErrorCodes_reserved6_oer_ext_arr_[0] = {};
+const int EndOfObjectPoolResObjectPoolErrorCodes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t EndOfObjectPoolResObjectPoolErrorCodes_reserved6_oer_ = { -1, TRUE, -1, FALSE, 0, 0, EndOfObjectPoolResObjectPoolErrorCodes_reserved6_oer_ext_arr_, 0, EndOfObjectPoolResObjectPoolErrorCodes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t EndOfObjectPoolResObjectPoolErrorCodes_reserved6_descr_ = { "@IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes.reserved6", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &EndOfObjectPoolResObjectPoolErrorCodes_reserved6_xer_, &BOOLEAN_json_, &EndOfObjectPoolResObjectPoolErrorCodes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       EndOfObjectPoolResObjectPoolErrorCodes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int EndOfObjectPoolResObjectPoolErrorCodes_reserved7_oer_ext_arr_[0] = {};
+const int EndOfObjectPoolResObjectPoolErrorCodes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t EndOfObjectPoolResObjectPoolErrorCodes_reserved7_oer_ = { -1, TRUE, -1, FALSE, 0, 0, EndOfObjectPoolResObjectPoolErrorCodes_reserved7_oer_ext_arr_, 0, EndOfObjectPoolResObjectPoolErrorCodes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t EndOfObjectPoolResObjectPoolErrorCodes_reserved7_descr_ = { "@IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes.reserved7", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &EndOfObjectPoolResObjectPoolErrorCodes_reserved7_xer_, &BOOLEAN_json_, &EndOfObjectPoolResObjectPoolErrorCodes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EndOfObjectPoolResObjectPoolErrorCodes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for EndOfObjectPoolResObjectPoolErrorCodes
+const TTCN_Typedescriptor_t EndOfObjectPoolResObjectPoolErrorCodes_descr_ = { "@IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes", NULL, &EndOfObjectPoolResObjectPoolErrorCodes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       EndOfObjectPoolRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t EndOfObjectPoolRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t EndOfObjectPoolRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.EndOfObjectPoolRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &EndOfObjectPoolRes_vtfunction_xer_, &INTEGER_json_, &EndOfObjectPoolRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       EndOfObjectPoolRes_parentObjectIDoFaultyObject_xer_ = { {"parentObjectIDoFaultyObject>\n", "parentObjectIDoFaultyObject>\n"}, {29, 29}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t EndOfObjectPoolRes_parentObjectIDoFaultyObject_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t EndOfObjectPoolRes_parentObjectIDoFaultyObject_descr_ = { "@IsobusVTMessageTypes.EndOfObjectPoolRes.parentObjectIDoFaultyObject", &INTEGER_ber_, &AnyObjectID_raw_, &INTEGER_text_, &EndOfObjectPoolRes_parentObjectIDoFaultyObject_xer_, &INTEGER_json_, &EndOfObjectPoolRes_parentObjectIDoFaultyObject_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       EndOfObjectPoolRes_objectIDofFaultyObject_xer_ = { {"objectIDofFaultyObject>\n", "objectIDofFaultyObject>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t EndOfObjectPoolRes_objectIDofFaultyObject_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t EndOfObjectPoolRes_objectIDofFaultyObject_descr_ = { "@IsobusVTMessageTypes.EndOfObjectPoolRes.objectIDofFaultyObject", &INTEGER_ber_, &AnyObjectID_raw_, &INTEGER_text_, &EndOfObjectPoolRes_objectIDofFaultyObject_xer_, &INTEGER_json_, &EndOfObjectPoolRes_objectIDofFaultyObject_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EndOfObjectPoolRes_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       EndOfObjectPoolRes_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int EndOfObjectPoolRes_reserved8_oer_ext_arr_[0] = {};
+const int EndOfObjectPoolRes_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t EndOfObjectPoolRes_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, EndOfObjectPoolRes_reserved8_oer_ext_arr_, 0, EndOfObjectPoolRes_reserved8_oer_p_};
+const TTCN_Typedescriptor_t EndOfObjectPoolRes_reserved8_descr_ = { "@IsobusVTMessageTypes.EndOfObjectPoolRes.reserved8", &OCTETSTRING_ber_, &EndOfObjectPoolRes_reserved8_raw_, &OCTETSTRING_text_, &EndOfObjectPoolRes_reserved8_xer_, &OCTETSTRING_json_, &EndOfObjectPoolRes_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EndOfObjectPoolRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for EndOfObjectPoolRes
+const TTCN_Typedescriptor_t EndOfObjectPoolRes_descr_ = { "@IsobusVTMessageTypes.EndOfObjectPoolRes", NULL, &EndOfObjectPoolRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTfunction32VT2ECU_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTfunction32VT2ECU_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTfunction32VT2ECU_vtfunction_descr_ = { "@IsobusVTMessageTypes.VTfunction32VT2ECU.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &VTfunction32VT2ECU_vtfunction_xer_, &INTEGER_json_, &VTfunction32VT2ECU_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTfunction32VT2ECU_notImplementedYet_xer_ = { {"notImplementedYet>\n", "notImplementedYet>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTfunction32VT2ECU_notImplementedYet_oer_ext_arr_[0] = {};
+const int VTfunction32VT2ECU_notImplementedYet_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTfunction32VT2ECU_notImplementedYet_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTfunction32VT2ECU_notImplementedYet_oer_ext_arr_, 0, VTfunction32VT2ECU_notImplementedYet_oer_p_};
+const TTCN_Typedescriptor_t VTfunction32VT2ECU_notImplementedYet_descr_ = { "@IsobusVTMessageTypes.VTfunction32VT2ECU.notImplementedYet", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &VTfunction32VT2ECU_notImplementedYet_xer_, &OCTETSTRING_json_, &VTfunction32VT2ECU_notImplementedYet_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTfunction32VT2ECU_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for VTfunction32VT2ECU
+const TTCN_Typedescriptor_t VTfunction32VT2ECU_descr_ = { "@IsobusVTMessageTypes.VTfunction32VT2ECU", NULL, &VTfunction32VT2ECU_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTfunction32ECU2VT_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTfunction32ECU2VT_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTfunction32ECU2VT_vtfunction_descr_ = { "@IsobusVTMessageTypes.VTfunction32ECU2VT.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &VTfunction32ECU2VT_vtfunction_xer_, &INTEGER_json_, &VTfunction32ECU2VT_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTfunction32ECU2VT_notImplementedYet_xer_ = { {"notImplementedYet>\n", "notImplementedYet>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTfunction32ECU2VT_notImplementedYet_oer_ext_arr_[0] = {};
+const int VTfunction32ECU2VT_notImplementedYet_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTfunction32ECU2VT_notImplementedYet_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTfunction32ECU2VT_notImplementedYet_oer_ext_arr_, 0, VTfunction32ECU2VT_notImplementedYet_oer_p_};
+const TTCN_Typedescriptor_t VTfunction32ECU2VT_notImplementedYet_descr_ = { "@IsobusVTMessageTypes.VTfunction32ECU2VT.notImplementedYet", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &VTfunction32ECU2VT_notImplementedYet_xer_, &OCTETSTRING_json_, &VTfunction32ECU2VT_notImplementedYet_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTfunction32ECU2VT_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for VTfunction32ECU2VT
+const TTCN_Typedescriptor_t VTfunction32ECU2VT_descr_ = { "@IsobusVTMessageTypes.VTfunction32ECU2VT", NULL, &VTfunction32ECU2VT_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTfunction33ECU2VT_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTfunction33ECU2VT_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTfunction33ECU2VT_vtfunction_descr_ = { "@IsobusVTMessageTypes.VTfunction33ECU2VT.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &VTfunction33ECU2VT_vtfunction_xer_, &INTEGER_json_, &VTfunction33ECU2VT_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTfunction33ECU2VT_notImplementedYet_xer_ = { {"notImplementedYet>\n", "notImplementedYet>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTfunction33ECU2VT_notImplementedYet_oer_ext_arr_[0] = {};
+const int VTfunction33ECU2VT_notImplementedYet_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTfunction33ECU2VT_notImplementedYet_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTfunction33ECU2VT_notImplementedYet_oer_ext_arr_, 0, VTfunction33ECU2VT_notImplementedYet_oer_p_};
+const TTCN_Typedescriptor_t VTfunction33ECU2VT_notImplementedYet_descr_ = { "@IsobusVTMessageTypes.VTfunction33ECU2VT.notImplementedYet", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &VTfunction33ECU2VT_notImplementedYet_xer_, &OCTETSTRING_json_, &VTfunction33ECU2VT_notImplementedYet_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTfunction33ECU2VT_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for VTfunction33ECU2VT
+const TTCN_Typedescriptor_t VTfunction33ECU2VT_descr_ = { "@IsobusVTMessageTypes.VTfunction33ECU2VT", NULL, &VTfunction33ECU2VT_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTfunction34VT2ECU_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTfunction34VT2ECU_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTfunction34VT2ECU_vtfunction_descr_ = { "@IsobusVTMessageTypes.VTfunction34VT2ECU.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &VTfunction34VT2ECU_vtfunction_xer_, &INTEGER_json_, &VTfunction34VT2ECU_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTfunction34VT2ECU_notImplementedYet_xer_ = { {"notImplementedYet>\n", "notImplementedYet>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTfunction34VT2ECU_notImplementedYet_oer_ext_arr_[0] = {};
+const int VTfunction34VT2ECU_notImplementedYet_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTfunction34VT2ECU_notImplementedYet_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTfunction34VT2ECU_notImplementedYet_oer_ext_arr_, 0, VTfunction34VT2ECU_notImplementedYet_oer_p_};
+const TTCN_Typedescriptor_t VTfunction34VT2ECU_notImplementedYet_descr_ = { "@IsobusVTMessageTypes.VTfunction34VT2ECU.notImplementedYet", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &VTfunction34VT2ECU_notImplementedYet_xer_, &OCTETSTRING_json_, &VTfunction34VT2ECU_notImplementedYet_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTfunction34VT2ECU_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for VTfunction34VT2ECU
+const TTCN_Typedescriptor_t VTfunction34VT2ECU_descr_ = { "@IsobusVTMessageTypes.VTfunction34VT2ECU", NULL, &VTfunction34VT2ECU_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTfunction34ECU2VT_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTfunction34ECU2VT_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTfunction34ECU2VT_vtfunction_descr_ = { "@IsobusVTMessageTypes.VTfunction34ECU2VT.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &VTfunction34ECU2VT_vtfunction_xer_, &INTEGER_json_, &VTfunction34ECU2VT_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTfunction34ECU2VT_notImplementedYet_xer_ = { {"notImplementedYet>\n", "notImplementedYet>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTfunction34ECU2VT_notImplementedYet_oer_ext_arr_[0] = {};
+const int VTfunction34ECU2VT_notImplementedYet_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTfunction34ECU2VT_notImplementedYet_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTfunction34ECU2VT_notImplementedYet_oer_ext_arr_, 0, VTfunction34ECU2VT_notImplementedYet_oer_p_};
+const TTCN_Typedescriptor_t VTfunction34ECU2VT_notImplementedYet_descr_ = { "@IsobusVTMessageTypes.VTfunction34ECU2VT.notImplementedYet", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &VTfunction34ECU2VT_notImplementedYet_xer_, &OCTETSTRING_json_, &VTfunction34ECU2VT_notImplementedYet_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTfunction34ECU2VT_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for VTfunction34ECU2VT
+const TTCN_Typedescriptor_t VTfunction34ECU2VT_descr_ = { "@IsobusVTMessageTypes.VTfunction34ECU2VT", NULL, &VTfunction34ECU2VT_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTfunction36VT2ECU_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTfunction36VT2ECU_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTfunction36VT2ECU_vtfunction_descr_ = { "@IsobusVTMessageTypes.VTfunction36VT2ECU.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &VTfunction36VT2ECU_vtfunction_xer_, &INTEGER_json_, &VTfunction36VT2ECU_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTfunction36VT2ECU_notImplementedYet_xer_ = { {"notImplementedYet>\n", "notImplementedYet>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTfunction36VT2ECU_notImplementedYet_oer_ext_arr_[0] = {};
+const int VTfunction36VT2ECU_notImplementedYet_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTfunction36VT2ECU_notImplementedYet_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTfunction36VT2ECU_notImplementedYet_oer_ext_arr_, 0, VTfunction36VT2ECU_notImplementedYet_oer_p_};
+const TTCN_Typedescriptor_t VTfunction36VT2ECU_notImplementedYet_descr_ = { "@IsobusVTMessageTypes.VTfunction36VT2ECU.notImplementedYet", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &VTfunction36VT2ECU_notImplementedYet_xer_, &OCTETSTRING_json_, &VTfunction36VT2ECU_notImplementedYet_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTfunction36VT2ECU_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for VTfunction36VT2ECU
+const TTCN_Typedescriptor_t VTfunction36VT2ECU_descr_ = { "@IsobusVTMessageTypes.VTfunction36VT2ECU", NULL, &VTfunction36VT2ECU_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTfunction36ECU2VT_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTfunction36ECU2VT_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTfunction36ECU2VT_vtfunction_descr_ = { "@IsobusVTMessageTypes.VTfunction36ECU2VT.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &VTfunction36ECU2VT_vtfunction_xer_, &INTEGER_json_, &VTfunction36ECU2VT_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTfunction36ECU2VT_notImplementedYet_xer_ = { {"notImplementedYet>\n", "notImplementedYet>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTfunction36ECU2VT_notImplementedYet_oer_ext_arr_[0] = {};
+const int VTfunction36ECU2VT_notImplementedYet_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTfunction36ECU2VT_notImplementedYet_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTfunction36ECU2VT_notImplementedYet_oer_ext_arr_, 0, VTfunction36ECU2VT_notImplementedYet_oer_p_};
+const TTCN_Typedescriptor_t VTfunction36ECU2VT_notImplementedYet_descr_ = { "@IsobusVTMessageTypes.VTfunction36ECU2VT.notImplementedYet", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &VTfunction36ECU2VT_notImplementedYet_xer_, &OCTETSTRING_json_, &VTfunction36ECU2VT_notImplementedYet_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTfunction36ECU2VT_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for VTfunction36ECU2VT
+const TTCN_Typedescriptor_t VTfunction36ECU2VT_descr_ = { "@IsobusVTMessageTypes.VTfunction36ECU2VT", NULL, &VTfunction36ECU2VT_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTfunction37VT2ECU_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTfunction37VT2ECU_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTfunction37VT2ECU_vtfunction_descr_ = { "@IsobusVTMessageTypes.VTfunction37VT2ECU.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &VTfunction37VT2ECU_vtfunction_xer_, &INTEGER_json_, &VTfunction37VT2ECU_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTfunction37VT2ECU_notImplementedYet_xer_ = { {"notImplementedYet>\n", "notImplementedYet>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTfunction37VT2ECU_notImplementedYet_oer_ext_arr_[0] = {};
+const int VTfunction37VT2ECU_notImplementedYet_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTfunction37VT2ECU_notImplementedYet_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTfunction37VT2ECU_notImplementedYet_oer_ext_arr_, 0, VTfunction37VT2ECU_notImplementedYet_oer_p_};
+const TTCN_Typedescriptor_t VTfunction37VT2ECU_notImplementedYet_descr_ = { "@IsobusVTMessageTypes.VTfunction37VT2ECU.notImplementedYet", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &VTfunction37VT2ECU_notImplementedYet_xer_, &OCTETSTRING_json_, &VTfunction37VT2ECU_notImplementedYet_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTfunction37VT2ECU_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for VTfunction37VT2ECU
+const TTCN_Typedescriptor_t VTfunction37VT2ECU_descr_ = { "@IsobusVTMessageTypes.VTfunction37VT2ECU", NULL, &VTfunction37VT2ECU_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTfunction37ECU2VT_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTfunction37ECU2VT_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTfunction37ECU2VT_vtfunction_descr_ = { "@IsobusVTMessageTypes.VTfunction37ECU2VT.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &VTfunction37ECU2VT_vtfunction_xer_, &INTEGER_json_, &VTfunction37ECU2VT_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTfunction37ECU2VT_notImplementedYet_xer_ = { {"notImplementedYet>\n", "notImplementedYet>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTfunction37ECU2VT_notImplementedYet_oer_ext_arr_[0] = {};
+const int VTfunction37ECU2VT_notImplementedYet_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTfunction37ECU2VT_notImplementedYet_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTfunction37ECU2VT_notImplementedYet_oer_ext_arr_, 0, VTfunction37ECU2VT_notImplementedYet_oer_p_};
+const TTCN_Typedescriptor_t VTfunction37ECU2VT_notImplementedYet_descr_ = { "@IsobusVTMessageTypes.VTfunction37ECU2VT.notImplementedYet", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &VTfunction37ECU2VT_notImplementedYet_xer_, &OCTETSTRING_json_, &VTfunction37ECU2VT_notImplementedYet_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTfunction37ECU2VT_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for VTfunction37ECU2VT
+const TTCN_Typedescriptor_t VTfunction37ECU2VT_descr_ = { "@IsobusVTMessageTypes.VTfunction37ECU2VT", NULL, &VTfunction37ECU2VT_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       AuxiliaryInputType2StatusInd__AuxiliaryInputObjectID_xer_ = { {"AuxiliaryInputType2StatusInd_AuxiliaryInputObjectID>\n", "AuxiliaryInputType2StatusInd_AuxiliaryInputObjectID>\n"}, {53, 53}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t AuxiliaryInputType2StatusInd__AuxiliaryInputObjectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t AuxiliaryInputType2StatusInd__AuxiliaryInputObjectID_descr_ = { "@IsobusVTMessageTypes.AuxiliaryInputType2StatusInd_AuxiliaryInputObjectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &AuxiliaryInputType2StatusInd__AuxiliaryInputObjectID_xer_, &INTEGER_json_, &AuxiliaryInputType2StatusInd__AuxiliaryInputObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       AuxiliaryInputType2StatusInd__OperatingStateType_xer_ = { {"AuxiliaryInputType2StatusInd_OperatingStateType>\n", "AuxiliaryInputType2StatusInd_OperatingStateType>\n"}, {49, 49}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t AuxiliaryInputType2StatusInd__OperatingStateType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t AuxiliaryInputType2StatusInd__OperatingStateType_descr_ = { "@IsobusVTMessageTypes.AuxiliaryInputType2StatusInd_OperatingStateType", &BITSTRING_ber_, &General__Types::BIT2np_raw_, NULL, &AuxiliaryInputType2StatusInd__OperatingStateType_xer_, &BITSTRING_json_, &AuxiliaryInputType2StatusInd__OperatingStateType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       AuxiliaryInputType2StatusInd_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t AuxiliaryInputType2StatusInd_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t AuxiliaryInputType2StatusInd_vtfunction_descr_ = { "@IsobusVTMessageTypes.AuxiliaryInputType2StatusInd.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &AuxiliaryInputType2StatusInd_vtfunction_xer_, &INTEGER_json_, &AuxiliaryInputType2StatusInd_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       AuxiliaryInputType2StatusInd_auxiliaryInputObjectID_xer_ = { {"auxiliaryInputObjectID>\n", "auxiliaryInputObjectID>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t AuxiliaryInputType2StatusInd_auxiliaryInputObjectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t AuxiliaryInputType2StatusInd_auxiliaryInputObjectID_descr_ = { "@IsobusVTMessageTypes.AuxiliaryInputType2StatusInd.auxiliaryInputObjectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &AuxiliaryInputType2StatusInd_auxiliaryInputObjectID_xer_, &INTEGER_json_, &AuxiliaryInputType2StatusInd_auxiliaryInputObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       AuxiliaryInputType2StatusInd_value1_xer_ = { {"value1>\n", "value1>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int AuxiliaryInputType2StatusInd_value1_oer_ext_arr_[0] = {};
+const int AuxiliaryInputType2StatusInd_value1_oer_p_[0] = {};
+const TTCN_OERdescriptor_t AuxiliaryInputType2StatusInd_value1_oer_ = { -1, TRUE, 2, FALSE, 0, 0, AuxiliaryInputType2StatusInd_value1_oer_ext_arr_, 0, AuxiliaryInputType2StatusInd_value1_oer_p_};
+const TTCN_Typedescriptor_t AuxiliaryInputType2StatusInd_value1_descr_ = { "@IsobusVTMessageTypes.AuxiliaryInputType2StatusInd.value1", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &AuxiliaryInputType2StatusInd_value1_xer_, &OCTETSTRING_json_, &AuxiliaryInputType2StatusInd_value1_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       AuxiliaryInputType2StatusInd_value2_xer_ = { {"value2>\n", "value2>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int AuxiliaryInputType2StatusInd_value2_oer_ext_arr_[0] = {};
+const int AuxiliaryInputType2StatusInd_value2_oer_p_[0] = {};
+const TTCN_OERdescriptor_t AuxiliaryInputType2StatusInd_value2_oer_ = { -1, TRUE, 2, FALSE, 0, 0, AuxiliaryInputType2StatusInd_value2_oer_ext_arr_, 0, AuxiliaryInputType2StatusInd_value2_oer_p_};
+const TTCN_Typedescriptor_t AuxiliaryInputType2StatusInd_value2_descr_ = { "@IsobusVTMessageTypes.AuxiliaryInputType2StatusInd.value2", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &AuxiliaryInputType2StatusInd_value2_xer_, &OCTETSTRING_json_, &AuxiliaryInputType2StatusInd_value2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       AuxiliaryInputType2StatusInd_operationState_xer_ = { {"operationState>\n", "operationState>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t AuxiliaryInputType2StatusInd_operationState_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t AuxiliaryInputType2StatusInd_operationState_descr_ = { "@IsobusVTMessageTypes.AuxiliaryInputType2StatusInd.operationState", &BITSTRING_ber_, &General__Types::BIT2np_raw_, NULL, &AuxiliaryInputType2StatusInd_operationState_xer_, &BITSTRING_json_, &AuxiliaryInputType2StatusInd_operationState_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t AuxiliaryInputType2StatusInd_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for AuxiliaryInputType2StatusInd
+const TTCN_Typedescriptor_t AuxiliaryInputType2StatusInd_descr_ = { "@IsobusVTMessageTypes.AuxiliaryInputType2StatusInd", NULL, &AuxiliaryInputType2StatusInd_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTfunction39VT2ECU_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTfunction39VT2ECU_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTfunction39VT2ECU_vtfunction_descr_ = { "@IsobusVTMessageTypes.VTfunction39VT2ECU.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &VTfunction39VT2ECU_vtfunction_xer_, &INTEGER_json_, &VTfunction39VT2ECU_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTfunction39VT2ECU_notImplementedYet_xer_ = { {"notImplementedYet>\n", "notImplementedYet>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTfunction39VT2ECU_notImplementedYet_oer_ext_arr_[0] = {};
+const int VTfunction39VT2ECU_notImplementedYet_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTfunction39VT2ECU_notImplementedYet_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTfunction39VT2ECU_notImplementedYet_oer_ext_arr_, 0, VTfunction39VT2ECU_notImplementedYet_oer_p_};
+const TTCN_Typedescriptor_t VTfunction39VT2ECU_notImplementedYet_descr_ = { "@IsobusVTMessageTypes.VTfunction39VT2ECU.notImplementedYet", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &VTfunction39VT2ECU_notImplementedYet_xer_, &OCTETSTRING_json_, &VTfunction39VT2ECU_notImplementedYet_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTfunction39VT2ECU_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for VTfunction39VT2ECU
+const TTCN_Typedescriptor_t VTfunction39VT2ECU_descr_ = { "@IsobusVTMessageTypes.VTfunction39VT2ECU", NULL, &VTfunction39VT2ECU_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTfunction39ECU2VT_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTfunction39ECU2VT_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTfunction39ECU2VT_vtfunction_descr_ = { "@IsobusVTMessageTypes.VTfunction39ECU2VT.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &VTfunction39ECU2VT_vtfunction_xer_, &INTEGER_json_, &VTfunction39ECU2VT_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTfunction39ECU2VT_notImplementedYet_xer_ = { {"notImplementedYet>\n", "notImplementedYet>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTfunction39ECU2VT_notImplementedYet_oer_ext_arr_[0] = {};
+const int VTfunction39ECU2VT_notImplementedYet_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTfunction39ECU2VT_notImplementedYet_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTfunction39ECU2VT_notImplementedYet_oer_ext_arr_, 0, VTfunction39ECU2VT_notImplementedYet_oer_p_};
+const TTCN_Typedescriptor_t VTfunction39ECU2VT_notImplementedYet_descr_ = { "@IsobusVTMessageTypes.VTfunction39ECU2VT.notImplementedYet", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &VTfunction39ECU2VT_notImplementedYet_xer_, &OCTETSTRING_json_, &VTfunction39ECU2VT_notImplementedYet_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTfunction39ECU2VT_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for VTfunction39ECU2VT
+const TTCN_Typedescriptor_t VTfunction39ECU2VT_descr_ = { "@IsobusVTMessageTypes.VTfunction39ECU2VT", NULL, &VTfunction39ECU2VT_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ESCreq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ESCreq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ESCreq_vtfunction_descr_ = { "@IsobusVTMessageTypes.ESCreq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ESCreq_vtfunction_xer_, &INTEGER_json_, &ESCreq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ESCreq_reserved2_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ESCreq_reserved2_xer_ = { {"reserved2>\n", "reserved2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ESCreq_reserved2_oer_ext_arr_[0] = {};
+const int ESCreq_reserved2_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ESCreq_reserved2_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ESCreq_reserved2_oer_ext_arr_, 0, ESCreq_reserved2_oer_p_};
+const TTCN_Typedescriptor_t ESCreq_reserved2_descr_ = { "@IsobusVTMessageTypes.ESCreq.reserved2", &OCTETSTRING_ber_, &ESCreq_reserved2_raw_, &OCTETSTRING_text_, &ESCreq_reserved2_xer_, &OCTETSTRING_json_, &ESCreq_reserved2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ESCreq_reserved3_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ESCreq_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ESCreq_reserved3_oer_ext_arr_[0] = {};
+const int ESCreq_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ESCreq_reserved3_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ESCreq_reserved3_oer_ext_arr_, 0, ESCreq_reserved3_oer_p_};
+const TTCN_Typedescriptor_t ESCreq_reserved3_descr_ = { "@IsobusVTMessageTypes.ESCreq.reserved3", &OCTETSTRING_ber_, &ESCreq_reserved3_raw_, &OCTETSTRING_text_, &ESCreq_reserved3_xer_, &OCTETSTRING_json_, &ESCreq_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ESCreq_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ESCreq_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ESCreq_reserved4_oer_ext_arr_[0] = {};
+const int ESCreq_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ESCreq_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ESCreq_reserved4_oer_ext_arr_, 0, ESCreq_reserved4_oer_p_};
+const TTCN_Typedescriptor_t ESCreq_reserved4_descr_ = { "@IsobusVTMessageTypes.ESCreq.reserved4", &OCTETSTRING_ber_, &ESCreq_reserved4_raw_, &OCTETSTRING_text_, &ESCreq_reserved4_xer_, &OCTETSTRING_json_, &ESCreq_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ESCreq_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ESCreq_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ESCreq_reserved5_oer_ext_arr_[0] = {};
+const int ESCreq_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ESCreq_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ESCreq_reserved5_oer_ext_arr_, 0, ESCreq_reserved5_oer_p_};
+const TTCN_Typedescriptor_t ESCreq_reserved5_descr_ = { "@IsobusVTMessageTypes.ESCreq.reserved5", &OCTETSTRING_ber_, &ESCreq_reserved5_raw_, &OCTETSTRING_text_, &ESCreq_reserved5_xer_, &OCTETSTRING_json_, &ESCreq_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ESCreq_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ESCreq_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ESCreq_reserved6_oer_ext_arr_[0] = {};
+const int ESCreq_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ESCreq_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ESCreq_reserved6_oer_ext_arr_, 0, ESCreq_reserved6_oer_p_};
+const TTCN_Typedescriptor_t ESCreq_reserved6_descr_ = { "@IsobusVTMessageTypes.ESCreq.reserved6", &OCTETSTRING_ber_, &ESCreq_reserved6_raw_, &OCTETSTRING_text_, &ESCreq_reserved6_xer_, &OCTETSTRING_json_, &ESCreq_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ESCreq_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ESCreq_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ESCreq_reserved7_oer_ext_arr_[0] = {};
+const int ESCreq_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ESCreq_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ESCreq_reserved7_oer_ext_arr_, 0, ESCreq_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ESCreq_reserved7_descr_ = { "@IsobusVTMessageTypes.ESCreq.reserved7", &OCTETSTRING_ber_, &ESCreq_reserved7_raw_, &OCTETSTRING_text_, &ESCreq_reserved7_xer_, &OCTETSTRING_json_, &ESCreq_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ESCreq_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ESCreq_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ESCreq_reserved8_oer_ext_arr_[0] = {};
+const int ESCreq_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ESCreq_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ESCreq_reserved8_oer_ext_arr_, 0, ESCreq_reserved8_oer_p_};
+const TTCN_Typedescriptor_t ESCreq_reserved8_descr_ = { "@IsobusVTMessageTypes.ESCreq.reserved8", &OCTETSTRING_ber_, &ESCreq_reserved8_raw_, &OCTETSTRING_text_, &ESCreq_reserved8_xer_, &OCTETSTRING_json_, &ESCreq_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ESCreq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ESCreq
+const TTCN_Typedescriptor_t ESCreq_descr_ = { "@IsobusVTMessageTypes.ESCreq", NULL, &ESCreq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ESCerrorCodes_NoInputFieldIsOpenForInputESCignored_xer_ = { {"NoInputFieldIsOpenForInputESCignored>\n", "NoInputFieldIsOpenForInputESCignored>\n"}, {38, 38}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ESCerrorCodes_NoInputFieldIsOpenForInputESCignored_oer_ext_arr_[0] = {};
+const int ESCerrorCodes_NoInputFieldIsOpenForInputESCignored_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ESCerrorCodes_NoInputFieldIsOpenForInputESCignored_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ESCerrorCodes_NoInputFieldIsOpenForInputESCignored_oer_ext_arr_, 0, ESCerrorCodes_NoInputFieldIsOpenForInputESCignored_oer_p_};
+const TTCN_Typedescriptor_t ESCerrorCodes_NoInputFieldIsOpenForInputESCignored_descr_ = { "@IsobusVTMessageTypes.ESCerrorCodes.NoInputFieldIsOpenForInputESCignored", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ESCerrorCodes_NoInputFieldIsOpenForInputESCignored_xer_, &BOOLEAN_json_, &ESCerrorCodes_NoInputFieldIsOpenForInputESCignored_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ESCerrorCodes_reserved1_xer_ = { {"reserved1>\n", "reserved1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ESCerrorCodes_reserved1_oer_ext_arr_[0] = {};
+const int ESCerrorCodes_reserved1_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ESCerrorCodes_reserved1_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ESCerrorCodes_reserved1_oer_ext_arr_, 0, ESCerrorCodes_reserved1_oer_p_};
+const TTCN_Typedescriptor_t ESCerrorCodes_reserved1_descr_ = { "@IsobusVTMessageTypes.ESCerrorCodes.reserved1", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ESCerrorCodes_reserved1_xer_, &BOOLEAN_json_, &ESCerrorCodes_reserved1_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ESCerrorCodes_reserved2_xer_ = { {"reserved2>\n", "reserved2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ESCerrorCodes_reserved2_oer_ext_arr_[0] = {};
+const int ESCerrorCodes_reserved2_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ESCerrorCodes_reserved2_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ESCerrorCodes_reserved2_oer_ext_arr_, 0, ESCerrorCodes_reserved2_oer_p_};
+const TTCN_Typedescriptor_t ESCerrorCodes_reserved2_descr_ = { "@IsobusVTMessageTypes.ESCerrorCodes.reserved2", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ESCerrorCodes_reserved2_xer_, &BOOLEAN_json_, &ESCerrorCodes_reserved2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ESCerrorCodes_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ESCerrorCodes_reserved3_oer_ext_arr_[0] = {};
+const int ESCerrorCodes_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ESCerrorCodes_reserved3_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ESCerrorCodes_reserved3_oer_ext_arr_, 0, ESCerrorCodes_reserved3_oer_p_};
+const TTCN_Typedescriptor_t ESCerrorCodes_reserved3_descr_ = { "@IsobusVTMessageTypes.ESCerrorCodes.reserved3", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ESCerrorCodes_reserved3_xer_, &BOOLEAN_json_, &ESCerrorCodes_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ESCerrorCodes_anyOtherError_xer_ = { {"anyOtherError>\n", "anyOtherError>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ESCerrorCodes_anyOtherError_oer_ext_arr_[0] = {};
+const int ESCerrorCodes_anyOtherError_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ESCerrorCodes_anyOtherError_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ESCerrorCodes_anyOtherError_oer_ext_arr_, 0, ESCerrorCodes_anyOtherError_oer_p_};
+const TTCN_Typedescriptor_t ESCerrorCodes_anyOtherError_descr_ = { "@IsobusVTMessageTypes.ESCerrorCodes.anyOtherError", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ESCerrorCodes_anyOtherError_xer_, &BOOLEAN_json_, &ESCerrorCodes_anyOtherError_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ESCerrorCodes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ESCerrorCodes_reserved5_oer_ext_arr_[0] = {};
+const int ESCerrorCodes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ESCerrorCodes_reserved5_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ESCerrorCodes_reserved5_oer_ext_arr_, 0, ESCerrorCodes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t ESCerrorCodes_reserved5_descr_ = { "@IsobusVTMessageTypes.ESCerrorCodes.reserved5", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ESCerrorCodes_reserved5_xer_, &BOOLEAN_json_, &ESCerrorCodes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ESCerrorCodes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ESCerrorCodes_reserved6_oer_ext_arr_[0] = {};
+const int ESCerrorCodes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ESCerrorCodes_reserved6_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ESCerrorCodes_reserved6_oer_ext_arr_, 0, ESCerrorCodes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t ESCerrorCodes_reserved6_descr_ = { "@IsobusVTMessageTypes.ESCerrorCodes.reserved6", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ESCerrorCodes_reserved6_xer_, &BOOLEAN_json_, &ESCerrorCodes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ESCerrorCodes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ESCerrorCodes_reserved7_oer_ext_arr_[0] = {};
+const int ESCerrorCodes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ESCerrorCodes_reserved7_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ESCerrorCodes_reserved7_oer_ext_arr_, 0, ESCerrorCodes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ESCerrorCodes_reserved7_descr_ = { "@IsobusVTMessageTypes.ESCerrorCodes.reserved7", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ESCerrorCodes_reserved7_xer_, &BOOLEAN_json_, &ESCerrorCodes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ESCerrorCodes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ESCerrorCodes
+const TTCN_Typedescriptor_t ESCerrorCodes_descr_ = { "@IsobusVTMessageTypes.ESCerrorCodes", NULL, &ESCerrorCodes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ESCres_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ESCres_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ESCres_vtfunction_descr_ = { "@IsobusVTMessageTypes.ESCres.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ESCres_vtfunction_xer_, &INTEGER_json_, &ESCres_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ESCres_ObjectIDwhereInputWasAborted_xer_ = { {"ObjectIDwhereInputWasAborted>\n", "ObjectIDwhereInputWasAborted>\n"}, {30, 30}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ESCres_ObjectIDwhereInputWasAborted_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ESCres_ObjectIDwhereInputWasAborted_descr_ = { "@IsobusVTMessageTypes.ESCres.ObjectIDwhereInputWasAborted", &INTEGER_ber_, &AnyObjectID_raw_, &INTEGER_text_, &ESCres_ObjectIDwhereInputWasAborted_xer_, &INTEGER_json_, &ESCres_ObjectIDwhereInputWasAborted_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ESCres_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ESCres_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ESCres_reserved5_oer_ext_arr_[0] = {};
+const int ESCres_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ESCres_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ESCres_reserved5_oer_ext_arr_, 0, ESCres_reserved5_oer_p_};
+const TTCN_Typedescriptor_t ESCres_reserved5_descr_ = { "@IsobusVTMessageTypes.ESCres.reserved5", &OCTETSTRING_ber_, &ESCres_reserved5_raw_, &OCTETSTRING_text_, &ESCres_reserved5_xer_, &OCTETSTRING_json_, &ESCres_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ESCres_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ESCres_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ESCres_reserved6_oer_ext_arr_[0] = {};
+const int ESCres_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ESCres_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ESCres_reserved6_oer_ext_arr_, 0, ESCres_reserved6_oer_p_};
+const TTCN_Typedescriptor_t ESCres_reserved6_descr_ = { "@IsobusVTMessageTypes.ESCres.reserved6", &OCTETSTRING_ber_, &ESCres_reserved6_raw_, &OCTETSTRING_text_, &ESCres_reserved6_xer_, &OCTETSTRING_json_, &ESCres_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ESCres_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ESCres_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ESCres_reserved7_oer_ext_arr_[0] = {};
+const int ESCres_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ESCres_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ESCres_reserved7_oer_ext_arr_, 0, ESCres_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ESCres_reserved7_descr_ = { "@IsobusVTMessageTypes.ESCres.reserved7", &OCTETSTRING_ber_, &ESCres_reserved7_raw_, &OCTETSTRING_text_, &ESCres_reserved7_xer_, &OCTETSTRING_json_, &ESCres_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ESCres_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ESCres_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ESCres_reserved8_oer_ext_arr_[0] = {};
+const int ESCres_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ESCres_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ESCres_reserved8_oer_ext_arr_, 0, ESCres_reserved8_oer_p_};
+const TTCN_Typedescriptor_t ESCres_reserved8_descr_ = { "@IsobusVTMessageTypes.ESCres.reserved8", &OCTETSTRING_ber_, &ESCres_reserved8_raw_, &OCTETSTRING_text_, &ESCres_reserved8_xer_, &OCTETSTRING_json_, &ESCres_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ESCres_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ESCres
+const TTCN_Typedescriptor_t ESCres_descr_ = { "@IsobusVTMessageTypes.ESCres", NULL, &ESCres_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t e__HideShowObject__state_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,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for e__HideShowObject__state
+const TTCN_Typedescriptor_t e__HideShowObject__state_descr_ = { "@IsobusVTMessageTypes.e_HideShowObject_state", NULL, &e__HideShowObject__state_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       HideShowObjectReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t HideShowObjectReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t HideShowObjectReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.HideShowObjectReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &HideShowObjectReq_vtfunction_xer_, &INTEGER_json_, &HideShowObjectReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       HideShowObjectReq_objectID_xer_ = { {"objectID>\n", "objectID>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t HideShowObjectReq_objectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t HideShowObjectReq_objectID_descr_ = { "@IsobusVTMessageTypes.HideShowObjectReq.objectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &HideShowObjectReq_objectID_xer_, &INTEGER_json_, &HideShowObjectReq_objectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t HideShowObjectReq_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       HideShowObjectReq_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int HideShowObjectReq_reserved5_oer_ext_arr_[0] = {};
+const int HideShowObjectReq_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t HideShowObjectReq_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, HideShowObjectReq_reserved5_oer_ext_arr_, 0, HideShowObjectReq_reserved5_oer_p_};
+const TTCN_Typedescriptor_t HideShowObjectReq_reserved5_descr_ = { "@IsobusVTMessageTypes.HideShowObjectReq.reserved5", &OCTETSTRING_ber_, &HideShowObjectReq_reserved5_raw_, &OCTETSTRING_text_, &HideShowObjectReq_reserved5_xer_, &OCTETSTRING_json_, &HideShowObjectReq_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t HideShowObjectReq_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       HideShowObjectReq_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int HideShowObjectReq_reserved6_oer_ext_arr_[0] = {};
+const int HideShowObjectReq_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t HideShowObjectReq_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, HideShowObjectReq_reserved6_oer_ext_arr_, 0, HideShowObjectReq_reserved6_oer_p_};
+const TTCN_Typedescriptor_t HideShowObjectReq_reserved6_descr_ = { "@IsobusVTMessageTypes.HideShowObjectReq.reserved6", &OCTETSTRING_ber_, &HideShowObjectReq_reserved6_raw_, &OCTETSTRING_text_, &HideShowObjectReq_reserved6_xer_, &OCTETSTRING_json_, &HideShowObjectReq_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t HideShowObjectReq_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       HideShowObjectReq_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int HideShowObjectReq_reserved7_oer_ext_arr_[0] = {};
+const int HideShowObjectReq_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t HideShowObjectReq_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, HideShowObjectReq_reserved7_oer_ext_arr_, 0, HideShowObjectReq_reserved7_oer_p_};
+const TTCN_Typedescriptor_t HideShowObjectReq_reserved7_descr_ = { "@IsobusVTMessageTypes.HideShowObjectReq.reserved7", &OCTETSTRING_ber_, &HideShowObjectReq_reserved7_raw_, &OCTETSTRING_text_, &HideShowObjectReq_reserved7_xer_, &OCTETSTRING_json_, &HideShowObjectReq_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t HideShowObjectReq_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       HideShowObjectReq_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int HideShowObjectReq_reserved8_oer_ext_arr_[0] = {};
+const int HideShowObjectReq_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t HideShowObjectReq_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, HideShowObjectReq_reserved8_oer_ext_arr_, 0, HideShowObjectReq_reserved8_oer_p_};
+const TTCN_Typedescriptor_t HideShowObjectReq_reserved8_descr_ = { "@IsobusVTMessageTypes.HideShowObjectReq.reserved8", &OCTETSTRING_ber_, &HideShowObjectReq_reserved8_raw_, &OCTETSTRING_text_, &HideShowObjectReq_reserved8_xer_, &OCTETSTRING_json_, &HideShowObjectReq_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t HideShowObjectReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for HideShowObjectReq
+const TTCN_Typedescriptor_t HideShowObjectReq_descr_ = { "@IsobusVTMessageTypes.HideShowObjectReq", NULL, &HideShowObjectReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       HideShowObjectRes__errorCodes_referencesToMissingObjects_xer_ = { {"referencesToMissingObjects>\n", "referencesToMissingObjects>\n"}, {28, 28}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int HideShowObjectRes__errorCodes_referencesToMissingObjects_oer_ext_arr_[0] = {};
+const int HideShowObjectRes__errorCodes_referencesToMissingObjects_oer_p_[0] = {};
+const TTCN_OERdescriptor_t HideShowObjectRes__errorCodes_referencesToMissingObjects_oer_ = { -1, TRUE, -1, FALSE, 0, 0, HideShowObjectRes__errorCodes_referencesToMissingObjects_oer_ext_arr_, 0, HideShowObjectRes__errorCodes_referencesToMissingObjects_oer_p_};
+const TTCN_Typedescriptor_t HideShowObjectRes__errorCodes_referencesToMissingObjects_descr_ = { "@IsobusVTMessageTypes.HideShowObjectRes_errorCodes.referencesToMissingObjects", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &HideShowObjectRes__errorCodes_referencesToMissingObjects_xer_, &BOOLEAN_json_, &HideShowObjectRes__errorCodes_referencesToMissingObjects_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       HideShowObjectRes__errorCodes_invalidObjectID_xer_ = { {"invalidObjectID>\n", "invalidObjectID>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int HideShowObjectRes__errorCodes_invalidObjectID_oer_ext_arr_[0] = {};
+const int HideShowObjectRes__errorCodes_invalidObjectID_oer_p_[0] = {};
+const TTCN_OERdescriptor_t HideShowObjectRes__errorCodes_invalidObjectID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, HideShowObjectRes__errorCodes_invalidObjectID_oer_ext_arr_, 0, HideShowObjectRes__errorCodes_invalidObjectID_oer_p_};
+const TTCN_Typedescriptor_t HideShowObjectRes__errorCodes_invalidObjectID_descr_ = { "@IsobusVTMessageTypes.HideShowObjectRes_errorCodes.invalidObjectID", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &HideShowObjectRes__errorCodes_invalidObjectID_xer_, &BOOLEAN_json_, &HideShowObjectRes__errorCodes_invalidObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       HideShowObjectRes__errorCodes_undefined_xer_ = { {"undefined>\n", "undefined>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int HideShowObjectRes__errorCodes_undefined_oer_ext_arr_[0] = {};
+const int HideShowObjectRes__errorCodes_undefined_oer_p_[0] = {};
+const TTCN_OERdescriptor_t HideShowObjectRes__errorCodes_undefined_oer_ = { -1, TRUE, -1, FALSE, 0, 0, HideShowObjectRes__errorCodes_undefined_oer_ext_arr_, 0, HideShowObjectRes__errorCodes_undefined_oer_p_};
+const TTCN_Typedescriptor_t HideShowObjectRes__errorCodes_undefined_descr_ = { "@IsobusVTMessageTypes.HideShowObjectRes_errorCodes.undefined", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &HideShowObjectRes__errorCodes_undefined_xer_, &BOOLEAN_json_, &HideShowObjectRes__errorCodes_undefined_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       HideShowObjectRes__errorCodes_anyOtherError_xer_ = { {"anyOtherError>\n", "anyOtherError>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int HideShowObjectRes__errorCodes_anyOtherError_oer_ext_arr_[0] = {};
+const int HideShowObjectRes__errorCodes_anyOtherError_oer_p_[0] = {};
+const TTCN_OERdescriptor_t HideShowObjectRes__errorCodes_anyOtherError_oer_ = { -1, TRUE, -1, FALSE, 0, 0, HideShowObjectRes__errorCodes_anyOtherError_oer_ext_arr_, 0, HideShowObjectRes__errorCodes_anyOtherError_oer_p_};
+const TTCN_Typedescriptor_t HideShowObjectRes__errorCodes_anyOtherError_descr_ = { "@IsobusVTMessageTypes.HideShowObjectRes_errorCodes.anyOtherError", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &HideShowObjectRes__errorCodes_anyOtherError_xer_, &BOOLEAN_json_, &HideShowObjectRes__errorCodes_anyOtherError_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       HideShowObjectRes__errorCodes_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int HideShowObjectRes__errorCodes_reserved4_oer_ext_arr_[0] = {};
+const int HideShowObjectRes__errorCodes_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t HideShowObjectRes__errorCodes_reserved4_oer_ = { -1, TRUE, -1, FALSE, 0, 0, HideShowObjectRes__errorCodes_reserved4_oer_ext_arr_, 0, HideShowObjectRes__errorCodes_reserved4_oer_p_};
+const TTCN_Typedescriptor_t HideShowObjectRes__errorCodes_reserved4_descr_ = { "@IsobusVTMessageTypes.HideShowObjectRes_errorCodes.reserved4", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &HideShowObjectRes__errorCodes_reserved4_xer_, &BOOLEAN_json_, &HideShowObjectRes__errorCodes_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       HideShowObjectRes__errorCodes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int HideShowObjectRes__errorCodes_reserved5_oer_ext_arr_[0] = {};
+const int HideShowObjectRes__errorCodes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t HideShowObjectRes__errorCodes_reserved5_oer_ = { -1, TRUE, -1, FALSE, 0, 0, HideShowObjectRes__errorCodes_reserved5_oer_ext_arr_, 0, HideShowObjectRes__errorCodes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t HideShowObjectRes__errorCodes_reserved5_descr_ = { "@IsobusVTMessageTypes.HideShowObjectRes_errorCodes.reserved5", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &HideShowObjectRes__errorCodes_reserved5_xer_, &BOOLEAN_json_, &HideShowObjectRes__errorCodes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       HideShowObjectRes__errorCodes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int HideShowObjectRes__errorCodes_reserved6_oer_ext_arr_[0] = {};
+const int HideShowObjectRes__errorCodes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t HideShowObjectRes__errorCodes_reserved6_oer_ = { -1, TRUE, -1, FALSE, 0, 0, HideShowObjectRes__errorCodes_reserved6_oer_ext_arr_, 0, HideShowObjectRes__errorCodes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t HideShowObjectRes__errorCodes_reserved6_descr_ = { "@IsobusVTMessageTypes.HideShowObjectRes_errorCodes.reserved6", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &HideShowObjectRes__errorCodes_reserved6_xer_, &BOOLEAN_json_, &HideShowObjectRes__errorCodes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       HideShowObjectRes__errorCodes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int HideShowObjectRes__errorCodes_reserved7_oer_ext_arr_[0] = {};
+const int HideShowObjectRes__errorCodes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t HideShowObjectRes__errorCodes_reserved7_oer_ = { -1, TRUE, -1, FALSE, 0, 0, HideShowObjectRes__errorCodes_reserved7_oer_ext_arr_, 0, HideShowObjectRes__errorCodes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t HideShowObjectRes__errorCodes_reserved7_descr_ = { "@IsobusVTMessageTypes.HideShowObjectRes_errorCodes.reserved7", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &HideShowObjectRes__errorCodes_reserved7_xer_, &BOOLEAN_json_, &HideShowObjectRes__errorCodes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t HideShowObjectRes__errorCodes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for HideShowObjectRes__errorCodes
+const TTCN_Typedescriptor_t HideShowObjectRes__errorCodes_descr_ = { "@IsobusVTMessageTypes.HideShowObjectRes_errorCodes", NULL, &HideShowObjectRes__errorCodes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       HideShowObjectRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t HideShowObjectRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t HideShowObjectRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.HideShowObjectRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &HideShowObjectRes_vtfunction_xer_, &INTEGER_json_, &HideShowObjectRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       HideShowObjectRes_objectID_xer_ = { {"objectID>\n", "objectID>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t HideShowObjectRes_objectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t HideShowObjectRes_objectID_descr_ = { "@IsobusVTMessageTypes.HideShowObjectRes.objectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &HideShowObjectRes_objectID_xer_, &INTEGER_json_, &HideShowObjectRes_objectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t HideShowObjectRes_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       HideShowObjectRes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int HideShowObjectRes_reserved6_oer_ext_arr_[0] = {};
+const int HideShowObjectRes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t HideShowObjectRes_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, HideShowObjectRes_reserved6_oer_ext_arr_, 0, HideShowObjectRes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t HideShowObjectRes_reserved6_descr_ = { "@IsobusVTMessageTypes.HideShowObjectRes.reserved6", &OCTETSTRING_ber_, &HideShowObjectRes_reserved6_raw_, &OCTETSTRING_text_, &HideShowObjectRes_reserved6_xer_, &OCTETSTRING_json_, &HideShowObjectRes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t HideShowObjectRes_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       HideShowObjectRes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int HideShowObjectRes_reserved7_oer_ext_arr_[0] = {};
+const int HideShowObjectRes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t HideShowObjectRes_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, HideShowObjectRes_reserved7_oer_ext_arr_, 0, HideShowObjectRes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t HideShowObjectRes_reserved7_descr_ = { "@IsobusVTMessageTypes.HideShowObjectRes.reserved7", &OCTETSTRING_ber_, &HideShowObjectRes_reserved7_raw_, &OCTETSTRING_text_, &HideShowObjectRes_reserved7_xer_, &OCTETSTRING_json_, &HideShowObjectRes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t HideShowObjectRes_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       HideShowObjectRes_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int HideShowObjectRes_reserved8_oer_ext_arr_[0] = {};
+const int HideShowObjectRes_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t HideShowObjectRes_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, HideShowObjectRes_reserved8_oer_ext_arr_, 0, HideShowObjectRes_reserved8_oer_p_};
+const TTCN_Typedescriptor_t HideShowObjectRes_reserved8_descr_ = { "@IsobusVTMessageTypes.HideShowObjectRes.reserved8", &OCTETSTRING_ber_, &HideShowObjectRes_reserved8_raw_, &OCTETSTRING_text_, &HideShowObjectRes_reserved8_xer_, &OCTETSTRING_json_, &HideShowObjectRes_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t HideShowObjectRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for HideShowObjectRes
+const TTCN_Typedescriptor_t HideShowObjectRes_descr_ = { "@IsobusVTMessageTypes.HideShowObjectRes", NULL, &HideShowObjectRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTfunction161VT2ECU_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTfunction161VT2ECU_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTfunction161VT2ECU_vtfunction_descr_ = { "@IsobusVTMessageTypes.VTfunction161VT2ECU.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &VTfunction161VT2ECU_vtfunction_xer_, &INTEGER_json_, &VTfunction161VT2ECU_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTfunction161VT2ECU_notImplementedYet_xer_ = { {"notImplementedYet>\n", "notImplementedYet>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTfunction161VT2ECU_notImplementedYet_oer_ext_arr_[0] = {};
+const int VTfunction161VT2ECU_notImplementedYet_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTfunction161VT2ECU_notImplementedYet_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTfunction161VT2ECU_notImplementedYet_oer_ext_arr_, 0, VTfunction161VT2ECU_notImplementedYet_oer_p_};
+const TTCN_Typedescriptor_t VTfunction161VT2ECU_notImplementedYet_descr_ = { "@IsobusVTMessageTypes.VTfunction161VT2ECU.notImplementedYet", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &VTfunction161VT2ECU_notImplementedYet_xer_, &OCTETSTRING_json_, &VTfunction161VT2ECU_notImplementedYet_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTfunction161VT2ECU_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for VTfunction161VT2ECU
+const TTCN_Typedescriptor_t VTfunction161VT2ECU_descr_ = { "@IsobusVTMessageTypes.VTfunction161VT2ECU", NULL, &VTfunction161VT2ECU_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTfunction161ECU2VT_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTfunction161ECU2VT_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTfunction161ECU2VT_vtfunction_descr_ = { "@IsobusVTMessageTypes.VTfunction161ECU2VT.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &VTfunction161ECU2VT_vtfunction_xer_, &INTEGER_json_, &VTfunction161ECU2VT_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTfunction161ECU2VT_notImplementedYet_xer_ = { {"notImplementedYet>\n", "notImplementedYet>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTfunction161ECU2VT_notImplementedYet_oer_ext_arr_[0] = {};
+const int VTfunction161ECU2VT_notImplementedYet_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTfunction161ECU2VT_notImplementedYet_oer_ = { -1, TRUE, -1, FALSE, 0, 0, VTfunction161ECU2VT_notImplementedYet_oer_ext_arr_, 0, VTfunction161ECU2VT_notImplementedYet_oer_p_};
+const TTCN_Typedescriptor_t VTfunction161ECU2VT_notImplementedYet_descr_ = { "@IsobusVTMessageTypes.VTfunction161ECU2VT.notImplementedYet", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &VTfunction161ECU2VT_notImplementedYet_xer_, &OCTETSTRING_json_, &VTfunction161ECU2VT_notImplementedYet_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTfunction161ECU2VT_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for VTfunction161ECU2VT
+const TTCN_Typedescriptor_t VTfunction161ECU2VT_descr_ = { "@IsobusVTMessageTypes.VTfunction161ECU2VT", NULL, &VTfunction161ECU2VT_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t e__EnableDisableObject__DisableEnable_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,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for e__EnableDisableObject__DisableEnable
+const TTCN_Typedescriptor_t e__EnableDisableObject__DisableEnable_descr_ = { "@IsobusVTMessageTypes.e_EnableDisableObject_DisableEnable", NULL, &e__EnableDisableObject__DisableEnable_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       EnableDisableObjectReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t EnableDisableObjectReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t EnableDisableObjectReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.EnableDisableObjectReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &EnableDisableObjectReq_vtfunction_xer_, &INTEGER_json_, &EnableDisableObjectReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       EnableDisableObjectReq_objectID_xer_ = { {"objectID>\n", "objectID>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t EnableDisableObjectReq_objectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t EnableDisableObjectReq_objectID_descr_ = { "@IsobusVTMessageTypes.EnableDisableObjectReq.objectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &EnableDisableObjectReq_objectID_xer_, &INTEGER_json_, &EnableDisableObjectReq_objectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EnableDisableObjectReq_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       EnableDisableObjectReq_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int EnableDisableObjectReq_reserved5_oer_ext_arr_[0] = {};
+const int EnableDisableObjectReq_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t EnableDisableObjectReq_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, EnableDisableObjectReq_reserved5_oer_ext_arr_, 0, EnableDisableObjectReq_reserved5_oer_p_};
+const TTCN_Typedescriptor_t EnableDisableObjectReq_reserved5_descr_ = { "@IsobusVTMessageTypes.EnableDisableObjectReq.reserved5", &OCTETSTRING_ber_, &EnableDisableObjectReq_reserved5_raw_, &OCTETSTRING_text_, &EnableDisableObjectReq_reserved5_xer_, &OCTETSTRING_json_, &EnableDisableObjectReq_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EnableDisableObjectReq_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       EnableDisableObjectReq_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int EnableDisableObjectReq_reserved6_oer_ext_arr_[0] = {};
+const int EnableDisableObjectReq_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t EnableDisableObjectReq_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, EnableDisableObjectReq_reserved6_oer_ext_arr_, 0, EnableDisableObjectReq_reserved6_oer_p_};
+const TTCN_Typedescriptor_t EnableDisableObjectReq_reserved6_descr_ = { "@IsobusVTMessageTypes.EnableDisableObjectReq.reserved6", &OCTETSTRING_ber_, &EnableDisableObjectReq_reserved6_raw_, &OCTETSTRING_text_, &EnableDisableObjectReq_reserved6_xer_, &OCTETSTRING_json_, &EnableDisableObjectReq_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EnableDisableObjectReq_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       EnableDisableObjectReq_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int EnableDisableObjectReq_reserved7_oer_ext_arr_[0] = {};
+const int EnableDisableObjectReq_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t EnableDisableObjectReq_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, EnableDisableObjectReq_reserved7_oer_ext_arr_, 0, EnableDisableObjectReq_reserved7_oer_p_};
+const TTCN_Typedescriptor_t EnableDisableObjectReq_reserved7_descr_ = { "@IsobusVTMessageTypes.EnableDisableObjectReq.reserved7", &OCTETSTRING_ber_, &EnableDisableObjectReq_reserved7_raw_, &OCTETSTRING_text_, &EnableDisableObjectReq_reserved7_xer_, &OCTETSTRING_json_, &EnableDisableObjectReq_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EnableDisableObjectReq_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       EnableDisableObjectReq_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int EnableDisableObjectReq_reserved8_oer_ext_arr_[0] = {};
+const int EnableDisableObjectReq_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t EnableDisableObjectReq_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, EnableDisableObjectReq_reserved8_oer_ext_arr_, 0, EnableDisableObjectReq_reserved8_oer_p_};
+const TTCN_Typedescriptor_t EnableDisableObjectReq_reserved8_descr_ = { "@IsobusVTMessageTypes.EnableDisableObjectReq.reserved8", &OCTETSTRING_ber_, &EnableDisableObjectReq_reserved8_raw_, &OCTETSTRING_text_, &EnableDisableObjectReq_reserved8_xer_, &OCTETSTRING_json_, &EnableDisableObjectReq_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EnableDisableObjectReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for EnableDisableObjectReq
+const TTCN_Typedescriptor_t EnableDisableObjectReq_descr_ = { "@IsobusVTMessageTypes.EnableDisableObjectReq", NULL, &EnableDisableObjectReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       EnableDisableObjectRes__errorCodes_reserved0_xer_ = { {"reserved0>\n", "reserved0>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int EnableDisableObjectRes__errorCodes_reserved0_oer_ext_arr_[0] = {};
+const int EnableDisableObjectRes__errorCodes_reserved0_oer_p_[0] = {};
+const TTCN_OERdescriptor_t EnableDisableObjectRes__errorCodes_reserved0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, EnableDisableObjectRes__errorCodes_reserved0_oer_ext_arr_, 0, EnableDisableObjectRes__errorCodes_reserved0_oer_p_};
+const TTCN_Typedescriptor_t EnableDisableObjectRes__errorCodes_reserved0_descr_ = { "@IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes.reserved0", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &EnableDisableObjectRes__errorCodes_reserved0_xer_, &BOOLEAN_json_, &EnableDisableObjectRes__errorCodes_reserved0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       EnableDisableObjectRes__errorCodes_invalidObjectID_xer_ = { {"invalidObjectID>\n", "invalidObjectID>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int EnableDisableObjectRes__errorCodes_invalidObjectID_oer_ext_arr_[0] = {};
+const int EnableDisableObjectRes__errorCodes_invalidObjectID_oer_p_[0] = {};
+const TTCN_OERdescriptor_t EnableDisableObjectRes__errorCodes_invalidObjectID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, EnableDisableObjectRes__errorCodes_invalidObjectID_oer_ext_arr_, 0, EnableDisableObjectRes__errorCodes_invalidObjectID_oer_p_};
+const TTCN_Typedescriptor_t EnableDisableObjectRes__errorCodes_invalidObjectID_descr_ = { "@IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes.invalidObjectID", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &EnableDisableObjectRes__errorCodes_invalidObjectID_xer_, &BOOLEAN_json_, &EnableDisableObjectRes__errorCodes_invalidObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       EnableDisableObjectRes__errorCodes_commandError_xer_ = { {"commandError>\n", "commandError>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int EnableDisableObjectRes__errorCodes_commandError_oer_ext_arr_[0] = {};
+const int EnableDisableObjectRes__errorCodes_commandError_oer_p_[0] = {};
+const TTCN_OERdescriptor_t EnableDisableObjectRes__errorCodes_commandError_oer_ = { -1, TRUE, -1, FALSE, 0, 0, EnableDisableObjectRes__errorCodes_commandError_oer_ext_arr_, 0, EnableDisableObjectRes__errorCodes_commandError_oer_p_};
+const TTCN_Typedescriptor_t EnableDisableObjectRes__errorCodes_commandError_descr_ = { "@IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes.commandError", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &EnableDisableObjectRes__errorCodes_commandError_xer_, &BOOLEAN_json_, &EnableDisableObjectRes__errorCodes_commandError_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       EnableDisableObjectRes__errorCodes_couldNotCompleteOperatorInputIsActiveOnThisObject_xer_ = { {"couldNotCompleteOperatorInputIsActiveOnThisObject>\n", "couldNotCompleteOperatorInputIsActiveOnThisObject>\n"}, {51, 51}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int EnableDisableObjectRes__errorCodes_couldNotCompleteOperatorInputIsActiveOnThisObject_oer_ext_arr_[0] = {};
+const int EnableDisableObjectRes__errorCodes_couldNotCompleteOperatorInputIsActiveOnThisObject_oer_p_[0] = {};
+const TTCN_OERdescriptor_t EnableDisableObjectRes__errorCodes_couldNotCompleteOperatorInputIsActiveOnThisObject_oer_ = { -1, TRUE, -1, FALSE, 0, 0, EnableDisableObjectRes__errorCodes_couldNotCompleteOperatorInputIsActiveOnThisObject_oer_ext_arr_, 0, EnableDisableObjectRes__errorCodes_couldNotCompleteOperatorInputIsActiveOnThisObject_oer_p_};
+const TTCN_Typedescriptor_t EnableDisableObjectRes__errorCodes_couldNotCompleteOperatorInputIsActiveOnThisObject_descr_ = { "@IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes.couldNotCompleteOperatorInputIsActiveOnThisObject", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &EnableDisableObjectRes__errorCodes_couldNotCompleteOperatorInputIsActiveOnThisObject_xer_, &BOOLEAN_json_, &EnableDisableObjectRes__errorCodes_couldNotCompleteOperatorInputIsActiveOnThisObject_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       EnableDisableObjectRes__errorCodes_anyOtherError_xer_ = { {"anyOtherError>\n", "anyOtherError>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int EnableDisableObjectRes__errorCodes_anyOtherError_oer_ext_arr_[0] = {};
+const int EnableDisableObjectRes__errorCodes_anyOtherError_oer_p_[0] = {};
+const TTCN_OERdescriptor_t EnableDisableObjectRes__errorCodes_anyOtherError_oer_ = { -1, TRUE, -1, FALSE, 0, 0, EnableDisableObjectRes__errorCodes_anyOtherError_oer_ext_arr_, 0, EnableDisableObjectRes__errorCodes_anyOtherError_oer_p_};
+const TTCN_Typedescriptor_t EnableDisableObjectRes__errorCodes_anyOtherError_descr_ = { "@IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes.anyOtherError", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &EnableDisableObjectRes__errorCodes_anyOtherError_xer_, &BOOLEAN_json_, &EnableDisableObjectRes__errorCodes_anyOtherError_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       EnableDisableObjectRes__errorCodes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int EnableDisableObjectRes__errorCodes_reserved5_oer_ext_arr_[0] = {};
+const int EnableDisableObjectRes__errorCodes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t EnableDisableObjectRes__errorCodes_reserved5_oer_ = { -1, TRUE, -1, FALSE, 0, 0, EnableDisableObjectRes__errorCodes_reserved5_oer_ext_arr_, 0, EnableDisableObjectRes__errorCodes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t EnableDisableObjectRes__errorCodes_reserved5_descr_ = { "@IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes.reserved5", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &EnableDisableObjectRes__errorCodes_reserved5_xer_, &BOOLEAN_json_, &EnableDisableObjectRes__errorCodes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       EnableDisableObjectRes__errorCodes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int EnableDisableObjectRes__errorCodes_reserved6_oer_ext_arr_[0] = {};
+const int EnableDisableObjectRes__errorCodes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t EnableDisableObjectRes__errorCodes_reserved6_oer_ = { -1, TRUE, -1, FALSE, 0, 0, EnableDisableObjectRes__errorCodes_reserved6_oer_ext_arr_, 0, EnableDisableObjectRes__errorCodes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t EnableDisableObjectRes__errorCodes_reserved6_descr_ = { "@IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes.reserved6", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &EnableDisableObjectRes__errorCodes_reserved6_xer_, &BOOLEAN_json_, &EnableDisableObjectRes__errorCodes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       EnableDisableObjectRes__errorCodes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int EnableDisableObjectRes__errorCodes_reserved7_oer_ext_arr_[0] = {};
+const int EnableDisableObjectRes__errorCodes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t EnableDisableObjectRes__errorCodes_reserved7_oer_ = { -1, TRUE, -1, FALSE, 0, 0, EnableDisableObjectRes__errorCodes_reserved7_oer_ext_arr_, 0, EnableDisableObjectRes__errorCodes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t EnableDisableObjectRes__errorCodes_reserved7_descr_ = { "@IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes.reserved7", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &EnableDisableObjectRes__errorCodes_reserved7_xer_, &BOOLEAN_json_, &EnableDisableObjectRes__errorCodes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EnableDisableObjectRes__errorCodes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for EnableDisableObjectRes__errorCodes
+const TTCN_Typedescriptor_t EnableDisableObjectRes__errorCodes_descr_ = { "@IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes", NULL, &EnableDisableObjectRes__errorCodes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       EnableDisableObjectRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t EnableDisableObjectRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t EnableDisableObjectRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.EnableDisableObjectRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &EnableDisableObjectRes_vtfunction_xer_, &INTEGER_json_, &EnableDisableObjectRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       EnableDisableObjectRes_objectID_xer_ = { {"objectID>\n", "objectID>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t EnableDisableObjectRes_objectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t EnableDisableObjectRes_objectID_descr_ = { "@IsobusVTMessageTypes.EnableDisableObjectRes.objectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &EnableDisableObjectRes_objectID_xer_, &INTEGER_json_, &EnableDisableObjectRes_objectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EnableDisableObjectRes_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       EnableDisableObjectRes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int EnableDisableObjectRes_reserved6_oer_ext_arr_[0] = {};
+const int EnableDisableObjectRes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t EnableDisableObjectRes_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, EnableDisableObjectRes_reserved6_oer_ext_arr_, 0, EnableDisableObjectRes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t EnableDisableObjectRes_reserved6_descr_ = { "@IsobusVTMessageTypes.EnableDisableObjectRes.reserved6", &OCTETSTRING_ber_, &EnableDisableObjectRes_reserved6_raw_, &OCTETSTRING_text_, &EnableDisableObjectRes_reserved6_xer_, &OCTETSTRING_json_, &EnableDisableObjectRes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EnableDisableObjectRes_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       EnableDisableObjectRes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int EnableDisableObjectRes_reserved7_oer_ext_arr_[0] = {};
+const int EnableDisableObjectRes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t EnableDisableObjectRes_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, EnableDisableObjectRes_reserved7_oer_ext_arr_, 0, EnableDisableObjectRes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t EnableDisableObjectRes_reserved7_descr_ = { "@IsobusVTMessageTypes.EnableDisableObjectRes.reserved7", &OCTETSTRING_ber_, &EnableDisableObjectRes_reserved7_raw_, &OCTETSTRING_text_, &EnableDisableObjectRes_reserved7_xer_, &OCTETSTRING_json_, &EnableDisableObjectRes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EnableDisableObjectRes_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       EnableDisableObjectRes_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int EnableDisableObjectRes_reserved8_oer_ext_arr_[0] = {};
+const int EnableDisableObjectRes_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t EnableDisableObjectRes_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, EnableDisableObjectRes_reserved8_oer_ext_arr_, 0, EnableDisableObjectRes_reserved8_oer_p_};
+const TTCN_Typedescriptor_t EnableDisableObjectRes_reserved8_descr_ = { "@IsobusVTMessageTypes.EnableDisableObjectRes.reserved8", &OCTETSTRING_ber_, &EnableDisableObjectRes_reserved8_raw_, &OCTETSTRING_text_, &EnableDisableObjectRes_reserved8_xer_, &OCTETSTRING_json_, &EnableDisableObjectRes_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EnableDisableObjectRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for EnableDisableObjectRes
+const TTCN_Typedescriptor_t EnableDisableObjectRes_descr_ = { "@IsobusVTMessageTypes.EnableDisableObjectRes", NULL, &EnableDisableObjectRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t e__SelectInputObjectReq__Option_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,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for e__SelectInputObjectReq__Option
+const TTCN_Typedescriptor_t e__SelectInputObjectReq__Option_descr_ = { "@IsobusVTMessageTypes.e_SelectInputObjectReq_Option", NULL, &e__SelectInputObjectReq__Option_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SelectInputObjectReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SelectInputObjectReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SelectInputObjectReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.SelectInputObjectReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &SelectInputObjectReq_vtfunction_xer_, &INTEGER_json_, &SelectInputObjectReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SelectInputObjectReq_objectID_xer_ = { {"objectID>\n", "objectID>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SelectInputObjectReq_objectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SelectInputObjectReq_objectID_descr_ = { "@IsobusVTMessageTypes.SelectInputObjectReq.objectID", &INTEGER_ber_, &AnyObjectID_raw_, &INTEGER_text_, &SelectInputObjectReq_objectID_xer_, &INTEGER_json_, &SelectInputObjectReq_objectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SelectInputObjectReq_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       SelectInputObjectReq_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SelectInputObjectReq_reserved5_oer_ext_arr_[0] = {};
+const int SelectInputObjectReq_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SelectInputObjectReq_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SelectInputObjectReq_reserved5_oer_ext_arr_, 0, SelectInputObjectReq_reserved5_oer_p_};
+const TTCN_Typedescriptor_t SelectInputObjectReq_reserved5_descr_ = { "@IsobusVTMessageTypes.SelectInputObjectReq.reserved5", &OCTETSTRING_ber_, &SelectInputObjectReq_reserved5_raw_, &OCTETSTRING_text_, &SelectInputObjectReq_reserved5_xer_, &OCTETSTRING_json_, &SelectInputObjectReq_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SelectInputObjectReq_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       SelectInputObjectReq_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SelectInputObjectReq_reserved6_oer_ext_arr_[0] = {};
+const int SelectInputObjectReq_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SelectInputObjectReq_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SelectInputObjectReq_reserved6_oer_ext_arr_, 0, SelectInputObjectReq_reserved6_oer_p_};
+const TTCN_Typedescriptor_t SelectInputObjectReq_reserved6_descr_ = { "@IsobusVTMessageTypes.SelectInputObjectReq.reserved6", &OCTETSTRING_ber_, &SelectInputObjectReq_reserved6_raw_, &OCTETSTRING_text_, &SelectInputObjectReq_reserved6_xer_, &OCTETSTRING_json_, &SelectInputObjectReq_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SelectInputObjectReq_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       SelectInputObjectReq_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SelectInputObjectReq_reserved7_oer_ext_arr_[0] = {};
+const int SelectInputObjectReq_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SelectInputObjectReq_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SelectInputObjectReq_reserved7_oer_ext_arr_, 0, SelectInputObjectReq_reserved7_oer_p_};
+const TTCN_Typedescriptor_t SelectInputObjectReq_reserved7_descr_ = { "@IsobusVTMessageTypes.SelectInputObjectReq.reserved7", &OCTETSTRING_ber_, &SelectInputObjectReq_reserved7_raw_, &OCTETSTRING_text_, &SelectInputObjectReq_reserved7_xer_, &OCTETSTRING_json_, &SelectInputObjectReq_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SelectInputObjectReq_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       SelectInputObjectReq_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SelectInputObjectReq_reserved8_oer_ext_arr_[0] = {};
+const int SelectInputObjectReq_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SelectInputObjectReq_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SelectInputObjectReq_reserved8_oer_ext_arr_, 0, SelectInputObjectReq_reserved8_oer_p_};
+const TTCN_Typedescriptor_t SelectInputObjectReq_reserved8_descr_ = { "@IsobusVTMessageTypes.SelectInputObjectReq.reserved8", &OCTETSTRING_ber_, &SelectInputObjectReq_reserved8_raw_, &OCTETSTRING_text_, &SelectInputObjectReq_reserved8_xer_, &OCTETSTRING_json_, &SelectInputObjectReq_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SelectInputObjectReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for SelectInputObjectReq
+const TTCN_Typedescriptor_t SelectInputObjectReq_descr_ = { "@IsobusVTMessageTypes.SelectInputObjectReq", NULL, &SelectInputObjectReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t e__SelectInputObjectRes__Response_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,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for e__SelectInputObjectRes__Response
+const TTCN_Typedescriptor_t e__SelectInputObjectRes__Response_descr_ = { "@IsobusVTMessageTypes.e_SelectInputObjectRes_Response", NULL, &e__SelectInputObjectRes__Response_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SelectInputObjectRes__errorCodes_objectIsDisabled_xer_ = { {"objectIsDisabled>\n", "objectIsDisabled>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SelectInputObjectRes__errorCodes_objectIsDisabled_oer_ext_arr_[0] = {};
+const int SelectInputObjectRes__errorCodes_objectIsDisabled_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SelectInputObjectRes__errorCodes_objectIsDisabled_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SelectInputObjectRes__errorCodes_objectIsDisabled_oer_ext_arr_, 0, SelectInputObjectRes__errorCodes_objectIsDisabled_oer_p_};
+const TTCN_Typedescriptor_t SelectInputObjectRes__errorCodes_objectIsDisabled_descr_ = { "@IsobusVTMessageTypes.SelectInputObjectRes_errorCodes.objectIsDisabled", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &SelectInputObjectRes__errorCodes_objectIsDisabled_xer_, &BOOLEAN_json_, &SelectInputObjectRes__errorCodes_objectIsDisabled_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SelectInputObjectRes__errorCodes_invalidObjectID_xer_ = { {"invalidObjectID>\n", "invalidObjectID>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SelectInputObjectRes__errorCodes_invalidObjectID_oer_ext_arr_[0] = {};
+const int SelectInputObjectRes__errorCodes_invalidObjectID_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SelectInputObjectRes__errorCodes_invalidObjectID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SelectInputObjectRes__errorCodes_invalidObjectID_oer_ext_arr_, 0, SelectInputObjectRes__errorCodes_invalidObjectID_oer_p_};
+const TTCN_Typedescriptor_t SelectInputObjectRes__errorCodes_invalidObjectID_descr_ = { "@IsobusVTMessageTypes.SelectInputObjectRes_errorCodes.invalidObjectID", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &SelectInputObjectRes__errorCodes_invalidObjectID_xer_, &BOOLEAN_json_, &SelectInputObjectRes__errorCodes_invalidObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SelectInputObjectRes__errorCodes_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer_xer_ = { {"objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer>\n", "objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer>\n"}, {56, 56}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SelectInputObjectRes__errorCodes_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer_oer_ext_arr_[0] = {};
+const int SelectInputObjectRes__errorCodes_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SelectInputObjectRes__errorCodes_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SelectInputObjectRes__errorCodes_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer_oer_ext_arr_, 0, SelectInputObjectRes__errorCodes_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer_oer_p_};
+const TTCN_Typedescriptor_t SelectInputObjectRes__errorCodes_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer_descr_ = { "@IsobusVTMessageTypes.SelectInputObjectRes_errorCodes.objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &SelectInputObjectRes__errorCodes_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer_xer_, &BOOLEAN_json_, &SelectInputObjectRes__errorCodes_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SelectInputObjectRes__errorCodes_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld_xer_ = { {"couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld>\n", "couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld>\n"}, {97, 97}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SelectInputObjectRes__errorCodes_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld_oer_ext_arr_[0] = {};
+const int SelectInputObjectRes__errorCodes_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SelectInputObjectRes__errorCodes_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SelectInputObjectRes__errorCodes_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld_oer_ext_arr_, 0, SelectInputObjectRes__errorCodes_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld_oer_p_};
+const TTCN_Typedescriptor_t SelectInputObjectRes__errorCodes_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld_descr_ = { "@IsobusVTMessageTypes.SelectInputObjectRes_errorCodes.couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &SelectInputObjectRes__errorCodes_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld_xer_, &BOOLEAN_json_, &SelectInputObjectRes__errorCodes_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SelectInputObjectRes__errorCodes_anyOtherError_xer_ = { {"anyOtherError>\n", "anyOtherError>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SelectInputObjectRes__errorCodes_anyOtherError_oer_ext_arr_[0] = {};
+const int SelectInputObjectRes__errorCodes_anyOtherError_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SelectInputObjectRes__errorCodes_anyOtherError_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SelectInputObjectRes__errorCodes_anyOtherError_oer_ext_arr_, 0, SelectInputObjectRes__errorCodes_anyOtherError_oer_p_};
+const TTCN_Typedescriptor_t SelectInputObjectRes__errorCodes_anyOtherError_descr_ = { "@IsobusVTMessageTypes.SelectInputObjectRes_errorCodes.anyOtherError", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &SelectInputObjectRes__errorCodes_anyOtherError_xer_, &BOOLEAN_json_, &SelectInputObjectRes__errorCodes_anyOtherError_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SelectInputObjectRes__errorCodes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SelectInputObjectRes__errorCodes_reserved5_oer_ext_arr_[0] = {};
+const int SelectInputObjectRes__errorCodes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SelectInputObjectRes__errorCodes_reserved5_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SelectInputObjectRes__errorCodes_reserved5_oer_ext_arr_, 0, SelectInputObjectRes__errorCodes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t SelectInputObjectRes__errorCodes_reserved5_descr_ = { "@IsobusVTMessageTypes.SelectInputObjectRes_errorCodes.reserved5", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &SelectInputObjectRes__errorCodes_reserved5_xer_, &BOOLEAN_json_, &SelectInputObjectRes__errorCodes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SelectInputObjectRes__errorCodes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SelectInputObjectRes__errorCodes_reserved6_oer_ext_arr_[0] = {};
+const int SelectInputObjectRes__errorCodes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SelectInputObjectRes__errorCodes_reserved6_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SelectInputObjectRes__errorCodes_reserved6_oer_ext_arr_, 0, SelectInputObjectRes__errorCodes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t SelectInputObjectRes__errorCodes_reserved6_descr_ = { "@IsobusVTMessageTypes.SelectInputObjectRes_errorCodes.reserved6", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &SelectInputObjectRes__errorCodes_reserved6_xer_, &BOOLEAN_json_, &SelectInputObjectRes__errorCodes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SelectInputObjectRes__errorCodes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SelectInputObjectRes__errorCodes_reserved7_oer_ext_arr_[0] = {};
+const int SelectInputObjectRes__errorCodes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SelectInputObjectRes__errorCodes_reserved7_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SelectInputObjectRes__errorCodes_reserved7_oer_ext_arr_, 0, SelectInputObjectRes__errorCodes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t SelectInputObjectRes__errorCodes_reserved7_descr_ = { "@IsobusVTMessageTypes.SelectInputObjectRes_errorCodes.reserved7", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &SelectInputObjectRes__errorCodes_reserved7_xer_, &BOOLEAN_json_, &SelectInputObjectRes__errorCodes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SelectInputObjectRes__errorCodes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for SelectInputObjectRes__errorCodes
+const TTCN_Typedescriptor_t SelectInputObjectRes__errorCodes_descr_ = { "@IsobusVTMessageTypes.SelectInputObjectRes_errorCodes", NULL, &SelectInputObjectRes__errorCodes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SelectInputObjectRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SelectInputObjectRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SelectInputObjectRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.SelectInputObjectRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &SelectInputObjectRes_vtfunction_xer_, &INTEGER_json_, &SelectInputObjectRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SelectInputObjectRes_objectID_xer_ = { {"objectID>\n", "objectID>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SelectInputObjectRes_objectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SelectInputObjectRes_objectID_descr_ = { "@IsobusVTMessageTypes.SelectInputObjectRes.objectID", &INTEGER_ber_, &AnyObjectID_raw_, &INTEGER_text_, &SelectInputObjectRes_objectID_xer_, &INTEGER_json_, &SelectInputObjectRes_objectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SelectInputObjectRes_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       SelectInputObjectRes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SelectInputObjectRes_reserved5_oer_ext_arr_[0] = {};
+const int SelectInputObjectRes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SelectInputObjectRes_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SelectInputObjectRes_reserved5_oer_ext_arr_, 0, SelectInputObjectRes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t SelectInputObjectRes_reserved5_descr_ = { "@IsobusVTMessageTypes.SelectInputObjectRes.reserved5", &OCTETSTRING_ber_, &SelectInputObjectRes_reserved5_raw_, &OCTETSTRING_text_, &SelectInputObjectRes_reserved5_xer_, &OCTETSTRING_json_, &SelectInputObjectRes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SelectInputObjectRes_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       SelectInputObjectRes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SelectInputObjectRes_reserved6_oer_ext_arr_[0] = {};
+const int SelectInputObjectRes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SelectInputObjectRes_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SelectInputObjectRes_reserved6_oer_ext_arr_, 0, SelectInputObjectRes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t SelectInputObjectRes_reserved6_descr_ = { "@IsobusVTMessageTypes.SelectInputObjectRes.reserved6", &OCTETSTRING_ber_, &SelectInputObjectRes_reserved6_raw_, &OCTETSTRING_text_, &SelectInputObjectRes_reserved6_xer_, &OCTETSTRING_json_, &SelectInputObjectRes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SelectInputObjectRes_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       SelectInputObjectRes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SelectInputObjectRes_reserved7_oer_ext_arr_[0] = {};
+const int SelectInputObjectRes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SelectInputObjectRes_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SelectInputObjectRes_reserved7_oer_ext_arr_, 0, SelectInputObjectRes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t SelectInputObjectRes_reserved7_descr_ = { "@IsobusVTMessageTypes.SelectInputObjectRes.reserved7", &OCTETSTRING_ber_, &SelectInputObjectRes_reserved7_raw_, &OCTETSTRING_text_, &SelectInputObjectRes_reserved7_xer_, &OCTETSTRING_json_, &SelectInputObjectRes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SelectInputObjectRes_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       SelectInputObjectRes_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SelectInputObjectRes_reserved8_oer_ext_arr_[0] = {};
+const int SelectInputObjectRes_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SelectInputObjectRes_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SelectInputObjectRes_reserved8_oer_ext_arr_, 0, SelectInputObjectRes_reserved8_oer_p_};
+const TTCN_Typedescriptor_t SelectInputObjectRes_reserved8_descr_ = { "@IsobusVTMessageTypes.SelectInputObjectRes.reserved8", &OCTETSTRING_ber_, &SelectInputObjectRes_reserved8_raw_, &OCTETSTRING_text_, &SelectInputObjectRes_reserved8_xer_, &OCTETSTRING_json_, &SelectInputObjectRes_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SelectInputObjectRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for SelectInputObjectRes
+const TTCN_Typedescriptor_t SelectInputObjectRes_descr_ = { "@IsobusVTMessageTypes.SelectInputObjectRes", NULL, &SelectInputObjectRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ControlAudioSignalReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ControlAudioSignalReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ControlAudioSignalReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.ControlAudioSignalReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ControlAudioSignalReq_vtfunction_xer_, &INTEGER_json_, &ControlAudioSignalReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ControlAudioSignalReq_activations_xer_ = { {"activations>\n", "activations>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ControlAudioSignalReq_activations_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ControlAudioSignalReq_activations_descr_ = { "@IsobusVTMessageTypes.ControlAudioSignalReq.activations", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ControlAudioSignalReq_activations_xer_, &INTEGER_json_, &ControlAudioSignalReq_activations_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ControlAudioSignalReq_frequencyInHz_xer_ = { {"frequencyInHz>\n", "frequencyInHz>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ControlAudioSignalReq_frequencyInHz_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ControlAudioSignalReq_frequencyInHz_descr_ = { "@IsobusVTMessageTypes.ControlAudioSignalReq.frequencyInHz", &INTEGER_ber_, &IsobusMessageTypes::INT2_raw_, &INTEGER_text_, &ControlAudioSignalReq_frequencyInHz_xer_, &INTEGER_json_, &ControlAudioSignalReq_frequencyInHz_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ControlAudioSignalReq_onTimeDuration__ms_xer_ = { {"onTimeDuration_ms>\n", "onTimeDuration_ms>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ControlAudioSignalReq_onTimeDuration__ms_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ControlAudioSignalReq_onTimeDuration__ms_descr_ = { "@IsobusVTMessageTypes.ControlAudioSignalReq.onTimeDuration_ms", &INTEGER_ber_, &IsobusMessageTypes::INT2_raw_, &INTEGER_text_, &ControlAudioSignalReq_onTimeDuration__ms_xer_, &INTEGER_json_, &ControlAudioSignalReq_onTimeDuration__ms_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ControlAudioSignalReq_offTimeDuration__ms_xer_ = { {"offTimeDuration_ms>\n", "offTimeDuration_ms>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ControlAudioSignalReq_offTimeDuration__ms_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ControlAudioSignalReq_offTimeDuration__ms_descr_ = { "@IsobusVTMessageTypes.ControlAudioSignalReq.offTimeDuration_ms", &INTEGER_ber_, &IsobusMessageTypes::INT2_raw_, &INTEGER_text_, &ControlAudioSignalReq_offTimeDuration__ms_xer_, &INTEGER_json_, &ControlAudioSignalReq_offTimeDuration__ms_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ControlAudioSignalReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ControlAudioSignalReq
+const TTCN_Typedescriptor_t ControlAudioSignalReq_descr_ = { "@IsobusVTMessageTypes.ControlAudioSignalReq", NULL, &ControlAudioSignalReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t e__ControlAudioSignalRes__ErrorCodes_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,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for e__ControlAudioSignalRes__ErrorCodes
+const TTCN_Typedescriptor_t e__ControlAudioSignalRes__ErrorCodes_descr_ = { "@IsobusVTMessageTypes.e_ControlAudioSignalRes_ErrorCodes", NULL, &e__ControlAudioSignalRes__ErrorCodes_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ControlAudioSignalRes__ErrorCodes_audioDeviceIsBusy_xer_ = { {"audioDeviceIsBusy>\n", "audioDeviceIsBusy>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ControlAudioSignalRes__ErrorCodes_audioDeviceIsBusy_oer_ext_arr_[0] = {};
+const int ControlAudioSignalRes__ErrorCodes_audioDeviceIsBusy_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ControlAudioSignalRes__ErrorCodes_audioDeviceIsBusy_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ControlAudioSignalRes__ErrorCodes_audioDeviceIsBusy_oer_ext_arr_, 0, ControlAudioSignalRes__ErrorCodes_audioDeviceIsBusy_oer_p_};
+const TTCN_Typedescriptor_t ControlAudioSignalRes__ErrorCodes_audioDeviceIsBusy_descr_ = { "@IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes.audioDeviceIsBusy", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ControlAudioSignalRes__ErrorCodes_audioDeviceIsBusy_xer_, &BOOLEAN_json_, &ControlAudioSignalRes__ErrorCodes_audioDeviceIsBusy_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ControlAudioSignalRes__ErrorCodes_undefined1_xer_ = { {"undefined1>\n", "undefined1>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ControlAudioSignalRes__ErrorCodes_undefined1_oer_ext_arr_[0] = {};
+const int ControlAudioSignalRes__ErrorCodes_undefined1_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ControlAudioSignalRes__ErrorCodes_undefined1_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ControlAudioSignalRes__ErrorCodes_undefined1_oer_ext_arr_, 0, ControlAudioSignalRes__ErrorCodes_undefined1_oer_p_};
+const TTCN_Typedescriptor_t ControlAudioSignalRes__ErrorCodes_undefined1_descr_ = { "@IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes.undefined1", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ControlAudioSignalRes__ErrorCodes_undefined1_xer_, &BOOLEAN_json_, &ControlAudioSignalRes__ErrorCodes_undefined1_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ControlAudioSignalRes__ErrorCodes_undefined2_xer_ = { {"undefined2>\n", "undefined2>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ControlAudioSignalRes__ErrorCodes_undefined2_oer_ext_arr_[0] = {};
+const int ControlAudioSignalRes__ErrorCodes_undefined2_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ControlAudioSignalRes__ErrorCodes_undefined2_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ControlAudioSignalRes__ErrorCodes_undefined2_oer_ext_arr_, 0, ControlAudioSignalRes__ErrorCodes_undefined2_oer_p_};
+const TTCN_Typedescriptor_t ControlAudioSignalRes__ErrorCodes_undefined2_descr_ = { "@IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes.undefined2", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ControlAudioSignalRes__ErrorCodes_undefined2_xer_, &BOOLEAN_json_, &ControlAudioSignalRes__ErrorCodes_undefined2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ControlAudioSignalRes__ErrorCodes_undefined3_xer_ = { {"undefined3>\n", "undefined3>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ControlAudioSignalRes__ErrorCodes_undefined3_oer_ext_arr_[0] = {};
+const int ControlAudioSignalRes__ErrorCodes_undefined3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ControlAudioSignalRes__ErrorCodes_undefined3_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ControlAudioSignalRes__ErrorCodes_undefined3_oer_ext_arr_, 0, ControlAudioSignalRes__ErrorCodes_undefined3_oer_p_};
+const TTCN_Typedescriptor_t ControlAudioSignalRes__ErrorCodes_undefined3_descr_ = { "@IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes.undefined3", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ControlAudioSignalRes__ErrorCodes_undefined3_xer_, &BOOLEAN_json_, &ControlAudioSignalRes__ErrorCodes_undefined3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ControlAudioSignalRes__ErrorCodes_anyOtherError_xer_ = { {"anyOtherError>\n", "anyOtherError>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ControlAudioSignalRes__ErrorCodes_anyOtherError_oer_ext_arr_[0] = {};
+const int ControlAudioSignalRes__ErrorCodes_anyOtherError_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ControlAudioSignalRes__ErrorCodes_anyOtherError_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ControlAudioSignalRes__ErrorCodes_anyOtherError_oer_ext_arr_, 0, ControlAudioSignalRes__ErrorCodes_anyOtherError_oer_p_};
+const TTCN_Typedescriptor_t ControlAudioSignalRes__ErrorCodes_anyOtherError_descr_ = { "@IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes.anyOtherError", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ControlAudioSignalRes__ErrorCodes_anyOtherError_xer_, &BOOLEAN_json_, &ControlAudioSignalRes__ErrorCodes_anyOtherError_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ControlAudioSignalRes__ErrorCodes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ControlAudioSignalRes__ErrorCodes_reserved5_oer_ext_arr_[0] = {};
+const int ControlAudioSignalRes__ErrorCodes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ControlAudioSignalRes__ErrorCodes_reserved5_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ControlAudioSignalRes__ErrorCodes_reserved5_oer_ext_arr_, 0, ControlAudioSignalRes__ErrorCodes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t ControlAudioSignalRes__ErrorCodes_reserved5_descr_ = { "@IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes.reserved5", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ControlAudioSignalRes__ErrorCodes_reserved5_xer_, &BOOLEAN_json_, &ControlAudioSignalRes__ErrorCodes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ControlAudioSignalRes__ErrorCodes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ControlAudioSignalRes__ErrorCodes_reserved6_oer_ext_arr_[0] = {};
+const int ControlAudioSignalRes__ErrorCodes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ControlAudioSignalRes__ErrorCodes_reserved6_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ControlAudioSignalRes__ErrorCodes_reserved6_oer_ext_arr_, 0, ControlAudioSignalRes__ErrorCodes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t ControlAudioSignalRes__ErrorCodes_reserved6_descr_ = { "@IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes.reserved6", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ControlAudioSignalRes__ErrorCodes_reserved6_xer_, &BOOLEAN_json_, &ControlAudioSignalRes__ErrorCodes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ControlAudioSignalRes__ErrorCodes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ControlAudioSignalRes__ErrorCodes_reserved7_oer_ext_arr_[0] = {};
+const int ControlAudioSignalRes__ErrorCodes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ControlAudioSignalRes__ErrorCodes_reserved7_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ControlAudioSignalRes__ErrorCodes_reserved7_oer_ext_arr_, 0, ControlAudioSignalRes__ErrorCodes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ControlAudioSignalRes__ErrorCodes_reserved7_descr_ = { "@IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes.reserved7", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ControlAudioSignalRes__ErrorCodes_reserved7_xer_, &BOOLEAN_json_, &ControlAudioSignalRes__ErrorCodes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ControlAudioSignalRes__ErrorCodes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ControlAudioSignalRes__ErrorCodes
+const TTCN_Typedescriptor_t ControlAudioSignalRes__ErrorCodes_descr_ = { "@IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes", NULL, &ControlAudioSignalRes__ErrorCodes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ControlAudioSignalRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ControlAudioSignalRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ControlAudioSignalRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.ControlAudioSignalRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ControlAudioSignalRes_vtfunction_xer_, &INTEGER_json_, &ControlAudioSignalRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ControlAudioSignalRes_reserved3_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ControlAudioSignalRes_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ControlAudioSignalRes_reserved3_oer_ext_arr_[0] = {};
+const int ControlAudioSignalRes_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ControlAudioSignalRes_reserved3_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ControlAudioSignalRes_reserved3_oer_ext_arr_, 0, ControlAudioSignalRes_reserved3_oer_p_};
+const TTCN_Typedescriptor_t ControlAudioSignalRes_reserved3_descr_ = { "@IsobusVTMessageTypes.ControlAudioSignalRes.reserved3", &OCTETSTRING_ber_, &ControlAudioSignalRes_reserved3_raw_, &OCTETSTRING_text_, &ControlAudioSignalRes_reserved3_xer_, &OCTETSTRING_json_, &ControlAudioSignalRes_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ControlAudioSignalRes_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ControlAudioSignalRes_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ControlAudioSignalRes_reserved4_oer_ext_arr_[0] = {};
+const int ControlAudioSignalRes_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ControlAudioSignalRes_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ControlAudioSignalRes_reserved4_oer_ext_arr_, 0, ControlAudioSignalRes_reserved4_oer_p_};
+const TTCN_Typedescriptor_t ControlAudioSignalRes_reserved4_descr_ = { "@IsobusVTMessageTypes.ControlAudioSignalRes.reserved4", &OCTETSTRING_ber_, &ControlAudioSignalRes_reserved4_raw_, &OCTETSTRING_text_, &ControlAudioSignalRes_reserved4_xer_, &OCTETSTRING_json_, &ControlAudioSignalRes_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ControlAudioSignalRes_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ControlAudioSignalRes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ControlAudioSignalRes_reserved5_oer_ext_arr_[0] = {};
+const int ControlAudioSignalRes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ControlAudioSignalRes_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ControlAudioSignalRes_reserved5_oer_ext_arr_, 0, ControlAudioSignalRes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t ControlAudioSignalRes_reserved5_descr_ = { "@IsobusVTMessageTypes.ControlAudioSignalRes.reserved5", &OCTETSTRING_ber_, &ControlAudioSignalRes_reserved5_raw_, &OCTETSTRING_text_, &ControlAudioSignalRes_reserved5_xer_, &OCTETSTRING_json_, &ControlAudioSignalRes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ControlAudioSignalRes_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ControlAudioSignalRes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ControlAudioSignalRes_reserved6_oer_ext_arr_[0] = {};
+const int ControlAudioSignalRes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ControlAudioSignalRes_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ControlAudioSignalRes_reserved6_oer_ext_arr_, 0, ControlAudioSignalRes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t ControlAudioSignalRes_reserved6_descr_ = { "@IsobusVTMessageTypes.ControlAudioSignalRes.reserved6", &OCTETSTRING_ber_, &ControlAudioSignalRes_reserved6_raw_, &OCTETSTRING_text_, &ControlAudioSignalRes_reserved6_xer_, &OCTETSTRING_json_, &ControlAudioSignalRes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ControlAudioSignalRes_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ControlAudioSignalRes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ControlAudioSignalRes_reserved7_oer_ext_arr_[0] = {};
+const int ControlAudioSignalRes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ControlAudioSignalRes_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ControlAudioSignalRes_reserved7_oer_ext_arr_, 0, ControlAudioSignalRes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ControlAudioSignalRes_reserved7_descr_ = { "@IsobusVTMessageTypes.ControlAudioSignalRes.reserved7", &OCTETSTRING_ber_, &ControlAudioSignalRes_reserved7_raw_, &OCTETSTRING_text_, &ControlAudioSignalRes_reserved7_xer_, &OCTETSTRING_json_, &ControlAudioSignalRes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ControlAudioSignalRes_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ControlAudioSignalRes_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ControlAudioSignalRes_reserved8_oer_ext_arr_[0] = {};
+const int ControlAudioSignalRes_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ControlAudioSignalRes_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ControlAudioSignalRes_reserved8_oer_ext_arr_, 0, ControlAudioSignalRes_reserved8_oer_p_};
+const TTCN_Typedescriptor_t ControlAudioSignalRes_reserved8_descr_ = { "@IsobusVTMessageTypes.ControlAudioSignalRes.reserved8", &OCTETSTRING_ber_, &ControlAudioSignalRes_reserved8_raw_, &OCTETSTRING_text_, &ControlAudioSignalRes_reserved8_xer_, &OCTETSTRING_json_, &ControlAudioSignalRes_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ControlAudioSignalRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ControlAudioSignalRes
+const TTCN_Typedescriptor_t ControlAudioSignalRes_descr_ = { "@IsobusVTMessageTypes.ControlAudioSignalRes", NULL, &ControlAudioSignalRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SetAudioVolumeReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SetAudioVolumeReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SetAudioVolumeReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.SetAudioVolumeReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &SetAudioVolumeReq_vtfunction_xer_, &INTEGER_json_, &SetAudioVolumeReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SetAudioVolumeReq_volumeInPercent_xer_ = { {"volumeInPercent>\n", "volumeInPercent>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SetAudioVolumeReq_volumeInPercent_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SetAudioVolumeReq_volumeInPercent_descr_ = { "@IsobusVTMessageTypes.SetAudioVolumeReq.volumeInPercent", &INTEGER_ber_, &PercentType_raw_, &INTEGER_text_, &SetAudioVolumeReq_volumeInPercent_xer_, &INTEGER_json_, &SetAudioVolumeReq_volumeInPercent_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SetAudioVolumeReq_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       SetAudioVolumeReq_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SetAudioVolumeReq_reserved4_oer_ext_arr_[0] = {};
+const int SetAudioVolumeReq_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SetAudioVolumeReq_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SetAudioVolumeReq_reserved4_oer_ext_arr_, 0, SetAudioVolumeReq_reserved4_oer_p_};
+const TTCN_Typedescriptor_t SetAudioVolumeReq_reserved4_descr_ = { "@IsobusVTMessageTypes.SetAudioVolumeReq.reserved4", &OCTETSTRING_ber_, &SetAudioVolumeReq_reserved4_raw_, &OCTETSTRING_text_, &SetAudioVolumeReq_reserved4_xer_, &OCTETSTRING_json_, &SetAudioVolumeReq_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SetAudioVolumeReq_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       SetAudioVolumeReq_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SetAudioVolumeReq_reserved5_oer_ext_arr_[0] = {};
+const int SetAudioVolumeReq_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SetAudioVolumeReq_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SetAudioVolumeReq_reserved5_oer_ext_arr_, 0, SetAudioVolumeReq_reserved5_oer_p_};
+const TTCN_Typedescriptor_t SetAudioVolumeReq_reserved5_descr_ = { "@IsobusVTMessageTypes.SetAudioVolumeReq.reserved5", &OCTETSTRING_ber_, &SetAudioVolumeReq_reserved5_raw_, &OCTETSTRING_text_, &SetAudioVolumeReq_reserved5_xer_, &OCTETSTRING_json_, &SetAudioVolumeReq_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SetAudioVolumeReq_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       SetAudioVolumeReq_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SetAudioVolumeReq_reserved6_oer_ext_arr_[0] = {};
+const int SetAudioVolumeReq_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SetAudioVolumeReq_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SetAudioVolumeReq_reserved6_oer_ext_arr_, 0, SetAudioVolumeReq_reserved6_oer_p_};
+const TTCN_Typedescriptor_t SetAudioVolumeReq_reserved6_descr_ = { "@IsobusVTMessageTypes.SetAudioVolumeReq.reserved6", &OCTETSTRING_ber_, &SetAudioVolumeReq_reserved6_raw_, &OCTETSTRING_text_, &SetAudioVolumeReq_reserved6_xer_, &OCTETSTRING_json_, &SetAudioVolumeReq_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SetAudioVolumeReq_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       SetAudioVolumeReq_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SetAudioVolumeReq_reserved7_oer_ext_arr_[0] = {};
+const int SetAudioVolumeReq_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SetAudioVolumeReq_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SetAudioVolumeReq_reserved7_oer_ext_arr_, 0, SetAudioVolumeReq_reserved7_oer_p_};
+const TTCN_Typedescriptor_t SetAudioVolumeReq_reserved7_descr_ = { "@IsobusVTMessageTypes.SetAudioVolumeReq.reserved7", &OCTETSTRING_ber_, &SetAudioVolumeReq_reserved7_raw_, &OCTETSTRING_text_, &SetAudioVolumeReq_reserved7_xer_, &OCTETSTRING_json_, &SetAudioVolumeReq_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SetAudioVolumeReq_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       SetAudioVolumeReq_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SetAudioVolumeReq_reserved8_oer_ext_arr_[0] = {};
+const int SetAudioVolumeReq_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SetAudioVolumeReq_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SetAudioVolumeReq_reserved8_oer_ext_arr_, 0, SetAudioVolumeReq_reserved8_oer_p_};
+const TTCN_Typedescriptor_t SetAudioVolumeReq_reserved8_descr_ = { "@IsobusVTMessageTypes.SetAudioVolumeReq.reserved8", &OCTETSTRING_ber_, &SetAudioVolumeReq_reserved8_raw_, &OCTETSTRING_text_, &SetAudioVolumeReq_reserved8_xer_, &OCTETSTRING_json_, &SetAudioVolumeReq_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SetAudioVolumeReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for SetAudioVolumeReq
+const TTCN_Typedescriptor_t SetAudioVolumeReq_descr_ = { "@IsobusVTMessageTypes.SetAudioVolumeReq", NULL, &SetAudioVolumeReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SetAudioVolumeErrorCodes_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting_xer_ = { {"AudioDeviceIsBusySubsequentCommandsUseTheNewSetting>\n", "AudioDeviceIsBusySubsequentCommandsUseTheNewSetting>\n"}, {53, 53}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SetAudioVolumeErrorCodes_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting_oer_ext_arr_[0] = {};
+const int SetAudioVolumeErrorCodes_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SetAudioVolumeErrorCodes_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SetAudioVolumeErrorCodes_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting_oer_ext_arr_, 0, SetAudioVolumeErrorCodes_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting_oer_p_};
+const TTCN_Typedescriptor_t SetAudioVolumeErrorCodes_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting_descr_ = { "@IsobusVTMessageTypes.SetAudioVolumeErrorCodes.AudioDeviceIsBusySubsequentCommandsUseTheNewSetting", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &SetAudioVolumeErrorCodes_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting_xer_, &BOOLEAN_json_, &SetAudioVolumeErrorCodes_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SetAudioVolumeErrorCodes_CommandIsNotSupported_xer_ = { {"CommandIsNotSupported>\n", "CommandIsNotSupported>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SetAudioVolumeErrorCodes_CommandIsNotSupported_oer_ext_arr_[0] = {};
+const int SetAudioVolumeErrorCodes_CommandIsNotSupported_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SetAudioVolumeErrorCodes_CommandIsNotSupported_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SetAudioVolumeErrorCodes_CommandIsNotSupported_oer_ext_arr_, 0, SetAudioVolumeErrorCodes_CommandIsNotSupported_oer_p_};
+const TTCN_Typedescriptor_t SetAudioVolumeErrorCodes_CommandIsNotSupported_descr_ = { "@IsobusVTMessageTypes.SetAudioVolumeErrorCodes.CommandIsNotSupported", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &SetAudioVolumeErrorCodes_CommandIsNotSupported_xer_, &BOOLEAN_json_, &SetAudioVolumeErrorCodes_CommandIsNotSupported_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SetAudioVolumeErrorCodes_reserved2_xer_ = { {"reserved2>\n", "reserved2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SetAudioVolumeErrorCodes_reserved2_oer_ext_arr_[0] = {};
+const int SetAudioVolumeErrorCodes_reserved2_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SetAudioVolumeErrorCodes_reserved2_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SetAudioVolumeErrorCodes_reserved2_oer_ext_arr_, 0, SetAudioVolumeErrorCodes_reserved2_oer_p_};
+const TTCN_Typedescriptor_t SetAudioVolumeErrorCodes_reserved2_descr_ = { "@IsobusVTMessageTypes.SetAudioVolumeErrorCodes.reserved2", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &SetAudioVolumeErrorCodes_reserved2_xer_, &BOOLEAN_json_, &SetAudioVolumeErrorCodes_reserved2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SetAudioVolumeErrorCodes_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SetAudioVolumeErrorCodes_reserved3_oer_ext_arr_[0] = {};
+const int SetAudioVolumeErrorCodes_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SetAudioVolumeErrorCodes_reserved3_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SetAudioVolumeErrorCodes_reserved3_oer_ext_arr_, 0, SetAudioVolumeErrorCodes_reserved3_oer_p_};
+const TTCN_Typedescriptor_t SetAudioVolumeErrorCodes_reserved3_descr_ = { "@IsobusVTMessageTypes.SetAudioVolumeErrorCodes.reserved3", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &SetAudioVolumeErrorCodes_reserved3_xer_, &BOOLEAN_json_, &SetAudioVolumeErrorCodes_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SetAudioVolumeErrorCodes_anyOtherError_xer_ = { {"anyOtherError>\n", "anyOtherError>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SetAudioVolumeErrorCodes_anyOtherError_oer_ext_arr_[0] = {};
+const int SetAudioVolumeErrorCodes_anyOtherError_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SetAudioVolumeErrorCodes_anyOtherError_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SetAudioVolumeErrorCodes_anyOtherError_oer_ext_arr_, 0, SetAudioVolumeErrorCodes_anyOtherError_oer_p_};
+const TTCN_Typedescriptor_t SetAudioVolumeErrorCodes_anyOtherError_descr_ = { "@IsobusVTMessageTypes.SetAudioVolumeErrorCodes.anyOtherError", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &SetAudioVolumeErrorCodes_anyOtherError_xer_, &BOOLEAN_json_, &SetAudioVolumeErrorCodes_anyOtherError_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SetAudioVolumeErrorCodes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SetAudioVolumeErrorCodes_reserved5_oer_ext_arr_[0] = {};
+const int SetAudioVolumeErrorCodes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SetAudioVolumeErrorCodes_reserved5_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SetAudioVolumeErrorCodes_reserved5_oer_ext_arr_, 0, SetAudioVolumeErrorCodes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t SetAudioVolumeErrorCodes_reserved5_descr_ = { "@IsobusVTMessageTypes.SetAudioVolumeErrorCodes.reserved5", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &SetAudioVolumeErrorCodes_reserved5_xer_, &BOOLEAN_json_, &SetAudioVolumeErrorCodes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SetAudioVolumeErrorCodes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SetAudioVolumeErrorCodes_reserved6_oer_ext_arr_[0] = {};
+const int SetAudioVolumeErrorCodes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SetAudioVolumeErrorCodes_reserved6_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SetAudioVolumeErrorCodes_reserved6_oer_ext_arr_, 0, SetAudioVolumeErrorCodes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t SetAudioVolumeErrorCodes_reserved6_descr_ = { "@IsobusVTMessageTypes.SetAudioVolumeErrorCodes.reserved6", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &SetAudioVolumeErrorCodes_reserved6_xer_, &BOOLEAN_json_, &SetAudioVolumeErrorCodes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SetAudioVolumeErrorCodes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SetAudioVolumeErrorCodes_reserved7_oer_ext_arr_[0] = {};
+const int SetAudioVolumeErrorCodes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SetAudioVolumeErrorCodes_reserved7_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SetAudioVolumeErrorCodes_reserved7_oer_ext_arr_, 0, SetAudioVolumeErrorCodes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t SetAudioVolumeErrorCodes_reserved7_descr_ = { "@IsobusVTMessageTypes.SetAudioVolumeErrorCodes.reserved7", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &SetAudioVolumeErrorCodes_reserved7_xer_, &BOOLEAN_json_, &SetAudioVolumeErrorCodes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SetAudioVolumeErrorCodes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for SetAudioVolumeErrorCodes
+const TTCN_Typedescriptor_t SetAudioVolumeErrorCodes_descr_ = { "@IsobusVTMessageTypes.SetAudioVolumeErrorCodes", NULL, &SetAudioVolumeErrorCodes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SetAudioVolumeRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SetAudioVolumeRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SetAudioVolumeRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.SetAudioVolumeRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &SetAudioVolumeRes_vtfunction_xer_, &INTEGER_json_, &SetAudioVolumeRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SetAudioVolumeRes_reserved3_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       SetAudioVolumeRes_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SetAudioVolumeRes_reserved3_oer_ext_arr_[0] = {};
+const int SetAudioVolumeRes_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SetAudioVolumeRes_reserved3_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SetAudioVolumeRes_reserved3_oer_ext_arr_, 0, SetAudioVolumeRes_reserved3_oer_p_};
+const TTCN_Typedescriptor_t SetAudioVolumeRes_reserved3_descr_ = { "@IsobusVTMessageTypes.SetAudioVolumeRes.reserved3", &OCTETSTRING_ber_, &SetAudioVolumeRes_reserved3_raw_, &OCTETSTRING_text_, &SetAudioVolumeRes_reserved3_xer_, &OCTETSTRING_json_, &SetAudioVolumeRes_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SetAudioVolumeRes_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       SetAudioVolumeRes_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SetAudioVolumeRes_reserved4_oer_ext_arr_[0] = {};
+const int SetAudioVolumeRes_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SetAudioVolumeRes_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SetAudioVolumeRes_reserved4_oer_ext_arr_, 0, SetAudioVolumeRes_reserved4_oer_p_};
+const TTCN_Typedescriptor_t SetAudioVolumeRes_reserved4_descr_ = { "@IsobusVTMessageTypes.SetAudioVolumeRes.reserved4", &OCTETSTRING_ber_, &SetAudioVolumeRes_reserved4_raw_, &OCTETSTRING_text_, &SetAudioVolumeRes_reserved4_xer_, &OCTETSTRING_json_, &SetAudioVolumeRes_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SetAudioVolumeRes_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       SetAudioVolumeRes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SetAudioVolumeRes_reserved5_oer_ext_arr_[0] = {};
+const int SetAudioVolumeRes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SetAudioVolumeRes_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SetAudioVolumeRes_reserved5_oer_ext_arr_, 0, SetAudioVolumeRes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t SetAudioVolumeRes_reserved5_descr_ = { "@IsobusVTMessageTypes.SetAudioVolumeRes.reserved5", &OCTETSTRING_ber_, &SetAudioVolumeRes_reserved5_raw_, &OCTETSTRING_text_, &SetAudioVolumeRes_reserved5_xer_, &OCTETSTRING_json_, &SetAudioVolumeRes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SetAudioVolumeRes_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       SetAudioVolumeRes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SetAudioVolumeRes_reserved6_oer_ext_arr_[0] = {};
+const int SetAudioVolumeRes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SetAudioVolumeRes_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SetAudioVolumeRes_reserved6_oer_ext_arr_, 0, SetAudioVolumeRes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t SetAudioVolumeRes_reserved6_descr_ = { "@IsobusVTMessageTypes.SetAudioVolumeRes.reserved6", &OCTETSTRING_ber_, &SetAudioVolumeRes_reserved6_raw_, &OCTETSTRING_text_, &SetAudioVolumeRes_reserved6_xer_, &OCTETSTRING_json_, &SetAudioVolumeRes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SetAudioVolumeRes_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       SetAudioVolumeRes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SetAudioVolumeRes_reserved7_oer_ext_arr_[0] = {};
+const int SetAudioVolumeRes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SetAudioVolumeRes_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SetAudioVolumeRes_reserved7_oer_ext_arr_, 0, SetAudioVolumeRes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t SetAudioVolumeRes_reserved7_descr_ = { "@IsobusVTMessageTypes.SetAudioVolumeRes.reserved7", &OCTETSTRING_ber_, &SetAudioVolumeRes_reserved7_raw_, &OCTETSTRING_text_, &SetAudioVolumeRes_reserved7_xer_, &OCTETSTRING_json_, &SetAudioVolumeRes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SetAudioVolumeRes_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       SetAudioVolumeRes_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SetAudioVolumeRes_reserved8_oer_ext_arr_[0] = {};
+const int SetAudioVolumeRes_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SetAudioVolumeRes_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SetAudioVolumeRes_reserved8_oer_ext_arr_, 0, SetAudioVolumeRes_reserved8_oer_p_};
+const TTCN_Typedescriptor_t SetAudioVolumeRes_reserved8_descr_ = { "@IsobusVTMessageTypes.SetAudioVolumeRes.reserved8", &OCTETSTRING_ber_, &SetAudioVolumeRes_reserved8_raw_, &OCTETSTRING_text_, &SetAudioVolumeRes_reserved8_xer_, &OCTETSTRING_json_, &SetAudioVolumeRes_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SetAudioVolumeRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for SetAudioVolumeRes
+const TTCN_Typedescriptor_t SetAudioVolumeRes_descr_ = { "@IsobusVTMessageTypes.SetAudioVolumeRes", NULL, &SetAudioVolumeRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeChildLocationReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeChildLocationReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeChildLocationReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.ChangeChildLocationReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangeChildLocationReq_vtfunction_xer_, &INTEGER_json_, &ChangeChildLocationReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeChildLocationReq_parentObjectID_xer_ = { {"parentObjectID>\n", "parentObjectID>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeChildLocationReq_parentObjectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeChildLocationReq_parentObjectID_descr_ = { "@IsobusVTMessageTypes.ChangeChildLocationReq.parentObjectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ChangeChildLocationReq_parentObjectID_xer_, &INTEGER_json_, &ChangeChildLocationReq_parentObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeChildLocationReq_objectIDofObjectToMove_xer_ = { {"objectIDofObjectToMove>\n", "objectIDofObjectToMove>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeChildLocationReq_objectIDofObjectToMove_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeChildLocationReq_objectIDofObjectToMove_descr_ = { "@IsobusVTMessageTypes.ChangeChildLocationReq.objectIDofObjectToMove", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ChangeChildLocationReq_objectIDofObjectToMove_xer_, &INTEGER_json_, &ChangeChildLocationReq_objectIDofObjectToMove_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeChildLocationReq_relativeChangeInXposition_xer_ = { {"relativeChangeInXposition>\n", "relativeChangeInXposition>\n"}, {27, 27}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeChildLocationReq_relativeChangeInXposition_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeChildLocationReq_relativeChangeInXposition_descr_ = { "@IsobusVTMessageTypes.ChangeChildLocationReq.relativeChangeInXposition", &INTEGER_ber_, &DeltaPositionType_raw_, &INTEGER_text_, &ChangeChildLocationReq_relativeChangeInXposition_xer_, &INTEGER_json_, &ChangeChildLocationReq_relativeChangeInXposition_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeChildLocationReq_relativeChangeInYposition_xer_ = { {"relativeChangeInYposition>\n", "relativeChangeInYposition>\n"}, {27, 27}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeChildLocationReq_relativeChangeInYposition_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeChildLocationReq_relativeChangeInYposition_descr_ = { "@IsobusVTMessageTypes.ChangeChildLocationReq.relativeChangeInYposition", &INTEGER_ber_, &DeltaPositionType_raw_, &INTEGER_text_, &ChangeChildLocationReq_relativeChangeInYposition_xer_, &INTEGER_json_, &ChangeChildLocationReq_relativeChangeInYposition_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeChildLocationReq_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeChildLocationReq_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeChildLocationReq_reserved8_oer_ext_arr_[0] = {};
+const int ChangeChildLocationReq_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeChildLocationReq_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeChildLocationReq_reserved8_oer_ext_arr_, 0, ChangeChildLocationReq_reserved8_oer_p_};
+const TTCN_Typedescriptor_t ChangeChildLocationReq_reserved8_descr_ = { "@IsobusVTMessageTypes.ChangeChildLocationReq.reserved8", &OCTETSTRING_ber_, &ChangeChildLocationReq_reserved8_raw_, &OCTETSTRING_text_, &ChangeChildLocationReq_reserved8_xer_, &OCTETSTRING_json_, &ChangeChildLocationReq_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeChildLocationReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangeChildLocationReq
+const TTCN_Typedescriptor_t ChangeChildLocationReq_descr_ = { "@IsobusVTMessageTypes.ChangeChildLocationReq", NULL, &ChangeChildLocationReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeChildLocationRes__errorCodes_invalidParentObjectID_xer_ = { {"invalidParentObjectID>\n", "invalidParentObjectID>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeChildLocationRes__errorCodes_invalidParentObjectID_oer_ext_arr_[0] = {};
+const int ChangeChildLocationRes__errorCodes_invalidParentObjectID_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeChildLocationRes__errorCodes_invalidParentObjectID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeChildLocationRes__errorCodes_invalidParentObjectID_oer_ext_arr_, 0, ChangeChildLocationRes__errorCodes_invalidParentObjectID_oer_p_};
+const TTCN_Typedescriptor_t ChangeChildLocationRes__errorCodes_invalidParentObjectID_descr_ = { "@IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes.invalidParentObjectID", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeChildLocationRes__errorCodes_invalidParentObjectID_xer_, &BOOLEAN_json_, &ChangeChildLocationRes__errorCodes_invalidParentObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeChildLocationRes__errorCodes_invalidObjectID_xer_ = { {"invalidObjectID>\n", "invalidObjectID>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeChildLocationRes__errorCodes_invalidObjectID_oer_ext_arr_[0] = {};
+const int ChangeChildLocationRes__errorCodes_invalidObjectID_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeChildLocationRes__errorCodes_invalidObjectID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeChildLocationRes__errorCodes_invalidObjectID_oer_ext_arr_, 0, ChangeChildLocationRes__errorCodes_invalidObjectID_oer_p_};
+const TTCN_Typedescriptor_t ChangeChildLocationRes__errorCodes_invalidObjectID_descr_ = { "@IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes.invalidObjectID", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeChildLocationRes__errorCodes_invalidObjectID_xer_, &BOOLEAN_json_, &ChangeChildLocationRes__errorCodes_invalidObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeChildLocationRes__errorCodes_reserved2_xer_ = { {"reserved2>\n", "reserved2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeChildLocationRes__errorCodes_reserved2_oer_ext_arr_[0] = {};
+const int ChangeChildLocationRes__errorCodes_reserved2_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeChildLocationRes__errorCodes_reserved2_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeChildLocationRes__errorCodes_reserved2_oer_ext_arr_, 0, ChangeChildLocationRes__errorCodes_reserved2_oer_p_};
+const TTCN_Typedescriptor_t ChangeChildLocationRes__errorCodes_reserved2_descr_ = { "@IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes.reserved2", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeChildLocationRes__errorCodes_reserved2_xer_, &BOOLEAN_json_, &ChangeChildLocationRes__errorCodes_reserved2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeChildLocationRes__errorCodes_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeChildLocationRes__errorCodes_reserved3_oer_ext_arr_[0] = {};
+const int ChangeChildLocationRes__errorCodes_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeChildLocationRes__errorCodes_reserved3_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeChildLocationRes__errorCodes_reserved3_oer_ext_arr_, 0, ChangeChildLocationRes__errorCodes_reserved3_oer_p_};
+const TTCN_Typedescriptor_t ChangeChildLocationRes__errorCodes_reserved3_descr_ = { "@IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes.reserved3", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeChildLocationRes__errorCodes_reserved3_xer_, &BOOLEAN_json_, &ChangeChildLocationRes__errorCodes_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeChildLocationRes__errorCodes_anyOtherError_xer_ = { {"anyOtherError>\n", "anyOtherError>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeChildLocationRes__errorCodes_anyOtherError_oer_ext_arr_[0] = {};
+const int ChangeChildLocationRes__errorCodes_anyOtherError_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeChildLocationRes__errorCodes_anyOtherError_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeChildLocationRes__errorCodes_anyOtherError_oer_ext_arr_, 0, ChangeChildLocationRes__errorCodes_anyOtherError_oer_p_};
+const TTCN_Typedescriptor_t ChangeChildLocationRes__errorCodes_anyOtherError_descr_ = { "@IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes.anyOtherError", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeChildLocationRes__errorCodes_anyOtherError_xer_, &BOOLEAN_json_, &ChangeChildLocationRes__errorCodes_anyOtherError_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeChildLocationRes__errorCodes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeChildLocationRes__errorCodes_reserved5_oer_ext_arr_[0] = {};
+const int ChangeChildLocationRes__errorCodes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeChildLocationRes__errorCodes_reserved5_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeChildLocationRes__errorCodes_reserved5_oer_ext_arr_, 0, ChangeChildLocationRes__errorCodes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t ChangeChildLocationRes__errorCodes_reserved5_descr_ = { "@IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes.reserved5", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeChildLocationRes__errorCodes_reserved5_xer_, &BOOLEAN_json_, &ChangeChildLocationRes__errorCodes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeChildLocationRes__errorCodes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeChildLocationRes__errorCodes_reserved6_oer_ext_arr_[0] = {};
+const int ChangeChildLocationRes__errorCodes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeChildLocationRes__errorCodes_reserved6_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeChildLocationRes__errorCodes_reserved6_oer_ext_arr_, 0, ChangeChildLocationRes__errorCodes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t ChangeChildLocationRes__errorCodes_reserved6_descr_ = { "@IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes.reserved6", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeChildLocationRes__errorCodes_reserved6_xer_, &BOOLEAN_json_, &ChangeChildLocationRes__errorCodes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeChildLocationRes__errorCodes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeChildLocationRes__errorCodes_reserved7_oer_ext_arr_[0] = {};
+const int ChangeChildLocationRes__errorCodes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeChildLocationRes__errorCodes_reserved7_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeChildLocationRes__errorCodes_reserved7_oer_ext_arr_, 0, ChangeChildLocationRes__errorCodes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ChangeChildLocationRes__errorCodes_reserved7_descr_ = { "@IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes.reserved7", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeChildLocationRes__errorCodes_reserved7_xer_, &BOOLEAN_json_, &ChangeChildLocationRes__errorCodes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeChildLocationRes__errorCodes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangeChildLocationRes__errorCodes
+const TTCN_Typedescriptor_t ChangeChildLocationRes__errorCodes_descr_ = { "@IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes", NULL, &ChangeChildLocationRes__errorCodes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeChildLocationRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeChildLocationRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeChildLocationRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.ChangeChildLocationRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangeChildLocationRes_vtfunction_xer_, &INTEGER_json_, &ChangeChildLocationRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeChildLocationRes_parentObjectID_xer_ = { {"parentObjectID>\n", "parentObjectID>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeChildLocationRes_parentObjectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeChildLocationRes_parentObjectID_descr_ = { "@IsobusVTMessageTypes.ChangeChildLocationRes.parentObjectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ChangeChildLocationRes_parentObjectID_xer_, &INTEGER_json_, &ChangeChildLocationRes_parentObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeChildLocationRes_objectIDofObjectToMove_xer_ = { {"objectIDofObjectToMove>\n", "objectIDofObjectToMove>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeChildLocationRes_objectIDofObjectToMove_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeChildLocationRes_objectIDofObjectToMove_descr_ = { "@IsobusVTMessageTypes.ChangeChildLocationRes.objectIDofObjectToMove", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ChangeChildLocationRes_objectIDofObjectToMove_xer_, &INTEGER_json_, &ChangeChildLocationRes_objectIDofObjectToMove_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeChildLocationRes_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeChildLocationRes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeChildLocationRes_reserved7_oer_ext_arr_[0] = {};
+const int ChangeChildLocationRes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeChildLocationRes_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeChildLocationRes_reserved7_oer_ext_arr_, 0, ChangeChildLocationRes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ChangeChildLocationRes_reserved7_descr_ = { "@IsobusVTMessageTypes.ChangeChildLocationRes.reserved7", &OCTETSTRING_ber_, &ChangeChildLocationRes_reserved7_raw_, &OCTETSTRING_text_, &ChangeChildLocationRes_reserved7_xer_, &OCTETSTRING_json_, &ChangeChildLocationRes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeChildLocationRes_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeChildLocationRes_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeChildLocationRes_reserved8_oer_ext_arr_[0] = {};
+const int ChangeChildLocationRes_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeChildLocationRes_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeChildLocationRes_reserved8_oer_ext_arr_, 0, ChangeChildLocationRes_reserved8_oer_p_};
+const TTCN_Typedescriptor_t ChangeChildLocationRes_reserved8_descr_ = { "@IsobusVTMessageTypes.ChangeChildLocationRes.reserved8", &OCTETSTRING_ber_, &ChangeChildLocationRes_reserved8_raw_, &OCTETSTRING_text_, &ChangeChildLocationRes_reserved8_xer_, &OCTETSTRING_json_, &ChangeChildLocationRes_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeChildLocationRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangeChildLocationRes
+const TTCN_Typedescriptor_t ChangeChildLocationRes_descr_ = { "@IsobusVTMessageTypes.ChangeChildLocationRes", NULL, &ChangeChildLocationRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeSizeReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeSizeReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeSizeReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.ChangeSizeReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangeSizeReq_vtfunction_xer_, &INTEGER_json_, &ChangeSizeReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeSizeReq_objectIDofObjectToSize_xer_ = { {"objectIDofObjectToSize>\n", "objectIDofObjectToSize>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeSizeReq_objectIDofObjectToSize_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeSizeReq_objectIDofObjectToSize_descr_ = { "@IsobusVTMessageTypes.ChangeSizeReq.objectIDofObjectToSize", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ChangeSizeReq_objectIDofObjectToSize_xer_, &INTEGER_json_, &ChangeSizeReq_objectIDofObjectToSize_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeSizeReq_newWidth_xer_ = { {"newWidth>\n", "newWidth>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeSizeReq_newWidth_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeSizeReq_newWidth_descr_ = { "@IsobusVTMessageTypes.ChangeSizeReq.newWidth", &INTEGER_ber_, &IsobusMessageTypes::INT2_raw_, &INTEGER_text_, &ChangeSizeReq_newWidth_xer_, &INTEGER_json_, &ChangeSizeReq_newWidth_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeSizeReq_newHeight_xer_ = { {"newHeight>\n", "newHeight>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeSizeReq_newHeight_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeSizeReq_newHeight_descr_ = { "@IsobusVTMessageTypes.ChangeSizeReq.newHeight", &INTEGER_ber_, &IsobusMessageTypes::INT2_raw_, &INTEGER_text_, &ChangeSizeReq_newHeight_xer_, &INTEGER_json_, &ChangeSizeReq_newHeight_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeSizeReq_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeSizeReq_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeSizeReq_reserved8_oer_ext_arr_[0] = {};
+const int ChangeSizeReq_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeSizeReq_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeSizeReq_reserved8_oer_ext_arr_, 0, ChangeSizeReq_reserved8_oer_p_};
+const TTCN_Typedescriptor_t ChangeSizeReq_reserved8_descr_ = { "@IsobusVTMessageTypes.ChangeSizeReq.reserved8", &OCTETSTRING_ber_, &ChangeSizeReq_reserved8_raw_, &OCTETSTRING_text_, &ChangeSizeReq_reserved8_xer_, &OCTETSTRING_json_, &ChangeSizeReq_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeSizeReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangeSizeReq
+const TTCN_Typedescriptor_t ChangeSizeReq_descr_ = { "@IsobusVTMessageTypes.ChangeSizeReq", NULL, &ChangeSizeReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeSizeRes__errorCodes_invalidObjectID_xer_ = { {"invalidObjectID>\n", "invalidObjectID>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeSizeRes__errorCodes_invalidObjectID_oer_ext_arr_[0] = {};
+const int ChangeSizeRes__errorCodes_invalidObjectID_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeSizeRes__errorCodes_invalidObjectID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeSizeRes__errorCodes_invalidObjectID_oer_ext_arr_, 0, ChangeSizeRes__errorCodes_invalidObjectID_oer_p_};
+const TTCN_Typedescriptor_t ChangeSizeRes__errorCodes_invalidObjectID_descr_ = { "@IsobusVTMessageTypes.ChangeSizeRes_errorCodes.invalidObjectID", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeSizeRes__errorCodes_invalidObjectID_xer_, &BOOLEAN_json_, &ChangeSizeRes__errorCodes_invalidObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeSizeRes__errorCodes_reserved1_xer_ = { {"reserved1>\n", "reserved1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeSizeRes__errorCodes_reserved1_oer_ext_arr_[0] = {};
+const int ChangeSizeRes__errorCodes_reserved1_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeSizeRes__errorCodes_reserved1_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeSizeRes__errorCodes_reserved1_oer_ext_arr_, 0, ChangeSizeRes__errorCodes_reserved1_oer_p_};
+const TTCN_Typedescriptor_t ChangeSizeRes__errorCodes_reserved1_descr_ = { "@IsobusVTMessageTypes.ChangeSizeRes_errorCodes.reserved1", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeSizeRes__errorCodes_reserved1_xer_, &BOOLEAN_json_, &ChangeSizeRes__errorCodes_reserved1_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeSizeRes__errorCodes_reserved2_xer_ = { {"reserved2>\n", "reserved2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeSizeRes__errorCodes_reserved2_oer_ext_arr_[0] = {};
+const int ChangeSizeRes__errorCodes_reserved2_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeSizeRes__errorCodes_reserved2_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeSizeRes__errorCodes_reserved2_oer_ext_arr_, 0, ChangeSizeRes__errorCodes_reserved2_oer_p_};
+const TTCN_Typedescriptor_t ChangeSizeRes__errorCodes_reserved2_descr_ = { "@IsobusVTMessageTypes.ChangeSizeRes_errorCodes.reserved2", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeSizeRes__errorCodes_reserved2_xer_, &BOOLEAN_json_, &ChangeSizeRes__errorCodes_reserved2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeSizeRes__errorCodes_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeSizeRes__errorCodes_reserved3_oer_ext_arr_[0] = {};
+const int ChangeSizeRes__errorCodes_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeSizeRes__errorCodes_reserved3_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeSizeRes__errorCodes_reserved3_oer_ext_arr_, 0, ChangeSizeRes__errorCodes_reserved3_oer_p_};
+const TTCN_Typedescriptor_t ChangeSizeRes__errorCodes_reserved3_descr_ = { "@IsobusVTMessageTypes.ChangeSizeRes_errorCodes.reserved3", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeSizeRes__errorCodes_reserved3_xer_, &BOOLEAN_json_, &ChangeSizeRes__errorCodes_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeSizeRes__errorCodes_anyOtherError_xer_ = { {"anyOtherError>\n", "anyOtherError>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeSizeRes__errorCodes_anyOtherError_oer_ext_arr_[0] = {};
+const int ChangeSizeRes__errorCodes_anyOtherError_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeSizeRes__errorCodes_anyOtherError_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeSizeRes__errorCodes_anyOtherError_oer_ext_arr_, 0, ChangeSizeRes__errorCodes_anyOtherError_oer_p_};
+const TTCN_Typedescriptor_t ChangeSizeRes__errorCodes_anyOtherError_descr_ = { "@IsobusVTMessageTypes.ChangeSizeRes_errorCodes.anyOtherError", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeSizeRes__errorCodes_anyOtherError_xer_, &BOOLEAN_json_, &ChangeSizeRes__errorCodes_anyOtherError_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeSizeRes__errorCodes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeSizeRes__errorCodes_reserved5_oer_ext_arr_[0] = {};
+const int ChangeSizeRes__errorCodes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeSizeRes__errorCodes_reserved5_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeSizeRes__errorCodes_reserved5_oer_ext_arr_, 0, ChangeSizeRes__errorCodes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t ChangeSizeRes__errorCodes_reserved5_descr_ = { "@IsobusVTMessageTypes.ChangeSizeRes_errorCodes.reserved5", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeSizeRes__errorCodes_reserved5_xer_, &BOOLEAN_json_, &ChangeSizeRes__errorCodes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeSizeRes__errorCodes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeSizeRes__errorCodes_reserved6_oer_ext_arr_[0] = {};
+const int ChangeSizeRes__errorCodes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeSizeRes__errorCodes_reserved6_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeSizeRes__errorCodes_reserved6_oer_ext_arr_, 0, ChangeSizeRes__errorCodes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t ChangeSizeRes__errorCodes_reserved6_descr_ = { "@IsobusVTMessageTypes.ChangeSizeRes_errorCodes.reserved6", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeSizeRes__errorCodes_reserved6_xer_, &BOOLEAN_json_, &ChangeSizeRes__errorCodes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeSizeRes__errorCodes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeSizeRes__errorCodes_reserved7_oer_ext_arr_[0] = {};
+const int ChangeSizeRes__errorCodes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeSizeRes__errorCodes_reserved7_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeSizeRes__errorCodes_reserved7_oer_ext_arr_, 0, ChangeSizeRes__errorCodes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ChangeSizeRes__errorCodes_reserved7_descr_ = { "@IsobusVTMessageTypes.ChangeSizeRes_errorCodes.reserved7", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeSizeRes__errorCodes_reserved7_xer_, &BOOLEAN_json_, &ChangeSizeRes__errorCodes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeSizeRes__errorCodes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangeSizeRes__errorCodes
+const TTCN_Typedescriptor_t ChangeSizeRes__errorCodes_descr_ = { "@IsobusVTMessageTypes.ChangeSizeRes_errorCodes", NULL, &ChangeSizeRes__errorCodes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeSizeRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeSizeRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeSizeRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.ChangeSizeRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangeSizeRes_vtfunction_xer_, &INTEGER_json_, &ChangeSizeRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeSizeRes_objectIDofObjectToSize_xer_ = { {"objectIDofObjectToSize>\n", "objectIDofObjectToSize>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeSizeRes_objectIDofObjectToSize_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeSizeRes_objectIDofObjectToSize_descr_ = { "@IsobusVTMessageTypes.ChangeSizeRes.objectIDofObjectToSize", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ChangeSizeRes_objectIDofObjectToSize_xer_, &INTEGER_json_, &ChangeSizeRes_objectIDofObjectToSize_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeSizeRes_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeSizeRes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeSizeRes_reserved5_oer_ext_arr_[0] = {};
+const int ChangeSizeRes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeSizeRes_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeSizeRes_reserved5_oer_ext_arr_, 0, ChangeSizeRes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t ChangeSizeRes_reserved5_descr_ = { "@IsobusVTMessageTypes.ChangeSizeRes.reserved5", &OCTETSTRING_ber_, &ChangeSizeRes_reserved5_raw_, &OCTETSTRING_text_, &ChangeSizeRes_reserved5_xer_, &OCTETSTRING_json_, &ChangeSizeRes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeSizeRes_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeSizeRes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeSizeRes_reserved6_oer_ext_arr_[0] = {};
+const int ChangeSizeRes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeSizeRes_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeSizeRes_reserved6_oer_ext_arr_, 0, ChangeSizeRes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t ChangeSizeRes_reserved6_descr_ = { "@IsobusVTMessageTypes.ChangeSizeRes.reserved6", &OCTETSTRING_ber_, &ChangeSizeRes_reserved6_raw_, &OCTETSTRING_text_, &ChangeSizeRes_reserved6_xer_, &OCTETSTRING_json_, &ChangeSizeRes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeSizeRes_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeSizeRes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeSizeRes_reserved7_oer_ext_arr_[0] = {};
+const int ChangeSizeRes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeSizeRes_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeSizeRes_reserved7_oer_ext_arr_, 0, ChangeSizeRes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ChangeSizeRes_reserved7_descr_ = { "@IsobusVTMessageTypes.ChangeSizeRes.reserved7", &OCTETSTRING_ber_, &ChangeSizeRes_reserved7_raw_, &OCTETSTRING_text_, &ChangeSizeRes_reserved7_xer_, &OCTETSTRING_json_, &ChangeSizeRes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeSizeRes_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeSizeRes_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeSizeRes_reserved8_oer_ext_arr_[0] = {};
+const int ChangeSizeRes_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeSizeRes_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeSizeRes_reserved8_oer_ext_arr_, 0, ChangeSizeRes_reserved8_oer_p_};
+const TTCN_Typedescriptor_t ChangeSizeRes_reserved8_descr_ = { "@IsobusVTMessageTypes.ChangeSizeRes.reserved8", &OCTETSTRING_ber_, &ChangeSizeRes_reserved8_raw_, &OCTETSTRING_text_, &ChangeSizeRes_reserved8_xer_, &OCTETSTRING_json_, &ChangeSizeRes_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeSizeRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangeSizeRes
+const TTCN_Typedescriptor_t ChangeSizeRes_descr_ = { "@IsobusVTMessageTypes.ChangeSizeRes", NULL, &ChangeSizeRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeBackgroundColourReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeBackgroundColourReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeBackgroundColourReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.ChangeBackgroundColourReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangeBackgroundColourReq_vtfunction_xer_, &INTEGER_json_, &ChangeBackgroundColourReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeBackgroundColourReq_objectIDofObjectToChange_xer_ = { {"objectIDofObjectToChange>\n", "objectIDofObjectToChange>\n"}, {26, 26}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeBackgroundColourReq_objectIDofObjectToChange_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeBackgroundColourReq_objectIDofObjectToChange_descr_ = { "@IsobusVTMessageTypes.ChangeBackgroundColourReq.objectIDofObjectToChange", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ChangeBackgroundColourReq_objectIDofObjectToChange_xer_, &INTEGER_json_, &ChangeBackgroundColourReq_objectIDofObjectToChange_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeBackgroundColourReq_newBackgroundColour_xer_ = { {"newBackgroundColour>\n", "newBackgroundColour>\n"}, {21, 21}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeBackgroundColourReq_newBackgroundColour_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeBackgroundColourReq_newBackgroundColour_descr_ = { "@IsobusVTMessageTypes.ChangeBackgroundColourReq.newBackgroundColour", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangeBackgroundColourReq_newBackgroundColour_xer_, &INTEGER_json_, &ChangeBackgroundColourReq_newBackgroundColour_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeBackgroundColourReq_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeBackgroundColourReq_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeBackgroundColourReq_reserved5_oer_ext_arr_[0] = {};
+const int ChangeBackgroundColourReq_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeBackgroundColourReq_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeBackgroundColourReq_reserved5_oer_ext_arr_, 0, ChangeBackgroundColourReq_reserved5_oer_p_};
+const TTCN_Typedescriptor_t ChangeBackgroundColourReq_reserved5_descr_ = { "@IsobusVTMessageTypes.ChangeBackgroundColourReq.reserved5", &OCTETSTRING_ber_, &ChangeBackgroundColourReq_reserved5_raw_, &OCTETSTRING_text_, &ChangeBackgroundColourReq_reserved5_xer_, &OCTETSTRING_json_, &ChangeBackgroundColourReq_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeBackgroundColourReq_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeBackgroundColourReq_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeBackgroundColourReq_reserved6_oer_ext_arr_[0] = {};
+const int ChangeBackgroundColourReq_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeBackgroundColourReq_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeBackgroundColourReq_reserved6_oer_ext_arr_, 0, ChangeBackgroundColourReq_reserved6_oer_p_};
+const TTCN_Typedescriptor_t ChangeBackgroundColourReq_reserved6_descr_ = { "@IsobusVTMessageTypes.ChangeBackgroundColourReq.reserved6", &OCTETSTRING_ber_, &ChangeBackgroundColourReq_reserved6_raw_, &OCTETSTRING_text_, &ChangeBackgroundColourReq_reserved6_xer_, &OCTETSTRING_json_, &ChangeBackgroundColourReq_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeBackgroundColourReq_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeBackgroundColourReq_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeBackgroundColourReq_reserved7_oer_ext_arr_[0] = {};
+const int ChangeBackgroundColourReq_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeBackgroundColourReq_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeBackgroundColourReq_reserved7_oer_ext_arr_, 0, ChangeBackgroundColourReq_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ChangeBackgroundColourReq_reserved7_descr_ = { "@IsobusVTMessageTypes.ChangeBackgroundColourReq.reserved7", &OCTETSTRING_ber_, &ChangeBackgroundColourReq_reserved7_raw_, &OCTETSTRING_text_, &ChangeBackgroundColourReq_reserved7_xer_, &OCTETSTRING_json_, &ChangeBackgroundColourReq_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeBackgroundColourReq_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeBackgroundColourReq_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeBackgroundColourReq_reserved8_oer_ext_arr_[0] = {};
+const int ChangeBackgroundColourReq_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeBackgroundColourReq_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeBackgroundColourReq_reserved8_oer_ext_arr_, 0, ChangeBackgroundColourReq_reserved8_oer_p_};
+const TTCN_Typedescriptor_t ChangeBackgroundColourReq_reserved8_descr_ = { "@IsobusVTMessageTypes.ChangeBackgroundColourReq.reserved8", &OCTETSTRING_ber_, &ChangeBackgroundColourReq_reserved8_raw_, &OCTETSTRING_text_, &ChangeBackgroundColourReq_reserved8_xer_, &OCTETSTRING_json_, &ChangeBackgroundColourReq_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeBackgroundColourReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangeBackgroundColourReq
+const TTCN_Typedescriptor_t ChangeBackgroundColourReq_descr_ = { "@IsobusVTMessageTypes.ChangeBackgroundColourReq", NULL, &ChangeBackgroundColourReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeBackgroundColourRes__errorCodes_invalidObjectID_xer_ = { {"invalidObjectID>\n", "invalidObjectID>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeBackgroundColourRes__errorCodes_invalidObjectID_oer_ext_arr_[0] = {};
+const int ChangeBackgroundColourRes__errorCodes_invalidObjectID_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeBackgroundColourRes__errorCodes_invalidObjectID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeBackgroundColourRes__errorCodes_invalidObjectID_oer_ext_arr_, 0, ChangeBackgroundColourRes__errorCodes_invalidObjectID_oer_p_};
+const TTCN_Typedescriptor_t ChangeBackgroundColourRes__errorCodes_invalidObjectID_descr_ = { "@IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes.invalidObjectID", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeBackgroundColourRes__errorCodes_invalidObjectID_xer_, &BOOLEAN_json_, &ChangeBackgroundColourRes__errorCodes_invalidObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeBackgroundColourRes__errorCodes_invalidColourCode_xer_ = { {"invalidColourCode>\n", "invalidColourCode>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeBackgroundColourRes__errorCodes_invalidColourCode_oer_ext_arr_[0] = {};
+const int ChangeBackgroundColourRes__errorCodes_invalidColourCode_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeBackgroundColourRes__errorCodes_invalidColourCode_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeBackgroundColourRes__errorCodes_invalidColourCode_oer_ext_arr_, 0, ChangeBackgroundColourRes__errorCodes_invalidColourCode_oer_p_};
+const TTCN_Typedescriptor_t ChangeBackgroundColourRes__errorCodes_invalidColourCode_descr_ = { "@IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes.invalidColourCode", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeBackgroundColourRes__errorCodes_invalidColourCode_xer_, &BOOLEAN_json_, &ChangeBackgroundColourRes__errorCodes_invalidColourCode_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeBackgroundColourRes__errorCodes_reserved2_xer_ = { {"reserved2>\n", "reserved2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeBackgroundColourRes__errorCodes_reserved2_oer_ext_arr_[0] = {};
+const int ChangeBackgroundColourRes__errorCodes_reserved2_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeBackgroundColourRes__errorCodes_reserved2_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeBackgroundColourRes__errorCodes_reserved2_oer_ext_arr_, 0, ChangeBackgroundColourRes__errorCodes_reserved2_oer_p_};
+const TTCN_Typedescriptor_t ChangeBackgroundColourRes__errorCodes_reserved2_descr_ = { "@IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes.reserved2", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeBackgroundColourRes__errorCodes_reserved2_xer_, &BOOLEAN_json_, &ChangeBackgroundColourRes__errorCodes_reserved2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeBackgroundColourRes__errorCodes_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeBackgroundColourRes__errorCodes_reserved3_oer_ext_arr_[0] = {};
+const int ChangeBackgroundColourRes__errorCodes_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeBackgroundColourRes__errorCodes_reserved3_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeBackgroundColourRes__errorCodes_reserved3_oer_ext_arr_, 0, ChangeBackgroundColourRes__errorCodes_reserved3_oer_p_};
+const TTCN_Typedescriptor_t ChangeBackgroundColourRes__errorCodes_reserved3_descr_ = { "@IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes.reserved3", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeBackgroundColourRes__errorCodes_reserved3_xer_, &BOOLEAN_json_, &ChangeBackgroundColourRes__errorCodes_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeBackgroundColourRes__errorCodes_anyOtherError_xer_ = { {"anyOtherError>\n", "anyOtherError>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeBackgroundColourRes__errorCodes_anyOtherError_oer_ext_arr_[0] = {};
+const int ChangeBackgroundColourRes__errorCodes_anyOtherError_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeBackgroundColourRes__errorCodes_anyOtherError_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeBackgroundColourRes__errorCodes_anyOtherError_oer_ext_arr_, 0, ChangeBackgroundColourRes__errorCodes_anyOtherError_oer_p_};
+const TTCN_Typedescriptor_t ChangeBackgroundColourRes__errorCodes_anyOtherError_descr_ = { "@IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes.anyOtherError", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeBackgroundColourRes__errorCodes_anyOtherError_xer_, &BOOLEAN_json_, &ChangeBackgroundColourRes__errorCodes_anyOtherError_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeBackgroundColourRes__errorCodes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeBackgroundColourRes__errorCodes_reserved5_oer_ext_arr_[0] = {};
+const int ChangeBackgroundColourRes__errorCodes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeBackgroundColourRes__errorCodes_reserved5_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeBackgroundColourRes__errorCodes_reserved5_oer_ext_arr_, 0, ChangeBackgroundColourRes__errorCodes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t ChangeBackgroundColourRes__errorCodes_reserved5_descr_ = { "@IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes.reserved5", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeBackgroundColourRes__errorCodes_reserved5_xer_, &BOOLEAN_json_, &ChangeBackgroundColourRes__errorCodes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeBackgroundColourRes__errorCodes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeBackgroundColourRes__errorCodes_reserved6_oer_ext_arr_[0] = {};
+const int ChangeBackgroundColourRes__errorCodes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeBackgroundColourRes__errorCodes_reserved6_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeBackgroundColourRes__errorCodes_reserved6_oer_ext_arr_, 0, ChangeBackgroundColourRes__errorCodes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t ChangeBackgroundColourRes__errorCodes_reserved6_descr_ = { "@IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes.reserved6", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeBackgroundColourRes__errorCodes_reserved6_xer_, &BOOLEAN_json_, &ChangeBackgroundColourRes__errorCodes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeBackgroundColourRes__errorCodes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeBackgroundColourRes__errorCodes_reserved7_oer_ext_arr_[0] = {};
+const int ChangeBackgroundColourRes__errorCodes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeBackgroundColourRes__errorCodes_reserved7_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeBackgroundColourRes__errorCodes_reserved7_oer_ext_arr_, 0, ChangeBackgroundColourRes__errorCodes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ChangeBackgroundColourRes__errorCodes_reserved7_descr_ = { "@IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes.reserved7", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeBackgroundColourRes__errorCodes_reserved7_xer_, &BOOLEAN_json_, &ChangeBackgroundColourRes__errorCodes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeBackgroundColourRes__errorCodes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangeBackgroundColourRes__errorCodes
+const TTCN_Typedescriptor_t ChangeBackgroundColourRes__errorCodes_descr_ = { "@IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes", NULL, &ChangeBackgroundColourRes__errorCodes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeBackgroundColourRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeBackgroundColourRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeBackgroundColourRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.ChangeBackgroundColourRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangeBackgroundColourRes_vtfunction_xer_, &INTEGER_json_, &ChangeBackgroundColourRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeBackgroundColourRes_objectIDofObjectToChange_xer_ = { {"objectIDofObjectToChange>\n", "objectIDofObjectToChange>\n"}, {26, 26}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeBackgroundColourRes_objectIDofObjectToChange_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeBackgroundColourRes_objectIDofObjectToChange_descr_ = { "@IsobusVTMessageTypes.ChangeBackgroundColourRes.objectIDofObjectToChange", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ChangeBackgroundColourRes_objectIDofObjectToChange_xer_, &INTEGER_json_, &ChangeBackgroundColourRes_objectIDofObjectToChange_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeBackgroundColourRes_newBackgroundColour_xer_ = { {"newBackgroundColour>\n", "newBackgroundColour>\n"}, {21, 21}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeBackgroundColourRes_newBackgroundColour_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeBackgroundColourRes_newBackgroundColour_descr_ = { "@IsobusVTMessageTypes.ChangeBackgroundColourRes.newBackgroundColour", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangeBackgroundColourRes_newBackgroundColour_xer_, &INTEGER_json_, &ChangeBackgroundColourRes_newBackgroundColour_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeBackgroundColourRes_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeBackgroundColourRes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeBackgroundColourRes_reserved6_oer_ext_arr_[0] = {};
+const int ChangeBackgroundColourRes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeBackgroundColourRes_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeBackgroundColourRes_reserved6_oer_ext_arr_, 0, ChangeBackgroundColourRes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t ChangeBackgroundColourRes_reserved6_descr_ = { "@IsobusVTMessageTypes.ChangeBackgroundColourRes.reserved6", &OCTETSTRING_ber_, &ChangeBackgroundColourRes_reserved6_raw_, &OCTETSTRING_text_, &ChangeBackgroundColourRes_reserved6_xer_, &OCTETSTRING_json_, &ChangeBackgroundColourRes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeBackgroundColourRes_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeBackgroundColourRes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeBackgroundColourRes_reserved7_oer_ext_arr_[0] = {};
+const int ChangeBackgroundColourRes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeBackgroundColourRes_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeBackgroundColourRes_reserved7_oer_ext_arr_, 0, ChangeBackgroundColourRes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ChangeBackgroundColourRes_reserved7_descr_ = { "@IsobusVTMessageTypes.ChangeBackgroundColourRes.reserved7", &OCTETSTRING_ber_, &ChangeBackgroundColourRes_reserved7_raw_, &OCTETSTRING_text_, &ChangeBackgroundColourRes_reserved7_xer_, &OCTETSTRING_json_, &ChangeBackgroundColourRes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeBackgroundColourRes_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeBackgroundColourRes_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeBackgroundColourRes_reserved8_oer_ext_arr_[0] = {};
+const int ChangeBackgroundColourRes_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeBackgroundColourRes_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeBackgroundColourRes_reserved8_oer_ext_arr_, 0, ChangeBackgroundColourRes_reserved8_oer_p_};
+const TTCN_Typedescriptor_t ChangeBackgroundColourRes_reserved8_descr_ = { "@IsobusVTMessageTypes.ChangeBackgroundColourRes.reserved8", &OCTETSTRING_ber_, &ChangeBackgroundColourRes_reserved8_raw_, &OCTETSTRING_text_, &ChangeBackgroundColourRes_reserved8_xer_, &OCTETSTRING_json_, &ChangeBackgroundColourRes_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeBackgroundColourRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangeBackgroundColourRes
+const TTCN_Typedescriptor_t ChangeBackgroundColourRes_descr_ = { "@IsobusVTMessageTypes.ChangeBackgroundColourRes", NULL, &ChangeBackgroundColourRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeNumericValueReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeNumericValueReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeNumericValueReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.ChangeNumericValueReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangeNumericValueReq_vtfunction_xer_, &INTEGER_json_, &ChangeNumericValueReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeNumericValueReq_objectID_xer_ = { {"objectID>\n", "objectID>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeNumericValueReq_objectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeNumericValueReq_objectID_descr_ = { "@IsobusVTMessageTypes.ChangeNumericValueReq.objectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ChangeNumericValueReq_objectID_xer_, &INTEGER_json_, &ChangeNumericValueReq_objectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeNumericValueReq_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeNumericValueReq_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeNumericValueReq_reserved4_oer_ext_arr_[0] = {};
+const int ChangeNumericValueReq_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeNumericValueReq_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeNumericValueReq_reserved4_oer_ext_arr_, 0, ChangeNumericValueReq_reserved4_oer_p_};
+const TTCN_Typedescriptor_t ChangeNumericValueReq_reserved4_descr_ = { "@IsobusVTMessageTypes.ChangeNumericValueReq.reserved4", &OCTETSTRING_ber_, &ChangeNumericValueReq_reserved4_raw_, &OCTETSTRING_text_, &ChangeNumericValueReq_reserved4_xer_, &OCTETSTRING_json_, &ChangeNumericValueReq_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeNumericValueReq_newValueForValueAttribute_xer_ = { {"newValueForValueAttribute>\n", "newValueForValueAttribute>\n"}, {27, 27}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeNumericValueReq_newValueForValueAttribute_oer_ext_arr_[0] = {};
+const int ChangeNumericValueReq_newValueForValueAttribute_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeNumericValueReq_newValueForValueAttribute_oer_ = { -1, TRUE, 4, FALSE, 0, 0, ChangeNumericValueReq_newValueForValueAttribute_oer_ext_arr_, 0, ChangeNumericValueReq_newValueForValueAttribute_oer_p_};
+const TTCN_Typedescriptor_t ChangeNumericValueReq_newValueForValueAttribute_descr_ = { "@IsobusVTMessageTypes.ChangeNumericValueReq.newValueForValueAttribute", &OCTETSTRING_ber_, &General__Types::OCT4_raw_, &OCTETSTRING_text_, &ChangeNumericValueReq_newValueForValueAttribute_xer_, &OCTETSTRING_json_, &ChangeNumericValueReq_newValueForValueAttribute_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeNumericValueReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangeNumericValueReq
+const TTCN_Typedescriptor_t ChangeNumericValueReq_descr_ = { "@IsobusVTMessageTypes.ChangeNumericValueReq", NULL, &ChangeNumericValueReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeNumericValueRes__errorCodes_invalidObjectID_xer_ = { {"invalidObjectID>\n", "invalidObjectID>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeNumericValueRes__errorCodes_invalidObjectID_oer_ext_arr_[0] = {};
+const int ChangeNumericValueRes__errorCodes_invalidObjectID_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeNumericValueRes__errorCodes_invalidObjectID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeNumericValueRes__errorCodes_invalidObjectID_oer_ext_arr_, 0, ChangeNumericValueRes__errorCodes_invalidObjectID_oer_p_};
+const TTCN_Typedescriptor_t ChangeNumericValueRes__errorCodes_invalidObjectID_descr_ = { "@IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes.invalidObjectID", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeNumericValueRes__errorCodes_invalidObjectID_xer_, &BOOLEAN_json_, &ChangeNumericValueRes__errorCodes_invalidObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeNumericValueRes__errorCodes_invalidValue_xer_ = { {"invalidValue>\n", "invalidValue>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeNumericValueRes__errorCodes_invalidValue_oer_ext_arr_[0] = {};
+const int ChangeNumericValueRes__errorCodes_invalidValue_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeNumericValueRes__errorCodes_invalidValue_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeNumericValueRes__errorCodes_invalidValue_oer_ext_arr_, 0, ChangeNumericValueRes__errorCodes_invalidValue_oer_p_};
+const TTCN_Typedescriptor_t ChangeNumericValueRes__errorCodes_invalidValue_descr_ = { "@IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes.invalidValue", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeNumericValueRes__errorCodes_invalidValue_xer_, &BOOLEAN_json_, &ChangeNumericValueRes__errorCodes_invalidValue_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeNumericValueRes__errorCodes_valueInUse_xer_ = { {"valueInUse>\n", "valueInUse>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeNumericValueRes__errorCodes_valueInUse_oer_ext_arr_[0] = {};
+const int ChangeNumericValueRes__errorCodes_valueInUse_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeNumericValueRes__errorCodes_valueInUse_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeNumericValueRes__errorCodes_valueInUse_oer_ext_arr_, 0, ChangeNumericValueRes__errorCodes_valueInUse_oer_p_};
+const TTCN_Typedescriptor_t ChangeNumericValueRes__errorCodes_valueInUse_descr_ = { "@IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes.valueInUse", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeNumericValueRes__errorCodes_valueInUse_xer_, &BOOLEAN_json_, &ChangeNumericValueRes__errorCodes_valueInUse_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeNumericValueRes__errorCodes_undefined_xer_ = { {"undefined>\n", "undefined>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeNumericValueRes__errorCodes_undefined_oer_ext_arr_[0] = {};
+const int ChangeNumericValueRes__errorCodes_undefined_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeNumericValueRes__errorCodes_undefined_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeNumericValueRes__errorCodes_undefined_oer_ext_arr_, 0, ChangeNumericValueRes__errorCodes_undefined_oer_p_};
+const TTCN_Typedescriptor_t ChangeNumericValueRes__errorCodes_undefined_descr_ = { "@IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes.undefined", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeNumericValueRes__errorCodes_undefined_xer_, &BOOLEAN_json_, &ChangeNumericValueRes__errorCodes_undefined_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeNumericValueRes__errorCodes_anyOtherError_xer_ = { {"anyOtherError>\n", "anyOtherError>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeNumericValueRes__errorCodes_anyOtherError_oer_ext_arr_[0] = {};
+const int ChangeNumericValueRes__errorCodes_anyOtherError_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeNumericValueRes__errorCodes_anyOtherError_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeNumericValueRes__errorCodes_anyOtherError_oer_ext_arr_, 0, ChangeNumericValueRes__errorCodes_anyOtherError_oer_p_};
+const TTCN_Typedescriptor_t ChangeNumericValueRes__errorCodes_anyOtherError_descr_ = { "@IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes.anyOtherError", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeNumericValueRes__errorCodes_anyOtherError_xer_, &BOOLEAN_json_, &ChangeNumericValueRes__errorCodes_anyOtherError_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeNumericValueRes__errorCodes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeNumericValueRes__errorCodes_reserved5_oer_ext_arr_[0] = {};
+const int ChangeNumericValueRes__errorCodes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeNumericValueRes__errorCodes_reserved5_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeNumericValueRes__errorCodes_reserved5_oer_ext_arr_, 0, ChangeNumericValueRes__errorCodes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t ChangeNumericValueRes__errorCodes_reserved5_descr_ = { "@IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes.reserved5", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeNumericValueRes__errorCodes_reserved5_xer_, &BOOLEAN_json_, &ChangeNumericValueRes__errorCodes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeNumericValueRes__errorCodes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeNumericValueRes__errorCodes_reserved6_oer_ext_arr_[0] = {};
+const int ChangeNumericValueRes__errorCodes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeNumericValueRes__errorCodes_reserved6_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeNumericValueRes__errorCodes_reserved6_oer_ext_arr_, 0, ChangeNumericValueRes__errorCodes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t ChangeNumericValueRes__errorCodes_reserved6_descr_ = { "@IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes.reserved6", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeNumericValueRes__errorCodes_reserved6_xer_, &BOOLEAN_json_, &ChangeNumericValueRes__errorCodes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeNumericValueRes__errorCodes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeNumericValueRes__errorCodes_reserved7_oer_ext_arr_[0] = {};
+const int ChangeNumericValueRes__errorCodes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeNumericValueRes__errorCodes_reserved7_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeNumericValueRes__errorCodes_reserved7_oer_ext_arr_, 0, ChangeNumericValueRes__errorCodes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ChangeNumericValueRes__errorCodes_reserved7_descr_ = { "@IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes.reserved7", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeNumericValueRes__errorCodes_reserved7_xer_, &BOOLEAN_json_, &ChangeNumericValueRes__errorCodes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeNumericValueRes__errorCodes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangeNumericValueRes__errorCodes
+const TTCN_Typedescriptor_t ChangeNumericValueRes__errorCodes_descr_ = { "@IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes", NULL, &ChangeNumericValueRes__errorCodes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeNumericValueRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeNumericValueRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeNumericValueRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.ChangeNumericValueRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangeNumericValueRes_vtfunction_xer_, &INTEGER_json_, &ChangeNumericValueRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeNumericValueRes_objectID_xer_ = { {"objectID>\n", "objectID>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeNumericValueRes_objectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeNumericValueRes_objectID_descr_ = { "@IsobusVTMessageTypes.ChangeNumericValueRes.objectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ChangeNumericValueRes_objectID_xer_, &INTEGER_json_, &ChangeNumericValueRes_objectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeNumericValueRes_valueForValueAttribute_xer_ = { {"valueForValueAttribute>\n", "valueForValueAttribute>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeNumericValueRes_valueForValueAttribute_oer_ext_arr_[0] = {};
+const int ChangeNumericValueRes_valueForValueAttribute_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeNumericValueRes_valueForValueAttribute_oer_ = { -1, TRUE, 4, FALSE, 0, 0, ChangeNumericValueRes_valueForValueAttribute_oer_ext_arr_, 0, ChangeNumericValueRes_valueForValueAttribute_oer_p_};
+const TTCN_Typedescriptor_t ChangeNumericValueRes_valueForValueAttribute_descr_ = { "@IsobusVTMessageTypes.ChangeNumericValueRes.valueForValueAttribute", &OCTETSTRING_ber_, &General__Types::OCT4_raw_, &OCTETSTRING_text_, &ChangeNumericValueRes_valueForValueAttribute_xer_, &OCTETSTRING_json_, &ChangeNumericValueRes_valueForValueAttribute_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeNumericValueRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangeNumericValueRes
+const TTCN_Typedescriptor_t ChangeNumericValueRes_descr_ = { "@IsobusVTMessageTypes.ChangeNumericValueRes", NULL, &ChangeNumericValueRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeEndPointRes__errorCodes_invalidObjectID_xer_ = { {"invalidObjectID>\n", "invalidObjectID>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeEndPointRes__errorCodes_invalidObjectID_oer_ext_arr_[0] = {};
+const int ChangeEndPointRes__errorCodes_invalidObjectID_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeEndPointRes__errorCodes_invalidObjectID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeEndPointRes__errorCodes_invalidObjectID_oer_ext_arr_, 0, ChangeEndPointRes__errorCodes_invalidObjectID_oer_p_};
+const TTCN_Typedescriptor_t ChangeEndPointRes__errorCodes_invalidObjectID_descr_ = { "@IsobusVTMessageTypes.ChangeEndPointRes_errorCodes.invalidObjectID", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeEndPointRes__errorCodes_invalidObjectID_xer_, &BOOLEAN_json_, &ChangeEndPointRes__errorCodes_invalidObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeEndPointRes__errorCodes_invalidLineDirection_xer_ = { {"invalidLineDirection>\n", "invalidLineDirection>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeEndPointRes__errorCodes_invalidLineDirection_oer_ext_arr_[0] = {};
+const int ChangeEndPointRes__errorCodes_invalidLineDirection_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeEndPointRes__errorCodes_invalidLineDirection_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeEndPointRes__errorCodes_invalidLineDirection_oer_ext_arr_, 0, ChangeEndPointRes__errorCodes_invalidLineDirection_oer_p_};
+const TTCN_Typedescriptor_t ChangeEndPointRes__errorCodes_invalidLineDirection_descr_ = { "@IsobusVTMessageTypes.ChangeEndPointRes_errorCodes.invalidLineDirection", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeEndPointRes__errorCodes_invalidLineDirection_xer_, &BOOLEAN_json_, &ChangeEndPointRes__errorCodes_invalidLineDirection_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeEndPointRes__errorCodes_reserved2_xer_ = { {"reserved2>\n", "reserved2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeEndPointRes__errorCodes_reserved2_oer_ext_arr_[0] = {};
+const int ChangeEndPointRes__errorCodes_reserved2_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeEndPointRes__errorCodes_reserved2_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeEndPointRes__errorCodes_reserved2_oer_ext_arr_, 0, ChangeEndPointRes__errorCodes_reserved2_oer_p_};
+const TTCN_Typedescriptor_t ChangeEndPointRes__errorCodes_reserved2_descr_ = { "@IsobusVTMessageTypes.ChangeEndPointRes_errorCodes.reserved2", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeEndPointRes__errorCodes_reserved2_xer_, &BOOLEAN_json_, &ChangeEndPointRes__errorCodes_reserved2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeEndPointRes__errorCodes_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeEndPointRes__errorCodes_reserved3_oer_ext_arr_[0] = {};
+const int ChangeEndPointRes__errorCodes_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeEndPointRes__errorCodes_reserved3_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeEndPointRes__errorCodes_reserved3_oer_ext_arr_, 0, ChangeEndPointRes__errorCodes_reserved3_oer_p_};
+const TTCN_Typedescriptor_t ChangeEndPointRes__errorCodes_reserved3_descr_ = { "@IsobusVTMessageTypes.ChangeEndPointRes_errorCodes.reserved3", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeEndPointRes__errorCodes_reserved3_xer_, &BOOLEAN_json_, &ChangeEndPointRes__errorCodes_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeEndPointRes__errorCodes_anyOtherError_xer_ = { {"anyOtherError>\n", "anyOtherError>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeEndPointRes__errorCodes_anyOtherError_oer_ext_arr_[0] = {};
+const int ChangeEndPointRes__errorCodes_anyOtherError_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeEndPointRes__errorCodes_anyOtherError_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeEndPointRes__errorCodes_anyOtherError_oer_ext_arr_, 0, ChangeEndPointRes__errorCodes_anyOtherError_oer_p_};
+const TTCN_Typedescriptor_t ChangeEndPointRes__errorCodes_anyOtherError_descr_ = { "@IsobusVTMessageTypes.ChangeEndPointRes_errorCodes.anyOtherError", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeEndPointRes__errorCodes_anyOtherError_xer_, &BOOLEAN_json_, &ChangeEndPointRes__errorCodes_anyOtherError_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeEndPointRes__errorCodes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeEndPointRes__errorCodes_reserved5_oer_ext_arr_[0] = {};
+const int ChangeEndPointRes__errorCodes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeEndPointRes__errorCodes_reserved5_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeEndPointRes__errorCodes_reserved5_oer_ext_arr_, 0, ChangeEndPointRes__errorCodes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t ChangeEndPointRes__errorCodes_reserved5_descr_ = { "@IsobusVTMessageTypes.ChangeEndPointRes_errorCodes.reserved5", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeEndPointRes__errorCodes_reserved5_xer_, &BOOLEAN_json_, &ChangeEndPointRes__errorCodes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeEndPointRes__errorCodes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeEndPointRes__errorCodes_reserved6_oer_ext_arr_[0] = {};
+const int ChangeEndPointRes__errorCodes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeEndPointRes__errorCodes_reserved6_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeEndPointRes__errorCodes_reserved6_oer_ext_arr_, 0, ChangeEndPointRes__errorCodes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t ChangeEndPointRes__errorCodes_reserved6_descr_ = { "@IsobusVTMessageTypes.ChangeEndPointRes_errorCodes.reserved6", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeEndPointRes__errorCodes_reserved6_xer_, &BOOLEAN_json_, &ChangeEndPointRes__errorCodes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeEndPointRes__errorCodes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeEndPointRes__errorCodes_reserved7_oer_ext_arr_[0] = {};
+const int ChangeEndPointRes__errorCodes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeEndPointRes__errorCodes_reserved7_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeEndPointRes__errorCodes_reserved7_oer_ext_arr_, 0, ChangeEndPointRes__errorCodes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ChangeEndPointRes__errorCodes_reserved7_descr_ = { "@IsobusVTMessageTypes.ChangeEndPointRes_errorCodes.reserved7", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeEndPointRes__errorCodes_reserved7_xer_, &BOOLEAN_json_, &ChangeEndPointRes__errorCodes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeEndPointRes__errorCodes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangeEndPointRes__errorCodes
+const TTCN_Typedescriptor_t ChangeEndPointRes__errorCodes_descr_ = { "@IsobusVTMessageTypes.ChangeEndPointRes_errorCodes", NULL, &ChangeEndPointRes__errorCodes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeEndPointRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeEndPointRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeEndPointRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.ChangeEndPointRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangeEndPointRes_vtfunction_xer_, &INTEGER_json_, &ChangeEndPointRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeEndPointRes_objectID_xer_ = { {"objectID>\n", "objectID>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeEndPointRes_objectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeEndPointRes_objectID_descr_ = { "@IsobusVTMessageTypes.ChangeEndPointRes.objectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ChangeEndPointRes_objectID_xer_, &INTEGER_json_, &ChangeEndPointRes_objectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeEndPointRes_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeEndPointRes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeEndPointRes_reserved5_oer_ext_arr_[0] = {};
+const int ChangeEndPointRes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeEndPointRes_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeEndPointRes_reserved5_oer_ext_arr_, 0, ChangeEndPointRes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t ChangeEndPointRes_reserved5_descr_ = { "@IsobusVTMessageTypes.ChangeEndPointRes.reserved5", &OCTETSTRING_ber_, &ChangeEndPointRes_reserved5_raw_, &OCTETSTRING_text_, &ChangeEndPointRes_reserved5_xer_, &OCTETSTRING_json_, &ChangeEndPointRes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeEndPointRes_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeEndPointRes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeEndPointRes_reserved6_oer_ext_arr_[0] = {};
+const int ChangeEndPointRes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeEndPointRes_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeEndPointRes_reserved6_oer_ext_arr_, 0, ChangeEndPointRes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t ChangeEndPointRes_reserved6_descr_ = { "@IsobusVTMessageTypes.ChangeEndPointRes.reserved6", &OCTETSTRING_ber_, &ChangeEndPointRes_reserved6_raw_, &OCTETSTRING_text_, &ChangeEndPointRes_reserved6_xer_, &OCTETSTRING_json_, &ChangeEndPointRes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeEndPointRes_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeEndPointRes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeEndPointRes_reserved7_oer_ext_arr_[0] = {};
+const int ChangeEndPointRes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeEndPointRes_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeEndPointRes_reserved7_oer_ext_arr_, 0, ChangeEndPointRes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ChangeEndPointRes_reserved7_descr_ = { "@IsobusVTMessageTypes.ChangeEndPointRes.reserved7", &OCTETSTRING_ber_, &ChangeEndPointRes_reserved7_raw_, &OCTETSTRING_text_, &ChangeEndPointRes_reserved7_xer_, &OCTETSTRING_json_, &ChangeEndPointRes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeEndPointRes_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeEndPointRes_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeEndPointRes_reserved8_oer_ext_arr_[0] = {};
+const int ChangeEndPointRes_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeEndPointRes_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeEndPointRes_reserved8_oer_ext_arr_, 0, ChangeEndPointRes_reserved8_oer_p_};
+const TTCN_Typedescriptor_t ChangeEndPointRes_reserved8_descr_ = { "@IsobusVTMessageTypes.ChangeEndPointRes.reserved8", &OCTETSTRING_ber_, &ChangeEndPointRes_reserved8_raw_, &OCTETSTRING_text_, &ChangeEndPointRes_reserved8_xer_, &OCTETSTRING_json_, &ChangeEndPointRes_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeEndPointRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangeEndPointRes
+const TTCN_Typedescriptor_t ChangeEndPointRes_descr_ = { "@IsobusVTMessageTypes.ChangeEndPointRes", NULL, &ChangeEndPointRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t e__ChangeEndPointReq__LineDirection_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,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for e__ChangeEndPointReq__LineDirection
+const TTCN_Typedescriptor_t e__ChangeEndPointReq__LineDirection_descr_ = { "@IsobusVTMessageTypes.e_ChangeEndPointReq_LineDirection", NULL, &e__ChangeEndPointReq__LineDirection_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeEndPointReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeEndPointReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeEndPointReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.ChangeEndPointReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangeEndPointReq_vtfunction_xer_, &INTEGER_json_, &ChangeEndPointReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeEndPointReq_objectIDofAnOutputLineObjectToChange_xer_ = { {"objectIDofAnOutputLineObjectToChange>\n", "objectIDofAnOutputLineObjectToChange>\n"}, {38, 38}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeEndPointReq_objectIDofAnOutputLineObjectToChange_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeEndPointReq_objectIDofAnOutputLineObjectToChange_descr_ = { "@IsobusVTMessageTypes.ChangeEndPointReq.objectIDofAnOutputLineObjectToChange", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ChangeEndPointReq_objectIDofAnOutputLineObjectToChange_xer_, &INTEGER_json_, &ChangeEndPointReq_objectIDofAnOutputLineObjectToChange_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeEndPointReq_width_xer_ = { {"width>\n", "width>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeEndPointReq_width_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeEndPointReq_width_descr_ = { "@IsobusVTMessageTypes.ChangeEndPointReq.width", &INTEGER_ber_, &IsobusMessageTypes::INT2_raw_, &INTEGER_text_, &ChangeEndPointReq_width_xer_, &INTEGER_json_, &ChangeEndPointReq_width_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeEndPointReq_height_xer_ = { {"height>\n", "height>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeEndPointReq_height_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeEndPointReq_height_descr_ = { "@IsobusVTMessageTypes.ChangeEndPointReq.height", &INTEGER_ber_, &IsobusMessageTypes::INT2_raw_, &INTEGER_text_, &ChangeEndPointReq_height_xer_, &INTEGER_json_, &ChangeEndPointReq_height_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeEndPointReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangeEndPointReq
+const TTCN_Typedescriptor_t ChangeEndPointReq_descr_ = { "@IsobusVTMessageTypes.ChangeEndPointReq", NULL, &ChangeEndPointReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeFontAttributesRes__errorCodes_invalidObjectID_xer_ = { {"invalidObjectID>\n", "invalidObjectID>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeFontAttributesRes__errorCodes_invalidObjectID_oer_ext_arr_[0] = {};
+const int ChangeFontAttributesRes__errorCodes_invalidObjectID_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeFontAttributesRes__errorCodes_invalidObjectID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeFontAttributesRes__errorCodes_invalidObjectID_oer_ext_arr_, 0, ChangeFontAttributesRes__errorCodes_invalidObjectID_oer_p_};
+const TTCN_Typedescriptor_t ChangeFontAttributesRes__errorCodes_invalidObjectID_descr_ = { "@IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes.invalidObjectID", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeFontAttributesRes__errorCodes_invalidObjectID_xer_, &BOOLEAN_json_, &ChangeFontAttributesRes__errorCodes_invalidObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeFontAttributesRes__errorCodes_invalidColor_xer_ = { {"invalidColor>\n", "invalidColor>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeFontAttributesRes__errorCodes_invalidColor_oer_ext_arr_[0] = {};
+const int ChangeFontAttributesRes__errorCodes_invalidColor_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeFontAttributesRes__errorCodes_invalidColor_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeFontAttributesRes__errorCodes_invalidColor_oer_ext_arr_, 0, ChangeFontAttributesRes__errorCodes_invalidColor_oer_p_};
+const TTCN_Typedescriptor_t ChangeFontAttributesRes__errorCodes_invalidColor_descr_ = { "@IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes.invalidColor", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeFontAttributesRes__errorCodes_invalidColor_xer_, &BOOLEAN_json_, &ChangeFontAttributesRes__errorCodes_invalidColor_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeFontAttributesRes__errorCodes_invalidSize_xer_ = { {"invalidSize>\n", "invalidSize>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeFontAttributesRes__errorCodes_invalidSize_oer_ext_arr_[0] = {};
+const int ChangeFontAttributesRes__errorCodes_invalidSize_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeFontAttributesRes__errorCodes_invalidSize_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeFontAttributesRes__errorCodes_invalidSize_oer_ext_arr_, 0, ChangeFontAttributesRes__errorCodes_invalidSize_oer_p_};
+const TTCN_Typedescriptor_t ChangeFontAttributesRes__errorCodes_invalidSize_descr_ = { "@IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes.invalidSize", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeFontAttributesRes__errorCodes_invalidSize_xer_, &BOOLEAN_json_, &ChangeFontAttributesRes__errorCodes_invalidSize_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeFontAttributesRes__errorCodes_invalidType_xer_ = { {"invalidType>\n", "invalidType>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeFontAttributesRes__errorCodes_invalidType_oer_ext_arr_[0] = {};
+const int ChangeFontAttributesRes__errorCodes_invalidType_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeFontAttributesRes__errorCodes_invalidType_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeFontAttributesRes__errorCodes_invalidType_oer_ext_arr_, 0, ChangeFontAttributesRes__errorCodes_invalidType_oer_p_};
+const TTCN_Typedescriptor_t ChangeFontAttributesRes__errorCodes_invalidType_descr_ = { "@IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes.invalidType", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeFontAttributesRes__errorCodes_invalidType_xer_, &BOOLEAN_json_, &ChangeFontAttributesRes__errorCodes_invalidType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeFontAttributesRes__errorCodes_invalidStyle_xer_ = { {"invalidStyle>\n", "invalidStyle>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeFontAttributesRes__errorCodes_invalidStyle_oer_ext_arr_[0] = {};
+const int ChangeFontAttributesRes__errorCodes_invalidStyle_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeFontAttributesRes__errorCodes_invalidStyle_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeFontAttributesRes__errorCodes_invalidStyle_oer_ext_arr_, 0, ChangeFontAttributesRes__errorCodes_invalidStyle_oer_p_};
+const TTCN_Typedescriptor_t ChangeFontAttributesRes__errorCodes_invalidStyle_descr_ = { "@IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes.invalidStyle", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeFontAttributesRes__errorCodes_invalidStyle_xer_, &BOOLEAN_json_, &ChangeFontAttributesRes__errorCodes_invalidStyle_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeFontAttributesRes__errorCodes_anyOtherError_xer_ = { {"anyOtherError>\n", "anyOtherError>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeFontAttributesRes__errorCodes_anyOtherError_oer_ext_arr_[0] = {};
+const int ChangeFontAttributesRes__errorCodes_anyOtherError_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeFontAttributesRes__errorCodes_anyOtherError_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeFontAttributesRes__errorCodes_anyOtherError_oer_ext_arr_, 0, ChangeFontAttributesRes__errorCodes_anyOtherError_oer_p_};
+const TTCN_Typedescriptor_t ChangeFontAttributesRes__errorCodes_anyOtherError_descr_ = { "@IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes.anyOtherError", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeFontAttributesRes__errorCodes_anyOtherError_xer_, &BOOLEAN_json_, &ChangeFontAttributesRes__errorCodes_anyOtherError_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeFontAttributesRes__errorCodes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeFontAttributesRes__errorCodes_reserved6_oer_ext_arr_[0] = {};
+const int ChangeFontAttributesRes__errorCodes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeFontAttributesRes__errorCodes_reserved6_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeFontAttributesRes__errorCodes_reserved6_oer_ext_arr_, 0, ChangeFontAttributesRes__errorCodes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t ChangeFontAttributesRes__errorCodes_reserved6_descr_ = { "@IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes.reserved6", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeFontAttributesRes__errorCodes_reserved6_xer_, &BOOLEAN_json_, &ChangeFontAttributesRes__errorCodes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeFontAttributesRes__errorCodes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeFontAttributesRes__errorCodes_reserved7_oer_ext_arr_[0] = {};
+const int ChangeFontAttributesRes__errorCodes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeFontAttributesRes__errorCodes_reserved7_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeFontAttributesRes__errorCodes_reserved7_oer_ext_arr_, 0, ChangeFontAttributesRes__errorCodes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ChangeFontAttributesRes__errorCodes_reserved7_descr_ = { "@IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes.reserved7", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeFontAttributesRes__errorCodes_reserved7_xer_, &BOOLEAN_json_, &ChangeFontAttributesRes__errorCodes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeFontAttributesRes__errorCodes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangeFontAttributesRes__errorCodes
+const TTCN_Typedescriptor_t ChangeFontAttributesRes__errorCodes_descr_ = { "@IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes", NULL, &ChangeFontAttributesRes__errorCodes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeFontAttributesRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeFontAttributesRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeFontAttributesRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.ChangeFontAttributesRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangeFontAttributesRes_vtfunction_xer_, &INTEGER_json_, &ChangeFontAttributesRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeFontAttributesRes_objectID_xer_ = { {"objectID>\n", "objectID>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeFontAttributesRes_objectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeFontAttributesRes_objectID_descr_ = { "@IsobusVTMessageTypes.ChangeFontAttributesRes.objectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ChangeFontAttributesRes_objectID_xer_, &INTEGER_json_, &ChangeFontAttributesRes_objectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeFontAttributesRes_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeFontAttributesRes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeFontAttributesRes_reserved5_oer_ext_arr_[0] = {};
+const int ChangeFontAttributesRes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeFontAttributesRes_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeFontAttributesRes_reserved5_oer_ext_arr_, 0, ChangeFontAttributesRes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t ChangeFontAttributesRes_reserved5_descr_ = { "@IsobusVTMessageTypes.ChangeFontAttributesRes.reserved5", &OCTETSTRING_ber_, &ChangeFontAttributesRes_reserved5_raw_, &OCTETSTRING_text_, &ChangeFontAttributesRes_reserved5_xer_, &OCTETSTRING_json_, &ChangeFontAttributesRes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeFontAttributesRes_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeFontAttributesRes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeFontAttributesRes_reserved6_oer_ext_arr_[0] = {};
+const int ChangeFontAttributesRes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeFontAttributesRes_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeFontAttributesRes_reserved6_oer_ext_arr_, 0, ChangeFontAttributesRes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t ChangeFontAttributesRes_reserved6_descr_ = { "@IsobusVTMessageTypes.ChangeFontAttributesRes.reserved6", &OCTETSTRING_ber_, &ChangeFontAttributesRes_reserved6_raw_, &OCTETSTRING_text_, &ChangeFontAttributesRes_reserved6_xer_, &OCTETSTRING_json_, &ChangeFontAttributesRes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeFontAttributesRes_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeFontAttributesRes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeFontAttributesRes_reserved7_oer_ext_arr_[0] = {};
+const int ChangeFontAttributesRes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeFontAttributesRes_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeFontAttributesRes_reserved7_oer_ext_arr_, 0, ChangeFontAttributesRes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ChangeFontAttributesRes_reserved7_descr_ = { "@IsobusVTMessageTypes.ChangeFontAttributesRes.reserved7", &OCTETSTRING_ber_, &ChangeFontAttributesRes_reserved7_raw_, &OCTETSTRING_text_, &ChangeFontAttributesRes_reserved7_xer_, &OCTETSTRING_json_, &ChangeFontAttributesRes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeFontAttributesRes_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeFontAttributesRes_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeFontAttributesRes_reserved8_oer_ext_arr_[0] = {};
+const int ChangeFontAttributesRes_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeFontAttributesRes_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeFontAttributesRes_reserved8_oer_ext_arr_, 0, ChangeFontAttributesRes_reserved8_oer_p_};
+const TTCN_Typedescriptor_t ChangeFontAttributesRes_reserved8_descr_ = { "@IsobusVTMessageTypes.ChangeFontAttributesRes.reserved8", &OCTETSTRING_ber_, &ChangeFontAttributesRes_reserved8_raw_, &OCTETSTRING_text_, &ChangeFontAttributesRes_reserved8_xer_, &OCTETSTRING_json_, &ChangeFontAttributesRes_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeFontAttributesRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangeFontAttributesRes
+const TTCN_Typedescriptor_t ChangeFontAttributesRes_descr_ = { "@IsobusVTMessageTypes.ChangeFontAttributesRes", NULL, &ChangeFontAttributesRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeFontAttributesReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeFontAttributesReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeFontAttributesReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.ChangeFontAttributesReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangeFontAttributesReq_vtfunction_xer_, &INTEGER_json_, &ChangeFontAttributesReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeFontAttributesReq_ObjectIDofObjectToChange_xer_ = { {"ObjectIDofObjectToChange>\n", "ObjectIDofObjectToChange>\n"}, {26, 26}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeFontAttributesReq_ObjectIDofObjectToChange_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeFontAttributesReq_ObjectIDofObjectToChange_descr_ = { "@IsobusVTMessageTypes.ChangeFontAttributesReq.ObjectIDofObjectToChange", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ChangeFontAttributesReq_ObjectIDofObjectToChange_xer_, &INTEGER_json_, &ChangeFontAttributesReq_ObjectIDofObjectToChange_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeFontAttributesReq_fontColour_xer_ = { {"fontColour>\n", "fontColour>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeFontAttributesReq_fontColour_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeFontAttributesReq_fontColour_descr_ = { "@IsobusVTMessageTypes.ChangeFontAttributesReq.fontColour", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangeFontAttributesReq_fontColour_xer_, &INTEGER_json_, &ChangeFontAttributesReq_fontColour_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeFontAttributesReq_fontSize_xer_ = { {"fontSize>\n", "fontSize>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeFontAttributesReq_fontSize_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeFontAttributesReq_fontSize_descr_ = { "@IsobusVTMessageTypes.ChangeFontAttributesReq.fontSize", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangeFontAttributesReq_fontSize_xer_, &INTEGER_json_, &ChangeFontAttributesReq_fontSize_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeFontAttributesReq_fontType_xer_ = { {"fontType>\n", "fontType>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeFontAttributesReq_fontType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeFontAttributesReq_fontType_descr_ = { "@IsobusVTMessageTypes.ChangeFontAttributesReq.fontType", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangeFontAttributesReq_fontType_xer_, &INTEGER_json_, &ChangeFontAttributesReq_fontType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeFontAttributesReq_fontStyle_xer_ = { {"fontStyle>\n", "fontStyle>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeFontAttributesReq_fontStyle_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeFontAttributesReq_fontStyle_descr_ = { "@IsobusVTMessageTypes.ChangeFontAttributesReq.fontStyle", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangeFontAttributesReq_fontStyle_xer_, &INTEGER_json_, &ChangeFontAttributesReq_fontStyle_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeFontAttributesReq_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeFontAttributesReq_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeFontAttributesReq_reserved8_oer_ext_arr_[0] = {};
+const int ChangeFontAttributesReq_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeFontAttributesReq_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeFontAttributesReq_reserved8_oer_ext_arr_, 0, ChangeFontAttributesReq_reserved8_oer_p_};
+const TTCN_Typedescriptor_t ChangeFontAttributesReq_reserved8_descr_ = { "@IsobusVTMessageTypes.ChangeFontAttributesReq.reserved8", &OCTETSTRING_ber_, &ChangeFontAttributesReq_reserved8_raw_, &OCTETSTRING_text_, &ChangeFontAttributesReq_reserved8_xer_, &OCTETSTRING_json_, &ChangeFontAttributesReq_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeFontAttributesReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangeFontAttributesReq
+const TTCN_Typedescriptor_t ChangeFontAttributesReq_descr_ = { "@IsobusVTMessageTypes.ChangeFontAttributesReq", NULL, &ChangeFontAttributesReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeLineAttributesRes__errorCodes_invalidObjectID_xer_ = { {"invalidObjectID>\n", "invalidObjectID>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeLineAttributesRes__errorCodes_invalidObjectID_oer_ext_arr_[0] = {};
+const int ChangeLineAttributesRes__errorCodes_invalidObjectID_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeLineAttributesRes__errorCodes_invalidObjectID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeLineAttributesRes__errorCodes_invalidObjectID_oer_ext_arr_, 0, ChangeLineAttributesRes__errorCodes_invalidObjectID_oer_p_};
+const TTCN_Typedescriptor_t ChangeLineAttributesRes__errorCodes_invalidObjectID_descr_ = { "@IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes.invalidObjectID", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeLineAttributesRes__errorCodes_invalidObjectID_xer_, &BOOLEAN_json_, &ChangeLineAttributesRes__errorCodes_invalidObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeLineAttributesRes__errorCodes_invalidColor_xer_ = { {"invalidColor>\n", "invalidColor>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeLineAttributesRes__errorCodes_invalidColor_oer_ext_arr_[0] = {};
+const int ChangeLineAttributesRes__errorCodes_invalidColor_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeLineAttributesRes__errorCodes_invalidColor_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeLineAttributesRes__errorCodes_invalidColor_oer_ext_arr_, 0, ChangeLineAttributesRes__errorCodes_invalidColor_oer_p_};
+const TTCN_Typedescriptor_t ChangeLineAttributesRes__errorCodes_invalidColor_descr_ = { "@IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes.invalidColor", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeLineAttributesRes__errorCodes_invalidColor_xer_, &BOOLEAN_json_, &ChangeLineAttributesRes__errorCodes_invalidColor_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeLineAttributesRes__errorCodes_invalidWidth_xer_ = { {"invalidWidth>\n", "invalidWidth>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeLineAttributesRes__errorCodes_invalidWidth_oer_ext_arr_[0] = {};
+const int ChangeLineAttributesRes__errorCodes_invalidWidth_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeLineAttributesRes__errorCodes_invalidWidth_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeLineAttributesRes__errorCodes_invalidWidth_oer_ext_arr_, 0, ChangeLineAttributesRes__errorCodes_invalidWidth_oer_p_};
+const TTCN_Typedescriptor_t ChangeLineAttributesRes__errorCodes_invalidWidth_descr_ = { "@IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes.invalidWidth", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeLineAttributesRes__errorCodes_invalidWidth_xer_, &BOOLEAN_json_, &ChangeLineAttributesRes__errorCodes_invalidWidth_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeLineAttributesRes__errorCodes_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeLineAttributesRes__errorCodes_reserved3_oer_ext_arr_[0] = {};
+const int ChangeLineAttributesRes__errorCodes_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeLineAttributesRes__errorCodes_reserved3_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeLineAttributesRes__errorCodes_reserved3_oer_ext_arr_, 0, ChangeLineAttributesRes__errorCodes_reserved3_oer_p_};
+const TTCN_Typedescriptor_t ChangeLineAttributesRes__errorCodes_reserved3_descr_ = { "@IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes.reserved3", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeLineAttributesRes__errorCodes_reserved3_xer_, &BOOLEAN_json_, &ChangeLineAttributesRes__errorCodes_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeLineAttributesRes__errorCodes_anyOtherError_xer_ = { {"anyOtherError>\n", "anyOtherError>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeLineAttributesRes__errorCodes_anyOtherError_oer_ext_arr_[0] = {};
+const int ChangeLineAttributesRes__errorCodes_anyOtherError_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeLineAttributesRes__errorCodes_anyOtherError_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeLineAttributesRes__errorCodes_anyOtherError_oer_ext_arr_, 0, ChangeLineAttributesRes__errorCodes_anyOtherError_oer_p_};
+const TTCN_Typedescriptor_t ChangeLineAttributesRes__errorCodes_anyOtherError_descr_ = { "@IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes.anyOtherError", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeLineAttributesRes__errorCodes_anyOtherError_xer_, &BOOLEAN_json_, &ChangeLineAttributesRes__errorCodes_anyOtherError_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeLineAttributesRes__errorCodes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeLineAttributesRes__errorCodes_reserved5_oer_ext_arr_[0] = {};
+const int ChangeLineAttributesRes__errorCodes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeLineAttributesRes__errorCodes_reserved5_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeLineAttributesRes__errorCodes_reserved5_oer_ext_arr_, 0, ChangeLineAttributesRes__errorCodes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t ChangeLineAttributesRes__errorCodes_reserved5_descr_ = { "@IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes.reserved5", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeLineAttributesRes__errorCodes_reserved5_xer_, &BOOLEAN_json_, &ChangeLineAttributesRes__errorCodes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeLineAttributesRes__errorCodes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeLineAttributesRes__errorCodes_reserved6_oer_ext_arr_[0] = {};
+const int ChangeLineAttributesRes__errorCodes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeLineAttributesRes__errorCodes_reserved6_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeLineAttributesRes__errorCodes_reserved6_oer_ext_arr_, 0, ChangeLineAttributesRes__errorCodes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t ChangeLineAttributesRes__errorCodes_reserved6_descr_ = { "@IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes.reserved6", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeLineAttributesRes__errorCodes_reserved6_xer_, &BOOLEAN_json_, &ChangeLineAttributesRes__errorCodes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeLineAttributesRes__errorCodes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeLineAttributesRes__errorCodes_reserved7_oer_ext_arr_[0] = {};
+const int ChangeLineAttributesRes__errorCodes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeLineAttributesRes__errorCodes_reserved7_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeLineAttributesRes__errorCodes_reserved7_oer_ext_arr_, 0, ChangeLineAttributesRes__errorCodes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ChangeLineAttributesRes__errorCodes_reserved7_descr_ = { "@IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes.reserved7", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeLineAttributesRes__errorCodes_reserved7_xer_, &BOOLEAN_json_, &ChangeLineAttributesRes__errorCodes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeLineAttributesRes__errorCodes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangeLineAttributesRes__errorCodes
+const TTCN_Typedescriptor_t ChangeLineAttributesRes__errorCodes_descr_ = { "@IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes", NULL, &ChangeLineAttributesRes__errorCodes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeLineAttributesRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeLineAttributesRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeLineAttributesRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.ChangeLineAttributesRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangeLineAttributesRes_vtfunction_xer_, &INTEGER_json_, &ChangeLineAttributesRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeLineAttributesRes_objectID_xer_ = { {"objectID>\n", "objectID>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeLineAttributesRes_objectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeLineAttributesRes_objectID_descr_ = { "@IsobusVTMessageTypes.ChangeLineAttributesRes.objectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ChangeLineAttributesRes_objectID_xer_, &INTEGER_json_, &ChangeLineAttributesRes_objectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeLineAttributesRes_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeLineAttributesRes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeLineAttributesRes_reserved5_oer_ext_arr_[0] = {};
+const int ChangeLineAttributesRes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeLineAttributesRes_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeLineAttributesRes_reserved5_oer_ext_arr_, 0, ChangeLineAttributesRes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t ChangeLineAttributesRes_reserved5_descr_ = { "@IsobusVTMessageTypes.ChangeLineAttributesRes.reserved5", &OCTETSTRING_ber_, &ChangeLineAttributesRes_reserved5_raw_, &OCTETSTRING_text_, &ChangeLineAttributesRes_reserved5_xer_, &OCTETSTRING_json_, &ChangeLineAttributesRes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeLineAttributesRes_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeLineAttributesRes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeLineAttributesRes_reserved6_oer_ext_arr_[0] = {};
+const int ChangeLineAttributesRes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeLineAttributesRes_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeLineAttributesRes_reserved6_oer_ext_arr_, 0, ChangeLineAttributesRes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t ChangeLineAttributesRes_reserved6_descr_ = { "@IsobusVTMessageTypes.ChangeLineAttributesRes.reserved6", &OCTETSTRING_ber_, &ChangeLineAttributesRes_reserved6_raw_, &OCTETSTRING_text_, &ChangeLineAttributesRes_reserved6_xer_, &OCTETSTRING_json_, &ChangeLineAttributesRes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeLineAttributesRes_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeLineAttributesRes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeLineAttributesRes_reserved7_oer_ext_arr_[0] = {};
+const int ChangeLineAttributesRes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeLineAttributesRes_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeLineAttributesRes_reserved7_oer_ext_arr_, 0, ChangeLineAttributesRes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ChangeLineAttributesRes_reserved7_descr_ = { "@IsobusVTMessageTypes.ChangeLineAttributesRes.reserved7", &OCTETSTRING_ber_, &ChangeLineAttributesRes_reserved7_raw_, &OCTETSTRING_text_, &ChangeLineAttributesRes_reserved7_xer_, &OCTETSTRING_json_, &ChangeLineAttributesRes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeLineAttributesRes_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeLineAttributesRes_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeLineAttributesRes_reserved8_oer_ext_arr_[0] = {};
+const int ChangeLineAttributesRes_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeLineAttributesRes_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeLineAttributesRes_reserved8_oer_ext_arr_, 0, ChangeLineAttributesRes_reserved8_oer_p_};
+const TTCN_Typedescriptor_t ChangeLineAttributesRes_reserved8_descr_ = { "@IsobusVTMessageTypes.ChangeLineAttributesRes.reserved8", &OCTETSTRING_ber_, &ChangeLineAttributesRes_reserved8_raw_, &OCTETSTRING_text_, &ChangeLineAttributesRes_reserved8_xer_, &OCTETSTRING_json_, &ChangeLineAttributesRes_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeLineAttributesRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangeLineAttributesRes
+const TTCN_Typedescriptor_t ChangeLineAttributesRes_descr_ = { "@IsobusVTMessageTypes.ChangeLineAttributesRes", NULL, &ChangeLineAttributesRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeLineAttributesReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeLineAttributesReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeLineAttributesReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.ChangeLineAttributesReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangeLineAttributesReq_vtfunction_xer_, &INTEGER_json_, &ChangeLineAttributesReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeLineAttributesReq_ObjectIDofObjectToChange_xer_ = { {"ObjectIDofObjectToChange>\n", "ObjectIDofObjectToChange>\n"}, {26, 26}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeLineAttributesReq_ObjectIDofObjectToChange_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeLineAttributesReq_ObjectIDofObjectToChange_descr_ = { "@IsobusVTMessageTypes.ChangeLineAttributesReq.ObjectIDofObjectToChange", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ChangeLineAttributesReq_ObjectIDofObjectToChange_xer_, &INTEGER_json_, &ChangeLineAttributesReq_ObjectIDofObjectToChange_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeLineAttributesReq_lineColour_xer_ = { {"lineColour>\n", "lineColour>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeLineAttributesReq_lineColour_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeLineAttributesReq_lineColour_descr_ = { "@IsobusVTMessageTypes.ChangeLineAttributesReq.lineColour", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangeLineAttributesReq_lineColour_xer_, &INTEGER_json_, &ChangeLineAttributesReq_lineColour_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeLineAttributesReq_lineWidth_xer_ = { {"lineWidth>\n", "lineWidth>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeLineAttributesReq_lineWidth_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeLineAttributesReq_lineWidth_descr_ = { "@IsobusVTMessageTypes.ChangeLineAttributesReq.lineWidth", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangeLineAttributesReq_lineWidth_xer_, &INTEGER_json_, &ChangeLineAttributesReq_lineWidth_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeLineAttributesReq_LineArt_xer_ = { {"LineArt>\n", "LineArt>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeLineAttributesReq_LineArt_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeLineAttributesReq_LineArt_descr_ = { "@IsobusVTMessageTypes.ChangeLineAttributesReq.LineArt", &BITSTRING_ber_, &General__Types::BIT16n_raw_, NULL, &ChangeLineAttributesReq_LineArt_xer_, &BITSTRING_json_, &ChangeLineAttributesReq_LineArt_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeLineAttributesReq_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeLineAttributesReq_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeLineAttributesReq_reserved8_oer_ext_arr_[0] = {};
+const int ChangeLineAttributesReq_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeLineAttributesReq_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeLineAttributesReq_reserved8_oer_ext_arr_, 0, ChangeLineAttributesReq_reserved8_oer_p_};
+const TTCN_Typedescriptor_t ChangeLineAttributesReq_reserved8_descr_ = { "@IsobusVTMessageTypes.ChangeLineAttributesReq.reserved8", &OCTETSTRING_ber_, &ChangeLineAttributesReq_reserved8_raw_, &OCTETSTRING_text_, &ChangeLineAttributesReq_reserved8_xer_, &OCTETSTRING_json_, &ChangeLineAttributesReq_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeLineAttributesReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangeLineAttributesReq
+const TTCN_Typedescriptor_t ChangeLineAttributesReq_descr_ = { "@IsobusVTMessageTypes.ChangeLineAttributesReq", NULL, &ChangeLineAttributesReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeFillAttributesRes__errorCodes_invalidObjectID_xer_ = { {"invalidObjectID>\n", "invalidObjectID>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeFillAttributesRes__errorCodes_invalidObjectID_oer_ext_arr_[0] = {};
+const int ChangeFillAttributesRes__errorCodes_invalidObjectID_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeFillAttributesRes__errorCodes_invalidObjectID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeFillAttributesRes__errorCodes_invalidObjectID_oer_ext_arr_, 0, ChangeFillAttributesRes__errorCodes_invalidObjectID_oer_p_};
+const TTCN_Typedescriptor_t ChangeFillAttributesRes__errorCodes_invalidObjectID_descr_ = { "@IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes.invalidObjectID", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeFillAttributesRes__errorCodes_invalidObjectID_xer_, &BOOLEAN_json_, &ChangeFillAttributesRes__errorCodes_invalidObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeFillAttributesRes__errorCodes_invalidType_xer_ = { {"invalidType>\n", "invalidType>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeFillAttributesRes__errorCodes_invalidType_oer_ext_arr_[0] = {};
+const int ChangeFillAttributesRes__errorCodes_invalidType_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeFillAttributesRes__errorCodes_invalidType_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeFillAttributesRes__errorCodes_invalidType_oer_ext_arr_, 0, ChangeFillAttributesRes__errorCodes_invalidType_oer_p_};
+const TTCN_Typedescriptor_t ChangeFillAttributesRes__errorCodes_invalidType_descr_ = { "@IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes.invalidType", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeFillAttributesRes__errorCodes_invalidType_xer_, &BOOLEAN_json_, &ChangeFillAttributesRes__errorCodes_invalidType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeFillAttributesRes__errorCodes_invalidColor_xer_ = { {"invalidColor>\n", "invalidColor>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeFillAttributesRes__errorCodes_invalidColor_oer_ext_arr_[0] = {};
+const int ChangeFillAttributesRes__errorCodes_invalidColor_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeFillAttributesRes__errorCodes_invalidColor_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeFillAttributesRes__errorCodes_invalidColor_oer_ext_arr_, 0, ChangeFillAttributesRes__errorCodes_invalidColor_oer_p_};
+const TTCN_Typedescriptor_t ChangeFillAttributesRes__errorCodes_invalidColor_descr_ = { "@IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes.invalidColor", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeFillAttributesRes__errorCodes_invalidColor_xer_, &BOOLEAN_json_, &ChangeFillAttributesRes__errorCodes_invalidColor_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeFillAttributesRes__errorCodes_invalidPatternObjectID_xer_ = { {"invalidPatternObjectID>\n", "invalidPatternObjectID>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeFillAttributesRes__errorCodes_invalidPatternObjectID_oer_ext_arr_[0] = {};
+const int ChangeFillAttributesRes__errorCodes_invalidPatternObjectID_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeFillAttributesRes__errorCodes_invalidPatternObjectID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeFillAttributesRes__errorCodes_invalidPatternObjectID_oer_ext_arr_, 0, ChangeFillAttributesRes__errorCodes_invalidPatternObjectID_oer_p_};
+const TTCN_Typedescriptor_t ChangeFillAttributesRes__errorCodes_invalidPatternObjectID_descr_ = { "@IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes.invalidPatternObjectID", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeFillAttributesRes__errorCodes_invalidPatternObjectID_xer_, &BOOLEAN_json_, &ChangeFillAttributesRes__errorCodes_invalidPatternObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeFillAttributesRes__errorCodes_anyOtherError_xer_ = { {"anyOtherError>\n", "anyOtherError>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeFillAttributesRes__errorCodes_anyOtherError_oer_ext_arr_[0] = {};
+const int ChangeFillAttributesRes__errorCodes_anyOtherError_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeFillAttributesRes__errorCodes_anyOtherError_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeFillAttributesRes__errorCodes_anyOtherError_oer_ext_arr_, 0, ChangeFillAttributesRes__errorCodes_anyOtherError_oer_p_};
+const TTCN_Typedescriptor_t ChangeFillAttributesRes__errorCodes_anyOtherError_descr_ = { "@IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes.anyOtherError", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeFillAttributesRes__errorCodes_anyOtherError_xer_, &BOOLEAN_json_, &ChangeFillAttributesRes__errorCodes_anyOtherError_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeFillAttributesRes__errorCodes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeFillAttributesRes__errorCodes_reserved5_oer_ext_arr_[0] = {};
+const int ChangeFillAttributesRes__errorCodes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeFillAttributesRes__errorCodes_reserved5_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeFillAttributesRes__errorCodes_reserved5_oer_ext_arr_, 0, ChangeFillAttributesRes__errorCodes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t ChangeFillAttributesRes__errorCodes_reserved5_descr_ = { "@IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes.reserved5", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeFillAttributesRes__errorCodes_reserved5_xer_, &BOOLEAN_json_, &ChangeFillAttributesRes__errorCodes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeFillAttributesRes__errorCodes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeFillAttributesRes__errorCodes_reserved6_oer_ext_arr_[0] = {};
+const int ChangeFillAttributesRes__errorCodes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeFillAttributesRes__errorCodes_reserved6_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeFillAttributesRes__errorCodes_reserved6_oer_ext_arr_, 0, ChangeFillAttributesRes__errorCodes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t ChangeFillAttributesRes__errorCodes_reserved6_descr_ = { "@IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes.reserved6", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeFillAttributesRes__errorCodes_reserved6_xer_, &BOOLEAN_json_, &ChangeFillAttributesRes__errorCodes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeFillAttributesRes__errorCodes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeFillAttributesRes__errorCodes_reserved7_oer_ext_arr_[0] = {};
+const int ChangeFillAttributesRes__errorCodes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeFillAttributesRes__errorCodes_reserved7_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeFillAttributesRes__errorCodes_reserved7_oer_ext_arr_, 0, ChangeFillAttributesRes__errorCodes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ChangeFillAttributesRes__errorCodes_reserved7_descr_ = { "@IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes.reserved7", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeFillAttributesRes__errorCodes_reserved7_xer_, &BOOLEAN_json_, &ChangeFillAttributesRes__errorCodes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeFillAttributesRes__errorCodes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangeFillAttributesRes__errorCodes
+const TTCN_Typedescriptor_t ChangeFillAttributesRes__errorCodes_descr_ = { "@IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes", NULL, &ChangeFillAttributesRes__errorCodes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeFillAttributesRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeFillAttributesRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeFillAttributesRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.ChangeFillAttributesRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangeFillAttributesRes_vtfunction_xer_, &INTEGER_json_, &ChangeFillAttributesRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeFillAttributesRes_objectID_xer_ = { {"objectID>\n", "objectID>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeFillAttributesRes_objectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeFillAttributesRes_objectID_descr_ = { "@IsobusVTMessageTypes.ChangeFillAttributesRes.objectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ChangeFillAttributesRes_objectID_xer_, &INTEGER_json_, &ChangeFillAttributesRes_objectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeFillAttributesRes_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeFillAttributesRes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeFillAttributesRes_reserved5_oer_ext_arr_[0] = {};
+const int ChangeFillAttributesRes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeFillAttributesRes_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeFillAttributesRes_reserved5_oer_ext_arr_, 0, ChangeFillAttributesRes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t ChangeFillAttributesRes_reserved5_descr_ = { "@IsobusVTMessageTypes.ChangeFillAttributesRes.reserved5", &OCTETSTRING_ber_, &ChangeFillAttributesRes_reserved5_raw_, &OCTETSTRING_text_, &ChangeFillAttributesRes_reserved5_xer_, &OCTETSTRING_json_, &ChangeFillAttributesRes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeFillAttributesRes_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeFillAttributesRes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeFillAttributesRes_reserved6_oer_ext_arr_[0] = {};
+const int ChangeFillAttributesRes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeFillAttributesRes_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeFillAttributesRes_reserved6_oer_ext_arr_, 0, ChangeFillAttributesRes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t ChangeFillAttributesRes_reserved6_descr_ = { "@IsobusVTMessageTypes.ChangeFillAttributesRes.reserved6", &OCTETSTRING_ber_, &ChangeFillAttributesRes_reserved6_raw_, &OCTETSTRING_text_, &ChangeFillAttributesRes_reserved6_xer_, &OCTETSTRING_json_, &ChangeFillAttributesRes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeFillAttributesRes_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeFillAttributesRes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeFillAttributesRes_reserved7_oer_ext_arr_[0] = {};
+const int ChangeFillAttributesRes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeFillAttributesRes_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeFillAttributesRes_reserved7_oer_ext_arr_, 0, ChangeFillAttributesRes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ChangeFillAttributesRes_reserved7_descr_ = { "@IsobusVTMessageTypes.ChangeFillAttributesRes.reserved7", &OCTETSTRING_ber_, &ChangeFillAttributesRes_reserved7_raw_, &OCTETSTRING_text_, &ChangeFillAttributesRes_reserved7_xer_, &OCTETSTRING_json_, &ChangeFillAttributesRes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeFillAttributesRes_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeFillAttributesRes_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeFillAttributesRes_reserved8_oer_ext_arr_[0] = {};
+const int ChangeFillAttributesRes_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeFillAttributesRes_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeFillAttributesRes_reserved8_oer_ext_arr_, 0, ChangeFillAttributesRes_reserved8_oer_p_};
+const TTCN_Typedescriptor_t ChangeFillAttributesRes_reserved8_descr_ = { "@IsobusVTMessageTypes.ChangeFillAttributesRes.reserved8", &OCTETSTRING_ber_, &ChangeFillAttributesRes_reserved8_raw_, &OCTETSTRING_text_, &ChangeFillAttributesRes_reserved8_xer_, &OCTETSTRING_json_, &ChangeFillAttributesRes_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeFillAttributesRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangeFillAttributesRes
+const TTCN_Typedescriptor_t ChangeFillAttributesRes_descr_ = { "@IsobusVTMessageTypes.ChangeFillAttributesRes", NULL, &ChangeFillAttributesRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeFillAttributesReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeFillAttributesReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeFillAttributesReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.ChangeFillAttributesReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangeFillAttributesReq_vtfunction_xer_, &INTEGER_json_, &ChangeFillAttributesReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeFillAttributesReq_ObjectIDofObjectToChange_xer_ = { {"ObjectIDofObjectToChange>\n", "ObjectIDofObjectToChange>\n"}, {26, 26}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeFillAttributesReq_ObjectIDofObjectToChange_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeFillAttributesReq_ObjectIDofObjectToChange_descr_ = { "@IsobusVTMessageTypes.ChangeFillAttributesReq.ObjectIDofObjectToChange", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ChangeFillAttributesReq_ObjectIDofObjectToChange_xer_, &INTEGER_json_, &ChangeFillAttributesReq_ObjectIDofObjectToChange_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeFillAttributesReq_lineColour_xer_ = { {"lineColour>\n", "lineColour>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeFillAttributesReq_lineColour_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeFillAttributesReq_lineColour_descr_ = { "@IsobusVTMessageTypes.ChangeFillAttributesReq.lineColour", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangeFillAttributesReq_lineColour_xer_, &INTEGER_json_, &ChangeFillAttributesReq_lineColour_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeFillAttributesReq_lineWidth_xer_ = { {"lineWidth>\n", "lineWidth>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeFillAttributesReq_lineWidth_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeFillAttributesReq_lineWidth_descr_ = { "@IsobusVTMessageTypes.ChangeFillAttributesReq.lineWidth", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangeFillAttributesReq_lineWidth_xer_, &INTEGER_json_, &ChangeFillAttributesReq_lineWidth_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeFillAttributesReq_lineArt_xer_ = { {"lineArt>\n", "lineArt>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeFillAttributesReq_lineArt_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeFillAttributesReq_lineArt_descr_ = { "@IsobusVTMessageTypes.ChangeFillAttributesReq.lineArt", &BITSTRING_ber_, &General__Types::BIT16n_raw_, NULL, &ChangeFillAttributesReq_lineArt_xer_, &BITSTRING_json_, &ChangeFillAttributesReq_lineArt_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeFillAttributesReq_fillPatternObjectID_xer_ = { {"fillPatternObjectID>\n", "fillPatternObjectID>\n"}, {21, 21}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeFillAttributesReq_fillPatternObjectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeFillAttributesReq_fillPatternObjectID_descr_ = { "@IsobusVTMessageTypes.ChangeFillAttributesReq.fillPatternObjectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ChangeFillAttributesReq_fillPatternObjectID_xer_, &INTEGER_json_, &ChangeFillAttributesReq_fillPatternObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeFillAttributesReq_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeFillAttributesReq_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeFillAttributesReq_reserved8_oer_ext_arr_[0] = {};
+const int ChangeFillAttributesReq_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeFillAttributesReq_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeFillAttributesReq_reserved8_oer_ext_arr_, 0, ChangeFillAttributesReq_reserved8_oer_p_};
+const TTCN_Typedescriptor_t ChangeFillAttributesReq_reserved8_descr_ = { "@IsobusVTMessageTypes.ChangeFillAttributesReq.reserved8", &OCTETSTRING_ber_, &ChangeFillAttributesReq_reserved8_raw_, &OCTETSTRING_text_, &ChangeFillAttributesReq_reserved8_xer_, &OCTETSTRING_json_, &ChangeFillAttributesReq_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeFillAttributesReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangeFillAttributesReq
+const TTCN_Typedescriptor_t ChangeFillAttributesReq_descr_ = { "@IsobusVTMessageTypes.ChangeFillAttributesReq", NULL, &ChangeFillAttributesReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeActiveMaskReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeActiveMaskReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeActiveMaskReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.ChangeActiveMaskReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangeActiveMaskReq_vtfunction_xer_, &INTEGER_json_, &ChangeActiveMaskReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeActiveMaskReq_workingSetObjectID_xer_ = { {"workingSetObjectID>\n", "workingSetObjectID>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeActiveMaskReq_workingSetObjectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeActiveMaskReq_workingSetObjectID_descr_ = { "@IsobusVTMessageTypes.ChangeActiveMaskReq.workingSetObjectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ChangeActiveMaskReq_workingSetObjectID_xer_, &INTEGER_json_, &ChangeActiveMaskReq_workingSetObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeActiveMaskReq_newActiveMaskObjectID_xer_ = { {"newActiveMaskObjectID>\n", "newActiveMaskObjectID>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeActiveMaskReq_newActiveMaskObjectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeActiveMaskReq_newActiveMaskObjectID_descr_ = { "@IsobusVTMessageTypes.ChangeActiveMaskReq.newActiveMaskObjectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ChangeActiveMaskReq_newActiveMaskObjectID_xer_, &INTEGER_json_, &ChangeActiveMaskReq_newActiveMaskObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeActiveMaskReq_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeActiveMaskReq_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeActiveMaskReq_reserved6_oer_ext_arr_[0] = {};
+const int ChangeActiveMaskReq_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeActiveMaskReq_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeActiveMaskReq_reserved6_oer_ext_arr_, 0, ChangeActiveMaskReq_reserved6_oer_p_};
+const TTCN_Typedescriptor_t ChangeActiveMaskReq_reserved6_descr_ = { "@IsobusVTMessageTypes.ChangeActiveMaskReq.reserved6", &OCTETSTRING_ber_, &ChangeActiveMaskReq_reserved6_raw_, &OCTETSTRING_text_, &ChangeActiveMaskReq_reserved6_xer_, &OCTETSTRING_json_, &ChangeActiveMaskReq_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeActiveMaskReq_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeActiveMaskReq_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeActiveMaskReq_reserved7_oer_ext_arr_[0] = {};
+const int ChangeActiveMaskReq_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeActiveMaskReq_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeActiveMaskReq_reserved7_oer_ext_arr_, 0, ChangeActiveMaskReq_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ChangeActiveMaskReq_reserved7_descr_ = { "@IsobusVTMessageTypes.ChangeActiveMaskReq.reserved7", &OCTETSTRING_ber_, &ChangeActiveMaskReq_reserved7_raw_, &OCTETSTRING_text_, &ChangeActiveMaskReq_reserved7_xer_, &OCTETSTRING_json_, &ChangeActiveMaskReq_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeActiveMaskReq_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeActiveMaskReq_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeActiveMaskReq_reserved8_oer_ext_arr_[0] = {};
+const int ChangeActiveMaskReq_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeActiveMaskReq_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeActiveMaskReq_reserved8_oer_ext_arr_, 0, ChangeActiveMaskReq_reserved8_oer_p_};
+const TTCN_Typedescriptor_t ChangeActiveMaskReq_reserved8_descr_ = { "@IsobusVTMessageTypes.ChangeActiveMaskReq.reserved8", &OCTETSTRING_ber_, &ChangeActiveMaskReq_reserved8_raw_, &OCTETSTRING_text_, &ChangeActiveMaskReq_reserved8_xer_, &OCTETSTRING_json_, &ChangeActiveMaskReq_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeActiveMaskReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangeActiveMaskReq
+const TTCN_Typedescriptor_t ChangeActiveMaskReq_descr_ = { "@IsobusVTMessageTypes.ChangeActiveMaskReq", NULL, &ChangeActiveMaskReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeActiveMaskRes__errorCodes_invalidWorkingSetObjectID_xer_ = { {"invalidWorkingSetObjectID>\n", "invalidWorkingSetObjectID>\n"}, {27, 27}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeActiveMaskRes__errorCodes_invalidWorkingSetObjectID_oer_ext_arr_[0] = {};
+const int ChangeActiveMaskRes__errorCodes_invalidWorkingSetObjectID_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeActiveMaskRes__errorCodes_invalidWorkingSetObjectID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeActiveMaskRes__errorCodes_invalidWorkingSetObjectID_oer_ext_arr_, 0, ChangeActiveMaskRes__errorCodes_invalidWorkingSetObjectID_oer_p_};
+const TTCN_Typedescriptor_t ChangeActiveMaskRes__errorCodes_invalidWorkingSetObjectID_descr_ = { "@IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes.invalidWorkingSetObjectID", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeActiveMaskRes__errorCodes_invalidWorkingSetObjectID_xer_, &BOOLEAN_json_, &ChangeActiveMaskRes__errorCodes_invalidWorkingSetObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeActiveMaskRes__errorCodes_invalidMaskObjectID_xer_ = { {"invalidMaskObjectID>\n", "invalidMaskObjectID>\n"}, {21, 21}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeActiveMaskRes__errorCodes_invalidMaskObjectID_oer_ext_arr_[0] = {};
+const int ChangeActiveMaskRes__errorCodes_invalidMaskObjectID_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeActiveMaskRes__errorCodes_invalidMaskObjectID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeActiveMaskRes__errorCodes_invalidMaskObjectID_oer_ext_arr_, 0, ChangeActiveMaskRes__errorCodes_invalidMaskObjectID_oer_p_};
+const TTCN_Typedescriptor_t ChangeActiveMaskRes__errorCodes_invalidMaskObjectID_descr_ = { "@IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes.invalidMaskObjectID", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeActiveMaskRes__errorCodes_invalidMaskObjectID_xer_, &BOOLEAN_json_, &ChangeActiveMaskRes__errorCodes_invalidMaskObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeActiveMaskRes__errorCodes_undefined1_xer_ = { {"undefined1>\n", "undefined1>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeActiveMaskRes__errorCodes_undefined1_oer_ext_arr_[0] = {};
+const int ChangeActiveMaskRes__errorCodes_undefined1_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeActiveMaskRes__errorCodes_undefined1_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeActiveMaskRes__errorCodes_undefined1_oer_ext_arr_, 0, ChangeActiveMaskRes__errorCodes_undefined1_oer_p_};
+const TTCN_Typedescriptor_t ChangeActiveMaskRes__errorCodes_undefined1_descr_ = { "@IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes.undefined1", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeActiveMaskRes__errorCodes_undefined1_xer_, &BOOLEAN_json_, &ChangeActiveMaskRes__errorCodes_undefined1_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeActiveMaskRes__errorCodes_undefined2_xer_ = { {"undefined2>\n", "undefined2>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeActiveMaskRes__errorCodes_undefined2_oer_ext_arr_[0] = {};
+const int ChangeActiveMaskRes__errorCodes_undefined2_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeActiveMaskRes__errorCodes_undefined2_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeActiveMaskRes__errorCodes_undefined2_oer_ext_arr_, 0, ChangeActiveMaskRes__errorCodes_undefined2_oer_p_};
+const TTCN_Typedescriptor_t ChangeActiveMaskRes__errorCodes_undefined2_descr_ = { "@IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes.undefined2", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeActiveMaskRes__errorCodes_undefined2_xer_, &BOOLEAN_json_, &ChangeActiveMaskRes__errorCodes_undefined2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeActiveMaskRes__errorCodes_anyOtherError_xer_ = { {"anyOtherError>\n", "anyOtherError>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeActiveMaskRes__errorCodes_anyOtherError_oer_ext_arr_[0] = {};
+const int ChangeActiveMaskRes__errorCodes_anyOtherError_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeActiveMaskRes__errorCodes_anyOtherError_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeActiveMaskRes__errorCodes_anyOtherError_oer_ext_arr_, 0, ChangeActiveMaskRes__errorCodes_anyOtherError_oer_p_};
+const TTCN_Typedescriptor_t ChangeActiveMaskRes__errorCodes_anyOtherError_descr_ = { "@IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes.anyOtherError", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeActiveMaskRes__errorCodes_anyOtherError_xer_, &BOOLEAN_json_, &ChangeActiveMaskRes__errorCodes_anyOtherError_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeActiveMaskRes__errorCodes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeActiveMaskRes__errorCodes_reserved5_oer_ext_arr_[0] = {};
+const int ChangeActiveMaskRes__errorCodes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeActiveMaskRes__errorCodes_reserved5_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeActiveMaskRes__errorCodes_reserved5_oer_ext_arr_, 0, ChangeActiveMaskRes__errorCodes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t ChangeActiveMaskRes__errorCodes_reserved5_descr_ = { "@IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes.reserved5", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeActiveMaskRes__errorCodes_reserved5_xer_, &BOOLEAN_json_, &ChangeActiveMaskRes__errorCodes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeActiveMaskRes__errorCodes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeActiveMaskRes__errorCodes_reserved6_oer_ext_arr_[0] = {};
+const int ChangeActiveMaskRes__errorCodes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeActiveMaskRes__errorCodes_reserved6_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeActiveMaskRes__errorCodes_reserved6_oer_ext_arr_, 0, ChangeActiveMaskRes__errorCodes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t ChangeActiveMaskRes__errorCodes_reserved6_descr_ = { "@IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes.reserved6", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeActiveMaskRes__errorCodes_reserved6_xer_, &BOOLEAN_json_, &ChangeActiveMaskRes__errorCodes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeActiveMaskRes__errorCodes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeActiveMaskRes__errorCodes_reserved7_oer_ext_arr_[0] = {};
+const int ChangeActiveMaskRes__errorCodes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeActiveMaskRes__errorCodes_reserved7_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeActiveMaskRes__errorCodes_reserved7_oer_ext_arr_, 0, ChangeActiveMaskRes__errorCodes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ChangeActiveMaskRes__errorCodes_reserved7_descr_ = { "@IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes.reserved7", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeActiveMaskRes__errorCodes_reserved7_xer_, &BOOLEAN_json_, &ChangeActiveMaskRes__errorCodes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeActiveMaskRes__errorCodes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangeActiveMaskRes__errorCodes
+const TTCN_Typedescriptor_t ChangeActiveMaskRes__errorCodes_descr_ = { "@IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes", NULL, &ChangeActiveMaskRes__errorCodes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeActiveMaskRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeActiveMaskRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeActiveMaskRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.ChangeActiveMaskRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangeActiveMaskRes_vtfunction_xer_, &INTEGER_json_, &ChangeActiveMaskRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeActiveMaskRes_newActiveMaskObjectID_xer_ = { {"newActiveMaskObjectID>\n", "newActiveMaskObjectID>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeActiveMaskRes_newActiveMaskObjectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeActiveMaskRes_newActiveMaskObjectID_descr_ = { "@IsobusVTMessageTypes.ChangeActiveMaskRes.newActiveMaskObjectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ChangeActiveMaskRes_newActiveMaskObjectID_xer_, &INTEGER_json_, &ChangeActiveMaskRes_newActiveMaskObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeActiveMaskRes_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeActiveMaskRes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeActiveMaskRes_reserved5_oer_ext_arr_[0] = {};
+const int ChangeActiveMaskRes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeActiveMaskRes_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeActiveMaskRes_reserved5_oer_ext_arr_, 0, ChangeActiveMaskRes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t ChangeActiveMaskRes_reserved5_descr_ = { "@IsobusVTMessageTypes.ChangeActiveMaskRes.reserved5", &OCTETSTRING_ber_, &ChangeActiveMaskRes_reserved5_raw_, &OCTETSTRING_text_, &ChangeActiveMaskRes_reserved5_xer_, &OCTETSTRING_json_, &ChangeActiveMaskRes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeActiveMaskRes_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeActiveMaskRes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeActiveMaskRes_reserved6_oer_ext_arr_[0] = {};
+const int ChangeActiveMaskRes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeActiveMaskRes_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeActiveMaskRes_reserved6_oer_ext_arr_, 0, ChangeActiveMaskRes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t ChangeActiveMaskRes_reserved6_descr_ = { "@IsobusVTMessageTypes.ChangeActiveMaskRes.reserved6", &OCTETSTRING_ber_, &ChangeActiveMaskRes_reserved6_raw_, &OCTETSTRING_text_, &ChangeActiveMaskRes_reserved6_xer_, &OCTETSTRING_json_, &ChangeActiveMaskRes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeActiveMaskRes_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeActiveMaskRes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeActiveMaskRes_reserved7_oer_ext_arr_[0] = {};
+const int ChangeActiveMaskRes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeActiveMaskRes_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeActiveMaskRes_reserved7_oer_ext_arr_, 0, ChangeActiveMaskRes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ChangeActiveMaskRes_reserved7_descr_ = { "@IsobusVTMessageTypes.ChangeActiveMaskRes.reserved7", &OCTETSTRING_ber_, &ChangeActiveMaskRes_reserved7_raw_, &OCTETSTRING_text_, &ChangeActiveMaskRes_reserved7_xer_, &OCTETSTRING_json_, &ChangeActiveMaskRes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeActiveMaskRes_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeActiveMaskRes_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeActiveMaskRes_reserved8_oer_ext_arr_[0] = {};
+const int ChangeActiveMaskRes_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeActiveMaskRes_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeActiveMaskRes_reserved8_oer_ext_arr_, 0, ChangeActiveMaskRes_reserved8_oer_p_};
+const TTCN_Typedescriptor_t ChangeActiveMaskRes_reserved8_descr_ = { "@IsobusVTMessageTypes.ChangeActiveMaskRes.reserved8", &OCTETSTRING_ber_, &ChangeActiveMaskRes_reserved8_raw_, &OCTETSTRING_text_, &ChangeActiveMaskRes_reserved8_xer_, &OCTETSTRING_json_, &ChangeActiveMaskRes_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeActiveMaskRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangeActiveMaskRes
+const TTCN_Typedescriptor_t ChangeActiveMaskRes_descr_ = { "@IsobusVTMessageTypes.ChangeActiveMaskRes", NULL, &ChangeActiveMaskRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t e__ChangeSoftKeyMaskReq__MaskType_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,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for e__ChangeSoftKeyMaskReq__MaskType
+const TTCN_Typedescriptor_t e__ChangeSoftKeyMaskReq__MaskType_descr_ = { "@IsobusVTMessageTypes.e_ChangeSoftKeyMaskReq_MaskType", NULL, &e__ChangeSoftKeyMaskReq__MaskType_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeSoftKeyMaskReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeSoftKeyMaskReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeSoftKeyMaskReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.ChangeSoftKeyMaskReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangeSoftKeyMaskReq_vtfunction_xer_, &INTEGER_json_, &ChangeSoftKeyMaskReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeSoftKeyMaskReq_DataOrAlarmMaskObjectID_xer_ = { {"DataOrAlarmMaskObjectID>\n", "DataOrAlarmMaskObjectID>\n"}, {25, 25}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeSoftKeyMaskReq_DataOrAlarmMaskObjectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeSoftKeyMaskReq_DataOrAlarmMaskObjectID_descr_ = { "@IsobusVTMessageTypes.ChangeSoftKeyMaskReq.DataOrAlarmMaskObjectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ChangeSoftKeyMaskReq_DataOrAlarmMaskObjectID_xer_, &INTEGER_json_, &ChangeSoftKeyMaskReq_DataOrAlarmMaskObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeSoftKeyMaskReq_NewSoftKeyMaskObjectID_xer_ = { {"NewSoftKeyMaskObjectID>\n", "NewSoftKeyMaskObjectID>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeSoftKeyMaskReq_NewSoftKeyMaskObjectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeSoftKeyMaskReq_NewSoftKeyMaskObjectID_descr_ = { "@IsobusVTMessageTypes.ChangeSoftKeyMaskReq.NewSoftKeyMaskObjectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ChangeSoftKeyMaskReq_NewSoftKeyMaskObjectID_xer_, &INTEGER_json_, &ChangeSoftKeyMaskReq_NewSoftKeyMaskObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeSoftKeyMaskReq_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeSoftKeyMaskReq_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeSoftKeyMaskReq_reserved7_oer_ext_arr_[0] = {};
+const int ChangeSoftKeyMaskReq_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeSoftKeyMaskReq_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeSoftKeyMaskReq_reserved7_oer_ext_arr_, 0, ChangeSoftKeyMaskReq_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ChangeSoftKeyMaskReq_reserved7_descr_ = { "@IsobusVTMessageTypes.ChangeSoftKeyMaskReq.reserved7", &OCTETSTRING_ber_, &ChangeSoftKeyMaskReq_reserved7_raw_, &OCTETSTRING_text_, &ChangeSoftKeyMaskReq_reserved7_xer_, &OCTETSTRING_json_, &ChangeSoftKeyMaskReq_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeSoftKeyMaskReq_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeSoftKeyMaskReq_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeSoftKeyMaskReq_reserved8_oer_ext_arr_[0] = {};
+const int ChangeSoftKeyMaskReq_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeSoftKeyMaskReq_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeSoftKeyMaskReq_reserved8_oer_ext_arr_, 0, ChangeSoftKeyMaskReq_reserved8_oer_p_};
+const TTCN_Typedescriptor_t ChangeSoftKeyMaskReq_reserved8_descr_ = { "@IsobusVTMessageTypes.ChangeSoftKeyMaskReq.reserved8", &OCTETSTRING_ber_, &ChangeSoftKeyMaskReq_reserved8_raw_, &OCTETSTRING_text_, &ChangeSoftKeyMaskReq_reserved8_xer_, &OCTETSTRING_json_, &ChangeSoftKeyMaskReq_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeSoftKeyMaskReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangeSoftKeyMaskReq
+const TTCN_Typedescriptor_t ChangeSoftKeyMaskReq_descr_ = { "@IsobusVTMessageTypes.ChangeSoftKeyMaskReq", NULL, &ChangeSoftKeyMaskReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeSoftKeyMaskRes__errorCodes_invalidDataOrAlarmMaskObjectID_xer_ = { {"invalidDataOrAlarmMaskObjectID>\n", "invalidDataOrAlarmMaskObjectID>\n"}, {32, 32}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeSoftKeyMaskRes__errorCodes_invalidDataOrAlarmMaskObjectID_oer_ext_arr_[0] = {};
+const int ChangeSoftKeyMaskRes__errorCodes_invalidDataOrAlarmMaskObjectID_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeSoftKeyMaskRes__errorCodes_invalidDataOrAlarmMaskObjectID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeSoftKeyMaskRes__errorCodes_invalidDataOrAlarmMaskObjectID_oer_ext_arr_, 0, ChangeSoftKeyMaskRes__errorCodes_invalidDataOrAlarmMaskObjectID_oer_p_};
+const TTCN_Typedescriptor_t ChangeSoftKeyMaskRes__errorCodes_invalidDataOrAlarmMaskObjectID_descr_ = { "@IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes.invalidDataOrAlarmMaskObjectID", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeSoftKeyMaskRes__errorCodes_invalidDataOrAlarmMaskObjectID_xer_, &BOOLEAN_json_, &ChangeSoftKeyMaskRes__errorCodes_invalidDataOrAlarmMaskObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeSoftKeyMaskRes__errorCodes_invalidSoftKeyMaskObjectID_xer_ = { {"invalidSoftKeyMaskObjectID>\n", "invalidSoftKeyMaskObjectID>\n"}, {28, 28}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeSoftKeyMaskRes__errorCodes_invalidSoftKeyMaskObjectID_oer_ext_arr_[0] = {};
+const int ChangeSoftKeyMaskRes__errorCodes_invalidSoftKeyMaskObjectID_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeSoftKeyMaskRes__errorCodes_invalidSoftKeyMaskObjectID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeSoftKeyMaskRes__errorCodes_invalidSoftKeyMaskObjectID_oer_ext_arr_, 0, ChangeSoftKeyMaskRes__errorCodes_invalidSoftKeyMaskObjectID_oer_p_};
+const TTCN_Typedescriptor_t ChangeSoftKeyMaskRes__errorCodes_invalidSoftKeyMaskObjectID_descr_ = { "@IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes.invalidSoftKeyMaskObjectID", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeSoftKeyMaskRes__errorCodes_invalidSoftKeyMaskObjectID_xer_, &BOOLEAN_json_, &ChangeSoftKeyMaskRes__errorCodes_invalidSoftKeyMaskObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeSoftKeyMaskRes__errorCodes_missingObjects_xer_ = { {"missingObjects>\n", "missingObjects>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeSoftKeyMaskRes__errorCodes_missingObjects_oer_ext_arr_[0] = {};
+const int ChangeSoftKeyMaskRes__errorCodes_missingObjects_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeSoftKeyMaskRes__errorCodes_missingObjects_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeSoftKeyMaskRes__errorCodes_missingObjects_oer_ext_arr_, 0, ChangeSoftKeyMaskRes__errorCodes_missingObjects_oer_p_};
+const TTCN_Typedescriptor_t ChangeSoftKeyMaskRes__errorCodes_missingObjects_descr_ = { "@IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes.missingObjects", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeSoftKeyMaskRes__errorCodes_missingObjects_xer_, &BOOLEAN_json_, &ChangeSoftKeyMaskRes__errorCodes_missingObjects_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeSoftKeyMaskRes__errorCodes_MaskOrChildObjectHasErrors_xer_ = { {"MaskOrChildObjectHasErrors>\n", "MaskOrChildObjectHasErrors>\n"}, {28, 28}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeSoftKeyMaskRes__errorCodes_MaskOrChildObjectHasErrors_oer_ext_arr_[0] = {};
+const int ChangeSoftKeyMaskRes__errorCodes_MaskOrChildObjectHasErrors_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeSoftKeyMaskRes__errorCodes_MaskOrChildObjectHasErrors_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeSoftKeyMaskRes__errorCodes_MaskOrChildObjectHasErrors_oer_ext_arr_, 0, ChangeSoftKeyMaskRes__errorCodes_MaskOrChildObjectHasErrors_oer_p_};
+const TTCN_Typedescriptor_t ChangeSoftKeyMaskRes__errorCodes_MaskOrChildObjectHasErrors_descr_ = { "@IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes.MaskOrChildObjectHasErrors", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeSoftKeyMaskRes__errorCodes_MaskOrChildObjectHasErrors_xer_, &BOOLEAN_json_, &ChangeSoftKeyMaskRes__errorCodes_MaskOrChildObjectHasErrors_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeSoftKeyMaskRes__errorCodes_anyOtherError_xer_ = { {"anyOtherError>\n", "anyOtherError>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeSoftKeyMaskRes__errorCodes_anyOtherError_oer_ext_arr_[0] = {};
+const int ChangeSoftKeyMaskRes__errorCodes_anyOtherError_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeSoftKeyMaskRes__errorCodes_anyOtherError_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeSoftKeyMaskRes__errorCodes_anyOtherError_oer_ext_arr_, 0, ChangeSoftKeyMaskRes__errorCodes_anyOtherError_oer_p_};
+const TTCN_Typedescriptor_t ChangeSoftKeyMaskRes__errorCodes_anyOtherError_descr_ = { "@IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes.anyOtherError", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeSoftKeyMaskRes__errorCodes_anyOtherError_xer_, &BOOLEAN_json_, &ChangeSoftKeyMaskRes__errorCodes_anyOtherError_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeSoftKeyMaskRes__errorCodes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeSoftKeyMaskRes__errorCodes_reserved5_oer_ext_arr_[0] = {};
+const int ChangeSoftKeyMaskRes__errorCodes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeSoftKeyMaskRes__errorCodes_reserved5_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeSoftKeyMaskRes__errorCodes_reserved5_oer_ext_arr_, 0, ChangeSoftKeyMaskRes__errorCodes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t ChangeSoftKeyMaskRes__errorCodes_reserved5_descr_ = { "@IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes.reserved5", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeSoftKeyMaskRes__errorCodes_reserved5_xer_, &BOOLEAN_json_, &ChangeSoftKeyMaskRes__errorCodes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeSoftKeyMaskRes__errorCodes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeSoftKeyMaskRes__errorCodes_reserved6_oer_ext_arr_[0] = {};
+const int ChangeSoftKeyMaskRes__errorCodes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeSoftKeyMaskRes__errorCodes_reserved6_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeSoftKeyMaskRes__errorCodes_reserved6_oer_ext_arr_, 0, ChangeSoftKeyMaskRes__errorCodes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t ChangeSoftKeyMaskRes__errorCodes_reserved6_descr_ = { "@IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes.reserved6", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeSoftKeyMaskRes__errorCodes_reserved6_xer_, &BOOLEAN_json_, &ChangeSoftKeyMaskRes__errorCodes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeSoftKeyMaskRes__errorCodes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeSoftKeyMaskRes__errorCodes_reserved7_oer_ext_arr_[0] = {};
+const int ChangeSoftKeyMaskRes__errorCodes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeSoftKeyMaskRes__errorCodes_reserved7_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeSoftKeyMaskRes__errorCodes_reserved7_oer_ext_arr_, 0, ChangeSoftKeyMaskRes__errorCodes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ChangeSoftKeyMaskRes__errorCodes_reserved7_descr_ = { "@IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes.reserved7", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeSoftKeyMaskRes__errorCodes_reserved7_xer_, &BOOLEAN_json_, &ChangeSoftKeyMaskRes__errorCodes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeSoftKeyMaskRes__errorCodes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangeSoftKeyMaskRes__errorCodes
+const TTCN_Typedescriptor_t ChangeSoftKeyMaskRes__errorCodes_descr_ = { "@IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes", NULL, &ChangeSoftKeyMaskRes__errorCodes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeSoftKeyMaskRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeSoftKeyMaskRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeSoftKeyMaskRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.ChangeSoftKeyMaskRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangeSoftKeyMaskRes_vtfunction_xer_, &INTEGER_json_, &ChangeSoftKeyMaskRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeSoftKeyMaskRes_DataOrAlarmMaskObjectID_xer_ = { {"DataOrAlarmMaskObjectID>\n", "DataOrAlarmMaskObjectID>\n"}, {25, 25}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeSoftKeyMaskRes_DataOrAlarmMaskObjectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeSoftKeyMaskRes_DataOrAlarmMaskObjectID_descr_ = { "@IsobusVTMessageTypes.ChangeSoftKeyMaskRes.DataOrAlarmMaskObjectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ChangeSoftKeyMaskRes_DataOrAlarmMaskObjectID_xer_, &INTEGER_json_, &ChangeSoftKeyMaskRes_DataOrAlarmMaskObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeSoftKeyMaskRes_NewSoftKeyMaskObjectID_xer_ = { {"NewSoftKeyMaskObjectID>\n", "NewSoftKeyMaskObjectID>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeSoftKeyMaskRes_NewSoftKeyMaskObjectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeSoftKeyMaskRes_NewSoftKeyMaskObjectID_descr_ = { "@IsobusVTMessageTypes.ChangeSoftKeyMaskRes.NewSoftKeyMaskObjectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ChangeSoftKeyMaskRes_NewSoftKeyMaskObjectID_xer_, &INTEGER_json_, &ChangeSoftKeyMaskRes_NewSoftKeyMaskObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeSoftKeyMaskRes_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeSoftKeyMaskRes_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeSoftKeyMaskRes_reserved8_oer_ext_arr_[0] = {};
+const int ChangeSoftKeyMaskRes_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeSoftKeyMaskRes_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeSoftKeyMaskRes_reserved8_oer_ext_arr_, 0, ChangeSoftKeyMaskRes_reserved8_oer_p_};
+const TTCN_Typedescriptor_t ChangeSoftKeyMaskRes_reserved8_descr_ = { "@IsobusVTMessageTypes.ChangeSoftKeyMaskRes.reserved8", &OCTETSTRING_ber_, &ChangeSoftKeyMaskRes_reserved8_raw_, &OCTETSTRING_text_, &ChangeSoftKeyMaskRes_reserved8_xer_, &OCTETSTRING_json_, &ChangeSoftKeyMaskRes_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeSoftKeyMaskRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangeSoftKeyMaskRes
+const TTCN_Typedescriptor_t ChangeSoftKeyMaskRes_descr_ = { "@IsobusVTMessageTypes.ChangeSoftKeyMaskRes", NULL, &ChangeSoftKeyMaskRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeAttributeReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeAttributeReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeAttributeReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.ChangeAttributeReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangeAttributeReq_vtfunction_xer_, &INTEGER_json_, &ChangeAttributeReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeAttributeReq_objectID_xer_ = { {"objectID>\n", "objectID>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeAttributeReq_objectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeAttributeReq_objectID_descr_ = { "@IsobusVTMessageTypes.ChangeAttributeReq.objectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ChangeAttributeReq_objectID_xer_, &INTEGER_json_, &ChangeAttributeReq_objectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeAttributeReq_attributeID_xer_ = { {"attributeID>\n", "attributeID>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeAttributeReq_attributeID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeAttributeReq_attributeID_descr_ = { "@IsobusVTMessageTypes.ChangeAttributeReq.attributeID", &INTEGER_ber_, &AttributeID_raw_, &INTEGER_text_, &ChangeAttributeReq_attributeID_xer_, &INTEGER_json_, &ChangeAttributeReq_attributeID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeAttributeReq_newValueOfAttribute_xer_ = { {"newValueOfAttribute>\n", "newValueOfAttribute>\n"}, {21, 21}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeAttributeReq_newValueOfAttribute_oer_ext_arr_[0] = {};
+const int ChangeAttributeReq_newValueOfAttribute_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeAttributeReq_newValueOfAttribute_oer_ = { -1, TRUE, 4, FALSE, 0, 0, ChangeAttributeReq_newValueOfAttribute_oer_ext_arr_, 0, ChangeAttributeReq_newValueOfAttribute_oer_p_};
+const TTCN_Typedescriptor_t ChangeAttributeReq_newValueOfAttribute_descr_ = { "@IsobusVTMessageTypes.ChangeAttributeReq.newValueOfAttribute", &OCTETSTRING_ber_, &General__Types::OCT4_raw_, &OCTETSTRING_text_, &ChangeAttributeReq_newValueOfAttribute_xer_, &OCTETSTRING_json_, &ChangeAttributeReq_newValueOfAttribute_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeAttributeReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangeAttributeReq
+const TTCN_Typedescriptor_t ChangeAttributeReq_descr_ = { "@IsobusVTMessageTypes.ChangeAttributeReq", NULL, &ChangeAttributeReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeAttributeRes__errorCodes_invalidWorkingSetObjectID_xer_ = { {"invalidWorkingSetObjectID>\n", "invalidWorkingSetObjectID>\n"}, {27, 27}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeAttributeRes__errorCodes_invalidWorkingSetObjectID_oer_ext_arr_[0] = {};
+const int ChangeAttributeRes__errorCodes_invalidWorkingSetObjectID_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeAttributeRes__errorCodes_invalidWorkingSetObjectID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeAttributeRes__errorCodes_invalidWorkingSetObjectID_oer_ext_arr_, 0, ChangeAttributeRes__errorCodes_invalidWorkingSetObjectID_oer_p_};
+const TTCN_Typedescriptor_t ChangeAttributeRes__errorCodes_invalidWorkingSetObjectID_descr_ = { "@IsobusVTMessageTypes.ChangeAttributeRes_errorCodes.invalidWorkingSetObjectID", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeAttributeRes__errorCodes_invalidWorkingSetObjectID_xer_, &BOOLEAN_json_, &ChangeAttributeRes__errorCodes_invalidWorkingSetObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeAttributeRes__errorCodes_invalidAttributeID_xer_ = { {"invalidAttributeID>\n", "invalidAttributeID>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeAttributeRes__errorCodes_invalidAttributeID_oer_ext_arr_[0] = {};
+const int ChangeAttributeRes__errorCodes_invalidAttributeID_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeAttributeRes__errorCodes_invalidAttributeID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeAttributeRes__errorCodes_invalidAttributeID_oer_ext_arr_, 0, ChangeAttributeRes__errorCodes_invalidAttributeID_oer_p_};
+const TTCN_Typedescriptor_t ChangeAttributeRes__errorCodes_invalidAttributeID_descr_ = { "@IsobusVTMessageTypes.ChangeAttributeRes_errorCodes.invalidAttributeID", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeAttributeRes__errorCodes_invalidAttributeID_xer_, &BOOLEAN_json_, &ChangeAttributeRes__errorCodes_invalidAttributeID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeAttributeRes__errorCodes_invalidValue_xer_ = { {"invalidValue>\n", "invalidValue>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeAttributeRes__errorCodes_invalidValue_oer_ext_arr_[0] = {};
+const int ChangeAttributeRes__errorCodes_invalidValue_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeAttributeRes__errorCodes_invalidValue_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeAttributeRes__errorCodes_invalidValue_oer_ext_arr_, 0, ChangeAttributeRes__errorCodes_invalidValue_oer_p_};
+const TTCN_Typedescriptor_t ChangeAttributeRes__errorCodes_invalidValue_descr_ = { "@IsobusVTMessageTypes.ChangeAttributeRes_errorCodes.invalidValue", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeAttributeRes__errorCodes_invalidValue_xer_, &BOOLEAN_json_, &ChangeAttributeRes__errorCodes_invalidValue_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeAttributeRes__errorCodes_valueInUse_xer_ = { {"valueInUse>\n", "valueInUse>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeAttributeRes__errorCodes_valueInUse_oer_ext_arr_[0] = {};
+const int ChangeAttributeRes__errorCodes_valueInUse_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeAttributeRes__errorCodes_valueInUse_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeAttributeRes__errorCodes_valueInUse_oer_ext_arr_, 0, ChangeAttributeRes__errorCodes_valueInUse_oer_p_};
+const TTCN_Typedescriptor_t ChangeAttributeRes__errorCodes_valueInUse_descr_ = { "@IsobusVTMessageTypes.ChangeAttributeRes_errorCodes.valueInUse", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeAttributeRes__errorCodes_valueInUse_xer_, &BOOLEAN_json_, &ChangeAttributeRes__errorCodes_valueInUse_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeAttributeRes__errorCodes_anyOtherError_xer_ = { {"anyOtherError>\n", "anyOtherError>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeAttributeRes__errorCodes_anyOtherError_oer_ext_arr_[0] = {};
+const int ChangeAttributeRes__errorCodes_anyOtherError_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeAttributeRes__errorCodes_anyOtherError_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeAttributeRes__errorCodes_anyOtherError_oer_ext_arr_, 0, ChangeAttributeRes__errorCodes_anyOtherError_oer_p_};
+const TTCN_Typedescriptor_t ChangeAttributeRes__errorCodes_anyOtherError_descr_ = { "@IsobusVTMessageTypes.ChangeAttributeRes_errorCodes.anyOtherError", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeAttributeRes__errorCodes_anyOtherError_xer_, &BOOLEAN_json_, &ChangeAttributeRes__errorCodes_anyOtherError_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeAttributeRes__errorCodes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeAttributeRes__errorCodes_reserved5_oer_ext_arr_[0] = {};
+const int ChangeAttributeRes__errorCodes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeAttributeRes__errorCodes_reserved5_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeAttributeRes__errorCodes_reserved5_oer_ext_arr_, 0, ChangeAttributeRes__errorCodes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t ChangeAttributeRes__errorCodes_reserved5_descr_ = { "@IsobusVTMessageTypes.ChangeAttributeRes_errorCodes.reserved5", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeAttributeRes__errorCodes_reserved5_xer_, &BOOLEAN_json_, &ChangeAttributeRes__errorCodes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeAttributeRes__errorCodes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeAttributeRes__errorCodes_reserved6_oer_ext_arr_[0] = {};
+const int ChangeAttributeRes__errorCodes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeAttributeRes__errorCodes_reserved6_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeAttributeRes__errorCodes_reserved6_oer_ext_arr_, 0, ChangeAttributeRes__errorCodes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t ChangeAttributeRes__errorCodes_reserved6_descr_ = { "@IsobusVTMessageTypes.ChangeAttributeRes_errorCodes.reserved6", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeAttributeRes__errorCodes_reserved6_xer_, &BOOLEAN_json_, &ChangeAttributeRes__errorCodes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeAttributeRes__errorCodes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeAttributeRes__errorCodes_reserved7_oer_ext_arr_[0] = {};
+const int ChangeAttributeRes__errorCodes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeAttributeRes__errorCodes_reserved7_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeAttributeRes__errorCodes_reserved7_oer_ext_arr_, 0, ChangeAttributeRes__errorCodes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ChangeAttributeRes__errorCodes_reserved7_descr_ = { "@IsobusVTMessageTypes.ChangeAttributeRes_errorCodes.reserved7", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeAttributeRes__errorCodes_reserved7_xer_, &BOOLEAN_json_, &ChangeAttributeRes__errorCodes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeAttributeRes__errorCodes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangeAttributeRes__errorCodes
+const TTCN_Typedescriptor_t ChangeAttributeRes__errorCodes_descr_ = { "@IsobusVTMessageTypes.ChangeAttributeRes_errorCodes", NULL, &ChangeAttributeRes__errorCodes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeAttributeRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeAttributeRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeAttributeRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.ChangeAttributeRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangeAttributeRes_vtfunction_xer_, &INTEGER_json_, &ChangeAttributeRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeAttributeRes_objectID_xer_ = { {"objectID>\n", "objectID>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeAttributeRes_objectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeAttributeRes_objectID_descr_ = { "@IsobusVTMessageTypes.ChangeAttributeRes.objectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ChangeAttributeRes_objectID_xer_, &INTEGER_json_, &ChangeAttributeRes_objectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeAttributeRes_attributeID_xer_ = { {"attributeID>\n", "attributeID>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeAttributeRes_attributeID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeAttributeRes_attributeID_descr_ = { "@IsobusVTMessageTypes.ChangeAttributeRes.attributeID", &INTEGER_ber_, &AttributeID_raw_, &INTEGER_text_, &ChangeAttributeRes_attributeID_xer_, &INTEGER_json_, &ChangeAttributeRes_attributeID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeAttributeRes_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeAttributeRes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeAttributeRes_reserved6_oer_ext_arr_[0] = {};
+const int ChangeAttributeRes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeAttributeRes_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeAttributeRes_reserved6_oer_ext_arr_, 0, ChangeAttributeRes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t ChangeAttributeRes_reserved6_descr_ = { "@IsobusVTMessageTypes.ChangeAttributeRes.reserved6", &OCTETSTRING_ber_, &ChangeAttributeRes_reserved6_raw_, &OCTETSTRING_text_, &ChangeAttributeRes_reserved6_xer_, &OCTETSTRING_json_, &ChangeAttributeRes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeAttributeRes_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeAttributeRes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeAttributeRes_reserved7_oer_ext_arr_[0] = {};
+const int ChangeAttributeRes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeAttributeRes_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeAttributeRes_reserved7_oer_ext_arr_, 0, ChangeAttributeRes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ChangeAttributeRes_reserved7_descr_ = { "@IsobusVTMessageTypes.ChangeAttributeRes.reserved7", &OCTETSTRING_ber_, &ChangeAttributeRes_reserved7_raw_, &OCTETSTRING_text_, &ChangeAttributeRes_reserved7_xer_, &OCTETSTRING_json_, &ChangeAttributeRes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeAttributeRes_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeAttributeRes_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeAttributeRes_reserved8_oer_ext_arr_[0] = {};
+const int ChangeAttributeRes_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeAttributeRes_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeAttributeRes_reserved8_oer_ext_arr_, 0, ChangeAttributeRes_reserved8_oer_p_};
+const TTCN_Typedescriptor_t ChangeAttributeRes_reserved8_descr_ = { "@IsobusVTMessageTypes.ChangeAttributeRes.reserved8", &OCTETSTRING_ber_, &ChangeAttributeRes_reserved8_raw_, &OCTETSTRING_text_, &ChangeAttributeRes_reserved8_xer_, &OCTETSTRING_json_, &ChangeAttributeRes_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeAttributeRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangeAttributeRes
+const TTCN_Typedescriptor_t ChangeAttributeRes_descr_ = { "@IsobusVTMessageTypes.ChangeAttributeRes", NULL, &ChangeAttributeRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangePriorityRes__errorCodes_invalidObjectID_xer_ = { {"invalidObjectID>\n", "invalidObjectID>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangePriorityRes__errorCodes_invalidObjectID_oer_ext_arr_[0] = {};
+const int ChangePriorityRes__errorCodes_invalidObjectID_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangePriorityRes__errorCodes_invalidObjectID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangePriorityRes__errorCodes_invalidObjectID_oer_ext_arr_, 0, ChangePriorityRes__errorCodes_invalidObjectID_oer_p_};
+const TTCN_Typedescriptor_t ChangePriorityRes__errorCodes_invalidObjectID_descr_ = { "@IsobusVTMessageTypes.ChangePriorityRes_errorCodes.invalidObjectID", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangePriorityRes__errorCodes_invalidObjectID_xer_, &BOOLEAN_json_, &ChangePriorityRes__errorCodes_invalidObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangePriorityRes__errorCodes_invalidPriority_xer_ = { {"invalidPriority>\n", "invalidPriority>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangePriorityRes__errorCodes_invalidPriority_oer_ext_arr_[0] = {};
+const int ChangePriorityRes__errorCodes_invalidPriority_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangePriorityRes__errorCodes_invalidPriority_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangePriorityRes__errorCodes_invalidPriority_oer_ext_arr_, 0, ChangePriorityRes__errorCodes_invalidPriority_oer_p_};
+const TTCN_Typedescriptor_t ChangePriorityRes__errorCodes_invalidPriority_descr_ = { "@IsobusVTMessageTypes.ChangePriorityRes_errorCodes.invalidPriority", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangePriorityRes__errorCodes_invalidPriority_xer_, &BOOLEAN_json_, &ChangePriorityRes__errorCodes_invalidPriority_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangePriorityRes__errorCodes_reserved2_xer_ = { {"reserved2>\n", "reserved2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangePriorityRes__errorCodes_reserved2_oer_ext_arr_[0] = {};
+const int ChangePriorityRes__errorCodes_reserved2_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangePriorityRes__errorCodes_reserved2_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangePriorityRes__errorCodes_reserved2_oer_ext_arr_, 0, ChangePriorityRes__errorCodes_reserved2_oer_p_};
+const TTCN_Typedescriptor_t ChangePriorityRes__errorCodes_reserved2_descr_ = { "@IsobusVTMessageTypes.ChangePriorityRes_errorCodes.reserved2", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangePriorityRes__errorCodes_reserved2_xer_, &BOOLEAN_json_, &ChangePriorityRes__errorCodes_reserved2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangePriorityRes__errorCodes_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangePriorityRes__errorCodes_reserved3_oer_ext_arr_[0] = {};
+const int ChangePriorityRes__errorCodes_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangePriorityRes__errorCodes_reserved3_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangePriorityRes__errorCodes_reserved3_oer_ext_arr_, 0, ChangePriorityRes__errorCodes_reserved3_oer_p_};
+const TTCN_Typedescriptor_t ChangePriorityRes__errorCodes_reserved3_descr_ = { "@IsobusVTMessageTypes.ChangePriorityRes_errorCodes.reserved3", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangePriorityRes__errorCodes_reserved3_xer_, &BOOLEAN_json_, &ChangePriorityRes__errorCodes_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangePriorityRes__errorCodes_anyOtherError_xer_ = { {"anyOtherError>\n", "anyOtherError>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangePriorityRes__errorCodes_anyOtherError_oer_ext_arr_[0] = {};
+const int ChangePriorityRes__errorCodes_anyOtherError_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangePriorityRes__errorCodes_anyOtherError_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangePriorityRes__errorCodes_anyOtherError_oer_ext_arr_, 0, ChangePriorityRes__errorCodes_anyOtherError_oer_p_};
+const TTCN_Typedescriptor_t ChangePriorityRes__errorCodes_anyOtherError_descr_ = { "@IsobusVTMessageTypes.ChangePriorityRes_errorCodes.anyOtherError", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangePriorityRes__errorCodes_anyOtherError_xer_, &BOOLEAN_json_, &ChangePriorityRes__errorCodes_anyOtherError_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangePriorityRes__errorCodes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangePriorityRes__errorCodes_reserved5_oer_ext_arr_[0] = {};
+const int ChangePriorityRes__errorCodes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangePriorityRes__errorCodes_reserved5_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangePriorityRes__errorCodes_reserved5_oer_ext_arr_, 0, ChangePriorityRes__errorCodes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t ChangePriorityRes__errorCodes_reserved5_descr_ = { "@IsobusVTMessageTypes.ChangePriorityRes_errorCodes.reserved5", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangePriorityRes__errorCodes_reserved5_xer_, &BOOLEAN_json_, &ChangePriorityRes__errorCodes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangePriorityRes__errorCodes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangePriorityRes__errorCodes_reserved6_oer_ext_arr_[0] = {};
+const int ChangePriorityRes__errorCodes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangePriorityRes__errorCodes_reserved6_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangePriorityRes__errorCodes_reserved6_oer_ext_arr_, 0, ChangePriorityRes__errorCodes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t ChangePriorityRes__errorCodes_reserved6_descr_ = { "@IsobusVTMessageTypes.ChangePriorityRes_errorCodes.reserved6", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangePriorityRes__errorCodes_reserved6_xer_, &BOOLEAN_json_, &ChangePriorityRes__errorCodes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangePriorityRes__errorCodes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangePriorityRes__errorCodes_reserved7_oer_ext_arr_[0] = {};
+const int ChangePriorityRes__errorCodes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangePriorityRes__errorCodes_reserved7_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangePriorityRes__errorCodes_reserved7_oer_ext_arr_, 0, ChangePriorityRes__errorCodes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ChangePriorityRes__errorCodes_reserved7_descr_ = { "@IsobusVTMessageTypes.ChangePriorityRes_errorCodes.reserved7", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangePriorityRes__errorCodes_reserved7_xer_, &BOOLEAN_json_, &ChangePriorityRes__errorCodes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangePriorityRes__errorCodes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangePriorityRes__errorCodes
+const TTCN_Typedescriptor_t ChangePriorityRes__errorCodes_descr_ = { "@IsobusVTMessageTypes.ChangePriorityRes_errorCodes", NULL, &ChangePriorityRes__errorCodes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangePriorityRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangePriorityRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangePriorityRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.ChangePriorityRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangePriorityRes_vtfunction_xer_, &INTEGER_json_, &ChangePriorityRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangePriorityRes_objectIDofArlarmMask_xer_ = { {"objectIDofArlarmMask>\n", "objectIDofArlarmMask>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangePriorityRes_objectIDofArlarmMask_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangePriorityRes_objectIDofArlarmMask_descr_ = { "@IsobusVTMessageTypes.ChangePriorityRes.objectIDofArlarmMask", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ChangePriorityRes_objectIDofArlarmMask_xer_, &INTEGER_json_, &ChangePriorityRes_objectIDofArlarmMask_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangePriorityRes_newPriority_xer_ = { {"newPriority>\n", "newPriority>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangePriorityRes_newPriority_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangePriorityRes_newPriority_descr_ = { "@IsobusVTMessageTypes.ChangePriorityRes.newPriority", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangePriorityRes_newPriority_xer_, &INTEGER_json_, &ChangePriorityRes_newPriority_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangePriorityRes_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangePriorityRes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangePriorityRes_reserved7_oer_ext_arr_[0] = {};
+const int ChangePriorityRes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangePriorityRes_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangePriorityRes_reserved7_oer_ext_arr_, 0, ChangePriorityRes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ChangePriorityRes_reserved7_descr_ = { "@IsobusVTMessageTypes.ChangePriorityRes.reserved7", &OCTETSTRING_ber_, &ChangePriorityRes_reserved7_raw_, &OCTETSTRING_text_, &ChangePriorityRes_reserved7_xer_, &OCTETSTRING_json_, &ChangePriorityRes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangePriorityRes_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangePriorityRes_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangePriorityRes_reserved8_oer_ext_arr_[0] = {};
+const int ChangePriorityRes_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangePriorityRes_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangePriorityRes_reserved8_oer_ext_arr_, 0, ChangePriorityRes_reserved8_oer_p_};
+const TTCN_Typedescriptor_t ChangePriorityRes_reserved8_descr_ = { "@IsobusVTMessageTypes.ChangePriorityRes.reserved8", &OCTETSTRING_ber_, &ChangePriorityRes_reserved8_raw_, &OCTETSTRING_text_, &ChangePriorityRes_reserved8_xer_, &OCTETSTRING_json_, &ChangePriorityRes_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangePriorityRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangePriorityRes
+const TTCN_Typedescriptor_t ChangePriorityRes_descr_ = { "@IsobusVTMessageTypes.ChangePriorityRes", NULL, &ChangePriorityRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangePriorityReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangePriorityReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangePriorityReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.ChangePriorityReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangePriorityReq_vtfunction_xer_, &INTEGER_json_, &ChangePriorityReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangePriorityReq_objectIDofArlarmMask_xer_ = { {"objectIDofArlarmMask>\n", "objectIDofArlarmMask>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangePriorityReq_objectIDofArlarmMask_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangePriorityReq_objectIDofArlarmMask_descr_ = { "@IsobusVTMessageTypes.ChangePriorityReq.objectIDofArlarmMask", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ChangePriorityReq_objectIDofArlarmMask_xer_, &INTEGER_json_, &ChangePriorityReq_objectIDofArlarmMask_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangePriorityReq_newPriority_xer_ = { {"newPriority>\n", "newPriority>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangePriorityReq_newPriority_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangePriorityReq_newPriority_descr_ = { "@IsobusVTMessageTypes.ChangePriorityReq.newPriority", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangePriorityReq_newPriority_xer_, &INTEGER_json_, &ChangePriorityReq_newPriority_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangePriorityReq_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangePriorityReq_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangePriorityReq_reserved6_oer_ext_arr_[0] = {};
+const int ChangePriorityReq_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangePriorityReq_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangePriorityReq_reserved6_oer_ext_arr_, 0, ChangePriorityReq_reserved6_oer_p_};
+const TTCN_Typedescriptor_t ChangePriorityReq_reserved6_descr_ = { "@IsobusVTMessageTypes.ChangePriorityReq.reserved6", &OCTETSTRING_ber_, &ChangePriorityReq_reserved6_raw_, &OCTETSTRING_text_, &ChangePriorityReq_reserved6_xer_, &OCTETSTRING_json_, &ChangePriorityReq_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangePriorityReq_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangePriorityReq_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangePriorityReq_reserved7_oer_ext_arr_[0] = {};
+const int ChangePriorityReq_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangePriorityReq_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangePriorityReq_reserved7_oer_ext_arr_, 0, ChangePriorityReq_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ChangePriorityReq_reserved7_descr_ = { "@IsobusVTMessageTypes.ChangePriorityReq.reserved7", &OCTETSTRING_ber_, &ChangePriorityReq_reserved7_raw_, &OCTETSTRING_text_, &ChangePriorityReq_reserved7_xer_, &OCTETSTRING_json_, &ChangePriorityReq_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangePriorityReq_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangePriorityReq_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangePriorityReq_reserved8_oer_ext_arr_[0] = {};
+const int ChangePriorityReq_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangePriorityReq_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangePriorityReq_reserved8_oer_ext_arr_, 0, ChangePriorityReq_reserved8_oer_p_};
+const TTCN_Typedescriptor_t ChangePriorityReq_reserved8_descr_ = { "@IsobusVTMessageTypes.ChangePriorityReq.reserved8", &OCTETSTRING_ber_, &ChangePriorityReq_reserved8_raw_, &OCTETSTRING_text_, &ChangePriorityReq_reserved8_xer_, &OCTETSTRING_json_, &ChangePriorityReq_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangePriorityReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangePriorityReq
+const TTCN_Typedescriptor_t ChangePriorityReq_descr_ = { "@IsobusVTMessageTypes.ChangePriorityReq", NULL, &ChangePriorityReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeListItemRes__errorCodes_invalidObjectID_xer_ = { {"invalidObjectID>\n", "invalidObjectID>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeListItemRes__errorCodes_invalidObjectID_oer_ext_arr_[0] = {};
+const int ChangeListItemRes__errorCodes_invalidObjectID_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeListItemRes__errorCodes_invalidObjectID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeListItemRes__errorCodes_invalidObjectID_oer_ext_arr_, 0, ChangeListItemRes__errorCodes_invalidObjectID_oer_p_};
+const TTCN_Typedescriptor_t ChangeListItemRes__errorCodes_invalidObjectID_descr_ = { "@IsobusVTMessageTypes.ChangeListItemRes_errorCodes.invalidObjectID", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeListItemRes__errorCodes_invalidObjectID_xer_, &BOOLEAN_json_, &ChangeListItemRes__errorCodes_invalidObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeListItemRes__errorCodes_invalidListIndex_xer_ = { {"invalidListIndex>\n", "invalidListIndex>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeListItemRes__errorCodes_invalidListIndex_oer_ext_arr_[0] = {};
+const int ChangeListItemRes__errorCodes_invalidListIndex_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeListItemRes__errorCodes_invalidListIndex_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeListItemRes__errorCodes_invalidListIndex_oer_ext_arr_, 0, ChangeListItemRes__errorCodes_invalidListIndex_oer_p_};
+const TTCN_Typedescriptor_t ChangeListItemRes__errorCodes_invalidListIndex_descr_ = { "@IsobusVTMessageTypes.ChangeListItemRes_errorCodes.invalidListIndex", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeListItemRes__errorCodes_invalidListIndex_xer_, &BOOLEAN_json_, &ChangeListItemRes__errorCodes_invalidListIndex_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeListItemRes__errorCodes_invalidNewListItemObjectID_xer_ = { {"invalidNewListItemObjectID>\n", "invalidNewListItemObjectID>\n"}, {28, 28}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeListItemRes__errorCodes_invalidNewListItemObjectID_oer_ext_arr_[0] = {};
+const int ChangeListItemRes__errorCodes_invalidNewListItemObjectID_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeListItemRes__errorCodes_invalidNewListItemObjectID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeListItemRes__errorCodes_invalidNewListItemObjectID_oer_ext_arr_, 0, ChangeListItemRes__errorCodes_invalidNewListItemObjectID_oer_p_};
+const TTCN_Typedescriptor_t ChangeListItemRes__errorCodes_invalidNewListItemObjectID_descr_ = { "@IsobusVTMessageTypes.ChangeListItemRes_errorCodes.invalidNewListItemObjectID", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeListItemRes__errorCodes_invalidNewListItemObjectID_xer_, &BOOLEAN_json_, &ChangeListItemRes__errorCodes_invalidNewListItemObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeListItemRes__errorCodes_valueInUse_xer_ = { {"valueInUse>\n", "valueInUse>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeListItemRes__errorCodes_valueInUse_oer_ext_arr_[0] = {};
+const int ChangeListItemRes__errorCodes_valueInUse_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeListItemRes__errorCodes_valueInUse_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeListItemRes__errorCodes_valueInUse_oer_ext_arr_, 0, ChangeListItemRes__errorCodes_valueInUse_oer_p_};
+const TTCN_Typedescriptor_t ChangeListItemRes__errorCodes_valueInUse_descr_ = { "@IsobusVTMessageTypes.ChangeListItemRes_errorCodes.valueInUse", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeListItemRes__errorCodes_valueInUse_xer_, &BOOLEAN_json_, &ChangeListItemRes__errorCodes_valueInUse_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeListItemRes__errorCodes_anyOtherError_xer_ = { {"anyOtherError>\n", "anyOtherError>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeListItemRes__errorCodes_anyOtherError_oer_ext_arr_[0] = {};
+const int ChangeListItemRes__errorCodes_anyOtherError_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeListItemRes__errorCodes_anyOtherError_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeListItemRes__errorCodes_anyOtherError_oer_ext_arr_, 0, ChangeListItemRes__errorCodes_anyOtherError_oer_p_};
+const TTCN_Typedescriptor_t ChangeListItemRes__errorCodes_anyOtherError_descr_ = { "@IsobusVTMessageTypes.ChangeListItemRes_errorCodes.anyOtherError", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeListItemRes__errorCodes_anyOtherError_xer_, &BOOLEAN_json_, &ChangeListItemRes__errorCodes_anyOtherError_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeListItemRes__errorCodes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeListItemRes__errorCodes_reserved5_oer_ext_arr_[0] = {};
+const int ChangeListItemRes__errorCodes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeListItemRes__errorCodes_reserved5_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeListItemRes__errorCodes_reserved5_oer_ext_arr_, 0, ChangeListItemRes__errorCodes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t ChangeListItemRes__errorCodes_reserved5_descr_ = { "@IsobusVTMessageTypes.ChangeListItemRes_errorCodes.reserved5", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeListItemRes__errorCodes_reserved5_xer_, &BOOLEAN_json_, &ChangeListItemRes__errorCodes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeListItemRes__errorCodes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeListItemRes__errorCodes_reserved6_oer_ext_arr_[0] = {};
+const int ChangeListItemRes__errorCodes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeListItemRes__errorCodes_reserved6_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeListItemRes__errorCodes_reserved6_oer_ext_arr_, 0, ChangeListItemRes__errorCodes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t ChangeListItemRes__errorCodes_reserved6_descr_ = { "@IsobusVTMessageTypes.ChangeListItemRes_errorCodes.reserved6", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeListItemRes__errorCodes_reserved6_xer_, &BOOLEAN_json_, &ChangeListItemRes__errorCodes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeListItemRes__errorCodes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeListItemRes__errorCodes_reserved7_oer_ext_arr_[0] = {};
+const int ChangeListItemRes__errorCodes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeListItemRes__errorCodes_reserved7_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeListItemRes__errorCodes_reserved7_oer_ext_arr_, 0, ChangeListItemRes__errorCodes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ChangeListItemRes__errorCodes_reserved7_descr_ = { "@IsobusVTMessageTypes.ChangeListItemRes_errorCodes.reserved7", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeListItemRes__errorCodes_reserved7_xer_, &BOOLEAN_json_, &ChangeListItemRes__errorCodes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeListItemRes__errorCodes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangeListItemRes__errorCodes
+const TTCN_Typedescriptor_t ChangeListItemRes__errorCodes_descr_ = { "@IsobusVTMessageTypes.ChangeListItemRes_errorCodes", NULL, &ChangeListItemRes__errorCodes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeListItemRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeListItemRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeListItemRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.ChangeListItemRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangeListItemRes_vtfunction_xer_, &INTEGER_json_, &ChangeListItemRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeListItemRes_objectID_xer_ = { {"objectID>\n", "objectID>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeListItemRes_objectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeListItemRes_objectID_descr_ = { "@IsobusVTMessageTypes.ChangeListItemRes.objectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ChangeListItemRes_objectID_xer_, &INTEGER_json_, &ChangeListItemRes_objectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeListItemRes_listIndex_xer_ = { {"listIndex>\n", "listIndex>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeListItemRes_listIndex_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeListItemRes_listIndex_descr_ = { "@IsobusVTMessageTypes.ChangeListItemRes.listIndex", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangeListItemRes_listIndex_xer_, &INTEGER_json_, &ChangeListItemRes_listIndex_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeListItemRes_newObjectID_xer_ = { {"newObjectID>\n", "newObjectID>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeListItemRes_newObjectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeListItemRes_newObjectID_descr_ = { "@IsobusVTMessageTypes.ChangeListItemRes.newObjectID", &INTEGER_ber_, &AnyObjectID_raw_, &INTEGER_text_, &ChangeListItemRes_newObjectID_xer_, &INTEGER_json_, &ChangeListItemRes_newObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeListItemRes_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeListItemRes_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeListItemRes_reserved8_oer_ext_arr_[0] = {};
+const int ChangeListItemRes_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeListItemRes_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeListItemRes_reserved8_oer_ext_arr_, 0, ChangeListItemRes_reserved8_oer_p_};
+const TTCN_Typedescriptor_t ChangeListItemRes_reserved8_descr_ = { "@IsobusVTMessageTypes.ChangeListItemRes.reserved8", &OCTETSTRING_ber_, &ChangeListItemRes_reserved8_raw_, &OCTETSTRING_text_, &ChangeListItemRes_reserved8_xer_, &OCTETSTRING_json_, &ChangeListItemRes_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeListItemRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangeListItemRes
+const TTCN_Typedescriptor_t ChangeListItemRes_descr_ = { "@IsobusVTMessageTypes.ChangeListItemRes", NULL, &ChangeListItemRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeListItemReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeListItemReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeListItemReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.ChangeListItemReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangeListItemReq_vtfunction_xer_, &INTEGER_json_, &ChangeListItemReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeListItemReq_objectID_xer_ = { {"objectID>\n", "objectID>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeListItemReq_objectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeListItemReq_objectID_descr_ = { "@IsobusVTMessageTypes.ChangeListItemReq.objectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ChangeListItemReq_objectID_xer_, &INTEGER_json_, &ChangeListItemReq_objectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeListItemReq_listIndex_xer_ = { {"listIndex>\n", "listIndex>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeListItemReq_listIndex_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeListItemReq_listIndex_descr_ = { "@IsobusVTMessageTypes.ChangeListItemReq.listIndex", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangeListItemReq_listIndex_xer_, &INTEGER_json_, &ChangeListItemReq_listIndex_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeListItemReq_newObjectID_xer_ = { {"newObjectID>\n", "newObjectID>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeListItemReq_newObjectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeListItemReq_newObjectID_descr_ = { "@IsobusVTMessageTypes.ChangeListItemReq.newObjectID", &INTEGER_ber_, &AnyObjectID_raw_, &INTEGER_text_, &ChangeListItemReq_newObjectID_xer_, &INTEGER_json_, &ChangeListItemReq_newObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeListItemReq_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeListItemReq_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeListItemReq_reserved7_oer_ext_arr_[0] = {};
+const int ChangeListItemReq_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeListItemReq_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeListItemReq_reserved7_oer_ext_arr_, 0, ChangeListItemReq_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ChangeListItemReq_reserved7_descr_ = { "@IsobusVTMessageTypes.ChangeListItemReq.reserved7", &OCTETSTRING_ber_, &ChangeListItemReq_reserved7_raw_, &OCTETSTRING_text_, &ChangeListItemReq_reserved7_xer_, &OCTETSTRING_json_, &ChangeListItemReq_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeListItemReq_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeListItemReq_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeListItemReq_reserved8_oer_ext_arr_[0] = {};
+const int ChangeListItemReq_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeListItemReq_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeListItemReq_reserved8_oer_ext_arr_, 0, ChangeListItemReq_reserved8_oer_p_};
+const TTCN_Typedescriptor_t ChangeListItemReq_reserved8_descr_ = { "@IsobusVTMessageTypes.ChangeListItemReq.reserved8", &OCTETSTRING_ber_, &ChangeListItemReq_reserved8_raw_, &OCTETSTRING_text_, &ChangeListItemReq_reserved8_xer_, &OCTETSTRING_json_, &ChangeListItemReq_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeListItemReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangeListItemReq
+const TTCN_Typedescriptor_t ChangeListItemReq_descr_ = { "@IsobusVTMessageTypes.ChangeListItemReq", NULL, &ChangeListItemReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       DeleteObjectPoolReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t DeleteObjectPoolReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t DeleteObjectPoolReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.DeleteObjectPoolReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &DeleteObjectPoolReq_vtfunction_xer_, &INTEGER_json_, &DeleteObjectPoolReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DeleteObjectPoolReq_reserved2_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       DeleteObjectPoolReq_reserved2_xer_ = { {"reserved2>\n", "reserved2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int DeleteObjectPoolReq_reserved2_oer_ext_arr_[0] = {};
+const int DeleteObjectPoolReq_reserved2_oer_p_[0] = {};
+const TTCN_OERdescriptor_t DeleteObjectPoolReq_reserved2_oer_ = { -1, TRUE, 1, FALSE, 0, 0, DeleteObjectPoolReq_reserved2_oer_ext_arr_, 0, DeleteObjectPoolReq_reserved2_oer_p_};
+const TTCN_Typedescriptor_t DeleteObjectPoolReq_reserved2_descr_ = { "@IsobusVTMessageTypes.DeleteObjectPoolReq.reserved2", &OCTETSTRING_ber_, &DeleteObjectPoolReq_reserved2_raw_, &OCTETSTRING_text_, &DeleteObjectPoolReq_reserved2_xer_, &OCTETSTRING_json_, &DeleteObjectPoolReq_reserved2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DeleteObjectPoolReq_reserved3_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       DeleteObjectPoolReq_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int DeleteObjectPoolReq_reserved3_oer_ext_arr_[0] = {};
+const int DeleteObjectPoolReq_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t DeleteObjectPoolReq_reserved3_oer_ = { -1, TRUE, 1, FALSE, 0, 0, DeleteObjectPoolReq_reserved3_oer_ext_arr_, 0, DeleteObjectPoolReq_reserved3_oer_p_};
+const TTCN_Typedescriptor_t DeleteObjectPoolReq_reserved3_descr_ = { "@IsobusVTMessageTypes.DeleteObjectPoolReq.reserved3", &OCTETSTRING_ber_, &DeleteObjectPoolReq_reserved3_raw_, &OCTETSTRING_text_, &DeleteObjectPoolReq_reserved3_xer_, &OCTETSTRING_json_, &DeleteObjectPoolReq_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DeleteObjectPoolReq_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       DeleteObjectPoolReq_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int DeleteObjectPoolReq_reserved4_oer_ext_arr_[0] = {};
+const int DeleteObjectPoolReq_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t DeleteObjectPoolReq_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, DeleteObjectPoolReq_reserved4_oer_ext_arr_, 0, DeleteObjectPoolReq_reserved4_oer_p_};
+const TTCN_Typedescriptor_t DeleteObjectPoolReq_reserved4_descr_ = { "@IsobusVTMessageTypes.DeleteObjectPoolReq.reserved4", &OCTETSTRING_ber_, &DeleteObjectPoolReq_reserved4_raw_, &OCTETSTRING_text_, &DeleteObjectPoolReq_reserved4_xer_, &OCTETSTRING_json_, &DeleteObjectPoolReq_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DeleteObjectPoolReq_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       DeleteObjectPoolReq_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int DeleteObjectPoolReq_reserved5_oer_ext_arr_[0] = {};
+const int DeleteObjectPoolReq_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t DeleteObjectPoolReq_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, DeleteObjectPoolReq_reserved5_oer_ext_arr_, 0, DeleteObjectPoolReq_reserved5_oer_p_};
+const TTCN_Typedescriptor_t DeleteObjectPoolReq_reserved5_descr_ = { "@IsobusVTMessageTypes.DeleteObjectPoolReq.reserved5", &OCTETSTRING_ber_, &DeleteObjectPoolReq_reserved5_raw_, &OCTETSTRING_text_, &DeleteObjectPoolReq_reserved5_xer_, &OCTETSTRING_json_, &DeleteObjectPoolReq_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DeleteObjectPoolReq_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       DeleteObjectPoolReq_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int DeleteObjectPoolReq_reserved6_oer_ext_arr_[0] = {};
+const int DeleteObjectPoolReq_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t DeleteObjectPoolReq_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, DeleteObjectPoolReq_reserved6_oer_ext_arr_, 0, DeleteObjectPoolReq_reserved6_oer_p_};
+const TTCN_Typedescriptor_t DeleteObjectPoolReq_reserved6_descr_ = { "@IsobusVTMessageTypes.DeleteObjectPoolReq.reserved6", &OCTETSTRING_ber_, &DeleteObjectPoolReq_reserved6_raw_, &OCTETSTRING_text_, &DeleteObjectPoolReq_reserved6_xer_, &OCTETSTRING_json_, &DeleteObjectPoolReq_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DeleteObjectPoolReq_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       DeleteObjectPoolReq_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int DeleteObjectPoolReq_reserved7_oer_ext_arr_[0] = {};
+const int DeleteObjectPoolReq_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t DeleteObjectPoolReq_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, DeleteObjectPoolReq_reserved7_oer_ext_arr_, 0, DeleteObjectPoolReq_reserved7_oer_p_};
+const TTCN_Typedescriptor_t DeleteObjectPoolReq_reserved7_descr_ = { "@IsobusVTMessageTypes.DeleteObjectPoolReq.reserved7", &OCTETSTRING_ber_, &DeleteObjectPoolReq_reserved7_raw_, &OCTETSTRING_text_, &DeleteObjectPoolReq_reserved7_xer_, &OCTETSTRING_json_, &DeleteObjectPoolReq_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DeleteObjectPoolReq_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       DeleteObjectPoolReq_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int DeleteObjectPoolReq_reserved8_oer_ext_arr_[0] = {};
+const int DeleteObjectPoolReq_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t DeleteObjectPoolReq_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, DeleteObjectPoolReq_reserved8_oer_ext_arr_, 0, DeleteObjectPoolReq_reserved8_oer_p_};
+const TTCN_Typedescriptor_t DeleteObjectPoolReq_reserved8_descr_ = { "@IsobusVTMessageTypes.DeleteObjectPoolReq.reserved8", &OCTETSTRING_ber_, &DeleteObjectPoolReq_reserved8_raw_, &OCTETSTRING_text_, &DeleteObjectPoolReq_reserved8_xer_, &OCTETSTRING_json_, &DeleteObjectPoolReq_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DeleteObjectPoolReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for DeleteObjectPoolReq
+const TTCN_Typedescriptor_t DeleteObjectPoolReq_descr_ = { "@IsobusVTMessageTypes.DeleteObjectPoolReq", NULL, &DeleteObjectPoolReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       DeleteObjectPoolRes__ErrorCodes_deletionError_xer_ = { {"deletionError>\n", "deletionError>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int DeleteObjectPoolRes__ErrorCodes_deletionError_oer_ext_arr_[0] = {};
+const int DeleteObjectPoolRes__ErrorCodes_deletionError_oer_p_[0] = {};
+const TTCN_OERdescriptor_t DeleteObjectPoolRes__ErrorCodes_deletionError_oer_ = { -1, TRUE, -1, FALSE, 0, 0, DeleteObjectPoolRes__ErrorCodes_deletionError_oer_ext_arr_, 0, DeleteObjectPoolRes__ErrorCodes_deletionError_oer_p_};
+const TTCN_Typedescriptor_t DeleteObjectPoolRes__ErrorCodes_deletionError_descr_ = { "@IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes.deletionError", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &DeleteObjectPoolRes__ErrorCodes_deletionError_xer_, &BOOLEAN_json_, &DeleteObjectPoolRes__ErrorCodes_deletionError_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       DeleteObjectPoolRes__ErrorCodes_undefined1_xer_ = { {"undefined1>\n", "undefined1>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int DeleteObjectPoolRes__ErrorCodes_undefined1_oer_ext_arr_[0] = {};
+const int DeleteObjectPoolRes__ErrorCodes_undefined1_oer_p_[0] = {};
+const TTCN_OERdescriptor_t DeleteObjectPoolRes__ErrorCodes_undefined1_oer_ = { -1, TRUE, -1, FALSE, 0, 0, DeleteObjectPoolRes__ErrorCodes_undefined1_oer_ext_arr_, 0, DeleteObjectPoolRes__ErrorCodes_undefined1_oer_p_};
+const TTCN_Typedescriptor_t DeleteObjectPoolRes__ErrorCodes_undefined1_descr_ = { "@IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes.undefined1", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &DeleteObjectPoolRes__ErrorCodes_undefined1_xer_, &BOOLEAN_json_, &DeleteObjectPoolRes__ErrorCodes_undefined1_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       DeleteObjectPoolRes__ErrorCodes_undefined2_xer_ = { {"undefined2>\n", "undefined2>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int DeleteObjectPoolRes__ErrorCodes_undefined2_oer_ext_arr_[0] = {};
+const int DeleteObjectPoolRes__ErrorCodes_undefined2_oer_p_[0] = {};
+const TTCN_OERdescriptor_t DeleteObjectPoolRes__ErrorCodes_undefined2_oer_ = { -1, TRUE, -1, FALSE, 0, 0, DeleteObjectPoolRes__ErrorCodes_undefined2_oer_ext_arr_, 0, DeleteObjectPoolRes__ErrorCodes_undefined2_oer_p_};
+const TTCN_Typedescriptor_t DeleteObjectPoolRes__ErrorCodes_undefined2_descr_ = { "@IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes.undefined2", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &DeleteObjectPoolRes__ErrorCodes_undefined2_xer_, &BOOLEAN_json_, &DeleteObjectPoolRes__ErrorCodes_undefined2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       DeleteObjectPoolRes__ErrorCodes_undefined3_xer_ = { {"undefined3>\n", "undefined3>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int DeleteObjectPoolRes__ErrorCodes_undefined3_oer_ext_arr_[0] = {};
+const int DeleteObjectPoolRes__ErrorCodes_undefined3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t DeleteObjectPoolRes__ErrorCodes_undefined3_oer_ = { -1, TRUE, -1, FALSE, 0, 0, DeleteObjectPoolRes__ErrorCodes_undefined3_oer_ext_arr_, 0, DeleteObjectPoolRes__ErrorCodes_undefined3_oer_p_};
+const TTCN_Typedescriptor_t DeleteObjectPoolRes__ErrorCodes_undefined3_descr_ = { "@IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes.undefined3", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &DeleteObjectPoolRes__ErrorCodes_undefined3_xer_, &BOOLEAN_json_, &DeleteObjectPoolRes__ErrorCodes_undefined3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       DeleteObjectPoolRes__ErrorCodes_anyOtherError_xer_ = { {"anyOtherError>\n", "anyOtherError>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int DeleteObjectPoolRes__ErrorCodes_anyOtherError_oer_ext_arr_[0] = {};
+const int DeleteObjectPoolRes__ErrorCodes_anyOtherError_oer_p_[0] = {};
+const TTCN_OERdescriptor_t DeleteObjectPoolRes__ErrorCodes_anyOtherError_oer_ = { -1, TRUE, -1, FALSE, 0, 0, DeleteObjectPoolRes__ErrorCodes_anyOtherError_oer_ext_arr_, 0, DeleteObjectPoolRes__ErrorCodes_anyOtherError_oer_p_};
+const TTCN_Typedescriptor_t DeleteObjectPoolRes__ErrorCodes_anyOtherError_descr_ = { "@IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes.anyOtherError", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &DeleteObjectPoolRes__ErrorCodes_anyOtherError_xer_, &BOOLEAN_json_, &DeleteObjectPoolRes__ErrorCodes_anyOtherError_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       DeleteObjectPoolRes__ErrorCodes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int DeleteObjectPoolRes__ErrorCodes_reserved5_oer_ext_arr_[0] = {};
+const int DeleteObjectPoolRes__ErrorCodes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t DeleteObjectPoolRes__ErrorCodes_reserved5_oer_ = { -1, TRUE, -1, FALSE, 0, 0, DeleteObjectPoolRes__ErrorCodes_reserved5_oer_ext_arr_, 0, DeleteObjectPoolRes__ErrorCodes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t DeleteObjectPoolRes__ErrorCodes_reserved5_descr_ = { "@IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes.reserved5", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &DeleteObjectPoolRes__ErrorCodes_reserved5_xer_, &BOOLEAN_json_, &DeleteObjectPoolRes__ErrorCodes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       DeleteObjectPoolRes__ErrorCodes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int DeleteObjectPoolRes__ErrorCodes_reserved6_oer_ext_arr_[0] = {};
+const int DeleteObjectPoolRes__ErrorCodes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t DeleteObjectPoolRes__ErrorCodes_reserved6_oer_ = { -1, TRUE, -1, FALSE, 0, 0, DeleteObjectPoolRes__ErrorCodes_reserved6_oer_ext_arr_, 0, DeleteObjectPoolRes__ErrorCodes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t DeleteObjectPoolRes__ErrorCodes_reserved6_descr_ = { "@IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes.reserved6", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &DeleteObjectPoolRes__ErrorCodes_reserved6_xer_, &BOOLEAN_json_, &DeleteObjectPoolRes__ErrorCodes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       DeleteObjectPoolRes__ErrorCodes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int DeleteObjectPoolRes__ErrorCodes_reserved7_oer_ext_arr_[0] = {};
+const int DeleteObjectPoolRes__ErrorCodes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t DeleteObjectPoolRes__ErrorCodes_reserved7_oer_ = { -1, TRUE, -1, FALSE, 0, 0, DeleteObjectPoolRes__ErrorCodes_reserved7_oer_ext_arr_, 0, DeleteObjectPoolRes__ErrorCodes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t DeleteObjectPoolRes__ErrorCodes_reserved7_descr_ = { "@IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes.reserved7", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &DeleteObjectPoolRes__ErrorCodes_reserved7_xer_, &BOOLEAN_json_, &DeleteObjectPoolRes__ErrorCodes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DeleteObjectPoolRes__ErrorCodes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for DeleteObjectPoolRes__ErrorCodes
+const TTCN_Typedescriptor_t DeleteObjectPoolRes__ErrorCodes_descr_ = { "@IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes", NULL, &DeleteObjectPoolRes__ErrorCodes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       DeleteObjectPoolRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t DeleteObjectPoolRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t DeleteObjectPoolRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.DeleteObjectPoolRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &DeleteObjectPoolRes_vtfunction_xer_, &INTEGER_json_, &DeleteObjectPoolRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DeleteObjectPoolRes_reserved3_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       DeleteObjectPoolRes_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int DeleteObjectPoolRes_reserved3_oer_ext_arr_[0] = {};
+const int DeleteObjectPoolRes_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t DeleteObjectPoolRes_reserved3_oer_ = { -1, TRUE, 1, FALSE, 0, 0, DeleteObjectPoolRes_reserved3_oer_ext_arr_, 0, DeleteObjectPoolRes_reserved3_oer_p_};
+const TTCN_Typedescriptor_t DeleteObjectPoolRes_reserved3_descr_ = { "@IsobusVTMessageTypes.DeleteObjectPoolRes.reserved3", &OCTETSTRING_ber_, &DeleteObjectPoolRes_reserved3_raw_, &OCTETSTRING_text_, &DeleteObjectPoolRes_reserved3_xer_, &OCTETSTRING_json_, &DeleteObjectPoolRes_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DeleteObjectPoolRes_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       DeleteObjectPoolRes_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int DeleteObjectPoolRes_reserved4_oer_ext_arr_[0] = {};
+const int DeleteObjectPoolRes_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t DeleteObjectPoolRes_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, DeleteObjectPoolRes_reserved4_oer_ext_arr_, 0, DeleteObjectPoolRes_reserved4_oer_p_};
+const TTCN_Typedescriptor_t DeleteObjectPoolRes_reserved4_descr_ = { "@IsobusVTMessageTypes.DeleteObjectPoolRes.reserved4", &OCTETSTRING_ber_, &DeleteObjectPoolRes_reserved4_raw_, &OCTETSTRING_text_, &DeleteObjectPoolRes_reserved4_xer_, &OCTETSTRING_json_, &DeleteObjectPoolRes_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DeleteObjectPoolRes_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       DeleteObjectPoolRes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int DeleteObjectPoolRes_reserved5_oer_ext_arr_[0] = {};
+const int DeleteObjectPoolRes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t DeleteObjectPoolRes_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, DeleteObjectPoolRes_reserved5_oer_ext_arr_, 0, DeleteObjectPoolRes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t DeleteObjectPoolRes_reserved5_descr_ = { "@IsobusVTMessageTypes.DeleteObjectPoolRes.reserved5", &OCTETSTRING_ber_, &DeleteObjectPoolRes_reserved5_raw_, &OCTETSTRING_text_, &DeleteObjectPoolRes_reserved5_xer_, &OCTETSTRING_json_, &DeleteObjectPoolRes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DeleteObjectPoolRes_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       DeleteObjectPoolRes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int DeleteObjectPoolRes_reserved6_oer_ext_arr_[0] = {};
+const int DeleteObjectPoolRes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t DeleteObjectPoolRes_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, DeleteObjectPoolRes_reserved6_oer_ext_arr_, 0, DeleteObjectPoolRes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t DeleteObjectPoolRes_reserved6_descr_ = { "@IsobusVTMessageTypes.DeleteObjectPoolRes.reserved6", &OCTETSTRING_ber_, &DeleteObjectPoolRes_reserved6_raw_, &OCTETSTRING_text_, &DeleteObjectPoolRes_reserved6_xer_, &OCTETSTRING_json_, &DeleteObjectPoolRes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DeleteObjectPoolRes_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       DeleteObjectPoolRes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int DeleteObjectPoolRes_reserved7_oer_ext_arr_[0] = {};
+const int DeleteObjectPoolRes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t DeleteObjectPoolRes_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, DeleteObjectPoolRes_reserved7_oer_ext_arr_, 0, DeleteObjectPoolRes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t DeleteObjectPoolRes_reserved7_descr_ = { "@IsobusVTMessageTypes.DeleteObjectPoolRes.reserved7", &OCTETSTRING_ber_, &DeleteObjectPoolRes_reserved7_raw_, &OCTETSTRING_text_, &DeleteObjectPoolRes_reserved7_xer_, &OCTETSTRING_json_, &DeleteObjectPoolRes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DeleteObjectPoolRes_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       DeleteObjectPoolRes_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int DeleteObjectPoolRes_reserved8_oer_ext_arr_[0] = {};
+const int DeleteObjectPoolRes_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t DeleteObjectPoolRes_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, DeleteObjectPoolRes_reserved8_oer_ext_arr_, 0, DeleteObjectPoolRes_reserved8_oer_p_};
+const TTCN_Typedescriptor_t DeleteObjectPoolRes_reserved8_descr_ = { "@IsobusVTMessageTypes.DeleteObjectPoolRes.reserved8", &OCTETSTRING_ber_, &DeleteObjectPoolRes_reserved8_raw_, &OCTETSTRING_text_, &DeleteObjectPoolRes_reserved8_xer_, &OCTETSTRING_json_, &DeleteObjectPoolRes_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DeleteObjectPoolRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for DeleteObjectPoolRes
+const TTCN_Typedescriptor_t DeleteObjectPoolRes_descr_ = { "@IsobusVTMessageTypes.DeleteObjectPoolRes", NULL, &DeleteObjectPoolRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeStringValueReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeStringValueReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeStringValueReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.ChangeStringValueReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangeStringValueReq_vtfunction_xer_, &INTEGER_json_, &ChangeStringValueReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeStringValueReq_objectID_xer_ = { {"objectID>\n", "objectID>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeStringValueReq_objectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeStringValueReq_objectID_descr_ = { "@IsobusVTMessageTypes.ChangeStringValueReq.objectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ChangeStringValueReq_objectID_xer_, &INTEGER_json_, &ChangeStringValueReq_objectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeStringValueReq_numberOfBytes_raw_ = {16,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       ChangeStringValueReq_numberOfBytes_xer_ = { {"numberOfBytes>\n", "numberOfBytes>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeStringValueReq_numberOfBytes_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeStringValueReq_numberOfBytes_descr_ = { "@IsobusVTMessageTypes.ChangeStringValueReq.numberOfBytes", &INTEGER_ber_, &ChangeStringValueReq_numberOfBytes_raw_, &INTEGER_text_, &ChangeStringValueReq_numberOfBytes_xer_, &INTEGER_json_, &ChangeStringValueReq_numberOfBytes_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeStringValueReq_newStringValue_xer_ = { {"newStringValue>\n", "newStringValue>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeStringValueReq_newStringValue_oer_ext_arr_[0] = {};
+const int ChangeStringValueReq_newStringValue_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeStringValueReq_newStringValue_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeStringValueReq_newStringValue_oer_ext_arr_, 0, ChangeStringValueReq_newStringValue_oer_p_};
+const TTCN_Typedescriptor_t ChangeStringValueReq_newStringValue_descr_ = { "@IsobusVTMessageTypes.ChangeStringValueReq.newStringValue", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &ChangeStringValueReq_newStringValue_xer_, &OCTETSTRING_json_, &ChangeStringValueReq_newStringValue_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeStringValueReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangeStringValueReq
+const TTCN_Typedescriptor_t ChangeStringValueReq_descr_ = { "@IsobusVTMessageTypes.ChangeStringValueReq", NULL, &ChangeStringValueReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeStringValueRes__ErrorCodes_undefined_xer_ = { {"undefined>\n", "undefined>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeStringValueRes__ErrorCodes_undefined_oer_ext_arr_[0] = {};
+const int ChangeStringValueRes__ErrorCodes_undefined_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeStringValueRes__ErrorCodes_undefined_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeStringValueRes__ErrorCodes_undefined_oer_ext_arr_, 0, ChangeStringValueRes__ErrorCodes_undefined_oer_p_};
+const TTCN_Typedescriptor_t ChangeStringValueRes__ErrorCodes_undefined_descr_ = { "@IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes.undefined", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeStringValueRes__ErrorCodes_undefined_xer_, &BOOLEAN_json_, &ChangeStringValueRes__ErrorCodes_undefined_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeStringValueRes__ErrorCodes_invalidObjectID_xer_ = { {"invalidObjectID>\n", "invalidObjectID>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeStringValueRes__ErrorCodes_invalidObjectID_oer_ext_arr_[0] = {};
+const int ChangeStringValueRes__ErrorCodes_invalidObjectID_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeStringValueRes__ErrorCodes_invalidObjectID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeStringValueRes__ErrorCodes_invalidObjectID_oer_ext_arr_, 0, ChangeStringValueRes__ErrorCodes_invalidObjectID_oer_p_};
+const TTCN_Typedescriptor_t ChangeStringValueRes__ErrorCodes_invalidObjectID_descr_ = { "@IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes.invalidObjectID", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeStringValueRes__ErrorCodes_invalidObjectID_xer_, &BOOLEAN_json_, &ChangeStringValueRes__ErrorCodes_invalidObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeStringValueRes__ErrorCodes_stringTooLong_xer_ = { {"stringTooLong>\n", "stringTooLong>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeStringValueRes__ErrorCodes_stringTooLong_oer_ext_arr_[0] = {};
+const int ChangeStringValueRes__ErrorCodes_stringTooLong_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeStringValueRes__ErrorCodes_stringTooLong_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeStringValueRes__ErrorCodes_stringTooLong_oer_ext_arr_, 0, ChangeStringValueRes__ErrorCodes_stringTooLong_oer_p_};
+const TTCN_Typedescriptor_t ChangeStringValueRes__ErrorCodes_stringTooLong_descr_ = { "@IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes.stringTooLong", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeStringValueRes__ErrorCodes_stringTooLong_xer_, &BOOLEAN_json_, &ChangeStringValueRes__ErrorCodes_stringTooLong_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeStringValueRes__ErrorCodes_anyOtherError_xer_ = { {"anyOtherError>\n", "anyOtherError>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeStringValueRes__ErrorCodes_anyOtherError_oer_ext_arr_[0] = {};
+const int ChangeStringValueRes__ErrorCodes_anyOtherError_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeStringValueRes__ErrorCodes_anyOtherError_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeStringValueRes__ErrorCodes_anyOtherError_oer_ext_arr_, 0, ChangeStringValueRes__ErrorCodes_anyOtherError_oer_p_};
+const TTCN_Typedescriptor_t ChangeStringValueRes__ErrorCodes_anyOtherError_descr_ = { "@IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes.anyOtherError", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeStringValueRes__ErrorCodes_anyOtherError_xer_, &BOOLEAN_json_, &ChangeStringValueRes__ErrorCodes_anyOtherError_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeStringValueRes__ErrorCodes_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeStringValueRes__ErrorCodes_reserved4_oer_ext_arr_[0] = {};
+const int ChangeStringValueRes__ErrorCodes_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeStringValueRes__ErrorCodes_reserved4_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeStringValueRes__ErrorCodes_reserved4_oer_ext_arr_, 0, ChangeStringValueRes__ErrorCodes_reserved4_oer_p_};
+const TTCN_Typedescriptor_t ChangeStringValueRes__ErrorCodes_reserved4_descr_ = { "@IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes.reserved4", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeStringValueRes__ErrorCodes_reserved4_xer_, &BOOLEAN_json_, &ChangeStringValueRes__ErrorCodes_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeStringValueRes__ErrorCodes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeStringValueRes__ErrorCodes_reserved5_oer_ext_arr_[0] = {};
+const int ChangeStringValueRes__ErrorCodes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeStringValueRes__ErrorCodes_reserved5_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeStringValueRes__ErrorCodes_reserved5_oer_ext_arr_, 0, ChangeStringValueRes__ErrorCodes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t ChangeStringValueRes__ErrorCodes_reserved5_descr_ = { "@IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes.reserved5", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeStringValueRes__ErrorCodes_reserved5_xer_, &BOOLEAN_json_, &ChangeStringValueRes__ErrorCodes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeStringValueRes__ErrorCodes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeStringValueRes__ErrorCodes_reserved6_oer_ext_arr_[0] = {};
+const int ChangeStringValueRes__ErrorCodes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeStringValueRes__ErrorCodes_reserved6_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeStringValueRes__ErrorCodes_reserved6_oer_ext_arr_, 0, ChangeStringValueRes__ErrorCodes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t ChangeStringValueRes__ErrorCodes_reserved6_descr_ = { "@IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes.reserved6", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeStringValueRes__ErrorCodes_reserved6_xer_, &BOOLEAN_json_, &ChangeStringValueRes__ErrorCodes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeStringValueRes__ErrorCodes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeStringValueRes__ErrorCodes_reserved7_oer_ext_arr_[0] = {};
+const int ChangeStringValueRes__ErrorCodes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeStringValueRes__ErrorCodes_reserved7_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeStringValueRes__ErrorCodes_reserved7_oer_ext_arr_, 0, ChangeStringValueRes__ErrorCodes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ChangeStringValueRes__ErrorCodes_reserved7_descr_ = { "@IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes.reserved7", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeStringValueRes__ErrorCodes_reserved7_xer_, &BOOLEAN_json_, &ChangeStringValueRes__ErrorCodes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeStringValueRes__ErrorCodes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangeStringValueRes__ErrorCodes
+const TTCN_Typedescriptor_t ChangeStringValueRes__ErrorCodes_descr_ = { "@IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes", NULL, &ChangeStringValueRes__ErrorCodes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeStringValueRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeStringValueRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeStringValueRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.ChangeStringValueRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangeStringValueRes_vtfunction_xer_, &INTEGER_json_, &ChangeStringValueRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeStringValueRes_reserved2_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeStringValueRes_reserved2_xer_ = { {"reserved2>\n", "reserved2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeStringValueRes_reserved2_oer_ext_arr_[0] = {};
+const int ChangeStringValueRes_reserved2_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeStringValueRes_reserved2_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeStringValueRes_reserved2_oer_ext_arr_, 0, ChangeStringValueRes_reserved2_oer_p_};
+const TTCN_Typedescriptor_t ChangeStringValueRes_reserved2_descr_ = { "@IsobusVTMessageTypes.ChangeStringValueRes.reserved2", &OCTETSTRING_ber_, &ChangeStringValueRes_reserved2_raw_, &OCTETSTRING_text_, &ChangeStringValueRes_reserved2_xer_, &OCTETSTRING_json_, &ChangeStringValueRes_reserved2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeStringValueRes_reserved3_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeStringValueRes_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeStringValueRes_reserved3_oer_ext_arr_[0] = {};
+const int ChangeStringValueRes_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeStringValueRes_reserved3_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeStringValueRes_reserved3_oer_ext_arr_, 0, ChangeStringValueRes_reserved3_oer_p_};
+const TTCN_Typedescriptor_t ChangeStringValueRes_reserved3_descr_ = { "@IsobusVTMessageTypes.ChangeStringValueRes.reserved3", &OCTETSTRING_ber_, &ChangeStringValueRes_reserved3_raw_, &OCTETSTRING_text_, &ChangeStringValueRes_reserved3_xer_, &OCTETSTRING_json_, &ChangeStringValueRes_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeStringValueRes_objectID_xer_ = { {"objectID>\n", "objectID>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeStringValueRes_objectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeStringValueRes_objectID_descr_ = { "@IsobusVTMessageTypes.ChangeStringValueRes.objectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ChangeStringValueRes_objectID_xer_, &INTEGER_json_, &ChangeStringValueRes_objectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeStringValueRes_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeStringValueRes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeStringValueRes_reserved7_oer_ext_arr_[0] = {};
+const int ChangeStringValueRes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeStringValueRes_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeStringValueRes_reserved7_oer_ext_arr_, 0, ChangeStringValueRes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ChangeStringValueRes_reserved7_descr_ = { "@IsobusVTMessageTypes.ChangeStringValueRes.reserved7", &OCTETSTRING_ber_, &ChangeStringValueRes_reserved7_raw_, &OCTETSTRING_text_, &ChangeStringValueRes_reserved7_xer_, &OCTETSTRING_json_, &ChangeStringValueRes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeStringValueRes_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeStringValueRes_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeStringValueRes_reserved8_oer_ext_arr_[0] = {};
+const int ChangeStringValueRes_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeStringValueRes_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeStringValueRes_reserved8_oer_ext_arr_, 0, ChangeStringValueRes_reserved8_oer_p_};
+const TTCN_Typedescriptor_t ChangeStringValueRes_reserved8_descr_ = { "@IsobusVTMessageTypes.ChangeStringValueRes.reserved8", &OCTETSTRING_ber_, &ChangeStringValueRes_reserved8_raw_, &OCTETSTRING_text_, &ChangeStringValueRes_reserved8_xer_, &OCTETSTRING_json_, &ChangeStringValueRes_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeStringValueRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangeStringValueRes
+const TTCN_Typedescriptor_t ChangeStringValueRes_descr_ = { "@IsobusVTMessageTypes.ChangeStringValueRes", NULL, &ChangeStringValueRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeChildPositionReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeChildPositionReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeChildPositionReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.ChangeChildPositionReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangeChildPositionReq_vtfunction_xer_, &INTEGER_json_, &ChangeChildPositionReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeChildPositionReq_parentObjectID_xer_ = { {"parentObjectID>\n", "parentObjectID>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeChildPositionReq_parentObjectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeChildPositionReq_parentObjectID_descr_ = { "@IsobusVTMessageTypes.ChangeChildPositionReq.parentObjectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ChangeChildPositionReq_parentObjectID_xer_, &INTEGER_json_, &ChangeChildPositionReq_parentObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeChildPositionReq_objectID_xer_ = { {"objectID>\n", "objectID>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeChildPositionReq_objectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeChildPositionReq_objectID_descr_ = { "@IsobusVTMessageTypes.ChangeChildPositionReq.objectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ChangeChildPositionReq_objectID_xer_, &INTEGER_json_, &ChangeChildPositionReq_objectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeChildPositionReq_pos__x__relative_xer_ = { {"pos_x_relative>\n", "pos_x_relative>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeChildPositionReq_pos__x__relative_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeChildPositionReq_pos__x__relative_descr_ = { "@IsobusVTMessageTypes.ChangeChildPositionReq.pos_x_relative", &INTEGER_ber_, &IsobusMessageTypes::INT2_raw_, &INTEGER_text_, &ChangeChildPositionReq_pos__x__relative_xer_, &INTEGER_json_, &ChangeChildPositionReq_pos__x__relative_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeChildPositionReq_pos__y__relative_xer_ = { {"pos_y_relative>\n", "pos_y_relative>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeChildPositionReq_pos__y__relative_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeChildPositionReq_pos__y__relative_descr_ = { "@IsobusVTMessageTypes.ChangeChildPositionReq.pos_y_relative", &INTEGER_ber_, &IsobusMessageTypes::INT2_raw_, &INTEGER_text_, &ChangeChildPositionReq_pos__y__relative_xer_, &INTEGER_json_, &ChangeChildPositionReq_pos__y__relative_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeChildPositionReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangeChildPositionReq
+const TTCN_Typedescriptor_t ChangeChildPositionReq_descr_ = { "@IsobusVTMessageTypes.ChangeChildPositionReq", NULL, &ChangeChildPositionReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeChildPositionRes__ErrorCodes_invalidParentObjectID_xer_ = { {"invalidParentObjectID>\n", "invalidParentObjectID>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeChildPositionRes__ErrorCodes_invalidParentObjectID_oer_ext_arr_[0] = {};
+const int ChangeChildPositionRes__ErrorCodes_invalidParentObjectID_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeChildPositionRes__ErrorCodes_invalidParentObjectID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeChildPositionRes__ErrorCodes_invalidParentObjectID_oer_ext_arr_, 0, ChangeChildPositionRes__ErrorCodes_invalidParentObjectID_oer_p_};
+const TTCN_Typedescriptor_t ChangeChildPositionRes__ErrorCodes_invalidParentObjectID_descr_ = { "@IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes.invalidParentObjectID", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeChildPositionRes__ErrorCodes_invalidParentObjectID_xer_, &BOOLEAN_json_, &ChangeChildPositionRes__ErrorCodes_invalidParentObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeChildPositionRes__ErrorCodes_invalidObjectID_xer_ = { {"invalidObjectID>\n", "invalidObjectID>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeChildPositionRes__ErrorCodes_invalidObjectID_oer_ext_arr_[0] = {};
+const int ChangeChildPositionRes__ErrorCodes_invalidObjectID_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeChildPositionRes__ErrorCodes_invalidObjectID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeChildPositionRes__ErrorCodes_invalidObjectID_oer_ext_arr_, 0, ChangeChildPositionRes__ErrorCodes_invalidObjectID_oer_p_};
+const TTCN_Typedescriptor_t ChangeChildPositionRes__ErrorCodes_invalidObjectID_descr_ = { "@IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes.invalidObjectID", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeChildPositionRes__ErrorCodes_invalidObjectID_xer_, &BOOLEAN_json_, &ChangeChildPositionRes__ErrorCodes_invalidObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeChildPositionRes__ErrorCodes_undefined_xer_ = { {"undefined>\n", "undefined>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeChildPositionRes__ErrorCodes_undefined_oer_ext_arr_[0] = {};
+const int ChangeChildPositionRes__ErrorCodes_undefined_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeChildPositionRes__ErrorCodes_undefined_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeChildPositionRes__ErrorCodes_undefined_oer_ext_arr_, 0, ChangeChildPositionRes__ErrorCodes_undefined_oer_p_};
+const TTCN_Typedescriptor_t ChangeChildPositionRes__ErrorCodes_undefined_descr_ = { "@IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes.undefined", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeChildPositionRes__ErrorCodes_undefined_xer_, &BOOLEAN_json_, &ChangeChildPositionRes__ErrorCodes_undefined_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeChildPositionRes__ErrorCodes_anyOtherError_xer_ = { {"anyOtherError>\n", "anyOtherError>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeChildPositionRes__ErrorCodes_anyOtherError_oer_ext_arr_[0] = {};
+const int ChangeChildPositionRes__ErrorCodes_anyOtherError_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeChildPositionRes__ErrorCodes_anyOtherError_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeChildPositionRes__ErrorCodes_anyOtherError_oer_ext_arr_, 0, ChangeChildPositionRes__ErrorCodes_anyOtherError_oer_p_};
+const TTCN_Typedescriptor_t ChangeChildPositionRes__ErrorCodes_anyOtherError_descr_ = { "@IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes.anyOtherError", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeChildPositionRes__ErrorCodes_anyOtherError_xer_, &BOOLEAN_json_, &ChangeChildPositionRes__ErrorCodes_anyOtherError_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeChildPositionRes__ErrorCodes_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeChildPositionRes__ErrorCodes_reserved4_oer_ext_arr_[0] = {};
+const int ChangeChildPositionRes__ErrorCodes_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeChildPositionRes__ErrorCodes_reserved4_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeChildPositionRes__ErrorCodes_reserved4_oer_ext_arr_, 0, ChangeChildPositionRes__ErrorCodes_reserved4_oer_p_};
+const TTCN_Typedescriptor_t ChangeChildPositionRes__ErrorCodes_reserved4_descr_ = { "@IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes.reserved4", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeChildPositionRes__ErrorCodes_reserved4_xer_, &BOOLEAN_json_, &ChangeChildPositionRes__ErrorCodes_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeChildPositionRes__ErrorCodes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeChildPositionRes__ErrorCodes_reserved5_oer_ext_arr_[0] = {};
+const int ChangeChildPositionRes__ErrorCodes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeChildPositionRes__ErrorCodes_reserved5_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeChildPositionRes__ErrorCodes_reserved5_oer_ext_arr_, 0, ChangeChildPositionRes__ErrorCodes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t ChangeChildPositionRes__ErrorCodes_reserved5_descr_ = { "@IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes.reserved5", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeChildPositionRes__ErrorCodes_reserved5_xer_, &BOOLEAN_json_, &ChangeChildPositionRes__ErrorCodes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeChildPositionRes__ErrorCodes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeChildPositionRes__ErrorCodes_reserved6_oer_ext_arr_[0] = {};
+const int ChangeChildPositionRes__ErrorCodes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeChildPositionRes__ErrorCodes_reserved6_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeChildPositionRes__ErrorCodes_reserved6_oer_ext_arr_, 0, ChangeChildPositionRes__ErrorCodes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t ChangeChildPositionRes__ErrorCodes_reserved6_descr_ = { "@IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes.reserved6", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeChildPositionRes__ErrorCodes_reserved6_xer_, &BOOLEAN_json_, &ChangeChildPositionRes__ErrorCodes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeChildPositionRes__ErrorCodes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeChildPositionRes__ErrorCodes_reserved7_oer_ext_arr_[0] = {};
+const int ChangeChildPositionRes__ErrorCodes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeChildPositionRes__ErrorCodes_reserved7_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeChildPositionRes__ErrorCodes_reserved7_oer_ext_arr_, 0, ChangeChildPositionRes__ErrorCodes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ChangeChildPositionRes__ErrorCodes_reserved7_descr_ = { "@IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes.reserved7", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeChildPositionRes__ErrorCodes_reserved7_xer_, &BOOLEAN_json_, &ChangeChildPositionRes__ErrorCodes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeChildPositionRes__ErrorCodes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangeChildPositionRes__ErrorCodes
+const TTCN_Typedescriptor_t ChangeChildPositionRes__ErrorCodes_descr_ = { "@IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes", NULL, &ChangeChildPositionRes__ErrorCodes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeChildPositionRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeChildPositionRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeChildPositionRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.ChangeChildPositionRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangeChildPositionRes_vtfunction_xer_, &INTEGER_json_, &ChangeChildPositionRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeChildPositionRes_parentObjectID_xer_ = { {"parentObjectID>\n", "parentObjectID>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeChildPositionRes_parentObjectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeChildPositionRes_parentObjectID_descr_ = { "@IsobusVTMessageTypes.ChangeChildPositionRes.parentObjectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ChangeChildPositionRes_parentObjectID_xer_, &INTEGER_json_, &ChangeChildPositionRes_parentObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeChildPositionRes_objectID_xer_ = { {"objectID>\n", "objectID>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeChildPositionRes_objectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeChildPositionRes_objectID_descr_ = { "@IsobusVTMessageTypes.ChangeChildPositionRes.objectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ChangeChildPositionRes_objectID_xer_, &INTEGER_json_, &ChangeChildPositionRes_objectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeChildPositionRes_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeChildPositionRes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeChildPositionRes_reserved7_oer_ext_arr_[0] = {};
+const int ChangeChildPositionRes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeChildPositionRes_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeChildPositionRes_reserved7_oer_ext_arr_, 0, ChangeChildPositionRes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ChangeChildPositionRes_reserved7_descr_ = { "@IsobusVTMessageTypes.ChangeChildPositionRes.reserved7", &OCTETSTRING_ber_, &ChangeChildPositionRes_reserved7_raw_, &OCTETSTRING_text_, &ChangeChildPositionRes_reserved7_xer_, &OCTETSTRING_json_, &ChangeChildPositionRes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeChildPositionRes_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeChildPositionRes_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeChildPositionRes_reserved8_oer_ext_arr_[0] = {};
+const int ChangeChildPositionRes_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeChildPositionRes_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeChildPositionRes_reserved8_oer_ext_arr_, 0, ChangeChildPositionRes_reserved8_oer_p_};
+const TTCN_Typedescriptor_t ChangeChildPositionRes_reserved8_descr_ = { "@IsobusVTMessageTypes.ChangeChildPositionRes.reserved8", &OCTETSTRING_ber_, &ChangeChildPositionRes_reserved8_raw_, &OCTETSTRING_text_, &ChangeChildPositionRes_reserved8_xer_, &OCTETSTRING_json_, &ChangeChildPositionRes_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeChildPositionRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangeChildPositionRes
+const TTCN_Typedescriptor_t ChangeChildPositionRes_descr_ = { "@IsobusVTMessageTypes.ChangeChildPositionRes", NULL, &ChangeChildPositionRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeObjectLabelRes__ErrorCodes_invalidObjectID_xer_ = { {"invalidObjectID>\n", "invalidObjectID>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeObjectLabelRes__ErrorCodes_invalidObjectID_oer_ext_arr_[0] = {};
+const int ChangeObjectLabelRes__ErrorCodes_invalidObjectID_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeObjectLabelRes__ErrorCodes_invalidObjectID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeObjectLabelRes__ErrorCodes_invalidObjectID_oer_ext_arr_, 0, ChangeObjectLabelRes__ErrorCodes_invalidObjectID_oer_p_};
+const TTCN_Typedescriptor_t ChangeObjectLabelRes__ErrorCodes_invalidObjectID_descr_ = { "@IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes.invalidObjectID", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeObjectLabelRes__ErrorCodes_invalidObjectID_xer_, &BOOLEAN_json_, &ChangeObjectLabelRes__ErrorCodes_invalidObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeObjectLabelRes__ErrorCodes_invalidStringVariableObjectID_xer_ = { {"invalidStringVariableObjectID>\n", "invalidStringVariableObjectID>\n"}, {31, 31}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeObjectLabelRes__ErrorCodes_invalidStringVariableObjectID_oer_ext_arr_[0] = {};
+const int ChangeObjectLabelRes__ErrorCodes_invalidStringVariableObjectID_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeObjectLabelRes__ErrorCodes_invalidStringVariableObjectID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeObjectLabelRes__ErrorCodes_invalidStringVariableObjectID_oer_ext_arr_, 0, ChangeObjectLabelRes__ErrorCodes_invalidStringVariableObjectID_oer_p_};
+const TTCN_Typedescriptor_t ChangeObjectLabelRes__ErrorCodes_invalidStringVariableObjectID_descr_ = { "@IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes.invalidStringVariableObjectID", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeObjectLabelRes__ErrorCodes_invalidStringVariableObjectID_xer_, &BOOLEAN_json_, &ChangeObjectLabelRes__ErrorCodes_invalidStringVariableObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeObjectLabelRes__ErrorCodes_invalidFontType_xer_ = { {"invalidFontType>\n", "invalidFontType>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeObjectLabelRes__ErrorCodes_invalidFontType_oer_ext_arr_[0] = {};
+const int ChangeObjectLabelRes__ErrorCodes_invalidFontType_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeObjectLabelRes__ErrorCodes_invalidFontType_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeObjectLabelRes__ErrorCodes_invalidFontType_oer_ext_arr_, 0, ChangeObjectLabelRes__ErrorCodes_invalidFontType_oer_p_};
+const TTCN_Typedescriptor_t ChangeObjectLabelRes__ErrorCodes_invalidFontType_descr_ = { "@IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes.invalidFontType", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeObjectLabelRes__ErrorCodes_invalidFontType_xer_, &BOOLEAN_json_, &ChangeObjectLabelRes__ErrorCodes_invalidFontType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeObjectLabelRes__ErrorCodes_noObjectLabelReferenceListObjectAvailableInObjectPool_xer_ = { {"noObjectLabelReferenceListObjectAvailableInObjectPool>\n", "noObjectLabelReferenceListObjectAvailableInObjectPool>\n"}, {55, 55}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeObjectLabelRes__ErrorCodes_noObjectLabelReferenceListObjectAvailableInObjectPool_oer_ext_arr_[0] = {};
+const int ChangeObjectLabelRes__ErrorCodes_noObjectLabelReferenceListObjectAvailableInObjectPool_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeObjectLabelRes__ErrorCodes_noObjectLabelReferenceListObjectAvailableInObjectPool_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeObjectLabelRes__ErrorCodes_noObjectLabelReferenceListObjectAvailableInObjectPool_oer_ext_arr_, 0, ChangeObjectLabelRes__ErrorCodes_noObjectLabelReferenceListObjectAvailableInObjectPool_oer_p_};
+const TTCN_Typedescriptor_t ChangeObjectLabelRes__ErrorCodes_noObjectLabelReferenceListObjectAvailableInObjectPool_descr_ = { "@IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes.noObjectLabelReferenceListObjectAvailableInObjectPool", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeObjectLabelRes__ErrorCodes_noObjectLabelReferenceListObjectAvailableInObjectPool_xer_, &BOOLEAN_json_, &ChangeObjectLabelRes__ErrorCodes_noObjectLabelReferenceListObjectAvailableInObjectPool_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeObjectLabelRes__ErrorCodes_designatorReferencesInvalidObjects_xer_ = { {"designatorReferencesInvalidObjects>\n", "designatorReferencesInvalidObjects>\n"}, {36, 36}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeObjectLabelRes__ErrorCodes_designatorReferencesInvalidObjects_oer_ext_arr_[0] = {};
+const int ChangeObjectLabelRes__ErrorCodes_designatorReferencesInvalidObjects_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeObjectLabelRes__ErrorCodes_designatorReferencesInvalidObjects_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeObjectLabelRes__ErrorCodes_designatorReferencesInvalidObjects_oer_ext_arr_, 0, ChangeObjectLabelRes__ErrorCodes_designatorReferencesInvalidObjects_oer_p_};
+const TTCN_Typedescriptor_t ChangeObjectLabelRes__ErrorCodes_designatorReferencesInvalidObjects_descr_ = { "@IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes.designatorReferencesInvalidObjects", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeObjectLabelRes__ErrorCodes_designatorReferencesInvalidObjects_xer_, &BOOLEAN_json_, &ChangeObjectLabelRes__ErrorCodes_designatorReferencesInvalidObjects_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeObjectLabelRes__ErrorCodes_anyOtherError_xer_ = { {"anyOtherError>\n", "anyOtherError>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeObjectLabelRes__ErrorCodes_anyOtherError_oer_ext_arr_[0] = {};
+const int ChangeObjectLabelRes__ErrorCodes_anyOtherError_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeObjectLabelRes__ErrorCodes_anyOtherError_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeObjectLabelRes__ErrorCodes_anyOtherError_oer_ext_arr_, 0, ChangeObjectLabelRes__ErrorCodes_anyOtherError_oer_p_};
+const TTCN_Typedescriptor_t ChangeObjectLabelRes__ErrorCodes_anyOtherError_descr_ = { "@IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes.anyOtherError", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeObjectLabelRes__ErrorCodes_anyOtherError_xer_, &BOOLEAN_json_, &ChangeObjectLabelRes__ErrorCodes_anyOtherError_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeObjectLabelRes__ErrorCodes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeObjectLabelRes__ErrorCodes_reserved6_oer_ext_arr_[0] = {};
+const int ChangeObjectLabelRes__ErrorCodes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeObjectLabelRes__ErrorCodes_reserved6_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeObjectLabelRes__ErrorCodes_reserved6_oer_ext_arr_, 0, ChangeObjectLabelRes__ErrorCodes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t ChangeObjectLabelRes__ErrorCodes_reserved6_descr_ = { "@IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes.reserved6", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeObjectLabelRes__ErrorCodes_reserved6_xer_, &BOOLEAN_json_, &ChangeObjectLabelRes__ErrorCodes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeObjectLabelRes__ErrorCodes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeObjectLabelRes__ErrorCodes_reserved7_oer_ext_arr_[0] = {};
+const int ChangeObjectLabelRes__ErrorCodes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeObjectLabelRes__ErrorCodes_reserved7_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangeObjectLabelRes__ErrorCodes_reserved7_oer_ext_arr_, 0, ChangeObjectLabelRes__ErrorCodes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ChangeObjectLabelRes__ErrorCodes_reserved7_descr_ = { "@IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes.reserved7", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangeObjectLabelRes__ErrorCodes_reserved7_xer_, &BOOLEAN_json_, &ChangeObjectLabelRes__ErrorCodes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeObjectLabelRes__ErrorCodes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangeObjectLabelRes__ErrorCodes
+const TTCN_Typedescriptor_t ChangeObjectLabelRes__ErrorCodes_descr_ = { "@IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes", NULL, &ChangeObjectLabelRes__ErrorCodes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeObjectLabelRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeObjectLabelRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeObjectLabelRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.ChangeObjectLabelRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangeObjectLabelRes_vtfunction_xer_, &INTEGER_json_, &ChangeObjectLabelRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeObjectLabelRes_reserved3_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeObjectLabelRes_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeObjectLabelRes_reserved3_oer_ext_arr_[0] = {};
+const int ChangeObjectLabelRes_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeObjectLabelRes_reserved3_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeObjectLabelRes_reserved3_oer_ext_arr_, 0, ChangeObjectLabelRes_reserved3_oer_p_};
+const TTCN_Typedescriptor_t ChangeObjectLabelRes_reserved3_descr_ = { "@IsobusVTMessageTypes.ChangeObjectLabelRes.reserved3", &OCTETSTRING_ber_, &ChangeObjectLabelRes_reserved3_raw_, &OCTETSTRING_text_, &ChangeObjectLabelRes_reserved3_xer_, &OCTETSTRING_json_, &ChangeObjectLabelRes_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeObjectLabelRes_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeObjectLabelRes_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeObjectLabelRes_reserved4_oer_ext_arr_[0] = {};
+const int ChangeObjectLabelRes_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeObjectLabelRes_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeObjectLabelRes_reserved4_oer_ext_arr_, 0, ChangeObjectLabelRes_reserved4_oer_p_};
+const TTCN_Typedescriptor_t ChangeObjectLabelRes_reserved4_descr_ = { "@IsobusVTMessageTypes.ChangeObjectLabelRes.reserved4", &OCTETSTRING_ber_, &ChangeObjectLabelRes_reserved4_raw_, &OCTETSTRING_text_, &ChangeObjectLabelRes_reserved4_xer_, &OCTETSTRING_json_, &ChangeObjectLabelRes_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeObjectLabelRes_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeObjectLabelRes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeObjectLabelRes_reserved5_oer_ext_arr_[0] = {};
+const int ChangeObjectLabelRes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeObjectLabelRes_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeObjectLabelRes_reserved5_oer_ext_arr_, 0, ChangeObjectLabelRes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t ChangeObjectLabelRes_reserved5_descr_ = { "@IsobusVTMessageTypes.ChangeObjectLabelRes.reserved5", &OCTETSTRING_ber_, &ChangeObjectLabelRes_reserved5_raw_, &OCTETSTRING_text_, &ChangeObjectLabelRes_reserved5_xer_, &OCTETSTRING_json_, &ChangeObjectLabelRes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeObjectLabelRes_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeObjectLabelRes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeObjectLabelRes_reserved6_oer_ext_arr_[0] = {};
+const int ChangeObjectLabelRes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeObjectLabelRes_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeObjectLabelRes_reserved6_oer_ext_arr_, 0, ChangeObjectLabelRes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t ChangeObjectLabelRes_reserved6_descr_ = { "@IsobusVTMessageTypes.ChangeObjectLabelRes.reserved6", &OCTETSTRING_ber_, &ChangeObjectLabelRes_reserved6_raw_, &OCTETSTRING_text_, &ChangeObjectLabelRes_reserved6_xer_, &OCTETSTRING_json_, &ChangeObjectLabelRes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeObjectLabelRes_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeObjectLabelRes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeObjectLabelRes_reserved7_oer_ext_arr_[0] = {};
+const int ChangeObjectLabelRes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeObjectLabelRes_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeObjectLabelRes_reserved7_oer_ext_arr_, 0, ChangeObjectLabelRes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ChangeObjectLabelRes_reserved7_descr_ = { "@IsobusVTMessageTypes.ChangeObjectLabelRes.reserved7", &OCTETSTRING_ber_, &ChangeObjectLabelRes_reserved7_raw_, &OCTETSTRING_text_, &ChangeObjectLabelRes_reserved7_xer_, &OCTETSTRING_json_, &ChangeObjectLabelRes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeObjectLabelRes_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangeObjectLabelRes_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangeObjectLabelRes_reserved8_oer_ext_arr_[0] = {};
+const int ChangeObjectLabelRes_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangeObjectLabelRes_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangeObjectLabelRes_reserved8_oer_ext_arr_, 0, ChangeObjectLabelRes_reserved8_oer_p_};
+const TTCN_Typedescriptor_t ChangeObjectLabelRes_reserved8_descr_ = { "@IsobusVTMessageTypes.ChangeObjectLabelRes.reserved8", &OCTETSTRING_ber_, &ChangeObjectLabelRes_reserved8_raw_, &OCTETSTRING_text_, &ChangeObjectLabelRes_reserved8_xer_, &OCTETSTRING_json_, &ChangeObjectLabelRes_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeObjectLabelRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangeObjectLabelRes
+const TTCN_Typedescriptor_t ChangeObjectLabelRes_descr_ = { "@IsobusVTMessageTypes.ChangeObjectLabelRes", NULL, &ChangeObjectLabelRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeObjectLabelReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeObjectLabelReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeObjectLabelReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.ChangeObjectLabelReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangeObjectLabelReq_vtfunction_xer_, &INTEGER_json_, &ChangeObjectLabelReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeObjectLabelReq_objectIDofObjectToAssociateLabelWith_xer_ = { {"objectIDofObjectToAssociateLabelWith>\n", "objectIDofObjectToAssociateLabelWith>\n"}, {38, 38}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeObjectLabelReq_objectIDofObjectToAssociateLabelWith_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeObjectLabelReq_objectIDofObjectToAssociateLabelWith_descr_ = { "@IsobusVTMessageTypes.ChangeObjectLabelReq.objectIDofObjectToAssociateLabelWith", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ChangeObjectLabelReq_objectIDofObjectToAssociateLabelWith_xer_, &INTEGER_json_, &ChangeObjectLabelReq_objectIDofObjectToAssociateLabelWith_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeObjectLabelReq_objectIDofAStringVariableObjectThatContainsTheLabelString_xer_ = { {"objectIDofAStringVariableObjectThatContainsTheLabelString>\n", "objectIDofAStringVariableObjectThatContainsTheLabelString>\n"}, {59, 59}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeObjectLabelReq_objectIDofAStringVariableObjectThatContainsTheLabelString_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeObjectLabelReq_objectIDofAStringVariableObjectThatContainsTheLabelString_descr_ = { "@IsobusVTMessageTypes.ChangeObjectLabelReq.objectIDofAStringVariableObjectThatContainsTheLabelString", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ChangeObjectLabelReq_objectIDofAStringVariableObjectThatContainsTheLabelString_xer_, &INTEGER_json_, &ChangeObjectLabelReq_objectIDofAStringVariableObjectThatContainsTheLabelString_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeObjectLabelReq_fontType_xer_ = { {"fontType>\n", "fontType>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeObjectLabelReq_fontType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeObjectLabelReq_fontType_descr_ = { "@IsobusVTMessageTypes.ChangeObjectLabelReq.fontType", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangeObjectLabelReq_fontType_xer_, &INTEGER_json_, &ChangeObjectLabelReq_fontType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeObjectLabelReq_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel_xer_ = { {"objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel>\n", "objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel>\n"}, {68, 68}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeObjectLabelReq_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeObjectLabelReq_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel_descr_ = { "@IsobusVTMessageTypes.ChangeObjectLabelReq.objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ChangeObjectLabelReq_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel_xer_, &INTEGER_json_, &ChangeObjectLabelReq_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeObjectLabelReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangeObjectLabelReq
+const TTCN_Typedescriptor_t ChangeObjectLabelReq_descr_ = { "@IsobusVTMessageTypes.ChangeObjectLabelReq", NULL, &ChangeObjectLabelReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangePolygonPointRes__ErrorCodes_invalidObjectID_xer_ = { {"invalidObjectID>\n", "invalidObjectID>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangePolygonPointRes__ErrorCodes_invalidObjectID_oer_ext_arr_[0] = {};
+const int ChangePolygonPointRes__ErrorCodes_invalidObjectID_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangePolygonPointRes__ErrorCodes_invalidObjectID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangePolygonPointRes__ErrorCodes_invalidObjectID_oer_ext_arr_, 0, ChangePolygonPointRes__ErrorCodes_invalidObjectID_oer_p_};
+const TTCN_Typedescriptor_t ChangePolygonPointRes__ErrorCodes_invalidObjectID_descr_ = { "@IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes.invalidObjectID", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangePolygonPointRes__ErrorCodes_invalidObjectID_xer_, &BOOLEAN_json_, &ChangePolygonPointRes__ErrorCodes_invalidObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangePolygonPointRes__ErrorCodes_invalidPointIndex_xer_ = { {"invalidPointIndex>\n", "invalidPointIndex>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangePolygonPointRes__ErrorCodes_invalidPointIndex_oer_ext_arr_[0] = {};
+const int ChangePolygonPointRes__ErrorCodes_invalidPointIndex_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangePolygonPointRes__ErrorCodes_invalidPointIndex_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangePolygonPointRes__ErrorCodes_invalidPointIndex_oer_ext_arr_, 0, ChangePolygonPointRes__ErrorCodes_invalidPointIndex_oer_p_};
+const TTCN_Typedescriptor_t ChangePolygonPointRes__ErrorCodes_invalidPointIndex_descr_ = { "@IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes.invalidPointIndex", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangePolygonPointRes__ErrorCodes_invalidPointIndex_xer_, &BOOLEAN_json_, &ChangePolygonPointRes__ErrorCodes_invalidPointIndex_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangePolygonPointRes__ErrorCodes_anyOtherError_xer_ = { {"anyOtherError>\n", "anyOtherError>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangePolygonPointRes__ErrorCodes_anyOtherError_oer_ext_arr_[0] = {};
+const int ChangePolygonPointRes__ErrorCodes_anyOtherError_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangePolygonPointRes__ErrorCodes_anyOtherError_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangePolygonPointRes__ErrorCodes_anyOtherError_oer_ext_arr_, 0, ChangePolygonPointRes__ErrorCodes_anyOtherError_oer_p_};
+const TTCN_Typedescriptor_t ChangePolygonPointRes__ErrorCodes_anyOtherError_descr_ = { "@IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes.anyOtherError", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangePolygonPointRes__ErrorCodes_anyOtherError_xer_, &BOOLEAN_json_, &ChangePolygonPointRes__ErrorCodes_anyOtherError_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangePolygonPointRes__ErrorCodes_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangePolygonPointRes__ErrorCodes_reserved3_oer_ext_arr_[0] = {};
+const int ChangePolygonPointRes__ErrorCodes_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangePolygonPointRes__ErrorCodes_reserved3_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangePolygonPointRes__ErrorCodes_reserved3_oer_ext_arr_, 0, ChangePolygonPointRes__ErrorCodes_reserved3_oer_p_};
+const TTCN_Typedescriptor_t ChangePolygonPointRes__ErrorCodes_reserved3_descr_ = { "@IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes.reserved3", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangePolygonPointRes__ErrorCodes_reserved3_xer_, &BOOLEAN_json_, &ChangePolygonPointRes__ErrorCodes_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangePolygonPointRes__ErrorCodes_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangePolygonPointRes__ErrorCodes_reserved4_oer_ext_arr_[0] = {};
+const int ChangePolygonPointRes__ErrorCodes_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangePolygonPointRes__ErrorCodes_reserved4_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangePolygonPointRes__ErrorCodes_reserved4_oer_ext_arr_, 0, ChangePolygonPointRes__ErrorCodes_reserved4_oer_p_};
+const TTCN_Typedescriptor_t ChangePolygonPointRes__ErrorCodes_reserved4_descr_ = { "@IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes.reserved4", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangePolygonPointRes__ErrorCodes_reserved4_xer_, &BOOLEAN_json_, &ChangePolygonPointRes__ErrorCodes_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangePolygonPointRes__ErrorCodes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangePolygonPointRes__ErrorCodes_reserved5_oer_ext_arr_[0] = {};
+const int ChangePolygonPointRes__ErrorCodes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangePolygonPointRes__ErrorCodes_reserved5_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangePolygonPointRes__ErrorCodes_reserved5_oer_ext_arr_, 0, ChangePolygonPointRes__ErrorCodes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t ChangePolygonPointRes__ErrorCodes_reserved5_descr_ = { "@IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes.reserved5", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangePolygonPointRes__ErrorCodes_reserved5_xer_, &BOOLEAN_json_, &ChangePolygonPointRes__ErrorCodes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangePolygonPointRes__ErrorCodes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangePolygonPointRes__ErrorCodes_reserved6_oer_ext_arr_[0] = {};
+const int ChangePolygonPointRes__ErrorCodes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangePolygonPointRes__ErrorCodes_reserved6_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangePolygonPointRes__ErrorCodes_reserved6_oer_ext_arr_, 0, ChangePolygonPointRes__ErrorCodes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t ChangePolygonPointRes__ErrorCodes_reserved6_descr_ = { "@IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes.reserved6", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangePolygonPointRes__ErrorCodes_reserved6_xer_, &BOOLEAN_json_, &ChangePolygonPointRes__ErrorCodes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangePolygonPointRes__ErrorCodes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangePolygonPointRes__ErrorCodes_reserved7_oer_ext_arr_[0] = {};
+const int ChangePolygonPointRes__ErrorCodes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangePolygonPointRes__ErrorCodes_reserved7_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangePolygonPointRes__ErrorCodes_reserved7_oer_ext_arr_, 0, ChangePolygonPointRes__ErrorCodes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ChangePolygonPointRes__ErrorCodes_reserved7_descr_ = { "@IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes.reserved7", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangePolygonPointRes__ErrorCodes_reserved7_xer_, &BOOLEAN_json_, &ChangePolygonPointRes__ErrorCodes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangePolygonPointRes__ErrorCodes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangePolygonPointRes__ErrorCodes
+const TTCN_Typedescriptor_t ChangePolygonPointRes__ErrorCodes_descr_ = { "@IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes", NULL, &ChangePolygonPointRes__ErrorCodes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangePolygonPointRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangePolygonPointRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangePolygonPointRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.ChangePolygonPointRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangePolygonPointRes_vtfunction_xer_, &INTEGER_json_, &ChangePolygonPointRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangePolygonPointRes_objectIDofTheOutputPolygonObjectToChange_xer_ = { {"objectIDofTheOutputPolygonObjectToChange>\n", "objectIDofTheOutputPolygonObjectToChange>\n"}, {42, 42}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangePolygonPointRes_objectIDofTheOutputPolygonObjectToChange_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangePolygonPointRes_objectIDofTheOutputPolygonObjectToChange_descr_ = { "@IsobusVTMessageTypes.ChangePolygonPointRes.objectIDofTheOutputPolygonObjectToChange", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ChangePolygonPointRes_objectIDofTheOutputPolygonObjectToChange_xer_, &INTEGER_json_, &ChangePolygonPointRes_objectIDofTheOutputPolygonObjectToChange_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangePolygonPointRes_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangePolygonPointRes_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangePolygonPointRes_reserved4_oer_ext_arr_[0] = {};
+const int ChangePolygonPointRes_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangePolygonPointRes_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangePolygonPointRes_reserved4_oer_ext_arr_, 0, ChangePolygonPointRes_reserved4_oer_p_};
+const TTCN_Typedescriptor_t ChangePolygonPointRes_reserved4_descr_ = { "@IsobusVTMessageTypes.ChangePolygonPointRes.reserved4", &OCTETSTRING_ber_, &ChangePolygonPointRes_reserved4_raw_, &OCTETSTRING_text_, &ChangePolygonPointRes_reserved4_xer_, &OCTETSTRING_json_, &ChangePolygonPointRes_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangePolygonPointRes_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangePolygonPointRes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangePolygonPointRes_reserved5_oer_ext_arr_[0] = {};
+const int ChangePolygonPointRes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangePolygonPointRes_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangePolygonPointRes_reserved5_oer_ext_arr_, 0, ChangePolygonPointRes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t ChangePolygonPointRes_reserved5_descr_ = { "@IsobusVTMessageTypes.ChangePolygonPointRes.reserved5", &OCTETSTRING_ber_, &ChangePolygonPointRes_reserved5_raw_, &OCTETSTRING_text_, &ChangePolygonPointRes_reserved5_xer_, &OCTETSTRING_json_, &ChangePolygonPointRes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangePolygonPointRes_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangePolygonPointRes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangePolygonPointRes_reserved6_oer_ext_arr_[0] = {};
+const int ChangePolygonPointRes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangePolygonPointRes_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangePolygonPointRes_reserved6_oer_ext_arr_, 0, ChangePolygonPointRes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t ChangePolygonPointRes_reserved6_descr_ = { "@IsobusVTMessageTypes.ChangePolygonPointRes.reserved6", &OCTETSTRING_ber_, &ChangePolygonPointRes_reserved6_raw_, &OCTETSTRING_text_, &ChangePolygonPointRes_reserved6_xer_, &OCTETSTRING_json_, &ChangePolygonPointRes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangePolygonPointRes_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangePolygonPointRes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangePolygonPointRes_reserved7_oer_ext_arr_[0] = {};
+const int ChangePolygonPointRes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangePolygonPointRes_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangePolygonPointRes_reserved7_oer_ext_arr_, 0, ChangePolygonPointRes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ChangePolygonPointRes_reserved7_descr_ = { "@IsobusVTMessageTypes.ChangePolygonPointRes.reserved7", &OCTETSTRING_ber_, &ChangePolygonPointRes_reserved7_raw_, &OCTETSTRING_text_, &ChangePolygonPointRes_reserved7_xer_, &OCTETSTRING_json_, &ChangePolygonPointRes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangePolygonPointRes_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangePolygonPointRes_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangePolygonPointRes_reserved8_oer_ext_arr_[0] = {};
+const int ChangePolygonPointRes_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangePolygonPointRes_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangePolygonPointRes_reserved8_oer_ext_arr_, 0, ChangePolygonPointRes_reserved8_oer_p_};
+const TTCN_Typedescriptor_t ChangePolygonPointRes_reserved8_descr_ = { "@IsobusVTMessageTypes.ChangePolygonPointRes.reserved8", &OCTETSTRING_ber_, &ChangePolygonPointRes_reserved8_raw_, &OCTETSTRING_text_, &ChangePolygonPointRes_reserved8_xer_, &OCTETSTRING_json_, &ChangePolygonPointRes_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangePolygonPointRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangePolygonPointRes
+const TTCN_Typedescriptor_t ChangePolygonPointRes_descr_ = { "@IsobusVTMessageTypes.ChangePolygonPointRes", NULL, &ChangePolygonPointRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangePolygonPointReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangePolygonPointReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangePolygonPointReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.ChangePolygonPointReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangePolygonPointReq_vtfunction_xer_, &INTEGER_json_, &ChangePolygonPointReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangePolygonPointReq_objectIDofTheOutputPolygonObjectToChange_xer_ = { {"objectIDofTheOutputPolygonObjectToChange>\n", "objectIDofTheOutputPolygonObjectToChange>\n"}, {42, 42}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangePolygonPointReq_objectIDofTheOutputPolygonObjectToChange_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangePolygonPointReq_objectIDofTheOutputPolygonObjectToChange_descr_ = { "@IsobusVTMessageTypes.ChangePolygonPointReq.objectIDofTheOutputPolygonObjectToChange", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ChangePolygonPointReq_objectIDofTheOutputPolygonObjectToChange_xer_, &INTEGER_json_, &ChangePolygonPointReq_objectIDofTheOutputPolygonObjectToChange_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangePolygonPointReq_pointIndexOfThePointToReplace_xer_ = { {"pointIndexOfThePointToReplace>\n", "pointIndexOfThePointToReplace>\n"}, {31, 31}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangePolygonPointReq_pointIndexOfThePointToReplace_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangePolygonPointReq_pointIndexOfThePointToReplace_descr_ = { "@IsobusVTMessageTypes.ChangePolygonPointReq.pointIndexOfThePointToReplace", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangePolygonPointReq_pointIndexOfThePointToReplace_xer_, &INTEGER_json_, &ChangePolygonPointReq_pointIndexOfThePointToReplace_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangePolygonPointReq_newXposition_xer_ = { {"newXposition>\n", "newXposition>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangePolygonPointReq_newXposition_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangePolygonPointReq_newXposition_descr_ = { "@IsobusVTMessageTypes.ChangePolygonPointReq.newXposition", &INTEGER_ber_, &IsobusMessageTypes::INT2_raw_, &INTEGER_text_, &ChangePolygonPointReq_newXposition_xer_, &INTEGER_json_, &ChangePolygonPointReq_newXposition_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangePolygonPointReq_newYposition_xer_ = { {"newYposition>\n", "newYposition>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangePolygonPointReq_newYposition_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangePolygonPointReq_newYposition_descr_ = { "@IsobusVTMessageTypes.ChangePolygonPointReq.newYposition", &INTEGER_ber_, &IsobusMessageTypes::INT2_raw_, &INTEGER_text_, &ChangePolygonPointReq_newYposition_xer_, &INTEGER_json_, &ChangePolygonPointReq_newYposition_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangePolygonPointReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangePolygonPointReq
+const TTCN_Typedescriptor_t ChangePolygonPointReq_descr_ = { "@IsobusVTMessageTypes.ChangePolygonPointReq", NULL, &ChangePolygonPointReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangePolygonScaleRes__ErrorCodes_invalidObjectID_xer_ = { {"invalidObjectID>\n", "invalidObjectID>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangePolygonScaleRes__ErrorCodes_invalidObjectID_oer_ext_arr_[0] = {};
+const int ChangePolygonScaleRes__ErrorCodes_invalidObjectID_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangePolygonScaleRes__ErrorCodes_invalidObjectID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangePolygonScaleRes__ErrorCodes_invalidObjectID_oer_ext_arr_, 0, ChangePolygonScaleRes__ErrorCodes_invalidObjectID_oer_p_};
+const TTCN_Typedescriptor_t ChangePolygonScaleRes__ErrorCodes_invalidObjectID_descr_ = { "@IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes.invalidObjectID", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangePolygonScaleRes__ErrorCodes_invalidObjectID_xer_, &BOOLEAN_json_, &ChangePolygonScaleRes__ErrorCodes_invalidObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangePolygonScaleRes__ErrorCodes_reserved1_xer_ = { {"reserved1>\n", "reserved1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangePolygonScaleRes__ErrorCodes_reserved1_oer_ext_arr_[0] = {};
+const int ChangePolygonScaleRes__ErrorCodes_reserved1_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangePolygonScaleRes__ErrorCodes_reserved1_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangePolygonScaleRes__ErrorCodes_reserved1_oer_ext_arr_, 0, ChangePolygonScaleRes__ErrorCodes_reserved1_oer_p_};
+const TTCN_Typedescriptor_t ChangePolygonScaleRes__ErrorCodes_reserved1_descr_ = { "@IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes.reserved1", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangePolygonScaleRes__ErrorCodes_reserved1_xer_, &BOOLEAN_json_, &ChangePolygonScaleRes__ErrorCodes_reserved1_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangePolygonScaleRes__ErrorCodes_reserved2_xer_ = { {"reserved2>\n", "reserved2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangePolygonScaleRes__ErrorCodes_reserved2_oer_ext_arr_[0] = {};
+const int ChangePolygonScaleRes__ErrorCodes_reserved2_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangePolygonScaleRes__ErrorCodes_reserved2_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangePolygonScaleRes__ErrorCodes_reserved2_oer_ext_arr_, 0, ChangePolygonScaleRes__ErrorCodes_reserved2_oer_p_};
+const TTCN_Typedescriptor_t ChangePolygonScaleRes__ErrorCodes_reserved2_descr_ = { "@IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes.reserved2", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangePolygonScaleRes__ErrorCodes_reserved2_xer_, &BOOLEAN_json_, &ChangePolygonScaleRes__ErrorCodes_reserved2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangePolygonScaleRes__ErrorCodes_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangePolygonScaleRes__ErrorCodes_reserved3_oer_ext_arr_[0] = {};
+const int ChangePolygonScaleRes__ErrorCodes_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangePolygonScaleRes__ErrorCodes_reserved3_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangePolygonScaleRes__ErrorCodes_reserved3_oer_ext_arr_, 0, ChangePolygonScaleRes__ErrorCodes_reserved3_oer_p_};
+const TTCN_Typedescriptor_t ChangePolygonScaleRes__ErrorCodes_reserved3_descr_ = { "@IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes.reserved3", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangePolygonScaleRes__ErrorCodes_reserved3_xer_, &BOOLEAN_json_, &ChangePolygonScaleRes__ErrorCodes_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangePolygonScaleRes__ErrorCodes_anyOtherError_xer_ = { {"anyOtherError>\n", "anyOtherError>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangePolygonScaleRes__ErrorCodes_anyOtherError_oer_ext_arr_[0] = {};
+const int ChangePolygonScaleRes__ErrorCodes_anyOtherError_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangePolygonScaleRes__ErrorCodes_anyOtherError_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangePolygonScaleRes__ErrorCodes_anyOtherError_oer_ext_arr_, 0, ChangePolygonScaleRes__ErrorCodes_anyOtherError_oer_p_};
+const TTCN_Typedescriptor_t ChangePolygonScaleRes__ErrorCodes_anyOtherError_descr_ = { "@IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes.anyOtherError", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangePolygonScaleRes__ErrorCodes_anyOtherError_xer_, &BOOLEAN_json_, &ChangePolygonScaleRes__ErrorCodes_anyOtherError_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangePolygonScaleRes__ErrorCodes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangePolygonScaleRes__ErrorCodes_reserved5_oer_ext_arr_[0] = {};
+const int ChangePolygonScaleRes__ErrorCodes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangePolygonScaleRes__ErrorCodes_reserved5_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangePolygonScaleRes__ErrorCodes_reserved5_oer_ext_arr_, 0, ChangePolygonScaleRes__ErrorCodes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t ChangePolygonScaleRes__ErrorCodes_reserved5_descr_ = { "@IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes.reserved5", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangePolygonScaleRes__ErrorCodes_reserved5_xer_, &BOOLEAN_json_, &ChangePolygonScaleRes__ErrorCodes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangePolygonScaleRes__ErrorCodes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangePolygonScaleRes__ErrorCodes_reserved6_oer_ext_arr_[0] = {};
+const int ChangePolygonScaleRes__ErrorCodes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangePolygonScaleRes__ErrorCodes_reserved6_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangePolygonScaleRes__ErrorCodes_reserved6_oer_ext_arr_, 0, ChangePolygonScaleRes__ErrorCodes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t ChangePolygonScaleRes__ErrorCodes_reserved6_descr_ = { "@IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes.reserved6", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangePolygonScaleRes__ErrorCodes_reserved6_xer_, &BOOLEAN_json_, &ChangePolygonScaleRes__ErrorCodes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangePolygonScaleRes__ErrorCodes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangePolygonScaleRes__ErrorCodes_reserved7_oer_ext_arr_[0] = {};
+const int ChangePolygonScaleRes__ErrorCodes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangePolygonScaleRes__ErrorCodes_reserved7_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ChangePolygonScaleRes__ErrorCodes_reserved7_oer_ext_arr_, 0, ChangePolygonScaleRes__ErrorCodes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ChangePolygonScaleRes__ErrorCodes_reserved7_descr_ = { "@IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes.reserved7", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ChangePolygonScaleRes__ErrorCodes_reserved7_xer_, &BOOLEAN_json_, &ChangePolygonScaleRes__ErrorCodes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangePolygonScaleRes__ErrorCodes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangePolygonScaleRes__ErrorCodes
+const TTCN_Typedescriptor_t ChangePolygonScaleRes__ErrorCodes_descr_ = { "@IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes", NULL, &ChangePolygonScaleRes__ErrorCodes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangePolygonScaleRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangePolygonScaleRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangePolygonScaleRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.ChangePolygonScaleRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangePolygonScaleRes_vtfunction_xer_, &INTEGER_json_, &ChangePolygonScaleRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangePolygonScaleRes_objectIDofaOutputPolygonObjectToScale_xer_ = { {"objectIDofaOutputPolygonObjectToScale>\n", "objectIDofaOutputPolygonObjectToScale>\n"}, {39, 39}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangePolygonScaleRes_objectIDofaOutputPolygonObjectToScale_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangePolygonScaleRes_objectIDofaOutputPolygonObjectToScale_descr_ = { "@IsobusVTMessageTypes.ChangePolygonScaleRes.objectIDofaOutputPolygonObjectToScale", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ChangePolygonScaleRes_objectIDofaOutputPolygonObjectToScale_xer_, &INTEGER_json_, &ChangePolygonScaleRes_objectIDofaOutputPolygonObjectToScale_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangePolygonScaleRes_newWidthAttribute_xer_ = { {"newWidthAttribute>\n", "newWidthAttribute>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangePolygonScaleRes_newWidthAttribute_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangePolygonScaleRes_newWidthAttribute_descr_ = { "@IsobusVTMessageTypes.ChangePolygonScaleRes.newWidthAttribute", &INTEGER_ber_, &IsobusMessageTypes::INT2_raw_, &INTEGER_text_, &ChangePolygonScaleRes_newWidthAttribute_xer_, &INTEGER_json_, &ChangePolygonScaleRes_newWidthAttribute_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangePolygonScaleRes_newHeightAttribute_xer_ = { {"newHeightAttribute>\n", "newHeightAttribute>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangePolygonScaleRes_newHeightAttribute_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangePolygonScaleRes_newHeightAttribute_descr_ = { "@IsobusVTMessageTypes.ChangePolygonScaleRes.newHeightAttribute", &INTEGER_ber_, &IsobusMessageTypes::INT2_raw_, &INTEGER_text_, &ChangePolygonScaleRes_newHeightAttribute_xer_, &INTEGER_json_, &ChangePolygonScaleRes_newHeightAttribute_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangePolygonScaleRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangePolygonScaleRes
+const TTCN_Typedescriptor_t ChangePolygonScaleRes_descr_ = { "@IsobusVTMessageTypes.ChangePolygonScaleRes", NULL, &ChangePolygonScaleRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangePolygonScaleReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangePolygonScaleReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangePolygonScaleReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.ChangePolygonScaleReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ChangePolygonScaleReq_vtfunction_xer_, &INTEGER_json_, &ChangePolygonScaleReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangePolygonScaleReq_objectIDofaOutputPolygonObjectToScale_xer_ = { {"objectIDofaOutputPolygonObjectToScale>\n", "objectIDofaOutputPolygonObjectToScale>\n"}, {39, 39}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangePolygonScaleReq_objectIDofaOutputPolygonObjectToScale_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangePolygonScaleReq_objectIDofaOutputPolygonObjectToScale_descr_ = { "@IsobusVTMessageTypes.ChangePolygonScaleReq.objectIDofaOutputPolygonObjectToScale", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ChangePolygonScaleReq_objectIDofaOutputPolygonObjectToScale_xer_, &INTEGER_json_, &ChangePolygonScaleReq_objectIDofaOutputPolygonObjectToScale_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangePolygonScaleReq_newWidthAttribute_xer_ = { {"newWidthAttribute>\n", "newWidthAttribute>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangePolygonScaleReq_newWidthAttribute_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangePolygonScaleReq_newWidthAttribute_descr_ = { "@IsobusVTMessageTypes.ChangePolygonScaleReq.newWidthAttribute", &INTEGER_ber_, &IsobusMessageTypes::INT2_raw_, &INTEGER_text_, &ChangePolygonScaleReq_newWidthAttribute_xer_, &INTEGER_json_, &ChangePolygonScaleReq_newWidthAttribute_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangePolygonScaleReq_newHeightAttribute_xer_ = { {"newHeightAttribute>\n", "newHeightAttribute>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangePolygonScaleReq_newHeightAttribute_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangePolygonScaleReq_newHeightAttribute_descr_ = { "@IsobusVTMessageTypes.ChangePolygonScaleReq.newHeightAttribute", &INTEGER_ber_, &IsobusMessageTypes::INT2_raw_, &INTEGER_text_, &ChangePolygonScaleReq_newHeightAttribute_xer_, &INTEGER_json_, &ChangePolygonScaleReq_newHeightAttribute_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangePolygonScaleReq_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ChangePolygonScaleReq_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ChangePolygonScaleReq_reserved8_oer_ext_arr_[0] = {};
+const int ChangePolygonScaleReq_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ChangePolygonScaleReq_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ChangePolygonScaleReq_reserved8_oer_ext_arr_, 0, ChangePolygonScaleReq_reserved8_oer_p_};
+const TTCN_Typedescriptor_t ChangePolygonScaleReq_reserved8_descr_ = { "@IsobusVTMessageTypes.ChangePolygonScaleReq.reserved8", &OCTETSTRING_ber_, &ChangePolygonScaleReq_reserved8_raw_, &OCTETSTRING_text_, &ChangePolygonScaleReq_reserved8_xer_, &OCTETSTRING_json_, &ChangePolygonScaleReq_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangePolygonScaleReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangePolygonScaleReq
+const TTCN_Typedescriptor_t ChangePolygonScaleReq_descr_ = { "@IsobusVTMessageTypes.ChangePolygonScaleReq", NULL, &ChangePolygonScaleReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GraphicsContextRes__ErrorCodes_invalidObjectIDorObjectIsNotAGraphics_xer_ = { {"invalidObjectIDorObjectIsNotAGraphics>\n", "invalidObjectIDorObjectIsNotAGraphics>\n"}, {39, 39}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GraphicsContextRes__ErrorCodes_invalidObjectIDorObjectIsNotAGraphics_oer_ext_arr_[0] = {};
+const int GraphicsContextRes__ErrorCodes_invalidObjectIDorObjectIsNotAGraphics_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GraphicsContextRes__ErrorCodes_invalidObjectIDorObjectIsNotAGraphics_oer_ = { -1, TRUE, -1, FALSE, 0, 0, GraphicsContextRes__ErrorCodes_invalidObjectIDorObjectIsNotAGraphics_oer_ext_arr_, 0, GraphicsContextRes__ErrorCodes_invalidObjectIDorObjectIsNotAGraphics_oer_p_};
+const TTCN_Typedescriptor_t GraphicsContextRes__ErrorCodes_invalidObjectIDorObjectIsNotAGraphics_descr_ = { "@IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes.invalidObjectIDorObjectIsNotAGraphics", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &GraphicsContextRes__ErrorCodes_invalidObjectIDorObjectIsNotAGraphics_xer_, &BOOLEAN_json_, &GraphicsContextRes__ErrorCodes_invalidObjectIDorObjectIsNotAGraphics_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GraphicsContextRes__ErrorCodes_InvalidSubCommandID_xer_ = { {"InvalidSubCommandID>\n", "InvalidSubCommandID>\n"}, {21, 21}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GraphicsContextRes__ErrorCodes_InvalidSubCommandID_oer_ext_arr_[0] = {};
+const int GraphicsContextRes__ErrorCodes_InvalidSubCommandID_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GraphicsContextRes__ErrorCodes_InvalidSubCommandID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, GraphicsContextRes__ErrorCodes_InvalidSubCommandID_oer_ext_arr_, 0, GraphicsContextRes__ErrorCodes_InvalidSubCommandID_oer_p_};
+const TTCN_Typedescriptor_t GraphicsContextRes__ErrorCodes_InvalidSubCommandID_descr_ = { "@IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes.InvalidSubCommandID", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &GraphicsContextRes__ErrorCodes_InvalidSubCommandID_xer_, &BOOLEAN_json_, &GraphicsContextRes__ErrorCodes_InvalidSubCommandID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GraphicsContextRes__ErrorCodes_InvalidParameter_xer_ = { {"InvalidParameter>\n", "InvalidParameter>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GraphicsContextRes__ErrorCodes_InvalidParameter_oer_ext_arr_[0] = {};
+const int GraphicsContextRes__ErrorCodes_InvalidParameter_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GraphicsContextRes__ErrorCodes_InvalidParameter_oer_ = { -1, TRUE, -1, FALSE, 0, 0, GraphicsContextRes__ErrorCodes_InvalidParameter_oer_ext_arr_, 0, GraphicsContextRes__ErrorCodes_InvalidParameter_oer_p_};
+const TTCN_Typedescriptor_t GraphicsContextRes__ErrorCodes_InvalidParameter_descr_ = { "@IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes.InvalidParameter", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &GraphicsContextRes__ErrorCodes_InvalidParameter_xer_, &BOOLEAN_json_, &GraphicsContextRes__ErrorCodes_InvalidParameter_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GraphicsContextRes__ErrorCodes_SubCommandWillProduceInvalidResults_xer_ = { {"SubCommandWillProduceInvalidResults>\n", "SubCommandWillProduceInvalidResults>\n"}, {37, 37}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GraphicsContextRes__ErrorCodes_SubCommandWillProduceInvalidResults_oer_ext_arr_[0] = {};
+const int GraphicsContextRes__ErrorCodes_SubCommandWillProduceInvalidResults_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GraphicsContextRes__ErrorCodes_SubCommandWillProduceInvalidResults_oer_ = { -1, TRUE, -1, FALSE, 0, 0, GraphicsContextRes__ErrorCodes_SubCommandWillProduceInvalidResults_oer_ext_arr_, 0, GraphicsContextRes__ErrorCodes_SubCommandWillProduceInvalidResults_oer_p_};
+const TTCN_Typedescriptor_t GraphicsContextRes__ErrorCodes_SubCommandWillProduceInvalidResults_descr_ = { "@IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes.SubCommandWillProduceInvalidResults", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &GraphicsContextRes__ErrorCodes_SubCommandWillProduceInvalidResults_xer_, &BOOLEAN_json_, &GraphicsContextRes__ErrorCodes_SubCommandWillProduceInvalidResults_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GraphicsContextRes__ErrorCodes_anyOtherError_xer_ = { {"anyOtherError>\n", "anyOtherError>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GraphicsContextRes__ErrorCodes_anyOtherError_oer_ext_arr_[0] = {};
+const int GraphicsContextRes__ErrorCodes_anyOtherError_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GraphicsContextRes__ErrorCodes_anyOtherError_oer_ = { -1, TRUE, -1, FALSE, 0, 0, GraphicsContextRes__ErrorCodes_anyOtherError_oer_ext_arr_, 0, GraphicsContextRes__ErrorCodes_anyOtherError_oer_p_};
+const TTCN_Typedescriptor_t GraphicsContextRes__ErrorCodes_anyOtherError_descr_ = { "@IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes.anyOtherError", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &GraphicsContextRes__ErrorCodes_anyOtherError_xer_, &BOOLEAN_json_, &GraphicsContextRes__ErrorCodes_anyOtherError_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GraphicsContextRes__ErrorCodes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GraphicsContextRes__ErrorCodes_reserved5_oer_ext_arr_[0] = {};
+const int GraphicsContextRes__ErrorCodes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GraphicsContextRes__ErrorCodes_reserved5_oer_ = { -1, TRUE, -1, FALSE, 0, 0, GraphicsContextRes__ErrorCodes_reserved5_oer_ext_arr_, 0, GraphicsContextRes__ErrorCodes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t GraphicsContextRes__ErrorCodes_reserved5_descr_ = { "@IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes.reserved5", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &GraphicsContextRes__ErrorCodes_reserved5_xer_, &BOOLEAN_json_, &GraphicsContextRes__ErrorCodes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GraphicsContextRes__ErrorCodes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GraphicsContextRes__ErrorCodes_reserved6_oer_ext_arr_[0] = {};
+const int GraphicsContextRes__ErrorCodes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GraphicsContextRes__ErrorCodes_reserved6_oer_ = { -1, TRUE, -1, FALSE, 0, 0, GraphicsContextRes__ErrorCodes_reserved6_oer_ext_arr_, 0, GraphicsContextRes__ErrorCodes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t GraphicsContextRes__ErrorCodes_reserved6_descr_ = { "@IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes.reserved6", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &GraphicsContextRes__ErrorCodes_reserved6_xer_, &BOOLEAN_json_, &GraphicsContextRes__ErrorCodes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GraphicsContextRes__ErrorCodes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GraphicsContextRes__ErrorCodes_reserved7_oer_ext_arr_[0] = {};
+const int GraphicsContextRes__ErrorCodes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GraphicsContextRes__ErrorCodes_reserved7_oer_ = { -1, TRUE, -1, FALSE, 0, 0, GraphicsContextRes__ErrorCodes_reserved7_oer_ext_arr_, 0, GraphicsContextRes__ErrorCodes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t GraphicsContextRes__ErrorCodes_reserved7_descr_ = { "@IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes.reserved7", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &GraphicsContextRes__ErrorCodes_reserved7_xer_, &BOOLEAN_json_, &GraphicsContextRes__ErrorCodes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GraphicsContextRes__ErrorCodes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for GraphicsContextRes__ErrorCodes
+const TTCN_Typedescriptor_t GraphicsContextRes__ErrorCodes_descr_ = { "@IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes", NULL, &GraphicsContextRes__ErrorCodes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GraphicsContextRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t GraphicsContextRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t GraphicsContextRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.GraphicsContextRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &GraphicsContextRes_vtfunction_xer_, &INTEGER_json_, &GraphicsContextRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GraphicsContextRes_objectIDofAGraphicsContextObject_xer_ = { {"objectIDofAGraphicsContextObject>\n", "objectIDofAGraphicsContextObject>\n"}, {34, 34}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t GraphicsContextRes_objectIDofAGraphicsContextObject_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t GraphicsContextRes_objectIDofAGraphicsContextObject_descr_ = { "@IsobusVTMessageTypes.GraphicsContextRes.objectIDofAGraphicsContextObject", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &GraphicsContextRes_objectIDofAGraphicsContextObject_xer_, &INTEGER_json_, &GraphicsContextRes_objectIDofAGraphicsContextObject_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GraphicsContextRes_subcommandID_xer_ = { {"subcommandID>\n", "subcommandID>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t GraphicsContextRes_subcommandID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t GraphicsContextRes_subcommandID_descr_ = { "@IsobusVTMessageTypes.GraphicsContextRes.subcommandID", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &GraphicsContextRes_subcommandID_xer_, &INTEGER_json_, &GraphicsContextRes_subcommandID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GraphicsContextRes_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GraphicsContextRes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GraphicsContextRes_reserved6_oer_ext_arr_[0] = {};
+const int GraphicsContextRes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GraphicsContextRes_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GraphicsContextRes_reserved6_oer_ext_arr_, 0, GraphicsContextRes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t GraphicsContextRes_reserved6_descr_ = { "@IsobusVTMessageTypes.GraphicsContextRes.reserved6", &OCTETSTRING_ber_, &GraphicsContextRes_reserved6_raw_, &OCTETSTRING_text_, &GraphicsContextRes_reserved6_xer_, &OCTETSTRING_json_, &GraphicsContextRes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GraphicsContextRes_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GraphicsContextRes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GraphicsContextRes_reserved7_oer_ext_arr_[0] = {};
+const int GraphicsContextRes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GraphicsContextRes_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GraphicsContextRes_reserved7_oer_ext_arr_, 0, GraphicsContextRes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t GraphicsContextRes_reserved7_descr_ = { "@IsobusVTMessageTypes.GraphicsContextRes.reserved7", &OCTETSTRING_ber_, &GraphicsContextRes_reserved7_raw_, &OCTETSTRING_text_, &GraphicsContextRes_reserved7_xer_, &OCTETSTRING_json_, &GraphicsContextRes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GraphicsContextRes_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GraphicsContextRes_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GraphicsContextRes_reserved8_oer_ext_arr_[0] = {};
+const int GraphicsContextRes_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GraphicsContextRes_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GraphicsContextRes_reserved8_oer_ext_arr_, 0, GraphicsContextRes_reserved8_oer_p_};
+const TTCN_Typedescriptor_t GraphicsContextRes_reserved8_descr_ = { "@IsobusVTMessageTypes.GraphicsContextRes.reserved8", &OCTETSTRING_ber_, &GraphicsContextRes_reserved8_raw_, &OCTETSTRING_text_, &GraphicsContextRes_reserved8_xer_, &OCTETSTRING_json_, &GraphicsContextRes_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GraphicsContextRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for GraphicsContextRes
+const TTCN_Typedescriptor_t GraphicsContextRes_descr_ = { "@IsobusVTMessageTypes.GraphicsContextRes", NULL, &GraphicsContextRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SetGraphicsCursor_xPosition_xer_ = { {"xPosition>\n", "xPosition>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SetGraphicsCursor_xPosition_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SetGraphicsCursor_xPosition_descr_ = { "@IsobusVTMessageTypes.SetGraphicsCursor.xPosition", &INTEGER_ber_, &XPositionType_raw_, &INTEGER_text_, &SetGraphicsCursor_xPosition_xer_, &INTEGER_json_, &SetGraphicsCursor_xPosition_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SetGraphicsCursor_yPosition_xer_ = { {"yPosition>\n", "yPosition>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SetGraphicsCursor_yPosition_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SetGraphicsCursor_yPosition_descr_ = { "@IsobusVTMessageTypes.SetGraphicsCursor.yPosition", &INTEGER_ber_, &YPositionType_raw_, &INTEGER_text_, &SetGraphicsCursor_yPosition_xer_, &INTEGER_json_, &SetGraphicsCursor_yPosition_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SetGraphicsCursor_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for SetGraphicsCursor
+const TTCN_Typedescriptor_t SetGraphicsCursor_descr_ = { "@IsobusVTMessageTypes.SetGraphicsCursor", NULL, &SetGraphicsCursor_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       MoveGraphicsCursor_xOffset_xer_ = { {"xOffset>\n", "xOffset>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t MoveGraphicsCursor_xOffset_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t MoveGraphicsCursor_xOffset_descr_ = { "@IsobusVTMessageTypes.MoveGraphicsCursor.xOffset", &INTEGER_ber_, &XOffsetType_raw_, &INTEGER_text_, &MoveGraphicsCursor_xOffset_xer_, &INTEGER_json_, &MoveGraphicsCursor_xOffset_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       MoveGraphicsCursor_yOffset_xer_ = { {"yOffset>\n", "yOffset>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t MoveGraphicsCursor_yOffset_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t MoveGraphicsCursor_yOffset_descr_ = { "@IsobusVTMessageTypes.MoveGraphicsCursor.yOffset", &INTEGER_ber_, &YOffsetType_raw_, &INTEGER_text_, &MoveGraphicsCursor_yOffset_xer_, &INTEGER_json_, &MoveGraphicsCursor_yOffset_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t MoveGraphicsCursor_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for MoveGraphicsCursor
+const TTCN_Typedescriptor_t MoveGraphicsCursor_descr_ = { "@IsobusVTMessageTypes.MoveGraphicsCursor", NULL, &MoveGraphicsCursor_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SetForegroundColour_foregroundColor_xer_ = { {"foregroundColor>\n", "foregroundColor>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SetForegroundColour_foregroundColor_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SetForegroundColour_foregroundColor_descr_ = { "@IsobusVTMessageTypes.SetForegroundColour.foregroundColor", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &SetForegroundColour_foregroundColor_xer_, &INTEGER_json_, &SetForegroundColour_foregroundColor_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SetForegroundColour_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       SetForegroundColour_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SetForegroundColour_reserved6_oer_ext_arr_[0] = {};
+const int SetForegroundColour_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SetForegroundColour_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SetForegroundColour_reserved6_oer_ext_arr_, 0, SetForegroundColour_reserved6_oer_p_};
+const TTCN_Typedescriptor_t SetForegroundColour_reserved6_descr_ = { "@IsobusVTMessageTypes.SetForegroundColour.reserved6", &OCTETSTRING_ber_, &SetForegroundColour_reserved6_raw_, &OCTETSTRING_text_, &SetForegroundColour_reserved6_xer_, &OCTETSTRING_json_, &SetForegroundColour_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SetForegroundColour_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       SetForegroundColour_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SetForegroundColour_reserved7_oer_ext_arr_[0] = {};
+const int SetForegroundColour_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SetForegroundColour_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SetForegroundColour_reserved7_oer_ext_arr_, 0, SetForegroundColour_reserved7_oer_p_};
+const TTCN_Typedescriptor_t SetForegroundColour_reserved7_descr_ = { "@IsobusVTMessageTypes.SetForegroundColour.reserved7", &OCTETSTRING_ber_, &SetForegroundColour_reserved7_raw_, &OCTETSTRING_text_, &SetForegroundColour_reserved7_xer_, &OCTETSTRING_json_, &SetForegroundColour_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SetForegroundColour_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       SetForegroundColour_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SetForegroundColour_reserved8_oer_ext_arr_[0] = {};
+const int SetForegroundColour_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SetForegroundColour_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SetForegroundColour_reserved8_oer_ext_arr_, 0, SetForegroundColour_reserved8_oer_p_};
+const TTCN_Typedescriptor_t SetForegroundColour_reserved8_descr_ = { "@IsobusVTMessageTypes.SetForegroundColour.reserved8", &OCTETSTRING_ber_, &SetForegroundColour_reserved8_raw_, &OCTETSTRING_text_, &SetForegroundColour_reserved8_xer_, &OCTETSTRING_json_, &SetForegroundColour_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SetForegroundColour_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for SetForegroundColour
+const TTCN_Typedescriptor_t SetForegroundColour_descr_ = { "@IsobusVTMessageTypes.SetForegroundColour", NULL, &SetForegroundColour_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SetBackgroundColour_backgroundColor_xer_ = { {"backgroundColor>\n", "backgroundColor>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SetBackgroundColour_backgroundColor_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SetBackgroundColour_backgroundColor_descr_ = { "@IsobusVTMessageTypes.SetBackgroundColour.backgroundColor", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &SetBackgroundColour_backgroundColor_xer_, &INTEGER_json_, &SetBackgroundColour_backgroundColor_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SetBackgroundColour_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       SetBackgroundColour_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SetBackgroundColour_reserved6_oer_ext_arr_[0] = {};
+const int SetBackgroundColour_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SetBackgroundColour_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SetBackgroundColour_reserved6_oer_ext_arr_, 0, SetBackgroundColour_reserved6_oer_p_};
+const TTCN_Typedescriptor_t SetBackgroundColour_reserved6_descr_ = { "@IsobusVTMessageTypes.SetBackgroundColour.reserved6", &OCTETSTRING_ber_, &SetBackgroundColour_reserved6_raw_, &OCTETSTRING_text_, &SetBackgroundColour_reserved6_xer_, &OCTETSTRING_json_, &SetBackgroundColour_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SetBackgroundColour_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       SetBackgroundColour_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SetBackgroundColour_reserved7_oer_ext_arr_[0] = {};
+const int SetBackgroundColour_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SetBackgroundColour_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SetBackgroundColour_reserved7_oer_ext_arr_, 0, SetBackgroundColour_reserved7_oer_p_};
+const TTCN_Typedescriptor_t SetBackgroundColour_reserved7_descr_ = { "@IsobusVTMessageTypes.SetBackgroundColour.reserved7", &OCTETSTRING_ber_, &SetBackgroundColour_reserved7_raw_, &OCTETSTRING_text_, &SetBackgroundColour_reserved7_xer_, &OCTETSTRING_json_, &SetBackgroundColour_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SetBackgroundColour_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       SetBackgroundColour_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SetBackgroundColour_reserved8_oer_ext_arr_[0] = {};
+const int SetBackgroundColour_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SetBackgroundColour_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SetBackgroundColour_reserved8_oer_ext_arr_, 0, SetBackgroundColour_reserved8_oer_p_};
+const TTCN_Typedescriptor_t SetBackgroundColour_reserved8_descr_ = { "@IsobusVTMessageTypes.SetBackgroundColour.reserved8", &OCTETSTRING_ber_, &SetBackgroundColour_reserved8_raw_, &OCTETSTRING_text_, &SetBackgroundColour_reserved8_xer_, &OCTETSTRING_json_, &SetBackgroundColour_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SetBackgroundColour_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for SetBackgroundColour
+const TTCN_Typedescriptor_t SetBackgroundColour_descr_ = { "@IsobusVTMessageTypes.SetBackgroundColour", NULL, &SetBackgroundColour_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SetLineAttributesObjectID_objectIDofLineAttributesObject_xer_ = { {"objectIDofLineAttributesObject>\n", "objectIDofLineAttributesObject>\n"}, {32, 32}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SetLineAttributesObjectID_objectIDofLineAttributesObject_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SetLineAttributesObjectID_objectIDofLineAttributesObject_descr_ = { "@IsobusVTMessageTypes.SetLineAttributesObjectID.objectIDofLineAttributesObject", &INTEGER_ber_, &AnyObjectID_raw_, &INTEGER_text_, &SetLineAttributesObjectID_objectIDofLineAttributesObject_xer_, &INTEGER_json_, &SetLineAttributesObjectID_objectIDofLineAttributesObject_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SetLineAttributesObjectID_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       SetLineAttributesObjectID_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SetLineAttributesObjectID_reserved7_oer_ext_arr_[0] = {};
+const int SetLineAttributesObjectID_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SetLineAttributesObjectID_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SetLineAttributesObjectID_reserved7_oer_ext_arr_, 0, SetLineAttributesObjectID_reserved7_oer_p_};
+const TTCN_Typedescriptor_t SetLineAttributesObjectID_reserved7_descr_ = { "@IsobusVTMessageTypes.SetLineAttributesObjectID.reserved7", &OCTETSTRING_ber_, &SetLineAttributesObjectID_reserved7_raw_, &OCTETSTRING_text_, &SetLineAttributesObjectID_reserved7_xer_, &OCTETSTRING_json_, &SetLineAttributesObjectID_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SetLineAttributesObjectID_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       SetLineAttributesObjectID_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SetLineAttributesObjectID_reserved8_oer_ext_arr_[0] = {};
+const int SetLineAttributesObjectID_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SetLineAttributesObjectID_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SetLineAttributesObjectID_reserved8_oer_ext_arr_, 0, SetLineAttributesObjectID_reserved8_oer_p_};
+const TTCN_Typedescriptor_t SetLineAttributesObjectID_reserved8_descr_ = { "@IsobusVTMessageTypes.SetLineAttributesObjectID.reserved8", &OCTETSTRING_ber_, &SetLineAttributesObjectID_reserved8_raw_, &OCTETSTRING_text_, &SetLineAttributesObjectID_reserved8_xer_, &OCTETSTRING_json_, &SetLineAttributesObjectID_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SetLineAttributesObjectID_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for SetLineAttributesObjectID
+const TTCN_Typedescriptor_t SetLineAttributesObjectID_descr_ = { "@IsobusVTMessageTypes.SetLineAttributesObjectID", NULL, &SetLineAttributesObjectID_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SetFileAttributesObjectID_objectIDofFillAttributesObject_xer_ = { {"objectIDofFillAttributesObject>\n", "objectIDofFillAttributesObject>\n"}, {32, 32}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SetFileAttributesObjectID_objectIDofFillAttributesObject_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SetFileAttributesObjectID_objectIDofFillAttributesObject_descr_ = { "@IsobusVTMessageTypes.SetFileAttributesObjectID.objectIDofFillAttributesObject", &INTEGER_ber_, &AnyObjectID_raw_, &INTEGER_text_, &SetFileAttributesObjectID_objectIDofFillAttributesObject_xer_, &INTEGER_json_, &SetFileAttributesObjectID_objectIDofFillAttributesObject_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SetFileAttributesObjectID_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       SetFileAttributesObjectID_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SetFileAttributesObjectID_reserved7_oer_ext_arr_[0] = {};
+const int SetFileAttributesObjectID_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SetFileAttributesObjectID_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SetFileAttributesObjectID_reserved7_oer_ext_arr_, 0, SetFileAttributesObjectID_reserved7_oer_p_};
+const TTCN_Typedescriptor_t SetFileAttributesObjectID_reserved7_descr_ = { "@IsobusVTMessageTypes.SetFileAttributesObjectID.reserved7", &OCTETSTRING_ber_, &SetFileAttributesObjectID_reserved7_raw_, &OCTETSTRING_text_, &SetFileAttributesObjectID_reserved7_xer_, &OCTETSTRING_json_, &SetFileAttributesObjectID_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SetFileAttributesObjectID_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       SetFileAttributesObjectID_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SetFileAttributesObjectID_reserved8_oer_ext_arr_[0] = {};
+const int SetFileAttributesObjectID_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SetFileAttributesObjectID_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SetFileAttributesObjectID_reserved8_oer_ext_arr_, 0, SetFileAttributesObjectID_reserved8_oer_p_};
+const TTCN_Typedescriptor_t SetFileAttributesObjectID_reserved8_descr_ = { "@IsobusVTMessageTypes.SetFileAttributesObjectID.reserved8", &OCTETSTRING_ber_, &SetFileAttributesObjectID_reserved8_raw_, &OCTETSTRING_text_, &SetFileAttributesObjectID_reserved8_xer_, &OCTETSTRING_json_, &SetFileAttributesObjectID_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SetFileAttributesObjectID_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for SetFileAttributesObjectID
+const TTCN_Typedescriptor_t SetFileAttributesObjectID_descr_ = { "@IsobusVTMessageTypes.SetFileAttributesObjectID", NULL, &SetFileAttributesObjectID_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SetFontAttributesObjectID_objectIDofFontAttributesObject_xer_ = { {"objectIDofFontAttributesObject>\n", "objectIDofFontAttributesObject>\n"}, {32, 32}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SetFontAttributesObjectID_objectIDofFontAttributesObject_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SetFontAttributesObjectID_objectIDofFontAttributesObject_descr_ = { "@IsobusVTMessageTypes.SetFontAttributesObjectID.objectIDofFontAttributesObject", &INTEGER_ber_, &AnyObjectID_raw_, &INTEGER_text_, &SetFontAttributesObjectID_objectIDofFontAttributesObject_xer_, &INTEGER_json_, &SetFontAttributesObjectID_objectIDofFontAttributesObject_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SetFontAttributesObjectID_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       SetFontAttributesObjectID_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SetFontAttributesObjectID_reserved7_oer_ext_arr_[0] = {};
+const int SetFontAttributesObjectID_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SetFontAttributesObjectID_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SetFontAttributesObjectID_reserved7_oer_ext_arr_, 0, SetFontAttributesObjectID_reserved7_oer_p_};
+const TTCN_Typedescriptor_t SetFontAttributesObjectID_reserved7_descr_ = { "@IsobusVTMessageTypes.SetFontAttributesObjectID.reserved7", &OCTETSTRING_ber_, &SetFontAttributesObjectID_reserved7_raw_, &OCTETSTRING_text_, &SetFontAttributesObjectID_reserved7_xer_, &OCTETSTRING_json_, &SetFontAttributesObjectID_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SetFontAttributesObjectID_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       SetFontAttributesObjectID_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SetFontAttributesObjectID_reserved8_oer_ext_arr_[0] = {};
+const int SetFontAttributesObjectID_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SetFontAttributesObjectID_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SetFontAttributesObjectID_reserved8_oer_ext_arr_, 0, SetFontAttributesObjectID_reserved8_oer_p_};
+const TTCN_Typedescriptor_t SetFontAttributesObjectID_reserved8_descr_ = { "@IsobusVTMessageTypes.SetFontAttributesObjectID.reserved8", &OCTETSTRING_ber_, &SetFontAttributesObjectID_reserved8_raw_, &OCTETSTRING_text_, &SetFontAttributesObjectID_reserved8_xer_, &OCTETSTRING_json_, &SetFontAttributesObjectID_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SetFontAttributesObjectID_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for SetFontAttributesObjectID
+const TTCN_Typedescriptor_t SetFontAttributesObjectID_descr_ = { "@IsobusVTMessageTypes.SetFontAttributesObjectID", NULL, &SetFontAttributesObjectID_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       EraseRectangle_width_xer_ = { {"width>\n", "width>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t EraseRectangle_width_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t EraseRectangle_width_descr_ = { "@IsobusVTMessageTypes.EraseRectangle.width", &INTEGER_ber_, &IsobusMessageTypes::INT2_raw_, &INTEGER_text_, &EraseRectangle_width_xer_, &INTEGER_json_, &EraseRectangle_width_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       EraseRectangle_height_xer_ = { {"height>\n", "height>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t EraseRectangle_height_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t EraseRectangle_height_descr_ = { "@IsobusVTMessageTypes.EraseRectangle.height", &INTEGER_ber_, &IsobusMessageTypes::INT2_raw_, &INTEGER_text_, &EraseRectangle_height_xer_, &INTEGER_json_, &EraseRectangle_height_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EraseRectangle_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for EraseRectangle
+const TTCN_Typedescriptor_t EraseRectangle_descr_ = { "@IsobusVTMessageTypes.EraseRectangle", NULL, &EraseRectangle_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       DrawPoint_xOffset_xer_ = { {"xOffset>\n", "xOffset>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t DrawPoint_xOffset_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t DrawPoint_xOffset_descr_ = { "@IsobusVTMessageTypes.DrawPoint.xOffset", &INTEGER_ber_, &XOffsetType_raw_, &INTEGER_text_, &DrawPoint_xOffset_xer_, &INTEGER_json_, &DrawPoint_xOffset_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       DrawPoint_yOffset_xer_ = { {"yOffset>\n", "yOffset>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t DrawPoint_yOffset_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t DrawPoint_yOffset_descr_ = { "@IsobusVTMessageTypes.DrawPoint.yOffset", &INTEGER_ber_, &YOffsetType_raw_, &INTEGER_text_, &DrawPoint_yOffset_xer_, &INTEGER_json_, &DrawPoint_yOffset_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DrawPoint_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for DrawPoint
+const TTCN_Typedescriptor_t DrawPoint_descr_ = { "@IsobusVTMessageTypes.DrawPoint", NULL, &DrawPoint_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       DrawLine_xOffset_xer_ = { {"xOffset>\n", "xOffset>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t DrawLine_xOffset_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t DrawLine_xOffset_descr_ = { "@IsobusVTMessageTypes.DrawLine.xOffset", &INTEGER_ber_, &XOffsetType_raw_, &INTEGER_text_, &DrawLine_xOffset_xer_, &INTEGER_json_, &DrawLine_xOffset_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       DrawLine_yOffset_xer_ = { {"yOffset>\n", "yOffset>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t DrawLine_yOffset_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t DrawLine_yOffset_descr_ = { "@IsobusVTMessageTypes.DrawLine.yOffset", &INTEGER_ber_, &YOffsetType_raw_, &INTEGER_text_, &DrawLine_yOffset_xer_, &INTEGER_json_, &DrawLine_yOffset_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DrawLine_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for DrawLine
+const TTCN_Typedescriptor_t DrawLine_descr_ = { "@IsobusVTMessageTypes.DrawLine", NULL, &DrawLine_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       DrawRectangle_width_xer_ = { {"width>\n", "width>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t DrawRectangle_width_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t DrawRectangle_width_descr_ = { "@IsobusVTMessageTypes.DrawRectangle.width", &INTEGER_ber_, &IsobusMessageTypes::INT2_raw_, &INTEGER_text_, &DrawRectangle_width_xer_, &INTEGER_json_, &DrawRectangle_width_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       DrawRectangle_height_xer_ = { {"height>\n", "height>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t DrawRectangle_height_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t DrawRectangle_height_descr_ = { "@IsobusVTMessageTypes.DrawRectangle.height", &INTEGER_ber_, &IsobusMessageTypes::INT2_raw_, &INTEGER_text_, &DrawRectangle_height_xer_, &INTEGER_json_, &DrawRectangle_height_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DrawRectangle_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for DrawRectangle
+const TTCN_Typedescriptor_t DrawRectangle_descr_ = { "@IsobusVTMessageTypes.DrawRectangle", NULL, &DrawRectangle_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       DrawClosedEllipse_width_xer_ = { {"width>\n", "width>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t DrawClosedEllipse_width_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t DrawClosedEllipse_width_descr_ = { "@IsobusVTMessageTypes.DrawClosedEllipse.width", &INTEGER_ber_, &IsobusMessageTypes::INT2_raw_, &INTEGER_text_, &DrawClosedEllipse_width_xer_, &INTEGER_json_, &DrawClosedEllipse_width_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       DrawClosedEllipse_height_xer_ = { {"height>\n", "height>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t DrawClosedEllipse_height_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t DrawClosedEllipse_height_descr_ = { "@IsobusVTMessageTypes.DrawClosedEllipse.height", &INTEGER_ber_, &IsobusMessageTypes::INT2_raw_, &INTEGER_text_, &DrawClosedEllipse_height_xer_, &INTEGER_json_, &DrawClosedEllipse_height_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DrawClosedEllipse_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for DrawClosedEllipse
+const TTCN_Typedescriptor_t DrawClosedEllipse_descr_ = { "@IsobusVTMessageTypes.DrawClosedEllipse", NULL, &DrawClosedEllipse_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       PolygonPoint_xOffset_xer_ = { {"xOffset>\n", "xOffset>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t PolygonPoint_xOffset_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t PolygonPoint_xOffset_descr_ = { "@IsobusVTMessageTypes.PolygonPoint.xOffset", &INTEGER_ber_, &XOffsetType_raw_, &INTEGER_text_, &PolygonPoint_xOffset_xer_, &INTEGER_json_, &PolygonPoint_xOffset_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       PolygonPoint_yOffset_xer_ = { {"yOffset>\n", "yOffset>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t PolygonPoint_yOffset_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t PolygonPoint_yOffset_descr_ = { "@IsobusVTMessageTypes.PolygonPoint.yOffset", &INTEGER_ber_, &YOffsetType_raw_, &INTEGER_text_, &PolygonPoint_yOffset_xer_, &INTEGER_json_, &PolygonPoint_yOffset_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t PolygonPoint_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for PolygonPoint
+const TTCN_Typedescriptor_t PolygonPoint_descr_ = { "@IsobusVTMessageTypes.PolygonPoint", NULL, &PolygonPoint_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t PolygonPointArray_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for PolygonPointArray
+const TTCN_Typedescriptor_t PolygonPointArray_descr_ = { "@IsobusVTMessageTypes.PolygonPointArray", NULL, &PolygonPointArray_raw_, NULL, NULL, NULL, NULL, &PolygonPoint_descr_, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DrawPolygon_numberOfPolygonPointsToFollow_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,NULL,false};
+const XERdescriptor_t       DrawPolygon_numberOfPolygonPointsToFollow_xer_ = { {"numberOfPolygonPointsToFollow>\n", "numberOfPolygonPointsToFollow>\n"}, {31, 31}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t DrawPolygon_numberOfPolygonPointsToFollow_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t DrawPolygon_numberOfPolygonPointsToFollow_descr_ = { "@IsobusVTMessageTypes.DrawPolygon.numberOfPolygonPointsToFollow", &INTEGER_ber_, &DrawPolygon_numberOfPolygonPointsToFollow_raw_, &INTEGER_text_, &DrawPolygon_numberOfPolygonPointsToFollow_xer_, &INTEGER_json_, &DrawPolygon_numberOfPolygonPointsToFollow_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DrawPolygon_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for DrawPolygon
+const TTCN_Typedescriptor_t DrawPolygon_descr_ = { "@IsobusVTMessageTypes.DrawPolygon", NULL, &DrawPolygon_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t e__Tranparency_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,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for e__Tranparency
+const TTCN_Typedescriptor_t e__Tranparency_descr_ = { "@IsobusVTMessageTypes.e_Tranparency", NULL, &e__Tranparency_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DrawText_numberOfBytesToFollow_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,NULL,false};
+const XERdescriptor_t       DrawText_numberOfBytesToFollow_xer_ = { {"numberOfBytesToFollow>\n", "numberOfBytesToFollow>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t DrawText_numberOfBytesToFollow_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t DrawText_numberOfBytesToFollow_descr_ = { "@IsobusVTMessageTypes.DrawText.numberOfBytesToFollow", &INTEGER_ber_, &DrawText_numberOfBytesToFollow_raw_, &INTEGER_text_, &DrawText_numberOfBytesToFollow_xer_, &INTEGER_json_, &DrawText_numberOfBytesToFollow_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       DrawText_textStringValue_xer_ = { {"textStringValue>\n", "textStringValue>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int DrawText_textStringValue_oer_ext_arr_[0] = {};
+const int DrawText_textStringValue_oer_p_[0] = {};
+const TTCN_OERdescriptor_t DrawText_textStringValue_oer_ = { -1, TRUE, -1, FALSE, 0, 0, DrawText_textStringValue_oer_ext_arr_, 0, DrawText_textStringValue_oer_p_};
+const TTCN_Typedescriptor_t DrawText_textStringValue_descr_ = { "@IsobusVTMessageTypes.DrawText.textStringValue", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &DrawText_textStringValue_xer_, &OCTETSTRING_json_, &DrawText_textStringValue_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DrawText_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for DrawText
+const TTCN_Typedescriptor_t DrawText_descr_ = { "@IsobusVTMessageTypes.DrawText", NULL, &DrawText_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       DrawText_padding1_xer_ = { {"padding1>\n", "padding1>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int DrawText_padding1_oer_ext_arr_[0] = {};
+const int DrawText_padding1_oer_p_[0] = {};
+const TTCN_OERdescriptor_t DrawText_padding1_oer_ = { -1, TRUE, 1, FALSE, 0, 0, DrawText_padding1_oer_ext_arr_, 0, DrawText_padding1_oer_p_};
+const TTCN_Typedescriptor_t DrawText_padding1_descr_ = { "@IsobusVTMessageTypes.DrawText.padding1", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &DrawText_padding1_xer_, &OCTETSTRING_json_, &DrawText_padding1_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       DrawText_padding2_xer_ = { {"padding2>\n", "padding2>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int DrawText_padding2_oer_ext_arr_[0] = {};
+const int DrawText_padding2_oer_p_[0] = {};
+const TTCN_OERdescriptor_t DrawText_padding2_oer_ = { -1, TRUE, 1, FALSE, 0, 0, DrawText_padding2_oer_ext_arr_, 0, DrawText_padding2_oer_p_};
+const TTCN_Typedescriptor_t DrawText_padding2_descr_ = { "@IsobusVTMessageTypes.DrawText.padding2", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &DrawText_padding2_xer_, &OCTETSTRING_json_, &DrawText_padding2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       PanViewport_viewportXattribute_xer_ = { {"viewportXattribute>\n", "viewportXattribute>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t PanViewport_viewportXattribute_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t PanViewport_viewportXattribute_descr_ = { "@IsobusVTMessageTypes.PanViewport.viewportXattribute", &INTEGER_ber_, &ViewportXAttribute_raw_, &INTEGER_text_, &PanViewport_viewportXattribute_xer_, &INTEGER_json_, &PanViewport_viewportXattribute_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       PanViewport_viewportYattribute_xer_ = { {"viewportYattribute>\n", "viewportYattribute>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t PanViewport_viewportYattribute_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t PanViewport_viewportYattribute_descr_ = { "@IsobusVTMessageTypes.PanViewport.viewportYattribute", &INTEGER_ber_, &ViewportXAttribute_raw_, &INTEGER_text_, &PanViewport_viewportYattribute_xer_, &INTEGER_json_, &PanViewport_viewportYattribute_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t PanViewport_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for PanViewport
+const TTCN_Typedescriptor_t PanViewport_descr_ = { "@IsobusVTMessageTypes.PanViewport", NULL, &PanViewport_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ZoomViewport_zoom_xer_ = { {"zoom>\n", "zoom>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ZoomViewport_zoom_oer_ext_arr_[0] = {};
+const int ZoomViewport_zoom_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ZoomViewport_zoom_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ZoomViewport_zoom_oer_ext_arr_, 0, ZoomViewport_zoom_oer_p_};
+const TTCN_Typedescriptor_t ZoomViewport_zoom_descr_ = { "@IsobusVTMessageTypes.ZoomViewport.zoom", &FLOAT_ber_, &SingleFloat_raw_, NULL, &ZoomViewport_zoom_xer_, &FLOAT_json_, &ZoomViewport_zoom_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ZoomViewport_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ZoomViewport
+const TTCN_Typedescriptor_t ZoomViewport_descr_ = { "@IsobusVTMessageTypes.ZoomViewport", NULL, &ZoomViewport_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       PanAndZoomViewport_viewportXattribute_xer_ = { {"viewportXattribute>\n", "viewportXattribute>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t PanAndZoomViewport_viewportXattribute_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t PanAndZoomViewport_viewportXattribute_descr_ = { "@IsobusVTMessageTypes.PanAndZoomViewport.viewportXattribute", &INTEGER_ber_, &ViewportXAttribute_raw_, &INTEGER_text_, &PanAndZoomViewport_viewportXattribute_xer_, &INTEGER_json_, &PanAndZoomViewport_viewportXattribute_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       PanAndZoomViewport_viewportYattribute_xer_ = { {"viewportYattribute>\n", "viewportYattribute>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t PanAndZoomViewport_viewportYattribute_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t PanAndZoomViewport_viewportYattribute_descr_ = { "@IsobusVTMessageTypes.PanAndZoomViewport.viewportYattribute", &INTEGER_ber_, &ViewportXAttribute_raw_, &INTEGER_text_, &PanAndZoomViewport_viewportYattribute_xer_, &INTEGER_json_, &PanAndZoomViewport_viewportYattribute_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       PanAndZoomViewport_zoom_xer_ = { {"zoom>\n", "zoom>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int PanAndZoomViewport_zoom_oer_ext_arr_[0] = {};
+const int PanAndZoomViewport_zoom_oer_p_[0] = {};
+const TTCN_OERdescriptor_t PanAndZoomViewport_zoom_oer_ = { -1, TRUE, -1, FALSE, 0, 0, PanAndZoomViewport_zoom_oer_ext_arr_, 0, PanAndZoomViewport_zoom_oer_p_};
+const TTCN_Typedescriptor_t PanAndZoomViewport_zoom_descr_ = { "@IsobusVTMessageTypes.PanAndZoomViewport.zoom", &FLOAT_ber_, &SingleFloat_raw_, NULL, &PanAndZoomViewport_zoom_xer_, &FLOAT_json_, &PanAndZoomViewport_zoom_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t PanAndZoomViewport_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for PanAndZoomViewport
+const TTCN_Typedescriptor_t PanAndZoomViewport_descr_ = { "@IsobusVTMessageTypes.PanAndZoomViewport", NULL, &PanAndZoomViewport_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeViewportSize_newWidth_xer_ = { {"newWidth>\n", "newWidth>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeViewportSize_newWidth_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeViewportSize_newWidth_descr_ = { "@IsobusVTMessageTypes.ChangeViewportSize.newWidth", &INTEGER_ber_, &IsobusMessageTypes::INT2_raw_, &INTEGER_text_, &ChangeViewportSize_newWidth_xer_, &INTEGER_json_, &ChangeViewportSize_newWidth_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ChangeViewportSize_newHeight_xer_ = { {"newHeight>\n", "newHeight>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ChangeViewportSize_newHeight_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ChangeViewportSize_newHeight_descr_ = { "@IsobusVTMessageTypes.ChangeViewportSize.newHeight", &INTEGER_ber_, &IsobusMessageTypes::INT2_raw_, &INTEGER_text_, &ChangeViewportSize_newHeight_xer_, &INTEGER_json_, &ChangeViewportSize_newHeight_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ChangeViewportSize_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ChangeViewportSize
+const TTCN_Typedescriptor_t ChangeViewportSize_descr_ = { "@IsobusVTMessageTypes.ChangeViewportSize", NULL, &ChangeViewportSize_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       DrawVTObject_objectIDofObjectToDraw_xer_ = { {"objectIDofObjectToDraw>\n", "objectIDofObjectToDraw>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t DrawVTObject_objectIDofObjectToDraw_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t DrawVTObject_objectIDofObjectToDraw_descr_ = { "@IsobusVTMessageTypes.DrawVTObject.objectIDofObjectToDraw", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &DrawVTObject_objectIDofObjectToDraw_xer_, &INTEGER_json_, &DrawVTObject_objectIDofObjectToDraw_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DrawVTObject_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       DrawVTObject_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int DrawVTObject_reserved7_oer_ext_arr_[0] = {};
+const int DrawVTObject_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t DrawVTObject_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, DrawVTObject_reserved7_oer_ext_arr_, 0, DrawVTObject_reserved7_oer_p_};
+const TTCN_Typedescriptor_t DrawVTObject_reserved7_descr_ = { "@IsobusVTMessageTypes.DrawVTObject.reserved7", &OCTETSTRING_ber_, &DrawVTObject_reserved7_raw_, &OCTETSTRING_text_, &DrawVTObject_reserved7_xer_, &OCTETSTRING_json_, &DrawVTObject_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DrawVTObject_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       DrawVTObject_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int DrawVTObject_reserved8_oer_ext_arr_[0] = {};
+const int DrawVTObject_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t DrawVTObject_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, DrawVTObject_reserved8_oer_ext_arr_, 0, DrawVTObject_reserved8_oer_p_};
+const TTCN_Typedescriptor_t DrawVTObject_reserved8_descr_ = { "@IsobusVTMessageTypes.DrawVTObject.reserved8", &OCTETSTRING_ber_, &DrawVTObject_reserved8_raw_, &OCTETSTRING_text_, &DrawVTObject_reserved8_xer_, &OCTETSTRING_json_, &DrawVTObject_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DrawVTObject_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for DrawVTObject
+const TTCN_Typedescriptor_t DrawVTObject_descr_ = { "@IsobusVTMessageTypes.DrawVTObject", NULL, &DrawVTObject_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       CopyCanvasToPictureGraphic_objectIDofPictureGraphicObjectToCopyTo_xer_ = { {"objectIDofPictureGraphicObjectToCopyTo>\n", "objectIDofPictureGraphicObjectToCopyTo>\n"}, {40, 40}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t CopyCanvasToPictureGraphic_objectIDofPictureGraphicObjectToCopyTo_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t CopyCanvasToPictureGraphic_objectIDofPictureGraphicObjectToCopyTo_descr_ = { "@IsobusVTMessageTypes.CopyCanvasToPictureGraphic.objectIDofPictureGraphicObjectToCopyTo", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &CopyCanvasToPictureGraphic_objectIDofPictureGraphicObjectToCopyTo_xer_, &INTEGER_json_, &CopyCanvasToPictureGraphic_objectIDofPictureGraphicObjectToCopyTo_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CopyCanvasToPictureGraphic_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       CopyCanvasToPictureGraphic_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int CopyCanvasToPictureGraphic_reserved7_oer_ext_arr_[0] = {};
+const int CopyCanvasToPictureGraphic_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t CopyCanvasToPictureGraphic_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, CopyCanvasToPictureGraphic_reserved7_oer_ext_arr_, 0, CopyCanvasToPictureGraphic_reserved7_oer_p_};
+const TTCN_Typedescriptor_t CopyCanvasToPictureGraphic_reserved7_descr_ = { "@IsobusVTMessageTypes.CopyCanvasToPictureGraphic.reserved7", &OCTETSTRING_ber_, &CopyCanvasToPictureGraphic_reserved7_raw_, &OCTETSTRING_text_, &CopyCanvasToPictureGraphic_reserved7_xer_, &OCTETSTRING_json_, &CopyCanvasToPictureGraphic_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CopyCanvasToPictureGraphic_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       CopyCanvasToPictureGraphic_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int CopyCanvasToPictureGraphic_reserved8_oer_ext_arr_[0] = {};
+const int CopyCanvasToPictureGraphic_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t CopyCanvasToPictureGraphic_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, CopyCanvasToPictureGraphic_reserved8_oer_ext_arr_, 0, CopyCanvasToPictureGraphic_reserved8_oer_p_};
+const TTCN_Typedescriptor_t CopyCanvasToPictureGraphic_reserved8_descr_ = { "@IsobusVTMessageTypes.CopyCanvasToPictureGraphic.reserved8", &OCTETSTRING_ber_, &CopyCanvasToPictureGraphic_reserved8_raw_, &OCTETSTRING_text_, &CopyCanvasToPictureGraphic_reserved8_xer_, &OCTETSTRING_json_, &CopyCanvasToPictureGraphic_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CopyCanvasToPictureGraphic_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for CopyCanvasToPictureGraphic
+const TTCN_Typedescriptor_t CopyCanvasToPictureGraphic_descr_ = { "@IsobusVTMessageTypes.CopyCanvasToPictureGraphic", NULL, &CopyCanvasToPictureGraphic_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       CopyViewportToPictureGraphic_objectIDofPictureGraphicObjectToCopyTo_xer_ = { {"objectIDofPictureGraphicObjectToCopyTo>\n", "objectIDofPictureGraphicObjectToCopyTo>\n"}, {40, 40}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t CopyViewportToPictureGraphic_objectIDofPictureGraphicObjectToCopyTo_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t CopyViewportToPictureGraphic_objectIDofPictureGraphicObjectToCopyTo_descr_ = { "@IsobusVTMessageTypes.CopyViewportToPictureGraphic.objectIDofPictureGraphicObjectToCopyTo", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &CopyViewportToPictureGraphic_objectIDofPictureGraphicObjectToCopyTo_xer_, &INTEGER_json_, &CopyViewportToPictureGraphic_objectIDofPictureGraphicObjectToCopyTo_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CopyViewportToPictureGraphic_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       CopyViewportToPictureGraphic_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int CopyViewportToPictureGraphic_reserved7_oer_ext_arr_[0] = {};
+const int CopyViewportToPictureGraphic_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t CopyViewportToPictureGraphic_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, CopyViewportToPictureGraphic_reserved7_oer_ext_arr_, 0, CopyViewportToPictureGraphic_reserved7_oer_p_};
+const TTCN_Typedescriptor_t CopyViewportToPictureGraphic_reserved7_descr_ = { "@IsobusVTMessageTypes.CopyViewportToPictureGraphic.reserved7", &OCTETSTRING_ber_, &CopyViewportToPictureGraphic_reserved7_raw_, &OCTETSTRING_text_, &CopyViewportToPictureGraphic_reserved7_xer_, &OCTETSTRING_json_, &CopyViewportToPictureGraphic_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CopyViewportToPictureGraphic_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       CopyViewportToPictureGraphic_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int CopyViewportToPictureGraphic_reserved8_oer_ext_arr_[0] = {};
+const int CopyViewportToPictureGraphic_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t CopyViewportToPictureGraphic_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, CopyViewportToPictureGraphic_reserved8_oer_ext_arr_, 0, CopyViewportToPictureGraphic_reserved8_oer_p_};
+const TTCN_Typedescriptor_t CopyViewportToPictureGraphic_reserved8_descr_ = { "@IsobusVTMessageTypes.CopyViewportToPictureGraphic.reserved8", &OCTETSTRING_ber_, &CopyViewportToPictureGraphic_reserved8_raw_, &OCTETSTRING_text_, &CopyViewportToPictureGraphic_reserved8_xer_, &OCTETSTRING_json_, &CopyViewportToPictureGraphic_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CopyViewportToPictureGraphic_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for CopyViewportToPictureGraphic
+const TTCN_Typedescriptor_t CopyViewportToPictureGraphic_descr_ = { "@IsobusVTMessageTypes.CopyViewportToPictureGraphic", NULL, &CopyViewportToPictureGraphic_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GraphicsContextReq__union_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for GraphicsContextReq__union
+const TTCN_Typedescriptor_t GraphicsContextReq__union_descr_ = { "@IsobusVTMessageTypes.GraphicsContextReq_union", NULL, &GraphicsContextReq__union_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GraphicsContextReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t GraphicsContextReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t GraphicsContextReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.GraphicsContextReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &GraphicsContextReq_vtfunction_xer_, &INTEGER_json_, &GraphicsContextReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GraphicsContextReq_objectIDofaGraphicsContextObject_xer_ = { {"objectIDofaGraphicsContextObject>\n", "objectIDofaGraphicsContextObject>\n"}, {34, 34}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t GraphicsContextReq_objectIDofaGraphicsContextObject_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t GraphicsContextReq_objectIDofaGraphicsContextObject_descr_ = { "@IsobusVTMessageTypes.GraphicsContextReq.objectIDofaGraphicsContextObject", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &GraphicsContextReq_objectIDofaGraphicsContextObject_xer_, &INTEGER_json_, &GraphicsContextReq_objectIDofaGraphicsContextObject_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GraphicsContextReq_subcommandID_xer_ = { {"subcommandID>\n", "subcommandID>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t GraphicsContextReq_subcommandID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t GraphicsContextReq_subcommandID_descr_ = { "@IsobusVTMessageTypes.GraphicsContextReq.subcommandID", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &GraphicsContextReq_subcommandID_xer_, &INTEGER_json_, &GraphicsContextReq_subcommandID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GraphicsContextReq_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,NULL,false};
+// No XER for GraphicsContextReq_parameters
+const TTCN_Typedescriptor_t GraphicsContextReq_parameters_descr_ = { "@IsobusVTMessageTypes.GraphicsContextReq.parameters", NULL, &GraphicsContextReq_parameters_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GraphicsContextReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for GraphicsContextReq
+const TTCN_Typedescriptor_t GraphicsContextReq_descr_ = { "@IsobusVTMessageTypes.GraphicsContextReq", NULL, &GraphicsContextReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetAttributeValueRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t GetAttributeValueRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t GetAttributeValueRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.GetAttributeValueRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &GetAttributeValueRes_vtfunction_xer_, &INTEGER_json_, &GetAttributeValueRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetAttributeValueRes_ObjectIDorFFFFtoTndicateAnErrorResponse_xer_ = { {"ObjectIDorFFFFtoTndicateAnErrorResponse>\n", "ObjectIDorFFFFtoTndicateAnErrorResponse>\n"}, {41, 41}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t GetAttributeValueRes_ObjectIDorFFFFtoTndicateAnErrorResponse_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t GetAttributeValueRes_ObjectIDorFFFFtoTndicateAnErrorResponse_descr_ = { "@IsobusVTMessageTypes.GetAttributeValueRes.ObjectIDorFFFFtoTndicateAnErrorResponse", &INTEGER_ber_, &AnyObjectID_raw_, &INTEGER_text_, &GetAttributeValueRes_ObjectIDorFFFFtoTndicateAnErrorResponse_xer_, &INTEGER_json_, &GetAttributeValueRes_ObjectIDorFFFFtoTndicateAnErrorResponse_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetAttributeValueRes_AttributeIDofTheObject_xer_ = { {"AttributeIDofTheObject>\n", "AttributeIDofTheObject>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t GetAttributeValueRes_AttributeIDofTheObject_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t GetAttributeValueRes_AttributeIDofTheObject_descr_ = { "@IsobusVTMessageTypes.GetAttributeValueRes.AttributeIDofTheObject", &INTEGER_ber_, &AttributeID_raw_, &INTEGER_text_, &GetAttributeValueRes_AttributeIDofTheObject_xer_, &INTEGER_json_, &GetAttributeValueRes_AttributeIDofTheObject_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetAttributeValueRes_data1_xer_ = { {"data1>\n", "data1>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetAttributeValueRes_data1_oer_ext_arr_[0] = {};
+const int GetAttributeValueRes_data1_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetAttributeValueRes_data1_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetAttributeValueRes_data1_oer_ext_arr_, 0, GetAttributeValueRes_data1_oer_p_};
+const TTCN_Typedescriptor_t GetAttributeValueRes_data1_descr_ = { "@IsobusVTMessageTypes.GetAttributeValueRes.data1", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &GetAttributeValueRes_data1_xer_, &OCTETSTRING_json_, &GetAttributeValueRes_data1_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetAttributeValueRes_data2_xer_ = { {"data2>\n", "data2>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetAttributeValueRes_data2_oer_ext_arr_[0] = {};
+const int GetAttributeValueRes_data2_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetAttributeValueRes_data2_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetAttributeValueRes_data2_oer_ext_arr_, 0, GetAttributeValueRes_data2_oer_p_};
+const TTCN_Typedescriptor_t GetAttributeValueRes_data2_descr_ = { "@IsobusVTMessageTypes.GetAttributeValueRes.data2", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &GetAttributeValueRes_data2_xer_, &OCTETSTRING_json_, &GetAttributeValueRes_data2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetAttributeValueRes_data3_xer_ = { {"data3>\n", "data3>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetAttributeValueRes_data3_oer_ext_arr_[0] = {};
+const int GetAttributeValueRes_data3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetAttributeValueRes_data3_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetAttributeValueRes_data3_oer_ext_arr_, 0, GetAttributeValueRes_data3_oer_p_};
+const TTCN_Typedescriptor_t GetAttributeValueRes_data3_descr_ = { "@IsobusVTMessageTypes.GetAttributeValueRes.data3", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &GetAttributeValueRes_data3_xer_, &OCTETSTRING_json_, &GetAttributeValueRes_data3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetAttributeValueRes_data4_xer_ = { {"data4>\n", "data4>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetAttributeValueRes_data4_oer_ext_arr_[0] = {};
+const int GetAttributeValueRes_data4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetAttributeValueRes_data4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetAttributeValueRes_data4_oer_ext_arr_, 0, GetAttributeValueRes_data4_oer_p_};
+const TTCN_Typedescriptor_t GetAttributeValueRes_data4_descr_ = { "@IsobusVTMessageTypes.GetAttributeValueRes.data4", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &GetAttributeValueRes_data4_xer_, &OCTETSTRING_json_, &GetAttributeValueRes_data4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetAttributeValueRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for GetAttributeValueRes
+const TTCN_Typedescriptor_t GetAttributeValueRes_descr_ = { "@IsobusVTMessageTypes.GetAttributeValueRes", NULL, &GetAttributeValueRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetAttributeValueReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t GetAttributeValueReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t GetAttributeValueReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.GetAttributeValueReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &GetAttributeValueReq_vtfunction_xer_, &INTEGER_json_, &GetAttributeValueReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetAttributeValueReq_objectID_xer_ = { {"objectID>\n", "objectID>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t GetAttributeValueReq_objectID_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t GetAttributeValueReq_objectID_descr_ = { "@IsobusVTMessageTypes.GetAttributeValueReq.objectID", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &GetAttributeValueReq_objectID_xer_, &INTEGER_json_, &GetAttributeValueReq_objectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetAttributeValueReq_AttributeIDofTheObject_xer_ = { {"AttributeIDofTheObject>\n", "AttributeIDofTheObject>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t GetAttributeValueReq_AttributeIDofTheObject_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t GetAttributeValueReq_AttributeIDofTheObject_descr_ = { "@IsobusVTMessageTypes.GetAttributeValueReq.AttributeIDofTheObject", &INTEGER_ber_, &AttributeID_raw_, &INTEGER_text_, &GetAttributeValueReq_AttributeIDofTheObject_xer_, &INTEGER_json_, &GetAttributeValueReq_AttributeIDofTheObject_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetAttributeValueReq_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetAttributeValueReq_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetAttributeValueReq_reserved5_oer_ext_arr_[0] = {};
+const int GetAttributeValueReq_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetAttributeValueReq_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetAttributeValueReq_reserved5_oer_ext_arr_, 0, GetAttributeValueReq_reserved5_oer_p_};
+const TTCN_Typedescriptor_t GetAttributeValueReq_reserved5_descr_ = { "@IsobusVTMessageTypes.GetAttributeValueReq.reserved5", &OCTETSTRING_ber_, &GetAttributeValueReq_reserved5_raw_, &OCTETSTRING_text_, &GetAttributeValueReq_reserved5_xer_, &OCTETSTRING_json_, &GetAttributeValueReq_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetAttributeValueReq_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetAttributeValueReq_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetAttributeValueReq_reserved6_oer_ext_arr_[0] = {};
+const int GetAttributeValueReq_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetAttributeValueReq_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetAttributeValueReq_reserved6_oer_ext_arr_, 0, GetAttributeValueReq_reserved6_oer_p_};
+const TTCN_Typedescriptor_t GetAttributeValueReq_reserved6_descr_ = { "@IsobusVTMessageTypes.GetAttributeValueReq.reserved6", &OCTETSTRING_ber_, &GetAttributeValueReq_reserved6_raw_, &OCTETSTRING_text_, &GetAttributeValueReq_reserved6_xer_, &OCTETSTRING_json_, &GetAttributeValueReq_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetAttributeValueReq_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetAttributeValueReq_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetAttributeValueReq_reserved7_oer_ext_arr_[0] = {};
+const int GetAttributeValueReq_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetAttributeValueReq_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetAttributeValueReq_reserved7_oer_ext_arr_, 0, GetAttributeValueReq_reserved7_oer_p_};
+const TTCN_Typedescriptor_t GetAttributeValueReq_reserved7_descr_ = { "@IsobusVTMessageTypes.GetAttributeValueReq.reserved7", &OCTETSTRING_ber_, &GetAttributeValueReq_reserved7_raw_, &OCTETSTRING_text_, &GetAttributeValueReq_reserved7_xer_, &OCTETSTRING_json_, &GetAttributeValueReq_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetAttributeValueReq_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetAttributeValueReq_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetAttributeValueReq_reserved8_oer_ext_arr_[0] = {};
+const int GetAttributeValueReq_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetAttributeValueReq_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetAttributeValueReq_reserved8_oer_ext_arr_, 0, GetAttributeValueReq_reserved8_oer_p_};
+const TTCN_Typedescriptor_t GetAttributeValueReq_reserved8_descr_ = { "@IsobusVTMessageTypes.GetAttributeValueReq.reserved8", &OCTETSTRING_ber_, &GetAttributeValueReq_reserved8_raw_, &OCTETSTRING_text_, &GetAttributeValueReq_reserved8_xer_, &OCTETSTRING_json_, &GetAttributeValueReq_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetAttributeValueReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for GetAttributeValueReq
+const TTCN_Typedescriptor_t GetAttributeValueReq_descr_ = { "@IsobusVTMessageTypes.GetAttributeValueReq", NULL, &GetAttributeValueReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SelectColourMapRes__ErrorCodes_invalidObjectID_xer_ = { {"invalidObjectID>\n", "invalidObjectID>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SelectColourMapRes__ErrorCodes_invalidObjectID_oer_ext_arr_[0] = {};
+const int SelectColourMapRes__ErrorCodes_invalidObjectID_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SelectColourMapRes__ErrorCodes_invalidObjectID_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SelectColourMapRes__ErrorCodes_invalidObjectID_oer_ext_arr_, 0, SelectColourMapRes__ErrorCodes_invalidObjectID_oer_p_};
+const TTCN_Typedescriptor_t SelectColourMapRes__ErrorCodes_invalidObjectID_descr_ = { "@IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes.invalidObjectID", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &SelectColourMapRes__ErrorCodes_invalidObjectID_xer_, &BOOLEAN_json_, &SelectColourMapRes__ErrorCodes_invalidObjectID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SelectColourMapRes__ErrorCodes_invalidColourMap_xer_ = { {"invalidColourMap>\n", "invalidColourMap>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SelectColourMapRes__ErrorCodes_invalidColourMap_oer_ext_arr_[0] = {};
+const int SelectColourMapRes__ErrorCodes_invalidColourMap_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SelectColourMapRes__ErrorCodes_invalidColourMap_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SelectColourMapRes__ErrorCodes_invalidColourMap_oer_ext_arr_, 0, SelectColourMapRes__ErrorCodes_invalidColourMap_oer_p_};
+const TTCN_Typedescriptor_t SelectColourMapRes__ErrorCodes_invalidColourMap_descr_ = { "@IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes.invalidColourMap", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &SelectColourMapRes__ErrorCodes_invalidColourMap_xer_, &BOOLEAN_json_, &SelectColourMapRes__ErrorCodes_invalidColourMap_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SelectColourMapRes__ErrorCodes_anyOtherError_xer_ = { {"anyOtherError>\n", "anyOtherError>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SelectColourMapRes__ErrorCodes_anyOtherError_oer_ext_arr_[0] = {};
+const int SelectColourMapRes__ErrorCodes_anyOtherError_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SelectColourMapRes__ErrorCodes_anyOtherError_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SelectColourMapRes__ErrorCodes_anyOtherError_oer_ext_arr_, 0, SelectColourMapRes__ErrorCodes_anyOtherError_oer_p_};
+const TTCN_Typedescriptor_t SelectColourMapRes__ErrorCodes_anyOtherError_descr_ = { "@IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes.anyOtherError", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &SelectColourMapRes__ErrorCodes_anyOtherError_xer_, &BOOLEAN_json_, &SelectColourMapRes__ErrorCodes_anyOtherError_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SelectColourMapRes__ErrorCodes_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SelectColourMapRes__ErrorCodes_reserved3_oer_ext_arr_[0] = {};
+const int SelectColourMapRes__ErrorCodes_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SelectColourMapRes__ErrorCodes_reserved3_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SelectColourMapRes__ErrorCodes_reserved3_oer_ext_arr_, 0, SelectColourMapRes__ErrorCodes_reserved3_oer_p_};
+const TTCN_Typedescriptor_t SelectColourMapRes__ErrorCodes_reserved3_descr_ = { "@IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes.reserved3", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &SelectColourMapRes__ErrorCodes_reserved3_xer_, &BOOLEAN_json_, &SelectColourMapRes__ErrorCodes_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SelectColourMapRes__ErrorCodes_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SelectColourMapRes__ErrorCodes_reserved4_oer_ext_arr_[0] = {};
+const int SelectColourMapRes__ErrorCodes_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SelectColourMapRes__ErrorCodes_reserved4_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SelectColourMapRes__ErrorCodes_reserved4_oer_ext_arr_, 0, SelectColourMapRes__ErrorCodes_reserved4_oer_p_};
+const TTCN_Typedescriptor_t SelectColourMapRes__ErrorCodes_reserved4_descr_ = { "@IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes.reserved4", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &SelectColourMapRes__ErrorCodes_reserved4_xer_, &BOOLEAN_json_, &SelectColourMapRes__ErrorCodes_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SelectColourMapRes__ErrorCodes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SelectColourMapRes__ErrorCodes_reserved5_oer_ext_arr_[0] = {};
+const int SelectColourMapRes__ErrorCodes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SelectColourMapRes__ErrorCodes_reserved5_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SelectColourMapRes__ErrorCodes_reserved5_oer_ext_arr_, 0, SelectColourMapRes__ErrorCodes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t SelectColourMapRes__ErrorCodes_reserved5_descr_ = { "@IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes.reserved5", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &SelectColourMapRes__ErrorCodes_reserved5_xer_, &BOOLEAN_json_, &SelectColourMapRes__ErrorCodes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SelectColourMapRes__ErrorCodes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SelectColourMapRes__ErrorCodes_reserved6_oer_ext_arr_[0] = {};
+const int SelectColourMapRes__ErrorCodes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SelectColourMapRes__ErrorCodes_reserved6_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SelectColourMapRes__ErrorCodes_reserved6_oer_ext_arr_, 0, SelectColourMapRes__ErrorCodes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t SelectColourMapRes__ErrorCodes_reserved6_descr_ = { "@IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes.reserved6", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &SelectColourMapRes__ErrorCodes_reserved6_xer_, &BOOLEAN_json_, &SelectColourMapRes__ErrorCodes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SelectColourMapRes__ErrorCodes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SelectColourMapRes__ErrorCodes_reserved7_oer_ext_arr_[0] = {};
+const int SelectColourMapRes__ErrorCodes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SelectColourMapRes__ErrorCodes_reserved7_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SelectColourMapRes__ErrorCodes_reserved7_oer_ext_arr_, 0, SelectColourMapRes__ErrorCodes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t SelectColourMapRes__ErrorCodes_reserved7_descr_ = { "@IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes.reserved7", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &SelectColourMapRes__ErrorCodes_reserved7_xer_, &BOOLEAN_json_, &SelectColourMapRes__ErrorCodes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SelectColourMapRes__ErrorCodes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for SelectColourMapRes__ErrorCodes
+const TTCN_Typedescriptor_t SelectColourMapRes__ErrorCodes_descr_ = { "@IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes", NULL, &SelectColourMapRes__ErrorCodes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SelectColourMapRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SelectColourMapRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SelectColourMapRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.SelectColourMapRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &SelectColourMapRes_vtfunction_xer_, &INTEGER_json_, &SelectColourMapRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SelectColourMapRes_objectIDofTheColourMapObject_xer_ = { {"objectIDofTheColourMapObject>\n", "objectIDofTheColourMapObject>\n"}, {30, 30}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SelectColourMapRes_objectIDofTheColourMapObject_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SelectColourMapRes_objectIDofTheColourMapObject_descr_ = { "@IsobusVTMessageTypes.SelectColourMapRes.objectIDofTheColourMapObject", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &SelectColourMapRes_objectIDofTheColourMapObject_xer_, &INTEGER_json_, &SelectColourMapRes_objectIDofTheColourMapObject_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SelectColourMapRes_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       SelectColourMapRes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SelectColourMapRes_reserved5_oer_ext_arr_[0] = {};
+const int SelectColourMapRes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SelectColourMapRes_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SelectColourMapRes_reserved5_oer_ext_arr_, 0, SelectColourMapRes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t SelectColourMapRes_reserved5_descr_ = { "@IsobusVTMessageTypes.SelectColourMapRes.reserved5", &OCTETSTRING_ber_, &SelectColourMapRes_reserved5_raw_, &OCTETSTRING_text_, &SelectColourMapRes_reserved5_xer_, &OCTETSTRING_json_, &SelectColourMapRes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SelectColourMapRes_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       SelectColourMapRes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SelectColourMapRes_reserved6_oer_ext_arr_[0] = {};
+const int SelectColourMapRes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SelectColourMapRes_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SelectColourMapRes_reserved6_oer_ext_arr_, 0, SelectColourMapRes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t SelectColourMapRes_reserved6_descr_ = { "@IsobusVTMessageTypes.SelectColourMapRes.reserved6", &OCTETSTRING_ber_, &SelectColourMapRes_reserved6_raw_, &OCTETSTRING_text_, &SelectColourMapRes_reserved6_xer_, &OCTETSTRING_json_, &SelectColourMapRes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SelectColourMapRes_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       SelectColourMapRes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SelectColourMapRes_reserved7_oer_ext_arr_[0] = {};
+const int SelectColourMapRes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SelectColourMapRes_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SelectColourMapRes_reserved7_oer_ext_arr_, 0, SelectColourMapRes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t SelectColourMapRes_reserved7_descr_ = { "@IsobusVTMessageTypes.SelectColourMapRes.reserved7", &OCTETSTRING_ber_, &SelectColourMapRes_reserved7_raw_, &OCTETSTRING_text_, &SelectColourMapRes_reserved7_xer_, &OCTETSTRING_json_, &SelectColourMapRes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SelectColourMapRes_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       SelectColourMapRes_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SelectColourMapRes_reserved8_oer_ext_arr_[0] = {};
+const int SelectColourMapRes_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SelectColourMapRes_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SelectColourMapRes_reserved8_oer_ext_arr_, 0, SelectColourMapRes_reserved8_oer_p_};
+const TTCN_Typedescriptor_t SelectColourMapRes_reserved8_descr_ = { "@IsobusVTMessageTypes.SelectColourMapRes.reserved8", &OCTETSTRING_ber_, &SelectColourMapRes_reserved8_raw_, &OCTETSTRING_text_, &SelectColourMapRes_reserved8_xer_, &OCTETSTRING_json_, &SelectColourMapRes_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SelectColourMapRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for SelectColourMapRes
+const TTCN_Typedescriptor_t SelectColourMapRes_descr_ = { "@IsobusVTMessageTypes.SelectColourMapRes", NULL, &SelectColourMapRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SelectColourMapReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SelectColourMapReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SelectColourMapReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.SelectColourMapReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &SelectColourMapReq_vtfunction_xer_, &INTEGER_json_, &SelectColourMapReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SelectColourMapReq_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable_xer_ = { {"ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable>\n", "ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable>\n"}, {66, 66}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SelectColourMapReq_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SelectColourMapReq_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable_descr_ = { "@IsobusVTMessageTypes.SelectColourMapReq.ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &SelectColourMapReq_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable_xer_, &INTEGER_json_, &SelectColourMapReq_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SelectColourMapReq_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       SelectColourMapReq_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SelectColourMapReq_reserved4_oer_ext_arr_[0] = {};
+const int SelectColourMapReq_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SelectColourMapReq_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SelectColourMapReq_reserved4_oer_ext_arr_, 0, SelectColourMapReq_reserved4_oer_p_};
+const TTCN_Typedescriptor_t SelectColourMapReq_reserved4_descr_ = { "@IsobusVTMessageTypes.SelectColourMapReq.reserved4", &OCTETSTRING_ber_, &SelectColourMapReq_reserved4_raw_, &OCTETSTRING_text_, &SelectColourMapReq_reserved4_xer_, &OCTETSTRING_json_, &SelectColourMapReq_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SelectColourMapReq_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       SelectColourMapReq_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SelectColourMapReq_reserved5_oer_ext_arr_[0] = {};
+const int SelectColourMapReq_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SelectColourMapReq_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SelectColourMapReq_reserved5_oer_ext_arr_, 0, SelectColourMapReq_reserved5_oer_p_};
+const TTCN_Typedescriptor_t SelectColourMapReq_reserved5_descr_ = { "@IsobusVTMessageTypes.SelectColourMapReq.reserved5", &OCTETSTRING_ber_, &SelectColourMapReq_reserved5_raw_, &OCTETSTRING_text_, &SelectColourMapReq_reserved5_xer_, &OCTETSTRING_json_, &SelectColourMapReq_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SelectColourMapReq_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       SelectColourMapReq_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SelectColourMapReq_reserved6_oer_ext_arr_[0] = {};
+const int SelectColourMapReq_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SelectColourMapReq_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SelectColourMapReq_reserved6_oer_ext_arr_, 0, SelectColourMapReq_reserved6_oer_p_};
+const TTCN_Typedescriptor_t SelectColourMapReq_reserved6_descr_ = { "@IsobusVTMessageTypes.SelectColourMapReq.reserved6", &OCTETSTRING_ber_, &SelectColourMapReq_reserved6_raw_, &OCTETSTRING_text_, &SelectColourMapReq_reserved6_xer_, &OCTETSTRING_json_, &SelectColourMapReq_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SelectColourMapReq_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       SelectColourMapReq_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SelectColourMapReq_reserved7_oer_ext_arr_[0] = {};
+const int SelectColourMapReq_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SelectColourMapReq_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SelectColourMapReq_reserved7_oer_ext_arr_, 0, SelectColourMapReq_reserved7_oer_p_};
+const TTCN_Typedescriptor_t SelectColourMapReq_reserved7_descr_ = { "@IsobusVTMessageTypes.SelectColourMapReq.reserved7", &OCTETSTRING_ber_, &SelectColourMapReq_reserved7_raw_, &OCTETSTRING_text_, &SelectColourMapReq_reserved7_xer_, &OCTETSTRING_json_, &SelectColourMapReq_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SelectColourMapReq_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       SelectColourMapReq_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SelectColourMapReq_reserved8_oer_ext_arr_[0] = {};
+const int SelectColourMapReq_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SelectColourMapReq_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SelectColourMapReq_reserved8_oer_ext_arr_, 0, SelectColourMapReq_reserved8_oer_p_};
+const TTCN_Typedescriptor_t SelectColourMapReq_reserved8_descr_ = { "@IsobusVTMessageTypes.SelectColourMapReq.reserved8", &OCTETSTRING_ber_, &SelectColourMapReq_reserved8_raw_, &OCTETSTRING_text_, &SelectColourMapReq_reserved8_xer_, &OCTETSTRING_json_, &SelectColourMapReq_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SelectColourMapReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for SelectColourMapReq
+const TTCN_Typedescriptor_t SelectColourMapReq_descr_ = { "@IsobusVTMessageTypes.SelectColourMapReq", NULL, &SelectColourMapReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       IdentifyVTRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t IdentifyVTRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t IdentifyVTRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.IdentifyVTRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &IdentifyVTRes_vtfunction_xer_, &INTEGER_json_, &IdentifyVTRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t IdentifyVTRes_reserved2_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       IdentifyVTRes_reserved2_xer_ = { {"reserved2>\n", "reserved2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int IdentifyVTRes_reserved2_oer_ext_arr_[0] = {};
+const int IdentifyVTRes_reserved2_oer_p_[0] = {};
+const TTCN_OERdescriptor_t IdentifyVTRes_reserved2_oer_ = { -1, TRUE, 1, FALSE, 0, 0, IdentifyVTRes_reserved2_oer_ext_arr_, 0, IdentifyVTRes_reserved2_oer_p_};
+const TTCN_Typedescriptor_t IdentifyVTRes_reserved2_descr_ = { "@IsobusVTMessageTypes.IdentifyVTRes.reserved2", &OCTETSTRING_ber_, &IdentifyVTRes_reserved2_raw_, &OCTETSTRING_text_, &IdentifyVTRes_reserved2_xer_, &OCTETSTRING_json_, &IdentifyVTRes_reserved2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t IdentifyVTRes_reserved3_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       IdentifyVTRes_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int IdentifyVTRes_reserved3_oer_ext_arr_[0] = {};
+const int IdentifyVTRes_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t IdentifyVTRes_reserved3_oer_ = { -1, TRUE, 1, FALSE, 0, 0, IdentifyVTRes_reserved3_oer_ext_arr_, 0, IdentifyVTRes_reserved3_oer_p_};
+const TTCN_Typedescriptor_t IdentifyVTRes_reserved3_descr_ = { "@IsobusVTMessageTypes.IdentifyVTRes.reserved3", &OCTETSTRING_ber_, &IdentifyVTRes_reserved3_raw_, &OCTETSTRING_text_, &IdentifyVTRes_reserved3_xer_, &OCTETSTRING_json_, &IdentifyVTRes_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t IdentifyVTRes_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       IdentifyVTRes_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int IdentifyVTRes_reserved4_oer_ext_arr_[0] = {};
+const int IdentifyVTRes_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t IdentifyVTRes_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, IdentifyVTRes_reserved4_oer_ext_arr_, 0, IdentifyVTRes_reserved4_oer_p_};
+const TTCN_Typedescriptor_t IdentifyVTRes_reserved4_descr_ = { "@IsobusVTMessageTypes.IdentifyVTRes.reserved4", &OCTETSTRING_ber_, &IdentifyVTRes_reserved4_raw_, &OCTETSTRING_text_, &IdentifyVTRes_reserved4_xer_, &OCTETSTRING_json_, &IdentifyVTRes_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t IdentifyVTRes_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       IdentifyVTRes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int IdentifyVTRes_reserved5_oer_ext_arr_[0] = {};
+const int IdentifyVTRes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t IdentifyVTRes_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, IdentifyVTRes_reserved5_oer_ext_arr_, 0, IdentifyVTRes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t IdentifyVTRes_reserved5_descr_ = { "@IsobusVTMessageTypes.IdentifyVTRes.reserved5", &OCTETSTRING_ber_, &IdentifyVTRes_reserved5_raw_, &OCTETSTRING_text_, &IdentifyVTRes_reserved5_xer_, &OCTETSTRING_json_, &IdentifyVTRes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t IdentifyVTRes_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       IdentifyVTRes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int IdentifyVTRes_reserved6_oer_ext_arr_[0] = {};
+const int IdentifyVTRes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t IdentifyVTRes_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, IdentifyVTRes_reserved6_oer_ext_arr_, 0, IdentifyVTRes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t IdentifyVTRes_reserved6_descr_ = { "@IsobusVTMessageTypes.IdentifyVTRes.reserved6", &OCTETSTRING_ber_, &IdentifyVTRes_reserved6_raw_, &OCTETSTRING_text_, &IdentifyVTRes_reserved6_xer_, &OCTETSTRING_json_, &IdentifyVTRes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t IdentifyVTRes_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       IdentifyVTRes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int IdentifyVTRes_reserved7_oer_ext_arr_[0] = {};
+const int IdentifyVTRes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t IdentifyVTRes_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, IdentifyVTRes_reserved7_oer_ext_arr_, 0, IdentifyVTRes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t IdentifyVTRes_reserved7_descr_ = { "@IsobusVTMessageTypes.IdentifyVTRes.reserved7", &OCTETSTRING_ber_, &IdentifyVTRes_reserved7_raw_, &OCTETSTRING_text_, &IdentifyVTRes_reserved7_xer_, &OCTETSTRING_json_, &IdentifyVTRes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t IdentifyVTRes_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       IdentifyVTRes_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int IdentifyVTRes_reserved8_oer_ext_arr_[0] = {};
+const int IdentifyVTRes_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t IdentifyVTRes_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, IdentifyVTRes_reserved8_oer_ext_arr_, 0, IdentifyVTRes_reserved8_oer_p_};
+const TTCN_Typedescriptor_t IdentifyVTRes_reserved8_descr_ = { "@IsobusVTMessageTypes.IdentifyVTRes.reserved8", &OCTETSTRING_ber_, &IdentifyVTRes_reserved8_raw_, &OCTETSTRING_text_, &IdentifyVTRes_reserved8_xer_, &OCTETSTRING_json_, &IdentifyVTRes_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t IdentifyVTRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for IdentifyVTRes
+const TTCN_Typedescriptor_t IdentifyVTRes_descr_ = { "@IsobusVTMessageTypes.IdentifyVTRes", NULL, &IdentifyVTRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       IdentifyVTReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t IdentifyVTReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t IdentifyVTReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.IdentifyVTReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &IdentifyVTReq_vtfunction_xer_, &INTEGER_json_, &IdentifyVTReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t IdentifyVTReq_reserved2_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       IdentifyVTReq_reserved2_xer_ = { {"reserved2>\n", "reserved2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int IdentifyVTReq_reserved2_oer_ext_arr_[0] = {};
+const int IdentifyVTReq_reserved2_oer_p_[0] = {};
+const TTCN_OERdescriptor_t IdentifyVTReq_reserved2_oer_ = { -1, TRUE, 1, FALSE, 0, 0, IdentifyVTReq_reserved2_oer_ext_arr_, 0, IdentifyVTReq_reserved2_oer_p_};
+const TTCN_Typedescriptor_t IdentifyVTReq_reserved2_descr_ = { "@IsobusVTMessageTypes.IdentifyVTReq.reserved2", &OCTETSTRING_ber_, &IdentifyVTReq_reserved2_raw_, &OCTETSTRING_text_, &IdentifyVTReq_reserved2_xer_, &OCTETSTRING_json_, &IdentifyVTReq_reserved2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t IdentifyVTReq_reserved3_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       IdentifyVTReq_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int IdentifyVTReq_reserved3_oer_ext_arr_[0] = {};
+const int IdentifyVTReq_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t IdentifyVTReq_reserved3_oer_ = { -1, TRUE, 1, FALSE, 0, 0, IdentifyVTReq_reserved3_oer_ext_arr_, 0, IdentifyVTReq_reserved3_oer_p_};
+const TTCN_Typedescriptor_t IdentifyVTReq_reserved3_descr_ = { "@IsobusVTMessageTypes.IdentifyVTReq.reserved3", &OCTETSTRING_ber_, &IdentifyVTReq_reserved3_raw_, &OCTETSTRING_text_, &IdentifyVTReq_reserved3_xer_, &OCTETSTRING_json_, &IdentifyVTReq_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t IdentifyVTReq_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       IdentifyVTReq_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int IdentifyVTReq_reserved4_oer_ext_arr_[0] = {};
+const int IdentifyVTReq_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t IdentifyVTReq_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, IdentifyVTReq_reserved4_oer_ext_arr_, 0, IdentifyVTReq_reserved4_oer_p_};
+const TTCN_Typedescriptor_t IdentifyVTReq_reserved4_descr_ = { "@IsobusVTMessageTypes.IdentifyVTReq.reserved4", &OCTETSTRING_ber_, &IdentifyVTReq_reserved4_raw_, &OCTETSTRING_text_, &IdentifyVTReq_reserved4_xer_, &OCTETSTRING_json_, &IdentifyVTReq_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t IdentifyVTReq_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       IdentifyVTReq_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int IdentifyVTReq_reserved5_oer_ext_arr_[0] = {};
+const int IdentifyVTReq_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t IdentifyVTReq_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, IdentifyVTReq_reserved5_oer_ext_arr_, 0, IdentifyVTReq_reserved5_oer_p_};
+const TTCN_Typedescriptor_t IdentifyVTReq_reserved5_descr_ = { "@IsobusVTMessageTypes.IdentifyVTReq.reserved5", &OCTETSTRING_ber_, &IdentifyVTReq_reserved5_raw_, &OCTETSTRING_text_, &IdentifyVTReq_reserved5_xer_, &OCTETSTRING_json_, &IdentifyVTReq_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t IdentifyVTReq_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       IdentifyVTReq_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int IdentifyVTReq_reserved6_oer_ext_arr_[0] = {};
+const int IdentifyVTReq_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t IdentifyVTReq_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, IdentifyVTReq_reserved6_oer_ext_arr_, 0, IdentifyVTReq_reserved6_oer_p_};
+const TTCN_Typedescriptor_t IdentifyVTReq_reserved6_descr_ = { "@IsobusVTMessageTypes.IdentifyVTReq.reserved6", &OCTETSTRING_ber_, &IdentifyVTReq_reserved6_raw_, &OCTETSTRING_text_, &IdentifyVTReq_reserved6_xer_, &OCTETSTRING_json_, &IdentifyVTReq_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t IdentifyVTReq_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       IdentifyVTReq_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int IdentifyVTReq_reserved7_oer_ext_arr_[0] = {};
+const int IdentifyVTReq_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t IdentifyVTReq_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, IdentifyVTReq_reserved7_oer_ext_arr_, 0, IdentifyVTReq_reserved7_oer_p_};
+const TTCN_Typedescriptor_t IdentifyVTReq_reserved7_descr_ = { "@IsobusVTMessageTypes.IdentifyVTReq.reserved7", &OCTETSTRING_ber_, &IdentifyVTReq_reserved7_raw_, &OCTETSTRING_text_, &IdentifyVTReq_reserved7_xer_, &OCTETSTRING_json_, &IdentifyVTReq_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t IdentifyVTReq_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       IdentifyVTReq_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int IdentifyVTReq_reserved8_oer_ext_arr_[0] = {};
+const int IdentifyVTReq_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t IdentifyVTReq_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, IdentifyVTReq_reserved8_oer_ext_arr_, 0, IdentifyVTReq_reserved8_oer_p_};
+const TTCN_Typedescriptor_t IdentifyVTReq_reserved8_descr_ = { "@IsobusVTMessageTypes.IdentifyVTReq.reserved8", &OCTETSTRING_ber_, &IdentifyVTReq_reserved8_raw_, &OCTETSTRING_text_, &IdentifyVTReq_reserved8_xer_, &OCTETSTRING_json_, &IdentifyVTReq_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t IdentifyVTReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for IdentifyVTReq
+const TTCN_Typedescriptor_t IdentifyVTReq_descr_ = { "@IsobusVTMessageTypes.IdentifyVTReq", NULL, &IdentifyVTReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExecuteExtendedMacroRes__ErrorCodes_objectIDdoesNotExist_xer_ = { {"objectIDdoesNotExist>\n", "objectIDdoesNotExist>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExecuteExtendedMacroRes__ErrorCodes_objectIDdoesNotExist_oer_ext_arr_[0] = {};
+const int ExecuteExtendedMacroRes__ErrorCodes_objectIDdoesNotExist_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExecuteExtendedMacroRes__ErrorCodes_objectIDdoesNotExist_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ExecuteExtendedMacroRes__ErrorCodes_objectIDdoesNotExist_oer_ext_arr_, 0, ExecuteExtendedMacroRes__ErrorCodes_objectIDdoesNotExist_oer_p_};
+const TTCN_Typedescriptor_t ExecuteExtendedMacroRes__ErrorCodes_objectIDdoesNotExist_descr_ = { "@IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes.objectIDdoesNotExist", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ExecuteExtendedMacroRes__ErrorCodes_objectIDdoesNotExist_xer_, &BOOLEAN_json_, &ExecuteExtendedMacroRes__ErrorCodes_objectIDdoesNotExist_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExecuteExtendedMacroRes__ErrorCodes_objectIDisNotAMacroObject_xer_ = { {"objectIDisNotAMacroObject>\n", "objectIDisNotAMacroObject>\n"}, {27, 27}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExecuteExtendedMacroRes__ErrorCodes_objectIDisNotAMacroObject_oer_ext_arr_[0] = {};
+const int ExecuteExtendedMacroRes__ErrorCodes_objectIDisNotAMacroObject_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExecuteExtendedMacroRes__ErrorCodes_objectIDisNotAMacroObject_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ExecuteExtendedMacroRes__ErrorCodes_objectIDisNotAMacroObject_oer_ext_arr_, 0, ExecuteExtendedMacroRes__ErrorCodes_objectIDisNotAMacroObject_oer_p_};
+const TTCN_Typedescriptor_t ExecuteExtendedMacroRes__ErrorCodes_objectIDisNotAMacroObject_descr_ = { "@IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes.objectIDisNotAMacroObject", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ExecuteExtendedMacroRes__ErrorCodes_objectIDisNotAMacroObject_xer_, &BOOLEAN_json_, &ExecuteExtendedMacroRes__ErrorCodes_objectIDisNotAMacroObject_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExecuteExtendedMacroRes__ErrorCodes_anyOtherError_xer_ = { {"anyOtherError>\n", "anyOtherError>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExecuteExtendedMacroRes__ErrorCodes_anyOtherError_oer_ext_arr_[0] = {};
+const int ExecuteExtendedMacroRes__ErrorCodes_anyOtherError_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExecuteExtendedMacroRes__ErrorCodes_anyOtherError_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ExecuteExtendedMacroRes__ErrorCodes_anyOtherError_oer_ext_arr_, 0, ExecuteExtendedMacroRes__ErrorCodes_anyOtherError_oer_p_};
+const TTCN_Typedescriptor_t ExecuteExtendedMacroRes__ErrorCodes_anyOtherError_descr_ = { "@IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes.anyOtherError", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ExecuteExtendedMacroRes__ErrorCodes_anyOtherError_xer_, &BOOLEAN_json_, &ExecuteExtendedMacroRes__ErrorCodes_anyOtherError_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExecuteExtendedMacroRes__ErrorCodes_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExecuteExtendedMacroRes__ErrorCodes_reserved3_oer_ext_arr_[0] = {};
+const int ExecuteExtendedMacroRes__ErrorCodes_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExecuteExtendedMacroRes__ErrorCodes_reserved3_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ExecuteExtendedMacroRes__ErrorCodes_reserved3_oer_ext_arr_, 0, ExecuteExtendedMacroRes__ErrorCodes_reserved3_oer_p_};
+const TTCN_Typedescriptor_t ExecuteExtendedMacroRes__ErrorCodes_reserved3_descr_ = { "@IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes.reserved3", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ExecuteExtendedMacroRes__ErrorCodes_reserved3_xer_, &BOOLEAN_json_, &ExecuteExtendedMacroRes__ErrorCodes_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExecuteExtendedMacroRes__ErrorCodes_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExecuteExtendedMacroRes__ErrorCodes_reserved4_oer_ext_arr_[0] = {};
+const int ExecuteExtendedMacroRes__ErrorCodes_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExecuteExtendedMacroRes__ErrorCodes_reserved4_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ExecuteExtendedMacroRes__ErrorCodes_reserved4_oer_ext_arr_, 0, ExecuteExtendedMacroRes__ErrorCodes_reserved4_oer_p_};
+const TTCN_Typedescriptor_t ExecuteExtendedMacroRes__ErrorCodes_reserved4_descr_ = { "@IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes.reserved4", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ExecuteExtendedMacroRes__ErrorCodes_reserved4_xer_, &BOOLEAN_json_, &ExecuteExtendedMacroRes__ErrorCodes_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExecuteExtendedMacroRes__ErrorCodes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExecuteExtendedMacroRes__ErrorCodes_reserved5_oer_ext_arr_[0] = {};
+const int ExecuteExtendedMacroRes__ErrorCodes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExecuteExtendedMacroRes__ErrorCodes_reserved5_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ExecuteExtendedMacroRes__ErrorCodes_reserved5_oer_ext_arr_, 0, ExecuteExtendedMacroRes__ErrorCodes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t ExecuteExtendedMacroRes__ErrorCodes_reserved5_descr_ = { "@IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes.reserved5", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ExecuteExtendedMacroRes__ErrorCodes_reserved5_xer_, &BOOLEAN_json_, &ExecuteExtendedMacroRes__ErrorCodes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExecuteExtendedMacroRes__ErrorCodes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExecuteExtendedMacroRes__ErrorCodes_reserved6_oer_ext_arr_[0] = {};
+const int ExecuteExtendedMacroRes__ErrorCodes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExecuteExtendedMacroRes__ErrorCodes_reserved6_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ExecuteExtendedMacroRes__ErrorCodes_reserved6_oer_ext_arr_, 0, ExecuteExtendedMacroRes__ErrorCodes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t ExecuteExtendedMacroRes__ErrorCodes_reserved6_descr_ = { "@IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes.reserved6", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ExecuteExtendedMacroRes__ErrorCodes_reserved6_xer_, &BOOLEAN_json_, &ExecuteExtendedMacroRes__ErrorCodes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExecuteExtendedMacroRes__ErrorCodes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExecuteExtendedMacroRes__ErrorCodes_reserved7_oer_ext_arr_[0] = {};
+const int ExecuteExtendedMacroRes__ErrorCodes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExecuteExtendedMacroRes__ErrorCodes_reserved7_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ExecuteExtendedMacroRes__ErrorCodes_reserved7_oer_ext_arr_, 0, ExecuteExtendedMacroRes__ErrorCodes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ExecuteExtendedMacroRes__ErrorCodes_reserved7_descr_ = { "@IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes.reserved7", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ExecuteExtendedMacroRes__ErrorCodes_reserved7_xer_, &BOOLEAN_json_, &ExecuteExtendedMacroRes__ErrorCodes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExecuteExtendedMacroRes__ErrorCodes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ExecuteExtendedMacroRes__ErrorCodes
+const TTCN_Typedescriptor_t ExecuteExtendedMacroRes__ErrorCodes_descr_ = { "@IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes", NULL, &ExecuteExtendedMacroRes__ErrorCodes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExecuteExtendedMacroRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ExecuteExtendedMacroRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ExecuteExtendedMacroRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.ExecuteExtendedMacroRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ExecuteExtendedMacroRes_vtfunction_xer_, &INTEGER_json_, &ExecuteExtendedMacroRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExecuteExtendedMacroRes_ObjectIDofMacroObject_xer_ = { {"ObjectIDofMacroObject>\n", "ObjectIDofMacroObject>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ExecuteExtendedMacroRes_ObjectIDofMacroObject_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ExecuteExtendedMacroRes_ObjectIDofMacroObject_descr_ = { "@IsobusVTMessageTypes.ExecuteExtendedMacroRes.ObjectIDofMacroObject", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ExecuteExtendedMacroRes_ObjectIDofMacroObject_xer_, &INTEGER_json_, &ExecuteExtendedMacroRes_ObjectIDofMacroObject_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExecuteExtendedMacroRes_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExecuteExtendedMacroRes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExecuteExtendedMacroRes_reserved5_oer_ext_arr_[0] = {};
+const int ExecuteExtendedMacroRes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExecuteExtendedMacroRes_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExecuteExtendedMacroRes_reserved5_oer_ext_arr_, 0, ExecuteExtendedMacroRes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t ExecuteExtendedMacroRes_reserved5_descr_ = { "@IsobusVTMessageTypes.ExecuteExtendedMacroRes.reserved5", &OCTETSTRING_ber_, &ExecuteExtendedMacroRes_reserved5_raw_, &OCTETSTRING_text_, &ExecuteExtendedMacroRes_reserved5_xer_, &OCTETSTRING_json_, &ExecuteExtendedMacroRes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExecuteExtendedMacroRes_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExecuteExtendedMacroRes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExecuteExtendedMacroRes_reserved6_oer_ext_arr_[0] = {};
+const int ExecuteExtendedMacroRes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExecuteExtendedMacroRes_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExecuteExtendedMacroRes_reserved6_oer_ext_arr_, 0, ExecuteExtendedMacroRes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t ExecuteExtendedMacroRes_reserved6_descr_ = { "@IsobusVTMessageTypes.ExecuteExtendedMacroRes.reserved6", &OCTETSTRING_ber_, &ExecuteExtendedMacroRes_reserved6_raw_, &OCTETSTRING_text_, &ExecuteExtendedMacroRes_reserved6_xer_, &OCTETSTRING_json_, &ExecuteExtendedMacroRes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExecuteExtendedMacroRes_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExecuteExtendedMacroRes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExecuteExtendedMacroRes_reserved7_oer_ext_arr_[0] = {};
+const int ExecuteExtendedMacroRes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExecuteExtendedMacroRes_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExecuteExtendedMacroRes_reserved7_oer_ext_arr_, 0, ExecuteExtendedMacroRes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ExecuteExtendedMacroRes_reserved7_descr_ = { "@IsobusVTMessageTypes.ExecuteExtendedMacroRes.reserved7", &OCTETSTRING_ber_, &ExecuteExtendedMacroRes_reserved7_raw_, &OCTETSTRING_text_, &ExecuteExtendedMacroRes_reserved7_xer_, &OCTETSTRING_json_, &ExecuteExtendedMacroRes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExecuteExtendedMacroRes_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExecuteExtendedMacroRes_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExecuteExtendedMacroRes_reserved8_oer_ext_arr_[0] = {};
+const int ExecuteExtendedMacroRes_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExecuteExtendedMacroRes_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExecuteExtendedMacroRes_reserved8_oer_ext_arr_, 0, ExecuteExtendedMacroRes_reserved8_oer_p_};
+const TTCN_Typedescriptor_t ExecuteExtendedMacroRes_reserved8_descr_ = { "@IsobusVTMessageTypes.ExecuteExtendedMacroRes.reserved8", &OCTETSTRING_ber_, &ExecuteExtendedMacroRes_reserved8_raw_, &OCTETSTRING_text_, &ExecuteExtendedMacroRes_reserved8_xer_, &OCTETSTRING_json_, &ExecuteExtendedMacroRes_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExecuteExtendedMacroRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ExecuteExtendedMacroRes
+const TTCN_Typedescriptor_t ExecuteExtendedMacroRes_descr_ = { "@IsobusVTMessageTypes.ExecuteExtendedMacroRes", NULL, &ExecuteExtendedMacroRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExecuteExtendedMacroReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ExecuteExtendedMacroReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ExecuteExtendedMacroReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.ExecuteExtendedMacroReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ExecuteExtendedMacroReq_vtfunction_xer_, &INTEGER_json_, &ExecuteExtendedMacroReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExecuteExtendedMacroReq_ObjectIDofMacroObject_xer_ = { {"ObjectIDofMacroObject>\n", "ObjectIDofMacroObject>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ExecuteExtendedMacroReq_ObjectIDofMacroObject_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ExecuteExtendedMacroReq_ObjectIDofMacroObject_descr_ = { "@IsobusVTMessageTypes.ExecuteExtendedMacroReq.ObjectIDofMacroObject", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ExecuteExtendedMacroReq_ObjectIDofMacroObject_xer_, &INTEGER_json_, &ExecuteExtendedMacroReq_ObjectIDofMacroObject_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExecuteExtendedMacroReq_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExecuteExtendedMacroReq_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExecuteExtendedMacroReq_reserved4_oer_ext_arr_[0] = {};
+const int ExecuteExtendedMacroReq_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExecuteExtendedMacroReq_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExecuteExtendedMacroReq_reserved4_oer_ext_arr_, 0, ExecuteExtendedMacroReq_reserved4_oer_p_};
+const TTCN_Typedescriptor_t ExecuteExtendedMacroReq_reserved4_descr_ = { "@IsobusVTMessageTypes.ExecuteExtendedMacroReq.reserved4", &OCTETSTRING_ber_, &ExecuteExtendedMacroReq_reserved4_raw_, &OCTETSTRING_text_, &ExecuteExtendedMacroReq_reserved4_xer_, &OCTETSTRING_json_, &ExecuteExtendedMacroReq_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExecuteExtendedMacroReq_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExecuteExtendedMacroReq_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExecuteExtendedMacroReq_reserved5_oer_ext_arr_[0] = {};
+const int ExecuteExtendedMacroReq_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExecuteExtendedMacroReq_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExecuteExtendedMacroReq_reserved5_oer_ext_arr_, 0, ExecuteExtendedMacroReq_reserved5_oer_p_};
+const TTCN_Typedescriptor_t ExecuteExtendedMacroReq_reserved5_descr_ = { "@IsobusVTMessageTypes.ExecuteExtendedMacroReq.reserved5", &OCTETSTRING_ber_, &ExecuteExtendedMacroReq_reserved5_raw_, &OCTETSTRING_text_, &ExecuteExtendedMacroReq_reserved5_xer_, &OCTETSTRING_json_, &ExecuteExtendedMacroReq_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExecuteExtendedMacroReq_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExecuteExtendedMacroReq_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExecuteExtendedMacroReq_reserved6_oer_ext_arr_[0] = {};
+const int ExecuteExtendedMacroReq_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExecuteExtendedMacroReq_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExecuteExtendedMacroReq_reserved6_oer_ext_arr_, 0, ExecuteExtendedMacroReq_reserved6_oer_p_};
+const TTCN_Typedescriptor_t ExecuteExtendedMacroReq_reserved6_descr_ = { "@IsobusVTMessageTypes.ExecuteExtendedMacroReq.reserved6", &OCTETSTRING_ber_, &ExecuteExtendedMacroReq_reserved6_raw_, &OCTETSTRING_text_, &ExecuteExtendedMacroReq_reserved6_xer_, &OCTETSTRING_json_, &ExecuteExtendedMacroReq_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExecuteExtendedMacroReq_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExecuteExtendedMacroReq_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExecuteExtendedMacroReq_reserved7_oer_ext_arr_[0] = {};
+const int ExecuteExtendedMacroReq_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExecuteExtendedMacroReq_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExecuteExtendedMacroReq_reserved7_oer_ext_arr_, 0, ExecuteExtendedMacroReq_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ExecuteExtendedMacroReq_reserved7_descr_ = { "@IsobusVTMessageTypes.ExecuteExtendedMacroReq.reserved7", &OCTETSTRING_ber_, &ExecuteExtendedMacroReq_reserved7_raw_, &OCTETSTRING_text_, &ExecuteExtendedMacroReq_reserved7_xer_, &OCTETSTRING_json_, &ExecuteExtendedMacroReq_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExecuteExtendedMacroReq_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExecuteExtendedMacroReq_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExecuteExtendedMacroReq_reserved8_oer_ext_arr_[0] = {};
+const int ExecuteExtendedMacroReq_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExecuteExtendedMacroReq_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExecuteExtendedMacroReq_reserved8_oer_ext_arr_, 0, ExecuteExtendedMacroReq_reserved8_oer_p_};
+const TTCN_Typedescriptor_t ExecuteExtendedMacroReq_reserved8_descr_ = { "@IsobusVTMessageTypes.ExecuteExtendedMacroReq.reserved8", &OCTETSTRING_ber_, &ExecuteExtendedMacroReq_reserved8_raw_, &OCTETSTRING_text_, &ExecuteExtendedMacroReq_reserved8_xer_, &OCTETSTRING_json_, &ExecuteExtendedMacroReq_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExecuteExtendedMacroReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ExecuteExtendedMacroReq
+const TTCN_Typedescriptor_t ExecuteExtendedMacroReq_descr_ = { "@IsobusVTMessageTypes.ExecuteExtendedMacroReq", NULL, &ExecuteExtendedMacroReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       LockUnlockMaskRes__ErrorCodes_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask_xer_ = { {"commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask>\n", "commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask>\n"}, {72, 72}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int LockUnlockMaskRes__ErrorCodes_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask_oer_ext_arr_[0] = {};
+const int LockUnlockMaskRes__ErrorCodes_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask_oer_p_[0] = {};
+const TTCN_OERdescriptor_t LockUnlockMaskRes__ErrorCodes_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LockUnlockMaskRes__ErrorCodes_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask_oer_ext_arr_, 0, LockUnlockMaskRes__ErrorCodes_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask_oer_p_};
+const TTCN_Typedescriptor_t LockUnlockMaskRes__ErrorCodes_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask_descr_ = { "@IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes.commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &LockUnlockMaskRes__ErrorCodes_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask_xer_, &BOOLEAN_json_, &LockUnlockMaskRes__ErrorCodes_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       LockUnlockMaskRes__ErrorCodes_lockCommandIgnoredAlreadyLocked_xer_ = { {"lockCommandIgnoredAlreadyLocked>\n", "lockCommandIgnoredAlreadyLocked>\n"}, {33, 33}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int LockUnlockMaskRes__ErrorCodes_lockCommandIgnoredAlreadyLocked_oer_ext_arr_[0] = {};
+const int LockUnlockMaskRes__ErrorCodes_lockCommandIgnoredAlreadyLocked_oer_p_[0] = {};
+const TTCN_OERdescriptor_t LockUnlockMaskRes__ErrorCodes_lockCommandIgnoredAlreadyLocked_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LockUnlockMaskRes__ErrorCodes_lockCommandIgnoredAlreadyLocked_oer_ext_arr_, 0, LockUnlockMaskRes__ErrorCodes_lockCommandIgnoredAlreadyLocked_oer_p_};
+const TTCN_Typedescriptor_t LockUnlockMaskRes__ErrorCodes_lockCommandIgnoredAlreadyLocked_descr_ = { "@IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes.lockCommandIgnoredAlreadyLocked", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &LockUnlockMaskRes__ErrorCodes_lockCommandIgnoredAlreadyLocked_xer_, &BOOLEAN_json_, &LockUnlockMaskRes__ErrorCodes_lockCommandIgnoredAlreadyLocked_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       LockUnlockMaskRes__ErrorCodes_unlockCommandIgnoredNotLocked_xer_ = { {"unlockCommandIgnoredNotLocked>\n", "unlockCommandIgnoredNotLocked>\n"}, {31, 31}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int LockUnlockMaskRes__ErrorCodes_unlockCommandIgnoredNotLocked_oer_ext_arr_[0] = {};
+const int LockUnlockMaskRes__ErrorCodes_unlockCommandIgnoredNotLocked_oer_p_[0] = {};
+const TTCN_OERdescriptor_t LockUnlockMaskRes__ErrorCodes_unlockCommandIgnoredNotLocked_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LockUnlockMaskRes__ErrorCodes_unlockCommandIgnoredNotLocked_oer_ext_arr_, 0, LockUnlockMaskRes__ErrorCodes_unlockCommandIgnoredNotLocked_oer_p_};
+const TTCN_Typedescriptor_t LockUnlockMaskRes__ErrorCodes_unlockCommandIgnoredNotLocked_descr_ = { "@IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes.unlockCommandIgnoredNotLocked", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &LockUnlockMaskRes__ErrorCodes_unlockCommandIgnoredNotLocked_xer_, &BOOLEAN_json_, &LockUnlockMaskRes__ErrorCodes_unlockCommandIgnoredNotLocked_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       LockUnlockMaskRes__ErrorCodes_lockCommandIgnoredAnAlarmMaskIsActive_xer_ = { {"lockCommandIgnoredAnAlarmMaskIsActive>\n", "lockCommandIgnoredAnAlarmMaskIsActive>\n"}, {39, 39}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int LockUnlockMaskRes__ErrorCodes_lockCommandIgnoredAnAlarmMaskIsActive_oer_ext_arr_[0] = {};
+const int LockUnlockMaskRes__ErrorCodes_lockCommandIgnoredAnAlarmMaskIsActive_oer_p_[0] = {};
+const TTCN_OERdescriptor_t LockUnlockMaskRes__ErrorCodes_lockCommandIgnoredAnAlarmMaskIsActive_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LockUnlockMaskRes__ErrorCodes_lockCommandIgnoredAnAlarmMaskIsActive_oer_ext_arr_, 0, LockUnlockMaskRes__ErrorCodes_lockCommandIgnoredAnAlarmMaskIsActive_oer_p_};
+const TTCN_Typedescriptor_t LockUnlockMaskRes__ErrorCodes_lockCommandIgnoredAnAlarmMaskIsActive_descr_ = { "@IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes.lockCommandIgnoredAnAlarmMaskIsActive", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &LockUnlockMaskRes__ErrorCodes_lockCommandIgnoredAnAlarmMaskIsActive_xer_, &BOOLEAN_json_, &LockUnlockMaskRes__ErrorCodes_lockCommandIgnoredAnAlarmMaskIsActive_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       LockUnlockMaskRes__ErrorCodes_unsolicitedUnlockTimeoutOccurred_xer_ = { {"unsolicitedUnlockTimeoutOccurred>\n", "unsolicitedUnlockTimeoutOccurred>\n"}, {34, 34}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int LockUnlockMaskRes__ErrorCodes_unsolicitedUnlockTimeoutOccurred_oer_ext_arr_[0] = {};
+const int LockUnlockMaskRes__ErrorCodes_unsolicitedUnlockTimeoutOccurred_oer_p_[0] = {};
+const TTCN_OERdescriptor_t LockUnlockMaskRes__ErrorCodes_unsolicitedUnlockTimeoutOccurred_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LockUnlockMaskRes__ErrorCodes_unsolicitedUnlockTimeoutOccurred_oer_ext_arr_, 0, LockUnlockMaskRes__ErrorCodes_unsolicitedUnlockTimeoutOccurred_oer_p_};
+const TTCN_Typedescriptor_t LockUnlockMaskRes__ErrorCodes_unsolicitedUnlockTimeoutOccurred_descr_ = { "@IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes.unsolicitedUnlockTimeoutOccurred", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &LockUnlockMaskRes__ErrorCodes_unsolicitedUnlockTimeoutOccurred_xer_, &BOOLEAN_json_, &LockUnlockMaskRes__ErrorCodes_unsolicitedUnlockTimeoutOccurred_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       LockUnlockMaskRes__ErrorCodes_unsolicitedUnlockThisMaskIsHidden_xer_ = { {"unsolicitedUnlockThisMaskIsHidden>\n", "unsolicitedUnlockThisMaskIsHidden>\n"}, {35, 35}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int LockUnlockMaskRes__ErrorCodes_unsolicitedUnlockThisMaskIsHidden_oer_ext_arr_[0] = {};
+const int LockUnlockMaskRes__ErrorCodes_unsolicitedUnlockThisMaskIsHidden_oer_p_[0] = {};
+const TTCN_OERdescriptor_t LockUnlockMaskRes__ErrorCodes_unsolicitedUnlockThisMaskIsHidden_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LockUnlockMaskRes__ErrorCodes_unsolicitedUnlockThisMaskIsHidden_oer_ext_arr_, 0, LockUnlockMaskRes__ErrorCodes_unsolicitedUnlockThisMaskIsHidden_oer_p_};
+const TTCN_Typedescriptor_t LockUnlockMaskRes__ErrorCodes_unsolicitedUnlockThisMaskIsHidden_descr_ = { "@IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes.unsolicitedUnlockThisMaskIsHidden", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &LockUnlockMaskRes__ErrorCodes_unsolicitedUnlockThisMaskIsHidden_xer_, &BOOLEAN_json_, &LockUnlockMaskRes__ErrorCodes_unsolicitedUnlockThisMaskIsHidden_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       LockUnlockMaskRes__ErrorCodes_unsolicitedUnlockOperatorInducedOrAnyOtherError_xer_ = { {"unsolicitedUnlockOperatorInducedOrAnyOtherError>\n", "unsolicitedUnlockOperatorInducedOrAnyOtherError>\n"}, {49, 49}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int LockUnlockMaskRes__ErrorCodes_unsolicitedUnlockOperatorInducedOrAnyOtherError_oer_ext_arr_[0] = {};
+const int LockUnlockMaskRes__ErrorCodes_unsolicitedUnlockOperatorInducedOrAnyOtherError_oer_p_[0] = {};
+const TTCN_OERdescriptor_t LockUnlockMaskRes__ErrorCodes_unsolicitedUnlockOperatorInducedOrAnyOtherError_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LockUnlockMaskRes__ErrorCodes_unsolicitedUnlockOperatorInducedOrAnyOtherError_oer_ext_arr_, 0, LockUnlockMaskRes__ErrorCodes_unsolicitedUnlockOperatorInducedOrAnyOtherError_oer_p_};
+const TTCN_Typedescriptor_t LockUnlockMaskRes__ErrorCodes_unsolicitedUnlockOperatorInducedOrAnyOtherError_descr_ = { "@IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes.unsolicitedUnlockOperatorInducedOrAnyOtherError", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &LockUnlockMaskRes__ErrorCodes_unsolicitedUnlockOperatorInducedOrAnyOtherError_xer_, &BOOLEAN_json_, &LockUnlockMaskRes__ErrorCodes_unsolicitedUnlockOperatorInducedOrAnyOtherError_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       LockUnlockMaskRes__ErrorCodes_anyOtherError_xer_ = { {"anyOtherError>\n", "anyOtherError>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int LockUnlockMaskRes__ErrorCodes_anyOtherError_oer_ext_arr_[0] = {};
+const int LockUnlockMaskRes__ErrorCodes_anyOtherError_oer_p_[0] = {};
+const TTCN_OERdescriptor_t LockUnlockMaskRes__ErrorCodes_anyOtherError_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LockUnlockMaskRes__ErrorCodes_anyOtherError_oer_ext_arr_, 0, LockUnlockMaskRes__ErrorCodes_anyOtherError_oer_p_};
+const TTCN_Typedescriptor_t LockUnlockMaskRes__ErrorCodes_anyOtherError_descr_ = { "@IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes.anyOtherError", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &LockUnlockMaskRes__ErrorCodes_anyOtherError_xer_, &BOOLEAN_json_, &LockUnlockMaskRes__ErrorCodes_anyOtherError_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t LockUnlockMaskRes__ErrorCodes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for LockUnlockMaskRes__ErrorCodes
+const TTCN_Typedescriptor_t LockUnlockMaskRes__ErrorCodes_descr_ = { "@IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes", NULL, &LockUnlockMaskRes__ErrorCodes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       LockUnlockMaskRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t LockUnlockMaskRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t LockUnlockMaskRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.LockUnlockMaskRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &LockUnlockMaskRes_vtfunction_xer_, &INTEGER_json_, &LockUnlockMaskRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t e__LockUnlockMaskReqCommand_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,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for e__LockUnlockMaskReqCommand
+const TTCN_Typedescriptor_t e__LockUnlockMaskReqCommand_descr_ = { "@IsobusVTMessageTypes.e_LockUnlockMaskReqCommand", NULL, &e__LockUnlockMaskReqCommand_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t LockUnlockMaskRes_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       LockUnlockMaskRes_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int LockUnlockMaskRes_reserved4_oer_ext_arr_[0] = {};
+const int LockUnlockMaskRes_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t LockUnlockMaskRes_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, LockUnlockMaskRes_reserved4_oer_ext_arr_, 0, LockUnlockMaskRes_reserved4_oer_p_};
+const TTCN_Typedescriptor_t LockUnlockMaskRes_reserved4_descr_ = { "@IsobusVTMessageTypes.LockUnlockMaskRes.reserved4", &OCTETSTRING_ber_, &LockUnlockMaskRes_reserved4_raw_, &OCTETSTRING_text_, &LockUnlockMaskRes_reserved4_xer_, &OCTETSTRING_json_, &LockUnlockMaskRes_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t LockUnlockMaskRes_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       LockUnlockMaskRes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int LockUnlockMaskRes_reserved5_oer_ext_arr_[0] = {};
+const int LockUnlockMaskRes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t LockUnlockMaskRes_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, LockUnlockMaskRes_reserved5_oer_ext_arr_, 0, LockUnlockMaskRes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t LockUnlockMaskRes_reserved5_descr_ = { "@IsobusVTMessageTypes.LockUnlockMaskRes.reserved5", &OCTETSTRING_ber_, &LockUnlockMaskRes_reserved5_raw_, &OCTETSTRING_text_, &LockUnlockMaskRes_reserved5_xer_, &OCTETSTRING_json_, &LockUnlockMaskRes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t LockUnlockMaskRes_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       LockUnlockMaskRes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int LockUnlockMaskRes_reserved6_oer_ext_arr_[0] = {};
+const int LockUnlockMaskRes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t LockUnlockMaskRes_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, LockUnlockMaskRes_reserved6_oer_ext_arr_, 0, LockUnlockMaskRes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t LockUnlockMaskRes_reserved6_descr_ = { "@IsobusVTMessageTypes.LockUnlockMaskRes.reserved6", &OCTETSTRING_ber_, &LockUnlockMaskRes_reserved6_raw_, &OCTETSTRING_text_, &LockUnlockMaskRes_reserved6_xer_, &OCTETSTRING_json_, &LockUnlockMaskRes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t LockUnlockMaskRes_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       LockUnlockMaskRes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int LockUnlockMaskRes_reserved7_oer_ext_arr_[0] = {};
+const int LockUnlockMaskRes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t LockUnlockMaskRes_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, LockUnlockMaskRes_reserved7_oer_ext_arr_, 0, LockUnlockMaskRes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t LockUnlockMaskRes_reserved7_descr_ = { "@IsobusVTMessageTypes.LockUnlockMaskRes.reserved7", &OCTETSTRING_ber_, &LockUnlockMaskRes_reserved7_raw_, &OCTETSTRING_text_, &LockUnlockMaskRes_reserved7_xer_, &OCTETSTRING_json_, &LockUnlockMaskRes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t LockUnlockMaskRes_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       LockUnlockMaskRes_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int LockUnlockMaskRes_reserved8_oer_ext_arr_[0] = {};
+const int LockUnlockMaskRes_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t LockUnlockMaskRes_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, LockUnlockMaskRes_reserved8_oer_ext_arr_, 0, LockUnlockMaskRes_reserved8_oer_p_};
+const TTCN_Typedescriptor_t LockUnlockMaskRes_reserved8_descr_ = { "@IsobusVTMessageTypes.LockUnlockMaskRes.reserved8", &OCTETSTRING_ber_, &LockUnlockMaskRes_reserved8_raw_, &OCTETSTRING_text_, &LockUnlockMaskRes_reserved8_xer_, &OCTETSTRING_json_, &LockUnlockMaskRes_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t LockUnlockMaskRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for LockUnlockMaskRes
+const TTCN_Typedescriptor_t LockUnlockMaskRes_descr_ = { "@IsobusVTMessageTypes.LockUnlockMaskRes", NULL, &LockUnlockMaskRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       LockUnlockMaskReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t LockUnlockMaskReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t LockUnlockMaskReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.LockUnlockMaskReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &LockUnlockMaskReq_vtfunction_xer_, &INTEGER_json_, &LockUnlockMaskReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       LockUnlockMaskReq_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock_xer_ = { {"ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock>\n", "ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock>\n"}, {57, 57}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t LockUnlockMaskReq_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t LockUnlockMaskReq_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock_descr_ = { "@IsobusVTMessageTypes.LockUnlockMaskReq.ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &LockUnlockMaskReq_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock_xer_, &INTEGER_json_, &LockUnlockMaskReq_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       LockUnlockMaskReq_lockTimeout_xer_ = { {"lockTimeout>\n", "lockTimeout>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t LockUnlockMaskReq_lockTimeout_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t LockUnlockMaskReq_lockTimeout_descr_ = { "@IsobusVTMessageTypes.LockUnlockMaskReq.lockTimeout", &INTEGER_ber_, &IsobusMessageTypes::INT2_raw_, &INTEGER_text_, &LockUnlockMaskReq_lockTimeout_xer_, &INTEGER_json_, &LockUnlockMaskReq_lockTimeout_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t LockUnlockMaskReq_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       LockUnlockMaskReq_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int LockUnlockMaskReq_reserved7_oer_ext_arr_[0] = {};
+const int LockUnlockMaskReq_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t LockUnlockMaskReq_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, LockUnlockMaskReq_reserved7_oer_ext_arr_, 0, LockUnlockMaskReq_reserved7_oer_p_};
+const TTCN_Typedescriptor_t LockUnlockMaskReq_reserved7_descr_ = { "@IsobusVTMessageTypes.LockUnlockMaskReq.reserved7", &OCTETSTRING_ber_, &LockUnlockMaskReq_reserved7_raw_, &OCTETSTRING_text_, &LockUnlockMaskReq_reserved7_xer_, &OCTETSTRING_json_, &LockUnlockMaskReq_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t LockUnlockMaskReq_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       LockUnlockMaskReq_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int LockUnlockMaskReq_reserved8_oer_ext_arr_[0] = {};
+const int LockUnlockMaskReq_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t LockUnlockMaskReq_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, LockUnlockMaskReq_reserved8_oer_ext_arr_, 0, LockUnlockMaskReq_reserved8_oer_p_};
+const TTCN_Typedescriptor_t LockUnlockMaskReq_reserved8_descr_ = { "@IsobusVTMessageTypes.LockUnlockMaskReq.reserved8", &OCTETSTRING_ber_, &LockUnlockMaskReq_reserved8_raw_, &OCTETSTRING_text_, &LockUnlockMaskReq_reserved8_xer_, &OCTETSTRING_json_, &LockUnlockMaskReq_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t LockUnlockMaskReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for LockUnlockMaskReq
+const TTCN_Typedescriptor_t LockUnlockMaskReq_descr_ = { "@IsobusVTMessageTypes.LockUnlockMaskReq", NULL, &LockUnlockMaskReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExecuteMacroReq__ErrorCodes_objectIDdoesNotExist_xer_ = { {"objectIDdoesNotExist>\n", "objectIDdoesNotExist>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExecuteMacroReq__ErrorCodes_objectIDdoesNotExist_oer_ext_arr_[0] = {};
+const int ExecuteMacroReq__ErrorCodes_objectIDdoesNotExist_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExecuteMacroReq__ErrorCodes_objectIDdoesNotExist_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ExecuteMacroReq__ErrorCodes_objectIDdoesNotExist_oer_ext_arr_, 0, ExecuteMacroReq__ErrorCodes_objectIDdoesNotExist_oer_p_};
+const TTCN_Typedescriptor_t ExecuteMacroReq__ErrorCodes_objectIDdoesNotExist_descr_ = { "@IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes.objectIDdoesNotExist", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ExecuteMacroReq__ErrorCodes_objectIDdoesNotExist_xer_, &BOOLEAN_json_, &ExecuteMacroReq__ErrorCodes_objectIDdoesNotExist_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExecuteMacroReq__ErrorCodes_objectIDisNotAMacroObject_xer_ = { {"objectIDisNotAMacroObject>\n", "objectIDisNotAMacroObject>\n"}, {27, 27}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExecuteMacroReq__ErrorCodes_objectIDisNotAMacroObject_oer_ext_arr_[0] = {};
+const int ExecuteMacroReq__ErrorCodes_objectIDisNotAMacroObject_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExecuteMacroReq__ErrorCodes_objectIDisNotAMacroObject_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ExecuteMacroReq__ErrorCodes_objectIDisNotAMacroObject_oer_ext_arr_, 0, ExecuteMacroReq__ErrorCodes_objectIDisNotAMacroObject_oer_p_};
+const TTCN_Typedescriptor_t ExecuteMacroReq__ErrorCodes_objectIDisNotAMacroObject_descr_ = { "@IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes.objectIDisNotAMacroObject", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ExecuteMacroReq__ErrorCodes_objectIDisNotAMacroObject_xer_, &BOOLEAN_json_, &ExecuteMacroReq__ErrorCodes_objectIDisNotAMacroObject_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExecuteMacroReq__ErrorCodes_anyOtherError_xer_ = { {"anyOtherError>\n", "anyOtherError>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExecuteMacroReq__ErrorCodes_anyOtherError_oer_ext_arr_[0] = {};
+const int ExecuteMacroReq__ErrorCodes_anyOtherError_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExecuteMacroReq__ErrorCodes_anyOtherError_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ExecuteMacroReq__ErrorCodes_anyOtherError_oer_ext_arr_, 0, ExecuteMacroReq__ErrorCodes_anyOtherError_oer_p_};
+const TTCN_Typedescriptor_t ExecuteMacroReq__ErrorCodes_anyOtherError_descr_ = { "@IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes.anyOtherError", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ExecuteMacroReq__ErrorCodes_anyOtherError_xer_, &BOOLEAN_json_, &ExecuteMacroReq__ErrorCodes_anyOtherError_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExecuteMacroReq__ErrorCodes_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExecuteMacroReq__ErrorCodes_reserved3_oer_ext_arr_[0] = {};
+const int ExecuteMacroReq__ErrorCodes_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExecuteMacroReq__ErrorCodes_reserved3_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ExecuteMacroReq__ErrorCodes_reserved3_oer_ext_arr_, 0, ExecuteMacroReq__ErrorCodes_reserved3_oer_p_};
+const TTCN_Typedescriptor_t ExecuteMacroReq__ErrorCodes_reserved3_descr_ = { "@IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes.reserved3", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ExecuteMacroReq__ErrorCodes_reserved3_xer_, &BOOLEAN_json_, &ExecuteMacroReq__ErrorCodes_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExecuteMacroReq__ErrorCodes_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExecuteMacroReq__ErrorCodes_reserved4_oer_ext_arr_[0] = {};
+const int ExecuteMacroReq__ErrorCodes_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExecuteMacroReq__ErrorCodes_reserved4_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ExecuteMacroReq__ErrorCodes_reserved4_oer_ext_arr_, 0, ExecuteMacroReq__ErrorCodes_reserved4_oer_p_};
+const TTCN_Typedescriptor_t ExecuteMacroReq__ErrorCodes_reserved4_descr_ = { "@IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes.reserved4", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ExecuteMacroReq__ErrorCodes_reserved4_xer_, &BOOLEAN_json_, &ExecuteMacroReq__ErrorCodes_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExecuteMacroReq__ErrorCodes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExecuteMacroReq__ErrorCodes_reserved5_oer_ext_arr_[0] = {};
+const int ExecuteMacroReq__ErrorCodes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExecuteMacroReq__ErrorCodes_reserved5_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ExecuteMacroReq__ErrorCodes_reserved5_oer_ext_arr_, 0, ExecuteMacroReq__ErrorCodes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t ExecuteMacroReq__ErrorCodes_reserved5_descr_ = { "@IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes.reserved5", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ExecuteMacroReq__ErrorCodes_reserved5_xer_, &BOOLEAN_json_, &ExecuteMacroReq__ErrorCodes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExecuteMacroReq__ErrorCodes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExecuteMacroReq__ErrorCodes_reserved6_oer_ext_arr_[0] = {};
+const int ExecuteMacroReq__ErrorCodes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExecuteMacroReq__ErrorCodes_reserved6_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ExecuteMacroReq__ErrorCodes_reserved6_oer_ext_arr_, 0, ExecuteMacroReq__ErrorCodes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t ExecuteMacroReq__ErrorCodes_reserved6_descr_ = { "@IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes.reserved6", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ExecuteMacroReq__ErrorCodes_reserved6_xer_, &BOOLEAN_json_, &ExecuteMacroReq__ErrorCodes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExecuteMacroReq__ErrorCodes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExecuteMacroReq__ErrorCodes_reserved7_oer_ext_arr_[0] = {};
+const int ExecuteMacroReq__ErrorCodes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExecuteMacroReq__ErrorCodes_reserved7_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ExecuteMacroReq__ErrorCodes_reserved7_oer_ext_arr_, 0, ExecuteMacroReq__ErrorCodes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ExecuteMacroReq__ErrorCodes_reserved7_descr_ = { "@IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes.reserved7", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ExecuteMacroReq__ErrorCodes_reserved7_xer_, &BOOLEAN_json_, &ExecuteMacroReq__ErrorCodes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExecuteMacroReq__ErrorCodes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ExecuteMacroReq__ErrorCodes
+const TTCN_Typedescriptor_t ExecuteMacroReq__ErrorCodes_descr_ = { "@IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes", NULL, &ExecuteMacroReq__ErrorCodes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExecuteMacroRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ExecuteMacroRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ExecuteMacroRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.ExecuteMacroRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ExecuteMacroRes_vtfunction_xer_, &INTEGER_json_, &ExecuteMacroRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExecuteMacroRes_objectIDofMacroObject_xer_ = { {"objectIDofMacroObject>\n", "objectIDofMacroObject>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ExecuteMacroRes_objectIDofMacroObject_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ExecuteMacroRes_objectIDofMacroObject_descr_ = { "@IsobusVTMessageTypes.ExecuteMacroRes.objectIDofMacroObject", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ExecuteMacroRes_objectIDofMacroObject_xer_, &INTEGER_json_, &ExecuteMacroRes_objectIDofMacroObject_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExecuteMacroRes_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExecuteMacroRes_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExecuteMacroRes_reserved4_oer_ext_arr_[0] = {};
+const int ExecuteMacroRes_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExecuteMacroRes_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExecuteMacroRes_reserved4_oer_ext_arr_, 0, ExecuteMacroRes_reserved4_oer_p_};
+const TTCN_Typedescriptor_t ExecuteMacroRes_reserved4_descr_ = { "@IsobusVTMessageTypes.ExecuteMacroRes.reserved4", &OCTETSTRING_ber_, &ExecuteMacroRes_reserved4_raw_, &OCTETSTRING_text_, &ExecuteMacroRes_reserved4_xer_, &OCTETSTRING_json_, &ExecuteMacroRes_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExecuteMacroRes_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExecuteMacroRes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExecuteMacroRes_reserved5_oer_ext_arr_[0] = {};
+const int ExecuteMacroRes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExecuteMacroRes_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExecuteMacroRes_reserved5_oer_ext_arr_, 0, ExecuteMacroRes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t ExecuteMacroRes_reserved5_descr_ = { "@IsobusVTMessageTypes.ExecuteMacroRes.reserved5", &OCTETSTRING_ber_, &ExecuteMacroRes_reserved5_raw_, &OCTETSTRING_text_, &ExecuteMacroRes_reserved5_xer_, &OCTETSTRING_json_, &ExecuteMacroRes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExecuteMacroRes_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExecuteMacroRes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExecuteMacroRes_reserved6_oer_ext_arr_[0] = {};
+const int ExecuteMacroRes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExecuteMacroRes_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExecuteMacroRes_reserved6_oer_ext_arr_, 0, ExecuteMacroRes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t ExecuteMacroRes_reserved6_descr_ = { "@IsobusVTMessageTypes.ExecuteMacroRes.reserved6", &OCTETSTRING_ber_, &ExecuteMacroRes_reserved6_raw_, &OCTETSTRING_text_, &ExecuteMacroRes_reserved6_xer_, &OCTETSTRING_json_, &ExecuteMacroRes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExecuteMacroRes_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExecuteMacroRes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExecuteMacroRes_reserved7_oer_ext_arr_[0] = {};
+const int ExecuteMacroRes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExecuteMacroRes_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExecuteMacroRes_reserved7_oer_ext_arr_, 0, ExecuteMacroRes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ExecuteMacroRes_reserved7_descr_ = { "@IsobusVTMessageTypes.ExecuteMacroRes.reserved7", &OCTETSTRING_ber_, &ExecuteMacroRes_reserved7_raw_, &OCTETSTRING_text_, &ExecuteMacroRes_reserved7_xer_, &OCTETSTRING_json_, &ExecuteMacroRes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExecuteMacroRes_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExecuteMacroRes_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExecuteMacroRes_reserved8_oer_ext_arr_[0] = {};
+const int ExecuteMacroRes_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExecuteMacroRes_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExecuteMacroRes_reserved8_oer_ext_arr_, 0, ExecuteMacroRes_reserved8_oer_p_};
+const TTCN_Typedescriptor_t ExecuteMacroRes_reserved8_descr_ = { "@IsobusVTMessageTypes.ExecuteMacroRes.reserved8", &OCTETSTRING_ber_, &ExecuteMacroRes_reserved8_raw_, &OCTETSTRING_text_, &ExecuteMacroRes_reserved8_xer_, &OCTETSTRING_json_, &ExecuteMacroRes_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExecuteMacroRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ExecuteMacroRes
+const TTCN_Typedescriptor_t ExecuteMacroRes_descr_ = { "@IsobusVTMessageTypes.ExecuteMacroRes", NULL, &ExecuteMacroRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExecuteMacroReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ExecuteMacroReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ExecuteMacroReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.ExecuteMacroReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ExecuteMacroReq_vtfunction_xer_, &INTEGER_json_, &ExecuteMacroReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExecuteMacroReq_objectIDofMacroObject_xer_ = { {"objectIDofMacroObject>\n", "objectIDofMacroObject>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ExecuteMacroReq_objectIDofMacroObject_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ExecuteMacroReq_objectIDofMacroObject_descr_ = { "@IsobusVTMessageTypes.ExecuteMacroReq.objectIDofMacroObject", &INTEGER_ber_, &ValidObjectID_raw_, &INTEGER_text_, &ExecuteMacroReq_objectIDofMacroObject_xer_, &INTEGER_json_, &ExecuteMacroReq_objectIDofMacroObject_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExecuteMacroReq_reserved3_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExecuteMacroReq_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExecuteMacroReq_reserved3_oer_ext_arr_[0] = {};
+const int ExecuteMacroReq_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExecuteMacroReq_reserved3_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExecuteMacroReq_reserved3_oer_ext_arr_, 0, ExecuteMacroReq_reserved3_oer_p_};
+const TTCN_Typedescriptor_t ExecuteMacroReq_reserved3_descr_ = { "@IsobusVTMessageTypes.ExecuteMacroReq.reserved3", &OCTETSTRING_ber_, &ExecuteMacroReq_reserved3_raw_, &OCTETSTRING_text_, &ExecuteMacroReq_reserved3_xer_, &OCTETSTRING_json_, &ExecuteMacroReq_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExecuteMacroReq_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExecuteMacroReq_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExecuteMacroReq_reserved4_oer_ext_arr_[0] = {};
+const int ExecuteMacroReq_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExecuteMacroReq_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExecuteMacroReq_reserved4_oer_ext_arr_, 0, ExecuteMacroReq_reserved4_oer_p_};
+const TTCN_Typedescriptor_t ExecuteMacroReq_reserved4_descr_ = { "@IsobusVTMessageTypes.ExecuteMacroReq.reserved4", &OCTETSTRING_ber_, &ExecuteMacroReq_reserved4_raw_, &OCTETSTRING_text_, &ExecuteMacroReq_reserved4_xer_, &OCTETSTRING_json_, &ExecuteMacroReq_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExecuteMacroReq_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExecuteMacroReq_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExecuteMacroReq_reserved5_oer_ext_arr_[0] = {};
+const int ExecuteMacroReq_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExecuteMacroReq_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExecuteMacroReq_reserved5_oer_ext_arr_, 0, ExecuteMacroReq_reserved5_oer_p_};
+const TTCN_Typedescriptor_t ExecuteMacroReq_reserved5_descr_ = { "@IsobusVTMessageTypes.ExecuteMacroReq.reserved5", &OCTETSTRING_ber_, &ExecuteMacroReq_reserved5_raw_, &OCTETSTRING_text_, &ExecuteMacroReq_reserved5_xer_, &OCTETSTRING_json_, &ExecuteMacroReq_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExecuteMacroReq_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExecuteMacroReq_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExecuteMacroReq_reserved6_oer_ext_arr_[0] = {};
+const int ExecuteMacroReq_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExecuteMacroReq_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExecuteMacroReq_reserved6_oer_ext_arr_, 0, ExecuteMacroReq_reserved6_oer_p_};
+const TTCN_Typedescriptor_t ExecuteMacroReq_reserved6_descr_ = { "@IsobusVTMessageTypes.ExecuteMacroReq.reserved6", &OCTETSTRING_ber_, &ExecuteMacroReq_reserved6_raw_, &OCTETSTRING_text_, &ExecuteMacroReq_reserved6_xer_, &OCTETSTRING_json_, &ExecuteMacroReq_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExecuteMacroReq_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExecuteMacroReq_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExecuteMacroReq_reserved7_oer_ext_arr_[0] = {};
+const int ExecuteMacroReq_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExecuteMacroReq_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExecuteMacroReq_reserved7_oer_ext_arr_, 0, ExecuteMacroReq_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ExecuteMacroReq_reserved7_descr_ = { "@IsobusVTMessageTypes.ExecuteMacroReq.reserved7", &OCTETSTRING_ber_, &ExecuteMacroReq_reserved7_raw_, &OCTETSTRING_text_, &ExecuteMacroReq_reserved7_xer_, &OCTETSTRING_json_, &ExecuteMacroReq_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExecuteMacroReq_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExecuteMacroReq_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExecuteMacroReq_reserved8_oer_ext_arr_[0] = {};
+const int ExecuteMacroReq_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExecuteMacroReq_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExecuteMacroReq_reserved8_oer_ext_arr_, 0, ExecuteMacroReq_reserved8_oer_p_};
+const TTCN_Typedescriptor_t ExecuteMacroReq_reserved8_descr_ = { "@IsobusVTMessageTypes.ExecuteMacroReq.reserved8", &OCTETSTRING_ber_, &ExecuteMacroReq_reserved8_raw_, &OCTETSTRING_text_, &ExecuteMacroReq_reserved8_xer_, &OCTETSTRING_json_, &ExecuteMacroReq_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExecuteMacroReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ExecuteMacroReq
+const TTCN_Typedescriptor_t ExecuteMacroReq_descr_ = { "@IsobusVTMessageTypes.ExecuteMacroReq", NULL, &ExecuteMacroReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetMemoryReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t GetMemoryReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t GetMemoryReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.GetMemoryReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &GetMemoryReq_vtfunction_xer_, &INTEGER_json_, &GetMemoryReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetMemoryReq_reserved2_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetMemoryReq_reserved2_xer_ = { {"reserved2>\n", "reserved2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetMemoryReq_reserved2_oer_ext_arr_[0] = {};
+const int GetMemoryReq_reserved2_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetMemoryReq_reserved2_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetMemoryReq_reserved2_oer_ext_arr_, 0, GetMemoryReq_reserved2_oer_p_};
+const TTCN_Typedescriptor_t GetMemoryReq_reserved2_descr_ = { "@IsobusVTMessageTypes.GetMemoryReq.reserved2", &OCTETSTRING_ber_, &GetMemoryReq_reserved2_raw_, &OCTETSTRING_text_, &GetMemoryReq_reserved2_xer_, &OCTETSTRING_json_, &GetMemoryReq_reserved2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetMemoryReq_memoryRequired_xer_ = { {"memoryRequired>\n", "memoryRequired>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t GetMemoryReq_memoryRequired_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t GetMemoryReq_memoryRequired_descr_ = { "@IsobusVTMessageTypes.GetMemoryReq.memoryRequired", &INTEGER_ber_, &IsobusMessageTypes::INT3_raw_, &INTEGER_text_, &GetMemoryReq_memoryRequired_xer_, &INTEGER_json_, &GetMemoryReq_memoryRequired_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetMemoryReq_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetMemoryReq_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetMemoryReq_reserved7_oer_ext_arr_[0] = {};
+const int GetMemoryReq_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetMemoryReq_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetMemoryReq_reserved7_oer_ext_arr_, 0, GetMemoryReq_reserved7_oer_p_};
+const TTCN_Typedescriptor_t GetMemoryReq_reserved7_descr_ = { "@IsobusVTMessageTypes.GetMemoryReq.reserved7", &OCTETSTRING_ber_, &GetMemoryReq_reserved7_raw_, &OCTETSTRING_text_, &GetMemoryReq_reserved7_xer_, &OCTETSTRING_json_, &GetMemoryReq_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetMemoryReq_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetMemoryReq_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetMemoryReq_reserved8_oer_ext_arr_[0] = {};
+const int GetMemoryReq_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetMemoryReq_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetMemoryReq_reserved8_oer_ext_arr_, 0, GetMemoryReq_reserved8_oer_p_};
+const TTCN_Typedescriptor_t GetMemoryReq_reserved8_descr_ = { "@IsobusVTMessageTypes.GetMemoryReq.reserved8", &OCTETSTRING_ber_, &GetMemoryReq_reserved8_raw_, &OCTETSTRING_text_, &GetMemoryReq_reserved8_xer_, &OCTETSTRING_json_, &GetMemoryReq_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetMemoryReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for GetMemoryReq
+const TTCN_Typedescriptor_t GetMemoryReq_descr_ = { "@IsobusVTMessageTypes.GetMemoryReq", NULL, &GetMemoryReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t e__GetMemoryResVersionNumber_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,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for e__GetMemoryResVersionNumber
+const TTCN_Typedescriptor_t e__GetMemoryResVersionNumber_descr_ = { "@IsobusVTMessageTypes.e_GetMemoryResVersionNumber", NULL, &e__GetMemoryResVersionNumber_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t e__GetMemoryResStatus_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,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for e__GetMemoryResStatus
+const TTCN_Typedescriptor_t e__GetMemoryResStatus_descr_ = { "@IsobusVTMessageTypes.e_GetMemoryResStatus", NULL, &e__GetMemoryResStatus_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetMemoryRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t GetMemoryRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t GetMemoryRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.GetMemoryRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &GetMemoryRes_vtfunction_xer_, &INTEGER_json_, &GetMemoryRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetMemoryRes_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetMemoryRes_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetMemoryRes_reserved4_oer_ext_arr_[0] = {};
+const int GetMemoryRes_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetMemoryRes_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetMemoryRes_reserved4_oer_ext_arr_, 0, GetMemoryRes_reserved4_oer_p_};
+const TTCN_Typedescriptor_t GetMemoryRes_reserved4_descr_ = { "@IsobusVTMessageTypes.GetMemoryRes.reserved4", &OCTETSTRING_ber_, &GetMemoryRes_reserved4_raw_, &OCTETSTRING_text_, &GetMemoryRes_reserved4_xer_, &OCTETSTRING_json_, &GetMemoryRes_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetMemoryRes_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetMemoryRes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetMemoryRes_reserved5_oer_ext_arr_[0] = {};
+const int GetMemoryRes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetMemoryRes_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetMemoryRes_reserved5_oer_ext_arr_, 0, GetMemoryRes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t GetMemoryRes_reserved5_descr_ = { "@IsobusVTMessageTypes.GetMemoryRes.reserved5", &OCTETSTRING_ber_, &GetMemoryRes_reserved5_raw_, &OCTETSTRING_text_, &GetMemoryRes_reserved5_xer_, &OCTETSTRING_json_, &GetMemoryRes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetMemoryRes_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetMemoryRes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetMemoryRes_reserved6_oer_ext_arr_[0] = {};
+const int GetMemoryRes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetMemoryRes_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetMemoryRes_reserved6_oer_ext_arr_, 0, GetMemoryRes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t GetMemoryRes_reserved6_descr_ = { "@IsobusVTMessageTypes.GetMemoryRes.reserved6", &OCTETSTRING_ber_, &GetMemoryRes_reserved6_raw_, &OCTETSTRING_text_, &GetMemoryRes_reserved6_xer_, &OCTETSTRING_json_, &GetMemoryRes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetMemoryRes_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetMemoryRes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetMemoryRes_reserved7_oer_ext_arr_[0] = {};
+const int GetMemoryRes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetMemoryRes_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetMemoryRes_reserved7_oer_ext_arr_, 0, GetMemoryRes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t GetMemoryRes_reserved7_descr_ = { "@IsobusVTMessageTypes.GetMemoryRes.reserved7", &OCTETSTRING_ber_, &GetMemoryRes_reserved7_raw_, &OCTETSTRING_text_, &GetMemoryRes_reserved7_xer_, &OCTETSTRING_json_, &GetMemoryRes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetMemoryRes_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetMemoryRes_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetMemoryRes_reserved8_oer_ext_arr_[0] = {};
+const int GetMemoryRes_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetMemoryRes_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetMemoryRes_reserved8_oer_ext_arr_, 0, GetMemoryRes_reserved8_oer_p_};
+const TTCN_Typedescriptor_t GetMemoryRes_reserved8_descr_ = { "@IsobusVTMessageTypes.GetMemoryRes.reserved8", &OCTETSTRING_ber_, &GetMemoryRes_reserved8_raw_, &OCTETSTRING_text_, &GetMemoryRes_reserved8_xer_, &OCTETSTRING_json_, &GetMemoryRes_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetMemoryRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for GetMemoryRes
+const TTCN_Typedescriptor_t GetMemoryRes_descr_ = { "@IsobusVTMessageTypes.GetMemoryRes", NULL, &GetMemoryRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetNumberOfSoftKeysReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t GetNumberOfSoftKeysReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t GetNumberOfSoftKeysReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.GetNumberOfSoftKeysReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &GetNumberOfSoftKeysReq_vtfunction_xer_, &INTEGER_json_, &GetNumberOfSoftKeysReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetNumberOfSoftKeysReq_reserved2_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetNumberOfSoftKeysReq_reserved2_xer_ = { {"reserved2>\n", "reserved2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetNumberOfSoftKeysReq_reserved2_oer_ext_arr_[0] = {};
+const int GetNumberOfSoftKeysReq_reserved2_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetNumberOfSoftKeysReq_reserved2_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetNumberOfSoftKeysReq_reserved2_oer_ext_arr_, 0, GetNumberOfSoftKeysReq_reserved2_oer_p_};
+const TTCN_Typedescriptor_t GetNumberOfSoftKeysReq_reserved2_descr_ = { "@IsobusVTMessageTypes.GetNumberOfSoftKeysReq.reserved2", &OCTETSTRING_ber_, &GetNumberOfSoftKeysReq_reserved2_raw_, &OCTETSTRING_text_, &GetNumberOfSoftKeysReq_reserved2_xer_, &OCTETSTRING_json_, &GetNumberOfSoftKeysReq_reserved2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetNumberOfSoftKeysReq_reserved3_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetNumberOfSoftKeysReq_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetNumberOfSoftKeysReq_reserved3_oer_ext_arr_[0] = {};
+const int GetNumberOfSoftKeysReq_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetNumberOfSoftKeysReq_reserved3_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetNumberOfSoftKeysReq_reserved3_oer_ext_arr_, 0, GetNumberOfSoftKeysReq_reserved3_oer_p_};
+const TTCN_Typedescriptor_t GetNumberOfSoftKeysReq_reserved3_descr_ = { "@IsobusVTMessageTypes.GetNumberOfSoftKeysReq.reserved3", &OCTETSTRING_ber_, &GetNumberOfSoftKeysReq_reserved3_raw_, &OCTETSTRING_text_, &GetNumberOfSoftKeysReq_reserved3_xer_, &OCTETSTRING_json_, &GetNumberOfSoftKeysReq_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetNumberOfSoftKeysReq_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetNumberOfSoftKeysReq_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetNumberOfSoftKeysReq_reserved4_oer_ext_arr_[0] = {};
+const int GetNumberOfSoftKeysReq_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetNumberOfSoftKeysReq_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetNumberOfSoftKeysReq_reserved4_oer_ext_arr_, 0, GetNumberOfSoftKeysReq_reserved4_oer_p_};
+const TTCN_Typedescriptor_t GetNumberOfSoftKeysReq_reserved4_descr_ = { "@IsobusVTMessageTypes.GetNumberOfSoftKeysReq.reserved4", &OCTETSTRING_ber_, &GetNumberOfSoftKeysReq_reserved4_raw_, &OCTETSTRING_text_, &GetNumberOfSoftKeysReq_reserved4_xer_, &OCTETSTRING_json_, &GetNumberOfSoftKeysReq_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetNumberOfSoftKeysReq_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetNumberOfSoftKeysReq_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetNumberOfSoftKeysReq_reserved5_oer_ext_arr_[0] = {};
+const int GetNumberOfSoftKeysReq_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetNumberOfSoftKeysReq_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetNumberOfSoftKeysReq_reserved5_oer_ext_arr_, 0, GetNumberOfSoftKeysReq_reserved5_oer_p_};
+const TTCN_Typedescriptor_t GetNumberOfSoftKeysReq_reserved5_descr_ = { "@IsobusVTMessageTypes.GetNumberOfSoftKeysReq.reserved5", &OCTETSTRING_ber_, &GetNumberOfSoftKeysReq_reserved5_raw_, &OCTETSTRING_text_, &GetNumberOfSoftKeysReq_reserved5_xer_, &OCTETSTRING_json_, &GetNumberOfSoftKeysReq_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetNumberOfSoftKeysReq_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetNumberOfSoftKeysReq_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetNumberOfSoftKeysReq_reserved6_oer_ext_arr_[0] = {};
+const int GetNumberOfSoftKeysReq_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetNumberOfSoftKeysReq_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetNumberOfSoftKeysReq_reserved6_oer_ext_arr_, 0, GetNumberOfSoftKeysReq_reserved6_oer_p_};
+const TTCN_Typedescriptor_t GetNumberOfSoftKeysReq_reserved6_descr_ = { "@IsobusVTMessageTypes.GetNumberOfSoftKeysReq.reserved6", &OCTETSTRING_ber_, &GetNumberOfSoftKeysReq_reserved6_raw_, &OCTETSTRING_text_, &GetNumberOfSoftKeysReq_reserved6_xer_, &OCTETSTRING_json_, &GetNumberOfSoftKeysReq_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetNumberOfSoftKeysReq_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetNumberOfSoftKeysReq_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetNumberOfSoftKeysReq_reserved7_oer_ext_arr_[0] = {};
+const int GetNumberOfSoftKeysReq_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetNumberOfSoftKeysReq_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetNumberOfSoftKeysReq_reserved7_oer_ext_arr_, 0, GetNumberOfSoftKeysReq_reserved7_oer_p_};
+const TTCN_Typedescriptor_t GetNumberOfSoftKeysReq_reserved7_descr_ = { "@IsobusVTMessageTypes.GetNumberOfSoftKeysReq.reserved7", &OCTETSTRING_ber_, &GetNumberOfSoftKeysReq_reserved7_raw_, &OCTETSTRING_text_, &GetNumberOfSoftKeysReq_reserved7_xer_, &OCTETSTRING_json_, &GetNumberOfSoftKeysReq_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetNumberOfSoftKeysReq_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetNumberOfSoftKeysReq_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetNumberOfSoftKeysReq_reserved8_oer_ext_arr_[0] = {};
+const int GetNumberOfSoftKeysReq_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetNumberOfSoftKeysReq_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetNumberOfSoftKeysReq_reserved8_oer_ext_arr_, 0, GetNumberOfSoftKeysReq_reserved8_oer_p_};
+const TTCN_Typedescriptor_t GetNumberOfSoftKeysReq_reserved8_descr_ = { "@IsobusVTMessageTypes.GetNumberOfSoftKeysReq.reserved8", &OCTETSTRING_ber_, &GetNumberOfSoftKeysReq_reserved8_raw_, &OCTETSTRING_text_, &GetNumberOfSoftKeysReq_reserved8_xer_, &OCTETSTRING_json_, &GetNumberOfSoftKeysReq_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetNumberOfSoftKeysReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for GetNumberOfSoftKeysReq
+const TTCN_Typedescriptor_t GetNumberOfSoftKeysReq_descr_ = { "@IsobusVTMessageTypes.GetNumberOfSoftKeysReq", NULL, &GetNumberOfSoftKeysReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetNumberOfSoftKeysRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t GetNumberOfSoftKeysRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t GetNumberOfSoftKeysRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.GetNumberOfSoftKeysRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &GetNumberOfSoftKeysRes_vtfunction_xer_, &INTEGER_json_, &GetNumberOfSoftKeysRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetNumberOfSoftKeysRes_navigationSoftKeys___xer_ = { {"navigationSoftKeys_>\n", "navigationSoftKeys_>\n"}, {21, 21}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetNumberOfSoftKeysRes_navigationSoftKeys___oer_ext_arr_[0] = {};
+const int GetNumberOfSoftKeysRes_navigationSoftKeys___oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetNumberOfSoftKeysRes_navigationSoftKeys___oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetNumberOfSoftKeysRes_navigationSoftKeys___oer_ext_arr_, 0, GetNumberOfSoftKeysRes_navigationSoftKeys___oer_p_};
+const TTCN_Typedescriptor_t GetNumberOfSoftKeysRes_navigationSoftKeys___descr_ = { "@IsobusVTMessageTypes.GetNumberOfSoftKeysRes.navigationSoftKeys_", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &GetNumberOfSoftKeysRes_navigationSoftKeys___xer_, &OCTETSTRING_json_, &GetNumberOfSoftKeysRes_navigationSoftKeys___oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetNumberOfSoftKeysRes_reserved3_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetNumberOfSoftKeysRes_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetNumberOfSoftKeysRes_reserved3_oer_ext_arr_[0] = {};
+const int GetNumberOfSoftKeysRes_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetNumberOfSoftKeysRes_reserved3_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetNumberOfSoftKeysRes_reserved3_oer_ext_arr_, 0, GetNumberOfSoftKeysRes_reserved3_oer_p_};
+const TTCN_Typedescriptor_t GetNumberOfSoftKeysRes_reserved3_descr_ = { "@IsobusVTMessageTypes.GetNumberOfSoftKeysRes.reserved3", &OCTETSTRING_ber_, &GetNumberOfSoftKeysRes_reserved3_raw_, &OCTETSTRING_text_, &GetNumberOfSoftKeysRes_reserved3_xer_, &OCTETSTRING_json_, &GetNumberOfSoftKeysRes_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetNumberOfSoftKeysRes_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetNumberOfSoftKeysRes_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetNumberOfSoftKeysRes_reserved4_oer_ext_arr_[0] = {};
+const int GetNumberOfSoftKeysRes_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetNumberOfSoftKeysRes_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetNumberOfSoftKeysRes_reserved4_oer_ext_arr_, 0, GetNumberOfSoftKeysRes_reserved4_oer_p_};
+const TTCN_Typedescriptor_t GetNumberOfSoftKeysRes_reserved4_descr_ = { "@IsobusVTMessageTypes.GetNumberOfSoftKeysRes.reserved4", &OCTETSTRING_ber_, &GetNumberOfSoftKeysRes_reserved4_raw_, &OCTETSTRING_text_, &GetNumberOfSoftKeysRes_reserved4_xer_, &OCTETSTRING_json_, &GetNumberOfSoftKeysRes_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetNumberOfSoftKeysRes_x__dots_xer_ = { {"x_dots>\n", "x_dots>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetNumberOfSoftKeysRes_x__dots_oer_ext_arr_[0] = {};
+const int GetNumberOfSoftKeysRes_x__dots_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetNumberOfSoftKeysRes_x__dots_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetNumberOfSoftKeysRes_x__dots_oer_ext_arr_, 0, GetNumberOfSoftKeysRes_x__dots_oer_p_};
+const TTCN_Typedescriptor_t GetNumberOfSoftKeysRes_x__dots_descr_ = { "@IsobusVTMessageTypes.GetNumberOfSoftKeysRes.x_dots", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &GetNumberOfSoftKeysRes_x__dots_xer_, &OCTETSTRING_json_, &GetNumberOfSoftKeysRes_x__dots_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetNumberOfSoftKeysRes_y__dots_xer_ = { {"y_dots>\n", "y_dots>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetNumberOfSoftKeysRes_y__dots_oer_ext_arr_[0] = {};
+const int GetNumberOfSoftKeysRes_y__dots_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetNumberOfSoftKeysRes_y__dots_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetNumberOfSoftKeysRes_y__dots_oer_ext_arr_, 0, GetNumberOfSoftKeysRes_y__dots_oer_p_};
+const TTCN_Typedescriptor_t GetNumberOfSoftKeysRes_y__dots_descr_ = { "@IsobusVTMessageTypes.GetNumberOfSoftKeysRes.y_dots", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &GetNumberOfSoftKeysRes_y__dots_xer_, &OCTETSTRING_json_, &GetNumberOfSoftKeysRes_y__dots_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetNumberOfSoftKeysRes_numberOfVirtualSoftKeys___xer_ = { {"numberOfVirtualSoftKeys_>\n", "numberOfVirtualSoftKeys_>\n"}, {26, 26}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetNumberOfSoftKeysRes_numberOfVirtualSoftKeys___oer_ext_arr_[0] = {};
+const int GetNumberOfSoftKeysRes_numberOfVirtualSoftKeys___oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetNumberOfSoftKeysRes_numberOfVirtualSoftKeys___oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetNumberOfSoftKeysRes_numberOfVirtualSoftKeys___oer_ext_arr_, 0, GetNumberOfSoftKeysRes_numberOfVirtualSoftKeys___oer_p_};
+const TTCN_Typedescriptor_t GetNumberOfSoftKeysRes_numberOfVirtualSoftKeys___descr_ = { "@IsobusVTMessageTypes.GetNumberOfSoftKeysRes.numberOfVirtualSoftKeys_", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &GetNumberOfSoftKeysRes_numberOfVirtualSoftKeys___xer_, &OCTETSTRING_json_, &GetNumberOfSoftKeysRes_numberOfVirtualSoftKeys___oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetNumberOfSoftKeysRes_numberOfPhysicalSoftKeys___xer_ = { {"numberOfPhysicalSoftKeys_>\n", "numberOfPhysicalSoftKeys_>\n"}, {27, 27}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetNumberOfSoftKeysRes_numberOfPhysicalSoftKeys___oer_ext_arr_[0] = {};
+const int GetNumberOfSoftKeysRes_numberOfPhysicalSoftKeys___oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetNumberOfSoftKeysRes_numberOfPhysicalSoftKeys___oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetNumberOfSoftKeysRes_numberOfPhysicalSoftKeys___oer_ext_arr_, 0, GetNumberOfSoftKeysRes_numberOfPhysicalSoftKeys___oer_p_};
+const TTCN_Typedescriptor_t GetNumberOfSoftKeysRes_numberOfPhysicalSoftKeys___descr_ = { "@IsobusVTMessageTypes.GetNumberOfSoftKeysRes.numberOfPhysicalSoftKeys_", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &GetNumberOfSoftKeysRes_numberOfPhysicalSoftKeys___xer_, &OCTETSTRING_json_, &GetNumberOfSoftKeysRes_numberOfPhysicalSoftKeys___oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetNumberOfSoftKeysRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for GetNumberOfSoftKeysRes
+const TTCN_Typedescriptor_t GetNumberOfSoftKeysRes_descr_ = { "@IsobusVTMessageTypes.GetNumberOfSoftKeysRes", NULL, &GetNumberOfSoftKeysRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetTextFontDataReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t GetTextFontDataReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t GetTextFontDataReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.GetTextFontDataReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &GetTextFontDataReq_vtfunction_xer_, &INTEGER_json_, &GetTextFontDataReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetTextFontDataReq_reserved2_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetTextFontDataReq_reserved2_xer_ = { {"reserved2>\n", "reserved2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetTextFontDataReq_reserved2_oer_ext_arr_[0] = {};
+const int GetTextFontDataReq_reserved2_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetTextFontDataReq_reserved2_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetTextFontDataReq_reserved2_oer_ext_arr_, 0, GetTextFontDataReq_reserved2_oer_p_};
+const TTCN_Typedescriptor_t GetTextFontDataReq_reserved2_descr_ = { "@IsobusVTMessageTypes.GetTextFontDataReq.reserved2", &OCTETSTRING_ber_, &GetTextFontDataReq_reserved2_raw_, &OCTETSTRING_text_, &GetTextFontDataReq_reserved2_xer_, &OCTETSTRING_json_, &GetTextFontDataReq_reserved2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetTextFontDataReq_reserved3_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetTextFontDataReq_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetTextFontDataReq_reserved3_oer_ext_arr_[0] = {};
+const int GetTextFontDataReq_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetTextFontDataReq_reserved3_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetTextFontDataReq_reserved3_oer_ext_arr_, 0, GetTextFontDataReq_reserved3_oer_p_};
+const TTCN_Typedescriptor_t GetTextFontDataReq_reserved3_descr_ = { "@IsobusVTMessageTypes.GetTextFontDataReq.reserved3", &OCTETSTRING_ber_, &GetTextFontDataReq_reserved3_raw_, &OCTETSTRING_text_, &GetTextFontDataReq_reserved3_xer_, &OCTETSTRING_json_, &GetTextFontDataReq_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetTextFontDataReq_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetTextFontDataReq_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetTextFontDataReq_reserved4_oer_ext_arr_[0] = {};
+const int GetTextFontDataReq_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetTextFontDataReq_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetTextFontDataReq_reserved4_oer_ext_arr_, 0, GetTextFontDataReq_reserved4_oer_p_};
+const TTCN_Typedescriptor_t GetTextFontDataReq_reserved4_descr_ = { "@IsobusVTMessageTypes.GetTextFontDataReq.reserved4", &OCTETSTRING_ber_, &GetTextFontDataReq_reserved4_raw_, &OCTETSTRING_text_, &GetTextFontDataReq_reserved4_xer_, &OCTETSTRING_json_, &GetTextFontDataReq_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetTextFontDataReq_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetTextFontDataReq_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetTextFontDataReq_reserved5_oer_ext_arr_[0] = {};
+const int GetTextFontDataReq_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetTextFontDataReq_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetTextFontDataReq_reserved5_oer_ext_arr_, 0, GetTextFontDataReq_reserved5_oer_p_};
+const TTCN_Typedescriptor_t GetTextFontDataReq_reserved5_descr_ = { "@IsobusVTMessageTypes.GetTextFontDataReq.reserved5", &OCTETSTRING_ber_, &GetTextFontDataReq_reserved5_raw_, &OCTETSTRING_text_, &GetTextFontDataReq_reserved5_xer_, &OCTETSTRING_json_, &GetTextFontDataReq_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetTextFontDataReq_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetTextFontDataReq_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetTextFontDataReq_reserved6_oer_ext_arr_[0] = {};
+const int GetTextFontDataReq_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetTextFontDataReq_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetTextFontDataReq_reserved6_oer_ext_arr_, 0, GetTextFontDataReq_reserved6_oer_p_};
+const TTCN_Typedescriptor_t GetTextFontDataReq_reserved6_descr_ = { "@IsobusVTMessageTypes.GetTextFontDataReq.reserved6", &OCTETSTRING_ber_, &GetTextFontDataReq_reserved6_raw_, &OCTETSTRING_text_, &GetTextFontDataReq_reserved6_xer_, &OCTETSTRING_json_, &GetTextFontDataReq_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetTextFontDataReq_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetTextFontDataReq_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetTextFontDataReq_reserved7_oer_ext_arr_[0] = {};
+const int GetTextFontDataReq_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetTextFontDataReq_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetTextFontDataReq_reserved7_oer_ext_arr_, 0, GetTextFontDataReq_reserved7_oer_p_};
+const TTCN_Typedescriptor_t GetTextFontDataReq_reserved7_descr_ = { "@IsobusVTMessageTypes.GetTextFontDataReq.reserved7", &OCTETSTRING_ber_, &GetTextFontDataReq_reserved7_raw_, &OCTETSTRING_text_, &GetTextFontDataReq_reserved7_xer_, &OCTETSTRING_json_, &GetTextFontDataReq_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetTextFontDataReq_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetTextFontDataReq_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetTextFontDataReq_reserved8_oer_ext_arr_[0] = {};
+const int GetTextFontDataReq_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetTextFontDataReq_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetTextFontDataReq_reserved8_oer_ext_arr_, 0, GetTextFontDataReq_reserved8_oer_p_};
+const TTCN_Typedescriptor_t GetTextFontDataReq_reserved8_descr_ = { "@IsobusVTMessageTypes.GetTextFontDataReq.reserved8", &OCTETSTRING_ber_, &GetTextFontDataReq_reserved8_raw_, &OCTETSTRING_text_, &GetTextFontDataReq_reserved8_xer_, &OCTETSTRING_json_, &GetTextFontDataReq_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetTextFontDataReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for GetTextFontDataReq
+const TTCN_Typedescriptor_t GetTextFontDataReq_descr_ = { "@IsobusVTMessageTypes.GetTextFontDataReq", NULL, &GetTextFontDataReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       TextFontDataRes__small__font__sizes_font__8x8_xer_ = { {"font_8x8>\n", "font_8x8>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int TextFontDataRes__small__font__sizes_font__8x8_oer_ext_arr_[0] = {};
+const int TextFontDataRes__small__font__sizes_font__8x8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t TextFontDataRes__small__font__sizes_font__8x8_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TextFontDataRes__small__font__sizes_font__8x8_oer_ext_arr_, 0, TextFontDataRes__small__font__sizes_font__8x8_oer_p_};
+const TTCN_Typedescriptor_t TextFontDataRes__small__font__sizes_font__8x8_descr_ = { "@IsobusVTMessageTypes.TextFontDataRes_small_font_sizes.font_8x8", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &TextFontDataRes__small__font__sizes_font__8x8_xer_, &BOOLEAN_json_, &TextFontDataRes__small__font__sizes_font__8x8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       TextFontDataRes__small__font__sizes_font__8x12_xer_ = { {"font_8x12>\n", "font_8x12>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int TextFontDataRes__small__font__sizes_font__8x12_oer_ext_arr_[0] = {};
+const int TextFontDataRes__small__font__sizes_font__8x12_oer_p_[0] = {};
+const TTCN_OERdescriptor_t TextFontDataRes__small__font__sizes_font__8x12_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TextFontDataRes__small__font__sizes_font__8x12_oer_ext_arr_, 0, TextFontDataRes__small__font__sizes_font__8x12_oer_p_};
+const TTCN_Typedescriptor_t TextFontDataRes__small__font__sizes_font__8x12_descr_ = { "@IsobusVTMessageTypes.TextFontDataRes_small_font_sizes.font_8x12", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &TextFontDataRes__small__font__sizes_font__8x12_xer_, &BOOLEAN_json_, &TextFontDataRes__small__font__sizes_font__8x12_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       TextFontDataRes__small__font__sizes_font__12x16_xer_ = { {"font_12x16>\n", "font_12x16>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int TextFontDataRes__small__font__sizes_font__12x16_oer_ext_arr_[0] = {};
+const int TextFontDataRes__small__font__sizes_font__12x16_oer_p_[0] = {};
+const TTCN_OERdescriptor_t TextFontDataRes__small__font__sizes_font__12x16_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TextFontDataRes__small__font__sizes_font__12x16_oer_ext_arr_, 0, TextFontDataRes__small__font__sizes_font__12x16_oer_p_};
+const TTCN_Typedescriptor_t TextFontDataRes__small__font__sizes_font__12x16_descr_ = { "@IsobusVTMessageTypes.TextFontDataRes_small_font_sizes.font_12x16", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &TextFontDataRes__small__font__sizes_font__12x16_xer_, &BOOLEAN_json_, &TextFontDataRes__small__font__sizes_font__12x16_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       TextFontDataRes__small__font__sizes_font__16x16_xer_ = { {"font_16x16>\n", "font_16x16>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int TextFontDataRes__small__font__sizes_font__16x16_oer_ext_arr_[0] = {};
+const int TextFontDataRes__small__font__sizes_font__16x16_oer_p_[0] = {};
+const TTCN_OERdescriptor_t TextFontDataRes__small__font__sizes_font__16x16_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TextFontDataRes__small__font__sizes_font__16x16_oer_ext_arr_, 0, TextFontDataRes__small__font__sizes_font__16x16_oer_p_};
+const TTCN_Typedescriptor_t TextFontDataRes__small__font__sizes_font__16x16_descr_ = { "@IsobusVTMessageTypes.TextFontDataRes_small_font_sizes.font_16x16", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &TextFontDataRes__small__font__sizes_font__16x16_xer_, &BOOLEAN_json_, &TextFontDataRes__small__font__sizes_font__16x16_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       TextFontDataRes__small__font__sizes_font__16x24_xer_ = { {"font_16x24>\n", "font_16x24>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int TextFontDataRes__small__font__sizes_font__16x24_oer_ext_arr_[0] = {};
+const int TextFontDataRes__small__font__sizes_font__16x24_oer_p_[0] = {};
+const TTCN_OERdescriptor_t TextFontDataRes__small__font__sizes_font__16x24_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TextFontDataRes__small__font__sizes_font__16x24_oer_ext_arr_, 0, TextFontDataRes__small__font__sizes_font__16x24_oer_p_};
+const TTCN_Typedescriptor_t TextFontDataRes__small__font__sizes_font__16x24_descr_ = { "@IsobusVTMessageTypes.TextFontDataRes_small_font_sizes.font_16x24", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &TextFontDataRes__small__font__sizes_font__16x24_xer_, &BOOLEAN_json_, &TextFontDataRes__small__font__sizes_font__16x24_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       TextFontDataRes__small__font__sizes_font__24x32_xer_ = { {"font_24x32>\n", "font_24x32>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int TextFontDataRes__small__font__sizes_font__24x32_oer_ext_arr_[0] = {};
+const int TextFontDataRes__small__font__sizes_font__24x32_oer_p_[0] = {};
+const TTCN_OERdescriptor_t TextFontDataRes__small__font__sizes_font__24x32_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TextFontDataRes__small__font__sizes_font__24x32_oer_ext_arr_, 0, TextFontDataRes__small__font__sizes_font__24x32_oer_p_};
+const TTCN_Typedescriptor_t TextFontDataRes__small__font__sizes_font__24x32_descr_ = { "@IsobusVTMessageTypes.TextFontDataRes_small_font_sizes.font_24x32", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &TextFontDataRes__small__font__sizes_font__24x32_xer_, &BOOLEAN_json_, &TextFontDataRes__small__font__sizes_font__24x32_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       TextFontDataRes__small__font__sizes_font__32x32_xer_ = { {"font_32x32>\n", "font_32x32>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int TextFontDataRes__small__font__sizes_font__32x32_oer_ext_arr_[0] = {};
+const int TextFontDataRes__small__font__sizes_font__32x32_oer_p_[0] = {};
+const TTCN_OERdescriptor_t TextFontDataRes__small__font__sizes_font__32x32_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TextFontDataRes__small__font__sizes_font__32x32_oer_ext_arr_, 0, TextFontDataRes__small__font__sizes_font__32x32_oer_p_};
+const TTCN_Typedescriptor_t TextFontDataRes__small__font__sizes_font__32x32_descr_ = { "@IsobusVTMessageTypes.TextFontDataRes_small_font_sizes.font_32x32", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &TextFontDataRes__small__font__sizes_font__32x32_xer_, &BOOLEAN_json_, &TextFontDataRes__small__font__sizes_font__32x32_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       TextFontDataRes__small__font__sizes_reserved_xer_ = { {"reserved>\n", "reserved>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int TextFontDataRes__small__font__sizes_reserved_oer_ext_arr_[0] = {};
+const int TextFontDataRes__small__font__sizes_reserved_oer_p_[0] = {};
+const TTCN_OERdescriptor_t TextFontDataRes__small__font__sizes_reserved_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TextFontDataRes__small__font__sizes_reserved_oer_ext_arr_, 0, TextFontDataRes__small__font__sizes_reserved_oer_p_};
+const TTCN_Typedescriptor_t TextFontDataRes__small__font__sizes_reserved_descr_ = { "@IsobusVTMessageTypes.TextFontDataRes_small_font_sizes.reserved", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &TextFontDataRes__small__font__sizes_reserved_xer_, &BOOLEAN_json_, &TextFontDataRes__small__font__sizes_reserved_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t TextFontDataRes__small__font__sizes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for TextFontDataRes__small__font__sizes
+const TTCN_Typedescriptor_t TextFontDataRes__small__font__sizes_descr_ = { "@IsobusVTMessageTypes.TextFontDataRes_small_font_sizes", NULL, &TextFontDataRes__small__font__sizes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       TextFontDataRes__large__font__sizes_font__32x48_xer_ = { {"font_32x48>\n", "font_32x48>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int TextFontDataRes__large__font__sizes_font__32x48_oer_ext_arr_[0] = {};
+const int TextFontDataRes__large__font__sizes_font__32x48_oer_p_[0] = {};
+const TTCN_OERdescriptor_t TextFontDataRes__large__font__sizes_font__32x48_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TextFontDataRes__large__font__sizes_font__32x48_oer_ext_arr_, 0, TextFontDataRes__large__font__sizes_font__32x48_oer_p_};
+const TTCN_Typedescriptor_t TextFontDataRes__large__font__sizes_font__32x48_descr_ = { "@IsobusVTMessageTypes.TextFontDataRes_large_font_sizes.font_32x48", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &TextFontDataRes__large__font__sizes_font__32x48_xer_, &BOOLEAN_json_, &TextFontDataRes__large__font__sizes_font__32x48_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       TextFontDataRes__large__font__sizes_font__48x64_xer_ = { {"font_48x64>\n", "font_48x64>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int TextFontDataRes__large__font__sizes_font__48x64_oer_ext_arr_[0] = {};
+const int TextFontDataRes__large__font__sizes_font__48x64_oer_p_[0] = {};
+const TTCN_OERdescriptor_t TextFontDataRes__large__font__sizes_font__48x64_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TextFontDataRes__large__font__sizes_font__48x64_oer_ext_arr_, 0, TextFontDataRes__large__font__sizes_font__48x64_oer_p_};
+const TTCN_Typedescriptor_t TextFontDataRes__large__font__sizes_font__48x64_descr_ = { "@IsobusVTMessageTypes.TextFontDataRes_large_font_sizes.font_48x64", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &TextFontDataRes__large__font__sizes_font__48x64_xer_, &BOOLEAN_json_, &TextFontDataRes__large__font__sizes_font__48x64_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       TextFontDataRes__large__font__sizes_font__64x64_xer_ = { {"font_64x64>\n", "font_64x64>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int TextFontDataRes__large__font__sizes_font__64x64_oer_ext_arr_[0] = {};
+const int TextFontDataRes__large__font__sizes_font__64x64_oer_p_[0] = {};
+const TTCN_OERdescriptor_t TextFontDataRes__large__font__sizes_font__64x64_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TextFontDataRes__large__font__sizes_font__64x64_oer_ext_arr_, 0, TextFontDataRes__large__font__sizes_font__64x64_oer_p_};
+const TTCN_Typedescriptor_t TextFontDataRes__large__font__sizes_font__64x64_descr_ = { "@IsobusVTMessageTypes.TextFontDataRes_large_font_sizes.font_64x64", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &TextFontDataRes__large__font__sizes_font__64x64_xer_, &BOOLEAN_json_, &TextFontDataRes__large__font__sizes_font__64x64_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       TextFontDataRes__large__font__sizes_font__64x96_xer_ = { {"font_64x96>\n", "font_64x96>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int TextFontDataRes__large__font__sizes_font__64x96_oer_ext_arr_[0] = {};
+const int TextFontDataRes__large__font__sizes_font__64x96_oer_p_[0] = {};
+const TTCN_OERdescriptor_t TextFontDataRes__large__font__sizes_font__64x96_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TextFontDataRes__large__font__sizes_font__64x96_oer_ext_arr_, 0, TextFontDataRes__large__font__sizes_font__64x96_oer_p_};
+const TTCN_Typedescriptor_t TextFontDataRes__large__font__sizes_font__64x96_descr_ = { "@IsobusVTMessageTypes.TextFontDataRes_large_font_sizes.font_64x96", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &TextFontDataRes__large__font__sizes_font__64x96_xer_, &BOOLEAN_json_, &TextFontDataRes__large__font__sizes_font__64x96_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       TextFontDataRes__large__font__sizes_font__96x128_xer_ = { {"font_96x128>\n", "font_96x128>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int TextFontDataRes__large__font__sizes_font__96x128_oer_ext_arr_[0] = {};
+const int TextFontDataRes__large__font__sizes_font__96x128_oer_p_[0] = {};
+const TTCN_OERdescriptor_t TextFontDataRes__large__font__sizes_font__96x128_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TextFontDataRes__large__font__sizes_font__96x128_oer_ext_arr_, 0, TextFontDataRes__large__font__sizes_font__96x128_oer_p_};
+const TTCN_Typedescriptor_t TextFontDataRes__large__font__sizes_font__96x128_descr_ = { "@IsobusVTMessageTypes.TextFontDataRes_large_font_sizes.font_96x128", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &TextFontDataRes__large__font__sizes_font__96x128_xer_, &BOOLEAN_json_, &TextFontDataRes__large__font__sizes_font__96x128_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       TextFontDataRes__large__font__sizes_font__128x128_xer_ = { {"font_128x128>\n", "font_128x128>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int TextFontDataRes__large__font__sizes_font__128x128_oer_ext_arr_[0] = {};
+const int TextFontDataRes__large__font__sizes_font__128x128_oer_p_[0] = {};
+const TTCN_OERdescriptor_t TextFontDataRes__large__font__sizes_font__128x128_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TextFontDataRes__large__font__sizes_font__128x128_oer_ext_arr_, 0, TextFontDataRes__large__font__sizes_font__128x128_oer_p_};
+const TTCN_Typedescriptor_t TextFontDataRes__large__font__sizes_font__128x128_descr_ = { "@IsobusVTMessageTypes.TextFontDataRes_large_font_sizes.font_128x128", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &TextFontDataRes__large__font__sizes_font__128x128_xer_, &BOOLEAN_json_, &TextFontDataRes__large__font__sizes_font__128x128_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       TextFontDataRes__large__font__sizes_font__128x192_xer_ = { {"font_128x192>\n", "font_128x192>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int TextFontDataRes__large__font__sizes_font__128x192_oer_ext_arr_[0] = {};
+const int TextFontDataRes__large__font__sizes_font__128x192_oer_p_[0] = {};
+const TTCN_OERdescriptor_t TextFontDataRes__large__font__sizes_font__128x192_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TextFontDataRes__large__font__sizes_font__128x192_oer_ext_arr_, 0, TextFontDataRes__large__font__sizes_font__128x192_oer_p_};
+const TTCN_Typedescriptor_t TextFontDataRes__large__font__sizes_font__128x192_descr_ = { "@IsobusVTMessageTypes.TextFontDataRes_large_font_sizes.font_128x192", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &TextFontDataRes__large__font__sizes_font__128x192_xer_, &BOOLEAN_json_, &TextFontDataRes__large__font__sizes_font__128x192_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       TextFontDataRes__large__font__sizes_reserved_xer_ = { {"reserved>\n", "reserved>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int TextFontDataRes__large__font__sizes_reserved_oer_ext_arr_[0] = {};
+const int TextFontDataRes__large__font__sizes_reserved_oer_p_[0] = {};
+const TTCN_OERdescriptor_t TextFontDataRes__large__font__sizes_reserved_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TextFontDataRes__large__font__sizes_reserved_oer_ext_arr_, 0, TextFontDataRes__large__font__sizes_reserved_oer_p_};
+const TTCN_Typedescriptor_t TextFontDataRes__large__font__sizes_reserved_descr_ = { "@IsobusVTMessageTypes.TextFontDataRes_large_font_sizes.reserved", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &TextFontDataRes__large__font__sizes_reserved_xer_, &BOOLEAN_json_, &TextFontDataRes__large__font__sizes_reserved_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t TextFontDataRes__large__font__sizes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for TextFontDataRes__large__font__sizes
+const TTCN_Typedescriptor_t TextFontDataRes__large__font__sizes_descr_ = { "@IsobusVTMessageTypes.TextFontDataRes_large_font_sizes", NULL, &TextFontDataRes__large__font__sizes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       TextFontDataRes__type__attribute_bold__text_xer_ = { {"bold_text>\n", "bold_text>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int TextFontDataRes__type__attribute_bold__text_oer_ext_arr_[0] = {};
+const int TextFontDataRes__type__attribute_bold__text_oer_p_[0] = {};
+const TTCN_OERdescriptor_t TextFontDataRes__type__attribute_bold__text_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TextFontDataRes__type__attribute_bold__text_oer_ext_arr_, 0, TextFontDataRes__type__attribute_bold__text_oer_p_};
+const TTCN_Typedescriptor_t TextFontDataRes__type__attribute_bold__text_descr_ = { "@IsobusVTMessageTypes.TextFontDataRes_type_attribute.bold_text", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &TextFontDataRes__type__attribute_bold__text_xer_, &BOOLEAN_json_, &TextFontDataRes__type__attribute_bold__text_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       TextFontDataRes__type__attribute_crossed__out__text_xer_ = { {"crossed_out_text>\n", "crossed_out_text>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int TextFontDataRes__type__attribute_crossed__out__text_oer_ext_arr_[0] = {};
+const int TextFontDataRes__type__attribute_crossed__out__text_oer_p_[0] = {};
+const TTCN_OERdescriptor_t TextFontDataRes__type__attribute_crossed__out__text_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TextFontDataRes__type__attribute_crossed__out__text_oer_ext_arr_, 0, TextFontDataRes__type__attribute_crossed__out__text_oer_p_};
+const TTCN_Typedescriptor_t TextFontDataRes__type__attribute_crossed__out__text_descr_ = { "@IsobusVTMessageTypes.TextFontDataRes_type_attribute.crossed_out_text", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &TextFontDataRes__type__attribute_crossed__out__text_xer_, &BOOLEAN_json_, &TextFontDataRes__type__attribute_crossed__out__text_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       TextFontDataRes__type__attribute_underlined__text_xer_ = { {"underlined_text>\n", "underlined_text>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int TextFontDataRes__type__attribute_underlined__text_oer_ext_arr_[0] = {};
+const int TextFontDataRes__type__attribute_underlined__text_oer_p_[0] = {};
+const TTCN_OERdescriptor_t TextFontDataRes__type__attribute_underlined__text_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TextFontDataRes__type__attribute_underlined__text_oer_ext_arr_, 0, TextFontDataRes__type__attribute_underlined__text_oer_p_};
+const TTCN_Typedescriptor_t TextFontDataRes__type__attribute_underlined__text_descr_ = { "@IsobusVTMessageTypes.TextFontDataRes_type_attribute.underlined_text", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &TextFontDataRes__type__attribute_underlined__text_xer_, &BOOLEAN_json_, &TextFontDataRes__type__attribute_underlined__text_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       TextFontDataRes__type__attribute_italics__text_xer_ = { {"italics_text>\n", "italics_text>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int TextFontDataRes__type__attribute_italics__text_oer_ext_arr_[0] = {};
+const int TextFontDataRes__type__attribute_italics__text_oer_p_[0] = {};
+const TTCN_OERdescriptor_t TextFontDataRes__type__attribute_italics__text_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TextFontDataRes__type__attribute_italics__text_oer_ext_arr_, 0, TextFontDataRes__type__attribute_italics__text_oer_p_};
+const TTCN_Typedescriptor_t TextFontDataRes__type__attribute_italics__text_descr_ = { "@IsobusVTMessageTypes.TextFontDataRes_type_attribute.italics_text", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &TextFontDataRes__type__attribute_italics__text_xer_, &BOOLEAN_json_, &TextFontDataRes__type__attribute_italics__text_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       TextFontDataRes__type__attribute_inverted__text_xer_ = { {"inverted_text>\n", "inverted_text>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int TextFontDataRes__type__attribute_inverted__text_oer_ext_arr_[0] = {};
+const int TextFontDataRes__type__attribute_inverted__text_oer_p_[0] = {};
+const TTCN_OERdescriptor_t TextFontDataRes__type__attribute_inverted__text_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TextFontDataRes__type__attribute_inverted__text_oer_ext_arr_, 0, TextFontDataRes__type__attribute_inverted__text_oer_p_};
+const TTCN_Typedescriptor_t TextFontDataRes__type__attribute_inverted__text_descr_ = { "@IsobusVTMessageTypes.TextFontDataRes_type_attribute.inverted_text", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &TextFontDataRes__type__attribute_inverted__text_xer_, &BOOLEAN_json_, &TextFontDataRes__type__attribute_inverted__text_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       TextFontDataRes__type__attribute_flash__inverted_xer_ = { {"flash_inverted>\n", "flash_inverted>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int TextFontDataRes__type__attribute_flash__inverted_oer_ext_arr_[0] = {};
+const int TextFontDataRes__type__attribute_flash__inverted_oer_p_[0] = {};
+const TTCN_OERdescriptor_t TextFontDataRes__type__attribute_flash__inverted_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TextFontDataRes__type__attribute_flash__inverted_oer_ext_arr_, 0, TextFontDataRes__type__attribute_flash__inverted_oer_p_};
+const TTCN_Typedescriptor_t TextFontDataRes__type__attribute_flash__inverted_descr_ = { "@IsobusVTMessageTypes.TextFontDataRes_type_attribute.flash_inverted", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &TextFontDataRes__type__attribute_flash__inverted_xer_, &BOOLEAN_json_, &TextFontDataRes__type__attribute_flash__inverted_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       TextFontDataRes__type__attribute_flash__background__and__foreground_xer_ = { {"flash_background_and_foreground>\n", "flash_background_and_foreground>\n"}, {33, 33}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int TextFontDataRes__type__attribute_flash__background__and__foreground_oer_ext_arr_[0] = {};
+const int TextFontDataRes__type__attribute_flash__background__and__foreground_oer_p_[0] = {};
+const TTCN_OERdescriptor_t TextFontDataRes__type__attribute_flash__background__and__foreground_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TextFontDataRes__type__attribute_flash__background__and__foreground_oer_ext_arr_, 0, TextFontDataRes__type__attribute_flash__background__and__foreground_oer_p_};
+const TTCN_Typedescriptor_t TextFontDataRes__type__attribute_flash__background__and__foreground_descr_ = { "@IsobusVTMessageTypes.TextFontDataRes_type_attribute.flash_background_and_foreground", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &TextFontDataRes__type__attribute_flash__background__and__foreground_xer_, &BOOLEAN_json_, &TextFontDataRes__type__attribute_flash__background__and__foreground_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       TextFontDataRes__type__attribute_proportional__font__rendering_xer_ = { {"proportional_font_rendering>\n", "proportional_font_rendering>\n"}, {29, 29}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int TextFontDataRes__type__attribute_proportional__font__rendering_oer_ext_arr_[0] = {};
+const int TextFontDataRes__type__attribute_proportional__font__rendering_oer_p_[0] = {};
+const TTCN_OERdescriptor_t TextFontDataRes__type__attribute_proportional__font__rendering_oer_ = { -1, TRUE, -1, FALSE, 0, 0, TextFontDataRes__type__attribute_proportional__font__rendering_oer_ext_arr_, 0, TextFontDataRes__type__attribute_proportional__font__rendering_oer_p_};
+const TTCN_Typedescriptor_t TextFontDataRes__type__attribute_proportional__font__rendering_descr_ = { "@IsobusVTMessageTypes.TextFontDataRes_type_attribute.proportional_font_rendering", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &TextFontDataRes__type__attribute_proportional__font__rendering_xer_, &BOOLEAN_json_, &TextFontDataRes__type__attribute_proportional__font__rendering_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t TextFontDataRes__type__attribute_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for TextFontDataRes__type__attribute
+const TTCN_Typedescriptor_t TextFontDataRes__type__attribute_descr_ = { "@IsobusVTMessageTypes.TextFontDataRes_type_attribute", NULL, &TextFontDataRes__type__attribute_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetTextFontDataRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t GetTextFontDataRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t GetTextFontDataRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.GetTextFontDataRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &GetTextFontDataRes_vtfunction_xer_, &INTEGER_json_, &GetTextFontDataRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetTextFontDataRes_reserved2_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetTextFontDataRes_reserved2_xer_ = { {"reserved2>\n", "reserved2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetTextFontDataRes_reserved2_oer_ext_arr_[0] = {};
+const int GetTextFontDataRes_reserved2_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetTextFontDataRes_reserved2_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetTextFontDataRes_reserved2_oer_ext_arr_, 0, GetTextFontDataRes_reserved2_oer_p_};
+const TTCN_Typedescriptor_t GetTextFontDataRes_reserved2_descr_ = { "@IsobusVTMessageTypes.GetTextFontDataRes.reserved2", &OCTETSTRING_ber_, &GetTextFontDataRes_reserved2_raw_, &OCTETSTRING_text_, &GetTextFontDataRes_reserved2_xer_, &OCTETSTRING_json_, &GetTextFontDataRes_reserved2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetTextFontDataRes_reserved3_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetTextFontDataRes_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetTextFontDataRes_reserved3_oer_ext_arr_[0] = {};
+const int GetTextFontDataRes_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetTextFontDataRes_reserved3_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetTextFontDataRes_reserved3_oer_ext_arr_, 0, GetTextFontDataRes_reserved3_oer_p_};
+const TTCN_Typedescriptor_t GetTextFontDataRes_reserved3_descr_ = { "@IsobusVTMessageTypes.GetTextFontDataRes.reserved3", &OCTETSTRING_ber_, &GetTextFontDataRes_reserved3_raw_, &OCTETSTRING_text_, &GetTextFontDataRes_reserved3_xer_, &OCTETSTRING_json_, &GetTextFontDataRes_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetTextFontDataRes_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetTextFontDataRes_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetTextFontDataRes_reserved4_oer_ext_arr_[0] = {};
+const int GetTextFontDataRes_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetTextFontDataRes_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetTextFontDataRes_reserved4_oer_ext_arr_, 0, GetTextFontDataRes_reserved4_oer_p_};
+const TTCN_Typedescriptor_t GetTextFontDataRes_reserved4_descr_ = { "@IsobusVTMessageTypes.GetTextFontDataRes.reserved4", &OCTETSTRING_ber_, &GetTextFontDataRes_reserved4_raw_, &OCTETSTRING_text_, &GetTextFontDataRes_reserved4_xer_, &OCTETSTRING_json_, &GetTextFontDataRes_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetTextFontDataRes_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetTextFontDataRes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetTextFontDataRes_reserved5_oer_ext_arr_[0] = {};
+const int GetTextFontDataRes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetTextFontDataRes_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetTextFontDataRes_reserved5_oer_ext_arr_, 0, GetTextFontDataRes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t GetTextFontDataRes_reserved5_descr_ = { "@IsobusVTMessageTypes.GetTextFontDataRes.reserved5", &OCTETSTRING_ber_, &GetTextFontDataRes_reserved5_raw_, &OCTETSTRING_text_, &GetTextFontDataRes_reserved5_xer_, &OCTETSTRING_json_, &GetTextFontDataRes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetTextFontDataRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for GetTextFontDataRes
+const TTCN_Typedescriptor_t GetTextFontDataRes_descr_ = { "@IsobusVTMessageTypes.GetTextFontDataRes", NULL, &GetTextFontDataRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetHardwareReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t GetHardwareReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t GetHardwareReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.GetHardwareReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &GetHardwareReq_vtfunction_xer_, &INTEGER_json_, &GetHardwareReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetHardwareReq_reserved2_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetHardwareReq_reserved2_xer_ = { {"reserved2>\n", "reserved2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetHardwareReq_reserved2_oer_ext_arr_[0] = {};
+const int GetHardwareReq_reserved2_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetHardwareReq_reserved2_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetHardwareReq_reserved2_oer_ext_arr_, 0, GetHardwareReq_reserved2_oer_p_};
+const TTCN_Typedescriptor_t GetHardwareReq_reserved2_descr_ = { "@IsobusVTMessageTypes.GetHardwareReq.reserved2", &OCTETSTRING_ber_, &GetHardwareReq_reserved2_raw_, &OCTETSTRING_text_, &GetHardwareReq_reserved2_xer_, &OCTETSTRING_json_, &GetHardwareReq_reserved2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetHardwareReq_reserved3_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetHardwareReq_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetHardwareReq_reserved3_oer_ext_arr_[0] = {};
+const int GetHardwareReq_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetHardwareReq_reserved3_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetHardwareReq_reserved3_oer_ext_arr_, 0, GetHardwareReq_reserved3_oer_p_};
+const TTCN_Typedescriptor_t GetHardwareReq_reserved3_descr_ = { "@IsobusVTMessageTypes.GetHardwareReq.reserved3", &OCTETSTRING_ber_, &GetHardwareReq_reserved3_raw_, &OCTETSTRING_text_, &GetHardwareReq_reserved3_xer_, &OCTETSTRING_json_, &GetHardwareReq_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetHardwareReq_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetHardwareReq_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetHardwareReq_reserved4_oer_ext_arr_[0] = {};
+const int GetHardwareReq_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetHardwareReq_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetHardwareReq_reserved4_oer_ext_arr_, 0, GetHardwareReq_reserved4_oer_p_};
+const TTCN_Typedescriptor_t GetHardwareReq_reserved4_descr_ = { "@IsobusVTMessageTypes.GetHardwareReq.reserved4", &OCTETSTRING_ber_, &GetHardwareReq_reserved4_raw_, &OCTETSTRING_text_, &GetHardwareReq_reserved4_xer_, &OCTETSTRING_json_, &GetHardwareReq_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetHardwareReq_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetHardwareReq_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetHardwareReq_reserved5_oer_ext_arr_[0] = {};
+const int GetHardwareReq_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetHardwareReq_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetHardwareReq_reserved5_oer_ext_arr_, 0, GetHardwareReq_reserved5_oer_p_};
+const TTCN_Typedescriptor_t GetHardwareReq_reserved5_descr_ = { "@IsobusVTMessageTypes.GetHardwareReq.reserved5", &OCTETSTRING_ber_, &GetHardwareReq_reserved5_raw_, &OCTETSTRING_text_, &GetHardwareReq_reserved5_xer_, &OCTETSTRING_json_, &GetHardwareReq_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetHardwareReq_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetHardwareReq_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetHardwareReq_reserved6_oer_ext_arr_[0] = {};
+const int GetHardwareReq_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetHardwareReq_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetHardwareReq_reserved6_oer_ext_arr_, 0, GetHardwareReq_reserved6_oer_p_};
+const TTCN_Typedescriptor_t GetHardwareReq_reserved6_descr_ = { "@IsobusVTMessageTypes.GetHardwareReq.reserved6", &OCTETSTRING_ber_, &GetHardwareReq_reserved6_raw_, &OCTETSTRING_text_, &GetHardwareReq_reserved6_xer_, &OCTETSTRING_json_, &GetHardwareReq_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetHardwareReq_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetHardwareReq_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetHardwareReq_reserved7_oer_ext_arr_[0] = {};
+const int GetHardwareReq_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetHardwareReq_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetHardwareReq_reserved7_oer_ext_arr_, 0, GetHardwareReq_reserved7_oer_p_};
+const TTCN_Typedescriptor_t GetHardwareReq_reserved7_descr_ = { "@IsobusVTMessageTypes.GetHardwareReq.reserved7", &OCTETSTRING_ber_, &GetHardwareReq_reserved7_raw_, &OCTETSTRING_text_, &GetHardwareReq_reserved7_xer_, &OCTETSTRING_json_, &GetHardwareReq_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetHardwareReq_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetHardwareReq_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetHardwareReq_reserved8_oer_ext_arr_[0] = {};
+const int GetHardwareReq_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetHardwareReq_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetHardwareReq_reserved8_oer_ext_arr_, 0, GetHardwareReq_reserved8_oer_p_};
+const TTCN_Typedescriptor_t GetHardwareReq_reserved8_descr_ = { "@IsobusVTMessageTypes.GetHardwareReq.reserved8", &OCTETSTRING_ber_, &GetHardwareReq_reserved8_raw_, &OCTETSTRING_text_, &GetHardwareReq_reserved8_xer_, &OCTETSTRING_json_, &GetHardwareReq_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetHardwareReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for GetHardwareReq
+const TTCN_Typedescriptor_t GetHardwareReq_descr_ = { "@IsobusVTMessageTypes.GetHardwareReq", NULL, &GetHardwareReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t e__GetHardwareResGraphicType_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,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for e__GetHardwareResGraphicType
+const TTCN_Typedescriptor_t e__GetHardwareResGraphicType_descr_ = { "@IsobusVTMessageTypes.e_GetHardwareResGraphicType", NULL, &e__GetHardwareResGraphicType_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetHardwareResHardwareType_touchScreenandPointingEvent_xer_ = { {"touchScreenandPointingEvent>\n", "touchScreenandPointingEvent>\n"}, {29, 29}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetHardwareResHardwareType_touchScreenandPointingEvent_oer_ext_arr_[0] = {};
+const int GetHardwareResHardwareType_touchScreenandPointingEvent_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetHardwareResHardwareType_touchScreenandPointingEvent_oer_ = { -1, TRUE, -1, FALSE, 0, 0, GetHardwareResHardwareType_touchScreenandPointingEvent_oer_ext_arr_, 0, GetHardwareResHardwareType_touchScreenandPointingEvent_oer_p_};
+const TTCN_Typedescriptor_t GetHardwareResHardwareType_touchScreenandPointingEvent_descr_ = { "@IsobusVTMessageTypes.GetHardwareResHardwareType.touchScreenandPointingEvent", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &GetHardwareResHardwareType_touchScreenandPointingEvent_xer_, &BOOLEAN_json_, &GetHardwareResHardwareType_touchScreenandPointingEvent_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetHardwareResHardwareType_pointingDeviceAndPointingEvent_xer_ = { {"pointingDeviceAndPointingEvent>\n", "pointingDeviceAndPointingEvent>\n"}, {32, 32}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetHardwareResHardwareType_pointingDeviceAndPointingEvent_oer_ext_arr_[0] = {};
+const int GetHardwareResHardwareType_pointingDeviceAndPointingEvent_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetHardwareResHardwareType_pointingDeviceAndPointingEvent_oer_ = { -1, TRUE, -1, FALSE, 0, 0, GetHardwareResHardwareType_pointingDeviceAndPointingEvent_oer_ext_arr_, 0, GetHardwareResHardwareType_pointingDeviceAndPointingEvent_oer_p_};
+const TTCN_Typedescriptor_t GetHardwareResHardwareType_pointingDeviceAndPointingEvent_descr_ = { "@IsobusVTMessageTypes.GetHardwareResHardwareType.pointingDeviceAndPointingEvent", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &GetHardwareResHardwareType_pointingDeviceAndPointingEvent_xer_, &BOOLEAN_json_, &GetHardwareResHardwareType_pointingDeviceAndPointingEvent_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetHardwareResHardwareType_multipleFrequencyAudioOutput_xer_ = { {"multipleFrequencyAudioOutput>\n", "multipleFrequencyAudioOutput>\n"}, {30, 30}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetHardwareResHardwareType_multipleFrequencyAudioOutput_oer_ext_arr_[0] = {};
+const int GetHardwareResHardwareType_multipleFrequencyAudioOutput_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetHardwareResHardwareType_multipleFrequencyAudioOutput_oer_ = { -1, TRUE, -1, FALSE, 0, 0, GetHardwareResHardwareType_multipleFrequencyAudioOutput_oer_ext_arr_, 0, GetHardwareResHardwareType_multipleFrequencyAudioOutput_oer_p_};
+const TTCN_Typedescriptor_t GetHardwareResHardwareType_multipleFrequencyAudioOutput_descr_ = { "@IsobusVTMessageTypes.GetHardwareResHardwareType.multipleFrequencyAudioOutput", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &GetHardwareResHardwareType_multipleFrequencyAudioOutput_xer_, &BOOLEAN_json_, &GetHardwareResHardwareType_multipleFrequencyAudioOutput_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetHardwareResHardwareType_adjustableVolumeAudioOutput_xer_ = { {"adjustableVolumeAudioOutput>\n", "adjustableVolumeAudioOutput>\n"}, {29, 29}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetHardwareResHardwareType_adjustableVolumeAudioOutput_oer_ext_arr_[0] = {};
+const int GetHardwareResHardwareType_adjustableVolumeAudioOutput_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetHardwareResHardwareType_adjustableVolumeAudioOutput_oer_ = { -1, TRUE, -1, FALSE, 0, 0, GetHardwareResHardwareType_adjustableVolumeAudioOutput_oer_ext_arr_, 0, GetHardwareResHardwareType_adjustableVolumeAudioOutput_oer_p_};
+const TTCN_Typedescriptor_t GetHardwareResHardwareType_adjustableVolumeAudioOutput_descr_ = { "@IsobusVTMessageTypes.GetHardwareResHardwareType.adjustableVolumeAudioOutput", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &GetHardwareResHardwareType_adjustableVolumeAudioOutput_xer_, &BOOLEAN_json_, &GetHardwareResHardwareType_adjustableVolumeAudioOutput_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetHardwareResHardwareType_simultaneousActivationsOfPhysicalSoftKeys_xer_ = { {"simultaneousActivationsOfPhysicalSoftKeys>\n", "simultaneousActivationsOfPhysicalSoftKeys>\n"}, {43, 43}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetHardwareResHardwareType_simultaneousActivationsOfPhysicalSoftKeys_oer_ext_arr_[0] = {};
+const int GetHardwareResHardwareType_simultaneousActivationsOfPhysicalSoftKeys_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetHardwareResHardwareType_simultaneousActivationsOfPhysicalSoftKeys_oer_ = { -1, TRUE, -1, FALSE, 0, 0, GetHardwareResHardwareType_simultaneousActivationsOfPhysicalSoftKeys_oer_ext_arr_, 0, GetHardwareResHardwareType_simultaneousActivationsOfPhysicalSoftKeys_oer_p_};
+const TTCN_Typedescriptor_t GetHardwareResHardwareType_simultaneousActivationsOfPhysicalSoftKeys_descr_ = { "@IsobusVTMessageTypes.GetHardwareResHardwareType.simultaneousActivationsOfPhysicalSoftKeys", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &GetHardwareResHardwareType_simultaneousActivationsOfPhysicalSoftKeys_xer_, &BOOLEAN_json_, &GetHardwareResHardwareType_simultaneousActivationsOfPhysicalSoftKeys_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetHardwareResHardwareType_simultaneousActivationsOfButtons_xer_ = { {"simultaneousActivationsOfButtons>\n", "simultaneousActivationsOfButtons>\n"}, {34, 34}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetHardwareResHardwareType_simultaneousActivationsOfButtons_oer_ext_arr_[0] = {};
+const int GetHardwareResHardwareType_simultaneousActivationsOfButtons_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetHardwareResHardwareType_simultaneousActivationsOfButtons_oer_ = { -1, TRUE, -1, FALSE, 0, 0, GetHardwareResHardwareType_simultaneousActivationsOfButtons_oer_ext_arr_, 0, GetHardwareResHardwareType_simultaneousActivationsOfButtons_oer_p_};
+const TTCN_Typedescriptor_t GetHardwareResHardwareType_simultaneousActivationsOfButtons_descr_ = { "@IsobusVTMessageTypes.GetHardwareResHardwareType.simultaneousActivationsOfButtons", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &GetHardwareResHardwareType_simultaneousActivationsOfButtons_xer_, &BOOLEAN_json_, &GetHardwareResHardwareType_simultaneousActivationsOfButtons_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetHardwareResHardwareType_dragOperationViaPointingEvent_xer_ = { {"dragOperationViaPointingEvent>\n", "dragOperationViaPointingEvent>\n"}, {31, 31}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetHardwareResHardwareType_dragOperationViaPointingEvent_oer_ext_arr_[0] = {};
+const int GetHardwareResHardwareType_dragOperationViaPointingEvent_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetHardwareResHardwareType_dragOperationViaPointingEvent_oer_ = { -1, TRUE, -1, FALSE, 0, 0, GetHardwareResHardwareType_dragOperationViaPointingEvent_oer_ext_arr_, 0, GetHardwareResHardwareType_dragOperationViaPointingEvent_oer_p_};
+const TTCN_Typedescriptor_t GetHardwareResHardwareType_dragOperationViaPointingEvent_descr_ = { "@IsobusVTMessageTypes.GetHardwareResHardwareType.dragOperationViaPointingEvent", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &GetHardwareResHardwareType_dragOperationViaPointingEvent_xer_, &BOOLEAN_json_, &GetHardwareResHardwareType_dragOperationViaPointingEvent_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetHardwareResHardwareType_intermediateCoordinatesDuringDragOperation_xer_ = { {"intermediateCoordinatesDuringDragOperation>\n", "intermediateCoordinatesDuringDragOperation>\n"}, {44, 44}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetHardwareResHardwareType_intermediateCoordinatesDuringDragOperation_oer_ext_arr_[0] = {};
+const int GetHardwareResHardwareType_intermediateCoordinatesDuringDragOperation_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetHardwareResHardwareType_intermediateCoordinatesDuringDragOperation_oer_ = { -1, TRUE, -1, FALSE, 0, 0, GetHardwareResHardwareType_intermediateCoordinatesDuringDragOperation_oer_ext_arr_, 0, GetHardwareResHardwareType_intermediateCoordinatesDuringDragOperation_oer_p_};
+const TTCN_Typedescriptor_t GetHardwareResHardwareType_intermediateCoordinatesDuringDragOperation_descr_ = { "@IsobusVTMessageTypes.GetHardwareResHardwareType.intermediateCoordinatesDuringDragOperation", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &GetHardwareResHardwareType_intermediateCoordinatesDuringDragOperation_xer_, &BOOLEAN_json_, &GetHardwareResHardwareType_intermediateCoordinatesDuringDragOperation_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetHardwareResHardwareType_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for GetHardwareResHardwareType
+const TTCN_Typedescriptor_t GetHardwareResHardwareType_descr_ = { "@IsobusVTMessageTypes.GetHardwareResHardwareType", NULL, &GetHardwareResHardwareType_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       BootTimeType_xer_ = { {"BootTimeType>\n", "BootTimeType>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BootTimeType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BootTimeType_descr_ = { "@IsobusVTMessageTypes.BootTimeType", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &BootTimeType_xer_, &INTEGER_json_, &BootTimeType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetHardwareRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t GetHardwareRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t GetHardwareRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.GetHardwareRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &GetHardwareRes_vtfunction_xer_, &INTEGER_json_, &GetHardwareRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetHardwareRes_bootTimeInSeconds_xer_ = { {"bootTimeInSeconds>\n", "bootTimeInSeconds>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t GetHardwareRes_bootTimeInSeconds_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t GetHardwareRes_bootTimeInSeconds_descr_ = { "@IsobusVTMessageTypes.GetHardwareRes.bootTimeInSeconds", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &GetHardwareRes_bootTimeInSeconds_xer_, &INTEGER_json_, &GetHardwareRes_bootTimeInSeconds_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetHardwareRes_xPixels_xer_ = { {"xPixels>\n", "xPixels>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t GetHardwareRes_xPixels_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t GetHardwareRes_xPixels_descr_ = { "@IsobusVTMessageTypes.GetHardwareRes.xPixels", &INTEGER_ber_, &IsobusMessageTypes::INT2_raw_, &INTEGER_text_, &GetHardwareRes_xPixels_xer_, &INTEGER_json_, &GetHardwareRes_xPixels_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetHardwareRes_yPixels_xer_ = { {"yPixels>\n", "yPixels>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t GetHardwareRes_yPixels_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t GetHardwareRes_yPixels_descr_ = { "@IsobusVTMessageTypes.GetHardwareRes.yPixels", &INTEGER_ber_, &IsobusMessageTypes::INT2_raw_, &INTEGER_text_, &GetHardwareRes_yPixels_xer_, &INTEGER_json_, &GetHardwareRes_yPixels_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetHardwareRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for GetHardwareRes
+const TTCN_Typedescriptor_t GetHardwareRes_descr_ = { "@IsobusVTMessageTypes.GetHardwareRes", NULL, &GetHardwareRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t e__Codeplane_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,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for e__Codeplane
+const TTCN_Typedescriptor_t e__Codeplane_descr_ = { "@IsobusVTMessageTypes.e_Codeplane", NULL, &e__Codeplane_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetSupportedWidecharsReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t GetSupportedWidecharsReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t GetSupportedWidecharsReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.GetSupportedWidecharsReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &GetSupportedWidecharsReq_vtfunction_xer_, &INTEGER_json_, &GetSupportedWidecharsReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetSupportedWidecharsReq_firstWideCharInInquiryRange_xer_ = { {"firstWideCharInInquiryRange>\n", "firstWideCharInInquiryRange>\n"}, {29, 29}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetSupportedWidecharsReq_firstWideCharInInquiryRange_oer_ext_arr_[0] = {};
+const int GetSupportedWidecharsReq_firstWideCharInInquiryRange_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetSupportedWidecharsReq_firstWideCharInInquiryRange_oer_ = { -1, TRUE, 2, FALSE, 0, 0, GetSupportedWidecharsReq_firstWideCharInInquiryRange_oer_ext_arr_, 0, GetSupportedWidecharsReq_firstWideCharInInquiryRange_oer_p_};
+const TTCN_Typedescriptor_t GetSupportedWidecharsReq_firstWideCharInInquiryRange_descr_ = { "@IsobusVTMessageTypes.GetSupportedWidecharsReq.firstWideCharInInquiryRange", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &GetSupportedWidecharsReq_firstWideCharInInquiryRange_xer_, &OCTETSTRING_json_, &GetSupportedWidecharsReq_firstWideCharInInquiryRange_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetSupportedWidecharsReq_lastWideCharInInquiryRange_xer_ = { {"lastWideCharInInquiryRange>\n", "lastWideCharInInquiryRange>\n"}, {28, 28}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetSupportedWidecharsReq_lastWideCharInInquiryRange_oer_ext_arr_[0] = {};
+const int GetSupportedWidecharsReq_lastWideCharInInquiryRange_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetSupportedWidecharsReq_lastWideCharInInquiryRange_oer_ = { -1, TRUE, 2, FALSE, 0, 0, GetSupportedWidecharsReq_lastWideCharInInquiryRange_oer_ext_arr_, 0, GetSupportedWidecharsReq_lastWideCharInInquiryRange_oer_p_};
+const TTCN_Typedescriptor_t GetSupportedWidecharsReq_lastWideCharInInquiryRange_descr_ = { "@IsobusVTMessageTypes.GetSupportedWidecharsReq.lastWideCharInInquiryRange", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &GetSupportedWidecharsReq_lastWideCharInInquiryRange_xer_, &OCTETSTRING_json_, &GetSupportedWidecharsReq_lastWideCharInInquiryRange_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetSupportedWidecharsReq_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetSupportedWidecharsReq_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetSupportedWidecharsReq_reserved7_oer_ext_arr_[0] = {};
+const int GetSupportedWidecharsReq_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetSupportedWidecharsReq_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetSupportedWidecharsReq_reserved7_oer_ext_arr_, 0, GetSupportedWidecharsReq_reserved7_oer_p_};
+const TTCN_Typedescriptor_t GetSupportedWidecharsReq_reserved7_descr_ = { "@IsobusVTMessageTypes.GetSupportedWidecharsReq.reserved7", &OCTETSTRING_ber_, &GetSupportedWidecharsReq_reserved7_raw_, &OCTETSTRING_text_, &GetSupportedWidecharsReq_reserved7_xer_, &OCTETSTRING_json_, &GetSupportedWidecharsReq_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetSupportedWidecharsReq_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetSupportedWidecharsReq_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetSupportedWidecharsReq_reserved8_oer_ext_arr_[0] = {};
+const int GetSupportedWidecharsReq_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetSupportedWidecharsReq_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetSupportedWidecharsReq_reserved8_oer_ext_arr_, 0, GetSupportedWidecharsReq_reserved8_oer_p_};
+const TTCN_Typedescriptor_t GetSupportedWidecharsReq_reserved8_descr_ = { "@IsobusVTMessageTypes.GetSupportedWidecharsReq.reserved8", &OCTETSTRING_ber_, &GetSupportedWidecharsReq_reserved8_raw_, &OCTETSTRING_text_, &GetSupportedWidecharsReq_reserved8_xer_, &OCTETSTRING_json_, &GetSupportedWidecharsReq_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetSupportedWidecharsReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for GetSupportedWidecharsReq
+const TTCN_Typedescriptor_t GetSupportedWidecharsReq_descr_ = { "@IsobusVTMessageTypes.GetSupportedWidecharsReq", NULL, &GetSupportedWidecharsReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       WideCharRange_firstWideChar_xer_ = { {"firstWideChar>\n", "firstWideChar>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int WideCharRange_firstWideChar_oer_ext_arr_[0] = {};
+const int WideCharRange_firstWideChar_oer_p_[0] = {};
+const TTCN_OERdescriptor_t WideCharRange_firstWideChar_oer_ = { -1, TRUE, 2, FALSE, 0, 0, WideCharRange_firstWideChar_oer_ext_arr_, 0, WideCharRange_firstWideChar_oer_p_};
+const TTCN_Typedescriptor_t WideCharRange_firstWideChar_descr_ = { "@IsobusVTMessageTypes.WideCharRange.firstWideChar", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &WideCharRange_firstWideChar_xer_, &OCTETSTRING_json_, &WideCharRange_firstWideChar_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       WideCharRange_lastWideChar_xer_ = { {"lastWideChar>\n", "lastWideChar>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int WideCharRange_lastWideChar_oer_ext_arr_[0] = {};
+const int WideCharRange_lastWideChar_oer_p_[0] = {};
+const TTCN_OERdescriptor_t WideCharRange_lastWideChar_oer_ = { -1, TRUE, 2, FALSE, 0, 0, WideCharRange_lastWideChar_oer_ext_arr_, 0, WideCharRange_lastWideChar_oer_p_};
+const TTCN_Typedescriptor_t WideCharRange_lastWideChar_descr_ = { "@IsobusVTMessageTypes.WideCharRange.lastWideChar", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &WideCharRange_lastWideChar_xer_, &OCTETSTRING_json_, &WideCharRange_lastWideChar_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t WideCharRange_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for WideCharRange
+const TTCN_Typedescriptor_t WideCharRange_descr_ = { "@IsobusVTMessageTypes.WideCharRange", NULL, &WideCharRange_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t WideCharRangeArray_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for WideCharRangeArray
+const TTCN_Typedescriptor_t WideCharRangeArray_descr_ = { "@IsobusVTMessageTypes.WideCharRangeArray", NULL, &WideCharRangeArray_raw_, NULL, NULL, NULL, NULL, &WideCharRange_descr_, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetSupportedWidecharsRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t GetSupportedWidecharsRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t GetSupportedWidecharsRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.GetSupportedWidecharsRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &GetSupportedWidecharsRes_vtfunction_xer_, &INTEGER_json_, &GetSupportedWidecharsRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetSupportedWidecharsRes_firstWideCharInInquiryRange_xer_ = { {"firstWideCharInInquiryRange>\n", "firstWideCharInInquiryRange>\n"}, {29, 29}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetSupportedWidecharsRes_firstWideCharInInquiryRange_oer_ext_arr_[0] = {};
+const int GetSupportedWidecharsRes_firstWideCharInInquiryRange_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetSupportedWidecharsRes_firstWideCharInInquiryRange_oer_ = { -1, TRUE, 2, FALSE, 0, 0, GetSupportedWidecharsRes_firstWideCharInInquiryRange_oer_ext_arr_, 0, GetSupportedWidecharsRes_firstWideCharInInquiryRange_oer_p_};
+const TTCN_Typedescriptor_t GetSupportedWidecharsRes_firstWideCharInInquiryRange_descr_ = { "@IsobusVTMessageTypes.GetSupportedWidecharsRes.firstWideCharInInquiryRange", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &GetSupportedWidecharsRes_firstWideCharInInquiryRange_xer_, &OCTETSTRING_json_, &GetSupportedWidecharsRes_firstWideCharInInquiryRange_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetSupportedWidecharsRes_lastWideCharInInquiryRange_xer_ = { {"lastWideCharInInquiryRange>\n", "lastWideCharInInquiryRange>\n"}, {28, 28}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetSupportedWidecharsRes_lastWideCharInInquiryRange_oer_ext_arr_[0] = {};
+const int GetSupportedWidecharsRes_lastWideCharInInquiryRange_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetSupportedWidecharsRes_lastWideCharInInquiryRange_oer_ = { -1, TRUE, 2, FALSE, 0, 0, GetSupportedWidecharsRes_lastWideCharInInquiryRange_oer_ext_arr_, 0, GetSupportedWidecharsRes_lastWideCharInInquiryRange_oer_p_};
+const TTCN_Typedescriptor_t GetSupportedWidecharsRes_lastWideCharInInquiryRange_descr_ = { "@IsobusVTMessageTypes.GetSupportedWidecharsRes.lastWideCharInInquiryRange", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &GetSupportedWidecharsRes_lastWideCharInInquiryRange_xer_, &OCTETSTRING_json_, &GetSupportedWidecharsRes_lastWideCharInInquiryRange_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetSupportedWidecharsRes_numberOfRanges_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,NULL,false};
+const XERdescriptor_t       GetSupportedWidecharsRes_numberOfRanges_xer_ = { {"numberOfRanges>\n", "numberOfRanges>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t GetSupportedWidecharsRes_numberOfRanges_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t GetSupportedWidecharsRes_numberOfRanges_descr_ = { "@IsobusVTMessageTypes.GetSupportedWidecharsRes.numberOfRanges", &INTEGER_ber_, &GetSupportedWidecharsRes_numberOfRanges_raw_, &INTEGER_text_, &GetSupportedWidecharsRes_numberOfRanges_xer_, &INTEGER_json_, &GetSupportedWidecharsRes_numberOfRanges_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetSupportedWidecharsRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for GetSupportedWidecharsRes
+const TTCN_Typedescriptor_t GetSupportedWidecharsRes_descr_ = { "@IsobusVTMessageTypes.GetSupportedWidecharsRes", NULL, &GetSupportedWidecharsRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetWindowMaskDataReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t GetWindowMaskDataReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t GetWindowMaskDataReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.GetWindowMaskDataReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &GetWindowMaskDataReq_vtfunction_xer_, &INTEGER_json_, &GetWindowMaskDataReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetWindowMaskDataReq_reserved2_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetWindowMaskDataReq_reserved2_xer_ = { {"reserved2>\n", "reserved2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetWindowMaskDataReq_reserved2_oer_ext_arr_[0] = {};
+const int GetWindowMaskDataReq_reserved2_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetWindowMaskDataReq_reserved2_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetWindowMaskDataReq_reserved2_oer_ext_arr_, 0, GetWindowMaskDataReq_reserved2_oer_p_};
+const TTCN_Typedescriptor_t GetWindowMaskDataReq_reserved2_descr_ = { "@IsobusVTMessageTypes.GetWindowMaskDataReq.reserved2", &OCTETSTRING_ber_, &GetWindowMaskDataReq_reserved2_raw_, &OCTETSTRING_text_, &GetWindowMaskDataReq_reserved2_xer_, &OCTETSTRING_json_, &GetWindowMaskDataReq_reserved2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetWindowMaskDataReq_reserved3_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetWindowMaskDataReq_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetWindowMaskDataReq_reserved3_oer_ext_arr_[0] = {};
+const int GetWindowMaskDataReq_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetWindowMaskDataReq_reserved3_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetWindowMaskDataReq_reserved3_oer_ext_arr_, 0, GetWindowMaskDataReq_reserved3_oer_p_};
+const TTCN_Typedescriptor_t GetWindowMaskDataReq_reserved3_descr_ = { "@IsobusVTMessageTypes.GetWindowMaskDataReq.reserved3", &OCTETSTRING_ber_, &GetWindowMaskDataReq_reserved3_raw_, &OCTETSTRING_text_, &GetWindowMaskDataReq_reserved3_xer_, &OCTETSTRING_json_, &GetWindowMaskDataReq_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetWindowMaskDataReq_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetWindowMaskDataReq_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetWindowMaskDataReq_reserved4_oer_ext_arr_[0] = {};
+const int GetWindowMaskDataReq_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetWindowMaskDataReq_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetWindowMaskDataReq_reserved4_oer_ext_arr_, 0, GetWindowMaskDataReq_reserved4_oer_p_};
+const TTCN_Typedescriptor_t GetWindowMaskDataReq_reserved4_descr_ = { "@IsobusVTMessageTypes.GetWindowMaskDataReq.reserved4", &OCTETSTRING_ber_, &GetWindowMaskDataReq_reserved4_raw_, &OCTETSTRING_text_, &GetWindowMaskDataReq_reserved4_xer_, &OCTETSTRING_json_, &GetWindowMaskDataReq_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetWindowMaskDataReq_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetWindowMaskDataReq_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetWindowMaskDataReq_reserved5_oer_ext_arr_[0] = {};
+const int GetWindowMaskDataReq_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetWindowMaskDataReq_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetWindowMaskDataReq_reserved5_oer_ext_arr_, 0, GetWindowMaskDataReq_reserved5_oer_p_};
+const TTCN_Typedescriptor_t GetWindowMaskDataReq_reserved5_descr_ = { "@IsobusVTMessageTypes.GetWindowMaskDataReq.reserved5", &OCTETSTRING_ber_, &GetWindowMaskDataReq_reserved5_raw_, &OCTETSTRING_text_, &GetWindowMaskDataReq_reserved5_xer_, &OCTETSTRING_json_, &GetWindowMaskDataReq_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetWindowMaskDataReq_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetWindowMaskDataReq_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetWindowMaskDataReq_reserved6_oer_ext_arr_[0] = {};
+const int GetWindowMaskDataReq_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetWindowMaskDataReq_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetWindowMaskDataReq_reserved6_oer_ext_arr_, 0, GetWindowMaskDataReq_reserved6_oer_p_};
+const TTCN_Typedescriptor_t GetWindowMaskDataReq_reserved6_descr_ = { "@IsobusVTMessageTypes.GetWindowMaskDataReq.reserved6", &OCTETSTRING_ber_, &GetWindowMaskDataReq_reserved6_raw_, &OCTETSTRING_text_, &GetWindowMaskDataReq_reserved6_xer_, &OCTETSTRING_json_, &GetWindowMaskDataReq_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetWindowMaskDataReq_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetWindowMaskDataReq_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetWindowMaskDataReq_reserved7_oer_ext_arr_[0] = {};
+const int GetWindowMaskDataReq_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetWindowMaskDataReq_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetWindowMaskDataReq_reserved7_oer_ext_arr_, 0, GetWindowMaskDataReq_reserved7_oer_p_};
+const TTCN_Typedescriptor_t GetWindowMaskDataReq_reserved7_descr_ = { "@IsobusVTMessageTypes.GetWindowMaskDataReq.reserved7", &OCTETSTRING_ber_, &GetWindowMaskDataReq_reserved7_raw_, &OCTETSTRING_text_, &GetWindowMaskDataReq_reserved7_xer_, &OCTETSTRING_json_, &GetWindowMaskDataReq_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetWindowMaskDataReq_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetWindowMaskDataReq_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetWindowMaskDataReq_reserved8_oer_ext_arr_[0] = {};
+const int GetWindowMaskDataReq_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetWindowMaskDataReq_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetWindowMaskDataReq_reserved8_oer_ext_arr_, 0, GetWindowMaskDataReq_reserved8_oer_p_};
+const TTCN_Typedescriptor_t GetWindowMaskDataReq_reserved8_descr_ = { "@IsobusVTMessageTypes.GetWindowMaskDataReq.reserved8", &OCTETSTRING_ber_, &GetWindowMaskDataReq_reserved8_raw_, &OCTETSTRING_text_, &GetWindowMaskDataReq_reserved8_xer_, &OCTETSTRING_json_, &GetWindowMaskDataReq_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetWindowMaskDataReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for GetWindowMaskDataReq
+const TTCN_Typedescriptor_t GetWindowMaskDataReq_descr_ = { "@IsobusVTMessageTypes.GetWindowMaskDataReq", NULL, &GetWindowMaskDataReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetWindowMaskDataRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t GetWindowMaskDataRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t GetWindowMaskDataRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.GetWindowMaskDataRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &GetWindowMaskDataRes_vtfunction_xer_, &INTEGER_json_, &GetWindowMaskDataRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetWindowMaskDataRes_BackgroundColourVTUserLayoutDataMasks_xer_ = { {"BackgroundColourVTUserLayoutDataMasks>\n", "BackgroundColourVTUserLayoutDataMasks>\n"}, {39, 39}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetWindowMaskDataRes_BackgroundColourVTUserLayoutDataMasks_oer_ext_arr_[0] = {};
+const int GetWindowMaskDataRes_BackgroundColourVTUserLayoutDataMasks_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetWindowMaskDataRes_BackgroundColourVTUserLayoutDataMasks_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetWindowMaskDataRes_BackgroundColourVTUserLayoutDataMasks_oer_ext_arr_, 0, GetWindowMaskDataRes_BackgroundColourVTUserLayoutDataMasks_oer_p_};
+const TTCN_Typedescriptor_t GetWindowMaskDataRes_BackgroundColourVTUserLayoutDataMasks_descr_ = { "@IsobusVTMessageTypes.GetWindowMaskDataRes.BackgroundColourVTUserLayoutDataMasks", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &GetWindowMaskDataRes_BackgroundColourVTUserLayoutDataMasks_xer_, &OCTETSTRING_json_, &GetWindowMaskDataRes_BackgroundColourVTUserLayoutDataMasks_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetWindowMaskDataRes_BackgroundColourVTKeyCells_xer_ = { {"BackgroundColourVTKeyCells>\n", "BackgroundColourVTKeyCells>\n"}, {28, 28}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetWindowMaskDataRes_BackgroundColourVTKeyCells_oer_ext_arr_[0] = {};
+const int GetWindowMaskDataRes_BackgroundColourVTKeyCells_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetWindowMaskDataRes_BackgroundColourVTKeyCells_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetWindowMaskDataRes_BackgroundColourVTKeyCells_oer_ext_arr_, 0, GetWindowMaskDataRes_BackgroundColourVTKeyCells_oer_p_};
+const TTCN_Typedescriptor_t GetWindowMaskDataRes_BackgroundColourVTKeyCells_descr_ = { "@IsobusVTMessageTypes.GetWindowMaskDataRes.BackgroundColourVTKeyCells", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &GetWindowMaskDataRes_BackgroundColourVTKeyCells_xer_, &OCTETSTRING_json_, &GetWindowMaskDataRes_BackgroundColourVTKeyCells_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetWindowMaskDataRes_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetWindowMaskDataRes_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetWindowMaskDataRes_reserved4_oer_ext_arr_[0] = {};
+const int GetWindowMaskDataRes_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetWindowMaskDataRes_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetWindowMaskDataRes_reserved4_oer_ext_arr_, 0, GetWindowMaskDataRes_reserved4_oer_p_};
+const TTCN_Typedescriptor_t GetWindowMaskDataRes_reserved4_descr_ = { "@IsobusVTMessageTypes.GetWindowMaskDataRes.reserved4", &OCTETSTRING_ber_, &GetWindowMaskDataRes_reserved4_raw_, &OCTETSTRING_text_, &GetWindowMaskDataRes_reserved4_xer_, &OCTETSTRING_json_, &GetWindowMaskDataRes_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetWindowMaskDataRes_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetWindowMaskDataRes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetWindowMaskDataRes_reserved5_oer_ext_arr_[0] = {};
+const int GetWindowMaskDataRes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetWindowMaskDataRes_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetWindowMaskDataRes_reserved5_oer_ext_arr_, 0, GetWindowMaskDataRes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t GetWindowMaskDataRes_reserved5_descr_ = { "@IsobusVTMessageTypes.GetWindowMaskDataRes.reserved5", &OCTETSTRING_ber_, &GetWindowMaskDataRes_reserved5_raw_, &OCTETSTRING_text_, &GetWindowMaskDataRes_reserved5_xer_, &OCTETSTRING_json_, &GetWindowMaskDataRes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetWindowMaskDataRes_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetWindowMaskDataRes_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetWindowMaskDataRes_reserved6_oer_ext_arr_[0] = {};
+const int GetWindowMaskDataRes_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetWindowMaskDataRes_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetWindowMaskDataRes_reserved6_oer_ext_arr_, 0, GetWindowMaskDataRes_reserved6_oer_p_};
+const TTCN_Typedescriptor_t GetWindowMaskDataRes_reserved6_descr_ = { "@IsobusVTMessageTypes.GetWindowMaskDataRes.reserved6", &OCTETSTRING_ber_, &GetWindowMaskDataRes_reserved6_raw_, &OCTETSTRING_text_, &GetWindowMaskDataRes_reserved6_xer_, &OCTETSTRING_json_, &GetWindowMaskDataRes_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetWindowMaskDataRes_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetWindowMaskDataRes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetWindowMaskDataRes_reserved7_oer_ext_arr_[0] = {};
+const int GetWindowMaskDataRes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetWindowMaskDataRes_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetWindowMaskDataRes_reserved7_oer_ext_arr_, 0, GetWindowMaskDataRes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t GetWindowMaskDataRes_reserved7_descr_ = { "@IsobusVTMessageTypes.GetWindowMaskDataRes.reserved7", &OCTETSTRING_ber_, &GetWindowMaskDataRes_reserved7_raw_, &OCTETSTRING_text_, &GetWindowMaskDataRes_reserved7_xer_, &OCTETSTRING_json_, &GetWindowMaskDataRes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetWindowMaskDataRes_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetWindowMaskDataRes_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetWindowMaskDataRes_reserved8_oer_ext_arr_[0] = {};
+const int GetWindowMaskDataRes_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetWindowMaskDataRes_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetWindowMaskDataRes_reserved8_oer_ext_arr_, 0, GetWindowMaskDataRes_reserved8_oer_p_};
+const TTCN_Typedescriptor_t GetWindowMaskDataRes_reserved8_descr_ = { "@IsobusVTMessageTypes.GetWindowMaskDataRes.reserved8", &OCTETSTRING_ber_, &GetWindowMaskDataRes_reserved8_raw_, &OCTETSTRING_text_, &GetWindowMaskDataRes_reserved8_xer_, &OCTETSTRING_json_, &GetWindowMaskDataRes_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetWindowMaskDataRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for GetWindowMaskDataRes
+const TTCN_Typedescriptor_t GetWindowMaskDataRes_descr_ = { "@IsobusVTMessageTypes.GetWindowMaskDataRes", NULL, &GetWindowMaskDataRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetSupportedObjectsReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t GetSupportedObjectsReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t GetSupportedObjectsReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.GetSupportedObjectsReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &GetSupportedObjectsReq_vtfunction_xer_, &INTEGER_json_, &GetSupportedObjectsReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetSupportedObjectsReq_reserved2_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetSupportedObjectsReq_reserved2_xer_ = { {"reserved2>\n", "reserved2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetSupportedObjectsReq_reserved2_oer_ext_arr_[0] = {};
+const int GetSupportedObjectsReq_reserved2_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetSupportedObjectsReq_reserved2_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetSupportedObjectsReq_reserved2_oer_ext_arr_, 0, GetSupportedObjectsReq_reserved2_oer_p_};
+const TTCN_Typedescriptor_t GetSupportedObjectsReq_reserved2_descr_ = { "@IsobusVTMessageTypes.GetSupportedObjectsReq.reserved2", &OCTETSTRING_ber_, &GetSupportedObjectsReq_reserved2_raw_, &OCTETSTRING_text_, &GetSupportedObjectsReq_reserved2_xer_, &OCTETSTRING_json_, &GetSupportedObjectsReq_reserved2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetSupportedObjectsReq_reserved3_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetSupportedObjectsReq_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetSupportedObjectsReq_reserved3_oer_ext_arr_[0] = {};
+const int GetSupportedObjectsReq_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetSupportedObjectsReq_reserved3_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetSupportedObjectsReq_reserved3_oer_ext_arr_, 0, GetSupportedObjectsReq_reserved3_oer_p_};
+const TTCN_Typedescriptor_t GetSupportedObjectsReq_reserved3_descr_ = { "@IsobusVTMessageTypes.GetSupportedObjectsReq.reserved3", &OCTETSTRING_ber_, &GetSupportedObjectsReq_reserved3_raw_, &OCTETSTRING_text_, &GetSupportedObjectsReq_reserved3_xer_, &OCTETSTRING_json_, &GetSupportedObjectsReq_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetSupportedObjectsReq_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetSupportedObjectsReq_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetSupportedObjectsReq_reserved4_oer_ext_arr_[0] = {};
+const int GetSupportedObjectsReq_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetSupportedObjectsReq_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetSupportedObjectsReq_reserved4_oer_ext_arr_, 0, GetSupportedObjectsReq_reserved4_oer_p_};
+const TTCN_Typedescriptor_t GetSupportedObjectsReq_reserved4_descr_ = { "@IsobusVTMessageTypes.GetSupportedObjectsReq.reserved4", &OCTETSTRING_ber_, &GetSupportedObjectsReq_reserved4_raw_, &OCTETSTRING_text_, &GetSupportedObjectsReq_reserved4_xer_, &OCTETSTRING_json_, &GetSupportedObjectsReq_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetSupportedObjectsReq_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetSupportedObjectsReq_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetSupportedObjectsReq_reserved5_oer_ext_arr_[0] = {};
+const int GetSupportedObjectsReq_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetSupportedObjectsReq_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetSupportedObjectsReq_reserved5_oer_ext_arr_, 0, GetSupportedObjectsReq_reserved5_oer_p_};
+const TTCN_Typedescriptor_t GetSupportedObjectsReq_reserved5_descr_ = { "@IsobusVTMessageTypes.GetSupportedObjectsReq.reserved5", &OCTETSTRING_ber_, &GetSupportedObjectsReq_reserved5_raw_, &OCTETSTRING_text_, &GetSupportedObjectsReq_reserved5_xer_, &OCTETSTRING_json_, &GetSupportedObjectsReq_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetSupportedObjectsReq_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetSupportedObjectsReq_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetSupportedObjectsReq_reserved6_oer_ext_arr_[0] = {};
+const int GetSupportedObjectsReq_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetSupportedObjectsReq_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetSupportedObjectsReq_reserved6_oer_ext_arr_, 0, GetSupportedObjectsReq_reserved6_oer_p_};
+const TTCN_Typedescriptor_t GetSupportedObjectsReq_reserved6_descr_ = { "@IsobusVTMessageTypes.GetSupportedObjectsReq.reserved6", &OCTETSTRING_ber_, &GetSupportedObjectsReq_reserved6_raw_, &OCTETSTRING_text_, &GetSupportedObjectsReq_reserved6_xer_, &OCTETSTRING_json_, &GetSupportedObjectsReq_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetSupportedObjectsReq_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetSupportedObjectsReq_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetSupportedObjectsReq_reserved7_oer_ext_arr_[0] = {};
+const int GetSupportedObjectsReq_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetSupportedObjectsReq_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetSupportedObjectsReq_reserved7_oer_ext_arr_, 0, GetSupportedObjectsReq_reserved7_oer_p_};
+const TTCN_Typedescriptor_t GetSupportedObjectsReq_reserved7_descr_ = { "@IsobusVTMessageTypes.GetSupportedObjectsReq.reserved7", &OCTETSTRING_ber_, &GetSupportedObjectsReq_reserved7_raw_, &OCTETSTRING_text_, &GetSupportedObjectsReq_reserved7_xer_, &OCTETSTRING_json_, &GetSupportedObjectsReq_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetSupportedObjectsReq_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetSupportedObjectsReq_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetSupportedObjectsReq_reserved8_oer_ext_arr_[0] = {};
+const int GetSupportedObjectsReq_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetSupportedObjectsReq_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetSupportedObjectsReq_reserved8_oer_ext_arr_, 0, GetSupportedObjectsReq_reserved8_oer_p_};
+const TTCN_Typedescriptor_t GetSupportedObjectsReq_reserved8_descr_ = { "@IsobusVTMessageTypes.GetSupportedObjectsReq.reserved8", &OCTETSTRING_ber_, &GetSupportedObjectsReq_reserved8_raw_, &OCTETSTRING_text_, &GetSupportedObjectsReq_reserved8_xer_, &OCTETSTRING_json_, &GetSupportedObjectsReq_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetSupportedObjectsReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for GetSupportedObjectsReq
+const TTCN_Typedescriptor_t GetSupportedObjectsReq_descr_ = { "@IsobusVTMessageTypes.GetSupportedObjectsReq", NULL, &GetSupportedObjectsReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetSupportedObjectsRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t GetSupportedObjectsRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t GetSupportedObjectsRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.GetSupportedObjectsRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &GetSupportedObjectsRes_vtfunction_xer_, &INTEGER_json_, &GetSupportedObjectsRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetSupportedObjectsRes_numberOfBytesToFollow_raw_ = {16,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,NULL,false};
+const XERdescriptor_t       GetSupportedObjectsRes_numberOfBytesToFollow_xer_ = { {"numberOfBytesToFollow>\n", "numberOfBytesToFollow>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t GetSupportedObjectsRes_numberOfBytesToFollow_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t GetSupportedObjectsRes_numberOfBytesToFollow_descr_ = { "@IsobusVTMessageTypes.GetSupportedObjectsRes.numberOfBytesToFollow", &INTEGER_ber_, &GetSupportedObjectsRes_numberOfBytesToFollow_raw_, &INTEGER_text_, &GetSupportedObjectsRes_numberOfBytesToFollow_xer_, &INTEGER_json_, &GetSupportedObjectsRes_numberOfBytesToFollow_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetSupportedObjectsRes_supportedObjectTypes_xer_ = { {"supportedObjectTypes>\n", "supportedObjectTypes>\n"}, {22, 22}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetSupportedObjectsRes_supportedObjectTypes_oer_ext_arr_[0] = {};
+const int GetSupportedObjectsRes_supportedObjectTypes_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetSupportedObjectsRes_supportedObjectTypes_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetSupportedObjectsRes_supportedObjectTypes_oer_ext_arr_, 0, GetSupportedObjectsRes_supportedObjectTypes_oer_p_};
+const TTCN_Typedescriptor_t GetSupportedObjectsRes_supportedObjectTypes_descr_ = { "@IsobusVTMessageTypes.GetSupportedObjectsRes.supportedObjectTypes", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &GetSupportedObjectsRes_supportedObjectTypes_xer_, &OCTETSTRING_json_, &GetSupportedObjectsRes_supportedObjectTypes_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetSupportedObjectsRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for GetSupportedObjectsRes
+const TTCN_Typedescriptor_t GetSupportedObjectsRes_descr_ = { "@IsobusVTMessageTypes.GetSupportedObjectsRes", NULL, &GetSupportedObjectsRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       StoreVersionRes__errorCodesType_reserved0_xer_ = { {"reserved0>\n", "reserved0>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int StoreVersionRes__errorCodesType_reserved0_oer_ext_arr_[0] = {};
+const int StoreVersionRes__errorCodesType_reserved0_oer_p_[0] = {};
+const TTCN_OERdescriptor_t StoreVersionRes__errorCodesType_reserved0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, StoreVersionRes__errorCodesType_reserved0_oer_ext_arr_, 0, StoreVersionRes__errorCodesType_reserved0_oer_p_};
+const TTCN_Typedescriptor_t StoreVersionRes__errorCodesType_reserved0_descr_ = { "@IsobusVTMessageTypes.StoreVersionRes_errorCodesType.reserved0", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &StoreVersionRes__errorCodesType_reserved0_xer_, &BOOLEAN_json_, &StoreVersionRes__errorCodesType_reserved0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       StoreVersionRes__errorCodesType_versionLabelIsNotCorrect_xer_ = { {"versionLabelIsNotCorrect>\n", "versionLabelIsNotCorrect>\n"}, {26, 26}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int StoreVersionRes__errorCodesType_versionLabelIsNotCorrect_oer_ext_arr_[0] = {};
+const int StoreVersionRes__errorCodesType_versionLabelIsNotCorrect_oer_p_[0] = {};
+const TTCN_OERdescriptor_t StoreVersionRes__errorCodesType_versionLabelIsNotCorrect_oer_ = { -1, TRUE, -1, FALSE, 0, 0, StoreVersionRes__errorCodesType_versionLabelIsNotCorrect_oer_ext_arr_, 0, StoreVersionRes__errorCodesType_versionLabelIsNotCorrect_oer_p_};
+const TTCN_Typedescriptor_t StoreVersionRes__errorCodesType_versionLabelIsNotCorrect_descr_ = { "@IsobusVTMessageTypes.StoreVersionRes_errorCodesType.versionLabelIsNotCorrect", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &StoreVersionRes__errorCodesType_versionLabelIsNotCorrect_xer_, &BOOLEAN_json_, &StoreVersionRes__errorCodesType_versionLabelIsNotCorrect_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       StoreVersionRes__errorCodesType_insufficientMemoryAvailable_xer_ = { {"insufficientMemoryAvailable>\n", "insufficientMemoryAvailable>\n"}, {29, 29}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int StoreVersionRes__errorCodesType_insufficientMemoryAvailable_oer_ext_arr_[0] = {};
+const int StoreVersionRes__errorCodesType_insufficientMemoryAvailable_oer_p_[0] = {};
+const TTCN_OERdescriptor_t StoreVersionRes__errorCodesType_insufficientMemoryAvailable_oer_ = { -1, TRUE, -1, FALSE, 0, 0, StoreVersionRes__errorCodesType_insufficientMemoryAvailable_oer_ext_arr_, 0, StoreVersionRes__errorCodesType_insufficientMemoryAvailable_oer_p_};
+const TTCN_Typedescriptor_t StoreVersionRes__errorCodesType_insufficientMemoryAvailable_descr_ = { "@IsobusVTMessageTypes.StoreVersionRes_errorCodesType.insufficientMemoryAvailable", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &StoreVersionRes__errorCodesType_insufficientMemoryAvailable_xer_, &BOOLEAN_json_, &StoreVersionRes__errorCodesType_insufficientMemoryAvailable_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       StoreVersionRes__errorCodesType_anyOtherError_xer_ = { {"anyOtherError>\n", "anyOtherError>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int StoreVersionRes__errorCodesType_anyOtherError_oer_ext_arr_[0] = {};
+const int StoreVersionRes__errorCodesType_anyOtherError_oer_p_[0] = {};
+const TTCN_OERdescriptor_t StoreVersionRes__errorCodesType_anyOtherError_oer_ = { -1, TRUE, -1, FALSE, 0, 0, StoreVersionRes__errorCodesType_anyOtherError_oer_ext_arr_, 0, StoreVersionRes__errorCodesType_anyOtherError_oer_p_};
+const TTCN_Typedescriptor_t StoreVersionRes__errorCodesType_anyOtherError_descr_ = { "@IsobusVTMessageTypes.StoreVersionRes_errorCodesType.anyOtherError", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &StoreVersionRes__errorCodesType_anyOtherError_xer_, &BOOLEAN_json_, &StoreVersionRes__errorCodesType_anyOtherError_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       StoreVersionRes__errorCodesType_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int StoreVersionRes__errorCodesType_reserved4_oer_ext_arr_[0] = {};
+const int StoreVersionRes__errorCodesType_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t StoreVersionRes__errorCodesType_reserved4_oer_ = { -1, TRUE, -1, FALSE, 0, 0, StoreVersionRes__errorCodesType_reserved4_oer_ext_arr_, 0, StoreVersionRes__errorCodesType_reserved4_oer_p_};
+const TTCN_Typedescriptor_t StoreVersionRes__errorCodesType_reserved4_descr_ = { "@IsobusVTMessageTypes.StoreVersionRes_errorCodesType.reserved4", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &StoreVersionRes__errorCodesType_reserved4_xer_, &BOOLEAN_json_, &StoreVersionRes__errorCodesType_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       StoreVersionRes__errorCodesType_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int StoreVersionRes__errorCodesType_reserved5_oer_ext_arr_[0] = {};
+const int StoreVersionRes__errorCodesType_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t StoreVersionRes__errorCodesType_reserved5_oer_ = { -1, TRUE, -1, FALSE, 0, 0, StoreVersionRes__errorCodesType_reserved5_oer_ext_arr_, 0, StoreVersionRes__errorCodesType_reserved5_oer_p_};
+const TTCN_Typedescriptor_t StoreVersionRes__errorCodesType_reserved5_descr_ = { "@IsobusVTMessageTypes.StoreVersionRes_errorCodesType.reserved5", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &StoreVersionRes__errorCodesType_reserved5_xer_, &BOOLEAN_json_, &StoreVersionRes__errorCodesType_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       StoreVersionRes__errorCodesType_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int StoreVersionRes__errorCodesType_reserved6_oer_ext_arr_[0] = {};
+const int StoreVersionRes__errorCodesType_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t StoreVersionRes__errorCodesType_reserved6_oer_ = { -1, TRUE, -1, FALSE, 0, 0, StoreVersionRes__errorCodesType_reserved6_oer_ext_arr_, 0, StoreVersionRes__errorCodesType_reserved6_oer_p_};
+const TTCN_Typedescriptor_t StoreVersionRes__errorCodesType_reserved6_descr_ = { "@IsobusVTMessageTypes.StoreVersionRes_errorCodesType.reserved6", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &StoreVersionRes__errorCodesType_reserved6_xer_, &BOOLEAN_json_, &StoreVersionRes__errorCodesType_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       StoreVersionRes__errorCodesType_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int StoreVersionRes__errorCodesType_reserved7_oer_ext_arr_[0] = {};
+const int StoreVersionRes__errorCodesType_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t StoreVersionRes__errorCodesType_reserved7_oer_ = { -1, TRUE, -1, FALSE, 0, 0, StoreVersionRes__errorCodesType_reserved7_oer_ext_arr_, 0, StoreVersionRes__errorCodesType_reserved7_oer_p_};
+const TTCN_Typedescriptor_t StoreVersionRes__errorCodesType_reserved7_descr_ = { "@IsobusVTMessageTypes.StoreVersionRes_errorCodesType.reserved7", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &StoreVersionRes__errorCodesType_reserved7_xer_, &BOOLEAN_json_, &StoreVersionRes__errorCodesType_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t StoreVersionRes__errorCodesType_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for StoreVersionRes__errorCodesType
+const TTCN_Typedescriptor_t StoreVersionRes__errorCodesType_descr_ = { "@IsobusVTMessageTypes.StoreVersionRes_errorCodesType", NULL, &StoreVersionRes__errorCodesType_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       StoreVersionRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t StoreVersionRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t StoreVersionRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.StoreVersionRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &StoreVersionRes_vtfunction_xer_, &INTEGER_json_, &StoreVersionRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t StoreVersionRes_reserved2_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       StoreVersionRes_reserved2_xer_ = { {"reserved2>\n", "reserved2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int StoreVersionRes_reserved2_oer_ext_arr_[0] = {};
+const int StoreVersionRes_reserved2_oer_p_[0] = {};
+const TTCN_OERdescriptor_t StoreVersionRes_reserved2_oer_ = { -1, TRUE, 1, FALSE, 0, 0, StoreVersionRes_reserved2_oer_ext_arr_, 0, StoreVersionRes_reserved2_oer_p_};
+const TTCN_Typedescriptor_t StoreVersionRes_reserved2_descr_ = { "@IsobusVTMessageTypes.StoreVersionRes.reserved2", &OCTETSTRING_ber_, &StoreVersionRes_reserved2_raw_, &OCTETSTRING_text_, &StoreVersionRes_reserved2_xer_, &OCTETSTRING_json_, &StoreVersionRes_reserved2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t StoreVersionRes_reserved3_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       StoreVersionRes_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int StoreVersionRes_reserved3_oer_ext_arr_[0] = {};
+const int StoreVersionRes_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t StoreVersionRes_reserved3_oer_ = { -1, TRUE, 1, FALSE, 0, 0, StoreVersionRes_reserved3_oer_ext_arr_, 0, StoreVersionRes_reserved3_oer_p_};
+const TTCN_Typedescriptor_t StoreVersionRes_reserved3_descr_ = { "@IsobusVTMessageTypes.StoreVersionRes.reserved3", &OCTETSTRING_ber_, &StoreVersionRes_reserved3_raw_, &OCTETSTRING_text_, &StoreVersionRes_reserved3_xer_, &OCTETSTRING_json_, &StoreVersionRes_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t StoreVersionRes_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       StoreVersionRes_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int StoreVersionRes_reserved4_oer_ext_arr_[0] = {};
+const int StoreVersionRes_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t StoreVersionRes_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, StoreVersionRes_reserved4_oer_ext_arr_, 0, StoreVersionRes_reserved4_oer_p_};
+const TTCN_Typedescriptor_t StoreVersionRes_reserved4_descr_ = { "@IsobusVTMessageTypes.StoreVersionRes.reserved4", &OCTETSTRING_ber_, &StoreVersionRes_reserved4_raw_, &OCTETSTRING_text_, &StoreVersionRes_reserved4_xer_, &OCTETSTRING_json_, &StoreVersionRes_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t StoreVersionRes_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       StoreVersionRes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int StoreVersionRes_reserved5_oer_ext_arr_[0] = {};
+const int StoreVersionRes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t StoreVersionRes_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, StoreVersionRes_reserved5_oer_ext_arr_, 0, StoreVersionRes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t StoreVersionRes_reserved5_descr_ = { "@IsobusVTMessageTypes.StoreVersionRes.reserved5", &OCTETSTRING_ber_, &StoreVersionRes_reserved5_raw_, &OCTETSTRING_text_, &StoreVersionRes_reserved5_xer_, &OCTETSTRING_json_, &StoreVersionRes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t StoreVersionRes_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       StoreVersionRes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int StoreVersionRes_reserved7_oer_ext_arr_[0] = {};
+const int StoreVersionRes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t StoreVersionRes_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, StoreVersionRes_reserved7_oer_ext_arr_, 0, StoreVersionRes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t StoreVersionRes_reserved7_descr_ = { "@IsobusVTMessageTypes.StoreVersionRes.reserved7", &OCTETSTRING_ber_, &StoreVersionRes_reserved7_raw_, &OCTETSTRING_text_, &StoreVersionRes_reserved7_xer_, &OCTETSTRING_json_, &StoreVersionRes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t StoreVersionRes_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       StoreVersionRes_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int StoreVersionRes_reserved8_oer_ext_arr_[0] = {};
+const int StoreVersionRes_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t StoreVersionRes_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, StoreVersionRes_reserved8_oer_ext_arr_, 0, StoreVersionRes_reserved8_oer_p_};
+const TTCN_Typedescriptor_t StoreVersionRes_reserved8_descr_ = { "@IsobusVTMessageTypes.StoreVersionRes.reserved8", &OCTETSTRING_ber_, &StoreVersionRes_reserved8_raw_, &OCTETSTRING_text_, &StoreVersionRes_reserved8_xer_, &OCTETSTRING_json_, &StoreVersionRes_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t StoreVersionRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for StoreVersionRes
+const TTCN_Typedescriptor_t StoreVersionRes_descr_ = { "@IsobusVTMessageTypes.StoreVersionRes", NULL, &StoreVersionRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       StoreVersionReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t StoreVersionReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t StoreVersionReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.StoreVersionReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &StoreVersionReq_vtfunction_xer_, &INTEGER_json_, &StoreVersionReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       StoreVersionReq_versionLabel_xer_ = { {"versionLabel>\n", "versionLabel>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_Typedescriptor_t StoreVersionReq_versionLabel_descr_ = { "@IsobusVTMessageTypes.StoreVersionReq.versionLabel", NULL, &CHR7_raw_, &CHARSTRING_text_, &StoreVersionReq_versionLabel_xer_, &CHARSTRING_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t StoreVersionReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for StoreVersionReq
+const TTCN_Typedescriptor_t StoreVersionReq_descr_ = { "@IsobusVTMessageTypes.StoreVersionReq", NULL, &StoreVersionReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       WorkingSetMaintenanceBitMask_initiatingWorkingSetMaintenance_xer_ = { {"initiatingWorkingSetMaintenance>\n", "initiatingWorkingSetMaintenance>\n"}, {33, 33}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int WorkingSetMaintenanceBitMask_initiatingWorkingSetMaintenance_oer_ext_arr_[0] = {};
+const int WorkingSetMaintenanceBitMask_initiatingWorkingSetMaintenance_oer_p_[0] = {};
+const TTCN_OERdescriptor_t WorkingSetMaintenanceBitMask_initiatingWorkingSetMaintenance_oer_ = { -1, TRUE, -1, FALSE, 0, 0, WorkingSetMaintenanceBitMask_initiatingWorkingSetMaintenance_oer_ext_arr_, 0, WorkingSetMaintenanceBitMask_initiatingWorkingSetMaintenance_oer_p_};
+const TTCN_Typedescriptor_t WorkingSetMaintenanceBitMask_initiatingWorkingSetMaintenance_descr_ = { "@IsobusVTMessageTypes.WorkingSetMaintenanceBitMask.initiatingWorkingSetMaintenance", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &WorkingSetMaintenanceBitMask_initiatingWorkingSetMaintenance_xer_, &BOOLEAN_json_, &WorkingSetMaintenanceBitMask_initiatingWorkingSetMaintenance_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       WorkingSetMaintenanceBitMask_reserved1_xer_ = { {"reserved1>\n", "reserved1>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int WorkingSetMaintenanceBitMask_reserved1_oer_ext_arr_[0] = {};
+const int WorkingSetMaintenanceBitMask_reserved1_oer_p_[0] = {};
+const TTCN_OERdescriptor_t WorkingSetMaintenanceBitMask_reserved1_oer_ = { -1, TRUE, -1, FALSE, 0, 0, WorkingSetMaintenanceBitMask_reserved1_oer_ext_arr_, 0, WorkingSetMaintenanceBitMask_reserved1_oer_p_};
+const TTCN_Typedescriptor_t WorkingSetMaintenanceBitMask_reserved1_descr_ = { "@IsobusVTMessageTypes.WorkingSetMaintenanceBitMask.reserved1", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &WorkingSetMaintenanceBitMask_reserved1_xer_, &BOOLEAN_json_, &WorkingSetMaintenanceBitMask_reserved1_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       WorkingSetMaintenanceBitMask_reserved2_xer_ = { {"reserved2>\n", "reserved2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int WorkingSetMaintenanceBitMask_reserved2_oer_ext_arr_[0] = {};
+const int WorkingSetMaintenanceBitMask_reserved2_oer_p_[0] = {};
+const TTCN_OERdescriptor_t WorkingSetMaintenanceBitMask_reserved2_oer_ = { -1, TRUE, -1, FALSE, 0, 0, WorkingSetMaintenanceBitMask_reserved2_oer_ext_arr_, 0, WorkingSetMaintenanceBitMask_reserved2_oer_p_};
+const TTCN_Typedescriptor_t WorkingSetMaintenanceBitMask_reserved2_descr_ = { "@IsobusVTMessageTypes.WorkingSetMaintenanceBitMask.reserved2", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &WorkingSetMaintenanceBitMask_reserved2_xer_, &BOOLEAN_json_, &WorkingSetMaintenanceBitMask_reserved2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       WorkingSetMaintenanceBitMask_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int WorkingSetMaintenanceBitMask_reserved3_oer_ext_arr_[0] = {};
+const int WorkingSetMaintenanceBitMask_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t WorkingSetMaintenanceBitMask_reserved3_oer_ = { -1, TRUE, -1, FALSE, 0, 0, WorkingSetMaintenanceBitMask_reserved3_oer_ext_arr_, 0, WorkingSetMaintenanceBitMask_reserved3_oer_p_};
+const TTCN_Typedescriptor_t WorkingSetMaintenanceBitMask_reserved3_descr_ = { "@IsobusVTMessageTypes.WorkingSetMaintenanceBitMask.reserved3", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &WorkingSetMaintenanceBitMask_reserved3_xer_, &BOOLEAN_json_, &WorkingSetMaintenanceBitMask_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       WorkingSetMaintenanceBitMask_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int WorkingSetMaintenanceBitMask_reserved4_oer_ext_arr_[0] = {};
+const int WorkingSetMaintenanceBitMask_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t WorkingSetMaintenanceBitMask_reserved4_oer_ = { -1, TRUE, -1, FALSE, 0, 0, WorkingSetMaintenanceBitMask_reserved4_oer_ext_arr_, 0, WorkingSetMaintenanceBitMask_reserved4_oer_p_};
+const TTCN_Typedescriptor_t WorkingSetMaintenanceBitMask_reserved4_descr_ = { "@IsobusVTMessageTypes.WorkingSetMaintenanceBitMask.reserved4", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &WorkingSetMaintenanceBitMask_reserved4_xer_, &BOOLEAN_json_, &WorkingSetMaintenanceBitMask_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       WorkingSetMaintenanceBitMask_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int WorkingSetMaintenanceBitMask_reserved5_oer_ext_arr_[0] = {};
+const int WorkingSetMaintenanceBitMask_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t WorkingSetMaintenanceBitMask_reserved5_oer_ = { -1, TRUE, -1, FALSE, 0, 0, WorkingSetMaintenanceBitMask_reserved5_oer_ext_arr_, 0, WorkingSetMaintenanceBitMask_reserved5_oer_p_};
+const TTCN_Typedescriptor_t WorkingSetMaintenanceBitMask_reserved5_descr_ = { "@IsobusVTMessageTypes.WorkingSetMaintenanceBitMask.reserved5", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &WorkingSetMaintenanceBitMask_reserved5_xer_, &BOOLEAN_json_, &WorkingSetMaintenanceBitMask_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       WorkingSetMaintenanceBitMask_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int WorkingSetMaintenanceBitMask_reserved6_oer_ext_arr_[0] = {};
+const int WorkingSetMaintenanceBitMask_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t WorkingSetMaintenanceBitMask_reserved6_oer_ = { -1, TRUE, -1, FALSE, 0, 0, WorkingSetMaintenanceBitMask_reserved6_oer_ext_arr_, 0, WorkingSetMaintenanceBitMask_reserved6_oer_p_};
+const TTCN_Typedescriptor_t WorkingSetMaintenanceBitMask_reserved6_descr_ = { "@IsobusVTMessageTypes.WorkingSetMaintenanceBitMask.reserved6", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &WorkingSetMaintenanceBitMask_reserved6_xer_, &BOOLEAN_json_, &WorkingSetMaintenanceBitMask_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       WorkingSetMaintenanceBitMask_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int WorkingSetMaintenanceBitMask_reserved7_oer_ext_arr_[0] = {};
+const int WorkingSetMaintenanceBitMask_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t WorkingSetMaintenanceBitMask_reserved7_oer_ = { -1, TRUE, -1, FALSE, 0, 0, WorkingSetMaintenanceBitMask_reserved7_oer_ext_arr_, 0, WorkingSetMaintenanceBitMask_reserved7_oer_p_};
+const TTCN_Typedescriptor_t WorkingSetMaintenanceBitMask_reserved7_descr_ = { "@IsobusVTMessageTypes.WorkingSetMaintenanceBitMask.reserved7", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &WorkingSetMaintenanceBitMask_reserved7_xer_, &BOOLEAN_json_, &WorkingSetMaintenanceBitMask_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t WorkingSetMaintenanceBitMask_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for WorkingSetMaintenanceBitMask
+const TTCN_Typedescriptor_t WorkingSetMaintenanceBitMask_descr_ = { "@IsobusVTMessageTypes.WorkingSetMaintenanceBitMask", NULL, &WorkingSetMaintenanceBitMask_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t e__WorkingSetMaintenanceVersionNumber_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,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for e__WorkingSetMaintenanceVersionNumber
+const TTCN_Typedescriptor_t e__WorkingSetMaintenanceVersionNumber_descr_ = { "@IsobusVTMessageTypes.e_WorkingSetMaintenanceVersionNumber", NULL, &e__WorkingSetMaintenanceVersionNumber_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       LoadVersionReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t LoadVersionReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t LoadVersionReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.LoadVersionReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &LoadVersionReq_vtfunction_xer_, &INTEGER_json_, &LoadVersionReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       LoadVersionReq_versionLabel_xer_ = { {"versionLabel>\n", "versionLabel>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_Typedescriptor_t LoadVersionReq_versionLabel_descr_ = { "@IsobusVTMessageTypes.LoadVersionReq.versionLabel", NULL, &CHR7_raw_, &CHARSTRING_text_, &LoadVersionReq_versionLabel_xer_, &CHARSTRING_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t LoadVersionReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for LoadVersionReq
+const TTCN_Typedescriptor_t LoadVersionReq_descr_ = { "@IsobusVTMessageTypes.LoadVersionReq", NULL, &LoadVersionReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       LoadVersionRes__errorCodesType_fileSystemErrorOrPoolDataCorruption_xer_ = { {"fileSystemErrorOrPoolDataCorruption>\n", "fileSystemErrorOrPoolDataCorruption>\n"}, {37, 37}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int LoadVersionRes__errorCodesType_fileSystemErrorOrPoolDataCorruption_oer_ext_arr_[0] = {};
+const int LoadVersionRes__errorCodesType_fileSystemErrorOrPoolDataCorruption_oer_p_[0] = {};
+const TTCN_OERdescriptor_t LoadVersionRes__errorCodesType_fileSystemErrorOrPoolDataCorruption_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LoadVersionRes__errorCodesType_fileSystemErrorOrPoolDataCorruption_oer_ext_arr_, 0, LoadVersionRes__errorCodesType_fileSystemErrorOrPoolDataCorruption_oer_p_};
+const TTCN_Typedescriptor_t LoadVersionRes__errorCodesType_fileSystemErrorOrPoolDataCorruption_descr_ = { "@IsobusVTMessageTypes.LoadVersionRes_errorCodesType.fileSystemErrorOrPoolDataCorruption", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &LoadVersionRes__errorCodesType_fileSystemErrorOrPoolDataCorruption_xer_, &BOOLEAN_json_, &LoadVersionRes__errorCodesType_fileSystemErrorOrPoolDataCorruption_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       LoadVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabeUnknown_xer_ = { {"versionLabelIsNotCorrectOrVersionLabeUnknown>\n", "versionLabelIsNotCorrectOrVersionLabeUnknown>\n"}, {46, 46}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int LoadVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabeUnknown_oer_ext_arr_[0] = {};
+const int LoadVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabeUnknown_oer_p_[0] = {};
+const TTCN_OERdescriptor_t LoadVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabeUnknown_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LoadVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabeUnknown_oer_ext_arr_, 0, LoadVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabeUnknown_oer_p_};
+const TTCN_Typedescriptor_t LoadVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabeUnknown_descr_ = { "@IsobusVTMessageTypes.LoadVersionRes_errorCodesType.versionLabelIsNotCorrectOrVersionLabeUnknown", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &LoadVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabeUnknown_xer_, &BOOLEAN_json_, &LoadVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabeUnknown_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       LoadVersionRes__errorCodesType_insufficientMemoryAvailable_xer_ = { {"insufficientMemoryAvailable>\n", "insufficientMemoryAvailable>\n"}, {29, 29}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int LoadVersionRes__errorCodesType_insufficientMemoryAvailable_oer_ext_arr_[0] = {};
+const int LoadVersionRes__errorCodesType_insufficientMemoryAvailable_oer_p_[0] = {};
+const TTCN_OERdescriptor_t LoadVersionRes__errorCodesType_insufficientMemoryAvailable_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LoadVersionRes__errorCodesType_insufficientMemoryAvailable_oer_ext_arr_, 0, LoadVersionRes__errorCodesType_insufficientMemoryAvailable_oer_p_};
+const TTCN_Typedescriptor_t LoadVersionRes__errorCodesType_insufficientMemoryAvailable_descr_ = { "@IsobusVTMessageTypes.LoadVersionRes_errorCodesType.insufficientMemoryAvailable", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &LoadVersionRes__errorCodesType_insufficientMemoryAvailable_xer_, &BOOLEAN_json_, &LoadVersionRes__errorCodesType_insufficientMemoryAvailable_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       LoadVersionRes__errorCodesType_anyOtherError_xer_ = { {"anyOtherError>\n", "anyOtherError>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int LoadVersionRes__errorCodesType_anyOtherError_oer_ext_arr_[0] = {};
+const int LoadVersionRes__errorCodesType_anyOtherError_oer_p_[0] = {};
+const TTCN_OERdescriptor_t LoadVersionRes__errorCodesType_anyOtherError_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LoadVersionRes__errorCodesType_anyOtherError_oer_ext_arr_, 0, LoadVersionRes__errorCodesType_anyOtherError_oer_p_};
+const TTCN_Typedescriptor_t LoadVersionRes__errorCodesType_anyOtherError_descr_ = { "@IsobusVTMessageTypes.LoadVersionRes_errorCodesType.anyOtherError", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &LoadVersionRes__errorCodesType_anyOtherError_xer_, &BOOLEAN_json_, &LoadVersionRes__errorCodesType_anyOtherError_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       LoadVersionRes__errorCodesType_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int LoadVersionRes__errorCodesType_reserved5_oer_ext_arr_[0] = {};
+const int LoadVersionRes__errorCodesType_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t LoadVersionRes__errorCodesType_reserved5_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LoadVersionRes__errorCodesType_reserved5_oer_ext_arr_, 0, LoadVersionRes__errorCodesType_reserved5_oer_p_};
+const TTCN_Typedescriptor_t LoadVersionRes__errorCodesType_reserved5_descr_ = { "@IsobusVTMessageTypes.LoadVersionRes_errorCodesType.reserved5", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &LoadVersionRes__errorCodesType_reserved5_xer_, &BOOLEAN_json_, &LoadVersionRes__errorCodesType_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       LoadVersionRes__errorCodesType_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int LoadVersionRes__errorCodesType_reserved6_oer_ext_arr_[0] = {};
+const int LoadVersionRes__errorCodesType_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t LoadVersionRes__errorCodesType_reserved6_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LoadVersionRes__errorCodesType_reserved6_oer_ext_arr_, 0, LoadVersionRes__errorCodesType_reserved6_oer_p_};
+const TTCN_Typedescriptor_t LoadVersionRes__errorCodesType_reserved6_descr_ = { "@IsobusVTMessageTypes.LoadVersionRes_errorCodesType.reserved6", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &LoadVersionRes__errorCodesType_reserved6_xer_, &BOOLEAN_json_, &LoadVersionRes__errorCodesType_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       LoadVersionRes__errorCodesType_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int LoadVersionRes__errorCodesType_reserved7_oer_ext_arr_[0] = {};
+const int LoadVersionRes__errorCodesType_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t LoadVersionRes__errorCodesType_reserved7_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LoadVersionRes__errorCodesType_reserved7_oer_ext_arr_, 0, LoadVersionRes__errorCodesType_reserved7_oer_p_};
+const TTCN_Typedescriptor_t LoadVersionRes__errorCodesType_reserved7_descr_ = { "@IsobusVTMessageTypes.LoadVersionRes_errorCodesType.reserved7", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &LoadVersionRes__errorCodesType_reserved7_xer_, &BOOLEAN_json_, &LoadVersionRes__errorCodesType_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       LoadVersionRes__errorCodesType_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int LoadVersionRes__errorCodesType_reserved8_oer_ext_arr_[0] = {};
+const int LoadVersionRes__errorCodesType_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t LoadVersionRes__errorCodesType_reserved8_oer_ = { -1, TRUE, -1, FALSE, 0, 0, LoadVersionRes__errorCodesType_reserved8_oer_ext_arr_, 0, LoadVersionRes__errorCodesType_reserved8_oer_p_};
+const TTCN_Typedescriptor_t LoadVersionRes__errorCodesType_reserved8_descr_ = { "@IsobusVTMessageTypes.LoadVersionRes_errorCodesType.reserved8", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &LoadVersionRes__errorCodesType_reserved8_xer_, &BOOLEAN_json_, &LoadVersionRes__errorCodesType_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t LoadVersionRes__errorCodesType_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for LoadVersionRes__errorCodesType
+const TTCN_Typedescriptor_t LoadVersionRes__errorCodesType_descr_ = { "@IsobusVTMessageTypes.LoadVersionRes_errorCodesType", NULL, &LoadVersionRes__errorCodesType_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       LoadVersionRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t LoadVersionRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t LoadVersionRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.LoadVersionRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &LoadVersionRes_vtfunction_xer_, &INTEGER_json_, &LoadVersionRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t LoadVersionRes_reserved2_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       LoadVersionRes_reserved2_xer_ = { {"reserved2>\n", "reserved2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int LoadVersionRes_reserved2_oer_ext_arr_[0] = {};
+const int LoadVersionRes_reserved2_oer_p_[0] = {};
+const TTCN_OERdescriptor_t LoadVersionRes_reserved2_oer_ = { -1, TRUE, 1, FALSE, 0, 0, LoadVersionRes_reserved2_oer_ext_arr_, 0, LoadVersionRes_reserved2_oer_p_};
+const TTCN_Typedescriptor_t LoadVersionRes_reserved2_descr_ = { "@IsobusVTMessageTypes.LoadVersionRes.reserved2", &OCTETSTRING_ber_, &LoadVersionRes_reserved2_raw_, &OCTETSTRING_text_, &LoadVersionRes_reserved2_xer_, &OCTETSTRING_json_, &LoadVersionRes_reserved2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t LoadVersionRes_reserved3_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       LoadVersionRes_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int LoadVersionRes_reserved3_oer_ext_arr_[0] = {};
+const int LoadVersionRes_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t LoadVersionRes_reserved3_oer_ = { -1, TRUE, 1, FALSE, 0, 0, LoadVersionRes_reserved3_oer_ext_arr_, 0, LoadVersionRes_reserved3_oer_p_};
+const TTCN_Typedescriptor_t LoadVersionRes_reserved3_descr_ = { "@IsobusVTMessageTypes.LoadVersionRes.reserved3", &OCTETSTRING_ber_, &LoadVersionRes_reserved3_raw_, &OCTETSTRING_text_, &LoadVersionRes_reserved3_xer_, &OCTETSTRING_json_, &LoadVersionRes_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t LoadVersionRes_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       LoadVersionRes_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int LoadVersionRes_reserved4_oer_ext_arr_[0] = {};
+const int LoadVersionRes_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t LoadVersionRes_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, LoadVersionRes_reserved4_oer_ext_arr_, 0, LoadVersionRes_reserved4_oer_p_};
+const TTCN_Typedescriptor_t LoadVersionRes_reserved4_descr_ = { "@IsobusVTMessageTypes.LoadVersionRes.reserved4", &OCTETSTRING_ber_, &LoadVersionRes_reserved4_raw_, &OCTETSTRING_text_, &LoadVersionRes_reserved4_xer_, &OCTETSTRING_json_, &LoadVersionRes_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t LoadVersionRes_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       LoadVersionRes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int LoadVersionRes_reserved5_oer_ext_arr_[0] = {};
+const int LoadVersionRes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t LoadVersionRes_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, LoadVersionRes_reserved5_oer_ext_arr_, 0, LoadVersionRes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t LoadVersionRes_reserved5_descr_ = { "@IsobusVTMessageTypes.LoadVersionRes.reserved5", &OCTETSTRING_ber_, &LoadVersionRes_reserved5_raw_, &OCTETSTRING_text_, &LoadVersionRes_reserved5_xer_, &OCTETSTRING_json_, &LoadVersionRes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t LoadVersionRes_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       LoadVersionRes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int LoadVersionRes_reserved7_oer_ext_arr_[0] = {};
+const int LoadVersionRes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t LoadVersionRes_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, LoadVersionRes_reserved7_oer_ext_arr_, 0, LoadVersionRes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t LoadVersionRes_reserved7_descr_ = { "@IsobusVTMessageTypes.LoadVersionRes.reserved7", &OCTETSTRING_ber_, &LoadVersionRes_reserved7_raw_, &OCTETSTRING_text_, &LoadVersionRes_reserved7_xer_, &OCTETSTRING_json_, &LoadVersionRes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t LoadVersionRes_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       LoadVersionRes_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int LoadVersionRes_reserved8_oer_ext_arr_[0] = {};
+const int LoadVersionRes_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t LoadVersionRes_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, LoadVersionRes_reserved8_oer_ext_arr_, 0, LoadVersionRes_reserved8_oer_p_};
+const TTCN_Typedescriptor_t LoadVersionRes_reserved8_descr_ = { "@IsobusVTMessageTypes.LoadVersionRes.reserved8", &OCTETSTRING_ber_, &LoadVersionRes_reserved8_raw_, &OCTETSTRING_text_, &LoadVersionRes_reserved8_xer_, &OCTETSTRING_json_, &LoadVersionRes_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t LoadVersionRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for LoadVersionRes
+const TTCN_Typedescriptor_t LoadVersionRes_descr_ = { "@IsobusVTMessageTypes.LoadVersionRes", NULL, &LoadVersionRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       DeleteVersionRes__errorCodesType_reserved0_xer_ = { {"reserved0>\n", "reserved0>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int DeleteVersionRes__errorCodesType_reserved0_oer_ext_arr_[0] = {};
+const int DeleteVersionRes__errorCodesType_reserved0_oer_p_[0] = {};
+const TTCN_OERdescriptor_t DeleteVersionRes__errorCodesType_reserved0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, DeleteVersionRes__errorCodesType_reserved0_oer_ext_arr_, 0, DeleteVersionRes__errorCodesType_reserved0_oer_p_};
+const TTCN_Typedescriptor_t DeleteVersionRes__errorCodesType_reserved0_descr_ = { "@IsobusVTMessageTypes.DeleteVersionRes_errorCodesType.reserved0", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &DeleteVersionRes__errorCodesType_reserved0_xer_, &BOOLEAN_json_, &DeleteVersionRes__errorCodesType_reserved0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       DeleteVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabelUnknown_xer_ = { {"versionLabelIsNotCorrectOrVersionLabelUnknown>\n", "versionLabelIsNotCorrectOrVersionLabelUnknown>\n"}, {47, 47}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int DeleteVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabelUnknown_oer_ext_arr_[0] = {};
+const int DeleteVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabelUnknown_oer_p_[0] = {};
+const TTCN_OERdescriptor_t DeleteVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabelUnknown_oer_ = { -1, TRUE, -1, FALSE, 0, 0, DeleteVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabelUnknown_oer_ext_arr_, 0, DeleteVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabelUnknown_oer_p_};
+const TTCN_Typedescriptor_t DeleteVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabelUnknown_descr_ = { "@IsobusVTMessageTypes.DeleteVersionRes_errorCodesType.versionLabelIsNotCorrectOrVersionLabelUnknown", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &DeleteVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabelUnknown_xer_, &BOOLEAN_json_, &DeleteVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabelUnknown_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       DeleteVersionRes__errorCodesType_reserved2_xer_ = { {"reserved2>\n", "reserved2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int DeleteVersionRes__errorCodesType_reserved2_oer_ext_arr_[0] = {};
+const int DeleteVersionRes__errorCodesType_reserved2_oer_p_[0] = {};
+const TTCN_OERdescriptor_t DeleteVersionRes__errorCodesType_reserved2_oer_ = { -1, TRUE, -1, FALSE, 0, 0, DeleteVersionRes__errorCodesType_reserved2_oer_ext_arr_, 0, DeleteVersionRes__errorCodesType_reserved2_oer_p_};
+const TTCN_Typedescriptor_t DeleteVersionRes__errorCodesType_reserved2_descr_ = { "@IsobusVTMessageTypes.DeleteVersionRes_errorCodesType.reserved2", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &DeleteVersionRes__errorCodesType_reserved2_xer_, &BOOLEAN_json_, &DeleteVersionRes__errorCodesType_reserved2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       DeleteVersionRes__errorCodesType_anyOtherError_xer_ = { {"anyOtherError>\n", "anyOtherError>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int DeleteVersionRes__errorCodesType_anyOtherError_oer_ext_arr_[0] = {};
+const int DeleteVersionRes__errorCodesType_anyOtherError_oer_p_[0] = {};
+const TTCN_OERdescriptor_t DeleteVersionRes__errorCodesType_anyOtherError_oer_ = { -1, TRUE, -1, FALSE, 0, 0, DeleteVersionRes__errorCodesType_anyOtherError_oer_ext_arr_, 0, DeleteVersionRes__errorCodesType_anyOtherError_oer_p_};
+const TTCN_Typedescriptor_t DeleteVersionRes__errorCodesType_anyOtherError_descr_ = { "@IsobusVTMessageTypes.DeleteVersionRes_errorCodesType.anyOtherError", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &DeleteVersionRes__errorCodesType_anyOtherError_xer_, &BOOLEAN_json_, &DeleteVersionRes__errorCodesType_anyOtherError_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       DeleteVersionRes__errorCodesType_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int DeleteVersionRes__errorCodesType_reserved4_oer_ext_arr_[0] = {};
+const int DeleteVersionRes__errorCodesType_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t DeleteVersionRes__errorCodesType_reserved4_oer_ = { -1, TRUE, -1, FALSE, 0, 0, DeleteVersionRes__errorCodesType_reserved4_oer_ext_arr_, 0, DeleteVersionRes__errorCodesType_reserved4_oer_p_};
+const TTCN_Typedescriptor_t DeleteVersionRes__errorCodesType_reserved4_descr_ = { "@IsobusVTMessageTypes.DeleteVersionRes_errorCodesType.reserved4", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &DeleteVersionRes__errorCodesType_reserved4_xer_, &BOOLEAN_json_, &DeleteVersionRes__errorCodesType_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       DeleteVersionRes__errorCodesType_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int DeleteVersionRes__errorCodesType_reserved5_oer_ext_arr_[0] = {};
+const int DeleteVersionRes__errorCodesType_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t DeleteVersionRes__errorCodesType_reserved5_oer_ = { -1, TRUE, -1, FALSE, 0, 0, DeleteVersionRes__errorCodesType_reserved5_oer_ext_arr_, 0, DeleteVersionRes__errorCodesType_reserved5_oer_p_};
+const TTCN_Typedescriptor_t DeleteVersionRes__errorCodesType_reserved5_descr_ = { "@IsobusVTMessageTypes.DeleteVersionRes_errorCodesType.reserved5", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &DeleteVersionRes__errorCodesType_reserved5_xer_, &BOOLEAN_json_, &DeleteVersionRes__errorCodesType_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       DeleteVersionRes__errorCodesType_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int DeleteVersionRes__errorCodesType_reserved6_oer_ext_arr_[0] = {};
+const int DeleteVersionRes__errorCodesType_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t DeleteVersionRes__errorCodesType_reserved6_oer_ = { -1, TRUE, -1, FALSE, 0, 0, DeleteVersionRes__errorCodesType_reserved6_oer_ext_arr_, 0, DeleteVersionRes__errorCodesType_reserved6_oer_p_};
+const TTCN_Typedescriptor_t DeleteVersionRes__errorCodesType_reserved6_descr_ = { "@IsobusVTMessageTypes.DeleteVersionRes_errorCodesType.reserved6", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &DeleteVersionRes__errorCodesType_reserved6_xer_, &BOOLEAN_json_, &DeleteVersionRes__errorCodesType_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       DeleteVersionRes__errorCodesType_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int DeleteVersionRes__errorCodesType_reserved7_oer_ext_arr_[0] = {};
+const int DeleteVersionRes__errorCodesType_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t DeleteVersionRes__errorCodesType_reserved7_oer_ = { -1, TRUE, -1, FALSE, 0, 0, DeleteVersionRes__errorCodesType_reserved7_oer_ext_arr_, 0, DeleteVersionRes__errorCodesType_reserved7_oer_p_};
+const TTCN_Typedescriptor_t DeleteVersionRes__errorCodesType_reserved7_descr_ = { "@IsobusVTMessageTypes.DeleteVersionRes_errorCodesType.reserved7", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &DeleteVersionRes__errorCodesType_reserved7_xer_, &BOOLEAN_json_, &DeleteVersionRes__errorCodesType_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DeleteVersionRes__errorCodesType_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for DeleteVersionRes__errorCodesType
+const TTCN_Typedescriptor_t DeleteVersionRes__errorCodesType_descr_ = { "@IsobusVTMessageTypes.DeleteVersionRes_errorCodesType", NULL, &DeleteVersionRes__errorCodesType_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       DeleteVersionRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t DeleteVersionRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t DeleteVersionRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.DeleteVersionRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &DeleteVersionRes_vtfunction_xer_, &INTEGER_json_, &DeleteVersionRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DeleteVersionRes_reserved2_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       DeleteVersionRes_reserved2_xer_ = { {"reserved2>\n", "reserved2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int DeleteVersionRes_reserved2_oer_ext_arr_[0] = {};
+const int DeleteVersionRes_reserved2_oer_p_[0] = {};
+const TTCN_OERdescriptor_t DeleteVersionRes_reserved2_oer_ = { -1, TRUE, 1, FALSE, 0, 0, DeleteVersionRes_reserved2_oer_ext_arr_, 0, DeleteVersionRes_reserved2_oer_p_};
+const TTCN_Typedescriptor_t DeleteVersionRes_reserved2_descr_ = { "@IsobusVTMessageTypes.DeleteVersionRes.reserved2", &OCTETSTRING_ber_, &DeleteVersionRes_reserved2_raw_, &OCTETSTRING_text_, &DeleteVersionRes_reserved2_xer_, &OCTETSTRING_json_, &DeleteVersionRes_reserved2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DeleteVersionRes_reserved3_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       DeleteVersionRes_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int DeleteVersionRes_reserved3_oer_ext_arr_[0] = {};
+const int DeleteVersionRes_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t DeleteVersionRes_reserved3_oer_ = { -1, TRUE, 1, FALSE, 0, 0, DeleteVersionRes_reserved3_oer_ext_arr_, 0, DeleteVersionRes_reserved3_oer_p_};
+const TTCN_Typedescriptor_t DeleteVersionRes_reserved3_descr_ = { "@IsobusVTMessageTypes.DeleteVersionRes.reserved3", &OCTETSTRING_ber_, &DeleteVersionRes_reserved3_raw_, &OCTETSTRING_text_, &DeleteVersionRes_reserved3_xer_, &OCTETSTRING_json_, &DeleteVersionRes_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DeleteVersionRes_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       DeleteVersionRes_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int DeleteVersionRes_reserved4_oer_ext_arr_[0] = {};
+const int DeleteVersionRes_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t DeleteVersionRes_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, DeleteVersionRes_reserved4_oer_ext_arr_, 0, DeleteVersionRes_reserved4_oer_p_};
+const TTCN_Typedescriptor_t DeleteVersionRes_reserved4_descr_ = { "@IsobusVTMessageTypes.DeleteVersionRes.reserved4", &OCTETSTRING_ber_, &DeleteVersionRes_reserved4_raw_, &OCTETSTRING_text_, &DeleteVersionRes_reserved4_xer_, &OCTETSTRING_json_, &DeleteVersionRes_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DeleteVersionRes_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       DeleteVersionRes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int DeleteVersionRes_reserved5_oer_ext_arr_[0] = {};
+const int DeleteVersionRes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t DeleteVersionRes_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, DeleteVersionRes_reserved5_oer_ext_arr_, 0, DeleteVersionRes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t DeleteVersionRes_reserved5_descr_ = { "@IsobusVTMessageTypes.DeleteVersionRes.reserved5", &OCTETSTRING_ber_, &DeleteVersionRes_reserved5_raw_, &OCTETSTRING_text_, &DeleteVersionRes_reserved5_xer_, &OCTETSTRING_json_, &DeleteVersionRes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DeleteVersionRes_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       DeleteVersionRes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int DeleteVersionRes_reserved7_oer_ext_arr_[0] = {};
+const int DeleteVersionRes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t DeleteVersionRes_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, DeleteVersionRes_reserved7_oer_ext_arr_, 0, DeleteVersionRes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t DeleteVersionRes_reserved7_descr_ = { "@IsobusVTMessageTypes.DeleteVersionRes.reserved7", &OCTETSTRING_ber_, &DeleteVersionRes_reserved7_raw_, &OCTETSTRING_text_, &DeleteVersionRes_reserved7_xer_, &OCTETSTRING_json_, &DeleteVersionRes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DeleteVersionRes_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       DeleteVersionRes_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int DeleteVersionRes_reserved8_oer_ext_arr_[0] = {};
+const int DeleteVersionRes_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t DeleteVersionRes_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, DeleteVersionRes_reserved8_oer_ext_arr_, 0, DeleteVersionRes_reserved8_oer_p_};
+const TTCN_Typedescriptor_t DeleteVersionRes_reserved8_descr_ = { "@IsobusVTMessageTypes.DeleteVersionRes.reserved8", &OCTETSTRING_ber_, &DeleteVersionRes_reserved8_raw_, &OCTETSTRING_text_, &DeleteVersionRes_reserved8_xer_, &OCTETSTRING_json_, &DeleteVersionRes_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DeleteVersionRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for DeleteVersionRes
+const TTCN_Typedescriptor_t DeleteVersionRes_descr_ = { "@IsobusVTMessageTypes.DeleteVersionRes", NULL, &DeleteVersionRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       DeleteVersionReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t DeleteVersionReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t DeleteVersionReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.DeleteVersionReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &DeleteVersionReq_vtfunction_xer_, &INTEGER_json_, &DeleteVersionReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       DeleteVersionReq_versionLabel_xer_ = { {"versionLabel>\n", "versionLabel>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_Typedescriptor_t DeleteVersionReq_versionLabel_descr_ = { "@IsobusVTMessageTypes.DeleteVersionReq.versionLabel", NULL, &CHR7_raw_, &CHARSTRING_text_, &DeleteVersionReq_versionLabel_xer_, &CHARSTRING_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DeleteVersionReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for DeleteVersionReq
+const TTCN_Typedescriptor_t DeleteVersionReq_descr_ = { "@IsobusVTMessageTypes.DeleteVersionReq", NULL, &DeleteVersionReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedGetVersionsRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ExtendedGetVersionsRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ExtendedGetVersionsRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.ExtendedGetVersionsRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ExtendedGetVersionsRes_vtfunction_xer_, &INTEGER_json_, &ExtendedGetVersionsRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedGetVersionsRes_numberOfVersionStrings_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,NULL,false};
+const XERdescriptor_t       ExtendedGetVersionsRes_numberOfVersionStrings_xer_ = { {"numberOfVersionStrings>\n", "numberOfVersionStrings>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ExtendedGetVersionsRes_numberOfVersionStrings_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ExtendedGetVersionsRes_numberOfVersionStrings_descr_ = { "@IsobusVTMessageTypes.ExtendedGetVersionsRes.numberOfVersionStrings", &INTEGER_ber_, &ExtendedGetVersionsRes_numberOfVersionStrings_raw_, &INTEGER_text_, &ExtendedGetVersionsRes_numberOfVersionStrings_xer_, &INTEGER_json_, &ExtendedGetVersionsRes_numberOfVersionStrings_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedGetVersionsRes_versionLabels_xer_ = { {"versionLabels>\n", "versionLabels>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedGetVersionsRes_versionLabels_oer_ext_arr_[0] = {};
+const int ExtendedGetVersionsRes_versionLabels_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedGetVersionsRes_versionLabels_oer_ = { -1, TRUE, 32, FALSE, 0, 0, ExtendedGetVersionsRes_versionLabels_oer_ext_arr_, 0, ExtendedGetVersionsRes_versionLabels_oer_p_};
+const TTCN_Typedescriptor_t ExtendedGetVersionsRes_versionLabels_descr_ = { "@IsobusVTMessageTypes.ExtendedGetVersionsRes.versionLabels", &OCTETSTRING_ber_, &General__Types::OCT32_raw_, &OCTETSTRING_text_, &ExtendedGetVersionsRes_versionLabels_xer_, &OCTETSTRING_json_, &ExtendedGetVersionsRes_versionLabels_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedGetVersionsRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ExtendedGetVersionsRes
+const TTCN_Typedescriptor_t ExtendedGetVersionsRes_descr_ = { "@IsobusVTMessageTypes.ExtendedGetVersionsRes", NULL, &ExtendedGetVersionsRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedGetVersionsRes_padding_xer_ = { {"padding>\n", "padding>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedGetVersionsRes_padding_oer_ext_arr_[0] = {};
+const int ExtendedGetVersionsRes_padding_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedGetVersionsRes_padding_oer_ = { -1, TRUE, 6, FALSE, 0, 0, ExtendedGetVersionsRes_padding_oer_ext_arr_, 0, ExtendedGetVersionsRes_padding_oer_p_};
+const TTCN_Typedescriptor_t ExtendedGetVersionsRes_padding_descr_ = { "@IsobusVTMessageTypes.ExtendedGetVersionsRes.padding", &OCTETSTRING_ber_, &General__Types::OCT6_raw_, &OCTETSTRING_text_, &ExtendedGetVersionsRes_padding_xer_, &OCTETSTRING_json_, &ExtendedGetVersionsRes_padding_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedGetVersionsReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ExtendedGetVersionsReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ExtendedGetVersionsReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.ExtendedGetVersionsReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ExtendedGetVersionsReq_vtfunction_xer_, &INTEGER_json_, &ExtendedGetVersionsReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedGetVersionsReq_reserved2_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExtendedGetVersionsReq_reserved2_xer_ = { {"reserved2>\n", "reserved2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedGetVersionsReq_reserved2_oer_ext_arr_[0] = {};
+const int ExtendedGetVersionsReq_reserved2_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedGetVersionsReq_reserved2_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExtendedGetVersionsReq_reserved2_oer_ext_arr_, 0, ExtendedGetVersionsReq_reserved2_oer_p_};
+const TTCN_Typedescriptor_t ExtendedGetVersionsReq_reserved2_descr_ = { "@IsobusVTMessageTypes.ExtendedGetVersionsReq.reserved2", &OCTETSTRING_ber_, &ExtendedGetVersionsReq_reserved2_raw_, &OCTETSTRING_text_, &ExtendedGetVersionsReq_reserved2_xer_, &OCTETSTRING_json_, &ExtendedGetVersionsReq_reserved2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedGetVersionsReq_reserved3_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExtendedGetVersionsReq_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedGetVersionsReq_reserved3_oer_ext_arr_[0] = {};
+const int ExtendedGetVersionsReq_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedGetVersionsReq_reserved3_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExtendedGetVersionsReq_reserved3_oer_ext_arr_, 0, ExtendedGetVersionsReq_reserved3_oer_p_};
+const TTCN_Typedescriptor_t ExtendedGetVersionsReq_reserved3_descr_ = { "@IsobusVTMessageTypes.ExtendedGetVersionsReq.reserved3", &OCTETSTRING_ber_, &ExtendedGetVersionsReq_reserved3_raw_, &OCTETSTRING_text_, &ExtendedGetVersionsReq_reserved3_xer_, &OCTETSTRING_json_, &ExtendedGetVersionsReq_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedGetVersionsReq_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExtendedGetVersionsReq_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedGetVersionsReq_reserved4_oer_ext_arr_[0] = {};
+const int ExtendedGetVersionsReq_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedGetVersionsReq_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExtendedGetVersionsReq_reserved4_oer_ext_arr_, 0, ExtendedGetVersionsReq_reserved4_oer_p_};
+const TTCN_Typedescriptor_t ExtendedGetVersionsReq_reserved4_descr_ = { "@IsobusVTMessageTypes.ExtendedGetVersionsReq.reserved4", &OCTETSTRING_ber_, &ExtendedGetVersionsReq_reserved4_raw_, &OCTETSTRING_text_, &ExtendedGetVersionsReq_reserved4_xer_, &OCTETSTRING_json_, &ExtendedGetVersionsReq_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedGetVersionsReq_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExtendedGetVersionsReq_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedGetVersionsReq_reserved5_oer_ext_arr_[0] = {};
+const int ExtendedGetVersionsReq_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedGetVersionsReq_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExtendedGetVersionsReq_reserved5_oer_ext_arr_, 0, ExtendedGetVersionsReq_reserved5_oer_p_};
+const TTCN_Typedescriptor_t ExtendedGetVersionsReq_reserved5_descr_ = { "@IsobusVTMessageTypes.ExtendedGetVersionsReq.reserved5", &OCTETSTRING_ber_, &ExtendedGetVersionsReq_reserved5_raw_, &OCTETSTRING_text_, &ExtendedGetVersionsReq_reserved5_xer_, &OCTETSTRING_json_, &ExtendedGetVersionsReq_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedGetVersionsReq_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExtendedGetVersionsReq_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedGetVersionsReq_reserved6_oer_ext_arr_[0] = {};
+const int ExtendedGetVersionsReq_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedGetVersionsReq_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExtendedGetVersionsReq_reserved6_oer_ext_arr_, 0, ExtendedGetVersionsReq_reserved6_oer_p_};
+const TTCN_Typedescriptor_t ExtendedGetVersionsReq_reserved6_descr_ = { "@IsobusVTMessageTypes.ExtendedGetVersionsReq.reserved6", &OCTETSTRING_ber_, &ExtendedGetVersionsReq_reserved6_raw_, &OCTETSTRING_text_, &ExtendedGetVersionsReq_reserved6_xer_, &OCTETSTRING_json_, &ExtendedGetVersionsReq_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedGetVersionsReq_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExtendedGetVersionsReq_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedGetVersionsReq_reserved7_oer_ext_arr_[0] = {};
+const int ExtendedGetVersionsReq_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedGetVersionsReq_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExtendedGetVersionsReq_reserved7_oer_ext_arr_, 0, ExtendedGetVersionsReq_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ExtendedGetVersionsReq_reserved7_descr_ = { "@IsobusVTMessageTypes.ExtendedGetVersionsReq.reserved7", &OCTETSTRING_ber_, &ExtendedGetVersionsReq_reserved7_raw_, &OCTETSTRING_text_, &ExtendedGetVersionsReq_reserved7_xer_, &OCTETSTRING_json_, &ExtendedGetVersionsReq_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedGetVersionsReq_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExtendedGetVersionsReq_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedGetVersionsReq_reserved8_oer_ext_arr_[0] = {};
+const int ExtendedGetVersionsReq_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedGetVersionsReq_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExtendedGetVersionsReq_reserved8_oer_ext_arr_, 0, ExtendedGetVersionsReq_reserved8_oer_p_};
+const TTCN_Typedescriptor_t ExtendedGetVersionsReq_reserved8_descr_ = { "@IsobusVTMessageTypes.ExtendedGetVersionsReq.reserved8", &OCTETSTRING_ber_, &ExtendedGetVersionsReq_reserved8_raw_, &OCTETSTRING_text_, &ExtendedGetVersionsReq_reserved8_xer_, &OCTETSTRING_json_, &ExtendedGetVersionsReq_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedGetVersionsReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ExtendedGetVersionsReq
+const TTCN_Typedescriptor_t ExtendedGetVersionsReq_descr_ = { "@IsobusVTMessageTypes.ExtendedGetVersionsReq", NULL, &ExtendedGetVersionsReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedStoreVersionRes__errorCodesType_reserved0_xer_ = { {"reserved0>\n", "reserved0>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedStoreVersionRes__errorCodesType_reserved0_oer_ext_arr_[0] = {};
+const int ExtendedStoreVersionRes__errorCodesType_reserved0_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedStoreVersionRes__errorCodesType_reserved0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ExtendedStoreVersionRes__errorCodesType_reserved0_oer_ext_arr_, 0, ExtendedStoreVersionRes__errorCodesType_reserved0_oer_p_};
+const TTCN_Typedescriptor_t ExtendedStoreVersionRes__errorCodesType_reserved0_descr_ = { "@IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType.reserved0", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ExtendedStoreVersionRes__errorCodesType_reserved0_xer_, &BOOLEAN_json_, &ExtendedStoreVersionRes__errorCodesType_reserved0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedStoreVersionRes__errorCodesType_versionLabelIsNotCorrect_xer_ = { {"versionLabelIsNotCorrect>\n", "versionLabelIsNotCorrect>\n"}, {26, 26}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedStoreVersionRes__errorCodesType_versionLabelIsNotCorrect_oer_ext_arr_[0] = {};
+const int ExtendedStoreVersionRes__errorCodesType_versionLabelIsNotCorrect_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedStoreVersionRes__errorCodesType_versionLabelIsNotCorrect_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ExtendedStoreVersionRes__errorCodesType_versionLabelIsNotCorrect_oer_ext_arr_, 0, ExtendedStoreVersionRes__errorCodesType_versionLabelIsNotCorrect_oer_p_};
+const TTCN_Typedescriptor_t ExtendedStoreVersionRes__errorCodesType_versionLabelIsNotCorrect_descr_ = { "@IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType.versionLabelIsNotCorrect", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ExtendedStoreVersionRes__errorCodesType_versionLabelIsNotCorrect_xer_, &BOOLEAN_json_, &ExtendedStoreVersionRes__errorCodesType_versionLabelIsNotCorrect_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedStoreVersionRes__errorCodesType_insufficientMemoryAvailable_xer_ = { {"insufficientMemoryAvailable>\n", "insufficientMemoryAvailable>\n"}, {29, 29}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedStoreVersionRes__errorCodesType_insufficientMemoryAvailable_oer_ext_arr_[0] = {};
+const int ExtendedStoreVersionRes__errorCodesType_insufficientMemoryAvailable_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedStoreVersionRes__errorCodesType_insufficientMemoryAvailable_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ExtendedStoreVersionRes__errorCodesType_insufficientMemoryAvailable_oer_ext_arr_, 0, ExtendedStoreVersionRes__errorCodesType_insufficientMemoryAvailable_oer_p_};
+const TTCN_Typedescriptor_t ExtendedStoreVersionRes__errorCodesType_insufficientMemoryAvailable_descr_ = { "@IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType.insufficientMemoryAvailable", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ExtendedStoreVersionRes__errorCodesType_insufficientMemoryAvailable_xer_, &BOOLEAN_json_, &ExtendedStoreVersionRes__errorCodesType_insufficientMemoryAvailable_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedStoreVersionRes__errorCodesType_anyOtherError_xer_ = { {"anyOtherError>\n", "anyOtherError>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedStoreVersionRes__errorCodesType_anyOtherError_oer_ext_arr_[0] = {};
+const int ExtendedStoreVersionRes__errorCodesType_anyOtherError_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedStoreVersionRes__errorCodesType_anyOtherError_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ExtendedStoreVersionRes__errorCodesType_anyOtherError_oer_ext_arr_, 0, ExtendedStoreVersionRes__errorCodesType_anyOtherError_oer_p_};
+const TTCN_Typedescriptor_t ExtendedStoreVersionRes__errorCodesType_anyOtherError_descr_ = { "@IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType.anyOtherError", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ExtendedStoreVersionRes__errorCodesType_anyOtherError_xer_, &BOOLEAN_json_, &ExtendedStoreVersionRes__errorCodesType_anyOtherError_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedStoreVersionRes__errorCodesType_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedStoreVersionRes__errorCodesType_reserved4_oer_ext_arr_[0] = {};
+const int ExtendedStoreVersionRes__errorCodesType_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedStoreVersionRes__errorCodesType_reserved4_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ExtendedStoreVersionRes__errorCodesType_reserved4_oer_ext_arr_, 0, ExtendedStoreVersionRes__errorCodesType_reserved4_oer_p_};
+const TTCN_Typedescriptor_t ExtendedStoreVersionRes__errorCodesType_reserved4_descr_ = { "@IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType.reserved4", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ExtendedStoreVersionRes__errorCodesType_reserved4_xer_, &BOOLEAN_json_, &ExtendedStoreVersionRes__errorCodesType_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedStoreVersionRes__errorCodesType_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedStoreVersionRes__errorCodesType_reserved5_oer_ext_arr_[0] = {};
+const int ExtendedStoreVersionRes__errorCodesType_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedStoreVersionRes__errorCodesType_reserved5_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ExtendedStoreVersionRes__errorCodesType_reserved5_oer_ext_arr_, 0, ExtendedStoreVersionRes__errorCodesType_reserved5_oer_p_};
+const TTCN_Typedescriptor_t ExtendedStoreVersionRes__errorCodesType_reserved5_descr_ = { "@IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType.reserved5", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ExtendedStoreVersionRes__errorCodesType_reserved5_xer_, &BOOLEAN_json_, &ExtendedStoreVersionRes__errorCodesType_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedStoreVersionRes__errorCodesType_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedStoreVersionRes__errorCodesType_reserved6_oer_ext_arr_[0] = {};
+const int ExtendedStoreVersionRes__errorCodesType_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedStoreVersionRes__errorCodesType_reserved6_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ExtendedStoreVersionRes__errorCodesType_reserved6_oer_ext_arr_, 0, ExtendedStoreVersionRes__errorCodesType_reserved6_oer_p_};
+const TTCN_Typedescriptor_t ExtendedStoreVersionRes__errorCodesType_reserved6_descr_ = { "@IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType.reserved6", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ExtendedStoreVersionRes__errorCodesType_reserved6_xer_, &BOOLEAN_json_, &ExtendedStoreVersionRes__errorCodesType_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedStoreVersionRes__errorCodesType_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedStoreVersionRes__errorCodesType_reserved7_oer_ext_arr_[0] = {};
+const int ExtendedStoreVersionRes__errorCodesType_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedStoreVersionRes__errorCodesType_reserved7_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ExtendedStoreVersionRes__errorCodesType_reserved7_oer_ext_arr_, 0, ExtendedStoreVersionRes__errorCodesType_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ExtendedStoreVersionRes__errorCodesType_reserved7_descr_ = { "@IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType.reserved7", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ExtendedStoreVersionRes__errorCodesType_reserved7_xer_, &BOOLEAN_json_, &ExtendedStoreVersionRes__errorCodesType_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedStoreVersionRes__errorCodesType_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ExtendedStoreVersionRes__errorCodesType
+const TTCN_Typedescriptor_t ExtendedStoreVersionRes__errorCodesType_descr_ = { "@IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType", NULL, &ExtendedStoreVersionRes__errorCodesType_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedStoreVersionRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ExtendedStoreVersionRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ExtendedStoreVersionRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.ExtendedStoreVersionRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ExtendedStoreVersionRes_vtfunction_xer_, &INTEGER_json_, &ExtendedStoreVersionRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedStoreVersionRes_reserved2_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExtendedStoreVersionRes_reserved2_xer_ = { {"reserved2>\n", "reserved2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedStoreVersionRes_reserved2_oer_ext_arr_[0] = {};
+const int ExtendedStoreVersionRes_reserved2_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedStoreVersionRes_reserved2_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExtendedStoreVersionRes_reserved2_oer_ext_arr_, 0, ExtendedStoreVersionRes_reserved2_oer_p_};
+const TTCN_Typedescriptor_t ExtendedStoreVersionRes_reserved2_descr_ = { "@IsobusVTMessageTypes.ExtendedStoreVersionRes.reserved2", &OCTETSTRING_ber_, &ExtendedStoreVersionRes_reserved2_raw_, &OCTETSTRING_text_, &ExtendedStoreVersionRes_reserved2_xer_, &OCTETSTRING_json_, &ExtendedStoreVersionRes_reserved2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedStoreVersionRes_reserved3_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExtendedStoreVersionRes_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedStoreVersionRes_reserved3_oer_ext_arr_[0] = {};
+const int ExtendedStoreVersionRes_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedStoreVersionRes_reserved3_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExtendedStoreVersionRes_reserved3_oer_ext_arr_, 0, ExtendedStoreVersionRes_reserved3_oer_p_};
+const TTCN_Typedescriptor_t ExtendedStoreVersionRes_reserved3_descr_ = { "@IsobusVTMessageTypes.ExtendedStoreVersionRes.reserved3", &OCTETSTRING_ber_, &ExtendedStoreVersionRes_reserved3_raw_, &OCTETSTRING_text_, &ExtendedStoreVersionRes_reserved3_xer_, &OCTETSTRING_json_, &ExtendedStoreVersionRes_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedStoreVersionRes_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExtendedStoreVersionRes_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedStoreVersionRes_reserved4_oer_ext_arr_[0] = {};
+const int ExtendedStoreVersionRes_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedStoreVersionRes_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExtendedStoreVersionRes_reserved4_oer_ext_arr_, 0, ExtendedStoreVersionRes_reserved4_oer_p_};
+const TTCN_Typedescriptor_t ExtendedStoreVersionRes_reserved4_descr_ = { "@IsobusVTMessageTypes.ExtendedStoreVersionRes.reserved4", &OCTETSTRING_ber_, &ExtendedStoreVersionRes_reserved4_raw_, &OCTETSTRING_text_, &ExtendedStoreVersionRes_reserved4_xer_, &OCTETSTRING_json_, &ExtendedStoreVersionRes_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedStoreVersionRes_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExtendedStoreVersionRes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedStoreVersionRes_reserved5_oer_ext_arr_[0] = {};
+const int ExtendedStoreVersionRes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedStoreVersionRes_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExtendedStoreVersionRes_reserved5_oer_ext_arr_, 0, ExtendedStoreVersionRes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t ExtendedStoreVersionRes_reserved5_descr_ = { "@IsobusVTMessageTypes.ExtendedStoreVersionRes.reserved5", &OCTETSTRING_ber_, &ExtendedStoreVersionRes_reserved5_raw_, &OCTETSTRING_text_, &ExtendedStoreVersionRes_reserved5_xer_, &OCTETSTRING_json_, &ExtendedStoreVersionRes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedStoreVersionRes_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExtendedStoreVersionRes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedStoreVersionRes_reserved7_oer_ext_arr_[0] = {};
+const int ExtendedStoreVersionRes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedStoreVersionRes_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExtendedStoreVersionRes_reserved7_oer_ext_arr_, 0, ExtendedStoreVersionRes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ExtendedStoreVersionRes_reserved7_descr_ = { "@IsobusVTMessageTypes.ExtendedStoreVersionRes.reserved7", &OCTETSTRING_ber_, &ExtendedStoreVersionRes_reserved7_raw_, &OCTETSTRING_text_, &ExtendedStoreVersionRes_reserved7_xer_, &OCTETSTRING_json_, &ExtendedStoreVersionRes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedStoreVersionRes_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExtendedStoreVersionRes_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedStoreVersionRes_reserved8_oer_ext_arr_[0] = {};
+const int ExtendedStoreVersionRes_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedStoreVersionRes_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExtendedStoreVersionRes_reserved8_oer_ext_arr_, 0, ExtendedStoreVersionRes_reserved8_oer_p_};
+const TTCN_Typedescriptor_t ExtendedStoreVersionRes_reserved8_descr_ = { "@IsobusVTMessageTypes.ExtendedStoreVersionRes.reserved8", &OCTETSTRING_ber_, &ExtendedStoreVersionRes_reserved8_raw_, &OCTETSTRING_text_, &ExtendedStoreVersionRes_reserved8_xer_, &OCTETSTRING_json_, &ExtendedStoreVersionRes_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedStoreVersionRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ExtendedStoreVersionRes
+const TTCN_Typedescriptor_t ExtendedStoreVersionRes_descr_ = { "@IsobusVTMessageTypes.ExtendedStoreVersionRes", NULL, &ExtendedStoreVersionRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedStoreVersionReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ExtendedStoreVersionReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ExtendedStoreVersionReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.ExtendedStoreVersionReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ExtendedStoreVersionReq_vtfunction_xer_, &INTEGER_json_, &ExtendedStoreVersionReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedStoreVersionReq_versionLabel_xer_ = { {"versionLabel>\n", "versionLabel>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedStoreVersionReq_versionLabel_oer_ext_arr_[0] = {};
+const int ExtendedStoreVersionReq_versionLabel_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedStoreVersionReq_versionLabel_oer_ = { -1, TRUE, 32, FALSE, 0, 0, ExtendedStoreVersionReq_versionLabel_oer_ext_arr_, 0, ExtendedStoreVersionReq_versionLabel_oer_p_};
+const TTCN_Typedescriptor_t ExtendedStoreVersionReq_versionLabel_descr_ = { "@IsobusVTMessageTypes.ExtendedStoreVersionReq.versionLabel", &OCTETSTRING_ber_, &General__Types::OCT32_raw_, &OCTETSTRING_text_, &ExtendedStoreVersionReq_versionLabel_xer_, &OCTETSTRING_json_, &ExtendedStoreVersionReq_versionLabel_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedStoreVersionReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ExtendedStoreVersionReq
+const TTCN_Typedescriptor_t ExtendedStoreVersionReq_descr_ = { "@IsobusVTMessageTypes.ExtendedStoreVersionReq", NULL, &ExtendedStoreVersionReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedLoadVersionRes__errorCodesType_fileSystemErrorOrPoolDataCorruption_xer_ = { {"fileSystemErrorOrPoolDataCorruption>\n", "fileSystemErrorOrPoolDataCorruption>\n"}, {37, 37}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedLoadVersionRes__errorCodesType_fileSystemErrorOrPoolDataCorruption_oer_ext_arr_[0] = {};
+const int ExtendedLoadVersionRes__errorCodesType_fileSystemErrorOrPoolDataCorruption_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedLoadVersionRes__errorCodesType_fileSystemErrorOrPoolDataCorruption_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ExtendedLoadVersionRes__errorCodesType_fileSystemErrorOrPoolDataCorruption_oer_ext_arr_, 0, ExtendedLoadVersionRes__errorCodesType_fileSystemErrorOrPoolDataCorruption_oer_p_};
+const TTCN_Typedescriptor_t ExtendedLoadVersionRes__errorCodesType_fileSystemErrorOrPoolDataCorruption_descr_ = { "@IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType.fileSystemErrorOrPoolDataCorruption", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ExtendedLoadVersionRes__errorCodesType_fileSystemErrorOrPoolDataCorruption_xer_, &BOOLEAN_json_, &ExtendedLoadVersionRes__errorCodesType_fileSystemErrorOrPoolDataCorruption_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedLoadVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabelUnknown_xer_ = { {"versionLabelIsNotCorrectOrVersionLabelUnknown>\n", "versionLabelIsNotCorrectOrVersionLabelUnknown>\n"}, {47, 47}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedLoadVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabelUnknown_oer_ext_arr_[0] = {};
+const int ExtendedLoadVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabelUnknown_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedLoadVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabelUnknown_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ExtendedLoadVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabelUnknown_oer_ext_arr_, 0, ExtendedLoadVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabelUnknown_oer_p_};
+const TTCN_Typedescriptor_t ExtendedLoadVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabelUnknown_descr_ = { "@IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType.versionLabelIsNotCorrectOrVersionLabelUnknown", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ExtendedLoadVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabelUnknown_xer_, &BOOLEAN_json_, &ExtendedLoadVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabelUnknown_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedLoadVersionRes__errorCodesType_insufficientMemoryAvailable_xer_ = { {"insufficientMemoryAvailable>\n", "insufficientMemoryAvailable>\n"}, {29, 29}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedLoadVersionRes__errorCodesType_insufficientMemoryAvailable_oer_ext_arr_[0] = {};
+const int ExtendedLoadVersionRes__errorCodesType_insufficientMemoryAvailable_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedLoadVersionRes__errorCodesType_insufficientMemoryAvailable_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ExtendedLoadVersionRes__errorCodesType_insufficientMemoryAvailable_oer_ext_arr_, 0, ExtendedLoadVersionRes__errorCodesType_insufficientMemoryAvailable_oer_p_};
+const TTCN_Typedescriptor_t ExtendedLoadVersionRes__errorCodesType_insufficientMemoryAvailable_descr_ = { "@IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType.insufficientMemoryAvailable", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ExtendedLoadVersionRes__errorCodesType_insufficientMemoryAvailable_xer_, &BOOLEAN_json_, &ExtendedLoadVersionRes__errorCodesType_insufficientMemoryAvailable_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedLoadVersionRes__errorCodesType_anyOtherError_xer_ = { {"anyOtherError>\n", "anyOtherError>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedLoadVersionRes__errorCodesType_anyOtherError_oer_ext_arr_[0] = {};
+const int ExtendedLoadVersionRes__errorCodesType_anyOtherError_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedLoadVersionRes__errorCodesType_anyOtherError_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ExtendedLoadVersionRes__errorCodesType_anyOtherError_oer_ext_arr_, 0, ExtendedLoadVersionRes__errorCodesType_anyOtherError_oer_p_};
+const TTCN_Typedescriptor_t ExtendedLoadVersionRes__errorCodesType_anyOtherError_descr_ = { "@IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType.anyOtherError", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ExtendedLoadVersionRes__errorCodesType_anyOtherError_xer_, &BOOLEAN_json_, &ExtendedLoadVersionRes__errorCodesType_anyOtherError_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedLoadVersionRes__errorCodesType_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedLoadVersionRes__errorCodesType_reserved4_oer_ext_arr_[0] = {};
+const int ExtendedLoadVersionRes__errorCodesType_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedLoadVersionRes__errorCodesType_reserved4_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ExtendedLoadVersionRes__errorCodesType_reserved4_oer_ext_arr_, 0, ExtendedLoadVersionRes__errorCodesType_reserved4_oer_p_};
+const TTCN_Typedescriptor_t ExtendedLoadVersionRes__errorCodesType_reserved4_descr_ = { "@IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType.reserved4", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ExtendedLoadVersionRes__errorCodesType_reserved4_xer_, &BOOLEAN_json_, &ExtendedLoadVersionRes__errorCodesType_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedLoadVersionRes__errorCodesType_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedLoadVersionRes__errorCodesType_reserved5_oer_ext_arr_[0] = {};
+const int ExtendedLoadVersionRes__errorCodesType_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedLoadVersionRes__errorCodesType_reserved5_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ExtendedLoadVersionRes__errorCodesType_reserved5_oer_ext_arr_, 0, ExtendedLoadVersionRes__errorCodesType_reserved5_oer_p_};
+const TTCN_Typedescriptor_t ExtendedLoadVersionRes__errorCodesType_reserved5_descr_ = { "@IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType.reserved5", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ExtendedLoadVersionRes__errorCodesType_reserved5_xer_, &BOOLEAN_json_, &ExtendedLoadVersionRes__errorCodesType_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedLoadVersionRes__errorCodesType_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedLoadVersionRes__errorCodesType_reserved6_oer_ext_arr_[0] = {};
+const int ExtendedLoadVersionRes__errorCodesType_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedLoadVersionRes__errorCodesType_reserved6_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ExtendedLoadVersionRes__errorCodesType_reserved6_oer_ext_arr_, 0, ExtendedLoadVersionRes__errorCodesType_reserved6_oer_p_};
+const TTCN_Typedescriptor_t ExtendedLoadVersionRes__errorCodesType_reserved6_descr_ = { "@IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType.reserved6", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ExtendedLoadVersionRes__errorCodesType_reserved6_xer_, &BOOLEAN_json_, &ExtendedLoadVersionRes__errorCodesType_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedLoadVersionRes__errorCodesType_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedLoadVersionRes__errorCodesType_reserved7_oer_ext_arr_[0] = {};
+const int ExtendedLoadVersionRes__errorCodesType_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedLoadVersionRes__errorCodesType_reserved7_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ExtendedLoadVersionRes__errorCodesType_reserved7_oer_ext_arr_, 0, ExtendedLoadVersionRes__errorCodesType_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ExtendedLoadVersionRes__errorCodesType_reserved7_descr_ = { "@IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType.reserved7", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ExtendedLoadVersionRes__errorCodesType_reserved7_xer_, &BOOLEAN_json_, &ExtendedLoadVersionRes__errorCodesType_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedLoadVersionRes__errorCodesType_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ExtendedLoadVersionRes__errorCodesType
+const TTCN_Typedescriptor_t ExtendedLoadVersionRes__errorCodesType_descr_ = { "@IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType", NULL, &ExtendedLoadVersionRes__errorCodesType_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedLoadVersionRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ExtendedLoadVersionRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ExtendedLoadVersionRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.ExtendedLoadVersionRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ExtendedLoadVersionRes_vtfunction_xer_, &INTEGER_json_, &ExtendedLoadVersionRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedLoadVersionRes_reserved2_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExtendedLoadVersionRes_reserved2_xer_ = { {"reserved2>\n", "reserved2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedLoadVersionRes_reserved2_oer_ext_arr_[0] = {};
+const int ExtendedLoadVersionRes_reserved2_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedLoadVersionRes_reserved2_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExtendedLoadVersionRes_reserved2_oer_ext_arr_, 0, ExtendedLoadVersionRes_reserved2_oer_p_};
+const TTCN_Typedescriptor_t ExtendedLoadVersionRes_reserved2_descr_ = { "@IsobusVTMessageTypes.ExtendedLoadVersionRes.reserved2", &OCTETSTRING_ber_, &ExtendedLoadVersionRes_reserved2_raw_, &OCTETSTRING_text_, &ExtendedLoadVersionRes_reserved2_xer_, &OCTETSTRING_json_, &ExtendedLoadVersionRes_reserved2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedLoadVersionRes_reserved3_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExtendedLoadVersionRes_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedLoadVersionRes_reserved3_oer_ext_arr_[0] = {};
+const int ExtendedLoadVersionRes_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedLoadVersionRes_reserved3_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExtendedLoadVersionRes_reserved3_oer_ext_arr_, 0, ExtendedLoadVersionRes_reserved3_oer_p_};
+const TTCN_Typedescriptor_t ExtendedLoadVersionRes_reserved3_descr_ = { "@IsobusVTMessageTypes.ExtendedLoadVersionRes.reserved3", &OCTETSTRING_ber_, &ExtendedLoadVersionRes_reserved3_raw_, &OCTETSTRING_text_, &ExtendedLoadVersionRes_reserved3_xer_, &OCTETSTRING_json_, &ExtendedLoadVersionRes_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedLoadVersionRes_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExtendedLoadVersionRes_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedLoadVersionRes_reserved4_oer_ext_arr_[0] = {};
+const int ExtendedLoadVersionRes_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedLoadVersionRes_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExtendedLoadVersionRes_reserved4_oer_ext_arr_, 0, ExtendedLoadVersionRes_reserved4_oer_p_};
+const TTCN_Typedescriptor_t ExtendedLoadVersionRes_reserved4_descr_ = { "@IsobusVTMessageTypes.ExtendedLoadVersionRes.reserved4", &OCTETSTRING_ber_, &ExtendedLoadVersionRes_reserved4_raw_, &OCTETSTRING_text_, &ExtendedLoadVersionRes_reserved4_xer_, &OCTETSTRING_json_, &ExtendedLoadVersionRes_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedLoadVersionRes_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExtendedLoadVersionRes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedLoadVersionRes_reserved5_oer_ext_arr_[0] = {};
+const int ExtendedLoadVersionRes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedLoadVersionRes_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExtendedLoadVersionRes_reserved5_oer_ext_arr_, 0, ExtendedLoadVersionRes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t ExtendedLoadVersionRes_reserved5_descr_ = { "@IsobusVTMessageTypes.ExtendedLoadVersionRes.reserved5", &OCTETSTRING_ber_, &ExtendedLoadVersionRes_reserved5_raw_, &OCTETSTRING_text_, &ExtendedLoadVersionRes_reserved5_xer_, &OCTETSTRING_json_, &ExtendedLoadVersionRes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedLoadVersionRes_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExtendedLoadVersionRes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedLoadVersionRes_reserved7_oer_ext_arr_[0] = {};
+const int ExtendedLoadVersionRes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedLoadVersionRes_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExtendedLoadVersionRes_reserved7_oer_ext_arr_, 0, ExtendedLoadVersionRes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ExtendedLoadVersionRes_reserved7_descr_ = { "@IsobusVTMessageTypes.ExtendedLoadVersionRes.reserved7", &OCTETSTRING_ber_, &ExtendedLoadVersionRes_reserved7_raw_, &OCTETSTRING_text_, &ExtendedLoadVersionRes_reserved7_xer_, &OCTETSTRING_json_, &ExtendedLoadVersionRes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedLoadVersionRes_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExtendedLoadVersionRes_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedLoadVersionRes_reserved8_oer_ext_arr_[0] = {};
+const int ExtendedLoadVersionRes_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedLoadVersionRes_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExtendedLoadVersionRes_reserved8_oer_ext_arr_, 0, ExtendedLoadVersionRes_reserved8_oer_p_};
+const TTCN_Typedescriptor_t ExtendedLoadVersionRes_reserved8_descr_ = { "@IsobusVTMessageTypes.ExtendedLoadVersionRes.reserved8", &OCTETSTRING_ber_, &ExtendedLoadVersionRes_reserved8_raw_, &OCTETSTRING_text_, &ExtendedLoadVersionRes_reserved8_xer_, &OCTETSTRING_json_, &ExtendedLoadVersionRes_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedLoadVersionRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ExtendedLoadVersionRes
+const TTCN_Typedescriptor_t ExtendedLoadVersionRes_descr_ = { "@IsobusVTMessageTypes.ExtendedLoadVersionRes", NULL, &ExtendedLoadVersionRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedLoadVersionReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ExtendedLoadVersionReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ExtendedLoadVersionReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.ExtendedLoadVersionReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ExtendedLoadVersionReq_vtfunction_xer_, &INTEGER_json_, &ExtendedLoadVersionReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedLoadVersionReq_versionLabel_xer_ = { {"versionLabel>\n", "versionLabel>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedLoadVersionReq_versionLabel_oer_ext_arr_[0] = {};
+const int ExtendedLoadVersionReq_versionLabel_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedLoadVersionReq_versionLabel_oer_ = { -1, TRUE, 32, FALSE, 0, 0, ExtendedLoadVersionReq_versionLabel_oer_ext_arr_, 0, ExtendedLoadVersionReq_versionLabel_oer_p_};
+const TTCN_Typedescriptor_t ExtendedLoadVersionReq_versionLabel_descr_ = { "@IsobusVTMessageTypes.ExtendedLoadVersionReq.versionLabel", &OCTETSTRING_ber_, &General__Types::OCT32_raw_, &OCTETSTRING_text_, &ExtendedLoadVersionReq_versionLabel_xer_, &OCTETSTRING_json_, &ExtendedLoadVersionReq_versionLabel_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedLoadVersionReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ExtendedLoadVersionReq
+const TTCN_Typedescriptor_t ExtendedLoadVersionReq_descr_ = { "@IsobusVTMessageTypes.ExtendedLoadVersionReq", NULL, &ExtendedLoadVersionReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedDeleteVersionRes__errorCodesType_reserved0_xer_ = { {"reserved0>\n", "reserved0>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedDeleteVersionRes__errorCodesType_reserved0_oer_ext_arr_[0] = {};
+const int ExtendedDeleteVersionRes__errorCodesType_reserved0_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedDeleteVersionRes__errorCodesType_reserved0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ExtendedDeleteVersionRes__errorCodesType_reserved0_oer_ext_arr_, 0, ExtendedDeleteVersionRes__errorCodesType_reserved0_oer_p_};
+const TTCN_Typedescriptor_t ExtendedDeleteVersionRes__errorCodesType_reserved0_descr_ = { "@IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType.reserved0", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ExtendedDeleteVersionRes__errorCodesType_reserved0_xer_, &BOOLEAN_json_, &ExtendedDeleteVersionRes__errorCodesType_reserved0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedDeleteVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabelUnknown_xer_ = { {"versionLabelIsNotCorrectOrVersionLabelUnknown>\n", "versionLabelIsNotCorrectOrVersionLabelUnknown>\n"}, {47, 47}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedDeleteVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabelUnknown_oer_ext_arr_[0] = {};
+const int ExtendedDeleteVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabelUnknown_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedDeleteVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabelUnknown_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ExtendedDeleteVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabelUnknown_oer_ext_arr_, 0, ExtendedDeleteVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabelUnknown_oer_p_};
+const TTCN_Typedescriptor_t ExtendedDeleteVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabelUnknown_descr_ = { "@IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType.versionLabelIsNotCorrectOrVersionLabelUnknown", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ExtendedDeleteVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabelUnknown_xer_, &BOOLEAN_json_, &ExtendedDeleteVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabelUnknown_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedDeleteVersionRes__errorCodesType_reserved2_xer_ = { {"reserved2>\n", "reserved2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedDeleteVersionRes__errorCodesType_reserved2_oer_ext_arr_[0] = {};
+const int ExtendedDeleteVersionRes__errorCodesType_reserved2_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedDeleteVersionRes__errorCodesType_reserved2_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ExtendedDeleteVersionRes__errorCodesType_reserved2_oer_ext_arr_, 0, ExtendedDeleteVersionRes__errorCodesType_reserved2_oer_p_};
+const TTCN_Typedescriptor_t ExtendedDeleteVersionRes__errorCodesType_reserved2_descr_ = { "@IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType.reserved2", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ExtendedDeleteVersionRes__errorCodesType_reserved2_xer_, &BOOLEAN_json_, &ExtendedDeleteVersionRes__errorCodesType_reserved2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedDeleteVersionRes__errorCodesType_anyOtherError_xer_ = { {"anyOtherError>\n", "anyOtherError>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedDeleteVersionRes__errorCodesType_anyOtherError_oer_ext_arr_[0] = {};
+const int ExtendedDeleteVersionRes__errorCodesType_anyOtherError_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedDeleteVersionRes__errorCodesType_anyOtherError_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ExtendedDeleteVersionRes__errorCodesType_anyOtherError_oer_ext_arr_, 0, ExtendedDeleteVersionRes__errorCodesType_anyOtherError_oer_p_};
+const TTCN_Typedescriptor_t ExtendedDeleteVersionRes__errorCodesType_anyOtherError_descr_ = { "@IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType.anyOtherError", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ExtendedDeleteVersionRes__errorCodesType_anyOtherError_xer_, &BOOLEAN_json_, &ExtendedDeleteVersionRes__errorCodesType_anyOtherError_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedDeleteVersionRes__errorCodesType_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedDeleteVersionRes__errorCodesType_reserved4_oer_ext_arr_[0] = {};
+const int ExtendedDeleteVersionRes__errorCodesType_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedDeleteVersionRes__errorCodesType_reserved4_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ExtendedDeleteVersionRes__errorCodesType_reserved4_oer_ext_arr_, 0, ExtendedDeleteVersionRes__errorCodesType_reserved4_oer_p_};
+const TTCN_Typedescriptor_t ExtendedDeleteVersionRes__errorCodesType_reserved4_descr_ = { "@IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType.reserved4", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ExtendedDeleteVersionRes__errorCodesType_reserved4_xer_, &BOOLEAN_json_, &ExtendedDeleteVersionRes__errorCodesType_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedDeleteVersionRes__errorCodesType_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedDeleteVersionRes__errorCodesType_reserved5_oer_ext_arr_[0] = {};
+const int ExtendedDeleteVersionRes__errorCodesType_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedDeleteVersionRes__errorCodesType_reserved5_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ExtendedDeleteVersionRes__errorCodesType_reserved5_oer_ext_arr_, 0, ExtendedDeleteVersionRes__errorCodesType_reserved5_oer_p_};
+const TTCN_Typedescriptor_t ExtendedDeleteVersionRes__errorCodesType_reserved5_descr_ = { "@IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType.reserved5", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ExtendedDeleteVersionRes__errorCodesType_reserved5_xer_, &BOOLEAN_json_, &ExtendedDeleteVersionRes__errorCodesType_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedDeleteVersionRes__errorCodesType_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedDeleteVersionRes__errorCodesType_reserved6_oer_ext_arr_[0] = {};
+const int ExtendedDeleteVersionRes__errorCodesType_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedDeleteVersionRes__errorCodesType_reserved6_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ExtendedDeleteVersionRes__errorCodesType_reserved6_oer_ext_arr_, 0, ExtendedDeleteVersionRes__errorCodesType_reserved6_oer_p_};
+const TTCN_Typedescriptor_t ExtendedDeleteVersionRes__errorCodesType_reserved6_descr_ = { "@IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType.reserved6", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ExtendedDeleteVersionRes__errorCodesType_reserved6_xer_, &BOOLEAN_json_, &ExtendedDeleteVersionRes__errorCodesType_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedDeleteVersionRes__errorCodesType_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedDeleteVersionRes__errorCodesType_reserved7_oer_ext_arr_[0] = {};
+const int ExtendedDeleteVersionRes__errorCodesType_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedDeleteVersionRes__errorCodesType_reserved7_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ExtendedDeleteVersionRes__errorCodesType_reserved7_oer_ext_arr_, 0, ExtendedDeleteVersionRes__errorCodesType_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ExtendedDeleteVersionRes__errorCodesType_reserved7_descr_ = { "@IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType.reserved7", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &ExtendedDeleteVersionRes__errorCodesType_reserved7_xer_, &BOOLEAN_json_, &ExtendedDeleteVersionRes__errorCodesType_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedDeleteVersionRes__errorCodesType_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ExtendedDeleteVersionRes__errorCodesType
+const TTCN_Typedescriptor_t ExtendedDeleteVersionRes__errorCodesType_descr_ = { "@IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType", NULL, &ExtendedDeleteVersionRes__errorCodesType_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedDeleteVersionRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ExtendedDeleteVersionRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ExtendedDeleteVersionRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.ExtendedDeleteVersionRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ExtendedDeleteVersionRes_vtfunction_xer_, &INTEGER_json_, &ExtendedDeleteVersionRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedDeleteVersionRes_reserved2_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExtendedDeleteVersionRes_reserved2_xer_ = { {"reserved2>\n", "reserved2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedDeleteVersionRes_reserved2_oer_ext_arr_[0] = {};
+const int ExtendedDeleteVersionRes_reserved2_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedDeleteVersionRes_reserved2_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExtendedDeleteVersionRes_reserved2_oer_ext_arr_, 0, ExtendedDeleteVersionRes_reserved2_oer_p_};
+const TTCN_Typedescriptor_t ExtendedDeleteVersionRes_reserved2_descr_ = { "@IsobusVTMessageTypes.ExtendedDeleteVersionRes.reserved2", &OCTETSTRING_ber_, &ExtendedDeleteVersionRes_reserved2_raw_, &OCTETSTRING_text_, &ExtendedDeleteVersionRes_reserved2_xer_, &OCTETSTRING_json_, &ExtendedDeleteVersionRes_reserved2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedDeleteVersionRes_reserved3_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExtendedDeleteVersionRes_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedDeleteVersionRes_reserved3_oer_ext_arr_[0] = {};
+const int ExtendedDeleteVersionRes_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedDeleteVersionRes_reserved3_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExtendedDeleteVersionRes_reserved3_oer_ext_arr_, 0, ExtendedDeleteVersionRes_reserved3_oer_p_};
+const TTCN_Typedescriptor_t ExtendedDeleteVersionRes_reserved3_descr_ = { "@IsobusVTMessageTypes.ExtendedDeleteVersionRes.reserved3", &OCTETSTRING_ber_, &ExtendedDeleteVersionRes_reserved3_raw_, &OCTETSTRING_text_, &ExtendedDeleteVersionRes_reserved3_xer_, &OCTETSTRING_json_, &ExtendedDeleteVersionRes_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedDeleteVersionRes_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExtendedDeleteVersionRes_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedDeleteVersionRes_reserved4_oer_ext_arr_[0] = {};
+const int ExtendedDeleteVersionRes_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedDeleteVersionRes_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExtendedDeleteVersionRes_reserved4_oer_ext_arr_, 0, ExtendedDeleteVersionRes_reserved4_oer_p_};
+const TTCN_Typedescriptor_t ExtendedDeleteVersionRes_reserved4_descr_ = { "@IsobusVTMessageTypes.ExtendedDeleteVersionRes.reserved4", &OCTETSTRING_ber_, &ExtendedDeleteVersionRes_reserved4_raw_, &OCTETSTRING_text_, &ExtendedDeleteVersionRes_reserved4_xer_, &OCTETSTRING_json_, &ExtendedDeleteVersionRes_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedDeleteVersionRes_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExtendedDeleteVersionRes_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedDeleteVersionRes_reserved5_oer_ext_arr_[0] = {};
+const int ExtendedDeleteVersionRes_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedDeleteVersionRes_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExtendedDeleteVersionRes_reserved5_oer_ext_arr_, 0, ExtendedDeleteVersionRes_reserved5_oer_p_};
+const TTCN_Typedescriptor_t ExtendedDeleteVersionRes_reserved5_descr_ = { "@IsobusVTMessageTypes.ExtendedDeleteVersionRes.reserved5", &OCTETSTRING_ber_, &ExtendedDeleteVersionRes_reserved5_raw_, &OCTETSTRING_text_, &ExtendedDeleteVersionRes_reserved5_xer_, &OCTETSTRING_json_, &ExtendedDeleteVersionRes_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedDeleteVersionRes_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExtendedDeleteVersionRes_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedDeleteVersionRes_reserved7_oer_ext_arr_[0] = {};
+const int ExtendedDeleteVersionRes_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedDeleteVersionRes_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExtendedDeleteVersionRes_reserved7_oer_ext_arr_, 0, ExtendedDeleteVersionRes_reserved7_oer_p_};
+const TTCN_Typedescriptor_t ExtendedDeleteVersionRes_reserved7_descr_ = { "@IsobusVTMessageTypes.ExtendedDeleteVersionRes.reserved7", &OCTETSTRING_ber_, &ExtendedDeleteVersionRes_reserved7_raw_, &OCTETSTRING_text_, &ExtendedDeleteVersionRes_reserved7_xer_, &OCTETSTRING_json_, &ExtendedDeleteVersionRes_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedDeleteVersionRes_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ExtendedDeleteVersionRes_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedDeleteVersionRes_reserved8_oer_ext_arr_[0] = {};
+const int ExtendedDeleteVersionRes_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedDeleteVersionRes_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ExtendedDeleteVersionRes_reserved8_oer_ext_arr_, 0, ExtendedDeleteVersionRes_reserved8_oer_p_};
+const TTCN_Typedescriptor_t ExtendedDeleteVersionRes_reserved8_descr_ = { "@IsobusVTMessageTypes.ExtendedDeleteVersionRes.reserved8", &OCTETSTRING_ber_, &ExtendedDeleteVersionRes_reserved8_raw_, &OCTETSTRING_text_, &ExtendedDeleteVersionRes_reserved8_xer_, &OCTETSTRING_json_, &ExtendedDeleteVersionRes_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedDeleteVersionRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ExtendedDeleteVersionRes
+const TTCN_Typedescriptor_t ExtendedDeleteVersionRes_descr_ = { "@IsobusVTMessageTypes.ExtendedDeleteVersionRes", NULL, &ExtendedDeleteVersionRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedDeleteVersionReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ExtendedDeleteVersionReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ExtendedDeleteVersionReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.ExtendedDeleteVersionReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &ExtendedDeleteVersionReq_vtfunction_xer_, &INTEGER_json_, &ExtendedDeleteVersionReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ExtendedDeleteVersionReq_versionLabel_xer_ = { {"versionLabel>\n", "versionLabel>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedDeleteVersionReq_versionLabel_oer_ext_arr_[0] = {};
+const int ExtendedDeleteVersionReq_versionLabel_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedDeleteVersionReq_versionLabel_oer_ = { -1, TRUE, 32, FALSE, 0, 0, ExtendedDeleteVersionReq_versionLabel_oer_ext_arr_, 0, ExtendedDeleteVersionReq_versionLabel_oer_p_};
+const TTCN_Typedescriptor_t ExtendedDeleteVersionReq_versionLabel_descr_ = { "@IsobusVTMessageTypes.ExtendedDeleteVersionReq.versionLabel", &OCTETSTRING_ber_, &General__Types::OCT32_raw_, &OCTETSTRING_text_, &ExtendedDeleteVersionReq_versionLabel_xer_, &OCTETSTRING_json_, &ExtendedDeleteVersionReq_versionLabel_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedDeleteVersionReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ExtendedDeleteVersionReq
+const TTCN_Typedescriptor_t ExtendedDeleteVersionReq_descr_ = { "@IsobusVTMessageTypes.ExtendedDeleteVersionReq", NULL, &ExtendedDeleteVersionReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetVersionsReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t GetVersionsReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t GetVersionsReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.GetVersionsReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &GetVersionsReq_vtfunction_xer_, &INTEGER_json_, &GetVersionsReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetVersionsReq_reserved2_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetVersionsReq_reserved2_xer_ = { {"reserved2>\n", "reserved2>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetVersionsReq_reserved2_oer_ext_arr_[0] = {};
+const int GetVersionsReq_reserved2_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetVersionsReq_reserved2_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetVersionsReq_reserved2_oer_ext_arr_, 0, GetVersionsReq_reserved2_oer_p_};
+const TTCN_Typedescriptor_t GetVersionsReq_reserved2_descr_ = { "@IsobusVTMessageTypes.GetVersionsReq.reserved2", &OCTETSTRING_ber_, &GetVersionsReq_reserved2_raw_, &OCTETSTRING_text_, &GetVersionsReq_reserved2_xer_, &OCTETSTRING_json_, &GetVersionsReq_reserved2_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetVersionsReq_reserved3_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetVersionsReq_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetVersionsReq_reserved3_oer_ext_arr_[0] = {};
+const int GetVersionsReq_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetVersionsReq_reserved3_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetVersionsReq_reserved3_oer_ext_arr_, 0, GetVersionsReq_reserved3_oer_p_};
+const TTCN_Typedescriptor_t GetVersionsReq_reserved3_descr_ = { "@IsobusVTMessageTypes.GetVersionsReq.reserved3", &OCTETSTRING_ber_, &GetVersionsReq_reserved3_raw_, &OCTETSTRING_text_, &GetVersionsReq_reserved3_xer_, &OCTETSTRING_json_, &GetVersionsReq_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetVersionsReq_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetVersionsReq_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetVersionsReq_reserved4_oer_ext_arr_[0] = {};
+const int GetVersionsReq_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetVersionsReq_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetVersionsReq_reserved4_oer_ext_arr_, 0, GetVersionsReq_reserved4_oer_p_};
+const TTCN_Typedescriptor_t GetVersionsReq_reserved4_descr_ = { "@IsobusVTMessageTypes.GetVersionsReq.reserved4", &OCTETSTRING_ber_, &GetVersionsReq_reserved4_raw_, &OCTETSTRING_text_, &GetVersionsReq_reserved4_xer_, &OCTETSTRING_json_, &GetVersionsReq_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetVersionsReq_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetVersionsReq_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetVersionsReq_reserved5_oer_ext_arr_[0] = {};
+const int GetVersionsReq_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetVersionsReq_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetVersionsReq_reserved5_oer_ext_arr_, 0, GetVersionsReq_reserved5_oer_p_};
+const TTCN_Typedescriptor_t GetVersionsReq_reserved5_descr_ = { "@IsobusVTMessageTypes.GetVersionsReq.reserved5", &OCTETSTRING_ber_, &GetVersionsReq_reserved5_raw_, &OCTETSTRING_text_, &GetVersionsReq_reserved5_xer_, &OCTETSTRING_json_, &GetVersionsReq_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetVersionsReq_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetVersionsReq_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetVersionsReq_reserved6_oer_ext_arr_[0] = {};
+const int GetVersionsReq_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetVersionsReq_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetVersionsReq_reserved6_oer_ext_arr_, 0, GetVersionsReq_reserved6_oer_p_};
+const TTCN_Typedescriptor_t GetVersionsReq_reserved6_descr_ = { "@IsobusVTMessageTypes.GetVersionsReq.reserved6", &OCTETSTRING_ber_, &GetVersionsReq_reserved6_raw_, &OCTETSTRING_text_, &GetVersionsReq_reserved6_xer_, &OCTETSTRING_json_, &GetVersionsReq_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetVersionsReq_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetVersionsReq_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetVersionsReq_reserved7_oer_ext_arr_[0] = {};
+const int GetVersionsReq_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetVersionsReq_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetVersionsReq_reserved7_oer_ext_arr_, 0, GetVersionsReq_reserved7_oer_p_};
+const TTCN_Typedescriptor_t GetVersionsReq_reserved7_descr_ = { "@IsobusVTMessageTypes.GetVersionsReq.reserved7", &OCTETSTRING_ber_, &GetVersionsReq_reserved7_raw_, &OCTETSTRING_text_, &GetVersionsReq_reserved7_xer_, &OCTETSTRING_json_, &GetVersionsReq_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetVersionsReq_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       GetVersionsReq_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int GetVersionsReq_reserved8_oer_ext_arr_[0] = {};
+const int GetVersionsReq_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t GetVersionsReq_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, GetVersionsReq_reserved8_oer_ext_arr_, 0, GetVersionsReq_reserved8_oer_p_};
+const TTCN_Typedescriptor_t GetVersionsReq_reserved8_descr_ = { "@IsobusVTMessageTypes.GetVersionsReq.reserved8", &OCTETSTRING_ber_, &GetVersionsReq_reserved8_raw_, &OCTETSTRING_text_, &GetVersionsReq_reserved8_xer_, &OCTETSTRING_json_, &GetVersionsReq_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetVersionsReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for GetVersionsReq
+const TTCN_Typedescriptor_t GetVersionsReq_descr_ = { "@IsobusVTMessageTypes.GetVersionsReq", NULL, &GetVersionsReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetVersionsRes_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t GetVersionsRes_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t GetVersionsRes_vtfunction_descr_ = { "@IsobusVTMessageTypes.GetVersionsRes.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &GetVersionsRes_vtfunction_xer_, &INTEGER_json_, &GetVersionsRes_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetVersionsRes_numberOfVersionStrings_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,NULL,false};
+const XERdescriptor_t       GetVersionsRes_numberOfVersionStrings_xer_ = { {"numberOfVersionStrings>\n", "numberOfVersionStrings>\n"}, {24, 24}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t GetVersionsRes_numberOfVersionStrings_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t GetVersionsRes_numberOfVersionStrings_descr_ = { "@IsobusVTMessageTypes.GetVersionsRes.numberOfVersionStrings", &INTEGER_ber_, &GetVersionsRes_numberOfVersionStrings_raw_, &INTEGER_text_, &GetVersionsRes_numberOfVersionStrings_xer_, &INTEGER_json_, &GetVersionsRes_numberOfVersionStrings_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       GetVersionsRes_versionStrings_xer_ = { {"versionStrings>\n", "versionStrings>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_Typedescriptor_t GetVersionsRes_versionStrings_descr_ = { "@IsobusVTMessageTypes.GetVersionsRes.versionStrings", NULL, &CHR7_raw_, &CHARSTRING_text_, &GetVersionsRes_versionStrings_xer_, &CHARSTRING_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t GetVersionsRes_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for GetVersionsRes
+const TTCN_Typedescriptor_t GetVersionsRes_descr_ = { "@IsobusVTMessageTypes.GetVersionsRes", NULL, &GetVersionsRes_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTUnsupportedVTFunctionInd_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTUnsupportedVTFunctionInd_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTUnsupportedVTFunctionInd_vtfunction_descr_ = { "@IsobusVTMessageTypes.VTUnsupportedVTFunctionInd.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &VTUnsupportedVTFunctionInd_vtfunction_xer_, &INTEGER_json_, &VTUnsupportedVTFunctionInd_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTUnsupportedVTFunctionInd_unsupportedVTfunction_xer_ = { {"unsupportedVTfunction>\n", "unsupportedVTfunction>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTUnsupportedVTFunctionInd_unsupportedVTfunction_oer_ext_arr_[0] = {};
+const int VTUnsupportedVTFunctionInd_unsupportedVTfunction_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTUnsupportedVTFunctionInd_unsupportedVTfunction_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTUnsupportedVTFunctionInd_unsupportedVTfunction_oer_ext_arr_, 0, VTUnsupportedVTFunctionInd_unsupportedVTfunction_oer_p_};
+const TTCN_Typedescriptor_t VTUnsupportedVTFunctionInd_unsupportedVTfunction_descr_ = { "@IsobusVTMessageTypes.VTUnsupportedVTFunctionInd.unsupportedVTfunction", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &VTUnsupportedVTFunctionInd_unsupportedVTfunction_xer_, &OCTETSTRING_json_, &VTUnsupportedVTFunctionInd_unsupportedVTfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTUnsupportedVTFunctionInd_reserved3_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTUnsupportedVTFunctionInd_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTUnsupportedVTFunctionInd_reserved3_oer_ext_arr_[0] = {};
+const int VTUnsupportedVTFunctionInd_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTUnsupportedVTFunctionInd_reserved3_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTUnsupportedVTFunctionInd_reserved3_oer_ext_arr_, 0, VTUnsupportedVTFunctionInd_reserved3_oer_p_};
+const TTCN_Typedescriptor_t VTUnsupportedVTFunctionInd_reserved3_descr_ = { "@IsobusVTMessageTypes.VTUnsupportedVTFunctionInd.reserved3", &OCTETSTRING_ber_, &VTUnsupportedVTFunctionInd_reserved3_raw_, &OCTETSTRING_text_, &VTUnsupportedVTFunctionInd_reserved3_xer_, &OCTETSTRING_json_, &VTUnsupportedVTFunctionInd_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTUnsupportedVTFunctionInd_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTUnsupportedVTFunctionInd_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTUnsupportedVTFunctionInd_reserved4_oer_ext_arr_[0] = {};
+const int VTUnsupportedVTFunctionInd_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTUnsupportedVTFunctionInd_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTUnsupportedVTFunctionInd_reserved4_oer_ext_arr_, 0, VTUnsupportedVTFunctionInd_reserved4_oer_p_};
+const TTCN_Typedescriptor_t VTUnsupportedVTFunctionInd_reserved4_descr_ = { "@IsobusVTMessageTypes.VTUnsupportedVTFunctionInd.reserved4", &OCTETSTRING_ber_, &VTUnsupportedVTFunctionInd_reserved4_raw_, &OCTETSTRING_text_, &VTUnsupportedVTFunctionInd_reserved4_xer_, &OCTETSTRING_json_, &VTUnsupportedVTFunctionInd_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTUnsupportedVTFunctionInd_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTUnsupportedVTFunctionInd_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTUnsupportedVTFunctionInd_reserved5_oer_ext_arr_[0] = {};
+const int VTUnsupportedVTFunctionInd_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTUnsupportedVTFunctionInd_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTUnsupportedVTFunctionInd_reserved5_oer_ext_arr_, 0, VTUnsupportedVTFunctionInd_reserved5_oer_p_};
+const TTCN_Typedescriptor_t VTUnsupportedVTFunctionInd_reserved5_descr_ = { "@IsobusVTMessageTypes.VTUnsupportedVTFunctionInd.reserved5", &OCTETSTRING_ber_, &VTUnsupportedVTFunctionInd_reserved5_raw_, &OCTETSTRING_text_, &VTUnsupportedVTFunctionInd_reserved5_xer_, &OCTETSTRING_json_, &VTUnsupportedVTFunctionInd_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTUnsupportedVTFunctionInd_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTUnsupportedVTFunctionInd_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTUnsupportedVTFunctionInd_reserved6_oer_ext_arr_[0] = {};
+const int VTUnsupportedVTFunctionInd_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTUnsupportedVTFunctionInd_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTUnsupportedVTFunctionInd_reserved6_oer_ext_arr_, 0, VTUnsupportedVTFunctionInd_reserved6_oer_p_};
+const TTCN_Typedescriptor_t VTUnsupportedVTFunctionInd_reserved6_descr_ = { "@IsobusVTMessageTypes.VTUnsupportedVTFunctionInd.reserved6", &OCTETSTRING_ber_, &VTUnsupportedVTFunctionInd_reserved6_raw_, &OCTETSTRING_text_, &VTUnsupportedVTFunctionInd_reserved6_xer_, &OCTETSTRING_json_, &VTUnsupportedVTFunctionInd_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTUnsupportedVTFunctionInd_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTUnsupportedVTFunctionInd_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTUnsupportedVTFunctionInd_reserved7_oer_ext_arr_[0] = {};
+const int VTUnsupportedVTFunctionInd_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTUnsupportedVTFunctionInd_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTUnsupportedVTFunctionInd_reserved7_oer_ext_arr_, 0, VTUnsupportedVTFunctionInd_reserved7_oer_p_};
+const TTCN_Typedescriptor_t VTUnsupportedVTFunctionInd_reserved7_descr_ = { "@IsobusVTMessageTypes.VTUnsupportedVTFunctionInd.reserved7", &OCTETSTRING_ber_, &VTUnsupportedVTFunctionInd_reserved7_raw_, &OCTETSTRING_text_, &VTUnsupportedVTFunctionInd_reserved7_xer_, &OCTETSTRING_json_, &VTUnsupportedVTFunctionInd_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTUnsupportedVTFunctionInd_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       VTUnsupportedVTFunctionInd_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTUnsupportedVTFunctionInd_reserved8_oer_ext_arr_[0] = {};
+const int VTUnsupportedVTFunctionInd_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTUnsupportedVTFunctionInd_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTUnsupportedVTFunctionInd_reserved8_oer_ext_arr_, 0, VTUnsupportedVTFunctionInd_reserved8_oer_p_};
+const TTCN_Typedescriptor_t VTUnsupportedVTFunctionInd_reserved8_descr_ = { "@IsobusVTMessageTypes.VTUnsupportedVTFunctionInd.reserved8", &OCTETSTRING_ber_, &VTUnsupportedVTFunctionInd_reserved8_raw_, &OCTETSTRING_text_, &VTUnsupportedVTFunctionInd_reserved8_xer_, &OCTETSTRING_json_, &VTUnsupportedVTFunctionInd_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTUnsupportedVTFunctionInd_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for VTUnsupportedVTFunctionInd
+const TTCN_Typedescriptor_t VTUnsupportedVTFunctionInd_descr_ = { "@IsobusVTMessageTypes.VTUnsupportedVTFunctionInd", NULL, &VTUnsupportedVTFunctionInd_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       UnsupportedVTFunctionInd_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t UnsupportedVTFunctionInd_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t UnsupportedVTFunctionInd_vtfunction_descr_ = { "@IsobusVTMessageTypes.UnsupportedVTFunctionInd.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &UnsupportedVTFunctionInd_vtfunction_xer_, &INTEGER_json_, &UnsupportedVTFunctionInd_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       UnsupportedVTFunctionInd_unsupportedVTfunction_xer_ = { {"unsupportedVTfunction>\n", "unsupportedVTfunction>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int UnsupportedVTFunctionInd_unsupportedVTfunction_oer_ext_arr_[0] = {};
+const int UnsupportedVTFunctionInd_unsupportedVTfunction_oer_p_[0] = {};
+const TTCN_OERdescriptor_t UnsupportedVTFunctionInd_unsupportedVTfunction_oer_ = { -1, TRUE, 1, FALSE, 0, 0, UnsupportedVTFunctionInd_unsupportedVTfunction_oer_ext_arr_, 0, UnsupportedVTFunctionInd_unsupportedVTfunction_oer_p_};
+const TTCN_Typedescriptor_t UnsupportedVTFunctionInd_unsupportedVTfunction_descr_ = { "@IsobusVTMessageTypes.UnsupportedVTFunctionInd.unsupportedVTfunction", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &UnsupportedVTFunctionInd_unsupportedVTfunction_xer_, &OCTETSTRING_json_, &UnsupportedVTFunctionInd_unsupportedVTfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t UnsupportedVTFunctionInd_reserved3_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       UnsupportedVTFunctionInd_reserved3_xer_ = { {"reserved3>\n", "reserved3>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int UnsupportedVTFunctionInd_reserved3_oer_ext_arr_[0] = {};
+const int UnsupportedVTFunctionInd_reserved3_oer_p_[0] = {};
+const TTCN_OERdescriptor_t UnsupportedVTFunctionInd_reserved3_oer_ = { -1, TRUE, 1, FALSE, 0, 0, UnsupportedVTFunctionInd_reserved3_oer_ext_arr_, 0, UnsupportedVTFunctionInd_reserved3_oer_p_};
+const TTCN_Typedescriptor_t UnsupportedVTFunctionInd_reserved3_descr_ = { "@IsobusVTMessageTypes.UnsupportedVTFunctionInd.reserved3", &OCTETSTRING_ber_, &UnsupportedVTFunctionInd_reserved3_raw_, &OCTETSTRING_text_, &UnsupportedVTFunctionInd_reserved3_xer_, &OCTETSTRING_json_, &UnsupportedVTFunctionInd_reserved3_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t UnsupportedVTFunctionInd_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       UnsupportedVTFunctionInd_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int UnsupportedVTFunctionInd_reserved4_oer_ext_arr_[0] = {};
+const int UnsupportedVTFunctionInd_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t UnsupportedVTFunctionInd_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, UnsupportedVTFunctionInd_reserved4_oer_ext_arr_, 0, UnsupportedVTFunctionInd_reserved4_oer_p_};
+const TTCN_Typedescriptor_t UnsupportedVTFunctionInd_reserved4_descr_ = { "@IsobusVTMessageTypes.UnsupportedVTFunctionInd.reserved4", &OCTETSTRING_ber_, &UnsupportedVTFunctionInd_reserved4_raw_, &OCTETSTRING_text_, &UnsupportedVTFunctionInd_reserved4_xer_, &OCTETSTRING_json_, &UnsupportedVTFunctionInd_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t UnsupportedVTFunctionInd_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       UnsupportedVTFunctionInd_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int UnsupportedVTFunctionInd_reserved5_oer_ext_arr_[0] = {};
+const int UnsupportedVTFunctionInd_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t UnsupportedVTFunctionInd_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, UnsupportedVTFunctionInd_reserved5_oer_ext_arr_, 0, UnsupportedVTFunctionInd_reserved5_oer_p_};
+const TTCN_Typedescriptor_t UnsupportedVTFunctionInd_reserved5_descr_ = { "@IsobusVTMessageTypes.UnsupportedVTFunctionInd.reserved5", &OCTETSTRING_ber_, &UnsupportedVTFunctionInd_reserved5_raw_, &OCTETSTRING_text_, &UnsupportedVTFunctionInd_reserved5_xer_, &OCTETSTRING_json_, &UnsupportedVTFunctionInd_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t UnsupportedVTFunctionInd_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       UnsupportedVTFunctionInd_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int UnsupportedVTFunctionInd_reserved6_oer_ext_arr_[0] = {};
+const int UnsupportedVTFunctionInd_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t UnsupportedVTFunctionInd_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, UnsupportedVTFunctionInd_reserved6_oer_ext_arr_, 0, UnsupportedVTFunctionInd_reserved6_oer_p_};
+const TTCN_Typedescriptor_t UnsupportedVTFunctionInd_reserved6_descr_ = { "@IsobusVTMessageTypes.UnsupportedVTFunctionInd.reserved6", &OCTETSTRING_ber_, &UnsupportedVTFunctionInd_reserved6_raw_, &OCTETSTRING_text_, &UnsupportedVTFunctionInd_reserved6_xer_, &OCTETSTRING_json_, &UnsupportedVTFunctionInd_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t UnsupportedVTFunctionInd_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       UnsupportedVTFunctionInd_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int UnsupportedVTFunctionInd_reserved7_oer_ext_arr_[0] = {};
+const int UnsupportedVTFunctionInd_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t UnsupportedVTFunctionInd_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, UnsupportedVTFunctionInd_reserved7_oer_ext_arr_, 0, UnsupportedVTFunctionInd_reserved7_oer_p_};
+const TTCN_Typedescriptor_t UnsupportedVTFunctionInd_reserved7_descr_ = { "@IsobusVTMessageTypes.UnsupportedVTFunctionInd.reserved7", &OCTETSTRING_ber_, &UnsupportedVTFunctionInd_reserved7_raw_, &OCTETSTRING_text_, &UnsupportedVTFunctionInd_reserved7_xer_, &OCTETSTRING_json_, &UnsupportedVTFunctionInd_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t UnsupportedVTFunctionInd_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       UnsupportedVTFunctionInd_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int UnsupportedVTFunctionInd_reserved8_oer_ext_arr_[0] = {};
+const int UnsupportedVTFunctionInd_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t UnsupportedVTFunctionInd_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, UnsupportedVTFunctionInd_reserved8_oer_ext_arr_, 0, UnsupportedVTFunctionInd_reserved8_oer_p_};
+const TTCN_Typedescriptor_t UnsupportedVTFunctionInd_reserved8_descr_ = { "@IsobusVTMessageTypes.UnsupportedVTFunctionInd.reserved8", &OCTETSTRING_ber_, &UnsupportedVTFunctionInd_reserved8_raw_, &OCTETSTRING_text_, &UnsupportedVTFunctionInd_reserved8_xer_, &OCTETSTRING_json_, &UnsupportedVTFunctionInd_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t UnsupportedVTFunctionInd_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for UnsupportedVTFunctionInd
+const TTCN_Typedescriptor_t UnsupportedVTFunctionInd_descr_ = { "@IsobusVTMessageTypes.UnsupportedVTFunctionInd", NULL, &UnsupportedVTFunctionInd_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       WorkingSetMaintenanceReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t WorkingSetMaintenanceReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t WorkingSetMaintenanceReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.WorkingSetMaintenanceReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &WorkingSetMaintenanceReq_vtfunction_xer_, &INTEGER_json_, &WorkingSetMaintenanceReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t WorkingSetMaintenanceReq_reserved4_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       WorkingSetMaintenanceReq_reserved4_xer_ = { {"reserved4>\n", "reserved4>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int WorkingSetMaintenanceReq_reserved4_oer_ext_arr_[0] = {};
+const int WorkingSetMaintenanceReq_reserved4_oer_p_[0] = {};
+const TTCN_OERdescriptor_t WorkingSetMaintenanceReq_reserved4_oer_ = { -1, TRUE, 1, FALSE, 0, 0, WorkingSetMaintenanceReq_reserved4_oer_ext_arr_, 0, WorkingSetMaintenanceReq_reserved4_oer_p_};
+const TTCN_Typedescriptor_t WorkingSetMaintenanceReq_reserved4_descr_ = { "@IsobusVTMessageTypes.WorkingSetMaintenanceReq.reserved4", &OCTETSTRING_ber_, &WorkingSetMaintenanceReq_reserved4_raw_, &OCTETSTRING_text_, &WorkingSetMaintenanceReq_reserved4_xer_, &OCTETSTRING_json_, &WorkingSetMaintenanceReq_reserved4_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t WorkingSetMaintenanceReq_reserved5_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       WorkingSetMaintenanceReq_reserved5_xer_ = { {"reserved5>\n", "reserved5>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int WorkingSetMaintenanceReq_reserved5_oer_ext_arr_[0] = {};
+const int WorkingSetMaintenanceReq_reserved5_oer_p_[0] = {};
+const TTCN_OERdescriptor_t WorkingSetMaintenanceReq_reserved5_oer_ = { -1, TRUE, 1, FALSE, 0, 0, WorkingSetMaintenanceReq_reserved5_oer_ext_arr_, 0, WorkingSetMaintenanceReq_reserved5_oer_p_};
+const TTCN_Typedescriptor_t WorkingSetMaintenanceReq_reserved5_descr_ = { "@IsobusVTMessageTypes.WorkingSetMaintenanceReq.reserved5", &OCTETSTRING_ber_, &WorkingSetMaintenanceReq_reserved5_raw_, &OCTETSTRING_text_, &WorkingSetMaintenanceReq_reserved5_xer_, &OCTETSTRING_json_, &WorkingSetMaintenanceReq_reserved5_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t WorkingSetMaintenanceReq_reserved6_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       WorkingSetMaintenanceReq_reserved6_xer_ = { {"reserved6>\n", "reserved6>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int WorkingSetMaintenanceReq_reserved6_oer_ext_arr_[0] = {};
+const int WorkingSetMaintenanceReq_reserved6_oer_p_[0] = {};
+const TTCN_OERdescriptor_t WorkingSetMaintenanceReq_reserved6_oer_ = { -1, TRUE, 1, FALSE, 0, 0, WorkingSetMaintenanceReq_reserved6_oer_ext_arr_, 0, WorkingSetMaintenanceReq_reserved6_oer_p_};
+const TTCN_Typedescriptor_t WorkingSetMaintenanceReq_reserved6_descr_ = { "@IsobusVTMessageTypes.WorkingSetMaintenanceReq.reserved6", &OCTETSTRING_ber_, &WorkingSetMaintenanceReq_reserved6_raw_, &OCTETSTRING_text_, &WorkingSetMaintenanceReq_reserved6_xer_, &OCTETSTRING_json_, &WorkingSetMaintenanceReq_reserved6_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t WorkingSetMaintenanceReq_reserved7_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       WorkingSetMaintenanceReq_reserved7_xer_ = { {"reserved7>\n", "reserved7>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int WorkingSetMaintenanceReq_reserved7_oer_ext_arr_[0] = {};
+const int WorkingSetMaintenanceReq_reserved7_oer_p_[0] = {};
+const TTCN_OERdescriptor_t WorkingSetMaintenanceReq_reserved7_oer_ = { -1, TRUE, 1, FALSE, 0, 0, WorkingSetMaintenanceReq_reserved7_oer_ext_arr_, 0, WorkingSetMaintenanceReq_reserved7_oer_p_};
+const TTCN_Typedescriptor_t WorkingSetMaintenanceReq_reserved7_descr_ = { "@IsobusVTMessageTypes.WorkingSetMaintenanceReq.reserved7", &OCTETSTRING_ber_, &WorkingSetMaintenanceReq_reserved7_raw_, &OCTETSTRING_text_, &WorkingSetMaintenanceReq_reserved7_xer_, &OCTETSTRING_json_, &WorkingSetMaintenanceReq_reserved7_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t WorkingSetMaintenanceReq_reserved8_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       WorkingSetMaintenanceReq_reserved8_xer_ = { {"reserved8>\n", "reserved8>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int WorkingSetMaintenanceReq_reserved8_oer_ext_arr_[0] = {};
+const int WorkingSetMaintenanceReq_reserved8_oer_p_[0] = {};
+const TTCN_OERdescriptor_t WorkingSetMaintenanceReq_reserved8_oer_ = { -1, TRUE, 1, FALSE, 0, 0, WorkingSetMaintenanceReq_reserved8_oer_ext_arr_, 0, WorkingSetMaintenanceReq_reserved8_oer_p_};
+const TTCN_Typedescriptor_t WorkingSetMaintenanceReq_reserved8_descr_ = { "@IsobusVTMessageTypes.WorkingSetMaintenanceReq.reserved8", &OCTETSTRING_ber_, &WorkingSetMaintenanceReq_reserved8_raw_, &OCTETSTRING_text_, &WorkingSetMaintenanceReq_reserved8_xer_, &OCTETSTRING_json_, &WorkingSetMaintenanceReq_reserved8_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t WorkingSetMaintenanceReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for WorkingSetMaintenanceReq
+const TTCN_Typedescriptor_t WorkingSetMaintenanceReq_descr_ = { "@IsobusVTMessageTypes.WorkingSetMaintenanceReq", NULL, &WorkingSetMaintenanceReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t e__BusyCodes_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,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for e__BusyCodes
+const TTCN_Typedescriptor_t e__BusyCodes_descr_ = { "@IsobusVTMessageTypes.e_BusyCodes", NULL, &e__BusyCodes_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTStatusReq_vtfunction_xer_ = { {"vtfunction>\n", "vtfunction>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t VTStatusReq_vtfunction_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t VTStatusReq_vtfunction_descr_ = { "@IsobusVTMessageTypes.VTStatusReq.vtfunction", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &VTStatusReq_vtfunction_xer_, &INTEGER_json_, &VTStatusReq_vtfunction_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTStatusReq_sourceAddressOfActiveWorkingSetMaster_xer_ = { {"sourceAddressOfActiveWorkingSetMaster>\n", "sourceAddressOfActiveWorkingSetMaster>\n"}, {39, 39}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTStatusReq_sourceAddressOfActiveWorkingSetMaster_oer_ext_arr_[0] = {};
+const int VTStatusReq_sourceAddressOfActiveWorkingSetMaster_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTStatusReq_sourceAddressOfActiveWorkingSetMaster_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTStatusReq_sourceAddressOfActiveWorkingSetMaster_oer_ext_arr_, 0, VTStatusReq_sourceAddressOfActiveWorkingSetMaster_oer_p_};
+const TTCN_Typedescriptor_t VTStatusReq_sourceAddressOfActiveWorkingSetMaster_descr_ = { "@IsobusVTMessageTypes.VTStatusReq.sourceAddressOfActiveWorkingSetMaster", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &VTStatusReq_sourceAddressOfActiveWorkingSetMaster_xer_, &OCTETSTRING_json_, &VTStatusReq_sourceAddressOfActiveWorkingSetMaster_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTStatusReq_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet_xer_ = { {"objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet>\n", "objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet>\n"}, {56, 56}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTStatusReq_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet_oer_ext_arr_[0] = {};
+const int VTStatusReq_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTStatusReq_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet_oer_ = { -1, TRUE, 2, FALSE, 0, 0, VTStatusReq_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet_oer_ext_arr_, 0, VTStatusReq_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet_oer_p_};
+const TTCN_Typedescriptor_t VTStatusReq_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet_descr_ = { "@IsobusVTMessageTypes.VTStatusReq.objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &VTStatusReq_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet_xer_, &OCTETSTRING_json_, &VTStatusReq_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTStatusReq_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet_xer_ = { {"objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet>\n", "objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet>\n"}, {54, 54}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTStatusReq_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet_oer_ext_arr_[0] = {};
+const int VTStatusReq_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTStatusReq_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet_oer_ = { -1, TRUE, 2, FALSE, 0, 0, VTStatusReq_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet_oer_ext_arr_, 0, VTStatusReq_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet_oer_p_};
+const TTCN_Typedescriptor_t VTStatusReq_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet_descr_ = { "@IsobusVTMessageTypes.VTStatusReq.objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &VTStatusReq_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet_xer_, &OCTETSTRING_json_, &VTStatusReq_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       VTStatusReq_vtFunctionCode_xer_ = { {"vtFunctionCode>\n", "vtFunctionCode>\n"}, {16, 16}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int VTStatusReq_vtFunctionCode_oer_ext_arr_[0] = {};
+const int VTStatusReq_vtFunctionCode_oer_p_[0] = {};
+const TTCN_OERdescriptor_t VTStatusReq_vtFunctionCode_oer_ = { -1, TRUE, 1, FALSE, 0, 0, VTStatusReq_vtFunctionCode_oer_ext_arr_, 0, VTStatusReq_vtFunctionCode_oer_p_};
+const TTCN_Typedescriptor_t VTStatusReq_vtFunctionCode_descr_ = { "@IsobusVTMessageTypes.VTStatusReq.vtFunctionCode", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &VTStatusReq_vtFunctionCode_xer_, &OCTETSTRING_json_, &VTStatusReq_vtFunctionCode_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VTStatusReq_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for VTStatusReq
+const TTCN_Typedescriptor_t VTStatusReq_descr_ = { "@IsobusVTMessageTypes.VTStatusReq", NULL, &VTStatusReq_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t VT2ECU_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for VT2ECU
+const TTCN_Typedescriptor_t VT2ECU_descr_ = { "@IsobusVTMessageTypes.VT2ECU", NULL, &VT2ECU_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ECU2VT_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ECU2VT
+const TTCN_Typedescriptor_t ECU2VT_descr_ = { "@IsobusVTMessageTypes.ECU2VT", NULL, &ECU2VT_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+TTCN_Module module_object("IsobusVTMessageTypes", __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);
+
+static const RuntimeVersionChecker ver_checker(  current_runtime_version.requires_major_version_6,
+  current_runtime_version.requires_minor_version_6,
+  current_runtime_version.requires_patch_level_0,  current_runtime_version.requires_runtime_1);
+
+/* Member functions of C++ classes */
+
+e__SoftKeyActivationReq__KeyAactivationCode::e__SoftKeyActivationReq__KeyAactivationCode()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+e__SoftKeyActivationReq__KeyAactivationCode::e__SoftKeyActivationReq__KeyAactivationCode(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @IsobusVTMessageTypes.e_SoftKeyActivationReq_KeyAactivationCode with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+e__SoftKeyActivationReq__KeyAactivationCode::e__SoftKeyActivationReq__KeyAactivationCode(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+e__SoftKeyActivationReq__KeyAactivationCode::e__SoftKeyActivationReq__KeyAactivationCode(const e__SoftKeyActivationReq__KeyAactivationCode& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @IsobusVTMessageTypes.e_SoftKeyActivationReq_KeyAactivationCode.");
+enum_value = other_value.enum_value;
+}
+
+e__SoftKeyActivationReq__KeyAactivationCode& e__SoftKeyActivationReq__KeyAactivationCode::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @IsobusVTMessageTypes.e_SoftKeyActivationReq_KeyAactivationCode.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+e__SoftKeyActivationReq__KeyAactivationCode& e__SoftKeyActivationReq__KeyAactivationCode::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+e__SoftKeyActivationReq__KeyAactivationCode& e__SoftKeyActivationReq__KeyAactivationCode::operator=(const e__SoftKeyActivationReq__KeyAactivationCode& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusVTMessageTypes.e_SoftKeyActivationReq_KeyAactivationCode.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean e__SoftKeyActivationReq__KeyAactivationCode::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_SoftKeyActivationReq_KeyAactivationCode.");
+return enum_value == other_value;
+}
+
+boolean e__SoftKeyActivationReq__KeyAactivationCode::operator==(const e__SoftKeyActivationReq__KeyAactivationCode& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_SoftKeyActivationReq_KeyAactivationCode.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_SoftKeyActivationReq_KeyAactivationCode.");
+return enum_value == other_value.enum_value;
+}
+
+boolean e__SoftKeyActivationReq__KeyAactivationCode::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_SoftKeyActivationReq_KeyAactivationCode.");
+return enum_value < other_value;
+}
+
+boolean e__SoftKeyActivationReq__KeyAactivationCode::operator<(const e__SoftKeyActivationReq__KeyAactivationCode& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_SoftKeyActivationReq_KeyAactivationCode.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_SoftKeyActivationReq_KeyAactivationCode.");
+return enum_value < other_value.enum_value;
+}
+
+boolean e__SoftKeyActivationReq__KeyAactivationCode::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_SoftKeyActivationReq_KeyAactivationCode.");
+return enum_value > other_value;
+}
+
+boolean e__SoftKeyActivationReq__KeyAactivationCode::operator>(const e__SoftKeyActivationReq__KeyAactivationCode& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_SoftKeyActivationReq_KeyAactivationCode.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_SoftKeyActivationReq_KeyAactivationCode.");
+return enum_value > other_value.enum_value;
+}
+
+const char *e__SoftKeyActivationReq__KeyAactivationCode::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case keyHasBeenReleased: return "keyHasBeenReleased";
+case keyHasBeenPressed: return "keyHasBeenPressed";
+case keyIsStillPressed: return "keyIsStillPressed";
+case keyPressAborted: return "keyPressAborted";
+default: return "<unknown>";
+}
+}
+
+e__SoftKeyActivationReq__KeyAactivationCode::enum_type e__SoftKeyActivationReq__KeyAactivationCode::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "keyHasBeenReleased")) return keyHasBeenReleased;
+else if (!strcmp(str_par, "keyHasBeenPressed")) return keyHasBeenPressed;
+else if (!strcmp(str_par, "keyIsStillPressed")) return keyIsStillPressed;
+else if (!strcmp(str_par, "keyPressAborted")) return keyPressAborted;
+else return UNKNOWN_VALUE;
+}
+
+boolean e__SoftKeyActivationReq__KeyAactivationCode::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 0:
+case 1:
+case 2:
+case 3:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int e__SoftKeyActivationReq__KeyAactivationCode::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusVTMessageTypes.e_SoftKeyActivationReq_KeyAactivationCode.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int e__SoftKeyActivationReq__KeyAactivationCode::enum2int(const e__SoftKeyActivationReq__KeyAactivationCode& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusVTMessageTypes.e_SoftKeyActivationReq_KeyAactivationCode.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void e__SoftKeyActivationReq__KeyAactivationCode::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @IsobusVTMessageTypes.e_SoftKeyActivationReq_KeyAactivationCode.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+e__SoftKeyActivationReq__KeyAactivationCode::operator e__SoftKeyActivationReq__KeyAactivationCode::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @IsobusVTMessageTypes.e_SoftKeyActivationReq_KeyAactivationCode.");
+return enum_value;
+}
+
+void e__SoftKeyActivationReq__KeyAactivationCode::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void e__SoftKeyActivationReq__KeyAactivationCode::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@IsobusVTMessageTypes.e_SoftKeyActivationReq_KeyAactivationCode");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @IsobusVTMessageTypes.e_SoftKeyActivationReq_KeyAactivationCode.");
+  }
+}
+
+void e__SoftKeyActivationReq__KeyAactivationCode::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @IsobusVTMessageTypes.e_SoftKeyActivationReq_KeyAactivationCode.");
+text_buf.push_int(enum_value);
+}
+
+void e__SoftKeyActivationReq__KeyAactivationCode::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @IsobusVTMessageTypes.e_SoftKeyActivationReq_KeyAactivationCode.", enum_value);
+}
+
+void e__SoftKeyActivationReq__KeyAactivationCode::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void e__SoftKeyActivationReq__KeyAactivationCode::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int e__SoftKeyActivationReq__KeyAactivationCode::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*)
+{
+  int decoded_value = 0;
+  int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 3, no_err);
+  if (decoded_length < 0) return decoded_length;
+  if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value;
+  else {
+    if(no_err){
+     return -1;
+    } else {
+    TTCN_EncDec_ErrorContext::error
+      (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name);
+    enum_value = UNKNOWN_VALUE;
+    }
+  }
+  return decoded_length;
+}
+
+int e__SoftKeyActivationReq__KeyAactivationCode::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const
+{
+  return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 3);
+}
+
+void e__SoftKeyActivationReq__KeyAactivationCode_template::copy_template(const e__SoftKeyActivationReq__KeyAactivationCode_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new e__SoftKeyActivationReq__KeyAactivationCode_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_SoftKeyActivationReq_KeyAactivationCode.");
+}
+}
+
+e__SoftKeyActivationReq__KeyAactivationCode_template::e__SoftKeyActivationReq__KeyAactivationCode_template()
+{
+}
+
+e__SoftKeyActivationReq__KeyAactivationCode_template::e__SoftKeyActivationReq__KeyAactivationCode_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+e__SoftKeyActivationReq__KeyAactivationCode_template::e__SoftKeyActivationReq__KeyAactivationCode_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!e__SoftKeyActivationReq__KeyAactivationCode::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @IsobusVTMessageTypes.e_SoftKeyActivationReq_KeyAactivationCode with unknown numeric value %d.", other_value);
+single_value = (e__SoftKeyActivationReq__KeyAactivationCode::enum_type)other_value;
+}
+
+e__SoftKeyActivationReq__KeyAactivationCode_template::e__SoftKeyActivationReq__KeyAactivationCode_template(e__SoftKeyActivationReq__KeyAactivationCode::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+e__SoftKeyActivationReq__KeyAactivationCode_template::e__SoftKeyActivationReq__KeyAactivationCode_template(const e__SoftKeyActivationReq__KeyAactivationCode& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == e__SoftKeyActivationReq__KeyAactivationCode::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @IsobusVTMessageTypes.e_SoftKeyActivationReq_KeyAactivationCode.");
+single_value = other_value.enum_value;
+}
+
+e__SoftKeyActivationReq__KeyAactivationCode_template::e__SoftKeyActivationReq__KeyAactivationCode_template(const OPTIONAL<e__SoftKeyActivationReq__KeyAactivationCode>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__SoftKeyActivationReq__KeyAactivationCode::enum_type)(const e__SoftKeyActivationReq__KeyAactivationCode&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @IsobusVTMessageTypes.e_SoftKeyActivationReq_KeyAactivationCode from an unbound optional field.");
+}
+}
+
+e__SoftKeyActivationReq__KeyAactivationCode_template::e__SoftKeyActivationReq__KeyAactivationCode_template(const e__SoftKeyActivationReq__KeyAactivationCode_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+e__SoftKeyActivationReq__KeyAactivationCode_template::~e__SoftKeyActivationReq__KeyAactivationCode_template()
+{
+clean_up();
+}
+
+boolean e__SoftKeyActivationReq__KeyAactivationCode_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean e__SoftKeyActivationReq__KeyAactivationCode_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != e__SoftKeyActivationReq__KeyAactivationCode::UNBOUND_VALUE;
+}
+
+void e__SoftKeyActivationReq__KeyAactivationCode_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+e__SoftKeyActivationReq__KeyAactivationCode_template& e__SoftKeyActivationReq__KeyAactivationCode_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+e__SoftKeyActivationReq__KeyAactivationCode_template& e__SoftKeyActivationReq__KeyAactivationCode_template::operator=(int other_value)
+{
+if (!e__SoftKeyActivationReq__KeyAactivationCode::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @IsobusVTMessageTypes.e_SoftKeyActivationReq_KeyAactivationCode.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (e__SoftKeyActivationReq__KeyAactivationCode::enum_type)other_value;
+return *this;
+}
+
+e__SoftKeyActivationReq__KeyAactivationCode_template& e__SoftKeyActivationReq__KeyAactivationCode_template::operator=(e__SoftKeyActivationReq__KeyAactivationCode::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+e__SoftKeyActivationReq__KeyAactivationCode_template& e__SoftKeyActivationReq__KeyAactivationCode_template::operator=(const e__SoftKeyActivationReq__KeyAactivationCode& other_value)
+{
+if (other_value.enum_value == e__SoftKeyActivationReq__KeyAactivationCode::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusVTMessageTypes.e_SoftKeyActivationReq_KeyAactivationCode to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+e__SoftKeyActivationReq__KeyAactivationCode_template& e__SoftKeyActivationReq__KeyAactivationCode_template::operator=(const OPTIONAL<e__SoftKeyActivationReq__KeyAactivationCode>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__SoftKeyActivationReq__KeyAactivationCode::enum_type)(const e__SoftKeyActivationReq__KeyAactivationCode&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @IsobusVTMessageTypes.e_SoftKeyActivationReq_KeyAactivationCode.");
+}
+return *this;
+}
+
+e__SoftKeyActivationReq__KeyAactivationCode_template& e__SoftKeyActivationReq__KeyAactivationCode_template::operator=(const e__SoftKeyActivationReq__KeyAactivationCode_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean e__SoftKeyActivationReq__KeyAactivationCode_template::match(e__SoftKeyActivationReq__KeyAactivationCode::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_SoftKeyActivationReq_KeyAactivationCode.");
+}
+return FALSE;
+}
+
+boolean e__SoftKeyActivationReq__KeyAactivationCode_template::match(const e__SoftKeyActivationReq__KeyAactivationCode& other_value, boolean) const
+{
+if (other_value.enum_value == e__SoftKeyActivationReq__KeyAactivationCode::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @IsobusVTMessageTypes.e_SoftKeyActivationReq_KeyAactivationCode with an unbound value.");
+return match(other_value.enum_value);
+}
+
+e__SoftKeyActivationReq__KeyAactivationCode::enum_type e__SoftKeyActivationReq__KeyAactivationCode_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @IsobusVTMessageTypes.e_SoftKeyActivationReq_KeyAactivationCode.");
+return single_value;
+}
+
+void e__SoftKeyActivationReq__KeyAactivationCode_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @IsobusVTMessageTypes.e_SoftKeyActivationReq_KeyAactivationCode.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new e__SoftKeyActivationReq__KeyAactivationCode_template[list_length];
+}
+
+e__SoftKeyActivationReq__KeyAactivationCode_template& e__SoftKeyActivationReq__KeyAactivationCode_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @IsobusVTMessageTypes.e_SoftKeyActivationReq_KeyAactivationCode.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @IsobusVTMessageTypes.e_SoftKeyActivationReq_KeyAactivationCode.");
+return value_list.list_value[list_index];
+}
+
+void e__SoftKeyActivationReq__KeyAactivationCode_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(e__SoftKeyActivationReq__KeyAactivationCode::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void e__SoftKeyActivationReq__KeyAactivationCode_template::log_match(const e__SoftKeyActivationReq__KeyAactivationCode& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void e__SoftKeyActivationReq__KeyAactivationCode_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_SoftKeyActivationReq_KeyAactivationCode.");
+}
+}
+
+void e__SoftKeyActivationReq__KeyAactivationCode_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (e__SoftKeyActivationReq__KeyAactivationCode::enum_type)text_buf.pull_int().get_val();
+if (!e__SoftKeyActivationReq__KeyAactivationCode::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @IsobusVTMessageTypes.e_SoftKeyActivationReq_KeyAactivationCode.", single_value);
+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 e__SoftKeyActivationReq__KeyAactivationCode_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @IsobusVTMessageTypes.e_SoftKeyActivationReq_KeyAactivationCode.");
+}
+}
+
+boolean e__SoftKeyActivationReq__KeyAactivationCode_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean e__SoftKeyActivationReq__KeyAactivationCode_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 e__SoftKeyActivationReq__KeyAactivationCode_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    e__SoftKeyActivationReq__KeyAactivationCode_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    e__SoftKeyActivationReq__KeyAactivationCode::enum_type enum_val = e__SoftKeyActivationReq__KeyAactivationCode::str_to_enum(m_p->get_enumerated());
+    if (!e__SoftKeyActivationReq__KeyAactivationCode::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @IsobusVTMessageTypes.e_SoftKeyActivationReq_KeyAactivationCode.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@IsobusVTMessageTypes.e_SoftKeyActivationReq_KeyAactivationCode");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void e__SoftKeyActivationReq__KeyAactivationCode_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@IsobusVTMessageTypes.e_SoftKeyActivationReq_KeyAactivationCode");
+}
+
+SoftKeyActivationReq::SoftKeyActivationReq()
+{
+}
+
+SoftKeyActivationReq::SoftKeyActivationReq(const INTEGER& par_vtfunction,
+    const e__SoftKeyActivationReq__KeyAactivationCode& par_keyActivationCode,
+    const INTEGER& par_objectID,
+    const INTEGER& par_parentObjectID,
+    const INTEGER& par_keyNumber,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_keyActivationCode(par_keyActivationCode),
+  field_objectID(par_objectID),
+  field_parentObjectID(par_parentObjectID),
+  field_keyNumber(par_keyNumber),
+  field_reserved8(par_reserved8)
+{
+}
+
+SoftKeyActivationReq::SoftKeyActivationReq(const SoftKeyActivationReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.SoftKeyActivationReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.keyActivationCode().is_bound()) field_keyActivationCode = other_value.keyActivationCode();
+else field_keyActivationCode.clean_up();
+if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+else field_objectID.clean_up();
+if (other_value.parentObjectID().is_bound()) field_parentObjectID = other_value.parentObjectID();
+else field_parentObjectID.clean_up();
+if (other_value.keyNumber().is_bound()) field_keyNumber = other_value.keyNumber();
+else field_keyNumber.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void SoftKeyActivationReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_keyActivationCode.clean_up();
+field_objectID.clean_up();
+field_parentObjectID.clean_up();
+field_keyNumber.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SoftKeyActivationReq::get_descriptor() const { return &SoftKeyActivationReq_descr_; }
+SoftKeyActivationReq& SoftKeyActivationReq::operator=(const SoftKeyActivationReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.SoftKeyActivationReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.keyActivationCode().is_bound()) field_keyActivationCode = other_value.keyActivationCode();
+  else field_keyActivationCode.clean_up();
+  if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+  else field_objectID.clean_up();
+  if (other_value.parentObjectID().is_bound()) field_parentObjectID = other_value.parentObjectID();
+  else field_parentObjectID.clean_up();
+  if (other_value.keyNumber().is_bound()) field_keyNumber = other_value.keyNumber();
+  else field_keyNumber.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean SoftKeyActivationReq::operator==(const SoftKeyActivationReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_keyActivationCode==other_value.field_keyActivationCode
+  && field_objectID==other_value.field_objectID
+  && field_parentObjectID==other_value.field_parentObjectID
+  && field_keyNumber==other_value.field_keyNumber
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean SoftKeyActivationReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_keyActivationCode.is_bound())
+  || (field_objectID.is_bound())
+  || (field_parentObjectID.is_bound())
+  || (field_keyNumber.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean SoftKeyActivationReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_keyActivationCode.is_value()
+  && field_objectID.is_value()
+  && field_parentObjectID.is_value()
+  && field_keyNumber.is_value()
+  && field_reserved8.is_value();
+}
+void SoftKeyActivationReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", keyActivationCode := ");
+field_keyActivationCode.log();
+TTCN_Logger::log_event_str(", objectID := ");
+field_objectID.log();
+TTCN_Logger::log_event_str(", parentObjectID := ");
+field_parentObjectID.log();
+TTCN_Logger::log_event_str(", keyNumber := ");
+field_keyNumber.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SoftKeyActivationReq::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 @IsobusVTMessageTypes.SoftKeyActivationReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) keyActivationCode().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) parentObjectID().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) keyNumber().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "keyActivationCode")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          keyActivationCode().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "parentObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          parentObjectID().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(), "keyNumber")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          keyNumber().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.SoftKeyActivationReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.SoftKeyActivationReq");
+  }
+}
+
+void SoftKeyActivationReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (keyActivationCode().is_bound()) keyActivationCode().set_implicit_omit();
+if (objectID().is_bound()) objectID().set_implicit_omit();
+if (parentObjectID().is_bound()) parentObjectID().set_implicit_omit();
+if (keyNumber().is_bound()) keyNumber().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void SoftKeyActivationReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_keyActivationCode.encode_text(text_buf);
+field_objectID.encode_text(text_buf);
+field_parentObjectID.encode_text(text_buf);
+field_keyNumber.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void SoftKeyActivationReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_keyActivationCode.decode_text(text_buf);
+field_objectID.decode_text(text_buf);
+field_parentObjectID.decode_text(text_buf);
+field_keyNumber.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void SoftKeyActivationReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void SoftKeyActivationReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int SoftKeyActivationReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, e__SoftKeyActivationReq__KeyAactivationCode_descr_.raw->forceomit);
+  decoded_field_length = field_keyActivationCode.RAW_decode(e__SoftKeyActivationReq__KeyAactivationCode_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectID.RAW_decode(ValidObjectID_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_parentObjectID.RAW_decode(ValidObjectID_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, KeyNumberType_descr_.raw->forceomit);
+  decoded_field_length = field_keyNumber.RAW_decode(KeyNumberType_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, SoftKeyActivationReq_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(SoftKeyActivationReq_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int SoftKeyActivationReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, e__SoftKeyActivationReq__KeyAactivationCode_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, KeyNumberType_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, SoftKeyActivationReq_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_keyActivationCode.RAW_encode(e__SoftKeyActivationReq__KeyAactivationCode_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_objectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_parentObjectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_keyNumber.RAW_encode(KeyNumberType_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved8.RAW_encode(SoftKeyActivationReq_reserved8_descr_, *myleaf.body.node.nodes[5]);
+  return myleaf.length = encoded_length;
+}
+
+struct SoftKeyActivationReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+e__SoftKeyActivationReq__KeyAactivationCode_template field_keyActivationCode;
+INTEGER_template field_objectID;
+INTEGER_template field_parentObjectID;
+INTEGER_template field_keyNumber;
+OCTETSTRING_template field_reserved8;
+};
+
+void SoftKeyActivationReq_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_vtfunction = ANY_VALUE;
+single_value->field_keyActivationCode = ANY_VALUE;
+single_value->field_objectID = ANY_VALUE;
+single_value->field_parentObjectID = ANY_VALUE;
+single_value->field_keyNumber = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void SoftKeyActivationReq_template::copy_value(const SoftKeyActivationReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.keyActivationCode().is_bound()) {
+  single_value->field_keyActivationCode = other_value.keyActivationCode();
+} else {
+  single_value->field_keyActivationCode.clean_up();
+}
+if (other_value.objectID().is_bound()) {
+  single_value->field_objectID = other_value.objectID();
+} else {
+  single_value->field_objectID.clean_up();
+}
+if (other_value.parentObjectID().is_bound()) {
+  single_value->field_parentObjectID = other_value.parentObjectID();
+} else {
+  single_value->field_parentObjectID.clean_up();
+}
+if (other_value.keyNumber().is_bound()) {
+  single_value->field_keyNumber = other_value.keyNumber();
+} else {
+  single_value->field_keyNumber.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SoftKeyActivationReq_template::copy_template(const SoftKeyActivationReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.keyActivationCode().get_selection()) {
+single_value->field_keyActivationCode = other_value.keyActivationCode();
+} else {
+single_value->field_keyActivationCode.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectID().get_selection()) {
+single_value->field_objectID = other_value.objectID();
+} else {
+single_value->field_objectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.parentObjectID().get_selection()) {
+single_value->field_parentObjectID = other_value.parentObjectID();
+} else {
+single_value->field_parentObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.keyNumber().get_selection()) {
+single_value->field_keyNumber = other_value.keyNumber();
+} else {
+single_value->field_keyNumber.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SoftKeyActivationReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.SoftKeyActivationReq.");
+break;
+}
+set_selection(other_value);
+}
+
+SoftKeyActivationReq_template::SoftKeyActivationReq_template()
+{
+}
+
+SoftKeyActivationReq_template::SoftKeyActivationReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SoftKeyActivationReq_template::SoftKeyActivationReq_template(const SoftKeyActivationReq& other_value)
+{
+copy_value(other_value);
+}
+
+SoftKeyActivationReq_template::SoftKeyActivationReq_template(const OPTIONAL<SoftKeyActivationReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SoftKeyActivationReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.SoftKeyActivationReq from an unbound optional field.");
+}
+}
+
+SoftKeyActivationReq_template::SoftKeyActivationReq_template(const SoftKeyActivationReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SoftKeyActivationReq_template::~SoftKeyActivationReq_template()
+{
+clean_up();
+}
+
+SoftKeyActivationReq_template& SoftKeyActivationReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SoftKeyActivationReq_template& SoftKeyActivationReq_template::operator=(const SoftKeyActivationReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SoftKeyActivationReq_template& SoftKeyActivationReq_template::operator=(const OPTIONAL<SoftKeyActivationReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SoftKeyActivationReq&)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 @IsobusVTMessageTypes.SoftKeyActivationReq.");
+}
+return *this;
+}
+
+SoftKeyActivationReq_template& SoftKeyActivationReq_template::operator=(const SoftKeyActivationReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SoftKeyActivationReq_template::match(const SoftKeyActivationReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.keyActivationCode().is_bound()) return FALSE;
+if(!single_value->field_keyActivationCode.match(other_value.keyActivationCode(), legacy))return FALSE;
+if(!other_value.objectID().is_bound()) return FALSE;
+if(!single_value->field_objectID.match(other_value.objectID(), legacy))return FALSE;
+if(!other_value.parentObjectID().is_bound()) return FALSE;
+if(!single_value->field_parentObjectID.match(other_value.parentObjectID(), legacy))return FALSE;
+if(!other_value.keyNumber().is_bound()) return FALSE;
+if(!single_value->field_keyNumber.match(other_value.keyNumber(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.SoftKeyActivationReq.");
+}
+return FALSE;
+}
+
+boolean SoftKeyActivationReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_keyActivationCode.is_bound()
+
+ ||single_value->field_objectID.is_bound()
+
+ ||single_value->field_parentObjectID.is_bound()
+
+ ||single_value->field_keyNumber.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean SoftKeyActivationReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_keyActivationCode.is_value()
+ &&single_value->field_objectID.is_value()
+ &&single_value->field_parentObjectID.is_value()
+ &&single_value->field_keyNumber.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void SoftKeyActivationReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SoftKeyActivationReq SoftKeyActivationReq_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 @IsobusVTMessageTypes.SoftKeyActivationReq.");
+SoftKeyActivationReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_keyActivationCode.is_bound()) {
+ret_val.keyActivationCode() = single_value->field_keyActivationCode.valueof();
+}
+if (single_value->field_objectID.is_bound()) {
+ret_val.objectID() = single_value->field_objectID.valueof();
+}
+if (single_value->field_parentObjectID.is_bound()) {
+ret_val.parentObjectID() = single_value->field_parentObjectID.valueof();
+}
+if (single_value->field_keyNumber.is_bound()) {
+ret_val.keyNumber() = single_value->field_keyNumber.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void SoftKeyActivationReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.SoftKeyActivationReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SoftKeyActivationReq_template[list_length];
+}
+
+SoftKeyActivationReq_template& SoftKeyActivationReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.SoftKeyActivationReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.SoftKeyActivationReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& SoftKeyActivationReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& SoftKeyActivationReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.SoftKeyActivationReq.");
+return single_value->field_vtfunction;
+}
+
+e__SoftKeyActivationReq__KeyAactivationCode_template& SoftKeyActivationReq_template::keyActivationCode()
+{
+set_specific();
+return single_value->field_keyActivationCode;
+}
+
+const e__SoftKeyActivationReq__KeyAactivationCode_template& SoftKeyActivationReq_template::keyActivationCode() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field keyActivationCode of a non-specific template of type @IsobusVTMessageTypes.SoftKeyActivationReq.");
+return single_value->field_keyActivationCode;
+}
+
+INTEGER_template& SoftKeyActivationReq_template::objectID()
+{
+set_specific();
+return single_value->field_objectID;
+}
+
+const INTEGER_template& SoftKeyActivationReq_template::objectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectID of a non-specific template of type @IsobusVTMessageTypes.SoftKeyActivationReq.");
+return single_value->field_objectID;
+}
+
+INTEGER_template& SoftKeyActivationReq_template::parentObjectID()
+{
+set_specific();
+return single_value->field_parentObjectID;
+}
+
+const INTEGER_template& SoftKeyActivationReq_template::parentObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field parentObjectID of a non-specific template of type @IsobusVTMessageTypes.SoftKeyActivationReq.");
+return single_value->field_parentObjectID;
+}
+
+INTEGER_template& SoftKeyActivationReq_template::keyNumber()
+{
+set_specific();
+return single_value->field_keyNumber;
+}
+
+const INTEGER_template& SoftKeyActivationReq_template::keyNumber() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field keyNumber of a non-specific template of type @IsobusVTMessageTypes.SoftKeyActivationReq.");
+return single_value->field_keyNumber;
+}
+
+OCTETSTRING_template& SoftKeyActivationReq_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& SoftKeyActivationReq_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.SoftKeyActivationReq.");
+return single_value->field_reserved8;
+}
+
+int SoftKeyActivationReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SoftKeyActivationReq 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 @IsobusVTMessageTypes.SoftKeyActivationReq 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 @IsobusVTMessageTypes.SoftKeyActivationReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SoftKeyActivationReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SoftKeyActivationReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SoftKeyActivationReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.SoftKeyActivationReq.");
+  }
+  return 0;
+}
+
+void SoftKeyActivationReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", keyActivationCode := ");
+single_value->field_keyActivationCode.log();
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log();
+TTCN_Logger::log_event_str(", parentObjectID := ");
+single_value->field_parentObjectID.log();
+TTCN_Logger::log_event_str(", keyNumber := ");
+single_value->field_keyNumber.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SoftKeyActivationReq_template::log_match(const SoftKeyActivationReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_keyActivationCode.match(match_value.keyActivationCode(), legacy)){
+TTCN_Logger::log_logmatch_info(".keyActivationCode");
+single_value->field_keyActivationCode.log_match(match_value.keyActivationCode(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectID.match(match_value.objectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectID");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_parentObjectID.match(match_value.parentObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".parentObjectID");
+single_value->field_parentObjectID.log_match(match_value.parentObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_keyNumber.match(match_value.keyNumber(), legacy)){
+TTCN_Logger::log_logmatch_info(".keyNumber");
+single_value->field_keyNumber.log_match(match_value.keyNumber(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", keyActivationCode := ");
+single_value->field_keyActivationCode.log_match(match_value.keyActivationCode(), legacy);
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::log_event_str(", parentObjectID := ");
+single_value->field_parentObjectID.log_match(match_value.parentObjectID(), legacy);
+TTCN_Logger::log_event_str(", keyNumber := ");
+single_value->field_keyNumber.log_match(match_value.keyNumber(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 SoftKeyActivationReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_keyActivationCode.encode_text(text_buf);
+single_value->field_objectID.encode_text(text_buf);
+single_value->field_parentObjectID.encode_text(text_buf);
+single_value->field_keyNumber.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.SoftKeyActivationReq.");
+}
+}
+
+void SoftKeyActivationReq_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_vtfunction.decode_text(text_buf);
+single_value->field_keyActivationCode.decode_text(text_buf);
+single_value->field_objectID.decode_text(text_buf);
+single_value->field_parentObjectID.decode_text(text_buf);
+single_value->field_keyNumber.decode_text(text_buf);
+single_value->field_reserved8.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 SoftKeyActivationReq_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 @IsobusVTMessageTypes.SoftKeyActivationReq.");
+}
+}
+
+void SoftKeyActivationReq_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: {
+    SoftKeyActivationReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.SoftKeyActivationReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) keyActivationCode().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) parentObjectID().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) keyNumber().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "keyActivationCode")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          keyActivationCode().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "parentObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          parentObjectID().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(), "keyNumber")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          keyNumber().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.SoftKeyActivationReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.SoftKeyActivationReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SoftKeyActivationReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SoftKeyActivationReq");
+single_value->field_keyActivationCode.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SoftKeyActivationReq");
+single_value->field_objectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SoftKeyActivationReq");
+single_value->field_parentObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SoftKeyActivationReq");
+single_value->field_keyNumber.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SoftKeyActivationReq");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SoftKeyActivationReq");
+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 : "@IsobusVTMessageTypes.SoftKeyActivationReq");
+}
+
+boolean SoftKeyActivationReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SoftKeyActivationReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+SoftKeyActivationRes::SoftKeyActivationRes()
+{
+}
+
+SoftKeyActivationRes::SoftKeyActivationRes(const INTEGER& par_vtfunction,
+    const e__SoftKeyActivationReq__KeyAactivationCode& par_keyActivationCode,
+    const INTEGER& par_objectID,
+    const INTEGER& par_parentObjectID,
+    const INTEGER& par_keyNumber,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_keyActivationCode(par_keyActivationCode),
+  field_objectID(par_objectID),
+  field_parentObjectID(par_parentObjectID),
+  field_keyNumber(par_keyNumber),
+  field_reserved8(par_reserved8)
+{
+}
+
+SoftKeyActivationRes::SoftKeyActivationRes(const SoftKeyActivationRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.SoftKeyActivationRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.keyActivationCode().is_bound()) field_keyActivationCode = other_value.keyActivationCode();
+else field_keyActivationCode.clean_up();
+if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+else field_objectID.clean_up();
+if (other_value.parentObjectID().is_bound()) field_parentObjectID = other_value.parentObjectID();
+else field_parentObjectID.clean_up();
+if (other_value.keyNumber().is_bound()) field_keyNumber = other_value.keyNumber();
+else field_keyNumber.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void SoftKeyActivationRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_keyActivationCode.clean_up();
+field_objectID.clean_up();
+field_parentObjectID.clean_up();
+field_keyNumber.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SoftKeyActivationRes::get_descriptor() const { return &SoftKeyActivationRes_descr_; }
+SoftKeyActivationRes& SoftKeyActivationRes::operator=(const SoftKeyActivationRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.SoftKeyActivationRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.keyActivationCode().is_bound()) field_keyActivationCode = other_value.keyActivationCode();
+  else field_keyActivationCode.clean_up();
+  if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+  else field_objectID.clean_up();
+  if (other_value.parentObjectID().is_bound()) field_parentObjectID = other_value.parentObjectID();
+  else field_parentObjectID.clean_up();
+  if (other_value.keyNumber().is_bound()) field_keyNumber = other_value.keyNumber();
+  else field_keyNumber.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean SoftKeyActivationRes::operator==(const SoftKeyActivationRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_keyActivationCode==other_value.field_keyActivationCode
+  && field_objectID==other_value.field_objectID
+  && field_parentObjectID==other_value.field_parentObjectID
+  && field_keyNumber==other_value.field_keyNumber
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean SoftKeyActivationRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_keyActivationCode.is_bound())
+  || (field_objectID.is_bound())
+  || (field_parentObjectID.is_bound())
+  || (field_keyNumber.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean SoftKeyActivationRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_keyActivationCode.is_value()
+  && field_objectID.is_value()
+  && field_parentObjectID.is_value()
+  && field_keyNumber.is_value()
+  && field_reserved8.is_value();
+}
+void SoftKeyActivationRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", keyActivationCode := ");
+field_keyActivationCode.log();
+TTCN_Logger::log_event_str(", objectID := ");
+field_objectID.log();
+TTCN_Logger::log_event_str(", parentObjectID := ");
+field_parentObjectID.log();
+TTCN_Logger::log_event_str(", keyNumber := ");
+field_keyNumber.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SoftKeyActivationRes::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 @IsobusVTMessageTypes.SoftKeyActivationRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) keyActivationCode().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) parentObjectID().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) keyNumber().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "keyActivationCode")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          keyActivationCode().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "parentObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          parentObjectID().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(), "keyNumber")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          keyNumber().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.SoftKeyActivationRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.SoftKeyActivationRes");
+  }
+}
+
+void SoftKeyActivationRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (keyActivationCode().is_bound()) keyActivationCode().set_implicit_omit();
+if (objectID().is_bound()) objectID().set_implicit_omit();
+if (parentObjectID().is_bound()) parentObjectID().set_implicit_omit();
+if (keyNumber().is_bound()) keyNumber().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void SoftKeyActivationRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_keyActivationCode.encode_text(text_buf);
+field_objectID.encode_text(text_buf);
+field_parentObjectID.encode_text(text_buf);
+field_keyNumber.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void SoftKeyActivationRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_keyActivationCode.decode_text(text_buf);
+field_objectID.decode_text(text_buf);
+field_parentObjectID.decode_text(text_buf);
+field_keyNumber.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void SoftKeyActivationRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void SoftKeyActivationRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int SoftKeyActivationRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, e__SoftKeyActivationReq__KeyAactivationCode_descr_.raw->forceomit);
+  decoded_field_length = field_keyActivationCode.RAW_decode(e__SoftKeyActivationReq__KeyAactivationCode_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectID.RAW_decode(ValidObjectID_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_parentObjectID.RAW_decode(ValidObjectID_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, KeyNumberType_descr_.raw->forceomit);
+  decoded_field_length = field_keyNumber.RAW_decode(KeyNumberType_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, SoftKeyActivationRes_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(SoftKeyActivationRes_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int SoftKeyActivationRes::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, e__SoftKeyActivationReq__KeyAactivationCode_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, KeyNumberType_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, SoftKeyActivationRes_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_keyActivationCode.RAW_encode(e__SoftKeyActivationReq__KeyAactivationCode_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_objectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_parentObjectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_keyNumber.RAW_encode(KeyNumberType_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved8.RAW_encode(SoftKeyActivationRes_reserved8_descr_, *myleaf.body.node.nodes[5]);
+  return myleaf.length = encoded_length;
+}
+
+struct SoftKeyActivationRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+e__SoftKeyActivationReq__KeyAactivationCode_template field_keyActivationCode;
+INTEGER_template field_objectID;
+INTEGER_template field_parentObjectID;
+INTEGER_template field_keyNumber;
+OCTETSTRING_template field_reserved8;
+};
+
+void SoftKeyActivationRes_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_vtfunction = ANY_VALUE;
+single_value->field_keyActivationCode = ANY_VALUE;
+single_value->field_objectID = ANY_VALUE;
+single_value->field_parentObjectID = ANY_VALUE;
+single_value->field_keyNumber = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void SoftKeyActivationRes_template::copy_value(const SoftKeyActivationRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.keyActivationCode().is_bound()) {
+  single_value->field_keyActivationCode = other_value.keyActivationCode();
+} else {
+  single_value->field_keyActivationCode.clean_up();
+}
+if (other_value.objectID().is_bound()) {
+  single_value->field_objectID = other_value.objectID();
+} else {
+  single_value->field_objectID.clean_up();
+}
+if (other_value.parentObjectID().is_bound()) {
+  single_value->field_parentObjectID = other_value.parentObjectID();
+} else {
+  single_value->field_parentObjectID.clean_up();
+}
+if (other_value.keyNumber().is_bound()) {
+  single_value->field_keyNumber = other_value.keyNumber();
+} else {
+  single_value->field_keyNumber.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SoftKeyActivationRes_template::copy_template(const SoftKeyActivationRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.keyActivationCode().get_selection()) {
+single_value->field_keyActivationCode = other_value.keyActivationCode();
+} else {
+single_value->field_keyActivationCode.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectID().get_selection()) {
+single_value->field_objectID = other_value.objectID();
+} else {
+single_value->field_objectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.parentObjectID().get_selection()) {
+single_value->field_parentObjectID = other_value.parentObjectID();
+} else {
+single_value->field_parentObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.keyNumber().get_selection()) {
+single_value->field_keyNumber = other_value.keyNumber();
+} else {
+single_value->field_keyNumber.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SoftKeyActivationRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.SoftKeyActivationRes.");
+break;
+}
+set_selection(other_value);
+}
+
+SoftKeyActivationRes_template::SoftKeyActivationRes_template()
+{
+}
+
+SoftKeyActivationRes_template::SoftKeyActivationRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SoftKeyActivationRes_template::SoftKeyActivationRes_template(const SoftKeyActivationRes& other_value)
+{
+copy_value(other_value);
+}
+
+SoftKeyActivationRes_template::SoftKeyActivationRes_template(const OPTIONAL<SoftKeyActivationRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SoftKeyActivationRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.SoftKeyActivationRes from an unbound optional field.");
+}
+}
+
+SoftKeyActivationRes_template::SoftKeyActivationRes_template(const SoftKeyActivationRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SoftKeyActivationRes_template::~SoftKeyActivationRes_template()
+{
+clean_up();
+}
+
+SoftKeyActivationRes_template& SoftKeyActivationRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SoftKeyActivationRes_template& SoftKeyActivationRes_template::operator=(const SoftKeyActivationRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SoftKeyActivationRes_template& SoftKeyActivationRes_template::operator=(const OPTIONAL<SoftKeyActivationRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SoftKeyActivationRes&)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 @IsobusVTMessageTypes.SoftKeyActivationRes.");
+}
+return *this;
+}
+
+SoftKeyActivationRes_template& SoftKeyActivationRes_template::operator=(const SoftKeyActivationRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SoftKeyActivationRes_template::match(const SoftKeyActivationRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.keyActivationCode().is_bound()) return FALSE;
+if(!single_value->field_keyActivationCode.match(other_value.keyActivationCode(), legacy))return FALSE;
+if(!other_value.objectID().is_bound()) return FALSE;
+if(!single_value->field_objectID.match(other_value.objectID(), legacy))return FALSE;
+if(!other_value.parentObjectID().is_bound()) return FALSE;
+if(!single_value->field_parentObjectID.match(other_value.parentObjectID(), legacy))return FALSE;
+if(!other_value.keyNumber().is_bound()) return FALSE;
+if(!single_value->field_keyNumber.match(other_value.keyNumber(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.SoftKeyActivationRes.");
+}
+return FALSE;
+}
+
+boolean SoftKeyActivationRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_keyActivationCode.is_bound()
+
+ ||single_value->field_objectID.is_bound()
+
+ ||single_value->field_parentObjectID.is_bound()
+
+ ||single_value->field_keyNumber.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean SoftKeyActivationRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_keyActivationCode.is_value()
+ &&single_value->field_objectID.is_value()
+ &&single_value->field_parentObjectID.is_value()
+ &&single_value->field_keyNumber.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void SoftKeyActivationRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SoftKeyActivationRes SoftKeyActivationRes_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 @IsobusVTMessageTypes.SoftKeyActivationRes.");
+SoftKeyActivationRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_keyActivationCode.is_bound()) {
+ret_val.keyActivationCode() = single_value->field_keyActivationCode.valueof();
+}
+if (single_value->field_objectID.is_bound()) {
+ret_val.objectID() = single_value->field_objectID.valueof();
+}
+if (single_value->field_parentObjectID.is_bound()) {
+ret_val.parentObjectID() = single_value->field_parentObjectID.valueof();
+}
+if (single_value->field_keyNumber.is_bound()) {
+ret_val.keyNumber() = single_value->field_keyNumber.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void SoftKeyActivationRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.SoftKeyActivationRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SoftKeyActivationRes_template[list_length];
+}
+
+SoftKeyActivationRes_template& SoftKeyActivationRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.SoftKeyActivationRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.SoftKeyActivationRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& SoftKeyActivationRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& SoftKeyActivationRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.SoftKeyActivationRes.");
+return single_value->field_vtfunction;
+}
+
+e__SoftKeyActivationReq__KeyAactivationCode_template& SoftKeyActivationRes_template::keyActivationCode()
+{
+set_specific();
+return single_value->field_keyActivationCode;
+}
+
+const e__SoftKeyActivationReq__KeyAactivationCode_template& SoftKeyActivationRes_template::keyActivationCode() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field keyActivationCode of a non-specific template of type @IsobusVTMessageTypes.SoftKeyActivationRes.");
+return single_value->field_keyActivationCode;
+}
+
+INTEGER_template& SoftKeyActivationRes_template::objectID()
+{
+set_specific();
+return single_value->field_objectID;
+}
+
+const INTEGER_template& SoftKeyActivationRes_template::objectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectID of a non-specific template of type @IsobusVTMessageTypes.SoftKeyActivationRes.");
+return single_value->field_objectID;
+}
+
+INTEGER_template& SoftKeyActivationRes_template::parentObjectID()
+{
+set_specific();
+return single_value->field_parentObjectID;
+}
+
+const INTEGER_template& SoftKeyActivationRes_template::parentObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field parentObjectID of a non-specific template of type @IsobusVTMessageTypes.SoftKeyActivationRes.");
+return single_value->field_parentObjectID;
+}
+
+INTEGER_template& SoftKeyActivationRes_template::keyNumber()
+{
+set_specific();
+return single_value->field_keyNumber;
+}
+
+const INTEGER_template& SoftKeyActivationRes_template::keyNumber() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field keyNumber of a non-specific template of type @IsobusVTMessageTypes.SoftKeyActivationRes.");
+return single_value->field_keyNumber;
+}
+
+OCTETSTRING_template& SoftKeyActivationRes_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& SoftKeyActivationRes_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.SoftKeyActivationRes.");
+return single_value->field_reserved8;
+}
+
+int SoftKeyActivationRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SoftKeyActivationRes 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 @IsobusVTMessageTypes.SoftKeyActivationRes 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 @IsobusVTMessageTypes.SoftKeyActivationRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SoftKeyActivationRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SoftKeyActivationRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SoftKeyActivationRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.SoftKeyActivationRes.");
+  }
+  return 0;
+}
+
+void SoftKeyActivationRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", keyActivationCode := ");
+single_value->field_keyActivationCode.log();
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log();
+TTCN_Logger::log_event_str(", parentObjectID := ");
+single_value->field_parentObjectID.log();
+TTCN_Logger::log_event_str(", keyNumber := ");
+single_value->field_keyNumber.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SoftKeyActivationRes_template::log_match(const SoftKeyActivationRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_keyActivationCode.match(match_value.keyActivationCode(), legacy)){
+TTCN_Logger::log_logmatch_info(".keyActivationCode");
+single_value->field_keyActivationCode.log_match(match_value.keyActivationCode(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectID.match(match_value.objectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectID");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_parentObjectID.match(match_value.parentObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".parentObjectID");
+single_value->field_parentObjectID.log_match(match_value.parentObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_keyNumber.match(match_value.keyNumber(), legacy)){
+TTCN_Logger::log_logmatch_info(".keyNumber");
+single_value->field_keyNumber.log_match(match_value.keyNumber(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", keyActivationCode := ");
+single_value->field_keyActivationCode.log_match(match_value.keyActivationCode(), legacy);
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::log_event_str(", parentObjectID := ");
+single_value->field_parentObjectID.log_match(match_value.parentObjectID(), legacy);
+TTCN_Logger::log_event_str(", keyNumber := ");
+single_value->field_keyNumber.log_match(match_value.keyNumber(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 SoftKeyActivationRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_keyActivationCode.encode_text(text_buf);
+single_value->field_objectID.encode_text(text_buf);
+single_value->field_parentObjectID.encode_text(text_buf);
+single_value->field_keyNumber.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.SoftKeyActivationRes.");
+}
+}
+
+void SoftKeyActivationRes_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_vtfunction.decode_text(text_buf);
+single_value->field_keyActivationCode.decode_text(text_buf);
+single_value->field_objectID.decode_text(text_buf);
+single_value->field_parentObjectID.decode_text(text_buf);
+single_value->field_keyNumber.decode_text(text_buf);
+single_value->field_reserved8.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 SoftKeyActivationRes_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 @IsobusVTMessageTypes.SoftKeyActivationRes.");
+}
+}
+
+void SoftKeyActivationRes_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: {
+    SoftKeyActivationRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.SoftKeyActivationRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) keyActivationCode().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) parentObjectID().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) keyNumber().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "keyActivationCode")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          keyActivationCode().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "parentObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          parentObjectID().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(), "keyNumber")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          keyNumber().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.SoftKeyActivationRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.SoftKeyActivationRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SoftKeyActivationRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SoftKeyActivationRes");
+single_value->field_keyActivationCode.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SoftKeyActivationRes");
+single_value->field_objectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SoftKeyActivationRes");
+single_value->field_parentObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SoftKeyActivationRes");
+single_value->field_keyNumber.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SoftKeyActivationRes");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SoftKeyActivationRes");
+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 : "@IsobusVTMessageTypes.SoftKeyActivationRes");
+}
+
+boolean SoftKeyActivationRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SoftKeyActivationRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+e__ButtonActivationReq__KeyAactivationCode::e__ButtonActivationReq__KeyAactivationCode()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+e__ButtonActivationReq__KeyAactivationCode::e__ButtonActivationReq__KeyAactivationCode(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @IsobusVTMessageTypes.e_ButtonActivationReq_KeyAactivationCode with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+e__ButtonActivationReq__KeyAactivationCode::e__ButtonActivationReq__KeyAactivationCode(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+e__ButtonActivationReq__KeyAactivationCode::e__ButtonActivationReq__KeyAactivationCode(const e__ButtonActivationReq__KeyAactivationCode& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @IsobusVTMessageTypes.e_ButtonActivationReq_KeyAactivationCode.");
+enum_value = other_value.enum_value;
+}
+
+e__ButtonActivationReq__KeyAactivationCode& e__ButtonActivationReq__KeyAactivationCode::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @IsobusVTMessageTypes.e_ButtonActivationReq_KeyAactivationCode.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+e__ButtonActivationReq__KeyAactivationCode& e__ButtonActivationReq__KeyAactivationCode::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+e__ButtonActivationReq__KeyAactivationCode& e__ButtonActivationReq__KeyAactivationCode::operator=(const e__ButtonActivationReq__KeyAactivationCode& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusVTMessageTypes.e_ButtonActivationReq_KeyAactivationCode.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean e__ButtonActivationReq__KeyAactivationCode::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_ButtonActivationReq_KeyAactivationCode.");
+return enum_value == other_value;
+}
+
+boolean e__ButtonActivationReq__KeyAactivationCode::operator==(const e__ButtonActivationReq__KeyAactivationCode& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_ButtonActivationReq_KeyAactivationCode.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_ButtonActivationReq_KeyAactivationCode.");
+return enum_value == other_value.enum_value;
+}
+
+boolean e__ButtonActivationReq__KeyAactivationCode::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_ButtonActivationReq_KeyAactivationCode.");
+return enum_value < other_value;
+}
+
+boolean e__ButtonActivationReq__KeyAactivationCode::operator<(const e__ButtonActivationReq__KeyAactivationCode& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_ButtonActivationReq_KeyAactivationCode.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_ButtonActivationReq_KeyAactivationCode.");
+return enum_value < other_value.enum_value;
+}
+
+boolean e__ButtonActivationReq__KeyAactivationCode::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_ButtonActivationReq_KeyAactivationCode.");
+return enum_value > other_value;
+}
+
+boolean e__ButtonActivationReq__KeyAactivationCode::operator>(const e__ButtonActivationReq__KeyAactivationCode& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_ButtonActivationReq_KeyAactivationCode.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_ButtonActivationReq_KeyAactivationCode.");
+return enum_value > other_value.enum_value;
+}
+
+const char *e__ButtonActivationReq__KeyAactivationCode::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case buttonHasBeenUnlatchedorReleased: return "buttonHasBeenUnlatchedorReleased";
+case buttonHasBeenPressedOrLatched: return "buttonHasBeenPressedOrLatched";
+case buttonIsStillHeld: return "buttonIsStillHeld";
+case buttonPressAborted: return "buttonPressAborted";
+default: return "<unknown>";
+}
+}
+
+e__ButtonActivationReq__KeyAactivationCode::enum_type e__ButtonActivationReq__KeyAactivationCode::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "buttonHasBeenUnlatchedorReleased")) return buttonHasBeenUnlatchedorReleased;
+else if (!strcmp(str_par, "buttonHasBeenPressedOrLatched")) return buttonHasBeenPressedOrLatched;
+else if (!strcmp(str_par, "buttonIsStillHeld")) return buttonIsStillHeld;
+else if (!strcmp(str_par, "buttonPressAborted")) return buttonPressAborted;
+else return UNKNOWN_VALUE;
+}
+
+boolean e__ButtonActivationReq__KeyAactivationCode::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 0:
+case 1:
+case 2:
+case 3:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int e__ButtonActivationReq__KeyAactivationCode::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusVTMessageTypes.e_ButtonActivationReq_KeyAactivationCode.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int e__ButtonActivationReq__KeyAactivationCode::enum2int(const e__ButtonActivationReq__KeyAactivationCode& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusVTMessageTypes.e_ButtonActivationReq_KeyAactivationCode.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void e__ButtonActivationReq__KeyAactivationCode::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @IsobusVTMessageTypes.e_ButtonActivationReq_KeyAactivationCode.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+e__ButtonActivationReq__KeyAactivationCode::operator e__ButtonActivationReq__KeyAactivationCode::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @IsobusVTMessageTypes.e_ButtonActivationReq_KeyAactivationCode.");
+return enum_value;
+}
+
+void e__ButtonActivationReq__KeyAactivationCode::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void e__ButtonActivationReq__KeyAactivationCode::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@IsobusVTMessageTypes.e_ButtonActivationReq_KeyAactivationCode");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @IsobusVTMessageTypes.e_ButtonActivationReq_KeyAactivationCode.");
+  }
+}
+
+void e__ButtonActivationReq__KeyAactivationCode::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @IsobusVTMessageTypes.e_ButtonActivationReq_KeyAactivationCode.");
+text_buf.push_int(enum_value);
+}
+
+void e__ButtonActivationReq__KeyAactivationCode::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @IsobusVTMessageTypes.e_ButtonActivationReq_KeyAactivationCode.", enum_value);
+}
+
+void e__ButtonActivationReq__KeyAactivationCode::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void e__ButtonActivationReq__KeyAactivationCode::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int e__ButtonActivationReq__KeyAactivationCode::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*)
+{
+  int decoded_value = 0;
+  int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 3, no_err);
+  if (decoded_length < 0) return decoded_length;
+  if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value;
+  else {
+    if(no_err){
+     return -1;
+    } else {
+    TTCN_EncDec_ErrorContext::error
+      (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name);
+    enum_value = UNKNOWN_VALUE;
+    }
+  }
+  return decoded_length;
+}
+
+int e__ButtonActivationReq__KeyAactivationCode::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const
+{
+  return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 3);
+}
+
+void e__ButtonActivationReq__KeyAactivationCode_template::copy_template(const e__ButtonActivationReq__KeyAactivationCode_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new e__ButtonActivationReq__KeyAactivationCode_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_ButtonActivationReq_KeyAactivationCode.");
+}
+}
+
+e__ButtonActivationReq__KeyAactivationCode_template::e__ButtonActivationReq__KeyAactivationCode_template()
+{
+}
+
+e__ButtonActivationReq__KeyAactivationCode_template::e__ButtonActivationReq__KeyAactivationCode_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+e__ButtonActivationReq__KeyAactivationCode_template::e__ButtonActivationReq__KeyAactivationCode_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!e__ButtonActivationReq__KeyAactivationCode::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @IsobusVTMessageTypes.e_ButtonActivationReq_KeyAactivationCode with unknown numeric value %d.", other_value);
+single_value = (e__ButtonActivationReq__KeyAactivationCode::enum_type)other_value;
+}
+
+e__ButtonActivationReq__KeyAactivationCode_template::e__ButtonActivationReq__KeyAactivationCode_template(e__ButtonActivationReq__KeyAactivationCode::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+e__ButtonActivationReq__KeyAactivationCode_template::e__ButtonActivationReq__KeyAactivationCode_template(const e__ButtonActivationReq__KeyAactivationCode& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == e__ButtonActivationReq__KeyAactivationCode::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @IsobusVTMessageTypes.e_ButtonActivationReq_KeyAactivationCode.");
+single_value = other_value.enum_value;
+}
+
+e__ButtonActivationReq__KeyAactivationCode_template::e__ButtonActivationReq__KeyAactivationCode_template(const OPTIONAL<e__ButtonActivationReq__KeyAactivationCode>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__ButtonActivationReq__KeyAactivationCode::enum_type)(const e__ButtonActivationReq__KeyAactivationCode&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @IsobusVTMessageTypes.e_ButtonActivationReq_KeyAactivationCode from an unbound optional field.");
+}
+}
+
+e__ButtonActivationReq__KeyAactivationCode_template::e__ButtonActivationReq__KeyAactivationCode_template(const e__ButtonActivationReq__KeyAactivationCode_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+e__ButtonActivationReq__KeyAactivationCode_template::~e__ButtonActivationReq__KeyAactivationCode_template()
+{
+clean_up();
+}
+
+boolean e__ButtonActivationReq__KeyAactivationCode_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean e__ButtonActivationReq__KeyAactivationCode_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != e__ButtonActivationReq__KeyAactivationCode::UNBOUND_VALUE;
+}
+
+void e__ButtonActivationReq__KeyAactivationCode_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+e__ButtonActivationReq__KeyAactivationCode_template& e__ButtonActivationReq__KeyAactivationCode_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+e__ButtonActivationReq__KeyAactivationCode_template& e__ButtonActivationReq__KeyAactivationCode_template::operator=(int other_value)
+{
+if (!e__ButtonActivationReq__KeyAactivationCode::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @IsobusVTMessageTypes.e_ButtonActivationReq_KeyAactivationCode.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (e__ButtonActivationReq__KeyAactivationCode::enum_type)other_value;
+return *this;
+}
+
+e__ButtonActivationReq__KeyAactivationCode_template& e__ButtonActivationReq__KeyAactivationCode_template::operator=(e__ButtonActivationReq__KeyAactivationCode::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+e__ButtonActivationReq__KeyAactivationCode_template& e__ButtonActivationReq__KeyAactivationCode_template::operator=(const e__ButtonActivationReq__KeyAactivationCode& other_value)
+{
+if (other_value.enum_value == e__ButtonActivationReq__KeyAactivationCode::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusVTMessageTypes.e_ButtonActivationReq_KeyAactivationCode to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+e__ButtonActivationReq__KeyAactivationCode_template& e__ButtonActivationReq__KeyAactivationCode_template::operator=(const OPTIONAL<e__ButtonActivationReq__KeyAactivationCode>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__ButtonActivationReq__KeyAactivationCode::enum_type)(const e__ButtonActivationReq__KeyAactivationCode&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @IsobusVTMessageTypes.e_ButtonActivationReq_KeyAactivationCode.");
+}
+return *this;
+}
+
+e__ButtonActivationReq__KeyAactivationCode_template& e__ButtonActivationReq__KeyAactivationCode_template::operator=(const e__ButtonActivationReq__KeyAactivationCode_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean e__ButtonActivationReq__KeyAactivationCode_template::match(e__ButtonActivationReq__KeyAactivationCode::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_ButtonActivationReq_KeyAactivationCode.");
+}
+return FALSE;
+}
+
+boolean e__ButtonActivationReq__KeyAactivationCode_template::match(const e__ButtonActivationReq__KeyAactivationCode& other_value, boolean) const
+{
+if (other_value.enum_value == e__ButtonActivationReq__KeyAactivationCode::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @IsobusVTMessageTypes.e_ButtonActivationReq_KeyAactivationCode with an unbound value.");
+return match(other_value.enum_value);
+}
+
+e__ButtonActivationReq__KeyAactivationCode::enum_type e__ButtonActivationReq__KeyAactivationCode_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @IsobusVTMessageTypes.e_ButtonActivationReq_KeyAactivationCode.");
+return single_value;
+}
+
+void e__ButtonActivationReq__KeyAactivationCode_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @IsobusVTMessageTypes.e_ButtonActivationReq_KeyAactivationCode.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new e__ButtonActivationReq__KeyAactivationCode_template[list_length];
+}
+
+e__ButtonActivationReq__KeyAactivationCode_template& e__ButtonActivationReq__KeyAactivationCode_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @IsobusVTMessageTypes.e_ButtonActivationReq_KeyAactivationCode.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @IsobusVTMessageTypes.e_ButtonActivationReq_KeyAactivationCode.");
+return value_list.list_value[list_index];
+}
+
+void e__ButtonActivationReq__KeyAactivationCode_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(e__ButtonActivationReq__KeyAactivationCode::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void e__ButtonActivationReq__KeyAactivationCode_template::log_match(const e__ButtonActivationReq__KeyAactivationCode& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void e__ButtonActivationReq__KeyAactivationCode_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_ButtonActivationReq_KeyAactivationCode.");
+}
+}
+
+void e__ButtonActivationReq__KeyAactivationCode_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (e__ButtonActivationReq__KeyAactivationCode::enum_type)text_buf.pull_int().get_val();
+if (!e__ButtonActivationReq__KeyAactivationCode::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @IsobusVTMessageTypes.e_ButtonActivationReq_KeyAactivationCode.", single_value);
+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 e__ButtonActivationReq__KeyAactivationCode_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @IsobusVTMessageTypes.e_ButtonActivationReq_KeyAactivationCode.");
+}
+}
+
+boolean e__ButtonActivationReq__KeyAactivationCode_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean e__ButtonActivationReq__KeyAactivationCode_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 e__ButtonActivationReq__KeyAactivationCode_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    e__ButtonActivationReq__KeyAactivationCode_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    e__ButtonActivationReq__KeyAactivationCode::enum_type enum_val = e__ButtonActivationReq__KeyAactivationCode::str_to_enum(m_p->get_enumerated());
+    if (!e__ButtonActivationReq__KeyAactivationCode::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @IsobusVTMessageTypes.e_ButtonActivationReq_KeyAactivationCode.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@IsobusVTMessageTypes.e_ButtonActivationReq_KeyAactivationCode");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void e__ButtonActivationReq__KeyAactivationCode_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@IsobusVTMessageTypes.e_ButtonActivationReq_KeyAactivationCode");
+}
+
+ButtonActivationReq::ButtonActivationReq()
+{
+}
+
+ButtonActivationReq::ButtonActivationReq(const INTEGER& par_vtfunction,
+    const e__ButtonActivationReq__KeyAactivationCode& par_keyAactivationCode,
+    const INTEGER& par_objectID,
+    const INTEGER& par_parentObjectID,
+    const INTEGER& par_buttonKeyCode,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_keyAactivationCode(par_keyAactivationCode),
+  field_objectID(par_objectID),
+  field_parentObjectID(par_parentObjectID),
+  field_buttonKeyCode(par_buttonKeyCode),
+  field_reserved8(par_reserved8)
+{
+}
+
+ButtonActivationReq::ButtonActivationReq(const ButtonActivationReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ButtonActivationReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.keyAactivationCode().is_bound()) field_keyAactivationCode = other_value.keyAactivationCode();
+else field_keyAactivationCode.clean_up();
+if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+else field_objectID.clean_up();
+if (other_value.parentObjectID().is_bound()) field_parentObjectID = other_value.parentObjectID();
+else field_parentObjectID.clean_up();
+if (other_value.buttonKeyCode().is_bound()) field_buttonKeyCode = other_value.buttonKeyCode();
+else field_buttonKeyCode.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void ButtonActivationReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_keyAactivationCode.clean_up();
+field_objectID.clean_up();
+field_parentObjectID.clean_up();
+field_buttonKeyCode.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ButtonActivationReq::get_descriptor() const { return &ButtonActivationReq_descr_; }
+ButtonActivationReq& ButtonActivationReq::operator=(const ButtonActivationReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ButtonActivationReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.keyAactivationCode().is_bound()) field_keyAactivationCode = other_value.keyAactivationCode();
+  else field_keyAactivationCode.clean_up();
+  if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+  else field_objectID.clean_up();
+  if (other_value.parentObjectID().is_bound()) field_parentObjectID = other_value.parentObjectID();
+  else field_parentObjectID.clean_up();
+  if (other_value.buttonKeyCode().is_bound()) field_buttonKeyCode = other_value.buttonKeyCode();
+  else field_buttonKeyCode.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean ButtonActivationReq::operator==(const ButtonActivationReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_keyAactivationCode==other_value.field_keyAactivationCode
+  && field_objectID==other_value.field_objectID
+  && field_parentObjectID==other_value.field_parentObjectID
+  && field_buttonKeyCode==other_value.field_buttonKeyCode
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean ButtonActivationReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_keyAactivationCode.is_bound())
+  || (field_objectID.is_bound())
+  || (field_parentObjectID.is_bound())
+  || (field_buttonKeyCode.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean ButtonActivationReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_keyAactivationCode.is_value()
+  && field_objectID.is_value()
+  && field_parentObjectID.is_value()
+  && field_buttonKeyCode.is_value()
+  && field_reserved8.is_value();
+}
+void ButtonActivationReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", keyAactivationCode := ");
+field_keyAactivationCode.log();
+TTCN_Logger::log_event_str(", objectID := ");
+field_objectID.log();
+TTCN_Logger::log_event_str(", parentObjectID := ");
+field_parentObjectID.log();
+TTCN_Logger::log_event_str(", buttonKeyCode := ");
+field_buttonKeyCode.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ButtonActivationReq::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 @IsobusVTMessageTypes.ButtonActivationReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) keyAactivationCode().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) parentObjectID().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) buttonKeyCode().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "keyAactivationCode")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          keyAactivationCode().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "parentObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          parentObjectID().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(), "buttonKeyCode")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          buttonKeyCode().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ButtonActivationReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ButtonActivationReq");
+  }
+}
+
+void ButtonActivationReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (keyAactivationCode().is_bound()) keyAactivationCode().set_implicit_omit();
+if (objectID().is_bound()) objectID().set_implicit_omit();
+if (parentObjectID().is_bound()) parentObjectID().set_implicit_omit();
+if (buttonKeyCode().is_bound()) buttonKeyCode().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void ButtonActivationReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_keyAactivationCode.encode_text(text_buf);
+field_objectID.encode_text(text_buf);
+field_parentObjectID.encode_text(text_buf);
+field_buttonKeyCode.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void ButtonActivationReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_keyAactivationCode.decode_text(text_buf);
+field_objectID.decode_text(text_buf);
+field_parentObjectID.decode_text(text_buf);
+field_buttonKeyCode.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void ButtonActivationReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ButtonActivationReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ButtonActivationReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, e__ButtonActivationReq__KeyAactivationCode_descr_.raw->forceomit);
+  decoded_field_length = field_keyAactivationCode.RAW_decode(e__ButtonActivationReq__KeyAactivationCode_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectID.RAW_decode(ValidObjectID_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_parentObjectID.RAW_decode(ValidObjectID_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, KeyNumberType_descr_.raw->forceomit);
+  decoded_field_length = field_buttonKeyCode.RAW_decode(KeyNumberType_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, ButtonActivationReq_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(ButtonActivationReq_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ButtonActivationReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, e__ButtonActivationReq__KeyAactivationCode_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, KeyNumberType_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, ButtonActivationReq_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_keyAactivationCode.RAW_encode(e__ButtonActivationReq__KeyAactivationCode_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_objectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_parentObjectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_buttonKeyCode.RAW_encode(KeyNumberType_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved8.RAW_encode(ButtonActivationReq_reserved8_descr_, *myleaf.body.node.nodes[5]);
+  return myleaf.length = encoded_length;
+}
+
+struct ButtonActivationReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+e__ButtonActivationReq__KeyAactivationCode_template field_keyAactivationCode;
+INTEGER_template field_objectID;
+INTEGER_template field_parentObjectID;
+INTEGER_template field_buttonKeyCode;
+OCTETSTRING_template field_reserved8;
+};
+
+void ButtonActivationReq_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_vtfunction = ANY_VALUE;
+single_value->field_keyAactivationCode = ANY_VALUE;
+single_value->field_objectID = ANY_VALUE;
+single_value->field_parentObjectID = ANY_VALUE;
+single_value->field_buttonKeyCode = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void ButtonActivationReq_template::copy_value(const ButtonActivationReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.keyAactivationCode().is_bound()) {
+  single_value->field_keyAactivationCode = other_value.keyAactivationCode();
+} else {
+  single_value->field_keyAactivationCode.clean_up();
+}
+if (other_value.objectID().is_bound()) {
+  single_value->field_objectID = other_value.objectID();
+} else {
+  single_value->field_objectID.clean_up();
+}
+if (other_value.parentObjectID().is_bound()) {
+  single_value->field_parentObjectID = other_value.parentObjectID();
+} else {
+  single_value->field_parentObjectID.clean_up();
+}
+if (other_value.buttonKeyCode().is_bound()) {
+  single_value->field_buttonKeyCode = other_value.buttonKeyCode();
+} else {
+  single_value->field_buttonKeyCode.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ButtonActivationReq_template::copy_template(const ButtonActivationReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.keyAactivationCode().get_selection()) {
+single_value->field_keyAactivationCode = other_value.keyAactivationCode();
+} else {
+single_value->field_keyAactivationCode.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectID().get_selection()) {
+single_value->field_objectID = other_value.objectID();
+} else {
+single_value->field_objectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.parentObjectID().get_selection()) {
+single_value->field_parentObjectID = other_value.parentObjectID();
+} else {
+single_value->field_parentObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.buttonKeyCode().get_selection()) {
+single_value->field_buttonKeyCode = other_value.buttonKeyCode();
+} else {
+single_value->field_buttonKeyCode.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ButtonActivationReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ButtonActivationReq.");
+break;
+}
+set_selection(other_value);
+}
+
+ButtonActivationReq_template::ButtonActivationReq_template()
+{
+}
+
+ButtonActivationReq_template::ButtonActivationReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ButtonActivationReq_template::ButtonActivationReq_template(const ButtonActivationReq& other_value)
+{
+copy_value(other_value);
+}
+
+ButtonActivationReq_template::ButtonActivationReq_template(const OPTIONAL<ButtonActivationReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ButtonActivationReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ButtonActivationReq from an unbound optional field.");
+}
+}
+
+ButtonActivationReq_template::ButtonActivationReq_template(const ButtonActivationReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ButtonActivationReq_template::~ButtonActivationReq_template()
+{
+clean_up();
+}
+
+ButtonActivationReq_template& ButtonActivationReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ButtonActivationReq_template& ButtonActivationReq_template::operator=(const ButtonActivationReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ButtonActivationReq_template& ButtonActivationReq_template::operator=(const OPTIONAL<ButtonActivationReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ButtonActivationReq&)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 @IsobusVTMessageTypes.ButtonActivationReq.");
+}
+return *this;
+}
+
+ButtonActivationReq_template& ButtonActivationReq_template::operator=(const ButtonActivationReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ButtonActivationReq_template::match(const ButtonActivationReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.keyAactivationCode().is_bound()) return FALSE;
+if(!single_value->field_keyAactivationCode.match(other_value.keyAactivationCode(), legacy))return FALSE;
+if(!other_value.objectID().is_bound()) return FALSE;
+if(!single_value->field_objectID.match(other_value.objectID(), legacy))return FALSE;
+if(!other_value.parentObjectID().is_bound()) return FALSE;
+if(!single_value->field_parentObjectID.match(other_value.parentObjectID(), legacy))return FALSE;
+if(!other_value.buttonKeyCode().is_bound()) return FALSE;
+if(!single_value->field_buttonKeyCode.match(other_value.buttonKeyCode(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ButtonActivationReq.");
+}
+return FALSE;
+}
+
+boolean ButtonActivationReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_keyAactivationCode.is_bound()
+
+ ||single_value->field_objectID.is_bound()
+
+ ||single_value->field_parentObjectID.is_bound()
+
+ ||single_value->field_buttonKeyCode.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean ButtonActivationReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_keyAactivationCode.is_value()
+ &&single_value->field_objectID.is_value()
+ &&single_value->field_parentObjectID.is_value()
+ &&single_value->field_buttonKeyCode.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void ButtonActivationReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ButtonActivationReq ButtonActivationReq_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 @IsobusVTMessageTypes.ButtonActivationReq.");
+ButtonActivationReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_keyAactivationCode.is_bound()) {
+ret_val.keyAactivationCode() = single_value->field_keyAactivationCode.valueof();
+}
+if (single_value->field_objectID.is_bound()) {
+ret_val.objectID() = single_value->field_objectID.valueof();
+}
+if (single_value->field_parentObjectID.is_bound()) {
+ret_val.parentObjectID() = single_value->field_parentObjectID.valueof();
+}
+if (single_value->field_buttonKeyCode.is_bound()) {
+ret_val.buttonKeyCode() = single_value->field_buttonKeyCode.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void ButtonActivationReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ButtonActivationReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ButtonActivationReq_template[list_length];
+}
+
+ButtonActivationReq_template& ButtonActivationReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ButtonActivationReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ButtonActivationReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ButtonActivationReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ButtonActivationReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ButtonActivationReq.");
+return single_value->field_vtfunction;
+}
+
+e__ButtonActivationReq__KeyAactivationCode_template& ButtonActivationReq_template::keyAactivationCode()
+{
+set_specific();
+return single_value->field_keyAactivationCode;
+}
+
+const e__ButtonActivationReq__KeyAactivationCode_template& ButtonActivationReq_template::keyAactivationCode() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field keyAactivationCode of a non-specific template of type @IsobusVTMessageTypes.ButtonActivationReq.");
+return single_value->field_keyAactivationCode;
+}
+
+INTEGER_template& ButtonActivationReq_template::objectID()
+{
+set_specific();
+return single_value->field_objectID;
+}
+
+const INTEGER_template& ButtonActivationReq_template::objectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectID of a non-specific template of type @IsobusVTMessageTypes.ButtonActivationReq.");
+return single_value->field_objectID;
+}
+
+INTEGER_template& ButtonActivationReq_template::parentObjectID()
+{
+set_specific();
+return single_value->field_parentObjectID;
+}
+
+const INTEGER_template& ButtonActivationReq_template::parentObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field parentObjectID of a non-specific template of type @IsobusVTMessageTypes.ButtonActivationReq.");
+return single_value->field_parentObjectID;
+}
+
+INTEGER_template& ButtonActivationReq_template::buttonKeyCode()
+{
+set_specific();
+return single_value->field_buttonKeyCode;
+}
+
+const INTEGER_template& ButtonActivationReq_template::buttonKeyCode() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field buttonKeyCode of a non-specific template of type @IsobusVTMessageTypes.ButtonActivationReq.");
+return single_value->field_buttonKeyCode;
+}
+
+OCTETSTRING_template& ButtonActivationReq_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& ButtonActivationReq_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.ButtonActivationReq.");
+return single_value->field_reserved8;
+}
+
+int ButtonActivationReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ButtonActivationReq 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 @IsobusVTMessageTypes.ButtonActivationReq 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 @IsobusVTMessageTypes.ButtonActivationReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ButtonActivationReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ButtonActivationReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ButtonActivationReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ButtonActivationReq.");
+  }
+  return 0;
+}
+
+void ButtonActivationReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", keyAactivationCode := ");
+single_value->field_keyAactivationCode.log();
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log();
+TTCN_Logger::log_event_str(", parentObjectID := ");
+single_value->field_parentObjectID.log();
+TTCN_Logger::log_event_str(", buttonKeyCode := ");
+single_value->field_buttonKeyCode.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ButtonActivationReq_template::log_match(const ButtonActivationReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_keyAactivationCode.match(match_value.keyAactivationCode(), legacy)){
+TTCN_Logger::log_logmatch_info(".keyAactivationCode");
+single_value->field_keyAactivationCode.log_match(match_value.keyAactivationCode(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectID.match(match_value.objectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectID");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_parentObjectID.match(match_value.parentObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".parentObjectID");
+single_value->field_parentObjectID.log_match(match_value.parentObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_buttonKeyCode.match(match_value.buttonKeyCode(), legacy)){
+TTCN_Logger::log_logmatch_info(".buttonKeyCode");
+single_value->field_buttonKeyCode.log_match(match_value.buttonKeyCode(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", keyAactivationCode := ");
+single_value->field_keyAactivationCode.log_match(match_value.keyAactivationCode(), legacy);
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::log_event_str(", parentObjectID := ");
+single_value->field_parentObjectID.log_match(match_value.parentObjectID(), legacy);
+TTCN_Logger::log_event_str(", buttonKeyCode := ");
+single_value->field_buttonKeyCode.log_match(match_value.buttonKeyCode(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 ButtonActivationReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_keyAactivationCode.encode_text(text_buf);
+single_value->field_objectID.encode_text(text_buf);
+single_value->field_parentObjectID.encode_text(text_buf);
+single_value->field_buttonKeyCode.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.ButtonActivationReq.");
+}
+}
+
+void ButtonActivationReq_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_vtfunction.decode_text(text_buf);
+single_value->field_keyAactivationCode.decode_text(text_buf);
+single_value->field_objectID.decode_text(text_buf);
+single_value->field_parentObjectID.decode_text(text_buf);
+single_value->field_buttonKeyCode.decode_text(text_buf);
+single_value->field_reserved8.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 ButtonActivationReq_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 @IsobusVTMessageTypes.ButtonActivationReq.");
+}
+}
+
+void ButtonActivationReq_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: {
+    ButtonActivationReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.ButtonActivationReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) keyAactivationCode().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) parentObjectID().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) buttonKeyCode().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "keyAactivationCode")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          keyAactivationCode().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "parentObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          parentObjectID().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(), "buttonKeyCode")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          buttonKeyCode().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ButtonActivationReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ButtonActivationReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ButtonActivationReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ButtonActivationReq");
+single_value->field_keyAactivationCode.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ButtonActivationReq");
+single_value->field_objectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ButtonActivationReq");
+single_value->field_parentObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ButtonActivationReq");
+single_value->field_buttonKeyCode.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ButtonActivationReq");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ButtonActivationReq");
+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 : "@IsobusVTMessageTypes.ButtonActivationReq");
+}
+
+boolean ButtonActivationReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ButtonActivationReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+e__ButtonActivationRes__KeyAactivationCode::e__ButtonActivationRes__KeyAactivationCode()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+e__ButtonActivationRes__KeyAactivationCode::e__ButtonActivationRes__KeyAactivationCode(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @IsobusVTMessageTypes.e_ButtonActivationRes_KeyAactivationCode with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+e__ButtonActivationRes__KeyAactivationCode::e__ButtonActivationRes__KeyAactivationCode(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+e__ButtonActivationRes__KeyAactivationCode::e__ButtonActivationRes__KeyAactivationCode(const e__ButtonActivationRes__KeyAactivationCode& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @IsobusVTMessageTypes.e_ButtonActivationRes_KeyAactivationCode.");
+enum_value = other_value.enum_value;
+}
+
+e__ButtonActivationRes__KeyAactivationCode& e__ButtonActivationRes__KeyAactivationCode::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @IsobusVTMessageTypes.e_ButtonActivationRes_KeyAactivationCode.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+e__ButtonActivationRes__KeyAactivationCode& e__ButtonActivationRes__KeyAactivationCode::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+e__ButtonActivationRes__KeyAactivationCode& e__ButtonActivationRes__KeyAactivationCode::operator=(const e__ButtonActivationRes__KeyAactivationCode& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusVTMessageTypes.e_ButtonActivationRes_KeyAactivationCode.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean e__ButtonActivationRes__KeyAactivationCode::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_ButtonActivationRes_KeyAactivationCode.");
+return enum_value == other_value;
+}
+
+boolean e__ButtonActivationRes__KeyAactivationCode::operator==(const e__ButtonActivationRes__KeyAactivationCode& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_ButtonActivationRes_KeyAactivationCode.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_ButtonActivationRes_KeyAactivationCode.");
+return enum_value == other_value.enum_value;
+}
+
+boolean e__ButtonActivationRes__KeyAactivationCode::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_ButtonActivationRes_KeyAactivationCode.");
+return enum_value < other_value;
+}
+
+boolean e__ButtonActivationRes__KeyAactivationCode::operator<(const e__ButtonActivationRes__KeyAactivationCode& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_ButtonActivationRes_KeyAactivationCode.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_ButtonActivationRes_KeyAactivationCode.");
+return enum_value < other_value.enum_value;
+}
+
+boolean e__ButtonActivationRes__KeyAactivationCode::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_ButtonActivationRes_KeyAactivationCode.");
+return enum_value > other_value;
+}
+
+boolean e__ButtonActivationRes__KeyAactivationCode::operator>(const e__ButtonActivationRes__KeyAactivationCode& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_ButtonActivationRes_KeyAactivationCode.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_ButtonActivationRes_KeyAactivationCode.");
+return enum_value > other_value.enum_value;
+}
+
+const char *e__ButtonActivationRes__KeyAactivationCode::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case buttonHasBeenUnlatchedorReleased: return "buttonHasBeenUnlatchedorReleased";
+case buttonHasBeenPressedOrLatched: return "buttonHasBeenPressedOrLatched";
+case buttonIsStillHeld: return "buttonIsStillHeld";
+case buttonPressAborted: return "buttonPressAborted";
+default: return "<unknown>";
+}
+}
+
+e__ButtonActivationRes__KeyAactivationCode::enum_type e__ButtonActivationRes__KeyAactivationCode::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "buttonHasBeenUnlatchedorReleased")) return buttonHasBeenUnlatchedorReleased;
+else if (!strcmp(str_par, "buttonHasBeenPressedOrLatched")) return buttonHasBeenPressedOrLatched;
+else if (!strcmp(str_par, "buttonIsStillHeld")) return buttonIsStillHeld;
+else if (!strcmp(str_par, "buttonPressAborted")) return buttonPressAborted;
+else return UNKNOWN_VALUE;
+}
+
+boolean e__ButtonActivationRes__KeyAactivationCode::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 0:
+case 1:
+case 2:
+case 3:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int e__ButtonActivationRes__KeyAactivationCode::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusVTMessageTypes.e_ButtonActivationRes_KeyAactivationCode.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int e__ButtonActivationRes__KeyAactivationCode::enum2int(const e__ButtonActivationRes__KeyAactivationCode& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusVTMessageTypes.e_ButtonActivationRes_KeyAactivationCode.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void e__ButtonActivationRes__KeyAactivationCode::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @IsobusVTMessageTypes.e_ButtonActivationRes_KeyAactivationCode.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+e__ButtonActivationRes__KeyAactivationCode::operator e__ButtonActivationRes__KeyAactivationCode::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @IsobusVTMessageTypes.e_ButtonActivationRes_KeyAactivationCode.");
+return enum_value;
+}
+
+void e__ButtonActivationRes__KeyAactivationCode::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void e__ButtonActivationRes__KeyAactivationCode::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@IsobusVTMessageTypes.e_ButtonActivationRes_KeyAactivationCode");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @IsobusVTMessageTypes.e_ButtonActivationRes_KeyAactivationCode.");
+  }
+}
+
+void e__ButtonActivationRes__KeyAactivationCode::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @IsobusVTMessageTypes.e_ButtonActivationRes_KeyAactivationCode.");
+text_buf.push_int(enum_value);
+}
+
+void e__ButtonActivationRes__KeyAactivationCode::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @IsobusVTMessageTypes.e_ButtonActivationRes_KeyAactivationCode.", enum_value);
+}
+
+void e__ButtonActivationRes__KeyAactivationCode::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void e__ButtonActivationRes__KeyAactivationCode::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int e__ButtonActivationRes__KeyAactivationCode::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*)
+{
+  int decoded_value = 0;
+  int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 3, no_err);
+  if (decoded_length < 0) return decoded_length;
+  if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value;
+  else {
+    if(no_err){
+     return -1;
+    } else {
+    TTCN_EncDec_ErrorContext::error
+      (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name);
+    enum_value = UNKNOWN_VALUE;
+    }
+  }
+  return decoded_length;
+}
+
+int e__ButtonActivationRes__KeyAactivationCode::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const
+{
+  return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 3);
+}
+
+void e__ButtonActivationRes__KeyAactivationCode_template::copy_template(const e__ButtonActivationRes__KeyAactivationCode_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new e__ButtonActivationRes__KeyAactivationCode_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_ButtonActivationRes_KeyAactivationCode.");
+}
+}
+
+e__ButtonActivationRes__KeyAactivationCode_template::e__ButtonActivationRes__KeyAactivationCode_template()
+{
+}
+
+e__ButtonActivationRes__KeyAactivationCode_template::e__ButtonActivationRes__KeyAactivationCode_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+e__ButtonActivationRes__KeyAactivationCode_template::e__ButtonActivationRes__KeyAactivationCode_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!e__ButtonActivationRes__KeyAactivationCode::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @IsobusVTMessageTypes.e_ButtonActivationRes_KeyAactivationCode with unknown numeric value %d.", other_value);
+single_value = (e__ButtonActivationRes__KeyAactivationCode::enum_type)other_value;
+}
+
+e__ButtonActivationRes__KeyAactivationCode_template::e__ButtonActivationRes__KeyAactivationCode_template(e__ButtonActivationRes__KeyAactivationCode::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+e__ButtonActivationRes__KeyAactivationCode_template::e__ButtonActivationRes__KeyAactivationCode_template(const e__ButtonActivationRes__KeyAactivationCode& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == e__ButtonActivationRes__KeyAactivationCode::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @IsobusVTMessageTypes.e_ButtonActivationRes_KeyAactivationCode.");
+single_value = other_value.enum_value;
+}
+
+e__ButtonActivationRes__KeyAactivationCode_template::e__ButtonActivationRes__KeyAactivationCode_template(const OPTIONAL<e__ButtonActivationRes__KeyAactivationCode>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__ButtonActivationRes__KeyAactivationCode::enum_type)(const e__ButtonActivationRes__KeyAactivationCode&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @IsobusVTMessageTypes.e_ButtonActivationRes_KeyAactivationCode from an unbound optional field.");
+}
+}
+
+e__ButtonActivationRes__KeyAactivationCode_template::e__ButtonActivationRes__KeyAactivationCode_template(const e__ButtonActivationRes__KeyAactivationCode_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+e__ButtonActivationRes__KeyAactivationCode_template::~e__ButtonActivationRes__KeyAactivationCode_template()
+{
+clean_up();
+}
+
+boolean e__ButtonActivationRes__KeyAactivationCode_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean e__ButtonActivationRes__KeyAactivationCode_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != e__ButtonActivationRes__KeyAactivationCode::UNBOUND_VALUE;
+}
+
+void e__ButtonActivationRes__KeyAactivationCode_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+e__ButtonActivationRes__KeyAactivationCode_template& e__ButtonActivationRes__KeyAactivationCode_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+e__ButtonActivationRes__KeyAactivationCode_template& e__ButtonActivationRes__KeyAactivationCode_template::operator=(int other_value)
+{
+if (!e__ButtonActivationRes__KeyAactivationCode::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @IsobusVTMessageTypes.e_ButtonActivationRes_KeyAactivationCode.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (e__ButtonActivationRes__KeyAactivationCode::enum_type)other_value;
+return *this;
+}
+
+e__ButtonActivationRes__KeyAactivationCode_template& e__ButtonActivationRes__KeyAactivationCode_template::operator=(e__ButtonActivationRes__KeyAactivationCode::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+e__ButtonActivationRes__KeyAactivationCode_template& e__ButtonActivationRes__KeyAactivationCode_template::operator=(const e__ButtonActivationRes__KeyAactivationCode& other_value)
+{
+if (other_value.enum_value == e__ButtonActivationRes__KeyAactivationCode::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusVTMessageTypes.e_ButtonActivationRes_KeyAactivationCode to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+e__ButtonActivationRes__KeyAactivationCode_template& e__ButtonActivationRes__KeyAactivationCode_template::operator=(const OPTIONAL<e__ButtonActivationRes__KeyAactivationCode>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__ButtonActivationRes__KeyAactivationCode::enum_type)(const e__ButtonActivationRes__KeyAactivationCode&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @IsobusVTMessageTypes.e_ButtonActivationRes_KeyAactivationCode.");
+}
+return *this;
+}
+
+e__ButtonActivationRes__KeyAactivationCode_template& e__ButtonActivationRes__KeyAactivationCode_template::operator=(const e__ButtonActivationRes__KeyAactivationCode_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean e__ButtonActivationRes__KeyAactivationCode_template::match(e__ButtonActivationRes__KeyAactivationCode::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_ButtonActivationRes_KeyAactivationCode.");
+}
+return FALSE;
+}
+
+boolean e__ButtonActivationRes__KeyAactivationCode_template::match(const e__ButtonActivationRes__KeyAactivationCode& other_value, boolean) const
+{
+if (other_value.enum_value == e__ButtonActivationRes__KeyAactivationCode::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @IsobusVTMessageTypes.e_ButtonActivationRes_KeyAactivationCode with an unbound value.");
+return match(other_value.enum_value);
+}
+
+e__ButtonActivationRes__KeyAactivationCode::enum_type e__ButtonActivationRes__KeyAactivationCode_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @IsobusVTMessageTypes.e_ButtonActivationRes_KeyAactivationCode.");
+return single_value;
+}
+
+void e__ButtonActivationRes__KeyAactivationCode_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @IsobusVTMessageTypes.e_ButtonActivationRes_KeyAactivationCode.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new e__ButtonActivationRes__KeyAactivationCode_template[list_length];
+}
+
+e__ButtonActivationRes__KeyAactivationCode_template& e__ButtonActivationRes__KeyAactivationCode_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @IsobusVTMessageTypes.e_ButtonActivationRes_KeyAactivationCode.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @IsobusVTMessageTypes.e_ButtonActivationRes_KeyAactivationCode.");
+return value_list.list_value[list_index];
+}
+
+void e__ButtonActivationRes__KeyAactivationCode_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(e__ButtonActivationRes__KeyAactivationCode::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void e__ButtonActivationRes__KeyAactivationCode_template::log_match(const e__ButtonActivationRes__KeyAactivationCode& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void e__ButtonActivationRes__KeyAactivationCode_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_ButtonActivationRes_KeyAactivationCode.");
+}
+}
+
+void e__ButtonActivationRes__KeyAactivationCode_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (e__ButtonActivationRes__KeyAactivationCode::enum_type)text_buf.pull_int().get_val();
+if (!e__ButtonActivationRes__KeyAactivationCode::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @IsobusVTMessageTypes.e_ButtonActivationRes_KeyAactivationCode.", single_value);
+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 e__ButtonActivationRes__KeyAactivationCode_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @IsobusVTMessageTypes.e_ButtonActivationRes_KeyAactivationCode.");
+}
+}
+
+boolean e__ButtonActivationRes__KeyAactivationCode_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean e__ButtonActivationRes__KeyAactivationCode_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 e__ButtonActivationRes__KeyAactivationCode_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    e__ButtonActivationRes__KeyAactivationCode_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    e__ButtonActivationRes__KeyAactivationCode::enum_type enum_val = e__ButtonActivationRes__KeyAactivationCode::str_to_enum(m_p->get_enumerated());
+    if (!e__ButtonActivationRes__KeyAactivationCode::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @IsobusVTMessageTypes.e_ButtonActivationRes_KeyAactivationCode.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@IsobusVTMessageTypes.e_ButtonActivationRes_KeyAactivationCode");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void e__ButtonActivationRes__KeyAactivationCode_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@IsobusVTMessageTypes.e_ButtonActivationRes_KeyAactivationCode");
+}
+
+ButtonActivationRes::ButtonActivationRes()
+{
+}
+
+ButtonActivationRes::ButtonActivationRes(const INTEGER& par_vtfunction,
+    const e__ButtonActivationRes__KeyAactivationCode& par_keyAactivationCode,
+    const INTEGER& par_objectID,
+    const INTEGER& par_parentObjectID,
+    const INTEGER& par_buttonKeyCode,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_keyAactivationCode(par_keyAactivationCode),
+  field_objectID(par_objectID),
+  field_parentObjectID(par_parentObjectID),
+  field_buttonKeyCode(par_buttonKeyCode),
+  field_reserved8(par_reserved8)
+{
+}
+
+ButtonActivationRes::ButtonActivationRes(const ButtonActivationRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ButtonActivationRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.keyAactivationCode().is_bound()) field_keyAactivationCode = other_value.keyAactivationCode();
+else field_keyAactivationCode.clean_up();
+if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+else field_objectID.clean_up();
+if (other_value.parentObjectID().is_bound()) field_parentObjectID = other_value.parentObjectID();
+else field_parentObjectID.clean_up();
+if (other_value.buttonKeyCode().is_bound()) field_buttonKeyCode = other_value.buttonKeyCode();
+else field_buttonKeyCode.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void ButtonActivationRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_keyAactivationCode.clean_up();
+field_objectID.clean_up();
+field_parentObjectID.clean_up();
+field_buttonKeyCode.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ButtonActivationRes::get_descriptor() const { return &ButtonActivationRes_descr_; }
+ButtonActivationRes& ButtonActivationRes::operator=(const ButtonActivationRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ButtonActivationRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.keyAactivationCode().is_bound()) field_keyAactivationCode = other_value.keyAactivationCode();
+  else field_keyAactivationCode.clean_up();
+  if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+  else field_objectID.clean_up();
+  if (other_value.parentObjectID().is_bound()) field_parentObjectID = other_value.parentObjectID();
+  else field_parentObjectID.clean_up();
+  if (other_value.buttonKeyCode().is_bound()) field_buttonKeyCode = other_value.buttonKeyCode();
+  else field_buttonKeyCode.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean ButtonActivationRes::operator==(const ButtonActivationRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_keyAactivationCode==other_value.field_keyAactivationCode
+  && field_objectID==other_value.field_objectID
+  && field_parentObjectID==other_value.field_parentObjectID
+  && field_buttonKeyCode==other_value.field_buttonKeyCode
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean ButtonActivationRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_keyAactivationCode.is_bound())
+  || (field_objectID.is_bound())
+  || (field_parentObjectID.is_bound())
+  || (field_buttonKeyCode.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean ButtonActivationRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_keyAactivationCode.is_value()
+  && field_objectID.is_value()
+  && field_parentObjectID.is_value()
+  && field_buttonKeyCode.is_value()
+  && field_reserved8.is_value();
+}
+void ButtonActivationRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", keyAactivationCode := ");
+field_keyAactivationCode.log();
+TTCN_Logger::log_event_str(", objectID := ");
+field_objectID.log();
+TTCN_Logger::log_event_str(", parentObjectID := ");
+field_parentObjectID.log();
+TTCN_Logger::log_event_str(", buttonKeyCode := ");
+field_buttonKeyCode.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ButtonActivationRes::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 @IsobusVTMessageTypes.ButtonActivationRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) keyAactivationCode().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) parentObjectID().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) buttonKeyCode().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "keyAactivationCode")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          keyAactivationCode().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "parentObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          parentObjectID().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(), "buttonKeyCode")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          buttonKeyCode().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ButtonActivationRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ButtonActivationRes");
+  }
+}
+
+void ButtonActivationRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (keyAactivationCode().is_bound()) keyAactivationCode().set_implicit_omit();
+if (objectID().is_bound()) objectID().set_implicit_omit();
+if (parentObjectID().is_bound()) parentObjectID().set_implicit_omit();
+if (buttonKeyCode().is_bound()) buttonKeyCode().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void ButtonActivationRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_keyAactivationCode.encode_text(text_buf);
+field_objectID.encode_text(text_buf);
+field_parentObjectID.encode_text(text_buf);
+field_buttonKeyCode.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void ButtonActivationRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_keyAactivationCode.decode_text(text_buf);
+field_objectID.decode_text(text_buf);
+field_parentObjectID.decode_text(text_buf);
+field_buttonKeyCode.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void ButtonActivationRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ButtonActivationRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ButtonActivationRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, e__ButtonActivationRes__KeyAactivationCode_descr_.raw->forceomit);
+  decoded_field_length = field_keyAactivationCode.RAW_decode(e__ButtonActivationRes__KeyAactivationCode_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectID.RAW_decode(ValidObjectID_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_parentObjectID.RAW_decode(ValidObjectID_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, KeyNumberType_descr_.raw->forceomit);
+  decoded_field_length = field_buttonKeyCode.RAW_decode(KeyNumberType_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, ButtonActivationRes_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(ButtonActivationRes_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ButtonActivationRes::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, e__ButtonActivationRes__KeyAactivationCode_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, KeyNumberType_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, ButtonActivationRes_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_keyAactivationCode.RAW_encode(e__ButtonActivationRes__KeyAactivationCode_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_objectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_parentObjectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_buttonKeyCode.RAW_encode(KeyNumberType_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved8.RAW_encode(ButtonActivationRes_reserved8_descr_, *myleaf.body.node.nodes[5]);
+  return myleaf.length = encoded_length;
+}
+
+struct ButtonActivationRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+e__ButtonActivationRes__KeyAactivationCode_template field_keyAactivationCode;
+INTEGER_template field_objectID;
+INTEGER_template field_parentObjectID;
+INTEGER_template field_buttonKeyCode;
+OCTETSTRING_template field_reserved8;
+};
+
+void ButtonActivationRes_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_vtfunction = ANY_VALUE;
+single_value->field_keyAactivationCode = ANY_VALUE;
+single_value->field_objectID = ANY_VALUE;
+single_value->field_parentObjectID = ANY_VALUE;
+single_value->field_buttonKeyCode = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void ButtonActivationRes_template::copy_value(const ButtonActivationRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.keyAactivationCode().is_bound()) {
+  single_value->field_keyAactivationCode = other_value.keyAactivationCode();
+} else {
+  single_value->field_keyAactivationCode.clean_up();
+}
+if (other_value.objectID().is_bound()) {
+  single_value->field_objectID = other_value.objectID();
+} else {
+  single_value->field_objectID.clean_up();
+}
+if (other_value.parentObjectID().is_bound()) {
+  single_value->field_parentObjectID = other_value.parentObjectID();
+} else {
+  single_value->field_parentObjectID.clean_up();
+}
+if (other_value.buttonKeyCode().is_bound()) {
+  single_value->field_buttonKeyCode = other_value.buttonKeyCode();
+} else {
+  single_value->field_buttonKeyCode.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ButtonActivationRes_template::copy_template(const ButtonActivationRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.keyAactivationCode().get_selection()) {
+single_value->field_keyAactivationCode = other_value.keyAactivationCode();
+} else {
+single_value->field_keyAactivationCode.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectID().get_selection()) {
+single_value->field_objectID = other_value.objectID();
+} else {
+single_value->field_objectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.parentObjectID().get_selection()) {
+single_value->field_parentObjectID = other_value.parentObjectID();
+} else {
+single_value->field_parentObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.buttonKeyCode().get_selection()) {
+single_value->field_buttonKeyCode = other_value.buttonKeyCode();
+} else {
+single_value->field_buttonKeyCode.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ButtonActivationRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ButtonActivationRes.");
+break;
+}
+set_selection(other_value);
+}
+
+ButtonActivationRes_template::ButtonActivationRes_template()
+{
+}
+
+ButtonActivationRes_template::ButtonActivationRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ButtonActivationRes_template::ButtonActivationRes_template(const ButtonActivationRes& other_value)
+{
+copy_value(other_value);
+}
+
+ButtonActivationRes_template::ButtonActivationRes_template(const OPTIONAL<ButtonActivationRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ButtonActivationRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ButtonActivationRes from an unbound optional field.");
+}
+}
+
+ButtonActivationRes_template::ButtonActivationRes_template(const ButtonActivationRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ButtonActivationRes_template::~ButtonActivationRes_template()
+{
+clean_up();
+}
+
+ButtonActivationRes_template& ButtonActivationRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ButtonActivationRes_template& ButtonActivationRes_template::operator=(const ButtonActivationRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ButtonActivationRes_template& ButtonActivationRes_template::operator=(const OPTIONAL<ButtonActivationRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ButtonActivationRes&)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 @IsobusVTMessageTypes.ButtonActivationRes.");
+}
+return *this;
+}
+
+ButtonActivationRes_template& ButtonActivationRes_template::operator=(const ButtonActivationRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ButtonActivationRes_template::match(const ButtonActivationRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.keyAactivationCode().is_bound()) return FALSE;
+if(!single_value->field_keyAactivationCode.match(other_value.keyAactivationCode(), legacy))return FALSE;
+if(!other_value.objectID().is_bound()) return FALSE;
+if(!single_value->field_objectID.match(other_value.objectID(), legacy))return FALSE;
+if(!other_value.parentObjectID().is_bound()) return FALSE;
+if(!single_value->field_parentObjectID.match(other_value.parentObjectID(), legacy))return FALSE;
+if(!other_value.buttonKeyCode().is_bound()) return FALSE;
+if(!single_value->field_buttonKeyCode.match(other_value.buttonKeyCode(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ButtonActivationRes.");
+}
+return FALSE;
+}
+
+boolean ButtonActivationRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_keyAactivationCode.is_bound()
+
+ ||single_value->field_objectID.is_bound()
+
+ ||single_value->field_parentObjectID.is_bound()
+
+ ||single_value->field_buttonKeyCode.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean ButtonActivationRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_keyAactivationCode.is_value()
+ &&single_value->field_objectID.is_value()
+ &&single_value->field_parentObjectID.is_value()
+ &&single_value->field_buttonKeyCode.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void ButtonActivationRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ButtonActivationRes ButtonActivationRes_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 @IsobusVTMessageTypes.ButtonActivationRes.");
+ButtonActivationRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_keyAactivationCode.is_bound()) {
+ret_val.keyAactivationCode() = single_value->field_keyAactivationCode.valueof();
+}
+if (single_value->field_objectID.is_bound()) {
+ret_val.objectID() = single_value->field_objectID.valueof();
+}
+if (single_value->field_parentObjectID.is_bound()) {
+ret_val.parentObjectID() = single_value->field_parentObjectID.valueof();
+}
+if (single_value->field_buttonKeyCode.is_bound()) {
+ret_val.buttonKeyCode() = single_value->field_buttonKeyCode.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void ButtonActivationRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ButtonActivationRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ButtonActivationRes_template[list_length];
+}
+
+ButtonActivationRes_template& ButtonActivationRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ButtonActivationRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ButtonActivationRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ButtonActivationRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ButtonActivationRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ButtonActivationRes.");
+return single_value->field_vtfunction;
+}
+
+e__ButtonActivationRes__KeyAactivationCode_template& ButtonActivationRes_template::keyAactivationCode()
+{
+set_specific();
+return single_value->field_keyAactivationCode;
+}
+
+const e__ButtonActivationRes__KeyAactivationCode_template& ButtonActivationRes_template::keyAactivationCode() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field keyAactivationCode of a non-specific template of type @IsobusVTMessageTypes.ButtonActivationRes.");
+return single_value->field_keyAactivationCode;
+}
+
+INTEGER_template& ButtonActivationRes_template::objectID()
+{
+set_specific();
+return single_value->field_objectID;
+}
+
+const INTEGER_template& ButtonActivationRes_template::objectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectID of a non-specific template of type @IsobusVTMessageTypes.ButtonActivationRes.");
+return single_value->field_objectID;
+}
+
+INTEGER_template& ButtonActivationRes_template::parentObjectID()
+{
+set_specific();
+return single_value->field_parentObjectID;
+}
+
+const INTEGER_template& ButtonActivationRes_template::parentObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field parentObjectID of a non-specific template of type @IsobusVTMessageTypes.ButtonActivationRes.");
+return single_value->field_parentObjectID;
+}
+
+INTEGER_template& ButtonActivationRes_template::buttonKeyCode()
+{
+set_specific();
+return single_value->field_buttonKeyCode;
+}
+
+const INTEGER_template& ButtonActivationRes_template::buttonKeyCode() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field buttonKeyCode of a non-specific template of type @IsobusVTMessageTypes.ButtonActivationRes.");
+return single_value->field_buttonKeyCode;
+}
+
+OCTETSTRING_template& ButtonActivationRes_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& ButtonActivationRes_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.ButtonActivationRes.");
+return single_value->field_reserved8;
+}
+
+int ButtonActivationRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ButtonActivationRes 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 @IsobusVTMessageTypes.ButtonActivationRes 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 @IsobusVTMessageTypes.ButtonActivationRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ButtonActivationRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ButtonActivationRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ButtonActivationRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ButtonActivationRes.");
+  }
+  return 0;
+}
+
+void ButtonActivationRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", keyAactivationCode := ");
+single_value->field_keyAactivationCode.log();
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log();
+TTCN_Logger::log_event_str(", parentObjectID := ");
+single_value->field_parentObjectID.log();
+TTCN_Logger::log_event_str(", buttonKeyCode := ");
+single_value->field_buttonKeyCode.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ButtonActivationRes_template::log_match(const ButtonActivationRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_keyAactivationCode.match(match_value.keyAactivationCode(), legacy)){
+TTCN_Logger::log_logmatch_info(".keyAactivationCode");
+single_value->field_keyAactivationCode.log_match(match_value.keyAactivationCode(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectID.match(match_value.objectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectID");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_parentObjectID.match(match_value.parentObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".parentObjectID");
+single_value->field_parentObjectID.log_match(match_value.parentObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_buttonKeyCode.match(match_value.buttonKeyCode(), legacy)){
+TTCN_Logger::log_logmatch_info(".buttonKeyCode");
+single_value->field_buttonKeyCode.log_match(match_value.buttonKeyCode(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", keyAactivationCode := ");
+single_value->field_keyAactivationCode.log_match(match_value.keyAactivationCode(), legacy);
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::log_event_str(", parentObjectID := ");
+single_value->field_parentObjectID.log_match(match_value.parentObjectID(), legacy);
+TTCN_Logger::log_event_str(", buttonKeyCode := ");
+single_value->field_buttonKeyCode.log_match(match_value.buttonKeyCode(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 ButtonActivationRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_keyAactivationCode.encode_text(text_buf);
+single_value->field_objectID.encode_text(text_buf);
+single_value->field_parentObjectID.encode_text(text_buf);
+single_value->field_buttonKeyCode.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.ButtonActivationRes.");
+}
+}
+
+void ButtonActivationRes_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_vtfunction.decode_text(text_buf);
+single_value->field_keyAactivationCode.decode_text(text_buf);
+single_value->field_objectID.decode_text(text_buf);
+single_value->field_parentObjectID.decode_text(text_buf);
+single_value->field_buttonKeyCode.decode_text(text_buf);
+single_value->field_reserved8.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 ButtonActivationRes_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 @IsobusVTMessageTypes.ButtonActivationRes.");
+}
+}
+
+void ButtonActivationRes_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: {
+    ButtonActivationRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.ButtonActivationRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) keyAactivationCode().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) parentObjectID().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) buttonKeyCode().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "keyAactivationCode")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          keyAactivationCode().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "parentObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          parentObjectID().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(), "buttonKeyCode")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          buttonKeyCode().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ButtonActivationRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ButtonActivationRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ButtonActivationRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ButtonActivationRes");
+single_value->field_keyAactivationCode.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ButtonActivationRes");
+single_value->field_objectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ButtonActivationRes");
+single_value->field_parentObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ButtonActivationRes");
+single_value->field_buttonKeyCode.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ButtonActivationRes");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ButtonActivationRes");
+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 : "@IsobusVTMessageTypes.ButtonActivationRes");
+}
+
+boolean ButtonActivationRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ButtonActivationRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+e__PointingEvent__touchState::e__PointingEvent__touchState()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+e__PointingEvent__touchState::e__PointingEvent__touchState(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @IsobusVTMessageTypes.e_PointingEvent_touchState with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+e__PointingEvent__touchState::e__PointingEvent__touchState(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+e__PointingEvent__touchState::e__PointingEvent__touchState(const e__PointingEvent__touchState& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @IsobusVTMessageTypes.e_PointingEvent_touchState.");
+enum_value = other_value.enum_value;
+}
+
+e__PointingEvent__touchState& e__PointingEvent__touchState::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @IsobusVTMessageTypes.e_PointingEvent_touchState.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+e__PointingEvent__touchState& e__PointingEvent__touchState::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+e__PointingEvent__touchState& e__PointingEvent__touchState::operator=(const e__PointingEvent__touchState& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusVTMessageTypes.e_PointingEvent_touchState.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean e__PointingEvent__touchState::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_PointingEvent_touchState.");
+return enum_value == other_value;
+}
+
+boolean e__PointingEvent__touchState::operator==(const e__PointingEvent__touchState& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_PointingEvent_touchState.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_PointingEvent_touchState.");
+return enum_value == other_value.enum_value;
+}
+
+boolean e__PointingEvent__touchState::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_PointingEvent_touchState.");
+return enum_value < other_value;
+}
+
+boolean e__PointingEvent__touchState::operator<(const e__PointingEvent__touchState& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_PointingEvent_touchState.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_PointingEvent_touchState.");
+return enum_value < other_value.enum_value;
+}
+
+boolean e__PointingEvent__touchState::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_PointingEvent_touchState.");
+return enum_value > other_value;
+}
+
+boolean e__PointingEvent__touchState::operator>(const e__PointingEvent__touchState& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_PointingEvent_touchState.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_PointingEvent_touchState.");
+return enum_value > other_value.enum_value;
+}
+
+const char *e__PointingEvent__touchState::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case released: return "released";
+case pressed: return "pressed";
+case held: return "held";
+case reserved: return "reserved";
+default: return "<unknown>";
+}
+}
+
+e__PointingEvent__touchState::enum_type e__PointingEvent__touchState::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "released")) return released;
+else if (!strcmp(str_par, "pressed")) return pressed;
+else if (!strcmp(str_par, "held")) return held;
+else if (!strcmp(str_par, "reserved")) return reserved;
+else return UNKNOWN_VALUE;
+}
+
+boolean e__PointingEvent__touchState::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 0:
+case 1:
+case 2:
+case 255:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int e__PointingEvent__touchState::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusVTMessageTypes.e_PointingEvent_touchState.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int e__PointingEvent__touchState::enum2int(const e__PointingEvent__touchState& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusVTMessageTypes.e_PointingEvent_touchState.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void e__PointingEvent__touchState::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @IsobusVTMessageTypes.e_PointingEvent_touchState.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+e__PointingEvent__touchState::operator e__PointingEvent__touchState::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @IsobusVTMessageTypes.e_PointingEvent_touchState.");
+return enum_value;
+}
+
+void e__PointingEvent__touchState::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void e__PointingEvent__touchState::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@IsobusVTMessageTypes.e_PointingEvent_touchState");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @IsobusVTMessageTypes.e_PointingEvent_touchState.");
+  }
+}
+
+void e__PointingEvent__touchState::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @IsobusVTMessageTypes.e_PointingEvent_touchState.");
+text_buf.push_int(enum_value);
+}
+
+void e__PointingEvent__touchState::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @IsobusVTMessageTypes.e_PointingEvent_touchState.", enum_value);
+}
+
+void e__PointingEvent__touchState::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void e__PointingEvent__touchState::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int e__PointingEvent__touchState::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*)
+{
+  int decoded_value = 0;
+  int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 8, no_err);
+  if (decoded_length < 0) return decoded_length;
+  if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value;
+  else {
+    if(no_err){
+     return -1;
+    } else {
+    TTCN_EncDec_ErrorContext::error
+      (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name);
+    enum_value = UNKNOWN_VALUE;
+    }
+  }
+  return decoded_length;
+}
+
+int e__PointingEvent__touchState::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const
+{
+  return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 8);
+}
+
+void e__PointingEvent__touchState_template::copy_template(const e__PointingEvent__touchState_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new e__PointingEvent__touchState_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_PointingEvent_touchState.");
+}
+}
+
+e__PointingEvent__touchState_template::e__PointingEvent__touchState_template()
+{
+}
+
+e__PointingEvent__touchState_template::e__PointingEvent__touchState_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+e__PointingEvent__touchState_template::e__PointingEvent__touchState_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!e__PointingEvent__touchState::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @IsobusVTMessageTypes.e_PointingEvent_touchState with unknown numeric value %d.", other_value);
+single_value = (e__PointingEvent__touchState::enum_type)other_value;
+}
+
+e__PointingEvent__touchState_template::e__PointingEvent__touchState_template(e__PointingEvent__touchState::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+e__PointingEvent__touchState_template::e__PointingEvent__touchState_template(const e__PointingEvent__touchState& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == e__PointingEvent__touchState::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @IsobusVTMessageTypes.e_PointingEvent_touchState.");
+single_value = other_value.enum_value;
+}
+
+e__PointingEvent__touchState_template::e__PointingEvent__touchState_template(const OPTIONAL<e__PointingEvent__touchState>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__PointingEvent__touchState::enum_type)(const e__PointingEvent__touchState&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @IsobusVTMessageTypes.e_PointingEvent_touchState from an unbound optional field.");
+}
+}
+
+e__PointingEvent__touchState_template::e__PointingEvent__touchState_template(const e__PointingEvent__touchState_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+e__PointingEvent__touchState_template::~e__PointingEvent__touchState_template()
+{
+clean_up();
+}
+
+boolean e__PointingEvent__touchState_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean e__PointingEvent__touchState_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != e__PointingEvent__touchState::UNBOUND_VALUE;
+}
+
+void e__PointingEvent__touchState_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+e__PointingEvent__touchState_template& e__PointingEvent__touchState_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+e__PointingEvent__touchState_template& e__PointingEvent__touchState_template::operator=(int other_value)
+{
+if (!e__PointingEvent__touchState::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @IsobusVTMessageTypes.e_PointingEvent_touchState.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (e__PointingEvent__touchState::enum_type)other_value;
+return *this;
+}
+
+e__PointingEvent__touchState_template& e__PointingEvent__touchState_template::operator=(e__PointingEvent__touchState::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+e__PointingEvent__touchState_template& e__PointingEvent__touchState_template::operator=(const e__PointingEvent__touchState& other_value)
+{
+if (other_value.enum_value == e__PointingEvent__touchState::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusVTMessageTypes.e_PointingEvent_touchState to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+e__PointingEvent__touchState_template& e__PointingEvent__touchState_template::operator=(const OPTIONAL<e__PointingEvent__touchState>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__PointingEvent__touchState::enum_type)(const e__PointingEvent__touchState&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @IsobusVTMessageTypes.e_PointingEvent_touchState.");
+}
+return *this;
+}
+
+e__PointingEvent__touchState_template& e__PointingEvent__touchState_template::operator=(const e__PointingEvent__touchState_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean e__PointingEvent__touchState_template::match(e__PointingEvent__touchState::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_PointingEvent_touchState.");
+}
+return FALSE;
+}
+
+boolean e__PointingEvent__touchState_template::match(const e__PointingEvent__touchState& other_value, boolean) const
+{
+if (other_value.enum_value == e__PointingEvent__touchState::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @IsobusVTMessageTypes.e_PointingEvent_touchState with an unbound value.");
+return match(other_value.enum_value);
+}
+
+e__PointingEvent__touchState::enum_type e__PointingEvent__touchState_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @IsobusVTMessageTypes.e_PointingEvent_touchState.");
+return single_value;
+}
+
+void e__PointingEvent__touchState_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @IsobusVTMessageTypes.e_PointingEvent_touchState.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new e__PointingEvent__touchState_template[list_length];
+}
+
+e__PointingEvent__touchState_template& e__PointingEvent__touchState_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @IsobusVTMessageTypes.e_PointingEvent_touchState.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @IsobusVTMessageTypes.e_PointingEvent_touchState.");
+return value_list.list_value[list_index];
+}
+
+void e__PointingEvent__touchState_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(e__PointingEvent__touchState::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void e__PointingEvent__touchState_template::log_match(const e__PointingEvent__touchState& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void e__PointingEvent__touchState_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_PointingEvent_touchState.");
+}
+}
+
+void e__PointingEvent__touchState_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (e__PointingEvent__touchState::enum_type)text_buf.pull_int().get_val();
+if (!e__PointingEvent__touchState::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @IsobusVTMessageTypes.e_PointingEvent_touchState.", single_value);
+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 e__PointingEvent__touchState_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @IsobusVTMessageTypes.e_PointingEvent_touchState.");
+}
+}
+
+boolean e__PointingEvent__touchState_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean e__PointingEvent__touchState_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 e__PointingEvent__touchState_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    e__PointingEvent__touchState_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    e__PointingEvent__touchState::enum_type enum_val = e__PointingEvent__touchState::str_to_enum(m_p->get_enumerated());
+    if (!e__PointingEvent__touchState::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @IsobusVTMessageTypes.e_PointingEvent_touchState.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@IsobusVTMessageTypes.e_PointingEvent_touchState");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void e__PointingEvent__touchState_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@IsobusVTMessageTypes.e_PointingEvent_touchState");
+}
+
+PointingEventReq::PointingEventReq()
+{
+}
+
+PointingEventReq::PointingEventReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_x__position,
+    const INTEGER& par_y__position,
+    const e__PointingEvent__touchState& par_touchState,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_x__position(par_x__position),
+  field_y__position(par_y__position),
+  field_touchState(par_touchState),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+PointingEventReq::PointingEventReq(const PointingEventReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.PointingEventReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.x__position().is_bound()) field_x__position = other_value.x__position();
+else field_x__position.clean_up();
+if (other_value.y__position().is_bound()) field_y__position = other_value.y__position();
+else field_y__position.clean_up();
+if (other_value.touchState().is_bound()) field_touchState = other_value.touchState();
+else field_touchState.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void PointingEventReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_x__position.clean_up();
+field_y__position.clean_up();
+field_touchState.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* PointingEventReq::get_descriptor() const { return &PointingEventReq_descr_; }
+PointingEventReq& PointingEventReq::operator=(const PointingEventReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.PointingEventReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.x__position().is_bound()) field_x__position = other_value.x__position();
+  else field_x__position.clean_up();
+  if (other_value.y__position().is_bound()) field_y__position = other_value.y__position();
+  else field_y__position.clean_up();
+  if (other_value.touchState().is_bound()) field_touchState = other_value.touchState();
+  else field_touchState.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean PointingEventReq::operator==(const PointingEventReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_x__position==other_value.field_x__position
+  && field_y__position==other_value.field_y__position
+  && field_touchState==other_value.field_touchState
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean PointingEventReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_x__position.is_bound())
+  || (field_y__position.is_bound())
+  || (field_touchState.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean PointingEventReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_x__position.is_value()
+  && field_y__position.is_value()
+  && field_touchState.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void PointingEventReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", x_position := ");
+field_x__position.log();
+TTCN_Logger::log_event_str(", y_position := ");
+field_y__position.log();
+TTCN_Logger::log_event_str(", touchState := ");
+field_touchState.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void PointingEventReq::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 @IsobusVTMessageTypes.PointingEventReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) x__position().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) y__position().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) touchState().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "x_position")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          x__position().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(), "y_position")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          y__position().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(), "touchState")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          touchState().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.PointingEventReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.PointingEventReq");
+  }
+}
+
+void PointingEventReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (x__position().is_bound()) x__position().set_implicit_omit();
+if (y__position().is_bound()) y__position().set_implicit_omit();
+if (touchState().is_bound()) touchState().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void PointingEventReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_x__position.encode_text(text_buf);
+field_y__position.encode_text(text_buf);
+field_touchState.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void PointingEventReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_x__position.decode_text(text_buf);
+field_y__position.decode_text(text_buf);
+field_touchState.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void PointingEventReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void PointingEventReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int PointingEventReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, PositionType_descr_.raw->forceomit);
+  decoded_field_length = field_x__position.RAW_decode(PositionType_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, PositionType_descr_.raw->forceomit);
+  decoded_field_length = field_y__position.RAW_decode(PositionType_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, e__PointingEvent__touchState_descr_.raw->forceomit);
+  decoded_field_length = field_touchState.RAW_decode(e__PointingEvent__touchState_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, PointingEventReq_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(PointingEventReq_reserved7_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, PointingEventReq_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(PointingEventReq_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int PointingEventReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PositionType_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, PositionType_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, e__PointingEvent__touchState_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, PointingEventReq_reserved7_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, PointingEventReq_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_x__position.RAW_encode(PositionType_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_y__position.RAW_encode(PositionType_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_touchState.RAW_encode(e__PointingEvent__touchState_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved7.RAW_encode(PointingEventReq_reserved7_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved8.RAW_encode(PointingEventReq_reserved8_descr_, *myleaf.body.node.nodes[5]);
+  return myleaf.length = encoded_length;
+}
+
+struct PointingEventReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_x__position;
+INTEGER_template field_y__position;
+e__PointingEvent__touchState_template field_touchState;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void PointingEventReq_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_vtfunction = ANY_VALUE;
+single_value->field_x__position = ANY_VALUE;
+single_value->field_y__position = ANY_VALUE;
+single_value->field_touchState = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void PointingEventReq_template::copy_value(const PointingEventReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.x__position().is_bound()) {
+  single_value->field_x__position = other_value.x__position();
+} else {
+  single_value->field_x__position.clean_up();
+}
+if (other_value.y__position().is_bound()) {
+  single_value->field_y__position = other_value.y__position();
+} else {
+  single_value->field_y__position.clean_up();
+}
+if (other_value.touchState().is_bound()) {
+  single_value->field_touchState = other_value.touchState();
+} else {
+  single_value->field_touchState.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void PointingEventReq_template::copy_template(const PointingEventReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.x__position().get_selection()) {
+single_value->field_x__position = other_value.x__position();
+} else {
+single_value->field_x__position.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.y__position().get_selection()) {
+single_value->field_y__position = other_value.y__position();
+} else {
+single_value->field_y__position.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.touchState().get_selection()) {
+single_value->field_touchState = other_value.touchState();
+} else {
+single_value->field_touchState.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new PointingEventReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.PointingEventReq.");
+break;
+}
+set_selection(other_value);
+}
+
+PointingEventReq_template::PointingEventReq_template()
+{
+}
+
+PointingEventReq_template::PointingEventReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+PointingEventReq_template::PointingEventReq_template(const PointingEventReq& other_value)
+{
+copy_value(other_value);
+}
+
+PointingEventReq_template::PointingEventReq_template(const OPTIONAL<PointingEventReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const PointingEventReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.PointingEventReq from an unbound optional field.");
+}
+}
+
+PointingEventReq_template::PointingEventReq_template(const PointingEventReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+PointingEventReq_template::~PointingEventReq_template()
+{
+clean_up();
+}
+
+PointingEventReq_template& PointingEventReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+PointingEventReq_template& PointingEventReq_template::operator=(const PointingEventReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+PointingEventReq_template& PointingEventReq_template::operator=(const OPTIONAL<PointingEventReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const PointingEventReq&)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 @IsobusVTMessageTypes.PointingEventReq.");
+}
+return *this;
+}
+
+PointingEventReq_template& PointingEventReq_template::operator=(const PointingEventReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean PointingEventReq_template::match(const PointingEventReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.x__position().is_bound()) return FALSE;
+if(!single_value->field_x__position.match(other_value.x__position(), legacy))return FALSE;
+if(!other_value.y__position().is_bound()) return FALSE;
+if(!single_value->field_y__position.match(other_value.y__position(), legacy))return FALSE;
+if(!other_value.touchState().is_bound()) return FALSE;
+if(!single_value->field_touchState.match(other_value.touchState(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.PointingEventReq.");
+}
+return FALSE;
+}
+
+boolean PointingEventReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_x__position.is_bound()
+
+ ||single_value->field_y__position.is_bound()
+
+ ||single_value->field_touchState.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean PointingEventReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_x__position.is_value()
+ &&single_value->field_y__position.is_value()
+ &&single_value->field_touchState.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void PointingEventReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+PointingEventReq PointingEventReq_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 @IsobusVTMessageTypes.PointingEventReq.");
+PointingEventReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_x__position.is_bound()) {
+ret_val.x__position() = single_value->field_x__position.valueof();
+}
+if (single_value->field_y__position.is_bound()) {
+ret_val.y__position() = single_value->field_y__position.valueof();
+}
+if (single_value->field_touchState.is_bound()) {
+ret_val.touchState() = single_value->field_touchState.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void PointingEventReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.PointingEventReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new PointingEventReq_template[list_length];
+}
+
+PointingEventReq_template& PointingEventReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.PointingEventReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.PointingEventReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& PointingEventReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& PointingEventReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.PointingEventReq.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& PointingEventReq_template::x__position()
+{
+set_specific();
+return single_value->field_x__position;
+}
+
+const INTEGER_template& PointingEventReq_template::x__position() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field x_position of a non-specific template of type @IsobusVTMessageTypes.PointingEventReq.");
+return single_value->field_x__position;
+}
+
+INTEGER_template& PointingEventReq_template::y__position()
+{
+set_specific();
+return single_value->field_y__position;
+}
+
+const INTEGER_template& PointingEventReq_template::y__position() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field y_position of a non-specific template of type @IsobusVTMessageTypes.PointingEventReq.");
+return single_value->field_y__position;
+}
+
+e__PointingEvent__touchState_template& PointingEventReq_template::touchState()
+{
+set_specific();
+return single_value->field_touchState;
+}
+
+const e__PointingEvent__touchState_template& PointingEventReq_template::touchState() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field touchState of a non-specific template of type @IsobusVTMessageTypes.PointingEventReq.");
+return single_value->field_touchState;
+}
+
+OCTETSTRING_template& PointingEventReq_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& PointingEventReq_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.PointingEventReq.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& PointingEventReq_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& PointingEventReq_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.PointingEventReq.");
+return single_value->field_reserved8;
+}
+
+int PointingEventReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.PointingEventReq 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 @IsobusVTMessageTypes.PointingEventReq 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 @IsobusVTMessageTypes.PointingEventReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.PointingEventReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.PointingEventReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.PointingEventReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.PointingEventReq.");
+  }
+  return 0;
+}
+
+void PointingEventReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", x_position := ");
+single_value->field_x__position.log();
+TTCN_Logger::log_event_str(", y_position := ");
+single_value->field_y__position.log();
+TTCN_Logger::log_event_str(", touchState := ");
+single_value->field_touchState.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void PointingEventReq_template::log_match(const PointingEventReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_x__position.match(match_value.x__position(), legacy)){
+TTCN_Logger::log_logmatch_info(".x_position");
+single_value->field_x__position.log_match(match_value.x__position(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_y__position.match(match_value.y__position(), legacy)){
+TTCN_Logger::log_logmatch_info(".y_position");
+single_value->field_y__position.log_match(match_value.y__position(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_touchState.match(match_value.touchState(), legacy)){
+TTCN_Logger::log_logmatch_info(".touchState");
+single_value->field_touchState.log_match(match_value.touchState(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", x_position := ");
+single_value->field_x__position.log_match(match_value.x__position(), legacy);
+TTCN_Logger::log_event_str(", y_position := ");
+single_value->field_y__position.log_match(match_value.y__position(), legacy);
+TTCN_Logger::log_event_str(", touchState := ");
+single_value->field_touchState.log_match(match_value.touchState(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 PointingEventReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_x__position.encode_text(text_buf);
+single_value->field_y__position.encode_text(text_buf);
+single_value->field_touchState.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.PointingEventReq.");
+}
+}
+
+void PointingEventReq_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_vtfunction.decode_text(text_buf);
+single_value->field_x__position.decode_text(text_buf);
+single_value->field_y__position.decode_text(text_buf);
+single_value->field_touchState.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 PointingEventReq_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 @IsobusVTMessageTypes.PointingEventReq.");
+}
+}
+
+void PointingEventReq_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: {
+    PointingEventReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.PointingEventReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) x__position().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) y__position().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) touchState().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "x_position")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          x__position().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(), "y_position")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          y__position().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(), "touchState")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          touchState().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.PointingEventReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.PointingEventReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void PointingEventReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.PointingEventReq");
+single_value->field_x__position.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.PointingEventReq");
+single_value->field_y__position.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.PointingEventReq");
+single_value->field_touchState.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.PointingEventReq");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.PointingEventReq");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.PointingEventReq");
+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 : "@IsobusVTMessageTypes.PointingEventReq");
+}
+
+boolean PointingEventReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean PointingEventReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+PointingEventRes::PointingEventRes()
+{
+}
+
+PointingEventRes::PointingEventRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_x__position,
+    const INTEGER& par_y__position,
+    const e__PointingEvent__touchState& par_touchState,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_x__position(par_x__position),
+  field_y__position(par_y__position),
+  field_touchState(par_touchState),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+PointingEventRes::PointingEventRes(const PointingEventRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.PointingEventRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.x__position().is_bound()) field_x__position = other_value.x__position();
+else field_x__position.clean_up();
+if (other_value.y__position().is_bound()) field_y__position = other_value.y__position();
+else field_y__position.clean_up();
+if (other_value.touchState().is_bound()) field_touchState = other_value.touchState();
+else field_touchState.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void PointingEventRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_x__position.clean_up();
+field_y__position.clean_up();
+field_touchState.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* PointingEventRes::get_descriptor() const { return &PointingEventRes_descr_; }
+PointingEventRes& PointingEventRes::operator=(const PointingEventRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.PointingEventRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.x__position().is_bound()) field_x__position = other_value.x__position();
+  else field_x__position.clean_up();
+  if (other_value.y__position().is_bound()) field_y__position = other_value.y__position();
+  else field_y__position.clean_up();
+  if (other_value.touchState().is_bound()) field_touchState = other_value.touchState();
+  else field_touchState.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean PointingEventRes::operator==(const PointingEventRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_x__position==other_value.field_x__position
+  && field_y__position==other_value.field_y__position
+  && field_touchState==other_value.field_touchState
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean PointingEventRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_x__position.is_bound())
+  || (field_y__position.is_bound())
+  || (field_touchState.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean PointingEventRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_x__position.is_value()
+  && field_y__position.is_value()
+  && field_touchState.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void PointingEventRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", x_position := ");
+field_x__position.log();
+TTCN_Logger::log_event_str(", y_position := ");
+field_y__position.log();
+TTCN_Logger::log_event_str(", touchState := ");
+field_touchState.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void PointingEventRes::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 @IsobusVTMessageTypes.PointingEventRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) x__position().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) y__position().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) touchState().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "x_position")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          x__position().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(), "y_position")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          y__position().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(), "touchState")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          touchState().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.PointingEventRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.PointingEventRes");
+  }
+}
+
+void PointingEventRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (x__position().is_bound()) x__position().set_implicit_omit();
+if (y__position().is_bound()) y__position().set_implicit_omit();
+if (touchState().is_bound()) touchState().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void PointingEventRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_x__position.encode_text(text_buf);
+field_y__position.encode_text(text_buf);
+field_touchState.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void PointingEventRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_x__position.decode_text(text_buf);
+field_y__position.decode_text(text_buf);
+field_touchState.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void PointingEventRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void PointingEventRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int PointingEventRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, PositionType_descr_.raw->forceomit);
+  decoded_field_length = field_x__position.RAW_decode(PositionType_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, PositionType_descr_.raw->forceomit);
+  decoded_field_length = field_y__position.RAW_decode(PositionType_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, e__PointingEvent__touchState_descr_.raw->forceomit);
+  decoded_field_length = field_touchState.RAW_decode(e__PointingEvent__touchState_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, PointingEventRes_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(PointingEventRes_reserved7_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, PointingEventRes_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(PointingEventRes_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int PointingEventRes::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PositionType_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, PositionType_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, e__PointingEvent__touchState_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, PointingEventRes_reserved7_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, PointingEventRes_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_x__position.RAW_encode(PositionType_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_y__position.RAW_encode(PositionType_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_touchState.RAW_encode(e__PointingEvent__touchState_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved7.RAW_encode(PointingEventRes_reserved7_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved8.RAW_encode(PointingEventRes_reserved8_descr_, *myleaf.body.node.nodes[5]);
+  return myleaf.length = encoded_length;
+}
+
+struct PointingEventRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_x__position;
+INTEGER_template field_y__position;
+e__PointingEvent__touchState_template field_touchState;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void PointingEventRes_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_vtfunction = ANY_VALUE;
+single_value->field_x__position = ANY_VALUE;
+single_value->field_y__position = ANY_VALUE;
+single_value->field_touchState = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void PointingEventRes_template::copy_value(const PointingEventRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.x__position().is_bound()) {
+  single_value->field_x__position = other_value.x__position();
+} else {
+  single_value->field_x__position.clean_up();
+}
+if (other_value.y__position().is_bound()) {
+  single_value->field_y__position = other_value.y__position();
+} else {
+  single_value->field_y__position.clean_up();
+}
+if (other_value.touchState().is_bound()) {
+  single_value->field_touchState = other_value.touchState();
+} else {
+  single_value->field_touchState.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void PointingEventRes_template::copy_template(const PointingEventRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.x__position().get_selection()) {
+single_value->field_x__position = other_value.x__position();
+} else {
+single_value->field_x__position.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.y__position().get_selection()) {
+single_value->field_y__position = other_value.y__position();
+} else {
+single_value->field_y__position.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.touchState().get_selection()) {
+single_value->field_touchState = other_value.touchState();
+} else {
+single_value->field_touchState.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new PointingEventRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.PointingEventRes.");
+break;
+}
+set_selection(other_value);
+}
+
+PointingEventRes_template::PointingEventRes_template()
+{
+}
+
+PointingEventRes_template::PointingEventRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+PointingEventRes_template::PointingEventRes_template(const PointingEventRes& other_value)
+{
+copy_value(other_value);
+}
+
+PointingEventRes_template::PointingEventRes_template(const OPTIONAL<PointingEventRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const PointingEventRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.PointingEventRes from an unbound optional field.");
+}
+}
+
+PointingEventRes_template::PointingEventRes_template(const PointingEventRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+PointingEventRes_template::~PointingEventRes_template()
+{
+clean_up();
+}
+
+PointingEventRes_template& PointingEventRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+PointingEventRes_template& PointingEventRes_template::operator=(const PointingEventRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+PointingEventRes_template& PointingEventRes_template::operator=(const OPTIONAL<PointingEventRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const PointingEventRes&)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 @IsobusVTMessageTypes.PointingEventRes.");
+}
+return *this;
+}
+
+PointingEventRes_template& PointingEventRes_template::operator=(const PointingEventRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean PointingEventRes_template::match(const PointingEventRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.x__position().is_bound()) return FALSE;
+if(!single_value->field_x__position.match(other_value.x__position(), legacy))return FALSE;
+if(!other_value.y__position().is_bound()) return FALSE;
+if(!single_value->field_y__position.match(other_value.y__position(), legacy))return FALSE;
+if(!other_value.touchState().is_bound()) return FALSE;
+if(!single_value->field_touchState.match(other_value.touchState(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.PointingEventRes.");
+}
+return FALSE;
+}
+
+boolean PointingEventRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_x__position.is_bound()
+
+ ||single_value->field_y__position.is_bound()
+
+ ||single_value->field_touchState.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean PointingEventRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_x__position.is_value()
+ &&single_value->field_y__position.is_value()
+ &&single_value->field_touchState.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void PointingEventRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+PointingEventRes PointingEventRes_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 @IsobusVTMessageTypes.PointingEventRes.");
+PointingEventRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_x__position.is_bound()) {
+ret_val.x__position() = single_value->field_x__position.valueof();
+}
+if (single_value->field_y__position.is_bound()) {
+ret_val.y__position() = single_value->field_y__position.valueof();
+}
+if (single_value->field_touchState.is_bound()) {
+ret_val.touchState() = single_value->field_touchState.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void PointingEventRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.PointingEventRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new PointingEventRes_template[list_length];
+}
+
+PointingEventRes_template& PointingEventRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.PointingEventRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.PointingEventRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& PointingEventRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& PointingEventRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.PointingEventRes.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& PointingEventRes_template::x__position()
+{
+set_specific();
+return single_value->field_x__position;
+}
+
+const INTEGER_template& PointingEventRes_template::x__position() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field x_position of a non-specific template of type @IsobusVTMessageTypes.PointingEventRes.");
+return single_value->field_x__position;
+}
+
+INTEGER_template& PointingEventRes_template::y__position()
+{
+set_specific();
+return single_value->field_y__position;
+}
+
+const INTEGER_template& PointingEventRes_template::y__position() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field y_position of a non-specific template of type @IsobusVTMessageTypes.PointingEventRes.");
+return single_value->field_y__position;
+}
+
+e__PointingEvent__touchState_template& PointingEventRes_template::touchState()
+{
+set_specific();
+return single_value->field_touchState;
+}
+
+const e__PointingEvent__touchState_template& PointingEventRes_template::touchState() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field touchState of a non-specific template of type @IsobusVTMessageTypes.PointingEventRes.");
+return single_value->field_touchState;
+}
+
+OCTETSTRING_template& PointingEventRes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& PointingEventRes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.PointingEventRes.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& PointingEventRes_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& PointingEventRes_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.PointingEventRes.");
+return single_value->field_reserved8;
+}
+
+int PointingEventRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.PointingEventRes 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 @IsobusVTMessageTypes.PointingEventRes 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 @IsobusVTMessageTypes.PointingEventRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.PointingEventRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.PointingEventRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.PointingEventRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.PointingEventRes.");
+  }
+  return 0;
+}
+
+void PointingEventRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", x_position := ");
+single_value->field_x__position.log();
+TTCN_Logger::log_event_str(", y_position := ");
+single_value->field_y__position.log();
+TTCN_Logger::log_event_str(", touchState := ");
+single_value->field_touchState.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void PointingEventRes_template::log_match(const PointingEventRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_x__position.match(match_value.x__position(), legacy)){
+TTCN_Logger::log_logmatch_info(".x_position");
+single_value->field_x__position.log_match(match_value.x__position(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_y__position.match(match_value.y__position(), legacy)){
+TTCN_Logger::log_logmatch_info(".y_position");
+single_value->field_y__position.log_match(match_value.y__position(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_touchState.match(match_value.touchState(), legacy)){
+TTCN_Logger::log_logmatch_info(".touchState");
+single_value->field_touchState.log_match(match_value.touchState(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", x_position := ");
+single_value->field_x__position.log_match(match_value.x__position(), legacy);
+TTCN_Logger::log_event_str(", y_position := ");
+single_value->field_y__position.log_match(match_value.y__position(), legacy);
+TTCN_Logger::log_event_str(", touchState := ");
+single_value->field_touchState.log_match(match_value.touchState(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 PointingEventRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_x__position.encode_text(text_buf);
+single_value->field_y__position.encode_text(text_buf);
+single_value->field_touchState.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.PointingEventRes.");
+}
+}
+
+void PointingEventRes_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_vtfunction.decode_text(text_buf);
+single_value->field_x__position.decode_text(text_buf);
+single_value->field_y__position.decode_text(text_buf);
+single_value->field_touchState.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 PointingEventRes_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 @IsobusVTMessageTypes.PointingEventRes.");
+}
+}
+
+void PointingEventRes_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: {
+    PointingEventRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.PointingEventRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) x__position().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) y__position().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) touchState().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "x_position")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          x__position().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(), "y_position")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          y__position().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(), "touchState")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          touchState().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.PointingEventRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.PointingEventRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void PointingEventRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.PointingEventRes");
+single_value->field_x__position.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.PointingEventRes");
+single_value->field_y__position.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.PointingEventRes");
+single_value->field_touchState.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.PointingEventRes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.PointingEventRes");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.PointingEventRes");
+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 : "@IsobusVTMessageTypes.PointingEventRes");
+}
+
+boolean PointingEventRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean PointingEventRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+e__VTOnUserLayoutHideShow__state::e__VTOnUserLayoutHideShow__state()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+e__VTOnUserLayoutHideShow__state::e__VTOnUserLayoutHideShow__state(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @IsobusVTMessageTypes.e_VTOnUserLayoutHideShow_state with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+e__VTOnUserLayoutHideShow__state::e__VTOnUserLayoutHideShow__state(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+e__VTOnUserLayoutHideShow__state::e__VTOnUserLayoutHideShow__state(const e__VTOnUserLayoutHideShow__state& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @IsobusVTMessageTypes.e_VTOnUserLayoutHideShow_state.");
+enum_value = other_value.enum_value;
+}
+
+e__VTOnUserLayoutHideShow__state& e__VTOnUserLayoutHideShow__state::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @IsobusVTMessageTypes.e_VTOnUserLayoutHideShow_state.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+e__VTOnUserLayoutHideShow__state& e__VTOnUserLayoutHideShow__state::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+e__VTOnUserLayoutHideShow__state& e__VTOnUserLayoutHideShow__state::operator=(const e__VTOnUserLayoutHideShow__state& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusVTMessageTypes.e_VTOnUserLayoutHideShow_state.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean e__VTOnUserLayoutHideShow__state::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_VTOnUserLayoutHideShow_state.");
+return enum_value == other_value;
+}
+
+boolean e__VTOnUserLayoutHideShow__state::operator==(const e__VTOnUserLayoutHideShow__state& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_VTOnUserLayoutHideShow_state.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_VTOnUserLayoutHideShow_state.");
+return enum_value == other_value.enum_value;
+}
+
+boolean e__VTOnUserLayoutHideShow__state::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_VTOnUserLayoutHideShow_state.");
+return enum_value < other_value;
+}
+
+boolean e__VTOnUserLayoutHideShow__state::operator<(const e__VTOnUserLayoutHideShow__state& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_VTOnUserLayoutHideShow_state.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_VTOnUserLayoutHideShow_state.");
+return enum_value < other_value.enum_value;
+}
+
+boolean e__VTOnUserLayoutHideShow__state::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_VTOnUserLayoutHideShow_state.");
+return enum_value > other_value;
+}
+
+boolean e__VTOnUserLayoutHideShow__state::operator>(const e__VTOnUserLayoutHideShow__state& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_VTOnUserLayoutHideShow_state.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_VTOnUserLayoutHideShow_state.");
+return enum_value > other_value.enum_value;
+}
+
+const char *e__VTOnUserLayoutHideShow__state::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case hidden: return "hidden";
+case shown: return "shown";
+default: return "<unknown>";
+}
+}
+
+e__VTOnUserLayoutHideShow__state::enum_type e__VTOnUserLayoutHideShow__state::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "hidden")) return hidden;
+else if (!strcmp(str_par, "shown")) return shown;
+else return UNKNOWN_VALUE;
+}
+
+boolean e__VTOnUserLayoutHideShow__state::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 0:
+case 1:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int e__VTOnUserLayoutHideShow__state::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusVTMessageTypes.e_VTOnUserLayoutHideShow_state.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int e__VTOnUserLayoutHideShow__state::enum2int(const e__VTOnUserLayoutHideShow__state& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusVTMessageTypes.e_VTOnUserLayoutHideShow_state.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void e__VTOnUserLayoutHideShow__state::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @IsobusVTMessageTypes.e_VTOnUserLayoutHideShow_state.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+e__VTOnUserLayoutHideShow__state::operator e__VTOnUserLayoutHideShow__state::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @IsobusVTMessageTypes.e_VTOnUserLayoutHideShow_state.");
+return enum_value;
+}
+
+void e__VTOnUserLayoutHideShow__state::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void e__VTOnUserLayoutHideShow__state::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@IsobusVTMessageTypes.e_VTOnUserLayoutHideShow_state");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @IsobusVTMessageTypes.e_VTOnUserLayoutHideShow_state.");
+  }
+}
+
+void e__VTOnUserLayoutHideShow__state::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @IsobusVTMessageTypes.e_VTOnUserLayoutHideShow_state.");
+text_buf.push_int(enum_value);
+}
+
+void e__VTOnUserLayoutHideShow__state::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @IsobusVTMessageTypes.e_VTOnUserLayoutHideShow_state.", enum_value);
+}
+
+void e__VTOnUserLayoutHideShow__state::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void e__VTOnUserLayoutHideShow__state::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int e__VTOnUserLayoutHideShow__state::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*)
+{
+  int decoded_value = 0;
+  int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 2, no_err);
+  if (decoded_length < 0) return decoded_length;
+  if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value;
+  else {
+    if(no_err){
+     return -1;
+    } else {
+    TTCN_EncDec_ErrorContext::error
+      (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name);
+    enum_value = UNKNOWN_VALUE;
+    }
+  }
+  return decoded_length;
+}
+
+int e__VTOnUserLayoutHideShow__state::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const
+{
+  return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 2);
+}
+
+void e__VTOnUserLayoutHideShow__state_template::copy_template(const e__VTOnUserLayoutHideShow__state_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new e__VTOnUserLayoutHideShow__state_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_VTOnUserLayoutHideShow_state.");
+}
+}
+
+e__VTOnUserLayoutHideShow__state_template::e__VTOnUserLayoutHideShow__state_template()
+{
+}
+
+e__VTOnUserLayoutHideShow__state_template::e__VTOnUserLayoutHideShow__state_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+e__VTOnUserLayoutHideShow__state_template::e__VTOnUserLayoutHideShow__state_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!e__VTOnUserLayoutHideShow__state::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @IsobusVTMessageTypes.e_VTOnUserLayoutHideShow_state with unknown numeric value %d.", other_value);
+single_value = (e__VTOnUserLayoutHideShow__state::enum_type)other_value;
+}
+
+e__VTOnUserLayoutHideShow__state_template::e__VTOnUserLayoutHideShow__state_template(e__VTOnUserLayoutHideShow__state::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+e__VTOnUserLayoutHideShow__state_template::e__VTOnUserLayoutHideShow__state_template(const e__VTOnUserLayoutHideShow__state& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == e__VTOnUserLayoutHideShow__state::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @IsobusVTMessageTypes.e_VTOnUserLayoutHideShow_state.");
+single_value = other_value.enum_value;
+}
+
+e__VTOnUserLayoutHideShow__state_template::e__VTOnUserLayoutHideShow__state_template(const OPTIONAL<e__VTOnUserLayoutHideShow__state>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__VTOnUserLayoutHideShow__state::enum_type)(const e__VTOnUserLayoutHideShow__state&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @IsobusVTMessageTypes.e_VTOnUserLayoutHideShow_state from an unbound optional field.");
+}
+}
+
+e__VTOnUserLayoutHideShow__state_template::e__VTOnUserLayoutHideShow__state_template(const e__VTOnUserLayoutHideShow__state_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+e__VTOnUserLayoutHideShow__state_template::~e__VTOnUserLayoutHideShow__state_template()
+{
+clean_up();
+}
+
+boolean e__VTOnUserLayoutHideShow__state_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean e__VTOnUserLayoutHideShow__state_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != e__VTOnUserLayoutHideShow__state::UNBOUND_VALUE;
+}
+
+void e__VTOnUserLayoutHideShow__state_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+e__VTOnUserLayoutHideShow__state_template& e__VTOnUserLayoutHideShow__state_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+e__VTOnUserLayoutHideShow__state_template& e__VTOnUserLayoutHideShow__state_template::operator=(int other_value)
+{
+if (!e__VTOnUserLayoutHideShow__state::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @IsobusVTMessageTypes.e_VTOnUserLayoutHideShow_state.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (e__VTOnUserLayoutHideShow__state::enum_type)other_value;
+return *this;
+}
+
+e__VTOnUserLayoutHideShow__state_template& e__VTOnUserLayoutHideShow__state_template::operator=(e__VTOnUserLayoutHideShow__state::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+e__VTOnUserLayoutHideShow__state_template& e__VTOnUserLayoutHideShow__state_template::operator=(const e__VTOnUserLayoutHideShow__state& other_value)
+{
+if (other_value.enum_value == e__VTOnUserLayoutHideShow__state::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusVTMessageTypes.e_VTOnUserLayoutHideShow_state to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+e__VTOnUserLayoutHideShow__state_template& e__VTOnUserLayoutHideShow__state_template::operator=(const OPTIONAL<e__VTOnUserLayoutHideShow__state>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__VTOnUserLayoutHideShow__state::enum_type)(const e__VTOnUserLayoutHideShow__state&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @IsobusVTMessageTypes.e_VTOnUserLayoutHideShow_state.");
+}
+return *this;
+}
+
+e__VTOnUserLayoutHideShow__state_template& e__VTOnUserLayoutHideShow__state_template::operator=(const e__VTOnUserLayoutHideShow__state_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean e__VTOnUserLayoutHideShow__state_template::match(e__VTOnUserLayoutHideShow__state::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_VTOnUserLayoutHideShow_state.");
+}
+return FALSE;
+}
+
+boolean e__VTOnUserLayoutHideShow__state_template::match(const e__VTOnUserLayoutHideShow__state& other_value, boolean) const
+{
+if (other_value.enum_value == e__VTOnUserLayoutHideShow__state::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @IsobusVTMessageTypes.e_VTOnUserLayoutHideShow_state with an unbound value.");
+return match(other_value.enum_value);
+}
+
+e__VTOnUserLayoutHideShow__state::enum_type e__VTOnUserLayoutHideShow__state_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @IsobusVTMessageTypes.e_VTOnUserLayoutHideShow_state.");
+return single_value;
+}
+
+void e__VTOnUserLayoutHideShow__state_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @IsobusVTMessageTypes.e_VTOnUserLayoutHideShow_state.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new e__VTOnUserLayoutHideShow__state_template[list_length];
+}
+
+e__VTOnUserLayoutHideShow__state_template& e__VTOnUserLayoutHideShow__state_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @IsobusVTMessageTypes.e_VTOnUserLayoutHideShow_state.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @IsobusVTMessageTypes.e_VTOnUserLayoutHideShow_state.");
+return value_list.list_value[list_index];
+}
+
+void e__VTOnUserLayoutHideShow__state_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(e__VTOnUserLayoutHideShow__state::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void e__VTOnUserLayoutHideShow__state_template::log_match(const e__VTOnUserLayoutHideShow__state& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void e__VTOnUserLayoutHideShow__state_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_VTOnUserLayoutHideShow_state.");
+}
+}
+
+void e__VTOnUserLayoutHideShow__state_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (e__VTOnUserLayoutHideShow__state::enum_type)text_buf.pull_int().get_val();
+if (!e__VTOnUserLayoutHideShow__state::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @IsobusVTMessageTypes.e_VTOnUserLayoutHideShow_state.", single_value);
+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 e__VTOnUserLayoutHideShow__state_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @IsobusVTMessageTypes.e_VTOnUserLayoutHideShow_state.");
+}
+}
+
+boolean e__VTOnUserLayoutHideShow__state_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean e__VTOnUserLayoutHideShow__state_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 e__VTOnUserLayoutHideShow__state_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    e__VTOnUserLayoutHideShow__state_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    e__VTOnUserLayoutHideShow__state::enum_type enum_val = e__VTOnUserLayoutHideShow__state::str_to_enum(m_p->get_enumerated());
+    if (!e__VTOnUserLayoutHideShow__state::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @IsobusVTMessageTypes.e_VTOnUserLayoutHideShow_state.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@IsobusVTMessageTypes.e_VTOnUserLayoutHideShow_state");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void e__VTOnUserLayoutHideShow__state_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@IsobusVTMessageTypes.e_VTOnUserLayoutHideShow_state");
+}
+
+e__VTSelectInputObject__selection::e__VTSelectInputObject__selection()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+e__VTSelectInputObject__selection::e__VTSelectInputObject__selection(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @IsobusVTMessageTypes.e_VTSelectInputObject_selection with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+e__VTSelectInputObject__selection::e__VTSelectInputObject__selection(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+e__VTSelectInputObject__selection::e__VTSelectInputObject__selection(const e__VTSelectInputObject__selection& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @IsobusVTMessageTypes.e_VTSelectInputObject_selection.");
+enum_value = other_value.enum_value;
+}
+
+e__VTSelectInputObject__selection& e__VTSelectInputObject__selection::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @IsobusVTMessageTypes.e_VTSelectInputObject_selection.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+e__VTSelectInputObject__selection& e__VTSelectInputObject__selection::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+e__VTSelectInputObject__selection& e__VTSelectInputObject__selection::operator=(const e__VTSelectInputObject__selection& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusVTMessageTypes.e_VTSelectInputObject_selection.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean e__VTSelectInputObject__selection::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_VTSelectInputObject_selection.");
+return enum_value == other_value;
+}
+
+boolean e__VTSelectInputObject__selection::operator==(const e__VTSelectInputObject__selection& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_VTSelectInputObject_selection.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_VTSelectInputObject_selection.");
+return enum_value == other_value.enum_value;
+}
+
+boolean e__VTSelectInputObject__selection::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_VTSelectInputObject_selection.");
+return enum_value < other_value;
+}
+
+boolean e__VTSelectInputObject__selection::operator<(const e__VTSelectInputObject__selection& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_VTSelectInputObject_selection.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_VTSelectInputObject_selection.");
+return enum_value < other_value.enum_value;
+}
+
+boolean e__VTSelectInputObject__selection::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_VTSelectInputObject_selection.");
+return enum_value > other_value;
+}
+
+boolean e__VTSelectInputObject__selection::operator>(const e__VTSelectInputObject__selection& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_VTSelectInputObject_selection.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_VTSelectInputObject_selection.");
+return enum_value > other_value.enum_value;
+}
+
+const char *e__VTSelectInputObject__selection::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case objectIsDeselected: return "objectIsDeselected";
+case objectIsSelected: return "objectIsSelected";
+default: return "<unknown>";
+}
+}
+
+e__VTSelectInputObject__selection::enum_type e__VTSelectInputObject__selection::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "objectIsDeselected")) return objectIsDeselected;
+else if (!strcmp(str_par, "objectIsSelected")) return objectIsSelected;
+else return UNKNOWN_VALUE;
+}
+
+boolean e__VTSelectInputObject__selection::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 0:
+case 1:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int e__VTSelectInputObject__selection::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusVTMessageTypes.e_VTSelectInputObject_selection.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int e__VTSelectInputObject__selection::enum2int(const e__VTSelectInputObject__selection& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusVTMessageTypes.e_VTSelectInputObject_selection.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void e__VTSelectInputObject__selection::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @IsobusVTMessageTypes.e_VTSelectInputObject_selection.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+e__VTSelectInputObject__selection::operator e__VTSelectInputObject__selection::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @IsobusVTMessageTypes.e_VTSelectInputObject_selection.");
+return enum_value;
+}
+
+void e__VTSelectInputObject__selection::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void e__VTSelectInputObject__selection::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@IsobusVTMessageTypes.e_VTSelectInputObject_selection");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @IsobusVTMessageTypes.e_VTSelectInputObject_selection.");
+  }
+}
+
+void e__VTSelectInputObject__selection::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @IsobusVTMessageTypes.e_VTSelectInputObject_selection.");
+text_buf.push_int(enum_value);
+}
+
+void e__VTSelectInputObject__selection::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @IsobusVTMessageTypes.e_VTSelectInputObject_selection.", enum_value);
+}
+
+void e__VTSelectInputObject__selection::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void e__VTSelectInputObject__selection::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int e__VTSelectInputObject__selection::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*)
+{
+  int decoded_value = 0;
+  int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 2, no_err);
+  if (decoded_length < 0) return decoded_length;
+  if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value;
+  else {
+    if(no_err){
+     return -1;
+    } else {
+    TTCN_EncDec_ErrorContext::error
+      (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name);
+    enum_value = UNKNOWN_VALUE;
+    }
+  }
+  return decoded_length;
+}
+
+int e__VTSelectInputObject__selection::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const
+{
+  return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 2);
+}
+
+void e__VTSelectInputObject__selection_template::copy_template(const e__VTSelectInputObject__selection_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new e__VTSelectInputObject__selection_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_VTSelectInputObject_selection.");
+}
+}
+
+e__VTSelectInputObject__selection_template::e__VTSelectInputObject__selection_template()
+{
+}
+
+e__VTSelectInputObject__selection_template::e__VTSelectInputObject__selection_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+e__VTSelectInputObject__selection_template::e__VTSelectInputObject__selection_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!e__VTSelectInputObject__selection::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @IsobusVTMessageTypes.e_VTSelectInputObject_selection with unknown numeric value %d.", other_value);
+single_value = (e__VTSelectInputObject__selection::enum_type)other_value;
+}
+
+e__VTSelectInputObject__selection_template::e__VTSelectInputObject__selection_template(e__VTSelectInputObject__selection::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+e__VTSelectInputObject__selection_template::e__VTSelectInputObject__selection_template(const e__VTSelectInputObject__selection& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == e__VTSelectInputObject__selection::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @IsobusVTMessageTypes.e_VTSelectInputObject_selection.");
+single_value = other_value.enum_value;
+}
+
+e__VTSelectInputObject__selection_template::e__VTSelectInputObject__selection_template(const OPTIONAL<e__VTSelectInputObject__selection>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__VTSelectInputObject__selection::enum_type)(const e__VTSelectInputObject__selection&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @IsobusVTMessageTypes.e_VTSelectInputObject_selection from an unbound optional field.");
+}
+}
+
+e__VTSelectInputObject__selection_template::e__VTSelectInputObject__selection_template(const e__VTSelectInputObject__selection_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+e__VTSelectInputObject__selection_template::~e__VTSelectInputObject__selection_template()
+{
+clean_up();
+}
+
+boolean e__VTSelectInputObject__selection_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean e__VTSelectInputObject__selection_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != e__VTSelectInputObject__selection::UNBOUND_VALUE;
+}
+
+void e__VTSelectInputObject__selection_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+e__VTSelectInputObject__selection_template& e__VTSelectInputObject__selection_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+e__VTSelectInputObject__selection_template& e__VTSelectInputObject__selection_template::operator=(int other_value)
+{
+if (!e__VTSelectInputObject__selection::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @IsobusVTMessageTypes.e_VTSelectInputObject_selection.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (e__VTSelectInputObject__selection::enum_type)other_value;
+return *this;
+}
+
+e__VTSelectInputObject__selection_template& e__VTSelectInputObject__selection_template::operator=(e__VTSelectInputObject__selection::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+e__VTSelectInputObject__selection_template& e__VTSelectInputObject__selection_template::operator=(const e__VTSelectInputObject__selection& other_value)
+{
+if (other_value.enum_value == e__VTSelectInputObject__selection::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusVTMessageTypes.e_VTSelectInputObject_selection to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+e__VTSelectInputObject__selection_template& e__VTSelectInputObject__selection_template::operator=(const OPTIONAL<e__VTSelectInputObject__selection>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__VTSelectInputObject__selection::enum_type)(const e__VTSelectInputObject__selection&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @IsobusVTMessageTypes.e_VTSelectInputObject_selection.");
+}
+return *this;
+}
+
+e__VTSelectInputObject__selection_template& e__VTSelectInputObject__selection_template::operator=(const e__VTSelectInputObject__selection_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean e__VTSelectInputObject__selection_template::match(e__VTSelectInputObject__selection::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_VTSelectInputObject_selection.");
+}
+return FALSE;
+}
+
+boolean e__VTSelectInputObject__selection_template::match(const e__VTSelectInputObject__selection& other_value, boolean) const
+{
+if (other_value.enum_value == e__VTSelectInputObject__selection::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @IsobusVTMessageTypes.e_VTSelectInputObject_selection with an unbound value.");
+return match(other_value.enum_value);
+}
+
+e__VTSelectInputObject__selection::enum_type e__VTSelectInputObject__selection_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @IsobusVTMessageTypes.e_VTSelectInputObject_selection.");
+return single_value;
+}
+
+void e__VTSelectInputObject__selection_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @IsobusVTMessageTypes.e_VTSelectInputObject_selection.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new e__VTSelectInputObject__selection_template[list_length];
+}
+
+e__VTSelectInputObject__selection_template& e__VTSelectInputObject__selection_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @IsobusVTMessageTypes.e_VTSelectInputObject_selection.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @IsobusVTMessageTypes.e_VTSelectInputObject_selection.");
+return value_list.list_value[list_index];
+}
+
+void e__VTSelectInputObject__selection_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(e__VTSelectInputObject__selection::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void e__VTSelectInputObject__selection_template::log_match(const e__VTSelectInputObject__selection& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void e__VTSelectInputObject__selection_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_VTSelectInputObject_selection.");
+}
+}
+
+void e__VTSelectInputObject__selection_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (e__VTSelectInputObject__selection::enum_type)text_buf.pull_int().get_val();
+if (!e__VTSelectInputObject__selection::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @IsobusVTMessageTypes.e_VTSelectInputObject_selection.", single_value);
+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 e__VTSelectInputObject__selection_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @IsobusVTMessageTypes.e_VTSelectInputObject_selection.");
+}
+}
+
+boolean e__VTSelectInputObject__selection_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean e__VTSelectInputObject__selection_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 e__VTSelectInputObject__selection_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    e__VTSelectInputObject__selection_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    e__VTSelectInputObject__selection::enum_type enum_val = e__VTSelectInputObject__selection::str_to_enum(m_p->get_enumerated());
+    if (!e__VTSelectInputObject__selection::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @IsobusVTMessageTypes.e_VTSelectInputObject_selection.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@IsobusVTMessageTypes.e_VTSelectInputObject_selection");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void e__VTSelectInputObject__selection_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@IsobusVTMessageTypes.e_VTSelectInputObject_selection");
+}
+
+VTSelectInputObject__Bitmask::VTSelectInputObject__Bitmask()
+{
+}
+
+VTSelectInputObject__Bitmask::VTSelectInputObject__Bitmask(const BOOLEAN& par_objectIsOpenForDataInput,
+    const BOOLEAN& par_reserved1,
+    const BOOLEAN& par_reserved2,
+    const BOOLEAN& par_reserved3,
+    const BOOLEAN& par_reserved4,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7)
+  :   field_objectIsOpenForDataInput(par_objectIsOpenForDataInput),
+  field_reserved1(par_reserved1),
+  field_reserved2(par_reserved2),
+  field_reserved3(par_reserved3),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7)
+{
+}
+
+VTSelectInputObject__Bitmask::VTSelectInputObject__Bitmask(const VTSelectInputObject__Bitmask& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.VTSelectInputObject_Bitmask.");
+if (other_value.objectIsOpenForDataInput().is_bound()) field_objectIsOpenForDataInput = other_value.objectIsOpenForDataInput();
+else field_objectIsOpenForDataInput.clean_up();
+if (other_value.reserved1().is_bound()) field_reserved1 = other_value.reserved1();
+else field_reserved1.clean_up();
+if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+else field_reserved2.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+}
+
+void VTSelectInputObject__Bitmask::clean_up()
+{
+field_objectIsOpenForDataInput.clean_up();
+field_reserved1.clean_up();
+field_reserved2.clean_up();
+field_reserved3.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+}
+
+const TTCN_Typedescriptor_t* VTSelectInputObject__Bitmask::get_descriptor() const { return &VTSelectInputObject__Bitmask_descr_; }
+VTSelectInputObject__Bitmask& VTSelectInputObject__Bitmask::operator=(const VTSelectInputObject__Bitmask& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.VTSelectInputObject_Bitmask.");
+  if (other_value.objectIsOpenForDataInput().is_bound()) field_objectIsOpenForDataInput = other_value.objectIsOpenForDataInput();
+  else field_objectIsOpenForDataInput.clean_up();
+  if (other_value.reserved1().is_bound()) field_reserved1 = other_value.reserved1();
+  else field_reserved1.clean_up();
+  if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+  else field_reserved2.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+}
+return *this;
+}
+
+boolean VTSelectInputObject__Bitmask::operator==(const VTSelectInputObject__Bitmask& other_value) const
+{
+return field_objectIsOpenForDataInput==other_value.field_objectIsOpenForDataInput
+  && field_reserved1==other_value.field_reserved1
+  && field_reserved2==other_value.field_reserved2
+  && field_reserved3==other_value.field_reserved3
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7;
+}
+
+boolean VTSelectInputObject__Bitmask::is_bound() const
+{
+return (field_objectIsOpenForDataInput.is_bound())
+  || (field_reserved1.is_bound())
+  || (field_reserved2.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound());
+}
+boolean VTSelectInputObject__Bitmask::is_value() const
+{
+return field_objectIsOpenForDataInput.is_value()
+  && field_reserved1.is_value()
+  && field_reserved2.is_value()
+  && field_reserved3.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value();
+}
+void VTSelectInputObject__Bitmask::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ objectIsOpenForDataInput := ");
+field_objectIsOpenForDataInput.log();
+TTCN_Logger::log_event_str(", reserved1 := ");
+field_reserved1.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void VTSelectInputObject__Bitmask::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.VTSelectInputObject_Bitmask has 8 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) objectIsOpenForDataInput().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved1().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "objectIsOpenForDataInput")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIsOpenForDataInput().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(), "reserved1")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved1().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.VTSelectInputObject_Bitmask: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.VTSelectInputObject_Bitmask");
+  }
+}
+
+void VTSelectInputObject__Bitmask::set_implicit_omit()
+{
+if (objectIsOpenForDataInput().is_bound()) objectIsOpenForDataInput().set_implicit_omit();
+if (reserved1().is_bound()) reserved1().set_implicit_omit();
+if (reserved2().is_bound()) reserved2().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+}
+
+void VTSelectInputObject__Bitmask::encode_text(Text_Buf& text_buf) const
+{
+field_objectIsOpenForDataInput.encode_text(text_buf);
+field_reserved1.encode_text(text_buf);
+field_reserved2.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+}
+
+void VTSelectInputObject__Bitmask::decode_text(Text_Buf& text_buf)
+{
+field_objectIsOpenForDataInput.decode_text(text_buf);
+field_reserved1.decode_text(text_buf);
+field_reserved2.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+}
+
+void VTSelectInputObject__Bitmask::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void VTSelectInputObject__Bitmask::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int VTSelectInputObject__Bitmask::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_objectIsOpenForDataInput.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved1.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved2.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int VTSelectInputObject__Bitmask::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_objectIsOpenForDataInput.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved1.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved2.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved3.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved4.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved5.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved6.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved7.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct VTSelectInputObject__Bitmask_template::single_value_struct {
+BOOLEAN_template field_objectIsOpenForDataInput;
+BOOLEAN_template field_reserved1;
+BOOLEAN_template field_reserved2;
+BOOLEAN_template field_reserved3;
+BOOLEAN_template field_reserved4;
+BOOLEAN_template field_reserved5;
+BOOLEAN_template field_reserved6;
+BOOLEAN_template field_reserved7;
+};
+
+void VTSelectInputObject__Bitmask_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_objectIsOpenForDataInput = ANY_VALUE;
+single_value->field_reserved1 = ANY_VALUE;
+single_value->field_reserved2 = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+}
+}
+}
+
+void VTSelectInputObject__Bitmask_template::copy_value(const VTSelectInputObject__Bitmask& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.objectIsOpenForDataInput().is_bound()) {
+  single_value->field_objectIsOpenForDataInput = other_value.objectIsOpenForDataInput();
+} else {
+  single_value->field_objectIsOpenForDataInput.clean_up();
+}
+if (other_value.reserved1().is_bound()) {
+  single_value->field_reserved1 = other_value.reserved1();
+} else {
+  single_value->field_reserved1.clean_up();
+}
+if (other_value.reserved2().is_bound()) {
+  single_value->field_reserved2 = other_value.reserved2();
+} else {
+  single_value->field_reserved2.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void VTSelectInputObject__Bitmask_template::copy_template(const VTSelectInputObject__Bitmask_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.objectIsOpenForDataInput().get_selection()) {
+single_value->field_objectIsOpenForDataInput = other_value.objectIsOpenForDataInput();
+} else {
+single_value->field_objectIsOpenForDataInput.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved1().get_selection()) {
+single_value->field_reserved1 = other_value.reserved1();
+} else {
+single_value->field_reserved1.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved2().get_selection()) {
+single_value->field_reserved2 = other_value.reserved2();
+} else {
+single_value->field_reserved2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new VTSelectInputObject__Bitmask_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTSelectInputObject_Bitmask.");
+break;
+}
+set_selection(other_value);
+}
+
+VTSelectInputObject__Bitmask_template::VTSelectInputObject__Bitmask_template()
+{
+}
+
+VTSelectInputObject__Bitmask_template::VTSelectInputObject__Bitmask_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+VTSelectInputObject__Bitmask_template::VTSelectInputObject__Bitmask_template(const VTSelectInputObject__Bitmask& other_value)
+{
+copy_value(other_value);
+}
+
+VTSelectInputObject__Bitmask_template::VTSelectInputObject__Bitmask_template(const OPTIONAL<VTSelectInputObject__Bitmask>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTSelectInputObject__Bitmask&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.VTSelectInputObject_Bitmask from an unbound optional field.");
+}
+}
+
+VTSelectInputObject__Bitmask_template::VTSelectInputObject__Bitmask_template(const VTSelectInputObject__Bitmask_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+VTSelectInputObject__Bitmask_template::~VTSelectInputObject__Bitmask_template()
+{
+clean_up();
+}
+
+VTSelectInputObject__Bitmask_template& VTSelectInputObject__Bitmask_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+VTSelectInputObject__Bitmask_template& VTSelectInputObject__Bitmask_template::operator=(const VTSelectInputObject__Bitmask& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+VTSelectInputObject__Bitmask_template& VTSelectInputObject__Bitmask_template::operator=(const OPTIONAL<VTSelectInputObject__Bitmask>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTSelectInputObject__Bitmask&)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 @IsobusVTMessageTypes.VTSelectInputObject_Bitmask.");
+}
+return *this;
+}
+
+VTSelectInputObject__Bitmask_template& VTSelectInputObject__Bitmask_template::operator=(const VTSelectInputObject__Bitmask_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean VTSelectInputObject__Bitmask_template::match(const VTSelectInputObject__Bitmask& 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.objectIsOpenForDataInput().is_bound()) return FALSE;
+if(!single_value->field_objectIsOpenForDataInput.match(other_value.objectIsOpenForDataInput(), legacy))return FALSE;
+if(!other_value.reserved1().is_bound()) return FALSE;
+if(!single_value->field_reserved1.match(other_value.reserved1(), legacy))return FALSE;
+if(!other_value.reserved2().is_bound()) return FALSE;
+if(!single_value->field_reserved2.match(other_value.reserved2(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTSelectInputObject_Bitmask.");
+}
+return FALSE;
+}
+
+boolean VTSelectInputObject__Bitmask_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_objectIsOpenForDataInput.is_bound()
+
+ ||single_value->field_reserved1.is_bound()
+
+ ||single_value->field_reserved2.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+;
+}
+
+boolean VTSelectInputObject__Bitmask_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_objectIsOpenForDataInput.is_value()
+ &&single_value->field_reserved1.is_value()
+ &&single_value->field_reserved2.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value();
+}
+
+void VTSelectInputObject__Bitmask_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+VTSelectInputObject__Bitmask VTSelectInputObject__Bitmask_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 @IsobusVTMessageTypes.VTSelectInputObject_Bitmask.");
+VTSelectInputObject__Bitmask ret_val;
+if (single_value->field_objectIsOpenForDataInput.is_bound()) {
+ret_val.objectIsOpenForDataInput() = single_value->field_objectIsOpenForDataInput.valueof();
+}
+if (single_value->field_reserved1.is_bound()) {
+ret_val.reserved1() = single_value->field_reserved1.valueof();
+}
+if (single_value->field_reserved2.is_bound()) {
+ret_val.reserved2() = single_value->field_reserved2.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+return ret_val;
+}
+
+void VTSelectInputObject__Bitmask_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.VTSelectInputObject_Bitmask.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new VTSelectInputObject__Bitmask_template[list_length];
+}
+
+VTSelectInputObject__Bitmask_template& VTSelectInputObject__Bitmask_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.VTSelectInputObject_Bitmask.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.VTSelectInputObject_Bitmask.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& VTSelectInputObject__Bitmask_template::objectIsOpenForDataInput()
+{
+set_specific();
+return single_value->field_objectIsOpenForDataInput;
+}
+
+const BOOLEAN_template& VTSelectInputObject__Bitmask_template::objectIsOpenForDataInput() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectIsOpenForDataInput of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObject_Bitmask.");
+return single_value->field_objectIsOpenForDataInput;
+}
+
+BOOLEAN_template& VTSelectInputObject__Bitmask_template::reserved1()
+{
+set_specific();
+return single_value->field_reserved1;
+}
+
+const BOOLEAN_template& VTSelectInputObject__Bitmask_template::reserved1() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved1 of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObject_Bitmask.");
+return single_value->field_reserved1;
+}
+
+BOOLEAN_template& VTSelectInputObject__Bitmask_template::reserved2()
+{
+set_specific();
+return single_value->field_reserved2;
+}
+
+const BOOLEAN_template& VTSelectInputObject__Bitmask_template::reserved2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved2 of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObject_Bitmask.");
+return single_value->field_reserved2;
+}
+
+BOOLEAN_template& VTSelectInputObject__Bitmask_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const BOOLEAN_template& VTSelectInputObject__Bitmask_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObject_Bitmask.");
+return single_value->field_reserved3;
+}
+
+BOOLEAN_template& VTSelectInputObject__Bitmask_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const BOOLEAN_template& VTSelectInputObject__Bitmask_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObject_Bitmask.");
+return single_value->field_reserved4;
+}
+
+BOOLEAN_template& VTSelectInputObject__Bitmask_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const BOOLEAN_template& VTSelectInputObject__Bitmask_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObject_Bitmask.");
+return single_value->field_reserved5;
+}
+
+BOOLEAN_template& VTSelectInputObject__Bitmask_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const BOOLEAN_template& VTSelectInputObject__Bitmask_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObject_Bitmask.");
+return single_value->field_reserved6;
+}
+
+BOOLEAN_template& VTSelectInputObject__Bitmask_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const BOOLEAN_template& VTSelectInputObject__Bitmask_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObject_Bitmask.");
+return single_value->field_reserved7;
+}
+
+int VTSelectInputObject__Bitmask_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTSelectInputObject_Bitmask which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTSelectInputObject_Bitmask 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 @IsobusVTMessageTypes.VTSelectInputObject_Bitmask containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTSelectInputObject_Bitmask containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTSelectInputObject_Bitmask containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTSelectInputObject_Bitmask containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTSelectInputObject_Bitmask.");
+  }
+  return 0;
+}
+
+void VTSelectInputObject__Bitmask_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ objectIsOpenForDataInput := ");
+single_value->field_objectIsOpenForDataInput.log();
+TTCN_Logger::log_event_str(", reserved1 := ");
+single_value->field_reserved1.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void VTSelectInputObject__Bitmask_template::log_match(const VTSelectInputObject__Bitmask& 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_objectIsOpenForDataInput.match(match_value.objectIsOpenForDataInput(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectIsOpenForDataInput");
+single_value->field_objectIsOpenForDataInput.log_match(match_value.objectIsOpenForDataInput(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved1.match(match_value.reserved1(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved1");
+single_value->field_reserved1.log_match(match_value.reserved1(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved2.match(match_value.reserved2(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved2");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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("{ objectIsOpenForDataInput := ");
+single_value->field_objectIsOpenForDataInput.log_match(match_value.objectIsOpenForDataInput(), legacy);
+TTCN_Logger::log_event_str(", reserved1 := ");
+single_value->field_reserved1.log_match(match_value.reserved1(), legacy);
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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 VTSelectInputObject__Bitmask_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_objectIsOpenForDataInput.encode_text(text_buf);
+single_value->field_reserved1.encode_text(text_buf);
+single_value->field_reserved2.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.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 @IsobusVTMessageTypes.VTSelectInputObject_Bitmask.");
+}
+}
+
+void VTSelectInputObject__Bitmask_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_objectIsOpenForDataInput.decode_text(text_buf);
+single_value->field_reserved1.decode_text(text_buf);
+single_value->field_reserved2.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.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 VTSelectInputObject__Bitmask_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 @IsobusVTMessageTypes.VTSelectInputObject_Bitmask.");
+}
+}
+
+void VTSelectInputObject__Bitmask_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: {
+    VTSelectInputObject__Bitmask_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.VTSelectInputObject_Bitmask has 8 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) objectIsOpenForDataInput().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved1().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "objectIsOpenForDataInput")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIsOpenForDataInput().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(), "reserved1")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved1().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.VTSelectInputObject_Bitmask: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.VTSelectInputObject_Bitmask");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void VTSelectInputObject__Bitmask_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_objectIsOpenForDataInput.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObject_Bitmask");
+single_value->field_reserved1.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObject_Bitmask");
+single_value->field_reserved2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObject_Bitmask");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObject_Bitmask");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObject_Bitmask");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObject_Bitmask");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObject_Bitmask");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObject_Bitmask");
+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 : "@IsobusVTMessageTypes.VTSelectInputObject_Bitmask");
+}
+
+boolean VTSelectInputObject__Bitmask_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean VTSelectInputObject__Bitmask_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+VTSelectInputObject__v4AndLater__Bitmask::VTSelectInputObject__v4AndLater__Bitmask()
+{
+}
+
+VTSelectInputObject__v4AndLater__Bitmask::VTSelectInputObject__v4AndLater__Bitmask(const BOOLEAN& par_objectIsOpenForDataInput,
+    const BOOLEAN& par_reserved1,
+    const BOOLEAN& par_reserved2,
+    const BOOLEAN& par_reserved3,
+    const BOOLEAN& par_reserved4,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7)
+  :   field_objectIsOpenForDataInput(par_objectIsOpenForDataInput),
+  field_reserved1(par_reserved1),
+  field_reserved2(par_reserved2),
+  field_reserved3(par_reserved3),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7)
+{
+}
+
+VTSelectInputObject__v4AndLater__Bitmask::VTSelectInputObject__v4AndLater__Bitmask(const VTSelectInputObject__v4AndLater__Bitmask& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask.");
+if (other_value.objectIsOpenForDataInput().is_bound()) field_objectIsOpenForDataInput = other_value.objectIsOpenForDataInput();
+else field_objectIsOpenForDataInput.clean_up();
+if (other_value.reserved1().is_bound()) field_reserved1 = other_value.reserved1();
+else field_reserved1.clean_up();
+if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+else field_reserved2.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+}
+
+void VTSelectInputObject__v4AndLater__Bitmask::clean_up()
+{
+field_objectIsOpenForDataInput.clean_up();
+field_reserved1.clean_up();
+field_reserved2.clean_up();
+field_reserved3.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+}
+
+const TTCN_Typedescriptor_t* VTSelectInputObject__v4AndLater__Bitmask::get_descriptor() const { return &VTSelectInputObject__v4AndLater__Bitmask_descr_; }
+VTSelectInputObject__v4AndLater__Bitmask& VTSelectInputObject__v4AndLater__Bitmask::operator=(const VTSelectInputObject__v4AndLater__Bitmask& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask.");
+  if (other_value.objectIsOpenForDataInput().is_bound()) field_objectIsOpenForDataInput = other_value.objectIsOpenForDataInput();
+  else field_objectIsOpenForDataInput.clean_up();
+  if (other_value.reserved1().is_bound()) field_reserved1 = other_value.reserved1();
+  else field_reserved1.clean_up();
+  if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+  else field_reserved2.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+}
+return *this;
+}
+
+boolean VTSelectInputObject__v4AndLater__Bitmask::operator==(const VTSelectInputObject__v4AndLater__Bitmask& other_value) const
+{
+return field_objectIsOpenForDataInput==other_value.field_objectIsOpenForDataInput
+  && field_reserved1==other_value.field_reserved1
+  && field_reserved2==other_value.field_reserved2
+  && field_reserved3==other_value.field_reserved3
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7;
+}
+
+boolean VTSelectInputObject__v4AndLater__Bitmask::is_bound() const
+{
+return (field_objectIsOpenForDataInput.is_bound())
+  || (field_reserved1.is_bound())
+  || (field_reserved2.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound());
+}
+boolean VTSelectInputObject__v4AndLater__Bitmask::is_value() const
+{
+return field_objectIsOpenForDataInput.is_value()
+  && field_reserved1.is_value()
+  && field_reserved2.is_value()
+  && field_reserved3.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value();
+}
+void VTSelectInputObject__v4AndLater__Bitmask::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ objectIsOpenForDataInput := ");
+field_objectIsOpenForDataInput.log();
+TTCN_Logger::log_event_str(", reserved1 := ");
+field_reserved1.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void VTSelectInputObject__v4AndLater__Bitmask::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask has 8 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) objectIsOpenForDataInput().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved1().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "objectIsOpenForDataInput")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIsOpenForDataInput().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(), "reserved1")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved1().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask");
+  }
+}
+
+void VTSelectInputObject__v4AndLater__Bitmask::set_implicit_omit()
+{
+if (objectIsOpenForDataInput().is_bound()) objectIsOpenForDataInput().set_implicit_omit();
+if (reserved1().is_bound()) reserved1().set_implicit_omit();
+if (reserved2().is_bound()) reserved2().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+}
+
+void VTSelectInputObject__v4AndLater__Bitmask::encode_text(Text_Buf& text_buf) const
+{
+field_objectIsOpenForDataInput.encode_text(text_buf);
+field_reserved1.encode_text(text_buf);
+field_reserved2.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+}
+
+void VTSelectInputObject__v4AndLater__Bitmask::decode_text(Text_Buf& text_buf)
+{
+field_objectIsOpenForDataInput.decode_text(text_buf);
+field_reserved1.decode_text(text_buf);
+field_reserved2.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+}
+
+void VTSelectInputObject__v4AndLater__Bitmask::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void VTSelectInputObject__v4AndLater__Bitmask::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int VTSelectInputObject__v4AndLater__Bitmask::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_objectIsOpenForDataInput.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved1.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved2.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int VTSelectInputObject__v4AndLater__Bitmask::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_objectIsOpenForDataInput.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved1.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved2.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved3.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved4.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved5.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved6.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved7.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct VTSelectInputObject__v4AndLater__Bitmask_template::single_value_struct {
+BOOLEAN_template field_objectIsOpenForDataInput;
+BOOLEAN_template field_reserved1;
+BOOLEAN_template field_reserved2;
+BOOLEAN_template field_reserved3;
+BOOLEAN_template field_reserved4;
+BOOLEAN_template field_reserved5;
+BOOLEAN_template field_reserved6;
+BOOLEAN_template field_reserved7;
+};
+
+void VTSelectInputObject__v4AndLater__Bitmask_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_objectIsOpenForDataInput = ANY_VALUE;
+single_value->field_reserved1 = ANY_VALUE;
+single_value->field_reserved2 = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+}
+}
+}
+
+void VTSelectInputObject__v4AndLater__Bitmask_template::copy_value(const VTSelectInputObject__v4AndLater__Bitmask& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.objectIsOpenForDataInput().is_bound()) {
+  single_value->field_objectIsOpenForDataInput = other_value.objectIsOpenForDataInput();
+} else {
+  single_value->field_objectIsOpenForDataInput.clean_up();
+}
+if (other_value.reserved1().is_bound()) {
+  single_value->field_reserved1 = other_value.reserved1();
+} else {
+  single_value->field_reserved1.clean_up();
+}
+if (other_value.reserved2().is_bound()) {
+  single_value->field_reserved2 = other_value.reserved2();
+} else {
+  single_value->field_reserved2.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void VTSelectInputObject__v4AndLater__Bitmask_template::copy_template(const VTSelectInputObject__v4AndLater__Bitmask_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.objectIsOpenForDataInput().get_selection()) {
+single_value->field_objectIsOpenForDataInput = other_value.objectIsOpenForDataInput();
+} else {
+single_value->field_objectIsOpenForDataInput.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved1().get_selection()) {
+single_value->field_reserved1 = other_value.reserved1();
+} else {
+single_value->field_reserved1.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved2().get_selection()) {
+single_value->field_reserved2 = other_value.reserved2();
+} else {
+single_value->field_reserved2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new VTSelectInputObject__v4AndLater__Bitmask_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask.");
+break;
+}
+set_selection(other_value);
+}
+
+VTSelectInputObject__v4AndLater__Bitmask_template::VTSelectInputObject__v4AndLater__Bitmask_template()
+{
+}
+
+VTSelectInputObject__v4AndLater__Bitmask_template::VTSelectInputObject__v4AndLater__Bitmask_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+VTSelectInputObject__v4AndLater__Bitmask_template::VTSelectInputObject__v4AndLater__Bitmask_template(const VTSelectInputObject__v4AndLater__Bitmask& other_value)
+{
+copy_value(other_value);
+}
+
+VTSelectInputObject__v4AndLater__Bitmask_template::VTSelectInputObject__v4AndLater__Bitmask_template(const OPTIONAL<VTSelectInputObject__v4AndLater__Bitmask>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTSelectInputObject__v4AndLater__Bitmask&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask from an unbound optional field.");
+}
+}
+
+VTSelectInputObject__v4AndLater__Bitmask_template::VTSelectInputObject__v4AndLater__Bitmask_template(const VTSelectInputObject__v4AndLater__Bitmask_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+VTSelectInputObject__v4AndLater__Bitmask_template::~VTSelectInputObject__v4AndLater__Bitmask_template()
+{
+clean_up();
+}
+
+VTSelectInputObject__v4AndLater__Bitmask_template& VTSelectInputObject__v4AndLater__Bitmask_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+VTSelectInputObject__v4AndLater__Bitmask_template& VTSelectInputObject__v4AndLater__Bitmask_template::operator=(const VTSelectInputObject__v4AndLater__Bitmask& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+VTSelectInputObject__v4AndLater__Bitmask_template& VTSelectInputObject__v4AndLater__Bitmask_template::operator=(const OPTIONAL<VTSelectInputObject__v4AndLater__Bitmask>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTSelectInputObject__v4AndLater__Bitmask&)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 @IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask.");
+}
+return *this;
+}
+
+VTSelectInputObject__v4AndLater__Bitmask_template& VTSelectInputObject__v4AndLater__Bitmask_template::operator=(const VTSelectInputObject__v4AndLater__Bitmask_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean VTSelectInputObject__v4AndLater__Bitmask_template::match(const VTSelectInputObject__v4AndLater__Bitmask& 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.objectIsOpenForDataInput().is_bound()) return FALSE;
+if(!single_value->field_objectIsOpenForDataInput.match(other_value.objectIsOpenForDataInput(), legacy))return FALSE;
+if(!other_value.reserved1().is_bound()) return FALSE;
+if(!single_value->field_reserved1.match(other_value.reserved1(), legacy))return FALSE;
+if(!other_value.reserved2().is_bound()) return FALSE;
+if(!single_value->field_reserved2.match(other_value.reserved2(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask.");
+}
+return FALSE;
+}
+
+boolean VTSelectInputObject__v4AndLater__Bitmask_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_objectIsOpenForDataInput.is_bound()
+
+ ||single_value->field_reserved1.is_bound()
+
+ ||single_value->field_reserved2.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+;
+}
+
+boolean VTSelectInputObject__v4AndLater__Bitmask_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_objectIsOpenForDataInput.is_value()
+ &&single_value->field_reserved1.is_value()
+ &&single_value->field_reserved2.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value();
+}
+
+void VTSelectInputObject__v4AndLater__Bitmask_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+VTSelectInputObject__v4AndLater__Bitmask VTSelectInputObject__v4AndLater__Bitmask_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 @IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask.");
+VTSelectInputObject__v4AndLater__Bitmask ret_val;
+if (single_value->field_objectIsOpenForDataInput.is_bound()) {
+ret_val.objectIsOpenForDataInput() = single_value->field_objectIsOpenForDataInput.valueof();
+}
+if (single_value->field_reserved1.is_bound()) {
+ret_val.reserved1() = single_value->field_reserved1.valueof();
+}
+if (single_value->field_reserved2.is_bound()) {
+ret_val.reserved2() = single_value->field_reserved2.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+return ret_val;
+}
+
+void VTSelectInputObject__v4AndLater__Bitmask_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new VTSelectInputObject__v4AndLater__Bitmask_template[list_length];
+}
+
+VTSelectInputObject__v4AndLater__Bitmask_template& VTSelectInputObject__v4AndLater__Bitmask_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& VTSelectInputObject__v4AndLater__Bitmask_template::objectIsOpenForDataInput()
+{
+set_specific();
+return single_value->field_objectIsOpenForDataInput;
+}
+
+const BOOLEAN_template& VTSelectInputObject__v4AndLater__Bitmask_template::objectIsOpenForDataInput() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectIsOpenForDataInput of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask.");
+return single_value->field_objectIsOpenForDataInput;
+}
+
+BOOLEAN_template& VTSelectInputObject__v4AndLater__Bitmask_template::reserved1()
+{
+set_specific();
+return single_value->field_reserved1;
+}
+
+const BOOLEAN_template& VTSelectInputObject__v4AndLater__Bitmask_template::reserved1() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved1 of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask.");
+return single_value->field_reserved1;
+}
+
+BOOLEAN_template& VTSelectInputObject__v4AndLater__Bitmask_template::reserved2()
+{
+set_specific();
+return single_value->field_reserved2;
+}
+
+const BOOLEAN_template& VTSelectInputObject__v4AndLater__Bitmask_template::reserved2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved2 of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask.");
+return single_value->field_reserved2;
+}
+
+BOOLEAN_template& VTSelectInputObject__v4AndLater__Bitmask_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const BOOLEAN_template& VTSelectInputObject__v4AndLater__Bitmask_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask.");
+return single_value->field_reserved3;
+}
+
+BOOLEAN_template& VTSelectInputObject__v4AndLater__Bitmask_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const BOOLEAN_template& VTSelectInputObject__v4AndLater__Bitmask_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask.");
+return single_value->field_reserved4;
+}
+
+BOOLEAN_template& VTSelectInputObject__v4AndLater__Bitmask_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const BOOLEAN_template& VTSelectInputObject__v4AndLater__Bitmask_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask.");
+return single_value->field_reserved5;
+}
+
+BOOLEAN_template& VTSelectInputObject__v4AndLater__Bitmask_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const BOOLEAN_template& VTSelectInputObject__v4AndLater__Bitmask_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask.");
+return single_value->field_reserved6;
+}
+
+BOOLEAN_template& VTSelectInputObject__v4AndLater__Bitmask_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const BOOLEAN_template& VTSelectInputObject__v4AndLater__Bitmask_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask.");
+return single_value->field_reserved7;
+}
+
+int VTSelectInputObject__v4AndLater__Bitmask_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask 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 @IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask.");
+  }
+  return 0;
+}
+
+void VTSelectInputObject__v4AndLater__Bitmask_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ objectIsOpenForDataInput := ");
+single_value->field_objectIsOpenForDataInput.log();
+TTCN_Logger::log_event_str(", reserved1 := ");
+single_value->field_reserved1.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void VTSelectInputObject__v4AndLater__Bitmask_template::log_match(const VTSelectInputObject__v4AndLater__Bitmask& 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_objectIsOpenForDataInput.match(match_value.objectIsOpenForDataInput(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectIsOpenForDataInput");
+single_value->field_objectIsOpenForDataInput.log_match(match_value.objectIsOpenForDataInput(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved1.match(match_value.reserved1(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved1");
+single_value->field_reserved1.log_match(match_value.reserved1(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved2.match(match_value.reserved2(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved2");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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("{ objectIsOpenForDataInput := ");
+single_value->field_objectIsOpenForDataInput.log_match(match_value.objectIsOpenForDataInput(), legacy);
+TTCN_Logger::log_event_str(", reserved1 := ");
+single_value->field_reserved1.log_match(match_value.reserved1(), legacy);
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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 VTSelectInputObject__v4AndLater__Bitmask_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_objectIsOpenForDataInput.encode_text(text_buf);
+single_value->field_reserved1.encode_text(text_buf);
+single_value->field_reserved2.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.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 @IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask.");
+}
+}
+
+void VTSelectInputObject__v4AndLater__Bitmask_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_objectIsOpenForDataInput.decode_text(text_buf);
+single_value->field_reserved1.decode_text(text_buf);
+single_value->field_reserved2.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.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 VTSelectInputObject__v4AndLater__Bitmask_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 @IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask.");
+}
+}
+
+void VTSelectInputObject__v4AndLater__Bitmask_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: {
+    VTSelectInputObject__v4AndLater__Bitmask_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask has 8 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) objectIsOpenForDataInput().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved1().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "objectIsOpenForDataInput")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIsOpenForDataInput().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(), "reserved1")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved1().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void VTSelectInputObject__v4AndLater__Bitmask_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_objectIsOpenForDataInput.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask");
+single_value->field_reserved1.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask");
+single_value->field_reserved2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask");
+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 : "@IsobusVTMessageTypes.VTSelectInputObject_v4AndLater_Bitmask");
+}
+
+boolean VTSelectInputObject__v4AndLater__Bitmask_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean VTSelectInputObject__v4AndLater__Bitmask_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+VTSelectInputObjectReq::VTSelectInputObjectReq()
+{
+}
+
+VTSelectInputObjectReq::VTSelectInputObjectReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const e__VTSelectInputObject__selection& par_selection,
+    const VTSelectInputObject__Bitmask& par_bitmask,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_objectID(par_objectID),
+  field_selection(par_selection),
+  field_bitmask(par_bitmask),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+VTSelectInputObjectReq::VTSelectInputObjectReq(const VTSelectInputObjectReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.VTSelectInputObjectReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+else field_objectID.clean_up();
+if (other_value.selection().is_bound()) field_selection = other_value.selection();
+else field_selection.clean_up();
+if (other_value.bitmask().is_bound()) field_bitmask = other_value.bitmask();
+else field_bitmask.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void VTSelectInputObjectReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectID.clean_up();
+field_selection.clean_up();
+field_bitmask.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* VTSelectInputObjectReq::get_descriptor() const { return &VTSelectInputObjectReq_descr_; }
+VTSelectInputObjectReq& VTSelectInputObjectReq::operator=(const VTSelectInputObjectReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.VTSelectInputObjectReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+  else field_objectID.clean_up();
+  if (other_value.selection().is_bound()) field_selection = other_value.selection();
+  else field_selection.clean_up();
+  if (other_value.bitmask().is_bound()) field_bitmask = other_value.bitmask();
+  else field_bitmask.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean VTSelectInputObjectReq::operator==(const VTSelectInputObjectReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectID==other_value.field_objectID
+  && field_selection==other_value.field_selection
+  && field_bitmask==other_value.field_bitmask
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean VTSelectInputObjectReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectID.is_bound())
+  || (field_selection.is_bound())
+  || (field_bitmask.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean VTSelectInputObjectReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectID.is_value()
+  && field_selection.is_value()
+  && field_bitmask.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void VTSelectInputObjectReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+field_objectID.log();
+TTCN_Logger::log_event_str(", selection := ");
+field_selection.log();
+TTCN_Logger::log_event_str(", bitmask := ");
+field_bitmask.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void VTSelectInputObjectReq::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 @IsobusVTMessageTypes.VTSelectInputObjectReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) selection().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) bitmask().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "selection")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          selection().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(), "bitmask")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          bitmask().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.VTSelectInputObjectReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.VTSelectInputObjectReq");
+  }
+}
+
+void VTSelectInputObjectReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectID().is_bound()) objectID().set_implicit_omit();
+if (selection().is_bound()) selection().set_implicit_omit();
+if (bitmask().is_bound()) bitmask().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void VTSelectInputObjectReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectID.encode_text(text_buf);
+field_selection.encode_text(text_buf);
+field_bitmask.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void VTSelectInputObjectReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectID.decode_text(text_buf);
+field_selection.decode_text(text_buf);
+field_bitmask.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void VTSelectInputObjectReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void VTSelectInputObjectReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int VTSelectInputObjectReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectID.RAW_decode(ValidObjectID_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, e__VTSelectInputObject__selection_descr_.raw->forceomit);
+  decoded_field_length = field_selection.RAW_decode(e__VTSelectInputObject__selection_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, VTSelectInputObject__Bitmask_descr_.raw->forceomit);
+  decoded_field_length = field_bitmask.RAW_decode(VTSelectInputObject__Bitmask_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, VTSelectInputObjectReq_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(VTSelectInputObjectReq_reserved6_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, VTSelectInputObjectReq_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(VTSelectInputObjectReq_reserved7_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, VTSelectInputObjectReq_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(VTSelectInputObjectReq_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int VTSelectInputObjectReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, e__VTSelectInputObject__selection_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, VTSelectInputObject__Bitmask_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, VTSelectInputObjectReq_reserved6_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, VTSelectInputObjectReq_reserved7_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, VTSelectInputObjectReq_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_selection.RAW_encode(e__VTSelectInputObject__selection_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_bitmask.RAW_encode(VTSelectInputObject__Bitmask_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved6.RAW_encode(VTSelectInputObjectReq_reserved6_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved7.RAW_encode(VTSelectInputObjectReq_reserved7_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved8.RAW_encode(VTSelectInputObjectReq_reserved8_descr_, *myleaf.body.node.nodes[6]);
+  return myleaf.length = encoded_length;
+}
+
+struct VTSelectInputObjectReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectID;
+e__VTSelectInputObject__selection_template field_selection;
+VTSelectInputObject__Bitmask_template field_bitmask;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void VTSelectInputObjectReq_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_vtfunction = ANY_VALUE;
+single_value->field_objectID = ANY_VALUE;
+single_value->field_selection = ANY_VALUE;
+single_value->field_bitmask = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void VTSelectInputObjectReq_template::copy_value(const VTSelectInputObjectReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectID().is_bound()) {
+  single_value->field_objectID = other_value.objectID();
+} else {
+  single_value->field_objectID.clean_up();
+}
+if (other_value.selection().is_bound()) {
+  single_value->field_selection = other_value.selection();
+} else {
+  single_value->field_selection.clean_up();
+}
+if (other_value.bitmask().is_bound()) {
+  single_value->field_bitmask = other_value.bitmask();
+} else {
+  single_value->field_bitmask.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void VTSelectInputObjectReq_template::copy_template(const VTSelectInputObjectReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectID().get_selection()) {
+single_value->field_objectID = other_value.objectID();
+} else {
+single_value->field_objectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.selection().get_selection()) {
+single_value->field_selection = other_value.selection();
+} else {
+single_value->field_selection.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.bitmask().get_selection()) {
+single_value->field_bitmask = other_value.bitmask();
+} else {
+single_value->field_bitmask.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new VTSelectInputObjectReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTSelectInputObjectReq.");
+break;
+}
+set_selection(other_value);
+}
+
+VTSelectInputObjectReq_template::VTSelectInputObjectReq_template()
+{
+}
+
+VTSelectInputObjectReq_template::VTSelectInputObjectReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+VTSelectInputObjectReq_template::VTSelectInputObjectReq_template(const VTSelectInputObjectReq& other_value)
+{
+copy_value(other_value);
+}
+
+VTSelectInputObjectReq_template::VTSelectInputObjectReq_template(const OPTIONAL<VTSelectInputObjectReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTSelectInputObjectReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.VTSelectInputObjectReq from an unbound optional field.");
+}
+}
+
+VTSelectInputObjectReq_template::VTSelectInputObjectReq_template(const VTSelectInputObjectReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+VTSelectInputObjectReq_template::~VTSelectInputObjectReq_template()
+{
+clean_up();
+}
+
+VTSelectInputObjectReq_template& VTSelectInputObjectReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+VTSelectInputObjectReq_template& VTSelectInputObjectReq_template::operator=(const VTSelectInputObjectReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+VTSelectInputObjectReq_template& VTSelectInputObjectReq_template::operator=(const OPTIONAL<VTSelectInputObjectReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTSelectInputObjectReq&)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 @IsobusVTMessageTypes.VTSelectInputObjectReq.");
+}
+return *this;
+}
+
+VTSelectInputObjectReq_template& VTSelectInputObjectReq_template::operator=(const VTSelectInputObjectReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean VTSelectInputObjectReq_template::match(const VTSelectInputObjectReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectID().is_bound()) return FALSE;
+if(!single_value->field_objectID.match(other_value.objectID(), legacy))return FALSE;
+if(!other_value.selection().is_bound()) return FALSE;
+if(!single_value->field_selection.match(other_value.selection(), legacy))return FALSE;
+if(!other_value.bitmask().is_bound()) return FALSE;
+if(!single_value->field_bitmask.match(other_value.bitmask(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTSelectInputObjectReq.");
+}
+return FALSE;
+}
+
+boolean VTSelectInputObjectReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectID.is_bound()
+
+ ||single_value->field_selection.is_bound()
+
+ ||single_value->field_bitmask.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean VTSelectInputObjectReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectID.is_value()
+ &&single_value->field_selection.is_value()
+ &&single_value->field_bitmask.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void VTSelectInputObjectReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+VTSelectInputObjectReq VTSelectInputObjectReq_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 @IsobusVTMessageTypes.VTSelectInputObjectReq.");
+VTSelectInputObjectReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectID.is_bound()) {
+ret_val.objectID() = single_value->field_objectID.valueof();
+}
+if (single_value->field_selection.is_bound()) {
+ret_val.selection() = single_value->field_selection.valueof();
+}
+if (single_value->field_bitmask.is_bound()) {
+ret_val.bitmask() = single_value->field_bitmask.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void VTSelectInputObjectReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.VTSelectInputObjectReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new VTSelectInputObjectReq_template[list_length];
+}
+
+VTSelectInputObjectReq_template& VTSelectInputObjectReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.VTSelectInputObjectReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.VTSelectInputObjectReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& VTSelectInputObjectReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& VTSelectInputObjectReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObjectReq.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& VTSelectInputObjectReq_template::objectID()
+{
+set_specific();
+return single_value->field_objectID;
+}
+
+const INTEGER_template& VTSelectInputObjectReq_template::objectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectID of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObjectReq.");
+return single_value->field_objectID;
+}
+
+e__VTSelectInputObject__selection_template& VTSelectInputObjectReq_template::selection()
+{
+set_specific();
+return single_value->field_selection;
+}
+
+const e__VTSelectInputObject__selection_template& VTSelectInputObjectReq_template::selection() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field selection of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObjectReq.");
+return single_value->field_selection;
+}
+
+VTSelectInputObject__Bitmask_template& VTSelectInputObjectReq_template::bitmask()
+{
+set_specific();
+return single_value->field_bitmask;
+}
+
+const VTSelectInputObject__Bitmask_template& VTSelectInputObjectReq_template::bitmask() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field bitmask of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObjectReq.");
+return single_value->field_bitmask;
+}
+
+OCTETSTRING_template& VTSelectInputObjectReq_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& VTSelectInputObjectReq_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObjectReq.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& VTSelectInputObjectReq_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& VTSelectInputObjectReq_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObjectReq.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& VTSelectInputObjectReq_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& VTSelectInputObjectReq_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObjectReq.");
+return single_value->field_reserved8;
+}
+
+int VTSelectInputObjectReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTSelectInputObjectReq 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 @IsobusVTMessageTypes.VTSelectInputObjectReq 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 @IsobusVTMessageTypes.VTSelectInputObjectReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTSelectInputObjectReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTSelectInputObjectReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTSelectInputObjectReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTSelectInputObjectReq.");
+  }
+  return 0;
+}
+
+void VTSelectInputObjectReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log();
+TTCN_Logger::log_event_str(", selection := ");
+single_value->field_selection.log();
+TTCN_Logger::log_event_str(", bitmask := ");
+single_value->field_bitmask.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void VTSelectInputObjectReq_template::log_match(const VTSelectInputObjectReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectID.match(match_value.objectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectID");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_selection.match(match_value.selection(), legacy)){
+TTCN_Logger::log_logmatch_info(".selection");
+single_value->field_selection.log_match(match_value.selection(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_bitmask.match(match_value.bitmask(), legacy)){
+TTCN_Logger::log_logmatch_info(".bitmask");
+single_value->field_bitmask.log_match(match_value.bitmask(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::log_event_str(", selection := ");
+single_value->field_selection.log_match(match_value.selection(), legacy);
+TTCN_Logger::log_event_str(", bitmask := ");
+single_value->field_bitmask.log_match(match_value.bitmask(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 VTSelectInputObjectReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectID.encode_text(text_buf);
+single_value->field_selection.encode_text(text_buf);
+single_value->field_bitmask.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.VTSelectInputObjectReq.");
+}
+}
+
+void VTSelectInputObjectReq_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_vtfunction.decode_text(text_buf);
+single_value->field_objectID.decode_text(text_buf);
+single_value->field_selection.decode_text(text_buf);
+single_value->field_bitmask.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 VTSelectInputObjectReq_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 @IsobusVTMessageTypes.VTSelectInputObjectReq.");
+}
+}
+
+void VTSelectInputObjectReq_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: {
+    VTSelectInputObjectReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.VTSelectInputObjectReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) selection().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) bitmask().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "selection")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          selection().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(), "bitmask")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          bitmask().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.VTSelectInputObjectReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.VTSelectInputObjectReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void VTSelectInputObjectReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObjectReq");
+single_value->field_objectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObjectReq");
+single_value->field_selection.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObjectReq");
+single_value->field_bitmask.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObjectReq");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObjectReq");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObjectReq");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObjectReq");
+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 : "@IsobusVTMessageTypes.VTSelectInputObjectReq");
+}
+
+boolean VTSelectInputObjectReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean VTSelectInputObjectReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+VTSelectInputObjectReq__v3AndPrior::VTSelectInputObjectReq__v3AndPrior()
+{
+}
+
+VTSelectInputObjectReq__v3AndPrior::VTSelectInputObjectReq__v3AndPrior(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const e__VTSelectInputObject__selection& par_selection,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_objectID(par_objectID),
+  field_selection(par_selection),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+VTSelectInputObjectReq__v3AndPrior::VTSelectInputObjectReq__v3AndPrior(const VTSelectInputObjectReq__v3AndPrior& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+else field_objectID.clean_up();
+if (other_value.selection().is_bound()) field_selection = other_value.selection();
+else field_selection.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void VTSelectInputObjectReq__v3AndPrior::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectID.clean_up();
+field_selection.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* VTSelectInputObjectReq__v3AndPrior::get_descriptor() const { return &VTSelectInputObjectReq__v3AndPrior_descr_; }
+VTSelectInputObjectReq__v3AndPrior& VTSelectInputObjectReq__v3AndPrior::operator=(const VTSelectInputObjectReq__v3AndPrior& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+  else field_objectID.clean_up();
+  if (other_value.selection().is_bound()) field_selection = other_value.selection();
+  else field_selection.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean VTSelectInputObjectReq__v3AndPrior::operator==(const VTSelectInputObjectReq__v3AndPrior& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectID==other_value.field_objectID
+  && field_selection==other_value.field_selection
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean VTSelectInputObjectReq__v3AndPrior::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectID.is_bound())
+  || (field_selection.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean VTSelectInputObjectReq__v3AndPrior::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectID.is_value()
+  && field_selection.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void VTSelectInputObjectReq__v3AndPrior::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+field_objectID.log();
+TTCN_Logger::log_event_str(", selection := ");
+field_selection.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void VTSelectInputObjectReq__v3AndPrior::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 @IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) selection().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "selection")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          selection().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior");
+  }
+}
+
+void VTSelectInputObjectReq__v3AndPrior::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectID().is_bound()) objectID().set_implicit_omit();
+if (selection().is_bound()) selection().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void VTSelectInputObjectReq__v3AndPrior::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectID.encode_text(text_buf);
+field_selection.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void VTSelectInputObjectReq__v3AndPrior::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectID.decode_text(text_buf);
+field_selection.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void VTSelectInputObjectReq__v3AndPrior::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void VTSelectInputObjectReq__v3AndPrior::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int VTSelectInputObjectReq__v3AndPrior::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectID.RAW_decode(ValidObjectID_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, e__VTSelectInputObject__selection_descr_.raw->forceomit);
+  decoded_field_length = field_selection.RAW_decode(e__VTSelectInputObject__selection_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, VTSelectInputObjectReq__v3AndPrior_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(VTSelectInputObjectReq__v3AndPrior_reserved5_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, VTSelectInputObjectReq__v3AndPrior_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(VTSelectInputObjectReq__v3AndPrior_reserved6_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, VTSelectInputObjectReq__v3AndPrior_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(VTSelectInputObjectReq__v3AndPrior_reserved7_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, VTSelectInputObjectReq__v3AndPrior_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(VTSelectInputObjectReq__v3AndPrior_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int VTSelectInputObjectReq__v3AndPrior::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, e__VTSelectInputObject__selection_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, VTSelectInputObjectReq__v3AndPrior_reserved5_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, VTSelectInputObjectReq__v3AndPrior_reserved6_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, VTSelectInputObjectReq__v3AndPrior_reserved7_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, VTSelectInputObjectReq__v3AndPrior_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_selection.RAW_encode(e__VTSelectInputObject__selection_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved5.RAW_encode(VTSelectInputObjectReq__v3AndPrior_reserved5_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved6.RAW_encode(VTSelectInputObjectReq__v3AndPrior_reserved6_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved7.RAW_encode(VTSelectInputObjectReq__v3AndPrior_reserved7_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved8.RAW_encode(VTSelectInputObjectReq__v3AndPrior_reserved8_descr_, *myleaf.body.node.nodes[6]);
+  return myleaf.length = encoded_length;
+}
+
+struct VTSelectInputObjectReq__v3AndPrior_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectID;
+e__VTSelectInputObject__selection_template field_selection;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void VTSelectInputObjectReq__v3AndPrior_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_vtfunction = ANY_VALUE;
+single_value->field_objectID = ANY_VALUE;
+single_value->field_selection = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void VTSelectInputObjectReq__v3AndPrior_template::copy_value(const VTSelectInputObjectReq__v3AndPrior& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectID().is_bound()) {
+  single_value->field_objectID = other_value.objectID();
+} else {
+  single_value->field_objectID.clean_up();
+}
+if (other_value.selection().is_bound()) {
+  single_value->field_selection = other_value.selection();
+} else {
+  single_value->field_selection.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void VTSelectInputObjectReq__v3AndPrior_template::copy_template(const VTSelectInputObjectReq__v3AndPrior_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectID().get_selection()) {
+single_value->field_objectID = other_value.objectID();
+} else {
+single_value->field_objectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.selection().get_selection()) {
+single_value->field_selection = other_value.selection();
+} else {
+single_value->field_selection.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new VTSelectInputObjectReq__v3AndPrior_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior.");
+break;
+}
+set_selection(other_value);
+}
+
+VTSelectInputObjectReq__v3AndPrior_template::VTSelectInputObjectReq__v3AndPrior_template()
+{
+}
+
+VTSelectInputObjectReq__v3AndPrior_template::VTSelectInputObjectReq__v3AndPrior_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+VTSelectInputObjectReq__v3AndPrior_template::VTSelectInputObjectReq__v3AndPrior_template(const VTSelectInputObjectReq__v3AndPrior& other_value)
+{
+copy_value(other_value);
+}
+
+VTSelectInputObjectReq__v3AndPrior_template::VTSelectInputObjectReq__v3AndPrior_template(const OPTIONAL<VTSelectInputObjectReq__v3AndPrior>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTSelectInputObjectReq__v3AndPrior&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior from an unbound optional field.");
+}
+}
+
+VTSelectInputObjectReq__v3AndPrior_template::VTSelectInputObjectReq__v3AndPrior_template(const VTSelectInputObjectReq__v3AndPrior_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+VTSelectInputObjectReq__v3AndPrior_template::~VTSelectInputObjectReq__v3AndPrior_template()
+{
+clean_up();
+}
+
+VTSelectInputObjectReq__v3AndPrior_template& VTSelectInputObjectReq__v3AndPrior_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+VTSelectInputObjectReq__v3AndPrior_template& VTSelectInputObjectReq__v3AndPrior_template::operator=(const VTSelectInputObjectReq__v3AndPrior& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+VTSelectInputObjectReq__v3AndPrior_template& VTSelectInputObjectReq__v3AndPrior_template::operator=(const OPTIONAL<VTSelectInputObjectReq__v3AndPrior>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTSelectInputObjectReq__v3AndPrior&)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 @IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior.");
+}
+return *this;
+}
+
+VTSelectInputObjectReq__v3AndPrior_template& VTSelectInputObjectReq__v3AndPrior_template::operator=(const VTSelectInputObjectReq__v3AndPrior_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean VTSelectInputObjectReq__v3AndPrior_template::match(const VTSelectInputObjectReq__v3AndPrior& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectID().is_bound()) return FALSE;
+if(!single_value->field_objectID.match(other_value.objectID(), legacy))return FALSE;
+if(!other_value.selection().is_bound()) return FALSE;
+if(!single_value->field_selection.match(other_value.selection(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior.");
+}
+return FALSE;
+}
+
+boolean VTSelectInputObjectReq__v3AndPrior_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectID.is_bound()
+
+ ||single_value->field_selection.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean VTSelectInputObjectReq__v3AndPrior_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectID.is_value()
+ &&single_value->field_selection.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void VTSelectInputObjectReq__v3AndPrior_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+VTSelectInputObjectReq__v3AndPrior VTSelectInputObjectReq__v3AndPrior_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 @IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior.");
+VTSelectInputObjectReq__v3AndPrior ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectID.is_bound()) {
+ret_val.objectID() = single_value->field_objectID.valueof();
+}
+if (single_value->field_selection.is_bound()) {
+ret_val.selection() = single_value->field_selection.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void VTSelectInputObjectReq__v3AndPrior_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new VTSelectInputObjectReq__v3AndPrior_template[list_length];
+}
+
+VTSelectInputObjectReq__v3AndPrior_template& VTSelectInputObjectReq__v3AndPrior_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& VTSelectInputObjectReq__v3AndPrior_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& VTSelectInputObjectReq__v3AndPrior_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& VTSelectInputObjectReq__v3AndPrior_template::objectID()
+{
+set_specific();
+return single_value->field_objectID;
+}
+
+const INTEGER_template& VTSelectInputObjectReq__v3AndPrior_template::objectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectID of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior.");
+return single_value->field_objectID;
+}
+
+e__VTSelectInputObject__selection_template& VTSelectInputObjectReq__v3AndPrior_template::selection()
+{
+set_specific();
+return single_value->field_selection;
+}
+
+const e__VTSelectInputObject__selection_template& VTSelectInputObjectReq__v3AndPrior_template::selection() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field selection of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior.");
+return single_value->field_selection;
+}
+
+OCTETSTRING_template& VTSelectInputObjectReq__v3AndPrior_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& VTSelectInputObjectReq__v3AndPrior_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& VTSelectInputObjectReq__v3AndPrior_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& VTSelectInputObjectReq__v3AndPrior_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& VTSelectInputObjectReq__v3AndPrior_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& VTSelectInputObjectReq__v3AndPrior_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& VTSelectInputObjectReq__v3AndPrior_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& VTSelectInputObjectReq__v3AndPrior_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior.");
+return single_value->field_reserved8;
+}
+
+int VTSelectInputObjectReq__v3AndPrior_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior 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 @IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior 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 @IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior.");
+  }
+  return 0;
+}
+
+void VTSelectInputObjectReq__v3AndPrior_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log();
+TTCN_Logger::log_event_str(", selection := ");
+single_value->field_selection.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void VTSelectInputObjectReq__v3AndPrior_template::log_match(const VTSelectInputObjectReq__v3AndPrior& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectID.match(match_value.objectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectID");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_selection.match(match_value.selection(), legacy)){
+TTCN_Logger::log_logmatch_info(".selection");
+single_value->field_selection.log_match(match_value.selection(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::log_event_str(", selection := ");
+single_value->field_selection.log_match(match_value.selection(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 VTSelectInputObjectReq__v3AndPrior_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectID.encode_text(text_buf);
+single_value->field_selection.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior.");
+}
+}
+
+void VTSelectInputObjectReq__v3AndPrior_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_vtfunction.decode_text(text_buf);
+single_value->field_objectID.decode_text(text_buf);
+single_value->field_selection.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 VTSelectInputObjectReq__v3AndPrior_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 @IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior.");
+}
+}
+
+void VTSelectInputObjectReq__v3AndPrior_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: {
+    VTSelectInputObjectReq__v3AndPrior_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) selection().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "selection")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          selection().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void VTSelectInputObjectReq__v3AndPrior_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior");
+single_value->field_objectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior");
+single_value->field_selection.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior");
+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 : "@IsobusVTMessageTypes.VTSelectInputObjectReq_v3AndPrior");
+}
+
+boolean VTSelectInputObjectReq__v3AndPrior_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean VTSelectInputObjectReq__v3AndPrior_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+VTSelectInputObjectReq__v4AndLater::VTSelectInputObjectReq__v4AndLater()
+{
+}
+
+VTSelectInputObjectReq__v4AndLater::VTSelectInputObjectReq__v4AndLater(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const e__VTSelectInputObject__selection& par_selection,
+    const VTSelectInputObject__v4AndLater__Bitmask& par_bitmask,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_objectID(par_objectID),
+  field_selection(par_selection),
+  field_bitmask(par_bitmask),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+VTSelectInputObjectReq__v4AndLater::VTSelectInputObjectReq__v4AndLater(const VTSelectInputObjectReq__v4AndLater& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.VTSelectInputObjectReq_v4AndLater.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+else field_objectID.clean_up();
+if (other_value.selection().is_bound()) field_selection = other_value.selection();
+else field_selection.clean_up();
+if (other_value.bitmask().is_bound()) field_bitmask = other_value.bitmask();
+else field_bitmask.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void VTSelectInputObjectReq__v4AndLater::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectID.clean_up();
+field_selection.clean_up();
+field_bitmask.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* VTSelectInputObjectReq__v4AndLater::get_descriptor() const { return &VTSelectInputObjectReq__v4AndLater_descr_; }
+VTSelectInputObjectReq__v4AndLater& VTSelectInputObjectReq__v4AndLater::operator=(const VTSelectInputObjectReq__v4AndLater& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.VTSelectInputObjectReq_v4AndLater.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+  else field_objectID.clean_up();
+  if (other_value.selection().is_bound()) field_selection = other_value.selection();
+  else field_selection.clean_up();
+  if (other_value.bitmask().is_bound()) field_bitmask = other_value.bitmask();
+  else field_bitmask.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean VTSelectInputObjectReq__v4AndLater::operator==(const VTSelectInputObjectReq__v4AndLater& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectID==other_value.field_objectID
+  && field_selection==other_value.field_selection
+  && field_bitmask==other_value.field_bitmask
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean VTSelectInputObjectReq__v4AndLater::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectID.is_bound())
+  || (field_selection.is_bound())
+  || (field_bitmask.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean VTSelectInputObjectReq__v4AndLater::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectID.is_value()
+  && field_selection.is_value()
+  && field_bitmask.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void VTSelectInputObjectReq__v4AndLater::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+field_objectID.log();
+TTCN_Logger::log_event_str(", selection := ");
+field_selection.log();
+TTCN_Logger::log_event_str(", bitmask := ");
+field_bitmask.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void VTSelectInputObjectReq__v4AndLater::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 @IsobusVTMessageTypes.VTSelectInputObjectReq_v4AndLater 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) selection().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) bitmask().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "selection")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          selection().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(), "bitmask")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          bitmask().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.VTSelectInputObjectReq_v4AndLater: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.VTSelectInputObjectReq_v4AndLater");
+  }
+}
+
+void VTSelectInputObjectReq__v4AndLater::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectID().is_bound()) objectID().set_implicit_omit();
+if (selection().is_bound()) selection().set_implicit_omit();
+if (bitmask().is_bound()) bitmask().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void VTSelectInputObjectReq__v4AndLater::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectID.encode_text(text_buf);
+field_selection.encode_text(text_buf);
+field_bitmask.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void VTSelectInputObjectReq__v4AndLater::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectID.decode_text(text_buf);
+field_selection.decode_text(text_buf);
+field_bitmask.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void VTSelectInputObjectReq__v4AndLater::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void VTSelectInputObjectReq__v4AndLater::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int VTSelectInputObjectReq__v4AndLater::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectID.RAW_decode(ValidObjectID_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, e__VTSelectInputObject__selection_descr_.raw->forceomit);
+  decoded_field_length = field_selection.RAW_decode(e__VTSelectInputObject__selection_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, VTSelectInputObject__v4AndLater__Bitmask_descr_.raw->forceomit);
+  decoded_field_length = field_bitmask.RAW_decode(VTSelectInputObject__v4AndLater__Bitmask_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, VTSelectInputObjectReq__v4AndLater_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(VTSelectInputObjectReq__v4AndLater_reserved6_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, VTSelectInputObjectReq__v4AndLater_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(VTSelectInputObjectReq__v4AndLater_reserved7_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, VTSelectInputObjectReq__v4AndLater_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(VTSelectInputObjectReq__v4AndLater_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int VTSelectInputObjectReq__v4AndLater::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, e__VTSelectInputObject__selection_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, VTSelectInputObject__v4AndLater__Bitmask_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, VTSelectInputObjectReq__v4AndLater_reserved6_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, VTSelectInputObjectReq__v4AndLater_reserved7_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, VTSelectInputObjectReq__v4AndLater_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_selection.RAW_encode(e__VTSelectInputObject__selection_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_bitmask.RAW_encode(VTSelectInputObject__v4AndLater__Bitmask_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved6.RAW_encode(VTSelectInputObjectReq__v4AndLater_reserved6_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved7.RAW_encode(VTSelectInputObjectReq__v4AndLater_reserved7_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved8.RAW_encode(VTSelectInputObjectReq__v4AndLater_reserved8_descr_, *myleaf.body.node.nodes[6]);
+  return myleaf.length = encoded_length;
+}
+
+struct VTSelectInputObjectReq__v4AndLater_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectID;
+e__VTSelectInputObject__selection_template field_selection;
+VTSelectInputObject__v4AndLater__Bitmask_template field_bitmask;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void VTSelectInputObjectReq__v4AndLater_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_vtfunction = ANY_VALUE;
+single_value->field_objectID = ANY_VALUE;
+single_value->field_selection = ANY_VALUE;
+single_value->field_bitmask = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void VTSelectInputObjectReq__v4AndLater_template::copy_value(const VTSelectInputObjectReq__v4AndLater& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectID().is_bound()) {
+  single_value->field_objectID = other_value.objectID();
+} else {
+  single_value->field_objectID.clean_up();
+}
+if (other_value.selection().is_bound()) {
+  single_value->field_selection = other_value.selection();
+} else {
+  single_value->field_selection.clean_up();
+}
+if (other_value.bitmask().is_bound()) {
+  single_value->field_bitmask = other_value.bitmask();
+} else {
+  single_value->field_bitmask.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void VTSelectInputObjectReq__v4AndLater_template::copy_template(const VTSelectInputObjectReq__v4AndLater_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectID().get_selection()) {
+single_value->field_objectID = other_value.objectID();
+} else {
+single_value->field_objectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.selection().get_selection()) {
+single_value->field_selection = other_value.selection();
+} else {
+single_value->field_selection.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.bitmask().get_selection()) {
+single_value->field_bitmask = other_value.bitmask();
+} else {
+single_value->field_bitmask.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new VTSelectInputObjectReq__v4AndLater_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTSelectInputObjectReq_v4AndLater.");
+break;
+}
+set_selection(other_value);
+}
+
+VTSelectInputObjectReq__v4AndLater_template::VTSelectInputObjectReq__v4AndLater_template()
+{
+}
+
+VTSelectInputObjectReq__v4AndLater_template::VTSelectInputObjectReq__v4AndLater_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+VTSelectInputObjectReq__v4AndLater_template::VTSelectInputObjectReq__v4AndLater_template(const VTSelectInputObjectReq__v4AndLater& other_value)
+{
+copy_value(other_value);
+}
+
+VTSelectInputObjectReq__v4AndLater_template::VTSelectInputObjectReq__v4AndLater_template(const OPTIONAL<VTSelectInputObjectReq__v4AndLater>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTSelectInputObjectReq__v4AndLater&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.VTSelectInputObjectReq_v4AndLater from an unbound optional field.");
+}
+}
+
+VTSelectInputObjectReq__v4AndLater_template::VTSelectInputObjectReq__v4AndLater_template(const VTSelectInputObjectReq__v4AndLater_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+VTSelectInputObjectReq__v4AndLater_template::~VTSelectInputObjectReq__v4AndLater_template()
+{
+clean_up();
+}
+
+VTSelectInputObjectReq__v4AndLater_template& VTSelectInputObjectReq__v4AndLater_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+VTSelectInputObjectReq__v4AndLater_template& VTSelectInputObjectReq__v4AndLater_template::operator=(const VTSelectInputObjectReq__v4AndLater& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+VTSelectInputObjectReq__v4AndLater_template& VTSelectInputObjectReq__v4AndLater_template::operator=(const OPTIONAL<VTSelectInputObjectReq__v4AndLater>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTSelectInputObjectReq__v4AndLater&)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 @IsobusVTMessageTypes.VTSelectInputObjectReq_v4AndLater.");
+}
+return *this;
+}
+
+VTSelectInputObjectReq__v4AndLater_template& VTSelectInputObjectReq__v4AndLater_template::operator=(const VTSelectInputObjectReq__v4AndLater_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean VTSelectInputObjectReq__v4AndLater_template::match(const VTSelectInputObjectReq__v4AndLater& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectID().is_bound()) return FALSE;
+if(!single_value->field_objectID.match(other_value.objectID(), legacy))return FALSE;
+if(!other_value.selection().is_bound()) return FALSE;
+if(!single_value->field_selection.match(other_value.selection(), legacy))return FALSE;
+if(!other_value.bitmask().is_bound()) return FALSE;
+if(!single_value->field_bitmask.match(other_value.bitmask(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTSelectInputObjectReq_v4AndLater.");
+}
+return FALSE;
+}
+
+boolean VTSelectInputObjectReq__v4AndLater_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectID.is_bound()
+
+ ||single_value->field_selection.is_bound()
+
+ ||single_value->field_bitmask.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean VTSelectInputObjectReq__v4AndLater_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectID.is_value()
+ &&single_value->field_selection.is_value()
+ &&single_value->field_bitmask.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void VTSelectInputObjectReq__v4AndLater_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+VTSelectInputObjectReq__v4AndLater VTSelectInputObjectReq__v4AndLater_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 @IsobusVTMessageTypes.VTSelectInputObjectReq_v4AndLater.");
+VTSelectInputObjectReq__v4AndLater ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectID.is_bound()) {
+ret_val.objectID() = single_value->field_objectID.valueof();
+}
+if (single_value->field_selection.is_bound()) {
+ret_val.selection() = single_value->field_selection.valueof();
+}
+if (single_value->field_bitmask.is_bound()) {
+ret_val.bitmask() = single_value->field_bitmask.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void VTSelectInputObjectReq__v4AndLater_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.VTSelectInputObjectReq_v4AndLater.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new VTSelectInputObjectReq__v4AndLater_template[list_length];
+}
+
+VTSelectInputObjectReq__v4AndLater_template& VTSelectInputObjectReq__v4AndLater_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.VTSelectInputObjectReq_v4AndLater.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.VTSelectInputObjectReq_v4AndLater.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& VTSelectInputObjectReq__v4AndLater_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& VTSelectInputObjectReq__v4AndLater_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObjectReq_v4AndLater.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& VTSelectInputObjectReq__v4AndLater_template::objectID()
+{
+set_specific();
+return single_value->field_objectID;
+}
+
+const INTEGER_template& VTSelectInputObjectReq__v4AndLater_template::objectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectID of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObjectReq_v4AndLater.");
+return single_value->field_objectID;
+}
+
+e__VTSelectInputObject__selection_template& VTSelectInputObjectReq__v4AndLater_template::selection()
+{
+set_specific();
+return single_value->field_selection;
+}
+
+const e__VTSelectInputObject__selection_template& VTSelectInputObjectReq__v4AndLater_template::selection() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field selection of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObjectReq_v4AndLater.");
+return single_value->field_selection;
+}
+
+VTSelectInputObject__v4AndLater__Bitmask_template& VTSelectInputObjectReq__v4AndLater_template::bitmask()
+{
+set_specific();
+return single_value->field_bitmask;
+}
+
+const VTSelectInputObject__v4AndLater__Bitmask_template& VTSelectInputObjectReq__v4AndLater_template::bitmask() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field bitmask of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObjectReq_v4AndLater.");
+return single_value->field_bitmask;
+}
+
+OCTETSTRING_template& VTSelectInputObjectReq__v4AndLater_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& VTSelectInputObjectReq__v4AndLater_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObjectReq_v4AndLater.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& VTSelectInputObjectReq__v4AndLater_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& VTSelectInputObjectReq__v4AndLater_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObjectReq_v4AndLater.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& VTSelectInputObjectReq__v4AndLater_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& VTSelectInputObjectReq__v4AndLater_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObjectReq_v4AndLater.");
+return single_value->field_reserved8;
+}
+
+int VTSelectInputObjectReq__v4AndLater_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTSelectInputObjectReq_v4AndLater 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 @IsobusVTMessageTypes.VTSelectInputObjectReq_v4AndLater 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 @IsobusVTMessageTypes.VTSelectInputObjectReq_v4AndLater containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTSelectInputObjectReq_v4AndLater containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTSelectInputObjectReq_v4AndLater containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTSelectInputObjectReq_v4AndLater containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTSelectInputObjectReq_v4AndLater.");
+  }
+  return 0;
+}
+
+void VTSelectInputObjectReq__v4AndLater_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log();
+TTCN_Logger::log_event_str(", selection := ");
+single_value->field_selection.log();
+TTCN_Logger::log_event_str(", bitmask := ");
+single_value->field_bitmask.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void VTSelectInputObjectReq__v4AndLater_template::log_match(const VTSelectInputObjectReq__v4AndLater& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectID.match(match_value.objectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectID");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_selection.match(match_value.selection(), legacy)){
+TTCN_Logger::log_logmatch_info(".selection");
+single_value->field_selection.log_match(match_value.selection(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_bitmask.match(match_value.bitmask(), legacy)){
+TTCN_Logger::log_logmatch_info(".bitmask");
+single_value->field_bitmask.log_match(match_value.bitmask(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::log_event_str(", selection := ");
+single_value->field_selection.log_match(match_value.selection(), legacy);
+TTCN_Logger::log_event_str(", bitmask := ");
+single_value->field_bitmask.log_match(match_value.bitmask(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 VTSelectInputObjectReq__v4AndLater_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectID.encode_text(text_buf);
+single_value->field_selection.encode_text(text_buf);
+single_value->field_bitmask.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.VTSelectInputObjectReq_v4AndLater.");
+}
+}
+
+void VTSelectInputObjectReq__v4AndLater_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_vtfunction.decode_text(text_buf);
+single_value->field_objectID.decode_text(text_buf);
+single_value->field_selection.decode_text(text_buf);
+single_value->field_bitmask.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 VTSelectInputObjectReq__v4AndLater_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 @IsobusVTMessageTypes.VTSelectInputObjectReq_v4AndLater.");
+}
+}
+
+void VTSelectInputObjectReq__v4AndLater_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: {
+    VTSelectInputObjectReq__v4AndLater_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.VTSelectInputObjectReq_v4AndLater 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) selection().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) bitmask().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "selection")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          selection().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(), "bitmask")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          bitmask().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.VTSelectInputObjectReq_v4AndLater: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.VTSelectInputObjectReq_v4AndLater");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void VTSelectInputObjectReq__v4AndLater_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObjectReq_v4AndLater");
+single_value->field_objectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObjectReq_v4AndLater");
+single_value->field_selection.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObjectReq_v4AndLater");
+single_value->field_bitmask.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObjectReq_v4AndLater");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObjectReq_v4AndLater");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObjectReq_v4AndLater");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObjectReq_v4AndLater");
+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 : "@IsobusVTMessageTypes.VTSelectInputObjectReq_v4AndLater");
+}
+
+boolean VTSelectInputObjectReq__v4AndLater_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean VTSelectInputObjectReq__v4AndLater_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+VTSelectInputObjectRes::VTSelectInputObjectRes()
+{
+}
+
+VTSelectInputObjectRes::VTSelectInputObjectRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const e__VTSelectInputObject__selection& par_selection,
+    const VTSelectInputObject__Bitmask& par_bitmask,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_objectID(par_objectID),
+  field_selection(par_selection),
+  field_bitmask(par_bitmask),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+VTSelectInputObjectRes::VTSelectInputObjectRes(const VTSelectInputObjectRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.VTSelectInputObjectRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+else field_objectID.clean_up();
+if (other_value.selection().is_bound()) field_selection = other_value.selection();
+else field_selection.clean_up();
+if (other_value.bitmask().is_bound()) field_bitmask = other_value.bitmask();
+else field_bitmask.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void VTSelectInputObjectRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectID.clean_up();
+field_selection.clean_up();
+field_bitmask.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* VTSelectInputObjectRes::get_descriptor() const { return &VTSelectInputObjectRes_descr_; }
+VTSelectInputObjectRes& VTSelectInputObjectRes::operator=(const VTSelectInputObjectRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.VTSelectInputObjectRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+  else field_objectID.clean_up();
+  if (other_value.selection().is_bound()) field_selection = other_value.selection();
+  else field_selection.clean_up();
+  if (other_value.bitmask().is_bound()) field_bitmask = other_value.bitmask();
+  else field_bitmask.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean VTSelectInputObjectRes::operator==(const VTSelectInputObjectRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectID==other_value.field_objectID
+  && field_selection==other_value.field_selection
+  && field_bitmask==other_value.field_bitmask
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean VTSelectInputObjectRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectID.is_bound())
+  || (field_selection.is_bound())
+  || (field_bitmask.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean VTSelectInputObjectRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectID.is_value()
+  && field_selection.is_value()
+  && field_bitmask.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void VTSelectInputObjectRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+field_objectID.log();
+TTCN_Logger::log_event_str(", selection := ");
+field_selection.log();
+TTCN_Logger::log_event_str(", bitmask := ");
+field_bitmask.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void VTSelectInputObjectRes::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 @IsobusVTMessageTypes.VTSelectInputObjectRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) selection().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) bitmask().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "selection")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          selection().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(), "bitmask")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          bitmask().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.VTSelectInputObjectRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.VTSelectInputObjectRes");
+  }
+}
+
+void VTSelectInputObjectRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectID().is_bound()) objectID().set_implicit_omit();
+if (selection().is_bound()) selection().set_implicit_omit();
+if (bitmask().is_bound()) bitmask().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void VTSelectInputObjectRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectID.encode_text(text_buf);
+field_selection.encode_text(text_buf);
+field_bitmask.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void VTSelectInputObjectRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectID.decode_text(text_buf);
+field_selection.decode_text(text_buf);
+field_bitmask.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void VTSelectInputObjectRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void VTSelectInputObjectRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int VTSelectInputObjectRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectID.RAW_decode(ValidObjectID_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, e__VTSelectInputObject__selection_descr_.raw->forceomit);
+  decoded_field_length = field_selection.RAW_decode(e__VTSelectInputObject__selection_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, VTSelectInputObject__Bitmask_descr_.raw->forceomit);
+  decoded_field_length = field_bitmask.RAW_decode(VTSelectInputObject__Bitmask_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, VTSelectInputObjectRes_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(VTSelectInputObjectRes_reserved6_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, VTSelectInputObjectRes_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(VTSelectInputObjectRes_reserved7_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, VTSelectInputObjectRes_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(VTSelectInputObjectRes_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int VTSelectInputObjectRes::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, e__VTSelectInputObject__selection_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, VTSelectInputObject__Bitmask_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, VTSelectInputObjectRes_reserved6_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, VTSelectInputObjectRes_reserved7_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, VTSelectInputObjectRes_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_selection.RAW_encode(e__VTSelectInputObject__selection_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_bitmask.RAW_encode(VTSelectInputObject__Bitmask_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved6.RAW_encode(VTSelectInputObjectRes_reserved6_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved7.RAW_encode(VTSelectInputObjectRes_reserved7_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved8.RAW_encode(VTSelectInputObjectRes_reserved8_descr_, *myleaf.body.node.nodes[6]);
+  return myleaf.length = encoded_length;
+}
+
+struct VTSelectInputObjectRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectID;
+e__VTSelectInputObject__selection_template field_selection;
+VTSelectInputObject__Bitmask_template field_bitmask;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void VTSelectInputObjectRes_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_vtfunction = ANY_VALUE;
+single_value->field_objectID = ANY_VALUE;
+single_value->field_selection = ANY_VALUE;
+single_value->field_bitmask = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void VTSelectInputObjectRes_template::copy_value(const VTSelectInputObjectRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectID().is_bound()) {
+  single_value->field_objectID = other_value.objectID();
+} else {
+  single_value->field_objectID.clean_up();
+}
+if (other_value.selection().is_bound()) {
+  single_value->field_selection = other_value.selection();
+} else {
+  single_value->field_selection.clean_up();
+}
+if (other_value.bitmask().is_bound()) {
+  single_value->field_bitmask = other_value.bitmask();
+} else {
+  single_value->field_bitmask.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void VTSelectInputObjectRes_template::copy_template(const VTSelectInputObjectRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectID().get_selection()) {
+single_value->field_objectID = other_value.objectID();
+} else {
+single_value->field_objectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.selection().get_selection()) {
+single_value->field_selection = other_value.selection();
+} else {
+single_value->field_selection.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.bitmask().get_selection()) {
+single_value->field_bitmask = other_value.bitmask();
+} else {
+single_value->field_bitmask.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new VTSelectInputObjectRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTSelectInputObjectRes.");
+break;
+}
+set_selection(other_value);
+}
+
+VTSelectInputObjectRes_template::VTSelectInputObjectRes_template()
+{
+}
+
+VTSelectInputObjectRes_template::VTSelectInputObjectRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+VTSelectInputObjectRes_template::VTSelectInputObjectRes_template(const VTSelectInputObjectRes& other_value)
+{
+copy_value(other_value);
+}
+
+VTSelectInputObjectRes_template::VTSelectInputObjectRes_template(const OPTIONAL<VTSelectInputObjectRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTSelectInputObjectRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.VTSelectInputObjectRes from an unbound optional field.");
+}
+}
+
+VTSelectInputObjectRes_template::VTSelectInputObjectRes_template(const VTSelectInputObjectRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+VTSelectInputObjectRes_template::~VTSelectInputObjectRes_template()
+{
+clean_up();
+}
+
+VTSelectInputObjectRes_template& VTSelectInputObjectRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+VTSelectInputObjectRes_template& VTSelectInputObjectRes_template::operator=(const VTSelectInputObjectRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+VTSelectInputObjectRes_template& VTSelectInputObjectRes_template::operator=(const OPTIONAL<VTSelectInputObjectRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTSelectInputObjectRes&)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 @IsobusVTMessageTypes.VTSelectInputObjectRes.");
+}
+return *this;
+}
+
+VTSelectInputObjectRes_template& VTSelectInputObjectRes_template::operator=(const VTSelectInputObjectRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean VTSelectInputObjectRes_template::match(const VTSelectInputObjectRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectID().is_bound()) return FALSE;
+if(!single_value->field_objectID.match(other_value.objectID(), legacy))return FALSE;
+if(!other_value.selection().is_bound()) return FALSE;
+if(!single_value->field_selection.match(other_value.selection(), legacy))return FALSE;
+if(!other_value.bitmask().is_bound()) return FALSE;
+if(!single_value->field_bitmask.match(other_value.bitmask(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTSelectInputObjectRes.");
+}
+return FALSE;
+}
+
+boolean VTSelectInputObjectRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectID.is_bound()
+
+ ||single_value->field_selection.is_bound()
+
+ ||single_value->field_bitmask.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean VTSelectInputObjectRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectID.is_value()
+ &&single_value->field_selection.is_value()
+ &&single_value->field_bitmask.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void VTSelectInputObjectRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+VTSelectInputObjectRes VTSelectInputObjectRes_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 @IsobusVTMessageTypes.VTSelectInputObjectRes.");
+VTSelectInputObjectRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectID.is_bound()) {
+ret_val.objectID() = single_value->field_objectID.valueof();
+}
+if (single_value->field_selection.is_bound()) {
+ret_val.selection() = single_value->field_selection.valueof();
+}
+if (single_value->field_bitmask.is_bound()) {
+ret_val.bitmask() = single_value->field_bitmask.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void VTSelectInputObjectRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.VTSelectInputObjectRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new VTSelectInputObjectRes_template[list_length];
+}
+
+VTSelectInputObjectRes_template& VTSelectInputObjectRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.VTSelectInputObjectRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.VTSelectInputObjectRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& VTSelectInputObjectRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& VTSelectInputObjectRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObjectRes.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& VTSelectInputObjectRes_template::objectID()
+{
+set_specific();
+return single_value->field_objectID;
+}
+
+const INTEGER_template& VTSelectInputObjectRes_template::objectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectID of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObjectRes.");
+return single_value->field_objectID;
+}
+
+e__VTSelectInputObject__selection_template& VTSelectInputObjectRes_template::selection()
+{
+set_specific();
+return single_value->field_selection;
+}
+
+const e__VTSelectInputObject__selection_template& VTSelectInputObjectRes_template::selection() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field selection of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObjectRes.");
+return single_value->field_selection;
+}
+
+VTSelectInputObject__Bitmask_template& VTSelectInputObjectRes_template::bitmask()
+{
+set_specific();
+return single_value->field_bitmask;
+}
+
+const VTSelectInputObject__Bitmask_template& VTSelectInputObjectRes_template::bitmask() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field bitmask of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObjectRes.");
+return single_value->field_bitmask;
+}
+
+OCTETSTRING_template& VTSelectInputObjectRes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& VTSelectInputObjectRes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObjectRes.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& VTSelectInputObjectRes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& VTSelectInputObjectRes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObjectRes.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& VTSelectInputObjectRes_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& VTSelectInputObjectRes_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObjectRes.");
+return single_value->field_reserved8;
+}
+
+int VTSelectInputObjectRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTSelectInputObjectRes 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 @IsobusVTMessageTypes.VTSelectInputObjectRes 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 @IsobusVTMessageTypes.VTSelectInputObjectRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTSelectInputObjectRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTSelectInputObjectRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTSelectInputObjectRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTSelectInputObjectRes.");
+  }
+  return 0;
+}
+
+void VTSelectInputObjectRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log();
+TTCN_Logger::log_event_str(", selection := ");
+single_value->field_selection.log();
+TTCN_Logger::log_event_str(", bitmask := ");
+single_value->field_bitmask.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void VTSelectInputObjectRes_template::log_match(const VTSelectInputObjectRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectID.match(match_value.objectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectID");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_selection.match(match_value.selection(), legacy)){
+TTCN_Logger::log_logmatch_info(".selection");
+single_value->field_selection.log_match(match_value.selection(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_bitmask.match(match_value.bitmask(), legacy)){
+TTCN_Logger::log_logmatch_info(".bitmask");
+single_value->field_bitmask.log_match(match_value.bitmask(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::log_event_str(", selection := ");
+single_value->field_selection.log_match(match_value.selection(), legacy);
+TTCN_Logger::log_event_str(", bitmask := ");
+single_value->field_bitmask.log_match(match_value.bitmask(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 VTSelectInputObjectRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectID.encode_text(text_buf);
+single_value->field_selection.encode_text(text_buf);
+single_value->field_bitmask.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.VTSelectInputObjectRes.");
+}
+}
+
+void VTSelectInputObjectRes_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_vtfunction.decode_text(text_buf);
+single_value->field_objectID.decode_text(text_buf);
+single_value->field_selection.decode_text(text_buf);
+single_value->field_bitmask.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 VTSelectInputObjectRes_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 @IsobusVTMessageTypes.VTSelectInputObjectRes.");
+}
+}
+
+void VTSelectInputObjectRes_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: {
+    VTSelectInputObjectRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.VTSelectInputObjectRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) selection().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) bitmask().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "selection")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          selection().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(), "bitmask")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          bitmask().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.VTSelectInputObjectRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.VTSelectInputObjectRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void VTSelectInputObjectRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObjectRes");
+single_value->field_objectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObjectRes");
+single_value->field_selection.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObjectRes");
+single_value->field_bitmask.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObjectRes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObjectRes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObjectRes");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObjectRes");
+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 : "@IsobusVTMessageTypes.VTSelectInputObjectRes");
+}
+
+boolean VTSelectInputObjectRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean VTSelectInputObjectRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+VTSelectInputObjectRes__v4AndPrior::VTSelectInputObjectRes__v4AndPrior()
+{
+}
+
+VTSelectInputObjectRes__v4AndPrior::VTSelectInputObjectRes__v4AndPrior(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const e__VTSelectInputObject__selection& par_selection,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_objectID(par_objectID),
+  field_selection(par_selection),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+VTSelectInputObjectRes__v4AndPrior::VTSelectInputObjectRes__v4AndPrior(const VTSelectInputObjectRes__v4AndPrior& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+else field_objectID.clean_up();
+if (other_value.selection().is_bound()) field_selection = other_value.selection();
+else field_selection.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void VTSelectInputObjectRes__v4AndPrior::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectID.clean_up();
+field_selection.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* VTSelectInputObjectRes__v4AndPrior::get_descriptor() const { return &VTSelectInputObjectRes__v4AndPrior_descr_; }
+VTSelectInputObjectRes__v4AndPrior& VTSelectInputObjectRes__v4AndPrior::operator=(const VTSelectInputObjectRes__v4AndPrior& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+  else field_objectID.clean_up();
+  if (other_value.selection().is_bound()) field_selection = other_value.selection();
+  else field_selection.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean VTSelectInputObjectRes__v4AndPrior::operator==(const VTSelectInputObjectRes__v4AndPrior& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectID==other_value.field_objectID
+  && field_selection==other_value.field_selection
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean VTSelectInputObjectRes__v4AndPrior::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectID.is_bound())
+  || (field_selection.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean VTSelectInputObjectRes__v4AndPrior::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectID.is_value()
+  && field_selection.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void VTSelectInputObjectRes__v4AndPrior::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+field_objectID.log();
+TTCN_Logger::log_event_str(", selection := ");
+field_selection.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void VTSelectInputObjectRes__v4AndPrior::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 @IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) selection().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "selection")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          selection().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior");
+  }
+}
+
+void VTSelectInputObjectRes__v4AndPrior::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectID().is_bound()) objectID().set_implicit_omit();
+if (selection().is_bound()) selection().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void VTSelectInputObjectRes__v4AndPrior::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectID.encode_text(text_buf);
+field_selection.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void VTSelectInputObjectRes__v4AndPrior::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectID.decode_text(text_buf);
+field_selection.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void VTSelectInputObjectRes__v4AndPrior::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void VTSelectInputObjectRes__v4AndPrior::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int VTSelectInputObjectRes__v4AndPrior::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectID.RAW_decode(ValidObjectID_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, e__VTSelectInputObject__selection_descr_.raw->forceomit);
+  decoded_field_length = field_selection.RAW_decode(e__VTSelectInputObject__selection_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, VTSelectInputObjectRes__v4AndPrior_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(VTSelectInputObjectRes__v4AndPrior_reserved5_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, VTSelectInputObjectRes__v4AndPrior_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(VTSelectInputObjectRes__v4AndPrior_reserved6_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, VTSelectInputObjectRes__v4AndPrior_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(VTSelectInputObjectRes__v4AndPrior_reserved7_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, VTSelectInputObjectRes__v4AndPrior_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(VTSelectInputObjectRes__v4AndPrior_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int VTSelectInputObjectRes__v4AndPrior::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, e__VTSelectInputObject__selection_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, VTSelectInputObjectRes__v4AndPrior_reserved5_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, VTSelectInputObjectRes__v4AndPrior_reserved6_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, VTSelectInputObjectRes__v4AndPrior_reserved7_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, VTSelectInputObjectRes__v4AndPrior_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_selection.RAW_encode(e__VTSelectInputObject__selection_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved5.RAW_encode(VTSelectInputObjectRes__v4AndPrior_reserved5_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved6.RAW_encode(VTSelectInputObjectRes__v4AndPrior_reserved6_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved7.RAW_encode(VTSelectInputObjectRes__v4AndPrior_reserved7_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved8.RAW_encode(VTSelectInputObjectRes__v4AndPrior_reserved8_descr_, *myleaf.body.node.nodes[6]);
+  return myleaf.length = encoded_length;
+}
+
+struct VTSelectInputObjectRes__v4AndPrior_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectID;
+e__VTSelectInputObject__selection_template field_selection;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void VTSelectInputObjectRes__v4AndPrior_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_vtfunction = ANY_VALUE;
+single_value->field_objectID = ANY_VALUE;
+single_value->field_selection = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void VTSelectInputObjectRes__v4AndPrior_template::copy_value(const VTSelectInputObjectRes__v4AndPrior& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectID().is_bound()) {
+  single_value->field_objectID = other_value.objectID();
+} else {
+  single_value->field_objectID.clean_up();
+}
+if (other_value.selection().is_bound()) {
+  single_value->field_selection = other_value.selection();
+} else {
+  single_value->field_selection.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void VTSelectInputObjectRes__v4AndPrior_template::copy_template(const VTSelectInputObjectRes__v4AndPrior_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectID().get_selection()) {
+single_value->field_objectID = other_value.objectID();
+} else {
+single_value->field_objectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.selection().get_selection()) {
+single_value->field_selection = other_value.selection();
+} else {
+single_value->field_selection.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new VTSelectInputObjectRes__v4AndPrior_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior.");
+break;
+}
+set_selection(other_value);
+}
+
+VTSelectInputObjectRes__v4AndPrior_template::VTSelectInputObjectRes__v4AndPrior_template()
+{
+}
+
+VTSelectInputObjectRes__v4AndPrior_template::VTSelectInputObjectRes__v4AndPrior_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+VTSelectInputObjectRes__v4AndPrior_template::VTSelectInputObjectRes__v4AndPrior_template(const VTSelectInputObjectRes__v4AndPrior& other_value)
+{
+copy_value(other_value);
+}
+
+VTSelectInputObjectRes__v4AndPrior_template::VTSelectInputObjectRes__v4AndPrior_template(const OPTIONAL<VTSelectInputObjectRes__v4AndPrior>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTSelectInputObjectRes__v4AndPrior&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior from an unbound optional field.");
+}
+}
+
+VTSelectInputObjectRes__v4AndPrior_template::VTSelectInputObjectRes__v4AndPrior_template(const VTSelectInputObjectRes__v4AndPrior_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+VTSelectInputObjectRes__v4AndPrior_template::~VTSelectInputObjectRes__v4AndPrior_template()
+{
+clean_up();
+}
+
+VTSelectInputObjectRes__v4AndPrior_template& VTSelectInputObjectRes__v4AndPrior_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+VTSelectInputObjectRes__v4AndPrior_template& VTSelectInputObjectRes__v4AndPrior_template::operator=(const VTSelectInputObjectRes__v4AndPrior& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+VTSelectInputObjectRes__v4AndPrior_template& VTSelectInputObjectRes__v4AndPrior_template::operator=(const OPTIONAL<VTSelectInputObjectRes__v4AndPrior>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTSelectInputObjectRes__v4AndPrior&)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 @IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior.");
+}
+return *this;
+}
+
+VTSelectInputObjectRes__v4AndPrior_template& VTSelectInputObjectRes__v4AndPrior_template::operator=(const VTSelectInputObjectRes__v4AndPrior_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean VTSelectInputObjectRes__v4AndPrior_template::match(const VTSelectInputObjectRes__v4AndPrior& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectID().is_bound()) return FALSE;
+if(!single_value->field_objectID.match(other_value.objectID(), legacy))return FALSE;
+if(!other_value.selection().is_bound()) return FALSE;
+if(!single_value->field_selection.match(other_value.selection(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior.");
+}
+return FALSE;
+}
+
+boolean VTSelectInputObjectRes__v4AndPrior_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectID.is_bound()
+
+ ||single_value->field_selection.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean VTSelectInputObjectRes__v4AndPrior_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectID.is_value()
+ &&single_value->field_selection.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void VTSelectInputObjectRes__v4AndPrior_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+VTSelectInputObjectRes__v4AndPrior VTSelectInputObjectRes__v4AndPrior_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 @IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior.");
+VTSelectInputObjectRes__v4AndPrior ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectID.is_bound()) {
+ret_val.objectID() = single_value->field_objectID.valueof();
+}
+if (single_value->field_selection.is_bound()) {
+ret_val.selection() = single_value->field_selection.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void VTSelectInputObjectRes__v4AndPrior_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new VTSelectInputObjectRes__v4AndPrior_template[list_length];
+}
+
+VTSelectInputObjectRes__v4AndPrior_template& VTSelectInputObjectRes__v4AndPrior_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& VTSelectInputObjectRes__v4AndPrior_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& VTSelectInputObjectRes__v4AndPrior_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& VTSelectInputObjectRes__v4AndPrior_template::objectID()
+{
+set_specific();
+return single_value->field_objectID;
+}
+
+const INTEGER_template& VTSelectInputObjectRes__v4AndPrior_template::objectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectID of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior.");
+return single_value->field_objectID;
+}
+
+e__VTSelectInputObject__selection_template& VTSelectInputObjectRes__v4AndPrior_template::selection()
+{
+set_specific();
+return single_value->field_selection;
+}
+
+const e__VTSelectInputObject__selection_template& VTSelectInputObjectRes__v4AndPrior_template::selection() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field selection of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior.");
+return single_value->field_selection;
+}
+
+OCTETSTRING_template& VTSelectInputObjectRes__v4AndPrior_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& VTSelectInputObjectRes__v4AndPrior_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& VTSelectInputObjectRes__v4AndPrior_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& VTSelectInputObjectRes__v4AndPrior_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& VTSelectInputObjectRes__v4AndPrior_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& VTSelectInputObjectRes__v4AndPrior_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& VTSelectInputObjectRes__v4AndPrior_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& VTSelectInputObjectRes__v4AndPrior_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior.");
+return single_value->field_reserved8;
+}
+
+int VTSelectInputObjectRes__v4AndPrior_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior 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 @IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior 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 @IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior.");
+  }
+  return 0;
+}
+
+void VTSelectInputObjectRes__v4AndPrior_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log();
+TTCN_Logger::log_event_str(", selection := ");
+single_value->field_selection.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void VTSelectInputObjectRes__v4AndPrior_template::log_match(const VTSelectInputObjectRes__v4AndPrior& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectID.match(match_value.objectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectID");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_selection.match(match_value.selection(), legacy)){
+TTCN_Logger::log_logmatch_info(".selection");
+single_value->field_selection.log_match(match_value.selection(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::log_event_str(", selection := ");
+single_value->field_selection.log_match(match_value.selection(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 VTSelectInputObjectRes__v4AndPrior_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectID.encode_text(text_buf);
+single_value->field_selection.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior.");
+}
+}
+
+void VTSelectInputObjectRes__v4AndPrior_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_vtfunction.decode_text(text_buf);
+single_value->field_objectID.decode_text(text_buf);
+single_value->field_selection.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 VTSelectInputObjectRes__v4AndPrior_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 @IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior.");
+}
+}
+
+void VTSelectInputObjectRes__v4AndPrior_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: {
+    VTSelectInputObjectRes__v4AndPrior_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) selection().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "selection")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          selection().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void VTSelectInputObjectRes__v4AndPrior_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior");
+single_value->field_objectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior");
+single_value->field_selection.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior");
+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 : "@IsobusVTMessageTypes.VTSelectInputObjectRes_v4AndPrior");
+}
+
+boolean VTSelectInputObjectRes__v4AndPrior_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean VTSelectInputObjectRes__v4AndPrior_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+VTSelectInputObjectRes__v5AndLater::VTSelectInputObjectRes__v5AndLater()
+{
+}
+
+VTSelectInputObjectRes__v5AndLater::VTSelectInputObjectRes__v5AndLater(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const e__VTSelectInputObject__selection& par_selection,
+    const VTSelectInputObject__v4AndLater__Bitmask& par_bitmask,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_objectID(par_objectID),
+  field_selection(par_selection),
+  field_bitmask(par_bitmask),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+VTSelectInputObjectRes__v5AndLater::VTSelectInputObjectRes__v5AndLater(const VTSelectInputObjectRes__v5AndLater& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.VTSelectInputObjectRes_v5AndLater.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+else field_objectID.clean_up();
+if (other_value.selection().is_bound()) field_selection = other_value.selection();
+else field_selection.clean_up();
+if (other_value.bitmask().is_bound()) field_bitmask = other_value.bitmask();
+else field_bitmask.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void VTSelectInputObjectRes__v5AndLater::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectID.clean_up();
+field_selection.clean_up();
+field_bitmask.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* VTSelectInputObjectRes__v5AndLater::get_descriptor() const { return &VTSelectInputObjectRes__v5AndLater_descr_; }
+VTSelectInputObjectRes__v5AndLater& VTSelectInputObjectRes__v5AndLater::operator=(const VTSelectInputObjectRes__v5AndLater& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.VTSelectInputObjectRes_v5AndLater.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+  else field_objectID.clean_up();
+  if (other_value.selection().is_bound()) field_selection = other_value.selection();
+  else field_selection.clean_up();
+  if (other_value.bitmask().is_bound()) field_bitmask = other_value.bitmask();
+  else field_bitmask.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean VTSelectInputObjectRes__v5AndLater::operator==(const VTSelectInputObjectRes__v5AndLater& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectID==other_value.field_objectID
+  && field_selection==other_value.field_selection
+  && field_bitmask==other_value.field_bitmask
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean VTSelectInputObjectRes__v5AndLater::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectID.is_bound())
+  || (field_selection.is_bound())
+  || (field_bitmask.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean VTSelectInputObjectRes__v5AndLater::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectID.is_value()
+  && field_selection.is_value()
+  && field_bitmask.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void VTSelectInputObjectRes__v5AndLater::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+field_objectID.log();
+TTCN_Logger::log_event_str(", selection := ");
+field_selection.log();
+TTCN_Logger::log_event_str(", bitmask := ");
+field_bitmask.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void VTSelectInputObjectRes__v5AndLater::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 @IsobusVTMessageTypes.VTSelectInputObjectRes_v5AndLater 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) selection().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) bitmask().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "selection")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          selection().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(), "bitmask")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          bitmask().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.VTSelectInputObjectRes_v5AndLater: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.VTSelectInputObjectRes_v5AndLater");
+  }
+}
+
+void VTSelectInputObjectRes__v5AndLater::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectID().is_bound()) objectID().set_implicit_omit();
+if (selection().is_bound()) selection().set_implicit_omit();
+if (bitmask().is_bound()) bitmask().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void VTSelectInputObjectRes__v5AndLater::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectID.encode_text(text_buf);
+field_selection.encode_text(text_buf);
+field_bitmask.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void VTSelectInputObjectRes__v5AndLater::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectID.decode_text(text_buf);
+field_selection.decode_text(text_buf);
+field_bitmask.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void VTSelectInputObjectRes__v5AndLater::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void VTSelectInputObjectRes__v5AndLater::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int VTSelectInputObjectRes__v5AndLater::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectID.RAW_decode(ValidObjectID_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, e__VTSelectInputObject__selection_descr_.raw->forceomit);
+  decoded_field_length = field_selection.RAW_decode(e__VTSelectInputObject__selection_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, VTSelectInputObject__v4AndLater__Bitmask_descr_.raw->forceomit);
+  decoded_field_length = field_bitmask.RAW_decode(VTSelectInputObject__v4AndLater__Bitmask_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, VTSelectInputObjectRes__v5AndLater_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(VTSelectInputObjectRes__v5AndLater_reserved6_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, VTSelectInputObjectRes__v5AndLater_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(VTSelectInputObjectRes__v5AndLater_reserved7_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, VTSelectInputObjectRes__v5AndLater_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(VTSelectInputObjectRes__v5AndLater_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int VTSelectInputObjectRes__v5AndLater::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, e__VTSelectInputObject__selection_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, VTSelectInputObject__v4AndLater__Bitmask_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, VTSelectInputObjectRes__v5AndLater_reserved6_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, VTSelectInputObjectRes__v5AndLater_reserved7_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, VTSelectInputObjectRes__v5AndLater_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_selection.RAW_encode(e__VTSelectInputObject__selection_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_bitmask.RAW_encode(VTSelectInputObject__v4AndLater__Bitmask_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved6.RAW_encode(VTSelectInputObjectRes__v5AndLater_reserved6_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved7.RAW_encode(VTSelectInputObjectRes__v5AndLater_reserved7_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved8.RAW_encode(VTSelectInputObjectRes__v5AndLater_reserved8_descr_, *myleaf.body.node.nodes[6]);
+  return myleaf.length = encoded_length;
+}
+
+struct VTSelectInputObjectRes__v5AndLater_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectID;
+e__VTSelectInputObject__selection_template field_selection;
+VTSelectInputObject__v4AndLater__Bitmask_template field_bitmask;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void VTSelectInputObjectRes__v5AndLater_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_vtfunction = ANY_VALUE;
+single_value->field_objectID = ANY_VALUE;
+single_value->field_selection = ANY_VALUE;
+single_value->field_bitmask = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void VTSelectInputObjectRes__v5AndLater_template::copy_value(const VTSelectInputObjectRes__v5AndLater& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectID().is_bound()) {
+  single_value->field_objectID = other_value.objectID();
+} else {
+  single_value->field_objectID.clean_up();
+}
+if (other_value.selection().is_bound()) {
+  single_value->field_selection = other_value.selection();
+} else {
+  single_value->field_selection.clean_up();
+}
+if (other_value.bitmask().is_bound()) {
+  single_value->field_bitmask = other_value.bitmask();
+} else {
+  single_value->field_bitmask.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void VTSelectInputObjectRes__v5AndLater_template::copy_template(const VTSelectInputObjectRes__v5AndLater_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectID().get_selection()) {
+single_value->field_objectID = other_value.objectID();
+} else {
+single_value->field_objectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.selection().get_selection()) {
+single_value->field_selection = other_value.selection();
+} else {
+single_value->field_selection.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.bitmask().get_selection()) {
+single_value->field_bitmask = other_value.bitmask();
+} else {
+single_value->field_bitmask.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new VTSelectInputObjectRes__v5AndLater_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTSelectInputObjectRes_v5AndLater.");
+break;
+}
+set_selection(other_value);
+}
+
+VTSelectInputObjectRes__v5AndLater_template::VTSelectInputObjectRes__v5AndLater_template()
+{
+}
+
+VTSelectInputObjectRes__v5AndLater_template::VTSelectInputObjectRes__v5AndLater_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+VTSelectInputObjectRes__v5AndLater_template::VTSelectInputObjectRes__v5AndLater_template(const VTSelectInputObjectRes__v5AndLater& other_value)
+{
+copy_value(other_value);
+}
+
+VTSelectInputObjectRes__v5AndLater_template::VTSelectInputObjectRes__v5AndLater_template(const OPTIONAL<VTSelectInputObjectRes__v5AndLater>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTSelectInputObjectRes__v5AndLater&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.VTSelectInputObjectRes_v5AndLater from an unbound optional field.");
+}
+}
+
+VTSelectInputObjectRes__v5AndLater_template::VTSelectInputObjectRes__v5AndLater_template(const VTSelectInputObjectRes__v5AndLater_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+VTSelectInputObjectRes__v5AndLater_template::~VTSelectInputObjectRes__v5AndLater_template()
+{
+clean_up();
+}
+
+VTSelectInputObjectRes__v5AndLater_template& VTSelectInputObjectRes__v5AndLater_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+VTSelectInputObjectRes__v5AndLater_template& VTSelectInputObjectRes__v5AndLater_template::operator=(const VTSelectInputObjectRes__v5AndLater& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+VTSelectInputObjectRes__v5AndLater_template& VTSelectInputObjectRes__v5AndLater_template::operator=(const OPTIONAL<VTSelectInputObjectRes__v5AndLater>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTSelectInputObjectRes__v5AndLater&)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 @IsobusVTMessageTypes.VTSelectInputObjectRes_v5AndLater.");
+}
+return *this;
+}
+
+VTSelectInputObjectRes__v5AndLater_template& VTSelectInputObjectRes__v5AndLater_template::operator=(const VTSelectInputObjectRes__v5AndLater_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean VTSelectInputObjectRes__v5AndLater_template::match(const VTSelectInputObjectRes__v5AndLater& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectID().is_bound()) return FALSE;
+if(!single_value->field_objectID.match(other_value.objectID(), legacy))return FALSE;
+if(!other_value.selection().is_bound()) return FALSE;
+if(!single_value->field_selection.match(other_value.selection(), legacy))return FALSE;
+if(!other_value.bitmask().is_bound()) return FALSE;
+if(!single_value->field_bitmask.match(other_value.bitmask(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTSelectInputObjectRes_v5AndLater.");
+}
+return FALSE;
+}
+
+boolean VTSelectInputObjectRes__v5AndLater_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectID.is_bound()
+
+ ||single_value->field_selection.is_bound()
+
+ ||single_value->field_bitmask.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean VTSelectInputObjectRes__v5AndLater_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectID.is_value()
+ &&single_value->field_selection.is_value()
+ &&single_value->field_bitmask.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void VTSelectInputObjectRes__v5AndLater_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+VTSelectInputObjectRes__v5AndLater VTSelectInputObjectRes__v5AndLater_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 @IsobusVTMessageTypes.VTSelectInputObjectRes_v5AndLater.");
+VTSelectInputObjectRes__v5AndLater ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectID.is_bound()) {
+ret_val.objectID() = single_value->field_objectID.valueof();
+}
+if (single_value->field_selection.is_bound()) {
+ret_val.selection() = single_value->field_selection.valueof();
+}
+if (single_value->field_bitmask.is_bound()) {
+ret_val.bitmask() = single_value->field_bitmask.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void VTSelectInputObjectRes__v5AndLater_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.VTSelectInputObjectRes_v5AndLater.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new VTSelectInputObjectRes__v5AndLater_template[list_length];
+}
+
+VTSelectInputObjectRes__v5AndLater_template& VTSelectInputObjectRes__v5AndLater_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.VTSelectInputObjectRes_v5AndLater.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.VTSelectInputObjectRes_v5AndLater.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& VTSelectInputObjectRes__v5AndLater_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& VTSelectInputObjectRes__v5AndLater_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObjectRes_v5AndLater.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& VTSelectInputObjectRes__v5AndLater_template::objectID()
+{
+set_specific();
+return single_value->field_objectID;
+}
+
+const INTEGER_template& VTSelectInputObjectRes__v5AndLater_template::objectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectID of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObjectRes_v5AndLater.");
+return single_value->field_objectID;
+}
+
+e__VTSelectInputObject__selection_template& VTSelectInputObjectRes__v5AndLater_template::selection()
+{
+set_specific();
+return single_value->field_selection;
+}
+
+const e__VTSelectInputObject__selection_template& VTSelectInputObjectRes__v5AndLater_template::selection() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field selection of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObjectRes_v5AndLater.");
+return single_value->field_selection;
+}
+
+VTSelectInputObject__v4AndLater__Bitmask_template& VTSelectInputObjectRes__v5AndLater_template::bitmask()
+{
+set_specific();
+return single_value->field_bitmask;
+}
+
+const VTSelectInputObject__v4AndLater__Bitmask_template& VTSelectInputObjectRes__v5AndLater_template::bitmask() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field bitmask of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObjectRes_v5AndLater.");
+return single_value->field_bitmask;
+}
+
+OCTETSTRING_template& VTSelectInputObjectRes__v5AndLater_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& VTSelectInputObjectRes__v5AndLater_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObjectRes_v5AndLater.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& VTSelectInputObjectRes__v5AndLater_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& VTSelectInputObjectRes__v5AndLater_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObjectRes_v5AndLater.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& VTSelectInputObjectRes__v5AndLater_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& VTSelectInputObjectRes__v5AndLater_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.VTSelectInputObjectRes_v5AndLater.");
+return single_value->field_reserved8;
+}
+
+int VTSelectInputObjectRes__v5AndLater_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTSelectInputObjectRes_v5AndLater 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 @IsobusVTMessageTypes.VTSelectInputObjectRes_v5AndLater 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 @IsobusVTMessageTypes.VTSelectInputObjectRes_v5AndLater containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTSelectInputObjectRes_v5AndLater containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTSelectInputObjectRes_v5AndLater containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTSelectInputObjectRes_v5AndLater containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTSelectInputObjectRes_v5AndLater.");
+  }
+  return 0;
+}
+
+void VTSelectInputObjectRes__v5AndLater_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log();
+TTCN_Logger::log_event_str(", selection := ");
+single_value->field_selection.log();
+TTCN_Logger::log_event_str(", bitmask := ");
+single_value->field_bitmask.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void VTSelectInputObjectRes__v5AndLater_template::log_match(const VTSelectInputObjectRes__v5AndLater& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectID.match(match_value.objectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectID");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_selection.match(match_value.selection(), legacy)){
+TTCN_Logger::log_logmatch_info(".selection");
+single_value->field_selection.log_match(match_value.selection(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_bitmask.match(match_value.bitmask(), legacy)){
+TTCN_Logger::log_logmatch_info(".bitmask");
+single_value->field_bitmask.log_match(match_value.bitmask(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::log_event_str(", selection := ");
+single_value->field_selection.log_match(match_value.selection(), legacy);
+TTCN_Logger::log_event_str(", bitmask := ");
+single_value->field_bitmask.log_match(match_value.bitmask(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 VTSelectInputObjectRes__v5AndLater_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectID.encode_text(text_buf);
+single_value->field_selection.encode_text(text_buf);
+single_value->field_bitmask.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.VTSelectInputObjectRes_v5AndLater.");
+}
+}
+
+void VTSelectInputObjectRes__v5AndLater_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_vtfunction.decode_text(text_buf);
+single_value->field_objectID.decode_text(text_buf);
+single_value->field_selection.decode_text(text_buf);
+single_value->field_bitmask.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 VTSelectInputObjectRes__v5AndLater_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 @IsobusVTMessageTypes.VTSelectInputObjectRes_v5AndLater.");
+}
+}
+
+void VTSelectInputObjectRes__v5AndLater_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: {
+    VTSelectInputObjectRes__v5AndLater_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.VTSelectInputObjectRes_v5AndLater 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) selection().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) bitmask().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "selection")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          selection().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(), "bitmask")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          bitmask().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.VTSelectInputObjectRes_v5AndLater: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.VTSelectInputObjectRes_v5AndLater");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void VTSelectInputObjectRes__v5AndLater_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObjectRes_v5AndLater");
+single_value->field_objectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObjectRes_v5AndLater");
+single_value->field_selection.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObjectRes_v5AndLater");
+single_value->field_bitmask.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObjectRes_v5AndLater");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObjectRes_v5AndLater");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObjectRes_v5AndLater");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTSelectInputObjectRes_v5AndLater");
+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 : "@IsobusVTMessageTypes.VTSelectInputObjectRes_v5AndLater");
+}
+
+boolean VTSelectInputObjectRes__v5AndLater_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean VTSelectInputObjectRes__v5AndLater_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+VTESC__ErrorCodes::VTESC__ErrorCodes()
+{
+}
+
+VTESC__ErrorCodes::VTESC__ErrorCodes(const BOOLEAN& par_noInputFieldIsSelected,
+    const BOOLEAN& par_reserved1,
+    const BOOLEAN& par_reserved2,
+    const BOOLEAN& par_reserved3,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7)
+  :   field_noInputFieldIsSelected(par_noInputFieldIsSelected),
+  field_reserved1(par_reserved1),
+  field_reserved2(par_reserved2),
+  field_reserved3(par_reserved3),
+  field_anyOtherError(par_anyOtherError),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7)
+{
+}
+
+VTESC__ErrorCodes::VTESC__ErrorCodes(const VTESC__ErrorCodes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.VTESC_ErrorCodes.");
+if (other_value.noInputFieldIsSelected().is_bound()) field_noInputFieldIsSelected = other_value.noInputFieldIsSelected();
+else field_noInputFieldIsSelected.clean_up();
+if (other_value.reserved1().is_bound()) field_reserved1 = other_value.reserved1();
+else field_reserved1.clean_up();
+if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+else field_reserved2.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+else field_anyOtherError.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+}
+
+void VTESC__ErrorCodes::clean_up()
+{
+field_noInputFieldIsSelected.clean_up();
+field_reserved1.clean_up();
+field_reserved2.clean_up();
+field_reserved3.clean_up();
+field_anyOtherError.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+}
+
+const TTCN_Typedescriptor_t* VTESC__ErrorCodes::get_descriptor() const { return &VTESC__ErrorCodes_descr_; }
+VTESC__ErrorCodes& VTESC__ErrorCodes::operator=(const VTESC__ErrorCodes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.VTESC_ErrorCodes.");
+  if (other_value.noInputFieldIsSelected().is_bound()) field_noInputFieldIsSelected = other_value.noInputFieldIsSelected();
+  else field_noInputFieldIsSelected.clean_up();
+  if (other_value.reserved1().is_bound()) field_reserved1 = other_value.reserved1();
+  else field_reserved1.clean_up();
+  if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+  else field_reserved2.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+  else field_anyOtherError.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+}
+return *this;
+}
+
+boolean VTESC__ErrorCodes::operator==(const VTESC__ErrorCodes& other_value) const
+{
+return field_noInputFieldIsSelected==other_value.field_noInputFieldIsSelected
+  && field_reserved1==other_value.field_reserved1
+  && field_reserved2==other_value.field_reserved2
+  && field_reserved3==other_value.field_reserved3
+  && field_anyOtherError==other_value.field_anyOtherError
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7;
+}
+
+boolean VTESC__ErrorCodes::is_bound() const
+{
+return (field_noInputFieldIsSelected.is_bound())
+  || (field_reserved1.is_bound())
+  || (field_reserved2.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_anyOtherError.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound());
+}
+boolean VTESC__ErrorCodes::is_value() const
+{
+return field_noInputFieldIsSelected.is_value()
+  && field_reserved1.is_value()
+  && field_reserved2.is_value()
+  && field_reserved3.is_value()
+  && field_anyOtherError.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value();
+}
+void VTESC__ErrorCodes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ noInputFieldIsSelected := ");
+field_noInputFieldIsSelected.log();
+TTCN_Logger::log_event_str(", reserved1 := ");
+field_reserved1.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void VTESC__ErrorCodes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.VTESC_ErrorCodes has 8 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) noInputFieldIsSelected().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved1().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "noInputFieldIsSelected")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          noInputFieldIsSelected().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(), "reserved1")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved1().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.VTESC_ErrorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.VTESC_ErrorCodes");
+  }
+}
+
+void VTESC__ErrorCodes::set_implicit_omit()
+{
+if (noInputFieldIsSelected().is_bound()) noInputFieldIsSelected().set_implicit_omit();
+if (reserved1().is_bound()) reserved1().set_implicit_omit();
+if (reserved2().is_bound()) reserved2().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (anyOtherError().is_bound()) anyOtherError().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+}
+
+void VTESC__ErrorCodes::encode_text(Text_Buf& text_buf) const
+{
+field_noInputFieldIsSelected.encode_text(text_buf);
+field_reserved1.encode_text(text_buf);
+field_reserved2.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_anyOtherError.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+}
+
+void VTESC__ErrorCodes::decode_text(Text_Buf& text_buf)
+{
+field_noInputFieldIsSelected.decode_text(text_buf);
+field_reserved1.decode_text(text_buf);
+field_reserved2.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_anyOtherError.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+}
+
+void VTESC__ErrorCodes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void VTESC__ErrorCodes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int VTESC__ErrorCodes::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_noInputFieldIsSelected.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved1.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved2.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_anyOtherError.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int VTESC__ErrorCodes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_noInputFieldIsSelected.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved1.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved2.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved3.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_anyOtherError.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved5.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved6.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved7.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct VTESC__ErrorCodes_template::single_value_struct {
+BOOLEAN_template field_noInputFieldIsSelected;
+BOOLEAN_template field_reserved1;
+BOOLEAN_template field_reserved2;
+BOOLEAN_template field_reserved3;
+BOOLEAN_template field_anyOtherError;
+BOOLEAN_template field_reserved5;
+BOOLEAN_template field_reserved6;
+BOOLEAN_template field_reserved7;
+};
+
+void VTESC__ErrorCodes_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_noInputFieldIsSelected = ANY_VALUE;
+single_value->field_reserved1 = ANY_VALUE;
+single_value->field_reserved2 = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_anyOtherError = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+}
+}
+}
+
+void VTESC__ErrorCodes_template::copy_value(const VTESC__ErrorCodes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.noInputFieldIsSelected().is_bound()) {
+  single_value->field_noInputFieldIsSelected = other_value.noInputFieldIsSelected();
+} else {
+  single_value->field_noInputFieldIsSelected.clean_up();
+}
+if (other_value.reserved1().is_bound()) {
+  single_value->field_reserved1 = other_value.reserved1();
+} else {
+  single_value->field_reserved1.clean_up();
+}
+if (other_value.reserved2().is_bound()) {
+  single_value->field_reserved2 = other_value.reserved2();
+} else {
+  single_value->field_reserved2.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.anyOtherError().is_bound()) {
+  single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+  single_value->field_anyOtherError.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void VTESC__ErrorCodes_template::copy_template(const VTESC__ErrorCodes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.noInputFieldIsSelected().get_selection()) {
+single_value->field_noInputFieldIsSelected = other_value.noInputFieldIsSelected();
+} else {
+single_value->field_noInputFieldIsSelected.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved1().get_selection()) {
+single_value->field_reserved1 = other_value.reserved1();
+} else {
+single_value->field_reserved1.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved2().get_selection()) {
+single_value->field_reserved2 = other_value.reserved2();
+} else {
+single_value->field_reserved2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.anyOtherError().get_selection()) {
+single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+single_value->field_anyOtherError.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new VTESC__ErrorCodes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTESC_ErrorCodes.");
+break;
+}
+set_selection(other_value);
+}
+
+VTESC__ErrorCodes_template::VTESC__ErrorCodes_template()
+{
+}
+
+VTESC__ErrorCodes_template::VTESC__ErrorCodes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+VTESC__ErrorCodes_template::VTESC__ErrorCodes_template(const VTESC__ErrorCodes& other_value)
+{
+copy_value(other_value);
+}
+
+VTESC__ErrorCodes_template::VTESC__ErrorCodes_template(const OPTIONAL<VTESC__ErrorCodes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTESC__ErrorCodes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.VTESC_ErrorCodes from an unbound optional field.");
+}
+}
+
+VTESC__ErrorCodes_template::VTESC__ErrorCodes_template(const VTESC__ErrorCodes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+VTESC__ErrorCodes_template::~VTESC__ErrorCodes_template()
+{
+clean_up();
+}
+
+VTESC__ErrorCodes_template& VTESC__ErrorCodes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+VTESC__ErrorCodes_template& VTESC__ErrorCodes_template::operator=(const VTESC__ErrorCodes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+VTESC__ErrorCodes_template& VTESC__ErrorCodes_template::operator=(const OPTIONAL<VTESC__ErrorCodes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTESC__ErrorCodes&)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 @IsobusVTMessageTypes.VTESC_ErrorCodes.");
+}
+return *this;
+}
+
+VTESC__ErrorCodes_template& VTESC__ErrorCodes_template::operator=(const VTESC__ErrorCodes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean VTESC__ErrorCodes_template::match(const VTESC__ErrorCodes& 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.noInputFieldIsSelected().is_bound()) return FALSE;
+if(!single_value->field_noInputFieldIsSelected.match(other_value.noInputFieldIsSelected(), legacy))return FALSE;
+if(!other_value.reserved1().is_bound()) return FALSE;
+if(!single_value->field_reserved1.match(other_value.reserved1(), legacy))return FALSE;
+if(!other_value.reserved2().is_bound()) return FALSE;
+if(!single_value->field_reserved2.match(other_value.reserved2(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.anyOtherError().is_bound()) return FALSE;
+if(!single_value->field_anyOtherError.match(other_value.anyOtherError(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTESC_ErrorCodes.");
+}
+return FALSE;
+}
+
+boolean VTESC__ErrorCodes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_noInputFieldIsSelected.is_bound()
+
+ ||single_value->field_reserved1.is_bound()
+
+ ||single_value->field_reserved2.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_anyOtherError.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+;
+}
+
+boolean VTESC__ErrorCodes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_noInputFieldIsSelected.is_value()
+ &&single_value->field_reserved1.is_value()
+ &&single_value->field_reserved2.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_anyOtherError.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value();
+}
+
+void VTESC__ErrorCodes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+VTESC__ErrorCodes VTESC__ErrorCodes_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 @IsobusVTMessageTypes.VTESC_ErrorCodes.");
+VTESC__ErrorCodes ret_val;
+if (single_value->field_noInputFieldIsSelected.is_bound()) {
+ret_val.noInputFieldIsSelected() = single_value->field_noInputFieldIsSelected.valueof();
+}
+if (single_value->field_reserved1.is_bound()) {
+ret_val.reserved1() = single_value->field_reserved1.valueof();
+}
+if (single_value->field_reserved2.is_bound()) {
+ret_val.reserved2() = single_value->field_reserved2.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_anyOtherError.is_bound()) {
+ret_val.anyOtherError() = single_value->field_anyOtherError.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+return ret_val;
+}
+
+void VTESC__ErrorCodes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.VTESC_ErrorCodes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new VTESC__ErrorCodes_template[list_length];
+}
+
+VTESC__ErrorCodes_template& VTESC__ErrorCodes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.VTESC_ErrorCodes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.VTESC_ErrorCodes.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& VTESC__ErrorCodes_template::noInputFieldIsSelected()
+{
+set_specific();
+return single_value->field_noInputFieldIsSelected;
+}
+
+const BOOLEAN_template& VTESC__ErrorCodes_template::noInputFieldIsSelected() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field noInputFieldIsSelected of a non-specific template of type @IsobusVTMessageTypes.VTESC_ErrorCodes.");
+return single_value->field_noInputFieldIsSelected;
+}
+
+BOOLEAN_template& VTESC__ErrorCodes_template::reserved1()
+{
+set_specific();
+return single_value->field_reserved1;
+}
+
+const BOOLEAN_template& VTESC__ErrorCodes_template::reserved1() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved1 of a non-specific template of type @IsobusVTMessageTypes.VTESC_ErrorCodes.");
+return single_value->field_reserved1;
+}
+
+BOOLEAN_template& VTESC__ErrorCodes_template::reserved2()
+{
+set_specific();
+return single_value->field_reserved2;
+}
+
+const BOOLEAN_template& VTESC__ErrorCodes_template::reserved2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved2 of a non-specific template of type @IsobusVTMessageTypes.VTESC_ErrorCodes.");
+return single_value->field_reserved2;
+}
+
+BOOLEAN_template& VTESC__ErrorCodes_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const BOOLEAN_template& VTESC__ErrorCodes_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.VTESC_ErrorCodes.");
+return single_value->field_reserved3;
+}
+
+BOOLEAN_template& VTESC__ErrorCodes_template::anyOtherError()
+{
+set_specific();
+return single_value->field_anyOtherError;
+}
+
+const BOOLEAN_template& VTESC__ErrorCodes_template::anyOtherError() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field anyOtherError of a non-specific template of type @IsobusVTMessageTypes.VTESC_ErrorCodes.");
+return single_value->field_anyOtherError;
+}
+
+BOOLEAN_template& VTESC__ErrorCodes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const BOOLEAN_template& VTESC__ErrorCodes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.VTESC_ErrorCodes.");
+return single_value->field_reserved5;
+}
+
+BOOLEAN_template& VTESC__ErrorCodes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const BOOLEAN_template& VTESC__ErrorCodes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.VTESC_ErrorCodes.");
+return single_value->field_reserved6;
+}
+
+BOOLEAN_template& VTESC__ErrorCodes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const BOOLEAN_template& VTESC__ErrorCodes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.VTESC_ErrorCodes.");
+return single_value->field_reserved7;
+}
+
+int VTESC__ErrorCodes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTESC_ErrorCodes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTESC_ErrorCodes 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 @IsobusVTMessageTypes.VTESC_ErrorCodes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTESC_ErrorCodes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTESC_ErrorCodes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTESC_ErrorCodes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTESC_ErrorCodes.");
+  }
+  return 0;
+}
+
+void VTESC__ErrorCodes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ noInputFieldIsSelected := ");
+single_value->field_noInputFieldIsSelected.log();
+TTCN_Logger::log_event_str(", reserved1 := ");
+single_value->field_reserved1.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void VTESC__ErrorCodes_template::log_match(const VTESC__ErrorCodes& 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_noInputFieldIsSelected.match(match_value.noInputFieldIsSelected(), legacy)){
+TTCN_Logger::log_logmatch_info(".noInputFieldIsSelected");
+single_value->field_noInputFieldIsSelected.log_match(match_value.noInputFieldIsSelected(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved1.match(match_value.reserved1(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved1");
+single_value->field_reserved1.log_match(match_value.reserved1(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved2.match(match_value.reserved2(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved2");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_anyOtherError.match(match_value.anyOtherError(), legacy)){
+TTCN_Logger::log_logmatch_info(".anyOtherError");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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("{ noInputFieldIsSelected := ");
+single_value->field_noInputFieldIsSelected.log_match(match_value.noInputFieldIsSelected(), legacy);
+TTCN_Logger::log_event_str(", reserved1 := ");
+single_value->field_reserved1.log_match(match_value.reserved1(), legacy);
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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 VTESC__ErrorCodes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_noInputFieldIsSelected.encode_text(text_buf);
+single_value->field_reserved1.encode_text(text_buf);
+single_value->field_reserved2.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_anyOtherError.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.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 @IsobusVTMessageTypes.VTESC_ErrorCodes.");
+}
+}
+
+void VTESC__ErrorCodes_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_noInputFieldIsSelected.decode_text(text_buf);
+single_value->field_reserved1.decode_text(text_buf);
+single_value->field_reserved2.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_anyOtherError.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.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 VTESC__ErrorCodes_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 @IsobusVTMessageTypes.VTESC_ErrorCodes.");
+}
+}
+
+void VTESC__ErrorCodes_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: {
+    VTESC__ErrorCodes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.VTESC_ErrorCodes has 8 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) noInputFieldIsSelected().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved1().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "noInputFieldIsSelected")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          noInputFieldIsSelected().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(), "reserved1")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved1().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.VTESC_ErrorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.VTESC_ErrorCodes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void VTESC__ErrorCodes_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_noInputFieldIsSelected.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTESC_ErrorCodes");
+single_value->field_reserved1.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTESC_ErrorCodes");
+single_value->field_reserved2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTESC_ErrorCodes");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTESC_ErrorCodes");
+single_value->field_anyOtherError.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTESC_ErrorCodes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTESC_ErrorCodes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTESC_ErrorCodes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTESC_ErrorCodes");
+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 : "@IsobusVTMessageTypes.VTESC_ErrorCodes");
+}
+
+boolean VTESC__ErrorCodes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean VTESC__ErrorCodes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+VTESCReq::VTESCReq()
+{
+}
+
+VTESCReq::VTESCReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const VTESC__ErrorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_objectID(par_objectID),
+  field_errorCodes(par_errorCodes),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+VTESCReq::VTESCReq(const VTESCReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.VTESCReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+else field_objectID.clean_up();
+if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+else field_errorCodes.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void VTESCReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectID.clean_up();
+field_errorCodes.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* VTESCReq::get_descriptor() const { return &VTESCReq_descr_; }
+VTESCReq& VTESCReq::operator=(const VTESCReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.VTESCReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+  else field_objectID.clean_up();
+  if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+  else field_errorCodes.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean VTESCReq::operator==(const VTESCReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectID==other_value.field_objectID
+  && field_errorCodes==other_value.field_errorCodes
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean VTESCReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectID.is_bound())
+  || (field_errorCodes.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean VTESCReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectID.is_value()
+  && field_errorCodes.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void VTESCReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+field_objectID.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void VTESCReq::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 @IsobusVTMessageTypes.VTESCReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.VTESCReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.VTESCReq");
+  }
+}
+
+void VTESCReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectID().is_bound()) objectID().set_implicit_omit();
+if (errorCodes().is_bound()) errorCodes().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void VTESCReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectID.encode_text(text_buf);
+field_errorCodes.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void VTESCReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectID.decode_text(text_buf);
+field_errorCodes.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void VTESCReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void VTESCReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int VTESCReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, AnyObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectID.RAW_decode(AnyObjectID_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, VTESC__ErrorCodes_descr_.raw->forceomit);
+  decoded_field_length = field_errorCodes.RAW_decode(VTESC__ErrorCodes_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, VTESCReq_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(VTESCReq_reserved5_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, VTESCReq_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(VTESCReq_reserved6_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, VTESCReq_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(VTESCReq_reserved7_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, VTESCReq_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(VTESCReq_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int VTESCReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, AnyObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, VTESC__ErrorCodes_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, VTESCReq_reserved5_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, VTESCReq_reserved6_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, VTESCReq_reserved7_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, VTESCReq_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectID.RAW_encode(AnyObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_errorCodes.RAW_encode(VTESC__ErrorCodes_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved5.RAW_encode(VTESCReq_reserved5_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved6.RAW_encode(VTESCReq_reserved6_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved7.RAW_encode(VTESCReq_reserved7_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved8.RAW_encode(VTESCReq_reserved8_descr_, *myleaf.body.node.nodes[6]);
+  return myleaf.length = encoded_length;
+}
+
+struct VTESCReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectID;
+VTESC__ErrorCodes_template field_errorCodes;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void VTESCReq_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_vtfunction = ANY_VALUE;
+single_value->field_objectID = ANY_VALUE;
+single_value->field_errorCodes = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void VTESCReq_template::copy_value(const VTESCReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectID().is_bound()) {
+  single_value->field_objectID = other_value.objectID();
+} else {
+  single_value->field_objectID.clean_up();
+}
+if (other_value.errorCodes().is_bound()) {
+  single_value->field_errorCodes = other_value.errorCodes();
+} else {
+  single_value->field_errorCodes.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void VTESCReq_template::copy_template(const VTESCReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectID().get_selection()) {
+single_value->field_objectID = other_value.objectID();
+} else {
+single_value->field_objectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.errorCodes().get_selection()) {
+single_value->field_errorCodes = other_value.errorCodes();
+} else {
+single_value->field_errorCodes.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new VTESCReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTESCReq.");
+break;
+}
+set_selection(other_value);
+}
+
+VTESCReq_template::VTESCReq_template()
+{
+}
+
+VTESCReq_template::VTESCReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+VTESCReq_template::VTESCReq_template(const VTESCReq& other_value)
+{
+copy_value(other_value);
+}
+
+VTESCReq_template::VTESCReq_template(const OPTIONAL<VTESCReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTESCReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.VTESCReq from an unbound optional field.");
+}
+}
+
+VTESCReq_template::VTESCReq_template(const VTESCReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+VTESCReq_template::~VTESCReq_template()
+{
+clean_up();
+}
+
+VTESCReq_template& VTESCReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+VTESCReq_template& VTESCReq_template::operator=(const VTESCReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+VTESCReq_template& VTESCReq_template::operator=(const OPTIONAL<VTESCReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTESCReq&)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 @IsobusVTMessageTypes.VTESCReq.");
+}
+return *this;
+}
+
+VTESCReq_template& VTESCReq_template::operator=(const VTESCReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean VTESCReq_template::match(const VTESCReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectID().is_bound()) return FALSE;
+if(!single_value->field_objectID.match(other_value.objectID(), legacy))return FALSE;
+if(!other_value.errorCodes().is_bound()) return FALSE;
+if(!single_value->field_errorCodes.match(other_value.errorCodes(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTESCReq.");
+}
+return FALSE;
+}
+
+boolean VTESCReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectID.is_bound()
+
+ ||single_value->field_errorCodes.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean VTESCReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectID.is_value()
+ &&single_value->field_errorCodes.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void VTESCReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+VTESCReq VTESCReq_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 @IsobusVTMessageTypes.VTESCReq.");
+VTESCReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectID.is_bound()) {
+ret_val.objectID() = single_value->field_objectID.valueof();
+}
+if (single_value->field_errorCodes.is_bound()) {
+ret_val.errorCodes() = single_value->field_errorCodes.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void VTESCReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.VTESCReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new VTESCReq_template[list_length];
+}
+
+VTESCReq_template& VTESCReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.VTESCReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.VTESCReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& VTESCReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& VTESCReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.VTESCReq.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& VTESCReq_template::objectID()
+{
+set_specific();
+return single_value->field_objectID;
+}
+
+const INTEGER_template& VTESCReq_template::objectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectID of a non-specific template of type @IsobusVTMessageTypes.VTESCReq.");
+return single_value->field_objectID;
+}
+
+VTESC__ErrorCodes_template& VTESCReq_template::errorCodes()
+{
+set_specific();
+return single_value->field_errorCodes;
+}
+
+const VTESC__ErrorCodes_template& VTESCReq_template::errorCodes() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field errorCodes of a non-specific template of type @IsobusVTMessageTypes.VTESCReq.");
+return single_value->field_errorCodes;
+}
+
+OCTETSTRING_template& VTESCReq_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& VTESCReq_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.VTESCReq.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& VTESCReq_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& VTESCReq_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.VTESCReq.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& VTESCReq_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& VTESCReq_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.VTESCReq.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& VTESCReq_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& VTESCReq_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.VTESCReq.");
+return single_value->field_reserved8;
+}
+
+int VTESCReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTESCReq 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 @IsobusVTMessageTypes.VTESCReq 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 @IsobusVTMessageTypes.VTESCReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTESCReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTESCReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTESCReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTESCReq.");
+  }
+  return 0;
+}
+
+void VTESCReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void VTESCReq_template::log_match(const VTESCReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectID.match(match_value.objectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectID");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_errorCodes.match(match_value.errorCodes(), legacy)){
+TTCN_Logger::log_logmatch_info(".errorCodes");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 VTESCReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectID.encode_text(text_buf);
+single_value->field_errorCodes.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.VTESCReq.");
+}
+}
+
+void VTESCReq_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_vtfunction.decode_text(text_buf);
+single_value->field_objectID.decode_text(text_buf);
+single_value->field_errorCodes.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 VTESCReq_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 @IsobusVTMessageTypes.VTESCReq.");
+}
+}
+
+void VTESCReq_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: {
+    VTESCReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.VTESCReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.VTESCReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.VTESCReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void VTESCReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTESCReq");
+single_value->field_objectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTESCReq");
+single_value->field_errorCodes.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTESCReq");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTESCReq");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTESCReq");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTESCReq");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTESCReq");
+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 : "@IsobusVTMessageTypes.VTESCReq");
+}
+
+boolean VTESCReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean VTESCReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+VTESCRes::VTESCRes()
+{
+}
+
+VTESCRes::VTESCRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_objectID(par_objectID),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+VTESCRes::VTESCRes(const VTESCRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.VTESCRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+else field_objectID.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void VTESCRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectID.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* VTESCRes::get_descriptor() const { return &VTESCRes_descr_; }
+VTESCRes& VTESCRes::operator=(const VTESCRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.VTESCRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+  else field_objectID.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean VTESCRes::operator==(const VTESCRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectID==other_value.field_objectID
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean VTESCRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectID.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean VTESCRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectID.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void VTESCRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+field_objectID.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void VTESCRes::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 @IsobusVTMessageTypes.VTESCRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.VTESCRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.VTESCRes");
+  }
+}
+
+void VTESCRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectID().is_bound()) objectID().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void VTESCRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectID.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void VTESCRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectID.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void VTESCRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void VTESCRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int VTESCRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, AnyObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectID.RAW_decode(AnyObjectID_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, VTESCRes_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(VTESCRes_reserved4_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, VTESCRes_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(VTESCRes_reserved5_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, VTESCRes_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(VTESCRes_reserved6_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, VTESCRes_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(VTESCRes_reserved7_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, VTESCRes_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(VTESCRes_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int VTESCRes::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, AnyObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, VTESCRes_reserved4_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, VTESCRes_reserved5_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, VTESCRes_reserved6_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, VTESCRes_reserved7_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, VTESCRes_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectID.RAW_encode(AnyObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved4.RAW_encode(VTESCRes_reserved4_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved5.RAW_encode(VTESCRes_reserved5_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved6.RAW_encode(VTESCRes_reserved6_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved7.RAW_encode(VTESCRes_reserved7_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved8.RAW_encode(VTESCRes_reserved8_descr_, *myleaf.body.node.nodes[6]);
+  return myleaf.length = encoded_length;
+}
+
+struct VTESCRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectID;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void VTESCRes_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_vtfunction = ANY_VALUE;
+single_value->field_objectID = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void VTESCRes_template::copy_value(const VTESCRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectID().is_bound()) {
+  single_value->field_objectID = other_value.objectID();
+} else {
+  single_value->field_objectID.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void VTESCRes_template::copy_template(const VTESCRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectID().get_selection()) {
+single_value->field_objectID = other_value.objectID();
+} else {
+single_value->field_objectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new VTESCRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTESCRes.");
+break;
+}
+set_selection(other_value);
+}
+
+VTESCRes_template::VTESCRes_template()
+{
+}
+
+VTESCRes_template::VTESCRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+VTESCRes_template::VTESCRes_template(const VTESCRes& other_value)
+{
+copy_value(other_value);
+}
+
+VTESCRes_template::VTESCRes_template(const OPTIONAL<VTESCRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTESCRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.VTESCRes from an unbound optional field.");
+}
+}
+
+VTESCRes_template::VTESCRes_template(const VTESCRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+VTESCRes_template::~VTESCRes_template()
+{
+clean_up();
+}
+
+VTESCRes_template& VTESCRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+VTESCRes_template& VTESCRes_template::operator=(const VTESCRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+VTESCRes_template& VTESCRes_template::operator=(const OPTIONAL<VTESCRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTESCRes&)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 @IsobusVTMessageTypes.VTESCRes.");
+}
+return *this;
+}
+
+VTESCRes_template& VTESCRes_template::operator=(const VTESCRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean VTESCRes_template::match(const VTESCRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectID().is_bound()) return FALSE;
+if(!single_value->field_objectID.match(other_value.objectID(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTESCRes.");
+}
+return FALSE;
+}
+
+boolean VTESCRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectID.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean VTESCRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectID.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void VTESCRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+VTESCRes VTESCRes_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 @IsobusVTMessageTypes.VTESCRes.");
+VTESCRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectID.is_bound()) {
+ret_val.objectID() = single_value->field_objectID.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void VTESCRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.VTESCRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new VTESCRes_template[list_length];
+}
+
+VTESCRes_template& VTESCRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.VTESCRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.VTESCRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& VTESCRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& VTESCRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.VTESCRes.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& VTESCRes_template::objectID()
+{
+set_specific();
+return single_value->field_objectID;
+}
+
+const INTEGER_template& VTESCRes_template::objectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectID of a non-specific template of type @IsobusVTMessageTypes.VTESCRes.");
+return single_value->field_objectID;
+}
+
+OCTETSTRING_template& VTESCRes_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& VTESCRes_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.VTESCRes.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& VTESCRes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& VTESCRes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.VTESCRes.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& VTESCRes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& VTESCRes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.VTESCRes.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& VTESCRes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& VTESCRes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.VTESCRes.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& VTESCRes_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& VTESCRes_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.VTESCRes.");
+return single_value->field_reserved8;
+}
+
+int VTESCRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTESCRes 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 @IsobusVTMessageTypes.VTESCRes 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 @IsobusVTMessageTypes.VTESCRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTESCRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTESCRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTESCRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTESCRes.");
+  }
+  return 0;
+}
+
+void VTESCRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void VTESCRes_template::log_match(const VTESCRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectID.match(match_value.objectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectID");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 VTESCRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectID.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.VTESCRes.");
+}
+}
+
+void VTESCRes_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_vtfunction.decode_text(text_buf);
+single_value->field_objectID.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 VTESCRes_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 @IsobusVTMessageTypes.VTESCRes.");
+}
+}
+
+void VTESCRes_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: {
+    VTESCRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.VTESCRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.VTESCRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.VTESCRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void VTESCRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTESCRes");
+single_value->field_objectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTESCRes");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTESCRes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTESCRes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTESCRes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTESCRes");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTESCRes");
+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 : "@IsobusVTMessageTypes.VTESCRes");
+}
+
+boolean VTESCRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean VTESCRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+VTChangeNumericValueReq::VTChangeNumericValueReq()
+{
+}
+
+VTChangeNumericValueReq::VTChangeNumericValueReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_value__)
+  :   field_vtfunction(par_vtfunction),
+  field_objectID(par_objectID),
+  field_reserved4(par_reserved4),
+  field_value__(par_value__)
+{
+}
+
+VTChangeNumericValueReq::VTChangeNumericValueReq(const VTChangeNumericValueReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.VTChangeNumericValueReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+else field_objectID.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.value__().is_bound()) field_value__ = other_value.value__();
+else field_value__.clean_up();
+}
+
+void VTChangeNumericValueReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectID.clean_up();
+field_reserved4.clean_up();
+field_value__.clean_up();
+}
+
+const TTCN_Typedescriptor_t* VTChangeNumericValueReq::get_descriptor() const { return &VTChangeNumericValueReq_descr_; }
+VTChangeNumericValueReq& VTChangeNumericValueReq::operator=(const VTChangeNumericValueReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.VTChangeNumericValueReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+  else field_objectID.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.value__().is_bound()) field_value__ = other_value.value__();
+  else field_value__.clean_up();
+}
+return *this;
+}
+
+boolean VTChangeNumericValueReq::operator==(const VTChangeNumericValueReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectID==other_value.field_objectID
+  && field_reserved4==other_value.field_reserved4
+  && field_value__==other_value.field_value__;
+}
+
+boolean VTChangeNumericValueReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectID.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_value__.is_bound());
+}
+boolean VTChangeNumericValueReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectID.is_value()
+  && field_reserved4.is_value()
+  && field_value__.is_value();
+}
+void VTChangeNumericValueReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+field_objectID.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", value_ := ");
+field_value__.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void VTChangeNumericValueReq::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 @IsobusVTMessageTypes.VTChangeNumericValueReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) 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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "value_")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          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 @IsobusVTMessageTypes.VTChangeNumericValueReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.VTChangeNumericValueReq");
+  }
+}
+
+void VTChangeNumericValueReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectID().is_bound()) objectID().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (value__().is_bound()) value__().set_implicit_omit();
+}
+
+void VTChangeNumericValueReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectID.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_value__.encode_text(text_buf);
+}
+
+void VTChangeNumericValueReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectID.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_value__.decode_text(text_buf);
+}
+
+void VTChangeNumericValueReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void VTChangeNumericValueReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int VTChangeNumericValueReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectID.RAW_decode(ValidObjectID_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, VTChangeNumericValueReq_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(VTChangeNumericValueReq_reserved4_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::OCT4_descr_.raw->forceomit);
+  decoded_field_length = field_value__.RAW_decode(General__Types::OCT4_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int VTChangeNumericValueReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, VTChangeNumericValueReq_reserved4_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, General__Types::OCT4_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved4.RAW_encode(VTChangeNumericValueReq_reserved4_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_value__.RAW_encode(General__Types::OCT4_descr_, *myleaf.body.node.nodes[3]);
+  return myleaf.length = encoded_length;
+}
+
+struct VTChangeNumericValueReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectID;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_value__;
+};
+
+void VTChangeNumericValueReq_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_vtfunction = ANY_VALUE;
+single_value->field_objectID = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_value__ = ANY_VALUE;
+}
+}
+}
+
+void VTChangeNumericValueReq_template::copy_value(const VTChangeNumericValueReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectID().is_bound()) {
+  single_value->field_objectID = other_value.objectID();
+} else {
+  single_value->field_objectID.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.value__().is_bound()) {
+  single_value->field_value__ = other_value.value__();
+} else {
+  single_value->field_value__.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void VTChangeNumericValueReq_template::copy_template(const VTChangeNumericValueReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectID().get_selection()) {
+single_value->field_objectID = other_value.objectID();
+} else {
+single_value->field_objectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.value__().get_selection()) {
+single_value->field_value__ = other_value.value__();
+} else {
+single_value->field_value__.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new VTChangeNumericValueReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTChangeNumericValueReq.");
+break;
+}
+set_selection(other_value);
+}
+
+VTChangeNumericValueReq_template::VTChangeNumericValueReq_template()
+{
+}
+
+VTChangeNumericValueReq_template::VTChangeNumericValueReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+VTChangeNumericValueReq_template::VTChangeNumericValueReq_template(const VTChangeNumericValueReq& other_value)
+{
+copy_value(other_value);
+}
+
+VTChangeNumericValueReq_template::VTChangeNumericValueReq_template(const OPTIONAL<VTChangeNumericValueReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTChangeNumericValueReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.VTChangeNumericValueReq from an unbound optional field.");
+}
+}
+
+VTChangeNumericValueReq_template::VTChangeNumericValueReq_template(const VTChangeNumericValueReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+VTChangeNumericValueReq_template::~VTChangeNumericValueReq_template()
+{
+clean_up();
+}
+
+VTChangeNumericValueReq_template& VTChangeNumericValueReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+VTChangeNumericValueReq_template& VTChangeNumericValueReq_template::operator=(const VTChangeNumericValueReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+VTChangeNumericValueReq_template& VTChangeNumericValueReq_template::operator=(const OPTIONAL<VTChangeNumericValueReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTChangeNumericValueReq&)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 @IsobusVTMessageTypes.VTChangeNumericValueReq.");
+}
+return *this;
+}
+
+VTChangeNumericValueReq_template& VTChangeNumericValueReq_template::operator=(const VTChangeNumericValueReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean VTChangeNumericValueReq_template::match(const VTChangeNumericValueReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectID().is_bound()) return FALSE;
+if(!single_value->field_objectID.match(other_value.objectID(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.value__().is_bound()) return FALSE;
+if(!single_value->field_value__.match(other_value.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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTChangeNumericValueReq.");
+}
+return FALSE;
+}
+
+boolean VTChangeNumericValueReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectID.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_value__.is_bound()
+;
+}
+
+boolean VTChangeNumericValueReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectID.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_value__.is_value();
+}
+
+void VTChangeNumericValueReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+VTChangeNumericValueReq VTChangeNumericValueReq_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 @IsobusVTMessageTypes.VTChangeNumericValueReq.");
+VTChangeNumericValueReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectID.is_bound()) {
+ret_val.objectID() = single_value->field_objectID.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_value__.is_bound()) {
+ret_val.value__() = single_value->field_value__.valueof();
+}
+return ret_val;
+}
+
+void VTChangeNumericValueReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.VTChangeNumericValueReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new VTChangeNumericValueReq_template[list_length];
+}
+
+VTChangeNumericValueReq_template& VTChangeNumericValueReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.VTChangeNumericValueReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.VTChangeNumericValueReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& VTChangeNumericValueReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& VTChangeNumericValueReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.VTChangeNumericValueReq.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& VTChangeNumericValueReq_template::objectID()
+{
+set_specific();
+return single_value->field_objectID;
+}
+
+const INTEGER_template& VTChangeNumericValueReq_template::objectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectID of a non-specific template of type @IsobusVTMessageTypes.VTChangeNumericValueReq.");
+return single_value->field_objectID;
+}
+
+OCTETSTRING_template& VTChangeNumericValueReq_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& VTChangeNumericValueReq_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.VTChangeNumericValueReq.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& VTChangeNumericValueReq_template::value__()
+{
+set_specific();
+return single_value->field_value__;
+}
+
+const OCTETSTRING_template& VTChangeNumericValueReq_template::value__() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field value_ of a non-specific template of type @IsobusVTMessageTypes.VTChangeNumericValueReq.");
+return single_value->field_value__;
+}
+
+int VTChangeNumericValueReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTChangeNumericValueReq 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 @IsobusVTMessageTypes.VTChangeNumericValueReq 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 @IsobusVTMessageTypes.VTChangeNumericValueReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTChangeNumericValueReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTChangeNumericValueReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTChangeNumericValueReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTChangeNumericValueReq.");
+  }
+  return 0;
+}
+
+void VTChangeNumericValueReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", value_ := ");
+single_value->field_value__.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void VTChangeNumericValueReq_template::log_match(const VTChangeNumericValueReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectID.match(match_value.objectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectID");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_value__.match(match_value.value__(), legacy)){
+TTCN_Logger::log_logmatch_info(".value_");
+single_value->field_value__.log_match(match_value.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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", value_ := ");
+single_value->field_value__.log_match(match_value.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 VTChangeNumericValueReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectID.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_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 @IsobusVTMessageTypes.VTChangeNumericValueReq.");
+}
+}
+
+void VTChangeNumericValueReq_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_vtfunction.decode_text(text_buf);
+single_value->field_objectID.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_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 VTChangeNumericValueReq_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 @IsobusVTMessageTypes.VTChangeNumericValueReq.");
+}
+}
+
+void VTChangeNumericValueReq_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: {
+    VTChangeNumericValueReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.VTChangeNumericValueReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) 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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "value_")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          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 @IsobusVTMessageTypes.VTChangeNumericValueReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.VTChangeNumericValueReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void VTChangeNumericValueReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeNumericValueReq");
+single_value->field_objectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeNumericValueReq");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeNumericValueReq");
+single_value->field_value__.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeNumericValueReq");
+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 : "@IsobusVTMessageTypes.VTChangeNumericValueReq");
+}
+
+boolean VTChangeNumericValueReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean VTChangeNumericValueReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+VTChangeNumericValueRes::VTChangeNumericValueRes()
+{
+}
+
+VTChangeNumericValueRes::VTChangeNumericValueRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_value__)
+  :   field_vtfunction(par_vtfunction),
+  field_objectID(par_objectID),
+  field_reserved4(par_reserved4),
+  field_value__(par_value__)
+{
+}
+
+VTChangeNumericValueRes::VTChangeNumericValueRes(const VTChangeNumericValueRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.VTChangeNumericValueRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+else field_objectID.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.value__().is_bound()) field_value__ = other_value.value__();
+else field_value__.clean_up();
+}
+
+void VTChangeNumericValueRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectID.clean_up();
+field_reserved4.clean_up();
+field_value__.clean_up();
+}
+
+const TTCN_Typedescriptor_t* VTChangeNumericValueRes::get_descriptor() const { return &VTChangeNumericValueRes_descr_; }
+VTChangeNumericValueRes& VTChangeNumericValueRes::operator=(const VTChangeNumericValueRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.VTChangeNumericValueRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+  else field_objectID.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.value__().is_bound()) field_value__ = other_value.value__();
+  else field_value__.clean_up();
+}
+return *this;
+}
+
+boolean VTChangeNumericValueRes::operator==(const VTChangeNumericValueRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectID==other_value.field_objectID
+  && field_reserved4==other_value.field_reserved4
+  && field_value__==other_value.field_value__;
+}
+
+boolean VTChangeNumericValueRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectID.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_value__.is_bound());
+}
+boolean VTChangeNumericValueRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectID.is_value()
+  && field_reserved4.is_value()
+  && field_value__.is_value();
+}
+void VTChangeNumericValueRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+field_objectID.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", value_ := ");
+field_value__.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void VTChangeNumericValueRes::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 @IsobusVTMessageTypes.VTChangeNumericValueRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) 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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "value_")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          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 @IsobusVTMessageTypes.VTChangeNumericValueRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.VTChangeNumericValueRes");
+  }
+}
+
+void VTChangeNumericValueRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectID().is_bound()) objectID().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (value__().is_bound()) value__().set_implicit_omit();
+}
+
+void VTChangeNumericValueRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectID.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_value__.encode_text(text_buf);
+}
+
+void VTChangeNumericValueRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectID.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_value__.decode_text(text_buf);
+}
+
+void VTChangeNumericValueRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void VTChangeNumericValueRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int VTChangeNumericValueRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectID.RAW_decode(ValidObjectID_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, VTChangeNumericValueRes_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(VTChangeNumericValueRes_reserved4_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::OCT4_descr_.raw->forceomit);
+  decoded_field_length = field_value__.RAW_decode(General__Types::OCT4_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int VTChangeNumericValueRes::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, VTChangeNumericValueRes_reserved4_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, General__Types::OCT4_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved4.RAW_encode(VTChangeNumericValueRes_reserved4_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_value__.RAW_encode(General__Types::OCT4_descr_, *myleaf.body.node.nodes[3]);
+  return myleaf.length = encoded_length;
+}
+
+struct VTChangeNumericValueRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectID;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_value__;
+};
+
+void VTChangeNumericValueRes_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_vtfunction = ANY_VALUE;
+single_value->field_objectID = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_value__ = ANY_VALUE;
+}
+}
+}
+
+void VTChangeNumericValueRes_template::copy_value(const VTChangeNumericValueRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectID().is_bound()) {
+  single_value->field_objectID = other_value.objectID();
+} else {
+  single_value->field_objectID.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.value__().is_bound()) {
+  single_value->field_value__ = other_value.value__();
+} else {
+  single_value->field_value__.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void VTChangeNumericValueRes_template::copy_template(const VTChangeNumericValueRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectID().get_selection()) {
+single_value->field_objectID = other_value.objectID();
+} else {
+single_value->field_objectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.value__().get_selection()) {
+single_value->field_value__ = other_value.value__();
+} else {
+single_value->field_value__.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new VTChangeNumericValueRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTChangeNumericValueRes.");
+break;
+}
+set_selection(other_value);
+}
+
+VTChangeNumericValueRes_template::VTChangeNumericValueRes_template()
+{
+}
+
+VTChangeNumericValueRes_template::VTChangeNumericValueRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+VTChangeNumericValueRes_template::VTChangeNumericValueRes_template(const VTChangeNumericValueRes& other_value)
+{
+copy_value(other_value);
+}
+
+VTChangeNumericValueRes_template::VTChangeNumericValueRes_template(const OPTIONAL<VTChangeNumericValueRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTChangeNumericValueRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.VTChangeNumericValueRes from an unbound optional field.");
+}
+}
+
+VTChangeNumericValueRes_template::VTChangeNumericValueRes_template(const VTChangeNumericValueRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+VTChangeNumericValueRes_template::~VTChangeNumericValueRes_template()
+{
+clean_up();
+}
+
+VTChangeNumericValueRes_template& VTChangeNumericValueRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+VTChangeNumericValueRes_template& VTChangeNumericValueRes_template::operator=(const VTChangeNumericValueRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+VTChangeNumericValueRes_template& VTChangeNumericValueRes_template::operator=(const OPTIONAL<VTChangeNumericValueRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTChangeNumericValueRes&)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 @IsobusVTMessageTypes.VTChangeNumericValueRes.");
+}
+return *this;
+}
+
+VTChangeNumericValueRes_template& VTChangeNumericValueRes_template::operator=(const VTChangeNumericValueRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean VTChangeNumericValueRes_template::match(const VTChangeNumericValueRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectID().is_bound()) return FALSE;
+if(!single_value->field_objectID.match(other_value.objectID(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.value__().is_bound()) return FALSE;
+if(!single_value->field_value__.match(other_value.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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTChangeNumericValueRes.");
+}
+return FALSE;
+}
+
+boolean VTChangeNumericValueRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectID.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_value__.is_bound()
+;
+}
+
+boolean VTChangeNumericValueRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectID.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_value__.is_value();
+}
+
+void VTChangeNumericValueRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+VTChangeNumericValueRes VTChangeNumericValueRes_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 @IsobusVTMessageTypes.VTChangeNumericValueRes.");
+VTChangeNumericValueRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectID.is_bound()) {
+ret_val.objectID() = single_value->field_objectID.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_value__.is_bound()) {
+ret_val.value__() = single_value->field_value__.valueof();
+}
+return ret_val;
+}
+
+void VTChangeNumericValueRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.VTChangeNumericValueRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new VTChangeNumericValueRes_template[list_length];
+}
+
+VTChangeNumericValueRes_template& VTChangeNumericValueRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.VTChangeNumericValueRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.VTChangeNumericValueRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& VTChangeNumericValueRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& VTChangeNumericValueRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.VTChangeNumericValueRes.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& VTChangeNumericValueRes_template::objectID()
+{
+set_specific();
+return single_value->field_objectID;
+}
+
+const INTEGER_template& VTChangeNumericValueRes_template::objectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectID of a non-specific template of type @IsobusVTMessageTypes.VTChangeNumericValueRes.");
+return single_value->field_objectID;
+}
+
+OCTETSTRING_template& VTChangeNumericValueRes_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& VTChangeNumericValueRes_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.VTChangeNumericValueRes.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& VTChangeNumericValueRes_template::value__()
+{
+set_specific();
+return single_value->field_value__;
+}
+
+const OCTETSTRING_template& VTChangeNumericValueRes_template::value__() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field value_ of a non-specific template of type @IsobusVTMessageTypes.VTChangeNumericValueRes.");
+return single_value->field_value__;
+}
+
+int VTChangeNumericValueRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTChangeNumericValueRes 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 @IsobusVTMessageTypes.VTChangeNumericValueRes 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 @IsobusVTMessageTypes.VTChangeNumericValueRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTChangeNumericValueRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTChangeNumericValueRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTChangeNumericValueRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTChangeNumericValueRes.");
+  }
+  return 0;
+}
+
+void VTChangeNumericValueRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", value_ := ");
+single_value->field_value__.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void VTChangeNumericValueRes_template::log_match(const VTChangeNumericValueRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectID.match(match_value.objectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectID");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_value__.match(match_value.value__(), legacy)){
+TTCN_Logger::log_logmatch_info(".value_");
+single_value->field_value__.log_match(match_value.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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", value_ := ");
+single_value->field_value__.log_match(match_value.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 VTChangeNumericValueRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectID.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_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 @IsobusVTMessageTypes.VTChangeNumericValueRes.");
+}
+}
+
+void VTChangeNumericValueRes_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_vtfunction.decode_text(text_buf);
+single_value->field_objectID.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_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 VTChangeNumericValueRes_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 @IsobusVTMessageTypes.VTChangeNumericValueRes.");
+}
+}
+
+void VTChangeNumericValueRes_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: {
+    VTChangeNumericValueRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.VTChangeNumericValueRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) 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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "value_")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          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 @IsobusVTMessageTypes.VTChangeNumericValueRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.VTChangeNumericValueRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void VTChangeNumericValueRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeNumericValueRes");
+single_value->field_objectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeNumericValueRes");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeNumericValueRes");
+single_value->field_value__.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeNumericValueRes");
+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 : "@IsobusVTMessageTypes.VTChangeNumericValueRes");
+}
+
+boolean VTChangeNumericValueRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean VTChangeNumericValueRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+VTChangeActiveMasErrorcodes::VTChangeActiveMasErrorcodes()
+{
+}
+
+VTChangeActiveMasErrorcodes::VTChangeActiveMasErrorcodes(const BOOLEAN& par_reserved0,
+    const BOOLEAN& par_reserved1,
+    const BOOLEAN& par_missingObjects,
+    const BOOLEAN& par_maskOrChildObjectHasErrors,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_poolBeingDeleted,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7)
+  :   field_reserved0(par_reserved0),
+  field_reserved1(par_reserved1),
+  field_missingObjects(par_missingObjects),
+  field_maskOrChildObjectHasErrors(par_maskOrChildObjectHasErrors),
+  field_anyOtherError(par_anyOtherError),
+  field_poolBeingDeleted(par_poolBeingDeleted),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7)
+{
+}
+
+VTChangeActiveMasErrorcodes::VTChangeActiveMasErrorcodes(const VTChangeActiveMasErrorcodes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.VTChangeActiveMasErrorcodes.");
+if (other_value.reserved0().is_bound()) field_reserved0 = other_value.reserved0();
+else field_reserved0.clean_up();
+if (other_value.reserved1().is_bound()) field_reserved1 = other_value.reserved1();
+else field_reserved1.clean_up();
+if (other_value.missingObjects().is_bound()) field_missingObjects = other_value.missingObjects();
+else field_missingObjects.clean_up();
+if (other_value.maskOrChildObjectHasErrors().is_bound()) field_maskOrChildObjectHasErrors = other_value.maskOrChildObjectHasErrors();
+else field_maskOrChildObjectHasErrors.clean_up();
+if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+else field_anyOtherError.clean_up();
+if (other_value.poolBeingDeleted().is_bound()) field_poolBeingDeleted = other_value.poolBeingDeleted();
+else field_poolBeingDeleted.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+}
+
+void VTChangeActiveMasErrorcodes::clean_up()
+{
+field_reserved0.clean_up();
+field_reserved1.clean_up();
+field_missingObjects.clean_up();
+field_maskOrChildObjectHasErrors.clean_up();
+field_anyOtherError.clean_up();
+field_poolBeingDeleted.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+}
+
+const TTCN_Typedescriptor_t* VTChangeActiveMasErrorcodes::get_descriptor() const { return &VTChangeActiveMasErrorcodes_descr_; }
+VTChangeActiveMasErrorcodes& VTChangeActiveMasErrorcodes::operator=(const VTChangeActiveMasErrorcodes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.VTChangeActiveMasErrorcodes.");
+  if (other_value.reserved0().is_bound()) field_reserved0 = other_value.reserved0();
+  else field_reserved0.clean_up();
+  if (other_value.reserved1().is_bound()) field_reserved1 = other_value.reserved1();
+  else field_reserved1.clean_up();
+  if (other_value.missingObjects().is_bound()) field_missingObjects = other_value.missingObjects();
+  else field_missingObjects.clean_up();
+  if (other_value.maskOrChildObjectHasErrors().is_bound()) field_maskOrChildObjectHasErrors = other_value.maskOrChildObjectHasErrors();
+  else field_maskOrChildObjectHasErrors.clean_up();
+  if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+  else field_anyOtherError.clean_up();
+  if (other_value.poolBeingDeleted().is_bound()) field_poolBeingDeleted = other_value.poolBeingDeleted();
+  else field_poolBeingDeleted.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+}
+return *this;
+}
+
+boolean VTChangeActiveMasErrorcodes::operator==(const VTChangeActiveMasErrorcodes& other_value) const
+{
+return field_reserved0==other_value.field_reserved0
+  && field_reserved1==other_value.field_reserved1
+  && field_missingObjects==other_value.field_missingObjects
+  && field_maskOrChildObjectHasErrors==other_value.field_maskOrChildObjectHasErrors
+  && field_anyOtherError==other_value.field_anyOtherError
+  && field_poolBeingDeleted==other_value.field_poolBeingDeleted
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7;
+}
+
+boolean VTChangeActiveMasErrorcodes::is_bound() const
+{
+return (field_reserved0.is_bound())
+  || (field_reserved1.is_bound())
+  || (field_missingObjects.is_bound())
+  || (field_maskOrChildObjectHasErrors.is_bound())
+  || (field_anyOtherError.is_bound())
+  || (field_poolBeingDeleted.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound());
+}
+boolean VTChangeActiveMasErrorcodes::is_value() const
+{
+return field_reserved0.is_value()
+  && field_reserved1.is_value()
+  && field_missingObjects.is_value()
+  && field_maskOrChildObjectHasErrors.is_value()
+  && field_anyOtherError.is_value()
+  && field_poolBeingDeleted.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value();
+}
+void VTChangeActiveMasErrorcodes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ reserved0 := ");
+field_reserved0.log();
+TTCN_Logger::log_event_str(", reserved1 := ");
+field_reserved1.log();
+TTCN_Logger::log_event_str(", missingObjects := ");
+field_missingObjects.log();
+TTCN_Logger::log_event_str(", maskOrChildObjectHasErrors := ");
+field_maskOrChildObjectHasErrors.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+field_anyOtherError.log();
+TTCN_Logger::log_event_str(", poolBeingDeleted := ");
+field_poolBeingDeleted.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void VTChangeActiveMasErrorcodes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.VTChangeActiveMasErrorcodes has 8 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) reserved0().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved1().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) missingObjects().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) maskOrChildObjectHasErrors().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) poolBeingDeleted().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "reserved0")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved0().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(), "reserved1")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved1().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(), "missingObjects")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          missingObjects().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(), "maskOrChildObjectHasErrors")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          maskOrChildObjectHasErrors().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "poolBeingDeleted")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          poolBeingDeleted().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.VTChangeActiveMasErrorcodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.VTChangeActiveMasErrorcodes");
+  }
+}
+
+void VTChangeActiveMasErrorcodes::set_implicit_omit()
+{
+if (reserved0().is_bound()) reserved0().set_implicit_omit();
+if (reserved1().is_bound()) reserved1().set_implicit_omit();
+if (missingObjects().is_bound()) missingObjects().set_implicit_omit();
+if (maskOrChildObjectHasErrors().is_bound()) maskOrChildObjectHasErrors().set_implicit_omit();
+if (anyOtherError().is_bound()) anyOtherError().set_implicit_omit();
+if (poolBeingDeleted().is_bound()) poolBeingDeleted().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+}
+
+void VTChangeActiveMasErrorcodes::encode_text(Text_Buf& text_buf) const
+{
+field_reserved0.encode_text(text_buf);
+field_reserved1.encode_text(text_buf);
+field_missingObjects.encode_text(text_buf);
+field_maskOrChildObjectHasErrors.encode_text(text_buf);
+field_anyOtherError.encode_text(text_buf);
+field_poolBeingDeleted.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+}
+
+void VTChangeActiveMasErrorcodes::decode_text(Text_Buf& text_buf)
+{
+field_reserved0.decode_text(text_buf);
+field_reserved1.decode_text(text_buf);
+field_missingObjects.decode_text(text_buf);
+field_maskOrChildObjectHasErrors.decode_text(text_buf);
+field_anyOtherError.decode_text(text_buf);
+field_poolBeingDeleted.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+}
+
+void VTChangeActiveMasErrorcodes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void VTChangeActiveMasErrorcodes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int VTChangeActiveMasErrorcodes::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved0.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved1.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_missingObjects.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_maskOrChildObjectHasErrors.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_anyOtherError.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_poolBeingDeleted.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int VTChangeActiveMasErrorcodes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_reserved0.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved1.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_missingObjects.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_maskOrChildObjectHasErrors.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_anyOtherError.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_poolBeingDeleted.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved6.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved7.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct VTChangeActiveMasErrorcodes_template::single_value_struct {
+BOOLEAN_template field_reserved0;
+BOOLEAN_template field_reserved1;
+BOOLEAN_template field_missingObjects;
+BOOLEAN_template field_maskOrChildObjectHasErrors;
+BOOLEAN_template field_anyOtherError;
+BOOLEAN_template field_poolBeingDeleted;
+BOOLEAN_template field_reserved6;
+BOOLEAN_template field_reserved7;
+};
+
+void VTChangeActiveMasErrorcodes_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_reserved0 = ANY_VALUE;
+single_value->field_reserved1 = ANY_VALUE;
+single_value->field_missingObjects = ANY_VALUE;
+single_value->field_maskOrChildObjectHasErrors = ANY_VALUE;
+single_value->field_anyOtherError = ANY_VALUE;
+single_value->field_poolBeingDeleted = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+}
+}
+}
+
+void VTChangeActiveMasErrorcodes_template::copy_value(const VTChangeActiveMasErrorcodes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.reserved0().is_bound()) {
+  single_value->field_reserved0 = other_value.reserved0();
+} else {
+  single_value->field_reserved0.clean_up();
+}
+if (other_value.reserved1().is_bound()) {
+  single_value->field_reserved1 = other_value.reserved1();
+} else {
+  single_value->field_reserved1.clean_up();
+}
+if (other_value.missingObjects().is_bound()) {
+  single_value->field_missingObjects = other_value.missingObjects();
+} else {
+  single_value->field_missingObjects.clean_up();
+}
+if (other_value.maskOrChildObjectHasErrors().is_bound()) {
+  single_value->field_maskOrChildObjectHasErrors = other_value.maskOrChildObjectHasErrors();
+} else {
+  single_value->field_maskOrChildObjectHasErrors.clean_up();
+}
+if (other_value.anyOtherError().is_bound()) {
+  single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+  single_value->field_anyOtherError.clean_up();
+}
+if (other_value.poolBeingDeleted().is_bound()) {
+  single_value->field_poolBeingDeleted = other_value.poolBeingDeleted();
+} else {
+  single_value->field_poolBeingDeleted.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void VTChangeActiveMasErrorcodes_template::copy_template(const VTChangeActiveMasErrorcodes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.reserved0().get_selection()) {
+single_value->field_reserved0 = other_value.reserved0();
+} else {
+single_value->field_reserved0.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved1().get_selection()) {
+single_value->field_reserved1 = other_value.reserved1();
+} else {
+single_value->field_reserved1.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.missingObjects().get_selection()) {
+single_value->field_missingObjects = other_value.missingObjects();
+} else {
+single_value->field_missingObjects.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.maskOrChildObjectHasErrors().get_selection()) {
+single_value->field_maskOrChildObjectHasErrors = other_value.maskOrChildObjectHasErrors();
+} else {
+single_value->field_maskOrChildObjectHasErrors.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.anyOtherError().get_selection()) {
+single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+single_value->field_anyOtherError.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.poolBeingDeleted().get_selection()) {
+single_value->field_poolBeingDeleted = other_value.poolBeingDeleted();
+} else {
+single_value->field_poolBeingDeleted.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new VTChangeActiveMasErrorcodes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTChangeActiveMasErrorcodes.");
+break;
+}
+set_selection(other_value);
+}
+
+VTChangeActiveMasErrorcodes_template::VTChangeActiveMasErrorcodes_template()
+{
+}
+
+VTChangeActiveMasErrorcodes_template::VTChangeActiveMasErrorcodes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+VTChangeActiveMasErrorcodes_template::VTChangeActiveMasErrorcodes_template(const VTChangeActiveMasErrorcodes& other_value)
+{
+copy_value(other_value);
+}
+
+VTChangeActiveMasErrorcodes_template::VTChangeActiveMasErrorcodes_template(const OPTIONAL<VTChangeActiveMasErrorcodes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTChangeActiveMasErrorcodes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.VTChangeActiveMasErrorcodes from an unbound optional field.");
+}
+}
+
+VTChangeActiveMasErrorcodes_template::VTChangeActiveMasErrorcodes_template(const VTChangeActiveMasErrorcodes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+VTChangeActiveMasErrorcodes_template::~VTChangeActiveMasErrorcodes_template()
+{
+clean_up();
+}
+
+VTChangeActiveMasErrorcodes_template& VTChangeActiveMasErrorcodes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+VTChangeActiveMasErrorcodes_template& VTChangeActiveMasErrorcodes_template::operator=(const VTChangeActiveMasErrorcodes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+VTChangeActiveMasErrorcodes_template& VTChangeActiveMasErrorcodes_template::operator=(const OPTIONAL<VTChangeActiveMasErrorcodes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTChangeActiveMasErrorcodes&)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 @IsobusVTMessageTypes.VTChangeActiveMasErrorcodes.");
+}
+return *this;
+}
+
+VTChangeActiveMasErrorcodes_template& VTChangeActiveMasErrorcodes_template::operator=(const VTChangeActiveMasErrorcodes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean VTChangeActiveMasErrorcodes_template::match(const VTChangeActiveMasErrorcodes& 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.reserved0().is_bound()) return FALSE;
+if(!single_value->field_reserved0.match(other_value.reserved0(), legacy))return FALSE;
+if(!other_value.reserved1().is_bound()) return FALSE;
+if(!single_value->field_reserved1.match(other_value.reserved1(), legacy))return FALSE;
+if(!other_value.missingObjects().is_bound()) return FALSE;
+if(!single_value->field_missingObjects.match(other_value.missingObjects(), legacy))return FALSE;
+if(!other_value.maskOrChildObjectHasErrors().is_bound()) return FALSE;
+if(!single_value->field_maskOrChildObjectHasErrors.match(other_value.maskOrChildObjectHasErrors(), legacy))return FALSE;
+if(!other_value.anyOtherError().is_bound()) return FALSE;
+if(!single_value->field_anyOtherError.match(other_value.anyOtherError(), legacy))return FALSE;
+if(!other_value.poolBeingDeleted().is_bound()) return FALSE;
+if(!single_value->field_poolBeingDeleted.match(other_value.poolBeingDeleted(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTChangeActiveMasErrorcodes.");
+}
+return FALSE;
+}
+
+boolean VTChangeActiveMasErrorcodes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_reserved0.is_bound()
+
+ ||single_value->field_reserved1.is_bound()
+
+ ||single_value->field_missingObjects.is_bound()
+
+ ||single_value->field_maskOrChildObjectHasErrors.is_bound()
+
+ ||single_value->field_anyOtherError.is_bound()
+
+ ||single_value->field_poolBeingDeleted.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+;
+}
+
+boolean VTChangeActiveMasErrorcodes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_reserved0.is_value()
+ &&single_value->field_reserved1.is_value()
+ &&single_value->field_missingObjects.is_value()
+ &&single_value->field_maskOrChildObjectHasErrors.is_value()
+ &&single_value->field_anyOtherError.is_value()
+ &&single_value->field_poolBeingDeleted.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value();
+}
+
+void VTChangeActiveMasErrorcodes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+VTChangeActiveMasErrorcodes VTChangeActiveMasErrorcodes_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 @IsobusVTMessageTypes.VTChangeActiveMasErrorcodes.");
+VTChangeActiveMasErrorcodes ret_val;
+if (single_value->field_reserved0.is_bound()) {
+ret_val.reserved0() = single_value->field_reserved0.valueof();
+}
+if (single_value->field_reserved1.is_bound()) {
+ret_val.reserved1() = single_value->field_reserved1.valueof();
+}
+if (single_value->field_missingObjects.is_bound()) {
+ret_val.missingObjects() = single_value->field_missingObjects.valueof();
+}
+if (single_value->field_maskOrChildObjectHasErrors.is_bound()) {
+ret_val.maskOrChildObjectHasErrors() = single_value->field_maskOrChildObjectHasErrors.valueof();
+}
+if (single_value->field_anyOtherError.is_bound()) {
+ret_val.anyOtherError() = single_value->field_anyOtherError.valueof();
+}
+if (single_value->field_poolBeingDeleted.is_bound()) {
+ret_val.poolBeingDeleted() = single_value->field_poolBeingDeleted.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+return ret_val;
+}
+
+void VTChangeActiveMasErrorcodes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.VTChangeActiveMasErrorcodes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new VTChangeActiveMasErrorcodes_template[list_length];
+}
+
+VTChangeActiveMasErrorcodes_template& VTChangeActiveMasErrorcodes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.VTChangeActiveMasErrorcodes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.VTChangeActiveMasErrorcodes.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& VTChangeActiveMasErrorcodes_template::reserved0()
+{
+set_specific();
+return single_value->field_reserved0;
+}
+
+const BOOLEAN_template& VTChangeActiveMasErrorcodes_template::reserved0() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved0 of a non-specific template of type @IsobusVTMessageTypes.VTChangeActiveMasErrorcodes.");
+return single_value->field_reserved0;
+}
+
+BOOLEAN_template& VTChangeActiveMasErrorcodes_template::reserved1()
+{
+set_specific();
+return single_value->field_reserved1;
+}
+
+const BOOLEAN_template& VTChangeActiveMasErrorcodes_template::reserved1() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved1 of a non-specific template of type @IsobusVTMessageTypes.VTChangeActiveMasErrorcodes.");
+return single_value->field_reserved1;
+}
+
+BOOLEAN_template& VTChangeActiveMasErrorcodes_template::missingObjects()
+{
+set_specific();
+return single_value->field_missingObjects;
+}
+
+const BOOLEAN_template& VTChangeActiveMasErrorcodes_template::missingObjects() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field missingObjects of a non-specific template of type @IsobusVTMessageTypes.VTChangeActiveMasErrorcodes.");
+return single_value->field_missingObjects;
+}
+
+BOOLEAN_template& VTChangeActiveMasErrorcodes_template::maskOrChildObjectHasErrors()
+{
+set_specific();
+return single_value->field_maskOrChildObjectHasErrors;
+}
+
+const BOOLEAN_template& VTChangeActiveMasErrorcodes_template::maskOrChildObjectHasErrors() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field maskOrChildObjectHasErrors of a non-specific template of type @IsobusVTMessageTypes.VTChangeActiveMasErrorcodes.");
+return single_value->field_maskOrChildObjectHasErrors;
+}
+
+BOOLEAN_template& VTChangeActiveMasErrorcodes_template::anyOtherError()
+{
+set_specific();
+return single_value->field_anyOtherError;
+}
+
+const BOOLEAN_template& VTChangeActiveMasErrorcodes_template::anyOtherError() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field anyOtherError of a non-specific template of type @IsobusVTMessageTypes.VTChangeActiveMasErrorcodes.");
+return single_value->field_anyOtherError;
+}
+
+BOOLEAN_template& VTChangeActiveMasErrorcodes_template::poolBeingDeleted()
+{
+set_specific();
+return single_value->field_poolBeingDeleted;
+}
+
+const BOOLEAN_template& VTChangeActiveMasErrorcodes_template::poolBeingDeleted() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field poolBeingDeleted of a non-specific template of type @IsobusVTMessageTypes.VTChangeActiveMasErrorcodes.");
+return single_value->field_poolBeingDeleted;
+}
+
+BOOLEAN_template& VTChangeActiveMasErrorcodes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const BOOLEAN_template& VTChangeActiveMasErrorcodes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.VTChangeActiveMasErrorcodes.");
+return single_value->field_reserved6;
+}
+
+BOOLEAN_template& VTChangeActiveMasErrorcodes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const BOOLEAN_template& VTChangeActiveMasErrorcodes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.VTChangeActiveMasErrorcodes.");
+return single_value->field_reserved7;
+}
+
+int VTChangeActiveMasErrorcodes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTChangeActiveMasErrorcodes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTChangeActiveMasErrorcodes 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 @IsobusVTMessageTypes.VTChangeActiveMasErrorcodes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTChangeActiveMasErrorcodes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTChangeActiveMasErrorcodes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTChangeActiveMasErrorcodes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTChangeActiveMasErrorcodes.");
+  }
+  return 0;
+}
+
+void VTChangeActiveMasErrorcodes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ reserved0 := ");
+single_value->field_reserved0.log();
+TTCN_Logger::log_event_str(", reserved1 := ");
+single_value->field_reserved1.log();
+TTCN_Logger::log_event_str(", missingObjects := ");
+single_value->field_missingObjects.log();
+TTCN_Logger::log_event_str(", maskOrChildObjectHasErrors := ");
+single_value->field_maskOrChildObjectHasErrors.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log();
+TTCN_Logger::log_event_str(", poolBeingDeleted := ");
+single_value->field_poolBeingDeleted.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void VTChangeActiveMasErrorcodes_template::log_match(const VTChangeActiveMasErrorcodes& 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_reserved0.match(match_value.reserved0(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved0");
+single_value->field_reserved0.log_match(match_value.reserved0(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved1.match(match_value.reserved1(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved1");
+single_value->field_reserved1.log_match(match_value.reserved1(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_missingObjects.match(match_value.missingObjects(), legacy)){
+TTCN_Logger::log_logmatch_info(".missingObjects");
+single_value->field_missingObjects.log_match(match_value.missingObjects(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_maskOrChildObjectHasErrors.match(match_value.maskOrChildObjectHasErrors(), legacy)){
+TTCN_Logger::log_logmatch_info(".maskOrChildObjectHasErrors");
+single_value->field_maskOrChildObjectHasErrors.log_match(match_value.maskOrChildObjectHasErrors(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_anyOtherError.match(match_value.anyOtherError(), legacy)){
+TTCN_Logger::log_logmatch_info(".anyOtherError");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_poolBeingDeleted.match(match_value.poolBeingDeleted(), legacy)){
+TTCN_Logger::log_logmatch_info(".poolBeingDeleted");
+single_value->field_poolBeingDeleted.log_match(match_value.poolBeingDeleted(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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("{ reserved0 := ");
+single_value->field_reserved0.log_match(match_value.reserved0(), legacy);
+TTCN_Logger::log_event_str(", reserved1 := ");
+single_value->field_reserved1.log_match(match_value.reserved1(), legacy);
+TTCN_Logger::log_event_str(", missingObjects := ");
+single_value->field_missingObjects.log_match(match_value.missingObjects(), legacy);
+TTCN_Logger::log_event_str(", maskOrChildObjectHasErrors := ");
+single_value->field_maskOrChildObjectHasErrors.log_match(match_value.maskOrChildObjectHasErrors(), legacy);
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::log_event_str(", poolBeingDeleted := ");
+single_value->field_poolBeingDeleted.log_match(match_value.poolBeingDeleted(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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 VTChangeActiveMasErrorcodes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_reserved0.encode_text(text_buf);
+single_value->field_reserved1.encode_text(text_buf);
+single_value->field_missingObjects.encode_text(text_buf);
+single_value->field_maskOrChildObjectHasErrors.encode_text(text_buf);
+single_value->field_anyOtherError.encode_text(text_buf);
+single_value->field_poolBeingDeleted.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.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 @IsobusVTMessageTypes.VTChangeActiveMasErrorcodes.");
+}
+}
+
+void VTChangeActiveMasErrorcodes_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_reserved0.decode_text(text_buf);
+single_value->field_reserved1.decode_text(text_buf);
+single_value->field_missingObjects.decode_text(text_buf);
+single_value->field_maskOrChildObjectHasErrors.decode_text(text_buf);
+single_value->field_anyOtherError.decode_text(text_buf);
+single_value->field_poolBeingDeleted.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.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 VTChangeActiveMasErrorcodes_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 @IsobusVTMessageTypes.VTChangeActiveMasErrorcodes.");
+}
+}
+
+void VTChangeActiveMasErrorcodes_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: {
+    VTChangeActiveMasErrorcodes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.VTChangeActiveMasErrorcodes has 8 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) reserved0().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved1().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) missingObjects().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) maskOrChildObjectHasErrors().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) poolBeingDeleted().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "reserved0")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved0().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(), "reserved1")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved1().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(), "missingObjects")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          missingObjects().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(), "maskOrChildObjectHasErrors")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          maskOrChildObjectHasErrors().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "poolBeingDeleted")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          poolBeingDeleted().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.VTChangeActiveMasErrorcodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.VTChangeActiveMasErrorcodes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void VTChangeActiveMasErrorcodes_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_reserved0.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeActiveMasErrorcodes");
+single_value->field_reserved1.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeActiveMasErrorcodes");
+single_value->field_missingObjects.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeActiveMasErrorcodes");
+single_value->field_maskOrChildObjectHasErrors.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeActiveMasErrorcodes");
+single_value->field_anyOtherError.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeActiveMasErrorcodes");
+single_value->field_poolBeingDeleted.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeActiveMasErrorcodes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeActiveMasErrorcodes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeActiveMasErrorcodes");
+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 : "@IsobusVTMessageTypes.VTChangeActiveMasErrorcodes");
+}
+
+boolean VTChangeActiveMasErrorcodes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean VTChangeActiveMasErrorcodes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+VTChangeActiveMaskReq::VTChangeActiveMaskReq()
+{
+}
+
+VTChangeActiveMaskReq::VTChangeActiveMaskReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_activeMaskOrWindowMaskOrKeyGroupObjectID,
+    const VTChangeActiveMasErrorcodes& par_errorCodes,
+    const INTEGER& par_objectIDcontainingError,
+    const INTEGER& par_parentObjectIDofErrorObjectID)
+  :   field_vtfunction(par_vtfunction),
+  field_activeMaskOrWindowMaskOrKeyGroupObjectID(par_activeMaskOrWindowMaskOrKeyGroupObjectID),
+  field_errorCodes(par_errorCodes),
+  field_objectIDcontainingError(par_objectIDcontainingError),
+  field_parentObjectIDofErrorObjectID(par_parentObjectIDofErrorObjectID)
+{
+}
+
+VTChangeActiveMaskReq::VTChangeActiveMaskReq(const VTChangeActiveMaskReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.VTChangeActiveMaskReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.activeMaskOrWindowMaskOrKeyGroupObjectID().is_bound()) field_activeMaskOrWindowMaskOrKeyGroupObjectID = other_value.activeMaskOrWindowMaskOrKeyGroupObjectID();
+else field_activeMaskOrWindowMaskOrKeyGroupObjectID.clean_up();
+if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+else field_errorCodes.clean_up();
+if (other_value.objectIDcontainingError().is_bound()) field_objectIDcontainingError = other_value.objectIDcontainingError();
+else field_objectIDcontainingError.clean_up();
+if (other_value.parentObjectIDofErrorObjectID().is_bound()) field_parentObjectIDofErrorObjectID = other_value.parentObjectIDofErrorObjectID();
+else field_parentObjectIDofErrorObjectID.clean_up();
+}
+
+void VTChangeActiveMaskReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_activeMaskOrWindowMaskOrKeyGroupObjectID.clean_up();
+field_errorCodes.clean_up();
+field_objectIDcontainingError.clean_up();
+field_parentObjectIDofErrorObjectID.clean_up();
+}
+
+const TTCN_Typedescriptor_t* VTChangeActiveMaskReq::get_descriptor() const { return &VTChangeActiveMaskReq_descr_; }
+VTChangeActiveMaskReq& VTChangeActiveMaskReq::operator=(const VTChangeActiveMaskReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.VTChangeActiveMaskReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.activeMaskOrWindowMaskOrKeyGroupObjectID().is_bound()) field_activeMaskOrWindowMaskOrKeyGroupObjectID = other_value.activeMaskOrWindowMaskOrKeyGroupObjectID();
+  else field_activeMaskOrWindowMaskOrKeyGroupObjectID.clean_up();
+  if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+  else field_errorCodes.clean_up();
+  if (other_value.objectIDcontainingError().is_bound()) field_objectIDcontainingError = other_value.objectIDcontainingError();
+  else field_objectIDcontainingError.clean_up();
+  if (other_value.parentObjectIDofErrorObjectID().is_bound()) field_parentObjectIDofErrorObjectID = other_value.parentObjectIDofErrorObjectID();
+  else field_parentObjectIDofErrorObjectID.clean_up();
+}
+return *this;
+}
+
+boolean VTChangeActiveMaskReq::operator==(const VTChangeActiveMaskReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_activeMaskOrWindowMaskOrKeyGroupObjectID==other_value.field_activeMaskOrWindowMaskOrKeyGroupObjectID
+  && field_errorCodes==other_value.field_errorCodes
+  && field_objectIDcontainingError==other_value.field_objectIDcontainingError
+  && field_parentObjectIDofErrorObjectID==other_value.field_parentObjectIDofErrorObjectID;
+}
+
+boolean VTChangeActiveMaskReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_activeMaskOrWindowMaskOrKeyGroupObjectID.is_bound())
+  || (field_errorCodes.is_bound())
+  || (field_objectIDcontainingError.is_bound())
+  || (field_parentObjectIDofErrorObjectID.is_bound());
+}
+boolean VTChangeActiveMaskReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_activeMaskOrWindowMaskOrKeyGroupObjectID.is_value()
+  && field_errorCodes.is_value()
+  && field_objectIDcontainingError.is_value()
+  && field_parentObjectIDofErrorObjectID.is_value();
+}
+void VTChangeActiveMaskReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", activeMaskOrWindowMaskOrKeyGroupObjectID := ");
+field_activeMaskOrWindowMaskOrKeyGroupObjectID.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+field_errorCodes.log();
+TTCN_Logger::log_event_str(", objectIDcontainingError := ");
+field_objectIDcontainingError.log();
+TTCN_Logger::log_event_str(", parentObjectIDofErrorObjectID := ");
+field_parentObjectIDofErrorObjectID.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void VTChangeActiveMaskReq::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 @IsobusVTMessageTypes.VTChangeActiveMaskReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) activeMaskOrWindowMaskOrKeyGroupObjectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) objectIDcontainingError().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) parentObjectIDofErrorObjectID().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "activeMaskOrWindowMaskOrKeyGroupObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          activeMaskOrWindowMaskOrKeyGroupObjectID().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "objectIDcontainingError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDcontainingError().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(), "parentObjectIDofErrorObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          parentObjectIDofErrorObjectID().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 @IsobusVTMessageTypes.VTChangeActiveMaskReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.VTChangeActiveMaskReq");
+  }
+}
+
+void VTChangeActiveMaskReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (activeMaskOrWindowMaskOrKeyGroupObjectID().is_bound()) activeMaskOrWindowMaskOrKeyGroupObjectID().set_implicit_omit();
+if (errorCodes().is_bound()) errorCodes().set_implicit_omit();
+if (objectIDcontainingError().is_bound()) objectIDcontainingError().set_implicit_omit();
+if (parentObjectIDofErrorObjectID().is_bound()) parentObjectIDofErrorObjectID().set_implicit_omit();
+}
+
+void VTChangeActiveMaskReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_activeMaskOrWindowMaskOrKeyGroupObjectID.encode_text(text_buf);
+field_errorCodes.encode_text(text_buf);
+field_objectIDcontainingError.encode_text(text_buf);
+field_parentObjectIDofErrorObjectID.encode_text(text_buf);
+}
+
+void VTChangeActiveMaskReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_activeMaskOrWindowMaskOrKeyGroupObjectID.decode_text(text_buf);
+field_errorCodes.decode_text(text_buf);
+field_objectIDcontainingError.decode_text(text_buf);
+field_parentObjectIDofErrorObjectID.decode_text(text_buf);
+}
+
+void VTChangeActiveMaskReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void VTChangeActiveMaskReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int VTChangeActiveMaskReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_activeMaskOrWindowMaskOrKeyGroupObjectID.RAW_decode(ValidObjectID_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, VTChangeActiveMasErrorcodes_descr_.raw->forceomit);
+  decoded_field_length = field_errorCodes.RAW_decode(VTChangeActiveMasErrorcodes_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectIDcontainingError.RAW_decode(ValidObjectID_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_parentObjectIDofErrorObjectID.RAW_decode(ValidObjectID_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 VTChangeActiveMaskReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, VTChangeActiveMasErrorcodes_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, ValidObjectID_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_activeMaskOrWindowMaskOrKeyGroupObjectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_errorCodes.RAW_encode(VTChangeActiveMasErrorcodes_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_objectIDcontainingError.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_parentObjectIDofErrorObjectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[4]);
+  return myleaf.length = encoded_length;
+}
+
+struct VTChangeActiveMaskReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_activeMaskOrWindowMaskOrKeyGroupObjectID;
+VTChangeActiveMasErrorcodes_template field_errorCodes;
+INTEGER_template field_objectIDcontainingError;
+INTEGER_template field_parentObjectIDofErrorObjectID;
+};
+
+void VTChangeActiveMaskReq_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_vtfunction = ANY_VALUE;
+single_value->field_activeMaskOrWindowMaskOrKeyGroupObjectID = ANY_VALUE;
+single_value->field_errorCodes = ANY_VALUE;
+single_value->field_objectIDcontainingError = ANY_VALUE;
+single_value->field_parentObjectIDofErrorObjectID = ANY_VALUE;
+}
+}
+}
+
+void VTChangeActiveMaskReq_template::copy_value(const VTChangeActiveMaskReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.activeMaskOrWindowMaskOrKeyGroupObjectID().is_bound()) {
+  single_value->field_activeMaskOrWindowMaskOrKeyGroupObjectID = other_value.activeMaskOrWindowMaskOrKeyGroupObjectID();
+} else {
+  single_value->field_activeMaskOrWindowMaskOrKeyGroupObjectID.clean_up();
+}
+if (other_value.errorCodes().is_bound()) {
+  single_value->field_errorCodes = other_value.errorCodes();
+} else {
+  single_value->field_errorCodes.clean_up();
+}
+if (other_value.objectIDcontainingError().is_bound()) {
+  single_value->field_objectIDcontainingError = other_value.objectIDcontainingError();
+} else {
+  single_value->field_objectIDcontainingError.clean_up();
+}
+if (other_value.parentObjectIDofErrorObjectID().is_bound()) {
+  single_value->field_parentObjectIDofErrorObjectID = other_value.parentObjectIDofErrorObjectID();
+} else {
+  single_value->field_parentObjectIDofErrorObjectID.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void VTChangeActiveMaskReq_template::copy_template(const VTChangeActiveMaskReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.activeMaskOrWindowMaskOrKeyGroupObjectID().get_selection()) {
+single_value->field_activeMaskOrWindowMaskOrKeyGroupObjectID = other_value.activeMaskOrWindowMaskOrKeyGroupObjectID();
+} else {
+single_value->field_activeMaskOrWindowMaskOrKeyGroupObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.errorCodes().get_selection()) {
+single_value->field_errorCodes = other_value.errorCodes();
+} else {
+single_value->field_errorCodes.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectIDcontainingError().get_selection()) {
+single_value->field_objectIDcontainingError = other_value.objectIDcontainingError();
+} else {
+single_value->field_objectIDcontainingError.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.parentObjectIDofErrorObjectID().get_selection()) {
+single_value->field_parentObjectIDofErrorObjectID = other_value.parentObjectIDofErrorObjectID();
+} else {
+single_value->field_parentObjectIDofErrorObjectID.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new VTChangeActiveMaskReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTChangeActiveMaskReq.");
+break;
+}
+set_selection(other_value);
+}
+
+VTChangeActiveMaskReq_template::VTChangeActiveMaskReq_template()
+{
+}
+
+VTChangeActiveMaskReq_template::VTChangeActiveMaskReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+VTChangeActiveMaskReq_template::VTChangeActiveMaskReq_template(const VTChangeActiveMaskReq& other_value)
+{
+copy_value(other_value);
+}
+
+VTChangeActiveMaskReq_template::VTChangeActiveMaskReq_template(const OPTIONAL<VTChangeActiveMaskReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTChangeActiveMaskReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.VTChangeActiveMaskReq from an unbound optional field.");
+}
+}
+
+VTChangeActiveMaskReq_template::VTChangeActiveMaskReq_template(const VTChangeActiveMaskReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+VTChangeActiveMaskReq_template::~VTChangeActiveMaskReq_template()
+{
+clean_up();
+}
+
+VTChangeActiveMaskReq_template& VTChangeActiveMaskReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+VTChangeActiveMaskReq_template& VTChangeActiveMaskReq_template::operator=(const VTChangeActiveMaskReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+VTChangeActiveMaskReq_template& VTChangeActiveMaskReq_template::operator=(const OPTIONAL<VTChangeActiveMaskReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTChangeActiveMaskReq&)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 @IsobusVTMessageTypes.VTChangeActiveMaskReq.");
+}
+return *this;
+}
+
+VTChangeActiveMaskReq_template& VTChangeActiveMaskReq_template::operator=(const VTChangeActiveMaskReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean VTChangeActiveMaskReq_template::match(const VTChangeActiveMaskReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.activeMaskOrWindowMaskOrKeyGroupObjectID().is_bound()) return FALSE;
+if(!single_value->field_activeMaskOrWindowMaskOrKeyGroupObjectID.match(other_value.activeMaskOrWindowMaskOrKeyGroupObjectID(), legacy))return FALSE;
+if(!other_value.errorCodes().is_bound()) return FALSE;
+if(!single_value->field_errorCodes.match(other_value.errorCodes(), legacy))return FALSE;
+if(!other_value.objectIDcontainingError().is_bound()) return FALSE;
+if(!single_value->field_objectIDcontainingError.match(other_value.objectIDcontainingError(), legacy))return FALSE;
+if(!other_value.parentObjectIDofErrorObjectID().is_bound()) return FALSE;
+if(!single_value->field_parentObjectIDofErrorObjectID.match(other_value.parentObjectIDofErrorObjectID(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTChangeActiveMaskReq.");
+}
+return FALSE;
+}
+
+boolean VTChangeActiveMaskReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_activeMaskOrWindowMaskOrKeyGroupObjectID.is_bound()
+
+ ||single_value->field_errorCodes.is_bound()
+
+ ||single_value->field_objectIDcontainingError.is_bound()
+
+ ||single_value->field_parentObjectIDofErrorObjectID.is_bound()
+;
+}
+
+boolean VTChangeActiveMaskReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_activeMaskOrWindowMaskOrKeyGroupObjectID.is_value()
+ &&single_value->field_errorCodes.is_value()
+ &&single_value->field_objectIDcontainingError.is_value()
+ &&single_value->field_parentObjectIDofErrorObjectID.is_value();
+}
+
+void VTChangeActiveMaskReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+VTChangeActiveMaskReq VTChangeActiveMaskReq_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 @IsobusVTMessageTypes.VTChangeActiveMaskReq.");
+VTChangeActiveMaskReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_activeMaskOrWindowMaskOrKeyGroupObjectID.is_bound()) {
+ret_val.activeMaskOrWindowMaskOrKeyGroupObjectID() = single_value->field_activeMaskOrWindowMaskOrKeyGroupObjectID.valueof();
+}
+if (single_value->field_errorCodes.is_bound()) {
+ret_val.errorCodes() = single_value->field_errorCodes.valueof();
+}
+if (single_value->field_objectIDcontainingError.is_bound()) {
+ret_val.objectIDcontainingError() = single_value->field_objectIDcontainingError.valueof();
+}
+if (single_value->field_parentObjectIDofErrorObjectID.is_bound()) {
+ret_val.parentObjectIDofErrorObjectID() = single_value->field_parentObjectIDofErrorObjectID.valueof();
+}
+return ret_val;
+}
+
+void VTChangeActiveMaskReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.VTChangeActiveMaskReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new VTChangeActiveMaskReq_template[list_length];
+}
+
+VTChangeActiveMaskReq_template& VTChangeActiveMaskReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.VTChangeActiveMaskReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.VTChangeActiveMaskReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& VTChangeActiveMaskReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& VTChangeActiveMaskReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.VTChangeActiveMaskReq.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& VTChangeActiveMaskReq_template::activeMaskOrWindowMaskOrKeyGroupObjectID()
+{
+set_specific();
+return single_value->field_activeMaskOrWindowMaskOrKeyGroupObjectID;
+}
+
+const INTEGER_template& VTChangeActiveMaskReq_template::activeMaskOrWindowMaskOrKeyGroupObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field activeMaskOrWindowMaskOrKeyGroupObjectID of a non-specific template of type @IsobusVTMessageTypes.VTChangeActiveMaskReq.");
+return single_value->field_activeMaskOrWindowMaskOrKeyGroupObjectID;
+}
+
+VTChangeActiveMasErrorcodes_template& VTChangeActiveMaskReq_template::errorCodes()
+{
+set_specific();
+return single_value->field_errorCodes;
+}
+
+const VTChangeActiveMasErrorcodes_template& VTChangeActiveMaskReq_template::errorCodes() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field errorCodes of a non-specific template of type @IsobusVTMessageTypes.VTChangeActiveMaskReq.");
+return single_value->field_errorCodes;
+}
+
+INTEGER_template& VTChangeActiveMaskReq_template::objectIDcontainingError()
+{
+set_specific();
+return single_value->field_objectIDcontainingError;
+}
+
+const INTEGER_template& VTChangeActiveMaskReq_template::objectIDcontainingError() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectIDcontainingError of a non-specific template of type @IsobusVTMessageTypes.VTChangeActiveMaskReq.");
+return single_value->field_objectIDcontainingError;
+}
+
+INTEGER_template& VTChangeActiveMaskReq_template::parentObjectIDofErrorObjectID()
+{
+set_specific();
+return single_value->field_parentObjectIDofErrorObjectID;
+}
+
+const INTEGER_template& VTChangeActiveMaskReq_template::parentObjectIDofErrorObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field parentObjectIDofErrorObjectID of a non-specific template of type @IsobusVTMessageTypes.VTChangeActiveMaskReq.");
+return single_value->field_parentObjectIDofErrorObjectID;
+}
+
+int VTChangeActiveMaskReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTChangeActiveMaskReq 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 @IsobusVTMessageTypes.VTChangeActiveMaskReq 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 @IsobusVTMessageTypes.VTChangeActiveMaskReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTChangeActiveMaskReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTChangeActiveMaskReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTChangeActiveMaskReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTChangeActiveMaskReq.");
+  }
+  return 0;
+}
+
+void VTChangeActiveMaskReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", activeMaskOrWindowMaskOrKeyGroupObjectID := ");
+single_value->field_activeMaskOrWindowMaskOrKeyGroupObjectID.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log();
+TTCN_Logger::log_event_str(", objectIDcontainingError := ");
+single_value->field_objectIDcontainingError.log();
+TTCN_Logger::log_event_str(", parentObjectIDofErrorObjectID := ");
+single_value->field_parentObjectIDofErrorObjectID.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void VTChangeActiveMaskReq_template::log_match(const VTChangeActiveMaskReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_activeMaskOrWindowMaskOrKeyGroupObjectID.match(match_value.activeMaskOrWindowMaskOrKeyGroupObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".activeMaskOrWindowMaskOrKeyGroupObjectID");
+single_value->field_activeMaskOrWindowMaskOrKeyGroupObjectID.log_match(match_value.activeMaskOrWindowMaskOrKeyGroupObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_errorCodes.match(match_value.errorCodes(), legacy)){
+TTCN_Logger::log_logmatch_info(".errorCodes");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectIDcontainingError.match(match_value.objectIDcontainingError(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectIDcontainingError");
+single_value->field_objectIDcontainingError.log_match(match_value.objectIDcontainingError(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_parentObjectIDofErrorObjectID.match(match_value.parentObjectIDofErrorObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".parentObjectIDofErrorObjectID");
+single_value->field_parentObjectIDofErrorObjectID.log_match(match_value.parentObjectIDofErrorObjectID(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", activeMaskOrWindowMaskOrKeyGroupObjectID := ");
+single_value->field_activeMaskOrWindowMaskOrKeyGroupObjectID.log_match(match_value.activeMaskOrWindowMaskOrKeyGroupObjectID(), legacy);
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::log_event_str(", objectIDcontainingError := ");
+single_value->field_objectIDcontainingError.log_match(match_value.objectIDcontainingError(), legacy);
+TTCN_Logger::log_event_str(", parentObjectIDofErrorObjectID := ");
+single_value->field_parentObjectIDofErrorObjectID.log_match(match_value.parentObjectIDofErrorObjectID(), 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 VTChangeActiveMaskReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_activeMaskOrWindowMaskOrKeyGroupObjectID.encode_text(text_buf);
+single_value->field_errorCodes.encode_text(text_buf);
+single_value->field_objectIDcontainingError.encode_text(text_buf);
+single_value->field_parentObjectIDofErrorObjectID.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 @IsobusVTMessageTypes.VTChangeActiveMaskReq.");
+}
+}
+
+void VTChangeActiveMaskReq_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_vtfunction.decode_text(text_buf);
+single_value->field_activeMaskOrWindowMaskOrKeyGroupObjectID.decode_text(text_buf);
+single_value->field_errorCodes.decode_text(text_buf);
+single_value->field_objectIDcontainingError.decode_text(text_buf);
+single_value->field_parentObjectIDofErrorObjectID.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 VTChangeActiveMaskReq_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 @IsobusVTMessageTypes.VTChangeActiveMaskReq.");
+}
+}
+
+void VTChangeActiveMaskReq_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: {
+    VTChangeActiveMaskReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.VTChangeActiveMaskReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) activeMaskOrWindowMaskOrKeyGroupObjectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) objectIDcontainingError().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) parentObjectIDofErrorObjectID().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "activeMaskOrWindowMaskOrKeyGroupObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          activeMaskOrWindowMaskOrKeyGroupObjectID().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "objectIDcontainingError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDcontainingError().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(), "parentObjectIDofErrorObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          parentObjectIDofErrorObjectID().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 @IsobusVTMessageTypes.VTChangeActiveMaskReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.VTChangeActiveMaskReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void VTChangeActiveMaskReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeActiveMaskReq");
+single_value->field_activeMaskOrWindowMaskOrKeyGroupObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeActiveMaskReq");
+single_value->field_errorCodes.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeActiveMaskReq");
+single_value->field_objectIDcontainingError.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeActiveMaskReq");
+single_value->field_parentObjectIDofErrorObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeActiveMaskReq");
+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 : "@IsobusVTMessageTypes.VTChangeActiveMaskReq");
+}
+
+boolean VTChangeActiveMaskReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean VTChangeActiveMaskReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+VTChangeActiveMaskRes::VTChangeActiveMaskRes()
+{
+}
+
+VTChangeActiveMaskRes::VTChangeActiveMaskRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_activeMaskObjectID,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_activeMaskObjectID(par_activeMaskObjectID),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+VTChangeActiveMaskRes::VTChangeActiveMaskRes(const VTChangeActiveMaskRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.VTChangeActiveMaskRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.activeMaskObjectID().is_bound()) field_activeMaskObjectID = other_value.activeMaskObjectID();
+else field_activeMaskObjectID.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void VTChangeActiveMaskRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_activeMaskObjectID.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* VTChangeActiveMaskRes::get_descriptor() const { return &VTChangeActiveMaskRes_descr_; }
+VTChangeActiveMaskRes& VTChangeActiveMaskRes::operator=(const VTChangeActiveMaskRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.VTChangeActiveMaskRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.activeMaskObjectID().is_bound()) field_activeMaskObjectID = other_value.activeMaskObjectID();
+  else field_activeMaskObjectID.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean VTChangeActiveMaskRes::operator==(const VTChangeActiveMaskRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_activeMaskObjectID==other_value.field_activeMaskObjectID
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean VTChangeActiveMaskRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_activeMaskObjectID.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean VTChangeActiveMaskRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_activeMaskObjectID.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void VTChangeActiveMaskRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", activeMaskObjectID := ");
+field_activeMaskObjectID.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void VTChangeActiveMaskRes::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 @IsobusVTMessageTypes.VTChangeActiveMaskRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) activeMaskObjectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "activeMaskObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          activeMaskObjectID().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.VTChangeActiveMaskRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.VTChangeActiveMaskRes");
+  }
+}
+
+void VTChangeActiveMaskRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (activeMaskObjectID().is_bound()) activeMaskObjectID().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void VTChangeActiveMaskRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_activeMaskObjectID.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void VTChangeActiveMaskRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_activeMaskObjectID.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void VTChangeActiveMaskRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void VTChangeActiveMaskRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int VTChangeActiveMaskRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_activeMaskObjectID.RAW_decode(ValidObjectID_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, VTChangeActiveMaskRes_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(VTChangeActiveMaskRes_reserved4_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, VTChangeActiveMaskRes_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(VTChangeActiveMaskRes_reserved5_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, VTChangeActiveMaskRes_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(VTChangeActiveMaskRes_reserved6_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, VTChangeActiveMaskRes_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(VTChangeActiveMaskRes_reserved7_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, VTChangeActiveMaskRes_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(VTChangeActiveMaskRes_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int VTChangeActiveMaskRes::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, VTChangeActiveMaskRes_reserved4_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, VTChangeActiveMaskRes_reserved5_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, VTChangeActiveMaskRes_reserved6_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, VTChangeActiveMaskRes_reserved7_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, VTChangeActiveMaskRes_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_activeMaskObjectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved4.RAW_encode(VTChangeActiveMaskRes_reserved4_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved5.RAW_encode(VTChangeActiveMaskRes_reserved5_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved6.RAW_encode(VTChangeActiveMaskRes_reserved6_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved7.RAW_encode(VTChangeActiveMaskRes_reserved7_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved8.RAW_encode(VTChangeActiveMaskRes_reserved8_descr_, *myleaf.body.node.nodes[6]);
+  return myleaf.length = encoded_length;
+}
+
+struct VTChangeActiveMaskRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_activeMaskObjectID;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void VTChangeActiveMaskRes_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_vtfunction = ANY_VALUE;
+single_value->field_activeMaskObjectID = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void VTChangeActiveMaskRes_template::copy_value(const VTChangeActiveMaskRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.activeMaskObjectID().is_bound()) {
+  single_value->field_activeMaskObjectID = other_value.activeMaskObjectID();
+} else {
+  single_value->field_activeMaskObjectID.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void VTChangeActiveMaskRes_template::copy_template(const VTChangeActiveMaskRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.activeMaskObjectID().get_selection()) {
+single_value->field_activeMaskObjectID = other_value.activeMaskObjectID();
+} else {
+single_value->field_activeMaskObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new VTChangeActiveMaskRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTChangeActiveMaskRes.");
+break;
+}
+set_selection(other_value);
+}
+
+VTChangeActiveMaskRes_template::VTChangeActiveMaskRes_template()
+{
+}
+
+VTChangeActiveMaskRes_template::VTChangeActiveMaskRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+VTChangeActiveMaskRes_template::VTChangeActiveMaskRes_template(const VTChangeActiveMaskRes& other_value)
+{
+copy_value(other_value);
+}
+
+VTChangeActiveMaskRes_template::VTChangeActiveMaskRes_template(const OPTIONAL<VTChangeActiveMaskRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTChangeActiveMaskRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.VTChangeActiveMaskRes from an unbound optional field.");
+}
+}
+
+VTChangeActiveMaskRes_template::VTChangeActiveMaskRes_template(const VTChangeActiveMaskRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+VTChangeActiveMaskRes_template::~VTChangeActiveMaskRes_template()
+{
+clean_up();
+}
+
+VTChangeActiveMaskRes_template& VTChangeActiveMaskRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+VTChangeActiveMaskRes_template& VTChangeActiveMaskRes_template::operator=(const VTChangeActiveMaskRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+VTChangeActiveMaskRes_template& VTChangeActiveMaskRes_template::operator=(const OPTIONAL<VTChangeActiveMaskRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTChangeActiveMaskRes&)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 @IsobusVTMessageTypes.VTChangeActiveMaskRes.");
+}
+return *this;
+}
+
+VTChangeActiveMaskRes_template& VTChangeActiveMaskRes_template::operator=(const VTChangeActiveMaskRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean VTChangeActiveMaskRes_template::match(const VTChangeActiveMaskRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.activeMaskObjectID().is_bound()) return FALSE;
+if(!single_value->field_activeMaskObjectID.match(other_value.activeMaskObjectID(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTChangeActiveMaskRes.");
+}
+return FALSE;
+}
+
+boolean VTChangeActiveMaskRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_activeMaskObjectID.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean VTChangeActiveMaskRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_activeMaskObjectID.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void VTChangeActiveMaskRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+VTChangeActiveMaskRes VTChangeActiveMaskRes_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 @IsobusVTMessageTypes.VTChangeActiveMaskRes.");
+VTChangeActiveMaskRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_activeMaskObjectID.is_bound()) {
+ret_val.activeMaskObjectID() = single_value->field_activeMaskObjectID.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void VTChangeActiveMaskRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.VTChangeActiveMaskRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new VTChangeActiveMaskRes_template[list_length];
+}
+
+VTChangeActiveMaskRes_template& VTChangeActiveMaskRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.VTChangeActiveMaskRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.VTChangeActiveMaskRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& VTChangeActiveMaskRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& VTChangeActiveMaskRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.VTChangeActiveMaskRes.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& VTChangeActiveMaskRes_template::activeMaskObjectID()
+{
+set_specific();
+return single_value->field_activeMaskObjectID;
+}
+
+const INTEGER_template& VTChangeActiveMaskRes_template::activeMaskObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field activeMaskObjectID of a non-specific template of type @IsobusVTMessageTypes.VTChangeActiveMaskRes.");
+return single_value->field_activeMaskObjectID;
+}
+
+OCTETSTRING_template& VTChangeActiveMaskRes_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& VTChangeActiveMaskRes_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.VTChangeActiveMaskRes.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& VTChangeActiveMaskRes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& VTChangeActiveMaskRes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.VTChangeActiveMaskRes.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& VTChangeActiveMaskRes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& VTChangeActiveMaskRes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.VTChangeActiveMaskRes.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& VTChangeActiveMaskRes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& VTChangeActiveMaskRes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.VTChangeActiveMaskRes.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& VTChangeActiveMaskRes_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& VTChangeActiveMaskRes_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.VTChangeActiveMaskRes.");
+return single_value->field_reserved8;
+}
+
+int VTChangeActiveMaskRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTChangeActiveMaskRes 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 @IsobusVTMessageTypes.VTChangeActiveMaskRes 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 @IsobusVTMessageTypes.VTChangeActiveMaskRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTChangeActiveMaskRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTChangeActiveMaskRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTChangeActiveMaskRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTChangeActiveMaskRes.");
+  }
+  return 0;
+}
+
+void VTChangeActiveMaskRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", activeMaskObjectID := ");
+single_value->field_activeMaskObjectID.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void VTChangeActiveMaskRes_template::log_match(const VTChangeActiveMaskRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_activeMaskObjectID.match(match_value.activeMaskObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".activeMaskObjectID");
+single_value->field_activeMaskObjectID.log_match(match_value.activeMaskObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", activeMaskObjectID := ");
+single_value->field_activeMaskObjectID.log_match(match_value.activeMaskObjectID(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 VTChangeActiveMaskRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_activeMaskObjectID.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.VTChangeActiveMaskRes.");
+}
+}
+
+void VTChangeActiveMaskRes_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_vtfunction.decode_text(text_buf);
+single_value->field_activeMaskObjectID.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 VTChangeActiveMaskRes_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 @IsobusVTMessageTypes.VTChangeActiveMaskRes.");
+}
+}
+
+void VTChangeActiveMaskRes_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: {
+    VTChangeActiveMaskRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.VTChangeActiveMaskRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) activeMaskObjectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "activeMaskObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          activeMaskObjectID().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.VTChangeActiveMaskRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.VTChangeActiveMaskRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void VTChangeActiveMaskRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeActiveMaskRes");
+single_value->field_activeMaskObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeActiveMaskRes");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeActiveMaskRes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeActiveMaskRes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeActiveMaskRes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeActiveMaskRes");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeActiveMaskRes");
+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 : "@IsobusVTMessageTypes.VTChangeActiveMaskRes");
+}
+
+boolean VTChangeActiveMaskRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean VTChangeActiveMaskRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+VTChangeSoftKeyMaskErrorCodes::VTChangeSoftKeyMaskErrorCodes()
+{
+}
+
+VTChangeSoftKeyMaskErrorCodes::VTChangeSoftKeyMaskErrorCodes(const BOOLEAN& par_reserved0,
+    const BOOLEAN& par_reserved1,
+    const BOOLEAN& par_missingObjects,
+    const BOOLEAN& par_maskOrChildObjectHasErrors,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_poolBeingDeleted,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7)
+  :   field_reserved0(par_reserved0),
+  field_reserved1(par_reserved1),
+  field_missingObjects(par_missingObjects),
+  field_maskOrChildObjectHasErrors(par_maskOrChildObjectHasErrors),
+  field_anyOtherError(par_anyOtherError),
+  field_poolBeingDeleted(par_poolBeingDeleted),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7)
+{
+}
+
+VTChangeSoftKeyMaskErrorCodes::VTChangeSoftKeyMaskErrorCodes(const VTChangeSoftKeyMaskErrorCodes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes.");
+if (other_value.reserved0().is_bound()) field_reserved0 = other_value.reserved0();
+else field_reserved0.clean_up();
+if (other_value.reserved1().is_bound()) field_reserved1 = other_value.reserved1();
+else field_reserved1.clean_up();
+if (other_value.missingObjects().is_bound()) field_missingObjects = other_value.missingObjects();
+else field_missingObjects.clean_up();
+if (other_value.maskOrChildObjectHasErrors().is_bound()) field_maskOrChildObjectHasErrors = other_value.maskOrChildObjectHasErrors();
+else field_maskOrChildObjectHasErrors.clean_up();
+if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+else field_anyOtherError.clean_up();
+if (other_value.poolBeingDeleted().is_bound()) field_poolBeingDeleted = other_value.poolBeingDeleted();
+else field_poolBeingDeleted.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+}
+
+void VTChangeSoftKeyMaskErrorCodes::clean_up()
+{
+field_reserved0.clean_up();
+field_reserved1.clean_up();
+field_missingObjects.clean_up();
+field_maskOrChildObjectHasErrors.clean_up();
+field_anyOtherError.clean_up();
+field_poolBeingDeleted.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+}
+
+const TTCN_Typedescriptor_t* VTChangeSoftKeyMaskErrorCodes::get_descriptor() const { return &VTChangeSoftKeyMaskErrorCodes_descr_; }
+VTChangeSoftKeyMaskErrorCodes& VTChangeSoftKeyMaskErrorCodes::operator=(const VTChangeSoftKeyMaskErrorCodes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes.");
+  if (other_value.reserved0().is_bound()) field_reserved0 = other_value.reserved0();
+  else field_reserved0.clean_up();
+  if (other_value.reserved1().is_bound()) field_reserved1 = other_value.reserved1();
+  else field_reserved1.clean_up();
+  if (other_value.missingObjects().is_bound()) field_missingObjects = other_value.missingObjects();
+  else field_missingObjects.clean_up();
+  if (other_value.maskOrChildObjectHasErrors().is_bound()) field_maskOrChildObjectHasErrors = other_value.maskOrChildObjectHasErrors();
+  else field_maskOrChildObjectHasErrors.clean_up();
+  if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+  else field_anyOtherError.clean_up();
+  if (other_value.poolBeingDeleted().is_bound()) field_poolBeingDeleted = other_value.poolBeingDeleted();
+  else field_poolBeingDeleted.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+}
+return *this;
+}
+
+boolean VTChangeSoftKeyMaskErrorCodes::operator==(const VTChangeSoftKeyMaskErrorCodes& other_value) const
+{
+return field_reserved0==other_value.field_reserved0
+  && field_reserved1==other_value.field_reserved1
+  && field_missingObjects==other_value.field_missingObjects
+  && field_maskOrChildObjectHasErrors==other_value.field_maskOrChildObjectHasErrors
+  && field_anyOtherError==other_value.field_anyOtherError
+  && field_poolBeingDeleted==other_value.field_poolBeingDeleted
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7;
+}
+
+boolean VTChangeSoftKeyMaskErrorCodes::is_bound() const
+{
+return (field_reserved0.is_bound())
+  || (field_reserved1.is_bound())
+  || (field_missingObjects.is_bound())
+  || (field_maskOrChildObjectHasErrors.is_bound())
+  || (field_anyOtherError.is_bound())
+  || (field_poolBeingDeleted.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound());
+}
+boolean VTChangeSoftKeyMaskErrorCodes::is_value() const
+{
+return field_reserved0.is_value()
+  && field_reserved1.is_value()
+  && field_missingObjects.is_value()
+  && field_maskOrChildObjectHasErrors.is_value()
+  && field_anyOtherError.is_value()
+  && field_poolBeingDeleted.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value();
+}
+void VTChangeSoftKeyMaskErrorCodes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ reserved0 := ");
+field_reserved0.log();
+TTCN_Logger::log_event_str(", reserved1 := ");
+field_reserved1.log();
+TTCN_Logger::log_event_str(", missingObjects := ");
+field_missingObjects.log();
+TTCN_Logger::log_event_str(", maskOrChildObjectHasErrors := ");
+field_maskOrChildObjectHasErrors.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+field_anyOtherError.log();
+TTCN_Logger::log_event_str(", poolBeingDeleted := ");
+field_poolBeingDeleted.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void VTChangeSoftKeyMaskErrorCodes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes has 8 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) reserved0().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved1().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) missingObjects().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) maskOrChildObjectHasErrors().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) poolBeingDeleted().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "reserved0")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved0().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(), "reserved1")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved1().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(), "missingObjects")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          missingObjects().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(), "maskOrChildObjectHasErrors")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          maskOrChildObjectHasErrors().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "poolBeingDeleted")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          poolBeingDeleted().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes");
+  }
+}
+
+void VTChangeSoftKeyMaskErrorCodes::set_implicit_omit()
+{
+if (reserved0().is_bound()) reserved0().set_implicit_omit();
+if (reserved1().is_bound()) reserved1().set_implicit_omit();
+if (missingObjects().is_bound()) missingObjects().set_implicit_omit();
+if (maskOrChildObjectHasErrors().is_bound()) maskOrChildObjectHasErrors().set_implicit_omit();
+if (anyOtherError().is_bound()) anyOtherError().set_implicit_omit();
+if (poolBeingDeleted().is_bound()) poolBeingDeleted().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+}
+
+void VTChangeSoftKeyMaskErrorCodes::encode_text(Text_Buf& text_buf) const
+{
+field_reserved0.encode_text(text_buf);
+field_reserved1.encode_text(text_buf);
+field_missingObjects.encode_text(text_buf);
+field_maskOrChildObjectHasErrors.encode_text(text_buf);
+field_anyOtherError.encode_text(text_buf);
+field_poolBeingDeleted.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+}
+
+void VTChangeSoftKeyMaskErrorCodes::decode_text(Text_Buf& text_buf)
+{
+field_reserved0.decode_text(text_buf);
+field_reserved1.decode_text(text_buf);
+field_missingObjects.decode_text(text_buf);
+field_maskOrChildObjectHasErrors.decode_text(text_buf);
+field_anyOtherError.decode_text(text_buf);
+field_poolBeingDeleted.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+}
+
+void VTChangeSoftKeyMaskErrorCodes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void VTChangeSoftKeyMaskErrorCodes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int VTChangeSoftKeyMaskErrorCodes::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved0.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved1.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_missingObjects.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_maskOrChildObjectHasErrors.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_anyOtherError.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_poolBeingDeleted.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int VTChangeSoftKeyMaskErrorCodes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_reserved0.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved1.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_missingObjects.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_maskOrChildObjectHasErrors.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_anyOtherError.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_poolBeingDeleted.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved6.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved7.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct VTChangeSoftKeyMaskErrorCodes_template::single_value_struct {
+BOOLEAN_template field_reserved0;
+BOOLEAN_template field_reserved1;
+BOOLEAN_template field_missingObjects;
+BOOLEAN_template field_maskOrChildObjectHasErrors;
+BOOLEAN_template field_anyOtherError;
+BOOLEAN_template field_poolBeingDeleted;
+BOOLEAN_template field_reserved6;
+BOOLEAN_template field_reserved7;
+};
+
+void VTChangeSoftKeyMaskErrorCodes_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_reserved0 = ANY_VALUE;
+single_value->field_reserved1 = ANY_VALUE;
+single_value->field_missingObjects = ANY_VALUE;
+single_value->field_maskOrChildObjectHasErrors = ANY_VALUE;
+single_value->field_anyOtherError = ANY_VALUE;
+single_value->field_poolBeingDeleted = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+}
+}
+}
+
+void VTChangeSoftKeyMaskErrorCodes_template::copy_value(const VTChangeSoftKeyMaskErrorCodes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.reserved0().is_bound()) {
+  single_value->field_reserved0 = other_value.reserved0();
+} else {
+  single_value->field_reserved0.clean_up();
+}
+if (other_value.reserved1().is_bound()) {
+  single_value->field_reserved1 = other_value.reserved1();
+} else {
+  single_value->field_reserved1.clean_up();
+}
+if (other_value.missingObjects().is_bound()) {
+  single_value->field_missingObjects = other_value.missingObjects();
+} else {
+  single_value->field_missingObjects.clean_up();
+}
+if (other_value.maskOrChildObjectHasErrors().is_bound()) {
+  single_value->field_maskOrChildObjectHasErrors = other_value.maskOrChildObjectHasErrors();
+} else {
+  single_value->field_maskOrChildObjectHasErrors.clean_up();
+}
+if (other_value.anyOtherError().is_bound()) {
+  single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+  single_value->field_anyOtherError.clean_up();
+}
+if (other_value.poolBeingDeleted().is_bound()) {
+  single_value->field_poolBeingDeleted = other_value.poolBeingDeleted();
+} else {
+  single_value->field_poolBeingDeleted.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void VTChangeSoftKeyMaskErrorCodes_template::copy_template(const VTChangeSoftKeyMaskErrorCodes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.reserved0().get_selection()) {
+single_value->field_reserved0 = other_value.reserved0();
+} else {
+single_value->field_reserved0.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved1().get_selection()) {
+single_value->field_reserved1 = other_value.reserved1();
+} else {
+single_value->field_reserved1.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.missingObjects().get_selection()) {
+single_value->field_missingObjects = other_value.missingObjects();
+} else {
+single_value->field_missingObjects.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.maskOrChildObjectHasErrors().get_selection()) {
+single_value->field_maskOrChildObjectHasErrors = other_value.maskOrChildObjectHasErrors();
+} else {
+single_value->field_maskOrChildObjectHasErrors.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.anyOtherError().get_selection()) {
+single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+single_value->field_anyOtherError.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.poolBeingDeleted().get_selection()) {
+single_value->field_poolBeingDeleted = other_value.poolBeingDeleted();
+} else {
+single_value->field_poolBeingDeleted.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new VTChangeSoftKeyMaskErrorCodes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes.");
+break;
+}
+set_selection(other_value);
+}
+
+VTChangeSoftKeyMaskErrorCodes_template::VTChangeSoftKeyMaskErrorCodes_template()
+{
+}
+
+VTChangeSoftKeyMaskErrorCodes_template::VTChangeSoftKeyMaskErrorCodes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+VTChangeSoftKeyMaskErrorCodes_template::VTChangeSoftKeyMaskErrorCodes_template(const VTChangeSoftKeyMaskErrorCodes& other_value)
+{
+copy_value(other_value);
+}
+
+VTChangeSoftKeyMaskErrorCodes_template::VTChangeSoftKeyMaskErrorCodes_template(const OPTIONAL<VTChangeSoftKeyMaskErrorCodes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTChangeSoftKeyMaskErrorCodes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes from an unbound optional field.");
+}
+}
+
+VTChangeSoftKeyMaskErrorCodes_template::VTChangeSoftKeyMaskErrorCodes_template(const VTChangeSoftKeyMaskErrorCodes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+VTChangeSoftKeyMaskErrorCodes_template::~VTChangeSoftKeyMaskErrorCodes_template()
+{
+clean_up();
+}
+
+VTChangeSoftKeyMaskErrorCodes_template& VTChangeSoftKeyMaskErrorCodes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+VTChangeSoftKeyMaskErrorCodes_template& VTChangeSoftKeyMaskErrorCodes_template::operator=(const VTChangeSoftKeyMaskErrorCodes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+VTChangeSoftKeyMaskErrorCodes_template& VTChangeSoftKeyMaskErrorCodes_template::operator=(const OPTIONAL<VTChangeSoftKeyMaskErrorCodes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTChangeSoftKeyMaskErrorCodes&)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 @IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes.");
+}
+return *this;
+}
+
+VTChangeSoftKeyMaskErrorCodes_template& VTChangeSoftKeyMaskErrorCodes_template::operator=(const VTChangeSoftKeyMaskErrorCodes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean VTChangeSoftKeyMaskErrorCodes_template::match(const VTChangeSoftKeyMaskErrorCodes& 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.reserved0().is_bound()) return FALSE;
+if(!single_value->field_reserved0.match(other_value.reserved0(), legacy))return FALSE;
+if(!other_value.reserved1().is_bound()) return FALSE;
+if(!single_value->field_reserved1.match(other_value.reserved1(), legacy))return FALSE;
+if(!other_value.missingObjects().is_bound()) return FALSE;
+if(!single_value->field_missingObjects.match(other_value.missingObjects(), legacy))return FALSE;
+if(!other_value.maskOrChildObjectHasErrors().is_bound()) return FALSE;
+if(!single_value->field_maskOrChildObjectHasErrors.match(other_value.maskOrChildObjectHasErrors(), legacy))return FALSE;
+if(!other_value.anyOtherError().is_bound()) return FALSE;
+if(!single_value->field_anyOtherError.match(other_value.anyOtherError(), legacy))return FALSE;
+if(!other_value.poolBeingDeleted().is_bound()) return FALSE;
+if(!single_value->field_poolBeingDeleted.match(other_value.poolBeingDeleted(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes.");
+}
+return FALSE;
+}
+
+boolean VTChangeSoftKeyMaskErrorCodes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_reserved0.is_bound()
+
+ ||single_value->field_reserved1.is_bound()
+
+ ||single_value->field_missingObjects.is_bound()
+
+ ||single_value->field_maskOrChildObjectHasErrors.is_bound()
+
+ ||single_value->field_anyOtherError.is_bound()
+
+ ||single_value->field_poolBeingDeleted.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+;
+}
+
+boolean VTChangeSoftKeyMaskErrorCodes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_reserved0.is_value()
+ &&single_value->field_reserved1.is_value()
+ &&single_value->field_missingObjects.is_value()
+ &&single_value->field_maskOrChildObjectHasErrors.is_value()
+ &&single_value->field_anyOtherError.is_value()
+ &&single_value->field_poolBeingDeleted.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value();
+}
+
+void VTChangeSoftKeyMaskErrorCodes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+VTChangeSoftKeyMaskErrorCodes VTChangeSoftKeyMaskErrorCodes_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 @IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes.");
+VTChangeSoftKeyMaskErrorCodes ret_val;
+if (single_value->field_reserved0.is_bound()) {
+ret_val.reserved0() = single_value->field_reserved0.valueof();
+}
+if (single_value->field_reserved1.is_bound()) {
+ret_val.reserved1() = single_value->field_reserved1.valueof();
+}
+if (single_value->field_missingObjects.is_bound()) {
+ret_val.missingObjects() = single_value->field_missingObjects.valueof();
+}
+if (single_value->field_maskOrChildObjectHasErrors.is_bound()) {
+ret_val.maskOrChildObjectHasErrors() = single_value->field_maskOrChildObjectHasErrors.valueof();
+}
+if (single_value->field_anyOtherError.is_bound()) {
+ret_val.anyOtherError() = single_value->field_anyOtherError.valueof();
+}
+if (single_value->field_poolBeingDeleted.is_bound()) {
+ret_val.poolBeingDeleted() = single_value->field_poolBeingDeleted.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+return ret_val;
+}
+
+void VTChangeSoftKeyMaskErrorCodes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new VTChangeSoftKeyMaskErrorCodes_template[list_length];
+}
+
+VTChangeSoftKeyMaskErrorCodes_template& VTChangeSoftKeyMaskErrorCodes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& VTChangeSoftKeyMaskErrorCodes_template::reserved0()
+{
+set_specific();
+return single_value->field_reserved0;
+}
+
+const BOOLEAN_template& VTChangeSoftKeyMaskErrorCodes_template::reserved0() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved0 of a non-specific template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes.");
+return single_value->field_reserved0;
+}
+
+BOOLEAN_template& VTChangeSoftKeyMaskErrorCodes_template::reserved1()
+{
+set_specific();
+return single_value->field_reserved1;
+}
+
+const BOOLEAN_template& VTChangeSoftKeyMaskErrorCodes_template::reserved1() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved1 of a non-specific template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes.");
+return single_value->field_reserved1;
+}
+
+BOOLEAN_template& VTChangeSoftKeyMaskErrorCodes_template::missingObjects()
+{
+set_specific();
+return single_value->field_missingObjects;
+}
+
+const BOOLEAN_template& VTChangeSoftKeyMaskErrorCodes_template::missingObjects() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field missingObjects of a non-specific template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes.");
+return single_value->field_missingObjects;
+}
+
+BOOLEAN_template& VTChangeSoftKeyMaskErrorCodes_template::maskOrChildObjectHasErrors()
+{
+set_specific();
+return single_value->field_maskOrChildObjectHasErrors;
+}
+
+const BOOLEAN_template& VTChangeSoftKeyMaskErrorCodes_template::maskOrChildObjectHasErrors() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field maskOrChildObjectHasErrors of a non-specific template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes.");
+return single_value->field_maskOrChildObjectHasErrors;
+}
+
+BOOLEAN_template& VTChangeSoftKeyMaskErrorCodes_template::anyOtherError()
+{
+set_specific();
+return single_value->field_anyOtherError;
+}
+
+const BOOLEAN_template& VTChangeSoftKeyMaskErrorCodes_template::anyOtherError() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field anyOtherError of a non-specific template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes.");
+return single_value->field_anyOtherError;
+}
+
+BOOLEAN_template& VTChangeSoftKeyMaskErrorCodes_template::poolBeingDeleted()
+{
+set_specific();
+return single_value->field_poolBeingDeleted;
+}
+
+const BOOLEAN_template& VTChangeSoftKeyMaskErrorCodes_template::poolBeingDeleted() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field poolBeingDeleted of a non-specific template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes.");
+return single_value->field_poolBeingDeleted;
+}
+
+BOOLEAN_template& VTChangeSoftKeyMaskErrorCodes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const BOOLEAN_template& VTChangeSoftKeyMaskErrorCodes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes.");
+return single_value->field_reserved6;
+}
+
+BOOLEAN_template& VTChangeSoftKeyMaskErrorCodes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const BOOLEAN_template& VTChangeSoftKeyMaskErrorCodes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes.");
+return single_value->field_reserved7;
+}
+
+int VTChangeSoftKeyMaskErrorCodes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes 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 @IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes.");
+  }
+  return 0;
+}
+
+void VTChangeSoftKeyMaskErrorCodes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ reserved0 := ");
+single_value->field_reserved0.log();
+TTCN_Logger::log_event_str(", reserved1 := ");
+single_value->field_reserved1.log();
+TTCN_Logger::log_event_str(", missingObjects := ");
+single_value->field_missingObjects.log();
+TTCN_Logger::log_event_str(", maskOrChildObjectHasErrors := ");
+single_value->field_maskOrChildObjectHasErrors.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log();
+TTCN_Logger::log_event_str(", poolBeingDeleted := ");
+single_value->field_poolBeingDeleted.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void VTChangeSoftKeyMaskErrorCodes_template::log_match(const VTChangeSoftKeyMaskErrorCodes& 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_reserved0.match(match_value.reserved0(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved0");
+single_value->field_reserved0.log_match(match_value.reserved0(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved1.match(match_value.reserved1(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved1");
+single_value->field_reserved1.log_match(match_value.reserved1(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_missingObjects.match(match_value.missingObjects(), legacy)){
+TTCN_Logger::log_logmatch_info(".missingObjects");
+single_value->field_missingObjects.log_match(match_value.missingObjects(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_maskOrChildObjectHasErrors.match(match_value.maskOrChildObjectHasErrors(), legacy)){
+TTCN_Logger::log_logmatch_info(".maskOrChildObjectHasErrors");
+single_value->field_maskOrChildObjectHasErrors.log_match(match_value.maskOrChildObjectHasErrors(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_anyOtherError.match(match_value.anyOtherError(), legacy)){
+TTCN_Logger::log_logmatch_info(".anyOtherError");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_poolBeingDeleted.match(match_value.poolBeingDeleted(), legacy)){
+TTCN_Logger::log_logmatch_info(".poolBeingDeleted");
+single_value->field_poolBeingDeleted.log_match(match_value.poolBeingDeleted(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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("{ reserved0 := ");
+single_value->field_reserved0.log_match(match_value.reserved0(), legacy);
+TTCN_Logger::log_event_str(", reserved1 := ");
+single_value->field_reserved1.log_match(match_value.reserved1(), legacy);
+TTCN_Logger::log_event_str(", missingObjects := ");
+single_value->field_missingObjects.log_match(match_value.missingObjects(), legacy);
+TTCN_Logger::log_event_str(", maskOrChildObjectHasErrors := ");
+single_value->field_maskOrChildObjectHasErrors.log_match(match_value.maskOrChildObjectHasErrors(), legacy);
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::log_event_str(", poolBeingDeleted := ");
+single_value->field_poolBeingDeleted.log_match(match_value.poolBeingDeleted(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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 VTChangeSoftKeyMaskErrorCodes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_reserved0.encode_text(text_buf);
+single_value->field_reserved1.encode_text(text_buf);
+single_value->field_missingObjects.encode_text(text_buf);
+single_value->field_maskOrChildObjectHasErrors.encode_text(text_buf);
+single_value->field_anyOtherError.encode_text(text_buf);
+single_value->field_poolBeingDeleted.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.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 @IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes.");
+}
+}
+
+void VTChangeSoftKeyMaskErrorCodes_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_reserved0.decode_text(text_buf);
+single_value->field_reserved1.decode_text(text_buf);
+single_value->field_missingObjects.decode_text(text_buf);
+single_value->field_maskOrChildObjectHasErrors.decode_text(text_buf);
+single_value->field_anyOtherError.decode_text(text_buf);
+single_value->field_poolBeingDeleted.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.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 VTChangeSoftKeyMaskErrorCodes_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 @IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes.");
+}
+}
+
+void VTChangeSoftKeyMaskErrorCodes_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: {
+    VTChangeSoftKeyMaskErrorCodes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes has 8 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) reserved0().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved1().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) missingObjects().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) maskOrChildObjectHasErrors().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) poolBeingDeleted().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "reserved0")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved0().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(), "reserved1")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved1().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(), "missingObjects")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          missingObjects().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(), "maskOrChildObjectHasErrors")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          maskOrChildObjectHasErrors().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "poolBeingDeleted")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          poolBeingDeleted().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void VTChangeSoftKeyMaskErrorCodes_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_reserved0.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes");
+single_value->field_reserved1.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes");
+single_value->field_missingObjects.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes");
+single_value->field_maskOrChildObjectHasErrors.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes");
+single_value->field_anyOtherError.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes");
+single_value->field_poolBeingDeleted.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes");
+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 : "@IsobusVTMessageTypes.VTChangeSoftKeyMaskErrorCodes");
+}
+
+boolean VTChangeSoftKeyMaskErrorCodes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean VTChangeSoftKeyMaskErrorCodes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+VTChangeSoftKeyMaskReq::VTChangeSoftKeyMaskReq()
+{
+}
+
+VTChangeSoftKeyMaskReq::VTChangeSoftKeyMaskReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_dataOrAlarmMaskObjectID,
+    const INTEGER& par_softKeyMaskObjectID,
+    const VTChangeSoftKeyMaskErrorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_dataOrAlarmMaskObjectID(par_dataOrAlarmMaskObjectID),
+  field_softKeyMaskObjectID(par_softKeyMaskObjectID),
+  field_errorCodes(par_errorCodes),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+VTChangeSoftKeyMaskReq::VTChangeSoftKeyMaskReq(const VTChangeSoftKeyMaskReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.dataOrAlarmMaskObjectID().is_bound()) field_dataOrAlarmMaskObjectID = other_value.dataOrAlarmMaskObjectID();
+else field_dataOrAlarmMaskObjectID.clean_up();
+if (other_value.softKeyMaskObjectID().is_bound()) field_softKeyMaskObjectID = other_value.softKeyMaskObjectID();
+else field_softKeyMaskObjectID.clean_up();
+if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+else field_errorCodes.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void VTChangeSoftKeyMaskReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_dataOrAlarmMaskObjectID.clean_up();
+field_softKeyMaskObjectID.clean_up();
+field_errorCodes.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* VTChangeSoftKeyMaskReq::get_descriptor() const { return &VTChangeSoftKeyMaskReq_descr_; }
+VTChangeSoftKeyMaskReq& VTChangeSoftKeyMaskReq::operator=(const VTChangeSoftKeyMaskReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.dataOrAlarmMaskObjectID().is_bound()) field_dataOrAlarmMaskObjectID = other_value.dataOrAlarmMaskObjectID();
+  else field_dataOrAlarmMaskObjectID.clean_up();
+  if (other_value.softKeyMaskObjectID().is_bound()) field_softKeyMaskObjectID = other_value.softKeyMaskObjectID();
+  else field_softKeyMaskObjectID.clean_up();
+  if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+  else field_errorCodes.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean VTChangeSoftKeyMaskReq::operator==(const VTChangeSoftKeyMaskReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_dataOrAlarmMaskObjectID==other_value.field_dataOrAlarmMaskObjectID
+  && field_softKeyMaskObjectID==other_value.field_softKeyMaskObjectID
+  && field_errorCodes==other_value.field_errorCodes
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean VTChangeSoftKeyMaskReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_dataOrAlarmMaskObjectID.is_bound())
+  || (field_softKeyMaskObjectID.is_bound())
+  || (field_errorCodes.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean VTChangeSoftKeyMaskReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_dataOrAlarmMaskObjectID.is_value()
+  && field_softKeyMaskObjectID.is_value()
+  && field_errorCodes.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void VTChangeSoftKeyMaskReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", dataOrAlarmMaskObjectID := ");
+field_dataOrAlarmMaskObjectID.log();
+TTCN_Logger::log_event_str(", softKeyMaskObjectID := ");
+field_softKeyMaskObjectID.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void VTChangeSoftKeyMaskReq::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 @IsobusVTMessageTypes.VTChangeSoftKeyMaskReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) dataOrAlarmMaskObjectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) softKeyMaskObjectID().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "dataOrAlarmMaskObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          dataOrAlarmMaskObjectID().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(), "softKeyMaskObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          softKeyMaskObjectID().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.VTChangeSoftKeyMaskReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.VTChangeSoftKeyMaskReq");
+  }
+}
+
+void VTChangeSoftKeyMaskReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (dataOrAlarmMaskObjectID().is_bound()) dataOrAlarmMaskObjectID().set_implicit_omit();
+if (softKeyMaskObjectID().is_bound()) softKeyMaskObjectID().set_implicit_omit();
+if (errorCodes().is_bound()) errorCodes().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void VTChangeSoftKeyMaskReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_dataOrAlarmMaskObjectID.encode_text(text_buf);
+field_softKeyMaskObjectID.encode_text(text_buf);
+field_errorCodes.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void VTChangeSoftKeyMaskReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_dataOrAlarmMaskObjectID.decode_text(text_buf);
+field_softKeyMaskObjectID.decode_text(text_buf);
+field_errorCodes.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void VTChangeSoftKeyMaskReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void VTChangeSoftKeyMaskReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int VTChangeSoftKeyMaskReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_dataOrAlarmMaskObjectID.RAW_decode(ValidObjectID_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_softKeyMaskObjectID.RAW_decode(ValidObjectID_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, VTChangeSoftKeyMaskErrorCodes_descr_.raw->forceomit);
+  decoded_field_length = field_errorCodes.RAW_decode(VTChangeSoftKeyMaskErrorCodes_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, VTChangeSoftKeyMaskReq_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(VTChangeSoftKeyMaskReq_reserved7_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, VTChangeSoftKeyMaskReq_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(VTChangeSoftKeyMaskReq_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int VTChangeSoftKeyMaskReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, VTChangeSoftKeyMaskErrorCodes_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, VTChangeSoftKeyMaskReq_reserved7_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, VTChangeSoftKeyMaskReq_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_dataOrAlarmMaskObjectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_softKeyMaskObjectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_errorCodes.RAW_encode(VTChangeSoftKeyMaskErrorCodes_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved7.RAW_encode(VTChangeSoftKeyMaskReq_reserved7_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved8.RAW_encode(VTChangeSoftKeyMaskReq_reserved8_descr_, *myleaf.body.node.nodes[5]);
+  return myleaf.length = encoded_length;
+}
+
+struct VTChangeSoftKeyMaskReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_dataOrAlarmMaskObjectID;
+INTEGER_template field_softKeyMaskObjectID;
+VTChangeSoftKeyMaskErrorCodes_template field_errorCodes;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void VTChangeSoftKeyMaskReq_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_vtfunction = ANY_VALUE;
+single_value->field_dataOrAlarmMaskObjectID = ANY_VALUE;
+single_value->field_softKeyMaskObjectID = ANY_VALUE;
+single_value->field_errorCodes = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void VTChangeSoftKeyMaskReq_template::copy_value(const VTChangeSoftKeyMaskReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.dataOrAlarmMaskObjectID().is_bound()) {
+  single_value->field_dataOrAlarmMaskObjectID = other_value.dataOrAlarmMaskObjectID();
+} else {
+  single_value->field_dataOrAlarmMaskObjectID.clean_up();
+}
+if (other_value.softKeyMaskObjectID().is_bound()) {
+  single_value->field_softKeyMaskObjectID = other_value.softKeyMaskObjectID();
+} else {
+  single_value->field_softKeyMaskObjectID.clean_up();
+}
+if (other_value.errorCodes().is_bound()) {
+  single_value->field_errorCodes = other_value.errorCodes();
+} else {
+  single_value->field_errorCodes.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void VTChangeSoftKeyMaskReq_template::copy_template(const VTChangeSoftKeyMaskReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.dataOrAlarmMaskObjectID().get_selection()) {
+single_value->field_dataOrAlarmMaskObjectID = other_value.dataOrAlarmMaskObjectID();
+} else {
+single_value->field_dataOrAlarmMaskObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.softKeyMaskObjectID().get_selection()) {
+single_value->field_softKeyMaskObjectID = other_value.softKeyMaskObjectID();
+} else {
+single_value->field_softKeyMaskObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.errorCodes().get_selection()) {
+single_value->field_errorCodes = other_value.errorCodes();
+} else {
+single_value->field_errorCodes.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new VTChangeSoftKeyMaskReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskReq.");
+break;
+}
+set_selection(other_value);
+}
+
+VTChangeSoftKeyMaskReq_template::VTChangeSoftKeyMaskReq_template()
+{
+}
+
+VTChangeSoftKeyMaskReq_template::VTChangeSoftKeyMaskReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+VTChangeSoftKeyMaskReq_template::VTChangeSoftKeyMaskReq_template(const VTChangeSoftKeyMaskReq& other_value)
+{
+copy_value(other_value);
+}
+
+VTChangeSoftKeyMaskReq_template::VTChangeSoftKeyMaskReq_template(const OPTIONAL<VTChangeSoftKeyMaskReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTChangeSoftKeyMaskReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskReq from an unbound optional field.");
+}
+}
+
+VTChangeSoftKeyMaskReq_template::VTChangeSoftKeyMaskReq_template(const VTChangeSoftKeyMaskReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+VTChangeSoftKeyMaskReq_template::~VTChangeSoftKeyMaskReq_template()
+{
+clean_up();
+}
+
+VTChangeSoftKeyMaskReq_template& VTChangeSoftKeyMaskReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+VTChangeSoftKeyMaskReq_template& VTChangeSoftKeyMaskReq_template::operator=(const VTChangeSoftKeyMaskReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+VTChangeSoftKeyMaskReq_template& VTChangeSoftKeyMaskReq_template::operator=(const OPTIONAL<VTChangeSoftKeyMaskReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTChangeSoftKeyMaskReq&)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 @IsobusVTMessageTypes.VTChangeSoftKeyMaskReq.");
+}
+return *this;
+}
+
+VTChangeSoftKeyMaskReq_template& VTChangeSoftKeyMaskReq_template::operator=(const VTChangeSoftKeyMaskReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean VTChangeSoftKeyMaskReq_template::match(const VTChangeSoftKeyMaskReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.dataOrAlarmMaskObjectID().is_bound()) return FALSE;
+if(!single_value->field_dataOrAlarmMaskObjectID.match(other_value.dataOrAlarmMaskObjectID(), legacy))return FALSE;
+if(!other_value.softKeyMaskObjectID().is_bound()) return FALSE;
+if(!single_value->field_softKeyMaskObjectID.match(other_value.softKeyMaskObjectID(), legacy))return FALSE;
+if(!other_value.errorCodes().is_bound()) return FALSE;
+if(!single_value->field_errorCodes.match(other_value.errorCodes(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskReq.");
+}
+return FALSE;
+}
+
+boolean VTChangeSoftKeyMaskReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_dataOrAlarmMaskObjectID.is_bound()
+
+ ||single_value->field_softKeyMaskObjectID.is_bound()
+
+ ||single_value->field_errorCodes.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean VTChangeSoftKeyMaskReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_dataOrAlarmMaskObjectID.is_value()
+ &&single_value->field_softKeyMaskObjectID.is_value()
+ &&single_value->field_errorCodes.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void VTChangeSoftKeyMaskReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+VTChangeSoftKeyMaskReq VTChangeSoftKeyMaskReq_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 @IsobusVTMessageTypes.VTChangeSoftKeyMaskReq.");
+VTChangeSoftKeyMaskReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_dataOrAlarmMaskObjectID.is_bound()) {
+ret_val.dataOrAlarmMaskObjectID() = single_value->field_dataOrAlarmMaskObjectID.valueof();
+}
+if (single_value->field_softKeyMaskObjectID.is_bound()) {
+ret_val.softKeyMaskObjectID() = single_value->field_softKeyMaskObjectID.valueof();
+}
+if (single_value->field_errorCodes.is_bound()) {
+ret_val.errorCodes() = single_value->field_errorCodes.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void VTChangeSoftKeyMaskReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new VTChangeSoftKeyMaskReq_template[list_length];
+}
+
+VTChangeSoftKeyMaskReq_template& VTChangeSoftKeyMaskReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& VTChangeSoftKeyMaskReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& VTChangeSoftKeyMaskReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskReq.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& VTChangeSoftKeyMaskReq_template::dataOrAlarmMaskObjectID()
+{
+set_specific();
+return single_value->field_dataOrAlarmMaskObjectID;
+}
+
+const INTEGER_template& VTChangeSoftKeyMaskReq_template::dataOrAlarmMaskObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field dataOrAlarmMaskObjectID of a non-specific template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskReq.");
+return single_value->field_dataOrAlarmMaskObjectID;
+}
+
+INTEGER_template& VTChangeSoftKeyMaskReq_template::softKeyMaskObjectID()
+{
+set_specific();
+return single_value->field_softKeyMaskObjectID;
+}
+
+const INTEGER_template& VTChangeSoftKeyMaskReq_template::softKeyMaskObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field softKeyMaskObjectID of a non-specific template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskReq.");
+return single_value->field_softKeyMaskObjectID;
+}
+
+VTChangeSoftKeyMaskErrorCodes_template& VTChangeSoftKeyMaskReq_template::errorCodes()
+{
+set_specific();
+return single_value->field_errorCodes;
+}
+
+const VTChangeSoftKeyMaskErrorCodes_template& VTChangeSoftKeyMaskReq_template::errorCodes() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field errorCodes of a non-specific template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskReq.");
+return single_value->field_errorCodes;
+}
+
+OCTETSTRING_template& VTChangeSoftKeyMaskReq_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& VTChangeSoftKeyMaskReq_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskReq.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& VTChangeSoftKeyMaskReq_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& VTChangeSoftKeyMaskReq_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskReq.");
+return single_value->field_reserved8;
+}
+
+int VTChangeSoftKeyMaskReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskReq 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 @IsobusVTMessageTypes.VTChangeSoftKeyMaskReq 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 @IsobusVTMessageTypes.VTChangeSoftKeyMaskReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskReq.");
+  }
+  return 0;
+}
+
+void VTChangeSoftKeyMaskReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", dataOrAlarmMaskObjectID := ");
+single_value->field_dataOrAlarmMaskObjectID.log();
+TTCN_Logger::log_event_str(", softKeyMaskObjectID := ");
+single_value->field_softKeyMaskObjectID.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void VTChangeSoftKeyMaskReq_template::log_match(const VTChangeSoftKeyMaskReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_dataOrAlarmMaskObjectID.match(match_value.dataOrAlarmMaskObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".dataOrAlarmMaskObjectID");
+single_value->field_dataOrAlarmMaskObjectID.log_match(match_value.dataOrAlarmMaskObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_softKeyMaskObjectID.match(match_value.softKeyMaskObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".softKeyMaskObjectID");
+single_value->field_softKeyMaskObjectID.log_match(match_value.softKeyMaskObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_errorCodes.match(match_value.errorCodes(), legacy)){
+TTCN_Logger::log_logmatch_info(".errorCodes");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", dataOrAlarmMaskObjectID := ");
+single_value->field_dataOrAlarmMaskObjectID.log_match(match_value.dataOrAlarmMaskObjectID(), legacy);
+TTCN_Logger::log_event_str(", softKeyMaskObjectID := ");
+single_value->field_softKeyMaskObjectID.log_match(match_value.softKeyMaskObjectID(), legacy);
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 VTChangeSoftKeyMaskReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_dataOrAlarmMaskObjectID.encode_text(text_buf);
+single_value->field_softKeyMaskObjectID.encode_text(text_buf);
+single_value->field_errorCodes.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.VTChangeSoftKeyMaskReq.");
+}
+}
+
+void VTChangeSoftKeyMaskReq_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_vtfunction.decode_text(text_buf);
+single_value->field_dataOrAlarmMaskObjectID.decode_text(text_buf);
+single_value->field_softKeyMaskObjectID.decode_text(text_buf);
+single_value->field_errorCodes.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 VTChangeSoftKeyMaskReq_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 @IsobusVTMessageTypes.VTChangeSoftKeyMaskReq.");
+}
+}
+
+void VTChangeSoftKeyMaskReq_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: {
+    VTChangeSoftKeyMaskReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.VTChangeSoftKeyMaskReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) dataOrAlarmMaskObjectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) softKeyMaskObjectID().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "dataOrAlarmMaskObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          dataOrAlarmMaskObjectID().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(), "softKeyMaskObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          softKeyMaskObjectID().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.VTChangeSoftKeyMaskReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.VTChangeSoftKeyMaskReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void VTChangeSoftKeyMaskReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeSoftKeyMaskReq");
+single_value->field_dataOrAlarmMaskObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeSoftKeyMaskReq");
+single_value->field_softKeyMaskObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeSoftKeyMaskReq");
+single_value->field_errorCodes.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeSoftKeyMaskReq");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeSoftKeyMaskReq");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeSoftKeyMaskReq");
+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 : "@IsobusVTMessageTypes.VTChangeSoftKeyMaskReq");
+}
+
+boolean VTChangeSoftKeyMaskReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean VTChangeSoftKeyMaskReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+VTChangeSoftKeyMaskRes::VTChangeSoftKeyMaskRes()
+{
+}
+
+VTChangeSoftKeyMaskRes::VTChangeSoftKeyMaskRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_dataOrAlarmMaskObjectID,
+    const INTEGER& par_softKeyMaskObjectID,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_dataOrAlarmMaskObjectID(par_dataOrAlarmMaskObjectID),
+  field_softKeyMaskObjectID(par_softKeyMaskObjectID),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+VTChangeSoftKeyMaskRes::VTChangeSoftKeyMaskRes(const VTChangeSoftKeyMaskRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.dataOrAlarmMaskObjectID().is_bound()) field_dataOrAlarmMaskObjectID = other_value.dataOrAlarmMaskObjectID();
+else field_dataOrAlarmMaskObjectID.clean_up();
+if (other_value.softKeyMaskObjectID().is_bound()) field_softKeyMaskObjectID = other_value.softKeyMaskObjectID();
+else field_softKeyMaskObjectID.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void VTChangeSoftKeyMaskRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_dataOrAlarmMaskObjectID.clean_up();
+field_softKeyMaskObjectID.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* VTChangeSoftKeyMaskRes::get_descriptor() const { return &VTChangeSoftKeyMaskRes_descr_; }
+VTChangeSoftKeyMaskRes& VTChangeSoftKeyMaskRes::operator=(const VTChangeSoftKeyMaskRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.dataOrAlarmMaskObjectID().is_bound()) field_dataOrAlarmMaskObjectID = other_value.dataOrAlarmMaskObjectID();
+  else field_dataOrAlarmMaskObjectID.clean_up();
+  if (other_value.softKeyMaskObjectID().is_bound()) field_softKeyMaskObjectID = other_value.softKeyMaskObjectID();
+  else field_softKeyMaskObjectID.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean VTChangeSoftKeyMaskRes::operator==(const VTChangeSoftKeyMaskRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_dataOrAlarmMaskObjectID==other_value.field_dataOrAlarmMaskObjectID
+  && field_softKeyMaskObjectID==other_value.field_softKeyMaskObjectID
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean VTChangeSoftKeyMaskRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_dataOrAlarmMaskObjectID.is_bound())
+  || (field_softKeyMaskObjectID.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean VTChangeSoftKeyMaskRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_dataOrAlarmMaskObjectID.is_value()
+  && field_softKeyMaskObjectID.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void VTChangeSoftKeyMaskRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", dataOrAlarmMaskObjectID := ");
+field_dataOrAlarmMaskObjectID.log();
+TTCN_Logger::log_event_str(", softKeyMaskObjectID := ");
+field_softKeyMaskObjectID.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void VTChangeSoftKeyMaskRes::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 @IsobusVTMessageTypes.VTChangeSoftKeyMaskRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) dataOrAlarmMaskObjectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) softKeyMaskObjectID().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "dataOrAlarmMaskObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          dataOrAlarmMaskObjectID().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(), "softKeyMaskObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          softKeyMaskObjectID().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.VTChangeSoftKeyMaskRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.VTChangeSoftKeyMaskRes");
+  }
+}
+
+void VTChangeSoftKeyMaskRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (dataOrAlarmMaskObjectID().is_bound()) dataOrAlarmMaskObjectID().set_implicit_omit();
+if (softKeyMaskObjectID().is_bound()) softKeyMaskObjectID().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void VTChangeSoftKeyMaskRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_dataOrAlarmMaskObjectID.encode_text(text_buf);
+field_softKeyMaskObjectID.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void VTChangeSoftKeyMaskRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_dataOrAlarmMaskObjectID.decode_text(text_buf);
+field_softKeyMaskObjectID.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void VTChangeSoftKeyMaskRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void VTChangeSoftKeyMaskRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int VTChangeSoftKeyMaskRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_dataOrAlarmMaskObjectID.RAW_decode(ValidObjectID_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_softKeyMaskObjectID.RAW_decode(ValidObjectID_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, VTChangeSoftKeyMaskRes_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(VTChangeSoftKeyMaskRes_reserved6_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, VTChangeSoftKeyMaskRes_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(VTChangeSoftKeyMaskRes_reserved7_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, VTChangeSoftKeyMaskRes_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(VTChangeSoftKeyMaskRes_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int VTChangeSoftKeyMaskRes::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, VTChangeSoftKeyMaskRes_reserved6_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, VTChangeSoftKeyMaskRes_reserved7_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, VTChangeSoftKeyMaskRes_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_dataOrAlarmMaskObjectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_softKeyMaskObjectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved6.RAW_encode(VTChangeSoftKeyMaskRes_reserved6_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved7.RAW_encode(VTChangeSoftKeyMaskRes_reserved7_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved8.RAW_encode(VTChangeSoftKeyMaskRes_reserved8_descr_, *myleaf.body.node.nodes[5]);
+  return myleaf.length = encoded_length;
+}
+
+struct VTChangeSoftKeyMaskRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_dataOrAlarmMaskObjectID;
+INTEGER_template field_softKeyMaskObjectID;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void VTChangeSoftKeyMaskRes_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_vtfunction = ANY_VALUE;
+single_value->field_dataOrAlarmMaskObjectID = ANY_VALUE;
+single_value->field_softKeyMaskObjectID = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void VTChangeSoftKeyMaskRes_template::copy_value(const VTChangeSoftKeyMaskRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.dataOrAlarmMaskObjectID().is_bound()) {
+  single_value->field_dataOrAlarmMaskObjectID = other_value.dataOrAlarmMaskObjectID();
+} else {
+  single_value->field_dataOrAlarmMaskObjectID.clean_up();
+}
+if (other_value.softKeyMaskObjectID().is_bound()) {
+  single_value->field_softKeyMaskObjectID = other_value.softKeyMaskObjectID();
+} else {
+  single_value->field_softKeyMaskObjectID.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void VTChangeSoftKeyMaskRes_template::copy_template(const VTChangeSoftKeyMaskRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.dataOrAlarmMaskObjectID().get_selection()) {
+single_value->field_dataOrAlarmMaskObjectID = other_value.dataOrAlarmMaskObjectID();
+} else {
+single_value->field_dataOrAlarmMaskObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.softKeyMaskObjectID().get_selection()) {
+single_value->field_softKeyMaskObjectID = other_value.softKeyMaskObjectID();
+} else {
+single_value->field_softKeyMaskObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new VTChangeSoftKeyMaskRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskRes.");
+break;
+}
+set_selection(other_value);
+}
+
+VTChangeSoftKeyMaskRes_template::VTChangeSoftKeyMaskRes_template()
+{
+}
+
+VTChangeSoftKeyMaskRes_template::VTChangeSoftKeyMaskRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+VTChangeSoftKeyMaskRes_template::VTChangeSoftKeyMaskRes_template(const VTChangeSoftKeyMaskRes& other_value)
+{
+copy_value(other_value);
+}
+
+VTChangeSoftKeyMaskRes_template::VTChangeSoftKeyMaskRes_template(const OPTIONAL<VTChangeSoftKeyMaskRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTChangeSoftKeyMaskRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskRes from an unbound optional field.");
+}
+}
+
+VTChangeSoftKeyMaskRes_template::VTChangeSoftKeyMaskRes_template(const VTChangeSoftKeyMaskRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+VTChangeSoftKeyMaskRes_template::~VTChangeSoftKeyMaskRes_template()
+{
+clean_up();
+}
+
+VTChangeSoftKeyMaskRes_template& VTChangeSoftKeyMaskRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+VTChangeSoftKeyMaskRes_template& VTChangeSoftKeyMaskRes_template::operator=(const VTChangeSoftKeyMaskRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+VTChangeSoftKeyMaskRes_template& VTChangeSoftKeyMaskRes_template::operator=(const OPTIONAL<VTChangeSoftKeyMaskRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTChangeSoftKeyMaskRes&)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 @IsobusVTMessageTypes.VTChangeSoftKeyMaskRes.");
+}
+return *this;
+}
+
+VTChangeSoftKeyMaskRes_template& VTChangeSoftKeyMaskRes_template::operator=(const VTChangeSoftKeyMaskRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean VTChangeSoftKeyMaskRes_template::match(const VTChangeSoftKeyMaskRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.dataOrAlarmMaskObjectID().is_bound()) return FALSE;
+if(!single_value->field_dataOrAlarmMaskObjectID.match(other_value.dataOrAlarmMaskObjectID(), legacy))return FALSE;
+if(!other_value.softKeyMaskObjectID().is_bound()) return FALSE;
+if(!single_value->field_softKeyMaskObjectID.match(other_value.softKeyMaskObjectID(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskRes.");
+}
+return FALSE;
+}
+
+boolean VTChangeSoftKeyMaskRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_dataOrAlarmMaskObjectID.is_bound()
+
+ ||single_value->field_softKeyMaskObjectID.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean VTChangeSoftKeyMaskRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_dataOrAlarmMaskObjectID.is_value()
+ &&single_value->field_softKeyMaskObjectID.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void VTChangeSoftKeyMaskRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+VTChangeSoftKeyMaskRes VTChangeSoftKeyMaskRes_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 @IsobusVTMessageTypes.VTChangeSoftKeyMaskRes.");
+VTChangeSoftKeyMaskRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_dataOrAlarmMaskObjectID.is_bound()) {
+ret_val.dataOrAlarmMaskObjectID() = single_value->field_dataOrAlarmMaskObjectID.valueof();
+}
+if (single_value->field_softKeyMaskObjectID.is_bound()) {
+ret_val.softKeyMaskObjectID() = single_value->field_softKeyMaskObjectID.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void VTChangeSoftKeyMaskRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new VTChangeSoftKeyMaskRes_template[list_length];
+}
+
+VTChangeSoftKeyMaskRes_template& VTChangeSoftKeyMaskRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& VTChangeSoftKeyMaskRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& VTChangeSoftKeyMaskRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskRes.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& VTChangeSoftKeyMaskRes_template::dataOrAlarmMaskObjectID()
+{
+set_specific();
+return single_value->field_dataOrAlarmMaskObjectID;
+}
+
+const INTEGER_template& VTChangeSoftKeyMaskRes_template::dataOrAlarmMaskObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field dataOrAlarmMaskObjectID of a non-specific template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskRes.");
+return single_value->field_dataOrAlarmMaskObjectID;
+}
+
+INTEGER_template& VTChangeSoftKeyMaskRes_template::softKeyMaskObjectID()
+{
+set_specific();
+return single_value->field_softKeyMaskObjectID;
+}
+
+const INTEGER_template& VTChangeSoftKeyMaskRes_template::softKeyMaskObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field softKeyMaskObjectID of a non-specific template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskRes.");
+return single_value->field_softKeyMaskObjectID;
+}
+
+OCTETSTRING_template& VTChangeSoftKeyMaskRes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& VTChangeSoftKeyMaskRes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskRes.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& VTChangeSoftKeyMaskRes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& VTChangeSoftKeyMaskRes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskRes.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& VTChangeSoftKeyMaskRes_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& VTChangeSoftKeyMaskRes_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskRes.");
+return single_value->field_reserved8;
+}
+
+int VTChangeSoftKeyMaskRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskRes 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 @IsobusVTMessageTypes.VTChangeSoftKeyMaskRes 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 @IsobusVTMessageTypes.VTChangeSoftKeyMaskRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTChangeSoftKeyMaskRes.");
+  }
+  return 0;
+}
+
+void VTChangeSoftKeyMaskRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", dataOrAlarmMaskObjectID := ");
+single_value->field_dataOrAlarmMaskObjectID.log();
+TTCN_Logger::log_event_str(", softKeyMaskObjectID := ");
+single_value->field_softKeyMaskObjectID.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void VTChangeSoftKeyMaskRes_template::log_match(const VTChangeSoftKeyMaskRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_dataOrAlarmMaskObjectID.match(match_value.dataOrAlarmMaskObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".dataOrAlarmMaskObjectID");
+single_value->field_dataOrAlarmMaskObjectID.log_match(match_value.dataOrAlarmMaskObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_softKeyMaskObjectID.match(match_value.softKeyMaskObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".softKeyMaskObjectID");
+single_value->field_softKeyMaskObjectID.log_match(match_value.softKeyMaskObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", dataOrAlarmMaskObjectID := ");
+single_value->field_dataOrAlarmMaskObjectID.log_match(match_value.dataOrAlarmMaskObjectID(), legacy);
+TTCN_Logger::log_event_str(", softKeyMaskObjectID := ");
+single_value->field_softKeyMaskObjectID.log_match(match_value.softKeyMaskObjectID(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 VTChangeSoftKeyMaskRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_dataOrAlarmMaskObjectID.encode_text(text_buf);
+single_value->field_softKeyMaskObjectID.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.VTChangeSoftKeyMaskRes.");
+}
+}
+
+void VTChangeSoftKeyMaskRes_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_vtfunction.decode_text(text_buf);
+single_value->field_dataOrAlarmMaskObjectID.decode_text(text_buf);
+single_value->field_softKeyMaskObjectID.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 VTChangeSoftKeyMaskRes_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 @IsobusVTMessageTypes.VTChangeSoftKeyMaskRes.");
+}
+}
+
+void VTChangeSoftKeyMaskRes_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: {
+    VTChangeSoftKeyMaskRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.VTChangeSoftKeyMaskRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) dataOrAlarmMaskObjectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) softKeyMaskObjectID().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "dataOrAlarmMaskObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          dataOrAlarmMaskObjectID().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(), "softKeyMaskObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          softKeyMaskObjectID().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.VTChangeSoftKeyMaskRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.VTChangeSoftKeyMaskRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void VTChangeSoftKeyMaskRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeSoftKeyMaskRes");
+single_value->field_dataOrAlarmMaskObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeSoftKeyMaskRes");
+single_value->field_softKeyMaskObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeSoftKeyMaskRes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeSoftKeyMaskRes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeSoftKeyMaskRes");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeSoftKeyMaskRes");
+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 : "@IsobusVTMessageTypes.VTChangeSoftKeyMaskRes");
+}
+
+boolean VTChangeSoftKeyMaskRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean VTChangeSoftKeyMaskRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+VTChangeStringValueReq::VTChangeStringValueReq()
+{
+}
+
+VTChangeStringValueReq::VTChangeStringValueReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_inputStringOrStringVariableObjectID,
+    const INTEGER& par_numberOfBytes,
+    const OCTETSTRING& par_enteredStringValue)
+  :   field_vtfunction(par_vtfunction),
+  field_inputStringOrStringVariableObjectID(par_inputStringOrStringVariableObjectID),
+  field_numberOfBytes(par_numberOfBytes),
+  field_enteredStringValue(par_enteredStringValue)
+{
+}
+
+VTChangeStringValueReq::VTChangeStringValueReq(const VTChangeStringValueReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.VTChangeStringValueReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.inputStringOrStringVariableObjectID().is_bound()) field_inputStringOrStringVariableObjectID = other_value.inputStringOrStringVariableObjectID();
+else field_inputStringOrStringVariableObjectID.clean_up();
+if (other_value.numberOfBytes().is_bound()) field_numberOfBytes = other_value.numberOfBytes();
+else field_numberOfBytes.clean_up();
+if (other_value.enteredStringValue().is_bound()) field_enteredStringValue = other_value.enteredStringValue();
+else field_enteredStringValue.clean_up();
+}
+
+void VTChangeStringValueReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_inputStringOrStringVariableObjectID.clean_up();
+field_numberOfBytes.clean_up();
+field_enteredStringValue.clean_up();
+}
+
+const TTCN_Typedescriptor_t* VTChangeStringValueReq::get_descriptor() const { return &VTChangeStringValueReq_descr_; }
+VTChangeStringValueReq& VTChangeStringValueReq::operator=(const VTChangeStringValueReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.VTChangeStringValueReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.inputStringOrStringVariableObjectID().is_bound()) field_inputStringOrStringVariableObjectID = other_value.inputStringOrStringVariableObjectID();
+  else field_inputStringOrStringVariableObjectID.clean_up();
+  if (other_value.numberOfBytes().is_bound()) field_numberOfBytes = other_value.numberOfBytes();
+  else field_numberOfBytes.clean_up();
+  if (other_value.enteredStringValue().is_bound()) field_enteredStringValue = other_value.enteredStringValue();
+  else field_enteredStringValue.clean_up();
+}
+return *this;
+}
+
+boolean VTChangeStringValueReq::operator==(const VTChangeStringValueReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_inputStringOrStringVariableObjectID==other_value.field_inputStringOrStringVariableObjectID
+  && field_numberOfBytes==other_value.field_numberOfBytes
+  && field_enteredStringValue==other_value.field_enteredStringValue;
+}
+
+boolean VTChangeStringValueReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_inputStringOrStringVariableObjectID.is_bound())
+  || (field_numberOfBytes.is_bound())
+  || (field_enteredStringValue.is_bound());
+}
+boolean VTChangeStringValueReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_inputStringOrStringVariableObjectID.is_value()
+  && field_numberOfBytes.is_value()
+  && field_enteredStringValue.is_value();
+}
+void VTChangeStringValueReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", inputStringOrStringVariableObjectID := ");
+field_inputStringOrStringVariableObjectID.log();
+TTCN_Logger::log_event_str(", numberOfBytes := ");
+field_numberOfBytes.log();
+TTCN_Logger::log_event_str(", enteredStringValue := ");
+field_enteredStringValue.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void VTChangeStringValueReq::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 @IsobusVTMessageTypes.VTChangeStringValueReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) inputStringOrStringVariableObjectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) numberOfBytes().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) enteredStringValue().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "inputStringOrStringVariableObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          inputStringOrStringVariableObjectID().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(), "numberOfBytes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          numberOfBytes().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(), "enteredStringValue")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          enteredStringValue().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 @IsobusVTMessageTypes.VTChangeStringValueReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.VTChangeStringValueReq");
+  }
+}
+
+void VTChangeStringValueReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (inputStringOrStringVariableObjectID().is_bound()) inputStringOrStringVariableObjectID().set_implicit_omit();
+if (numberOfBytes().is_bound()) numberOfBytes().set_implicit_omit();
+if (enteredStringValue().is_bound()) enteredStringValue().set_implicit_omit();
+}
+
+void VTChangeStringValueReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_inputStringOrStringVariableObjectID.encode_text(text_buf);
+field_numberOfBytes.encode_text(text_buf);
+field_enteredStringValue.encode_text(text_buf);
+}
+
+void VTChangeStringValueReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_inputStringOrStringVariableObjectID.decode_text(text_buf);
+field_numberOfBytes.decode_text(text_buf);
+field_enteredStringValue.decode_text(text_buf);
+}
+
+void VTChangeStringValueReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void VTChangeStringValueReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int VTChangeStringValueReq::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;
+  int value_of_length_field2 = 0;
+  RAW_Force_Omit field_0_force_omit(0, force_omit, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_inputStringOrStringVariableObjectID.RAW_decode(ValidObjectID_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, VTChangeStringValueReq_numberOfBytes_descr_.raw->forceomit);
+  decoded_field_length = field_numberOfBytes.RAW_decode(VTChangeStringValueReq_numberOfBytes_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());
+  value_of_length_field2+=field_numberOfBytes.get_long_long_val()*8;
+  RAW_Force_Omit field_3_force_omit(3, force_omit, OCTETSTRING_descr_.raw->forceomit);
+  decoded_field_length = field_enteredStringValue.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;
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int VTChangeStringValueReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, VTChangeStringValueReq_numberOfBytes_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, OCTETSTRING_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_inputStringOrStringVariableObjectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += 8;
+  myleaf.body.node.nodes[2]->calc = CALC_LENGTH;
+  myleaf.body.node.nodes[2]->coding_descr = &VTChangeStringValueReq_numberOfBytes_descr_;
+  myleaf.body.node.nodes[2]->calcof.lengthto.num_of_fields = 1;
+  myleaf.body.node.nodes[2]->calcof.lengthto.unit = 8;
+  myleaf.body.node.nodes[2]->calcof.lengthto.offset = 0;
+  myleaf.body.node.nodes[2]->calcof.lengthto.fields = init_lengthto_fields_list(1);
+  myleaf.body.node.nodes[2]->length = 8;
+  myleaf.body.node.nodes[2]->calcof.lengthto.fields[0].level = myleaf.body.node.nodes[3]->curr_pos.level;
+  myleaf.body.node.nodes[2]->calcof.lengthto.fields[0].pos = myleaf.body.node.nodes[3]->curr_pos.pos;
+  encoded_length += field_enteredStringValue.RAW_encode(OCTETSTRING_descr_, *myleaf.body.node.nodes[3]);
+  return myleaf.length = encoded_length;
+}
+
+struct VTChangeStringValueReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_inputStringOrStringVariableObjectID;
+INTEGER_template field_numberOfBytes;
+OCTETSTRING_template field_enteredStringValue;
+};
+
+void VTChangeStringValueReq_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_vtfunction = ANY_VALUE;
+single_value->field_inputStringOrStringVariableObjectID = ANY_VALUE;
+single_value->field_numberOfBytes = ANY_VALUE;
+single_value->field_enteredStringValue = ANY_VALUE;
+}
+}
+}
+
+void VTChangeStringValueReq_template::copy_value(const VTChangeStringValueReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.inputStringOrStringVariableObjectID().is_bound()) {
+  single_value->field_inputStringOrStringVariableObjectID = other_value.inputStringOrStringVariableObjectID();
+} else {
+  single_value->field_inputStringOrStringVariableObjectID.clean_up();
+}
+if (other_value.numberOfBytes().is_bound()) {
+  single_value->field_numberOfBytes = other_value.numberOfBytes();
+} else {
+  single_value->field_numberOfBytes.clean_up();
+}
+if (other_value.enteredStringValue().is_bound()) {
+  single_value->field_enteredStringValue = other_value.enteredStringValue();
+} else {
+  single_value->field_enteredStringValue.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void VTChangeStringValueReq_template::copy_template(const VTChangeStringValueReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.inputStringOrStringVariableObjectID().get_selection()) {
+single_value->field_inputStringOrStringVariableObjectID = other_value.inputStringOrStringVariableObjectID();
+} else {
+single_value->field_inputStringOrStringVariableObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.numberOfBytes().get_selection()) {
+single_value->field_numberOfBytes = other_value.numberOfBytes();
+} else {
+single_value->field_numberOfBytes.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.enteredStringValue().get_selection()) {
+single_value->field_enteredStringValue = other_value.enteredStringValue();
+} else {
+single_value->field_enteredStringValue.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new VTChangeStringValueReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTChangeStringValueReq.");
+break;
+}
+set_selection(other_value);
+}
+
+VTChangeStringValueReq_template::VTChangeStringValueReq_template()
+{
+}
+
+VTChangeStringValueReq_template::VTChangeStringValueReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+VTChangeStringValueReq_template::VTChangeStringValueReq_template(const VTChangeStringValueReq& other_value)
+{
+copy_value(other_value);
+}
+
+VTChangeStringValueReq_template::VTChangeStringValueReq_template(const OPTIONAL<VTChangeStringValueReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTChangeStringValueReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.VTChangeStringValueReq from an unbound optional field.");
+}
+}
+
+VTChangeStringValueReq_template::VTChangeStringValueReq_template(const VTChangeStringValueReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+VTChangeStringValueReq_template::~VTChangeStringValueReq_template()
+{
+clean_up();
+}
+
+VTChangeStringValueReq_template& VTChangeStringValueReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+VTChangeStringValueReq_template& VTChangeStringValueReq_template::operator=(const VTChangeStringValueReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+VTChangeStringValueReq_template& VTChangeStringValueReq_template::operator=(const OPTIONAL<VTChangeStringValueReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTChangeStringValueReq&)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 @IsobusVTMessageTypes.VTChangeStringValueReq.");
+}
+return *this;
+}
+
+VTChangeStringValueReq_template& VTChangeStringValueReq_template::operator=(const VTChangeStringValueReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean VTChangeStringValueReq_template::match(const VTChangeStringValueReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.inputStringOrStringVariableObjectID().is_bound()) return FALSE;
+if(!single_value->field_inputStringOrStringVariableObjectID.match(other_value.inputStringOrStringVariableObjectID(), legacy))return FALSE;
+if(!other_value.numberOfBytes().is_bound()) return FALSE;
+if(!single_value->field_numberOfBytes.match(other_value.numberOfBytes(), legacy))return FALSE;
+if(!other_value.enteredStringValue().is_bound()) return FALSE;
+if(!single_value->field_enteredStringValue.match(other_value.enteredStringValue(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTChangeStringValueReq.");
+}
+return FALSE;
+}
+
+boolean VTChangeStringValueReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_inputStringOrStringVariableObjectID.is_bound()
+
+ ||single_value->field_numberOfBytes.is_bound()
+
+ ||single_value->field_enteredStringValue.is_bound()
+;
+}
+
+boolean VTChangeStringValueReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_inputStringOrStringVariableObjectID.is_value()
+ &&single_value->field_numberOfBytes.is_value()
+ &&single_value->field_enteredStringValue.is_value();
+}
+
+void VTChangeStringValueReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+VTChangeStringValueReq VTChangeStringValueReq_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 @IsobusVTMessageTypes.VTChangeStringValueReq.");
+VTChangeStringValueReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_inputStringOrStringVariableObjectID.is_bound()) {
+ret_val.inputStringOrStringVariableObjectID() = single_value->field_inputStringOrStringVariableObjectID.valueof();
+}
+if (single_value->field_numberOfBytes.is_bound()) {
+ret_val.numberOfBytes() = single_value->field_numberOfBytes.valueof();
+}
+if (single_value->field_enteredStringValue.is_bound()) {
+ret_val.enteredStringValue() = single_value->field_enteredStringValue.valueof();
+}
+return ret_val;
+}
+
+void VTChangeStringValueReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.VTChangeStringValueReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new VTChangeStringValueReq_template[list_length];
+}
+
+VTChangeStringValueReq_template& VTChangeStringValueReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.VTChangeStringValueReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.VTChangeStringValueReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& VTChangeStringValueReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& VTChangeStringValueReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.VTChangeStringValueReq.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& VTChangeStringValueReq_template::inputStringOrStringVariableObjectID()
+{
+set_specific();
+return single_value->field_inputStringOrStringVariableObjectID;
+}
+
+const INTEGER_template& VTChangeStringValueReq_template::inputStringOrStringVariableObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field inputStringOrStringVariableObjectID of a non-specific template of type @IsobusVTMessageTypes.VTChangeStringValueReq.");
+return single_value->field_inputStringOrStringVariableObjectID;
+}
+
+INTEGER_template& VTChangeStringValueReq_template::numberOfBytes()
+{
+set_specific();
+return single_value->field_numberOfBytes;
+}
+
+const INTEGER_template& VTChangeStringValueReq_template::numberOfBytes() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field numberOfBytes of a non-specific template of type @IsobusVTMessageTypes.VTChangeStringValueReq.");
+return single_value->field_numberOfBytes;
+}
+
+OCTETSTRING_template& VTChangeStringValueReq_template::enteredStringValue()
+{
+set_specific();
+return single_value->field_enteredStringValue;
+}
+
+const OCTETSTRING_template& VTChangeStringValueReq_template::enteredStringValue() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field enteredStringValue of a non-specific template of type @IsobusVTMessageTypes.VTChangeStringValueReq.");
+return single_value->field_enteredStringValue;
+}
+
+int VTChangeStringValueReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTChangeStringValueReq 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 @IsobusVTMessageTypes.VTChangeStringValueReq 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 @IsobusVTMessageTypes.VTChangeStringValueReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTChangeStringValueReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTChangeStringValueReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTChangeStringValueReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTChangeStringValueReq.");
+  }
+  return 0;
+}
+
+void VTChangeStringValueReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", inputStringOrStringVariableObjectID := ");
+single_value->field_inputStringOrStringVariableObjectID.log();
+TTCN_Logger::log_event_str(", numberOfBytes := ");
+single_value->field_numberOfBytes.log();
+TTCN_Logger::log_event_str(", enteredStringValue := ");
+single_value->field_enteredStringValue.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void VTChangeStringValueReq_template::log_match(const VTChangeStringValueReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_inputStringOrStringVariableObjectID.match(match_value.inputStringOrStringVariableObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".inputStringOrStringVariableObjectID");
+single_value->field_inputStringOrStringVariableObjectID.log_match(match_value.inputStringOrStringVariableObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_numberOfBytes.match(match_value.numberOfBytes(), legacy)){
+TTCN_Logger::log_logmatch_info(".numberOfBytes");
+single_value->field_numberOfBytes.log_match(match_value.numberOfBytes(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_enteredStringValue.match(match_value.enteredStringValue(), legacy)){
+TTCN_Logger::log_logmatch_info(".enteredStringValue");
+single_value->field_enteredStringValue.log_match(match_value.enteredStringValue(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", inputStringOrStringVariableObjectID := ");
+single_value->field_inputStringOrStringVariableObjectID.log_match(match_value.inputStringOrStringVariableObjectID(), legacy);
+TTCN_Logger::log_event_str(", numberOfBytes := ");
+single_value->field_numberOfBytes.log_match(match_value.numberOfBytes(), legacy);
+TTCN_Logger::log_event_str(", enteredStringValue := ");
+single_value->field_enteredStringValue.log_match(match_value.enteredStringValue(), 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 VTChangeStringValueReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_inputStringOrStringVariableObjectID.encode_text(text_buf);
+single_value->field_numberOfBytes.encode_text(text_buf);
+single_value->field_enteredStringValue.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 @IsobusVTMessageTypes.VTChangeStringValueReq.");
+}
+}
+
+void VTChangeStringValueReq_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_vtfunction.decode_text(text_buf);
+single_value->field_inputStringOrStringVariableObjectID.decode_text(text_buf);
+single_value->field_numberOfBytes.decode_text(text_buf);
+single_value->field_enteredStringValue.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 VTChangeStringValueReq_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 @IsobusVTMessageTypes.VTChangeStringValueReq.");
+}
+}
+
+void VTChangeStringValueReq_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: {
+    VTChangeStringValueReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.VTChangeStringValueReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) inputStringOrStringVariableObjectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) numberOfBytes().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) enteredStringValue().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "inputStringOrStringVariableObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          inputStringOrStringVariableObjectID().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(), "numberOfBytes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          numberOfBytes().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(), "enteredStringValue")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          enteredStringValue().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 @IsobusVTMessageTypes.VTChangeStringValueReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.VTChangeStringValueReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void VTChangeStringValueReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeStringValueReq");
+single_value->field_inputStringOrStringVariableObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeStringValueReq");
+single_value->field_numberOfBytes.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeStringValueReq");
+single_value->field_enteredStringValue.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeStringValueReq");
+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 : "@IsobusVTMessageTypes.VTChangeStringValueReq");
+}
+
+boolean VTChangeStringValueReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean VTChangeStringValueReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+VTChangeStringValueRes::VTChangeStringValueRes()
+{
+}
+
+VTChangeStringValueRes::VTChangeStringValueRes(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_reserved2,
+    const OCTETSTRING& par_reserved3,
+    const INTEGER& par_inputStringOrStringVariableObjectID,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_reserved2(par_reserved2),
+  field_reserved3(par_reserved3),
+  field_inputStringOrStringVariableObjectID(par_inputStringOrStringVariableObjectID),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+VTChangeStringValueRes::VTChangeStringValueRes(const VTChangeStringValueRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.VTChangeStringValueRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+else field_reserved2.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.inputStringOrStringVariableObjectID().is_bound()) field_inputStringOrStringVariableObjectID = other_value.inputStringOrStringVariableObjectID();
+else field_inputStringOrStringVariableObjectID.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void VTChangeStringValueRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_reserved2.clean_up();
+field_reserved3.clean_up();
+field_inputStringOrStringVariableObjectID.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* VTChangeStringValueRes::get_descriptor() const { return &VTChangeStringValueRes_descr_; }
+VTChangeStringValueRes& VTChangeStringValueRes::operator=(const VTChangeStringValueRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.VTChangeStringValueRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+  else field_reserved2.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.inputStringOrStringVariableObjectID().is_bound()) field_inputStringOrStringVariableObjectID = other_value.inputStringOrStringVariableObjectID();
+  else field_inputStringOrStringVariableObjectID.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean VTChangeStringValueRes::operator==(const VTChangeStringValueRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_reserved2==other_value.field_reserved2
+  && field_reserved3==other_value.field_reserved3
+  && field_inputStringOrStringVariableObjectID==other_value.field_inputStringOrStringVariableObjectID
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean VTChangeStringValueRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_reserved2.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_inputStringOrStringVariableObjectID.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean VTChangeStringValueRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_reserved2.is_value()
+  && field_reserved3.is_value()
+  && field_inputStringOrStringVariableObjectID.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void VTChangeStringValueRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", inputStringOrStringVariableObjectID := ");
+field_inputStringOrStringVariableObjectID.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void VTChangeStringValueRes::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 @IsobusVTMessageTypes.VTChangeStringValueRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) inputStringOrStringVariableObjectID().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "inputStringOrStringVariableObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          inputStringOrStringVariableObjectID().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.VTChangeStringValueRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.VTChangeStringValueRes");
+  }
+}
+
+void VTChangeStringValueRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (reserved2().is_bound()) reserved2().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (inputStringOrStringVariableObjectID().is_bound()) inputStringOrStringVariableObjectID().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void VTChangeStringValueRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_reserved2.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_inputStringOrStringVariableObjectID.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void VTChangeStringValueRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_reserved2.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_inputStringOrStringVariableObjectID.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void VTChangeStringValueRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void VTChangeStringValueRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int VTChangeStringValueRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, VTChangeStringValueRes_reserved2_descr_.raw->forceomit);
+  decoded_field_length = field_reserved2.RAW_decode(VTChangeStringValueRes_reserved2_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, VTChangeStringValueRes_reserved3_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(VTChangeStringValueRes_reserved3_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_inputStringOrStringVariableObjectID.RAW_decode(ValidObjectID_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, VTChangeStringValueRes_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(VTChangeStringValueRes_reserved6_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, VTChangeStringValueRes_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(VTChangeStringValueRes_reserved7_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, VTChangeStringValueRes_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(VTChangeStringValueRes_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int VTChangeStringValueRes::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, VTChangeStringValueRes_reserved2_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, VTChangeStringValueRes_reserved3_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, VTChangeStringValueRes_reserved6_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, VTChangeStringValueRes_reserved7_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, VTChangeStringValueRes_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved2.RAW_encode(VTChangeStringValueRes_reserved2_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved3.RAW_encode(VTChangeStringValueRes_reserved3_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_inputStringOrStringVariableObjectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved6.RAW_encode(VTChangeStringValueRes_reserved6_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved7.RAW_encode(VTChangeStringValueRes_reserved7_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved8.RAW_encode(VTChangeStringValueRes_reserved8_descr_, *myleaf.body.node.nodes[6]);
+  return myleaf.length = encoded_length;
+}
+
+struct VTChangeStringValueRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+OCTETSTRING_template field_reserved2;
+OCTETSTRING_template field_reserved3;
+INTEGER_template field_inputStringOrStringVariableObjectID;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void VTChangeStringValueRes_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_vtfunction = ANY_VALUE;
+single_value->field_reserved2 = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_inputStringOrStringVariableObjectID = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void VTChangeStringValueRes_template::copy_value(const VTChangeStringValueRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.reserved2().is_bound()) {
+  single_value->field_reserved2 = other_value.reserved2();
+} else {
+  single_value->field_reserved2.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.inputStringOrStringVariableObjectID().is_bound()) {
+  single_value->field_inputStringOrStringVariableObjectID = other_value.inputStringOrStringVariableObjectID();
+} else {
+  single_value->field_inputStringOrStringVariableObjectID.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void VTChangeStringValueRes_template::copy_template(const VTChangeStringValueRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved2().get_selection()) {
+single_value->field_reserved2 = other_value.reserved2();
+} else {
+single_value->field_reserved2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.inputStringOrStringVariableObjectID().get_selection()) {
+single_value->field_inputStringOrStringVariableObjectID = other_value.inputStringOrStringVariableObjectID();
+} else {
+single_value->field_inputStringOrStringVariableObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new VTChangeStringValueRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTChangeStringValueRes.");
+break;
+}
+set_selection(other_value);
+}
+
+VTChangeStringValueRes_template::VTChangeStringValueRes_template()
+{
+}
+
+VTChangeStringValueRes_template::VTChangeStringValueRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+VTChangeStringValueRes_template::VTChangeStringValueRes_template(const VTChangeStringValueRes& other_value)
+{
+copy_value(other_value);
+}
+
+VTChangeStringValueRes_template::VTChangeStringValueRes_template(const OPTIONAL<VTChangeStringValueRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTChangeStringValueRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.VTChangeStringValueRes from an unbound optional field.");
+}
+}
+
+VTChangeStringValueRes_template::VTChangeStringValueRes_template(const VTChangeStringValueRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+VTChangeStringValueRes_template::~VTChangeStringValueRes_template()
+{
+clean_up();
+}
+
+VTChangeStringValueRes_template& VTChangeStringValueRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+VTChangeStringValueRes_template& VTChangeStringValueRes_template::operator=(const VTChangeStringValueRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+VTChangeStringValueRes_template& VTChangeStringValueRes_template::operator=(const OPTIONAL<VTChangeStringValueRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTChangeStringValueRes&)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 @IsobusVTMessageTypes.VTChangeStringValueRes.");
+}
+return *this;
+}
+
+VTChangeStringValueRes_template& VTChangeStringValueRes_template::operator=(const VTChangeStringValueRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean VTChangeStringValueRes_template::match(const VTChangeStringValueRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.reserved2().is_bound()) return FALSE;
+if(!single_value->field_reserved2.match(other_value.reserved2(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.inputStringOrStringVariableObjectID().is_bound()) return FALSE;
+if(!single_value->field_inputStringOrStringVariableObjectID.match(other_value.inputStringOrStringVariableObjectID(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTChangeStringValueRes.");
+}
+return FALSE;
+}
+
+boolean VTChangeStringValueRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_reserved2.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_inputStringOrStringVariableObjectID.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean VTChangeStringValueRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_reserved2.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_inputStringOrStringVariableObjectID.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void VTChangeStringValueRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+VTChangeStringValueRes VTChangeStringValueRes_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 @IsobusVTMessageTypes.VTChangeStringValueRes.");
+VTChangeStringValueRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_reserved2.is_bound()) {
+ret_val.reserved2() = single_value->field_reserved2.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_inputStringOrStringVariableObjectID.is_bound()) {
+ret_val.inputStringOrStringVariableObjectID() = single_value->field_inputStringOrStringVariableObjectID.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void VTChangeStringValueRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.VTChangeStringValueRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new VTChangeStringValueRes_template[list_length];
+}
+
+VTChangeStringValueRes_template& VTChangeStringValueRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.VTChangeStringValueRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.VTChangeStringValueRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& VTChangeStringValueRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& VTChangeStringValueRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.VTChangeStringValueRes.");
+return single_value->field_vtfunction;
+}
+
+OCTETSTRING_template& VTChangeStringValueRes_template::reserved2()
+{
+set_specific();
+return single_value->field_reserved2;
+}
+
+const OCTETSTRING_template& VTChangeStringValueRes_template::reserved2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved2 of a non-specific template of type @IsobusVTMessageTypes.VTChangeStringValueRes.");
+return single_value->field_reserved2;
+}
+
+OCTETSTRING_template& VTChangeStringValueRes_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const OCTETSTRING_template& VTChangeStringValueRes_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.VTChangeStringValueRes.");
+return single_value->field_reserved3;
+}
+
+INTEGER_template& VTChangeStringValueRes_template::inputStringOrStringVariableObjectID()
+{
+set_specific();
+return single_value->field_inputStringOrStringVariableObjectID;
+}
+
+const INTEGER_template& VTChangeStringValueRes_template::inputStringOrStringVariableObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field inputStringOrStringVariableObjectID of a non-specific template of type @IsobusVTMessageTypes.VTChangeStringValueRes.");
+return single_value->field_inputStringOrStringVariableObjectID;
+}
+
+OCTETSTRING_template& VTChangeStringValueRes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& VTChangeStringValueRes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.VTChangeStringValueRes.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& VTChangeStringValueRes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& VTChangeStringValueRes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.VTChangeStringValueRes.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& VTChangeStringValueRes_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& VTChangeStringValueRes_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.VTChangeStringValueRes.");
+return single_value->field_reserved8;
+}
+
+int VTChangeStringValueRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTChangeStringValueRes 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 @IsobusVTMessageTypes.VTChangeStringValueRes 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 @IsobusVTMessageTypes.VTChangeStringValueRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTChangeStringValueRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTChangeStringValueRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTChangeStringValueRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTChangeStringValueRes.");
+  }
+  return 0;
+}
+
+void VTChangeStringValueRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", inputStringOrStringVariableObjectID := ");
+single_value->field_inputStringOrStringVariableObjectID.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void VTChangeStringValueRes_template::log_match(const VTChangeStringValueRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved2.match(match_value.reserved2(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved2");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_inputStringOrStringVariableObjectID.match(match_value.inputStringOrStringVariableObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".inputStringOrStringVariableObjectID");
+single_value->field_inputStringOrStringVariableObjectID.log_match(match_value.inputStringOrStringVariableObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", inputStringOrStringVariableObjectID := ");
+single_value->field_inputStringOrStringVariableObjectID.log_match(match_value.inputStringOrStringVariableObjectID(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 VTChangeStringValueRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_reserved2.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_inputStringOrStringVariableObjectID.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.VTChangeStringValueRes.");
+}
+}
+
+void VTChangeStringValueRes_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_vtfunction.decode_text(text_buf);
+single_value->field_reserved2.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_inputStringOrStringVariableObjectID.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 VTChangeStringValueRes_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 @IsobusVTMessageTypes.VTChangeStringValueRes.");
+}
+}
+
+void VTChangeStringValueRes_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: {
+    VTChangeStringValueRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.VTChangeStringValueRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) inputStringOrStringVariableObjectID().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "inputStringOrStringVariableObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          inputStringOrStringVariableObjectID().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.VTChangeStringValueRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.VTChangeStringValueRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void VTChangeStringValueRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeStringValueRes");
+single_value->field_reserved2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeStringValueRes");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeStringValueRes");
+single_value->field_inputStringOrStringVariableObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeStringValueRes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeStringValueRes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeStringValueRes");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTChangeStringValueRes");
+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 : "@IsobusVTMessageTypes.VTChangeStringValueRes");
+}
+
+boolean VTChangeStringValueRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean VTChangeStringValueRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+VTOnUserLayoutHideShowReq::VTOnUserLayoutHideShowReq()
+{
+}
+
+VTOnUserLayoutHideShowReq::VTOnUserLayoutHideShowReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID1,
+    const e__VTOnUserLayoutHideShow__state& par_state1,
+    const INTEGER& par_objectID2,
+    const e__VTOnUserLayoutHideShow__state& par_state2,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_objectID1(par_objectID1),
+  field_state1(par_state1),
+  field_objectID2(par_objectID2),
+  field_state2(par_state2),
+  field_reserved8(par_reserved8)
+{
+}
+
+VTOnUserLayoutHideShowReq::VTOnUserLayoutHideShowReq(const VTOnUserLayoutHideShowReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.VTOnUserLayoutHideShowReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectID1().is_bound()) field_objectID1 = other_value.objectID1();
+else field_objectID1.clean_up();
+if (other_value.state1().is_bound()) field_state1 = other_value.state1();
+else field_state1.clean_up();
+if (other_value.objectID2().is_bound()) field_objectID2 = other_value.objectID2();
+else field_objectID2.clean_up();
+if (other_value.state2().is_bound()) field_state2 = other_value.state2();
+else field_state2.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void VTOnUserLayoutHideShowReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectID1.clean_up();
+field_state1.clean_up();
+field_objectID2.clean_up();
+field_state2.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* VTOnUserLayoutHideShowReq::get_descriptor() const { return &VTOnUserLayoutHideShowReq_descr_; }
+VTOnUserLayoutHideShowReq& VTOnUserLayoutHideShowReq::operator=(const VTOnUserLayoutHideShowReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.VTOnUserLayoutHideShowReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectID1().is_bound()) field_objectID1 = other_value.objectID1();
+  else field_objectID1.clean_up();
+  if (other_value.state1().is_bound()) field_state1 = other_value.state1();
+  else field_state1.clean_up();
+  if (other_value.objectID2().is_bound()) field_objectID2 = other_value.objectID2();
+  else field_objectID2.clean_up();
+  if (other_value.state2().is_bound()) field_state2 = other_value.state2();
+  else field_state2.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean VTOnUserLayoutHideShowReq::operator==(const VTOnUserLayoutHideShowReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectID1==other_value.field_objectID1
+  && field_state1==other_value.field_state1
+  && field_objectID2==other_value.field_objectID2
+  && field_state2==other_value.field_state2
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean VTOnUserLayoutHideShowReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectID1.is_bound())
+  || (field_state1.is_bound())
+  || (field_objectID2.is_bound())
+  || (field_state2.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean VTOnUserLayoutHideShowReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectID1.is_value()
+  && field_state1.is_value()
+  && field_objectID2.is_value()
+  && field_state2.is_value()
+  && field_reserved8.is_value();
+}
+void VTOnUserLayoutHideShowReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID1 := ");
+field_objectID1.log();
+TTCN_Logger::log_event_str(", state1 := ");
+field_state1.log();
+TTCN_Logger::log_event_str(", objectID2 := ");
+field_objectID2.log();
+TTCN_Logger::log_event_str(", state2 := ");
+field_state2.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void VTOnUserLayoutHideShowReq::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 @IsobusVTMessageTypes.VTOnUserLayoutHideShowReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID1().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) state1().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) objectID2().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) state2().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID1")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID1().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(), "state1")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          state1().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(), "objectID2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID2().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(), "state2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          state2().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.VTOnUserLayoutHideShowReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.VTOnUserLayoutHideShowReq");
+  }
+}
+
+void VTOnUserLayoutHideShowReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectID1().is_bound()) objectID1().set_implicit_omit();
+if (state1().is_bound()) state1().set_implicit_omit();
+if (objectID2().is_bound()) objectID2().set_implicit_omit();
+if (state2().is_bound()) state2().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void VTOnUserLayoutHideShowReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectID1.encode_text(text_buf);
+field_state1.encode_text(text_buf);
+field_objectID2.encode_text(text_buf);
+field_state2.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void VTOnUserLayoutHideShowReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectID1.decode_text(text_buf);
+field_state1.decode_text(text_buf);
+field_objectID2.decode_text(text_buf);
+field_state2.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void VTOnUserLayoutHideShowReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void VTOnUserLayoutHideShowReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int VTOnUserLayoutHideShowReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectID1.RAW_decode(ValidObjectID_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, e__VTOnUserLayoutHideShow__state_descr_.raw->forceomit);
+  decoded_field_length = field_state1.RAW_decode(e__VTOnUserLayoutHideShow__state_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, AnyObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectID2.RAW_decode(AnyObjectID_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, e__VTOnUserLayoutHideShow__state_descr_.raw->forceomit);
+  decoded_field_length = field_state2.RAW_decode(e__VTOnUserLayoutHideShow__state_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, VTOnUserLayoutHideShowReq_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(VTOnUserLayoutHideShowReq_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int VTOnUserLayoutHideShowReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, e__VTOnUserLayoutHideShow__state_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, AnyObjectID_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, e__VTOnUserLayoutHideShow__state_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, VTOnUserLayoutHideShowReq_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectID1.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_state1.RAW_encode(e__VTOnUserLayoutHideShow__state_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_objectID2.RAW_encode(AnyObjectID_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_state2.RAW_encode(e__VTOnUserLayoutHideShow__state_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved8.RAW_encode(VTOnUserLayoutHideShowReq_reserved8_descr_, *myleaf.body.node.nodes[5]);
+  return myleaf.length = encoded_length;
+}
+
+struct VTOnUserLayoutHideShowReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectID1;
+e__VTOnUserLayoutHideShow__state_template field_state1;
+INTEGER_template field_objectID2;
+e__VTOnUserLayoutHideShow__state_template field_state2;
+OCTETSTRING_template field_reserved8;
+};
+
+void VTOnUserLayoutHideShowReq_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_vtfunction = ANY_VALUE;
+single_value->field_objectID1 = ANY_VALUE;
+single_value->field_state1 = ANY_VALUE;
+single_value->field_objectID2 = ANY_VALUE;
+single_value->field_state2 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void VTOnUserLayoutHideShowReq_template::copy_value(const VTOnUserLayoutHideShowReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectID1().is_bound()) {
+  single_value->field_objectID1 = other_value.objectID1();
+} else {
+  single_value->field_objectID1.clean_up();
+}
+if (other_value.state1().is_bound()) {
+  single_value->field_state1 = other_value.state1();
+} else {
+  single_value->field_state1.clean_up();
+}
+if (other_value.objectID2().is_bound()) {
+  single_value->field_objectID2 = other_value.objectID2();
+} else {
+  single_value->field_objectID2.clean_up();
+}
+if (other_value.state2().is_bound()) {
+  single_value->field_state2 = other_value.state2();
+} else {
+  single_value->field_state2.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void VTOnUserLayoutHideShowReq_template::copy_template(const VTOnUserLayoutHideShowReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectID1().get_selection()) {
+single_value->field_objectID1 = other_value.objectID1();
+} else {
+single_value->field_objectID1.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.state1().get_selection()) {
+single_value->field_state1 = other_value.state1();
+} else {
+single_value->field_state1.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectID2().get_selection()) {
+single_value->field_objectID2 = other_value.objectID2();
+} else {
+single_value->field_objectID2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.state2().get_selection()) {
+single_value->field_state2 = other_value.state2();
+} else {
+single_value->field_state2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new VTOnUserLayoutHideShowReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTOnUserLayoutHideShowReq.");
+break;
+}
+set_selection(other_value);
+}
+
+VTOnUserLayoutHideShowReq_template::VTOnUserLayoutHideShowReq_template()
+{
+}
+
+VTOnUserLayoutHideShowReq_template::VTOnUserLayoutHideShowReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+VTOnUserLayoutHideShowReq_template::VTOnUserLayoutHideShowReq_template(const VTOnUserLayoutHideShowReq& other_value)
+{
+copy_value(other_value);
+}
+
+VTOnUserLayoutHideShowReq_template::VTOnUserLayoutHideShowReq_template(const OPTIONAL<VTOnUserLayoutHideShowReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTOnUserLayoutHideShowReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.VTOnUserLayoutHideShowReq from an unbound optional field.");
+}
+}
+
+VTOnUserLayoutHideShowReq_template::VTOnUserLayoutHideShowReq_template(const VTOnUserLayoutHideShowReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+VTOnUserLayoutHideShowReq_template::~VTOnUserLayoutHideShowReq_template()
+{
+clean_up();
+}
+
+VTOnUserLayoutHideShowReq_template& VTOnUserLayoutHideShowReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+VTOnUserLayoutHideShowReq_template& VTOnUserLayoutHideShowReq_template::operator=(const VTOnUserLayoutHideShowReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+VTOnUserLayoutHideShowReq_template& VTOnUserLayoutHideShowReq_template::operator=(const OPTIONAL<VTOnUserLayoutHideShowReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTOnUserLayoutHideShowReq&)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 @IsobusVTMessageTypes.VTOnUserLayoutHideShowReq.");
+}
+return *this;
+}
+
+VTOnUserLayoutHideShowReq_template& VTOnUserLayoutHideShowReq_template::operator=(const VTOnUserLayoutHideShowReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean VTOnUserLayoutHideShowReq_template::match(const VTOnUserLayoutHideShowReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectID1().is_bound()) return FALSE;
+if(!single_value->field_objectID1.match(other_value.objectID1(), legacy))return FALSE;
+if(!other_value.state1().is_bound()) return FALSE;
+if(!single_value->field_state1.match(other_value.state1(), legacy))return FALSE;
+if(!other_value.objectID2().is_bound()) return FALSE;
+if(!single_value->field_objectID2.match(other_value.objectID2(), legacy))return FALSE;
+if(!other_value.state2().is_bound()) return FALSE;
+if(!single_value->field_state2.match(other_value.state2(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTOnUserLayoutHideShowReq.");
+}
+return FALSE;
+}
+
+boolean VTOnUserLayoutHideShowReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectID1.is_bound()
+
+ ||single_value->field_state1.is_bound()
+
+ ||single_value->field_objectID2.is_bound()
+
+ ||single_value->field_state2.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean VTOnUserLayoutHideShowReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectID1.is_value()
+ &&single_value->field_state1.is_value()
+ &&single_value->field_objectID2.is_value()
+ &&single_value->field_state2.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void VTOnUserLayoutHideShowReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+VTOnUserLayoutHideShowReq VTOnUserLayoutHideShowReq_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 @IsobusVTMessageTypes.VTOnUserLayoutHideShowReq.");
+VTOnUserLayoutHideShowReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectID1.is_bound()) {
+ret_val.objectID1() = single_value->field_objectID1.valueof();
+}
+if (single_value->field_state1.is_bound()) {
+ret_val.state1() = single_value->field_state1.valueof();
+}
+if (single_value->field_objectID2.is_bound()) {
+ret_val.objectID2() = single_value->field_objectID2.valueof();
+}
+if (single_value->field_state2.is_bound()) {
+ret_val.state2() = single_value->field_state2.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void VTOnUserLayoutHideShowReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.VTOnUserLayoutHideShowReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new VTOnUserLayoutHideShowReq_template[list_length];
+}
+
+VTOnUserLayoutHideShowReq_template& VTOnUserLayoutHideShowReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.VTOnUserLayoutHideShowReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.VTOnUserLayoutHideShowReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& VTOnUserLayoutHideShowReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& VTOnUserLayoutHideShowReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.VTOnUserLayoutHideShowReq.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& VTOnUserLayoutHideShowReq_template::objectID1()
+{
+set_specific();
+return single_value->field_objectID1;
+}
+
+const INTEGER_template& VTOnUserLayoutHideShowReq_template::objectID1() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectID1 of a non-specific template of type @IsobusVTMessageTypes.VTOnUserLayoutHideShowReq.");
+return single_value->field_objectID1;
+}
+
+e__VTOnUserLayoutHideShow__state_template& VTOnUserLayoutHideShowReq_template::state1()
+{
+set_specific();
+return single_value->field_state1;
+}
+
+const e__VTOnUserLayoutHideShow__state_template& VTOnUserLayoutHideShowReq_template::state1() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field state1 of a non-specific template of type @IsobusVTMessageTypes.VTOnUserLayoutHideShowReq.");
+return single_value->field_state1;
+}
+
+INTEGER_template& VTOnUserLayoutHideShowReq_template::objectID2()
+{
+set_specific();
+return single_value->field_objectID2;
+}
+
+const INTEGER_template& VTOnUserLayoutHideShowReq_template::objectID2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectID2 of a non-specific template of type @IsobusVTMessageTypes.VTOnUserLayoutHideShowReq.");
+return single_value->field_objectID2;
+}
+
+e__VTOnUserLayoutHideShow__state_template& VTOnUserLayoutHideShowReq_template::state2()
+{
+set_specific();
+return single_value->field_state2;
+}
+
+const e__VTOnUserLayoutHideShow__state_template& VTOnUserLayoutHideShowReq_template::state2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field state2 of a non-specific template of type @IsobusVTMessageTypes.VTOnUserLayoutHideShowReq.");
+return single_value->field_state2;
+}
+
+OCTETSTRING_template& VTOnUserLayoutHideShowReq_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& VTOnUserLayoutHideShowReq_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.VTOnUserLayoutHideShowReq.");
+return single_value->field_reserved8;
+}
+
+int VTOnUserLayoutHideShowReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTOnUserLayoutHideShowReq 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 @IsobusVTMessageTypes.VTOnUserLayoutHideShowReq 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 @IsobusVTMessageTypes.VTOnUserLayoutHideShowReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTOnUserLayoutHideShowReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTOnUserLayoutHideShowReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTOnUserLayoutHideShowReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTOnUserLayoutHideShowReq.");
+  }
+  return 0;
+}
+
+void VTOnUserLayoutHideShowReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID1 := ");
+single_value->field_objectID1.log();
+TTCN_Logger::log_event_str(", state1 := ");
+single_value->field_state1.log();
+TTCN_Logger::log_event_str(", objectID2 := ");
+single_value->field_objectID2.log();
+TTCN_Logger::log_event_str(", state2 := ");
+single_value->field_state2.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void VTOnUserLayoutHideShowReq_template::log_match(const VTOnUserLayoutHideShowReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectID1.match(match_value.objectID1(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectID1");
+single_value->field_objectID1.log_match(match_value.objectID1(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_state1.match(match_value.state1(), legacy)){
+TTCN_Logger::log_logmatch_info(".state1");
+single_value->field_state1.log_match(match_value.state1(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectID2.match(match_value.objectID2(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectID2");
+single_value->field_objectID2.log_match(match_value.objectID2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_state2.match(match_value.state2(), legacy)){
+TTCN_Logger::log_logmatch_info(".state2");
+single_value->field_state2.log_match(match_value.state2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectID1 := ");
+single_value->field_objectID1.log_match(match_value.objectID1(), legacy);
+TTCN_Logger::log_event_str(", state1 := ");
+single_value->field_state1.log_match(match_value.state1(), legacy);
+TTCN_Logger::log_event_str(", objectID2 := ");
+single_value->field_objectID2.log_match(match_value.objectID2(), legacy);
+TTCN_Logger::log_event_str(", state2 := ");
+single_value->field_state2.log_match(match_value.state2(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 VTOnUserLayoutHideShowReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectID1.encode_text(text_buf);
+single_value->field_state1.encode_text(text_buf);
+single_value->field_objectID2.encode_text(text_buf);
+single_value->field_state2.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.VTOnUserLayoutHideShowReq.");
+}
+}
+
+void VTOnUserLayoutHideShowReq_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_vtfunction.decode_text(text_buf);
+single_value->field_objectID1.decode_text(text_buf);
+single_value->field_state1.decode_text(text_buf);
+single_value->field_objectID2.decode_text(text_buf);
+single_value->field_state2.decode_text(text_buf);
+single_value->field_reserved8.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 VTOnUserLayoutHideShowReq_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 @IsobusVTMessageTypes.VTOnUserLayoutHideShowReq.");
+}
+}
+
+void VTOnUserLayoutHideShowReq_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: {
+    VTOnUserLayoutHideShowReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.VTOnUserLayoutHideShowReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID1().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) state1().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) objectID2().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) state2().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID1")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID1().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(), "state1")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          state1().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(), "objectID2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID2().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(), "state2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          state2().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.VTOnUserLayoutHideShowReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.VTOnUserLayoutHideShowReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void VTOnUserLayoutHideShowReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTOnUserLayoutHideShowReq");
+single_value->field_objectID1.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTOnUserLayoutHideShowReq");
+single_value->field_state1.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTOnUserLayoutHideShowReq");
+single_value->field_objectID2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTOnUserLayoutHideShowReq");
+single_value->field_state2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTOnUserLayoutHideShowReq");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTOnUserLayoutHideShowReq");
+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 : "@IsobusVTMessageTypes.VTOnUserLayoutHideShowReq");
+}
+
+boolean VTOnUserLayoutHideShowReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean VTOnUserLayoutHideShowReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+VTOnUserLayoutHideShowRes::VTOnUserLayoutHideShowRes()
+{
+}
+
+VTOnUserLayoutHideShowRes::VTOnUserLayoutHideShowRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID1,
+    const e__VTOnUserLayoutHideShow__state& par_state1,
+    const INTEGER& par_objectID2,
+    const e__VTOnUserLayoutHideShow__state& par_state2,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_objectID1(par_objectID1),
+  field_state1(par_state1),
+  field_objectID2(par_objectID2),
+  field_state2(par_state2),
+  field_reserved8(par_reserved8)
+{
+}
+
+VTOnUserLayoutHideShowRes::VTOnUserLayoutHideShowRes(const VTOnUserLayoutHideShowRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.VTOnUserLayoutHideShowRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectID1().is_bound()) field_objectID1 = other_value.objectID1();
+else field_objectID1.clean_up();
+if (other_value.state1().is_bound()) field_state1 = other_value.state1();
+else field_state1.clean_up();
+if (other_value.objectID2().is_bound()) field_objectID2 = other_value.objectID2();
+else field_objectID2.clean_up();
+if (other_value.state2().is_bound()) field_state2 = other_value.state2();
+else field_state2.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void VTOnUserLayoutHideShowRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectID1.clean_up();
+field_state1.clean_up();
+field_objectID2.clean_up();
+field_state2.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* VTOnUserLayoutHideShowRes::get_descriptor() const { return &VTOnUserLayoutHideShowRes_descr_; }
+VTOnUserLayoutHideShowRes& VTOnUserLayoutHideShowRes::operator=(const VTOnUserLayoutHideShowRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.VTOnUserLayoutHideShowRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectID1().is_bound()) field_objectID1 = other_value.objectID1();
+  else field_objectID1.clean_up();
+  if (other_value.state1().is_bound()) field_state1 = other_value.state1();
+  else field_state1.clean_up();
+  if (other_value.objectID2().is_bound()) field_objectID2 = other_value.objectID2();
+  else field_objectID2.clean_up();
+  if (other_value.state2().is_bound()) field_state2 = other_value.state2();
+  else field_state2.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean VTOnUserLayoutHideShowRes::operator==(const VTOnUserLayoutHideShowRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectID1==other_value.field_objectID1
+  && field_state1==other_value.field_state1
+  && field_objectID2==other_value.field_objectID2
+  && field_state2==other_value.field_state2
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean VTOnUserLayoutHideShowRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectID1.is_bound())
+  || (field_state1.is_bound())
+  || (field_objectID2.is_bound())
+  || (field_state2.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean VTOnUserLayoutHideShowRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectID1.is_value()
+  && field_state1.is_value()
+  && field_objectID2.is_value()
+  && field_state2.is_value()
+  && field_reserved8.is_value();
+}
+void VTOnUserLayoutHideShowRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID1 := ");
+field_objectID1.log();
+TTCN_Logger::log_event_str(", state1 := ");
+field_state1.log();
+TTCN_Logger::log_event_str(", objectID2 := ");
+field_objectID2.log();
+TTCN_Logger::log_event_str(", state2 := ");
+field_state2.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void VTOnUserLayoutHideShowRes::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 @IsobusVTMessageTypes.VTOnUserLayoutHideShowRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID1().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) state1().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) objectID2().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) state2().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID1")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID1().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(), "state1")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          state1().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(), "objectID2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID2().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(), "state2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          state2().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.VTOnUserLayoutHideShowRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.VTOnUserLayoutHideShowRes");
+  }
+}
+
+void VTOnUserLayoutHideShowRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectID1().is_bound()) objectID1().set_implicit_omit();
+if (state1().is_bound()) state1().set_implicit_omit();
+if (objectID2().is_bound()) objectID2().set_implicit_omit();
+if (state2().is_bound()) state2().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void VTOnUserLayoutHideShowRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectID1.encode_text(text_buf);
+field_state1.encode_text(text_buf);
+field_objectID2.encode_text(text_buf);
+field_state2.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void VTOnUserLayoutHideShowRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectID1.decode_text(text_buf);
+field_state1.decode_text(text_buf);
+field_objectID2.decode_text(text_buf);
+field_state2.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void VTOnUserLayoutHideShowRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void VTOnUserLayoutHideShowRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int VTOnUserLayoutHideShowRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectID1.RAW_decode(ValidObjectID_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, e__VTOnUserLayoutHideShow__state_descr_.raw->forceomit);
+  decoded_field_length = field_state1.RAW_decode(e__VTOnUserLayoutHideShow__state_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, AnyObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectID2.RAW_decode(AnyObjectID_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, e__VTOnUserLayoutHideShow__state_descr_.raw->forceomit);
+  decoded_field_length = field_state2.RAW_decode(e__VTOnUserLayoutHideShow__state_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, VTOnUserLayoutHideShowRes_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(VTOnUserLayoutHideShowRes_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int VTOnUserLayoutHideShowRes::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, e__VTOnUserLayoutHideShow__state_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, AnyObjectID_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, e__VTOnUserLayoutHideShow__state_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, VTOnUserLayoutHideShowRes_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectID1.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_state1.RAW_encode(e__VTOnUserLayoutHideShow__state_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_objectID2.RAW_encode(AnyObjectID_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_state2.RAW_encode(e__VTOnUserLayoutHideShow__state_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved8.RAW_encode(VTOnUserLayoutHideShowRes_reserved8_descr_, *myleaf.body.node.nodes[5]);
+  return myleaf.length = encoded_length;
+}
+
+struct VTOnUserLayoutHideShowRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectID1;
+e__VTOnUserLayoutHideShow__state_template field_state1;
+INTEGER_template field_objectID2;
+e__VTOnUserLayoutHideShow__state_template field_state2;
+OCTETSTRING_template field_reserved8;
+};
+
+void VTOnUserLayoutHideShowRes_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_vtfunction = ANY_VALUE;
+single_value->field_objectID1 = ANY_VALUE;
+single_value->field_state1 = ANY_VALUE;
+single_value->field_objectID2 = ANY_VALUE;
+single_value->field_state2 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void VTOnUserLayoutHideShowRes_template::copy_value(const VTOnUserLayoutHideShowRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectID1().is_bound()) {
+  single_value->field_objectID1 = other_value.objectID1();
+} else {
+  single_value->field_objectID1.clean_up();
+}
+if (other_value.state1().is_bound()) {
+  single_value->field_state1 = other_value.state1();
+} else {
+  single_value->field_state1.clean_up();
+}
+if (other_value.objectID2().is_bound()) {
+  single_value->field_objectID2 = other_value.objectID2();
+} else {
+  single_value->field_objectID2.clean_up();
+}
+if (other_value.state2().is_bound()) {
+  single_value->field_state2 = other_value.state2();
+} else {
+  single_value->field_state2.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void VTOnUserLayoutHideShowRes_template::copy_template(const VTOnUserLayoutHideShowRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectID1().get_selection()) {
+single_value->field_objectID1 = other_value.objectID1();
+} else {
+single_value->field_objectID1.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.state1().get_selection()) {
+single_value->field_state1 = other_value.state1();
+} else {
+single_value->field_state1.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectID2().get_selection()) {
+single_value->field_objectID2 = other_value.objectID2();
+} else {
+single_value->field_objectID2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.state2().get_selection()) {
+single_value->field_state2 = other_value.state2();
+} else {
+single_value->field_state2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new VTOnUserLayoutHideShowRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTOnUserLayoutHideShowRes.");
+break;
+}
+set_selection(other_value);
+}
+
+VTOnUserLayoutHideShowRes_template::VTOnUserLayoutHideShowRes_template()
+{
+}
+
+VTOnUserLayoutHideShowRes_template::VTOnUserLayoutHideShowRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+VTOnUserLayoutHideShowRes_template::VTOnUserLayoutHideShowRes_template(const VTOnUserLayoutHideShowRes& other_value)
+{
+copy_value(other_value);
+}
+
+VTOnUserLayoutHideShowRes_template::VTOnUserLayoutHideShowRes_template(const OPTIONAL<VTOnUserLayoutHideShowRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTOnUserLayoutHideShowRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.VTOnUserLayoutHideShowRes from an unbound optional field.");
+}
+}
+
+VTOnUserLayoutHideShowRes_template::VTOnUserLayoutHideShowRes_template(const VTOnUserLayoutHideShowRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+VTOnUserLayoutHideShowRes_template::~VTOnUserLayoutHideShowRes_template()
+{
+clean_up();
+}
+
+VTOnUserLayoutHideShowRes_template& VTOnUserLayoutHideShowRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+VTOnUserLayoutHideShowRes_template& VTOnUserLayoutHideShowRes_template::operator=(const VTOnUserLayoutHideShowRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+VTOnUserLayoutHideShowRes_template& VTOnUserLayoutHideShowRes_template::operator=(const OPTIONAL<VTOnUserLayoutHideShowRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTOnUserLayoutHideShowRes&)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 @IsobusVTMessageTypes.VTOnUserLayoutHideShowRes.");
+}
+return *this;
+}
+
+VTOnUserLayoutHideShowRes_template& VTOnUserLayoutHideShowRes_template::operator=(const VTOnUserLayoutHideShowRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean VTOnUserLayoutHideShowRes_template::match(const VTOnUserLayoutHideShowRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectID1().is_bound()) return FALSE;
+if(!single_value->field_objectID1.match(other_value.objectID1(), legacy))return FALSE;
+if(!other_value.state1().is_bound()) return FALSE;
+if(!single_value->field_state1.match(other_value.state1(), legacy))return FALSE;
+if(!other_value.objectID2().is_bound()) return FALSE;
+if(!single_value->field_objectID2.match(other_value.objectID2(), legacy))return FALSE;
+if(!other_value.state2().is_bound()) return FALSE;
+if(!single_value->field_state2.match(other_value.state2(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTOnUserLayoutHideShowRes.");
+}
+return FALSE;
+}
+
+boolean VTOnUserLayoutHideShowRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectID1.is_bound()
+
+ ||single_value->field_state1.is_bound()
+
+ ||single_value->field_objectID2.is_bound()
+
+ ||single_value->field_state2.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean VTOnUserLayoutHideShowRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectID1.is_value()
+ &&single_value->field_state1.is_value()
+ &&single_value->field_objectID2.is_value()
+ &&single_value->field_state2.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void VTOnUserLayoutHideShowRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+VTOnUserLayoutHideShowRes VTOnUserLayoutHideShowRes_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 @IsobusVTMessageTypes.VTOnUserLayoutHideShowRes.");
+VTOnUserLayoutHideShowRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectID1.is_bound()) {
+ret_val.objectID1() = single_value->field_objectID1.valueof();
+}
+if (single_value->field_state1.is_bound()) {
+ret_val.state1() = single_value->field_state1.valueof();
+}
+if (single_value->field_objectID2.is_bound()) {
+ret_val.objectID2() = single_value->field_objectID2.valueof();
+}
+if (single_value->field_state2.is_bound()) {
+ret_val.state2() = single_value->field_state2.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void VTOnUserLayoutHideShowRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.VTOnUserLayoutHideShowRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new VTOnUserLayoutHideShowRes_template[list_length];
+}
+
+VTOnUserLayoutHideShowRes_template& VTOnUserLayoutHideShowRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.VTOnUserLayoutHideShowRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.VTOnUserLayoutHideShowRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& VTOnUserLayoutHideShowRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& VTOnUserLayoutHideShowRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.VTOnUserLayoutHideShowRes.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& VTOnUserLayoutHideShowRes_template::objectID1()
+{
+set_specific();
+return single_value->field_objectID1;
+}
+
+const INTEGER_template& VTOnUserLayoutHideShowRes_template::objectID1() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectID1 of a non-specific template of type @IsobusVTMessageTypes.VTOnUserLayoutHideShowRes.");
+return single_value->field_objectID1;
+}
+
+e__VTOnUserLayoutHideShow__state_template& VTOnUserLayoutHideShowRes_template::state1()
+{
+set_specific();
+return single_value->field_state1;
+}
+
+const e__VTOnUserLayoutHideShow__state_template& VTOnUserLayoutHideShowRes_template::state1() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field state1 of a non-specific template of type @IsobusVTMessageTypes.VTOnUserLayoutHideShowRes.");
+return single_value->field_state1;
+}
+
+INTEGER_template& VTOnUserLayoutHideShowRes_template::objectID2()
+{
+set_specific();
+return single_value->field_objectID2;
+}
+
+const INTEGER_template& VTOnUserLayoutHideShowRes_template::objectID2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectID2 of a non-specific template of type @IsobusVTMessageTypes.VTOnUserLayoutHideShowRes.");
+return single_value->field_objectID2;
+}
+
+e__VTOnUserLayoutHideShow__state_template& VTOnUserLayoutHideShowRes_template::state2()
+{
+set_specific();
+return single_value->field_state2;
+}
+
+const e__VTOnUserLayoutHideShow__state_template& VTOnUserLayoutHideShowRes_template::state2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field state2 of a non-specific template of type @IsobusVTMessageTypes.VTOnUserLayoutHideShowRes.");
+return single_value->field_state2;
+}
+
+OCTETSTRING_template& VTOnUserLayoutHideShowRes_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& VTOnUserLayoutHideShowRes_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.VTOnUserLayoutHideShowRes.");
+return single_value->field_reserved8;
+}
+
+int VTOnUserLayoutHideShowRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTOnUserLayoutHideShowRes 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 @IsobusVTMessageTypes.VTOnUserLayoutHideShowRes 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 @IsobusVTMessageTypes.VTOnUserLayoutHideShowRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTOnUserLayoutHideShowRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTOnUserLayoutHideShowRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTOnUserLayoutHideShowRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTOnUserLayoutHideShowRes.");
+  }
+  return 0;
+}
+
+void VTOnUserLayoutHideShowRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID1 := ");
+single_value->field_objectID1.log();
+TTCN_Logger::log_event_str(", state1 := ");
+single_value->field_state1.log();
+TTCN_Logger::log_event_str(", objectID2 := ");
+single_value->field_objectID2.log();
+TTCN_Logger::log_event_str(", state2 := ");
+single_value->field_state2.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void VTOnUserLayoutHideShowRes_template::log_match(const VTOnUserLayoutHideShowRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectID1.match(match_value.objectID1(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectID1");
+single_value->field_objectID1.log_match(match_value.objectID1(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_state1.match(match_value.state1(), legacy)){
+TTCN_Logger::log_logmatch_info(".state1");
+single_value->field_state1.log_match(match_value.state1(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectID2.match(match_value.objectID2(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectID2");
+single_value->field_objectID2.log_match(match_value.objectID2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_state2.match(match_value.state2(), legacy)){
+TTCN_Logger::log_logmatch_info(".state2");
+single_value->field_state2.log_match(match_value.state2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectID1 := ");
+single_value->field_objectID1.log_match(match_value.objectID1(), legacy);
+TTCN_Logger::log_event_str(", state1 := ");
+single_value->field_state1.log_match(match_value.state1(), legacy);
+TTCN_Logger::log_event_str(", objectID2 := ");
+single_value->field_objectID2.log_match(match_value.objectID2(), legacy);
+TTCN_Logger::log_event_str(", state2 := ");
+single_value->field_state2.log_match(match_value.state2(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 VTOnUserLayoutHideShowRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectID1.encode_text(text_buf);
+single_value->field_state1.encode_text(text_buf);
+single_value->field_objectID2.encode_text(text_buf);
+single_value->field_state2.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.VTOnUserLayoutHideShowRes.");
+}
+}
+
+void VTOnUserLayoutHideShowRes_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_vtfunction.decode_text(text_buf);
+single_value->field_objectID1.decode_text(text_buf);
+single_value->field_state1.decode_text(text_buf);
+single_value->field_objectID2.decode_text(text_buf);
+single_value->field_state2.decode_text(text_buf);
+single_value->field_reserved8.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 VTOnUserLayoutHideShowRes_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 @IsobusVTMessageTypes.VTOnUserLayoutHideShowRes.");
+}
+}
+
+void VTOnUserLayoutHideShowRes_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: {
+    VTOnUserLayoutHideShowRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.VTOnUserLayoutHideShowRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID1().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) state1().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) objectID2().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) state2().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID1")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID1().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(), "state1")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          state1().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(), "objectID2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID2().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(), "state2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          state2().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.VTOnUserLayoutHideShowRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.VTOnUserLayoutHideShowRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void VTOnUserLayoutHideShowRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTOnUserLayoutHideShowRes");
+single_value->field_objectID1.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTOnUserLayoutHideShowRes");
+single_value->field_state1.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTOnUserLayoutHideShowRes");
+single_value->field_objectID2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTOnUserLayoutHideShowRes");
+single_value->field_state2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTOnUserLayoutHideShowRes");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTOnUserLayoutHideShowRes");
+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 : "@IsobusVTMessageTypes.VTOnUserLayoutHideShowRes");
+}
+
+boolean VTOnUserLayoutHideShowRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean VTOnUserLayoutHideShowRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+VTControlAudioSignalTerminationParameterTerminationCause::VTControlAudioSignalTerminationParameterTerminationCause()
+{
+}
+
+VTControlAudioSignalTerminationParameterTerminationCause::VTControlAudioSignalTerminationParameterTerminationCause(const BOOLEAN& par_AudioWasTerminated,
+    const BOOLEAN& par_reserved1,
+    const BOOLEAN& par_reserved2,
+    const BOOLEAN& par_reserved3,
+    const BOOLEAN& par_reserved4,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7)
+  :   field_AudioWasTerminated(par_AudioWasTerminated),
+  field_reserved1(par_reserved1),
+  field_reserved2(par_reserved2),
+  field_reserved3(par_reserved3),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7)
+{
+}
+
+VTControlAudioSignalTerminationParameterTerminationCause::VTControlAudioSignalTerminationParameterTerminationCause(const VTControlAudioSignalTerminationParameterTerminationCause& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause.");
+if (other_value.AudioWasTerminated().is_bound()) field_AudioWasTerminated = other_value.AudioWasTerminated();
+else field_AudioWasTerminated.clean_up();
+if (other_value.reserved1().is_bound()) field_reserved1 = other_value.reserved1();
+else field_reserved1.clean_up();
+if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+else field_reserved2.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+}
+
+void VTControlAudioSignalTerminationParameterTerminationCause::clean_up()
+{
+field_AudioWasTerminated.clean_up();
+field_reserved1.clean_up();
+field_reserved2.clean_up();
+field_reserved3.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+}
+
+const TTCN_Typedescriptor_t* VTControlAudioSignalTerminationParameterTerminationCause::get_descriptor() const { return &VTControlAudioSignalTerminationParameterTerminationCause_descr_; }
+VTControlAudioSignalTerminationParameterTerminationCause& VTControlAudioSignalTerminationParameterTerminationCause::operator=(const VTControlAudioSignalTerminationParameterTerminationCause& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause.");
+  if (other_value.AudioWasTerminated().is_bound()) field_AudioWasTerminated = other_value.AudioWasTerminated();
+  else field_AudioWasTerminated.clean_up();
+  if (other_value.reserved1().is_bound()) field_reserved1 = other_value.reserved1();
+  else field_reserved1.clean_up();
+  if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+  else field_reserved2.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+}
+return *this;
+}
+
+boolean VTControlAudioSignalTerminationParameterTerminationCause::operator==(const VTControlAudioSignalTerminationParameterTerminationCause& other_value) const
+{
+return field_AudioWasTerminated==other_value.field_AudioWasTerminated
+  && field_reserved1==other_value.field_reserved1
+  && field_reserved2==other_value.field_reserved2
+  && field_reserved3==other_value.field_reserved3
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7;
+}
+
+boolean VTControlAudioSignalTerminationParameterTerminationCause::is_bound() const
+{
+return (field_AudioWasTerminated.is_bound())
+  || (field_reserved1.is_bound())
+  || (field_reserved2.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound());
+}
+boolean VTControlAudioSignalTerminationParameterTerminationCause::is_value() const
+{
+return field_AudioWasTerminated.is_value()
+  && field_reserved1.is_value()
+  && field_reserved2.is_value()
+  && field_reserved3.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value();
+}
+void VTControlAudioSignalTerminationParameterTerminationCause::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ AudioWasTerminated := ");
+field_AudioWasTerminated.log();
+TTCN_Logger::log_event_str(", reserved1 := ");
+field_reserved1.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void VTControlAudioSignalTerminationParameterTerminationCause::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause has 8 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) AudioWasTerminated().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved1().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "AudioWasTerminated")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          AudioWasTerminated().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(), "reserved1")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved1().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause");
+  }
+}
+
+void VTControlAudioSignalTerminationParameterTerminationCause::set_implicit_omit()
+{
+if (AudioWasTerminated().is_bound()) AudioWasTerminated().set_implicit_omit();
+if (reserved1().is_bound()) reserved1().set_implicit_omit();
+if (reserved2().is_bound()) reserved2().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+}
+
+void VTControlAudioSignalTerminationParameterTerminationCause::encode_text(Text_Buf& text_buf) const
+{
+field_AudioWasTerminated.encode_text(text_buf);
+field_reserved1.encode_text(text_buf);
+field_reserved2.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+}
+
+void VTControlAudioSignalTerminationParameterTerminationCause::decode_text(Text_Buf& text_buf)
+{
+field_AudioWasTerminated.decode_text(text_buf);
+field_reserved1.decode_text(text_buf);
+field_reserved2.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+}
+
+void VTControlAudioSignalTerminationParameterTerminationCause::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void VTControlAudioSignalTerminationParameterTerminationCause::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int VTControlAudioSignalTerminationParameterTerminationCause::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_AudioWasTerminated.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved1.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved2.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int VTControlAudioSignalTerminationParameterTerminationCause::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_AudioWasTerminated.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved1.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved2.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved3.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved4.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved5.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved6.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved7.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct VTControlAudioSignalTerminationParameterTerminationCause_template::single_value_struct {
+BOOLEAN_template field_AudioWasTerminated;
+BOOLEAN_template field_reserved1;
+BOOLEAN_template field_reserved2;
+BOOLEAN_template field_reserved3;
+BOOLEAN_template field_reserved4;
+BOOLEAN_template field_reserved5;
+BOOLEAN_template field_reserved6;
+BOOLEAN_template field_reserved7;
+};
+
+void VTControlAudioSignalTerminationParameterTerminationCause_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_AudioWasTerminated = ANY_VALUE;
+single_value->field_reserved1 = ANY_VALUE;
+single_value->field_reserved2 = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+}
+}
+}
+
+void VTControlAudioSignalTerminationParameterTerminationCause_template::copy_value(const VTControlAudioSignalTerminationParameterTerminationCause& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.AudioWasTerminated().is_bound()) {
+  single_value->field_AudioWasTerminated = other_value.AudioWasTerminated();
+} else {
+  single_value->field_AudioWasTerminated.clean_up();
+}
+if (other_value.reserved1().is_bound()) {
+  single_value->field_reserved1 = other_value.reserved1();
+} else {
+  single_value->field_reserved1.clean_up();
+}
+if (other_value.reserved2().is_bound()) {
+  single_value->field_reserved2 = other_value.reserved2();
+} else {
+  single_value->field_reserved2.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void VTControlAudioSignalTerminationParameterTerminationCause_template::copy_template(const VTControlAudioSignalTerminationParameterTerminationCause_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.AudioWasTerminated().get_selection()) {
+single_value->field_AudioWasTerminated = other_value.AudioWasTerminated();
+} else {
+single_value->field_AudioWasTerminated.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved1().get_selection()) {
+single_value->field_reserved1 = other_value.reserved1();
+} else {
+single_value->field_reserved1.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved2().get_selection()) {
+single_value->field_reserved2 = other_value.reserved2();
+} else {
+single_value->field_reserved2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new VTControlAudioSignalTerminationParameterTerminationCause_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause.");
+break;
+}
+set_selection(other_value);
+}
+
+VTControlAudioSignalTerminationParameterTerminationCause_template::VTControlAudioSignalTerminationParameterTerminationCause_template()
+{
+}
+
+VTControlAudioSignalTerminationParameterTerminationCause_template::VTControlAudioSignalTerminationParameterTerminationCause_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+VTControlAudioSignalTerminationParameterTerminationCause_template::VTControlAudioSignalTerminationParameterTerminationCause_template(const VTControlAudioSignalTerminationParameterTerminationCause& other_value)
+{
+copy_value(other_value);
+}
+
+VTControlAudioSignalTerminationParameterTerminationCause_template::VTControlAudioSignalTerminationParameterTerminationCause_template(const OPTIONAL<VTControlAudioSignalTerminationParameterTerminationCause>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTControlAudioSignalTerminationParameterTerminationCause&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause from an unbound optional field.");
+}
+}
+
+VTControlAudioSignalTerminationParameterTerminationCause_template::VTControlAudioSignalTerminationParameterTerminationCause_template(const VTControlAudioSignalTerminationParameterTerminationCause_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+VTControlAudioSignalTerminationParameterTerminationCause_template::~VTControlAudioSignalTerminationParameterTerminationCause_template()
+{
+clean_up();
+}
+
+VTControlAudioSignalTerminationParameterTerminationCause_template& VTControlAudioSignalTerminationParameterTerminationCause_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+VTControlAudioSignalTerminationParameterTerminationCause_template& VTControlAudioSignalTerminationParameterTerminationCause_template::operator=(const VTControlAudioSignalTerminationParameterTerminationCause& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+VTControlAudioSignalTerminationParameterTerminationCause_template& VTControlAudioSignalTerminationParameterTerminationCause_template::operator=(const OPTIONAL<VTControlAudioSignalTerminationParameterTerminationCause>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTControlAudioSignalTerminationParameterTerminationCause&)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 @IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause.");
+}
+return *this;
+}
+
+VTControlAudioSignalTerminationParameterTerminationCause_template& VTControlAudioSignalTerminationParameterTerminationCause_template::operator=(const VTControlAudioSignalTerminationParameterTerminationCause_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean VTControlAudioSignalTerminationParameterTerminationCause_template::match(const VTControlAudioSignalTerminationParameterTerminationCause& 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.AudioWasTerminated().is_bound()) return FALSE;
+if(!single_value->field_AudioWasTerminated.match(other_value.AudioWasTerminated(), legacy))return FALSE;
+if(!other_value.reserved1().is_bound()) return FALSE;
+if(!single_value->field_reserved1.match(other_value.reserved1(), legacy))return FALSE;
+if(!other_value.reserved2().is_bound()) return FALSE;
+if(!single_value->field_reserved2.match(other_value.reserved2(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause.");
+}
+return FALSE;
+}
+
+boolean VTControlAudioSignalTerminationParameterTerminationCause_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_AudioWasTerminated.is_bound()
+
+ ||single_value->field_reserved1.is_bound()
+
+ ||single_value->field_reserved2.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+;
+}
+
+boolean VTControlAudioSignalTerminationParameterTerminationCause_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_AudioWasTerminated.is_value()
+ &&single_value->field_reserved1.is_value()
+ &&single_value->field_reserved2.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value();
+}
+
+void VTControlAudioSignalTerminationParameterTerminationCause_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+VTControlAudioSignalTerminationParameterTerminationCause VTControlAudioSignalTerminationParameterTerminationCause_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 @IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause.");
+VTControlAudioSignalTerminationParameterTerminationCause ret_val;
+if (single_value->field_AudioWasTerminated.is_bound()) {
+ret_val.AudioWasTerminated() = single_value->field_AudioWasTerminated.valueof();
+}
+if (single_value->field_reserved1.is_bound()) {
+ret_val.reserved1() = single_value->field_reserved1.valueof();
+}
+if (single_value->field_reserved2.is_bound()) {
+ret_val.reserved2() = single_value->field_reserved2.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+return ret_val;
+}
+
+void VTControlAudioSignalTerminationParameterTerminationCause_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new VTControlAudioSignalTerminationParameterTerminationCause_template[list_length];
+}
+
+VTControlAudioSignalTerminationParameterTerminationCause_template& VTControlAudioSignalTerminationParameterTerminationCause_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& VTControlAudioSignalTerminationParameterTerminationCause_template::AudioWasTerminated()
+{
+set_specific();
+return single_value->field_AudioWasTerminated;
+}
+
+const BOOLEAN_template& VTControlAudioSignalTerminationParameterTerminationCause_template::AudioWasTerminated() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field AudioWasTerminated of a non-specific template of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause.");
+return single_value->field_AudioWasTerminated;
+}
+
+BOOLEAN_template& VTControlAudioSignalTerminationParameterTerminationCause_template::reserved1()
+{
+set_specific();
+return single_value->field_reserved1;
+}
+
+const BOOLEAN_template& VTControlAudioSignalTerminationParameterTerminationCause_template::reserved1() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved1 of a non-specific template of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause.");
+return single_value->field_reserved1;
+}
+
+BOOLEAN_template& VTControlAudioSignalTerminationParameterTerminationCause_template::reserved2()
+{
+set_specific();
+return single_value->field_reserved2;
+}
+
+const BOOLEAN_template& VTControlAudioSignalTerminationParameterTerminationCause_template::reserved2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved2 of a non-specific template of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause.");
+return single_value->field_reserved2;
+}
+
+BOOLEAN_template& VTControlAudioSignalTerminationParameterTerminationCause_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const BOOLEAN_template& VTControlAudioSignalTerminationParameterTerminationCause_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause.");
+return single_value->field_reserved3;
+}
+
+BOOLEAN_template& VTControlAudioSignalTerminationParameterTerminationCause_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const BOOLEAN_template& VTControlAudioSignalTerminationParameterTerminationCause_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause.");
+return single_value->field_reserved4;
+}
+
+BOOLEAN_template& VTControlAudioSignalTerminationParameterTerminationCause_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const BOOLEAN_template& VTControlAudioSignalTerminationParameterTerminationCause_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause.");
+return single_value->field_reserved5;
+}
+
+BOOLEAN_template& VTControlAudioSignalTerminationParameterTerminationCause_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const BOOLEAN_template& VTControlAudioSignalTerminationParameterTerminationCause_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause.");
+return single_value->field_reserved6;
+}
+
+BOOLEAN_template& VTControlAudioSignalTerminationParameterTerminationCause_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const BOOLEAN_template& VTControlAudioSignalTerminationParameterTerminationCause_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause.");
+return single_value->field_reserved7;
+}
+
+int VTControlAudioSignalTerminationParameterTerminationCause_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause 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 @IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause.");
+  }
+  return 0;
+}
+
+void VTControlAudioSignalTerminationParameterTerminationCause_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ AudioWasTerminated := ");
+single_value->field_AudioWasTerminated.log();
+TTCN_Logger::log_event_str(", reserved1 := ");
+single_value->field_reserved1.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void VTControlAudioSignalTerminationParameterTerminationCause_template::log_match(const VTControlAudioSignalTerminationParameterTerminationCause& 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_AudioWasTerminated.match(match_value.AudioWasTerminated(), legacy)){
+TTCN_Logger::log_logmatch_info(".AudioWasTerminated");
+single_value->field_AudioWasTerminated.log_match(match_value.AudioWasTerminated(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved1.match(match_value.reserved1(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved1");
+single_value->field_reserved1.log_match(match_value.reserved1(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved2.match(match_value.reserved2(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved2");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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("{ AudioWasTerminated := ");
+single_value->field_AudioWasTerminated.log_match(match_value.AudioWasTerminated(), legacy);
+TTCN_Logger::log_event_str(", reserved1 := ");
+single_value->field_reserved1.log_match(match_value.reserved1(), legacy);
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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 VTControlAudioSignalTerminationParameterTerminationCause_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_AudioWasTerminated.encode_text(text_buf);
+single_value->field_reserved1.encode_text(text_buf);
+single_value->field_reserved2.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.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 @IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause.");
+}
+}
+
+void VTControlAudioSignalTerminationParameterTerminationCause_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_AudioWasTerminated.decode_text(text_buf);
+single_value->field_reserved1.decode_text(text_buf);
+single_value->field_reserved2.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.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 VTControlAudioSignalTerminationParameterTerminationCause_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 @IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause.");
+}
+}
+
+void VTControlAudioSignalTerminationParameterTerminationCause_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: {
+    VTControlAudioSignalTerminationParameterTerminationCause_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause has 8 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) AudioWasTerminated().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved1().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "AudioWasTerminated")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          AudioWasTerminated().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(), "reserved1")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved1().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void VTControlAudioSignalTerminationParameterTerminationCause_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_AudioWasTerminated.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause");
+single_value->field_reserved1.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause");
+single_value->field_reserved2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause");
+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 : "@IsobusVTMessageTypes.VTControlAudioSignalTerminationParameterTerminationCause");
+}
+
+boolean VTControlAudioSignalTerminationParameterTerminationCause_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean VTControlAudioSignalTerminationParameterTerminationCause_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+VTControlAudioSignalTerminationInd::VTControlAudioSignalTerminationInd()
+{
+}
+
+VTControlAudioSignalTerminationInd::VTControlAudioSignalTerminationInd(const INTEGER& par_vtfunction,
+    const VTControlAudioSignalTerminationParameterTerminationCause& par_terminationCause,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_terminationCause(par_terminationCause),
+  field_reserved3(par_reserved3),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+VTControlAudioSignalTerminationInd::VTControlAudioSignalTerminationInd(const VTControlAudioSignalTerminationInd& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationInd.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.terminationCause().is_bound()) field_terminationCause = other_value.terminationCause();
+else field_terminationCause.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void VTControlAudioSignalTerminationInd::clean_up()
+{
+field_vtfunction.clean_up();
+field_terminationCause.clean_up();
+field_reserved3.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* VTControlAudioSignalTerminationInd::get_descriptor() const { return &VTControlAudioSignalTerminationInd_descr_; }
+VTControlAudioSignalTerminationInd& VTControlAudioSignalTerminationInd::operator=(const VTControlAudioSignalTerminationInd& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationInd.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.terminationCause().is_bound()) field_terminationCause = other_value.terminationCause();
+  else field_terminationCause.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean VTControlAudioSignalTerminationInd::operator==(const VTControlAudioSignalTerminationInd& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_terminationCause==other_value.field_terminationCause
+  && field_reserved3==other_value.field_reserved3
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean VTControlAudioSignalTerminationInd::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_terminationCause.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean VTControlAudioSignalTerminationInd::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_terminationCause.is_value()
+  && field_reserved3.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void VTControlAudioSignalTerminationInd::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", terminationCause := ");
+field_terminationCause.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void VTControlAudioSignalTerminationInd::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationInd has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) terminationCause().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "terminationCause")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          terminationCause().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.VTControlAudioSignalTerminationInd: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.VTControlAudioSignalTerminationInd");
+  }
+}
+
+void VTControlAudioSignalTerminationInd::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (terminationCause().is_bound()) terminationCause().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void VTControlAudioSignalTerminationInd::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_terminationCause.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void VTControlAudioSignalTerminationInd::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_terminationCause.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void VTControlAudioSignalTerminationInd::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void VTControlAudioSignalTerminationInd::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int VTControlAudioSignalTerminationInd::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, VTControlAudioSignalTerminationParameterTerminationCause_descr_.raw->forceomit);
+  decoded_field_length = field_terminationCause.RAW_decode(VTControlAudioSignalTerminationParameterTerminationCause_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, VTControlAudioSignalTerminationInd_reserved3_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(VTControlAudioSignalTerminationInd_reserved3_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, VTControlAudioSignalTerminationInd_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(VTControlAudioSignalTerminationInd_reserved4_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, VTControlAudioSignalTerminationInd_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(VTControlAudioSignalTerminationInd_reserved5_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, VTControlAudioSignalTerminationInd_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(VTControlAudioSignalTerminationInd_reserved6_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, VTControlAudioSignalTerminationInd_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(VTControlAudioSignalTerminationInd_reserved7_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, VTControlAudioSignalTerminationInd_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(VTControlAudioSignalTerminationInd_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int VTControlAudioSignalTerminationInd::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, VTControlAudioSignalTerminationParameterTerminationCause_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, VTControlAudioSignalTerminationInd_reserved3_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, VTControlAudioSignalTerminationInd_reserved4_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, VTControlAudioSignalTerminationInd_reserved5_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, VTControlAudioSignalTerminationInd_reserved6_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, VTControlAudioSignalTerminationInd_reserved7_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, VTControlAudioSignalTerminationInd_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_terminationCause.RAW_encode(VTControlAudioSignalTerminationParameterTerminationCause_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved3.RAW_encode(VTControlAudioSignalTerminationInd_reserved3_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved4.RAW_encode(VTControlAudioSignalTerminationInd_reserved4_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved5.RAW_encode(VTControlAudioSignalTerminationInd_reserved5_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved6.RAW_encode(VTControlAudioSignalTerminationInd_reserved6_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved7.RAW_encode(VTControlAudioSignalTerminationInd_reserved7_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved8.RAW_encode(VTControlAudioSignalTerminationInd_reserved8_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct VTControlAudioSignalTerminationInd_template::single_value_struct {
+INTEGER_template field_vtfunction;
+VTControlAudioSignalTerminationParameterTerminationCause_template field_terminationCause;
+OCTETSTRING_template field_reserved3;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void VTControlAudioSignalTerminationInd_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_vtfunction = ANY_VALUE;
+single_value->field_terminationCause = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void VTControlAudioSignalTerminationInd_template::copy_value(const VTControlAudioSignalTerminationInd& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.terminationCause().is_bound()) {
+  single_value->field_terminationCause = other_value.terminationCause();
+} else {
+  single_value->field_terminationCause.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void VTControlAudioSignalTerminationInd_template::copy_template(const VTControlAudioSignalTerminationInd_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.terminationCause().get_selection()) {
+single_value->field_terminationCause = other_value.terminationCause();
+} else {
+single_value->field_terminationCause.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new VTControlAudioSignalTerminationInd_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationInd.");
+break;
+}
+set_selection(other_value);
+}
+
+VTControlAudioSignalTerminationInd_template::VTControlAudioSignalTerminationInd_template()
+{
+}
+
+VTControlAudioSignalTerminationInd_template::VTControlAudioSignalTerminationInd_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+VTControlAudioSignalTerminationInd_template::VTControlAudioSignalTerminationInd_template(const VTControlAudioSignalTerminationInd& other_value)
+{
+copy_value(other_value);
+}
+
+VTControlAudioSignalTerminationInd_template::VTControlAudioSignalTerminationInd_template(const OPTIONAL<VTControlAudioSignalTerminationInd>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTControlAudioSignalTerminationInd&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationInd from an unbound optional field.");
+}
+}
+
+VTControlAudioSignalTerminationInd_template::VTControlAudioSignalTerminationInd_template(const VTControlAudioSignalTerminationInd_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+VTControlAudioSignalTerminationInd_template::~VTControlAudioSignalTerminationInd_template()
+{
+clean_up();
+}
+
+VTControlAudioSignalTerminationInd_template& VTControlAudioSignalTerminationInd_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+VTControlAudioSignalTerminationInd_template& VTControlAudioSignalTerminationInd_template::operator=(const VTControlAudioSignalTerminationInd& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+VTControlAudioSignalTerminationInd_template& VTControlAudioSignalTerminationInd_template::operator=(const OPTIONAL<VTControlAudioSignalTerminationInd>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTControlAudioSignalTerminationInd&)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 @IsobusVTMessageTypes.VTControlAudioSignalTerminationInd.");
+}
+return *this;
+}
+
+VTControlAudioSignalTerminationInd_template& VTControlAudioSignalTerminationInd_template::operator=(const VTControlAudioSignalTerminationInd_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean VTControlAudioSignalTerminationInd_template::match(const VTControlAudioSignalTerminationInd& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.terminationCause().is_bound()) return FALSE;
+if(!single_value->field_terminationCause.match(other_value.terminationCause(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationInd.");
+}
+return FALSE;
+}
+
+boolean VTControlAudioSignalTerminationInd_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_terminationCause.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean VTControlAudioSignalTerminationInd_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_terminationCause.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void VTControlAudioSignalTerminationInd_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+VTControlAudioSignalTerminationInd VTControlAudioSignalTerminationInd_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 @IsobusVTMessageTypes.VTControlAudioSignalTerminationInd.");
+VTControlAudioSignalTerminationInd ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_terminationCause.is_bound()) {
+ret_val.terminationCause() = single_value->field_terminationCause.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void VTControlAudioSignalTerminationInd_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationInd.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new VTControlAudioSignalTerminationInd_template[list_length];
+}
+
+VTControlAudioSignalTerminationInd_template& VTControlAudioSignalTerminationInd_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationInd.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationInd.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& VTControlAudioSignalTerminationInd_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& VTControlAudioSignalTerminationInd_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationInd.");
+return single_value->field_vtfunction;
+}
+
+VTControlAudioSignalTerminationParameterTerminationCause_template& VTControlAudioSignalTerminationInd_template::terminationCause()
+{
+set_specific();
+return single_value->field_terminationCause;
+}
+
+const VTControlAudioSignalTerminationParameterTerminationCause_template& VTControlAudioSignalTerminationInd_template::terminationCause() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field terminationCause of a non-specific template of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationInd.");
+return single_value->field_terminationCause;
+}
+
+OCTETSTRING_template& VTControlAudioSignalTerminationInd_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const OCTETSTRING_template& VTControlAudioSignalTerminationInd_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationInd.");
+return single_value->field_reserved3;
+}
+
+OCTETSTRING_template& VTControlAudioSignalTerminationInd_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& VTControlAudioSignalTerminationInd_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationInd.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& VTControlAudioSignalTerminationInd_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& VTControlAudioSignalTerminationInd_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationInd.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& VTControlAudioSignalTerminationInd_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& VTControlAudioSignalTerminationInd_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationInd.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& VTControlAudioSignalTerminationInd_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& VTControlAudioSignalTerminationInd_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationInd.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& VTControlAudioSignalTerminationInd_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& VTControlAudioSignalTerminationInd_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationInd.");
+return single_value->field_reserved8;
+}
+
+int VTControlAudioSignalTerminationInd_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationInd which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationInd 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 @IsobusVTMessageTypes.VTControlAudioSignalTerminationInd containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationInd containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationInd containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationInd containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationInd.");
+  }
+  return 0;
+}
+
+void VTControlAudioSignalTerminationInd_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", terminationCause := ");
+single_value->field_terminationCause.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void VTControlAudioSignalTerminationInd_template::log_match(const VTControlAudioSignalTerminationInd& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_terminationCause.match(match_value.terminationCause(), legacy)){
+TTCN_Logger::log_logmatch_info(".terminationCause");
+single_value->field_terminationCause.log_match(match_value.terminationCause(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", terminationCause := ");
+single_value->field_terminationCause.log_match(match_value.terminationCause(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 VTControlAudioSignalTerminationInd_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_terminationCause.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.VTControlAudioSignalTerminationInd.");
+}
+}
+
+void VTControlAudioSignalTerminationInd_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_vtfunction.decode_text(text_buf);
+single_value->field_terminationCause.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 VTControlAudioSignalTerminationInd_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 @IsobusVTMessageTypes.VTControlAudioSignalTerminationInd.");
+}
+}
+
+void VTControlAudioSignalTerminationInd_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: {
+    VTControlAudioSignalTerminationInd_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.VTControlAudioSignalTerminationInd has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) terminationCause().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "terminationCause")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          terminationCause().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.VTControlAudioSignalTerminationInd: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.VTControlAudioSignalTerminationInd");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void VTControlAudioSignalTerminationInd_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTControlAudioSignalTerminationInd");
+single_value->field_terminationCause.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTControlAudioSignalTerminationInd");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTControlAudioSignalTerminationInd");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTControlAudioSignalTerminationInd");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTControlAudioSignalTerminationInd");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTControlAudioSignalTerminationInd");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTControlAudioSignalTerminationInd");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTControlAudioSignalTerminationInd");
+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 : "@IsobusVTMessageTypes.VTControlAudioSignalTerminationInd");
+}
+
+boolean VTControlAudioSignalTerminationInd_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean VTControlAudioSignalTerminationInd_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ObjectPoolTransferInd::ObjectPoolTransferInd()
+{
+}
+
+ObjectPoolTransferInd::ObjectPoolTransferInd(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_objectPoolRecords)
+  :   field_vtfunction(par_vtfunction),
+  field_objectPoolRecords(par_objectPoolRecords)
+{
+}
+
+ObjectPoolTransferInd::ObjectPoolTransferInd(const ObjectPoolTransferInd& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ObjectPoolTransferInd.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectPoolRecords().is_bound()) field_objectPoolRecords = other_value.objectPoolRecords();
+else field_objectPoolRecords.clean_up();
+}
+
+void ObjectPoolTransferInd::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectPoolRecords.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ObjectPoolTransferInd::get_descriptor() const { return &ObjectPoolTransferInd_descr_; }
+ObjectPoolTransferInd& ObjectPoolTransferInd::operator=(const ObjectPoolTransferInd& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ObjectPoolTransferInd.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectPoolRecords().is_bound()) field_objectPoolRecords = other_value.objectPoolRecords();
+  else field_objectPoolRecords.clean_up();
+}
+return *this;
+}
+
+boolean ObjectPoolTransferInd::operator==(const ObjectPoolTransferInd& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectPoolRecords==other_value.field_objectPoolRecords;
+}
+
+boolean ObjectPoolTransferInd::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectPoolRecords.is_bound());
+}
+boolean ObjectPoolTransferInd::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectPoolRecords.is_value();
+}
+void ObjectPoolTransferInd::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectPoolRecords := ");
+field_objectPoolRecords.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ObjectPoolTransferInd::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 @IsobusVTMessageTypes.ObjectPoolTransferInd 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectPoolRecords().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectPoolRecords")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectPoolRecords().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 @IsobusVTMessageTypes.ObjectPoolTransferInd: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ObjectPoolTransferInd");
+  }
+}
+
+void ObjectPoolTransferInd::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectPoolRecords().is_bound()) objectPoolRecords().set_implicit_omit();
+}
+
+void ObjectPoolTransferInd::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectPoolRecords.encode_text(text_buf);
+}
+
+void ObjectPoolTransferInd::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectPoolRecords.decode_text(text_buf);
+}
+
+void ObjectPoolTransferInd::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ObjectPoolTransferInd::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ObjectPoolTransferInd::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ObjectPoolRecords_descr_.raw->forceomit);
+  decoded_field_length = field_objectPoolRecords.RAW_decode(ObjectPoolRecords_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 ObjectPoolTransferInd::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ObjectPoolRecords_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectPoolRecords.RAW_encode(ObjectPoolRecords_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct ObjectPoolTransferInd_template::single_value_struct {
+INTEGER_template field_vtfunction;
+OCTETSTRING_template field_objectPoolRecords;
+};
+
+void ObjectPoolTransferInd_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_vtfunction = ANY_VALUE;
+single_value->field_objectPoolRecords = ANY_VALUE;
+}
+}
+}
+
+void ObjectPoolTransferInd_template::copy_value(const ObjectPoolTransferInd& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectPoolRecords().is_bound()) {
+  single_value->field_objectPoolRecords = other_value.objectPoolRecords();
+} else {
+  single_value->field_objectPoolRecords.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ObjectPoolTransferInd_template::copy_template(const ObjectPoolTransferInd_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectPoolRecords().get_selection()) {
+single_value->field_objectPoolRecords = other_value.objectPoolRecords();
+} else {
+single_value->field_objectPoolRecords.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ObjectPoolTransferInd_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ObjectPoolTransferInd.");
+break;
+}
+set_selection(other_value);
+}
+
+ObjectPoolTransferInd_template::ObjectPoolTransferInd_template()
+{
+}
+
+ObjectPoolTransferInd_template::ObjectPoolTransferInd_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ObjectPoolTransferInd_template::ObjectPoolTransferInd_template(const ObjectPoolTransferInd& other_value)
+{
+copy_value(other_value);
+}
+
+ObjectPoolTransferInd_template::ObjectPoolTransferInd_template(const OPTIONAL<ObjectPoolTransferInd>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ObjectPoolTransferInd&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ObjectPoolTransferInd from an unbound optional field.");
+}
+}
+
+ObjectPoolTransferInd_template::ObjectPoolTransferInd_template(const ObjectPoolTransferInd_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ObjectPoolTransferInd_template::~ObjectPoolTransferInd_template()
+{
+clean_up();
+}
+
+ObjectPoolTransferInd_template& ObjectPoolTransferInd_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ObjectPoolTransferInd_template& ObjectPoolTransferInd_template::operator=(const ObjectPoolTransferInd& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ObjectPoolTransferInd_template& ObjectPoolTransferInd_template::operator=(const OPTIONAL<ObjectPoolTransferInd>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ObjectPoolTransferInd&)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 @IsobusVTMessageTypes.ObjectPoolTransferInd.");
+}
+return *this;
+}
+
+ObjectPoolTransferInd_template& ObjectPoolTransferInd_template::operator=(const ObjectPoolTransferInd_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ObjectPoolTransferInd_template::match(const ObjectPoolTransferInd& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectPoolRecords().is_bound()) return FALSE;
+if(!single_value->field_objectPoolRecords.match(other_value.objectPoolRecords(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ObjectPoolTransferInd.");
+}
+return FALSE;
+}
+
+boolean ObjectPoolTransferInd_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectPoolRecords.is_bound()
+;
+}
+
+boolean ObjectPoolTransferInd_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectPoolRecords.is_value();
+}
+
+void ObjectPoolTransferInd_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ObjectPoolTransferInd ObjectPoolTransferInd_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 @IsobusVTMessageTypes.ObjectPoolTransferInd.");
+ObjectPoolTransferInd ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectPoolRecords.is_bound()) {
+ret_val.objectPoolRecords() = single_value->field_objectPoolRecords.valueof();
+}
+return ret_val;
+}
+
+void ObjectPoolTransferInd_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ObjectPoolTransferInd.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ObjectPoolTransferInd_template[list_length];
+}
+
+ObjectPoolTransferInd_template& ObjectPoolTransferInd_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ObjectPoolTransferInd.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ObjectPoolTransferInd.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ObjectPoolTransferInd_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ObjectPoolTransferInd_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ObjectPoolTransferInd.");
+return single_value->field_vtfunction;
+}
+
+OCTETSTRING_template& ObjectPoolTransferInd_template::objectPoolRecords()
+{
+set_specific();
+return single_value->field_objectPoolRecords;
+}
+
+const OCTETSTRING_template& ObjectPoolTransferInd_template::objectPoolRecords() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectPoolRecords of a non-specific template of type @IsobusVTMessageTypes.ObjectPoolTransferInd.");
+return single_value->field_objectPoolRecords;
+}
+
+int ObjectPoolTransferInd_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ObjectPoolTransferInd 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 @IsobusVTMessageTypes.ObjectPoolTransferInd 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 @IsobusVTMessageTypes.ObjectPoolTransferInd containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ObjectPoolTransferInd containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ObjectPoolTransferInd containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ObjectPoolTransferInd containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ObjectPoolTransferInd.");
+  }
+  return 0;
+}
+
+void ObjectPoolTransferInd_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectPoolRecords := ");
+single_value->field_objectPoolRecords.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ObjectPoolTransferInd_template::log_match(const ObjectPoolTransferInd& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectPoolRecords.match(match_value.objectPoolRecords(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectPoolRecords");
+single_value->field_objectPoolRecords.log_match(match_value.objectPoolRecords(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectPoolRecords := ");
+single_value->field_objectPoolRecords.log_match(match_value.objectPoolRecords(), 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 ObjectPoolTransferInd_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectPoolRecords.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 @IsobusVTMessageTypes.ObjectPoolTransferInd.");
+}
+}
+
+void ObjectPoolTransferInd_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_vtfunction.decode_text(text_buf);
+single_value->field_objectPoolRecords.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 ObjectPoolTransferInd_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 @IsobusVTMessageTypes.ObjectPoolTransferInd.");
+}
+}
+
+void ObjectPoolTransferInd_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: {
+    ObjectPoolTransferInd_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.ObjectPoolTransferInd 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectPoolRecords().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectPoolRecords")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectPoolRecords().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 @IsobusVTMessageTypes.ObjectPoolTransferInd: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ObjectPoolTransferInd");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ObjectPoolTransferInd_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ObjectPoolTransferInd");
+single_value->field_objectPoolRecords.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ObjectPoolTransferInd");
+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 : "@IsobusVTMessageTypes.ObjectPoolTransferInd");
+}
+
+boolean ObjectPoolTransferInd_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ObjectPoolTransferInd_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+EndOfObjectPoolReq::EndOfObjectPoolReq()
+{
+}
+
+EndOfObjectPoolReq::EndOfObjectPoolReq(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_reserved2,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_reserved2(par_reserved2),
+  field_reserved3(par_reserved3),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+EndOfObjectPoolReq::EndOfObjectPoolReq(const EndOfObjectPoolReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.EndOfObjectPoolReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+else field_reserved2.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void EndOfObjectPoolReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_reserved2.clean_up();
+field_reserved3.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* EndOfObjectPoolReq::get_descriptor() const { return &EndOfObjectPoolReq_descr_; }
+EndOfObjectPoolReq& EndOfObjectPoolReq::operator=(const EndOfObjectPoolReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.EndOfObjectPoolReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+  else field_reserved2.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean EndOfObjectPoolReq::operator==(const EndOfObjectPoolReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_reserved2==other_value.field_reserved2
+  && field_reserved3==other_value.field_reserved3
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean EndOfObjectPoolReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_reserved2.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean EndOfObjectPoolReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_reserved2.is_value()
+  && field_reserved3.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void EndOfObjectPoolReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void EndOfObjectPoolReq::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.EndOfObjectPoolReq has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.EndOfObjectPoolReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.EndOfObjectPoolReq");
+  }
+}
+
+void EndOfObjectPoolReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (reserved2().is_bound()) reserved2().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void EndOfObjectPoolReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_reserved2.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void EndOfObjectPoolReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_reserved2.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void EndOfObjectPoolReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void EndOfObjectPoolReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int EndOfObjectPoolReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, EndOfObjectPoolReq_reserved2_descr_.raw->forceomit);
+  decoded_field_length = field_reserved2.RAW_decode(EndOfObjectPoolReq_reserved2_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, EndOfObjectPoolReq_reserved3_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(EndOfObjectPoolReq_reserved3_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, EndOfObjectPoolReq_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(EndOfObjectPoolReq_reserved4_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, EndOfObjectPoolReq_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(EndOfObjectPoolReq_reserved5_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, EndOfObjectPoolReq_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(EndOfObjectPoolReq_reserved6_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, EndOfObjectPoolReq_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(EndOfObjectPoolReq_reserved7_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, EndOfObjectPoolReq_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(EndOfObjectPoolReq_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int EndOfObjectPoolReq::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, EndOfObjectPoolReq_reserved2_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, EndOfObjectPoolReq_reserved3_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, EndOfObjectPoolReq_reserved4_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, EndOfObjectPoolReq_reserved5_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, EndOfObjectPoolReq_reserved6_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, EndOfObjectPoolReq_reserved7_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, EndOfObjectPoolReq_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved2.RAW_encode(EndOfObjectPoolReq_reserved2_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved3.RAW_encode(EndOfObjectPoolReq_reserved3_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved4.RAW_encode(EndOfObjectPoolReq_reserved4_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved5.RAW_encode(EndOfObjectPoolReq_reserved5_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved6.RAW_encode(EndOfObjectPoolReq_reserved6_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved7.RAW_encode(EndOfObjectPoolReq_reserved7_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved8.RAW_encode(EndOfObjectPoolReq_reserved8_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct EndOfObjectPoolReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+OCTETSTRING_template field_reserved2;
+OCTETSTRING_template field_reserved3;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void EndOfObjectPoolReq_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_vtfunction = ANY_VALUE;
+single_value->field_reserved2 = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void EndOfObjectPoolReq_template::copy_value(const EndOfObjectPoolReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.reserved2().is_bound()) {
+  single_value->field_reserved2 = other_value.reserved2();
+} else {
+  single_value->field_reserved2.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void EndOfObjectPoolReq_template::copy_template(const EndOfObjectPoolReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved2().get_selection()) {
+single_value->field_reserved2 = other_value.reserved2();
+} else {
+single_value->field_reserved2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new EndOfObjectPoolReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.EndOfObjectPoolReq.");
+break;
+}
+set_selection(other_value);
+}
+
+EndOfObjectPoolReq_template::EndOfObjectPoolReq_template()
+{
+}
+
+EndOfObjectPoolReq_template::EndOfObjectPoolReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+EndOfObjectPoolReq_template::EndOfObjectPoolReq_template(const EndOfObjectPoolReq& other_value)
+{
+copy_value(other_value);
+}
+
+EndOfObjectPoolReq_template::EndOfObjectPoolReq_template(const OPTIONAL<EndOfObjectPoolReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const EndOfObjectPoolReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.EndOfObjectPoolReq from an unbound optional field.");
+}
+}
+
+EndOfObjectPoolReq_template::EndOfObjectPoolReq_template(const EndOfObjectPoolReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+EndOfObjectPoolReq_template::~EndOfObjectPoolReq_template()
+{
+clean_up();
+}
+
+EndOfObjectPoolReq_template& EndOfObjectPoolReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+EndOfObjectPoolReq_template& EndOfObjectPoolReq_template::operator=(const EndOfObjectPoolReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+EndOfObjectPoolReq_template& EndOfObjectPoolReq_template::operator=(const OPTIONAL<EndOfObjectPoolReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const EndOfObjectPoolReq&)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 @IsobusVTMessageTypes.EndOfObjectPoolReq.");
+}
+return *this;
+}
+
+EndOfObjectPoolReq_template& EndOfObjectPoolReq_template::operator=(const EndOfObjectPoolReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean EndOfObjectPoolReq_template::match(const EndOfObjectPoolReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.reserved2().is_bound()) return FALSE;
+if(!single_value->field_reserved2.match(other_value.reserved2(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.EndOfObjectPoolReq.");
+}
+return FALSE;
+}
+
+boolean EndOfObjectPoolReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_reserved2.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean EndOfObjectPoolReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_reserved2.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void EndOfObjectPoolReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+EndOfObjectPoolReq EndOfObjectPoolReq_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 @IsobusVTMessageTypes.EndOfObjectPoolReq.");
+EndOfObjectPoolReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_reserved2.is_bound()) {
+ret_val.reserved2() = single_value->field_reserved2.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void EndOfObjectPoolReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.EndOfObjectPoolReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new EndOfObjectPoolReq_template[list_length];
+}
+
+EndOfObjectPoolReq_template& EndOfObjectPoolReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.EndOfObjectPoolReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.EndOfObjectPoolReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& EndOfObjectPoolReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& EndOfObjectPoolReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.EndOfObjectPoolReq.");
+return single_value->field_vtfunction;
+}
+
+OCTETSTRING_template& EndOfObjectPoolReq_template::reserved2()
+{
+set_specific();
+return single_value->field_reserved2;
+}
+
+const OCTETSTRING_template& EndOfObjectPoolReq_template::reserved2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved2 of a non-specific template of type @IsobusVTMessageTypes.EndOfObjectPoolReq.");
+return single_value->field_reserved2;
+}
+
+OCTETSTRING_template& EndOfObjectPoolReq_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const OCTETSTRING_template& EndOfObjectPoolReq_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.EndOfObjectPoolReq.");
+return single_value->field_reserved3;
+}
+
+OCTETSTRING_template& EndOfObjectPoolReq_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& EndOfObjectPoolReq_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.EndOfObjectPoolReq.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& EndOfObjectPoolReq_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& EndOfObjectPoolReq_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.EndOfObjectPoolReq.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& EndOfObjectPoolReq_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& EndOfObjectPoolReq_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.EndOfObjectPoolReq.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& EndOfObjectPoolReq_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& EndOfObjectPoolReq_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.EndOfObjectPoolReq.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& EndOfObjectPoolReq_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& EndOfObjectPoolReq_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.EndOfObjectPoolReq.");
+return single_value->field_reserved8;
+}
+
+int EndOfObjectPoolReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.EndOfObjectPoolReq which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.EndOfObjectPoolReq 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 @IsobusVTMessageTypes.EndOfObjectPoolReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.EndOfObjectPoolReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.EndOfObjectPoolReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.EndOfObjectPoolReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.EndOfObjectPoolReq.");
+  }
+  return 0;
+}
+
+void EndOfObjectPoolReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void EndOfObjectPoolReq_template::log_match(const EndOfObjectPoolReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved2.match(match_value.reserved2(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved2");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 EndOfObjectPoolReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_reserved2.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.EndOfObjectPoolReq.");
+}
+}
+
+void EndOfObjectPoolReq_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_vtfunction.decode_text(text_buf);
+single_value->field_reserved2.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 EndOfObjectPoolReq_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 @IsobusVTMessageTypes.EndOfObjectPoolReq.");
+}
+}
+
+void EndOfObjectPoolReq_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: {
+    EndOfObjectPoolReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.EndOfObjectPoolReq has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.EndOfObjectPoolReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.EndOfObjectPoolReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void EndOfObjectPoolReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EndOfObjectPoolReq");
+single_value->field_reserved2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EndOfObjectPoolReq");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EndOfObjectPoolReq");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EndOfObjectPoolReq");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EndOfObjectPoolReq");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EndOfObjectPoolReq");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EndOfObjectPoolReq");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EndOfObjectPoolReq");
+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 : "@IsobusVTMessageTypes.EndOfObjectPoolReq");
+}
+
+boolean EndOfObjectPoolReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean EndOfObjectPoolReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+EndOfObjectPoolResErrorCodes::EndOfObjectPoolResErrorCodes()
+{
+}
+
+EndOfObjectPoolResErrorCodes::EndOfObjectPoolResErrorCodes(const BOOLEAN& par_thereAreErrorsInTheObjectPool,
+    const BOOLEAN& par_vtRanOutOfMemoryDuringTransfer,
+    const BOOLEAN& par_reserved2,
+    const BOOLEAN& par_reserved3,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7)
+  :   field_thereAreErrorsInTheObjectPool(par_thereAreErrorsInTheObjectPool),
+  field_vtRanOutOfMemoryDuringTransfer(par_vtRanOutOfMemoryDuringTransfer),
+  field_reserved2(par_reserved2),
+  field_reserved3(par_reserved3),
+  field_anyOtherError(par_anyOtherError),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7)
+{
+}
+
+EndOfObjectPoolResErrorCodes::EndOfObjectPoolResErrorCodes(const EndOfObjectPoolResErrorCodes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes.");
+if (other_value.thereAreErrorsInTheObjectPool().is_bound()) field_thereAreErrorsInTheObjectPool = other_value.thereAreErrorsInTheObjectPool();
+else field_thereAreErrorsInTheObjectPool.clean_up();
+if (other_value.vtRanOutOfMemoryDuringTransfer().is_bound()) field_vtRanOutOfMemoryDuringTransfer = other_value.vtRanOutOfMemoryDuringTransfer();
+else field_vtRanOutOfMemoryDuringTransfer.clean_up();
+if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+else field_reserved2.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+else field_anyOtherError.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+}
+
+void EndOfObjectPoolResErrorCodes::clean_up()
+{
+field_thereAreErrorsInTheObjectPool.clean_up();
+field_vtRanOutOfMemoryDuringTransfer.clean_up();
+field_reserved2.clean_up();
+field_reserved3.clean_up();
+field_anyOtherError.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+}
+
+const TTCN_Typedescriptor_t* EndOfObjectPoolResErrorCodes::get_descriptor() const { return &EndOfObjectPoolResErrorCodes_descr_; }
+EndOfObjectPoolResErrorCodes& EndOfObjectPoolResErrorCodes::operator=(const EndOfObjectPoolResErrorCodes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes.");
+  if (other_value.thereAreErrorsInTheObjectPool().is_bound()) field_thereAreErrorsInTheObjectPool = other_value.thereAreErrorsInTheObjectPool();
+  else field_thereAreErrorsInTheObjectPool.clean_up();
+  if (other_value.vtRanOutOfMemoryDuringTransfer().is_bound()) field_vtRanOutOfMemoryDuringTransfer = other_value.vtRanOutOfMemoryDuringTransfer();
+  else field_vtRanOutOfMemoryDuringTransfer.clean_up();
+  if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+  else field_reserved2.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+  else field_anyOtherError.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+}
+return *this;
+}
+
+boolean EndOfObjectPoolResErrorCodes::operator==(const EndOfObjectPoolResErrorCodes& other_value) const
+{
+return field_thereAreErrorsInTheObjectPool==other_value.field_thereAreErrorsInTheObjectPool
+  && field_vtRanOutOfMemoryDuringTransfer==other_value.field_vtRanOutOfMemoryDuringTransfer
+  && field_reserved2==other_value.field_reserved2
+  && field_reserved3==other_value.field_reserved3
+  && field_anyOtherError==other_value.field_anyOtherError
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7;
+}
+
+boolean EndOfObjectPoolResErrorCodes::is_bound() const
+{
+return (field_thereAreErrorsInTheObjectPool.is_bound())
+  || (field_vtRanOutOfMemoryDuringTransfer.is_bound())
+  || (field_reserved2.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_anyOtherError.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound());
+}
+boolean EndOfObjectPoolResErrorCodes::is_value() const
+{
+return field_thereAreErrorsInTheObjectPool.is_value()
+  && field_vtRanOutOfMemoryDuringTransfer.is_value()
+  && field_reserved2.is_value()
+  && field_reserved3.is_value()
+  && field_anyOtherError.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value();
+}
+void EndOfObjectPoolResErrorCodes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ thereAreErrorsInTheObjectPool := ");
+field_thereAreErrorsInTheObjectPool.log();
+TTCN_Logger::log_event_str(", vtRanOutOfMemoryDuringTransfer := ");
+field_vtRanOutOfMemoryDuringTransfer.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void EndOfObjectPoolResErrorCodes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes has 8 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) thereAreErrorsInTheObjectPool().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) vtRanOutOfMemoryDuringTransfer().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "thereAreErrorsInTheObjectPool")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          thereAreErrorsInTheObjectPool().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(), "vtRanOutOfMemoryDuringTransfer")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtRanOutOfMemoryDuringTransfer().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes");
+  }
+}
+
+void EndOfObjectPoolResErrorCodes::set_implicit_omit()
+{
+if (thereAreErrorsInTheObjectPool().is_bound()) thereAreErrorsInTheObjectPool().set_implicit_omit();
+if (vtRanOutOfMemoryDuringTransfer().is_bound()) vtRanOutOfMemoryDuringTransfer().set_implicit_omit();
+if (reserved2().is_bound()) reserved2().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (anyOtherError().is_bound()) anyOtherError().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+}
+
+void EndOfObjectPoolResErrorCodes::encode_text(Text_Buf& text_buf) const
+{
+field_thereAreErrorsInTheObjectPool.encode_text(text_buf);
+field_vtRanOutOfMemoryDuringTransfer.encode_text(text_buf);
+field_reserved2.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_anyOtherError.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+}
+
+void EndOfObjectPoolResErrorCodes::decode_text(Text_Buf& text_buf)
+{
+field_thereAreErrorsInTheObjectPool.decode_text(text_buf);
+field_vtRanOutOfMemoryDuringTransfer.decode_text(text_buf);
+field_reserved2.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_anyOtherError.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+}
+
+void EndOfObjectPoolResErrorCodes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void EndOfObjectPoolResErrorCodes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int EndOfObjectPoolResErrorCodes::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_thereAreErrorsInTheObjectPool.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_vtRanOutOfMemoryDuringTransfer.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved2.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_anyOtherError.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int EndOfObjectPoolResErrorCodes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_thereAreErrorsInTheObjectPool.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_vtRanOutOfMemoryDuringTransfer.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved2.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved3.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_anyOtherError.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved5.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved6.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved7.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct EndOfObjectPoolResErrorCodes_template::single_value_struct {
+BOOLEAN_template field_thereAreErrorsInTheObjectPool;
+BOOLEAN_template field_vtRanOutOfMemoryDuringTransfer;
+BOOLEAN_template field_reserved2;
+BOOLEAN_template field_reserved3;
+BOOLEAN_template field_anyOtherError;
+BOOLEAN_template field_reserved5;
+BOOLEAN_template field_reserved6;
+BOOLEAN_template field_reserved7;
+};
+
+void EndOfObjectPoolResErrorCodes_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_thereAreErrorsInTheObjectPool = ANY_VALUE;
+single_value->field_vtRanOutOfMemoryDuringTransfer = ANY_VALUE;
+single_value->field_reserved2 = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_anyOtherError = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+}
+}
+}
+
+void EndOfObjectPoolResErrorCodes_template::copy_value(const EndOfObjectPoolResErrorCodes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.thereAreErrorsInTheObjectPool().is_bound()) {
+  single_value->field_thereAreErrorsInTheObjectPool = other_value.thereAreErrorsInTheObjectPool();
+} else {
+  single_value->field_thereAreErrorsInTheObjectPool.clean_up();
+}
+if (other_value.vtRanOutOfMemoryDuringTransfer().is_bound()) {
+  single_value->field_vtRanOutOfMemoryDuringTransfer = other_value.vtRanOutOfMemoryDuringTransfer();
+} else {
+  single_value->field_vtRanOutOfMemoryDuringTransfer.clean_up();
+}
+if (other_value.reserved2().is_bound()) {
+  single_value->field_reserved2 = other_value.reserved2();
+} else {
+  single_value->field_reserved2.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.anyOtherError().is_bound()) {
+  single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+  single_value->field_anyOtherError.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void EndOfObjectPoolResErrorCodes_template::copy_template(const EndOfObjectPoolResErrorCodes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.thereAreErrorsInTheObjectPool().get_selection()) {
+single_value->field_thereAreErrorsInTheObjectPool = other_value.thereAreErrorsInTheObjectPool();
+} else {
+single_value->field_thereAreErrorsInTheObjectPool.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.vtRanOutOfMemoryDuringTransfer().get_selection()) {
+single_value->field_vtRanOutOfMemoryDuringTransfer = other_value.vtRanOutOfMemoryDuringTransfer();
+} else {
+single_value->field_vtRanOutOfMemoryDuringTransfer.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved2().get_selection()) {
+single_value->field_reserved2 = other_value.reserved2();
+} else {
+single_value->field_reserved2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.anyOtherError().get_selection()) {
+single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+single_value->field_anyOtherError.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new EndOfObjectPoolResErrorCodes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes.");
+break;
+}
+set_selection(other_value);
+}
+
+EndOfObjectPoolResErrorCodes_template::EndOfObjectPoolResErrorCodes_template()
+{
+}
+
+EndOfObjectPoolResErrorCodes_template::EndOfObjectPoolResErrorCodes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+EndOfObjectPoolResErrorCodes_template::EndOfObjectPoolResErrorCodes_template(const EndOfObjectPoolResErrorCodes& other_value)
+{
+copy_value(other_value);
+}
+
+EndOfObjectPoolResErrorCodes_template::EndOfObjectPoolResErrorCodes_template(const OPTIONAL<EndOfObjectPoolResErrorCodes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const EndOfObjectPoolResErrorCodes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes from an unbound optional field.");
+}
+}
+
+EndOfObjectPoolResErrorCodes_template::EndOfObjectPoolResErrorCodes_template(const EndOfObjectPoolResErrorCodes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+EndOfObjectPoolResErrorCodes_template::~EndOfObjectPoolResErrorCodes_template()
+{
+clean_up();
+}
+
+EndOfObjectPoolResErrorCodes_template& EndOfObjectPoolResErrorCodes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+EndOfObjectPoolResErrorCodes_template& EndOfObjectPoolResErrorCodes_template::operator=(const EndOfObjectPoolResErrorCodes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+EndOfObjectPoolResErrorCodes_template& EndOfObjectPoolResErrorCodes_template::operator=(const OPTIONAL<EndOfObjectPoolResErrorCodes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const EndOfObjectPoolResErrorCodes&)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 @IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes.");
+}
+return *this;
+}
+
+EndOfObjectPoolResErrorCodes_template& EndOfObjectPoolResErrorCodes_template::operator=(const EndOfObjectPoolResErrorCodes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean EndOfObjectPoolResErrorCodes_template::match(const EndOfObjectPoolResErrorCodes& 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.thereAreErrorsInTheObjectPool().is_bound()) return FALSE;
+if(!single_value->field_thereAreErrorsInTheObjectPool.match(other_value.thereAreErrorsInTheObjectPool(), legacy))return FALSE;
+if(!other_value.vtRanOutOfMemoryDuringTransfer().is_bound()) return FALSE;
+if(!single_value->field_vtRanOutOfMemoryDuringTransfer.match(other_value.vtRanOutOfMemoryDuringTransfer(), legacy))return FALSE;
+if(!other_value.reserved2().is_bound()) return FALSE;
+if(!single_value->field_reserved2.match(other_value.reserved2(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.anyOtherError().is_bound()) return FALSE;
+if(!single_value->field_anyOtherError.match(other_value.anyOtherError(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes.");
+}
+return FALSE;
+}
+
+boolean EndOfObjectPoolResErrorCodes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_thereAreErrorsInTheObjectPool.is_bound()
+
+ ||single_value->field_vtRanOutOfMemoryDuringTransfer.is_bound()
+
+ ||single_value->field_reserved2.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_anyOtherError.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+;
+}
+
+boolean EndOfObjectPoolResErrorCodes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_thereAreErrorsInTheObjectPool.is_value()
+ &&single_value->field_vtRanOutOfMemoryDuringTransfer.is_value()
+ &&single_value->field_reserved2.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_anyOtherError.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value();
+}
+
+void EndOfObjectPoolResErrorCodes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+EndOfObjectPoolResErrorCodes EndOfObjectPoolResErrorCodes_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 @IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes.");
+EndOfObjectPoolResErrorCodes ret_val;
+if (single_value->field_thereAreErrorsInTheObjectPool.is_bound()) {
+ret_val.thereAreErrorsInTheObjectPool() = single_value->field_thereAreErrorsInTheObjectPool.valueof();
+}
+if (single_value->field_vtRanOutOfMemoryDuringTransfer.is_bound()) {
+ret_val.vtRanOutOfMemoryDuringTransfer() = single_value->field_vtRanOutOfMemoryDuringTransfer.valueof();
+}
+if (single_value->field_reserved2.is_bound()) {
+ret_val.reserved2() = single_value->field_reserved2.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_anyOtherError.is_bound()) {
+ret_val.anyOtherError() = single_value->field_anyOtherError.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+return ret_val;
+}
+
+void EndOfObjectPoolResErrorCodes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new EndOfObjectPoolResErrorCodes_template[list_length];
+}
+
+EndOfObjectPoolResErrorCodes_template& EndOfObjectPoolResErrorCodes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& EndOfObjectPoolResErrorCodes_template::thereAreErrorsInTheObjectPool()
+{
+set_specific();
+return single_value->field_thereAreErrorsInTheObjectPool;
+}
+
+const BOOLEAN_template& EndOfObjectPoolResErrorCodes_template::thereAreErrorsInTheObjectPool() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field thereAreErrorsInTheObjectPool of a non-specific template of type @IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes.");
+return single_value->field_thereAreErrorsInTheObjectPool;
+}
+
+BOOLEAN_template& EndOfObjectPoolResErrorCodes_template::vtRanOutOfMemoryDuringTransfer()
+{
+set_specific();
+return single_value->field_vtRanOutOfMemoryDuringTransfer;
+}
+
+const BOOLEAN_template& EndOfObjectPoolResErrorCodes_template::vtRanOutOfMemoryDuringTransfer() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtRanOutOfMemoryDuringTransfer of a non-specific template of type @IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes.");
+return single_value->field_vtRanOutOfMemoryDuringTransfer;
+}
+
+BOOLEAN_template& EndOfObjectPoolResErrorCodes_template::reserved2()
+{
+set_specific();
+return single_value->field_reserved2;
+}
+
+const BOOLEAN_template& EndOfObjectPoolResErrorCodes_template::reserved2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved2 of a non-specific template of type @IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes.");
+return single_value->field_reserved2;
+}
+
+BOOLEAN_template& EndOfObjectPoolResErrorCodes_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const BOOLEAN_template& EndOfObjectPoolResErrorCodes_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes.");
+return single_value->field_reserved3;
+}
+
+BOOLEAN_template& EndOfObjectPoolResErrorCodes_template::anyOtherError()
+{
+set_specific();
+return single_value->field_anyOtherError;
+}
+
+const BOOLEAN_template& EndOfObjectPoolResErrorCodes_template::anyOtherError() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field anyOtherError of a non-specific template of type @IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes.");
+return single_value->field_anyOtherError;
+}
+
+BOOLEAN_template& EndOfObjectPoolResErrorCodes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const BOOLEAN_template& EndOfObjectPoolResErrorCodes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes.");
+return single_value->field_reserved5;
+}
+
+BOOLEAN_template& EndOfObjectPoolResErrorCodes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const BOOLEAN_template& EndOfObjectPoolResErrorCodes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes.");
+return single_value->field_reserved6;
+}
+
+BOOLEAN_template& EndOfObjectPoolResErrorCodes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const BOOLEAN_template& EndOfObjectPoolResErrorCodes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes.");
+return single_value->field_reserved7;
+}
+
+int EndOfObjectPoolResErrorCodes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes 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 @IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes.");
+  }
+  return 0;
+}
+
+void EndOfObjectPoolResErrorCodes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ thereAreErrorsInTheObjectPool := ");
+single_value->field_thereAreErrorsInTheObjectPool.log();
+TTCN_Logger::log_event_str(", vtRanOutOfMemoryDuringTransfer := ");
+single_value->field_vtRanOutOfMemoryDuringTransfer.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void EndOfObjectPoolResErrorCodes_template::log_match(const EndOfObjectPoolResErrorCodes& 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_thereAreErrorsInTheObjectPool.match(match_value.thereAreErrorsInTheObjectPool(), legacy)){
+TTCN_Logger::log_logmatch_info(".thereAreErrorsInTheObjectPool");
+single_value->field_thereAreErrorsInTheObjectPool.log_match(match_value.thereAreErrorsInTheObjectPool(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_vtRanOutOfMemoryDuringTransfer.match(match_value.vtRanOutOfMemoryDuringTransfer(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtRanOutOfMemoryDuringTransfer");
+single_value->field_vtRanOutOfMemoryDuringTransfer.log_match(match_value.vtRanOutOfMemoryDuringTransfer(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved2.match(match_value.reserved2(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved2");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_anyOtherError.match(match_value.anyOtherError(), legacy)){
+TTCN_Logger::log_logmatch_info(".anyOtherError");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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("{ thereAreErrorsInTheObjectPool := ");
+single_value->field_thereAreErrorsInTheObjectPool.log_match(match_value.thereAreErrorsInTheObjectPool(), legacy);
+TTCN_Logger::log_event_str(", vtRanOutOfMemoryDuringTransfer := ");
+single_value->field_vtRanOutOfMemoryDuringTransfer.log_match(match_value.vtRanOutOfMemoryDuringTransfer(), legacy);
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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 EndOfObjectPoolResErrorCodes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_thereAreErrorsInTheObjectPool.encode_text(text_buf);
+single_value->field_vtRanOutOfMemoryDuringTransfer.encode_text(text_buf);
+single_value->field_reserved2.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_anyOtherError.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.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 @IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes.");
+}
+}
+
+void EndOfObjectPoolResErrorCodes_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_thereAreErrorsInTheObjectPool.decode_text(text_buf);
+single_value->field_vtRanOutOfMemoryDuringTransfer.decode_text(text_buf);
+single_value->field_reserved2.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_anyOtherError.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.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 EndOfObjectPoolResErrorCodes_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 @IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes.");
+}
+}
+
+void EndOfObjectPoolResErrorCodes_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: {
+    EndOfObjectPoolResErrorCodes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes has 8 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) thereAreErrorsInTheObjectPool().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) vtRanOutOfMemoryDuringTransfer().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "thereAreErrorsInTheObjectPool")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          thereAreErrorsInTheObjectPool().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(), "vtRanOutOfMemoryDuringTransfer")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtRanOutOfMemoryDuringTransfer().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void EndOfObjectPoolResErrorCodes_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_thereAreErrorsInTheObjectPool.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes");
+single_value->field_vtRanOutOfMemoryDuringTransfer.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes");
+single_value->field_reserved2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes");
+single_value->field_anyOtherError.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes");
+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 : "@IsobusVTMessageTypes.EndOfObjectPoolResErrorCodes");
+}
+
+boolean EndOfObjectPoolResErrorCodes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean EndOfObjectPoolResErrorCodes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+EndOfObjectPoolResObjectPoolErrorCodes::EndOfObjectPoolResObjectPoolErrorCodes()
+{
+}
+
+EndOfObjectPoolResObjectPoolErrorCodes::EndOfObjectPoolResObjectPoolErrorCodes(const BOOLEAN& par_methodOrAttributeNotSupportedByTheVT,
+    const BOOLEAN& par_unknownObjectReference,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_objectPoolWasDeletedFromVolatileMemory,
+    const BOOLEAN& par_reserved4,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7)
+  :   field_methodOrAttributeNotSupportedByTheVT(par_methodOrAttributeNotSupportedByTheVT),
+  field_unknownObjectReference(par_unknownObjectReference),
+  field_anyOtherError(par_anyOtherError),
+  field_objectPoolWasDeletedFromVolatileMemory(par_objectPoolWasDeletedFromVolatileMemory),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7)
+{
+}
+
+EndOfObjectPoolResObjectPoolErrorCodes::EndOfObjectPoolResObjectPoolErrorCodes(const EndOfObjectPoolResObjectPoolErrorCodes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes.");
+if (other_value.methodOrAttributeNotSupportedByTheVT().is_bound()) field_methodOrAttributeNotSupportedByTheVT = other_value.methodOrAttributeNotSupportedByTheVT();
+else field_methodOrAttributeNotSupportedByTheVT.clean_up();
+if (other_value.unknownObjectReference().is_bound()) field_unknownObjectReference = other_value.unknownObjectReference();
+else field_unknownObjectReference.clean_up();
+if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+else field_anyOtherError.clean_up();
+if (other_value.objectPoolWasDeletedFromVolatileMemory().is_bound()) field_objectPoolWasDeletedFromVolatileMemory = other_value.objectPoolWasDeletedFromVolatileMemory();
+else field_objectPoolWasDeletedFromVolatileMemory.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+}
+
+void EndOfObjectPoolResObjectPoolErrorCodes::clean_up()
+{
+field_methodOrAttributeNotSupportedByTheVT.clean_up();
+field_unknownObjectReference.clean_up();
+field_anyOtherError.clean_up();
+field_objectPoolWasDeletedFromVolatileMemory.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+}
+
+const TTCN_Typedescriptor_t* EndOfObjectPoolResObjectPoolErrorCodes::get_descriptor() const { return &EndOfObjectPoolResObjectPoolErrorCodes_descr_; }
+EndOfObjectPoolResObjectPoolErrorCodes& EndOfObjectPoolResObjectPoolErrorCodes::operator=(const EndOfObjectPoolResObjectPoolErrorCodes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes.");
+  if (other_value.methodOrAttributeNotSupportedByTheVT().is_bound()) field_methodOrAttributeNotSupportedByTheVT = other_value.methodOrAttributeNotSupportedByTheVT();
+  else field_methodOrAttributeNotSupportedByTheVT.clean_up();
+  if (other_value.unknownObjectReference().is_bound()) field_unknownObjectReference = other_value.unknownObjectReference();
+  else field_unknownObjectReference.clean_up();
+  if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+  else field_anyOtherError.clean_up();
+  if (other_value.objectPoolWasDeletedFromVolatileMemory().is_bound()) field_objectPoolWasDeletedFromVolatileMemory = other_value.objectPoolWasDeletedFromVolatileMemory();
+  else field_objectPoolWasDeletedFromVolatileMemory.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+}
+return *this;
+}
+
+boolean EndOfObjectPoolResObjectPoolErrorCodes::operator==(const EndOfObjectPoolResObjectPoolErrorCodes& other_value) const
+{
+return field_methodOrAttributeNotSupportedByTheVT==other_value.field_methodOrAttributeNotSupportedByTheVT
+  && field_unknownObjectReference==other_value.field_unknownObjectReference
+  && field_anyOtherError==other_value.field_anyOtherError
+  && field_objectPoolWasDeletedFromVolatileMemory==other_value.field_objectPoolWasDeletedFromVolatileMemory
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7;
+}
+
+boolean EndOfObjectPoolResObjectPoolErrorCodes::is_bound() const
+{
+return (field_methodOrAttributeNotSupportedByTheVT.is_bound())
+  || (field_unknownObjectReference.is_bound())
+  || (field_anyOtherError.is_bound())
+  || (field_objectPoolWasDeletedFromVolatileMemory.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound());
+}
+boolean EndOfObjectPoolResObjectPoolErrorCodes::is_value() const
+{
+return field_methodOrAttributeNotSupportedByTheVT.is_value()
+  && field_unknownObjectReference.is_value()
+  && field_anyOtherError.is_value()
+  && field_objectPoolWasDeletedFromVolatileMemory.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value();
+}
+void EndOfObjectPoolResObjectPoolErrorCodes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ methodOrAttributeNotSupportedByTheVT := ");
+field_methodOrAttributeNotSupportedByTheVT.log();
+TTCN_Logger::log_event_str(", unknownObjectReference := ");
+field_unknownObjectReference.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+field_anyOtherError.log();
+TTCN_Logger::log_event_str(", objectPoolWasDeletedFromVolatileMemory := ");
+field_objectPoolWasDeletedFromVolatileMemory.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void EndOfObjectPoolResObjectPoolErrorCodes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes has 8 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) methodOrAttributeNotSupportedByTheVT().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) unknownObjectReference().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) objectPoolWasDeletedFromVolatileMemory().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "methodOrAttributeNotSupportedByTheVT")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          methodOrAttributeNotSupportedByTheVT().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(), "unknownObjectReference")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          unknownObjectReference().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "objectPoolWasDeletedFromVolatileMemory")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectPoolWasDeletedFromVolatileMemory().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes");
+  }
+}
+
+void EndOfObjectPoolResObjectPoolErrorCodes::set_implicit_omit()
+{
+if (methodOrAttributeNotSupportedByTheVT().is_bound()) methodOrAttributeNotSupportedByTheVT().set_implicit_omit();
+if (unknownObjectReference().is_bound()) unknownObjectReference().set_implicit_omit();
+if (anyOtherError().is_bound()) anyOtherError().set_implicit_omit();
+if (objectPoolWasDeletedFromVolatileMemory().is_bound()) objectPoolWasDeletedFromVolatileMemory().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+}
+
+void EndOfObjectPoolResObjectPoolErrorCodes::encode_text(Text_Buf& text_buf) const
+{
+field_methodOrAttributeNotSupportedByTheVT.encode_text(text_buf);
+field_unknownObjectReference.encode_text(text_buf);
+field_anyOtherError.encode_text(text_buf);
+field_objectPoolWasDeletedFromVolatileMemory.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+}
+
+void EndOfObjectPoolResObjectPoolErrorCodes::decode_text(Text_Buf& text_buf)
+{
+field_methodOrAttributeNotSupportedByTheVT.decode_text(text_buf);
+field_unknownObjectReference.decode_text(text_buf);
+field_anyOtherError.decode_text(text_buf);
+field_objectPoolWasDeletedFromVolatileMemory.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+}
+
+void EndOfObjectPoolResObjectPoolErrorCodes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void EndOfObjectPoolResObjectPoolErrorCodes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int EndOfObjectPoolResObjectPoolErrorCodes::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_methodOrAttributeNotSupportedByTheVT.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_unknownObjectReference.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_anyOtherError.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_objectPoolWasDeletedFromVolatileMemory.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int EndOfObjectPoolResObjectPoolErrorCodes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_methodOrAttributeNotSupportedByTheVT.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_unknownObjectReference.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_anyOtherError.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_objectPoolWasDeletedFromVolatileMemory.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved4.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved5.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved6.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved7.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct EndOfObjectPoolResObjectPoolErrorCodes_template::single_value_struct {
+BOOLEAN_template field_methodOrAttributeNotSupportedByTheVT;
+BOOLEAN_template field_unknownObjectReference;
+BOOLEAN_template field_anyOtherError;
+BOOLEAN_template field_objectPoolWasDeletedFromVolatileMemory;
+BOOLEAN_template field_reserved4;
+BOOLEAN_template field_reserved5;
+BOOLEAN_template field_reserved6;
+BOOLEAN_template field_reserved7;
+};
+
+void EndOfObjectPoolResObjectPoolErrorCodes_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_methodOrAttributeNotSupportedByTheVT = ANY_VALUE;
+single_value->field_unknownObjectReference = ANY_VALUE;
+single_value->field_anyOtherError = ANY_VALUE;
+single_value->field_objectPoolWasDeletedFromVolatileMemory = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+}
+}
+}
+
+void EndOfObjectPoolResObjectPoolErrorCodes_template::copy_value(const EndOfObjectPoolResObjectPoolErrorCodes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.methodOrAttributeNotSupportedByTheVT().is_bound()) {
+  single_value->field_methodOrAttributeNotSupportedByTheVT = other_value.methodOrAttributeNotSupportedByTheVT();
+} else {
+  single_value->field_methodOrAttributeNotSupportedByTheVT.clean_up();
+}
+if (other_value.unknownObjectReference().is_bound()) {
+  single_value->field_unknownObjectReference = other_value.unknownObjectReference();
+} else {
+  single_value->field_unknownObjectReference.clean_up();
+}
+if (other_value.anyOtherError().is_bound()) {
+  single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+  single_value->field_anyOtherError.clean_up();
+}
+if (other_value.objectPoolWasDeletedFromVolatileMemory().is_bound()) {
+  single_value->field_objectPoolWasDeletedFromVolatileMemory = other_value.objectPoolWasDeletedFromVolatileMemory();
+} else {
+  single_value->field_objectPoolWasDeletedFromVolatileMemory.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void EndOfObjectPoolResObjectPoolErrorCodes_template::copy_template(const EndOfObjectPoolResObjectPoolErrorCodes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.methodOrAttributeNotSupportedByTheVT().get_selection()) {
+single_value->field_methodOrAttributeNotSupportedByTheVT = other_value.methodOrAttributeNotSupportedByTheVT();
+} else {
+single_value->field_methodOrAttributeNotSupportedByTheVT.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.unknownObjectReference().get_selection()) {
+single_value->field_unknownObjectReference = other_value.unknownObjectReference();
+} else {
+single_value->field_unknownObjectReference.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.anyOtherError().get_selection()) {
+single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+single_value->field_anyOtherError.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectPoolWasDeletedFromVolatileMemory().get_selection()) {
+single_value->field_objectPoolWasDeletedFromVolatileMemory = other_value.objectPoolWasDeletedFromVolatileMemory();
+} else {
+single_value->field_objectPoolWasDeletedFromVolatileMemory.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new EndOfObjectPoolResObjectPoolErrorCodes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes.");
+break;
+}
+set_selection(other_value);
+}
+
+EndOfObjectPoolResObjectPoolErrorCodes_template::EndOfObjectPoolResObjectPoolErrorCodes_template()
+{
+}
+
+EndOfObjectPoolResObjectPoolErrorCodes_template::EndOfObjectPoolResObjectPoolErrorCodes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+EndOfObjectPoolResObjectPoolErrorCodes_template::EndOfObjectPoolResObjectPoolErrorCodes_template(const EndOfObjectPoolResObjectPoolErrorCodes& other_value)
+{
+copy_value(other_value);
+}
+
+EndOfObjectPoolResObjectPoolErrorCodes_template::EndOfObjectPoolResObjectPoolErrorCodes_template(const OPTIONAL<EndOfObjectPoolResObjectPoolErrorCodes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const EndOfObjectPoolResObjectPoolErrorCodes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes from an unbound optional field.");
+}
+}
+
+EndOfObjectPoolResObjectPoolErrorCodes_template::EndOfObjectPoolResObjectPoolErrorCodes_template(const EndOfObjectPoolResObjectPoolErrorCodes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+EndOfObjectPoolResObjectPoolErrorCodes_template::~EndOfObjectPoolResObjectPoolErrorCodes_template()
+{
+clean_up();
+}
+
+EndOfObjectPoolResObjectPoolErrorCodes_template& EndOfObjectPoolResObjectPoolErrorCodes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+EndOfObjectPoolResObjectPoolErrorCodes_template& EndOfObjectPoolResObjectPoolErrorCodes_template::operator=(const EndOfObjectPoolResObjectPoolErrorCodes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+EndOfObjectPoolResObjectPoolErrorCodes_template& EndOfObjectPoolResObjectPoolErrorCodes_template::operator=(const OPTIONAL<EndOfObjectPoolResObjectPoolErrorCodes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const EndOfObjectPoolResObjectPoolErrorCodes&)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 @IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes.");
+}
+return *this;
+}
+
+EndOfObjectPoolResObjectPoolErrorCodes_template& EndOfObjectPoolResObjectPoolErrorCodes_template::operator=(const EndOfObjectPoolResObjectPoolErrorCodes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean EndOfObjectPoolResObjectPoolErrorCodes_template::match(const EndOfObjectPoolResObjectPoolErrorCodes& 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.methodOrAttributeNotSupportedByTheVT().is_bound()) return FALSE;
+if(!single_value->field_methodOrAttributeNotSupportedByTheVT.match(other_value.methodOrAttributeNotSupportedByTheVT(), legacy))return FALSE;
+if(!other_value.unknownObjectReference().is_bound()) return FALSE;
+if(!single_value->field_unknownObjectReference.match(other_value.unknownObjectReference(), legacy))return FALSE;
+if(!other_value.anyOtherError().is_bound()) return FALSE;
+if(!single_value->field_anyOtherError.match(other_value.anyOtherError(), legacy))return FALSE;
+if(!other_value.objectPoolWasDeletedFromVolatileMemory().is_bound()) return FALSE;
+if(!single_value->field_objectPoolWasDeletedFromVolatileMemory.match(other_value.objectPoolWasDeletedFromVolatileMemory(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes.");
+}
+return FALSE;
+}
+
+boolean EndOfObjectPoolResObjectPoolErrorCodes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_methodOrAttributeNotSupportedByTheVT.is_bound()
+
+ ||single_value->field_unknownObjectReference.is_bound()
+
+ ||single_value->field_anyOtherError.is_bound()
+
+ ||single_value->field_objectPoolWasDeletedFromVolatileMemory.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+;
+}
+
+boolean EndOfObjectPoolResObjectPoolErrorCodes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_methodOrAttributeNotSupportedByTheVT.is_value()
+ &&single_value->field_unknownObjectReference.is_value()
+ &&single_value->field_anyOtherError.is_value()
+ &&single_value->field_objectPoolWasDeletedFromVolatileMemory.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value();
+}
+
+void EndOfObjectPoolResObjectPoolErrorCodes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+EndOfObjectPoolResObjectPoolErrorCodes EndOfObjectPoolResObjectPoolErrorCodes_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 @IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes.");
+EndOfObjectPoolResObjectPoolErrorCodes ret_val;
+if (single_value->field_methodOrAttributeNotSupportedByTheVT.is_bound()) {
+ret_val.methodOrAttributeNotSupportedByTheVT() = single_value->field_methodOrAttributeNotSupportedByTheVT.valueof();
+}
+if (single_value->field_unknownObjectReference.is_bound()) {
+ret_val.unknownObjectReference() = single_value->field_unknownObjectReference.valueof();
+}
+if (single_value->field_anyOtherError.is_bound()) {
+ret_val.anyOtherError() = single_value->field_anyOtherError.valueof();
+}
+if (single_value->field_objectPoolWasDeletedFromVolatileMemory.is_bound()) {
+ret_val.objectPoolWasDeletedFromVolatileMemory() = single_value->field_objectPoolWasDeletedFromVolatileMemory.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+return ret_val;
+}
+
+void EndOfObjectPoolResObjectPoolErrorCodes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new EndOfObjectPoolResObjectPoolErrorCodes_template[list_length];
+}
+
+EndOfObjectPoolResObjectPoolErrorCodes_template& EndOfObjectPoolResObjectPoolErrorCodes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& EndOfObjectPoolResObjectPoolErrorCodes_template::methodOrAttributeNotSupportedByTheVT()
+{
+set_specific();
+return single_value->field_methodOrAttributeNotSupportedByTheVT;
+}
+
+const BOOLEAN_template& EndOfObjectPoolResObjectPoolErrorCodes_template::methodOrAttributeNotSupportedByTheVT() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field methodOrAttributeNotSupportedByTheVT of a non-specific template of type @IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes.");
+return single_value->field_methodOrAttributeNotSupportedByTheVT;
+}
+
+BOOLEAN_template& EndOfObjectPoolResObjectPoolErrorCodes_template::unknownObjectReference()
+{
+set_specific();
+return single_value->field_unknownObjectReference;
+}
+
+const BOOLEAN_template& EndOfObjectPoolResObjectPoolErrorCodes_template::unknownObjectReference() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field unknownObjectReference of a non-specific template of type @IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes.");
+return single_value->field_unknownObjectReference;
+}
+
+BOOLEAN_template& EndOfObjectPoolResObjectPoolErrorCodes_template::anyOtherError()
+{
+set_specific();
+return single_value->field_anyOtherError;
+}
+
+const BOOLEAN_template& EndOfObjectPoolResObjectPoolErrorCodes_template::anyOtherError() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field anyOtherError of a non-specific template of type @IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes.");
+return single_value->field_anyOtherError;
+}
+
+BOOLEAN_template& EndOfObjectPoolResObjectPoolErrorCodes_template::objectPoolWasDeletedFromVolatileMemory()
+{
+set_specific();
+return single_value->field_objectPoolWasDeletedFromVolatileMemory;
+}
+
+const BOOLEAN_template& EndOfObjectPoolResObjectPoolErrorCodes_template::objectPoolWasDeletedFromVolatileMemory() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectPoolWasDeletedFromVolatileMemory of a non-specific template of type @IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes.");
+return single_value->field_objectPoolWasDeletedFromVolatileMemory;
+}
+
+BOOLEAN_template& EndOfObjectPoolResObjectPoolErrorCodes_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const BOOLEAN_template& EndOfObjectPoolResObjectPoolErrorCodes_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes.");
+return single_value->field_reserved4;
+}
+
+BOOLEAN_template& EndOfObjectPoolResObjectPoolErrorCodes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const BOOLEAN_template& EndOfObjectPoolResObjectPoolErrorCodes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes.");
+return single_value->field_reserved5;
+}
+
+BOOLEAN_template& EndOfObjectPoolResObjectPoolErrorCodes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const BOOLEAN_template& EndOfObjectPoolResObjectPoolErrorCodes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes.");
+return single_value->field_reserved6;
+}
+
+BOOLEAN_template& EndOfObjectPoolResObjectPoolErrorCodes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const BOOLEAN_template& EndOfObjectPoolResObjectPoolErrorCodes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes.");
+return single_value->field_reserved7;
+}
+
+int EndOfObjectPoolResObjectPoolErrorCodes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes 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 @IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes.");
+  }
+  return 0;
+}
+
+void EndOfObjectPoolResObjectPoolErrorCodes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ methodOrAttributeNotSupportedByTheVT := ");
+single_value->field_methodOrAttributeNotSupportedByTheVT.log();
+TTCN_Logger::log_event_str(", unknownObjectReference := ");
+single_value->field_unknownObjectReference.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log();
+TTCN_Logger::log_event_str(", objectPoolWasDeletedFromVolatileMemory := ");
+single_value->field_objectPoolWasDeletedFromVolatileMemory.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void EndOfObjectPoolResObjectPoolErrorCodes_template::log_match(const EndOfObjectPoolResObjectPoolErrorCodes& 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_methodOrAttributeNotSupportedByTheVT.match(match_value.methodOrAttributeNotSupportedByTheVT(), legacy)){
+TTCN_Logger::log_logmatch_info(".methodOrAttributeNotSupportedByTheVT");
+single_value->field_methodOrAttributeNotSupportedByTheVT.log_match(match_value.methodOrAttributeNotSupportedByTheVT(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_unknownObjectReference.match(match_value.unknownObjectReference(), legacy)){
+TTCN_Logger::log_logmatch_info(".unknownObjectReference");
+single_value->field_unknownObjectReference.log_match(match_value.unknownObjectReference(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_anyOtherError.match(match_value.anyOtherError(), legacy)){
+TTCN_Logger::log_logmatch_info(".anyOtherError");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectPoolWasDeletedFromVolatileMemory.match(match_value.objectPoolWasDeletedFromVolatileMemory(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectPoolWasDeletedFromVolatileMemory");
+single_value->field_objectPoolWasDeletedFromVolatileMemory.log_match(match_value.objectPoolWasDeletedFromVolatileMemory(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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("{ methodOrAttributeNotSupportedByTheVT := ");
+single_value->field_methodOrAttributeNotSupportedByTheVT.log_match(match_value.methodOrAttributeNotSupportedByTheVT(), legacy);
+TTCN_Logger::log_event_str(", unknownObjectReference := ");
+single_value->field_unknownObjectReference.log_match(match_value.unknownObjectReference(), legacy);
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::log_event_str(", objectPoolWasDeletedFromVolatileMemory := ");
+single_value->field_objectPoolWasDeletedFromVolatileMemory.log_match(match_value.objectPoolWasDeletedFromVolatileMemory(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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 EndOfObjectPoolResObjectPoolErrorCodes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_methodOrAttributeNotSupportedByTheVT.encode_text(text_buf);
+single_value->field_unknownObjectReference.encode_text(text_buf);
+single_value->field_anyOtherError.encode_text(text_buf);
+single_value->field_objectPoolWasDeletedFromVolatileMemory.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.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 @IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes.");
+}
+}
+
+void EndOfObjectPoolResObjectPoolErrorCodes_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_methodOrAttributeNotSupportedByTheVT.decode_text(text_buf);
+single_value->field_unknownObjectReference.decode_text(text_buf);
+single_value->field_anyOtherError.decode_text(text_buf);
+single_value->field_objectPoolWasDeletedFromVolatileMemory.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.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 EndOfObjectPoolResObjectPoolErrorCodes_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 @IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes.");
+}
+}
+
+void EndOfObjectPoolResObjectPoolErrorCodes_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: {
+    EndOfObjectPoolResObjectPoolErrorCodes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes has 8 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) methodOrAttributeNotSupportedByTheVT().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) unknownObjectReference().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) objectPoolWasDeletedFromVolatileMemory().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "methodOrAttributeNotSupportedByTheVT")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          methodOrAttributeNotSupportedByTheVT().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(), "unknownObjectReference")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          unknownObjectReference().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "objectPoolWasDeletedFromVolatileMemory")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectPoolWasDeletedFromVolatileMemory().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void EndOfObjectPoolResObjectPoolErrorCodes_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_methodOrAttributeNotSupportedByTheVT.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes");
+single_value->field_unknownObjectReference.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes");
+single_value->field_anyOtherError.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes");
+single_value->field_objectPoolWasDeletedFromVolatileMemory.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes");
+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 : "@IsobusVTMessageTypes.EndOfObjectPoolResObjectPoolErrorCodes");
+}
+
+boolean EndOfObjectPoolResObjectPoolErrorCodes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean EndOfObjectPoolResObjectPoolErrorCodes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+EndOfObjectPoolRes::EndOfObjectPoolRes()
+{
+}
+
+EndOfObjectPoolRes::EndOfObjectPoolRes(const INTEGER& par_vtfunction,
+    const EndOfObjectPoolResErrorCodes& par_errorCodes,
+    const INTEGER& par_parentObjectIDoFaultyObject,
+    const INTEGER& par_objectIDofFaultyObject,
+    const EndOfObjectPoolResObjectPoolErrorCodes& par_objectPoolErrorCodes,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_errorCodes(par_errorCodes),
+  field_parentObjectIDoFaultyObject(par_parentObjectIDoFaultyObject),
+  field_objectIDofFaultyObject(par_objectIDofFaultyObject),
+  field_objectPoolErrorCodes(par_objectPoolErrorCodes),
+  field_reserved8(par_reserved8)
+{
+}
+
+EndOfObjectPoolRes::EndOfObjectPoolRes(const EndOfObjectPoolRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.EndOfObjectPoolRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+else field_errorCodes.clean_up();
+if (other_value.parentObjectIDoFaultyObject().is_bound()) field_parentObjectIDoFaultyObject = other_value.parentObjectIDoFaultyObject();
+else field_parentObjectIDoFaultyObject.clean_up();
+if (other_value.objectIDofFaultyObject().is_bound()) field_objectIDofFaultyObject = other_value.objectIDofFaultyObject();
+else field_objectIDofFaultyObject.clean_up();
+if (other_value.objectPoolErrorCodes().is_bound()) field_objectPoolErrorCodes = other_value.objectPoolErrorCodes();
+else field_objectPoolErrorCodes.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void EndOfObjectPoolRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_errorCodes.clean_up();
+field_parentObjectIDoFaultyObject.clean_up();
+field_objectIDofFaultyObject.clean_up();
+field_objectPoolErrorCodes.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* EndOfObjectPoolRes::get_descriptor() const { return &EndOfObjectPoolRes_descr_; }
+EndOfObjectPoolRes& EndOfObjectPoolRes::operator=(const EndOfObjectPoolRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.EndOfObjectPoolRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+  else field_errorCodes.clean_up();
+  if (other_value.parentObjectIDoFaultyObject().is_bound()) field_parentObjectIDoFaultyObject = other_value.parentObjectIDoFaultyObject();
+  else field_parentObjectIDoFaultyObject.clean_up();
+  if (other_value.objectIDofFaultyObject().is_bound()) field_objectIDofFaultyObject = other_value.objectIDofFaultyObject();
+  else field_objectIDofFaultyObject.clean_up();
+  if (other_value.objectPoolErrorCodes().is_bound()) field_objectPoolErrorCodes = other_value.objectPoolErrorCodes();
+  else field_objectPoolErrorCodes.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean EndOfObjectPoolRes::operator==(const EndOfObjectPoolRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_errorCodes==other_value.field_errorCodes
+  && field_parentObjectIDoFaultyObject==other_value.field_parentObjectIDoFaultyObject
+  && field_objectIDofFaultyObject==other_value.field_objectIDofFaultyObject
+  && field_objectPoolErrorCodes==other_value.field_objectPoolErrorCodes
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean EndOfObjectPoolRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_errorCodes.is_bound())
+  || (field_parentObjectIDoFaultyObject.is_bound())
+  || (field_objectIDofFaultyObject.is_bound())
+  || (field_objectPoolErrorCodes.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean EndOfObjectPoolRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_errorCodes.is_value()
+  && field_parentObjectIDoFaultyObject.is_value()
+  && field_objectIDofFaultyObject.is_value()
+  && field_objectPoolErrorCodes.is_value()
+  && field_reserved8.is_value();
+}
+void EndOfObjectPoolRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+field_errorCodes.log();
+TTCN_Logger::log_event_str(", parentObjectIDoFaultyObject := ");
+field_parentObjectIDoFaultyObject.log();
+TTCN_Logger::log_event_str(", objectIDofFaultyObject := ");
+field_objectIDofFaultyObject.log();
+TTCN_Logger::log_event_str(", objectPoolErrorCodes := ");
+field_objectPoolErrorCodes.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void EndOfObjectPoolRes::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 @IsobusVTMessageTypes.EndOfObjectPoolRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) parentObjectIDoFaultyObject().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) objectIDofFaultyObject().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) objectPoolErrorCodes().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "parentObjectIDoFaultyObject")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          parentObjectIDoFaultyObject().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(), "objectIDofFaultyObject")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofFaultyObject().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(), "objectPoolErrorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectPoolErrorCodes().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.EndOfObjectPoolRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.EndOfObjectPoolRes");
+  }
+}
+
+void EndOfObjectPoolRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (errorCodes().is_bound()) errorCodes().set_implicit_omit();
+if (parentObjectIDoFaultyObject().is_bound()) parentObjectIDoFaultyObject().set_implicit_omit();
+if (objectIDofFaultyObject().is_bound()) objectIDofFaultyObject().set_implicit_omit();
+if (objectPoolErrorCodes().is_bound()) objectPoolErrorCodes().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void EndOfObjectPoolRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_errorCodes.encode_text(text_buf);
+field_parentObjectIDoFaultyObject.encode_text(text_buf);
+field_objectIDofFaultyObject.encode_text(text_buf);
+field_objectPoolErrorCodes.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void EndOfObjectPoolRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_errorCodes.decode_text(text_buf);
+field_parentObjectIDoFaultyObject.decode_text(text_buf);
+field_objectIDofFaultyObject.decode_text(text_buf);
+field_objectPoolErrorCodes.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void EndOfObjectPoolRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void EndOfObjectPoolRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int EndOfObjectPoolRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, EndOfObjectPoolResErrorCodes_descr_.raw->forceomit);
+  decoded_field_length = field_errorCodes.RAW_decode(EndOfObjectPoolResErrorCodes_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, AnyObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_parentObjectIDoFaultyObject.RAW_decode(AnyObjectID_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, AnyObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectIDofFaultyObject.RAW_decode(AnyObjectID_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, EndOfObjectPoolResObjectPoolErrorCodes_descr_.raw->forceomit);
+  decoded_field_length = field_objectPoolErrorCodes.RAW_decode(EndOfObjectPoolResObjectPoolErrorCodes_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, EndOfObjectPoolRes_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(EndOfObjectPoolRes_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int EndOfObjectPoolRes::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, EndOfObjectPoolResErrorCodes_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, AnyObjectID_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, AnyObjectID_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, EndOfObjectPoolResObjectPoolErrorCodes_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, EndOfObjectPoolRes_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_errorCodes.RAW_encode(EndOfObjectPoolResErrorCodes_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_parentObjectIDoFaultyObject.RAW_encode(AnyObjectID_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_objectIDofFaultyObject.RAW_encode(AnyObjectID_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_objectPoolErrorCodes.RAW_encode(EndOfObjectPoolResObjectPoolErrorCodes_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved8.RAW_encode(EndOfObjectPoolRes_reserved8_descr_, *myleaf.body.node.nodes[5]);
+  return myleaf.length = encoded_length;
+}
+
+struct EndOfObjectPoolRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+EndOfObjectPoolResErrorCodes_template field_errorCodes;
+INTEGER_template field_parentObjectIDoFaultyObject;
+INTEGER_template field_objectIDofFaultyObject;
+EndOfObjectPoolResObjectPoolErrorCodes_template field_objectPoolErrorCodes;
+OCTETSTRING_template field_reserved8;
+};
+
+void EndOfObjectPoolRes_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_vtfunction = ANY_VALUE;
+single_value->field_errorCodes = ANY_VALUE;
+single_value->field_parentObjectIDoFaultyObject = ANY_VALUE;
+single_value->field_objectIDofFaultyObject = ANY_VALUE;
+single_value->field_objectPoolErrorCodes = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void EndOfObjectPoolRes_template::copy_value(const EndOfObjectPoolRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.errorCodes().is_bound()) {
+  single_value->field_errorCodes = other_value.errorCodes();
+} else {
+  single_value->field_errorCodes.clean_up();
+}
+if (other_value.parentObjectIDoFaultyObject().is_bound()) {
+  single_value->field_parentObjectIDoFaultyObject = other_value.parentObjectIDoFaultyObject();
+} else {
+  single_value->field_parentObjectIDoFaultyObject.clean_up();
+}
+if (other_value.objectIDofFaultyObject().is_bound()) {
+  single_value->field_objectIDofFaultyObject = other_value.objectIDofFaultyObject();
+} else {
+  single_value->field_objectIDofFaultyObject.clean_up();
+}
+if (other_value.objectPoolErrorCodes().is_bound()) {
+  single_value->field_objectPoolErrorCodes = other_value.objectPoolErrorCodes();
+} else {
+  single_value->field_objectPoolErrorCodes.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void EndOfObjectPoolRes_template::copy_template(const EndOfObjectPoolRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.errorCodes().get_selection()) {
+single_value->field_errorCodes = other_value.errorCodes();
+} else {
+single_value->field_errorCodes.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.parentObjectIDoFaultyObject().get_selection()) {
+single_value->field_parentObjectIDoFaultyObject = other_value.parentObjectIDoFaultyObject();
+} else {
+single_value->field_parentObjectIDoFaultyObject.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectIDofFaultyObject().get_selection()) {
+single_value->field_objectIDofFaultyObject = other_value.objectIDofFaultyObject();
+} else {
+single_value->field_objectIDofFaultyObject.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectPoolErrorCodes().get_selection()) {
+single_value->field_objectPoolErrorCodes = other_value.objectPoolErrorCodes();
+} else {
+single_value->field_objectPoolErrorCodes.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new EndOfObjectPoolRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.EndOfObjectPoolRes.");
+break;
+}
+set_selection(other_value);
+}
+
+EndOfObjectPoolRes_template::EndOfObjectPoolRes_template()
+{
+}
+
+EndOfObjectPoolRes_template::EndOfObjectPoolRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+EndOfObjectPoolRes_template::EndOfObjectPoolRes_template(const EndOfObjectPoolRes& other_value)
+{
+copy_value(other_value);
+}
+
+EndOfObjectPoolRes_template::EndOfObjectPoolRes_template(const OPTIONAL<EndOfObjectPoolRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const EndOfObjectPoolRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.EndOfObjectPoolRes from an unbound optional field.");
+}
+}
+
+EndOfObjectPoolRes_template::EndOfObjectPoolRes_template(const EndOfObjectPoolRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+EndOfObjectPoolRes_template::~EndOfObjectPoolRes_template()
+{
+clean_up();
+}
+
+EndOfObjectPoolRes_template& EndOfObjectPoolRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+EndOfObjectPoolRes_template& EndOfObjectPoolRes_template::operator=(const EndOfObjectPoolRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+EndOfObjectPoolRes_template& EndOfObjectPoolRes_template::operator=(const OPTIONAL<EndOfObjectPoolRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const EndOfObjectPoolRes&)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 @IsobusVTMessageTypes.EndOfObjectPoolRes.");
+}
+return *this;
+}
+
+EndOfObjectPoolRes_template& EndOfObjectPoolRes_template::operator=(const EndOfObjectPoolRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean EndOfObjectPoolRes_template::match(const EndOfObjectPoolRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.errorCodes().is_bound()) return FALSE;
+if(!single_value->field_errorCodes.match(other_value.errorCodes(), legacy))return FALSE;
+if(!other_value.parentObjectIDoFaultyObject().is_bound()) return FALSE;
+if(!single_value->field_parentObjectIDoFaultyObject.match(other_value.parentObjectIDoFaultyObject(), legacy))return FALSE;
+if(!other_value.objectIDofFaultyObject().is_bound()) return FALSE;
+if(!single_value->field_objectIDofFaultyObject.match(other_value.objectIDofFaultyObject(), legacy))return FALSE;
+if(!other_value.objectPoolErrorCodes().is_bound()) return FALSE;
+if(!single_value->field_objectPoolErrorCodes.match(other_value.objectPoolErrorCodes(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.EndOfObjectPoolRes.");
+}
+return FALSE;
+}
+
+boolean EndOfObjectPoolRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_errorCodes.is_bound()
+
+ ||single_value->field_parentObjectIDoFaultyObject.is_bound()
+
+ ||single_value->field_objectIDofFaultyObject.is_bound()
+
+ ||single_value->field_objectPoolErrorCodes.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean EndOfObjectPoolRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_errorCodes.is_value()
+ &&single_value->field_parentObjectIDoFaultyObject.is_value()
+ &&single_value->field_objectIDofFaultyObject.is_value()
+ &&single_value->field_objectPoolErrorCodes.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void EndOfObjectPoolRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+EndOfObjectPoolRes EndOfObjectPoolRes_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 @IsobusVTMessageTypes.EndOfObjectPoolRes.");
+EndOfObjectPoolRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_errorCodes.is_bound()) {
+ret_val.errorCodes() = single_value->field_errorCodes.valueof();
+}
+if (single_value->field_parentObjectIDoFaultyObject.is_bound()) {
+ret_val.parentObjectIDoFaultyObject() = single_value->field_parentObjectIDoFaultyObject.valueof();
+}
+if (single_value->field_objectIDofFaultyObject.is_bound()) {
+ret_val.objectIDofFaultyObject() = single_value->field_objectIDofFaultyObject.valueof();
+}
+if (single_value->field_objectPoolErrorCodes.is_bound()) {
+ret_val.objectPoolErrorCodes() = single_value->field_objectPoolErrorCodes.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void EndOfObjectPoolRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.EndOfObjectPoolRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new EndOfObjectPoolRes_template[list_length];
+}
+
+EndOfObjectPoolRes_template& EndOfObjectPoolRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.EndOfObjectPoolRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.EndOfObjectPoolRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& EndOfObjectPoolRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& EndOfObjectPoolRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.EndOfObjectPoolRes.");
+return single_value->field_vtfunction;
+}
+
+EndOfObjectPoolResErrorCodes_template& EndOfObjectPoolRes_template::errorCodes()
+{
+set_specific();
+return single_value->field_errorCodes;
+}
+
+const EndOfObjectPoolResErrorCodes_template& EndOfObjectPoolRes_template::errorCodes() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field errorCodes of a non-specific template of type @IsobusVTMessageTypes.EndOfObjectPoolRes.");
+return single_value->field_errorCodes;
+}
+
+INTEGER_template& EndOfObjectPoolRes_template::parentObjectIDoFaultyObject()
+{
+set_specific();
+return single_value->field_parentObjectIDoFaultyObject;
+}
+
+const INTEGER_template& EndOfObjectPoolRes_template::parentObjectIDoFaultyObject() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field parentObjectIDoFaultyObject of a non-specific template of type @IsobusVTMessageTypes.EndOfObjectPoolRes.");
+return single_value->field_parentObjectIDoFaultyObject;
+}
+
+INTEGER_template& EndOfObjectPoolRes_template::objectIDofFaultyObject()
+{
+set_specific();
+return single_value->field_objectIDofFaultyObject;
+}
+
+const INTEGER_template& EndOfObjectPoolRes_template::objectIDofFaultyObject() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectIDofFaultyObject of a non-specific template of type @IsobusVTMessageTypes.EndOfObjectPoolRes.");
+return single_value->field_objectIDofFaultyObject;
+}
+
+EndOfObjectPoolResObjectPoolErrorCodes_template& EndOfObjectPoolRes_template::objectPoolErrorCodes()
+{
+set_specific();
+return single_value->field_objectPoolErrorCodes;
+}
+
+const EndOfObjectPoolResObjectPoolErrorCodes_template& EndOfObjectPoolRes_template::objectPoolErrorCodes() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectPoolErrorCodes of a non-specific template of type @IsobusVTMessageTypes.EndOfObjectPoolRes.");
+return single_value->field_objectPoolErrorCodes;
+}
+
+OCTETSTRING_template& EndOfObjectPoolRes_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& EndOfObjectPoolRes_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.EndOfObjectPoolRes.");
+return single_value->field_reserved8;
+}
+
+int EndOfObjectPoolRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.EndOfObjectPoolRes 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 @IsobusVTMessageTypes.EndOfObjectPoolRes 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 @IsobusVTMessageTypes.EndOfObjectPoolRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.EndOfObjectPoolRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.EndOfObjectPoolRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.EndOfObjectPoolRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.EndOfObjectPoolRes.");
+  }
+  return 0;
+}
+
+void EndOfObjectPoolRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log();
+TTCN_Logger::log_event_str(", parentObjectIDoFaultyObject := ");
+single_value->field_parentObjectIDoFaultyObject.log();
+TTCN_Logger::log_event_str(", objectIDofFaultyObject := ");
+single_value->field_objectIDofFaultyObject.log();
+TTCN_Logger::log_event_str(", objectPoolErrorCodes := ");
+single_value->field_objectPoolErrorCodes.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void EndOfObjectPoolRes_template::log_match(const EndOfObjectPoolRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_errorCodes.match(match_value.errorCodes(), legacy)){
+TTCN_Logger::log_logmatch_info(".errorCodes");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_parentObjectIDoFaultyObject.match(match_value.parentObjectIDoFaultyObject(), legacy)){
+TTCN_Logger::log_logmatch_info(".parentObjectIDoFaultyObject");
+single_value->field_parentObjectIDoFaultyObject.log_match(match_value.parentObjectIDoFaultyObject(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectIDofFaultyObject.match(match_value.objectIDofFaultyObject(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectIDofFaultyObject");
+single_value->field_objectIDofFaultyObject.log_match(match_value.objectIDofFaultyObject(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectPoolErrorCodes.match(match_value.objectPoolErrorCodes(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectPoolErrorCodes");
+single_value->field_objectPoolErrorCodes.log_match(match_value.objectPoolErrorCodes(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::log_event_str(", parentObjectIDoFaultyObject := ");
+single_value->field_parentObjectIDoFaultyObject.log_match(match_value.parentObjectIDoFaultyObject(), legacy);
+TTCN_Logger::log_event_str(", objectIDofFaultyObject := ");
+single_value->field_objectIDofFaultyObject.log_match(match_value.objectIDofFaultyObject(), legacy);
+TTCN_Logger::log_event_str(", objectPoolErrorCodes := ");
+single_value->field_objectPoolErrorCodes.log_match(match_value.objectPoolErrorCodes(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 EndOfObjectPoolRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_errorCodes.encode_text(text_buf);
+single_value->field_parentObjectIDoFaultyObject.encode_text(text_buf);
+single_value->field_objectIDofFaultyObject.encode_text(text_buf);
+single_value->field_objectPoolErrorCodes.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.EndOfObjectPoolRes.");
+}
+}
+
+void EndOfObjectPoolRes_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_vtfunction.decode_text(text_buf);
+single_value->field_errorCodes.decode_text(text_buf);
+single_value->field_parentObjectIDoFaultyObject.decode_text(text_buf);
+single_value->field_objectIDofFaultyObject.decode_text(text_buf);
+single_value->field_objectPoolErrorCodes.decode_text(text_buf);
+single_value->field_reserved8.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 EndOfObjectPoolRes_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 @IsobusVTMessageTypes.EndOfObjectPoolRes.");
+}
+}
+
+void EndOfObjectPoolRes_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: {
+    EndOfObjectPoolRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.EndOfObjectPoolRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) parentObjectIDoFaultyObject().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) objectIDofFaultyObject().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) objectPoolErrorCodes().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "parentObjectIDoFaultyObject")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          parentObjectIDoFaultyObject().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(), "objectIDofFaultyObject")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofFaultyObject().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(), "objectPoolErrorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectPoolErrorCodes().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.EndOfObjectPoolRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.EndOfObjectPoolRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void EndOfObjectPoolRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EndOfObjectPoolRes");
+single_value->field_errorCodes.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EndOfObjectPoolRes");
+single_value->field_parentObjectIDoFaultyObject.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EndOfObjectPoolRes");
+single_value->field_objectIDofFaultyObject.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EndOfObjectPoolRes");
+single_value->field_objectPoolErrorCodes.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EndOfObjectPoolRes");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EndOfObjectPoolRes");
+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 : "@IsobusVTMessageTypes.EndOfObjectPoolRes");
+}
+
+boolean EndOfObjectPoolRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean EndOfObjectPoolRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+VTfunction32VT2ECU::VTfunction32VT2ECU()
+{
+}
+
+VTfunction32VT2ECU::VTfunction32VT2ECU(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_notImplementedYet)
+  :   field_vtfunction(par_vtfunction),
+  field_notImplementedYet(par_notImplementedYet)
+{
+}
+
+VTfunction32VT2ECU::VTfunction32VT2ECU(const VTfunction32VT2ECU& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.VTfunction32VT2ECU.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.notImplementedYet().is_bound()) field_notImplementedYet = other_value.notImplementedYet();
+else field_notImplementedYet.clean_up();
+}
+
+void VTfunction32VT2ECU::clean_up()
+{
+field_vtfunction.clean_up();
+field_notImplementedYet.clean_up();
+}
+
+const TTCN_Typedescriptor_t* VTfunction32VT2ECU::get_descriptor() const { return &VTfunction32VT2ECU_descr_; }
+VTfunction32VT2ECU& VTfunction32VT2ECU::operator=(const VTfunction32VT2ECU& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.VTfunction32VT2ECU.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.notImplementedYet().is_bound()) field_notImplementedYet = other_value.notImplementedYet();
+  else field_notImplementedYet.clean_up();
+}
+return *this;
+}
+
+boolean VTfunction32VT2ECU::operator==(const VTfunction32VT2ECU& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_notImplementedYet==other_value.field_notImplementedYet;
+}
+
+boolean VTfunction32VT2ECU::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_notImplementedYet.is_bound());
+}
+boolean VTfunction32VT2ECU::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_notImplementedYet.is_value();
+}
+void VTfunction32VT2ECU::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", notImplementedYet := ");
+field_notImplementedYet.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void VTfunction32VT2ECU::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 @IsobusVTMessageTypes.VTfunction32VT2ECU 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) notImplementedYet().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "notImplementedYet")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          notImplementedYet().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 @IsobusVTMessageTypes.VTfunction32VT2ECU: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.VTfunction32VT2ECU");
+  }
+}
+
+void VTfunction32VT2ECU::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (notImplementedYet().is_bound()) notImplementedYet().set_implicit_omit();
+}
+
+void VTfunction32VT2ECU::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_notImplementedYet.encode_text(text_buf);
+}
+
+void VTfunction32VT2ECU::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_notImplementedYet.decode_text(text_buf);
+}
+
+void VTfunction32VT2ECU::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void VTfunction32VT2ECU::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int VTfunction32VT2ECU::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, OCTETSTRING_descr_.raw->forceomit);
+  decoded_field_length = field_notImplementedYet.RAW_decode(OCTETSTRING_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 VTfunction32VT2ECU::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, OCTETSTRING_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_notImplementedYet.RAW_encode(OCTETSTRING_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct VTfunction32VT2ECU_template::single_value_struct {
+INTEGER_template field_vtfunction;
+OCTETSTRING_template field_notImplementedYet;
+};
+
+void VTfunction32VT2ECU_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_vtfunction = ANY_VALUE;
+single_value->field_notImplementedYet = ANY_VALUE;
+}
+}
+}
+
+void VTfunction32VT2ECU_template::copy_value(const VTfunction32VT2ECU& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.notImplementedYet().is_bound()) {
+  single_value->field_notImplementedYet = other_value.notImplementedYet();
+} else {
+  single_value->field_notImplementedYet.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void VTfunction32VT2ECU_template::copy_template(const VTfunction32VT2ECU_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.notImplementedYet().get_selection()) {
+single_value->field_notImplementedYet = other_value.notImplementedYet();
+} else {
+single_value->field_notImplementedYet.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new VTfunction32VT2ECU_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTfunction32VT2ECU.");
+break;
+}
+set_selection(other_value);
+}
+
+VTfunction32VT2ECU_template::VTfunction32VT2ECU_template()
+{
+}
+
+VTfunction32VT2ECU_template::VTfunction32VT2ECU_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+VTfunction32VT2ECU_template::VTfunction32VT2ECU_template(const VTfunction32VT2ECU& other_value)
+{
+copy_value(other_value);
+}
+
+VTfunction32VT2ECU_template::VTfunction32VT2ECU_template(const OPTIONAL<VTfunction32VT2ECU>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTfunction32VT2ECU&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.VTfunction32VT2ECU from an unbound optional field.");
+}
+}
+
+VTfunction32VT2ECU_template::VTfunction32VT2ECU_template(const VTfunction32VT2ECU_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+VTfunction32VT2ECU_template::~VTfunction32VT2ECU_template()
+{
+clean_up();
+}
+
+VTfunction32VT2ECU_template& VTfunction32VT2ECU_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+VTfunction32VT2ECU_template& VTfunction32VT2ECU_template::operator=(const VTfunction32VT2ECU& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+VTfunction32VT2ECU_template& VTfunction32VT2ECU_template::operator=(const OPTIONAL<VTfunction32VT2ECU>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTfunction32VT2ECU&)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 @IsobusVTMessageTypes.VTfunction32VT2ECU.");
+}
+return *this;
+}
+
+VTfunction32VT2ECU_template& VTfunction32VT2ECU_template::operator=(const VTfunction32VT2ECU_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean VTfunction32VT2ECU_template::match(const VTfunction32VT2ECU& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.notImplementedYet().is_bound()) return FALSE;
+if(!single_value->field_notImplementedYet.match(other_value.notImplementedYet(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTfunction32VT2ECU.");
+}
+return FALSE;
+}
+
+boolean VTfunction32VT2ECU_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_notImplementedYet.is_bound()
+;
+}
+
+boolean VTfunction32VT2ECU_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_notImplementedYet.is_value();
+}
+
+void VTfunction32VT2ECU_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+VTfunction32VT2ECU VTfunction32VT2ECU_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 @IsobusVTMessageTypes.VTfunction32VT2ECU.");
+VTfunction32VT2ECU ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_notImplementedYet.is_bound()) {
+ret_val.notImplementedYet() = single_value->field_notImplementedYet.valueof();
+}
+return ret_val;
+}
+
+void VTfunction32VT2ECU_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.VTfunction32VT2ECU.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new VTfunction32VT2ECU_template[list_length];
+}
+
+VTfunction32VT2ECU_template& VTfunction32VT2ECU_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.VTfunction32VT2ECU.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.VTfunction32VT2ECU.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& VTfunction32VT2ECU_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& VTfunction32VT2ECU_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.VTfunction32VT2ECU.");
+return single_value->field_vtfunction;
+}
+
+OCTETSTRING_template& VTfunction32VT2ECU_template::notImplementedYet()
+{
+set_specific();
+return single_value->field_notImplementedYet;
+}
+
+const OCTETSTRING_template& VTfunction32VT2ECU_template::notImplementedYet() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field notImplementedYet of a non-specific template of type @IsobusVTMessageTypes.VTfunction32VT2ECU.");
+return single_value->field_notImplementedYet;
+}
+
+int VTfunction32VT2ECU_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction32VT2ECU 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 @IsobusVTMessageTypes.VTfunction32VT2ECU 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 @IsobusVTMessageTypes.VTfunction32VT2ECU containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction32VT2ECU containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction32VT2ECU containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction32VT2ECU containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTfunction32VT2ECU.");
+  }
+  return 0;
+}
+
+void VTfunction32VT2ECU_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", notImplementedYet := ");
+single_value->field_notImplementedYet.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void VTfunction32VT2ECU_template::log_match(const VTfunction32VT2ECU& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_notImplementedYet.match(match_value.notImplementedYet(), legacy)){
+TTCN_Logger::log_logmatch_info(".notImplementedYet");
+single_value->field_notImplementedYet.log_match(match_value.notImplementedYet(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", notImplementedYet := ");
+single_value->field_notImplementedYet.log_match(match_value.notImplementedYet(), 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 VTfunction32VT2ECU_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_notImplementedYet.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 @IsobusVTMessageTypes.VTfunction32VT2ECU.");
+}
+}
+
+void VTfunction32VT2ECU_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_vtfunction.decode_text(text_buf);
+single_value->field_notImplementedYet.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 VTfunction32VT2ECU_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 @IsobusVTMessageTypes.VTfunction32VT2ECU.");
+}
+}
+
+void VTfunction32VT2ECU_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: {
+    VTfunction32VT2ECU_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.VTfunction32VT2ECU 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) notImplementedYet().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "notImplementedYet")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          notImplementedYet().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 @IsobusVTMessageTypes.VTfunction32VT2ECU: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.VTfunction32VT2ECU");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void VTfunction32VT2ECU_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTfunction32VT2ECU");
+single_value->field_notImplementedYet.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTfunction32VT2ECU");
+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 : "@IsobusVTMessageTypes.VTfunction32VT2ECU");
+}
+
+boolean VTfunction32VT2ECU_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean VTfunction32VT2ECU_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+VTfunction32ECU2VT::VTfunction32ECU2VT()
+{
+}
+
+VTfunction32ECU2VT::VTfunction32ECU2VT(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_notImplementedYet)
+  :   field_vtfunction(par_vtfunction),
+  field_notImplementedYet(par_notImplementedYet)
+{
+}
+
+VTfunction32ECU2VT::VTfunction32ECU2VT(const VTfunction32ECU2VT& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.VTfunction32ECU2VT.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.notImplementedYet().is_bound()) field_notImplementedYet = other_value.notImplementedYet();
+else field_notImplementedYet.clean_up();
+}
+
+void VTfunction32ECU2VT::clean_up()
+{
+field_vtfunction.clean_up();
+field_notImplementedYet.clean_up();
+}
+
+const TTCN_Typedescriptor_t* VTfunction32ECU2VT::get_descriptor() const { return &VTfunction32ECU2VT_descr_; }
+VTfunction32ECU2VT& VTfunction32ECU2VT::operator=(const VTfunction32ECU2VT& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.VTfunction32ECU2VT.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.notImplementedYet().is_bound()) field_notImplementedYet = other_value.notImplementedYet();
+  else field_notImplementedYet.clean_up();
+}
+return *this;
+}
+
+boolean VTfunction32ECU2VT::operator==(const VTfunction32ECU2VT& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_notImplementedYet==other_value.field_notImplementedYet;
+}
+
+boolean VTfunction32ECU2VT::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_notImplementedYet.is_bound());
+}
+boolean VTfunction32ECU2VT::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_notImplementedYet.is_value();
+}
+void VTfunction32ECU2VT::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", notImplementedYet := ");
+field_notImplementedYet.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void VTfunction32ECU2VT::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 @IsobusVTMessageTypes.VTfunction32ECU2VT 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) notImplementedYet().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "notImplementedYet")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          notImplementedYet().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 @IsobusVTMessageTypes.VTfunction32ECU2VT: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.VTfunction32ECU2VT");
+  }
+}
+
+void VTfunction32ECU2VT::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (notImplementedYet().is_bound()) notImplementedYet().set_implicit_omit();
+}
+
+void VTfunction32ECU2VT::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_notImplementedYet.encode_text(text_buf);
+}
+
+void VTfunction32ECU2VT::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_notImplementedYet.decode_text(text_buf);
+}
+
+void VTfunction32ECU2VT::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void VTfunction32ECU2VT::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int VTfunction32ECU2VT::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, OCTETSTRING_descr_.raw->forceomit);
+  decoded_field_length = field_notImplementedYet.RAW_decode(OCTETSTRING_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 VTfunction32ECU2VT::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, OCTETSTRING_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_notImplementedYet.RAW_encode(OCTETSTRING_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct VTfunction32ECU2VT_template::single_value_struct {
+INTEGER_template field_vtfunction;
+OCTETSTRING_template field_notImplementedYet;
+};
+
+void VTfunction32ECU2VT_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_vtfunction = ANY_VALUE;
+single_value->field_notImplementedYet = ANY_VALUE;
+}
+}
+}
+
+void VTfunction32ECU2VT_template::copy_value(const VTfunction32ECU2VT& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.notImplementedYet().is_bound()) {
+  single_value->field_notImplementedYet = other_value.notImplementedYet();
+} else {
+  single_value->field_notImplementedYet.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void VTfunction32ECU2VT_template::copy_template(const VTfunction32ECU2VT_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.notImplementedYet().get_selection()) {
+single_value->field_notImplementedYet = other_value.notImplementedYet();
+} else {
+single_value->field_notImplementedYet.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new VTfunction32ECU2VT_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTfunction32ECU2VT.");
+break;
+}
+set_selection(other_value);
+}
+
+VTfunction32ECU2VT_template::VTfunction32ECU2VT_template()
+{
+}
+
+VTfunction32ECU2VT_template::VTfunction32ECU2VT_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+VTfunction32ECU2VT_template::VTfunction32ECU2VT_template(const VTfunction32ECU2VT& other_value)
+{
+copy_value(other_value);
+}
+
+VTfunction32ECU2VT_template::VTfunction32ECU2VT_template(const OPTIONAL<VTfunction32ECU2VT>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTfunction32ECU2VT&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.VTfunction32ECU2VT from an unbound optional field.");
+}
+}
+
+VTfunction32ECU2VT_template::VTfunction32ECU2VT_template(const VTfunction32ECU2VT_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+VTfunction32ECU2VT_template::~VTfunction32ECU2VT_template()
+{
+clean_up();
+}
+
+VTfunction32ECU2VT_template& VTfunction32ECU2VT_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+VTfunction32ECU2VT_template& VTfunction32ECU2VT_template::operator=(const VTfunction32ECU2VT& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+VTfunction32ECU2VT_template& VTfunction32ECU2VT_template::operator=(const OPTIONAL<VTfunction32ECU2VT>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTfunction32ECU2VT&)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 @IsobusVTMessageTypes.VTfunction32ECU2VT.");
+}
+return *this;
+}
+
+VTfunction32ECU2VT_template& VTfunction32ECU2VT_template::operator=(const VTfunction32ECU2VT_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean VTfunction32ECU2VT_template::match(const VTfunction32ECU2VT& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.notImplementedYet().is_bound()) return FALSE;
+if(!single_value->field_notImplementedYet.match(other_value.notImplementedYet(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTfunction32ECU2VT.");
+}
+return FALSE;
+}
+
+boolean VTfunction32ECU2VT_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_notImplementedYet.is_bound()
+;
+}
+
+boolean VTfunction32ECU2VT_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_notImplementedYet.is_value();
+}
+
+void VTfunction32ECU2VT_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+VTfunction32ECU2VT VTfunction32ECU2VT_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 @IsobusVTMessageTypes.VTfunction32ECU2VT.");
+VTfunction32ECU2VT ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_notImplementedYet.is_bound()) {
+ret_val.notImplementedYet() = single_value->field_notImplementedYet.valueof();
+}
+return ret_val;
+}
+
+void VTfunction32ECU2VT_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.VTfunction32ECU2VT.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new VTfunction32ECU2VT_template[list_length];
+}
+
+VTfunction32ECU2VT_template& VTfunction32ECU2VT_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.VTfunction32ECU2VT.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.VTfunction32ECU2VT.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& VTfunction32ECU2VT_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& VTfunction32ECU2VT_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.VTfunction32ECU2VT.");
+return single_value->field_vtfunction;
+}
+
+OCTETSTRING_template& VTfunction32ECU2VT_template::notImplementedYet()
+{
+set_specific();
+return single_value->field_notImplementedYet;
+}
+
+const OCTETSTRING_template& VTfunction32ECU2VT_template::notImplementedYet() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field notImplementedYet of a non-specific template of type @IsobusVTMessageTypes.VTfunction32ECU2VT.");
+return single_value->field_notImplementedYet;
+}
+
+int VTfunction32ECU2VT_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction32ECU2VT 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 @IsobusVTMessageTypes.VTfunction32ECU2VT 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 @IsobusVTMessageTypes.VTfunction32ECU2VT containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction32ECU2VT containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction32ECU2VT containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction32ECU2VT containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTfunction32ECU2VT.");
+  }
+  return 0;
+}
+
+void VTfunction32ECU2VT_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", notImplementedYet := ");
+single_value->field_notImplementedYet.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void VTfunction32ECU2VT_template::log_match(const VTfunction32ECU2VT& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_notImplementedYet.match(match_value.notImplementedYet(), legacy)){
+TTCN_Logger::log_logmatch_info(".notImplementedYet");
+single_value->field_notImplementedYet.log_match(match_value.notImplementedYet(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", notImplementedYet := ");
+single_value->field_notImplementedYet.log_match(match_value.notImplementedYet(), 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 VTfunction32ECU2VT_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_notImplementedYet.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 @IsobusVTMessageTypes.VTfunction32ECU2VT.");
+}
+}
+
+void VTfunction32ECU2VT_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_vtfunction.decode_text(text_buf);
+single_value->field_notImplementedYet.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 VTfunction32ECU2VT_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 @IsobusVTMessageTypes.VTfunction32ECU2VT.");
+}
+}
+
+void VTfunction32ECU2VT_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: {
+    VTfunction32ECU2VT_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.VTfunction32ECU2VT 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) notImplementedYet().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "notImplementedYet")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          notImplementedYet().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 @IsobusVTMessageTypes.VTfunction32ECU2VT: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.VTfunction32ECU2VT");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void VTfunction32ECU2VT_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTfunction32ECU2VT");
+single_value->field_notImplementedYet.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTfunction32ECU2VT");
+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 : "@IsobusVTMessageTypes.VTfunction32ECU2VT");
+}
+
+boolean VTfunction32ECU2VT_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean VTfunction32ECU2VT_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+VTfunction33ECU2VT::VTfunction33ECU2VT()
+{
+}
+
+VTfunction33ECU2VT::VTfunction33ECU2VT(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_notImplementedYet)
+  :   field_vtfunction(par_vtfunction),
+  field_notImplementedYet(par_notImplementedYet)
+{
+}
+
+VTfunction33ECU2VT::VTfunction33ECU2VT(const VTfunction33ECU2VT& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.VTfunction33ECU2VT.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.notImplementedYet().is_bound()) field_notImplementedYet = other_value.notImplementedYet();
+else field_notImplementedYet.clean_up();
+}
+
+void VTfunction33ECU2VT::clean_up()
+{
+field_vtfunction.clean_up();
+field_notImplementedYet.clean_up();
+}
+
+const TTCN_Typedescriptor_t* VTfunction33ECU2VT::get_descriptor() const { return &VTfunction33ECU2VT_descr_; }
+VTfunction33ECU2VT& VTfunction33ECU2VT::operator=(const VTfunction33ECU2VT& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.VTfunction33ECU2VT.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.notImplementedYet().is_bound()) field_notImplementedYet = other_value.notImplementedYet();
+  else field_notImplementedYet.clean_up();
+}
+return *this;
+}
+
+boolean VTfunction33ECU2VT::operator==(const VTfunction33ECU2VT& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_notImplementedYet==other_value.field_notImplementedYet;
+}
+
+boolean VTfunction33ECU2VT::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_notImplementedYet.is_bound());
+}
+boolean VTfunction33ECU2VT::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_notImplementedYet.is_value();
+}
+void VTfunction33ECU2VT::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", notImplementedYet := ");
+field_notImplementedYet.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void VTfunction33ECU2VT::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 @IsobusVTMessageTypes.VTfunction33ECU2VT 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) notImplementedYet().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "notImplementedYet")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          notImplementedYet().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 @IsobusVTMessageTypes.VTfunction33ECU2VT: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.VTfunction33ECU2VT");
+  }
+}
+
+void VTfunction33ECU2VT::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (notImplementedYet().is_bound()) notImplementedYet().set_implicit_omit();
+}
+
+void VTfunction33ECU2VT::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_notImplementedYet.encode_text(text_buf);
+}
+
+void VTfunction33ECU2VT::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_notImplementedYet.decode_text(text_buf);
+}
+
+void VTfunction33ECU2VT::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void VTfunction33ECU2VT::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int VTfunction33ECU2VT::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, OCTETSTRING_descr_.raw->forceomit);
+  decoded_field_length = field_notImplementedYet.RAW_decode(OCTETSTRING_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 VTfunction33ECU2VT::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, OCTETSTRING_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_notImplementedYet.RAW_encode(OCTETSTRING_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct VTfunction33ECU2VT_template::single_value_struct {
+INTEGER_template field_vtfunction;
+OCTETSTRING_template field_notImplementedYet;
+};
+
+void VTfunction33ECU2VT_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_vtfunction = ANY_VALUE;
+single_value->field_notImplementedYet = ANY_VALUE;
+}
+}
+}
+
+void VTfunction33ECU2VT_template::copy_value(const VTfunction33ECU2VT& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.notImplementedYet().is_bound()) {
+  single_value->field_notImplementedYet = other_value.notImplementedYet();
+} else {
+  single_value->field_notImplementedYet.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void VTfunction33ECU2VT_template::copy_template(const VTfunction33ECU2VT_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.notImplementedYet().get_selection()) {
+single_value->field_notImplementedYet = other_value.notImplementedYet();
+} else {
+single_value->field_notImplementedYet.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new VTfunction33ECU2VT_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTfunction33ECU2VT.");
+break;
+}
+set_selection(other_value);
+}
+
+VTfunction33ECU2VT_template::VTfunction33ECU2VT_template()
+{
+}
+
+VTfunction33ECU2VT_template::VTfunction33ECU2VT_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+VTfunction33ECU2VT_template::VTfunction33ECU2VT_template(const VTfunction33ECU2VT& other_value)
+{
+copy_value(other_value);
+}
+
+VTfunction33ECU2VT_template::VTfunction33ECU2VT_template(const OPTIONAL<VTfunction33ECU2VT>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTfunction33ECU2VT&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.VTfunction33ECU2VT from an unbound optional field.");
+}
+}
+
+VTfunction33ECU2VT_template::VTfunction33ECU2VT_template(const VTfunction33ECU2VT_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+VTfunction33ECU2VT_template::~VTfunction33ECU2VT_template()
+{
+clean_up();
+}
+
+VTfunction33ECU2VT_template& VTfunction33ECU2VT_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+VTfunction33ECU2VT_template& VTfunction33ECU2VT_template::operator=(const VTfunction33ECU2VT& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+VTfunction33ECU2VT_template& VTfunction33ECU2VT_template::operator=(const OPTIONAL<VTfunction33ECU2VT>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTfunction33ECU2VT&)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 @IsobusVTMessageTypes.VTfunction33ECU2VT.");
+}
+return *this;
+}
+
+VTfunction33ECU2VT_template& VTfunction33ECU2VT_template::operator=(const VTfunction33ECU2VT_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean VTfunction33ECU2VT_template::match(const VTfunction33ECU2VT& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.notImplementedYet().is_bound()) return FALSE;
+if(!single_value->field_notImplementedYet.match(other_value.notImplementedYet(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTfunction33ECU2VT.");
+}
+return FALSE;
+}
+
+boolean VTfunction33ECU2VT_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_notImplementedYet.is_bound()
+;
+}
+
+boolean VTfunction33ECU2VT_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_notImplementedYet.is_value();
+}
+
+void VTfunction33ECU2VT_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+VTfunction33ECU2VT VTfunction33ECU2VT_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 @IsobusVTMessageTypes.VTfunction33ECU2VT.");
+VTfunction33ECU2VT ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_notImplementedYet.is_bound()) {
+ret_val.notImplementedYet() = single_value->field_notImplementedYet.valueof();
+}
+return ret_val;
+}
+
+void VTfunction33ECU2VT_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.VTfunction33ECU2VT.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new VTfunction33ECU2VT_template[list_length];
+}
+
+VTfunction33ECU2VT_template& VTfunction33ECU2VT_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.VTfunction33ECU2VT.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.VTfunction33ECU2VT.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& VTfunction33ECU2VT_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& VTfunction33ECU2VT_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.VTfunction33ECU2VT.");
+return single_value->field_vtfunction;
+}
+
+OCTETSTRING_template& VTfunction33ECU2VT_template::notImplementedYet()
+{
+set_specific();
+return single_value->field_notImplementedYet;
+}
+
+const OCTETSTRING_template& VTfunction33ECU2VT_template::notImplementedYet() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field notImplementedYet of a non-specific template of type @IsobusVTMessageTypes.VTfunction33ECU2VT.");
+return single_value->field_notImplementedYet;
+}
+
+int VTfunction33ECU2VT_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction33ECU2VT 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 @IsobusVTMessageTypes.VTfunction33ECU2VT 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 @IsobusVTMessageTypes.VTfunction33ECU2VT containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction33ECU2VT containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction33ECU2VT containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction33ECU2VT containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTfunction33ECU2VT.");
+  }
+  return 0;
+}
+
+void VTfunction33ECU2VT_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", notImplementedYet := ");
+single_value->field_notImplementedYet.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void VTfunction33ECU2VT_template::log_match(const VTfunction33ECU2VT& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_notImplementedYet.match(match_value.notImplementedYet(), legacy)){
+TTCN_Logger::log_logmatch_info(".notImplementedYet");
+single_value->field_notImplementedYet.log_match(match_value.notImplementedYet(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", notImplementedYet := ");
+single_value->field_notImplementedYet.log_match(match_value.notImplementedYet(), 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 VTfunction33ECU2VT_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_notImplementedYet.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 @IsobusVTMessageTypes.VTfunction33ECU2VT.");
+}
+}
+
+void VTfunction33ECU2VT_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_vtfunction.decode_text(text_buf);
+single_value->field_notImplementedYet.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 VTfunction33ECU2VT_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 @IsobusVTMessageTypes.VTfunction33ECU2VT.");
+}
+}
+
+void VTfunction33ECU2VT_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: {
+    VTfunction33ECU2VT_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.VTfunction33ECU2VT 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) notImplementedYet().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "notImplementedYet")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          notImplementedYet().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 @IsobusVTMessageTypes.VTfunction33ECU2VT: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.VTfunction33ECU2VT");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void VTfunction33ECU2VT_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTfunction33ECU2VT");
+single_value->field_notImplementedYet.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTfunction33ECU2VT");
+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 : "@IsobusVTMessageTypes.VTfunction33ECU2VT");
+}
+
+boolean VTfunction33ECU2VT_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean VTfunction33ECU2VT_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+VTfunction34VT2ECU::VTfunction34VT2ECU()
+{
+}
+
+VTfunction34VT2ECU::VTfunction34VT2ECU(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_notImplementedYet)
+  :   field_vtfunction(par_vtfunction),
+  field_notImplementedYet(par_notImplementedYet)
+{
+}
+
+VTfunction34VT2ECU::VTfunction34VT2ECU(const VTfunction34VT2ECU& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.VTfunction34VT2ECU.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.notImplementedYet().is_bound()) field_notImplementedYet = other_value.notImplementedYet();
+else field_notImplementedYet.clean_up();
+}
+
+void VTfunction34VT2ECU::clean_up()
+{
+field_vtfunction.clean_up();
+field_notImplementedYet.clean_up();
+}
+
+const TTCN_Typedescriptor_t* VTfunction34VT2ECU::get_descriptor() const { return &VTfunction34VT2ECU_descr_; }
+VTfunction34VT2ECU& VTfunction34VT2ECU::operator=(const VTfunction34VT2ECU& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.VTfunction34VT2ECU.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.notImplementedYet().is_bound()) field_notImplementedYet = other_value.notImplementedYet();
+  else field_notImplementedYet.clean_up();
+}
+return *this;
+}
+
+boolean VTfunction34VT2ECU::operator==(const VTfunction34VT2ECU& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_notImplementedYet==other_value.field_notImplementedYet;
+}
+
+boolean VTfunction34VT2ECU::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_notImplementedYet.is_bound());
+}
+boolean VTfunction34VT2ECU::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_notImplementedYet.is_value();
+}
+void VTfunction34VT2ECU::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", notImplementedYet := ");
+field_notImplementedYet.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void VTfunction34VT2ECU::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 @IsobusVTMessageTypes.VTfunction34VT2ECU 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) notImplementedYet().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "notImplementedYet")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          notImplementedYet().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 @IsobusVTMessageTypes.VTfunction34VT2ECU: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.VTfunction34VT2ECU");
+  }
+}
+
+void VTfunction34VT2ECU::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (notImplementedYet().is_bound()) notImplementedYet().set_implicit_omit();
+}
+
+void VTfunction34VT2ECU::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_notImplementedYet.encode_text(text_buf);
+}
+
+void VTfunction34VT2ECU::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_notImplementedYet.decode_text(text_buf);
+}
+
+void VTfunction34VT2ECU::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void VTfunction34VT2ECU::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int VTfunction34VT2ECU::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, OCTETSTRING_descr_.raw->forceomit);
+  decoded_field_length = field_notImplementedYet.RAW_decode(OCTETSTRING_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 VTfunction34VT2ECU::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, OCTETSTRING_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_notImplementedYet.RAW_encode(OCTETSTRING_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct VTfunction34VT2ECU_template::single_value_struct {
+INTEGER_template field_vtfunction;
+OCTETSTRING_template field_notImplementedYet;
+};
+
+void VTfunction34VT2ECU_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_vtfunction = ANY_VALUE;
+single_value->field_notImplementedYet = ANY_VALUE;
+}
+}
+}
+
+void VTfunction34VT2ECU_template::copy_value(const VTfunction34VT2ECU& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.notImplementedYet().is_bound()) {
+  single_value->field_notImplementedYet = other_value.notImplementedYet();
+} else {
+  single_value->field_notImplementedYet.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void VTfunction34VT2ECU_template::copy_template(const VTfunction34VT2ECU_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.notImplementedYet().get_selection()) {
+single_value->field_notImplementedYet = other_value.notImplementedYet();
+} else {
+single_value->field_notImplementedYet.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new VTfunction34VT2ECU_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTfunction34VT2ECU.");
+break;
+}
+set_selection(other_value);
+}
+
+VTfunction34VT2ECU_template::VTfunction34VT2ECU_template()
+{
+}
+
+VTfunction34VT2ECU_template::VTfunction34VT2ECU_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+VTfunction34VT2ECU_template::VTfunction34VT2ECU_template(const VTfunction34VT2ECU& other_value)
+{
+copy_value(other_value);
+}
+
+VTfunction34VT2ECU_template::VTfunction34VT2ECU_template(const OPTIONAL<VTfunction34VT2ECU>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTfunction34VT2ECU&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.VTfunction34VT2ECU from an unbound optional field.");
+}
+}
+
+VTfunction34VT2ECU_template::VTfunction34VT2ECU_template(const VTfunction34VT2ECU_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+VTfunction34VT2ECU_template::~VTfunction34VT2ECU_template()
+{
+clean_up();
+}
+
+VTfunction34VT2ECU_template& VTfunction34VT2ECU_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+VTfunction34VT2ECU_template& VTfunction34VT2ECU_template::operator=(const VTfunction34VT2ECU& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+VTfunction34VT2ECU_template& VTfunction34VT2ECU_template::operator=(const OPTIONAL<VTfunction34VT2ECU>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTfunction34VT2ECU&)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 @IsobusVTMessageTypes.VTfunction34VT2ECU.");
+}
+return *this;
+}
+
+VTfunction34VT2ECU_template& VTfunction34VT2ECU_template::operator=(const VTfunction34VT2ECU_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean VTfunction34VT2ECU_template::match(const VTfunction34VT2ECU& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.notImplementedYet().is_bound()) return FALSE;
+if(!single_value->field_notImplementedYet.match(other_value.notImplementedYet(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTfunction34VT2ECU.");
+}
+return FALSE;
+}
+
+boolean VTfunction34VT2ECU_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_notImplementedYet.is_bound()
+;
+}
+
+boolean VTfunction34VT2ECU_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_notImplementedYet.is_value();
+}
+
+void VTfunction34VT2ECU_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+VTfunction34VT2ECU VTfunction34VT2ECU_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 @IsobusVTMessageTypes.VTfunction34VT2ECU.");
+VTfunction34VT2ECU ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_notImplementedYet.is_bound()) {
+ret_val.notImplementedYet() = single_value->field_notImplementedYet.valueof();
+}
+return ret_val;
+}
+
+void VTfunction34VT2ECU_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.VTfunction34VT2ECU.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new VTfunction34VT2ECU_template[list_length];
+}
+
+VTfunction34VT2ECU_template& VTfunction34VT2ECU_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.VTfunction34VT2ECU.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.VTfunction34VT2ECU.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& VTfunction34VT2ECU_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& VTfunction34VT2ECU_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.VTfunction34VT2ECU.");
+return single_value->field_vtfunction;
+}
+
+OCTETSTRING_template& VTfunction34VT2ECU_template::notImplementedYet()
+{
+set_specific();
+return single_value->field_notImplementedYet;
+}
+
+const OCTETSTRING_template& VTfunction34VT2ECU_template::notImplementedYet() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field notImplementedYet of a non-specific template of type @IsobusVTMessageTypes.VTfunction34VT2ECU.");
+return single_value->field_notImplementedYet;
+}
+
+int VTfunction34VT2ECU_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction34VT2ECU 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 @IsobusVTMessageTypes.VTfunction34VT2ECU 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 @IsobusVTMessageTypes.VTfunction34VT2ECU containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction34VT2ECU containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction34VT2ECU containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction34VT2ECU containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTfunction34VT2ECU.");
+  }
+  return 0;
+}
+
+void VTfunction34VT2ECU_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", notImplementedYet := ");
+single_value->field_notImplementedYet.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void VTfunction34VT2ECU_template::log_match(const VTfunction34VT2ECU& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_notImplementedYet.match(match_value.notImplementedYet(), legacy)){
+TTCN_Logger::log_logmatch_info(".notImplementedYet");
+single_value->field_notImplementedYet.log_match(match_value.notImplementedYet(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", notImplementedYet := ");
+single_value->field_notImplementedYet.log_match(match_value.notImplementedYet(), 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 VTfunction34VT2ECU_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_notImplementedYet.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 @IsobusVTMessageTypes.VTfunction34VT2ECU.");
+}
+}
+
+void VTfunction34VT2ECU_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_vtfunction.decode_text(text_buf);
+single_value->field_notImplementedYet.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 VTfunction34VT2ECU_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 @IsobusVTMessageTypes.VTfunction34VT2ECU.");
+}
+}
+
+void VTfunction34VT2ECU_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: {
+    VTfunction34VT2ECU_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.VTfunction34VT2ECU 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) notImplementedYet().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "notImplementedYet")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          notImplementedYet().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 @IsobusVTMessageTypes.VTfunction34VT2ECU: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.VTfunction34VT2ECU");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void VTfunction34VT2ECU_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTfunction34VT2ECU");
+single_value->field_notImplementedYet.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTfunction34VT2ECU");
+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 : "@IsobusVTMessageTypes.VTfunction34VT2ECU");
+}
+
+boolean VTfunction34VT2ECU_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean VTfunction34VT2ECU_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+VTfunction34ECU2VT::VTfunction34ECU2VT()
+{
+}
+
+VTfunction34ECU2VT::VTfunction34ECU2VT(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_notImplementedYet)
+  :   field_vtfunction(par_vtfunction),
+  field_notImplementedYet(par_notImplementedYet)
+{
+}
+
+VTfunction34ECU2VT::VTfunction34ECU2VT(const VTfunction34ECU2VT& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.VTfunction34ECU2VT.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.notImplementedYet().is_bound()) field_notImplementedYet = other_value.notImplementedYet();
+else field_notImplementedYet.clean_up();
+}
+
+void VTfunction34ECU2VT::clean_up()
+{
+field_vtfunction.clean_up();
+field_notImplementedYet.clean_up();
+}
+
+const TTCN_Typedescriptor_t* VTfunction34ECU2VT::get_descriptor() const { return &VTfunction34ECU2VT_descr_; }
+VTfunction34ECU2VT& VTfunction34ECU2VT::operator=(const VTfunction34ECU2VT& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.VTfunction34ECU2VT.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.notImplementedYet().is_bound()) field_notImplementedYet = other_value.notImplementedYet();
+  else field_notImplementedYet.clean_up();
+}
+return *this;
+}
+
+boolean VTfunction34ECU2VT::operator==(const VTfunction34ECU2VT& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_notImplementedYet==other_value.field_notImplementedYet;
+}
+
+boolean VTfunction34ECU2VT::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_notImplementedYet.is_bound());
+}
+boolean VTfunction34ECU2VT::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_notImplementedYet.is_value();
+}
+void VTfunction34ECU2VT::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", notImplementedYet := ");
+field_notImplementedYet.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void VTfunction34ECU2VT::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 @IsobusVTMessageTypes.VTfunction34ECU2VT 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) notImplementedYet().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "notImplementedYet")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          notImplementedYet().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 @IsobusVTMessageTypes.VTfunction34ECU2VT: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.VTfunction34ECU2VT");
+  }
+}
+
+void VTfunction34ECU2VT::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (notImplementedYet().is_bound()) notImplementedYet().set_implicit_omit();
+}
+
+void VTfunction34ECU2VT::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_notImplementedYet.encode_text(text_buf);
+}
+
+void VTfunction34ECU2VT::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_notImplementedYet.decode_text(text_buf);
+}
+
+void VTfunction34ECU2VT::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void VTfunction34ECU2VT::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int VTfunction34ECU2VT::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, OCTETSTRING_descr_.raw->forceomit);
+  decoded_field_length = field_notImplementedYet.RAW_decode(OCTETSTRING_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 VTfunction34ECU2VT::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, OCTETSTRING_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_notImplementedYet.RAW_encode(OCTETSTRING_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct VTfunction34ECU2VT_template::single_value_struct {
+INTEGER_template field_vtfunction;
+OCTETSTRING_template field_notImplementedYet;
+};
+
+void VTfunction34ECU2VT_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_vtfunction = ANY_VALUE;
+single_value->field_notImplementedYet = ANY_VALUE;
+}
+}
+}
+
+void VTfunction34ECU2VT_template::copy_value(const VTfunction34ECU2VT& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.notImplementedYet().is_bound()) {
+  single_value->field_notImplementedYet = other_value.notImplementedYet();
+} else {
+  single_value->field_notImplementedYet.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void VTfunction34ECU2VT_template::copy_template(const VTfunction34ECU2VT_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.notImplementedYet().get_selection()) {
+single_value->field_notImplementedYet = other_value.notImplementedYet();
+} else {
+single_value->field_notImplementedYet.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new VTfunction34ECU2VT_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTfunction34ECU2VT.");
+break;
+}
+set_selection(other_value);
+}
+
+VTfunction34ECU2VT_template::VTfunction34ECU2VT_template()
+{
+}
+
+VTfunction34ECU2VT_template::VTfunction34ECU2VT_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+VTfunction34ECU2VT_template::VTfunction34ECU2VT_template(const VTfunction34ECU2VT& other_value)
+{
+copy_value(other_value);
+}
+
+VTfunction34ECU2VT_template::VTfunction34ECU2VT_template(const OPTIONAL<VTfunction34ECU2VT>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTfunction34ECU2VT&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.VTfunction34ECU2VT from an unbound optional field.");
+}
+}
+
+VTfunction34ECU2VT_template::VTfunction34ECU2VT_template(const VTfunction34ECU2VT_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+VTfunction34ECU2VT_template::~VTfunction34ECU2VT_template()
+{
+clean_up();
+}
+
+VTfunction34ECU2VT_template& VTfunction34ECU2VT_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+VTfunction34ECU2VT_template& VTfunction34ECU2VT_template::operator=(const VTfunction34ECU2VT& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+VTfunction34ECU2VT_template& VTfunction34ECU2VT_template::operator=(const OPTIONAL<VTfunction34ECU2VT>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTfunction34ECU2VT&)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 @IsobusVTMessageTypes.VTfunction34ECU2VT.");
+}
+return *this;
+}
+
+VTfunction34ECU2VT_template& VTfunction34ECU2VT_template::operator=(const VTfunction34ECU2VT_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean VTfunction34ECU2VT_template::match(const VTfunction34ECU2VT& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.notImplementedYet().is_bound()) return FALSE;
+if(!single_value->field_notImplementedYet.match(other_value.notImplementedYet(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTfunction34ECU2VT.");
+}
+return FALSE;
+}
+
+boolean VTfunction34ECU2VT_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_notImplementedYet.is_bound()
+;
+}
+
+boolean VTfunction34ECU2VT_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_notImplementedYet.is_value();
+}
+
+void VTfunction34ECU2VT_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+VTfunction34ECU2VT VTfunction34ECU2VT_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 @IsobusVTMessageTypes.VTfunction34ECU2VT.");
+VTfunction34ECU2VT ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_notImplementedYet.is_bound()) {
+ret_val.notImplementedYet() = single_value->field_notImplementedYet.valueof();
+}
+return ret_val;
+}
+
+void VTfunction34ECU2VT_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.VTfunction34ECU2VT.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new VTfunction34ECU2VT_template[list_length];
+}
+
+VTfunction34ECU2VT_template& VTfunction34ECU2VT_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.VTfunction34ECU2VT.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.VTfunction34ECU2VT.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& VTfunction34ECU2VT_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& VTfunction34ECU2VT_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.VTfunction34ECU2VT.");
+return single_value->field_vtfunction;
+}
+
+OCTETSTRING_template& VTfunction34ECU2VT_template::notImplementedYet()
+{
+set_specific();
+return single_value->field_notImplementedYet;
+}
+
+const OCTETSTRING_template& VTfunction34ECU2VT_template::notImplementedYet() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field notImplementedYet of a non-specific template of type @IsobusVTMessageTypes.VTfunction34ECU2VT.");
+return single_value->field_notImplementedYet;
+}
+
+int VTfunction34ECU2VT_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction34ECU2VT 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 @IsobusVTMessageTypes.VTfunction34ECU2VT 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 @IsobusVTMessageTypes.VTfunction34ECU2VT containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction34ECU2VT containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction34ECU2VT containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction34ECU2VT containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTfunction34ECU2VT.");
+  }
+  return 0;
+}
+
+void VTfunction34ECU2VT_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", notImplementedYet := ");
+single_value->field_notImplementedYet.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void VTfunction34ECU2VT_template::log_match(const VTfunction34ECU2VT& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_notImplementedYet.match(match_value.notImplementedYet(), legacy)){
+TTCN_Logger::log_logmatch_info(".notImplementedYet");
+single_value->field_notImplementedYet.log_match(match_value.notImplementedYet(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", notImplementedYet := ");
+single_value->field_notImplementedYet.log_match(match_value.notImplementedYet(), 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 VTfunction34ECU2VT_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_notImplementedYet.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 @IsobusVTMessageTypes.VTfunction34ECU2VT.");
+}
+}
+
+void VTfunction34ECU2VT_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_vtfunction.decode_text(text_buf);
+single_value->field_notImplementedYet.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 VTfunction34ECU2VT_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 @IsobusVTMessageTypes.VTfunction34ECU2VT.");
+}
+}
+
+void VTfunction34ECU2VT_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: {
+    VTfunction34ECU2VT_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.VTfunction34ECU2VT 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) notImplementedYet().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "notImplementedYet")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          notImplementedYet().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 @IsobusVTMessageTypes.VTfunction34ECU2VT: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.VTfunction34ECU2VT");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void VTfunction34ECU2VT_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTfunction34ECU2VT");
+single_value->field_notImplementedYet.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTfunction34ECU2VT");
+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 : "@IsobusVTMessageTypes.VTfunction34ECU2VT");
+}
+
+boolean VTfunction34ECU2VT_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean VTfunction34ECU2VT_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+VTfunction36VT2ECU::VTfunction36VT2ECU()
+{
+}
+
+VTfunction36VT2ECU::VTfunction36VT2ECU(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_notImplementedYet)
+  :   field_vtfunction(par_vtfunction),
+  field_notImplementedYet(par_notImplementedYet)
+{
+}
+
+VTfunction36VT2ECU::VTfunction36VT2ECU(const VTfunction36VT2ECU& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.VTfunction36VT2ECU.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.notImplementedYet().is_bound()) field_notImplementedYet = other_value.notImplementedYet();
+else field_notImplementedYet.clean_up();
+}
+
+void VTfunction36VT2ECU::clean_up()
+{
+field_vtfunction.clean_up();
+field_notImplementedYet.clean_up();
+}
+
+const TTCN_Typedescriptor_t* VTfunction36VT2ECU::get_descriptor() const { return &VTfunction36VT2ECU_descr_; }
+VTfunction36VT2ECU& VTfunction36VT2ECU::operator=(const VTfunction36VT2ECU& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.VTfunction36VT2ECU.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.notImplementedYet().is_bound()) field_notImplementedYet = other_value.notImplementedYet();
+  else field_notImplementedYet.clean_up();
+}
+return *this;
+}
+
+boolean VTfunction36VT2ECU::operator==(const VTfunction36VT2ECU& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_notImplementedYet==other_value.field_notImplementedYet;
+}
+
+boolean VTfunction36VT2ECU::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_notImplementedYet.is_bound());
+}
+boolean VTfunction36VT2ECU::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_notImplementedYet.is_value();
+}
+void VTfunction36VT2ECU::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", notImplementedYet := ");
+field_notImplementedYet.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void VTfunction36VT2ECU::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 @IsobusVTMessageTypes.VTfunction36VT2ECU 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) notImplementedYet().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "notImplementedYet")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          notImplementedYet().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 @IsobusVTMessageTypes.VTfunction36VT2ECU: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.VTfunction36VT2ECU");
+  }
+}
+
+void VTfunction36VT2ECU::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (notImplementedYet().is_bound()) notImplementedYet().set_implicit_omit();
+}
+
+void VTfunction36VT2ECU::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_notImplementedYet.encode_text(text_buf);
+}
+
+void VTfunction36VT2ECU::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_notImplementedYet.decode_text(text_buf);
+}
+
+void VTfunction36VT2ECU::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void VTfunction36VT2ECU::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int VTfunction36VT2ECU::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, OCTETSTRING_descr_.raw->forceomit);
+  decoded_field_length = field_notImplementedYet.RAW_decode(OCTETSTRING_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 VTfunction36VT2ECU::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, OCTETSTRING_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_notImplementedYet.RAW_encode(OCTETSTRING_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct VTfunction36VT2ECU_template::single_value_struct {
+INTEGER_template field_vtfunction;
+OCTETSTRING_template field_notImplementedYet;
+};
+
+void VTfunction36VT2ECU_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_vtfunction = ANY_VALUE;
+single_value->field_notImplementedYet = ANY_VALUE;
+}
+}
+}
+
+void VTfunction36VT2ECU_template::copy_value(const VTfunction36VT2ECU& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.notImplementedYet().is_bound()) {
+  single_value->field_notImplementedYet = other_value.notImplementedYet();
+} else {
+  single_value->field_notImplementedYet.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void VTfunction36VT2ECU_template::copy_template(const VTfunction36VT2ECU_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.notImplementedYet().get_selection()) {
+single_value->field_notImplementedYet = other_value.notImplementedYet();
+} else {
+single_value->field_notImplementedYet.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new VTfunction36VT2ECU_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTfunction36VT2ECU.");
+break;
+}
+set_selection(other_value);
+}
+
+VTfunction36VT2ECU_template::VTfunction36VT2ECU_template()
+{
+}
+
+VTfunction36VT2ECU_template::VTfunction36VT2ECU_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+VTfunction36VT2ECU_template::VTfunction36VT2ECU_template(const VTfunction36VT2ECU& other_value)
+{
+copy_value(other_value);
+}
+
+VTfunction36VT2ECU_template::VTfunction36VT2ECU_template(const OPTIONAL<VTfunction36VT2ECU>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTfunction36VT2ECU&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.VTfunction36VT2ECU from an unbound optional field.");
+}
+}
+
+VTfunction36VT2ECU_template::VTfunction36VT2ECU_template(const VTfunction36VT2ECU_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+VTfunction36VT2ECU_template::~VTfunction36VT2ECU_template()
+{
+clean_up();
+}
+
+VTfunction36VT2ECU_template& VTfunction36VT2ECU_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+VTfunction36VT2ECU_template& VTfunction36VT2ECU_template::operator=(const VTfunction36VT2ECU& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+VTfunction36VT2ECU_template& VTfunction36VT2ECU_template::operator=(const OPTIONAL<VTfunction36VT2ECU>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTfunction36VT2ECU&)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 @IsobusVTMessageTypes.VTfunction36VT2ECU.");
+}
+return *this;
+}
+
+VTfunction36VT2ECU_template& VTfunction36VT2ECU_template::operator=(const VTfunction36VT2ECU_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean VTfunction36VT2ECU_template::match(const VTfunction36VT2ECU& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.notImplementedYet().is_bound()) return FALSE;
+if(!single_value->field_notImplementedYet.match(other_value.notImplementedYet(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTfunction36VT2ECU.");
+}
+return FALSE;
+}
+
+boolean VTfunction36VT2ECU_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_notImplementedYet.is_bound()
+;
+}
+
+boolean VTfunction36VT2ECU_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_notImplementedYet.is_value();
+}
+
+void VTfunction36VT2ECU_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+VTfunction36VT2ECU VTfunction36VT2ECU_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 @IsobusVTMessageTypes.VTfunction36VT2ECU.");
+VTfunction36VT2ECU ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_notImplementedYet.is_bound()) {
+ret_val.notImplementedYet() = single_value->field_notImplementedYet.valueof();
+}
+return ret_val;
+}
+
+void VTfunction36VT2ECU_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.VTfunction36VT2ECU.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new VTfunction36VT2ECU_template[list_length];
+}
+
+VTfunction36VT2ECU_template& VTfunction36VT2ECU_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.VTfunction36VT2ECU.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.VTfunction36VT2ECU.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& VTfunction36VT2ECU_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& VTfunction36VT2ECU_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.VTfunction36VT2ECU.");
+return single_value->field_vtfunction;
+}
+
+OCTETSTRING_template& VTfunction36VT2ECU_template::notImplementedYet()
+{
+set_specific();
+return single_value->field_notImplementedYet;
+}
+
+const OCTETSTRING_template& VTfunction36VT2ECU_template::notImplementedYet() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field notImplementedYet of a non-specific template of type @IsobusVTMessageTypes.VTfunction36VT2ECU.");
+return single_value->field_notImplementedYet;
+}
+
+int VTfunction36VT2ECU_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction36VT2ECU 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 @IsobusVTMessageTypes.VTfunction36VT2ECU 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 @IsobusVTMessageTypes.VTfunction36VT2ECU containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction36VT2ECU containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction36VT2ECU containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction36VT2ECU containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTfunction36VT2ECU.");
+  }
+  return 0;
+}
+
+void VTfunction36VT2ECU_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", notImplementedYet := ");
+single_value->field_notImplementedYet.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void VTfunction36VT2ECU_template::log_match(const VTfunction36VT2ECU& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_notImplementedYet.match(match_value.notImplementedYet(), legacy)){
+TTCN_Logger::log_logmatch_info(".notImplementedYet");
+single_value->field_notImplementedYet.log_match(match_value.notImplementedYet(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", notImplementedYet := ");
+single_value->field_notImplementedYet.log_match(match_value.notImplementedYet(), 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 VTfunction36VT2ECU_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_notImplementedYet.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 @IsobusVTMessageTypes.VTfunction36VT2ECU.");
+}
+}
+
+void VTfunction36VT2ECU_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_vtfunction.decode_text(text_buf);
+single_value->field_notImplementedYet.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 VTfunction36VT2ECU_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 @IsobusVTMessageTypes.VTfunction36VT2ECU.");
+}
+}
+
+void VTfunction36VT2ECU_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: {
+    VTfunction36VT2ECU_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.VTfunction36VT2ECU 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) notImplementedYet().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "notImplementedYet")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          notImplementedYet().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 @IsobusVTMessageTypes.VTfunction36VT2ECU: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.VTfunction36VT2ECU");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void VTfunction36VT2ECU_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTfunction36VT2ECU");
+single_value->field_notImplementedYet.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTfunction36VT2ECU");
+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 : "@IsobusVTMessageTypes.VTfunction36VT2ECU");
+}
+
+boolean VTfunction36VT2ECU_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean VTfunction36VT2ECU_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+VTfunction36ECU2VT::VTfunction36ECU2VT()
+{
+}
+
+VTfunction36ECU2VT::VTfunction36ECU2VT(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_notImplementedYet)
+  :   field_vtfunction(par_vtfunction),
+  field_notImplementedYet(par_notImplementedYet)
+{
+}
+
+VTfunction36ECU2VT::VTfunction36ECU2VT(const VTfunction36ECU2VT& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.VTfunction36ECU2VT.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.notImplementedYet().is_bound()) field_notImplementedYet = other_value.notImplementedYet();
+else field_notImplementedYet.clean_up();
+}
+
+void VTfunction36ECU2VT::clean_up()
+{
+field_vtfunction.clean_up();
+field_notImplementedYet.clean_up();
+}
+
+const TTCN_Typedescriptor_t* VTfunction36ECU2VT::get_descriptor() const { return &VTfunction36ECU2VT_descr_; }
+VTfunction36ECU2VT& VTfunction36ECU2VT::operator=(const VTfunction36ECU2VT& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.VTfunction36ECU2VT.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.notImplementedYet().is_bound()) field_notImplementedYet = other_value.notImplementedYet();
+  else field_notImplementedYet.clean_up();
+}
+return *this;
+}
+
+boolean VTfunction36ECU2VT::operator==(const VTfunction36ECU2VT& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_notImplementedYet==other_value.field_notImplementedYet;
+}
+
+boolean VTfunction36ECU2VT::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_notImplementedYet.is_bound());
+}
+boolean VTfunction36ECU2VT::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_notImplementedYet.is_value();
+}
+void VTfunction36ECU2VT::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", notImplementedYet := ");
+field_notImplementedYet.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void VTfunction36ECU2VT::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 @IsobusVTMessageTypes.VTfunction36ECU2VT 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) notImplementedYet().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "notImplementedYet")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          notImplementedYet().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 @IsobusVTMessageTypes.VTfunction36ECU2VT: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.VTfunction36ECU2VT");
+  }
+}
+
+void VTfunction36ECU2VT::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (notImplementedYet().is_bound()) notImplementedYet().set_implicit_omit();
+}
+
+void VTfunction36ECU2VT::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_notImplementedYet.encode_text(text_buf);
+}
+
+void VTfunction36ECU2VT::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_notImplementedYet.decode_text(text_buf);
+}
+
+void VTfunction36ECU2VT::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void VTfunction36ECU2VT::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int VTfunction36ECU2VT::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, OCTETSTRING_descr_.raw->forceomit);
+  decoded_field_length = field_notImplementedYet.RAW_decode(OCTETSTRING_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 VTfunction36ECU2VT::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, OCTETSTRING_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_notImplementedYet.RAW_encode(OCTETSTRING_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct VTfunction36ECU2VT_template::single_value_struct {
+INTEGER_template field_vtfunction;
+OCTETSTRING_template field_notImplementedYet;
+};
+
+void VTfunction36ECU2VT_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_vtfunction = ANY_VALUE;
+single_value->field_notImplementedYet = ANY_VALUE;
+}
+}
+}
+
+void VTfunction36ECU2VT_template::copy_value(const VTfunction36ECU2VT& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.notImplementedYet().is_bound()) {
+  single_value->field_notImplementedYet = other_value.notImplementedYet();
+} else {
+  single_value->field_notImplementedYet.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void VTfunction36ECU2VT_template::copy_template(const VTfunction36ECU2VT_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.notImplementedYet().get_selection()) {
+single_value->field_notImplementedYet = other_value.notImplementedYet();
+} else {
+single_value->field_notImplementedYet.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new VTfunction36ECU2VT_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTfunction36ECU2VT.");
+break;
+}
+set_selection(other_value);
+}
+
+VTfunction36ECU2VT_template::VTfunction36ECU2VT_template()
+{
+}
+
+VTfunction36ECU2VT_template::VTfunction36ECU2VT_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+VTfunction36ECU2VT_template::VTfunction36ECU2VT_template(const VTfunction36ECU2VT& other_value)
+{
+copy_value(other_value);
+}
+
+VTfunction36ECU2VT_template::VTfunction36ECU2VT_template(const OPTIONAL<VTfunction36ECU2VT>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTfunction36ECU2VT&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.VTfunction36ECU2VT from an unbound optional field.");
+}
+}
+
+VTfunction36ECU2VT_template::VTfunction36ECU2VT_template(const VTfunction36ECU2VT_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+VTfunction36ECU2VT_template::~VTfunction36ECU2VT_template()
+{
+clean_up();
+}
+
+VTfunction36ECU2VT_template& VTfunction36ECU2VT_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+VTfunction36ECU2VT_template& VTfunction36ECU2VT_template::operator=(const VTfunction36ECU2VT& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+VTfunction36ECU2VT_template& VTfunction36ECU2VT_template::operator=(const OPTIONAL<VTfunction36ECU2VT>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTfunction36ECU2VT&)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 @IsobusVTMessageTypes.VTfunction36ECU2VT.");
+}
+return *this;
+}
+
+VTfunction36ECU2VT_template& VTfunction36ECU2VT_template::operator=(const VTfunction36ECU2VT_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean VTfunction36ECU2VT_template::match(const VTfunction36ECU2VT& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.notImplementedYet().is_bound()) return FALSE;
+if(!single_value->field_notImplementedYet.match(other_value.notImplementedYet(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTfunction36ECU2VT.");
+}
+return FALSE;
+}
+
+boolean VTfunction36ECU2VT_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_notImplementedYet.is_bound()
+;
+}
+
+boolean VTfunction36ECU2VT_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_notImplementedYet.is_value();
+}
+
+void VTfunction36ECU2VT_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+VTfunction36ECU2VT VTfunction36ECU2VT_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 @IsobusVTMessageTypes.VTfunction36ECU2VT.");
+VTfunction36ECU2VT ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_notImplementedYet.is_bound()) {
+ret_val.notImplementedYet() = single_value->field_notImplementedYet.valueof();
+}
+return ret_val;
+}
+
+void VTfunction36ECU2VT_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.VTfunction36ECU2VT.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new VTfunction36ECU2VT_template[list_length];
+}
+
+VTfunction36ECU2VT_template& VTfunction36ECU2VT_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.VTfunction36ECU2VT.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.VTfunction36ECU2VT.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& VTfunction36ECU2VT_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& VTfunction36ECU2VT_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.VTfunction36ECU2VT.");
+return single_value->field_vtfunction;
+}
+
+OCTETSTRING_template& VTfunction36ECU2VT_template::notImplementedYet()
+{
+set_specific();
+return single_value->field_notImplementedYet;
+}
+
+const OCTETSTRING_template& VTfunction36ECU2VT_template::notImplementedYet() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field notImplementedYet of a non-specific template of type @IsobusVTMessageTypes.VTfunction36ECU2VT.");
+return single_value->field_notImplementedYet;
+}
+
+int VTfunction36ECU2VT_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction36ECU2VT 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 @IsobusVTMessageTypes.VTfunction36ECU2VT 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 @IsobusVTMessageTypes.VTfunction36ECU2VT containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction36ECU2VT containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction36ECU2VT containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction36ECU2VT containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTfunction36ECU2VT.");
+  }
+  return 0;
+}
+
+void VTfunction36ECU2VT_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", notImplementedYet := ");
+single_value->field_notImplementedYet.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void VTfunction36ECU2VT_template::log_match(const VTfunction36ECU2VT& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_notImplementedYet.match(match_value.notImplementedYet(), legacy)){
+TTCN_Logger::log_logmatch_info(".notImplementedYet");
+single_value->field_notImplementedYet.log_match(match_value.notImplementedYet(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", notImplementedYet := ");
+single_value->field_notImplementedYet.log_match(match_value.notImplementedYet(), 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 VTfunction36ECU2VT_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_notImplementedYet.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 @IsobusVTMessageTypes.VTfunction36ECU2VT.");
+}
+}
+
+void VTfunction36ECU2VT_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_vtfunction.decode_text(text_buf);
+single_value->field_notImplementedYet.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 VTfunction36ECU2VT_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 @IsobusVTMessageTypes.VTfunction36ECU2VT.");
+}
+}
+
+void VTfunction36ECU2VT_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: {
+    VTfunction36ECU2VT_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.VTfunction36ECU2VT 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) notImplementedYet().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "notImplementedYet")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          notImplementedYet().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 @IsobusVTMessageTypes.VTfunction36ECU2VT: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.VTfunction36ECU2VT");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void VTfunction36ECU2VT_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTfunction36ECU2VT");
+single_value->field_notImplementedYet.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTfunction36ECU2VT");
+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 : "@IsobusVTMessageTypes.VTfunction36ECU2VT");
+}
+
+boolean VTfunction36ECU2VT_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean VTfunction36ECU2VT_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+VTfunction37VT2ECU::VTfunction37VT2ECU()
+{
+}
+
+VTfunction37VT2ECU::VTfunction37VT2ECU(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_notImplementedYet)
+  :   field_vtfunction(par_vtfunction),
+  field_notImplementedYet(par_notImplementedYet)
+{
+}
+
+VTfunction37VT2ECU::VTfunction37VT2ECU(const VTfunction37VT2ECU& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.VTfunction37VT2ECU.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.notImplementedYet().is_bound()) field_notImplementedYet = other_value.notImplementedYet();
+else field_notImplementedYet.clean_up();
+}
+
+void VTfunction37VT2ECU::clean_up()
+{
+field_vtfunction.clean_up();
+field_notImplementedYet.clean_up();
+}
+
+const TTCN_Typedescriptor_t* VTfunction37VT2ECU::get_descriptor() const { return &VTfunction37VT2ECU_descr_; }
+VTfunction37VT2ECU& VTfunction37VT2ECU::operator=(const VTfunction37VT2ECU& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.VTfunction37VT2ECU.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.notImplementedYet().is_bound()) field_notImplementedYet = other_value.notImplementedYet();
+  else field_notImplementedYet.clean_up();
+}
+return *this;
+}
+
+boolean VTfunction37VT2ECU::operator==(const VTfunction37VT2ECU& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_notImplementedYet==other_value.field_notImplementedYet;
+}
+
+boolean VTfunction37VT2ECU::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_notImplementedYet.is_bound());
+}
+boolean VTfunction37VT2ECU::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_notImplementedYet.is_value();
+}
+void VTfunction37VT2ECU::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", notImplementedYet := ");
+field_notImplementedYet.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void VTfunction37VT2ECU::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 @IsobusVTMessageTypes.VTfunction37VT2ECU 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) notImplementedYet().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "notImplementedYet")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          notImplementedYet().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 @IsobusVTMessageTypes.VTfunction37VT2ECU: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.VTfunction37VT2ECU");
+  }
+}
+
+void VTfunction37VT2ECU::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (notImplementedYet().is_bound()) notImplementedYet().set_implicit_omit();
+}
+
+void VTfunction37VT2ECU::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_notImplementedYet.encode_text(text_buf);
+}
+
+void VTfunction37VT2ECU::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_notImplementedYet.decode_text(text_buf);
+}
+
+void VTfunction37VT2ECU::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void VTfunction37VT2ECU::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int VTfunction37VT2ECU::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, OCTETSTRING_descr_.raw->forceomit);
+  decoded_field_length = field_notImplementedYet.RAW_decode(OCTETSTRING_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 VTfunction37VT2ECU::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, OCTETSTRING_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_notImplementedYet.RAW_encode(OCTETSTRING_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct VTfunction37VT2ECU_template::single_value_struct {
+INTEGER_template field_vtfunction;
+OCTETSTRING_template field_notImplementedYet;
+};
+
+void VTfunction37VT2ECU_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_vtfunction = ANY_VALUE;
+single_value->field_notImplementedYet = ANY_VALUE;
+}
+}
+}
+
+void VTfunction37VT2ECU_template::copy_value(const VTfunction37VT2ECU& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.notImplementedYet().is_bound()) {
+  single_value->field_notImplementedYet = other_value.notImplementedYet();
+} else {
+  single_value->field_notImplementedYet.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void VTfunction37VT2ECU_template::copy_template(const VTfunction37VT2ECU_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.notImplementedYet().get_selection()) {
+single_value->field_notImplementedYet = other_value.notImplementedYet();
+} else {
+single_value->field_notImplementedYet.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new VTfunction37VT2ECU_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTfunction37VT2ECU.");
+break;
+}
+set_selection(other_value);
+}
+
+VTfunction37VT2ECU_template::VTfunction37VT2ECU_template()
+{
+}
+
+VTfunction37VT2ECU_template::VTfunction37VT2ECU_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+VTfunction37VT2ECU_template::VTfunction37VT2ECU_template(const VTfunction37VT2ECU& other_value)
+{
+copy_value(other_value);
+}
+
+VTfunction37VT2ECU_template::VTfunction37VT2ECU_template(const OPTIONAL<VTfunction37VT2ECU>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTfunction37VT2ECU&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.VTfunction37VT2ECU from an unbound optional field.");
+}
+}
+
+VTfunction37VT2ECU_template::VTfunction37VT2ECU_template(const VTfunction37VT2ECU_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+VTfunction37VT2ECU_template::~VTfunction37VT2ECU_template()
+{
+clean_up();
+}
+
+VTfunction37VT2ECU_template& VTfunction37VT2ECU_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+VTfunction37VT2ECU_template& VTfunction37VT2ECU_template::operator=(const VTfunction37VT2ECU& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+VTfunction37VT2ECU_template& VTfunction37VT2ECU_template::operator=(const OPTIONAL<VTfunction37VT2ECU>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTfunction37VT2ECU&)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 @IsobusVTMessageTypes.VTfunction37VT2ECU.");
+}
+return *this;
+}
+
+VTfunction37VT2ECU_template& VTfunction37VT2ECU_template::operator=(const VTfunction37VT2ECU_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean VTfunction37VT2ECU_template::match(const VTfunction37VT2ECU& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.notImplementedYet().is_bound()) return FALSE;
+if(!single_value->field_notImplementedYet.match(other_value.notImplementedYet(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTfunction37VT2ECU.");
+}
+return FALSE;
+}
+
+boolean VTfunction37VT2ECU_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_notImplementedYet.is_bound()
+;
+}
+
+boolean VTfunction37VT2ECU_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_notImplementedYet.is_value();
+}
+
+void VTfunction37VT2ECU_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+VTfunction37VT2ECU VTfunction37VT2ECU_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 @IsobusVTMessageTypes.VTfunction37VT2ECU.");
+VTfunction37VT2ECU ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_notImplementedYet.is_bound()) {
+ret_val.notImplementedYet() = single_value->field_notImplementedYet.valueof();
+}
+return ret_val;
+}
+
+void VTfunction37VT2ECU_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.VTfunction37VT2ECU.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new VTfunction37VT2ECU_template[list_length];
+}
+
+VTfunction37VT2ECU_template& VTfunction37VT2ECU_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.VTfunction37VT2ECU.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.VTfunction37VT2ECU.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& VTfunction37VT2ECU_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& VTfunction37VT2ECU_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.VTfunction37VT2ECU.");
+return single_value->field_vtfunction;
+}
+
+OCTETSTRING_template& VTfunction37VT2ECU_template::notImplementedYet()
+{
+set_specific();
+return single_value->field_notImplementedYet;
+}
+
+const OCTETSTRING_template& VTfunction37VT2ECU_template::notImplementedYet() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field notImplementedYet of a non-specific template of type @IsobusVTMessageTypes.VTfunction37VT2ECU.");
+return single_value->field_notImplementedYet;
+}
+
+int VTfunction37VT2ECU_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction37VT2ECU 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 @IsobusVTMessageTypes.VTfunction37VT2ECU 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 @IsobusVTMessageTypes.VTfunction37VT2ECU containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction37VT2ECU containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction37VT2ECU containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction37VT2ECU containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTfunction37VT2ECU.");
+  }
+  return 0;
+}
+
+void VTfunction37VT2ECU_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", notImplementedYet := ");
+single_value->field_notImplementedYet.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void VTfunction37VT2ECU_template::log_match(const VTfunction37VT2ECU& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_notImplementedYet.match(match_value.notImplementedYet(), legacy)){
+TTCN_Logger::log_logmatch_info(".notImplementedYet");
+single_value->field_notImplementedYet.log_match(match_value.notImplementedYet(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", notImplementedYet := ");
+single_value->field_notImplementedYet.log_match(match_value.notImplementedYet(), 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 VTfunction37VT2ECU_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_notImplementedYet.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 @IsobusVTMessageTypes.VTfunction37VT2ECU.");
+}
+}
+
+void VTfunction37VT2ECU_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_vtfunction.decode_text(text_buf);
+single_value->field_notImplementedYet.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 VTfunction37VT2ECU_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 @IsobusVTMessageTypes.VTfunction37VT2ECU.");
+}
+}
+
+void VTfunction37VT2ECU_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: {
+    VTfunction37VT2ECU_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.VTfunction37VT2ECU 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) notImplementedYet().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "notImplementedYet")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          notImplementedYet().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 @IsobusVTMessageTypes.VTfunction37VT2ECU: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.VTfunction37VT2ECU");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void VTfunction37VT2ECU_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTfunction37VT2ECU");
+single_value->field_notImplementedYet.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTfunction37VT2ECU");
+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 : "@IsobusVTMessageTypes.VTfunction37VT2ECU");
+}
+
+boolean VTfunction37VT2ECU_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean VTfunction37VT2ECU_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+VTfunction37ECU2VT::VTfunction37ECU2VT()
+{
+}
+
+VTfunction37ECU2VT::VTfunction37ECU2VT(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_notImplementedYet)
+  :   field_vtfunction(par_vtfunction),
+  field_notImplementedYet(par_notImplementedYet)
+{
+}
+
+VTfunction37ECU2VT::VTfunction37ECU2VT(const VTfunction37ECU2VT& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.VTfunction37ECU2VT.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.notImplementedYet().is_bound()) field_notImplementedYet = other_value.notImplementedYet();
+else field_notImplementedYet.clean_up();
+}
+
+void VTfunction37ECU2VT::clean_up()
+{
+field_vtfunction.clean_up();
+field_notImplementedYet.clean_up();
+}
+
+const TTCN_Typedescriptor_t* VTfunction37ECU2VT::get_descriptor() const { return &VTfunction37ECU2VT_descr_; }
+VTfunction37ECU2VT& VTfunction37ECU2VT::operator=(const VTfunction37ECU2VT& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.VTfunction37ECU2VT.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.notImplementedYet().is_bound()) field_notImplementedYet = other_value.notImplementedYet();
+  else field_notImplementedYet.clean_up();
+}
+return *this;
+}
+
+boolean VTfunction37ECU2VT::operator==(const VTfunction37ECU2VT& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_notImplementedYet==other_value.field_notImplementedYet;
+}
+
+boolean VTfunction37ECU2VT::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_notImplementedYet.is_bound());
+}
+boolean VTfunction37ECU2VT::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_notImplementedYet.is_value();
+}
+void VTfunction37ECU2VT::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", notImplementedYet := ");
+field_notImplementedYet.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void VTfunction37ECU2VT::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 @IsobusVTMessageTypes.VTfunction37ECU2VT 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) notImplementedYet().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "notImplementedYet")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          notImplementedYet().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 @IsobusVTMessageTypes.VTfunction37ECU2VT: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.VTfunction37ECU2VT");
+  }
+}
+
+void VTfunction37ECU2VT::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (notImplementedYet().is_bound()) notImplementedYet().set_implicit_omit();
+}
+
+void VTfunction37ECU2VT::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_notImplementedYet.encode_text(text_buf);
+}
+
+void VTfunction37ECU2VT::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_notImplementedYet.decode_text(text_buf);
+}
+
+void VTfunction37ECU2VT::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void VTfunction37ECU2VT::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int VTfunction37ECU2VT::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, OCTETSTRING_descr_.raw->forceomit);
+  decoded_field_length = field_notImplementedYet.RAW_decode(OCTETSTRING_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 VTfunction37ECU2VT::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, OCTETSTRING_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_notImplementedYet.RAW_encode(OCTETSTRING_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct VTfunction37ECU2VT_template::single_value_struct {
+INTEGER_template field_vtfunction;
+OCTETSTRING_template field_notImplementedYet;
+};
+
+void VTfunction37ECU2VT_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_vtfunction = ANY_VALUE;
+single_value->field_notImplementedYet = ANY_VALUE;
+}
+}
+}
+
+void VTfunction37ECU2VT_template::copy_value(const VTfunction37ECU2VT& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.notImplementedYet().is_bound()) {
+  single_value->field_notImplementedYet = other_value.notImplementedYet();
+} else {
+  single_value->field_notImplementedYet.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void VTfunction37ECU2VT_template::copy_template(const VTfunction37ECU2VT_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.notImplementedYet().get_selection()) {
+single_value->field_notImplementedYet = other_value.notImplementedYet();
+} else {
+single_value->field_notImplementedYet.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new VTfunction37ECU2VT_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTfunction37ECU2VT.");
+break;
+}
+set_selection(other_value);
+}
+
+VTfunction37ECU2VT_template::VTfunction37ECU2VT_template()
+{
+}
+
+VTfunction37ECU2VT_template::VTfunction37ECU2VT_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+VTfunction37ECU2VT_template::VTfunction37ECU2VT_template(const VTfunction37ECU2VT& other_value)
+{
+copy_value(other_value);
+}
+
+VTfunction37ECU2VT_template::VTfunction37ECU2VT_template(const OPTIONAL<VTfunction37ECU2VT>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTfunction37ECU2VT&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.VTfunction37ECU2VT from an unbound optional field.");
+}
+}
+
+VTfunction37ECU2VT_template::VTfunction37ECU2VT_template(const VTfunction37ECU2VT_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+VTfunction37ECU2VT_template::~VTfunction37ECU2VT_template()
+{
+clean_up();
+}
+
+VTfunction37ECU2VT_template& VTfunction37ECU2VT_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+VTfunction37ECU2VT_template& VTfunction37ECU2VT_template::operator=(const VTfunction37ECU2VT& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+VTfunction37ECU2VT_template& VTfunction37ECU2VT_template::operator=(const OPTIONAL<VTfunction37ECU2VT>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTfunction37ECU2VT&)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 @IsobusVTMessageTypes.VTfunction37ECU2VT.");
+}
+return *this;
+}
+
+VTfunction37ECU2VT_template& VTfunction37ECU2VT_template::operator=(const VTfunction37ECU2VT_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean VTfunction37ECU2VT_template::match(const VTfunction37ECU2VT& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.notImplementedYet().is_bound()) return FALSE;
+if(!single_value->field_notImplementedYet.match(other_value.notImplementedYet(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTfunction37ECU2VT.");
+}
+return FALSE;
+}
+
+boolean VTfunction37ECU2VT_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_notImplementedYet.is_bound()
+;
+}
+
+boolean VTfunction37ECU2VT_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_notImplementedYet.is_value();
+}
+
+void VTfunction37ECU2VT_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+VTfunction37ECU2VT VTfunction37ECU2VT_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 @IsobusVTMessageTypes.VTfunction37ECU2VT.");
+VTfunction37ECU2VT ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_notImplementedYet.is_bound()) {
+ret_val.notImplementedYet() = single_value->field_notImplementedYet.valueof();
+}
+return ret_val;
+}
+
+void VTfunction37ECU2VT_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.VTfunction37ECU2VT.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new VTfunction37ECU2VT_template[list_length];
+}
+
+VTfunction37ECU2VT_template& VTfunction37ECU2VT_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.VTfunction37ECU2VT.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.VTfunction37ECU2VT.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& VTfunction37ECU2VT_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& VTfunction37ECU2VT_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.VTfunction37ECU2VT.");
+return single_value->field_vtfunction;
+}
+
+OCTETSTRING_template& VTfunction37ECU2VT_template::notImplementedYet()
+{
+set_specific();
+return single_value->field_notImplementedYet;
+}
+
+const OCTETSTRING_template& VTfunction37ECU2VT_template::notImplementedYet() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field notImplementedYet of a non-specific template of type @IsobusVTMessageTypes.VTfunction37ECU2VT.");
+return single_value->field_notImplementedYet;
+}
+
+int VTfunction37ECU2VT_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction37ECU2VT 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 @IsobusVTMessageTypes.VTfunction37ECU2VT 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 @IsobusVTMessageTypes.VTfunction37ECU2VT containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction37ECU2VT containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction37ECU2VT containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction37ECU2VT containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTfunction37ECU2VT.");
+  }
+  return 0;
+}
+
+void VTfunction37ECU2VT_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", notImplementedYet := ");
+single_value->field_notImplementedYet.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void VTfunction37ECU2VT_template::log_match(const VTfunction37ECU2VT& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_notImplementedYet.match(match_value.notImplementedYet(), legacy)){
+TTCN_Logger::log_logmatch_info(".notImplementedYet");
+single_value->field_notImplementedYet.log_match(match_value.notImplementedYet(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", notImplementedYet := ");
+single_value->field_notImplementedYet.log_match(match_value.notImplementedYet(), 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 VTfunction37ECU2VT_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_notImplementedYet.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 @IsobusVTMessageTypes.VTfunction37ECU2VT.");
+}
+}
+
+void VTfunction37ECU2VT_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_vtfunction.decode_text(text_buf);
+single_value->field_notImplementedYet.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 VTfunction37ECU2VT_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 @IsobusVTMessageTypes.VTfunction37ECU2VT.");
+}
+}
+
+void VTfunction37ECU2VT_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: {
+    VTfunction37ECU2VT_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.VTfunction37ECU2VT 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) notImplementedYet().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "notImplementedYet")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          notImplementedYet().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 @IsobusVTMessageTypes.VTfunction37ECU2VT: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.VTfunction37ECU2VT");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void VTfunction37ECU2VT_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTfunction37ECU2VT");
+single_value->field_notImplementedYet.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTfunction37ECU2VT");
+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 : "@IsobusVTMessageTypes.VTfunction37ECU2VT");
+}
+
+boolean VTfunction37ECU2VT_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean VTfunction37ECU2VT_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+AuxiliaryInputType2StatusInd::AuxiliaryInputType2StatusInd()
+{
+}
+
+AuxiliaryInputType2StatusInd::AuxiliaryInputType2StatusInd(const INTEGER& par_vtfunction,
+    const INTEGER& par_auxiliaryInputObjectID,
+    const OCTETSTRING& par_value1,
+    const OCTETSTRING& par_value2,
+    const BITSTRING& par_operationState)
+  :   field_vtfunction(par_vtfunction),
+  field_auxiliaryInputObjectID(par_auxiliaryInputObjectID),
+  field_value1(par_value1),
+  field_value2(par_value2),
+  field_operationState(par_operationState)
+{
+}
+
+AuxiliaryInputType2StatusInd::AuxiliaryInputType2StatusInd(const AuxiliaryInputType2StatusInd& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.AuxiliaryInputType2StatusInd.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.auxiliaryInputObjectID().is_bound()) field_auxiliaryInputObjectID = other_value.auxiliaryInputObjectID();
+else field_auxiliaryInputObjectID.clean_up();
+if (other_value.value1().is_bound()) field_value1 = other_value.value1();
+else field_value1.clean_up();
+if (other_value.value2().is_bound()) field_value2 = other_value.value2();
+else field_value2.clean_up();
+if (other_value.operationState().is_bound()) field_operationState = other_value.operationState();
+else field_operationState.clean_up();
+}
+
+void AuxiliaryInputType2StatusInd::clean_up()
+{
+field_vtfunction.clean_up();
+field_auxiliaryInputObjectID.clean_up();
+field_value1.clean_up();
+field_value2.clean_up();
+field_operationState.clean_up();
+}
+
+const TTCN_Typedescriptor_t* AuxiliaryInputType2StatusInd::get_descriptor() const { return &AuxiliaryInputType2StatusInd_descr_; }
+AuxiliaryInputType2StatusInd& AuxiliaryInputType2StatusInd::operator=(const AuxiliaryInputType2StatusInd& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.AuxiliaryInputType2StatusInd.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.auxiliaryInputObjectID().is_bound()) field_auxiliaryInputObjectID = other_value.auxiliaryInputObjectID();
+  else field_auxiliaryInputObjectID.clean_up();
+  if (other_value.value1().is_bound()) field_value1 = other_value.value1();
+  else field_value1.clean_up();
+  if (other_value.value2().is_bound()) field_value2 = other_value.value2();
+  else field_value2.clean_up();
+  if (other_value.operationState().is_bound()) field_operationState = other_value.operationState();
+  else field_operationState.clean_up();
+}
+return *this;
+}
+
+boolean AuxiliaryInputType2StatusInd::operator==(const AuxiliaryInputType2StatusInd& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_auxiliaryInputObjectID==other_value.field_auxiliaryInputObjectID
+  && field_value1==other_value.field_value1
+  && field_value2==other_value.field_value2
+  && field_operationState==other_value.field_operationState;
+}
+
+boolean AuxiliaryInputType2StatusInd::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_auxiliaryInputObjectID.is_bound())
+  || (field_value1.is_bound())
+  || (field_value2.is_bound())
+  || (field_operationState.is_bound());
+}
+boolean AuxiliaryInputType2StatusInd::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_auxiliaryInputObjectID.is_value()
+  && field_value1.is_value()
+  && field_value2.is_value()
+  && field_operationState.is_value();
+}
+void AuxiliaryInputType2StatusInd::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", auxiliaryInputObjectID := ");
+field_auxiliaryInputObjectID.log();
+TTCN_Logger::log_event_str(", value1 := ");
+field_value1.log();
+TTCN_Logger::log_event_str(", value2 := ");
+field_value2.log();
+TTCN_Logger::log_event_str(", operationState := ");
+field_operationState.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void AuxiliaryInputType2StatusInd::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 @IsobusVTMessageTypes.AuxiliaryInputType2StatusInd 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) auxiliaryInputObjectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) value1().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) value2().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) operationState().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "auxiliaryInputObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          auxiliaryInputObjectID().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(), "value1")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          value1().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(), "value2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          value2().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(), "operationState")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          operationState().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 @IsobusVTMessageTypes.AuxiliaryInputType2StatusInd: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.AuxiliaryInputType2StatusInd");
+  }
+}
+
+void AuxiliaryInputType2StatusInd::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (auxiliaryInputObjectID().is_bound()) auxiliaryInputObjectID().set_implicit_omit();
+if (value1().is_bound()) value1().set_implicit_omit();
+if (value2().is_bound()) value2().set_implicit_omit();
+if (operationState().is_bound()) operationState().set_implicit_omit();
+}
+
+void AuxiliaryInputType2StatusInd::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_auxiliaryInputObjectID.encode_text(text_buf);
+field_value1.encode_text(text_buf);
+field_value2.encode_text(text_buf);
+field_operationState.encode_text(text_buf);
+}
+
+void AuxiliaryInputType2StatusInd::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_auxiliaryInputObjectID.decode_text(text_buf);
+field_value1.decode_text(text_buf);
+field_value2.decode_text(text_buf);
+field_operationState.decode_text(text_buf);
+}
+
+void AuxiliaryInputType2StatusInd::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void AuxiliaryInputType2StatusInd::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int AuxiliaryInputType2StatusInd::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, AuxiliaryInputType2StatusInd__AuxiliaryInputObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_auxiliaryInputObjectID.RAW_decode(AuxiliaryInputType2StatusInd__AuxiliaryInputObjectID_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::OCT2_descr_.raw->forceomit);
+  decoded_field_length = field_value1.RAW_decode(General__Types::OCT2_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::OCT2_descr_.raw->forceomit);
+  decoded_field_length = field_value2.RAW_decode(General__Types::OCT2_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, AuxiliaryInputType2StatusInd__OperatingStateType_descr_.raw->forceomit);
+  decoded_field_length = field_operationState.RAW_decode(AuxiliaryInputType2StatusInd__OperatingStateType_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 AuxiliaryInputType2StatusInd::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, AuxiliaryInputType2StatusInd__AuxiliaryInputObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, General__Types::OCT2_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, General__Types::OCT2_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, AuxiliaryInputType2StatusInd__OperatingStateType_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_auxiliaryInputObjectID.RAW_encode(AuxiliaryInputType2StatusInd__AuxiliaryInputObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_value1.RAW_encode(General__Types::OCT2_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_value2.RAW_encode(General__Types::OCT2_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_operationState.RAW_encode(AuxiliaryInputType2StatusInd__OperatingStateType_descr_, *myleaf.body.node.nodes[4]);
+  return myleaf.length = encoded_length;
+}
+
+struct AuxiliaryInputType2StatusInd_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_auxiliaryInputObjectID;
+OCTETSTRING_template field_value1;
+OCTETSTRING_template field_value2;
+BITSTRING_template field_operationState;
+};
+
+void AuxiliaryInputType2StatusInd_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_vtfunction = ANY_VALUE;
+single_value->field_auxiliaryInputObjectID = ANY_VALUE;
+single_value->field_value1 = ANY_VALUE;
+single_value->field_value2 = ANY_VALUE;
+single_value->field_operationState = ANY_VALUE;
+}
+}
+}
+
+void AuxiliaryInputType2StatusInd_template::copy_value(const AuxiliaryInputType2StatusInd& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.auxiliaryInputObjectID().is_bound()) {
+  single_value->field_auxiliaryInputObjectID = other_value.auxiliaryInputObjectID();
+} else {
+  single_value->field_auxiliaryInputObjectID.clean_up();
+}
+if (other_value.value1().is_bound()) {
+  single_value->field_value1 = other_value.value1();
+} else {
+  single_value->field_value1.clean_up();
+}
+if (other_value.value2().is_bound()) {
+  single_value->field_value2 = other_value.value2();
+} else {
+  single_value->field_value2.clean_up();
+}
+if (other_value.operationState().is_bound()) {
+  single_value->field_operationState = other_value.operationState();
+} else {
+  single_value->field_operationState.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void AuxiliaryInputType2StatusInd_template::copy_template(const AuxiliaryInputType2StatusInd_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.auxiliaryInputObjectID().get_selection()) {
+single_value->field_auxiliaryInputObjectID = other_value.auxiliaryInputObjectID();
+} else {
+single_value->field_auxiliaryInputObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.value1().get_selection()) {
+single_value->field_value1 = other_value.value1();
+} else {
+single_value->field_value1.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.value2().get_selection()) {
+single_value->field_value2 = other_value.value2();
+} else {
+single_value->field_value2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.operationState().get_selection()) {
+single_value->field_operationState = other_value.operationState();
+} else {
+single_value->field_operationState.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new AuxiliaryInputType2StatusInd_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.AuxiliaryInputType2StatusInd.");
+break;
+}
+set_selection(other_value);
+}
+
+AuxiliaryInputType2StatusInd_template::AuxiliaryInputType2StatusInd_template()
+{
+}
+
+AuxiliaryInputType2StatusInd_template::AuxiliaryInputType2StatusInd_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+AuxiliaryInputType2StatusInd_template::AuxiliaryInputType2StatusInd_template(const AuxiliaryInputType2StatusInd& other_value)
+{
+copy_value(other_value);
+}
+
+AuxiliaryInputType2StatusInd_template::AuxiliaryInputType2StatusInd_template(const OPTIONAL<AuxiliaryInputType2StatusInd>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const AuxiliaryInputType2StatusInd&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.AuxiliaryInputType2StatusInd from an unbound optional field.");
+}
+}
+
+AuxiliaryInputType2StatusInd_template::AuxiliaryInputType2StatusInd_template(const AuxiliaryInputType2StatusInd_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+AuxiliaryInputType2StatusInd_template::~AuxiliaryInputType2StatusInd_template()
+{
+clean_up();
+}
+
+AuxiliaryInputType2StatusInd_template& AuxiliaryInputType2StatusInd_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+AuxiliaryInputType2StatusInd_template& AuxiliaryInputType2StatusInd_template::operator=(const AuxiliaryInputType2StatusInd& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+AuxiliaryInputType2StatusInd_template& AuxiliaryInputType2StatusInd_template::operator=(const OPTIONAL<AuxiliaryInputType2StatusInd>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const AuxiliaryInputType2StatusInd&)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 @IsobusVTMessageTypes.AuxiliaryInputType2StatusInd.");
+}
+return *this;
+}
+
+AuxiliaryInputType2StatusInd_template& AuxiliaryInputType2StatusInd_template::operator=(const AuxiliaryInputType2StatusInd_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean AuxiliaryInputType2StatusInd_template::match(const AuxiliaryInputType2StatusInd& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.auxiliaryInputObjectID().is_bound()) return FALSE;
+if(!single_value->field_auxiliaryInputObjectID.match(other_value.auxiliaryInputObjectID(), legacy))return FALSE;
+if(!other_value.value1().is_bound()) return FALSE;
+if(!single_value->field_value1.match(other_value.value1(), legacy))return FALSE;
+if(!other_value.value2().is_bound()) return FALSE;
+if(!single_value->field_value2.match(other_value.value2(), legacy))return FALSE;
+if(!other_value.operationState().is_bound()) return FALSE;
+if(!single_value->field_operationState.match(other_value.operationState(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.AuxiliaryInputType2StatusInd.");
+}
+return FALSE;
+}
+
+boolean AuxiliaryInputType2StatusInd_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_auxiliaryInputObjectID.is_bound()
+
+ ||single_value->field_value1.is_bound()
+
+ ||single_value->field_value2.is_bound()
+
+ ||single_value->field_operationState.is_bound()
+;
+}
+
+boolean AuxiliaryInputType2StatusInd_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_auxiliaryInputObjectID.is_value()
+ &&single_value->field_value1.is_value()
+ &&single_value->field_value2.is_value()
+ &&single_value->field_operationState.is_value();
+}
+
+void AuxiliaryInputType2StatusInd_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+AuxiliaryInputType2StatusInd AuxiliaryInputType2StatusInd_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 @IsobusVTMessageTypes.AuxiliaryInputType2StatusInd.");
+AuxiliaryInputType2StatusInd ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_auxiliaryInputObjectID.is_bound()) {
+ret_val.auxiliaryInputObjectID() = single_value->field_auxiliaryInputObjectID.valueof();
+}
+if (single_value->field_value1.is_bound()) {
+ret_val.value1() = single_value->field_value1.valueof();
+}
+if (single_value->field_value2.is_bound()) {
+ret_val.value2() = single_value->field_value2.valueof();
+}
+if (single_value->field_operationState.is_bound()) {
+ret_val.operationState() = single_value->field_operationState.valueof();
+}
+return ret_val;
+}
+
+void AuxiliaryInputType2StatusInd_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.AuxiliaryInputType2StatusInd.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new AuxiliaryInputType2StatusInd_template[list_length];
+}
+
+AuxiliaryInputType2StatusInd_template& AuxiliaryInputType2StatusInd_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.AuxiliaryInputType2StatusInd.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.AuxiliaryInputType2StatusInd.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& AuxiliaryInputType2StatusInd_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& AuxiliaryInputType2StatusInd_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.AuxiliaryInputType2StatusInd.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& AuxiliaryInputType2StatusInd_template::auxiliaryInputObjectID()
+{
+set_specific();
+return single_value->field_auxiliaryInputObjectID;
+}
+
+const INTEGER_template& AuxiliaryInputType2StatusInd_template::auxiliaryInputObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field auxiliaryInputObjectID of a non-specific template of type @IsobusVTMessageTypes.AuxiliaryInputType2StatusInd.");
+return single_value->field_auxiliaryInputObjectID;
+}
+
+OCTETSTRING_template& AuxiliaryInputType2StatusInd_template::value1()
+{
+set_specific();
+return single_value->field_value1;
+}
+
+const OCTETSTRING_template& AuxiliaryInputType2StatusInd_template::value1() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field value1 of a non-specific template of type @IsobusVTMessageTypes.AuxiliaryInputType2StatusInd.");
+return single_value->field_value1;
+}
+
+OCTETSTRING_template& AuxiliaryInputType2StatusInd_template::value2()
+{
+set_specific();
+return single_value->field_value2;
+}
+
+const OCTETSTRING_template& AuxiliaryInputType2StatusInd_template::value2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field value2 of a non-specific template of type @IsobusVTMessageTypes.AuxiliaryInputType2StatusInd.");
+return single_value->field_value2;
+}
+
+BITSTRING_template& AuxiliaryInputType2StatusInd_template::operationState()
+{
+set_specific();
+return single_value->field_operationState;
+}
+
+const BITSTRING_template& AuxiliaryInputType2StatusInd_template::operationState() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field operationState of a non-specific template of type @IsobusVTMessageTypes.AuxiliaryInputType2StatusInd.");
+return single_value->field_operationState;
+}
+
+int AuxiliaryInputType2StatusInd_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.AuxiliaryInputType2StatusInd 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 @IsobusVTMessageTypes.AuxiliaryInputType2StatusInd 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 @IsobusVTMessageTypes.AuxiliaryInputType2StatusInd containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.AuxiliaryInputType2StatusInd containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.AuxiliaryInputType2StatusInd containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.AuxiliaryInputType2StatusInd containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.AuxiliaryInputType2StatusInd.");
+  }
+  return 0;
+}
+
+void AuxiliaryInputType2StatusInd_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", auxiliaryInputObjectID := ");
+single_value->field_auxiliaryInputObjectID.log();
+TTCN_Logger::log_event_str(", value1 := ");
+single_value->field_value1.log();
+TTCN_Logger::log_event_str(", value2 := ");
+single_value->field_value2.log();
+TTCN_Logger::log_event_str(", operationState := ");
+single_value->field_operationState.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void AuxiliaryInputType2StatusInd_template::log_match(const AuxiliaryInputType2StatusInd& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_auxiliaryInputObjectID.match(match_value.auxiliaryInputObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".auxiliaryInputObjectID");
+single_value->field_auxiliaryInputObjectID.log_match(match_value.auxiliaryInputObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_value1.match(match_value.value1(), legacy)){
+TTCN_Logger::log_logmatch_info(".value1");
+single_value->field_value1.log_match(match_value.value1(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_value2.match(match_value.value2(), legacy)){
+TTCN_Logger::log_logmatch_info(".value2");
+single_value->field_value2.log_match(match_value.value2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_operationState.match(match_value.operationState(), legacy)){
+TTCN_Logger::log_logmatch_info(".operationState");
+single_value->field_operationState.log_match(match_value.operationState(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", auxiliaryInputObjectID := ");
+single_value->field_auxiliaryInputObjectID.log_match(match_value.auxiliaryInputObjectID(), legacy);
+TTCN_Logger::log_event_str(", value1 := ");
+single_value->field_value1.log_match(match_value.value1(), legacy);
+TTCN_Logger::log_event_str(", value2 := ");
+single_value->field_value2.log_match(match_value.value2(), legacy);
+TTCN_Logger::log_event_str(", operationState := ");
+single_value->field_operationState.log_match(match_value.operationState(), 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 AuxiliaryInputType2StatusInd_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_auxiliaryInputObjectID.encode_text(text_buf);
+single_value->field_value1.encode_text(text_buf);
+single_value->field_value2.encode_text(text_buf);
+single_value->field_operationState.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 @IsobusVTMessageTypes.AuxiliaryInputType2StatusInd.");
+}
+}
+
+void AuxiliaryInputType2StatusInd_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_vtfunction.decode_text(text_buf);
+single_value->field_auxiliaryInputObjectID.decode_text(text_buf);
+single_value->field_value1.decode_text(text_buf);
+single_value->field_value2.decode_text(text_buf);
+single_value->field_operationState.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 AuxiliaryInputType2StatusInd_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 @IsobusVTMessageTypes.AuxiliaryInputType2StatusInd.");
+}
+}
+
+void AuxiliaryInputType2StatusInd_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: {
+    AuxiliaryInputType2StatusInd_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.AuxiliaryInputType2StatusInd 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) auxiliaryInputObjectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) value1().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) value2().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) operationState().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "auxiliaryInputObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          auxiliaryInputObjectID().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(), "value1")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          value1().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(), "value2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          value2().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(), "operationState")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          operationState().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 @IsobusVTMessageTypes.AuxiliaryInputType2StatusInd: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.AuxiliaryInputType2StatusInd");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void AuxiliaryInputType2StatusInd_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.AuxiliaryInputType2StatusInd");
+single_value->field_auxiliaryInputObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.AuxiliaryInputType2StatusInd");
+single_value->field_value1.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.AuxiliaryInputType2StatusInd");
+single_value->field_value2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.AuxiliaryInputType2StatusInd");
+single_value->field_operationState.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.AuxiliaryInputType2StatusInd");
+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 : "@IsobusVTMessageTypes.AuxiliaryInputType2StatusInd");
+}
+
+boolean AuxiliaryInputType2StatusInd_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean AuxiliaryInputType2StatusInd_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+VTfunction39VT2ECU::VTfunction39VT2ECU()
+{
+}
+
+VTfunction39VT2ECU::VTfunction39VT2ECU(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_notImplementedYet)
+  :   field_vtfunction(par_vtfunction),
+  field_notImplementedYet(par_notImplementedYet)
+{
+}
+
+VTfunction39VT2ECU::VTfunction39VT2ECU(const VTfunction39VT2ECU& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.VTfunction39VT2ECU.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.notImplementedYet().is_bound()) field_notImplementedYet = other_value.notImplementedYet();
+else field_notImplementedYet.clean_up();
+}
+
+void VTfunction39VT2ECU::clean_up()
+{
+field_vtfunction.clean_up();
+field_notImplementedYet.clean_up();
+}
+
+const TTCN_Typedescriptor_t* VTfunction39VT2ECU::get_descriptor() const { return &VTfunction39VT2ECU_descr_; }
+VTfunction39VT2ECU& VTfunction39VT2ECU::operator=(const VTfunction39VT2ECU& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.VTfunction39VT2ECU.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.notImplementedYet().is_bound()) field_notImplementedYet = other_value.notImplementedYet();
+  else field_notImplementedYet.clean_up();
+}
+return *this;
+}
+
+boolean VTfunction39VT2ECU::operator==(const VTfunction39VT2ECU& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_notImplementedYet==other_value.field_notImplementedYet;
+}
+
+boolean VTfunction39VT2ECU::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_notImplementedYet.is_bound());
+}
+boolean VTfunction39VT2ECU::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_notImplementedYet.is_value();
+}
+void VTfunction39VT2ECU::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", notImplementedYet := ");
+field_notImplementedYet.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void VTfunction39VT2ECU::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 @IsobusVTMessageTypes.VTfunction39VT2ECU 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) notImplementedYet().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "notImplementedYet")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          notImplementedYet().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 @IsobusVTMessageTypes.VTfunction39VT2ECU: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.VTfunction39VT2ECU");
+  }
+}
+
+void VTfunction39VT2ECU::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (notImplementedYet().is_bound()) notImplementedYet().set_implicit_omit();
+}
+
+void VTfunction39VT2ECU::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_notImplementedYet.encode_text(text_buf);
+}
+
+void VTfunction39VT2ECU::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_notImplementedYet.decode_text(text_buf);
+}
+
+void VTfunction39VT2ECU::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void VTfunction39VT2ECU::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int VTfunction39VT2ECU::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, OCTETSTRING_descr_.raw->forceomit);
+  decoded_field_length = field_notImplementedYet.RAW_decode(OCTETSTRING_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 VTfunction39VT2ECU::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, OCTETSTRING_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_notImplementedYet.RAW_encode(OCTETSTRING_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct VTfunction39VT2ECU_template::single_value_struct {
+INTEGER_template field_vtfunction;
+OCTETSTRING_template field_notImplementedYet;
+};
+
+void VTfunction39VT2ECU_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_vtfunction = ANY_VALUE;
+single_value->field_notImplementedYet = ANY_VALUE;
+}
+}
+}
+
+void VTfunction39VT2ECU_template::copy_value(const VTfunction39VT2ECU& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.notImplementedYet().is_bound()) {
+  single_value->field_notImplementedYet = other_value.notImplementedYet();
+} else {
+  single_value->field_notImplementedYet.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void VTfunction39VT2ECU_template::copy_template(const VTfunction39VT2ECU_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.notImplementedYet().get_selection()) {
+single_value->field_notImplementedYet = other_value.notImplementedYet();
+} else {
+single_value->field_notImplementedYet.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new VTfunction39VT2ECU_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTfunction39VT2ECU.");
+break;
+}
+set_selection(other_value);
+}
+
+VTfunction39VT2ECU_template::VTfunction39VT2ECU_template()
+{
+}
+
+VTfunction39VT2ECU_template::VTfunction39VT2ECU_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+VTfunction39VT2ECU_template::VTfunction39VT2ECU_template(const VTfunction39VT2ECU& other_value)
+{
+copy_value(other_value);
+}
+
+VTfunction39VT2ECU_template::VTfunction39VT2ECU_template(const OPTIONAL<VTfunction39VT2ECU>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTfunction39VT2ECU&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.VTfunction39VT2ECU from an unbound optional field.");
+}
+}
+
+VTfunction39VT2ECU_template::VTfunction39VT2ECU_template(const VTfunction39VT2ECU_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+VTfunction39VT2ECU_template::~VTfunction39VT2ECU_template()
+{
+clean_up();
+}
+
+VTfunction39VT2ECU_template& VTfunction39VT2ECU_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+VTfunction39VT2ECU_template& VTfunction39VT2ECU_template::operator=(const VTfunction39VT2ECU& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+VTfunction39VT2ECU_template& VTfunction39VT2ECU_template::operator=(const OPTIONAL<VTfunction39VT2ECU>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTfunction39VT2ECU&)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 @IsobusVTMessageTypes.VTfunction39VT2ECU.");
+}
+return *this;
+}
+
+VTfunction39VT2ECU_template& VTfunction39VT2ECU_template::operator=(const VTfunction39VT2ECU_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean VTfunction39VT2ECU_template::match(const VTfunction39VT2ECU& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.notImplementedYet().is_bound()) return FALSE;
+if(!single_value->field_notImplementedYet.match(other_value.notImplementedYet(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTfunction39VT2ECU.");
+}
+return FALSE;
+}
+
+boolean VTfunction39VT2ECU_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_notImplementedYet.is_bound()
+;
+}
+
+boolean VTfunction39VT2ECU_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_notImplementedYet.is_value();
+}
+
+void VTfunction39VT2ECU_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+VTfunction39VT2ECU VTfunction39VT2ECU_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 @IsobusVTMessageTypes.VTfunction39VT2ECU.");
+VTfunction39VT2ECU ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_notImplementedYet.is_bound()) {
+ret_val.notImplementedYet() = single_value->field_notImplementedYet.valueof();
+}
+return ret_val;
+}
+
+void VTfunction39VT2ECU_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.VTfunction39VT2ECU.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new VTfunction39VT2ECU_template[list_length];
+}
+
+VTfunction39VT2ECU_template& VTfunction39VT2ECU_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.VTfunction39VT2ECU.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.VTfunction39VT2ECU.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& VTfunction39VT2ECU_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& VTfunction39VT2ECU_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.VTfunction39VT2ECU.");
+return single_value->field_vtfunction;
+}
+
+OCTETSTRING_template& VTfunction39VT2ECU_template::notImplementedYet()
+{
+set_specific();
+return single_value->field_notImplementedYet;
+}
+
+const OCTETSTRING_template& VTfunction39VT2ECU_template::notImplementedYet() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field notImplementedYet of a non-specific template of type @IsobusVTMessageTypes.VTfunction39VT2ECU.");
+return single_value->field_notImplementedYet;
+}
+
+int VTfunction39VT2ECU_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction39VT2ECU 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 @IsobusVTMessageTypes.VTfunction39VT2ECU 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 @IsobusVTMessageTypes.VTfunction39VT2ECU containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction39VT2ECU containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction39VT2ECU containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction39VT2ECU containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTfunction39VT2ECU.");
+  }
+  return 0;
+}
+
+void VTfunction39VT2ECU_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", notImplementedYet := ");
+single_value->field_notImplementedYet.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void VTfunction39VT2ECU_template::log_match(const VTfunction39VT2ECU& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_notImplementedYet.match(match_value.notImplementedYet(), legacy)){
+TTCN_Logger::log_logmatch_info(".notImplementedYet");
+single_value->field_notImplementedYet.log_match(match_value.notImplementedYet(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", notImplementedYet := ");
+single_value->field_notImplementedYet.log_match(match_value.notImplementedYet(), 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 VTfunction39VT2ECU_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_notImplementedYet.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 @IsobusVTMessageTypes.VTfunction39VT2ECU.");
+}
+}
+
+void VTfunction39VT2ECU_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_vtfunction.decode_text(text_buf);
+single_value->field_notImplementedYet.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 VTfunction39VT2ECU_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 @IsobusVTMessageTypes.VTfunction39VT2ECU.");
+}
+}
+
+void VTfunction39VT2ECU_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: {
+    VTfunction39VT2ECU_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.VTfunction39VT2ECU 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) notImplementedYet().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "notImplementedYet")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          notImplementedYet().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 @IsobusVTMessageTypes.VTfunction39VT2ECU: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.VTfunction39VT2ECU");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void VTfunction39VT2ECU_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTfunction39VT2ECU");
+single_value->field_notImplementedYet.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTfunction39VT2ECU");
+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 : "@IsobusVTMessageTypes.VTfunction39VT2ECU");
+}
+
+boolean VTfunction39VT2ECU_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean VTfunction39VT2ECU_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+VTfunction39ECU2VT::VTfunction39ECU2VT()
+{
+}
+
+VTfunction39ECU2VT::VTfunction39ECU2VT(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_notImplementedYet)
+  :   field_vtfunction(par_vtfunction),
+  field_notImplementedYet(par_notImplementedYet)
+{
+}
+
+VTfunction39ECU2VT::VTfunction39ECU2VT(const VTfunction39ECU2VT& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.VTfunction39ECU2VT.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.notImplementedYet().is_bound()) field_notImplementedYet = other_value.notImplementedYet();
+else field_notImplementedYet.clean_up();
+}
+
+void VTfunction39ECU2VT::clean_up()
+{
+field_vtfunction.clean_up();
+field_notImplementedYet.clean_up();
+}
+
+const TTCN_Typedescriptor_t* VTfunction39ECU2VT::get_descriptor() const { return &VTfunction39ECU2VT_descr_; }
+VTfunction39ECU2VT& VTfunction39ECU2VT::operator=(const VTfunction39ECU2VT& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.VTfunction39ECU2VT.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.notImplementedYet().is_bound()) field_notImplementedYet = other_value.notImplementedYet();
+  else field_notImplementedYet.clean_up();
+}
+return *this;
+}
+
+boolean VTfunction39ECU2VT::operator==(const VTfunction39ECU2VT& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_notImplementedYet==other_value.field_notImplementedYet;
+}
+
+boolean VTfunction39ECU2VT::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_notImplementedYet.is_bound());
+}
+boolean VTfunction39ECU2VT::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_notImplementedYet.is_value();
+}
+void VTfunction39ECU2VT::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", notImplementedYet := ");
+field_notImplementedYet.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void VTfunction39ECU2VT::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 @IsobusVTMessageTypes.VTfunction39ECU2VT 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) notImplementedYet().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "notImplementedYet")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          notImplementedYet().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 @IsobusVTMessageTypes.VTfunction39ECU2VT: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.VTfunction39ECU2VT");
+  }
+}
+
+void VTfunction39ECU2VT::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (notImplementedYet().is_bound()) notImplementedYet().set_implicit_omit();
+}
+
+void VTfunction39ECU2VT::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_notImplementedYet.encode_text(text_buf);
+}
+
+void VTfunction39ECU2VT::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_notImplementedYet.decode_text(text_buf);
+}
+
+void VTfunction39ECU2VT::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void VTfunction39ECU2VT::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int VTfunction39ECU2VT::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, OCTETSTRING_descr_.raw->forceomit);
+  decoded_field_length = field_notImplementedYet.RAW_decode(OCTETSTRING_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 VTfunction39ECU2VT::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, OCTETSTRING_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_notImplementedYet.RAW_encode(OCTETSTRING_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct VTfunction39ECU2VT_template::single_value_struct {
+INTEGER_template field_vtfunction;
+OCTETSTRING_template field_notImplementedYet;
+};
+
+void VTfunction39ECU2VT_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_vtfunction = ANY_VALUE;
+single_value->field_notImplementedYet = ANY_VALUE;
+}
+}
+}
+
+void VTfunction39ECU2VT_template::copy_value(const VTfunction39ECU2VT& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.notImplementedYet().is_bound()) {
+  single_value->field_notImplementedYet = other_value.notImplementedYet();
+} else {
+  single_value->field_notImplementedYet.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void VTfunction39ECU2VT_template::copy_template(const VTfunction39ECU2VT_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.notImplementedYet().get_selection()) {
+single_value->field_notImplementedYet = other_value.notImplementedYet();
+} else {
+single_value->field_notImplementedYet.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new VTfunction39ECU2VT_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTfunction39ECU2VT.");
+break;
+}
+set_selection(other_value);
+}
+
+VTfunction39ECU2VT_template::VTfunction39ECU2VT_template()
+{
+}
+
+VTfunction39ECU2VT_template::VTfunction39ECU2VT_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+VTfunction39ECU2VT_template::VTfunction39ECU2VT_template(const VTfunction39ECU2VT& other_value)
+{
+copy_value(other_value);
+}
+
+VTfunction39ECU2VT_template::VTfunction39ECU2VT_template(const OPTIONAL<VTfunction39ECU2VT>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTfunction39ECU2VT&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.VTfunction39ECU2VT from an unbound optional field.");
+}
+}
+
+VTfunction39ECU2VT_template::VTfunction39ECU2VT_template(const VTfunction39ECU2VT_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+VTfunction39ECU2VT_template::~VTfunction39ECU2VT_template()
+{
+clean_up();
+}
+
+VTfunction39ECU2VT_template& VTfunction39ECU2VT_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+VTfunction39ECU2VT_template& VTfunction39ECU2VT_template::operator=(const VTfunction39ECU2VT& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+VTfunction39ECU2VT_template& VTfunction39ECU2VT_template::operator=(const OPTIONAL<VTfunction39ECU2VT>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTfunction39ECU2VT&)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 @IsobusVTMessageTypes.VTfunction39ECU2VT.");
+}
+return *this;
+}
+
+VTfunction39ECU2VT_template& VTfunction39ECU2VT_template::operator=(const VTfunction39ECU2VT_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean VTfunction39ECU2VT_template::match(const VTfunction39ECU2VT& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.notImplementedYet().is_bound()) return FALSE;
+if(!single_value->field_notImplementedYet.match(other_value.notImplementedYet(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTfunction39ECU2VT.");
+}
+return FALSE;
+}
+
+boolean VTfunction39ECU2VT_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_notImplementedYet.is_bound()
+;
+}
+
+boolean VTfunction39ECU2VT_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_notImplementedYet.is_value();
+}
+
+void VTfunction39ECU2VT_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+VTfunction39ECU2VT VTfunction39ECU2VT_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 @IsobusVTMessageTypes.VTfunction39ECU2VT.");
+VTfunction39ECU2VT ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_notImplementedYet.is_bound()) {
+ret_val.notImplementedYet() = single_value->field_notImplementedYet.valueof();
+}
+return ret_val;
+}
+
+void VTfunction39ECU2VT_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.VTfunction39ECU2VT.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new VTfunction39ECU2VT_template[list_length];
+}
+
+VTfunction39ECU2VT_template& VTfunction39ECU2VT_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.VTfunction39ECU2VT.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.VTfunction39ECU2VT.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& VTfunction39ECU2VT_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& VTfunction39ECU2VT_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.VTfunction39ECU2VT.");
+return single_value->field_vtfunction;
+}
+
+OCTETSTRING_template& VTfunction39ECU2VT_template::notImplementedYet()
+{
+set_specific();
+return single_value->field_notImplementedYet;
+}
+
+const OCTETSTRING_template& VTfunction39ECU2VT_template::notImplementedYet() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field notImplementedYet of a non-specific template of type @IsobusVTMessageTypes.VTfunction39ECU2VT.");
+return single_value->field_notImplementedYet;
+}
+
+int VTfunction39ECU2VT_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction39ECU2VT 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 @IsobusVTMessageTypes.VTfunction39ECU2VT 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 @IsobusVTMessageTypes.VTfunction39ECU2VT containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction39ECU2VT containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction39ECU2VT containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction39ECU2VT containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTfunction39ECU2VT.");
+  }
+  return 0;
+}
+
+void VTfunction39ECU2VT_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", notImplementedYet := ");
+single_value->field_notImplementedYet.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void VTfunction39ECU2VT_template::log_match(const VTfunction39ECU2VT& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_notImplementedYet.match(match_value.notImplementedYet(), legacy)){
+TTCN_Logger::log_logmatch_info(".notImplementedYet");
+single_value->field_notImplementedYet.log_match(match_value.notImplementedYet(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", notImplementedYet := ");
+single_value->field_notImplementedYet.log_match(match_value.notImplementedYet(), 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 VTfunction39ECU2VT_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_notImplementedYet.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 @IsobusVTMessageTypes.VTfunction39ECU2VT.");
+}
+}
+
+void VTfunction39ECU2VT_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_vtfunction.decode_text(text_buf);
+single_value->field_notImplementedYet.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 VTfunction39ECU2VT_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 @IsobusVTMessageTypes.VTfunction39ECU2VT.");
+}
+}
+
+void VTfunction39ECU2VT_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: {
+    VTfunction39ECU2VT_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.VTfunction39ECU2VT 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) notImplementedYet().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "notImplementedYet")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          notImplementedYet().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 @IsobusVTMessageTypes.VTfunction39ECU2VT: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.VTfunction39ECU2VT");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void VTfunction39ECU2VT_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTfunction39ECU2VT");
+single_value->field_notImplementedYet.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTfunction39ECU2VT");
+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 : "@IsobusVTMessageTypes.VTfunction39ECU2VT");
+}
+
+boolean VTfunction39ECU2VT_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean VTfunction39ECU2VT_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ESCreq::ESCreq()
+{
+}
+
+ESCreq::ESCreq(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_reserved2,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_reserved2(par_reserved2),
+  field_reserved3(par_reserved3),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+ESCreq::ESCreq(const ESCreq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ESCreq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+else field_reserved2.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void ESCreq::clean_up()
+{
+field_vtfunction.clean_up();
+field_reserved2.clean_up();
+field_reserved3.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ESCreq::get_descriptor() const { return &ESCreq_descr_; }
+ESCreq& ESCreq::operator=(const ESCreq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ESCreq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+  else field_reserved2.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean ESCreq::operator==(const ESCreq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_reserved2==other_value.field_reserved2
+  && field_reserved3==other_value.field_reserved3
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean ESCreq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_reserved2.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean ESCreq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_reserved2.is_value()
+  && field_reserved3.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void ESCreq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ESCreq::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.ESCreq has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ESCreq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ESCreq");
+  }
+}
+
+void ESCreq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (reserved2().is_bound()) reserved2().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void ESCreq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_reserved2.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void ESCreq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_reserved2.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void ESCreq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ESCreq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ESCreq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ESCreq_reserved2_descr_.raw->forceomit);
+  decoded_field_length = field_reserved2.RAW_decode(ESCreq_reserved2_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, ESCreq_reserved3_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(ESCreq_reserved3_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, ESCreq_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(ESCreq_reserved4_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, ESCreq_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(ESCreq_reserved5_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, ESCreq_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(ESCreq_reserved6_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, ESCreq_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(ESCreq_reserved7_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, ESCreq_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(ESCreq_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ESCreq::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ESCreq_reserved2_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ESCreq_reserved3_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, ESCreq_reserved4_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, ESCreq_reserved5_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, ESCreq_reserved6_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, ESCreq_reserved7_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, ESCreq_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved2.RAW_encode(ESCreq_reserved2_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved3.RAW_encode(ESCreq_reserved3_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved4.RAW_encode(ESCreq_reserved4_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved5.RAW_encode(ESCreq_reserved5_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved6.RAW_encode(ESCreq_reserved6_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved7.RAW_encode(ESCreq_reserved7_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved8.RAW_encode(ESCreq_reserved8_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct ESCreq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+OCTETSTRING_template field_reserved2;
+OCTETSTRING_template field_reserved3;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void ESCreq_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_vtfunction = ANY_VALUE;
+single_value->field_reserved2 = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void ESCreq_template::copy_value(const ESCreq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.reserved2().is_bound()) {
+  single_value->field_reserved2 = other_value.reserved2();
+} else {
+  single_value->field_reserved2.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ESCreq_template::copy_template(const ESCreq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved2().get_selection()) {
+single_value->field_reserved2 = other_value.reserved2();
+} else {
+single_value->field_reserved2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ESCreq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ESCreq.");
+break;
+}
+set_selection(other_value);
+}
+
+ESCreq_template::ESCreq_template()
+{
+}
+
+ESCreq_template::ESCreq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ESCreq_template::ESCreq_template(const ESCreq& other_value)
+{
+copy_value(other_value);
+}
+
+ESCreq_template::ESCreq_template(const OPTIONAL<ESCreq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ESCreq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ESCreq from an unbound optional field.");
+}
+}
+
+ESCreq_template::ESCreq_template(const ESCreq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ESCreq_template::~ESCreq_template()
+{
+clean_up();
+}
+
+ESCreq_template& ESCreq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ESCreq_template& ESCreq_template::operator=(const ESCreq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ESCreq_template& ESCreq_template::operator=(const OPTIONAL<ESCreq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ESCreq&)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 @IsobusVTMessageTypes.ESCreq.");
+}
+return *this;
+}
+
+ESCreq_template& ESCreq_template::operator=(const ESCreq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ESCreq_template::match(const ESCreq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.reserved2().is_bound()) return FALSE;
+if(!single_value->field_reserved2.match(other_value.reserved2(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ESCreq.");
+}
+return FALSE;
+}
+
+boolean ESCreq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_reserved2.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean ESCreq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_reserved2.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void ESCreq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ESCreq ESCreq_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 @IsobusVTMessageTypes.ESCreq.");
+ESCreq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_reserved2.is_bound()) {
+ret_val.reserved2() = single_value->field_reserved2.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void ESCreq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ESCreq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ESCreq_template[list_length];
+}
+
+ESCreq_template& ESCreq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ESCreq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ESCreq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ESCreq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ESCreq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ESCreq.");
+return single_value->field_vtfunction;
+}
+
+OCTETSTRING_template& ESCreq_template::reserved2()
+{
+set_specific();
+return single_value->field_reserved2;
+}
+
+const OCTETSTRING_template& ESCreq_template::reserved2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved2 of a non-specific template of type @IsobusVTMessageTypes.ESCreq.");
+return single_value->field_reserved2;
+}
+
+OCTETSTRING_template& ESCreq_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const OCTETSTRING_template& ESCreq_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.ESCreq.");
+return single_value->field_reserved3;
+}
+
+OCTETSTRING_template& ESCreq_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& ESCreq_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.ESCreq.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& ESCreq_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& ESCreq_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.ESCreq.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& ESCreq_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& ESCreq_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.ESCreq.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& ESCreq_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& ESCreq_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ESCreq.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& ESCreq_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& ESCreq_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.ESCreq.");
+return single_value->field_reserved8;
+}
+
+int ESCreq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ESCreq which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ESCreq 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 @IsobusVTMessageTypes.ESCreq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ESCreq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ESCreq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ESCreq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ESCreq.");
+  }
+  return 0;
+}
+
+void ESCreq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ESCreq_template::log_match(const ESCreq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved2.match(match_value.reserved2(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved2");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 ESCreq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_reserved2.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.ESCreq.");
+}
+}
+
+void ESCreq_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_vtfunction.decode_text(text_buf);
+single_value->field_reserved2.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 ESCreq_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 @IsobusVTMessageTypes.ESCreq.");
+}
+}
+
+void ESCreq_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: {
+    ESCreq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.ESCreq has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ESCreq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ESCreq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ESCreq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ESCreq");
+single_value->field_reserved2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ESCreq");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ESCreq");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ESCreq");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ESCreq");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ESCreq");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ESCreq");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ESCreq");
+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 : "@IsobusVTMessageTypes.ESCreq");
+}
+
+boolean ESCreq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ESCreq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ESCerrorCodes::ESCerrorCodes()
+{
+}
+
+ESCerrorCodes::ESCerrorCodes(const BOOLEAN& par_NoInputFieldIsOpenForInputESCignored,
+    const BOOLEAN& par_reserved1,
+    const BOOLEAN& par_reserved2,
+    const BOOLEAN& par_reserved3,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7)
+  :   field_NoInputFieldIsOpenForInputESCignored(par_NoInputFieldIsOpenForInputESCignored),
+  field_reserved1(par_reserved1),
+  field_reserved2(par_reserved2),
+  field_reserved3(par_reserved3),
+  field_anyOtherError(par_anyOtherError),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7)
+{
+}
+
+ESCerrorCodes::ESCerrorCodes(const ESCerrorCodes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ESCerrorCodes.");
+if (other_value.NoInputFieldIsOpenForInputESCignored().is_bound()) field_NoInputFieldIsOpenForInputESCignored = other_value.NoInputFieldIsOpenForInputESCignored();
+else field_NoInputFieldIsOpenForInputESCignored.clean_up();
+if (other_value.reserved1().is_bound()) field_reserved1 = other_value.reserved1();
+else field_reserved1.clean_up();
+if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+else field_reserved2.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+else field_anyOtherError.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+}
+
+void ESCerrorCodes::clean_up()
+{
+field_NoInputFieldIsOpenForInputESCignored.clean_up();
+field_reserved1.clean_up();
+field_reserved2.clean_up();
+field_reserved3.clean_up();
+field_anyOtherError.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ESCerrorCodes::get_descriptor() const { return &ESCerrorCodes_descr_; }
+ESCerrorCodes& ESCerrorCodes::operator=(const ESCerrorCodes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ESCerrorCodes.");
+  if (other_value.NoInputFieldIsOpenForInputESCignored().is_bound()) field_NoInputFieldIsOpenForInputESCignored = other_value.NoInputFieldIsOpenForInputESCignored();
+  else field_NoInputFieldIsOpenForInputESCignored.clean_up();
+  if (other_value.reserved1().is_bound()) field_reserved1 = other_value.reserved1();
+  else field_reserved1.clean_up();
+  if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+  else field_reserved2.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+  else field_anyOtherError.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+}
+return *this;
+}
+
+boolean ESCerrorCodes::operator==(const ESCerrorCodes& other_value) const
+{
+return field_NoInputFieldIsOpenForInputESCignored==other_value.field_NoInputFieldIsOpenForInputESCignored
+  && field_reserved1==other_value.field_reserved1
+  && field_reserved2==other_value.field_reserved2
+  && field_reserved3==other_value.field_reserved3
+  && field_anyOtherError==other_value.field_anyOtherError
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7;
+}
+
+boolean ESCerrorCodes::is_bound() const
+{
+return (field_NoInputFieldIsOpenForInputESCignored.is_bound())
+  || (field_reserved1.is_bound())
+  || (field_reserved2.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_anyOtherError.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound());
+}
+boolean ESCerrorCodes::is_value() const
+{
+return field_NoInputFieldIsOpenForInputESCignored.is_value()
+  && field_reserved1.is_value()
+  && field_reserved2.is_value()
+  && field_reserved3.is_value()
+  && field_anyOtherError.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value();
+}
+void ESCerrorCodes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ NoInputFieldIsOpenForInputESCignored := ");
+field_NoInputFieldIsOpenForInputESCignored.log();
+TTCN_Logger::log_event_str(", reserved1 := ");
+field_reserved1.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ESCerrorCodes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.ESCerrorCodes has 8 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) NoInputFieldIsOpenForInputESCignored().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved1().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "NoInputFieldIsOpenForInputESCignored")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          NoInputFieldIsOpenForInputESCignored().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(), "reserved1")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved1().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ESCerrorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ESCerrorCodes");
+  }
+}
+
+void ESCerrorCodes::set_implicit_omit()
+{
+if (NoInputFieldIsOpenForInputESCignored().is_bound()) NoInputFieldIsOpenForInputESCignored().set_implicit_omit();
+if (reserved1().is_bound()) reserved1().set_implicit_omit();
+if (reserved2().is_bound()) reserved2().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (anyOtherError().is_bound()) anyOtherError().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+}
+
+void ESCerrorCodes::encode_text(Text_Buf& text_buf) const
+{
+field_NoInputFieldIsOpenForInputESCignored.encode_text(text_buf);
+field_reserved1.encode_text(text_buf);
+field_reserved2.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_anyOtherError.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+}
+
+void ESCerrorCodes::decode_text(Text_Buf& text_buf)
+{
+field_NoInputFieldIsOpenForInputESCignored.decode_text(text_buf);
+field_reserved1.decode_text(text_buf);
+field_reserved2.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_anyOtherError.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+}
+
+void ESCerrorCodes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ESCerrorCodes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ESCerrorCodes::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_NoInputFieldIsOpenForInputESCignored.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved1.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved2.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_anyOtherError.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ESCerrorCodes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_NoInputFieldIsOpenForInputESCignored.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved1.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved2.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved3.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_anyOtherError.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved5.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved6.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved7.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct ESCerrorCodes_template::single_value_struct {
+BOOLEAN_template field_NoInputFieldIsOpenForInputESCignored;
+BOOLEAN_template field_reserved1;
+BOOLEAN_template field_reserved2;
+BOOLEAN_template field_reserved3;
+BOOLEAN_template field_anyOtherError;
+BOOLEAN_template field_reserved5;
+BOOLEAN_template field_reserved6;
+BOOLEAN_template field_reserved7;
+};
+
+void ESCerrorCodes_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_NoInputFieldIsOpenForInputESCignored = ANY_VALUE;
+single_value->field_reserved1 = ANY_VALUE;
+single_value->field_reserved2 = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_anyOtherError = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+}
+}
+}
+
+void ESCerrorCodes_template::copy_value(const ESCerrorCodes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.NoInputFieldIsOpenForInputESCignored().is_bound()) {
+  single_value->field_NoInputFieldIsOpenForInputESCignored = other_value.NoInputFieldIsOpenForInputESCignored();
+} else {
+  single_value->field_NoInputFieldIsOpenForInputESCignored.clean_up();
+}
+if (other_value.reserved1().is_bound()) {
+  single_value->field_reserved1 = other_value.reserved1();
+} else {
+  single_value->field_reserved1.clean_up();
+}
+if (other_value.reserved2().is_bound()) {
+  single_value->field_reserved2 = other_value.reserved2();
+} else {
+  single_value->field_reserved2.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.anyOtherError().is_bound()) {
+  single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+  single_value->field_anyOtherError.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ESCerrorCodes_template::copy_template(const ESCerrorCodes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.NoInputFieldIsOpenForInputESCignored().get_selection()) {
+single_value->field_NoInputFieldIsOpenForInputESCignored = other_value.NoInputFieldIsOpenForInputESCignored();
+} else {
+single_value->field_NoInputFieldIsOpenForInputESCignored.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved1().get_selection()) {
+single_value->field_reserved1 = other_value.reserved1();
+} else {
+single_value->field_reserved1.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved2().get_selection()) {
+single_value->field_reserved2 = other_value.reserved2();
+} else {
+single_value->field_reserved2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.anyOtherError().get_selection()) {
+single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+single_value->field_anyOtherError.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ESCerrorCodes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ESCerrorCodes.");
+break;
+}
+set_selection(other_value);
+}
+
+ESCerrorCodes_template::ESCerrorCodes_template()
+{
+}
+
+ESCerrorCodes_template::ESCerrorCodes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ESCerrorCodes_template::ESCerrorCodes_template(const ESCerrorCodes& other_value)
+{
+copy_value(other_value);
+}
+
+ESCerrorCodes_template::ESCerrorCodes_template(const OPTIONAL<ESCerrorCodes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ESCerrorCodes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ESCerrorCodes from an unbound optional field.");
+}
+}
+
+ESCerrorCodes_template::ESCerrorCodes_template(const ESCerrorCodes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ESCerrorCodes_template::~ESCerrorCodes_template()
+{
+clean_up();
+}
+
+ESCerrorCodes_template& ESCerrorCodes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ESCerrorCodes_template& ESCerrorCodes_template::operator=(const ESCerrorCodes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ESCerrorCodes_template& ESCerrorCodes_template::operator=(const OPTIONAL<ESCerrorCodes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ESCerrorCodes&)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 @IsobusVTMessageTypes.ESCerrorCodes.");
+}
+return *this;
+}
+
+ESCerrorCodes_template& ESCerrorCodes_template::operator=(const ESCerrorCodes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ESCerrorCodes_template::match(const ESCerrorCodes& 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.NoInputFieldIsOpenForInputESCignored().is_bound()) return FALSE;
+if(!single_value->field_NoInputFieldIsOpenForInputESCignored.match(other_value.NoInputFieldIsOpenForInputESCignored(), legacy))return FALSE;
+if(!other_value.reserved1().is_bound()) return FALSE;
+if(!single_value->field_reserved1.match(other_value.reserved1(), legacy))return FALSE;
+if(!other_value.reserved2().is_bound()) return FALSE;
+if(!single_value->field_reserved2.match(other_value.reserved2(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.anyOtherError().is_bound()) return FALSE;
+if(!single_value->field_anyOtherError.match(other_value.anyOtherError(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ESCerrorCodes.");
+}
+return FALSE;
+}
+
+boolean ESCerrorCodes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_NoInputFieldIsOpenForInputESCignored.is_bound()
+
+ ||single_value->field_reserved1.is_bound()
+
+ ||single_value->field_reserved2.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_anyOtherError.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+;
+}
+
+boolean ESCerrorCodes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_NoInputFieldIsOpenForInputESCignored.is_value()
+ &&single_value->field_reserved1.is_value()
+ &&single_value->field_reserved2.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_anyOtherError.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value();
+}
+
+void ESCerrorCodes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ESCerrorCodes ESCerrorCodes_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 @IsobusVTMessageTypes.ESCerrorCodes.");
+ESCerrorCodes ret_val;
+if (single_value->field_NoInputFieldIsOpenForInputESCignored.is_bound()) {
+ret_val.NoInputFieldIsOpenForInputESCignored() = single_value->field_NoInputFieldIsOpenForInputESCignored.valueof();
+}
+if (single_value->field_reserved1.is_bound()) {
+ret_val.reserved1() = single_value->field_reserved1.valueof();
+}
+if (single_value->field_reserved2.is_bound()) {
+ret_val.reserved2() = single_value->field_reserved2.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_anyOtherError.is_bound()) {
+ret_val.anyOtherError() = single_value->field_anyOtherError.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+return ret_val;
+}
+
+void ESCerrorCodes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ESCerrorCodes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ESCerrorCodes_template[list_length];
+}
+
+ESCerrorCodes_template& ESCerrorCodes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ESCerrorCodes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ESCerrorCodes.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& ESCerrorCodes_template::NoInputFieldIsOpenForInputESCignored()
+{
+set_specific();
+return single_value->field_NoInputFieldIsOpenForInputESCignored;
+}
+
+const BOOLEAN_template& ESCerrorCodes_template::NoInputFieldIsOpenForInputESCignored() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field NoInputFieldIsOpenForInputESCignored of a non-specific template of type @IsobusVTMessageTypes.ESCerrorCodes.");
+return single_value->field_NoInputFieldIsOpenForInputESCignored;
+}
+
+BOOLEAN_template& ESCerrorCodes_template::reserved1()
+{
+set_specific();
+return single_value->field_reserved1;
+}
+
+const BOOLEAN_template& ESCerrorCodes_template::reserved1() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved1 of a non-specific template of type @IsobusVTMessageTypes.ESCerrorCodes.");
+return single_value->field_reserved1;
+}
+
+BOOLEAN_template& ESCerrorCodes_template::reserved2()
+{
+set_specific();
+return single_value->field_reserved2;
+}
+
+const BOOLEAN_template& ESCerrorCodes_template::reserved2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved2 of a non-specific template of type @IsobusVTMessageTypes.ESCerrorCodes.");
+return single_value->field_reserved2;
+}
+
+BOOLEAN_template& ESCerrorCodes_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const BOOLEAN_template& ESCerrorCodes_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.ESCerrorCodes.");
+return single_value->field_reserved3;
+}
+
+BOOLEAN_template& ESCerrorCodes_template::anyOtherError()
+{
+set_specific();
+return single_value->field_anyOtherError;
+}
+
+const BOOLEAN_template& ESCerrorCodes_template::anyOtherError() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field anyOtherError of a non-specific template of type @IsobusVTMessageTypes.ESCerrorCodes.");
+return single_value->field_anyOtherError;
+}
+
+BOOLEAN_template& ESCerrorCodes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const BOOLEAN_template& ESCerrorCodes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.ESCerrorCodes.");
+return single_value->field_reserved5;
+}
+
+BOOLEAN_template& ESCerrorCodes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const BOOLEAN_template& ESCerrorCodes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.ESCerrorCodes.");
+return single_value->field_reserved6;
+}
+
+BOOLEAN_template& ESCerrorCodes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const BOOLEAN_template& ESCerrorCodes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ESCerrorCodes.");
+return single_value->field_reserved7;
+}
+
+int ESCerrorCodes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ESCerrorCodes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ESCerrorCodes 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 @IsobusVTMessageTypes.ESCerrorCodes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ESCerrorCodes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ESCerrorCodes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ESCerrorCodes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ESCerrorCodes.");
+  }
+  return 0;
+}
+
+void ESCerrorCodes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ NoInputFieldIsOpenForInputESCignored := ");
+single_value->field_NoInputFieldIsOpenForInputESCignored.log();
+TTCN_Logger::log_event_str(", reserved1 := ");
+single_value->field_reserved1.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ESCerrorCodes_template::log_match(const ESCerrorCodes& 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_NoInputFieldIsOpenForInputESCignored.match(match_value.NoInputFieldIsOpenForInputESCignored(), legacy)){
+TTCN_Logger::log_logmatch_info(".NoInputFieldIsOpenForInputESCignored");
+single_value->field_NoInputFieldIsOpenForInputESCignored.log_match(match_value.NoInputFieldIsOpenForInputESCignored(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved1.match(match_value.reserved1(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved1");
+single_value->field_reserved1.log_match(match_value.reserved1(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved2.match(match_value.reserved2(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved2");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_anyOtherError.match(match_value.anyOtherError(), legacy)){
+TTCN_Logger::log_logmatch_info(".anyOtherError");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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("{ NoInputFieldIsOpenForInputESCignored := ");
+single_value->field_NoInputFieldIsOpenForInputESCignored.log_match(match_value.NoInputFieldIsOpenForInputESCignored(), legacy);
+TTCN_Logger::log_event_str(", reserved1 := ");
+single_value->field_reserved1.log_match(match_value.reserved1(), legacy);
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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 ESCerrorCodes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_NoInputFieldIsOpenForInputESCignored.encode_text(text_buf);
+single_value->field_reserved1.encode_text(text_buf);
+single_value->field_reserved2.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_anyOtherError.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.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 @IsobusVTMessageTypes.ESCerrorCodes.");
+}
+}
+
+void ESCerrorCodes_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_NoInputFieldIsOpenForInputESCignored.decode_text(text_buf);
+single_value->field_reserved1.decode_text(text_buf);
+single_value->field_reserved2.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_anyOtherError.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.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 ESCerrorCodes_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 @IsobusVTMessageTypes.ESCerrorCodes.");
+}
+}
+
+void ESCerrorCodes_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: {
+    ESCerrorCodes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.ESCerrorCodes has 8 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) NoInputFieldIsOpenForInputESCignored().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved1().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "NoInputFieldIsOpenForInputESCignored")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          NoInputFieldIsOpenForInputESCignored().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(), "reserved1")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved1().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ESCerrorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ESCerrorCodes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ESCerrorCodes_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_NoInputFieldIsOpenForInputESCignored.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ESCerrorCodes");
+single_value->field_reserved1.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ESCerrorCodes");
+single_value->field_reserved2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ESCerrorCodes");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ESCerrorCodes");
+single_value->field_anyOtherError.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ESCerrorCodes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ESCerrorCodes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ESCerrorCodes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ESCerrorCodes");
+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 : "@IsobusVTMessageTypes.ESCerrorCodes");
+}
+
+boolean ESCerrorCodes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ESCerrorCodes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ESCres::ESCres()
+{
+}
+
+ESCres::ESCres(const INTEGER& par_vtfunction,
+    const INTEGER& par_ObjectIDwhereInputWasAborted,
+    const ESCerrorCodes& par_ErrorCodes,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_ObjectIDwhereInputWasAborted(par_ObjectIDwhereInputWasAborted),
+  field_ErrorCodes(par_ErrorCodes),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+ESCres::ESCres(const ESCres& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ESCres.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.ObjectIDwhereInputWasAborted().is_bound()) field_ObjectIDwhereInputWasAborted = other_value.ObjectIDwhereInputWasAborted();
+else field_ObjectIDwhereInputWasAborted.clean_up();
+if (other_value.ErrorCodes().is_bound()) field_ErrorCodes = other_value.ErrorCodes();
+else field_ErrorCodes.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void ESCres::clean_up()
+{
+field_vtfunction.clean_up();
+field_ObjectIDwhereInputWasAborted.clean_up();
+field_ErrorCodes.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ESCres::get_descriptor() const { return &ESCres_descr_; }
+ESCres& ESCres::operator=(const ESCres& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ESCres.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.ObjectIDwhereInputWasAborted().is_bound()) field_ObjectIDwhereInputWasAborted = other_value.ObjectIDwhereInputWasAborted();
+  else field_ObjectIDwhereInputWasAborted.clean_up();
+  if (other_value.ErrorCodes().is_bound()) field_ErrorCodes = other_value.ErrorCodes();
+  else field_ErrorCodes.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean ESCres::operator==(const ESCres& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_ObjectIDwhereInputWasAborted==other_value.field_ObjectIDwhereInputWasAborted
+  && field_ErrorCodes==other_value.field_ErrorCodes
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean ESCres::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_ObjectIDwhereInputWasAborted.is_bound())
+  || (field_ErrorCodes.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean ESCres::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_ObjectIDwhereInputWasAborted.is_value()
+  && field_ErrorCodes.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void ESCres::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", ObjectIDwhereInputWasAborted := ");
+field_ObjectIDwhereInputWasAborted.log();
+TTCN_Logger::log_event_str(", ErrorCodes := ");
+field_ErrorCodes.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ESCres::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 @IsobusVTMessageTypes.ESCres 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ObjectIDwhereInputWasAborted().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) ErrorCodes().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "ObjectIDwhereInputWasAborted")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ObjectIDwhereInputWasAborted().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(), "ErrorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ErrorCodes().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ESCres: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ESCres");
+  }
+}
+
+void ESCres::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (ObjectIDwhereInputWasAborted().is_bound()) ObjectIDwhereInputWasAborted().set_implicit_omit();
+if (ErrorCodes().is_bound()) ErrorCodes().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void ESCres::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_ObjectIDwhereInputWasAborted.encode_text(text_buf);
+field_ErrorCodes.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void ESCres::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_ObjectIDwhereInputWasAborted.decode_text(text_buf);
+field_ErrorCodes.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void ESCres::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ESCres::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ESCres::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, AnyObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_ObjectIDwhereInputWasAborted.RAW_decode(AnyObjectID_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, ESCerrorCodes_descr_.raw->forceomit);
+  decoded_field_length = field_ErrorCodes.RAW_decode(ESCerrorCodes_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, ESCres_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(ESCres_reserved5_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, ESCres_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(ESCres_reserved6_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, ESCres_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(ESCres_reserved7_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, ESCres_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(ESCres_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ESCres::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, AnyObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ESCerrorCodes_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, ESCres_reserved5_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, ESCres_reserved6_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, ESCres_reserved7_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, ESCres_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_ObjectIDwhereInputWasAborted.RAW_encode(AnyObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_ErrorCodes.RAW_encode(ESCerrorCodes_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved5.RAW_encode(ESCres_reserved5_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved6.RAW_encode(ESCres_reserved6_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved7.RAW_encode(ESCres_reserved7_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved8.RAW_encode(ESCres_reserved8_descr_, *myleaf.body.node.nodes[6]);
+  return myleaf.length = encoded_length;
+}
+
+struct ESCres_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_ObjectIDwhereInputWasAborted;
+ESCerrorCodes_template field_ErrorCodes;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void ESCres_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_vtfunction = ANY_VALUE;
+single_value->field_ObjectIDwhereInputWasAborted = ANY_VALUE;
+single_value->field_ErrorCodes = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void ESCres_template::copy_value(const ESCres& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.ObjectIDwhereInputWasAborted().is_bound()) {
+  single_value->field_ObjectIDwhereInputWasAborted = other_value.ObjectIDwhereInputWasAborted();
+} else {
+  single_value->field_ObjectIDwhereInputWasAborted.clean_up();
+}
+if (other_value.ErrorCodes().is_bound()) {
+  single_value->field_ErrorCodes = other_value.ErrorCodes();
+} else {
+  single_value->field_ErrorCodes.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ESCres_template::copy_template(const ESCres_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.ObjectIDwhereInputWasAborted().get_selection()) {
+single_value->field_ObjectIDwhereInputWasAborted = other_value.ObjectIDwhereInputWasAborted();
+} else {
+single_value->field_ObjectIDwhereInputWasAborted.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.ErrorCodes().get_selection()) {
+single_value->field_ErrorCodes = other_value.ErrorCodes();
+} else {
+single_value->field_ErrorCodes.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ESCres_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ESCres.");
+break;
+}
+set_selection(other_value);
+}
+
+ESCres_template::ESCres_template()
+{
+}
+
+ESCres_template::ESCres_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ESCres_template::ESCres_template(const ESCres& other_value)
+{
+copy_value(other_value);
+}
+
+ESCres_template::ESCres_template(const OPTIONAL<ESCres>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ESCres&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ESCres from an unbound optional field.");
+}
+}
+
+ESCres_template::ESCres_template(const ESCres_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ESCres_template::~ESCres_template()
+{
+clean_up();
+}
+
+ESCres_template& ESCres_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ESCres_template& ESCres_template::operator=(const ESCres& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ESCres_template& ESCres_template::operator=(const OPTIONAL<ESCres>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ESCres&)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 @IsobusVTMessageTypes.ESCres.");
+}
+return *this;
+}
+
+ESCres_template& ESCres_template::operator=(const ESCres_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ESCres_template::match(const ESCres& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.ObjectIDwhereInputWasAborted().is_bound()) return FALSE;
+if(!single_value->field_ObjectIDwhereInputWasAborted.match(other_value.ObjectIDwhereInputWasAborted(), legacy))return FALSE;
+if(!other_value.ErrorCodes().is_bound()) return FALSE;
+if(!single_value->field_ErrorCodes.match(other_value.ErrorCodes(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ESCres.");
+}
+return FALSE;
+}
+
+boolean ESCres_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_ObjectIDwhereInputWasAborted.is_bound()
+
+ ||single_value->field_ErrorCodes.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean ESCres_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_ObjectIDwhereInputWasAborted.is_value()
+ &&single_value->field_ErrorCodes.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void ESCres_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ESCres ESCres_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 @IsobusVTMessageTypes.ESCres.");
+ESCres ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_ObjectIDwhereInputWasAborted.is_bound()) {
+ret_val.ObjectIDwhereInputWasAborted() = single_value->field_ObjectIDwhereInputWasAborted.valueof();
+}
+if (single_value->field_ErrorCodes.is_bound()) {
+ret_val.ErrorCodes() = single_value->field_ErrorCodes.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void ESCres_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ESCres.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ESCres_template[list_length];
+}
+
+ESCres_template& ESCres_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ESCres.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ESCres.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ESCres_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ESCres_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ESCres.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& ESCres_template::ObjectIDwhereInputWasAborted()
+{
+set_specific();
+return single_value->field_ObjectIDwhereInputWasAborted;
+}
+
+const INTEGER_template& ESCres_template::ObjectIDwhereInputWasAborted() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field ObjectIDwhereInputWasAborted of a non-specific template of type @IsobusVTMessageTypes.ESCres.");
+return single_value->field_ObjectIDwhereInputWasAborted;
+}
+
+ESCerrorCodes_template& ESCres_template::ErrorCodes()
+{
+set_specific();
+return single_value->field_ErrorCodes;
+}
+
+const ESCerrorCodes_template& ESCres_template::ErrorCodes() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field ErrorCodes of a non-specific template of type @IsobusVTMessageTypes.ESCres.");
+return single_value->field_ErrorCodes;
+}
+
+OCTETSTRING_template& ESCres_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& ESCres_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.ESCres.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& ESCres_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& ESCres_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.ESCres.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& ESCres_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& ESCres_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ESCres.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& ESCres_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& ESCres_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.ESCres.");
+return single_value->field_reserved8;
+}
+
+int ESCres_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ESCres 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 @IsobusVTMessageTypes.ESCres 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 @IsobusVTMessageTypes.ESCres containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ESCres containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ESCres containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ESCres containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ESCres.");
+  }
+  return 0;
+}
+
+void ESCres_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", ObjectIDwhereInputWasAborted := ");
+single_value->field_ObjectIDwhereInputWasAborted.log();
+TTCN_Logger::log_event_str(", ErrorCodes := ");
+single_value->field_ErrorCodes.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ESCres_template::log_match(const ESCres& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_ObjectIDwhereInputWasAborted.match(match_value.ObjectIDwhereInputWasAborted(), legacy)){
+TTCN_Logger::log_logmatch_info(".ObjectIDwhereInputWasAborted");
+single_value->field_ObjectIDwhereInputWasAborted.log_match(match_value.ObjectIDwhereInputWasAborted(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_ErrorCodes.match(match_value.ErrorCodes(), legacy)){
+TTCN_Logger::log_logmatch_info(".ErrorCodes");
+single_value->field_ErrorCodes.log_match(match_value.ErrorCodes(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", ObjectIDwhereInputWasAborted := ");
+single_value->field_ObjectIDwhereInputWasAborted.log_match(match_value.ObjectIDwhereInputWasAborted(), legacy);
+TTCN_Logger::log_event_str(", ErrorCodes := ");
+single_value->field_ErrorCodes.log_match(match_value.ErrorCodes(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 ESCres_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_ObjectIDwhereInputWasAborted.encode_text(text_buf);
+single_value->field_ErrorCodes.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.ESCres.");
+}
+}
+
+void ESCres_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_vtfunction.decode_text(text_buf);
+single_value->field_ObjectIDwhereInputWasAborted.decode_text(text_buf);
+single_value->field_ErrorCodes.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 ESCres_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 @IsobusVTMessageTypes.ESCres.");
+}
+}
+
+void ESCres_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: {
+    ESCres_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.ESCres 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ObjectIDwhereInputWasAborted().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) ErrorCodes().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "ObjectIDwhereInputWasAborted")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ObjectIDwhereInputWasAborted().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(), "ErrorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ErrorCodes().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ESCres: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ESCres");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ESCres_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ESCres");
+single_value->field_ObjectIDwhereInputWasAborted.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ESCres");
+single_value->field_ErrorCodes.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ESCres");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ESCres");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ESCres");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ESCres");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ESCres");
+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 : "@IsobusVTMessageTypes.ESCres");
+}
+
+boolean ESCres_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ESCres_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+e__HideShowObject__state::e__HideShowObject__state()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+e__HideShowObject__state::e__HideShowObject__state(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @IsobusVTMessageTypes.e_HideShowObject_state with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+e__HideShowObject__state::e__HideShowObject__state(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+e__HideShowObject__state::e__HideShowObject__state(const e__HideShowObject__state& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @IsobusVTMessageTypes.e_HideShowObject_state.");
+enum_value = other_value.enum_value;
+}
+
+e__HideShowObject__state& e__HideShowObject__state::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @IsobusVTMessageTypes.e_HideShowObject_state.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+e__HideShowObject__state& e__HideShowObject__state::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+e__HideShowObject__state& e__HideShowObject__state::operator=(const e__HideShowObject__state& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusVTMessageTypes.e_HideShowObject_state.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean e__HideShowObject__state::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_HideShowObject_state.");
+return enum_value == other_value;
+}
+
+boolean e__HideShowObject__state::operator==(const e__HideShowObject__state& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_HideShowObject_state.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_HideShowObject_state.");
+return enum_value == other_value.enum_value;
+}
+
+boolean e__HideShowObject__state::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_HideShowObject_state.");
+return enum_value < other_value;
+}
+
+boolean e__HideShowObject__state::operator<(const e__HideShowObject__state& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_HideShowObject_state.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_HideShowObject_state.");
+return enum_value < other_value.enum_value;
+}
+
+boolean e__HideShowObject__state::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_HideShowObject_state.");
+return enum_value > other_value;
+}
+
+boolean e__HideShowObject__state::operator>(const e__HideShowObject__state& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_HideShowObject_state.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_HideShowObject_state.");
+return enum_value > other_value.enum_value;
+}
+
+const char *e__HideShowObject__state::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case hide: return "hide";
+case show: return "show";
+default: return "<unknown>";
+}
+}
+
+e__HideShowObject__state::enum_type e__HideShowObject__state::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "hide")) return hide;
+else if (!strcmp(str_par, "show")) return show;
+else return UNKNOWN_VALUE;
+}
+
+boolean e__HideShowObject__state::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 0:
+case 1:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int e__HideShowObject__state::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusVTMessageTypes.e_HideShowObject_state.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int e__HideShowObject__state::enum2int(const e__HideShowObject__state& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusVTMessageTypes.e_HideShowObject_state.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void e__HideShowObject__state::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @IsobusVTMessageTypes.e_HideShowObject_state.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+e__HideShowObject__state::operator e__HideShowObject__state::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @IsobusVTMessageTypes.e_HideShowObject_state.");
+return enum_value;
+}
+
+void e__HideShowObject__state::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void e__HideShowObject__state::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@IsobusVTMessageTypes.e_HideShowObject_state");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @IsobusVTMessageTypes.e_HideShowObject_state.");
+  }
+}
+
+void e__HideShowObject__state::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @IsobusVTMessageTypes.e_HideShowObject_state.");
+text_buf.push_int(enum_value);
+}
+
+void e__HideShowObject__state::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @IsobusVTMessageTypes.e_HideShowObject_state.", enum_value);
+}
+
+void e__HideShowObject__state::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void e__HideShowObject__state::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int e__HideShowObject__state::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*)
+{
+  int decoded_value = 0;
+  int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 2, no_err);
+  if (decoded_length < 0) return decoded_length;
+  if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value;
+  else {
+    if(no_err){
+     return -1;
+    } else {
+    TTCN_EncDec_ErrorContext::error
+      (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name);
+    enum_value = UNKNOWN_VALUE;
+    }
+  }
+  return decoded_length;
+}
+
+int e__HideShowObject__state::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const
+{
+  return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 2);
+}
+
+void e__HideShowObject__state_template::copy_template(const e__HideShowObject__state_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new e__HideShowObject__state_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_HideShowObject_state.");
+}
+}
+
+e__HideShowObject__state_template::e__HideShowObject__state_template()
+{
+}
+
+e__HideShowObject__state_template::e__HideShowObject__state_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+e__HideShowObject__state_template::e__HideShowObject__state_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!e__HideShowObject__state::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @IsobusVTMessageTypes.e_HideShowObject_state with unknown numeric value %d.", other_value);
+single_value = (e__HideShowObject__state::enum_type)other_value;
+}
+
+e__HideShowObject__state_template::e__HideShowObject__state_template(e__HideShowObject__state::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+e__HideShowObject__state_template::e__HideShowObject__state_template(const e__HideShowObject__state& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == e__HideShowObject__state::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @IsobusVTMessageTypes.e_HideShowObject_state.");
+single_value = other_value.enum_value;
+}
+
+e__HideShowObject__state_template::e__HideShowObject__state_template(const OPTIONAL<e__HideShowObject__state>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__HideShowObject__state::enum_type)(const e__HideShowObject__state&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @IsobusVTMessageTypes.e_HideShowObject_state from an unbound optional field.");
+}
+}
+
+e__HideShowObject__state_template::e__HideShowObject__state_template(const e__HideShowObject__state_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+e__HideShowObject__state_template::~e__HideShowObject__state_template()
+{
+clean_up();
+}
+
+boolean e__HideShowObject__state_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean e__HideShowObject__state_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != e__HideShowObject__state::UNBOUND_VALUE;
+}
+
+void e__HideShowObject__state_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+e__HideShowObject__state_template& e__HideShowObject__state_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+e__HideShowObject__state_template& e__HideShowObject__state_template::operator=(int other_value)
+{
+if (!e__HideShowObject__state::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @IsobusVTMessageTypes.e_HideShowObject_state.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (e__HideShowObject__state::enum_type)other_value;
+return *this;
+}
+
+e__HideShowObject__state_template& e__HideShowObject__state_template::operator=(e__HideShowObject__state::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+e__HideShowObject__state_template& e__HideShowObject__state_template::operator=(const e__HideShowObject__state& other_value)
+{
+if (other_value.enum_value == e__HideShowObject__state::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusVTMessageTypes.e_HideShowObject_state to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+e__HideShowObject__state_template& e__HideShowObject__state_template::operator=(const OPTIONAL<e__HideShowObject__state>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__HideShowObject__state::enum_type)(const e__HideShowObject__state&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @IsobusVTMessageTypes.e_HideShowObject_state.");
+}
+return *this;
+}
+
+e__HideShowObject__state_template& e__HideShowObject__state_template::operator=(const e__HideShowObject__state_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean e__HideShowObject__state_template::match(e__HideShowObject__state::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_HideShowObject_state.");
+}
+return FALSE;
+}
+
+boolean e__HideShowObject__state_template::match(const e__HideShowObject__state& other_value, boolean) const
+{
+if (other_value.enum_value == e__HideShowObject__state::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @IsobusVTMessageTypes.e_HideShowObject_state with an unbound value.");
+return match(other_value.enum_value);
+}
+
+e__HideShowObject__state::enum_type e__HideShowObject__state_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @IsobusVTMessageTypes.e_HideShowObject_state.");
+return single_value;
+}
+
+void e__HideShowObject__state_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @IsobusVTMessageTypes.e_HideShowObject_state.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new e__HideShowObject__state_template[list_length];
+}
+
+e__HideShowObject__state_template& e__HideShowObject__state_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @IsobusVTMessageTypes.e_HideShowObject_state.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @IsobusVTMessageTypes.e_HideShowObject_state.");
+return value_list.list_value[list_index];
+}
+
+void e__HideShowObject__state_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(e__HideShowObject__state::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void e__HideShowObject__state_template::log_match(const e__HideShowObject__state& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void e__HideShowObject__state_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_HideShowObject_state.");
+}
+}
+
+void e__HideShowObject__state_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (e__HideShowObject__state::enum_type)text_buf.pull_int().get_val();
+if (!e__HideShowObject__state::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @IsobusVTMessageTypes.e_HideShowObject_state.", single_value);
+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 e__HideShowObject__state_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @IsobusVTMessageTypes.e_HideShowObject_state.");
+}
+}
+
+boolean e__HideShowObject__state_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean e__HideShowObject__state_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 e__HideShowObject__state_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    e__HideShowObject__state_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    e__HideShowObject__state::enum_type enum_val = e__HideShowObject__state::str_to_enum(m_p->get_enumerated());
+    if (!e__HideShowObject__state::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @IsobusVTMessageTypes.e_HideShowObject_state.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@IsobusVTMessageTypes.e_HideShowObject_state");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void e__HideShowObject__state_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@IsobusVTMessageTypes.e_HideShowObject_state");
+}
+
+HideShowObjectReq::HideShowObjectReq()
+{
+}
+
+HideShowObjectReq::HideShowObjectReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const e__HideShowObject__state& par_hideShow,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_objectID(par_objectID),
+  field_hideShow(par_hideShow),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+HideShowObjectReq::HideShowObjectReq(const HideShowObjectReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.HideShowObjectReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+else field_objectID.clean_up();
+if (other_value.hideShow().is_bound()) field_hideShow = other_value.hideShow();
+else field_hideShow.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void HideShowObjectReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectID.clean_up();
+field_hideShow.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* HideShowObjectReq::get_descriptor() const { return &HideShowObjectReq_descr_; }
+HideShowObjectReq& HideShowObjectReq::operator=(const HideShowObjectReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.HideShowObjectReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+  else field_objectID.clean_up();
+  if (other_value.hideShow().is_bound()) field_hideShow = other_value.hideShow();
+  else field_hideShow.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean HideShowObjectReq::operator==(const HideShowObjectReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectID==other_value.field_objectID
+  && field_hideShow==other_value.field_hideShow
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean HideShowObjectReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectID.is_bound())
+  || (field_hideShow.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean HideShowObjectReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectID.is_value()
+  && field_hideShow.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void HideShowObjectReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+field_objectID.log();
+TTCN_Logger::log_event_str(", hideShow := ");
+field_hideShow.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void HideShowObjectReq::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 @IsobusVTMessageTypes.HideShowObjectReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) hideShow().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "hideShow")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          hideShow().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.HideShowObjectReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.HideShowObjectReq");
+  }
+}
+
+void HideShowObjectReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectID().is_bound()) objectID().set_implicit_omit();
+if (hideShow().is_bound()) hideShow().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void HideShowObjectReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectID.encode_text(text_buf);
+field_hideShow.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void HideShowObjectReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectID.decode_text(text_buf);
+field_hideShow.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void HideShowObjectReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void HideShowObjectReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int HideShowObjectReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectID.RAW_decode(ValidObjectID_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, e__HideShowObject__state_descr_.raw->forceomit);
+  decoded_field_length = field_hideShow.RAW_decode(e__HideShowObject__state_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, HideShowObjectReq_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(HideShowObjectReq_reserved5_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, HideShowObjectReq_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(HideShowObjectReq_reserved6_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, HideShowObjectReq_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(HideShowObjectReq_reserved7_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, HideShowObjectReq_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(HideShowObjectReq_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int HideShowObjectReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, e__HideShowObject__state_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, HideShowObjectReq_reserved5_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, HideShowObjectReq_reserved6_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, HideShowObjectReq_reserved7_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, HideShowObjectReq_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_hideShow.RAW_encode(e__HideShowObject__state_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved5.RAW_encode(HideShowObjectReq_reserved5_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved6.RAW_encode(HideShowObjectReq_reserved6_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved7.RAW_encode(HideShowObjectReq_reserved7_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved8.RAW_encode(HideShowObjectReq_reserved8_descr_, *myleaf.body.node.nodes[6]);
+  return myleaf.length = encoded_length;
+}
+
+struct HideShowObjectReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectID;
+e__HideShowObject__state_template field_hideShow;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void HideShowObjectReq_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_vtfunction = ANY_VALUE;
+single_value->field_objectID = ANY_VALUE;
+single_value->field_hideShow = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void HideShowObjectReq_template::copy_value(const HideShowObjectReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectID().is_bound()) {
+  single_value->field_objectID = other_value.objectID();
+} else {
+  single_value->field_objectID.clean_up();
+}
+if (other_value.hideShow().is_bound()) {
+  single_value->field_hideShow = other_value.hideShow();
+} else {
+  single_value->field_hideShow.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void HideShowObjectReq_template::copy_template(const HideShowObjectReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectID().get_selection()) {
+single_value->field_objectID = other_value.objectID();
+} else {
+single_value->field_objectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.hideShow().get_selection()) {
+single_value->field_hideShow = other_value.hideShow();
+} else {
+single_value->field_hideShow.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new HideShowObjectReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.HideShowObjectReq.");
+break;
+}
+set_selection(other_value);
+}
+
+HideShowObjectReq_template::HideShowObjectReq_template()
+{
+}
+
+HideShowObjectReq_template::HideShowObjectReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+HideShowObjectReq_template::HideShowObjectReq_template(const HideShowObjectReq& other_value)
+{
+copy_value(other_value);
+}
+
+HideShowObjectReq_template::HideShowObjectReq_template(const OPTIONAL<HideShowObjectReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const HideShowObjectReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.HideShowObjectReq from an unbound optional field.");
+}
+}
+
+HideShowObjectReq_template::HideShowObjectReq_template(const HideShowObjectReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+HideShowObjectReq_template::~HideShowObjectReq_template()
+{
+clean_up();
+}
+
+HideShowObjectReq_template& HideShowObjectReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+HideShowObjectReq_template& HideShowObjectReq_template::operator=(const HideShowObjectReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+HideShowObjectReq_template& HideShowObjectReq_template::operator=(const OPTIONAL<HideShowObjectReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const HideShowObjectReq&)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 @IsobusVTMessageTypes.HideShowObjectReq.");
+}
+return *this;
+}
+
+HideShowObjectReq_template& HideShowObjectReq_template::operator=(const HideShowObjectReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean HideShowObjectReq_template::match(const HideShowObjectReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectID().is_bound()) return FALSE;
+if(!single_value->field_objectID.match(other_value.objectID(), legacy))return FALSE;
+if(!other_value.hideShow().is_bound()) return FALSE;
+if(!single_value->field_hideShow.match(other_value.hideShow(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.HideShowObjectReq.");
+}
+return FALSE;
+}
+
+boolean HideShowObjectReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectID.is_bound()
+
+ ||single_value->field_hideShow.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean HideShowObjectReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectID.is_value()
+ &&single_value->field_hideShow.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void HideShowObjectReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+HideShowObjectReq HideShowObjectReq_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 @IsobusVTMessageTypes.HideShowObjectReq.");
+HideShowObjectReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectID.is_bound()) {
+ret_val.objectID() = single_value->field_objectID.valueof();
+}
+if (single_value->field_hideShow.is_bound()) {
+ret_val.hideShow() = single_value->field_hideShow.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void HideShowObjectReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.HideShowObjectReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new HideShowObjectReq_template[list_length];
+}
+
+HideShowObjectReq_template& HideShowObjectReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.HideShowObjectReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.HideShowObjectReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& HideShowObjectReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& HideShowObjectReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.HideShowObjectReq.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& HideShowObjectReq_template::objectID()
+{
+set_specific();
+return single_value->field_objectID;
+}
+
+const INTEGER_template& HideShowObjectReq_template::objectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectID of a non-specific template of type @IsobusVTMessageTypes.HideShowObjectReq.");
+return single_value->field_objectID;
+}
+
+e__HideShowObject__state_template& HideShowObjectReq_template::hideShow()
+{
+set_specific();
+return single_value->field_hideShow;
+}
+
+const e__HideShowObject__state_template& HideShowObjectReq_template::hideShow() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field hideShow of a non-specific template of type @IsobusVTMessageTypes.HideShowObjectReq.");
+return single_value->field_hideShow;
+}
+
+OCTETSTRING_template& HideShowObjectReq_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& HideShowObjectReq_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.HideShowObjectReq.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& HideShowObjectReq_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& HideShowObjectReq_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.HideShowObjectReq.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& HideShowObjectReq_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& HideShowObjectReq_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.HideShowObjectReq.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& HideShowObjectReq_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& HideShowObjectReq_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.HideShowObjectReq.");
+return single_value->field_reserved8;
+}
+
+int HideShowObjectReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.HideShowObjectReq 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 @IsobusVTMessageTypes.HideShowObjectReq 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 @IsobusVTMessageTypes.HideShowObjectReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.HideShowObjectReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.HideShowObjectReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.HideShowObjectReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.HideShowObjectReq.");
+  }
+  return 0;
+}
+
+void HideShowObjectReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log();
+TTCN_Logger::log_event_str(", hideShow := ");
+single_value->field_hideShow.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void HideShowObjectReq_template::log_match(const HideShowObjectReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectID.match(match_value.objectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectID");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_hideShow.match(match_value.hideShow(), legacy)){
+TTCN_Logger::log_logmatch_info(".hideShow");
+single_value->field_hideShow.log_match(match_value.hideShow(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::log_event_str(", hideShow := ");
+single_value->field_hideShow.log_match(match_value.hideShow(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 HideShowObjectReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectID.encode_text(text_buf);
+single_value->field_hideShow.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.HideShowObjectReq.");
+}
+}
+
+void HideShowObjectReq_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_vtfunction.decode_text(text_buf);
+single_value->field_objectID.decode_text(text_buf);
+single_value->field_hideShow.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 HideShowObjectReq_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 @IsobusVTMessageTypes.HideShowObjectReq.");
+}
+}
+
+void HideShowObjectReq_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: {
+    HideShowObjectReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.HideShowObjectReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) hideShow().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "hideShow")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          hideShow().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.HideShowObjectReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.HideShowObjectReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void HideShowObjectReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.HideShowObjectReq");
+single_value->field_objectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.HideShowObjectReq");
+single_value->field_hideShow.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.HideShowObjectReq");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.HideShowObjectReq");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.HideShowObjectReq");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.HideShowObjectReq");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.HideShowObjectReq");
+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 : "@IsobusVTMessageTypes.HideShowObjectReq");
+}
+
+boolean HideShowObjectReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean HideShowObjectReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+HideShowObjectRes__errorCodes::HideShowObjectRes__errorCodes()
+{
+}
+
+HideShowObjectRes__errorCodes::HideShowObjectRes__errorCodes(const BOOLEAN& par_referencesToMissingObjects,
+    const BOOLEAN& par_invalidObjectID,
+    const BOOLEAN& par_undefined,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved4,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7)
+  :   field_referencesToMissingObjects(par_referencesToMissingObjects),
+  field_invalidObjectID(par_invalidObjectID),
+  field_undefined(par_undefined),
+  field_anyOtherError(par_anyOtherError),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7)
+{
+}
+
+HideShowObjectRes__errorCodes::HideShowObjectRes__errorCodes(const HideShowObjectRes__errorCodes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.HideShowObjectRes_errorCodes.");
+if (other_value.referencesToMissingObjects().is_bound()) field_referencesToMissingObjects = other_value.referencesToMissingObjects();
+else field_referencesToMissingObjects.clean_up();
+if (other_value.invalidObjectID().is_bound()) field_invalidObjectID = other_value.invalidObjectID();
+else field_invalidObjectID.clean_up();
+if (other_value.undefined().is_bound()) field_undefined = other_value.undefined();
+else field_undefined.clean_up();
+if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+else field_anyOtherError.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+}
+
+void HideShowObjectRes__errorCodes::clean_up()
+{
+field_referencesToMissingObjects.clean_up();
+field_invalidObjectID.clean_up();
+field_undefined.clean_up();
+field_anyOtherError.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+}
+
+const TTCN_Typedescriptor_t* HideShowObjectRes__errorCodes::get_descriptor() const { return &HideShowObjectRes__errorCodes_descr_; }
+HideShowObjectRes__errorCodes& HideShowObjectRes__errorCodes::operator=(const HideShowObjectRes__errorCodes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.HideShowObjectRes_errorCodes.");
+  if (other_value.referencesToMissingObjects().is_bound()) field_referencesToMissingObjects = other_value.referencesToMissingObjects();
+  else field_referencesToMissingObjects.clean_up();
+  if (other_value.invalidObjectID().is_bound()) field_invalidObjectID = other_value.invalidObjectID();
+  else field_invalidObjectID.clean_up();
+  if (other_value.undefined().is_bound()) field_undefined = other_value.undefined();
+  else field_undefined.clean_up();
+  if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+  else field_anyOtherError.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+}
+return *this;
+}
+
+boolean HideShowObjectRes__errorCodes::operator==(const HideShowObjectRes__errorCodes& other_value) const
+{
+return field_referencesToMissingObjects==other_value.field_referencesToMissingObjects
+  && field_invalidObjectID==other_value.field_invalidObjectID
+  && field_undefined==other_value.field_undefined
+  && field_anyOtherError==other_value.field_anyOtherError
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7;
+}
+
+boolean HideShowObjectRes__errorCodes::is_bound() const
+{
+return (field_referencesToMissingObjects.is_bound())
+  || (field_invalidObjectID.is_bound())
+  || (field_undefined.is_bound())
+  || (field_anyOtherError.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound());
+}
+boolean HideShowObjectRes__errorCodes::is_value() const
+{
+return field_referencesToMissingObjects.is_value()
+  && field_invalidObjectID.is_value()
+  && field_undefined.is_value()
+  && field_anyOtherError.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value();
+}
+void HideShowObjectRes__errorCodes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ referencesToMissingObjects := ");
+field_referencesToMissingObjects.log();
+TTCN_Logger::log_event_str(", invalidObjectID := ");
+field_invalidObjectID.log();
+TTCN_Logger::log_event_str(", undefined := ");
+field_undefined.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void HideShowObjectRes__errorCodes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.HideShowObjectRes_errorCodes has 8 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) referencesToMissingObjects().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) invalidObjectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) undefined().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "referencesToMissingObjects")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          referencesToMissingObjects().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(), "invalidObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidObjectID().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(), "undefined")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          undefined().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.HideShowObjectRes_errorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.HideShowObjectRes_errorCodes");
+  }
+}
+
+void HideShowObjectRes__errorCodes::set_implicit_omit()
+{
+if (referencesToMissingObjects().is_bound()) referencesToMissingObjects().set_implicit_omit();
+if (invalidObjectID().is_bound()) invalidObjectID().set_implicit_omit();
+if (undefined().is_bound()) undefined().set_implicit_omit();
+if (anyOtherError().is_bound()) anyOtherError().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+}
+
+void HideShowObjectRes__errorCodes::encode_text(Text_Buf& text_buf) const
+{
+field_referencesToMissingObjects.encode_text(text_buf);
+field_invalidObjectID.encode_text(text_buf);
+field_undefined.encode_text(text_buf);
+field_anyOtherError.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+}
+
+void HideShowObjectRes__errorCodes::decode_text(Text_Buf& text_buf)
+{
+field_referencesToMissingObjects.decode_text(text_buf);
+field_invalidObjectID.decode_text(text_buf);
+field_undefined.decode_text(text_buf);
+field_anyOtherError.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+}
+
+void HideShowObjectRes__errorCodes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void HideShowObjectRes__errorCodes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int HideShowObjectRes__errorCodes::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_referencesToMissingObjects.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidObjectID.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_undefined.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_anyOtherError.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int HideShowObjectRes__errorCodes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_referencesToMissingObjects.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_invalidObjectID.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_undefined.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_anyOtherError.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved4.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved5.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved6.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved7.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct HideShowObjectRes__errorCodes_template::single_value_struct {
+BOOLEAN_template field_referencesToMissingObjects;
+BOOLEAN_template field_invalidObjectID;
+BOOLEAN_template field_undefined;
+BOOLEAN_template field_anyOtherError;
+BOOLEAN_template field_reserved4;
+BOOLEAN_template field_reserved5;
+BOOLEAN_template field_reserved6;
+BOOLEAN_template field_reserved7;
+};
+
+void HideShowObjectRes__errorCodes_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_referencesToMissingObjects = ANY_VALUE;
+single_value->field_invalidObjectID = ANY_VALUE;
+single_value->field_undefined = ANY_VALUE;
+single_value->field_anyOtherError = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+}
+}
+}
+
+void HideShowObjectRes__errorCodes_template::copy_value(const HideShowObjectRes__errorCodes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.referencesToMissingObjects().is_bound()) {
+  single_value->field_referencesToMissingObjects = other_value.referencesToMissingObjects();
+} else {
+  single_value->field_referencesToMissingObjects.clean_up();
+}
+if (other_value.invalidObjectID().is_bound()) {
+  single_value->field_invalidObjectID = other_value.invalidObjectID();
+} else {
+  single_value->field_invalidObjectID.clean_up();
+}
+if (other_value.undefined().is_bound()) {
+  single_value->field_undefined = other_value.undefined();
+} else {
+  single_value->field_undefined.clean_up();
+}
+if (other_value.anyOtherError().is_bound()) {
+  single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+  single_value->field_anyOtherError.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void HideShowObjectRes__errorCodes_template::copy_template(const HideShowObjectRes__errorCodes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.referencesToMissingObjects().get_selection()) {
+single_value->field_referencesToMissingObjects = other_value.referencesToMissingObjects();
+} else {
+single_value->field_referencesToMissingObjects.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.invalidObjectID().get_selection()) {
+single_value->field_invalidObjectID = other_value.invalidObjectID();
+} else {
+single_value->field_invalidObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.undefined().get_selection()) {
+single_value->field_undefined = other_value.undefined();
+} else {
+single_value->field_undefined.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.anyOtherError().get_selection()) {
+single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+single_value->field_anyOtherError.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new HideShowObjectRes__errorCodes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.HideShowObjectRes_errorCodes.");
+break;
+}
+set_selection(other_value);
+}
+
+HideShowObjectRes__errorCodes_template::HideShowObjectRes__errorCodes_template()
+{
+}
+
+HideShowObjectRes__errorCodes_template::HideShowObjectRes__errorCodes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+HideShowObjectRes__errorCodes_template::HideShowObjectRes__errorCodes_template(const HideShowObjectRes__errorCodes& other_value)
+{
+copy_value(other_value);
+}
+
+HideShowObjectRes__errorCodes_template::HideShowObjectRes__errorCodes_template(const OPTIONAL<HideShowObjectRes__errorCodes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const HideShowObjectRes__errorCodes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.HideShowObjectRes_errorCodes from an unbound optional field.");
+}
+}
+
+HideShowObjectRes__errorCodes_template::HideShowObjectRes__errorCodes_template(const HideShowObjectRes__errorCodes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+HideShowObjectRes__errorCodes_template::~HideShowObjectRes__errorCodes_template()
+{
+clean_up();
+}
+
+HideShowObjectRes__errorCodes_template& HideShowObjectRes__errorCodes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+HideShowObjectRes__errorCodes_template& HideShowObjectRes__errorCodes_template::operator=(const HideShowObjectRes__errorCodes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+HideShowObjectRes__errorCodes_template& HideShowObjectRes__errorCodes_template::operator=(const OPTIONAL<HideShowObjectRes__errorCodes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const HideShowObjectRes__errorCodes&)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 @IsobusVTMessageTypes.HideShowObjectRes_errorCodes.");
+}
+return *this;
+}
+
+HideShowObjectRes__errorCodes_template& HideShowObjectRes__errorCodes_template::operator=(const HideShowObjectRes__errorCodes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean HideShowObjectRes__errorCodes_template::match(const HideShowObjectRes__errorCodes& 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.referencesToMissingObjects().is_bound()) return FALSE;
+if(!single_value->field_referencesToMissingObjects.match(other_value.referencesToMissingObjects(), legacy))return FALSE;
+if(!other_value.invalidObjectID().is_bound()) return FALSE;
+if(!single_value->field_invalidObjectID.match(other_value.invalidObjectID(), legacy))return FALSE;
+if(!other_value.undefined().is_bound()) return FALSE;
+if(!single_value->field_undefined.match(other_value.undefined(), legacy))return FALSE;
+if(!other_value.anyOtherError().is_bound()) return FALSE;
+if(!single_value->field_anyOtherError.match(other_value.anyOtherError(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.HideShowObjectRes_errorCodes.");
+}
+return FALSE;
+}
+
+boolean HideShowObjectRes__errorCodes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_referencesToMissingObjects.is_bound()
+
+ ||single_value->field_invalidObjectID.is_bound()
+
+ ||single_value->field_undefined.is_bound()
+
+ ||single_value->field_anyOtherError.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+;
+}
+
+boolean HideShowObjectRes__errorCodes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_referencesToMissingObjects.is_value()
+ &&single_value->field_invalidObjectID.is_value()
+ &&single_value->field_undefined.is_value()
+ &&single_value->field_anyOtherError.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value();
+}
+
+void HideShowObjectRes__errorCodes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+HideShowObjectRes__errorCodes HideShowObjectRes__errorCodes_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 @IsobusVTMessageTypes.HideShowObjectRes_errorCodes.");
+HideShowObjectRes__errorCodes ret_val;
+if (single_value->field_referencesToMissingObjects.is_bound()) {
+ret_val.referencesToMissingObjects() = single_value->field_referencesToMissingObjects.valueof();
+}
+if (single_value->field_invalidObjectID.is_bound()) {
+ret_val.invalidObjectID() = single_value->field_invalidObjectID.valueof();
+}
+if (single_value->field_undefined.is_bound()) {
+ret_val.undefined() = single_value->field_undefined.valueof();
+}
+if (single_value->field_anyOtherError.is_bound()) {
+ret_val.anyOtherError() = single_value->field_anyOtherError.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+return ret_val;
+}
+
+void HideShowObjectRes__errorCodes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.HideShowObjectRes_errorCodes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new HideShowObjectRes__errorCodes_template[list_length];
+}
+
+HideShowObjectRes__errorCodes_template& HideShowObjectRes__errorCodes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.HideShowObjectRes_errorCodes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.HideShowObjectRes_errorCodes.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& HideShowObjectRes__errorCodes_template::referencesToMissingObjects()
+{
+set_specific();
+return single_value->field_referencesToMissingObjects;
+}
+
+const BOOLEAN_template& HideShowObjectRes__errorCodes_template::referencesToMissingObjects() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field referencesToMissingObjects of a non-specific template of type @IsobusVTMessageTypes.HideShowObjectRes_errorCodes.");
+return single_value->field_referencesToMissingObjects;
+}
+
+BOOLEAN_template& HideShowObjectRes__errorCodes_template::invalidObjectID()
+{
+set_specific();
+return single_value->field_invalidObjectID;
+}
+
+const BOOLEAN_template& HideShowObjectRes__errorCodes_template::invalidObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidObjectID of a non-specific template of type @IsobusVTMessageTypes.HideShowObjectRes_errorCodes.");
+return single_value->field_invalidObjectID;
+}
+
+BOOLEAN_template& HideShowObjectRes__errorCodes_template::undefined()
+{
+set_specific();
+return single_value->field_undefined;
+}
+
+const BOOLEAN_template& HideShowObjectRes__errorCodes_template::undefined() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field undefined of a non-specific template of type @IsobusVTMessageTypes.HideShowObjectRes_errorCodes.");
+return single_value->field_undefined;
+}
+
+BOOLEAN_template& HideShowObjectRes__errorCodes_template::anyOtherError()
+{
+set_specific();
+return single_value->field_anyOtherError;
+}
+
+const BOOLEAN_template& HideShowObjectRes__errorCodes_template::anyOtherError() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field anyOtherError of a non-specific template of type @IsobusVTMessageTypes.HideShowObjectRes_errorCodes.");
+return single_value->field_anyOtherError;
+}
+
+BOOLEAN_template& HideShowObjectRes__errorCodes_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const BOOLEAN_template& HideShowObjectRes__errorCodes_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.HideShowObjectRes_errorCodes.");
+return single_value->field_reserved4;
+}
+
+BOOLEAN_template& HideShowObjectRes__errorCodes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const BOOLEAN_template& HideShowObjectRes__errorCodes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.HideShowObjectRes_errorCodes.");
+return single_value->field_reserved5;
+}
+
+BOOLEAN_template& HideShowObjectRes__errorCodes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const BOOLEAN_template& HideShowObjectRes__errorCodes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.HideShowObjectRes_errorCodes.");
+return single_value->field_reserved6;
+}
+
+BOOLEAN_template& HideShowObjectRes__errorCodes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const BOOLEAN_template& HideShowObjectRes__errorCodes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.HideShowObjectRes_errorCodes.");
+return single_value->field_reserved7;
+}
+
+int HideShowObjectRes__errorCodes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.HideShowObjectRes_errorCodes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.HideShowObjectRes_errorCodes 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 @IsobusVTMessageTypes.HideShowObjectRes_errorCodes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.HideShowObjectRes_errorCodes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.HideShowObjectRes_errorCodes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.HideShowObjectRes_errorCodes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.HideShowObjectRes_errorCodes.");
+  }
+  return 0;
+}
+
+void HideShowObjectRes__errorCodes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ referencesToMissingObjects := ");
+single_value->field_referencesToMissingObjects.log();
+TTCN_Logger::log_event_str(", invalidObjectID := ");
+single_value->field_invalidObjectID.log();
+TTCN_Logger::log_event_str(", undefined := ");
+single_value->field_undefined.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void HideShowObjectRes__errorCodes_template::log_match(const HideShowObjectRes__errorCodes& 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_referencesToMissingObjects.match(match_value.referencesToMissingObjects(), legacy)){
+TTCN_Logger::log_logmatch_info(".referencesToMissingObjects");
+single_value->field_referencesToMissingObjects.log_match(match_value.referencesToMissingObjects(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_invalidObjectID.match(match_value.invalidObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidObjectID");
+single_value->field_invalidObjectID.log_match(match_value.invalidObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_undefined.match(match_value.undefined(), legacy)){
+TTCN_Logger::log_logmatch_info(".undefined");
+single_value->field_undefined.log_match(match_value.undefined(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_anyOtherError.match(match_value.anyOtherError(), legacy)){
+TTCN_Logger::log_logmatch_info(".anyOtherError");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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("{ referencesToMissingObjects := ");
+single_value->field_referencesToMissingObjects.log_match(match_value.referencesToMissingObjects(), legacy);
+TTCN_Logger::log_event_str(", invalidObjectID := ");
+single_value->field_invalidObjectID.log_match(match_value.invalidObjectID(), legacy);
+TTCN_Logger::log_event_str(", undefined := ");
+single_value->field_undefined.log_match(match_value.undefined(), legacy);
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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 HideShowObjectRes__errorCodes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_referencesToMissingObjects.encode_text(text_buf);
+single_value->field_invalidObjectID.encode_text(text_buf);
+single_value->field_undefined.encode_text(text_buf);
+single_value->field_anyOtherError.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.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 @IsobusVTMessageTypes.HideShowObjectRes_errorCodes.");
+}
+}
+
+void HideShowObjectRes__errorCodes_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_referencesToMissingObjects.decode_text(text_buf);
+single_value->field_invalidObjectID.decode_text(text_buf);
+single_value->field_undefined.decode_text(text_buf);
+single_value->field_anyOtherError.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.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 HideShowObjectRes__errorCodes_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 @IsobusVTMessageTypes.HideShowObjectRes_errorCodes.");
+}
+}
+
+void HideShowObjectRes__errorCodes_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: {
+    HideShowObjectRes__errorCodes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.HideShowObjectRes_errorCodes has 8 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) referencesToMissingObjects().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) invalidObjectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) undefined().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "referencesToMissingObjects")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          referencesToMissingObjects().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(), "invalidObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidObjectID().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(), "undefined")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          undefined().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.HideShowObjectRes_errorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.HideShowObjectRes_errorCodes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void HideShowObjectRes__errorCodes_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_referencesToMissingObjects.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.HideShowObjectRes_errorCodes");
+single_value->field_invalidObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.HideShowObjectRes_errorCodes");
+single_value->field_undefined.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.HideShowObjectRes_errorCodes");
+single_value->field_anyOtherError.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.HideShowObjectRes_errorCodes");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.HideShowObjectRes_errorCodes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.HideShowObjectRes_errorCodes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.HideShowObjectRes_errorCodes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.HideShowObjectRes_errorCodes");
+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 : "@IsobusVTMessageTypes.HideShowObjectRes_errorCodes");
+}
+
+boolean HideShowObjectRes__errorCodes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean HideShowObjectRes__errorCodes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+HideShowObjectRes::HideShowObjectRes()
+{
+}
+
+HideShowObjectRes::HideShowObjectRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const e__HideShowObject__state& par_hideShow,
+    const HideShowObjectRes__errorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_objectID(par_objectID),
+  field_hideShow(par_hideShow),
+  field_errorCodes(par_errorCodes),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+HideShowObjectRes::HideShowObjectRes(const HideShowObjectRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.HideShowObjectRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+else field_objectID.clean_up();
+if (other_value.hideShow().is_bound()) field_hideShow = other_value.hideShow();
+else field_hideShow.clean_up();
+if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+else field_errorCodes.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void HideShowObjectRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectID.clean_up();
+field_hideShow.clean_up();
+field_errorCodes.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* HideShowObjectRes::get_descriptor() const { return &HideShowObjectRes_descr_; }
+HideShowObjectRes& HideShowObjectRes::operator=(const HideShowObjectRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.HideShowObjectRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+  else field_objectID.clean_up();
+  if (other_value.hideShow().is_bound()) field_hideShow = other_value.hideShow();
+  else field_hideShow.clean_up();
+  if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+  else field_errorCodes.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean HideShowObjectRes::operator==(const HideShowObjectRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectID==other_value.field_objectID
+  && field_hideShow==other_value.field_hideShow
+  && field_errorCodes==other_value.field_errorCodes
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean HideShowObjectRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectID.is_bound())
+  || (field_hideShow.is_bound())
+  || (field_errorCodes.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean HideShowObjectRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectID.is_value()
+  && field_hideShow.is_value()
+  && field_errorCodes.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void HideShowObjectRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+field_objectID.log();
+TTCN_Logger::log_event_str(", hideShow := ");
+field_hideShow.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void HideShowObjectRes::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 @IsobusVTMessageTypes.HideShowObjectRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) hideShow().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "hideShow")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          hideShow().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.HideShowObjectRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.HideShowObjectRes");
+  }
+}
+
+void HideShowObjectRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectID().is_bound()) objectID().set_implicit_omit();
+if (hideShow().is_bound()) hideShow().set_implicit_omit();
+if (errorCodes().is_bound()) errorCodes().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void HideShowObjectRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectID.encode_text(text_buf);
+field_hideShow.encode_text(text_buf);
+field_errorCodes.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void HideShowObjectRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectID.decode_text(text_buf);
+field_hideShow.decode_text(text_buf);
+field_errorCodes.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void HideShowObjectRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void HideShowObjectRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int HideShowObjectRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectID.RAW_decode(ValidObjectID_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, e__HideShowObject__state_descr_.raw->forceomit);
+  decoded_field_length = field_hideShow.RAW_decode(e__HideShowObject__state_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, HideShowObjectRes__errorCodes_descr_.raw->forceomit);
+  decoded_field_length = field_errorCodes.RAW_decode(HideShowObjectRes__errorCodes_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, HideShowObjectRes_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(HideShowObjectRes_reserved6_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, HideShowObjectRes_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(HideShowObjectRes_reserved7_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, HideShowObjectRes_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(HideShowObjectRes_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int HideShowObjectRes::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, e__HideShowObject__state_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, HideShowObjectRes__errorCodes_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, HideShowObjectRes_reserved6_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, HideShowObjectRes_reserved7_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, HideShowObjectRes_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_hideShow.RAW_encode(e__HideShowObject__state_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_errorCodes.RAW_encode(HideShowObjectRes__errorCodes_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved6.RAW_encode(HideShowObjectRes_reserved6_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved7.RAW_encode(HideShowObjectRes_reserved7_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved8.RAW_encode(HideShowObjectRes_reserved8_descr_, *myleaf.body.node.nodes[6]);
+  return myleaf.length = encoded_length;
+}
+
+struct HideShowObjectRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectID;
+e__HideShowObject__state_template field_hideShow;
+HideShowObjectRes__errorCodes_template field_errorCodes;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void HideShowObjectRes_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_vtfunction = ANY_VALUE;
+single_value->field_objectID = ANY_VALUE;
+single_value->field_hideShow = ANY_VALUE;
+single_value->field_errorCodes = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void HideShowObjectRes_template::copy_value(const HideShowObjectRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectID().is_bound()) {
+  single_value->field_objectID = other_value.objectID();
+} else {
+  single_value->field_objectID.clean_up();
+}
+if (other_value.hideShow().is_bound()) {
+  single_value->field_hideShow = other_value.hideShow();
+} else {
+  single_value->field_hideShow.clean_up();
+}
+if (other_value.errorCodes().is_bound()) {
+  single_value->field_errorCodes = other_value.errorCodes();
+} else {
+  single_value->field_errorCodes.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void HideShowObjectRes_template::copy_template(const HideShowObjectRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectID().get_selection()) {
+single_value->field_objectID = other_value.objectID();
+} else {
+single_value->field_objectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.hideShow().get_selection()) {
+single_value->field_hideShow = other_value.hideShow();
+} else {
+single_value->field_hideShow.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.errorCodes().get_selection()) {
+single_value->field_errorCodes = other_value.errorCodes();
+} else {
+single_value->field_errorCodes.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new HideShowObjectRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.HideShowObjectRes.");
+break;
+}
+set_selection(other_value);
+}
+
+HideShowObjectRes_template::HideShowObjectRes_template()
+{
+}
+
+HideShowObjectRes_template::HideShowObjectRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+HideShowObjectRes_template::HideShowObjectRes_template(const HideShowObjectRes& other_value)
+{
+copy_value(other_value);
+}
+
+HideShowObjectRes_template::HideShowObjectRes_template(const OPTIONAL<HideShowObjectRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const HideShowObjectRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.HideShowObjectRes from an unbound optional field.");
+}
+}
+
+HideShowObjectRes_template::HideShowObjectRes_template(const HideShowObjectRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+HideShowObjectRes_template::~HideShowObjectRes_template()
+{
+clean_up();
+}
+
+HideShowObjectRes_template& HideShowObjectRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+HideShowObjectRes_template& HideShowObjectRes_template::operator=(const HideShowObjectRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+HideShowObjectRes_template& HideShowObjectRes_template::operator=(const OPTIONAL<HideShowObjectRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const HideShowObjectRes&)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 @IsobusVTMessageTypes.HideShowObjectRes.");
+}
+return *this;
+}
+
+HideShowObjectRes_template& HideShowObjectRes_template::operator=(const HideShowObjectRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean HideShowObjectRes_template::match(const HideShowObjectRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectID().is_bound()) return FALSE;
+if(!single_value->field_objectID.match(other_value.objectID(), legacy))return FALSE;
+if(!other_value.hideShow().is_bound()) return FALSE;
+if(!single_value->field_hideShow.match(other_value.hideShow(), legacy))return FALSE;
+if(!other_value.errorCodes().is_bound()) return FALSE;
+if(!single_value->field_errorCodes.match(other_value.errorCodes(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.HideShowObjectRes.");
+}
+return FALSE;
+}
+
+boolean HideShowObjectRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectID.is_bound()
+
+ ||single_value->field_hideShow.is_bound()
+
+ ||single_value->field_errorCodes.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean HideShowObjectRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectID.is_value()
+ &&single_value->field_hideShow.is_value()
+ &&single_value->field_errorCodes.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void HideShowObjectRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+HideShowObjectRes HideShowObjectRes_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 @IsobusVTMessageTypes.HideShowObjectRes.");
+HideShowObjectRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectID.is_bound()) {
+ret_val.objectID() = single_value->field_objectID.valueof();
+}
+if (single_value->field_hideShow.is_bound()) {
+ret_val.hideShow() = single_value->field_hideShow.valueof();
+}
+if (single_value->field_errorCodes.is_bound()) {
+ret_val.errorCodes() = single_value->field_errorCodes.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void HideShowObjectRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.HideShowObjectRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new HideShowObjectRes_template[list_length];
+}
+
+HideShowObjectRes_template& HideShowObjectRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.HideShowObjectRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.HideShowObjectRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& HideShowObjectRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& HideShowObjectRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.HideShowObjectRes.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& HideShowObjectRes_template::objectID()
+{
+set_specific();
+return single_value->field_objectID;
+}
+
+const INTEGER_template& HideShowObjectRes_template::objectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectID of a non-specific template of type @IsobusVTMessageTypes.HideShowObjectRes.");
+return single_value->field_objectID;
+}
+
+e__HideShowObject__state_template& HideShowObjectRes_template::hideShow()
+{
+set_specific();
+return single_value->field_hideShow;
+}
+
+const e__HideShowObject__state_template& HideShowObjectRes_template::hideShow() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field hideShow of a non-specific template of type @IsobusVTMessageTypes.HideShowObjectRes.");
+return single_value->field_hideShow;
+}
+
+HideShowObjectRes__errorCodes_template& HideShowObjectRes_template::errorCodes()
+{
+set_specific();
+return single_value->field_errorCodes;
+}
+
+const HideShowObjectRes__errorCodes_template& HideShowObjectRes_template::errorCodes() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field errorCodes of a non-specific template of type @IsobusVTMessageTypes.HideShowObjectRes.");
+return single_value->field_errorCodes;
+}
+
+OCTETSTRING_template& HideShowObjectRes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& HideShowObjectRes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.HideShowObjectRes.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& HideShowObjectRes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& HideShowObjectRes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.HideShowObjectRes.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& HideShowObjectRes_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& HideShowObjectRes_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.HideShowObjectRes.");
+return single_value->field_reserved8;
+}
+
+int HideShowObjectRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.HideShowObjectRes 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 @IsobusVTMessageTypes.HideShowObjectRes 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 @IsobusVTMessageTypes.HideShowObjectRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.HideShowObjectRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.HideShowObjectRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.HideShowObjectRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.HideShowObjectRes.");
+  }
+  return 0;
+}
+
+void HideShowObjectRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log();
+TTCN_Logger::log_event_str(", hideShow := ");
+single_value->field_hideShow.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void HideShowObjectRes_template::log_match(const HideShowObjectRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectID.match(match_value.objectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectID");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_hideShow.match(match_value.hideShow(), legacy)){
+TTCN_Logger::log_logmatch_info(".hideShow");
+single_value->field_hideShow.log_match(match_value.hideShow(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_errorCodes.match(match_value.errorCodes(), legacy)){
+TTCN_Logger::log_logmatch_info(".errorCodes");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::log_event_str(", hideShow := ");
+single_value->field_hideShow.log_match(match_value.hideShow(), legacy);
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 HideShowObjectRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectID.encode_text(text_buf);
+single_value->field_hideShow.encode_text(text_buf);
+single_value->field_errorCodes.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.HideShowObjectRes.");
+}
+}
+
+void HideShowObjectRes_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_vtfunction.decode_text(text_buf);
+single_value->field_objectID.decode_text(text_buf);
+single_value->field_hideShow.decode_text(text_buf);
+single_value->field_errorCodes.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 HideShowObjectRes_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 @IsobusVTMessageTypes.HideShowObjectRes.");
+}
+}
+
+void HideShowObjectRes_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: {
+    HideShowObjectRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.HideShowObjectRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) hideShow().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "hideShow")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          hideShow().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.HideShowObjectRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.HideShowObjectRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void HideShowObjectRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.HideShowObjectRes");
+single_value->field_objectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.HideShowObjectRes");
+single_value->field_hideShow.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.HideShowObjectRes");
+single_value->field_errorCodes.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.HideShowObjectRes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.HideShowObjectRes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.HideShowObjectRes");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.HideShowObjectRes");
+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 : "@IsobusVTMessageTypes.HideShowObjectRes");
+}
+
+boolean HideShowObjectRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean HideShowObjectRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+VTfunction161VT2ECU::VTfunction161VT2ECU()
+{
+}
+
+VTfunction161VT2ECU::VTfunction161VT2ECU(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_notImplementedYet)
+  :   field_vtfunction(par_vtfunction),
+  field_notImplementedYet(par_notImplementedYet)
+{
+}
+
+VTfunction161VT2ECU::VTfunction161VT2ECU(const VTfunction161VT2ECU& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.VTfunction161VT2ECU.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.notImplementedYet().is_bound()) field_notImplementedYet = other_value.notImplementedYet();
+else field_notImplementedYet.clean_up();
+}
+
+void VTfunction161VT2ECU::clean_up()
+{
+field_vtfunction.clean_up();
+field_notImplementedYet.clean_up();
+}
+
+const TTCN_Typedescriptor_t* VTfunction161VT2ECU::get_descriptor() const { return &VTfunction161VT2ECU_descr_; }
+VTfunction161VT2ECU& VTfunction161VT2ECU::operator=(const VTfunction161VT2ECU& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.VTfunction161VT2ECU.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.notImplementedYet().is_bound()) field_notImplementedYet = other_value.notImplementedYet();
+  else field_notImplementedYet.clean_up();
+}
+return *this;
+}
+
+boolean VTfunction161VT2ECU::operator==(const VTfunction161VT2ECU& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_notImplementedYet==other_value.field_notImplementedYet;
+}
+
+boolean VTfunction161VT2ECU::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_notImplementedYet.is_bound());
+}
+boolean VTfunction161VT2ECU::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_notImplementedYet.is_value();
+}
+void VTfunction161VT2ECU::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", notImplementedYet := ");
+field_notImplementedYet.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void VTfunction161VT2ECU::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 @IsobusVTMessageTypes.VTfunction161VT2ECU 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) notImplementedYet().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "notImplementedYet")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          notImplementedYet().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 @IsobusVTMessageTypes.VTfunction161VT2ECU: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.VTfunction161VT2ECU");
+  }
+}
+
+void VTfunction161VT2ECU::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (notImplementedYet().is_bound()) notImplementedYet().set_implicit_omit();
+}
+
+void VTfunction161VT2ECU::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_notImplementedYet.encode_text(text_buf);
+}
+
+void VTfunction161VT2ECU::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_notImplementedYet.decode_text(text_buf);
+}
+
+void VTfunction161VT2ECU::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void VTfunction161VT2ECU::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int VTfunction161VT2ECU::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, OCTETSTRING_descr_.raw->forceomit);
+  decoded_field_length = field_notImplementedYet.RAW_decode(OCTETSTRING_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 VTfunction161VT2ECU::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, OCTETSTRING_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_notImplementedYet.RAW_encode(OCTETSTRING_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct VTfunction161VT2ECU_template::single_value_struct {
+INTEGER_template field_vtfunction;
+OCTETSTRING_template field_notImplementedYet;
+};
+
+void VTfunction161VT2ECU_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_vtfunction = ANY_VALUE;
+single_value->field_notImplementedYet = ANY_VALUE;
+}
+}
+}
+
+void VTfunction161VT2ECU_template::copy_value(const VTfunction161VT2ECU& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.notImplementedYet().is_bound()) {
+  single_value->field_notImplementedYet = other_value.notImplementedYet();
+} else {
+  single_value->field_notImplementedYet.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void VTfunction161VT2ECU_template::copy_template(const VTfunction161VT2ECU_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.notImplementedYet().get_selection()) {
+single_value->field_notImplementedYet = other_value.notImplementedYet();
+} else {
+single_value->field_notImplementedYet.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new VTfunction161VT2ECU_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTfunction161VT2ECU.");
+break;
+}
+set_selection(other_value);
+}
+
+VTfunction161VT2ECU_template::VTfunction161VT2ECU_template()
+{
+}
+
+VTfunction161VT2ECU_template::VTfunction161VT2ECU_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+VTfunction161VT2ECU_template::VTfunction161VT2ECU_template(const VTfunction161VT2ECU& other_value)
+{
+copy_value(other_value);
+}
+
+VTfunction161VT2ECU_template::VTfunction161VT2ECU_template(const OPTIONAL<VTfunction161VT2ECU>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTfunction161VT2ECU&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.VTfunction161VT2ECU from an unbound optional field.");
+}
+}
+
+VTfunction161VT2ECU_template::VTfunction161VT2ECU_template(const VTfunction161VT2ECU_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+VTfunction161VT2ECU_template::~VTfunction161VT2ECU_template()
+{
+clean_up();
+}
+
+VTfunction161VT2ECU_template& VTfunction161VT2ECU_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+VTfunction161VT2ECU_template& VTfunction161VT2ECU_template::operator=(const VTfunction161VT2ECU& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+VTfunction161VT2ECU_template& VTfunction161VT2ECU_template::operator=(const OPTIONAL<VTfunction161VT2ECU>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTfunction161VT2ECU&)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 @IsobusVTMessageTypes.VTfunction161VT2ECU.");
+}
+return *this;
+}
+
+VTfunction161VT2ECU_template& VTfunction161VT2ECU_template::operator=(const VTfunction161VT2ECU_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean VTfunction161VT2ECU_template::match(const VTfunction161VT2ECU& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.notImplementedYet().is_bound()) return FALSE;
+if(!single_value->field_notImplementedYet.match(other_value.notImplementedYet(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTfunction161VT2ECU.");
+}
+return FALSE;
+}
+
+boolean VTfunction161VT2ECU_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_notImplementedYet.is_bound()
+;
+}
+
+boolean VTfunction161VT2ECU_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_notImplementedYet.is_value();
+}
+
+void VTfunction161VT2ECU_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+VTfunction161VT2ECU VTfunction161VT2ECU_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 @IsobusVTMessageTypes.VTfunction161VT2ECU.");
+VTfunction161VT2ECU ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_notImplementedYet.is_bound()) {
+ret_val.notImplementedYet() = single_value->field_notImplementedYet.valueof();
+}
+return ret_val;
+}
+
+void VTfunction161VT2ECU_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.VTfunction161VT2ECU.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new VTfunction161VT2ECU_template[list_length];
+}
+
+VTfunction161VT2ECU_template& VTfunction161VT2ECU_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.VTfunction161VT2ECU.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.VTfunction161VT2ECU.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& VTfunction161VT2ECU_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& VTfunction161VT2ECU_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.VTfunction161VT2ECU.");
+return single_value->field_vtfunction;
+}
+
+OCTETSTRING_template& VTfunction161VT2ECU_template::notImplementedYet()
+{
+set_specific();
+return single_value->field_notImplementedYet;
+}
+
+const OCTETSTRING_template& VTfunction161VT2ECU_template::notImplementedYet() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field notImplementedYet of a non-specific template of type @IsobusVTMessageTypes.VTfunction161VT2ECU.");
+return single_value->field_notImplementedYet;
+}
+
+int VTfunction161VT2ECU_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction161VT2ECU 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 @IsobusVTMessageTypes.VTfunction161VT2ECU 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 @IsobusVTMessageTypes.VTfunction161VT2ECU containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction161VT2ECU containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction161VT2ECU containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction161VT2ECU containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTfunction161VT2ECU.");
+  }
+  return 0;
+}
+
+void VTfunction161VT2ECU_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", notImplementedYet := ");
+single_value->field_notImplementedYet.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void VTfunction161VT2ECU_template::log_match(const VTfunction161VT2ECU& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_notImplementedYet.match(match_value.notImplementedYet(), legacy)){
+TTCN_Logger::log_logmatch_info(".notImplementedYet");
+single_value->field_notImplementedYet.log_match(match_value.notImplementedYet(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", notImplementedYet := ");
+single_value->field_notImplementedYet.log_match(match_value.notImplementedYet(), 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 VTfunction161VT2ECU_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_notImplementedYet.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 @IsobusVTMessageTypes.VTfunction161VT2ECU.");
+}
+}
+
+void VTfunction161VT2ECU_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_vtfunction.decode_text(text_buf);
+single_value->field_notImplementedYet.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 VTfunction161VT2ECU_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 @IsobusVTMessageTypes.VTfunction161VT2ECU.");
+}
+}
+
+void VTfunction161VT2ECU_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: {
+    VTfunction161VT2ECU_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.VTfunction161VT2ECU 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) notImplementedYet().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "notImplementedYet")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          notImplementedYet().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 @IsobusVTMessageTypes.VTfunction161VT2ECU: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.VTfunction161VT2ECU");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void VTfunction161VT2ECU_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTfunction161VT2ECU");
+single_value->field_notImplementedYet.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTfunction161VT2ECU");
+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 : "@IsobusVTMessageTypes.VTfunction161VT2ECU");
+}
+
+boolean VTfunction161VT2ECU_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean VTfunction161VT2ECU_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+VTfunction161ECU2VT::VTfunction161ECU2VT()
+{
+}
+
+VTfunction161ECU2VT::VTfunction161ECU2VT(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_notImplementedYet)
+  :   field_vtfunction(par_vtfunction),
+  field_notImplementedYet(par_notImplementedYet)
+{
+}
+
+VTfunction161ECU2VT::VTfunction161ECU2VT(const VTfunction161ECU2VT& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.VTfunction161ECU2VT.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.notImplementedYet().is_bound()) field_notImplementedYet = other_value.notImplementedYet();
+else field_notImplementedYet.clean_up();
+}
+
+void VTfunction161ECU2VT::clean_up()
+{
+field_vtfunction.clean_up();
+field_notImplementedYet.clean_up();
+}
+
+const TTCN_Typedescriptor_t* VTfunction161ECU2VT::get_descriptor() const { return &VTfunction161ECU2VT_descr_; }
+VTfunction161ECU2VT& VTfunction161ECU2VT::operator=(const VTfunction161ECU2VT& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.VTfunction161ECU2VT.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.notImplementedYet().is_bound()) field_notImplementedYet = other_value.notImplementedYet();
+  else field_notImplementedYet.clean_up();
+}
+return *this;
+}
+
+boolean VTfunction161ECU2VT::operator==(const VTfunction161ECU2VT& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_notImplementedYet==other_value.field_notImplementedYet;
+}
+
+boolean VTfunction161ECU2VT::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_notImplementedYet.is_bound());
+}
+boolean VTfunction161ECU2VT::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_notImplementedYet.is_value();
+}
+void VTfunction161ECU2VT::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", notImplementedYet := ");
+field_notImplementedYet.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void VTfunction161ECU2VT::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 @IsobusVTMessageTypes.VTfunction161ECU2VT 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) notImplementedYet().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "notImplementedYet")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          notImplementedYet().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 @IsobusVTMessageTypes.VTfunction161ECU2VT: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.VTfunction161ECU2VT");
+  }
+}
+
+void VTfunction161ECU2VT::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (notImplementedYet().is_bound()) notImplementedYet().set_implicit_omit();
+}
+
+void VTfunction161ECU2VT::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_notImplementedYet.encode_text(text_buf);
+}
+
+void VTfunction161ECU2VT::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_notImplementedYet.decode_text(text_buf);
+}
+
+void VTfunction161ECU2VT::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void VTfunction161ECU2VT::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int VTfunction161ECU2VT::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, OCTETSTRING_descr_.raw->forceomit);
+  decoded_field_length = field_notImplementedYet.RAW_decode(OCTETSTRING_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 VTfunction161ECU2VT::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, OCTETSTRING_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_notImplementedYet.RAW_encode(OCTETSTRING_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct VTfunction161ECU2VT_template::single_value_struct {
+INTEGER_template field_vtfunction;
+OCTETSTRING_template field_notImplementedYet;
+};
+
+void VTfunction161ECU2VT_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_vtfunction = ANY_VALUE;
+single_value->field_notImplementedYet = ANY_VALUE;
+}
+}
+}
+
+void VTfunction161ECU2VT_template::copy_value(const VTfunction161ECU2VT& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.notImplementedYet().is_bound()) {
+  single_value->field_notImplementedYet = other_value.notImplementedYet();
+} else {
+  single_value->field_notImplementedYet.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void VTfunction161ECU2VT_template::copy_template(const VTfunction161ECU2VT_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.notImplementedYet().get_selection()) {
+single_value->field_notImplementedYet = other_value.notImplementedYet();
+} else {
+single_value->field_notImplementedYet.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new VTfunction161ECU2VT_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTfunction161ECU2VT.");
+break;
+}
+set_selection(other_value);
+}
+
+VTfunction161ECU2VT_template::VTfunction161ECU2VT_template()
+{
+}
+
+VTfunction161ECU2VT_template::VTfunction161ECU2VT_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+VTfunction161ECU2VT_template::VTfunction161ECU2VT_template(const VTfunction161ECU2VT& other_value)
+{
+copy_value(other_value);
+}
+
+VTfunction161ECU2VT_template::VTfunction161ECU2VT_template(const OPTIONAL<VTfunction161ECU2VT>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTfunction161ECU2VT&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.VTfunction161ECU2VT from an unbound optional field.");
+}
+}
+
+VTfunction161ECU2VT_template::VTfunction161ECU2VT_template(const VTfunction161ECU2VT_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+VTfunction161ECU2VT_template::~VTfunction161ECU2VT_template()
+{
+clean_up();
+}
+
+VTfunction161ECU2VT_template& VTfunction161ECU2VT_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+VTfunction161ECU2VT_template& VTfunction161ECU2VT_template::operator=(const VTfunction161ECU2VT& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+VTfunction161ECU2VT_template& VTfunction161ECU2VT_template::operator=(const OPTIONAL<VTfunction161ECU2VT>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTfunction161ECU2VT&)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 @IsobusVTMessageTypes.VTfunction161ECU2VT.");
+}
+return *this;
+}
+
+VTfunction161ECU2VT_template& VTfunction161ECU2VT_template::operator=(const VTfunction161ECU2VT_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean VTfunction161ECU2VT_template::match(const VTfunction161ECU2VT& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.notImplementedYet().is_bound()) return FALSE;
+if(!single_value->field_notImplementedYet.match(other_value.notImplementedYet(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTfunction161ECU2VT.");
+}
+return FALSE;
+}
+
+boolean VTfunction161ECU2VT_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_notImplementedYet.is_bound()
+;
+}
+
+boolean VTfunction161ECU2VT_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_notImplementedYet.is_value();
+}
+
+void VTfunction161ECU2VT_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+VTfunction161ECU2VT VTfunction161ECU2VT_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 @IsobusVTMessageTypes.VTfunction161ECU2VT.");
+VTfunction161ECU2VT ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_notImplementedYet.is_bound()) {
+ret_val.notImplementedYet() = single_value->field_notImplementedYet.valueof();
+}
+return ret_val;
+}
+
+void VTfunction161ECU2VT_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.VTfunction161ECU2VT.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new VTfunction161ECU2VT_template[list_length];
+}
+
+VTfunction161ECU2VT_template& VTfunction161ECU2VT_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.VTfunction161ECU2VT.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.VTfunction161ECU2VT.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& VTfunction161ECU2VT_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& VTfunction161ECU2VT_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.VTfunction161ECU2VT.");
+return single_value->field_vtfunction;
+}
+
+OCTETSTRING_template& VTfunction161ECU2VT_template::notImplementedYet()
+{
+set_specific();
+return single_value->field_notImplementedYet;
+}
+
+const OCTETSTRING_template& VTfunction161ECU2VT_template::notImplementedYet() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field notImplementedYet of a non-specific template of type @IsobusVTMessageTypes.VTfunction161ECU2VT.");
+return single_value->field_notImplementedYet;
+}
+
+int VTfunction161ECU2VT_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction161ECU2VT 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 @IsobusVTMessageTypes.VTfunction161ECU2VT 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 @IsobusVTMessageTypes.VTfunction161ECU2VT containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction161ECU2VT containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction161ECU2VT containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTfunction161ECU2VT containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTfunction161ECU2VT.");
+  }
+  return 0;
+}
+
+void VTfunction161ECU2VT_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", notImplementedYet := ");
+single_value->field_notImplementedYet.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void VTfunction161ECU2VT_template::log_match(const VTfunction161ECU2VT& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_notImplementedYet.match(match_value.notImplementedYet(), legacy)){
+TTCN_Logger::log_logmatch_info(".notImplementedYet");
+single_value->field_notImplementedYet.log_match(match_value.notImplementedYet(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", notImplementedYet := ");
+single_value->field_notImplementedYet.log_match(match_value.notImplementedYet(), 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 VTfunction161ECU2VT_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_notImplementedYet.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 @IsobusVTMessageTypes.VTfunction161ECU2VT.");
+}
+}
+
+void VTfunction161ECU2VT_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_vtfunction.decode_text(text_buf);
+single_value->field_notImplementedYet.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 VTfunction161ECU2VT_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 @IsobusVTMessageTypes.VTfunction161ECU2VT.");
+}
+}
+
+void VTfunction161ECU2VT_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: {
+    VTfunction161ECU2VT_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.VTfunction161ECU2VT 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) notImplementedYet().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "notImplementedYet")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          notImplementedYet().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 @IsobusVTMessageTypes.VTfunction161ECU2VT: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.VTfunction161ECU2VT");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void VTfunction161ECU2VT_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTfunction161ECU2VT");
+single_value->field_notImplementedYet.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTfunction161ECU2VT");
+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 : "@IsobusVTMessageTypes.VTfunction161ECU2VT");
+}
+
+boolean VTfunction161ECU2VT_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean VTfunction161ECU2VT_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+e__EnableDisableObject__DisableEnable::e__EnableDisableObject__DisableEnable()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+e__EnableDisableObject__DisableEnable::e__EnableDisableObject__DisableEnable(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @IsobusVTMessageTypes.e_EnableDisableObject_DisableEnable with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+e__EnableDisableObject__DisableEnable::e__EnableDisableObject__DisableEnable(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+e__EnableDisableObject__DisableEnable::e__EnableDisableObject__DisableEnable(const e__EnableDisableObject__DisableEnable& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @IsobusVTMessageTypes.e_EnableDisableObject_DisableEnable.");
+enum_value = other_value.enum_value;
+}
+
+e__EnableDisableObject__DisableEnable& e__EnableDisableObject__DisableEnable::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @IsobusVTMessageTypes.e_EnableDisableObject_DisableEnable.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+e__EnableDisableObject__DisableEnable& e__EnableDisableObject__DisableEnable::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+e__EnableDisableObject__DisableEnable& e__EnableDisableObject__DisableEnable::operator=(const e__EnableDisableObject__DisableEnable& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusVTMessageTypes.e_EnableDisableObject_DisableEnable.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean e__EnableDisableObject__DisableEnable::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_EnableDisableObject_DisableEnable.");
+return enum_value == other_value;
+}
+
+boolean e__EnableDisableObject__DisableEnable::operator==(const e__EnableDisableObject__DisableEnable& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_EnableDisableObject_DisableEnable.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_EnableDisableObject_DisableEnable.");
+return enum_value == other_value.enum_value;
+}
+
+boolean e__EnableDisableObject__DisableEnable::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_EnableDisableObject_DisableEnable.");
+return enum_value < other_value;
+}
+
+boolean e__EnableDisableObject__DisableEnable::operator<(const e__EnableDisableObject__DisableEnable& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_EnableDisableObject_DisableEnable.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_EnableDisableObject_DisableEnable.");
+return enum_value < other_value.enum_value;
+}
+
+boolean e__EnableDisableObject__DisableEnable::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_EnableDisableObject_DisableEnable.");
+return enum_value > other_value;
+}
+
+boolean e__EnableDisableObject__DisableEnable::operator>(const e__EnableDisableObject__DisableEnable& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_EnableDisableObject_DisableEnable.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_EnableDisableObject_DisableEnable.");
+return enum_value > other_value.enum_value;
+}
+
+const char *e__EnableDisableObject__DisableEnable::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case disable: return "disable";
+case enable: return "enable";
+default: return "<unknown>";
+}
+}
+
+e__EnableDisableObject__DisableEnable::enum_type e__EnableDisableObject__DisableEnable::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "disable")) return disable;
+else if (!strcmp(str_par, "enable")) return enable;
+else return UNKNOWN_VALUE;
+}
+
+boolean e__EnableDisableObject__DisableEnable::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 0:
+case 1:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int e__EnableDisableObject__DisableEnable::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusVTMessageTypes.e_EnableDisableObject_DisableEnable.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int e__EnableDisableObject__DisableEnable::enum2int(const e__EnableDisableObject__DisableEnable& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusVTMessageTypes.e_EnableDisableObject_DisableEnable.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void e__EnableDisableObject__DisableEnable::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @IsobusVTMessageTypes.e_EnableDisableObject_DisableEnable.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+e__EnableDisableObject__DisableEnable::operator e__EnableDisableObject__DisableEnable::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @IsobusVTMessageTypes.e_EnableDisableObject_DisableEnable.");
+return enum_value;
+}
+
+void e__EnableDisableObject__DisableEnable::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void e__EnableDisableObject__DisableEnable::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@IsobusVTMessageTypes.e_EnableDisableObject_DisableEnable");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @IsobusVTMessageTypes.e_EnableDisableObject_DisableEnable.");
+  }
+}
+
+void e__EnableDisableObject__DisableEnable::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @IsobusVTMessageTypes.e_EnableDisableObject_DisableEnable.");
+text_buf.push_int(enum_value);
+}
+
+void e__EnableDisableObject__DisableEnable::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @IsobusVTMessageTypes.e_EnableDisableObject_DisableEnable.", enum_value);
+}
+
+void e__EnableDisableObject__DisableEnable::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void e__EnableDisableObject__DisableEnable::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int e__EnableDisableObject__DisableEnable::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*)
+{
+  int decoded_value = 0;
+  int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 2, no_err);
+  if (decoded_length < 0) return decoded_length;
+  if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value;
+  else {
+    if(no_err){
+     return -1;
+    } else {
+    TTCN_EncDec_ErrorContext::error
+      (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name);
+    enum_value = UNKNOWN_VALUE;
+    }
+  }
+  return decoded_length;
+}
+
+int e__EnableDisableObject__DisableEnable::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const
+{
+  return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 2);
+}
+
+void e__EnableDisableObject__DisableEnable_template::copy_template(const e__EnableDisableObject__DisableEnable_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new e__EnableDisableObject__DisableEnable_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_EnableDisableObject_DisableEnable.");
+}
+}
+
+e__EnableDisableObject__DisableEnable_template::e__EnableDisableObject__DisableEnable_template()
+{
+}
+
+e__EnableDisableObject__DisableEnable_template::e__EnableDisableObject__DisableEnable_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+e__EnableDisableObject__DisableEnable_template::e__EnableDisableObject__DisableEnable_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!e__EnableDisableObject__DisableEnable::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @IsobusVTMessageTypes.e_EnableDisableObject_DisableEnable with unknown numeric value %d.", other_value);
+single_value = (e__EnableDisableObject__DisableEnable::enum_type)other_value;
+}
+
+e__EnableDisableObject__DisableEnable_template::e__EnableDisableObject__DisableEnable_template(e__EnableDisableObject__DisableEnable::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+e__EnableDisableObject__DisableEnable_template::e__EnableDisableObject__DisableEnable_template(const e__EnableDisableObject__DisableEnable& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == e__EnableDisableObject__DisableEnable::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @IsobusVTMessageTypes.e_EnableDisableObject_DisableEnable.");
+single_value = other_value.enum_value;
+}
+
+e__EnableDisableObject__DisableEnable_template::e__EnableDisableObject__DisableEnable_template(const OPTIONAL<e__EnableDisableObject__DisableEnable>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__EnableDisableObject__DisableEnable::enum_type)(const e__EnableDisableObject__DisableEnable&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @IsobusVTMessageTypes.e_EnableDisableObject_DisableEnable from an unbound optional field.");
+}
+}
+
+e__EnableDisableObject__DisableEnable_template::e__EnableDisableObject__DisableEnable_template(const e__EnableDisableObject__DisableEnable_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+e__EnableDisableObject__DisableEnable_template::~e__EnableDisableObject__DisableEnable_template()
+{
+clean_up();
+}
+
+boolean e__EnableDisableObject__DisableEnable_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean e__EnableDisableObject__DisableEnable_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != e__EnableDisableObject__DisableEnable::UNBOUND_VALUE;
+}
+
+void e__EnableDisableObject__DisableEnable_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+e__EnableDisableObject__DisableEnable_template& e__EnableDisableObject__DisableEnable_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+e__EnableDisableObject__DisableEnable_template& e__EnableDisableObject__DisableEnable_template::operator=(int other_value)
+{
+if (!e__EnableDisableObject__DisableEnable::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @IsobusVTMessageTypes.e_EnableDisableObject_DisableEnable.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (e__EnableDisableObject__DisableEnable::enum_type)other_value;
+return *this;
+}
+
+e__EnableDisableObject__DisableEnable_template& e__EnableDisableObject__DisableEnable_template::operator=(e__EnableDisableObject__DisableEnable::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+e__EnableDisableObject__DisableEnable_template& e__EnableDisableObject__DisableEnable_template::operator=(const e__EnableDisableObject__DisableEnable& other_value)
+{
+if (other_value.enum_value == e__EnableDisableObject__DisableEnable::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusVTMessageTypes.e_EnableDisableObject_DisableEnable to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+e__EnableDisableObject__DisableEnable_template& e__EnableDisableObject__DisableEnable_template::operator=(const OPTIONAL<e__EnableDisableObject__DisableEnable>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__EnableDisableObject__DisableEnable::enum_type)(const e__EnableDisableObject__DisableEnable&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @IsobusVTMessageTypes.e_EnableDisableObject_DisableEnable.");
+}
+return *this;
+}
+
+e__EnableDisableObject__DisableEnable_template& e__EnableDisableObject__DisableEnable_template::operator=(const e__EnableDisableObject__DisableEnable_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean e__EnableDisableObject__DisableEnable_template::match(e__EnableDisableObject__DisableEnable::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_EnableDisableObject_DisableEnable.");
+}
+return FALSE;
+}
+
+boolean e__EnableDisableObject__DisableEnable_template::match(const e__EnableDisableObject__DisableEnable& other_value, boolean) const
+{
+if (other_value.enum_value == e__EnableDisableObject__DisableEnable::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @IsobusVTMessageTypes.e_EnableDisableObject_DisableEnable with an unbound value.");
+return match(other_value.enum_value);
+}
+
+e__EnableDisableObject__DisableEnable::enum_type e__EnableDisableObject__DisableEnable_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @IsobusVTMessageTypes.e_EnableDisableObject_DisableEnable.");
+return single_value;
+}
+
+void e__EnableDisableObject__DisableEnable_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @IsobusVTMessageTypes.e_EnableDisableObject_DisableEnable.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new e__EnableDisableObject__DisableEnable_template[list_length];
+}
+
+e__EnableDisableObject__DisableEnable_template& e__EnableDisableObject__DisableEnable_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @IsobusVTMessageTypes.e_EnableDisableObject_DisableEnable.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @IsobusVTMessageTypes.e_EnableDisableObject_DisableEnable.");
+return value_list.list_value[list_index];
+}
+
+void e__EnableDisableObject__DisableEnable_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(e__EnableDisableObject__DisableEnable::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void e__EnableDisableObject__DisableEnable_template::log_match(const e__EnableDisableObject__DisableEnable& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void e__EnableDisableObject__DisableEnable_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_EnableDisableObject_DisableEnable.");
+}
+}
+
+void e__EnableDisableObject__DisableEnable_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (e__EnableDisableObject__DisableEnable::enum_type)text_buf.pull_int().get_val();
+if (!e__EnableDisableObject__DisableEnable::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @IsobusVTMessageTypes.e_EnableDisableObject_DisableEnable.", single_value);
+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 e__EnableDisableObject__DisableEnable_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @IsobusVTMessageTypes.e_EnableDisableObject_DisableEnable.");
+}
+}
+
+boolean e__EnableDisableObject__DisableEnable_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean e__EnableDisableObject__DisableEnable_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 e__EnableDisableObject__DisableEnable_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    e__EnableDisableObject__DisableEnable_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    e__EnableDisableObject__DisableEnable::enum_type enum_val = e__EnableDisableObject__DisableEnable::str_to_enum(m_p->get_enumerated());
+    if (!e__EnableDisableObject__DisableEnable::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @IsobusVTMessageTypes.e_EnableDisableObject_DisableEnable.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@IsobusVTMessageTypes.e_EnableDisableObject_DisableEnable");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void e__EnableDisableObject__DisableEnable_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@IsobusVTMessageTypes.e_EnableDisableObject_DisableEnable");
+}
+
+EnableDisableObjectReq::EnableDisableObjectReq()
+{
+}
+
+EnableDisableObjectReq::EnableDisableObjectReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const e__EnableDisableObject__DisableEnable& par_DisableEnable,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_objectID(par_objectID),
+  field_DisableEnable(par_DisableEnable),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+EnableDisableObjectReq::EnableDisableObjectReq(const EnableDisableObjectReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.EnableDisableObjectReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+else field_objectID.clean_up();
+if (other_value.DisableEnable().is_bound()) field_DisableEnable = other_value.DisableEnable();
+else field_DisableEnable.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void EnableDisableObjectReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectID.clean_up();
+field_DisableEnable.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* EnableDisableObjectReq::get_descriptor() const { return &EnableDisableObjectReq_descr_; }
+EnableDisableObjectReq& EnableDisableObjectReq::operator=(const EnableDisableObjectReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.EnableDisableObjectReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+  else field_objectID.clean_up();
+  if (other_value.DisableEnable().is_bound()) field_DisableEnable = other_value.DisableEnable();
+  else field_DisableEnable.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean EnableDisableObjectReq::operator==(const EnableDisableObjectReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectID==other_value.field_objectID
+  && field_DisableEnable==other_value.field_DisableEnable
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean EnableDisableObjectReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectID.is_bound())
+  || (field_DisableEnable.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean EnableDisableObjectReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectID.is_value()
+  && field_DisableEnable.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void EnableDisableObjectReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+field_objectID.log();
+TTCN_Logger::log_event_str(", DisableEnable := ");
+field_DisableEnable.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void EnableDisableObjectReq::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 @IsobusVTMessageTypes.EnableDisableObjectReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) DisableEnable().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "DisableEnable")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          DisableEnable().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.EnableDisableObjectReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.EnableDisableObjectReq");
+  }
+}
+
+void EnableDisableObjectReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectID().is_bound()) objectID().set_implicit_omit();
+if (DisableEnable().is_bound()) DisableEnable().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void EnableDisableObjectReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectID.encode_text(text_buf);
+field_DisableEnable.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void EnableDisableObjectReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectID.decode_text(text_buf);
+field_DisableEnable.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void EnableDisableObjectReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void EnableDisableObjectReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int EnableDisableObjectReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectID.RAW_decode(ValidObjectID_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, e__EnableDisableObject__DisableEnable_descr_.raw->forceomit);
+  decoded_field_length = field_DisableEnable.RAW_decode(e__EnableDisableObject__DisableEnable_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, EnableDisableObjectReq_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(EnableDisableObjectReq_reserved5_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, EnableDisableObjectReq_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(EnableDisableObjectReq_reserved6_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, EnableDisableObjectReq_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(EnableDisableObjectReq_reserved7_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, EnableDisableObjectReq_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(EnableDisableObjectReq_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int EnableDisableObjectReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, e__EnableDisableObject__DisableEnable_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, EnableDisableObjectReq_reserved5_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, EnableDisableObjectReq_reserved6_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, EnableDisableObjectReq_reserved7_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, EnableDisableObjectReq_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_DisableEnable.RAW_encode(e__EnableDisableObject__DisableEnable_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved5.RAW_encode(EnableDisableObjectReq_reserved5_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved6.RAW_encode(EnableDisableObjectReq_reserved6_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved7.RAW_encode(EnableDisableObjectReq_reserved7_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved8.RAW_encode(EnableDisableObjectReq_reserved8_descr_, *myleaf.body.node.nodes[6]);
+  return myleaf.length = encoded_length;
+}
+
+struct EnableDisableObjectReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectID;
+e__EnableDisableObject__DisableEnable_template field_DisableEnable;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void EnableDisableObjectReq_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_vtfunction = ANY_VALUE;
+single_value->field_objectID = ANY_VALUE;
+single_value->field_DisableEnable = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void EnableDisableObjectReq_template::copy_value(const EnableDisableObjectReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectID().is_bound()) {
+  single_value->field_objectID = other_value.objectID();
+} else {
+  single_value->field_objectID.clean_up();
+}
+if (other_value.DisableEnable().is_bound()) {
+  single_value->field_DisableEnable = other_value.DisableEnable();
+} else {
+  single_value->field_DisableEnable.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void EnableDisableObjectReq_template::copy_template(const EnableDisableObjectReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectID().get_selection()) {
+single_value->field_objectID = other_value.objectID();
+} else {
+single_value->field_objectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.DisableEnable().get_selection()) {
+single_value->field_DisableEnable = other_value.DisableEnable();
+} else {
+single_value->field_DisableEnable.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new EnableDisableObjectReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.EnableDisableObjectReq.");
+break;
+}
+set_selection(other_value);
+}
+
+EnableDisableObjectReq_template::EnableDisableObjectReq_template()
+{
+}
+
+EnableDisableObjectReq_template::EnableDisableObjectReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+EnableDisableObjectReq_template::EnableDisableObjectReq_template(const EnableDisableObjectReq& other_value)
+{
+copy_value(other_value);
+}
+
+EnableDisableObjectReq_template::EnableDisableObjectReq_template(const OPTIONAL<EnableDisableObjectReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const EnableDisableObjectReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.EnableDisableObjectReq from an unbound optional field.");
+}
+}
+
+EnableDisableObjectReq_template::EnableDisableObjectReq_template(const EnableDisableObjectReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+EnableDisableObjectReq_template::~EnableDisableObjectReq_template()
+{
+clean_up();
+}
+
+EnableDisableObjectReq_template& EnableDisableObjectReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+EnableDisableObjectReq_template& EnableDisableObjectReq_template::operator=(const EnableDisableObjectReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+EnableDisableObjectReq_template& EnableDisableObjectReq_template::operator=(const OPTIONAL<EnableDisableObjectReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const EnableDisableObjectReq&)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 @IsobusVTMessageTypes.EnableDisableObjectReq.");
+}
+return *this;
+}
+
+EnableDisableObjectReq_template& EnableDisableObjectReq_template::operator=(const EnableDisableObjectReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean EnableDisableObjectReq_template::match(const EnableDisableObjectReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectID().is_bound()) return FALSE;
+if(!single_value->field_objectID.match(other_value.objectID(), legacy))return FALSE;
+if(!other_value.DisableEnable().is_bound()) return FALSE;
+if(!single_value->field_DisableEnable.match(other_value.DisableEnable(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.EnableDisableObjectReq.");
+}
+return FALSE;
+}
+
+boolean EnableDisableObjectReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectID.is_bound()
+
+ ||single_value->field_DisableEnable.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean EnableDisableObjectReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectID.is_value()
+ &&single_value->field_DisableEnable.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void EnableDisableObjectReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+EnableDisableObjectReq EnableDisableObjectReq_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 @IsobusVTMessageTypes.EnableDisableObjectReq.");
+EnableDisableObjectReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectID.is_bound()) {
+ret_val.objectID() = single_value->field_objectID.valueof();
+}
+if (single_value->field_DisableEnable.is_bound()) {
+ret_val.DisableEnable() = single_value->field_DisableEnable.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void EnableDisableObjectReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.EnableDisableObjectReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new EnableDisableObjectReq_template[list_length];
+}
+
+EnableDisableObjectReq_template& EnableDisableObjectReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.EnableDisableObjectReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.EnableDisableObjectReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& EnableDisableObjectReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& EnableDisableObjectReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.EnableDisableObjectReq.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& EnableDisableObjectReq_template::objectID()
+{
+set_specific();
+return single_value->field_objectID;
+}
+
+const INTEGER_template& EnableDisableObjectReq_template::objectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectID of a non-specific template of type @IsobusVTMessageTypes.EnableDisableObjectReq.");
+return single_value->field_objectID;
+}
+
+e__EnableDisableObject__DisableEnable_template& EnableDisableObjectReq_template::DisableEnable()
+{
+set_specific();
+return single_value->field_DisableEnable;
+}
+
+const e__EnableDisableObject__DisableEnable_template& EnableDisableObjectReq_template::DisableEnable() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field DisableEnable of a non-specific template of type @IsobusVTMessageTypes.EnableDisableObjectReq.");
+return single_value->field_DisableEnable;
+}
+
+OCTETSTRING_template& EnableDisableObjectReq_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& EnableDisableObjectReq_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.EnableDisableObjectReq.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& EnableDisableObjectReq_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& EnableDisableObjectReq_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.EnableDisableObjectReq.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& EnableDisableObjectReq_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& EnableDisableObjectReq_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.EnableDisableObjectReq.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& EnableDisableObjectReq_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& EnableDisableObjectReq_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.EnableDisableObjectReq.");
+return single_value->field_reserved8;
+}
+
+int EnableDisableObjectReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.EnableDisableObjectReq 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 @IsobusVTMessageTypes.EnableDisableObjectReq 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 @IsobusVTMessageTypes.EnableDisableObjectReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.EnableDisableObjectReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.EnableDisableObjectReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.EnableDisableObjectReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.EnableDisableObjectReq.");
+  }
+  return 0;
+}
+
+void EnableDisableObjectReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log();
+TTCN_Logger::log_event_str(", DisableEnable := ");
+single_value->field_DisableEnable.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void EnableDisableObjectReq_template::log_match(const EnableDisableObjectReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectID.match(match_value.objectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectID");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_DisableEnable.match(match_value.DisableEnable(), legacy)){
+TTCN_Logger::log_logmatch_info(".DisableEnable");
+single_value->field_DisableEnable.log_match(match_value.DisableEnable(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::log_event_str(", DisableEnable := ");
+single_value->field_DisableEnable.log_match(match_value.DisableEnable(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 EnableDisableObjectReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectID.encode_text(text_buf);
+single_value->field_DisableEnable.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.EnableDisableObjectReq.");
+}
+}
+
+void EnableDisableObjectReq_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_vtfunction.decode_text(text_buf);
+single_value->field_objectID.decode_text(text_buf);
+single_value->field_DisableEnable.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 EnableDisableObjectReq_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 @IsobusVTMessageTypes.EnableDisableObjectReq.");
+}
+}
+
+void EnableDisableObjectReq_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: {
+    EnableDisableObjectReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.EnableDisableObjectReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) DisableEnable().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "DisableEnable")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          DisableEnable().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.EnableDisableObjectReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.EnableDisableObjectReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void EnableDisableObjectReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EnableDisableObjectReq");
+single_value->field_objectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EnableDisableObjectReq");
+single_value->field_DisableEnable.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EnableDisableObjectReq");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EnableDisableObjectReq");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EnableDisableObjectReq");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EnableDisableObjectReq");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EnableDisableObjectReq");
+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 : "@IsobusVTMessageTypes.EnableDisableObjectReq");
+}
+
+boolean EnableDisableObjectReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean EnableDisableObjectReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+EnableDisableObjectRes__errorCodes::EnableDisableObjectRes__errorCodes()
+{
+}
+
+EnableDisableObjectRes__errorCodes::EnableDisableObjectRes__errorCodes(const BOOLEAN& par_reserved0,
+    const BOOLEAN& par_invalidObjectID,
+    const BOOLEAN& par_commandError,
+    const BOOLEAN& par_couldNotCompleteOperatorInputIsActiveOnThisObject,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7)
+  :   field_reserved0(par_reserved0),
+  field_invalidObjectID(par_invalidObjectID),
+  field_commandError(par_commandError),
+  field_couldNotCompleteOperatorInputIsActiveOnThisObject(par_couldNotCompleteOperatorInputIsActiveOnThisObject),
+  field_anyOtherError(par_anyOtherError),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7)
+{
+}
+
+EnableDisableObjectRes__errorCodes::EnableDisableObjectRes__errorCodes(const EnableDisableObjectRes__errorCodes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes.");
+if (other_value.reserved0().is_bound()) field_reserved0 = other_value.reserved0();
+else field_reserved0.clean_up();
+if (other_value.invalidObjectID().is_bound()) field_invalidObjectID = other_value.invalidObjectID();
+else field_invalidObjectID.clean_up();
+if (other_value.commandError().is_bound()) field_commandError = other_value.commandError();
+else field_commandError.clean_up();
+if (other_value.couldNotCompleteOperatorInputIsActiveOnThisObject().is_bound()) field_couldNotCompleteOperatorInputIsActiveOnThisObject = other_value.couldNotCompleteOperatorInputIsActiveOnThisObject();
+else field_couldNotCompleteOperatorInputIsActiveOnThisObject.clean_up();
+if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+else field_anyOtherError.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+}
+
+void EnableDisableObjectRes__errorCodes::clean_up()
+{
+field_reserved0.clean_up();
+field_invalidObjectID.clean_up();
+field_commandError.clean_up();
+field_couldNotCompleteOperatorInputIsActiveOnThisObject.clean_up();
+field_anyOtherError.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+}
+
+const TTCN_Typedescriptor_t* EnableDisableObjectRes__errorCodes::get_descriptor() const { return &EnableDisableObjectRes__errorCodes_descr_; }
+EnableDisableObjectRes__errorCodes& EnableDisableObjectRes__errorCodes::operator=(const EnableDisableObjectRes__errorCodes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes.");
+  if (other_value.reserved0().is_bound()) field_reserved0 = other_value.reserved0();
+  else field_reserved0.clean_up();
+  if (other_value.invalidObjectID().is_bound()) field_invalidObjectID = other_value.invalidObjectID();
+  else field_invalidObjectID.clean_up();
+  if (other_value.commandError().is_bound()) field_commandError = other_value.commandError();
+  else field_commandError.clean_up();
+  if (other_value.couldNotCompleteOperatorInputIsActiveOnThisObject().is_bound()) field_couldNotCompleteOperatorInputIsActiveOnThisObject = other_value.couldNotCompleteOperatorInputIsActiveOnThisObject();
+  else field_couldNotCompleteOperatorInputIsActiveOnThisObject.clean_up();
+  if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+  else field_anyOtherError.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+}
+return *this;
+}
+
+boolean EnableDisableObjectRes__errorCodes::operator==(const EnableDisableObjectRes__errorCodes& other_value) const
+{
+return field_reserved0==other_value.field_reserved0
+  && field_invalidObjectID==other_value.field_invalidObjectID
+  && field_commandError==other_value.field_commandError
+  && field_couldNotCompleteOperatorInputIsActiveOnThisObject==other_value.field_couldNotCompleteOperatorInputIsActiveOnThisObject
+  && field_anyOtherError==other_value.field_anyOtherError
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7;
+}
+
+boolean EnableDisableObjectRes__errorCodes::is_bound() const
+{
+return (field_reserved0.is_bound())
+  || (field_invalidObjectID.is_bound())
+  || (field_commandError.is_bound())
+  || (field_couldNotCompleteOperatorInputIsActiveOnThisObject.is_bound())
+  || (field_anyOtherError.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound());
+}
+boolean EnableDisableObjectRes__errorCodes::is_value() const
+{
+return field_reserved0.is_value()
+  && field_invalidObjectID.is_value()
+  && field_commandError.is_value()
+  && field_couldNotCompleteOperatorInputIsActiveOnThisObject.is_value()
+  && field_anyOtherError.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value();
+}
+void EnableDisableObjectRes__errorCodes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ reserved0 := ");
+field_reserved0.log();
+TTCN_Logger::log_event_str(", invalidObjectID := ");
+field_invalidObjectID.log();
+TTCN_Logger::log_event_str(", commandError := ");
+field_commandError.log();
+TTCN_Logger::log_event_str(", couldNotCompleteOperatorInputIsActiveOnThisObject := ");
+field_couldNotCompleteOperatorInputIsActiveOnThisObject.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void EnableDisableObjectRes__errorCodes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes has 8 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) reserved0().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) invalidObjectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) commandError().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) couldNotCompleteOperatorInputIsActiveOnThisObject().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "reserved0")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved0().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(), "invalidObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidObjectID().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(), "commandError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          commandError().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(), "couldNotCompleteOperatorInputIsActiveOnThisObject")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          couldNotCompleteOperatorInputIsActiveOnThisObject().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes");
+  }
+}
+
+void EnableDisableObjectRes__errorCodes::set_implicit_omit()
+{
+if (reserved0().is_bound()) reserved0().set_implicit_omit();
+if (invalidObjectID().is_bound()) invalidObjectID().set_implicit_omit();
+if (commandError().is_bound()) commandError().set_implicit_omit();
+if (couldNotCompleteOperatorInputIsActiveOnThisObject().is_bound()) couldNotCompleteOperatorInputIsActiveOnThisObject().set_implicit_omit();
+if (anyOtherError().is_bound()) anyOtherError().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+}
+
+void EnableDisableObjectRes__errorCodes::encode_text(Text_Buf& text_buf) const
+{
+field_reserved0.encode_text(text_buf);
+field_invalidObjectID.encode_text(text_buf);
+field_commandError.encode_text(text_buf);
+field_couldNotCompleteOperatorInputIsActiveOnThisObject.encode_text(text_buf);
+field_anyOtherError.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+}
+
+void EnableDisableObjectRes__errorCodes::decode_text(Text_Buf& text_buf)
+{
+field_reserved0.decode_text(text_buf);
+field_invalidObjectID.decode_text(text_buf);
+field_commandError.decode_text(text_buf);
+field_couldNotCompleteOperatorInputIsActiveOnThisObject.decode_text(text_buf);
+field_anyOtherError.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+}
+
+void EnableDisableObjectRes__errorCodes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void EnableDisableObjectRes__errorCodes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int EnableDisableObjectRes__errorCodes::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved0.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidObjectID.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_commandError.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_couldNotCompleteOperatorInputIsActiveOnThisObject.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_anyOtherError.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int EnableDisableObjectRes__errorCodes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_reserved0.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_invalidObjectID.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_commandError.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_couldNotCompleteOperatorInputIsActiveOnThisObject.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_anyOtherError.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved5.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved6.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved7.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct EnableDisableObjectRes__errorCodes_template::single_value_struct {
+BOOLEAN_template field_reserved0;
+BOOLEAN_template field_invalidObjectID;
+BOOLEAN_template field_commandError;
+BOOLEAN_template field_couldNotCompleteOperatorInputIsActiveOnThisObject;
+BOOLEAN_template field_anyOtherError;
+BOOLEAN_template field_reserved5;
+BOOLEAN_template field_reserved6;
+BOOLEAN_template field_reserved7;
+};
+
+void EnableDisableObjectRes__errorCodes_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_reserved0 = ANY_VALUE;
+single_value->field_invalidObjectID = ANY_VALUE;
+single_value->field_commandError = ANY_VALUE;
+single_value->field_couldNotCompleteOperatorInputIsActiveOnThisObject = ANY_VALUE;
+single_value->field_anyOtherError = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+}
+}
+}
+
+void EnableDisableObjectRes__errorCodes_template::copy_value(const EnableDisableObjectRes__errorCodes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.reserved0().is_bound()) {
+  single_value->field_reserved0 = other_value.reserved0();
+} else {
+  single_value->field_reserved0.clean_up();
+}
+if (other_value.invalidObjectID().is_bound()) {
+  single_value->field_invalidObjectID = other_value.invalidObjectID();
+} else {
+  single_value->field_invalidObjectID.clean_up();
+}
+if (other_value.commandError().is_bound()) {
+  single_value->field_commandError = other_value.commandError();
+} else {
+  single_value->field_commandError.clean_up();
+}
+if (other_value.couldNotCompleteOperatorInputIsActiveOnThisObject().is_bound()) {
+  single_value->field_couldNotCompleteOperatorInputIsActiveOnThisObject = other_value.couldNotCompleteOperatorInputIsActiveOnThisObject();
+} else {
+  single_value->field_couldNotCompleteOperatorInputIsActiveOnThisObject.clean_up();
+}
+if (other_value.anyOtherError().is_bound()) {
+  single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+  single_value->field_anyOtherError.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void EnableDisableObjectRes__errorCodes_template::copy_template(const EnableDisableObjectRes__errorCodes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.reserved0().get_selection()) {
+single_value->field_reserved0 = other_value.reserved0();
+} else {
+single_value->field_reserved0.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.invalidObjectID().get_selection()) {
+single_value->field_invalidObjectID = other_value.invalidObjectID();
+} else {
+single_value->field_invalidObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.commandError().get_selection()) {
+single_value->field_commandError = other_value.commandError();
+} else {
+single_value->field_commandError.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.couldNotCompleteOperatorInputIsActiveOnThisObject().get_selection()) {
+single_value->field_couldNotCompleteOperatorInputIsActiveOnThisObject = other_value.couldNotCompleteOperatorInputIsActiveOnThisObject();
+} else {
+single_value->field_couldNotCompleteOperatorInputIsActiveOnThisObject.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.anyOtherError().get_selection()) {
+single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+single_value->field_anyOtherError.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new EnableDisableObjectRes__errorCodes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes.");
+break;
+}
+set_selection(other_value);
+}
+
+EnableDisableObjectRes__errorCodes_template::EnableDisableObjectRes__errorCodes_template()
+{
+}
+
+EnableDisableObjectRes__errorCodes_template::EnableDisableObjectRes__errorCodes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+EnableDisableObjectRes__errorCodes_template::EnableDisableObjectRes__errorCodes_template(const EnableDisableObjectRes__errorCodes& other_value)
+{
+copy_value(other_value);
+}
+
+EnableDisableObjectRes__errorCodes_template::EnableDisableObjectRes__errorCodes_template(const OPTIONAL<EnableDisableObjectRes__errorCodes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const EnableDisableObjectRes__errorCodes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes from an unbound optional field.");
+}
+}
+
+EnableDisableObjectRes__errorCodes_template::EnableDisableObjectRes__errorCodes_template(const EnableDisableObjectRes__errorCodes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+EnableDisableObjectRes__errorCodes_template::~EnableDisableObjectRes__errorCodes_template()
+{
+clean_up();
+}
+
+EnableDisableObjectRes__errorCodes_template& EnableDisableObjectRes__errorCodes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+EnableDisableObjectRes__errorCodes_template& EnableDisableObjectRes__errorCodes_template::operator=(const EnableDisableObjectRes__errorCodes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+EnableDisableObjectRes__errorCodes_template& EnableDisableObjectRes__errorCodes_template::operator=(const OPTIONAL<EnableDisableObjectRes__errorCodes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const EnableDisableObjectRes__errorCodes&)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 @IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes.");
+}
+return *this;
+}
+
+EnableDisableObjectRes__errorCodes_template& EnableDisableObjectRes__errorCodes_template::operator=(const EnableDisableObjectRes__errorCodes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean EnableDisableObjectRes__errorCodes_template::match(const EnableDisableObjectRes__errorCodes& 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.reserved0().is_bound()) return FALSE;
+if(!single_value->field_reserved0.match(other_value.reserved0(), legacy))return FALSE;
+if(!other_value.invalidObjectID().is_bound()) return FALSE;
+if(!single_value->field_invalidObjectID.match(other_value.invalidObjectID(), legacy))return FALSE;
+if(!other_value.commandError().is_bound()) return FALSE;
+if(!single_value->field_commandError.match(other_value.commandError(), legacy))return FALSE;
+if(!other_value.couldNotCompleteOperatorInputIsActiveOnThisObject().is_bound()) return FALSE;
+if(!single_value->field_couldNotCompleteOperatorInputIsActiveOnThisObject.match(other_value.couldNotCompleteOperatorInputIsActiveOnThisObject(), legacy))return FALSE;
+if(!other_value.anyOtherError().is_bound()) return FALSE;
+if(!single_value->field_anyOtherError.match(other_value.anyOtherError(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes.");
+}
+return FALSE;
+}
+
+boolean EnableDisableObjectRes__errorCodes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_reserved0.is_bound()
+
+ ||single_value->field_invalidObjectID.is_bound()
+
+ ||single_value->field_commandError.is_bound()
+
+ ||single_value->field_couldNotCompleteOperatorInputIsActiveOnThisObject.is_bound()
+
+ ||single_value->field_anyOtherError.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+;
+}
+
+boolean EnableDisableObjectRes__errorCodes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_reserved0.is_value()
+ &&single_value->field_invalidObjectID.is_value()
+ &&single_value->field_commandError.is_value()
+ &&single_value->field_couldNotCompleteOperatorInputIsActiveOnThisObject.is_value()
+ &&single_value->field_anyOtherError.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value();
+}
+
+void EnableDisableObjectRes__errorCodes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+EnableDisableObjectRes__errorCodes EnableDisableObjectRes__errorCodes_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 @IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes.");
+EnableDisableObjectRes__errorCodes ret_val;
+if (single_value->field_reserved0.is_bound()) {
+ret_val.reserved0() = single_value->field_reserved0.valueof();
+}
+if (single_value->field_invalidObjectID.is_bound()) {
+ret_val.invalidObjectID() = single_value->field_invalidObjectID.valueof();
+}
+if (single_value->field_commandError.is_bound()) {
+ret_val.commandError() = single_value->field_commandError.valueof();
+}
+if (single_value->field_couldNotCompleteOperatorInputIsActiveOnThisObject.is_bound()) {
+ret_val.couldNotCompleteOperatorInputIsActiveOnThisObject() = single_value->field_couldNotCompleteOperatorInputIsActiveOnThisObject.valueof();
+}
+if (single_value->field_anyOtherError.is_bound()) {
+ret_val.anyOtherError() = single_value->field_anyOtherError.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+return ret_val;
+}
+
+void EnableDisableObjectRes__errorCodes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new EnableDisableObjectRes__errorCodes_template[list_length];
+}
+
+EnableDisableObjectRes__errorCodes_template& EnableDisableObjectRes__errorCodes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& EnableDisableObjectRes__errorCodes_template::reserved0()
+{
+set_specific();
+return single_value->field_reserved0;
+}
+
+const BOOLEAN_template& EnableDisableObjectRes__errorCodes_template::reserved0() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved0 of a non-specific template of type @IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes.");
+return single_value->field_reserved0;
+}
+
+BOOLEAN_template& EnableDisableObjectRes__errorCodes_template::invalidObjectID()
+{
+set_specific();
+return single_value->field_invalidObjectID;
+}
+
+const BOOLEAN_template& EnableDisableObjectRes__errorCodes_template::invalidObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidObjectID of a non-specific template of type @IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes.");
+return single_value->field_invalidObjectID;
+}
+
+BOOLEAN_template& EnableDisableObjectRes__errorCodes_template::commandError()
+{
+set_specific();
+return single_value->field_commandError;
+}
+
+const BOOLEAN_template& EnableDisableObjectRes__errorCodes_template::commandError() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field commandError of a non-specific template of type @IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes.");
+return single_value->field_commandError;
+}
+
+BOOLEAN_template& EnableDisableObjectRes__errorCodes_template::couldNotCompleteOperatorInputIsActiveOnThisObject()
+{
+set_specific();
+return single_value->field_couldNotCompleteOperatorInputIsActiveOnThisObject;
+}
+
+const BOOLEAN_template& EnableDisableObjectRes__errorCodes_template::couldNotCompleteOperatorInputIsActiveOnThisObject() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field couldNotCompleteOperatorInputIsActiveOnThisObject of a non-specific template of type @IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes.");
+return single_value->field_couldNotCompleteOperatorInputIsActiveOnThisObject;
+}
+
+BOOLEAN_template& EnableDisableObjectRes__errorCodes_template::anyOtherError()
+{
+set_specific();
+return single_value->field_anyOtherError;
+}
+
+const BOOLEAN_template& EnableDisableObjectRes__errorCodes_template::anyOtherError() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field anyOtherError of a non-specific template of type @IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes.");
+return single_value->field_anyOtherError;
+}
+
+BOOLEAN_template& EnableDisableObjectRes__errorCodes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const BOOLEAN_template& EnableDisableObjectRes__errorCodes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes.");
+return single_value->field_reserved5;
+}
+
+BOOLEAN_template& EnableDisableObjectRes__errorCodes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const BOOLEAN_template& EnableDisableObjectRes__errorCodes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes.");
+return single_value->field_reserved6;
+}
+
+BOOLEAN_template& EnableDisableObjectRes__errorCodes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const BOOLEAN_template& EnableDisableObjectRes__errorCodes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes.");
+return single_value->field_reserved7;
+}
+
+int EnableDisableObjectRes__errorCodes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes 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 @IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes.");
+  }
+  return 0;
+}
+
+void EnableDisableObjectRes__errorCodes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ reserved0 := ");
+single_value->field_reserved0.log();
+TTCN_Logger::log_event_str(", invalidObjectID := ");
+single_value->field_invalidObjectID.log();
+TTCN_Logger::log_event_str(", commandError := ");
+single_value->field_commandError.log();
+TTCN_Logger::log_event_str(", couldNotCompleteOperatorInputIsActiveOnThisObject := ");
+single_value->field_couldNotCompleteOperatorInputIsActiveOnThisObject.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void EnableDisableObjectRes__errorCodes_template::log_match(const EnableDisableObjectRes__errorCodes& 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_reserved0.match(match_value.reserved0(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved0");
+single_value->field_reserved0.log_match(match_value.reserved0(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_invalidObjectID.match(match_value.invalidObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidObjectID");
+single_value->field_invalidObjectID.log_match(match_value.invalidObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_commandError.match(match_value.commandError(), legacy)){
+TTCN_Logger::log_logmatch_info(".commandError");
+single_value->field_commandError.log_match(match_value.commandError(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_couldNotCompleteOperatorInputIsActiveOnThisObject.match(match_value.couldNotCompleteOperatorInputIsActiveOnThisObject(), legacy)){
+TTCN_Logger::log_logmatch_info(".couldNotCompleteOperatorInputIsActiveOnThisObject");
+single_value->field_couldNotCompleteOperatorInputIsActiveOnThisObject.log_match(match_value.couldNotCompleteOperatorInputIsActiveOnThisObject(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_anyOtherError.match(match_value.anyOtherError(), legacy)){
+TTCN_Logger::log_logmatch_info(".anyOtherError");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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("{ reserved0 := ");
+single_value->field_reserved0.log_match(match_value.reserved0(), legacy);
+TTCN_Logger::log_event_str(", invalidObjectID := ");
+single_value->field_invalidObjectID.log_match(match_value.invalidObjectID(), legacy);
+TTCN_Logger::log_event_str(", commandError := ");
+single_value->field_commandError.log_match(match_value.commandError(), legacy);
+TTCN_Logger::log_event_str(", couldNotCompleteOperatorInputIsActiveOnThisObject := ");
+single_value->field_couldNotCompleteOperatorInputIsActiveOnThisObject.log_match(match_value.couldNotCompleteOperatorInputIsActiveOnThisObject(), legacy);
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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 EnableDisableObjectRes__errorCodes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_reserved0.encode_text(text_buf);
+single_value->field_invalidObjectID.encode_text(text_buf);
+single_value->field_commandError.encode_text(text_buf);
+single_value->field_couldNotCompleteOperatorInputIsActiveOnThisObject.encode_text(text_buf);
+single_value->field_anyOtherError.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.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 @IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes.");
+}
+}
+
+void EnableDisableObjectRes__errorCodes_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_reserved0.decode_text(text_buf);
+single_value->field_invalidObjectID.decode_text(text_buf);
+single_value->field_commandError.decode_text(text_buf);
+single_value->field_couldNotCompleteOperatorInputIsActiveOnThisObject.decode_text(text_buf);
+single_value->field_anyOtherError.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.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 EnableDisableObjectRes__errorCodes_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 @IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes.");
+}
+}
+
+void EnableDisableObjectRes__errorCodes_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: {
+    EnableDisableObjectRes__errorCodes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes has 8 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) reserved0().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) invalidObjectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) commandError().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) couldNotCompleteOperatorInputIsActiveOnThisObject().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "reserved0")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved0().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(), "invalidObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidObjectID().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(), "commandError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          commandError().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(), "couldNotCompleteOperatorInputIsActiveOnThisObject")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          couldNotCompleteOperatorInputIsActiveOnThisObject().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void EnableDisableObjectRes__errorCodes_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_reserved0.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes");
+single_value->field_invalidObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes");
+single_value->field_commandError.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes");
+single_value->field_couldNotCompleteOperatorInputIsActiveOnThisObject.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes");
+single_value->field_anyOtherError.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes");
+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 : "@IsobusVTMessageTypes.EnableDisableObjectRes_errorCodes");
+}
+
+boolean EnableDisableObjectRes__errorCodes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean EnableDisableObjectRes__errorCodes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+EnableDisableObjectRes::EnableDisableObjectRes()
+{
+}
+
+EnableDisableObjectRes::EnableDisableObjectRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const e__EnableDisableObject__DisableEnable& par_DisableEnable,
+    const EnableDisableObjectRes__errorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_objectID(par_objectID),
+  field_DisableEnable(par_DisableEnable),
+  field_errorCodes(par_errorCodes),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+EnableDisableObjectRes::EnableDisableObjectRes(const EnableDisableObjectRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.EnableDisableObjectRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+else field_objectID.clean_up();
+if (other_value.DisableEnable().is_bound()) field_DisableEnable = other_value.DisableEnable();
+else field_DisableEnable.clean_up();
+if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+else field_errorCodes.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void EnableDisableObjectRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectID.clean_up();
+field_DisableEnable.clean_up();
+field_errorCodes.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* EnableDisableObjectRes::get_descriptor() const { return &EnableDisableObjectRes_descr_; }
+EnableDisableObjectRes& EnableDisableObjectRes::operator=(const EnableDisableObjectRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.EnableDisableObjectRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+  else field_objectID.clean_up();
+  if (other_value.DisableEnable().is_bound()) field_DisableEnable = other_value.DisableEnable();
+  else field_DisableEnable.clean_up();
+  if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+  else field_errorCodes.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean EnableDisableObjectRes::operator==(const EnableDisableObjectRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectID==other_value.field_objectID
+  && field_DisableEnable==other_value.field_DisableEnable
+  && field_errorCodes==other_value.field_errorCodes
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean EnableDisableObjectRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectID.is_bound())
+  || (field_DisableEnable.is_bound())
+  || (field_errorCodes.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean EnableDisableObjectRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectID.is_value()
+  && field_DisableEnable.is_value()
+  && field_errorCodes.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void EnableDisableObjectRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+field_objectID.log();
+TTCN_Logger::log_event_str(", DisableEnable := ");
+field_DisableEnable.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void EnableDisableObjectRes::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 @IsobusVTMessageTypes.EnableDisableObjectRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) DisableEnable().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "DisableEnable")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          DisableEnable().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.EnableDisableObjectRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.EnableDisableObjectRes");
+  }
+}
+
+void EnableDisableObjectRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectID().is_bound()) objectID().set_implicit_omit();
+if (DisableEnable().is_bound()) DisableEnable().set_implicit_omit();
+if (errorCodes().is_bound()) errorCodes().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void EnableDisableObjectRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectID.encode_text(text_buf);
+field_DisableEnable.encode_text(text_buf);
+field_errorCodes.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void EnableDisableObjectRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectID.decode_text(text_buf);
+field_DisableEnable.decode_text(text_buf);
+field_errorCodes.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void EnableDisableObjectRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void EnableDisableObjectRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int EnableDisableObjectRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectID.RAW_decode(ValidObjectID_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, e__EnableDisableObject__DisableEnable_descr_.raw->forceomit);
+  decoded_field_length = field_DisableEnable.RAW_decode(e__EnableDisableObject__DisableEnable_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, EnableDisableObjectRes__errorCodes_descr_.raw->forceomit);
+  decoded_field_length = field_errorCodes.RAW_decode(EnableDisableObjectRes__errorCodes_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, EnableDisableObjectRes_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(EnableDisableObjectRes_reserved6_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, EnableDisableObjectRes_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(EnableDisableObjectRes_reserved7_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, EnableDisableObjectRes_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(EnableDisableObjectRes_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int EnableDisableObjectRes::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, e__EnableDisableObject__DisableEnable_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, EnableDisableObjectRes__errorCodes_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, EnableDisableObjectRes_reserved6_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, EnableDisableObjectRes_reserved7_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, EnableDisableObjectRes_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_DisableEnable.RAW_encode(e__EnableDisableObject__DisableEnable_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_errorCodes.RAW_encode(EnableDisableObjectRes__errorCodes_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved6.RAW_encode(EnableDisableObjectRes_reserved6_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved7.RAW_encode(EnableDisableObjectRes_reserved7_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved8.RAW_encode(EnableDisableObjectRes_reserved8_descr_, *myleaf.body.node.nodes[6]);
+  return myleaf.length = encoded_length;
+}
+
+struct EnableDisableObjectRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectID;
+e__EnableDisableObject__DisableEnable_template field_DisableEnable;
+EnableDisableObjectRes__errorCodes_template field_errorCodes;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void EnableDisableObjectRes_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_vtfunction = ANY_VALUE;
+single_value->field_objectID = ANY_VALUE;
+single_value->field_DisableEnable = ANY_VALUE;
+single_value->field_errorCodes = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void EnableDisableObjectRes_template::copy_value(const EnableDisableObjectRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectID().is_bound()) {
+  single_value->field_objectID = other_value.objectID();
+} else {
+  single_value->field_objectID.clean_up();
+}
+if (other_value.DisableEnable().is_bound()) {
+  single_value->field_DisableEnable = other_value.DisableEnable();
+} else {
+  single_value->field_DisableEnable.clean_up();
+}
+if (other_value.errorCodes().is_bound()) {
+  single_value->field_errorCodes = other_value.errorCodes();
+} else {
+  single_value->field_errorCodes.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void EnableDisableObjectRes_template::copy_template(const EnableDisableObjectRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectID().get_selection()) {
+single_value->field_objectID = other_value.objectID();
+} else {
+single_value->field_objectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.DisableEnable().get_selection()) {
+single_value->field_DisableEnable = other_value.DisableEnable();
+} else {
+single_value->field_DisableEnable.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.errorCodes().get_selection()) {
+single_value->field_errorCodes = other_value.errorCodes();
+} else {
+single_value->field_errorCodes.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new EnableDisableObjectRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.EnableDisableObjectRes.");
+break;
+}
+set_selection(other_value);
+}
+
+EnableDisableObjectRes_template::EnableDisableObjectRes_template()
+{
+}
+
+EnableDisableObjectRes_template::EnableDisableObjectRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+EnableDisableObjectRes_template::EnableDisableObjectRes_template(const EnableDisableObjectRes& other_value)
+{
+copy_value(other_value);
+}
+
+EnableDisableObjectRes_template::EnableDisableObjectRes_template(const OPTIONAL<EnableDisableObjectRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const EnableDisableObjectRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.EnableDisableObjectRes from an unbound optional field.");
+}
+}
+
+EnableDisableObjectRes_template::EnableDisableObjectRes_template(const EnableDisableObjectRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+EnableDisableObjectRes_template::~EnableDisableObjectRes_template()
+{
+clean_up();
+}
+
+EnableDisableObjectRes_template& EnableDisableObjectRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+EnableDisableObjectRes_template& EnableDisableObjectRes_template::operator=(const EnableDisableObjectRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+EnableDisableObjectRes_template& EnableDisableObjectRes_template::operator=(const OPTIONAL<EnableDisableObjectRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const EnableDisableObjectRes&)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 @IsobusVTMessageTypes.EnableDisableObjectRes.");
+}
+return *this;
+}
+
+EnableDisableObjectRes_template& EnableDisableObjectRes_template::operator=(const EnableDisableObjectRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean EnableDisableObjectRes_template::match(const EnableDisableObjectRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectID().is_bound()) return FALSE;
+if(!single_value->field_objectID.match(other_value.objectID(), legacy))return FALSE;
+if(!other_value.DisableEnable().is_bound()) return FALSE;
+if(!single_value->field_DisableEnable.match(other_value.DisableEnable(), legacy))return FALSE;
+if(!other_value.errorCodes().is_bound()) return FALSE;
+if(!single_value->field_errorCodes.match(other_value.errorCodes(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.EnableDisableObjectRes.");
+}
+return FALSE;
+}
+
+boolean EnableDisableObjectRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectID.is_bound()
+
+ ||single_value->field_DisableEnable.is_bound()
+
+ ||single_value->field_errorCodes.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean EnableDisableObjectRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectID.is_value()
+ &&single_value->field_DisableEnable.is_value()
+ &&single_value->field_errorCodes.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void EnableDisableObjectRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+EnableDisableObjectRes EnableDisableObjectRes_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 @IsobusVTMessageTypes.EnableDisableObjectRes.");
+EnableDisableObjectRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectID.is_bound()) {
+ret_val.objectID() = single_value->field_objectID.valueof();
+}
+if (single_value->field_DisableEnable.is_bound()) {
+ret_val.DisableEnable() = single_value->field_DisableEnable.valueof();
+}
+if (single_value->field_errorCodes.is_bound()) {
+ret_val.errorCodes() = single_value->field_errorCodes.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void EnableDisableObjectRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.EnableDisableObjectRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new EnableDisableObjectRes_template[list_length];
+}
+
+EnableDisableObjectRes_template& EnableDisableObjectRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.EnableDisableObjectRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.EnableDisableObjectRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& EnableDisableObjectRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& EnableDisableObjectRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.EnableDisableObjectRes.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& EnableDisableObjectRes_template::objectID()
+{
+set_specific();
+return single_value->field_objectID;
+}
+
+const INTEGER_template& EnableDisableObjectRes_template::objectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectID of a non-specific template of type @IsobusVTMessageTypes.EnableDisableObjectRes.");
+return single_value->field_objectID;
+}
+
+e__EnableDisableObject__DisableEnable_template& EnableDisableObjectRes_template::DisableEnable()
+{
+set_specific();
+return single_value->field_DisableEnable;
+}
+
+const e__EnableDisableObject__DisableEnable_template& EnableDisableObjectRes_template::DisableEnable() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field DisableEnable of a non-specific template of type @IsobusVTMessageTypes.EnableDisableObjectRes.");
+return single_value->field_DisableEnable;
+}
+
+EnableDisableObjectRes__errorCodes_template& EnableDisableObjectRes_template::errorCodes()
+{
+set_specific();
+return single_value->field_errorCodes;
+}
+
+const EnableDisableObjectRes__errorCodes_template& EnableDisableObjectRes_template::errorCodes() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field errorCodes of a non-specific template of type @IsobusVTMessageTypes.EnableDisableObjectRes.");
+return single_value->field_errorCodes;
+}
+
+OCTETSTRING_template& EnableDisableObjectRes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& EnableDisableObjectRes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.EnableDisableObjectRes.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& EnableDisableObjectRes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& EnableDisableObjectRes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.EnableDisableObjectRes.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& EnableDisableObjectRes_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& EnableDisableObjectRes_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.EnableDisableObjectRes.");
+return single_value->field_reserved8;
+}
+
+int EnableDisableObjectRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.EnableDisableObjectRes 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 @IsobusVTMessageTypes.EnableDisableObjectRes 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 @IsobusVTMessageTypes.EnableDisableObjectRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.EnableDisableObjectRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.EnableDisableObjectRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.EnableDisableObjectRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.EnableDisableObjectRes.");
+  }
+  return 0;
+}
+
+void EnableDisableObjectRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log();
+TTCN_Logger::log_event_str(", DisableEnable := ");
+single_value->field_DisableEnable.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void EnableDisableObjectRes_template::log_match(const EnableDisableObjectRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectID.match(match_value.objectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectID");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_DisableEnable.match(match_value.DisableEnable(), legacy)){
+TTCN_Logger::log_logmatch_info(".DisableEnable");
+single_value->field_DisableEnable.log_match(match_value.DisableEnable(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_errorCodes.match(match_value.errorCodes(), legacy)){
+TTCN_Logger::log_logmatch_info(".errorCodes");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::log_event_str(", DisableEnable := ");
+single_value->field_DisableEnable.log_match(match_value.DisableEnable(), legacy);
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 EnableDisableObjectRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectID.encode_text(text_buf);
+single_value->field_DisableEnable.encode_text(text_buf);
+single_value->field_errorCodes.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.EnableDisableObjectRes.");
+}
+}
+
+void EnableDisableObjectRes_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_vtfunction.decode_text(text_buf);
+single_value->field_objectID.decode_text(text_buf);
+single_value->field_DisableEnable.decode_text(text_buf);
+single_value->field_errorCodes.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 EnableDisableObjectRes_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 @IsobusVTMessageTypes.EnableDisableObjectRes.");
+}
+}
+
+void EnableDisableObjectRes_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: {
+    EnableDisableObjectRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.EnableDisableObjectRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) DisableEnable().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "DisableEnable")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          DisableEnable().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.EnableDisableObjectRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.EnableDisableObjectRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void EnableDisableObjectRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EnableDisableObjectRes");
+single_value->field_objectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EnableDisableObjectRes");
+single_value->field_DisableEnable.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EnableDisableObjectRes");
+single_value->field_errorCodes.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EnableDisableObjectRes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EnableDisableObjectRes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EnableDisableObjectRes");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EnableDisableObjectRes");
+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 : "@IsobusVTMessageTypes.EnableDisableObjectRes");
+}
+
+boolean EnableDisableObjectRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean EnableDisableObjectRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+e__SelectInputObjectReq__Option::e__SelectInputObjectReq__Option()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+e__SelectInputObjectReq__Option::e__SelectInputObjectReq__Option(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectReq_Option with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+e__SelectInputObjectReq__Option::e__SelectInputObjectReq__Option(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+e__SelectInputObjectReq__Option::e__SelectInputObjectReq__Option(const e__SelectInputObjectReq__Option& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectReq_Option.");
+enum_value = other_value.enum_value;
+}
+
+e__SelectInputObjectReq__Option& e__SelectInputObjectReq__Option::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectReq_Option.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+e__SelectInputObjectReq__Option& e__SelectInputObjectReq__Option::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+e__SelectInputObjectReq__Option& e__SelectInputObjectReq__Option::operator=(const e__SelectInputObjectReq__Option& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectReq_Option.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean e__SelectInputObjectReq__Option::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectReq_Option.");
+return enum_value == other_value;
+}
+
+boolean e__SelectInputObjectReq__Option::operator==(const e__SelectInputObjectReq__Option& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectReq_Option.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectReq_Option.");
+return enum_value == other_value.enum_value;
+}
+
+boolean e__SelectInputObjectReq__Option::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectReq_Option.");
+return enum_value < other_value;
+}
+
+boolean e__SelectInputObjectReq__Option::operator<(const e__SelectInputObjectReq__Option& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectReq_Option.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectReq_Option.");
+return enum_value < other_value.enum_value;
+}
+
+boolean e__SelectInputObjectReq__Option::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectReq_Option.");
+return enum_value > other_value;
+}
+
+boolean e__SelectInputObjectReq__Option::operator>(const e__SelectInputObjectReq__Option& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectReq_Option.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectReq_Option.");
+return enum_value > other_value.enum_value;
+}
+
+const char *e__SelectInputObjectReq__Option::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case activateForDataInputTheObjectReferencedByObjectID: return "activateForDataInputTheObjectReferencedByObjectID";
+case activateForDataInputTheObjectReferencedByObjectID1: return "activateForDataInputTheObjectReferencedByObjectID1";
+case setFocusToObjectReferencedByObjectID: return "setFocusToObjectReferencedByObjectID";
+default: return "<unknown>";
+}
+}
+
+e__SelectInputObjectReq__Option::enum_type e__SelectInputObjectReq__Option::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "activateForDataInputTheObjectReferencedByObjectID")) return activateForDataInputTheObjectReferencedByObjectID;
+else if (!strcmp(str_par, "activateForDataInputTheObjectReferencedByObjectID1")) return activateForDataInputTheObjectReferencedByObjectID1;
+else if (!strcmp(str_par, "setFocusToObjectReferencedByObjectID")) return setFocusToObjectReferencedByObjectID;
+else return UNKNOWN_VALUE;
+}
+
+boolean e__SelectInputObjectReq__Option::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 0:
+case 1:
+case 255:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int e__SelectInputObjectReq__Option::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectReq_Option.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int e__SelectInputObjectReq__Option::enum2int(const e__SelectInputObjectReq__Option& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectReq_Option.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void e__SelectInputObjectReq__Option::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectReq_Option.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+e__SelectInputObjectReq__Option::operator e__SelectInputObjectReq__Option::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectReq_Option.");
+return enum_value;
+}
+
+void e__SelectInputObjectReq__Option::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void e__SelectInputObjectReq__Option::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@IsobusVTMessageTypes.e_SelectInputObjectReq_Option");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @IsobusVTMessageTypes.e_SelectInputObjectReq_Option.");
+  }
+}
+
+void e__SelectInputObjectReq__Option::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectReq_Option.");
+text_buf.push_int(enum_value);
+}
+
+void e__SelectInputObjectReq__Option::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @IsobusVTMessageTypes.e_SelectInputObjectReq_Option.", enum_value);
+}
+
+void e__SelectInputObjectReq__Option::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void e__SelectInputObjectReq__Option::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int e__SelectInputObjectReq__Option::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*)
+{
+  int decoded_value = 0;
+  int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 8, no_err);
+  if (decoded_length < 0) return decoded_length;
+  if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value;
+  else {
+    if(no_err){
+     return -1;
+    } else {
+    TTCN_EncDec_ErrorContext::error
+      (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name);
+    enum_value = UNKNOWN_VALUE;
+    }
+  }
+  return decoded_length;
+}
+
+int e__SelectInputObjectReq__Option::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const
+{
+  return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 8);
+}
+
+void e__SelectInputObjectReq__Option_template::copy_template(const e__SelectInputObjectReq__Option_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new e__SelectInputObjectReq__Option_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectReq_Option.");
+}
+}
+
+e__SelectInputObjectReq__Option_template::e__SelectInputObjectReq__Option_template()
+{
+}
+
+e__SelectInputObjectReq__Option_template::e__SelectInputObjectReq__Option_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+e__SelectInputObjectReq__Option_template::e__SelectInputObjectReq__Option_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!e__SelectInputObjectReq__Option::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectReq_Option with unknown numeric value %d.", other_value);
+single_value = (e__SelectInputObjectReq__Option::enum_type)other_value;
+}
+
+e__SelectInputObjectReq__Option_template::e__SelectInputObjectReq__Option_template(e__SelectInputObjectReq__Option::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+e__SelectInputObjectReq__Option_template::e__SelectInputObjectReq__Option_template(const e__SelectInputObjectReq__Option& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == e__SelectInputObjectReq__Option::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectReq_Option.");
+single_value = other_value.enum_value;
+}
+
+e__SelectInputObjectReq__Option_template::e__SelectInputObjectReq__Option_template(const OPTIONAL<e__SelectInputObjectReq__Option>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__SelectInputObjectReq__Option::enum_type)(const e__SelectInputObjectReq__Option&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectReq_Option from an unbound optional field.");
+}
+}
+
+e__SelectInputObjectReq__Option_template::e__SelectInputObjectReq__Option_template(const e__SelectInputObjectReq__Option_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+e__SelectInputObjectReq__Option_template::~e__SelectInputObjectReq__Option_template()
+{
+clean_up();
+}
+
+boolean e__SelectInputObjectReq__Option_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean e__SelectInputObjectReq__Option_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != e__SelectInputObjectReq__Option::UNBOUND_VALUE;
+}
+
+void e__SelectInputObjectReq__Option_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+e__SelectInputObjectReq__Option_template& e__SelectInputObjectReq__Option_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+e__SelectInputObjectReq__Option_template& e__SelectInputObjectReq__Option_template::operator=(int other_value)
+{
+if (!e__SelectInputObjectReq__Option::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectReq_Option.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (e__SelectInputObjectReq__Option::enum_type)other_value;
+return *this;
+}
+
+e__SelectInputObjectReq__Option_template& e__SelectInputObjectReq__Option_template::operator=(e__SelectInputObjectReq__Option::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+e__SelectInputObjectReq__Option_template& e__SelectInputObjectReq__Option_template::operator=(const e__SelectInputObjectReq__Option& other_value)
+{
+if (other_value.enum_value == e__SelectInputObjectReq__Option::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectReq_Option to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+e__SelectInputObjectReq__Option_template& e__SelectInputObjectReq__Option_template::operator=(const OPTIONAL<e__SelectInputObjectReq__Option>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__SelectInputObjectReq__Option::enum_type)(const e__SelectInputObjectReq__Option&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectReq_Option.");
+}
+return *this;
+}
+
+e__SelectInputObjectReq__Option_template& e__SelectInputObjectReq__Option_template::operator=(const e__SelectInputObjectReq__Option_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean e__SelectInputObjectReq__Option_template::match(e__SelectInputObjectReq__Option::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectReq_Option.");
+}
+return FALSE;
+}
+
+boolean e__SelectInputObjectReq__Option_template::match(const e__SelectInputObjectReq__Option& other_value, boolean) const
+{
+if (other_value.enum_value == e__SelectInputObjectReq__Option::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectReq_Option with an unbound value.");
+return match(other_value.enum_value);
+}
+
+e__SelectInputObjectReq__Option::enum_type e__SelectInputObjectReq__Option_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectReq_Option.");
+return single_value;
+}
+
+void e__SelectInputObjectReq__Option_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectReq_Option.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new e__SelectInputObjectReq__Option_template[list_length];
+}
+
+e__SelectInputObjectReq__Option_template& e__SelectInputObjectReq__Option_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectReq_Option.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectReq_Option.");
+return value_list.list_value[list_index];
+}
+
+void e__SelectInputObjectReq__Option_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(e__SelectInputObjectReq__Option::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void e__SelectInputObjectReq__Option_template::log_match(const e__SelectInputObjectReq__Option& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void e__SelectInputObjectReq__Option_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectReq_Option.");
+}
+}
+
+void e__SelectInputObjectReq__Option_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (e__SelectInputObjectReq__Option::enum_type)text_buf.pull_int().get_val();
+if (!e__SelectInputObjectReq__Option::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectReq_Option.", single_value);
+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 e__SelectInputObjectReq__Option_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectReq_Option.");
+}
+}
+
+boolean e__SelectInputObjectReq__Option_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean e__SelectInputObjectReq__Option_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 e__SelectInputObjectReq__Option_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    e__SelectInputObjectReq__Option_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    e__SelectInputObjectReq__Option::enum_type enum_val = e__SelectInputObjectReq__Option::str_to_enum(m_p->get_enumerated());
+    if (!e__SelectInputObjectReq__Option::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @IsobusVTMessageTypes.e_SelectInputObjectReq_Option.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@IsobusVTMessageTypes.e_SelectInputObjectReq_Option");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void e__SelectInputObjectReq__Option_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@IsobusVTMessageTypes.e_SelectInputObjectReq_Option");
+}
+
+SelectInputObjectReq::SelectInputObjectReq()
+{
+}
+
+SelectInputObjectReq::SelectInputObjectReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const e__SelectInputObjectReq__Option& par_option,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_objectID(par_objectID),
+  field_option(par_option),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+SelectInputObjectReq::SelectInputObjectReq(const SelectInputObjectReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.SelectInputObjectReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+else field_objectID.clean_up();
+if (other_value.option().is_bound()) field_option = other_value.option();
+else field_option.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void SelectInputObjectReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectID.clean_up();
+field_option.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SelectInputObjectReq::get_descriptor() const { return &SelectInputObjectReq_descr_; }
+SelectInputObjectReq& SelectInputObjectReq::operator=(const SelectInputObjectReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.SelectInputObjectReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+  else field_objectID.clean_up();
+  if (other_value.option().is_bound()) field_option = other_value.option();
+  else field_option.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean SelectInputObjectReq::operator==(const SelectInputObjectReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectID==other_value.field_objectID
+  && field_option==other_value.field_option
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean SelectInputObjectReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectID.is_bound())
+  || (field_option.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean SelectInputObjectReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectID.is_value()
+  && field_option.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void SelectInputObjectReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+field_objectID.log();
+TTCN_Logger::log_event_str(", option := ");
+field_option.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SelectInputObjectReq::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 @IsobusVTMessageTypes.SelectInputObjectReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) option().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "option")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          option().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.SelectInputObjectReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.SelectInputObjectReq");
+  }
+}
+
+void SelectInputObjectReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectID().is_bound()) objectID().set_implicit_omit();
+if (option().is_bound()) option().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void SelectInputObjectReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectID.encode_text(text_buf);
+field_option.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void SelectInputObjectReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectID.decode_text(text_buf);
+field_option.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void SelectInputObjectReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void SelectInputObjectReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int SelectInputObjectReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, AnyObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectID.RAW_decode(AnyObjectID_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, e__SelectInputObjectReq__Option_descr_.raw->forceomit);
+  decoded_field_length = field_option.RAW_decode(e__SelectInputObjectReq__Option_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, SelectInputObjectReq_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(SelectInputObjectReq_reserved5_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, SelectInputObjectReq_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(SelectInputObjectReq_reserved6_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, SelectInputObjectReq_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(SelectInputObjectReq_reserved7_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, SelectInputObjectReq_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(SelectInputObjectReq_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int SelectInputObjectReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, AnyObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, e__SelectInputObjectReq__Option_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, SelectInputObjectReq_reserved5_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, SelectInputObjectReq_reserved6_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, SelectInputObjectReq_reserved7_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, SelectInputObjectReq_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectID.RAW_encode(AnyObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_option.RAW_encode(e__SelectInputObjectReq__Option_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved5.RAW_encode(SelectInputObjectReq_reserved5_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved6.RAW_encode(SelectInputObjectReq_reserved6_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved7.RAW_encode(SelectInputObjectReq_reserved7_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved8.RAW_encode(SelectInputObjectReq_reserved8_descr_, *myleaf.body.node.nodes[6]);
+  return myleaf.length = encoded_length;
+}
+
+struct SelectInputObjectReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectID;
+e__SelectInputObjectReq__Option_template field_option;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void SelectInputObjectReq_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_vtfunction = ANY_VALUE;
+single_value->field_objectID = ANY_VALUE;
+single_value->field_option = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void SelectInputObjectReq_template::copy_value(const SelectInputObjectReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectID().is_bound()) {
+  single_value->field_objectID = other_value.objectID();
+} else {
+  single_value->field_objectID.clean_up();
+}
+if (other_value.option().is_bound()) {
+  single_value->field_option = other_value.option();
+} else {
+  single_value->field_option.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SelectInputObjectReq_template::copy_template(const SelectInputObjectReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectID().get_selection()) {
+single_value->field_objectID = other_value.objectID();
+} else {
+single_value->field_objectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.option().get_selection()) {
+single_value->field_option = other_value.option();
+} else {
+single_value->field_option.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SelectInputObjectReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.SelectInputObjectReq.");
+break;
+}
+set_selection(other_value);
+}
+
+SelectInputObjectReq_template::SelectInputObjectReq_template()
+{
+}
+
+SelectInputObjectReq_template::SelectInputObjectReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SelectInputObjectReq_template::SelectInputObjectReq_template(const SelectInputObjectReq& other_value)
+{
+copy_value(other_value);
+}
+
+SelectInputObjectReq_template::SelectInputObjectReq_template(const OPTIONAL<SelectInputObjectReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SelectInputObjectReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.SelectInputObjectReq from an unbound optional field.");
+}
+}
+
+SelectInputObjectReq_template::SelectInputObjectReq_template(const SelectInputObjectReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SelectInputObjectReq_template::~SelectInputObjectReq_template()
+{
+clean_up();
+}
+
+SelectInputObjectReq_template& SelectInputObjectReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SelectInputObjectReq_template& SelectInputObjectReq_template::operator=(const SelectInputObjectReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SelectInputObjectReq_template& SelectInputObjectReq_template::operator=(const OPTIONAL<SelectInputObjectReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SelectInputObjectReq&)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 @IsobusVTMessageTypes.SelectInputObjectReq.");
+}
+return *this;
+}
+
+SelectInputObjectReq_template& SelectInputObjectReq_template::operator=(const SelectInputObjectReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SelectInputObjectReq_template::match(const SelectInputObjectReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectID().is_bound()) return FALSE;
+if(!single_value->field_objectID.match(other_value.objectID(), legacy))return FALSE;
+if(!other_value.option().is_bound()) return FALSE;
+if(!single_value->field_option.match(other_value.option(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.SelectInputObjectReq.");
+}
+return FALSE;
+}
+
+boolean SelectInputObjectReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectID.is_bound()
+
+ ||single_value->field_option.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean SelectInputObjectReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectID.is_value()
+ &&single_value->field_option.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void SelectInputObjectReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SelectInputObjectReq SelectInputObjectReq_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 @IsobusVTMessageTypes.SelectInputObjectReq.");
+SelectInputObjectReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectID.is_bound()) {
+ret_val.objectID() = single_value->field_objectID.valueof();
+}
+if (single_value->field_option.is_bound()) {
+ret_val.option() = single_value->field_option.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void SelectInputObjectReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.SelectInputObjectReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SelectInputObjectReq_template[list_length];
+}
+
+SelectInputObjectReq_template& SelectInputObjectReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.SelectInputObjectReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.SelectInputObjectReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& SelectInputObjectReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& SelectInputObjectReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.SelectInputObjectReq.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& SelectInputObjectReq_template::objectID()
+{
+set_specific();
+return single_value->field_objectID;
+}
+
+const INTEGER_template& SelectInputObjectReq_template::objectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectID of a non-specific template of type @IsobusVTMessageTypes.SelectInputObjectReq.");
+return single_value->field_objectID;
+}
+
+e__SelectInputObjectReq__Option_template& SelectInputObjectReq_template::option()
+{
+set_specific();
+return single_value->field_option;
+}
+
+const e__SelectInputObjectReq__Option_template& SelectInputObjectReq_template::option() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field option of a non-specific template of type @IsobusVTMessageTypes.SelectInputObjectReq.");
+return single_value->field_option;
+}
+
+OCTETSTRING_template& SelectInputObjectReq_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& SelectInputObjectReq_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.SelectInputObjectReq.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& SelectInputObjectReq_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& SelectInputObjectReq_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.SelectInputObjectReq.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& SelectInputObjectReq_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& SelectInputObjectReq_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.SelectInputObjectReq.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& SelectInputObjectReq_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& SelectInputObjectReq_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.SelectInputObjectReq.");
+return single_value->field_reserved8;
+}
+
+int SelectInputObjectReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SelectInputObjectReq 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 @IsobusVTMessageTypes.SelectInputObjectReq 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 @IsobusVTMessageTypes.SelectInputObjectReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SelectInputObjectReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SelectInputObjectReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SelectInputObjectReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.SelectInputObjectReq.");
+  }
+  return 0;
+}
+
+void SelectInputObjectReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log();
+TTCN_Logger::log_event_str(", option := ");
+single_value->field_option.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SelectInputObjectReq_template::log_match(const SelectInputObjectReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectID.match(match_value.objectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectID");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_option.match(match_value.option(), legacy)){
+TTCN_Logger::log_logmatch_info(".option");
+single_value->field_option.log_match(match_value.option(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::log_event_str(", option := ");
+single_value->field_option.log_match(match_value.option(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 SelectInputObjectReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectID.encode_text(text_buf);
+single_value->field_option.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.SelectInputObjectReq.");
+}
+}
+
+void SelectInputObjectReq_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_vtfunction.decode_text(text_buf);
+single_value->field_objectID.decode_text(text_buf);
+single_value->field_option.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 SelectInputObjectReq_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 @IsobusVTMessageTypes.SelectInputObjectReq.");
+}
+}
+
+void SelectInputObjectReq_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: {
+    SelectInputObjectReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.SelectInputObjectReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) option().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "option")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          option().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.SelectInputObjectReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.SelectInputObjectReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SelectInputObjectReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SelectInputObjectReq");
+single_value->field_objectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SelectInputObjectReq");
+single_value->field_option.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SelectInputObjectReq");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SelectInputObjectReq");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SelectInputObjectReq");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SelectInputObjectReq");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SelectInputObjectReq");
+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 : "@IsobusVTMessageTypes.SelectInputObjectReq");
+}
+
+boolean SelectInputObjectReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SelectInputObjectReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+e__SelectInputObjectRes__Response::e__SelectInputObjectRes__Response()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+e__SelectInputObjectRes__Response::e__SelectInputObjectRes__Response(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectRes_Response with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+e__SelectInputObjectRes__Response::e__SelectInputObjectRes__Response(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+e__SelectInputObjectRes__Response::e__SelectInputObjectRes__Response(const e__SelectInputObjectRes__Response& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectRes_Response.");
+enum_value = other_value.enum_value;
+}
+
+e__SelectInputObjectRes__Response& e__SelectInputObjectRes__Response::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectRes_Response.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+e__SelectInputObjectRes__Response& e__SelectInputObjectRes__Response::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+e__SelectInputObjectRes__Response& e__SelectInputObjectRes__Response::operator=(const e__SelectInputObjectRes__Response& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectRes_Response.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean e__SelectInputObjectRes__Response::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectRes_Response.");
+return enum_value == other_value;
+}
+
+boolean e__SelectInputObjectRes__Response::operator==(const e__SelectInputObjectRes__Response& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectRes_Response.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectRes_Response.");
+return enum_value == other_value.enum_value;
+}
+
+boolean e__SelectInputObjectRes__Response::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectRes_Response.");
+return enum_value < other_value;
+}
+
+boolean e__SelectInputObjectRes__Response::operator<(const e__SelectInputObjectRes__Response& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectRes_Response.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectRes_Response.");
+return enum_value < other_value.enum_value;
+}
+
+boolean e__SelectInputObjectRes__Response::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectRes_Response.");
+return enum_value > other_value;
+}
+
+boolean e__SelectInputObjectRes__Response::operator>(const e__SelectInputObjectRes__Response& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectRes_Response.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectRes_Response.");
+return enum_value > other_value.enum_value;
+}
+
+const char *e__SelectInputObjectRes__Response::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case objectReferencedByObjectIDisNotSelectedOrObjectIDisTheNULLobject: return "objectReferencedByObjectIDisNotSelectedOrObjectIDisTheNULLobject";
+case objectReferencedByObjectIDisSelected: return "objectReferencedByObjectIDisSelected";
+case objectReferencedByObjectIDisOpenedForEdit: return "objectReferencedByObjectIDisOpenedForEdit";
+default: return "<unknown>";
+}
+}
+
+e__SelectInputObjectRes__Response::enum_type e__SelectInputObjectRes__Response::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "objectReferencedByObjectIDisNotSelectedOrObjectIDisTheNULLobject")) return objectReferencedByObjectIDisNotSelectedOrObjectIDisTheNULLobject;
+else if (!strcmp(str_par, "objectReferencedByObjectIDisSelected")) return objectReferencedByObjectIDisSelected;
+else if (!strcmp(str_par, "objectReferencedByObjectIDisOpenedForEdit")) return objectReferencedByObjectIDisOpenedForEdit;
+else return UNKNOWN_VALUE;
+}
+
+boolean e__SelectInputObjectRes__Response::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 0:
+case 1:
+case 2:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int e__SelectInputObjectRes__Response::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectRes_Response.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int e__SelectInputObjectRes__Response::enum2int(const e__SelectInputObjectRes__Response& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectRes_Response.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void e__SelectInputObjectRes__Response::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectRes_Response.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+e__SelectInputObjectRes__Response::operator e__SelectInputObjectRes__Response::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectRes_Response.");
+return enum_value;
+}
+
+void e__SelectInputObjectRes__Response::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void e__SelectInputObjectRes__Response::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@IsobusVTMessageTypes.e_SelectInputObjectRes_Response");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @IsobusVTMessageTypes.e_SelectInputObjectRes_Response.");
+  }
+}
+
+void e__SelectInputObjectRes__Response::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectRes_Response.");
+text_buf.push_int(enum_value);
+}
+
+void e__SelectInputObjectRes__Response::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @IsobusVTMessageTypes.e_SelectInputObjectRes_Response.", enum_value);
+}
+
+void e__SelectInputObjectRes__Response::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void e__SelectInputObjectRes__Response::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int e__SelectInputObjectRes__Response::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*)
+{
+  int decoded_value = 0;
+  int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 2, no_err);
+  if (decoded_length < 0) return decoded_length;
+  if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value;
+  else {
+    if(no_err){
+     return -1;
+    } else {
+    TTCN_EncDec_ErrorContext::error
+      (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name);
+    enum_value = UNKNOWN_VALUE;
+    }
+  }
+  return decoded_length;
+}
+
+int e__SelectInputObjectRes__Response::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const
+{
+  return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 2);
+}
+
+void e__SelectInputObjectRes__Response_template::copy_template(const e__SelectInputObjectRes__Response_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new e__SelectInputObjectRes__Response_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectRes_Response.");
+}
+}
+
+e__SelectInputObjectRes__Response_template::e__SelectInputObjectRes__Response_template()
+{
+}
+
+e__SelectInputObjectRes__Response_template::e__SelectInputObjectRes__Response_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+e__SelectInputObjectRes__Response_template::e__SelectInputObjectRes__Response_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!e__SelectInputObjectRes__Response::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectRes_Response with unknown numeric value %d.", other_value);
+single_value = (e__SelectInputObjectRes__Response::enum_type)other_value;
+}
+
+e__SelectInputObjectRes__Response_template::e__SelectInputObjectRes__Response_template(e__SelectInputObjectRes__Response::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+e__SelectInputObjectRes__Response_template::e__SelectInputObjectRes__Response_template(const e__SelectInputObjectRes__Response& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == e__SelectInputObjectRes__Response::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectRes_Response.");
+single_value = other_value.enum_value;
+}
+
+e__SelectInputObjectRes__Response_template::e__SelectInputObjectRes__Response_template(const OPTIONAL<e__SelectInputObjectRes__Response>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__SelectInputObjectRes__Response::enum_type)(const e__SelectInputObjectRes__Response&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectRes_Response from an unbound optional field.");
+}
+}
+
+e__SelectInputObjectRes__Response_template::e__SelectInputObjectRes__Response_template(const e__SelectInputObjectRes__Response_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+e__SelectInputObjectRes__Response_template::~e__SelectInputObjectRes__Response_template()
+{
+clean_up();
+}
+
+boolean e__SelectInputObjectRes__Response_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean e__SelectInputObjectRes__Response_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != e__SelectInputObjectRes__Response::UNBOUND_VALUE;
+}
+
+void e__SelectInputObjectRes__Response_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+e__SelectInputObjectRes__Response_template& e__SelectInputObjectRes__Response_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+e__SelectInputObjectRes__Response_template& e__SelectInputObjectRes__Response_template::operator=(int other_value)
+{
+if (!e__SelectInputObjectRes__Response::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectRes_Response.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (e__SelectInputObjectRes__Response::enum_type)other_value;
+return *this;
+}
+
+e__SelectInputObjectRes__Response_template& e__SelectInputObjectRes__Response_template::operator=(e__SelectInputObjectRes__Response::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+e__SelectInputObjectRes__Response_template& e__SelectInputObjectRes__Response_template::operator=(const e__SelectInputObjectRes__Response& other_value)
+{
+if (other_value.enum_value == e__SelectInputObjectRes__Response::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectRes_Response to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+e__SelectInputObjectRes__Response_template& e__SelectInputObjectRes__Response_template::operator=(const OPTIONAL<e__SelectInputObjectRes__Response>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__SelectInputObjectRes__Response::enum_type)(const e__SelectInputObjectRes__Response&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectRes_Response.");
+}
+return *this;
+}
+
+e__SelectInputObjectRes__Response_template& e__SelectInputObjectRes__Response_template::operator=(const e__SelectInputObjectRes__Response_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean e__SelectInputObjectRes__Response_template::match(e__SelectInputObjectRes__Response::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectRes_Response.");
+}
+return FALSE;
+}
+
+boolean e__SelectInputObjectRes__Response_template::match(const e__SelectInputObjectRes__Response& other_value, boolean) const
+{
+if (other_value.enum_value == e__SelectInputObjectRes__Response::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectRes_Response with an unbound value.");
+return match(other_value.enum_value);
+}
+
+e__SelectInputObjectRes__Response::enum_type e__SelectInputObjectRes__Response_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectRes_Response.");
+return single_value;
+}
+
+void e__SelectInputObjectRes__Response_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectRes_Response.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new e__SelectInputObjectRes__Response_template[list_length];
+}
+
+e__SelectInputObjectRes__Response_template& e__SelectInputObjectRes__Response_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectRes_Response.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectRes_Response.");
+return value_list.list_value[list_index];
+}
+
+void e__SelectInputObjectRes__Response_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(e__SelectInputObjectRes__Response::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void e__SelectInputObjectRes__Response_template::log_match(const e__SelectInputObjectRes__Response& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void e__SelectInputObjectRes__Response_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectRes_Response.");
+}
+}
+
+void e__SelectInputObjectRes__Response_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (e__SelectInputObjectRes__Response::enum_type)text_buf.pull_int().get_val();
+if (!e__SelectInputObjectRes__Response::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectRes_Response.", single_value);
+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 e__SelectInputObjectRes__Response_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @IsobusVTMessageTypes.e_SelectInputObjectRes_Response.");
+}
+}
+
+boolean e__SelectInputObjectRes__Response_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean e__SelectInputObjectRes__Response_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 e__SelectInputObjectRes__Response_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    e__SelectInputObjectRes__Response_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    e__SelectInputObjectRes__Response::enum_type enum_val = e__SelectInputObjectRes__Response::str_to_enum(m_p->get_enumerated());
+    if (!e__SelectInputObjectRes__Response::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @IsobusVTMessageTypes.e_SelectInputObjectRes_Response.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@IsobusVTMessageTypes.e_SelectInputObjectRes_Response");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void e__SelectInputObjectRes__Response_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@IsobusVTMessageTypes.e_SelectInputObjectRes_Response");
+}
+
+SelectInputObjectRes__errorCodes::SelectInputObjectRes__errorCodes()
+{
+}
+
+SelectInputObjectRes__errorCodes::SelectInputObjectRes__errorCodes(const BOOLEAN& par_objectIsDisabled,
+    const BOOLEAN& par_invalidObjectID,
+    const BOOLEAN& par_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer,
+    const BOOLEAN& par_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7)
+  :   field_objectIsDisabled(par_objectIsDisabled),
+  field_invalidObjectID(par_invalidObjectID),
+  field_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer(par_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer),
+  field_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld(par_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld),
+  field_anyOtherError(par_anyOtherError),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7)
+{
+}
+
+SelectInputObjectRes__errorCodes::SelectInputObjectRes__errorCodes(const SelectInputObjectRes__errorCodes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.SelectInputObjectRes_errorCodes.");
+if (other_value.objectIsDisabled().is_bound()) field_objectIsDisabled = other_value.objectIsDisabled();
+else field_objectIsDisabled.clean_up();
+if (other_value.invalidObjectID().is_bound()) field_invalidObjectID = other_value.invalidObjectID();
+else field_invalidObjectID.clean_up();
+if (other_value.objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer().is_bound()) field_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer = other_value.objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer();
+else field_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer.clean_up();
+if (other_value.couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld().is_bound()) field_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld = other_value.couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld();
+else field_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld.clean_up();
+if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+else field_anyOtherError.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+}
+
+void SelectInputObjectRes__errorCodes::clean_up()
+{
+field_objectIsDisabled.clean_up();
+field_invalidObjectID.clean_up();
+field_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer.clean_up();
+field_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld.clean_up();
+field_anyOtherError.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SelectInputObjectRes__errorCodes::get_descriptor() const { return &SelectInputObjectRes__errorCodes_descr_; }
+SelectInputObjectRes__errorCodes& SelectInputObjectRes__errorCodes::operator=(const SelectInputObjectRes__errorCodes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.SelectInputObjectRes_errorCodes.");
+  if (other_value.objectIsDisabled().is_bound()) field_objectIsDisabled = other_value.objectIsDisabled();
+  else field_objectIsDisabled.clean_up();
+  if (other_value.invalidObjectID().is_bound()) field_invalidObjectID = other_value.invalidObjectID();
+  else field_invalidObjectID.clean_up();
+  if (other_value.objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer().is_bound()) field_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer = other_value.objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer();
+  else field_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer.clean_up();
+  if (other_value.couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld().is_bound()) field_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld = other_value.couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld();
+  else field_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld.clean_up();
+  if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+  else field_anyOtherError.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+}
+return *this;
+}
+
+boolean SelectInputObjectRes__errorCodes::operator==(const SelectInputObjectRes__errorCodes& other_value) const
+{
+return field_objectIsDisabled==other_value.field_objectIsDisabled
+  && field_invalidObjectID==other_value.field_invalidObjectID
+  && field_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer==other_value.field_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer
+  && field_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld==other_value.field_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld
+  && field_anyOtherError==other_value.field_anyOtherError
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7;
+}
+
+boolean SelectInputObjectRes__errorCodes::is_bound() const
+{
+return (field_objectIsDisabled.is_bound())
+  || (field_invalidObjectID.is_bound())
+  || (field_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer.is_bound())
+  || (field_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld.is_bound())
+  || (field_anyOtherError.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound());
+}
+boolean SelectInputObjectRes__errorCodes::is_value() const
+{
+return field_objectIsDisabled.is_value()
+  && field_invalidObjectID.is_value()
+  && field_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer.is_value()
+  && field_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld.is_value()
+  && field_anyOtherError.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value();
+}
+void SelectInputObjectRes__errorCodes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ objectIsDisabled := ");
+field_objectIsDisabled.log();
+TTCN_Logger::log_event_str(", invalidObjectID := ");
+field_invalidObjectID.log();
+TTCN_Logger::log_event_str(", objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer := ");
+field_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer.log();
+TTCN_Logger::log_event_str(", couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld := ");
+field_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SelectInputObjectRes__errorCodes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.SelectInputObjectRes_errorCodes has 8 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) objectIsDisabled().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) invalidObjectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "objectIsDisabled")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIsDisabled().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(), "invalidObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidObjectID().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(), "objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer().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(), "couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.SelectInputObjectRes_errorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.SelectInputObjectRes_errorCodes");
+  }
+}
+
+void SelectInputObjectRes__errorCodes::set_implicit_omit()
+{
+if (objectIsDisabled().is_bound()) objectIsDisabled().set_implicit_omit();
+if (invalidObjectID().is_bound()) invalidObjectID().set_implicit_omit();
+if (objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer().is_bound()) objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer().set_implicit_omit();
+if (couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld().is_bound()) couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld().set_implicit_omit();
+if (anyOtherError().is_bound()) anyOtherError().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+}
+
+void SelectInputObjectRes__errorCodes::encode_text(Text_Buf& text_buf) const
+{
+field_objectIsDisabled.encode_text(text_buf);
+field_invalidObjectID.encode_text(text_buf);
+field_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer.encode_text(text_buf);
+field_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld.encode_text(text_buf);
+field_anyOtherError.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+}
+
+void SelectInputObjectRes__errorCodes::decode_text(Text_Buf& text_buf)
+{
+field_objectIsDisabled.decode_text(text_buf);
+field_invalidObjectID.decode_text(text_buf);
+field_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer.decode_text(text_buf);
+field_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld.decode_text(text_buf);
+field_anyOtherError.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+}
+
+void SelectInputObjectRes__errorCodes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void SelectInputObjectRes__errorCodes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int SelectInputObjectRes__errorCodes::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_objectIsDisabled.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidObjectID.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_anyOtherError.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int SelectInputObjectRes__errorCodes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_objectIsDisabled.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_invalidObjectID.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_anyOtherError.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved5.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved6.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved7.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct SelectInputObjectRes__errorCodes_template::single_value_struct {
+BOOLEAN_template field_objectIsDisabled;
+BOOLEAN_template field_invalidObjectID;
+BOOLEAN_template field_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer;
+BOOLEAN_template field_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld;
+BOOLEAN_template field_anyOtherError;
+BOOLEAN_template field_reserved5;
+BOOLEAN_template field_reserved6;
+BOOLEAN_template field_reserved7;
+};
+
+void SelectInputObjectRes__errorCodes_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_objectIsDisabled = ANY_VALUE;
+single_value->field_invalidObjectID = ANY_VALUE;
+single_value->field_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer = ANY_VALUE;
+single_value->field_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld = ANY_VALUE;
+single_value->field_anyOtherError = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+}
+}
+}
+
+void SelectInputObjectRes__errorCodes_template::copy_value(const SelectInputObjectRes__errorCodes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.objectIsDisabled().is_bound()) {
+  single_value->field_objectIsDisabled = other_value.objectIsDisabled();
+} else {
+  single_value->field_objectIsDisabled.clean_up();
+}
+if (other_value.invalidObjectID().is_bound()) {
+  single_value->field_invalidObjectID = other_value.invalidObjectID();
+} else {
+  single_value->field_invalidObjectID.clean_up();
+}
+if (other_value.objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer().is_bound()) {
+  single_value->field_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer = other_value.objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer();
+} else {
+  single_value->field_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer.clean_up();
+}
+if (other_value.couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld().is_bound()) {
+  single_value->field_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld = other_value.couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld();
+} else {
+  single_value->field_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld.clean_up();
+}
+if (other_value.anyOtherError().is_bound()) {
+  single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+  single_value->field_anyOtherError.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SelectInputObjectRes__errorCodes_template::copy_template(const SelectInputObjectRes__errorCodes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.objectIsDisabled().get_selection()) {
+single_value->field_objectIsDisabled = other_value.objectIsDisabled();
+} else {
+single_value->field_objectIsDisabled.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.invalidObjectID().get_selection()) {
+single_value->field_invalidObjectID = other_value.invalidObjectID();
+} else {
+single_value->field_invalidObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer().get_selection()) {
+single_value->field_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer = other_value.objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer();
+} else {
+single_value->field_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld().get_selection()) {
+single_value->field_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld = other_value.couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld();
+} else {
+single_value->field_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.anyOtherError().get_selection()) {
+single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+single_value->field_anyOtherError.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SelectInputObjectRes__errorCodes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.SelectInputObjectRes_errorCodes.");
+break;
+}
+set_selection(other_value);
+}
+
+SelectInputObjectRes__errorCodes_template::SelectInputObjectRes__errorCodes_template()
+{
+}
+
+SelectInputObjectRes__errorCodes_template::SelectInputObjectRes__errorCodes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SelectInputObjectRes__errorCodes_template::SelectInputObjectRes__errorCodes_template(const SelectInputObjectRes__errorCodes& other_value)
+{
+copy_value(other_value);
+}
+
+SelectInputObjectRes__errorCodes_template::SelectInputObjectRes__errorCodes_template(const OPTIONAL<SelectInputObjectRes__errorCodes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SelectInputObjectRes__errorCodes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.SelectInputObjectRes_errorCodes from an unbound optional field.");
+}
+}
+
+SelectInputObjectRes__errorCodes_template::SelectInputObjectRes__errorCodes_template(const SelectInputObjectRes__errorCodes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SelectInputObjectRes__errorCodes_template::~SelectInputObjectRes__errorCodes_template()
+{
+clean_up();
+}
+
+SelectInputObjectRes__errorCodes_template& SelectInputObjectRes__errorCodes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SelectInputObjectRes__errorCodes_template& SelectInputObjectRes__errorCodes_template::operator=(const SelectInputObjectRes__errorCodes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SelectInputObjectRes__errorCodes_template& SelectInputObjectRes__errorCodes_template::operator=(const OPTIONAL<SelectInputObjectRes__errorCodes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SelectInputObjectRes__errorCodes&)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 @IsobusVTMessageTypes.SelectInputObjectRes_errorCodes.");
+}
+return *this;
+}
+
+SelectInputObjectRes__errorCodes_template& SelectInputObjectRes__errorCodes_template::operator=(const SelectInputObjectRes__errorCodes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SelectInputObjectRes__errorCodes_template::match(const SelectInputObjectRes__errorCodes& 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.objectIsDisabled().is_bound()) return FALSE;
+if(!single_value->field_objectIsDisabled.match(other_value.objectIsDisabled(), legacy))return FALSE;
+if(!other_value.invalidObjectID().is_bound()) return FALSE;
+if(!single_value->field_invalidObjectID.match(other_value.invalidObjectID(), legacy))return FALSE;
+if(!other_value.objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer().is_bound()) return FALSE;
+if(!single_value->field_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer.match(other_value.objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer(), legacy))return FALSE;
+if(!other_value.couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld().is_bound()) return FALSE;
+if(!single_value->field_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld.match(other_value.couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld(), legacy))return FALSE;
+if(!other_value.anyOtherError().is_bound()) return FALSE;
+if(!single_value->field_anyOtherError.match(other_value.anyOtherError(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.SelectInputObjectRes_errorCodes.");
+}
+return FALSE;
+}
+
+boolean SelectInputObjectRes__errorCodes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_objectIsDisabled.is_bound()
+
+ ||single_value->field_invalidObjectID.is_bound()
+
+ ||single_value->field_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer.is_bound()
+
+ ||single_value->field_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld.is_bound()
+
+ ||single_value->field_anyOtherError.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+;
+}
+
+boolean SelectInputObjectRes__errorCodes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_objectIsDisabled.is_value()
+ &&single_value->field_invalidObjectID.is_value()
+ &&single_value->field_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer.is_value()
+ &&single_value->field_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld.is_value()
+ &&single_value->field_anyOtherError.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value();
+}
+
+void SelectInputObjectRes__errorCodes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SelectInputObjectRes__errorCodes SelectInputObjectRes__errorCodes_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 @IsobusVTMessageTypes.SelectInputObjectRes_errorCodes.");
+SelectInputObjectRes__errorCodes ret_val;
+if (single_value->field_objectIsDisabled.is_bound()) {
+ret_val.objectIsDisabled() = single_value->field_objectIsDisabled.valueof();
+}
+if (single_value->field_invalidObjectID.is_bound()) {
+ret_val.invalidObjectID() = single_value->field_invalidObjectID.valueof();
+}
+if (single_value->field_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer.is_bound()) {
+ret_val.objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer() = single_value->field_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer.valueof();
+}
+if (single_value->field_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld.is_bound()) {
+ret_val.couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld() = single_value->field_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld.valueof();
+}
+if (single_value->field_anyOtherError.is_bound()) {
+ret_val.anyOtherError() = single_value->field_anyOtherError.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+return ret_val;
+}
+
+void SelectInputObjectRes__errorCodes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.SelectInputObjectRes_errorCodes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SelectInputObjectRes__errorCodes_template[list_length];
+}
+
+SelectInputObjectRes__errorCodes_template& SelectInputObjectRes__errorCodes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.SelectInputObjectRes_errorCodes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.SelectInputObjectRes_errorCodes.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& SelectInputObjectRes__errorCodes_template::objectIsDisabled()
+{
+set_specific();
+return single_value->field_objectIsDisabled;
+}
+
+const BOOLEAN_template& SelectInputObjectRes__errorCodes_template::objectIsDisabled() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectIsDisabled of a non-specific template of type @IsobusVTMessageTypes.SelectInputObjectRes_errorCodes.");
+return single_value->field_objectIsDisabled;
+}
+
+BOOLEAN_template& SelectInputObjectRes__errorCodes_template::invalidObjectID()
+{
+set_specific();
+return single_value->field_invalidObjectID;
+}
+
+const BOOLEAN_template& SelectInputObjectRes__errorCodes_template::invalidObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidObjectID of a non-specific template of type @IsobusVTMessageTypes.SelectInputObjectRes_errorCodes.");
+return single_value->field_invalidObjectID;
+}
+
+BOOLEAN_template& SelectInputObjectRes__errorCodes_template::objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer()
+{
+set_specific();
+return single_value->field_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer;
+}
+
+const BOOLEAN_template& SelectInputObjectRes__errorCodes_template::objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer of a non-specific template of type @IsobusVTMessageTypes.SelectInputObjectRes_errorCodes.");
+return single_value->field_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer;
+}
+
+BOOLEAN_template& SelectInputObjectRes__errorCodes_template::couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld()
+{
+set_specific();
+return single_value->field_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld;
+}
+
+const BOOLEAN_template& SelectInputObjectRes__errorCodes_template::couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld of a non-specific template of type @IsobusVTMessageTypes.SelectInputObjectRes_errorCodes.");
+return single_value->field_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld;
+}
+
+BOOLEAN_template& SelectInputObjectRes__errorCodes_template::anyOtherError()
+{
+set_specific();
+return single_value->field_anyOtherError;
+}
+
+const BOOLEAN_template& SelectInputObjectRes__errorCodes_template::anyOtherError() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field anyOtherError of a non-specific template of type @IsobusVTMessageTypes.SelectInputObjectRes_errorCodes.");
+return single_value->field_anyOtherError;
+}
+
+BOOLEAN_template& SelectInputObjectRes__errorCodes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const BOOLEAN_template& SelectInputObjectRes__errorCodes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.SelectInputObjectRes_errorCodes.");
+return single_value->field_reserved5;
+}
+
+BOOLEAN_template& SelectInputObjectRes__errorCodes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const BOOLEAN_template& SelectInputObjectRes__errorCodes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.SelectInputObjectRes_errorCodes.");
+return single_value->field_reserved6;
+}
+
+BOOLEAN_template& SelectInputObjectRes__errorCodes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const BOOLEAN_template& SelectInputObjectRes__errorCodes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.SelectInputObjectRes_errorCodes.");
+return single_value->field_reserved7;
+}
+
+int SelectInputObjectRes__errorCodes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SelectInputObjectRes_errorCodes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SelectInputObjectRes_errorCodes 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 @IsobusVTMessageTypes.SelectInputObjectRes_errorCodes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SelectInputObjectRes_errorCodes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SelectInputObjectRes_errorCodes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SelectInputObjectRes_errorCodes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.SelectInputObjectRes_errorCodes.");
+  }
+  return 0;
+}
+
+void SelectInputObjectRes__errorCodes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ objectIsDisabled := ");
+single_value->field_objectIsDisabled.log();
+TTCN_Logger::log_event_str(", invalidObjectID := ");
+single_value->field_invalidObjectID.log();
+TTCN_Logger::log_event_str(", objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer := ");
+single_value->field_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer.log();
+TTCN_Logger::log_event_str(", couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld := ");
+single_value->field_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SelectInputObjectRes__errorCodes_template::log_match(const SelectInputObjectRes__errorCodes& 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_objectIsDisabled.match(match_value.objectIsDisabled(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectIsDisabled");
+single_value->field_objectIsDisabled.log_match(match_value.objectIsDisabled(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_invalidObjectID.match(match_value.invalidObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidObjectID");
+single_value->field_invalidObjectID.log_match(match_value.invalidObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer.match(match_value.objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer");
+single_value->field_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer.log_match(match_value.objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld.match(match_value.couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld(), legacy)){
+TTCN_Logger::log_logmatch_info(".couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld");
+single_value->field_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld.log_match(match_value.couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_anyOtherError.match(match_value.anyOtherError(), legacy)){
+TTCN_Logger::log_logmatch_info(".anyOtherError");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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("{ objectIsDisabled := ");
+single_value->field_objectIsDisabled.log_match(match_value.objectIsDisabled(), legacy);
+TTCN_Logger::log_event_str(", invalidObjectID := ");
+single_value->field_invalidObjectID.log_match(match_value.invalidObjectID(), legacy);
+TTCN_Logger::log_event_str(", objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer := ");
+single_value->field_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer.log_match(match_value.objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer(), legacy);
+TTCN_Logger::log_event_str(", couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld := ");
+single_value->field_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld.log_match(match_value.couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld(), legacy);
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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 SelectInputObjectRes__errorCodes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_objectIsDisabled.encode_text(text_buf);
+single_value->field_invalidObjectID.encode_text(text_buf);
+single_value->field_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer.encode_text(text_buf);
+single_value->field_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld.encode_text(text_buf);
+single_value->field_anyOtherError.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.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 @IsobusVTMessageTypes.SelectInputObjectRes_errorCodes.");
+}
+}
+
+void SelectInputObjectRes__errorCodes_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_objectIsDisabled.decode_text(text_buf);
+single_value->field_invalidObjectID.decode_text(text_buf);
+single_value->field_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer.decode_text(text_buf);
+single_value->field_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld.decode_text(text_buf);
+single_value->field_anyOtherError.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.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 SelectInputObjectRes__errorCodes_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 @IsobusVTMessageTypes.SelectInputObjectRes_errorCodes.");
+}
+}
+
+void SelectInputObjectRes__errorCodes_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: {
+    SelectInputObjectRes__errorCodes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.SelectInputObjectRes_errorCodes has 8 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) objectIsDisabled().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) invalidObjectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "objectIsDisabled")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIsDisabled().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(), "invalidObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidObjectID().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(), "objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer().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(), "couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.SelectInputObjectRes_errorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.SelectInputObjectRes_errorCodes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SelectInputObjectRes__errorCodes_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_objectIsDisabled.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SelectInputObjectRes_errorCodes");
+single_value->field_invalidObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SelectInputObjectRes_errorCodes");
+single_value->field_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SelectInputObjectRes_errorCodes");
+single_value->field_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SelectInputObjectRes_errorCodes");
+single_value->field_anyOtherError.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SelectInputObjectRes_errorCodes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SelectInputObjectRes_errorCodes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SelectInputObjectRes_errorCodes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SelectInputObjectRes_errorCodes");
+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 : "@IsobusVTMessageTypes.SelectInputObjectRes_errorCodes");
+}
+
+boolean SelectInputObjectRes__errorCodes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SelectInputObjectRes__errorCodes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+SelectInputObjectRes::SelectInputObjectRes()
+{
+}
+
+SelectInputObjectRes::SelectInputObjectRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const e__SelectInputObjectRes__Response& par_response,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_objectID(par_objectID),
+  field_response(par_response),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+SelectInputObjectRes::SelectInputObjectRes(const SelectInputObjectRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.SelectInputObjectRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+else field_objectID.clean_up();
+if (other_value.response().is_bound()) field_response = other_value.response();
+else field_response.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void SelectInputObjectRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectID.clean_up();
+field_response.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SelectInputObjectRes::get_descriptor() const { return &SelectInputObjectRes_descr_; }
+SelectInputObjectRes& SelectInputObjectRes::operator=(const SelectInputObjectRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.SelectInputObjectRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+  else field_objectID.clean_up();
+  if (other_value.response().is_bound()) field_response = other_value.response();
+  else field_response.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean SelectInputObjectRes::operator==(const SelectInputObjectRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectID==other_value.field_objectID
+  && field_response==other_value.field_response
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean SelectInputObjectRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectID.is_bound())
+  || (field_response.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean SelectInputObjectRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectID.is_value()
+  && field_response.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void SelectInputObjectRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+field_objectID.log();
+TTCN_Logger::log_event_str(", response := ");
+field_response.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SelectInputObjectRes::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 @IsobusVTMessageTypes.SelectInputObjectRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) response().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "response")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          response().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.SelectInputObjectRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.SelectInputObjectRes");
+  }
+}
+
+void SelectInputObjectRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectID().is_bound()) objectID().set_implicit_omit();
+if (response().is_bound()) response().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void SelectInputObjectRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectID.encode_text(text_buf);
+field_response.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void SelectInputObjectRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectID.decode_text(text_buf);
+field_response.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void SelectInputObjectRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void SelectInputObjectRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int SelectInputObjectRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, AnyObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectID.RAW_decode(AnyObjectID_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, e__SelectInputObjectRes__Response_descr_.raw->forceomit);
+  decoded_field_length = field_response.RAW_decode(e__SelectInputObjectRes__Response_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, SelectInputObjectRes_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(SelectInputObjectRes_reserved5_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, SelectInputObjectRes_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(SelectInputObjectRes_reserved6_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, SelectInputObjectRes_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(SelectInputObjectRes_reserved7_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, SelectInputObjectRes_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(SelectInputObjectRes_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int SelectInputObjectRes::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, AnyObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, e__SelectInputObjectRes__Response_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, SelectInputObjectRes_reserved5_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, SelectInputObjectRes_reserved6_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, SelectInputObjectRes_reserved7_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, SelectInputObjectRes_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectID.RAW_encode(AnyObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_response.RAW_encode(e__SelectInputObjectRes__Response_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved5.RAW_encode(SelectInputObjectRes_reserved5_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved6.RAW_encode(SelectInputObjectRes_reserved6_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved7.RAW_encode(SelectInputObjectRes_reserved7_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved8.RAW_encode(SelectInputObjectRes_reserved8_descr_, *myleaf.body.node.nodes[6]);
+  return myleaf.length = encoded_length;
+}
+
+struct SelectInputObjectRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectID;
+e__SelectInputObjectRes__Response_template field_response;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void SelectInputObjectRes_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_vtfunction = ANY_VALUE;
+single_value->field_objectID = ANY_VALUE;
+single_value->field_response = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void SelectInputObjectRes_template::copy_value(const SelectInputObjectRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectID().is_bound()) {
+  single_value->field_objectID = other_value.objectID();
+} else {
+  single_value->field_objectID.clean_up();
+}
+if (other_value.response().is_bound()) {
+  single_value->field_response = other_value.response();
+} else {
+  single_value->field_response.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SelectInputObjectRes_template::copy_template(const SelectInputObjectRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectID().get_selection()) {
+single_value->field_objectID = other_value.objectID();
+} else {
+single_value->field_objectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.response().get_selection()) {
+single_value->field_response = other_value.response();
+} else {
+single_value->field_response.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SelectInputObjectRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.SelectInputObjectRes.");
+break;
+}
+set_selection(other_value);
+}
+
+SelectInputObjectRes_template::SelectInputObjectRes_template()
+{
+}
+
+SelectInputObjectRes_template::SelectInputObjectRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SelectInputObjectRes_template::SelectInputObjectRes_template(const SelectInputObjectRes& other_value)
+{
+copy_value(other_value);
+}
+
+SelectInputObjectRes_template::SelectInputObjectRes_template(const OPTIONAL<SelectInputObjectRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SelectInputObjectRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.SelectInputObjectRes from an unbound optional field.");
+}
+}
+
+SelectInputObjectRes_template::SelectInputObjectRes_template(const SelectInputObjectRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SelectInputObjectRes_template::~SelectInputObjectRes_template()
+{
+clean_up();
+}
+
+SelectInputObjectRes_template& SelectInputObjectRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SelectInputObjectRes_template& SelectInputObjectRes_template::operator=(const SelectInputObjectRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SelectInputObjectRes_template& SelectInputObjectRes_template::operator=(const OPTIONAL<SelectInputObjectRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SelectInputObjectRes&)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 @IsobusVTMessageTypes.SelectInputObjectRes.");
+}
+return *this;
+}
+
+SelectInputObjectRes_template& SelectInputObjectRes_template::operator=(const SelectInputObjectRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SelectInputObjectRes_template::match(const SelectInputObjectRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectID().is_bound()) return FALSE;
+if(!single_value->field_objectID.match(other_value.objectID(), legacy))return FALSE;
+if(!other_value.response().is_bound()) return FALSE;
+if(!single_value->field_response.match(other_value.response(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.SelectInputObjectRes.");
+}
+return FALSE;
+}
+
+boolean SelectInputObjectRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectID.is_bound()
+
+ ||single_value->field_response.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean SelectInputObjectRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectID.is_value()
+ &&single_value->field_response.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void SelectInputObjectRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SelectInputObjectRes SelectInputObjectRes_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 @IsobusVTMessageTypes.SelectInputObjectRes.");
+SelectInputObjectRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectID.is_bound()) {
+ret_val.objectID() = single_value->field_objectID.valueof();
+}
+if (single_value->field_response.is_bound()) {
+ret_val.response() = single_value->field_response.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void SelectInputObjectRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.SelectInputObjectRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SelectInputObjectRes_template[list_length];
+}
+
+SelectInputObjectRes_template& SelectInputObjectRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.SelectInputObjectRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.SelectInputObjectRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& SelectInputObjectRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& SelectInputObjectRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.SelectInputObjectRes.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& SelectInputObjectRes_template::objectID()
+{
+set_specific();
+return single_value->field_objectID;
+}
+
+const INTEGER_template& SelectInputObjectRes_template::objectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectID of a non-specific template of type @IsobusVTMessageTypes.SelectInputObjectRes.");
+return single_value->field_objectID;
+}
+
+e__SelectInputObjectRes__Response_template& SelectInputObjectRes_template::response()
+{
+set_specific();
+return single_value->field_response;
+}
+
+const e__SelectInputObjectRes__Response_template& SelectInputObjectRes_template::response() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field response of a non-specific template of type @IsobusVTMessageTypes.SelectInputObjectRes.");
+return single_value->field_response;
+}
+
+OCTETSTRING_template& SelectInputObjectRes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& SelectInputObjectRes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.SelectInputObjectRes.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& SelectInputObjectRes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& SelectInputObjectRes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.SelectInputObjectRes.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& SelectInputObjectRes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& SelectInputObjectRes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.SelectInputObjectRes.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& SelectInputObjectRes_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& SelectInputObjectRes_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.SelectInputObjectRes.");
+return single_value->field_reserved8;
+}
+
+int SelectInputObjectRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SelectInputObjectRes 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 @IsobusVTMessageTypes.SelectInputObjectRes 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 @IsobusVTMessageTypes.SelectInputObjectRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SelectInputObjectRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SelectInputObjectRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SelectInputObjectRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.SelectInputObjectRes.");
+  }
+  return 0;
+}
+
+void SelectInputObjectRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log();
+TTCN_Logger::log_event_str(", response := ");
+single_value->field_response.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SelectInputObjectRes_template::log_match(const SelectInputObjectRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectID.match(match_value.objectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectID");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_response.match(match_value.response(), legacy)){
+TTCN_Logger::log_logmatch_info(".response");
+single_value->field_response.log_match(match_value.response(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::log_event_str(", response := ");
+single_value->field_response.log_match(match_value.response(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 SelectInputObjectRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectID.encode_text(text_buf);
+single_value->field_response.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.SelectInputObjectRes.");
+}
+}
+
+void SelectInputObjectRes_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_vtfunction.decode_text(text_buf);
+single_value->field_objectID.decode_text(text_buf);
+single_value->field_response.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 SelectInputObjectRes_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 @IsobusVTMessageTypes.SelectInputObjectRes.");
+}
+}
+
+void SelectInputObjectRes_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: {
+    SelectInputObjectRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.SelectInputObjectRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) response().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "response")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          response().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.SelectInputObjectRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.SelectInputObjectRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SelectInputObjectRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SelectInputObjectRes");
+single_value->field_objectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SelectInputObjectRes");
+single_value->field_response.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SelectInputObjectRes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SelectInputObjectRes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SelectInputObjectRes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SelectInputObjectRes");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SelectInputObjectRes");
+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 : "@IsobusVTMessageTypes.SelectInputObjectRes");
+}
+
+boolean SelectInputObjectRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SelectInputObjectRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ControlAudioSignalReq::ControlAudioSignalReq()
+{
+}
+
+ControlAudioSignalReq::ControlAudioSignalReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_activations,
+    const INTEGER& par_frequencyInHz,
+    const INTEGER& par_onTimeDuration__ms,
+    const INTEGER& par_offTimeDuration__ms)
+  :   field_vtfunction(par_vtfunction),
+  field_activations(par_activations),
+  field_frequencyInHz(par_frequencyInHz),
+  field_onTimeDuration__ms(par_onTimeDuration__ms),
+  field_offTimeDuration__ms(par_offTimeDuration__ms)
+{
+}
+
+ControlAudioSignalReq::ControlAudioSignalReq(const ControlAudioSignalReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ControlAudioSignalReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.activations().is_bound()) field_activations = other_value.activations();
+else field_activations.clean_up();
+if (other_value.frequencyInHz().is_bound()) field_frequencyInHz = other_value.frequencyInHz();
+else field_frequencyInHz.clean_up();
+if (other_value.onTimeDuration__ms().is_bound()) field_onTimeDuration__ms = other_value.onTimeDuration__ms();
+else field_onTimeDuration__ms.clean_up();
+if (other_value.offTimeDuration__ms().is_bound()) field_offTimeDuration__ms = other_value.offTimeDuration__ms();
+else field_offTimeDuration__ms.clean_up();
+}
+
+void ControlAudioSignalReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_activations.clean_up();
+field_frequencyInHz.clean_up();
+field_onTimeDuration__ms.clean_up();
+field_offTimeDuration__ms.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ControlAudioSignalReq::get_descriptor() const { return &ControlAudioSignalReq_descr_; }
+ControlAudioSignalReq& ControlAudioSignalReq::operator=(const ControlAudioSignalReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ControlAudioSignalReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.activations().is_bound()) field_activations = other_value.activations();
+  else field_activations.clean_up();
+  if (other_value.frequencyInHz().is_bound()) field_frequencyInHz = other_value.frequencyInHz();
+  else field_frequencyInHz.clean_up();
+  if (other_value.onTimeDuration__ms().is_bound()) field_onTimeDuration__ms = other_value.onTimeDuration__ms();
+  else field_onTimeDuration__ms.clean_up();
+  if (other_value.offTimeDuration__ms().is_bound()) field_offTimeDuration__ms = other_value.offTimeDuration__ms();
+  else field_offTimeDuration__ms.clean_up();
+}
+return *this;
+}
+
+boolean ControlAudioSignalReq::operator==(const ControlAudioSignalReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_activations==other_value.field_activations
+  && field_frequencyInHz==other_value.field_frequencyInHz
+  && field_onTimeDuration__ms==other_value.field_onTimeDuration__ms
+  && field_offTimeDuration__ms==other_value.field_offTimeDuration__ms;
+}
+
+boolean ControlAudioSignalReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_activations.is_bound())
+  || (field_frequencyInHz.is_bound())
+  || (field_onTimeDuration__ms.is_bound())
+  || (field_offTimeDuration__ms.is_bound());
+}
+boolean ControlAudioSignalReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_activations.is_value()
+  && field_frequencyInHz.is_value()
+  && field_onTimeDuration__ms.is_value()
+  && field_offTimeDuration__ms.is_value();
+}
+void ControlAudioSignalReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", activations := ");
+field_activations.log();
+TTCN_Logger::log_event_str(", frequencyInHz := ");
+field_frequencyInHz.log();
+TTCN_Logger::log_event_str(", onTimeDuration_ms := ");
+field_onTimeDuration__ms.log();
+TTCN_Logger::log_event_str(", offTimeDuration_ms := ");
+field_offTimeDuration__ms.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ControlAudioSignalReq::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 @IsobusVTMessageTypes.ControlAudioSignalReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) activations().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) frequencyInHz().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) onTimeDuration__ms().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) offTimeDuration__ms().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "activations")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          activations().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(), "frequencyInHz")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          frequencyInHz().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(), "onTimeDuration_ms")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          onTimeDuration__ms().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(), "offTimeDuration_ms")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          offTimeDuration__ms().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 @IsobusVTMessageTypes.ControlAudioSignalReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ControlAudioSignalReq");
+  }
+}
+
+void ControlAudioSignalReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (activations().is_bound()) activations().set_implicit_omit();
+if (frequencyInHz().is_bound()) frequencyInHz().set_implicit_omit();
+if (onTimeDuration__ms().is_bound()) onTimeDuration__ms().set_implicit_omit();
+if (offTimeDuration__ms().is_bound()) offTimeDuration__ms().set_implicit_omit();
+}
+
+void ControlAudioSignalReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_activations.encode_text(text_buf);
+field_frequencyInHz.encode_text(text_buf);
+field_onTimeDuration__ms.encode_text(text_buf);
+field_offTimeDuration__ms.encode_text(text_buf);
+}
+
+void ControlAudioSignalReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_activations.decode_text(text_buf);
+field_frequencyInHz.decode_text(text_buf);
+field_onTimeDuration__ms.decode_text(text_buf);
+field_offTimeDuration__ms.decode_text(text_buf);
+}
+
+void ControlAudioSignalReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ControlAudioSignalReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ControlAudioSignalReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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::INT1_descr_.raw->forceomit);
+  decoded_field_length = field_activations.RAW_decode(General__Types::INT1_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, FrequencyType_descr_.raw->forceomit);
+  decoded_field_length = field_frequencyInHz.RAW_decode(FrequencyType_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, IsobusMessageTypes::INT2_descr_.raw->forceomit);
+  decoded_field_length = field_onTimeDuration__ms.RAW_decode(IsobusMessageTypes::INT2_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, IsobusMessageTypes::INT2_descr_.raw->forceomit);
+  decoded_field_length = field_offTimeDuration__ms.RAW_decode(IsobusMessageTypes::INT2_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 ControlAudioSignalReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, General__Types::INT1_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, FrequencyType_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, IsobusMessageTypes::INT2_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, IsobusMessageTypes::INT2_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_activations.RAW_encode(General__Types::INT1_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_frequencyInHz.RAW_encode(FrequencyType_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_onTimeDuration__ms.RAW_encode(IsobusMessageTypes::INT2_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_offTimeDuration__ms.RAW_encode(IsobusMessageTypes::INT2_descr_, *myleaf.body.node.nodes[4]);
+  return myleaf.length = encoded_length;
+}
+
+struct ControlAudioSignalReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_activations;
+INTEGER_template field_frequencyInHz;
+INTEGER_template field_onTimeDuration__ms;
+INTEGER_template field_offTimeDuration__ms;
+};
+
+void ControlAudioSignalReq_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_vtfunction = ANY_VALUE;
+single_value->field_activations = ANY_VALUE;
+single_value->field_frequencyInHz = ANY_VALUE;
+single_value->field_onTimeDuration__ms = ANY_VALUE;
+single_value->field_offTimeDuration__ms = ANY_VALUE;
+}
+}
+}
+
+void ControlAudioSignalReq_template::copy_value(const ControlAudioSignalReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.activations().is_bound()) {
+  single_value->field_activations = other_value.activations();
+} else {
+  single_value->field_activations.clean_up();
+}
+if (other_value.frequencyInHz().is_bound()) {
+  single_value->field_frequencyInHz = other_value.frequencyInHz();
+} else {
+  single_value->field_frequencyInHz.clean_up();
+}
+if (other_value.onTimeDuration__ms().is_bound()) {
+  single_value->field_onTimeDuration__ms = other_value.onTimeDuration__ms();
+} else {
+  single_value->field_onTimeDuration__ms.clean_up();
+}
+if (other_value.offTimeDuration__ms().is_bound()) {
+  single_value->field_offTimeDuration__ms = other_value.offTimeDuration__ms();
+} else {
+  single_value->field_offTimeDuration__ms.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ControlAudioSignalReq_template::copy_template(const ControlAudioSignalReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.activations().get_selection()) {
+single_value->field_activations = other_value.activations();
+} else {
+single_value->field_activations.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.frequencyInHz().get_selection()) {
+single_value->field_frequencyInHz = other_value.frequencyInHz();
+} else {
+single_value->field_frequencyInHz.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.onTimeDuration__ms().get_selection()) {
+single_value->field_onTimeDuration__ms = other_value.onTimeDuration__ms();
+} else {
+single_value->field_onTimeDuration__ms.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.offTimeDuration__ms().get_selection()) {
+single_value->field_offTimeDuration__ms = other_value.offTimeDuration__ms();
+} else {
+single_value->field_offTimeDuration__ms.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ControlAudioSignalReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ControlAudioSignalReq.");
+break;
+}
+set_selection(other_value);
+}
+
+ControlAudioSignalReq_template::ControlAudioSignalReq_template()
+{
+}
+
+ControlAudioSignalReq_template::ControlAudioSignalReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ControlAudioSignalReq_template::ControlAudioSignalReq_template(const ControlAudioSignalReq& other_value)
+{
+copy_value(other_value);
+}
+
+ControlAudioSignalReq_template::ControlAudioSignalReq_template(const OPTIONAL<ControlAudioSignalReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ControlAudioSignalReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ControlAudioSignalReq from an unbound optional field.");
+}
+}
+
+ControlAudioSignalReq_template::ControlAudioSignalReq_template(const ControlAudioSignalReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ControlAudioSignalReq_template::~ControlAudioSignalReq_template()
+{
+clean_up();
+}
+
+ControlAudioSignalReq_template& ControlAudioSignalReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ControlAudioSignalReq_template& ControlAudioSignalReq_template::operator=(const ControlAudioSignalReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ControlAudioSignalReq_template& ControlAudioSignalReq_template::operator=(const OPTIONAL<ControlAudioSignalReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ControlAudioSignalReq&)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 @IsobusVTMessageTypes.ControlAudioSignalReq.");
+}
+return *this;
+}
+
+ControlAudioSignalReq_template& ControlAudioSignalReq_template::operator=(const ControlAudioSignalReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ControlAudioSignalReq_template::match(const ControlAudioSignalReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.activations().is_bound()) return FALSE;
+if(!single_value->field_activations.match(other_value.activations(), legacy))return FALSE;
+if(!other_value.frequencyInHz().is_bound()) return FALSE;
+if(!single_value->field_frequencyInHz.match(other_value.frequencyInHz(), legacy))return FALSE;
+if(!other_value.onTimeDuration__ms().is_bound()) return FALSE;
+if(!single_value->field_onTimeDuration__ms.match(other_value.onTimeDuration__ms(), legacy))return FALSE;
+if(!other_value.offTimeDuration__ms().is_bound()) return FALSE;
+if(!single_value->field_offTimeDuration__ms.match(other_value.offTimeDuration__ms(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ControlAudioSignalReq.");
+}
+return FALSE;
+}
+
+boolean ControlAudioSignalReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_activations.is_bound()
+
+ ||single_value->field_frequencyInHz.is_bound()
+
+ ||single_value->field_onTimeDuration__ms.is_bound()
+
+ ||single_value->field_offTimeDuration__ms.is_bound()
+;
+}
+
+boolean ControlAudioSignalReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_activations.is_value()
+ &&single_value->field_frequencyInHz.is_value()
+ &&single_value->field_onTimeDuration__ms.is_value()
+ &&single_value->field_offTimeDuration__ms.is_value();
+}
+
+void ControlAudioSignalReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ControlAudioSignalReq ControlAudioSignalReq_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 @IsobusVTMessageTypes.ControlAudioSignalReq.");
+ControlAudioSignalReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_activations.is_bound()) {
+ret_val.activations() = single_value->field_activations.valueof();
+}
+if (single_value->field_frequencyInHz.is_bound()) {
+ret_val.frequencyInHz() = single_value->field_frequencyInHz.valueof();
+}
+if (single_value->field_onTimeDuration__ms.is_bound()) {
+ret_val.onTimeDuration__ms() = single_value->field_onTimeDuration__ms.valueof();
+}
+if (single_value->field_offTimeDuration__ms.is_bound()) {
+ret_val.offTimeDuration__ms() = single_value->field_offTimeDuration__ms.valueof();
+}
+return ret_val;
+}
+
+void ControlAudioSignalReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ControlAudioSignalReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ControlAudioSignalReq_template[list_length];
+}
+
+ControlAudioSignalReq_template& ControlAudioSignalReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ControlAudioSignalReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ControlAudioSignalReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ControlAudioSignalReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ControlAudioSignalReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ControlAudioSignalReq.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& ControlAudioSignalReq_template::activations()
+{
+set_specific();
+return single_value->field_activations;
+}
+
+const INTEGER_template& ControlAudioSignalReq_template::activations() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field activations of a non-specific template of type @IsobusVTMessageTypes.ControlAudioSignalReq.");
+return single_value->field_activations;
+}
+
+INTEGER_template& ControlAudioSignalReq_template::frequencyInHz()
+{
+set_specific();
+return single_value->field_frequencyInHz;
+}
+
+const INTEGER_template& ControlAudioSignalReq_template::frequencyInHz() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field frequencyInHz of a non-specific template of type @IsobusVTMessageTypes.ControlAudioSignalReq.");
+return single_value->field_frequencyInHz;
+}
+
+INTEGER_template& ControlAudioSignalReq_template::onTimeDuration__ms()
+{
+set_specific();
+return single_value->field_onTimeDuration__ms;
+}
+
+const INTEGER_template& ControlAudioSignalReq_template::onTimeDuration__ms() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field onTimeDuration_ms of a non-specific template of type @IsobusVTMessageTypes.ControlAudioSignalReq.");
+return single_value->field_onTimeDuration__ms;
+}
+
+INTEGER_template& ControlAudioSignalReq_template::offTimeDuration__ms()
+{
+set_specific();
+return single_value->field_offTimeDuration__ms;
+}
+
+const INTEGER_template& ControlAudioSignalReq_template::offTimeDuration__ms() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field offTimeDuration_ms of a non-specific template of type @IsobusVTMessageTypes.ControlAudioSignalReq.");
+return single_value->field_offTimeDuration__ms;
+}
+
+int ControlAudioSignalReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ControlAudioSignalReq 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 @IsobusVTMessageTypes.ControlAudioSignalReq 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 @IsobusVTMessageTypes.ControlAudioSignalReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ControlAudioSignalReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ControlAudioSignalReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ControlAudioSignalReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ControlAudioSignalReq.");
+  }
+  return 0;
+}
+
+void ControlAudioSignalReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", activations := ");
+single_value->field_activations.log();
+TTCN_Logger::log_event_str(", frequencyInHz := ");
+single_value->field_frequencyInHz.log();
+TTCN_Logger::log_event_str(", onTimeDuration_ms := ");
+single_value->field_onTimeDuration__ms.log();
+TTCN_Logger::log_event_str(", offTimeDuration_ms := ");
+single_value->field_offTimeDuration__ms.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ControlAudioSignalReq_template::log_match(const ControlAudioSignalReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_activations.match(match_value.activations(), legacy)){
+TTCN_Logger::log_logmatch_info(".activations");
+single_value->field_activations.log_match(match_value.activations(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_frequencyInHz.match(match_value.frequencyInHz(), legacy)){
+TTCN_Logger::log_logmatch_info(".frequencyInHz");
+single_value->field_frequencyInHz.log_match(match_value.frequencyInHz(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_onTimeDuration__ms.match(match_value.onTimeDuration__ms(), legacy)){
+TTCN_Logger::log_logmatch_info(".onTimeDuration_ms");
+single_value->field_onTimeDuration__ms.log_match(match_value.onTimeDuration__ms(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_offTimeDuration__ms.match(match_value.offTimeDuration__ms(), legacy)){
+TTCN_Logger::log_logmatch_info(".offTimeDuration_ms");
+single_value->field_offTimeDuration__ms.log_match(match_value.offTimeDuration__ms(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", activations := ");
+single_value->field_activations.log_match(match_value.activations(), legacy);
+TTCN_Logger::log_event_str(", frequencyInHz := ");
+single_value->field_frequencyInHz.log_match(match_value.frequencyInHz(), legacy);
+TTCN_Logger::log_event_str(", onTimeDuration_ms := ");
+single_value->field_onTimeDuration__ms.log_match(match_value.onTimeDuration__ms(), legacy);
+TTCN_Logger::log_event_str(", offTimeDuration_ms := ");
+single_value->field_offTimeDuration__ms.log_match(match_value.offTimeDuration__ms(), 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 ControlAudioSignalReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_activations.encode_text(text_buf);
+single_value->field_frequencyInHz.encode_text(text_buf);
+single_value->field_onTimeDuration__ms.encode_text(text_buf);
+single_value->field_offTimeDuration__ms.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 @IsobusVTMessageTypes.ControlAudioSignalReq.");
+}
+}
+
+void ControlAudioSignalReq_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_vtfunction.decode_text(text_buf);
+single_value->field_activations.decode_text(text_buf);
+single_value->field_frequencyInHz.decode_text(text_buf);
+single_value->field_onTimeDuration__ms.decode_text(text_buf);
+single_value->field_offTimeDuration__ms.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 ControlAudioSignalReq_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 @IsobusVTMessageTypes.ControlAudioSignalReq.");
+}
+}
+
+void ControlAudioSignalReq_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: {
+    ControlAudioSignalReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.ControlAudioSignalReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) activations().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) frequencyInHz().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) onTimeDuration__ms().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) offTimeDuration__ms().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "activations")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          activations().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(), "frequencyInHz")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          frequencyInHz().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(), "onTimeDuration_ms")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          onTimeDuration__ms().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(), "offTimeDuration_ms")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          offTimeDuration__ms().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 @IsobusVTMessageTypes.ControlAudioSignalReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ControlAudioSignalReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ControlAudioSignalReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ControlAudioSignalReq");
+single_value->field_activations.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ControlAudioSignalReq");
+single_value->field_frequencyInHz.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ControlAudioSignalReq");
+single_value->field_onTimeDuration__ms.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ControlAudioSignalReq");
+single_value->field_offTimeDuration__ms.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ControlAudioSignalReq");
+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 : "@IsobusVTMessageTypes.ControlAudioSignalReq");
+}
+
+boolean ControlAudioSignalReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ControlAudioSignalReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+e__ControlAudioSignalRes__ErrorCodes::e__ControlAudioSignalRes__ErrorCodes()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+e__ControlAudioSignalRes__ErrorCodes::e__ControlAudioSignalRes__ErrorCodes(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @IsobusVTMessageTypes.e_ControlAudioSignalRes_ErrorCodes with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+e__ControlAudioSignalRes__ErrorCodes::e__ControlAudioSignalRes__ErrorCodes(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+e__ControlAudioSignalRes__ErrorCodes::e__ControlAudioSignalRes__ErrorCodes(const e__ControlAudioSignalRes__ErrorCodes& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @IsobusVTMessageTypes.e_ControlAudioSignalRes_ErrorCodes.");
+enum_value = other_value.enum_value;
+}
+
+e__ControlAudioSignalRes__ErrorCodes& e__ControlAudioSignalRes__ErrorCodes::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @IsobusVTMessageTypes.e_ControlAudioSignalRes_ErrorCodes.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+e__ControlAudioSignalRes__ErrorCodes& e__ControlAudioSignalRes__ErrorCodes::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+e__ControlAudioSignalRes__ErrorCodes& e__ControlAudioSignalRes__ErrorCodes::operator=(const e__ControlAudioSignalRes__ErrorCodes& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusVTMessageTypes.e_ControlAudioSignalRes_ErrorCodes.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean e__ControlAudioSignalRes__ErrorCodes::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_ControlAudioSignalRes_ErrorCodes.");
+return enum_value == other_value;
+}
+
+boolean e__ControlAudioSignalRes__ErrorCodes::operator==(const e__ControlAudioSignalRes__ErrorCodes& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_ControlAudioSignalRes_ErrorCodes.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_ControlAudioSignalRes_ErrorCodes.");
+return enum_value == other_value.enum_value;
+}
+
+boolean e__ControlAudioSignalRes__ErrorCodes::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_ControlAudioSignalRes_ErrorCodes.");
+return enum_value < other_value;
+}
+
+boolean e__ControlAudioSignalRes__ErrorCodes::operator<(const e__ControlAudioSignalRes__ErrorCodes& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_ControlAudioSignalRes_ErrorCodes.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_ControlAudioSignalRes_ErrorCodes.");
+return enum_value < other_value.enum_value;
+}
+
+boolean e__ControlAudioSignalRes__ErrorCodes::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_ControlAudioSignalRes_ErrorCodes.");
+return enum_value > other_value;
+}
+
+boolean e__ControlAudioSignalRes__ErrorCodes::operator>(const e__ControlAudioSignalRes__ErrorCodes& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_ControlAudioSignalRes_ErrorCodes.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_ControlAudioSignalRes_ErrorCodes.");
+return enum_value > other_value.enum_value;
+}
+
+const char *e__ControlAudioSignalRes__ErrorCodes::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case audioDeviceIsBusy: return "audioDeviceIsBusy";
+case undefined: return "undefined";
+case objectReferencedByObjectIDisOpenedForEdit: return "objectReferencedByObjectIDisOpenedForEdit";
+default: return "<unknown>";
+}
+}
+
+e__ControlAudioSignalRes__ErrorCodes::enum_type e__ControlAudioSignalRes__ErrorCodes::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "audioDeviceIsBusy")) return audioDeviceIsBusy;
+else if (!strcmp(str_par, "undefined")) return undefined;
+else if (!strcmp(str_par, "objectReferencedByObjectIDisOpenedForEdit")) return objectReferencedByObjectIDisOpenedForEdit;
+else return UNKNOWN_VALUE;
+}
+
+boolean e__ControlAudioSignalRes__ErrorCodes::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 0:
+case 1:
+case 2:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int e__ControlAudioSignalRes__ErrorCodes::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusVTMessageTypes.e_ControlAudioSignalRes_ErrorCodes.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int e__ControlAudioSignalRes__ErrorCodes::enum2int(const e__ControlAudioSignalRes__ErrorCodes& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusVTMessageTypes.e_ControlAudioSignalRes_ErrorCodes.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void e__ControlAudioSignalRes__ErrorCodes::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @IsobusVTMessageTypes.e_ControlAudioSignalRes_ErrorCodes.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+e__ControlAudioSignalRes__ErrorCodes::operator e__ControlAudioSignalRes__ErrorCodes::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @IsobusVTMessageTypes.e_ControlAudioSignalRes_ErrorCodes.");
+return enum_value;
+}
+
+void e__ControlAudioSignalRes__ErrorCodes::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void e__ControlAudioSignalRes__ErrorCodes::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@IsobusVTMessageTypes.e_ControlAudioSignalRes_ErrorCodes");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @IsobusVTMessageTypes.e_ControlAudioSignalRes_ErrorCodes.");
+  }
+}
+
+void e__ControlAudioSignalRes__ErrorCodes::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @IsobusVTMessageTypes.e_ControlAudioSignalRes_ErrorCodes.");
+text_buf.push_int(enum_value);
+}
+
+void e__ControlAudioSignalRes__ErrorCodes::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @IsobusVTMessageTypes.e_ControlAudioSignalRes_ErrorCodes.", enum_value);
+}
+
+void e__ControlAudioSignalRes__ErrorCodes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void e__ControlAudioSignalRes__ErrorCodes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int e__ControlAudioSignalRes__ErrorCodes::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*)
+{
+  int decoded_value = 0;
+  int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 2, no_err);
+  if (decoded_length < 0) return decoded_length;
+  if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value;
+  else {
+    if(no_err){
+     return -1;
+    } else {
+    TTCN_EncDec_ErrorContext::error
+      (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name);
+    enum_value = UNKNOWN_VALUE;
+    }
+  }
+  return decoded_length;
+}
+
+int e__ControlAudioSignalRes__ErrorCodes::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const
+{
+  return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 2);
+}
+
+void e__ControlAudioSignalRes__ErrorCodes_template::copy_template(const e__ControlAudioSignalRes__ErrorCodes_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new e__ControlAudioSignalRes__ErrorCodes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_ControlAudioSignalRes_ErrorCodes.");
+}
+}
+
+e__ControlAudioSignalRes__ErrorCodes_template::e__ControlAudioSignalRes__ErrorCodes_template()
+{
+}
+
+e__ControlAudioSignalRes__ErrorCodes_template::e__ControlAudioSignalRes__ErrorCodes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+e__ControlAudioSignalRes__ErrorCodes_template::e__ControlAudioSignalRes__ErrorCodes_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!e__ControlAudioSignalRes__ErrorCodes::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @IsobusVTMessageTypes.e_ControlAudioSignalRes_ErrorCodes with unknown numeric value %d.", other_value);
+single_value = (e__ControlAudioSignalRes__ErrorCodes::enum_type)other_value;
+}
+
+e__ControlAudioSignalRes__ErrorCodes_template::e__ControlAudioSignalRes__ErrorCodes_template(e__ControlAudioSignalRes__ErrorCodes::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+e__ControlAudioSignalRes__ErrorCodes_template::e__ControlAudioSignalRes__ErrorCodes_template(const e__ControlAudioSignalRes__ErrorCodes& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == e__ControlAudioSignalRes__ErrorCodes::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @IsobusVTMessageTypes.e_ControlAudioSignalRes_ErrorCodes.");
+single_value = other_value.enum_value;
+}
+
+e__ControlAudioSignalRes__ErrorCodes_template::e__ControlAudioSignalRes__ErrorCodes_template(const OPTIONAL<e__ControlAudioSignalRes__ErrorCodes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__ControlAudioSignalRes__ErrorCodes::enum_type)(const e__ControlAudioSignalRes__ErrorCodes&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @IsobusVTMessageTypes.e_ControlAudioSignalRes_ErrorCodes from an unbound optional field.");
+}
+}
+
+e__ControlAudioSignalRes__ErrorCodes_template::e__ControlAudioSignalRes__ErrorCodes_template(const e__ControlAudioSignalRes__ErrorCodes_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+e__ControlAudioSignalRes__ErrorCodes_template::~e__ControlAudioSignalRes__ErrorCodes_template()
+{
+clean_up();
+}
+
+boolean e__ControlAudioSignalRes__ErrorCodes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean e__ControlAudioSignalRes__ErrorCodes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != e__ControlAudioSignalRes__ErrorCodes::UNBOUND_VALUE;
+}
+
+void e__ControlAudioSignalRes__ErrorCodes_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+e__ControlAudioSignalRes__ErrorCodes_template& e__ControlAudioSignalRes__ErrorCodes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+e__ControlAudioSignalRes__ErrorCodes_template& e__ControlAudioSignalRes__ErrorCodes_template::operator=(int other_value)
+{
+if (!e__ControlAudioSignalRes__ErrorCodes::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @IsobusVTMessageTypes.e_ControlAudioSignalRes_ErrorCodes.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (e__ControlAudioSignalRes__ErrorCodes::enum_type)other_value;
+return *this;
+}
+
+e__ControlAudioSignalRes__ErrorCodes_template& e__ControlAudioSignalRes__ErrorCodes_template::operator=(e__ControlAudioSignalRes__ErrorCodes::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+e__ControlAudioSignalRes__ErrorCodes_template& e__ControlAudioSignalRes__ErrorCodes_template::operator=(const e__ControlAudioSignalRes__ErrorCodes& other_value)
+{
+if (other_value.enum_value == e__ControlAudioSignalRes__ErrorCodes::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusVTMessageTypes.e_ControlAudioSignalRes_ErrorCodes to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+e__ControlAudioSignalRes__ErrorCodes_template& e__ControlAudioSignalRes__ErrorCodes_template::operator=(const OPTIONAL<e__ControlAudioSignalRes__ErrorCodes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__ControlAudioSignalRes__ErrorCodes::enum_type)(const e__ControlAudioSignalRes__ErrorCodes&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @IsobusVTMessageTypes.e_ControlAudioSignalRes_ErrorCodes.");
+}
+return *this;
+}
+
+e__ControlAudioSignalRes__ErrorCodes_template& e__ControlAudioSignalRes__ErrorCodes_template::operator=(const e__ControlAudioSignalRes__ErrorCodes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean e__ControlAudioSignalRes__ErrorCodes_template::match(e__ControlAudioSignalRes__ErrorCodes::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_ControlAudioSignalRes_ErrorCodes.");
+}
+return FALSE;
+}
+
+boolean e__ControlAudioSignalRes__ErrorCodes_template::match(const e__ControlAudioSignalRes__ErrorCodes& other_value, boolean) const
+{
+if (other_value.enum_value == e__ControlAudioSignalRes__ErrorCodes::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @IsobusVTMessageTypes.e_ControlAudioSignalRes_ErrorCodes with an unbound value.");
+return match(other_value.enum_value);
+}
+
+e__ControlAudioSignalRes__ErrorCodes::enum_type e__ControlAudioSignalRes__ErrorCodes_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @IsobusVTMessageTypes.e_ControlAudioSignalRes_ErrorCodes.");
+return single_value;
+}
+
+void e__ControlAudioSignalRes__ErrorCodes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @IsobusVTMessageTypes.e_ControlAudioSignalRes_ErrorCodes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new e__ControlAudioSignalRes__ErrorCodes_template[list_length];
+}
+
+e__ControlAudioSignalRes__ErrorCodes_template& e__ControlAudioSignalRes__ErrorCodes_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @IsobusVTMessageTypes.e_ControlAudioSignalRes_ErrorCodes.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @IsobusVTMessageTypes.e_ControlAudioSignalRes_ErrorCodes.");
+return value_list.list_value[list_index];
+}
+
+void e__ControlAudioSignalRes__ErrorCodes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(e__ControlAudioSignalRes__ErrorCodes::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void e__ControlAudioSignalRes__ErrorCodes_template::log_match(const e__ControlAudioSignalRes__ErrorCodes& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void e__ControlAudioSignalRes__ErrorCodes_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_ControlAudioSignalRes_ErrorCodes.");
+}
+}
+
+void e__ControlAudioSignalRes__ErrorCodes_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (e__ControlAudioSignalRes__ErrorCodes::enum_type)text_buf.pull_int().get_val();
+if (!e__ControlAudioSignalRes__ErrorCodes::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @IsobusVTMessageTypes.e_ControlAudioSignalRes_ErrorCodes.", single_value);
+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 e__ControlAudioSignalRes__ErrorCodes_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @IsobusVTMessageTypes.e_ControlAudioSignalRes_ErrorCodes.");
+}
+}
+
+boolean e__ControlAudioSignalRes__ErrorCodes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean e__ControlAudioSignalRes__ErrorCodes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 e__ControlAudioSignalRes__ErrorCodes_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    e__ControlAudioSignalRes__ErrorCodes_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    e__ControlAudioSignalRes__ErrorCodes::enum_type enum_val = e__ControlAudioSignalRes__ErrorCodes::str_to_enum(m_p->get_enumerated());
+    if (!e__ControlAudioSignalRes__ErrorCodes::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @IsobusVTMessageTypes.e_ControlAudioSignalRes_ErrorCodes.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@IsobusVTMessageTypes.e_ControlAudioSignalRes_ErrorCodes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void e__ControlAudioSignalRes__ErrorCodes_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@IsobusVTMessageTypes.e_ControlAudioSignalRes_ErrorCodes");
+}
+
+ControlAudioSignalRes__ErrorCodes::ControlAudioSignalRes__ErrorCodes()
+{
+}
+
+ControlAudioSignalRes__ErrorCodes::ControlAudioSignalRes__ErrorCodes(const BOOLEAN& par_audioDeviceIsBusy,
+    const BOOLEAN& par_undefined1,
+    const BOOLEAN& par_undefined2,
+    const BOOLEAN& par_undefined3,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7)
+  :   field_audioDeviceIsBusy(par_audioDeviceIsBusy),
+  field_undefined1(par_undefined1),
+  field_undefined2(par_undefined2),
+  field_undefined3(par_undefined3),
+  field_anyOtherError(par_anyOtherError),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7)
+{
+}
+
+ControlAudioSignalRes__ErrorCodes::ControlAudioSignalRes__ErrorCodes(const ControlAudioSignalRes__ErrorCodes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes.");
+if (other_value.audioDeviceIsBusy().is_bound()) field_audioDeviceIsBusy = other_value.audioDeviceIsBusy();
+else field_audioDeviceIsBusy.clean_up();
+if (other_value.undefined1().is_bound()) field_undefined1 = other_value.undefined1();
+else field_undefined1.clean_up();
+if (other_value.undefined2().is_bound()) field_undefined2 = other_value.undefined2();
+else field_undefined2.clean_up();
+if (other_value.undefined3().is_bound()) field_undefined3 = other_value.undefined3();
+else field_undefined3.clean_up();
+if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+else field_anyOtherError.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+}
+
+void ControlAudioSignalRes__ErrorCodes::clean_up()
+{
+field_audioDeviceIsBusy.clean_up();
+field_undefined1.clean_up();
+field_undefined2.clean_up();
+field_undefined3.clean_up();
+field_anyOtherError.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ControlAudioSignalRes__ErrorCodes::get_descriptor() const { return &ControlAudioSignalRes__ErrorCodes_descr_; }
+ControlAudioSignalRes__ErrorCodes& ControlAudioSignalRes__ErrorCodes::operator=(const ControlAudioSignalRes__ErrorCodes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes.");
+  if (other_value.audioDeviceIsBusy().is_bound()) field_audioDeviceIsBusy = other_value.audioDeviceIsBusy();
+  else field_audioDeviceIsBusy.clean_up();
+  if (other_value.undefined1().is_bound()) field_undefined1 = other_value.undefined1();
+  else field_undefined1.clean_up();
+  if (other_value.undefined2().is_bound()) field_undefined2 = other_value.undefined2();
+  else field_undefined2.clean_up();
+  if (other_value.undefined3().is_bound()) field_undefined3 = other_value.undefined3();
+  else field_undefined3.clean_up();
+  if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+  else field_anyOtherError.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+}
+return *this;
+}
+
+boolean ControlAudioSignalRes__ErrorCodes::operator==(const ControlAudioSignalRes__ErrorCodes& other_value) const
+{
+return field_audioDeviceIsBusy==other_value.field_audioDeviceIsBusy
+  && field_undefined1==other_value.field_undefined1
+  && field_undefined2==other_value.field_undefined2
+  && field_undefined3==other_value.field_undefined3
+  && field_anyOtherError==other_value.field_anyOtherError
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7;
+}
+
+boolean ControlAudioSignalRes__ErrorCodes::is_bound() const
+{
+return (field_audioDeviceIsBusy.is_bound())
+  || (field_undefined1.is_bound())
+  || (field_undefined2.is_bound())
+  || (field_undefined3.is_bound())
+  || (field_anyOtherError.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound());
+}
+boolean ControlAudioSignalRes__ErrorCodes::is_value() const
+{
+return field_audioDeviceIsBusy.is_value()
+  && field_undefined1.is_value()
+  && field_undefined2.is_value()
+  && field_undefined3.is_value()
+  && field_anyOtherError.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value();
+}
+void ControlAudioSignalRes__ErrorCodes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ audioDeviceIsBusy := ");
+field_audioDeviceIsBusy.log();
+TTCN_Logger::log_event_str(", undefined1 := ");
+field_undefined1.log();
+TTCN_Logger::log_event_str(", undefined2 := ");
+field_undefined2.log();
+TTCN_Logger::log_event_str(", undefined3 := ");
+field_undefined3.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ControlAudioSignalRes__ErrorCodes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes has 8 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) audioDeviceIsBusy().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) undefined1().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) undefined2().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) undefined3().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "audioDeviceIsBusy")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          audioDeviceIsBusy().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(), "undefined1")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          undefined1().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(), "undefined2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          undefined2().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(), "undefined3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          undefined3().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes");
+  }
+}
+
+void ControlAudioSignalRes__ErrorCodes::set_implicit_omit()
+{
+if (audioDeviceIsBusy().is_bound()) audioDeviceIsBusy().set_implicit_omit();
+if (undefined1().is_bound()) undefined1().set_implicit_omit();
+if (undefined2().is_bound()) undefined2().set_implicit_omit();
+if (undefined3().is_bound()) undefined3().set_implicit_omit();
+if (anyOtherError().is_bound()) anyOtherError().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+}
+
+void ControlAudioSignalRes__ErrorCodes::encode_text(Text_Buf& text_buf) const
+{
+field_audioDeviceIsBusy.encode_text(text_buf);
+field_undefined1.encode_text(text_buf);
+field_undefined2.encode_text(text_buf);
+field_undefined3.encode_text(text_buf);
+field_anyOtherError.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+}
+
+void ControlAudioSignalRes__ErrorCodes::decode_text(Text_Buf& text_buf)
+{
+field_audioDeviceIsBusy.decode_text(text_buf);
+field_undefined1.decode_text(text_buf);
+field_undefined2.decode_text(text_buf);
+field_undefined3.decode_text(text_buf);
+field_anyOtherError.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+}
+
+void ControlAudioSignalRes__ErrorCodes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ControlAudioSignalRes__ErrorCodes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ControlAudioSignalRes__ErrorCodes::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_audioDeviceIsBusy.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_undefined1.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_undefined2.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_undefined3.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_anyOtherError.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ControlAudioSignalRes__ErrorCodes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_audioDeviceIsBusy.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_undefined1.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_undefined2.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_undefined3.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_anyOtherError.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved5.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved6.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved7.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct ControlAudioSignalRes__ErrorCodes_template::single_value_struct {
+BOOLEAN_template field_audioDeviceIsBusy;
+BOOLEAN_template field_undefined1;
+BOOLEAN_template field_undefined2;
+BOOLEAN_template field_undefined3;
+BOOLEAN_template field_anyOtherError;
+BOOLEAN_template field_reserved5;
+BOOLEAN_template field_reserved6;
+BOOLEAN_template field_reserved7;
+};
+
+void ControlAudioSignalRes__ErrorCodes_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_audioDeviceIsBusy = ANY_VALUE;
+single_value->field_undefined1 = ANY_VALUE;
+single_value->field_undefined2 = ANY_VALUE;
+single_value->field_undefined3 = ANY_VALUE;
+single_value->field_anyOtherError = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+}
+}
+}
+
+void ControlAudioSignalRes__ErrorCodes_template::copy_value(const ControlAudioSignalRes__ErrorCodes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.audioDeviceIsBusy().is_bound()) {
+  single_value->field_audioDeviceIsBusy = other_value.audioDeviceIsBusy();
+} else {
+  single_value->field_audioDeviceIsBusy.clean_up();
+}
+if (other_value.undefined1().is_bound()) {
+  single_value->field_undefined1 = other_value.undefined1();
+} else {
+  single_value->field_undefined1.clean_up();
+}
+if (other_value.undefined2().is_bound()) {
+  single_value->field_undefined2 = other_value.undefined2();
+} else {
+  single_value->field_undefined2.clean_up();
+}
+if (other_value.undefined3().is_bound()) {
+  single_value->field_undefined3 = other_value.undefined3();
+} else {
+  single_value->field_undefined3.clean_up();
+}
+if (other_value.anyOtherError().is_bound()) {
+  single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+  single_value->field_anyOtherError.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ControlAudioSignalRes__ErrorCodes_template::copy_template(const ControlAudioSignalRes__ErrorCodes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.audioDeviceIsBusy().get_selection()) {
+single_value->field_audioDeviceIsBusy = other_value.audioDeviceIsBusy();
+} else {
+single_value->field_audioDeviceIsBusy.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.undefined1().get_selection()) {
+single_value->field_undefined1 = other_value.undefined1();
+} else {
+single_value->field_undefined1.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.undefined2().get_selection()) {
+single_value->field_undefined2 = other_value.undefined2();
+} else {
+single_value->field_undefined2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.undefined3().get_selection()) {
+single_value->field_undefined3 = other_value.undefined3();
+} else {
+single_value->field_undefined3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.anyOtherError().get_selection()) {
+single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+single_value->field_anyOtherError.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ControlAudioSignalRes__ErrorCodes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes.");
+break;
+}
+set_selection(other_value);
+}
+
+ControlAudioSignalRes__ErrorCodes_template::ControlAudioSignalRes__ErrorCodes_template()
+{
+}
+
+ControlAudioSignalRes__ErrorCodes_template::ControlAudioSignalRes__ErrorCodes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ControlAudioSignalRes__ErrorCodes_template::ControlAudioSignalRes__ErrorCodes_template(const ControlAudioSignalRes__ErrorCodes& other_value)
+{
+copy_value(other_value);
+}
+
+ControlAudioSignalRes__ErrorCodes_template::ControlAudioSignalRes__ErrorCodes_template(const OPTIONAL<ControlAudioSignalRes__ErrorCodes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ControlAudioSignalRes__ErrorCodes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes from an unbound optional field.");
+}
+}
+
+ControlAudioSignalRes__ErrorCodes_template::ControlAudioSignalRes__ErrorCodes_template(const ControlAudioSignalRes__ErrorCodes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ControlAudioSignalRes__ErrorCodes_template::~ControlAudioSignalRes__ErrorCodes_template()
+{
+clean_up();
+}
+
+ControlAudioSignalRes__ErrorCodes_template& ControlAudioSignalRes__ErrorCodes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ControlAudioSignalRes__ErrorCodes_template& ControlAudioSignalRes__ErrorCodes_template::operator=(const ControlAudioSignalRes__ErrorCodes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ControlAudioSignalRes__ErrorCodes_template& ControlAudioSignalRes__ErrorCodes_template::operator=(const OPTIONAL<ControlAudioSignalRes__ErrorCodes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ControlAudioSignalRes__ErrorCodes&)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 @IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes.");
+}
+return *this;
+}
+
+ControlAudioSignalRes__ErrorCodes_template& ControlAudioSignalRes__ErrorCodes_template::operator=(const ControlAudioSignalRes__ErrorCodes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ControlAudioSignalRes__ErrorCodes_template::match(const ControlAudioSignalRes__ErrorCodes& 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.audioDeviceIsBusy().is_bound()) return FALSE;
+if(!single_value->field_audioDeviceIsBusy.match(other_value.audioDeviceIsBusy(), legacy))return FALSE;
+if(!other_value.undefined1().is_bound()) return FALSE;
+if(!single_value->field_undefined1.match(other_value.undefined1(), legacy))return FALSE;
+if(!other_value.undefined2().is_bound()) return FALSE;
+if(!single_value->field_undefined2.match(other_value.undefined2(), legacy))return FALSE;
+if(!other_value.undefined3().is_bound()) return FALSE;
+if(!single_value->field_undefined3.match(other_value.undefined3(), legacy))return FALSE;
+if(!other_value.anyOtherError().is_bound()) return FALSE;
+if(!single_value->field_anyOtherError.match(other_value.anyOtherError(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes.");
+}
+return FALSE;
+}
+
+boolean ControlAudioSignalRes__ErrorCodes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_audioDeviceIsBusy.is_bound()
+
+ ||single_value->field_undefined1.is_bound()
+
+ ||single_value->field_undefined2.is_bound()
+
+ ||single_value->field_undefined3.is_bound()
+
+ ||single_value->field_anyOtherError.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+;
+}
+
+boolean ControlAudioSignalRes__ErrorCodes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_audioDeviceIsBusy.is_value()
+ &&single_value->field_undefined1.is_value()
+ &&single_value->field_undefined2.is_value()
+ &&single_value->field_undefined3.is_value()
+ &&single_value->field_anyOtherError.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value();
+}
+
+void ControlAudioSignalRes__ErrorCodes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ControlAudioSignalRes__ErrorCodes ControlAudioSignalRes__ErrorCodes_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 @IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes.");
+ControlAudioSignalRes__ErrorCodes ret_val;
+if (single_value->field_audioDeviceIsBusy.is_bound()) {
+ret_val.audioDeviceIsBusy() = single_value->field_audioDeviceIsBusy.valueof();
+}
+if (single_value->field_undefined1.is_bound()) {
+ret_val.undefined1() = single_value->field_undefined1.valueof();
+}
+if (single_value->field_undefined2.is_bound()) {
+ret_val.undefined2() = single_value->field_undefined2.valueof();
+}
+if (single_value->field_undefined3.is_bound()) {
+ret_val.undefined3() = single_value->field_undefined3.valueof();
+}
+if (single_value->field_anyOtherError.is_bound()) {
+ret_val.anyOtherError() = single_value->field_anyOtherError.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+return ret_val;
+}
+
+void ControlAudioSignalRes__ErrorCodes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ControlAudioSignalRes__ErrorCodes_template[list_length];
+}
+
+ControlAudioSignalRes__ErrorCodes_template& ControlAudioSignalRes__ErrorCodes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& ControlAudioSignalRes__ErrorCodes_template::audioDeviceIsBusy()
+{
+set_specific();
+return single_value->field_audioDeviceIsBusy;
+}
+
+const BOOLEAN_template& ControlAudioSignalRes__ErrorCodes_template::audioDeviceIsBusy() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field audioDeviceIsBusy of a non-specific template of type @IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes.");
+return single_value->field_audioDeviceIsBusy;
+}
+
+BOOLEAN_template& ControlAudioSignalRes__ErrorCodes_template::undefined1()
+{
+set_specific();
+return single_value->field_undefined1;
+}
+
+const BOOLEAN_template& ControlAudioSignalRes__ErrorCodes_template::undefined1() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field undefined1 of a non-specific template of type @IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes.");
+return single_value->field_undefined1;
+}
+
+BOOLEAN_template& ControlAudioSignalRes__ErrorCodes_template::undefined2()
+{
+set_specific();
+return single_value->field_undefined2;
+}
+
+const BOOLEAN_template& ControlAudioSignalRes__ErrorCodes_template::undefined2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field undefined2 of a non-specific template of type @IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes.");
+return single_value->field_undefined2;
+}
+
+BOOLEAN_template& ControlAudioSignalRes__ErrorCodes_template::undefined3()
+{
+set_specific();
+return single_value->field_undefined3;
+}
+
+const BOOLEAN_template& ControlAudioSignalRes__ErrorCodes_template::undefined3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field undefined3 of a non-specific template of type @IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes.");
+return single_value->field_undefined3;
+}
+
+BOOLEAN_template& ControlAudioSignalRes__ErrorCodes_template::anyOtherError()
+{
+set_specific();
+return single_value->field_anyOtherError;
+}
+
+const BOOLEAN_template& ControlAudioSignalRes__ErrorCodes_template::anyOtherError() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field anyOtherError of a non-specific template of type @IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes.");
+return single_value->field_anyOtherError;
+}
+
+BOOLEAN_template& ControlAudioSignalRes__ErrorCodes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const BOOLEAN_template& ControlAudioSignalRes__ErrorCodes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes.");
+return single_value->field_reserved5;
+}
+
+BOOLEAN_template& ControlAudioSignalRes__ErrorCodes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const BOOLEAN_template& ControlAudioSignalRes__ErrorCodes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes.");
+return single_value->field_reserved6;
+}
+
+BOOLEAN_template& ControlAudioSignalRes__ErrorCodes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const BOOLEAN_template& ControlAudioSignalRes__ErrorCodes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes.");
+return single_value->field_reserved7;
+}
+
+int ControlAudioSignalRes__ErrorCodes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes 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 @IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes.");
+  }
+  return 0;
+}
+
+void ControlAudioSignalRes__ErrorCodes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ audioDeviceIsBusy := ");
+single_value->field_audioDeviceIsBusy.log();
+TTCN_Logger::log_event_str(", undefined1 := ");
+single_value->field_undefined1.log();
+TTCN_Logger::log_event_str(", undefined2 := ");
+single_value->field_undefined2.log();
+TTCN_Logger::log_event_str(", undefined3 := ");
+single_value->field_undefined3.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ControlAudioSignalRes__ErrorCodes_template::log_match(const ControlAudioSignalRes__ErrorCodes& 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_audioDeviceIsBusy.match(match_value.audioDeviceIsBusy(), legacy)){
+TTCN_Logger::log_logmatch_info(".audioDeviceIsBusy");
+single_value->field_audioDeviceIsBusy.log_match(match_value.audioDeviceIsBusy(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_undefined1.match(match_value.undefined1(), legacy)){
+TTCN_Logger::log_logmatch_info(".undefined1");
+single_value->field_undefined1.log_match(match_value.undefined1(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_undefined2.match(match_value.undefined2(), legacy)){
+TTCN_Logger::log_logmatch_info(".undefined2");
+single_value->field_undefined2.log_match(match_value.undefined2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_undefined3.match(match_value.undefined3(), legacy)){
+TTCN_Logger::log_logmatch_info(".undefined3");
+single_value->field_undefined3.log_match(match_value.undefined3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_anyOtherError.match(match_value.anyOtherError(), legacy)){
+TTCN_Logger::log_logmatch_info(".anyOtherError");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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("{ audioDeviceIsBusy := ");
+single_value->field_audioDeviceIsBusy.log_match(match_value.audioDeviceIsBusy(), legacy);
+TTCN_Logger::log_event_str(", undefined1 := ");
+single_value->field_undefined1.log_match(match_value.undefined1(), legacy);
+TTCN_Logger::log_event_str(", undefined2 := ");
+single_value->field_undefined2.log_match(match_value.undefined2(), legacy);
+TTCN_Logger::log_event_str(", undefined3 := ");
+single_value->field_undefined3.log_match(match_value.undefined3(), legacy);
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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 ControlAudioSignalRes__ErrorCodes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_audioDeviceIsBusy.encode_text(text_buf);
+single_value->field_undefined1.encode_text(text_buf);
+single_value->field_undefined2.encode_text(text_buf);
+single_value->field_undefined3.encode_text(text_buf);
+single_value->field_anyOtherError.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.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 @IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes.");
+}
+}
+
+void ControlAudioSignalRes__ErrorCodes_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_audioDeviceIsBusy.decode_text(text_buf);
+single_value->field_undefined1.decode_text(text_buf);
+single_value->field_undefined2.decode_text(text_buf);
+single_value->field_undefined3.decode_text(text_buf);
+single_value->field_anyOtherError.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.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 ControlAudioSignalRes__ErrorCodes_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 @IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes.");
+}
+}
+
+void ControlAudioSignalRes__ErrorCodes_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: {
+    ControlAudioSignalRes__ErrorCodes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes has 8 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) audioDeviceIsBusy().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) undefined1().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) undefined2().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) undefined3().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "audioDeviceIsBusy")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          audioDeviceIsBusy().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(), "undefined1")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          undefined1().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(), "undefined2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          undefined2().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(), "undefined3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          undefined3().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ControlAudioSignalRes__ErrorCodes_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_audioDeviceIsBusy.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes");
+single_value->field_undefined1.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes");
+single_value->field_undefined2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes");
+single_value->field_undefined3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes");
+single_value->field_anyOtherError.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes");
+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 : "@IsobusVTMessageTypes.ControlAudioSignalRes_ErrorCodes");
+}
+
+boolean ControlAudioSignalRes__ErrorCodes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ControlAudioSignalRes__ErrorCodes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ControlAudioSignalRes::ControlAudioSignalRes()
+{
+}
+
+ControlAudioSignalRes::ControlAudioSignalRes(const INTEGER& par_vtfunction,
+    const ControlAudioSignalRes__ErrorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_errorCodes(par_errorCodes),
+  field_reserved3(par_reserved3),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+ControlAudioSignalRes::ControlAudioSignalRes(const ControlAudioSignalRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ControlAudioSignalRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+else field_errorCodes.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void ControlAudioSignalRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_errorCodes.clean_up();
+field_reserved3.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ControlAudioSignalRes::get_descriptor() const { return &ControlAudioSignalRes_descr_; }
+ControlAudioSignalRes& ControlAudioSignalRes::operator=(const ControlAudioSignalRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ControlAudioSignalRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+  else field_errorCodes.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean ControlAudioSignalRes::operator==(const ControlAudioSignalRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_errorCodes==other_value.field_errorCodes
+  && field_reserved3==other_value.field_reserved3
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean ControlAudioSignalRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_errorCodes.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean ControlAudioSignalRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_errorCodes.is_value()
+  && field_reserved3.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void ControlAudioSignalRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ControlAudioSignalRes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.ControlAudioSignalRes has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ControlAudioSignalRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ControlAudioSignalRes");
+  }
+}
+
+void ControlAudioSignalRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (errorCodes().is_bound()) errorCodes().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void ControlAudioSignalRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_errorCodes.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void ControlAudioSignalRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_errorCodes.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void ControlAudioSignalRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ControlAudioSignalRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ControlAudioSignalRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ControlAudioSignalRes__ErrorCodes_descr_.raw->forceomit);
+  decoded_field_length = field_errorCodes.RAW_decode(ControlAudioSignalRes__ErrorCodes_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, ControlAudioSignalRes_reserved3_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(ControlAudioSignalRes_reserved3_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, ControlAudioSignalRes_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(ControlAudioSignalRes_reserved4_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, ControlAudioSignalRes_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(ControlAudioSignalRes_reserved5_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, ControlAudioSignalRes_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(ControlAudioSignalRes_reserved6_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, ControlAudioSignalRes_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(ControlAudioSignalRes_reserved7_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, ControlAudioSignalRes_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(ControlAudioSignalRes_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ControlAudioSignalRes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ControlAudioSignalRes__ErrorCodes_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ControlAudioSignalRes_reserved3_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, ControlAudioSignalRes_reserved4_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, ControlAudioSignalRes_reserved5_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, ControlAudioSignalRes_reserved6_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, ControlAudioSignalRes_reserved7_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, ControlAudioSignalRes_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_errorCodes.RAW_encode(ControlAudioSignalRes__ErrorCodes_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved3.RAW_encode(ControlAudioSignalRes_reserved3_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved4.RAW_encode(ControlAudioSignalRes_reserved4_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved5.RAW_encode(ControlAudioSignalRes_reserved5_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved6.RAW_encode(ControlAudioSignalRes_reserved6_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved7.RAW_encode(ControlAudioSignalRes_reserved7_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved8.RAW_encode(ControlAudioSignalRes_reserved8_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct ControlAudioSignalRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+ControlAudioSignalRes__ErrorCodes_template field_errorCodes;
+OCTETSTRING_template field_reserved3;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void ControlAudioSignalRes_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_vtfunction = ANY_VALUE;
+single_value->field_errorCodes = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void ControlAudioSignalRes_template::copy_value(const ControlAudioSignalRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.errorCodes().is_bound()) {
+  single_value->field_errorCodes = other_value.errorCodes();
+} else {
+  single_value->field_errorCodes.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ControlAudioSignalRes_template::copy_template(const ControlAudioSignalRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.errorCodes().get_selection()) {
+single_value->field_errorCodes = other_value.errorCodes();
+} else {
+single_value->field_errorCodes.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ControlAudioSignalRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ControlAudioSignalRes.");
+break;
+}
+set_selection(other_value);
+}
+
+ControlAudioSignalRes_template::ControlAudioSignalRes_template()
+{
+}
+
+ControlAudioSignalRes_template::ControlAudioSignalRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ControlAudioSignalRes_template::ControlAudioSignalRes_template(const ControlAudioSignalRes& other_value)
+{
+copy_value(other_value);
+}
+
+ControlAudioSignalRes_template::ControlAudioSignalRes_template(const OPTIONAL<ControlAudioSignalRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ControlAudioSignalRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ControlAudioSignalRes from an unbound optional field.");
+}
+}
+
+ControlAudioSignalRes_template::ControlAudioSignalRes_template(const ControlAudioSignalRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ControlAudioSignalRes_template::~ControlAudioSignalRes_template()
+{
+clean_up();
+}
+
+ControlAudioSignalRes_template& ControlAudioSignalRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ControlAudioSignalRes_template& ControlAudioSignalRes_template::operator=(const ControlAudioSignalRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ControlAudioSignalRes_template& ControlAudioSignalRes_template::operator=(const OPTIONAL<ControlAudioSignalRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ControlAudioSignalRes&)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 @IsobusVTMessageTypes.ControlAudioSignalRes.");
+}
+return *this;
+}
+
+ControlAudioSignalRes_template& ControlAudioSignalRes_template::operator=(const ControlAudioSignalRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ControlAudioSignalRes_template::match(const ControlAudioSignalRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.errorCodes().is_bound()) return FALSE;
+if(!single_value->field_errorCodes.match(other_value.errorCodes(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ControlAudioSignalRes.");
+}
+return FALSE;
+}
+
+boolean ControlAudioSignalRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_errorCodes.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean ControlAudioSignalRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_errorCodes.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void ControlAudioSignalRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ControlAudioSignalRes ControlAudioSignalRes_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 @IsobusVTMessageTypes.ControlAudioSignalRes.");
+ControlAudioSignalRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_errorCodes.is_bound()) {
+ret_val.errorCodes() = single_value->field_errorCodes.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void ControlAudioSignalRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ControlAudioSignalRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ControlAudioSignalRes_template[list_length];
+}
+
+ControlAudioSignalRes_template& ControlAudioSignalRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ControlAudioSignalRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ControlAudioSignalRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ControlAudioSignalRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ControlAudioSignalRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ControlAudioSignalRes.");
+return single_value->field_vtfunction;
+}
+
+ControlAudioSignalRes__ErrorCodes_template& ControlAudioSignalRes_template::errorCodes()
+{
+set_specific();
+return single_value->field_errorCodes;
+}
+
+const ControlAudioSignalRes__ErrorCodes_template& ControlAudioSignalRes_template::errorCodes() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field errorCodes of a non-specific template of type @IsobusVTMessageTypes.ControlAudioSignalRes.");
+return single_value->field_errorCodes;
+}
+
+OCTETSTRING_template& ControlAudioSignalRes_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const OCTETSTRING_template& ControlAudioSignalRes_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.ControlAudioSignalRes.");
+return single_value->field_reserved3;
+}
+
+OCTETSTRING_template& ControlAudioSignalRes_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& ControlAudioSignalRes_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.ControlAudioSignalRes.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& ControlAudioSignalRes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& ControlAudioSignalRes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.ControlAudioSignalRes.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& ControlAudioSignalRes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& ControlAudioSignalRes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.ControlAudioSignalRes.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& ControlAudioSignalRes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& ControlAudioSignalRes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ControlAudioSignalRes.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& ControlAudioSignalRes_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& ControlAudioSignalRes_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.ControlAudioSignalRes.");
+return single_value->field_reserved8;
+}
+
+int ControlAudioSignalRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ControlAudioSignalRes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ControlAudioSignalRes 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 @IsobusVTMessageTypes.ControlAudioSignalRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ControlAudioSignalRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ControlAudioSignalRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ControlAudioSignalRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ControlAudioSignalRes.");
+  }
+  return 0;
+}
+
+void ControlAudioSignalRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ControlAudioSignalRes_template::log_match(const ControlAudioSignalRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_errorCodes.match(match_value.errorCodes(), legacy)){
+TTCN_Logger::log_logmatch_info(".errorCodes");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 ControlAudioSignalRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_errorCodes.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.ControlAudioSignalRes.");
+}
+}
+
+void ControlAudioSignalRes_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_vtfunction.decode_text(text_buf);
+single_value->field_errorCodes.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 ControlAudioSignalRes_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 @IsobusVTMessageTypes.ControlAudioSignalRes.");
+}
+}
+
+void ControlAudioSignalRes_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: {
+    ControlAudioSignalRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.ControlAudioSignalRes has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ControlAudioSignalRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ControlAudioSignalRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ControlAudioSignalRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ControlAudioSignalRes");
+single_value->field_errorCodes.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ControlAudioSignalRes");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ControlAudioSignalRes");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ControlAudioSignalRes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ControlAudioSignalRes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ControlAudioSignalRes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ControlAudioSignalRes");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ControlAudioSignalRes");
+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 : "@IsobusVTMessageTypes.ControlAudioSignalRes");
+}
+
+boolean ControlAudioSignalRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ControlAudioSignalRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+SetAudioVolumeReq::SetAudioVolumeReq()
+{
+}
+
+SetAudioVolumeReq::SetAudioVolumeReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_volumeInPercent,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_volumeInPercent(par_volumeInPercent),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+SetAudioVolumeReq::SetAudioVolumeReq(const SetAudioVolumeReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.SetAudioVolumeReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.volumeInPercent().is_bound()) field_volumeInPercent = other_value.volumeInPercent();
+else field_volumeInPercent.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void SetAudioVolumeReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_volumeInPercent.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SetAudioVolumeReq::get_descriptor() const { return &SetAudioVolumeReq_descr_; }
+SetAudioVolumeReq& SetAudioVolumeReq::operator=(const SetAudioVolumeReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.SetAudioVolumeReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.volumeInPercent().is_bound()) field_volumeInPercent = other_value.volumeInPercent();
+  else field_volumeInPercent.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean SetAudioVolumeReq::operator==(const SetAudioVolumeReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_volumeInPercent==other_value.field_volumeInPercent
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean SetAudioVolumeReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_volumeInPercent.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean SetAudioVolumeReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_volumeInPercent.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void SetAudioVolumeReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", volumeInPercent := ");
+field_volumeInPercent.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SetAudioVolumeReq::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 @IsobusVTMessageTypes.SetAudioVolumeReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) volumeInPercent().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "volumeInPercent")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          volumeInPercent().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.SetAudioVolumeReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.SetAudioVolumeReq");
+  }
+}
+
+void SetAudioVolumeReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (volumeInPercent().is_bound()) volumeInPercent().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void SetAudioVolumeReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_volumeInPercent.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void SetAudioVolumeReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_volumeInPercent.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void SetAudioVolumeReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void SetAudioVolumeReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int SetAudioVolumeReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, PercentType_descr_.raw->forceomit);
+  decoded_field_length = field_volumeInPercent.RAW_decode(PercentType_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, SetAudioVolumeReq_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(SetAudioVolumeReq_reserved4_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, SetAudioVolumeReq_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(SetAudioVolumeReq_reserved5_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, SetAudioVolumeReq_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(SetAudioVolumeReq_reserved6_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, SetAudioVolumeReq_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(SetAudioVolumeReq_reserved7_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, SetAudioVolumeReq_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(SetAudioVolumeReq_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int SetAudioVolumeReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PercentType_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, SetAudioVolumeReq_reserved4_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, SetAudioVolumeReq_reserved5_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, SetAudioVolumeReq_reserved6_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, SetAudioVolumeReq_reserved7_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, SetAudioVolumeReq_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_volumeInPercent.RAW_encode(PercentType_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved4.RAW_encode(SetAudioVolumeReq_reserved4_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved5.RAW_encode(SetAudioVolumeReq_reserved5_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved6.RAW_encode(SetAudioVolumeReq_reserved6_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved7.RAW_encode(SetAudioVolumeReq_reserved7_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved8.RAW_encode(SetAudioVolumeReq_reserved8_descr_, *myleaf.body.node.nodes[6]);
+  return myleaf.length = encoded_length;
+}
+
+struct SetAudioVolumeReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_volumeInPercent;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void SetAudioVolumeReq_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_vtfunction = ANY_VALUE;
+single_value->field_volumeInPercent = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void SetAudioVolumeReq_template::copy_value(const SetAudioVolumeReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.volumeInPercent().is_bound()) {
+  single_value->field_volumeInPercent = other_value.volumeInPercent();
+} else {
+  single_value->field_volumeInPercent.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SetAudioVolumeReq_template::copy_template(const SetAudioVolumeReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.volumeInPercent().get_selection()) {
+single_value->field_volumeInPercent = other_value.volumeInPercent();
+} else {
+single_value->field_volumeInPercent.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SetAudioVolumeReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.SetAudioVolumeReq.");
+break;
+}
+set_selection(other_value);
+}
+
+SetAudioVolumeReq_template::SetAudioVolumeReq_template()
+{
+}
+
+SetAudioVolumeReq_template::SetAudioVolumeReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SetAudioVolumeReq_template::SetAudioVolumeReq_template(const SetAudioVolumeReq& other_value)
+{
+copy_value(other_value);
+}
+
+SetAudioVolumeReq_template::SetAudioVolumeReq_template(const OPTIONAL<SetAudioVolumeReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SetAudioVolumeReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.SetAudioVolumeReq from an unbound optional field.");
+}
+}
+
+SetAudioVolumeReq_template::SetAudioVolumeReq_template(const SetAudioVolumeReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SetAudioVolumeReq_template::~SetAudioVolumeReq_template()
+{
+clean_up();
+}
+
+SetAudioVolumeReq_template& SetAudioVolumeReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SetAudioVolumeReq_template& SetAudioVolumeReq_template::operator=(const SetAudioVolumeReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SetAudioVolumeReq_template& SetAudioVolumeReq_template::operator=(const OPTIONAL<SetAudioVolumeReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SetAudioVolumeReq&)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 @IsobusVTMessageTypes.SetAudioVolumeReq.");
+}
+return *this;
+}
+
+SetAudioVolumeReq_template& SetAudioVolumeReq_template::operator=(const SetAudioVolumeReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SetAudioVolumeReq_template::match(const SetAudioVolumeReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.volumeInPercent().is_bound()) return FALSE;
+if(!single_value->field_volumeInPercent.match(other_value.volumeInPercent(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.SetAudioVolumeReq.");
+}
+return FALSE;
+}
+
+boolean SetAudioVolumeReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_volumeInPercent.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean SetAudioVolumeReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_volumeInPercent.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void SetAudioVolumeReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SetAudioVolumeReq SetAudioVolumeReq_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 @IsobusVTMessageTypes.SetAudioVolumeReq.");
+SetAudioVolumeReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_volumeInPercent.is_bound()) {
+ret_val.volumeInPercent() = single_value->field_volumeInPercent.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void SetAudioVolumeReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.SetAudioVolumeReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SetAudioVolumeReq_template[list_length];
+}
+
+SetAudioVolumeReq_template& SetAudioVolumeReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.SetAudioVolumeReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.SetAudioVolumeReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& SetAudioVolumeReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& SetAudioVolumeReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.SetAudioVolumeReq.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& SetAudioVolumeReq_template::volumeInPercent()
+{
+set_specific();
+return single_value->field_volumeInPercent;
+}
+
+const INTEGER_template& SetAudioVolumeReq_template::volumeInPercent() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field volumeInPercent of a non-specific template of type @IsobusVTMessageTypes.SetAudioVolumeReq.");
+return single_value->field_volumeInPercent;
+}
+
+OCTETSTRING_template& SetAudioVolumeReq_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& SetAudioVolumeReq_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.SetAudioVolumeReq.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& SetAudioVolumeReq_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& SetAudioVolumeReq_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.SetAudioVolumeReq.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& SetAudioVolumeReq_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& SetAudioVolumeReq_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.SetAudioVolumeReq.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& SetAudioVolumeReq_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& SetAudioVolumeReq_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.SetAudioVolumeReq.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& SetAudioVolumeReq_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& SetAudioVolumeReq_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.SetAudioVolumeReq.");
+return single_value->field_reserved8;
+}
+
+int SetAudioVolumeReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SetAudioVolumeReq 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 @IsobusVTMessageTypes.SetAudioVolumeReq 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 @IsobusVTMessageTypes.SetAudioVolumeReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SetAudioVolumeReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SetAudioVolumeReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SetAudioVolumeReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.SetAudioVolumeReq.");
+  }
+  return 0;
+}
+
+void SetAudioVolumeReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", volumeInPercent := ");
+single_value->field_volumeInPercent.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SetAudioVolumeReq_template::log_match(const SetAudioVolumeReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_volumeInPercent.match(match_value.volumeInPercent(), legacy)){
+TTCN_Logger::log_logmatch_info(".volumeInPercent");
+single_value->field_volumeInPercent.log_match(match_value.volumeInPercent(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", volumeInPercent := ");
+single_value->field_volumeInPercent.log_match(match_value.volumeInPercent(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 SetAudioVolumeReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_volumeInPercent.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.SetAudioVolumeReq.");
+}
+}
+
+void SetAudioVolumeReq_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_vtfunction.decode_text(text_buf);
+single_value->field_volumeInPercent.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 SetAudioVolumeReq_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 @IsobusVTMessageTypes.SetAudioVolumeReq.");
+}
+}
+
+void SetAudioVolumeReq_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: {
+    SetAudioVolumeReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.SetAudioVolumeReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) volumeInPercent().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "volumeInPercent")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          volumeInPercent().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.SetAudioVolumeReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.SetAudioVolumeReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SetAudioVolumeReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SetAudioVolumeReq");
+single_value->field_volumeInPercent.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SetAudioVolumeReq");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SetAudioVolumeReq");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SetAudioVolumeReq");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SetAudioVolumeReq");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SetAudioVolumeReq");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SetAudioVolumeReq");
+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 : "@IsobusVTMessageTypes.SetAudioVolumeReq");
+}
+
+boolean SetAudioVolumeReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SetAudioVolumeReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+SetAudioVolumeErrorCodes::SetAudioVolumeErrorCodes()
+{
+}
+
+SetAudioVolumeErrorCodes::SetAudioVolumeErrorCodes(const BOOLEAN& par_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting,
+    const BOOLEAN& par_CommandIsNotSupported,
+    const BOOLEAN& par_reserved2,
+    const BOOLEAN& par_reserved3,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7)
+  :   field_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting(par_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting),
+  field_CommandIsNotSupported(par_CommandIsNotSupported),
+  field_reserved2(par_reserved2),
+  field_reserved3(par_reserved3),
+  field_anyOtherError(par_anyOtherError),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7)
+{
+}
+
+SetAudioVolumeErrorCodes::SetAudioVolumeErrorCodes(const SetAudioVolumeErrorCodes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.SetAudioVolumeErrorCodes.");
+if (other_value.AudioDeviceIsBusySubsequentCommandsUseTheNewSetting().is_bound()) field_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting = other_value.AudioDeviceIsBusySubsequentCommandsUseTheNewSetting();
+else field_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting.clean_up();
+if (other_value.CommandIsNotSupported().is_bound()) field_CommandIsNotSupported = other_value.CommandIsNotSupported();
+else field_CommandIsNotSupported.clean_up();
+if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+else field_reserved2.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+else field_anyOtherError.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+}
+
+void SetAudioVolumeErrorCodes::clean_up()
+{
+field_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting.clean_up();
+field_CommandIsNotSupported.clean_up();
+field_reserved2.clean_up();
+field_reserved3.clean_up();
+field_anyOtherError.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SetAudioVolumeErrorCodes::get_descriptor() const { return &SetAudioVolumeErrorCodes_descr_; }
+SetAudioVolumeErrorCodes& SetAudioVolumeErrorCodes::operator=(const SetAudioVolumeErrorCodes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.SetAudioVolumeErrorCodes.");
+  if (other_value.AudioDeviceIsBusySubsequentCommandsUseTheNewSetting().is_bound()) field_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting = other_value.AudioDeviceIsBusySubsequentCommandsUseTheNewSetting();
+  else field_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting.clean_up();
+  if (other_value.CommandIsNotSupported().is_bound()) field_CommandIsNotSupported = other_value.CommandIsNotSupported();
+  else field_CommandIsNotSupported.clean_up();
+  if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+  else field_reserved2.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+  else field_anyOtherError.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+}
+return *this;
+}
+
+boolean SetAudioVolumeErrorCodes::operator==(const SetAudioVolumeErrorCodes& other_value) const
+{
+return field_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting==other_value.field_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting
+  && field_CommandIsNotSupported==other_value.field_CommandIsNotSupported
+  && field_reserved2==other_value.field_reserved2
+  && field_reserved3==other_value.field_reserved3
+  && field_anyOtherError==other_value.field_anyOtherError
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7;
+}
+
+boolean SetAudioVolumeErrorCodes::is_bound() const
+{
+return (field_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting.is_bound())
+  || (field_CommandIsNotSupported.is_bound())
+  || (field_reserved2.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_anyOtherError.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound());
+}
+boolean SetAudioVolumeErrorCodes::is_value() const
+{
+return field_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting.is_value()
+  && field_CommandIsNotSupported.is_value()
+  && field_reserved2.is_value()
+  && field_reserved3.is_value()
+  && field_anyOtherError.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value();
+}
+void SetAudioVolumeErrorCodes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ AudioDeviceIsBusySubsequentCommandsUseTheNewSetting := ");
+field_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting.log();
+TTCN_Logger::log_event_str(", CommandIsNotSupported := ");
+field_CommandIsNotSupported.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SetAudioVolumeErrorCodes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.SetAudioVolumeErrorCodes has 8 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) AudioDeviceIsBusySubsequentCommandsUseTheNewSetting().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) CommandIsNotSupported().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "AudioDeviceIsBusySubsequentCommandsUseTheNewSetting")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          AudioDeviceIsBusySubsequentCommandsUseTheNewSetting().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(), "CommandIsNotSupported")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          CommandIsNotSupported().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.SetAudioVolumeErrorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.SetAudioVolumeErrorCodes");
+  }
+}
+
+void SetAudioVolumeErrorCodes::set_implicit_omit()
+{
+if (AudioDeviceIsBusySubsequentCommandsUseTheNewSetting().is_bound()) AudioDeviceIsBusySubsequentCommandsUseTheNewSetting().set_implicit_omit();
+if (CommandIsNotSupported().is_bound()) CommandIsNotSupported().set_implicit_omit();
+if (reserved2().is_bound()) reserved2().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (anyOtherError().is_bound()) anyOtherError().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+}
+
+void SetAudioVolumeErrorCodes::encode_text(Text_Buf& text_buf) const
+{
+field_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting.encode_text(text_buf);
+field_CommandIsNotSupported.encode_text(text_buf);
+field_reserved2.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_anyOtherError.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+}
+
+void SetAudioVolumeErrorCodes::decode_text(Text_Buf& text_buf)
+{
+field_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting.decode_text(text_buf);
+field_CommandIsNotSupported.decode_text(text_buf);
+field_reserved2.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_anyOtherError.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+}
+
+void SetAudioVolumeErrorCodes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void SetAudioVolumeErrorCodes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int SetAudioVolumeErrorCodes::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_CommandIsNotSupported.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved2.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_anyOtherError.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int SetAudioVolumeErrorCodes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_CommandIsNotSupported.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved2.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved3.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_anyOtherError.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved5.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved6.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved7.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct SetAudioVolumeErrorCodes_template::single_value_struct {
+BOOLEAN_template field_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting;
+BOOLEAN_template field_CommandIsNotSupported;
+BOOLEAN_template field_reserved2;
+BOOLEAN_template field_reserved3;
+BOOLEAN_template field_anyOtherError;
+BOOLEAN_template field_reserved5;
+BOOLEAN_template field_reserved6;
+BOOLEAN_template field_reserved7;
+};
+
+void SetAudioVolumeErrorCodes_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_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting = ANY_VALUE;
+single_value->field_CommandIsNotSupported = ANY_VALUE;
+single_value->field_reserved2 = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_anyOtherError = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+}
+}
+}
+
+void SetAudioVolumeErrorCodes_template::copy_value(const SetAudioVolumeErrorCodes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.AudioDeviceIsBusySubsequentCommandsUseTheNewSetting().is_bound()) {
+  single_value->field_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting = other_value.AudioDeviceIsBusySubsequentCommandsUseTheNewSetting();
+} else {
+  single_value->field_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting.clean_up();
+}
+if (other_value.CommandIsNotSupported().is_bound()) {
+  single_value->field_CommandIsNotSupported = other_value.CommandIsNotSupported();
+} else {
+  single_value->field_CommandIsNotSupported.clean_up();
+}
+if (other_value.reserved2().is_bound()) {
+  single_value->field_reserved2 = other_value.reserved2();
+} else {
+  single_value->field_reserved2.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.anyOtherError().is_bound()) {
+  single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+  single_value->field_anyOtherError.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SetAudioVolumeErrorCodes_template::copy_template(const SetAudioVolumeErrorCodes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.AudioDeviceIsBusySubsequentCommandsUseTheNewSetting().get_selection()) {
+single_value->field_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting = other_value.AudioDeviceIsBusySubsequentCommandsUseTheNewSetting();
+} else {
+single_value->field_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.CommandIsNotSupported().get_selection()) {
+single_value->field_CommandIsNotSupported = other_value.CommandIsNotSupported();
+} else {
+single_value->field_CommandIsNotSupported.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved2().get_selection()) {
+single_value->field_reserved2 = other_value.reserved2();
+} else {
+single_value->field_reserved2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.anyOtherError().get_selection()) {
+single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+single_value->field_anyOtherError.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SetAudioVolumeErrorCodes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.SetAudioVolumeErrorCodes.");
+break;
+}
+set_selection(other_value);
+}
+
+SetAudioVolumeErrorCodes_template::SetAudioVolumeErrorCodes_template()
+{
+}
+
+SetAudioVolumeErrorCodes_template::SetAudioVolumeErrorCodes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SetAudioVolumeErrorCodes_template::SetAudioVolumeErrorCodes_template(const SetAudioVolumeErrorCodes& other_value)
+{
+copy_value(other_value);
+}
+
+SetAudioVolumeErrorCodes_template::SetAudioVolumeErrorCodes_template(const OPTIONAL<SetAudioVolumeErrorCodes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SetAudioVolumeErrorCodes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.SetAudioVolumeErrorCodes from an unbound optional field.");
+}
+}
+
+SetAudioVolumeErrorCodes_template::SetAudioVolumeErrorCodes_template(const SetAudioVolumeErrorCodes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SetAudioVolumeErrorCodes_template::~SetAudioVolumeErrorCodes_template()
+{
+clean_up();
+}
+
+SetAudioVolumeErrorCodes_template& SetAudioVolumeErrorCodes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SetAudioVolumeErrorCodes_template& SetAudioVolumeErrorCodes_template::operator=(const SetAudioVolumeErrorCodes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SetAudioVolumeErrorCodes_template& SetAudioVolumeErrorCodes_template::operator=(const OPTIONAL<SetAudioVolumeErrorCodes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SetAudioVolumeErrorCodes&)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 @IsobusVTMessageTypes.SetAudioVolumeErrorCodes.");
+}
+return *this;
+}
+
+SetAudioVolumeErrorCodes_template& SetAudioVolumeErrorCodes_template::operator=(const SetAudioVolumeErrorCodes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SetAudioVolumeErrorCodes_template::match(const SetAudioVolumeErrorCodes& 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.AudioDeviceIsBusySubsequentCommandsUseTheNewSetting().is_bound()) return FALSE;
+if(!single_value->field_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting.match(other_value.AudioDeviceIsBusySubsequentCommandsUseTheNewSetting(), legacy))return FALSE;
+if(!other_value.CommandIsNotSupported().is_bound()) return FALSE;
+if(!single_value->field_CommandIsNotSupported.match(other_value.CommandIsNotSupported(), legacy))return FALSE;
+if(!other_value.reserved2().is_bound()) return FALSE;
+if(!single_value->field_reserved2.match(other_value.reserved2(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.anyOtherError().is_bound()) return FALSE;
+if(!single_value->field_anyOtherError.match(other_value.anyOtherError(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.SetAudioVolumeErrorCodes.");
+}
+return FALSE;
+}
+
+boolean SetAudioVolumeErrorCodes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting.is_bound()
+
+ ||single_value->field_CommandIsNotSupported.is_bound()
+
+ ||single_value->field_reserved2.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_anyOtherError.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+;
+}
+
+boolean SetAudioVolumeErrorCodes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting.is_value()
+ &&single_value->field_CommandIsNotSupported.is_value()
+ &&single_value->field_reserved2.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_anyOtherError.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value();
+}
+
+void SetAudioVolumeErrorCodes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SetAudioVolumeErrorCodes SetAudioVolumeErrorCodes_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 @IsobusVTMessageTypes.SetAudioVolumeErrorCodes.");
+SetAudioVolumeErrorCodes ret_val;
+if (single_value->field_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting.is_bound()) {
+ret_val.AudioDeviceIsBusySubsequentCommandsUseTheNewSetting() = single_value->field_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting.valueof();
+}
+if (single_value->field_CommandIsNotSupported.is_bound()) {
+ret_val.CommandIsNotSupported() = single_value->field_CommandIsNotSupported.valueof();
+}
+if (single_value->field_reserved2.is_bound()) {
+ret_val.reserved2() = single_value->field_reserved2.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_anyOtherError.is_bound()) {
+ret_val.anyOtherError() = single_value->field_anyOtherError.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+return ret_val;
+}
+
+void SetAudioVolumeErrorCodes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.SetAudioVolumeErrorCodes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SetAudioVolumeErrorCodes_template[list_length];
+}
+
+SetAudioVolumeErrorCodes_template& SetAudioVolumeErrorCodes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.SetAudioVolumeErrorCodes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.SetAudioVolumeErrorCodes.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& SetAudioVolumeErrorCodes_template::AudioDeviceIsBusySubsequentCommandsUseTheNewSetting()
+{
+set_specific();
+return single_value->field_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting;
+}
+
+const BOOLEAN_template& SetAudioVolumeErrorCodes_template::AudioDeviceIsBusySubsequentCommandsUseTheNewSetting() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field AudioDeviceIsBusySubsequentCommandsUseTheNewSetting of a non-specific template of type @IsobusVTMessageTypes.SetAudioVolumeErrorCodes.");
+return single_value->field_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting;
+}
+
+BOOLEAN_template& SetAudioVolumeErrorCodes_template::CommandIsNotSupported()
+{
+set_specific();
+return single_value->field_CommandIsNotSupported;
+}
+
+const BOOLEAN_template& SetAudioVolumeErrorCodes_template::CommandIsNotSupported() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field CommandIsNotSupported of a non-specific template of type @IsobusVTMessageTypes.SetAudioVolumeErrorCodes.");
+return single_value->field_CommandIsNotSupported;
+}
+
+BOOLEAN_template& SetAudioVolumeErrorCodes_template::reserved2()
+{
+set_specific();
+return single_value->field_reserved2;
+}
+
+const BOOLEAN_template& SetAudioVolumeErrorCodes_template::reserved2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved2 of a non-specific template of type @IsobusVTMessageTypes.SetAudioVolumeErrorCodes.");
+return single_value->field_reserved2;
+}
+
+BOOLEAN_template& SetAudioVolumeErrorCodes_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const BOOLEAN_template& SetAudioVolumeErrorCodes_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.SetAudioVolumeErrorCodes.");
+return single_value->field_reserved3;
+}
+
+BOOLEAN_template& SetAudioVolumeErrorCodes_template::anyOtherError()
+{
+set_specific();
+return single_value->field_anyOtherError;
+}
+
+const BOOLEAN_template& SetAudioVolumeErrorCodes_template::anyOtherError() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field anyOtherError of a non-specific template of type @IsobusVTMessageTypes.SetAudioVolumeErrorCodes.");
+return single_value->field_anyOtherError;
+}
+
+BOOLEAN_template& SetAudioVolumeErrorCodes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const BOOLEAN_template& SetAudioVolumeErrorCodes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.SetAudioVolumeErrorCodes.");
+return single_value->field_reserved5;
+}
+
+BOOLEAN_template& SetAudioVolumeErrorCodes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const BOOLEAN_template& SetAudioVolumeErrorCodes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.SetAudioVolumeErrorCodes.");
+return single_value->field_reserved6;
+}
+
+BOOLEAN_template& SetAudioVolumeErrorCodes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const BOOLEAN_template& SetAudioVolumeErrorCodes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.SetAudioVolumeErrorCodes.");
+return single_value->field_reserved7;
+}
+
+int SetAudioVolumeErrorCodes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SetAudioVolumeErrorCodes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SetAudioVolumeErrorCodes 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 @IsobusVTMessageTypes.SetAudioVolumeErrorCodes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SetAudioVolumeErrorCodes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SetAudioVolumeErrorCodes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SetAudioVolumeErrorCodes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.SetAudioVolumeErrorCodes.");
+  }
+  return 0;
+}
+
+void SetAudioVolumeErrorCodes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ AudioDeviceIsBusySubsequentCommandsUseTheNewSetting := ");
+single_value->field_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting.log();
+TTCN_Logger::log_event_str(", CommandIsNotSupported := ");
+single_value->field_CommandIsNotSupported.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SetAudioVolumeErrorCodes_template::log_match(const SetAudioVolumeErrorCodes& 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_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting.match(match_value.AudioDeviceIsBusySubsequentCommandsUseTheNewSetting(), legacy)){
+TTCN_Logger::log_logmatch_info(".AudioDeviceIsBusySubsequentCommandsUseTheNewSetting");
+single_value->field_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting.log_match(match_value.AudioDeviceIsBusySubsequentCommandsUseTheNewSetting(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_CommandIsNotSupported.match(match_value.CommandIsNotSupported(), legacy)){
+TTCN_Logger::log_logmatch_info(".CommandIsNotSupported");
+single_value->field_CommandIsNotSupported.log_match(match_value.CommandIsNotSupported(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved2.match(match_value.reserved2(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved2");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_anyOtherError.match(match_value.anyOtherError(), legacy)){
+TTCN_Logger::log_logmatch_info(".anyOtherError");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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("{ AudioDeviceIsBusySubsequentCommandsUseTheNewSetting := ");
+single_value->field_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting.log_match(match_value.AudioDeviceIsBusySubsequentCommandsUseTheNewSetting(), legacy);
+TTCN_Logger::log_event_str(", CommandIsNotSupported := ");
+single_value->field_CommandIsNotSupported.log_match(match_value.CommandIsNotSupported(), legacy);
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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 SetAudioVolumeErrorCodes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting.encode_text(text_buf);
+single_value->field_CommandIsNotSupported.encode_text(text_buf);
+single_value->field_reserved2.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_anyOtherError.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.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 @IsobusVTMessageTypes.SetAudioVolumeErrorCodes.");
+}
+}
+
+void SetAudioVolumeErrorCodes_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_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting.decode_text(text_buf);
+single_value->field_CommandIsNotSupported.decode_text(text_buf);
+single_value->field_reserved2.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_anyOtherError.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.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 SetAudioVolumeErrorCodes_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 @IsobusVTMessageTypes.SetAudioVolumeErrorCodes.");
+}
+}
+
+void SetAudioVolumeErrorCodes_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: {
+    SetAudioVolumeErrorCodes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.SetAudioVolumeErrorCodes has 8 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) AudioDeviceIsBusySubsequentCommandsUseTheNewSetting().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) CommandIsNotSupported().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "AudioDeviceIsBusySubsequentCommandsUseTheNewSetting")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          AudioDeviceIsBusySubsequentCommandsUseTheNewSetting().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(), "CommandIsNotSupported")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          CommandIsNotSupported().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.SetAudioVolumeErrorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.SetAudioVolumeErrorCodes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SetAudioVolumeErrorCodes_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_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SetAudioVolumeErrorCodes");
+single_value->field_CommandIsNotSupported.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SetAudioVolumeErrorCodes");
+single_value->field_reserved2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SetAudioVolumeErrorCodes");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SetAudioVolumeErrorCodes");
+single_value->field_anyOtherError.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SetAudioVolumeErrorCodes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SetAudioVolumeErrorCodes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SetAudioVolumeErrorCodes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SetAudioVolumeErrorCodes");
+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 : "@IsobusVTMessageTypes.SetAudioVolumeErrorCodes");
+}
+
+boolean SetAudioVolumeErrorCodes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SetAudioVolumeErrorCodes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+SetAudioVolumeRes::SetAudioVolumeRes()
+{
+}
+
+SetAudioVolumeRes::SetAudioVolumeRes(const INTEGER& par_vtfunction,
+    const SetAudioVolumeErrorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_errorCodes(par_errorCodes),
+  field_reserved3(par_reserved3),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+SetAudioVolumeRes::SetAudioVolumeRes(const SetAudioVolumeRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.SetAudioVolumeRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+else field_errorCodes.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void SetAudioVolumeRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_errorCodes.clean_up();
+field_reserved3.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SetAudioVolumeRes::get_descriptor() const { return &SetAudioVolumeRes_descr_; }
+SetAudioVolumeRes& SetAudioVolumeRes::operator=(const SetAudioVolumeRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.SetAudioVolumeRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+  else field_errorCodes.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean SetAudioVolumeRes::operator==(const SetAudioVolumeRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_errorCodes==other_value.field_errorCodes
+  && field_reserved3==other_value.field_reserved3
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean SetAudioVolumeRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_errorCodes.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean SetAudioVolumeRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_errorCodes.is_value()
+  && field_reserved3.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void SetAudioVolumeRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SetAudioVolumeRes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.SetAudioVolumeRes has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.SetAudioVolumeRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.SetAudioVolumeRes");
+  }
+}
+
+void SetAudioVolumeRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (errorCodes().is_bound()) errorCodes().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void SetAudioVolumeRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_errorCodes.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void SetAudioVolumeRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_errorCodes.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void SetAudioVolumeRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void SetAudioVolumeRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int SetAudioVolumeRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, SetAudioVolumeErrorCodes_descr_.raw->forceomit);
+  decoded_field_length = field_errorCodes.RAW_decode(SetAudioVolumeErrorCodes_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, SetAudioVolumeRes_reserved3_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(SetAudioVolumeRes_reserved3_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, SetAudioVolumeRes_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(SetAudioVolumeRes_reserved4_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, SetAudioVolumeRes_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(SetAudioVolumeRes_reserved5_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, SetAudioVolumeRes_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(SetAudioVolumeRes_reserved6_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, SetAudioVolumeRes_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(SetAudioVolumeRes_reserved7_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, SetAudioVolumeRes_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(SetAudioVolumeRes_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int SetAudioVolumeRes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, SetAudioVolumeErrorCodes_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, SetAudioVolumeRes_reserved3_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, SetAudioVolumeRes_reserved4_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, SetAudioVolumeRes_reserved5_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, SetAudioVolumeRes_reserved6_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, SetAudioVolumeRes_reserved7_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, SetAudioVolumeRes_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_errorCodes.RAW_encode(SetAudioVolumeErrorCodes_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved3.RAW_encode(SetAudioVolumeRes_reserved3_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved4.RAW_encode(SetAudioVolumeRes_reserved4_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved5.RAW_encode(SetAudioVolumeRes_reserved5_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved6.RAW_encode(SetAudioVolumeRes_reserved6_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved7.RAW_encode(SetAudioVolumeRes_reserved7_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved8.RAW_encode(SetAudioVolumeRes_reserved8_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct SetAudioVolumeRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+SetAudioVolumeErrorCodes_template field_errorCodes;
+OCTETSTRING_template field_reserved3;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void SetAudioVolumeRes_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_vtfunction = ANY_VALUE;
+single_value->field_errorCodes = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void SetAudioVolumeRes_template::copy_value(const SetAudioVolumeRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.errorCodes().is_bound()) {
+  single_value->field_errorCodes = other_value.errorCodes();
+} else {
+  single_value->field_errorCodes.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SetAudioVolumeRes_template::copy_template(const SetAudioVolumeRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.errorCodes().get_selection()) {
+single_value->field_errorCodes = other_value.errorCodes();
+} else {
+single_value->field_errorCodes.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SetAudioVolumeRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.SetAudioVolumeRes.");
+break;
+}
+set_selection(other_value);
+}
+
+SetAudioVolumeRes_template::SetAudioVolumeRes_template()
+{
+}
+
+SetAudioVolumeRes_template::SetAudioVolumeRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SetAudioVolumeRes_template::SetAudioVolumeRes_template(const SetAudioVolumeRes& other_value)
+{
+copy_value(other_value);
+}
+
+SetAudioVolumeRes_template::SetAudioVolumeRes_template(const OPTIONAL<SetAudioVolumeRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SetAudioVolumeRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.SetAudioVolumeRes from an unbound optional field.");
+}
+}
+
+SetAudioVolumeRes_template::SetAudioVolumeRes_template(const SetAudioVolumeRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SetAudioVolumeRes_template::~SetAudioVolumeRes_template()
+{
+clean_up();
+}
+
+SetAudioVolumeRes_template& SetAudioVolumeRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SetAudioVolumeRes_template& SetAudioVolumeRes_template::operator=(const SetAudioVolumeRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SetAudioVolumeRes_template& SetAudioVolumeRes_template::operator=(const OPTIONAL<SetAudioVolumeRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SetAudioVolumeRes&)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 @IsobusVTMessageTypes.SetAudioVolumeRes.");
+}
+return *this;
+}
+
+SetAudioVolumeRes_template& SetAudioVolumeRes_template::operator=(const SetAudioVolumeRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SetAudioVolumeRes_template::match(const SetAudioVolumeRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.errorCodes().is_bound()) return FALSE;
+if(!single_value->field_errorCodes.match(other_value.errorCodes(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.SetAudioVolumeRes.");
+}
+return FALSE;
+}
+
+boolean SetAudioVolumeRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_errorCodes.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean SetAudioVolumeRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_errorCodes.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void SetAudioVolumeRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SetAudioVolumeRes SetAudioVolumeRes_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 @IsobusVTMessageTypes.SetAudioVolumeRes.");
+SetAudioVolumeRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_errorCodes.is_bound()) {
+ret_val.errorCodes() = single_value->field_errorCodes.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void SetAudioVolumeRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.SetAudioVolumeRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SetAudioVolumeRes_template[list_length];
+}
+
+SetAudioVolumeRes_template& SetAudioVolumeRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.SetAudioVolumeRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.SetAudioVolumeRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& SetAudioVolumeRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& SetAudioVolumeRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.SetAudioVolumeRes.");
+return single_value->field_vtfunction;
+}
+
+SetAudioVolumeErrorCodes_template& SetAudioVolumeRes_template::errorCodes()
+{
+set_specific();
+return single_value->field_errorCodes;
+}
+
+const SetAudioVolumeErrorCodes_template& SetAudioVolumeRes_template::errorCodes() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field errorCodes of a non-specific template of type @IsobusVTMessageTypes.SetAudioVolumeRes.");
+return single_value->field_errorCodes;
+}
+
+OCTETSTRING_template& SetAudioVolumeRes_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const OCTETSTRING_template& SetAudioVolumeRes_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.SetAudioVolumeRes.");
+return single_value->field_reserved3;
+}
+
+OCTETSTRING_template& SetAudioVolumeRes_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& SetAudioVolumeRes_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.SetAudioVolumeRes.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& SetAudioVolumeRes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& SetAudioVolumeRes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.SetAudioVolumeRes.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& SetAudioVolumeRes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& SetAudioVolumeRes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.SetAudioVolumeRes.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& SetAudioVolumeRes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& SetAudioVolumeRes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.SetAudioVolumeRes.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& SetAudioVolumeRes_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& SetAudioVolumeRes_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.SetAudioVolumeRes.");
+return single_value->field_reserved8;
+}
+
+int SetAudioVolumeRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SetAudioVolumeRes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SetAudioVolumeRes 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 @IsobusVTMessageTypes.SetAudioVolumeRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SetAudioVolumeRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SetAudioVolumeRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SetAudioVolumeRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.SetAudioVolumeRes.");
+  }
+  return 0;
+}
+
+void SetAudioVolumeRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SetAudioVolumeRes_template::log_match(const SetAudioVolumeRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_errorCodes.match(match_value.errorCodes(), legacy)){
+TTCN_Logger::log_logmatch_info(".errorCodes");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 SetAudioVolumeRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_errorCodes.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.SetAudioVolumeRes.");
+}
+}
+
+void SetAudioVolumeRes_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_vtfunction.decode_text(text_buf);
+single_value->field_errorCodes.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 SetAudioVolumeRes_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 @IsobusVTMessageTypes.SetAudioVolumeRes.");
+}
+}
+
+void SetAudioVolumeRes_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: {
+    SetAudioVolumeRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.SetAudioVolumeRes has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.SetAudioVolumeRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.SetAudioVolumeRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SetAudioVolumeRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SetAudioVolumeRes");
+single_value->field_errorCodes.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SetAudioVolumeRes");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SetAudioVolumeRes");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SetAudioVolumeRes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SetAudioVolumeRes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SetAudioVolumeRes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SetAudioVolumeRes");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SetAudioVolumeRes");
+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 : "@IsobusVTMessageTypes.SetAudioVolumeRes");
+}
+
+boolean SetAudioVolumeRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SetAudioVolumeRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangeChildLocationReq::ChangeChildLocationReq()
+{
+}
+
+ChangeChildLocationReq::ChangeChildLocationReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_parentObjectID,
+    const INTEGER& par_objectIDofObjectToMove,
+    const INTEGER& par_relativeChangeInXposition,
+    const INTEGER& par_relativeChangeInYposition,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_parentObjectID(par_parentObjectID),
+  field_objectIDofObjectToMove(par_objectIDofObjectToMove),
+  field_relativeChangeInXposition(par_relativeChangeInXposition),
+  field_relativeChangeInYposition(par_relativeChangeInYposition),
+  field_reserved8(par_reserved8)
+{
+}
+
+ChangeChildLocationReq::ChangeChildLocationReq(const ChangeChildLocationReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangeChildLocationReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.parentObjectID().is_bound()) field_parentObjectID = other_value.parentObjectID();
+else field_parentObjectID.clean_up();
+if (other_value.objectIDofObjectToMove().is_bound()) field_objectIDofObjectToMove = other_value.objectIDofObjectToMove();
+else field_objectIDofObjectToMove.clean_up();
+if (other_value.relativeChangeInXposition().is_bound()) field_relativeChangeInXposition = other_value.relativeChangeInXposition();
+else field_relativeChangeInXposition.clean_up();
+if (other_value.relativeChangeInYposition().is_bound()) field_relativeChangeInYposition = other_value.relativeChangeInYposition();
+else field_relativeChangeInYposition.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void ChangeChildLocationReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_parentObjectID.clean_up();
+field_objectIDofObjectToMove.clean_up();
+field_relativeChangeInXposition.clean_up();
+field_relativeChangeInYposition.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangeChildLocationReq::get_descriptor() const { return &ChangeChildLocationReq_descr_; }
+ChangeChildLocationReq& ChangeChildLocationReq::operator=(const ChangeChildLocationReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangeChildLocationReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.parentObjectID().is_bound()) field_parentObjectID = other_value.parentObjectID();
+  else field_parentObjectID.clean_up();
+  if (other_value.objectIDofObjectToMove().is_bound()) field_objectIDofObjectToMove = other_value.objectIDofObjectToMove();
+  else field_objectIDofObjectToMove.clean_up();
+  if (other_value.relativeChangeInXposition().is_bound()) field_relativeChangeInXposition = other_value.relativeChangeInXposition();
+  else field_relativeChangeInXposition.clean_up();
+  if (other_value.relativeChangeInYposition().is_bound()) field_relativeChangeInYposition = other_value.relativeChangeInYposition();
+  else field_relativeChangeInYposition.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean ChangeChildLocationReq::operator==(const ChangeChildLocationReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_parentObjectID==other_value.field_parentObjectID
+  && field_objectIDofObjectToMove==other_value.field_objectIDofObjectToMove
+  && field_relativeChangeInXposition==other_value.field_relativeChangeInXposition
+  && field_relativeChangeInYposition==other_value.field_relativeChangeInYposition
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean ChangeChildLocationReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_parentObjectID.is_bound())
+  || (field_objectIDofObjectToMove.is_bound())
+  || (field_relativeChangeInXposition.is_bound())
+  || (field_relativeChangeInYposition.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean ChangeChildLocationReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_parentObjectID.is_value()
+  && field_objectIDofObjectToMove.is_value()
+  && field_relativeChangeInXposition.is_value()
+  && field_relativeChangeInYposition.is_value()
+  && field_reserved8.is_value();
+}
+void ChangeChildLocationReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", parentObjectID := ");
+field_parentObjectID.log();
+TTCN_Logger::log_event_str(", objectIDofObjectToMove := ");
+field_objectIDofObjectToMove.log();
+TTCN_Logger::log_event_str(", relativeChangeInXposition := ");
+field_relativeChangeInXposition.log();
+TTCN_Logger::log_event_str(", relativeChangeInYposition := ");
+field_relativeChangeInYposition.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangeChildLocationReq::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 @IsobusVTMessageTypes.ChangeChildLocationReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) parentObjectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) objectIDofObjectToMove().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) relativeChangeInXposition().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) relativeChangeInYposition().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "parentObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          parentObjectID().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(), "objectIDofObjectToMove")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofObjectToMove().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(), "relativeChangeInXposition")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          relativeChangeInXposition().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(), "relativeChangeInYposition")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          relativeChangeInYposition().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangeChildLocationReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangeChildLocationReq");
+  }
+}
+
+void ChangeChildLocationReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (parentObjectID().is_bound()) parentObjectID().set_implicit_omit();
+if (objectIDofObjectToMove().is_bound()) objectIDofObjectToMove().set_implicit_omit();
+if (relativeChangeInXposition().is_bound()) relativeChangeInXposition().set_implicit_omit();
+if (relativeChangeInYposition().is_bound()) relativeChangeInYposition().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void ChangeChildLocationReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_parentObjectID.encode_text(text_buf);
+field_objectIDofObjectToMove.encode_text(text_buf);
+field_relativeChangeInXposition.encode_text(text_buf);
+field_relativeChangeInYposition.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void ChangeChildLocationReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_parentObjectID.decode_text(text_buf);
+field_objectIDofObjectToMove.decode_text(text_buf);
+field_relativeChangeInXposition.decode_text(text_buf);
+field_relativeChangeInYposition.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void ChangeChildLocationReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangeChildLocationReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangeChildLocationReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_parentObjectID.RAW_decode(ValidObjectID_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectIDofObjectToMove.RAW_decode(ValidObjectID_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, DeltaPositionType_descr_.raw->forceomit);
+  decoded_field_length = field_relativeChangeInXposition.RAW_decode(DeltaPositionType_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, DeltaPositionType_descr_.raw->forceomit);
+  decoded_field_length = field_relativeChangeInYposition.RAW_decode(DeltaPositionType_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, ChangeChildLocationReq_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(ChangeChildLocationReq_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ChangeChildLocationReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, DeltaPositionType_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, DeltaPositionType_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, ChangeChildLocationReq_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_parentObjectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_objectIDofObjectToMove.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_relativeChangeInXposition.RAW_encode(DeltaPositionType_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_relativeChangeInYposition.RAW_encode(DeltaPositionType_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved8.RAW_encode(ChangeChildLocationReq_reserved8_descr_, *myleaf.body.node.nodes[5]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangeChildLocationReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_parentObjectID;
+INTEGER_template field_objectIDofObjectToMove;
+INTEGER_template field_relativeChangeInXposition;
+INTEGER_template field_relativeChangeInYposition;
+OCTETSTRING_template field_reserved8;
+};
+
+void ChangeChildLocationReq_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_vtfunction = ANY_VALUE;
+single_value->field_parentObjectID = ANY_VALUE;
+single_value->field_objectIDofObjectToMove = ANY_VALUE;
+single_value->field_relativeChangeInXposition = ANY_VALUE;
+single_value->field_relativeChangeInYposition = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void ChangeChildLocationReq_template::copy_value(const ChangeChildLocationReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.parentObjectID().is_bound()) {
+  single_value->field_parentObjectID = other_value.parentObjectID();
+} else {
+  single_value->field_parentObjectID.clean_up();
+}
+if (other_value.objectIDofObjectToMove().is_bound()) {
+  single_value->field_objectIDofObjectToMove = other_value.objectIDofObjectToMove();
+} else {
+  single_value->field_objectIDofObjectToMove.clean_up();
+}
+if (other_value.relativeChangeInXposition().is_bound()) {
+  single_value->field_relativeChangeInXposition = other_value.relativeChangeInXposition();
+} else {
+  single_value->field_relativeChangeInXposition.clean_up();
+}
+if (other_value.relativeChangeInYposition().is_bound()) {
+  single_value->field_relativeChangeInYposition = other_value.relativeChangeInYposition();
+} else {
+  single_value->field_relativeChangeInYposition.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangeChildLocationReq_template::copy_template(const ChangeChildLocationReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.parentObjectID().get_selection()) {
+single_value->field_parentObjectID = other_value.parentObjectID();
+} else {
+single_value->field_parentObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectIDofObjectToMove().get_selection()) {
+single_value->field_objectIDofObjectToMove = other_value.objectIDofObjectToMove();
+} else {
+single_value->field_objectIDofObjectToMove.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.relativeChangeInXposition().get_selection()) {
+single_value->field_relativeChangeInXposition = other_value.relativeChangeInXposition();
+} else {
+single_value->field_relativeChangeInXposition.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.relativeChangeInYposition().get_selection()) {
+single_value->field_relativeChangeInYposition = other_value.relativeChangeInYposition();
+} else {
+single_value->field_relativeChangeInYposition.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangeChildLocationReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeChildLocationReq.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangeChildLocationReq_template::ChangeChildLocationReq_template()
+{
+}
+
+ChangeChildLocationReq_template::ChangeChildLocationReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangeChildLocationReq_template::ChangeChildLocationReq_template(const ChangeChildLocationReq& other_value)
+{
+copy_value(other_value);
+}
+
+ChangeChildLocationReq_template::ChangeChildLocationReq_template(const OPTIONAL<ChangeChildLocationReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeChildLocationReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangeChildLocationReq from an unbound optional field.");
+}
+}
+
+ChangeChildLocationReq_template::ChangeChildLocationReq_template(const ChangeChildLocationReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangeChildLocationReq_template::~ChangeChildLocationReq_template()
+{
+clean_up();
+}
+
+ChangeChildLocationReq_template& ChangeChildLocationReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangeChildLocationReq_template& ChangeChildLocationReq_template::operator=(const ChangeChildLocationReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangeChildLocationReq_template& ChangeChildLocationReq_template::operator=(const OPTIONAL<ChangeChildLocationReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeChildLocationReq&)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 @IsobusVTMessageTypes.ChangeChildLocationReq.");
+}
+return *this;
+}
+
+ChangeChildLocationReq_template& ChangeChildLocationReq_template::operator=(const ChangeChildLocationReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangeChildLocationReq_template::match(const ChangeChildLocationReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.parentObjectID().is_bound()) return FALSE;
+if(!single_value->field_parentObjectID.match(other_value.parentObjectID(), legacy))return FALSE;
+if(!other_value.objectIDofObjectToMove().is_bound()) return FALSE;
+if(!single_value->field_objectIDofObjectToMove.match(other_value.objectIDofObjectToMove(), legacy))return FALSE;
+if(!other_value.relativeChangeInXposition().is_bound()) return FALSE;
+if(!single_value->field_relativeChangeInXposition.match(other_value.relativeChangeInXposition(), legacy))return FALSE;
+if(!other_value.relativeChangeInYposition().is_bound()) return FALSE;
+if(!single_value->field_relativeChangeInYposition.match(other_value.relativeChangeInYposition(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeChildLocationReq.");
+}
+return FALSE;
+}
+
+boolean ChangeChildLocationReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_parentObjectID.is_bound()
+
+ ||single_value->field_objectIDofObjectToMove.is_bound()
+
+ ||single_value->field_relativeChangeInXposition.is_bound()
+
+ ||single_value->field_relativeChangeInYposition.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean ChangeChildLocationReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_parentObjectID.is_value()
+ &&single_value->field_objectIDofObjectToMove.is_value()
+ &&single_value->field_relativeChangeInXposition.is_value()
+ &&single_value->field_relativeChangeInYposition.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void ChangeChildLocationReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangeChildLocationReq ChangeChildLocationReq_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 @IsobusVTMessageTypes.ChangeChildLocationReq.");
+ChangeChildLocationReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_parentObjectID.is_bound()) {
+ret_val.parentObjectID() = single_value->field_parentObjectID.valueof();
+}
+if (single_value->field_objectIDofObjectToMove.is_bound()) {
+ret_val.objectIDofObjectToMove() = single_value->field_objectIDofObjectToMove.valueof();
+}
+if (single_value->field_relativeChangeInXposition.is_bound()) {
+ret_val.relativeChangeInXposition() = single_value->field_relativeChangeInXposition.valueof();
+}
+if (single_value->field_relativeChangeInYposition.is_bound()) {
+ret_val.relativeChangeInYposition() = single_value->field_relativeChangeInYposition.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void ChangeChildLocationReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangeChildLocationReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangeChildLocationReq_template[list_length];
+}
+
+ChangeChildLocationReq_template& ChangeChildLocationReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangeChildLocationReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangeChildLocationReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ChangeChildLocationReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ChangeChildLocationReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ChangeChildLocationReq.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& ChangeChildLocationReq_template::parentObjectID()
+{
+set_specific();
+return single_value->field_parentObjectID;
+}
+
+const INTEGER_template& ChangeChildLocationReq_template::parentObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field parentObjectID of a non-specific template of type @IsobusVTMessageTypes.ChangeChildLocationReq.");
+return single_value->field_parentObjectID;
+}
+
+INTEGER_template& ChangeChildLocationReq_template::objectIDofObjectToMove()
+{
+set_specific();
+return single_value->field_objectIDofObjectToMove;
+}
+
+const INTEGER_template& ChangeChildLocationReq_template::objectIDofObjectToMove() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectIDofObjectToMove of a non-specific template of type @IsobusVTMessageTypes.ChangeChildLocationReq.");
+return single_value->field_objectIDofObjectToMove;
+}
+
+INTEGER_template& ChangeChildLocationReq_template::relativeChangeInXposition()
+{
+set_specific();
+return single_value->field_relativeChangeInXposition;
+}
+
+const INTEGER_template& ChangeChildLocationReq_template::relativeChangeInXposition() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field relativeChangeInXposition of a non-specific template of type @IsobusVTMessageTypes.ChangeChildLocationReq.");
+return single_value->field_relativeChangeInXposition;
+}
+
+INTEGER_template& ChangeChildLocationReq_template::relativeChangeInYposition()
+{
+set_specific();
+return single_value->field_relativeChangeInYposition;
+}
+
+const INTEGER_template& ChangeChildLocationReq_template::relativeChangeInYposition() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field relativeChangeInYposition of a non-specific template of type @IsobusVTMessageTypes.ChangeChildLocationReq.");
+return single_value->field_relativeChangeInYposition;
+}
+
+OCTETSTRING_template& ChangeChildLocationReq_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& ChangeChildLocationReq_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.ChangeChildLocationReq.");
+return single_value->field_reserved8;
+}
+
+int ChangeChildLocationReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeChildLocationReq 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 @IsobusVTMessageTypes.ChangeChildLocationReq 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 @IsobusVTMessageTypes.ChangeChildLocationReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeChildLocationReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeChildLocationReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeChildLocationReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeChildLocationReq.");
+  }
+  return 0;
+}
+
+void ChangeChildLocationReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", parentObjectID := ");
+single_value->field_parentObjectID.log();
+TTCN_Logger::log_event_str(", objectIDofObjectToMove := ");
+single_value->field_objectIDofObjectToMove.log();
+TTCN_Logger::log_event_str(", relativeChangeInXposition := ");
+single_value->field_relativeChangeInXposition.log();
+TTCN_Logger::log_event_str(", relativeChangeInYposition := ");
+single_value->field_relativeChangeInYposition.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangeChildLocationReq_template::log_match(const ChangeChildLocationReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_parentObjectID.match(match_value.parentObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".parentObjectID");
+single_value->field_parentObjectID.log_match(match_value.parentObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectIDofObjectToMove.match(match_value.objectIDofObjectToMove(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectIDofObjectToMove");
+single_value->field_objectIDofObjectToMove.log_match(match_value.objectIDofObjectToMove(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_relativeChangeInXposition.match(match_value.relativeChangeInXposition(), legacy)){
+TTCN_Logger::log_logmatch_info(".relativeChangeInXposition");
+single_value->field_relativeChangeInXposition.log_match(match_value.relativeChangeInXposition(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_relativeChangeInYposition.match(match_value.relativeChangeInYposition(), legacy)){
+TTCN_Logger::log_logmatch_info(".relativeChangeInYposition");
+single_value->field_relativeChangeInYposition.log_match(match_value.relativeChangeInYposition(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", parentObjectID := ");
+single_value->field_parentObjectID.log_match(match_value.parentObjectID(), legacy);
+TTCN_Logger::log_event_str(", objectIDofObjectToMove := ");
+single_value->field_objectIDofObjectToMove.log_match(match_value.objectIDofObjectToMove(), legacy);
+TTCN_Logger::log_event_str(", relativeChangeInXposition := ");
+single_value->field_relativeChangeInXposition.log_match(match_value.relativeChangeInXposition(), legacy);
+TTCN_Logger::log_event_str(", relativeChangeInYposition := ");
+single_value->field_relativeChangeInYposition.log_match(match_value.relativeChangeInYposition(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 ChangeChildLocationReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_parentObjectID.encode_text(text_buf);
+single_value->field_objectIDofObjectToMove.encode_text(text_buf);
+single_value->field_relativeChangeInXposition.encode_text(text_buf);
+single_value->field_relativeChangeInYposition.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.ChangeChildLocationReq.");
+}
+}
+
+void ChangeChildLocationReq_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_vtfunction.decode_text(text_buf);
+single_value->field_parentObjectID.decode_text(text_buf);
+single_value->field_objectIDofObjectToMove.decode_text(text_buf);
+single_value->field_relativeChangeInXposition.decode_text(text_buf);
+single_value->field_relativeChangeInYposition.decode_text(text_buf);
+single_value->field_reserved8.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 ChangeChildLocationReq_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 @IsobusVTMessageTypes.ChangeChildLocationReq.");
+}
+}
+
+void ChangeChildLocationReq_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: {
+    ChangeChildLocationReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.ChangeChildLocationReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) parentObjectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) objectIDofObjectToMove().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) relativeChangeInXposition().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) relativeChangeInYposition().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "parentObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          parentObjectID().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(), "objectIDofObjectToMove")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofObjectToMove().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(), "relativeChangeInXposition")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          relativeChangeInXposition().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(), "relativeChangeInYposition")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          relativeChangeInYposition().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangeChildLocationReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangeChildLocationReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangeChildLocationReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeChildLocationReq");
+single_value->field_parentObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeChildLocationReq");
+single_value->field_objectIDofObjectToMove.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeChildLocationReq");
+single_value->field_relativeChangeInXposition.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeChildLocationReq");
+single_value->field_relativeChangeInYposition.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeChildLocationReq");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeChildLocationReq");
+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 : "@IsobusVTMessageTypes.ChangeChildLocationReq");
+}
+
+boolean ChangeChildLocationReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangeChildLocationReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangeChildLocationRes__errorCodes::ChangeChildLocationRes__errorCodes()
+{
+}
+
+ChangeChildLocationRes__errorCodes::ChangeChildLocationRes__errorCodes(const BOOLEAN& par_invalidParentObjectID,
+    const BOOLEAN& par_invalidObjectID,
+    const BOOLEAN& par_reserved2,
+    const BOOLEAN& par_reserved3,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7)
+  :   field_invalidParentObjectID(par_invalidParentObjectID),
+  field_invalidObjectID(par_invalidObjectID),
+  field_reserved2(par_reserved2),
+  field_reserved3(par_reserved3),
+  field_anyOtherError(par_anyOtherError),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7)
+{
+}
+
+ChangeChildLocationRes__errorCodes::ChangeChildLocationRes__errorCodes(const ChangeChildLocationRes__errorCodes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes.");
+if (other_value.invalidParentObjectID().is_bound()) field_invalidParentObjectID = other_value.invalidParentObjectID();
+else field_invalidParentObjectID.clean_up();
+if (other_value.invalidObjectID().is_bound()) field_invalidObjectID = other_value.invalidObjectID();
+else field_invalidObjectID.clean_up();
+if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+else field_reserved2.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+else field_anyOtherError.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+}
+
+void ChangeChildLocationRes__errorCodes::clean_up()
+{
+field_invalidParentObjectID.clean_up();
+field_invalidObjectID.clean_up();
+field_reserved2.clean_up();
+field_reserved3.clean_up();
+field_anyOtherError.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangeChildLocationRes__errorCodes::get_descriptor() const { return &ChangeChildLocationRes__errorCodes_descr_; }
+ChangeChildLocationRes__errorCodes& ChangeChildLocationRes__errorCodes::operator=(const ChangeChildLocationRes__errorCodes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes.");
+  if (other_value.invalidParentObjectID().is_bound()) field_invalidParentObjectID = other_value.invalidParentObjectID();
+  else field_invalidParentObjectID.clean_up();
+  if (other_value.invalidObjectID().is_bound()) field_invalidObjectID = other_value.invalidObjectID();
+  else field_invalidObjectID.clean_up();
+  if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+  else field_reserved2.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+  else field_anyOtherError.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+}
+return *this;
+}
+
+boolean ChangeChildLocationRes__errorCodes::operator==(const ChangeChildLocationRes__errorCodes& other_value) const
+{
+return field_invalidParentObjectID==other_value.field_invalidParentObjectID
+  && field_invalidObjectID==other_value.field_invalidObjectID
+  && field_reserved2==other_value.field_reserved2
+  && field_reserved3==other_value.field_reserved3
+  && field_anyOtherError==other_value.field_anyOtherError
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7;
+}
+
+boolean ChangeChildLocationRes__errorCodes::is_bound() const
+{
+return (field_invalidParentObjectID.is_bound())
+  || (field_invalidObjectID.is_bound())
+  || (field_reserved2.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_anyOtherError.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound());
+}
+boolean ChangeChildLocationRes__errorCodes::is_value() const
+{
+return field_invalidParentObjectID.is_value()
+  && field_invalidObjectID.is_value()
+  && field_reserved2.is_value()
+  && field_reserved3.is_value()
+  && field_anyOtherError.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value();
+}
+void ChangeChildLocationRes__errorCodes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ invalidParentObjectID := ");
+field_invalidParentObjectID.log();
+TTCN_Logger::log_event_str(", invalidObjectID := ");
+field_invalidObjectID.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangeChildLocationRes__errorCodes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes has 8 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) invalidParentObjectID().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) invalidObjectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "invalidParentObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidParentObjectID().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(), "invalidObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidObjectID().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes");
+  }
+}
+
+void ChangeChildLocationRes__errorCodes::set_implicit_omit()
+{
+if (invalidParentObjectID().is_bound()) invalidParentObjectID().set_implicit_omit();
+if (invalidObjectID().is_bound()) invalidObjectID().set_implicit_omit();
+if (reserved2().is_bound()) reserved2().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (anyOtherError().is_bound()) anyOtherError().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+}
+
+void ChangeChildLocationRes__errorCodes::encode_text(Text_Buf& text_buf) const
+{
+field_invalidParentObjectID.encode_text(text_buf);
+field_invalidObjectID.encode_text(text_buf);
+field_reserved2.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_anyOtherError.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+}
+
+void ChangeChildLocationRes__errorCodes::decode_text(Text_Buf& text_buf)
+{
+field_invalidParentObjectID.decode_text(text_buf);
+field_invalidObjectID.decode_text(text_buf);
+field_reserved2.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_anyOtherError.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+}
+
+void ChangeChildLocationRes__errorCodes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangeChildLocationRes__errorCodes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangeChildLocationRes__errorCodes::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidParentObjectID.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidObjectID.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved2.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_anyOtherError.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ChangeChildLocationRes__errorCodes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_invalidParentObjectID.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_invalidObjectID.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved2.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved3.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_anyOtherError.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved5.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved6.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved7.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangeChildLocationRes__errorCodes_template::single_value_struct {
+BOOLEAN_template field_invalidParentObjectID;
+BOOLEAN_template field_invalidObjectID;
+BOOLEAN_template field_reserved2;
+BOOLEAN_template field_reserved3;
+BOOLEAN_template field_anyOtherError;
+BOOLEAN_template field_reserved5;
+BOOLEAN_template field_reserved6;
+BOOLEAN_template field_reserved7;
+};
+
+void ChangeChildLocationRes__errorCodes_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_invalidParentObjectID = ANY_VALUE;
+single_value->field_invalidObjectID = ANY_VALUE;
+single_value->field_reserved2 = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_anyOtherError = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+}
+}
+}
+
+void ChangeChildLocationRes__errorCodes_template::copy_value(const ChangeChildLocationRes__errorCodes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.invalidParentObjectID().is_bound()) {
+  single_value->field_invalidParentObjectID = other_value.invalidParentObjectID();
+} else {
+  single_value->field_invalidParentObjectID.clean_up();
+}
+if (other_value.invalidObjectID().is_bound()) {
+  single_value->field_invalidObjectID = other_value.invalidObjectID();
+} else {
+  single_value->field_invalidObjectID.clean_up();
+}
+if (other_value.reserved2().is_bound()) {
+  single_value->field_reserved2 = other_value.reserved2();
+} else {
+  single_value->field_reserved2.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.anyOtherError().is_bound()) {
+  single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+  single_value->field_anyOtherError.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangeChildLocationRes__errorCodes_template::copy_template(const ChangeChildLocationRes__errorCodes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.invalidParentObjectID().get_selection()) {
+single_value->field_invalidParentObjectID = other_value.invalidParentObjectID();
+} else {
+single_value->field_invalidParentObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.invalidObjectID().get_selection()) {
+single_value->field_invalidObjectID = other_value.invalidObjectID();
+} else {
+single_value->field_invalidObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved2().get_selection()) {
+single_value->field_reserved2 = other_value.reserved2();
+} else {
+single_value->field_reserved2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.anyOtherError().get_selection()) {
+single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+single_value->field_anyOtherError.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangeChildLocationRes__errorCodes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangeChildLocationRes__errorCodes_template::ChangeChildLocationRes__errorCodes_template()
+{
+}
+
+ChangeChildLocationRes__errorCodes_template::ChangeChildLocationRes__errorCodes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangeChildLocationRes__errorCodes_template::ChangeChildLocationRes__errorCodes_template(const ChangeChildLocationRes__errorCodes& other_value)
+{
+copy_value(other_value);
+}
+
+ChangeChildLocationRes__errorCodes_template::ChangeChildLocationRes__errorCodes_template(const OPTIONAL<ChangeChildLocationRes__errorCodes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeChildLocationRes__errorCodes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes from an unbound optional field.");
+}
+}
+
+ChangeChildLocationRes__errorCodes_template::ChangeChildLocationRes__errorCodes_template(const ChangeChildLocationRes__errorCodes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangeChildLocationRes__errorCodes_template::~ChangeChildLocationRes__errorCodes_template()
+{
+clean_up();
+}
+
+ChangeChildLocationRes__errorCodes_template& ChangeChildLocationRes__errorCodes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangeChildLocationRes__errorCodes_template& ChangeChildLocationRes__errorCodes_template::operator=(const ChangeChildLocationRes__errorCodes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangeChildLocationRes__errorCodes_template& ChangeChildLocationRes__errorCodes_template::operator=(const OPTIONAL<ChangeChildLocationRes__errorCodes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeChildLocationRes__errorCodes&)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 @IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes.");
+}
+return *this;
+}
+
+ChangeChildLocationRes__errorCodes_template& ChangeChildLocationRes__errorCodes_template::operator=(const ChangeChildLocationRes__errorCodes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangeChildLocationRes__errorCodes_template::match(const ChangeChildLocationRes__errorCodes& 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.invalidParentObjectID().is_bound()) return FALSE;
+if(!single_value->field_invalidParentObjectID.match(other_value.invalidParentObjectID(), legacy))return FALSE;
+if(!other_value.invalidObjectID().is_bound()) return FALSE;
+if(!single_value->field_invalidObjectID.match(other_value.invalidObjectID(), legacy))return FALSE;
+if(!other_value.reserved2().is_bound()) return FALSE;
+if(!single_value->field_reserved2.match(other_value.reserved2(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.anyOtherError().is_bound()) return FALSE;
+if(!single_value->field_anyOtherError.match(other_value.anyOtherError(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes.");
+}
+return FALSE;
+}
+
+boolean ChangeChildLocationRes__errorCodes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_invalidParentObjectID.is_bound()
+
+ ||single_value->field_invalidObjectID.is_bound()
+
+ ||single_value->field_reserved2.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_anyOtherError.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+;
+}
+
+boolean ChangeChildLocationRes__errorCodes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_invalidParentObjectID.is_value()
+ &&single_value->field_invalidObjectID.is_value()
+ &&single_value->field_reserved2.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_anyOtherError.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value();
+}
+
+void ChangeChildLocationRes__errorCodes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangeChildLocationRes__errorCodes ChangeChildLocationRes__errorCodes_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 @IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes.");
+ChangeChildLocationRes__errorCodes ret_val;
+if (single_value->field_invalidParentObjectID.is_bound()) {
+ret_val.invalidParentObjectID() = single_value->field_invalidParentObjectID.valueof();
+}
+if (single_value->field_invalidObjectID.is_bound()) {
+ret_val.invalidObjectID() = single_value->field_invalidObjectID.valueof();
+}
+if (single_value->field_reserved2.is_bound()) {
+ret_val.reserved2() = single_value->field_reserved2.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_anyOtherError.is_bound()) {
+ret_val.anyOtherError() = single_value->field_anyOtherError.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+return ret_val;
+}
+
+void ChangeChildLocationRes__errorCodes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangeChildLocationRes__errorCodes_template[list_length];
+}
+
+ChangeChildLocationRes__errorCodes_template& ChangeChildLocationRes__errorCodes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& ChangeChildLocationRes__errorCodes_template::invalidParentObjectID()
+{
+set_specific();
+return single_value->field_invalidParentObjectID;
+}
+
+const BOOLEAN_template& ChangeChildLocationRes__errorCodes_template::invalidParentObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidParentObjectID of a non-specific template of type @IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes.");
+return single_value->field_invalidParentObjectID;
+}
+
+BOOLEAN_template& ChangeChildLocationRes__errorCodes_template::invalidObjectID()
+{
+set_specific();
+return single_value->field_invalidObjectID;
+}
+
+const BOOLEAN_template& ChangeChildLocationRes__errorCodes_template::invalidObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidObjectID of a non-specific template of type @IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes.");
+return single_value->field_invalidObjectID;
+}
+
+BOOLEAN_template& ChangeChildLocationRes__errorCodes_template::reserved2()
+{
+set_specific();
+return single_value->field_reserved2;
+}
+
+const BOOLEAN_template& ChangeChildLocationRes__errorCodes_template::reserved2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved2 of a non-specific template of type @IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes.");
+return single_value->field_reserved2;
+}
+
+BOOLEAN_template& ChangeChildLocationRes__errorCodes_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const BOOLEAN_template& ChangeChildLocationRes__errorCodes_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes.");
+return single_value->field_reserved3;
+}
+
+BOOLEAN_template& ChangeChildLocationRes__errorCodes_template::anyOtherError()
+{
+set_specific();
+return single_value->field_anyOtherError;
+}
+
+const BOOLEAN_template& ChangeChildLocationRes__errorCodes_template::anyOtherError() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field anyOtherError of a non-specific template of type @IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes.");
+return single_value->field_anyOtherError;
+}
+
+BOOLEAN_template& ChangeChildLocationRes__errorCodes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const BOOLEAN_template& ChangeChildLocationRes__errorCodes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes.");
+return single_value->field_reserved5;
+}
+
+BOOLEAN_template& ChangeChildLocationRes__errorCodes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const BOOLEAN_template& ChangeChildLocationRes__errorCodes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes.");
+return single_value->field_reserved6;
+}
+
+BOOLEAN_template& ChangeChildLocationRes__errorCodes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const BOOLEAN_template& ChangeChildLocationRes__errorCodes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes.");
+return single_value->field_reserved7;
+}
+
+int ChangeChildLocationRes__errorCodes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes 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 @IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes.");
+  }
+  return 0;
+}
+
+void ChangeChildLocationRes__errorCodes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ invalidParentObjectID := ");
+single_value->field_invalidParentObjectID.log();
+TTCN_Logger::log_event_str(", invalidObjectID := ");
+single_value->field_invalidObjectID.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangeChildLocationRes__errorCodes_template::log_match(const ChangeChildLocationRes__errorCodes& 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_invalidParentObjectID.match(match_value.invalidParentObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidParentObjectID");
+single_value->field_invalidParentObjectID.log_match(match_value.invalidParentObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_invalidObjectID.match(match_value.invalidObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidObjectID");
+single_value->field_invalidObjectID.log_match(match_value.invalidObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved2.match(match_value.reserved2(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved2");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_anyOtherError.match(match_value.anyOtherError(), legacy)){
+TTCN_Logger::log_logmatch_info(".anyOtherError");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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("{ invalidParentObjectID := ");
+single_value->field_invalidParentObjectID.log_match(match_value.invalidParentObjectID(), legacy);
+TTCN_Logger::log_event_str(", invalidObjectID := ");
+single_value->field_invalidObjectID.log_match(match_value.invalidObjectID(), legacy);
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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 ChangeChildLocationRes__errorCodes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_invalidParentObjectID.encode_text(text_buf);
+single_value->field_invalidObjectID.encode_text(text_buf);
+single_value->field_reserved2.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_anyOtherError.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.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 @IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes.");
+}
+}
+
+void ChangeChildLocationRes__errorCodes_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_invalidParentObjectID.decode_text(text_buf);
+single_value->field_invalidObjectID.decode_text(text_buf);
+single_value->field_reserved2.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_anyOtherError.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.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 ChangeChildLocationRes__errorCodes_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 @IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes.");
+}
+}
+
+void ChangeChildLocationRes__errorCodes_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: {
+    ChangeChildLocationRes__errorCodes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes has 8 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) invalidParentObjectID().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) invalidObjectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "invalidParentObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidParentObjectID().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(), "invalidObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidObjectID().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangeChildLocationRes__errorCodes_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_invalidParentObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes");
+single_value->field_invalidObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes");
+single_value->field_reserved2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes");
+single_value->field_anyOtherError.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes");
+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 : "@IsobusVTMessageTypes.ChangeChildLocationRes_errorCodes");
+}
+
+boolean ChangeChildLocationRes__errorCodes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangeChildLocationRes__errorCodes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangeChildLocationRes::ChangeChildLocationRes()
+{
+}
+
+ChangeChildLocationRes::ChangeChildLocationRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_parentObjectID,
+    const INTEGER& par_objectIDofObjectToMove,
+    const ChangeChildLocationRes__errorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_parentObjectID(par_parentObjectID),
+  field_objectIDofObjectToMove(par_objectIDofObjectToMove),
+  field_errorCodes(par_errorCodes),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+ChangeChildLocationRes::ChangeChildLocationRes(const ChangeChildLocationRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangeChildLocationRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.parentObjectID().is_bound()) field_parentObjectID = other_value.parentObjectID();
+else field_parentObjectID.clean_up();
+if (other_value.objectIDofObjectToMove().is_bound()) field_objectIDofObjectToMove = other_value.objectIDofObjectToMove();
+else field_objectIDofObjectToMove.clean_up();
+if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+else field_errorCodes.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void ChangeChildLocationRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_parentObjectID.clean_up();
+field_objectIDofObjectToMove.clean_up();
+field_errorCodes.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangeChildLocationRes::get_descriptor() const { return &ChangeChildLocationRes_descr_; }
+ChangeChildLocationRes& ChangeChildLocationRes::operator=(const ChangeChildLocationRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangeChildLocationRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.parentObjectID().is_bound()) field_parentObjectID = other_value.parentObjectID();
+  else field_parentObjectID.clean_up();
+  if (other_value.objectIDofObjectToMove().is_bound()) field_objectIDofObjectToMove = other_value.objectIDofObjectToMove();
+  else field_objectIDofObjectToMove.clean_up();
+  if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+  else field_errorCodes.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean ChangeChildLocationRes::operator==(const ChangeChildLocationRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_parentObjectID==other_value.field_parentObjectID
+  && field_objectIDofObjectToMove==other_value.field_objectIDofObjectToMove
+  && field_errorCodes==other_value.field_errorCodes
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean ChangeChildLocationRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_parentObjectID.is_bound())
+  || (field_objectIDofObjectToMove.is_bound())
+  || (field_errorCodes.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean ChangeChildLocationRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_parentObjectID.is_value()
+  && field_objectIDofObjectToMove.is_value()
+  && field_errorCodes.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void ChangeChildLocationRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", parentObjectID := ");
+field_parentObjectID.log();
+TTCN_Logger::log_event_str(", objectIDofObjectToMove := ");
+field_objectIDofObjectToMove.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangeChildLocationRes::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 @IsobusVTMessageTypes.ChangeChildLocationRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) parentObjectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) objectIDofObjectToMove().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "parentObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          parentObjectID().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(), "objectIDofObjectToMove")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofObjectToMove().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangeChildLocationRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangeChildLocationRes");
+  }
+}
+
+void ChangeChildLocationRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (parentObjectID().is_bound()) parentObjectID().set_implicit_omit();
+if (objectIDofObjectToMove().is_bound()) objectIDofObjectToMove().set_implicit_omit();
+if (errorCodes().is_bound()) errorCodes().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void ChangeChildLocationRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_parentObjectID.encode_text(text_buf);
+field_objectIDofObjectToMove.encode_text(text_buf);
+field_errorCodes.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void ChangeChildLocationRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_parentObjectID.decode_text(text_buf);
+field_objectIDofObjectToMove.decode_text(text_buf);
+field_errorCodes.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void ChangeChildLocationRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangeChildLocationRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangeChildLocationRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_parentObjectID.RAW_decode(ValidObjectID_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectIDofObjectToMove.RAW_decode(ValidObjectID_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, ChangeChildLocationRes__errorCodes_descr_.raw->forceomit);
+  decoded_field_length = field_errorCodes.RAW_decode(ChangeChildLocationRes__errorCodes_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, ChangeChildLocationRes_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(ChangeChildLocationRes_reserved7_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, ChangeChildLocationRes_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(ChangeChildLocationRes_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ChangeChildLocationRes::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, ChangeChildLocationRes__errorCodes_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, ChangeChildLocationRes_reserved7_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, ChangeChildLocationRes_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_parentObjectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_objectIDofObjectToMove.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_errorCodes.RAW_encode(ChangeChildLocationRes__errorCodes_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved7.RAW_encode(ChangeChildLocationRes_reserved7_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved8.RAW_encode(ChangeChildLocationRes_reserved8_descr_, *myleaf.body.node.nodes[5]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangeChildLocationRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_parentObjectID;
+INTEGER_template field_objectIDofObjectToMove;
+ChangeChildLocationRes__errorCodes_template field_errorCodes;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void ChangeChildLocationRes_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_vtfunction = ANY_VALUE;
+single_value->field_parentObjectID = ANY_VALUE;
+single_value->field_objectIDofObjectToMove = ANY_VALUE;
+single_value->field_errorCodes = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void ChangeChildLocationRes_template::copy_value(const ChangeChildLocationRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.parentObjectID().is_bound()) {
+  single_value->field_parentObjectID = other_value.parentObjectID();
+} else {
+  single_value->field_parentObjectID.clean_up();
+}
+if (other_value.objectIDofObjectToMove().is_bound()) {
+  single_value->field_objectIDofObjectToMove = other_value.objectIDofObjectToMove();
+} else {
+  single_value->field_objectIDofObjectToMove.clean_up();
+}
+if (other_value.errorCodes().is_bound()) {
+  single_value->field_errorCodes = other_value.errorCodes();
+} else {
+  single_value->field_errorCodes.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangeChildLocationRes_template::copy_template(const ChangeChildLocationRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.parentObjectID().get_selection()) {
+single_value->field_parentObjectID = other_value.parentObjectID();
+} else {
+single_value->field_parentObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectIDofObjectToMove().get_selection()) {
+single_value->field_objectIDofObjectToMove = other_value.objectIDofObjectToMove();
+} else {
+single_value->field_objectIDofObjectToMove.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.errorCodes().get_selection()) {
+single_value->field_errorCodes = other_value.errorCodes();
+} else {
+single_value->field_errorCodes.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangeChildLocationRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeChildLocationRes.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangeChildLocationRes_template::ChangeChildLocationRes_template()
+{
+}
+
+ChangeChildLocationRes_template::ChangeChildLocationRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangeChildLocationRes_template::ChangeChildLocationRes_template(const ChangeChildLocationRes& other_value)
+{
+copy_value(other_value);
+}
+
+ChangeChildLocationRes_template::ChangeChildLocationRes_template(const OPTIONAL<ChangeChildLocationRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeChildLocationRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangeChildLocationRes from an unbound optional field.");
+}
+}
+
+ChangeChildLocationRes_template::ChangeChildLocationRes_template(const ChangeChildLocationRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangeChildLocationRes_template::~ChangeChildLocationRes_template()
+{
+clean_up();
+}
+
+ChangeChildLocationRes_template& ChangeChildLocationRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangeChildLocationRes_template& ChangeChildLocationRes_template::operator=(const ChangeChildLocationRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangeChildLocationRes_template& ChangeChildLocationRes_template::operator=(const OPTIONAL<ChangeChildLocationRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeChildLocationRes&)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 @IsobusVTMessageTypes.ChangeChildLocationRes.");
+}
+return *this;
+}
+
+ChangeChildLocationRes_template& ChangeChildLocationRes_template::operator=(const ChangeChildLocationRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangeChildLocationRes_template::match(const ChangeChildLocationRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.parentObjectID().is_bound()) return FALSE;
+if(!single_value->field_parentObjectID.match(other_value.parentObjectID(), legacy))return FALSE;
+if(!other_value.objectIDofObjectToMove().is_bound()) return FALSE;
+if(!single_value->field_objectIDofObjectToMove.match(other_value.objectIDofObjectToMove(), legacy))return FALSE;
+if(!other_value.errorCodes().is_bound()) return FALSE;
+if(!single_value->field_errorCodes.match(other_value.errorCodes(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeChildLocationRes.");
+}
+return FALSE;
+}
+
+boolean ChangeChildLocationRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_parentObjectID.is_bound()
+
+ ||single_value->field_objectIDofObjectToMove.is_bound()
+
+ ||single_value->field_errorCodes.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean ChangeChildLocationRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_parentObjectID.is_value()
+ &&single_value->field_objectIDofObjectToMove.is_value()
+ &&single_value->field_errorCodes.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void ChangeChildLocationRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangeChildLocationRes ChangeChildLocationRes_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 @IsobusVTMessageTypes.ChangeChildLocationRes.");
+ChangeChildLocationRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_parentObjectID.is_bound()) {
+ret_val.parentObjectID() = single_value->field_parentObjectID.valueof();
+}
+if (single_value->field_objectIDofObjectToMove.is_bound()) {
+ret_val.objectIDofObjectToMove() = single_value->field_objectIDofObjectToMove.valueof();
+}
+if (single_value->field_errorCodes.is_bound()) {
+ret_val.errorCodes() = single_value->field_errorCodes.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void ChangeChildLocationRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangeChildLocationRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangeChildLocationRes_template[list_length];
+}
+
+ChangeChildLocationRes_template& ChangeChildLocationRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangeChildLocationRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangeChildLocationRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ChangeChildLocationRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ChangeChildLocationRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ChangeChildLocationRes.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& ChangeChildLocationRes_template::parentObjectID()
+{
+set_specific();
+return single_value->field_parentObjectID;
+}
+
+const INTEGER_template& ChangeChildLocationRes_template::parentObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field parentObjectID of a non-specific template of type @IsobusVTMessageTypes.ChangeChildLocationRes.");
+return single_value->field_parentObjectID;
+}
+
+INTEGER_template& ChangeChildLocationRes_template::objectIDofObjectToMove()
+{
+set_specific();
+return single_value->field_objectIDofObjectToMove;
+}
+
+const INTEGER_template& ChangeChildLocationRes_template::objectIDofObjectToMove() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectIDofObjectToMove of a non-specific template of type @IsobusVTMessageTypes.ChangeChildLocationRes.");
+return single_value->field_objectIDofObjectToMove;
+}
+
+ChangeChildLocationRes__errorCodes_template& ChangeChildLocationRes_template::errorCodes()
+{
+set_specific();
+return single_value->field_errorCodes;
+}
+
+const ChangeChildLocationRes__errorCodes_template& ChangeChildLocationRes_template::errorCodes() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field errorCodes of a non-specific template of type @IsobusVTMessageTypes.ChangeChildLocationRes.");
+return single_value->field_errorCodes;
+}
+
+OCTETSTRING_template& ChangeChildLocationRes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& ChangeChildLocationRes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ChangeChildLocationRes.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& ChangeChildLocationRes_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& ChangeChildLocationRes_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.ChangeChildLocationRes.");
+return single_value->field_reserved8;
+}
+
+int ChangeChildLocationRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeChildLocationRes 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 @IsobusVTMessageTypes.ChangeChildLocationRes 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 @IsobusVTMessageTypes.ChangeChildLocationRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeChildLocationRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeChildLocationRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeChildLocationRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeChildLocationRes.");
+  }
+  return 0;
+}
+
+void ChangeChildLocationRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", parentObjectID := ");
+single_value->field_parentObjectID.log();
+TTCN_Logger::log_event_str(", objectIDofObjectToMove := ");
+single_value->field_objectIDofObjectToMove.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangeChildLocationRes_template::log_match(const ChangeChildLocationRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_parentObjectID.match(match_value.parentObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".parentObjectID");
+single_value->field_parentObjectID.log_match(match_value.parentObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectIDofObjectToMove.match(match_value.objectIDofObjectToMove(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectIDofObjectToMove");
+single_value->field_objectIDofObjectToMove.log_match(match_value.objectIDofObjectToMove(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_errorCodes.match(match_value.errorCodes(), legacy)){
+TTCN_Logger::log_logmatch_info(".errorCodes");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", parentObjectID := ");
+single_value->field_parentObjectID.log_match(match_value.parentObjectID(), legacy);
+TTCN_Logger::log_event_str(", objectIDofObjectToMove := ");
+single_value->field_objectIDofObjectToMove.log_match(match_value.objectIDofObjectToMove(), legacy);
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 ChangeChildLocationRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_parentObjectID.encode_text(text_buf);
+single_value->field_objectIDofObjectToMove.encode_text(text_buf);
+single_value->field_errorCodes.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.ChangeChildLocationRes.");
+}
+}
+
+void ChangeChildLocationRes_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_vtfunction.decode_text(text_buf);
+single_value->field_parentObjectID.decode_text(text_buf);
+single_value->field_objectIDofObjectToMove.decode_text(text_buf);
+single_value->field_errorCodes.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 ChangeChildLocationRes_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 @IsobusVTMessageTypes.ChangeChildLocationRes.");
+}
+}
+
+void ChangeChildLocationRes_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: {
+    ChangeChildLocationRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.ChangeChildLocationRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) parentObjectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) objectIDofObjectToMove().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "parentObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          parentObjectID().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(), "objectIDofObjectToMove")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofObjectToMove().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangeChildLocationRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangeChildLocationRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangeChildLocationRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeChildLocationRes");
+single_value->field_parentObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeChildLocationRes");
+single_value->field_objectIDofObjectToMove.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeChildLocationRes");
+single_value->field_errorCodes.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeChildLocationRes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeChildLocationRes");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeChildLocationRes");
+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 : "@IsobusVTMessageTypes.ChangeChildLocationRes");
+}
+
+boolean ChangeChildLocationRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangeChildLocationRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangeSizeReq::ChangeSizeReq()
+{
+}
+
+ChangeSizeReq::ChangeSizeReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectIDofObjectToSize,
+    const INTEGER& par_newWidth,
+    const INTEGER& par_newHeight,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_objectIDofObjectToSize(par_objectIDofObjectToSize),
+  field_newWidth(par_newWidth),
+  field_newHeight(par_newHeight),
+  field_reserved8(par_reserved8)
+{
+}
+
+ChangeSizeReq::ChangeSizeReq(const ChangeSizeReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangeSizeReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectIDofObjectToSize().is_bound()) field_objectIDofObjectToSize = other_value.objectIDofObjectToSize();
+else field_objectIDofObjectToSize.clean_up();
+if (other_value.newWidth().is_bound()) field_newWidth = other_value.newWidth();
+else field_newWidth.clean_up();
+if (other_value.newHeight().is_bound()) field_newHeight = other_value.newHeight();
+else field_newHeight.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void ChangeSizeReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectIDofObjectToSize.clean_up();
+field_newWidth.clean_up();
+field_newHeight.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangeSizeReq::get_descriptor() const { return &ChangeSizeReq_descr_; }
+ChangeSizeReq& ChangeSizeReq::operator=(const ChangeSizeReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangeSizeReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectIDofObjectToSize().is_bound()) field_objectIDofObjectToSize = other_value.objectIDofObjectToSize();
+  else field_objectIDofObjectToSize.clean_up();
+  if (other_value.newWidth().is_bound()) field_newWidth = other_value.newWidth();
+  else field_newWidth.clean_up();
+  if (other_value.newHeight().is_bound()) field_newHeight = other_value.newHeight();
+  else field_newHeight.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean ChangeSizeReq::operator==(const ChangeSizeReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectIDofObjectToSize==other_value.field_objectIDofObjectToSize
+  && field_newWidth==other_value.field_newWidth
+  && field_newHeight==other_value.field_newHeight
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean ChangeSizeReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectIDofObjectToSize.is_bound())
+  || (field_newWidth.is_bound())
+  || (field_newHeight.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean ChangeSizeReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectIDofObjectToSize.is_value()
+  && field_newWidth.is_value()
+  && field_newHeight.is_value()
+  && field_reserved8.is_value();
+}
+void ChangeSizeReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectIDofObjectToSize := ");
+field_objectIDofObjectToSize.log();
+TTCN_Logger::log_event_str(", newWidth := ");
+field_newWidth.log();
+TTCN_Logger::log_event_str(", newHeight := ");
+field_newHeight.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangeSizeReq::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 @IsobusVTMessageTypes.ChangeSizeReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectIDofObjectToSize().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) newWidth().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) newHeight().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectIDofObjectToSize")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofObjectToSize().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(), "newWidth")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          newWidth().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(), "newHeight")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          newHeight().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangeSizeReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangeSizeReq");
+  }
+}
+
+void ChangeSizeReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectIDofObjectToSize().is_bound()) objectIDofObjectToSize().set_implicit_omit();
+if (newWidth().is_bound()) newWidth().set_implicit_omit();
+if (newHeight().is_bound()) newHeight().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void ChangeSizeReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectIDofObjectToSize.encode_text(text_buf);
+field_newWidth.encode_text(text_buf);
+field_newHeight.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void ChangeSizeReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectIDofObjectToSize.decode_text(text_buf);
+field_newWidth.decode_text(text_buf);
+field_newHeight.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void ChangeSizeReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangeSizeReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangeSizeReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectIDofObjectToSize.RAW_decode(ValidObjectID_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, WidthType_descr_.raw->forceomit);
+  decoded_field_length = field_newWidth.RAW_decode(WidthType_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, HeightType_descr_.raw->forceomit);
+  decoded_field_length = field_newHeight.RAW_decode(HeightType_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, ChangeSizeReq_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(ChangeSizeReq_reserved8_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 ChangeSizeReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, WidthType_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, HeightType_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, ChangeSizeReq_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectIDofObjectToSize.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_newWidth.RAW_encode(WidthType_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_newHeight.RAW_encode(HeightType_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved8.RAW_encode(ChangeSizeReq_reserved8_descr_, *myleaf.body.node.nodes[4]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangeSizeReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectIDofObjectToSize;
+INTEGER_template field_newWidth;
+INTEGER_template field_newHeight;
+OCTETSTRING_template field_reserved8;
+};
+
+void ChangeSizeReq_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_vtfunction = ANY_VALUE;
+single_value->field_objectIDofObjectToSize = ANY_VALUE;
+single_value->field_newWidth = ANY_VALUE;
+single_value->field_newHeight = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void ChangeSizeReq_template::copy_value(const ChangeSizeReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectIDofObjectToSize().is_bound()) {
+  single_value->field_objectIDofObjectToSize = other_value.objectIDofObjectToSize();
+} else {
+  single_value->field_objectIDofObjectToSize.clean_up();
+}
+if (other_value.newWidth().is_bound()) {
+  single_value->field_newWidth = other_value.newWidth();
+} else {
+  single_value->field_newWidth.clean_up();
+}
+if (other_value.newHeight().is_bound()) {
+  single_value->field_newHeight = other_value.newHeight();
+} else {
+  single_value->field_newHeight.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangeSizeReq_template::copy_template(const ChangeSizeReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectIDofObjectToSize().get_selection()) {
+single_value->field_objectIDofObjectToSize = other_value.objectIDofObjectToSize();
+} else {
+single_value->field_objectIDofObjectToSize.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.newWidth().get_selection()) {
+single_value->field_newWidth = other_value.newWidth();
+} else {
+single_value->field_newWidth.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.newHeight().get_selection()) {
+single_value->field_newHeight = other_value.newHeight();
+} else {
+single_value->field_newHeight.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangeSizeReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeSizeReq.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangeSizeReq_template::ChangeSizeReq_template()
+{
+}
+
+ChangeSizeReq_template::ChangeSizeReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangeSizeReq_template::ChangeSizeReq_template(const ChangeSizeReq& other_value)
+{
+copy_value(other_value);
+}
+
+ChangeSizeReq_template::ChangeSizeReq_template(const OPTIONAL<ChangeSizeReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeSizeReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangeSizeReq from an unbound optional field.");
+}
+}
+
+ChangeSizeReq_template::ChangeSizeReq_template(const ChangeSizeReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangeSizeReq_template::~ChangeSizeReq_template()
+{
+clean_up();
+}
+
+ChangeSizeReq_template& ChangeSizeReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangeSizeReq_template& ChangeSizeReq_template::operator=(const ChangeSizeReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangeSizeReq_template& ChangeSizeReq_template::operator=(const OPTIONAL<ChangeSizeReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeSizeReq&)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 @IsobusVTMessageTypes.ChangeSizeReq.");
+}
+return *this;
+}
+
+ChangeSizeReq_template& ChangeSizeReq_template::operator=(const ChangeSizeReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangeSizeReq_template::match(const ChangeSizeReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectIDofObjectToSize().is_bound()) return FALSE;
+if(!single_value->field_objectIDofObjectToSize.match(other_value.objectIDofObjectToSize(), legacy))return FALSE;
+if(!other_value.newWidth().is_bound()) return FALSE;
+if(!single_value->field_newWidth.match(other_value.newWidth(), legacy))return FALSE;
+if(!other_value.newHeight().is_bound()) return FALSE;
+if(!single_value->field_newHeight.match(other_value.newHeight(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeSizeReq.");
+}
+return FALSE;
+}
+
+boolean ChangeSizeReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectIDofObjectToSize.is_bound()
+
+ ||single_value->field_newWidth.is_bound()
+
+ ||single_value->field_newHeight.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean ChangeSizeReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectIDofObjectToSize.is_value()
+ &&single_value->field_newWidth.is_value()
+ &&single_value->field_newHeight.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void ChangeSizeReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangeSizeReq ChangeSizeReq_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 @IsobusVTMessageTypes.ChangeSizeReq.");
+ChangeSizeReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectIDofObjectToSize.is_bound()) {
+ret_val.objectIDofObjectToSize() = single_value->field_objectIDofObjectToSize.valueof();
+}
+if (single_value->field_newWidth.is_bound()) {
+ret_val.newWidth() = single_value->field_newWidth.valueof();
+}
+if (single_value->field_newHeight.is_bound()) {
+ret_val.newHeight() = single_value->field_newHeight.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void ChangeSizeReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangeSizeReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangeSizeReq_template[list_length];
+}
+
+ChangeSizeReq_template& ChangeSizeReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangeSizeReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangeSizeReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ChangeSizeReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ChangeSizeReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ChangeSizeReq.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& ChangeSizeReq_template::objectIDofObjectToSize()
+{
+set_specific();
+return single_value->field_objectIDofObjectToSize;
+}
+
+const INTEGER_template& ChangeSizeReq_template::objectIDofObjectToSize() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectIDofObjectToSize of a non-specific template of type @IsobusVTMessageTypes.ChangeSizeReq.");
+return single_value->field_objectIDofObjectToSize;
+}
+
+INTEGER_template& ChangeSizeReq_template::newWidth()
+{
+set_specific();
+return single_value->field_newWidth;
+}
+
+const INTEGER_template& ChangeSizeReq_template::newWidth() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field newWidth of a non-specific template of type @IsobusVTMessageTypes.ChangeSizeReq.");
+return single_value->field_newWidth;
+}
+
+INTEGER_template& ChangeSizeReq_template::newHeight()
+{
+set_specific();
+return single_value->field_newHeight;
+}
+
+const INTEGER_template& ChangeSizeReq_template::newHeight() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field newHeight of a non-specific template of type @IsobusVTMessageTypes.ChangeSizeReq.");
+return single_value->field_newHeight;
+}
+
+OCTETSTRING_template& ChangeSizeReq_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& ChangeSizeReq_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.ChangeSizeReq.");
+return single_value->field_reserved8;
+}
+
+int ChangeSizeReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeSizeReq 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 @IsobusVTMessageTypes.ChangeSizeReq 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 @IsobusVTMessageTypes.ChangeSizeReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeSizeReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeSizeReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeSizeReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeSizeReq.");
+  }
+  return 0;
+}
+
+void ChangeSizeReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectIDofObjectToSize := ");
+single_value->field_objectIDofObjectToSize.log();
+TTCN_Logger::log_event_str(", newWidth := ");
+single_value->field_newWidth.log();
+TTCN_Logger::log_event_str(", newHeight := ");
+single_value->field_newHeight.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangeSizeReq_template::log_match(const ChangeSizeReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectIDofObjectToSize.match(match_value.objectIDofObjectToSize(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectIDofObjectToSize");
+single_value->field_objectIDofObjectToSize.log_match(match_value.objectIDofObjectToSize(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_newWidth.match(match_value.newWidth(), legacy)){
+TTCN_Logger::log_logmatch_info(".newWidth");
+single_value->field_newWidth.log_match(match_value.newWidth(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_newHeight.match(match_value.newHeight(), legacy)){
+TTCN_Logger::log_logmatch_info(".newHeight");
+single_value->field_newHeight.log_match(match_value.newHeight(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectIDofObjectToSize := ");
+single_value->field_objectIDofObjectToSize.log_match(match_value.objectIDofObjectToSize(), legacy);
+TTCN_Logger::log_event_str(", newWidth := ");
+single_value->field_newWidth.log_match(match_value.newWidth(), legacy);
+TTCN_Logger::log_event_str(", newHeight := ");
+single_value->field_newHeight.log_match(match_value.newHeight(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 ChangeSizeReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectIDofObjectToSize.encode_text(text_buf);
+single_value->field_newWidth.encode_text(text_buf);
+single_value->field_newHeight.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.ChangeSizeReq.");
+}
+}
+
+void ChangeSizeReq_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_vtfunction.decode_text(text_buf);
+single_value->field_objectIDofObjectToSize.decode_text(text_buf);
+single_value->field_newWidth.decode_text(text_buf);
+single_value->field_newHeight.decode_text(text_buf);
+single_value->field_reserved8.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 ChangeSizeReq_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 @IsobusVTMessageTypes.ChangeSizeReq.");
+}
+}
+
+void ChangeSizeReq_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: {
+    ChangeSizeReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.ChangeSizeReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectIDofObjectToSize().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) newWidth().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) newHeight().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectIDofObjectToSize")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofObjectToSize().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(), "newWidth")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          newWidth().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(), "newHeight")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          newHeight().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangeSizeReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangeSizeReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangeSizeReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeSizeReq");
+single_value->field_objectIDofObjectToSize.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeSizeReq");
+single_value->field_newWidth.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeSizeReq");
+single_value->field_newHeight.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeSizeReq");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeSizeReq");
+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 : "@IsobusVTMessageTypes.ChangeSizeReq");
+}
+
+boolean ChangeSizeReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangeSizeReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangeSizeRes__errorCodes::ChangeSizeRes__errorCodes()
+{
+}
+
+ChangeSizeRes__errorCodes::ChangeSizeRes__errorCodes(const BOOLEAN& par_invalidObjectID,
+    const BOOLEAN& par_reserved1,
+    const BOOLEAN& par_reserved2,
+    const BOOLEAN& par_reserved3,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7)
+  :   field_invalidObjectID(par_invalidObjectID),
+  field_reserved1(par_reserved1),
+  field_reserved2(par_reserved2),
+  field_reserved3(par_reserved3),
+  field_anyOtherError(par_anyOtherError),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7)
+{
+}
+
+ChangeSizeRes__errorCodes::ChangeSizeRes__errorCodes(const ChangeSizeRes__errorCodes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangeSizeRes_errorCodes.");
+if (other_value.invalidObjectID().is_bound()) field_invalidObjectID = other_value.invalidObjectID();
+else field_invalidObjectID.clean_up();
+if (other_value.reserved1().is_bound()) field_reserved1 = other_value.reserved1();
+else field_reserved1.clean_up();
+if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+else field_reserved2.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+else field_anyOtherError.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+}
+
+void ChangeSizeRes__errorCodes::clean_up()
+{
+field_invalidObjectID.clean_up();
+field_reserved1.clean_up();
+field_reserved2.clean_up();
+field_reserved3.clean_up();
+field_anyOtherError.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangeSizeRes__errorCodes::get_descriptor() const { return &ChangeSizeRes__errorCodes_descr_; }
+ChangeSizeRes__errorCodes& ChangeSizeRes__errorCodes::operator=(const ChangeSizeRes__errorCodes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangeSizeRes_errorCodes.");
+  if (other_value.invalidObjectID().is_bound()) field_invalidObjectID = other_value.invalidObjectID();
+  else field_invalidObjectID.clean_up();
+  if (other_value.reserved1().is_bound()) field_reserved1 = other_value.reserved1();
+  else field_reserved1.clean_up();
+  if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+  else field_reserved2.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+  else field_anyOtherError.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+}
+return *this;
+}
+
+boolean ChangeSizeRes__errorCodes::operator==(const ChangeSizeRes__errorCodes& other_value) const
+{
+return field_invalidObjectID==other_value.field_invalidObjectID
+  && field_reserved1==other_value.field_reserved1
+  && field_reserved2==other_value.field_reserved2
+  && field_reserved3==other_value.field_reserved3
+  && field_anyOtherError==other_value.field_anyOtherError
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7;
+}
+
+boolean ChangeSizeRes__errorCodes::is_bound() const
+{
+return (field_invalidObjectID.is_bound())
+  || (field_reserved1.is_bound())
+  || (field_reserved2.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_anyOtherError.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound());
+}
+boolean ChangeSizeRes__errorCodes::is_value() const
+{
+return field_invalidObjectID.is_value()
+  && field_reserved1.is_value()
+  && field_reserved2.is_value()
+  && field_reserved3.is_value()
+  && field_anyOtherError.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value();
+}
+void ChangeSizeRes__errorCodes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ invalidObjectID := ");
+field_invalidObjectID.log();
+TTCN_Logger::log_event_str(", reserved1 := ");
+field_reserved1.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangeSizeRes__errorCodes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.ChangeSizeRes_errorCodes has 8 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) invalidObjectID().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved1().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "invalidObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidObjectID().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(), "reserved1")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved1().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ChangeSizeRes_errorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangeSizeRes_errorCodes");
+  }
+}
+
+void ChangeSizeRes__errorCodes::set_implicit_omit()
+{
+if (invalidObjectID().is_bound()) invalidObjectID().set_implicit_omit();
+if (reserved1().is_bound()) reserved1().set_implicit_omit();
+if (reserved2().is_bound()) reserved2().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (anyOtherError().is_bound()) anyOtherError().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+}
+
+void ChangeSizeRes__errorCodes::encode_text(Text_Buf& text_buf) const
+{
+field_invalidObjectID.encode_text(text_buf);
+field_reserved1.encode_text(text_buf);
+field_reserved2.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_anyOtherError.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+}
+
+void ChangeSizeRes__errorCodes::decode_text(Text_Buf& text_buf)
+{
+field_invalidObjectID.decode_text(text_buf);
+field_reserved1.decode_text(text_buf);
+field_reserved2.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_anyOtherError.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+}
+
+void ChangeSizeRes__errorCodes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangeSizeRes__errorCodes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangeSizeRes__errorCodes::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidObjectID.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved1.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved2.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_anyOtherError.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ChangeSizeRes__errorCodes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_invalidObjectID.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved1.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved2.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved3.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_anyOtherError.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved5.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved6.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved7.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangeSizeRes__errorCodes_template::single_value_struct {
+BOOLEAN_template field_invalidObjectID;
+BOOLEAN_template field_reserved1;
+BOOLEAN_template field_reserved2;
+BOOLEAN_template field_reserved3;
+BOOLEAN_template field_anyOtherError;
+BOOLEAN_template field_reserved5;
+BOOLEAN_template field_reserved6;
+BOOLEAN_template field_reserved7;
+};
+
+void ChangeSizeRes__errorCodes_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_invalidObjectID = ANY_VALUE;
+single_value->field_reserved1 = ANY_VALUE;
+single_value->field_reserved2 = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_anyOtherError = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+}
+}
+}
+
+void ChangeSizeRes__errorCodes_template::copy_value(const ChangeSizeRes__errorCodes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.invalidObjectID().is_bound()) {
+  single_value->field_invalidObjectID = other_value.invalidObjectID();
+} else {
+  single_value->field_invalidObjectID.clean_up();
+}
+if (other_value.reserved1().is_bound()) {
+  single_value->field_reserved1 = other_value.reserved1();
+} else {
+  single_value->field_reserved1.clean_up();
+}
+if (other_value.reserved2().is_bound()) {
+  single_value->field_reserved2 = other_value.reserved2();
+} else {
+  single_value->field_reserved2.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.anyOtherError().is_bound()) {
+  single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+  single_value->field_anyOtherError.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangeSizeRes__errorCodes_template::copy_template(const ChangeSizeRes__errorCodes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.invalidObjectID().get_selection()) {
+single_value->field_invalidObjectID = other_value.invalidObjectID();
+} else {
+single_value->field_invalidObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved1().get_selection()) {
+single_value->field_reserved1 = other_value.reserved1();
+} else {
+single_value->field_reserved1.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved2().get_selection()) {
+single_value->field_reserved2 = other_value.reserved2();
+} else {
+single_value->field_reserved2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.anyOtherError().get_selection()) {
+single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+single_value->field_anyOtherError.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangeSizeRes__errorCodes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeSizeRes_errorCodes.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangeSizeRes__errorCodes_template::ChangeSizeRes__errorCodes_template()
+{
+}
+
+ChangeSizeRes__errorCodes_template::ChangeSizeRes__errorCodes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangeSizeRes__errorCodes_template::ChangeSizeRes__errorCodes_template(const ChangeSizeRes__errorCodes& other_value)
+{
+copy_value(other_value);
+}
+
+ChangeSizeRes__errorCodes_template::ChangeSizeRes__errorCodes_template(const OPTIONAL<ChangeSizeRes__errorCodes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeSizeRes__errorCodes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangeSizeRes_errorCodes from an unbound optional field.");
+}
+}
+
+ChangeSizeRes__errorCodes_template::ChangeSizeRes__errorCodes_template(const ChangeSizeRes__errorCodes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangeSizeRes__errorCodes_template::~ChangeSizeRes__errorCodes_template()
+{
+clean_up();
+}
+
+ChangeSizeRes__errorCodes_template& ChangeSizeRes__errorCodes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangeSizeRes__errorCodes_template& ChangeSizeRes__errorCodes_template::operator=(const ChangeSizeRes__errorCodes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangeSizeRes__errorCodes_template& ChangeSizeRes__errorCodes_template::operator=(const OPTIONAL<ChangeSizeRes__errorCodes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeSizeRes__errorCodes&)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 @IsobusVTMessageTypes.ChangeSizeRes_errorCodes.");
+}
+return *this;
+}
+
+ChangeSizeRes__errorCodes_template& ChangeSizeRes__errorCodes_template::operator=(const ChangeSizeRes__errorCodes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangeSizeRes__errorCodes_template::match(const ChangeSizeRes__errorCodes& 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.invalidObjectID().is_bound()) return FALSE;
+if(!single_value->field_invalidObjectID.match(other_value.invalidObjectID(), legacy))return FALSE;
+if(!other_value.reserved1().is_bound()) return FALSE;
+if(!single_value->field_reserved1.match(other_value.reserved1(), legacy))return FALSE;
+if(!other_value.reserved2().is_bound()) return FALSE;
+if(!single_value->field_reserved2.match(other_value.reserved2(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.anyOtherError().is_bound()) return FALSE;
+if(!single_value->field_anyOtherError.match(other_value.anyOtherError(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeSizeRes_errorCodes.");
+}
+return FALSE;
+}
+
+boolean ChangeSizeRes__errorCodes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_invalidObjectID.is_bound()
+
+ ||single_value->field_reserved1.is_bound()
+
+ ||single_value->field_reserved2.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_anyOtherError.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+;
+}
+
+boolean ChangeSizeRes__errorCodes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_invalidObjectID.is_value()
+ &&single_value->field_reserved1.is_value()
+ &&single_value->field_reserved2.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_anyOtherError.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value();
+}
+
+void ChangeSizeRes__errorCodes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangeSizeRes__errorCodes ChangeSizeRes__errorCodes_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 @IsobusVTMessageTypes.ChangeSizeRes_errorCodes.");
+ChangeSizeRes__errorCodes ret_val;
+if (single_value->field_invalidObjectID.is_bound()) {
+ret_val.invalidObjectID() = single_value->field_invalidObjectID.valueof();
+}
+if (single_value->field_reserved1.is_bound()) {
+ret_val.reserved1() = single_value->field_reserved1.valueof();
+}
+if (single_value->field_reserved2.is_bound()) {
+ret_val.reserved2() = single_value->field_reserved2.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_anyOtherError.is_bound()) {
+ret_val.anyOtherError() = single_value->field_anyOtherError.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+return ret_val;
+}
+
+void ChangeSizeRes__errorCodes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangeSizeRes_errorCodes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangeSizeRes__errorCodes_template[list_length];
+}
+
+ChangeSizeRes__errorCodes_template& ChangeSizeRes__errorCodes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangeSizeRes_errorCodes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangeSizeRes_errorCodes.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& ChangeSizeRes__errorCodes_template::invalidObjectID()
+{
+set_specific();
+return single_value->field_invalidObjectID;
+}
+
+const BOOLEAN_template& ChangeSizeRes__errorCodes_template::invalidObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidObjectID of a non-specific template of type @IsobusVTMessageTypes.ChangeSizeRes_errorCodes.");
+return single_value->field_invalidObjectID;
+}
+
+BOOLEAN_template& ChangeSizeRes__errorCodes_template::reserved1()
+{
+set_specific();
+return single_value->field_reserved1;
+}
+
+const BOOLEAN_template& ChangeSizeRes__errorCodes_template::reserved1() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved1 of a non-specific template of type @IsobusVTMessageTypes.ChangeSizeRes_errorCodes.");
+return single_value->field_reserved1;
+}
+
+BOOLEAN_template& ChangeSizeRes__errorCodes_template::reserved2()
+{
+set_specific();
+return single_value->field_reserved2;
+}
+
+const BOOLEAN_template& ChangeSizeRes__errorCodes_template::reserved2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved2 of a non-specific template of type @IsobusVTMessageTypes.ChangeSizeRes_errorCodes.");
+return single_value->field_reserved2;
+}
+
+BOOLEAN_template& ChangeSizeRes__errorCodes_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const BOOLEAN_template& ChangeSizeRes__errorCodes_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.ChangeSizeRes_errorCodes.");
+return single_value->field_reserved3;
+}
+
+BOOLEAN_template& ChangeSizeRes__errorCodes_template::anyOtherError()
+{
+set_specific();
+return single_value->field_anyOtherError;
+}
+
+const BOOLEAN_template& ChangeSizeRes__errorCodes_template::anyOtherError() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field anyOtherError of a non-specific template of type @IsobusVTMessageTypes.ChangeSizeRes_errorCodes.");
+return single_value->field_anyOtherError;
+}
+
+BOOLEAN_template& ChangeSizeRes__errorCodes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const BOOLEAN_template& ChangeSizeRes__errorCodes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.ChangeSizeRes_errorCodes.");
+return single_value->field_reserved5;
+}
+
+BOOLEAN_template& ChangeSizeRes__errorCodes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const BOOLEAN_template& ChangeSizeRes__errorCodes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.ChangeSizeRes_errorCodes.");
+return single_value->field_reserved6;
+}
+
+BOOLEAN_template& ChangeSizeRes__errorCodes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const BOOLEAN_template& ChangeSizeRes__errorCodes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ChangeSizeRes_errorCodes.");
+return single_value->field_reserved7;
+}
+
+int ChangeSizeRes__errorCodes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeSizeRes_errorCodes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeSizeRes_errorCodes 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 @IsobusVTMessageTypes.ChangeSizeRes_errorCodes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeSizeRes_errorCodes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeSizeRes_errorCodes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeSizeRes_errorCodes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeSizeRes_errorCodes.");
+  }
+  return 0;
+}
+
+void ChangeSizeRes__errorCodes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ invalidObjectID := ");
+single_value->field_invalidObjectID.log();
+TTCN_Logger::log_event_str(", reserved1 := ");
+single_value->field_reserved1.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangeSizeRes__errorCodes_template::log_match(const ChangeSizeRes__errorCodes& 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_invalidObjectID.match(match_value.invalidObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidObjectID");
+single_value->field_invalidObjectID.log_match(match_value.invalidObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved1.match(match_value.reserved1(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved1");
+single_value->field_reserved1.log_match(match_value.reserved1(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved2.match(match_value.reserved2(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved2");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_anyOtherError.match(match_value.anyOtherError(), legacy)){
+TTCN_Logger::log_logmatch_info(".anyOtherError");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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("{ invalidObjectID := ");
+single_value->field_invalidObjectID.log_match(match_value.invalidObjectID(), legacy);
+TTCN_Logger::log_event_str(", reserved1 := ");
+single_value->field_reserved1.log_match(match_value.reserved1(), legacy);
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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 ChangeSizeRes__errorCodes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_invalidObjectID.encode_text(text_buf);
+single_value->field_reserved1.encode_text(text_buf);
+single_value->field_reserved2.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_anyOtherError.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.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 @IsobusVTMessageTypes.ChangeSizeRes_errorCodes.");
+}
+}
+
+void ChangeSizeRes__errorCodes_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_invalidObjectID.decode_text(text_buf);
+single_value->field_reserved1.decode_text(text_buf);
+single_value->field_reserved2.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_anyOtherError.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.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 ChangeSizeRes__errorCodes_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 @IsobusVTMessageTypes.ChangeSizeRes_errorCodes.");
+}
+}
+
+void ChangeSizeRes__errorCodes_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: {
+    ChangeSizeRes__errorCodes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.ChangeSizeRes_errorCodes has 8 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) invalidObjectID().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved1().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "invalidObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidObjectID().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(), "reserved1")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved1().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ChangeSizeRes_errorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangeSizeRes_errorCodes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangeSizeRes__errorCodes_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_invalidObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeSizeRes_errorCodes");
+single_value->field_reserved1.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeSizeRes_errorCodes");
+single_value->field_reserved2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeSizeRes_errorCodes");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeSizeRes_errorCodes");
+single_value->field_anyOtherError.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeSizeRes_errorCodes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeSizeRes_errorCodes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeSizeRes_errorCodes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeSizeRes_errorCodes");
+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 : "@IsobusVTMessageTypes.ChangeSizeRes_errorCodes");
+}
+
+boolean ChangeSizeRes__errorCodes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangeSizeRes__errorCodes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangeSizeRes::ChangeSizeRes()
+{
+}
+
+ChangeSizeRes::ChangeSizeRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectIDofObjectToSize,
+    const ChangeSizeRes__errorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_objectIDofObjectToSize(par_objectIDofObjectToSize),
+  field_errorCodes(par_errorCodes),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+ChangeSizeRes::ChangeSizeRes(const ChangeSizeRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangeSizeRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectIDofObjectToSize().is_bound()) field_objectIDofObjectToSize = other_value.objectIDofObjectToSize();
+else field_objectIDofObjectToSize.clean_up();
+if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+else field_errorCodes.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void ChangeSizeRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectIDofObjectToSize.clean_up();
+field_errorCodes.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangeSizeRes::get_descriptor() const { return &ChangeSizeRes_descr_; }
+ChangeSizeRes& ChangeSizeRes::operator=(const ChangeSizeRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangeSizeRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectIDofObjectToSize().is_bound()) field_objectIDofObjectToSize = other_value.objectIDofObjectToSize();
+  else field_objectIDofObjectToSize.clean_up();
+  if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+  else field_errorCodes.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean ChangeSizeRes::operator==(const ChangeSizeRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectIDofObjectToSize==other_value.field_objectIDofObjectToSize
+  && field_errorCodes==other_value.field_errorCodes
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean ChangeSizeRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectIDofObjectToSize.is_bound())
+  || (field_errorCodes.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean ChangeSizeRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectIDofObjectToSize.is_value()
+  && field_errorCodes.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void ChangeSizeRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectIDofObjectToSize := ");
+field_objectIDofObjectToSize.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangeSizeRes::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 @IsobusVTMessageTypes.ChangeSizeRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectIDofObjectToSize().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectIDofObjectToSize")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofObjectToSize().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangeSizeRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangeSizeRes");
+  }
+}
+
+void ChangeSizeRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectIDofObjectToSize().is_bound()) objectIDofObjectToSize().set_implicit_omit();
+if (errorCodes().is_bound()) errorCodes().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void ChangeSizeRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectIDofObjectToSize.encode_text(text_buf);
+field_errorCodes.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void ChangeSizeRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectIDofObjectToSize.decode_text(text_buf);
+field_errorCodes.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void ChangeSizeRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangeSizeRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangeSizeRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectIDofObjectToSize.RAW_decode(ValidObjectID_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, ChangeSizeRes__errorCodes_descr_.raw->forceomit);
+  decoded_field_length = field_errorCodes.RAW_decode(ChangeSizeRes__errorCodes_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, ChangeSizeRes_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(ChangeSizeRes_reserved5_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, ChangeSizeRes_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(ChangeSizeRes_reserved6_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, ChangeSizeRes_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(ChangeSizeRes_reserved7_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, ChangeSizeRes_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(ChangeSizeRes_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ChangeSizeRes::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ChangeSizeRes__errorCodes_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, ChangeSizeRes_reserved5_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, ChangeSizeRes_reserved6_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, ChangeSizeRes_reserved7_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, ChangeSizeRes_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectIDofObjectToSize.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_errorCodes.RAW_encode(ChangeSizeRes__errorCodes_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved5.RAW_encode(ChangeSizeRes_reserved5_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved6.RAW_encode(ChangeSizeRes_reserved6_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved7.RAW_encode(ChangeSizeRes_reserved7_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved8.RAW_encode(ChangeSizeRes_reserved8_descr_, *myleaf.body.node.nodes[6]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangeSizeRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectIDofObjectToSize;
+ChangeSizeRes__errorCodes_template field_errorCodes;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void ChangeSizeRes_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_vtfunction = ANY_VALUE;
+single_value->field_objectIDofObjectToSize = ANY_VALUE;
+single_value->field_errorCodes = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void ChangeSizeRes_template::copy_value(const ChangeSizeRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectIDofObjectToSize().is_bound()) {
+  single_value->field_objectIDofObjectToSize = other_value.objectIDofObjectToSize();
+} else {
+  single_value->field_objectIDofObjectToSize.clean_up();
+}
+if (other_value.errorCodes().is_bound()) {
+  single_value->field_errorCodes = other_value.errorCodes();
+} else {
+  single_value->field_errorCodes.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangeSizeRes_template::copy_template(const ChangeSizeRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectIDofObjectToSize().get_selection()) {
+single_value->field_objectIDofObjectToSize = other_value.objectIDofObjectToSize();
+} else {
+single_value->field_objectIDofObjectToSize.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.errorCodes().get_selection()) {
+single_value->field_errorCodes = other_value.errorCodes();
+} else {
+single_value->field_errorCodes.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangeSizeRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeSizeRes.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangeSizeRes_template::ChangeSizeRes_template()
+{
+}
+
+ChangeSizeRes_template::ChangeSizeRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangeSizeRes_template::ChangeSizeRes_template(const ChangeSizeRes& other_value)
+{
+copy_value(other_value);
+}
+
+ChangeSizeRes_template::ChangeSizeRes_template(const OPTIONAL<ChangeSizeRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeSizeRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangeSizeRes from an unbound optional field.");
+}
+}
+
+ChangeSizeRes_template::ChangeSizeRes_template(const ChangeSizeRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangeSizeRes_template::~ChangeSizeRes_template()
+{
+clean_up();
+}
+
+ChangeSizeRes_template& ChangeSizeRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangeSizeRes_template& ChangeSizeRes_template::operator=(const ChangeSizeRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangeSizeRes_template& ChangeSizeRes_template::operator=(const OPTIONAL<ChangeSizeRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeSizeRes&)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 @IsobusVTMessageTypes.ChangeSizeRes.");
+}
+return *this;
+}
+
+ChangeSizeRes_template& ChangeSizeRes_template::operator=(const ChangeSizeRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangeSizeRes_template::match(const ChangeSizeRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectIDofObjectToSize().is_bound()) return FALSE;
+if(!single_value->field_objectIDofObjectToSize.match(other_value.objectIDofObjectToSize(), legacy))return FALSE;
+if(!other_value.errorCodes().is_bound()) return FALSE;
+if(!single_value->field_errorCodes.match(other_value.errorCodes(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeSizeRes.");
+}
+return FALSE;
+}
+
+boolean ChangeSizeRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectIDofObjectToSize.is_bound()
+
+ ||single_value->field_errorCodes.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean ChangeSizeRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectIDofObjectToSize.is_value()
+ &&single_value->field_errorCodes.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void ChangeSizeRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangeSizeRes ChangeSizeRes_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 @IsobusVTMessageTypes.ChangeSizeRes.");
+ChangeSizeRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectIDofObjectToSize.is_bound()) {
+ret_val.objectIDofObjectToSize() = single_value->field_objectIDofObjectToSize.valueof();
+}
+if (single_value->field_errorCodes.is_bound()) {
+ret_val.errorCodes() = single_value->field_errorCodes.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void ChangeSizeRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangeSizeRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangeSizeRes_template[list_length];
+}
+
+ChangeSizeRes_template& ChangeSizeRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangeSizeRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangeSizeRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ChangeSizeRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ChangeSizeRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ChangeSizeRes.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& ChangeSizeRes_template::objectIDofObjectToSize()
+{
+set_specific();
+return single_value->field_objectIDofObjectToSize;
+}
+
+const INTEGER_template& ChangeSizeRes_template::objectIDofObjectToSize() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectIDofObjectToSize of a non-specific template of type @IsobusVTMessageTypes.ChangeSizeRes.");
+return single_value->field_objectIDofObjectToSize;
+}
+
+ChangeSizeRes__errorCodes_template& ChangeSizeRes_template::errorCodes()
+{
+set_specific();
+return single_value->field_errorCodes;
+}
+
+const ChangeSizeRes__errorCodes_template& ChangeSizeRes_template::errorCodes() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field errorCodes of a non-specific template of type @IsobusVTMessageTypes.ChangeSizeRes.");
+return single_value->field_errorCodes;
+}
+
+OCTETSTRING_template& ChangeSizeRes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& ChangeSizeRes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.ChangeSizeRes.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& ChangeSizeRes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& ChangeSizeRes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.ChangeSizeRes.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& ChangeSizeRes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& ChangeSizeRes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ChangeSizeRes.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& ChangeSizeRes_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& ChangeSizeRes_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.ChangeSizeRes.");
+return single_value->field_reserved8;
+}
+
+int ChangeSizeRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeSizeRes 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 @IsobusVTMessageTypes.ChangeSizeRes 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 @IsobusVTMessageTypes.ChangeSizeRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeSizeRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeSizeRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeSizeRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeSizeRes.");
+  }
+  return 0;
+}
+
+void ChangeSizeRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectIDofObjectToSize := ");
+single_value->field_objectIDofObjectToSize.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangeSizeRes_template::log_match(const ChangeSizeRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectIDofObjectToSize.match(match_value.objectIDofObjectToSize(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectIDofObjectToSize");
+single_value->field_objectIDofObjectToSize.log_match(match_value.objectIDofObjectToSize(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_errorCodes.match(match_value.errorCodes(), legacy)){
+TTCN_Logger::log_logmatch_info(".errorCodes");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectIDofObjectToSize := ");
+single_value->field_objectIDofObjectToSize.log_match(match_value.objectIDofObjectToSize(), legacy);
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 ChangeSizeRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectIDofObjectToSize.encode_text(text_buf);
+single_value->field_errorCodes.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.ChangeSizeRes.");
+}
+}
+
+void ChangeSizeRes_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_vtfunction.decode_text(text_buf);
+single_value->field_objectIDofObjectToSize.decode_text(text_buf);
+single_value->field_errorCodes.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 ChangeSizeRes_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 @IsobusVTMessageTypes.ChangeSizeRes.");
+}
+}
+
+void ChangeSizeRes_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: {
+    ChangeSizeRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.ChangeSizeRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectIDofObjectToSize().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectIDofObjectToSize")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofObjectToSize().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangeSizeRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangeSizeRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangeSizeRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeSizeRes");
+single_value->field_objectIDofObjectToSize.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeSizeRes");
+single_value->field_errorCodes.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeSizeRes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeSizeRes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeSizeRes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeSizeRes");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeSizeRes");
+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 : "@IsobusVTMessageTypes.ChangeSizeRes");
+}
+
+boolean ChangeSizeRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangeSizeRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangeBackgroundColourReq::ChangeBackgroundColourReq()
+{
+}
+
+ChangeBackgroundColourReq::ChangeBackgroundColourReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectIDofObjectToChange,
+    const INTEGER& par_newBackgroundColour,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_objectIDofObjectToChange(par_objectIDofObjectToChange),
+  field_newBackgroundColour(par_newBackgroundColour),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+ChangeBackgroundColourReq::ChangeBackgroundColourReq(const ChangeBackgroundColourReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangeBackgroundColourReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectIDofObjectToChange().is_bound()) field_objectIDofObjectToChange = other_value.objectIDofObjectToChange();
+else field_objectIDofObjectToChange.clean_up();
+if (other_value.newBackgroundColour().is_bound()) field_newBackgroundColour = other_value.newBackgroundColour();
+else field_newBackgroundColour.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void ChangeBackgroundColourReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectIDofObjectToChange.clean_up();
+field_newBackgroundColour.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangeBackgroundColourReq::get_descriptor() const { return &ChangeBackgroundColourReq_descr_; }
+ChangeBackgroundColourReq& ChangeBackgroundColourReq::operator=(const ChangeBackgroundColourReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangeBackgroundColourReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectIDofObjectToChange().is_bound()) field_objectIDofObjectToChange = other_value.objectIDofObjectToChange();
+  else field_objectIDofObjectToChange.clean_up();
+  if (other_value.newBackgroundColour().is_bound()) field_newBackgroundColour = other_value.newBackgroundColour();
+  else field_newBackgroundColour.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean ChangeBackgroundColourReq::operator==(const ChangeBackgroundColourReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectIDofObjectToChange==other_value.field_objectIDofObjectToChange
+  && field_newBackgroundColour==other_value.field_newBackgroundColour
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean ChangeBackgroundColourReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectIDofObjectToChange.is_bound())
+  || (field_newBackgroundColour.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean ChangeBackgroundColourReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectIDofObjectToChange.is_value()
+  && field_newBackgroundColour.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void ChangeBackgroundColourReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectIDofObjectToChange := ");
+field_objectIDofObjectToChange.log();
+TTCN_Logger::log_event_str(", newBackgroundColour := ");
+field_newBackgroundColour.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangeBackgroundColourReq::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 @IsobusVTMessageTypes.ChangeBackgroundColourReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectIDofObjectToChange().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) newBackgroundColour().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectIDofObjectToChange")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofObjectToChange().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(), "newBackgroundColour")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          newBackgroundColour().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangeBackgroundColourReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangeBackgroundColourReq");
+  }
+}
+
+void ChangeBackgroundColourReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectIDofObjectToChange().is_bound()) objectIDofObjectToChange().set_implicit_omit();
+if (newBackgroundColour().is_bound()) newBackgroundColour().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void ChangeBackgroundColourReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectIDofObjectToChange.encode_text(text_buf);
+field_newBackgroundColour.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void ChangeBackgroundColourReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectIDofObjectToChange.decode_text(text_buf);
+field_newBackgroundColour.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void ChangeBackgroundColourReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangeBackgroundColourReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangeBackgroundColourReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectIDofObjectToChange.RAW_decode(ValidObjectID_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, ColorType_descr_.raw->forceomit);
+  decoded_field_length = field_newBackgroundColour.RAW_decode(ColorType_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, ChangeBackgroundColourReq_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(ChangeBackgroundColourReq_reserved5_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, ChangeBackgroundColourReq_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(ChangeBackgroundColourReq_reserved6_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, ChangeBackgroundColourReq_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(ChangeBackgroundColourReq_reserved7_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, ChangeBackgroundColourReq_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(ChangeBackgroundColourReq_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ChangeBackgroundColourReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ColorType_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, ChangeBackgroundColourReq_reserved5_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, ChangeBackgroundColourReq_reserved6_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, ChangeBackgroundColourReq_reserved7_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, ChangeBackgroundColourReq_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectIDofObjectToChange.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_newBackgroundColour.RAW_encode(ColorType_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved5.RAW_encode(ChangeBackgroundColourReq_reserved5_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved6.RAW_encode(ChangeBackgroundColourReq_reserved6_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved7.RAW_encode(ChangeBackgroundColourReq_reserved7_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved8.RAW_encode(ChangeBackgroundColourReq_reserved8_descr_, *myleaf.body.node.nodes[6]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangeBackgroundColourReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectIDofObjectToChange;
+INTEGER_template field_newBackgroundColour;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void ChangeBackgroundColourReq_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_vtfunction = ANY_VALUE;
+single_value->field_objectIDofObjectToChange = ANY_VALUE;
+single_value->field_newBackgroundColour = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void ChangeBackgroundColourReq_template::copy_value(const ChangeBackgroundColourReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectIDofObjectToChange().is_bound()) {
+  single_value->field_objectIDofObjectToChange = other_value.objectIDofObjectToChange();
+} else {
+  single_value->field_objectIDofObjectToChange.clean_up();
+}
+if (other_value.newBackgroundColour().is_bound()) {
+  single_value->field_newBackgroundColour = other_value.newBackgroundColour();
+} else {
+  single_value->field_newBackgroundColour.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangeBackgroundColourReq_template::copy_template(const ChangeBackgroundColourReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectIDofObjectToChange().get_selection()) {
+single_value->field_objectIDofObjectToChange = other_value.objectIDofObjectToChange();
+} else {
+single_value->field_objectIDofObjectToChange.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.newBackgroundColour().get_selection()) {
+single_value->field_newBackgroundColour = other_value.newBackgroundColour();
+} else {
+single_value->field_newBackgroundColour.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangeBackgroundColourReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeBackgroundColourReq.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangeBackgroundColourReq_template::ChangeBackgroundColourReq_template()
+{
+}
+
+ChangeBackgroundColourReq_template::ChangeBackgroundColourReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangeBackgroundColourReq_template::ChangeBackgroundColourReq_template(const ChangeBackgroundColourReq& other_value)
+{
+copy_value(other_value);
+}
+
+ChangeBackgroundColourReq_template::ChangeBackgroundColourReq_template(const OPTIONAL<ChangeBackgroundColourReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeBackgroundColourReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangeBackgroundColourReq from an unbound optional field.");
+}
+}
+
+ChangeBackgroundColourReq_template::ChangeBackgroundColourReq_template(const ChangeBackgroundColourReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangeBackgroundColourReq_template::~ChangeBackgroundColourReq_template()
+{
+clean_up();
+}
+
+ChangeBackgroundColourReq_template& ChangeBackgroundColourReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangeBackgroundColourReq_template& ChangeBackgroundColourReq_template::operator=(const ChangeBackgroundColourReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangeBackgroundColourReq_template& ChangeBackgroundColourReq_template::operator=(const OPTIONAL<ChangeBackgroundColourReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeBackgroundColourReq&)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 @IsobusVTMessageTypes.ChangeBackgroundColourReq.");
+}
+return *this;
+}
+
+ChangeBackgroundColourReq_template& ChangeBackgroundColourReq_template::operator=(const ChangeBackgroundColourReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangeBackgroundColourReq_template::match(const ChangeBackgroundColourReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectIDofObjectToChange().is_bound()) return FALSE;
+if(!single_value->field_objectIDofObjectToChange.match(other_value.objectIDofObjectToChange(), legacy))return FALSE;
+if(!other_value.newBackgroundColour().is_bound()) return FALSE;
+if(!single_value->field_newBackgroundColour.match(other_value.newBackgroundColour(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeBackgroundColourReq.");
+}
+return FALSE;
+}
+
+boolean ChangeBackgroundColourReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectIDofObjectToChange.is_bound()
+
+ ||single_value->field_newBackgroundColour.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean ChangeBackgroundColourReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectIDofObjectToChange.is_value()
+ &&single_value->field_newBackgroundColour.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void ChangeBackgroundColourReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangeBackgroundColourReq ChangeBackgroundColourReq_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 @IsobusVTMessageTypes.ChangeBackgroundColourReq.");
+ChangeBackgroundColourReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectIDofObjectToChange.is_bound()) {
+ret_val.objectIDofObjectToChange() = single_value->field_objectIDofObjectToChange.valueof();
+}
+if (single_value->field_newBackgroundColour.is_bound()) {
+ret_val.newBackgroundColour() = single_value->field_newBackgroundColour.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void ChangeBackgroundColourReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangeBackgroundColourReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangeBackgroundColourReq_template[list_length];
+}
+
+ChangeBackgroundColourReq_template& ChangeBackgroundColourReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangeBackgroundColourReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangeBackgroundColourReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ChangeBackgroundColourReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ChangeBackgroundColourReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ChangeBackgroundColourReq.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& ChangeBackgroundColourReq_template::objectIDofObjectToChange()
+{
+set_specific();
+return single_value->field_objectIDofObjectToChange;
+}
+
+const INTEGER_template& ChangeBackgroundColourReq_template::objectIDofObjectToChange() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectIDofObjectToChange of a non-specific template of type @IsobusVTMessageTypes.ChangeBackgroundColourReq.");
+return single_value->field_objectIDofObjectToChange;
+}
+
+INTEGER_template& ChangeBackgroundColourReq_template::newBackgroundColour()
+{
+set_specific();
+return single_value->field_newBackgroundColour;
+}
+
+const INTEGER_template& ChangeBackgroundColourReq_template::newBackgroundColour() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field newBackgroundColour of a non-specific template of type @IsobusVTMessageTypes.ChangeBackgroundColourReq.");
+return single_value->field_newBackgroundColour;
+}
+
+OCTETSTRING_template& ChangeBackgroundColourReq_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& ChangeBackgroundColourReq_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.ChangeBackgroundColourReq.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& ChangeBackgroundColourReq_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& ChangeBackgroundColourReq_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.ChangeBackgroundColourReq.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& ChangeBackgroundColourReq_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& ChangeBackgroundColourReq_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ChangeBackgroundColourReq.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& ChangeBackgroundColourReq_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& ChangeBackgroundColourReq_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.ChangeBackgroundColourReq.");
+return single_value->field_reserved8;
+}
+
+int ChangeBackgroundColourReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeBackgroundColourReq 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 @IsobusVTMessageTypes.ChangeBackgroundColourReq 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 @IsobusVTMessageTypes.ChangeBackgroundColourReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeBackgroundColourReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeBackgroundColourReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeBackgroundColourReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeBackgroundColourReq.");
+  }
+  return 0;
+}
+
+void ChangeBackgroundColourReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectIDofObjectToChange := ");
+single_value->field_objectIDofObjectToChange.log();
+TTCN_Logger::log_event_str(", newBackgroundColour := ");
+single_value->field_newBackgroundColour.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangeBackgroundColourReq_template::log_match(const ChangeBackgroundColourReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectIDofObjectToChange.match(match_value.objectIDofObjectToChange(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectIDofObjectToChange");
+single_value->field_objectIDofObjectToChange.log_match(match_value.objectIDofObjectToChange(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_newBackgroundColour.match(match_value.newBackgroundColour(), legacy)){
+TTCN_Logger::log_logmatch_info(".newBackgroundColour");
+single_value->field_newBackgroundColour.log_match(match_value.newBackgroundColour(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectIDofObjectToChange := ");
+single_value->field_objectIDofObjectToChange.log_match(match_value.objectIDofObjectToChange(), legacy);
+TTCN_Logger::log_event_str(", newBackgroundColour := ");
+single_value->field_newBackgroundColour.log_match(match_value.newBackgroundColour(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 ChangeBackgroundColourReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectIDofObjectToChange.encode_text(text_buf);
+single_value->field_newBackgroundColour.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.ChangeBackgroundColourReq.");
+}
+}
+
+void ChangeBackgroundColourReq_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_vtfunction.decode_text(text_buf);
+single_value->field_objectIDofObjectToChange.decode_text(text_buf);
+single_value->field_newBackgroundColour.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 ChangeBackgroundColourReq_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 @IsobusVTMessageTypes.ChangeBackgroundColourReq.");
+}
+}
+
+void ChangeBackgroundColourReq_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: {
+    ChangeBackgroundColourReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.ChangeBackgroundColourReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectIDofObjectToChange().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) newBackgroundColour().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectIDofObjectToChange")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofObjectToChange().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(), "newBackgroundColour")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          newBackgroundColour().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangeBackgroundColourReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangeBackgroundColourReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangeBackgroundColourReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeBackgroundColourReq");
+single_value->field_objectIDofObjectToChange.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeBackgroundColourReq");
+single_value->field_newBackgroundColour.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeBackgroundColourReq");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeBackgroundColourReq");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeBackgroundColourReq");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeBackgroundColourReq");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeBackgroundColourReq");
+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 : "@IsobusVTMessageTypes.ChangeBackgroundColourReq");
+}
+
+boolean ChangeBackgroundColourReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangeBackgroundColourReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangeBackgroundColourRes__errorCodes::ChangeBackgroundColourRes__errorCodes()
+{
+}
+
+ChangeBackgroundColourRes__errorCodes::ChangeBackgroundColourRes__errorCodes(const BOOLEAN& par_invalidObjectID,
+    const BOOLEAN& par_invalidColourCode,
+    const BOOLEAN& par_reserved2,
+    const BOOLEAN& par_reserved3,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7)
+  :   field_invalidObjectID(par_invalidObjectID),
+  field_invalidColourCode(par_invalidColourCode),
+  field_reserved2(par_reserved2),
+  field_reserved3(par_reserved3),
+  field_anyOtherError(par_anyOtherError),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7)
+{
+}
+
+ChangeBackgroundColourRes__errorCodes::ChangeBackgroundColourRes__errorCodes(const ChangeBackgroundColourRes__errorCodes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes.");
+if (other_value.invalidObjectID().is_bound()) field_invalidObjectID = other_value.invalidObjectID();
+else field_invalidObjectID.clean_up();
+if (other_value.invalidColourCode().is_bound()) field_invalidColourCode = other_value.invalidColourCode();
+else field_invalidColourCode.clean_up();
+if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+else field_reserved2.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+else field_anyOtherError.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+}
+
+void ChangeBackgroundColourRes__errorCodes::clean_up()
+{
+field_invalidObjectID.clean_up();
+field_invalidColourCode.clean_up();
+field_reserved2.clean_up();
+field_reserved3.clean_up();
+field_anyOtherError.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangeBackgroundColourRes__errorCodes::get_descriptor() const { return &ChangeBackgroundColourRes__errorCodes_descr_; }
+ChangeBackgroundColourRes__errorCodes& ChangeBackgroundColourRes__errorCodes::operator=(const ChangeBackgroundColourRes__errorCodes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes.");
+  if (other_value.invalidObjectID().is_bound()) field_invalidObjectID = other_value.invalidObjectID();
+  else field_invalidObjectID.clean_up();
+  if (other_value.invalidColourCode().is_bound()) field_invalidColourCode = other_value.invalidColourCode();
+  else field_invalidColourCode.clean_up();
+  if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+  else field_reserved2.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+  else field_anyOtherError.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+}
+return *this;
+}
+
+boolean ChangeBackgroundColourRes__errorCodes::operator==(const ChangeBackgroundColourRes__errorCodes& other_value) const
+{
+return field_invalidObjectID==other_value.field_invalidObjectID
+  && field_invalidColourCode==other_value.field_invalidColourCode
+  && field_reserved2==other_value.field_reserved2
+  && field_reserved3==other_value.field_reserved3
+  && field_anyOtherError==other_value.field_anyOtherError
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7;
+}
+
+boolean ChangeBackgroundColourRes__errorCodes::is_bound() const
+{
+return (field_invalidObjectID.is_bound())
+  || (field_invalidColourCode.is_bound())
+  || (field_reserved2.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_anyOtherError.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound());
+}
+boolean ChangeBackgroundColourRes__errorCodes::is_value() const
+{
+return field_invalidObjectID.is_value()
+  && field_invalidColourCode.is_value()
+  && field_reserved2.is_value()
+  && field_reserved3.is_value()
+  && field_anyOtherError.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value();
+}
+void ChangeBackgroundColourRes__errorCodes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ invalidObjectID := ");
+field_invalidObjectID.log();
+TTCN_Logger::log_event_str(", invalidColourCode := ");
+field_invalidColourCode.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangeBackgroundColourRes__errorCodes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes has 8 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) invalidObjectID().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) invalidColourCode().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "invalidObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidObjectID().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(), "invalidColourCode")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidColourCode().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes");
+  }
+}
+
+void ChangeBackgroundColourRes__errorCodes::set_implicit_omit()
+{
+if (invalidObjectID().is_bound()) invalidObjectID().set_implicit_omit();
+if (invalidColourCode().is_bound()) invalidColourCode().set_implicit_omit();
+if (reserved2().is_bound()) reserved2().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (anyOtherError().is_bound()) anyOtherError().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+}
+
+void ChangeBackgroundColourRes__errorCodes::encode_text(Text_Buf& text_buf) const
+{
+field_invalidObjectID.encode_text(text_buf);
+field_invalidColourCode.encode_text(text_buf);
+field_reserved2.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_anyOtherError.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+}
+
+void ChangeBackgroundColourRes__errorCodes::decode_text(Text_Buf& text_buf)
+{
+field_invalidObjectID.decode_text(text_buf);
+field_invalidColourCode.decode_text(text_buf);
+field_reserved2.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_anyOtherError.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+}
+
+void ChangeBackgroundColourRes__errorCodes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangeBackgroundColourRes__errorCodes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangeBackgroundColourRes__errorCodes::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidObjectID.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidColourCode.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved2.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_anyOtherError.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ChangeBackgroundColourRes__errorCodes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_invalidObjectID.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_invalidColourCode.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved2.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved3.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_anyOtherError.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved5.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved6.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved7.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangeBackgroundColourRes__errorCodes_template::single_value_struct {
+BOOLEAN_template field_invalidObjectID;
+BOOLEAN_template field_invalidColourCode;
+BOOLEAN_template field_reserved2;
+BOOLEAN_template field_reserved3;
+BOOLEAN_template field_anyOtherError;
+BOOLEAN_template field_reserved5;
+BOOLEAN_template field_reserved6;
+BOOLEAN_template field_reserved7;
+};
+
+void ChangeBackgroundColourRes__errorCodes_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_invalidObjectID = ANY_VALUE;
+single_value->field_invalidColourCode = ANY_VALUE;
+single_value->field_reserved2 = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_anyOtherError = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+}
+}
+}
+
+void ChangeBackgroundColourRes__errorCodes_template::copy_value(const ChangeBackgroundColourRes__errorCodes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.invalidObjectID().is_bound()) {
+  single_value->field_invalidObjectID = other_value.invalidObjectID();
+} else {
+  single_value->field_invalidObjectID.clean_up();
+}
+if (other_value.invalidColourCode().is_bound()) {
+  single_value->field_invalidColourCode = other_value.invalidColourCode();
+} else {
+  single_value->field_invalidColourCode.clean_up();
+}
+if (other_value.reserved2().is_bound()) {
+  single_value->field_reserved2 = other_value.reserved2();
+} else {
+  single_value->field_reserved2.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.anyOtherError().is_bound()) {
+  single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+  single_value->field_anyOtherError.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangeBackgroundColourRes__errorCodes_template::copy_template(const ChangeBackgroundColourRes__errorCodes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.invalidObjectID().get_selection()) {
+single_value->field_invalidObjectID = other_value.invalidObjectID();
+} else {
+single_value->field_invalidObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.invalidColourCode().get_selection()) {
+single_value->field_invalidColourCode = other_value.invalidColourCode();
+} else {
+single_value->field_invalidColourCode.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved2().get_selection()) {
+single_value->field_reserved2 = other_value.reserved2();
+} else {
+single_value->field_reserved2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.anyOtherError().get_selection()) {
+single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+single_value->field_anyOtherError.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangeBackgroundColourRes__errorCodes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangeBackgroundColourRes__errorCodes_template::ChangeBackgroundColourRes__errorCodes_template()
+{
+}
+
+ChangeBackgroundColourRes__errorCodes_template::ChangeBackgroundColourRes__errorCodes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangeBackgroundColourRes__errorCodes_template::ChangeBackgroundColourRes__errorCodes_template(const ChangeBackgroundColourRes__errorCodes& other_value)
+{
+copy_value(other_value);
+}
+
+ChangeBackgroundColourRes__errorCodes_template::ChangeBackgroundColourRes__errorCodes_template(const OPTIONAL<ChangeBackgroundColourRes__errorCodes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeBackgroundColourRes__errorCodes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes from an unbound optional field.");
+}
+}
+
+ChangeBackgroundColourRes__errorCodes_template::ChangeBackgroundColourRes__errorCodes_template(const ChangeBackgroundColourRes__errorCodes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangeBackgroundColourRes__errorCodes_template::~ChangeBackgroundColourRes__errorCodes_template()
+{
+clean_up();
+}
+
+ChangeBackgroundColourRes__errorCodes_template& ChangeBackgroundColourRes__errorCodes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangeBackgroundColourRes__errorCodes_template& ChangeBackgroundColourRes__errorCodes_template::operator=(const ChangeBackgroundColourRes__errorCodes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangeBackgroundColourRes__errorCodes_template& ChangeBackgroundColourRes__errorCodes_template::operator=(const OPTIONAL<ChangeBackgroundColourRes__errorCodes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeBackgroundColourRes__errorCodes&)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 @IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes.");
+}
+return *this;
+}
+
+ChangeBackgroundColourRes__errorCodes_template& ChangeBackgroundColourRes__errorCodes_template::operator=(const ChangeBackgroundColourRes__errorCodes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangeBackgroundColourRes__errorCodes_template::match(const ChangeBackgroundColourRes__errorCodes& 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.invalidObjectID().is_bound()) return FALSE;
+if(!single_value->field_invalidObjectID.match(other_value.invalidObjectID(), legacy))return FALSE;
+if(!other_value.invalidColourCode().is_bound()) return FALSE;
+if(!single_value->field_invalidColourCode.match(other_value.invalidColourCode(), legacy))return FALSE;
+if(!other_value.reserved2().is_bound()) return FALSE;
+if(!single_value->field_reserved2.match(other_value.reserved2(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.anyOtherError().is_bound()) return FALSE;
+if(!single_value->field_anyOtherError.match(other_value.anyOtherError(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes.");
+}
+return FALSE;
+}
+
+boolean ChangeBackgroundColourRes__errorCodes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_invalidObjectID.is_bound()
+
+ ||single_value->field_invalidColourCode.is_bound()
+
+ ||single_value->field_reserved2.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_anyOtherError.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+;
+}
+
+boolean ChangeBackgroundColourRes__errorCodes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_invalidObjectID.is_value()
+ &&single_value->field_invalidColourCode.is_value()
+ &&single_value->field_reserved2.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_anyOtherError.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value();
+}
+
+void ChangeBackgroundColourRes__errorCodes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangeBackgroundColourRes__errorCodes ChangeBackgroundColourRes__errorCodes_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 @IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes.");
+ChangeBackgroundColourRes__errorCodes ret_val;
+if (single_value->field_invalidObjectID.is_bound()) {
+ret_val.invalidObjectID() = single_value->field_invalidObjectID.valueof();
+}
+if (single_value->field_invalidColourCode.is_bound()) {
+ret_val.invalidColourCode() = single_value->field_invalidColourCode.valueof();
+}
+if (single_value->field_reserved2.is_bound()) {
+ret_val.reserved2() = single_value->field_reserved2.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_anyOtherError.is_bound()) {
+ret_val.anyOtherError() = single_value->field_anyOtherError.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+return ret_val;
+}
+
+void ChangeBackgroundColourRes__errorCodes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangeBackgroundColourRes__errorCodes_template[list_length];
+}
+
+ChangeBackgroundColourRes__errorCodes_template& ChangeBackgroundColourRes__errorCodes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& ChangeBackgroundColourRes__errorCodes_template::invalidObjectID()
+{
+set_specific();
+return single_value->field_invalidObjectID;
+}
+
+const BOOLEAN_template& ChangeBackgroundColourRes__errorCodes_template::invalidObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidObjectID of a non-specific template of type @IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes.");
+return single_value->field_invalidObjectID;
+}
+
+BOOLEAN_template& ChangeBackgroundColourRes__errorCodes_template::invalidColourCode()
+{
+set_specific();
+return single_value->field_invalidColourCode;
+}
+
+const BOOLEAN_template& ChangeBackgroundColourRes__errorCodes_template::invalidColourCode() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidColourCode of a non-specific template of type @IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes.");
+return single_value->field_invalidColourCode;
+}
+
+BOOLEAN_template& ChangeBackgroundColourRes__errorCodes_template::reserved2()
+{
+set_specific();
+return single_value->field_reserved2;
+}
+
+const BOOLEAN_template& ChangeBackgroundColourRes__errorCodes_template::reserved2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved2 of a non-specific template of type @IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes.");
+return single_value->field_reserved2;
+}
+
+BOOLEAN_template& ChangeBackgroundColourRes__errorCodes_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const BOOLEAN_template& ChangeBackgroundColourRes__errorCodes_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes.");
+return single_value->field_reserved3;
+}
+
+BOOLEAN_template& ChangeBackgroundColourRes__errorCodes_template::anyOtherError()
+{
+set_specific();
+return single_value->field_anyOtherError;
+}
+
+const BOOLEAN_template& ChangeBackgroundColourRes__errorCodes_template::anyOtherError() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field anyOtherError of a non-specific template of type @IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes.");
+return single_value->field_anyOtherError;
+}
+
+BOOLEAN_template& ChangeBackgroundColourRes__errorCodes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const BOOLEAN_template& ChangeBackgroundColourRes__errorCodes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes.");
+return single_value->field_reserved5;
+}
+
+BOOLEAN_template& ChangeBackgroundColourRes__errorCodes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const BOOLEAN_template& ChangeBackgroundColourRes__errorCodes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes.");
+return single_value->field_reserved6;
+}
+
+BOOLEAN_template& ChangeBackgroundColourRes__errorCodes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const BOOLEAN_template& ChangeBackgroundColourRes__errorCodes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes.");
+return single_value->field_reserved7;
+}
+
+int ChangeBackgroundColourRes__errorCodes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes 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 @IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes.");
+  }
+  return 0;
+}
+
+void ChangeBackgroundColourRes__errorCodes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ invalidObjectID := ");
+single_value->field_invalidObjectID.log();
+TTCN_Logger::log_event_str(", invalidColourCode := ");
+single_value->field_invalidColourCode.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangeBackgroundColourRes__errorCodes_template::log_match(const ChangeBackgroundColourRes__errorCodes& 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_invalidObjectID.match(match_value.invalidObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidObjectID");
+single_value->field_invalidObjectID.log_match(match_value.invalidObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_invalidColourCode.match(match_value.invalidColourCode(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidColourCode");
+single_value->field_invalidColourCode.log_match(match_value.invalidColourCode(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved2.match(match_value.reserved2(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved2");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_anyOtherError.match(match_value.anyOtherError(), legacy)){
+TTCN_Logger::log_logmatch_info(".anyOtherError");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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("{ invalidObjectID := ");
+single_value->field_invalidObjectID.log_match(match_value.invalidObjectID(), legacy);
+TTCN_Logger::log_event_str(", invalidColourCode := ");
+single_value->field_invalidColourCode.log_match(match_value.invalidColourCode(), legacy);
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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 ChangeBackgroundColourRes__errorCodes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_invalidObjectID.encode_text(text_buf);
+single_value->field_invalidColourCode.encode_text(text_buf);
+single_value->field_reserved2.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_anyOtherError.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.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 @IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes.");
+}
+}
+
+void ChangeBackgroundColourRes__errorCodes_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_invalidObjectID.decode_text(text_buf);
+single_value->field_invalidColourCode.decode_text(text_buf);
+single_value->field_reserved2.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_anyOtherError.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.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 ChangeBackgroundColourRes__errorCodes_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 @IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes.");
+}
+}
+
+void ChangeBackgroundColourRes__errorCodes_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: {
+    ChangeBackgroundColourRes__errorCodes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes has 8 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) invalidObjectID().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) invalidColourCode().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "invalidObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidObjectID().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(), "invalidColourCode")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidColourCode().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangeBackgroundColourRes__errorCodes_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_invalidObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes");
+single_value->field_invalidColourCode.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes");
+single_value->field_reserved2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes");
+single_value->field_anyOtherError.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes");
+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 : "@IsobusVTMessageTypes.ChangeBackgroundColourRes_errorCodes");
+}
+
+boolean ChangeBackgroundColourRes__errorCodes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangeBackgroundColourRes__errorCodes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangeBackgroundColourRes::ChangeBackgroundColourRes()
+{
+}
+
+ChangeBackgroundColourRes::ChangeBackgroundColourRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectIDofObjectToChange,
+    const INTEGER& par_newBackgroundColour,
+    const ChangeBackgroundColourRes__errorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_objectIDofObjectToChange(par_objectIDofObjectToChange),
+  field_newBackgroundColour(par_newBackgroundColour),
+  field_errorCodes(par_errorCodes),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+ChangeBackgroundColourRes::ChangeBackgroundColourRes(const ChangeBackgroundColourRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangeBackgroundColourRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectIDofObjectToChange().is_bound()) field_objectIDofObjectToChange = other_value.objectIDofObjectToChange();
+else field_objectIDofObjectToChange.clean_up();
+if (other_value.newBackgroundColour().is_bound()) field_newBackgroundColour = other_value.newBackgroundColour();
+else field_newBackgroundColour.clean_up();
+if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+else field_errorCodes.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void ChangeBackgroundColourRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectIDofObjectToChange.clean_up();
+field_newBackgroundColour.clean_up();
+field_errorCodes.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangeBackgroundColourRes::get_descriptor() const { return &ChangeBackgroundColourRes_descr_; }
+ChangeBackgroundColourRes& ChangeBackgroundColourRes::operator=(const ChangeBackgroundColourRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangeBackgroundColourRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectIDofObjectToChange().is_bound()) field_objectIDofObjectToChange = other_value.objectIDofObjectToChange();
+  else field_objectIDofObjectToChange.clean_up();
+  if (other_value.newBackgroundColour().is_bound()) field_newBackgroundColour = other_value.newBackgroundColour();
+  else field_newBackgroundColour.clean_up();
+  if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+  else field_errorCodes.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean ChangeBackgroundColourRes::operator==(const ChangeBackgroundColourRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectIDofObjectToChange==other_value.field_objectIDofObjectToChange
+  && field_newBackgroundColour==other_value.field_newBackgroundColour
+  && field_errorCodes==other_value.field_errorCodes
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean ChangeBackgroundColourRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectIDofObjectToChange.is_bound())
+  || (field_newBackgroundColour.is_bound())
+  || (field_errorCodes.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean ChangeBackgroundColourRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectIDofObjectToChange.is_value()
+  && field_newBackgroundColour.is_value()
+  && field_errorCodes.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void ChangeBackgroundColourRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectIDofObjectToChange := ");
+field_objectIDofObjectToChange.log();
+TTCN_Logger::log_event_str(", newBackgroundColour := ");
+field_newBackgroundColour.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangeBackgroundColourRes::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 @IsobusVTMessageTypes.ChangeBackgroundColourRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectIDofObjectToChange().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) newBackgroundColour().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectIDofObjectToChange")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofObjectToChange().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(), "newBackgroundColour")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          newBackgroundColour().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangeBackgroundColourRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangeBackgroundColourRes");
+  }
+}
+
+void ChangeBackgroundColourRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectIDofObjectToChange().is_bound()) objectIDofObjectToChange().set_implicit_omit();
+if (newBackgroundColour().is_bound()) newBackgroundColour().set_implicit_omit();
+if (errorCodes().is_bound()) errorCodes().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void ChangeBackgroundColourRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectIDofObjectToChange.encode_text(text_buf);
+field_newBackgroundColour.encode_text(text_buf);
+field_errorCodes.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void ChangeBackgroundColourRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectIDofObjectToChange.decode_text(text_buf);
+field_newBackgroundColour.decode_text(text_buf);
+field_errorCodes.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void ChangeBackgroundColourRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangeBackgroundColourRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangeBackgroundColourRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectIDofObjectToChange.RAW_decode(ValidObjectID_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, ColorType_descr_.raw->forceomit);
+  decoded_field_length = field_newBackgroundColour.RAW_decode(ColorType_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, ChangeBackgroundColourRes__errorCodes_descr_.raw->forceomit);
+  decoded_field_length = field_errorCodes.RAW_decode(ChangeBackgroundColourRes__errorCodes_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, ChangeBackgroundColourRes_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(ChangeBackgroundColourRes_reserved6_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, ChangeBackgroundColourRes_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(ChangeBackgroundColourRes_reserved7_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, ChangeBackgroundColourRes_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(ChangeBackgroundColourRes_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ChangeBackgroundColourRes::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ColorType_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, ChangeBackgroundColourRes__errorCodes_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, ChangeBackgroundColourRes_reserved6_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, ChangeBackgroundColourRes_reserved7_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, ChangeBackgroundColourRes_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectIDofObjectToChange.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_newBackgroundColour.RAW_encode(ColorType_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_errorCodes.RAW_encode(ChangeBackgroundColourRes__errorCodes_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved6.RAW_encode(ChangeBackgroundColourRes_reserved6_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved7.RAW_encode(ChangeBackgroundColourRes_reserved7_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved8.RAW_encode(ChangeBackgroundColourRes_reserved8_descr_, *myleaf.body.node.nodes[6]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangeBackgroundColourRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectIDofObjectToChange;
+INTEGER_template field_newBackgroundColour;
+ChangeBackgroundColourRes__errorCodes_template field_errorCodes;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void ChangeBackgroundColourRes_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_vtfunction = ANY_VALUE;
+single_value->field_objectIDofObjectToChange = ANY_VALUE;
+single_value->field_newBackgroundColour = ANY_VALUE;
+single_value->field_errorCodes = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void ChangeBackgroundColourRes_template::copy_value(const ChangeBackgroundColourRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectIDofObjectToChange().is_bound()) {
+  single_value->field_objectIDofObjectToChange = other_value.objectIDofObjectToChange();
+} else {
+  single_value->field_objectIDofObjectToChange.clean_up();
+}
+if (other_value.newBackgroundColour().is_bound()) {
+  single_value->field_newBackgroundColour = other_value.newBackgroundColour();
+} else {
+  single_value->field_newBackgroundColour.clean_up();
+}
+if (other_value.errorCodes().is_bound()) {
+  single_value->field_errorCodes = other_value.errorCodes();
+} else {
+  single_value->field_errorCodes.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangeBackgroundColourRes_template::copy_template(const ChangeBackgroundColourRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectIDofObjectToChange().get_selection()) {
+single_value->field_objectIDofObjectToChange = other_value.objectIDofObjectToChange();
+} else {
+single_value->field_objectIDofObjectToChange.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.newBackgroundColour().get_selection()) {
+single_value->field_newBackgroundColour = other_value.newBackgroundColour();
+} else {
+single_value->field_newBackgroundColour.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.errorCodes().get_selection()) {
+single_value->field_errorCodes = other_value.errorCodes();
+} else {
+single_value->field_errorCodes.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangeBackgroundColourRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeBackgroundColourRes.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangeBackgroundColourRes_template::ChangeBackgroundColourRes_template()
+{
+}
+
+ChangeBackgroundColourRes_template::ChangeBackgroundColourRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangeBackgroundColourRes_template::ChangeBackgroundColourRes_template(const ChangeBackgroundColourRes& other_value)
+{
+copy_value(other_value);
+}
+
+ChangeBackgroundColourRes_template::ChangeBackgroundColourRes_template(const OPTIONAL<ChangeBackgroundColourRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeBackgroundColourRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangeBackgroundColourRes from an unbound optional field.");
+}
+}
+
+ChangeBackgroundColourRes_template::ChangeBackgroundColourRes_template(const ChangeBackgroundColourRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangeBackgroundColourRes_template::~ChangeBackgroundColourRes_template()
+{
+clean_up();
+}
+
+ChangeBackgroundColourRes_template& ChangeBackgroundColourRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangeBackgroundColourRes_template& ChangeBackgroundColourRes_template::operator=(const ChangeBackgroundColourRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangeBackgroundColourRes_template& ChangeBackgroundColourRes_template::operator=(const OPTIONAL<ChangeBackgroundColourRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeBackgroundColourRes&)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 @IsobusVTMessageTypes.ChangeBackgroundColourRes.");
+}
+return *this;
+}
+
+ChangeBackgroundColourRes_template& ChangeBackgroundColourRes_template::operator=(const ChangeBackgroundColourRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangeBackgroundColourRes_template::match(const ChangeBackgroundColourRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectIDofObjectToChange().is_bound()) return FALSE;
+if(!single_value->field_objectIDofObjectToChange.match(other_value.objectIDofObjectToChange(), legacy))return FALSE;
+if(!other_value.newBackgroundColour().is_bound()) return FALSE;
+if(!single_value->field_newBackgroundColour.match(other_value.newBackgroundColour(), legacy))return FALSE;
+if(!other_value.errorCodes().is_bound()) return FALSE;
+if(!single_value->field_errorCodes.match(other_value.errorCodes(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeBackgroundColourRes.");
+}
+return FALSE;
+}
+
+boolean ChangeBackgroundColourRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectIDofObjectToChange.is_bound()
+
+ ||single_value->field_newBackgroundColour.is_bound()
+
+ ||single_value->field_errorCodes.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean ChangeBackgroundColourRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectIDofObjectToChange.is_value()
+ &&single_value->field_newBackgroundColour.is_value()
+ &&single_value->field_errorCodes.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void ChangeBackgroundColourRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangeBackgroundColourRes ChangeBackgroundColourRes_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 @IsobusVTMessageTypes.ChangeBackgroundColourRes.");
+ChangeBackgroundColourRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectIDofObjectToChange.is_bound()) {
+ret_val.objectIDofObjectToChange() = single_value->field_objectIDofObjectToChange.valueof();
+}
+if (single_value->field_newBackgroundColour.is_bound()) {
+ret_val.newBackgroundColour() = single_value->field_newBackgroundColour.valueof();
+}
+if (single_value->field_errorCodes.is_bound()) {
+ret_val.errorCodes() = single_value->field_errorCodes.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void ChangeBackgroundColourRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangeBackgroundColourRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangeBackgroundColourRes_template[list_length];
+}
+
+ChangeBackgroundColourRes_template& ChangeBackgroundColourRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangeBackgroundColourRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangeBackgroundColourRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ChangeBackgroundColourRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ChangeBackgroundColourRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ChangeBackgroundColourRes.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& ChangeBackgroundColourRes_template::objectIDofObjectToChange()
+{
+set_specific();
+return single_value->field_objectIDofObjectToChange;
+}
+
+const INTEGER_template& ChangeBackgroundColourRes_template::objectIDofObjectToChange() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectIDofObjectToChange of a non-specific template of type @IsobusVTMessageTypes.ChangeBackgroundColourRes.");
+return single_value->field_objectIDofObjectToChange;
+}
+
+INTEGER_template& ChangeBackgroundColourRes_template::newBackgroundColour()
+{
+set_specific();
+return single_value->field_newBackgroundColour;
+}
+
+const INTEGER_template& ChangeBackgroundColourRes_template::newBackgroundColour() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field newBackgroundColour of a non-specific template of type @IsobusVTMessageTypes.ChangeBackgroundColourRes.");
+return single_value->field_newBackgroundColour;
+}
+
+ChangeBackgroundColourRes__errorCodes_template& ChangeBackgroundColourRes_template::errorCodes()
+{
+set_specific();
+return single_value->field_errorCodes;
+}
+
+const ChangeBackgroundColourRes__errorCodes_template& ChangeBackgroundColourRes_template::errorCodes() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field errorCodes of a non-specific template of type @IsobusVTMessageTypes.ChangeBackgroundColourRes.");
+return single_value->field_errorCodes;
+}
+
+OCTETSTRING_template& ChangeBackgroundColourRes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& ChangeBackgroundColourRes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.ChangeBackgroundColourRes.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& ChangeBackgroundColourRes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& ChangeBackgroundColourRes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ChangeBackgroundColourRes.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& ChangeBackgroundColourRes_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& ChangeBackgroundColourRes_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.ChangeBackgroundColourRes.");
+return single_value->field_reserved8;
+}
+
+int ChangeBackgroundColourRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeBackgroundColourRes 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 @IsobusVTMessageTypes.ChangeBackgroundColourRes 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 @IsobusVTMessageTypes.ChangeBackgroundColourRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeBackgroundColourRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeBackgroundColourRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeBackgroundColourRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeBackgroundColourRes.");
+  }
+  return 0;
+}
+
+void ChangeBackgroundColourRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectIDofObjectToChange := ");
+single_value->field_objectIDofObjectToChange.log();
+TTCN_Logger::log_event_str(", newBackgroundColour := ");
+single_value->field_newBackgroundColour.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangeBackgroundColourRes_template::log_match(const ChangeBackgroundColourRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectIDofObjectToChange.match(match_value.objectIDofObjectToChange(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectIDofObjectToChange");
+single_value->field_objectIDofObjectToChange.log_match(match_value.objectIDofObjectToChange(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_newBackgroundColour.match(match_value.newBackgroundColour(), legacy)){
+TTCN_Logger::log_logmatch_info(".newBackgroundColour");
+single_value->field_newBackgroundColour.log_match(match_value.newBackgroundColour(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_errorCodes.match(match_value.errorCodes(), legacy)){
+TTCN_Logger::log_logmatch_info(".errorCodes");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectIDofObjectToChange := ");
+single_value->field_objectIDofObjectToChange.log_match(match_value.objectIDofObjectToChange(), legacy);
+TTCN_Logger::log_event_str(", newBackgroundColour := ");
+single_value->field_newBackgroundColour.log_match(match_value.newBackgroundColour(), legacy);
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 ChangeBackgroundColourRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectIDofObjectToChange.encode_text(text_buf);
+single_value->field_newBackgroundColour.encode_text(text_buf);
+single_value->field_errorCodes.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.ChangeBackgroundColourRes.");
+}
+}
+
+void ChangeBackgroundColourRes_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_vtfunction.decode_text(text_buf);
+single_value->field_objectIDofObjectToChange.decode_text(text_buf);
+single_value->field_newBackgroundColour.decode_text(text_buf);
+single_value->field_errorCodes.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 ChangeBackgroundColourRes_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 @IsobusVTMessageTypes.ChangeBackgroundColourRes.");
+}
+}
+
+void ChangeBackgroundColourRes_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: {
+    ChangeBackgroundColourRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.ChangeBackgroundColourRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectIDofObjectToChange().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) newBackgroundColour().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectIDofObjectToChange")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofObjectToChange().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(), "newBackgroundColour")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          newBackgroundColour().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangeBackgroundColourRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangeBackgroundColourRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangeBackgroundColourRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeBackgroundColourRes");
+single_value->field_objectIDofObjectToChange.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeBackgroundColourRes");
+single_value->field_newBackgroundColour.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeBackgroundColourRes");
+single_value->field_errorCodes.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeBackgroundColourRes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeBackgroundColourRes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeBackgroundColourRes");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeBackgroundColourRes");
+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 : "@IsobusVTMessageTypes.ChangeBackgroundColourRes");
+}
+
+boolean ChangeBackgroundColourRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangeBackgroundColourRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangeNumericValueReq::ChangeNumericValueReq()
+{
+}
+
+ChangeNumericValueReq::ChangeNumericValueReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_newValueForValueAttribute)
+  :   field_vtfunction(par_vtfunction),
+  field_objectID(par_objectID),
+  field_reserved4(par_reserved4),
+  field_newValueForValueAttribute(par_newValueForValueAttribute)
+{
+}
+
+ChangeNumericValueReq::ChangeNumericValueReq(const ChangeNumericValueReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangeNumericValueReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+else field_objectID.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.newValueForValueAttribute().is_bound()) field_newValueForValueAttribute = other_value.newValueForValueAttribute();
+else field_newValueForValueAttribute.clean_up();
+}
+
+void ChangeNumericValueReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectID.clean_up();
+field_reserved4.clean_up();
+field_newValueForValueAttribute.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangeNumericValueReq::get_descriptor() const { return &ChangeNumericValueReq_descr_; }
+ChangeNumericValueReq& ChangeNumericValueReq::operator=(const ChangeNumericValueReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangeNumericValueReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+  else field_objectID.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.newValueForValueAttribute().is_bound()) field_newValueForValueAttribute = other_value.newValueForValueAttribute();
+  else field_newValueForValueAttribute.clean_up();
+}
+return *this;
+}
+
+boolean ChangeNumericValueReq::operator==(const ChangeNumericValueReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectID==other_value.field_objectID
+  && field_reserved4==other_value.field_reserved4
+  && field_newValueForValueAttribute==other_value.field_newValueForValueAttribute;
+}
+
+boolean ChangeNumericValueReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectID.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_newValueForValueAttribute.is_bound());
+}
+boolean ChangeNumericValueReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectID.is_value()
+  && field_reserved4.is_value()
+  && field_newValueForValueAttribute.is_value();
+}
+void ChangeNumericValueReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+field_objectID.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", newValueForValueAttribute := ");
+field_newValueForValueAttribute.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangeNumericValueReq::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 @IsobusVTMessageTypes.ChangeNumericValueReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) newValueForValueAttribute().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "newValueForValueAttribute")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          newValueForValueAttribute().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 @IsobusVTMessageTypes.ChangeNumericValueReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangeNumericValueReq");
+  }
+}
+
+void ChangeNumericValueReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectID().is_bound()) objectID().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (newValueForValueAttribute().is_bound()) newValueForValueAttribute().set_implicit_omit();
+}
+
+void ChangeNumericValueReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectID.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_newValueForValueAttribute.encode_text(text_buf);
+}
+
+void ChangeNumericValueReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectID.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_newValueForValueAttribute.decode_text(text_buf);
+}
+
+void ChangeNumericValueReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangeNumericValueReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangeNumericValueReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectID.RAW_decode(ValidObjectID_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, ChangeNumericValueReq_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(ChangeNumericValueReq_reserved4_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::OCT4_descr_.raw->forceomit);
+  decoded_field_length = field_newValueForValueAttribute.RAW_decode(General__Types::OCT4_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ChangeNumericValueReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ChangeNumericValueReq_reserved4_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, General__Types::OCT4_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved4.RAW_encode(ChangeNumericValueReq_reserved4_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_newValueForValueAttribute.RAW_encode(General__Types::OCT4_descr_, *myleaf.body.node.nodes[3]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangeNumericValueReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectID;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_newValueForValueAttribute;
+};
+
+void ChangeNumericValueReq_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_vtfunction = ANY_VALUE;
+single_value->field_objectID = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_newValueForValueAttribute = ANY_VALUE;
+}
+}
+}
+
+void ChangeNumericValueReq_template::copy_value(const ChangeNumericValueReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectID().is_bound()) {
+  single_value->field_objectID = other_value.objectID();
+} else {
+  single_value->field_objectID.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.newValueForValueAttribute().is_bound()) {
+  single_value->field_newValueForValueAttribute = other_value.newValueForValueAttribute();
+} else {
+  single_value->field_newValueForValueAttribute.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangeNumericValueReq_template::copy_template(const ChangeNumericValueReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectID().get_selection()) {
+single_value->field_objectID = other_value.objectID();
+} else {
+single_value->field_objectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.newValueForValueAttribute().get_selection()) {
+single_value->field_newValueForValueAttribute = other_value.newValueForValueAttribute();
+} else {
+single_value->field_newValueForValueAttribute.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangeNumericValueReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeNumericValueReq.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangeNumericValueReq_template::ChangeNumericValueReq_template()
+{
+}
+
+ChangeNumericValueReq_template::ChangeNumericValueReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangeNumericValueReq_template::ChangeNumericValueReq_template(const ChangeNumericValueReq& other_value)
+{
+copy_value(other_value);
+}
+
+ChangeNumericValueReq_template::ChangeNumericValueReq_template(const OPTIONAL<ChangeNumericValueReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeNumericValueReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangeNumericValueReq from an unbound optional field.");
+}
+}
+
+ChangeNumericValueReq_template::ChangeNumericValueReq_template(const ChangeNumericValueReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangeNumericValueReq_template::~ChangeNumericValueReq_template()
+{
+clean_up();
+}
+
+ChangeNumericValueReq_template& ChangeNumericValueReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangeNumericValueReq_template& ChangeNumericValueReq_template::operator=(const ChangeNumericValueReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangeNumericValueReq_template& ChangeNumericValueReq_template::operator=(const OPTIONAL<ChangeNumericValueReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeNumericValueReq&)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 @IsobusVTMessageTypes.ChangeNumericValueReq.");
+}
+return *this;
+}
+
+ChangeNumericValueReq_template& ChangeNumericValueReq_template::operator=(const ChangeNumericValueReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangeNumericValueReq_template::match(const ChangeNumericValueReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectID().is_bound()) return FALSE;
+if(!single_value->field_objectID.match(other_value.objectID(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.newValueForValueAttribute().is_bound()) return FALSE;
+if(!single_value->field_newValueForValueAttribute.match(other_value.newValueForValueAttribute(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeNumericValueReq.");
+}
+return FALSE;
+}
+
+boolean ChangeNumericValueReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectID.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_newValueForValueAttribute.is_bound()
+;
+}
+
+boolean ChangeNumericValueReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectID.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_newValueForValueAttribute.is_value();
+}
+
+void ChangeNumericValueReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangeNumericValueReq ChangeNumericValueReq_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 @IsobusVTMessageTypes.ChangeNumericValueReq.");
+ChangeNumericValueReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectID.is_bound()) {
+ret_val.objectID() = single_value->field_objectID.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_newValueForValueAttribute.is_bound()) {
+ret_val.newValueForValueAttribute() = single_value->field_newValueForValueAttribute.valueof();
+}
+return ret_val;
+}
+
+void ChangeNumericValueReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangeNumericValueReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangeNumericValueReq_template[list_length];
+}
+
+ChangeNumericValueReq_template& ChangeNumericValueReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangeNumericValueReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangeNumericValueReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ChangeNumericValueReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ChangeNumericValueReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ChangeNumericValueReq.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& ChangeNumericValueReq_template::objectID()
+{
+set_specific();
+return single_value->field_objectID;
+}
+
+const INTEGER_template& ChangeNumericValueReq_template::objectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectID of a non-specific template of type @IsobusVTMessageTypes.ChangeNumericValueReq.");
+return single_value->field_objectID;
+}
+
+OCTETSTRING_template& ChangeNumericValueReq_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& ChangeNumericValueReq_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.ChangeNumericValueReq.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& ChangeNumericValueReq_template::newValueForValueAttribute()
+{
+set_specific();
+return single_value->field_newValueForValueAttribute;
+}
+
+const OCTETSTRING_template& ChangeNumericValueReq_template::newValueForValueAttribute() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field newValueForValueAttribute of a non-specific template of type @IsobusVTMessageTypes.ChangeNumericValueReq.");
+return single_value->field_newValueForValueAttribute;
+}
+
+int ChangeNumericValueReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeNumericValueReq 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 @IsobusVTMessageTypes.ChangeNumericValueReq 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 @IsobusVTMessageTypes.ChangeNumericValueReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeNumericValueReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeNumericValueReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeNumericValueReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeNumericValueReq.");
+  }
+  return 0;
+}
+
+void ChangeNumericValueReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", newValueForValueAttribute := ");
+single_value->field_newValueForValueAttribute.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangeNumericValueReq_template::log_match(const ChangeNumericValueReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectID.match(match_value.objectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectID");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_newValueForValueAttribute.match(match_value.newValueForValueAttribute(), legacy)){
+TTCN_Logger::log_logmatch_info(".newValueForValueAttribute");
+single_value->field_newValueForValueAttribute.log_match(match_value.newValueForValueAttribute(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", newValueForValueAttribute := ");
+single_value->field_newValueForValueAttribute.log_match(match_value.newValueForValueAttribute(), 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 ChangeNumericValueReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectID.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_newValueForValueAttribute.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 @IsobusVTMessageTypes.ChangeNumericValueReq.");
+}
+}
+
+void ChangeNumericValueReq_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_vtfunction.decode_text(text_buf);
+single_value->field_objectID.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_newValueForValueAttribute.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 ChangeNumericValueReq_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 @IsobusVTMessageTypes.ChangeNumericValueReq.");
+}
+}
+
+void ChangeNumericValueReq_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: {
+    ChangeNumericValueReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.ChangeNumericValueReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) newValueForValueAttribute().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "newValueForValueAttribute")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          newValueForValueAttribute().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 @IsobusVTMessageTypes.ChangeNumericValueReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangeNumericValueReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangeNumericValueReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeNumericValueReq");
+single_value->field_objectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeNumericValueReq");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeNumericValueReq");
+single_value->field_newValueForValueAttribute.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeNumericValueReq");
+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 : "@IsobusVTMessageTypes.ChangeNumericValueReq");
+}
+
+boolean ChangeNumericValueReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangeNumericValueReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangeNumericValueRes__errorCodes::ChangeNumericValueRes__errorCodes()
+{
+}
+
+ChangeNumericValueRes__errorCodes::ChangeNumericValueRes__errorCodes(const BOOLEAN& par_invalidObjectID,
+    const BOOLEAN& par_invalidValue,
+    const BOOLEAN& par_valueInUse,
+    const BOOLEAN& par_undefined,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7)
+  :   field_invalidObjectID(par_invalidObjectID),
+  field_invalidValue(par_invalidValue),
+  field_valueInUse(par_valueInUse),
+  field_undefined(par_undefined),
+  field_anyOtherError(par_anyOtherError),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7)
+{
+}
+
+ChangeNumericValueRes__errorCodes::ChangeNumericValueRes__errorCodes(const ChangeNumericValueRes__errorCodes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes.");
+if (other_value.invalidObjectID().is_bound()) field_invalidObjectID = other_value.invalidObjectID();
+else field_invalidObjectID.clean_up();
+if (other_value.invalidValue().is_bound()) field_invalidValue = other_value.invalidValue();
+else field_invalidValue.clean_up();
+if (other_value.valueInUse().is_bound()) field_valueInUse = other_value.valueInUse();
+else field_valueInUse.clean_up();
+if (other_value.undefined().is_bound()) field_undefined = other_value.undefined();
+else field_undefined.clean_up();
+if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+else field_anyOtherError.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+}
+
+void ChangeNumericValueRes__errorCodes::clean_up()
+{
+field_invalidObjectID.clean_up();
+field_invalidValue.clean_up();
+field_valueInUse.clean_up();
+field_undefined.clean_up();
+field_anyOtherError.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangeNumericValueRes__errorCodes::get_descriptor() const { return &ChangeNumericValueRes__errorCodes_descr_; }
+ChangeNumericValueRes__errorCodes& ChangeNumericValueRes__errorCodes::operator=(const ChangeNumericValueRes__errorCodes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes.");
+  if (other_value.invalidObjectID().is_bound()) field_invalidObjectID = other_value.invalidObjectID();
+  else field_invalidObjectID.clean_up();
+  if (other_value.invalidValue().is_bound()) field_invalidValue = other_value.invalidValue();
+  else field_invalidValue.clean_up();
+  if (other_value.valueInUse().is_bound()) field_valueInUse = other_value.valueInUse();
+  else field_valueInUse.clean_up();
+  if (other_value.undefined().is_bound()) field_undefined = other_value.undefined();
+  else field_undefined.clean_up();
+  if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+  else field_anyOtherError.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+}
+return *this;
+}
+
+boolean ChangeNumericValueRes__errorCodes::operator==(const ChangeNumericValueRes__errorCodes& other_value) const
+{
+return field_invalidObjectID==other_value.field_invalidObjectID
+  && field_invalidValue==other_value.field_invalidValue
+  && field_valueInUse==other_value.field_valueInUse
+  && field_undefined==other_value.field_undefined
+  && field_anyOtherError==other_value.field_anyOtherError
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7;
+}
+
+boolean ChangeNumericValueRes__errorCodes::is_bound() const
+{
+return (field_invalidObjectID.is_bound())
+  || (field_invalidValue.is_bound())
+  || (field_valueInUse.is_bound())
+  || (field_undefined.is_bound())
+  || (field_anyOtherError.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound());
+}
+boolean ChangeNumericValueRes__errorCodes::is_value() const
+{
+return field_invalidObjectID.is_value()
+  && field_invalidValue.is_value()
+  && field_valueInUse.is_value()
+  && field_undefined.is_value()
+  && field_anyOtherError.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value();
+}
+void ChangeNumericValueRes__errorCodes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ invalidObjectID := ");
+field_invalidObjectID.log();
+TTCN_Logger::log_event_str(", invalidValue := ");
+field_invalidValue.log();
+TTCN_Logger::log_event_str(", valueInUse := ");
+field_valueInUse.log();
+TTCN_Logger::log_event_str(", undefined := ");
+field_undefined.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangeNumericValueRes__errorCodes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes has 8 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) invalidObjectID().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) invalidValue().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) valueInUse().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) undefined().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "invalidObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidObjectID().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(), "invalidValue")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidValue().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(), "valueInUse")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          valueInUse().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(), "undefined")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          undefined().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes");
+  }
+}
+
+void ChangeNumericValueRes__errorCodes::set_implicit_omit()
+{
+if (invalidObjectID().is_bound()) invalidObjectID().set_implicit_omit();
+if (invalidValue().is_bound()) invalidValue().set_implicit_omit();
+if (valueInUse().is_bound()) valueInUse().set_implicit_omit();
+if (undefined().is_bound()) undefined().set_implicit_omit();
+if (anyOtherError().is_bound()) anyOtherError().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+}
+
+void ChangeNumericValueRes__errorCodes::encode_text(Text_Buf& text_buf) const
+{
+field_invalidObjectID.encode_text(text_buf);
+field_invalidValue.encode_text(text_buf);
+field_valueInUse.encode_text(text_buf);
+field_undefined.encode_text(text_buf);
+field_anyOtherError.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+}
+
+void ChangeNumericValueRes__errorCodes::decode_text(Text_Buf& text_buf)
+{
+field_invalidObjectID.decode_text(text_buf);
+field_invalidValue.decode_text(text_buf);
+field_valueInUse.decode_text(text_buf);
+field_undefined.decode_text(text_buf);
+field_anyOtherError.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+}
+
+void ChangeNumericValueRes__errorCodes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangeNumericValueRes__errorCodes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangeNumericValueRes__errorCodes::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidObjectID.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidValue.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_valueInUse.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_undefined.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_anyOtherError.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ChangeNumericValueRes__errorCodes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_invalidObjectID.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_invalidValue.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_valueInUse.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_undefined.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_anyOtherError.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved5.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved6.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved7.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangeNumericValueRes__errorCodes_template::single_value_struct {
+BOOLEAN_template field_invalidObjectID;
+BOOLEAN_template field_invalidValue;
+BOOLEAN_template field_valueInUse;
+BOOLEAN_template field_undefined;
+BOOLEAN_template field_anyOtherError;
+BOOLEAN_template field_reserved5;
+BOOLEAN_template field_reserved6;
+BOOLEAN_template field_reserved7;
+};
+
+void ChangeNumericValueRes__errorCodes_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_invalidObjectID = ANY_VALUE;
+single_value->field_invalidValue = ANY_VALUE;
+single_value->field_valueInUse = ANY_VALUE;
+single_value->field_undefined = ANY_VALUE;
+single_value->field_anyOtherError = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+}
+}
+}
+
+void ChangeNumericValueRes__errorCodes_template::copy_value(const ChangeNumericValueRes__errorCodes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.invalidObjectID().is_bound()) {
+  single_value->field_invalidObjectID = other_value.invalidObjectID();
+} else {
+  single_value->field_invalidObjectID.clean_up();
+}
+if (other_value.invalidValue().is_bound()) {
+  single_value->field_invalidValue = other_value.invalidValue();
+} else {
+  single_value->field_invalidValue.clean_up();
+}
+if (other_value.valueInUse().is_bound()) {
+  single_value->field_valueInUse = other_value.valueInUse();
+} else {
+  single_value->field_valueInUse.clean_up();
+}
+if (other_value.undefined().is_bound()) {
+  single_value->field_undefined = other_value.undefined();
+} else {
+  single_value->field_undefined.clean_up();
+}
+if (other_value.anyOtherError().is_bound()) {
+  single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+  single_value->field_anyOtherError.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangeNumericValueRes__errorCodes_template::copy_template(const ChangeNumericValueRes__errorCodes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.invalidObjectID().get_selection()) {
+single_value->field_invalidObjectID = other_value.invalidObjectID();
+} else {
+single_value->field_invalidObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.invalidValue().get_selection()) {
+single_value->field_invalidValue = other_value.invalidValue();
+} else {
+single_value->field_invalidValue.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.valueInUse().get_selection()) {
+single_value->field_valueInUse = other_value.valueInUse();
+} else {
+single_value->field_valueInUse.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.undefined().get_selection()) {
+single_value->field_undefined = other_value.undefined();
+} else {
+single_value->field_undefined.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.anyOtherError().get_selection()) {
+single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+single_value->field_anyOtherError.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangeNumericValueRes__errorCodes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangeNumericValueRes__errorCodes_template::ChangeNumericValueRes__errorCodes_template()
+{
+}
+
+ChangeNumericValueRes__errorCodes_template::ChangeNumericValueRes__errorCodes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangeNumericValueRes__errorCodes_template::ChangeNumericValueRes__errorCodes_template(const ChangeNumericValueRes__errorCodes& other_value)
+{
+copy_value(other_value);
+}
+
+ChangeNumericValueRes__errorCodes_template::ChangeNumericValueRes__errorCodes_template(const OPTIONAL<ChangeNumericValueRes__errorCodes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeNumericValueRes__errorCodes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes from an unbound optional field.");
+}
+}
+
+ChangeNumericValueRes__errorCodes_template::ChangeNumericValueRes__errorCodes_template(const ChangeNumericValueRes__errorCodes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangeNumericValueRes__errorCodes_template::~ChangeNumericValueRes__errorCodes_template()
+{
+clean_up();
+}
+
+ChangeNumericValueRes__errorCodes_template& ChangeNumericValueRes__errorCodes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangeNumericValueRes__errorCodes_template& ChangeNumericValueRes__errorCodes_template::operator=(const ChangeNumericValueRes__errorCodes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangeNumericValueRes__errorCodes_template& ChangeNumericValueRes__errorCodes_template::operator=(const OPTIONAL<ChangeNumericValueRes__errorCodes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeNumericValueRes__errorCodes&)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 @IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes.");
+}
+return *this;
+}
+
+ChangeNumericValueRes__errorCodes_template& ChangeNumericValueRes__errorCodes_template::operator=(const ChangeNumericValueRes__errorCodes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangeNumericValueRes__errorCodes_template::match(const ChangeNumericValueRes__errorCodes& 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.invalidObjectID().is_bound()) return FALSE;
+if(!single_value->field_invalidObjectID.match(other_value.invalidObjectID(), legacy))return FALSE;
+if(!other_value.invalidValue().is_bound()) return FALSE;
+if(!single_value->field_invalidValue.match(other_value.invalidValue(), legacy))return FALSE;
+if(!other_value.valueInUse().is_bound()) return FALSE;
+if(!single_value->field_valueInUse.match(other_value.valueInUse(), legacy))return FALSE;
+if(!other_value.undefined().is_bound()) return FALSE;
+if(!single_value->field_undefined.match(other_value.undefined(), legacy))return FALSE;
+if(!other_value.anyOtherError().is_bound()) return FALSE;
+if(!single_value->field_anyOtherError.match(other_value.anyOtherError(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes.");
+}
+return FALSE;
+}
+
+boolean ChangeNumericValueRes__errorCodes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_invalidObjectID.is_bound()
+
+ ||single_value->field_invalidValue.is_bound()
+
+ ||single_value->field_valueInUse.is_bound()
+
+ ||single_value->field_undefined.is_bound()
+
+ ||single_value->field_anyOtherError.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+;
+}
+
+boolean ChangeNumericValueRes__errorCodes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_invalidObjectID.is_value()
+ &&single_value->field_invalidValue.is_value()
+ &&single_value->field_valueInUse.is_value()
+ &&single_value->field_undefined.is_value()
+ &&single_value->field_anyOtherError.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value();
+}
+
+void ChangeNumericValueRes__errorCodes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangeNumericValueRes__errorCodes ChangeNumericValueRes__errorCodes_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 @IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes.");
+ChangeNumericValueRes__errorCodes ret_val;
+if (single_value->field_invalidObjectID.is_bound()) {
+ret_val.invalidObjectID() = single_value->field_invalidObjectID.valueof();
+}
+if (single_value->field_invalidValue.is_bound()) {
+ret_val.invalidValue() = single_value->field_invalidValue.valueof();
+}
+if (single_value->field_valueInUse.is_bound()) {
+ret_val.valueInUse() = single_value->field_valueInUse.valueof();
+}
+if (single_value->field_undefined.is_bound()) {
+ret_val.undefined() = single_value->field_undefined.valueof();
+}
+if (single_value->field_anyOtherError.is_bound()) {
+ret_val.anyOtherError() = single_value->field_anyOtherError.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+return ret_val;
+}
+
+void ChangeNumericValueRes__errorCodes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangeNumericValueRes__errorCodes_template[list_length];
+}
+
+ChangeNumericValueRes__errorCodes_template& ChangeNumericValueRes__errorCodes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& ChangeNumericValueRes__errorCodes_template::invalidObjectID()
+{
+set_specific();
+return single_value->field_invalidObjectID;
+}
+
+const BOOLEAN_template& ChangeNumericValueRes__errorCodes_template::invalidObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidObjectID of a non-specific template of type @IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes.");
+return single_value->field_invalidObjectID;
+}
+
+BOOLEAN_template& ChangeNumericValueRes__errorCodes_template::invalidValue()
+{
+set_specific();
+return single_value->field_invalidValue;
+}
+
+const BOOLEAN_template& ChangeNumericValueRes__errorCodes_template::invalidValue() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidValue of a non-specific template of type @IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes.");
+return single_value->field_invalidValue;
+}
+
+BOOLEAN_template& ChangeNumericValueRes__errorCodes_template::valueInUse()
+{
+set_specific();
+return single_value->field_valueInUse;
+}
+
+const BOOLEAN_template& ChangeNumericValueRes__errorCodes_template::valueInUse() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field valueInUse of a non-specific template of type @IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes.");
+return single_value->field_valueInUse;
+}
+
+BOOLEAN_template& ChangeNumericValueRes__errorCodes_template::undefined()
+{
+set_specific();
+return single_value->field_undefined;
+}
+
+const BOOLEAN_template& ChangeNumericValueRes__errorCodes_template::undefined() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field undefined of a non-specific template of type @IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes.");
+return single_value->field_undefined;
+}
+
+BOOLEAN_template& ChangeNumericValueRes__errorCodes_template::anyOtherError()
+{
+set_specific();
+return single_value->field_anyOtherError;
+}
+
+const BOOLEAN_template& ChangeNumericValueRes__errorCodes_template::anyOtherError() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field anyOtherError of a non-specific template of type @IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes.");
+return single_value->field_anyOtherError;
+}
+
+BOOLEAN_template& ChangeNumericValueRes__errorCodes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const BOOLEAN_template& ChangeNumericValueRes__errorCodes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes.");
+return single_value->field_reserved5;
+}
+
+BOOLEAN_template& ChangeNumericValueRes__errorCodes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const BOOLEAN_template& ChangeNumericValueRes__errorCodes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes.");
+return single_value->field_reserved6;
+}
+
+BOOLEAN_template& ChangeNumericValueRes__errorCodes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const BOOLEAN_template& ChangeNumericValueRes__errorCodes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes.");
+return single_value->field_reserved7;
+}
+
+int ChangeNumericValueRes__errorCodes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes 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 @IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes.");
+  }
+  return 0;
+}
+
+void ChangeNumericValueRes__errorCodes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ invalidObjectID := ");
+single_value->field_invalidObjectID.log();
+TTCN_Logger::log_event_str(", invalidValue := ");
+single_value->field_invalidValue.log();
+TTCN_Logger::log_event_str(", valueInUse := ");
+single_value->field_valueInUse.log();
+TTCN_Logger::log_event_str(", undefined := ");
+single_value->field_undefined.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangeNumericValueRes__errorCodes_template::log_match(const ChangeNumericValueRes__errorCodes& 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_invalidObjectID.match(match_value.invalidObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidObjectID");
+single_value->field_invalidObjectID.log_match(match_value.invalidObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_invalidValue.match(match_value.invalidValue(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidValue");
+single_value->field_invalidValue.log_match(match_value.invalidValue(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_valueInUse.match(match_value.valueInUse(), legacy)){
+TTCN_Logger::log_logmatch_info(".valueInUse");
+single_value->field_valueInUse.log_match(match_value.valueInUse(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_undefined.match(match_value.undefined(), legacy)){
+TTCN_Logger::log_logmatch_info(".undefined");
+single_value->field_undefined.log_match(match_value.undefined(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_anyOtherError.match(match_value.anyOtherError(), legacy)){
+TTCN_Logger::log_logmatch_info(".anyOtherError");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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("{ invalidObjectID := ");
+single_value->field_invalidObjectID.log_match(match_value.invalidObjectID(), legacy);
+TTCN_Logger::log_event_str(", invalidValue := ");
+single_value->field_invalidValue.log_match(match_value.invalidValue(), legacy);
+TTCN_Logger::log_event_str(", valueInUse := ");
+single_value->field_valueInUse.log_match(match_value.valueInUse(), legacy);
+TTCN_Logger::log_event_str(", undefined := ");
+single_value->field_undefined.log_match(match_value.undefined(), legacy);
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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 ChangeNumericValueRes__errorCodes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_invalidObjectID.encode_text(text_buf);
+single_value->field_invalidValue.encode_text(text_buf);
+single_value->field_valueInUse.encode_text(text_buf);
+single_value->field_undefined.encode_text(text_buf);
+single_value->field_anyOtherError.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.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 @IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes.");
+}
+}
+
+void ChangeNumericValueRes__errorCodes_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_invalidObjectID.decode_text(text_buf);
+single_value->field_invalidValue.decode_text(text_buf);
+single_value->field_valueInUse.decode_text(text_buf);
+single_value->field_undefined.decode_text(text_buf);
+single_value->field_anyOtherError.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.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 ChangeNumericValueRes__errorCodes_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 @IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes.");
+}
+}
+
+void ChangeNumericValueRes__errorCodes_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: {
+    ChangeNumericValueRes__errorCodes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes has 8 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) invalidObjectID().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) invalidValue().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) valueInUse().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) undefined().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "invalidObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidObjectID().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(), "invalidValue")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidValue().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(), "valueInUse")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          valueInUse().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(), "undefined")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          undefined().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangeNumericValueRes__errorCodes_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_invalidObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes");
+single_value->field_invalidValue.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes");
+single_value->field_valueInUse.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes");
+single_value->field_undefined.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes");
+single_value->field_anyOtherError.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes");
+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 : "@IsobusVTMessageTypes.ChangeNumericValueRes_errorCodes");
+}
+
+boolean ChangeNumericValueRes__errorCodes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangeNumericValueRes__errorCodes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangeNumericValueRes::ChangeNumericValueRes()
+{
+}
+
+ChangeNumericValueRes::ChangeNumericValueRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const ChangeNumericValueRes__errorCodes& par_errorCodes,
+    const OCTETSTRING& par_valueForValueAttribute)
+  :   field_vtfunction(par_vtfunction),
+  field_objectID(par_objectID),
+  field_errorCodes(par_errorCodes),
+  field_valueForValueAttribute(par_valueForValueAttribute)
+{
+}
+
+ChangeNumericValueRes::ChangeNumericValueRes(const ChangeNumericValueRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangeNumericValueRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+else field_objectID.clean_up();
+if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+else field_errorCodes.clean_up();
+if (other_value.valueForValueAttribute().is_bound()) field_valueForValueAttribute = other_value.valueForValueAttribute();
+else field_valueForValueAttribute.clean_up();
+}
+
+void ChangeNumericValueRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectID.clean_up();
+field_errorCodes.clean_up();
+field_valueForValueAttribute.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangeNumericValueRes::get_descriptor() const { return &ChangeNumericValueRes_descr_; }
+ChangeNumericValueRes& ChangeNumericValueRes::operator=(const ChangeNumericValueRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangeNumericValueRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+  else field_objectID.clean_up();
+  if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+  else field_errorCodes.clean_up();
+  if (other_value.valueForValueAttribute().is_bound()) field_valueForValueAttribute = other_value.valueForValueAttribute();
+  else field_valueForValueAttribute.clean_up();
+}
+return *this;
+}
+
+boolean ChangeNumericValueRes::operator==(const ChangeNumericValueRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectID==other_value.field_objectID
+  && field_errorCodes==other_value.field_errorCodes
+  && field_valueForValueAttribute==other_value.field_valueForValueAttribute;
+}
+
+boolean ChangeNumericValueRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectID.is_bound())
+  || (field_errorCodes.is_bound())
+  || (field_valueForValueAttribute.is_bound());
+}
+boolean ChangeNumericValueRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectID.is_value()
+  && field_errorCodes.is_value()
+  && field_valueForValueAttribute.is_value();
+}
+void ChangeNumericValueRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+field_objectID.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+field_errorCodes.log();
+TTCN_Logger::log_event_str(", valueForValueAttribute := ");
+field_valueForValueAttribute.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangeNumericValueRes::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 @IsobusVTMessageTypes.ChangeNumericValueRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) valueForValueAttribute().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "valueForValueAttribute")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          valueForValueAttribute().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 @IsobusVTMessageTypes.ChangeNumericValueRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangeNumericValueRes");
+  }
+}
+
+void ChangeNumericValueRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectID().is_bound()) objectID().set_implicit_omit();
+if (errorCodes().is_bound()) errorCodes().set_implicit_omit();
+if (valueForValueAttribute().is_bound()) valueForValueAttribute().set_implicit_omit();
+}
+
+void ChangeNumericValueRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectID.encode_text(text_buf);
+field_errorCodes.encode_text(text_buf);
+field_valueForValueAttribute.encode_text(text_buf);
+}
+
+void ChangeNumericValueRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectID.decode_text(text_buf);
+field_errorCodes.decode_text(text_buf);
+field_valueForValueAttribute.decode_text(text_buf);
+}
+
+void ChangeNumericValueRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangeNumericValueRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangeNumericValueRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectID.RAW_decode(ValidObjectID_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, ChangeNumericValueRes__errorCodes_descr_.raw->forceomit);
+  decoded_field_length = field_errorCodes.RAW_decode(ChangeNumericValueRes__errorCodes_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::OCT4_descr_.raw->forceomit);
+  decoded_field_length = field_valueForValueAttribute.RAW_decode(General__Types::OCT4_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ChangeNumericValueRes::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ChangeNumericValueRes__errorCodes_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, General__Types::OCT4_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_errorCodes.RAW_encode(ChangeNumericValueRes__errorCodes_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_valueForValueAttribute.RAW_encode(General__Types::OCT4_descr_, *myleaf.body.node.nodes[3]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangeNumericValueRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectID;
+ChangeNumericValueRes__errorCodes_template field_errorCodes;
+OCTETSTRING_template field_valueForValueAttribute;
+};
+
+void ChangeNumericValueRes_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_vtfunction = ANY_VALUE;
+single_value->field_objectID = ANY_VALUE;
+single_value->field_errorCodes = ANY_VALUE;
+single_value->field_valueForValueAttribute = ANY_VALUE;
+}
+}
+}
+
+void ChangeNumericValueRes_template::copy_value(const ChangeNumericValueRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectID().is_bound()) {
+  single_value->field_objectID = other_value.objectID();
+} else {
+  single_value->field_objectID.clean_up();
+}
+if (other_value.errorCodes().is_bound()) {
+  single_value->field_errorCodes = other_value.errorCodes();
+} else {
+  single_value->field_errorCodes.clean_up();
+}
+if (other_value.valueForValueAttribute().is_bound()) {
+  single_value->field_valueForValueAttribute = other_value.valueForValueAttribute();
+} else {
+  single_value->field_valueForValueAttribute.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangeNumericValueRes_template::copy_template(const ChangeNumericValueRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectID().get_selection()) {
+single_value->field_objectID = other_value.objectID();
+} else {
+single_value->field_objectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.errorCodes().get_selection()) {
+single_value->field_errorCodes = other_value.errorCodes();
+} else {
+single_value->field_errorCodes.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.valueForValueAttribute().get_selection()) {
+single_value->field_valueForValueAttribute = other_value.valueForValueAttribute();
+} else {
+single_value->field_valueForValueAttribute.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangeNumericValueRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeNumericValueRes.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangeNumericValueRes_template::ChangeNumericValueRes_template()
+{
+}
+
+ChangeNumericValueRes_template::ChangeNumericValueRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangeNumericValueRes_template::ChangeNumericValueRes_template(const ChangeNumericValueRes& other_value)
+{
+copy_value(other_value);
+}
+
+ChangeNumericValueRes_template::ChangeNumericValueRes_template(const OPTIONAL<ChangeNumericValueRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeNumericValueRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangeNumericValueRes from an unbound optional field.");
+}
+}
+
+ChangeNumericValueRes_template::ChangeNumericValueRes_template(const ChangeNumericValueRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangeNumericValueRes_template::~ChangeNumericValueRes_template()
+{
+clean_up();
+}
+
+ChangeNumericValueRes_template& ChangeNumericValueRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangeNumericValueRes_template& ChangeNumericValueRes_template::operator=(const ChangeNumericValueRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangeNumericValueRes_template& ChangeNumericValueRes_template::operator=(const OPTIONAL<ChangeNumericValueRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeNumericValueRes&)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 @IsobusVTMessageTypes.ChangeNumericValueRes.");
+}
+return *this;
+}
+
+ChangeNumericValueRes_template& ChangeNumericValueRes_template::operator=(const ChangeNumericValueRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangeNumericValueRes_template::match(const ChangeNumericValueRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectID().is_bound()) return FALSE;
+if(!single_value->field_objectID.match(other_value.objectID(), legacy))return FALSE;
+if(!other_value.errorCodes().is_bound()) return FALSE;
+if(!single_value->field_errorCodes.match(other_value.errorCodes(), legacy))return FALSE;
+if(!other_value.valueForValueAttribute().is_bound()) return FALSE;
+if(!single_value->field_valueForValueAttribute.match(other_value.valueForValueAttribute(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeNumericValueRes.");
+}
+return FALSE;
+}
+
+boolean ChangeNumericValueRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectID.is_bound()
+
+ ||single_value->field_errorCodes.is_bound()
+
+ ||single_value->field_valueForValueAttribute.is_bound()
+;
+}
+
+boolean ChangeNumericValueRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectID.is_value()
+ &&single_value->field_errorCodes.is_value()
+ &&single_value->field_valueForValueAttribute.is_value();
+}
+
+void ChangeNumericValueRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangeNumericValueRes ChangeNumericValueRes_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 @IsobusVTMessageTypes.ChangeNumericValueRes.");
+ChangeNumericValueRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectID.is_bound()) {
+ret_val.objectID() = single_value->field_objectID.valueof();
+}
+if (single_value->field_errorCodes.is_bound()) {
+ret_val.errorCodes() = single_value->field_errorCodes.valueof();
+}
+if (single_value->field_valueForValueAttribute.is_bound()) {
+ret_val.valueForValueAttribute() = single_value->field_valueForValueAttribute.valueof();
+}
+return ret_val;
+}
+
+void ChangeNumericValueRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangeNumericValueRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangeNumericValueRes_template[list_length];
+}
+
+ChangeNumericValueRes_template& ChangeNumericValueRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangeNumericValueRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangeNumericValueRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ChangeNumericValueRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ChangeNumericValueRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ChangeNumericValueRes.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& ChangeNumericValueRes_template::objectID()
+{
+set_specific();
+return single_value->field_objectID;
+}
+
+const INTEGER_template& ChangeNumericValueRes_template::objectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectID of a non-specific template of type @IsobusVTMessageTypes.ChangeNumericValueRes.");
+return single_value->field_objectID;
+}
+
+ChangeNumericValueRes__errorCodes_template& ChangeNumericValueRes_template::errorCodes()
+{
+set_specific();
+return single_value->field_errorCodes;
+}
+
+const ChangeNumericValueRes__errorCodes_template& ChangeNumericValueRes_template::errorCodes() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field errorCodes of a non-specific template of type @IsobusVTMessageTypes.ChangeNumericValueRes.");
+return single_value->field_errorCodes;
+}
+
+OCTETSTRING_template& ChangeNumericValueRes_template::valueForValueAttribute()
+{
+set_specific();
+return single_value->field_valueForValueAttribute;
+}
+
+const OCTETSTRING_template& ChangeNumericValueRes_template::valueForValueAttribute() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field valueForValueAttribute of a non-specific template of type @IsobusVTMessageTypes.ChangeNumericValueRes.");
+return single_value->field_valueForValueAttribute;
+}
+
+int ChangeNumericValueRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeNumericValueRes 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 @IsobusVTMessageTypes.ChangeNumericValueRes 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 @IsobusVTMessageTypes.ChangeNumericValueRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeNumericValueRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeNumericValueRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeNumericValueRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeNumericValueRes.");
+  }
+  return 0;
+}
+
+void ChangeNumericValueRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log();
+TTCN_Logger::log_event_str(", valueForValueAttribute := ");
+single_value->field_valueForValueAttribute.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangeNumericValueRes_template::log_match(const ChangeNumericValueRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectID.match(match_value.objectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectID");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_errorCodes.match(match_value.errorCodes(), legacy)){
+TTCN_Logger::log_logmatch_info(".errorCodes");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_valueForValueAttribute.match(match_value.valueForValueAttribute(), legacy)){
+TTCN_Logger::log_logmatch_info(".valueForValueAttribute");
+single_value->field_valueForValueAttribute.log_match(match_value.valueForValueAttribute(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::log_event_str(", valueForValueAttribute := ");
+single_value->field_valueForValueAttribute.log_match(match_value.valueForValueAttribute(), 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 ChangeNumericValueRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectID.encode_text(text_buf);
+single_value->field_errorCodes.encode_text(text_buf);
+single_value->field_valueForValueAttribute.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 @IsobusVTMessageTypes.ChangeNumericValueRes.");
+}
+}
+
+void ChangeNumericValueRes_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_vtfunction.decode_text(text_buf);
+single_value->field_objectID.decode_text(text_buf);
+single_value->field_errorCodes.decode_text(text_buf);
+single_value->field_valueForValueAttribute.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 ChangeNumericValueRes_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 @IsobusVTMessageTypes.ChangeNumericValueRes.");
+}
+}
+
+void ChangeNumericValueRes_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: {
+    ChangeNumericValueRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.ChangeNumericValueRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) valueForValueAttribute().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "valueForValueAttribute")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          valueForValueAttribute().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 @IsobusVTMessageTypes.ChangeNumericValueRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangeNumericValueRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangeNumericValueRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeNumericValueRes");
+single_value->field_objectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeNumericValueRes");
+single_value->field_errorCodes.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeNumericValueRes");
+single_value->field_valueForValueAttribute.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeNumericValueRes");
+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 : "@IsobusVTMessageTypes.ChangeNumericValueRes");
+}
+
+boolean ChangeNumericValueRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangeNumericValueRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangeEndPointRes__errorCodes::ChangeEndPointRes__errorCodes()
+{
+}
+
+ChangeEndPointRes__errorCodes::ChangeEndPointRes__errorCodes(const BOOLEAN& par_invalidObjectID,
+    const BOOLEAN& par_invalidLineDirection,
+    const BOOLEAN& par_reserved2,
+    const BOOLEAN& par_reserved3,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7)
+  :   field_invalidObjectID(par_invalidObjectID),
+  field_invalidLineDirection(par_invalidLineDirection),
+  field_reserved2(par_reserved2),
+  field_reserved3(par_reserved3),
+  field_anyOtherError(par_anyOtherError),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7)
+{
+}
+
+ChangeEndPointRes__errorCodes::ChangeEndPointRes__errorCodes(const ChangeEndPointRes__errorCodes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangeEndPointRes_errorCodes.");
+if (other_value.invalidObjectID().is_bound()) field_invalidObjectID = other_value.invalidObjectID();
+else field_invalidObjectID.clean_up();
+if (other_value.invalidLineDirection().is_bound()) field_invalidLineDirection = other_value.invalidLineDirection();
+else field_invalidLineDirection.clean_up();
+if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+else field_reserved2.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+else field_anyOtherError.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+}
+
+void ChangeEndPointRes__errorCodes::clean_up()
+{
+field_invalidObjectID.clean_up();
+field_invalidLineDirection.clean_up();
+field_reserved2.clean_up();
+field_reserved3.clean_up();
+field_anyOtherError.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangeEndPointRes__errorCodes::get_descriptor() const { return &ChangeEndPointRes__errorCodes_descr_; }
+ChangeEndPointRes__errorCodes& ChangeEndPointRes__errorCodes::operator=(const ChangeEndPointRes__errorCodes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangeEndPointRes_errorCodes.");
+  if (other_value.invalidObjectID().is_bound()) field_invalidObjectID = other_value.invalidObjectID();
+  else field_invalidObjectID.clean_up();
+  if (other_value.invalidLineDirection().is_bound()) field_invalidLineDirection = other_value.invalidLineDirection();
+  else field_invalidLineDirection.clean_up();
+  if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+  else field_reserved2.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+  else field_anyOtherError.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+}
+return *this;
+}
+
+boolean ChangeEndPointRes__errorCodes::operator==(const ChangeEndPointRes__errorCodes& other_value) const
+{
+return field_invalidObjectID==other_value.field_invalidObjectID
+  && field_invalidLineDirection==other_value.field_invalidLineDirection
+  && field_reserved2==other_value.field_reserved2
+  && field_reserved3==other_value.field_reserved3
+  && field_anyOtherError==other_value.field_anyOtherError
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7;
+}
+
+boolean ChangeEndPointRes__errorCodes::is_bound() const
+{
+return (field_invalidObjectID.is_bound())
+  || (field_invalidLineDirection.is_bound())
+  || (field_reserved2.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_anyOtherError.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound());
+}
+boolean ChangeEndPointRes__errorCodes::is_value() const
+{
+return field_invalidObjectID.is_value()
+  && field_invalidLineDirection.is_value()
+  && field_reserved2.is_value()
+  && field_reserved3.is_value()
+  && field_anyOtherError.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value();
+}
+void ChangeEndPointRes__errorCodes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ invalidObjectID := ");
+field_invalidObjectID.log();
+TTCN_Logger::log_event_str(", invalidLineDirection := ");
+field_invalidLineDirection.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangeEndPointRes__errorCodes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.ChangeEndPointRes_errorCodes has 8 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) invalidObjectID().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) invalidLineDirection().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "invalidObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidObjectID().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(), "invalidLineDirection")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidLineDirection().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ChangeEndPointRes_errorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangeEndPointRes_errorCodes");
+  }
+}
+
+void ChangeEndPointRes__errorCodes::set_implicit_omit()
+{
+if (invalidObjectID().is_bound()) invalidObjectID().set_implicit_omit();
+if (invalidLineDirection().is_bound()) invalidLineDirection().set_implicit_omit();
+if (reserved2().is_bound()) reserved2().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (anyOtherError().is_bound()) anyOtherError().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+}
+
+void ChangeEndPointRes__errorCodes::encode_text(Text_Buf& text_buf) const
+{
+field_invalidObjectID.encode_text(text_buf);
+field_invalidLineDirection.encode_text(text_buf);
+field_reserved2.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_anyOtherError.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+}
+
+void ChangeEndPointRes__errorCodes::decode_text(Text_Buf& text_buf)
+{
+field_invalidObjectID.decode_text(text_buf);
+field_invalidLineDirection.decode_text(text_buf);
+field_reserved2.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_anyOtherError.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+}
+
+void ChangeEndPointRes__errorCodes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangeEndPointRes__errorCodes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangeEndPointRes__errorCodes::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidObjectID.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidLineDirection.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved2.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_anyOtherError.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ChangeEndPointRes__errorCodes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_invalidObjectID.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_invalidLineDirection.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved2.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved3.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_anyOtherError.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved5.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved6.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved7.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangeEndPointRes__errorCodes_template::single_value_struct {
+BOOLEAN_template field_invalidObjectID;
+BOOLEAN_template field_invalidLineDirection;
+BOOLEAN_template field_reserved2;
+BOOLEAN_template field_reserved3;
+BOOLEAN_template field_anyOtherError;
+BOOLEAN_template field_reserved5;
+BOOLEAN_template field_reserved6;
+BOOLEAN_template field_reserved7;
+};
+
+void ChangeEndPointRes__errorCodes_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_invalidObjectID = ANY_VALUE;
+single_value->field_invalidLineDirection = ANY_VALUE;
+single_value->field_reserved2 = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_anyOtherError = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+}
+}
+}
+
+void ChangeEndPointRes__errorCodes_template::copy_value(const ChangeEndPointRes__errorCodes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.invalidObjectID().is_bound()) {
+  single_value->field_invalidObjectID = other_value.invalidObjectID();
+} else {
+  single_value->field_invalidObjectID.clean_up();
+}
+if (other_value.invalidLineDirection().is_bound()) {
+  single_value->field_invalidLineDirection = other_value.invalidLineDirection();
+} else {
+  single_value->field_invalidLineDirection.clean_up();
+}
+if (other_value.reserved2().is_bound()) {
+  single_value->field_reserved2 = other_value.reserved2();
+} else {
+  single_value->field_reserved2.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.anyOtherError().is_bound()) {
+  single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+  single_value->field_anyOtherError.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangeEndPointRes__errorCodes_template::copy_template(const ChangeEndPointRes__errorCodes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.invalidObjectID().get_selection()) {
+single_value->field_invalidObjectID = other_value.invalidObjectID();
+} else {
+single_value->field_invalidObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.invalidLineDirection().get_selection()) {
+single_value->field_invalidLineDirection = other_value.invalidLineDirection();
+} else {
+single_value->field_invalidLineDirection.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved2().get_selection()) {
+single_value->field_reserved2 = other_value.reserved2();
+} else {
+single_value->field_reserved2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.anyOtherError().get_selection()) {
+single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+single_value->field_anyOtherError.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangeEndPointRes__errorCodes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeEndPointRes_errorCodes.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangeEndPointRes__errorCodes_template::ChangeEndPointRes__errorCodes_template()
+{
+}
+
+ChangeEndPointRes__errorCodes_template::ChangeEndPointRes__errorCodes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangeEndPointRes__errorCodes_template::ChangeEndPointRes__errorCodes_template(const ChangeEndPointRes__errorCodes& other_value)
+{
+copy_value(other_value);
+}
+
+ChangeEndPointRes__errorCodes_template::ChangeEndPointRes__errorCodes_template(const OPTIONAL<ChangeEndPointRes__errorCodes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeEndPointRes__errorCodes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangeEndPointRes_errorCodes from an unbound optional field.");
+}
+}
+
+ChangeEndPointRes__errorCodes_template::ChangeEndPointRes__errorCodes_template(const ChangeEndPointRes__errorCodes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangeEndPointRes__errorCodes_template::~ChangeEndPointRes__errorCodes_template()
+{
+clean_up();
+}
+
+ChangeEndPointRes__errorCodes_template& ChangeEndPointRes__errorCodes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangeEndPointRes__errorCodes_template& ChangeEndPointRes__errorCodes_template::operator=(const ChangeEndPointRes__errorCodes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangeEndPointRes__errorCodes_template& ChangeEndPointRes__errorCodes_template::operator=(const OPTIONAL<ChangeEndPointRes__errorCodes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeEndPointRes__errorCodes&)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 @IsobusVTMessageTypes.ChangeEndPointRes_errorCodes.");
+}
+return *this;
+}
+
+ChangeEndPointRes__errorCodes_template& ChangeEndPointRes__errorCodes_template::operator=(const ChangeEndPointRes__errorCodes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangeEndPointRes__errorCodes_template::match(const ChangeEndPointRes__errorCodes& 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.invalidObjectID().is_bound()) return FALSE;
+if(!single_value->field_invalidObjectID.match(other_value.invalidObjectID(), legacy))return FALSE;
+if(!other_value.invalidLineDirection().is_bound()) return FALSE;
+if(!single_value->field_invalidLineDirection.match(other_value.invalidLineDirection(), legacy))return FALSE;
+if(!other_value.reserved2().is_bound()) return FALSE;
+if(!single_value->field_reserved2.match(other_value.reserved2(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.anyOtherError().is_bound()) return FALSE;
+if(!single_value->field_anyOtherError.match(other_value.anyOtherError(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeEndPointRes_errorCodes.");
+}
+return FALSE;
+}
+
+boolean ChangeEndPointRes__errorCodes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_invalidObjectID.is_bound()
+
+ ||single_value->field_invalidLineDirection.is_bound()
+
+ ||single_value->field_reserved2.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_anyOtherError.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+;
+}
+
+boolean ChangeEndPointRes__errorCodes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_invalidObjectID.is_value()
+ &&single_value->field_invalidLineDirection.is_value()
+ &&single_value->field_reserved2.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_anyOtherError.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value();
+}
+
+void ChangeEndPointRes__errorCodes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangeEndPointRes__errorCodes ChangeEndPointRes__errorCodes_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 @IsobusVTMessageTypes.ChangeEndPointRes_errorCodes.");
+ChangeEndPointRes__errorCodes ret_val;
+if (single_value->field_invalidObjectID.is_bound()) {
+ret_val.invalidObjectID() = single_value->field_invalidObjectID.valueof();
+}
+if (single_value->field_invalidLineDirection.is_bound()) {
+ret_val.invalidLineDirection() = single_value->field_invalidLineDirection.valueof();
+}
+if (single_value->field_reserved2.is_bound()) {
+ret_val.reserved2() = single_value->field_reserved2.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_anyOtherError.is_bound()) {
+ret_val.anyOtherError() = single_value->field_anyOtherError.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+return ret_val;
+}
+
+void ChangeEndPointRes__errorCodes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangeEndPointRes_errorCodes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangeEndPointRes__errorCodes_template[list_length];
+}
+
+ChangeEndPointRes__errorCodes_template& ChangeEndPointRes__errorCodes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangeEndPointRes_errorCodes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangeEndPointRes_errorCodes.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& ChangeEndPointRes__errorCodes_template::invalidObjectID()
+{
+set_specific();
+return single_value->field_invalidObjectID;
+}
+
+const BOOLEAN_template& ChangeEndPointRes__errorCodes_template::invalidObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidObjectID of a non-specific template of type @IsobusVTMessageTypes.ChangeEndPointRes_errorCodes.");
+return single_value->field_invalidObjectID;
+}
+
+BOOLEAN_template& ChangeEndPointRes__errorCodes_template::invalidLineDirection()
+{
+set_specific();
+return single_value->field_invalidLineDirection;
+}
+
+const BOOLEAN_template& ChangeEndPointRes__errorCodes_template::invalidLineDirection() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidLineDirection of a non-specific template of type @IsobusVTMessageTypes.ChangeEndPointRes_errorCodes.");
+return single_value->field_invalidLineDirection;
+}
+
+BOOLEAN_template& ChangeEndPointRes__errorCodes_template::reserved2()
+{
+set_specific();
+return single_value->field_reserved2;
+}
+
+const BOOLEAN_template& ChangeEndPointRes__errorCodes_template::reserved2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved2 of a non-specific template of type @IsobusVTMessageTypes.ChangeEndPointRes_errorCodes.");
+return single_value->field_reserved2;
+}
+
+BOOLEAN_template& ChangeEndPointRes__errorCodes_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const BOOLEAN_template& ChangeEndPointRes__errorCodes_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.ChangeEndPointRes_errorCodes.");
+return single_value->field_reserved3;
+}
+
+BOOLEAN_template& ChangeEndPointRes__errorCodes_template::anyOtherError()
+{
+set_specific();
+return single_value->field_anyOtherError;
+}
+
+const BOOLEAN_template& ChangeEndPointRes__errorCodes_template::anyOtherError() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field anyOtherError of a non-specific template of type @IsobusVTMessageTypes.ChangeEndPointRes_errorCodes.");
+return single_value->field_anyOtherError;
+}
+
+BOOLEAN_template& ChangeEndPointRes__errorCodes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const BOOLEAN_template& ChangeEndPointRes__errorCodes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.ChangeEndPointRes_errorCodes.");
+return single_value->field_reserved5;
+}
+
+BOOLEAN_template& ChangeEndPointRes__errorCodes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const BOOLEAN_template& ChangeEndPointRes__errorCodes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.ChangeEndPointRes_errorCodes.");
+return single_value->field_reserved6;
+}
+
+BOOLEAN_template& ChangeEndPointRes__errorCodes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const BOOLEAN_template& ChangeEndPointRes__errorCodes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ChangeEndPointRes_errorCodes.");
+return single_value->field_reserved7;
+}
+
+int ChangeEndPointRes__errorCodes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeEndPointRes_errorCodes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeEndPointRes_errorCodes 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 @IsobusVTMessageTypes.ChangeEndPointRes_errorCodes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeEndPointRes_errorCodes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeEndPointRes_errorCodes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeEndPointRes_errorCodes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeEndPointRes_errorCodes.");
+  }
+  return 0;
+}
+
+void ChangeEndPointRes__errorCodes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ invalidObjectID := ");
+single_value->field_invalidObjectID.log();
+TTCN_Logger::log_event_str(", invalidLineDirection := ");
+single_value->field_invalidLineDirection.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangeEndPointRes__errorCodes_template::log_match(const ChangeEndPointRes__errorCodes& 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_invalidObjectID.match(match_value.invalidObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidObjectID");
+single_value->field_invalidObjectID.log_match(match_value.invalidObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_invalidLineDirection.match(match_value.invalidLineDirection(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidLineDirection");
+single_value->field_invalidLineDirection.log_match(match_value.invalidLineDirection(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved2.match(match_value.reserved2(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved2");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_anyOtherError.match(match_value.anyOtherError(), legacy)){
+TTCN_Logger::log_logmatch_info(".anyOtherError");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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("{ invalidObjectID := ");
+single_value->field_invalidObjectID.log_match(match_value.invalidObjectID(), legacy);
+TTCN_Logger::log_event_str(", invalidLineDirection := ");
+single_value->field_invalidLineDirection.log_match(match_value.invalidLineDirection(), legacy);
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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 ChangeEndPointRes__errorCodes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_invalidObjectID.encode_text(text_buf);
+single_value->field_invalidLineDirection.encode_text(text_buf);
+single_value->field_reserved2.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_anyOtherError.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.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 @IsobusVTMessageTypes.ChangeEndPointRes_errorCodes.");
+}
+}
+
+void ChangeEndPointRes__errorCodes_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_invalidObjectID.decode_text(text_buf);
+single_value->field_invalidLineDirection.decode_text(text_buf);
+single_value->field_reserved2.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_anyOtherError.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.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 ChangeEndPointRes__errorCodes_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 @IsobusVTMessageTypes.ChangeEndPointRes_errorCodes.");
+}
+}
+
+void ChangeEndPointRes__errorCodes_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: {
+    ChangeEndPointRes__errorCodes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.ChangeEndPointRes_errorCodes has 8 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) invalidObjectID().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) invalidLineDirection().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "invalidObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidObjectID().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(), "invalidLineDirection")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidLineDirection().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ChangeEndPointRes_errorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangeEndPointRes_errorCodes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangeEndPointRes__errorCodes_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_invalidObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeEndPointRes_errorCodes");
+single_value->field_invalidLineDirection.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeEndPointRes_errorCodes");
+single_value->field_reserved2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeEndPointRes_errorCodes");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeEndPointRes_errorCodes");
+single_value->field_anyOtherError.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeEndPointRes_errorCodes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeEndPointRes_errorCodes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeEndPointRes_errorCodes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeEndPointRes_errorCodes");
+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 : "@IsobusVTMessageTypes.ChangeEndPointRes_errorCodes");
+}
+
+boolean ChangeEndPointRes__errorCodes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangeEndPointRes__errorCodes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangeEndPointRes::ChangeEndPointRes()
+{
+}
+
+ChangeEndPointRes::ChangeEndPointRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const ChangeEndPointRes__errorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_objectID(par_objectID),
+  field_errorCodes(par_errorCodes),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+ChangeEndPointRes::ChangeEndPointRes(const ChangeEndPointRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangeEndPointRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+else field_objectID.clean_up();
+if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+else field_errorCodes.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void ChangeEndPointRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectID.clean_up();
+field_errorCodes.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangeEndPointRes::get_descriptor() const { return &ChangeEndPointRes_descr_; }
+ChangeEndPointRes& ChangeEndPointRes::operator=(const ChangeEndPointRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangeEndPointRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+  else field_objectID.clean_up();
+  if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+  else field_errorCodes.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean ChangeEndPointRes::operator==(const ChangeEndPointRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectID==other_value.field_objectID
+  && field_errorCodes==other_value.field_errorCodes
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean ChangeEndPointRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectID.is_bound())
+  || (field_errorCodes.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean ChangeEndPointRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectID.is_value()
+  && field_errorCodes.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void ChangeEndPointRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+field_objectID.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangeEndPointRes::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 @IsobusVTMessageTypes.ChangeEndPointRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangeEndPointRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangeEndPointRes");
+  }
+}
+
+void ChangeEndPointRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectID().is_bound()) objectID().set_implicit_omit();
+if (errorCodes().is_bound()) errorCodes().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void ChangeEndPointRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectID.encode_text(text_buf);
+field_errorCodes.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void ChangeEndPointRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectID.decode_text(text_buf);
+field_errorCodes.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void ChangeEndPointRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangeEndPointRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangeEndPointRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectID.RAW_decode(ValidObjectID_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, ChangeEndPointRes__errorCodes_descr_.raw->forceomit);
+  decoded_field_length = field_errorCodes.RAW_decode(ChangeEndPointRes__errorCodes_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, ChangeEndPointRes_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(ChangeEndPointRes_reserved5_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, ChangeEndPointRes_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(ChangeEndPointRes_reserved6_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, ChangeEndPointRes_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(ChangeEndPointRes_reserved7_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, ChangeEndPointRes_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(ChangeEndPointRes_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ChangeEndPointRes::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ChangeEndPointRes__errorCodes_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, ChangeEndPointRes_reserved5_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, ChangeEndPointRes_reserved6_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, ChangeEndPointRes_reserved7_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, ChangeEndPointRes_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_errorCodes.RAW_encode(ChangeEndPointRes__errorCodes_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved5.RAW_encode(ChangeEndPointRes_reserved5_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved6.RAW_encode(ChangeEndPointRes_reserved6_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved7.RAW_encode(ChangeEndPointRes_reserved7_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved8.RAW_encode(ChangeEndPointRes_reserved8_descr_, *myleaf.body.node.nodes[6]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangeEndPointRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectID;
+ChangeEndPointRes__errorCodes_template field_errorCodes;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void ChangeEndPointRes_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_vtfunction = ANY_VALUE;
+single_value->field_objectID = ANY_VALUE;
+single_value->field_errorCodes = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void ChangeEndPointRes_template::copy_value(const ChangeEndPointRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectID().is_bound()) {
+  single_value->field_objectID = other_value.objectID();
+} else {
+  single_value->field_objectID.clean_up();
+}
+if (other_value.errorCodes().is_bound()) {
+  single_value->field_errorCodes = other_value.errorCodes();
+} else {
+  single_value->field_errorCodes.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangeEndPointRes_template::copy_template(const ChangeEndPointRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectID().get_selection()) {
+single_value->field_objectID = other_value.objectID();
+} else {
+single_value->field_objectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.errorCodes().get_selection()) {
+single_value->field_errorCodes = other_value.errorCodes();
+} else {
+single_value->field_errorCodes.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangeEndPointRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeEndPointRes.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangeEndPointRes_template::ChangeEndPointRes_template()
+{
+}
+
+ChangeEndPointRes_template::ChangeEndPointRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangeEndPointRes_template::ChangeEndPointRes_template(const ChangeEndPointRes& other_value)
+{
+copy_value(other_value);
+}
+
+ChangeEndPointRes_template::ChangeEndPointRes_template(const OPTIONAL<ChangeEndPointRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeEndPointRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangeEndPointRes from an unbound optional field.");
+}
+}
+
+ChangeEndPointRes_template::ChangeEndPointRes_template(const ChangeEndPointRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangeEndPointRes_template::~ChangeEndPointRes_template()
+{
+clean_up();
+}
+
+ChangeEndPointRes_template& ChangeEndPointRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangeEndPointRes_template& ChangeEndPointRes_template::operator=(const ChangeEndPointRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangeEndPointRes_template& ChangeEndPointRes_template::operator=(const OPTIONAL<ChangeEndPointRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeEndPointRes&)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 @IsobusVTMessageTypes.ChangeEndPointRes.");
+}
+return *this;
+}
+
+ChangeEndPointRes_template& ChangeEndPointRes_template::operator=(const ChangeEndPointRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangeEndPointRes_template::match(const ChangeEndPointRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectID().is_bound()) return FALSE;
+if(!single_value->field_objectID.match(other_value.objectID(), legacy))return FALSE;
+if(!other_value.errorCodes().is_bound()) return FALSE;
+if(!single_value->field_errorCodes.match(other_value.errorCodes(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeEndPointRes.");
+}
+return FALSE;
+}
+
+boolean ChangeEndPointRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectID.is_bound()
+
+ ||single_value->field_errorCodes.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean ChangeEndPointRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectID.is_value()
+ &&single_value->field_errorCodes.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void ChangeEndPointRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangeEndPointRes ChangeEndPointRes_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 @IsobusVTMessageTypes.ChangeEndPointRes.");
+ChangeEndPointRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectID.is_bound()) {
+ret_val.objectID() = single_value->field_objectID.valueof();
+}
+if (single_value->field_errorCodes.is_bound()) {
+ret_val.errorCodes() = single_value->field_errorCodes.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void ChangeEndPointRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangeEndPointRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangeEndPointRes_template[list_length];
+}
+
+ChangeEndPointRes_template& ChangeEndPointRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangeEndPointRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangeEndPointRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ChangeEndPointRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ChangeEndPointRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ChangeEndPointRes.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& ChangeEndPointRes_template::objectID()
+{
+set_specific();
+return single_value->field_objectID;
+}
+
+const INTEGER_template& ChangeEndPointRes_template::objectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectID of a non-specific template of type @IsobusVTMessageTypes.ChangeEndPointRes.");
+return single_value->field_objectID;
+}
+
+ChangeEndPointRes__errorCodes_template& ChangeEndPointRes_template::errorCodes()
+{
+set_specific();
+return single_value->field_errorCodes;
+}
+
+const ChangeEndPointRes__errorCodes_template& ChangeEndPointRes_template::errorCodes() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field errorCodes of a non-specific template of type @IsobusVTMessageTypes.ChangeEndPointRes.");
+return single_value->field_errorCodes;
+}
+
+OCTETSTRING_template& ChangeEndPointRes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& ChangeEndPointRes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.ChangeEndPointRes.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& ChangeEndPointRes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& ChangeEndPointRes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.ChangeEndPointRes.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& ChangeEndPointRes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& ChangeEndPointRes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ChangeEndPointRes.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& ChangeEndPointRes_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& ChangeEndPointRes_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.ChangeEndPointRes.");
+return single_value->field_reserved8;
+}
+
+int ChangeEndPointRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeEndPointRes 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 @IsobusVTMessageTypes.ChangeEndPointRes 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 @IsobusVTMessageTypes.ChangeEndPointRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeEndPointRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeEndPointRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeEndPointRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeEndPointRes.");
+  }
+  return 0;
+}
+
+void ChangeEndPointRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangeEndPointRes_template::log_match(const ChangeEndPointRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectID.match(match_value.objectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectID");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_errorCodes.match(match_value.errorCodes(), legacy)){
+TTCN_Logger::log_logmatch_info(".errorCodes");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 ChangeEndPointRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectID.encode_text(text_buf);
+single_value->field_errorCodes.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.ChangeEndPointRes.");
+}
+}
+
+void ChangeEndPointRes_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_vtfunction.decode_text(text_buf);
+single_value->field_objectID.decode_text(text_buf);
+single_value->field_errorCodes.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 ChangeEndPointRes_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 @IsobusVTMessageTypes.ChangeEndPointRes.");
+}
+}
+
+void ChangeEndPointRes_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: {
+    ChangeEndPointRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.ChangeEndPointRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangeEndPointRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangeEndPointRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangeEndPointRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeEndPointRes");
+single_value->field_objectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeEndPointRes");
+single_value->field_errorCodes.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeEndPointRes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeEndPointRes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeEndPointRes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeEndPointRes");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeEndPointRes");
+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 : "@IsobusVTMessageTypes.ChangeEndPointRes");
+}
+
+boolean ChangeEndPointRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangeEndPointRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+e__ChangeEndPointReq__LineDirection::e__ChangeEndPointReq__LineDirection()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+e__ChangeEndPointReq__LineDirection::e__ChangeEndPointReq__LineDirection(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @IsobusVTMessageTypes.e_ChangeEndPointReq_LineDirection with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+e__ChangeEndPointReq__LineDirection::e__ChangeEndPointReq__LineDirection(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+e__ChangeEndPointReq__LineDirection::e__ChangeEndPointReq__LineDirection(const e__ChangeEndPointReq__LineDirection& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @IsobusVTMessageTypes.e_ChangeEndPointReq_LineDirection.");
+enum_value = other_value.enum_value;
+}
+
+e__ChangeEndPointReq__LineDirection& e__ChangeEndPointReq__LineDirection::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @IsobusVTMessageTypes.e_ChangeEndPointReq_LineDirection.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+e__ChangeEndPointReq__LineDirection& e__ChangeEndPointReq__LineDirection::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+e__ChangeEndPointReq__LineDirection& e__ChangeEndPointReq__LineDirection::operator=(const e__ChangeEndPointReq__LineDirection& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusVTMessageTypes.e_ChangeEndPointReq_LineDirection.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean e__ChangeEndPointReq__LineDirection::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_ChangeEndPointReq_LineDirection.");
+return enum_value == other_value;
+}
+
+boolean e__ChangeEndPointReq__LineDirection::operator==(const e__ChangeEndPointReq__LineDirection& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_ChangeEndPointReq_LineDirection.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_ChangeEndPointReq_LineDirection.");
+return enum_value == other_value.enum_value;
+}
+
+boolean e__ChangeEndPointReq__LineDirection::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_ChangeEndPointReq_LineDirection.");
+return enum_value < other_value;
+}
+
+boolean e__ChangeEndPointReq__LineDirection::operator<(const e__ChangeEndPointReq__LineDirection& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_ChangeEndPointReq_LineDirection.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_ChangeEndPointReq_LineDirection.");
+return enum_value < other_value.enum_value;
+}
+
+boolean e__ChangeEndPointReq__LineDirection::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_ChangeEndPointReq_LineDirection.");
+return enum_value > other_value;
+}
+
+boolean e__ChangeEndPointReq__LineDirection::operator>(const e__ChangeEndPointReq__LineDirection& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_ChangeEndPointReq_LineDirection.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_ChangeEndPointReq_LineDirection.");
+return enum_value > other_value.enum_value;
+}
+
+const char *e__ChangeEndPointReq__LineDirection::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case lineIsDrawnFromTopLeftToBottomRightOfEnclosingVirtualRectangle: return "lineIsDrawnFromTopLeftToBottomRightOfEnclosingVirtualRectangle";
+case lineIsDrawnFromBottomLeftToToRightOfEnclosingVirtualRectangle: return "lineIsDrawnFromBottomLeftToToRightOfEnclosingVirtualRectangle";
+default: return "<unknown>";
+}
+}
+
+e__ChangeEndPointReq__LineDirection::enum_type e__ChangeEndPointReq__LineDirection::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "lineIsDrawnFromTopLeftToBottomRightOfEnclosingVirtualRectangle")) return lineIsDrawnFromTopLeftToBottomRightOfEnclosingVirtualRectangle;
+else if (!strcmp(str_par, "lineIsDrawnFromBottomLeftToToRightOfEnclosingVirtualRectangle")) return lineIsDrawnFromBottomLeftToToRightOfEnclosingVirtualRectangle;
+else return UNKNOWN_VALUE;
+}
+
+boolean e__ChangeEndPointReq__LineDirection::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 0:
+case 1:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int e__ChangeEndPointReq__LineDirection::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusVTMessageTypes.e_ChangeEndPointReq_LineDirection.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int e__ChangeEndPointReq__LineDirection::enum2int(const e__ChangeEndPointReq__LineDirection& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusVTMessageTypes.e_ChangeEndPointReq_LineDirection.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void e__ChangeEndPointReq__LineDirection::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @IsobusVTMessageTypes.e_ChangeEndPointReq_LineDirection.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+e__ChangeEndPointReq__LineDirection::operator e__ChangeEndPointReq__LineDirection::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @IsobusVTMessageTypes.e_ChangeEndPointReq_LineDirection.");
+return enum_value;
+}
+
+void e__ChangeEndPointReq__LineDirection::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void e__ChangeEndPointReq__LineDirection::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@IsobusVTMessageTypes.e_ChangeEndPointReq_LineDirection");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @IsobusVTMessageTypes.e_ChangeEndPointReq_LineDirection.");
+  }
+}
+
+void e__ChangeEndPointReq__LineDirection::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @IsobusVTMessageTypes.e_ChangeEndPointReq_LineDirection.");
+text_buf.push_int(enum_value);
+}
+
+void e__ChangeEndPointReq__LineDirection::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @IsobusVTMessageTypes.e_ChangeEndPointReq_LineDirection.", enum_value);
+}
+
+void e__ChangeEndPointReq__LineDirection::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void e__ChangeEndPointReq__LineDirection::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int e__ChangeEndPointReq__LineDirection::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*)
+{
+  int decoded_value = 0;
+  int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 2, no_err);
+  if (decoded_length < 0) return decoded_length;
+  if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value;
+  else {
+    if(no_err){
+     return -1;
+    } else {
+    TTCN_EncDec_ErrorContext::error
+      (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name);
+    enum_value = UNKNOWN_VALUE;
+    }
+  }
+  return decoded_length;
+}
+
+int e__ChangeEndPointReq__LineDirection::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const
+{
+  return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 2);
+}
+
+void e__ChangeEndPointReq__LineDirection_template::copy_template(const e__ChangeEndPointReq__LineDirection_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new e__ChangeEndPointReq__LineDirection_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_ChangeEndPointReq_LineDirection.");
+}
+}
+
+e__ChangeEndPointReq__LineDirection_template::e__ChangeEndPointReq__LineDirection_template()
+{
+}
+
+e__ChangeEndPointReq__LineDirection_template::e__ChangeEndPointReq__LineDirection_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+e__ChangeEndPointReq__LineDirection_template::e__ChangeEndPointReq__LineDirection_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!e__ChangeEndPointReq__LineDirection::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @IsobusVTMessageTypes.e_ChangeEndPointReq_LineDirection with unknown numeric value %d.", other_value);
+single_value = (e__ChangeEndPointReq__LineDirection::enum_type)other_value;
+}
+
+e__ChangeEndPointReq__LineDirection_template::e__ChangeEndPointReq__LineDirection_template(e__ChangeEndPointReq__LineDirection::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+e__ChangeEndPointReq__LineDirection_template::e__ChangeEndPointReq__LineDirection_template(const e__ChangeEndPointReq__LineDirection& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == e__ChangeEndPointReq__LineDirection::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @IsobusVTMessageTypes.e_ChangeEndPointReq_LineDirection.");
+single_value = other_value.enum_value;
+}
+
+e__ChangeEndPointReq__LineDirection_template::e__ChangeEndPointReq__LineDirection_template(const OPTIONAL<e__ChangeEndPointReq__LineDirection>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__ChangeEndPointReq__LineDirection::enum_type)(const e__ChangeEndPointReq__LineDirection&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @IsobusVTMessageTypes.e_ChangeEndPointReq_LineDirection from an unbound optional field.");
+}
+}
+
+e__ChangeEndPointReq__LineDirection_template::e__ChangeEndPointReq__LineDirection_template(const e__ChangeEndPointReq__LineDirection_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+e__ChangeEndPointReq__LineDirection_template::~e__ChangeEndPointReq__LineDirection_template()
+{
+clean_up();
+}
+
+boolean e__ChangeEndPointReq__LineDirection_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean e__ChangeEndPointReq__LineDirection_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != e__ChangeEndPointReq__LineDirection::UNBOUND_VALUE;
+}
+
+void e__ChangeEndPointReq__LineDirection_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+e__ChangeEndPointReq__LineDirection_template& e__ChangeEndPointReq__LineDirection_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+e__ChangeEndPointReq__LineDirection_template& e__ChangeEndPointReq__LineDirection_template::operator=(int other_value)
+{
+if (!e__ChangeEndPointReq__LineDirection::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @IsobusVTMessageTypes.e_ChangeEndPointReq_LineDirection.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (e__ChangeEndPointReq__LineDirection::enum_type)other_value;
+return *this;
+}
+
+e__ChangeEndPointReq__LineDirection_template& e__ChangeEndPointReq__LineDirection_template::operator=(e__ChangeEndPointReq__LineDirection::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+e__ChangeEndPointReq__LineDirection_template& e__ChangeEndPointReq__LineDirection_template::operator=(const e__ChangeEndPointReq__LineDirection& other_value)
+{
+if (other_value.enum_value == e__ChangeEndPointReq__LineDirection::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusVTMessageTypes.e_ChangeEndPointReq_LineDirection to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+e__ChangeEndPointReq__LineDirection_template& e__ChangeEndPointReq__LineDirection_template::operator=(const OPTIONAL<e__ChangeEndPointReq__LineDirection>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__ChangeEndPointReq__LineDirection::enum_type)(const e__ChangeEndPointReq__LineDirection&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @IsobusVTMessageTypes.e_ChangeEndPointReq_LineDirection.");
+}
+return *this;
+}
+
+e__ChangeEndPointReq__LineDirection_template& e__ChangeEndPointReq__LineDirection_template::operator=(const e__ChangeEndPointReq__LineDirection_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean e__ChangeEndPointReq__LineDirection_template::match(e__ChangeEndPointReq__LineDirection::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_ChangeEndPointReq_LineDirection.");
+}
+return FALSE;
+}
+
+boolean e__ChangeEndPointReq__LineDirection_template::match(const e__ChangeEndPointReq__LineDirection& other_value, boolean) const
+{
+if (other_value.enum_value == e__ChangeEndPointReq__LineDirection::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @IsobusVTMessageTypes.e_ChangeEndPointReq_LineDirection with an unbound value.");
+return match(other_value.enum_value);
+}
+
+e__ChangeEndPointReq__LineDirection::enum_type e__ChangeEndPointReq__LineDirection_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @IsobusVTMessageTypes.e_ChangeEndPointReq_LineDirection.");
+return single_value;
+}
+
+void e__ChangeEndPointReq__LineDirection_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @IsobusVTMessageTypes.e_ChangeEndPointReq_LineDirection.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new e__ChangeEndPointReq__LineDirection_template[list_length];
+}
+
+e__ChangeEndPointReq__LineDirection_template& e__ChangeEndPointReq__LineDirection_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @IsobusVTMessageTypes.e_ChangeEndPointReq_LineDirection.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @IsobusVTMessageTypes.e_ChangeEndPointReq_LineDirection.");
+return value_list.list_value[list_index];
+}
+
+void e__ChangeEndPointReq__LineDirection_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(e__ChangeEndPointReq__LineDirection::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void e__ChangeEndPointReq__LineDirection_template::log_match(const e__ChangeEndPointReq__LineDirection& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void e__ChangeEndPointReq__LineDirection_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_ChangeEndPointReq_LineDirection.");
+}
+}
+
+void e__ChangeEndPointReq__LineDirection_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (e__ChangeEndPointReq__LineDirection::enum_type)text_buf.pull_int().get_val();
+if (!e__ChangeEndPointReq__LineDirection::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @IsobusVTMessageTypes.e_ChangeEndPointReq_LineDirection.", single_value);
+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 e__ChangeEndPointReq__LineDirection_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @IsobusVTMessageTypes.e_ChangeEndPointReq_LineDirection.");
+}
+}
+
+boolean e__ChangeEndPointReq__LineDirection_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean e__ChangeEndPointReq__LineDirection_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 e__ChangeEndPointReq__LineDirection_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    e__ChangeEndPointReq__LineDirection_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    e__ChangeEndPointReq__LineDirection::enum_type enum_val = e__ChangeEndPointReq__LineDirection::str_to_enum(m_p->get_enumerated());
+    if (!e__ChangeEndPointReq__LineDirection::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @IsobusVTMessageTypes.e_ChangeEndPointReq_LineDirection.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@IsobusVTMessageTypes.e_ChangeEndPointReq_LineDirection");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void e__ChangeEndPointReq__LineDirection_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@IsobusVTMessageTypes.e_ChangeEndPointReq_LineDirection");
+}
+
+ChangeEndPointReq::ChangeEndPointReq()
+{
+}
+
+ChangeEndPointReq::ChangeEndPointReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectIDofAnOutputLineObjectToChange,
+    const INTEGER& par_width,
+    const INTEGER& par_height,
+    const e__ChangeEndPointReq__LineDirection& par_lineDirection)
+  :   field_vtfunction(par_vtfunction),
+  field_objectIDofAnOutputLineObjectToChange(par_objectIDofAnOutputLineObjectToChange),
+  field_width(par_width),
+  field_height(par_height),
+  field_lineDirection(par_lineDirection)
+{
+}
+
+ChangeEndPointReq::ChangeEndPointReq(const ChangeEndPointReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangeEndPointReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectIDofAnOutputLineObjectToChange().is_bound()) field_objectIDofAnOutputLineObjectToChange = other_value.objectIDofAnOutputLineObjectToChange();
+else field_objectIDofAnOutputLineObjectToChange.clean_up();
+if (other_value.width().is_bound()) field_width = other_value.width();
+else field_width.clean_up();
+if (other_value.height().is_bound()) field_height = other_value.height();
+else field_height.clean_up();
+if (other_value.lineDirection().is_bound()) field_lineDirection = other_value.lineDirection();
+else field_lineDirection.clean_up();
+}
+
+void ChangeEndPointReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectIDofAnOutputLineObjectToChange.clean_up();
+field_width.clean_up();
+field_height.clean_up();
+field_lineDirection.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangeEndPointReq::get_descriptor() const { return &ChangeEndPointReq_descr_; }
+ChangeEndPointReq& ChangeEndPointReq::operator=(const ChangeEndPointReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangeEndPointReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectIDofAnOutputLineObjectToChange().is_bound()) field_objectIDofAnOutputLineObjectToChange = other_value.objectIDofAnOutputLineObjectToChange();
+  else field_objectIDofAnOutputLineObjectToChange.clean_up();
+  if (other_value.width().is_bound()) field_width = other_value.width();
+  else field_width.clean_up();
+  if (other_value.height().is_bound()) field_height = other_value.height();
+  else field_height.clean_up();
+  if (other_value.lineDirection().is_bound()) field_lineDirection = other_value.lineDirection();
+  else field_lineDirection.clean_up();
+}
+return *this;
+}
+
+boolean ChangeEndPointReq::operator==(const ChangeEndPointReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectIDofAnOutputLineObjectToChange==other_value.field_objectIDofAnOutputLineObjectToChange
+  && field_width==other_value.field_width
+  && field_height==other_value.field_height
+  && field_lineDirection==other_value.field_lineDirection;
+}
+
+boolean ChangeEndPointReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectIDofAnOutputLineObjectToChange.is_bound())
+  || (field_width.is_bound())
+  || (field_height.is_bound())
+  || (field_lineDirection.is_bound());
+}
+boolean ChangeEndPointReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectIDofAnOutputLineObjectToChange.is_value()
+  && field_width.is_value()
+  && field_height.is_value()
+  && field_lineDirection.is_value();
+}
+void ChangeEndPointReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectIDofAnOutputLineObjectToChange := ");
+field_objectIDofAnOutputLineObjectToChange.log();
+TTCN_Logger::log_event_str(", width := ");
+field_width.log();
+TTCN_Logger::log_event_str(", height := ");
+field_height.log();
+TTCN_Logger::log_event_str(", lineDirection := ");
+field_lineDirection.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangeEndPointReq::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 @IsobusVTMessageTypes.ChangeEndPointReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectIDofAnOutputLineObjectToChange().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) width().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) height().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) lineDirection().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectIDofAnOutputLineObjectToChange")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofAnOutputLineObjectToChange().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(), "width")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          width().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(), "height")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          height().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(), "lineDirection")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          lineDirection().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 @IsobusVTMessageTypes.ChangeEndPointReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangeEndPointReq");
+  }
+}
+
+void ChangeEndPointReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectIDofAnOutputLineObjectToChange().is_bound()) objectIDofAnOutputLineObjectToChange().set_implicit_omit();
+if (width().is_bound()) width().set_implicit_omit();
+if (height().is_bound()) height().set_implicit_omit();
+if (lineDirection().is_bound()) lineDirection().set_implicit_omit();
+}
+
+void ChangeEndPointReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectIDofAnOutputLineObjectToChange.encode_text(text_buf);
+field_width.encode_text(text_buf);
+field_height.encode_text(text_buf);
+field_lineDirection.encode_text(text_buf);
+}
+
+void ChangeEndPointReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectIDofAnOutputLineObjectToChange.decode_text(text_buf);
+field_width.decode_text(text_buf);
+field_height.decode_text(text_buf);
+field_lineDirection.decode_text(text_buf);
+}
+
+void ChangeEndPointReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangeEndPointReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangeEndPointReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectIDofAnOutputLineObjectToChange.RAW_decode(ValidObjectID_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, WidthType_descr_.raw->forceomit);
+  decoded_field_length = field_width.RAW_decode(WidthType_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, HeightType_descr_.raw->forceomit);
+  decoded_field_length = field_height.RAW_decode(HeightType_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, e__ChangeEndPointReq__LineDirection_descr_.raw->forceomit);
+  decoded_field_length = field_lineDirection.RAW_decode(e__ChangeEndPointReq__LineDirection_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 ChangeEndPointReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, WidthType_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, HeightType_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, e__ChangeEndPointReq__LineDirection_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectIDofAnOutputLineObjectToChange.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_width.RAW_encode(WidthType_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_height.RAW_encode(HeightType_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_lineDirection.RAW_encode(e__ChangeEndPointReq__LineDirection_descr_, *myleaf.body.node.nodes[4]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangeEndPointReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectIDofAnOutputLineObjectToChange;
+INTEGER_template field_width;
+INTEGER_template field_height;
+e__ChangeEndPointReq__LineDirection_template field_lineDirection;
+};
+
+void ChangeEndPointReq_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_vtfunction = ANY_VALUE;
+single_value->field_objectIDofAnOutputLineObjectToChange = ANY_VALUE;
+single_value->field_width = ANY_VALUE;
+single_value->field_height = ANY_VALUE;
+single_value->field_lineDirection = ANY_VALUE;
+}
+}
+}
+
+void ChangeEndPointReq_template::copy_value(const ChangeEndPointReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectIDofAnOutputLineObjectToChange().is_bound()) {
+  single_value->field_objectIDofAnOutputLineObjectToChange = other_value.objectIDofAnOutputLineObjectToChange();
+} else {
+  single_value->field_objectIDofAnOutputLineObjectToChange.clean_up();
+}
+if (other_value.width().is_bound()) {
+  single_value->field_width = other_value.width();
+} else {
+  single_value->field_width.clean_up();
+}
+if (other_value.height().is_bound()) {
+  single_value->field_height = other_value.height();
+} else {
+  single_value->field_height.clean_up();
+}
+if (other_value.lineDirection().is_bound()) {
+  single_value->field_lineDirection = other_value.lineDirection();
+} else {
+  single_value->field_lineDirection.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangeEndPointReq_template::copy_template(const ChangeEndPointReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectIDofAnOutputLineObjectToChange().get_selection()) {
+single_value->field_objectIDofAnOutputLineObjectToChange = other_value.objectIDofAnOutputLineObjectToChange();
+} else {
+single_value->field_objectIDofAnOutputLineObjectToChange.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.width().get_selection()) {
+single_value->field_width = other_value.width();
+} else {
+single_value->field_width.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.height().get_selection()) {
+single_value->field_height = other_value.height();
+} else {
+single_value->field_height.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.lineDirection().get_selection()) {
+single_value->field_lineDirection = other_value.lineDirection();
+} else {
+single_value->field_lineDirection.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangeEndPointReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeEndPointReq.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangeEndPointReq_template::ChangeEndPointReq_template()
+{
+}
+
+ChangeEndPointReq_template::ChangeEndPointReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangeEndPointReq_template::ChangeEndPointReq_template(const ChangeEndPointReq& other_value)
+{
+copy_value(other_value);
+}
+
+ChangeEndPointReq_template::ChangeEndPointReq_template(const OPTIONAL<ChangeEndPointReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeEndPointReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangeEndPointReq from an unbound optional field.");
+}
+}
+
+ChangeEndPointReq_template::ChangeEndPointReq_template(const ChangeEndPointReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangeEndPointReq_template::~ChangeEndPointReq_template()
+{
+clean_up();
+}
+
+ChangeEndPointReq_template& ChangeEndPointReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangeEndPointReq_template& ChangeEndPointReq_template::operator=(const ChangeEndPointReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangeEndPointReq_template& ChangeEndPointReq_template::operator=(const OPTIONAL<ChangeEndPointReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeEndPointReq&)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 @IsobusVTMessageTypes.ChangeEndPointReq.");
+}
+return *this;
+}
+
+ChangeEndPointReq_template& ChangeEndPointReq_template::operator=(const ChangeEndPointReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangeEndPointReq_template::match(const ChangeEndPointReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectIDofAnOutputLineObjectToChange().is_bound()) return FALSE;
+if(!single_value->field_objectIDofAnOutputLineObjectToChange.match(other_value.objectIDofAnOutputLineObjectToChange(), legacy))return FALSE;
+if(!other_value.width().is_bound()) return FALSE;
+if(!single_value->field_width.match(other_value.width(), legacy))return FALSE;
+if(!other_value.height().is_bound()) return FALSE;
+if(!single_value->field_height.match(other_value.height(), legacy))return FALSE;
+if(!other_value.lineDirection().is_bound()) return FALSE;
+if(!single_value->field_lineDirection.match(other_value.lineDirection(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeEndPointReq.");
+}
+return FALSE;
+}
+
+boolean ChangeEndPointReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectIDofAnOutputLineObjectToChange.is_bound()
+
+ ||single_value->field_width.is_bound()
+
+ ||single_value->field_height.is_bound()
+
+ ||single_value->field_lineDirection.is_bound()
+;
+}
+
+boolean ChangeEndPointReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectIDofAnOutputLineObjectToChange.is_value()
+ &&single_value->field_width.is_value()
+ &&single_value->field_height.is_value()
+ &&single_value->field_lineDirection.is_value();
+}
+
+void ChangeEndPointReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangeEndPointReq ChangeEndPointReq_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 @IsobusVTMessageTypes.ChangeEndPointReq.");
+ChangeEndPointReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectIDofAnOutputLineObjectToChange.is_bound()) {
+ret_val.objectIDofAnOutputLineObjectToChange() = single_value->field_objectIDofAnOutputLineObjectToChange.valueof();
+}
+if (single_value->field_width.is_bound()) {
+ret_val.width() = single_value->field_width.valueof();
+}
+if (single_value->field_height.is_bound()) {
+ret_val.height() = single_value->field_height.valueof();
+}
+if (single_value->field_lineDirection.is_bound()) {
+ret_val.lineDirection() = single_value->field_lineDirection.valueof();
+}
+return ret_val;
+}
+
+void ChangeEndPointReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangeEndPointReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangeEndPointReq_template[list_length];
+}
+
+ChangeEndPointReq_template& ChangeEndPointReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangeEndPointReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangeEndPointReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ChangeEndPointReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ChangeEndPointReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ChangeEndPointReq.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& ChangeEndPointReq_template::objectIDofAnOutputLineObjectToChange()
+{
+set_specific();
+return single_value->field_objectIDofAnOutputLineObjectToChange;
+}
+
+const INTEGER_template& ChangeEndPointReq_template::objectIDofAnOutputLineObjectToChange() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectIDofAnOutputLineObjectToChange of a non-specific template of type @IsobusVTMessageTypes.ChangeEndPointReq.");
+return single_value->field_objectIDofAnOutputLineObjectToChange;
+}
+
+INTEGER_template& ChangeEndPointReq_template::width()
+{
+set_specific();
+return single_value->field_width;
+}
+
+const INTEGER_template& ChangeEndPointReq_template::width() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field width of a non-specific template of type @IsobusVTMessageTypes.ChangeEndPointReq.");
+return single_value->field_width;
+}
+
+INTEGER_template& ChangeEndPointReq_template::height()
+{
+set_specific();
+return single_value->field_height;
+}
+
+const INTEGER_template& ChangeEndPointReq_template::height() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field height of a non-specific template of type @IsobusVTMessageTypes.ChangeEndPointReq.");
+return single_value->field_height;
+}
+
+e__ChangeEndPointReq__LineDirection_template& ChangeEndPointReq_template::lineDirection()
+{
+set_specific();
+return single_value->field_lineDirection;
+}
+
+const e__ChangeEndPointReq__LineDirection_template& ChangeEndPointReq_template::lineDirection() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field lineDirection of a non-specific template of type @IsobusVTMessageTypes.ChangeEndPointReq.");
+return single_value->field_lineDirection;
+}
+
+int ChangeEndPointReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeEndPointReq 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 @IsobusVTMessageTypes.ChangeEndPointReq 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 @IsobusVTMessageTypes.ChangeEndPointReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeEndPointReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeEndPointReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeEndPointReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeEndPointReq.");
+  }
+  return 0;
+}
+
+void ChangeEndPointReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectIDofAnOutputLineObjectToChange := ");
+single_value->field_objectIDofAnOutputLineObjectToChange.log();
+TTCN_Logger::log_event_str(", width := ");
+single_value->field_width.log();
+TTCN_Logger::log_event_str(", height := ");
+single_value->field_height.log();
+TTCN_Logger::log_event_str(", lineDirection := ");
+single_value->field_lineDirection.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangeEndPointReq_template::log_match(const ChangeEndPointReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectIDofAnOutputLineObjectToChange.match(match_value.objectIDofAnOutputLineObjectToChange(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectIDofAnOutputLineObjectToChange");
+single_value->field_objectIDofAnOutputLineObjectToChange.log_match(match_value.objectIDofAnOutputLineObjectToChange(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_width.match(match_value.width(), legacy)){
+TTCN_Logger::log_logmatch_info(".width");
+single_value->field_width.log_match(match_value.width(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_height.match(match_value.height(), legacy)){
+TTCN_Logger::log_logmatch_info(".height");
+single_value->field_height.log_match(match_value.height(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_lineDirection.match(match_value.lineDirection(), legacy)){
+TTCN_Logger::log_logmatch_info(".lineDirection");
+single_value->field_lineDirection.log_match(match_value.lineDirection(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectIDofAnOutputLineObjectToChange := ");
+single_value->field_objectIDofAnOutputLineObjectToChange.log_match(match_value.objectIDofAnOutputLineObjectToChange(), legacy);
+TTCN_Logger::log_event_str(", width := ");
+single_value->field_width.log_match(match_value.width(), legacy);
+TTCN_Logger::log_event_str(", height := ");
+single_value->field_height.log_match(match_value.height(), legacy);
+TTCN_Logger::log_event_str(", lineDirection := ");
+single_value->field_lineDirection.log_match(match_value.lineDirection(), 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 ChangeEndPointReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectIDofAnOutputLineObjectToChange.encode_text(text_buf);
+single_value->field_width.encode_text(text_buf);
+single_value->field_height.encode_text(text_buf);
+single_value->field_lineDirection.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 @IsobusVTMessageTypes.ChangeEndPointReq.");
+}
+}
+
+void ChangeEndPointReq_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_vtfunction.decode_text(text_buf);
+single_value->field_objectIDofAnOutputLineObjectToChange.decode_text(text_buf);
+single_value->field_width.decode_text(text_buf);
+single_value->field_height.decode_text(text_buf);
+single_value->field_lineDirection.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 ChangeEndPointReq_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 @IsobusVTMessageTypes.ChangeEndPointReq.");
+}
+}
+
+void ChangeEndPointReq_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: {
+    ChangeEndPointReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.ChangeEndPointReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectIDofAnOutputLineObjectToChange().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) width().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) height().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) lineDirection().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectIDofAnOutputLineObjectToChange")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofAnOutputLineObjectToChange().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(), "width")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          width().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(), "height")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          height().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(), "lineDirection")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          lineDirection().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 @IsobusVTMessageTypes.ChangeEndPointReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangeEndPointReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangeEndPointReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeEndPointReq");
+single_value->field_objectIDofAnOutputLineObjectToChange.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeEndPointReq");
+single_value->field_width.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeEndPointReq");
+single_value->field_height.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeEndPointReq");
+single_value->field_lineDirection.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeEndPointReq");
+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 : "@IsobusVTMessageTypes.ChangeEndPointReq");
+}
+
+boolean ChangeEndPointReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangeEndPointReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangeFontAttributesRes__errorCodes::ChangeFontAttributesRes__errorCodes()
+{
+}
+
+ChangeFontAttributesRes__errorCodes::ChangeFontAttributesRes__errorCodes(const BOOLEAN& par_invalidObjectID,
+    const BOOLEAN& par_invalidColor,
+    const BOOLEAN& par_invalidSize,
+    const BOOLEAN& par_invalidType,
+    const BOOLEAN& par_invalidStyle,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7)
+  :   field_invalidObjectID(par_invalidObjectID),
+  field_invalidColor(par_invalidColor),
+  field_invalidSize(par_invalidSize),
+  field_invalidType(par_invalidType),
+  field_invalidStyle(par_invalidStyle),
+  field_anyOtherError(par_anyOtherError),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7)
+{
+}
+
+ChangeFontAttributesRes__errorCodes::ChangeFontAttributesRes__errorCodes(const ChangeFontAttributesRes__errorCodes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes.");
+if (other_value.invalidObjectID().is_bound()) field_invalidObjectID = other_value.invalidObjectID();
+else field_invalidObjectID.clean_up();
+if (other_value.invalidColor().is_bound()) field_invalidColor = other_value.invalidColor();
+else field_invalidColor.clean_up();
+if (other_value.invalidSize().is_bound()) field_invalidSize = other_value.invalidSize();
+else field_invalidSize.clean_up();
+if (other_value.invalidType().is_bound()) field_invalidType = other_value.invalidType();
+else field_invalidType.clean_up();
+if (other_value.invalidStyle().is_bound()) field_invalidStyle = other_value.invalidStyle();
+else field_invalidStyle.clean_up();
+if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+else field_anyOtherError.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+}
+
+void ChangeFontAttributesRes__errorCodes::clean_up()
+{
+field_invalidObjectID.clean_up();
+field_invalidColor.clean_up();
+field_invalidSize.clean_up();
+field_invalidType.clean_up();
+field_invalidStyle.clean_up();
+field_anyOtherError.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangeFontAttributesRes__errorCodes::get_descriptor() const { return &ChangeFontAttributesRes__errorCodes_descr_; }
+ChangeFontAttributesRes__errorCodes& ChangeFontAttributesRes__errorCodes::operator=(const ChangeFontAttributesRes__errorCodes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes.");
+  if (other_value.invalidObjectID().is_bound()) field_invalidObjectID = other_value.invalidObjectID();
+  else field_invalidObjectID.clean_up();
+  if (other_value.invalidColor().is_bound()) field_invalidColor = other_value.invalidColor();
+  else field_invalidColor.clean_up();
+  if (other_value.invalidSize().is_bound()) field_invalidSize = other_value.invalidSize();
+  else field_invalidSize.clean_up();
+  if (other_value.invalidType().is_bound()) field_invalidType = other_value.invalidType();
+  else field_invalidType.clean_up();
+  if (other_value.invalidStyle().is_bound()) field_invalidStyle = other_value.invalidStyle();
+  else field_invalidStyle.clean_up();
+  if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+  else field_anyOtherError.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+}
+return *this;
+}
+
+boolean ChangeFontAttributesRes__errorCodes::operator==(const ChangeFontAttributesRes__errorCodes& other_value) const
+{
+return field_invalidObjectID==other_value.field_invalidObjectID
+  && field_invalidColor==other_value.field_invalidColor
+  && field_invalidSize==other_value.field_invalidSize
+  && field_invalidType==other_value.field_invalidType
+  && field_invalidStyle==other_value.field_invalidStyle
+  && field_anyOtherError==other_value.field_anyOtherError
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7;
+}
+
+boolean ChangeFontAttributesRes__errorCodes::is_bound() const
+{
+return (field_invalidObjectID.is_bound())
+  || (field_invalidColor.is_bound())
+  || (field_invalidSize.is_bound())
+  || (field_invalidType.is_bound())
+  || (field_invalidStyle.is_bound())
+  || (field_anyOtherError.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound());
+}
+boolean ChangeFontAttributesRes__errorCodes::is_value() const
+{
+return field_invalidObjectID.is_value()
+  && field_invalidColor.is_value()
+  && field_invalidSize.is_value()
+  && field_invalidType.is_value()
+  && field_invalidStyle.is_value()
+  && field_anyOtherError.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value();
+}
+void ChangeFontAttributesRes__errorCodes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ invalidObjectID := ");
+field_invalidObjectID.log();
+TTCN_Logger::log_event_str(", invalidColor := ");
+field_invalidColor.log();
+TTCN_Logger::log_event_str(", invalidSize := ");
+field_invalidSize.log();
+TTCN_Logger::log_event_str(", invalidType := ");
+field_invalidType.log();
+TTCN_Logger::log_event_str(", invalidStyle := ");
+field_invalidStyle.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangeFontAttributesRes__errorCodes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes has 8 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) invalidObjectID().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) invalidColor().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) invalidSize().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) invalidType().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) invalidStyle().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "invalidObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidObjectID().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(), "invalidColor")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidColor().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(), "invalidSize")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidSize().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(), "invalidType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidType().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(), "invalidStyle")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidStyle().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes");
+  }
+}
+
+void ChangeFontAttributesRes__errorCodes::set_implicit_omit()
+{
+if (invalidObjectID().is_bound()) invalidObjectID().set_implicit_omit();
+if (invalidColor().is_bound()) invalidColor().set_implicit_omit();
+if (invalidSize().is_bound()) invalidSize().set_implicit_omit();
+if (invalidType().is_bound()) invalidType().set_implicit_omit();
+if (invalidStyle().is_bound()) invalidStyle().set_implicit_omit();
+if (anyOtherError().is_bound()) anyOtherError().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+}
+
+void ChangeFontAttributesRes__errorCodes::encode_text(Text_Buf& text_buf) const
+{
+field_invalidObjectID.encode_text(text_buf);
+field_invalidColor.encode_text(text_buf);
+field_invalidSize.encode_text(text_buf);
+field_invalidType.encode_text(text_buf);
+field_invalidStyle.encode_text(text_buf);
+field_anyOtherError.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+}
+
+void ChangeFontAttributesRes__errorCodes::decode_text(Text_Buf& text_buf)
+{
+field_invalidObjectID.decode_text(text_buf);
+field_invalidColor.decode_text(text_buf);
+field_invalidSize.decode_text(text_buf);
+field_invalidType.decode_text(text_buf);
+field_invalidStyle.decode_text(text_buf);
+field_anyOtherError.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+}
+
+void ChangeFontAttributesRes__errorCodes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangeFontAttributesRes__errorCodes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangeFontAttributesRes__errorCodes::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidObjectID.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidColor.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidSize.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidType.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidStyle.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_anyOtherError.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ChangeFontAttributesRes__errorCodes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_invalidObjectID.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_invalidColor.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_invalidSize.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_invalidType.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_invalidStyle.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_anyOtherError.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved6.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved7.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangeFontAttributesRes__errorCodes_template::single_value_struct {
+BOOLEAN_template field_invalidObjectID;
+BOOLEAN_template field_invalidColor;
+BOOLEAN_template field_invalidSize;
+BOOLEAN_template field_invalidType;
+BOOLEAN_template field_invalidStyle;
+BOOLEAN_template field_anyOtherError;
+BOOLEAN_template field_reserved6;
+BOOLEAN_template field_reserved7;
+};
+
+void ChangeFontAttributesRes__errorCodes_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_invalidObjectID = ANY_VALUE;
+single_value->field_invalidColor = ANY_VALUE;
+single_value->field_invalidSize = ANY_VALUE;
+single_value->field_invalidType = ANY_VALUE;
+single_value->field_invalidStyle = ANY_VALUE;
+single_value->field_anyOtherError = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+}
+}
+}
+
+void ChangeFontAttributesRes__errorCodes_template::copy_value(const ChangeFontAttributesRes__errorCodes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.invalidObjectID().is_bound()) {
+  single_value->field_invalidObjectID = other_value.invalidObjectID();
+} else {
+  single_value->field_invalidObjectID.clean_up();
+}
+if (other_value.invalidColor().is_bound()) {
+  single_value->field_invalidColor = other_value.invalidColor();
+} else {
+  single_value->field_invalidColor.clean_up();
+}
+if (other_value.invalidSize().is_bound()) {
+  single_value->field_invalidSize = other_value.invalidSize();
+} else {
+  single_value->field_invalidSize.clean_up();
+}
+if (other_value.invalidType().is_bound()) {
+  single_value->field_invalidType = other_value.invalidType();
+} else {
+  single_value->field_invalidType.clean_up();
+}
+if (other_value.invalidStyle().is_bound()) {
+  single_value->field_invalidStyle = other_value.invalidStyle();
+} else {
+  single_value->field_invalidStyle.clean_up();
+}
+if (other_value.anyOtherError().is_bound()) {
+  single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+  single_value->field_anyOtherError.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangeFontAttributesRes__errorCodes_template::copy_template(const ChangeFontAttributesRes__errorCodes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.invalidObjectID().get_selection()) {
+single_value->field_invalidObjectID = other_value.invalidObjectID();
+} else {
+single_value->field_invalidObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.invalidColor().get_selection()) {
+single_value->field_invalidColor = other_value.invalidColor();
+} else {
+single_value->field_invalidColor.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.invalidSize().get_selection()) {
+single_value->field_invalidSize = other_value.invalidSize();
+} else {
+single_value->field_invalidSize.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.invalidType().get_selection()) {
+single_value->field_invalidType = other_value.invalidType();
+} else {
+single_value->field_invalidType.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.invalidStyle().get_selection()) {
+single_value->field_invalidStyle = other_value.invalidStyle();
+} else {
+single_value->field_invalidStyle.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.anyOtherError().get_selection()) {
+single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+single_value->field_anyOtherError.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangeFontAttributesRes__errorCodes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangeFontAttributesRes__errorCodes_template::ChangeFontAttributesRes__errorCodes_template()
+{
+}
+
+ChangeFontAttributesRes__errorCodes_template::ChangeFontAttributesRes__errorCodes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangeFontAttributesRes__errorCodes_template::ChangeFontAttributesRes__errorCodes_template(const ChangeFontAttributesRes__errorCodes& other_value)
+{
+copy_value(other_value);
+}
+
+ChangeFontAttributesRes__errorCodes_template::ChangeFontAttributesRes__errorCodes_template(const OPTIONAL<ChangeFontAttributesRes__errorCodes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeFontAttributesRes__errorCodes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes from an unbound optional field.");
+}
+}
+
+ChangeFontAttributesRes__errorCodes_template::ChangeFontAttributesRes__errorCodes_template(const ChangeFontAttributesRes__errorCodes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangeFontAttributesRes__errorCodes_template::~ChangeFontAttributesRes__errorCodes_template()
+{
+clean_up();
+}
+
+ChangeFontAttributesRes__errorCodes_template& ChangeFontAttributesRes__errorCodes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangeFontAttributesRes__errorCodes_template& ChangeFontAttributesRes__errorCodes_template::operator=(const ChangeFontAttributesRes__errorCodes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangeFontAttributesRes__errorCodes_template& ChangeFontAttributesRes__errorCodes_template::operator=(const OPTIONAL<ChangeFontAttributesRes__errorCodes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeFontAttributesRes__errorCodes&)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 @IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes.");
+}
+return *this;
+}
+
+ChangeFontAttributesRes__errorCodes_template& ChangeFontAttributesRes__errorCodes_template::operator=(const ChangeFontAttributesRes__errorCodes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangeFontAttributesRes__errorCodes_template::match(const ChangeFontAttributesRes__errorCodes& 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.invalidObjectID().is_bound()) return FALSE;
+if(!single_value->field_invalidObjectID.match(other_value.invalidObjectID(), legacy))return FALSE;
+if(!other_value.invalidColor().is_bound()) return FALSE;
+if(!single_value->field_invalidColor.match(other_value.invalidColor(), legacy))return FALSE;
+if(!other_value.invalidSize().is_bound()) return FALSE;
+if(!single_value->field_invalidSize.match(other_value.invalidSize(), legacy))return FALSE;
+if(!other_value.invalidType().is_bound()) return FALSE;
+if(!single_value->field_invalidType.match(other_value.invalidType(), legacy))return FALSE;
+if(!other_value.invalidStyle().is_bound()) return FALSE;
+if(!single_value->field_invalidStyle.match(other_value.invalidStyle(), legacy))return FALSE;
+if(!other_value.anyOtherError().is_bound()) return FALSE;
+if(!single_value->field_anyOtherError.match(other_value.anyOtherError(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes.");
+}
+return FALSE;
+}
+
+boolean ChangeFontAttributesRes__errorCodes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_invalidObjectID.is_bound()
+
+ ||single_value->field_invalidColor.is_bound()
+
+ ||single_value->field_invalidSize.is_bound()
+
+ ||single_value->field_invalidType.is_bound()
+
+ ||single_value->field_invalidStyle.is_bound()
+
+ ||single_value->field_anyOtherError.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+;
+}
+
+boolean ChangeFontAttributesRes__errorCodes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_invalidObjectID.is_value()
+ &&single_value->field_invalidColor.is_value()
+ &&single_value->field_invalidSize.is_value()
+ &&single_value->field_invalidType.is_value()
+ &&single_value->field_invalidStyle.is_value()
+ &&single_value->field_anyOtherError.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value();
+}
+
+void ChangeFontAttributesRes__errorCodes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangeFontAttributesRes__errorCodes ChangeFontAttributesRes__errorCodes_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 @IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes.");
+ChangeFontAttributesRes__errorCodes ret_val;
+if (single_value->field_invalidObjectID.is_bound()) {
+ret_val.invalidObjectID() = single_value->field_invalidObjectID.valueof();
+}
+if (single_value->field_invalidColor.is_bound()) {
+ret_val.invalidColor() = single_value->field_invalidColor.valueof();
+}
+if (single_value->field_invalidSize.is_bound()) {
+ret_val.invalidSize() = single_value->field_invalidSize.valueof();
+}
+if (single_value->field_invalidType.is_bound()) {
+ret_val.invalidType() = single_value->field_invalidType.valueof();
+}
+if (single_value->field_invalidStyle.is_bound()) {
+ret_val.invalidStyle() = single_value->field_invalidStyle.valueof();
+}
+if (single_value->field_anyOtherError.is_bound()) {
+ret_val.anyOtherError() = single_value->field_anyOtherError.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+return ret_val;
+}
+
+void ChangeFontAttributesRes__errorCodes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangeFontAttributesRes__errorCodes_template[list_length];
+}
+
+ChangeFontAttributesRes__errorCodes_template& ChangeFontAttributesRes__errorCodes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& ChangeFontAttributesRes__errorCodes_template::invalidObjectID()
+{
+set_specific();
+return single_value->field_invalidObjectID;
+}
+
+const BOOLEAN_template& ChangeFontAttributesRes__errorCodes_template::invalidObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidObjectID of a non-specific template of type @IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes.");
+return single_value->field_invalidObjectID;
+}
+
+BOOLEAN_template& ChangeFontAttributesRes__errorCodes_template::invalidColor()
+{
+set_specific();
+return single_value->field_invalidColor;
+}
+
+const BOOLEAN_template& ChangeFontAttributesRes__errorCodes_template::invalidColor() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidColor of a non-specific template of type @IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes.");
+return single_value->field_invalidColor;
+}
+
+BOOLEAN_template& ChangeFontAttributesRes__errorCodes_template::invalidSize()
+{
+set_specific();
+return single_value->field_invalidSize;
+}
+
+const BOOLEAN_template& ChangeFontAttributesRes__errorCodes_template::invalidSize() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidSize of a non-specific template of type @IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes.");
+return single_value->field_invalidSize;
+}
+
+BOOLEAN_template& ChangeFontAttributesRes__errorCodes_template::invalidType()
+{
+set_specific();
+return single_value->field_invalidType;
+}
+
+const BOOLEAN_template& ChangeFontAttributesRes__errorCodes_template::invalidType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidType of a non-specific template of type @IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes.");
+return single_value->field_invalidType;
+}
+
+BOOLEAN_template& ChangeFontAttributesRes__errorCodes_template::invalidStyle()
+{
+set_specific();
+return single_value->field_invalidStyle;
+}
+
+const BOOLEAN_template& ChangeFontAttributesRes__errorCodes_template::invalidStyle() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidStyle of a non-specific template of type @IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes.");
+return single_value->field_invalidStyle;
+}
+
+BOOLEAN_template& ChangeFontAttributesRes__errorCodes_template::anyOtherError()
+{
+set_specific();
+return single_value->field_anyOtherError;
+}
+
+const BOOLEAN_template& ChangeFontAttributesRes__errorCodes_template::anyOtherError() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field anyOtherError of a non-specific template of type @IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes.");
+return single_value->field_anyOtherError;
+}
+
+BOOLEAN_template& ChangeFontAttributesRes__errorCodes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const BOOLEAN_template& ChangeFontAttributesRes__errorCodes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes.");
+return single_value->field_reserved6;
+}
+
+BOOLEAN_template& ChangeFontAttributesRes__errorCodes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const BOOLEAN_template& ChangeFontAttributesRes__errorCodes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes.");
+return single_value->field_reserved7;
+}
+
+int ChangeFontAttributesRes__errorCodes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes 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 @IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes.");
+  }
+  return 0;
+}
+
+void ChangeFontAttributesRes__errorCodes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ invalidObjectID := ");
+single_value->field_invalidObjectID.log();
+TTCN_Logger::log_event_str(", invalidColor := ");
+single_value->field_invalidColor.log();
+TTCN_Logger::log_event_str(", invalidSize := ");
+single_value->field_invalidSize.log();
+TTCN_Logger::log_event_str(", invalidType := ");
+single_value->field_invalidType.log();
+TTCN_Logger::log_event_str(", invalidStyle := ");
+single_value->field_invalidStyle.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangeFontAttributesRes__errorCodes_template::log_match(const ChangeFontAttributesRes__errorCodes& 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_invalidObjectID.match(match_value.invalidObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidObjectID");
+single_value->field_invalidObjectID.log_match(match_value.invalidObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_invalidColor.match(match_value.invalidColor(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidColor");
+single_value->field_invalidColor.log_match(match_value.invalidColor(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_invalidSize.match(match_value.invalidSize(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidSize");
+single_value->field_invalidSize.log_match(match_value.invalidSize(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_invalidType.match(match_value.invalidType(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidType");
+single_value->field_invalidType.log_match(match_value.invalidType(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_invalidStyle.match(match_value.invalidStyle(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidStyle");
+single_value->field_invalidStyle.log_match(match_value.invalidStyle(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_anyOtherError.match(match_value.anyOtherError(), legacy)){
+TTCN_Logger::log_logmatch_info(".anyOtherError");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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("{ invalidObjectID := ");
+single_value->field_invalidObjectID.log_match(match_value.invalidObjectID(), legacy);
+TTCN_Logger::log_event_str(", invalidColor := ");
+single_value->field_invalidColor.log_match(match_value.invalidColor(), legacy);
+TTCN_Logger::log_event_str(", invalidSize := ");
+single_value->field_invalidSize.log_match(match_value.invalidSize(), legacy);
+TTCN_Logger::log_event_str(", invalidType := ");
+single_value->field_invalidType.log_match(match_value.invalidType(), legacy);
+TTCN_Logger::log_event_str(", invalidStyle := ");
+single_value->field_invalidStyle.log_match(match_value.invalidStyle(), legacy);
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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 ChangeFontAttributesRes__errorCodes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_invalidObjectID.encode_text(text_buf);
+single_value->field_invalidColor.encode_text(text_buf);
+single_value->field_invalidSize.encode_text(text_buf);
+single_value->field_invalidType.encode_text(text_buf);
+single_value->field_invalidStyle.encode_text(text_buf);
+single_value->field_anyOtherError.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.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 @IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes.");
+}
+}
+
+void ChangeFontAttributesRes__errorCodes_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_invalidObjectID.decode_text(text_buf);
+single_value->field_invalidColor.decode_text(text_buf);
+single_value->field_invalidSize.decode_text(text_buf);
+single_value->field_invalidType.decode_text(text_buf);
+single_value->field_invalidStyle.decode_text(text_buf);
+single_value->field_anyOtherError.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.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 ChangeFontAttributesRes__errorCodes_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 @IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes.");
+}
+}
+
+void ChangeFontAttributesRes__errorCodes_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: {
+    ChangeFontAttributesRes__errorCodes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes has 8 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) invalidObjectID().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) invalidColor().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) invalidSize().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) invalidType().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) invalidStyle().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "invalidObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidObjectID().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(), "invalidColor")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidColor().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(), "invalidSize")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidSize().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(), "invalidType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidType().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(), "invalidStyle")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidStyle().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangeFontAttributesRes__errorCodes_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_invalidObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes");
+single_value->field_invalidColor.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes");
+single_value->field_invalidSize.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes");
+single_value->field_invalidType.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes");
+single_value->field_invalidStyle.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes");
+single_value->field_anyOtherError.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes");
+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 : "@IsobusVTMessageTypes.ChangeFontAttributesRes_errorCodes");
+}
+
+boolean ChangeFontAttributesRes__errorCodes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangeFontAttributesRes__errorCodes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangeFontAttributesRes::ChangeFontAttributesRes()
+{
+}
+
+ChangeFontAttributesRes::ChangeFontAttributesRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const ChangeFontAttributesRes__errorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_objectID(par_objectID),
+  field_errorCodes(par_errorCodes),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+ChangeFontAttributesRes::ChangeFontAttributesRes(const ChangeFontAttributesRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangeFontAttributesRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+else field_objectID.clean_up();
+if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+else field_errorCodes.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void ChangeFontAttributesRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectID.clean_up();
+field_errorCodes.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangeFontAttributesRes::get_descriptor() const { return &ChangeFontAttributesRes_descr_; }
+ChangeFontAttributesRes& ChangeFontAttributesRes::operator=(const ChangeFontAttributesRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangeFontAttributesRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+  else field_objectID.clean_up();
+  if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+  else field_errorCodes.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean ChangeFontAttributesRes::operator==(const ChangeFontAttributesRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectID==other_value.field_objectID
+  && field_errorCodes==other_value.field_errorCodes
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean ChangeFontAttributesRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectID.is_bound())
+  || (field_errorCodes.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean ChangeFontAttributesRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectID.is_value()
+  && field_errorCodes.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void ChangeFontAttributesRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+field_objectID.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangeFontAttributesRes::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 @IsobusVTMessageTypes.ChangeFontAttributesRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangeFontAttributesRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangeFontAttributesRes");
+  }
+}
+
+void ChangeFontAttributesRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectID().is_bound()) objectID().set_implicit_omit();
+if (errorCodes().is_bound()) errorCodes().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void ChangeFontAttributesRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectID.encode_text(text_buf);
+field_errorCodes.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void ChangeFontAttributesRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectID.decode_text(text_buf);
+field_errorCodes.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void ChangeFontAttributesRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangeFontAttributesRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangeFontAttributesRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectID.RAW_decode(ValidObjectID_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, ChangeFontAttributesRes__errorCodes_descr_.raw->forceomit);
+  decoded_field_length = field_errorCodes.RAW_decode(ChangeFontAttributesRes__errorCodes_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, ChangeFontAttributesRes_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(ChangeFontAttributesRes_reserved5_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, ChangeFontAttributesRes_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(ChangeFontAttributesRes_reserved6_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, ChangeFontAttributesRes_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(ChangeFontAttributesRes_reserved7_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, ChangeFontAttributesRes_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(ChangeFontAttributesRes_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ChangeFontAttributesRes::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ChangeFontAttributesRes__errorCodes_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, ChangeFontAttributesRes_reserved5_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, ChangeFontAttributesRes_reserved6_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, ChangeFontAttributesRes_reserved7_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, ChangeFontAttributesRes_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_errorCodes.RAW_encode(ChangeFontAttributesRes__errorCodes_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved5.RAW_encode(ChangeFontAttributesRes_reserved5_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved6.RAW_encode(ChangeFontAttributesRes_reserved6_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved7.RAW_encode(ChangeFontAttributesRes_reserved7_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved8.RAW_encode(ChangeFontAttributesRes_reserved8_descr_, *myleaf.body.node.nodes[6]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangeFontAttributesRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectID;
+ChangeFontAttributesRes__errorCodes_template field_errorCodes;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void ChangeFontAttributesRes_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_vtfunction = ANY_VALUE;
+single_value->field_objectID = ANY_VALUE;
+single_value->field_errorCodes = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void ChangeFontAttributesRes_template::copy_value(const ChangeFontAttributesRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectID().is_bound()) {
+  single_value->field_objectID = other_value.objectID();
+} else {
+  single_value->field_objectID.clean_up();
+}
+if (other_value.errorCodes().is_bound()) {
+  single_value->field_errorCodes = other_value.errorCodes();
+} else {
+  single_value->field_errorCodes.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangeFontAttributesRes_template::copy_template(const ChangeFontAttributesRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectID().get_selection()) {
+single_value->field_objectID = other_value.objectID();
+} else {
+single_value->field_objectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.errorCodes().get_selection()) {
+single_value->field_errorCodes = other_value.errorCodes();
+} else {
+single_value->field_errorCodes.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangeFontAttributesRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeFontAttributesRes.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangeFontAttributesRes_template::ChangeFontAttributesRes_template()
+{
+}
+
+ChangeFontAttributesRes_template::ChangeFontAttributesRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangeFontAttributesRes_template::ChangeFontAttributesRes_template(const ChangeFontAttributesRes& other_value)
+{
+copy_value(other_value);
+}
+
+ChangeFontAttributesRes_template::ChangeFontAttributesRes_template(const OPTIONAL<ChangeFontAttributesRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeFontAttributesRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangeFontAttributesRes from an unbound optional field.");
+}
+}
+
+ChangeFontAttributesRes_template::ChangeFontAttributesRes_template(const ChangeFontAttributesRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangeFontAttributesRes_template::~ChangeFontAttributesRes_template()
+{
+clean_up();
+}
+
+ChangeFontAttributesRes_template& ChangeFontAttributesRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangeFontAttributesRes_template& ChangeFontAttributesRes_template::operator=(const ChangeFontAttributesRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangeFontAttributesRes_template& ChangeFontAttributesRes_template::operator=(const OPTIONAL<ChangeFontAttributesRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeFontAttributesRes&)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 @IsobusVTMessageTypes.ChangeFontAttributesRes.");
+}
+return *this;
+}
+
+ChangeFontAttributesRes_template& ChangeFontAttributesRes_template::operator=(const ChangeFontAttributesRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangeFontAttributesRes_template::match(const ChangeFontAttributesRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectID().is_bound()) return FALSE;
+if(!single_value->field_objectID.match(other_value.objectID(), legacy))return FALSE;
+if(!other_value.errorCodes().is_bound()) return FALSE;
+if(!single_value->field_errorCodes.match(other_value.errorCodes(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeFontAttributesRes.");
+}
+return FALSE;
+}
+
+boolean ChangeFontAttributesRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectID.is_bound()
+
+ ||single_value->field_errorCodes.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean ChangeFontAttributesRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectID.is_value()
+ &&single_value->field_errorCodes.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void ChangeFontAttributesRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangeFontAttributesRes ChangeFontAttributesRes_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 @IsobusVTMessageTypes.ChangeFontAttributesRes.");
+ChangeFontAttributesRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectID.is_bound()) {
+ret_val.objectID() = single_value->field_objectID.valueof();
+}
+if (single_value->field_errorCodes.is_bound()) {
+ret_val.errorCodes() = single_value->field_errorCodes.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void ChangeFontAttributesRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangeFontAttributesRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangeFontAttributesRes_template[list_length];
+}
+
+ChangeFontAttributesRes_template& ChangeFontAttributesRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangeFontAttributesRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangeFontAttributesRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ChangeFontAttributesRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ChangeFontAttributesRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ChangeFontAttributesRes.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& ChangeFontAttributesRes_template::objectID()
+{
+set_specific();
+return single_value->field_objectID;
+}
+
+const INTEGER_template& ChangeFontAttributesRes_template::objectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectID of a non-specific template of type @IsobusVTMessageTypes.ChangeFontAttributesRes.");
+return single_value->field_objectID;
+}
+
+ChangeFontAttributesRes__errorCodes_template& ChangeFontAttributesRes_template::errorCodes()
+{
+set_specific();
+return single_value->field_errorCodes;
+}
+
+const ChangeFontAttributesRes__errorCodes_template& ChangeFontAttributesRes_template::errorCodes() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field errorCodes of a non-specific template of type @IsobusVTMessageTypes.ChangeFontAttributesRes.");
+return single_value->field_errorCodes;
+}
+
+OCTETSTRING_template& ChangeFontAttributesRes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& ChangeFontAttributesRes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.ChangeFontAttributesRes.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& ChangeFontAttributesRes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& ChangeFontAttributesRes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.ChangeFontAttributesRes.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& ChangeFontAttributesRes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& ChangeFontAttributesRes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ChangeFontAttributesRes.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& ChangeFontAttributesRes_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& ChangeFontAttributesRes_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.ChangeFontAttributesRes.");
+return single_value->field_reserved8;
+}
+
+int ChangeFontAttributesRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeFontAttributesRes 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 @IsobusVTMessageTypes.ChangeFontAttributesRes 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 @IsobusVTMessageTypes.ChangeFontAttributesRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeFontAttributesRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeFontAttributesRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeFontAttributesRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeFontAttributesRes.");
+  }
+  return 0;
+}
+
+void ChangeFontAttributesRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangeFontAttributesRes_template::log_match(const ChangeFontAttributesRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectID.match(match_value.objectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectID");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_errorCodes.match(match_value.errorCodes(), legacy)){
+TTCN_Logger::log_logmatch_info(".errorCodes");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 ChangeFontAttributesRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectID.encode_text(text_buf);
+single_value->field_errorCodes.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.ChangeFontAttributesRes.");
+}
+}
+
+void ChangeFontAttributesRes_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_vtfunction.decode_text(text_buf);
+single_value->field_objectID.decode_text(text_buf);
+single_value->field_errorCodes.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 ChangeFontAttributesRes_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 @IsobusVTMessageTypes.ChangeFontAttributesRes.");
+}
+}
+
+void ChangeFontAttributesRes_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: {
+    ChangeFontAttributesRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.ChangeFontAttributesRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangeFontAttributesRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangeFontAttributesRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangeFontAttributesRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeFontAttributesRes");
+single_value->field_objectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeFontAttributesRes");
+single_value->field_errorCodes.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeFontAttributesRes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeFontAttributesRes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeFontAttributesRes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeFontAttributesRes");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeFontAttributesRes");
+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 : "@IsobusVTMessageTypes.ChangeFontAttributesRes");
+}
+
+boolean ChangeFontAttributesRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangeFontAttributesRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangeFontAttributesReq::ChangeFontAttributesReq()
+{
+}
+
+ChangeFontAttributesReq::ChangeFontAttributesReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_ObjectIDofObjectToChange,
+    const INTEGER& par_fontColour,
+    const INTEGER& par_fontSize,
+    const INTEGER& par_fontType,
+    const INTEGER& par_fontStyle,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_ObjectIDofObjectToChange(par_ObjectIDofObjectToChange),
+  field_fontColour(par_fontColour),
+  field_fontSize(par_fontSize),
+  field_fontType(par_fontType),
+  field_fontStyle(par_fontStyle),
+  field_reserved8(par_reserved8)
+{
+}
+
+ChangeFontAttributesReq::ChangeFontAttributesReq(const ChangeFontAttributesReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangeFontAttributesReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.ObjectIDofObjectToChange().is_bound()) field_ObjectIDofObjectToChange = other_value.ObjectIDofObjectToChange();
+else field_ObjectIDofObjectToChange.clean_up();
+if (other_value.fontColour().is_bound()) field_fontColour = other_value.fontColour();
+else field_fontColour.clean_up();
+if (other_value.fontSize().is_bound()) field_fontSize = other_value.fontSize();
+else field_fontSize.clean_up();
+if (other_value.fontType().is_bound()) field_fontType = other_value.fontType();
+else field_fontType.clean_up();
+if (other_value.fontStyle().is_bound()) field_fontStyle = other_value.fontStyle();
+else field_fontStyle.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void ChangeFontAttributesReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_ObjectIDofObjectToChange.clean_up();
+field_fontColour.clean_up();
+field_fontSize.clean_up();
+field_fontType.clean_up();
+field_fontStyle.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangeFontAttributesReq::get_descriptor() const { return &ChangeFontAttributesReq_descr_; }
+ChangeFontAttributesReq& ChangeFontAttributesReq::operator=(const ChangeFontAttributesReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangeFontAttributesReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.ObjectIDofObjectToChange().is_bound()) field_ObjectIDofObjectToChange = other_value.ObjectIDofObjectToChange();
+  else field_ObjectIDofObjectToChange.clean_up();
+  if (other_value.fontColour().is_bound()) field_fontColour = other_value.fontColour();
+  else field_fontColour.clean_up();
+  if (other_value.fontSize().is_bound()) field_fontSize = other_value.fontSize();
+  else field_fontSize.clean_up();
+  if (other_value.fontType().is_bound()) field_fontType = other_value.fontType();
+  else field_fontType.clean_up();
+  if (other_value.fontStyle().is_bound()) field_fontStyle = other_value.fontStyle();
+  else field_fontStyle.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean ChangeFontAttributesReq::operator==(const ChangeFontAttributesReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_ObjectIDofObjectToChange==other_value.field_ObjectIDofObjectToChange
+  && field_fontColour==other_value.field_fontColour
+  && field_fontSize==other_value.field_fontSize
+  && field_fontType==other_value.field_fontType
+  && field_fontStyle==other_value.field_fontStyle
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean ChangeFontAttributesReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_ObjectIDofObjectToChange.is_bound())
+  || (field_fontColour.is_bound())
+  || (field_fontSize.is_bound())
+  || (field_fontType.is_bound())
+  || (field_fontStyle.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean ChangeFontAttributesReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_ObjectIDofObjectToChange.is_value()
+  && field_fontColour.is_value()
+  && field_fontSize.is_value()
+  && field_fontType.is_value()
+  && field_fontStyle.is_value()
+  && field_reserved8.is_value();
+}
+void ChangeFontAttributesReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", ObjectIDofObjectToChange := ");
+field_ObjectIDofObjectToChange.log();
+TTCN_Logger::log_event_str(", fontColour := ");
+field_fontColour.log();
+TTCN_Logger::log_event_str(", fontSize := ");
+field_fontSize.log();
+TTCN_Logger::log_event_str(", fontType := ");
+field_fontType.log();
+TTCN_Logger::log_event_str(", fontStyle := ");
+field_fontStyle.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangeFontAttributesReq::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 @IsobusVTMessageTypes.ChangeFontAttributesReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ObjectIDofObjectToChange().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) fontColour().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) fontSize().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) fontType().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) fontStyle().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "ObjectIDofObjectToChange")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ObjectIDofObjectToChange().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(), "fontColour")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          fontColour().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(), "fontSize")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          fontSize().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(), "fontType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          fontType().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(), "fontStyle")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          fontStyle().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangeFontAttributesReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangeFontAttributesReq");
+  }
+}
+
+void ChangeFontAttributesReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (ObjectIDofObjectToChange().is_bound()) ObjectIDofObjectToChange().set_implicit_omit();
+if (fontColour().is_bound()) fontColour().set_implicit_omit();
+if (fontSize().is_bound()) fontSize().set_implicit_omit();
+if (fontType().is_bound()) fontType().set_implicit_omit();
+if (fontStyle().is_bound()) fontStyle().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void ChangeFontAttributesReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_ObjectIDofObjectToChange.encode_text(text_buf);
+field_fontColour.encode_text(text_buf);
+field_fontSize.encode_text(text_buf);
+field_fontType.encode_text(text_buf);
+field_fontStyle.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void ChangeFontAttributesReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_ObjectIDofObjectToChange.decode_text(text_buf);
+field_fontColour.decode_text(text_buf);
+field_fontSize.decode_text(text_buf);
+field_fontType.decode_text(text_buf);
+field_fontStyle.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void ChangeFontAttributesReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangeFontAttributesReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangeFontAttributesReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_ObjectIDofObjectToChange.RAW_decode(ValidObjectID_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, ColorType_descr_.raw->forceomit);
+  decoded_field_length = field_fontColour.RAW_decode(ColorType_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, FontSize_descr_.raw->forceomit);
+  decoded_field_length = field_fontSize.RAW_decode(FontSize_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, FontType_descr_.raw->forceomit);
+  decoded_field_length = field_fontType.RAW_decode(FontType_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, FontStyle_descr_.raw->forceomit);
+  decoded_field_length = field_fontStyle.RAW_decode(FontStyle_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, ChangeFontAttributesReq_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(ChangeFontAttributesReq_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ChangeFontAttributesReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ColorType_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, FontSize_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, FontType_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, FontStyle_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, ChangeFontAttributesReq_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_ObjectIDofObjectToChange.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_fontColour.RAW_encode(ColorType_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_fontSize.RAW_encode(FontSize_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_fontType.RAW_encode(FontType_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_fontStyle.RAW_encode(FontStyle_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved8.RAW_encode(ChangeFontAttributesReq_reserved8_descr_, *myleaf.body.node.nodes[6]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangeFontAttributesReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_ObjectIDofObjectToChange;
+INTEGER_template field_fontColour;
+INTEGER_template field_fontSize;
+INTEGER_template field_fontType;
+INTEGER_template field_fontStyle;
+OCTETSTRING_template field_reserved8;
+};
+
+void ChangeFontAttributesReq_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_vtfunction = ANY_VALUE;
+single_value->field_ObjectIDofObjectToChange = ANY_VALUE;
+single_value->field_fontColour = ANY_VALUE;
+single_value->field_fontSize = ANY_VALUE;
+single_value->field_fontType = ANY_VALUE;
+single_value->field_fontStyle = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void ChangeFontAttributesReq_template::copy_value(const ChangeFontAttributesReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.ObjectIDofObjectToChange().is_bound()) {
+  single_value->field_ObjectIDofObjectToChange = other_value.ObjectIDofObjectToChange();
+} else {
+  single_value->field_ObjectIDofObjectToChange.clean_up();
+}
+if (other_value.fontColour().is_bound()) {
+  single_value->field_fontColour = other_value.fontColour();
+} else {
+  single_value->field_fontColour.clean_up();
+}
+if (other_value.fontSize().is_bound()) {
+  single_value->field_fontSize = other_value.fontSize();
+} else {
+  single_value->field_fontSize.clean_up();
+}
+if (other_value.fontType().is_bound()) {
+  single_value->field_fontType = other_value.fontType();
+} else {
+  single_value->field_fontType.clean_up();
+}
+if (other_value.fontStyle().is_bound()) {
+  single_value->field_fontStyle = other_value.fontStyle();
+} else {
+  single_value->field_fontStyle.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangeFontAttributesReq_template::copy_template(const ChangeFontAttributesReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.ObjectIDofObjectToChange().get_selection()) {
+single_value->field_ObjectIDofObjectToChange = other_value.ObjectIDofObjectToChange();
+} else {
+single_value->field_ObjectIDofObjectToChange.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.fontColour().get_selection()) {
+single_value->field_fontColour = other_value.fontColour();
+} else {
+single_value->field_fontColour.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.fontSize().get_selection()) {
+single_value->field_fontSize = other_value.fontSize();
+} else {
+single_value->field_fontSize.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.fontType().get_selection()) {
+single_value->field_fontType = other_value.fontType();
+} else {
+single_value->field_fontType.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.fontStyle().get_selection()) {
+single_value->field_fontStyle = other_value.fontStyle();
+} else {
+single_value->field_fontStyle.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangeFontAttributesReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeFontAttributesReq.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangeFontAttributesReq_template::ChangeFontAttributesReq_template()
+{
+}
+
+ChangeFontAttributesReq_template::ChangeFontAttributesReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangeFontAttributesReq_template::ChangeFontAttributesReq_template(const ChangeFontAttributesReq& other_value)
+{
+copy_value(other_value);
+}
+
+ChangeFontAttributesReq_template::ChangeFontAttributesReq_template(const OPTIONAL<ChangeFontAttributesReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeFontAttributesReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangeFontAttributesReq from an unbound optional field.");
+}
+}
+
+ChangeFontAttributesReq_template::ChangeFontAttributesReq_template(const ChangeFontAttributesReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangeFontAttributesReq_template::~ChangeFontAttributesReq_template()
+{
+clean_up();
+}
+
+ChangeFontAttributesReq_template& ChangeFontAttributesReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangeFontAttributesReq_template& ChangeFontAttributesReq_template::operator=(const ChangeFontAttributesReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangeFontAttributesReq_template& ChangeFontAttributesReq_template::operator=(const OPTIONAL<ChangeFontAttributesReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeFontAttributesReq&)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 @IsobusVTMessageTypes.ChangeFontAttributesReq.");
+}
+return *this;
+}
+
+ChangeFontAttributesReq_template& ChangeFontAttributesReq_template::operator=(const ChangeFontAttributesReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangeFontAttributesReq_template::match(const ChangeFontAttributesReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.ObjectIDofObjectToChange().is_bound()) return FALSE;
+if(!single_value->field_ObjectIDofObjectToChange.match(other_value.ObjectIDofObjectToChange(), legacy))return FALSE;
+if(!other_value.fontColour().is_bound()) return FALSE;
+if(!single_value->field_fontColour.match(other_value.fontColour(), legacy))return FALSE;
+if(!other_value.fontSize().is_bound()) return FALSE;
+if(!single_value->field_fontSize.match(other_value.fontSize(), legacy))return FALSE;
+if(!other_value.fontType().is_bound()) return FALSE;
+if(!single_value->field_fontType.match(other_value.fontType(), legacy))return FALSE;
+if(!other_value.fontStyle().is_bound()) return FALSE;
+if(!single_value->field_fontStyle.match(other_value.fontStyle(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeFontAttributesReq.");
+}
+return FALSE;
+}
+
+boolean ChangeFontAttributesReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_ObjectIDofObjectToChange.is_bound()
+
+ ||single_value->field_fontColour.is_bound()
+
+ ||single_value->field_fontSize.is_bound()
+
+ ||single_value->field_fontType.is_bound()
+
+ ||single_value->field_fontStyle.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean ChangeFontAttributesReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_ObjectIDofObjectToChange.is_value()
+ &&single_value->field_fontColour.is_value()
+ &&single_value->field_fontSize.is_value()
+ &&single_value->field_fontType.is_value()
+ &&single_value->field_fontStyle.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void ChangeFontAttributesReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangeFontAttributesReq ChangeFontAttributesReq_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 @IsobusVTMessageTypes.ChangeFontAttributesReq.");
+ChangeFontAttributesReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_ObjectIDofObjectToChange.is_bound()) {
+ret_val.ObjectIDofObjectToChange() = single_value->field_ObjectIDofObjectToChange.valueof();
+}
+if (single_value->field_fontColour.is_bound()) {
+ret_val.fontColour() = single_value->field_fontColour.valueof();
+}
+if (single_value->field_fontSize.is_bound()) {
+ret_val.fontSize() = single_value->field_fontSize.valueof();
+}
+if (single_value->field_fontType.is_bound()) {
+ret_val.fontType() = single_value->field_fontType.valueof();
+}
+if (single_value->field_fontStyle.is_bound()) {
+ret_val.fontStyle() = single_value->field_fontStyle.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void ChangeFontAttributesReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangeFontAttributesReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangeFontAttributesReq_template[list_length];
+}
+
+ChangeFontAttributesReq_template& ChangeFontAttributesReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangeFontAttributesReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangeFontAttributesReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ChangeFontAttributesReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ChangeFontAttributesReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ChangeFontAttributesReq.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& ChangeFontAttributesReq_template::ObjectIDofObjectToChange()
+{
+set_specific();
+return single_value->field_ObjectIDofObjectToChange;
+}
+
+const INTEGER_template& ChangeFontAttributesReq_template::ObjectIDofObjectToChange() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field ObjectIDofObjectToChange of a non-specific template of type @IsobusVTMessageTypes.ChangeFontAttributesReq.");
+return single_value->field_ObjectIDofObjectToChange;
+}
+
+INTEGER_template& ChangeFontAttributesReq_template::fontColour()
+{
+set_specific();
+return single_value->field_fontColour;
+}
+
+const INTEGER_template& ChangeFontAttributesReq_template::fontColour() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field fontColour of a non-specific template of type @IsobusVTMessageTypes.ChangeFontAttributesReq.");
+return single_value->field_fontColour;
+}
+
+INTEGER_template& ChangeFontAttributesReq_template::fontSize()
+{
+set_specific();
+return single_value->field_fontSize;
+}
+
+const INTEGER_template& ChangeFontAttributesReq_template::fontSize() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field fontSize of a non-specific template of type @IsobusVTMessageTypes.ChangeFontAttributesReq.");
+return single_value->field_fontSize;
+}
+
+INTEGER_template& ChangeFontAttributesReq_template::fontType()
+{
+set_specific();
+return single_value->field_fontType;
+}
+
+const INTEGER_template& ChangeFontAttributesReq_template::fontType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field fontType of a non-specific template of type @IsobusVTMessageTypes.ChangeFontAttributesReq.");
+return single_value->field_fontType;
+}
+
+INTEGER_template& ChangeFontAttributesReq_template::fontStyle()
+{
+set_specific();
+return single_value->field_fontStyle;
+}
+
+const INTEGER_template& ChangeFontAttributesReq_template::fontStyle() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field fontStyle of a non-specific template of type @IsobusVTMessageTypes.ChangeFontAttributesReq.");
+return single_value->field_fontStyle;
+}
+
+OCTETSTRING_template& ChangeFontAttributesReq_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& ChangeFontAttributesReq_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.ChangeFontAttributesReq.");
+return single_value->field_reserved8;
+}
+
+int ChangeFontAttributesReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeFontAttributesReq 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 @IsobusVTMessageTypes.ChangeFontAttributesReq 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 @IsobusVTMessageTypes.ChangeFontAttributesReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeFontAttributesReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeFontAttributesReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeFontAttributesReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeFontAttributesReq.");
+  }
+  return 0;
+}
+
+void ChangeFontAttributesReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", ObjectIDofObjectToChange := ");
+single_value->field_ObjectIDofObjectToChange.log();
+TTCN_Logger::log_event_str(", fontColour := ");
+single_value->field_fontColour.log();
+TTCN_Logger::log_event_str(", fontSize := ");
+single_value->field_fontSize.log();
+TTCN_Logger::log_event_str(", fontType := ");
+single_value->field_fontType.log();
+TTCN_Logger::log_event_str(", fontStyle := ");
+single_value->field_fontStyle.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangeFontAttributesReq_template::log_match(const ChangeFontAttributesReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_ObjectIDofObjectToChange.match(match_value.ObjectIDofObjectToChange(), legacy)){
+TTCN_Logger::log_logmatch_info(".ObjectIDofObjectToChange");
+single_value->field_ObjectIDofObjectToChange.log_match(match_value.ObjectIDofObjectToChange(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_fontColour.match(match_value.fontColour(), legacy)){
+TTCN_Logger::log_logmatch_info(".fontColour");
+single_value->field_fontColour.log_match(match_value.fontColour(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_fontSize.match(match_value.fontSize(), legacy)){
+TTCN_Logger::log_logmatch_info(".fontSize");
+single_value->field_fontSize.log_match(match_value.fontSize(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_fontType.match(match_value.fontType(), legacy)){
+TTCN_Logger::log_logmatch_info(".fontType");
+single_value->field_fontType.log_match(match_value.fontType(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_fontStyle.match(match_value.fontStyle(), legacy)){
+TTCN_Logger::log_logmatch_info(".fontStyle");
+single_value->field_fontStyle.log_match(match_value.fontStyle(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", ObjectIDofObjectToChange := ");
+single_value->field_ObjectIDofObjectToChange.log_match(match_value.ObjectIDofObjectToChange(), legacy);
+TTCN_Logger::log_event_str(", fontColour := ");
+single_value->field_fontColour.log_match(match_value.fontColour(), legacy);
+TTCN_Logger::log_event_str(", fontSize := ");
+single_value->field_fontSize.log_match(match_value.fontSize(), legacy);
+TTCN_Logger::log_event_str(", fontType := ");
+single_value->field_fontType.log_match(match_value.fontType(), legacy);
+TTCN_Logger::log_event_str(", fontStyle := ");
+single_value->field_fontStyle.log_match(match_value.fontStyle(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 ChangeFontAttributesReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_ObjectIDofObjectToChange.encode_text(text_buf);
+single_value->field_fontColour.encode_text(text_buf);
+single_value->field_fontSize.encode_text(text_buf);
+single_value->field_fontType.encode_text(text_buf);
+single_value->field_fontStyle.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.ChangeFontAttributesReq.");
+}
+}
+
+void ChangeFontAttributesReq_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_vtfunction.decode_text(text_buf);
+single_value->field_ObjectIDofObjectToChange.decode_text(text_buf);
+single_value->field_fontColour.decode_text(text_buf);
+single_value->field_fontSize.decode_text(text_buf);
+single_value->field_fontType.decode_text(text_buf);
+single_value->field_fontStyle.decode_text(text_buf);
+single_value->field_reserved8.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 ChangeFontAttributesReq_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 @IsobusVTMessageTypes.ChangeFontAttributesReq.");
+}
+}
+
+void ChangeFontAttributesReq_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: {
+    ChangeFontAttributesReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.ChangeFontAttributesReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ObjectIDofObjectToChange().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) fontColour().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) fontSize().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) fontType().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) fontStyle().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "ObjectIDofObjectToChange")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ObjectIDofObjectToChange().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(), "fontColour")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          fontColour().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(), "fontSize")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          fontSize().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(), "fontType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          fontType().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(), "fontStyle")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          fontStyle().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangeFontAttributesReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangeFontAttributesReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangeFontAttributesReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeFontAttributesReq");
+single_value->field_ObjectIDofObjectToChange.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeFontAttributesReq");
+single_value->field_fontColour.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeFontAttributesReq");
+single_value->field_fontSize.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeFontAttributesReq");
+single_value->field_fontType.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeFontAttributesReq");
+single_value->field_fontStyle.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeFontAttributesReq");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeFontAttributesReq");
+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 : "@IsobusVTMessageTypes.ChangeFontAttributesReq");
+}
+
+boolean ChangeFontAttributesReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangeFontAttributesReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangeLineAttributesRes__errorCodes::ChangeLineAttributesRes__errorCodes()
+{
+}
+
+ChangeLineAttributesRes__errorCodes::ChangeLineAttributesRes__errorCodes(const BOOLEAN& par_invalidObjectID,
+    const BOOLEAN& par_invalidColor,
+    const BOOLEAN& par_invalidWidth,
+    const BOOLEAN& par_reserved3,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7)
+  :   field_invalidObjectID(par_invalidObjectID),
+  field_invalidColor(par_invalidColor),
+  field_invalidWidth(par_invalidWidth),
+  field_reserved3(par_reserved3),
+  field_anyOtherError(par_anyOtherError),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7)
+{
+}
+
+ChangeLineAttributesRes__errorCodes::ChangeLineAttributesRes__errorCodes(const ChangeLineAttributesRes__errorCodes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes.");
+if (other_value.invalidObjectID().is_bound()) field_invalidObjectID = other_value.invalidObjectID();
+else field_invalidObjectID.clean_up();
+if (other_value.invalidColor().is_bound()) field_invalidColor = other_value.invalidColor();
+else field_invalidColor.clean_up();
+if (other_value.invalidWidth().is_bound()) field_invalidWidth = other_value.invalidWidth();
+else field_invalidWidth.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+else field_anyOtherError.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+}
+
+void ChangeLineAttributesRes__errorCodes::clean_up()
+{
+field_invalidObjectID.clean_up();
+field_invalidColor.clean_up();
+field_invalidWidth.clean_up();
+field_reserved3.clean_up();
+field_anyOtherError.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangeLineAttributesRes__errorCodes::get_descriptor() const { return &ChangeLineAttributesRes__errorCodes_descr_; }
+ChangeLineAttributesRes__errorCodes& ChangeLineAttributesRes__errorCodes::operator=(const ChangeLineAttributesRes__errorCodes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes.");
+  if (other_value.invalidObjectID().is_bound()) field_invalidObjectID = other_value.invalidObjectID();
+  else field_invalidObjectID.clean_up();
+  if (other_value.invalidColor().is_bound()) field_invalidColor = other_value.invalidColor();
+  else field_invalidColor.clean_up();
+  if (other_value.invalidWidth().is_bound()) field_invalidWidth = other_value.invalidWidth();
+  else field_invalidWidth.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+  else field_anyOtherError.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+}
+return *this;
+}
+
+boolean ChangeLineAttributesRes__errorCodes::operator==(const ChangeLineAttributesRes__errorCodes& other_value) const
+{
+return field_invalidObjectID==other_value.field_invalidObjectID
+  && field_invalidColor==other_value.field_invalidColor
+  && field_invalidWidth==other_value.field_invalidWidth
+  && field_reserved3==other_value.field_reserved3
+  && field_anyOtherError==other_value.field_anyOtherError
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7;
+}
+
+boolean ChangeLineAttributesRes__errorCodes::is_bound() const
+{
+return (field_invalidObjectID.is_bound())
+  || (field_invalidColor.is_bound())
+  || (field_invalidWidth.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_anyOtherError.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound());
+}
+boolean ChangeLineAttributesRes__errorCodes::is_value() const
+{
+return field_invalidObjectID.is_value()
+  && field_invalidColor.is_value()
+  && field_invalidWidth.is_value()
+  && field_reserved3.is_value()
+  && field_anyOtherError.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value();
+}
+void ChangeLineAttributesRes__errorCodes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ invalidObjectID := ");
+field_invalidObjectID.log();
+TTCN_Logger::log_event_str(", invalidColor := ");
+field_invalidColor.log();
+TTCN_Logger::log_event_str(", invalidWidth := ");
+field_invalidWidth.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangeLineAttributesRes__errorCodes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes has 8 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) invalidObjectID().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) invalidColor().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) invalidWidth().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "invalidObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidObjectID().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(), "invalidColor")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidColor().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(), "invalidWidth")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidWidth().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes");
+  }
+}
+
+void ChangeLineAttributesRes__errorCodes::set_implicit_omit()
+{
+if (invalidObjectID().is_bound()) invalidObjectID().set_implicit_omit();
+if (invalidColor().is_bound()) invalidColor().set_implicit_omit();
+if (invalidWidth().is_bound()) invalidWidth().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (anyOtherError().is_bound()) anyOtherError().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+}
+
+void ChangeLineAttributesRes__errorCodes::encode_text(Text_Buf& text_buf) const
+{
+field_invalidObjectID.encode_text(text_buf);
+field_invalidColor.encode_text(text_buf);
+field_invalidWidth.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_anyOtherError.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+}
+
+void ChangeLineAttributesRes__errorCodes::decode_text(Text_Buf& text_buf)
+{
+field_invalidObjectID.decode_text(text_buf);
+field_invalidColor.decode_text(text_buf);
+field_invalidWidth.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_anyOtherError.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+}
+
+void ChangeLineAttributesRes__errorCodes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangeLineAttributesRes__errorCodes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangeLineAttributesRes__errorCodes::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidObjectID.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidColor.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidWidth.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_anyOtherError.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ChangeLineAttributesRes__errorCodes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_invalidObjectID.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_invalidColor.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_invalidWidth.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved3.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_anyOtherError.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved5.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved6.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved7.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangeLineAttributesRes__errorCodes_template::single_value_struct {
+BOOLEAN_template field_invalidObjectID;
+BOOLEAN_template field_invalidColor;
+BOOLEAN_template field_invalidWidth;
+BOOLEAN_template field_reserved3;
+BOOLEAN_template field_anyOtherError;
+BOOLEAN_template field_reserved5;
+BOOLEAN_template field_reserved6;
+BOOLEAN_template field_reserved7;
+};
+
+void ChangeLineAttributesRes__errorCodes_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_invalidObjectID = ANY_VALUE;
+single_value->field_invalidColor = ANY_VALUE;
+single_value->field_invalidWidth = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_anyOtherError = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+}
+}
+}
+
+void ChangeLineAttributesRes__errorCodes_template::copy_value(const ChangeLineAttributesRes__errorCodes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.invalidObjectID().is_bound()) {
+  single_value->field_invalidObjectID = other_value.invalidObjectID();
+} else {
+  single_value->field_invalidObjectID.clean_up();
+}
+if (other_value.invalidColor().is_bound()) {
+  single_value->field_invalidColor = other_value.invalidColor();
+} else {
+  single_value->field_invalidColor.clean_up();
+}
+if (other_value.invalidWidth().is_bound()) {
+  single_value->field_invalidWidth = other_value.invalidWidth();
+} else {
+  single_value->field_invalidWidth.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.anyOtherError().is_bound()) {
+  single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+  single_value->field_anyOtherError.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangeLineAttributesRes__errorCodes_template::copy_template(const ChangeLineAttributesRes__errorCodes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.invalidObjectID().get_selection()) {
+single_value->field_invalidObjectID = other_value.invalidObjectID();
+} else {
+single_value->field_invalidObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.invalidColor().get_selection()) {
+single_value->field_invalidColor = other_value.invalidColor();
+} else {
+single_value->field_invalidColor.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.invalidWidth().get_selection()) {
+single_value->field_invalidWidth = other_value.invalidWidth();
+} else {
+single_value->field_invalidWidth.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.anyOtherError().get_selection()) {
+single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+single_value->field_anyOtherError.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangeLineAttributesRes__errorCodes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangeLineAttributesRes__errorCodes_template::ChangeLineAttributesRes__errorCodes_template()
+{
+}
+
+ChangeLineAttributesRes__errorCodes_template::ChangeLineAttributesRes__errorCodes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangeLineAttributesRes__errorCodes_template::ChangeLineAttributesRes__errorCodes_template(const ChangeLineAttributesRes__errorCodes& other_value)
+{
+copy_value(other_value);
+}
+
+ChangeLineAttributesRes__errorCodes_template::ChangeLineAttributesRes__errorCodes_template(const OPTIONAL<ChangeLineAttributesRes__errorCodes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeLineAttributesRes__errorCodes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes from an unbound optional field.");
+}
+}
+
+ChangeLineAttributesRes__errorCodes_template::ChangeLineAttributesRes__errorCodes_template(const ChangeLineAttributesRes__errorCodes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangeLineAttributesRes__errorCodes_template::~ChangeLineAttributesRes__errorCodes_template()
+{
+clean_up();
+}
+
+ChangeLineAttributesRes__errorCodes_template& ChangeLineAttributesRes__errorCodes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangeLineAttributesRes__errorCodes_template& ChangeLineAttributesRes__errorCodes_template::operator=(const ChangeLineAttributesRes__errorCodes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangeLineAttributesRes__errorCodes_template& ChangeLineAttributesRes__errorCodes_template::operator=(const OPTIONAL<ChangeLineAttributesRes__errorCodes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeLineAttributesRes__errorCodes&)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 @IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes.");
+}
+return *this;
+}
+
+ChangeLineAttributesRes__errorCodes_template& ChangeLineAttributesRes__errorCodes_template::operator=(const ChangeLineAttributesRes__errorCodes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangeLineAttributesRes__errorCodes_template::match(const ChangeLineAttributesRes__errorCodes& 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.invalidObjectID().is_bound()) return FALSE;
+if(!single_value->field_invalidObjectID.match(other_value.invalidObjectID(), legacy))return FALSE;
+if(!other_value.invalidColor().is_bound()) return FALSE;
+if(!single_value->field_invalidColor.match(other_value.invalidColor(), legacy))return FALSE;
+if(!other_value.invalidWidth().is_bound()) return FALSE;
+if(!single_value->field_invalidWidth.match(other_value.invalidWidth(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.anyOtherError().is_bound()) return FALSE;
+if(!single_value->field_anyOtherError.match(other_value.anyOtherError(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes.");
+}
+return FALSE;
+}
+
+boolean ChangeLineAttributesRes__errorCodes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_invalidObjectID.is_bound()
+
+ ||single_value->field_invalidColor.is_bound()
+
+ ||single_value->field_invalidWidth.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_anyOtherError.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+;
+}
+
+boolean ChangeLineAttributesRes__errorCodes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_invalidObjectID.is_value()
+ &&single_value->field_invalidColor.is_value()
+ &&single_value->field_invalidWidth.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_anyOtherError.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value();
+}
+
+void ChangeLineAttributesRes__errorCodes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangeLineAttributesRes__errorCodes ChangeLineAttributesRes__errorCodes_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 @IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes.");
+ChangeLineAttributesRes__errorCodes ret_val;
+if (single_value->field_invalidObjectID.is_bound()) {
+ret_val.invalidObjectID() = single_value->field_invalidObjectID.valueof();
+}
+if (single_value->field_invalidColor.is_bound()) {
+ret_val.invalidColor() = single_value->field_invalidColor.valueof();
+}
+if (single_value->field_invalidWidth.is_bound()) {
+ret_val.invalidWidth() = single_value->field_invalidWidth.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_anyOtherError.is_bound()) {
+ret_val.anyOtherError() = single_value->field_anyOtherError.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+return ret_val;
+}
+
+void ChangeLineAttributesRes__errorCodes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangeLineAttributesRes__errorCodes_template[list_length];
+}
+
+ChangeLineAttributesRes__errorCodes_template& ChangeLineAttributesRes__errorCodes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& ChangeLineAttributesRes__errorCodes_template::invalidObjectID()
+{
+set_specific();
+return single_value->field_invalidObjectID;
+}
+
+const BOOLEAN_template& ChangeLineAttributesRes__errorCodes_template::invalidObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidObjectID of a non-specific template of type @IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes.");
+return single_value->field_invalidObjectID;
+}
+
+BOOLEAN_template& ChangeLineAttributesRes__errorCodes_template::invalidColor()
+{
+set_specific();
+return single_value->field_invalidColor;
+}
+
+const BOOLEAN_template& ChangeLineAttributesRes__errorCodes_template::invalidColor() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidColor of a non-specific template of type @IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes.");
+return single_value->field_invalidColor;
+}
+
+BOOLEAN_template& ChangeLineAttributesRes__errorCodes_template::invalidWidth()
+{
+set_specific();
+return single_value->field_invalidWidth;
+}
+
+const BOOLEAN_template& ChangeLineAttributesRes__errorCodes_template::invalidWidth() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidWidth of a non-specific template of type @IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes.");
+return single_value->field_invalidWidth;
+}
+
+BOOLEAN_template& ChangeLineAttributesRes__errorCodes_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const BOOLEAN_template& ChangeLineAttributesRes__errorCodes_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes.");
+return single_value->field_reserved3;
+}
+
+BOOLEAN_template& ChangeLineAttributesRes__errorCodes_template::anyOtherError()
+{
+set_specific();
+return single_value->field_anyOtherError;
+}
+
+const BOOLEAN_template& ChangeLineAttributesRes__errorCodes_template::anyOtherError() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field anyOtherError of a non-specific template of type @IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes.");
+return single_value->field_anyOtherError;
+}
+
+BOOLEAN_template& ChangeLineAttributesRes__errorCodes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const BOOLEAN_template& ChangeLineAttributesRes__errorCodes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes.");
+return single_value->field_reserved5;
+}
+
+BOOLEAN_template& ChangeLineAttributesRes__errorCodes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const BOOLEAN_template& ChangeLineAttributesRes__errorCodes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes.");
+return single_value->field_reserved6;
+}
+
+BOOLEAN_template& ChangeLineAttributesRes__errorCodes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const BOOLEAN_template& ChangeLineAttributesRes__errorCodes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes.");
+return single_value->field_reserved7;
+}
+
+int ChangeLineAttributesRes__errorCodes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes 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 @IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes.");
+  }
+  return 0;
+}
+
+void ChangeLineAttributesRes__errorCodes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ invalidObjectID := ");
+single_value->field_invalidObjectID.log();
+TTCN_Logger::log_event_str(", invalidColor := ");
+single_value->field_invalidColor.log();
+TTCN_Logger::log_event_str(", invalidWidth := ");
+single_value->field_invalidWidth.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangeLineAttributesRes__errorCodes_template::log_match(const ChangeLineAttributesRes__errorCodes& 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_invalidObjectID.match(match_value.invalidObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidObjectID");
+single_value->field_invalidObjectID.log_match(match_value.invalidObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_invalidColor.match(match_value.invalidColor(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidColor");
+single_value->field_invalidColor.log_match(match_value.invalidColor(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_invalidWidth.match(match_value.invalidWidth(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidWidth");
+single_value->field_invalidWidth.log_match(match_value.invalidWidth(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_anyOtherError.match(match_value.anyOtherError(), legacy)){
+TTCN_Logger::log_logmatch_info(".anyOtherError");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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("{ invalidObjectID := ");
+single_value->field_invalidObjectID.log_match(match_value.invalidObjectID(), legacy);
+TTCN_Logger::log_event_str(", invalidColor := ");
+single_value->field_invalidColor.log_match(match_value.invalidColor(), legacy);
+TTCN_Logger::log_event_str(", invalidWidth := ");
+single_value->field_invalidWidth.log_match(match_value.invalidWidth(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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 ChangeLineAttributesRes__errorCodes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_invalidObjectID.encode_text(text_buf);
+single_value->field_invalidColor.encode_text(text_buf);
+single_value->field_invalidWidth.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_anyOtherError.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.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 @IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes.");
+}
+}
+
+void ChangeLineAttributesRes__errorCodes_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_invalidObjectID.decode_text(text_buf);
+single_value->field_invalidColor.decode_text(text_buf);
+single_value->field_invalidWidth.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_anyOtherError.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.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 ChangeLineAttributesRes__errorCodes_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 @IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes.");
+}
+}
+
+void ChangeLineAttributesRes__errorCodes_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: {
+    ChangeLineAttributesRes__errorCodes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes has 8 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) invalidObjectID().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) invalidColor().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) invalidWidth().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "invalidObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidObjectID().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(), "invalidColor")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidColor().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(), "invalidWidth")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidWidth().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangeLineAttributesRes__errorCodes_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_invalidObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes");
+single_value->field_invalidColor.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes");
+single_value->field_invalidWidth.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes");
+single_value->field_anyOtherError.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes");
+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 : "@IsobusVTMessageTypes.ChangeLineAttributesRes_errorCodes");
+}
+
+boolean ChangeLineAttributesRes__errorCodes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangeLineAttributesRes__errorCodes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangeLineAttributesRes::ChangeLineAttributesRes()
+{
+}
+
+ChangeLineAttributesRes::ChangeLineAttributesRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const ChangeLineAttributesRes__errorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_objectID(par_objectID),
+  field_errorCodes(par_errorCodes),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+ChangeLineAttributesRes::ChangeLineAttributesRes(const ChangeLineAttributesRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangeLineAttributesRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+else field_objectID.clean_up();
+if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+else field_errorCodes.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void ChangeLineAttributesRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectID.clean_up();
+field_errorCodes.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangeLineAttributesRes::get_descriptor() const { return &ChangeLineAttributesRes_descr_; }
+ChangeLineAttributesRes& ChangeLineAttributesRes::operator=(const ChangeLineAttributesRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangeLineAttributesRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+  else field_objectID.clean_up();
+  if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+  else field_errorCodes.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean ChangeLineAttributesRes::operator==(const ChangeLineAttributesRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectID==other_value.field_objectID
+  && field_errorCodes==other_value.field_errorCodes
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean ChangeLineAttributesRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectID.is_bound())
+  || (field_errorCodes.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean ChangeLineAttributesRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectID.is_value()
+  && field_errorCodes.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void ChangeLineAttributesRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+field_objectID.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangeLineAttributesRes::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 @IsobusVTMessageTypes.ChangeLineAttributesRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangeLineAttributesRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangeLineAttributesRes");
+  }
+}
+
+void ChangeLineAttributesRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectID().is_bound()) objectID().set_implicit_omit();
+if (errorCodes().is_bound()) errorCodes().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void ChangeLineAttributesRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectID.encode_text(text_buf);
+field_errorCodes.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void ChangeLineAttributesRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectID.decode_text(text_buf);
+field_errorCodes.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void ChangeLineAttributesRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangeLineAttributesRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangeLineAttributesRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectID.RAW_decode(ValidObjectID_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, ChangeLineAttributesRes__errorCodes_descr_.raw->forceomit);
+  decoded_field_length = field_errorCodes.RAW_decode(ChangeLineAttributesRes__errorCodes_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, ChangeLineAttributesRes_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(ChangeLineAttributesRes_reserved5_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, ChangeLineAttributesRes_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(ChangeLineAttributesRes_reserved6_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, ChangeLineAttributesRes_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(ChangeLineAttributesRes_reserved7_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, ChangeLineAttributesRes_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(ChangeLineAttributesRes_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ChangeLineAttributesRes::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ChangeLineAttributesRes__errorCodes_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, ChangeLineAttributesRes_reserved5_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, ChangeLineAttributesRes_reserved6_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, ChangeLineAttributesRes_reserved7_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, ChangeLineAttributesRes_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_errorCodes.RAW_encode(ChangeLineAttributesRes__errorCodes_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved5.RAW_encode(ChangeLineAttributesRes_reserved5_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved6.RAW_encode(ChangeLineAttributesRes_reserved6_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved7.RAW_encode(ChangeLineAttributesRes_reserved7_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved8.RAW_encode(ChangeLineAttributesRes_reserved8_descr_, *myleaf.body.node.nodes[6]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangeLineAttributesRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectID;
+ChangeLineAttributesRes__errorCodes_template field_errorCodes;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void ChangeLineAttributesRes_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_vtfunction = ANY_VALUE;
+single_value->field_objectID = ANY_VALUE;
+single_value->field_errorCodes = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void ChangeLineAttributesRes_template::copy_value(const ChangeLineAttributesRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectID().is_bound()) {
+  single_value->field_objectID = other_value.objectID();
+} else {
+  single_value->field_objectID.clean_up();
+}
+if (other_value.errorCodes().is_bound()) {
+  single_value->field_errorCodes = other_value.errorCodes();
+} else {
+  single_value->field_errorCodes.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangeLineAttributesRes_template::copy_template(const ChangeLineAttributesRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectID().get_selection()) {
+single_value->field_objectID = other_value.objectID();
+} else {
+single_value->field_objectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.errorCodes().get_selection()) {
+single_value->field_errorCodes = other_value.errorCodes();
+} else {
+single_value->field_errorCodes.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangeLineAttributesRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeLineAttributesRes.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangeLineAttributesRes_template::ChangeLineAttributesRes_template()
+{
+}
+
+ChangeLineAttributesRes_template::ChangeLineAttributesRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangeLineAttributesRes_template::ChangeLineAttributesRes_template(const ChangeLineAttributesRes& other_value)
+{
+copy_value(other_value);
+}
+
+ChangeLineAttributesRes_template::ChangeLineAttributesRes_template(const OPTIONAL<ChangeLineAttributesRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeLineAttributesRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangeLineAttributesRes from an unbound optional field.");
+}
+}
+
+ChangeLineAttributesRes_template::ChangeLineAttributesRes_template(const ChangeLineAttributesRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangeLineAttributesRes_template::~ChangeLineAttributesRes_template()
+{
+clean_up();
+}
+
+ChangeLineAttributesRes_template& ChangeLineAttributesRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangeLineAttributesRes_template& ChangeLineAttributesRes_template::operator=(const ChangeLineAttributesRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangeLineAttributesRes_template& ChangeLineAttributesRes_template::operator=(const OPTIONAL<ChangeLineAttributesRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeLineAttributesRes&)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 @IsobusVTMessageTypes.ChangeLineAttributesRes.");
+}
+return *this;
+}
+
+ChangeLineAttributesRes_template& ChangeLineAttributesRes_template::operator=(const ChangeLineAttributesRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangeLineAttributesRes_template::match(const ChangeLineAttributesRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectID().is_bound()) return FALSE;
+if(!single_value->field_objectID.match(other_value.objectID(), legacy))return FALSE;
+if(!other_value.errorCodes().is_bound()) return FALSE;
+if(!single_value->field_errorCodes.match(other_value.errorCodes(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeLineAttributesRes.");
+}
+return FALSE;
+}
+
+boolean ChangeLineAttributesRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectID.is_bound()
+
+ ||single_value->field_errorCodes.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean ChangeLineAttributesRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectID.is_value()
+ &&single_value->field_errorCodes.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void ChangeLineAttributesRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangeLineAttributesRes ChangeLineAttributesRes_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 @IsobusVTMessageTypes.ChangeLineAttributesRes.");
+ChangeLineAttributesRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectID.is_bound()) {
+ret_val.objectID() = single_value->field_objectID.valueof();
+}
+if (single_value->field_errorCodes.is_bound()) {
+ret_val.errorCodes() = single_value->field_errorCodes.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void ChangeLineAttributesRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangeLineAttributesRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangeLineAttributesRes_template[list_length];
+}
+
+ChangeLineAttributesRes_template& ChangeLineAttributesRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangeLineAttributesRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangeLineAttributesRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ChangeLineAttributesRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ChangeLineAttributesRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ChangeLineAttributesRes.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& ChangeLineAttributesRes_template::objectID()
+{
+set_specific();
+return single_value->field_objectID;
+}
+
+const INTEGER_template& ChangeLineAttributesRes_template::objectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectID of a non-specific template of type @IsobusVTMessageTypes.ChangeLineAttributesRes.");
+return single_value->field_objectID;
+}
+
+ChangeLineAttributesRes__errorCodes_template& ChangeLineAttributesRes_template::errorCodes()
+{
+set_specific();
+return single_value->field_errorCodes;
+}
+
+const ChangeLineAttributesRes__errorCodes_template& ChangeLineAttributesRes_template::errorCodes() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field errorCodes of a non-specific template of type @IsobusVTMessageTypes.ChangeLineAttributesRes.");
+return single_value->field_errorCodes;
+}
+
+OCTETSTRING_template& ChangeLineAttributesRes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& ChangeLineAttributesRes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.ChangeLineAttributesRes.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& ChangeLineAttributesRes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& ChangeLineAttributesRes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.ChangeLineAttributesRes.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& ChangeLineAttributesRes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& ChangeLineAttributesRes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ChangeLineAttributesRes.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& ChangeLineAttributesRes_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& ChangeLineAttributesRes_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.ChangeLineAttributesRes.");
+return single_value->field_reserved8;
+}
+
+int ChangeLineAttributesRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeLineAttributesRes 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 @IsobusVTMessageTypes.ChangeLineAttributesRes 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 @IsobusVTMessageTypes.ChangeLineAttributesRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeLineAttributesRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeLineAttributesRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeLineAttributesRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeLineAttributesRes.");
+  }
+  return 0;
+}
+
+void ChangeLineAttributesRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangeLineAttributesRes_template::log_match(const ChangeLineAttributesRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectID.match(match_value.objectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectID");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_errorCodes.match(match_value.errorCodes(), legacy)){
+TTCN_Logger::log_logmatch_info(".errorCodes");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 ChangeLineAttributesRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectID.encode_text(text_buf);
+single_value->field_errorCodes.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.ChangeLineAttributesRes.");
+}
+}
+
+void ChangeLineAttributesRes_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_vtfunction.decode_text(text_buf);
+single_value->field_objectID.decode_text(text_buf);
+single_value->field_errorCodes.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 ChangeLineAttributesRes_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 @IsobusVTMessageTypes.ChangeLineAttributesRes.");
+}
+}
+
+void ChangeLineAttributesRes_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: {
+    ChangeLineAttributesRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.ChangeLineAttributesRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangeLineAttributesRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangeLineAttributesRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangeLineAttributesRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeLineAttributesRes");
+single_value->field_objectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeLineAttributesRes");
+single_value->field_errorCodes.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeLineAttributesRes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeLineAttributesRes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeLineAttributesRes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeLineAttributesRes");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeLineAttributesRes");
+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 : "@IsobusVTMessageTypes.ChangeLineAttributesRes");
+}
+
+boolean ChangeLineAttributesRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangeLineAttributesRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangeLineAttributesReq::ChangeLineAttributesReq()
+{
+}
+
+ChangeLineAttributesReq::ChangeLineAttributesReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_ObjectIDofObjectToChange,
+    const INTEGER& par_lineColour,
+    const INTEGER& par_lineWidth,
+    const BITSTRING& par_LineArt,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_ObjectIDofObjectToChange(par_ObjectIDofObjectToChange),
+  field_lineColour(par_lineColour),
+  field_lineWidth(par_lineWidth),
+  field_LineArt(par_LineArt),
+  field_reserved8(par_reserved8)
+{
+}
+
+ChangeLineAttributesReq::ChangeLineAttributesReq(const ChangeLineAttributesReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangeLineAttributesReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.ObjectIDofObjectToChange().is_bound()) field_ObjectIDofObjectToChange = other_value.ObjectIDofObjectToChange();
+else field_ObjectIDofObjectToChange.clean_up();
+if (other_value.lineColour().is_bound()) field_lineColour = other_value.lineColour();
+else field_lineColour.clean_up();
+if (other_value.lineWidth().is_bound()) field_lineWidth = other_value.lineWidth();
+else field_lineWidth.clean_up();
+if (other_value.LineArt().is_bound()) field_LineArt = other_value.LineArt();
+else field_LineArt.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void ChangeLineAttributesReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_ObjectIDofObjectToChange.clean_up();
+field_lineColour.clean_up();
+field_lineWidth.clean_up();
+field_LineArt.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangeLineAttributesReq::get_descriptor() const { return &ChangeLineAttributesReq_descr_; }
+ChangeLineAttributesReq& ChangeLineAttributesReq::operator=(const ChangeLineAttributesReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangeLineAttributesReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.ObjectIDofObjectToChange().is_bound()) field_ObjectIDofObjectToChange = other_value.ObjectIDofObjectToChange();
+  else field_ObjectIDofObjectToChange.clean_up();
+  if (other_value.lineColour().is_bound()) field_lineColour = other_value.lineColour();
+  else field_lineColour.clean_up();
+  if (other_value.lineWidth().is_bound()) field_lineWidth = other_value.lineWidth();
+  else field_lineWidth.clean_up();
+  if (other_value.LineArt().is_bound()) field_LineArt = other_value.LineArt();
+  else field_LineArt.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean ChangeLineAttributesReq::operator==(const ChangeLineAttributesReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_ObjectIDofObjectToChange==other_value.field_ObjectIDofObjectToChange
+  && field_lineColour==other_value.field_lineColour
+  && field_lineWidth==other_value.field_lineWidth
+  && field_LineArt==other_value.field_LineArt
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean ChangeLineAttributesReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_ObjectIDofObjectToChange.is_bound())
+  || (field_lineColour.is_bound())
+  || (field_lineWidth.is_bound())
+  || (field_LineArt.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean ChangeLineAttributesReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_ObjectIDofObjectToChange.is_value()
+  && field_lineColour.is_value()
+  && field_lineWidth.is_value()
+  && field_LineArt.is_value()
+  && field_reserved8.is_value();
+}
+void ChangeLineAttributesReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", ObjectIDofObjectToChange := ");
+field_ObjectIDofObjectToChange.log();
+TTCN_Logger::log_event_str(", lineColour := ");
+field_lineColour.log();
+TTCN_Logger::log_event_str(", lineWidth := ");
+field_lineWidth.log();
+TTCN_Logger::log_event_str(", LineArt := ");
+field_LineArt.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangeLineAttributesReq::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 @IsobusVTMessageTypes.ChangeLineAttributesReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ObjectIDofObjectToChange().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) lineColour().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) lineWidth().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) LineArt().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "ObjectIDofObjectToChange")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ObjectIDofObjectToChange().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(), "lineColour")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          lineColour().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(), "lineWidth")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          lineWidth().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(), "LineArt")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          LineArt().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangeLineAttributesReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangeLineAttributesReq");
+  }
+}
+
+void ChangeLineAttributesReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (ObjectIDofObjectToChange().is_bound()) ObjectIDofObjectToChange().set_implicit_omit();
+if (lineColour().is_bound()) lineColour().set_implicit_omit();
+if (lineWidth().is_bound()) lineWidth().set_implicit_omit();
+if (LineArt().is_bound()) LineArt().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void ChangeLineAttributesReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_ObjectIDofObjectToChange.encode_text(text_buf);
+field_lineColour.encode_text(text_buf);
+field_lineWidth.encode_text(text_buf);
+field_LineArt.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void ChangeLineAttributesReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_ObjectIDofObjectToChange.decode_text(text_buf);
+field_lineColour.decode_text(text_buf);
+field_lineWidth.decode_text(text_buf);
+field_LineArt.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void ChangeLineAttributesReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangeLineAttributesReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangeLineAttributesReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_ObjectIDofObjectToChange.RAW_decode(ValidObjectID_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, ColorType_descr_.raw->forceomit);
+  decoded_field_length = field_lineColour.RAW_decode(ColorType_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, LineWidth_descr_.raw->forceomit);
+  decoded_field_length = field_lineWidth.RAW_decode(LineWidth_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, LineArt_descr_.raw->forceomit);
+  decoded_field_length = field_LineArt.RAW_decode(LineArt_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, ChangeLineAttributesReq_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(ChangeLineAttributesReq_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ChangeLineAttributesReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ColorType_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, LineWidth_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, LineArt_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, ChangeLineAttributesReq_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_ObjectIDofObjectToChange.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_lineColour.RAW_encode(ColorType_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_lineWidth.RAW_encode(LineWidth_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_LineArt.RAW_encode(LineArt_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved8.RAW_encode(ChangeLineAttributesReq_reserved8_descr_, *myleaf.body.node.nodes[5]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangeLineAttributesReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_ObjectIDofObjectToChange;
+INTEGER_template field_lineColour;
+INTEGER_template field_lineWidth;
+BITSTRING_template field_LineArt;
+OCTETSTRING_template field_reserved8;
+};
+
+void ChangeLineAttributesReq_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_vtfunction = ANY_VALUE;
+single_value->field_ObjectIDofObjectToChange = ANY_VALUE;
+single_value->field_lineColour = ANY_VALUE;
+single_value->field_lineWidth = ANY_VALUE;
+single_value->field_LineArt = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void ChangeLineAttributesReq_template::copy_value(const ChangeLineAttributesReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.ObjectIDofObjectToChange().is_bound()) {
+  single_value->field_ObjectIDofObjectToChange = other_value.ObjectIDofObjectToChange();
+} else {
+  single_value->field_ObjectIDofObjectToChange.clean_up();
+}
+if (other_value.lineColour().is_bound()) {
+  single_value->field_lineColour = other_value.lineColour();
+} else {
+  single_value->field_lineColour.clean_up();
+}
+if (other_value.lineWidth().is_bound()) {
+  single_value->field_lineWidth = other_value.lineWidth();
+} else {
+  single_value->field_lineWidth.clean_up();
+}
+if (other_value.LineArt().is_bound()) {
+  single_value->field_LineArt = other_value.LineArt();
+} else {
+  single_value->field_LineArt.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangeLineAttributesReq_template::copy_template(const ChangeLineAttributesReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.ObjectIDofObjectToChange().get_selection()) {
+single_value->field_ObjectIDofObjectToChange = other_value.ObjectIDofObjectToChange();
+} else {
+single_value->field_ObjectIDofObjectToChange.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.lineColour().get_selection()) {
+single_value->field_lineColour = other_value.lineColour();
+} else {
+single_value->field_lineColour.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.lineWidth().get_selection()) {
+single_value->field_lineWidth = other_value.lineWidth();
+} else {
+single_value->field_lineWidth.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.LineArt().get_selection()) {
+single_value->field_LineArt = other_value.LineArt();
+} else {
+single_value->field_LineArt.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangeLineAttributesReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeLineAttributesReq.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangeLineAttributesReq_template::ChangeLineAttributesReq_template()
+{
+}
+
+ChangeLineAttributesReq_template::ChangeLineAttributesReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangeLineAttributesReq_template::ChangeLineAttributesReq_template(const ChangeLineAttributesReq& other_value)
+{
+copy_value(other_value);
+}
+
+ChangeLineAttributesReq_template::ChangeLineAttributesReq_template(const OPTIONAL<ChangeLineAttributesReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeLineAttributesReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangeLineAttributesReq from an unbound optional field.");
+}
+}
+
+ChangeLineAttributesReq_template::ChangeLineAttributesReq_template(const ChangeLineAttributesReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangeLineAttributesReq_template::~ChangeLineAttributesReq_template()
+{
+clean_up();
+}
+
+ChangeLineAttributesReq_template& ChangeLineAttributesReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangeLineAttributesReq_template& ChangeLineAttributesReq_template::operator=(const ChangeLineAttributesReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangeLineAttributesReq_template& ChangeLineAttributesReq_template::operator=(const OPTIONAL<ChangeLineAttributesReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeLineAttributesReq&)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 @IsobusVTMessageTypes.ChangeLineAttributesReq.");
+}
+return *this;
+}
+
+ChangeLineAttributesReq_template& ChangeLineAttributesReq_template::operator=(const ChangeLineAttributesReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangeLineAttributesReq_template::match(const ChangeLineAttributesReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.ObjectIDofObjectToChange().is_bound()) return FALSE;
+if(!single_value->field_ObjectIDofObjectToChange.match(other_value.ObjectIDofObjectToChange(), legacy))return FALSE;
+if(!other_value.lineColour().is_bound()) return FALSE;
+if(!single_value->field_lineColour.match(other_value.lineColour(), legacy))return FALSE;
+if(!other_value.lineWidth().is_bound()) return FALSE;
+if(!single_value->field_lineWidth.match(other_value.lineWidth(), legacy))return FALSE;
+if(!other_value.LineArt().is_bound()) return FALSE;
+if(!single_value->field_LineArt.match(other_value.LineArt(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeLineAttributesReq.");
+}
+return FALSE;
+}
+
+boolean ChangeLineAttributesReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_ObjectIDofObjectToChange.is_bound()
+
+ ||single_value->field_lineColour.is_bound()
+
+ ||single_value->field_lineWidth.is_bound()
+
+ ||single_value->field_LineArt.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean ChangeLineAttributesReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_ObjectIDofObjectToChange.is_value()
+ &&single_value->field_lineColour.is_value()
+ &&single_value->field_lineWidth.is_value()
+ &&single_value->field_LineArt.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void ChangeLineAttributesReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangeLineAttributesReq ChangeLineAttributesReq_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 @IsobusVTMessageTypes.ChangeLineAttributesReq.");
+ChangeLineAttributesReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_ObjectIDofObjectToChange.is_bound()) {
+ret_val.ObjectIDofObjectToChange() = single_value->field_ObjectIDofObjectToChange.valueof();
+}
+if (single_value->field_lineColour.is_bound()) {
+ret_val.lineColour() = single_value->field_lineColour.valueof();
+}
+if (single_value->field_lineWidth.is_bound()) {
+ret_val.lineWidth() = single_value->field_lineWidth.valueof();
+}
+if (single_value->field_LineArt.is_bound()) {
+ret_val.LineArt() = single_value->field_LineArt.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void ChangeLineAttributesReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangeLineAttributesReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangeLineAttributesReq_template[list_length];
+}
+
+ChangeLineAttributesReq_template& ChangeLineAttributesReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangeLineAttributesReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangeLineAttributesReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ChangeLineAttributesReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ChangeLineAttributesReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ChangeLineAttributesReq.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& ChangeLineAttributesReq_template::ObjectIDofObjectToChange()
+{
+set_specific();
+return single_value->field_ObjectIDofObjectToChange;
+}
+
+const INTEGER_template& ChangeLineAttributesReq_template::ObjectIDofObjectToChange() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field ObjectIDofObjectToChange of a non-specific template of type @IsobusVTMessageTypes.ChangeLineAttributesReq.");
+return single_value->field_ObjectIDofObjectToChange;
+}
+
+INTEGER_template& ChangeLineAttributesReq_template::lineColour()
+{
+set_specific();
+return single_value->field_lineColour;
+}
+
+const INTEGER_template& ChangeLineAttributesReq_template::lineColour() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field lineColour of a non-specific template of type @IsobusVTMessageTypes.ChangeLineAttributesReq.");
+return single_value->field_lineColour;
+}
+
+INTEGER_template& ChangeLineAttributesReq_template::lineWidth()
+{
+set_specific();
+return single_value->field_lineWidth;
+}
+
+const INTEGER_template& ChangeLineAttributesReq_template::lineWidth() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field lineWidth of a non-specific template of type @IsobusVTMessageTypes.ChangeLineAttributesReq.");
+return single_value->field_lineWidth;
+}
+
+BITSTRING_template& ChangeLineAttributesReq_template::LineArt()
+{
+set_specific();
+return single_value->field_LineArt;
+}
+
+const BITSTRING_template& ChangeLineAttributesReq_template::LineArt() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field LineArt of a non-specific template of type @IsobusVTMessageTypes.ChangeLineAttributesReq.");
+return single_value->field_LineArt;
+}
+
+OCTETSTRING_template& ChangeLineAttributesReq_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& ChangeLineAttributesReq_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.ChangeLineAttributesReq.");
+return single_value->field_reserved8;
+}
+
+int ChangeLineAttributesReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeLineAttributesReq 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 @IsobusVTMessageTypes.ChangeLineAttributesReq 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 @IsobusVTMessageTypes.ChangeLineAttributesReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeLineAttributesReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeLineAttributesReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeLineAttributesReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeLineAttributesReq.");
+  }
+  return 0;
+}
+
+void ChangeLineAttributesReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", ObjectIDofObjectToChange := ");
+single_value->field_ObjectIDofObjectToChange.log();
+TTCN_Logger::log_event_str(", lineColour := ");
+single_value->field_lineColour.log();
+TTCN_Logger::log_event_str(", lineWidth := ");
+single_value->field_lineWidth.log();
+TTCN_Logger::log_event_str(", LineArt := ");
+single_value->field_LineArt.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangeLineAttributesReq_template::log_match(const ChangeLineAttributesReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_ObjectIDofObjectToChange.match(match_value.ObjectIDofObjectToChange(), legacy)){
+TTCN_Logger::log_logmatch_info(".ObjectIDofObjectToChange");
+single_value->field_ObjectIDofObjectToChange.log_match(match_value.ObjectIDofObjectToChange(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_lineColour.match(match_value.lineColour(), legacy)){
+TTCN_Logger::log_logmatch_info(".lineColour");
+single_value->field_lineColour.log_match(match_value.lineColour(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_lineWidth.match(match_value.lineWidth(), legacy)){
+TTCN_Logger::log_logmatch_info(".lineWidth");
+single_value->field_lineWidth.log_match(match_value.lineWidth(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_LineArt.match(match_value.LineArt(), legacy)){
+TTCN_Logger::log_logmatch_info(".LineArt");
+single_value->field_LineArt.log_match(match_value.LineArt(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", ObjectIDofObjectToChange := ");
+single_value->field_ObjectIDofObjectToChange.log_match(match_value.ObjectIDofObjectToChange(), legacy);
+TTCN_Logger::log_event_str(", lineColour := ");
+single_value->field_lineColour.log_match(match_value.lineColour(), legacy);
+TTCN_Logger::log_event_str(", lineWidth := ");
+single_value->field_lineWidth.log_match(match_value.lineWidth(), legacy);
+TTCN_Logger::log_event_str(", LineArt := ");
+single_value->field_LineArt.log_match(match_value.LineArt(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 ChangeLineAttributesReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_ObjectIDofObjectToChange.encode_text(text_buf);
+single_value->field_lineColour.encode_text(text_buf);
+single_value->field_lineWidth.encode_text(text_buf);
+single_value->field_LineArt.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.ChangeLineAttributesReq.");
+}
+}
+
+void ChangeLineAttributesReq_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_vtfunction.decode_text(text_buf);
+single_value->field_ObjectIDofObjectToChange.decode_text(text_buf);
+single_value->field_lineColour.decode_text(text_buf);
+single_value->field_lineWidth.decode_text(text_buf);
+single_value->field_LineArt.decode_text(text_buf);
+single_value->field_reserved8.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 ChangeLineAttributesReq_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 @IsobusVTMessageTypes.ChangeLineAttributesReq.");
+}
+}
+
+void ChangeLineAttributesReq_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: {
+    ChangeLineAttributesReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.ChangeLineAttributesReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ObjectIDofObjectToChange().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) lineColour().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) lineWidth().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) LineArt().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "ObjectIDofObjectToChange")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ObjectIDofObjectToChange().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(), "lineColour")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          lineColour().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(), "lineWidth")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          lineWidth().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(), "LineArt")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          LineArt().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangeLineAttributesReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangeLineAttributesReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangeLineAttributesReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeLineAttributesReq");
+single_value->field_ObjectIDofObjectToChange.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeLineAttributesReq");
+single_value->field_lineColour.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeLineAttributesReq");
+single_value->field_lineWidth.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeLineAttributesReq");
+single_value->field_LineArt.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeLineAttributesReq");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeLineAttributesReq");
+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 : "@IsobusVTMessageTypes.ChangeLineAttributesReq");
+}
+
+boolean ChangeLineAttributesReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangeLineAttributesReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangeFillAttributesRes__errorCodes::ChangeFillAttributesRes__errorCodes()
+{
+}
+
+ChangeFillAttributesRes__errorCodes::ChangeFillAttributesRes__errorCodes(const BOOLEAN& par_invalidObjectID,
+    const BOOLEAN& par_invalidType,
+    const BOOLEAN& par_invalidColor,
+    const BOOLEAN& par_invalidPatternObjectID,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7)
+  :   field_invalidObjectID(par_invalidObjectID),
+  field_invalidType(par_invalidType),
+  field_invalidColor(par_invalidColor),
+  field_invalidPatternObjectID(par_invalidPatternObjectID),
+  field_anyOtherError(par_anyOtherError),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7)
+{
+}
+
+ChangeFillAttributesRes__errorCodes::ChangeFillAttributesRes__errorCodes(const ChangeFillAttributesRes__errorCodes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes.");
+if (other_value.invalidObjectID().is_bound()) field_invalidObjectID = other_value.invalidObjectID();
+else field_invalidObjectID.clean_up();
+if (other_value.invalidType().is_bound()) field_invalidType = other_value.invalidType();
+else field_invalidType.clean_up();
+if (other_value.invalidColor().is_bound()) field_invalidColor = other_value.invalidColor();
+else field_invalidColor.clean_up();
+if (other_value.invalidPatternObjectID().is_bound()) field_invalidPatternObjectID = other_value.invalidPatternObjectID();
+else field_invalidPatternObjectID.clean_up();
+if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+else field_anyOtherError.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+}
+
+void ChangeFillAttributesRes__errorCodes::clean_up()
+{
+field_invalidObjectID.clean_up();
+field_invalidType.clean_up();
+field_invalidColor.clean_up();
+field_invalidPatternObjectID.clean_up();
+field_anyOtherError.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangeFillAttributesRes__errorCodes::get_descriptor() const { return &ChangeFillAttributesRes__errorCodes_descr_; }
+ChangeFillAttributesRes__errorCodes& ChangeFillAttributesRes__errorCodes::operator=(const ChangeFillAttributesRes__errorCodes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes.");
+  if (other_value.invalidObjectID().is_bound()) field_invalidObjectID = other_value.invalidObjectID();
+  else field_invalidObjectID.clean_up();
+  if (other_value.invalidType().is_bound()) field_invalidType = other_value.invalidType();
+  else field_invalidType.clean_up();
+  if (other_value.invalidColor().is_bound()) field_invalidColor = other_value.invalidColor();
+  else field_invalidColor.clean_up();
+  if (other_value.invalidPatternObjectID().is_bound()) field_invalidPatternObjectID = other_value.invalidPatternObjectID();
+  else field_invalidPatternObjectID.clean_up();
+  if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+  else field_anyOtherError.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+}
+return *this;
+}
+
+boolean ChangeFillAttributesRes__errorCodes::operator==(const ChangeFillAttributesRes__errorCodes& other_value) const
+{
+return field_invalidObjectID==other_value.field_invalidObjectID
+  && field_invalidType==other_value.field_invalidType
+  && field_invalidColor==other_value.field_invalidColor
+  && field_invalidPatternObjectID==other_value.field_invalidPatternObjectID
+  && field_anyOtherError==other_value.field_anyOtherError
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7;
+}
+
+boolean ChangeFillAttributesRes__errorCodes::is_bound() const
+{
+return (field_invalidObjectID.is_bound())
+  || (field_invalidType.is_bound())
+  || (field_invalidColor.is_bound())
+  || (field_invalidPatternObjectID.is_bound())
+  || (field_anyOtherError.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound());
+}
+boolean ChangeFillAttributesRes__errorCodes::is_value() const
+{
+return field_invalidObjectID.is_value()
+  && field_invalidType.is_value()
+  && field_invalidColor.is_value()
+  && field_invalidPatternObjectID.is_value()
+  && field_anyOtherError.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value();
+}
+void ChangeFillAttributesRes__errorCodes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ invalidObjectID := ");
+field_invalidObjectID.log();
+TTCN_Logger::log_event_str(", invalidType := ");
+field_invalidType.log();
+TTCN_Logger::log_event_str(", invalidColor := ");
+field_invalidColor.log();
+TTCN_Logger::log_event_str(", invalidPatternObjectID := ");
+field_invalidPatternObjectID.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangeFillAttributesRes__errorCodes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes has 8 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) invalidObjectID().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) invalidType().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) invalidColor().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) invalidPatternObjectID().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "invalidObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidObjectID().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(), "invalidType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidType().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(), "invalidColor")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidColor().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(), "invalidPatternObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidPatternObjectID().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes");
+  }
+}
+
+void ChangeFillAttributesRes__errorCodes::set_implicit_omit()
+{
+if (invalidObjectID().is_bound()) invalidObjectID().set_implicit_omit();
+if (invalidType().is_bound()) invalidType().set_implicit_omit();
+if (invalidColor().is_bound()) invalidColor().set_implicit_omit();
+if (invalidPatternObjectID().is_bound()) invalidPatternObjectID().set_implicit_omit();
+if (anyOtherError().is_bound()) anyOtherError().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+}
+
+void ChangeFillAttributesRes__errorCodes::encode_text(Text_Buf& text_buf) const
+{
+field_invalidObjectID.encode_text(text_buf);
+field_invalidType.encode_text(text_buf);
+field_invalidColor.encode_text(text_buf);
+field_invalidPatternObjectID.encode_text(text_buf);
+field_anyOtherError.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+}
+
+void ChangeFillAttributesRes__errorCodes::decode_text(Text_Buf& text_buf)
+{
+field_invalidObjectID.decode_text(text_buf);
+field_invalidType.decode_text(text_buf);
+field_invalidColor.decode_text(text_buf);
+field_invalidPatternObjectID.decode_text(text_buf);
+field_anyOtherError.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+}
+
+void ChangeFillAttributesRes__errorCodes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangeFillAttributesRes__errorCodes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangeFillAttributesRes__errorCodes::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidObjectID.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidType.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidColor.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidPatternObjectID.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_anyOtherError.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ChangeFillAttributesRes__errorCodes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_invalidObjectID.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_invalidType.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_invalidColor.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_invalidPatternObjectID.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_anyOtherError.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved5.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved6.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved7.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangeFillAttributesRes__errorCodes_template::single_value_struct {
+BOOLEAN_template field_invalidObjectID;
+BOOLEAN_template field_invalidType;
+BOOLEAN_template field_invalidColor;
+BOOLEAN_template field_invalidPatternObjectID;
+BOOLEAN_template field_anyOtherError;
+BOOLEAN_template field_reserved5;
+BOOLEAN_template field_reserved6;
+BOOLEAN_template field_reserved7;
+};
+
+void ChangeFillAttributesRes__errorCodes_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_invalidObjectID = ANY_VALUE;
+single_value->field_invalidType = ANY_VALUE;
+single_value->field_invalidColor = ANY_VALUE;
+single_value->field_invalidPatternObjectID = ANY_VALUE;
+single_value->field_anyOtherError = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+}
+}
+}
+
+void ChangeFillAttributesRes__errorCodes_template::copy_value(const ChangeFillAttributesRes__errorCodes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.invalidObjectID().is_bound()) {
+  single_value->field_invalidObjectID = other_value.invalidObjectID();
+} else {
+  single_value->field_invalidObjectID.clean_up();
+}
+if (other_value.invalidType().is_bound()) {
+  single_value->field_invalidType = other_value.invalidType();
+} else {
+  single_value->field_invalidType.clean_up();
+}
+if (other_value.invalidColor().is_bound()) {
+  single_value->field_invalidColor = other_value.invalidColor();
+} else {
+  single_value->field_invalidColor.clean_up();
+}
+if (other_value.invalidPatternObjectID().is_bound()) {
+  single_value->field_invalidPatternObjectID = other_value.invalidPatternObjectID();
+} else {
+  single_value->field_invalidPatternObjectID.clean_up();
+}
+if (other_value.anyOtherError().is_bound()) {
+  single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+  single_value->field_anyOtherError.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangeFillAttributesRes__errorCodes_template::copy_template(const ChangeFillAttributesRes__errorCodes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.invalidObjectID().get_selection()) {
+single_value->field_invalidObjectID = other_value.invalidObjectID();
+} else {
+single_value->field_invalidObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.invalidType().get_selection()) {
+single_value->field_invalidType = other_value.invalidType();
+} else {
+single_value->field_invalidType.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.invalidColor().get_selection()) {
+single_value->field_invalidColor = other_value.invalidColor();
+} else {
+single_value->field_invalidColor.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.invalidPatternObjectID().get_selection()) {
+single_value->field_invalidPatternObjectID = other_value.invalidPatternObjectID();
+} else {
+single_value->field_invalidPatternObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.anyOtherError().get_selection()) {
+single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+single_value->field_anyOtherError.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangeFillAttributesRes__errorCodes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangeFillAttributesRes__errorCodes_template::ChangeFillAttributesRes__errorCodes_template()
+{
+}
+
+ChangeFillAttributesRes__errorCodes_template::ChangeFillAttributesRes__errorCodes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangeFillAttributesRes__errorCodes_template::ChangeFillAttributesRes__errorCodes_template(const ChangeFillAttributesRes__errorCodes& other_value)
+{
+copy_value(other_value);
+}
+
+ChangeFillAttributesRes__errorCodes_template::ChangeFillAttributesRes__errorCodes_template(const OPTIONAL<ChangeFillAttributesRes__errorCodes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeFillAttributesRes__errorCodes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes from an unbound optional field.");
+}
+}
+
+ChangeFillAttributesRes__errorCodes_template::ChangeFillAttributesRes__errorCodes_template(const ChangeFillAttributesRes__errorCodes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangeFillAttributesRes__errorCodes_template::~ChangeFillAttributesRes__errorCodes_template()
+{
+clean_up();
+}
+
+ChangeFillAttributesRes__errorCodes_template& ChangeFillAttributesRes__errorCodes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangeFillAttributesRes__errorCodes_template& ChangeFillAttributesRes__errorCodes_template::operator=(const ChangeFillAttributesRes__errorCodes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangeFillAttributesRes__errorCodes_template& ChangeFillAttributesRes__errorCodes_template::operator=(const OPTIONAL<ChangeFillAttributesRes__errorCodes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeFillAttributesRes__errorCodes&)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 @IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes.");
+}
+return *this;
+}
+
+ChangeFillAttributesRes__errorCodes_template& ChangeFillAttributesRes__errorCodes_template::operator=(const ChangeFillAttributesRes__errorCodes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangeFillAttributesRes__errorCodes_template::match(const ChangeFillAttributesRes__errorCodes& 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.invalidObjectID().is_bound()) return FALSE;
+if(!single_value->field_invalidObjectID.match(other_value.invalidObjectID(), legacy))return FALSE;
+if(!other_value.invalidType().is_bound()) return FALSE;
+if(!single_value->field_invalidType.match(other_value.invalidType(), legacy))return FALSE;
+if(!other_value.invalidColor().is_bound()) return FALSE;
+if(!single_value->field_invalidColor.match(other_value.invalidColor(), legacy))return FALSE;
+if(!other_value.invalidPatternObjectID().is_bound()) return FALSE;
+if(!single_value->field_invalidPatternObjectID.match(other_value.invalidPatternObjectID(), legacy))return FALSE;
+if(!other_value.anyOtherError().is_bound()) return FALSE;
+if(!single_value->field_anyOtherError.match(other_value.anyOtherError(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes.");
+}
+return FALSE;
+}
+
+boolean ChangeFillAttributesRes__errorCodes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_invalidObjectID.is_bound()
+
+ ||single_value->field_invalidType.is_bound()
+
+ ||single_value->field_invalidColor.is_bound()
+
+ ||single_value->field_invalidPatternObjectID.is_bound()
+
+ ||single_value->field_anyOtherError.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+;
+}
+
+boolean ChangeFillAttributesRes__errorCodes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_invalidObjectID.is_value()
+ &&single_value->field_invalidType.is_value()
+ &&single_value->field_invalidColor.is_value()
+ &&single_value->field_invalidPatternObjectID.is_value()
+ &&single_value->field_anyOtherError.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value();
+}
+
+void ChangeFillAttributesRes__errorCodes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangeFillAttributesRes__errorCodes ChangeFillAttributesRes__errorCodes_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 @IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes.");
+ChangeFillAttributesRes__errorCodes ret_val;
+if (single_value->field_invalidObjectID.is_bound()) {
+ret_val.invalidObjectID() = single_value->field_invalidObjectID.valueof();
+}
+if (single_value->field_invalidType.is_bound()) {
+ret_val.invalidType() = single_value->field_invalidType.valueof();
+}
+if (single_value->field_invalidColor.is_bound()) {
+ret_val.invalidColor() = single_value->field_invalidColor.valueof();
+}
+if (single_value->field_invalidPatternObjectID.is_bound()) {
+ret_val.invalidPatternObjectID() = single_value->field_invalidPatternObjectID.valueof();
+}
+if (single_value->field_anyOtherError.is_bound()) {
+ret_val.anyOtherError() = single_value->field_anyOtherError.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+return ret_val;
+}
+
+void ChangeFillAttributesRes__errorCodes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangeFillAttributesRes__errorCodes_template[list_length];
+}
+
+ChangeFillAttributesRes__errorCodes_template& ChangeFillAttributesRes__errorCodes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& ChangeFillAttributesRes__errorCodes_template::invalidObjectID()
+{
+set_specific();
+return single_value->field_invalidObjectID;
+}
+
+const BOOLEAN_template& ChangeFillAttributesRes__errorCodes_template::invalidObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidObjectID of a non-specific template of type @IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes.");
+return single_value->field_invalidObjectID;
+}
+
+BOOLEAN_template& ChangeFillAttributesRes__errorCodes_template::invalidType()
+{
+set_specific();
+return single_value->field_invalidType;
+}
+
+const BOOLEAN_template& ChangeFillAttributesRes__errorCodes_template::invalidType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidType of a non-specific template of type @IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes.");
+return single_value->field_invalidType;
+}
+
+BOOLEAN_template& ChangeFillAttributesRes__errorCodes_template::invalidColor()
+{
+set_specific();
+return single_value->field_invalidColor;
+}
+
+const BOOLEAN_template& ChangeFillAttributesRes__errorCodes_template::invalidColor() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidColor of a non-specific template of type @IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes.");
+return single_value->field_invalidColor;
+}
+
+BOOLEAN_template& ChangeFillAttributesRes__errorCodes_template::invalidPatternObjectID()
+{
+set_specific();
+return single_value->field_invalidPatternObjectID;
+}
+
+const BOOLEAN_template& ChangeFillAttributesRes__errorCodes_template::invalidPatternObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidPatternObjectID of a non-specific template of type @IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes.");
+return single_value->field_invalidPatternObjectID;
+}
+
+BOOLEAN_template& ChangeFillAttributesRes__errorCodes_template::anyOtherError()
+{
+set_specific();
+return single_value->field_anyOtherError;
+}
+
+const BOOLEAN_template& ChangeFillAttributesRes__errorCodes_template::anyOtherError() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field anyOtherError of a non-specific template of type @IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes.");
+return single_value->field_anyOtherError;
+}
+
+BOOLEAN_template& ChangeFillAttributesRes__errorCodes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const BOOLEAN_template& ChangeFillAttributesRes__errorCodes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes.");
+return single_value->field_reserved5;
+}
+
+BOOLEAN_template& ChangeFillAttributesRes__errorCodes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const BOOLEAN_template& ChangeFillAttributesRes__errorCodes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes.");
+return single_value->field_reserved6;
+}
+
+BOOLEAN_template& ChangeFillAttributesRes__errorCodes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const BOOLEAN_template& ChangeFillAttributesRes__errorCodes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes.");
+return single_value->field_reserved7;
+}
+
+int ChangeFillAttributesRes__errorCodes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes 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 @IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes.");
+  }
+  return 0;
+}
+
+void ChangeFillAttributesRes__errorCodes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ invalidObjectID := ");
+single_value->field_invalidObjectID.log();
+TTCN_Logger::log_event_str(", invalidType := ");
+single_value->field_invalidType.log();
+TTCN_Logger::log_event_str(", invalidColor := ");
+single_value->field_invalidColor.log();
+TTCN_Logger::log_event_str(", invalidPatternObjectID := ");
+single_value->field_invalidPatternObjectID.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangeFillAttributesRes__errorCodes_template::log_match(const ChangeFillAttributesRes__errorCodes& 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_invalidObjectID.match(match_value.invalidObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidObjectID");
+single_value->field_invalidObjectID.log_match(match_value.invalidObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_invalidType.match(match_value.invalidType(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidType");
+single_value->field_invalidType.log_match(match_value.invalidType(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_invalidColor.match(match_value.invalidColor(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidColor");
+single_value->field_invalidColor.log_match(match_value.invalidColor(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_invalidPatternObjectID.match(match_value.invalidPatternObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidPatternObjectID");
+single_value->field_invalidPatternObjectID.log_match(match_value.invalidPatternObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_anyOtherError.match(match_value.anyOtherError(), legacy)){
+TTCN_Logger::log_logmatch_info(".anyOtherError");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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("{ invalidObjectID := ");
+single_value->field_invalidObjectID.log_match(match_value.invalidObjectID(), legacy);
+TTCN_Logger::log_event_str(", invalidType := ");
+single_value->field_invalidType.log_match(match_value.invalidType(), legacy);
+TTCN_Logger::log_event_str(", invalidColor := ");
+single_value->field_invalidColor.log_match(match_value.invalidColor(), legacy);
+TTCN_Logger::log_event_str(", invalidPatternObjectID := ");
+single_value->field_invalidPatternObjectID.log_match(match_value.invalidPatternObjectID(), legacy);
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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 ChangeFillAttributesRes__errorCodes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_invalidObjectID.encode_text(text_buf);
+single_value->field_invalidType.encode_text(text_buf);
+single_value->field_invalidColor.encode_text(text_buf);
+single_value->field_invalidPatternObjectID.encode_text(text_buf);
+single_value->field_anyOtherError.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.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 @IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes.");
+}
+}
+
+void ChangeFillAttributesRes__errorCodes_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_invalidObjectID.decode_text(text_buf);
+single_value->field_invalidType.decode_text(text_buf);
+single_value->field_invalidColor.decode_text(text_buf);
+single_value->field_invalidPatternObjectID.decode_text(text_buf);
+single_value->field_anyOtherError.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.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 ChangeFillAttributesRes__errorCodes_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 @IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes.");
+}
+}
+
+void ChangeFillAttributesRes__errorCodes_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: {
+    ChangeFillAttributesRes__errorCodes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes has 8 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) invalidObjectID().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) invalidType().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) invalidColor().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) invalidPatternObjectID().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "invalidObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidObjectID().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(), "invalidType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidType().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(), "invalidColor")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidColor().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(), "invalidPatternObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidPatternObjectID().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangeFillAttributesRes__errorCodes_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_invalidObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes");
+single_value->field_invalidType.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes");
+single_value->field_invalidColor.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes");
+single_value->field_invalidPatternObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes");
+single_value->field_anyOtherError.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes");
+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 : "@IsobusVTMessageTypes.ChangeFillAttributesRes_errorCodes");
+}
+
+boolean ChangeFillAttributesRes__errorCodes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangeFillAttributesRes__errorCodes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangeFillAttributesRes::ChangeFillAttributesRes()
+{
+}
+
+ChangeFillAttributesRes::ChangeFillAttributesRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const ChangeFillAttributesRes__errorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_objectID(par_objectID),
+  field_errorCodes(par_errorCodes),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+ChangeFillAttributesRes::ChangeFillAttributesRes(const ChangeFillAttributesRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangeFillAttributesRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+else field_objectID.clean_up();
+if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+else field_errorCodes.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void ChangeFillAttributesRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectID.clean_up();
+field_errorCodes.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangeFillAttributesRes::get_descriptor() const { return &ChangeFillAttributesRes_descr_; }
+ChangeFillAttributesRes& ChangeFillAttributesRes::operator=(const ChangeFillAttributesRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangeFillAttributesRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+  else field_objectID.clean_up();
+  if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+  else field_errorCodes.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean ChangeFillAttributesRes::operator==(const ChangeFillAttributesRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectID==other_value.field_objectID
+  && field_errorCodes==other_value.field_errorCodes
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean ChangeFillAttributesRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectID.is_bound())
+  || (field_errorCodes.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean ChangeFillAttributesRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectID.is_value()
+  && field_errorCodes.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void ChangeFillAttributesRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+field_objectID.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangeFillAttributesRes::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 @IsobusVTMessageTypes.ChangeFillAttributesRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangeFillAttributesRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangeFillAttributesRes");
+  }
+}
+
+void ChangeFillAttributesRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectID().is_bound()) objectID().set_implicit_omit();
+if (errorCodes().is_bound()) errorCodes().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void ChangeFillAttributesRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectID.encode_text(text_buf);
+field_errorCodes.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void ChangeFillAttributesRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectID.decode_text(text_buf);
+field_errorCodes.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void ChangeFillAttributesRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangeFillAttributesRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangeFillAttributesRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectID.RAW_decode(ValidObjectID_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, ChangeFillAttributesRes__errorCodes_descr_.raw->forceomit);
+  decoded_field_length = field_errorCodes.RAW_decode(ChangeFillAttributesRes__errorCodes_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, ChangeFillAttributesRes_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(ChangeFillAttributesRes_reserved5_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, ChangeFillAttributesRes_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(ChangeFillAttributesRes_reserved6_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, ChangeFillAttributesRes_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(ChangeFillAttributesRes_reserved7_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, ChangeFillAttributesRes_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(ChangeFillAttributesRes_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ChangeFillAttributesRes::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ChangeFillAttributesRes__errorCodes_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, ChangeFillAttributesRes_reserved5_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, ChangeFillAttributesRes_reserved6_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, ChangeFillAttributesRes_reserved7_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, ChangeFillAttributesRes_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_errorCodes.RAW_encode(ChangeFillAttributesRes__errorCodes_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved5.RAW_encode(ChangeFillAttributesRes_reserved5_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved6.RAW_encode(ChangeFillAttributesRes_reserved6_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved7.RAW_encode(ChangeFillAttributesRes_reserved7_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved8.RAW_encode(ChangeFillAttributesRes_reserved8_descr_, *myleaf.body.node.nodes[6]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangeFillAttributesRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectID;
+ChangeFillAttributesRes__errorCodes_template field_errorCodes;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void ChangeFillAttributesRes_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_vtfunction = ANY_VALUE;
+single_value->field_objectID = ANY_VALUE;
+single_value->field_errorCodes = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void ChangeFillAttributesRes_template::copy_value(const ChangeFillAttributesRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectID().is_bound()) {
+  single_value->field_objectID = other_value.objectID();
+} else {
+  single_value->field_objectID.clean_up();
+}
+if (other_value.errorCodes().is_bound()) {
+  single_value->field_errorCodes = other_value.errorCodes();
+} else {
+  single_value->field_errorCodes.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangeFillAttributesRes_template::copy_template(const ChangeFillAttributesRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectID().get_selection()) {
+single_value->field_objectID = other_value.objectID();
+} else {
+single_value->field_objectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.errorCodes().get_selection()) {
+single_value->field_errorCodes = other_value.errorCodes();
+} else {
+single_value->field_errorCodes.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangeFillAttributesRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeFillAttributesRes.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangeFillAttributesRes_template::ChangeFillAttributesRes_template()
+{
+}
+
+ChangeFillAttributesRes_template::ChangeFillAttributesRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangeFillAttributesRes_template::ChangeFillAttributesRes_template(const ChangeFillAttributesRes& other_value)
+{
+copy_value(other_value);
+}
+
+ChangeFillAttributesRes_template::ChangeFillAttributesRes_template(const OPTIONAL<ChangeFillAttributesRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeFillAttributesRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangeFillAttributesRes from an unbound optional field.");
+}
+}
+
+ChangeFillAttributesRes_template::ChangeFillAttributesRes_template(const ChangeFillAttributesRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangeFillAttributesRes_template::~ChangeFillAttributesRes_template()
+{
+clean_up();
+}
+
+ChangeFillAttributesRes_template& ChangeFillAttributesRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangeFillAttributesRes_template& ChangeFillAttributesRes_template::operator=(const ChangeFillAttributesRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangeFillAttributesRes_template& ChangeFillAttributesRes_template::operator=(const OPTIONAL<ChangeFillAttributesRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeFillAttributesRes&)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 @IsobusVTMessageTypes.ChangeFillAttributesRes.");
+}
+return *this;
+}
+
+ChangeFillAttributesRes_template& ChangeFillAttributesRes_template::operator=(const ChangeFillAttributesRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangeFillAttributesRes_template::match(const ChangeFillAttributesRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectID().is_bound()) return FALSE;
+if(!single_value->field_objectID.match(other_value.objectID(), legacy))return FALSE;
+if(!other_value.errorCodes().is_bound()) return FALSE;
+if(!single_value->field_errorCodes.match(other_value.errorCodes(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeFillAttributesRes.");
+}
+return FALSE;
+}
+
+boolean ChangeFillAttributesRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectID.is_bound()
+
+ ||single_value->field_errorCodes.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean ChangeFillAttributesRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectID.is_value()
+ &&single_value->field_errorCodes.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void ChangeFillAttributesRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangeFillAttributesRes ChangeFillAttributesRes_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 @IsobusVTMessageTypes.ChangeFillAttributesRes.");
+ChangeFillAttributesRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectID.is_bound()) {
+ret_val.objectID() = single_value->field_objectID.valueof();
+}
+if (single_value->field_errorCodes.is_bound()) {
+ret_val.errorCodes() = single_value->field_errorCodes.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void ChangeFillAttributesRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangeFillAttributesRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangeFillAttributesRes_template[list_length];
+}
+
+ChangeFillAttributesRes_template& ChangeFillAttributesRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangeFillAttributesRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangeFillAttributesRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ChangeFillAttributesRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ChangeFillAttributesRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ChangeFillAttributesRes.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& ChangeFillAttributesRes_template::objectID()
+{
+set_specific();
+return single_value->field_objectID;
+}
+
+const INTEGER_template& ChangeFillAttributesRes_template::objectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectID of a non-specific template of type @IsobusVTMessageTypes.ChangeFillAttributesRes.");
+return single_value->field_objectID;
+}
+
+ChangeFillAttributesRes__errorCodes_template& ChangeFillAttributesRes_template::errorCodes()
+{
+set_specific();
+return single_value->field_errorCodes;
+}
+
+const ChangeFillAttributesRes__errorCodes_template& ChangeFillAttributesRes_template::errorCodes() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field errorCodes of a non-specific template of type @IsobusVTMessageTypes.ChangeFillAttributesRes.");
+return single_value->field_errorCodes;
+}
+
+OCTETSTRING_template& ChangeFillAttributesRes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& ChangeFillAttributesRes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.ChangeFillAttributesRes.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& ChangeFillAttributesRes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& ChangeFillAttributesRes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.ChangeFillAttributesRes.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& ChangeFillAttributesRes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& ChangeFillAttributesRes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ChangeFillAttributesRes.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& ChangeFillAttributesRes_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& ChangeFillAttributesRes_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.ChangeFillAttributesRes.");
+return single_value->field_reserved8;
+}
+
+int ChangeFillAttributesRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeFillAttributesRes 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 @IsobusVTMessageTypes.ChangeFillAttributesRes 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 @IsobusVTMessageTypes.ChangeFillAttributesRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeFillAttributesRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeFillAttributesRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeFillAttributesRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeFillAttributesRes.");
+  }
+  return 0;
+}
+
+void ChangeFillAttributesRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangeFillAttributesRes_template::log_match(const ChangeFillAttributesRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectID.match(match_value.objectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectID");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_errorCodes.match(match_value.errorCodes(), legacy)){
+TTCN_Logger::log_logmatch_info(".errorCodes");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 ChangeFillAttributesRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectID.encode_text(text_buf);
+single_value->field_errorCodes.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.ChangeFillAttributesRes.");
+}
+}
+
+void ChangeFillAttributesRes_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_vtfunction.decode_text(text_buf);
+single_value->field_objectID.decode_text(text_buf);
+single_value->field_errorCodes.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 ChangeFillAttributesRes_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 @IsobusVTMessageTypes.ChangeFillAttributesRes.");
+}
+}
+
+void ChangeFillAttributesRes_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: {
+    ChangeFillAttributesRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.ChangeFillAttributesRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangeFillAttributesRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangeFillAttributesRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangeFillAttributesRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeFillAttributesRes");
+single_value->field_objectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeFillAttributesRes");
+single_value->field_errorCodes.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeFillAttributesRes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeFillAttributesRes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeFillAttributesRes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeFillAttributesRes");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeFillAttributesRes");
+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 : "@IsobusVTMessageTypes.ChangeFillAttributesRes");
+}
+
+boolean ChangeFillAttributesRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangeFillAttributesRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangeFillAttributesReq::ChangeFillAttributesReq()
+{
+}
+
+ChangeFillAttributesReq::ChangeFillAttributesReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_ObjectIDofObjectToChange,
+    const INTEGER& par_lineColour,
+    const INTEGER& par_lineWidth,
+    const BITSTRING& par_lineArt,
+    const INTEGER& par_fillPatternObjectID,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_ObjectIDofObjectToChange(par_ObjectIDofObjectToChange),
+  field_lineColour(par_lineColour),
+  field_lineWidth(par_lineWidth),
+  field_lineArt(par_lineArt),
+  field_fillPatternObjectID(par_fillPatternObjectID),
+  field_reserved8(par_reserved8)
+{
+}
+
+ChangeFillAttributesReq::ChangeFillAttributesReq(const ChangeFillAttributesReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangeFillAttributesReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.ObjectIDofObjectToChange().is_bound()) field_ObjectIDofObjectToChange = other_value.ObjectIDofObjectToChange();
+else field_ObjectIDofObjectToChange.clean_up();
+if (other_value.lineColour().is_bound()) field_lineColour = other_value.lineColour();
+else field_lineColour.clean_up();
+if (other_value.lineWidth().is_bound()) field_lineWidth = other_value.lineWidth();
+else field_lineWidth.clean_up();
+if (other_value.lineArt().is_bound()) field_lineArt = other_value.lineArt();
+else field_lineArt.clean_up();
+if (other_value.fillPatternObjectID().is_bound()) field_fillPatternObjectID = other_value.fillPatternObjectID();
+else field_fillPatternObjectID.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void ChangeFillAttributesReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_ObjectIDofObjectToChange.clean_up();
+field_lineColour.clean_up();
+field_lineWidth.clean_up();
+field_lineArt.clean_up();
+field_fillPatternObjectID.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangeFillAttributesReq::get_descriptor() const { return &ChangeFillAttributesReq_descr_; }
+ChangeFillAttributesReq& ChangeFillAttributesReq::operator=(const ChangeFillAttributesReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangeFillAttributesReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.ObjectIDofObjectToChange().is_bound()) field_ObjectIDofObjectToChange = other_value.ObjectIDofObjectToChange();
+  else field_ObjectIDofObjectToChange.clean_up();
+  if (other_value.lineColour().is_bound()) field_lineColour = other_value.lineColour();
+  else field_lineColour.clean_up();
+  if (other_value.lineWidth().is_bound()) field_lineWidth = other_value.lineWidth();
+  else field_lineWidth.clean_up();
+  if (other_value.lineArt().is_bound()) field_lineArt = other_value.lineArt();
+  else field_lineArt.clean_up();
+  if (other_value.fillPatternObjectID().is_bound()) field_fillPatternObjectID = other_value.fillPatternObjectID();
+  else field_fillPatternObjectID.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean ChangeFillAttributesReq::operator==(const ChangeFillAttributesReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_ObjectIDofObjectToChange==other_value.field_ObjectIDofObjectToChange
+  && field_lineColour==other_value.field_lineColour
+  && field_lineWidth==other_value.field_lineWidth
+  && field_lineArt==other_value.field_lineArt
+  && field_fillPatternObjectID==other_value.field_fillPatternObjectID
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean ChangeFillAttributesReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_ObjectIDofObjectToChange.is_bound())
+  || (field_lineColour.is_bound())
+  || (field_lineWidth.is_bound())
+  || (field_lineArt.is_bound())
+  || (field_fillPatternObjectID.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean ChangeFillAttributesReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_ObjectIDofObjectToChange.is_value()
+  && field_lineColour.is_value()
+  && field_lineWidth.is_value()
+  && field_lineArt.is_value()
+  && field_fillPatternObjectID.is_value()
+  && field_reserved8.is_value();
+}
+void ChangeFillAttributesReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", ObjectIDofObjectToChange := ");
+field_ObjectIDofObjectToChange.log();
+TTCN_Logger::log_event_str(", lineColour := ");
+field_lineColour.log();
+TTCN_Logger::log_event_str(", lineWidth := ");
+field_lineWidth.log();
+TTCN_Logger::log_event_str(", lineArt := ");
+field_lineArt.log();
+TTCN_Logger::log_event_str(", fillPatternObjectID := ");
+field_fillPatternObjectID.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangeFillAttributesReq::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 @IsobusVTMessageTypes.ChangeFillAttributesReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ObjectIDofObjectToChange().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) lineColour().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) lineWidth().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) lineArt().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) fillPatternObjectID().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "ObjectIDofObjectToChange")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ObjectIDofObjectToChange().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(), "lineColour")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          lineColour().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(), "lineWidth")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          lineWidth().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(), "lineArt")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          lineArt().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(), "fillPatternObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          fillPatternObjectID().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangeFillAttributesReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangeFillAttributesReq");
+  }
+}
+
+void ChangeFillAttributesReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (ObjectIDofObjectToChange().is_bound()) ObjectIDofObjectToChange().set_implicit_omit();
+if (lineColour().is_bound()) lineColour().set_implicit_omit();
+if (lineWidth().is_bound()) lineWidth().set_implicit_omit();
+if (lineArt().is_bound()) lineArt().set_implicit_omit();
+if (fillPatternObjectID().is_bound()) fillPatternObjectID().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void ChangeFillAttributesReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_ObjectIDofObjectToChange.encode_text(text_buf);
+field_lineColour.encode_text(text_buf);
+field_lineWidth.encode_text(text_buf);
+field_lineArt.encode_text(text_buf);
+field_fillPatternObjectID.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void ChangeFillAttributesReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_ObjectIDofObjectToChange.decode_text(text_buf);
+field_lineColour.decode_text(text_buf);
+field_lineWidth.decode_text(text_buf);
+field_lineArt.decode_text(text_buf);
+field_fillPatternObjectID.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void ChangeFillAttributesReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangeFillAttributesReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangeFillAttributesReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_ObjectIDofObjectToChange.RAW_decode(ValidObjectID_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, ColorType_descr_.raw->forceomit);
+  decoded_field_length = field_lineColour.RAW_decode(ColorType_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, LineWidth_descr_.raw->forceomit);
+  decoded_field_length = field_lineWidth.RAW_decode(LineWidth_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, LineArt_descr_.raw->forceomit);
+  decoded_field_length = field_lineArt.RAW_decode(LineArt_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_fillPatternObjectID.RAW_decode(ValidObjectID_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, ChangeFillAttributesReq_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(ChangeFillAttributesReq_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ChangeFillAttributesReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ColorType_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, LineWidth_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, LineArt_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, ChangeFillAttributesReq_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_ObjectIDofObjectToChange.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_lineColour.RAW_encode(ColorType_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_lineWidth.RAW_encode(LineWidth_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_lineArt.RAW_encode(LineArt_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_fillPatternObjectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved8.RAW_encode(ChangeFillAttributesReq_reserved8_descr_, *myleaf.body.node.nodes[6]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangeFillAttributesReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_ObjectIDofObjectToChange;
+INTEGER_template field_lineColour;
+INTEGER_template field_lineWidth;
+BITSTRING_template field_lineArt;
+INTEGER_template field_fillPatternObjectID;
+OCTETSTRING_template field_reserved8;
+};
+
+void ChangeFillAttributesReq_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_vtfunction = ANY_VALUE;
+single_value->field_ObjectIDofObjectToChange = ANY_VALUE;
+single_value->field_lineColour = ANY_VALUE;
+single_value->field_lineWidth = ANY_VALUE;
+single_value->field_lineArt = ANY_VALUE;
+single_value->field_fillPatternObjectID = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void ChangeFillAttributesReq_template::copy_value(const ChangeFillAttributesReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.ObjectIDofObjectToChange().is_bound()) {
+  single_value->field_ObjectIDofObjectToChange = other_value.ObjectIDofObjectToChange();
+} else {
+  single_value->field_ObjectIDofObjectToChange.clean_up();
+}
+if (other_value.lineColour().is_bound()) {
+  single_value->field_lineColour = other_value.lineColour();
+} else {
+  single_value->field_lineColour.clean_up();
+}
+if (other_value.lineWidth().is_bound()) {
+  single_value->field_lineWidth = other_value.lineWidth();
+} else {
+  single_value->field_lineWidth.clean_up();
+}
+if (other_value.lineArt().is_bound()) {
+  single_value->field_lineArt = other_value.lineArt();
+} else {
+  single_value->field_lineArt.clean_up();
+}
+if (other_value.fillPatternObjectID().is_bound()) {
+  single_value->field_fillPatternObjectID = other_value.fillPatternObjectID();
+} else {
+  single_value->field_fillPatternObjectID.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangeFillAttributesReq_template::copy_template(const ChangeFillAttributesReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.ObjectIDofObjectToChange().get_selection()) {
+single_value->field_ObjectIDofObjectToChange = other_value.ObjectIDofObjectToChange();
+} else {
+single_value->field_ObjectIDofObjectToChange.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.lineColour().get_selection()) {
+single_value->field_lineColour = other_value.lineColour();
+} else {
+single_value->field_lineColour.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.lineWidth().get_selection()) {
+single_value->field_lineWidth = other_value.lineWidth();
+} else {
+single_value->field_lineWidth.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.lineArt().get_selection()) {
+single_value->field_lineArt = other_value.lineArt();
+} else {
+single_value->field_lineArt.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.fillPatternObjectID().get_selection()) {
+single_value->field_fillPatternObjectID = other_value.fillPatternObjectID();
+} else {
+single_value->field_fillPatternObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangeFillAttributesReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeFillAttributesReq.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangeFillAttributesReq_template::ChangeFillAttributesReq_template()
+{
+}
+
+ChangeFillAttributesReq_template::ChangeFillAttributesReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangeFillAttributesReq_template::ChangeFillAttributesReq_template(const ChangeFillAttributesReq& other_value)
+{
+copy_value(other_value);
+}
+
+ChangeFillAttributesReq_template::ChangeFillAttributesReq_template(const OPTIONAL<ChangeFillAttributesReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeFillAttributesReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangeFillAttributesReq from an unbound optional field.");
+}
+}
+
+ChangeFillAttributesReq_template::ChangeFillAttributesReq_template(const ChangeFillAttributesReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangeFillAttributesReq_template::~ChangeFillAttributesReq_template()
+{
+clean_up();
+}
+
+ChangeFillAttributesReq_template& ChangeFillAttributesReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangeFillAttributesReq_template& ChangeFillAttributesReq_template::operator=(const ChangeFillAttributesReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangeFillAttributesReq_template& ChangeFillAttributesReq_template::operator=(const OPTIONAL<ChangeFillAttributesReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeFillAttributesReq&)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 @IsobusVTMessageTypes.ChangeFillAttributesReq.");
+}
+return *this;
+}
+
+ChangeFillAttributesReq_template& ChangeFillAttributesReq_template::operator=(const ChangeFillAttributesReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangeFillAttributesReq_template::match(const ChangeFillAttributesReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.ObjectIDofObjectToChange().is_bound()) return FALSE;
+if(!single_value->field_ObjectIDofObjectToChange.match(other_value.ObjectIDofObjectToChange(), legacy))return FALSE;
+if(!other_value.lineColour().is_bound()) return FALSE;
+if(!single_value->field_lineColour.match(other_value.lineColour(), legacy))return FALSE;
+if(!other_value.lineWidth().is_bound()) return FALSE;
+if(!single_value->field_lineWidth.match(other_value.lineWidth(), legacy))return FALSE;
+if(!other_value.lineArt().is_bound()) return FALSE;
+if(!single_value->field_lineArt.match(other_value.lineArt(), legacy))return FALSE;
+if(!other_value.fillPatternObjectID().is_bound()) return FALSE;
+if(!single_value->field_fillPatternObjectID.match(other_value.fillPatternObjectID(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeFillAttributesReq.");
+}
+return FALSE;
+}
+
+boolean ChangeFillAttributesReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_ObjectIDofObjectToChange.is_bound()
+
+ ||single_value->field_lineColour.is_bound()
+
+ ||single_value->field_lineWidth.is_bound()
+
+ ||single_value->field_lineArt.is_bound()
+
+ ||single_value->field_fillPatternObjectID.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean ChangeFillAttributesReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_ObjectIDofObjectToChange.is_value()
+ &&single_value->field_lineColour.is_value()
+ &&single_value->field_lineWidth.is_value()
+ &&single_value->field_lineArt.is_value()
+ &&single_value->field_fillPatternObjectID.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void ChangeFillAttributesReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangeFillAttributesReq ChangeFillAttributesReq_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 @IsobusVTMessageTypes.ChangeFillAttributesReq.");
+ChangeFillAttributesReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_ObjectIDofObjectToChange.is_bound()) {
+ret_val.ObjectIDofObjectToChange() = single_value->field_ObjectIDofObjectToChange.valueof();
+}
+if (single_value->field_lineColour.is_bound()) {
+ret_val.lineColour() = single_value->field_lineColour.valueof();
+}
+if (single_value->field_lineWidth.is_bound()) {
+ret_val.lineWidth() = single_value->field_lineWidth.valueof();
+}
+if (single_value->field_lineArt.is_bound()) {
+ret_val.lineArt() = single_value->field_lineArt.valueof();
+}
+if (single_value->field_fillPatternObjectID.is_bound()) {
+ret_val.fillPatternObjectID() = single_value->field_fillPatternObjectID.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void ChangeFillAttributesReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangeFillAttributesReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangeFillAttributesReq_template[list_length];
+}
+
+ChangeFillAttributesReq_template& ChangeFillAttributesReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangeFillAttributesReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangeFillAttributesReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ChangeFillAttributesReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ChangeFillAttributesReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ChangeFillAttributesReq.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& ChangeFillAttributesReq_template::ObjectIDofObjectToChange()
+{
+set_specific();
+return single_value->field_ObjectIDofObjectToChange;
+}
+
+const INTEGER_template& ChangeFillAttributesReq_template::ObjectIDofObjectToChange() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field ObjectIDofObjectToChange of a non-specific template of type @IsobusVTMessageTypes.ChangeFillAttributesReq.");
+return single_value->field_ObjectIDofObjectToChange;
+}
+
+INTEGER_template& ChangeFillAttributesReq_template::lineColour()
+{
+set_specific();
+return single_value->field_lineColour;
+}
+
+const INTEGER_template& ChangeFillAttributesReq_template::lineColour() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field lineColour of a non-specific template of type @IsobusVTMessageTypes.ChangeFillAttributesReq.");
+return single_value->field_lineColour;
+}
+
+INTEGER_template& ChangeFillAttributesReq_template::lineWidth()
+{
+set_specific();
+return single_value->field_lineWidth;
+}
+
+const INTEGER_template& ChangeFillAttributesReq_template::lineWidth() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field lineWidth of a non-specific template of type @IsobusVTMessageTypes.ChangeFillAttributesReq.");
+return single_value->field_lineWidth;
+}
+
+BITSTRING_template& ChangeFillAttributesReq_template::lineArt()
+{
+set_specific();
+return single_value->field_lineArt;
+}
+
+const BITSTRING_template& ChangeFillAttributesReq_template::lineArt() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field lineArt of a non-specific template of type @IsobusVTMessageTypes.ChangeFillAttributesReq.");
+return single_value->field_lineArt;
+}
+
+INTEGER_template& ChangeFillAttributesReq_template::fillPatternObjectID()
+{
+set_specific();
+return single_value->field_fillPatternObjectID;
+}
+
+const INTEGER_template& ChangeFillAttributesReq_template::fillPatternObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field fillPatternObjectID of a non-specific template of type @IsobusVTMessageTypes.ChangeFillAttributesReq.");
+return single_value->field_fillPatternObjectID;
+}
+
+OCTETSTRING_template& ChangeFillAttributesReq_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& ChangeFillAttributesReq_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.ChangeFillAttributesReq.");
+return single_value->field_reserved8;
+}
+
+int ChangeFillAttributesReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeFillAttributesReq 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 @IsobusVTMessageTypes.ChangeFillAttributesReq 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 @IsobusVTMessageTypes.ChangeFillAttributesReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeFillAttributesReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeFillAttributesReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeFillAttributesReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeFillAttributesReq.");
+  }
+  return 0;
+}
+
+void ChangeFillAttributesReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", ObjectIDofObjectToChange := ");
+single_value->field_ObjectIDofObjectToChange.log();
+TTCN_Logger::log_event_str(", lineColour := ");
+single_value->field_lineColour.log();
+TTCN_Logger::log_event_str(", lineWidth := ");
+single_value->field_lineWidth.log();
+TTCN_Logger::log_event_str(", lineArt := ");
+single_value->field_lineArt.log();
+TTCN_Logger::log_event_str(", fillPatternObjectID := ");
+single_value->field_fillPatternObjectID.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangeFillAttributesReq_template::log_match(const ChangeFillAttributesReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_ObjectIDofObjectToChange.match(match_value.ObjectIDofObjectToChange(), legacy)){
+TTCN_Logger::log_logmatch_info(".ObjectIDofObjectToChange");
+single_value->field_ObjectIDofObjectToChange.log_match(match_value.ObjectIDofObjectToChange(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_lineColour.match(match_value.lineColour(), legacy)){
+TTCN_Logger::log_logmatch_info(".lineColour");
+single_value->field_lineColour.log_match(match_value.lineColour(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_lineWidth.match(match_value.lineWidth(), legacy)){
+TTCN_Logger::log_logmatch_info(".lineWidth");
+single_value->field_lineWidth.log_match(match_value.lineWidth(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_lineArt.match(match_value.lineArt(), legacy)){
+TTCN_Logger::log_logmatch_info(".lineArt");
+single_value->field_lineArt.log_match(match_value.lineArt(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_fillPatternObjectID.match(match_value.fillPatternObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".fillPatternObjectID");
+single_value->field_fillPatternObjectID.log_match(match_value.fillPatternObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", ObjectIDofObjectToChange := ");
+single_value->field_ObjectIDofObjectToChange.log_match(match_value.ObjectIDofObjectToChange(), legacy);
+TTCN_Logger::log_event_str(", lineColour := ");
+single_value->field_lineColour.log_match(match_value.lineColour(), legacy);
+TTCN_Logger::log_event_str(", lineWidth := ");
+single_value->field_lineWidth.log_match(match_value.lineWidth(), legacy);
+TTCN_Logger::log_event_str(", lineArt := ");
+single_value->field_lineArt.log_match(match_value.lineArt(), legacy);
+TTCN_Logger::log_event_str(", fillPatternObjectID := ");
+single_value->field_fillPatternObjectID.log_match(match_value.fillPatternObjectID(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 ChangeFillAttributesReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_ObjectIDofObjectToChange.encode_text(text_buf);
+single_value->field_lineColour.encode_text(text_buf);
+single_value->field_lineWidth.encode_text(text_buf);
+single_value->field_lineArt.encode_text(text_buf);
+single_value->field_fillPatternObjectID.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.ChangeFillAttributesReq.");
+}
+}
+
+void ChangeFillAttributesReq_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_vtfunction.decode_text(text_buf);
+single_value->field_ObjectIDofObjectToChange.decode_text(text_buf);
+single_value->field_lineColour.decode_text(text_buf);
+single_value->field_lineWidth.decode_text(text_buf);
+single_value->field_lineArt.decode_text(text_buf);
+single_value->field_fillPatternObjectID.decode_text(text_buf);
+single_value->field_reserved8.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 ChangeFillAttributesReq_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 @IsobusVTMessageTypes.ChangeFillAttributesReq.");
+}
+}
+
+void ChangeFillAttributesReq_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: {
+    ChangeFillAttributesReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.ChangeFillAttributesReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ObjectIDofObjectToChange().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) lineColour().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) lineWidth().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) lineArt().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) fillPatternObjectID().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "ObjectIDofObjectToChange")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ObjectIDofObjectToChange().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(), "lineColour")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          lineColour().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(), "lineWidth")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          lineWidth().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(), "lineArt")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          lineArt().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(), "fillPatternObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          fillPatternObjectID().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangeFillAttributesReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangeFillAttributesReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangeFillAttributesReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeFillAttributesReq");
+single_value->field_ObjectIDofObjectToChange.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeFillAttributesReq");
+single_value->field_lineColour.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeFillAttributesReq");
+single_value->field_lineWidth.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeFillAttributesReq");
+single_value->field_lineArt.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeFillAttributesReq");
+single_value->field_fillPatternObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeFillAttributesReq");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeFillAttributesReq");
+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 : "@IsobusVTMessageTypes.ChangeFillAttributesReq");
+}
+
+boolean ChangeFillAttributesReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangeFillAttributesReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangeActiveMaskReq::ChangeActiveMaskReq()
+{
+}
+
+ChangeActiveMaskReq::ChangeActiveMaskReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_workingSetObjectID,
+    const INTEGER& par_newActiveMaskObjectID,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_workingSetObjectID(par_workingSetObjectID),
+  field_newActiveMaskObjectID(par_newActiveMaskObjectID),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+ChangeActiveMaskReq::ChangeActiveMaskReq(const ChangeActiveMaskReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangeActiveMaskReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.workingSetObjectID().is_bound()) field_workingSetObjectID = other_value.workingSetObjectID();
+else field_workingSetObjectID.clean_up();
+if (other_value.newActiveMaskObjectID().is_bound()) field_newActiveMaskObjectID = other_value.newActiveMaskObjectID();
+else field_newActiveMaskObjectID.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void ChangeActiveMaskReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_workingSetObjectID.clean_up();
+field_newActiveMaskObjectID.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangeActiveMaskReq::get_descriptor() const { return &ChangeActiveMaskReq_descr_; }
+ChangeActiveMaskReq& ChangeActiveMaskReq::operator=(const ChangeActiveMaskReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangeActiveMaskReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.workingSetObjectID().is_bound()) field_workingSetObjectID = other_value.workingSetObjectID();
+  else field_workingSetObjectID.clean_up();
+  if (other_value.newActiveMaskObjectID().is_bound()) field_newActiveMaskObjectID = other_value.newActiveMaskObjectID();
+  else field_newActiveMaskObjectID.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean ChangeActiveMaskReq::operator==(const ChangeActiveMaskReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_workingSetObjectID==other_value.field_workingSetObjectID
+  && field_newActiveMaskObjectID==other_value.field_newActiveMaskObjectID
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean ChangeActiveMaskReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_workingSetObjectID.is_bound())
+  || (field_newActiveMaskObjectID.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean ChangeActiveMaskReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_workingSetObjectID.is_value()
+  && field_newActiveMaskObjectID.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void ChangeActiveMaskReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", workingSetObjectID := ");
+field_workingSetObjectID.log();
+TTCN_Logger::log_event_str(", newActiveMaskObjectID := ");
+field_newActiveMaskObjectID.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangeActiveMaskReq::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 @IsobusVTMessageTypes.ChangeActiveMaskReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) workingSetObjectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) newActiveMaskObjectID().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "workingSetObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          workingSetObjectID().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(), "newActiveMaskObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          newActiveMaskObjectID().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangeActiveMaskReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangeActiveMaskReq");
+  }
+}
+
+void ChangeActiveMaskReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (workingSetObjectID().is_bound()) workingSetObjectID().set_implicit_omit();
+if (newActiveMaskObjectID().is_bound()) newActiveMaskObjectID().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void ChangeActiveMaskReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_workingSetObjectID.encode_text(text_buf);
+field_newActiveMaskObjectID.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void ChangeActiveMaskReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_workingSetObjectID.decode_text(text_buf);
+field_newActiveMaskObjectID.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void ChangeActiveMaskReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangeActiveMaskReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangeActiveMaskReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_workingSetObjectID.RAW_decode(ValidObjectID_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_newActiveMaskObjectID.RAW_decode(ValidObjectID_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, ChangeActiveMaskReq_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(ChangeActiveMaskReq_reserved6_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, ChangeActiveMaskReq_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(ChangeActiveMaskReq_reserved7_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, ChangeActiveMaskReq_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(ChangeActiveMaskReq_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ChangeActiveMaskReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, ChangeActiveMaskReq_reserved6_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, ChangeActiveMaskReq_reserved7_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, ChangeActiveMaskReq_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_workingSetObjectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_newActiveMaskObjectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved6.RAW_encode(ChangeActiveMaskReq_reserved6_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved7.RAW_encode(ChangeActiveMaskReq_reserved7_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved8.RAW_encode(ChangeActiveMaskReq_reserved8_descr_, *myleaf.body.node.nodes[5]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangeActiveMaskReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_workingSetObjectID;
+INTEGER_template field_newActiveMaskObjectID;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void ChangeActiveMaskReq_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_vtfunction = ANY_VALUE;
+single_value->field_workingSetObjectID = ANY_VALUE;
+single_value->field_newActiveMaskObjectID = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void ChangeActiveMaskReq_template::copy_value(const ChangeActiveMaskReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.workingSetObjectID().is_bound()) {
+  single_value->field_workingSetObjectID = other_value.workingSetObjectID();
+} else {
+  single_value->field_workingSetObjectID.clean_up();
+}
+if (other_value.newActiveMaskObjectID().is_bound()) {
+  single_value->field_newActiveMaskObjectID = other_value.newActiveMaskObjectID();
+} else {
+  single_value->field_newActiveMaskObjectID.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangeActiveMaskReq_template::copy_template(const ChangeActiveMaskReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.workingSetObjectID().get_selection()) {
+single_value->field_workingSetObjectID = other_value.workingSetObjectID();
+} else {
+single_value->field_workingSetObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.newActiveMaskObjectID().get_selection()) {
+single_value->field_newActiveMaskObjectID = other_value.newActiveMaskObjectID();
+} else {
+single_value->field_newActiveMaskObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangeActiveMaskReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeActiveMaskReq.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangeActiveMaskReq_template::ChangeActiveMaskReq_template()
+{
+}
+
+ChangeActiveMaskReq_template::ChangeActiveMaskReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangeActiveMaskReq_template::ChangeActiveMaskReq_template(const ChangeActiveMaskReq& other_value)
+{
+copy_value(other_value);
+}
+
+ChangeActiveMaskReq_template::ChangeActiveMaskReq_template(const OPTIONAL<ChangeActiveMaskReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeActiveMaskReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangeActiveMaskReq from an unbound optional field.");
+}
+}
+
+ChangeActiveMaskReq_template::ChangeActiveMaskReq_template(const ChangeActiveMaskReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangeActiveMaskReq_template::~ChangeActiveMaskReq_template()
+{
+clean_up();
+}
+
+ChangeActiveMaskReq_template& ChangeActiveMaskReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangeActiveMaskReq_template& ChangeActiveMaskReq_template::operator=(const ChangeActiveMaskReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangeActiveMaskReq_template& ChangeActiveMaskReq_template::operator=(const OPTIONAL<ChangeActiveMaskReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeActiveMaskReq&)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 @IsobusVTMessageTypes.ChangeActiveMaskReq.");
+}
+return *this;
+}
+
+ChangeActiveMaskReq_template& ChangeActiveMaskReq_template::operator=(const ChangeActiveMaskReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangeActiveMaskReq_template::match(const ChangeActiveMaskReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.workingSetObjectID().is_bound()) return FALSE;
+if(!single_value->field_workingSetObjectID.match(other_value.workingSetObjectID(), legacy))return FALSE;
+if(!other_value.newActiveMaskObjectID().is_bound()) return FALSE;
+if(!single_value->field_newActiveMaskObjectID.match(other_value.newActiveMaskObjectID(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeActiveMaskReq.");
+}
+return FALSE;
+}
+
+boolean ChangeActiveMaskReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_workingSetObjectID.is_bound()
+
+ ||single_value->field_newActiveMaskObjectID.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean ChangeActiveMaskReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_workingSetObjectID.is_value()
+ &&single_value->field_newActiveMaskObjectID.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void ChangeActiveMaskReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangeActiveMaskReq ChangeActiveMaskReq_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 @IsobusVTMessageTypes.ChangeActiveMaskReq.");
+ChangeActiveMaskReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_workingSetObjectID.is_bound()) {
+ret_val.workingSetObjectID() = single_value->field_workingSetObjectID.valueof();
+}
+if (single_value->field_newActiveMaskObjectID.is_bound()) {
+ret_val.newActiveMaskObjectID() = single_value->field_newActiveMaskObjectID.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void ChangeActiveMaskReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangeActiveMaskReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangeActiveMaskReq_template[list_length];
+}
+
+ChangeActiveMaskReq_template& ChangeActiveMaskReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangeActiveMaskReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangeActiveMaskReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ChangeActiveMaskReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ChangeActiveMaskReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ChangeActiveMaskReq.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& ChangeActiveMaskReq_template::workingSetObjectID()
+{
+set_specific();
+return single_value->field_workingSetObjectID;
+}
+
+const INTEGER_template& ChangeActiveMaskReq_template::workingSetObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field workingSetObjectID of a non-specific template of type @IsobusVTMessageTypes.ChangeActiveMaskReq.");
+return single_value->field_workingSetObjectID;
+}
+
+INTEGER_template& ChangeActiveMaskReq_template::newActiveMaskObjectID()
+{
+set_specific();
+return single_value->field_newActiveMaskObjectID;
+}
+
+const INTEGER_template& ChangeActiveMaskReq_template::newActiveMaskObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field newActiveMaskObjectID of a non-specific template of type @IsobusVTMessageTypes.ChangeActiveMaskReq.");
+return single_value->field_newActiveMaskObjectID;
+}
+
+OCTETSTRING_template& ChangeActiveMaskReq_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& ChangeActiveMaskReq_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.ChangeActiveMaskReq.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& ChangeActiveMaskReq_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& ChangeActiveMaskReq_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ChangeActiveMaskReq.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& ChangeActiveMaskReq_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& ChangeActiveMaskReq_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.ChangeActiveMaskReq.");
+return single_value->field_reserved8;
+}
+
+int ChangeActiveMaskReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeActiveMaskReq 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 @IsobusVTMessageTypes.ChangeActiveMaskReq 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 @IsobusVTMessageTypes.ChangeActiveMaskReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeActiveMaskReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeActiveMaskReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeActiveMaskReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeActiveMaskReq.");
+  }
+  return 0;
+}
+
+void ChangeActiveMaskReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", workingSetObjectID := ");
+single_value->field_workingSetObjectID.log();
+TTCN_Logger::log_event_str(", newActiveMaskObjectID := ");
+single_value->field_newActiveMaskObjectID.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangeActiveMaskReq_template::log_match(const ChangeActiveMaskReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_workingSetObjectID.match(match_value.workingSetObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".workingSetObjectID");
+single_value->field_workingSetObjectID.log_match(match_value.workingSetObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_newActiveMaskObjectID.match(match_value.newActiveMaskObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".newActiveMaskObjectID");
+single_value->field_newActiveMaskObjectID.log_match(match_value.newActiveMaskObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", workingSetObjectID := ");
+single_value->field_workingSetObjectID.log_match(match_value.workingSetObjectID(), legacy);
+TTCN_Logger::log_event_str(", newActiveMaskObjectID := ");
+single_value->field_newActiveMaskObjectID.log_match(match_value.newActiveMaskObjectID(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 ChangeActiveMaskReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_workingSetObjectID.encode_text(text_buf);
+single_value->field_newActiveMaskObjectID.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.ChangeActiveMaskReq.");
+}
+}
+
+void ChangeActiveMaskReq_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_vtfunction.decode_text(text_buf);
+single_value->field_workingSetObjectID.decode_text(text_buf);
+single_value->field_newActiveMaskObjectID.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 ChangeActiveMaskReq_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 @IsobusVTMessageTypes.ChangeActiveMaskReq.");
+}
+}
+
+void ChangeActiveMaskReq_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: {
+    ChangeActiveMaskReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.ChangeActiveMaskReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) workingSetObjectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) newActiveMaskObjectID().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "workingSetObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          workingSetObjectID().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(), "newActiveMaskObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          newActiveMaskObjectID().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangeActiveMaskReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangeActiveMaskReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangeActiveMaskReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeActiveMaskReq");
+single_value->field_workingSetObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeActiveMaskReq");
+single_value->field_newActiveMaskObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeActiveMaskReq");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeActiveMaskReq");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeActiveMaskReq");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeActiveMaskReq");
+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 : "@IsobusVTMessageTypes.ChangeActiveMaskReq");
+}
+
+boolean ChangeActiveMaskReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangeActiveMaskReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangeActiveMaskRes__errorCodes::ChangeActiveMaskRes__errorCodes()
+{
+}
+
+ChangeActiveMaskRes__errorCodes::ChangeActiveMaskRes__errorCodes(const BOOLEAN& par_invalidWorkingSetObjectID,
+    const BOOLEAN& par_invalidMaskObjectID,
+    const BOOLEAN& par_undefined1,
+    const BOOLEAN& par_undefined2,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7)
+  :   field_invalidWorkingSetObjectID(par_invalidWorkingSetObjectID),
+  field_invalidMaskObjectID(par_invalidMaskObjectID),
+  field_undefined1(par_undefined1),
+  field_undefined2(par_undefined2),
+  field_anyOtherError(par_anyOtherError),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7)
+{
+}
+
+ChangeActiveMaskRes__errorCodes::ChangeActiveMaskRes__errorCodes(const ChangeActiveMaskRes__errorCodes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes.");
+if (other_value.invalidWorkingSetObjectID().is_bound()) field_invalidWorkingSetObjectID = other_value.invalidWorkingSetObjectID();
+else field_invalidWorkingSetObjectID.clean_up();
+if (other_value.invalidMaskObjectID().is_bound()) field_invalidMaskObjectID = other_value.invalidMaskObjectID();
+else field_invalidMaskObjectID.clean_up();
+if (other_value.undefined1().is_bound()) field_undefined1 = other_value.undefined1();
+else field_undefined1.clean_up();
+if (other_value.undefined2().is_bound()) field_undefined2 = other_value.undefined2();
+else field_undefined2.clean_up();
+if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+else field_anyOtherError.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+}
+
+void ChangeActiveMaskRes__errorCodes::clean_up()
+{
+field_invalidWorkingSetObjectID.clean_up();
+field_invalidMaskObjectID.clean_up();
+field_undefined1.clean_up();
+field_undefined2.clean_up();
+field_anyOtherError.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangeActiveMaskRes__errorCodes::get_descriptor() const { return &ChangeActiveMaskRes__errorCodes_descr_; }
+ChangeActiveMaskRes__errorCodes& ChangeActiveMaskRes__errorCodes::operator=(const ChangeActiveMaskRes__errorCodes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes.");
+  if (other_value.invalidWorkingSetObjectID().is_bound()) field_invalidWorkingSetObjectID = other_value.invalidWorkingSetObjectID();
+  else field_invalidWorkingSetObjectID.clean_up();
+  if (other_value.invalidMaskObjectID().is_bound()) field_invalidMaskObjectID = other_value.invalidMaskObjectID();
+  else field_invalidMaskObjectID.clean_up();
+  if (other_value.undefined1().is_bound()) field_undefined1 = other_value.undefined1();
+  else field_undefined1.clean_up();
+  if (other_value.undefined2().is_bound()) field_undefined2 = other_value.undefined2();
+  else field_undefined2.clean_up();
+  if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+  else field_anyOtherError.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+}
+return *this;
+}
+
+boolean ChangeActiveMaskRes__errorCodes::operator==(const ChangeActiveMaskRes__errorCodes& other_value) const
+{
+return field_invalidWorkingSetObjectID==other_value.field_invalidWorkingSetObjectID
+  && field_invalidMaskObjectID==other_value.field_invalidMaskObjectID
+  && field_undefined1==other_value.field_undefined1
+  && field_undefined2==other_value.field_undefined2
+  && field_anyOtherError==other_value.field_anyOtherError
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7;
+}
+
+boolean ChangeActiveMaskRes__errorCodes::is_bound() const
+{
+return (field_invalidWorkingSetObjectID.is_bound())
+  || (field_invalidMaskObjectID.is_bound())
+  || (field_undefined1.is_bound())
+  || (field_undefined2.is_bound())
+  || (field_anyOtherError.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound());
+}
+boolean ChangeActiveMaskRes__errorCodes::is_value() const
+{
+return field_invalidWorkingSetObjectID.is_value()
+  && field_invalidMaskObjectID.is_value()
+  && field_undefined1.is_value()
+  && field_undefined2.is_value()
+  && field_anyOtherError.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value();
+}
+void ChangeActiveMaskRes__errorCodes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ invalidWorkingSetObjectID := ");
+field_invalidWorkingSetObjectID.log();
+TTCN_Logger::log_event_str(", invalidMaskObjectID := ");
+field_invalidMaskObjectID.log();
+TTCN_Logger::log_event_str(", undefined1 := ");
+field_undefined1.log();
+TTCN_Logger::log_event_str(", undefined2 := ");
+field_undefined2.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangeActiveMaskRes__errorCodes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes has 8 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) invalidWorkingSetObjectID().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) invalidMaskObjectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) undefined1().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) undefined2().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "invalidWorkingSetObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidWorkingSetObjectID().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(), "invalidMaskObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidMaskObjectID().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(), "undefined1")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          undefined1().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(), "undefined2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          undefined2().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes");
+  }
+}
+
+void ChangeActiveMaskRes__errorCodes::set_implicit_omit()
+{
+if (invalidWorkingSetObjectID().is_bound()) invalidWorkingSetObjectID().set_implicit_omit();
+if (invalidMaskObjectID().is_bound()) invalidMaskObjectID().set_implicit_omit();
+if (undefined1().is_bound()) undefined1().set_implicit_omit();
+if (undefined2().is_bound()) undefined2().set_implicit_omit();
+if (anyOtherError().is_bound()) anyOtherError().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+}
+
+void ChangeActiveMaskRes__errorCodes::encode_text(Text_Buf& text_buf) const
+{
+field_invalidWorkingSetObjectID.encode_text(text_buf);
+field_invalidMaskObjectID.encode_text(text_buf);
+field_undefined1.encode_text(text_buf);
+field_undefined2.encode_text(text_buf);
+field_anyOtherError.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+}
+
+void ChangeActiveMaskRes__errorCodes::decode_text(Text_Buf& text_buf)
+{
+field_invalidWorkingSetObjectID.decode_text(text_buf);
+field_invalidMaskObjectID.decode_text(text_buf);
+field_undefined1.decode_text(text_buf);
+field_undefined2.decode_text(text_buf);
+field_anyOtherError.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+}
+
+void ChangeActiveMaskRes__errorCodes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangeActiveMaskRes__errorCodes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangeActiveMaskRes__errorCodes::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidWorkingSetObjectID.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidMaskObjectID.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_undefined1.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_undefined2.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_anyOtherError.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ChangeActiveMaskRes__errorCodes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_invalidWorkingSetObjectID.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_invalidMaskObjectID.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_undefined1.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_undefined2.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_anyOtherError.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved5.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved6.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved7.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangeActiveMaskRes__errorCodes_template::single_value_struct {
+BOOLEAN_template field_invalidWorkingSetObjectID;
+BOOLEAN_template field_invalidMaskObjectID;
+BOOLEAN_template field_undefined1;
+BOOLEAN_template field_undefined2;
+BOOLEAN_template field_anyOtherError;
+BOOLEAN_template field_reserved5;
+BOOLEAN_template field_reserved6;
+BOOLEAN_template field_reserved7;
+};
+
+void ChangeActiveMaskRes__errorCodes_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_invalidWorkingSetObjectID = ANY_VALUE;
+single_value->field_invalidMaskObjectID = ANY_VALUE;
+single_value->field_undefined1 = ANY_VALUE;
+single_value->field_undefined2 = ANY_VALUE;
+single_value->field_anyOtherError = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+}
+}
+}
+
+void ChangeActiveMaskRes__errorCodes_template::copy_value(const ChangeActiveMaskRes__errorCodes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.invalidWorkingSetObjectID().is_bound()) {
+  single_value->field_invalidWorkingSetObjectID = other_value.invalidWorkingSetObjectID();
+} else {
+  single_value->field_invalidWorkingSetObjectID.clean_up();
+}
+if (other_value.invalidMaskObjectID().is_bound()) {
+  single_value->field_invalidMaskObjectID = other_value.invalidMaskObjectID();
+} else {
+  single_value->field_invalidMaskObjectID.clean_up();
+}
+if (other_value.undefined1().is_bound()) {
+  single_value->field_undefined1 = other_value.undefined1();
+} else {
+  single_value->field_undefined1.clean_up();
+}
+if (other_value.undefined2().is_bound()) {
+  single_value->field_undefined2 = other_value.undefined2();
+} else {
+  single_value->field_undefined2.clean_up();
+}
+if (other_value.anyOtherError().is_bound()) {
+  single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+  single_value->field_anyOtherError.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangeActiveMaskRes__errorCodes_template::copy_template(const ChangeActiveMaskRes__errorCodes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.invalidWorkingSetObjectID().get_selection()) {
+single_value->field_invalidWorkingSetObjectID = other_value.invalidWorkingSetObjectID();
+} else {
+single_value->field_invalidWorkingSetObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.invalidMaskObjectID().get_selection()) {
+single_value->field_invalidMaskObjectID = other_value.invalidMaskObjectID();
+} else {
+single_value->field_invalidMaskObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.undefined1().get_selection()) {
+single_value->field_undefined1 = other_value.undefined1();
+} else {
+single_value->field_undefined1.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.undefined2().get_selection()) {
+single_value->field_undefined2 = other_value.undefined2();
+} else {
+single_value->field_undefined2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.anyOtherError().get_selection()) {
+single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+single_value->field_anyOtherError.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangeActiveMaskRes__errorCodes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangeActiveMaskRes__errorCodes_template::ChangeActiveMaskRes__errorCodes_template()
+{
+}
+
+ChangeActiveMaskRes__errorCodes_template::ChangeActiveMaskRes__errorCodes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangeActiveMaskRes__errorCodes_template::ChangeActiveMaskRes__errorCodes_template(const ChangeActiveMaskRes__errorCodes& other_value)
+{
+copy_value(other_value);
+}
+
+ChangeActiveMaskRes__errorCodes_template::ChangeActiveMaskRes__errorCodes_template(const OPTIONAL<ChangeActiveMaskRes__errorCodes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeActiveMaskRes__errorCodes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes from an unbound optional field.");
+}
+}
+
+ChangeActiveMaskRes__errorCodes_template::ChangeActiveMaskRes__errorCodes_template(const ChangeActiveMaskRes__errorCodes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangeActiveMaskRes__errorCodes_template::~ChangeActiveMaskRes__errorCodes_template()
+{
+clean_up();
+}
+
+ChangeActiveMaskRes__errorCodes_template& ChangeActiveMaskRes__errorCodes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangeActiveMaskRes__errorCodes_template& ChangeActiveMaskRes__errorCodes_template::operator=(const ChangeActiveMaskRes__errorCodes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangeActiveMaskRes__errorCodes_template& ChangeActiveMaskRes__errorCodes_template::operator=(const OPTIONAL<ChangeActiveMaskRes__errorCodes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeActiveMaskRes__errorCodes&)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 @IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes.");
+}
+return *this;
+}
+
+ChangeActiveMaskRes__errorCodes_template& ChangeActiveMaskRes__errorCodes_template::operator=(const ChangeActiveMaskRes__errorCodes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangeActiveMaskRes__errorCodes_template::match(const ChangeActiveMaskRes__errorCodes& 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.invalidWorkingSetObjectID().is_bound()) return FALSE;
+if(!single_value->field_invalidWorkingSetObjectID.match(other_value.invalidWorkingSetObjectID(), legacy))return FALSE;
+if(!other_value.invalidMaskObjectID().is_bound()) return FALSE;
+if(!single_value->field_invalidMaskObjectID.match(other_value.invalidMaskObjectID(), legacy))return FALSE;
+if(!other_value.undefined1().is_bound()) return FALSE;
+if(!single_value->field_undefined1.match(other_value.undefined1(), legacy))return FALSE;
+if(!other_value.undefined2().is_bound()) return FALSE;
+if(!single_value->field_undefined2.match(other_value.undefined2(), legacy))return FALSE;
+if(!other_value.anyOtherError().is_bound()) return FALSE;
+if(!single_value->field_anyOtherError.match(other_value.anyOtherError(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes.");
+}
+return FALSE;
+}
+
+boolean ChangeActiveMaskRes__errorCodes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_invalidWorkingSetObjectID.is_bound()
+
+ ||single_value->field_invalidMaskObjectID.is_bound()
+
+ ||single_value->field_undefined1.is_bound()
+
+ ||single_value->field_undefined2.is_bound()
+
+ ||single_value->field_anyOtherError.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+;
+}
+
+boolean ChangeActiveMaskRes__errorCodes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_invalidWorkingSetObjectID.is_value()
+ &&single_value->field_invalidMaskObjectID.is_value()
+ &&single_value->field_undefined1.is_value()
+ &&single_value->field_undefined2.is_value()
+ &&single_value->field_anyOtherError.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value();
+}
+
+void ChangeActiveMaskRes__errorCodes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangeActiveMaskRes__errorCodes ChangeActiveMaskRes__errorCodes_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 @IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes.");
+ChangeActiveMaskRes__errorCodes ret_val;
+if (single_value->field_invalidWorkingSetObjectID.is_bound()) {
+ret_val.invalidWorkingSetObjectID() = single_value->field_invalidWorkingSetObjectID.valueof();
+}
+if (single_value->field_invalidMaskObjectID.is_bound()) {
+ret_val.invalidMaskObjectID() = single_value->field_invalidMaskObjectID.valueof();
+}
+if (single_value->field_undefined1.is_bound()) {
+ret_val.undefined1() = single_value->field_undefined1.valueof();
+}
+if (single_value->field_undefined2.is_bound()) {
+ret_val.undefined2() = single_value->field_undefined2.valueof();
+}
+if (single_value->field_anyOtherError.is_bound()) {
+ret_val.anyOtherError() = single_value->field_anyOtherError.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+return ret_val;
+}
+
+void ChangeActiveMaskRes__errorCodes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangeActiveMaskRes__errorCodes_template[list_length];
+}
+
+ChangeActiveMaskRes__errorCodes_template& ChangeActiveMaskRes__errorCodes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& ChangeActiveMaskRes__errorCodes_template::invalidWorkingSetObjectID()
+{
+set_specific();
+return single_value->field_invalidWorkingSetObjectID;
+}
+
+const BOOLEAN_template& ChangeActiveMaskRes__errorCodes_template::invalidWorkingSetObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidWorkingSetObjectID of a non-specific template of type @IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes.");
+return single_value->field_invalidWorkingSetObjectID;
+}
+
+BOOLEAN_template& ChangeActiveMaskRes__errorCodes_template::invalidMaskObjectID()
+{
+set_specific();
+return single_value->field_invalidMaskObjectID;
+}
+
+const BOOLEAN_template& ChangeActiveMaskRes__errorCodes_template::invalidMaskObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidMaskObjectID of a non-specific template of type @IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes.");
+return single_value->field_invalidMaskObjectID;
+}
+
+BOOLEAN_template& ChangeActiveMaskRes__errorCodes_template::undefined1()
+{
+set_specific();
+return single_value->field_undefined1;
+}
+
+const BOOLEAN_template& ChangeActiveMaskRes__errorCodes_template::undefined1() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field undefined1 of a non-specific template of type @IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes.");
+return single_value->field_undefined1;
+}
+
+BOOLEAN_template& ChangeActiveMaskRes__errorCodes_template::undefined2()
+{
+set_specific();
+return single_value->field_undefined2;
+}
+
+const BOOLEAN_template& ChangeActiveMaskRes__errorCodes_template::undefined2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field undefined2 of a non-specific template of type @IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes.");
+return single_value->field_undefined2;
+}
+
+BOOLEAN_template& ChangeActiveMaskRes__errorCodes_template::anyOtherError()
+{
+set_specific();
+return single_value->field_anyOtherError;
+}
+
+const BOOLEAN_template& ChangeActiveMaskRes__errorCodes_template::anyOtherError() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field anyOtherError of a non-specific template of type @IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes.");
+return single_value->field_anyOtherError;
+}
+
+BOOLEAN_template& ChangeActiveMaskRes__errorCodes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const BOOLEAN_template& ChangeActiveMaskRes__errorCodes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes.");
+return single_value->field_reserved5;
+}
+
+BOOLEAN_template& ChangeActiveMaskRes__errorCodes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const BOOLEAN_template& ChangeActiveMaskRes__errorCodes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes.");
+return single_value->field_reserved6;
+}
+
+BOOLEAN_template& ChangeActiveMaskRes__errorCodes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const BOOLEAN_template& ChangeActiveMaskRes__errorCodes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes.");
+return single_value->field_reserved7;
+}
+
+int ChangeActiveMaskRes__errorCodes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes 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 @IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes.");
+  }
+  return 0;
+}
+
+void ChangeActiveMaskRes__errorCodes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ invalidWorkingSetObjectID := ");
+single_value->field_invalidWorkingSetObjectID.log();
+TTCN_Logger::log_event_str(", invalidMaskObjectID := ");
+single_value->field_invalidMaskObjectID.log();
+TTCN_Logger::log_event_str(", undefined1 := ");
+single_value->field_undefined1.log();
+TTCN_Logger::log_event_str(", undefined2 := ");
+single_value->field_undefined2.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangeActiveMaskRes__errorCodes_template::log_match(const ChangeActiveMaskRes__errorCodes& 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_invalidWorkingSetObjectID.match(match_value.invalidWorkingSetObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidWorkingSetObjectID");
+single_value->field_invalidWorkingSetObjectID.log_match(match_value.invalidWorkingSetObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_invalidMaskObjectID.match(match_value.invalidMaskObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidMaskObjectID");
+single_value->field_invalidMaskObjectID.log_match(match_value.invalidMaskObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_undefined1.match(match_value.undefined1(), legacy)){
+TTCN_Logger::log_logmatch_info(".undefined1");
+single_value->field_undefined1.log_match(match_value.undefined1(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_undefined2.match(match_value.undefined2(), legacy)){
+TTCN_Logger::log_logmatch_info(".undefined2");
+single_value->field_undefined2.log_match(match_value.undefined2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_anyOtherError.match(match_value.anyOtherError(), legacy)){
+TTCN_Logger::log_logmatch_info(".anyOtherError");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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("{ invalidWorkingSetObjectID := ");
+single_value->field_invalidWorkingSetObjectID.log_match(match_value.invalidWorkingSetObjectID(), legacy);
+TTCN_Logger::log_event_str(", invalidMaskObjectID := ");
+single_value->field_invalidMaskObjectID.log_match(match_value.invalidMaskObjectID(), legacy);
+TTCN_Logger::log_event_str(", undefined1 := ");
+single_value->field_undefined1.log_match(match_value.undefined1(), legacy);
+TTCN_Logger::log_event_str(", undefined2 := ");
+single_value->field_undefined2.log_match(match_value.undefined2(), legacy);
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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 ChangeActiveMaskRes__errorCodes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_invalidWorkingSetObjectID.encode_text(text_buf);
+single_value->field_invalidMaskObjectID.encode_text(text_buf);
+single_value->field_undefined1.encode_text(text_buf);
+single_value->field_undefined2.encode_text(text_buf);
+single_value->field_anyOtherError.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.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 @IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes.");
+}
+}
+
+void ChangeActiveMaskRes__errorCodes_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_invalidWorkingSetObjectID.decode_text(text_buf);
+single_value->field_invalidMaskObjectID.decode_text(text_buf);
+single_value->field_undefined1.decode_text(text_buf);
+single_value->field_undefined2.decode_text(text_buf);
+single_value->field_anyOtherError.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.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 ChangeActiveMaskRes__errorCodes_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 @IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes.");
+}
+}
+
+void ChangeActiveMaskRes__errorCodes_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: {
+    ChangeActiveMaskRes__errorCodes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes has 8 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) invalidWorkingSetObjectID().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) invalidMaskObjectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) undefined1().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) undefined2().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "invalidWorkingSetObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidWorkingSetObjectID().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(), "invalidMaskObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidMaskObjectID().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(), "undefined1")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          undefined1().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(), "undefined2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          undefined2().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangeActiveMaskRes__errorCodes_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_invalidWorkingSetObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes");
+single_value->field_invalidMaskObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes");
+single_value->field_undefined1.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes");
+single_value->field_undefined2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes");
+single_value->field_anyOtherError.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes");
+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 : "@IsobusVTMessageTypes.ChangeActiveMaskRes_errorCodes");
+}
+
+boolean ChangeActiveMaskRes__errorCodes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangeActiveMaskRes__errorCodes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangeActiveMaskRes::ChangeActiveMaskRes()
+{
+}
+
+ChangeActiveMaskRes::ChangeActiveMaskRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_newActiveMaskObjectID,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_newActiveMaskObjectID(par_newActiveMaskObjectID),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+ChangeActiveMaskRes::ChangeActiveMaskRes(const ChangeActiveMaskRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangeActiveMaskRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.newActiveMaskObjectID().is_bound()) field_newActiveMaskObjectID = other_value.newActiveMaskObjectID();
+else field_newActiveMaskObjectID.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void ChangeActiveMaskRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_newActiveMaskObjectID.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangeActiveMaskRes::get_descriptor() const { return &ChangeActiveMaskRes_descr_; }
+ChangeActiveMaskRes& ChangeActiveMaskRes::operator=(const ChangeActiveMaskRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangeActiveMaskRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.newActiveMaskObjectID().is_bound()) field_newActiveMaskObjectID = other_value.newActiveMaskObjectID();
+  else field_newActiveMaskObjectID.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean ChangeActiveMaskRes::operator==(const ChangeActiveMaskRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_newActiveMaskObjectID==other_value.field_newActiveMaskObjectID
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean ChangeActiveMaskRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_newActiveMaskObjectID.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean ChangeActiveMaskRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_newActiveMaskObjectID.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void ChangeActiveMaskRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", newActiveMaskObjectID := ");
+field_newActiveMaskObjectID.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangeActiveMaskRes::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 @IsobusVTMessageTypes.ChangeActiveMaskRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) newActiveMaskObjectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "newActiveMaskObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          newActiveMaskObjectID().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangeActiveMaskRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangeActiveMaskRes");
+  }
+}
+
+void ChangeActiveMaskRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (newActiveMaskObjectID().is_bound()) newActiveMaskObjectID().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void ChangeActiveMaskRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_newActiveMaskObjectID.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void ChangeActiveMaskRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_newActiveMaskObjectID.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void ChangeActiveMaskRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangeActiveMaskRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangeActiveMaskRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_newActiveMaskObjectID.RAW_decode(ValidObjectID_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, ChangeActiveMaskRes_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(ChangeActiveMaskRes_reserved5_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, ChangeActiveMaskRes_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(ChangeActiveMaskRes_reserved6_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, ChangeActiveMaskRes_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(ChangeActiveMaskRes_reserved7_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, ChangeActiveMaskRes_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(ChangeActiveMaskRes_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ChangeActiveMaskRes::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ChangeActiveMaskRes_reserved5_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, ChangeActiveMaskRes_reserved6_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, ChangeActiveMaskRes_reserved7_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, ChangeActiveMaskRes_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_newActiveMaskObjectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved5.RAW_encode(ChangeActiveMaskRes_reserved5_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved6.RAW_encode(ChangeActiveMaskRes_reserved6_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved7.RAW_encode(ChangeActiveMaskRes_reserved7_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved8.RAW_encode(ChangeActiveMaskRes_reserved8_descr_, *myleaf.body.node.nodes[5]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangeActiveMaskRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_newActiveMaskObjectID;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void ChangeActiveMaskRes_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_vtfunction = ANY_VALUE;
+single_value->field_newActiveMaskObjectID = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void ChangeActiveMaskRes_template::copy_value(const ChangeActiveMaskRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.newActiveMaskObjectID().is_bound()) {
+  single_value->field_newActiveMaskObjectID = other_value.newActiveMaskObjectID();
+} else {
+  single_value->field_newActiveMaskObjectID.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangeActiveMaskRes_template::copy_template(const ChangeActiveMaskRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.newActiveMaskObjectID().get_selection()) {
+single_value->field_newActiveMaskObjectID = other_value.newActiveMaskObjectID();
+} else {
+single_value->field_newActiveMaskObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangeActiveMaskRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeActiveMaskRes.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangeActiveMaskRes_template::ChangeActiveMaskRes_template()
+{
+}
+
+ChangeActiveMaskRes_template::ChangeActiveMaskRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangeActiveMaskRes_template::ChangeActiveMaskRes_template(const ChangeActiveMaskRes& other_value)
+{
+copy_value(other_value);
+}
+
+ChangeActiveMaskRes_template::ChangeActiveMaskRes_template(const OPTIONAL<ChangeActiveMaskRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeActiveMaskRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangeActiveMaskRes from an unbound optional field.");
+}
+}
+
+ChangeActiveMaskRes_template::ChangeActiveMaskRes_template(const ChangeActiveMaskRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangeActiveMaskRes_template::~ChangeActiveMaskRes_template()
+{
+clean_up();
+}
+
+ChangeActiveMaskRes_template& ChangeActiveMaskRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangeActiveMaskRes_template& ChangeActiveMaskRes_template::operator=(const ChangeActiveMaskRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangeActiveMaskRes_template& ChangeActiveMaskRes_template::operator=(const OPTIONAL<ChangeActiveMaskRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeActiveMaskRes&)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 @IsobusVTMessageTypes.ChangeActiveMaskRes.");
+}
+return *this;
+}
+
+ChangeActiveMaskRes_template& ChangeActiveMaskRes_template::operator=(const ChangeActiveMaskRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangeActiveMaskRes_template::match(const ChangeActiveMaskRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.newActiveMaskObjectID().is_bound()) return FALSE;
+if(!single_value->field_newActiveMaskObjectID.match(other_value.newActiveMaskObjectID(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeActiveMaskRes.");
+}
+return FALSE;
+}
+
+boolean ChangeActiveMaskRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_newActiveMaskObjectID.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean ChangeActiveMaskRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_newActiveMaskObjectID.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void ChangeActiveMaskRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangeActiveMaskRes ChangeActiveMaskRes_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 @IsobusVTMessageTypes.ChangeActiveMaskRes.");
+ChangeActiveMaskRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_newActiveMaskObjectID.is_bound()) {
+ret_val.newActiveMaskObjectID() = single_value->field_newActiveMaskObjectID.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void ChangeActiveMaskRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangeActiveMaskRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangeActiveMaskRes_template[list_length];
+}
+
+ChangeActiveMaskRes_template& ChangeActiveMaskRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangeActiveMaskRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangeActiveMaskRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ChangeActiveMaskRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ChangeActiveMaskRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ChangeActiveMaskRes.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& ChangeActiveMaskRes_template::newActiveMaskObjectID()
+{
+set_specific();
+return single_value->field_newActiveMaskObjectID;
+}
+
+const INTEGER_template& ChangeActiveMaskRes_template::newActiveMaskObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field newActiveMaskObjectID of a non-specific template of type @IsobusVTMessageTypes.ChangeActiveMaskRes.");
+return single_value->field_newActiveMaskObjectID;
+}
+
+OCTETSTRING_template& ChangeActiveMaskRes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& ChangeActiveMaskRes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.ChangeActiveMaskRes.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& ChangeActiveMaskRes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& ChangeActiveMaskRes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.ChangeActiveMaskRes.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& ChangeActiveMaskRes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& ChangeActiveMaskRes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ChangeActiveMaskRes.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& ChangeActiveMaskRes_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& ChangeActiveMaskRes_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.ChangeActiveMaskRes.");
+return single_value->field_reserved8;
+}
+
+int ChangeActiveMaskRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeActiveMaskRes 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 @IsobusVTMessageTypes.ChangeActiveMaskRes 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 @IsobusVTMessageTypes.ChangeActiveMaskRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeActiveMaskRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeActiveMaskRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeActiveMaskRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeActiveMaskRes.");
+  }
+  return 0;
+}
+
+void ChangeActiveMaskRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", newActiveMaskObjectID := ");
+single_value->field_newActiveMaskObjectID.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangeActiveMaskRes_template::log_match(const ChangeActiveMaskRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_newActiveMaskObjectID.match(match_value.newActiveMaskObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".newActiveMaskObjectID");
+single_value->field_newActiveMaskObjectID.log_match(match_value.newActiveMaskObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", newActiveMaskObjectID := ");
+single_value->field_newActiveMaskObjectID.log_match(match_value.newActiveMaskObjectID(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 ChangeActiveMaskRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_newActiveMaskObjectID.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.ChangeActiveMaskRes.");
+}
+}
+
+void ChangeActiveMaskRes_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_vtfunction.decode_text(text_buf);
+single_value->field_newActiveMaskObjectID.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 ChangeActiveMaskRes_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 @IsobusVTMessageTypes.ChangeActiveMaskRes.");
+}
+}
+
+void ChangeActiveMaskRes_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: {
+    ChangeActiveMaskRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.ChangeActiveMaskRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) newActiveMaskObjectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "newActiveMaskObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          newActiveMaskObjectID().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangeActiveMaskRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangeActiveMaskRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangeActiveMaskRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeActiveMaskRes");
+single_value->field_newActiveMaskObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeActiveMaskRes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeActiveMaskRes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeActiveMaskRes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeActiveMaskRes");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeActiveMaskRes");
+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 : "@IsobusVTMessageTypes.ChangeActiveMaskRes");
+}
+
+boolean ChangeActiveMaskRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangeActiveMaskRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+e__ChangeSoftKeyMaskReq__MaskType::e__ChangeSoftKeyMaskReq__MaskType()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+e__ChangeSoftKeyMaskReq__MaskType::e__ChangeSoftKeyMaskReq__MaskType(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @IsobusVTMessageTypes.e_ChangeSoftKeyMaskReq_MaskType with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+e__ChangeSoftKeyMaskReq__MaskType::e__ChangeSoftKeyMaskReq__MaskType(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+e__ChangeSoftKeyMaskReq__MaskType::e__ChangeSoftKeyMaskReq__MaskType(const e__ChangeSoftKeyMaskReq__MaskType& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @IsobusVTMessageTypes.e_ChangeSoftKeyMaskReq_MaskType.");
+enum_value = other_value.enum_value;
+}
+
+e__ChangeSoftKeyMaskReq__MaskType& e__ChangeSoftKeyMaskReq__MaskType::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @IsobusVTMessageTypes.e_ChangeSoftKeyMaskReq_MaskType.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+e__ChangeSoftKeyMaskReq__MaskType& e__ChangeSoftKeyMaskReq__MaskType::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+e__ChangeSoftKeyMaskReq__MaskType& e__ChangeSoftKeyMaskReq__MaskType::operator=(const e__ChangeSoftKeyMaskReq__MaskType& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusVTMessageTypes.e_ChangeSoftKeyMaskReq_MaskType.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean e__ChangeSoftKeyMaskReq__MaskType::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_ChangeSoftKeyMaskReq_MaskType.");
+return enum_value == other_value;
+}
+
+boolean e__ChangeSoftKeyMaskReq__MaskType::operator==(const e__ChangeSoftKeyMaskReq__MaskType& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_ChangeSoftKeyMaskReq_MaskType.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_ChangeSoftKeyMaskReq_MaskType.");
+return enum_value == other_value.enum_value;
+}
+
+boolean e__ChangeSoftKeyMaskReq__MaskType::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_ChangeSoftKeyMaskReq_MaskType.");
+return enum_value < other_value;
+}
+
+boolean e__ChangeSoftKeyMaskReq__MaskType::operator<(const e__ChangeSoftKeyMaskReq__MaskType& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_ChangeSoftKeyMaskReq_MaskType.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_ChangeSoftKeyMaskReq_MaskType.");
+return enum_value < other_value.enum_value;
+}
+
+boolean e__ChangeSoftKeyMaskReq__MaskType::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_ChangeSoftKeyMaskReq_MaskType.");
+return enum_value > other_value;
+}
+
+boolean e__ChangeSoftKeyMaskReq__MaskType::operator>(const e__ChangeSoftKeyMaskReq__MaskType& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_ChangeSoftKeyMaskReq_MaskType.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_ChangeSoftKeyMaskReq_MaskType.");
+return enum_value > other_value.enum_value;
+}
+
+const char *e__ChangeSoftKeyMaskReq__MaskType::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case Data: return "Data";
+case Alarm: return "Alarm";
+default: return "<unknown>";
+}
+}
+
+e__ChangeSoftKeyMaskReq__MaskType::enum_type e__ChangeSoftKeyMaskReq__MaskType::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "Data")) return Data;
+else if (!strcmp(str_par, "Alarm")) return Alarm;
+else return UNKNOWN_VALUE;
+}
+
+boolean e__ChangeSoftKeyMaskReq__MaskType::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 1:
+case 2:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int e__ChangeSoftKeyMaskReq__MaskType::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusVTMessageTypes.e_ChangeSoftKeyMaskReq_MaskType.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int e__ChangeSoftKeyMaskReq__MaskType::enum2int(const e__ChangeSoftKeyMaskReq__MaskType& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusVTMessageTypes.e_ChangeSoftKeyMaskReq_MaskType.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void e__ChangeSoftKeyMaskReq__MaskType::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @IsobusVTMessageTypes.e_ChangeSoftKeyMaskReq_MaskType.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+e__ChangeSoftKeyMaskReq__MaskType::operator e__ChangeSoftKeyMaskReq__MaskType::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @IsobusVTMessageTypes.e_ChangeSoftKeyMaskReq_MaskType.");
+return enum_value;
+}
+
+void e__ChangeSoftKeyMaskReq__MaskType::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void e__ChangeSoftKeyMaskReq__MaskType::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@IsobusVTMessageTypes.e_ChangeSoftKeyMaskReq_MaskType");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @IsobusVTMessageTypes.e_ChangeSoftKeyMaskReq_MaskType.");
+  }
+}
+
+void e__ChangeSoftKeyMaskReq__MaskType::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @IsobusVTMessageTypes.e_ChangeSoftKeyMaskReq_MaskType.");
+text_buf.push_int(enum_value);
+}
+
+void e__ChangeSoftKeyMaskReq__MaskType::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @IsobusVTMessageTypes.e_ChangeSoftKeyMaskReq_MaskType.", enum_value);
+}
+
+void e__ChangeSoftKeyMaskReq__MaskType::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void e__ChangeSoftKeyMaskReq__MaskType::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int e__ChangeSoftKeyMaskReq__MaskType::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*)
+{
+  int decoded_value = 0;
+  int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 2, no_err);
+  if (decoded_length < 0) return decoded_length;
+  if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value;
+  else {
+    if(no_err){
+     return -1;
+    } else {
+    TTCN_EncDec_ErrorContext::error
+      (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name);
+    enum_value = UNKNOWN_VALUE;
+    }
+  }
+  return decoded_length;
+}
+
+int e__ChangeSoftKeyMaskReq__MaskType::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const
+{
+  return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 2);
+}
+
+void e__ChangeSoftKeyMaskReq__MaskType_template::copy_template(const e__ChangeSoftKeyMaskReq__MaskType_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new e__ChangeSoftKeyMaskReq__MaskType_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_ChangeSoftKeyMaskReq_MaskType.");
+}
+}
+
+e__ChangeSoftKeyMaskReq__MaskType_template::e__ChangeSoftKeyMaskReq__MaskType_template()
+{
+}
+
+e__ChangeSoftKeyMaskReq__MaskType_template::e__ChangeSoftKeyMaskReq__MaskType_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+e__ChangeSoftKeyMaskReq__MaskType_template::e__ChangeSoftKeyMaskReq__MaskType_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!e__ChangeSoftKeyMaskReq__MaskType::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @IsobusVTMessageTypes.e_ChangeSoftKeyMaskReq_MaskType with unknown numeric value %d.", other_value);
+single_value = (e__ChangeSoftKeyMaskReq__MaskType::enum_type)other_value;
+}
+
+e__ChangeSoftKeyMaskReq__MaskType_template::e__ChangeSoftKeyMaskReq__MaskType_template(e__ChangeSoftKeyMaskReq__MaskType::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+e__ChangeSoftKeyMaskReq__MaskType_template::e__ChangeSoftKeyMaskReq__MaskType_template(const e__ChangeSoftKeyMaskReq__MaskType& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == e__ChangeSoftKeyMaskReq__MaskType::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @IsobusVTMessageTypes.e_ChangeSoftKeyMaskReq_MaskType.");
+single_value = other_value.enum_value;
+}
+
+e__ChangeSoftKeyMaskReq__MaskType_template::e__ChangeSoftKeyMaskReq__MaskType_template(const OPTIONAL<e__ChangeSoftKeyMaskReq__MaskType>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__ChangeSoftKeyMaskReq__MaskType::enum_type)(const e__ChangeSoftKeyMaskReq__MaskType&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @IsobusVTMessageTypes.e_ChangeSoftKeyMaskReq_MaskType from an unbound optional field.");
+}
+}
+
+e__ChangeSoftKeyMaskReq__MaskType_template::e__ChangeSoftKeyMaskReq__MaskType_template(const e__ChangeSoftKeyMaskReq__MaskType_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+e__ChangeSoftKeyMaskReq__MaskType_template::~e__ChangeSoftKeyMaskReq__MaskType_template()
+{
+clean_up();
+}
+
+boolean e__ChangeSoftKeyMaskReq__MaskType_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean e__ChangeSoftKeyMaskReq__MaskType_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != e__ChangeSoftKeyMaskReq__MaskType::UNBOUND_VALUE;
+}
+
+void e__ChangeSoftKeyMaskReq__MaskType_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+e__ChangeSoftKeyMaskReq__MaskType_template& e__ChangeSoftKeyMaskReq__MaskType_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+e__ChangeSoftKeyMaskReq__MaskType_template& e__ChangeSoftKeyMaskReq__MaskType_template::operator=(int other_value)
+{
+if (!e__ChangeSoftKeyMaskReq__MaskType::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @IsobusVTMessageTypes.e_ChangeSoftKeyMaskReq_MaskType.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (e__ChangeSoftKeyMaskReq__MaskType::enum_type)other_value;
+return *this;
+}
+
+e__ChangeSoftKeyMaskReq__MaskType_template& e__ChangeSoftKeyMaskReq__MaskType_template::operator=(e__ChangeSoftKeyMaskReq__MaskType::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+e__ChangeSoftKeyMaskReq__MaskType_template& e__ChangeSoftKeyMaskReq__MaskType_template::operator=(const e__ChangeSoftKeyMaskReq__MaskType& other_value)
+{
+if (other_value.enum_value == e__ChangeSoftKeyMaskReq__MaskType::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusVTMessageTypes.e_ChangeSoftKeyMaskReq_MaskType to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+e__ChangeSoftKeyMaskReq__MaskType_template& e__ChangeSoftKeyMaskReq__MaskType_template::operator=(const OPTIONAL<e__ChangeSoftKeyMaskReq__MaskType>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__ChangeSoftKeyMaskReq__MaskType::enum_type)(const e__ChangeSoftKeyMaskReq__MaskType&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @IsobusVTMessageTypes.e_ChangeSoftKeyMaskReq_MaskType.");
+}
+return *this;
+}
+
+e__ChangeSoftKeyMaskReq__MaskType_template& e__ChangeSoftKeyMaskReq__MaskType_template::operator=(const e__ChangeSoftKeyMaskReq__MaskType_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean e__ChangeSoftKeyMaskReq__MaskType_template::match(e__ChangeSoftKeyMaskReq__MaskType::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_ChangeSoftKeyMaskReq_MaskType.");
+}
+return FALSE;
+}
+
+boolean e__ChangeSoftKeyMaskReq__MaskType_template::match(const e__ChangeSoftKeyMaskReq__MaskType& other_value, boolean) const
+{
+if (other_value.enum_value == e__ChangeSoftKeyMaskReq__MaskType::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @IsobusVTMessageTypes.e_ChangeSoftKeyMaskReq_MaskType with an unbound value.");
+return match(other_value.enum_value);
+}
+
+e__ChangeSoftKeyMaskReq__MaskType::enum_type e__ChangeSoftKeyMaskReq__MaskType_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @IsobusVTMessageTypes.e_ChangeSoftKeyMaskReq_MaskType.");
+return single_value;
+}
+
+void e__ChangeSoftKeyMaskReq__MaskType_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @IsobusVTMessageTypes.e_ChangeSoftKeyMaskReq_MaskType.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new e__ChangeSoftKeyMaskReq__MaskType_template[list_length];
+}
+
+e__ChangeSoftKeyMaskReq__MaskType_template& e__ChangeSoftKeyMaskReq__MaskType_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @IsobusVTMessageTypes.e_ChangeSoftKeyMaskReq_MaskType.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @IsobusVTMessageTypes.e_ChangeSoftKeyMaskReq_MaskType.");
+return value_list.list_value[list_index];
+}
+
+void e__ChangeSoftKeyMaskReq__MaskType_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(e__ChangeSoftKeyMaskReq__MaskType::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void e__ChangeSoftKeyMaskReq__MaskType_template::log_match(const e__ChangeSoftKeyMaskReq__MaskType& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void e__ChangeSoftKeyMaskReq__MaskType_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_ChangeSoftKeyMaskReq_MaskType.");
+}
+}
+
+void e__ChangeSoftKeyMaskReq__MaskType_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (e__ChangeSoftKeyMaskReq__MaskType::enum_type)text_buf.pull_int().get_val();
+if (!e__ChangeSoftKeyMaskReq__MaskType::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @IsobusVTMessageTypes.e_ChangeSoftKeyMaskReq_MaskType.", single_value);
+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 e__ChangeSoftKeyMaskReq__MaskType_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @IsobusVTMessageTypes.e_ChangeSoftKeyMaskReq_MaskType.");
+}
+}
+
+boolean e__ChangeSoftKeyMaskReq__MaskType_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean e__ChangeSoftKeyMaskReq__MaskType_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 e__ChangeSoftKeyMaskReq__MaskType_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    e__ChangeSoftKeyMaskReq__MaskType_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    e__ChangeSoftKeyMaskReq__MaskType::enum_type enum_val = e__ChangeSoftKeyMaskReq__MaskType::str_to_enum(m_p->get_enumerated());
+    if (!e__ChangeSoftKeyMaskReq__MaskType::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @IsobusVTMessageTypes.e_ChangeSoftKeyMaskReq_MaskType.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@IsobusVTMessageTypes.e_ChangeSoftKeyMaskReq_MaskType");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void e__ChangeSoftKeyMaskReq__MaskType_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@IsobusVTMessageTypes.e_ChangeSoftKeyMaskReq_MaskType");
+}
+
+ChangeSoftKeyMaskReq::ChangeSoftKeyMaskReq()
+{
+}
+
+ChangeSoftKeyMaskReq::ChangeSoftKeyMaskReq(const INTEGER& par_vtfunction,
+    const e__ChangeSoftKeyMaskReq__MaskType& par_maskType,
+    const INTEGER& par_DataOrAlarmMaskObjectID,
+    const INTEGER& par_NewSoftKeyMaskObjectID,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_maskType(par_maskType),
+  field_DataOrAlarmMaskObjectID(par_DataOrAlarmMaskObjectID),
+  field_NewSoftKeyMaskObjectID(par_NewSoftKeyMaskObjectID),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+ChangeSoftKeyMaskReq::ChangeSoftKeyMaskReq(const ChangeSoftKeyMaskReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangeSoftKeyMaskReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.maskType().is_bound()) field_maskType = other_value.maskType();
+else field_maskType.clean_up();
+if (other_value.DataOrAlarmMaskObjectID().is_bound()) field_DataOrAlarmMaskObjectID = other_value.DataOrAlarmMaskObjectID();
+else field_DataOrAlarmMaskObjectID.clean_up();
+if (other_value.NewSoftKeyMaskObjectID().is_bound()) field_NewSoftKeyMaskObjectID = other_value.NewSoftKeyMaskObjectID();
+else field_NewSoftKeyMaskObjectID.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void ChangeSoftKeyMaskReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_maskType.clean_up();
+field_DataOrAlarmMaskObjectID.clean_up();
+field_NewSoftKeyMaskObjectID.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangeSoftKeyMaskReq::get_descriptor() const { return &ChangeSoftKeyMaskReq_descr_; }
+ChangeSoftKeyMaskReq& ChangeSoftKeyMaskReq::operator=(const ChangeSoftKeyMaskReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangeSoftKeyMaskReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.maskType().is_bound()) field_maskType = other_value.maskType();
+  else field_maskType.clean_up();
+  if (other_value.DataOrAlarmMaskObjectID().is_bound()) field_DataOrAlarmMaskObjectID = other_value.DataOrAlarmMaskObjectID();
+  else field_DataOrAlarmMaskObjectID.clean_up();
+  if (other_value.NewSoftKeyMaskObjectID().is_bound()) field_NewSoftKeyMaskObjectID = other_value.NewSoftKeyMaskObjectID();
+  else field_NewSoftKeyMaskObjectID.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean ChangeSoftKeyMaskReq::operator==(const ChangeSoftKeyMaskReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_maskType==other_value.field_maskType
+  && field_DataOrAlarmMaskObjectID==other_value.field_DataOrAlarmMaskObjectID
+  && field_NewSoftKeyMaskObjectID==other_value.field_NewSoftKeyMaskObjectID
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean ChangeSoftKeyMaskReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_maskType.is_bound())
+  || (field_DataOrAlarmMaskObjectID.is_bound())
+  || (field_NewSoftKeyMaskObjectID.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean ChangeSoftKeyMaskReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_maskType.is_value()
+  && field_DataOrAlarmMaskObjectID.is_value()
+  && field_NewSoftKeyMaskObjectID.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void ChangeSoftKeyMaskReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", maskType := ");
+field_maskType.log();
+TTCN_Logger::log_event_str(", DataOrAlarmMaskObjectID := ");
+field_DataOrAlarmMaskObjectID.log();
+TTCN_Logger::log_event_str(", NewSoftKeyMaskObjectID := ");
+field_NewSoftKeyMaskObjectID.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangeSoftKeyMaskReq::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 @IsobusVTMessageTypes.ChangeSoftKeyMaskReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) maskType().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) DataOrAlarmMaskObjectID().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) NewSoftKeyMaskObjectID().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "maskType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          maskType().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(), "DataOrAlarmMaskObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          DataOrAlarmMaskObjectID().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(), "NewSoftKeyMaskObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          NewSoftKeyMaskObjectID().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangeSoftKeyMaskReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangeSoftKeyMaskReq");
+  }
+}
+
+void ChangeSoftKeyMaskReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (maskType().is_bound()) maskType().set_implicit_omit();
+if (DataOrAlarmMaskObjectID().is_bound()) DataOrAlarmMaskObjectID().set_implicit_omit();
+if (NewSoftKeyMaskObjectID().is_bound()) NewSoftKeyMaskObjectID().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void ChangeSoftKeyMaskReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_maskType.encode_text(text_buf);
+field_DataOrAlarmMaskObjectID.encode_text(text_buf);
+field_NewSoftKeyMaskObjectID.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void ChangeSoftKeyMaskReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_maskType.decode_text(text_buf);
+field_DataOrAlarmMaskObjectID.decode_text(text_buf);
+field_NewSoftKeyMaskObjectID.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void ChangeSoftKeyMaskReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangeSoftKeyMaskReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangeSoftKeyMaskReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, e__ChangeSoftKeyMaskReq__MaskType_descr_.raw->forceomit);
+  decoded_field_length = field_maskType.RAW_decode(e__ChangeSoftKeyMaskReq__MaskType_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_DataOrAlarmMaskObjectID.RAW_decode(ValidObjectID_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_NewSoftKeyMaskObjectID.RAW_decode(ValidObjectID_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, ChangeSoftKeyMaskReq_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(ChangeSoftKeyMaskReq_reserved7_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, ChangeSoftKeyMaskReq_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(ChangeSoftKeyMaskReq_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ChangeSoftKeyMaskReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, e__ChangeSoftKeyMaskReq__MaskType_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, ChangeSoftKeyMaskReq_reserved7_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, ChangeSoftKeyMaskReq_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_maskType.RAW_encode(e__ChangeSoftKeyMaskReq__MaskType_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_DataOrAlarmMaskObjectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_NewSoftKeyMaskObjectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved7.RAW_encode(ChangeSoftKeyMaskReq_reserved7_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved8.RAW_encode(ChangeSoftKeyMaskReq_reserved8_descr_, *myleaf.body.node.nodes[5]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangeSoftKeyMaskReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+e__ChangeSoftKeyMaskReq__MaskType_template field_maskType;
+INTEGER_template field_DataOrAlarmMaskObjectID;
+INTEGER_template field_NewSoftKeyMaskObjectID;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void ChangeSoftKeyMaskReq_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_vtfunction = ANY_VALUE;
+single_value->field_maskType = ANY_VALUE;
+single_value->field_DataOrAlarmMaskObjectID = ANY_VALUE;
+single_value->field_NewSoftKeyMaskObjectID = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void ChangeSoftKeyMaskReq_template::copy_value(const ChangeSoftKeyMaskReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.maskType().is_bound()) {
+  single_value->field_maskType = other_value.maskType();
+} else {
+  single_value->field_maskType.clean_up();
+}
+if (other_value.DataOrAlarmMaskObjectID().is_bound()) {
+  single_value->field_DataOrAlarmMaskObjectID = other_value.DataOrAlarmMaskObjectID();
+} else {
+  single_value->field_DataOrAlarmMaskObjectID.clean_up();
+}
+if (other_value.NewSoftKeyMaskObjectID().is_bound()) {
+  single_value->field_NewSoftKeyMaskObjectID = other_value.NewSoftKeyMaskObjectID();
+} else {
+  single_value->field_NewSoftKeyMaskObjectID.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangeSoftKeyMaskReq_template::copy_template(const ChangeSoftKeyMaskReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.maskType().get_selection()) {
+single_value->field_maskType = other_value.maskType();
+} else {
+single_value->field_maskType.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.DataOrAlarmMaskObjectID().get_selection()) {
+single_value->field_DataOrAlarmMaskObjectID = other_value.DataOrAlarmMaskObjectID();
+} else {
+single_value->field_DataOrAlarmMaskObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.NewSoftKeyMaskObjectID().get_selection()) {
+single_value->field_NewSoftKeyMaskObjectID = other_value.NewSoftKeyMaskObjectID();
+} else {
+single_value->field_NewSoftKeyMaskObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangeSoftKeyMaskReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskReq.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangeSoftKeyMaskReq_template::ChangeSoftKeyMaskReq_template()
+{
+}
+
+ChangeSoftKeyMaskReq_template::ChangeSoftKeyMaskReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangeSoftKeyMaskReq_template::ChangeSoftKeyMaskReq_template(const ChangeSoftKeyMaskReq& other_value)
+{
+copy_value(other_value);
+}
+
+ChangeSoftKeyMaskReq_template::ChangeSoftKeyMaskReq_template(const OPTIONAL<ChangeSoftKeyMaskReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeSoftKeyMaskReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskReq from an unbound optional field.");
+}
+}
+
+ChangeSoftKeyMaskReq_template::ChangeSoftKeyMaskReq_template(const ChangeSoftKeyMaskReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangeSoftKeyMaskReq_template::~ChangeSoftKeyMaskReq_template()
+{
+clean_up();
+}
+
+ChangeSoftKeyMaskReq_template& ChangeSoftKeyMaskReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangeSoftKeyMaskReq_template& ChangeSoftKeyMaskReq_template::operator=(const ChangeSoftKeyMaskReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangeSoftKeyMaskReq_template& ChangeSoftKeyMaskReq_template::operator=(const OPTIONAL<ChangeSoftKeyMaskReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeSoftKeyMaskReq&)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 @IsobusVTMessageTypes.ChangeSoftKeyMaskReq.");
+}
+return *this;
+}
+
+ChangeSoftKeyMaskReq_template& ChangeSoftKeyMaskReq_template::operator=(const ChangeSoftKeyMaskReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangeSoftKeyMaskReq_template::match(const ChangeSoftKeyMaskReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.maskType().is_bound()) return FALSE;
+if(!single_value->field_maskType.match(other_value.maskType(), legacy))return FALSE;
+if(!other_value.DataOrAlarmMaskObjectID().is_bound()) return FALSE;
+if(!single_value->field_DataOrAlarmMaskObjectID.match(other_value.DataOrAlarmMaskObjectID(), legacy))return FALSE;
+if(!other_value.NewSoftKeyMaskObjectID().is_bound()) return FALSE;
+if(!single_value->field_NewSoftKeyMaskObjectID.match(other_value.NewSoftKeyMaskObjectID(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskReq.");
+}
+return FALSE;
+}
+
+boolean ChangeSoftKeyMaskReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_maskType.is_bound()
+
+ ||single_value->field_DataOrAlarmMaskObjectID.is_bound()
+
+ ||single_value->field_NewSoftKeyMaskObjectID.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean ChangeSoftKeyMaskReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_maskType.is_value()
+ &&single_value->field_DataOrAlarmMaskObjectID.is_value()
+ &&single_value->field_NewSoftKeyMaskObjectID.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void ChangeSoftKeyMaskReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangeSoftKeyMaskReq ChangeSoftKeyMaskReq_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 @IsobusVTMessageTypes.ChangeSoftKeyMaskReq.");
+ChangeSoftKeyMaskReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_maskType.is_bound()) {
+ret_val.maskType() = single_value->field_maskType.valueof();
+}
+if (single_value->field_DataOrAlarmMaskObjectID.is_bound()) {
+ret_val.DataOrAlarmMaskObjectID() = single_value->field_DataOrAlarmMaskObjectID.valueof();
+}
+if (single_value->field_NewSoftKeyMaskObjectID.is_bound()) {
+ret_val.NewSoftKeyMaskObjectID() = single_value->field_NewSoftKeyMaskObjectID.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void ChangeSoftKeyMaskReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangeSoftKeyMaskReq_template[list_length];
+}
+
+ChangeSoftKeyMaskReq_template& ChangeSoftKeyMaskReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ChangeSoftKeyMaskReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ChangeSoftKeyMaskReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskReq.");
+return single_value->field_vtfunction;
+}
+
+e__ChangeSoftKeyMaskReq__MaskType_template& ChangeSoftKeyMaskReq_template::maskType()
+{
+set_specific();
+return single_value->field_maskType;
+}
+
+const e__ChangeSoftKeyMaskReq__MaskType_template& ChangeSoftKeyMaskReq_template::maskType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field maskType of a non-specific template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskReq.");
+return single_value->field_maskType;
+}
+
+INTEGER_template& ChangeSoftKeyMaskReq_template::DataOrAlarmMaskObjectID()
+{
+set_specific();
+return single_value->field_DataOrAlarmMaskObjectID;
+}
+
+const INTEGER_template& ChangeSoftKeyMaskReq_template::DataOrAlarmMaskObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field DataOrAlarmMaskObjectID of a non-specific template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskReq.");
+return single_value->field_DataOrAlarmMaskObjectID;
+}
+
+INTEGER_template& ChangeSoftKeyMaskReq_template::NewSoftKeyMaskObjectID()
+{
+set_specific();
+return single_value->field_NewSoftKeyMaskObjectID;
+}
+
+const INTEGER_template& ChangeSoftKeyMaskReq_template::NewSoftKeyMaskObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field NewSoftKeyMaskObjectID of a non-specific template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskReq.");
+return single_value->field_NewSoftKeyMaskObjectID;
+}
+
+OCTETSTRING_template& ChangeSoftKeyMaskReq_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& ChangeSoftKeyMaskReq_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskReq.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& ChangeSoftKeyMaskReq_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& ChangeSoftKeyMaskReq_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskReq.");
+return single_value->field_reserved8;
+}
+
+int ChangeSoftKeyMaskReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskReq 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 @IsobusVTMessageTypes.ChangeSoftKeyMaskReq 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 @IsobusVTMessageTypes.ChangeSoftKeyMaskReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskReq.");
+  }
+  return 0;
+}
+
+void ChangeSoftKeyMaskReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", maskType := ");
+single_value->field_maskType.log();
+TTCN_Logger::log_event_str(", DataOrAlarmMaskObjectID := ");
+single_value->field_DataOrAlarmMaskObjectID.log();
+TTCN_Logger::log_event_str(", NewSoftKeyMaskObjectID := ");
+single_value->field_NewSoftKeyMaskObjectID.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangeSoftKeyMaskReq_template::log_match(const ChangeSoftKeyMaskReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_maskType.match(match_value.maskType(), legacy)){
+TTCN_Logger::log_logmatch_info(".maskType");
+single_value->field_maskType.log_match(match_value.maskType(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_DataOrAlarmMaskObjectID.match(match_value.DataOrAlarmMaskObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".DataOrAlarmMaskObjectID");
+single_value->field_DataOrAlarmMaskObjectID.log_match(match_value.DataOrAlarmMaskObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_NewSoftKeyMaskObjectID.match(match_value.NewSoftKeyMaskObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".NewSoftKeyMaskObjectID");
+single_value->field_NewSoftKeyMaskObjectID.log_match(match_value.NewSoftKeyMaskObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", maskType := ");
+single_value->field_maskType.log_match(match_value.maskType(), legacy);
+TTCN_Logger::log_event_str(", DataOrAlarmMaskObjectID := ");
+single_value->field_DataOrAlarmMaskObjectID.log_match(match_value.DataOrAlarmMaskObjectID(), legacy);
+TTCN_Logger::log_event_str(", NewSoftKeyMaskObjectID := ");
+single_value->field_NewSoftKeyMaskObjectID.log_match(match_value.NewSoftKeyMaskObjectID(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 ChangeSoftKeyMaskReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_maskType.encode_text(text_buf);
+single_value->field_DataOrAlarmMaskObjectID.encode_text(text_buf);
+single_value->field_NewSoftKeyMaskObjectID.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.ChangeSoftKeyMaskReq.");
+}
+}
+
+void ChangeSoftKeyMaskReq_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_vtfunction.decode_text(text_buf);
+single_value->field_maskType.decode_text(text_buf);
+single_value->field_DataOrAlarmMaskObjectID.decode_text(text_buf);
+single_value->field_NewSoftKeyMaskObjectID.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 ChangeSoftKeyMaskReq_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 @IsobusVTMessageTypes.ChangeSoftKeyMaskReq.");
+}
+}
+
+void ChangeSoftKeyMaskReq_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: {
+    ChangeSoftKeyMaskReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.ChangeSoftKeyMaskReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) maskType().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) DataOrAlarmMaskObjectID().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) NewSoftKeyMaskObjectID().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "maskType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          maskType().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(), "DataOrAlarmMaskObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          DataOrAlarmMaskObjectID().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(), "NewSoftKeyMaskObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          NewSoftKeyMaskObjectID().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangeSoftKeyMaskReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangeSoftKeyMaskReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangeSoftKeyMaskReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeSoftKeyMaskReq");
+single_value->field_maskType.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeSoftKeyMaskReq");
+single_value->field_DataOrAlarmMaskObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeSoftKeyMaskReq");
+single_value->field_NewSoftKeyMaskObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeSoftKeyMaskReq");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeSoftKeyMaskReq");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeSoftKeyMaskReq");
+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 : "@IsobusVTMessageTypes.ChangeSoftKeyMaskReq");
+}
+
+boolean ChangeSoftKeyMaskReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangeSoftKeyMaskReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangeSoftKeyMaskRes__errorCodes::ChangeSoftKeyMaskRes__errorCodes()
+{
+}
+
+ChangeSoftKeyMaskRes__errorCodes::ChangeSoftKeyMaskRes__errorCodes(const BOOLEAN& par_invalidDataOrAlarmMaskObjectID,
+    const BOOLEAN& par_invalidSoftKeyMaskObjectID,
+    const BOOLEAN& par_missingObjects,
+    const BOOLEAN& par_MaskOrChildObjectHasErrors,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7)
+  :   field_invalidDataOrAlarmMaskObjectID(par_invalidDataOrAlarmMaskObjectID),
+  field_invalidSoftKeyMaskObjectID(par_invalidSoftKeyMaskObjectID),
+  field_missingObjects(par_missingObjects),
+  field_MaskOrChildObjectHasErrors(par_MaskOrChildObjectHasErrors),
+  field_anyOtherError(par_anyOtherError),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7)
+{
+}
+
+ChangeSoftKeyMaskRes__errorCodes::ChangeSoftKeyMaskRes__errorCodes(const ChangeSoftKeyMaskRes__errorCodes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes.");
+if (other_value.invalidDataOrAlarmMaskObjectID().is_bound()) field_invalidDataOrAlarmMaskObjectID = other_value.invalidDataOrAlarmMaskObjectID();
+else field_invalidDataOrAlarmMaskObjectID.clean_up();
+if (other_value.invalidSoftKeyMaskObjectID().is_bound()) field_invalidSoftKeyMaskObjectID = other_value.invalidSoftKeyMaskObjectID();
+else field_invalidSoftKeyMaskObjectID.clean_up();
+if (other_value.missingObjects().is_bound()) field_missingObjects = other_value.missingObjects();
+else field_missingObjects.clean_up();
+if (other_value.MaskOrChildObjectHasErrors().is_bound()) field_MaskOrChildObjectHasErrors = other_value.MaskOrChildObjectHasErrors();
+else field_MaskOrChildObjectHasErrors.clean_up();
+if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+else field_anyOtherError.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+}
+
+void ChangeSoftKeyMaskRes__errorCodes::clean_up()
+{
+field_invalidDataOrAlarmMaskObjectID.clean_up();
+field_invalidSoftKeyMaskObjectID.clean_up();
+field_missingObjects.clean_up();
+field_MaskOrChildObjectHasErrors.clean_up();
+field_anyOtherError.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangeSoftKeyMaskRes__errorCodes::get_descriptor() const { return &ChangeSoftKeyMaskRes__errorCodes_descr_; }
+ChangeSoftKeyMaskRes__errorCodes& ChangeSoftKeyMaskRes__errorCodes::operator=(const ChangeSoftKeyMaskRes__errorCodes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes.");
+  if (other_value.invalidDataOrAlarmMaskObjectID().is_bound()) field_invalidDataOrAlarmMaskObjectID = other_value.invalidDataOrAlarmMaskObjectID();
+  else field_invalidDataOrAlarmMaskObjectID.clean_up();
+  if (other_value.invalidSoftKeyMaskObjectID().is_bound()) field_invalidSoftKeyMaskObjectID = other_value.invalidSoftKeyMaskObjectID();
+  else field_invalidSoftKeyMaskObjectID.clean_up();
+  if (other_value.missingObjects().is_bound()) field_missingObjects = other_value.missingObjects();
+  else field_missingObjects.clean_up();
+  if (other_value.MaskOrChildObjectHasErrors().is_bound()) field_MaskOrChildObjectHasErrors = other_value.MaskOrChildObjectHasErrors();
+  else field_MaskOrChildObjectHasErrors.clean_up();
+  if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+  else field_anyOtherError.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+}
+return *this;
+}
+
+boolean ChangeSoftKeyMaskRes__errorCodes::operator==(const ChangeSoftKeyMaskRes__errorCodes& other_value) const
+{
+return field_invalidDataOrAlarmMaskObjectID==other_value.field_invalidDataOrAlarmMaskObjectID
+  && field_invalidSoftKeyMaskObjectID==other_value.field_invalidSoftKeyMaskObjectID
+  && field_missingObjects==other_value.field_missingObjects
+  && field_MaskOrChildObjectHasErrors==other_value.field_MaskOrChildObjectHasErrors
+  && field_anyOtherError==other_value.field_anyOtherError
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7;
+}
+
+boolean ChangeSoftKeyMaskRes__errorCodes::is_bound() const
+{
+return (field_invalidDataOrAlarmMaskObjectID.is_bound())
+  || (field_invalidSoftKeyMaskObjectID.is_bound())
+  || (field_missingObjects.is_bound())
+  || (field_MaskOrChildObjectHasErrors.is_bound())
+  || (field_anyOtherError.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound());
+}
+boolean ChangeSoftKeyMaskRes__errorCodes::is_value() const
+{
+return field_invalidDataOrAlarmMaskObjectID.is_value()
+  && field_invalidSoftKeyMaskObjectID.is_value()
+  && field_missingObjects.is_value()
+  && field_MaskOrChildObjectHasErrors.is_value()
+  && field_anyOtherError.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value();
+}
+void ChangeSoftKeyMaskRes__errorCodes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ invalidDataOrAlarmMaskObjectID := ");
+field_invalidDataOrAlarmMaskObjectID.log();
+TTCN_Logger::log_event_str(", invalidSoftKeyMaskObjectID := ");
+field_invalidSoftKeyMaskObjectID.log();
+TTCN_Logger::log_event_str(", missingObjects := ");
+field_missingObjects.log();
+TTCN_Logger::log_event_str(", MaskOrChildObjectHasErrors := ");
+field_MaskOrChildObjectHasErrors.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangeSoftKeyMaskRes__errorCodes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes has 8 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) invalidDataOrAlarmMaskObjectID().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) invalidSoftKeyMaskObjectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) missingObjects().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) MaskOrChildObjectHasErrors().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "invalidDataOrAlarmMaskObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidDataOrAlarmMaskObjectID().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(), "invalidSoftKeyMaskObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidSoftKeyMaskObjectID().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(), "missingObjects")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          missingObjects().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(), "MaskOrChildObjectHasErrors")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          MaskOrChildObjectHasErrors().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes");
+  }
+}
+
+void ChangeSoftKeyMaskRes__errorCodes::set_implicit_omit()
+{
+if (invalidDataOrAlarmMaskObjectID().is_bound()) invalidDataOrAlarmMaskObjectID().set_implicit_omit();
+if (invalidSoftKeyMaskObjectID().is_bound()) invalidSoftKeyMaskObjectID().set_implicit_omit();
+if (missingObjects().is_bound()) missingObjects().set_implicit_omit();
+if (MaskOrChildObjectHasErrors().is_bound()) MaskOrChildObjectHasErrors().set_implicit_omit();
+if (anyOtherError().is_bound()) anyOtherError().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+}
+
+void ChangeSoftKeyMaskRes__errorCodes::encode_text(Text_Buf& text_buf) const
+{
+field_invalidDataOrAlarmMaskObjectID.encode_text(text_buf);
+field_invalidSoftKeyMaskObjectID.encode_text(text_buf);
+field_missingObjects.encode_text(text_buf);
+field_MaskOrChildObjectHasErrors.encode_text(text_buf);
+field_anyOtherError.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+}
+
+void ChangeSoftKeyMaskRes__errorCodes::decode_text(Text_Buf& text_buf)
+{
+field_invalidDataOrAlarmMaskObjectID.decode_text(text_buf);
+field_invalidSoftKeyMaskObjectID.decode_text(text_buf);
+field_missingObjects.decode_text(text_buf);
+field_MaskOrChildObjectHasErrors.decode_text(text_buf);
+field_anyOtherError.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+}
+
+void ChangeSoftKeyMaskRes__errorCodes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangeSoftKeyMaskRes__errorCodes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangeSoftKeyMaskRes__errorCodes::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidDataOrAlarmMaskObjectID.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidSoftKeyMaskObjectID.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_missingObjects.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_MaskOrChildObjectHasErrors.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_anyOtherError.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ChangeSoftKeyMaskRes__errorCodes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_invalidDataOrAlarmMaskObjectID.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_invalidSoftKeyMaskObjectID.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_missingObjects.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_MaskOrChildObjectHasErrors.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_anyOtherError.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved5.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved6.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved7.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangeSoftKeyMaskRes__errorCodes_template::single_value_struct {
+BOOLEAN_template field_invalidDataOrAlarmMaskObjectID;
+BOOLEAN_template field_invalidSoftKeyMaskObjectID;
+BOOLEAN_template field_missingObjects;
+BOOLEAN_template field_MaskOrChildObjectHasErrors;
+BOOLEAN_template field_anyOtherError;
+BOOLEAN_template field_reserved5;
+BOOLEAN_template field_reserved6;
+BOOLEAN_template field_reserved7;
+};
+
+void ChangeSoftKeyMaskRes__errorCodes_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_invalidDataOrAlarmMaskObjectID = ANY_VALUE;
+single_value->field_invalidSoftKeyMaskObjectID = ANY_VALUE;
+single_value->field_missingObjects = ANY_VALUE;
+single_value->field_MaskOrChildObjectHasErrors = ANY_VALUE;
+single_value->field_anyOtherError = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+}
+}
+}
+
+void ChangeSoftKeyMaskRes__errorCodes_template::copy_value(const ChangeSoftKeyMaskRes__errorCodes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.invalidDataOrAlarmMaskObjectID().is_bound()) {
+  single_value->field_invalidDataOrAlarmMaskObjectID = other_value.invalidDataOrAlarmMaskObjectID();
+} else {
+  single_value->field_invalidDataOrAlarmMaskObjectID.clean_up();
+}
+if (other_value.invalidSoftKeyMaskObjectID().is_bound()) {
+  single_value->field_invalidSoftKeyMaskObjectID = other_value.invalidSoftKeyMaskObjectID();
+} else {
+  single_value->field_invalidSoftKeyMaskObjectID.clean_up();
+}
+if (other_value.missingObjects().is_bound()) {
+  single_value->field_missingObjects = other_value.missingObjects();
+} else {
+  single_value->field_missingObjects.clean_up();
+}
+if (other_value.MaskOrChildObjectHasErrors().is_bound()) {
+  single_value->field_MaskOrChildObjectHasErrors = other_value.MaskOrChildObjectHasErrors();
+} else {
+  single_value->field_MaskOrChildObjectHasErrors.clean_up();
+}
+if (other_value.anyOtherError().is_bound()) {
+  single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+  single_value->field_anyOtherError.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangeSoftKeyMaskRes__errorCodes_template::copy_template(const ChangeSoftKeyMaskRes__errorCodes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.invalidDataOrAlarmMaskObjectID().get_selection()) {
+single_value->field_invalidDataOrAlarmMaskObjectID = other_value.invalidDataOrAlarmMaskObjectID();
+} else {
+single_value->field_invalidDataOrAlarmMaskObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.invalidSoftKeyMaskObjectID().get_selection()) {
+single_value->field_invalidSoftKeyMaskObjectID = other_value.invalidSoftKeyMaskObjectID();
+} else {
+single_value->field_invalidSoftKeyMaskObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.missingObjects().get_selection()) {
+single_value->field_missingObjects = other_value.missingObjects();
+} else {
+single_value->field_missingObjects.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.MaskOrChildObjectHasErrors().get_selection()) {
+single_value->field_MaskOrChildObjectHasErrors = other_value.MaskOrChildObjectHasErrors();
+} else {
+single_value->field_MaskOrChildObjectHasErrors.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.anyOtherError().get_selection()) {
+single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+single_value->field_anyOtherError.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangeSoftKeyMaskRes__errorCodes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangeSoftKeyMaskRes__errorCodes_template::ChangeSoftKeyMaskRes__errorCodes_template()
+{
+}
+
+ChangeSoftKeyMaskRes__errorCodes_template::ChangeSoftKeyMaskRes__errorCodes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangeSoftKeyMaskRes__errorCodes_template::ChangeSoftKeyMaskRes__errorCodes_template(const ChangeSoftKeyMaskRes__errorCodes& other_value)
+{
+copy_value(other_value);
+}
+
+ChangeSoftKeyMaskRes__errorCodes_template::ChangeSoftKeyMaskRes__errorCodes_template(const OPTIONAL<ChangeSoftKeyMaskRes__errorCodes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeSoftKeyMaskRes__errorCodes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes from an unbound optional field.");
+}
+}
+
+ChangeSoftKeyMaskRes__errorCodes_template::ChangeSoftKeyMaskRes__errorCodes_template(const ChangeSoftKeyMaskRes__errorCodes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangeSoftKeyMaskRes__errorCodes_template::~ChangeSoftKeyMaskRes__errorCodes_template()
+{
+clean_up();
+}
+
+ChangeSoftKeyMaskRes__errorCodes_template& ChangeSoftKeyMaskRes__errorCodes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangeSoftKeyMaskRes__errorCodes_template& ChangeSoftKeyMaskRes__errorCodes_template::operator=(const ChangeSoftKeyMaskRes__errorCodes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangeSoftKeyMaskRes__errorCodes_template& ChangeSoftKeyMaskRes__errorCodes_template::operator=(const OPTIONAL<ChangeSoftKeyMaskRes__errorCodes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeSoftKeyMaskRes__errorCodes&)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 @IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes.");
+}
+return *this;
+}
+
+ChangeSoftKeyMaskRes__errorCodes_template& ChangeSoftKeyMaskRes__errorCodes_template::operator=(const ChangeSoftKeyMaskRes__errorCodes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangeSoftKeyMaskRes__errorCodes_template::match(const ChangeSoftKeyMaskRes__errorCodes& 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.invalidDataOrAlarmMaskObjectID().is_bound()) return FALSE;
+if(!single_value->field_invalidDataOrAlarmMaskObjectID.match(other_value.invalidDataOrAlarmMaskObjectID(), legacy))return FALSE;
+if(!other_value.invalidSoftKeyMaskObjectID().is_bound()) return FALSE;
+if(!single_value->field_invalidSoftKeyMaskObjectID.match(other_value.invalidSoftKeyMaskObjectID(), legacy))return FALSE;
+if(!other_value.missingObjects().is_bound()) return FALSE;
+if(!single_value->field_missingObjects.match(other_value.missingObjects(), legacy))return FALSE;
+if(!other_value.MaskOrChildObjectHasErrors().is_bound()) return FALSE;
+if(!single_value->field_MaskOrChildObjectHasErrors.match(other_value.MaskOrChildObjectHasErrors(), legacy))return FALSE;
+if(!other_value.anyOtherError().is_bound()) return FALSE;
+if(!single_value->field_anyOtherError.match(other_value.anyOtherError(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes.");
+}
+return FALSE;
+}
+
+boolean ChangeSoftKeyMaskRes__errorCodes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_invalidDataOrAlarmMaskObjectID.is_bound()
+
+ ||single_value->field_invalidSoftKeyMaskObjectID.is_bound()
+
+ ||single_value->field_missingObjects.is_bound()
+
+ ||single_value->field_MaskOrChildObjectHasErrors.is_bound()
+
+ ||single_value->field_anyOtherError.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+;
+}
+
+boolean ChangeSoftKeyMaskRes__errorCodes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_invalidDataOrAlarmMaskObjectID.is_value()
+ &&single_value->field_invalidSoftKeyMaskObjectID.is_value()
+ &&single_value->field_missingObjects.is_value()
+ &&single_value->field_MaskOrChildObjectHasErrors.is_value()
+ &&single_value->field_anyOtherError.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value();
+}
+
+void ChangeSoftKeyMaskRes__errorCodes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangeSoftKeyMaskRes__errorCodes ChangeSoftKeyMaskRes__errorCodes_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 @IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes.");
+ChangeSoftKeyMaskRes__errorCodes ret_val;
+if (single_value->field_invalidDataOrAlarmMaskObjectID.is_bound()) {
+ret_val.invalidDataOrAlarmMaskObjectID() = single_value->field_invalidDataOrAlarmMaskObjectID.valueof();
+}
+if (single_value->field_invalidSoftKeyMaskObjectID.is_bound()) {
+ret_val.invalidSoftKeyMaskObjectID() = single_value->field_invalidSoftKeyMaskObjectID.valueof();
+}
+if (single_value->field_missingObjects.is_bound()) {
+ret_val.missingObjects() = single_value->field_missingObjects.valueof();
+}
+if (single_value->field_MaskOrChildObjectHasErrors.is_bound()) {
+ret_val.MaskOrChildObjectHasErrors() = single_value->field_MaskOrChildObjectHasErrors.valueof();
+}
+if (single_value->field_anyOtherError.is_bound()) {
+ret_val.anyOtherError() = single_value->field_anyOtherError.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+return ret_val;
+}
+
+void ChangeSoftKeyMaskRes__errorCodes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangeSoftKeyMaskRes__errorCodes_template[list_length];
+}
+
+ChangeSoftKeyMaskRes__errorCodes_template& ChangeSoftKeyMaskRes__errorCodes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& ChangeSoftKeyMaskRes__errorCodes_template::invalidDataOrAlarmMaskObjectID()
+{
+set_specific();
+return single_value->field_invalidDataOrAlarmMaskObjectID;
+}
+
+const BOOLEAN_template& ChangeSoftKeyMaskRes__errorCodes_template::invalidDataOrAlarmMaskObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidDataOrAlarmMaskObjectID of a non-specific template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes.");
+return single_value->field_invalidDataOrAlarmMaskObjectID;
+}
+
+BOOLEAN_template& ChangeSoftKeyMaskRes__errorCodes_template::invalidSoftKeyMaskObjectID()
+{
+set_specific();
+return single_value->field_invalidSoftKeyMaskObjectID;
+}
+
+const BOOLEAN_template& ChangeSoftKeyMaskRes__errorCodes_template::invalidSoftKeyMaskObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidSoftKeyMaskObjectID of a non-specific template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes.");
+return single_value->field_invalidSoftKeyMaskObjectID;
+}
+
+BOOLEAN_template& ChangeSoftKeyMaskRes__errorCodes_template::missingObjects()
+{
+set_specific();
+return single_value->field_missingObjects;
+}
+
+const BOOLEAN_template& ChangeSoftKeyMaskRes__errorCodes_template::missingObjects() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field missingObjects of a non-specific template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes.");
+return single_value->field_missingObjects;
+}
+
+BOOLEAN_template& ChangeSoftKeyMaskRes__errorCodes_template::MaskOrChildObjectHasErrors()
+{
+set_specific();
+return single_value->field_MaskOrChildObjectHasErrors;
+}
+
+const BOOLEAN_template& ChangeSoftKeyMaskRes__errorCodes_template::MaskOrChildObjectHasErrors() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field MaskOrChildObjectHasErrors of a non-specific template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes.");
+return single_value->field_MaskOrChildObjectHasErrors;
+}
+
+BOOLEAN_template& ChangeSoftKeyMaskRes__errorCodes_template::anyOtherError()
+{
+set_specific();
+return single_value->field_anyOtherError;
+}
+
+const BOOLEAN_template& ChangeSoftKeyMaskRes__errorCodes_template::anyOtherError() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field anyOtherError of a non-specific template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes.");
+return single_value->field_anyOtherError;
+}
+
+BOOLEAN_template& ChangeSoftKeyMaskRes__errorCodes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const BOOLEAN_template& ChangeSoftKeyMaskRes__errorCodes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes.");
+return single_value->field_reserved5;
+}
+
+BOOLEAN_template& ChangeSoftKeyMaskRes__errorCodes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const BOOLEAN_template& ChangeSoftKeyMaskRes__errorCodes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes.");
+return single_value->field_reserved6;
+}
+
+BOOLEAN_template& ChangeSoftKeyMaskRes__errorCodes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const BOOLEAN_template& ChangeSoftKeyMaskRes__errorCodes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes.");
+return single_value->field_reserved7;
+}
+
+int ChangeSoftKeyMaskRes__errorCodes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes 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 @IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes.");
+  }
+  return 0;
+}
+
+void ChangeSoftKeyMaskRes__errorCodes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ invalidDataOrAlarmMaskObjectID := ");
+single_value->field_invalidDataOrAlarmMaskObjectID.log();
+TTCN_Logger::log_event_str(", invalidSoftKeyMaskObjectID := ");
+single_value->field_invalidSoftKeyMaskObjectID.log();
+TTCN_Logger::log_event_str(", missingObjects := ");
+single_value->field_missingObjects.log();
+TTCN_Logger::log_event_str(", MaskOrChildObjectHasErrors := ");
+single_value->field_MaskOrChildObjectHasErrors.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangeSoftKeyMaskRes__errorCodes_template::log_match(const ChangeSoftKeyMaskRes__errorCodes& 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_invalidDataOrAlarmMaskObjectID.match(match_value.invalidDataOrAlarmMaskObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidDataOrAlarmMaskObjectID");
+single_value->field_invalidDataOrAlarmMaskObjectID.log_match(match_value.invalidDataOrAlarmMaskObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_invalidSoftKeyMaskObjectID.match(match_value.invalidSoftKeyMaskObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidSoftKeyMaskObjectID");
+single_value->field_invalidSoftKeyMaskObjectID.log_match(match_value.invalidSoftKeyMaskObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_missingObjects.match(match_value.missingObjects(), legacy)){
+TTCN_Logger::log_logmatch_info(".missingObjects");
+single_value->field_missingObjects.log_match(match_value.missingObjects(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_MaskOrChildObjectHasErrors.match(match_value.MaskOrChildObjectHasErrors(), legacy)){
+TTCN_Logger::log_logmatch_info(".MaskOrChildObjectHasErrors");
+single_value->field_MaskOrChildObjectHasErrors.log_match(match_value.MaskOrChildObjectHasErrors(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_anyOtherError.match(match_value.anyOtherError(), legacy)){
+TTCN_Logger::log_logmatch_info(".anyOtherError");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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("{ invalidDataOrAlarmMaskObjectID := ");
+single_value->field_invalidDataOrAlarmMaskObjectID.log_match(match_value.invalidDataOrAlarmMaskObjectID(), legacy);
+TTCN_Logger::log_event_str(", invalidSoftKeyMaskObjectID := ");
+single_value->field_invalidSoftKeyMaskObjectID.log_match(match_value.invalidSoftKeyMaskObjectID(), legacy);
+TTCN_Logger::log_event_str(", missingObjects := ");
+single_value->field_missingObjects.log_match(match_value.missingObjects(), legacy);
+TTCN_Logger::log_event_str(", MaskOrChildObjectHasErrors := ");
+single_value->field_MaskOrChildObjectHasErrors.log_match(match_value.MaskOrChildObjectHasErrors(), legacy);
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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 ChangeSoftKeyMaskRes__errorCodes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_invalidDataOrAlarmMaskObjectID.encode_text(text_buf);
+single_value->field_invalidSoftKeyMaskObjectID.encode_text(text_buf);
+single_value->field_missingObjects.encode_text(text_buf);
+single_value->field_MaskOrChildObjectHasErrors.encode_text(text_buf);
+single_value->field_anyOtherError.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.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 @IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes.");
+}
+}
+
+void ChangeSoftKeyMaskRes__errorCodes_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_invalidDataOrAlarmMaskObjectID.decode_text(text_buf);
+single_value->field_invalidSoftKeyMaskObjectID.decode_text(text_buf);
+single_value->field_missingObjects.decode_text(text_buf);
+single_value->field_MaskOrChildObjectHasErrors.decode_text(text_buf);
+single_value->field_anyOtherError.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.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 ChangeSoftKeyMaskRes__errorCodes_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 @IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes.");
+}
+}
+
+void ChangeSoftKeyMaskRes__errorCodes_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: {
+    ChangeSoftKeyMaskRes__errorCodes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes has 8 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) invalidDataOrAlarmMaskObjectID().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) invalidSoftKeyMaskObjectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) missingObjects().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) MaskOrChildObjectHasErrors().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "invalidDataOrAlarmMaskObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidDataOrAlarmMaskObjectID().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(), "invalidSoftKeyMaskObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidSoftKeyMaskObjectID().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(), "missingObjects")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          missingObjects().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(), "MaskOrChildObjectHasErrors")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          MaskOrChildObjectHasErrors().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangeSoftKeyMaskRes__errorCodes_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_invalidDataOrAlarmMaskObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes");
+single_value->field_invalidSoftKeyMaskObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes");
+single_value->field_missingObjects.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes");
+single_value->field_MaskOrChildObjectHasErrors.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes");
+single_value->field_anyOtherError.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes");
+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 : "@IsobusVTMessageTypes.ChangeSoftKeyMaskRes_errorCodes");
+}
+
+boolean ChangeSoftKeyMaskRes__errorCodes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangeSoftKeyMaskRes__errorCodes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangeSoftKeyMaskRes::ChangeSoftKeyMaskRes()
+{
+}
+
+ChangeSoftKeyMaskRes::ChangeSoftKeyMaskRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_DataOrAlarmMaskObjectID,
+    const INTEGER& par_NewSoftKeyMaskObjectID,
+    const ChangeSoftKeyMaskRes__errorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_DataOrAlarmMaskObjectID(par_DataOrAlarmMaskObjectID),
+  field_NewSoftKeyMaskObjectID(par_NewSoftKeyMaskObjectID),
+  field_errorCodes(par_errorCodes),
+  field_reserved8(par_reserved8)
+{
+}
+
+ChangeSoftKeyMaskRes::ChangeSoftKeyMaskRes(const ChangeSoftKeyMaskRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangeSoftKeyMaskRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.DataOrAlarmMaskObjectID().is_bound()) field_DataOrAlarmMaskObjectID = other_value.DataOrAlarmMaskObjectID();
+else field_DataOrAlarmMaskObjectID.clean_up();
+if (other_value.NewSoftKeyMaskObjectID().is_bound()) field_NewSoftKeyMaskObjectID = other_value.NewSoftKeyMaskObjectID();
+else field_NewSoftKeyMaskObjectID.clean_up();
+if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+else field_errorCodes.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void ChangeSoftKeyMaskRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_DataOrAlarmMaskObjectID.clean_up();
+field_NewSoftKeyMaskObjectID.clean_up();
+field_errorCodes.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangeSoftKeyMaskRes::get_descriptor() const { return &ChangeSoftKeyMaskRes_descr_; }
+ChangeSoftKeyMaskRes& ChangeSoftKeyMaskRes::operator=(const ChangeSoftKeyMaskRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangeSoftKeyMaskRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.DataOrAlarmMaskObjectID().is_bound()) field_DataOrAlarmMaskObjectID = other_value.DataOrAlarmMaskObjectID();
+  else field_DataOrAlarmMaskObjectID.clean_up();
+  if (other_value.NewSoftKeyMaskObjectID().is_bound()) field_NewSoftKeyMaskObjectID = other_value.NewSoftKeyMaskObjectID();
+  else field_NewSoftKeyMaskObjectID.clean_up();
+  if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+  else field_errorCodes.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean ChangeSoftKeyMaskRes::operator==(const ChangeSoftKeyMaskRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_DataOrAlarmMaskObjectID==other_value.field_DataOrAlarmMaskObjectID
+  && field_NewSoftKeyMaskObjectID==other_value.field_NewSoftKeyMaskObjectID
+  && field_errorCodes==other_value.field_errorCodes
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean ChangeSoftKeyMaskRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_DataOrAlarmMaskObjectID.is_bound())
+  || (field_NewSoftKeyMaskObjectID.is_bound())
+  || (field_errorCodes.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean ChangeSoftKeyMaskRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_DataOrAlarmMaskObjectID.is_value()
+  && field_NewSoftKeyMaskObjectID.is_value()
+  && field_errorCodes.is_value()
+  && field_reserved8.is_value();
+}
+void ChangeSoftKeyMaskRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", DataOrAlarmMaskObjectID := ");
+field_DataOrAlarmMaskObjectID.log();
+TTCN_Logger::log_event_str(", NewSoftKeyMaskObjectID := ");
+field_NewSoftKeyMaskObjectID.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangeSoftKeyMaskRes::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 @IsobusVTMessageTypes.ChangeSoftKeyMaskRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) DataOrAlarmMaskObjectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) NewSoftKeyMaskObjectID().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "DataOrAlarmMaskObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          DataOrAlarmMaskObjectID().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(), "NewSoftKeyMaskObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          NewSoftKeyMaskObjectID().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangeSoftKeyMaskRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangeSoftKeyMaskRes");
+  }
+}
+
+void ChangeSoftKeyMaskRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (DataOrAlarmMaskObjectID().is_bound()) DataOrAlarmMaskObjectID().set_implicit_omit();
+if (NewSoftKeyMaskObjectID().is_bound()) NewSoftKeyMaskObjectID().set_implicit_omit();
+if (errorCodes().is_bound()) errorCodes().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void ChangeSoftKeyMaskRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_DataOrAlarmMaskObjectID.encode_text(text_buf);
+field_NewSoftKeyMaskObjectID.encode_text(text_buf);
+field_errorCodes.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void ChangeSoftKeyMaskRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_DataOrAlarmMaskObjectID.decode_text(text_buf);
+field_NewSoftKeyMaskObjectID.decode_text(text_buf);
+field_errorCodes.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void ChangeSoftKeyMaskRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangeSoftKeyMaskRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangeSoftKeyMaskRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_DataOrAlarmMaskObjectID.RAW_decode(ValidObjectID_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_NewSoftKeyMaskObjectID.RAW_decode(ValidObjectID_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, ChangeSoftKeyMaskRes__errorCodes_descr_.raw->forceomit);
+  decoded_field_length = field_errorCodes.RAW_decode(ChangeSoftKeyMaskRes__errorCodes_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, ChangeSoftKeyMaskRes_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(ChangeSoftKeyMaskRes_reserved8_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 ChangeSoftKeyMaskRes::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, ChangeSoftKeyMaskRes__errorCodes_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, ChangeSoftKeyMaskRes_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_DataOrAlarmMaskObjectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_NewSoftKeyMaskObjectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_errorCodes.RAW_encode(ChangeSoftKeyMaskRes__errorCodes_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved8.RAW_encode(ChangeSoftKeyMaskRes_reserved8_descr_, *myleaf.body.node.nodes[4]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangeSoftKeyMaskRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_DataOrAlarmMaskObjectID;
+INTEGER_template field_NewSoftKeyMaskObjectID;
+ChangeSoftKeyMaskRes__errorCodes_template field_errorCodes;
+OCTETSTRING_template field_reserved8;
+};
+
+void ChangeSoftKeyMaskRes_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_vtfunction = ANY_VALUE;
+single_value->field_DataOrAlarmMaskObjectID = ANY_VALUE;
+single_value->field_NewSoftKeyMaskObjectID = ANY_VALUE;
+single_value->field_errorCodes = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void ChangeSoftKeyMaskRes_template::copy_value(const ChangeSoftKeyMaskRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.DataOrAlarmMaskObjectID().is_bound()) {
+  single_value->field_DataOrAlarmMaskObjectID = other_value.DataOrAlarmMaskObjectID();
+} else {
+  single_value->field_DataOrAlarmMaskObjectID.clean_up();
+}
+if (other_value.NewSoftKeyMaskObjectID().is_bound()) {
+  single_value->field_NewSoftKeyMaskObjectID = other_value.NewSoftKeyMaskObjectID();
+} else {
+  single_value->field_NewSoftKeyMaskObjectID.clean_up();
+}
+if (other_value.errorCodes().is_bound()) {
+  single_value->field_errorCodes = other_value.errorCodes();
+} else {
+  single_value->field_errorCodes.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangeSoftKeyMaskRes_template::copy_template(const ChangeSoftKeyMaskRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.DataOrAlarmMaskObjectID().get_selection()) {
+single_value->field_DataOrAlarmMaskObjectID = other_value.DataOrAlarmMaskObjectID();
+} else {
+single_value->field_DataOrAlarmMaskObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.NewSoftKeyMaskObjectID().get_selection()) {
+single_value->field_NewSoftKeyMaskObjectID = other_value.NewSoftKeyMaskObjectID();
+} else {
+single_value->field_NewSoftKeyMaskObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.errorCodes().get_selection()) {
+single_value->field_errorCodes = other_value.errorCodes();
+} else {
+single_value->field_errorCodes.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangeSoftKeyMaskRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskRes.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangeSoftKeyMaskRes_template::ChangeSoftKeyMaskRes_template()
+{
+}
+
+ChangeSoftKeyMaskRes_template::ChangeSoftKeyMaskRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangeSoftKeyMaskRes_template::ChangeSoftKeyMaskRes_template(const ChangeSoftKeyMaskRes& other_value)
+{
+copy_value(other_value);
+}
+
+ChangeSoftKeyMaskRes_template::ChangeSoftKeyMaskRes_template(const OPTIONAL<ChangeSoftKeyMaskRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeSoftKeyMaskRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskRes from an unbound optional field.");
+}
+}
+
+ChangeSoftKeyMaskRes_template::ChangeSoftKeyMaskRes_template(const ChangeSoftKeyMaskRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangeSoftKeyMaskRes_template::~ChangeSoftKeyMaskRes_template()
+{
+clean_up();
+}
+
+ChangeSoftKeyMaskRes_template& ChangeSoftKeyMaskRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangeSoftKeyMaskRes_template& ChangeSoftKeyMaskRes_template::operator=(const ChangeSoftKeyMaskRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangeSoftKeyMaskRes_template& ChangeSoftKeyMaskRes_template::operator=(const OPTIONAL<ChangeSoftKeyMaskRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeSoftKeyMaskRes&)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 @IsobusVTMessageTypes.ChangeSoftKeyMaskRes.");
+}
+return *this;
+}
+
+ChangeSoftKeyMaskRes_template& ChangeSoftKeyMaskRes_template::operator=(const ChangeSoftKeyMaskRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangeSoftKeyMaskRes_template::match(const ChangeSoftKeyMaskRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.DataOrAlarmMaskObjectID().is_bound()) return FALSE;
+if(!single_value->field_DataOrAlarmMaskObjectID.match(other_value.DataOrAlarmMaskObjectID(), legacy))return FALSE;
+if(!other_value.NewSoftKeyMaskObjectID().is_bound()) return FALSE;
+if(!single_value->field_NewSoftKeyMaskObjectID.match(other_value.NewSoftKeyMaskObjectID(), legacy))return FALSE;
+if(!other_value.errorCodes().is_bound()) return FALSE;
+if(!single_value->field_errorCodes.match(other_value.errorCodes(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskRes.");
+}
+return FALSE;
+}
+
+boolean ChangeSoftKeyMaskRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_DataOrAlarmMaskObjectID.is_bound()
+
+ ||single_value->field_NewSoftKeyMaskObjectID.is_bound()
+
+ ||single_value->field_errorCodes.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean ChangeSoftKeyMaskRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_DataOrAlarmMaskObjectID.is_value()
+ &&single_value->field_NewSoftKeyMaskObjectID.is_value()
+ &&single_value->field_errorCodes.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void ChangeSoftKeyMaskRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangeSoftKeyMaskRes ChangeSoftKeyMaskRes_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 @IsobusVTMessageTypes.ChangeSoftKeyMaskRes.");
+ChangeSoftKeyMaskRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_DataOrAlarmMaskObjectID.is_bound()) {
+ret_val.DataOrAlarmMaskObjectID() = single_value->field_DataOrAlarmMaskObjectID.valueof();
+}
+if (single_value->field_NewSoftKeyMaskObjectID.is_bound()) {
+ret_val.NewSoftKeyMaskObjectID() = single_value->field_NewSoftKeyMaskObjectID.valueof();
+}
+if (single_value->field_errorCodes.is_bound()) {
+ret_val.errorCodes() = single_value->field_errorCodes.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void ChangeSoftKeyMaskRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangeSoftKeyMaskRes_template[list_length];
+}
+
+ChangeSoftKeyMaskRes_template& ChangeSoftKeyMaskRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ChangeSoftKeyMaskRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ChangeSoftKeyMaskRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskRes.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& ChangeSoftKeyMaskRes_template::DataOrAlarmMaskObjectID()
+{
+set_specific();
+return single_value->field_DataOrAlarmMaskObjectID;
+}
+
+const INTEGER_template& ChangeSoftKeyMaskRes_template::DataOrAlarmMaskObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field DataOrAlarmMaskObjectID of a non-specific template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskRes.");
+return single_value->field_DataOrAlarmMaskObjectID;
+}
+
+INTEGER_template& ChangeSoftKeyMaskRes_template::NewSoftKeyMaskObjectID()
+{
+set_specific();
+return single_value->field_NewSoftKeyMaskObjectID;
+}
+
+const INTEGER_template& ChangeSoftKeyMaskRes_template::NewSoftKeyMaskObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field NewSoftKeyMaskObjectID of a non-specific template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskRes.");
+return single_value->field_NewSoftKeyMaskObjectID;
+}
+
+ChangeSoftKeyMaskRes__errorCodes_template& ChangeSoftKeyMaskRes_template::errorCodes()
+{
+set_specific();
+return single_value->field_errorCodes;
+}
+
+const ChangeSoftKeyMaskRes__errorCodes_template& ChangeSoftKeyMaskRes_template::errorCodes() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field errorCodes of a non-specific template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskRes.");
+return single_value->field_errorCodes;
+}
+
+OCTETSTRING_template& ChangeSoftKeyMaskRes_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& ChangeSoftKeyMaskRes_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskRes.");
+return single_value->field_reserved8;
+}
+
+int ChangeSoftKeyMaskRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskRes 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 @IsobusVTMessageTypes.ChangeSoftKeyMaskRes 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 @IsobusVTMessageTypes.ChangeSoftKeyMaskRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeSoftKeyMaskRes.");
+  }
+  return 0;
+}
+
+void ChangeSoftKeyMaskRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", DataOrAlarmMaskObjectID := ");
+single_value->field_DataOrAlarmMaskObjectID.log();
+TTCN_Logger::log_event_str(", NewSoftKeyMaskObjectID := ");
+single_value->field_NewSoftKeyMaskObjectID.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangeSoftKeyMaskRes_template::log_match(const ChangeSoftKeyMaskRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_DataOrAlarmMaskObjectID.match(match_value.DataOrAlarmMaskObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".DataOrAlarmMaskObjectID");
+single_value->field_DataOrAlarmMaskObjectID.log_match(match_value.DataOrAlarmMaskObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_NewSoftKeyMaskObjectID.match(match_value.NewSoftKeyMaskObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".NewSoftKeyMaskObjectID");
+single_value->field_NewSoftKeyMaskObjectID.log_match(match_value.NewSoftKeyMaskObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_errorCodes.match(match_value.errorCodes(), legacy)){
+TTCN_Logger::log_logmatch_info(".errorCodes");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", DataOrAlarmMaskObjectID := ");
+single_value->field_DataOrAlarmMaskObjectID.log_match(match_value.DataOrAlarmMaskObjectID(), legacy);
+TTCN_Logger::log_event_str(", NewSoftKeyMaskObjectID := ");
+single_value->field_NewSoftKeyMaskObjectID.log_match(match_value.NewSoftKeyMaskObjectID(), legacy);
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 ChangeSoftKeyMaskRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_DataOrAlarmMaskObjectID.encode_text(text_buf);
+single_value->field_NewSoftKeyMaskObjectID.encode_text(text_buf);
+single_value->field_errorCodes.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.ChangeSoftKeyMaskRes.");
+}
+}
+
+void ChangeSoftKeyMaskRes_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_vtfunction.decode_text(text_buf);
+single_value->field_DataOrAlarmMaskObjectID.decode_text(text_buf);
+single_value->field_NewSoftKeyMaskObjectID.decode_text(text_buf);
+single_value->field_errorCodes.decode_text(text_buf);
+single_value->field_reserved8.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 ChangeSoftKeyMaskRes_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 @IsobusVTMessageTypes.ChangeSoftKeyMaskRes.");
+}
+}
+
+void ChangeSoftKeyMaskRes_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: {
+    ChangeSoftKeyMaskRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.ChangeSoftKeyMaskRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) DataOrAlarmMaskObjectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) NewSoftKeyMaskObjectID().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "DataOrAlarmMaskObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          DataOrAlarmMaskObjectID().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(), "NewSoftKeyMaskObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          NewSoftKeyMaskObjectID().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangeSoftKeyMaskRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangeSoftKeyMaskRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangeSoftKeyMaskRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeSoftKeyMaskRes");
+single_value->field_DataOrAlarmMaskObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeSoftKeyMaskRes");
+single_value->field_NewSoftKeyMaskObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeSoftKeyMaskRes");
+single_value->field_errorCodes.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeSoftKeyMaskRes");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeSoftKeyMaskRes");
+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 : "@IsobusVTMessageTypes.ChangeSoftKeyMaskRes");
+}
+
+boolean ChangeSoftKeyMaskRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangeSoftKeyMaskRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangeAttributeReq::ChangeAttributeReq()
+{
+}
+
+ChangeAttributeReq::ChangeAttributeReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const INTEGER& par_attributeID,
+    const OCTETSTRING& par_newValueOfAttribute)
+  :   field_vtfunction(par_vtfunction),
+  field_objectID(par_objectID),
+  field_attributeID(par_attributeID),
+  field_newValueOfAttribute(par_newValueOfAttribute)
+{
+}
+
+ChangeAttributeReq::ChangeAttributeReq(const ChangeAttributeReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangeAttributeReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+else field_objectID.clean_up();
+if (other_value.attributeID().is_bound()) field_attributeID = other_value.attributeID();
+else field_attributeID.clean_up();
+if (other_value.newValueOfAttribute().is_bound()) field_newValueOfAttribute = other_value.newValueOfAttribute();
+else field_newValueOfAttribute.clean_up();
+}
+
+void ChangeAttributeReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectID.clean_up();
+field_attributeID.clean_up();
+field_newValueOfAttribute.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangeAttributeReq::get_descriptor() const { return &ChangeAttributeReq_descr_; }
+ChangeAttributeReq& ChangeAttributeReq::operator=(const ChangeAttributeReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangeAttributeReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+  else field_objectID.clean_up();
+  if (other_value.attributeID().is_bound()) field_attributeID = other_value.attributeID();
+  else field_attributeID.clean_up();
+  if (other_value.newValueOfAttribute().is_bound()) field_newValueOfAttribute = other_value.newValueOfAttribute();
+  else field_newValueOfAttribute.clean_up();
+}
+return *this;
+}
+
+boolean ChangeAttributeReq::operator==(const ChangeAttributeReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectID==other_value.field_objectID
+  && field_attributeID==other_value.field_attributeID
+  && field_newValueOfAttribute==other_value.field_newValueOfAttribute;
+}
+
+boolean ChangeAttributeReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectID.is_bound())
+  || (field_attributeID.is_bound())
+  || (field_newValueOfAttribute.is_bound());
+}
+boolean ChangeAttributeReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectID.is_value()
+  && field_attributeID.is_value()
+  && field_newValueOfAttribute.is_value();
+}
+void ChangeAttributeReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+field_objectID.log();
+TTCN_Logger::log_event_str(", attributeID := ");
+field_attributeID.log();
+TTCN_Logger::log_event_str(", newValueOfAttribute := ");
+field_newValueOfAttribute.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangeAttributeReq::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 @IsobusVTMessageTypes.ChangeAttributeReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) attributeID().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) newValueOfAttribute().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "attributeID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          attributeID().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(), "newValueOfAttribute")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          newValueOfAttribute().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 @IsobusVTMessageTypes.ChangeAttributeReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangeAttributeReq");
+  }
+}
+
+void ChangeAttributeReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectID().is_bound()) objectID().set_implicit_omit();
+if (attributeID().is_bound()) attributeID().set_implicit_omit();
+if (newValueOfAttribute().is_bound()) newValueOfAttribute().set_implicit_omit();
+}
+
+void ChangeAttributeReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectID.encode_text(text_buf);
+field_attributeID.encode_text(text_buf);
+field_newValueOfAttribute.encode_text(text_buf);
+}
+
+void ChangeAttributeReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectID.decode_text(text_buf);
+field_attributeID.decode_text(text_buf);
+field_newValueOfAttribute.decode_text(text_buf);
+}
+
+void ChangeAttributeReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangeAttributeReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangeAttributeReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectID.RAW_decode(ValidObjectID_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, AttributeID_descr_.raw->forceomit);
+  decoded_field_length = field_attributeID.RAW_decode(AttributeID_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::OCT4_descr_.raw->forceomit);
+  decoded_field_length = field_newValueOfAttribute.RAW_decode(General__Types::OCT4_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ChangeAttributeReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, AttributeID_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, General__Types::OCT4_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_attributeID.RAW_encode(AttributeID_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_newValueOfAttribute.RAW_encode(General__Types::OCT4_descr_, *myleaf.body.node.nodes[3]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangeAttributeReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectID;
+INTEGER_template field_attributeID;
+OCTETSTRING_template field_newValueOfAttribute;
+};
+
+void ChangeAttributeReq_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_vtfunction = ANY_VALUE;
+single_value->field_objectID = ANY_VALUE;
+single_value->field_attributeID = ANY_VALUE;
+single_value->field_newValueOfAttribute = ANY_VALUE;
+}
+}
+}
+
+void ChangeAttributeReq_template::copy_value(const ChangeAttributeReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectID().is_bound()) {
+  single_value->field_objectID = other_value.objectID();
+} else {
+  single_value->field_objectID.clean_up();
+}
+if (other_value.attributeID().is_bound()) {
+  single_value->field_attributeID = other_value.attributeID();
+} else {
+  single_value->field_attributeID.clean_up();
+}
+if (other_value.newValueOfAttribute().is_bound()) {
+  single_value->field_newValueOfAttribute = other_value.newValueOfAttribute();
+} else {
+  single_value->field_newValueOfAttribute.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangeAttributeReq_template::copy_template(const ChangeAttributeReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectID().get_selection()) {
+single_value->field_objectID = other_value.objectID();
+} else {
+single_value->field_objectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.attributeID().get_selection()) {
+single_value->field_attributeID = other_value.attributeID();
+} else {
+single_value->field_attributeID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.newValueOfAttribute().get_selection()) {
+single_value->field_newValueOfAttribute = other_value.newValueOfAttribute();
+} else {
+single_value->field_newValueOfAttribute.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangeAttributeReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeAttributeReq.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangeAttributeReq_template::ChangeAttributeReq_template()
+{
+}
+
+ChangeAttributeReq_template::ChangeAttributeReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangeAttributeReq_template::ChangeAttributeReq_template(const ChangeAttributeReq& other_value)
+{
+copy_value(other_value);
+}
+
+ChangeAttributeReq_template::ChangeAttributeReq_template(const OPTIONAL<ChangeAttributeReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeAttributeReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangeAttributeReq from an unbound optional field.");
+}
+}
+
+ChangeAttributeReq_template::ChangeAttributeReq_template(const ChangeAttributeReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangeAttributeReq_template::~ChangeAttributeReq_template()
+{
+clean_up();
+}
+
+ChangeAttributeReq_template& ChangeAttributeReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangeAttributeReq_template& ChangeAttributeReq_template::operator=(const ChangeAttributeReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangeAttributeReq_template& ChangeAttributeReq_template::operator=(const OPTIONAL<ChangeAttributeReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeAttributeReq&)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 @IsobusVTMessageTypes.ChangeAttributeReq.");
+}
+return *this;
+}
+
+ChangeAttributeReq_template& ChangeAttributeReq_template::operator=(const ChangeAttributeReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangeAttributeReq_template::match(const ChangeAttributeReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectID().is_bound()) return FALSE;
+if(!single_value->field_objectID.match(other_value.objectID(), legacy))return FALSE;
+if(!other_value.attributeID().is_bound()) return FALSE;
+if(!single_value->field_attributeID.match(other_value.attributeID(), legacy))return FALSE;
+if(!other_value.newValueOfAttribute().is_bound()) return FALSE;
+if(!single_value->field_newValueOfAttribute.match(other_value.newValueOfAttribute(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeAttributeReq.");
+}
+return FALSE;
+}
+
+boolean ChangeAttributeReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectID.is_bound()
+
+ ||single_value->field_attributeID.is_bound()
+
+ ||single_value->field_newValueOfAttribute.is_bound()
+;
+}
+
+boolean ChangeAttributeReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectID.is_value()
+ &&single_value->field_attributeID.is_value()
+ &&single_value->field_newValueOfAttribute.is_value();
+}
+
+void ChangeAttributeReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangeAttributeReq ChangeAttributeReq_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 @IsobusVTMessageTypes.ChangeAttributeReq.");
+ChangeAttributeReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectID.is_bound()) {
+ret_val.objectID() = single_value->field_objectID.valueof();
+}
+if (single_value->field_attributeID.is_bound()) {
+ret_val.attributeID() = single_value->field_attributeID.valueof();
+}
+if (single_value->field_newValueOfAttribute.is_bound()) {
+ret_val.newValueOfAttribute() = single_value->field_newValueOfAttribute.valueof();
+}
+return ret_val;
+}
+
+void ChangeAttributeReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangeAttributeReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangeAttributeReq_template[list_length];
+}
+
+ChangeAttributeReq_template& ChangeAttributeReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangeAttributeReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangeAttributeReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ChangeAttributeReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ChangeAttributeReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ChangeAttributeReq.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& ChangeAttributeReq_template::objectID()
+{
+set_specific();
+return single_value->field_objectID;
+}
+
+const INTEGER_template& ChangeAttributeReq_template::objectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectID of a non-specific template of type @IsobusVTMessageTypes.ChangeAttributeReq.");
+return single_value->field_objectID;
+}
+
+INTEGER_template& ChangeAttributeReq_template::attributeID()
+{
+set_specific();
+return single_value->field_attributeID;
+}
+
+const INTEGER_template& ChangeAttributeReq_template::attributeID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field attributeID of a non-specific template of type @IsobusVTMessageTypes.ChangeAttributeReq.");
+return single_value->field_attributeID;
+}
+
+OCTETSTRING_template& ChangeAttributeReq_template::newValueOfAttribute()
+{
+set_specific();
+return single_value->field_newValueOfAttribute;
+}
+
+const OCTETSTRING_template& ChangeAttributeReq_template::newValueOfAttribute() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field newValueOfAttribute of a non-specific template of type @IsobusVTMessageTypes.ChangeAttributeReq.");
+return single_value->field_newValueOfAttribute;
+}
+
+int ChangeAttributeReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeAttributeReq 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 @IsobusVTMessageTypes.ChangeAttributeReq 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 @IsobusVTMessageTypes.ChangeAttributeReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeAttributeReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeAttributeReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeAttributeReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeAttributeReq.");
+  }
+  return 0;
+}
+
+void ChangeAttributeReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log();
+TTCN_Logger::log_event_str(", attributeID := ");
+single_value->field_attributeID.log();
+TTCN_Logger::log_event_str(", newValueOfAttribute := ");
+single_value->field_newValueOfAttribute.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangeAttributeReq_template::log_match(const ChangeAttributeReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectID.match(match_value.objectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectID");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_attributeID.match(match_value.attributeID(), legacy)){
+TTCN_Logger::log_logmatch_info(".attributeID");
+single_value->field_attributeID.log_match(match_value.attributeID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_newValueOfAttribute.match(match_value.newValueOfAttribute(), legacy)){
+TTCN_Logger::log_logmatch_info(".newValueOfAttribute");
+single_value->field_newValueOfAttribute.log_match(match_value.newValueOfAttribute(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::log_event_str(", attributeID := ");
+single_value->field_attributeID.log_match(match_value.attributeID(), legacy);
+TTCN_Logger::log_event_str(", newValueOfAttribute := ");
+single_value->field_newValueOfAttribute.log_match(match_value.newValueOfAttribute(), 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 ChangeAttributeReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectID.encode_text(text_buf);
+single_value->field_attributeID.encode_text(text_buf);
+single_value->field_newValueOfAttribute.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 @IsobusVTMessageTypes.ChangeAttributeReq.");
+}
+}
+
+void ChangeAttributeReq_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_vtfunction.decode_text(text_buf);
+single_value->field_objectID.decode_text(text_buf);
+single_value->field_attributeID.decode_text(text_buf);
+single_value->field_newValueOfAttribute.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 ChangeAttributeReq_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 @IsobusVTMessageTypes.ChangeAttributeReq.");
+}
+}
+
+void ChangeAttributeReq_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: {
+    ChangeAttributeReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.ChangeAttributeReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) attributeID().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) newValueOfAttribute().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "attributeID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          attributeID().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(), "newValueOfAttribute")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          newValueOfAttribute().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 @IsobusVTMessageTypes.ChangeAttributeReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangeAttributeReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangeAttributeReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeAttributeReq");
+single_value->field_objectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeAttributeReq");
+single_value->field_attributeID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeAttributeReq");
+single_value->field_newValueOfAttribute.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeAttributeReq");
+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 : "@IsobusVTMessageTypes.ChangeAttributeReq");
+}
+
+boolean ChangeAttributeReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangeAttributeReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangeAttributeRes__errorCodes::ChangeAttributeRes__errorCodes()
+{
+}
+
+ChangeAttributeRes__errorCodes::ChangeAttributeRes__errorCodes(const BOOLEAN& par_invalidWorkingSetObjectID,
+    const BOOLEAN& par_invalidAttributeID,
+    const BOOLEAN& par_invalidValue,
+    const BOOLEAN& par_valueInUse,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7)
+  :   field_invalidWorkingSetObjectID(par_invalidWorkingSetObjectID),
+  field_invalidAttributeID(par_invalidAttributeID),
+  field_invalidValue(par_invalidValue),
+  field_valueInUse(par_valueInUse),
+  field_anyOtherError(par_anyOtherError),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7)
+{
+}
+
+ChangeAttributeRes__errorCodes::ChangeAttributeRes__errorCodes(const ChangeAttributeRes__errorCodes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangeAttributeRes_errorCodes.");
+if (other_value.invalidWorkingSetObjectID().is_bound()) field_invalidWorkingSetObjectID = other_value.invalidWorkingSetObjectID();
+else field_invalidWorkingSetObjectID.clean_up();
+if (other_value.invalidAttributeID().is_bound()) field_invalidAttributeID = other_value.invalidAttributeID();
+else field_invalidAttributeID.clean_up();
+if (other_value.invalidValue().is_bound()) field_invalidValue = other_value.invalidValue();
+else field_invalidValue.clean_up();
+if (other_value.valueInUse().is_bound()) field_valueInUse = other_value.valueInUse();
+else field_valueInUse.clean_up();
+if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+else field_anyOtherError.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+}
+
+void ChangeAttributeRes__errorCodes::clean_up()
+{
+field_invalidWorkingSetObjectID.clean_up();
+field_invalidAttributeID.clean_up();
+field_invalidValue.clean_up();
+field_valueInUse.clean_up();
+field_anyOtherError.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangeAttributeRes__errorCodes::get_descriptor() const { return &ChangeAttributeRes__errorCodes_descr_; }
+ChangeAttributeRes__errorCodes& ChangeAttributeRes__errorCodes::operator=(const ChangeAttributeRes__errorCodes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangeAttributeRes_errorCodes.");
+  if (other_value.invalidWorkingSetObjectID().is_bound()) field_invalidWorkingSetObjectID = other_value.invalidWorkingSetObjectID();
+  else field_invalidWorkingSetObjectID.clean_up();
+  if (other_value.invalidAttributeID().is_bound()) field_invalidAttributeID = other_value.invalidAttributeID();
+  else field_invalidAttributeID.clean_up();
+  if (other_value.invalidValue().is_bound()) field_invalidValue = other_value.invalidValue();
+  else field_invalidValue.clean_up();
+  if (other_value.valueInUse().is_bound()) field_valueInUse = other_value.valueInUse();
+  else field_valueInUse.clean_up();
+  if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+  else field_anyOtherError.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+}
+return *this;
+}
+
+boolean ChangeAttributeRes__errorCodes::operator==(const ChangeAttributeRes__errorCodes& other_value) const
+{
+return field_invalidWorkingSetObjectID==other_value.field_invalidWorkingSetObjectID
+  && field_invalidAttributeID==other_value.field_invalidAttributeID
+  && field_invalidValue==other_value.field_invalidValue
+  && field_valueInUse==other_value.field_valueInUse
+  && field_anyOtherError==other_value.field_anyOtherError
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7;
+}
+
+boolean ChangeAttributeRes__errorCodes::is_bound() const
+{
+return (field_invalidWorkingSetObjectID.is_bound())
+  || (field_invalidAttributeID.is_bound())
+  || (field_invalidValue.is_bound())
+  || (field_valueInUse.is_bound())
+  || (field_anyOtherError.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound());
+}
+boolean ChangeAttributeRes__errorCodes::is_value() const
+{
+return field_invalidWorkingSetObjectID.is_value()
+  && field_invalidAttributeID.is_value()
+  && field_invalidValue.is_value()
+  && field_valueInUse.is_value()
+  && field_anyOtherError.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value();
+}
+void ChangeAttributeRes__errorCodes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ invalidWorkingSetObjectID := ");
+field_invalidWorkingSetObjectID.log();
+TTCN_Logger::log_event_str(", invalidAttributeID := ");
+field_invalidAttributeID.log();
+TTCN_Logger::log_event_str(", invalidValue := ");
+field_invalidValue.log();
+TTCN_Logger::log_event_str(", valueInUse := ");
+field_valueInUse.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangeAttributeRes__errorCodes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.ChangeAttributeRes_errorCodes has 8 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) invalidWorkingSetObjectID().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) invalidAttributeID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) invalidValue().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) valueInUse().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "invalidWorkingSetObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidWorkingSetObjectID().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(), "invalidAttributeID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidAttributeID().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(), "invalidValue")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidValue().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(), "valueInUse")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          valueInUse().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ChangeAttributeRes_errorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangeAttributeRes_errorCodes");
+  }
+}
+
+void ChangeAttributeRes__errorCodes::set_implicit_omit()
+{
+if (invalidWorkingSetObjectID().is_bound()) invalidWorkingSetObjectID().set_implicit_omit();
+if (invalidAttributeID().is_bound()) invalidAttributeID().set_implicit_omit();
+if (invalidValue().is_bound()) invalidValue().set_implicit_omit();
+if (valueInUse().is_bound()) valueInUse().set_implicit_omit();
+if (anyOtherError().is_bound()) anyOtherError().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+}
+
+void ChangeAttributeRes__errorCodes::encode_text(Text_Buf& text_buf) const
+{
+field_invalidWorkingSetObjectID.encode_text(text_buf);
+field_invalidAttributeID.encode_text(text_buf);
+field_invalidValue.encode_text(text_buf);
+field_valueInUse.encode_text(text_buf);
+field_anyOtherError.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+}
+
+void ChangeAttributeRes__errorCodes::decode_text(Text_Buf& text_buf)
+{
+field_invalidWorkingSetObjectID.decode_text(text_buf);
+field_invalidAttributeID.decode_text(text_buf);
+field_invalidValue.decode_text(text_buf);
+field_valueInUse.decode_text(text_buf);
+field_anyOtherError.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+}
+
+void ChangeAttributeRes__errorCodes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangeAttributeRes__errorCodes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangeAttributeRes__errorCodes::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidWorkingSetObjectID.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidAttributeID.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidValue.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_valueInUse.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_anyOtherError.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ChangeAttributeRes__errorCodes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_invalidWorkingSetObjectID.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_invalidAttributeID.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_invalidValue.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_valueInUse.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_anyOtherError.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved5.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved6.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved7.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangeAttributeRes__errorCodes_template::single_value_struct {
+BOOLEAN_template field_invalidWorkingSetObjectID;
+BOOLEAN_template field_invalidAttributeID;
+BOOLEAN_template field_invalidValue;
+BOOLEAN_template field_valueInUse;
+BOOLEAN_template field_anyOtherError;
+BOOLEAN_template field_reserved5;
+BOOLEAN_template field_reserved6;
+BOOLEAN_template field_reserved7;
+};
+
+void ChangeAttributeRes__errorCodes_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_invalidWorkingSetObjectID = ANY_VALUE;
+single_value->field_invalidAttributeID = ANY_VALUE;
+single_value->field_invalidValue = ANY_VALUE;
+single_value->field_valueInUse = ANY_VALUE;
+single_value->field_anyOtherError = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+}
+}
+}
+
+void ChangeAttributeRes__errorCodes_template::copy_value(const ChangeAttributeRes__errorCodes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.invalidWorkingSetObjectID().is_bound()) {
+  single_value->field_invalidWorkingSetObjectID = other_value.invalidWorkingSetObjectID();
+} else {
+  single_value->field_invalidWorkingSetObjectID.clean_up();
+}
+if (other_value.invalidAttributeID().is_bound()) {
+  single_value->field_invalidAttributeID = other_value.invalidAttributeID();
+} else {
+  single_value->field_invalidAttributeID.clean_up();
+}
+if (other_value.invalidValue().is_bound()) {
+  single_value->field_invalidValue = other_value.invalidValue();
+} else {
+  single_value->field_invalidValue.clean_up();
+}
+if (other_value.valueInUse().is_bound()) {
+  single_value->field_valueInUse = other_value.valueInUse();
+} else {
+  single_value->field_valueInUse.clean_up();
+}
+if (other_value.anyOtherError().is_bound()) {
+  single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+  single_value->field_anyOtherError.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangeAttributeRes__errorCodes_template::copy_template(const ChangeAttributeRes__errorCodes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.invalidWorkingSetObjectID().get_selection()) {
+single_value->field_invalidWorkingSetObjectID = other_value.invalidWorkingSetObjectID();
+} else {
+single_value->field_invalidWorkingSetObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.invalidAttributeID().get_selection()) {
+single_value->field_invalidAttributeID = other_value.invalidAttributeID();
+} else {
+single_value->field_invalidAttributeID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.invalidValue().get_selection()) {
+single_value->field_invalidValue = other_value.invalidValue();
+} else {
+single_value->field_invalidValue.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.valueInUse().get_selection()) {
+single_value->field_valueInUse = other_value.valueInUse();
+} else {
+single_value->field_valueInUse.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.anyOtherError().get_selection()) {
+single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+single_value->field_anyOtherError.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangeAttributeRes__errorCodes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeAttributeRes_errorCodes.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangeAttributeRes__errorCodes_template::ChangeAttributeRes__errorCodes_template()
+{
+}
+
+ChangeAttributeRes__errorCodes_template::ChangeAttributeRes__errorCodes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangeAttributeRes__errorCodes_template::ChangeAttributeRes__errorCodes_template(const ChangeAttributeRes__errorCodes& other_value)
+{
+copy_value(other_value);
+}
+
+ChangeAttributeRes__errorCodes_template::ChangeAttributeRes__errorCodes_template(const OPTIONAL<ChangeAttributeRes__errorCodes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeAttributeRes__errorCodes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangeAttributeRes_errorCodes from an unbound optional field.");
+}
+}
+
+ChangeAttributeRes__errorCodes_template::ChangeAttributeRes__errorCodes_template(const ChangeAttributeRes__errorCodes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangeAttributeRes__errorCodes_template::~ChangeAttributeRes__errorCodes_template()
+{
+clean_up();
+}
+
+ChangeAttributeRes__errorCodes_template& ChangeAttributeRes__errorCodes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangeAttributeRes__errorCodes_template& ChangeAttributeRes__errorCodes_template::operator=(const ChangeAttributeRes__errorCodes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangeAttributeRes__errorCodes_template& ChangeAttributeRes__errorCodes_template::operator=(const OPTIONAL<ChangeAttributeRes__errorCodes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeAttributeRes__errorCodes&)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 @IsobusVTMessageTypes.ChangeAttributeRes_errorCodes.");
+}
+return *this;
+}
+
+ChangeAttributeRes__errorCodes_template& ChangeAttributeRes__errorCodes_template::operator=(const ChangeAttributeRes__errorCodes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangeAttributeRes__errorCodes_template::match(const ChangeAttributeRes__errorCodes& 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.invalidWorkingSetObjectID().is_bound()) return FALSE;
+if(!single_value->field_invalidWorkingSetObjectID.match(other_value.invalidWorkingSetObjectID(), legacy))return FALSE;
+if(!other_value.invalidAttributeID().is_bound()) return FALSE;
+if(!single_value->field_invalidAttributeID.match(other_value.invalidAttributeID(), legacy))return FALSE;
+if(!other_value.invalidValue().is_bound()) return FALSE;
+if(!single_value->field_invalidValue.match(other_value.invalidValue(), legacy))return FALSE;
+if(!other_value.valueInUse().is_bound()) return FALSE;
+if(!single_value->field_valueInUse.match(other_value.valueInUse(), legacy))return FALSE;
+if(!other_value.anyOtherError().is_bound()) return FALSE;
+if(!single_value->field_anyOtherError.match(other_value.anyOtherError(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeAttributeRes_errorCodes.");
+}
+return FALSE;
+}
+
+boolean ChangeAttributeRes__errorCodes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_invalidWorkingSetObjectID.is_bound()
+
+ ||single_value->field_invalidAttributeID.is_bound()
+
+ ||single_value->field_invalidValue.is_bound()
+
+ ||single_value->field_valueInUse.is_bound()
+
+ ||single_value->field_anyOtherError.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+;
+}
+
+boolean ChangeAttributeRes__errorCodes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_invalidWorkingSetObjectID.is_value()
+ &&single_value->field_invalidAttributeID.is_value()
+ &&single_value->field_invalidValue.is_value()
+ &&single_value->field_valueInUse.is_value()
+ &&single_value->field_anyOtherError.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value();
+}
+
+void ChangeAttributeRes__errorCodes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangeAttributeRes__errorCodes ChangeAttributeRes__errorCodes_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 @IsobusVTMessageTypes.ChangeAttributeRes_errorCodes.");
+ChangeAttributeRes__errorCodes ret_val;
+if (single_value->field_invalidWorkingSetObjectID.is_bound()) {
+ret_val.invalidWorkingSetObjectID() = single_value->field_invalidWorkingSetObjectID.valueof();
+}
+if (single_value->field_invalidAttributeID.is_bound()) {
+ret_val.invalidAttributeID() = single_value->field_invalidAttributeID.valueof();
+}
+if (single_value->field_invalidValue.is_bound()) {
+ret_val.invalidValue() = single_value->field_invalidValue.valueof();
+}
+if (single_value->field_valueInUse.is_bound()) {
+ret_val.valueInUse() = single_value->field_valueInUse.valueof();
+}
+if (single_value->field_anyOtherError.is_bound()) {
+ret_val.anyOtherError() = single_value->field_anyOtherError.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+return ret_val;
+}
+
+void ChangeAttributeRes__errorCodes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangeAttributeRes_errorCodes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangeAttributeRes__errorCodes_template[list_length];
+}
+
+ChangeAttributeRes__errorCodes_template& ChangeAttributeRes__errorCodes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangeAttributeRes_errorCodes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangeAttributeRes_errorCodes.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& ChangeAttributeRes__errorCodes_template::invalidWorkingSetObjectID()
+{
+set_specific();
+return single_value->field_invalidWorkingSetObjectID;
+}
+
+const BOOLEAN_template& ChangeAttributeRes__errorCodes_template::invalidWorkingSetObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidWorkingSetObjectID of a non-specific template of type @IsobusVTMessageTypes.ChangeAttributeRes_errorCodes.");
+return single_value->field_invalidWorkingSetObjectID;
+}
+
+BOOLEAN_template& ChangeAttributeRes__errorCodes_template::invalidAttributeID()
+{
+set_specific();
+return single_value->field_invalidAttributeID;
+}
+
+const BOOLEAN_template& ChangeAttributeRes__errorCodes_template::invalidAttributeID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidAttributeID of a non-specific template of type @IsobusVTMessageTypes.ChangeAttributeRes_errorCodes.");
+return single_value->field_invalidAttributeID;
+}
+
+BOOLEAN_template& ChangeAttributeRes__errorCodes_template::invalidValue()
+{
+set_specific();
+return single_value->field_invalidValue;
+}
+
+const BOOLEAN_template& ChangeAttributeRes__errorCodes_template::invalidValue() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidValue of a non-specific template of type @IsobusVTMessageTypes.ChangeAttributeRes_errorCodes.");
+return single_value->field_invalidValue;
+}
+
+BOOLEAN_template& ChangeAttributeRes__errorCodes_template::valueInUse()
+{
+set_specific();
+return single_value->field_valueInUse;
+}
+
+const BOOLEAN_template& ChangeAttributeRes__errorCodes_template::valueInUse() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field valueInUse of a non-specific template of type @IsobusVTMessageTypes.ChangeAttributeRes_errorCodes.");
+return single_value->field_valueInUse;
+}
+
+BOOLEAN_template& ChangeAttributeRes__errorCodes_template::anyOtherError()
+{
+set_specific();
+return single_value->field_anyOtherError;
+}
+
+const BOOLEAN_template& ChangeAttributeRes__errorCodes_template::anyOtherError() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field anyOtherError of a non-specific template of type @IsobusVTMessageTypes.ChangeAttributeRes_errorCodes.");
+return single_value->field_anyOtherError;
+}
+
+BOOLEAN_template& ChangeAttributeRes__errorCodes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const BOOLEAN_template& ChangeAttributeRes__errorCodes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.ChangeAttributeRes_errorCodes.");
+return single_value->field_reserved5;
+}
+
+BOOLEAN_template& ChangeAttributeRes__errorCodes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const BOOLEAN_template& ChangeAttributeRes__errorCodes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.ChangeAttributeRes_errorCodes.");
+return single_value->field_reserved6;
+}
+
+BOOLEAN_template& ChangeAttributeRes__errorCodes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const BOOLEAN_template& ChangeAttributeRes__errorCodes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ChangeAttributeRes_errorCodes.");
+return single_value->field_reserved7;
+}
+
+int ChangeAttributeRes__errorCodes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeAttributeRes_errorCodes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeAttributeRes_errorCodes 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 @IsobusVTMessageTypes.ChangeAttributeRes_errorCodes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeAttributeRes_errorCodes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeAttributeRes_errorCodes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeAttributeRes_errorCodes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeAttributeRes_errorCodes.");
+  }
+  return 0;
+}
+
+void ChangeAttributeRes__errorCodes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ invalidWorkingSetObjectID := ");
+single_value->field_invalidWorkingSetObjectID.log();
+TTCN_Logger::log_event_str(", invalidAttributeID := ");
+single_value->field_invalidAttributeID.log();
+TTCN_Logger::log_event_str(", invalidValue := ");
+single_value->field_invalidValue.log();
+TTCN_Logger::log_event_str(", valueInUse := ");
+single_value->field_valueInUse.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangeAttributeRes__errorCodes_template::log_match(const ChangeAttributeRes__errorCodes& 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_invalidWorkingSetObjectID.match(match_value.invalidWorkingSetObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidWorkingSetObjectID");
+single_value->field_invalidWorkingSetObjectID.log_match(match_value.invalidWorkingSetObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_invalidAttributeID.match(match_value.invalidAttributeID(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidAttributeID");
+single_value->field_invalidAttributeID.log_match(match_value.invalidAttributeID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_invalidValue.match(match_value.invalidValue(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidValue");
+single_value->field_invalidValue.log_match(match_value.invalidValue(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_valueInUse.match(match_value.valueInUse(), legacy)){
+TTCN_Logger::log_logmatch_info(".valueInUse");
+single_value->field_valueInUse.log_match(match_value.valueInUse(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_anyOtherError.match(match_value.anyOtherError(), legacy)){
+TTCN_Logger::log_logmatch_info(".anyOtherError");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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("{ invalidWorkingSetObjectID := ");
+single_value->field_invalidWorkingSetObjectID.log_match(match_value.invalidWorkingSetObjectID(), legacy);
+TTCN_Logger::log_event_str(", invalidAttributeID := ");
+single_value->field_invalidAttributeID.log_match(match_value.invalidAttributeID(), legacy);
+TTCN_Logger::log_event_str(", invalidValue := ");
+single_value->field_invalidValue.log_match(match_value.invalidValue(), legacy);
+TTCN_Logger::log_event_str(", valueInUse := ");
+single_value->field_valueInUse.log_match(match_value.valueInUse(), legacy);
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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 ChangeAttributeRes__errorCodes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_invalidWorkingSetObjectID.encode_text(text_buf);
+single_value->field_invalidAttributeID.encode_text(text_buf);
+single_value->field_invalidValue.encode_text(text_buf);
+single_value->field_valueInUse.encode_text(text_buf);
+single_value->field_anyOtherError.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.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 @IsobusVTMessageTypes.ChangeAttributeRes_errorCodes.");
+}
+}
+
+void ChangeAttributeRes__errorCodes_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_invalidWorkingSetObjectID.decode_text(text_buf);
+single_value->field_invalidAttributeID.decode_text(text_buf);
+single_value->field_invalidValue.decode_text(text_buf);
+single_value->field_valueInUse.decode_text(text_buf);
+single_value->field_anyOtherError.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.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 ChangeAttributeRes__errorCodes_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 @IsobusVTMessageTypes.ChangeAttributeRes_errorCodes.");
+}
+}
+
+void ChangeAttributeRes__errorCodes_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: {
+    ChangeAttributeRes__errorCodes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.ChangeAttributeRes_errorCodes has 8 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) invalidWorkingSetObjectID().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) invalidAttributeID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) invalidValue().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) valueInUse().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "invalidWorkingSetObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidWorkingSetObjectID().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(), "invalidAttributeID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidAttributeID().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(), "invalidValue")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidValue().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(), "valueInUse")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          valueInUse().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ChangeAttributeRes_errorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangeAttributeRes_errorCodes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangeAttributeRes__errorCodes_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_invalidWorkingSetObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeAttributeRes_errorCodes");
+single_value->field_invalidAttributeID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeAttributeRes_errorCodes");
+single_value->field_invalidValue.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeAttributeRes_errorCodes");
+single_value->field_valueInUse.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeAttributeRes_errorCodes");
+single_value->field_anyOtherError.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeAttributeRes_errorCodes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeAttributeRes_errorCodes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeAttributeRes_errorCodes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeAttributeRes_errorCodes");
+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 : "@IsobusVTMessageTypes.ChangeAttributeRes_errorCodes");
+}
+
+boolean ChangeAttributeRes__errorCodes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangeAttributeRes__errorCodes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangeAttributeRes::ChangeAttributeRes()
+{
+}
+
+ChangeAttributeRes::ChangeAttributeRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const INTEGER& par_attributeID,
+    const ChangeAttributeRes__errorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_objectID(par_objectID),
+  field_attributeID(par_attributeID),
+  field_errorCodes(par_errorCodes),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+ChangeAttributeRes::ChangeAttributeRes(const ChangeAttributeRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangeAttributeRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+else field_objectID.clean_up();
+if (other_value.attributeID().is_bound()) field_attributeID = other_value.attributeID();
+else field_attributeID.clean_up();
+if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+else field_errorCodes.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void ChangeAttributeRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectID.clean_up();
+field_attributeID.clean_up();
+field_errorCodes.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangeAttributeRes::get_descriptor() const { return &ChangeAttributeRes_descr_; }
+ChangeAttributeRes& ChangeAttributeRes::operator=(const ChangeAttributeRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangeAttributeRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+  else field_objectID.clean_up();
+  if (other_value.attributeID().is_bound()) field_attributeID = other_value.attributeID();
+  else field_attributeID.clean_up();
+  if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+  else field_errorCodes.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean ChangeAttributeRes::operator==(const ChangeAttributeRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectID==other_value.field_objectID
+  && field_attributeID==other_value.field_attributeID
+  && field_errorCodes==other_value.field_errorCodes
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean ChangeAttributeRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectID.is_bound())
+  || (field_attributeID.is_bound())
+  || (field_errorCodes.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean ChangeAttributeRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectID.is_value()
+  && field_attributeID.is_value()
+  && field_errorCodes.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void ChangeAttributeRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+field_objectID.log();
+TTCN_Logger::log_event_str(", attributeID := ");
+field_attributeID.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangeAttributeRes::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 @IsobusVTMessageTypes.ChangeAttributeRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) attributeID().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "attributeID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          attributeID().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangeAttributeRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangeAttributeRes");
+  }
+}
+
+void ChangeAttributeRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectID().is_bound()) objectID().set_implicit_omit();
+if (attributeID().is_bound()) attributeID().set_implicit_omit();
+if (errorCodes().is_bound()) errorCodes().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void ChangeAttributeRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectID.encode_text(text_buf);
+field_attributeID.encode_text(text_buf);
+field_errorCodes.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void ChangeAttributeRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectID.decode_text(text_buf);
+field_attributeID.decode_text(text_buf);
+field_errorCodes.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void ChangeAttributeRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangeAttributeRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangeAttributeRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectID.RAW_decode(ValidObjectID_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, AttributeID_descr_.raw->forceomit);
+  decoded_field_length = field_attributeID.RAW_decode(AttributeID_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, ChangeAttributeRes__errorCodes_descr_.raw->forceomit);
+  decoded_field_length = field_errorCodes.RAW_decode(ChangeAttributeRes__errorCodes_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, ChangeAttributeRes_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(ChangeAttributeRes_reserved6_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, ChangeAttributeRes_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(ChangeAttributeRes_reserved7_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, ChangeAttributeRes_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(ChangeAttributeRes_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ChangeAttributeRes::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, AttributeID_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, ChangeAttributeRes__errorCodes_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, ChangeAttributeRes_reserved6_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, ChangeAttributeRes_reserved7_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, ChangeAttributeRes_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_attributeID.RAW_encode(AttributeID_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_errorCodes.RAW_encode(ChangeAttributeRes__errorCodes_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved6.RAW_encode(ChangeAttributeRes_reserved6_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved7.RAW_encode(ChangeAttributeRes_reserved7_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved8.RAW_encode(ChangeAttributeRes_reserved8_descr_, *myleaf.body.node.nodes[6]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangeAttributeRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectID;
+INTEGER_template field_attributeID;
+ChangeAttributeRes__errorCodes_template field_errorCodes;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void ChangeAttributeRes_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_vtfunction = ANY_VALUE;
+single_value->field_objectID = ANY_VALUE;
+single_value->field_attributeID = ANY_VALUE;
+single_value->field_errorCodes = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void ChangeAttributeRes_template::copy_value(const ChangeAttributeRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectID().is_bound()) {
+  single_value->field_objectID = other_value.objectID();
+} else {
+  single_value->field_objectID.clean_up();
+}
+if (other_value.attributeID().is_bound()) {
+  single_value->field_attributeID = other_value.attributeID();
+} else {
+  single_value->field_attributeID.clean_up();
+}
+if (other_value.errorCodes().is_bound()) {
+  single_value->field_errorCodes = other_value.errorCodes();
+} else {
+  single_value->field_errorCodes.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangeAttributeRes_template::copy_template(const ChangeAttributeRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectID().get_selection()) {
+single_value->field_objectID = other_value.objectID();
+} else {
+single_value->field_objectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.attributeID().get_selection()) {
+single_value->field_attributeID = other_value.attributeID();
+} else {
+single_value->field_attributeID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.errorCodes().get_selection()) {
+single_value->field_errorCodes = other_value.errorCodes();
+} else {
+single_value->field_errorCodes.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangeAttributeRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeAttributeRes.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangeAttributeRes_template::ChangeAttributeRes_template()
+{
+}
+
+ChangeAttributeRes_template::ChangeAttributeRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangeAttributeRes_template::ChangeAttributeRes_template(const ChangeAttributeRes& other_value)
+{
+copy_value(other_value);
+}
+
+ChangeAttributeRes_template::ChangeAttributeRes_template(const OPTIONAL<ChangeAttributeRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeAttributeRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangeAttributeRes from an unbound optional field.");
+}
+}
+
+ChangeAttributeRes_template::ChangeAttributeRes_template(const ChangeAttributeRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangeAttributeRes_template::~ChangeAttributeRes_template()
+{
+clean_up();
+}
+
+ChangeAttributeRes_template& ChangeAttributeRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangeAttributeRes_template& ChangeAttributeRes_template::operator=(const ChangeAttributeRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangeAttributeRes_template& ChangeAttributeRes_template::operator=(const OPTIONAL<ChangeAttributeRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeAttributeRes&)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 @IsobusVTMessageTypes.ChangeAttributeRes.");
+}
+return *this;
+}
+
+ChangeAttributeRes_template& ChangeAttributeRes_template::operator=(const ChangeAttributeRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangeAttributeRes_template::match(const ChangeAttributeRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectID().is_bound()) return FALSE;
+if(!single_value->field_objectID.match(other_value.objectID(), legacy))return FALSE;
+if(!other_value.attributeID().is_bound()) return FALSE;
+if(!single_value->field_attributeID.match(other_value.attributeID(), legacy))return FALSE;
+if(!other_value.errorCodes().is_bound()) return FALSE;
+if(!single_value->field_errorCodes.match(other_value.errorCodes(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeAttributeRes.");
+}
+return FALSE;
+}
+
+boolean ChangeAttributeRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectID.is_bound()
+
+ ||single_value->field_attributeID.is_bound()
+
+ ||single_value->field_errorCodes.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean ChangeAttributeRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectID.is_value()
+ &&single_value->field_attributeID.is_value()
+ &&single_value->field_errorCodes.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void ChangeAttributeRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangeAttributeRes ChangeAttributeRes_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 @IsobusVTMessageTypes.ChangeAttributeRes.");
+ChangeAttributeRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectID.is_bound()) {
+ret_val.objectID() = single_value->field_objectID.valueof();
+}
+if (single_value->field_attributeID.is_bound()) {
+ret_val.attributeID() = single_value->field_attributeID.valueof();
+}
+if (single_value->field_errorCodes.is_bound()) {
+ret_val.errorCodes() = single_value->field_errorCodes.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void ChangeAttributeRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangeAttributeRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangeAttributeRes_template[list_length];
+}
+
+ChangeAttributeRes_template& ChangeAttributeRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangeAttributeRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangeAttributeRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ChangeAttributeRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ChangeAttributeRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ChangeAttributeRes.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& ChangeAttributeRes_template::objectID()
+{
+set_specific();
+return single_value->field_objectID;
+}
+
+const INTEGER_template& ChangeAttributeRes_template::objectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectID of a non-specific template of type @IsobusVTMessageTypes.ChangeAttributeRes.");
+return single_value->field_objectID;
+}
+
+INTEGER_template& ChangeAttributeRes_template::attributeID()
+{
+set_specific();
+return single_value->field_attributeID;
+}
+
+const INTEGER_template& ChangeAttributeRes_template::attributeID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field attributeID of a non-specific template of type @IsobusVTMessageTypes.ChangeAttributeRes.");
+return single_value->field_attributeID;
+}
+
+ChangeAttributeRes__errorCodes_template& ChangeAttributeRes_template::errorCodes()
+{
+set_specific();
+return single_value->field_errorCodes;
+}
+
+const ChangeAttributeRes__errorCodes_template& ChangeAttributeRes_template::errorCodes() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field errorCodes of a non-specific template of type @IsobusVTMessageTypes.ChangeAttributeRes.");
+return single_value->field_errorCodes;
+}
+
+OCTETSTRING_template& ChangeAttributeRes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& ChangeAttributeRes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.ChangeAttributeRes.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& ChangeAttributeRes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& ChangeAttributeRes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ChangeAttributeRes.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& ChangeAttributeRes_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& ChangeAttributeRes_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.ChangeAttributeRes.");
+return single_value->field_reserved8;
+}
+
+int ChangeAttributeRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeAttributeRes 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 @IsobusVTMessageTypes.ChangeAttributeRes 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 @IsobusVTMessageTypes.ChangeAttributeRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeAttributeRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeAttributeRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeAttributeRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeAttributeRes.");
+  }
+  return 0;
+}
+
+void ChangeAttributeRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log();
+TTCN_Logger::log_event_str(", attributeID := ");
+single_value->field_attributeID.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangeAttributeRes_template::log_match(const ChangeAttributeRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectID.match(match_value.objectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectID");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_attributeID.match(match_value.attributeID(), legacy)){
+TTCN_Logger::log_logmatch_info(".attributeID");
+single_value->field_attributeID.log_match(match_value.attributeID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_errorCodes.match(match_value.errorCodes(), legacy)){
+TTCN_Logger::log_logmatch_info(".errorCodes");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::log_event_str(", attributeID := ");
+single_value->field_attributeID.log_match(match_value.attributeID(), legacy);
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 ChangeAttributeRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectID.encode_text(text_buf);
+single_value->field_attributeID.encode_text(text_buf);
+single_value->field_errorCodes.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.ChangeAttributeRes.");
+}
+}
+
+void ChangeAttributeRes_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_vtfunction.decode_text(text_buf);
+single_value->field_objectID.decode_text(text_buf);
+single_value->field_attributeID.decode_text(text_buf);
+single_value->field_errorCodes.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 ChangeAttributeRes_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 @IsobusVTMessageTypes.ChangeAttributeRes.");
+}
+}
+
+void ChangeAttributeRes_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: {
+    ChangeAttributeRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.ChangeAttributeRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) attributeID().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "attributeID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          attributeID().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangeAttributeRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangeAttributeRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangeAttributeRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeAttributeRes");
+single_value->field_objectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeAttributeRes");
+single_value->field_attributeID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeAttributeRes");
+single_value->field_errorCodes.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeAttributeRes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeAttributeRes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeAttributeRes");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeAttributeRes");
+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 : "@IsobusVTMessageTypes.ChangeAttributeRes");
+}
+
+boolean ChangeAttributeRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangeAttributeRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangePriorityRes__errorCodes::ChangePriorityRes__errorCodes()
+{
+}
+
+ChangePriorityRes__errorCodes::ChangePriorityRes__errorCodes(const BOOLEAN& par_invalidObjectID,
+    const BOOLEAN& par_invalidPriority,
+    const BOOLEAN& par_reserved2,
+    const BOOLEAN& par_reserved3,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7)
+  :   field_invalidObjectID(par_invalidObjectID),
+  field_invalidPriority(par_invalidPriority),
+  field_reserved2(par_reserved2),
+  field_reserved3(par_reserved3),
+  field_anyOtherError(par_anyOtherError),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7)
+{
+}
+
+ChangePriorityRes__errorCodes::ChangePriorityRes__errorCodes(const ChangePriorityRes__errorCodes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangePriorityRes_errorCodes.");
+if (other_value.invalidObjectID().is_bound()) field_invalidObjectID = other_value.invalidObjectID();
+else field_invalidObjectID.clean_up();
+if (other_value.invalidPriority().is_bound()) field_invalidPriority = other_value.invalidPriority();
+else field_invalidPriority.clean_up();
+if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+else field_reserved2.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+else field_anyOtherError.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+}
+
+void ChangePriorityRes__errorCodes::clean_up()
+{
+field_invalidObjectID.clean_up();
+field_invalidPriority.clean_up();
+field_reserved2.clean_up();
+field_reserved3.clean_up();
+field_anyOtherError.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangePriorityRes__errorCodes::get_descriptor() const { return &ChangePriorityRes__errorCodes_descr_; }
+ChangePriorityRes__errorCodes& ChangePriorityRes__errorCodes::operator=(const ChangePriorityRes__errorCodes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangePriorityRes_errorCodes.");
+  if (other_value.invalidObjectID().is_bound()) field_invalidObjectID = other_value.invalidObjectID();
+  else field_invalidObjectID.clean_up();
+  if (other_value.invalidPriority().is_bound()) field_invalidPriority = other_value.invalidPriority();
+  else field_invalidPriority.clean_up();
+  if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+  else field_reserved2.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+  else field_anyOtherError.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+}
+return *this;
+}
+
+boolean ChangePriorityRes__errorCodes::operator==(const ChangePriorityRes__errorCodes& other_value) const
+{
+return field_invalidObjectID==other_value.field_invalidObjectID
+  && field_invalidPriority==other_value.field_invalidPriority
+  && field_reserved2==other_value.field_reserved2
+  && field_reserved3==other_value.field_reserved3
+  && field_anyOtherError==other_value.field_anyOtherError
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7;
+}
+
+boolean ChangePriorityRes__errorCodes::is_bound() const
+{
+return (field_invalidObjectID.is_bound())
+  || (field_invalidPriority.is_bound())
+  || (field_reserved2.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_anyOtherError.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound());
+}
+boolean ChangePriorityRes__errorCodes::is_value() const
+{
+return field_invalidObjectID.is_value()
+  && field_invalidPriority.is_value()
+  && field_reserved2.is_value()
+  && field_reserved3.is_value()
+  && field_anyOtherError.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value();
+}
+void ChangePriorityRes__errorCodes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ invalidObjectID := ");
+field_invalidObjectID.log();
+TTCN_Logger::log_event_str(", invalidPriority := ");
+field_invalidPriority.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangePriorityRes__errorCodes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.ChangePriorityRes_errorCodes has 8 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) invalidObjectID().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) invalidPriority().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "invalidObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidObjectID().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(), "invalidPriority")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidPriority().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ChangePriorityRes_errorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangePriorityRes_errorCodes");
+  }
+}
+
+void ChangePriorityRes__errorCodes::set_implicit_omit()
+{
+if (invalidObjectID().is_bound()) invalidObjectID().set_implicit_omit();
+if (invalidPriority().is_bound()) invalidPriority().set_implicit_omit();
+if (reserved2().is_bound()) reserved2().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (anyOtherError().is_bound()) anyOtherError().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+}
+
+void ChangePriorityRes__errorCodes::encode_text(Text_Buf& text_buf) const
+{
+field_invalidObjectID.encode_text(text_buf);
+field_invalidPriority.encode_text(text_buf);
+field_reserved2.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_anyOtherError.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+}
+
+void ChangePriorityRes__errorCodes::decode_text(Text_Buf& text_buf)
+{
+field_invalidObjectID.decode_text(text_buf);
+field_invalidPriority.decode_text(text_buf);
+field_reserved2.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_anyOtherError.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+}
+
+void ChangePriorityRes__errorCodes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangePriorityRes__errorCodes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangePriorityRes__errorCodes::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidObjectID.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidPriority.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved2.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_anyOtherError.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ChangePriorityRes__errorCodes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_invalidObjectID.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_invalidPriority.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved2.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved3.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_anyOtherError.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved5.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved6.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved7.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangePriorityRes__errorCodes_template::single_value_struct {
+BOOLEAN_template field_invalidObjectID;
+BOOLEAN_template field_invalidPriority;
+BOOLEAN_template field_reserved2;
+BOOLEAN_template field_reserved3;
+BOOLEAN_template field_anyOtherError;
+BOOLEAN_template field_reserved5;
+BOOLEAN_template field_reserved6;
+BOOLEAN_template field_reserved7;
+};
+
+void ChangePriorityRes__errorCodes_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_invalidObjectID = ANY_VALUE;
+single_value->field_invalidPriority = ANY_VALUE;
+single_value->field_reserved2 = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_anyOtherError = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+}
+}
+}
+
+void ChangePriorityRes__errorCodes_template::copy_value(const ChangePriorityRes__errorCodes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.invalidObjectID().is_bound()) {
+  single_value->field_invalidObjectID = other_value.invalidObjectID();
+} else {
+  single_value->field_invalidObjectID.clean_up();
+}
+if (other_value.invalidPriority().is_bound()) {
+  single_value->field_invalidPriority = other_value.invalidPriority();
+} else {
+  single_value->field_invalidPriority.clean_up();
+}
+if (other_value.reserved2().is_bound()) {
+  single_value->field_reserved2 = other_value.reserved2();
+} else {
+  single_value->field_reserved2.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.anyOtherError().is_bound()) {
+  single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+  single_value->field_anyOtherError.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangePriorityRes__errorCodes_template::copy_template(const ChangePriorityRes__errorCodes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.invalidObjectID().get_selection()) {
+single_value->field_invalidObjectID = other_value.invalidObjectID();
+} else {
+single_value->field_invalidObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.invalidPriority().get_selection()) {
+single_value->field_invalidPriority = other_value.invalidPriority();
+} else {
+single_value->field_invalidPriority.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved2().get_selection()) {
+single_value->field_reserved2 = other_value.reserved2();
+} else {
+single_value->field_reserved2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.anyOtherError().get_selection()) {
+single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+single_value->field_anyOtherError.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangePriorityRes__errorCodes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangePriorityRes_errorCodes.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangePriorityRes__errorCodes_template::ChangePriorityRes__errorCodes_template()
+{
+}
+
+ChangePriorityRes__errorCodes_template::ChangePriorityRes__errorCodes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangePriorityRes__errorCodes_template::ChangePriorityRes__errorCodes_template(const ChangePriorityRes__errorCodes& other_value)
+{
+copy_value(other_value);
+}
+
+ChangePriorityRes__errorCodes_template::ChangePriorityRes__errorCodes_template(const OPTIONAL<ChangePriorityRes__errorCodes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangePriorityRes__errorCodes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangePriorityRes_errorCodes from an unbound optional field.");
+}
+}
+
+ChangePriorityRes__errorCodes_template::ChangePriorityRes__errorCodes_template(const ChangePriorityRes__errorCodes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangePriorityRes__errorCodes_template::~ChangePriorityRes__errorCodes_template()
+{
+clean_up();
+}
+
+ChangePriorityRes__errorCodes_template& ChangePriorityRes__errorCodes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangePriorityRes__errorCodes_template& ChangePriorityRes__errorCodes_template::operator=(const ChangePriorityRes__errorCodes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangePriorityRes__errorCodes_template& ChangePriorityRes__errorCodes_template::operator=(const OPTIONAL<ChangePriorityRes__errorCodes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangePriorityRes__errorCodes&)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 @IsobusVTMessageTypes.ChangePriorityRes_errorCodes.");
+}
+return *this;
+}
+
+ChangePriorityRes__errorCodes_template& ChangePriorityRes__errorCodes_template::operator=(const ChangePriorityRes__errorCodes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangePriorityRes__errorCodes_template::match(const ChangePriorityRes__errorCodes& 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.invalidObjectID().is_bound()) return FALSE;
+if(!single_value->field_invalidObjectID.match(other_value.invalidObjectID(), legacy))return FALSE;
+if(!other_value.invalidPriority().is_bound()) return FALSE;
+if(!single_value->field_invalidPriority.match(other_value.invalidPriority(), legacy))return FALSE;
+if(!other_value.reserved2().is_bound()) return FALSE;
+if(!single_value->field_reserved2.match(other_value.reserved2(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.anyOtherError().is_bound()) return FALSE;
+if(!single_value->field_anyOtherError.match(other_value.anyOtherError(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangePriorityRes_errorCodes.");
+}
+return FALSE;
+}
+
+boolean ChangePriorityRes__errorCodes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_invalidObjectID.is_bound()
+
+ ||single_value->field_invalidPriority.is_bound()
+
+ ||single_value->field_reserved2.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_anyOtherError.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+;
+}
+
+boolean ChangePriorityRes__errorCodes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_invalidObjectID.is_value()
+ &&single_value->field_invalidPriority.is_value()
+ &&single_value->field_reserved2.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_anyOtherError.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value();
+}
+
+void ChangePriorityRes__errorCodes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangePriorityRes__errorCodes ChangePriorityRes__errorCodes_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 @IsobusVTMessageTypes.ChangePriorityRes_errorCodes.");
+ChangePriorityRes__errorCodes ret_val;
+if (single_value->field_invalidObjectID.is_bound()) {
+ret_val.invalidObjectID() = single_value->field_invalidObjectID.valueof();
+}
+if (single_value->field_invalidPriority.is_bound()) {
+ret_val.invalidPriority() = single_value->field_invalidPriority.valueof();
+}
+if (single_value->field_reserved2.is_bound()) {
+ret_val.reserved2() = single_value->field_reserved2.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_anyOtherError.is_bound()) {
+ret_val.anyOtherError() = single_value->field_anyOtherError.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+return ret_val;
+}
+
+void ChangePriorityRes__errorCodes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangePriorityRes_errorCodes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangePriorityRes__errorCodes_template[list_length];
+}
+
+ChangePriorityRes__errorCodes_template& ChangePriorityRes__errorCodes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangePriorityRes_errorCodes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangePriorityRes_errorCodes.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& ChangePriorityRes__errorCodes_template::invalidObjectID()
+{
+set_specific();
+return single_value->field_invalidObjectID;
+}
+
+const BOOLEAN_template& ChangePriorityRes__errorCodes_template::invalidObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidObjectID of a non-specific template of type @IsobusVTMessageTypes.ChangePriorityRes_errorCodes.");
+return single_value->field_invalidObjectID;
+}
+
+BOOLEAN_template& ChangePriorityRes__errorCodes_template::invalidPriority()
+{
+set_specific();
+return single_value->field_invalidPriority;
+}
+
+const BOOLEAN_template& ChangePriorityRes__errorCodes_template::invalidPriority() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidPriority of a non-specific template of type @IsobusVTMessageTypes.ChangePriorityRes_errorCodes.");
+return single_value->field_invalidPriority;
+}
+
+BOOLEAN_template& ChangePriorityRes__errorCodes_template::reserved2()
+{
+set_specific();
+return single_value->field_reserved2;
+}
+
+const BOOLEAN_template& ChangePriorityRes__errorCodes_template::reserved2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved2 of a non-specific template of type @IsobusVTMessageTypes.ChangePriorityRes_errorCodes.");
+return single_value->field_reserved2;
+}
+
+BOOLEAN_template& ChangePriorityRes__errorCodes_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const BOOLEAN_template& ChangePriorityRes__errorCodes_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.ChangePriorityRes_errorCodes.");
+return single_value->field_reserved3;
+}
+
+BOOLEAN_template& ChangePriorityRes__errorCodes_template::anyOtherError()
+{
+set_specific();
+return single_value->field_anyOtherError;
+}
+
+const BOOLEAN_template& ChangePriorityRes__errorCodes_template::anyOtherError() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field anyOtherError of a non-specific template of type @IsobusVTMessageTypes.ChangePriorityRes_errorCodes.");
+return single_value->field_anyOtherError;
+}
+
+BOOLEAN_template& ChangePriorityRes__errorCodes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const BOOLEAN_template& ChangePriorityRes__errorCodes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.ChangePriorityRes_errorCodes.");
+return single_value->field_reserved5;
+}
+
+BOOLEAN_template& ChangePriorityRes__errorCodes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const BOOLEAN_template& ChangePriorityRes__errorCodes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.ChangePriorityRes_errorCodes.");
+return single_value->field_reserved6;
+}
+
+BOOLEAN_template& ChangePriorityRes__errorCodes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const BOOLEAN_template& ChangePriorityRes__errorCodes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ChangePriorityRes_errorCodes.");
+return single_value->field_reserved7;
+}
+
+int ChangePriorityRes__errorCodes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangePriorityRes_errorCodes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangePriorityRes_errorCodes 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 @IsobusVTMessageTypes.ChangePriorityRes_errorCodes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangePriorityRes_errorCodes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangePriorityRes_errorCodes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangePriorityRes_errorCodes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangePriorityRes_errorCodes.");
+  }
+  return 0;
+}
+
+void ChangePriorityRes__errorCodes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ invalidObjectID := ");
+single_value->field_invalidObjectID.log();
+TTCN_Logger::log_event_str(", invalidPriority := ");
+single_value->field_invalidPriority.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangePriorityRes__errorCodes_template::log_match(const ChangePriorityRes__errorCodes& 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_invalidObjectID.match(match_value.invalidObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidObjectID");
+single_value->field_invalidObjectID.log_match(match_value.invalidObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_invalidPriority.match(match_value.invalidPriority(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidPriority");
+single_value->field_invalidPriority.log_match(match_value.invalidPriority(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved2.match(match_value.reserved2(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved2");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_anyOtherError.match(match_value.anyOtherError(), legacy)){
+TTCN_Logger::log_logmatch_info(".anyOtherError");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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("{ invalidObjectID := ");
+single_value->field_invalidObjectID.log_match(match_value.invalidObjectID(), legacy);
+TTCN_Logger::log_event_str(", invalidPriority := ");
+single_value->field_invalidPriority.log_match(match_value.invalidPriority(), legacy);
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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 ChangePriorityRes__errorCodes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_invalidObjectID.encode_text(text_buf);
+single_value->field_invalidPriority.encode_text(text_buf);
+single_value->field_reserved2.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_anyOtherError.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.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 @IsobusVTMessageTypes.ChangePriorityRes_errorCodes.");
+}
+}
+
+void ChangePriorityRes__errorCodes_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_invalidObjectID.decode_text(text_buf);
+single_value->field_invalidPriority.decode_text(text_buf);
+single_value->field_reserved2.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_anyOtherError.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.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 ChangePriorityRes__errorCodes_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 @IsobusVTMessageTypes.ChangePriorityRes_errorCodes.");
+}
+}
+
+void ChangePriorityRes__errorCodes_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: {
+    ChangePriorityRes__errorCodes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.ChangePriorityRes_errorCodes has 8 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) invalidObjectID().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) invalidPriority().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "invalidObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidObjectID().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(), "invalidPriority")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidPriority().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ChangePriorityRes_errorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangePriorityRes_errorCodes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangePriorityRes__errorCodes_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_invalidObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePriorityRes_errorCodes");
+single_value->field_invalidPriority.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePriorityRes_errorCodes");
+single_value->field_reserved2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePriorityRes_errorCodes");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePriorityRes_errorCodes");
+single_value->field_anyOtherError.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePriorityRes_errorCodes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePriorityRes_errorCodes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePriorityRes_errorCodes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePriorityRes_errorCodes");
+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 : "@IsobusVTMessageTypes.ChangePriorityRes_errorCodes");
+}
+
+boolean ChangePriorityRes__errorCodes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangePriorityRes__errorCodes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangePriorityRes::ChangePriorityRes()
+{
+}
+
+ChangePriorityRes::ChangePriorityRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectIDofArlarmMask,
+    const INTEGER& par_newPriority,
+    const ChangePriorityRes__errorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_objectIDofArlarmMask(par_objectIDofArlarmMask),
+  field_newPriority(par_newPriority),
+  field_errorCodes(par_errorCodes),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+ChangePriorityRes::ChangePriorityRes(const ChangePriorityRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangePriorityRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectIDofArlarmMask().is_bound()) field_objectIDofArlarmMask = other_value.objectIDofArlarmMask();
+else field_objectIDofArlarmMask.clean_up();
+if (other_value.newPriority().is_bound()) field_newPriority = other_value.newPriority();
+else field_newPriority.clean_up();
+if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+else field_errorCodes.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void ChangePriorityRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectIDofArlarmMask.clean_up();
+field_newPriority.clean_up();
+field_errorCodes.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangePriorityRes::get_descriptor() const { return &ChangePriorityRes_descr_; }
+ChangePriorityRes& ChangePriorityRes::operator=(const ChangePriorityRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangePriorityRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectIDofArlarmMask().is_bound()) field_objectIDofArlarmMask = other_value.objectIDofArlarmMask();
+  else field_objectIDofArlarmMask.clean_up();
+  if (other_value.newPriority().is_bound()) field_newPriority = other_value.newPriority();
+  else field_newPriority.clean_up();
+  if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+  else field_errorCodes.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean ChangePriorityRes::operator==(const ChangePriorityRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectIDofArlarmMask==other_value.field_objectIDofArlarmMask
+  && field_newPriority==other_value.field_newPriority
+  && field_errorCodes==other_value.field_errorCodes
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean ChangePriorityRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectIDofArlarmMask.is_bound())
+  || (field_newPriority.is_bound())
+  || (field_errorCodes.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean ChangePriorityRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectIDofArlarmMask.is_value()
+  && field_newPriority.is_value()
+  && field_errorCodes.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void ChangePriorityRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectIDofArlarmMask := ");
+field_objectIDofArlarmMask.log();
+TTCN_Logger::log_event_str(", newPriority := ");
+field_newPriority.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangePriorityRes::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 @IsobusVTMessageTypes.ChangePriorityRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectIDofArlarmMask().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) newPriority().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectIDofArlarmMask")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofArlarmMask().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(), "newPriority")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          newPriority().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangePriorityRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangePriorityRes");
+  }
+}
+
+void ChangePriorityRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectIDofArlarmMask().is_bound()) objectIDofArlarmMask().set_implicit_omit();
+if (newPriority().is_bound()) newPriority().set_implicit_omit();
+if (errorCodes().is_bound()) errorCodes().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void ChangePriorityRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectIDofArlarmMask.encode_text(text_buf);
+field_newPriority.encode_text(text_buf);
+field_errorCodes.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void ChangePriorityRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectIDofArlarmMask.decode_text(text_buf);
+field_newPriority.decode_text(text_buf);
+field_errorCodes.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void ChangePriorityRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangePriorityRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangePriorityRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectIDofArlarmMask.RAW_decode(ValidObjectID_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, Priority_descr_.raw->forceomit);
+  decoded_field_length = field_newPriority.RAW_decode(Priority_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, ChangePriorityRes__errorCodes_descr_.raw->forceomit);
+  decoded_field_length = field_errorCodes.RAW_decode(ChangePriorityRes__errorCodes_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, ChangePriorityRes_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(ChangePriorityRes_reserved7_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, ChangePriorityRes_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(ChangePriorityRes_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ChangePriorityRes::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, Priority_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, ChangePriorityRes__errorCodes_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, ChangePriorityRes_reserved7_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, ChangePriorityRes_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectIDofArlarmMask.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_newPriority.RAW_encode(Priority_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_errorCodes.RAW_encode(ChangePriorityRes__errorCodes_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved7.RAW_encode(ChangePriorityRes_reserved7_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved8.RAW_encode(ChangePriorityRes_reserved8_descr_, *myleaf.body.node.nodes[5]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangePriorityRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectIDofArlarmMask;
+INTEGER_template field_newPriority;
+ChangePriorityRes__errorCodes_template field_errorCodes;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void ChangePriorityRes_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_vtfunction = ANY_VALUE;
+single_value->field_objectIDofArlarmMask = ANY_VALUE;
+single_value->field_newPriority = ANY_VALUE;
+single_value->field_errorCodes = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void ChangePriorityRes_template::copy_value(const ChangePriorityRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectIDofArlarmMask().is_bound()) {
+  single_value->field_objectIDofArlarmMask = other_value.objectIDofArlarmMask();
+} else {
+  single_value->field_objectIDofArlarmMask.clean_up();
+}
+if (other_value.newPriority().is_bound()) {
+  single_value->field_newPriority = other_value.newPriority();
+} else {
+  single_value->field_newPriority.clean_up();
+}
+if (other_value.errorCodes().is_bound()) {
+  single_value->field_errorCodes = other_value.errorCodes();
+} else {
+  single_value->field_errorCodes.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangePriorityRes_template::copy_template(const ChangePriorityRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectIDofArlarmMask().get_selection()) {
+single_value->field_objectIDofArlarmMask = other_value.objectIDofArlarmMask();
+} else {
+single_value->field_objectIDofArlarmMask.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.newPriority().get_selection()) {
+single_value->field_newPriority = other_value.newPriority();
+} else {
+single_value->field_newPriority.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.errorCodes().get_selection()) {
+single_value->field_errorCodes = other_value.errorCodes();
+} else {
+single_value->field_errorCodes.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangePriorityRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangePriorityRes.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangePriorityRes_template::ChangePriorityRes_template()
+{
+}
+
+ChangePriorityRes_template::ChangePriorityRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangePriorityRes_template::ChangePriorityRes_template(const ChangePriorityRes& other_value)
+{
+copy_value(other_value);
+}
+
+ChangePriorityRes_template::ChangePriorityRes_template(const OPTIONAL<ChangePriorityRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangePriorityRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangePriorityRes from an unbound optional field.");
+}
+}
+
+ChangePriorityRes_template::ChangePriorityRes_template(const ChangePriorityRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangePriorityRes_template::~ChangePriorityRes_template()
+{
+clean_up();
+}
+
+ChangePriorityRes_template& ChangePriorityRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangePriorityRes_template& ChangePriorityRes_template::operator=(const ChangePriorityRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangePriorityRes_template& ChangePriorityRes_template::operator=(const OPTIONAL<ChangePriorityRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangePriorityRes&)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 @IsobusVTMessageTypes.ChangePriorityRes.");
+}
+return *this;
+}
+
+ChangePriorityRes_template& ChangePriorityRes_template::operator=(const ChangePriorityRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangePriorityRes_template::match(const ChangePriorityRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectIDofArlarmMask().is_bound()) return FALSE;
+if(!single_value->field_objectIDofArlarmMask.match(other_value.objectIDofArlarmMask(), legacy))return FALSE;
+if(!other_value.newPriority().is_bound()) return FALSE;
+if(!single_value->field_newPriority.match(other_value.newPriority(), legacy))return FALSE;
+if(!other_value.errorCodes().is_bound()) return FALSE;
+if(!single_value->field_errorCodes.match(other_value.errorCodes(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangePriorityRes.");
+}
+return FALSE;
+}
+
+boolean ChangePriorityRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectIDofArlarmMask.is_bound()
+
+ ||single_value->field_newPriority.is_bound()
+
+ ||single_value->field_errorCodes.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean ChangePriorityRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectIDofArlarmMask.is_value()
+ &&single_value->field_newPriority.is_value()
+ &&single_value->field_errorCodes.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void ChangePriorityRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangePriorityRes ChangePriorityRes_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 @IsobusVTMessageTypes.ChangePriorityRes.");
+ChangePriorityRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectIDofArlarmMask.is_bound()) {
+ret_val.objectIDofArlarmMask() = single_value->field_objectIDofArlarmMask.valueof();
+}
+if (single_value->field_newPriority.is_bound()) {
+ret_val.newPriority() = single_value->field_newPriority.valueof();
+}
+if (single_value->field_errorCodes.is_bound()) {
+ret_val.errorCodes() = single_value->field_errorCodes.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void ChangePriorityRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangePriorityRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangePriorityRes_template[list_length];
+}
+
+ChangePriorityRes_template& ChangePriorityRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangePriorityRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangePriorityRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ChangePriorityRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ChangePriorityRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ChangePriorityRes.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& ChangePriorityRes_template::objectIDofArlarmMask()
+{
+set_specific();
+return single_value->field_objectIDofArlarmMask;
+}
+
+const INTEGER_template& ChangePriorityRes_template::objectIDofArlarmMask() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectIDofArlarmMask of a non-specific template of type @IsobusVTMessageTypes.ChangePriorityRes.");
+return single_value->field_objectIDofArlarmMask;
+}
+
+INTEGER_template& ChangePriorityRes_template::newPriority()
+{
+set_specific();
+return single_value->field_newPriority;
+}
+
+const INTEGER_template& ChangePriorityRes_template::newPriority() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field newPriority of a non-specific template of type @IsobusVTMessageTypes.ChangePriorityRes.");
+return single_value->field_newPriority;
+}
+
+ChangePriorityRes__errorCodes_template& ChangePriorityRes_template::errorCodes()
+{
+set_specific();
+return single_value->field_errorCodes;
+}
+
+const ChangePriorityRes__errorCodes_template& ChangePriorityRes_template::errorCodes() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field errorCodes of a non-specific template of type @IsobusVTMessageTypes.ChangePriorityRes.");
+return single_value->field_errorCodes;
+}
+
+OCTETSTRING_template& ChangePriorityRes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& ChangePriorityRes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ChangePriorityRes.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& ChangePriorityRes_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& ChangePriorityRes_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.ChangePriorityRes.");
+return single_value->field_reserved8;
+}
+
+int ChangePriorityRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangePriorityRes 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 @IsobusVTMessageTypes.ChangePriorityRes 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 @IsobusVTMessageTypes.ChangePriorityRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangePriorityRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangePriorityRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangePriorityRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangePriorityRes.");
+  }
+  return 0;
+}
+
+void ChangePriorityRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectIDofArlarmMask := ");
+single_value->field_objectIDofArlarmMask.log();
+TTCN_Logger::log_event_str(", newPriority := ");
+single_value->field_newPriority.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangePriorityRes_template::log_match(const ChangePriorityRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectIDofArlarmMask.match(match_value.objectIDofArlarmMask(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectIDofArlarmMask");
+single_value->field_objectIDofArlarmMask.log_match(match_value.objectIDofArlarmMask(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_newPriority.match(match_value.newPriority(), legacy)){
+TTCN_Logger::log_logmatch_info(".newPriority");
+single_value->field_newPriority.log_match(match_value.newPriority(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_errorCodes.match(match_value.errorCodes(), legacy)){
+TTCN_Logger::log_logmatch_info(".errorCodes");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectIDofArlarmMask := ");
+single_value->field_objectIDofArlarmMask.log_match(match_value.objectIDofArlarmMask(), legacy);
+TTCN_Logger::log_event_str(", newPriority := ");
+single_value->field_newPriority.log_match(match_value.newPriority(), legacy);
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 ChangePriorityRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectIDofArlarmMask.encode_text(text_buf);
+single_value->field_newPriority.encode_text(text_buf);
+single_value->field_errorCodes.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.ChangePriorityRes.");
+}
+}
+
+void ChangePriorityRes_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_vtfunction.decode_text(text_buf);
+single_value->field_objectIDofArlarmMask.decode_text(text_buf);
+single_value->field_newPriority.decode_text(text_buf);
+single_value->field_errorCodes.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 ChangePriorityRes_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 @IsobusVTMessageTypes.ChangePriorityRes.");
+}
+}
+
+void ChangePriorityRes_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: {
+    ChangePriorityRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.ChangePriorityRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectIDofArlarmMask().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) newPriority().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectIDofArlarmMask")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofArlarmMask().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(), "newPriority")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          newPriority().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangePriorityRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangePriorityRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangePriorityRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePriorityRes");
+single_value->field_objectIDofArlarmMask.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePriorityRes");
+single_value->field_newPriority.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePriorityRes");
+single_value->field_errorCodes.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePriorityRes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePriorityRes");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePriorityRes");
+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 : "@IsobusVTMessageTypes.ChangePriorityRes");
+}
+
+boolean ChangePriorityRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangePriorityRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangePriorityReq::ChangePriorityReq()
+{
+}
+
+ChangePriorityReq::ChangePriorityReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectIDofArlarmMask,
+    const INTEGER& par_newPriority,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_objectIDofArlarmMask(par_objectIDofArlarmMask),
+  field_newPriority(par_newPriority),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+ChangePriorityReq::ChangePriorityReq(const ChangePriorityReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangePriorityReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectIDofArlarmMask().is_bound()) field_objectIDofArlarmMask = other_value.objectIDofArlarmMask();
+else field_objectIDofArlarmMask.clean_up();
+if (other_value.newPriority().is_bound()) field_newPriority = other_value.newPriority();
+else field_newPriority.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void ChangePriorityReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectIDofArlarmMask.clean_up();
+field_newPriority.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangePriorityReq::get_descriptor() const { return &ChangePriorityReq_descr_; }
+ChangePriorityReq& ChangePriorityReq::operator=(const ChangePriorityReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangePriorityReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectIDofArlarmMask().is_bound()) field_objectIDofArlarmMask = other_value.objectIDofArlarmMask();
+  else field_objectIDofArlarmMask.clean_up();
+  if (other_value.newPriority().is_bound()) field_newPriority = other_value.newPriority();
+  else field_newPriority.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean ChangePriorityReq::operator==(const ChangePriorityReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectIDofArlarmMask==other_value.field_objectIDofArlarmMask
+  && field_newPriority==other_value.field_newPriority
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean ChangePriorityReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectIDofArlarmMask.is_bound())
+  || (field_newPriority.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean ChangePriorityReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectIDofArlarmMask.is_value()
+  && field_newPriority.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void ChangePriorityReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectIDofArlarmMask := ");
+field_objectIDofArlarmMask.log();
+TTCN_Logger::log_event_str(", newPriority := ");
+field_newPriority.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangePriorityReq::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 @IsobusVTMessageTypes.ChangePriorityReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectIDofArlarmMask().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) newPriority().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectIDofArlarmMask")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofArlarmMask().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(), "newPriority")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          newPriority().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangePriorityReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangePriorityReq");
+  }
+}
+
+void ChangePriorityReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectIDofArlarmMask().is_bound()) objectIDofArlarmMask().set_implicit_omit();
+if (newPriority().is_bound()) newPriority().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void ChangePriorityReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectIDofArlarmMask.encode_text(text_buf);
+field_newPriority.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void ChangePriorityReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectIDofArlarmMask.decode_text(text_buf);
+field_newPriority.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void ChangePriorityReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangePriorityReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangePriorityReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectIDofArlarmMask.RAW_decode(ValidObjectID_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, Priority_descr_.raw->forceomit);
+  decoded_field_length = field_newPriority.RAW_decode(Priority_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, ChangePriorityReq_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(ChangePriorityReq_reserved6_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, ChangePriorityReq_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(ChangePriorityReq_reserved7_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, ChangePriorityReq_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(ChangePriorityReq_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ChangePriorityReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, Priority_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, ChangePriorityReq_reserved6_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, ChangePriorityReq_reserved7_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, ChangePriorityReq_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectIDofArlarmMask.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_newPriority.RAW_encode(Priority_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved6.RAW_encode(ChangePriorityReq_reserved6_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved7.RAW_encode(ChangePriorityReq_reserved7_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved8.RAW_encode(ChangePriorityReq_reserved8_descr_, *myleaf.body.node.nodes[5]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangePriorityReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectIDofArlarmMask;
+INTEGER_template field_newPriority;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void ChangePriorityReq_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_vtfunction = ANY_VALUE;
+single_value->field_objectIDofArlarmMask = ANY_VALUE;
+single_value->field_newPriority = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void ChangePriorityReq_template::copy_value(const ChangePriorityReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectIDofArlarmMask().is_bound()) {
+  single_value->field_objectIDofArlarmMask = other_value.objectIDofArlarmMask();
+} else {
+  single_value->field_objectIDofArlarmMask.clean_up();
+}
+if (other_value.newPriority().is_bound()) {
+  single_value->field_newPriority = other_value.newPriority();
+} else {
+  single_value->field_newPriority.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangePriorityReq_template::copy_template(const ChangePriorityReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectIDofArlarmMask().get_selection()) {
+single_value->field_objectIDofArlarmMask = other_value.objectIDofArlarmMask();
+} else {
+single_value->field_objectIDofArlarmMask.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.newPriority().get_selection()) {
+single_value->field_newPriority = other_value.newPriority();
+} else {
+single_value->field_newPriority.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangePriorityReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangePriorityReq.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangePriorityReq_template::ChangePriorityReq_template()
+{
+}
+
+ChangePriorityReq_template::ChangePriorityReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangePriorityReq_template::ChangePriorityReq_template(const ChangePriorityReq& other_value)
+{
+copy_value(other_value);
+}
+
+ChangePriorityReq_template::ChangePriorityReq_template(const OPTIONAL<ChangePriorityReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangePriorityReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangePriorityReq from an unbound optional field.");
+}
+}
+
+ChangePriorityReq_template::ChangePriorityReq_template(const ChangePriorityReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangePriorityReq_template::~ChangePriorityReq_template()
+{
+clean_up();
+}
+
+ChangePriorityReq_template& ChangePriorityReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangePriorityReq_template& ChangePriorityReq_template::operator=(const ChangePriorityReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangePriorityReq_template& ChangePriorityReq_template::operator=(const OPTIONAL<ChangePriorityReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangePriorityReq&)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 @IsobusVTMessageTypes.ChangePriorityReq.");
+}
+return *this;
+}
+
+ChangePriorityReq_template& ChangePriorityReq_template::operator=(const ChangePriorityReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangePriorityReq_template::match(const ChangePriorityReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectIDofArlarmMask().is_bound()) return FALSE;
+if(!single_value->field_objectIDofArlarmMask.match(other_value.objectIDofArlarmMask(), legacy))return FALSE;
+if(!other_value.newPriority().is_bound()) return FALSE;
+if(!single_value->field_newPriority.match(other_value.newPriority(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangePriorityReq.");
+}
+return FALSE;
+}
+
+boolean ChangePriorityReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectIDofArlarmMask.is_bound()
+
+ ||single_value->field_newPriority.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean ChangePriorityReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectIDofArlarmMask.is_value()
+ &&single_value->field_newPriority.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void ChangePriorityReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangePriorityReq ChangePriorityReq_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 @IsobusVTMessageTypes.ChangePriorityReq.");
+ChangePriorityReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectIDofArlarmMask.is_bound()) {
+ret_val.objectIDofArlarmMask() = single_value->field_objectIDofArlarmMask.valueof();
+}
+if (single_value->field_newPriority.is_bound()) {
+ret_val.newPriority() = single_value->field_newPriority.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void ChangePriorityReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangePriorityReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangePriorityReq_template[list_length];
+}
+
+ChangePriorityReq_template& ChangePriorityReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangePriorityReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangePriorityReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ChangePriorityReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ChangePriorityReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ChangePriorityReq.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& ChangePriorityReq_template::objectIDofArlarmMask()
+{
+set_specific();
+return single_value->field_objectIDofArlarmMask;
+}
+
+const INTEGER_template& ChangePriorityReq_template::objectIDofArlarmMask() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectIDofArlarmMask of a non-specific template of type @IsobusVTMessageTypes.ChangePriorityReq.");
+return single_value->field_objectIDofArlarmMask;
+}
+
+INTEGER_template& ChangePriorityReq_template::newPriority()
+{
+set_specific();
+return single_value->field_newPriority;
+}
+
+const INTEGER_template& ChangePriorityReq_template::newPriority() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field newPriority of a non-specific template of type @IsobusVTMessageTypes.ChangePriorityReq.");
+return single_value->field_newPriority;
+}
+
+OCTETSTRING_template& ChangePriorityReq_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& ChangePriorityReq_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.ChangePriorityReq.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& ChangePriorityReq_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& ChangePriorityReq_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ChangePriorityReq.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& ChangePriorityReq_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& ChangePriorityReq_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.ChangePriorityReq.");
+return single_value->field_reserved8;
+}
+
+int ChangePriorityReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangePriorityReq 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 @IsobusVTMessageTypes.ChangePriorityReq 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 @IsobusVTMessageTypes.ChangePriorityReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangePriorityReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangePriorityReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangePriorityReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangePriorityReq.");
+  }
+  return 0;
+}
+
+void ChangePriorityReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectIDofArlarmMask := ");
+single_value->field_objectIDofArlarmMask.log();
+TTCN_Logger::log_event_str(", newPriority := ");
+single_value->field_newPriority.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangePriorityReq_template::log_match(const ChangePriorityReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectIDofArlarmMask.match(match_value.objectIDofArlarmMask(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectIDofArlarmMask");
+single_value->field_objectIDofArlarmMask.log_match(match_value.objectIDofArlarmMask(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_newPriority.match(match_value.newPriority(), legacy)){
+TTCN_Logger::log_logmatch_info(".newPriority");
+single_value->field_newPriority.log_match(match_value.newPriority(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectIDofArlarmMask := ");
+single_value->field_objectIDofArlarmMask.log_match(match_value.objectIDofArlarmMask(), legacy);
+TTCN_Logger::log_event_str(", newPriority := ");
+single_value->field_newPriority.log_match(match_value.newPriority(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 ChangePriorityReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectIDofArlarmMask.encode_text(text_buf);
+single_value->field_newPriority.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.ChangePriorityReq.");
+}
+}
+
+void ChangePriorityReq_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_vtfunction.decode_text(text_buf);
+single_value->field_objectIDofArlarmMask.decode_text(text_buf);
+single_value->field_newPriority.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 ChangePriorityReq_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 @IsobusVTMessageTypes.ChangePriorityReq.");
+}
+}
+
+void ChangePriorityReq_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: {
+    ChangePriorityReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.ChangePriorityReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectIDofArlarmMask().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) newPriority().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectIDofArlarmMask")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofArlarmMask().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(), "newPriority")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          newPriority().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangePriorityReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangePriorityReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangePriorityReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePriorityReq");
+single_value->field_objectIDofArlarmMask.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePriorityReq");
+single_value->field_newPriority.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePriorityReq");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePriorityReq");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePriorityReq");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePriorityReq");
+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 : "@IsobusVTMessageTypes.ChangePriorityReq");
+}
+
+boolean ChangePriorityReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangePriorityReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangeListItemRes__errorCodes::ChangeListItemRes__errorCodes()
+{
+}
+
+ChangeListItemRes__errorCodes::ChangeListItemRes__errorCodes(const BOOLEAN& par_invalidObjectID,
+    const BOOLEAN& par_invalidListIndex,
+    const BOOLEAN& par_invalidNewListItemObjectID,
+    const BOOLEAN& par_valueInUse,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7)
+  :   field_invalidObjectID(par_invalidObjectID),
+  field_invalidListIndex(par_invalidListIndex),
+  field_invalidNewListItemObjectID(par_invalidNewListItemObjectID),
+  field_valueInUse(par_valueInUse),
+  field_anyOtherError(par_anyOtherError),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7)
+{
+}
+
+ChangeListItemRes__errorCodes::ChangeListItemRes__errorCodes(const ChangeListItemRes__errorCodes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangeListItemRes_errorCodes.");
+if (other_value.invalidObjectID().is_bound()) field_invalidObjectID = other_value.invalidObjectID();
+else field_invalidObjectID.clean_up();
+if (other_value.invalidListIndex().is_bound()) field_invalidListIndex = other_value.invalidListIndex();
+else field_invalidListIndex.clean_up();
+if (other_value.invalidNewListItemObjectID().is_bound()) field_invalidNewListItemObjectID = other_value.invalidNewListItemObjectID();
+else field_invalidNewListItemObjectID.clean_up();
+if (other_value.valueInUse().is_bound()) field_valueInUse = other_value.valueInUse();
+else field_valueInUse.clean_up();
+if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+else field_anyOtherError.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+}
+
+void ChangeListItemRes__errorCodes::clean_up()
+{
+field_invalidObjectID.clean_up();
+field_invalidListIndex.clean_up();
+field_invalidNewListItemObjectID.clean_up();
+field_valueInUse.clean_up();
+field_anyOtherError.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangeListItemRes__errorCodes::get_descriptor() const { return &ChangeListItemRes__errorCodes_descr_; }
+ChangeListItemRes__errorCodes& ChangeListItemRes__errorCodes::operator=(const ChangeListItemRes__errorCodes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangeListItemRes_errorCodes.");
+  if (other_value.invalidObjectID().is_bound()) field_invalidObjectID = other_value.invalidObjectID();
+  else field_invalidObjectID.clean_up();
+  if (other_value.invalidListIndex().is_bound()) field_invalidListIndex = other_value.invalidListIndex();
+  else field_invalidListIndex.clean_up();
+  if (other_value.invalidNewListItemObjectID().is_bound()) field_invalidNewListItemObjectID = other_value.invalidNewListItemObjectID();
+  else field_invalidNewListItemObjectID.clean_up();
+  if (other_value.valueInUse().is_bound()) field_valueInUse = other_value.valueInUse();
+  else field_valueInUse.clean_up();
+  if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+  else field_anyOtherError.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+}
+return *this;
+}
+
+boolean ChangeListItemRes__errorCodes::operator==(const ChangeListItemRes__errorCodes& other_value) const
+{
+return field_invalidObjectID==other_value.field_invalidObjectID
+  && field_invalidListIndex==other_value.field_invalidListIndex
+  && field_invalidNewListItemObjectID==other_value.field_invalidNewListItemObjectID
+  && field_valueInUse==other_value.field_valueInUse
+  && field_anyOtherError==other_value.field_anyOtherError
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7;
+}
+
+boolean ChangeListItemRes__errorCodes::is_bound() const
+{
+return (field_invalidObjectID.is_bound())
+  || (field_invalidListIndex.is_bound())
+  || (field_invalidNewListItemObjectID.is_bound())
+  || (field_valueInUse.is_bound())
+  || (field_anyOtherError.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound());
+}
+boolean ChangeListItemRes__errorCodes::is_value() const
+{
+return field_invalidObjectID.is_value()
+  && field_invalidListIndex.is_value()
+  && field_invalidNewListItemObjectID.is_value()
+  && field_valueInUse.is_value()
+  && field_anyOtherError.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value();
+}
+void ChangeListItemRes__errorCodes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ invalidObjectID := ");
+field_invalidObjectID.log();
+TTCN_Logger::log_event_str(", invalidListIndex := ");
+field_invalidListIndex.log();
+TTCN_Logger::log_event_str(", invalidNewListItemObjectID := ");
+field_invalidNewListItemObjectID.log();
+TTCN_Logger::log_event_str(", valueInUse := ");
+field_valueInUse.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangeListItemRes__errorCodes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.ChangeListItemRes_errorCodes has 8 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) invalidObjectID().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) invalidListIndex().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) invalidNewListItemObjectID().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) valueInUse().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "invalidObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidObjectID().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(), "invalidListIndex")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidListIndex().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(), "invalidNewListItemObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidNewListItemObjectID().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(), "valueInUse")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          valueInUse().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ChangeListItemRes_errorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangeListItemRes_errorCodes");
+  }
+}
+
+void ChangeListItemRes__errorCodes::set_implicit_omit()
+{
+if (invalidObjectID().is_bound()) invalidObjectID().set_implicit_omit();
+if (invalidListIndex().is_bound()) invalidListIndex().set_implicit_omit();
+if (invalidNewListItemObjectID().is_bound()) invalidNewListItemObjectID().set_implicit_omit();
+if (valueInUse().is_bound()) valueInUse().set_implicit_omit();
+if (anyOtherError().is_bound()) anyOtherError().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+}
+
+void ChangeListItemRes__errorCodes::encode_text(Text_Buf& text_buf) const
+{
+field_invalidObjectID.encode_text(text_buf);
+field_invalidListIndex.encode_text(text_buf);
+field_invalidNewListItemObjectID.encode_text(text_buf);
+field_valueInUse.encode_text(text_buf);
+field_anyOtherError.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+}
+
+void ChangeListItemRes__errorCodes::decode_text(Text_Buf& text_buf)
+{
+field_invalidObjectID.decode_text(text_buf);
+field_invalidListIndex.decode_text(text_buf);
+field_invalidNewListItemObjectID.decode_text(text_buf);
+field_valueInUse.decode_text(text_buf);
+field_anyOtherError.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+}
+
+void ChangeListItemRes__errorCodes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangeListItemRes__errorCodes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangeListItemRes__errorCodes::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidObjectID.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidListIndex.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidNewListItemObjectID.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_valueInUse.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_anyOtherError.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ChangeListItemRes__errorCodes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_invalidObjectID.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_invalidListIndex.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_invalidNewListItemObjectID.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_valueInUse.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_anyOtherError.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved5.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved6.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved7.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangeListItemRes__errorCodes_template::single_value_struct {
+BOOLEAN_template field_invalidObjectID;
+BOOLEAN_template field_invalidListIndex;
+BOOLEAN_template field_invalidNewListItemObjectID;
+BOOLEAN_template field_valueInUse;
+BOOLEAN_template field_anyOtherError;
+BOOLEAN_template field_reserved5;
+BOOLEAN_template field_reserved6;
+BOOLEAN_template field_reserved7;
+};
+
+void ChangeListItemRes__errorCodes_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_invalidObjectID = ANY_VALUE;
+single_value->field_invalidListIndex = ANY_VALUE;
+single_value->field_invalidNewListItemObjectID = ANY_VALUE;
+single_value->field_valueInUse = ANY_VALUE;
+single_value->field_anyOtherError = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+}
+}
+}
+
+void ChangeListItemRes__errorCodes_template::copy_value(const ChangeListItemRes__errorCodes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.invalidObjectID().is_bound()) {
+  single_value->field_invalidObjectID = other_value.invalidObjectID();
+} else {
+  single_value->field_invalidObjectID.clean_up();
+}
+if (other_value.invalidListIndex().is_bound()) {
+  single_value->field_invalidListIndex = other_value.invalidListIndex();
+} else {
+  single_value->field_invalidListIndex.clean_up();
+}
+if (other_value.invalidNewListItemObjectID().is_bound()) {
+  single_value->field_invalidNewListItemObjectID = other_value.invalidNewListItemObjectID();
+} else {
+  single_value->field_invalidNewListItemObjectID.clean_up();
+}
+if (other_value.valueInUse().is_bound()) {
+  single_value->field_valueInUse = other_value.valueInUse();
+} else {
+  single_value->field_valueInUse.clean_up();
+}
+if (other_value.anyOtherError().is_bound()) {
+  single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+  single_value->field_anyOtherError.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangeListItemRes__errorCodes_template::copy_template(const ChangeListItemRes__errorCodes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.invalidObjectID().get_selection()) {
+single_value->field_invalidObjectID = other_value.invalidObjectID();
+} else {
+single_value->field_invalidObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.invalidListIndex().get_selection()) {
+single_value->field_invalidListIndex = other_value.invalidListIndex();
+} else {
+single_value->field_invalidListIndex.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.invalidNewListItemObjectID().get_selection()) {
+single_value->field_invalidNewListItemObjectID = other_value.invalidNewListItemObjectID();
+} else {
+single_value->field_invalidNewListItemObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.valueInUse().get_selection()) {
+single_value->field_valueInUse = other_value.valueInUse();
+} else {
+single_value->field_valueInUse.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.anyOtherError().get_selection()) {
+single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+single_value->field_anyOtherError.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangeListItemRes__errorCodes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeListItemRes_errorCodes.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangeListItemRes__errorCodes_template::ChangeListItemRes__errorCodes_template()
+{
+}
+
+ChangeListItemRes__errorCodes_template::ChangeListItemRes__errorCodes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangeListItemRes__errorCodes_template::ChangeListItemRes__errorCodes_template(const ChangeListItemRes__errorCodes& other_value)
+{
+copy_value(other_value);
+}
+
+ChangeListItemRes__errorCodes_template::ChangeListItemRes__errorCodes_template(const OPTIONAL<ChangeListItemRes__errorCodes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeListItemRes__errorCodes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangeListItemRes_errorCodes from an unbound optional field.");
+}
+}
+
+ChangeListItemRes__errorCodes_template::ChangeListItemRes__errorCodes_template(const ChangeListItemRes__errorCodes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangeListItemRes__errorCodes_template::~ChangeListItemRes__errorCodes_template()
+{
+clean_up();
+}
+
+ChangeListItemRes__errorCodes_template& ChangeListItemRes__errorCodes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangeListItemRes__errorCodes_template& ChangeListItemRes__errorCodes_template::operator=(const ChangeListItemRes__errorCodes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangeListItemRes__errorCodes_template& ChangeListItemRes__errorCodes_template::operator=(const OPTIONAL<ChangeListItemRes__errorCodes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeListItemRes__errorCodes&)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 @IsobusVTMessageTypes.ChangeListItemRes_errorCodes.");
+}
+return *this;
+}
+
+ChangeListItemRes__errorCodes_template& ChangeListItemRes__errorCodes_template::operator=(const ChangeListItemRes__errorCodes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangeListItemRes__errorCodes_template::match(const ChangeListItemRes__errorCodes& 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.invalidObjectID().is_bound()) return FALSE;
+if(!single_value->field_invalidObjectID.match(other_value.invalidObjectID(), legacy))return FALSE;
+if(!other_value.invalidListIndex().is_bound()) return FALSE;
+if(!single_value->field_invalidListIndex.match(other_value.invalidListIndex(), legacy))return FALSE;
+if(!other_value.invalidNewListItemObjectID().is_bound()) return FALSE;
+if(!single_value->field_invalidNewListItemObjectID.match(other_value.invalidNewListItemObjectID(), legacy))return FALSE;
+if(!other_value.valueInUse().is_bound()) return FALSE;
+if(!single_value->field_valueInUse.match(other_value.valueInUse(), legacy))return FALSE;
+if(!other_value.anyOtherError().is_bound()) return FALSE;
+if(!single_value->field_anyOtherError.match(other_value.anyOtherError(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeListItemRes_errorCodes.");
+}
+return FALSE;
+}
+
+boolean ChangeListItemRes__errorCodes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_invalidObjectID.is_bound()
+
+ ||single_value->field_invalidListIndex.is_bound()
+
+ ||single_value->field_invalidNewListItemObjectID.is_bound()
+
+ ||single_value->field_valueInUse.is_bound()
+
+ ||single_value->field_anyOtherError.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+;
+}
+
+boolean ChangeListItemRes__errorCodes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_invalidObjectID.is_value()
+ &&single_value->field_invalidListIndex.is_value()
+ &&single_value->field_invalidNewListItemObjectID.is_value()
+ &&single_value->field_valueInUse.is_value()
+ &&single_value->field_anyOtherError.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value();
+}
+
+void ChangeListItemRes__errorCodes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangeListItemRes__errorCodes ChangeListItemRes__errorCodes_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 @IsobusVTMessageTypes.ChangeListItemRes_errorCodes.");
+ChangeListItemRes__errorCodes ret_val;
+if (single_value->field_invalidObjectID.is_bound()) {
+ret_val.invalidObjectID() = single_value->field_invalidObjectID.valueof();
+}
+if (single_value->field_invalidListIndex.is_bound()) {
+ret_val.invalidListIndex() = single_value->field_invalidListIndex.valueof();
+}
+if (single_value->field_invalidNewListItemObjectID.is_bound()) {
+ret_val.invalidNewListItemObjectID() = single_value->field_invalidNewListItemObjectID.valueof();
+}
+if (single_value->field_valueInUse.is_bound()) {
+ret_val.valueInUse() = single_value->field_valueInUse.valueof();
+}
+if (single_value->field_anyOtherError.is_bound()) {
+ret_val.anyOtherError() = single_value->field_anyOtherError.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+return ret_val;
+}
+
+void ChangeListItemRes__errorCodes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangeListItemRes_errorCodes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangeListItemRes__errorCodes_template[list_length];
+}
+
+ChangeListItemRes__errorCodes_template& ChangeListItemRes__errorCodes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangeListItemRes_errorCodes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangeListItemRes_errorCodes.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& ChangeListItemRes__errorCodes_template::invalidObjectID()
+{
+set_specific();
+return single_value->field_invalidObjectID;
+}
+
+const BOOLEAN_template& ChangeListItemRes__errorCodes_template::invalidObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidObjectID of a non-specific template of type @IsobusVTMessageTypes.ChangeListItemRes_errorCodes.");
+return single_value->field_invalidObjectID;
+}
+
+BOOLEAN_template& ChangeListItemRes__errorCodes_template::invalidListIndex()
+{
+set_specific();
+return single_value->field_invalidListIndex;
+}
+
+const BOOLEAN_template& ChangeListItemRes__errorCodes_template::invalidListIndex() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidListIndex of a non-specific template of type @IsobusVTMessageTypes.ChangeListItemRes_errorCodes.");
+return single_value->field_invalidListIndex;
+}
+
+BOOLEAN_template& ChangeListItemRes__errorCodes_template::invalidNewListItemObjectID()
+{
+set_specific();
+return single_value->field_invalidNewListItemObjectID;
+}
+
+const BOOLEAN_template& ChangeListItemRes__errorCodes_template::invalidNewListItemObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidNewListItemObjectID of a non-specific template of type @IsobusVTMessageTypes.ChangeListItemRes_errorCodes.");
+return single_value->field_invalidNewListItemObjectID;
+}
+
+BOOLEAN_template& ChangeListItemRes__errorCodes_template::valueInUse()
+{
+set_specific();
+return single_value->field_valueInUse;
+}
+
+const BOOLEAN_template& ChangeListItemRes__errorCodes_template::valueInUse() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field valueInUse of a non-specific template of type @IsobusVTMessageTypes.ChangeListItemRes_errorCodes.");
+return single_value->field_valueInUse;
+}
+
+BOOLEAN_template& ChangeListItemRes__errorCodes_template::anyOtherError()
+{
+set_specific();
+return single_value->field_anyOtherError;
+}
+
+const BOOLEAN_template& ChangeListItemRes__errorCodes_template::anyOtherError() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field anyOtherError of a non-specific template of type @IsobusVTMessageTypes.ChangeListItemRes_errorCodes.");
+return single_value->field_anyOtherError;
+}
+
+BOOLEAN_template& ChangeListItemRes__errorCodes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const BOOLEAN_template& ChangeListItemRes__errorCodes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.ChangeListItemRes_errorCodes.");
+return single_value->field_reserved5;
+}
+
+BOOLEAN_template& ChangeListItemRes__errorCodes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const BOOLEAN_template& ChangeListItemRes__errorCodes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.ChangeListItemRes_errorCodes.");
+return single_value->field_reserved6;
+}
+
+BOOLEAN_template& ChangeListItemRes__errorCodes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const BOOLEAN_template& ChangeListItemRes__errorCodes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ChangeListItemRes_errorCodes.");
+return single_value->field_reserved7;
+}
+
+int ChangeListItemRes__errorCodes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeListItemRes_errorCodes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeListItemRes_errorCodes 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 @IsobusVTMessageTypes.ChangeListItemRes_errorCodes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeListItemRes_errorCodes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeListItemRes_errorCodes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeListItemRes_errorCodes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeListItemRes_errorCodes.");
+  }
+  return 0;
+}
+
+void ChangeListItemRes__errorCodes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ invalidObjectID := ");
+single_value->field_invalidObjectID.log();
+TTCN_Logger::log_event_str(", invalidListIndex := ");
+single_value->field_invalidListIndex.log();
+TTCN_Logger::log_event_str(", invalidNewListItemObjectID := ");
+single_value->field_invalidNewListItemObjectID.log();
+TTCN_Logger::log_event_str(", valueInUse := ");
+single_value->field_valueInUse.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangeListItemRes__errorCodes_template::log_match(const ChangeListItemRes__errorCodes& 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_invalidObjectID.match(match_value.invalidObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidObjectID");
+single_value->field_invalidObjectID.log_match(match_value.invalidObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_invalidListIndex.match(match_value.invalidListIndex(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidListIndex");
+single_value->field_invalidListIndex.log_match(match_value.invalidListIndex(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_invalidNewListItemObjectID.match(match_value.invalidNewListItemObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidNewListItemObjectID");
+single_value->field_invalidNewListItemObjectID.log_match(match_value.invalidNewListItemObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_valueInUse.match(match_value.valueInUse(), legacy)){
+TTCN_Logger::log_logmatch_info(".valueInUse");
+single_value->field_valueInUse.log_match(match_value.valueInUse(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_anyOtherError.match(match_value.anyOtherError(), legacy)){
+TTCN_Logger::log_logmatch_info(".anyOtherError");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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("{ invalidObjectID := ");
+single_value->field_invalidObjectID.log_match(match_value.invalidObjectID(), legacy);
+TTCN_Logger::log_event_str(", invalidListIndex := ");
+single_value->field_invalidListIndex.log_match(match_value.invalidListIndex(), legacy);
+TTCN_Logger::log_event_str(", invalidNewListItemObjectID := ");
+single_value->field_invalidNewListItemObjectID.log_match(match_value.invalidNewListItemObjectID(), legacy);
+TTCN_Logger::log_event_str(", valueInUse := ");
+single_value->field_valueInUse.log_match(match_value.valueInUse(), legacy);
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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 ChangeListItemRes__errorCodes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_invalidObjectID.encode_text(text_buf);
+single_value->field_invalidListIndex.encode_text(text_buf);
+single_value->field_invalidNewListItemObjectID.encode_text(text_buf);
+single_value->field_valueInUse.encode_text(text_buf);
+single_value->field_anyOtherError.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.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 @IsobusVTMessageTypes.ChangeListItemRes_errorCodes.");
+}
+}
+
+void ChangeListItemRes__errorCodes_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_invalidObjectID.decode_text(text_buf);
+single_value->field_invalidListIndex.decode_text(text_buf);
+single_value->field_invalidNewListItemObjectID.decode_text(text_buf);
+single_value->field_valueInUse.decode_text(text_buf);
+single_value->field_anyOtherError.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.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 ChangeListItemRes__errorCodes_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 @IsobusVTMessageTypes.ChangeListItemRes_errorCodes.");
+}
+}
+
+void ChangeListItemRes__errorCodes_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: {
+    ChangeListItemRes__errorCodes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.ChangeListItemRes_errorCodes has 8 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) invalidObjectID().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) invalidListIndex().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) invalidNewListItemObjectID().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) valueInUse().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "invalidObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidObjectID().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(), "invalidListIndex")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidListIndex().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(), "invalidNewListItemObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidNewListItemObjectID().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(), "valueInUse")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          valueInUse().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ChangeListItemRes_errorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangeListItemRes_errorCodes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangeListItemRes__errorCodes_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_invalidObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeListItemRes_errorCodes");
+single_value->field_invalidListIndex.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeListItemRes_errorCodes");
+single_value->field_invalidNewListItemObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeListItemRes_errorCodes");
+single_value->field_valueInUse.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeListItemRes_errorCodes");
+single_value->field_anyOtherError.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeListItemRes_errorCodes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeListItemRes_errorCodes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeListItemRes_errorCodes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeListItemRes_errorCodes");
+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 : "@IsobusVTMessageTypes.ChangeListItemRes_errorCodes");
+}
+
+boolean ChangeListItemRes__errorCodes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangeListItemRes__errorCodes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangeListItemRes::ChangeListItemRes()
+{
+}
+
+ChangeListItemRes::ChangeListItemRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const INTEGER& par_listIndex,
+    const INTEGER& par_newObjectID,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_objectID(par_objectID),
+  field_listIndex(par_listIndex),
+  field_newObjectID(par_newObjectID),
+  field_reserved8(par_reserved8)
+{
+}
+
+ChangeListItemRes::ChangeListItemRes(const ChangeListItemRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangeListItemRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+else field_objectID.clean_up();
+if (other_value.listIndex().is_bound()) field_listIndex = other_value.listIndex();
+else field_listIndex.clean_up();
+if (other_value.newObjectID().is_bound()) field_newObjectID = other_value.newObjectID();
+else field_newObjectID.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void ChangeListItemRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectID.clean_up();
+field_listIndex.clean_up();
+field_newObjectID.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangeListItemRes::get_descriptor() const { return &ChangeListItemRes_descr_; }
+ChangeListItemRes& ChangeListItemRes::operator=(const ChangeListItemRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangeListItemRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+  else field_objectID.clean_up();
+  if (other_value.listIndex().is_bound()) field_listIndex = other_value.listIndex();
+  else field_listIndex.clean_up();
+  if (other_value.newObjectID().is_bound()) field_newObjectID = other_value.newObjectID();
+  else field_newObjectID.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean ChangeListItemRes::operator==(const ChangeListItemRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectID==other_value.field_objectID
+  && field_listIndex==other_value.field_listIndex
+  && field_newObjectID==other_value.field_newObjectID
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean ChangeListItemRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectID.is_bound())
+  || (field_listIndex.is_bound())
+  || (field_newObjectID.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean ChangeListItemRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectID.is_value()
+  && field_listIndex.is_value()
+  && field_newObjectID.is_value()
+  && field_reserved8.is_value();
+}
+void ChangeListItemRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+field_objectID.log();
+TTCN_Logger::log_event_str(", listIndex := ");
+field_listIndex.log();
+TTCN_Logger::log_event_str(", newObjectID := ");
+field_newObjectID.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangeListItemRes::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 @IsobusVTMessageTypes.ChangeListItemRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) listIndex().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) newObjectID().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "listIndex")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          listIndex().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(), "newObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          newObjectID().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangeListItemRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangeListItemRes");
+  }
+}
+
+void ChangeListItemRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectID().is_bound()) objectID().set_implicit_omit();
+if (listIndex().is_bound()) listIndex().set_implicit_omit();
+if (newObjectID().is_bound()) newObjectID().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void ChangeListItemRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectID.encode_text(text_buf);
+field_listIndex.encode_text(text_buf);
+field_newObjectID.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void ChangeListItemRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectID.decode_text(text_buf);
+field_listIndex.decode_text(text_buf);
+field_newObjectID.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void ChangeListItemRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangeListItemRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangeListItemRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectID.RAW_decode(ValidObjectID_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, Index_descr_.raw->forceomit);
+  decoded_field_length = field_listIndex.RAW_decode(Index_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, AnyObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_newObjectID.RAW_decode(AnyObjectID_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, ChangeListItemRes_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(ChangeListItemRes_reserved8_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 ChangeListItemRes::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, Index_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, AnyObjectID_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, ChangeListItemRes_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_listIndex.RAW_encode(Index_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_newObjectID.RAW_encode(AnyObjectID_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved8.RAW_encode(ChangeListItemRes_reserved8_descr_, *myleaf.body.node.nodes[4]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangeListItemRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectID;
+INTEGER_template field_listIndex;
+INTEGER_template field_newObjectID;
+OCTETSTRING_template field_reserved8;
+};
+
+void ChangeListItemRes_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_vtfunction = ANY_VALUE;
+single_value->field_objectID = ANY_VALUE;
+single_value->field_listIndex = ANY_VALUE;
+single_value->field_newObjectID = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void ChangeListItemRes_template::copy_value(const ChangeListItemRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectID().is_bound()) {
+  single_value->field_objectID = other_value.objectID();
+} else {
+  single_value->field_objectID.clean_up();
+}
+if (other_value.listIndex().is_bound()) {
+  single_value->field_listIndex = other_value.listIndex();
+} else {
+  single_value->field_listIndex.clean_up();
+}
+if (other_value.newObjectID().is_bound()) {
+  single_value->field_newObjectID = other_value.newObjectID();
+} else {
+  single_value->field_newObjectID.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangeListItemRes_template::copy_template(const ChangeListItemRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectID().get_selection()) {
+single_value->field_objectID = other_value.objectID();
+} else {
+single_value->field_objectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.listIndex().get_selection()) {
+single_value->field_listIndex = other_value.listIndex();
+} else {
+single_value->field_listIndex.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.newObjectID().get_selection()) {
+single_value->field_newObjectID = other_value.newObjectID();
+} else {
+single_value->field_newObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangeListItemRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeListItemRes.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangeListItemRes_template::ChangeListItemRes_template()
+{
+}
+
+ChangeListItemRes_template::ChangeListItemRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangeListItemRes_template::ChangeListItemRes_template(const ChangeListItemRes& other_value)
+{
+copy_value(other_value);
+}
+
+ChangeListItemRes_template::ChangeListItemRes_template(const OPTIONAL<ChangeListItemRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeListItemRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangeListItemRes from an unbound optional field.");
+}
+}
+
+ChangeListItemRes_template::ChangeListItemRes_template(const ChangeListItemRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangeListItemRes_template::~ChangeListItemRes_template()
+{
+clean_up();
+}
+
+ChangeListItemRes_template& ChangeListItemRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangeListItemRes_template& ChangeListItemRes_template::operator=(const ChangeListItemRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangeListItemRes_template& ChangeListItemRes_template::operator=(const OPTIONAL<ChangeListItemRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeListItemRes&)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 @IsobusVTMessageTypes.ChangeListItemRes.");
+}
+return *this;
+}
+
+ChangeListItemRes_template& ChangeListItemRes_template::operator=(const ChangeListItemRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangeListItemRes_template::match(const ChangeListItemRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectID().is_bound()) return FALSE;
+if(!single_value->field_objectID.match(other_value.objectID(), legacy))return FALSE;
+if(!other_value.listIndex().is_bound()) return FALSE;
+if(!single_value->field_listIndex.match(other_value.listIndex(), legacy))return FALSE;
+if(!other_value.newObjectID().is_bound()) return FALSE;
+if(!single_value->field_newObjectID.match(other_value.newObjectID(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeListItemRes.");
+}
+return FALSE;
+}
+
+boolean ChangeListItemRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectID.is_bound()
+
+ ||single_value->field_listIndex.is_bound()
+
+ ||single_value->field_newObjectID.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean ChangeListItemRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectID.is_value()
+ &&single_value->field_listIndex.is_value()
+ &&single_value->field_newObjectID.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void ChangeListItemRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangeListItemRes ChangeListItemRes_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 @IsobusVTMessageTypes.ChangeListItemRes.");
+ChangeListItemRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectID.is_bound()) {
+ret_val.objectID() = single_value->field_objectID.valueof();
+}
+if (single_value->field_listIndex.is_bound()) {
+ret_val.listIndex() = single_value->field_listIndex.valueof();
+}
+if (single_value->field_newObjectID.is_bound()) {
+ret_val.newObjectID() = single_value->field_newObjectID.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void ChangeListItemRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangeListItemRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangeListItemRes_template[list_length];
+}
+
+ChangeListItemRes_template& ChangeListItemRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangeListItemRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangeListItemRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ChangeListItemRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ChangeListItemRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ChangeListItemRes.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& ChangeListItemRes_template::objectID()
+{
+set_specific();
+return single_value->field_objectID;
+}
+
+const INTEGER_template& ChangeListItemRes_template::objectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectID of a non-specific template of type @IsobusVTMessageTypes.ChangeListItemRes.");
+return single_value->field_objectID;
+}
+
+INTEGER_template& ChangeListItemRes_template::listIndex()
+{
+set_specific();
+return single_value->field_listIndex;
+}
+
+const INTEGER_template& ChangeListItemRes_template::listIndex() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field listIndex of a non-specific template of type @IsobusVTMessageTypes.ChangeListItemRes.");
+return single_value->field_listIndex;
+}
+
+INTEGER_template& ChangeListItemRes_template::newObjectID()
+{
+set_specific();
+return single_value->field_newObjectID;
+}
+
+const INTEGER_template& ChangeListItemRes_template::newObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field newObjectID of a non-specific template of type @IsobusVTMessageTypes.ChangeListItemRes.");
+return single_value->field_newObjectID;
+}
+
+OCTETSTRING_template& ChangeListItemRes_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& ChangeListItemRes_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.ChangeListItemRes.");
+return single_value->field_reserved8;
+}
+
+int ChangeListItemRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeListItemRes 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 @IsobusVTMessageTypes.ChangeListItemRes 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 @IsobusVTMessageTypes.ChangeListItemRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeListItemRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeListItemRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeListItemRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeListItemRes.");
+  }
+  return 0;
+}
+
+void ChangeListItemRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log();
+TTCN_Logger::log_event_str(", listIndex := ");
+single_value->field_listIndex.log();
+TTCN_Logger::log_event_str(", newObjectID := ");
+single_value->field_newObjectID.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangeListItemRes_template::log_match(const ChangeListItemRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectID.match(match_value.objectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectID");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_listIndex.match(match_value.listIndex(), legacy)){
+TTCN_Logger::log_logmatch_info(".listIndex");
+single_value->field_listIndex.log_match(match_value.listIndex(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_newObjectID.match(match_value.newObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".newObjectID");
+single_value->field_newObjectID.log_match(match_value.newObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::log_event_str(", listIndex := ");
+single_value->field_listIndex.log_match(match_value.listIndex(), legacy);
+TTCN_Logger::log_event_str(", newObjectID := ");
+single_value->field_newObjectID.log_match(match_value.newObjectID(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 ChangeListItemRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectID.encode_text(text_buf);
+single_value->field_listIndex.encode_text(text_buf);
+single_value->field_newObjectID.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.ChangeListItemRes.");
+}
+}
+
+void ChangeListItemRes_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_vtfunction.decode_text(text_buf);
+single_value->field_objectID.decode_text(text_buf);
+single_value->field_listIndex.decode_text(text_buf);
+single_value->field_newObjectID.decode_text(text_buf);
+single_value->field_reserved8.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 ChangeListItemRes_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 @IsobusVTMessageTypes.ChangeListItemRes.");
+}
+}
+
+void ChangeListItemRes_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: {
+    ChangeListItemRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.ChangeListItemRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) listIndex().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) newObjectID().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "listIndex")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          listIndex().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(), "newObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          newObjectID().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangeListItemRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangeListItemRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangeListItemRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeListItemRes");
+single_value->field_objectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeListItemRes");
+single_value->field_listIndex.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeListItemRes");
+single_value->field_newObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeListItemRes");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeListItemRes");
+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 : "@IsobusVTMessageTypes.ChangeListItemRes");
+}
+
+boolean ChangeListItemRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangeListItemRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangeListItemReq::ChangeListItemReq()
+{
+}
+
+ChangeListItemReq::ChangeListItemReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const INTEGER& par_listIndex,
+    const INTEGER& par_newObjectID,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_objectID(par_objectID),
+  field_listIndex(par_listIndex),
+  field_newObjectID(par_newObjectID),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+ChangeListItemReq::ChangeListItemReq(const ChangeListItemReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangeListItemReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+else field_objectID.clean_up();
+if (other_value.listIndex().is_bound()) field_listIndex = other_value.listIndex();
+else field_listIndex.clean_up();
+if (other_value.newObjectID().is_bound()) field_newObjectID = other_value.newObjectID();
+else field_newObjectID.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void ChangeListItemReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectID.clean_up();
+field_listIndex.clean_up();
+field_newObjectID.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangeListItemReq::get_descriptor() const { return &ChangeListItemReq_descr_; }
+ChangeListItemReq& ChangeListItemReq::operator=(const ChangeListItemReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangeListItemReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+  else field_objectID.clean_up();
+  if (other_value.listIndex().is_bound()) field_listIndex = other_value.listIndex();
+  else field_listIndex.clean_up();
+  if (other_value.newObjectID().is_bound()) field_newObjectID = other_value.newObjectID();
+  else field_newObjectID.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean ChangeListItemReq::operator==(const ChangeListItemReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectID==other_value.field_objectID
+  && field_listIndex==other_value.field_listIndex
+  && field_newObjectID==other_value.field_newObjectID
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean ChangeListItemReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectID.is_bound())
+  || (field_listIndex.is_bound())
+  || (field_newObjectID.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean ChangeListItemReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectID.is_value()
+  && field_listIndex.is_value()
+  && field_newObjectID.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void ChangeListItemReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+field_objectID.log();
+TTCN_Logger::log_event_str(", listIndex := ");
+field_listIndex.log();
+TTCN_Logger::log_event_str(", newObjectID := ");
+field_newObjectID.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangeListItemReq::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 @IsobusVTMessageTypes.ChangeListItemReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) listIndex().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) newObjectID().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "listIndex")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          listIndex().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(), "newObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          newObjectID().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangeListItemReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangeListItemReq");
+  }
+}
+
+void ChangeListItemReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectID().is_bound()) objectID().set_implicit_omit();
+if (listIndex().is_bound()) listIndex().set_implicit_omit();
+if (newObjectID().is_bound()) newObjectID().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void ChangeListItemReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectID.encode_text(text_buf);
+field_listIndex.encode_text(text_buf);
+field_newObjectID.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void ChangeListItemReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectID.decode_text(text_buf);
+field_listIndex.decode_text(text_buf);
+field_newObjectID.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void ChangeListItemReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangeListItemReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangeListItemReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectID.RAW_decode(ValidObjectID_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, Index_descr_.raw->forceomit);
+  decoded_field_length = field_listIndex.RAW_decode(Index_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, AnyObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_newObjectID.RAW_decode(AnyObjectID_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, ChangeListItemReq_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(ChangeListItemReq_reserved7_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, ChangeListItemReq_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(ChangeListItemReq_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ChangeListItemReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, Index_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, AnyObjectID_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, ChangeListItemReq_reserved7_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, ChangeListItemReq_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_listIndex.RAW_encode(Index_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_newObjectID.RAW_encode(AnyObjectID_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved7.RAW_encode(ChangeListItemReq_reserved7_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved8.RAW_encode(ChangeListItemReq_reserved8_descr_, *myleaf.body.node.nodes[5]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangeListItemReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectID;
+INTEGER_template field_listIndex;
+INTEGER_template field_newObjectID;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void ChangeListItemReq_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_vtfunction = ANY_VALUE;
+single_value->field_objectID = ANY_VALUE;
+single_value->field_listIndex = ANY_VALUE;
+single_value->field_newObjectID = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void ChangeListItemReq_template::copy_value(const ChangeListItemReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectID().is_bound()) {
+  single_value->field_objectID = other_value.objectID();
+} else {
+  single_value->field_objectID.clean_up();
+}
+if (other_value.listIndex().is_bound()) {
+  single_value->field_listIndex = other_value.listIndex();
+} else {
+  single_value->field_listIndex.clean_up();
+}
+if (other_value.newObjectID().is_bound()) {
+  single_value->field_newObjectID = other_value.newObjectID();
+} else {
+  single_value->field_newObjectID.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangeListItemReq_template::copy_template(const ChangeListItemReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectID().get_selection()) {
+single_value->field_objectID = other_value.objectID();
+} else {
+single_value->field_objectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.listIndex().get_selection()) {
+single_value->field_listIndex = other_value.listIndex();
+} else {
+single_value->field_listIndex.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.newObjectID().get_selection()) {
+single_value->field_newObjectID = other_value.newObjectID();
+} else {
+single_value->field_newObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangeListItemReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeListItemReq.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangeListItemReq_template::ChangeListItemReq_template()
+{
+}
+
+ChangeListItemReq_template::ChangeListItemReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangeListItemReq_template::ChangeListItemReq_template(const ChangeListItemReq& other_value)
+{
+copy_value(other_value);
+}
+
+ChangeListItemReq_template::ChangeListItemReq_template(const OPTIONAL<ChangeListItemReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeListItemReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangeListItemReq from an unbound optional field.");
+}
+}
+
+ChangeListItemReq_template::ChangeListItemReq_template(const ChangeListItemReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangeListItemReq_template::~ChangeListItemReq_template()
+{
+clean_up();
+}
+
+ChangeListItemReq_template& ChangeListItemReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangeListItemReq_template& ChangeListItemReq_template::operator=(const ChangeListItemReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangeListItemReq_template& ChangeListItemReq_template::operator=(const OPTIONAL<ChangeListItemReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeListItemReq&)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 @IsobusVTMessageTypes.ChangeListItemReq.");
+}
+return *this;
+}
+
+ChangeListItemReq_template& ChangeListItemReq_template::operator=(const ChangeListItemReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangeListItemReq_template::match(const ChangeListItemReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectID().is_bound()) return FALSE;
+if(!single_value->field_objectID.match(other_value.objectID(), legacy))return FALSE;
+if(!other_value.listIndex().is_bound()) return FALSE;
+if(!single_value->field_listIndex.match(other_value.listIndex(), legacy))return FALSE;
+if(!other_value.newObjectID().is_bound()) return FALSE;
+if(!single_value->field_newObjectID.match(other_value.newObjectID(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeListItemReq.");
+}
+return FALSE;
+}
+
+boolean ChangeListItemReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectID.is_bound()
+
+ ||single_value->field_listIndex.is_bound()
+
+ ||single_value->field_newObjectID.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean ChangeListItemReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectID.is_value()
+ &&single_value->field_listIndex.is_value()
+ &&single_value->field_newObjectID.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void ChangeListItemReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangeListItemReq ChangeListItemReq_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 @IsobusVTMessageTypes.ChangeListItemReq.");
+ChangeListItemReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectID.is_bound()) {
+ret_val.objectID() = single_value->field_objectID.valueof();
+}
+if (single_value->field_listIndex.is_bound()) {
+ret_val.listIndex() = single_value->field_listIndex.valueof();
+}
+if (single_value->field_newObjectID.is_bound()) {
+ret_val.newObjectID() = single_value->field_newObjectID.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void ChangeListItemReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangeListItemReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangeListItemReq_template[list_length];
+}
+
+ChangeListItemReq_template& ChangeListItemReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangeListItemReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangeListItemReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ChangeListItemReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ChangeListItemReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ChangeListItemReq.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& ChangeListItemReq_template::objectID()
+{
+set_specific();
+return single_value->field_objectID;
+}
+
+const INTEGER_template& ChangeListItemReq_template::objectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectID of a non-specific template of type @IsobusVTMessageTypes.ChangeListItemReq.");
+return single_value->field_objectID;
+}
+
+INTEGER_template& ChangeListItemReq_template::listIndex()
+{
+set_specific();
+return single_value->field_listIndex;
+}
+
+const INTEGER_template& ChangeListItemReq_template::listIndex() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field listIndex of a non-specific template of type @IsobusVTMessageTypes.ChangeListItemReq.");
+return single_value->field_listIndex;
+}
+
+INTEGER_template& ChangeListItemReq_template::newObjectID()
+{
+set_specific();
+return single_value->field_newObjectID;
+}
+
+const INTEGER_template& ChangeListItemReq_template::newObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field newObjectID of a non-specific template of type @IsobusVTMessageTypes.ChangeListItemReq.");
+return single_value->field_newObjectID;
+}
+
+OCTETSTRING_template& ChangeListItemReq_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& ChangeListItemReq_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ChangeListItemReq.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& ChangeListItemReq_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& ChangeListItemReq_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.ChangeListItemReq.");
+return single_value->field_reserved8;
+}
+
+int ChangeListItemReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeListItemReq 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 @IsobusVTMessageTypes.ChangeListItemReq 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 @IsobusVTMessageTypes.ChangeListItemReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeListItemReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeListItemReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeListItemReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeListItemReq.");
+  }
+  return 0;
+}
+
+void ChangeListItemReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log();
+TTCN_Logger::log_event_str(", listIndex := ");
+single_value->field_listIndex.log();
+TTCN_Logger::log_event_str(", newObjectID := ");
+single_value->field_newObjectID.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangeListItemReq_template::log_match(const ChangeListItemReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectID.match(match_value.objectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectID");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_listIndex.match(match_value.listIndex(), legacy)){
+TTCN_Logger::log_logmatch_info(".listIndex");
+single_value->field_listIndex.log_match(match_value.listIndex(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_newObjectID.match(match_value.newObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".newObjectID");
+single_value->field_newObjectID.log_match(match_value.newObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::log_event_str(", listIndex := ");
+single_value->field_listIndex.log_match(match_value.listIndex(), legacy);
+TTCN_Logger::log_event_str(", newObjectID := ");
+single_value->field_newObjectID.log_match(match_value.newObjectID(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 ChangeListItemReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectID.encode_text(text_buf);
+single_value->field_listIndex.encode_text(text_buf);
+single_value->field_newObjectID.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.ChangeListItemReq.");
+}
+}
+
+void ChangeListItemReq_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_vtfunction.decode_text(text_buf);
+single_value->field_objectID.decode_text(text_buf);
+single_value->field_listIndex.decode_text(text_buf);
+single_value->field_newObjectID.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 ChangeListItemReq_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 @IsobusVTMessageTypes.ChangeListItemReq.");
+}
+}
+
+void ChangeListItemReq_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: {
+    ChangeListItemReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.ChangeListItemReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) listIndex().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) newObjectID().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "listIndex")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          listIndex().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(), "newObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          newObjectID().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangeListItemReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangeListItemReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangeListItemReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeListItemReq");
+single_value->field_objectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeListItemReq");
+single_value->field_listIndex.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeListItemReq");
+single_value->field_newObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeListItemReq");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeListItemReq");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeListItemReq");
+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 : "@IsobusVTMessageTypes.ChangeListItemReq");
+}
+
+boolean ChangeListItemReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangeListItemReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+DeleteObjectPoolReq::DeleteObjectPoolReq()
+{
+}
+
+DeleteObjectPoolReq::DeleteObjectPoolReq(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_reserved2,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_reserved2(par_reserved2),
+  field_reserved3(par_reserved3),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+DeleteObjectPoolReq::DeleteObjectPoolReq(const DeleteObjectPoolReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.DeleteObjectPoolReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+else field_reserved2.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void DeleteObjectPoolReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_reserved2.clean_up();
+field_reserved3.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* DeleteObjectPoolReq::get_descriptor() const { return &DeleteObjectPoolReq_descr_; }
+DeleteObjectPoolReq& DeleteObjectPoolReq::operator=(const DeleteObjectPoolReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.DeleteObjectPoolReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+  else field_reserved2.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean DeleteObjectPoolReq::operator==(const DeleteObjectPoolReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_reserved2==other_value.field_reserved2
+  && field_reserved3==other_value.field_reserved3
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean DeleteObjectPoolReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_reserved2.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean DeleteObjectPoolReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_reserved2.is_value()
+  && field_reserved3.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void DeleteObjectPoolReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void DeleteObjectPoolReq::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.DeleteObjectPoolReq has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.DeleteObjectPoolReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.DeleteObjectPoolReq");
+  }
+}
+
+void DeleteObjectPoolReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (reserved2().is_bound()) reserved2().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void DeleteObjectPoolReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_reserved2.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void DeleteObjectPoolReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_reserved2.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void DeleteObjectPoolReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void DeleteObjectPoolReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int DeleteObjectPoolReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, DeleteObjectPoolReq_reserved2_descr_.raw->forceomit);
+  decoded_field_length = field_reserved2.RAW_decode(DeleteObjectPoolReq_reserved2_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, DeleteObjectPoolReq_reserved3_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(DeleteObjectPoolReq_reserved3_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, DeleteObjectPoolReq_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(DeleteObjectPoolReq_reserved4_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, DeleteObjectPoolReq_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(DeleteObjectPoolReq_reserved5_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, DeleteObjectPoolReq_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(DeleteObjectPoolReq_reserved6_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, DeleteObjectPoolReq_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(DeleteObjectPoolReq_reserved7_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, DeleteObjectPoolReq_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(DeleteObjectPoolReq_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int DeleteObjectPoolReq::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, DeleteObjectPoolReq_reserved2_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, DeleteObjectPoolReq_reserved3_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, DeleteObjectPoolReq_reserved4_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, DeleteObjectPoolReq_reserved5_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, DeleteObjectPoolReq_reserved6_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, DeleteObjectPoolReq_reserved7_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, DeleteObjectPoolReq_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved2.RAW_encode(DeleteObjectPoolReq_reserved2_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved3.RAW_encode(DeleteObjectPoolReq_reserved3_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved4.RAW_encode(DeleteObjectPoolReq_reserved4_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved5.RAW_encode(DeleteObjectPoolReq_reserved5_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved6.RAW_encode(DeleteObjectPoolReq_reserved6_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved7.RAW_encode(DeleteObjectPoolReq_reserved7_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved8.RAW_encode(DeleteObjectPoolReq_reserved8_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct DeleteObjectPoolReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+OCTETSTRING_template field_reserved2;
+OCTETSTRING_template field_reserved3;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void DeleteObjectPoolReq_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_vtfunction = ANY_VALUE;
+single_value->field_reserved2 = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void DeleteObjectPoolReq_template::copy_value(const DeleteObjectPoolReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.reserved2().is_bound()) {
+  single_value->field_reserved2 = other_value.reserved2();
+} else {
+  single_value->field_reserved2.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void DeleteObjectPoolReq_template::copy_template(const DeleteObjectPoolReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved2().get_selection()) {
+single_value->field_reserved2 = other_value.reserved2();
+} else {
+single_value->field_reserved2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new DeleteObjectPoolReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.DeleteObjectPoolReq.");
+break;
+}
+set_selection(other_value);
+}
+
+DeleteObjectPoolReq_template::DeleteObjectPoolReq_template()
+{
+}
+
+DeleteObjectPoolReq_template::DeleteObjectPoolReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+DeleteObjectPoolReq_template::DeleteObjectPoolReq_template(const DeleteObjectPoolReq& other_value)
+{
+copy_value(other_value);
+}
+
+DeleteObjectPoolReq_template::DeleteObjectPoolReq_template(const OPTIONAL<DeleteObjectPoolReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const DeleteObjectPoolReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.DeleteObjectPoolReq from an unbound optional field.");
+}
+}
+
+DeleteObjectPoolReq_template::DeleteObjectPoolReq_template(const DeleteObjectPoolReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+DeleteObjectPoolReq_template::~DeleteObjectPoolReq_template()
+{
+clean_up();
+}
+
+DeleteObjectPoolReq_template& DeleteObjectPoolReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+DeleteObjectPoolReq_template& DeleteObjectPoolReq_template::operator=(const DeleteObjectPoolReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+DeleteObjectPoolReq_template& DeleteObjectPoolReq_template::operator=(const OPTIONAL<DeleteObjectPoolReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const DeleteObjectPoolReq&)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 @IsobusVTMessageTypes.DeleteObjectPoolReq.");
+}
+return *this;
+}
+
+DeleteObjectPoolReq_template& DeleteObjectPoolReq_template::operator=(const DeleteObjectPoolReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean DeleteObjectPoolReq_template::match(const DeleteObjectPoolReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.reserved2().is_bound()) return FALSE;
+if(!single_value->field_reserved2.match(other_value.reserved2(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.DeleteObjectPoolReq.");
+}
+return FALSE;
+}
+
+boolean DeleteObjectPoolReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_reserved2.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean DeleteObjectPoolReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_reserved2.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void DeleteObjectPoolReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+DeleteObjectPoolReq DeleteObjectPoolReq_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 @IsobusVTMessageTypes.DeleteObjectPoolReq.");
+DeleteObjectPoolReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_reserved2.is_bound()) {
+ret_val.reserved2() = single_value->field_reserved2.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void DeleteObjectPoolReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.DeleteObjectPoolReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new DeleteObjectPoolReq_template[list_length];
+}
+
+DeleteObjectPoolReq_template& DeleteObjectPoolReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.DeleteObjectPoolReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.DeleteObjectPoolReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& DeleteObjectPoolReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& DeleteObjectPoolReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.DeleteObjectPoolReq.");
+return single_value->field_vtfunction;
+}
+
+OCTETSTRING_template& DeleteObjectPoolReq_template::reserved2()
+{
+set_specific();
+return single_value->field_reserved2;
+}
+
+const OCTETSTRING_template& DeleteObjectPoolReq_template::reserved2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved2 of a non-specific template of type @IsobusVTMessageTypes.DeleteObjectPoolReq.");
+return single_value->field_reserved2;
+}
+
+OCTETSTRING_template& DeleteObjectPoolReq_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const OCTETSTRING_template& DeleteObjectPoolReq_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.DeleteObjectPoolReq.");
+return single_value->field_reserved3;
+}
+
+OCTETSTRING_template& DeleteObjectPoolReq_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& DeleteObjectPoolReq_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.DeleteObjectPoolReq.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& DeleteObjectPoolReq_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& DeleteObjectPoolReq_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.DeleteObjectPoolReq.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& DeleteObjectPoolReq_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& DeleteObjectPoolReq_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.DeleteObjectPoolReq.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& DeleteObjectPoolReq_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& DeleteObjectPoolReq_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.DeleteObjectPoolReq.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& DeleteObjectPoolReq_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& DeleteObjectPoolReq_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.DeleteObjectPoolReq.");
+return single_value->field_reserved8;
+}
+
+int DeleteObjectPoolReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DeleteObjectPoolReq which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DeleteObjectPoolReq 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 @IsobusVTMessageTypes.DeleteObjectPoolReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DeleteObjectPoolReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DeleteObjectPoolReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DeleteObjectPoolReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.DeleteObjectPoolReq.");
+  }
+  return 0;
+}
+
+void DeleteObjectPoolReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void DeleteObjectPoolReq_template::log_match(const DeleteObjectPoolReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved2.match(match_value.reserved2(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved2");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 DeleteObjectPoolReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_reserved2.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.DeleteObjectPoolReq.");
+}
+}
+
+void DeleteObjectPoolReq_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_vtfunction.decode_text(text_buf);
+single_value->field_reserved2.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 DeleteObjectPoolReq_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 @IsobusVTMessageTypes.DeleteObjectPoolReq.");
+}
+}
+
+void DeleteObjectPoolReq_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: {
+    DeleteObjectPoolReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.DeleteObjectPoolReq has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.DeleteObjectPoolReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.DeleteObjectPoolReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void DeleteObjectPoolReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DeleteObjectPoolReq");
+single_value->field_reserved2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DeleteObjectPoolReq");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DeleteObjectPoolReq");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DeleteObjectPoolReq");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DeleteObjectPoolReq");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DeleteObjectPoolReq");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DeleteObjectPoolReq");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DeleteObjectPoolReq");
+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 : "@IsobusVTMessageTypes.DeleteObjectPoolReq");
+}
+
+boolean DeleteObjectPoolReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean DeleteObjectPoolReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+DeleteObjectPoolRes__ErrorCodes::DeleteObjectPoolRes__ErrorCodes()
+{
+}
+
+DeleteObjectPoolRes__ErrorCodes::DeleteObjectPoolRes__ErrorCodes(const BOOLEAN& par_deletionError,
+    const BOOLEAN& par_undefined1,
+    const BOOLEAN& par_undefined2,
+    const BOOLEAN& par_undefined3,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7)
+  :   field_deletionError(par_deletionError),
+  field_undefined1(par_undefined1),
+  field_undefined2(par_undefined2),
+  field_undefined3(par_undefined3),
+  field_anyOtherError(par_anyOtherError),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7)
+{
+}
+
+DeleteObjectPoolRes__ErrorCodes::DeleteObjectPoolRes__ErrorCodes(const DeleteObjectPoolRes__ErrorCodes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes.");
+if (other_value.deletionError().is_bound()) field_deletionError = other_value.deletionError();
+else field_deletionError.clean_up();
+if (other_value.undefined1().is_bound()) field_undefined1 = other_value.undefined1();
+else field_undefined1.clean_up();
+if (other_value.undefined2().is_bound()) field_undefined2 = other_value.undefined2();
+else field_undefined2.clean_up();
+if (other_value.undefined3().is_bound()) field_undefined3 = other_value.undefined3();
+else field_undefined3.clean_up();
+if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+else field_anyOtherError.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+}
+
+void DeleteObjectPoolRes__ErrorCodes::clean_up()
+{
+field_deletionError.clean_up();
+field_undefined1.clean_up();
+field_undefined2.clean_up();
+field_undefined3.clean_up();
+field_anyOtherError.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+}
+
+const TTCN_Typedescriptor_t* DeleteObjectPoolRes__ErrorCodes::get_descriptor() const { return &DeleteObjectPoolRes__ErrorCodes_descr_; }
+DeleteObjectPoolRes__ErrorCodes& DeleteObjectPoolRes__ErrorCodes::operator=(const DeleteObjectPoolRes__ErrorCodes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes.");
+  if (other_value.deletionError().is_bound()) field_deletionError = other_value.deletionError();
+  else field_deletionError.clean_up();
+  if (other_value.undefined1().is_bound()) field_undefined1 = other_value.undefined1();
+  else field_undefined1.clean_up();
+  if (other_value.undefined2().is_bound()) field_undefined2 = other_value.undefined2();
+  else field_undefined2.clean_up();
+  if (other_value.undefined3().is_bound()) field_undefined3 = other_value.undefined3();
+  else field_undefined3.clean_up();
+  if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+  else field_anyOtherError.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+}
+return *this;
+}
+
+boolean DeleteObjectPoolRes__ErrorCodes::operator==(const DeleteObjectPoolRes__ErrorCodes& other_value) const
+{
+return field_deletionError==other_value.field_deletionError
+  && field_undefined1==other_value.field_undefined1
+  && field_undefined2==other_value.field_undefined2
+  && field_undefined3==other_value.field_undefined3
+  && field_anyOtherError==other_value.field_anyOtherError
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7;
+}
+
+boolean DeleteObjectPoolRes__ErrorCodes::is_bound() const
+{
+return (field_deletionError.is_bound())
+  || (field_undefined1.is_bound())
+  || (field_undefined2.is_bound())
+  || (field_undefined3.is_bound())
+  || (field_anyOtherError.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound());
+}
+boolean DeleteObjectPoolRes__ErrorCodes::is_value() const
+{
+return field_deletionError.is_value()
+  && field_undefined1.is_value()
+  && field_undefined2.is_value()
+  && field_undefined3.is_value()
+  && field_anyOtherError.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value();
+}
+void DeleteObjectPoolRes__ErrorCodes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ deletionError := ");
+field_deletionError.log();
+TTCN_Logger::log_event_str(", undefined1 := ");
+field_undefined1.log();
+TTCN_Logger::log_event_str(", undefined2 := ");
+field_undefined2.log();
+TTCN_Logger::log_event_str(", undefined3 := ");
+field_undefined3.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void DeleteObjectPoolRes__ErrorCodes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes has 8 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) deletionError().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) undefined1().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) undefined2().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) undefined3().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "deletionError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          deletionError().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(), "undefined1")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          undefined1().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(), "undefined2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          undefined2().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(), "undefined3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          undefined3().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes");
+  }
+}
+
+void DeleteObjectPoolRes__ErrorCodes::set_implicit_omit()
+{
+if (deletionError().is_bound()) deletionError().set_implicit_omit();
+if (undefined1().is_bound()) undefined1().set_implicit_omit();
+if (undefined2().is_bound()) undefined2().set_implicit_omit();
+if (undefined3().is_bound()) undefined3().set_implicit_omit();
+if (anyOtherError().is_bound()) anyOtherError().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+}
+
+void DeleteObjectPoolRes__ErrorCodes::encode_text(Text_Buf& text_buf) const
+{
+field_deletionError.encode_text(text_buf);
+field_undefined1.encode_text(text_buf);
+field_undefined2.encode_text(text_buf);
+field_undefined3.encode_text(text_buf);
+field_anyOtherError.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+}
+
+void DeleteObjectPoolRes__ErrorCodes::decode_text(Text_Buf& text_buf)
+{
+field_deletionError.decode_text(text_buf);
+field_undefined1.decode_text(text_buf);
+field_undefined2.decode_text(text_buf);
+field_undefined3.decode_text(text_buf);
+field_anyOtherError.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+}
+
+void DeleteObjectPoolRes__ErrorCodes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void DeleteObjectPoolRes__ErrorCodes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int DeleteObjectPoolRes__ErrorCodes::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_deletionError.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_undefined1.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_undefined2.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_undefined3.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_anyOtherError.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int DeleteObjectPoolRes__ErrorCodes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_deletionError.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_undefined1.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_undefined2.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_undefined3.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_anyOtherError.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved5.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved6.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved7.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct DeleteObjectPoolRes__ErrorCodes_template::single_value_struct {
+BOOLEAN_template field_deletionError;
+BOOLEAN_template field_undefined1;
+BOOLEAN_template field_undefined2;
+BOOLEAN_template field_undefined3;
+BOOLEAN_template field_anyOtherError;
+BOOLEAN_template field_reserved5;
+BOOLEAN_template field_reserved6;
+BOOLEAN_template field_reserved7;
+};
+
+void DeleteObjectPoolRes__ErrorCodes_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_deletionError = ANY_VALUE;
+single_value->field_undefined1 = ANY_VALUE;
+single_value->field_undefined2 = ANY_VALUE;
+single_value->field_undefined3 = ANY_VALUE;
+single_value->field_anyOtherError = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+}
+}
+}
+
+void DeleteObjectPoolRes__ErrorCodes_template::copy_value(const DeleteObjectPoolRes__ErrorCodes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.deletionError().is_bound()) {
+  single_value->field_deletionError = other_value.deletionError();
+} else {
+  single_value->field_deletionError.clean_up();
+}
+if (other_value.undefined1().is_bound()) {
+  single_value->field_undefined1 = other_value.undefined1();
+} else {
+  single_value->field_undefined1.clean_up();
+}
+if (other_value.undefined2().is_bound()) {
+  single_value->field_undefined2 = other_value.undefined2();
+} else {
+  single_value->field_undefined2.clean_up();
+}
+if (other_value.undefined3().is_bound()) {
+  single_value->field_undefined3 = other_value.undefined3();
+} else {
+  single_value->field_undefined3.clean_up();
+}
+if (other_value.anyOtherError().is_bound()) {
+  single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+  single_value->field_anyOtherError.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void DeleteObjectPoolRes__ErrorCodes_template::copy_template(const DeleteObjectPoolRes__ErrorCodes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.deletionError().get_selection()) {
+single_value->field_deletionError = other_value.deletionError();
+} else {
+single_value->field_deletionError.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.undefined1().get_selection()) {
+single_value->field_undefined1 = other_value.undefined1();
+} else {
+single_value->field_undefined1.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.undefined2().get_selection()) {
+single_value->field_undefined2 = other_value.undefined2();
+} else {
+single_value->field_undefined2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.undefined3().get_selection()) {
+single_value->field_undefined3 = other_value.undefined3();
+} else {
+single_value->field_undefined3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.anyOtherError().get_selection()) {
+single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+single_value->field_anyOtherError.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new DeleteObjectPoolRes__ErrorCodes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes.");
+break;
+}
+set_selection(other_value);
+}
+
+DeleteObjectPoolRes__ErrorCodes_template::DeleteObjectPoolRes__ErrorCodes_template()
+{
+}
+
+DeleteObjectPoolRes__ErrorCodes_template::DeleteObjectPoolRes__ErrorCodes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+DeleteObjectPoolRes__ErrorCodes_template::DeleteObjectPoolRes__ErrorCodes_template(const DeleteObjectPoolRes__ErrorCodes& other_value)
+{
+copy_value(other_value);
+}
+
+DeleteObjectPoolRes__ErrorCodes_template::DeleteObjectPoolRes__ErrorCodes_template(const OPTIONAL<DeleteObjectPoolRes__ErrorCodes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const DeleteObjectPoolRes__ErrorCodes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes from an unbound optional field.");
+}
+}
+
+DeleteObjectPoolRes__ErrorCodes_template::DeleteObjectPoolRes__ErrorCodes_template(const DeleteObjectPoolRes__ErrorCodes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+DeleteObjectPoolRes__ErrorCodes_template::~DeleteObjectPoolRes__ErrorCodes_template()
+{
+clean_up();
+}
+
+DeleteObjectPoolRes__ErrorCodes_template& DeleteObjectPoolRes__ErrorCodes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+DeleteObjectPoolRes__ErrorCodes_template& DeleteObjectPoolRes__ErrorCodes_template::operator=(const DeleteObjectPoolRes__ErrorCodes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+DeleteObjectPoolRes__ErrorCodes_template& DeleteObjectPoolRes__ErrorCodes_template::operator=(const OPTIONAL<DeleteObjectPoolRes__ErrorCodes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const DeleteObjectPoolRes__ErrorCodes&)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 @IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes.");
+}
+return *this;
+}
+
+DeleteObjectPoolRes__ErrorCodes_template& DeleteObjectPoolRes__ErrorCodes_template::operator=(const DeleteObjectPoolRes__ErrorCodes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean DeleteObjectPoolRes__ErrorCodes_template::match(const DeleteObjectPoolRes__ErrorCodes& 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.deletionError().is_bound()) return FALSE;
+if(!single_value->field_deletionError.match(other_value.deletionError(), legacy))return FALSE;
+if(!other_value.undefined1().is_bound()) return FALSE;
+if(!single_value->field_undefined1.match(other_value.undefined1(), legacy))return FALSE;
+if(!other_value.undefined2().is_bound()) return FALSE;
+if(!single_value->field_undefined2.match(other_value.undefined2(), legacy))return FALSE;
+if(!other_value.undefined3().is_bound()) return FALSE;
+if(!single_value->field_undefined3.match(other_value.undefined3(), legacy))return FALSE;
+if(!other_value.anyOtherError().is_bound()) return FALSE;
+if(!single_value->field_anyOtherError.match(other_value.anyOtherError(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes.");
+}
+return FALSE;
+}
+
+boolean DeleteObjectPoolRes__ErrorCodes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_deletionError.is_bound()
+
+ ||single_value->field_undefined1.is_bound()
+
+ ||single_value->field_undefined2.is_bound()
+
+ ||single_value->field_undefined3.is_bound()
+
+ ||single_value->field_anyOtherError.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+;
+}
+
+boolean DeleteObjectPoolRes__ErrorCodes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_deletionError.is_value()
+ &&single_value->field_undefined1.is_value()
+ &&single_value->field_undefined2.is_value()
+ &&single_value->field_undefined3.is_value()
+ &&single_value->field_anyOtherError.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value();
+}
+
+void DeleteObjectPoolRes__ErrorCodes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+DeleteObjectPoolRes__ErrorCodes DeleteObjectPoolRes__ErrorCodes_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 @IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes.");
+DeleteObjectPoolRes__ErrorCodes ret_val;
+if (single_value->field_deletionError.is_bound()) {
+ret_val.deletionError() = single_value->field_deletionError.valueof();
+}
+if (single_value->field_undefined1.is_bound()) {
+ret_val.undefined1() = single_value->field_undefined1.valueof();
+}
+if (single_value->field_undefined2.is_bound()) {
+ret_val.undefined2() = single_value->field_undefined2.valueof();
+}
+if (single_value->field_undefined3.is_bound()) {
+ret_val.undefined3() = single_value->field_undefined3.valueof();
+}
+if (single_value->field_anyOtherError.is_bound()) {
+ret_val.anyOtherError() = single_value->field_anyOtherError.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+return ret_val;
+}
+
+void DeleteObjectPoolRes__ErrorCodes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new DeleteObjectPoolRes__ErrorCodes_template[list_length];
+}
+
+DeleteObjectPoolRes__ErrorCodes_template& DeleteObjectPoolRes__ErrorCodes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& DeleteObjectPoolRes__ErrorCodes_template::deletionError()
+{
+set_specific();
+return single_value->field_deletionError;
+}
+
+const BOOLEAN_template& DeleteObjectPoolRes__ErrorCodes_template::deletionError() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field deletionError of a non-specific template of type @IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes.");
+return single_value->field_deletionError;
+}
+
+BOOLEAN_template& DeleteObjectPoolRes__ErrorCodes_template::undefined1()
+{
+set_specific();
+return single_value->field_undefined1;
+}
+
+const BOOLEAN_template& DeleteObjectPoolRes__ErrorCodes_template::undefined1() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field undefined1 of a non-specific template of type @IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes.");
+return single_value->field_undefined1;
+}
+
+BOOLEAN_template& DeleteObjectPoolRes__ErrorCodes_template::undefined2()
+{
+set_specific();
+return single_value->field_undefined2;
+}
+
+const BOOLEAN_template& DeleteObjectPoolRes__ErrorCodes_template::undefined2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field undefined2 of a non-specific template of type @IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes.");
+return single_value->field_undefined2;
+}
+
+BOOLEAN_template& DeleteObjectPoolRes__ErrorCodes_template::undefined3()
+{
+set_specific();
+return single_value->field_undefined3;
+}
+
+const BOOLEAN_template& DeleteObjectPoolRes__ErrorCodes_template::undefined3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field undefined3 of a non-specific template of type @IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes.");
+return single_value->field_undefined3;
+}
+
+BOOLEAN_template& DeleteObjectPoolRes__ErrorCodes_template::anyOtherError()
+{
+set_specific();
+return single_value->field_anyOtherError;
+}
+
+const BOOLEAN_template& DeleteObjectPoolRes__ErrorCodes_template::anyOtherError() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field anyOtherError of a non-specific template of type @IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes.");
+return single_value->field_anyOtherError;
+}
+
+BOOLEAN_template& DeleteObjectPoolRes__ErrorCodes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const BOOLEAN_template& DeleteObjectPoolRes__ErrorCodes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes.");
+return single_value->field_reserved5;
+}
+
+BOOLEAN_template& DeleteObjectPoolRes__ErrorCodes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const BOOLEAN_template& DeleteObjectPoolRes__ErrorCodes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes.");
+return single_value->field_reserved6;
+}
+
+BOOLEAN_template& DeleteObjectPoolRes__ErrorCodes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const BOOLEAN_template& DeleteObjectPoolRes__ErrorCodes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes.");
+return single_value->field_reserved7;
+}
+
+int DeleteObjectPoolRes__ErrorCodes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes 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 @IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes.");
+  }
+  return 0;
+}
+
+void DeleteObjectPoolRes__ErrorCodes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ deletionError := ");
+single_value->field_deletionError.log();
+TTCN_Logger::log_event_str(", undefined1 := ");
+single_value->field_undefined1.log();
+TTCN_Logger::log_event_str(", undefined2 := ");
+single_value->field_undefined2.log();
+TTCN_Logger::log_event_str(", undefined3 := ");
+single_value->field_undefined3.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void DeleteObjectPoolRes__ErrorCodes_template::log_match(const DeleteObjectPoolRes__ErrorCodes& 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_deletionError.match(match_value.deletionError(), legacy)){
+TTCN_Logger::log_logmatch_info(".deletionError");
+single_value->field_deletionError.log_match(match_value.deletionError(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_undefined1.match(match_value.undefined1(), legacy)){
+TTCN_Logger::log_logmatch_info(".undefined1");
+single_value->field_undefined1.log_match(match_value.undefined1(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_undefined2.match(match_value.undefined2(), legacy)){
+TTCN_Logger::log_logmatch_info(".undefined2");
+single_value->field_undefined2.log_match(match_value.undefined2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_undefined3.match(match_value.undefined3(), legacy)){
+TTCN_Logger::log_logmatch_info(".undefined3");
+single_value->field_undefined3.log_match(match_value.undefined3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_anyOtherError.match(match_value.anyOtherError(), legacy)){
+TTCN_Logger::log_logmatch_info(".anyOtherError");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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("{ deletionError := ");
+single_value->field_deletionError.log_match(match_value.deletionError(), legacy);
+TTCN_Logger::log_event_str(", undefined1 := ");
+single_value->field_undefined1.log_match(match_value.undefined1(), legacy);
+TTCN_Logger::log_event_str(", undefined2 := ");
+single_value->field_undefined2.log_match(match_value.undefined2(), legacy);
+TTCN_Logger::log_event_str(", undefined3 := ");
+single_value->field_undefined3.log_match(match_value.undefined3(), legacy);
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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 DeleteObjectPoolRes__ErrorCodes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_deletionError.encode_text(text_buf);
+single_value->field_undefined1.encode_text(text_buf);
+single_value->field_undefined2.encode_text(text_buf);
+single_value->field_undefined3.encode_text(text_buf);
+single_value->field_anyOtherError.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.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 @IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes.");
+}
+}
+
+void DeleteObjectPoolRes__ErrorCodes_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_deletionError.decode_text(text_buf);
+single_value->field_undefined1.decode_text(text_buf);
+single_value->field_undefined2.decode_text(text_buf);
+single_value->field_undefined3.decode_text(text_buf);
+single_value->field_anyOtherError.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.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 DeleteObjectPoolRes__ErrorCodes_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 @IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes.");
+}
+}
+
+void DeleteObjectPoolRes__ErrorCodes_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: {
+    DeleteObjectPoolRes__ErrorCodes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes has 8 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) deletionError().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) undefined1().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) undefined2().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) undefined3().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "deletionError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          deletionError().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(), "undefined1")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          undefined1().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(), "undefined2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          undefined2().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(), "undefined3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          undefined3().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void DeleteObjectPoolRes__ErrorCodes_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_deletionError.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes");
+single_value->field_undefined1.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes");
+single_value->field_undefined2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes");
+single_value->field_undefined3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes");
+single_value->field_anyOtherError.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes");
+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 : "@IsobusVTMessageTypes.DeleteObjectPoolRes_ErrorCodes");
+}
+
+boolean DeleteObjectPoolRes__ErrorCodes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean DeleteObjectPoolRes__ErrorCodes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+DeleteObjectPoolRes::DeleteObjectPoolRes()
+{
+}
+
+DeleteObjectPoolRes::DeleteObjectPoolRes(const INTEGER& par_vtfunction,
+    const DeleteObjectPoolRes__ErrorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_errorCodes(par_errorCodes),
+  field_reserved3(par_reserved3),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+DeleteObjectPoolRes::DeleteObjectPoolRes(const DeleteObjectPoolRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.DeleteObjectPoolRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+else field_errorCodes.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void DeleteObjectPoolRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_errorCodes.clean_up();
+field_reserved3.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* DeleteObjectPoolRes::get_descriptor() const { return &DeleteObjectPoolRes_descr_; }
+DeleteObjectPoolRes& DeleteObjectPoolRes::operator=(const DeleteObjectPoolRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.DeleteObjectPoolRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+  else field_errorCodes.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean DeleteObjectPoolRes::operator==(const DeleteObjectPoolRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_errorCodes==other_value.field_errorCodes
+  && field_reserved3==other_value.field_reserved3
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean DeleteObjectPoolRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_errorCodes.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean DeleteObjectPoolRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_errorCodes.is_value()
+  && field_reserved3.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void DeleteObjectPoolRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void DeleteObjectPoolRes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.DeleteObjectPoolRes has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.DeleteObjectPoolRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.DeleteObjectPoolRes");
+  }
+}
+
+void DeleteObjectPoolRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (errorCodes().is_bound()) errorCodes().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void DeleteObjectPoolRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_errorCodes.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void DeleteObjectPoolRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_errorCodes.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void DeleteObjectPoolRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void DeleteObjectPoolRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int DeleteObjectPoolRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, DeleteObjectPoolRes__ErrorCodes_descr_.raw->forceomit);
+  decoded_field_length = field_errorCodes.RAW_decode(DeleteObjectPoolRes__ErrorCodes_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, DeleteObjectPoolRes_reserved3_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(DeleteObjectPoolRes_reserved3_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, DeleteObjectPoolRes_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(DeleteObjectPoolRes_reserved4_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, DeleteObjectPoolRes_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(DeleteObjectPoolRes_reserved5_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, DeleteObjectPoolRes_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(DeleteObjectPoolRes_reserved6_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, DeleteObjectPoolRes_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(DeleteObjectPoolRes_reserved7_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, DeleteObjectPoolRes_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(DeleteObjectPoolRes_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int DeleteObjectPoolRes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, DeleteObjectPoolRes__ErrorCodes_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, DeleteObjectPoolRes_reserved3_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, DeleteObjectPoolRes_reserved4_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, DeleteObjectPoolRes_reserved5_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, DeleteObjectPoolRes_reserved6_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, DeleteObjectPoolRes_reserved7_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, DeleteObjectPoolRes_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_errorCodes.RAW_encode(DeleteObjectPoolRes__ErrorCodes_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved3.RAW_encode(DeleteObjectPoolRes_reserved3_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved4.RAW_encode(DeleteObjectPoolRes_reserved4_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved5.RAW_encode(DeleteObjectPoolRes_reserved5_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved6.RAW_encode(DeleteObjectPoolRes_reserved6_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved7.RAW_encode(DeleteObjectPoolRes_reserved7_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved8.RAW_encode(DeleteObjectPoolRes_reserved8_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct DeleteObjectPoolRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+DeleteObjectPoolRes__ErrorCodes_template field_errorCodes;
+OCTETSTRING_template field_reserved3;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void DeleteObjectPoolRes_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_vtfunction = ANY_VALUE;
+single_value->field_errorCodes = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void DeleteObjectPoolRes_template::copy_value(const DeleteObjectPoolRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.errorCodes().is_bound()) {
+  single_value->field_errorCodes = other_value.errorCodes();
+} else {
+  single_value->field_errorCodes.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void DeleteObjectPoolRes_template::copy_template(const DeleteObjectPoolRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.errorCodes().get_selection()) {
+single_value->field_errorCodes = other_value.errorCodes();
+} else {
+single_value->field_errorCodes.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new DeleteObjectPoolRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.DeleteObjectPoolRes.");
+break;
+}
+set_selection(other_value);
+}
+
+DeleteObjectPoolRes_template::DeleteObjectPoolRes_template()
+{
+}
+
+DeleteObjectPoolRes_template::DeleteObjectPoolRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+DeleteObjectPoolRes_template::DeleteObjectPoolRes_template(const DeleteObjectPoolRes& other_value)
+{
+copy_value(other_value);
+}
+
+DeleteObjectPoolRes_template::DeleteObjectPoolRes_template(const OPTIONAL<DeleteObjectPoolRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const DeleteObjectPoolRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.DeleteObjectPoolRes from an unbound optional field.");
+}
+}
+
+DeleteObjectPoolRes_template::DeleteObjectPoolRes_template(const DeleteObjectPoolRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+DeleteObjectPoolRes_template::~DeleteObjectPoolRes_template()
+{
+clean_up();
+}
+
+DeleteObjectPoolRes_template& DeleteObjectPoolRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+DeleteObjectPoolRes_template& DeleteObjectPoolRes_template::operator=(const DeleteObjectPoolRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+DeleteObjectPoolRes_template& DeleteObjectPoolRes_template::operator=(const OPTIONAL<DeleteObjectPoolRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const DeleteObjectPoolRes&)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 @IsobusVTMessageTypes.DeleteObjectPoolRes.");
+}
+return *this;
+}
+
+DeleteObjectPoolRes_template& DeleteObjectPoolRes_template::operator=(const DeleteObjectPoolRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean DeleteObjectPoolRes_template::match(const DeleteObjectPoolRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.errorCodes().is_bound()) return FALSE;
+if(!single_value->field_errorCodes.match(other_value.errorCodes(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.DeleteObjectPoolRes.");
+}
+return FALSE;
+}
+
+boolean DeleteObjectPoolRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_errorCodes.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean DeleteObjectPoolRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_errorCodes.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void DeleteObjectPoolRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+DeleteObjectPoolRes DeleteObjectPoolRes_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 @IsobusVTMessageTypes.DeleteObjectPoolRes.");
+DeleteObjectPoolRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_errorCodes.is_bound()) {
+ret_val.errorCodes() = single_value->field_errorCodes.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void DeleteObjectPoolRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.DeleteObjectPoolRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new DeleteObjectPoolRes_template[list_length];
+}
+
+DeleteObjectPoolRes_template& DeleteObjectPoolRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.DeleteObjectPoolRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.DeleteObjectPoolRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& DeleteObjectPoolRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& DeleteObjectPoolRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.DeleteObjectPoolRes.");
+return single_value->field_vtfunction;
+}
+
+DeleteObjectPoolRes__ErrorCodes_template& DeleteObjectPoolRes_template::errorCodes()
+{
+set_specific();
+return single_value->field_errorCodes;
+}
+
+const DeleteObjectPoolRes__ErrorCodes_template& DeleteObjectPoolRes_template::errorCodes() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field errorCodes of a non-specific template of type @IsobusVTMessageTypes.DeleteObjectPoolRes.");
+return single_value->field_errorCodes;
+}
+
+OCTETSTRING_template& DeleteObjectPoolRes_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const OCTETSTRING_template& DeleteObjectPoolRes_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.DeleteObjectPoolRes.");
+return single_value->field_reserved3;
+}
+
+OCTETSTRING_template& DeleteObjectPoolRes_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& DeleteObjectPoolRes_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.DeleteObjectPoolRes.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& DeleteObjectPoolRes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& DeleteObjectPoolRes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.DeleteObjectPoolRes.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& DeleteObjectPoolRes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& DeleteObjectPoolRes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.DeleteObjectPoolRes.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& DeleteObjectPoolRes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& DeleteObjectPoolRes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.DeleteObjectPoolRes.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& DeleteObjectPoolRes_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& DeleteObjectPoolRes_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.DeleteObjectPoolRes.");
+return single_value->field_reserved8;
+}
+
+int DeleteObjectPoolRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DeleteObjectPoolRes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DeleteObjectPoolRes 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 @IsobusVTMessageTypes.DeleteObjectPoolRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DeleteObjectPoolRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DeleteObjectPoolRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DeleteObjectPoolRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.DeleteObjectPoolRes.");
+  }
+  return 0;
+}
+
+void DeleteObjectPoolRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void DeleteObjectPoolRes_template::log_match(const DeleteObjectPoolRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_errorCodes.match(match_value.errorCodes(), legacy)){
+TTCN_Logger::log_logmatch_info(".errorCodes");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 DeleteObjectPoolRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_errorCodes.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.DeleteObjectPoolRes.");
+}
+}
+
+void DeleteObjectPoolRes_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_vtfunction.decode_text(text_buf);
+single_value->field_errorCodes.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 DeleteObjectPoolRes_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 @IsobusVTMessageTypes.DeleteObjectPoolRes.");
+}
+}
+
+void DeleteObjectPoolRes_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: {
+    DeleteObjectPoolRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.DeleteObjectPoolRes has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.DeleteObjectPoolRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.DeleteObjectPoolRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void DeleteObjectPoolRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DeleteObjectPoolRes");
+single_value->field_errorCodes.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DeleteObjectPoolRes");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DeleteObjectPoolRes");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DeleteObjectPoolRes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DeleteObjectPoolRes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DeleteObjectPoolRes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DeleteObjectPoolRes");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DeleteObjectPoolRes");
+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 : "@IsobusVTMessageTypes.DeleteObjectPoolRes");
+}
+
+boolean DeleteObjectPoolRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean DeleteObjectPoolRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangeStringValueReq::ChangeStringValueReq()
+{
+}
+
+ChangeStringValueReq::ChangeStringValueReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const INTEGER& par_numberOfBytes,
+    const OCTETSTRING& par_newStringValue)
+  :   field_vtfunction(par_vtfunction),
+  field_objectID(par_objectID),
+  field_numberOfBytes(par_numberOfBytes),
+  field_newStringValue(par_newStringValue)
+{
+}
+
+ChangeStringValueReq::ChangeStringValueReq(const ChangeStringValueReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangeStringValueReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+else field_objectID.clean_up();
+if (other_value.numberOfBytes().is_bound()) field_numberOfBytes = other_value.numberOfBytes();
+else field_numberOfBytes.clean_up();
+if (other_value.newStringValue().is_bound()) field_newStringValue = other_value.newStringValue();
+else field_newStringValue.clean_up();
+}
+
+void ChangeStringValueReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectID.clean_up();
+field_numberOfBytes.clean_up();
+field_newStringValue.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangeStringValueReq::get_descriptor() const { return &ChangeStringValueReq_descr_; }
+ChangeStringValueReq& ChangeStringValueReq::operator=(const ChangeStringValueReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangeStringValueReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+  else field_objectID.clean_up();
+  if (other_value.numberOfBytes().is_bound()) field_numberOfBytes = other_value.numberOfBytes();
+  else field_numberOfBytes.clean_up();
+  if (other_value.newStringValue().is_bound()) field_newStringValue = other_value.newStringValue();
+  else field_newStringValue.clean_up();
+}
+return *this;
+}
+
+boolean ChangeStringValueReq::operator==(const ChangeStringValueReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectID==other_value.field_objectID
+  && field_numberOfBytes==other_value.field_numberOfBytes
+  && field_newStringValue==other_value.field_newStringValue;
+}
+
+boolean ChangeStringValueReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectID.is_bound())
+  || (field_numberOfBytes.is_bound())
+  || (field_newStringValue.is_bound());
+}
+boolean ChangeStringValueReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectID.is_value()
+  && field_numberOfBytes.is_value()
+  && field_newStringValue.is_value();
+}
+void ChangeStringValueReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+field_objectID.log();
+TTCN_Logger::log_event_str(", numberOfBytes := ");
+field_numberOfBytes.log();
+TTCN_Logger::log_event_str(", newStringValue := ");
+field_newStringValue.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangeStringValueReq::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 @IsobusVTMessageTypes.ChangeStringValueReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) numberOfBytes().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) newStringValue().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "numberOfBytes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          numberOfBytes().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(), "newStringValue")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          newStringValue().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 @IsobusVTMessageTypes.ChangeStringValueReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangeStringValueReq");
+  }
+}
+
+void ChangeStringValueReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectID().is_bound()) objectID().set_implicit_omit();
+if (numberOfBytes().is_bound()) numberOfBytes().set_implicit_omit();
+if (newStringValue().is_bound()) newStringValue().set_implicit_omit();
+}
+
+void ChangeStringValueReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectID.encode_text(text_buf);
+field_numberOfBytes.encode_text(text_buf);
+field_newStringValue.encode_text(text_buf);
+}
+
+void ChangeStringValueReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectID.decode_text(text_buf);
+field_numberOfBytes.decode_text(text_buf);
+field_newStringValue.decode_text(text_buf);
+}
+
+void ChangeStringValueReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangeStringValueReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangeStringValueReq::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;
+  int value_of_length_field2 = 0;
+  RAW_Force_Omit field_0_force_omit(0, force_omit, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectID.RAW_decode(ValidObjectID_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, ChangeStringValueReq_numberOfBytes_descr_.raw->forceomit);
+  decoded_field_length = field_numberOfBytes.RAW_decode(ChangeStringValueReq_numberOfBytes_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());
+  value_of_length_field2+=field_numberOfBytes.get_long_long_val()*8;
+  RAW_Force_Omit field_3_force_omit(3, force_omit, OCTETSTRING_descr_.raw->forceomit);
+  decoded_field_length = field_newStringValue.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;
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ChangeStringValueReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ChangeStringValueReq_numberOfBytes_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, OCTETSTRING_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += 16;
+  myleaf.body.node.nodes[2]->calc = CALC_LENGTH;
+  myleaf.body.node.nodes[2]->coding_descr = &ChangeStringValueReq_numberOfBytes_descr_;
+  myleaf.body.node.nodes[2]->calcof.lengthto.num_of_fields = 1;
+  myleaf.body.node.nodes[2]->calcof.lengthto.unit = 8;
+  myleaf.body.node.nodes[2]->calcof.lengthto.offset = 0;
+  myleaf.body.node.nodes[2]->calcof.lengthto.fields = init_lengthto_fields_list(1);
+  myleaf.body.node.nodes[2]->length = 16;
+  myleaf.body.node.nodes[2]->calcof.lengthto.fields[0].level = myleaf.body.node.nodes[3]->curr_pos.level;
+  myleaf.body.node.nodes[2]->calcof.lengthto.fields[0].pos = myleaf.body.node.nodes[3]->curr_pos.pos;
+  encoded_length += field_newStringValue.RAW_encode(OCTETSTRING_descr_, *myleaf.body.node.nodes[3]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangeStringValueReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectID;
+INTEGER_template field_numberOfBytes;
+OCTETSTRING_template field_newStringValue;
+};
+
+void ChangeStringValueReq_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_vtfunction = ANY_VALUE;
+single_value->field_objectID = ANY_VALUE;
+single_value->field_numberOfBytes = ANY_VALUE;
+single_value->field_newStringValue = ANY_VALUE;
+}
+}
+}
+
+void ChangeStringValueReq_template::copy_value(const ChangeStringValueReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectID().is_bound()) {
+  single_value->field_objectID = other_value.objectID();
+} else {
+  single_value->field_objectID.clean_up();
+}
+if (other_value.numberOfBytes().is_bound()) {
+  single_value->field_numberOfBytes = other_value.numberOfBytes();
+} else {
+  single_value->field_numberOfBytes.clean_up();
+}
+if (other_value.newStringValue().is_bound()) {
+  single_value->field_newStringValue = other_value.newStringValue();
+} else {
+  single_value->field_newStringValue.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangeStringValueReq_template::copy_template(const ChangeStringValueReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectID().get_selection()) {
+single_value->field_objectID = other_value.objectID();
+} else {
+single_value->field_objectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.numberOfBytes().get_selection()) {
+single_value->field_numberOfBytes = other_value.numberOfBytes();
+} else {
+single_value->field_numberOfBytes.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.newStringValue().get_selection()) {
+single_value->field_newStringValue = other_value.newStringValue();
+} else {
+single_value->field_newStringValue.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangeStringValueReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeStringValueReq.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangeStringValueReq_template::ChangeStringValueReq_template()
+{
+}
+
+ChangeStringValueReq_template::ChangeStringValueReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangeStringValueReq_template::ChangeStringValueReq_template(const ChangeStringValueReq& other_value)
+{
+copy_value(other_value);
+}
+
+ChangeStringValueReq_template::ChangeStringValueReq_template(const OPTIONAL<ChangeStringValueReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeStringValueReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangeStringValueReq from an unbound optional field.");
+}
+}
+
+ChangeStringValueReq_template::ChangeStringValueReq_template(const ChangeStringValueReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangeStringValueReq_template::~ChangeStringValueReq_template()
+{
+clean_up();
+}
+
+ChangeStringValueReq_template& ChangeStringValueReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangeStringValueReq_template& ChangeStringValueReq_template::operator=(const ChangeStringValueReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangeStringValueReq_template& ChangeStringValueReq_template::operator=(const OPTIONAL<ChangeStringValueReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeStringValueReq&)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 @IsobusVTMessageTypes.ChangeStringValueReq.");
+}
+return *this;
+}
+
+ChangeStringValueReq_template& ChangeStringValueReq_template::operator=(const ChangeStringValueReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangeStringValueReq_template::match(const ChangeStringValueReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectID().is_bound()) return FALSE;
+if(!single_value->field_objectID.match(other_value.objectID(), legacy))return FALSE;
+if(!other_value.numberOfBytes().is_bound()) return FALSE;
+if(!single_value->field_numberOfBytes.match(other_value.numberOfBytes(), legacy))return FALSE;
+if(!other_value.newStringValue().is_bound()) return FALSE;
+if(!single_value->field_newStringValue.match(other_value.newStringValue(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeStringValueReq.");
+}
+return FALSE;
+}
+
+boolean ChangeStringValueReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectID.is_bound()
+
+ ||single_value->field_numberOfBytes.is_bound()
+
+ ||single_value->field_newStringValue.is_bound()
+;
+}
+
+boolean ChangeStringValueReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectID.is_value()
+ &&single_value->field_numberOfBytes.is_value()
+ &&single_value->field_newStringValue.is_value();
+}
+
+void ChangeStringValueReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangeStringValueReq ChangeStringValueReq_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 @IsobusVTMessageTypes.ChangeStringValueReq.");
+ChangeStringValueReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectID.is_bound()) {
+ret_val.objectID() = single_value->field_objectID.valueof();
+}
+if (single_value->field_numberOfBytes.is_bound()) {
+ret_val.numberOfBytes() = single_value->field_numberOfBytes.valueof();
+}
+if (single_value->field_newStringValue.is_bound()) {
+ret_val.newStringValue() = single_value->field_newStringValue.valueof();
+}
+return ret_val;
+}
+
+void ChangeStringValueReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangeStringValueReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangeStringValueReq_template[list_length];
+}
+
+ChangeStringValueReq_template& ChangeStringValueReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangeStringValueReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangeStringValueReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ChangeStringValueReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ChangeStringValueReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ChangeStringValueReq.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& ChangeStringValueReq_template::objectID()
+{
+set_specific();
+return single_value->field_objectID;
+}
+
+const INTEGER_template& ChangeStringValueReq_template::objectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectID of a non-specific template of type @IsobusVTMessageTypes.ChangeStringValueReq.");
+return single_value->field_objectID;
+}
+
+INTEGER_template& ChangeStringValueReq_template::numberOfBytes()
+{
+set_specific();
+return single_value->field_numberOfBytes;
+}
+
+const INTEGER_template& ChangeStringValueReq_template::numberOfBytes() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field numberOfBytes of a non-specific template of type @IsobusVTMessageTypes.ChangeStringValueReq.");
+return single_value->field_numberOfBytes;
+}
+
+OCTETSTRING_template& ChangeStringValueReq_template::newStringValue()
+{
+set_specific();
+return single_value->field_newStringValue;
+}
+
+const OCTETSTRING_template& ChangeStringValueReq_template::newStringValue() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field newStringValue of a non-specific template of type @IsobusVTMessageTypes.ChangeStringValueReq.");
+return single_value->field_newStringValue;
+}
+
+int ChangeStringValueReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeStringValueReq 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 @IsobusVTMessageTypes.ChangeStringValueReq 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 @IsobusVTMessageTypes.ChangeStringValueReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeStringValueReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeStringValueReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeStringValueReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeStringValueReq.");
+  }
+  return 0;
+}
+
+void ChangeStringValueReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log();
+TTCN_Logger::log_event_str(", numberOfBytes := ");
+single_value->field_numberOfBytes.log();
+TTCN_Logger::log_event_str(", newStringValue := ");
+single_value->field_newStringValue.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangeStringValueReq_template::log_match(const ChangeStringValueReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectID.match(match_value.objectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectID");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_numberOfBytes.match(match_value.numberOfBytes(), legacy)){
+TTCN_Logger::log_logmatch_info(".numberOfBytes");
+single_value->field_numberOfBytes.log_match(match_value.numberOfBytes(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_newStringValue.match(match_value.newStringValue(), legacy)){
+TTCN_Logger::log_logmatch_info(".newStringValue");
+single_value->field_newStringValue.log_match(match_value.newStringValue(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::log_event_str(", numberOfBytes := ");
+single_value->field_numberOfBytes.log_match(match_value.numberOfBytes(), legacy);
+TTCN_Logger::log_event_str(", newStringValue := ");
+single_value->field_newStringValue.log_match(match_value.newStringValue(), 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 ChangeStringValueReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectID.encode_text(text_buf);
+single_value->field_numberOfBytes.encode_text(text_buf);
+single_value->field_newStringValue.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 @IsobusVTMessageTypes.ChangeStringValueReq.");
+}
+}
+
+void ChangeStringValueReq_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_vtfunction.decode_text(text_buf);
+single_value->field_objectID.decode_text(text_buf);
+single_value->field_numberOfBytes.decode_text(text_buf);
+single_value->field_newStringValue.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 ChangeStringValueReq_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 @IsobusVTMessageTypes.ChangeStringValueReq.");
+}
+}
+
+void ChangeStringValueReq_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: {
+    ChangeStringValueReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.ChangeStringValueReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) numberOfBytes().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) newStringValue().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "numberOfBytes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          numberOfBytes().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(), "newStringValue")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          newStringValue().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 @IsobusVTMessageTypes.ChangeStringValueReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangeStringValueReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangeStringValueReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeStringValueReq");
+single_value->field_objectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeStringValueReq");
+single_value->field_numberOfBytes.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeStringValueReq");
+single_value->field_newStringValue.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeStringValueReq");
+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 : "@IsobusVTMessageTypes.ChangeStringValueReq");
+}
+
+boolean ChangeStringValueReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangeStringValueReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangeStringValueRes__ErrorCodes::ChangeStringValueRes__ErrorCodes()
+{
+}
+
+ChangeStringValueRes__ErrorCodes::ChangeStringValueRes__ErrorCodes(const BOOLEAN& par_undefined,
+    const BOOLEAN& par_invalidObjectID,
+    const BOOLEAN& par_stringTooLong,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved4,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7)
+  :   field_undefined(par_undefined),
+  field_invalidObjectID(par_invalidObjectID),
+  field_stringTooLong(par_stringTooLong),
+  field_anyOtherError(par_anyOtherError),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7)
+{
+}
+
+ChangeStringValueRes__ErrorCodes::ChangeStringValueRes__ErrorCodes(const ChangeStringValueRes__ErrorCodes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes.");
+if (other_value.undefined().is_bound()) field_undefined = other_value.undefined();
+else field_undefined.clean_up();
+if (other_value.invalidObjectID().is_bound()) field_invalidObjectID = other_value.invalidObjectID();
+else field_invalidObjectID.clean_up();
+if (other_value.stringTooLong().is_bound()) field_stringTooLong = other_value.stringTooLong();
+else field_stringTooLong.clean_up();
+if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+else field_anyOtherError.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+}
+
+void ChangeStringValueRes__ErrorCodes::clean_up()
+{
+field_undefined.clean_up();
+field_invalidObjectID.clean_up();
+field_stringTooLong.clean_up();
+field_anyOtherError.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangeStringValueRes__ErrorCodes::get_descriptor() const { return &ChangeStringValueRes__ErrorCodes_descr_; }
+ChangeStringValueRes__ErrorCodes& ChangeStringValueRes__ErrorCodes::operator=(const ChangeStringValueRes__ErrorCodes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes.");
+  if (other_value.undefined().is_bound()) field_undefined = other_value.undefined();
+  else field_undefined.clean_up();
+  if (other_value.invalidObjectID().is_bound()) field_invalidObjectID = other_value.invalidObjectID();
+  else field_invalidObjectID.clean_up();
+  if (other_value.stringTooLong().is_bound()) field_stringTooLong = other_value.stringTooLong();
+  else field_stringTooLong.clean_up();
+  if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+  else field_anyOtherError.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+}
+return *this;
+}
+
+boolean ChangeStringValueRes__ErrorCodes::operator==(const ChangeStringValueRes__ErrorCodes& other_value) const
+{
+return field_undefined==other_value.field_undefined
+  && field_invalidObjectID==other_value.field_invalidObjectID
+  && field_stringTooLong==other_value.field_stringTooLong
+  && field_anyOtherError==other_value.field_anyOtherError
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7;
+}
+
+boolean ChangeStringValueRes__ErrorCodes::is_bound() const
+{
+return (field_undefined.is_bound())
+  || (field_invalidObjectID.is_bound())
+  || (field_stringTooLong.is_bound())
+  || (field_anyOtherError.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound());
+}
+boolean ChangeStringValueRes__ErrorCodes::is_value() const
+{
+return field_undefined.is_value()
+  && field_invalidObjectID.is_value()
+  && field_stringTooLong.is_value()
+  && field_anyOtherError.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value();
+}
+void ChangeStringValueRes__ErrorCodes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ undefined := ");
+field_undefined.log();
+TTCN_Logger::log_event_str(", invalidObjectID := ");
+field_invalidObjectID.log();
+TTCN_Logger::log_event_str(", stringTooLong := ");
+field_stringTooLong.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangeStringValueRes__ErrorCodes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes has 8 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) undefined().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) invalidObjectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) stringTooLong().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "undefined")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          undefined().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(), "invalidObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidObjectID().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(), "stringTooLong")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          stringTooLong().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes");
+  }
+}
+
+void ChangeStringValueRes__ErrorCodes::set_implicit_omit()
+{
+if (undefined().is_bound()) undefined().set_implicit_omit();
+if (invalidObjectID().is_bound()) invalidObjectID().set_implicit_omit();
+if (stringTooLong().is_bound()) stringTooLong().set_implicit_omit();
+if (anyOtherError().is_bound()) anyOtherError().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+}
+
+void ChangeStringValueRes__ErrorCodes::encode_text(Text_Buf& text_buf) const
+{
+field_undefined.encode_text(text_buf);
+field_invalidObjectID.encode_text(text_buf);
+field_stringTooLong.encode_text(text_buf);
+field_anyOtherError.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+}
+
+void ChangeStringValueRes__ErrorCodes::decode_text(Text_Buf& text_buf)
+{
+field_undefined.decode_text(text_buf);
+field_invalidObjectID.decode_text(text_buf);
+field_stringTooLong.decode_text(text_buf);
+field_anyOtherError.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+}
+
+void ChangeStringValueRes__ErrorCodes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangeStringValueRes__ErrorCodes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangeStringValueRes__ErrorCodes::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_undefined.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidObjectID.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_stringTooLong.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_anyOtherError.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ChangeStringValueRes__ErrorCodes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_undefined.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_invalidObjectID.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_stringTooLong.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_anyOtherError.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved4.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved5.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved6.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved7.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangeStringValueRes__ErrorCodes_template::single_value_struct {
+BOOLEAN_template field_undefined;
+BOOLEAN_template field_invalidObjectID;
+BOOLEAN_template field_stringTooLong;
+BOOLEAN_template field_anyOtherError;
+BOOLEAN_template field_reserved4;
+BOOLEAN_template field_reserved5;
+BOOLEAN_template field_reserved6;
+BOOLEAN_template field_reserved7;
+};
+
+void ChangeStringValueRes__ErrorCodes_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_undefined = ANY_VALUE;
+single_value->field_invalidObjectID = ANY_VALUE;
+single_value->field_stringTooLong = ANY_VALUE;
+single_value->field_anyOtherError = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+}
+}
+}
+
+void ChangeStringValueRes__ErrorCodes_template::copy_value(const ChangeStringValueRes__ErrorCodes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.undefined().is_bound()) {
+  single_value->field_undefined = other_value.undefined();
+} else {
+  single_value->field_undefined.clean_up();
+}
+if (other_value.invalidObjectID().is_bound()) {
+  single_value->field_invalidObjectID = other_value.invalidObjectID();
+} else {
+  single_value->field_invalidObjectID.clean_up();
+}
+if (other_value.stringTooLong().is_bound()) {
+  single_value->field_stringTooLong = other_value.stringTooLong();
+} else {
+  single_value->field_stringTooLong.clean_up();
+}
+if (other_value.anyOtherError().is_bound()) {
+  single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+  single_value->field_anyOtherError.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangeStringValueRes__ErrorCodes_template::copy_template(const ChangeStringValueRes__ErrorCodes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.undefined().get_selection()) {
+single_value->field_undefined = other_value.undefined();
+} else {
+single_value->field_undefined.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.invalidObjectID().get_selection()) {
+single_value->field_invalidObjectID = other_value.invalidObjectID();
+} else {
+single_value->field_invalidObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.stringTooLong().get_selection()) {
+single_value->field_stringTooLong = other_value.stringTooLong();
+} else {
+single_value->field_stringTooLong.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.anyOtherError().get_selection()) {
+single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+single_value->field_anyOtherError.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangeStringValueRes__ErrorCodes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangeStringValueRes__ErrorCodes_template::ChangeStringValueRes__ErrorCodes_template()
+{
+}
+
+ChangeStringValueRes__ErrorCodes_template::ChangeStringValueRes__ErrorCodes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangeStringValueRes__ErrorCodes_template::ChangeStringValueRes__ErrorCodes_template(const ChangeStringValueRes__ErrorCodes& other_value)
+{
+copy_value(other_value);
+}
+
+ChangeStringValueRes__ErrorCodes_template::ChangeStringValueRes__ErrorCodes_template(const OPTIONAL<ChangeStringValueRes__ErrorCodes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeStringValueRes__ErrorCodes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes from an unbound optional field.");
+}
+}
+
+ChangeStringValueRes__ErrorCodes_template::ChangeStringValueRes__ErrorCodes_template(const ChangeStringValueRes__ErrorCodes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangeStringValueRes__ErrorCodes_template::~ChangeStringValueRes__ErrorCodes_template()
+{
+clean_up();
+}
+
+ChangeStringValueRes__ErrorCodes_template& ChangeStringValueRes__ErrorCodes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangeStringValueRes__ErrorCodes_template& ChangeStringValueRes__ErrorCodes_template::operator=(const ChangeStringValueRes__ErrorCodes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangeStringValueRes__ErrorCodes_template& ChangeStringValueRes__ErrorCodes_template::operator=(const OPTIONAL<ChangeStringValueRes__ErrorCodes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeStringValueRes__ErrorCodes&)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 @IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes.");
+}
+return *this;
+}
+
+ChangeStringValueRes__ErrorCodes_template& ChangeStringValueRes__ErrorCodes_template::operator=(const ChangeStringValueRes__ErrorCodes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangeStringValueRes__ErrorCodes_template::match(const ChangeStringValueRes__ErrorCodes& 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.undefined().is_bound()) return FALSE;
+if(!single_value->field_undefined.match(other_value.undefined(), legacy))return FALSE;
+if(!other_value.invalidObjectID().is_bound()) return FALSE;
+if(!single_value->field_invalidObjectID.match(other_value.invalidObjectID(), legacy))return FALSE;
+if(!other_value.stringTooLong().is_bound()) return FALSE;
+if(!single_value->field_stringTooLong.match(other_value.stringTooLong(), legacy))return FALSE;
+if(!other_value.anyOtherError().is_bound()) return FALSE;
+if(!single_value->field_anyOtherError.match(other_value.anyOtherError(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes.");
+}
+return FALSE;
+}
+
+boolean ChangeStringValueRes__ErrorCodes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_undefined.is_bound()
+
+ ||single_value->field_invalidObjectID.is_bound()
+
+ ||single_value->field_stringTooLong.is_bound()
+
+ ||single_value->field_anyOtherError.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+;
+}
+
+boolean ChangeStringValueRes__ErrorCodes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_undefined.is_value()
+ &&single_value->field_invalidObjectID.is_value()
+ &&single_value->field_stringTooLong.is_value()
+ &&single_value->field_anyOtherError.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value();
+}
+
+void ChangeStringValueRes__ErrorCodes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangeStringValueRes__ErrorCodes ChangeStringValueRes__ErrorCodes_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 @IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes.");
+ChangeStringValueRes__ErrorCodes ret_val;
+if (single_value->field_undefined.is_bound()) {
+ret_val.undefined() = single_value->field_undefined.valueof();
+}
+if (single_value->field_invalidObjectID.is_bound()) {
+ret_val.invalidObjectID() = single_value->field_invalidObjectID.valueof();
+}
+if (single_value->field_stringTooLong.is_bound()) {
+ret_val.stringTooLong() = single_value->field_stringTooLong.valueof();
+}
+if (single_value->field_anyOtherError.is_bound()) {
+ret_val.anyOtherError() = single_value->field_anyOtherError.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+return ret_val;
+}
+
+void ChangeStringValueRes__ErrorCodes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangeStringValueRes__ErrorCodes_template[list_length];
+}
+
+ChangeStringValueRes__ErrorCodes_template& ChangeStringValueRes__ErrorCodes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& ChangeStringValueRes__ErrorCodes_template::undefined()
+{
+set_specific();
+return single_value->field_undefined;
+}
+
+const BOOLEAN_template& ChangeStringValueRes__ErrorCodes_template::undefined() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field undefined of a non-specific template of type @IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes.");
+return single_value->field_undefined;
+}
+
+BOOLEAN_template& ChangeStringValueRes__ErrorCodes_template::invalidObjectID()
+{
+set_specific();
+return single_value->field_invalidObjectID;
+}
+
+const BOOLEAN_template& ChangeStringValueRes__ErrorCodes_template::invalidObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidObjectID of a non-specific template of type @IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes.");
+return single_value->field_invalidObjectID;
+}
+
+BOOLEAN_template& ChangeStringValueRes__ErrorCodes_template::stringTooLong()
+{
+set_specific();
+return single_value->field_stringTooLong;
+}
+
+const BOOLEAN_template& ChangeStringValueRes__ErrorCodes_template::stringTooLong() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field stringTooLong of a non-specific template of type @IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes.");
+return single_value->field_stringTooLong;
+}
+
+BOOLEAN_template& ChangeStringValueRes__ErrorCodes_template::anyOtherError()
+{
+set_specific();
+return single_value->field_anyOtherError;
+}
+
+const BOOLEAN_template& ChangeStringValueRes__ErrorCodes_template::anyOtherError() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field anyOtherError of a non-specific template of type @IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes.");
+return single_value->field_anyOtherError;
+}
+
+BOOLEAN_template& ChangeStringValueRes__ErrorCodes_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const BOOLEAN_template& ChangeStringValueRes__ErrorCodes_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes.");
+return single_value->field_reserved4;
+}
+
+BOOLEAN_template& ChangeStringValueRes__ErrorCodes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const BOOLEAN_template& ChangeStringValueRes__ErrorCodes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes.");
+return single_value->field_reserved5;
+}
+
+BOOLEAN_template& ChangeStringValueRes__ErrorCodes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const BOOLEAN_template& ChangeStringValueRes__ErrorCodes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes.");
+return single_value->field_reserved6;
+}
+
+BOOLEAN_template& ChangeStringValueRes__ErrorCodes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const BOOLEAN_template& ChangeStringValueRes__ErrorCodes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes.");
+return single_value->field_reserved7;
+}
+
+int ChangeStringValueRes__ErrorCodes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes 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 @IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes.");
+  }
+  return 0;
+}
+
+void ChangeStringValueRes__ErrorCodes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ undefined := ");
+single_value->field_undefined.log();
+TTCN_Logger::log_event_str(", invalidObjectID := ");
+single_value->field_invalidObjectID.log();
+TTCN_Logger::log_event_str(", stringTooLong := ");
+single_value->field_stringTooLong.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangeStringValueRes__ErrorCodes_template::log_match(const ChangeStringValueRes__ErrorCodes& 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_undefined.match(match_value.undefined(), legacy)){
+TTCN_Logger::log_logmatch_info(".undefined");
+single_value->field_undefined.log_match(match_value.undefined(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_invalidObjectID.match(match_value.invalidObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidObjectID");
+single_value->field_invalidObjectID.log_match(match_value.invalidObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_stringTooLong.match(match_value.stringTooLong(), legacy)){
+TTCN_Logger::log_logmatch_info(".stringTooLong");
+single_value->field_stringTooLong.log_match(match_value.stringTooLong(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_anyOtherError.match(match_value.anyOtherError(), legacy)){
+TTCN_Logger::log_logmatch_info(".anyOtherError");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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("{ undefined := ");
+single_value->field_undefined.log_match(match_value.undefined(), legacy);
+TTCN_Logger::log_event_str(", invalidObjectID := ");
+single_value->field_invalidObjectID.log_match(match_value.invalidObjectID(), legacy);
+TTCN_Logger::log_event_str(", stringTooLong := ");
+single_value->field_stringTooLong.log_match(match_value.stringTooLong(), legacy);
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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 ChangeStringValueRes__ErrorCodes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_undefined.encode_text(text_buf);
+single_value->field_invalidObjectID.encode_text(text_buf);
+single_value->field_stringTooLong.encode_text(text_buf);
+single_value->field_anyOtherError.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.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 @IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes.");
+}
+}
+
+void ChangeStringValueRes__ErrorCodes_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_undefined.decode_text(text_buf);
+single_value->field_invalidObjectID.decode_text(text_buf);
+single_value->field_stringTooLong.decode_text(text_buf);
+single_value->field_anyOtherError.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.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 ChangeStringValueRes__ErrorCodes_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 @IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes.");
+}
+}
+
+void ChangeStringValueRes__ErrorCodes_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: {
+    ChangeStringValueRes__ErrorCodes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes has 8 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) undefined().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) invalidObjectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) stringTooLong().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "undefined")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          undefined().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(), "invalidObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidObjectID().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(), "stringTooLong")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          stringTooLong().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangeStringValueRes__ErrorCodes_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_undefined.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes");
+single_value->field_invalidObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes");
+single_value->field_stringTooLong.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes");
+single_value->field_anyOtherError.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes");
+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 : "@IsobusVTMessageTypes.ChangeStringValueRes_ErrorCodes");
+}
+
+boolean ChangeStringValueRes__ErrorCodes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangeStringValueRes__ErrorCodes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangeStringValueRes::ChangeStringValueRes()
+{
+}
+
+ChangeStringValueRes::ChangeStringValueRes(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_reserved2,
+    const OCTETSTRING& par_reserved3,
+    const INTEGER& par_objectID,
+    const ChangeStringValueRes__ErrorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_reserved2(par_reserved2),
+  field_reserved3(par_reserved3),
+  field_objectID(par_objectID),
+  field_errorCodes(par_errorCodes),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+ChangeStringValueRes::ChangeStringValueRes(const ChangeStringValueRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangeStringValueRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+else field_reserved2.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+else field_objectID.clean_up();
+if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+else field_errorCodes.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void ChangeStringValueRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_reserved2.clean_up();
+field_reserved3.clean_up();
+field_objectID.clean_up();
+field_errorCodes.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangeStringValueRes::get_descriptor() const { return &ChangeStringValueRes_descr_; }
+ChangeStringValueRes& ChangeStringValueRes::operator=(const ChangeStringValueRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangeStringValueRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+  else field_reserved2.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+  else field_objectID.clean_up();
+  if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+  else field_errorCodes.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean ChangeStringValueRes::operator==(const ChangeStringValueRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_reserved2==other_value.field_reserved2
+  && field_reserved3==other_value.field_reserved3
+  && field_objectID==other_value.field_objectID
+  && field_errorCodes==other_value.field_errorCodes
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean ChangeStringValueRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_reserved2.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_objectID.is_bound())
+  || (field_errorCodes.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean ChangeStringValueRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_reserved2.is_value()
+  && field_reserved3.is_value()
+  && field_objectID.is_value()
+  && field_errorCodes.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void ChangeStringValueRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", objectID := ");
+field_objectID.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangeStringValueRes::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 @IsobusVTMessageTypes.ChangeStringValueRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangeStringValueRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangeStringValueRes");
+  }
+}
+
+void ChangeStringValueRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (reserved2().is_bound()) reserved2().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (objectID().is_bound()) objectID().set_implicit_omit();
+if (errorCodes().is_bound()) errorCodes().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void ChangeStringValueRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_reserved2.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_objectID.encode_text(text_buf);
+field_errorCodes.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void ChangeStringValueRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_reserved2.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_objectID.decode_text(text_buf);
+field_errorCodes.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void ChangeStringValueRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangeStringValueRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangeStringValueRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ChangeStringValueRes_reserved2_descr_.raw->forceomit);
+  decoded_field_length = field_reserved2.RAW_decode(ChangeStringValueRes_reserved2_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, ChangeStringValueRes_reserved3_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(ChangeStringValueRes_reserved3_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectID.RAW_decode(ValidObjectID_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, ChangeStringValueRes__ErrorCodes_descr_.raw->forceomit);
+  decoded_field_length = field_errorCodes.RAW_decode(ChangeStringValueRes__ErrorCodes_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, ChangeStringValueRes_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(ChangeStringValueRes_reserved7_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, ChangeStringValueRes_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(ChangeStringValueRes_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ChangeStringValueRes::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ChangeStringValueRes_reserved2_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ChangeStringValueRes_reserved3_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, ChangeStringValueRes__ErrorCodes_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, ChangeStringValueRes_reserved7_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, ChangeStringValueRes_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved2.RAW_encode(ChangeStringValueRes_reserved2_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved3.RAW_encode(ChangeStringValueRes_reserved3_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_objectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_errorCodes.RAW_encode(ChangeStringValueRes__ErrorCodes_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved7.RAW_encode(ChangeStringValueRes_reserved7_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved8.RAW_encode(ChangeStringValueRes_reserved8_descr_, *myleaf.body.node.nodes[6]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangeStringValueRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+OCTETSTRING_template field_reserved2;
+OCTETSTRING_template field_reserved3;
+INTEGER_template field_objectID;
+ChangeStringValueRes__ErrorCodes_template field_errorCodes;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void ChangeStringValueRes_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_vtfunction = ANY_VALUE;
+single_value->field_reserved2 = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_objectID = ANY_VALUE;
+single_value->field_errorCodes = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void ChangeStringValueRes_template::copy_value(const ChangeStringValueRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.reserved2().is_bound()) {
+  single_value->field_reserved2 = other_value.reserved2();
+} else {
+  single_value->field_reserved2.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.objectID().is_bound()) {
+  single_value->field_objectID = other_value.objectID();
+} else {
+  single_value->field_objectID.clean_up();
+}
+if (other_value.errorCodes().is_bound()) {
+  single_value->field_errorCodes = other_value.errorCodes();
+} else {
+  single_value->field_errorCodes.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangeStringValueRes_template::copy_template(const ChangeStringValueRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved2().get_selection()) {
+single_value->field_reserved2 = other_value.reserved2();
+} else {
+single_value->field_reserved2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectID().get_selection()) {
+single_value->field_objectID = other_value.objectID();
+} else {
+single_value->field_objectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.errorCodes().get_selection()) {
+single_value->field_errorCodes = other_value.errorCodes();
+} else {
+single_value->field_errorCodes.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangeStringValueRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeStringValueRes.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangeStringValueRes_template::ChangeStringValueRes_template()
+{
+}
+
+ChangeStringValueRes_template::ChangeStringValueRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangeStringValueRes_template::ChangeStringValueRes_template(const ChangeStringValueRes& other_value)
+{
+copy_value(other_value);
+}
+
+ChangeStringValueRes_template::ChangeStringValueRes_template(const OPTIONAL<ChangeStringValueRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeStringValueRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangeStringValueRes from an unbound optional field.");
+}
+}
+
+ChangeStringValueRes_template::ChangeStringValueRes_template(const ChangeStringValueRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangeStringValueRes_template::~ChangeStringValueRes_template()
+{
+clean_up();
+}
+
+ChangeStringValueRes_template& ChangeStringValueRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangeStringValueRes_template& ChangeStringValueRes_template::operator=(const ChangeStringValueRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangeStringValueRes_template& ChangeStringValueRes_template::operator=(const OPTIONAL<ChangeStringValueRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeStringValueRes&)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 @IsobusVTMessageTypes.ChangeStringValueRes.");
+}
+return *this;
+}
+
+ChangeStringValueRes_template& ChangeStringValueRes_template::operator=(const ChangeStringValueRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangeStringValueRes_template::match(const ChangeStringValueRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.reserved2().is_bound()) return FALSE;
+if(!single_value->field_reserved2.match(other_value.reserved2(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.objectID().is_bound()) return FALSE;
+if(!single_value->field_objectID.match(other_value.objectID(), legacy))return FALSE;
+if(!other_value.errorCodes().is_bound()) return FALSE;
+if(!single_value->field_errorCodes.match(other_value.errorCodes(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeStringValueRes.");
+}
+return FALSE;
+}
+
+boolean ChangeStringValueRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_reserved2.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_objectID.is_bound()
+
+ ||single_value->field_errorCodes.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean ChangeStringValueRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_reserved2.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_objectID.is_value()
+ &&single_value->field_errorCodes.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void ChangeStringValueRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangeStringValueRes ChangeStringValueRes_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 @IsobusVTMessageTypes.ChangeStringValueRes.");
+ChangeStringValueRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_reserved2.is_bound()) {
+ret_val.reserved2() = single_value->field_reserved2.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_objectID.is_bound()) {
+ret_val.objectID() = single_value->field_objectID.valueof();
+}
+if (single_value->field_errorCodes.is_bound()) {
+ret_val.errorCodes() = single_value->field_errorCodes.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void ChangeStringValueRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangeStringValueRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangeStringValueRes_template[list_length];
+}
+
+ChangeStringValueRes_template& ChangeStringValueRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangeStringValueRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangeStringValueRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ChangeStringValueRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ChangeStringValueRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ChangeStringValueRes.");
+return single_value->field_vtfunction;
+}
+
+OCTETSTRING_template& ChangeStringValueRes_template::reserved2()
+{
+set_specific();
+return single_value->field_reserved2;
+}
+
+const OCTETSTRING_template& ChangeStringValueRes_template::reserved2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved2 of a non-specific template of type @IsobusVTMessageTypes.ChangeStringValueRes.");
+return single_value->field_reserved2;
+}
+
+OCTETSTRING_template& ChangeStringValueRes_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const OCTETSTRING_template& ChangeStringValueRes_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.ChangeStringValueRes.");
+return single_value->field_reserved3;
+}
+
+INTEGER_template& ChangeStringValueRes_template::objectID()
+{
+set_specific();
+return single_value->field_objectID;
+}
+
+const INTEGER_template& ChangeStringValueRes_template::objectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectID of a non-specific template of type @IsobusVTMessageTypes.ChangeStringValueRes.");
+return single_value->field_objectID;
+}
+
+ChangeStringValueRes__ErrorCodes_template& ChangeStringValueRes_template::errorCodes()
+{
+set_specific();
+return single_value->field_errorCodes;
+}
+
+const ChangeStringValueRes__ErrorCodes_template& ChangeStringValueRes_template::errorCodes() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field errorCodes of a non-specific template of type @IsobusVTMessageTypes.ChangeStringValueRes.");
+return single_value->field_errorCodes;
+}
+
+OCTETSTRING_template& ChangeStringValueRes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& ChangeStringValueRes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ChangeStringValueRes.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& ChangeStringValueRes_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& ChangeStringValueRes_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.ChangeStringValueRes.");
+return single_value->field_reserved8;
+}
+
+int ChangeStringValueRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeStringValueRes 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 @IsobusVTMessageTypes.ChangeStringValueRes 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 @IsobusVTMessageTypes.ChangeStringValueRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeStringValueRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeStringValueRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeStringValueRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeStringValueRes.");
+  }
+  return 0;
+}
+
+void ChangeStringValueRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangeStringValueRes_template::log_match(const ChangeStringValueRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved2.match(match_value.reserved2(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved2");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectID.match(match_value.objectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectID");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_errorCodes.match(match_value.errorCodes(), legacy)){
+TTCN_Logger::log_logmatch_info(".errorCodes");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 ChangeStringValueRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_reserved2.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_objectID.encode_text(text_buf);
+single_value->field_errorCodes.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.ChangeStringValueRes.");
+}
+}
+
+void ChangeStringValueRes_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_vtfunction.decode_text(text_buf);
+single_value->field_reserved2.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_objectID.decode_text(text_buf);
+single_value->field_errorCodes.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 ChangeStringValueRes_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 @IsobusVTMessageTypes.ChangeStringValueRes.");
+}
+}
+
+void ChangeStringValueRes_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: {
+    ChangeStringValueRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.ChangeStringValueRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangeStringValueRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangeStringValueRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangeStringValueRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeStringValueRes");
+single_value->field_reserved2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeStringValueRes");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeStringValueRes");
+single_value->field_objectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeStringValueRes");
+single_value->field_errorCodes.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeStringValueRes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeStringValueRes");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeStringValueRes");
+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 : "@IsobusVTMessageTypes.ChangeStringValueRes");
+}
+
+boolean ChangeStringValueRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangeStringValueRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangeChildPositionReq::ChangeChildPositionReq()
+{
+}
+
+ChangeChildPositionReq::ChangeChildPositionReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_parentObjectID,
+    const INTEGER& par_objectID,
+    const INTEGER& par_pos__x__relative,
+    const INTEGER& par_pos__y__relative)
+  :   field_vtfunction(par_vtfunction),
+  field_parentObjectID(par_parentObjectID),
+  field_objectID(par_objectID),
+  field_pos__x__relative(par_pos__x__relative),
+  field_pos__y__relative(par_pos__y__relative)
+{
+}
+
+ChangeChildPositionReq::ChangeChildPositionReq(const ChangeChildPositionReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangeChildPositionReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.parentObjectID().is_bound()) field_parentObjectID = other_value.parentObjectID();
+else field_parentObjectID.clean_up();
+if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+else field_objectID.clean_up();
+if (other_value.pos__x__relative().is_bound()) field_pos__x__relative = other_value.pos__x__relative();
+else field_pos__x__relative.clean_up();
+if (other_value.pos__y__relative().is_bound()) field_pos__y__relative = other_value.pos__y__relative();
+else field_pos__y__relative.clean_up();
+}
+
+void ChangeChildPositionReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_parentObjectID.clean_up();
+field_objectID.clean_up();
+field_pos__x__relative.clean_up();
+field_pos__y__relative.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangeChildPositionReq::get_descriptor() const { return &ChangeChildPositionReq_descr_; }
+ChangeChildPositionReq& ChangeChildPositionReq::operator=(const ChangeChildPositionReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangeChildPositionReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.parentObjectID().is_bound()) field_parentObjectID = other_value.parentObjectID();
+  else field_parentObjectID.clean_up();
+  if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+  else field_objectID.clean_up();
+  if (other_value.pos__x__relative().is_bound()) field_pos__x__relative = other_value.pos__x__relative();
+  else field_pos__x__relative.clean_up();
+  if (other_value.pos__y__relative().is_bound()) field_pos__y__relative = other_value.pos__y__relative();
+  else field_pos__y__relative.clean_up();
+}
+return *this;
+}
+
+boolean ChangeChildPositionReq::operator==(const ChangeChildPositionReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_parentObjectID==other_value.field_parentObjectID
+  && field_objectID==other_value.field_objectID
+  && field_pos__x__relative==other_value.field_pos__x__relative
+  && field_pos__y__relative==other_value.field_pos__y__relative;
+}
+
+boolean ChangeChildPositionReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_parentObjectID.is_bound())
+  || (field_objectID.is_bound())
+  || (field_pos__x__relative.is_bound())
+  || (field_pos__y__relative.is_bound());
+}
+boolean ChangeChildPositionReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_parentObjectID.is_value()
+  && field_objectID.is_value()
+  && field_pos__x__relative.is_value()
+  && field_pos__y__relative.is_value();
+}
+void ChangeChildPositionReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", parentObjectID := ");
+field_parentObjectID.log();
+TTCN_Logger::log_event_str(", objectID := ");
+field_objectID.log();
+TTCN_Logger::log_event_str(", pos_x_relative := ");
+field_pos__x__relative.log();
+TTCN_Logger::log_event_str(", pos_y_relative := ");
+field_pos__y__relative.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangeChildPositionReq::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 @IsobusVTMessageTypes.ChangeChildPositionReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) parentObjectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) pos__x__relative().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) pos__y__relative().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "parentObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          parentObjectID().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "pos_x_relative")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          pos__x__relative().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(), "pos_y_relative")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          pos__y__relative().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 @IsobusVTMessageTypes.ChangeChildPositionReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangeChildPositionReq");
+  }
+}
+
+void ChangeChildPositionReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (parentObjectID().is_bound()) parentObjectID().set_implicit_omit();
+if (objectID().is_bound()) objectID().set_implicit_omit();
+if (pos__x__relative().is_bound()) pos__x__relative().set_implicit_omit();
+if (pos__y__relative().is_bound()) pos__y__relative().set_implicit_omit();
+}
+
+void ChangeChildPositionReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_parentObjectID.encode_text(text_buf);
+field_objectID.encode_text(text_buf);
+field_pos__x__relative.encode_text(text_buf);
+field_pos__y__relative.encode_text(text_buf);
+}
+
+void ChangeChildPositionReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_parentObjectID.decode_text(text_buf);
+field_objectID.decode_text(text_buf);
+field_pos__x__relative.decode_text(text_buf);
+field_pos__y__relative.decode_text(text_buf);
+}
+
+void ChangeChildPositionReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangeChildPositionReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangeChildPositionReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_parentObjectID.RAW_decode(ValidObjectID_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectID.RAW_decode(ValidObjectID_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, PositionType_descr_.raw->forceomit);
+  decoded_field_length = field_pos__x__relative.RAW_decode(PositionType_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, PositionType_descr_.raw->forceomit);
+  decoded_field_length = field_pos__y__relative.RAW_decode(PositionType_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 ChangeChildPositionReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, PositionType_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, PositionType_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_parentObjectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_objectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_pos__x__relative.RAW_encode(PositionType_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_pos__y__relative.RAW_encode(PositionType_descr_, *myleaf.body.node.nodes[4]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangeChildPositionReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_parentObjectID;
+INTEGER_template field_objectID;
+INTEGER_template field_pos__x__relative;
+INTEGER_template field_pos__y__relative;
+};
+
+void ChangeChildPositionReq_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_vtfunction = ANY_VALUE;
+single_value->field_parentObjectID = ANY_VALUE;
+single_value->field_objectID = ANY_VALUE;
+single_value->field_pos__x__relative = ANY_VALUE;
+single_value->field_pos__y__relative = ANY_VALUE;
+}
+}
+}
+
+void ChangeChildPositionReq_template::copy_value(const ChangeChildPositionReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.parentObjectID().is_bound()) {
+  single_value->field_parentObjectID = other_value.parentObjectID();
+} else {
+  single_value->field_parentObjectID.clean_up();
+}
+if (other_value.objectID().is_bound()) {
+  single_value->field_objectID = other_value.objectID();
+} else {
+  single_value->field_objectID.clean_up();
+}
+if (other_value.pos__x__relative().is_bound()) {
+  single_value->field_pos__x__relative = other_value.pos__x__relative();
+} else {
+  single_value->field_pos__x__relative.clean_up();
+}
+if (other_value.pos__y__relative().is_bound()) {
+  single_value->field_pos__y__relative = other_value.pos__y__relative();
+} else {
+  single_value->field_pos__y__relative.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangeChildPositionReq_template::copy_template(const ChangeChildPositionReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.parentObjectID().get_selection()) {
+single_value->field_parentObjectID = other_value.parentObjectID();
+} else {
+single_value->field_parentObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectID().get_selection()) {
+single_value->field_objectID = other_value.objectID();
+} else {
+single_value->field_objectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.pos__x__relative().get_selection()) {
+single_value->field_pos__x__relative = other_value.pos__x__relative();
+} else {
+single_value->field_pos__x__relative.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.pos__y__relative().get_selection()) {
+single_value->field_pos__y__relative = other_value.pos__y__relative();
+} else {
+single_value->field_pos__y__relative.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangeChildPositionReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeChildPositionReq.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangeChildPositionReq_template::ChangeChildPositionReq_template()
+{
+}
+
+ChangeChildPositionReq_template::ChangeChildPositionReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangeChildPositionReq_template::ChangeChildPositionReq_template(const ChangeChildPositionReq& other_value)
+{
+copy_value(other_value);
+}
+
+ChangeChildPositionReq_template::ChangeChildPositionReq_template(const OPTIONAL<ChangeChildPositionReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeChildPositionReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangeChildPositionReq from an unbound optional field.");
+}
+}
+
+ChangeChildPositionReq_template::ChangeChildPositionReq_template(const ChangeChildPositionReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangeChildPositionReq_template::~ChangeChildPositionReq_template()
+{
+clean_up();
+}
+
+ChangeChildPositionReq_template& ChangeChildPositionReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangeChildPositionReq_template& ChangeChildPositionReq_template::operator=(const ChangeChildPositionReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangeChildPositionReq_template& ChangeChildPositionReq_template::operator=(const OPTIONAL<ChangeChildPositionReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeChildPositionReq&)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 @IsobusVTMessageTypes.ChangeChildPositionReq.");
+}
+return *this;
+}
+
+ChangeChildPositionReq_template& ChangeChildPositionReq_template::operator=(const ChangeChildPositionReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangeChildPositionReq_template::match(const ChangeChildPositionReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.parentObjectID().is_bound()) return FALSE;
+if(!single_value->field_parentObjectID.match(other_value.parentObjectID(), legacy))return FALSE;
+if(!other_value.objectID().is_bound()) return FALSE;
+if(!single_value->field_objectID.match(other_value.objectID(), legacy))return FALSE;
+if(!other_value.pos__x__relative().is_bound()) return FALSE;
+if(!single_value->field_pos__x__relative.match(other_value.pos__x__relative(), legacy))return FALSE;
+if(!other_value.pos__y__relative().is_bound()) return FALSE;
+if(!single_value->field_pos__y__relative.match(other_value.pos__y__relative(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeChildPositionReq.");
+}
+return FALSE;
+}
+
+boolean ChangeChildPositionReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_parentObjectID.is_bound()
+
+ ||single_value->field_objectID.is_bound()
+
+ ||single_value->field_pos__x__relative.is_bound()
+
+ ||single_value->field_pos__y__relative.is_bound()
+;
+}
+
+boolean ChangeChildPositionReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_parentObjectID.is_value()
+ &&single_value->field_objectID.is_value()
+ &&single_value->field_pos__x__relative.is_value()
+ &&single_value->field_pos__y__relative.is_value();
+}
+
+void ChangeChildPositionReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangeChildPositionReq ChangeChildPositionReq_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 @IsobusVTMessageTypes.ChangeChildPositionReq.");
+ChangeChildPositionReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_parentObjectID.is_bound()) {
+ret_val.parentObjectID() = single_value->field_parentObjectID.valueof();
+}
+if (single_value->field_objectID.is_bound()) {
+ret_val.objectID() = single_value->field_objectID.valueof();
+}
+if (single_value->field_pos__x__relative.is_bound()) {
+ret_val.pos__x__relative() = single_value->field_pos__x__relative.valueof();
+}
+if (single_value->field_pos__y__relative.is_bound()) {
+ret_val.pos__y__relative() = single_value->field_pos__y__relative.valueof();
+}
+return ret_val;
+}
+
+void ChangeChildPositionReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangeChildPositionReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangeChildPositionReq_template[list_length];
+}
+
+ChangeChildPositionReq_template& ChangeChildPositionReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangeChildPositionReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangeChildPositionReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ChangeChildPositionReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ChangeChildPositionReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ChangeChildPositionReq.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& ChangeChildPositionReq_template::parentObjectID()
+{
+set_specific();
+return single_value->field_parentObjectID;
+}
+
+const INTEGER_template& ChangeChildPositionReq_template::parentObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field parentObjectID of a non-specific template of type @IsobusVTMessageTypes.ChangeChildPositionReq.");
+return single_value->field_parentObjectID;
+}
+
+INTEGER_template& ChangeChildPositionReq_template::objectID()
+{
+set_specific();
+return single_value->field_objectID;
+}
+
+const INTEGER_template& ChangeChildPositionReq_template::objectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectID of a non-specific template of type @IsobusVTMessageTypes.ChangeChildPositionReq.");
+return single_value->field_objectID;
+}
+
+INTEGER_template& ChangeChildPositionReq_template::pos__x__relative()
+{
+set_specific();
+return single_value->field_pos__x__relative;
+}
+
+const INTEGER_template& ChangeChildPositionReq_template::pos__x__relative() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field pos_x_relative of a non-specific template of type @IsobusVTMessageTypes.ChangeChildPositionReq.");
+return single_value->field_pos__x__relative;
+}
+
+INTEGER_template& ChangeChildPositionReq_template::pos__y__relative()
+{
+set_specific();
+return single_value->field_pos__y__relative;
+}
+
+const INTEGER_template& ChangeChildPositionReq_template::pos__y__relative() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field pos_y_relative of a non-specific template of type @IsobusVTMessageTypes.ChangeChildPositionReq.");
+return single_value->field_pos__y__relative;
+}
+
+int ChangeChildPositionReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeChildPositionReq 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 @IsobusVTMessageTypes.ChangeChildPositionReq 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 @IsobusVTMessageTypes.ChangeChildPositionReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeChildPositionReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeChildPositionReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeChildPositionReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeChildPositionReq.");
+  }
+  return 0;
+}
+
+void ChangeChildPositionReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", parentObjectID := ");
+single_value->field_parentObjectID.log();
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log();
+TTCN_Logger::log_event_str(", pos_x_relative := ");
+single_value->field_pos__x__relative.log();
+TTCN_Logger::log_event_str(", pos_y_relative := ");
+single_value->field_pos__y__relative.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangeChildPositionReq_template::log_match(const ChangeChildPositionReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_parentObjectID.match(match_value.parentObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".parentObjectID");
+single_value->field_parentObjectID.log_match(match_value.parentObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectID.match(match_value.objectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectID");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_pos__x__relative.match(match_value.pos__x__relative(), legacy)){
+TTCN_Logger::log_logmatch_info(".pos_x_relative");
+single_value->field_pos__x__relative.log_match(match_value.pos__x__relative(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_pos__y__relative.match(match_value.pos__y__relative(), legacy)){
+TTCN_Logger::log_logmatch_info(".pos_y_relative");
+single_value->field_pos__y__relative.log_match(match_value.pos__y__relative(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", parentObjectID := ");
+single_value->field_parentObjectID.log_match(match_value.parentObjectID(), legacy);
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::log_event_str(", pos_x_relative := ");
+single_value->field_pos__x__relative.log_match(match_value.pos__x__relative(), legacy);
+TTCN_Logger::log_event_str(", pos_y_relative := ");
+single_value->field_pos__y__relative.log_match(match_value.pos__y__relative(), 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 ChangeChildPositionReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_parentObjectID.encode_text(text_buf);
+single_value->field_objectID.encode_text(text_buf);
+single_value->field_pos__x__relative.encode_text(text_buf);
+single_value->field_pos__y__relative.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 @IsobusVTMessageTypes.ChangeChildPositionReq.");
+}
+}
+
+void ChangeChildPositionReq_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_vtfunction.decode_text(text_buf);
+single_value->field_parentObjectID.decode_text(text_buf);
+single_value->field_objectID.decode_text(text_buf);
+single_value->field_pos__x__relative.decode_text(text_buf);
+single_value->field_pos__y__relative.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 ChangeChildPositionReq_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 @IsobusVTMessageTypes.ChangeChildPositionReq.");
+}
+}
+
+void ChangeChildPositionReq_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: {
+    ChangeChildPositionReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.ChangeChildPositionReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) parentObjectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) pos__x__relative().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) pos__y__relative().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "parentObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          parentObjectID().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "pos_x_relative")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          pos__x__relative().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(), "pos_y_relative")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          pos__y__relative().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 @IsobusVTMessageTypes.ChangeChildPositionReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangeChildPositionReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangeChildPositionReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeChildPositionReq");
+single_value->field_parentObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeChildPositionReq");
+single_value->field_objectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeChildPositionReq");
+single_value->field_pos__x__relative.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeChildPositionReq");
+single_value->field_pos__y__relative.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeChildPositionReq");
+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 : "@IsobusVTMessageTypes.ChangeChildPositionReq");
+}
+
+boolean ChangeChildPositionReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangeChildPositionReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangeChildPositionRes__ErrorCodes::ChangeChildPositionRes__ErrorCodes()
+{
+}
+
+ChangeChildPositionRes__ErrorCodes::ChangeChildPositionRes__ErrorCodes(const BOOLEAN& par_invalidParentObjectID,
+    const BOOLEAN& par_invalidObjectID,
+    const BOOLEAN& par_undefined,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved4,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7)
+  :   field_invalidParentObjectID(par_invalidParentObjectID),
+  field_invalidObjectID(par_invalidObjectID),
+  field_undefined(par_undefined),
+  field_anyOtherError(par_anyOtherError),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7)
+{
+}
+
+ChangeChildPositionRes__ErrorCodes::ChangeChildPositionRes__ErrorCodes(const ChangeChildPositionRes__ErrorCodes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes.");
+if (other_value.invalidParentObjectID().is_bound()) field_invalidParentObjectID = other_value.invalidParentObjectID();
+else field_invalidParentObjectID.clean_up();
+if (other_value.invalidObjectID().is_bound()) field_invalidObjectID = other_value.invalidObjectID();
+else field_invalidObjectID.clean_up();
+if (other_value.undefined().is_bound()) field_undefined = other_value.undefined();
+else field_undefined.clean_up();
+if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+else field_anyOtherError.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+}
+
+void ChangeChildPositionRes__ErrorCodes::clean_up()
+{
+field_invalidParentObjectID.clean_up();
+field_invalidObjectID.clean_up();
+field_undefined.clean_up();
+field_anyOtherError.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangeChildPositionRes__ErrorCodes::get_descriptor() const { return &ChangeChildPositionRes__ErrorCodes_descr_; }
+ChangeChildPositionRes__ErrorCodes& ChangeChildPositionRes__ErrorCodes::operator=(const ChangeChildPositionRes__ErrorCodes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes.");
+  if (other_value.invalidParentObjectID().is_bound()) field_invalidParentObjectID = other_value.invalidParentObjectID();
+  else field_invalidParentObjectID.clean_up();
+  if (other_value.invalidObjectID().is_bound()) field_invalidObjectID = other_value.invalidObjectID();
+  else field_invalidObjectID.clean_up();
+  if (other_value.undefined().is_bound()) field_undefined = other_value.undefined();
+  else field_undefined.clean_up();
+  if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+  else field_anyOtherError.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+}
+return *this;
+}
+
+boolean ChangeChildPositionRes__ErrorCodes::operator==(const ChangeChildPositionRes__ErrorCodes& other_value) const
+{
+return field_invalidParentObjectID==other_value.field_invalidParentObjectID
+  && field_invalidObjectID==other_value.field_invalidObjectID
+  && field_undefined==other_value.field_undefined
+  && field_anyOtherError==other_value.field_anyOtherError
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7;
+}
+
+boolean ChangeChildPositionRes__ErrorCodes::is_bound() const
+{
+return (field_invalidParentObjectID.is_bound())
+  || (field_invalidObjectID.is_bound())
+  || (field_undefined.is_bound())
+  || (field_anyOtherError.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound());
+}
+boolean ChangeChildPositionRes__ErrorCodes::is_value() const
+{
+return field_invalidParentObjectID.is_value()
+  && field_invalidObjectID.is_value()
+  && field_undefined.is_value()
+  && field_anyOtherError.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value();
+}
+void ChangeChildPositionRes__ErrorCodes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ invalidParentObjectID := ");
+field_invalidParentObjectID.log();
+TTCN_Logger::log_event_str(", invalidObjectID := ");
+field_invalidObjectID.log();
+TTCN_Logger::log_event_str(", undefined := ");
+field_undefined.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangeChildPositionRes__ErrorCodes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes has 8 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) invalidParentObjectID().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) invalidObjectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) undefined().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "invalidParentObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidParentObjectID().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(), "invalidObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidObjectID().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(), "undefined")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          undefined().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes");
+  }
+}
+
+void ChangeChildPositionRes__ErrorCodes::set_implicit_omit()
+{
+if (invalidParentObjectID().is_bound()) invalidParentObjectID().set_implicit_omit();
+if (invalidObjectID().is_bound()) invalidObjectID().set_implicit_omit();
+if (undefined().is_bound()) undefined().set_implicit_omit();
+if (anyOtherError().is_bound()) anyOtherError().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+}
+
+void ChangeChildPositionRes__ErrorCodes::encode_text(Text_Buf& text_buf) const
+{
+field_invalidParentObjectID.encode_text(text_buf);
+field_invalidObjectID.encode_text(text_buf);
+field_undefined.encode_text(text_buf);
+field_anyOtherError.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+}
+
+void ChangeChildPositionRes__ErrorCodes::decode_text(Text_Buf& text_buf)
+{
+field_invalidParentObjectID.decode_text(text_buf);
+field_invalidObjectID.decode_text(text_buf);
+field_undefined.decode_text(text_buf);
+field_anyOtherError.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+}
+
+void ChangeChildPositionRes__ErrorCodes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangeChildPositionRes__ErrorCodes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangeChildPositionRes__ErrorCodes::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidParentObjectID.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidObjectID.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_undefined.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_anyOtherError.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ChangeChildPositionRes__ErrorCodes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_invalidParentObjectID.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_invalidObjectID.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_undefined.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_anyOtherError.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved4.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved5.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved6.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved7.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangeChildPositionRes__ErrorCodes_template::single_value_struct {
+BOOLEAN_template field_invalidParentObjectID;
+BOOLEAN_template field_invalidObjectID;
+BOOLEAN_template field_undefined;
+BOOLEAN_template field_anyOtherError;
+BOOLEAN_template field_reserved4;
+BOOLEAN_template field_reserved5;
+BOOLEAN_template field_reserved6;
+BOOLEAN_template field_reserved7;
+};
+
+void ChangeChildPositionRes__ErrorCodes_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_invalidParentObjectID = ANY_VALUE;
+single_value->field_invalidObjectID = ANY_VALUE;
+single_value->field_undefined = ANY_VALUE;
+single_value->field_anyOtherError = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+}
+}
+}
+
+void ChangeChildPositionRes__ErrorCodes_template::copy_value(const ChangeChildPositionRes__ErrorCodes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.invalidParentObjectID().is_bound()) {
+  single_value->field_invalidParentObjectID = other_value.invalidParentObjectID();
+} else {
+  single_value->field_invalidParentObjectID.clean_up();
+}
+if (other_value.invalidObjectID().is_bound()) {
+  single_value->field_invalidObjectID = other_value.invalidObjectID();
+} else {
+  single_value->field_invalidObjectID.clean_up();
+}
+if (other_value.undefined().is_bound()) {
+  single_value->field_undefined = other_value.undefined();
+} else {
+  single_value->field_undefined.clean_up();
+}
+if (other_value.anyOtherError().is_bound()) {
+  single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+  single_value->field_anyOtherError.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangeChildPositionRes__ErrorCodes_template::copy_template(const ChangeChildPositionRes__ErrorCodes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.invalidParentObjectID().get_selection()) {
+single_value->field_invalidParentObjectID = other_value.invalidParentObjectID();
+} else {
+single_value->field_invalidParentObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.invalidObjectID().get_selection()) {
+single_value->field_invalidObjectID = other_value.invalidObjectID();
+} else {
+single_value->field_invalidObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.undefined().get_selection()) {
+single_value->field_undefined = other_value.undefined();
+} else {
+single_value->field_undefined.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.anyOtherError().get_selection()) {
+single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+single_value->field_anyOtherError.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangeChildPositionRes__ErrorCodes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangeChildPositionRes__ErrorCodes_template::ChangeChildPositionRes__ErrorCodes_template()
+{
+}
+
+ChangeChildPositionRes__ErrorCodes_template::ChangeChildPositionRes__ErrorCodes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangeChildPositionRes__ErrorCodes_template::ChangeChildPositionRes__ErrorCodes_template(const ChangeChildPositionRes__ErrorCodes& other_value)
+{
+copy_value(other_value);
+}
+
+ChangeChildPositionRes__ErrorCodes_template::ChangeChildPositionRes__ErrorCodes_template(const OPTIONAL<ChangeChildPositionRes__ErrorCodes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeChildPositionRes__ErrorCodes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes from an unbound optional field.");
+}
+}
+
+ChangeChildPositionRes__ErrorCodes_template::ChangeChildPositionRes__ErrorCodes_template(const ChangeChildPositionRes__ErrorCodes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangeChildPositionRes__ErrorCodes_template::~ChangeChildPositionRes__ErrorCodes_template()
+{
+clean_up();
+}
+
+ChangeChildPositionRes__ErrorCodes_template& ChangeChildPositionRes__ErrorCodes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangeChildPositionRes__ErrorCodes_template& ChangeChildPositionRes__ErrorCodes_template::operator=(const ChangeChildPositionRes__ErrorCodes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangeChildPositionRes__ErrorCodes_template& ChangeChildPositionRes__ErrorCodes_template::operator=(const OPTIONAL<ChangeChildPositionRes__ErrorCodes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeChildPositionRes__ErrorCodes&)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 @IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes.");
+}
+return *this;
+}
+
+ChangeChildPositionRes__ErrorCodes_template& ChangeChildPositionRes__ErrorCodes_template::operator=(const ChangeChildPositionRes__ErrorCodes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangeChildPositionRes__ErrorCodes_template::match(const ChangeChildPositionRes__ErrorCodes& 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.invalidParentObjectID().is_bound()) return FALSE;
+if(!single_value->field_invalidParentObjectID.match(other_value.invalidParentObjectID(), legacy))return FALSE;
+if(!other_value.invalidObjectID().is_bound()) return FALSE;
+if(!single_value->field_invalidObjectID.match(other_value.invalidObjectID(), legacy))return FALSE;
+if(!other_value.undefined().is_bound()) return FALSE;
+if(!single_value->field_undefined.match(other_value.undefined(), legacy))return FALSE;
+if(!other_value.anyOtherError().is_bound()) return FALSE;
+if(!single_value->field_anyOtherError.match(other_value.anyOtherError(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes.");
+}
+return FALSE;
+}
+
+boolean ChangeChildPositionRes__ErrorCodes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_invalidParentObjectID.is_bound()
+
+ ||single_value->field_invalidObjectID.is_bound()
+
+ ||single_value->field_undefined.is_bound()
+
+ ||single_value->field_anyOtherError.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+;
+}
+
+boolean ChangeChildPositionRes__ErrorCodes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_invalidParentObjectID.is_value()
+ &&single_value->field_invalidObjectID.is_value()
+ &&single_value->field_undefined.is_value()
+ &&single_value->field_anyOtherError.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value();
+}
+
+void ChangeChildPositionRes__ErrorCodes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangeChildPositionRes__ErrorCodes ChangeChildPositionRes__ErrorCodes_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 @IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes.");
+ChangeChildPositionRes__ErrorCodes ret_val;
+if (single_value->field_invalidParentObjectID.is_bound()) {
+ret_val.invalidParentObjectID() = single_value->field_invalidParentObjectID.valueof();
+}
+if (single_value->field_invalidObjectID.is_bound()) {
+ret_val.invalidObjectID() = single_value->field_invalidObjectID.valueof();
+}
+if (single_value->field_undefined.is_bound()) {
+ret_val.undefined() = single_value->field_undefined.valueof();
+}
+if (single_value->field_anyOtherError.is_bound()) {
+ret_val.anyOtherError() = single_value->field_anyOtherError.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+return ret_val;
+}
+
+void ChangeChildPositionRes__ErrorCodes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangeChildPositionRes__ErrorCodes_template[list_length];
+}
+
+ChangeChildPositionRes__ErrorCodes_template& ChangeChildPositionRes__ErrorCodes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& ChangeChildPositionRes__ErrorCodes_template::invalidParentObjectID()
+{
+set_specific();
+return single_value->field_invalidParentObjectID;
+}
+
+const BOOLEAN_template& ChangeChildPositionRes__ErrorCodes_template::invalidParentObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidParentObjectID of a non-specific template of type @IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes.");
+return single_value->field_invalidParentObjectID;
+}
+
+BOOLEAN_template& ChangeChildPositionRes__ErrorCodes_template::invalidObjectID()
+{
+set_specific();
+return single_value->field_invalidObjectID;
+}
+
+const BOOLEAN_template& ChangeChildPositionRes__ErrorCodes_template::invalidObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidObjectID of a non-specific template of type @IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes.");
+return single_value->field_invalidObjectID;
+}
+
+BOOLEAN_template& ChangeChildPositionRes__ErrorCodes_template::undefined()
+{
+set_specific();
+return single_value->field_undefined;
+}
+
+const BOOLEAN_template& ChangeChildPositionRes__ErrorCodes_template::undefined() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field undefined of a non-specific template of type @IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes.");
+return single_value->field_undefined;
+}
+
+BOOLEAN_template& ChangeChildPositionRes__ErrorCodes_template::anyOtherError()
+{
+set_specific();
+return single_value->field_anyOtherError;
+}
+
+const BOOLEAN_template& ChangeChildPositionRes__ErrorCodes_template::anyOtherError() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field anyOtherError of a non-specific template of type @IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes.");
+return single_value->field_anyOtherError;
+}
+
+BOOLEAN_template& ChangeChildPositionRes__ErrorCodes_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const BOOLEAN_template& ChangeChildPositionRes__ErrorCodes_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes.");
+return single_value->field_reserved4;
+}
+
+BOOLEAN_template& ChangeChildPositionRes__ErrorCodes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const BOOLEAN_template& ChangeChildPositionRes__ErrorCodes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes.");
+return single_value->field_reserved5;
+}
+
+BOOLEAN_template& ChangeChildPositionRes__ErrorCodes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const BOOLEAN_template& ChangeChildPositionRes__ErrorCodes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes.");
+return single_value->field_reserved6;
+}
+
+BOOLEAN_template& ChangeChildPositionRes__ErrorCodes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const BOOLEAN_template& ChangeChildPositionRes__ErrorCodes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes.");
+return single_value->field_reserved7;
+}
+
+int ChangeChildPositionRes__ErrorCodes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes 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 @IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes.");
+  }
+  return 0;
+}
+
+void ChangeChildPositionRes__ErrorCodes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ invalidParentObjectID := ");
+single_value->field_invalidParentObjectID.log();
+TTCN_Logger::log_event_str(", invalidObjectID := ");
+single_value->field_invalidObjectID.log();
+TTCN_Logger::log_event_str(", undefined := ");
+single_value->field_undefined.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangeChildPositionRes__ErrorCodes_template::log_match(const ChangeChildPositionRes__ErrorCodes& 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_invalidParentObjectID.match(match_value.invalidParentObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidParentObjectID");
+single_value->field_invalidParentObjectID.log_match(match_value.invalidParentObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_invalidObjectID.match(match_value.invalidObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidObjectID");
+single_value->field_invalidObjectID.log_match(match_value.invalidObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_undefined.match(match_value.undefined(), legacy)){
+TTCN_Logger::log_logmatch_info(".undefined");
+single_value->field_undefined.log_match(match_value.undefined(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_anyOtherError.match(match_value.anyOtherError(), legacy)){
+TTCN_Logger::log_logmatch_info(".anyOtherError");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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("{ invalidParentObjectID := ");
+single_value->field_invalidParentObjectID.log_match(match_value.invalidParentObjectID(), legacy);
+TTCN_Logger::log_event_str(", invalidObjectID := ");
+single_value->field_invalidObjectID.log_match(match_value.invalidObjectID(), legacy);
+TTCN_Logger::log_event_str(", undefined := ");
+single_value->field_undefined.log_match(match_value.undefined(), legacy);
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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 ChangeChildPositionRes__ErrorCodes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_invalidParentObjectID.encode_text(text_buf);
+single_value->field_invalidObjectID.encode_text(text_buf);
+single_value->field_undefined.encode_text(text_buf);
+single_value->field_anyOtherError.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.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 @IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes.");
+}
+}
+
+void ChangeChildPositionRes__ErrorCodes_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_invalidParentObjectID.decode_text(text_buf);
+single_value->field_invalidObjectID.decode_text(text_buf);
+single_value->field_undefined.decode_text(text_buf);
+single_value->field_anyOtherError.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.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 ChangeChildPositionRes__ErrorCodes_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 @IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes.");
+}
+}
+
+void ChangeChildPositionRes__ErrorCodes_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: {
+    ChangeChildPositionRes__ErrorCodes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes has 8 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) invalidParentObjectID().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) invalidObjectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) undefined().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "invalidParentObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidParentObjectID().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(), "invalidObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidObjectID().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(), "undefined")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          undefined().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangeChildPositionRes__ErrorCodes_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_invalidParentObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes");
+single_value->field_invalidObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes");
+single_value->field_undefined.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes");
+single_value->field_anyOtherError.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes");
+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 : "@IsobusVTMessageTypes.ChangeChildPositionRes_ErrorCodes");
+}
+
+boolean ChangeChildPositionRes__ErrorCodes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangeChildPositionRes__ErrorCodes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangeChildPositionRes::ChangeChildPositionRes()
+{
+}
+
+ChangeChildPositionRes::ChangeChildPositionRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_parentObjectID,
+    const INTEGER& par_objectID,
+    const ChangeChildPositionRes__ErrorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_parentObjectID(par_parentObjectID),
+  field_objectID(par_objectID),
+  field_errorCodes(par_errorCodes),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+ChangeChildPositionRes::ChangeChildPositionRes(const ChangeChildPositionRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangeChildPositionRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.parentObjectID().is_bound()) field_parentObjectID = other_value.parentObjectID();
+else field_parentObjectID.clean_up();
+if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+else field_objectID.clean_up();
+if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+else field_errorCodes.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void ChangeChildPositionRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_parentObjectID.clean_up();
+field_objectID.clean_up();
+field_errorCodes.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangeChildPositionRes::get_descriptor() const { return &ChangeChildPositionRes_descr_; }
+ChangeChildPositionRes& ChangeChildPositionRes::operator=(const ChangeChildPositionRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangeChildPositionRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.parentObjectID().is_bound()) field_parentObjectID = other_value.parentObjectID();
+  else field_parentObjectID.clean_up();
+  if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+  else field_objectID.clean_up();
+  if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+  else field_errorCodes.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean ChangeChildPositionRes::operator==(const ChangeChildPositionRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_parentObjectID==other_value.field_parentObjectID
+  && field_objectID==other_value.field_objectID
+  && field_errorCodes==other_value.field_errorCodes
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean ChangeChildPositionRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_parentObjectID.is_bound())
+  || (field_objectID.is_bound())
+  || (field_errorCodes.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean ChangeChildPositionRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_parentObjectID.is_value()
+  && field_objectID.is_value()
+  && field_errorCodes.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void ChangeChildPositionRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", parentObjectID := ");
+field_parentObjectID.log();
+TTCN_Logger::log_event_str(", objectID := ");
+field_objectID.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangeChildPositionRes::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 @IsobusVTMessageTypes.ChangeChildPositionRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) parentObjectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "parentObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          parentObjectID().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangeChildPositionRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangeChildPositionRes");
+  }
+}
+
+void ChangeChildPositionRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (parentObjectID().is_bound()) parentObjectID().set_implicit_omit();
+if (objectID().is_bound()) objectID().set_implicit_omit();
+if (errorCodes().is_bound()) errorCodes().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void ChangeChildPositionRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_parentObjectID.encode_text(text_buf);
+field_objectID.encode_text(text_buf);
+field_errorCodes.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void ChangeChildPositionRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_parentObjectID.decode_text(text_buf);
+field_objectID.decode_text(text_buf);
+field_errorCodes.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void ChangeChildPositionRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangeChildPositionRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangeChildPositionRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_parentObjectID.RAW_decode(ValidObjectID_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectID.RAW_decode(ValidObjectID_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, ChangeChildPositionRes__ErrorCodes_descr_.raw->forceomit);
+  decoded_field_length = field_errorCodes.RAW_decode(ChangeChildPositionRes__ErrorCodes_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, ChangeChildPositionRes_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(ChangeChildPositionRes_reserved7_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, ChangeChildPositionRes_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(ChangeChildPositionRes_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ChangeChildPositionRes::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, ChangeChildPositionRes__ErrorCodes_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, ChangeChildPositionRes_reserved7_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, ChangeChildPositionRes_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_parentObjectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_objectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_errorCodes.RAW_encode(ChangeChildPositionRes__ErrorCodes_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved7.RAW_encode(ChangeChildPositionRes_reserved7_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved8.RAW_encode(ChangeChildPositionRes_reserved8_descr_, *myleaf.body.node.nodes[5]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangeChildPositionRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_parentObjectID;
+INTEGER_template field_objectID;
+ChangeChildPositionRes__ErrorCodes_template field_errorCodes;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void ChangeChildPositionRes_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_vtfunction = ANY_VALUE;
+single_value->field_parentObjectID = ANY_VALUE;
+single_value->field_objectID = ANY_VALUE;
+single_value->field_errorCodes = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void ChangeChildPositionRes_template::copy_value(const ChangeChildPositionRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.parentObjectID().is_bound()) {
+  single_value->field_parentObjectID = other_value.parentObjectID();
+} else {
+  single_value->field_parentObjectID.clean_up();
+}
+if (other_value.objectID().is_bound()) {
+  single_value->field_objectID = other_value.objectID();
+} else {
+  single_value->field_objectID.clean_up();
+}
+if (other_value.errorCodes().is_bound()) {
+  single_value->field_errorCodes = other_value.errorCodes();
+} else {
+  single_value->field_errorCodes.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangeChildPositionRes_template::copy_template(const ChangeChildPositionRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.parentObjectID().get_selection()) {
+single_value->field_parentObjectID = other_value.parentObjectID();
+} else {
+single_value->field_parentObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectID().get_selection()) {
+single_value->field_objectID = other_value.objectID();
+} else {
+single_value->field_objectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.errorCodes().get_selection()) {
+single_value->field_errorCodes = other_value.errorCodes();
+} else {
+single_value->field_errorCodes.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangeChildPositionRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeChildPositionRes.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangeChildPositionRes_template::ChangeChildPositionRes_template()
+{
+}
+
+ChangeChildPositionRes_template::ChangeChildPositionRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangeChildPositionRes_template::ChangeChildPositionRes_template(const ChangeChildPositionRes& other_value)
+{
+copy_value(other_value);
+}
+
+ChangeChildPositionRes_template::ChangeChildPositionRes_template(const OPTIONAL<ChangeChildPositionRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeChildPositionRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangeChildPositionRes from an unbound optional field.");
+}
+}
+
+ChangeChildPositionRes_template::ChangeChildPositionRes_template(const ChangeChildPositionRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangeChildPositionRes_template::~ChangeChildPositionRes_template()
+{
+clean_up();
+}
+
+ChangeChildPositionRes_template& ChangeChildPositionRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangeChildPositionRes_template& ChangeChildPositionRes_template::operator=(const ChangeChildPositionRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangeChildPositionRes_template& ChangeChildPositionRes_template::operator=(const OPTIONAL<ChangeChildPositionRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeChildPositionRes&)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 @IsobusVTMessageTypes.ChangeChildPositionRes.");
+}
+return *this;
+}
+
+ChangeChildPositionRes_template& ChangeChildPositionRes_template::operator=(const ChangeChildPositionRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangeChildPositionRes_template::match(const ChangeChildPositionRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.parentObjectID().is_bound()) return FALSE;
+if(!single_value->field_parentObjectID.match(other_value.parentObjectID(), legacy))return FALSE;
+if(!other_value.objectID().is_bound()) return FALSE;
+if(!single_value->field_objectID.match(other_value.objectID(), legacy))return FALSE;
+if(!other_value.errorCodes().is_bound()) return FALSE;
+if(!single_value->field_errorCodes.match(other_value.errorCodes(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeChildPositionRes.");
+}
+return FALSE;
+}
+
+boolean ChangeChildPositionRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_parentObjectID.is_bound()
+
+ ||single_value->field_objectID.is_bound()
+
+ ||single_value->field_errorCodes.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean ChangeChildPositionRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_parentObjectID.is_value()
+ &&single_value->field_objectID.is_value()
+ &&single_value->field_errorCodes.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void ChangeChildPositionRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangeChildPositionRes ChangeChildPositionRes_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 @IsobusVTMessageTypes.ChangeChildPositionRes.");
+ChangeChildPositionRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_parentObjectID.is_bound()) {
+ret_val.parentObjectID() = single_value->field_parentObjectID.valueof();
+}
+if (single_value->field_objectID.is_bound()) {
+ret_val.objectID() = single_value->field_objectID.valueof();
+}
+if (single_value->field_errorCodes.is_bound()) {
+ret_val.errorCodes() = single_value->field_errorCodes.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void ChangeChildPositionRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangeChildPositionRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangeChildPositionRes_template[list_length];
+}
+
+ChangeChildPositionRes_template& ChangeChildPositionRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangeChildPositionRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangeChildPositionRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ChangeChildPositionRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ChangeChildPositionRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ChangeChildPositionRes.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& ChangeChildPositionRes_template::parentObjectID()
+{
+set_specific();
+return single_value->field_parentObjectID;
+}
+
+const INTEGER_template& ChangeChildPositionRes_template::parentObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field parentObjectID of a non-specific template of type @IsobusVTMessageTypes.ChangeChildPositionRes.");
+return single_value->field_parentObjectID;
+}
+
+INTEGER_template& ChangeChildPositionRes_template::objectID()
+{
+set_specific();
+return single_value->field_objectID;
+}
+
+const INTEGER_template& ChangeChildPositionRes_template::objectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectID of a non-specific template of type @IsobusVTMessageTypes.ChangeChildPositionRes.");
+return single_value->field_objectID;
+}
+
+ChangeChildPositionRes__ErrorCodes_template& ChangeChildPositionRes_template::errorCodes()
+{
+set_specific();
+return single_value->field_errorCodes;
+}
+
+const ChangeChildPositionRes__ErrorCodes_template& ChangeChildPositionRes_template::errorCodes() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field errorCodes of a non-specific template of type @IsobusVTMessageTypes.ChangeChildPositionRes.");
+return single_value->field_errorCodes;
+}
+
+OCTETSTRING_template& ChangeChildPositionRes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& ChangeChildPositionRes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ChangeChildPositionRes.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& ChangeChildPositionRes_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& ChangeChildPositionRes_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.ChangeChildPositionRes.");
+return single_value->field_reserved8;
+}
+
+int ChangeChildPositionRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeChildPositionRes 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 @IsobusVTMessageTypes.ChangeChildPositionRes 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 @IsobusVTMessageTypes.ChangeChildPositionRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeChildPositionRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeChildPositionRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeChildPositionRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeChildPositionRes.");
+  }
+  return 0;
+}
+
+void ChangeChildPositionRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", parentObjectID := ");
+single_value->field_parentObjectID.log();
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangeChildPositionRes_template::log_match(const ChangeChildPositionRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_parentObjectID.match(match_value.parentObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".parentObjectID");
+single_value->field_parentObjectID.log_match(match_value.parentObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectID.match(match_value.objectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectID");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_errorCodes.match(match_value.errorCodes(), legacy)){
+TTCN_Logger::log_logmatch_info(".errorCodes");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", parentObjectID := ");
+single_value->field_parentObjectID.log_match(match_value.parentObjectID(), legacy);
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 ChangeChildPositionRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_parentObjectID.encode_text(text_buf);
+single_value->field_objectID.encode_text(text_buf);
+single_value->field_errorCodes.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.ChangeChildPositionRes.");
+}
+}
+
+void ChangeChildPositionRes_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_vtfunction.decode_text(text_buf);
+single_value->field_parentObjectID.decode_text(text_buf);
+single_value->field_objectID.decode_text(text_buf);
+single_value->field_errorCodes.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 ChangeChildPositionRes_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 @IsobusVTMessageTypes.ChangeChildPositionRes.");
+}
+}
+
+void ChangeChildPositionRes_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: {
+    ChangeChildPositionRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.ChangeChildPositionRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) parentObjectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "parentObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          parentObjectID().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangeChildPositionRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangeChildPositionRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangeChildPositionRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeChildPositionRes");
+single_value->field_parentObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeChildPositionRes");
+single_value->field_objectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeChildPositionRes");
+single_value->field_errorCodes.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeChildPositionRes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeChildPositionRes");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeChildPositionRes");
+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 : "@IsobusVTMessageTypes.ChangeChildPositionRes");
+}
+
+boolean ChangeChildPositionRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangeChildPositionRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangeObjectLabelRes__ErrorCodes::ChangeObjectLabelRes__ErrorCodes()
+{
+}
+
+ChangeObjectLabelRes__ErrorCodes::ChangeObjectLabelRes__ErrorCodes(const BOOLEAN& par_invalidObjectID,
+    const BOOLEAN& par_invalidStringVariableObjectID,
+    const BOOLEAN& par_invalidFontType,
+    const BOOLEAN& par_noObjectLabelReferenceListObjectAvailableInObjectPool,
+    const BOOLEAN& par_designatorReferencesInvalidObjects,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7)
+  :   field_invalidObjectID(par_invalidObjectID),
+  field_invalidStringVariableObjectID(par_invalidStringVariableObjectID),
+  field_invalidFontType(par_invalidFontType),
+  field_noObjectLabelReferenceListObjectAvailableInObjectPool(par_noObjectLabelReferenceListObjectAvailableInObjectPool),
+  field_designatorReferencesInvalidObjects(par_designatorReferencesInvalidObjects),
+  field_anyOtherError(par_anyOtherError),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7)
+{
+}
+
+ChangeObjectLabelRes__ErrorCodes::ChangeObjectLabelRes__ErrorCodes(const ChangeObjectLabelRes__ErrorCodes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes.");
+if (other_value.invalidObjectID().is_bound()) field_invalidObjectID = other_value.invalidObjectID();
+else field_invalidObjectID.clean_up();
+if (other_value.invalidStringVariableObjectID().is_bound()) field_invalidStringVariableObjectID = other_value.invalidStringVariableObjectID();
+else field_invalidStringVariableObjectID.clean_up();
+if (other_value.invalidFontType().is_bound()) field_invalidFontType = other_value.invalidFontType();
+else field_invalidFontType.clean_up();
+if (other_value.noObjectLabelReferenceListObjectAvailableInObjectPool().is_bound()) field_noObjectLabelReferenceListObjectAvailableInObjectPool = other_value.noObjectLabelReferenceListObjectAvailableInObjectPool();
+else field_noObjectLabelReferenceListObjectAvailableInObjectPool.clean_up();
+if (other_value.designatorReferencesInvalidObjects().is_bound()) field_designatorReferencesInvalidObjects = other_value.designatorReferencesInvalidObjects();
+else field_designatorReferencesInvalidObjects.clean_up();
+if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+else field_anyOtherError.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+}
+
+void ChangeObjectLabelRes__ErrorCodes::clean_up()
+{
+field_invalidObjectID.clean_up();
+field_invalidStringVariableObjectID.clean_up();
+field_invalidFontType.clean_up();
+field_noObjectLabelReferenceListObjectAvailableInObjectPool.clean_up();
+field_designatorReferencesInvalidObjects.clean_up();
+field_anyOtherError.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangeObjectLabelRes__ErrorCodes::get_descriptor() const { return &ChangeObjectLabelRes__ErrorCodes_descr_; }
+ChangeObjectLabelRes__ErrorCodes& ChangeObjectLabelRes__ErrorCodes::operator=(const ChangeObjectLabelRes__ErrorCodes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes.");
+  if (other_value.invalidObjectID().is_bound()) field_invalidObjectID = other_value.invalidObjectID();
+  else field_invalidObjectID.clean_up();
+  if (other_value.invalidStringVariableObjectID().is_bound()) field_invalidStringVariableObjectID = other_value.invalidStringVariableObjectID();
+  else field_invalidStringVariableObjectID.clean_up();
+  if (other_value.invalidFontType().is_bound()) field_invalidFontType = other_value.invalidFontType();
+  else field_invalidFontType.clean_up();
+  if (other_value.noObjectLabelReferenceListObjectAvailableInObjectPool().is_bound()) field_noObjectLabelReferenceListObjectAvailableInObjectPool = other_value.noObjectLabelReferenceListObjectAvailableInObjectPool();
+  else field_noObjectLabelReferenceListObjectAvailableInObjectPool.clean_up();
+  if (other_value.designatorReferencesInvalidObjects().is_bound()) field_designatorReferencesInvalidObjects = other_value.designatorReferencesInvalidObjects();
+  else field_designatorReferencesInvalidObjects.clean_up();
+  if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+  else field_anyOtherError.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+}
+return *this;
+}
+
+boolean ChangeObjectLabelRes__ErrorCodes::operator==(const ChangeObjectLabelRes__ErrorCodes& other_value) const
+{
+return field_invalidObjectID==other_value.field_invalidObjectID
+  && field_invalidStringVariableObjectID==other_value.field_invalidStringVariableObjectID
+  && field_invalidFontType==other_value.field_invalidFontType
+  && field_noObjectLabelReferenceListObjectAvailableInObjectPool==other_value.field_noObjectLabelReferenceListObjectAvailableInObjectPool
+  && field_designatorReferencesInvalidObjects==other_value.field_designatorReferencesInvalidObjects
+  && field_anyOtherError==other_value.field_anyOtherError
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7;
+}
+
+boolean ChangeObjectLabelRes__ErrorCodes::is_bound() const
+{
+return (field_invalidObjectID.is_bound())
+  || (field_invalidStringVariableObjectID.is_bound())
+  || (field_invalidFontType.is_bound())
+  || (field_noObjectLabelReferenceListObjectAvailableInObjectPool.is_bound())
+  || (field_designatorReferencesInvalidObjects.is_bound())
+  || (field_anyOtherError.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound());
+}
+boolean ChangeObjectLabelRes__ErrorCodes::is_value() const
+{
+return field_invalidObjectID.is_value()
+  && field_invalidStringVariableObjectID.is_value()
+  && field_invalidFontType.is_value()
+  && field_noObjectLabelReferenceListObjectAvailableInObjectPool.is_value()
+  && field_designatorReferencesInvalidObjects.is_value()
+  && field_anyOtherError.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value();
+}
+void ChangeObjectLabelRes__ErrorCodes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ invalidObjectID := ");
+field_invalidObjectID.log();
+TTCN_Logger::log_event_str(", invalidStringVariableObjectID := ");
+field_invalidStringVariableObjectID.log();
+TTCN_Logger::log_event_str(", invalidFontType := ");
+field_invalidFontType.log();
+TTCN_Logger::log_event_str(", noObjectLabelReferenceListObjectAvailableInObjectPool := ");
+field_noObjectLabelReferenceListObjectAvailableInObjectPool.log();
+TTCN_Logger::log_event_str(", designatorReferencesInvalidObjects := ");
+field_designatorReferencesInvalidObjects.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangeObjectLabelRes__ErrorCodes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes has 8 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) invalidObjectID().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) invalidStringVariableObjectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) invalidFontType().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) noObjectLabelReferenceListObjectAvailableInObjectPool().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) designatorReferencesInvalidObjects().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "invalidObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidObjectID().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(), "invalidStringVariableObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidStringVariableObjectID().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(), "invalidFontType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidFontType().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(), "noObjectLabelReferenceListObjectAvailableInObjectPool")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          noObjectLabelReferenceListObjectAvailableInObjectPool().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(), "designatorReferencesInvalidObjects")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          designatorReferencesInvalidObjects().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes");
+  }
+}
+
+void ChangeObjectLabelRes__ErrorCodes::set_implicit_omit()
+{
+if (invalidObjectID().is_bound()) invalidObjectID().set_implicit_omit();
+if (invalidStringVariableObjectID().is_bound()) invalidStringVariableObjectID().set_implicit_omit();
+if (invalidFontType().is_bound()) invalidFontType().set_implicit_omit();
+if (noObjectLabelReferenceListObjectAvailableInObjectPool().is_bound()) noObjectLabelReferenceListObjectAvailableInObjectPool().set_implicit_omit();
+if (designatorReferencesInvalidObjects().is_bound()) designatorReferencesInvalidObjects().set_implicit_omit();
+if (anyOtherError().is_bound()) anyOtherError().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+}
+
+void ChangeObjectLabelRes__ErrorCodes::encode_text(Text_Buf& text_buf) const
+{
+field_invalidObjectID.encode_text(text_buf);
+field_invalidStringVariableObjectID.encode_text(text_buf);
+field_invalidFontType.encode_text(text_buf);
+field_noObjectLabelReferenceListObjectAvailableInObjectPool.encode_text(text_buf);
+field_designatorReferencesInvalidObjects.encode_text(text_buf);
+field_anyOtherError.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+}
+
+void ChangeObjectLabelRes__ErrorCodes::decode_text(Text_Buf& text_buf)
+{
+field_invalidObjectID.decode_text(text_buf);
+field_invalidStringVariableObjectID.decode_text(text_buf);
+field_invalidFontType.decode_text(text_buf);
+field_noObjectLabelReferenceListObjectAvailableInObjectPool.decode_text(text_buf);
+field_designatorReferencesInvalidObjects.decode_text(text_buf);
+field_anyOtherError.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+}
+
+void ChangeObjectLabelRes__ErrorCodes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangeObjectLabelRes__ErrorCodes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangeObjectLabelRes__ErrorCodes::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidObjectID.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidStringVariableObjectID.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidFontType.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_noObjectLabelReferenceListObjectAvailableInObjectPool.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_designatorReferencesInvalidObjects.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_anyOtherError.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ChangeObjectLabelRes__ErrorCodes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_invalidObjectID.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_invalidStringVariableObjectID.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_invalidFontType.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_noObjectLabelReferenceListObjectAvailableInObjectPool.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_designatorReferencesInvalidObjects.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_anyOtherError.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved6.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved7.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangeObjectLabelRes__ErrorCodes_template::single_value_struct {
+BOOLEAN_template field_invalidObjectID;
+BOOLEAN_template field_invalidStringVariableObjectID;
+BOOLEAN_template field_invalidFontType;
+BOOLEAN_template field_noObjectLabelReferenceListObjectAvailableInObjectPool;
+BOOLEAN_template field_designatorReferencesInvalidObjects;
+BOOLEAN_template field_anyOtherError;
+BOOLEAN_template field_reserved6;
+BOOLEAN_template field_reserved7;
+};
+
+void ChangeObjectLabelRes__ErrorCodes_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_invalidObjectID = ANY_VALUE;
+single_value->field_invalidStringVariableObjectID = ANY_VALUE;
+single_value->field_invalidFontType = ANY_VALUE;
+single_value->field_noObjectLabelReferenceListObjectAvailableInObjectPool = ANY_VALUE;
+single_value->field_designatorReferencesInvalidObjects = ANY_VALUE;
+single_value->field_anyOtherError = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+}
+}
+}
+
+void ChangeObjectLabelRes__ErrorCodes_template::copy_value(const ChangeObjectLabelRes__ErrorCodes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.invalidObjectID().is_bound()) {
+  single_value->field_invalidObjectID = other_value.invalidObjectID();
+} else {
+  single_value->field_invalidObjectID.clean_up();
+}
+if (other_value.invalidStringVariableObjectID().is_bound()) {
+  single_value->field_invalidStringVariableObjectID = other_value.invalidStringVariableObjectID();
+} else {
+  single_value->field_invalidStringVariableObjectID.clean_up();
+}
+if (other_value.invalidFontType().is_bound()) {
+  single_value->field_invalidFontType = other_value.invalidFontType();
+} else {
+  single_value->field_invalidFontType.clean_up();
+}
+if (other_value.noObjectLabelReferenceListObjectAvailableInObjectPool().is_bound()) {
+  single_value->field_noObjectLabelReferenceListObjectAvailableInObjectPool = other_value.noObjectLabelReferenceListObjectAvailableInObjectPool();
+} else {
+  single_value->field_noObjectLabelReferenceListObjectAvailableInObjectPool.clean_up();
+}
+if (other_value.designatorReferencesInvalidObjects().is_bound()) {
+  single_value->field_designatorReferencesInvalidObjects = other_value.designatorReferencesInvalidObjects();
+} else {
+  single_value->field_designatorReferencesInvalidObjects.clean_up();
+}
+if (other_value.anyOtherError().is_bound()) {
+  single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+  single_value->field_anyOtherError.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangeObjectLabelRes__ErrorCodes_template::copy_template(const ChangeObjectLabelRes__ErrorCodes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.invalidObjectID().get_selection()) {
+single_value->field_invalidObjectID = other_value.invalidObjectID();
+} else {
+single_value->field_invalidObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.invalidStringVariableObjectID().get_selection()) {
+single_value->field_invalidStringVariableObjectID = other_value.invalidStringVariableObjectID();
+} else {
+single_value->field_invalidStringVariableObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.invalidFontType().get_selection()) {
+single_value->field_invalidFontType = other_value.invalidFontType();
+} else {
+single_value->field_invalidFontType.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.noObjectLabelReferenceListObjectAvailableInObjectPool().get_selection()) {
+single_value->field_noObjectLabelReferenceListObjectAvailableInObjectPool = other_value.noObjectLabelReferenceListObjectAvailableInObjectPool();
+} else {
+single_value->field_noObjectLabelReferenceListObjectAvailableInObjectPool.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.designatorReferencesInvalidObjects().get_selection()) {
+single_value->field_designatorReferencesInvalidObjects = other_value.designatorReferencesInvalidObjects();
+} else {
+single_value->field_designatorReferencesInvalidObjects.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.anyOtherError().get_selection()) {
+single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+single_value->field_anyOtherError.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangeObjectLabelRes__ErrorCodes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangeObjectLabelRes__ErrorCodes_template::ChangeObjectLabelRes__ErrorCodes_template()
+{
+}
+
+ChangeObjectLabelRes__ErrorCodes_template::ChangeObjectLabelRes__ErrorCodes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangeObjectLabelRes__ErrorCodes_template::ChangeObjectLabelRes__ErrorCodes_template(const ChangeObjectLabelRes__ErrorCodes& other_value)
+{
+copy_value(other_value);
+}
+
+ChangeObjectLabelRes__ErrorCodes_template::ChangeObjectLabelRes__ErrorCodes_template(const OPTIONAL<ChangeObjectLabelRes__ErrorCodes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeObjectLabelRes__ErrorCodes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes from an unbound optional field.");
+}
+}
+
+ChangeObjectLabelRes__ErrorCodes_template::ChangeObjectLabelRes__ErrorCodes_template(const ChangeObjectLabelRes__ErrorCodes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangeObjectLabelRes__ErrorCodes_template::~ChangeObjectLabelRes__ErrorCodes_template()
+{
+clean_up();
+}
+
+ChangeObjectLabelRes__ErrorCodes_template& ChangeObjectLabelRes__ErrorCodes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangeObjectLabelRes__ErrorCodes_template& ChangeObjectLabelRes__ErrorCodes_template::operator=(const ChangeObjectLabelRes__ErrorCodes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangeObjectLabelRes__ErrorCodes_template& ChangeObjectLabelRes__ErrorCodes_template::operator=(const OPTIONAL<ChangeObjectLabelRes__ErrorCodes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeObjectLabelRes__ErrorCodes&)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 @IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes.");
+}
+return *this;
+}
+
+ChangeObjectLabelRes__ErrorCodes_template& ChangeObjectLabelRes__ErrorCodes_template::operator=(const ChangeObjectLabelRes__ErrorCodes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangeObjectLabelRes__ErrorCodes_template::match(const ChangeObjectLabelRes__ErrorCodes& 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.invalidObjectID().is_bound()) return FALSE;
+if(!single_value->field_invalidObjectID.match(other_value.invalidObjectID(), legacy))return FALSE;
+if(!other_value.invalidStringVariableObjectID().is_bound()) return FALSE;
+if(!single_value->field_invalidStringVariableObjectID.match(other_value.invalidStringVariableObjectID(), legacy))return FALSE;
+if(!other_value.invalidFontType().is_bound()) return FALSE;
+if(!single_value->field_invalidFontType.match(other_value.invalidFontType(), legacy))return FALSE;
+if(!other_value.noObjectLabelReferenceListObjectAvailableInObjectPool().is_bound()) return FALSE;
+if(!single_value->field_noObjectLabelReferenceListObjectAvailableInObjectPool.match(other_value.noObjectLabelReferenceListObjectAvailableInObjectPool(), legacy))return FALSE;
+if(!other_value.designatorReferencesInvalidObjects().is_bound()) return FALSE;
+if(!single_value->field_designatorReferencesInvalidObjects.match(other_value.designatorReferencesInvalidObjects(), legacy))return FALSE;
+if(!other_value.anyOtherError().is_bound()) return FALSE;
+if(!single_value->field_anyOtherError.match(other_value.anyOtherError(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes.");
+}
+return FALSE;
+}
+
+boolean ChangeObjectLabelRes__ErrorCodes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_invalidObjectID.is_bound()
+
+ ||single_value->field_invalidStringVariableObjectID.is_bound()
+
+ ||single_value->field_invalidFontType.is_bound()
+
+ ||single_value->field_noObjectLabelReferenceListObjectAvailableInObjectPool.is_bound()
+
+ ||single_value->field_designatorReferencesInvalidObjects.is_bound()
+
+ ||single_value->field_anyOtherError.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+;
+}
+
+boolean ChangeObjectLabelRes__ErrorCodes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_invalidObjectID.is_value()
+ &&single_value->field_invalidStringVariableObjectID.is_value()
+ &&single_value->field_invalidFontType.is_value()
+ &&single_value->field_noObjectLabelReferenceListObjectAvailableInObjectPool.is_value()
+ &&single_value->field_designatorReferencesInvalidObjects.is_value()
+ &&single_value->field_anyOtherError.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value();
+}
+
+void ChangeObjectLabelRes__ErrorCodes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangeObjectLabelRes__ErrorCodes ChangeObjectLabelRes__ErrorCodes_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 @IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes.");
+ChangeObjectLabelRes__ErrorCodes ret_val;
+if (single_value->field_invalidObjectID.is_bound()) {
+ret_val.invalidObjectID() = single_value->field_invalidObjectID.valueof();
+}
+if (single_value->field_invalidStringVariableObjectID.is_bound()) {
+ret_val.invalidStringVariableObjectID() = single_value->field_invalidStringVariableObjectID.valueof();
+}
+if (single_value->field_invalidFontType.is_bound()) {
+ret_val.invalidFontType() = single_value->field_invalidFontType.valueof();
+}
+if (single_value->field_noObjectLabelReferenceListObjectAvailableInObjectPool.is_bound()) {
+ret_val.noObjectLabelReferenceListObjectAvailableInObjectPool() = single_value->field_noObjectLabelReferenceListObjectAvailableInObjectPool.valueof();
+}
+if (single_value->field_designatorReferencesInvalidObjects.is_bound()) {
+ret_val.designatorReferencesInvalidObjects() = single_value->field_designatorReferencesInvalidObjects.valueof();
+}
+if (single_value->field_anyOtherError.is_bound()) {
+ret_val.anyOtherError() = single_value->field_anyOtherError.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+return ret_val;
+}
+
+void ChangeObjectLabelRes__ErrorCodes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangeObjectLabelRes__ErrorCodes_template[list_length];
+}
+
+ChangeObjectLabelRes__ErrorCodes_template& ChangeObjectLabelRes__ErrorCodes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& ChangeObjectLabelRes__ErrorCodes_template::invalidObjectID()
+{
+set_specific();
+return single_value->field_invalidObjectID;
+}
+
+const BOOLEAN_template& ChangeObjectLabelRes__ErrorCodes_template::invalidObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidObjectID of a non-specific template of type @IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes.");
+return single_value->field_invalidObjectID;
+}
+
+BOOLEAN_template& ChangeObjectLabelRes__ErrorCodes_template::invalidStringVariableObjectID()
+{
+set_specific();
+return single_value->field_invalidStringVariableObjectID;
+}
+
+const BOOLEAN_template& ChangeObjectLabelRes__ErrorCodes_template::invalidStringVariableObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidStringVariableObjectID of a non-specific template of type @IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes.");
+return single_value->field_invalidStringVariableObjectID;
+}
+
+BOOLEAN_template& ChangeObjectLabelRes__ErrorCodes_template::invalidFontType()
+{
+set_specific();
+return single_value->field_invalidFontType;
+}
+
+const BOOLEAN_template& ChangeObjectLabelRes__ErrorCodes_template::invalidFontType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidFontType of a non-specific template of type @IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes.");
+return single_value->field_invalidFontType;
+}
+
+BOOLEAN_template& ChangeObjectLabelRes__ErrorCodes_template::noObjectLabelReferenceListObjectAvailableInObjectPool()
+{
+set_specific();
+return single_value->field_noObjectLabelReferenceListObjectAvailableInObjectPool;
+}
+
+const BOOLEAN_template& ChangeObjectLabelRes__ErrorCodes_template::noObjectLabelReferenceListObjectAvailableInObjectPool() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field noObjectLabelReferenceListObjectAvailableInObjectPool of a non-specific template of type @IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes.");
+return single_value->field_noObjectLabelReferenceListObjectAvailableInObjectPool;
+}
+
+BOOLEAN_template& ChangeObjectLabelRes__ErrorCodes_template::designatorReferencesInvalidObjects()
+{
+set_specific();
+return single_value->field_designatorReferencesInvalidObjects;
+}
+
+const BOOLEAN_template& ChangeObjectLabelRes__ErrorCodes_template::designatorReferencesInvalidObjects() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field designatorReferencesInvalidObjects of a non-specific template of type @IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes.");
+return single_value->field_designatorReferencesInvalidObjects;
+}
+
+BOOLEAN_template& ChangeObjectLabelRes__ErrorCodes_template::anyOtherError()
+{
+set_specific();
+return single_value->field_anyOtherError;
+}
+
+const BOOLEAN_template& ChangeObjectLabelRes__ErrorCodes_template::anyOtherError() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field anyOtherError of a non-specific template of type @IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes.");
+return single_value->field_anyOtherError;
+}
+
+BOOLEAN_template& ChangeObjectLabelRes__ErrorCodes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const BOOLEAN_template& ChangeObjectLabelRes__ErrorCodes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes.");
+return single_value->field_reserved6;
+}
+
+BOOLEAN_template& ChangeObjectLabelRes__ErrorCodes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const BOOLEAN_template& ChangeObjectLabelRes__ErrorCodes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes.");
+return single_value->field_reserved7;
+}
+
+int ChangeObjectLabelRes__ErrorCodes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes 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 @IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes.");
+  }
+  return 0;
+}
+
+void ChangeObjectLabelRes__ErrorCodes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ invalidObjectID := ");
+single_value->field_invalidObjectID.log();
+TTCN_Logger::log_event_str(", invalidStringVariableObjectID := ");
+single_value->field_invalidStringVariableObjectID.log();
+TTCN_Logger::log_event_str(", invalidFontType := ");
+single_value->field_invalidFontType.log();
+TTCN_Logger::log_event_str(", noObjectLabelReferenceListObjectAvailableInObjectPool := ");
+single_value->field_noObjectLabelReferenceListObjectAvailableInObjectPool.log();
+TTCN_Logger::log_event_str(", designatorReferencesInvalidObjects := ");
+single_value->field_designatorReferencesInvalidObjects.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangeObjectLabelRes__ErrorCodes_template::log_match(const ChangeObjectLabelRes__ErrorCodes& 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_invalidObjectID.match(match_value.invalidObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidObjectID");
+single_value->field_invalidObjectID.log_match(match_value.invalidObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_invalidStringVariableObjectID.match(match_value.invalidStringVariableObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidStringVariableObjectID");
+single_value->field_invalidStringVariableObjectID.log_match(match_value.invalidStringVariableObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_invalidFontType.match(match_value.invalidFontType(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidFontType");
+single_value->field_invalidFontType.log_match(match_value.invalidFontType(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_noObjectLabelReferenceListObjectAvailableInObjectPool.match(match_value.noObjectLabelReferenceListObjectAvailableInObjectPool(), legacy)){
+TTCN_Logger::log_logmatch_info(".noObjectLabelReferenceListObjectAvailableInObjectPool");
+single_value->field_noObjectLabelReferenceListObjectAvailableInObjectPool.log_match(match_value.noObjectLabelReferenceListObjectAvailableInObjectPool(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_designatorReferencesInvalidObjects.match(match_value.designatorReferencesInvalidObjects(), legacy)){
+TTCN_Logger::log_logmatch_info(".designatorReferencesInvalidObjects");
+single_value->field_designatorReferencesInvalidObjects.log_match(match_value.designatorReferencesInvalidObjects(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_anyOtherError.match(match_value.anyOtherError(), legacy)){
+TTCN_Logger::log_logmatch_info(".anyOtherError");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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("{ invalidObjectID := ");
+single_value->field_invalidObjectID.log_match(match_value.invalidObjectID(), legacy);
+TTCN_Logger::log_event_str(", invalidStringVariableObjectID := ");
+single_value->field_invalidStringVariableObjectID.log_match(match_value.invalidStringVariableObjectID(), legacy);
+TTCN_Logger::log_event_str(", invalidFontType := ");
+single_value->field_invalidFontType.log_match(match_value.invalidFontType(), legacy);
+TTCN_Logger::log_event_str(", noObjectLabelReferenceListObjectAvailableInObjectPool := ");
+single_value->field_noObjectLabelReferenceListObjectAvailableInObjectPool.log_match(match_value.noObjectLabelReferenceListObjectAvailableInObjectPool(), legacy);
+TTCN_Logger::log_event_str(", designatorReferencesInvalidObjects := ");
+single_value->field_designatorReferencesInvalidObjects.log_match(match_value.designatorReferencesInvalidObjects(), legacy);
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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 ChangeObjectLabelRes__ErrorCodes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_invalidObjectID.encode_text(text_buf);
+single_value->field_invalidStringVariableObjectID.encode_text(text_buf);
+single_value->field_invalidFontType.encode_text(text_buf);
+single_value->field_noObjectLabelReferenceListObjectAvailableInObjectPool.encode_text(text_buf);
+single_value->field_designatorReferencesInvalidObjects.encode_text(text_buf);
+single_value->field_anyOtherError.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.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 @IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes.");
+}
+}
+
+void ChangeObjectLabelRes__ErrorCodes_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_invalidObjectID.decode_text(text_buf);
+single_value->field_invalidStringVariableObjectID.decode_text(text_buf);
+single_value->field_invalidFontType.decode_text(text_buf);
+single_value->field_noObjectLabelReferenceListObjectAvailableInObjectPool.decode_text(text_buf);
+single_value->field_designatorReferencesInvalidObjects.decode_text(text_buf);
+single_value->field_anyOtherError.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.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 ChangeObjectLabelRes__ErrorCodes_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 @IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes.");
+}
+}
+
+void ChangeObjectLabelRes__ErrorCodes_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: {
+    ChangeObjectLabelRes__ErrorCodes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes has 8 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) invalidObjectID().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) invalidStringVariableObjectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) invalidFontType().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) noObjectLabelReferenceListObjectAvailableInObjectPool().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) designatorReferencesInvalidObjects().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "invalidObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidObjectID().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(), "invalidStringVariableObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidStringVariableObjectID().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(), "invalidFontType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidFontType().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(), "noObjectLabelReferenceListObjectAvailableInObjectPool")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          noObjectLabelReferenceListObjectAvailableInObjectPool().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(), "designatorReferencesInvalidObjects")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          designatorReferencesInvalidObjects().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangeObjectLabelRes__ErrorCodes_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_invalidObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes");
+single_value->field_invalidStringVariableObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes");
+single_value->field_invalidFontType.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes");
+single_value->field_noObjectLabelReferenceListObjectAvailableInObjectPool.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes");
+single_value->field_designatorReferencesInvalidObjects.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes");
+single_value->field_anyOtherError.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes");
+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 : "@IsobusVTMessageTypes.ChangeObjectLabelRes_ErrorCodes");
+}
+
+boolean ChangeObjectLabelRes__ErrorCodes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangeObjectLabelRes__ErrorCodes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangeObjectLabelRes::ChangeObjectLabelRes()
+{
+}
+
+ChangeObjectLabelRes::ChangeObjectLabelRes(const INTEGER& par_vtfunction,
+    const ChangeObjectLabelRes__ErrorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_errorCodes(par_errorCodes),
+  field_reserved3(par_reserved3),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+ChangeObjectLabelRes::ChangeObjectLabelRes(const ChangeObjectLabelRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangeObjectLabelRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+else field_errorCodes.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void ChangeObjectLabelRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_errorCodes.clean_up();
+field_reserved3.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangeObjectLabelRes::get_descriptor() const { return &ChangeObjectLabelRes_descr_; }
+ChangeObjectLabelRes& ChangeObjectLabelRes::operator=(const ChangeObjectLabelRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangeObjectLabelRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+  else field_errorCodes.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean ChangeObjectLabelRes::operator==(const ChangeObjectLabelRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_errorCodes==other_value.field_errorCodes
+  && field_reserved3==other_value.field_reserved3
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean ChangeObjectLabelRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_errorCodes.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean ChangeObjectLabelRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_errorCodes.is_value()
+  && field_reserved3.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void ChangeObjectLabelRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangeObjectLabelRes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.ChangeObjectLabelRes has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangeObjectLabelRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangeObjectLabelRes");
+  }
+}
+
+void ChangeObjectLabelRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (errorCodes().is_bound()) errorCodes().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void ChangeObjectLabelRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_errorCodes.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void ChangeObjectLabelRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_errorCodes.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void ChangeObjectLabelRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangeObjectLabelRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangeObjectLabelRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ChangeObjectLabelRes__ErrorCodes_descr_.raw->forceomit);
+  decoded_field_length = field_errorCodes.RAW_decode(ChangeObjectLabelRes__ErrorCodes_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, ChangeObjectLabelRes_reserved3_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(ChangeObjectLabelRes_reserved3_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, ChangeObjectLabelRes_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(ChangeObjectLabelRes_reserved4_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, ChangeObjectLabelRes_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(ChangeObjectLabelRes_reserved5_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, ChangeObjectLabelRes_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(ChangeObjectLabelRes_reserved6_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, ChangeObjectLabelRes_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(ChangeObjectLabelRes_reserved7_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, ChangeObjectLabelRes_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(ChangeObjectLabelRes_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ChangeObjectLabelRes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ChangeObjectLabelRes__ErrorCodes_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ChangeObjectLabelRes_reserved3_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, ChangeObjectLabelRes_reserved4_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, ChangeObjectLabelRes_reserved5_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, ChangeObjectLabelRes_reserved6_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, ChangeObjectLabelRes_reserved7_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, ChangeObjectLabelRes_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_errorCodes.RAW_encode(ChangeObjectLabelRes__ErrorCodes_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved3.RAW_encode(ChangeObjectLabelRes_reserved3_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved4.RAW_encode(ChangeObjectLabelRes_reserved4_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved5.RAW_encode(ChangeObjectLabelRes_reserved5_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved6.RAW_encode(ChangeObjectLabelRes_reserved6_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved7.RAW_encode(ChangeObjectLabelRes_reserved7_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved8.RAW_encode(ChangeObjectLabelRes_reserved8_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangeObjectLabelRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+ChangeObjectLabelRes__ErrorCodes_template field_errorCodes;
+OCTETSTRING_template field_reserved3;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void ChangeObjectLabelRes_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_vtfunction = ANY_VALUE;
+single_value->field_errorCodes = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void ChangeObjectLabelRes_template::copy_value(const ChangeObjectLabelRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.errorCodes().is_bound()) {
+  single_value->field_errorCodes = other_value.errorCodes();
+} else {
+  single_value->field_errorCodes.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangeObjectLabelRes_template::copy_template(const ChangeObjectLabelRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.errorCodes().get_selection()) {
+single_value->field_errorCodes = other_value.errorCodes();
+} else {
+single_value->field_errorCodes.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangeObjectLabelRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeObjectLabelRes.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangeObjectLabelRes_template::ChangeObjectLabelRes_template()
+{
+}
+
+ChangeObjectLabelRes_template::ChangeObjectLabelRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangeObjectLabelRes_template::ChangeObjectLabelRes_template(const ChangeObjectLabelRes& other_value)
+{
+copy_value(other_value);
+}
+
+ChangeObjectLabelRes_template::ChangeObjectLabelRes_template(const OPTIONAL<ChangeObjectLabelRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeObjectLabelRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangeObjectLabelRes from an unbound optional field.");
+}
+}
+
+ChangeObjectLabelRes_template::ChangeObjectLabelRes_template(const ChangeObjectLabelRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangeObjectLabelRes_template::~ChangeObjectLabelRes_template()
+{
+clean_up();
+}
+
+ChangeObjectLabelRes_template& ChangeObjectLabelRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangeObjectLabelRes_template& ChangeObjectLabelRes_template::operator=(const ChangeObjectLabelRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangeObjectLabelRes_template& ChangeObjectLabelRes_template::operator=(const OPTIONAL<ChangeObjectLabelRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeObjectLabelRes&)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 @IsobusVTMessageTypes.ChangeObjectLabelRes.");
+}
+return *this;
+}
+
+ChangeObjectLabelRes_template& ChangeObjectLabelRes_template::operator=(const ChangeObjectLabelRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangeObjectLabelRes_template::match(const ChangeObjectLabelRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.errorCodes().is_bound()) return FALSE;
+if(!single_value->field_errorCodes.match(other_value.errorCodes(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeObjectLabelRes.");
+}
+return FALSE;
+}
+
+boolean ChangeObjectLabelRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_errorCodes.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean ChangeObjectLabelRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_errorCodes.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void ChangeObjectLabelRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangeObjectLabelRes ChangeObjectLabelRes_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 @IsobusVTMessageTypes.ChangeObjectLabelRes.");
+ChangeObjectLabelRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_errorCodes.is_bound()) {
+ret_val.errorCodes() = single_value->field_errorCodes.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void ChangeObjectLabelRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangeObjectLabelRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangeObjectLabelRes_template[list_length];
+}
+
+ChangeObjectLabelRes_template& ChangeObjectLabelRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangeObjectLabelRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangeObjectLabelRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ChangeObjectLabelRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ChangeObjectLabelRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ChangeObjectLabelRes.");
+return single_value->field_vtfunction;
+}
+
+ChangeObjectLabelRes__ErrorCodes_template& ChangeObjectLabelRes_template::errorCodes()
+{
+set_specific();
+return single_value->field_errorCodes;
+}
+
+const ChangeObjectLabelRes__ErrorCodes_template& ChangeObjectLabelRes_template::errorCodes() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field errorCodes of a non-specific template of type @IsobusVTMessageTypes.ChangeObjectLabelRes.");
+return single_value->field_errorCodes;
+}
+
+OCTETSTRING_template& ChangeObjectLabelRes_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const OCTETSTRING_template& ChangeObjectLabelRes_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.ChangeObjectLabelRes.");
+return single_value->field_reserved3;
+}
+
+OCTETSTRING_template& ChangeObjectLabelRes_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& ChangeObjectLabelRes_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.ChangeObjectLabelRes.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& ChangeObjectLabelRes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& ChangeObjectLabelRes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.ChangeObjectLabelRes.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& ChangeObjectLabelRes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& ChangeObjectLabelRes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.ChangeObjectLabelRes.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& ChangeObjectLabelRes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& ChangeObjectLabelRes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ChangeObjectLabelRes.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& ChangeObjectLabelRes_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& ChangeObjectLabelRes_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.ChangeObjectLabelRes.");
+return single_value->field_reserved8;
+}
+
+int ChangeObjectLabelRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeObjectLabelRes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeObjectLabelRes 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 @IsobusVTMessageTypes.ChangeObjectLabelRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeObjectLabelRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeObjectLabelRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeObjectLabelRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeObjectLabelRes.");
+  }
+  return 0;
+}
+
+void ChangeObjectLabelRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangeObjectLabelRes_template::log_match(const ChangeObjectLabelRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_errorCodes.match(match_value.errorCodes(), legacy)){
+TTCN_Logger::log_logmatch_info(".errorCodes");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 ChangeObjectLabelRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_errorCodes.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.ChangeObjectLabelRes.");
+}
+}
+
+void ChangeObjectLabelRes_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_vtfunction.decode_text(text_buf);
+single_value->field_errorCodes.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 ChangeObjectLabelRes_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 @IsobusVTMessageTypes.ChangeObjectLabelRes.");
+}
+}
+
+void ChangeObjectLabelRes_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: {
+    ChangeObjectLabelRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.ChangeObjectLabelRes has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangeObjectLabelRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangeObjectLabelRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangeObjectLabelRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeObjectLabelRes");
+single_value->field_errorCodes.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeObjectLabelRes");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeObjectLabelRes");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeObjectLabelRes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeObjectLabelRes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeObjectLabelRes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeObjectLabelRes");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeObjectLabelRes");
+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 : "@IsobusVTMessageTypes.ChangeObjectLabelRes");
+}
+
+boolean ChangeObjectLabelRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangeObjectLabelRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangeObjectLabelReq::ChangeObjectLabelReq()
+{
+}
+
+ChangeObjectLabelReq::ChangeObjectLabelReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectIDofObjectToAssociateLabelWith,
+    const INTEGER& par_objectIDofAStringVariableObjectThatContainsTheLabelString,
+    const INTEGER& par_fontType,
+    const INTEGER& par_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel)
+  :   field_vtfunction(par_vtfunction),
+  field_objectIDofObjectToAssociateLabelWith(par_objectIDofObjectToAssociateLabelWith),
+  field_objectIDofAStringVariableObjectThatContainsTheLabelString(par_objectIDofAStringVariableObjectThatContainsTheLabelString),
+  field_fontType(par_fontType),
+  field_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel(par_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel)
+{
+}
+
+ChangeObjectLabelReq::ChangeObjectLabelReq(const ChangeObjectLabelReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangeObjectLabelReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectIDofObjectToAssociateLabelWith().is_bound()) field_objectIDofObjectToAssociateLabelWith = other_value.objectIDofObjectToAssociateLabelWith();
+else field_objectIDofObjectToAssociateLabelWith.clean_up();
+if (other_value.objectIDofAStringVariableObjectThatContainsTheLabelString().is_bound()) field_objectIDofAStringVariableObjectThatContainsTheLabelString = other_value.objectIDofAStringVariableObjectThatContainsTheLabelString();
+else field_objectIDofAStringVariableObjectThatContainsTheLabelString.clean_up();
+if (other_value.fontType().is_bound()) field_fontType = other_value.fontType();
+else field_fontType.clean_up();
+if (other_value.objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel().is_bound()) field_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel = other_value.objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel();
+else field_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel.clean_up();
+}
+
+void ChangeObjectLabelReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectIDofObjectToAssociateLabelWith.clean_up();
+field_objectIDofAStringVariableObjectThatContainsTheLabelString.clean_up();
+field_fontType.clean_up();
+field_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangeObjectLabelReq::get_descriptor() const { return &ChangeObjectLabelReq_descr_; }
+ChangeObjectLabelReq& ChangeObjectLabelReq::operator=(const ChangeObjectLabelReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangeObjectLabelReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectIDofObjectToAssociateLabelWith().is_bound()) field_objectIDofObjectToAssociateLabelWith = other_value.objectIDofObjectToAssociateLabelWith();
+  else field_objectIDofObjectToAssociateLabelWith.clean_up();
+  if (other_value.objectIDofAStringVariableObjectThatContainsTheLabelString().is_bound()) field_objectIDofAStringVariableObjectThatContainsTheLabelString = other_value.objectIDofAStringVariableObjectThatContainsTheLabelString();
+  else field_objectIDofAStringVariableObjectThatContainsTheLabelString.clean_up();
+  if (other_value.fontType().is_bound()) field_fontType = other_value.fontType();
+  else field_fontType.clean_up();
+  if (other_value.objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel().is_bound()) field_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel = other_value.objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel();
+  else field_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel.clean_up();
+}
+return *this;
+}
+
+boolean ChangeObjectLabelReq::operator==(const ChangeObjectLabelReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectIDofObjectToAssociateLabelWith==other_value.field_objectIDofObjectToAssociateLabelWith
+  && field_objectIDofAStringVariableObjectThatContainsTheLabelString==other_value.field_objectIDofAStringVariableObjectThatContainsTheLabelString
+  && field_fontType==other_value.field_fontType
+  && field_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel==other_value.field_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel;
+}
+
+boolean ChangeObjectLabelReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectIDofObjectToAssociateLabelWith.is_bound())
+  || (field_objectIDofAStringVariableObjectThatContainsTheLabelString.is_bound())
+  || (field_fontType.is_bound())
+  || (field_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel.is_bound());
+}
+boolean ChangeObjectLabelReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectIDofObjectToAssociateLabelWith.is_value()
+  && field_objectIDofAStringVariableObjectThatContainsTheLabelString.is_value()
+  && field_fontType.is_value()
+  && field_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel.is_value();
+}
+void ChangeObjectLabelReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectIDofObjectToAssociateLabelWith := ");
+field_objectIDofObjectToAssociateLabelWith.log();
+TTCN_Logger::log_event_str(", objectIDofAStringVariableObjectThatContainsTheLabelString := ");
+field_objectIDofAStringVariableObjectThatContainsTheLabelString.log();
+TTCN_Logger::log_event_str(", fontType := ");
+field_fontType.log();
+TTCN_Logger::log_event_str(", objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel := ");
+field_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangeObjectLabelReq::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 @IsobusVTMessageTypes.ChangeObjectLabelReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectIDofObjectToAssociateLabelWith().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) objectIDofAStringVariableObjectThatContainsTheLabelString().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) fontType().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectIDofObjectToAssociateLabelWith")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofObjectToAssociateLabelWith().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(), "objectIDofAStringVariableObjectThatContainsTheLabelString")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofAStringVariableObjectThatContainsTheLabelString().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(), "fontType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          fontType().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(), "objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel().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 @IsobusVTMessageTypes.ChangeObjectLabelReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangeObjectLabelReq");
+  }
+}
+
+void ChangeObjectLabelReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectIDofObjectToAssociateLabelWith().is_bound()) objectIDofObjectToAssociateLabelWith().set_implicit_omit();
+if (objectIDofAStringVariableObjectThatContainsTheLabelString().is_bound()) objectIDofAStringVariableObjectThatContainsTheLabelString().set_implicit_omit();
+if (fontType().is_bound()) fontType().set_implicit_omit();
+if (objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel().is_bound()) objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel().set_implicit_omit();
+}
+
+void ChangeObjectLabelReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectIDofObjectToAssociateLabelWith.encode_text(text_buf);
+field_objectIDofAStringVariableObjectThatContainsTheLabelString.encode_text(text_buf);
+field_fontType.encode_text(text_buf);
+field_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel.encode_text(text_buf);
+}
+
+void ChangeObjectLabelReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectIDofObjectToAssociateLabelWith.decode_text(text_buf);
+field_objectIDofAStringVariableObjectThatContainsTheLabelString.decode_text(text_buf);
+field_fontType.decode_text(text_buf);
+field_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel.decode_text(text_buf);
+}
+
+void ChangeObjectLabelReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangeObjectLabelReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangeObjectLabelReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectIDofObjectToAssociateLabelWith.RAW_decode(ValidObjectID_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectIDofAStringVariableObjectThatContainsTheLabelString.RAW_decode(ValidObjectID_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, FontType_descr_.raw->forceomit);
+  decoded_field_length = field_fontType.RAW_decode(FontType_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel.RAW_decode(ValidObjectID_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 ChangeObjectLabelReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, FontType_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, ValidObjectID_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectIDofObjectToAssociateLabelWith.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_objectIDofAStringVariableObjectThatContainsTheLabelString.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_fontType.RAW_encode(FontType_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[4]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangeObjectLabelReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectIDofObjectToAssociateLabelWith;
+INTEGER_template field_objectIDofAStringVariableObjectThatContainsTheLabelString;
+INTEGER_template field_fontType;
+INTEGER_template field_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel;
+};
+
+void ChangeObjectLabelReq_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_vtfunction = ANY_VALUE;
+single_value->field_objectIDofObjectToAssociateLabelWith = ANY_VALUE;
+single_value->field_objectIDofAStringVariableObjectThatContainsTheLabelString = ANY_VALUE;
+single_value->field_fontType = ANY_VALUE;
+single_value->field_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel = ANY_VALUE;
+}
+}
+}
+
+void ChangeObjectLabelReq_template::copy_value(const ChangeObjectLabelReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectIDofObjectToAssociateLabelWith().is_bound()) {
+  single_value->field_objectIDofObjectToAssociateLabelWith = other_value.objectIDofObjectToAssociateLabelWith();
+} else {
+  single_value->field_objectIDofObjectToAssociateLabelWith.clean_up();
+}
+if (other_value.objectIDofAStringVariableObjectThatContainsTheLabelString().is_bound()) {
+  single_value->field_objectIDofAStringVariableObjectThatContainsTheLabelString = other_value.objectIDofAStringVariableObjectThatContainsTheLabelString();
+} else {
+  single_value->field_objectIDofAStringVariableObjectThatContainsTheLabelString.clean_up();
+}
+if (other_value.fontType().is_bound()) {
+  single_value->field_fontType = other_value.fontType();
+} else {
+  single_value->field_fontType.clean_up();
+}
+if (other_value.objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel().is_bound()) {
+  single_value->field_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel = other_value.objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel();
+} else {
+  single_value->field_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangeObjectLabelReq_template::copy_template(const ChangeObjectLabelReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectIDofObjectToAssociateLabelWith().get_selection()) {
+single_value->field_objectIDofObjectToAssociateLabelWith = other_value.objectIDofObjectToAssociateLabelWith();
+} else {
+single_value->field_objectIDofObjectToAssociateLabelWith.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectIDofAStringVariableObjectThatContainsTheLabelString().get_selection()) {
+single_value->field_objectIDofAStringVariableObjectThatContainsTheLabelString = other_value.objectIDofAStringVariableObjectThatContainsTheLabelString();
+} else {
+single_value->field_objectIDofAStringVariableObjectThatContainsTheLabelString.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.fontType().get_selection()) {
+single_value->field_fontType = other_value.fontType();
+} else {
+single_value->field_fontType.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel().get_selection()) {
+single_value->field_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel = other_value.objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel();
+} else {
+single_value->field_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangeObjectLabelReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeObjectLabelReq.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangeObjectLabelReq_template::ChangeObjectLabelReq_template()
+{
+}
+
+ChangeObjectLabelReq_template::ChangeObjectLabelReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangeObjectLabelReq_template::ChangeObjectLabelReq_template(const ChangeObjectLabelReq& other_value)
+{
+copy_value(other_value);
+}
+
+ChangeObjectLabelReq_template::ChangeObjectLabelReq_template(const OPTIONAL<ChangeObjectLabelReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeObjectLabelReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangeObjectLabelReq from an unbound optional field.");
+}
+}
+
+ChangeObjectLabelReq_template::ChangeObjectLabelReq_template(const ChangeObjectLabelReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangeObjectLabelReq_template::~ChangeObjectLabelReq_template()
+{
+clean_up();
+}
+
+ChangeObjectLabelReq_template& ChangeObjectLabelReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangeObjectLabelReq_template& ChangeObjectLabelReq_template::operator=(const ChangeObjectLabelReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangeObjectLabelReq_template& ChangeObjectLabelReq_template::operator=(const OPTIONAL<ChangeObjectLabelReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeObjectLabelReq&)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 @IsobusVTMessageTypes.ChangeObjectLabelReq.");
+}
+return *this;
+}
+
+ChangeObjectLabelReq_template& ChangeObjectLabelReq_template::operator=(const ChangeObjectLabelReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangeObjectLabelReq_template::match(const ChangeObjectLabelReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectIDofObjectToAssociateLabelWith().is_bound()) return FALSE;
+if(!single_value->field_objectIDofObjectToAssociateLabelWith.match(other_value.objectIDofObjectToAssociateLabelWith(), legacy))return FALSE;
+if(!other_value.objectIDofAStringVariableObjectThatContainsTheLabelString().is_bound()) return FALSE;
+if(!single_value->field_objectIDofAStringVariableObjectThatContainsTheLabelString.match(other_value.objectIDofAStringVariableObjectThatContainsTheLabelString(), legacy))return FALSE;
+if(!other_value.fontType().is_bound()) return FALSE;
+if(!single_value->field_fontType.match(other_value.fontType(), legacy))return FALSE;
+if(!other_value.objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel().is_bound()) return FALSE;
+if(!single_value->field_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel.match(other_value.objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeObjectLabelReq.");
+}
+return FALSE;
+}
+
+boolean ChangeObjectLabelReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectIDofObjectToAssociateLabelWith.is_bound()
+
+ ||single_value->field_objectIDofAStringVariableObjectThatContainsTheLabelString.is_bound()
+
+ ||single_value->field_fontType.is_bound()
+
+ ||single_value->field_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel.is_bound()
+;
+}
+
+boolean ChangeObjectLabelReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectIDofObjectToAssociateLabelWith.is_value()
+ &&single_value->field_objectIDofAStringVariableObjectThatContainsTheLabelString.is_value()
+ &&single_value->field_fontType.is_value()
+ &&single_value->field_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel.is_value();
+}
+
+void ChangeObjectLabelReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangeObjectLabelReq ChangeObjectLabelReq_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 @IsobusVTMessageTypes.ChangeObjectLabelReq.");
+ChangeObjectLabelReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectIDofObjectToAssociateLabelWith.is_bound()) {
+ret_val.objectIDofObjectToAssociateLabelWith() = single_value->field_objectIDofObjectToAssociateLabelWith.valueof();
+}
+if (single_value->field_objectIDofAStringVariableObjectThatContainsTheLabelString.is_bound()) {
+ret_val.objectIDofAStringVariableObjectThatContainsTheLabelString() = single_value->field_objectIDofAStringVariableObjectThatContainsTheLabelString.valueof();
+}
+if (single_value->field_fontType.is_bound()) {
+ret_val.fontType() = single_value->field_fontType.valueof();
+}
+if (single_value->field_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel.is_bound()) {
+ret_val.objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel() = single_value->field_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel.valueof();
+}
+return ret_val;
+}
+
+void ChangeObjectLabelReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangeObjectLabelReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangeObjectLabelReq_template[list_length];
+}
+
+ChangeObjectLabelReq_template& ChangeObjectLabelReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangeObjectLabelReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangeObjectLabelReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ChangeObjectLabelReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ChangeObjectLabelReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ChangeObjectLabelReq.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& ChangeObjectLabelReq_template::objectIDofObjectToAssociateLabelWith()
+{
+set_specific();
+return single_value->field_objectIDofObjectToAssociateLabelWith;
+}
+
+const INTEGER_template& ChangeObjectLabelReq_template::objectIDofObjectToAssociateLabelWith() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectIDofObjectToAssociateLabelWith of a non-specific template of type @IsobusVTMessageTypes.ChangeObjectLabelReq.");
+return single_value->field_objectIDofObjectToAssociateLabelWith;
+}
+
+INTEGER_template& ChangeObjectLabelReq_template::objectIDofAStringVariableObjectThatContainsTheLabelString()
+{
+set_specific();
+return single_value->field_objectIDofAStringVariableObjectThatContainsTheLabelString;
+}
+
+const INTEGER_template& ChangeObjectLabelReq_template::objectIDofAStringVariableObjectThatContainsTheLabelString() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectIDofAStringVariableObjectThatContainsTheLabelString of a non-specific template of type @IsobusVTMessageTypes.ChangeObjectLabelReq.");
+return single_value->field_objectIDofAStringVariableObjectThatContainsTheLabelString;
+}
+
+INTEGER_template& ChangeObjectLabelReq_template::fontType()
+{
+set_specific();
+return single_value->field_fontType;
+}
+
+const INTEGER_template& ChangeObjectLabelReq_template::fontType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field fontType of a non-specific template of type @IsobusVTMessageTypes.ChangeObjectLabelReq.");
+return single_value->field_fontType;
+}
+
+INTEGER_template& ChangeObjectLabelReq_template::objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel()
+{
+set_specific();
+return single_value->field_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel;
+}
+
+const INTEGER_template& ChangeObjectLabelReq_template::objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel of a non-specific template of type @IsobusVTMessageTypes.ChangeObjectLabelReq.");
+return single_value->field_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel;
+}
+
+int ChangeObjectLabelReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeObjectLabelReq 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 @IsobusVTMessageTypes.ChangeObjectLabelReq 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 @IsobusVTMessageTypes.ChangeObjectLabelReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeObjectLabelReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeObjectLabelReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeObjectLabelReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeObjectLabelReq.");
+  }
+  return 0;
+}
+
+void ChangeObjectLabelReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectIDofObjectToAssociateLabelWith := ");
+single_value->field_objectIDofObjectToAssociateLabelWith.log();
+TTCN_Logger::log_event_str(", objectIDofAStringVariableObjectThatContainsTheLabelString := ");
+single_value->field_objectIDofAStringVariableObjectThatContainsTheLabelString.log();
+TTCN_Logger::log_event_str(", fontType := ");
+single_value->field_fontType.log();
+TTCN_Logger::log_event_str(", objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel := ");
+single_value->field_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangeObjectLabelReq_template::log_match(const ChangeObjectLabelReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectIDofObjectToAssociateLabelWith.match(match_value.objectIDofObjectToAssociateLabelWith(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectIDofObjectToAssociateLabelWith");
+single_value->field_objectIDofObjectToAssociateLabelWith.log_match(match_value.objectIDofObjectToAssociateLabelWith(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectIDofAStringVariableObjectThatContainsTheLabelString.match(match_value.objectIDofAStringVariableObjectThatContainsTheLabelString(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectIDofAStringVariableObjectThatContainsTheLabelString");
+single_value->field_objectIDofAStringVariableObjectThatContainsTheLabelString.log_match(match_value.objectIDofAStringVariableObjectThatContainsTheLabelString(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_fontType.match(match_value.fontType(), legacy)){
+TTCN_Logger::log_logmatch_info(".fontType");
+single_value->field_fontType.log_match(match_value.fontType(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel.match(match_value.objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel");
+single_value->field_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel.log_match(match_value.objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectIDofObjectToAssociateLabelWith := ");
+single_value->field_objectIDofObjectToAssociateLabelWith.log_match(match_value.objectIDofObjectToAssociateLabelWith(), legacy);
+TTCN_Logger::log_event_str(", objectIDofAStringVariableObjectThatContainsTheLabelString := ");
+single_value->field_objectIDofAStringVariableObjectThatContainsTheLabelString.log_match(match_value.objectIDofAStringVariableObjectThatContainsTheLabelString(), legacy);
+TTCN_Logger::log_event_str(", fontType := ");
+single_value->field_fontType.log_match(match_value.fontType(), legacy);
+TTCN_Logger::log_event_str(", objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel := ");
+single_value->field_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel.log_match(match_value.objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel(), 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 ChangeObjectLabelReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectIDofObjectToAssociateLabelWith.encode_text(text_buf);
+single_value->field_objectIDofAStringVariableObjectThatContainsTheLabelString.encode_text(text_buf);
+single_value->field_fontType.encode_text(text_buf);
+single_value->field_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel.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 @IsobusVTMessageTypes.ChangeObjectLabelReq.");
+}
+}
+
+void ChangeObjectLabelReq_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_vtfunction.decode_text(text_buf);
+single_value->field_objectIDofObjectToAssociateLabelWith.decode_text(text_buf);
+single_value->field_objectIDofAStringVariableObjectThatContainsTheLabelString.decode_text(text_buf);
+single_value->field_fontType.decode_text(text_buf);
+single_value->field_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel.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 ChangeObjectLabelReq_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 @IsobusVTMessageTypes.ChangeObjectLabelReq.");
+}
+}
+
+void ChangeObjectLabelReq_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: {
+    ChangeObjectLabelReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.ChangeObjectLabelReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectIDofObjectToAssociateLabelWith().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) objectIDofAStringVariableObjectThatContainsTheLabelString().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) fontType().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectIDofObjectToAssociateLabelWith")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofObjectToAssociateLabelWith().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(), "objectIDofAStringVariableObjectThatContainsTheLabelString")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofAStringVariableObjectThatContainsTheLabelString().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(), "fontType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          fontType().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(), "objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel().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 @IsobusVTMessageTypes.ChangeObjectLabelReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangeObjectLabelReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangeObjectLabelReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeObjectLabelReq");
+single_value->field_objectIDofObjectToAssociateLabelWith.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeObjectLabelReq");
+single_value->field_objectIDofAStringVariableObjectThatContainsTheLabelString.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeObjectLabelReq");
+single_value->field_fontType.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeObjectLabelReq");
+single_value->field_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeObjectLabelReq");
+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 : "@IsobusVTMessageTypes.ChangeObjectLabelReq");
+}
+
+boolean ChangeObjectLabelReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangeObjectLabelReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangePolygonPointRes__ErrorCodes::ChangePolygonPointRes__ErrorCodes()
+{
+}
+
+ChangePolygonPointRes__ErrorCodes::ChangePolygonPointRes__ErrorCodes(const BOOLEAN& par_invalidObjectID,
+    const BOOLEAN& par_invalidPointIndex,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved3,
+    const BOOLEAN& par_reserved4,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7)
+  :   field_invalidObjectID(par_invalidObjectID),
+  field_invalidPointIndex(par_invalidPointIndex),
+  field_anyOtherError(par_anyOtherError),
+  field_reserved3(par_reserved3),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7)
+{
+}
+
+ChangePolygonPointRes__ErrorCodes::ChangePolygonPointRes__ErrorCodes(const ChangePolygonPointRes__ErrorCodes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes.");
+if (other_value.invalidObjectID().is_bound()) field_invalidObjectID = other_value.invalidObjectID();
+else field_invalidObjectID.clean_up();
+if (other_value.invalidPointIndex().is_bound()) field_invalidPointIndex = other_value.invalidPointIndex();
+else field_invalidPointIndex.clean_up();
+if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+else field_anyOtherError.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+}
+
+void ChangePolygonPointRes__ErrorCodes::clean_up()
+{
+field_invalidObjectID.clean_up();
+field_invalidPointIndex.clean_up();
+field_anyOtherError.clean_up();
+field_reserved3.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangePolygonPointRes__ErrorCodes::get_descriptor() const { return &ChangePolygonPointRes__ErrorCodes_descr_; }
+ChangePolygonPointRes__ErrorCodes& ChangePolygonPointRes__ErrorCodes::operator=(const ChangePolygonPointRes__ErrorCodes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes.");
+  if (other_value.invalidObjectID().is_bound()) field_invalidObjectID = other_value.invalidObjectID();
+  else field_invalidObjectID.clean_up();
+  if (other_value.invalidPointIndex().is_bound()) field_invalidPointIndex = other_value.invalidPointIndex();
+  else field_invalidPointIndex.clean_up();
+  if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+  else field_anyOtherError.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+}
+return *this;
+}
+
+boolean ChangePolygonPointRes__ErrorCodes::operator==(const ChangePolygonPointRes__ErrorCodes& other_value) const
+{
+return field_invalidObjectID==other_value.field_invalidObjectID
+  && field_invalidPointIndex==other_value.field_invalidPointIndex
+  && field_anyOtherError==other_value.field_anyOtherError
+  && field_reserved3==other_value.field_reserved3
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7;
+}
+
+boolean ChangePolygonPointRes__ErrorCodes::is_bound() const
+{
+return (field_invalidObjectID.is_bound())
+  || (field_invalidPointIndex.is_bound())
+  || (field_anyOtherError.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound());
+}
+boolean ChangePolygonPointRes__ErrorCodes::is_value() const
+{
+return field_invalidObjectID.is_value()
+  && field_invalidPointIndex.is_value()
+  && field_anyOtherError.is_value()
+  && field_reserved3.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value();
+}
+void ChangePolygonPointRes__ErrorCodes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ invalidObjectID := ");
+field_invalidObjectID.log();
+TTCN_Logger::log_event_str(", invalidPointIndex := ");
+field_invalidPointIndex.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangePolygonPointRes__ErrorCodes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes has 8 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) invalidObjectID().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) invalidPointIndex().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "invalidObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidObjectID().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(), "invalidPointIndex")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidPointIndex().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes");
+  }
+}
+
+void ChangePolygonPointRes__ErrorCodes::set_implicit_omit()
+{
+if (invalidObjectID().is_bound()) invalidObjectID().set_implicit_omit();
+if (invalidPointIndex().is_bound()) invalidPointIndex().set_implicit_omit();
+if (anyOtherError().is_bound()) anyOtherError().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+}
+
+void ChangePolygonPointRes__ErrorCodes::encode_text(Text_Buf& text_buf) const
+{
+field_invalidObjectID.encode_text(text_buf);
+field_invalidPointIndex.encode_text(text_buf);
+field_anyOtherError.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+}
+
+void ChangePolygonPointRes__ErrorCodes::decode_text(Text_Buf& text_buf)
+{
+field_invalidObjectID.decode_text(text_buf);
+field_invalidPointIndex.decode_text(text_buf);
+field_anyOtherError.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+}
+
+void ChangePolygonPointRes__ErrorCodes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangePolygonPointRes__ErrorCodes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangePolygonPointRes__ErrorCodes::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidObjectID.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidPointIndex.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_anyOtherError.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ChangePolygonPointRes__ErrorCodes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_invalidObjectID.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_invalidPointIndex.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_anyOtherError.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved3.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved4.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved5.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved6.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved7.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangePolygonPointRes__ErrorCodes_template::single_value_struct {
+BOOLEAN_template field_invalidObjectID;
+BOOLEAN_template field_invalidPointIndex;
+BOOLEAN_template field_anyOtherError;
+BOOLEAN_template field_reserved3;
+BOOLEAN_template field_reserved4;
+BOOLEAN_template field_reserved5;
+BOOLEAN_template field_reserved6;
+BOOLEAN_template field_reserved7;
+};
+
+void ChangePolygonPointRes__ErrorCodes_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_invalidObjectID = ANY_VALUE;
+single_value->field_invalidPointIndex = ANY_VALUE;
+single_value->field_anyOtherError = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+}
+}
+}
+
+void ChangePolygonPointRes__ErrorCodes_template::copy_value(const ChangePolygonPointRes__ErrorCodes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.invalidObjectID().is_bound()) {
+  single_value->field_invalidObjectID = other_value.invalidObjectID();
+} else {
+  single_value->field_invalidObjectID.clean_up();
+}
+if (other_value.invalidPointIndex().is_bound()) {
+  single_value->field_invalidPointIndex = other_value.invalidPointIndex();
+} else {
+  single_value->field_invalidPointIndex.clean_up();
+}
+if (other_value.anyOtherError().is_bound()) {
+  single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+  single_value->field_anyOtherError.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangePolygonPointRes__ErrorCodes_template::copy_template(const ChangePolygonPointRes__ErrorCodes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.invalidObjectID().get_selection()) {
+single_value->field_invalidObjectID = other_value.invalidObjectID();
+} else {
+single_value->field_invalidObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.invalidPointIndex().get_selection()) {
+single_value->field_invalidPointIndex = other_value.invalidPointIndex();
+} else {
+single_value->field_invalidPointIndex.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.anyOtherError().get_selection()) {
+single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+single_value->field_anyOtherError.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangePolygonPointRes__ErrorCodes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangePolygonPointRes__ErrorCodes_template::ChangePolygonPointRes__ErrorCodes_template()
+{
+}
+
+ChangePolygonPointRes__ErrorCodes_template::ChangePolygonPointRes__ErrorCodes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangePolygonPointRes__ErrorCodes_template::ChangePolygonPointRes__ErrorCodes_template(const ChangePolygonPointRes__ErrorCodes& other_value)
+{
+copy_value(other_value);
+}
+
+ChangePolygonPointRes__ErrorCodes_template::ChangePolygonPointRes__ErrorCodes_template(const OPTIONAL<ChangePolygonPointRes__ErrorCodes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangePolygonPointRes__ErrorCodes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes from an unbound optional field.");
+}
+}
+
+ChangePolygonPointRes__ErrorCodes_template::ChangePolygonPointRes__ErrorCodes_template(const ChangePolygonPointRes__ErrorCodes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangePolygonPointRes__ErrorCodes_template::~ChangePolygonPointRes__ErrorCodes_template()
+{
+clean_up();
+}
+
+ChangePolygonPointRes__ErrorCodes_template& ChangePolygonPointRes__ErrorCodes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangePolygonPointRes__ErrorCodes_template& ChangePolygonPointRes__ErrorCodes_template::operator=(const ChangePolygonPointRes__ErrorCodes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangePolygonPointRes__ErrorCodes_template& ChangePolygonPointRes__ErrorCodes_template::operator=(const OPTIONAL<ChangePolygonPointRes__ErrorCodes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangePolygonPointRes__ErrorCodes&)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 @IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes.");
+}
+return *this;
+}
+
+ChangePolygonPointRes__ErrorCodes_template& ChangePolygonPointRes__ErrorCodes_template::operator=(const ChangePolygonPointRes__ErrorCodes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangePolygonPointRes__ErrorCodes_template::match(const ChangePolygonPointRes__ErrorCodes& 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.invalidObjectID().is_bound()) return FALSE;
+if(!single_value->field_invalidObjectID.match(other_value.invalidObjectID(), legacy))return FALSE;
+if(!other_value.invalidPointIndex().is_bound()) return FALSE;
+if(!single_value->field_invalidPointIndex.match(other_value.invalidPointIndex(), legacy))return FALSE;
+if(!other_value.anyOtherError().is_bound()) return FALSE;
+if(!single_value->field_anyOtherError.match(other_value.anyOtherError(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes.");
+}
+return FALSE;
+}
+
+boolean ChangePolygonPointRes__ErrorCodes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_invalidObjectID.is_bound()
+
+ ||single_value->field_invalidPointIndex.is_bound()
+
+ ||single_value->field_anyOtherError.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+;
+}
+
+boolean ChangePolygonPointRes__ErrorCodes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_invalidObjectID.is_value()
+ &&single_value->field_invalidPointIndex.is_value()
+ &&single_value->field_anyOtherError.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value();
+}
+
+void ChangePolygonPointRes__ErrorCodes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangePolygonPointRes__ErrorCodes ChangePolygonPointRes__ErrorCodes_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 @IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes.");
+ChangePolygonPointRes__ErrorCodes ret_val;
+if (single_value->field_invalidObjectID.is_bound()) {
+ret_val.invalidObjectID() = single_value->field_invalidObjectID.valueof();
+}
+if (single_value->field_invalidPointIndex.is_bound()) {
+ret_val.invalidPointIndex() = single_value->field_invalidPointIndex.valueof();
+}
+if (single_value->field_anyOtherError.is_bound()) {
+ret_val.anyOtherError() = single_value->field_anyOtherError.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+return ret_val;
+}
+
+void ChangePolygonPointRes__ErrorCodes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangePolygonPointRes__ErrorCodes_template[list_length];
+}
+
+ChangePolygonPointRes__ErrorCodes_template& ChangePolygonPointRes__ErrorCodes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& ChangePolygonPointRes__ErrorCodes_template::invalidObjectID()
+{
+set_specific();
+return single_value->field_invalidObjectID;
+}
+
+const BOOLEAN_template& ChangePolygonPointRes__ErrorCodes_template::invalidObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidObjectID of a non-specific template of type @IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes.");
+return single_value->field_invalidObjectID;
+}
+
+BOOLEAN_template& ChangePolygonPointRes__ErrorCodes_template::invalidPointIndex()
+{
+set_specific();
+return single_value->field_invalidPointIndex;
+}
+
+const BOOLEAN_template& ChangePolygonPointRes__ErrorCodes_template::invalidPointIndex() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidPointIndex of a non-specific template of type @IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes.");
+return single_value->field_invalidPointIndex;
+}
+
+BOOLEAN_template& ChangePolygonPointRes__ErrorCodes_template::anyOtherError()
+{
+set_specific();
+return single_value->field_anyOtherError;
+}
+
+const BOOLEAN_template& ChangePolygonPointRes__ErrorCodes_template::anyOtherError() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field anyOtherError of a non-specific template of type @IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes.");
+return single_value->field_anyOtherError;
+}
+
+BOOLEAN_template& ChangePolygonPointRes__ErrorCodes_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const BOOLEAN_template& ChangePolygonPointRes__ErrorCodes_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes.");
+return single_value->field_reserved3;
+}
+
+BOOLEAN_template& ChangePolygonPointRes__ErrorCodes_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const BOOLEAN_template& ChangePolygonPointRes__ErrorCodes_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes.");
+return single_value->field_reserved4;
+}
+
+BOOLEAN_template& ChangePolygonPointRes__ErrorCodes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const BOOLEAN_template& ChangePolygonPointRes__ErrorCodes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes.");
+return single_value->field_reserved5;
+}
+
+BOOLEAN_template& ChangePolygonPointRes__ErrorCodes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const BOOLEAN_template& ChangePolygonPointRes__ErrorCodes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes.");
+return single_value->field_reserved6;
+}
+
+BOOLEAN_template& ChangePolygonPointRes__ErrorCodes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const BOOLEAN_template& ChangePolygonPointRes__ErrorCodes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes.");
+return single_value->field_reserved7;
+}
+
+int ChangePolygonPointRes__ErrorCodes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes 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 @IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes.");
+  }
+  return 0;
+}
+
+void ChangePolygonPointRes__ErrorCodes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ invalidObjectID := ");
+single_value->field_invalidObjectID.log();
+TTCN_Logger::log_event_str(", invalidPointIndex := ");
+single_value->field_invalidPointIndex.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangePolygonPointRes__ErrorCodes_template::log_match(const ChangePolygonPointRes__ErrorCodes& 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_invalidObjectID.match(match_value.invalidObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidObjectID");
+single_value->field_invalidObjectID.log_match(match_value.invalidObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_invalidPointIndex.match(match_value.invalidPointIndex(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidPointIndex");
+single_value->field_invalidPointIndex.log_match(match_value.invalidPointIndex(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_anyOtherError.match(match_value.anyOtherError(), legacy)){
+TTCN_Logger::log_logmatch_info(".anyOtherError");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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("{ invalidObjectID := ");
+single_value->field_invalidObjectID.log_match(match_value.invalidObjectID(), legacy);
+TTCN_Logger::log_event_str(", invalidPointIndex := ");
+single_value->field_invalidPointIndex.log_match(match_value.invalidPointIndex(), legacy);
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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 ChangePolygonPointRes__ErrorCodes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_invalidObjectID.encode_text(text_buf);
+single_value->field_invalidPointIndex.encode_text(text_buf);
+single_value->field_anyOtherError.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.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 @IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes.");
+}
+}
+
+void ChangePolygonPointRes__ErrorCodes_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_invalidObjectID.decode_text(text_buf);
+single_value->field_invalidPointIndex.decode_text(text_buf);
+single_value->field_anyOtherError.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.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 ChangePolygonPointRes__ErrorCodes_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 @IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes.");
+}
+}
+
+void ChangePolygonPointRes__ErrorCodes_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: {
+    ChangePolygonPointRes__ErrorCodes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes has 8 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) invalidObjectID().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) invalidPointIndex().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "invalidObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidObjectID().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(), "invalidPointIndex")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidPointIndex().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangePolygonPointRes__ErrorCodes_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_invalidObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes");
+single_value->field_invalidPointIndex.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes");
+single_value->field_anyOtherError.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes");
+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 : "@IsobusVTMessageTypes.ChangePolygonPointRes_ErrorCodes");
+}
+
+boolean ChangePolygonPointRes__ErrorCodes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangePolygonPointRes__ErrorCodes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangePolygonPointRes::ChangePolygonPointRes()
+{
+}
+
+ChangePolygonPointRes::ChangePolygonPointRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectIDofTheOutputPolygonObjectToChange,
+    const ChangePolygonPointRes__ErrorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_objectIDofTheOutputPolygonObjectToChange(par_objectIDofTheOutputPolygonObjectToChange),
+  field_errorCodes(par_errorCodes),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+ChangePolygonPointRes::ChangePolygonPointRes(const ChangePolygonPointRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangePolygonPointRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectIDofTheOutputPolygonObjectToChange().is_bound()) field_objectIDofTheOutputPolygonObjectToChange = other_value.objectIDofTheOutputPolygonObjectToChange();
+else field_objectIDofTheOutputPolygonObjectToChange.clean_up();
+if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+else field_errorCodes.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void ChangePolygonPointRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectIDofTheOutputPolygonObjectToChange.clean_up();
+field_errorCodes.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangePolygonPointRes::get_descriptor() const { return &ChangePolygonPointRes_descr_; }
+ChangePolygonPointRes& ChangePolygonPointRes::operator=(const ChangePolygonPointRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangePolygonPointRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectIDofTheOutputPolygonObjectToChange().is_bound()) field_objectIDofTheOutputPolygonObjectToChange = other_value.objectIDofTheOutputPolygonObjectToChange();
+  else field_objectIDofTheOutputPolygonObjectToChange.clean_up();
+  if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+  else field_errorCodes.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean ChangePolygonPointRes::operator==(const ChangePolygonPointRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectIDofTheOutputPolygonObjectToChange==other_value.field_objectIDofTheOutputPolygonObjectToChange
+  && field_errorCodes==other_value.field_errorCodes
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean ChangePolygonPointRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectIDofTheOutputPolygonObjectToChange.is_bound())
+  || (field_errorCodes.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean ChangePolygonPointRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectIDofTheOutputPolygonObjectToChange.is_value()
+  && field_errorCodes.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void ChangePolygonPointRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectIDofTheOutputPolygonObjectToChange := ");
+field_objectIDofTheOutputPolygonObjectToChange.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangePolygonPointRes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.ChangePolygonPointRes has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectIDofTheOutputPolygonObjectToChange().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectIDofTheOutputPolygonObjectToChange")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofTheOutputPolygonObjectToChange().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangePolygonPointRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangePolygonPointRes");
+  }
+}
+
+void ChangePolygonPointRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectIDofTheOutputPolygonObjectToChange().is_bound()) objectIDofTheOutputPolygonObjectToChange().set_implicit_omit();
+if (errorCodes().is_bound()) errorCodes().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void ChangePolygonPointRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectIDofTheOutputPolygonObjectToChange.encode_text(text_buf);
+field_errorCodes.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void ChangePolygonPointRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectIDofTheOutputPolygonObjectToChange.decode_text(text_buf);
+field_errorCodes.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void ChangePolygonPointRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangePolygonPointRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangePolygonPointRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectIDofTheOutputPolygonObjectToChange.RAW_decode(ValidObjectID_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, ChangePolygonPointRes__ErrorCodes_descr_.raw->forceomit);
+  decoded_field_length = field_errorCodes.RAW_decode(ChangePolygonPointRes__ErrorCodes_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, ChangePolygonPointRes_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(ChangePolygonPointRes_reserved4_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, ChangePolygonPointRes_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(ChangePolygonPointRes_reserved5_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, ChangePolygonPointRes_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(ChangePolygonPointRes_reserved6_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, ChangePolygonPointRes_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(ChangePolygonPointRes_reserved7_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, ChangePolygonPointRes_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(ChangePolygonPointRes_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ChangePolygonPointRes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ChangePolygonPointRes__ErrorCodes_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, ChangePolygonPointRes_reserved4_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, ChangePolygonPointRes_reserved5_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, ChangePolygonPointRes_reserved6_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, ChangePolygonPointRes_reserved7_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, ChangePolygonPointRes_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectIDofTheOutputPolygonObjectToChange.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_errorCodes.RAW_encode(ChangePolygonPointRes__ErrorCodes_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved4.RAW_encode(ChangePolygonPointRes_reserved4_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved5.RAW_encode(ChangePolygonPointRes_reserved5_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved6.RAW_encode(ChangePolygonPointRes_reserved6_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved7.RAW_encode(ChangePolygonPointRes_reserved7_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved8.RAW_encode(ChangePolygonPointRes_reserved8_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangePolygonPointRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectIDofTheOutputPolygonObjectToChange;
+ChangePolygonPointRes__ErrorCodes_template field_errorCodes;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void ChangePolygonPointRes_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_vtfunction = ANY_VALUE;
+single_value->field_objectIDofTheOutputPolygonObjectToChange = ANY_VALUE;
+single_value->field_errorCodes = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void ChangePolygonPointRes_template::copy_value(const ChangePolygonPointRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectIDofTheOutputPolygonObjectToChange().is_bound()) {
+  single_value->field_objectIDofTheOutputPolygonObjectToChange = other_value.objectIDofTheOutputPolygonObjectToChange();
+} else {
+  single_value->field_objectIDofTheOutputPolygonObjectToChange.clean_up();
+}
+if (other_value.errorCodes().is_bound()) {
+  single_value->field_errorCodes = other_value.errorCodes();
+} else {
+  single_value->field_errorCodes.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangePolygonPointRes_template::copy_template(const ChangePolygonPointRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectIDofTheOutputPolygonObjectToChange().get_selection()) {
+single_value->field_objectIDofTheOutputPolygonObjectToChange = other_value.objectIDofTheOutputPolygonObjectToChange();
+} else {
+single_value->field_objectIDofTheOutputPolygonObjectToChange.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.errorCodes().get_selection()) {
+single_value->field_errorCodes = other_value.errorCodes();
+} else {
+single_value->field_errorCodes.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangePolygonPointRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangePolygonPointRes.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangePolygonPointRes_template::ChangePolygonPointRes_template()
+{
+}
+
+ChangePolygonPointRes_template::ChangePolygonPointRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangePolygonPointRes_template::ChangePolygonPointRes_template(const ChangePolygonPointRes& other_value)
+{
+copy_value(other_value);
+}
+
+ChangePolygonPointRes_template::ChangePolygonPointRes_template(const OPTIONAL<ChangePolygonPointRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangePolygonPointRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangePolygonPointRes from an unbound optional field.");
+}
+}
+
+ChangePolygonPointRes_template::ChangePolygonPointRes_template(const ChangePolygonPointRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangePolygonPointRes_template::~ChangePolygonPointRes_template()
+{
+clean_up();
+}
+
+ChangePolygonPointRes_template& ChangePolygonPointRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangePolygonPointRes_template& ChangePolygonPointRes_template::operator=(const ChangePolygonPointRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangePolygonPointRes_template& ChangePolygonPointRes_template::operator=(const OPTIONAL<ChangePolygonPointRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangePolygonPointRes&)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 @IsobusVTMessageTypes.ChangePolygonPointRes.");
+}
+return *this;
+}
+
+ChangePolygonPointRes_template& ChangePolygonPointRes_template::operator=(const ChangePolygonPointRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangePolygonPointRes_template::match(const ChangePolygonPointRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectIDofTheOutputPolygonObjectToChange().is_bound()) return FALSE;
+if(!single_value->field_objectIDofTheOutputPolygonObjectToChange.match(other_value.objectIDofTheOutputPolygonObjectToChange(), legacy))return FALSE;
+if(!other_value.errorCodes().is_bound()) return FALSE;
+if(!single_value->field_errorCodes.match(other_value.errorCodes(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangePolygonPointRes.");
+}
+return FALSE;
+}
+
+boolean ChangePolygonPointRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectIDofTheOutputPolygonObjectToChange.is_bound()
+
+ ||single_value->field_errorCodes.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean ChangePolygonPointRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectIDofTheOutputPolygonObjectToChange.is_value()
+ &&single_value->field_errorCodes.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void ChangePolygonPointRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangePolygonPointRes ChangePolygonPointRes_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 @IsobusVTMessageTypes.ChangePolygonPointRes.");
+ChangePolygonPointRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectIDofTheOutputPolygonObjectToChange.is_bound()) {
+ret_val.objectIDofTheOutputPolygonObjectToChange() = single_value->field_objectIDofTheOutputPolygonObjectToChange.valueof();
+}
+if (single_value->field_errorCodes.is_bound()) {
+ret_val.errorCodes() = single_value->field_errorCodes.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void ChangePolygonPointRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangePolygonPointRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangePolygonPointRes_template[list_length];
+}
+
+ChangePolygonPointRes_template& ChangePolygonPointRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangePolygonPointRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangePolygonPointRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ChangePolygonPointRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ChangePolygonPointRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ChangePolygonPointRes.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& ChangePolygonPointRes_template::objectIDofTheOutputPolygonObjectToChange()
+{
+set_specific();
+return single_value->field_objectIDofTheOutputPolygonObjectToChange;
+}
+
+const INTEGER_template& ChangePolygonPointRes_template::objectIDofTheOutputPolygonObjectToChange() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectIDofTheOutputPolygonObjectToChange of a non-specific template of type @IsobusVTMessageTypes.ChangePolygonPointRes.");
+return single_value->field_objectIDofTheOutputPolygonObjectToChange;
+}
+
+ChangePolygonPointRes__ErrorCodes_template& ChangePolygonPointRes_template::errorCodes()
+{
+set_specific();
+return single_value->field_errorCodes;
+}
+
+const ChangePolygonPointRes__ErrorCodes_template& ChangePolygonPointRes_template::errorCodes() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field errorCodes of a non-specific template of type @IsobusVTMessageTypes.ChangePolygonPointRes.");
+return single_value->field_errorCodes;
+}
+
+OCTETSTRING_template& ChangePolygonPointRes_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& ChangePolygonPointRes_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.ChangePolygonPointRes.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& ChangePolygonPointRes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& ChangePolygonPointRes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.ChangePolygonPointRes.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& ChangePolygonPointRes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& ChangePolygonPointRes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.ChangePolygonPointRes.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& ChangePolygonPointRes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& ChangePolygonPointRes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ChangePolygonPointRes.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& ChangePolygonPointRes_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& ChangePolygonPointRes_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.ChangePolygonPointRes.");
+return single_value->field_reserved8;
+}
+
+int ChangePolygonPointRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangePolygonPointRes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangePolygonPointRes 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 @IsobusVTMessageTypes.ChangePolygonPointRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangePolygonPointRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangePolygonPointRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangePolygonPointRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangePolygonPointRes.");
+  }
+  return 0;
+}
+
+void ChangePolygonPointRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectIDofTheOutputPolygonObjectToChange := ");
+single_value->field_objectIDofTheOutputPolygonObjectToChange.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangePolygonPointRes_template::log_match(const ChangePolygonPointRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectIDofTheOutputPolygonObjectToChange.match(match_value.objectIDofTheOutputPolygonObjectToChange(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectIDofTheOutputPolygonObjectToChange");
+single_value->field_objectIDofTheOutputPolygonObjectToChange.log_match(match_value.objectIDofTheOutputPolygonObjectToChange(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_errorCodes.match(match_value.errorCodes(), legacy)){
+TTCN_Logger::log_logmatch_info(".errorCodes");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectIDofTheOutputPolygonObjectToChange := ");
+single_value->field_objectIDofTheOutputPolygonObjectToChange.log_match(match_value.objectIDofTheOutputPolygonObjectToChange(), legacy);
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 ChangePolygonPointRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectIDofTheOutputPolygonObjectToChange.encode_text(text_buf);
+single_value->field_errorCodes.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.ChangePolygonPointRes.");
+}
+}
+
+void ChangePolygonPointRes_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_vtfunction.decode_text(text_buf);
+single_value->field_objectIDofTheOutputPolygonObjectToChange.decode_text(text_buf);
+single_value->field_errorCodes.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 ChangePolygonPointRes_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 @IsobusVTMessageTypes.ChangePolygonPointRes.");
+}
+}
+
+void ChangePolygonPointRes_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: {
+    ChangePolygonPointRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.ChangePolygonPointRes has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectIDofTheOutputPolygonObjectToChange().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectIDofTheOutputPolygonObjectToChange")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofTheOutputPolygonObjectToChange().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangePolygonPointRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangePolygonPointRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangePolygonPointRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePolygonPointRes");
+single_value->field_objectIDofTheOutputPolygonObjectToChange.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePolygonPointRes");
+single_value->field_errorCodes.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePolygonPointRes");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePolygonPointRes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePolygonPointRes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePolygonPointRes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePolygonPointRes");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePolygonPointRes");
+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 : "@IsobusVTMessageTypes.ChangePolygonPointRes");
+}
+
+boolean ChangePolygonPointRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangePolygonPointRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangePolygonPointReq::ChangePolygonPointReq()
+{
+}
+
+ChangePolygonPointReq::ChangePolygonPointReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectIDofTheOutputPolygonObjectToChange,
+    const INTEGER& par_pointIndexOfThePointToReplace,
+    const INTEGER& par_newXposition,
+    const INTEGER& par_newYposition)
+  :   field_vtfunction(par_vtfunction),
+  field_objectIDofTheOutputPolygonObjectToChange(par_objectIDofTheOutputPolygonObjectToChange),
+  field_pointIndexOfThePointToReplace(par_pointIndexOfThePointToReplace),
+  field_newXposition(par_newXposition),
+  field_newYposition(par_newYposition)
+{
+}
+
+ChangePolygonPointReq::ChangePolygonPointReq(const ChangePolygonPointReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangePolygonPointReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectIDofTheOutputPolygonObjectToChange().is_bound()) field_objectIDofTheOutputPolygonObjectToChange = other_value.objectIDofTheOutputPolygonObjectToChange();
+else field_objectIDofTheOutputPolygonObjectToChange.clean_up();
+if (other_value.pointIndexOfThePointToReplace().is_bound()) field_pointIndexOfThePointToReplace = other_value.pointIndexOfThePointToReplace();
+else field_pointIndexOfThePointToReplace.clean_up();
+if (other_value.newXposition().is_bound()) field_newXposition = other_value.newXposition();
+else field_newXposition.clean_up();
+if (other_value.newYposition().is_bound()) field_newYposition = other_value.newYposition();
+else field_newYposition.clean_up();
+}
+
+void ChangePolygonPointReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectIDofTheOutputPolygonObjectToChange.clean_up();
+field_pointIndexOfThePointToReplace.clean_up();
+field_newXposition.clean_up();
+field_newYposition.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangePolygonPointReq::get_descriptor() const { return &ChangePolygonPointReq_descr_; }
+ChangePolygonPointReq& ChangePolygonPointReq::operator=(const ChangePolygonPointReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangePolygonPointReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectIDofTheOutputPolygonObjectToChange().is_bound()) field_objectIDofTheOutputPolygonObjectToChange = other_value.objectIDofTheOutputPolygonObjectToChange();
+  else field_objectIDofTheOutputPolygonObjectToChange.clean_up();
+  if (other_value.pointIndexOfThePointToReplace().is_bound()) field_pointIndexOfThePointToReplace = other_value.pointIndexOfThePointToReplace();
+  else field_pointIndexOfThePointToReplace.clean_up();
+  if (other_value.newXposition().is_bound()) field_newXposition = other_value.newXposition();
+  else field_newXposition.clean_up();
+  if (other_value.newYposition().is_bound()) field_newYposition = other_value.newYposition();
+  else field_newYposition.clean_up();
+}
+return *this;
+}
+
+boolean ChangePolygonPointReq::operator==(const ChangePolygonPointReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectIDofTheOutputPolygonObjectToChange==other_value.field_objectIDofTheOutputPolygonObjectToChange
+  && field_pointIndexOfThePointToReplace==other_value.field_pointIndexOfThePointToReplace
+  && field_newXposition==other_value.field_newXposition
+  && field_newYposition==other_value.field_newYposition;
+}
+
+boolean ChangePolygonPointReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectIDofTheOutputPolygonObjectToChange.is_bound())
+  || (field_pointIndexOfThePointToReplace.is_bound())
+  || (field_newXposition.is_bound())
+  || (field_newYposition.is_bound());
+}
+boolean ChangePolygonPointReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectIDofTheOutputPolygonObjectToChange.is_value()
+  && field_pointIndexOfThePointToReplace.is_value()
+  && field_newXposition.is_value()
+  && field_newYposition.is_value();
+}
+void ChangePolygonPointReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectIDofTheOutputPolygonObjectToChange := ");
+field_objectIDofTheOutputPolygonObjectToChange.log();
+TTCN_Logger::log_event_str(", pointIndexOfThePointToReplace := ");
+field_pointIndexOfThePointToReplace.log();
+TTCN_Logger::log_event_str(", newXposition := ");
+field_newXposition.log();
+TTCN_Logger::log_event_str(", newYposition := ");
+field_newYposition.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangePolygonPointReq::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 @IsobusVTMessageTypes.ChangePolygonPointReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectIDofTheOutputPolygonObjectToChange().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) pointIndexOfThePointToReplace().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) newXposition().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) newYposition().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectIDofTheOutputPolygonObjectToChange")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofTheOutputPolygonObjectToChange().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(), "pointIndexOfThePointToReplace")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          pointIndexOfThePointToReplace().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(), "newXposition")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          newXposition().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(), "newYposition")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          newYposition().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 @IsobusVTMessageTypes.ChangePolygonPointReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangePolygonPointReq");
+  }
+}
+
+void ChangePolygonPointReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectIDofTheOutputPolygonObjectToChange().is_bound()) objectIDofTheOutputPolygonObjectToChange().set_implicit_omit();
+if (pointIndexOfThePointToReplace().is_bound()) pointIndexOfThePointToReplace().set_implicit_omit();
+if (newXposition().is_bound()) newXposition().set_implicit_omit();
+if (newYposition().is_bound()) newYposition().set_implicit_omit();
+}
+
+void ChangePolygonPointReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectIDofTheOutputPolygonObjectToChange.encode_text(text_buf);
+field_pointIndexOfThePointToReplace.encode_text(text_buf);
+field_newXposition.encode_text(text_buf);
+field_newYposition.encode_text(text_buf);
+}
+
+void ChangePolygonPointReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectIDofTheOutputPolygonObjectToChange.decode_text(text_buf);
+field_pointIndexOfThePointToReplace.decode_text(text_buf);
+field_newXposition.decode_text(text_buf);
+field_newYposition.decode_text(text_buf);
+}
+
+void ChangePolygonPointReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangePolygonPointReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangePolygonPointReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectIDofTheOutputPolygonObjectToChange.RAW_decode(ValidObjectID_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, Index_descr_.raw->forceomit);
+  decoded_field_length = field_pointIndexOfThePointToReplace.RAW_decode(Index_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, PositionType_descr_.raw->forceomit);
+  decoded_field_length = field_newXposition.RAW_decode(PositionType_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, PositionType_descr_.raw->forceomit);
+  decoded_field_length = field_newYposition.RAW_decode(PositionType_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 ChangePolygonPointReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, Index_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, PositionType_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, PositionType_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectIDofTheOutputPolygonObjectToChange.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_pointIndexOfThePointToReplace.RAW_encode(Index_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_newXposition.RAW_encode(PositionType_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_newYposition.RAW_encode(PositionType_descr_, *myleaf.body.node.nodes[4]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangePolygonPointReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectIDofTheOutputPolygonObjectToChange;
+INTEGER_template field_pointIndexOfThePointToReplace;
+INTEGER_template field_newXposition;
+INTEGER_template field_newYposition;
+};
+
+void ChangePolygonPointReq_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_vtfunction = ANY_VALUE;
+single_value->field_objectIDofTheOutputPolygonObjectToChange = ANY_VALUE;
+single_value->field_pointIndexOfThePointToReplace = ANY_VALUE;
+single_value->field_newXposition = ANY_VALUE;
+single_value->field_newYposition = ANY_VALUE;
+}
+}
+}
+
+void ChangePolygonPointReq_template::copy_value(const ChangePolygonPointReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectIDofTheOutputPolygonObjectToChange().is_bound()) {
+  single_value->field_objectIDofTheOutputPolygonObjectToChange = other_value.objectIDofTheOutputPolygonObjectToChange();
+} else {
+  single_value->field_objectIDofTheOutputPolygonObjectToChange.clean_up();
+}
+if (other_value.pointIndexOfThePointToReplace().is_bound()) {
+  single_value->field_pointIndexOfThePointToReplace = other_value.pointIndexOfThePointToReplace();
+} else {
+  single_value->field_pointIndexOfThePointToReplace.clean_up();
+}
+if (other_value.newXposition().is_bound()) {
+  single_value->field_newXposition = other_value.newXposition();
+} else {
+  single_value->field_newXposition.clean_up();
+}
+if (other_value.newYposition().is_bound()) {
+  single_value->field_newYposition = other_value.newYposition();
+} else {
+  single_value->field_newYposition.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangePolygonPointReq_template::copy_template(const ChangePolygonPointReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectIDofTheOutputPolygonObjectToChange().get_selection()) {
+single_value->field_objectIDofTheOutputPolygonObjectToChange = other_value.objectIDofTheOutputPolygonObjectToChange();
+} else {
+single_value->field_objectIDofTheOutputPolygonObjectToChange.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.pointIndexOfThePointToReplace().get_selection()) {
+single_value->field_pointIndexOfThePointToReplace = other_value.pointIndexOfThePointToReplace();
+} else {
+single_value->field_pointIndexOfThePointToReplace.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.newXposition().get_selection()) {
+single_value->field_newXposition = other_value.newXposition();
+} else {
+single_value->field_newXposition.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.newYposition().get_selection()) {
+single_value->field_newYposition = other_value.newYposition();
+} else {
+single_value->field_newYposition.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangePolygonPointReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangePolygonPointReq.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangePolygonPointReq_template::ChangePolygonPointReq_template()
+{
+}
+
+ChangePolygonPointReq_template::ChangePolygonPointReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangePolygonPointReq_template::ChangePolygonPointReq_template(const ChangePolygonPointReq& other_value)
+{
+copy_value(other_value);
+}
+
+ChangePolygonPointReq_template::ChangePolygonPointReq_template(const OPTIONAL<ChangePolygonPointReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangePolygonPointReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangePolygonPointReq from an unbound optional field.");
+}
+}
+
+ChangePolygonPointReq_template::ChangePolygonPointReq_template(const ChangePolygonPointReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangePolygonPointReq_template::~ChangePolygonPointReq_template()
+{
+clean_up();
+}
+
+ChangePolygonPointReq_template& ChangePolygonPointReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangePolygonPointReq_template& ChangePolygonPointReq_template::operator=(const ChangePolygonPointReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangePolygonPointReq_template& ChangePolygonPointReq_template::operator=(const OPTIONAL<ChangePolygonPointReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangePolygonPointReq&)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 @IsobusVTMessageTypes.ChangePolygonPointReq.");
+}
+return *this;
+}
+
+ChangePolygonPointReq_template& ChangePolygonPointReq_template::operator=(const ChangePolygonPointReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangePolygonPointReq_template::match(const ChangePolygonPointReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectIDofTheOutputPolygonObjectToChange().is_bound()) return FALSE;
+if(!single_value->field_objectIDofTheOutputPolygonObjectToChange.match(other_value.objectIDofTheOutputPolygonObjectToChange(), legacy))return FALSE;
+if(!other_value.pointIndexOfThePointToReplace().is_bound()) return FALSE;
+if(!single_value->field_pointIndexOfThePointToReplace.match(other_value.pointIndexOfThePointToReplace(), legacy))return FALSE;
+if(!other_value.newXposition().is_bound()) return FALSE;
+if(!single_value->field_newXposition.match(other_value.newXposition(), legacy))return FALSE;
+if(!other_value.newYposition().is_bound()) return FALSE;
+if(!single_value->field_newYposition.match(other_value.newYposition(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangePolygonPointReq.");
+}
+return FALSE;
+}
+
+boolean ChangePolygonPointReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectIDofTheOutputPolygonObjectToChange.is_bound()
+
+ ||single_value->field_pointIndexOfThePointToReplace.is_bound()
+
+ ||single_value->field_newXposition.is_bound()
+
+ ||single_value->field_newYposition.is_bound()
+;
+}
+
+boolean ChangePolygonPointReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectIDofTheOutputPolygonObjectToChange.is_value()
+ &&single_value->field_pointIndexOfThePointToReplace.is_value()
+ &&single_value->field_newXposition.is_value()
+ &&single_value->field_newYposition.is_value();
+}
+
+void ChangePolygonPointReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangePolygonPointReq ChangePolygonPointReq_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 @IsobusVTMessageTypes.ChangePolygonPointReq.");
+ChangePolygonPointReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectIDofTheOutputPolygonObjectToChange.is_bound()) {
+ret_val.objectIDofTheOutputPolygonObjectToChange() = single_value->field_objectIDofTheOutputPolygonObjectToChange.valueof();
+}
+if (single_value->field_pointIndexOfThePointToReplace.is_bound()) {
+ret_val.pointIndexOfThePointToReplace() = single_value->field_pointIndexOfThePointToReplace.valueof();
+}
+if (single_value->field_newXposition.is_bound()) {
+ret_val.newXposition() = single_value->field_newXposition.valueof();
+}
+if (single_value->field_newYposition.is_bound()) {
+ret_val.newYposition() = single_value->field_newYposition.valueof();
+}
+return ret_val;
+}
+
+void ChangePolygonPointReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangePolygonPointReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangePolygonPointReq_template[list_length];
+}
+
+ChangePolygonPointReq_template& ChangePolygonPointReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangePolygonPointReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangePolygonPointReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ChangePolygonPointReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ChangePolygonPointReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ChangePolygonPointReq.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& ChangePolygonPointReq_template::objectIDofTheOutputPolygonObjectToChange()
+{
+set_specific();
+return single_value->field_objectIDofTheOutputPolygonObjectToChange;
+}
+
+const INTEGER_template& ChangePolygonPointReq_template::objectIDofTheOutputPolygonObjectToChange() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectIDofTheOutputPolygonObjectToChange of a non-specific template of type @IsobusVTMessageTypes.ChangePolygonPointReq.");
+return single_value->field_objectIDofTheOutputPolygonObjectToChange;
+}
+
+INTEGER_template& ChangePolygonPointReq_template::pointIndexOfThePointToReplace()
+{
+set_specific();
+return single_value->field_pointIndexOfThePointToReplace;
+}
+
+const INTEGER_template& ChangePolygonPointReq_template::pointIndexOfThePointToReplace() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field pointIndexOfThePointToReplace of a non-specific template of type @IsobusVTMessageTypes.ChangePolygonPointReq.");
+return single_value->field_pointIndexOfThePointToReplace;
+}
+
+INTEGER_template& ChangePolygonPointReq_template::newXposition()
+{
+set_specific();
+return single_value->field_newXposition;
+}
+
+const INTEGER_template& ChangePolygonPointReq_template::newXposition() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field newXposition of a non-specific template of type @IsobusVTMessageTypes.ChangePolygonPointReq.");
+return single_value->field_newXposition;
+}
+
+INTEGER_template& ChangePolygonPointReq_template::newYposition()
+{
+set_specific();
+return single_value->field_newYposition;
+}
+
+const INTEGER_template& ChangePolygonPointReq_template::newYposition() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field newYposition of a non-specific template of type @IsobusVTMessageTypes.ChangePolygonPointReq.");
+return single_value->field_newYposition;
+}
+
+int ChangePolygonPointReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangePolygonPointReq 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 @IsobusVTMessageTypes.ChangePolygonPointReq 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 @IsobusVTMessageTypes.ChangePolygonPointReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangePolygonPointReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangePolygonPointReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangePolygonPointReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangePolygonPointReq.");
+  }
+  return 0;
+}
+
+void ChangePolygonPointReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectIDofTheOutputPolygonObjectToChange := ");
+single_value->field_objectIDofTheOutputPolygonObjectToChange.log();
+TTCN_Logger::log_event_str(", pointIndexOfThePointToReplace := ");
+single_value->field_pointIndexOfThePointToReplace.log();
+TTCN_Logger::log_event_str(", newXposition := ");
+single_value->field_newXposition.log();
+TTCN_Logger::log_event_str(", newYposition := ");
+single_value->field_newYposition.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangePolygonPointReq_template::log_match(const ChangePolygonPointReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectIDofTheOutputPolygonObjectToChange.match(match_value.objectIDofTheOutputPolygonObjectToChange(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectIDofTheOutputPolygonObjectToChange");
+single_value->field_objectIDofTheOutputPolygonObjectToChange.log_match(match_value.objectIDofTheOutputPolygonObjectToChange(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_pointIndexOfThePointToReplace.match(match_value.pointIndexOfThePointToReplace(), legacy)){
+TTCN_Logger::log_logmatch_info(".pointIndexOfThePointToReplace");
+single_value->field_pointIndexOfThePointToReplace.log_match(match_value.pointIndexOfThePointToReplace(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_newXposition.match(match_value.newXposition(), legacy)){
+TTCN_Logger::log_logmatch_info(".newXposition");
+single_value->field_newXposition.log_match(match_value.newXposition(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_newYposition.match(match_value.newYposition(), legacy)){
+TTCN_Logger::log_logmatch_info(".newYposition");
+single_value->field_newYposition.log_match(match_value.newYposition(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectIDofTheOutputPolygonObjectToChange := ");
+single_value->field_objectIDofTheOutputPolygonObjectToChange.log_match(match_value.objectIDofTheOutputPolygonObjectToChange(), legacy);
+TTCN_Logger::log_event_str(", pointIndexOfThePointToReplace := ");
+single_value->field_pointIndexOfThePointToReplace.log_match(match_value.pointIndexOfThePointToReplace(), legacy);
+TTCN_Logger::log_event_str(", newXposition := ");
+single_value->field_newXposition.log_match(match_value.newXposition(), legacy);
+TTCN_Logger::log_event_str(", newYposition := ");
+single_value->field_newYposition.log_match(match_value.newYposition(), 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 ChangePolygonPointReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectIDofTheOutputPolygonObjectToChange.encode_text(text_buf);
+single_value->field_pointIndexOfThePointToReplace.encode_text(text_buf);
+single_value->field_newXposition.encode_text(text_buf);
+single_value->field_newYposition.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 @IsobusVTMessageTypes.ChangePolygonPointReq.");
+}
+}
+
+void ChangePolygonPointReq_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_vtfunction.decode_text(text_buf);
+single_value->field_objectIDofTheOutputPolygonObjectToChange.decode_text(text_buf);
+single_value->field_pointIndexOfThePointToReplace.decode_text(text_buf);
+single_value->field_newXposition.decode_text(text_buf);
+single_value->field_newYposition.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 ChangePolygonPointReq_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 @IsobusVTMessageTypes.ChangePolygonPointReq.");
+}
+}
+
+void ChangePolygonPointReq_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: {
+    ChangePolygonPointReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.ChangePolygonPointReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectIDofTheOutputPolygonObjectToChange().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) pointIndexOfThePointToReplace().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) newXposition().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) newYposition().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectIDofTheOutputPolygonObjectToChange")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofTheOutputPolygonObjectToChange().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(), "pointIndexOfThePointToReplace")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          pointIndexOfThePointToReplace().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(), "newXposition")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          newXposition().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(), "newYposition")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          newYposition().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 @IsobusVTMessageTypes.ChangePolygonPointReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangePolygonPointReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangePolygonPointReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePolygonPointReq");
+single_value->field_objectIDofTheOutputPolygonObjectToChange.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePolygonPointReq");
+single_value->field_pointIndexOfThePointToReplace.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePolygonPointReq");
+single_value->field_newXposition.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePolygonPointReq");
+single_value->field_newYposition.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePolygonPointReq");
+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 : "@IsobusVTMessageTypes.ChangePolygonPointReq");
+}
+
+boolean ChangePolygonPointReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangePolygonPointReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangePolygonScaleRes__ErrorCodes::ChangePolygonScaleRes__ErrorCodes()
+{
+}
+
+ChangePolygonScaleRes__ErrorCodes::ChangePolygonScaleRes__ErrorCodes(const BOOLEAN& par_invalidObjectID,
+    const BOOLEAN& par_reserved1,
+    const BOOLEAN& par_reserved2,
+    const BOOLEAN& par_reserved3,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7)
+  :   field_invalidObjectID(par_invalidObjectID),
+  field_reserved1(par_reserved1),
+  field_reserved2(par_reserved2),
+  field_reserved3(par_reserved3),
+  field_anyOtherError(par_anyOtherError),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7)
+{
+}
+
+ChangePolygonScaleRes__ErrorCodes::ChangePolygonScaleRes__ErrorCodes(const ChangePolygonScaleRes__ErrorCodes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes.");
+if (other_value.invalidObjectID().is_bound()) field_invalidObjectID = other_value.invalidObjectID();
+else field_invalidObjectID.clean_up();
+if (other_value.reserved1().is_bound()) field_reserved1 = other_value.reserved1();
+else field_reserved1.clean_up();
+if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+else field_reserved2.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+else field_anyOtherError.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+}
+
+void ChangePolygonScaleRes__ErrorCodes::clean_up()
+{
+field_invalidObjectID.clean_up();
+field_reserved1.clean_up();
+field_reserved2.clean_up();
+field_reserved3.clean_up();
+field_anyOtherError.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangePolygonScaleRes__ErrorCodes::get_descriptor() const { return &ChangePolygonScaleRes__ErrorCodes_descr_; }
+ChangePolygonScaleRes__ErrorCodes& ChangePolygonScaleRes__ErrorCodes::operator=(const ChangePolygonScaleRes__ErrorCodes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes.");
+  if (other_value.invalidObjectID().is_bound()) field_invalidObjectID = other_value.invalidObjectID();
+  else field_invalidObjectID.clean_up();
+  if (other_value.reserved1().is_bound()) field_reserved1 = other_value.reserved1();
+  else field_reserved1.clean_up();
+  if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+  else field_reserved2.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+  else field_anyOtherError.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+}
+return *this;
+}
+
+boolean ChangePolygonScaleRes__ErrorCodes::operator==(const ChangePolygonScaleRes__ErrorCodes& other_value) const
+{
+return field_invalidObjectID==other_value.field_invalidObjectID
+  && field_reserved1==other_value.field_reserved1
+  && field_reserved2==other_value.field_reserved2
+  && field_reserved3==other_value.field_reserved3
+  && field_anyOtherError==other_value.field_anyOtherError
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7;
+}
+
+boolean ChangePolygonScaleRes__ErrorCodes::is_bound() const
+{
+return (field_invalidObjectID.is_bound())
+  || (field_reserved1.is_bound())
+  || (field_reserved2.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_anyOtherError.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound());
+}
+boolean ChangePolygonScaleRes__ErrorCodes::is_value() const
+{
+return field_invalidObjectID.is_value()
+  && field_reserved1.is_value()
+  && field_reserved2.is_value()
+  && field_reserved3.is_value()
+  && field_anyOtherError.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value();
+}
+void ChangePolygonScaleRes__ErrorCodes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ invalidObjectID := ");
+field_invalidObjectID.log();
+TTCN_Logger::log_event_str(", reserved1 := ");
+field_reserved1.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangePolygonScaleRes__ErrorCodes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes has 8 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) invalidObjectID().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved1().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "invalidObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidObjectID().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(), "reserved1")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved1().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes");
+  }
+}
+
+void ChangePolygonScaleRes__ErrorCodes::set_implicit_omit()
+{
+if (invalidObjectID().is_bound()) invalidObjectID().set_implicit_omit();
+if (reserved1().is_bound()) reserved1().set_implicit_omit();
+if (reserved2().is_bound()) reserved2().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (anyOtherError().is_bound()) anyOtherError().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+}
+
+void ChangePolygonScaleRes__ErrorCodes::encode_text(Text_Buf& text_buf) const
+{
+field_invalidObjectID.encode_text(text_buf);
+field_reserved1.encode_text(text_buf);
+field_reserved2.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_anyOtherError.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+}
+
+void ChangePolygonScaleRes__ErrorCodes::decode_text(Text_Buf& text_buf)
+{
+field_invalidObjectID.decode_text(text_buf);
+field_reserved1.decode_text(text_buf);
+field_reserved2.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_anyOtherError.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+}
+
+void ChangePolygonScaleRes__ErrorCodes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangePolygonScaleRes__ErrorCodes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangePolygonScaleRes__ErrorCodes::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidObjectID.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved1.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved2.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_anyOtherError.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ChangePolygonScaleRes__ErrorCodes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_invalidObjectID.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved1.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved2.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved3.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_anyOtherError.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved5.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved6.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved7.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangePolygonScaleRes__ErrorCodes_template::single_value_struct {
+BOOLEAN_template field_invalidObjectID;
+BOOLEAN_template field_reserved1;
+BOOLEAN_template field_reserved2;
+BOOLEAN_template field_reserved3;
+BOOLEAN_template field_anyOtherError;
+BOOLEAN_template field_reserved5;
+BOOLEAN_template field_reserved6;
+BOOLEAN_template field_reserved7;
+};
+
+void ChangePolygonScaleRes__ErrorCodes_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_invalidObjectID = ANY_VALUE;
+single_value->field_reserved1 = ANY_VALUE;
+single_value->field_reserved2 = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_anyOtherError = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+}
+}
+}
+
+void ChangePolygonScaleRes__ErrorCodes_template::copy_value(const ChangePolygonScaleRes__ErrorCodes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.invalidObjectID().is_bound()) {
+  single_value->field_invalidObjectID = other_value.invalidObjectID();
+} else {
+  single_value->field_invalidObjectID.clean_up();
+}
+if (other_value.reserved1().is_bound()) {
+  single_value->field_reserved1 = other_value.reserved1();
+} else {
+  single_value->field_reserved1.clean_up();
+}
+if (other_value.reserved2().is_bound()) {
+  single_value->field_reserved2 = other_value.reserved2();
+} else {
+  single_value->field_reserved2.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.anyOtherError().is_bound()) {
+  single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+  single_value->field_anyOtherError.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangePolygonScaleRes__ErrorCodes_template::copy_template(const ChangePolygonScaleRes__ErrorCodes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.invalidObjectID().get_selection()) {
+single_value->field_invalidObjectID = other_value.invalidObjectID();
+} else {
+single_value->field_invalidObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved1().get_selection()) {
+single_value->field_reserved1 = other_value.reserved1();
+} else {
+single_value->field_reserved1.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved2().get_selection()) {
+single_value->field_reserved2 = other_value.reserved2();
+} else {
+single_value->field_reserved2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.anyOtherError().get_selection()) {
+single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+single_value->field_anyOtherError.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangePolygonScaleRes__ErrorCodes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangePolygonScaleRes__ErrorCodes_template::ChangePolygonScaleRes__ErrorCodes_template()
+{
+}
+
+ChangePolygonScaleRes__ErrorCodes_template::ChangePolygonScaleRes__ErrorCodes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangePolygonScaleRes__ErrorCodes_template::ChangePolygonScaleRes__ErrorCodes_template(const ChangePolygonScaleRes__ErrorCodes& other_value)
+{
+copy_value(other_value);
+}
+
+ChangePolygonScaleRes__ErrorCodes_template::ChangePolygonScaleRes__ErrorCodes_template(const OPTIONAL<ChangePolygonScaleRes__ErrorCodes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangePolygonScaleRes__ErrorCodes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes from an unbound optional field.");
+}
+}
+
+ChangePolygonScaleRes__ErrorCodes_template::ChangePolygonScaleRes__ErrorCodes_template(const ChangePolygonScaleRes__ErrorCodes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangePolygonScaleRes__ErrorCodes_template::~ChangePolygonScaleRes__ErrorCodes_template()
+{
+clean_up();
+}
+
+ChangePolygonScaleRes__ErrorCodes_template& ChangePolygonScaleRes__ErrorCodes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangePolygonScaleRes__ErrorCodes_template& ChangePolygonScaleRes__ErrorCodes_template::operator=(const ChangePolygonScaleRes__ErrorCodes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangePolygonScaleRes__ErrorCodes_template& ChangePolygonScaleRes__ErrorCodes_template::operator=(const OPTIONAL<ChangePolygonScaleRes__ErrorCodes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangePolygonScaleRes__ErrorCodes&)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 @IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes.");
+}
+return *this;
+}
+
+ChangePolygonScaleRes__ErrorCodes_template& ChangePolygonScaleRes__ErrorCodes_template::operator=(const ChangePolygonScaleRes__ErrorCodes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangePolygonScaleRes__ErrorCodes_template::match(const ChangePolygonScaleRes__ErrorCodes& 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.invalidObjectID().is_bound()) return FALSE;
+if(!single_value->field_invalidObjectID.match(other_value.invalidObjectID(), legacy))return FALSE;
+if(!other_value.reserved1().is_bound()) return FALSE;
+if(!single_value->field_reserved1.match(other_value.reserved1(), legacy))return FALSE;
+if(!other_value.reserved2().is_bound()) return FALSE;
+if(!single_value->field_reserved2.match(other_value.reserved2(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.anyOtherError().is_bound()) return FALSE;
+if(!single_value->field_anyOtherError.match(other_value.anyOtherError(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes.");
+}
+return FALSE;
+}
+
+boolean ChangePolygonScaleRes__ErrorCodes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_invalidObjectID.is_bound()
+
+ ||single_value->field_reserved1.is_bound()
+
+ ||single_value->field_reserved2.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_anyOtherError.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+;
+}
+
+boolean ChangePolygonScaleRes__ErrorCodes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_invalidObjectID.is_value()
+ &&single_value->field_reserved1.is_value()
+ &&single_value->field_reserved2.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_anyOtherError.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value();
+}
+
+void ChangePolygonScaleRes__ErrorCodes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangePolygonScaleRes__ErrorCodes ChangePolygonScaleRes__ErrorCodes_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 @IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes.");
+ChangePolygonScaleRes__ErrorCodes ret_val;
+if (single_value->field_invalidObjectID.is_bound()) {
+ret_val.invalidObjectID() = single_value->field_invalidObjectID.valueof();
+}
+if (single_value->field_reserved1.is_bound()) {
+ret_val.reserved1() = single_value->field_reserved1.valueof();
+}
+if (single_value->field_reserved2.is_bound()) {
+ret_val.reserved2() = single_value->field_reserved2.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_anyOtherError.is_bound()) {
+ret_val.anyOtherError() = single_value->field_anyOtherError.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+return ret_val;
+}
+
+void ChangePolygonScaleRes__ErrorCodes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangePolygonScaleRes__ErrorCodes_template[list_length];
+}
+
+ChangePolygonScaleRes__ErrorCodes_template& ChangePolygonScaleRes__ErrorCodes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& ChangePolygonScaleRes__ErrorCodes_template::invalidObjectID()
+{
+set_specific();
+return single_value->field_invalidObjectID;
+}
+
+const BOOLEAN_template& ChangePolygonScaleRes__ErrorCodes_template::invalidObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidObjectID of a non-specific template of type @IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes.");
+return single_value->field_invalidObjectID;
+}
+
+BOOLEAN_template& ChangePolygonScaleRes__ErrorCodes_template::reserved1()
+{
+set_specific();
+return single_value->field_reserved1;
+}
+
+const BOOLEAN_template& ChangePolygonScaleRes__ErrorCodes_template::reserved1() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved1 of a non-specific template of type @IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes.");
+return single_value->field_reserved1;
+}
+
+BOOLEAN_template& ChangePolygonScaleRes__ErrorCodes_template::reserved2()
+{
+set_specific();
+return single_value->field_reserved2;
+}
+
+const BOOLEAN_template& ChangePolygonScaleRes__ErrorCodes_template::reserved2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved2 of a non-specific template of type @IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes.");
+return single_value->field_reserved2;
+}
+
+BOOLEAN_template& ChangePolygonScaleRes__ErrorCodes_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const BOOLEAN_template& ChangePolygonScaleRes__ErrorCodes_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes.");
+return single_value->field_reserved3;
+}
+
+BOOLEAN_template& ChangePolygonScaleRes__ErrorCodes_template::anyOtherError()
+{
+set_specific();
+return single_value->field_anyOtherError;
+}
+
+const BOOLEAN_template& ChangePolygonScaleRes__ErrorCodes_template::anyOtherError() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field anyOtherError of a non-specific template of type @IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes.");
+return single_value->field_anyOtherError;
+}
+
+BOOLEAN_template& ChangePolygonScaleRes__ErrorCodes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const BOOLEAN_template& ChangePolygonScaleRes__ErrorCodes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes.");
+return single_value->field_reserved5;
+}
+
+BOOLEAN_template& ChangePolygonScaleRes__ErrorCodes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const BOOLEAN_template& ChangePolygonScaleRes__ErrorCodes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes.");
+return single_value->field_reserved6;
+}
+
+BOOLEAN_template& ChangePolygonScaleRes__ErrorCodes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const BOOLEAN_template& ChangePolygonScaleRes__ErrorCodes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes.");
+return single_value->field_reserved7;
+}
+
+int ChangePolygonScaleRes__ErrorCodes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes 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 @IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes.");
+  }
+  return 0;
+}
+
+void ChangePolygonScaleRes__ErrorCodes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ invalidObjectID := ");
+single_value->field_invalidObjectID.log();
+TTCN_Logger::log_event_str(", reserved1 := ");
+single_value->field_reserved1.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangePolygonScaleRes__ErrorCodes_template::log_match(const ChangePolygonScaleRes__ErrorCodes& 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_invalidObjectID.match(match_value.invalidObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidObjectID");
+single_value->field_invalidObjectID.log_match(match_value.invalidObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved1.match(match_value.reserved1(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved1");
+single_value->field_reserved1.log_match(match_value.reserved1(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved2.match(match_value.reserved2(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved2");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_anyOtherError.match(match_value.anyOtherError(), legacy)){
+TTCN_Logger::log_logmatch_info(".anyOtherError");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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("{ invalidObjectID := ");
+single_value->field_invalidObjectID.log_match(match_value.invalidObjectID(), legacy);
+TTCN_Logger::log_event_str(", reserved1 := ");
+single_value->field_reserved1.log_match(match_value.reserved1(), legacy);
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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 ChangePolygonScaleRes__ErrorCodes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_invalidObjectID.encode_text(text_buf);
+single_value->field_reserved1.encode_text(text_buf);
+single_value->field_reserved2.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_anyOtherError.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.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 @IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes.");
+}
+}
+
+void ChangePolygonScaleRes__ErrorCodes_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_invalidObjectID.decode_text(text_buf);
+single_value->field_reserved1.decode_text(text_buf);
+single_value->field_reserved2.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_anyOtherError.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.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 ChangePolygonScaleRes__ErrorCodes_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 @IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes.");
+}
+}
+
+void ChangePolygonScaleRes__ErrorCodes_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: {
+    ChangePolygonScaleRes__ErrorCodes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes has 8 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) invalidObjectID().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved1().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "invalidObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidObjectID().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(), "reserved1")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved1().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangePolygonScaleRes__ErrorCodes_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_invalidObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes");
+single_value->field_reserved1.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes");
+single_value->field_reserved2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes");
+single_value->field_anyOtherError.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes");
+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 : "@IsobusVTMessageTypes.ChangePolygonScaleRes_ErrorCodes");
+}
+
+boolean ChangePolygonScaleRes__ErrorCodes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangePolygonScaleRes__ErrorCodes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangePolygonScaleRes::ChangePolygonScaleRes()
+{
+}
+
+ChangePolygonScaleRes::ChangePolygonScaleRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectIDofaOutputPolygonObjectToScale,
+    const INTEGER& par_newWidthAttribute,
+    const INTEGER& par_newHeightAttribute,
+    const ChangePolygonScaleRes__ErrorCodes& par_errorCodes)
+  :   field_vtfunction(par_vtfunction),
+  field_objectIDofaOutputPolygonObjectToScale(par_objectIDofaOutputPolygonObjectToScale),
+  field_newWidthAttribute(par_newWidthAttribute),
+  field_newHeightAttribute(par_newHeightAttribute),
+  field_errorCodes(par_errorCodes)
+{
+}
+
+ChangePolygonScaleRes::ChangePolygonScaleRes(const ChangePolygonScaleRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangePolygonScaleRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectIDofaOutputPolygonObjectToScale().is_bound()) field_objectIDofaOutputPolygonObjectToScale = other_value.objectIDofaOutputPolygonObjectToScale();
+else field_objectIDofaOutputPolygonObjectToScale.clean_up();
+if (other_value.newWidthAttribute().is_bound()) field_newWidthAttribute = other_value.newWidthAttribute();
+else field_newWidthAttribute.clean_up();
+if (other_value.newHeightAttribute().is_bound()) field_newHeightAttribute = other_value.newHeightAttribute();
+else field_newHeightAttribute.clean_up();
+if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+else field_errorCodes.clean_up();
+}
+
+void ChangePolygonScaleRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectIDofaOutputPolygonObjectToScale.clean_up();
+field_newWidthAttribute.clean_up();
+field_newHeightAttribute.clean_up();
+field_errorCodes.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangePolygonScaleRes::get_descriptor() const { return &ChangePolygonScaleRes_descr_; }
+ChangePolygonScaleRes& ChangePolygonScaleRes::operator=(const ChangePolygonScaleRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangePolygonScaleRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectIDofaOutputPolygonObjectToScale().is_bound()) field_objectIDofaOutputPolygonObjectToScale = other_value.objectIDofaOutputPolygonObjectToScale();
+  else field_objectIDofaOutputPolygonObjectToScale.clean_up();
+  if (other_value.newWidthAttribute().is_bound()) field_newWidthAttribute = other_value.newWidthAttribute();
+  else field_newWidthAttribute.clean_up();
+  if (other_value.newHeightAttribute().is_bound()) field_newHeightAttribute = other_value.newHeightAttribute();
+  else field_newHeightAttribute.clean_up();
+  if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+  else field_errorCodes.clean_up();
+}
+return *this;
+}
+
+boolean ChangePolygonScaleRes::operator==(const ChangePolygonScaleRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectIDofaOutputPolygonObjectToScale==other_value.field_objectIDofaOutputPolygonObjectToScale
+  && field_newWidthAttribute==other_value.field_newWidthAttribute
+  && field_newHeightAttribute==other_value.field_newHeightAttribute
+  && field_errorCodes==other_value.field_errorCodes;
+}
+
+boolean ChangePolygonScaleRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectIDofaOutputPolygonObjectToScale.is_bound())
+  || (field_newWidthAttribute.is_bound())
+  || (field_newHeightAttribute.is_bound())
+  || (field_errorCodes.is_bound());
+}
+boolean ChangePolygonScaleRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectIDofaOutputPolygonObjectToScale.is_value()
+  && field_newWidthAttribute.is_value()
+  && field_newHeightAttribute.is_value()
+  && field_errorCodes.is_value();
+}
+void ChangePolygonScaleRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectIDofaOutputPolygonObjectToScale := ");
+field_objectIDofaOutputPolygonObjectToScale.log();
+TTCN_Logger::log_event_str(", newWidthAttribute := ");
+field_newWidthAttribute.log();
+TTCN_Logger::log_event_str(", newHeightAttribute := ");
+field_newHeightAttribute.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+field_errorCodes.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangePolygonScaleRes::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 @IsobusVTMessageTypes.ChangePolygonScaleRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectIDofaOutputPolygonObjectToScale().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) newWidthAttribute().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) newHeightAttribute().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) errorCodes().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectIDofaOutputPolygonObjectToScale")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofaOutputPolygonObjectToScale().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(), "newWidthAttribute")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          newWidthAttribute().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(), "newHeightAttribute")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          newHeightAttribute().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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 @IsobusVTMessageTypes.ChangePolygonScaleRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangePolygonScaleRes");
+  }
+}
+
+void ChangePolygonScaleRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectIDofaOutputPolygonObjectToScale().is_bound()) objectIDofaOutputPolygonObjectToScale().set_implicit_omit();
+if (newWidthAttribute().is_bound()) newWidthAttribute().set_implicit_omit();
+if (newHeightAttribute().is_bound()) newHeightAttribute().set_implicit_omit();
+if (errorCodes().is_bound()) errorCodes().set_implicit_omit();
+}
+
+void ChangePolygonScaleRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectIDofaOutputPolygonObjectToScale.encode_text(text_buf);
+field_newWidthAttribute.encode_text(text_buf);
+field_newHeightAttribute.encode_text(text_buf);
+field_errorCodes.encode_text(text_buf);
+}
+
+void ChangePolygonScaleRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectIDofaOutputPolygonObjectToScale.decode_text(text_buf);
+field_newWidthAttribute.decode_text(text_buf);
+field_newHeightAttribute.decode_text(text_buf);
+field_errorCodes.decode_text(text_buf);
+}
+
+void ChangePolygonScaleRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangePolygonScaleRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangePolygonScaleRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectIDofaOutputPolygonObjectToScale.RAW_decode(ValidObjectID_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, WidthType_descr_.raw->forceomit);
+  decoded_field_length = field_newWidthAttribute.RAW_decode(WidthType_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, HeightType_descr_.raw->forceomit);
+  decoded_field_length = field_newHeightAttribute.RAW_decode(HeightType_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, ChangePolygonScaleRes__ErrorCodes_descr_.raw->forceomit);
+  decoded_field_length = field_errorCodes.RAW_decode(ChangePolygonScaleRes__ErrorCodes_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 ChangePolygonScaleRes::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, WidthType_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, HeightType_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, ChangePolygonScaleRes__ErrorCodes_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectIDofaOutputPolygonObjectToScale.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_newWidthAttribute.RAW_encode(WidthType_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_newHeightAttribute.RAW_encode(HeightType_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_errorCodes.RAW_encode(ChangePolygonScaleRes__ErrorCodes_descr_, *myleaf.body.node.nodes[4]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangePolygonScaleRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectIDofaOutputPolygonObjectToScale;
+INTEGER_template field_newWidthAttribute;
+INTEGER_template field_newHeightAttribute;
+ChangePolygonScaleRes__ErrorCodes_template field_errorCodes;
+};
+
+void ChangePolygonScaleRes_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_vtfunction = ANY_VALUE;
+single_value->field_objectIDofaOutputPolygonObjectToScale = ANY_VALUE;
+single_value->field_newWidthAttribute = ANY_VALUE;
+single_value->field_newHeightAttribute = ANY_VALUE;
+single_value->field_errorCodes = ANY_VALUE;
+}
+}
+}
+
+void ChangePolygonScaleRes_template::copy_value(const ChangePolygonScaleRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectIDofaOutputPolygonObjectToScale().is_bound()) {
+  single_value->field_objectIDofaOutputPolygonObjectToScale = other_value.objectIDofaOutputPolygonObjectToScale();
+} else {
+  single_value->field_objectIDofaOutputPolygonObjectToScale.clean_up();
+}
+if (other_value.newWidthAttribute().is_bound()) {
+  single_value->field_newWidthAttribute = other_value.newWidthAttribute();
+} else {
+  single_value->field_newWidthAttribute.clean_up();
+}
+if (other_value.newHeightAttribute().is_bound()) {
+  single_value->field_newHeightAttribute = other_value.newHeightAttribute();
+} else {
+  single_value->field_newHeightAttribute.clean_up();
+}
+if (other_value.errorCodes().is_bound()) {
+  single_value->field_errorCodes = other_value.errorCodes();
+} else {
+  single_value->field_errorCodes.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangePolygonScaleRes_template::copy_template(const ChangePolygonScaleRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectIDofaOutputPolygonObjectToScale().get_selection()) {
+single_value->field_objectIDofaOutputPolygonObjectToScale = other_value.objectIDofaOutputPolygonObjectToScale();
+} else {
+single_value->field_objectIDofaOutputPolygonObjectToScale.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.newWidthAttribute().get_selection()) {
+single_value->field_newWidthAttribute = other_value.newWidthAttribute();
+} else {
+single_value->field_newWidthAttribute.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.newHeightAttribute().get_selection()) {
+single_value->field_newHeightAttribute = other_value.newHeightAttribute();
+} else {
+single_value->field_newHeightAttribute.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.errorCodes().get_selection()) {
+single_value->field_errorCodes = other_value.errorCodes();
+} else {
+single_value->field_errorCodes.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangePolygonScaleRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangePolygonScaleRes.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangePolygonScaleRes_template::ChangePolygonScaleRes_template()
+{
+}
+
+ChangePolygonScaleRes_template::ChangePolygonScaleRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangePolygonScaleRes_template::ChangePolygonScaleRes_template(const ChangePolygonScaleRes& other_value)
+{
+copy_value(other_value);
+}
+
+ChangePolygonScaleRes_template::ChangePolygonScaleRes_template(const OPTIONAL<ChangePolygonScaleRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangePolygonScaleRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangePolygonScaleRes from an unbound optional field.");
+}
+}
+
+ChangePolygonScaleRes_template::ChangePolygonScaleRes_template(const ChangePolygonScaleRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangePolygonScaleRes_template::~ChangePolygonScaleRes_template()
+{
+clean_up();
+}
+
+ChangePolygonScaleRes_template& ChangePolygonScaleRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangePolygonScaleRes_template& ChangePolygonScaleRes_template::operator=(const ChangePolygonScaleRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangePolygonScaleRes_template& ChangePolygonScaleRes_template::operator=(const OPTIONAL<ChangePolygonScaleRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangePolygonScaleRes&)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 @IsobusVTMessageTypes.ChangePolygonScaleRes.");
+}
+return *this;
+}
+
+ChangePolygonScaleRes_template& ChangePolygonScaleRes_template::operator=(const ChangePolygonScaleRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangePolygonScaleRes_template::match(const ChangePolygonScaleRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectIDofaOutputPolygonObjectToScale().is_bound()) return FALSE;
+if(!single_value->field_objectIDofaOutputPolygonObjectToScale.match(other_value.objectIDofaOutputPolygonObjectToScale(), legacy))return FALSE;
+if(!other_value.newWidthAttribute().is_bound()) return FALSE;
+if(!single_value->field_newWidthAttribute.match(other_value.newWidthAttribute(), legacy))return FALSE;
+if(!other_value.newHeightAttribute().is_bound()) return FALSE;
+if(!single_value->field_newHeightAttribute.match(other_value.newHeightAttribute(), legacy))return FALSE;
+if(!other_value.errorCodes().is_bound()) return FALSE;
+if(!single_value->field_errorCodes.match(other_value.errorCodes(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangePolygonScaleRes.");
+}
+return FALSE;
+}
+
+boolean ChangePolygonScaleRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectIDofaOutputPolygonObjectToScale.is_bound()
+
+ ||single_value->field_newWidthAttribute.is_bound()
+
+ ||single_value->field_newHeightAttribute.is_bound()
+
+ ||single_value->field_errorCodes.is_bound()
+;
+}
+
+boolean ChangePolygonScaleRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectIDofaOutputPolygonObjectToScale.is_value()
+ &&single_value->field_newWidthAttribute.is_value()
+ &&single_value->field_newHeightAttribute.is_value()
+ &&single_value->field_errorCodes.is_value();
+}
+
+void ChangePolygonScaleRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangePolygonScaleRes ChangePolygonScaleRes_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 @IsobusVTMessageTypes.ChangePolygonScaleRes.");
+ChangePolygonScaleRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectIDofaOutputPolygonObjectToScale.is_bound()) {
+ret_val.objectIDofaOutputPolygonObjectToScale() = single_value->field_objectIDofaOutputPolygonObjectToScale.valueof();
+}
+if (single_value->field_newWidthAttribute.is_bound()) {
+ret_val.newWidthAttribute() = single_value->field_newWidthAttribute.valueof();
+}
+if (single_value->field_newHeightAttribute.is_bound()) {
+ret_val.newHeightAttribute() = single_value->field_newHeightAttribute.valueof();
+}
+if (single_value->field_errorCodes.is_bound()) {
+ret_val.errorCodes() = single_value->field_errorCodes.valueof();
+}
+return ret_val;
+}
+
+void ChangePolygonScaleRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangePolygonScaleRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangePolygonScaleRes_template[list_length];
+}
+
+ChangePolygonScaleRes_template& ChangePolygonScaleRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangePolygonScaleRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangePolygonScaleRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ChangePolygonScaleRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ChangePolygonScaleRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ChangePolygonScaleRes.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& ChangePolygonScaleRes_template::objectIDofaOutputPolygonObjectToScale()
+{
+set_specific();
+return single_value->field_objectIDofaOutputPolygonObjectToScale;
+}
+
+const INTEGER_template& ChangePolygonScaleRes_template::objectIDofaOutputPolygonObjectToScale() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectIDofaOutputPolygonObjectToScale of a non-specific template of type @IsobusVTMessageTypes.ChangePolygonScaleRes.");
+return single_value->field_objectIDofaOutputPolygonObjectToScale;
+}
+
+INTEGER_template& ChangePolygonScaleRes_template::newWidthAttribute()
+{
+set_specific();
+return single_value->field_newWidthAttribute;
+}
+
+const INTEGER_template& ChangePolygonScaleRes_template::newWidthAttribute() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field newWidthAttribute of a non-specific template of type @IsobusVTMessageTypes.ChangePolygonScaleRes.");
+return single_value->field_newWidthAttribute;
+}
+
+INTEGER_template& ChangePolygonScaleRes_template::newHeightAttribute()
+{
+set_specific();
+return single_value->field_newHeightAttribute;
+}
+
+const INTEGER_template& ChangePolygonScaleRes_template::newHeightAttribute() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field newHeightAttribute of a non-specific template of type @IsobusVTMessageTypes.ChangePolygonScaleRes.");
+return single_value->field_newHeightAttribute;
+}
+
+ChangePolygonScaleRes__ErrorCodes_template& ChangePolygonScaleRes_template::errorCodes()
+{
+set_specific();
+return single_value->field_errorCodes;
+}
+
+const ChangePolygonScaleRes__ErrorCodes_template& ChangePolygonScaleRes_template::errorCodes() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field errorCodes of a non-specific template of type @IsobusVTMessageTypes.ChangePolygonScaleRes.");
+return single_value->field_errorCodes;
+}
+
+int ChangePolygonScaleRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangePolygonScaleRes 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 @IsobusVTMessageTypes.ChangePolygonScaleRes 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 @IsobusVTMessageTypes.ChangePolygonScaleRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangePolygonScaleRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangePolygonScaleRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangePolygonScaleRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangePolygonScaleRes.");
+  }
+  return 0;
+}
+
+void ChangePolygonScaleRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectIDofaOutputPolygonObjectToScale := ");
+single_value->field_objectIDofaOutputPolygonObjectToScale.log();
+TTCN_Logger::log_event_str(", newWidthAttribute := ");
+single_value->field_newWidthAttribute.log();
+TTCN_Logger::log_event_str(", newHeightAttribute := ");
+single_value->field_newHeightAttribute.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangePolygonScaleRes_template::log_match(const ChangePolygonScaleRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectIDofaOutputPolygonObjectToScale.match(match_value.objectIDofaOutputPolygonObjectToScale(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectIDofaOutputPolygonObjectToScale");
+single_value->field_objectIDofaOutputPolygonObjectToScale.log_match(match_value.objectIDofaOutputPolygonObjectToScale(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_newWidthAttribute.match(match_value.newWidthAttribute(), legacy)){
+TTCN_Logger::log_logmatch_info(".newWidthAttribute");
+single_value->field_newWidthAttribute.log_match(match_value.newWidthAttribute(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_newHeightAttribute.match(match_value.newHeightAttribute(), legacy)){
+TTCN_Logger::log_logmatch_info(".newHeightAttribute");
+single_value->field_newHeightAttribute.log_match(match_value.newHeightAttribute(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_errorCodes.match(match_value.errorCodes(), legacy)){
+TTCN_Logger::log_logmatch_info(".errorCodes");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectIDofaOutputPolygonObjectToScale := ");
+single_value->field_objectIDofaOutputPolygonObjectToScale.log_match(match_value.objectIDofaOutputPolygonObjectToScale(), legacy);
+TTCN_Logger::log_event_str(", newWidthAttribute := ");
+single_value->field_newWidthAttribute.log_match(match_value.newWidthAttribute(), legacy);
+TTCN_Logger::log_event_str(", newHeightAttribute := ");
+single_value->field_newHeightAttribute.log_match(match_value.newHeightAttribute(), legacy);
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), 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 ChangePolygonScaleRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectIDofaOutputPolygonObjectToScale.encode_text(text_buf);
+single_value->field_newWidthAttribute.encode_text(text_buf);
+single_value->field_newHeightAttribute.encode_text(text_buf);
+single_value->field_errorCodes.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 @IsobusVTMessageTypes.ChangePolygonScaleRes.");
+}
+}
+
+void ChangePolygonScaleRes_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_vtfunction.decode_text(text_buf);
+single_value->field_objectIDofaOutputPolygonObjectToScale.decode_text(text_buf);
+single_value->field_newWidthAttribute.decode_text(text_buf);
+single_value->field_newHeightAttribute.decode_text(text_buf);
+single_value->field_errorCodes.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 ChangePolygonScaleRes_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 @IsobusVTMessageTypes.ChangePolygonScaleRes.");
+}
+}
+
+void ChangePolygonScaleRes_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: {
+    ChangePolygonScaleRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.ChangePolygonScaleRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectIDofaOutputPolygonObjectToScale().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) newWidthAttribute().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) newHeightAttribute().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) errorCodes().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectIDofaOutputPolygonObjectToScale")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofaOutputPolygonObjectToScale().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(), "newWidthAttribute")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          newWidthAttribute().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(), "newHeightAttribute")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          newHeightAttribute().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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 @IsobusVTMessageTypes.ChangePolygonScaleRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangePolygonScaleRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangePolygonScaleRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePolygonScaleRes");
+single_value->field_objectIDofaOutputPolygonObjectToScale.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePolygonScaleRes");
+single_value->field_newWidthAttribute.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePolygonScaleRes");
+single_value->field_newHeightAttribute.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePolygonScaleRes");
+single_value->field_errorCodes.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePolygonScaleRes");
+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 : "@IsobusVTMessageTypes.ChangePolygonScaleRes");
+}
+
+boolean ChangePolygonScaleRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangePolygonScaleRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangePolygonScaleReq::ChangePolygonScaleReq()
+{
+}
+
+ChangePolygonScaleReq::ChangePolygonScaleReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectIDofaOutputPolygonObjectToScale,
+    const INTEGER& par_newWidthAttribute,
+    const INTEGER& par_newHeightAttribute,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_objectIDofaOutputPolygonObjectToScale(par_objectIDofaOutputPolygonObjectToScale),
+  field_newWidthAttribute(par_newWidthAttribute),
+  field_newHeightAttribute(par_newHeightAttribute),
+  field_reserved8(par_reserved8)
+{
+}
+
+ChangePolygonScaleReq::ChangePolygonScaleReq(const ChangePolygonScaleReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangePolygonScaleReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectIDofaOutputPolygonObjectToScale().is_bound()) field_objectIDofaOutputPolygonObjectToScale = other_value.objectIDofaOutputPolygonObjectToScale();
+else field_objectIDofaOutputPolygonObjectToScale.clean_up();
+if (other_value.newWidthAttribute().is_bound()) field_newWidthAttribute = other_value.newWidthAttribute();
+else field_newWidthAttribute.clean_up();
+if (other_value.newHeightAttribute().is_bound()) field_newHeightAttribute = other_value.newHeightAttribute();
+else field_newHeightAttribute.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void ChangePolygonScaleReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectIDofaOutputPolygonObjectToScale.clean_up();
+field_newWidthAttribute.clean_up();
+field_newHeightAttribute.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangePolygonScaleReq::get_descriptor() const { return &ChangePolygonScaleReq_descr_; }
+ChangePolygonScaleReq& ChangePolygonScaleReq::operator=(const ChangePolygonScaleReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangePolygonScaleReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectIDofaOutputPolygonObjectToScale().is_bound()) field_objectIDofaOutputPolygonObjectToScale = other_value.objectIDofaOutputPolygonObjectToScale();
+  else field_objectIDofaOutputPolygonObjectToScale.clean_up();
+  if (other_value.newWidthAttribute().is_bound()) field_newWidthAttribute = other_value.newWidthAttribute();
+  else field_newWidthAttribute.clean_up();
+  if (other_value.newHeightAttribute().is_bound()) field_newHeightAttribute = other_value.newHeightAttribute();
+  else field_newHeightAttribute.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean ChangePolygonScaleReq::operator==(const ChangePolygonScaleReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectIDofaOutputPolygonObjectToScale==other_value.field_objectIDofaOutputPolygonObjectToScale
+  && field_newWidthAttribute==other_value.field_newWidthAttribute
+  && field_newHeightAttribute==other_value.field_newHeightAttribute
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean ChangePolygonScaleReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectIDofaOutputPolygonObjectToScale.is_bound())
+  || (field_newWidthAttribute.is_bound())
+  || (field_newHeightAttribute.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean ChangePolygonScaleReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectIDofaOutputPolygonObjectToScale.is_value()
+  && field_newWidthAttribute.is_value()
+  && field_newHeightAttribute.is_value()
+  && field_reserved8.is_value();
+}
+void ChangePolygonScaleReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectIDofaOutputPolygonObjectToScale := ");
+field_objectIDofaOutputPolygonObjectToScale.log();
+TTCN_Logger::log_event_str(", newWidthAttribute := ");
+field_newWidthAttribute.log();
+TTCN_Logger::log_event_str(", newHeightAttribute := ");
+field_newHeightAttribute.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangePolygonScaleReq::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 @IsobusVTMessageTypes.ChangePolygonScaleReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectIDofaOutputPolygonObjectToScale().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) newWidthAttribute().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) newHeightAttribute().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectIDofaOutputPolygonObjectToScale")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofaOutputPolygonObjectToScale().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(), "newWidthAttribute")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          newWidthAttribute().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(), "newHeightAttribute")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          newHeightAttribute().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangePolygonScaleReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangePolygonScaleReq");
+  }
+}
+
+void ChangePolygonScaleReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectIDofaOutputPolygonObjectToScale().is_bound()) objectIDofaOutputPolygonObjectToScale().set_implicit_omit();
+if (newWidthAttribute().is_bound()) newWidthAttribute().set_implicit_omit();
+if (newHeightAttribute().is_bound()) newHeightAttribute().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void ChangePolygonScaleReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectIDofaOutputPolygonObjectToScale.encode_text(text_buf);
+field_newWidthAttribute.encode_text(text_buf);
+field_newHeightAttribute.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void ChangePolygonScaleReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectIDofaOutputPolygonObjectToScale.decode_text(text_buf);
+field_newWidthAttribute.decode_text(text_buf);
+field_newHeightAttribute.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void ChangePolygonScaleReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangePolygonScaleReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangePolygonScaleReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectIDofaOutputPolygonObjectToScale.RAW_decode(ValidObjectID_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, WidthType_descr_.raw->forceomit);
+  decoded_field_length = field_newWidthAttribute.RAW_decode(WidthType_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, HeightType_descr_.raw->forceomit);
+  decoded_field_length = field_newHeightAttribute.RAW_decode(HeightType_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, ChangePolygonScaleReq_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(ChangePolygonScaleReq_reserved8_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 ChangePolygonScaleReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, WidthType_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, HeightType_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, ChangePolygonScaleReq_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectIDofaOutputPolygonObjectToScale.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_newWidthAttribute.RAW_encode(WidthType_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_newHeightAttribute.RAW_encode(HeightType_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved8.RAW_encode(ChangePolygonScaleReq_reserved8_descr_, *myleaf.body.node.nodes[4]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangePolygonScaleReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectIDofaOutputPolygonObjectToScale;
+INTEGER_template field_newWidthAttribute;
+INTEGER_template field_newHeightAttribute;
+OCTETSTRING_template field_reserved8;
+};
+
+void ChangePolygonScaleReq_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_vtfunction = ANY_VALUE;
+single_value->field_objectIDofaOutputPolygonObjectToScale = ANY_VALUE;
+single_value->field_newWidthAttribute = ANY_VALUE;
+single_value->field_newHeightAttribute = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void ChangePolygonScaleReq_template::copy_value(const ChangePolygonScaleReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectIDofaOutputPolygonObjectToScale().is_bound()) {
+  single_value->field_objectIDofaOutputPolygonObjectToScale = other_value.objectIDofaOutputPolygonObjectToScale();
+} else {
+  single_value->field_objectIDofaOutputPolygonObjectToScale.clean_up();
+}
+if (other_value.newWidthAttribute().is_bound()) {
+  single_value->field_newWidthAttribute = other_value.newWidthAttribute();
+} else {
+  single_value->field_newWidthAttribute.clean_up();
+}
+if (other_value.newHeightAttribute().is_bound()) {
+  single_value->field_newHeightAttribute = other_value.newHeightAttribute();
+} else {
+  single_value->field_newHeightAttribute.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangePolygonScaleReq_template::copy_template(const ChangePolygonScaleReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectIDofaOutputPolygonObjectToScale().get_selection()) {
+single_value->field_objectIDofaOutputPolygonObjectToScale = other_value.objectIDofaOutputPolygonObjectToScale();
+} else {
+single_value->field_objectIDofaOutputPolygonObjectToScale.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.newWidthAttribute().get_selection()) {
+single_value->field_newWidthAttribute = other_value.newWidthAttribute();
+} else {
+single_value->field_newWidthAttribute.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.newHeightAttribute().get_selection()) {
+single_value->field_newHeightAttribute = other_value.newHeightAttribute();
+} else {
+single_value->field_newHeightAttribute.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangePolygonScaleReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangePolygonScaleReq.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangePolygonScaleReq_template::ChangePolygonScaleReq_template()
+{
+}
+
+ChangePolygonScaleReq_template::ChangePolygonScaleReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangePolygonScaleReq_template::ChangePolygonScaleReq_template(const ChangePolygonScaleReq& other_value)
+{
+copy_value(other_value);
+}
+
+ChangePolygonScaleReq_template::ChangePolygonScaleReq_template(const OPTIONAL<ChangePolygonScaleReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangePolygonScaleReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangePolygonScaleReq from an unbound optional field.");
+}
+}
+
+ChangePolygonScaleReq_template::ChangePolygonScaleReq_template(const ChangePolygonScaleReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangePolygonScaleReq_template::~ChangePolygonScaleReq_template()
+{
+clean_up();
+}
+
+ChangePolygonScaleReq_template& ChangePolygonScaleReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangePolygonScaleReq_template& ChangePolygonScaleReq_template::operator=(const ChangePolygonScaleReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangePolygonScaleReq_template& ChangePolygonScaleReq_template::operator=(const OPTIONAL<ChangePolygonScaleReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangePolygonScaleReq&)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 @IsobusVTMessageTypes.ChangePolygonScaleReq.");
+}
+return *this;
+}
+
+ChangePolygonScaleReq_template& ChangePolygonScaleReq_template::operator=(const ChangePolygonScaleReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangePolygonScaleReq_template::match(const ChangePolygonScaleReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectIDofaOutputPolygonObjectToScale().is_bound()) return FALSE;
+if(!single_value->field_objectIDofaOutputPolygonObjectToScale.match(other_value.objectIDofaOutputPolygonObjectToScale(), legacy))return FALSE;
+if(!other_value.newWidthAttribute().is_bound()) return FALSE;
+if(!single_value->field_newWidthAttribute.match(other_value.newWidthAttribute(), legacy))return FALSE;
+if(!other_value.newHeightAttribute().is_bound()) return FALSE;
+if(!single_value->field_newHeightAttribute.match(other_value.newHeightAttribute(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangePolygonScaleReq.");
+}
+return FALSE;
+}
+
+boolean ChangePolygonScaleReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectIDofaOutputPolygonObjectToScale.is_bound()
+
+ ||single_value->field_newWidthAttribute.is_bound()
+
+ ||single_value->field_newHeightAttribute.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean ChangePolygonScaleReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectIDofaOutputPolygonObjectToScale.is_value()
+ &&single_value->field_newWidthAttribute.is_value()
+ &&single_value->field_newHeightAttribute.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void ChangePolygonScaleReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangePolygonScaleReq ChangePolygonScaleReq_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 @IsobusVTMessageTypes.ChangePolygonScaleReq.");
+ChangePolygonScaleReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectIDofaOutputPolygonObjectToScale.is_bound()) {
+ret_val.objectIDofaOutputPolygonObjectToScale() = single_value->field_objectIDofaOutputPolygonObjectToScale.valueof();
+}
+if (single_value->field_newWidthAttribute.is_bound()) {
+ret_val.newWidthAttribute() = single_value->field_newWidthAttribute.valueof();
+}
+if (single_value->field_newHeightAttribute.is_bound()) {
+ret_val.newHeightAttribute() = single_value->field_newHeightAttribute.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void ChangePolygonScaleReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangePolygonScaleReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangePolygonScaleReq_template[list_length];
+}
+
+ChangePolygonScaleReq_template& ChangePolygonScaleReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangePolygonScaleReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangePolygonScaleReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ChangePolygonScaleReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ChangePolygonScaleReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ChangePolygonScaleReq.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& ChangePolygonScaleReq_template::objectIDofaOutputPolygonObjectToScale()
+{
+set_specific();
+return single_value->field_objectIDofaOutputPolygonObjectToScale;
+}
+
+const INTEGER_template& ChangePolygonScaleReq_template::objectIDofaOutputPolygonObjectToScale() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectIDofaOutputPolygonObjectToScale of a non-specific template of type @IsobusVTMessageTypes.ChangePolygonScaleReq.");
+return single_value->field_objectIDofaOutputPolygonObjectToScale;
+}
+
+INTEGER_template& ChangePolygonScaleReq_template::newWidthAttribute()
+{
+set_specific();
+return single_value->field_newWidthAttribute;
+}
+
+const INTEGER_template& ChangePolygonScaleReq_template::newWidthAttribute() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field newWidthAttribute of a non-specific template of type @IsobusVTMessageTypes.ChangePolygonScaleReq.");
+return single_value->field_newWidthAttribute;
+}
+
+INTEGER_template& ChangePolygonScaleReq_template::newHeightAttribute()
+{
+set_specific();
+return single_value->field_newHeightAttribute;
+}
+
+const INTEGER_template& ChangePolygonScaleReq_template::newHeightAttribute() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field newHeightAttribute of a non-specific template of type @IsobusVTMessageTypes.ChangePolygonScaleReq.");
+return single_value->field_newHeightAttribute;
+}
+
+OCTETSTRING_template& ChangePolygonScaleReq_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& ChangePolygonScaleReq_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.ChangePolygonScaleReq.");
+return single_value->field_reserved8;
+}
+
+int ChangePolygonScaleReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangePolygonScaleReq 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 @IsobusVTMessageTypes.ChangePolygonScaleReq 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 @IsobusVTMessageTypes.ChangePolygonScaleReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangePolygonScaleReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangePolygonScaleReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangePolygonScaleReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangePolygonScaleReq.");
+  }
+  return 0;
+}
+
+void ChangePolygonScaleReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectIDofaOutputPolygonObjectToScale := ");
+single_value->field_objectIDofaOutputPolygonObjectToScale.log();
+TTCN_Logger::log_event_str(", newWidthAttribute := ");
+single_value->field_newWidthAttribute.log();
+TTCN_Logger::log_event_str(", newHeightAttribute := ");
+single_value->field_newHeightAttribute.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangePolygonScaleReq_template::log_match(const ChangePolygonScaleReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectIDofaOutputPolygonObjectToScale.match(match_value.objectIDofaOutputPolygonObjectToScale(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectIDofaOutputPolygonObjectToScale");
+single_value->field_objectIDofaOutputPolygonObjectToScale.log_match(match_value.objectIDofaOutputPolygonObjectToScale(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_newWidthAttribute.match(match_value.newWidthAttribute(), legacy)){
+TTCN_Logger::log_logmatch_info(".newWidthAttribute");
+single_value->field_newWidthAttribute.log_match(match_value.newWidthAttribute(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_newHeightAttribute.match(match_value.newHeightAttribute(), legacy)){
+TTCN_Logger::log_logmatch_info(".newHeightAttribute");
+single_value->field_newHeightAttribute.log_match(match_value.newHeightAttribute(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectIDofaOutputPolygonObjectToScale := ");
+single_value->field_objectIDofaOutputPolygonObjectToScale.log_match(match_value.objectIDofaOutputPolygonObjectToScale(), legacy);
+TTCN_Logger::log_event_str(", newWidthAttribute := ");
+single_value->field_newWidthAttribute.log_match(match_value.newWidthAttribute(), legacy);
+TTCN_Logger::log_event_str(", newHeightAttribute := ");
+single_value->field_newHeightAttribute.log_match(match_value.newHeightAttribute(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 ChangePolygonScaleReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectIDofaOutputPolygonObjectToScale.encode_text(text_buf);
+single_value->field_newWidthAttribute.encode_text(text_buf);
+single_value->field_newHeightAttribute.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.ChangePolygonScaleReq.");
+}
+}
+
+void ChangePolygonScaleReq_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_vtfunction.decode_text(text_buf);
+single_value->field_objectIDofaOutputPolygonObjectToScale.decode_text(text_buf);
+single_value->field_newWidthAttribute.decode_text(text_buf);
+single_value->field_newHeightAttribute.decode_text(text_buf);
+single_value->field_reserved8.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 ChangePolygonScaleReq_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 @IsobusVTMessageTypes.ChangePolygonScaleReq.");
+}
+}
+
+void ChangePolygonScaleReq_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: {
+    ChangePolygonScaleReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.ChangePolygonScaleReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectIDofaOutputPolygonObjectToScale().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) newWidthAttribute().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) newHeightAttribute().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectIDofaOutputPolygonObjectToScale")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofaOutputPolygonObjectToScale().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(), "newWidthAttribute")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          newWidthAttribute().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(), "newHeightAttribute")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          newHeightAttribute().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ChangePolygonScaleReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangePolygonScaleReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangePolygonScaleReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePolygonScaleReq");
+single_value->field_objectIDofaOutputPolygonObjectToScale.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePolygonScaleReq");
+single_value->field_newWidthAttribute.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePolygonScaleReq");
+single_value->field_newHeightAttribute.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePolygonScaleReq");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangePolygonScaleReq");
+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 : "@IsobusVTMessageTypes.ChangePolygonScaleReq");
+}
+
+boolean ChangePolygonScaleReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangePolygonScaleReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+GraphicsContextRes__ErrorCodes::GraphicsContextRes__ErrorCodes()
+{
+}
+
+GraphicsContextRes__ErrorCodes::GraphicsContextRes__ErrorCodes(const BOOLEAN& par_invalidObjectIDorObjectIsNotAGraphics,
+    const BOOLEAN& par_InvalidSubCommandID,
+    const BOOLEAN& par_InvalidParameter,
+    const BOOLEAN& par_SubCommandWillProduceInvalidResults,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7)
+  :   field_invalidObjectIDorObjectIsNotAGraphics(par_invalidObjectIDorObjectIsNotAGraphics),
+  field_InvalidSubCommandID(par_InvalidSubCommandID),
+  field_InvalidParameter(par_InvalidParameter),
+  field_SubCommandWillProduceInvalidResults(par_SubCommandWillProduceInvalidResults),
+  field_anyOtherError(par_anyOtherError),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7)
+{
+}
+
+GraphicsContextRes__ErrorCodes::GraphicsContextRes__ErrorCodes(const GraphicsContextRes__ErrorCodes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes.");
+if (other_value.invalidObjectIDorObjectIsNotAGraphics().is_bound()) field_invalidObjectIDorObjectIsNotAGraphics = other_value.invalidObjectIDorObjectIsNotAGraphics();
+else field_invalidObjectIDorObjectIsNotAGraphics.clean_up();
+if (other_value.InvalidSubCommandID().is_bound()) field_InvalidSubCommandID = other_value.InvalidSubCommandID();
+else field_InvalidSubCommandID.clean_up();
+if (other_value.InvalidParameter().is_bound()) field_InvalidParameter = other_value.InvalidParameter();
+else field_InvalidParameter.clean_up();
+if (other_value.SubCommandWillProduceInvalidResults().is_bound()) field_SubCommandWillProduceInvalidResults = other_value.SubCommandWillProduceInvalidResults();
+else field_SubCommandWillProduceInvalidResults.clean_up();
+if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+else field_anyOtherError.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+}
+
+void GraphicsContextRes__ErrorCodes::clean_up()
+{
+field_invalidObjectIDorObjectIsNotAGraphics.clean_up();
+field_InvalidSubCommandID.clean_up();
+field_InvalidParameter.clean_up();
+field_SubCommandWillProduceInvalidResults.clean_up();
+field_anyOtherError.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+}
+
+const TTCN_Typedescriptor_t* GraphicsContextRes__ErrorCodes::get_descriptor() const { return &GraphicsContextRes__ErrorCodes_descr_; }
+GraphicsContextRes__ErrorCodes& GraphicsContextRes__ErrorCodes::operator=(const GraphicsContextRes__ErrorCodes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes.");
+  if (other_value.invalidObjectIDorObjectIsNotAGraphics().is_bound()) field_invalidObjectIDorObjectIsNotAGraphics = other_value.invalidObjectIDorObjectIsNotAGraphics();
+  else field_invalidObjectIDorObjectIsNotAGraphics.clean_up();
+  if (other_value.InvalidSubCommandID().is_bound()) field_InvalidSubCommandID = other_value.InvalidSubCommandID();
+  else field_InvalidSubCommandID.clean_up();
+  if (other_value.InvalidParameter().is_bound()) field_InvalidParameter = other_value.InvalidParameter();
+  else field_InvalidParameter.clean_up();
+  if (other_value.SubCommandWillProduceInvalidResults().is_bound()) field_SubCommandWillProduceInvalidResults = other_value.SubCommandWillProduceInvalidResults();
+  else field_SubCommandWillProduceInvalidResults.clean_up();
+  if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+  else field_anyOtherError.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+}
+return *this;
+}
+
+boolean GraphicsContextRes__ErrorCodes::operator==(const GraphicsContextRes__ErrorCodes& other_value) const
+{
+return field_invalidObjectIDorObjectIsNotAGraphics==other_value.field_invalidObjectIDorObjectIsNotAGraphics
+  && field_InvalidSubCommandID==other_value.field_InvalidSubCommandID
+  && field_InvalidParameter==other_value.field_InvalidParameter
+  && field_SubCommandWillProduceInvalidResults==other_value.field_SubCommandWillProduceInvalidResults
+  && field_anyOtherError==other_value.field_anyOtherError
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7;
+}
+
+boolean GraphicsContextRes__ErrorCodes::is_bound() const
+{
+return (field_invalidObjectIDorObjectIsNotAGraphics.is_bound())
+  || (field_InvalidSubCommandID.is_bound())
+  || (field_InvalidParameter.is_bound())
+  || (field_SubCommandWillProduceInvalidResults.is_bound())
+  || (field_anyOtherError.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound());
+}
+boolean GraphicsContextRes__ErrorCodes::is_value() const
+{
+return field_invalidObjectIDorObjectIsNotAGraphics.is_value()
+  && field_InvalidSubCommandID.is_value()
+  && field_InvalidParameter.is_value()
+  && field_SubCommandWillProduceInvalidResults.is_value()
+  && field_anyOtherError.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value();
+}
+void GraphicsContextRes__ErrorCodes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ invalidObjectIDorObjectIsNotAGraphics := ");
+field_invalidObjectIDorObjectIsNotAGraphics.log();
+TTCN_Logger::log_event_str(", InvalidSubCommandID := ");
+field_InvalidSubCommandID.log();
+TTCN_Logger::log_event_str(", InvalidParameter := ");
+field_InvalidParameter.log();
+TTCN_Logger::log_event_str(", SubCommandWillProduceInvalidResults := ");
+field_SubCommandWillProduceInvalidResults.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void GraphicsContextRes__ErrorCodes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes has 8 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) invalidObjectIDorObjectIsNotAGraphics().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) InvalidSubCommandID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) InvalidParameter().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) SubCommandWillProduceInvalidResults().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "invalidObjectIDorObjectIsNotAGraphics")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidObjectIDorObjectIsNotAGraphics().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(), "InvalidSubCommandID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          InvalidSubCommandID().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(), "InvalidParameter")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          InvalidParameter().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(), "SubCommandWillProduceInvalidResults")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          SubCommandWillProduceInvalidResults().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes");
+  }
+}
+
+void GraphicsContextRes__ErrorCodes::set_implicit_omit()
+{
+if (invalidObjectIDorObjectIsNotAGraphics().is_bound()) invalidObjectIDorObjectIsNotAGraphics().set_implicit_omit();
+if (InvalidSubCommandID().is_bound()) InvalidSubCommandID().set_implicit_omit();
+if (InvalidParameter().is_bound()) InvalidParameter().set_implicit_omit();
+if (SubCommandWillProduceInvalidResults().is_bound()) SubCommandWillProduceInvalidResults().set_implicit_omit();
+if (anyOtherError().is_bound()) anyOtherError().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+}
+
+void GraphicsContextRes__ErrorCodes::encode_text(Text_Buf& text_buf) const
+{
+field_invalidObjectIDorObjectIsNotAGraphics.encode_text(text_buf);
+field_InvalidSubCommandID.encode_text(text_buf);
+field_InvalidParameter.encode_text(text_buf);
+field_SubCommandWillProduceInvalidResults.encode_text(text_buf);
+field_anyOtherError.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+}
+
+void GraphicsContextRes__ErrorCodes::decode_text(Text_Buf& text_buf)
+{
+field_invalidObjectIDorObjectIsNotAGraphics.decode_text(text_buf);
+field_InvalidSubCommandID.decode_text(text_buf);
+field_InvalidParameter.decode_text(text_buf);
+field_SubCommandWillProduceInvalidResults.decode_text(text_buf);
+field_anyOtherError.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+}
+
+void GraphicsContextRes__ErrorCodes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void GraphicsContextRes__ErrorCodes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int GraphicsContextRes__ErrorCodes::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidObjectIDorObjectIsNotAGraphics.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_InvalidSubCommandID.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_InvalidParameter.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_SubCommandWillProduceInvalidResults.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_anyOtherError.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int GraphicsContextRes__ErrorCodes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_invalidObjectIDorObjectIsNotAGraphics.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_InvalidSubCommandID.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_InvalidParameter.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_SubCommandWillProduceInvalidResults.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_anyOtherError.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved5.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved6.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved7.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct GraphicsContextRes__ErrorCodes_template::single_value_struct {
+BOOLEAN_template field_invalidObjectIDorObjectIsNotAGraphics;
+BOOLEAN_template field_InvalidSubCommandID;
+BOOLEAN_template field_InvalidParameter;
+BOOLEAN_template field_SubCommandWillProduceInvalidResults;
+BOOLEAN_template field_anyOtherError;
+BOOLEAN_template field_reserved5;
+BOOLEAN_template field_reserved6;
+BOOLEAN_template field_reserved7;
+};
+
+void GraphicsContextRes__ErrorCodes_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_invalidObjectIDorObjectIsNotAGraphics = ANY_VALUE;
+single_value->field_InvalidSubCommandID = ANY_VALUE;
+single_value->field_InvalidParameter = ANY_VALUE;
+single_value->field_SubCommandWillProduceInvalidResults = ANY_VALUE;
+single_value->field_anyOtherError = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+}
+}
+}
+
+void GraphicsContextRes__ErrorCodes_template::copy_value(const GraphicsContextRes__ErrorCodes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.invalidObjectIDorObjectIsNotAGraphics().is_bound()) {
+  single_value->field_invalidObjectIDorObjectIsNotAGraphics = other_value.invalidObjectIDorObjectIsNotAGraphics();
+} else {
+  single_value->field_invalidObjectIDorObjectIsNotAGraphics.clean_up();
+}
+if (other_value.InvalidSubCommandID().is_bound()) {
+  single_value->field_InvalidSubCommandID = other_value.InvalidSubCommandID();
+} else {
+  single_value->field_InvalidSubCommandID.clean_up();
+}
+if (other_value.InvalidParameter().is_bound()) {
+  single_value->field_InvalidParameter = other_value.InvalidParameter();
+} else {
+  single_value->field_InvalidParameter.clean_up();
+}
+if (other_value.SubCommandWillProduceInvalidResults().is_bound()) {
+  single_value->field_SubCommandWillProduceInvalidResults = other_value.SubCommandWillProduceInvalidResults();
+} else {
+  single_value->field_SubCommandWillProduceInvalidResults.clean_up();
+}
+if (other_value.anyOtherError().is_bound()) {
+  single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+  single_value->field_anyOtherError.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void GraphicsContextRes__ErrorCodes_template::copy_template(const GraphicsContextRes__ErrorCodes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.invalidObjectIDorObjectIsNotAGraphics().get_selection()) {
+single_value->field_invalidObjectIDorObjectIsNotAGraphics = other_value.invalidObjectIDorObjectIsNotAGraphics();
+} else {
+single_value->field_invalidObjectIDorObjectIsNotAGraphics.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.InvalidSubCommandID().get_selection()) {
+single_value->field_InvalidSubCommandID = other_value.InvalidSubCommandID();
+} else {
+single_value->field_InvalidSubCommandID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.InvalidParameter().get_selection()) {
+single_value->field_InvalidParameter = other_value.InvalidParameter();
+} else {
+single_value->field_InvalidParameter.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.SubCommandWillProduceInvalidResults().get_selection()) {
+single_value->field_SubCommandWillProduceInvalidResults = other_value.SubCommandWillProduceInvalidResults();
+} else {
+single_value->field_SubCommandWillProduceInvalidResults.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.anyOtherError().get_selection()) {
+single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+single_value->field_anyOtherError.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new GraphicsContextRes__ErrorCodes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes.");
+break;
+}
+set_selection(other_value);
+}
+
+GraphicsContextRes__ErrorCodes_template::GraphicsContextRes__ErrorCodes_template()
+{
+}
+
+GraphicsContextRes__ErrorCodes_template::GraphicsContextRes__ErrorCodes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+GraphicsContextRes__ErrorCodes_template::GraphicsContextRes__ErrorCodes_template(const GraphicsContextRes__ErrorCodes& other_value)
+{
+copy_value(other_value);
+}
+
+GraphicsContextRes__ErrorCodes_template::GraphicsContextRes__ErrorCodes_template(const OPTIONAL<GraphicsContextRes__ErrorCodes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const GraphicsContextRes__ErrorCodes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes from an unbound optional field.");
+}
+}
+
+GraphicsContextRes__ErrorCodes_template::GraphicsContextRes__ErrorCodes_template(const GraphicsContextRes__ErrorCodes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+GraphicsContextRes__ErrorCodes_template::~GraphicsContextRes__ErrorCodes_template()
+{
+clean_up();
+}
+
+GraphicsContextRes__ErrorCodes_template& GraphicsContextRes__ErrorCodes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+GraphicsContextRes__ErrorCodes_template& GraphicsContextRes__ErrorCodes_template::operator=(const GraphicsContextRes__ErrorCodes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+GraphicsContextRes__ErrorCodes_template& GraphicsContextRes__ErrorCodes_template::operator=(const OPTIONAL<GraphicsContextRes__ErrorCodes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const GraphicsContextRes__ErrorCodes&)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 @IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes.");
+}
+return *this;
+}
+
+GraphicsContextRes__ErrorCodes_template& GraphicsContextRes__ErrorCodes_template::operator=(const GraphicsContextRes__ErrorCodes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean GraphicsContextRes__ErrorCodes_template::match(const GraphicsContextRes__ErrorCodes& 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.invalidObjectIDorObjectIsNotAGraphics().is_bound()) return FALSE;
+if(!single_value->field_invalidObjectIDorObjectIsNotAGraphics.match(other_value.invalidObjectIDorObjectIsNotAGraphics(), legacy))return FALSE;
+if(!other_value.InvalidSubCommandID().is_bound()) return FALSE;
+if(!single_value->field_InvalidSubCommandID.match(other_value.InvalidSubCommandID(), legacy))return FALSE;
+if(!other_value.InvalidParameter().is_bound()) return FALSE;
+if(!single_value->field_InvalidParameter.match(other_value.InvalidParameter(), legacy))return FALSE;
+if(!other_value.SubCommandWillProduceInvalidResults().is_bound()) return FALSE;
+if(!single_value->field_SubCommandWillProduceInvalidResults.match(other_value.SubCommandWillProduceInvalidResults(), legacy))return FALSE;
+if(!other_value.anyOtherError().is_bound()) return FALSE;
+if(!single_value->field_anyOtherError.match(other_value.anyOtherError(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes.");
+}
+return FALSE;
+}
+
+boolean GraphicsContextRes__ErrorCodes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_invalidObjectIDorObjectIsNotAGraphics.is_bound()
+
+ ||single_value->field_InvalidSubCommandID.is_bound()
+
+ ||single_value->field_InvalidParameter.is_bound()
+
+ ||single_value->field_SubCommandWillProduceInvalidResults.is_bound()
+
+ ||single_value->field_anyOtherError.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+;
+}
+
+boolean GraphicsContextRes__ErrorCodes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_invalidObjectIDorObjectIsNotAGraphics.is_value()
+ &&single_value->field_InvalidSubCommandID.is_value()
+ &&single_value->field_InvalidParameter.is_value()
+ &&single_value->field_SubCommandWillProduceInvalidResults.is_value()
+ &&single_value->field_anyOtherError.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value();
+}
+
+void GraphicsContextRes__ErrorCodes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+GraphicsContextRes__ErrorCodes GraphicsContextRes__ErrorCodes_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 @IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes.");
+GraphicsContextRes__ErrorCodes ret_val;
+if (single_value->field_invalidObjectIDorObjectIsNotAGraphics.is_bound()) {
+ret_val.invalidObjectIDorObjectIsNotAGraphics() = single_value->field_invalidObjectIDorObjectIsNotAGraphics.valueof();
+}
+if (single_value->field_InvalidSubCommandID.is_bound()) {
+ret_val.InvalidSubCommandID() = single_value->field_InvalidSubCommandID.valueof();
+}
+if (single_value->field_InvalidParameter.is_bound()) {
+ret_val.InvalidParameter() = single_value->field_InvalidParameter.valueof();
+}
+if (single_value->field_SubCommandWillProduceInvalidResults.is_bound()) {
+ret_val.SubCommandWillProduceInvalidResults() = single_value->field_SubCommandWillProduceInvalidResults.valueof();
+}
+if (single_value->field_anyOtherError.is_bound()) {
+ret_val.anyOtherError() = single_value->field_anyOtherError.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+return ret_val;
+}
+
+void GraphicsContextRes__ErrorCodes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new GraphicsContextRes__ErrorCodes_template[list_length];
+}
+
+GraphicsContextRes__ErrorCodes_template& GraphicsContextRes__ErrorCodes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& GraphicsContextRes__ErrorCodes_template::invalidObjectIDorObjectIsNotAGraphics()
+{
+set_specific();
+return single_value->field_invalidObjectIDorObjectIsNotAGraphics;
+}
+
+const BOOLEAN_template& GraphicsContextRes__ErrorCodes_template::invalidObjectIDorObjectIsNotAGraphics() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidObjectIDorObjectIsNotAGraphics of a non-specific template of type @IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes.");
+return single_value->field_invalidObjectIDorObjectIsNotAGraphics;
+}
+
+BOOLEAN_template& GraphicsContextRes__ErrorCodes_template::InvalidSubCommandID()
+{
+set_specific();
+return single_value->field_InvalidSubCommandID;
+}
+
+const BOOLEAN_template& GraphicsContextRes__ErrorCodes_template::InvalidSubCommandID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field InvalidSubCommandID of a non-specific template of type @IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes.");
+return single_value->field_InvalidSubCommandID;
+}
+
+BOOLEAN_template& GraphicsContextRes__ErrorCodes_template::InvalidParameter()
+{
+set_specific();
+return single_value->field_InvalidParameter;
+}
+
+const BOOLEAN_template& GraphicsContextRes__ErrorCodes_template::InvalidParameter() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field InvalidParameter of a non-specific template of type @IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes.");
+return single_value->field_InvalidParameter;
+}
+
+BOOLEAN_template& GraphicsContextRes__ErrorCodes_template::SubCommandWillProduceInvalidResults()
+{
+set_specific();
+return single_value->field_SubCommandWillProduceInvalidResults;
+}
+
+const BOOLEAN_template& GraphicsContextRes__ErrorCodes_template::SubCommandWillProduceInvalidResults() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field SubCommandWillProduceInvalidResults of a non-specific template of type @IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes.");
+return single_value->field_SubCommandWillProduceInvalidResults;
+}
+
+BOOLEAN_template& GraphicsContextRes__ErrorCodes_template::anyOtherError()
+{
+set_specific();
+return single_value->field_anyOtherError;
+}
+
+const BOOLEAN_template& GraphicsContextRes__ErrorCodes_template::anyOtherError() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field anyOtherError of a non-specific template of type @IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes.");
+return single_value->field_anyOtherError;
+}
+
+BOOLEAN_template& GraphicsContextRes__ErrorCodes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const BOOLEAN_template& GraphicsContextRes__ErrorCodes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes.");
+return single_value->field_reserved5;
+}
+
+BOOLEAN_template& GraphicsContextRes__ErrorCodes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const BOOLEAN_template& GraphicsContextRes__ErrorCodes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes.");
+return single_value->field_reserved6;
+}
+
+BOOLEAN_template& GraphicsContextRes__ErrorCodes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const BOOLEAN_template& GraphicsContextRes__ErrorCodes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes.");
+return single_value->field_reserved7;
+}
+
+int GraphicsContextRes__ErrorCodes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes 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 @IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes.");
+  }
+  return 0;
+}
+
+void GraphicsContextRes__ErrorCodes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ invalidObjectIDorObjectIsNotAGraphics := ");
+single_value->field_invalidObjectIDorObjectIsNotAGraphics.log();
+TTCN_Logger::log_event_str(", InvalidSubCommandID := ");
+single_value->field_InvalidSubCommandID.log();
+TTCN_Logger::log_event_str(", InvalidParameter := ");
+single_value->field_InvalidParameter.log();
+TTCN_Logger::log_event_str(", SubCommandWillProduceInvalidResults := ");
+single_value->field_SubCommandWillProduceInvalidResults.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void GraphicsContextRes__ErrorCodes_template::log_match(const GraphicsContextRes__ErrorCodes& 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_invalidObjectIDorObjectIsNotAGraphics.match(match_value.invalidObjectIDorObjectIsNotAGraphics(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidObjectIDorObjectIsNotAGraphics");
+single_value->field_invalidObjectIDorObjectIsNotAGraphics.log_match(match_value.invalidObjectIDorObjectIsNotAGraphics(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_InvalidSubCommandID.match(match_value.InvalidSubCommandID(), legacy)){
+TTCN_Logger::log_logmatch_info(".InvalidSubCommandID");
+single_value->field_InvalidSubCommandID.log_match(match_value.InvalidSubCommandID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_InvalidParameter.match(match_value.InvalidParameter(), legacy)){
+TTCN_Logger::log_logmatch_info(".InvalidParameter");
+single_value->field_InvalidParameter.log_match(match_value.InvalidParameter(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_SubCommandWillProduceInvalidResults.match(match_value.SubCommandWillProduceInvalidResults(), legacy)){
+TTCN_Logger::log_logmatch_info(".SubCommandWillProduceInvalidResults");
+single_value->field_SubCommandWillProduceInvalidResults.log_match(match_value.SubCommandWillProduceInvalidResults(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_anyOtherError.match(match_value.anyOtherError(), legacy)){
+TTCN_Logger::log_logmatch_info(".anyOtherError");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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("{ invalidObjectIDorObjectIsNotAGraphics := ");
+single_value->field_invalidObjectIDorObjectIsNotAGraphics.log_match(match_value.invalidObjectIDorObjectIsNotAGraphics(), legacy);
+TTCN_Logger::log_event_str(", InvalidSubCommandID := ");
+single_value->field_InvalidSubCommandID.log_match(match_value.InvalidSubCommandID(), legacy);
+TTCN_Logger::log_event_str(", InvalidParameter := ");
+single_value->field_InvalidParameter.log_match(match_value.InvalidParameter(), legacy);
+TTCN_Logger::log_event_str(", SubCommandWillProduceInvalidResults := ");
+single_value->field_SubCommandWillProduceInvalidResults.log_match(match_value.SubCommandWillProduceInvalidResults(), legacy);
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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 GraphicsContextRes__ErrorCodes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_invalidObjectIDorObjectIsNotAGraphics.encode_text(text_buf);
+single_value->field_InvalidSubCommandID.encode_text(text_buf);
+single_value->field_InvalidParameter.encode_text(text_buf);
+single_value->field_SubCommandWillProduceInvalidResults.encode_text(text_buf);
+single_value->field_anyOtherError.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.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 @IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes.");
+}
+}
+
+void GraphicsContextRes__ErrorCodes_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_invalidObjectIDorObjectIsNotAGraphics.decode_text(text_buf);
+single_value->field_InvalidSubCommandID.decode_text(text_buf);
+single_value->field_InvalidParameter.decode_text(text_buf);
+single_value->field_SubCommandWillProduceInvalidResults.decode_text(text_buf);
+single_value->field_anyOtherError.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.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 GraphicsContextRes__ErrorCodes_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 @IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes.");
+}
+}
+
+void GraphicsContextRes__ErrorCodes_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: {
+    GraphicsContextRes__ErrorCodes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes has 8 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) invalidObjectIDorObjectIsNotAGraphics().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) InvalidSubCommandID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) InvalidParameter().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) SubCommandWillProduceInvalidResults().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "invalidObjectIDorObjectIsNotAGraphics")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidObjectIDorObjectIsNotAGraphics().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(), "InvalidSubCommandID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          InvalidSubCommandID().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(), "InvalidParameter")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          InvalidParameter().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(), "SubCommandWillProduceInvalidResults")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          SubCommandWillProduceInvalidResults().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void GraphicsContextRes__ErrorCodes_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_invalidObjectIDorObjectIsNotAGraphics.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes");
+single_value->field_InvalidSubCommandID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes");
+single_value->field_InvalidParameter.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes");
+single_value->field_SubCommandWillProduceInvalidResults.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes");
+single_value->field_anyOtherError.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes");
+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 : "@IsobusVTMessageTypes.GraphicsContextRes_ErrorCodes");
+}
+
+boolean GraphicsContextRes__ErrorCodes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean GraphicsContextRes__ErrorCodes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+GraphicsContextRes::GraphicsContextRes()
+{
+}
+
+GraphicsContextRes::GraphicsContextRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectIDofAGraphicsContextObject,
+    const INTEGER& par_subcommandID,
+    const GraphicsContextRes__ErrorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_objectIDofAGraphicsContextObject(par_objectIDofAGraphicsContextObject),
+  field_subcommandID(par_subcommandID),
+  field_errorCodes(par_errorCodes),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+GraphicsContextRes::GraphicsContextRes(const GraphicsContextRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.GraphicsContextRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectIDofAGraphicsContextObject().is_bound()) field_objectIDofAGraphicsContextObject = other_value.objectIDofAGraphicsContextObject();
+else field_objectIDofAGraphicsContextObject.clean_up();
+if (other_value.subcommandID().is_bound()) field_subcommandID = other_value.subcommandID();
+else field_subcommandID.clean_up();
+if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+else field_errorCodes.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void GraphicsContextRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectIDofAGraphicsContextObject.clean_up();
+field_subcommandID.clean_up();
+field_errorCodes.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* GraphicsContextRes::get_descriptor() const { return &GraphicsContextRes_descr_; }
+GraphicsContextRes& GraphicsContextRes::operator=(const GraphicsContextRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.GraphicsContextRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectIDofAGraphicsContextObject().is_bound()) field_objectIDofAGraphicsContextObject = other_value.objectIDofAGraphicsContextObject();
+  else field_objectIDofAGraphicsContextObject.clean_up();
+  if (other_value.subcommandID().is_bound()) field_subcommandID = other_value.subcommandID();
+  else field_subcommandID.clean_up();
+  if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+  else field_errorCodes.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean GraphicsContextRes::operator==(const GraphicsContextRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectIDofAGraphicsContextObject==other_value.field_objectIDofAGraphicsContextObject
+  && field_subcommandID==other_value.field_subcommandID
+  && field_errorCodes==other_value.field_errorCodes
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean GraphicsContextRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectIDofAGraphicsContextObject.is_bound())
+  || (field_subcommandID.is_bound())
+  || (field_errorCodes.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean GraphicsContextRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectIDofAGraphicsContextObject.is_value()
+  && field_subcommandID.is_value()
+  && field_errorCodes.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void GraphicsContextRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectIDofAGraphicsContextObject := ");
+field_objectIDofAGraphicsContextObject.log();
+TTCN_Logger::log_event_str(", subcommandID := ");
+field_subcommandID.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void GraphicsContextRes::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 @IsobusVTMessageTypes.GraphicsContextRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectIDofAGraphicsContextObject().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) subcommandID().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectIDofAGraphicsContextObject")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofAGraphicsContextObject().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(), "subcommandID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          subcommandID().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.GraphicsContextRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.GraphicsContextRes");
+  }
+}
+
+void GraphicsContextRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectIDofAGraphicsContextObject().is_bound()) objectIDofAGraphicsContextObject().set_implicit_omit();
+if (subcommandID().is_bound()) subcommandID().set_implicit_omit();
+if (errorCodes().is_bound()) errorCodes().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void GraphicsContextRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectIDofAGraphicsContextObject.encode_text(text_buf);
+field_subcommandID.encode_text(text_buf);
+field_errorCodes.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void GraphicsContextRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectIDofAGraphicsContextObject.decode_text(text_buf);
+field_subcommandID.decode_text(text_buf);
+field_errorCodes.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void GraphicsContextRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void GraphicsContextRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int GraphicsContextRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectIDofAGraphicsContextObject.RAW_decode(ValidObjectID_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::INT1_descr_.raw->forceomit);
+  decoded_field_length = field_subcommandID.RAW_decode(General__Types::INT1_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, GraphicsContextRes__ErrorCodes_descr_.raw->forceomit);
+  decoded_field_length = field_errorCodes.RAW_decode(GraphicsContextRes__ErrorCodes_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, GraphicsContextRes_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(GraphicsContextRes_reserved6_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, GraphicsContextRes_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(GraphicsContextRes_reserved7_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, GraphicsContextRes_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(GraphicsContextRes_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int GraphicsContextRes::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, General__Types::INT1_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, GraphicsContextRes__ErrorCodes_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, GraphicsContextRes_reserved6_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, GraphicsContextRes_reserved7_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, GraphicsContextRes_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectIDofAGraphicsContextObject.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_subcommandID.RAW_encode(General__Types::INT1_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_errorCodes.RAW_encode(GraphicsContextRes__ErrorCodes_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved6.RAW_encode(GraphicsContextRes_reserved6_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved7.RAW_encode(GraphicsContextRes_reserved7_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved8.RAW_encode(GraphicsContextRes_reserved8_descr_, *myleaf.body.node.nodes[6]);
+  return myleaf.length = encoded_length;
+}
+
+struct GraphicsContextRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectIDofAGraphicsContextObject;
+INTEGER_template field_subcommandID;
+GraphicsContextRes__ErrorCodes_template field_errorCodes;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void GraphicsContextRes_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_vtfunction = ANY_VALUE;
+single_value->field_objectIDofAGraphicsContextObject = ANY_VALUE;
+single_value->field_subcommandID = ANY_VALUE;
+single_value->field_errorCodes = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void GraphicsContextRes_template::copy_value(const GraphicsContextRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectIDofAGraphicsContextObject().is_bound()) {
+  single_value->field_objectIDofAGraphicsContextObject = other_value.objectIDofAGraphicsContextObject();
+} else {
+  single_value->field_objectIDofAGraphicsContextObject.clean_up();
+}
+if (other_value.subcommandID().is_bound()) {
+  single_value->field_subcommandID = other_value.subcommandID();
+} else {
+  single_value->field_subcommandID.clean_up();
+}
+if (other_value.errorCodes().is_bound()) {
+  single_value->field_errorCodes = other_value.errorCodes();
+} else {
+  single_value->field_errorCodes.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void GraphicsContextRes_template::copy_template(const GraphicsContextRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectIDofAGraphicsContextObject().get_selection()) {
+single_value->field_objectIDofAGraphicsContextObject = other_value.objectIDofAGraphicsContextObject();
+} else {
+single_value->field_objectIDofAGraphicsContextObject.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.subcommandID().get_selection()) {
+single_value->field_subcommandID = other_value.subcommandID();
+} else {
+single_value->field_subcommandID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.errorCodes().get_selection()) {
+single_value->field_errorCodes = other_value.errorCodes();
+} else {
+single_value->field_errorCodes.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new GraphicsContextRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.GraphicsContextRes.");
+break;
+}
+set_selection(other_value);
+}
+
+GraphicsContextRes_template::GraphicsContextRes_template()
+{
+}
+
+GraphicsContextRes_template::GraphicsContextRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+GraphicsContextRes_template::GraphicsContextRes_template(const GraphicsContextRes& other_value)
+{
+copy_value(other_value);
+}
+
+GraphicsContextRes_template::GraphicsContextRes_template(const OPTIONAL<GraphicsContextRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const GraphicsContextRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.GraphicsContextRes from an unbound optional field.");
+}
+}
+
+GraphicsContextRes_template::GraphicsContextRes_template(const GraphicsContextRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+GraphicsContextRes_template::~GraphicsContextRes_template()
+{
+clean_up();
+}
+
+GraphicsContextRes_template& GraphicsContextRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+GraphicsContextRes_template& GraphicsContextRes_template::operator=(const GraphicsContextRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+GraphicsContextRes_template& GraphicsContextRes_template::operator=(const OPTIONAL<GraphicsContextRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const GraphicsContextRes&)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 @IsobusVTMessageTypes.GraphicsContextRes.");
+}
+return *this;
+}
+
+GraphicsContextRes_template& GraphicsContextRes_template::operator=(const GraphicsContextRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean GraphicsContextRes_template::match(const GraphicsContextRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectIDofAGraphicsContextObject().is_bound()) return FALSE;
+if(!single_value->field_objectIDofAGraphicsContextObject.match(other_value.objectIDofAGraphicsContextObject(), legacy))return FALSE;
+if(!other_value.subcommandID().is_bound()) return FALSE;
+if(!single_value->field_subcommandID.match(other_value.subcommandID(), legacy))return FALSE;
+if(!other_value.errorCodes().is_bound()) return FALSE;
+if(!single_value->field_errorCodes.match(other_value.errorCodes(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.GraphicsContextRes.");
+}
+return FALSE;
+}
+
+boolean GraphicsContextRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectIDofAGraphicsContextObject.is_bound()
+
+ ||single_value->field_subcommandID.is_bound()
+
+ ||single_value->field_errorCodes.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean GraphicsContextRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectIDofAGraphicsContextObject.is_value()
+ &&single_value->field_subcommandID.is_value()
+ &&single_value->field_errorCodes.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void GraphicsContextRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+GraphicsContextRes GraphicsContextRes_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 @IsobusVTMessageTypes.GraphicsContextRes.");
+GraphicsContextRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectIDofAGraphicsContextObject.is_bound()) {
+ret_val.objectIDofAGraphicsContextObject() = single_value->field_objectIDofAGraphicsContextObject.valueof();
+}
+if (single_value->field_subcommandID.is_bound()) {
+ret_val.subcommandID() = single_value->field_subcommandID.valueof();
+}
+if (single_value->field_errorCodes.is_bound()) {
+ret_val.errorCodes() = single_value->field_errorCodes.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void GraphicsContextRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.GraphicsContextRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new GraphicsContextRes_template[list_length];
+}
+
+GraphicsContextRes_template& GraphicsContextRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.GraphicsContextRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.GraphicsContextRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& GraphicsContextRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& GraphicsContextRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.GraphicsContextRes.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& GraphicsContextRes_template::objectIDofAGraphicsContextObject()
+{
+set_specific();
+return single_value->field_objectIDofAGraphicsContextObject;
+}
+
+const INTEGER_template& GraphicsContextRes_template::objectIDofAGraphicsContextObject() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectIDofAGraphicsContextObject of a non-specific template of type @IsobusVTMessageTypes.GraphicsContextRes.");
+return single_value->field_objectIDofAGraphicsContextObject;
+}
+
+INTEGER_template& GraphicsContextRes_template::subcommandID()
+{
+set_specific();
+return single_value->field_subcommandID;
+}
+
+const INTEGER_template& GraphicsContextRes_template::subcommandID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field subcommandID of a non-specific template of type @IsobusVTMessageTypes.GraphicsContextRes.");
+return single_value->field_subcommandID;
+}
+
+GraphicsContextRes__ErrorCodes_template& GraphicsContextRes_template::errorCodes()
+{
+set_specific();
+return single_value->field_errorCodes;
+}
+
+const GraphicsContextRes__ErrorCodes_template& GraphicsContextRes_template::errorCodes() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field errorCodes of a non-specific template of type @IsobusVTMessageTypes.GraphicsContextRes.");
+return single_value->field_errorCodes;
+}
+
+OCTETSTRING_template& GraphicsContextRes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& GraphicsContextRes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.GraphicsContextRes.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& GraphicsContextRes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& GraphicsContextRes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.GraphicsContextRes.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& GraphicsContextRes_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& GraphicsContextRes_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.GraphicsContextRes.");
+return single_value->field_reserved8;
+}
+
+int GraphicsContextRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GraphicsContextRes 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 @IsobusVTMessageTypes.GraphicsContextRes 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 @IsobusVTMessageTypes.GraphicsContextRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GraphicsContextRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GraphicsContextRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GraphicsContextRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.GraphicsContextRes.");
+  }
+  return 0;
+}
+
+void GraphicsContextRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectIDofAGraphicsContextObject := ");
+single_value->field_objectIDofAGraphicsContextObject.log();
+TTCN_Logger::log_event_str(", subcommandID := ");
+single_value->field_subcommandID.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void GraphicsContextRes_template::log_match(const GraphicsContextRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectIDofAGraphicsContextObject.match(match_value.objectIDofAGraphicsContextObject(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectIDofAGraphicsContextObject");
+single_value->field_objectIDofAGraphicsContextObject.log_match(match_value.objectIDofAGraphicsContextObject(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_subcommandID.match(match_value.subcommandID(), legacy)){
+TTCN_Logger::log_logmatch_info(".subcommandID");
+single_value->field_subcommandID.log_match(match_value.subcommandID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_errorCodes.match(match_value.errorCodes(), legacy)){
+TTCN_Logger::log_logmatch_info(".errorCodes");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectIDofAGraphicsContextObject := ");
+single_value->field_objectIDofAGraphicsContextObject.log_match(match_value.objectIDofAGraphicsContextObject(), legacy);
+TTCN_Logger::log_event_str(", subcommandID := ");
+single_value->field_subcommandID.log_match(match_value.subcommandID(), legacy);
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 GraphicsContextRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectIDofAGraphicsContextObject.encode_text(text_buf);
+single_value->field_subcommandID.encode_text(text_buf);
+single_value->field_errorCodes.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.GraphicsContextRes.");
+}
+}
+
+void GraphicsContextRes_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_vtfunction.decode_text(text_buf);
+single_value->field_objectIDofAGraphicsContextObject.decode_text(text_buf);
+single_value->field_subcommandID.decode_text(text_buf);
+single_value->field_errorCodes.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 GraphicsContextRes_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 @IsobusVTMessageTypes.GraphicsContextRes.");
+}
+}
+
+void GraphicsContextRes_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: {
+    GraphicsContextRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.GraphicsContextRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectIDofAGraphicsContextObject().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) subcommandID().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectIDofAGraphicsContextObject")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofAGraphicsContextObject().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(), "subcommandID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          subcommandID().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.GraphicsContextRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.GraphicsContextRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void GraphicsContextRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GraphicsContextRes");
+single_value->field_objectIDofAGraphicsContextObject.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GraphicsContextRes");
+single_value->field_subcommandID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GraphicsContextRes");
+single_value->field_errorCodes.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GraphicsContextRes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GraphicsContextRes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GraphicsContextRes");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GraphicsContextRes");
+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 : "@IsobusVTMessageTypes.GraphicsContextRes");
+}
+
+boolean GraphicsContextRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean GraphicsContextRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+SetGraphicsCursor::SetGraphicsCursor()
+{
+}
+
+SetGraphicsCursor::SetGraphicsCursor(const INTEGER& par_xPosition,
+    const INTEGER& par_yPosition)
+  :   field_xPosition(par_xPosition),
+  field_yPosition(par_yPosition)
+{
+}
+
+SetGraphicsCursor::SetGraphicsCursor(const SetGraphicsCursor& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.SetGraphicsCursor.");
+if (other_value.xPosition().is_bound()) field_xPosition = other_value.xPosition();
+else field_xPosition.clean_up();
+if (other_value.yPosition().is_bound()) field_yPosition = other_value.yPosition();
+else field_yPosition.clean_up();
+}
+
+void SetGraphicsCursor::clean_up()
+{
+field_xPosition.clean_up();
+field_yPosition.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SetGraphicsCursor::get_descriptor() const { return &SetGraphicsCursor_descr_; }
+SetGraphicsCursor& SetGraphicsCursor::operator=(const SetGraphicsCursor& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.SetGraphicsCursor.");
+  if (other_value.xPosition().is_bound()) field_xPosition = other_value.xPosition();
+  else field_xPosition.clean_up();
+  if (other_value.yPosition().is_bound()) field_yPosition = other_value.yPosition();
+  else field_yPosition.clean_up();
+}
+return *this;
+}
+
+boolean SetGraphicsCursor::operator==(const SetGraphicsCursor& other_value) const
+{
+return field_xPosition==other_value.field_xPosition
+  && field_yPosition==other_value.field_yPosition;
+}
+
+boolean SetGraphicsCursor::is_bound() const
+{
+return (field_xPosition.is_bound())
+  || (field_yPosition.is_bound());
+}
+boolean SetGraphicsCursor::is_value() const
+{
+return field_xPosition.is_value()
+  && field_yPosition.is_value();
+}
+void SetGraphicsCursor::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ xPosition := ");
+field_xPosition.log();
+TTCN_Logger::log_event_str(", yPosition := ");
+field_yPosition.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SetGraphicsCursor::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 @IsobusVTMessageTypes.SetGraphicsCursor 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) xPosition().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) yPosition().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(), "xPosition")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          xPosition().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(), "yPosition")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          yPosition().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 @IsobusVTMessageTypes.SetGraphicsCursor: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.SetGraphicsCursor");
+  }
+}
+
+void SetGraphicsCursor::set_implicit_omit()
+{
+if (xPosition().is_bound()) xPosition().set_implicit_omit();
+if (yPosition().is_bound()) yPosition().set_implicit_omit();
+}
+
+void SetGraphicsCursor::encode_text(Text_Buf& text_buf) const
+{
+field_xPosition.encode_text(text_buf);
+field_yPosition.encode_text(text_buf);
+}
+
+void SetGraphicsCursor::decode_text(Text_Buf& text_buf)
+{
+field_xPosition.decode_text(text_buf);
+field_yPosition.decode_text(text_buf);
+}
+
+void SetGraphicsCursor::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void SetGraphicsCursor::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int SetGraphicsCursor::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, XPositionType_descr_.raw->forceomit);
+  decoded_field_length = field_xPosition.RAW_decode(XPositionType_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, YPositionType_descr_.raw->forceomit);
+  decoded_field_length = field_yPosition.RAW_decode(YPositionType_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 SetGraphicsCursor::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, XPositionType_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, YPositionType_descr_.raw);
+  encoded_length += field_xPosition.RAW_encode(XPositionType_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_yPosition.RAW_encode(YPositionType_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct SetGraphicsCursor_template::single_value_struct {
+INTEGER_template field_xPosition;
+INTEGER_template field_yPosition;
+};
+
+void SetGraphicsCursor_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_xPosition = ANY_VALUE;
+single_value->field_yPosition = ANY_VALUE;
+}
+}
+}
+
+void SetGraphicsCursor_template::copy_value(const SetGraphicsCursor& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.xPosition().is_bound()) {
+  single_value->field_xPosition = other_value.xPosition();
+} else {
+  single_value->field_xPosition.clean_up();
+}
+if (other_value.yPosition().is_bound()) {
+  single_value->field_yPosition = other_value.yPosition();
+} else {
+  single_value->field_yPosition.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SetGraphicsCursor_template::copy_template(const SetGraphicsCursor_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.xPosition().get_selection()) {
+single_value->field_xPosition = other_value.xPosition();
+} else {
+single_value->field_xPosition.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.yPosition().get_selection()) {
+single_value->field_yPosition = other_value.yPosition();
+} else {
+single_value->field_yPosition.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SetGraphicsCursor_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.SetGraphicsCursor.");
+break;
+}
+set_selection(other_value);
+}
+
+SetGraphicsCursor_template::SetGraphicsCursor_template()
+{
+}
+
+SetGraphicsCursor_template::SetGraphicsCursor_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SetGraphicsCursor_template::SetGraphicsCursor_template(const SetGraphicsCursor& other_value)
+{
+copy_value(other_value);
+}
+
+SetGraphicsCursor_template::SetGraphicsCursor_template(const OPTIONAL<SetGraphicsCursor>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SetGraphicsCursor&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.SetGraphicsCursor from an unbound optional field.");
+}
+}
+
+SetGraphicsCursor_template::SetGraphicsCursor_template(const SetGraphicsCursor_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SetGraphicsCursor_template::~SetGraphicsCursor_template()
+{
+clean_up();
+}
+
+SetGraphicsCursor_template& SetGraphicsCursor_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SetGraphicsCursor_template& SetGraphicsCursor_template::operator=(const SetGraphicsCursor& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SetGraphicsCursor_template& SetGraphicsCursor_template::operator=(const OPTIONAL<SetGraphicsCursor>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SetGraphicsCursor&)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 @IsobusVTMessageTypes.SetGraphicsCursor.");
+}
+return *this;
+}
+
+SetGraphicsCursor_template& SetGraphicsCursor_template::operator=(const SetGraphicsCursor_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SetGraphicsCursor_template::match(const SetGraphicsCursor& 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.xPosition().is_bound()) return FALSE;
+if(!single_value->field_xPosition.match(other_value.xPosition(), legacy))return FALSE;
+if(!other_value.yPosition().is_bound()) return FALSE;
+if(!single_value->field_yPosition.match(other_value.yPosition(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.SetGraphicsCursor.");
+}
+return FALSE;
+}
+
+boolean SetGraphicsCursor_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_xPosition.is_bound()
+
+ ||single_value->field_yPosition.is_bound()
+;
+}
+
+boolean SetGraphicsCursor_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_xPosition.is_value()
+ &&single_value->field_yPosition.is_value();
+}
+
+void SetGraphicsCursor_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SetGraphicsCursor SetGraphicsCursor_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 @IsobusVTMessageTypes.SetGraphicsCursor.");
+SetGraphicsCursor ret_val;
+if (single_value->field_xPosition.is_bound()) {
+ret_val.xPosition() = single_value->field_xPosition.valueof();
+}
+if (single_value->field_yPosition.is_bound()) {
+ret_val.yPosition() = single_value->field_yPosition.valueof();
+}
+return ret_val;
+}
+
+void SetGraphicsCursor_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.SetGraphicsCursor.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SetGraphicsCursor_template[list_length];
+}
+
+SetGraphicsCursor_template& SetGraphicsCursor_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.SetGraphicsCursor.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.SetGraphicsCursor.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& SetGraphicsCursor_template::xPosition()
+{
+set_specific();
+return single_value->field_xPosition;
+}
+
+const INTEGER_template& SetGraphicsCursor_template::xPosition() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field xPosition of a non-specific template of type @IsobusVTMessageTypes.SetGraphicsCursor.");
+return single_value->field_xPosition;
+}
+
+INTEGER_template& SetGraphicsCursor_template::yPosition()
+{
+set_specific();
+return single_value->field_yPosition;
+}
+
+const INTEGER_template& SetGraphicsCursor_template::yPosition() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field yPosition of a non-specific template of type @IsobusVTMessageTypes.SetGraphicsCursor.");
+return single_value->field_yPosition;
+}
+
+int SetGraphicsCursor_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SetGraphicsCursor 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 @IsobusVTMessageTypes.SetGraphicsCursor 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 @IsobusVTMessageTypes.SetGraphicsCursor containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SetGraphicsCursor containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SetGraphicsCursor containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SetGraphicsCursor containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.SetGraphicsCursor.");
+  }
+  return 0;
+}
+
+void SetGraphicsCursor_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ xPosition := ");
+single_value->field_xPosition.log();
+TTCN_Logger::log_event_str(", yPosition := ");
+single_value->field_yPosition.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SetGraphicsCursor_template::log_match(const SetGraphicsCursor& 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_xPosition.match(match_value.xPosition(), legacy)){
+TTCN_Logger::log_logmatch_info(".xPosition");
+single_value->field_xPosition.log_match(match_value.xPosition(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_yPosition.match(match_value.yPosition(), legacy)){
+TTCN_Logger::log_logmatch_info(".yPosition");
+single_value->field_yPosition.log_match(match_value.yPosition(), 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("{ xPosition := ");
+single_value->field_xPosition.log_match(match_value.xPosition(), legacy);
+TTCN_Logger::log_event_str(", yPosition := ");
+single_value->field_yPosition.log_match(match_value.yPosition(), 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 SetGraphicsCursor_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_xPosition.encode_text(text_buf);
+single_value->field_yPosition.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 @IsobusVTMessageTypes.SetGraphicsCursor.");
+}
+}
+
+void SetGraphicsCursor_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_xPosition.decode_text(text_buf);
+single_value->field_yPosition.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 SetGraphicsCursor_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 @IsobusVTMessageTypes.SetGraphicsCursor.");
+}
+}
+
+void SetGraphicsCursor_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: {
+    SetGraphicsCursor_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.SetGraphicsCursor 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) xPosition().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) yPosition().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(), "xPosition")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          xPosition().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(), "yPosition")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          yPosition().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 @IsobusVTMessageTypes.SetGraphicsCursor: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.SetGraphicsCursor");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SetGraphicsCursor_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_xPosition.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SetGraphicsCursor");
+single_value->field_yPosition.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SetGraphicsCursor");
+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 : "@IsobusVTMessageTypes.SetGraphicsCursor");
+}
+
+boolean SetGraphicsCursor_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SetGraphicsCursor_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+MoveGraphicsCursor::MoveGraphicsCursor()
+{
+}
+
+MoveGraphicsCursor::MoveGraphicsCursor(const INTEGER& par_xOffset,
+    const INTEGER& par_yOffset)
+  :   field_xOffset(par_xOffset),
+  field_yOffset(par_yOffset)
+{
+}
+
+MoveGraphicsCursor::MoveGraphicsCursor(const MoveGraphicsCursor& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.MoveGraphicsCursor.");
+if (other_value.xOffset().is_bound()) field_xOffset = other_value.xOffset();
+else field_xOffset.clean_up();
+if (other_value.yOffset().is_bound()) field_yOffset = other_value.yOffset();
+else field_yOffset.clean_up();
+}
+
+void MoveGraphicsCursor::clean_up()
+{
+field_xOffset.clean_up();
+field_yOffset.clean_up();
+}
+
+const TTCN_Typedescriptor_t* MoveGraphicsCursor::get_descriptor() const { return &MoveGraphicsCursor_descr_; }
+MoveGraphicsCursor& MoveGraphicsCursor::operator=(const MoveGraphicsCursor& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.MoveGraphicsCursor.");
+  if (other_value.xOffset().is_bound()) field_xOffset = other_value.xOffset();
+  else field_xOffset.clean_up();
+  if (other_value.yOffset().is_bound()) field_yOffset = other_value.yOffset();
+  else field_yOffset.clean_up();
+}
+return *this;
+}
+
+boolean MoveGraphicsCursor::operator==(const MoveGraphicsCursor& other_value) const
+{
+return field_xOffset==other_value.field_xOffset
+  && field_yOffset==other_value.field_yOffset;
+}
+
+boolean MoveGraphicsCursor::is_bound() const
+{
+return (field_xOffset.is_bound())
+  || (field_yOffset.is_bound());
+}
+boolean MoveGraphicsCursor::is_value() const
+{
+return field_xOffset.is_value()
+  && field_yOffset.is_value();
+}
+void MoveGraphicsCursor::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ xOffset := ");
+field_xOffset.log();
+TTCN_Logger::log_event_str(", yOffset := ");
+field_yOffset.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void MoveGraphicsCursor::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 @IsobusVTMessageTypes.MoveGraphicsCursor 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) xOffset().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) yOffset().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(), "xOffset")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          xOffset().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(), "yOffset")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          yOffset().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 @IsobusVTMessageTypes.MoveGraphicsCursor: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.MoveGraphicsCursor");
+  }
+}
+
+void MoveGraphicsCursor::set_implicit_omit()
+{
+if (xOffset().is_bound()) xOffset().set_implicit_omit();
+if (yOffset().is_bound()) yOffset().set_implicit_omit();
+}
+
+void MoveGraphicsCursor::encode_text(Text_Buf& text_buf) const
+{
+field_xOffset.encode_text(text_buf);
+field_yOffset.encode_text(text_buf);
+}
+
+void MoveGraphicsCursor::decode_text(Text_Buf& text_buf)
+{
+field_xOffset.decode_text(text_buf);
+field_yOffset.decode_text(text_buf);
+}
+
+void MoveGraphicsCursor::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void MoveGraphicsCursor::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int MoveGraphicsCursor::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, XOffsetType_descr_.raw->forceomit);
+  decoded_field_length = field_xOffset.RAW_decode(XOffsetType_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, YOffsetType_descr_.raw->forceomit);
+  decoded_field_length = field_yOffset.RAW_decode(YOffsetType_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 MoveGraphicsCursor::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, XOffsetType_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, YOffsetType_descr_.raw);
+  encoded_length += field_xOffset.RAW_encode(XOffsetType_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_yOffset.RAW_encode(YOffsetType_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct MoveGraphicsCursor_template::single_value_struct {
+INTEGER_template field_xOffset;
+INTEGER_template field_yOffset;
+};
+
+void MoveGraphicsCursor_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_xOffset = ANY_VALUE;
+single_value->field_yOffset = ANY_VALUE;
+}
+}
+}
+
+void MoveGraphicsCursor_template::copy_value(const MoveGraphicsCursor& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.xOffset().is_bound()) {
+  single_value->field_xOffset = other_value.xOffset();
+} else {
+  single_value->field_xOffset.clean_up();
+}
+if (other_value.yOffset().is_bound()) {
+  single_value->field_yOffset = other_value.yOffset();
+} else {
+  single_value->field_yOffset.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void MoveGraphicsCursor_template::copy_template(const MoveGraphicsCursor_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.xOffset().get_selection()) {
+single_value->field_xOffset = other_value.xOffset();
+} else {
+single_value->field_xOffset.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.yOffset().get_selection()) {
+single_value->field_yOffset = other_value.yOffset();
+} else {
+single_value->field_yOffset.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new MoveGraphicsCursor_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.MoveGraphicsCursor.");
+break;
+}
+set_selection(other_value);
+}
+
+MoveGraphicsCursor_template::MoveGraphicsCursor_template()
+{
+}
+
+MoveGraphicsCursor_template::MoveGraphicsCursor_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+MoveGraphicsCursor_template::MoveGraphicsCursor_template(const MoveGraphicsCursor& other_value)
+{
+copy_value(other_value);
+}
+
+MoveGraphicsCursor_template::MoveGraphicsCursor_template(const OPTIONAL<MoveGraphicsCursor>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const MoveGraphicsCursor&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.MoveGraphicsCursor from an unbound optional field.");
+}
+}
+
+MoveGraphicsCursor_template::MoveGraphicsCursor_template(const MoveGraphicsCursor_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+MoveGraphicsCursor_template::~MoveGraphicsCursor_template()
+{
+clean_up();
+}
+
+MoveGraphicsCursor_template& MoveGraphicsCursor_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+MoveGraphicsCursor_template& MoveGraphicsCursor_template::operator=(const MoveGraphicsCursor& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+MoveGraphicsCursor_template& MoveGraphicsCursor_template::operator=(const OPTIONAL<MoveGraphicsCursor>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const MoveGraphicsCursor&)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 @IsobusVTMessageTypes.MoveGraphicsCursor.");
+}
+return *this;
+}
+
+MoveGraphicsCursor_template& MoveGraphicsCursor_template::operator=(const MoveGraphicsCursor_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean MoveGraphicsCursor_template::match(const MoveGraphicsCursor& 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.xOffset().is_bound()) return FALSE;
+if(!single_value->field_xOffset.match(other_value.xOffset(), legacy))return FALSE;
+if(!other_value.yOffset().is_bound()) return FALSE;
+if(!single_value->field_yOffset.match(other_value.yOffset(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.MoveGraphicsCursor.");
+}
+return FALSE;
+}
+
+boolean MoveGraphicsCursor_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_xOffset.is_bound()
+
+ ||single_value->field_yOffset.is_bound()
+;
+}
+
+boolean MoveGraphicsCursor_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_xOffset.is_value()
+ &&single_value->field_yOffset.is_value();
+}
+
+void MoveGraphicsCursor_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+MoveGraphicsCursor MoveGraphicsCursor_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 @IsobusVTMessageTypes.MoveGraphicsCursor.");
+MoveGraphicsCursor ret_val;
+if (single_value->field_xOffset.is_bound()) {
+ret_val.xOffset() = single_value->field_xOffset.valueof();
+}
+if (single_value->field_yOffset.is_bound()) {
+ret_val.yOffset() = single_value->field_yOffset.valueof();
+}
+return ret_val;
+}
+
+void MoveGraphicsCursor_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.MoveGraphicsCursor.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new MoveGraphicsCursor_template[list_length];
+}
+
+MoveGraphicsCursor_template& MoveGraphicsCursor_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.MoveGraphicsCursor.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.MoveGraphicsCursor.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& MoveGraphicsCursor_template::xOffset()
+{
+set_specific();
+return single_value->field_xOffset;
+}
+
+const INTEGER_template& MoveGraphicsCursor_template::xOffset() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field xOffset of a non-specific template of type @IsobusVTMessageTypes.MoveGraphicsCursor.");
+return single_value->field_xOffset;
+}
+
+INTEGER_template& MoveGraphicsCursor_template::yOffset()
+{
+set_specific();
+return single_value->field_yOffset;
+}
+
+const INTEGER_template& MoveGraphicsCursor_template::yOffset() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field yOffset of a non-specific template of type @IsobusVTMessageTypes.MoveGraphicsCursor.");
+return single_value->field_yOffset;
+}
+
+int MoveGraphicsCursor_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.MoveGraphicsCursor 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 @IsobusVTMessageTypes.MoveGraphicsCursor 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 @IsobusVTMessageTypes.MoveGraphicsCursor containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.MoveGraphicsCursor containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.MoveGraphicsCursor containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.MoveGraphicsCursor containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.MoveGraphicsCursor.");
+  }
+  return 0;
+}
+
+void MoveGraphicsCursor_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ xOffset := ");
+single_value->field_xOffset.log();
+TTCN_Logger::log_event_str(", yOffset := ");
+single_value->field_yOffset.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void MoveGraphicsCursor_template::log_match(const MoveGraphicsCursor& 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_xOffset.match(match_value.xOffset(), legacy)){
+TTCN_Logger::log_logmatch_info(".xOffset");
+single_value->field_xOffset.log_match(match_value.xOffset(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_yOffset.match(match_value.yOffset(), legacy)){
+TTCN_Logger::log_logmatch_info(".yOffset");
+single_value->field_yOffset.log_match(match_value.yOffset(), 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("{ xOffset := ");
+single_value->field_xOffset.log_match(match_value.xOffset(), legacy);
+TTCN_Logger::log_event_str(", yOffset := ");
+single_value->field_yOffset.log_match(match_value.yOffset(), 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 MoveGraphicsCursor_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_xOffset.encode_text(text_buf);
+single_value->field_yOffset.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 @IsobusVTMessageTypes.MoveGraphicsCursor.");
+}
+}
+
+void MoveGraphicsCursor_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_xOffset.decode_text(text_buf);
+single_value->field_yOffset.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 MoveGraphicsCursor_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 @IsobusVTMessageTypes.MoveGraphicsCursor.");
+}
+}
+
+void MoveGraphicsCursor_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: {
+    MoveGraphicsCursor_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.MoveGraphicsCursor 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) xOffset().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) yOffset().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(), "xOffset")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          xOffset().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(), "yOffset")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          yOffset().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 @IsobusVTMessageTypes.MoveGraphicsCursor: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.MoveGraphicsCursor");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void MoveGraphicsCursor_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_xOffset.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.MoveGraphicsCursor");
+single_value->field_yOffset.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.MoveGraphicsCursor");
+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 : "@IsobusVTMessageTypes.MoveGraphicsCursor");
+}
+
+boolean MoveGraphicsCursor_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean MoveGraphicsCursor_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+SetForegroundColour::SetForegroundColour()
+{
+}
+
+SetForegroundColour::SetForegroundColour(const INTEGER& par_foregroundColor,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_foregroundColor(par_foregroundColor),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+SetForegroundColour::SetForegroundColour(const SetForegroundColour& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.SetForegroundColour.");
+if (other_value.foregroundColor().is_bound()) field_foregroundColor = other_value.foregroundColor();
+else field_foregroundColor.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void SetForegroundColour::clean_up()
+{
+field_foregroundColor.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SetForegroundColour::get_descriptor() const { return &SetForegroundColour_descr_; }
+SetForegroundColour& SetForegroundColour::operator=(const SetForegroundColour& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.SetForegroundColour.");
+  if (other_value.foregroundColor().is_bound()) field_foregroundColor = other_value.foregroundColor();
+  else field_foregroundColor.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean SetForegroundColour::operator==(const SetForegroundColour& other_value) const
+{
+return field_foregroundColor==other_value.field_foregroundColor
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean SetForegroundColour::is_bound() const
+{
+return (field_foregroundColor.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean SetForegroundColour::is_value() const
+{
+return field_foregroundColor.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void SetForegroundColour::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ foregroundColor := ");
+field_foregroundColor.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SetForegroundColour::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 @IsobusVTMessageTypes.SetForegroundColour 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) foregroundColor().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "foregroundColor")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          foregroundColor().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.SetForegroundColour: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.SetForegroundColour");
+  }
+}
+
+void SetForegroundColour::set_implicit_omit()
+{
+if (foregroundColor().is_bound()) foregroundColor().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void SetForegroundColour::encode_text(Text_Buf& text_buf) const
+{
+field_foregroundColor.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void SetForegroundColour::decode_text(Text_Buf& text_buf)
+{
+field_foregroundColor.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void SetForegroundColour::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void SetForegroundColour::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int SetForegroundColour::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, ColorType_descr_.raw->forceomit);
+  decoded_field_length = field_foregroundColor.RAW_decode(ColorType_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, SetForegroundColour_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(SetForegroundColour_reserved6_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, SetForegroundColour_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(SetForegroundColour_reserved7_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, SetForegroundColour_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(SetForegroundColour_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int SetForegroundColour::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, ColorType_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, SetForegroundColour_reserved6_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, SetForegroundColour_reserved7_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, SetForegroundColour_reserved8_descr_.raw);
+  encoded_length += field_foregroundColor.RAW_encode(ColorType_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved6.RAW_encode(SetForegroundColour_reserved6_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved7.RAW_encode(SetForegroundColour_reserved7_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved8.RAW_encode(SetForegroundColour_reserved8_descr_, *myleaf.body.node.nodes[3]);
+  return myleaf.length = encoded_length;
+}
+
+struct SetForegroundColour_template::single_value_struct {
+INTEGER_template field_foregroundColor;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void SetForegroundColour_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_foregroundColor = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void SetForegroundColour_template::copy_value(const SetForegroundColour& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.foregroundColor().is_bound()) {
+  single_value->field_foregroundColor = other_value.foregroundColor();
+} else {
+  single_value->field_foregroundColor.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SetForegroundColour_template::copy_template(const SetForegroundColour_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.foregroundColor().get_selection()) {
+single_value->field_foregroundColor = other_value.foregroundColor();
+} else {
+single_value->field_foregroundColor.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SetForegroundColour_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.SetForegroundColour.");
+break;
+}
+set_selection(other_value);
+}
+
+SetForegroundColour_template::SetForegroundColour_template()
+{
+}
+
+SetForegroundColour_template::SetForegroundColour_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SetForegroundColour_template::SetForegroundColour_template(const SetForegroundColour& other_value)
+{
+copy_value(other_value);
+}
+
+SetForegroundColour_template::SetForegroundColour_template(const OPTIONAL<SetForegroundColour>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SetForegroundColour&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.SetForegroundColour from an unbound optional field.");
+}
+}
+
+SetForegroundColour_template::SetForegroundColour_template(const SetForegroundColour_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SetForegroundColour_template::~SetForegroundColour_template()
+{
+clean_up();
+}
+
+SetForegroundColour_template& SetForegroundColour_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SetForegroundColour_template& SetForegroundColour_template::operator=(const SetForegroundColour& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SetForegroundColour_template& SetForegroundColour_template::operator=(const OPTIONAL<SetForegroundColour>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SetForegroundColour&)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 @IsobusVTMessageTypes.SetForegroundColour.");
+}
+return *this;
+}
+
+SetForegroundColour_template& SetForegroundColour_template::operator=(const SetForegroundColour_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SetForegroundColour_template::match(const SetForegroundColour& 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.foregroundColor().is_bound()) return FALSE;
+if(!single_value->field_foregroundColor.match(other_value.foregroundColor(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.SetForegroundColour.");
+}
+return FALSE;
+}
+
+boolean SetForegroundColour_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_foregroundColor.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean SetForegroundColour_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_foregroundColor.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void SetForegroundColour_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SetForegroundColour SetForegroundColour_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 @IsobusVTMessageTypes.SetForegroundColour.");
+SetForegroundColour ret_val;
+if (single_value->field_foregroundColor.is_bound()) {
+ret_val.foregroundColor() = single_value->field_foregroundColor.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void SetForegroundColour_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.SetForegroundColour.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SetForegroundColour_template[list_length];
+}
+
+SetForegroundColour_template& SetForegroundColour_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.SetForegroundColour.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.SetForegroundColour.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& SetForegroundColour_template::foregroundColor()
+{
+set_specific();
+return single_value->field_foregroundColor;
+}
+
+const INTEGER_template& SetForegroundColour_template::foregroundColor() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field foregroundColor of a non-specific template of type @IsobusVTMessageTypes.SetForegroundColour.");
+return single_value->field_foregroundColor;
+}
+
+OCTETSTRING_template& SetForegroundColour_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& SetForegroundColour_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.SetForegroundColour.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& SetForegroundColour_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& SetForegroundColour_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.SetForegroundColour.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& SetForegroundColour_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& SetForegroundColour_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.SetForegroundColour.");
+return single_value->field_reserved8;
+}
+
+int SetForegroundColour_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SetForegroundColour 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 @IsobusVTMessageTypes.SetForegroundColour 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 @IsobusVTMessageTypes.SetForegroundColour containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SetForegroundColour containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SetForegroundColour containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SetForegroundColour containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.SetForegroundColour.");
+  }
+  return 0;
+}
+
+void SetForegroundColour_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ foregroundColor := ");
+single_value->field_foregroundColor.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SetForegroundColour_template::log_match(const SetForegroundColour& 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_foregroundColor.match(match_value.foregroundColor(), legacy)){
+TTCN_Logger::log_logmatch_info(".foregroundColor");
+single_value->field_foregroundColor.log_match(match_value.foregroundColor(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ foregroundColor := ");
+single_value->field_foregroundColor.log_match(match_value.foregroundColor(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 SetForegroundColour_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_foregroundColor.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.SetForegroundColour.");
+}
+}
+
+void SetForegroundColour_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_foregroundColor.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 SetForegroundColour_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 @IsobusVTMessageTypes.SetForegroundColour.");
+}
+}
+
+void SetForegroundColour_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: {
+    SetForegroundColour_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.SetForegroundColour 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) foregroundColor().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "foregroundColor")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          foregroundColor().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.SetForegroundColour: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.SetForegroundColour");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SetForegroundColour_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_foregroundColor.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SetForegroundColour");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SetForegroundColour");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SetForegroundColour");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SetForegroundColour");
+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 : "@IsobusVTMessageTypes.SetForegroundColour");
+}
+
+boolean SetForegroundColour_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SetForegroundColour_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+SetBackgroundColour::SetBackgroundColour()
+{
+}
+
+SetBackgroundColour::SetBackgroundColour(const INTEGER& par_backgroundColor,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_backgroundColor(par_backgroundColor),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+SetBackgroundColour::SetBackgroundColour(const SetBackgroundColour& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.SetBackgroundColour.");
+if (other_value.backgroundColor().is_bound()) field_backgroundColor = other_value.backgroundColor();
+else field_backgroundColor.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void SetBackgroundColour::clean_up()
+{
+field_backgroundColor.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SetBackgroundColour::get_descriptor() const { return &SetBackgroundColour_descr_; }
+SetBackgroundColour& SetBackgroundColour::operator=(const SetBackgroundColour& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.SetBackgroundColour.");
+  if (other_value.backgroundColor().is_bound()) field_backgroundColor = other_value.backgroundColor();
+  else field_backgroundColor.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean SetBackgroundColour::operator==(const SetBackgroundColour& other_value) const
+{
+return field_backgroundColor==other_value.field_backgroundColor
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean SetBackgroundColour::is_bound() const
+{
+return (field_backgroundColor.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean SetBackgroundColour::is_value() const
+{
+return field_backgroundColor.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void SetBackgroundColour::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ backgroundColor := ");
+field_backgroundColor.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SetBackgroundColour::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 @IsobusVTMessageTypes.SetBackgroundColour 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) backgroundColor().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "backgroundColor")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          backgroundColor().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.SetBackgroundColour: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.SetBackgroundColour");
+  }
+}
+
+void SetBackgroundColour::set_implicit_omit()
+{
+if (backgroundColor().is_bound()) backgroundColor().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void SetBackgroundColour::encode_text(Text_Buf& text_buf) const
+{
+field_backgroundColor.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void SetBackgroundColour::decode_text(Text_Buf& text_buf)
+{
+field_backgroundColor.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void SetBackgroundColour::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void SetBackgroundColour::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int SetBackgroundColour::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, ColorType_descr_.raw->forceomit);
+  decoded_field_length = field_backgroundColor.RAW_decode(ColorType_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, SetBackgroundColour_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(SetBackgroundColour_reserved6_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, SetBackgroundColour_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(SetBackgroundColour_reserved7_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, SetBackgroundColour_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(SetBackgroundColour_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int SetBackgroundColour::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, ColorType_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, SetBackgroundColour_reserved6_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, SetBackgroundColour_reserved7_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, SetBackgroundColour_reserved8_descr_.raw);
+  encoded_length += field_backgroundColor.RAW_encode(ColorType_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved6.RAW_encode(SetBackgroundColour_reserved6_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved7.RAW_encode(SetBackgroundColour_reserved7_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved8.RAW_encode(SetBackgroundColour_reserved8_descr_, *myleaf.body.node.nodes[3]);
+  return myleaf.length = encoded_length;
+}
+
+struct SetBackgroundColour_template::single_value_struct {
+INTEGER_template field_backgroundColor;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void SetBackgroundColour_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_backgroundColor = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void SetBackgroundColour_template::copy_value(const SetBackgroundColour& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.backgroundColor().is_bound()) {
+  single_value->field_backgroundColor = other_value.backgroundColor();
+} else {
+  single_value->field_backgroundColor.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SetBackgroundColour_template::copy_template(const SetBackgroundColour_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.backgroundColor().get_selection()) {
+single_value->field_backgroundColor = other_value.backgroundColor();
+} else {
+single_value->field_backgroundColor.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SetBackgroundColour_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.SetBackgroundColour.");
+break;
+}
+set_selection(other_value);
+}
+
+SetBackgroundColour_template::SetBackgroundColour_template()
+{
+}
+
+SetBackgroundColour_template::SetBackgroundColour_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SetBackgroundColour_template::SetBackgroundColour_template(const SetBackgroundColour& other_value)
+{
+copy_value(other_value);
+}
+
+SetBackgroundColour_template::SetBackgroundColour_template(const OPTIONAL<SetBackgroundColour>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SetBackgroundColour&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.SetBackgroundColour from an unbound optional field.");
+}
+}
+
+SetBackgroundColour_template::SetBackgroundColour_template(const SetBackgroundColour_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SetBackgroundColour_template::~SetBackgroundColour_template()
+{
+clean_up();
+}
+
+SetBackgroundColour_template& SetBackgroundColour_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SetBackgroundColour_template& SetBackgroundColour_template::operator=(const SetBackgroundColour& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SetBackgroundColour_template& SetBackgroundColour_template::operator=(const OPTIONAL<SetBackgroundColour>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SetBackgroundColour&)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 @IsobusVTMessageTypes.SetBackgroundColour.");
+}
+return *this;
+}
+
+SetBackgroundColour_template& SetBackgroundColour_template::operator=(const SetBackgroundColour_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SetBackgroundColour_template::match(const SetBackgroundColour& 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.backgroundColor().is_bound()) return FALSE;
+if(!single_value->field_backgroundColor.match(other_value.backgroundColor(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.SetBackgroundColour.");
+}
+return FALSE;
+}
+
+boolean SetBackgroundColour_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_backgroundColor.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean SetBackgroundColour_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_backgroundColor.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void SetBackgroundColour_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SetBackgroundColour SetBackgroundColour_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 @IsobusVTMessageTypes.SetBackgroundColour.");
+SetBackgroundColour ret_val;
+if (single_value->field_backgroundColor.is_bound()) {
+ret_val.backgroundColor() = single_value->field_backgroundColor.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void SetBackgroundColour_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.SetBackgroundColour.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SetBackgroundColour_template[list_length];
+}
+
+SetBackgroundColour_template& SetBackgroundColour_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.SetBackgroundColour.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.SetBackgroundColour.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& SetBackgroundColour_template::backgroundColor()
+{
+set_specific();
+return single_value->field_backgroundColor;
+}
+
+const INTEGER_template& SetBackgroundColour_template::backgroundColor() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field backgroundColor of a non-specific template of type @IsobusVTMessageTypes.SetBackgroundColour.");
+return single_value->field_backgroundColor;
+}
+
+OCTETSTRING_template& SetBackgroundColour_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& SetBackgroundColour_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.SetBackgroundColour.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& SetBackgroundColour_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& SetBackgroundColour_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.SetBackgroundColour.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& SetBackgroundColour_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& SetBackgroundColour_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.SetBackgroundColour.");
+return single_value->field_reserved8;
+}
+
+int SetBackgroundColour_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SetBackgroundColour 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 @IsobusVTMessageTypes.SetBackgroundColour 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 @IsobusVTMessageTypes.SetBackgroundColour containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SetBackgroundColour containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SetBackgroundColour containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SetBackgroundColour containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.SetBackgroundColour.");
+  }
+  return 0;
+}
+
+void SetBackgroundColour_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ backgroundColor := ");
+single_value->field_backgroundColor.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SetBackgroundColour_template::log_match(const SetBackgroundColour& 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_backgroundColor.match(match_value.backgroundColor(), legacy)){
+TTCN_Logger::log_logmatch_info(".backgroundColor");
+single_value->field_backgroundColor.log_match(match_value.backgroundColor(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ backgroundColor := ");
+single_value->field_backgroundColor.log_match(match_value.backgroundColor(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 SetBackgroundColour_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_backgroundColor.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.SetBackgroundColour.");
+}
+}
+
+void SetBackgroundColour_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_backgroundColor.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 SetBackgroundColour_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 @IsobusVTMessageTypes.SetBackgroundColour.");
+}
+}
+
+void SetBackgroundColour_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: {
+    SetBackgroundColour_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.SetBackgroundColour 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) backgroundColor().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "backgroundColor")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          backgroundColor().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.SetBackgroundColour: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.SetBackgroundColour");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SetBackgroundColour_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_backgroundColor.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SetBackgroundColour");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SetBackgroundColour");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SetBackgroundColour");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SetBackgroundColour");
+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 : "@IsobusVTMessageTypes.SetBackgroundColour");
+}
+
+boolean SetBackgroundColour_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SetBackgroundColour_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+SetLineAttributesObjectID::SetLineAttributesObjectID()
+{
+}
+
+SetLineAttributesObjectID::SetLineAttributesObjectID(const INTEGER& par_objectIDofLineAttributesObject,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_objectIDofLineAttributesObject(par_objectIDofLineAttributesObject),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+SetLineAttributesObjectID::SetLineAttributesObjectID(const SetLineAttributesObjectID& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.SetLineAttributesObjectID.");
+if (other_value.objectIDofLineAttributesObject().is_bound()) field_objectIDofLineAttributesObject = other_value.objectIDofLineAttributesObject();
+else field_objectIDofLineAttributesObject.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void SetLineAttributesObjectID::clean_up()
+{
+field_objectIDofLineAttributesObject.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SetLineAttributesObjectID::get_descriptor() const { return &SetLineAttributesObjectID_descr_; }
+SetLineAttributesObjectID& SetLineAttributesObjectID::operator=(const SetLineAttributesObjectID& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.SetLineAttributesObjectID.");
+  if (other_value.objectIDofLineAttributesObject().is_bound()) field_objectIDofLineAttributesObject = other_value.objectIDofLineAttributesObject();
+  else field_objectIDofLineAttributesObject.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean SetLineAttributesObjectID::operator==(const SetLineAttributesObjectID& other_value) const
+{
+return field_objectIDofLineAttributesObject==other_value.field_objectIDofLineAttributesObject
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean SetLineAttributesObjectID::is_bound() const
+{
+return (field_objectIDofLineAttributesObject.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean SetLineAttributesObjectID::is_value() const
+{
+return field_objectIDofLineAttributesObject.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void SetLineAttributesObjectID::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ objectIDofLineAttributesObject := ");
+field_objectIDofLineAttributesObject.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SetLineAttributesObjectID::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 @IsobusVTMessageTypes.SetLineAttributesObjectID 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) objectIDofLineAttributesObject().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "objectIDofLineAttributesObject")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofLineAttributesObject().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.SetLineAttributesObjectID: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.SetLineAttributesObjectID");
+  }
+}
+
+void SetLineAttributesObjectID::set_implicit_omit()
+{
+if (objectIDofLineAttributesObject().is_bound()) objectIDofLineAttributesObject().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void SetLineAttributesObjectID::encode_text(Text_Buf& text_buf) const
+{
+field_objectIDofLineAttributesObject.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void SetLineAttributesObjectID::decode_text(Text_Buf& text_buf)
+{
+field_objectIDofLineAttributesObject.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void SetLineAttributesObjectID::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void SetLineAttributesObjectID::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int SetLineAttributesObjectID::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, AnyObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectIDofLineAttributesObject.RAW_decode(AnyObjectID_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, SetLineAttributesObjectID_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(SetLineAttributesObjectID_reserved7_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, SetLineAttributesObjectID_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(SetLineAttributesObjectID_reserved8_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 SetLineAttributesObjectID::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, AnyObjectID_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, SetLineAttributesObjectID_reserved7_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, SetLineAttributesObjectID_reserved8_descr_.raw);
+  encoded_length += field_objectIDofLineAttributesObject.RAW_encode(AnyObjectID_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved7.RAW_encode(SetLineAttributesObjectID_reserved7_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved8.RAW_encode(SetLineAttributesObjectID_reserved8_descr_, *myleaf.body.node.nodes[2]);
+  return myleaf.length = encoded_length;
+}
+
+struct SetLineAttributesObjectID_template::single_value_struct {
+INTEGER_template field_objectIDofLineAttributesObject;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void SetLineAttributesObjectID_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_objectIDofLineAttributesObject = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void SetLineAttributesObjectID_template::copy_value(const SetLineAttributesObjectID& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.objectIDofLineAttributesObject().is_bound()) {
+  single_value->field_objectIDofLineAttributesObject = other_value.objectIDofLineAttributesObject();
+} else {
+  single_value->field_objectIDofLineAttributesObject.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SetLineAttributesObjectID_template::copy_template(const SetLineAttributesObjectID_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.objectIDofLineAttributesObject().get_selection()) {
+single_value->field_objectIDofLineAttributesObject = other_value.objectIDofLineAttributesObject();
+} else {
+single_value->field_objectIDofLineAttributesObject.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SetLineAttributesObjectID_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.SetLineAttributesObjectID.");
+break;
+}
+set_selection(other_value);
+}
+
+SetLineAttributesObjectID_template::SetLineAttributesObjectID_template()
+{
+}
+
+SetLineAttributesObjectID_template::SetLineAttributesObjectID_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SetLineAttributesObjectID_template::SetLineAttributesObjectID_template(const SetLineAttributesObjectID& other_value)
+{
+copy_value(other_value);
+}
+
+SetLineAttributesObjectID_template::SetLineAttributesObjectID_template(const OPTIONAL<SetLineAttributesObjectID>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SetLineAttributesObjectID&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.SetLineAttributesObjectID from an unbound optional field.");
+}
+}
+
+SetLineAttributesObjectID_template::SetLineAttributesObjectID_template(const SetLineAttributesObjectID_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SetLineAttributesObjectID_template::~SetLineAttributesObjectID_template()
+{
+clean_up();
+}
+
+SetLineAttributesObjectID_template& SetLineAttributesObjectID_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SetLineAttributesObjectID_template& SetLineAttributesObjectID_template::operator=(const SetLineAttributesObjectID& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SetLineAttributesObjectID_template& SetLineAttributesObjectID_template::operator=(const OPTIONAL<SetLineAttributesObjectID>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SetLineAttributesObjectID&)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 @IsobusVTMessageTypes.SetLineAttributesObjectID.");
+}
+return *this;
+}
+
+SetLineAttributesObjectID_template& SetLineAttributesObjectID_template::operator=(const SetLineAttributesObjectID_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SetLineAttributesObjectID_template::match(const SetLineAttributesObjectID& 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.objectIDofLineAttributesObject().is_bound()) return FALSE;
+if(!single_value->field_objectIDofLineAttributesObject.match(other_value.objectIDofLineAttributesObject(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.SetLineAttributesObjectID.");
+}
+return FALSE;
+}
+
+boolean SetLineAttributesObjectID_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_objectIDofLineAttributesObject.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean SetLineAttributesObjectID_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_objectIDofLineAttributesObject.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void SetLineAttributesObjectID_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SetLineAttributesObjectID SetLineAttributesObjectID_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 @IsobusVTMessageTypes.SetLineAttributesObjectID.");
+SetLineAttributesObjectID ret_val;
+if (single_value->field_objectIDofLineAttributesObject.is_bound()) {
+ret_val.objectIDofLineAttributesObject() = single_value->field_objectIDofLineAttributesObject.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void SetLineAttributesObjectID_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.SetLineAttributesObjectID.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SetLineAttributesObjectID_template[list_length];
+}
+
+SetLineAttributesObjectID_template& SetLineAttributesObjectID_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.SetLineAttributesObjectID.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.SetLineAttributesObjectID.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& SetLineAttributesObjectID_template::objectIDofLineAttributesObject()
+{
+set_specific();
+return single_value->field_objectIDofLineAttributesObject;
+}
+
+const INTEGER_template& SetLineAttributesObjectID_template::objectIDofLineAttributesObject() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectIDofLineAttributesObject of a non-specific template of type @IsobusVTMessageTypes.SetLineAttributesObjectID.");
+return single_value->field_objectIDofLineAttributesObject;
+}
+
+OCTETSTRING_template& SetLineAttributesObjectID_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& SetLineAttributesObjectID_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.SetLineAttributesObjectID.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& SetLineAttributesObjectID_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& SetLineAttributesObjectID_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.SetLineAttributesObjectID.");
+return single_value->field_reserved8;
+}
+
+int SetLineAttributesObjectID_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SetLineAttributesObjectID 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 @IsobusVTMessageTypes.SetLineAttributesObjectID 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 @IsobusVTMessageTypes.SetLineAttributesObjectID containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SetLineAttributesObjectID containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SetLineAttributesObjectID containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SetLineAttributesObjectID containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.SetLineAttributesObjectID.");
+  }
+  return 0;
+}
+
+void SetLineAttributesObjectID_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ objectIDofLineAttributesObject := ");
+single_value->field_objectIDofLineAttributesObject.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SetLineAttributesObjectID_template::log_match(const SetLineAttributesObjectID& 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_objectIDofLineAttributesObject.match(match_value.objectIDofLineAttributesObject(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectIDofLineAttributesObject");
+single_value->field_objectIDofLineAttributesObject.log_match(match_value.objectIDofLineAttributesObject(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ objectIDofLineAttributesObject := ");
+single_value->field_objectIDofLineAttributesObject.log_match(match_value.objectIDofLineAttributesObject(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 SetLineAttributesObjectID_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_objectIDofLineAttributesObject.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.SetLineAttributesObjectID.");
+}
+}
+
+void SetLineAttributesObjectID_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_objectIDofLineAttributesObject.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 SetLineAttributesObjectID_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 @IsobusVTMessageTypes.SetLineAttributesObjectID.");
+}
+}
+
+void SetLineAttributesObjectID_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: {
+    SetLineAttributesObjectID_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.SetLineAttributesObjectID 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) objectIDofLineAttributesObject().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "objectIDofLineAttributesObject")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofLineAttributesObject().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.SetLineAttributesObjectID: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.SetLineAttributesObjectID");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SetLineAttributesObjectID_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_objectIDofLineAttributesObject.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SetLineAttributesObjectID");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SetLineAttributesObjectID");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SetLineAttributesObjectID");
+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 : "@IsobusVTMessageTypes.SetLineAttributesObjectID");
+}
+
+boolean SetLineAttributesObjectID_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SetLineAttributesObjectID_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+SetFileAttributesObjectID::SetFileAttributesObjectID()
+{
+}
+
+SetFileAttributesObjectID::SetFileAttributesObjectID(const INTEGER& par_objectIDofFillAttributesObject,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_objectIDofFillAttributesObject(par_objectIDofFillAttributesObject),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+SetFileAttributesObjectID::SetFileAttributesObjectID(const SetFileAttributesObjectID& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.SetFileAttributesObjectID.");
+if (other_value.objectIDofFillAttributesObject().is_bound()) field_objectIDofFillAttributesObject = other_value.objectIDofFillAttributesObject();
+else field_objectIDofFillAttributesObject.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void SetFileAttributesObjectID::clean_up()
+{
+field_objectIDofFillAttributesObject.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SetFileAttributesObjectID::get_descriptor() const { return &SetFileAttributesObjectID_descr_; }
+SetFileAttributesObjectID& SetFileAttributesObjectID::operator=(const SetFileAttributesObjectID& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.SetFileAttributesObjectID.");
+  if (other_value.objectIDofFillAttributesObject().is_bound()) field_objectIDofFillAttributesObject = other_value.objectIDofFillAttributesObject();
+  else field_objectIDofFillAttributesObject.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean SetFileAttributesObjectID::operator==(const SetFileAttributesObjectID& other_value) const
+{
+return field_objectIDofFillAttributesObject==other_value.field_objectIDofFillAttributesObject
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean SetFileAttributesObjectID::is_bound() const
+{
+return (field_objectIDofFillAttributesObject.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean SetFileAttributesObjectID::is_value() const
+{
+return field_objectIDofFillAttributesObject.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void SetFileAttributesObjectID::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ objectIDofFillAttributesObject := ");
+field_objectIDofFillAttributesObject.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SetFileAttributesObjectID::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 @IsobusVTMessageTypes.SetFileAttributesObjectID 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) objectIDofFillAttributesObject().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "objectIDofFillAttributesObject")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofFillAttributesObject().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.SetFileAttributesObjectID: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.SetFileAttributesObjectID");
+  }
+}
+
+void SetFileAttributesObjectID::set_implicit_omit()
+{
+if (objectIDofFillAttributesObject().is_bound()) objectIDofFillAttributesObject().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void SetFileAttributesObjectID::encode_text(Text_Buf& text_buf) const
+{
+field_objectIDofFillAttributesObject.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void SetFileAttributesObjectID::decode_text(Text_Buf& text_buf)
+{
+field_objectIDofFillAttributesObject.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void SetFileAttributesObjectID::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void SetFileAttributesObjectID::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int SetFileAttributesObjectID::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, AnyObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectIDofFillAttributesObject.RAW_decode(AnyObjectID_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, SetFileAttributesObjectID_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(SetFileAttributesObjectID_reserved7_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, SetFileAttributesObjectID_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(SetFileAttributesObjectID_reserved8_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 SetFileAttributesObjectID::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, AnyObjectID_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, SetFileAttributesObjectID_reserved7_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, SetFileAttributesObjectID_reserved8_descr_.raw);
+  encoded_length += field_objectIDofFillAttributesObject.RAW_encode(AnyObjectID_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved7.RAW_encode(SetFileAttributesObjectID_reserved7_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved8.RAW_encode(SetFileAttributesObjectID_reserved8_descr_, *myleaf.body.node.nodes[2]);
+  return myleaf.length = encoded_length;
+}
+
+struct SetFileAttributesObjectID_template::single_value_struct {
+INTEGER_template field_objectIDofFillAttributesObject;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void SetFileAttributesObjectID_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_objectIDofFillAttributesObject = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void SetFileAttributesObjectID_template::copy_value(const SetFileAttributesObjectID& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.objectIDofFillAttributesObject().is_bound()) {
+  single_value->field_objectIDofFillAttributesObject = other_value.objectIDofFillAttributesObject();
+} else {
+  single_value->field_objectIDofFillAttributesObject.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SetFileAttributesObjectID_template::copy_template(const SetFileAttributesObjectID_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.objectIDofFillAttributesObject().get_selection()) {
+single_value->field_objectIDofFillAttributesObject = other_value.objectIDofFillAttributesObject();
+} else {
+single_value->field_objectIDofFillAttributesObject.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SetFileAttributesObjectID_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.SetFileAttributesObjectID.");
+break;
+}
+set_selection(other_value);
+}
+
+SetFileAttributesObjectID_template::SetFileAttributesObjectID_template()
+{
+}
+
+SetFileAttributesObjectID_template::SetFileAttributesObjectID_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SetFileAttributesObjectID_template::SetFileAttributesObjectID_template(const SetFileAttributesObjectID& other_value)
+{
+copy_value(other_value);
+}
+
+SetFileAttributesObjectID_template::SetFileAttributesObjectID_template(const OPTIONAL<SetFileAttributesObjectID>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SetFileAttributesObjectID&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.SetFileAttributesObjectID from an unbound optional field.");
+}
+}
+
+SetFileAttributesObjectID_template::SetFileAttributesObjectID_template(const SetFileAttributesObjectID_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SetFileAttributesObjectID_template::~SetFileAttributesObjectID_template()
+{
+clean_up();
+}
+
+SetFileAttributesObjectID_template& SetFileAttributesObjectID_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SetFileAttributesObjectID_template& SetFileAttributesObjectID_template::operator=(const SetFileAttributesObjectID& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SetFileAttributesObjectID_template& SetFileAttributesObjectID_template::operator=(const OPTIONAL<SetFileAttributesObjectID>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SetFileAttributesObjectID&)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 @IsobusVTMessageTypes.SetFileAttributesObjectID.");
+}
+return *this;
+}
+
+SetFileAttributesObjectID_template& SetFileAttributesObjectID_template::operator=(const SetFileAttributesObjectID_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SetFileAttributesObjectID_template::match(const SetFileAttributesObjectID& 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.objectIDofFillAttributesObject().is_bound()) return FALSE;
+if(!single_value->field_objectIDofFillAttributesObject.match(other_value.objectIDofFillAttributesObject(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.SetFileAttributesObjectID.");
+}
+return FALSE;
+}
+
+boolean SetFileAttributesObjectID_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_objectIDofFillAttributesObject.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean SetFileAttributesObjectID_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_objectIDofFillAttributesObject.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void SetFileAttributesObjectID_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SetFileAttributesObjectID SetFileAttributesObjectID_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 @IsobusVTMessageTypes.SetFileAttributesObjectID.");
+SetFileAttributesObjectID ret_val;
+if (single_value->field_objectIDofFillAttributesObject.is_bound()) {
+ret_val.objectIDofFillAttributesObject() = single_value->field_objectIDofFillAttributesObject.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void SetFileAttributesObjectID_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.SetFileAttributesObjectID.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SetFileAttributesObjectID_template[list_length];
+}
+
+SetFileAttributesObjectID_template& SetFileAttributesObjectID_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.SetFileAttributesObjectID.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.SetFileAttributesObjectID.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& SetFileAttributesObjectID_template::objectIDofFillAttributesObject()
+{
+set_specific();
+return single_value->field_objectIDofFillAttributesObject;
+}
+
+const INTEGER_template& SetFileAttributesObjectID_template::objectIDofFillAttributesObject() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectIDofFillAttributesObject of a non-specific template of type @IsobusVTMessageTypes.SetFileAttributesObjectID.");
+return single_value->field_objectIDofFillAttributesObject;
+}
+
+OCTETSTRING_template& SetFileAttributesObjectID_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& SetFileAttributesObjectID_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.SetFileAttributesObjectID.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& SetFileAttributesObjectID_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& SetFileAttributesObjectID_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.SetFileAttributesObjectID.");
+return single_value->field_reserved8;
+}
+
+int SetFileAttributesObjectID_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SetFileAttributesObjectID 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 @IsobusVTMessageTypes.SetFileAttributesObjectID 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 @IsobusVTMessageTypes.SetFileAttributesObjectID containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SetFileAttributesObjectID containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SetFileAttributesObjectID containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SetFileAttributesObjectID containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.SetFileAttributesObjectID.");
+  }
+  return 0;
+}
+
+void SetFileAttributesObjectID_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ objectIDofFillAttributesObject := ");
+single_value->field_objectIDofFillAttributesObject.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SetFileAttributesObjectID_template::log_match(const SetFileAttributesObjectID& 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_objectIDofFillAttributesObject.match(match_value.objectIDofFillAttributesObject(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectIDofFillAttributesObject");
+single_value->field_objectIDofFillAttributesObject.log_match(match_value.objectIDofFillAttributesObject(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ objectIDofFillAttributesObject := ");
+single_value->field_objectIDofFillAttributesObject.log_match(match_value.objectIDofFillAttributesObject(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 SetFileAttributesObjectID_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_objectIDofFillAttributesObject.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.SetFileAttributesObjectID.");
+}
+}
+
+void SetFileAttributesObjectID_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_objectIDofFillAttributesObject.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 SetFileAttributesObjectID_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 @IsobusVTMessageTypes.SetFileAttributesObjectID.");
+}
+}
+
+void SetFileAttributesObjectID_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: {
+    SetFileAttributesObjectID_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.SetFileAttributesObjectID 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) objectIDofFillAttributesObject().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "objectIDofFillAttributesObject")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofFillAttributesObject().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.SetFileAttributesObjectID: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.SetFileAttributesObjectID");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SetFileAttributesObjectID_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_objectIDofFillAttributesObject.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SetFileAttributesObjectID");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SetFileAttributesObjectID");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SetFileAttributesObjectID");
+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 : "@IsobusVTMessageTypes.SetFileAttributesObjectID");
+}
+
+boolean SetFileAttributesObjectID_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SetFileAttributesObjectID_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+SetFontAttributesObjectID::SetFontAttributesObjectID()
+{
+}
+
+SetFontAttributesObjectID::SetFontAttributesObjectID(const INTEGER& par_objectIDofFontAttributesObject,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_objectIDofFontAttributesObject(par_objectIDofFontAttributesObject),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+SetFontAttributesObjectID::SetFontAttributesObjectID(const SetFontAttributesObjectID& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.SetFontAttributesObjectID.");
+if (other_value.objectIDofFontAttributesObject().is_bound()) field_objectIDofFontAttributesObject = other_value.objectIDofFontAttributesObject();
+else field_objectIDofFontAttributesObject.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void SetFontAttributesObjectID::clean_up()
+{
+field_objectIDofFontAttributesObject.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SetFontAttributesObjectID::get_descriptor() const { return &SetFontAttributesObjectID_descr_; }
+SetFontAttributesObjectID& SetFontAttributesObjectID::operator=(const SetFontAttributesObjectID& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.SetFontAttributesObjectID.");
+  if (other_value.objectIDofFontAttributesObject().is_bound()) field_objectIDofFontAttributesObject = other_value.objectIDofFontAttributesObject();
+  else field_objectIDofFontAttributesObject.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean SetFontAttributesObjectID::operator==(const SetFontAttributesObjectID& other_value) const
+{
+return field_objectIDofFontAttributesObject==other_value.field_objectIDofFontAttributesObject
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean SetFontAttributesObjectID::is_bound() const
+{
+return (field_objectIDofFontAttributesObject.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean SetFontAttributesObjectID::is_value() const
+{
+return field_objectIDofFontAttributesObject.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void SetFontAttributesObjectID::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ objectIDofFontAttributesObject := ");
+field_objectIDofFontAttributesObject.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SetFontAttributesObjectID::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 @IsobusVTMessageTypes.SetFontAttributesObjectID 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) objectIDofFontAttributesObject().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "objectIDofFontAttributesObject")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofFontAttributesObject().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.SetFontAttributesObjectID: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.SetFontAttributesObjectID");
+  }
+}
+
+void SetFontAttributesObjectID::set_implicit_omit()
+{
+if (objectIDofFontAttributesObject().is_bound()) objectIDofFontAttributesObject().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void SetFontAttributesObjectID::encode_text(Text_Buf& text_buf) const
+{
+field_objectIDofFontAttributesObject.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void SetFontAttributesObjectID::decode_text(Text_Buf& text_buf)
+{
+field_objectIDofFontAttributesObject.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void SetFontAttributesObjectID::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void SetFontAttributesObjectID::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int SetFontAttributesObjectID::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, AnyObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectIDofFontAttributesObject.RAW_decode(AnyObjectID_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, SetFontAttributesObjectID_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(SetFontAttributesObjectID_reserved7_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, SetFontAttributesObjectID_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(SetFontAttributesObjectID_reserved8_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 SetFontAttributesObjectID::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, AnyObjectID_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, SetFontAttributesObjectID_reserved7_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, SetFontAttributesObjectID_reserved8_descr_.raw);
+  encoded_length += field_objectIDofFontAttributesObject.RAW_encode(AnyObjectID_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved7.RAW_encode(SetFontAttributesObjectID_reserved7_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved8.RAW_encode(SetFontAttributesObjectID_reserved8_descr_, *myleaf.body.node.nodes[2]);
+  return myleaf.length = encoded_length;
+}
+
+struct SetFontAttributesObjectID_template::single_value_struct {
+INTEGER_template field_objectIDofFontAttributesObject;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void SetFontAttributesObjectID_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_objectIDofFontAttributesObject = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void SetFontAttributesObjectID_template::copy_value(const SetFontAttributesObjectID& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.objectIDofFontAttributesObject().is_bound()) {
+  single_value->field_objectIDofFontAttributesObject = other_value.objectIDofFontAttributesObject();
+} else {
+  single_value->field_objectIDofFontAttributesObject.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SetFontAttributesObjectID_template::copy_template(const SetFontAttributesObjectID_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.objectIDofFontAttributesObject().get_selection()) {
+single_value->field_objectIDofFontAttributesObject = other_value.objectIDofFontAttributesObject();
+} else {
+single_value->field_objectIDofFontAttributesObject.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SetFontAttributesObjectID_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.SetFontAttributesObjectID.");
+break;
+}
+set_selection(other_value);
+}
+
+SetFontAttributesObjectID_template::SetFontAttributesObjectID_template()
+{
+}
+
+SetFontAttributesObjectID_template::SetFontAttributesObjectID_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SetFontAttributesObjectID_template::SetFontAttributesObjectID_template(const SetFontAttributesObjectID& other_value)
+{
+copy_value(other_value);
+}
+
+SetFontAttributesObjectID_template::SetFontAttributesObjectID_template(const OPTIONAL<SetFontAttributesObjectID>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SetFontAttributesObjectID&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.SetFontAttributesObjectID from an unbound optional field.");
+}
+}
+
+SetFontAttributesObjectID_template::SetFontAttributesObjectID_template(const SetFontAttributesObjectID_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SetFontAttributesObjectID_template::~SetFontAttributesObjectID_template()
+{
+clean_up();
+}
+
+SetFontAttributesObjectID_template& SetFontAttributesObjectID_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SetFontAttributesObjectID_template& SetFontAttributesObjectID_template::operator=(const SetFontAttributesObjectID& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SetFontAttributesObjectID_template& SetFontAttributesObjectID_template::operator=(const OPTIONAL<SetFontAttributesObjectID>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SetFontAttributesObjectID&)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 @IsobusVTMessageTypes.SetFontAttributesObjectID.");
+}
+return *this;
+}
+
+SetFontAttributesObjectID_template& SetFontAttributesObjectID_template::operator=(const SetFontAttributesObjectID_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SetFontAttributesObjectID_template::match(const SetFontAttributesObjectID& 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.objectIDofFontAttributesObject().is_bound()) return FALSE;
+if(!single_value->field_objectIDofFontAttributesObject.match(other_value.objectIDofFontAttributesObject(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.SetFontAttributesObjectID.");
+}
+return FALSE;
+}
+
+boolean SetFontAttributesObjectID_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_objectIDofFontAttributesObject.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean SetFontAttributesObjectID_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_objectIDofFontAttributesObject.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void SetFontAttributesObjectID_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SetFontAttributesObjectID SetFontAttributesObjectID_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 @IsobusVTMessageTypes.SetFontAttributesObjectID.");
+SetFontAttributesObjectID ret_val;
+if (single_value->field_objectIDofFontAttributesObject.is_bound()) {
+ret_val.objectIDofFontAttributesObject() = single_value->field_objectIDofFontAttributesObject.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void SetFontAttributesObjectID_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.SetFontAttributesObjectID.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SetFontAttributesObjectID_template[list_length];
+}
+
+SetFontAttributesObjectID_template& SetFontAttributesObjectID_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.SetFontAttributesObjectID.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.SetFontAttributesObjectID.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& SetFontAttributesObjectID_template::objectIDofFontAttributesObject()
+{
+set_specific();
+return single_value->field_objectIDofFontAttributesObject;
+}
+
+const INTEGER_template& SetFontAttributesObjectID_template::objectIDofFontAttributesObject() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectIDofFontAttributesObject of a non-specific template of type @IsobusVTMessageTypes.SetFontAttributesObjectID.");
+return single_value->field_objectIDofFontAttributesObject;
+}
+
+OCTETSTRING_template& SetFontAttributesObjectID_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& SetFontAttributesObjectID_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.SetFontAttributesObjectID.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& SetFontAttributesObjectID_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& SetFontAttributesObjectID_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.SetFontAttributesObjectID.");
+return single_value->field_reserved8;
+}
+
+int SetFontAttributesObjectID_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SetFontAttributesObjectID 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 @IsobusVTMessageTypes.SetFontAttributesObjectID 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 @IsobusVTMessageTypes.SetFontAttributesObjectID containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SetFontAttributesObjectID containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SetFontAttributesObjectID containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SetFontAttributesObjectID containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.SetFontAttributesObjectID.");
+  }
+  return 0;
+}
+
+void SetFontAttributesObjectID_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ objectIDofFontAttributesObject := ");
+single_value->field_objectIDofFontAttributesObject.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SetFontAttributesObjectID_template::log_match(const SetFontAttributesObjectID& 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_objectIDofFontAttributesObject.match(match_value.objectIDofFontAttributesObject(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectIDofFontAttributesObject");
+single_value->field_objectIDofFontAttributesObject.log_match(match_value.objectIDofFontAttributesObject(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ objectIDofFontAttributesObject := ");
+single_value->field_objectIDofFontAttributesObject.log_match(match_value.objectIDofFontAttributesObject(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 SetFontAttributesObjectID_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_objectIDofFontAttributesObject.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.SetFontAttributesObjectID.");
+}
+}
+
+void SetFontAttributesObjectID_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_objectIDofFontAttributesObject.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 SetFontAttributesObjectID_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 @IsobusVTMessageTypes.SetFontAttributesObjectID.");
+}
+}
+
+void SetFontAttributesObjectID_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: {
+    SetFontAttributesObjectID_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.SetFontAttributesObjectID 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) objectIDofFontAttributesObject().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "objectIDofFontAttributesObject")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofFontAttributesObject().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.SetFontAttributesObjectID: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.SetFontAttributesObjectID");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SetFontAttributesObjectID_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_objectIDofFontAttributesObject.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SetFontAttributesObjectID");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SetFontAttributesObjectID");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SetFontAttributesObjectID");
+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 : "@IsobusVTMessageTypes.SetFontAttributesObjectID");
+}
+
+boolean SetFontAttributesObjectID_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SetFontAttributesObjectID_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+EraseRectangle::EraseRectangle()
+{
+}
+
+EraseRectangle::EraseRectangle(const INTEGER& par_width,
+    const INTEGER& par_height)
+  :   field_width(par_width),
+  field_height(par_height)
+{
+}
+
+EraseRectangle::EraseRectangle(const EraseRectangle& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.EraseRectangle.");
+if (other_value.width().is_bound()) field_width = other_value.width();
+else field_width.clean_up();
+if (other_value.height().is_bound()) field_height = other_value.height();
+else field_height.clean_up();
+}
+
+void EraseRectangle::clean_up()
+{
+field_width.clean_up();
+field_height.clean_up();
+}
+
+const TTCN_Typedescriptor_t* EraseRectangle::get_descriptor() const { return &EraseRectangle_descr_; }
+EraseRectangle& EraseRectangle::operator=(const EraseRectangle& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.EraseRectangle.");
+  if (other_value.width().is_bound()) field_width = other_value.width();
+  else field_width.clean_up();
+  if (other_value.height().is_bound()) field_height = other_value.height();
+  else field_height.clean_up();
+}
+return *this;
+}
+
+boolean EraseRectangle::operator==(const EraseRectangle& other_value) const
+{
+return field_width==other_value.field_width
+  && field_height==other_value.field_height;
+}
+
+boolean EraseRectangle::is_bound() const
+{
+return (field_width.is_bound())
+  || (field_height.is_bound());
+}
+boolean EraseRectangle::is_value() const
+{
+return field_width.is_value()
+  && field_height.is_value();
+}
+void EraseRectangle::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ width := ");
+field_width.log();
+TTCN_Logger::log_event_str(", height := ");
+field_height.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void EraseRectangle::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 @IsobusVTMessageTypes.EraseRectangle 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) width().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) height().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(), "width")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          width().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(), "height")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          height().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 @IsobusVTMessageTypes.EraseRectangle: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.EraseRectangle");
+  }
+}
+
+void EraseRectangle::set_implicit_omit()
+{
+if (width().is_bound()) width().set_implicit_omit();
+if (height().is_bound()) height().set_implicit_omit();
+}
+
+void EraseRectangle::encode_text(Text_Buf& text_buf) const
+{
+field_width.encode_text(text_buf);
+field_height.encode_text(text_buf);
+}
+
+void EraseRectangle::decode_text(Text_Buf& text_buf)
+{
+field_width.decode_text(text_buf);
+field_height.decode_text(text_buf);
+}
+
+void EraseRectangle::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void EraseRectangle::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int EraseRectangle::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, WidthType_descr_.raw->forceomit);
+  decoded_field_length = field_width.RAW_decode(WidthType_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, HeightType_descr_.raw->forceomit);
+  decoded_field_length = field_height.RAW_decode(HeightType_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 EraseRectangle::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, WidthType_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, HeightType_descr_.raw);
+  encoded_length += field_width.RAW_encode(WidthType_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_height.RAW_encode(HeightType_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct EraseRectangle_template::single_value_struct {
+INTEGER_template field_width;
+INTEGER_template field_height;
+};
+
+void EraseRectangle_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_width = ANY_VALUE;
+single_value->field_height = ANY_VALUE;
+}
+}
+}
+
+void EraseRectangle_template::copy_value(const EraseRectangle& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.width().is_bound()) {
+  single_value->field_width = other_value.width();
+} else {
+  single_value->field_width.clean_up();
+}
+if (other_value.height().is_bound()) {
+  single_value->field_height = other_value.height();
+} else {
+  single_value->field_height.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void EraseRectangle_template::copy_template(const EraseRectangle_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.width().get_selection()) {
+single_value->field_width = other_value.width();
+} else {
+single_value->field_width.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.height().get_selection()) {
+single_value->field_height = other_value.height();
+} else {
+single_value->field_height.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new EraseRectangle_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.EraseRectangle.");
+break;
+}
+set_selection(other_value);
+}
+
+EraseRectangle_template::EraseRectangle_template()
+{
+}
+
+EraseRectangle_template::EraseRectangle_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+EraseRectangle_template::EraseRectangle_template(const EraseRectangle& other_value)
+{
+copy_value(other_value);
+}
+
+EraseRectangle_template::EraseRectangle_template(const OPTIONAL<EraseRectangle>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const EraseRectangle&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.EraseRectangle from an unbound optional field.");
+}
+}
+
+EraseRectangle_template::EraseRectangle_template(const EraseRectangle_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+EraseRectangle_template::~EraseRectangle_template()
+{
+clean_up();
+}
+
+EraseRectangle_template& EraseRectangle_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+EraseRectangle_template& EraseRectangle_template::operator=(const EraseRectangle& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+EraseRectangle_template& EraseRectangle_template::operator=(const OPTIONAL<EraseRectangle>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const EraseRectangle&)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 @IsobusVTMessageTypes.EraseRectangle.");
+}
+return *this;
+}
+
+EraseRectangle_template& EraseRectangle_template::operator=(const EraseRectangle_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean EraseRectangle_template::match(const EraseRectangle& 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.width().is_bound()) return FALSE;
+if(!single_value->field_width.match(other_value.width(), legacy))return FALSE;
+if(!other_value.height().is_bound()) return FALSE;
+if(!single_value->field_height.match(other_value.height(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.EraseRectangle.");
+}
+return FALSE;
+}
+
+boolean EraseRectangle_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_width.is_bound()
+
+ ||single_value->field_height.is_bound()
+;
+}
+
+boolean EraseRectangle_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_width.is_value()
+ &&single_value->field_height.is_value();
+}
+
+void EraseRectangle_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+EraseRectangle EraseRectangle_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 @IsobusVTMessageTypes.EraseRectangle.");
+EraseRectangle ret_val;
+if (single_value->field_width.is_bound()) {
+ret_val.width() = single_value->field_width.valueof();
+}
+if (single_value->field_height.is_bound()) {
+ret_val.height() = single_value->field_height.valueof();
+}
+return ret_val;
+}
+
+void EraseRectangle_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.EraseRectangle.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new EraseRectangle_template[list_length];
+}
+
+EraseRectangle_template& EraseRectangle_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.EraseRectangle.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.EraseRectangle.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& EraseRectangle_template::width()
+{
+set_specific();
+return single_value->field_width;
+}
+
+const INTEGER_template& EraseRectangle_template::width() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field width of a non-specific template of type @IsobusVTMessageTypes.EraseRectangle.");
+return single_value->field_width;
+}
+
+INTEGER_template& EraseRectangle_template::height()
+{
+set_specific();
+return single_value->field_height;
+}
+
+const INTEGER_template& EraseRectangle_template::height() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field height of a non-specific template of type @IsobusVTMessageTypes.EraseRectangle.");
+return single_value->field_height;
+}
+
+int EraseRectangle_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.EraseRectangle 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 @IsobusVTMessageTypes.EraseRectangle 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 @IsobusVTMessageTypes.EraseRectangle containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.EraseRectangle containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.EraseRectangle containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.EraseRectangle containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.EraseRectangle.");
+  }
+  return 0;
+}
+
+void EraseRectangle_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ width := ");
+single_value->field_width.log();
+TTCN_Logger::log_event_str(", height := ");
+single_value->field_height.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void EraseRectangle_template::log_match(const EraseRectangle& 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_width.match(match_value.width(), legacy)){
+TTCN_Logger::log_logmatch_info(".width");
+single_value->field_width.log_match(match_value.width(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_height.match(match_value.height(), legacy)){
+TTCN_Logger::log_logmatch_info(".height");
+single_value->field_height.log_match(match_value.height(), 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("{ width := ");
+single_value->field_width.log_match(match_value.width(), legacy);
+TTCN_Logger::log_event_str(", height := ");
+single_value->field_height.log_match(match_value.height(), 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 EraseRectangle_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_width.encode_text(text_buf);
+single_value->field_height.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 @IsobusVTMessageTypes.EraseRectangle.");
+}
+}
+
+void EraseRectangle_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_width.decode_text(text_buf);
+single_value->field_height.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 EraseRectangle_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 @IsobusVTMessageTypes.EraseRectangle.");
+}
+}
+
+void EraseRectangle_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: {
+    EraseRectangle_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.EraseRectangle 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) width().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) height().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(), "width")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          width().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(), "height")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          height().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 @IsobusVTMessageTypes.EraseRectangle: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.EraseRectangle");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void EraseRectangle_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_width.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EraseRectangle");
+single_value->field_height.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.EraseRectangle");
+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 : "@IsobusVTMessageTypes.EraseRectangle");
+}
+
+boolean EraseRectangle_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean EraseRectangle_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+DrawPoint::DrawPoint()
+{
+}
+
+DrawPoint::DrawPoint(const INTEGER& par_xOffset,
+    const INTEGER& par_yOffset)
+  :   field_xOffset(par_xOffset),
+  field_yOffset(par_yOffset)
+{
+}
+
+DrawPoint::DrawPoint(const DrawPoint& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.DrawPoint.");
+if (other_value.xOffset().is_bound()) field_xOffset = other_value.xOffset();
+else field_xOffset.clean_up();
+if (other_value.yOffset().is_bound()) field_yOffset = other_value.yOffset();
+else field_yOffset.clean_up();
+}
+
+void DrawPoint::clean_up()
+{
+field_xOffset.clean_up();
+field_yOffset.clean_up();
+}
+
+const TTCN_Typedescriptor_t* DrawPoint::get_descriptor() const { return &DrawPoint_descr_; }
+DrawPoint& DrawPoint::operator=(const DrawPoint& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.DrawPoint.");
+  if (other_value.xOffset().is_bound()) field_xOffset = other_value.xOffset();
+  else field_xOffset.clean_up();
+  if (other_value.yOffset().is_bound()) field_yOffset = other_value.yOffset();
+  else field_yOffset.clean_up();
+}
+return *this;
+}
+
+boolean DrawPoint::operator==(const DrawPoint& other_value) const
+{
+return field_xOffset==other_value.field_xOffset
+  && field_yOffset==other_value.field_yOffset;
+}
+
+boolean DrawPoint::is_bound() const
+{
+return (field_xOffset.is_bound())
+  || (field_yOffset.is_bound());
+}
+boolean DrawPoint::is_value() const
+{
+return field_xOffset.is_value()
+  && field_yOffset.is_value();
+}
+void DrawPoint::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ xOffset := ");
+field_xOffset.log();
+TTCN_Logger::log_event_str(", yOffset := ");
+field_yOffset.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void DrawPoint::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 @IsobusVTMessageTypes.DrawPoint 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) xOffset().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) yOffset().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(), "xOffset")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          xOffset().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(), "yOffset")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          yOffset().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 @IsobusVTMessageTypes.DrawPoint: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.DrawPoint");
+  }
+}
+
+void DrawPoint::set_implicit_omit()
+{
+if (xOffset().is_bound()) xOffset().set_implicit_omit();
+if (yOffset().is_bound()) yOffset().set_implicit_omit();
+}
+
+void DrawPoint::encode_text(Text_Buf& text_buf) const
+{
+field_xOffset.encode_text(text_buf);
+field_yOffset.encode_text(text_buf);
+}
+
+void DrawPoint::decode_text(Text_Buf& text_buf)
+{
+field_xOffset.decode_text(text_buf);
+field_yOffset.decode_text(text_buf);
+}
+
+void DrawPoint::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void DrawPoint::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int DrawPoint::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, XOffsetType_descr_.raw->forceomit);
+  decoded_field_length = field_xOffset.RAW_decode(XOffsetType_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, YOffsetType_descr_.raw->forceomit);
+  decoded_field_length = field_yOffset.RAW_decode(YOffsetType_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 DrawPoint::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, XOffsetType_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, YOffsetType_descr_.raw);
+  encoded_length += field_xOffset.RAW_encode(XOffsetType_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_yOffset.RAW_encode(YOffsetType_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct DrawPoint_template::single_value_struct {
+INTEGER_template field_xOffset;
+INTEGER_template field_yOffset;
+};
+
+void DrawPoint_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_xOffset = ANY_VALUE;
+single_value->field_yOffset = ANY_VALUE;
+}
+}
+}
+
+void DrawPoint_template::copy_value(const DrawPoint& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.xOffset().is_bound()) {
+  single_value->field_xOffset = other_value.xOffset();
+} else {
+  single_value->field_xOffset.clean_up();
+}
+if (other_value.yOffset().is_bound()) {
+  single_value->field_yOffset = other_value.yOffset();
+} else {
+  single_value->field_yOffset.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void DrawPoint_template::copy_template(const DrawPoint_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.xOffset().get_selection()) {
+single_value->field_xOffset = other_value.xOffset();
+} else {
+single_value->field_xOffset.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.yOffset().get_selection()) {
+single_value->field_yOffset = other_value.yOffset();
+} else {
+single_value->field_yOffset.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new DrawPoint_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.DrawPoint.");
+break;
+}
+set_selection(other_value);
+}
+
+DrawPoint_template::DrawPoint_template()
+{
+}
+
+DrawPoint_template::DrawPoint_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+DrawPoint_template::DrawPoint_template(const DrawPoint& other_value)
+{
+copy_value(other_value);
+}
+
+DrawPoint_template::DrawPoint_template(const OPTIONAL<DrawPoint>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const DrawPoint&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.DrawPoint from an unbound optional field.");
+}
+}
+
+DrawPoint_template::DrawPoint_template(const DrawPoint_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+DrawPoint_template::~DrawPoint_template()
+{
+clean_up();
+}
+
+DrawPoint_template& DrawPoint_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+DrawPoint_template& DrawPoint_template::operator=(const DrawPoint& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+DrawPoint_template& DrawPoint_template::operator=(const OPTIONAL<DrawPoint>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const DrawPoint&)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 @IsobusVTMessageTypes.DrawPoint.");
+}
+return *this;
+}
+
+DrawPoint_template& DrawPoint_template::operator=(const DrawPoint_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean DrawPoint_template::match(const DrawPoint& 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.xOffset().is_bound()) return FALSE;
+if(!single_value->field_xOffset.match(other_value.xOffset(), legacy))return FALSE;
+if(!other_value.yOffset().is_bound()) return FALSE;
+if(!single_value->field_yOffset.match(other_value.yOffset(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.DrawPoint.");
+}
+return FALSE;
+}
+
+boolean DrawPoint_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_xOffset.is_bound()
+
+ ||single_value->field_yOffset.is_bound()
+;
+}
+
+boolean DrawPoint_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_xOffset.is_value()
+ &&single_value->field_yOffset.is_value();
+}
+
+void DrawPoint_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+DrawPoint DrawPoint_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 @IsobusVTMessageTypes.DrawPoint.");
+DrawPoint ret_val;
+if (single_value->field_xOffset.is_bound()) {
+ret_val.xOffset() = single_value->field_xOffset.valueof();
+}
+if (single_value->field_yOffset.is_bound()) {
+ret_val.yOffset() = single_value->field_yOffset.valueof();
+}
+return ret_val;
+}
+
+void DrawPoint_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.DrawPoint.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new DrawPoint_template[list_length];
+}
+
+DrawPoint_template& DrawPoint_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.DrawPoint.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.DrawPoint.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& DrawPoint_template::xOffset()
+{
+set_specific();
+return single_value->field_xOffset;
+}
+
+const INTEGER_template& DrawPoint_template::xOffset() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field xOffset of a non-specific template of type @IsobusVTMessageTypes.DrawPoint.");
+return single_value->field_xOffset;
+}
+
+INTEGER_template& DrawPoint_template::yOffset()
+{
+set_specific();
+return single_value->field_yOffset;
+}
+
+const INTEGER_template& DrawPoint_template::yOffset() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field yOffset of a non-specific template of type @IsobusVTMessageTypes.DrawPoint.");
+return single_value->field_yOffset;
+}
+
+int DrawPoint_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DrawPoint 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 @IsobusVTMessageTypes.DrawPoint 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 @IsobusVTMessageTypes.DrawPoint containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DrawPoint containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DrawPoint containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DrawPoint containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.DrawPoint.");
+  }
+  return 0;
+}
+
+void DrawPoint_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ xOffset := ");
+single_value->field_xOffset.log();
+TTCN_Logger::log_event_str(", yOffset := ");
+single_value->field_yOffset.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void DrawPoint_template::log_match(const DrawPoint& 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_xOffset.match(match_value.xOffset(), legacy)){
+TTCN_Logger::log_logmatch_info(".xOffset");
+single_value->field_xOffset.log_match(match_value.xOffset(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_yOffset.match(match_value.yOffset(), legacy)){
+TTCN_Logger::log_logmatch_info(".yOffset");
+single_value->field_yOffset.log_match(match_value.yOffset(), 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("{ xOffset := ");
+single_value->field_xOffset.log_match(match_value.xOffset(), legacy);
+TTCN_Logger::log_event_str(", yOffset := ");
+single_value->field_yOffset.log_match(match_value.yOffset(), 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 DrawPoint_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_xOffset.encode_text(text_buf);
+single_value->field_yOffset.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 @IsobusVTMessageTypes.DrawPoint.");
+}
+}
+
+void DrawPoint_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_xOffset.decode_text(text_buf);
+single_value->field_yOffset.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 DrawPoint_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 @IsobusVTMessageTypes.DrawPoint.");
+}
+}
+
+void DrawPoint_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: {
+    DrawPoint_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.DrawPoint 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) xOffset().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) yOffset().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(), "xOffset")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          xOffset().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(), "yOffset")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          yOffset().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 @IsobusVTMessageTypes.DrawPoint: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.DrawPoint");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void DrawPoint_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_xOffset.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DrawPoint");
+single_value->field_yOffset.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DrawPoint");
+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 : "@IsobusVTMessageTypes.DrawPoint");
+}
+
+boolean DrawPoint_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean DrawPoint_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+DrawLine::DrawLine()
+{
+}
+
+DrawLine::DrawLine(const INTEGER& par_xOffset,
+    const INTEGER& par_yOffset)
+  :   field_xOffset(par_xOffset),
+  field_yOffset(par_yOffset)
+{
+}
+
+DrawLine::DrawLine(const DrawLine& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.DrawLine.");
+if (other_value.xOffset().is_bound()) field_xOffset = other_value.xOffset();
+else field_xOffset.clean_up();
+if (other_value.yOffset().is_bound()) field_yOffset = other_value.yOffset();
+else field_yOffset.clean_up();
+}
+
+void DrawLine::clean_up()
+{
+field_xOffset.clean_up();
+field_yOffset.clean_up();
+}
+
+const TTCN_Typedescriptor_t* DrawLine::get_descriptor() const { return &DrawLine_descr_; }
+DrawLine& DrawLine::operator=(const DrawLine& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.DrawLine.");
+  if (other_value.xOffset().is_bound()) field_xOffset = other_value.xOffset();
+  else field_xOffset.clean_up();
+  if (other_value.yOffset().is_bound()) field_yOffset = other_value.yOffset();
+  else field_yOffset.clean_up();
+}
+return *this;
+}
+
+boolean DrawLine::operator==(const DrawLine& other_value) const
+{
+return field_xOffset==other_value.field_xOffset
+  && field_yOffset==other_value.field_yOffset;
+}
+
+boolean DrawLine::is_bound() const
+{
+return (field_xOffset.is_bound())
+  || (field_yOffset.is_bound());
+}
+boolean DrawLine::is_value() const
+{
+return field_xOffset.is_value()
+  && field_yOffset.is_value();
+}
+void DrawLine::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ xOffset := ");
+field_xOffset.log();
+TTCN_Logger::log_event_str(", yOffset := ");
+field_yOffset.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void DrawLine::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 @IsobusVTMessageTypes.DrawLine 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) xOffset().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) yOffset().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(), "xOffset")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          xOffset().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(), "yOffset")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          yOffset().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 @IsobusVTMessageTypes.DrawLine: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.DrawLine");
+  }
+}
+
+void DrawLine::set_implicit_omit()
+{
+if (xOffset().is_bound()) xOffset().set_implicit_omit();
+if (yOffset().is_bound()) yOffset().set_implicit_omit();
+}
+
+void DrawLine::encode_text(Text_Buf& text_buf) const
+{
+field_xOffset.encode_text(text_buf);
+field_yOffset.encode_text(text_buf);
+}
+
+void DrawLine::decode_text(Text_Buf& text_buf)
+{
+field_xOffset.decode_text(text_buf);
+field_yOffset.decode_text(text_buf);
+}
+
+void DrawLine::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void DrawLine::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int DrawLine::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, XOffsetType_descr_.raw->forceomit);
+  decoded_field_length = field_xOffset.RAW_decode(XOffsetType_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, YOffsetType_descr_.raw->forceomit);
+  decoded_field_length = field_yOffset.RAW_decode(YOffsetType_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 DrawLine::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, XOffsetType_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, YOffsetType_descr_.raw);
+  encoded_length += field_xOffset.RAW_encode(XOffsetType_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_yOffset.RAW_encode(YOffsetType_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct DrawLine_template::single_value_struct {
+INTEGER_template field_xOffset;
+INTEGER_template field_yOffset;
+};
+
+void DrawLine_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_xOffset = ANY_VALUE;
+single_value->field_yOffset = ANY_VALUE;
+}
+}
+}
+
+void DrawLine_template::copy_value(const DrawLine& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.xOffset().is_bound()) {
+  single_value->field_xOffset = other_value.xOffset();
+} else {
+  single_value->field_xOffset.clean_up();
+}
+if (other_value.yOffset().is_bound()) {
+  single_value->field_yOffset = other_value.yOffset();
+} else {
+  single_value->field_yOffset.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void DrawLine_template::copy_template(const DrawLine_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.xOffset().get_selection()) {
+single_value->field_xOffset = other_value.xOffset();
+} else {
+single_value->field_xOffset.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.yOffset().get_selection()) {
+single_value->field_yOffset = other_value.yOffset();
+} else {
+single_value->field_yOffset.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new DrawLine_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.DrawLine.");
+break;
+}
+set_selection(other_value);
+}
+
+DrawLine_template::DrawLine_template()
+{
+}
+
+DrawLine_template::DrawLine_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+DrawLine_template::DrawLine_template(const DrawLine& other_value)
+{
+copy_value(other_value);
+}
+
+DrawLine_template::DrawLine_template(const OPTIONAL<DrawLine>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const DrawLine&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.DrawLine from an unbound optional field.");
+}
+}
+
+DrawLine_template::DrawLine_template(const DrawLine_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+DrawLine_template::~DrawLine_template()
+{
+clean_up();
+}
+
+DrawLine_template& DrawLine_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+DrawLine_template& DrawLine_template::operator=(const DrawLine& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+DrawLine_template& DrawLine_template::operator=(const OPTIONAL<DrawLine>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const DrawLine&)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 @IsobusVTMessageTypes.DrawLine.");
+}
+return *this;
+}
+
+DrawLine_template& DrawLine_template::operator=(const DrawLine_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean DrawLine_template::match(const DrawLine& 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.xOffset().is_bound()) return FALSE;
+if(!single_value->field_xOffset.match(other_value.xOffset(), legacy))return FALSE;
+if(!other_value.yOffset().is_bound()) return FALSE;
+if(!single_value->field_yOffset.match(other_value.yOffset(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.DrawLine.");
+}
+return FALSE;
+}
+
+boolean DrawLine_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_xOffset.is_bound()
+
+ ||single_value->field_yOffset.is_bound()
+;
+}
+
+boolean DrawLine_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_xOffset.is_value()
+ &&single_value->field_yOffset.is_value();
+}
+
+void DrawLine_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+DrawLine DrawLine_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 @IsobusVTMessageTypes.DrawLine.");
+DrawLine ret_val;
+if (single_value->field_xOffset.is_bound()) {
+ret_val.xOffset() = single_value->field_xOffset.valueof();
+}
+if (single_value->field_yOffset.is_bound()) {
+ret_val.yOffset() = single_value->field_yOffset.valueof();
+}
+return ret_val;
+}
+
+void DrawLine_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.DrawLine.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new DrawLine_template[list_length];
+}
+
+DrawLine_template& DrawLine_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.DrawLine.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.DrawLine.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& DrawLine_template::xOffset()
+{
+set_specific();
+return single_value->field_xOffset;
+}
+
+const INTEGER_template& DrawLine_template::xOffset() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field xOffset of a non-specific template of type @IsobusVTMessageTypes.DrawLine.");
+return single_value->field_xOffset;
+}
+
+INTEGER_template& DrawLine_template::yOffset()
+{
+set_specific();
+return single_value->field_yOffset;
+}
+
+const INTEGER_template& DrawLine_template::yOffset() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field yOffset of a non-specific template of type @IsobusVTMessageTypes.DrawLine.");
+return single_value->field_yOffset;
+}
+
+int DrawLine_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DrawLine 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 @IsobusVTMessageTypes.DrawLine 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 @IsobusVTMessageTypes.DrawLine containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DrawLine containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DrawLine containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DrawLine containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.DrawLine.");
+  }
+  return 0;
+}
+
+void DrawLine_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ xOffset := ");
+single_value->field_xOffset.log();
+TTCN_Logger::log_event_str(", yOffset := ");
+single_value->field_yOffset.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void DrawLine_template::log_match(const DrawLine& 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_xOffset.match(match_value.xOffset(), legacy)){
+TTCN_Logger::log_logmatch_info(".xOffset");
+single_value->field_xOffset.log_match(match_value.xOffset(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_yOffset.match(match_value.yOffset(), legacy)){
+TTCN_Logger::log_logmatch_info(".yOffset");
+single_value->field_yOffset.log_match(match_value.yOffset(), 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("{ xOffset := ");
+single_value->field_xOffset.log_match(match_value.xOffset(), legacy);
+TTCN_Logger::log_event_str(", yOffset := ");
+single_value->field_yOffset.log_match(match_value.yOffset(), 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 DrawLine_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_xOffset.encode_text(text_buf);
+single_value->field_yOffset.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 @IsobusVTMessageTypes.DrawLine.");
+}
+}
+
+void DrawLine_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_xOffset.decode_text(text_buf);
+single_value->field_yOffset.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 DrawLine_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 @IsobusVTMessageTypes.DrawLine.");
+}
+}
+
+void DrawLine_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: {
+    DrawLine_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.DrawLine 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) xOffset().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) yOffset().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(), "xOffset")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          xOffset().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(), "yOffset")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          yOffset().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 @IsobusVTMessageTypes.DrawLine: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.DrawLine");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void DrawLine_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_xOffset.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DrawLine");
+single_value->field_yOffset.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DrawLine");
+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 : "@IsobusVTMessageTypes.DrawLine");
+}
+
+boolean DrawLine_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean DrawLine_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+DrawRectangle::DrawRectangle()
+{
+}
+
+DrawRectangle::DrawRectangle(const INTEGER& par_width,
+    const INTEGER& par_height)
+  :   field_width(par_width),
+  field_height(par_height)
+{
+}
+
+DrawRectangle::DrawRectangle(const DrawRectangle& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.DrawRectangle.");
+if (other_value.width().is_bound()) field_width = other_value.width();
+else field_width.clean_up();
+if (other_value.height().is_bound()) field_height = other_value.height();
+else field_height.clean_up();
+}
+
+void DrawRectangle::clean_up()
+{
+field_width.clean_up();
+field_height.clean_up();
+}
+
+const TTCN_Typedescriptor_t* DrawRectangle::get_descriptor() const { return &DrawRectangle_descr_; }
+DrawRectangle& DrawRectangle::operator=(const DrawRectangle& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.DrawRectangle.");
+  if (other_value.width().is_bound()) field_width = other_value.width();
+  else field_width.clean_up();
+  if (other_value.height().is_bound()) field_height = other_value.height();
+  else field_height.clean_up();
+}
+return *this;
+}
+
+boolean DrawRectangle::operator==(const DrawRectangle& other_value) const
+{
+return field_width==other_value.field_width
+  && field_height==other_value.field_height;
+}
+
+boolean DrawRectangle::is_bound() const
+{
+return (field_width.is_bound())
+  || (field_height.is_bound());
+}
+boolean DrawRectangle::is_value() const
+{
+return field_width.is_value()
+  && field_height.is_value();
+}
+void DrawRectangle::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ width := ");
+field_width.log();
+TTCN_Logger::log_event_str(", height := ");
+field_height.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void DrawRectangle::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 @IsobusVTMessageTypes.DrawRectangle 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) width().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) height().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(), "width")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          width().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(), "height")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          height().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 @IsobusVTMessageTypes.DrawRectangle: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.DrawRectangle");
+  }
+}
+
+void DrawRectangle::set_implicit_omit()
+{
+if (width().is_bound()) width().set_implicit_omit();
+if (height().is_bound()) height().set_implicit_omit();
+}
+
+void DrawRectangle::encode_text(Text_Buf& text_buf) const
+{
+field_width.encode_text(text_buf);
+field_height.encode_text(text_buf);
+}
+
+void DrawRectangle::decode_text(Text_Buf& text_buf)
+{
+field_width.decode_text(text_buf);
+field_height.decode_text(text_buf);
+}
+
+void DrawRectangle::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void DrawRectangle::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int DrawRectangle::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, WidthType_descr_.raw->forceomit);
+  decoded_field_length = field_width.RAW_decode(WidthType_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, HeightType_descr_.raw->forceomit);
+  decoded_field_length = field_height.RAW_decode(HeightType_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 DrawRectangle::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, WidthType_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, HeightType_descr_.raw);
+  encoded_length += field_width.RAW_encode(WidthType_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_height.RAW_encode(HeightType_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct DrawRectangle_template::single_value_struct {
+INTEGER_template field_width;
+INTEGER_template field_height;
+};
+
+void DrawRectangle_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_width = ANY_VALUE;
+single_value->field_height = ANY_VALUE;
+}
+}
+}
+
+void DrawRectangle_template::copy_value(const DrawRectangle& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.width().is_bound()) {
+  single_value->field_width = other_value.width();
+} else {
+  single_value->field_width.clean_up();
+}
+if (other_value.height().is_bound()) {
+  single_value->field_height = other_value.height();
+} else {
+  single_value->field_height.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void DrawRectangle_template::copy_template(const DrawRectangle_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.width().get_selection()) {
+single_value->field_width = other_value.width();
+} else {
+single_value->field_width.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.height().get_selection()) {
+single_value->field_height = other_value.height();
+} else {
+single_value->field_height.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new DrawRectangle_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.DrawRectangle.");
+break;
+}
+set_selection(other_value);
+}
+
+DrawRectangle_template::DrawRectangle_template()
+{
+}
+
+DrawRectangle_template::DrawRectangle_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+DrawRectangle_template::DrawRectangle_template(const DrawRectangle& other_value)
+{
+copy_value(other_value);
+}
+
+DrawRectangle_template::DrawRectangle_template(const OPTIONAL<DrawRectangle>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const DrawRectangle&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.DrawRectangle from an unbound optional field.");
+}
+}
+
+DrawRectangle_template::DrawRectangle_template(const DrawRectangle_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+DrawRectangle_template::~DrawRectangle_template()
+{
+clean_up();
+}
+
+DrawRectangle_template& DrawRectangle_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+DrawRectangle_template& DrawRectangle_template::operator=(const DrawRectangle& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+DrawRectangle_template& DrawRectangle_template::operator=(const OPTIONAL<DrawRectangle>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const DrawRectangle&)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 @IsobusVTMessageTypes.DrawRectangle.");
+}
+return *this;
+}
+
+DrawRectangle_template& DrawRectangle_template::operator=(const DrawRectangle_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean DrawRectangle_template::match(const DrawRectangle& 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.width().is_bound()) return FALSE;
+if(!single_value->field_width.match(other_value.width(), legacy))return FALSE;
+if(!other_value.height().is_bound()) return FALSE;
+if(!single_value->field_height.match(other_value.height(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.DrawRectangle.");
+}
+return FALSE;
+}
+
+boolean DrawRectangle_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_width.is_bound()
+
+ ||single_value->field_height.is_bound()
+;
+}
+
+boolean DrawRectangle_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_width.is_value()
+ &&single_value->field_height.is_value();
+}
+
+void DrawRectangle_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+DrawRectangle DrawRectangle_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 @IsobusVTMessageTypes.DrawRectangle.");
+DrawRectangle ret_val;
+if (single_value->field_width.is_bound()) {
+ret_val.width() = single_value->field_width.valueof();
+}
+if (single_value->field_height.is_bound()) {
+ret_val.height() = single_value->field_height.valueof();
+}
+return ret_val;
+}
+
+void DrawRectangle_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.DrawRectangle.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new DrawRectangle_template[list_length];
+}
+
+DrawRectangle_template& DrawRectangle_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.DrawRectangle.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.DrawRectangle.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& DrawRectangle_template::width()
+{
+set_specific();
+return single_value->field_width;
+}
+
+const INTEGER_template& DrawRectangle_template::width() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field width of a non-specific template of type @IsobusVTMessageTypes.DrawRectangle.");
+return single_value->field_width;
+}
+
+INTEGER_template& DrawRectangle_template::height()
+{
+set_specific();
+return single_value->field_height;
+}
+
+const INTEGER_template& DrawRectangle_template::height() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field height of a non-specific template of type @IsobusVTMessageTypes.DrawRectangle.");
+return single_value->field_height;
+}
+
+int DrawRectangle_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DrawRectangle 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 @IsobusVTMessageTypes.DrawRectangle 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 @IsobusVTMessageTypes.DrawRectangle containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DrawRectangle containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DrawRectangle containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DrawRectangle containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.DrawRectangle.");
+  }
+  return 0;
+}
+
+void DrawRectangle_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ width := ");
+single_value->field_width.log();
+TTCN_Logger::log_event_str(", height := ");
+single_value->field_height.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void DrawRectangle_template::log_match(const DrawRectangle& 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_width.match(match_value.width(), legacy)){
+TTCN_Logger::log_logmatch_info(".width");
+single_value->field_width.log_match(match_value.width(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_height.match(match_value.height(), legacy)){
+TTCN_Logger::log_logmatch_info(".height");
+single_value->field_height.log_match(match_value.height(), 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("{ width := ");
+single_value->field_width.log_match(match_value.width(), legacy);
+TTCN_Logger::log_event_str(", height := ");
+single_value->field_height.log_match(match_value.height(), 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 DrawRectangle_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_width.encode_text(text_buf);
+single_value->field_height.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 @IsobusVTMessageTypes.DrawRectangle.");
+}
+}
+
+void DrawRectangle_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_width.decode_text(text_buf);
+single_value->field_height.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 DrawRectangle_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 @IsobusVTMessageTypes.DrawRectangle.");
+}
+}
+
+void DrawRectangle_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: {
+    DrawRectangle_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.DrawRectangle 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) width().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) height().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(), "width")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          width().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(), "height")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          height().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 @IsobusVTMessageTypes.DrawRectangle: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.DrawRectangle");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void DrawRectangle_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_width.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DrawRectangle");
+single_value->field_height.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DrawRectangle");
+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 : "@IsobusVTMessageTypes.DrawRectangle");
+}
+
+boolean DrawRectangle_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean DrawRectangle_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+DrawClosedEllipse::DrawClosedEllipse()
+{
+}
+
+DrawClosedEllipse::DrawClosedEllipse(const INTEGER& par_width,
+    const INTEGER& par_height)
+  :   field_width(par_width),
+  field_height(par_height)
+{
+}
+
+DrawClosedEllipse::DrawClosedEllipse(const DrawClosedEllipse& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.DrawClosedEllipse.");
+if (other_value.width().is_bound()) field_width = other_value.width();
+else field_width.clean_up();
+if (other_value.height().is_bound()) field_height = other_value.height();
+else field_height.clean_up();
+}
+
+void DrawClosedEllipse::clean_up()
+{
+field_width.clean_up();
+field_height.clean_up();
+}
+
+const TTCN_Typedescriptor_t* DrawClosedEllipse::get_descriptor() const { return &DrawClosedEllipse_descr_; }
+DrawClosedEllipse& DrawClosedEllipse::operator=(const DrawClosedEllipse& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.DrawClosedEllipse.");
+  if (other_value.width().is_bound()) field_width = other_value.width();
+  else field_width.clean_up();
+  if (other_value.height().is_bound()) field_height = other_value.height();
+  else field_height.clean_up();
+}
+return *this;
+}
+
+boolean DrawClosedEllipse::operator==(const DrawClosedEllipse& other_value) const
+{
+return field_width==other_value.field_width
+  && field_height==other_value.field_height;
+}
+
+boolean DrawClosedEllipse::is_bound() const
+{
+return (field_width.is_bound())
+  || (field_height.is_bound());
+}
+boolean DrawClosedEllipse::is_value() const
+{
+return field_width.is_value()
+  && field_height.is_value();
+}
+void DrawClosedEllipse::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ width := ");
+field_width.log();
+TTCN_Logger::log_event_str(", height := ");
+field_height.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void DrawClosedEllipse::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 @IsobusVTMessageTypes.DrawClosedEllipse 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) width().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) height().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(), "width")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          width().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(), "height")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          height().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 @IsobusVTMessageTypes.DrawClosedEllipse: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.DrawClosedEllipse");
+  }
+}
+
+void DrawClosedEllipse::set_implicit_omit()
+{
+if (width().is_bound()) width().set_implicit_omit();
+if (height().is_bound()) height().set_implicit_omit();
+}
+
+void DrawClosedEllipse::encode_text(Text_Buf& text_buf) const
+{
+field_width.encode_text(text_buf);
+field_height.encode_text(text_buf);
+}
+
+void DrawClosedEllipse::decode_text(Text_Buf& text_buf)
+{
+field_width.decode_text(text_buf);
+field_height.decode_text(text_buf);
+}
+
+void DrawClosedEllipse::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void DrawClosedEllipse::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int DrawClosedEllipse::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, WidthType_descr_.raw->forceomit);
+  decoded_field_length = field_width.RAW_decode(WidthType_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, HeightType_descr_.raw->forceomit);
+  decoded_field_length = field_height.RAW_decode(HeightType_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 DrawClosedEllipse::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, WidthType_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, HeightType_descr_.raw);
+  encoded_length += field_width.RAW_encode(WidthType_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_height.RAW_encode(HeightType_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct DrawClosedEllipse_template::single_value_struct {
+INTEGER_template field_width;
+INTEGER_template field_height;
+};
+
+void DrawClosedEllipse_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_width = ANY_VALUE;
+single_value->field_height = ANY_VALUE;
+}
+}
+}
+
+void DrawClosedEllipse_template::copy_value(const DrawClosedEllipse& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.width().is_bound()) {
+  single_value->field_width = other_value.width();
+} else {
+  single_value->field_width.clean_up();
+}
+if (other_value.height().is_bound()) {
+  single_value->field_height = other_value.height();
+} else {
+  single_value->field_height.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void DrawClosedEllipse_template::copy_template(const DrawClosedEllipse_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.width().get_selection()) {
+single_value->field_width = other_value.width();
+} else {
+single_value->field_width.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.height().get_selection()) {
+single_value->field_height = other_value.height();
+} else {
+single_value->field_height.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new DrawClosedEllipse_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.DrawClosedEllipse.");
+break;
+}
+set_selection(other_value);
+}
+
+DrawClosedEllipse_template::DrawClosedEllipse_template()
+{
+}
+
+DrawClosedEllipse_template::DrawClosedEllipse_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+DrawClosedEllipse_template::DrawClosedEllipse_template(const DrawClosedEllipse& other_value)
+{
+copy_value(other_value);
+}
+
+DrawClosedEllipse_template::DrawClosedEllipse_template(const OPTIONAL<DrawClosedEllipse>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const DrawClosedEllipse&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.DrawClosedEllipse from an unbound optional field.");
+}
+}
+
+DrawClosedEllipse_template::DrawClosedEllipse_template(const DrawClosedEllipse_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+DrawClosedEllipse_template::~DrawClosedEllipse_template()
+{
+clean_up();
+}
+
+DrawClosedEllipse_template& DrawClosedEllipse_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+DrawClosedEllipse_template& DrawClosedEllipse_template::operator=(const DrawClosedEllipse& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+DrawClosedEllipse_template& DrawClosedEllipse_template::operator=(const OPTIONAL<DrawClosedEllipse>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const DrawClosedEllipse&)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 @IsobusVTMessageTypes.DrawClosedEllipse.");
+}
+return *this;
+}
+
+DrawClosedEllipse_template& DrawClosedEllipse_template::operator=(const DrawClosedEllipse_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean DrawClosedEllipse_template::match(const DrawClosedEllipse& 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.width().is_bound()) return FALSE;
+if(!single_value->field_width.match(other_value.width(), legacy))return FALSE;
+if(!other_value.height().is_bound()) return FALSE;
+if(!single_value->field_height.match(other_value.height(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.DrawClosedEllipse.");
+}
+return FALSE;
+}
+
+boolean DrawClosedEllipse_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_width.is_bound()
+
+ ||single_value->field_height.is_bound()
+;
+}
+
+boolean DrawClosedEllipse_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_width.is_value()
+ &&single_value->field_height.is_value();
+}
+
+void DrawClosedEllipse_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+DrawClosedEllipse DrawClosedEllipse_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 @IsobusVTMessageTypes.DrawClosedEllipse.");
+DrawClosedEllipse ret_val;
+if (single_value->field_width.is_bound()) {
+ret_val.width() = single_value->field_width.valueof();
+}
+if (single_value->field_height.is_bound()) {
+ret_val.height() = single_value->field_height.valueof();
+}
+return ret_val;
+}
+
+void DrawClosedEllipse_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.DrawClosedEllipse.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new DrawClosedEllipse_template[list_length];
+}
+
+DrawClosedEllipse_template& DrawClosedEllipse_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.DrawClosedEllipse.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.DrawClosedEllipse.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& DrawClosedEllipse_template::width()
+{
+set_specific();
+return single_value->field_width;
+}
+
+const INTEGER_template& DrawClosedEllipse_template::width() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field width of a non-specific template of type @IsobusVTMessageTypes.DrawClosedEllipse.");
+return single_value->field_width;
+}
+
+INTEGER_template& DrawClosedEllipse_template::height()
+{
+set_specific();
+return single_value->field_height;
+}
+
+const INTEGER_template& DrawClosedEllipse_template::height() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field height of a non-specific template of type @IsobusVTMessageTypes.DrawClosedEllipse.");
+return single_value->field_height;
+}
+
+int DrawClosedEllipse_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DrawClosedEllipse 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 @IsobusVTMessageTypes.DrawClosedEllipse 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 @IsobusVTMessageTypes.DrawClosedEllipse containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DrawClosedEllipse containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DrawClosedEllipse containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DrawClosedEllipse containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.DrawClosedEllipse.");
+  }
+  return 0;
+}
+
+void DrawClosedEllipse_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ width := ");
+single_value->field_width.log();
+TTCN_Logger::log_event_str(", height := ");
+single_value->field_height.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void DrawClosedEllipse_template::log_match(const DrawClosedEllipse& 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_width.match(match_value.width(), legacy)){
+TTCN_Logger::log_logmatch_info(".width");
+single_value->field_width.log_match(match_value.width(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_height.match(match_value.height(), legacy)){
+TTCN_Logger::log_logmatch_info(".height");
+single_value->field_height.log_match(match_value.height(), 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("{ width := ");
+single_value->field_width.log_match(match_value.width(), legacy);
+TTCN_Logger::log_event_str(", height := ");
+single_value->field_height.log_match(match_value.height(), 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 DrawClosedEllipse_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_width.encode_text(text_buf);
+single_value->field_height.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 @IsobusVTMessageTypes.DrawClosedEllipse.");
+}
+}
+
+void DrawClosedEllipse_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_width.decode_text(text_buf);
+single_value->field_height.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 DrawClosedEllipse_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 @IsobusVTMessageTypes.DrawClosedEllipse.");
+}
+}
+
+void DrawClosedEllipse_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: {
+    DrawClosedEllipse_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.DrawClosedEllipse 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) width().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) height().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(), "width")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          width().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(), "height")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          height().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 @IsobusVTMessageTypes.DrawClosedEllipse: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.DrawClosedEllipse");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void DrawClosedEllipse_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_width.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DrawClosedEllipse");
+single_value->field_height.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DrawClosedEllipse");
+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 : "@IsobusVTMessageTypes.DrawClosedEllipse");
+}
+
+boolean DrawClosedEllipse_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean DrawClosedEllipse_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+PolygonPoint::PolygonPoint()
+{
+}
+
+PolygonPoint::PolygonPoint(const INTEGER& par_xOffset,
+    const INTEGER& par_yOffset)
+  :   field_xOffset(par_xOffset),
+  field_yOffset(par_yOffset)
+{
+}
+
+PolygonPoint::PolygonPoint(const PolygonPoint& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.PolygonPoint.");
+if (other_value.xOffset().is_bound()) field_xOffset = other_value.xOffset();
+else field_xOffset.clean_up();
+if (other_value.yOffset().is_bound()) field_yOffset = other_value.yOffset();
+else field_yOffset.clean_up();
+}
+
+void PolygonPoint::clean_up()
+{
+field_xOffset.clean_up();
+field_yOffset.clean_up();
+}
+
+const TTCN_Typedescriptor_t* PolygonPoint::get_descriptor() const { return &PolygonPoint_descr_; }
+PolygonPoint& PolygonPoint::operator=(const PolygonPoint& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.PolygonPoint.");
+  if (other_value.xOffset().is_bound()) field_xOffset = other_value.xOffset();
+  else field_xOffset.clean_up();
+  if (other_value.yOffset().is_bound()) field_yOffset = other_value.yOffset();
+  else field_yOffset.clean_up();
+}
+return *this;
+}
+
+boolean PolygonPoint::operator==(const PolygonPoint& other_value) const
+{
+return field_xOffset==other_value.field_xOffset
+  && field_yOffset==other_value.field_yOffset;
+}
+
+boolean PolygonPoint::is_bound() const
+{
+return (field_xOffset.is_bound())
+  || (field_yOffset.is_bound());
+}
+boolean PolygonPoint::is_value() const
+{
+return field_xOffset.is_value()
+  && field_yOffset.is_value();
+}
+void PolygonPoint::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ xOffset := ");
+field_xOffset.log();
+TTCN_Logger::log_event_str(", yOffset := ");
+field_yOffset.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void PolygonPoint::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 @IsobusVTMessageTypes.PolygonPoint 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) xOffset().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) yOffset().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(), "xOffset")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          xOffset().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(), "yOffset")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          yOffset().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 @IsobusVTMessageTypes.PolygonPoint: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.PolygonPoint");
+  }
+}
+
+void PolygonPoint::set_implicit_omit()
+{
+if (xOffset().is_bound()) xOffset().set_implicit_omit();
+if (yOffset().is_bound()) yOffset().set_implicit_omit();
+}
+
+void PolygonPoint::encode_text(Text_Buf& text_buf) const
+{
+field_xOffset.encode_text(text_buf);
+field_yOffset.encode_text(text_buf);
+}
+
+void PolygonPoint::decode_text(Text_Buf& text_buf)
+{
+field_xOffset.decode_text(text_buf);
+field_yOffset.decode_text(text_buf);
+}
+
+void PolygonPoint::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void PolygonPoint::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int PolygonPoint::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, XOffsetType_descr_.raw->forceomit);
+  decoded_field_length = field_xOffset.RAW_decode(XOffsetType_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, YOffsetType_descr_.raw->forceomit);
+  decoded_field_length = field_yOffset.RAW_decode(YOffsetType_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 PolygonPoint::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, XOffsetType_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, YOffsetType_descr_.raw);
+  encoded_length += field_xOffset.RAW_encode(XOffsetType_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_yOffset.RAW_encode(YOffsetType_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct PolygonPoint_template::single_value_struct {
+INTEGER_template field_xOffset;
+INTEGER_template field_yOffset;
+};
+
+void PolygonPoint_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_xOffset = ANY_VALUE;
+single_value->field_yOffset = ANY_VALUE;
+}
+}
+}
+
+void PolygonPoint_template::copy_value(const PolygonPoint& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.xOffset().is_bound()) {
+  single_value->field_xOffset = other_value.xOffset();
+} else {
+  single_value->field_xOffset.clean_up();
+}
+if (other_value.yOffset().is_bound()) {
+  single_value->field_yOffset = other_value.yOffset();
+} else {
+  single_value->field_yOffset.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void PolygonPoint_template::copy_template(const PolygonPoint_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.xOffset().get_selection()) {
+single_value->field_xOffset = other_value.xOffset();
+} else {
+single_value->field_xOffset.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.yOffset().get_selection()) {
+single_value->field_yOffset = other_value.yOffset();
+} else {
+single_value->field_yOffset.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new PolygonPoint_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.PolygonPoint.");
+break;
+}
+set_selection(other_value);
+}
+
+PolygonPoint_template::PolygonPoint_template()
+{
+}
+
+PolygonPoint_template::PolygonPoint_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+PolygonPoint_template::PolygonPoint_template(const PolygonPoint& other_value)
+{
+copy_value(other_value);
+}
+
+PolygonPoint_template::PolygonPoint_template(const OPTIONAL<PolygonPoint>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const PolygonPoint&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.PolygonPoint from an unbound optional field.");
+}
+}
+
+PolygonPoint_template::PolygonPoint_template(const PolygonPoint_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+PolygonPoint_template::~PolygonPoint_template()
+{
+clean_up();
+}
+
+PolygonPoint_template& PolygonPoint_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+PolygonPoint_template& PolygonPoint_template::operator=(const PolygonPoint& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+PolygonPoint_template& PolygonPoint_template::operator=(const OPTIONAL<PolygonPoint>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const PolygonPoint&)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 @IsobusVTMessageTypes.PolygonPoint.");
+}
+return *this;
+}
+
+PolygonPoint_template& PolygonPoint_template::operator=(const PolygonPoint_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean PolygonPoint_template::match(const PolygonPoint& 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.xOffset().is_bound()) return FALSE;
+if(!single_value->field_xOffset.match(other_value.xOffset(), legacy))return FALSE;
+if(!other_value.yOffset().is_bound()) return FALSE;
+if(!single_value->field_yOffset.match(other_value.yOffset(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.PolygonPoint.");
+}
+return FALSE;
+}
+
+boolean PolygonPoint_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_xOffset.is_bound()
+
+ ||single_value->field_yOffset.is_bound()
+;
+}
+
+boolean PolygonPoint_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_xOffset.is_value()
+ &&single_value->field_yOffset.is_value();
+}
+
+void PolygonPoint_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+PolygonPoint PolygonPoint_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 @IsobusVTMessageTypes.PolygonPoint.");
+PolygonPoint ret_val;
+if (single_value->field_xOffset.is_bound()) {
+ret_val.xOffset() = single_value->field_xOffset.valueof();
+}
+if (single_value->field_yOffset.is_bound()) {
+ret_val.yOffset() = single_value->field_yOffset.valueof();
+}
+return ret_val;
+}
+
+void PolygonPoint_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.PolygonPoint.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new PolygonPoint_template[list_length];
+}
+
+PolygonPoint_template& PolygonPoint_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.PolygonPoint.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.PolygonPoint.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& PolygonPoint_template::xOffset()
+{
+set_specific();
+return single_value->field_xOffset;
+}
+
+const INTEGER_template& PolygonPoint_template::xOffset() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field xOffset of a non-specific template of type @IsobusVTMessageTypes.PolygonPoint.");
+return single_value->field_xOffset;
+}
+
+INTEGER_template& PolygonPoint_template::yOffset()
+{
+set_specific();
+return single_value->field_yOffset;
+}
+
+const INTEGER_template& PolygonPoint_template::yOffset() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field yOffset of a non-specific template of type @IsobusVTMessageTypes.PolygonPoint.");
+return single_value->field_yOffset;
+}
+
+int PolygonPoint_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.PolygonPoint 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 @IsobusVTMessageTypes.PolygonPoint 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 @IsobusVTMessageTypes.PolygonPoint containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.PolygonPoint containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.PolygonPoint containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.PolygonPoint containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.PolygonPoint.");
+  }
+  return 0;
+}
+
+void PolygonPoint_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ xOffset := ");
+single_value->field_xOffset.log();
+TTCN_Logger::log_event_str(", yOffset := ");
+single_value->field_yOffset.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void PolygonPoint_template::log_match(const PolygonPoint& 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_xOffset.match(match_value.xOffset(), legacy)){
+TTCN_Logger::log_logmatch_info(".xOffset");
+single_value->field_xOffset.log_match(match_value.xOffset(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_yOffset.match(match_value.yOffset(), legacy)){
+TTCN_Logger::log_logmatch_info(".yOffset");
+single_value->field_yOffset.log_match(match_value.yOffset(), 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("{ xOffset := ");
+single_value->field_xOffset.log_match(match_value.xOffset(), legacy);
+TTCN_Logger::log_event_str(", yOffset := ");
+single_value->field_yOffset.log_match(match_value.yOffset(), 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 PolygonPoint_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_xOffset.encode_text(text_buf);
+single_value->field_yOffset.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 @IsobusVTMessageTypes.PolygonPoint.");
+}
+}
+
+void PolygonPoint_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_xOffset.decode_text(text_buf);
+single_value->field_yOffset.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 PolygonPoint_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 @IsobusVTMessageTypes.PolygonPoint.");
+}
+}
+
+void PolygonPoint_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: {
+    PolygonPoint_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.PolygonPoint 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) xOffset().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) yOffset().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(), "xOffset")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          xOffset().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(), "yOffset")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          yOffset().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 @IsobusVTMessageTypes.PolygonPoint: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.PolygonPoint");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void PolygonPoint_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_xOffset.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.PolygonPoint");
+single_value->field_yOffset.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.PolygonPoint");
+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 : "@IsobusVTMessageTypes.PolygonPoint");
+}
+
+boolean PolygonPoint_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean PolygonPoint_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 PolygonPoint PolygonPointArray::UNBOUND_ELEM;
+PolygonPointArray::PolygonPointArray()
+{
+val_ptr = NULL;
+}
+
+PolygonPointArray::PolygonPointArray(null_type)
+{
+val_ptr = new recordof_setof_struct;
+val_ptr->ref_count = 1;
+val_ptr->n_elements = 0;
+val_ptr->value_elements = NULL;
+}
+
+PolygonPointArray::PolygonPointArray(const PolygonPointArray& other_value)
+{
+if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.PolygonPointArray.");
+val_ptr = other_value.val_ptr;
+val_ptr->ref_count++;
+}
+
+PolygonPointArray::~PolygonPointArray()
+{
+clean_up();
+if (val_ptr != NULL) val_ptr = NULL;
+}
+
+void PolygonPointArray::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.");
+}
+}
+
+PolygonPointArray& PolygonPointArray::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;
+}
+
+PolygonPointArray& PolygonPointArray::operator=(const PolygonPointArray& other_value)
+{
+if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @IsobusVTMessageTypes.PolygonPointArray.");
+if (this != &other_value) {
+clean_up();
+val_ptr = other_value.val_ptr;
+val_ptr->ref_count++;
+}
+return *this;
+}
+
+boolean PolygonPointArray::operator==(null_type) const
+{
+if (val_ptr == NULL)
+TTCN_error("The left operand of comparison is an unbound value of type @IsobusVTMessageTypes.PolygonPointArray.");
+return val_ptr->n_elements == 0 ;
+}
+
+boolean PolygonPointArray::operator==(const PolygonPointArray& other_value) const
+{
+if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @IsobusVTMessageTypes.PolygonPointArray.");
+if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @IsobusVTMessageTypes.PolygonPointArray.");
+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;
+}
+
+PolygonPoint& PolygonPointArray::operator[](int index_value)
+{
+if (index_value < 0) TTCN_error("Accessing an element of type @IsobusVTMessageTypes.PolygonPointArray 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 = (PolygonPoint**)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 PolygonPoint(*(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 PolygonPoint;
+}
+return *val_ptr->value_elements[index_value];
+}
+
+PolygonPoint& PolygonPointArray::operator[](const INTEGER& index_value)
+{
+index_value.must_bound("Using an unbound integer value for indexing a value of type @IsobusVTMessageTypes.PolygonPointArray.");
+return (*this)[(int)index_value];
+}
+
+const PolygonPoint& PolygonPointArray::operator[](int index_value) const
+{
+if (val_ptr == NULL)
+TTCN_error("Accessing an element in an unbound value of type @IsobusVTMessageTypes.PolygonPointArray.");
+if (index_value < 0) TTCN_error("Accessing an element of type @IsobusVTMessageTypes.PolygonPointArray using a negative index: %d.", index_value);
+if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @IsobusVTMessageTypes.PolygonPointArray: 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 PolygonPoint& PolygonPointArray::operator[](const INTEGER& index_value) const
+{
+index_value.must_bound("Using an unbound integer value for indexing a value of type @IsobusVTMessageTypes.PolygonPointArray.");
+return (*this)[(int)index_value];
+}
+
+PolygonPointArray PolygonPointArray::operator<<=(int rotate_count) const
+{
+return *this >>= (-rotate_count);
+}
+
+PolygonPointArray PolygonPointArray::operator<<=(const INTEGER& rotate_count) const
+{
+rotate_count.must_bound("Unbound integer operand of rotate left operator.");
+return *this >>= (int)(-rotate_count);
+}
+
+PolygonPointArray PolygonPointArray::operator>>=(const INTEGER& rotate_count) const
+{
+rotate_count.must_bound("Unbound integer operand of rotate right operator.");
+return *this >>= (int)rotate_count;
+}
+
+PolygonPointArray PolygonPointArray::operator>>=(int rotate_count) const
+{
+if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @IsobusVTMessageTypes.PolygonPointArray.");
+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;
+PolygonPointArray 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 PolygonPoint(*val_ptr->value_elements[i]);
+}
+}
+return ret_val;
+}
+
+PolygonPointArray PolygonPointArray::operator+(const PolygonPointArray& other_value) const
+{
+if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @IsobusVTMessageTypes.PolygonPointArray concatenation.");
+if (val_ptr->n_elements == 0) return other_value;
+if (other_value.val_ptr->n_elements == 0) return *this;
+PolygonPointArray 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 PolygonPoint(*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 PolygonPoint(*other_value.val_ptr->value_elements[i]);
+}
+}
+return ret_val;
+}
+
+PolygonPointArray PolygonPointArray::substr(int index, int returncount) const
+{
+if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @IsobusVTMessageTypes.PolygonPointArray.");
+check_substr_arguments(val_ptr->n_elements, index, returncount, "@IsobusVTMessageTypes.PolygonPointArray","element");
+PolygonPointArray 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 PolygonPoint(*val_ptr->value_elements[i+index]);
+}
+}
+return ret_val;
+}
+
+PolygonPointArray PolygonPointArray::replace(int index, int len, const PolygonPointArray& repl) const
+{
+if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @IsobusVTMessageTypes.PolygonPointArray.");
+if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @IsobusVTMessageTypes.PolygonPointArray.");
+check_replace_arguments(val_ptr->n_elements, index, len, "@IsobusVTMessageTypes.PolygonPointArray","element");
+PolygonPointArray 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 PolygonPoint(*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 PolygonPoint(*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 PolygonPoint(*val_ptr->value_elements[index+i+len]);
+}
+}
+return ret_val;
+}
+
+PolygonPointArray PolygonPointArray::replace(int index, int len, const PolygonPointArray_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 PolygonPointArray::set_size(int new_size)
+{
+if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @IsobusVTMessageTypes.PolygonPointArray.");
+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 = (PolygonPoint**)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 PolygonPoint(*(val_ptr->value_elements[elem_count]));
+}
+}
+clean_up();
+val_ptr = new_val_ptr;
+}
+if (new_size > val_ptr->n_elements) {
+val_ptr->value_elements = (PolygonPoint**)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 @IsobusVTMessageTypes.PolygonPointArray: %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 = (PolygonPoint**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size);
+val_ptr->n_elements = new_size;
+}
+}
+
+boolean PolygonPointArray::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 PolygonPointArray::size_of() const
+{
+if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @IsobusVTMessageTypes.PolygonPointArray.");
+return val_ptr->n_elements;
+}
+
+int PolygonPointArray::lengthof() const
+{
+if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @IsobusVTMessageTypes.PolygonPointArray.");
+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 PolygonPointArray::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 PolygonPointArray::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", "@IsobusVTMessageTypes.PolygonPointArray");
+    }
+    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", "@IsobusVTMessageTypes.PolygonPointArray");
+    }
+    break;
+  default:
+    TTCN_error("Internal error: Unknown operation type.");
+  }
+}
+
+void PolygonPointArray::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 PolygonPointArray::encode_text(Text_Buf& text_buf) const
+{
+if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @IsobusVTMessageTypes.PolygonPointArray.");
+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 PolygonPointArray::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 @IsobusVTMessageTypes.PolygonPointArray.");
+val_ptr->value_elements = (PolygonPoint**)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 PolygonPoint;
+val_ptr->value_elements[elem_count]->decode_text(text_buf);
+}
+}
+
+void PolygonPointArray::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void PolygonPointArray::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int PolygonPointArray::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;
+    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) 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 PolygonPointArray::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 PolygonPointArray_template::copy_value(const PolygonPointArray& other_value)
+{
+if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @IsobusVTMessageTypes.PolygonPointArray with an unbound value.");
+single_value.n_elements = other_value.size_of();
+single_value.value_elements = (PolygonPoint_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 PolygonPoint_template(other_value[elem_count]);
+} else {
+single_value.value_elements[elem_count] = new PolygonPoint_template;
+}
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void PolygonPointArray_template::copy_template(const PolygonPointArray_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 = (PolygonPoint_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 PolygonPoint_template(*other_value.single_value.value_elements[elem_count]);
+} else {
+single_value.value_elements[elem_count] = new PolygonPoint_template;
+}
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new PolygonPointArray_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.PolygonPointArray.");
+break;
+}
+set_selection(other_value);
+}
+
+boolean PolygonPointArray_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 PolygonPointArray_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const PolygonPointArray*)value_ptr)[value_index], legacy);
+else return ((const PolygonPointArray_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit();
+}
+
+PolygonPointArray_template::PolygonPointArray_template()
+{
+}
+
+PolygonPointArray_template::PolygonPointArray_template(template_sel other_value)
+ : Record_Of_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+PolygonPointArray_template::PolygonPointArray_template(null_type)
+ : Record_Of_Template(SPECIFIC_VALUE)
+{
+single_value.n_elements = 0;
+single_value.value_elements = NULL;
+}
+
+PolygonPointArray_template::PolygonPointArray_template(const PolygonPointArray& other_value)
+{
+copy_value(other_value);
+}
+
+PolygonPointArray_template::PolygonPointArray_template(const OPTIONAL<PolygonPointArray>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const PolygonPointArray&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.PolygonPointArray from an unbound optional field.");
+}
+}
+
+PolygonPointArray_template::PolygonPointArray_template(const PolygonPointArray_template& other_value)
+ : Record_Of_Template()
+{
+copy_template(other_value);
+}
+
+PolygonPointArray_template::~PolygonPointArray_template()
+{
+clean_up();
+}
+
+void PolygonPointArray_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:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+PolygonPointArray_template& PolygonPointArray_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+PolygonPointArray_template& PolygonPointArray_template::operator=(null_type)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value.n_elements = 0;
+single_value.value_elements = NULL;
+return *this;
+}
+
+PolygonPointArray_template& PolygonPointArray_template::operator=(const PolygonPointArray& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+PolygonPointArray_template& PolygonPointArray_template::operator=(const OPTIONAL<PolygonPointArray>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const PolygonPointArray&)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 @IsobusVTMessageTypes.PolygonPointArray.");
+}
+return *this;
+}
+
+PolygonPointArray_template& PolygonPointArray_template::operator=(const PolygonPointArray_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+PolygonPoint_template& PolygonPointArray_template::operator[](int index_value)
+{
+if (index_value < 0) TTCN_error("Accessing an element of a template for type @IsobusVTMessageTypes.PolygonPointArray 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 @IsobusVTMessageTypes.PolygonPointArray.");
+    break;
+}
+return *single_value.value_elements[index_value];
+}
+
+PolygonPoint_template& PolygonPointArray_template::operator[](const INTEGER& index_value)
+{
+index_value.must_bound("Using an unbound integer value for indexing a template of type @IsobusVTMessageTypes.PolygonPointArray.");
+return (*this)[(int)index_value];
+}
+
+const PolygonPoint_template& PolygonPointArray_template::operator[](int index_value) const
+{
+if (index_value < 0) TTCN_error("Accessing an element of a template for type @IsobusVTMessageTypes.PolygonPointArray using a negative index: %d.", index_value);
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @IsobusVTMessageTypes.PolygonPointArray.");
+if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @IsobusVTMessageTypes.PolygonPointArray: 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 PolygonPoint_template& PolygonPointArray_template::operator[](const INTEGER& index_value) const
+{
+index_value.must_bound("Using an unbound integer value for indexing a template of type @IsobusVTMessageTypes.PolygonPointArray.");
+return (*this)[(int)index_value];
+}
+
+void PolygonPointArray_template::set_size(int new_size)
+{
+if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @IsobusVTMessageTypes.PolygonPointArray.");
+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 = (PolygonPoint_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 PolygonPoint_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 PolygonPoint_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 = (PolygonPoint_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size);
+single_value.n_elements = new_size;
+}
+}
+
+int PolygonPointArray_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 PolygonPointArray_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 @IsobusVTMessageTypes.PolygonPointArray 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 @IsobusVTMessageTypes.PolygonPointArray 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 @IsobusVTMessageTypes.PolygonPointArray 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 @IsobusVTMessageTypes.PolygonPointArray 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 @IsobusVTMessageTypes.PolygonPointArray 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 @IsobusVTMessageTypes.PolygonPointArray containing complemented list.", op_name);
+default:
+  TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.PolygonPointArray.", op_name);
+}
+return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @IsobusVTMessageTypes.PolygonPointArray");
+}
+
+boolean PolygonPointArray_template::match(const PolygonPointArray& 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;
+default:
+TTCN_error("Matching with an uninitialized/unsupported template of type @IsobusVTMessageTypes.PolygonPointArray.");
+}
+return FALSE;
+}
+
+boolean PolygonPointArray_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;
+}
+
+PolygonPointArray PolygonPointArray_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 @IsobusVTMessageTypes.PolygonPointArray.");
+PolygonPointArray 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;
+}
+
+PolygonPointArray PolygonPointArray_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);
+}
+
+PolygonPointArray PolygonPointArray_template::replace(int index, int len, const PolygonPointArray_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());
+}
+
+PolygonPointArray PolygonPointArray_template::replace(int index, int len, const PolygonPointArray& 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 PolygonPointArray_template::set_type(template_sel template_type, unsigned int list_length)
+{
+clean_up();
+switch (template_type) {
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = list_length;
+value_list.list_value = new PolygonPointArray_template[list_length];
+break;
+default:
+TTCN_error("Internal error: Setting an invalid type for a template of type @IsobusVTMessageTypes.PolygonPointArray.");
+}
+set_selection(template_type);
+}
+
+PolygonPointArray_template& PolygonPointArray_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of type @IsobusVTMessageTypes.PolygonPointArray.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @IsobusVTMessageTypes.PolygonPointArray.");
+return value_list.list_value[list_index];
+}
+
+void PolygonPointArray_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 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;
+default:
+log_generic();
+}
+log_restricted();
+log_ifpresent();
+}
+
+void PolygonPointArray_template::log_match(const PolygonPointArray& 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 PolygonPointArray_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 @IsobusVTMessageTypes.PolygonPointArray.");
+}
+}
+
+void PolygonPointArray_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 @IsobusVTMessageTypes.PolygonPointArray.");
+single_value.value_elements = (PolygonPoint_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 PolygonPoint_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 PolygonPointArray_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 @IsobusVTMessageTypes.PolygonPointArray.");
+}
+}
+
+boolean PolygonPointArray_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean PolygonPointArray_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 PolygonPointArray_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: {
+    PolygonPointArray_template temp;
+    temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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;
+  default:
+    param.type_error("record of template", "@IsobusVTMessageTypes.PolygonPointArray");
+  }
+  is_ifpresent = param.get_ifpresent();
+  set_length_range(param);
+}
+
+void PolygonPointArray_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 : "@IsobusVTMessageTypes.PolygonPointArray");
+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 : "@IsobusVTMessageTypes.PolygonPointArray");
+}
+
+boolean PolygonPointArray_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);
+}
+}
+DrawPolygon::DrawPolygon()
+{
+}
+
+DrawPolygon::DrawPolygon(const INTEGER& par_numberOfPolygonPointsToFollow,
+    const PolygonPointArray& par_polygonPointArray)
+  :   field_numberOfPolygonPointsToFollow(par_numberOfPolygonPointsToFollow),
+  field_polygonPointArray(par_polygonPointArray)
+{
+}
+
+DrawPolygon::DrawPolygon(const DrawPolygon& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.DrawPolygon.");
+if (other_value.numberOfPolygonPointsToFollow().is_bound()) field_numberOfPolygonPointsToFollow = other_value.numberOfPolygonPointsToFollow();
+else field_numberOfPolygonPointsToFollow.clean_up();
+if (other_value.polygonPointArray().is_bound()) field_polygonPointArray = other_value.polygonPointArray();
+else field_polygonPointArray.clean_up();
+}
+
+void DrawPolygon::clean_up()
+{
+field_numberOfPolygonPointsToFollow.clean_up();
+field_polygonPointArray.clean_up();
+}
+
+const TTCN_Typedescriptor_t* DrawPolygon::get_descriptor() const { return &DrawPolygon_descr_; }
+DrawPolygon& DrawPolygon::operator=(const DrawPolygon& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.DrawPolygon.");
+  if (other_value.numberOfPolygonPointsToFollow().is_bound()) field_numberOfPolygonPointsToFollow = other_value.numberOfPolygonPointsToFollow();
+  else field_numberOfPolygonPointsToFollow.clean_up();
+  if (other_value.polygonPointArray().is_bound()) field_polygonPointArray = other_value.polygonPointArray();
+  else field_polygonPointArray.clean_up();
+}
+return *this;
+}
+
+boolean DrawPolygon::operator==(const DrawPolygon& other_value) const
+{
+return field_numberOfPolygonPointsToFollow==other_value.field_numberOfPolygonPointsToFollow
+  && field_polygonPointArray==other_value.field_polygonPointArray;
+}
+
+boolean DrawPolygon::is_bound() const
+{
+return (field_numberOfPolygonPointsToFollow.is_bound())
+  || (field_polygonPointArray.is_bound());
+}
+boolean DrawPolygon::is_value() const
+{
+return field_numberOfPolygonPointsToFollow.is_value()
+  && field_polygonPointArray.is_value();
+}
+void DrawPolygon::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ numberOfPolygonPointsToFollow := ");
+field_numberOfPolygonPointsToFollow.log();
+TTCN_Logger::log_event_str(", polygonPointArray := ");
+field_polygonPointArray.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void DrawPolygon::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 @IsobusVTMessageTypes.DrawPolygon 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) numberOfPolygonPointsToFollow().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) polygonPointArray().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(), "numberOfPolygonPointsToFollow")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          numberOfPolygonPointsToFollow().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(), "polygonPointArray")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          polygonPointArray().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 @IsobusVTMessageTypes.DrawPolygon: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.DrawPolygon");
+  }
+}
+
+void DrawPolygon::set_implicit_omit()
+{
+if (numberOfPolygonPointsToFollow().is_bound()) numberOfPolygonPointsToFollow().set_implicit_omit();
+if (polygonPointArray().is_bound()) polygonPointArray().set_implicit_omit();
+}
+
+void DrawPolygon::encode_text(Text_Buf& text_buf) const
+{
+field_numberOfPolygonPointsToFollow.encode_text(text_buf);
+field_polygonPointArray.encode_text(text_buf);
+}
+
+void DrawPolygon::decode_text(Text_Buf& text_buf)
+{
+field_numberOfPolygonPointsToFollow.decode_text(text_buf);
+field_polygonPointArray.decode_text(text_buf);
+}
+
+void DrawPolygon::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void DrawPolygon::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int DrawPolygon::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;
+  int value_of_length_field0 = 0;
+  RAW_Force_Omit field_0_force_omit(0, force_omit, DrawPolygon_numberOfPolygonPointsToFollow_descr_.raw->forceomit);
+  decoded_field_length = field_numberOfPolygonPointsToFollow.RAW_decode(DrawPolygon_numberOfPolygonPointsToFollow_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());
+  value_of_length_field0+=field_numberOfPolygonPointsToFollow.get_long_long_val()*1;
+  RAW_Force_Omit field_1_force_omit(1, force_omit, PolygonPointArray_descr_.raw->forceomit);
+  decoded_field_length = field_polygonPointArray.RAW_decode(PolygonPointArray_descr_, p_buf, limit, local_top_order, no_err, value_of_length_field0, 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());
+  value_of_length_field0 -= decoded_field_length;
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int DrawPolygon::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, DrawPolygon_numberOfPolygonPointsToFollow_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, PolygonPointArray_descr_.raw);
+  encoded_length += 8;
+  myleaf.body.node.nodes[0]->calc = CALC_LENGTH;
+  myleaf.body.node.nodes[0]->coding_descr = &DrawPolygon_numberOfPolygonPointsToFollow_descr_;
+  myleaf.body.node.nodes[0]->calcof.lengthto.num_of_fields = 1;
+  myleaf.body.node.nodes[0]->calcof.lengthto.unit = -1;
+  myleaf.body.node.nodes[0]->calcof.lengthto.offset = 0;
+  myleaf.body.node.nodes[0]->calcof.lengthto.fields = init_lengthto_fields_list(1);
+  myleaf.body.node.nodes[0]->length = 8;
+  myleaf.body.node.nodes[0]->calcof.lengthto.fields[0].level = myleaf.body.node.nodes[1]->curr_pos.level;
+  myleaf.body.node.nodes[0]->calcof.lengthto.fields[0].pos = myleaf.body.node.nodes[1]->curr_pos.pos;
+  encoded_length += field_polygonPointArray.RAW_encode(PolygonPointArray_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct DrawPolygon_template::single_value_struct {
+INTEGER_template field_numberOfPolygonPointsToFollow;
+PolygonPointArray_template field_polygonPointArray;
+};
+
+void DrawPolygon_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_numberOfPolygonPointsToFollow = ANY_VALUE;
+single_value->field_polygonPointArray = ANY_VALUE;
+}
+}
+}
+
+void DrawPolygon_template::copy_value(const DrawPolygon& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.numberOfPolygonPointsToFollow().is_bound()) {
+  single_value->field_numberOfPolygonPointsToFollow = other_value.numberOfPolygonPointsToFollow();
+} else {
+  single_value->field_numberOfPolygonPointsToFollow.clean_up();
+}
+if (other_value.polygonPointArray().is_bound()) {
+  single_value->field_polygonPointArray = other_value.polygonPointArray();
+} else {
+  single_value->field_polygonPointArray.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void DrawPolygon_template::copy_template(const DrawPolygon_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.numberOfPolygonPointsToFollow().get_selection()) {
+single_value->field_numberOfPolygonPointsToFollow = other_value.numberOfPolygonPointsToFollow();
+} else {
+single_value->field_numberOfPolygonPointsToFollow.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.polygonPointArray().get_selection()) {
+single_value->field_polygonPointArray = other_value.polygonPointArray();
+} else {
+single_value->field_polygonPointArray.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new DrawPolygon_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.DrawPolygon.");
+break;
+}
+set_selection(other_value);
+}
+
+DrawPolygon_template::DrawPolygon_template()
+{
+}
+
+DrawPolygon_template::DrawPolygon_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+DrawPolygon_template::DrawPolygon_template(const DrawPolygon& other_value)
+{
+copy_value(other_value);
+}
+
+DrawPolygon_template::DrawPolygon_template(const OPTIONAL<DrawPolygon>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const DrawPolygon&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.DrawPolygon from an unbound optional field.");
+}
+}
+
+DrawPolygon_template::DrawPolygon_template(const DrawPolygon_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+DrawPolygon_template::~DrawPolygon_template()
+{
+clean_up();
+}
+
+DrawPolygon_template& DrawPolygon_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+DrawPolygon_template& DrawPolygon_template::operator=(const DrawPolygon& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+DrawPolygon_template& DrawPolygon_template::operator=(const OPTIONAL<DrawPolygon>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const DrawPolygon&)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 @IsobusVTMessageTypes.DrawPolygon.");
+}
+return *this;
+}
+
+DrawPolygon_template& DrawPolygon_template::operator=(const DrawPolygon_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean DrawPolygon_template::match(const DrawPolygon& 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.numberOfPolygonPointsToFollow().is_bound()) return FALSE;
+if(!single_value->field_numberOfPolygonPointsToFollow.match(other_value.numberOfPolygonPointsToFollow(), legacy))return FALSE;
+if(!other_value.polygonPointArray().is_bound()) return FALSE;
+if(!single_value->field_polygonPointArray.match(other_value.polygonPointArray(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.DrawPolygon.");
+}
+return FALSE;
+}
+
+boolean DrawPolygon_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_numberOfPolygonPointsToFollow.is_bound()
+
+ ||single_value->field_polygonPointArray.is_bound()
+;
+}
+
+boolean DrawPolygon_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_numberOfPolygonPointsToFollow.is_value()
+ &&single_value->field_polygonPointArray.is_value();
+}
+
+void DrawPolygon_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+DrawPolygon DrawPolygon_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 @IsobusVTMessageTypes.DrawPolygon.");
+DrawPolygon ret_val;
+if (single_value->field_numberOfPolygonPointsToFollow.is_bound()) {
+ret_val.numberOfPolygonPointsToFollow() = single_value->field_numberOfPolygonPointsToFollow.valueof();
+}
+if (single_value->field_polygonPointArray.is_bound()) {
+ret_val.polygonPointArray() = single_value->field_polygonPointArray.valueof();
+}
+return ret_val;
+}
+
+void DrawPolygon_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.DrawPolygon.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new DrawPolygon_template[list_length];
+}
+
+DrawPolygon_template& DrawPolygon_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.DrawPolygon.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.DrawPolygon.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& DrawPolygon_template::numberOfPolygonPointsToFollow()
+{
+set_specific();
+return single_value->field_numberOfPolygonPointsToFollow;
+}
+
+const INTEGER_template& DrawPolygon_template::numberOfPolygonPointsToFollow() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field numberOfPolygonPointsToFollow of a non-specific template of type @IsobusVTMessageTypes.DrawPolygon.");
+return single_value->field_numberOfPolygonPointsToFollow;
+}
+
+PolygonPointArray_template& DrawPolygon_template::polygonPointArray()
+{
+set_specific();
+return single_value->field_polygonPointArray;
+}
+
+const PolygonPointArray_template& DrawPolygon_template::polygonPointArray() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field polygonPointArray of a non-specific template of type @IsobusVTMessageTypes.DrawPolygon.");
+return single_value->field_polygonPointArray;
+}
+
+int DrawPolygon_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DrawPolygon 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 @IsobusVTMessageTypes.DrawPolygon 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 @IsobusVTMessageTypes.DrawPolygon containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DrawPolygon containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DrawPolygon containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DrawPolygon containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.DrawPolygon.");
+  }
+  return 0;
+}
+
+void DrawPolygon_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ numberOfPolygonPointsToFollow := ");
+single_value->field_numberOfPolygonPointsToFollow.log();
+TTCN_Logger::log_event_str(", polygonPointArray := ");
+single_value->field_polygonPointArray.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void DrawPolygon_template::log_match(const DrawPolygon& 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_numberOfPolygonPointsToFollow.match(match_value.numberOfPolygonPointsToFollow(), legacy)){
+TTCN_Logger::log_logmatch_info(".numberOfPolygonPointsToFollow");
+single_value->field_numberOfPolygonPointsToFollow.log_match(match_value.numberOfPolygonPointsToFollow(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_polygonPointArray.match(match_value.polygonPointArray(), legacy)){
+TTCN_Logger::log_logmatch_info(".polygonPointArray");
+single_value->field_polygonPointArray.log_match(match_value.polygonPointArray(), 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("{ numberOfPolygonPointsToFollow := ");
+single_value->field_numberOfPolygonPointsToFollow.log_match(match_value.numberOfPolygonPointsToFollow(), legacy);
+TTCN_Logger::log_event_str(", polygonPointArray := ");
+single_value->field_polygonPointArray.log_match(match_value.polygonPointArray(), 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 DrawPolygon_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_numberOfPolygonPointsToFollow.encode_text(text_buf);
+single_value->field_polygonPointArray.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 @IsobusVTMessageTypes.DrawPolygon.");
+}
+}
+
+void DrawPolygon_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_numberOfPolygonPointsToFollow.decode_text(text_buf);
+single_value->field_polygonPointArray.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 DrawPolygon_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 @IsobusVTMessageTypes.DrawPolygon.");
+}
+}
+
+void DrawPolygon_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: {
+    DrawPolygon_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.DrawPolygon 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) numberOfPolygonPointsToFollow().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) polygonPointArray().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(), "numberOfPolygonPointsToFollow")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          numberOfPolygonPointsToFollow().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(), "polygonPointArray")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          polygonPointArray().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 @IsobusVTMessageTypes.DrawPolygon: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.DrawPolygon");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void DrawPolygon_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_numberOfPolygonPointsToFollow.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DrawPolygon");
+single_value->field_polygonPointArray.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DrawPolygon");
+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 : "@IsobusVTMessageTypes.DrawPolygon");
+}
+
+boolean DrawPolygon_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean DrawPolygon_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+e__Tranparency::e__Tranparency()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+e__Tranparency::e__Tranparency(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @IsobusVTMessageTypes.e_Tranparency with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+e__Tranparency::e__Tranparency(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+e__Tranparency::e__Tranparency(const e__Tranparency& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @IsobusVTMessageTypes.e_Tranparency.");
+enum_value = other_value.enum_value;
+}
+
+e__Tranparency& e__Tranparency::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @IsobusVTMessageTypes.e_Tranparency.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+e__Tranparency& e__Tranparency::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+e__Tranparency& e__Tranparency::operator=(const e__Tranparency& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusVTMessageTypes.e_Tranparency.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean e__Tranparency::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_Tranparency.");
+return enum_value == other_value;
+}
+
+boolean e__Tranparency::operator==(const e__Tranparency& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_Tranparency.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_Tranparency.");
+return enum_value == other_value.enum_value;
+}
+
+boolean e__Tranparency::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_Tranparency.");
+return enum_value < other_value;
+}
+
+boolean e__Tranparency::operator<(const e__Tranparency& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_Tranparency.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_Tranparency.");
+return enum_value < other_value.enum_value;
+}
+
+boolean e__Tranparency::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_Tranparency.");
+return enum_value > other_value;
+}
+
+boolean e__Tranparency::operator>(const e__Tranparency& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_Tranparency.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_Tranparency.");
+return enum_value > other_value.enum_value;
+}
+
+const char *e__Tranparency::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case opaque: return "opaque";
+case transparent: return "transparent";
+default: return "<unknown>";
+}
+}
+
+e__Tranparency::enum_type e__Tranparency::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "opaque")) return opaque;
+else if (!strcmp(str_par, "transparent")) return transparent;
+else return UNKNOWN_VALUE;
+}
+
+boolean e__Tranparency::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 0:
+case 1:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int e__Tranparency::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusVTMessageTypes.e_Tranparency.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int e__Tranparency::enum2int(const e__Tranparency& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusVTMessageTypes.e_Tranparency.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void e__Tranparency::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @IsobusVTMessageTypes.e_Tranparency.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+e__Tranparency::operator e__Tranparency::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @IsobusVTMessageTypes.e_Tranparency.");
+return enum_value;
+}
+
+void e__Tranparency::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void e__Tranparency::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@IsobusVTMessageTypes.e_Tranparency");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @IsobusVTMessageTypes.e_Tranparency.");
+  }
+}
+
+void e__Tranparency::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @IsobusVTMessageTypes.e_Tranparency.");
+text_buf.push_int(enum_value);
+}
+
+void e__Tranparency::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @IsobusVTMessageTypes.e_Tranparency.", enum_value);
+}
+
+void e__Tranparency::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void e__Tranparency::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int e__Tranparency::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*)
+{
+  int decoded_value = 0;
+  int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 2, no_err);
+  if (decoded_length < 0) return decoded_length;
+  if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value;
+  else {
+    if(no_err){
+     return -1;
+    } else {
+    TTCN_EncDec_ErrorContext::error
+      (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name);
+    enum_value = UNKNOWN_VALUE;
+    }
+  }
+  return decoded_length;
+}
+
+int e__Tranparency::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const
+{
+  return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 2);
+}
+
+void e__Tranparency_template::copy_template(const e__Tranparency_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new e__Tranparency_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_Tranparency.");
+}
+}
+
+e__Tranparency_template::e__Tranparency_template()
+{
+}
+
+e__Tranparency_template::e__Tranparency_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+e__Tranparency_template::e__Tranparency_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!e__Tranparency::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @IsobusVTMessageTypes.e_Tranparency with unknown numeric value %d.", other_value);
+single_value = (e__Tranparency::enum_type)other_value;
+}
+
+e__Tranparency_template::e__Tranparency_template(e__Tranparency::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+e__Tranparency_template::e__Tranparency_template(const e__Tranparency& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == e__Tranparency::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @IsobusVTMessageTypes.e_Tranparency.");
+single_value = other_value.enum_value;
+}
+
+e__Tranparency_template::e__Tranparency_template(const OPTIONAL<e__Tranparency>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__Tranparency::enum_type)(const e__Tranparency&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @IsobusVTMessageTypes.e_Tranparency from an unbound optional field.");
+}
+}
+
+e__Tranparency_template::e__Tranparency_template(const e__Tranparency_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+e__Tranparency_template::~e__Tranparency_template()
+{
+clean_up();
+}
+
+boolean e__Tranparency_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean e__Tranparency_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != e__Tranparency::UNBOUND_VALUE;
+}
+
+void e__Tranparency_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+e__Tranparency_template& e__Tranparency_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+e__Tranparency_template& e__Tranparency_template::operator=(int other_value)
+{
+if (!e__Tranparency::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @IsobusVTMessageTypes.e_Tranparency.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (e__Tranparency::enum_type)other_value;
+return *this;
+}
+
+e__Tranparency_template& e__Tranparency_template::operator=(e__Tranparency::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+e__Tranparency_template& e__Tranparency_template::operator=(const e__Tranparency& other_value)
+{
+if (other_value.enum_value == e__Tranparency::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusVTMessageTypes.e_Tranparency to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+e__Tranparency_template& e__Tranparency_template::operator=(const OPTIONAL<e__Tranparency>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__Tranparency::enum_type)(const e__Tranparency&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @IsobusVTMessageTypes.e_Tranparency.");
+}
+return *this;
+}
+
+e__Tranparency_template& e__Tranparency_template::operator=(const e__Tranparency_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean e__Tranparency_template::match(e__Tranparency::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_Tranparency.");
+}
+return FALSE;
+}
+
+boolean e__Tranparency_template::match(const e__Tranparency& other_value, boolean) const
+{
+if (other_value.enum_value == e__Tranparency::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @IsobusVTMessageTypes.e_Tranparency with an unbound value.");
+return match(other_value.enum_value);
+}
+
+e__Tranparency::enum_type e__Tranparency_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @IsobusVTMessageTypes.e_Tranparency.");
+return single_value;
+}
+
+void e__Tranparency_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @IsobusVTMessageTypes.e_Tranparency.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new e__Tranparency_template[list_length];
+}
+
+e__Tranparency_template& e__Tranparency_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @IsobusVTMessageTypes.e_Tranparency.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @IsobusVTMessageTypes.e_Tranparency.");
+return value_list.list_value[list_index];
+}
+
+void e__Tranparency_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(e__Tranparency::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void e__Tranparency_template::log_match(const e__Tranparency& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void e__Tranparency_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_Tranparency.");
+}
+}
+
+void e__Tranparency_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (e__Tranparency::enum_type)text_buf.pull_int().get_val();
+if (!e__Tranparency::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @IsobusVTMessageTypes.e_Tranparency.", single_value);
+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 e__Tranparency_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @IsobusVTMessageTypes.e_Tranparency.");
+}
+}
+
+boolean e__Tranparency_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean e__Tranparency_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 e__Tranparency_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    e__Tranparency_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    e__Tranparency::enum_type enum_val = e__Tranparency::str_to_enum(m_p->get_enumerated());
+    if (!e__Tranparency::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @IsobusVTMessageTypes.e_Tranparency.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@IsobusVTMessageTypes.e_Tranparency");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void e__Tranparency_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@IsobusVTMessageTypes.e_Tranparency");
+}
+
+DrawText::DrawText()
+{
+}
+
+DrawText::DrawText(const e__Tranparency& par_transparency,
+    const INTEGER& par_numberOfBytesToFollow,
+    const OCTETSTRING& par_textStringValue,
+    const OPTIONAL<OCTETSTRING>& par_padding1,
+    const OPTIONAL<OCTETSTRING>& par_padding2)
+  :   field_transparency(par_transparency),
+  field_numberOfBytesToFollow(par_numberOfBytesToFollow),
+  field_textStringValue(par_textStringValue),
+  field_padding1(par_padding1),
+  field_padding2(par_padding2)
+{
+}
+
+DrawText::DrawText(const DrawText& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.DrawText.");
+if (other_value.transparency().is_bound()) field_transparency = other_value.transparency();
+else field_transparency.clean_up();
+if (other_value.numberOfBytesToFollow().is_bound()) field_numberOfBytesToFollow = other_value.numberOfBytesToFollow();
+else field_numberOfBytesToFollow.clean_up();
+if (other_value.textStringValue().is_bound()) field_textStringValue = other_value.textStringValue();
+else field_textStringValue.clean_up();
+if (other_value.padding1().is_bound()) field_padding1 = other_value.padding1();
+else field_padding1.clean_up();
+if (other_value.padding2().is_bound()) field_padding2 = other_value.padding2();
+else field_padding2.clean_up();
+}
+
+void DrawText::clean_up()
+{
+field_transparency.clean_up();
+field_numberOfBytesToFollow.clean_up();
+field_textStringValue.clean_up();
+field_padding1.clean_up();
+field_padding2.clean_up();
+}
+
+const TTCN_Typedescriptor_t* DrawText::get_descriptor() const { return &DrawText_descr_; }
+DrawText& DrawText::operator=(const DrawText& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.DrawText.");
+  if (other_value.transparency().is_bound()) field_transparency = other_value.transparency();
+  else field_transparency.clean_up();
+  if (other_value.numberOfBytesToFollow().is_bound()) field_numberOfBytesToFollow = other_value.numberOfBytesToFollow();
+  else field_numberOfBytesToFollow.clean_up();
+  if (other_value.textStringValue().is_bound()) field_textStringValue = other_value.textStringValue();
+  else field_textStringValue.clean_up();
+  if (other_value.padding1().is_bound()) field_padding1 = other_value.padding1();
+  else field_padding1.clean_up();
+  if (other_value.padding2().is_bound()) field_padding2 = other_value.padding2();
+  else field_padding2.clean_up();
+}
+return *this;
+}
+
+boolean DrawText::operator==(const DrawText& other_value) const
+{
+return field_transparency==other_value.field_transparency
+  && field_numberOfBytesToFollow==other_value.field_numberOfBytesToFollow
+  && field_textStringValue==other_value.field_textStringValue
+  && field_padding1==other_value.field_padding1
+  && field_padding2==other_value.field_padding2;
+}
+
+boolean DrawText::is_bound() const
+{
+return (field_transparency.is_bound())
+  || (field_numberOfBytesToFollow.is_bound())
+  || (field_textStringValue.is_bound())
+  || (OPTIONAL_OMIT == field_padding1.get_selection() || field_padding1.is_bound())
+  || (OPTIONAL_OMIT == field_padding2.get_selection() || field_padding2.is_bound());
+}
+boolean DrawText::is_value() const
+{
+return field_transparency.is_value()
+  && field_numberOfBytesToFollow.is_value()
+  && field_textStringValue.is_value()
+  && (OPTIONAL_OMIT == field_padding1.get_selection() || field_padding1.is_value())
+  && (OPTIONAL_OMIT == field_padding2.get_selection() || field_padding2.is_value());
+}
+int DrawText::size_of() const
+{
+  int ret_val = 3;
+  if (field_padding1.ispresent()) ret_val++;
+  if (field_padding2.ispresent()) ret_val++;
+  return ret_val;
+}
+
+void DrawText::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ transparency := ");
+field_transparency.log();
+TTCN_Logger::log_event_str(", numberOfBytesToFollow := ");
+field_numberOfBytesToFollow.log();
+TTCN_Logger::log_event_str(", textStringValue := ");
+field_textStringValue.log();
+TTCN_Logger::log_event_str(", padding1 := ");
+field_padding1.log();
+TTCN_Logger::log_event_str(", padding2 := ");
+field_padding2.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void DrawText::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 @IsobusVTMessageTypes.DrawText 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) transparency().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) numberOfBytesToFollow().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) textStringValue().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) padding1().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) padding2().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(), "transparency")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          transparency().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(), "numberOfBytesToFollow")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          numberOfBytesToFollow().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(), "textStringValue")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          textStringValue().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(), "padding1")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          padding1().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(), "padding2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          padding2().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 @IsobusVTMessageTypes.DrawText: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.DrawText");
+  }
+}
+
+void DrawText::set_implicit_omit()
+{
+if (transparency().is_bound()) transparency().set_implicit_omit();
+if (numberOfBytesToFollow().is_bound()) numberOfBytesToFollow().set_implicit_omit();
+if (textStringValue().is_bound()) textStringValue().set_implicit_omit();
+if (!padding1().is_bound()) padding1() = OMIT_VALUE;
+else padding1().set_implicit_omit();
+if (!padding2().is_bound()) padding2() = OMIT_VALUE;
+else padding2().set_implicit_omit();
+}
+
+void DrawText::encode_text(Text_Buf& text_buf) const
+{
+field_transparency.encode_text(text_buf);
+field_numberOfBytesToFollow.encode_text(text_buf);
+field_textStringValue.encode_text(text_buf);
+field_padding1.encode_text(text_buf);
+field_padding2.encode_text(text_buf);
+}
+
+void DrawText::decode_text(Text_Buf& text_buf)
+{
+field_transparency.decode_text(text_buf);
+field_numberOfBytesToFollow.decode_text(text_buf);
+field_textStringValue.decode_text(text_buf);
+field_padding1.decode_text(text_buf);
+field_padding2.decode_text(text_buf);
+}
+
+void DrawText::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void DrawText::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int DrawText::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;
+  int value_of_length_field1 = 0;
+  RAW_Force_Omit field_0_force_omit(0, force_omit, e__Tranparency_descr_.raw->forceomit);
+  decoded_field_length = field_transparency.RAW_decode(e__Tranparency_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, DrawText_numberOfBytesToFollow_descr_.raw->forceomit);
+  decoded_field_length = field_numberOfBytesToFollow.RAW_decode(DrawText_numberOfBytesToFollow_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());
+  value_of_length_field1+=field_numberOfBytesToFollow.get_long_long_val()*8;
+  RAW_Force_Omit field_2_force_omit(2, force_omit, OCTETSTRING_descr_.raw->forceomit);
+  decoded_field_length = field_textStringValue.RAW_decode(OCTETSTRING_descr_, p_buf, min_of_ints(2, limit, value_of_length_field1), 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());
+  value_of_length_field1 -= decoded_field_length;
+  if (limit > 0){
+  if (force_omit != NULL && (*force_omit)(3)) {
+    field_padding1 = OMIT_VALUE;
+  }
+  else {
+  size_t fl_start_pos = p_buf.get_pos_bit();
+  RAW_Force_Omit field_3_force_omit(3, force_omit, General__Types::OCT1_descr_.raw->forceomit);
+  decoded_field_length = field_padding1().RAW_decode(General__Types::OCT1_descr_, p_buf, limit, local_top_order, TRUE, -1, TRUE, &field_3_force_omit);
+  if (decoded_field_length < 1) {
+  field_padding1 = 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_padding1=OMIT_VALUE;
+  if (limit > 0){
+  if (force_omit != NULL && (*force_omit)(4)) {
+    field_padding2 = OMIT_VALUE;
+  }
+  else {
+  size_t fl_start_pos = p_buf.get_pos_bit();
+  RAW_Force_Omit field_4_force_omit(4, force_omit, General__Types::OCT1_descr_.raw->forceomit);
+  decoded_field_length = field_padding2().RAW_decode(General__Types::OCT1_descr_, p_buf, limit, local_top_order, TRUE, -1, TRUE, &field_4_force_omit);
+  if (decoded_field_length < 1) {
+  field_padding2 = 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_padding2=OMIT_VALUE;
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int DrawText::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, e__Tranparency_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, DrawText_numberOfBytesToFollow_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, OCTETSTRING_descr_.raw);
+  if (field_padding1.ispresent()) {
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, General__Types::OCT1_descr_.raw);
+  }
+  else myleaf.body.node.nodes[3] = NULL;
+  if (field_padding2.ispresent()) {
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, General__Types::OCT1_descr_.raw);
+  }
+  else myleaf.body.node.nodes[4] = NULL;
+  encoded_length += field_transparency.RAW_encode(e__Tranparency_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += 8;
+  myleaf.body.node.nodes[1]->calc = CALC_LENGTH;
+  myleaf.body.node.nodes[1]->coding_descr = &DrawText_numberOfBytesToFollow_descr_;
+  myleaf.body.node.nodes[1]->calcof.lengthto.num_of_fields = 1;
+  myleaf.body.node.nodes[1]->calcof.lengthto.unit = 8;
+  myleaf.body.node.nodes[1]->calcof.lengthto.offset = 0;
+  myleaf.body.node.nodes[1]->calcof.lengthto.fields = init_lengthto_fields_list(1);
+  myleaf.body.node.nodes[1]->length = 8;
+  myleaf.body.node.nodes[1]->calcof.lengthto.fields[0].level = myleaf.body.node.nodes[2]->curr_pos.level;
+  myleaf.body.node.nodes[1]->calcof.lengthto.fields[0].pos = myleaf.body.node.nodes[2]->curr_pos.pos;
+  encoded_length += field_textStringValue.RAW_encode(OCTETSTRING_descr_, *myleaf.body.node.nodes[2]);
+  if (field_padding1.ispresent()) {
+  encoded_length += field_padding1().RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[3]);
+  }
+  if (field_padding2.ispresent()) {
+  encoded_length += field_padding2().RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[4]);
+  }
+  return myleaf.length = encoded_length;
+}
+
+struct DrawText_template::single_value_struct {
+e__Tranparency_template field_transparency;
+INTEGER_template field_numberOfBytesToFollow;
+OCTETSTRING_template field_textStringValue;
+OCTETSTRING_template field_padding1;
+OCTETSTRING_template field_padding2;
+};
+
+void DrawText_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_transparency = ANY_VALUE;
+single_value->field_numberOfBytesToFollow = ANY_VALUE;
+single_value->field_textStringValue = ANY_VALUE;
+single_value->field_padding1 = ANY_OR_OMIT;
+single_value->field_padding2 = ANY_OR_OMIT;
+}
+}
+}
+
+void DrawText_template::copy_value(const DrawText& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.transparency().is_bound()) {
+  single_value->field_transparency = other_value.transparency();
+} else {
+  single_value->field_transparency.clean_up();
+}
+if (other_value.numberOfBytesToFollow().is_bound()) {
+  single_value->field_numberOfBytesToFollow = other_value.numberOfBytesToFollow();
+} else {
+  single_value->field_numberOfBytesToFollow.clean_up();
+}
+if (other_value.textStringValue().is_bound()) {
+  single_value->field_textStringValue = other_value.textStringValue();
+} else {
+  single_value->field_textStringValue.clean_up();
+}
+if (other_value.padding1().is_bound()) {
+  if (other_value.padding1().ispresent()) single_value->field_padding1 = other_value.padding1()();
+  else single_value->field_padding1 = OMIT_VALUE;
+} else {
+  single_value->field_padding1.clean_up();
+}
+if (other_value.padding2().is_bound()) {
+  if (other_value.padding2().ispresent()) single_value->field_padding2 = other_value.padding2()();
+  else single_value->field_padding2 = OMIT_VALUE;
+} else {
+  single_value->field_padding2.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void DrawText_template::copy_template(const DrawText_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.transparency().get_selection()) {
+single_value->field_transparency = other_value.transparency();
+} else {
+single_value->field_transparency.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.numberOfBytesToFollow().get_selection()) {
+single_value->field_numberOfBytesToFollow = other_value.numberOfBytesToFollow();
+} else {
+single_value->field_numberOfBytesToFollow.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.textStringValue().get_selection()) {
+single_value->field_textStringValue = other_value.textStringValue();
+} else {
+single_value->field_textStringValue.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.padding1().get_selection()) {
+single_value->field_padding1 = other_value.padding1();
+} else {
+single_value->field_padding1.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.padding2().get_selection()) {
+single_value->field_padding2 = other_value.padding2();
+} else {
+single_value->field_padding2.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new DrawText_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.DrawText.");
+break;
+}
+set_selection(other_value);
+}
+
+DrawText_template::DrawText_template()
+{
+}
+
+DrawText_template::DrawText_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+DrawText_template::DrawText_template(const DrawText& other_value)
+{
+copy_value(other_value);
+}
+
+DrawText_template::DrawText_template(const OPTIONAL<DrawText>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const DrawText&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.DrawText from an unbound optional field.");
+}
+}
+
+DrawText_template::DrawText_template(const DrawText_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+DrawText_template::~DrawText_template()
+{
+clean_up();
+}
+
+DrawText_template& DrawText_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+DrawText_template& DrawText_template::operator=(const DrawText& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+DrawText_template& DrawText_template::operator=(const OPTIONAL<DrawText>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const DrawText&)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 @IsobusVTMessageTypes.DrawText.");
+}
+return *this;
+}
+
+DrawText_template& DrawText_template::operator=(const DrawText_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean DrawText_template::match(const DrawText& 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.transparency().is_bound()) return FALSE;
+if(!single_value->field_transparency.match(other_value.transparency(), legacy))return FALSE;
+if(!other_value.numberOfBytesToFollow().is_bound()) return FALSE;
+if(!single_value->field_numberOfBytesToFollow.match(other_value.numberOfBytesToFollow(), legacy))return FALSE;
+if(!other_value.textStringValue().is_bound()) return FALSE;
+if(!single_value->field_textStringValue.match(other_value.textStringValue(), legacy))return FALSE;
+if(!other_value.padding1().is_bound()) return FALSE;
+if((other_value.padding1().ispresent() ? !single_value->field_padding1.match((const OCTETSTRING&)other_value.padding1(), legacy) : !single_value->field_padding1.match_omit(legacy)))return FALSE;
+if(!other_value.padding2().is_bound()) return FALSE;
+if((other_value.padding2().ispresent() ? !single_value->field_padding2.match((const OCTETSTRING&)other_value.padding2(), legacy) : !single_value->field_padding2.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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.DrawText.");
+}
+return FALSE;
+}
+
+boolean DrawText_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_transparency.is_bound()
+
+ ||single_value->field_numberOfBytesToFollow.is_bound()
+
+ ||single_value->field_textStringValue.is_bound()
+
+ ||(single_value->field_padding1.is_omit() || single_value->field_padding1.is_bound())
+
+ ||(single_value->field_padding2.is_omit() || single_value->field_padding2.is_bound())
+;
+}
+
+boolean DrawText_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_transparency.is_value()
+ &&single_value->field_numberOfBytesToFollow.is_value()
+ &&single_value->field_textStringValue.is_value()
+ &&(single_value->field_padding1.is_omit() || single_value->field_padding1.is_value())
+ &&(single_value->field_padding2.is_omit() || single_value->field_padding2.is_value());
+}
+
+void DrawText_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+DrawText DrawText_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 @IsobusVTMessageTypes.DrawText.");
+DrawText ret_val;
+if (single_value->field_transparency.is_bound()) {
+ret_val.transparency() = single_value->field_transparency.valueof();
+}
+if (single_value->field_numberOfBytesToFollow.is_bound()) {
+ret_val.numberOfBytesToFollow() = single_value->field_numberOfBytesToFollow.valueof();
+}
+if (single_value->field_textStringValue.is_bound()) {
+ret_val.textStringValue() = single_value->field_textStringValue.valueof();
+}
+if (single_value->field_padding1.is_omit()) ret_val.padding1() = OMIT_VALUE;
+else if (single_value->field_padding1.is_bound()) {
+ret_val.padding1() = single_value->field_padding1.valueof();
+}
+if (single_value->field_padding2.is_omit()) ret_val.padding2() = OMIT_VALUE;
+else if (single_value->field_padding2.is_bound()) {
+ret_val.padding2() = single_value->field_padding2.valueof();
+}
+return ret_val;
+}
+
+void DrawText_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.DrawText.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new DrawText_template[list_length];
+}
+
+DrawText_template& DrawText_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.DrawText.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.DrawText.");
+return value_list.list_value[list_index];
+}
+
+e__Tranparency_template& DrawText_template::transparency()
+{
+set_specific();
+return single_value->field_transparency;
+}
+
+const e__Tranparency_template& DrawText_template::transparency() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field transparency of a non-specific template of type @IsobusVTMessageTypes.DrawText.");
+return single_value->field_transparency;
+}
+
+INTEGER_template& DrawText_template::numberOfBytesToFollow()
+{
+set_specific();
+return single_value->field_numberOfBytesToFollow;
+}
+
+const INTEGER_template& DrawText_template::numberOfBytesToFollow() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field numberOfBytesToFollow of a non-specific template of type @IsobusVTMessageTypes.DrawText.");
+return single_value->field_numberOfBytesToFollow;
+}
+
+OCTETSTRING_template& DrawText_template::textStringValue()
+{
+set_specific();
+return single_value->field_textStringValue;
+}
+
+const OCTETSTRING_template& DrawText_template::textStringValue() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field textStringValue of a non-specific template of type @IsobusVTMessageTypes.DrawText.");
+return single_value->field_textStringValue;
+}
+
+OCTETSTRING_template& DrawText_template::padding1()
+{
+set_specific();
+return single_value->field_padding1;
+}
+
+const OCTETSTRING_template& DrawText_template::padding1() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field padding1 of a non-specific template of type @IsobusVTMessageTypes.DrawText.");
+return single_value->field_padding1;
+}
+
+OCTETSTRING_template& DrawText_template::padding2()
+{
+set_specific();
+return single_value->field_padding2;
+}
+
+const OCTETSTRING_template& DrawText_template::padding2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field padding2 of a non-specific template of type @IsobusVTMessageTypes.DrawText.");
+return single_value->field_padding2;
+}
+
+int DrawText_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DrawText which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+  {    int ret_val = 3;
+      if (single_value->field_padding1.is_present()) ret_val++;
+      if (single_value->field_padding2.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 @IsobusVTMessageTypes.DrawText 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 @IsobusVTMessageTypes.DrawText containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DrawText containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DrawText containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DrawText containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.DrawText.");
+  }
+  return 0;
+}
+
+void DrawText_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ transparency := ");
+single_value->field_transparency.log();
+TTCN_Logger::log_event_str(", numberOfBytesToFollow := ");
+single_value->field_numberOfBytesToFollow.log();
+TTCN_Logger::log_event_str(", textStringValue := ");
+single_value->field_textStringValue.log();
+TTCN_Logger::log_event_str(", padding1 := ");
+single_value->field_padding1.log();
+TTCN_Logger::log_event_str(", padding2 := ");
+single_value->field_padding2.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void DrawText_template::log_match(const DrawText& 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_transparency.match(match_value.transparency(), legacy)){
+TTCN_Logger::log_logmatch_info(".transparency");
+single_value->field_transparency.log_match(match_value.transparency(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_numberOfBytesToFollow.match(match_value.numberOfBytesToFollow(), legacy)){
+TTCN_Logger::log_logmatch_info(".numberOfBytesToFollow");
+single_value->field_numberOfBytesToFollow.log_match(match_value.numberOfBytesToFollow(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_textStringValue.match(match_value.textStringValue(), legacy)){
+TTCN_Logger::log_logmatch_info(".textStringValue");
+single_value->field_textStringValue.log_match(match_value.textStringValue(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if (match_value.padding1().ispresent()){
+if(!single_value->field_padding1.match(match_value.padding1(), legacy)){
+TTCN_Logger::log_logmatch_info(".padding1");
+single_value->field_padding1.log_match(match_value.padding1(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+} else {
+if (!single_value->field_padding1.match_omit(legacy)){
+ TTCN_Logger::log_logmatch_info(".padding1 := omit with ");
+TTCN_Logger::print_logmatch_buffer();
+single_value->field_padding1.log();
+TTCN_Logger::log_event_str(" unmatched");
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+}
+if (match_value.padding2().ispresent()){
+if(!single_value->field_padding2.match(match_value.padding2(), legacy)){
+TTCN_Logger::log_logmatch_info(".padding2");
+single_value->field_padding2.log_match(match_value.padding2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+} else {
+if (!single_value->field_padding2.match_omit(legacy)){
+ TTCN_Logger::log_logmatch_info(".padding2 := omit with ");
+TTCN_Logger::print_logmatch_buffer();
+single_value->field_padding2.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("{ transparency := ");
+single_value->field_transparency.log_match(match_value.transparency(), legacy);
+TTCN_Logger::log_event_str(", numberOfBytesToFollow := ");
+single_value->field_numberOfBytesToFollow.log_match(match_value.numberOfBytesToFollow(), legacy);
+TTCN_Logger::log_event_str(", textStringValue := ");
+single_value->field_textStringValue.log_match(match_value.textStringValue(), legacy);
+TTCN_Logger::log_event_str(", padding1 := ");
+if (match_value.padding1().ispresent()) single_value->field_padding1.log_match(match_value.padding1(), legacy);
+else {
+TTCN_Logger::log_event_str("omit with ");
+single_value->field_padding1.log();
+if (single_value->field_padding1.match_omit(legacy)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+TTCN_Logger::log_event_str(", padding2 := ");
+if (match_value.padding2().ispresent()) single_value->field_padding2.log_match(match_value.padding2(), legacy);
+else {
+TTCN_Logger::log_event_str("omit with ");
+single_value->field_padding2.log();
+if (single_value->field_padding2.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 DrawText_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_transparency.encode_text(text_buf);
+single_value->field_numberOfBytesToFollow.encode_text(text_buf);
+single_value->field_textStringValue.encode_text(text_buf);
+single_value->field_padding1.encode_text(text_buf);
+single_value->field_padding2.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 @IsobusVTMessageTypes.DrawText.");
+}
+}
+
+void DrawText_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_transparency.decode_text(text_buf);
+single_value->field_numberOfBytesToFollow.decode_text(text_buf);
+single_value->field_textStringValue.decode_text(text_buf);
+single_value->field_padding1.decode_text(text_buf);
+single_value->field_padding2.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 DrawText_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 @IsobusVTMessageTypes.DrawText.");
+}
+}
+
+void DrawText_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: {
+    DrawText_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.DrawText 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) transparency().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) numberOfBytesToFollow().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) textStringValue().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) padding1().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) padding2().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(), "transparency")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          transparency().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(), "numberOfBytesToFollow")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          numberOfBytesToFollow().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(), "textStringValue")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          textStringValue().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(), "padding1")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          padding1().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(), "padding2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          padding2().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 @IsobusVTMessageTypes.DrawText: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.DrawText");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void DrawText_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_transparency.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DrawText");
+single_value->field_numberOfBytesToFollow.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DrawText");
+single_value->field_textStringValue.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DrawText");
+single_value->field_padding1.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DrawText");
+single_value->field_padding2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DrawText");
+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 : "@IsobusVTMessageTypes.DrawText");
+}
+
+boolean DrawText_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean DrawText_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+PanViewport::PanViewport()
+{
+}
+
+PanViewport::PanViewport(const INTEGER& par_viewportXattribute,
+    const INTEGER& par_viewportYattribute)
+  :   field_viewportXattribute(par_viewportXattribute),
+  field_viewportYattribute(par_viewportYattribute)
+{
+}
+
+PanViewport::PanViewport(const PanViewport& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.PanViewport.");
+if (other_value.viewportXattribute().is_bound()) field_viewportXattribute = other_value.viewportXattribute();
+else field_viewportXattribute.clean_up();
+if (other_value.viewportYattribute().is_bound()) field_viewportYattribute = other_value.viewportYattribute();
+else field_viewportYattribute.clean_up();
+}
+
+void PanViewport::clean_up()
+{
+field_viewportXattribute.clean_up();
+field_viewportYattribute.clean_up();
+}
+
+const TTCN_Typedescriptor_t* PanViewport::get_descriptor() const { return &PanViewport_descr_; }
+PanViewport& PanViewport::operator=(const PanViewport& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.PanViewport.");
+  if (other_value.viewportXattribute().is_bound()) field_viewportXattribute = other_value.viewportXattribute();
+  else field_viewportXattribute.clean_up();
+  if (other_value.viewportYattribute().is_bound()) field_viewportYattribute = other_value.viewportYattribute();
+  else field_viewportYattribute.clean_up();
+}
+return *this;
+}
+
+boolean PanViewport::operator==(const PanViewport& other_value) const
+{
+return field_viewportXattribute==other_value.field_viewportXattribute
+  && field_viewportYattribute==other_value.field_viewportYattribute;
+}
+
+boolean PanViewport::is_bound() const
+{
+return (field_viewportXattribute.is_bound())
+  || (field_viewportYattribute.is_bound());
+}
+boolean PanViewport::is_value() const
+{
+return field_viewportXattribute.is_value()
+  && field_viewportYattribute.is_value();
+}
+void PanViewport::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ viewportXattribute := ");
+field_viewportXattribute.log();
+TTCN_Logger::log_event_str(", viewportYattribute := ");
+field_viewportYattribute.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void PanViewport::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 @IsobusVTMessageTypes.PanViewport 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) viewportXattribute().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) viewportYattribute().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(), "viewportXattribute")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          viewportXattribute().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(), "viewportYattribute")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          viewportYattribute().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 @IsobusVTMessageTypes.PanViewport: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.PanViewport");
+  }
+}
+
+void PanViewport::set_implicit_omit()
+{
+if (viewportXattribute().is_bound()) viewportXattribute().set_implicit_omit();
+if (viewportYattribute().is_bound()) viewportYattribute().set_implicit_omit();
+}
+
+void PanViewport::encode_text(Text_Buf& text_buf) const
+{
+field_viewportXattribute.encode_text(text_buf);
+field_viewportYattribute.encode_text(text_buf);
+}
+
+void PanViewport::decode_text(Text_Buf& text_buf)
+{
+field_viewportXattribute.decode_text(text_buf);
+field_viewportYattribute.decode_text(text_buf);
+}
+
+void PanViewport::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void PanViewport::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int PanViewport::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, ViewportXAttribute_descr_.raw->forceomit);
+  decoded_field_length = field_viewportXattribute.RAW_decode(ViewportXAttribute_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, ViewportXAttribute_descr_.raw->forceomit);
+  decoded_field_length = field_viewportYattribute.RAW_decode(ViewportXAttribute_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 PanViewport::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, ViewportXAttribute_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ViewportXAttribute_descr_.raw);
+  encoded_length += field_viewportXattribute.RAW_encode(ViewportXAttribute_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_viewportYattribute.RAW_encode(ViewportXAttribute_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct PanViewport_template::single_value_struct {
+INTEGER_template field_viewportXattribute;
+INTEGER_template field_viewportYattribute;
+};
+
+void PanViewport_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_viewportXattribute = ANY_VALUE;
+single_value->field_viewportYattribute = ANY_VALUE;
+}
+}
+}
+
+void PanViewport_template::copy_value(const PanViewport& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.viewportXattribute().is_bound()) {
+  single_value->field_viewportXattribute = other_value.viewportXattribute();
+} else {
+  single_value->field_viewportXattribute.clean_up();
+}
+if (other_value.viewportYattribute().is_bound()) {
+  single_value->field_viewportYattribute = other_value.viewportYattribute();
+} else {
+  single_value->field_viewportYattribute.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void PanViewport_template::copy_template(const PanViewport_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.viewportXattribute().get_selection()) {
+single_value->field_viewportXattribute = other_value.viewportXattribute();
+} else {
+single_value->field_viewportXattribute.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.viewportYattribute().get_selection()) {
+single_value->field_viewportYattribute = other_value.viewportYattribute();
+} else {
+single_value->field_viewportYattribute.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new PanViewport_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.PanViewport.");
+break;
+}
+set_selection(other_value);
+}
+
+PanViewport_template::PanViewport_template()
+{
+}
+
+PanViewport_template::PanViewport_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+PanViewport_template::PanViewport_template(const PanViewport& other_value)
+{
+copy_value(other_value);
+}
+
+PanViewport_template::PanViewport_template(const OPTIONAL<PanViewport>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const PanViewport&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.PanViewport from an unbound optional field.");
+}
+}
+
+PanViewport_template::PanViewport_template(const PanViewport_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+PanViewport_template::~PanViewport_template()
+{
+clean_up();
+}
+
+PanViewport_template& PanViewport_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+PanViewport_template& PanViewport_template::operator=(const PanViewport& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+PanViewport_template& PanViewport_template::operator=(const OPTIONAL<PanViewport>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const PanViewport&)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 @IsobusVTMessageTypes.PanViewport.");
+}
+return *this;
+}
+
+PanViewport_template& PanViewport_template::operator=(const PanViewport_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean PanViewport_template::match(const PanViewport& 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.viewportXattribute().is_bound()) return FALSE;
+if(!single_value->field_viewportXattribute.match(other_value.viewportXattribute(), legacy))return FALSE;
+if(!other_value.viewportYattribute().is_bound()) return FALSE;
+if(!single_value->field_viewportYattribute.match(other_value.viewportYattribute(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.PanViewport.");
+}
+return FALSE;
+}
+
+boolean PanViewport_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_viewportXattribute.is_bound()
+
+ ||single_value->field_viewportYattribute.is_bound()
+;
+}
+
+boolean PanViewport_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_viewportXattribute.is_value()
+ &&single_value->field_viewportYattribute.is_value();
+}
+
+void PanViewport_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+PanViewport PanViewport_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 @IsobusVTMessageTypes.PanViewport.");
+PanViewport ret_val;
+if (single_value->field_viewportXattribute.is_bound()) {
+ret_val.viewportXattribute() = single_value->field_viewportXattribute.valueof();
+}
+if (single_value->field_viewportYattribute.is_bound()) {
+ret_val.viewportYattribute() = single_value->field_viewportYattribute.valueof();
+}
+return ret_val;
+}
+
+void PanViewport_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.PanViewport.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new PanViewport_template[list_length];
+}
+
+PanViewport_template& PanViewport_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.PanViewport.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.PanViewport.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& PanViewport_template::viewportXattribute()
+{
+set_specific();
+return single_value->field_viewportXattribute;
+}
+
+const INTEGER_template& PanViewport_template::viewportXattribute() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field viewportXattribute of a non-specific template of type @IsobusVTMessageTypes.PanViewport.");
+return single_value->field_viewportXattribute;
+}
+
+INTEGER_template& PanViewport_template::viewportYattribute()
+{
+set_specific();
+return single_value->field_viewportYattribute;
+}
+
+const INTEGER_template& PanViewport_template::viewportYattribute() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field viewportYattribute of a non-specific template of type @IsobusVTMessageTypes.PanViewport.");
+return single_value->field_viewportYattribute;
+}
+
+int PanViewport_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.PanViewport 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 @IsobusVTMessageTypes.PanViewport 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 @IsobusVTMessageTypes.PanViewport containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.PanViewport containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.PanViewport containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.PanViewport containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.PanViewport.");
+  }
+  return 0;
+}
+
+void PanViewport_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ viewportXattribute := ");
+single_value->field_viewportXattribute.log();
+TTCN_Logger::log_event_str(", viewportYattribute := ");
+single_value->field_viewportYattribute.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void PanViewport_template::log_match(const PanViewport& 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_viewportXattribute.match(match_value.viewportXattribute(), legacy)){
+TTCN_Logger::log_logmatch_info(".viewportXattribute");
+single_value->field_viewportXattribute.log_match(match_value.viewportXattribute(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_viewportYattribute.match(match_value.viewportYattribute(), legacy)){
+TTCN_Logger::log_logmatch_info(".viewportYattribute");
+single_value->field_viewportYattribute.log_match(match_value.viewportYattribute(), 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("{ viewportXattribute := ");
+single_value->field_viewportXattribute.log_match(match_value.viewportXattribute(), legacy);
+TTCN_Logger::log_event_str(", viewportYattribute := ");
+single_value->field_viewportYattribute.log_match(match_value.viewportYattribute(), 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 PanViewport_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_viewportXattribute.encode_text(text_buf);
+single_value->field_viewportYattribute.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 @IsobusVTMessageTypes.PanViewport.");
+}
+}
+
+void PanViewport_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_viewportXattribute.decode_text(text_buf);
+single_value->field_viewportYattribute.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 PanViewport_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 @IsobusVTMessageTypes.PanViewport.");
+}
+}
+
+void PanViewport_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: {
+    PanViewport_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.PanViewport 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) viewportXattribute().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) viewportYattribute().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(), "viewportXattribute")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          viewportXattribute().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(), "viewportYattribute")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          viewportYattribute().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 @IsobusVTMessageTypes.PanViewport: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.PanViewport");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void PanViewport_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_viewportXattribute.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.PanViewport");
+single_value->field_viewportYattribute.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.PanViewport");
+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 : "@IsobusVTMessageTypes.PanViewport");
+}
+
+boolean PanViewport_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean PanViewport_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ZoomViewport::ZoomViewport()
+{
+}
+
+ZoomViewport::ZoomViewport(const FLOAT& par_zoom)
+  :   field_zoom(par_zoom)
+{
+}
+
+ZoomViewport::ZoomViewport(const ZoomViewport& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ZoomViewport.");
+if (other_value.zoom().is_bound()) field_zoom = other_value.zoom();
+else field_zoom.clean_up();
+}
+
+void ZoomViewport::clean_up()
+{
+field_zoom.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ZoomViewport::get_descriptor() const { return &ZoomViewport_descr_; }
+ZoomViewport& ZoomViewport::operator=(const ZoomViewport& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ZoomViewport.");
+  if (other_value.zoom().is_bound()) field_zoom = other_value.zoom();
+  else field_zoom.clean_up();
+}
+return *this;
+}
+
+boolean ZoomViewport::operator==(const ZoomViewport& other_value) const
+{
+return field_zoom==other_value.field_zoom;
+}
+
+boolean ZoomViewport::is_bound() const
+{
+return (field_zoom.is_bound());
+}
+boolean ZoomViewport::is_value() const
+{
+return field_zoom.is_value();
+}
+void ZoomViewport::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ zoom := ");
+field_zoom.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ZoomViewport::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 (1<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.ZoomViewport has 1 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) zoom().set_param(*param.get_elem(0));
+    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(), "zoom")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          zoom().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 @IsobusVTMessageTypes.ZoomViewport: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ZoomViewport");
+  }
+}
+
+void ZoomViewport::set_implicit_omit()
+{
+if (zoom().is_bound()) zoom().set_implicit_omit();
+}
+
+void ZoomViewport::encode_text(Text_Buf& text_buf) const
+{
+field_zoom.encode_text(text_buf);
+}
+
+void ZoomViewport::decode_text(Text_Buf& text_buf)
+{
+field_zoom.decode_text(text_buf);
+}
+
+void ZoomViewport::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ZoomViewport::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ZoomViewport::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, SingleFloat_descr_.raw->forceomit);
+  decoded_field_length = field_zoom.RAW_decode(SingleFloat_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ZoomViewport::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 = 1;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(1);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, SingleFloat_descr_.raw);
+  encoded_length += field_zoom.RAW_encode(SingleFloat_descr_, *myleaf.body.node.nodes[0]);
+  return myleaf.length = encoded_length;
+}
+
+struct ZoomViewport_template::single_value_struct {
+FLOAT_template field_zoom;
+};
+
+void ZoomViewport_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_zoom = ANY_VALUE;
+}
+}
+}
+
+void ZoomViewport_template::copy_value(const ZoomViewport& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.zoom().is_bound()) {
+  single_value->field_zoom = other_value.zoom();
+} else {
+  single_value->field_zoom.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ZoomViewport_template::copy_template(const ZoomViewport_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.zoom().get_selection()) {
+single_value->field_zoom = other_value.zoom();
+} else {
+single_value->field_zoom.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ZoomViewport_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ZoomViewport.");
+break;
+}
+set_selection(other_value);
+}
+
+ZoomViewport_template::ZoomViewport_template()
+{
+}
+
+ZoomViewport_template::ZoomViewport_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ZoomViewport_template::ZoomViewport_template(const ZoomViewport& other_value)
+{
+copy_value(other_value);
+}
+
+ZoomViewport_template::ZoomViewport_template(const OPTIONAL<ZoomViewport>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ZoomViewport&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ZoomViewport from an unbound optional field.");
+}
+}
+
+ZoomViewport_template::ZoomViewport_template(const ZoomViewport_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ZoomViewport_template::~ZoomViewport_template()
+{
+clean_up();
+}
+
+ZoomViewport_template& ZoomViewport_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ZoomViewport_template& ZoomViewport_template::operator=(const ZoomViewport& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ZoomViewport_template& ZoomViewport_template::operator=(const OPTIONAL<ZoomViewport>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ZoomViewport&)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 @IsobusVTMessageTypes.ZoomViewport.");
+}
+return *this;
+}
+
+ZoomViewport_template& ZoomViewport_template::operator=(const ZoomViewport_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ZoomViewport_template::match(const ZoomViewport& 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.zoom().is_bound()) return FALSE;
+if(!single_value->field_zoom.match(other_value.zoom(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ZoomViewport.");
+}
+return FALSE;
+}
+
+boolean ZoomViewport_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_zoom.is_bound()
+;
+}
+
+boolean ZoomViewport_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_zoom.is_value();
+}
+
+void ZoomViewport_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ZoomViewport ZoomViewport_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 @IsobusVTMessageTypes.ZoomViewport.");
+ZoomViewport ret_val;
+if (single_value->field_zoom.is_bound()) {
+ret_val.zoom() = single_value->field_zoom.valueof();
+}
+return ret_val;
+}
+
+void ZoomViewport_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ZoomViewport.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ZoomViewport_template[list_length];
+}
+
+ZoomViewport_template& ZoomViewport_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ZoomViewport.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ZoomViewport.");
+return value_list.list_value[list_index];
+}
+
+FLOAT_template& ZoomViewport_template::zoom()
+{
+set_specific();
+return single_value->field_zoom;
+}
+
+const FLOAT_template& ZoomViewport_template::zoom() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field zoom of a non-specific template of type @IsobusVTMessageTypes.ZoomViewport.");
+return single_value->field_zoom;
+}
+
+int ZoomViewport_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ZoomViewport which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 1;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ZoomViewport 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 @IsobusVTMessageTypes.ZoomViewport containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ZoomViewport containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ZoomViewport containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ZoomViewport containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ZoomViewport.");
+  }
+  return 0;
+}
+
+void ZoomViewport_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ zoom := ");
+single_value->field_zoom.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ZoomViewport_template::log_match(const ZoomViewport& 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_zoom.match(match_value.zoom(), legacy)){
+TTCN_Logger::log_logmatch_info(".zoom");
+single_value->field_zoom.log_match(match_value.zoom(), 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("{ zoom := ");
+single_value->field_zoom.log_match(match_value.zoom(), 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 ZoomViewport_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_zoom.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 @IsobusVTMessageTypes.ZoomViewport.");
+}
+}
+
+void ZoomViewport_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_zoom.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 ZoomViewport_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 @IsobusVTMessageTypes.ZoomViewport.");
+}
+}
+
+void ZoomViewport_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: {
+    ZoomViewport_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (1<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.ZoomViewport has 1 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) zoom().set_param(*param.get_elem(0));
+    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(), "zoom")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          zoom().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 @IsobusVTMessageTypes.ZoomViewport: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ZoomViewport");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ZoomViewport_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_zoom.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ZoomViewport");
+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 : "@IsobusVTMessageTypes.ZoomViewport");
+}
+
+boolean ZoomViewport_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ZoomViewport_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+PanAndZoomViewport::PanAndZoomViewport()
+{
+}
+
+PanAndZoomViewport::PanAndZoomViewport(const INTEGER& par_viewportXattribute,
+    const INTEGER& par_viewportYattribute,
+    const FLOAT& par_zoom)
+  :   field_viewportXattribute(par_viewportXattribute),
+  field_viewportYattribute(par_viewportYattribute),
+  field_zoom(par_zoom)
+{
+}
+
+PanAndZoomViewport::PanAndZoomViewport(const PanAndZoomViewport& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.PanAndZoomViewport.");
+if (other_value.viewportXattribute().is_bound()) field_viewportXattribute = other_value.viewportXattribute();
+else field_viewportXattribute.clean_up();
+if (other_value.viewportYattribute().is_bound()) field_viewportYattribute = other_value.viewportYattribute();
+else field_viewportYattribute.clean_up();
+if (other_value.zoom().is_bound()) field_zoom = other_value.zoom();
+else field_zoom.clean_up();
+}
+
+void PanAndZoomViewport::clean_up()
+{
+field_viewportXattribute.clean_up();
+field_viewportYattribute.clean_up();
+field_zoom.clean_up();
+}
+
+const TTCN_Typedescriptor_t* PanAndZoomViewport::get_descriptor() const { return &PanAndZoomViewport_descr_; }
+PanAndZoomViewport& PanAndZoomViewport::operator=(const PanAndZoomViewport& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.PanAndZoomViewport.");
+  if (other_value.viewportXattribute().is_bound()) field_viewportXattribute = other_value.viewportXattribute();
+  else field_viewportXattribute.clean_up();
+  if (other_value.viewportYattribute().is_bound()) field_viewportYattribute = other_value.viewportYattribute();
+  else field_viewportYattribute.clean_up();
+  if (other_value.zoom().is_bound()) field_zoom = other_value.zoom();
+  else field_zoom.clean_up();
+}
+return *this;
+}
+
+boolean PanAndZoomViewport::operator==(const PanAndZoomViewport& other_value) const
+{
+return field_viewportXattribute==other_value.field_viewportXattribute
+  && field_viewportYattribute==other_value.field_viewportYattribute
+  && field_zoom==other_value.field_zoom;
+}
+
+boolean PanAndZoomViewport::is_bound() const
+{
+return (field_viewportXattribute.is_bound())
+  || (field_viewportYattribute.is_bound())
+  || (field_zoom.is_bound());
+}
+boolean PanAndZoomViewport::is_value() const
+{
+return field_viewportXattribute.is_value()
+  && field_viewportYattribute.is_value()
+  && field_zoom.is_value();
+}
+void PanAndZoomViewport::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ viewportXattribute := ");
+field_viewportXattribute.log();
+TTCN_Logger::log_event_str(", viewportYattribute := ");
+field_viewportYattribute.log();
+TTCN_Logger::log_event_str(", zoom := ");
+field_zoom.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void PanAndZoomViewport::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 @IsobusVTMessageTypes.PanAndZoomViewport 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) viewportXattribute().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) viewportYattribute().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) zoom().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(), "viewportXattribute")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          viewportXattribute().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(), "viewportYattribute")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          viewportYattribute().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(), "zoom")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          zoom().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 @IsobusVTMessageTypes.PanAndZoomViewport: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.PanAndZoomViewport");
+  }
+}
+
+void PanAndZoomViewport::set_implicit_omit()
+{
+if (viewportXattribute().is_bound()) viewportXattribute().set_implicit_omit();
+if (viewportYattribute().is_bound()) viewportYattribute().set_implicit_omit();
+if (zoom().is_bound()) zoom().set_implicit_omit();
+}
+
+void PanAndZoomViewport::encode_text(Text_Buf& text_buf) const
+{
+field_viewportXattribute.encode_text(text_buf);
+field_viewportYattribute.encode_text(text_buf);
+field_zoom.encode_text(text_buf);
+}
+
+void PanAndZoomViewport::decode_text(Text_Buf& text_buf)
+{
+field_viewportXattribute.decode_text(text_buf);
+field_viewportYattribute.decode_text(text_buf);
+field_zoom.decode_text(text_buf);
+}
+
+void PanAndZoomViewport::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void PanAndZoomViewport::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int PanAndZoomViewport::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, ViewportXAttribute_descr_.raw->forceomit);
+  decoded_field_length = field_viewportXattribute.RAW_decode(ViewportXAttribute_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, ViewportXAttribute_descr_.raw->forceomit);
+  decoded_field_length = field_viewportYattribute.RAW_decode(ViewportXAttribute_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, SingleFloat_descr_.raw->forceomit);
+  decoded_field_length = field_zoom.RAW_decode(SingleFloat_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 PanAndZoomViewport::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, ViewportXAttribute_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ViewportXAttribute_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, SingleFloat_descr_.raw);
+  encoded_length += field_viewportXattribute.RAW_encode(ViewportXAttribute_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_viewportYattribute.RAW_encode(ViewportXAttribute_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_zoom.RAW_encode(SingleFloat_descr_, *myleaf.body.node.nodes[2]);
+  return myleaf.length = encoded_length;
+}
+
+struct PanAndZoomViewport_template::single_value_struct {
+INTEGER_template field_viewportXattribute;
+INTEGER_template field_viewportYattribute;
+FLOAT_template field_zoom;
+};
+
+void PanAndZoomViewport_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_viewportXattribute = ANY_VALUE;
+single_value->field_viewportYattribute = ANY_VALUE;
+single_value->field_zoom = ANY_VALUE;
+}
+}
+}
+
+void PanAndZoomViewport_template::copy_value(const PanAndZoomViewport& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.viewportXattribute().is_bound()) {
+  single_value->field_viewportXattribute = other_value.viewportXattribute();
+} else {
+  single_value->field_viewportXattribute.clean_up();
+}
+if (other_value.viewportYattribute().is_bound()) {
+  single_value->field_viewportYattribute = other_value.viewportYattribute();
+} else {
+  single_value->field_viewportYattribute.clean_up();
+}
+if (other_value.zoom().is_bound()) {
+  single_value->field_zoom = other_value.zoom();
+} else {
+  single_value->field_zoom.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void PanAndZoomViewport_template::copy_template(const PanAndZoomViewport_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.viewportXattribute().get_selection()) {
+single_value->field_viewportXattribute = other_value.viewportXattribute();
+} else {
+single_value->field_viewportXattribute.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.viewportYattribute().get_selection()) {
+single_value->field_viewportYattribute = other_value.viewportYattribute();
+} else {
+single_value->field_viewportYattribute.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.zoom().get_selection()) {
+single_value->field_zoom = other_value.zoom();
+} else {
+single_value->field_zoom.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new PanAndZoomViewport_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.PanAndZoomViewport.");
+break;
+}
+set_selection(other_value);
+}
+
+PanAndZoomViewport_template::PanAndZoomViewport_template()
+{
+}
+
+PanAndZoomViewport_template::PanAndZoomViewport_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+PanAndZoomViewport_template::PanAndZoomViewport_template(const PanAndZoomViewport& other_value)
+{
+copy_value(other_value);
+}
+
+PanAndZoomViewport_template::PanAndZoomViewport_template(const OPTIONAL<PanAndZoomViewport>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const PanAndZoomViewport&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.PanAndZoomViewport from an unbound optional field.");
+}
+}
+
+PanAndZoomViewport_template::PanAndZoomViewport_template(const PanAndZoomViewport_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+PanAndZoomViewport_template::~PanAndZoomViewport_template()
+{
+clean_up();
+}
+
+PanAndZoomViewport_template& PanAndZoomViewport_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+PanAndZoomViewport_template& PanAndZoomViewport_template::operator=(const PanAndZoomViewport& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+PanAndZoomViewport_template& PanAndZoomViewport_template::operator=(const OPTIONAL<PanAndZoomViewport>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const PanAndZoomViewport&)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 @IsobusVTMessageTypes.PanAndZoomViewport.");
+}
+return *this;
+}
+
+PanAndZoomViewport_template& PanAndZoomViewport_template::operator=(const PanAndZoomViewport_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean PanAndZoomViewport_template::match(const PanAndZoomViewport& 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.viewportXattribute().is_bound()) return FALSE;
+if(!single_value->field_viewportXattribute.match(other_value.viewportXattribute(), legacy))return FALSE;
+if(!other_value.viewportYattribute().is_bound()) return FALSE;
+if(!single_value->field_viewportYattribute.match(other_value.viewportYattribute(), legacy))return FALSE;
+if(!other_value.zoom().is_bound()) return FALSE;
+if(!single_value->field_zoom.match(other_value.zoom(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.PanAndZoomViewport.");
+}
+return FALSE;
+}
+
+boolean PanAndZoomViewport_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_viewportXattribute.is_bound()
+
+ ||single_value->field_viewportYattribute.is_bound()
+
+ ||single_value->field_zoom.is_bound()
+;
+}
+
+boolean PanAndZoomViewport_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_viewportXattribute.is_value()
+ &&single_value->field_viewportYattribute.is_value()
+ &&single_value->field_zoom.is_value();
+}
+
+void PanAndZoomViewport_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+PanAndZoomViewport PanAndZoomViewport_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 @IsobusVTMessageTypes.PanAndZoomViewport.");
+PanAndZoomViewport ret_val;
+if (single_value->field_viewportXattribute.is_bound()) {
+ret_val.viewportXattribute() = single_value->field_viewportXattribute.valueof();
+}
+if (single_value->field_viewportYattribute.is_bound()) {
+ret_val.viewportYattribute() = single_value->field_viewportYattribute.valueof();
+}
+if (single_value->field_zoom.is_bound()) {
+ret_val.zoom() = single_value->field_zoom.valueof();
+}
+return ret_val;
+}
+
+void PanAndZoomViewport_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.PanAndZoomViewport.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new PanAndZoomViewport_template[list_length];
+}
+
+PanAndZoomViewport_template& PanAndZoomViewport_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.PanAndZoomViewport.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.PanAndZoomViewport.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& PanAndZoomViewport_template::viewportXattribute()
+{
+set_specific();
+return single_value->field_viewportXattribute;
+}
+
+const INTEGER_template& PanAndZoomViewport_template::viewportXattribute() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field viewportXattribute of a non-specific template of type @IsobusVTMessageTypes.PanAndZoomViewport.");
+return single_value->field_viewportXattribute;
+}
+
+INTEGER_template& PanAndZoomViewport_template::viewportYattribute()
+{
+set_specific();
+return single_value->field_viewportYattribute;
+}
+
+const INTEGER_template& PanAndZoomViewport_template::viewportYattribute() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field viewportYattribute of a non-specific template of type @IsobusVTMessageTypes.PanAndZoomViewport.");
+return single_value->field_viewportYattribute;
+}
+
+FLOAT_template& PanAndZoomViewport_template::zoom()
+{
+set_specific();
+return single_value->field_zoom;
+}
+
+const FLOAT_template& PanAndZoomViewport_template::zoom() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field zoom of a non-specific template of type @IsobusVTMessageTypes.PanAndZoomViewport.");
+return single_value->field_zoom;
+}
+
+int PanAndZoomViewport_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.PanAndZoomViewport 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 @IsobusVTMessageTypes.PanAndZoomViewport 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 @IsobusVTMessageTypes.PanAndZoomViewport containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.PanAndZoomViewport containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.PanAndZoomViewport containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.PanAndZoomViewport containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.PanAndZoomViewport.");
+  }
+  return 0;
+}
+
+void PanAndZoomViewport_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ viewportXattribute := ");
+single_value->field_viewportXattribute.log();
+TTCN_Logger::log_event_str(", viewportYattribute := ");
+single_value->field_viewportYattribute.log();
+TTCN_Logger::log_event_str(", zoom := ");
+single_value->field_zoom.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void PanAndZoomViewport_template::log_match(const PanAndZoomViewport& 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_viewportXattribute.match(match_value.viewportXattribute(), legacy)){
+TTCN_Logger::log_logmatch_info(".viewportXattribute");
+single_value->field_viewportXattribute.log_match(match_value.viewportXattribute(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_viewportYattribute.match(match_value.viewportYattribute(), legacy)){
+TTCN_Logger::log_logmatch_info(".viewportYattribute");
+single_value->field_viewportYattribute.log_match(match_value.viewportYattribute(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_zoom.match(match_value.zoom(), legacy)){
+TTCN_Logger::log_logmatch_info(".zoom");
+single_value->field_zoom.log_match(match_value.zoom(), 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("{ viewportXattribute := ");
+single_value->field_viewportXattribute.log_match(match_value.viewportXattribute(), legacy);
+TTCN_Logger::log_event_str(", viewportYattribute := ");
+single_value->field_viewportYattribute.log_match(match_value.viewportYattribute(), legacy);
+TTCN_Logger::log_event_str(", zoom := ");
+single_value->field_zoom.log_match(match_value.zoom(), 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 PanAndZoomViewport_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_viewportXattribute.encode_text(text_buf);
+single_value->field_viewportYattribute.encode_text(text_buf);
+single_value->field_zoom.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 @IsobusVTMessageTypes.PanAndZoomViewport.");
+}
+}
+
+void PanAndZoomViewport_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_viewportXattribute.decode_text(text_buf);
+single_value->field_viewportYattribute.decode_text(text_buf);
+single_value->field_zoom.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 PanAndZoomViewport_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 @IsobusVTMessageTypes.PanAndZoomViewport.");
+}
+}
+
+void PanAndZoomViewport_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: {
+    PanAndZoomViewport_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.PanAndZoomViewport 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) viewportXattribute().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) viewportYattribute().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) zoom().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(), "viewportXattribute")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          viewportXattribute().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(), "viewportYattribute")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          viewportYattribute().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(), "zoom")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          zoom().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 @IsobusVTMessageTypes.PanAndZoomViewport: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.PanAndZoomViewport");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void PanAndZoomViewport_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_viewportXattribute.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.PanAndZoomViewport");
+single_value->field_viewportYattribute.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.PanAndZoomViewport");
+single_value->field_zoom.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.PanAndZoomViewport");
+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 : "@IsobusVTMessageTypes.PanAndZoomViewport");
+}
+
+boolean PanAndZoomViewport_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean PanAndZoomViewport_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ChangeViewportSize::ChangeViewportSize()
+{
+}
+
+ChangeViewportSize::ChangeViewportSize(const INTEGER& par_newWidth,
+    const INTEGER& par_newHeight)
+  :   field_newWidth(par_newWidth),
+  field_newHeight(par_newHeight)
+{
+}
+
+ChangeViewportSize::ChangeViewportSize(const ChangeViewportSize& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ChangeViewportSize.");
+if (other_value.newWidth().is_bound()) field_newWidth = other_value.newWidth();
+else field_newWidth.clean_up();
+if (other_value.newHeight().is_bound()) field_newHeight = other_value.newHeight();
+else field_newHeight.clean_up();
+}
+
+void ChangeViewportSize::clean_up()
+{
+field_newWidth.clean_up();
+field_newHeight.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ChangeViewportSize::get_descriptor() const { return &ChangeViewportSize_descr_; }
+ChangeViewportSize& ChangeViewportSize::operator=(const ChangeViewportSize& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ChangeViewportSize.");
+  if (other_value.newWidth().is_bound()) field_newWidth = other_value.newWidth();
+  else field_newWidth.clean_up();
+  if (other_value.newHeight().is_bound()) field_newHeight = other_value.newHeight();
+  else field_newHeight.clean_up();
+}
+return *this;
+}
+
+boolean ChangeViewportSize::operator==(const ChangeViewportSize& other_value) const
+{
+return field_newWidth==other_value.field_newWidth
+  && field_newHeight==other_value.field_newHeight;
+}
+
+boolean ChangeViewportSize::is_bound() const
+{
+return (field_newWidth.is_bound())
+  || (field_newHeight.is_bound());
+}
+boolean ChangeViewportSize::is_value() const
+{
+return field_newWidth.is_value()
+  && field_newHeight.is_value();
+}
+void ChangeViewportSize::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ newWidth := ");
+field_newWidth.log();
+TTCN_Logger::log_event_str(", newHeight := ");
+field_newHeight.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ChangeViewportSize::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 @IsobusVTMessageTypes.ChangeViewportSize 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) newWidth().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) newHeight().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(), "newWidth")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          newWidth().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(), "newHeight")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          newHeight().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 @IsobusVTMessageTypes.ChangeViewportSize: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ChangeViewportSize");
+  }
+}
+
+void ChangeViewportSize::set_implicit_omit()
+{
+if (newWidth().is_bound()) newWidth().set_implicit_omit();
+if (newHeight().is_bound()) newHeight().set_implicit_omit();
+}
+
+void ChangeViewportSize::encode_text(Text_Buf& text_buf) const
+{
+field_newWidth.encode_text(text_buf);
+field_newHeight.encode_text(text_buf);
+}
+
+void ChangeViewportSize::decode_text(Text_Buf& text_buf)
+{
+field_newWidth.decode_text(text_buf);
+field_newHeight.decode_text(text_buf);
+}
+
+void ChangeViewportSize::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ChangeViewportSize::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ChangeViewportSize::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, WidthType_descr_.raw->forceomit);
+  decoded_field_length = field_newWidth.RAW_decode(WidthType_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, HeightType_descr_.raw->forceomit);
+  decoded_field_length = field_newHeight.RAW_decode(HeightType_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 ChangeViewportSize::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, WidthType_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, HeightType_descr_.raw);
+  encoded_length += field_newWidth.RAW_encode(WidthType_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_newHeight.RAW_encode(HeightType_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct ChangeViewportSize_template::single_value_struct {
+INTEGER_template field_newWidth;
+INTEGER_template field_newHeight;
+};
+
+void ChangeViewportSize_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_newWidth = ANY_VALUE;
+single_value->field_newHeight = ANY_VALUE;
+}
+}
+}
+
+void ChangeViewportSize_template::copy_value(const ChangeViewportSize& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.newWidth().is_bound()) {
+  single_value->field_newWidth = other_value.newWidth();
+} else {
+  single_value->field_newWidth.clean_up();
+}
+if (other_value.newHeight().is_bound()) {
+  single_value->field_newHeight = other_value.newHeight();
+} else {
+  single_value->field_newHeight.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ChangeViewportSize_template::copy_template(const ChangeViewportSize_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.newWidth().get_selection()) {
+single_value->field_newWidth = other_value.newWidth();
+} else {
+single_value->field_newWidth.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.newHeight().get_selection()) {
+single_value->field_newHeight = other_value.newHeight();
+} else {
+single_value->field_newHeight.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ChangeViewportSize_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeViewportSize.");
+break;
+}
+set_selection(other_value);
+}
+
+ChangeViewportSize_template::ChangeViewportSize_template()
+{
+}
+
+ChangeViewportSize_template::ChangeViewportSize_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ChangeViewportSize_template::ChangeViewportSize_template(const ChangeViewportSize& other_value)
+{
+copy_value(other_value);
+}
+
+ChangeViewportSize_template::ChangeViewportSize_template(const OPTIONAL<ChangeViewportSize>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeViewportSize&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ChangeViewportSize from an unbound optional field.");
+}
+}
+
+ChangeViewportSize_template::ChangeViewportSize_template(const ChangeViewportSize_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ChangeViewportSize_template::~ChangeViewportSize_template()
+{
+clean_up();
+}
+
+ChangeViewportSize_template& ChangeViewportSize_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ChangeViewportSize_template& ChangeViewportSize_template::operator=(const ChangeViewportSize& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ChangeViewportSize_template& ChangeViewportSize_template::operator=(const OPTIONAL<ChangeViewportSize>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ChangeViewportSize&)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 @IsobusVTMessageTypes.ChangeViewportSize.");
+}
+return *this;
+}
+
+ChangeViewportSize_template& ChangeViewportSize_template::operator=(const ChangeViewportSize_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ChangeViewportSize_template::match(const ChangeViewportSize& 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.newWidth().is_bound()) return FALSE;
+if(!single_value->field_newWidth.match(other_value.newWidth(), legacy))return FALSE;
+if(!other_value.newHeight().is_bound()) return FALSE;
+if(!single_value->field_newHeight.match(other_value.newHeight(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeViewportSize.");
+}
+return FALSE;
+}
+
+boolean ChangeViewportSize_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_newWidth.is_bound()
+
+ ||single_value->field_newHeight.is_bound()
+;
+}
+
+boolean ChangeViewportSize_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_newWidth.is_value()
+ &&single_value->field_newHeight.is_value();
+}
+
+void ChangeViewportSize_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ChangeViewportSize ChangeViewportSize_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 @IsobusVTMessageTypes.ChangeViewportSize.");
+ChangeViewportSize ret_val;
+if (single_value->field_newWidth.is_bound()) {
+ret_val.newWidth() = single_value->field_newWidth.valueof();
+}
+if (single_value->field_newHeight.is_bound()) {
+ret_val.newHeight() = single_value->field_newHeight.valueof();
+}
+return ret_val;
+}
+
+void ChangeViewportSize_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ChangeViewportSize.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ChangeViewportSize_template[list_length];
+}
+
+ChangeViewportSize_template& ChangeViewportSize_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ChangeViewportSize.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ChangeViewportSize.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ChangeViewportSize_template::newWidth()
+{
+set_specific();
+return single_value->field_newWidth;
+}
+
+const INTEGER_template& ChangeViewportSize_template::newWidth() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field newWidth of a non-specific template of type @IsobusVTMessageTypes.ChangeViewportSize.");
+return single_value->field_newWidth;
+}
+
+INTEGER_template& ChangeViewportSize_template::newHeight()
+{
+set_specific();
+return single_value->field_newHeight;
+}
+
+const INTEGER_template& ChangeViewportSize_template::newHeight() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field newHeight of a non-specific template of type @IsobusVTMessageTypes.ChangeViewportSize.");
+return single_value->field_newHeight;
+}
+
+int ChangeViewportSize_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeViewportSize 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 @IsobusVTMessageTypes.ChangeViewportSize 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 @IsobusVTMessageTypes.ChangeViewportSize containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeViewportSize containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeViewportSize containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ChangeViewportSize containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ChangeViewportSize.");
+  }
+  return 0;
+}
+
+void ChangeViewportSize_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ newWidth := ");
+single_value->field_newWidth.log();
+TTCN_Logger::log_event_str(", newHeight := ");
+single_value->field_newHeight.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ChangeViewportSize_template::log_match(const ChangeViewportSize& 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_newWidth.match(match_value.newWidth(), legacy)){
+TTCN_Logger::log_logmatch_info(".newWidth");
+single_value->field_newWidth.log_match(match_value.newWidth(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_newHeight.match(match_value.newHeight(), legacy)){
+TTCN_Logger::log_logmatch_info(".newHeight");
+single_value->field_newHeight.log_match(match_value.newHeight(), 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("{ newWidth := ");
+single_value->field_newWidth.log_match(match_value.newWidth(), legacy);
+TTCN_Logger::log_event_str(", newHeight := ");
+single_value->field_newHeight.log_match(match_value.newHeight(), 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 ChangeViewportSize_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_newWidth.encode_text(text_buf);
+single_value->field_newHeight.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 @IsobusVTMessageTypes.ChangeViewportSize.");
+}
+}
+
+void ChangeViewportSize_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_newWidth.decode_text(text_buf);
+single_value->field_newHeight.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 ChangeViewportSize_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 @IsobusVTMessageTypes.ChangeViewportSize.");
+}
+}
+
+void ChangeViewportSize_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: {
+    ChangeViewportSize_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.ChangeViewportSize 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) newWidth().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) newHeight().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(), "newWidth")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          newWidth().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(), "newHeight")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          newHeight().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 @IsobusVTMessageTypes.ChangeViewportSize: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ChangeViewportSize");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ChangeViewportSize_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_newWidth.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeViewportSize");
+single_value->field_newHeight.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ChangeViewportSize");
+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 : "@IsobusVTMessageTypes.ChangeViewportSize");
+}
+
+boolean ChangeViewportSize_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ChangeViewportSize_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+DrawVTObject::DrawVTObject()
+{
+}
+
+DrawVTObject::DrawVTObject(const INTEGER& par_objectIDofObjectToDraw,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_objectIDofObjectToDraw(par_objectIDofObjectToDraw),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+DrawVTObject::DrawVTObject(const DrawVTObject& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.DrawVTObject.");
+if (other_value.objectIDofObjectToDraw().is_bound()) field_objectIDofObjectToDraw = other_value.objectIDofObjectToDraw();
+else field_objectIDofObjectToDraw.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void DrawVTObject::clean_up()
+{
+field_objectIDofObjectToDraw.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* DrawVTObject::get_descriptor() const { return &DrawVTObject_descr_; }
+DrawVTObject& DrawVTObject::operator=(const DrawVTObject& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.DrawVTObject.");
+  if (other_value.objectIDofObjectToDraw().is_bound()) field_objectIDofObjectToDraw = other_value.objectIDofObjectToDraw();
+  else field_objectIDofObjectToDraw.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean DrawVTObject::operator==(const DrawVTObject& other_value) const
+{
+return field_objectIDofObjectToDraw==other_value.field_objectIDofObjectToDraw
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean DrawVTObject::is_bound() const
+{
+return (field_objectIDofObjectToDraw.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean DrawVTObject::is_value() const
+{
+return field_objectIDofObjectToDraw.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void DrawVTObject::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ objectIDofObjectToDraw := ");
+field_objectIDofObjectToDraw.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void DrawVTObject::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 @IsobusVTMessageTypes.DrawVTObject 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) objectIDofObjectToDraw().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "objectIDofObjectToDraw")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofObjectToDraw().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.DrawVTObject: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.DrawVTObject");
+  }
+}
+
+void DrawVTObject::set_implicit_omit()
+{
+if (objectIDofObjectToDraw().is_bound()) objectIDofObjectToDraw().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void DrawVTObject::encode_text(Text_Buf& text_buf) const
+{
+field_objectIDofObjectToDraw.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void DrawVTObject::decode_text(Text_Buf& text_buf)
+{
+field_objectIDofObjectToDraw.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void DrawVTObject::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void DrawVTObject::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int DrawVTObject::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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectIDofObjectToDraw.RAW_decode(ValidObjectID_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, DrawVTObject_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(DrawVTObject_reserved7_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, DrawVTObject_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(DrawVTObject_reserved8_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 DrawVTObject::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, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, DrawVTObject_reserved7_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, DrawVTObject_reserved8_descr_.raw);
+  encoded_length += field_objectIDofObjectToDraw.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved7.RAW_encode(DrawVTObject_reserved7_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved8.RAW_encode(DrawVTObject_reserved8_descr_, *myleaf.body.node.nodes[2]);
+  return myleaf.length = encoded_length;
+}
+
+struct DrawVTObject_template::single_value_struct {
+INTEGER_template field_objectIDofObjectToDraw;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void DrawVTObject_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_objectIDofObjectToDraw = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void DrawVTObject_template::copy_value(const DrawVTObject& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.objectIDofObjectToDraw().is_bound()) {
+  single_value->field_objectIDofObjectToDraw = other_value.objectIDofObjectToDraw();
+} else {
+  single_value->field_objectIDofObjectToDraw.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void DrawVTObject_template::copy_template(const DrawVTObject_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.objectIDofObjectToDraw().get_selection()) {
+single_value->field_objectIDofObjectToDraw = other_value.objectIDofObjectToDraw();
+} else {
+single_value->field_objectIDofObjectToDraw.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new DrawVTObject_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.DrawVTObject.");
+break;
+}
+set_selection(other_value);
+}
+
+DrawVTObject_template::DrawVTObject_template()
+{
+}
+
+DrawVTObject_template::DrawVTObject_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+DrawVTObject_template::DrawVTObject_template(const DrawVTObject& other_value)
+{
+copy_value(other_value);
+}
+
+DrawVTObject_template::DrawVTObject_template(const OPTIONAL<DrawVTObject>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const DrawVTObject&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.DrawVTObject from an unbound optional field.");
+}
+}
+
+DrawVTObject_template::DrawVTObject_template(const DrawVTObject_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+DrawVTObject_template::~DrawVTObject_template()
+{
+clean_up();
+}
+
+DrawVTObject_template& DrawVTObject_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+DrawVTObject_template& DrawVTObject_template::operator=(const DrawVTObject& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+DrawVTObject_template& DrawVTObject_template::operator=(const OPTIONAL<DrawVTObject>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const DrawVTObject&)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 @IsobusVTMessageTypes.DrawVTObject.");
+}
+return *this;
+}
+
+DrawVTObject_template& DrawVTObject_template::operator=(const DrawVTObject_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean DrawVTObject_template::match(const DrawVTObject& 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.objectIDofObjectToDraw().is_bound()) return FALSE;
+if(!single_value->field_objectIDofObjectToDraw.match(other_value.objectIDofObjectToDraw(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.DrawVTObject.");
+}
+return FALSE;
+}
+
+boolean DrawVTObject_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_objectIDofObjectToDraw.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean DrawVTObject_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_objectIDofObjectToDraw.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void DrawVTObject_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+DrawVTObject DrawVTObject_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 @IsobusVTMessageTypes.DrawVTObject.");
+DrawVTObject ret_val;
+if (single_value->field_objectIDofObjectToDraw.is_bound()) {
+ret_val.objectIDofObjectToDraw() = single_value->field_objectIDofObjectToDraw.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void DrawVTObject_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.DrawVTObject.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new DrawVTObject_template[list_length];
+}
+
+DrawVTObject_template& DrawVTObject_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.DrawVTObject.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.DrawVTObject.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& DrawVTObject_template::objectIDofObjectToDraw()
+{
+set_specific();
+return single_value->field_objectIDofObjectToDraw;
+}
+
+const INTEGER_template& DrawVTObject_template::objectIDofObjectToDraw() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectIDofObjectToDraw of a non-specific template of type @IsobusVTMessageTypes.DrawVTObject.");
+return single_value->field_objectIDofObjectToDraw;
+}
+
+OCTETSTRING_template& DrawVTObject_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& DrawVTObject_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.DrawVTObject.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& DrawVTObject_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& DrawVTObject_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.DrawVTObject.");
+return single_value->field_reserved8;
+}
+
+int DrawVTObject_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DrawVTObject 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 @IsobusVTMessageTypes.DrawVTObject 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 @IsobusVTMessageTypes.DrawVTObject containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DrawVTObject containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DrawVTObject containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DrawVTObject containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.DrawVTObject.");
+  }
+  return 0;
+}
+
+void DrawVTObject_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ objectIDofObjectToDraw := ");
+single_value->field_objectIDofObjectToDraw.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void DrawVTObject_template::log_match(const DrawVTObject& 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_objectIDofObjectToDraw.match(match_value.objectIDofObjectToDraw(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectIDofObjectToDraw");
+single_value->field_objectIDofObjectToDraw.log_match(match_value.objectIDofObjectToDraw(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ objectIDofObjectToDraw := ");
+single_value->field_objectIDofObjectToDraw.log_match(match_value.objectIDofObjectToDraw(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 DrawVTObject_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_objectIDofObjectToDraw.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.DrawVTObject.");
+}
+}
+
+void DrawVTObject_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_objectIDofObjectToDraw.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 DrawVTObject_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 @IsobusVTMessageTypes.DrawVTObject.");
+}
+}
+
+void DrawVTObject_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: {
+    DrawVTObject_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.DrawVTObject 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) objectIDofObjectToDraw().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "objectIDofObjectToDraw")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofObjectToDraw().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.DrawVTObject: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.DrawVTObject");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void DrawVTObject_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_objectIDofObjectToDraw.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DrawVTObject");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DrawVTObject");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DrawVTObject");
+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 : "@IsobusVTMessageTypes.DrawVTObject");
+}
+
+boolean DrawVTObject_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean DrawVTObject_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+CopyCanvasToPictureGraphic::CopyCanvasToPictureGraphic()
+{
+}
+
+CopyCanvasToPictureGraphic::CopyCanvasToPictureGraphic(const INTEGER& par_objectIDofPictureGraphicObjectToCopyTo,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_objectIDofPictureGraphicObjectToCopyTo(par_objectIDofPictureGraphicObjectToCopyTo),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+CopyCanvasToPictureGraphic::CopyCanvasToPictureGraphic(const CopyCanvasToPictureGraphic& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.CopyCanvasToPictureGraphic.");
+if (other_value.objectIDofPictureGraphicObjectToCopyTo().is_bound()) field_objectIDofPictureGraphicObjectToCopyTo = other_value.objectIDofPictureGraphicObjectToCopyTo();
+else field_objectIDofPictureGraphicObjectToCopyTo.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void CopyCanvasToPictureGraphic::clean_up()
+{
+field_objectIDofPictureGraphicObjectToCopyTo.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* CopyCanvasToPictureGraphic::get_descriptor() const { return &CopyCanvasToPictureGraphic_descr_; }
+CopyCanvasToPictureGraphic& CopyCanvasToPictureGraphic::operator=(const CopyCanvasToPictureGraphic& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.CopyCanvasToPictureGraphic.");
+  if (other_value.objectIDofPictureGraphicObjectToCopyTo().is_bound()) field_objectIDofPictureGraphicObjectToCopyTo = other_value.objectIDofPictureGraphicObjectToCopyTo();
+  else field_objectIDofPictureGraphicObjectToCopyTo.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean CopyCanvasToPictureGraphic::operator==(const CopyCanvasToPictureGraphic& other_value) const
+{
+return field_objectIDofPictureGraphicObjectToCopyTo==other_value.field_objectIDofPictureGraphicObjectToCopyTo
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean CopyCanvasToPictureGraphic::is_bound() const
+{
+return (field_objectIDofPictureGraphicObjectToCopyTo.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean CopyCanvasToPictureGraphic::is_value() const
+{
+return field_objectIDofPictureGraphicObjectToCopyTo.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void CopyCanvasToPictureGraphic::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ objectIDofPictureGraphicObjectToCopyTo := ");
+field_objectIDofPictureGraphicObjectToCopyTo.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void CopyCanvasToPictureGraphic::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 @IsobusVTMessageTypes.CopyCanvasToPictureGraphic 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) objectIDofPictureGraphicObjectToCopyTo().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "objectIDofPictureGraphicObjectToCopyTo")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofPictureGraphicObjectToCopyTo().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.CopyCanvasToPictureGraphic: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.CopyCanvasToPictureGraphic");
+  }
+}
+
+void CopyCanvasToPictureGraphic::set_implicit_omit()
+{
+if (objectIDofPictureGraphicObjectToCopyTo().is_bound()) objectIDofPictureGraphicObjectToCopyTo().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void CopyCanvasToPictureGraphic::encode_text(Text_Buf& text_buf) const
+{
+field_objectIDofPictureGraphicObjectToCopyTo.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void CopyCanvasToPictureGraphic::decode_text(Text_Buf& text_buf)
+{
+field_objectIDofPictureGraphicObjectToCopyTo.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void CopyCanvasToPictureGraphic::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void CopyCanvasToPictureGraphic::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int CopyCanvasToPictureGraphic::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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectIDofPictureGraphicObjectToCopyTo.RAW_decode(ValidObjectID_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, CopyCanvasToPictureGraphic_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(CopyCanvasToPictureGraphic_reserved7_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, CopyCanvasToPictureGraphic_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(CopyCanvasToPictureGraphic_reserved8_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 CopyCanvasToPictureGraphic::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, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, CopyCanvasToPictureGraphic_reserved7_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, CopyCanvasToPictureGraphic_reserved8_descr_.raw);
+  encoded_length += field_objectIDofPictureGraphicObjectToCopyTo.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved7.RAW_encode(CopyCanvasToPictureGraphic_reserved7_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved8.RAW_encode(CopyCanvasToPictureGraphic_reserved8_descr_, *myleaf.body.node.nodes[2]);
+  return myleaf.length = encoded_length;
+}
+
+struct CopyCanvasToPictureGraphic_template::single_value_struct {
+INTEGER_template field_objectIDofPictureGraphicObjectToCopyTo;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void CopyCanvasToPictureGraphic_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_objectIDofPictureGraphicObjectToCopyTo = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void CopyCanvasToPictureGraphic_template::copy_value(const CopyCanvasToPictureGraphic& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.objectIDofPictureGraphicObjectToCopyTo().is_bound()) {
+  single_value->field_objectIDofPictureGraphicObjectToCopyTo = other_value.objectIDofPictureGraphicObjectToCopyTo();
+} else {
+  single_value->field_objectIDofPictureGraphicObjectToCopyTo.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void CopyCanvasToPictureGraphic_template::copy_template(const CopyCanvasToPictureGraphic_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.objectIDofPictureGraphicObjectToCopyTo().get_selection()) {
+single_value->field_objectIDofPictureGraphicObjectToCopyTo = other_value.objectIDofPictureGraphicObjectToCopyTo();
+} else {
+single_value->field_objectIDofPictureGraphicObjectToCopyTo.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new CopyCanvasToPictureGraphic_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.CopyCanvasToPictureGraphic.");
+break;
+}
+set_selection(other_value);
+}
+
+CopyCanvasToPictureGraphic_template::CopyCanvasToPictureGraphic_template()
+{
+}
+
+CopyCanvasToPictureGraphic_template::CopyCanvasToPictureGraphic_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+CopyCanvasToPictureGraphic_template::CopyCanvasToPictureGraphic_template(const CopyCanvasToPictureGraphic& other_value)
+{
+copy_value(other_value);
+}
+
+CopyCanvasToPictureGraphic_template::CopyCanvasToPictureGraphic_template(const OPTIONAL<CopyCanvasToPictureGraphic>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CopyCanvasToPictureGraphic&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.CopyCanvasToPictureGraphic from an unbound optional field.");
+}
+}
+
+CopyCanvasToPictureGraphic_template::CopyCanvasToPictureGraphic_template(const CopyCanvasToPictureGraphic_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+CopyCanvasToPictureGraphic_template::~CopyCanvasToPictureGraphic_template()
+{
+clean_up();
+}
+
+CopyCanvasToPictureGraphic_template& CopyCanvasToPictureGraphic_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+CopyCanvasToPictureGraphic_template& CopyCanvasToPictureGraphic_template::operator=(const CopyCanvasToPictureGraphic& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+CopyCanvasToPictureGraphic_template& CopyCanvasToPictureGraphic_template::operator=(const OPTIONAL<CopyCanvasToPictureGraphic>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CopyCanvasToPictureGraphic&)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 @IsobusVTMessageTypes.CopyCanvasToPictureGraphic.");
+}
+return *this;
+}
+
+CopyCanvasToPictureGraphic_template& CopyCanvasToPictureGraphic_template::operator=(const CopyCanvasToPictureGraphic_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean CopyCanvasToPictureGraphic_template::match(const CopyCanvasToPictureGraphic& 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.objectIDofPictureGraphicObjectToCopyTo().is_bound()) return FALSE;
+if(!single_value->field_objectIDofPictureGraphicObjectToCopyTo.match(other_value.objectIDofPictureGraphicObjectToCopyTo(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.CopyCanvasToPictureGraphic.");
+}
+return FALSE;
+}
+
+boolean CopyCanvasToPictureGraphic_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_objectIDofPictureGraphicObjectToCopyTo.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean CopyCanvasToPictureGraphic_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_objectIDofPictureGraphicObjectToCopyTo.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void CopyCanvasToPictureGraphic_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+CopyCanvasToPictureGraphic CopyCanvasToPictureGraphic_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 @IsobusVTMessageTypes.CopyCanvasToPictureGraphic.");
+CopyCanvasToPictureGraphic ret_val;
+if (single_value->field_objectIDofPictureGraphicObjectToCopyTo.is_bound()) {
+ret_val.objectIDofPictureGraphicObjectToCopyTo() = single_value->field_objectIDofPictureGraphicObjectToCopyTo.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void CopyCanvasToPictureGraphic_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.CopyCanvasToPictureGraphic.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new CopyCanvasToPictureGraphic_template[list_length];
+}
+
+CopyCanvasToPictureGraphic_template& CopyCanvasToPictureGraphic_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.CopyCanvasToPictureGraphic.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.CopyCanvasToPictureGraphic.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& CopyCanvasToPictureGraphic_template::objectIDofPictureGraphicObjectToCopyTo()
+{
+set_specific();
+return single_value->field_objectIDofPictureGraphicObjectToCopyTo;
+}
+
+const INTEGER_template& CopyCanvasToPictureGraphic_template::objectIDofPictureGraphicObjectToCopyTo() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectIDofPictureGraphicObjectToCopyTo of a non-specific template of type @IsobusVTMessageTypes.CopyCanvasToPictureGraphic.");
+return single_value->field_objectIDofPictureGraphicObjectToCopyTo;
+}
+
+OCTETSTRING_template& CopyCanvasToPictureGraphic_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& CopyCanvasToPictureGraphic_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.CopyCanvasToPictureGraphic.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& CopyCanvasToPictureGraphic_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& CopyCanvasToPictureGraphic_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.CopyCanvasToPictureGraphic.");
+return single_value->field_reserved8;
+}
+
+int CopyCanvasToPictureGraphic_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.CopyCanvasToPictureGraphic 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 @IsobusVTMessageTypes.CopyCanvasToPictureGraphic 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 @IsobusVTMessageTypes.CopyCanvasToPictureGraphic containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.CopyCanvasToPictureGraphic containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.CopyCanvasToPictureGraphic containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.CopyCanvasToPictureGraphic containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.CopyCanvasToPictureGraphic.");
+  }
+  return 0;
+}
+
+void CopyCanvasToPictureGraphic_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ objectIDofPictureGraphicObjectToCopyTo := ");
+single_value->field_objectIDofPictureGraphicObjectToCopyTo.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void CopyCanvasToPictureGraphic_template::log_match(const CopyCanvasToPictureGraphic& 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_objectIDofPictureGraphicObjectToCopyTo.match(match_value.objectIDofPictureGraphicObjectToCopyTo(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectIDofPictureGraphicObjectToCopyTo");
+single_value->field_objectIDofPictureGraphicObjectToCopyTo.log_match(match_value.objectIDofPictureGraphicObjectToCopyTo(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ objectIDofPictureGraphicObjectToCopyTo := ");
+single_value->field_objectIDofPictureGraphicObjectToCopyTo.log_match(match_value.objectIDofPictureGraphicObjectToCopyTo(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 CopyCanvasToPictureGraphic_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_objectIDofPictureGraphicObjectToCopyTo.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.CopyCanvasToPictureGraphic.");
+}
+}
+
+void CopyCanvasToPictureGraphic_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_objectIDofPictureGraphicObjectToCopyTo.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 CopyCanvasToPictureGraphic_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 @IsobusVTMessageTypes.CopyCanvasToPictureGraphic.");
+}
+}
+
+void CopyCanvasToPictureGraphic_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: {
+    CopyCanvasToPictureGraphic_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.CopyCanvasToPictureGraphic 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) objectIDofPictureGraphicObjectToCopyTo().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "objectIDofPictureGraphicObjectToCopyTo")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofPictureGraphicObjectToCopyTo().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.CopyCanvasToPictureGraphic: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.CopyCanvasToPictureGraphic");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void CopyCanvasToPictureGraphic_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_objectIDofPictureGraphicObjectToCopyTo.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.CopyCanvasToPictureGraphic");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.CopyCanvasToPictureGraphic");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.CopyCanvasToPictureGraphic");
+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 : "@IsobusVTMessageTypes.CopyCanvasToPictureGraphic");
+}
+
+boolean CopyCanvasToPictureGraphic_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean CopyCanvasToPictureGraphic_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+CopyViewportToPictureGraphic::CopyViewportToPictureGraphic()
+{
+}
+
+CopyViewportToPictureGraphic::CopyViewportToPictureGraphic(const INTEGER& par_objectIDofPictureGraphicObjectToCopyTo,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_objectIDofPictureGraphicObjectToCopyTo(par_objectIDofPictureGraphicObjectToCopyTo),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+CopyViewportToPictureGraphic::CopyViewportToPictureGraphic(const CopyViewportToPictureGraphic& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.CopyViewportToPictureGraphic.");
+if (other_value.objectIDofPictureGraphicObjectToCopyTo().is_bound()) field_objectIDofPictureGraphicObjectToCopyTo = other_value.objectIDofPictureGraphicObjectToCopyTo();
+else field_objectIDofPictureGraphicObjectToCopyTo.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void CopyViewportToPictureGraphic::clean_up()
+{
+field_objectIDofPictureGraphicObjectToCopyTo.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* CopyViewportToPictureGraphic::get_descriptor() const { return &CopyViewportToPictureGraphic_descr_; }
+CopyViewportToPictureGraphic& CopyViewportToPictureGraphic::operator=(const CopyViewportToPictureGraphic& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.CopyViewportToPictureGraphic.");
+  if (other_value.objectIDofPictureGraphicObjectToCopyTo().is_bound()) field_objectIDofPictureGraphicObjectToCopyTo = other_value.objectIDofPictureGraphicObjectToCopyTo();
+  else field_objectIDofPictureGraphicObjectToCopyTo.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean CopyViewportToPictureGraphic::operator==(const CopyViewportToPictureGraphic& other_value) const
+{
+return field_objectIDofPictureGraphicObjectToCopyTo==other_value.field_objectIDofPictureGraphicObjectToCopyTo
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean CopyViewportToPictureGraphic::is_bound() const
+{
+return (field_objectIDofPictureGraphicObjectToCopyTo.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean CopyViewportToPictureGraphic::is_value() const
+{
+return field_objectIDofPictureGraphicObjectToCopyTo.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void CopyViewportToPictureGraphic::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ objectIDofPictureGraphicObjectToCopyTo := ");
+field_objectIDofPictureGraphicObjectToCopyTo.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void CopyViewportToPictureGraphic::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 @IsobusVTMessageTypes.CopyViewportToPictureGraphic 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) objectIDofPictureGraphicObjectToCopyTo().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "objectIDofPictureGraphicObjectToCopyTo")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofPictureGraphicObjectToCopyTo().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.CopyViewportToPictureGraphic: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.CopyViewportToPictureGraphic");
+  }
+}
+
+void CopyViewportToPictureGraphic::set_implicit_omit()
+{
+if (objectIDofPictureGraphicObjectToCopyTo().is_bound()) objectIDofPictureGraphicObjectToCopyTo().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void CopyViewportToPictureGraphic::encode_text(Text_Buf& text_buf) const
+{
+field_objectIDofPictureGraphicObjectToCopyTo.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void CopyViewportToPictureGraphic::decode_text(Text_Buf& text_buf)
+{
+field_objectIDofPictureGraphicObjectToCopyTo.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void CopyViewportToPictureGraphic::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void CopyViewportToPictureGraphic::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int CopyViewportToPictureGraphic::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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectIDofPictureGraphicObjectToCopyTo.RAW_decode(ValidObjectID_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, CopyViewportToPictureGraphic_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(CopyViewportToPictureGraphic_reserved7_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, CopyViewportToPictureGraphic_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(CopyViewportToPictureGraphic_reserved8_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 CopyViewportToPictureGraphic::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, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, CopyViewportToPictureGraphic_reserved7_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, CopyViewportToPictureGraphic_reserved8_descr_.raw);
+  encoded_length += field_objectIDofPictureGraphicObjectToCopyTo.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved7.RAW_encode(CopyViewportToPictureGraphic_reserved7_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved8.RAW_encode(CopyViewportToPictureGraphic_reserved8_descr_, *myleaf.body.node.nodes[2]);
+  return myleaf.length = encoded_length;
+}
+
+struct CopyViewportToPictureGraphic_template::single_value_struct {
+INTEGER_template field_objectIDofPictureGraphicObjectToCopyTo;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void CopyViewportToPictureGraphic_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_objectIDofPictureGraphicObjectToCopyTo = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void CopyViewportToPictureGraphic_template::copy_value(const CopyViewportToPictureGraphic& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.objectIDofPictureGraphicObjectToCopyTo().is_bound()) {
+  single_value->field_objectIDofPictureGraphicObjectToCopyTo = other_value.objectIDofPictureGraphicObjectToCopyTo();
+} else {
+  single_value->field_objectIDofPictureGraphicObjectToCopyTo.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void CopyViewportToPictureGraphic_template::copy_template(const CopyViewportToPictureGraphic_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.objectIDofPictureGraphicObjectToCopyTo().get_selection()) {
+single_value->field_objectIDofPictureGraphicObjectToCopyTo = other_value.objectIDofPictureGraphicObjectToCopyTo();
+} else {
+single_value->field_objectIDofPictureGraphicObjectToCopyTo.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new CopyViewportToPictureGraphic_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.CopyViewportToPictureGraphic.");
+break;
+}
+set_selection(other_value);
+}
+
+CopyViewportToPictureGraphic_template::CopyViewportToPictureGraphic_template()
+{
+}
+
+CopyViewportToPictureGraphic_template::CopyViewportToPictureGraphic_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+CopyViewportToPictureGraphic_template::CopyViewportToPictureGraphic_template(const CopyViewportToPictureGraphic& other_value)
+{
+copy_value(other_value);
+}
+
+CopyViewportToPictureGraphic_template::CopyViewportToPictureGraphic_template(const OPTIONAL<CopyViewportToPictureGraphic>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CopyViewportToPictureGraphic&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.CopyViewportToPictureGraphic from an unbound optional field.");
+}
+}
+
+CopyViewportToPictureGraphic_template::CopyViewportToPictureGraphic_template(const CopyViewportToPictureGraphic_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+CopyViewportToPictureGraphic_template::~CopyViewportToPictureGraphic_template()
+{
+clean_up();
+}
+
+CopyViewportToPictureGraphic_template& CopyViewportToPictureGraphic_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+CopyViewportToPictureGraphic_template& CopyViewportToPictureGraphic_template::operator=(const CopyViewportToPictureGraphic& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+CopyViewportToPictureGraphic_template& CopyViewportToPictureGraphic_template::operator=(const OPTIONAL<CopyViewportToPictureGraphic>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CopyViewportToPictureGraphic&)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 @IsobusVTMessageTypes.CopyViewportToPictureGraphic.");
+}
+return *this;
+}
+
+CopyViewportToPictureGraphic_template& CopyViewportToPictureGraphic_template::operator=(const CopyViewportToPictureGraphic_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean CopyViewportToPictureGraphic_template::match(const CopyViewportToPictureGraphic& 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.objectIDofPictureGraphicObjectToCopyTo().is_bound()) return FALSE;
+if(!single_value->field_objectIDofPictureGraphicObjectToCopyTo.match(other_value.objectIDofPictureGraphicObjectToCopyTo(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.CopyViewportToPictureGraphic.");
+}
+return FALSE;
+}
+
+boolean CopyViewportToPictureGraphic_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_objectIDofPictureGraphicObjectToCopyTo.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean CopyViewportToPictureGraphic_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_objectIDofPictureGraphicObjectToCopyTo.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void CopyViewportToPictureGraphic_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+CopyViewportToPictureGraphic CopyViewportToPictureGraphic_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 @IsobusVTMessageTypes.CopyViewportToPictureGraphic.");
+CopyViewportToPictureGraphic ret_val;
+if (single_value->field_objectIDofPictureGraphicObjectToCopyTo.is_bound()) {
+ret_val.objectIDofPictureGraphicObjectToCopyTo() = single_value->field_objectIDofPictureGraphicObjectToCopyTo.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void CopyViewportToPictureGraphic_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.CopyViewportToPictureGraphic.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new CopyViewportToPictureGraphic_template[list_length];
+}
+
+CopyViewportToPictureGraphic_template& CopyViewportToPictureGraphic_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.CopyViewportToPictureGraphic.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.CopyViewportToPictureGraphic.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& CopyViewportToPictureGraphic_template::objectIDofPictureGraphicObjectToCopyTo()
+{
+set_specific();
+return single_value->field_objectIDofPictureGraphicObjectToCopyTo;
+}
+
+const INTEGER_template& CopyViewportToPictureGraphic_template::objectIDofPictureGraphicObjectToCopyTo() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectIDofPictureGraphicObjectToCopyTo of a non-specific template of type @IsobusVTMessageTypes.CopyViewportToPictureGraphic.");
+return single_value->field_objectIDofPictureGraphicObjectToCopyTo;
+}
+
+OCTETSTRING_template& CopyViewportToPictureGraphic_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& CopyViewportToPictureGraphic_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.CopyViewportToPictureGraphic.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& CopyViewportToPictureGraphic_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& CopyViewportToPictureGraphic_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.CopyViewportToPictureGraphic.");
+return single_value->field_reserved8;
+}
+
+int CopyViewportToPictureGraphic_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.CopyViewportToPictureGraphic 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 @IsobusVTMessageTypes.CopyViewportToPictureGraphic 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 @IsobusVTMessageTypes.CopyViewportToPictureGraphic containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.CopyViewportToPictureGraphic containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.CopyViewportToPictureGraphic containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.CopyViewportToPictureGraphic containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.CopyViewportToPictureGraphic.");
+  }
+  return 0;
+}
+
+void CopyViewportToPictureGraphic_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ objectIDofPictureGraphicObjectToCopyTo := ");
+single_value->field_objectIDofPictureGraphicObjectToCopyTo.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void CopyViewportToPictureGraphic_template::log_match(const CopyViewportToPictureGraphic& 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_objectIDofPictureGraphicObjectToCopyTo.match(match_value.objectIDofPictureGraphicObjectToCopyTo(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectIDofPictureGraphicObjectToCopyTo");
+single_value->field_objectIDofPictureGraphicObjectToCopyTo.log_match(match_value.objectIDofPictureGraphicObjectToCopyTo(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ objectIDofPictureGraphicObjectToCopyTo := ");
+single_value->field_objectIDofPictureGraphicObjectToCopyTo.log_match(match_value.objectIDofPictureGraphicObjectToCopyTo(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 CopyViewportToPictureGraphic_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_objectIDofPictureGraphicObjectToCopyTo.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.CopyViewportToPictureGraphic.");
+}
+}
+
+void CopyViewportToPictureGraphic_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_objectIDofPictureGraphicObjectToCopyTo.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 CopyViewportToPictureGraphic_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 @IsobusVTMessageTypes.CopyViewportToPictureGraphic.");
+}
+}
+
+void CopyViewportToPictureGraphic_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: {
+    CopyViewportToPictureGraphic_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.CopyViewportToPictureGraphic 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) objectIDofPictureGraphicObjectToCopyTo().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "objectIDofPictureGraphicObjectToCopyTo")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofPictureGraphicObjectToCopyTo().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.CopyViewportToPictureGraphic: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.CopyViewportToPictureGraphic");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void CopyViewportToPictureGraphic_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_objectIDofPictureGraphicObjectToCopyTo.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.CopyViewportToPictureGraphic");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.CopyViewportToPictureGraphic");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.CopyViewportToPictureGraphic");
+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 : "@IsobusVTMessageTypes.CopyViewportToPictureGraphic");
+}
+
+boolean CopyViewportToPictureGraphic_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean CopyViewportToPictureGraphic_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 GraphicsContextReq__union::copy_value(const GraphicsContextReq__union& other_value)
+{
+switch (other_value.union_selection) {
+case ALT_setGraphicsCursor:
+field_setGraphicsCursor = new SetGraphicsCursor(*other_value.field_setGraphicsCursor);
+break;
+case ALT_moveGraphicsCursor:
+field_moveGraphicsCursor = new MoveGraphicsCursor(*other_value.field_moveGraphicsCursor);
+break;
+case ALT_setForegroundColour:
+field_setForegroundColour = new SetForegroundColour(*other_value.field_setForegroundColour);
+break;
+case ALT_setBackgroundColour:
+field_setBackgroundColour = new SetBackgroundColour(*other_value.field_setBackgroundColour);
+break;
+case ALT_setLineAttributesObjectID:
+field_setLineAttributesObjectID = new SetLineAttributesObjectID(*other_value.field_setLineAttributesObjectID);
+break;
+case ALT_setFileAttributesObjectID:
+field_setFileAttributesObjectID = new SetFileAttributesObjectID(*other_value.field_setFileAttributesObjectID);
+break;
+case ALT_setFontAttributesObjectID:
+field_setFontAttributesObjectID = new SetFontAttributesObjectID(*other_value.field_setFontAttributesObjectID);
+break;
+case ALT_eraseRectangle:
+field_eraseRectangle = new EraseRectangle(*other_value.field_eraseRectangle);
+break;
+case ALT_drawPoint:
+field_drawPoint = new DrawPoint(*other_value.field_drawPoint);
+break;
+case ALT_drawLine:
+field_drawLine = new DrawLine(*other_value.field_drawLine);
+break;
+case ALT_drawRectangle:
+field_drawRectangle = new DrawRectangle(*other_value.field_drawRectangle);
+break;
+case ALT_drawClosedEllipse:
+field_drawClosedEllipse = new DrawClosedEllipse(*other_value.field_drawClosedEllipse);
+break;
+case ALT_drawPolygon:
+field_drawPolygon = new DrawPolygon(*other_value.field_drawPolygon);
+break;
+case ALT_drawText:
+field_drawText = new DrawText(*other_value.field_drawText);
+break;
+case ALT_panViewport:
+field_panViewport = new PanViewport(*other_value.field_panViewport);
+break;
+case ALT_zoomViewport:
+field_zoomViewport = new ZoomViewport(*other_value.field_zoomViewport);
+break;
+case ALT_panAndZoomViewport:
+field_panAndZoomViewport = new PanAndZoomViewport(*other_value.field_panAndZoomViewport);
+break;
+case ALT_changeViewportSize:
+field_changeViewportSize = new ChangeViewportSize(*other_value.field_changeViewportSize);
+break;
+case ALT_drawVTObject:
+field_drawVTObject = new DrawVTObject(*other_value.field_drawVTObject);
+break;
+case ALT_copyCanvasToPictureGraphic:
+field_copyCanvasToPictureGraphic = new CopyCanvasToPictureGraphic(*other_value.field_copyCanvasToPictureGraphic);
+break;
+case ALT_copyViewportToPictureGraphic:
+field_copyViewportToPictureGraphic = new CopyViewportToPictureGraphic(*other_value.field_copyViewportToPictureGraphic);
+break;
+default:
+TTCN_error("Assignment of an unbound union value of type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+}
+union_selection = other_value.union_selection;
+}
+
+GraphicsContextReq__union::GraphicsContextReq__union()
+{
+union_selection = UNBOUND_VALUE;
+}
+
+GraphicsContextReq__union::GraphicsContextReq__union(const GraphicsContextReq__union& other_value)
+: Base_Type(){
+copy_value(other_value);
+}
+
+GraphicsContextReq__union::~GraphicsContextReq__union()
+{
+clean_up();
+}
+
+GraphicsContextReq__union& GraphicsContextReq__union::operator=(const GraphicsContextReq__union& other_value)
+{
+if (this != &other_value) {
+clean_up();
+copy_value(other_value);
+}
+return *this;
+}
+
+boolean GraphicsContextReq__union::operator==(const GraphicsContextReq__union& other_value) const
+{
+if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+if (union_selection != other_value.union_selection) return FALSE;
+switch (union_selection) {
+case ALT_setGraphicsCursor:
+return *field_setGraphicsCursor == *other_value.field_setGraphicsCursor;
+case ALT_moveGraphicsCursor:
+return *field_moveGraphicsCursor == *other_value.field_moveGraphicsCursor;
+case ALT_setForegroundColour:
+return *field_setForegroundColour == *other_value.field_setForegroundColour;
+case ALT_setBackgroundColour:
+return *field_setBackgroundColour == *other_value.field_setBackgroundColour;
+case ALT_setLineAttributesObjectID:
+return *field_setLineAttributesObjectID == *other_value.field_setLineAttributesObjectID;
+case ALT_setFileAttributesObjectID:
+return *field_setFileAttributesObjectID == *other_value.field_setFileAttributesObjectID;
+case ALT_setFontAttributesObjectID:
+return *field_setFontAttributesObjectID == *other_value.field_setFontAttributesObjectID;
+case ALT_eraseRectangle:
+return *field_eraseRectangle == *other_value.field_eraseRectangle;
+case ALT_drawPoint:
+return *field_drawPoint == *other_value.field_drawPoint;
+case ALT_drawLine:
+return *field_drawLine == *other_value.field_drawLine;
+case ALT_drawRectangle:
+return *field_drawRectangle == *other_value.field_drawRectangle;
+case ALT_drawClosedEllipse:
+return *field_drawClosedEllipse == *other_value.field_drawClosedEllipse;
+case ALT_drawPolygon:
+return *field_drawPolygon == *other_value.field_drawPolygon;
+case ALT_drawText:
+return *field_drawText == *other_value.field_drawText;
+case ALT_panViewport:
+return *field_panViewport == *other_value.field_panViewport;
+case ALT_zoomViewport:
+return *field_zoomViewport == *other_value.field_zoomViewport;
+case ALT_panAndZoomViewport:
+return *field_panAndZoomViewport == *other_value.field_panAndZoomViewport;
+case ALT_changeViewportSize:
+return *field_changeViewportSize == *other_value.field_changeViewportSize;
+case ALT_drawVTObject:
+return *field_drawVTObject == *other_value.field_drawVTObject;
+case ALT_copyCanvasToPictureGraphic:
+return *field_copyCanvasToPictureGraphic == *other_value.field_copyCanvasToPictureGraphic;
+case ALT_copyViewportToPictureGraphic:
+return *field_copyViewportToPictureGraphic == *other_value.field_copyViewportToPictureGraphic;
+default:
+return FALSE;
+}
+}
+
+SetGraphicsCursor& GraphicsContextReq__union::setGraphicsCursor()
+{
+if (union_selection != ALT_setGraphicsCursor) {
+clean_up();
+field_setGraphicsCursor = new SetGraphicsCursor;
+union_selection = ALT_setGraphicsCursor;
+}
+return *field_setGraphicsCursor;
+}
+
+const SetGraphicsCursor& GraphicsContextReq__union::setGraphicsCursor() const
+{
+if (union_selection != ALT_setGraphicsCursor) TTCN_error("Using non-selected field setGraphicsCursor in a value of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+return *field_setGraphicsCursor;
+}
+
+MoveGraphicsCursor& GraphicsContextReq__union::moveGraphicsCursor()
+{
+if (union_selection != ALT_moveGraphicsCursor) {
+clean_up();
+field_moveGraphicsCursor = new MoveGraphicsCursor;
+union_selection = ALT_moveGraphicsCursor;
+}
+return *field_moveGraphicsCursor;
+}
+
+const MoveGraphicsCursor& GraphicsContextReq__union::moveGraphicsCursor() const
+{
+if (union_selection != ALT_moveGraphicsCursor) TTCN_error("Using non-selected field moveGraphicsCursor in a value of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+return *field_moveGraphicsCursor;
+}
+
+SetForegroundColour& GraphicsContextReq__union::setForegroundColour()
+{
+if (union_selection != ALT_setForegroundColour) {
+clean_up();
+field_setForegroundColour = new SetForegroundColour;
+union_selection = ALT_setForegroundColour;
+}
+return *field_setForegroundColour;
+}
+
+const SetForegroundColour& GraphicsContextReq__union::setForegroundColour() const
+{
+if (union_selection != ALT_setForegroundColour) TTCN_error("Using non-selected field setForegroundColour in a value of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+return *field_setForegroundColour;
+}
+
+SetBackgroundColour& GraphicsContextReq__union::setBackgroundColour()
+{
+if (union_selection != ALT_setBackgroundColour) {
+clean_up();
+field_setBackgroundColour = new SetBackgroundColour;
+union_selection = ALT_setBackgroundColour;
+}
+return *field_setBackgroundColour;
+}
+
+const SetBackgroundColour& GraphicsContextReq__union::setBackgroundColour() const
+{
+if (union_selection != ALT_setBackgroundColour) TTCN_error("Using non-selected field setBackgroundColour in a value of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+return *field_setBackgroundColour;
+}
+
+SetLineAttributesObjectID& GraphicsContextReq__union::setLineAttributesObjectID()
+{
+if (union_selection != ALT_setLineAttributesObjectID) {
+clean_up();
+field_setLineAttributesObjectID = new SetLineAttributesObjectID;
+union_selection = ALT_setLineAttributesObjectID;
+}
+return *field_setLineAttributesObjectID;
+}
+
+const SetLineAttributesObjectID& GraphicsContextReq__union::setLineAttributesObjectID() const
+{
+if (union_selection != ALT_setLineAttributesObjectID) TTCN_error("Using non-selected field setLineAttributesObjectID in a value of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+return *field_setLineAttributesObjectID;
+}
+
+SetFileAttributesObjectID& GraphicsContextReq__union::setFileAttributesObjectID()
+{
+if (union_selection != ALT_setFileAttributesObjectID) {
+clean_up();
+field_setFileAttributesObjectID = new SetFileAttributesObjectID;
+union_selection = ALT_setFileAttributesObjectID;
+}
+return *field_setFileAttributesObjectID;
+}
+
+const SetFileAttributesObjectID& GraphicsContextReq__union::setFileAttributesObjectID() const
+{
+if (union_selection != ALT_setFileAttributesObjectID) TTCN_error("Using non-selected field setFileAttributesObjectID in a value of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+return *field_setFileAttributesObjectID;
+}
+
+SetFontAttributesObjectID& GraphicsContextReq__union::setFontAttributesObjectID()
+{
+if (union_selection != ALT_setFontAttributesObjectID) {
+clean_up();
+field_setFontAttributesObjectID = new SetFontAttributesObjectID;
+union_selection = ALT_setFontAttributesObjectID;
+}
+return *field_setFontAttributesObjectID;
+}
+
+const SetFontAttributesObjectID& GraphicsContextReq__union::setFontAttributesObjectID() const
+{
+if (union_selection != ALT_setFontAttributesObjectID) TTCN_error("Using non-selected field setFontAttributesObjectID in a value of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+return *field_setFontAttributesObjectID;
+}
+
+EraseRectangle& GraphicsContextReq__union::eraseRectangle()
+{
+if (union_selection != ALT_eraseRectangle) {
+clean_up();
+field_eraseRectangle = new EraseRectangle;
+union_selection = ALT_eraseRectangle;
+}
+return *field_eraseRectangle;
+}
+
+const EraseRectangle& GraphicsContextReq__union::eraseRectangle() const
+{
+if (union_selection != ALT_eraseRectangle) TTCN_error("Using non-selected field eraseRectangle in a value of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+return *field_eraseRectangle;
+}
+
+DrawPoint& GraphicsContextReq__union::drawPoint()
+{
+if (union_selection != ALT_drawPoint) {
+clean_up();
+field_drawPoint = new DrawPoint;
+union_selection = ALT_drawPoint;
+}
+return *field_drawPoint;
+}
+
+const DrawPoint& GraphicsContextReq__union::drawPoint() const
+{
+if (union_selection != ALT_drawPoint) TTCN_error("Using non-selected field drawPoint in a value of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+return *field_drawPoint;
+}
+
+DrawLine& GraphicsContextReq__union::drawLine()
+{
+if (union_selection != ALT_drawLine) {
+clean_up();
+field_drawLine = new DrawLine;
+union_selection = ALT_drawLine;
+}
+return *field_drawLine;
+}
+
+const DrawLine& GraphicsContextReq__union::drawLine() const
+{
+if (union_selection != ALT_drawLine) TTCN_error("Using non-selected field drawLine in a value of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+return *field_drawLine;
+}
+
+DrawRectangle& GraphicsContextReq__union::drawRectangle()
+{
+if (union_selection != ALT_drawRectangle) {
+clean_up();
+field_drawRectangle = new DrawRectangle;
+union_selection = ALT_drawRectangle;
+}
+return *field_drawRectangle;
+}
+
+const DrawRectangle& GraphicsContextReq__union::drawRectangle() const
+{
+if (union_selection != ALT_drawRectangle) TTCN_error("Using non-selected field drawRectangle in a value of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+return *field_drawRectangle;
+}
+
+DrawClosedEllipse& GraphicsContextReq__union::drawClosedEllipse()
+{
+if (union_selection != ALT_drawClosedEllipse) {
+clean_up();
+field_drawClosedEllipse = new DrawClosedEllipse;
+union_selection = ALT_drawClosedEllipse;
+}
+return *field_drawClosedEllipse;
+}
+
+const DrawClosedEllipse& GraphicsContextReq__union::drawClosedEllipse() const
+{
+if (union_selection != ALT_drawClosedEllipse) TTCN_error("Using non-selected field drawClosedEllipse in a value of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+return *field_drawClosedEllipse;
+}
+
+DrawPolygon& GraphicsContextReq__union::drawPolygon()
+{
+if (union_selection != ALT_drawPolygon) {
+clean_up();
+field_drawPolygon = new DrawPolygon;
+union_selection = ALT_drawPolygon;
+}
+return *field_drawPolygon;
+}
+
+const DrawPolygon& GraphicsContextReq__union::drawPolygon() const
+{
+if (union_selection != ALT_drawPolygon) TTCN_error("Using non-selected field drawPolygon in a value of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+return *field_drawPolygon;
+}
+
+DrawText& GraphicsContextReq__union::drawText()
+{
+if (union_selection != ALT_drawText) {
+clean_up();
+field_drawText = new DrawText;
+union_selection = ALT_drawText;
+}
+return *field_drawText;
+}
+
+const DrawText& GraphicsContextReq__union::drawText() const
+{
+if (union_selection != ALT_drawText) TTCN_error("Using non-selected field drawText in a value of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+return *field_drawText;
+}
+
+PanViewport& GraphicsContextReq__union::panViewport()
+{
+if (union_selection != ALT_panViewport) {
+clean_up();
+field_panViewport = new PanViewport;
+union_selection = ALT_panViewport;
+}
+return *field_panViewport;
+}
+
+const PanViewport& GraphicsContextReq__union::panViewport() const
+{
+if (union_selection != ALT_panViewport) TTCN_error("Using non-selected field panViewport in a value of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+return *field_panViewport;
+}
+
+ZoomViewport& GraphicsContextReq__union::zoomViewport()
+{
+if (union_selection != ALT_zoomViewport) {
+clean_up();
+field_zoomViewport = new ZoomViewport;
+union_selection = ALT_zoomViewport;
+}
+return *field_zoomViewport;
+}
+
+const ZoomViewport& GraphicsContextReq__union::zoomViewport() const
+{
+if (union_selection != ALT_zoomViewport) TTCN_error("Using non-selected field zoomViewport in a value of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+return *field_zoomViewport;
+}
+
+PanAndZoomViewport& GraphicsContextReq__union::panAndZoomViewport()
+{
+if (union_selection != ALT_panAndZoomViewport) {
+clean_up();
+field_panAndZoomViewport = new PanAndZoomViewport;
+union_selection = ALT_panAndZoomViewport;
+}
+return *field_panAndZoomViewport;
+}
+
+const PanAndZoomViewport& GraphicsContextReq__union::panAndZoomViewport() const
+{
+if (union_selection != ALT_panAndZoomViewport) TTCN_error("Using non-selected field panAndZoomViewport in a value of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+return *field_panAndZoomViewport;
+}
+
+ChangeViewportSize& GraphicsContextReq__union::changeViewportSize()
+{
+if (union_selection != ALT_changeViewportSize) {
+clean_up();
+field_changeViewportSize = new ChangeViewportSize;
+union_selection = ALT_changeViewportSize;
+}
+return *field_changeViewportSize;
+}
+
+const ChangeViewportSize& GraphicsContextReq__union::changeViewportSize() const
+{
+if (union_selection != ALT_changeViewportSize) TTCN_error("Using non-selected field changeViewportSize in a value of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+return *field_changeViewportSize;
+}
+
+DrawVTObject& GraphicsContextReq__union::drawVTObject()
+{
+if (union_selection != ALT_drawVTObject) {
+clean_up();
+field_drawVTObject = new DrawVTObject;
+union_selection = ALT_drawVTObject;
+}
+return *field_drawVTObject;
+}
+
+const DrawVTObject& GraphicsContextReq__union::drawVTObject() const
+{
+if (union_selection != ALT_drawVTObject) TTCN_error("Using non-selected field drawVTObject in a value of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+return *field_drawVTObject;
+}
+
+CopyCanvasToPictureGraphic& GraphicsContextReq__union::copyCanvasToPictureGraphic()
+{
+if (union_selection != ALT_copyCanvasToPictureGraphic) {
+clean_up();
+field_copyCanvasToPictureGraphic = new CopyCanvasToPictureGraphic;
+union_selection = ALT_copyCanvasToPictureGraphic;
+}
+return *field_copyCanvasToPictureGraphic;
+}
+
+const CopyCanvasToPictureGraphic& GraphicsContextReq__union::copyCanvasToPictureGraphic() const
+{
+if (union_selection != ALT_copyCanvasToPictureGraphic) TTCN_error("Using non-selected field copyCanvasToPictureGraphic in a value of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+return *field_copyCanvasToPictureGraphic;
+}
+
+CopyViewportToPictureGraphic& GraphicsContextReq__union::copyViewportToPictureGraphic()
+{
+if (union_selection != ALT_copyViewportToPictureGraphic) {
+clean_up();
+field_copyViewportToPictureGraphic = new CopyViewportToPictureGraphic;
+union_selection = ALT_copyViewportToPictureGraphic;
+}
+return *field_copyViewportToPictureGraphic;
+}
+
+const CopyViewportToPictureGraphic& GraphicsContextReq__union::copyViewportToPictureGraphic() const
+{
+if (union_selection != ALT_copyViewportToPictureGraphic) TTCN_error("Using non-selected field copyViewportToPictureGraphic in a value of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+return *field_copyViewportToPictureGraphic;
+}
+
+boolean GraphicsContextReq__union::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 @IsobusVTMessageTypes.GraphicsContextReq_union.");
+return union_selection == checked_selection;
+}
+
+boolean GraphicsContextReq__union::is_bound() const
+{
+  return union_selection != UNBOUND_VALUE;
+}
+
+boolean GraphicsContextReq__union::is_value() const
+{
+switch (union_selection) {
+case UNBOUND_VALUE: return FALSE;
+case ALT_setGraphicsCursor: return field_setGraphicsCursor->is_value();
+case ALT_moveGraphicsCursor: return field_moveGraphicsCursor->is_value();
+case ALT_setForegroundColour: return field_setForegroundColour->is_value();
+case ALT_setBackgroundColour: return field_setBackgroundColour->is_value();
+case ALT_setLineAttributesObjectID: return field_setLineAttributesObjectID->is_value();
+case ALT_setFileAttributesObjectID: return field_setFileAttributesObjectID->is_value();
+case ALT_setFontAttributesObjectID: return field_setFontAttributesObjectID->is_value();
+case ALT_eraseRectangle: return field_eraseRectangle->is_value();
+case ALT_drawPoint: return field_drawPoint->is_value();
+case ALT_drawLine: return field_drawLine->is_value();
+case ALT_drawRectangle: return field_drawRectangle->is_value();
+case ALT_drawClosedEllipse: return field_drawClosedEllipse->is_value();
+case ALT_drawPolygon: return field_drawPolygon->is_value();
+case ALT_drawText: return field_drawText->is_value();
+case ALT_panViewport: return field_panViewport->is_value();
+case ALT_zoomViewport: return field_zoomViewport->is_value();
+case ALT_panAndZoomViewport: return field_panAndZoomViewport->is_value();
+case ALT_changeViewportSize: return field_changeViewportSize->is_value();
+case ALT_drawVTObject: return field_drawVTObject->is_value();
+case ALT_copyCanvasToPictureGraphic: return field_copyCanvasToPictureGraphic->is_value();
+case ALT_copyViewportToPictureGraphic: return field_copyViewportToPictureGraphic->is_value();
+default: TTCN_error("Invalid selection in union is_bound");}
+}
+
+void GraphicsContextReq__union::clean_up()
+{
+switch (union_selection) {
+case ALT_setGraphicsCursor:
+  delete field_setGraphicsCursor;
+  break;
+case ALT_moveGraphicsCursor:
+  delete field_moveGraphicsCursor;
+  break;
+case ALT_setForegroundColour:
+  delete field_setForegroundColour;
+  break;
+case ALT_setBackgroundColour:
+  delete field_setBackgroundColour;
+  break;
+case ALT_setLineAttributesObjectID:
+  delete field_setLineAttributesObjectID;
+  break;
+case ALT_setFileAttributesObjectID:
+  delete field_setFileAttributesObjectID;
+  break;
+case ALT_setFontAttributesObjectID:
+  delete field_setFontAttributesObjectID;
+  break;
+case ALT_eraseRectangle:
+  delete field_eraseRectangle;
+  break;
+case ALT_drawPoint:
+  delete field_drawPoint;
+  break;
+case ALT_drawLine:
+  delete field_drawLine;
+  break;
+case ALT_drawRectangle:
+  delete field_drawRectangle;
+  break;
+case ALT_drawClosedEllipse:
+  delete field_drawClosedEllipse;
+  break;
+case ALT_drawPolygon:
+  delete field_drawPolygon;
+  break;
+case ALT_drawText:
+  delete field_drawText;
+  break;
+case ALT_panViewport:
+  delete field_panViewport;
+  break;
+case ALT_zoomViewport:
+  delete field_zoomViewport;
+  break;
+case ALT_panAndZoomViewport:
+  delete field_panAndZoomViewport;
+  break;
+case ALT_changeViewportSize:
+  delete field_changeViewportSize;
+  break;
+case ALT_drawVTObject:
+  delete field_drawVTObject;
+  break;
+case ALT_copyCanvasToPictureGraphic:
+  delete field_copyCanvasToPictureGraphic;
+  break;
+case ALT_copyViewportToPictureGraphic:
+  delete field_copyViewportToPictureGraphic;
+  break;
+default:
+  break;
+}
+union_selection = UNBOUND_VALUE;
+}
+
+void GraphicsContextReq__union::log() const
+{
+switch (union_selection) {
+case ALT_setGraphicsCursor:
+TTCN_Logger::log_event_str("{ setGraphicsCursor := ");
+field_setGraphicsCursor->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_moveGraphicsCursor:
+TTCN_Logger::log_event_str("{ moveGraphicsCursor := ");
+field_moveGraphicsCursor->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_setForegroundColour:
+TTCN_Logger::log_event_str("{ setForegroundColour := ");
+field_setForegroundColour->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_setBackgroundColour:
+TTCN_Logger::log_event_str("{ setBackgroundColour := ");
+field_setBackgroundColour->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_setLineAttributesObjectID:
+TTCN_Logger::log_event_str("{ setLineAttributesObjectID := ");
+field_setLineAttributesObjectID->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_setFileAttributesObjectID:
+TTCN_Logger::log_event_str("{ setFileAttributesObjectID := ");
+field_setFileAttributesObjectID->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_setFontAttributesObjectID:
+TTCN_Logger::log_event_str("{ setFontAttributesObjectID := ");
+field_setFontAttributesObjectID->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_eraseRectangle:
+TTCN_Logger::log_event_str("{ eraseRectangle := ");
+field_eraseRectangle->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_drawPoint:
+TTCN_Logger::log_event_str("{ drawPoint := ");
+field_drawPoint->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_drawLine:
+TTCN_Logger::log_event_str("{ drawLine := ");
+field_drawLine->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_drawRectangle:
+TTCN_Logger::log_event_str("{ drawRectangle := ");
+field_drawRectangle->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_drawClosedEllipse:
+TTCN_Logger::log_event_str("{ drawClosedEllipse := ");
+field_drawClosedEllipse->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_drawPolygon:
+TTCN_Logger::log_event_str("{ drawPolygon := ");
+field_drawPolygon->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_drawText:
+TTCN_Logger::log_event_str("{ drawText := ");
+field_drawText->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_panViewport:
+TTCN_Logger::log_event_str("{ panViewport := ");
+field_panViewport->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_zoomViewport:
+TTCN_Logger::log_event_str("{ zoomViewport := ");
+field_zoomViewport->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_panAndZoomViewport:
+TTCN_Logger::log_event_str("{ panAndZoomViewport := ");
+field_panAndZoomViewport->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_changeViewportSize:
+TTCN_Logger::log_event_str("{ changeViewportSize := ");
+field_changeViewportSize->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_drawVTObject:
+TTCN_Logger::log_event_str("{ drawVTObject := ");
+field_drawVTObject->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_copyCanvasToPictureGraphic:
+TTCN_Logger::log_event_str("{ copyCanvasToPictureGraphic := ");
+field_copyCanvasToPictureGraphic->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_copyViewportToPictureGraphic:
+TTCN_Logger::log_event_str("{ copyViewportToPictureGraphic := ");
+field_copyViewportToPictureGraphic->log();
+TTCN_Logger::log_event_str(" }");
+break;
+default:
+TTCN_Logger::log_event_unbound();
+}
+}
+
+void GraphicsContextReq__union::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, "setGraphicsCursor")) {
+    setGraphicsCursor().set_param(*mp_last);
+    if (!setGraphicsCursor().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "moveGraphicsCursor")) {
+    moveGraphicsCursor().set_param(*mp_last);
+    if (!moveGraphicsCursor().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "setForegroundColour")) {
+    setForegroundColour().set_param(*mp_last);
+    if (!setForegroundColour().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "setBackgroundColour")) {
+    setBackgroundColour().set_param(*mp_last);
+    if (!setBackgroundColour().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "setLineAttributesObjectID")) {
+    setLineAttributesObjectID().set_param(*mp_last);
+    if (!setLineAttributesObjectID().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "setFileAttributesObjectID")) {
+    setFileAttributesObjectID().set_param(*mp_last);
+    if (!setFileAttributesObjectID().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "setFontAttributesObjectID")) {
+    setFontAttributesObjectID().set_param(*mp_last);
+    if (!setFontAttributesObjectID().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "eraseRectangle")) {
+    eraseRectangle().set_param(*mp_last);
+    if (!eraseRectangle().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "drawPoint")) {
+    drawPoint().set_param(*mp_last);
+    if (!drawPoint().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "drawLine")) {
+    drawLine().set_param(*mp_last);
+    if (!drawLine().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "drawRectangle")) {
+    drawRectangle().set_param(*mp_last);
+    if (!drawRectangle().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "drawClosedEllipse")) {
+    drawClosedEllipse().set_param(*mp_last);
+    if (!drawClosedEllipse().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "drawPolygon")) {
+    drawPolygon().set_param(*mp_last);
+    if (!drawPolygon().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "drawText")) {
+    drawText().set_param(*mp_last);
+    if (!drawText().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "panViewport")) {
+    panViewport().set_param(*mp_last);
+    if (!panViewport().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "zoomViewport")) {
+    zoomViewport().set_param(*mp_last);
+    if (!zoomViewport().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "panAndZoomViewport")) {
+    panAndZoomViewport().set_param(*mp_last);
+    if (!panAndZoomViewport().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "changeViewportSize")) {
+    changeViewportSize().set_param(*mp_last);
+    if (!changeViewportSize().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "drawVTObject")) {
+    drawVTObject().set_param(*mp_last);
+    if (!drawVTObject().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "copyCanvasToPictureGraphic")) {
+    copyCanvasToPictureGraphic().set_param(*mp_last);
+    if (!copyCanvasToPictureGraphic().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "copyViewportToPictureGraphic")) {
+    copyViewportToPictureGraphic().set_param(*mp_last);
+    if (!copyViewportToPictureGraphic().is_bound()) clean_up();
+    return;
+  }
+  mp_last->error("Field %s does not exist in type @IsobusVTMessageTypes.GraphicsContextReq_union.", last_name);
+}
+
+void GraphicsContextReq__union::set_implicit_omit()
+{
+switch (union_selection) {
+case ALT_setGraphicsCursor:
+field_setGraphicsCursor->set_implicit_omit(); break;
+case ALT_moveGraphicsCursor:
+field_moveGraphicsCursor->set_implicit_omit(); break;
+case ALT_setForegroundColour:
+field_setForegroundColour->set_implicit_omit(); break;
+case ALT_setBackgroundColour:
+field_setBackgroundColour->set_implicit_omit(); break;
+case ALT_setLineAttributesObjectID:
+field_setLineAttributesObjectID->set_implicit_omit(); break;
+case ALT_setFileAttributesObjectID:
+field_setFileAttributesObjectID->set_implicit_omit(); break;
+case ALT_setFontAttributesObjectID:
+field_setFontAttributesObjectID->set_implicit_omit(); break;
+case ALT_eraseRectangle:
+field_eraseRectangle->set_implicit_omit(); break;
+case ALT_drawPoint:
+field_drawPoint->set_implicit_omit(); break;
+case ALT_drawLine:
+field_drawLine->set_implicit_omit(); break;
+case ALT_drawRectangle:
+field_drawRectangle->set_implicit_omit(); break;
+case ALT_drawClosedEllipse:
+field_drawClosedEllipse->set_implicit_omit(); break;
+case ALT_drawPolygon:
+field_drawPolygon->set_implicit_omit(); break;
+case ALT_drawText:
+field_drawText->set_implicit_omit(); break;
+case ALT_panViewport:
+field_panViewport->set_implicit_omit(); break;
+case ALT_zoomViewport:
+field_zoomViewport->set_implicit_omit(); break;
+case ALT_panAndZoomViewport:
+field_panAndZoomViewport->set_implicit_omit(); break;
+case ALT_changeViewportSize:
+field_changeViewportSize->set_implicit_omit(); break;
+case ALT_drawVTObject:
+field_drawVTObject->set_implicit_omit(); break;
+case ALT_copyCanvasToPictureGraphic:
+field_copyCanvasToPictureGraphic->set_implicit_omit(); break;
+case ALT_copyViewportToPictureGraphic:
+field_copyViewportToPictureGraphic->set_implicit_omit(); break;
+default: break;
+}
+}
+
+void GraphicsContextReq__union::encode_text(Text_Buf& text_buf) const
+{
+text_buf.push_int(union_selection);
+switch (union_selection) {
+case ALT_setGraphicsCursor:
+field_setGraphicsCursor->encode_text(text_buf);
+break;
+case ALT_moveGraphicsCursor:
+field_moveGraphicsCursor->encode_text(text_buf);
+break;
+case ALT_setForegroundColour:
+field_setForegroundColour->encode_text(text_buf);
+break;
+case ALT_setBackgroundColour:
+field_setBackgroundColour->encode_text(text_buf);
+break;
+case ALT_setLineAttributesObjectID:
+field_setLineAttributesObjectID->encode_text(text_buf);
+break;
+case ALT_setFileAttributesObjectID:
+field_setFileAttributesObjectID->encode_text(text_buf);
+break;
+case ALT_setFontAttributesObjectID:
+field_setFontAttributesObjectID->encode_text(text_buf);
+break;
+case ALT_eraseRectangle:
+field_eraseRectangle->encode_text(text_buf);
+break;
+case ALT_drawPoint:
+field_drawPoint->encode_text(text_buf);
+break;
+case ALT_drawLine:
+field_drawLine->encode_text(text_buf);
+break;
+case ALT_drawRectangle:
+field_drawRectangle->encode_text(text_buf);
+break;
+case ALT_drawClosedEllipse:
+field_drawClosedEllipse->encode_text(text_buf);
+break;
+case ALT_drawPolygon:
+field_drawPolygon->encode_text(text_buf);
+break;
+case ALT_drawText:
+field_drawText->encode_text(text_buf);
+break;
+case ALT_panViewport:
+field_panViewport->encode_text(text_buf);
+break;
+case ALT_zoomViewport:
+field_zoomViewport->encode_text(text_buf);
+break;
+case ALT_panAndZoomViewport:
+field_panAndZoomViewport->encode_text(text_buf);
+break;
+case ALT_changeViewportSize:
+field_changeViewportSize->encode_text(text_buf);
+break;
+case ALT_drawVTObject:
+field_drawVTObject->encode_text(text_buf);
+break;
+case ALT_copyCanvasToPictureGraphic:
+field_copyCanvasToPictureGraphic->encode_text(text_buf);
+break;
+case ALT_copyViewportToPictureGraphic:
+field_copyViewportToPictureGraphic->encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an unbound value of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+}
+}
+
+void GraphicsContextReq__union::decode_text(Text_Buf& text_buf)
+{
+switch ((union_selection_type)text_buf.pull_int().get_val()) {
+case ALT_setGraphicsCursor:
+setGraphicsCursor().decode_text(text_buf);
+break;
+case ALT_moveGraphicsCursor:
+moveGraphicsCursor().decode_text(text_buf);
+break;
+case ALT_setForegroundColour:
+setForegroundColour().decode_text(text_buf);
+break;
+case ALT_setBackgroundColour:
+setBackgroundColour().decode_text(text_buf);
+break;
+case ALT_setLineAttributesObjectID:
+setLineAttributesObjectID().decode_text(text_buf);
+break;
+case ALT_setFileAttributesObjectID:
+setFileAttributesObjectID().decode_text(text_buf);
+break;
+case ALT_setFontAttributesObjectID:
+setFontAttributesObjectID().decode_text(text_buf);
+break;
+case ALT_eraseRectangle:
+eraseRectangle().decode_text(text_buf);
+break;
+case ALT_drawPoint:
+drawPoint().decode_text(text_buf);
+break;
+case ALT_drawLine:
+drawLine().decode_text(text_buf);
+break;
+case ALT_drawRectangle:
+drawRectangle().decode_text(text_buf);
+break;
+case ALT_drawClosedEllipse:
+drawClosedEllipse().decode_text(text_buf);
+break;
+case ALT_drawPolygon:
+drawPolygon().decode_text(text_buf);
+break;
+case ALT_drawText:
+drawText().decode_text(text_buf);
+break;
+case ALT_panViewport:
+panViewport().decode_text(text_buf);
+break;
+case ALT_zoomViewport:
+zoomViewport().decode_text(text_buf);
+break;
+case ALT_panAndZoomViewport:
+panAndZoomViewport().decode_text(text_buf);
+break;
+case ALT_changeViewportSize:
+changeViewportSize().decode_text(text_buf);
+break;
+case ALT_drawVTObject:
+drawVTObject().decode_text(text_buf);
+break;
+case ALT_copyCanvasToPictureGraphic:
+copyCanvasToPictureGraphic().decode_text(text_buf);
+break;
+case ALT_copyViewportToPictureGraphic:
+copyViewportToPictureGraphic().decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+}
+}
+
+void GraphicsContextReq__union::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void GraphicsContextReq__union::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int GraphicsContextReq__union::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, SetGraphicsCursor_descr_.raw->forceomit);
+      decoded_length = setGraphicsCursor().RAW_decode(SetGraphicsCursor_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, MoveGraphicsCursor_descr_.raw->forceomit);
+      decoded_length = moveGraphicsCursor().RAW_decode(MoveGraphicsCursor_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, SetForegroundColour_descr_.raw->forceomit);
+      decoded_length = setForegroundColour().RAW_decode(SetForegroundColour_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 3: {
+      RAW_Force_Omit field_force_omit(3, force_omit, SetBackgroundColour_descr_.raw->forceomit);
+      decoded_length = setBackgroundColour().RAW_decode(SetBackgroundColour_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 4: {
+      RAW_Force_Omit field_force_omit(4, force_omit, SetLineAttributesObjectID_descr_.raw->forceomit);
+      decoded_length = setLineAttributesObjectID().RAW_decode(SetLineAttributesObjectID_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 5: {
+      RAW_Force_Omit field_force_omit(5, force_omit, SetFileAttributesObjectID_descr_.raw->forceomit);
+      decoded_length = setFileAttributesObjectID().RAW_decode(SetFileAttributesObjectID_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 6: {
+      RAW_Force_Omit field_force_omit(6, force_omit, SetFontAttributesObjectID_descr_.raw->forceomit);
+      decoded_length = setFontAttributesObjectID().RAW_decode(SetFontAttributesObjectID_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 7: {
+      RAW_Force_Omit field_force_omit(7, force_omit, EraseRectangle_descr_.raw->forceomit);
+      decoded_length = eraseRectangle().RAW_decode(EraseRectangle_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 8: {
+      RAW_Force_Omit field_force_omit(8, force_omit, DrawPoint_descr_.raw->forceomit);
+      decoded_length = drawPoint().RAW_decode(DrawPoint_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 9: {
+      RAW_Force_Omit field_force_omit(9, force_omit, DrawLine_descr_.raw->forceomit);
+      decoded_length = drawLine().RAW_decode(DrawLine_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 10: {
+      RAW_Force_Omit field_force_omit(10, force_omit, DrawRectangle_descr_.raw->forceomit);
+      decoded_length = drawRectangle().RAW_decode(DrawRectangle_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 11: {
+      RAW_Force_Omit field_force_omit(11, force_omit, DrawClosedEllipse_descr_.raw->forceomit);
+      decoded_length = drawClosedEllipse().RAW_decode(DrawClosedEllipse_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 12: {
+      RAW_Force_Omit field_force_omit(12, force_omit, DrawPolygon_descr_.raw->forceomit);
+      decoded_length = drawPolygon().RAW_decode(DrawPolygon_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 13: {
+      RAW_Force_Omit field_force_omit(13, force_omit, DrawText_descr_.raw->forceomit);
+      decoded_length = drawText().RAW_decode(DrawText_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 14: {
+      RAW_Force_Omit field_force_omit(14, force_omit, PanViewport_descr_.raw->forceomit);
+      decoded_length = panViewport().RAW_decode(PanViewport_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 15: {
+      RAW_Force_Omit field_force_omit(15, force_omit, ZoomViewport_descr_.raw->forceomit);
+      decoded_length = zoomViewport().RAW_decode(ZoomViewport_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 16: {
+      RAW_Force_Omit field_force_omit(16, force_omit, PanAndZoomViewport_descr_.raw->forceomit);
+      decoded_length = panAndZoomViewport().RAW_decode(PanAndZoomViewport_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 17: {
+      RAW_Force_Omit field_force_omit(17, force_omit, ChangeViewportSize_descr_.raw->forceomit);
+      decoded_length = changeViewportSize().RAW_decode(ChangeViewportSize_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 18: {
+      RAW_Force_Omit field_force_omit(18, force_omit, DrawVTObject_descr_.raw->forceomit);
+      decoded_length = drawVTObject().RAW_decode(DrawVTObject_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 19: {
+      RAW_Force_Omit field_force_omit(19, force_omit, CopyCanvasToPictureGraphic_descr_.raw->forceomit);
+      decoded_length = copyCanvasToPictureGraphic().RAW_decode(CopyCanvasToPictureGraphic_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 20: {
+      RAW_Force_Omit field_force_omit(20, force_omit, CopyViewportToPictureGraphic_descr_.raw->forceomit);
+      decoded_length = copyViewportToPictureGraphic().RAW_decode(CopyViewportToPictureGraphic_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, SetGraphicsCursor_descr_.raw->forceomit);
+      decoded_length = setGraphicsCursor().RAW_decode(SetGraphicsCursor_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, MoveGraphicsCursor_descr_.raw->forceomit);
+      decoded_length = moveGraphicsCursor().RAW_decode(MoveGraphicsCursor_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, SetForegroundColour_descr_.raw->forceomit);
+      decoded_length = setForegroundColour().RAW_decode(SetForegroundColour_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;
+       }
+      p_buf.set_pos_bit(starting_pos);
+      RAW_Force_Omit field_3_force_omit(3, force_omit, SetBackgroundColour_descr_.raw->forceomit);
+      decoded_length = setBackgroundColour().RAW_decode(SetBackgroundColour_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_3_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_4_force_omit(4, force_omit, SetLineAttributesObjectID_descr_.raw->forceomit);
+      decoded_length = setLineAttributesObjectID().RAW_decode(SetLineAttributesObjectID_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_4_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_5_force_omit(5, force_omit, SetFileAttributesObjectID_descr_.raw->forceomit);
+      decoded_length = setFileAttributesObjectID().RAW_decode(SetFileAttributesObjectID_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_5_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_6_force_omit(6, force_omit, SetFontAttributesObjectID_descr_.raw->forceomit);
+      decoded_length = setFontAttributesObjectID().RAW_decode(SetFontAttributesObjectID_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_6_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_7_force_omit(7, force_omit, EraseRectangle_descr_.raw->forceomit);
+      decoded_length = eraseRectangle().RAW_decode(EraseRectangle_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_7_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_8_force_omit(8, force_omit, DrawPoint_descr_.raw->forceomit);
+      decoded_length = drawPoint().RAW_decode(DrawPoint_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_8_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_9_force_omit(9, force_omit, DrawLine_descr_.raw->forceomit);
+      decoded_length = drawLine().RAW_decode(DrawLine_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_9_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_10_force_omit(10, force_omit, DrawRectangle_descr_.raw->forceomit);
+      decoded_length = drawRectangle().RAW_decode(DrawRectangle_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_10_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_11_force_omit(11, force_omit, DrawClosedEllipse_descr_.raw->forceomit);
+      decoded_length = drawClosedEllipse().RAW_decode(DrawClosedEllipse_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_11_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_12_force_omit(12, force_omit, DrawPolygon_descr_.raw->forceomit);
+      decoded_length = drawPolygon().RAW_decode(DrawPolygon_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_12_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_13_force_omit(13, force_omit, DrawText_descr_.raw->forceomit);
+      decoded_length = drawText().RAW_decode(DrawText_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_13_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_14_force_omit(14, force_omit, PanViewport_descr_.raw->forceomit);
+      decoded_length = panViewport().RAW_decode(PanViewport_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_14_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_15_force_omit(15, force_omit, ZoomViewport_descr_.raw->forceomit);
+      decoded_length = zoomViewport().RAW_decode(ZoomViewport_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_15_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_16_force_omit(16, force_omit, PanAndZoomViewport_descr_.raw->forceomit);
+      decoded_length = panAndZoomViewport().RAW_decode(PanAndZoomViewport_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_16_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_17_force_omit(17, force_omit, ChangeViewportSize_descr_.raw->forceomit);
+      decoded_length = changeViewportSize().RAW_decode(ChangeViewportSize_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_17_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_18_force_omit(18, force_omit, DrawVTObject_descr_.raw->forceomit);
+      decoded_length = drawVTObject().RAW_decode(DrawVTObject_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_18_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_19_force_omit(19, force_omit, CopyCanvasToPictureGraphic_descr_.raw->forceomit);
+      decoded_length = copyCanvasToPictureGraphic().RAW_decode(CopyCanvasToPictureGraphic_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_19_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_20_force_omit(20, force_omit, CopyViewportToPictureGraphic_descr_.raw->forceomit);
+      decoded_length = copyViewportToPictureGraphic().RAW_decode(CopyViewportToPictureGraphic_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_20_force_omit);
+      if (decoded_length >= 0) {
+         return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+       }
+ }
+ clean_up();
+ return -1;
+}
+
+int GraphicsContextReq__union::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const
+{
+  int encoded_length = 0;
+  myleaf.isleaf = FALSE;
+  myleaf.body.node.num_of_nodes = 21;  myleaf.body.node.nodes = init_nodes_of_enc_tree(21);
+  memset(myleaf.body.node.nodes, 0, 21 * sizeof(RAW_enc_tree *));
+  switch (union_selection) {
+  case ALT_setGraphicsCursor:
+    myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 0, SetGraphicsCursor_descr_.raw);
+    encoded_length = field_setGraphicsCursor->RAW_encode(SetGraphicsCursor_descr_, *myleaf.body.node.nodes[0]);
+    myleaf.body.node.nodes[0]->coding_descr = &SetGraphicsCursor_descr_;
+    break;
+  case ALT_moveGraphicsCursor:
+    myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 1, MoveGraphicsCursor_descr_.raw);
+    encoded_length = field_moveGraphicsCursor->RAW_encode(MoveGraphicsCursor_descr_, *myleaf.body.node.nodes[1]);
+    myleaf.body.node.nodes[1]->coding_descr = &MoveGraphicsCursor_descr_;
+    break;
+  case ALT_setForegroundColour:
+    myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 2, SetForegroundColour_descr_.raw);
+    encoded_length = field_setForegroundColour->RAW_encode(SetForegroundColour_descr_, *myleaf.body.node.nodes[2]);
+    myleaf.body.node.nodes[2]->coding_descr = &SetForegroundColour_descr_;
+    break;
+  case ALT_setBackgroundColour:
+    myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 3, SetBackgroundColour_descr_.raw);
+    encoded_length = field_setBackgroundColour->RAW_encode(SetBackgroundColour_descr_, *myleaf.body.node.nodes[3]);
+    myleaf.body.node.nodes[3]->coding_descr = &SetBackgroundColour_descr_;
+    break;
+  case ALT_setLineAttributesObjectID:
+    myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 4, SetLineAttributesObjectID_descr_.raw);
+    encoded_length = field_setLineAttributesObjectID->RAW_encode(SetLineAttributesObjectID_descr_, *myleaf.body.node.nodes[4]);
+    myleaf.body.node.nodes[4]->coding_descr = &SetLineAttributesObjectID_descr_;
+    break;
+  case ALT_setFileAttributesObjectID:
+    myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 5, SetFileAttributesObjectID_descr_.raw);
+    encoded_length = field_setFileAttributesObjectID->RAW_encode(SetFileAttributesObjectID_descr_, *myleaf.body.node.nodes[5]);
+    myleaf.body.node.nodes[5]->coding_descr = &SetFileAttributesObjectID_descr_;
+    break;
+  case ALT_setFontAttributesObjectID:
+    myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 6, SetFontAttributesObjectID_descr_.raw);
+    encoded_length = field_setFontAttributesObjectID->RAW_encode(SetFontAttributesObjectID_descr_, *myleaf.body.node.nodes[6]);
+    myleaf.body.node.nodes[6]->coding_descr = &SetFontAttributesObjectID_descr_;
+    break;
+  case ALT_eraseRectangle:
+    myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 7, EraseRectangle_descr_.raw);
+    encoded_length = field_eraseRectangle->RAW_encode(EraseRectangle_descr_, *myleaf.body.node.nodes[7]);
+    myleaf.body.node.nodes[7]->coding_descr = &EraseRectangle_descr_;
+    break;
+  case ALT_drawPoint:
+    myleaf.body.node.nodes[8] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 8, DrawPoint_descr_.raw);
+    encoded_length = field_drawPoint->RAW_encode(DrawPoint_descr_, *myleaf.body.node.nodes[8]);
+    myleaf.body.node.nodes[8]->coding_descr = &DrawPoint_descr_;
+    break;
+  case ALT_drawLine:
+    myleaf.body.node.nodes[9] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 9, DrawLine_descr_.raw);
+    encoded_length = field_drawLine->RAW_encode(DrawLine_descr_, *myleaf.body.node.nodes[9]);
+    myleaf.body.node.nodes[9]->coding_descr = &DrawLine_descr_;
+    break;
+  case ALT_drawRectangle:
+    myleaf.body.node.nodes[10] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 10, DrawRectangle_descr_.raw);
+    encoded_length = field_drawRectangle->RAW_encode(DrawRectangle_descr_, *myleaf.body.node.nodes[10]);
+    myleaf.body.node.nodes[10]->coding_descr = &DrawRectangle_descr_;
+    break;
+  case ALT_drawClosedEllipse:
+    myleaf.body.node.nodes[11] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 11, DrawClosedEllipse_descr_.raw);
+    encoded_length = field_drawClosedEllipse->RAW_encode(DrawClosedEllipse_descr_, *myleaf.body.node.nodes[11]);
+    myleaf.body.node.nodes[11]->coding_descr = &DrawClosedEllipse_descr_;
+    break;
+  case ALT_drawPolygon:
+    myleaf.body.node.nodes[12] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 12, DrawPolygon_descr_.raw);
+    encoded_length = field_drawPolygon->RAW_encode(DrawPolygon_descr_, *myleaf.body.node.nodes[12]);
+    myleaf.body.node.nodes[12]->coding_descr = &DrawPolygon_descr_;
+    break;
+  case ALT_drawText:
+    myleaf.body.node.nodes[13] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 13, DrawText_descr_.raw);
+    encoded_length = field_drawText->RAW_encode(DrawText_descr_, *myleaf.body.node.nodes[13]);
+    myleaf.body.node.nodes[13]->coding_descr = &DrawText_descr_;
+    break;
+  case ALT_panViewport:
+    myleaf.body.node.nodes[14] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 14, PanViewport_descr_.raw);
+    encoded_length = field_panViewport->RAW_encode(PanViewport_descr_, *myleaf.body.node.nodes[14]);
+    myleaf.body.node.nodes[14]->coding_descr = &PanViewport_descr_;
+    break;
+  case ALT_zoomViewport:
+    myleaf.body.node.nodes[15] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 15, ZoomViewport_descr_.raw);
+    encoded_length = field_zoomViewport->RAW_encode(ZoomViewport_descr_, *myleaf.body.node.nodes[15]);
+    myleaf.body.node.nodes[15]->coding_descr = &ZoomViewport_descr_;
+    break;
+  case ALT_panAndZoomViewport:
+    myleaf.body.node.nodes[16] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 16, PanAndZoomViewport_descr_.raw);
+    encoded_length = field_panAndZoomViewport->RAW_encode(PanAndZoomViewport_descr_, *myleaf.body.node.nodes[16]);
+    myleaf.body.node.nodes[16]->coding_descr = &PanAndZoomViewport_descr_;
+    break;
+  case ALT_changeViewportSize:
+    myleaf.body.node.nodes[17] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 17, ChangeViewportSize_descr_.raw);
+    encoded_length = field_changeViewportSize->RAW_encode(ChangeViewportSize_descr_, *myleaf.body.node.nodes[17]);
+    myleaf.body.node.nodes[17]->coding_descr = &ChangeViewportSize_descr_;
+    break;
+  case ALT_drawVTObject:
+    myleaf.body.node.nodes[18] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 18, DrawVTObject_descr_.raw);
+    encoded_length = field_drawVTObject->RAW_encode(DrawVTObject_descr_, *myleaf.body.node.nodes[18]);
+    myleaf.body.node.nodes[18]->coding_descr = &DrawVTObject_descr_;
+    break;
+  case ALT_copyCanvasToPictureGraphic:
+    myleaf.body.node.nodes[19] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 19, CopyCanvasToPictureGraphic_descr_.raw);
+    encoded_length = field_copyCanvasToPictureGraphic->RAW_encode(CopyCanvasToPictureGraphic_descr_, *myleaf.body.node.nodes[19]);
+    myleaf.body.node.nodes[19]->coding_descr = &CopyCanvasToPictureGraphic_descr_;
+    break;
+  case ALT_copyViewportToPictureGraphic:
+    myleaf.body.node.nodes[20] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 20, CopyViewportToPictureGraphic_descr_.raw);
+    encoded_length = field_copyViewportToPictureGraphic->RAW_encode(CopyViewportToPictureGraphic_descr_, *myleaf.body.node.nodes[20]);
+    myleaf.body.node.nodes[20]->coding_descr = &CopyViewportToPictureGraphic_descr_;
+    break;
+  default:
+    TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
+  }
+  return encoded_length;
+}
+
+void GraphicsContextReq__union_template::copy_value(const GraphicsContextReq__union& other_value)
+{
+single_value.union_selection = other_value.get_selection();
+switch (single_value.union_selection) {
+case GraphicsContextReq__union::ALT_setGraphicsCursor:
+single_value.field_setGraphicsCursor = new SetGraphicsCursor_template(other_value.setGraphicsCursor());
+break;
+case GraphicsContextReq__union::ALT_moveGraphicsCursor:
+single_value.field_moveGraphicsCursor = new MoveGraphicsCursor_template(other_value.moveGraphicsCursor());
+break;
+case GraphicsContextReq__union::ALT_setForegroundColour:
+single_value.field_setForegroundColour = new SetForegroundColour_template(other_value.setForegroundColour());
+break;
+case GraphicsContextReq__union::ALT_setBackgroundColour:
+single_value.field_setBackgroundColour = new SetBackgroundColour_template(other_value.setBackgroundColour());
+break;
+case GraphicsContextReq__union::ALT_setLineAttributesObjectID:
+single_value.field_setLineAttributesObjectID = new SetLineAttributesObjectID_template(other_value.setLineAttributesObjectID());
+break;
+case GraphicsContextReq__union::ALT_setFileAttributesObjectID:
+single_value.field_setFileAttributesObjectID = new SetFileAttributesObjectID_template(other_value.setFileAttributesObjectID());
+break;
+case GraphicsContextReq__union::ALT_setFontAttributesObjectID:
+single_value.field_setFontAttributesObjectID = new SetFontAttributesObjectID_template(other_value.setFontAttributesObjectID());
+break;
+case GraphicsContextReq__union::ALT_eraseRectangle:
+single_value.field_eraseRectangle = new EraseRectangle_template(other_value.eraseRectangle());
+break;
+case GraphicsContextReq__union::ALT_drawPoint:
+single_value.field_drawPoint = new DrawPoint_template(other_value.drawPoint());
+break;
+case GraphicsContextReq__union::ALT_drawLine:
+single_value.field_drawLine = new DrawLine_template(other_value.drawLine());
+break;
+case GraphicsContextReq__union::ALT_drawRectangle:
+single_value.field_drawRectangle = new DrawRectangle_template(other_value.drawRectangle());
+break;
+case GraphicsContextReq__union::ALT_drawClosedEllipse:
+single_value.field_drawClosedEllipse = new DrawClosedEllipse_template(other_value.drawClosedEllipse());
+break;
+case GraphicsContextReq__union::ALT_drawPolygon:
+single_value.field_drawPolygon = new DrawPolygon_template(other_value.drawPolygon());
+break;
+case GraphicsContextReq__union::ALT_drawText:
+single_value.field_drawText = new DrawText_template(other_value.drawText());
+break;
+case GraphicsContextReq__union::ALT_panViewport:
+single_value.field_panViewport = new PanViewport_template(other_value.panViewport());
+break;
+case GraphicsContextReq__union::ALT_zoomViewport:
+single_value.field_zoomViewport = new ZoomViewport_template(other_value.zoomViewport());
+break;
+case GraphicsContextReq__union::ALT_panAndZoomViewport:
+single_value.field_panAndZoomViewport = new PanAndZoomViewport_template(other_value.panAndZoomViewport());
+break;
+case GraphicsContextReq__union::ALT_changeViewportSize:
+single_value.field_changeViewportSize = new ChangeViewportSize_template(other_value.changeViewportSize());
+break;
+case GraphicsContextReq__union::ALT_drawVTObject:
+single_value.field_drawVTObject = new DrawVTObject_template(other_value.drawVTObject());
+break;
+case GraphicsContextReq__union::ALT_copyCanvasToPictureGraphic:
+single_value.field_copyCanvasToPictureGraphic = new CopyCanvasToPictureGraphic_template(other_value.copyCanvasToPictureGraphic());
+break;
+case GraphicsContextReq__union::ALT_copyViewportToPictureGraphic:
+single_value.field_copyViewportToPictureGraphic = new CopyViewportToPictureGraphic_template(other_value.copyViewportToPictureGraphic());
+break;
+default:
+TTCN_error("Initializing a template with an unbound value of type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void GraphicsContextReq__union_template::copy_template(const GraphicsContextReq__union_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 GraphicsContextReq__union::ALT_setGraphicsCursor:
+single_value.field_setGraphicsCursor = new SetGraphicsCursor_template(*other_value.single_value.field_setGraphicsCursor);
+break;
+case GraphicsContextReq__union::ALT_moveGraphicsCursor:
+single_value.field_moveGraphicsCursor = new MoveGraphicsCursor_template(*other_value.single_value.field_moveGraphicsCursor);
+break;
+case GraphicsContextReq__union::ALT_setForegroundColour:
+single_value.field_setForegroundColour = new SetForegroundColour_template(*other_value.single_value.field_setForegroundColour);
+break;
+case GraphicsContextReq__union::ALT_setBackgroundColour:
+single_value.field_setBackgroundColour = new SetBackgroundColour_template(*other_value.single_value.field_setBackgroundColour);
+break;
+case GraphicsContextReq__union::ALT_setLineAttributesObjectID:
+single_value.field_setLineAttributesObjectID = new SetLineAttributesObjectID_template(*other_value.single_value.field_setLineAttributesObjectID);
+break;
+case GraphicsContextReq__union::ALT_setFileAttributesObjectID:
+single_value.field_setFileAttributesObjectID = new SetFileAttributesObjectID_template(*other_value.single_value.field_setFileAttributesObjectID);
+break;
+case GraphicsContextReq__union::ALT_setFontAttributesObjectID:
+single_value.field_setFontAttributesObjectID = new SetFontAttributesObjectID_template(*other_value.single_value.field_setFontAttributesObjectID);
+break;
+case GraphicsContextReq__union::ALT_eraseRectangle:
+single_value.field_eraseRectangle = new EraseRectangle_template(*other_value.single_value.field_eraseRectangle);
+break;
+case GraphicsContextReq__union::ALT_drawPoint:
+single_value.field_drawPoint = new DrawPoint_template(*other_value.single_value.field_drawPoint);
+break;
+case GraphicsContextReq__union::ALT_drawLine:
+single_value.field_drawLine = new DrawLine_template(*other_value.single_value.field_drawLine);
+break;
+case GraphicsContextReq__union::ALT_drawRectangle:
+single_value.field_drawRectangle = new DrawRectangle_template(*other_value.single_value.field_drawRectangle);
+break;
+case GraphicsContextReq__union::ALT_drawClosedEllipse:
+single_value.field_drawClosedEllipse = new DrawClosedEllipse_template(*other_value.single_value.field_drawClosedEllipse);
+break;
+case GraphicsContextReq__union::ALT_drawPolygon:
+single_value.field_drawPolygon = new DrawPolygon_template(*other_value.single_value.field_drawPolygon);
+break;
+case GraphicsContextReq__union::ALT_drawText:
+single_value.field_drawText = new DrawText_template(*other_value.single_value.field_drawText);
+break;
+case GraphicsContextReq__union::ALT_panViewport:
+single_value.field_panViewport = new PanViewport_template(*other_value.single_value.field_panViewport);
+break;
+case GraphicsContextReq__union::ALT_zoomViewport:
+single_value.field_zoomViewport = new ZoomViewport_template(*other_value.single_value.field_zoomViewport);
+break;
+case GraphicsContextReq__union::ALT_panAndZoomViewport:
+single_value.field_panAndZoomViewport = new PanAndZoomViewport_template(*other_value.single_value.field_panAndZoomViewport);
+break;
+case GraphicsContextReq__union::ALT_changeViewportSize:
+single_value.field_changeViewportSize = new ChangeViewportSize_template(*other_value.single_value.field_changeViewportSize);
+break;
+case GraphicsContextReq__union::ALT_drawVTObject:
+single_value.field_drawVTObject = new DrawVTObject_template(*other_value.single_value.field_drawVTObject);
+break;
+case GraphicsContextReq__union::ALT_copyCanvasToPictureGraphic:
+single_value.field_copyCanvasToPictureGraphic = new CopyCanvasToPictureGraphic_template(*other_value.single_value.field_copyCanvasToPictureGraphic);
+break;
+case GraphicsContextReq__union::ALT_copyViewportToPictureGraphic:
+single_value.field_copyViewportToPictureGraphic = new CopyViewportToPictureGraphic_template(*other_value.single_value.field_copyViewportToPictureGraphic);
+break;
+default:
+TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new GraphicsContextReq__union_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;
+default:
+TTCN_error("Copying an uninitialized template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+}
+set_selection(other_value);
+}
+
+GraphicsContextReq__union_template::GraphicsContextReq__union_template()
+{
+}
+
+GraphicsContextReq__union_template::GraphicsContextReq__union_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+GraphicsContextReq__union_template::GraphicsContextReq__union_template(const GraphicsContextReq__union& other_value)
+{
+copy_value(other_value);
+}
+
+GraphicsContextReq__union_template::GraphicsContextReq__union_template(const OPTIONAL<GraphicsContextReq__union>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const GraphicsContextReq__union&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of union type @IsobusVTMessageTypes.GraphicsContextReq_union from an unbound optional field.");
+}
+}
+
+GraphicsContextReq__union_template::GraphicsContextReq__union_template(const GraphicsContextReq__union_template& other_value)
+: Base_Template(){
+copy_template(other_value);
+}
+
+GraphicsContextReq__union_template::~GraphicsContextReq__union_template()
+{
+clean_up();
+}
+
+void GraphicsContextReq__union_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case GraphicsContextReq__union::ALT_setGraphicsCursor:
+delete single_value.field_setGraphicsCursor;
+break;
+case GraphicsContextReq__union::ALT_moveGraphicsCursor:
+delete single_value.field_moveGraphicsCursor;
+break;
+case GraphicsContextReq__union::ALT_setForegroundColour:
+delete single_value.field_setForegroundColour;
+break;
+case GraphicsContextReq__union::ALT_setBackgroundColour:
+delete single_value.field_setBackgroundColour;
+break;
+case GraphicsContextReq__union::ALT_setLineAttributesObjectID:
+delete single_value.field_setLineAttributesObjectID;
+break;
+case GraphicsContextReq__union::ALT_setFileAttributesObjectID:
+delete single_value.field_setFileAttributesObjectID;
+break;
+case GraphicsContextReq__union::ALT_setFontAttributesObjectID:
+delete single_value.field_setFontAttributesObjectID;
+break;
+case GraphicsContextReq__union::ALT_eraseRectangle:
+delete single_value.field_eraseRectangle;
+break;
+case GraphicsContextReq__union::ALT_drawPoint:
+delete single_value.field_drawPoint;
+break;
+case GraphicsContextReq__union::ALT_drawLine:
+delete single_value.field_drawLine;
+break;
+case GraphicsContextReq__union::ALT_drawRectangle:
+delete single_value.field_drawRectangle;
+break;
+case GraphicsContextReq__union::ALT_drawClosedEllipse:
+delete single_value.field_drawClosedEllipse;
+break;
+case GraphicsContextReq__union::ALT_drawPolygon:
+delete single_value.field_drawPolygon;
+break;
+case GraphicsContextReq__union::ALT_drawText:
+delete single_value.field_drawText;
+break;
+case GraphicsContextReq__union::ALT_panViewport:
+delete single_value.field_panViewport;
+break;
+case GraphicsContextReq__union::ALT_zoomViewport:
+delete single_value.field_zoomViewport;
+break;
+case GraphicsContextReq__union::ALT_panAndZoomViewport:
+delete single_value.field_panAndZoomViewport;
+break;
+case GraphicsContextReq__union::ALT_changeViewportSize:
+delete single_value.field_changeViewportSize;
+break;
+case GraphicsContextReq__union::ALT_drawVTObject:
+delete single_value.field_drawVTObject;
+break;
+case GraphicsContextReq__union::ALT_copyCanvasToPictureGraphic:
+delete single_value.field_copyCanvasToPictureGraphic;
+break;
+case GraphicsContextReq__union::ALT_copyViewportToPictureGraphic:
+delete single_value.field_copyViewportToPictureGraphic;
+default:
+break;
+}
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+GraphicsContextReq__union_template& GraphicsContextReq__union_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+GraphicsContextReq__union_template& GraphicsContextReq__union_template::operator=(const GraphicsContextReq__union& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+GraphicsContextReq__union_template& GraphicsContextReq__union_template::operator=(const OPTIONAL<GraphicsContextReq__union>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const GraphicsContextReq__union&)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 @IsobusVTMessageTypes.GraphicsContextReq_union.");
+}
+return *this;
+}
+
+GraphicsContextReq__union_template& GraphicsContextReq__union_template::operator=(const GraphicsContextReq__union_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean GraphicsContextReq__union_template::match(const GraphicsContextReq__union& 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:
+{
+GraphicsContextReq__union::union_selection_type value_selection = other_value.get_selection();
+if (value_selection == GraphicsContextReq__union::UNBOUND_VALUE) return FALSE;
+if (value_selection != single_value.union_selection) return FALSE;
+switch (value_selection) {
+case GraphicsContextReq__union::ALT_setGraphicsCursor:
+return single_value.field_setGraphicsCursor->match(other_value.setGraphicsCursor(), legacy);
+case GraphicsContextReq__union::ALT_moveGraphicsCursor:
+return single_value.field_moveGraphicsCursor->match(other_value.moveGraphicsCursor(), legacy);
+case GraphicsContextReq__union::ALT_setForegroundColour:
+return single_value.field_setForegroundColour->match(other_value.setForegroundColour(), legacy);
+case GraphicsContextReq__union::ALT_setBackgroundColour:
+return single_value.field_setBackgroundColour->match(other_value.setBackgroundColour(), legacy);
+case GraphicsContextReq__union::ALT_setLineAttributesObjectID:
+return single_value.field_setLineAttributesObjectID->match(other_value.setLineAttributesObjectID(), legacy);
+case GraphicsContextReq__union::ALT_setFileAttributesObjectID:
+return single_value.field_setFileAttributesObjectID->match(other_value.setFileAttributesObjectID(), legacy);
+case GraphicsContextReq__union::ALT_setFontAttributesObjectID:
+return single_value.field_setFontAttributesObjectID->match(other_value.setFontAttributesObjectID(), legacy);
+case GraphicsContextReq__union::ALT_eraseRectangle:
+return single_value.field_eraseRectangle->match(other_value.eraseRectangle(), legacy);
+case GraphicsContextReq__union::ALT_drawPoint:
+return single_value.field_drawPoint->match(other_value.drawPoint(), legacy);
+case GraphicsContextReq__union::ALT_drawLine:
+return single_value.field_drawLine->match(other_value.drawLine(), legacy);
+case GraphicsContextReq__union::ALT_drawRectangle:
+return single_value.field_drawRectangle->match(other_value.drawRectangle(), legacy);
+case GraphicsContextReq__union::ALT_drawClosedEllipse:
+return single_value.field_drawClosedEllipse->match(other_value.drawClosedEllipse(), legacy);
+case GraphicsContextReq__union::ALT_drawPolygon:
+return single_value.field_drawPolygon->match(other_value.drawPolygon(), legacy);
+case GraphicsContextReq__union::ALT_drawText:
+return single_value.field_drawText->match(other_value.drawText(), legacy);
+case GraphicsContextReq__union::ALT_panViewport:
+return single_value.field_panViewport->match(other_value.panViewport(), legacy);
+case GraphicsContextReq__union::ALT_zoomViewport:
+return single_value.field_zoomViewport->match(other_value.zoomViewport(), legacy);
+case GraphicsContextReq__union::ALT_panAndZoomViewport:
+return single_value.field_panAndZoomViewport->match(other_value.panAndZoomViewport(), legacy);
+case GraphicsContextReq__union::ALT_changeViewportSize:
+return single_value.field_changeViewportSize->match(other_value.changeViewportSize(), legacy);
+case GraphicsContextReq__union::ALT_drawVTObject:
+return single_value.field_drawVTObject->match(other_value.drawVTObject(), legacy);
+case GraphicsContextReq__union::ALT_copyCanvasToPictureGraphic:
+return single_value.field_copyCanvasToPictureGraphic->match(other_value.copyCanvasToPictureGraphic(), legacy);
+case GraphicsContextReq__union::ALT_copyViewportToPictureGraphic:
+return single_value.field_copyViewportToPictureGraphic->match(other_value.copyViewportToPictureGraphic(), legacy);
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+}
+}
+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;
+default:
+TTCN_error ("Matching an uninitialized template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+}
+return FALSE;
+}
+
+boolean GraphicsContextReq__union_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+switch (single_value.union_selection) {
+case GraphicsContextReq__union::ALT_setGraphicsCursor:
+return single_value.field_setGraphicsCursor->is_value();
+case GraphicsContextReq__union::ALT_moveGraphicsCursor:
+return single_value.field_moveGraphicsCursor->is_value();
+case GraphicsContextReq__union::ALT_setForegroundColour:
+return single_value.field_setForegroundColour->is_value();
+case GraphicsContextReq__union::ALT_setBackgroundColour:
+return single_value.field_setBackgroundColour->is_value();
+case GraphicsContextReq__union::ALT_setLineAttributesObjectID:
+return single_value.field_setLineAttributesObjectID->is_value();
+case GraphicsContextReq__union::ALT_setFileAttributesObjectID:
+return single_value.field_setFileAttributesObjectID->is_value();
+case GraphicsContextReq__union::ALT_setFontAttributesObjectID:
+return single_value.field_setFontAttributesObjectID->is_value();
+case GraphicsContextReq__union::ALT_eraseRectangle:
+return single_value.field_eraseRectangle->is_value();
+case GraphicsContextReq__union::ALT_drawPoint:
+return single_value.field_drawPoint->is_value();
+case GraphicsContextReq__union::ALT_drawLine:
+return single_value.field_drawLine->is_value();
+case GraphicsContextReq__union::ALT_drawRectangle:
+return single_value.field_drawRectangle->is_value();
+case GraphicsContextReq__union::ALT_drawClosedEllipse:
+return single_value.field_drawClosedEllipse->is_value();
+case GraphicsContextReq__union::ALT_drawPolygon:
+return single_value.field_drawPolygon->is_value();
+case GraphicsContextReq__union::ALT_drawText:
+return single_value.field_drawText->is_value();
+case GraphicsContextReq__union::ALT_panViewport:
+return single_value.field_panViewport->is_value();
+case GraphicsContextReq__union::ALT_zoomViewport:
+return single_value.field_zoomViewport->is_value();
+case GraphicsContextReq__union::ALT_panAndZoomViewport:
+return single_value.field_panAndZoomViewport->is_value();
+case GraphicsContextReq__union::ALT_changeViewportSize:
+return single_value.field_changeViewportSize->is_value();
+case GraphicsContextReq__union::ALT_drawVTObject:
+return single_value.field_drawVTObject->is_value();
+case GraphicsContextReq__union::ALT_copyCanvasToPictureGraphic:
+return single_value.field_copyCanvasToPictureGraphic->is_value();
+case GraphicsContextReq__union::ALT_copyViewportToPictureGraphic:
+return single_value.field_copyViewportToPictureGraphic->is_value();
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+}
+}
+
+GraphicsContextReq__union GraphicsContextReq__union_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 @IsobusVTMessageTypes.GraphicsContextReq_union.");
+GraphicsContextReq__union ret_val;
+switch (single_value.union_selection) {
+case GraphicsContextReq__union::ALT_setGraphicsCursor:
+ret_val.setGraphicsCursor() = single_value.field_setGraphicsCursor->valueof();
+break;
+case GraphicsContextReq__union::ALT_moveGraphicsCursor:
+ret_val.moveGraphicsCursor() = single_value.field_moveGraphicsCursor->valueof();
+break;
+case GraphicsContextReq__union::ALT_setForegroundColour:
+ret_val.setForegroundColour() = single_value.field_setForegroundColour->valueof();
+break;
+case GraphicsContextReq__union::ALT_setBackgroundColour:
+ret_val.setBackgroundColour() = single_value.field_setBackgroundColour->valueof();
+break;
+case GraphicsContextReq__union::ALT_setLineAttributesObjectID:
+ret_val.setLineAttributesObjectID() = single_value.field_setLineAttributesObjectID->valueof();
+break;
+case GraphicsContextReq__union::ALT_setFileAttributesObjectID:
+ret_val.setFileAttributesObjectID() = single_value.field_setFileAttributesObjectID->valueof();
+break;
+case GraphicsContextReq__union::ALT_setFontAttributesObjectID:
+ret_val.setFontAttributesObjectID() = single_value.field_setFontAttributesObjectID->valueof();
+break;
+case GraphicsContextReq__union::ALT_eraseRectangle:
+ret_val.eraseRectangle() = single_value.field_eraseRectangle->valueof();
+break;
+case GraphicsContextReq__union::ALT_drawPoint:
+ret_val.drawPoint() = single_value.field_drawPoint->valueof();
+break;
+case GraphicsContextReq__union::ALT_drawLine:
+ret_val.drawLine() = single_value.field_drawLine->valueof();
+break;
+case GraphicsContextReq__union::ALT_drawRectangle:
+ret_val.drawRectangle() = single_value.field_drawRectangle->valueof();
+break;
+case GraphicsContextReq__union::ALT_drawClosedEllipse:
+ret_val.drawClosedEllipse() = single_value.field_drawClosedEllipse->valueof();
+break;
+case GraphicsContextReq__union::ALT_drawPolygon:
+ret_val.drawPolygon() = single_value.field_drawPolygon->valueof();
+break;
+case GraphicsContextReq__union::ALT_drawText:
+ret_val.drawText() = single_value.field_drawText->valueof();
+break;
+case GraphicsContextReq__union::ALT_panViewport:
+ret_val.panViewport() = single_value.field_panViewport->valueof();
+break;
+case GraphicsContextReq__union::ALT_zoomViewport:
+ret_val.zoomViewport() = single_value.field_zoomViewport->valueof();
+break;
+case GraphicsContextReq__union::ALT_panAndZoomViewport:
+ret_val.panAndZoomViewport() = single_value.field_panAndZoomViewport->valueof();
+break;
+case GraphicsContextReq__union::ALT_changeViewportSize:
+ret_val.changeViewportSize() = single_value.field_changeViewportSize->valueof();
+break;
+case GraphicsContextReq__union::ALT_drawVTObject:
+ret_val.drawVTObject() = single_value.field_drawVTObject->valueof();
+break;
+case GraphicsContextReq__union::ALT_copyCanvasToPictureGraphic:
+ret_val.copyCanvasToPictureGraphic() = single_value.field_copyCanvasToPictureGraphic->valueof();
+break;
+case GraphicsContextReq__union::ALT_copyViewportToPictureGraphic:
+ret_val.copyViewportToPictureGraphic() = single_value.field_copyViewportToPictureGraphic->valueof();
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+}
+return ret_val;
+}
+
+GraphicsContextReq__union_template& GraphicsContextReq__union_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+return value_list.list_value[list_index];
+}
+void GraphicsContextReq__union_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error ("Internal error: Setting an invalid list for a template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new GraphicsContextReq__union_template[list_length];
+}
+
+SetGraphicsCursor_template& GraphicsContextReq__union_template::setGraphicsCursor()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != GraphicsContextReq__union::ALT_setGraphicsCursor) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_setGraphicsCursor = new SetGraphicsCursor_template(ANY_VALUE);
+else single_value.field_setGraphicsCursor = new SetGraphicsCursor_template;
+single_value.union_selection = GraphicsContextReq__union::ALT_setGraphicsCursor;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_setGraphicsCursor;
+}
+
+const SetGraphicsCursor_template& GraphicsContextReq__union_template::setGraphicsCursor() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field setGraphicsCursor in a non-specific template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+if (single_value.union_selection != GraphicsContextReq__union::ALT_setGraphicsCursor) TTCN_error("Accessing non-selected field setGraphicsCursor in a template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+return *single_value.field_setGraphicsCursor;
+}
+
+MoveGraphicsCursor_template& GraphicsContextReq__union_template::moveGraphicsCursor()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != GraphicsContextReq__union::ALT_moveGraphicsCursor) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_moveGraphicsCursor = new MoveGraphicsCursor_template(ANY_VALUE);
+else single_value.field_moveGraphicsCursor = new MoveGraphicsCursor_template;
+single_value.union_selection = GraphicsContextReq__union::ALT_moveGraphicsCursor;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_moveGraphicsCursor;
+}
+
+const MoveGraphicsCursor_template& GraphicsContextReq__union_template::moveGraphicsCursor() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field moveGraphicsCursor in a non-specific template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+if (single_value.union_selection != GraphicsContextReq__union::ALT_moveGraphicsCursor) TTCN_error("Accessing non-selected field moveGraphicsCursor in a template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+return *single_value.field_moveGraphicsCursor;
+}
+
+SetForegroundColour_template& GraphicsContextReq__union_template::setForegroundColour()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != GraphicsContextReq__union::ALT_setForegroundColour) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_setForegroundColour = new SetForegroundColour_template(ANY_VALUE);
+else single_value.field_setForegroundColour = new SetForegroundColour_template;
+single_value.union_selection = GraphicsContextReq__union::ALT_setForegroundColour;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_setForegroundColour;
+}
+
+const SetForegroundColour_template& GraphicsContextReq__union_template::setForegroundColour() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field setForegroundColour in a non-specific template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+if (single_value.union_selection != GraphicsContextReq__union::ALT_setForegroundColour) TTCN_error("Accessing non-selected field setForegroundColour in a template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+return *single_value.field_setForegroundColour;
+}
+
+SetBackgroundColour_template& GraphicsContextReq__union_template::setBackgroundColour()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != GraphicsContextReq__union::ALT_setBackgroundColour) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_setBackgroundColour = new SetBackgroundColour_template(ANY_VALUE);
+else single_value.field_setBackgroundColour = new SetBackgroundColour_template;
+single_value.union_selection = GraphicsContextReq__union::ALT_setBackgroundColour;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_setBackgroundColour;
+}
+
+const SetBackgroundColour_template& GraphicsContextReq__union_template::setBackgroundColour() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field setBackgroundColour in a non-specific template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+if (single_value.union_selection != GraphicsContextReq__union::ALT_setBackgroundColour) TTCN_error("Accessing non-selected field setBackgroundColour in a template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+return *single_value.field_setBackgroundColour;
+}
+
+SetLineAttributesObjectID_template& GraphicsContextReq__union_template::setLineAttributesObjectID()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != GraphicsContextReq__union::ALT_setLineAttributesObjectID) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_setLineAttributesObjectID = new SetLineAttributesObjectID_template(ANY_VALUE);
+else single_value.field_setLineAttributesObjectID = new SetLineAttributesObjectID_template;
+single_value.union_selection = GraphicsContextReq__union::ALT_setLineAttributesObjectID;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_setLineAttributesObjectID;
+}
+
+const SetLineAttributesObjectID_template& GraphicsContextReq__union_template::setLineAttributesObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field setLineAttributesObjectID in a non-specific template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+if (single_value.union_selection != GraphicsContextReq__union::ALT_setLineAttributesObjectID) TTCN_error("Accessing non-selected field setLineAttributesObjectID in a template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+return *single_value.field_setLineAttributesObjectID;
+}
+
+SetFileAttributesObjectID_template& GraphicsContextReq__union_template::setFileAttributesObjectID()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != GraphicsContextReq__union::ALT_setFileAttributesObjectID) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_setFileAttributesObjectID = new SetFileAttributesObjectID_template(ANY_VALUE);
+else single_value.field_setFileAttributesObjectID = new SetFileAttributesObjectID_template;
+single_value.union_selection = GraphicsContextReq__union::ALT_setFileAttributesObjectID;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_setFileAttributesObjectID;
+}
+
+const SetFileAttributesObjectID_template& GraphicsContextReq__union_template::setFileAttributesObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field setFileAttributesObjectID in a non-specific template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+if (single_value.union_selection != GraphicsContextReq__union::ALT_setFileAttributesObjectID) TTCN_error("Accessing non-selected field setFileAttributesObjectID in a template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+return *single_value.field_setFileAttributesObjectID;
+}
+
+SetFontAttributesObjectID_template& GraphicsContextReq__union_template::setFontAttributesObjectID()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != GraphicsContextReq__union::ALT_setFontAttributesObjectID) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_setFontAttributesObjectID = new SetFontAttributesObjectID_template(ANY_VALUE);
+else single_value.field_setFontAttributesObjectID = new SetFontAttributesObjectID_template;
+single_value.union_selection = GraphicsContextReq__union::ALT_setFontAttributesObjectID;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_setFontAttributesObjectID;
+}
+
+const SetFontAttributesObjectID_template& GraphicsContextReq__union_template::setFontAttributesObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field setFontAttributesObjectID in a non-specific template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+if (single_value.union_selection != GraphicsContextReq__union::ALT_setFontAttributesObjectID) TTCN_error("Accessing non-selected field setFontAttributesObjectID in a template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+return *single_value.field_setFontAttributesObjectID;
+}
+
+EraseRectangle_template& GraphicsContextReq__union_template::eraseRectangle()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != GraphicsContextReq__union::ALT_eraseRectangle) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_eraseRectangle = new EraseRectangle_template(ANY_VALUE);
+else single_value.field_eraseRectangle = new EraseRectangle_template;
+single_value.union_selection = GraphicsContextReq__union::ALT_eraseRectangle;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_eraseRectangle;
+}
+
+const EraseRectangle_template& GraphicsContextReq__union_template::eraseRectangle() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field eraseRectangle in a non-specific template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+if (single_value.union_selection != GraphicsContextReq__union::ALT_eraseRectangle) TTCN_error("Accessing non-selected field eraseRectangle in a template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+return *single_value.field_eraseRectangle;
+}
+
+DrawPoint_template& GraphicsContextReq__union_template::drawPoint()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != GraphicsContextReq__union::ALT_drawPoint) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_drawPoint = new DrawPoint_template(ANY_VALUE);
+else single_value.field_drawPoint = new DrawPoint_template;
+single_value.union_selection = GraphicsContextReq__union::ALT_drawPoint;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_drawPoint;
+}
+
+const DrawPoint_template& GraphicsContextReq__union_template::drawPoint() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field drawPoint in a non-specific template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+if (single_value.union_selection != GraphicsContextReq__union::ALT_drawPoint) TTCN_error("Accessing non-selected field drawPoint in a template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+return *single_value.field_drawPoint;
+}
+
+DrawLine_template& GraphicsContextReq__union_template::drawLine()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != GraphicsContextReq__union::ALT_drawLine) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_drawLine = new DrawLine_template(ANY_VALUE);
+else single_value.field_drawLine = new DrawLine_template;
+single_value.union_selection = GraphicsContextReq__union::ALT_drawLine;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_drawLine;
+}
+
+const DrawLine_template& GraphicsContextReq__union_template::drawLine() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field drawLine in a non-specific template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+if (single_value.union_selection != GraphicsContextReq__union::ALT_drawLine) TTCN_error("Accessing non-selected field drawLine in a template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+return *single_value.field_drawLine;
+}
+
+DrawRectangle_template& GraphicsContextReq__union_template::drawRectangle()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != GraphicsContextReq__union::ALT_drawRectangle) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_drawRectangle = new DrawRectangle_template(ANY_VALUE);
+else single_value.field_drawRectangle = new DrawRectangle_template;
+single_value.union_selection = GraphicsContextReq__union::ALT_drawRectangle;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_drawRectangle;
+}
+
+const DrawRectangle_template& GraphicsContextReq__union_template::drawRectangle() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field drawRectangle in a non-specific template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+if (single_value.union_selection != GraphicsContextReq__union::ALT_drawRectangle) TTCN_error("Accessing non-selected field drawRectangle in a template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+return *single_value.field_drawRectangle;
+}
+
+DrawClosedEllipse_template& GraphicsContextReq__union_template::drawClosedEllipse()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != GraphicsContextReq__union::ALT_drawClosedEllipse) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_drawClosedEllipse = new DrawClosedEllipse_template(ANY_VALUE);
+else single_value.field_drawClosedEllipse = new DrawClosedEllipse_template;
+single_value.union_selection = GraphicsContextReq__union::ALT_drawClosedEllipse;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_drawClosedEllipse;
+}
+
+const DrawClosedEllipse_template& GraphicsContextReq__union_template::drawClosedEllipse() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field drawClosedEllipse in a non-specific template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+if (single_value.union_selection != GraphicsContextReq__union::ALT_drawClosedEllipse) TTCN_error("Accessing non-selected field drawClosedEllipse in a template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+return *single_value.field_drawClosedEllipse;
+}
+
+DrawPolygon_template& GraphicsContextReq__union_template::drawPolygon()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != GraphicsContextReq__union::ALT_drawPolygon) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_drawPolygon = new DrawPolygon_template(ANY_VALUE);
+else single_value.field_drawPolygon = new DrawPolygon_template;
+single_value.union_selection = GraphicsContextReq__union::ALT_drawPolygon;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_drawPolygon;
+}
+
+const DrawPolygon_template& GraphicsContextReq__union_template::drawPolygon() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field drawPolygon in a non-specific template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+if (single_value.union_selection != GraphicsContextReq__union::ALT_drawPolygon) TTCN_error("Accessing non-selected field drawPolygon in a template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+return *single_value.field_drawPolygon;
+}
+
+DrawText_template& GraphicsContextReq__union_template::drawText()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != GraphicsContextReq__union::ALT_drawText) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_drawText = new DrawText_template(ANY_VALUE);
+else single_value.field_drawText = new DrawText_template;
+single_value.union_selection = GraphicsContextReq__union::ALT_drawText;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_drawText;
+}
+
+const DrawText_template& GraphicsContextReq__union_template::drawText() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field drawText in a non-specific template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+if (single_value.union_selection != GraphicsContextReq__union::ALT_drawText) TTCN_error("Accessing non-selected field drawText in a template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+return *single_value.field_drawText;
+}
+
+PanViewport_template& GraphicsContextReq__union_template::panViewport()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != GraphicsContextReq__union::ALT_panViewport) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_panViewport = new PanViewport_template(ANY_VALUE);
+else single_value.field_panViewport = new PanViewport_template;
+single_value.union_selection = GraphicsContextReq__union::ALT_panViewport;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_panViewport;
+}
+
+const PanViewport_template& GraphicsContextReq__union_template::panViewport() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field panViewport in a non-specific template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+if (single_value.union_selection != GraphicsContextReq__union::ALT_panViewport) TTCN_error("Accessing non-selected field panViewport in a template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+return *single_value.field_panViewport;
+}
+
+ZoomViewport_template& GraphicsContextReq__union_template::zoomViewport()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != GraphicsContextReq__union::ALT_zoomViewport) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_zoomViewport = new ZoomViewport_template(ANY_VALUE);
+else single_value.field_zoomViewport = new ZoomViewport_template;
+single_value.union_selection = GraphicsContextReq__union::ALT_zoomViewport;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_zoomViewport;
+}
+
+const ZoomViewport_template& GraphicsContextReq__union_template::zoomViewport() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field zoomViewport in a non-specific template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+if (single_value.union_selection != GraphicsContextReq__union::ALT_zoomViewport) TTCN_error("Accessing non-selected field zoomViewport in a template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+return *single_value.field_zoomViewport;
+}
+
+PanAndZoomViewport_template& GraphicsContextReq__union_template::panAndZoomViewport()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != GraphicsContextReq__union::ALT_panAndZoomViewport) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_panAndZoomViewport = new PanAndZoomViewport_template(ANY_VALUE);
+else single_value.field_panAndZoomViewport = new PanAndZoomViewport_template;
+single_value.union_selection = GraphicsContextReq__union::ALT_panAndZoomViewport;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_panAndZoomViewport;
+}
+
+const PanAndZoomViewport_template& GraphicsContextReq__union_template::panAndZoomViewport() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field panAndZoomViewport in a non-specific template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+if (single_value.union_selection != GraphicsContextReq__union::ALT_panAndZoomViewport) TTCN_error("Accessing non-selected field panAndZoomViewport in a template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+return *single_value.field_panAndZoomViewport;
+}
+
+ChangeViewportSize_template& GraphicsContextReq__union_template::changeViewportSize()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != GraphicsContextReq__union::ALT_changeViewportSize) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_changeViewportSize = new ChangeViewportSize_template(ANY_VALUE);
+else single_value.field_changeViewportSize = new ChangeViewportSize_template;
+single_value.union_selection = GraphicsContextReq__union::ALT_changeViewportSize;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_changeViewportSize;
+}
+
+const ChangeViewportSize_template& GraphicsContextReq__union_template::changeViewportSize() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field changeViewportSize in a non-specific template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+if (single_value.union_selection != GraphicsContextReq__union::ALT_changeViewportSize) TTCN_error("Accessing non-selected field changeViewportSize in a template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+return *single_value.field_changeViewportSize;
+}
+
+DrawVTObject_template& GraphicsContextReq__union_template::drawVTObject()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != GraphicsContextReq__union::ALT_drawVTObject) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_drawVTObject = new DrawVTObject_template(ANY_VALUE);
+else single_value.field_drawVTObject = new DrawVTObject_template;
+single_value.union_selection = GraphicsContextReq__union::ALT_drawVTObject;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_drawVTObject;
+}
+
+const DrawVTObject_template& GraphicsContextReq__union_template::drawVTObject() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field drawVTObject in a non-specific template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+if (single_value.union_selection != GraphicsContextReq__union::ALT_drawVTObject) TTCN_error("Accessing non-selected field drawVTObject in a template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+return *single_value.field_drawVTObject;
+}
+
+CopyCanvasToPictureGraphic_template& GraphicsContextReq__union_template::copyCanvasToPictureGraphic()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != GraphicsContextReq__union::ALT_copyCanvasToPictureGraphic) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_copyCanvasToPictureGraphic = new CopyCanvasToPictureGraphic_template(ANY_VALUE);
+else single_value.field_copyCanvasToPictureGraphic = new CopyCanvasToPictureGraphic_template;
+single_value.union_selection = GraphicsContextReq__union::ALT_copyCanvasToPictureGraphic;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_copyCanvasToPictureGraphic;
+}
+
+const CopyCanvasToPictureGraphic_template& GraphicsContextReq__union_template::copyCanvasToPictureGraphic() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field copyCanvasToPictureGraphic in a non-specific template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+if (single_value.union_selection != GraphicsContextReq__union::ALT_copyCanvasToPictureGraphic) TTCN_error("Accessing non-selected field copyCanvasToPictureGraphic in a template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+return *single_value.field_copyCanvasToPictureGraphic;
+}
+
+CopyViewportToPictureGraphic_template& GraphicsContextReq__union_template::copyViewportToPictureGraphic()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != GraphicsContextReq__union::ALT_copyViewportToPictureGraphic) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_copyViewportToPictureGraphic = new CopyViewportToPictureGraphic_template(ANY_VALUE);
+else single_value.field_copyViewportToPictureGraphic = new CopyViewportToPictureGraphic_template;
+single_value.union_selection = GraphicsContextReq__union::ALT_copyViewportToPictureGraphic;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_copyViewportToPictureGraphic;
+}
+
+const CopyViewportToPictureGraphic_template& GraphicsContextReq__union_template::copyViewportToPictureGraphic() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field copyViewportToPictureGraphic in a non-specific template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+if (single_value.union_selection != GraphicsContextReq__union::ALT_copyViewportToPictureGraphic) TTCN_error("Accessing non-selected field copyViewportToPictureGraphic in a template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+return *single_value.field_copyViewportToPictureGraphic;
+}
+
+boolean GraphicsContextReq__union_template::ischosen(GraphicsContextReq__union::union_selection_type checked_selection) const
+{
+if (checked_selection == GraphicsContextReq__union::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+switch (template_selection) {
+case SPECIFIC_VALUE:
+if (single_value.union_selection == GraphicsContextReq__union::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+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 @IsobusVTMessageTypes.GraphicsContextReq_union 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 GraphicsContextReq__union_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case GraphicsContextReq__union::ALT_setGraphicsCursor:
+TTCN_Logger::log_event_str("{ setGraphicsCursor := ");
+single_value.field_setGraphicsCursor->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case GraphicsContextReq__union::ALT_moveGraphicsCursor:
+TTCN_Logger::log_event_str("{ moveGraphicsCursor := ");
+single_value.field_moveGraphicsCursor->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case GraphicsContextReq__union::ALT_setForegroundColour:
+TTCN_Logger::log_event_str("{ setForegroundColour := ");
+single_value.field_setForegroundColour->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case GraphicsContextReq__union::ALT_setBackgroundColour:
+TTCN_Logger::log_event_str("{ setBackgroundColour := ");
+single_value.field_setBackgroundColour->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case GraphicsContextReq__union::ALT_setLineAttributesObjectID:
+TTCN_Logger::log_event_str("{ setLineAttributesObjectID := ");
+single_value.field_setLineAttributesObjectID->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case GraphicsContextReq__union::ALT_setFileAttributesObjectID:
+TTCN_Logger::log_event_str("{ setFileAttributesObjectID := ");
+single_value.field_setFileAttributesObjectID->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case GraphicsContextReq__union::ALT_setFontAttributesObjectID:
+TTCN_Logger::log_event_str("{ setFontAttributesObjectID := ");
+single_value.field_setFontAttributesObjectID->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case GraphicsContextReq__union::ALT_eraseRectangle:
+TTCN_Logger::log_event_str("{ eraseRectangle := ");
+single_value.field_eraseRectangle->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case GraphicsContextReq__union::ALT_drawPoint:
+TTCN_Logger::log_event_str("{ drawPoint := ");
+single_value.field_drawPoint->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case GraphicsContextReq__union::ALT_drawLine:
+TTCN_Logger::log_event_str("{ drawLine := ");
+single_value.field_drawLine->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case GraphicsContextReq__union::ALT_drawRectangle:
+TTCN_Logger::log_event_str("{ drawRectangle := ");
+single_value.field_drawRectangle->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case GraphicsContextReq__union::ALT_drawClosedEllipse:
+TTCN_Logger::log_event_str("{ drawClosedEllipse := ");
+single_value.field_drawClosedEllipse->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case GraphicsContextReq__union::ALT_drawPolygon:
+TTCN_Logger::log_event_str("{ drawPolygon := ");
+single_value.field_drawPolygon->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case GraphicsContextReq__union::ALT_drawText:
+TTCN_Logger::log_event_str("{ drawText := ");
+single_value.field_drawText->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case GraphicsContextReq__union::ALT_panViewport:
+TTCN_Logger::log_event_str("{ panViewport := ");
+single_value.field_panViewport->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case GraphicsContextReq__union::ALT_zoomViewport:
+TTCN_Logger::log_event_str("{ zoomViewport := ");
+single_value.field_zoomViewport->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case GraphicsContextReq__union::ALT_panAndZoomViewport:
+TTCN_Logger::log_event_str("{ panAndZoomViewport := ");
+single_value.field_panAndZoomViewport->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case GraphicsContextReq__union::ALT_changeViewportSize:
+TTCN_Logger::log_event_str("{ changeViewportSize := ");
+single_value.field_changeViewportSize->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case GraphicsContextReq__union::ALT_drawVTObject:
+TTCN_Logger::log_event_str("{ drawVTObject := ");
+single_value.field_drawVTObject->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case GraphicsContextReq__union::ALT_copyCanvasToPictureGraphic:
+TTCN_Logger::log_event_str("{ copyCanvasToPictureGraphic := ");
+single_value.field_copyCanvasToPictureGraphic->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case GraphicsContextReq__union::ALT_copyViewportToPictureGraphic:
+TTCN_Logger::log_event_str("{ copyViewportToPictureGraphic := ");
+single_value.field_copyViewportToPictureGraphic->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 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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void GraphicsContextReq__union_template::log_match(const GraphicsContextReq__union& 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()) {
+switch (single_value.union_selection) {
+case GraphicsContextReq__union::ALT_setGraphicsCursor:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".setGraphicsCursor");
+single_value.field_setGraphicsCursor->log_match(match_value.setGraphicsCursor(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ setGraphicsCursor := ");
+single_value.field_setGraphicsCursor->log_match(match_value.setGraphicsCursor(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case GraphicsContextReq__union::ALT_moveGraphicsCursor:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".moveGraphicsCursor");
+single_value.field_moveGraphicsCursor->log_match(match_value.moveGraphicsCursor(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ moveGraphicsCursor := ");
+single_value.field_moveGraphicsCursor->log_match(match_value.moveGraphicsCursor(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case GraphicsContextReq__union::ALT_setForegroundColour:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".setForegroundColour");
+single_value.field_setForegroundColour->log_match(match_value.setForegroundColour(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ setForegroundColour := ");
+single_value.field_setForegroundColour->log_match(match_value.setForegroundColour(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case GraphicsContextReq__union::ALT_setBackgroundColour:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".setBackgroundColour");
+single_value.field_setBackgroundColour->log_match(match_value.setBackgroundColour(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ setBackgroundColour := ");
+single_value.field_setBackgroundColour->log_match(match_value.setBackgroundColour(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case GraphicsContextReq__union::ALT_setLineAttributesObjectID:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".setLineAttributesObjectID");
+single_value.field_setLineAttributesObjectID->log_match(match_value.setLineAttributesObjectID(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ setLineAttributesObjectID := ");
+single_value.field_setLineAttributesObjectID->log_match(match_value.setLineAttributesObjectID(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case GraphicsContextReq__union::ALT_setFileAttributesObjectID:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".setFileAttributesObjectID");
+single_value.field_setFileAttributesObjectID->log_match(match_value.setFileAttributesObjectID(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ setFileAttributesObjectID := ");
+single_value.field_setFileAttributesObjectID->log_match(match_value.setFileAttributesObjectID(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case GraphicsContextReq__union::ALT_setFontAttributesObjectID:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".setFontAttributesObjectID");
+single_value.field_setFontAttributesObjectID->log_match(match_value.setFontAttributesObjectID(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ setFontAttributesObjectID := ");
+single_value.field_setFontAttributesObjectID->log_match(match_value.setFontAttributesObjectID(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case GraphicsContextReq__union::ALT_eraseRectangle:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".eraseRectangle");
+single_value.field_eraseRectangle->log_match(match_value.eraseRectangle(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ eraseRectangle := ");
+single_value.field_eraseRectangle->log_match(match_value.eraseRectangle(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case GraphicsContextReq__union::ALT_drawPoint:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".drawPoint");
+single_value.field_drawPoint->log_match(match_value.drawPoint(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ drawPoint := ");
+single_value.field_drawPoint->log_match(match_value.drawPoint(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case GraphicsContextReq__union::ALT_drawLine:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".drawLine");
+single_value.field_drawLine->log_match(match_value.drawLine(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ drawLine := ");
+single_value.field_drawLine->log_match(match_value.drawLine(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case GraphicsContextReq__union::ALT_drawRectangle:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".drawRectangle");
+single_value.field_drawRectangle->log_match(match_value.drawRectangle(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ drawRectangle := ");
+single_value.field_drawRectangle->log_match(match_value.drawRectangle(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case GraphicsContextReq__union::ALT_drawClosedEllipse:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".drawClosedEllipse");
+single_value.field_drawClosedEllipse->log_match(match_value.drawClosedEllipse(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ drawClosedEllipse := ");
+single_value.field_drawClosedEllipse->log_match(match_value.drawClosedEllipse(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case GraphicsContextReq__union::ALT_drawPolygon:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".drawPolygon");
+single_value.field_drawPolygon->log_match(match_value.drawPolygon(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ drawPolygon := ");
+single_value.field_drawPolygon->log_match(match_value.drawPolygon(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case GraphicsContextReq__union::ALT_drawText:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".drawText");
+single_value.field_drawText->log_match(match_value.drawText(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ drawText := ");
+single_value.field_drawText->log_match(match_value.drawText(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case GraphicsContextReq__union::ALT_panViewport:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".panViewport");
+single_value.field_panViewport->log_match(match_value.panViewport(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ panViewport := ");
+single_value.field_panViewport->log_match(match_value.panViewport(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case GraphicsContextReq__union::ALT_zoomViewport:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".zoomViewport");
+single_value.field_zoomViewport->log_match(match_value.zoomViewport(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ zoomViewport := ");
+single_value.field_zoomViewport->log_match(match_value.zoomViewport(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case GraphicsContextReq__union::ALT_panAndZoomViewport:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".panAndZoomViewport");
+single_value.field_panAndZoomViewport->log_match(match_value.panAndZoomViewport(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ panAndZoomViewport := ");
+single_value.field_panAndZoomViewport->log_match(match_value.panAndZoomViewport(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case GraphicsContextReq__union::ALT_changeViewportSize:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".changeViewportSize");
+single_value.field_changeViewportSize->log_match(match_value.changeViewportSize(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ changeViewportSize := ");
+single_value.field_changeViewportSize->log_match(match_value.changeViewportSize(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case GraphicsContextReq__union::ALT_drawVTObject:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".drawVTObject");
+single_value.field_drawVTObject->log_match(match_value.drawVTObject(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ drawVTObject := ");
+single_value.field_drawVTObject->log_match(match_value.drawVTObject(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case GraphicsContextReq__union::ALT_copyCanvasToPictureGraphic:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".copyCanvasToPictureGraphic");
+single_value.field_copyCanvasToPictureGraphic->log_match(match_value.copyCanvasToPictureGraphic(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ copyCanvasToPictureGraphic := ");
+single_value.field_copyCanvasToPictureGraphic->log_match(match_value.copyCanvasToPictureGraphic(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case GraphicsContextReq__union::ALT_copyViewportToPictureGraphic:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".copyViewportToPictureGraphic");
+single_value.field_copyViewportToPictureGraphic->log_match(match_value.copyViewportToPictureGraphic(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ copyViewportToPictureGraphic := ");
+single_value.field_copyViewportToPictureGraphic->log_match(match_value.copyViewportToPictureGraphic(), 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 GraphicsContextReq__union_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 GraphicsContextReq__union::ALT_setGraphicsCursor:
+single_value.field_setGraphicsCursor->encode_text(text_buf);
+break;
+case GraphicsContextReq__union::ALT_moveGraphicsCursor:
+single_value.field_moveGraphicsCursor->encode_text(text_buf);
+break;
+case GraphicsContextReq__union::ALT_setForegroundColour:
+single_value.field_setForegroundColour->encode_text(text_buf);
+break;
+case GraphicsContextReq__union::ALT_setBackgroundColour:
+single_value.field_setBackgroundColour->encode_text(text_buf);
+break;
+case GraphicsContextReq__union::ALT_setLineAttributesObjectID:
+single_value.field_setLineAttributesObjectID->encode_text(text_buf);
+break;
+case GraphicsContextReq__union::ALT_setFileAttributesObjectID:
+single_value.field_setFileAttributesObjectID->encode_text(text_buf);
+break;
+case GraphicsContextReq__union::ALT_setFontAttributesObjectID:
+single_value.field_setFontAttributesObjectID->encode_text(text_buf);
+break;
+case GraphicsContextReq__union::ALT_eraseRectangle:
+single_value.field_eraseRectangle->encode_text(text_buf);
+break;
+case GraphicsContextReq__union::ALT_drawPoint:
+single_value.field_drawPoint->encode_text(text_buf);
+break;
+case GraphicsContextReq__union::ALT_drawLine:
+single_value.field_drawLine->encode_text(text_buf);
+break;
+case GraphicsContextReq__union::ALT_drawRectangle:
+single_value.field_drawRectangle->encode_text(text_buf);
+break;
+case GraphicsContextReq__union::ALT_drawClosedEllipse:
+single_value.field_drawClosedEllipse->encode_text(text_buf);
+break;
+case GraphicsContextReq__union::ALT_drawPolygon:
+single_value.field_drawPolygon->encode_text(text_buf);
+break;
+case GraphicsContextReq__union::ALT_drawText:
+single_value.field_drawText->encode_text(text_buf);
+break;
+case GraphicsContextReq__union::ALT_panViewport:
+single_value.field_panViewport->encode_text(text_buf);
+break;
+case GraphicsContextReq__union::ALT_zoomViewport:
+single_value.field_zoomViewport->encode_text(text_buf);
+break;
+case GraphicsContextReq__union::ALT_panAndZoomViewport:
+single_value.field_panAndZoomViewport->encode_text(text_buf);
+break;
+case GraphicsContextReq__union::ALT_changeViewportSize:
+single_value.field_changeViewportSize->encode_text(text_buf);
+break;
+case GraphicsContextReq__union::ALT_drawVTObject:
+single_value.field_drawVTObject->encode_text(text_buf);
+break;
+case GraphicsContextReq__union::ALT_copyCanvasToPictureGraphic:
+single_value.field_copyCanvasToPictureGraphic->encode_text(text_buf);
+break;
+case GraphicsContextReq__union::ALT_copyViewportToPictureGraphic:
+single_value.field_copyViewportToPictureGraphic->encode_text(text_buf);
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+}
+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 @IsobusVTMessageTypes.GraphicsContextReq_union.");
+}
+}
+
+void GraphicsContextReq__union_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+{
+single_value.union_selection = GraphicsContextReq__union::UNBOUND_VALUE;
+GraphicsContextReq__union::union_selection_type new_selection = (GraphicsContextReq__union::union_selection_type)text_buf.pull_int().get_val();
+switch (new_selection) {
+case GraphicsContextReq__union::ALT_setGraphicsCursor:
+single_value.field_setGraphicsCursor = new SetGraphicsCursor_template;
+single_value.field_setGraphicsCursor->decode_text(text_buf);
+break;
+case GraphicsContextReq__union::ALT_moveGraphicsCursor:
+single_value.field_moveGraphicsCursor = new MoveGraphicsCursor_template;
+single_value.field_moveGraphicsCursor->decode_text(text_buf);
+break;
+case GraphicsContextReq__union::ALT_setForegroundColour:
+single_value.field_setForegroundColour = new SetForegroundColour_template;
+single_value.field_setForegroundColour->decode_text(text_buf);
+break;
+case GraphicsContextReq__union::ALT_setBackgroundColour:
+single_value.field_setBackgroundColour = new SetBackgroundColour_template;
+single_value.field_setBackgroundColour->decode_text(text_buf);
+break;
+case GraphicsContextReq__union::ALT_setLineAttributesObjectID:
+single_value.field_setLineAttributesObjectID = new SetLineAttributesObjectID_template;
+single_value.field_setLineAttributesObjectID->decode_text(text_buf);
+break;
+case GraphicsContextReq__union::ALT_setFileAttributesObjectID:
+single_value.field_setFileAttributesObjectID = new SetFileAttributesObjectID_template;
+single_value.field_setFileAttributesObjectID->decode_text(text_buf);
+break;
+case GraphicsContextReq__union::ALT_setFontAttributesObjectID:
+single_value.field_setFontAttributesObjectID = new SetFontAttributesObjectID_template;
+single_value.field_setFontAttributesObjectID->decode_text(text_buf);
+break;
+case GraphicsContextReq__union::ALT_eraseRectangle:
+single_value.field_eraseRectangle = new EraseRectangle_template;
+single_value.field_eraseRectangle->decode_text(text_buf);
+break;
+case GraphicsContextReq__union::ALT_drawPoint:
+single_value.field_drawPoint = new DrawPoint_template;
+single_value.field_drawPoint->decode_text(text_buf);
+break;
+case GraphicsContextReq__union::ALT_drawLine:
+single_value.field_drawLine = new DrawLine_template;
+single_value.field_drawLine->decode_text(text_buf);
+break;
+case GraphicsContextReq__union::ALT_drawRectangle:
+single_value.field_drawRectangle = new DrawRectangle_template;
+single_value.field_drawRectangle->decode_text(text_buf);
+break;
+case GraphicsContextReq__union::ALT_drawClosedEllipse:
+single_value.field_drawClosedEllipse = new DrawClosedEllipse_template;
+single_value.field_drawClosedEllipse->decode_text(text_buf);
+break;
+case GraphicsContextReq__union::ALT_drawPolygon:
+single_value.field_drawPolygon = new DrawPolygon_template;
+single_value.field_drawPolygon->decode_text(text_buf);
+break;
+case GraphicsContextReq__union::ALT_drawText:
+single_value.field_drawText = new DrawText_template;
+single_value.field_drawText->decode_text(text_buf);
+break;
+case GraphicsContextReq__union::ALT_panViewport:
+single_value.field_panViewport = new PanViewport_template;
+single_value.field_panViewport->decode_text(text_buf);
+break;
+case GraphicsContextReq__union::ALT_zoomViewport:
+single_value.field_zoomViewport = new ZoomViewport_template;
+single_value.field_zoomViewport->decode_text(text_buf);
+break;
+case GraphicsContextReq__union::ALT_panAndZoomViewport:
+single_value.field_panAndZoomViewport = new PanAndZoomViewport_template;
+single_value.field_panAndZoomViewport->decode_text(text_buf);
+break;
+case GraphicsContextReq__union::ALT_changeViewportSize:
+single_value.field_changeViewportSize = new ChangeViewportSize_template;
+single_value.field_changeViewportSize->decode_text(text_buf);
+break;
+case GraphicsContextReq__union::ALT_drawVTObject:
+single_value.field_drawVTObject = new DrawVTObject_template;
+single_value.field_drawVTObject->decode_text(text_buf);
+break;
+case GraphicsContextReq__union::ALT_copyCanvasToPictureGraphic:
+single_value.field_copyCanvasToPictureGraphic = new CopyCanvasToPictureGraphic_template;
+single_value.field_copyCanvasToPictureGraphic->decode_text(text_buf);
+break;
+case GraphicsContextReq__union::ALT_copyViewportToPictureGraphic:
+single_value.field_copyViewportToPictureGraphic = new CopyViewportToPictureGraphic_template;
+single_value.field_copyViewportToPictureGraphic->decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+}
+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 GraphicsContextReq__union_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 @IsobusVTMessageTypes.GraphicsContextReq_union.");
+}
+}
+
+boolean GraphicsContextReq__union_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean GraphicsContextReq__union_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 GraphicsContextReq__union_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 `@IsobusVTMessageTypes.GraphicsContextReq_union'");
+    }
+    if (strcmp("setGraphicsCursor", param_field) == 0) {
+      setGraphicsCursor().set_param(param);
+      return;
+    } else if (strcmp("moveGraphicsCursor", param_field) == 0) {
+      moveGraphicsCursor().set_param(param);
+      return;
+    } else if (strcmp("setForegroundColour", param_field) == 0) {
+      setForegroundColour().set_param(param);
+      return;
+    } else if (strcmp("setBackgroundColour", param_field) == 0) {
+      setBackgroundColour().set_param(param);
+      return;
+    } else if (strcmp("setLineAttributesObjectID", param_field) == 0) {
+      setLineAttributesObjectID().set_param(param);
+      return;
+    } else if (strcmp("setFileAttributesObjectID", param_field) == 0) {
+      setFileAttributesObjectID().set_param(param);
+      return;
+    } else if (strcmp("setFontAttributesObjectID", param_field) == 0) {
+      setFontAttributesObjectID().set_param(param);
+      return;
+    } else if (strcmp("eraseRectangle", param_field) == 0) {
+      eraseRectangle().set_param(param);
+      return;
+    } else if (strcmp("drawPoint", param_field) == 0) {
+      drawPoint().set_param(param);
+      return;
+    } else if (strcmp("drawLine", param_field) == 0) {
+      drawLine().set_param(param);
+      return;
+    } else if (strcmp("drawRectangle", param_field) == 0) {
+      drawRectangle().set_param(param);
+      return;
+    } else if (strcmp("drawClosedEllipse", param_field) == 0) {
+      drawClosedEllipse().set_param(param);
+      return;
+    } else if (strcmp("drawPolygon", param_field) == 0) {
+      drawPolygon().set_param(param);
+      return;
+    } else if (strcmp("drawText", param_field) == 0) {
+      drawText().set_param(param);
+      return;
+    } else if (strcmp("panViewport", param_field) == 0) {
+      panViewport().set_param(param);
+      return;
+    } else if (strcmp("zoomViewport", param_field) == 0) {
+      zoomViewport().set_param(param);
+      return;
+    } else if (strcmp("panAndZoomViewport", param_field) == 0) {
+      panAndZoomViewport().set_param(param);
+      return;
+    } else if (strcmp("changeViewportSize", param_field) == 0) {
+      changeViewportSize().set_param(param);
+      return;
+    } else if (strcmp("drawVTObject", param_field) == 0) {
+      drawVTObject().set_param(param);
+      return;
+    } else if (strcmp("copyCanvasToPictureGraphic", param_field) == 0) {
+      copyCanvasToPictureGraphic().set_param(param);
+      return;
+    } else if (strcmp("copyViewportToPictureGraphic", param_field) == 0) {
+      copyViewportToPictureGraphic().set_param(param);
+      return;
+    } else param.error("Field `%s' not found in union template type `@IsobusVTMessageTypes.GraphicsContextReq_union'", 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: {
+    GraphicsContextReq__union_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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", "@IsobusVTMessageTypes.GraphicsContextReq_union");
+    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, "setGraphicsCursor")) {
+      setGraphicsCursor().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "moveGraphicsCursor")) {
+      moveGraphicsCursor().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "setForegroundColour")) {
+      setForegroundColour().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "setBackgroundColour")) {
+      setBackgroundColour().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "setLineAttributesObjectID")) {
+      setLineAttributesObjectID().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "setFileAttributesObjectID")) {
+      setFileAttributesObjectID().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "setFontAttributesObjectID")) {
+      setFontAttributesObjectID().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "eraseRectangle")) {
+      eraseRectangle().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "drawPoint")) {
+      drawPoint().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "drawLine")) {
+      drawLine().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "drawRectangle")) {
+      drawRectangle().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "drawClosedEllipse")) {
+      drawClosedEllipse().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "drawPolygon")) {
+      drawPolygon().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "drawText")) {
+      drawText().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "panViewport")) {
+      panViewport().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "zoomViewport")) {
+      zoomViewport().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "panAndZoomViewport")) {
+      panAndZoomViewport().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "changeViewportSize")) {
+      changeViewportSize().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "drawVTObject")) {
+      drawVTObject().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "copyCanvasToPictureGraphic")) {
+      copyCanvasToPictureGraphic().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "copyViewportToPictureGraphic")) {
+      copyViewportToPictureGraphic().set_param(*mp_last);
+      break;
+    }
+    mp_last->error("Field %s does not exist in type @IsobusVTMessageTypes.GraphicsContextReq_union.", last_name);
+  } break;
+  default:
+    param.type_error("union template", "@IsobusVTMessageTypes.GraphicsContextReq_union");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void GraphicsContextReq__union_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 GraphicsContextReq__union::ALT_setGraphicsCursor:
+single_value.field_setGraphicsCursor->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GraphicsContextReq_union");
+return;
+case GraphicsContextReq__union::ALT_moveGraphicsCursor:
+single_value.field_moveGraphicsCursor->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GraphicsContextReq_union");
+return;
+case GraphicsContextReq__union::ALT_setForegroundColour:
+single_value.field_setForegroundColour->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GraphicsContextReq_union");
+return;
+case GraphicsContextReq__union::ALT_setBackgroundColour:
+single_value.field_setBackgroundColour->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GraphicsContextReq_union");
+return;
+case GraphicsContextReq__union::ALT_setLineAttributesObjectID:
+single_value.field_setLineAttributesObjectID->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GraphicsContextReq_union");
+return;
+case GraphicsContextReq__union::ALT_setFileAttributesObjectID:
+single_value.field_setFileAttributesObjectID->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GraphicsContextReq_union");
+return;
+case GraphicsContextReq__union::ALT_setFontAttributesObjectID:
+single_value.field_setFontAttributesObjectID->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GraphicsContextReq_union");
+return;
+case GraphicsContextReq__union::ALT_eraseRectangle:
+single_value.field_eraseRectangle->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GraphicsContextReq_union");
+return;
+case GraphicsContextReq__union::ALT_drawPoint:
+single_value.field_drawPoint->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GraphicsContextReq_union");
+return;
+case GraphicsContextReq__union::ALT_drawLine:
+single_value.field_drawLine->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GraphicsContextReq_union");
+return;
+case GraphicsContextReq__union::ALT_drawRectangle:
+single_value.field_drawRectangle->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GraphicsContextReq_union");
+return;
+case GraphicsContextReq__union::ALT_drawClosedEllipse:
+single_value.field_drawClosedEllipse->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GraphicsContextReq_union");
+return;
+case GraphicsContextReq__union::ALT_drawPolygon:
+single_value.field_drawPolygon->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GraphicsContextReq_union");
+return;
+case GraphicsContextReq__union::ALT_drawText:
+single_value.field_drawText->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GraphicsContextReq_union");
+return;
+case GraphicsContextReq__union::ALT_panViewport:
+single_value.field_panViewport->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GraphicsContextReq_union");
+return;
+case GraphicsContextReq__union::ALT_zoomViewport:
+single_value.field_zoomViewport->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GraphicsContextReq_union");
+return;
+case GraphicsContextReq__union::ALT_panAndZoomViewport:
+single_value.field_panAndZoomViewport->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GraphicsContextReq_union");
+return;
+case GraphicsContextReq__union::ALT_changeViewportSize:
+single_value.field_changeViewportSize->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GraphicsContextReq_union");
+return;
+case GraphicsContextReq__union::ALT_drawVTObject:
+single_value.field_drawVTObject->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GraphicsContextReq_union");
+return;
+case GraphicsContextReq__union::ALT_copyCanvasToPictureGraphic:
+single_value.field_copyCanvasToPictureGraphic->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GraphicsContextReq_union");
+return;
+case GraphicsContextReq__union::ALT_copyViewportToPictureGraphic:
+single_value.field_copyViewportToPictureGraphic->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GraphicsContextReq_union");
+return;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @IsobusVTMessageTypes.GraphicsContextReq_union.");
+}
+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 : "@IsobusVTMessageTypes.GraphicsContextReq_union");
+}
+
+GraphicsContextReq::GraphicsContextReq()
+{
+}
+
+GraphicsContextReq::GraphicsContextReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectIDofaGraphicsContextObject,
+    const INTEGER& par_subcommandID,
+    const GraphicsContextReq__union& par_parameters)
+  :   field_vtfunction(par_vtfunction),
+  field_objectIDofaGraphicsContextObject(par_objectIDofaGraphicsContextObject),
+  field_subcommandID(par_subcommandID),
+  field_parameters(par_parameters)
+{
+}
+
+GraphicsContextReq::GraphicsContextReq(const GraphicsContextReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.GraphicsContextReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectIDofaGraphicsContextObject().is_bound()) field_objectIDofaGraphicsContextObject = other_value.objectIDofaGraphicsContextObject();
+else field_objectIDofaGraphicsContextObject.clean_up();
+if (other_value.subcommandID().is_bound()) field_subcommandID = other_value.subcommandID();
+else field_subcommandID.clean_up();
+if (other_value.parameters().is_bound()) field_parameters = other_value.parameters();
+else field_parameters.clean_up();
+}
+
+void GraphicsContextReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectIDofaGraphicsContextObject.clean_up();
+field_subcommandID.clean_up();
+field_parameters.clean_up();
+}
+
+const TTCN_Typedescriptor_t* GraphicsContextReq::get_descriptor() const { return &GraphicsContextReq_descr_; }
+GraphicsContextReq& GraphicsContextReq::operator=(const GraphicsContextReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.GraphicsContextReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectIDofaGraphicsContextObject().is_bound()) field_objectIDofaGraphicsContextObject = other_value.objectIDofaGraphicsContextObject();
+  else field_objectIDofaGraphicsContextObject.clean_up();
+  if (other_value.subcommandID().is_bound()) field_subcommandID = other_value.subcommandID();
+  else field_subcommandID.clean_up();
+  if (other_value.parameters().is_bound()) field_parameters = other_value.parameters();
+  else field_parameters.clean_up();
+}
+return *this;
+}
+
+boolean GraphicsContextReq::operator==(const GraphicsContextReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectIDofaGraphicsContextObject==other_value.field_objectIDofaGraphicsContextObject
+  && field_subcommandID==other_value.field_subcommandID
+  && field_parameters==other_value.field_parameters;
+}
+
+boolean GraphicsContextReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectIDofaGraphicsContextObject.is_bound())
+  || (field_subcommandID.is_bound())
+  || (field_parameters.is_bound());
+}
+boolean GraphicsContextReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectIDofaGraphicsContextObject.is_value()
+  && field_subcommandID.is_value()
+  && field_parameters.is_value();
+}
+void GraphicsContextReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectIDofaGraphicsContextObject := ");
+field_objectIDofaGraphicsContextObject.log();
+TTCN_Logger::log_event_str(", subcommandID := ");
+field_subcommandID.log();
+TTCN_Logger::log_event_str(", parameters := ");
+field_parameters.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void GraphicsContextReq::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 @IsobusVTMessageTypes.GraphicsContextReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectIDofaGraphicsContextObject().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) subcommandID().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) parameters().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectIDofaGraphicsContextObject")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofaGraphicsContextObject().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(), "subcommandID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          subcommandID().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(), "parameters")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          parameters().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 @IsobusVTMessageTypes.GraphicsContextReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.GraphicsContextReq");
+  }
+}
+
+void GraphicsContextReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectIDofaGraphicsContextObject().is_bound()) objectIDofaGraphicsContextObject().set_implicit_omit();
+if (subcommandID().is_bound()) subcommandID().set_implicit_omit();
+if (parameters().is_bound()) parameters().set_implicit_omit();
+}
+
+void GraphicsContextReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectIDofaGraphicsContextObject.encode_text(text_buf);
+field_subcommandID.encode_text(text_buf);
+field_parameters.encode_text(text_buf);
+}
+
+void GraphicsContextReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectIDofaGraphicsContextObject.decode_text(text_buf);
+field_subcommandID.decode_text(text_buf);
+field_parameters.decode_text(text_buf);
+}
+
+void GraphicsContextReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void GraphicsContextReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int GraphicsContextReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectIDofaGraphicsContextObject.RAW_decode(ValidObjectID_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::INT1_descr_.raw->forceomit);
+  decoded_field_length = field_subcommandID.RAW_decode(General__Types::INT1_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());
+  if (field_subcommandID == 0) selected_field = 0;
+  else if (field_subcommandID == 1) selected_field = 1;
+  else if (field_subcommandID == 2) selected_field = 2;
+  else if (field_subcommandID == 3) selected_field = 3;
+  else if (field_subcommandID == 4) selected_field = 4;
+  else if (field_subcommandID == 5) selected_field = 5;
+  else if (field_subcommandID == 6) selected_field = 6;
+  else if (field_subcommandID == 7) selected_field = 7;
+  else if (field_subcommandID == 8) selected_field = 8;
+  else if (field_subcommandID == 9) selected_field = 9;
+  else if (field_subcommandID == 10) selected_field = 10;
+  else if (field_subcommandID == 11) selected_field = 11;
+  else if (field_subcommandID == 12) selected_field = 12;
+  else if (field_subcommandID == 13) selected_field = 13;
+  else if (field_subcommandID == 14) selected_field = 14;
+  else if (field_subcommandID == 15) selected_field = 15;
+  else if (field_subcommandID == 16) selected_field = 16;
+  else if (field_subcommandID == 17) selected_field = 17;
+  else if (field_subcommandID == 18) selected_field = 18;
+  else if (field_subcommandID == 19) selected_field = 19;
+  else if (field_subcommandID == 20) selected_field = 20;
+  else selected_field = -1;
+  RAW_Force_Omit field_3_force_omit(3, force_omit, GraphicsContextReq_parameters_descr_.raw->forceomit);
+  decoded_field_length = field_parameters.RAW_decode(GraphicsContextReq_parameters_descr_, p_buf, limit, local_top_order, no_err, selected_field, 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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int GraphicsContextReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, General__Types::INT1_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, GraphicsContextReq_parameters_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectIDofaGraphicsContextObject.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_subcommandID.RAW_encode(General__Types::INT1_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_parameters.RAW_encode(GraphicsContextReq_parameters_descr_, *myleaf.body.node.nodes[3]);
+  switch (field_parameters.get_selection()) {
+  case GraphicsContextReq__union::ALT_setGraphicsCursor:
+  if (field_subcommandID != 0) {
+  RAW_enc_tr_pos pr_pos;
+  pr_pos.level = myleaf.curr_pos.level + 1;
+  int new_pos[] = { 2 };
+  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
+  INTEGER new_val(0);
+  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
+  if (temp_leaf != NULL)
+    new_val.RAW_encode(General__Types::INT1_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 GraphicsContextReq__union::ALT_moveGraphicsCursor:
+  if (field_subcommandID != 1) {
+  RAW_enc_tr_pos pr_pos;
+  pr_pos.level = myleaf.curr_pos.level + 1;
+  int new_pos[] = { 2 };
+  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
+  INTEGER new_val(1);
+  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
+  if (temp_leaf != NULL)
+    new_val.RAW_encode(General__Types::INT1_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 GraphicsContextReq__union::ALT_setForegroundColour:
+  if (field_subcommandID != 2) {
+  RAW_enc_tr_pos pr_pos;
+  pr_pos.level = myleaf.curr_pos.level + 1;
+  int new_pos[] = { 2 };
+  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
+  INTEGER new_val(2);
+  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
+  if (temp_leaf != NULL)
+    new_val.RAW_encode(General__Types::INT1_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 GraphicsContextReq__union::ALT_setBackgroundColour:
+  if (field_subcommandID != 3) {
+  RAW_enc_tr_pos pr_pos;
+  pr_pos.level = myleaf.curr_pos.level + 1;
+  int new_pos[] = { 2 };
+  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
+  INTEGER new_val(3);
+  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
+  if (temp_leaf != NULL)
+    new_val.RAW_encode(General__Types::INT1_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 GraphicsContextReq__union::ALT_setLineAttributesObjectID:
+  if (field_subcommandID != 4) {
+  RAW_enc_tr_pos pr_pos;
+  pr_pos.level = myleaf.curr_pos.level + 1;
+  int new_pos[] = { 2 };
+  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
+  INTEGER new_val(4);
+  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
+  if (temp_leaf != NULL)
+    new_val.RAW_encode(General__Types::INT1_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 GraphicsContextReq__union::ALT_setFileAttributesObjectID:
+  if (field_subcommandID != 5) {
+  RAW_enc_tr_pos pr_pos;
+  pr_pos.level = myleaf.curr_pos.level + 1;
+  int new_pos[] = { 2 };
+  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
+  INTEGER new_val(5);
+  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
+  if (temp_leaf != NULL)
+    new_val.RAW_encode(General__Types::INT1_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 GraphicsContextReq__union::ALT_setFontAttributesObjectID:
+  if (field_subcommandID != 6) {
+  RAW_enc_tr_pos pr_pos;
+  pr_pos.level = myleaf.curr_pos.level + 1;
+  int new_pos[] = { 2 };
+  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
+  INTEGER new_val(6);
+  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
+  if (temp_leaf != NULL)
+    new_val.RAW_encode(General__Types::INT1_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 GraphicsContextReq__union::ALT_eraseRectangle:
+  if (field_subcommandID != 7) {
+  RAW_enc_tr_pos pr_pos;
+  pr_pos.level = myleaf.curr_pos.level + 1;
+  int new_pos[] = { 2 };
+  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
+  INTEGER new_val(7);
+  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
+  if (temp_leaf != NULL)
+    new_val.RAW_encode(General__Types::INT1_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 GraphicsContextReq__union::ALT_drawPoint:
+  if (field_subcommandID != 8) {
+  RAW_enc_tr_pos pr_pos;
+  pr_pos.level = myleaf.curr_pos.level + 1;
+  int new_pos[] = { 2 };
+  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
+  INTEGER new_val(8);
+  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
+  if (temp_leaf != NULL)
+    new_val.RAW_encode(General__Types::INT1_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 GraphicsContextReq__union::ALT_drawLine:
+  if (field_subcommandID != 9) {
+  RAW_enc_tr_pos pr_pos;
+  pr_pos.level = myleaf.curr_pos.level + 1;
+  int new_pos[] = { 2 };
+  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
+  INTEGER new_val(9);
+  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
+  if (temp_leaf != NULL)
+    new_val.RAW_encode(General__Types::INT1_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 GraphicsContextReq__union::ALT_drawRectangle:
+  if (field_subcommandID != 10) {
+  RAW_enc_tr_pos pr_pos;
+  pr_pos.level = myleaf.curr_pos.level + 1;
+  int new_pos[] = { 2 };
+  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
+  INTEGER new_val(10);
+  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
+  if (temp_leaf != NULL)
+    new_val.RAW_encode(General__Types::INT1_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 GraphicsContextReq__union::ALT_drawClosedEllipse:
+  if (field_subcommandID != 11) {
+  RAW_enc_tr_pos pr_pos;
+  pr_pos.level = myleaf.curr_pos.level + 1;
+  int new_pos[] = { 2 };
+  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
+  INTEGER new_val(11);
+  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
+  if (temp_leaf != NULL)
+    new_val.RAW_encode(General__Types::INT1_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 GraphicsContextReq__union::ALT_drawPolygon:
+  if (field_subcommandID != 12) {
+  RAW_enc_tr_pos pr_pos;
+  pr_pos.level = myleaf.curr_pos.level + 1;
+  int new_pos[] = { 2 };
+  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
+  INTEGER new_val(12);
+  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
+  if (temp_leaf != NULL)
+    new_val.RAW_encode(General__Types::INT1_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 GraphicsContextReq__union::ALT_drawText:
+  if (field_subcommandID != 13) {
+  RAW_enc_tr_pos pr_pos;
+  pr_pos.level = myleaf.curr_pos.level + 1;
+  int new_pos[] = { 2 };
+  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
+  INTEGER new_val(13);
+  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
+  if (temp_leaf != NULL)
+    new_val.RAW_encode(General__Types::INT1_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 GraphicsContextReq__union::ALT_panViewport:
+  if (field_subcommandID != 14) {
+  RAW_enc_tr_pos pr_pos;
+  pr_pos.level = myleaf.curr_pos.level + 1;
+  int new_pos[] = { 2 };
+  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
+  INTEGER new_val(14);
+  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
+  if (temp_leaf != NULL)
+    new_val.RAW_encode(General__Types::INT1_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 GraphicsContextReq__union::ALT_zoomViewport:
+  if (field_subcommandID != 15) {
+  RAW_enc_tr_pos pr_pos;
+  pr_pos.level = myleaf.curr_pos.level + 1;
+  int new_pos[] = { 2 };
+  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
+  INTEGER new_val(15);
+  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
+  if (temp_leaf != NULL)
+    new_val.RAW_encode(General__Types::INT1_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 GraphicsContextReq__union::ALT_panAndZoomViewport:
+  if (field_subcommandID != 16) {
+  RAW_enc_tr_pos pr_pos;
+  pr_pos.level = myleaf.curr_pos.level + 1;
+  int new_pos[] = { 2 };
+  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
+  INTEGER new_val(16);
+  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
+  if (temp_leaf != NULL)
+    new_val.RAW_encode(General__Types::INT1_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 GraphicsContextReq__union::ALT_changeViewportSize:
+  if (field_subcommandID != 17) {
+  RAW_enc_tr_pos pr_pos;
+  pr_pos.level = myleaf.curr_pos.level + 1;
+  int new_pos[] = { 2 };
+  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
+  INTEGER new_val(17);
+  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
+  if (temp_leaf != NULL)
+    new_val.RAW_encode(General__Types::INT1_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 GraphicsContextReq__union::ALT_drawVTObject:
+  if (field_subcommandID != 18) {
+  RAW_enc_tr_pos pr_pos;
+  pr_pos.level = myleaf.curr_pos.level + 1;
+  int new_pos[] = { 2 };
+  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
+  INTEGER new_val(18);
+  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
+  if (temp_leaf != NULL)
+    new_val.RAW_encode(General__Types::INT1_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 GraphicsContextReq__union::ALT_copyCanvasToPictureGraphic:
+  if (field_subcommandID != 19) {
+  RAW_enc_tr_pos pr_pos;
+  pr_pos.level = myleaf.curr_pos.level + 1;
+  int new_pos[] = { 2 };
+  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
+  INTEGER new_val(19);
+  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
+  if (temp_leaf != NULL)
+    new_val.RAW_encode(General__Types::INT1_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 GraphicsContextReq__union::ALT_copyViewportToPictureGraphic:
+  if (field_subcommandID != 20) {
+  RAW_enc_tr_pos pr_pos;
+  pr_pos.level = myleaf.curr_pos.level + 1;
+  int new_pos[] = { 2 };
+  pr_pos.pos = init_new_tree_pos(myleaf.curr_pos, 1, new_pos);
+  INTEGER new_val(20);
+  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
+  if (temp_leaf != NULL)
+    new_val.RAW_encode(General__Types::INT1_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 GraphicsContextReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectIDofaGraphicsContextObject;
+INTEGER_template field_subcommandID;
+GraphicsContextReq__union_template field_parameters;
+};
+
+void GraphicsContextReq_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_vtfunction = ANY_VALUE;
+single_value->field_objectIDofaGraphicsContextObject = ANY_VALUE;
+single_value->field_subcommandID = ANY_VALUE;
+single_value->field_parameters = ANY_VALUE;
+}
+}
+}
+
+void GraphicsContextReq_template::copy_value(const GraphicsContextReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectIDofaGraphicsContextObject().is_bound()) {
+  single_value->field_objectIDofaGraphicsContextObject = other_value.objectIDofaGraphicsContextObject();
+} else {
+  single_value->field_objectIDofaGraphicsContextObject.clean_up();
+}
+if (other_value.subcommandID().is_bound()) {
+  single_value->field_subcommandID = other_value.subcommandID();
+} else {
+  single_value->field_subcommandID.clean_up();
+}
+if (other_value.parameters().is_bound()) {
+  single_value->field_parameters = other_value.parameters();
+} else {
+  single_value->field_parameters.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void GraphicsContextReq_template::copy_template(const GraphicsContextReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectIDofaGraphicsContextObject().get_selection()) {
+single_value->field_objectIDofaGraphicsContextObject = other_value.objectIDofaGraphicsContextObject();
+} else {
+single_value->field_objectIDofaGraphicsContextObject.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.subcommandID().get_selection()) {
+single_value->field_subcommandID = other_value.subcommandID();
+} else {
+single_value->field_subcommandID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.parameters().get_selection()) {
+single_value->field_parameters = other_value.parameters();
+} else {
+single_value->field_parameters.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new GraphicsContextReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.GraphicsContextReq.");
+break;
+}
+set_selection(other_value);
+}
+
+GraphicsContextReq_template::GraphicsContextReq_template()
+{
+}
+
+GraphicsContextReq_template::GraphicsContextReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+GraphicsContextReq_template::GraphicsContextReq_template(const GraphicsContextReq& other_value)
+{
+copy_value(other_value);
+}
+
+GraphicsContextReq_template::GraphicsContextReq_template(const OPTIONAL<GraphicsContextReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const GraphicsContextReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.GraphicsContextReq from an unbound optional field.");
+}
+}
+
+GraphicsContextReq_template::GraphicsContextReq_template(const GraphicsContextReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+GraphicsContextReq_template::~GraphicsContextReq_template()
+{
+clean_up();
+}
+
+GraphicsContextReq_template& GraphicsContextReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+GraphicsContextReq_template& GraphicsContextReq_template::operator=(const GraphicsContextReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+GraphicsContextReq_template& GraphicsContextReq_template::operator=(const OPTIONAL<GraphicsContextReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const GraphicsContextReq&)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 @IsobusVTMessageTypes.GraphicsContextReq.");
+}
+return *this;
+}
+
+GraphicsContextReq_template& GraphicsContextReq_template::operator=(const GraphicsContextReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean GraphicsContextReq_template::match(const GraphicsContextReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectIDofaGraphicsContextObject().is_bound()) return FALSE;
+if(!single_value->field_objectIDofaGraphicsContextObject.match(other_value.objectIDofaGraphicsContextObject(), legacy))return FALSE;
+if(!other_value.subcommandID().is_bound()) return FALSE;
+if(!single_value->field_subcommandID.match(other_value.subcommandID(), legacy))return FALSE;
+if(!other_value.parameters().is_bound()) return FALSE;
+if(!single_value->field_parameters.match(other_value.parameters(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.GraphicsContextReq.");
+}
+return FALSE;
+}
+
+boolean GraphicsContextReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectIDofaGraphicsContextObject.is_bound()
+
+ ||single_value->field_subcommandID.is_bound()
+
+ ||single_value->field_parameters.is_bound()
+;
+}
+
+boolean GraphicsContextReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectIDofaGraphicsContextObject.is_value()
+ &&single_value->field_subcommandID.is_value()
+ &&single_value->field_parameters.is_value();
+}
+
+void GraphicsContextReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+GraphicsContextReq GraphicsContextReq_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 @IsobusVTMessageTypes.GraphicsContextReq.");
+GraphicsContextReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectIDofaGraphicsContextObject.is_bound()) {
+ret_val.objectIDofaGraphicsContextObject() = single_value->field_objectIDofaGraphicsContextObject.valueof();
+}
+if (single_value->field_subcommandID.is_bound()) {
+ret_val.subcommandID() = single_value->field_subcommandID.valueof();
+}
+if (single_value->field_parameters.is_bound()) {
+ret_val.parameters() = single_value->field_parameters.valueof();
+}
+return ret_val;
+}
+
+void GraphicsContextReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.GraphicsContextReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new GraphicsContextReq_template[list_length];
+}
+
+GraphicsContextReq_template& GraphicsContextReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.GraphicsContextReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.GraphicsContextReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& GraphicsContextReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& GraphicsContextReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.GraphicsContextReq.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& GraphicsContextReq_template::objectIDofaGraphicsContextObject()
+{
+set_specific();
+return single_value->field_objectIDofaGraphicsContextObject;
+}
+
+const INTEGER_template& GraphicsContextReq_template::objectIDofaGraphicsContextObject() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectIDofaGraphicsContextObject of a non-specific template of type @IsobusVTMessageTypes.GraphicsContextReq.");
+return single_value->field_objectIDofaGraphicsContextObject;
+}
+
+INTEGER_template& GraphicsContextReq_template::subcommandID()
+{
+set_specific();
+return single_value->field_subcommandID;
+}
+
+const INTEGER_template& GraphicsContextReq_template::subcommandID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field subcommandID of a non-specific template of type @IsobusVTMessageTypes.GraphicsContextReq.");
+return single_value->field_subcommandID;
+}
+
+GraphicsContextReq__union_template& GraphicsContextReq_template::parameters()
+{
+set_specific();
+return single_value->field_parameters;
+}
+
+const GraphicsContextReq__union_template& GraphicsContextReq_template::parameters() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field parameters of a non-specific template of type @IsobusVTMessageTypes.GraphicsContextReq.");
+return single_value->field_parameters;
+}
+
+int GraphicsContextReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GraphicsContextReq 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 @IsobusVTMessageTypes.GraphicsContextReq 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 @IsobusVTMessageTypes.GraphicsContextReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GraphicsContextReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GraphicsContextReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GraphicsContextReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.GraphicsContextReq.");
+  }
+  return 0;
+}
+
+void GraphicsContextReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectIDofaGraphicsContextObject := ");
+single_value->field_objectIDofaGraphicsContextObject.log();
+TTCN_Logger::log_event_str(", subcommandID := ");
+single_value->field_subcommandID.log();
+TTCN_Logger::log_event_str(", parameters := ");
+single_value->field_parameters.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void GraphicsContextReq_template::log_match(const GraphicsContextReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectIDofaGraphicsContextObject.match(match_value.objectIDofaGraphicsContextObject(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectIDofaGraphicsContextObject");
+single_value->field_objectIDofaGraphicsContextObject.log_match(match_value.objectIDofaGraphicsContextObject(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_subcommandID.match(match_value.subcommandID(), legacy)){
+TTCN_Logger::log_logmatch_info(".subcommandID");
+single_value->field_subcommandID.log_match(match_value.subcommandID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_parameters.match(match_value.parameters(), legacy)){
+TTCN_Logger::log_logmatch_info(".parameters");
+single_value->field_parameters.log_match(match_value.parameters(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectIDofaGraphicsContextObject := ");
+single_value->field_objectIDofaGraphicsContextObject.log_match(match_value.objectIDofaGraphicsContextObject(), legacy);
+TTCN_Logger::log_event_str(", subcommandID := ");
+single_value->field_subcommandID.log_match(match_value.subcommandID(), legacy);
+TTCN_Logger::log_event_str(", parameters := ");
+single_value->field_parameters.log_match(match_value.parameters(), 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 GraphicsContextReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectIDofaGraphicsContextObject.encode_text(text_buf);
+single_value->field_subcommandID.encode_text(text_buf);
+single_value->field_parameters.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 @IsobusVTMessageTypes.GraphicsContextReq.");
+}
+}
+
+void GraphicsContextReq_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_vtfunction.decode_text(text_buf);
+single_value->field_objectIDofaGraphicsContextObject.decode_text(text_buf);
+single_value->field_subcommandID.decode_text(text_buf);
+single_value->field_parameters.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 GraphicsContextReq_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 @IsobusVTMessageTypes.GraphicsContextReq.");
+}
+}
+
+void GraphicsContextReq_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: {
+    GraphicsContextReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.GraphicsContextReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectIDofaGraphicsContextObject().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) subcommandID().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) parameters().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectIDofaGraphicsContextObject")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofaGraphicsContextObject().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(), "subcommandID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          subcommandID().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(), "parameters")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          parameters().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 @IsobusVTMessageTypes.GraphicsContextReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.GraphicsContextReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void GraphicsContextReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GraphicsContextReq");
+single_value->field_objectIDofaGraphicsContextObject.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GraphicsContextReq");
+single_value->field_subcommandID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GraphicsContextReq");
+single_value->field_parameters.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GraphicsContextReq");
+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 : "@IsobusVTMessageTypes.GraphicsContextReq");
+}
+
+boolean GraphicsContextReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean GraphicsContextReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+GetAttributeValueRes::GetAttributeValueRes()
+{
+}
+
+GetAttributeValueRes::GetAttributeValueRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_ObjectIDorFFFFtoTndicateAnErrorResponse,
+    const INTEGER& par_AttributeIDofTheObject,
+    const OCTETSTRING& par_data1,
+    const OCTETSTRING& par_data2,
+    const OCTETSTRING& par_data3,
+    const OCTETSTRING& par_data4)
+  :   field_vtfunction(par_vtfunction),
+  field_ObjectIDorFFFFtoTndicateAnErrorResponse(par_ObjectIDorFFFFtoTndicateAnErrorResponse),
+  field_AttributeIDofTheObject(par_AttributeIDofTheObject),
+  field_data1(par_data1),
+  field_data2(par_data2),
+  field_data3(par_data3),
+  field_data4(par_data4)
+{
+}
+
+GetAttributeValueRes::GetAttributeValueRes(const GetAttributeValueRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.GetAttributeValueRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.ObjectIDorFFFFtoTndicateAnErrorResponse().is_bound()) field_ObjectIDorFFFFtoTndicateAnErrorResponse = other_value.ObjectIDorFFFFtoTndicateAnErrorResponse();
+else field_ObjectIDorFFFFtoTndicateAnErrorResponse.clean_up();
+if (other_value.AttributeIDofTheObject().is_bound()) field_AttributeIDofTheObject = other_value.AttributeIDofTheObject();
+else field_AttributeIDofTheObject.clean_up();
+if (other_value.data1().is_bound()) field_data1 = other_value.data1();
+else field_data1.clean_up();
+if (other_value.data2().is_bound()) field_data2 = other_value.data2();
+else field_data2.clean_up();
+if (other_value.data3().is_bound()) field_data3 = other_value.data3();
+else field_data3.clean_up();
+if (other_value.data4().is_bound()) field_data4 = other_value.data4();
+else field_data4.clean_up();
+}
+
+void GetAttributeValueRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_ObjectIDorFFFFtoTndicateAnErrorResponse.clean_up();
+field_AttributeIDofTheObject.clean_up();
+field_data1.clean_up();
+field_data2.clean_up();
+field_data3.clean_up();
+field_data4.clean_up();
+}
+
+const TTCN_Typedescriptor_t* GetAttributeValueRes::get_descriptor() const { return &GetAttributeValueRes_descr_; }
+GetAttributeValueRes& GetAttributeValueRes::operator=(const GetAttributeValueRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.GetAttributeValueRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.ObjectIDorFFFFtoTndicateAnErrorResponse().is_bound()) field_ObjectIDorFFFFtoTndicateAnErrorResponse = other_value.ObjectIDorFFFFtoTndicateAnErrorResponse();
+  else field_ObjectIDorFFFFtoTndicateAnErrorResponse.clean_up();
+  if (other_value.AttributeIDofTheObject().is_bound()) field_AttributeIDofTheObject = other_value.AttributeIDofTheObject();
+  else field_AttributeIDofTheObject.clean_up();
+  if (other_value.data1().is_bound()) field_data1 = other_value.data1();
+  else field_data1.clean_up();
+  if (other_value.data2().is_bound()) field_data2 = other_value.data2();
+  else field_data2.clean_up();
+  if (other_value.data3().is_bound()) field_data3 = other_value.data3();
+  else field_data3.clean_up();
+  if (other_value.data4().is_bound()) field_data4 = other_value.data4();
+  else field_data4.clean_up();
+}
+return *this;
+}
+
+boolean GetAttributeValueRes::operator==(const GetAttributeValueRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_ObjectIDorFFFFtoTndicateAnErrorResponse==other_value.field_ObjectIDorFFFFtoTndicateAnErrorResponse
+  && field_AttributeIDofTheObject==other_value.field_AttributeIDofTheObject
+  && field_data1==other_value.field_data1
+  && field_data2==other_value.field_data2
+  && field_data3==other_value.field_data3
+  && field_data4==other_value.field_data4;
+}
+
+boolean GetAttributeValueRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_ObjectIDorFFFFtoTndicateAnErrorResponse.is_bound())
+  || (field_AttributeIDofTheObject.is_bound())
+  || (field_data1.is_bound())
+  || (field_data2.is_bound())
+  || (field_data3.is_bound())
+  || (field_data4.is_bound());
+}
+boolean GetAttributeValueRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_ObjectIDorFFFFtoTndicateAnErrorResponse.is_value()
+  && field_AttributeIDofTheObject.is_value()
+  && field_data1.is_value()
+  && field_data2.is_value()
+  && field_data3.is_value()
+  && field_data4.is_value();
+}
+void GetAttributeValueRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", ObjectIDorFFFFtoTndicateAnErrorResponse := ");
+field_ObjectIDorFFFFtoTndicateAnErrorResponse.log();
+TTCN_Logger::log_event_str(", AttributeIDofTheObject := ");
+field_AttributeIDofTheObject.log();
+TTCN_Logger::log_event_str(", data1 := ");
+field_data1.log();
+TTCN_Logger::log_event_str(", data2 := ");
+field_data2.log();
+TTCN_Logger::log_event_str(", data3 := ");
+field_data3.log();
+TTCN_Logger::log_event_str(", data4 := ");
+field_data4.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void GetAttributeValueRes::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 @IsobusVTMessageTypes.GetAttributeValueRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ObjectIDorFFFFtoTndicateAnErrorResponse().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) AttributeIDofTheObject().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) data1().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) data2().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) data3().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) data4().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "ObjectIDorFFFFtoTndicateAnErrorResponse")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ObjectIDorFFFFtoTndicateAnErrorResponse().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(), "AttributeIDofTheObject")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          AttributeIDofTheObject().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(), "data1")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          data1().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(), "data2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          data2().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(), "data3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          data3().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(), "data4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          data4().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 @IsobusVTMessageTypes.GetAttributeValueRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.GetAttributeValueRes");
+  }
+}
+
+void GetAttributeValueRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (ObjectIDorFFFFtoTndicateAnErrorResponse().is_bound()) ObjectIDorFFFFtoTndicateAnErrorResponse().set_implicit_omit();
+if (AttributeIDofTheObject().is_bound()) AttributeIDofTheObject().set_implicit_omit();
+if (data1().is_bound()) data1().set_implicit_omit();
+if (data2().is_bound()) data2().set_implicit_omit();
+if (data3().is_bound()) data3().set_implicit_omit();
+if (data4().is_bound()) data4().set_implicit_omit();
+}
+
+void GetAttributeValueRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_ObjectIDorFFFFtoTndicateAnErrorResponse.encode_text(text_buf);
+field_AttributeIDofTheObject.encode_text(text_buf);
+field_data1.encode_text(text_buf);
+field_data2.encode_text(text_buf);
+field_data3.encode_text(text_buf);
+field_data4.encode_text(text_buf);
+}
+
+void GetAttributeValueRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_ObjectIDorFFFFtoTndicateAnErrorResponse.decode_text(text_buf);
+field_AttributeIDofTheObject.decode_text(text_buf);
+field_data1.decode_text(text_buf);
+field_data2.decode_text(text_buf);
+field_data3.decode_text(text_buf);
+field_data4.decode_text(text_buf);
+}
+
+void GetAttributeValueRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void GetAttributeValueRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int GetAttributeValueRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, AnyObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_ObjectIDorFFFFtoTndicateAnErrorResponse.RAW_decode(AnyObjectID_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, AttributeID_descr_.raw->forceomit);
+  decoded_field_length = field_AttributeIDofTheObject.RAW_decode(AttributeID_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::OCT1_descr_.raw->forceomit);
+  decoded_field_length = field_data1.RAW_decode(General__Types::OCT1_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::OCT1_descr_.raw->forceomit);
+  decoded_field_length = field_data2.RAW_decode(General__Types::OCT1_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::OCT1_descr_.raw->forceomit);
+  decoded_field_length = field_data3.RAW_decode(General__Types::OCT1_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::OCT1_descr_.raw->forceomit);
+  decoded_field_length = field_data4.RAW_decode(General__Types::OCT1_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int GetAttributeValueRes::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, AnyObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, AttributeID_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::OCT1_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, General__Types::OCT1_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, General__Types::OCT1_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_ObjectIDorFFFFtoTndicateAnErrorResponse.RAW_encode(AnyObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_AttributeIDofTheObject.RAW_encode(AttributeID_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_data1.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_data2.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_data3.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_data4.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[6]);
+  return myleaf.length = encoded_length;
+}
+
+struct GetAttributeValueRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_ObjectIDorFFFFtoTndicateAnErrorResponse;
+INTEGER_template field_AttributeIDofTheObject;
+OCTETSTRING_template field_data1;
+OCTETSTRING_template field_data2;
+OCTETSTRING_template field_data3;
+OCTETSTRING_template field_data4;
+};
+
+void GetAttributeValueRes_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_vtfunction = ANY_VALUE;
+single_value->field_ObjectIDorFFFFtoTndicateAnErrorResponse = ANY_VALUE;
+single_value->field_AttributeIDofTheObject = ANY_VALUE;
+single_value->field_data1 = ANY_VALUE;
+single_value->field_data2 = ANY_VALUE;
+single_value->field_data3 = ANY_VALUE;
+single_value->field_data4 = ANY_VALUE;
+}
+}
+}
+
+void GetAttributeValueRes_template::copy_value(const GetAttributeValueRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.ObjectIDorFFFFtoTndicateAnErrorResponse().is_bound()) {
+  single_value->field_ObjectIDorFFFFtoTndicateAnErrorResponse = other_value.ObjectIDorFFFFtoTndicateAnErrorResponse();
+} else {
+  single_value->field_ObjectIDorFFFFtoTndicateAnErrorResponse.clean_up();
+}
+if (other_value.AttributeIDofTheObject().is_bound()) {
+  single_value->field_AttributeIDofTheObject = other_value.AttributeIDofTheObject();
+} else {
+  single_value->field_AttributeIDofTheObject.clean_up();
+}
+if (other_value.data1().is_bound()) {
+  single_value->field_data1 = other_value.data1();
+} else {
+  single_value->field_data1.clean_up();
+}
+if (other_value.data2().is_bound()) {
+  single_value->field_data2 = other_value.data2();
+} else {
+  single_value->field_data2.clean_up();
+}
+if (other_value.data3().is_bound()) {
+  single_value->field_data3 = other_value.data3();
+} else {
+  single_value->field_data3.clean_up();
+}
+if (other_value.data4().is_bound()) {
+  single_value->field_data4 = other_value.data4();
+} else {
+  single_value->field_data4.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void GetAttributeValueRes_template::copy_template(const GetAttributeValueRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.ObjectIDorFFFFtoTndicateAnErrorResponse().get_selection()) {
+single_value->field_ObjectIDorFFFFtoTndicateAnErrorResponse = other_value.ObjectIDorFFFFtoTndicateAnErrorResponse();
+} else {
+single_value->field_ObjectIDorFFFFtoTndicateAnErrorResponse.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.AttributeIDofTheObject().get_selection()) {
+single_value->field_AttributeIDofTheObject = other_value.AttributeIDofTheObject();
+} else {
+single_value->field_AttributeIDofTheObject.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.data1().get_selection()) {
+single_value->field_data1 = other_value.data1();
+} else {
+single_value->field_data1.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.data2().get_selection()) {
+single_value->field_data2 = other_value.data2();
+} else {
+single_value->field_data2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.data3().get_selection()) {
+single_value->field_data3 = other_value.data3();
+} else {
+single_value->field_data3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.data4().get_selection()) {
+single_value->field_data4 = other_value.data4();
+} else {
+single_value->field_data4.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new GetAttributeValueRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetAttributeValueRes.");
+break;
+}
+set_selection(other_value);
+}
+
+GetAttributeValueRes_template::GetAttributeValueRes_template()
+{
+}
+
+GetAttributeValueRes_template::GetAttributeValueRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+GetAttributeValueRes_template::GetAttributeValueRes_template(const GetAttributeValueRes& other_value)
+{
+copy_value(other_value);
+}
+
+GetAttributeValueRes_template::GetAttributeValueRes_template(const OPTIONAL<GetAttributeValueRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const GetAttributeValueRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.GetAttributeValueRes from an unbound optional field.");
+}
+}
+
+GetAttributeValueRes_template::GetAttributeValueRes_template(const GetAttributeValueRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+GetAttributeValueRes_template::~GetAttributeValueRes_template()
+{
+clean_up();
+}
+
+GetAttributeValueRes_template& GetAttributeValueRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+GetAttributeValueRes_template& GetAttributeValueRes_template::operator=(const GetAttributeValueRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+GetAttributeValueRes_template& GetAttributeValueRes_template::operator=(const OPTIONAL<GetAttributeValueRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const GetAttributeValueRes&)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 @IsobusVTMessageTypes.GetAttributeValueRes.");
+}
+return *this;
+}
+
+GetAttributeValueRes_template& GetAttributeValueRes_template::operator=(const GetAttributeValueRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean GetAttributeValueRes_template::match(const GetAttributeValueRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.ObjectIDorFFFFtoTndicateAnErrorResponse().is_bound()) return FALSE;
+if(!single_value->field_ObjectIDorFFFFtoTndicateAnErrorResponse.match(other_value.ObjectIDorFFFFtoTndicateAnErrorResponse(), legacy))return FALSE;
+if(!other_value.AttributeIDofTheObject().is_bound()) return FALSE;
+if(!single_value->field_AttributeIDofTheObject.match(other_value.AttributeIDofTheObject(), legacy))return FALSE;
+if(!other_value.data1().is_bound()) return FALSE;
+if(!single_value->field_data1.match(other_value.data1(), legacy))return FALSE;
+if(!other_value.data2().is_bound()) return FALSE;
+if(!single_value->field_data2.match(other_value.data2(), legacy))return FALSE;
+if(!other_value.data3().is_bound()) return FALSE;
+if(!single_value->field_data3.match(other_value.data3(), legacy))return FALSE;
+if(!other_value.data4().is_bound()) return FALSE;
+if(!single_value->field_data4.match(other_value.data4(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetAttributeValueRes.");
+}
+return FALSE;
+}
+
+boolean GetAttributeValueRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_ObjectIDorFFFFtoTndicateAnErrorResponse.is_bound()
+
+ ||single_value->field_AttributeIDofTheObject.is_bound()
+
+ ||single_value->field_data1.is_bound()
+
+ ||single_value->field_data2.is_bound()
+
+ ||single_value->field_data3.is_bound()
+
+ ||single_value->field_data4.is_bound()
+;
+}
+
+boolean GetAttributeValueRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_ObjectIDorFFFFtoTndicateAnErrorResponse.is_value()
+ &&single_value->field_AttributeIDofTheObject.is_value()
+ &&single_value->field_data1.is_value()
+ &&single_value->field_data2.is_value()
+ &&single_value->field_data3.is_value()
+ &&single_value->field_data4.is_value();
+}
+
+void GetAttributeValueRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+GetAttributeValueRes GetAttributeValueRes_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 @IsobusVTMessageTypes.GetAttributeValueRes.");
+GetAttributeValueRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_ObjectIDorFFFFtoTndicateAnErrorResponse.is_bound()) {
+ret_val.ObjectIDorFFFFtoTndicateAnErrorResponse() = single_value->field_ObjectIDorFFFFtoTndicateAnErrorResponse.valueof();
+}
+if (single_value->field_AttributeIDofTheObject.is_bound()) {
+ret_val.AttributeIDofTheObject() = single_value->field_AttributeIDofTheObject.valueof();
+}
+if (single_value->field_data1.is_bound()) {
+ret_val.data1() = single_value->field_data1.valueof();
+}
+if (single_value->field_data2.is_bound()) {
+ret_val.data2() = single_value->field_data2.valueof();
+}
+if (single_value->field_data3.is_bound()) {
+ret_val.data3() = single_value->field_data3.valueof();
+}
+if (single_value->field_data4.is_bound()) {
+ret_val.data4() = single_value->field_data4.valueof();
+}
+return ret_val;
+}
+
+void GetAttributeValueRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.GetAttributeValueRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new GetAttributeValueRes_template[list_length];
+}
+
+GetAttributeValueRes_template& GetAttributeValueRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.GetAttributeValueRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.GetAttributeValueRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& GetAttributeValueRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& GetAttributeValueRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.GetAttributeValueRes.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& GetAttributeValueRes_template::ObjectIDorFFFFtoTndicateAnErrorResponse()
+{
+set_specific();
+return single_value->field_ObjectIDorFFFFtoTndicateAnErrorResponse;
+}
+
+const INTEGER_template& GetAttributeValueRes_template::ObjectIDorFFFFtoTndicateAnErrorResponse() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field ObjectIDorFFFFtoTndicateAnErrorResponse of a non-specific template of type @IsobusVTMessageTypes.GetAttributeValueRes.");
+return single_value->field_ObjectIDorFFFFtoTndicateAnErrorResponse;
+}
+
+INTEGER_template& GetAttributeValueRes_template::AttributeIDofTheObject()
+{
+set_specific();
+return single_value->field_AttributeIDofTheObject;
+}
+
+const INTEGER_template& GetAttributeValueRes_template::AttributeIDofTheObject() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field AttributeIDofTheObject of a non-specific template of type @IsobusVTMessageTypes.GetAttributeValueRes.");
+return single_value->field_AttributeIDofTheObject;
+}
+
+OCTETSTRING_template& GetAttributeValueRes_template::data1()
+{
+set_specific();
+return single_value->field_data1;
+}
+
+const OCTETSTRING_template& GetAttributeValueRes_template::data1() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field data1 of a non-specific template of type @IsobusVTMessageTypes.GetAttributeValueRes.");
+return single_value->field_data1;
+}
+
+OCTETSTRING_template& GetAttributeValueRes_template::data2()
+{
+set_specific();
+return single_value->field_data2;
+}
+
+const OCTETSTRING_template& GetAttributeValueRes_template::data2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field data2 of a non-specific template of type @IsobusVTMessageTypes.GetAttributeValueRes.");
+return single_value->field_data2;
+}
+
+OCTETSTRING_template& GetAttributeValueRes_template::data3()
+{
+set_specific();
+return single_value->field_data3;
+}
+
+const OCTETSTRING_template& GetAttributeValueRes_template::data3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field data3 of a non-specific template of type @IsobusVTMessageTypes.GetAttributeValueRes.");
+return single_value->field_data3;
+}
+
+OCTETSTRING_template& GetAttributeValueRes_template::data4()
+{
+set_specific();
+return single_value->field_data4;
+}
+
+const OCTETSTRING_template& GetAttributeValueRes_template::data4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field data4 of a non-specific template of type @IsobusVTMessageTypes.GetAttributeValueRes.");
+return single_value->field_data4;
+}
+
+int GetAttributeValueRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetAttributeValueRes 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 @IsobusVTMessageTypes.GetAttributeValueRes 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 @IsobusVTMessageTypes.GetAttributeValueRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetAttributeValueRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetAttributeValueRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetAttributeValueRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetAttributeValueRes.");
+  }
+  return 0;
+}
+
+void GetAttributeValueRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", ObjectIDorFFFFtoTndicateAnErrorResponse := ");
+single_value->field_ObjectIDorFFFFtoTndicateAnErrorResponse.log();
+TTCN_Logger::log_event_str(", AttributeIDofTheObject := ");
+single_value->field_AttributeIDofTheObject.log();
+TTCN_Logger::log_event_str(", data1 := ");
+single_value->field_data1.log();
+TTCN_Logger::log_event_str(", data2 := ");
+single_value->field_data2.log();
+TTCN_Logger::log_event_str(", data3 := ");
+single_value->field_data3.log();
+TTCN_Logger::log_event_str(", data4 := ");
+single_value->field_data4.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void GetAttributeValueRes_template::log_match(const GetAttributeValueRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_ObjectIDorFFFFtoTndicateAnErrorResponse.match(match_value.ObjectIDorFFFFtoTndicateAnErrorResponse(), legacy)){
+TTCN_Logger::log_logmatch_info(".ObjectIDorFFFFtoTndicateAnErrorResponse");
+single_value->field_ObjectIDorFFFFtoTndicateAnErrorResponse.log_match(match_value.ObjectIDorFFFFtoTndicateAnErrorResponse(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_AttributeIDofTheObject.match(match_value.AttributeIDofTheObject(), legacy)){
+TTCN_Logger::log_logmatch_info(".AttributeIDofTheObject");
+single_value->field_AttributeIDofTheObject.log_match(match_value.AttributeIDofTheObject(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_data1.match(match_value.data1(), legacy)){
+TTCN_Logger::log_logmatch_info(".data1");
+single_value->field_data1.log_match(match_value.data1(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_data2.match(match_value.data2(), legacy)){
+TTCN_Logger::log_logmatch_info(".data2");
+single_value->field_data2.log_match(match_value.data2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_data3.match(match_value.data3(), legacy)){
+TTCN_Logger::log_logmatch_info(".data3");
+single_value->field_data3.log_match(match_value.data3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_data4.match(match_value.data4(), legacy)){
+TTCN_Logger::log_logmatch_info(".data4");
+single_value->field_data4.log_match(match_value.data4(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", ObjectIDorFFFFtoTndicateAnErrorResponse := ");
+single_value->field_ObjectIDorFFFFtoTndicateAnErrorResponse.log_match(match_value.ObjectIDorFFFFtoTndicateAnErrorResponse(), legacy);
+TTCN_Logger::log_event_str(", AttributeIDofTheObject := ");
+single_value->field_AttributeIDofTheObject.log_match(match_value.AttributeIDofTheObject(), legacy);
+TTCN_Logger::log_event_str(", data1 := ");
+single_value->field_data1.log_match(match_value.data1(), legacy);
+TTCN_Logger::log_event_str(", data2 := ");
+single_value->field_data2.log_match(match_value.data2(), legacy);
+TTCN_Logger::log_event_str(", data3 := ");
+single_value->field_data3.log_match(match_value.data3(), legacy);
+TTCN_Logger::log_event_str(", data4 := ");
+single_value->field_data4.log_match(match_value.data4(), 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 GetAttributeValueRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_ObjectIDorFFFFtoTndicateAnErrorResponse.encode_text(text_buf);
+single_value->field_AttributeIDofTheObject.encode_text(text_buf);
+single_value->field_data1.encode_text(text_buf);
+single_value->field_data2.encode_text(text_buf);
+single_value->field_data3.encode_text(text_buf);
+single_value->field_data4.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 @IsobusVTMessageTypes.GetAttributeValueRes.");
+}
+}
+
+void GetAttributeValueRes_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_vtfunction.decode_text(text_buf);
+single_value->field_ObjectIDorFFFFtoTndicateAnErrorResponse.decode_text(text_buf);
+single_value->field_AttributeIDofTheObject.decode_text(text_buf);
+single_value->field_data1.decode_text(text_buf);
+single_value->field_data2.decode_text(text_buf);
+single_value->field_data3.decode_text(text_buf);
+single_value->field_data4.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 GetAttributeValueRes_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 @IsobusVTMessageTypes.GetAttributeValueRes.");
+}
+}
+
+void GetAttributeValueRes_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: {
+    GetAttributeValueRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.GetAttributeValueRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ObjectIDorFFFFtoTndicateAnErrorResponse().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) AttributeIDofTheObject().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) data1().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) data2().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) data3().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) data4().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "ObjectIDorFFFFtoTndicateAnErrorResponse")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ObjectIDorFFFFtoTndicateAnErrorResponse().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(), "AttributeIDofTheObject")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          AttributeIDofTheObject().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(), "data1")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          data1().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(), "data2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          data2().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(), "data3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          data3().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(), "data4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          data4().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 @IsobusVTMessageTypes.GetAttributeValueRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.GetAttributeValueRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void GetAttributeValueRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetAttributeValueRes");
+single_value->field_ObjectIDorFFFFtoTndicateAnErrorResponse.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetAttributeValueRes");
+single_value->field_AttributeIDofTheObject.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetAttributeValueRes");
+single_value->field_data1.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetAttributeValueRes");
+single_value->field_data2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetAttributeValueRes");
+single_value->field_data3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetAttributeValueRes");
+single_value->field_data4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetAttributeValueRes");
+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 : "@IsobusVTMessageTypes.GetAttributeValueRes");
+}
+
+boolean GetAttributeValueRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean GetAttributeValueRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+GetAttributeValueReq::GetAttributeValueReq()
+{
+}
+
+GetAttributeValueReq::GetAttributeValueReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const INTEGER& par_AttributeIDofTheObject,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_objectID(par_objectID),
+  field_AttributeIDofTheObject(par_AttributeIDofTheObject),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+GetAttributeValueReq::GetAttributeValueReq(const GetAttributeValueReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.GetAttributeValueReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+else field_objectID.clean_up();
+if (other_value.AttributeIDofTheObject().is_bound()) field_AttributeIDofTheObject = other_value.AttributeIDofTheObject();
+else field_AttributeIDofTheObject.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void GetAttributeValueReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectID.clean_up();
+field_AttributeIDofTheObject.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* GetAttributeValueReq::get_descriptor() const { return &GetAttributeValueReq_descr_; }
+GetAttributeValueReq& GetAttributeValueReq::operator=(const GetAttributeValueReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.GetAttributeValueReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectID().is_bound()) field_objectID = other_value.objectID();
+  else field_objectID.clean_up();
+  if (other_value.AttributeIDofTheObject().is_bound()) field_AttributeIDofTheObject = other_value.AttributeIDofTheObject();
+  else field_AttributeIDofTheObject.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean GetAttributeValueReq::operator==(const GetAttributeValueReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectID==other_value.field_objectID
+  && field_AttributeIDofTheObject==other_value.field_AttributeIDofTheObject
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean GetAttributeValueReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectID.is_bound())
+  || (field_AttributeIDofTheObject.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean GetAttributeValueReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectID.is_value()
+  && field_AttributeIDofTheObject.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void GetAttributeValueReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+field_objectID.log();
+TTCN_Logger::log_event_str(", AttributeIDofTheObject := ");
+field_AttributeIDofTheObject.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void GetAttributeValueReq::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 @IsobusVTMessageTypes.GetAttributeValueReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) AttributeIDofTheObject().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "AttributeIDofTheObject")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          AttributeIDofTheObject().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.GetAttributeValueReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.GetAttributeValueReq");
+  }
+}
+
+void GetAttributeValueReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectID().is_bound()) objectID().set_implicit_omit();
+if (AttributeIDofTheObject().is_bound()) AttributeIDofTheObject().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void GetAttributeValueReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectID.encode_text(text_buf);
+field_AttributeIDofTheObject.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void GetAttributeValueReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectID.decode_text(text_buf);
+field_AttributeIDofTheObject.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void GetAttributeValueReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void GetAttributeValueReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int GetAttributeValueReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectID.RAW_decode(ValidObjectID_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, AttributeID_descr_.raw->forceomit);
+  decoded_field_length = field_AttributeIDofTheObject.RAW_decode(AttributeID_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, GetAttributeValueReq_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(GetAttributeValueReq_reserved5_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, GetAttributeValueReq_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(GetAttributeValueReq_reserved6_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, GetAttributeValueReq_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(GetAttributeValueReq_reserved7_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, GetAttributeValueReq_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(GetAttributeValueReq_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int GetAttributeValueReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, AttributeID_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, GetAttributeValueReq_reserved5_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, GetAttributeValueReq_reserved6_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, GetAttributeValueReq_reserved7_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, GetAttributeValueReq_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectID.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_AttributeIDofTheObject.RAW_encode(AttributeID_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved5.RAW_encode(GetAttributeValueReq_reserved5_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved6.RAW_encode(GetAttributeValueReq_reserved6_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved7.RAW_encode(GetAttributeValueReq_reserved7_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved8.RAW_encode(GetAttributeValueReq_reserved8_descr_, *myleaf.body.node.nodes[6]);
+  return myleaf.length = encoded_length;
+}
+
+struct GetAttributeValueReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectID;
+INTEGER_template field_AttributeIDofTheObject;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void GetAttributeValueReq_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_vtfunction = ANY_VALUE;
+single_value->field_objectID = ANY_VALUE;
+single_value->field_AttributeIDofTheObject = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void GetAttributeValueReq_template::copy_value(const GetAttributeValueReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectID().is_bound()) {
+  single_value->field_objectID = other_value.objectID();
+} else {
+  single_value->field_objectID.clean_up();
+}
+if (other_value.AttributeIDofTheObject().is_bound()) {
+  single_value->field_AttributeIDofTheObject = other_value.AttributeIDofTheObject();
+} else {
+  single_value->field_AttributeIDofTheObject.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void GetAttributeValueReq_template::copy_template(const GetAttributeValueReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectID().get_selection()) {
+single_value->field_objectID = other_value.objectID();
+} else {
+single_value->field_objectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.AttributeIDofTheObject().get_selection()) {
+single_value->field_AttributeIDofTheObject = other_value.AttributeIDofTheObject();
+} else {
+single_value->field_AttributeIDofTheObject.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new GetAttributeValueReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetAttributeValueReq.");
+break;
+}
+set_selection(other_value);
+}
+
+GetAttributeValueReq_template::GetAttributeValueReq_template()
+{
+}
+
+GetAttributeValueReq_template::GetAttributeValueReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+GetAttributeValueReq_template::GetAttributeValueReq_template(const GetAttributeValueReq& other_value)
+{
+copy_value(other_value);
+}
+
+GetAttributeValueReq_template::GetAttributeValueReq_template(const OPTIONAL<GetAttributeValueReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const GetAttributeValueReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.GetAttributeValueReq from an unbound optional field.");
+}
+}
+
+GetAttributeValueReq_template::GetAttributeValueReq_template(const GetAttributeValueReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+GetAttributeValueReq_template::~GetAttributeValueReq_template()
+{
+clean_up();
+}
+
+GetAttributeValueReq_template& GetAttributeValueReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+GetAttributeValueReq_template& GetAttributeValueReq_template::operator=(const GetAttributeValueReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+GetAttributeValueReq_template& GetAttributeValueReq_template::operator=(const OPTIONAL<GetAttributeValueReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const GetAttributeValueReq&)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 @IsobusVTMessageTypes.GetAttributeValueReq.");
+}
+return *this;
+}
+
+GetAttributeValueReq_template& GetAttributeValueReq_template::operator=(const GetAttributeValueReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean GetAttributeValueReq_template::match(const GetAttributeValueReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectID().is_bound()) return FALSE;
+if(!single_value->field_objectID.match(other_value.objectID(), legacy))return FALSE;
+if(!other_value.AttributeIDofTheObject().is_bound()) return FALSE;
+if(!single_value->field_AttributeIDofTheObject.match(other_value.AttributeIDofTheObject(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetAttributeValueReq.");
+}
+return FALSE;
+}
+
+boolean GetAttributeValueReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectID.is_bound()
+
+ ||single_value->field_AttributeIDofTheObject.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean GetAttributeValueReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectID.is_value()
+ &&single_value->field_AttributeIDofTheObject.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void GetAttributeValueReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+GetAttributeValueReq GetAttributeValueReq_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 @IsobusVTMessageTypes.GetAttributeValueReq.");
+GetAttributeValueReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectID.is_bound()) {
+ret_val.objectID() = single_value->field_objectID.valueof();
+}
+if (single_value->field_AttributeIDofTheObject.is_bound()) {
+ret_val.AttributeIDofTheObject() = single_value->field_AttributeIDofTheObject.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void GetAttributeValueReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.GetAttributeValueReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new GetAttributeValueReq_template[list_length];
+}
+
+GetAttributeValueReq_template& GetAttributeValueReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.GetAttributeValueReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.GetAttributeValueReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& GetAttributeValueReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& GetAttributeValueReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.GetAttributeValueReq.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& GetAttributeValueReq_template::objectID()
+{
+set_specific();
+return single_value->field_objectID;
+}
+
+const INTEGER_template& GetAttributeValueReq_template::objectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectID of a non-specific template of type @IsobusVTMessageTypes.GetAttributeValueReq.");
+return single_value->field_objectID;
+}
+
+INTEGER_template& GetAttributeValueReq_template::AttributeIDofTheObject()
+{
+set_specific();
+return single_value->field_AttributeIDofTheObject;
+}
+
+const INTEGER_template& GetAttributeValueReq_template::AttributeIDofTheObject() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field AttributeIDofTheObject of a non-specific template of type @IsobusVTMessageTypes.GetAttributeValueReq.");
+return single_value->field_AttributeIDofTheObject;
+}
+
+OCTETSTRING_template& GetAttributeValueReq_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& GetAttributeValueReq_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.GetAttributeValueReq.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& GetAttributeValueReq_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& GetAttributeValueReq_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.GetAttributeValueReq.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& GetAttributeValueReq_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& GetAttributeValueReq_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.GetAttributeValueReq.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& GetAttributeValueReq_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& GetAttributeValueReq_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.GetAttributeValueReq.");
+return single_value->field_reserved8;
+}
+
+int GetAttributeValueReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetAttributeValueReq 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 @IsobusVTMessageTypes.GetAttributeValueReq 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 @IsobusVTMessageTypes.GetAttributeValueReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetAttributeValueReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetAttributeValueReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetAttributeValueReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetAttributeValueReq.");
+  }
+  return 0;
+}
+
+void GetAttributeValueReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log();
+TTCN_Logger::log_event_str(", AttributeIDofTheObject := ");
+single_value->field_AttributeIDofTheObject.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void GetAttributeValueReq_template::log_match(const GetAttributeValueReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectID.match(match_value.objectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectID");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_AttributeIDofTheObject.match(match_value.AttributeIDofTheObject(), legacy)){
+TTCN_Logger::log_logmatch_info(".AttributeIDofTheObject");
+single_value->field_AttributeIDofTheObject.log_match(match_value.AttributeIDofTheObject(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectID := ");
+single_value->field_objectID.log_match(match_value.objectID(), legacy);
+TTCN_Logger::log_event_str(", AttributeIDofTheObject := ");
+single_value->field_AttributeIDofTheObject.log_match(match_value.AttributeIDofTheObject(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 GetAttributeValueReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectID.encode_text(text_buf);
+single_value->field_AttributeIDofTheObject.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.GetAttributeValueReq.");
+}
+}
+
+void GetAttributeValueReq_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_vtfunction.decode_text(text_buf);
+single_value->field_objectID.decode_text(text_buf);
+single_value->field_AttributeIDofTheObject.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 GetAttributeValueReq_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 @IsobusVTMessageTypes.GetAttributeValueReq.");
+}
+}
+
+void GetAttributeValueReq_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: {
+    GetAttributeValueReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.GetAttributeValueReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) AttributeIDofTheObject().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectID().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(), "AttributeIDofTheObject")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          AttributeIDofTheObject().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.GetAttributeValueReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.GetAttributeValueReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void GetAttributeValueReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetAttributeValueReq");
+single_value->field_objectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetAttributeValueReq");
+single_value->field_AttributeIDofTheObject.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetAttributeValueReq");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetAttributeValueReq");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetAttributeValueReq");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetAttributeValueReq");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetAttributeValueReq");
+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 : "@IsobusVTMessageTypes.GetAttributeValueReq");
+}
+
+boolean GetAttributeValueReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean GetAttributeValueReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+SelectColourMapRes__ErrorCodes::SelectColourMapRes__ErrorCodes()
+{
+}
+
+SelectColourMapRes__ErrorCodes::SelectColourMapRes__ErrorCodes(const BOOLEAN& par_invalidObjectID,
+    const BOOLEAN& par_invalidColourMap,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved3,
+    const BOOLEAN& par_reserved4,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7)
+  :   field_invalidObjectID(par_invalidObjectID),
+  field_invalidColourMap(par_invalidColourMap),
+  field_anyOtherError(par_anyOtherError),
+  field_reserved3(par_reserved3),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7)
+{
+}
+
+SelectColourMapRes__ErrorCodes::SelectColourMapRes__ErrorCodes(const SelectColourMapRes__ErrorCodes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes.");
+if (other_value.invalidObjectID().is_bound()) field_invalidObjectID = other_value.invalidObjectID();
+else field_invalidObjectID.clean_up();
+if (other_value.invalidColourMap().is_bound()) field_invalidColourMap = other_value.invalidColourMap();
+else field_invalidColourMap.clean_up();
+if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+else field_anyOtherError.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+}
+
+void SelectColourMapRes__ErrorCodes::clean_up()
+{
+field_invalidObjectID.clean_up();
+field_invalidColourMap.clean_up();
+field_anyOtherError.clean_up();
+field_reserved3.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SelectColourMapRes__ErrorCodes::get_descriptor() const { return &SelectColourMapRes__ErrorCodes_descr_; }
+SelectColourMapRes__ErrorCodes& SelectColourMapRes__ErrorCodes::operator=(const SelectColourMapRes__ErrorCodes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes.");
+  if (other_value.invalidObjectID().is_bound()) field_invalidObjectID = other_value.invalidObjectID();
+  else field_invalidObjectID.clean_up();
+  if (other_value.invalidColourMap().is_bound()) field_invalidColourMap = other_value.invalidColourMap();
+  else field_invalidColourMap.clean_up();
+  if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+  else field_anyOtherError.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+}
+return *this;
+}
+
+boolean SelectColourMapRes__ErrorCodes::operator==(const SelectColourMapRes__ErrorCodes& other_value) const
+{
+return field_invalidObjectID==other_value.field_invalidObjectID
+  && field_invalidColourMap==other_value.field_invalidColourMap
+  && field_anyOtherError==other_value.field_anyOtherError
+  && field_reserved3==other_value.field_reserved3
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7;
+}
+
+boolean SelectColourMapRes__ErrorCodes::is_bound() const
+{
+return (field_invalidObjectID.is_bound())
+  || (field_invalidColourMap.is_bound())
+  || (field_anyOtherError.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound());
+}
+boolean SelectColourMapRes__ErrorCodes::is_value() const
+{
+return field_invalidObjectID.is_value()
+  && field_invalidColourMap.is_value()
+  && field_anyOtherError.is_value()
+  && field_reserved3.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value();
+}
+void SelectColourMapRes__ErrorCodes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ invalidObjectID := ");
+field_invalidObjectID.log();
+TTCN_Logger::log_event_str(", invalidColourMap := ");
+field_invalidColourMap.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SelectColourMapRes__ErrorCodes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes has 8 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) invalidObjectID().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) invalidColourMap().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "invalidObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidObjectID().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(), "invalidColourMap")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidColourMap().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes");
+  }
+}
+
+void SelectColourMapRes__ErrorCodes::set_implicit_omit()
+{
+if (invalidObjectID().is_bound()) invalidObjectID().set_implicit_omit();
+if (invalidColourMap().is_bound()) invalidColourMap().set_implicit_omit();
+if (anyOtherError().is_bound()) anyOtherError().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+}
+
+void SelectColourMapRes__ErrorCodes::encode_text(Text_Buf& text_buf) const
+{
+field_invalidObjectID.encode_text(text_buf);
+field_invalidColourMap.encode_text(text_buf);
+field_anyOtherError.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+}
+
+void SelectColourMapRes__ErrorCodes::decode_text(Text_Buf& text_buf)
+{
+field_invalidObjectID.decode_text(text_buf);
+field_invalidColourMap.decode_text(text_buf);
+field_anyOtherError.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+}
+
+void SelectColourMapRes__ErrorCodes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void SelectColourMapRes__ErrorCodes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int SelectColourMapRes__ErrorCodes::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidObjectID.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_invalidColourMap.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_anyOtherError.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int SelectColourMapRes__ErrorCodes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_invalidObjectID.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_invalidColourMap.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_anyOtherError.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved3.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved4.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved5.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved6.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved7.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct SelectColourMapRes__ErrorCodes_template::single_value_struct {
+BOOLEAN_template field_invalidObjectID;
+BOOLEAN_template field_invalidColourMap;
+BOOLEAN_template field_anyOtherError;
+BOOLEAN_template field_reserved3;
+BOOLEAN_template field_reserved4;
+BOOLEAN_template field_reserved5;
+BOOLEAN_template field_reserved6;
+BOOLEAN_template field_reserved7;
+};
+
+void SelectColourMapRes__ErrorCodes_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_invalidObjectID = ANY_VALUE;
+single_value->field_invalidColourMap = ANY_VALUE;
+single_value->field_anyOtherError = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+}
+}
+}
+
+void SelectColourMapRes__ErrorCodes_template::copy_value(const SelectColourMapRes__ErrorCodes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.invalidObjectID().is_bound()) {
+  single_value->field_invalidObjectID = other_value.invalidObjectID();
+} else {
+  single_value->field_invalidObjectID.clean_up();
+}
+if (other_value.invalidColourMap().is_bound()) {
+  single_value->field_invalidColourMap = other_value.invalidColourMap();
+} else {
+  single_value->field_invalidColourMap.clean_up();
+}
+if (other_value.anyOtherError().is_bound()) {
+  single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+  single_value->field_anyOtherError.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SelectColourMapRes__ErrorCodes_template::copy_template(const SelectColourMapRes__ErrorCodes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.invalidObjectID().get_selection()) {
+single_value->field_invalidObjectID = other_value.invalidObjectID();
+} else {
+single_value->field_invalidObjectID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.invalidColourMap().get_selection()) {
+single_value->field_invalidColourMap = other_value.invalidColourMap();
+} else {
+single_value->field_invalidColourMap.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.anyOtherError().get_selection()) {
+single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+single_value->field_anyOtherError.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SelectColourMapRes__ErrorCodes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes.");
+break;
+}
+set_selection(other_value);
+}
+
+SelectColourMapRes__ErrorCodes_template::SelectColourMapRes__ErrorCodes_template()
+{
+}
+
+SelectColourMapRes__ErrorCodes_template::SelectColourMapRes__ErrorCodes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SelectColourMapRes__ErrorCodes_template::SelectColourMapRes__ErrorCodes_template(const SelectColourMapRes__ErrorCodes& other_value)
+{
+copy_value(other_value);
+}
+
+SelectColourMapRes__ErrorCodes_template::SelectColourMapRes__ErrorCodes_template(const OPTIONAL<SelectColourMapRes__ErrorCodes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SelectColourMapRes__ErrorCodes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes from an unbound optional field.");
+}
+}
+
+SelectColourMapRes__ErrorCodes_template::SelectColourMapRes__ErrorCodes_template(const SelectColourMapRes__ErrorCodes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SelectColourMapRes__ErrorCodes_template::~SelectColourMapRes__ErrorCodes_template()
+{
+clean_up();
+}
+
+SelectColourMapRes__ErrorCodes_template& SelectColourMapRes__ErrorCodes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SelectColourMapRes__ErrorCodes_template& SelectColourMapRes__ErrorCodes_template::operator=(const SelectColourMapRes__ErrorCodes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SelectColourMapRes__ErrorCodes_template& SelectColourMapRes__ErrorCodes_template::operator=(const OPTIONAL<SelectColourMapRes__ErrorCodes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SelectColourMapRes__ErrorCodes&)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 @IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes.");
+}
+return *this;
+}
+
+SelectColourMapRes__ErrorCodes_template& SelectColourMapRes__ErrorCodes_template::operator=(const SelectColourMapRes__ErrorCodes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SelectColourMapRes__ErrorCodes_template::match(const SelectColourMapRes__ErrorCodes& 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.invalidObjectID().is_bound()) return FALSE;
+if(!single_value->field_invalidObjectID.match(other_value.invalidObjectID(), legacy))return FALSE;
+if(!other_value.invalidColourMap().is_bound()) return FALSE;
+if(!single_value->field_invalidColourMap.match(other_value.invalidColourMap(), legacy))return FALSE;
+if(!other_value.anyOtherError().is_bound()) return FALSE;
+if(!single_value->field_anyOtherError.match(other_value.anyOtherError(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes.");
+}
+return FALSE;
+}
+
+boolean SelectColourMapRes__ErrorCodes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_invalidObjectID.is_bound()
+
+ ||single_value->field_invalidColourMap.is_bound()
+
+ ||single_value->field_anyOtherError.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+;
+}
+
+boolean SelectColourMapRes__ErrorCodes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_invalidObjectID.is_value()
+ &&single_value->field_invalidColourMap.is_value()
+ &&single_value->field_anyOtherError.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value();
+}
+
+void SelectColourMapRes__ErrorCodes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SelectColourMapRes__ErrorCodes SelectColourMapRes__ErrorCodes_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 @IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes.");
+SelectColourMapRes__ErrorCodes ret_val;
+if (single_value->field_invalidObjectID.is_bound()) {
+ret_val.invalidObjectID() = single_value->field_invalidObjectID.valueof();
+}
+if (single_value->field_invalidColourMap.is_bound()) {
+ret_val.invalidColourMap() = single_value->field_invalidColourMap.valueof();
+}
+if (single_value->field_anyOtherError.is_bound()) {
+ret_val.anyOtherError() = single_value->field_anyOtherError.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+return ret_val;
+}
+
+void SelectColourMapRes__ErrorCodes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SelectColourMapRes__ErrorCodes_template[list_length];
+}
+
+SelectColourMapRes__ErrorCodes_template& SelectColourMapRes__ErrorCodes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& SelectColourMapRes__ErrorCodes_template::invalidObjectID()
+{
+set_specific();
+return single_value->field_invalidObjectID;
+}
+
+const BOOLEAN_template& SelectColourMapRes__ErrorCodes_template::invalidObjectID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidObjectID of a non-specific template of type @IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes.");
+return single_value->field_invalidObjectID;
+}
+
+BOOLEAN_template& SelectColourMapRes__ErrorCodes_template::invalidColourMap()
+{
+set_specific();
+return single_value->field_invalidColourMap;
+}
+
+const BOOLEAN_template& SelectColourMapRes__ErrorCodes_template::invalidColourMap() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field invalidColourMap of a non-specific template of type @IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes.");
+return single_value->field_invalidColourMap;
+}
+
+BOOLEAN_template& SelectColourMapRes__ErrorCodes_template::anyOtherError()
+{
+set_specific();
+return single_value->field_anyOtherError;
+}
+
+const BOOLEAN_template& SelectColourMapRes__ErrorCodes_template::anyOtherError() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field anyOtherError of a non-specific template of type @IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes.");
+return single_value->field_anyOtherError;
+}
+
+BOOLEAN_template& SelectColourMapRes__ErrorCodes_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const BOOLEAN_template& SelectColourMapRes__ErrorCodes_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes.");
+return single_value->field_reserved3;
+}
+
+BOOLEAN_template& SelectColourMapRes__ErrorCodes_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const BOOLEAN_template& SelectColourMapRes__ErrorCodes_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes.");
+return single_value->field_reserved4;
+}
+
+BOOLEAN_template& SelectColourMapRes__ErrorCodes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const BOOLEAN_template& SelectColourMapRes__ErrorCodes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes.");
+return single_value->field_reserved5;
+}
+
+BOOLEAN_template& SelectColourMapRes__ErrorCodes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const BOOLEAN_template& SelectColourMapRes__ErrorCodes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes.");
+return single_value->field_reserved6;
+}
+
+BOOLEAN_template& SelectColourMapRes__ErrorCodes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const BOOLEAN_template& SelectColourMapRes__ErrorCodes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes.");
+return single_value->field_reserved7;
+}
+
+int SelectColourMapRes__ErrorCodes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes 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 @IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes.");
+  }
+  return 0;
+}
+
+void SelectColourMapRes__ErrorCodes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ invalidObjectID := ");
+single_value->field_invalidObjectID.log();
+TTCN_Logger::log_event_str(", invalidColourMap := ");
+single_value->field_invalidColourMap.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SelectColourMapRes__ErrorCodes_template::log_match(const SelectColourMapRes__ErrorCodes& 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_invalidObjectID.match(match_value.invalidObjectID(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidObjectID");
+single_value->field_invalidObjectID.log_match(match_value.invalidObjectID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_invalidColourMap.match(match_value.invalidColourMap(), legacy)){
+TTCN_Logger::log_logmatch_info(".invalidColourMap");
+single_value->field_invalidColourMap.log_match(match_value.invalidColourMap(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_anyOtherError.match(match_value.anyOtherError(), legacy)){
+TTCN_Logger::log_logmatch_info(".anyOtherError");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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("{ invalidObjectID := ");
+single_value->field_invalidObjectID.log_match(match_value.invalidObjectID(), legacy);
+TTCN_Logger::log_event_str(", invalidColourMap := ");
+single_value->field_invalidColourMap.log_match(match_value.invalidColourMap(), legacy);
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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 SelectColourMapRes__ErrorCodes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_invalidObjectID.encode_text(text_buf);
+single_value->field_invalidColourMap.encode_text(text_buf);
+single_value->field_anyOtherError.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.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 @IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes.");
+}
+}
+
+void SelectColourMapRes__ErrorCodes_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_invalidObjectID.decode_text(text_buf);
+single_value->field_invalidColourMap.decode_text(text_buf);
+single_value->field_anyOtherError.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.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 SelectColourMapRes__ErrorCodes_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 @IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes.");
+}
+}
+
+void SelectColourMapRes__ErrorCodes_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: {
+    SelectColourMapRes__ErrorCodes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes has 8 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) invalidObjectID().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) invalidColourMap().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "invalidObjectID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidObjectID().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(), "invalidColourMap")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          invalidColourMap().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SelectColourMapRes__ErrorCodes_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_invalidObjectID.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes");
+single_value->field_invalidColourMap.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes");
+single_value->field_anyOtherError.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes");
+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 : "@IsobusVTMessageTypes.SelectColourMapRes_ErrorCodes");
+}
+
+boolean SelectColourMapRes__ErrorCodes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SelectColourMapRes__ErrorCodes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+SelectColourMapRes::SelectColourMapRes()
+{
+}
+
+SelectColourMapRes::SelectColourMapRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectIDofTheColourMapObject,
+    const SelectColourMapRes__ErrorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_objectIDofTheColourMapObject(par_objectIDofTheColourMapObject),
+  field_errorCodes(par_errorCodes),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+SelectColourMapRes::SelectColourMapRes(const SelectColourMapRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.SelectColourMapRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectIDofTheColourMapObject().is_bound()) field_objectIDofTheColourMapObject = other_value.objectIDofTheColourMapObject();
+else field_objectIDofTheColourMapObject.clean_up();
+if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+else field_errorCodes.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void SelectColourMapRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectIDofTheColourMapObject.clean_up();
+field_errorCodes.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SelectColourMapRes::get_descriptor() const { return &SelectColourMapRes_descr_; }
+SelectColourMapRes& SelectColourMapRes::operator=(const SelectColourMapRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.SelectColourMapRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectIDofTheColourMapObject().is_bound()) field_objectIDofTheColourMapObject = other_value.objectIDofTheColourMapObject();
+  else field_objectIDofTheColourMapObject.clean_up();
+  if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+  else field_errorCodes.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean SelectColourMapRes::operator==(const SelectColourMapRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectIDofTheColourMapObject==other_value.field_objectIDofTheColourMapObject
+  && field_errorCodes==other_value.field_errorCodes
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean SelectColourMapRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectIDofTheColourMapObject.is_bound())
+  || (field_errorCodes.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean SelectColourMapRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectIDofTheColourMapObject.is_value()
+  && field_errorCodes.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void SelectColourMapRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectIDofTheColourMapObject := ");
+field_objectIDofTheColourMapObject.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SelectColourMapRes::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 @IsobusVTMessageTypes.SelectColourMapRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectIDofTheColourMapObject().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectIDofTheColourMapObject")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofTheColourMapObject().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.SelectColourMapRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.SelectColourMapRes");
+  }
+}
+
+void SelectColourMapRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectIDofTheColourMapObject().is_bound()) objectIDofTheColourMapObject().set_implicit_omit();
+if (errorCodes().is_bound()) errorCodes().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void SelectColourMapRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectIDofTheColourMapObject.encode_text(text_buf);
+field_errorCodes.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void SelectColourMapRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectIDofTheColourMapObject.decode_text(text_buf);
+field_errorCodes.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void SelectColourMapRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void SelectColourMapRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int SelectColourMapRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectIDofTheColourMapObject.RAW_decode(ValidObjectID_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, SelectColourMapRes__ErrorCodes_descr_.raw->forceomit);
+  decoded_field_length = field_errorCodes.RAW_decode(SelectColourMapRes__ErrorCodes_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, SelectColourMapRes_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(SelectColourMapRes_reserved5_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, SelectColourMapRes_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(SelectColourMapRes_reserved6_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, SelectColourMapRes_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(SelectColourMapRes_reserved7_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, SelectColourMapRes_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(SelectColourMapRes_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int SelectColourMapRes::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, SelectColourMapRes__ErrorCodes_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, SelectColourMapRes_reserved5_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, SelectColourMapRes_reserved6_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, SelectColourMapRes_reserved7_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, SelectColourMapRes_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectIDofTheColourMapObject.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_errorCodes.RAW_encode(SelectColourMapRes__ErrorCodes_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved5.RAW_encode(SelectColourMapRes_reserved5_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved6.RAW_encode(SelectColourMapRes_reserved6_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved7.RAW_encode(SelectColourMapRes_reserved7_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved8.RAW_encode(SelectColourMapRes_reserved8_descr_, *myleaf.body.node.nodes[6]);
+  return myleaf.length = encoded_length;
+}
+
+struct SelectColourMapRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectIDofTheColourMapObject;
+SelectColourMapRes__ErrorCodes_template field_errorCodes;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void SelectColourMapRes_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_vtfunction = ANY_VALUE;
+single_value->field_objectIDofTheColourMapObject = ANY_VALUE;
+single_value->field_errorCodes = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void SelectColourMapRes_template::copy_value(const SelectColourMapRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectIDofTheColourMapObject().is_bound()) {
+  single_value->field_objectIDofTheColourMapObject = other_value.objectIDofTheColourMapObject();
+} else {
+  single_value->field_objectIDofTheColourMapObject.clean_up();
+}
+if (other_value.errorCodes().is_bound()) {
+  single_value->field_errorCodes = other_value.errorCodes();
+} else {
+  single_value->field_errorCodes.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SelectColourMapRes_template::copy_template(const SelectColourMapRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectIDofTheColourMapObject().get_selection()) {
+single_value->field_objectIDofTheColourMapObject = other_value.objectIDofTheColourMapObject();
+} else {
+single_value->field_objectIDofTheColourMapObject.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.errorCodes().get_selection()) {
+single_value->field_errorCodes = other_value.errorCodes();
+} else {
+single_value->field_errorCodes.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SelectColourMapRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.SelectColourMapRes.");
+break;
+}
+set_selection(other_value);
+}
+
+SelectColourMapRes_template::SelectColourMapRes_template()
+{
+}
+
+SelectColourMapRes_template::SelectColourMapRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SelectColourMapRes_template::SelectColourMapRes_template(const SelectColourMapRes& other_value)
+{
+copy_value(other_value);
+}
+
+SelectColourMapRes_template::SelectColourMapRes_template(const OPTIONAL<SelectColourMapRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SelectColourMapRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.SelectColourMapRes from an unbound optional field.");
+}
+}
+
+SelectColourMapRes_template::SelectColourMapRes_template(const SelectColourMapRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SelectColourMapRes_template::~SelectColourMapRes_template()
+{
+clean_up();
+}
+
+SelectColourMapRes_template& SelectColourMapRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SelectColourMapRes_template& SelectColourMapRes_template::operator=(const SelectColourMapRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SelectColourMapRes_template& SelectColourMapRes_template::operator=(const OPTIONAL<SelectColourMapRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SelectColourMapRes&)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 @IsobusVTMessageTypes.SelectColourMapRes.");
+}
+return *this;
+}
+
+SelectColourMapRes_template& SelectColourMapRes_template::operator=(const SelectColourMapRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SelectColourMapRes_template::match(const SelectColourMapRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectIDofTheColourMapObject().is_bound()) return FALSE;
+if(!single_value->field_objectIDofTheColourMapObject.match(other_value.objectIDofTheColourMapObject(), legacy))return FALSE;
+if(!other_value.errorCodes().is_bound()) return FALSE;
+if(!single_value->field_errorCodes.match(other_value.errorCodes(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.SelectColourMapRes.");
+}
+return FALSE;
+}
+
+boolean SelectColourMapRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectIDofTheColourMapObject.is_bound()
+
+ ||single_value->field_errorCodes.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean SelectColourMapRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectIDofTheColourMapObject.is_value()
+ &&single_value->field_errorCodes.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void SelectColourMapRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SelectColourMapRes SelectColourMapRes_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 @IsobusVTMessageTypes.SelectColourMapRes.");
+SelectColourMapRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectIDofTheColourMapObject.is_bound()) {
+ret_val.objectIDofTheColourMapObject() = single_value->field_objectIDofTheColourMapObject.valueof();
+}
+if (single_value->field_errorCodes.is_bound()) {
+ret_val.errorCodes() = single_value->field_errorCodes.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void SelectColourMapRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.SelectColourMapRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SelectColourMapRes_template[list_length];
+}
+
+SelectColourMapRes_template& SelectColourMapRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.SelectColourMapRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.SelectColourMapRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& SelectColourMapRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& SelectColourMapRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.SelectColourMapRes.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& SelectColourMapRes_template::objectIDofTheColourMapObject()
+{
+set_specific();
+return single_value->field_objectIDofTheColourMapObject;
+}
+
+const INTEGER_template& SelectColourMapRes_template::objectIDofTheColourMapObject() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectIDofTheColourMapObject of a non-specific template of type @IsobusVTMessageTypes.SelectColourMapRes.");
+return single_value->field_objectIDofTheColourMapObject;
+}
+
+SelectColourMapRes__ErrorCodes_template& SelectColourMapRes_template::errorCodes()
+{
+set_specific();
+return single_value->field_errorCodes;
+}
+
+const SelectColourMapRes__ErrorCodes_template& SelectColourMapRes_template::errorCodes() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field errorCodes of a non-specific template of type @IsobusVTMessageTypes.SelectColourMapRes.");
+return single_value->field_errorCodes;
+}
+
+OCTETSTRING_template& SelectColourMapRes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& SelectColourMapRes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.SelectColourMapRes.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& SelectColourMapRes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& SelectColourMapRes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.SelectColourMapRes.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& SelectColourMapRes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& SelectColourMapRes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.SelectColourMapRes.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& SelectColourMapRes_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& SelectColourMapRes_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.SelectColourMapRes.");
+return single_value->field_reserved8;
+}
+
+int SelectColourMapRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SelectColourMapRes 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 @IsobusVTMessageTypes.SelectColourMapRes 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 @IsobusVTMessageTypes.SelectColourMapRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SelectColourMapRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SelectColourMapRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SelectColourMapRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.SelectColourMapRes.");
+  }
+  return 0;
+}
+
+void SelectColourMapRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectIDofTheColourMapObject := ");
+single_value->field_objectIDofTheColourMapObject.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SelectColourMapRes_template::log_match(const SelectColourMapRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectIDofTheColourMapObject.match(match_value.objectIDofTheColourMapObject(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectIDofTheColourMapObject");
+single_value->field_objectIDofTheColourMapObject.log_match(match_value.objectIDofTheColourMapObject(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_errorCodes.match(match_value.errorCodes(), legacy)){
+TTCN_Logger::log_logmatch_info(".errorCodes");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectIDofTheColourMapObject := ");
+single_value->field_objectIDofTheColourMapObject.log_match(match_value.objectIDofTheColourMapObject(), legacy);
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 SelectColourMapRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectIDofTheColourMapObject.encode_text(text_buf);
+single_value->field_errorCodes.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.SelectColourMapRes.");
+}
+}
+
+void SelectColourMapRes_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_vtfunction.decode_text(text_buf);
+single_value->field_objectIDofTheColourMapObject.decode_text(text_buf);
+single_value->field_errorCodes.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 SelectColourMapRes_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 @IsobusVTMessageTypes.SelectColourMapRes.");
+}
+}
+
+void SelectColourMapRes_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: {
+    SelectColourMapRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.SelectColourMapRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectIDofTheColourMapObject().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectIDofTheColourMapObject")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofTheColourMapObject().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.SelectColourMapRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.SelectColourMapRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SelectColourMapRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SelectColourMapRes");
+single_value->field_objectIDofTheColourMapObject.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SelectColourMapRes");
+single_value->field_errorCodes.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SelectColourMapRes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SelectColourMapRes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SelectColourMapRes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SelectColourMapRes");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SelectColourMapRes");
+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 : "@IsobusVTMessageTypes.SelectColourMapRes");
+}
+
+boolean SelectColourMapRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SelectColourMapRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+SelectColourMapReq::SelectColourMapReq()
+{
+}
+
+SelectColourMapReq::SelectColourMapReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable(par_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+SelectColourMapReq::SelectColourMapReq(const SelectColourMapReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.SelectColourMapReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable().is_bound()) field_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable = other_value.ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable();
+else field_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void SelectColourMapReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SelectColourMapReq::get_descriptor() const { return &SelectColourMapReq_descr_; }
+SelectColourMapReq& SelectColourMapReq::operator=(const SelectColourMapReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.SelectColourMapReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable().is_bound()) field_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable = other_value.ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable();
+  else field_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean SelectColourMapReq::operator==(const SelectColourMapReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable==other_value.field_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean SelectColourMapReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean SelectColourMapReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void SelectColourMapReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable := ");
+field_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SelectColourMapReq::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 @IsobusVTMessageTypes.SelectColourMapReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.SelectColourMapReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.SelectColourMapReq");
+  }
+}
+
+void SelectColourMapReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable().is_bound()) ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void SelectColourMapReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void SelectColourMapReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void SelectColourMapReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void SelectColourMapReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int SelectColourMapReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable.RAW_decode(ValidObjectID_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, SelectColourMapReq_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(SelectColourMapReq_reserved4_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, SelectColourMapReq_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(SelectColourMapReq_reserved5_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, SelectColourMapReq_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(SelectColourMapReq_reserved6_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, SelectColourMapReq_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(SelectColourMapReq_reserved7_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, SelectColourMapReq_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(SelectColourMapReq_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int SelectColourMapReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, SelectColourMapReq_reserved4_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, SelectColourMapReq_reserved5_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, SelectColourMapReq_reserved6_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, SelectColourMapReq_reserved7_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, SelectColourMapReq_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved4.RAW_encode(SelectColourMapReq_reserved4_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved5.RAW_encode(SelectColourMapReq_reserved5_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved6.RAW_encode(SelectColourMapReq_reserved6_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved7.RAW_encode(SelectColourMapReq_reserved7_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved8.RAW_encode(SelectColourMapReq_reserved8_descr_, *myleaf.body.node.nodes[6]);
+  return myleaf.length = encoded_length;
+}
+
+struct SelectColourMapReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void SelectColourMapReq_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_vtfunction = ANY_VALUE;
+single_value->field_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void SelectColourMapReq_template::copy_value(const SelectColourMapReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable().is_bound()) {
+  single_value->field_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable = other_value.ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable();
+} else {
+  single_value->field_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SelectColourMapReq_template::copy_template(const SelectColourMapReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable().get_selection()) {
+single_value->field_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable = other_value.ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable();
+} else {
+single_value->field_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SelectColourMapReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.SelectColourMapReq.");
+break;
+}
+set_selection(other_value);
+}
+
+SelectColourMapReq_template::SelectColourMapReq_template()
+{
+}
+
+SelectColourMapReq_template::SelectColourMapReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SelectColourMapReq_template::SelectColourMapReq_template(const SelectColourMapReq& other_value)
+{
+copy_value(other_value);
+}
+
+SelectColourMapReq_template::SelectColourMapReq_template(const OPTIONAL<SelectColourMapReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SelectColourMapReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.SelectColourMapReq from an unbound optional field.");
+}
+}
+
+SelectColourMapReq_template::SelectColourMapReq_template(const SelectColourMapReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SelectColourMapReq_template::~SelectColourMapReq_template()
+{
+clean_up();
+}
+
+SelectColourMapReq_template& SelectColourMapReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SelectColourMapReq_template& SelectColourMapReq_template::operator=(const SelectColourMapReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SelectColourMapReq_template& SelectColourMapReq_template::operator=(const OPTIONAL<SelectColourMapReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SelectColourMapReq&)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 @IsobusVTMessageTypes.SelectColourMapReq.");
+}
+return *this;
+}
+
+SelectColourMapReq_template& SelectColourMapReq_template::operator=(const SelectColourMapReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SelectColourMapReq_template::match(const SelectColourMapReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable().is_bound()) return FALSE;
+if(!single_value->field_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable.match(other_value.ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.SelectColourMapReq.");
+}
+return FALSE;
+}
+
+boolean SelectColourMapReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean SelectColourMapReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void SelectColourMapReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SelectColourMapReq SelectColourMapReq_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 @IsobusVTMessageTypes.SelectColourMapReq.");
+SelectColourMapReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable.is_bound()) {
+ret_val.ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable() = single_value->field_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void SelectColourMapReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.SelectColourMapReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SelectColourMapReq_template[list_length];
+}
+
+SelectColourMapReq_template& SelectColourMapReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.SelectColourMapReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.SelectColourMapReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& SelectColourMapReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& SelectColourMapReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.SelectColourMapReq.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& SelectColourMapReq_template::ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable()
+{
+set_specific();
+return single_value->field_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable;
+}
+
+const INTEGER_template& SelectColourMapReq_template::ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable of a non-specific template of type @IsobusVTMessageTypes.SelectColourMapReq.");
+return single_value->field_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable;
+}
+
+OCTETSTRING_template& SelectColourMapReq_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& SelectColourMapReq_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.SelectColourMapReq.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& SelectColourMapReq_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& SelectColourMapReq_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.SelectColourMapReq.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& SelectColourMapReq_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& SelectColourMapReq_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.SelectColourMapReq.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& SelectColourMapReq_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& SelectColourMapReq_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.SelectColourMapReq.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& SelectColourMapReq_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& SelectColourMapReq_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.SelectColourMapReq.");
+return single_value->field_reserved8;
+}
+
+int SelectColourMapReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SelectColourMapReq 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 @IsobusVTMessageTypes.SelectColourMapReq 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 @IsobusVTMessageTypes.SelectColourMapReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SelectColourMapReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SelectColourMapReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.SelectColourMapReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.SelectColourMapReq.");
+  }
+  return 0;
+}
+
+void SelectColourMapReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable := ");
+single_value->field_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SelectColourMapReq_template::log_match(const SelectColourMapReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable.match(match_value.ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable(), legacy)){
+TTCN_Logger::log_logmatch_info(".ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable");
+single_value->field_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable.log_match(match_value.ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable := ");
+single_value->field_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable.log_match(match_value.ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 SelectColourMapReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.SelectColourMapReq.");
+}
+}
+
+void SelectColourMapReq_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_vtfunction.decode_text(text_buf);
+single_value->field_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 SelectColourMapReq_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 @IsobusVTMessageTypes.SelectColourMapReq.");
+}
+}
+
+void SelectColourMapReq_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: {
+    SelectColourMapReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.SelectColourMapReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.SelectColourMapReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.SelectColourMapReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SelectColourMapReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SelectColourMapReq");
+single_value->field_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SelectColourMapReq");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SelectColourMapReq");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SelectColourMapReq");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SelectColourMapReq");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SelectColourMapReq");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.SelectColourMapReq");
+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 : "@IsobusVTMessageTypes.SelectColourMapReq");
+}
+
+boolean SelectColourMapReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SelectColourMapReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+IdentifyVTRes::IdentifyVTRes()
+{
+}
+
+IdentifyVTRes::IdentifyVTRes(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_reserved2,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_reserved2(par_reserved2),
+  field_reserved3(par_reserved3),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+IdentifyVTRes::IdentifyVTRes(const IdentifyVTRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.IdentifyVTRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+else field_reserved2.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void IdentifyVTRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_reserved2.clean_up();
+field_reserved3.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* IdentifyVTRes::get_descriptor() const { return &IdentifyVTRes_descr_; }
+IdentifyVTRes& IdentifyVTRes::operator=(const IdentifyVTRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.IdentifyVTRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+  else field_reserved2.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean IdentifyVTRes::operator==(const IdentifyVTRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_reserved2==other_value.field_reserved2
+  && field_reserved3==other_value.field_reserved3
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean IdentifyVTRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_reserved2.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean IdentifyVTRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_reserved2.is_value()
+  && field_reserved3.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void IdentifyVTRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void IdentifyVTRes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.IdentifyVTRes has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.IdentifyVTRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.IdentifyVTRes");
+  }
+}
+
+void IdentifyVTRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (reserved2().is_bound()) reserved2().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void IdentifyVTRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_reserved2.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void IdentifyVTRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_reserved2.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void IdentifyVTRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void IdentifyVTRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int IdentifyVTRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, IdentifyVTRes_reserved2_descr_.raw->forceomit);
+  decoded_field_length = field_reserved2.RAW_decode(IdentifyVTRes_reserved2_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, IdentifyVTRes_reserved3_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(IdentifyVTRes_reserved3_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, IdentifyVTRes_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(IdentifyVTRes_reserved4_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, IdentifyVTRes_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(IdentifyVTRes_reserved5_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, IdentifyVTRes_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(IdentifyVTRes_reserved6_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, IdentifyVTRes_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(IdentifyVTRes_reserved7_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, IdentifyVTRes_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(IdentifyVTRes_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int IdentifyVTRes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, IdentifyVTRes_reserved2_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, IdentifyVTRes_reserved3_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, IdentifyVTRes_reserved4_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, IdentifyVTRes_reserved5_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, IdentifyVTRes_reserved6_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, IdentifyVTRes_reserved7_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, IdentifyVTRes_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved2.RAW_encode(IdentifyVTRes_reserved2_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved3.RAW_encode(IdentifyVTRes_reserved3_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved4.RAW_encode(IdentifyVTRes_reserved4_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved5.RAW_encode(IdentifyVTRes_reserved5_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved6.RAW_encode(IdentifyVTRes_reserved6_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved7.RAW_encode(IdentifyVTRes_reserved7_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved8.RAW_encode(IdentifyVTRes_reserved8_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct IdentifyVTRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+OCTETSTRING_template field_reserved2;
+OCTETSTRING_template field_reserved3;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void IdentifyVTRes_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_vtfunction = ANY_VALUE;
+single_value->field_reserved2 = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void IdentifyVTRes_template::copy_value(const IdentifyVTRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.reserved2().is_bound()) {
+  single_value->field_reserved2 = other_value.reserved2();
+} else {
+  single_value->field_reserved2.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void IdentifyVTRes_template::copy_template(const IdentifyVTRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved2().get_selection()) {
+single_value->field_reserved2 = other_value.reserved2();
+} else {
+single_value->field_reserved2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new IdentifyVTRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.IdentifyVTRes.");
+break;
+}
+set_selection(other_value);
+}
+
+IdentifyVTRes_template::IdentifyVTRes_template()
+{
+}
+
+IdentifyVTRes_template::IdentifyVTRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+IdentifyVTRes_template::IdentifyVTRes_template(const IdentifyVTRes& other_value)
+{
+copy_value(other_value);
+}
+
+IdentifyVTRes_template::IdentifyVTRes_template(const OPTIONAL<IdentifyVTRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const IdentifyVTRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.IdentifyVTRes from an unbound optional field.");
+}
+}
+
+IdentifyVTRes_template::IdentifyVTRes_template(const IdentifyVTRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+IdentifyVTRes_template::~IdentifyVTRes_template()
+{
+clean_up();
+}
+
+IdentifyVTRes_template& IdentifyVTRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+IdentifyVTRes_template& IdentifyVTRes_template::operator=(const IdentifyVTRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+IdentifyVTRes_template& IdentifyVTRes_template::operator=(const OPTIONAL<IdentifyVTRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const IdentifyVTRes&)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 @IsobusVTMessageTypes.IdentifyVTRes.");
+}
+return *this;
+}
+
+IdentifyVTRes_template& IdentifyVTRes_template::operator=(const IdentifyVTRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean IdentifyVTRes_template::match(const IdentifyVTRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.reserved2().is_bound()) return FALSE;
+if(!single_value->field_reserved2.match(other_value.reserved2(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.IdentifyVTRes.");
+}
+return FALSE;
+}
+
+boolean IdentifyVTRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_reserved2.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean IdentifyVTRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_reserved2.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void IdentifyVTRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+IdentifyVTRes IdentifyVTRes_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 @IsobusVTMessageTypes.IdentifyVTRes.");
+IdentifyVTRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_reserved2.is_bound()) {
+ret_val.reserved2() = single_value->field_reserved2.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void IdentifyVTRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.IdentifyVTRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new IdentifyVTRes_template[list_length];
+}
+
+IdentifyVTRes_template& IdentifyVTRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.IdentifyVTRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.IdentifyVTRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& IdentifyVTRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& IdentifyVTRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.IdentifyVTRes.");
+return single_value->field_vtfunction;
+}
+
+OCTETSTRING_template& IdentifyVTRes_template::reserved2()
+{
+set_specific();
+return single_value->field_reserved2;
+}
+
+const OCTETSTRING_template& IdentifyVTRes_template::reserved2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved2 of a non-specific template of type @IsobusVTMessageTypes.IdentifyVTRes.");
+return single_value->field_reserved2;
+}
+
+OCTETSTRING_template& IdentifyVTRes_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const OCTETSTRING_template& IdentifyVTRes_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.IdentifyVTRes.");
+return single_value->field_reserved3;
+}
+
+OCTETSTRING_template& IdentifyVTRes_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& IdentifyVTRes_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.IdentifyVTRes.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& IdentifyVTRes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& IdentifyVTRes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.IdentifyVTRes.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& IdentifyVTRes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& IdentifyVTRes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.IdentifyVTRes.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& IdentifyVTRes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& IdentifyVTRes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.IdentifyVTRes.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& IdentifyVTRes_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& IdentifyVTRes_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.IdentifyVTRes.");
+return single_value->field_reserved8;
+}
+
+int IdentifyVTRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.IdentifyVTRes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.IdentifyVTRes 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 @IsobusVTMessageTypes.IdentifyVTRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.IdentifyVTRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.IdentifyVTRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.IdentifyVTRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.IdentifyVTRes.");
+  }
+  return 0;
+}
+
+void IdentifyVTRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void IdentifyVTRes_template::log_match(const IdentifyVTRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved2.match(match_value.reserved2(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved2");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 IdentifyVTRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_reserved2.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.IdentifyVTRes.");
+}
+}
+
+void IdentifyVTRes_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_vtfunction.decode_text(text_buf);
+single_value->field_reserved2.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 IdentifyVTRes_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 @IsobusVTMessageTypes.IdentifyVTRes.");
+}
+}
+
+void IdentifyVTRes_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: {
+    IdentifyVTRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.IdentifyVTRes has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.IdentifyVTRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.IdentifyVTRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void IdentifyVTRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.IdentifyVTRes");
+single_value->field_reserved2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.IdentifyVTRes");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.IdentifyVTRes");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.IdentifyVTRes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.IdentifyVTRes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.IdentifyVTRes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.IdentifyVTRes");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.IdentifyVTRes");
+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 : "@IsobusVTMessageTypes.IdentifyVTRes");
+}
+
+boolean IdentifyVTRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean IdentifyVTRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+IdentifyVTReq::IdentifyVTReq()
+{
+}
+
+IdentifyVTReq::IdentifyVTReq(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_reserved2,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_reserved2(par_reserved2),
+  field_reserved3(par_reserved3),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+IdentifyVTReq::IdentifyVTReq(const IdentifyVTReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.IdentifyVTReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+else field_reserved2.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void IdentifyVTReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_reserved2.clean_up();
+field_reserved3.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* IdentifyVTReq::get_descriptor() const { return &IdentifyVTReq_descr_; }
+IdentifyVTReq& IdentifyVTReq::operator=(const IdentifyVTReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.IdentifyVTReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+  else field_reserved2.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean IdentifyVTReq::operator==(const IdentifyVTReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_reserved2==other_value.field_reserved2
+  && field_reserved3==other_value.field_reserved3
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean IdentifyVTReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_reserved2.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean IdentifyVTReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_reserved2.is_value()
+  && field_reserved3.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void IdentifyVTReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void IdentifyVTReq::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.IdentifyVTReq has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.IdentifyVTReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.IdentifyVTReq");
+  }
+}
+
+void IdentifyVTReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (reserved2().is_bound()) reserved2().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void IdentifyVTReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_reserved2.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void IdentifyVTReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_reserved2.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void IdentifyVTReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void IdentifyVTReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int IdentifyVTReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, IdentifyVTReq_reserved2_descr_.raw->forceomit);
+  decoded_field_length = field_reserved2.RAW_decode(IdentifyVTReq_reserved2_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, IdentifyVTReq_reserved3_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(IdentifyVTReq_reserved3_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, IdentifyVTReq_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(IdentifyVTReq_reserved4_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, IdentifyVTReq_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(IdentifyVTReq_reserved5_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, IdentifyVTReq_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(IdentifyVTReq_reserved6_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, IdentifyVTReq_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(IdentifyVTReq_reserved7_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, IdentifyVTReq_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(IdentifyVTReq_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int IdentifyVTReq::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, IdentifyVTReq_reserved2_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, IdentifyVTReq_reserved3_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, IdentifyVTReq_reserved4_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, IdentifyVTReq_reserved5_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, IdentifyVTReq_reserved6_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, IdentifyVTReq_reserved7_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, IdentifyVTReq_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved2.RAW_encode(IdentifyVTReq_reserved2_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved3.RAW_encode(IdentifyVTReq_reserved3_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved4.RAW_encode(IdentifyVTReq_reserved4_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved5.RAW_encode(IdentifyVTReq_reserved5_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved6.RAW_encode(IdentifyVTReq_reserved6_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved7.RAW_encode(IdentifyVTReq_reserved7_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved8.RAW_encode(IdentifyVTReq_reserved8_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct IdentifyVTReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+OCTETSTRING_template field_reserved2;
+OCTETSTRING_template field_reserved3;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void IdentifyVTReq_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_vtfunction = ANY_VALUE;
+single_value->field_reserved2 = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void IdentifyVTReq_template::copy_value(const IdentifyVTReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.reserved2().is_bound()) {
+  single_value->field_reserved2 = other_value.reserved2();
+} else {
+  single_value->field_reserved2.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void IdentifyVTReq_template::copy_template(const IdentifyVTReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved2().get_selection()) {
+single_value->field_reserved2 = other_value.reserved2();
+} else {
+single_value->field_reserved2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new IdentifyVTReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.IdentifyVTReq.");
+break;
+}
+set_selection(other_value);
+}
+
+IdentifyVTReq_template::IdentifyVTReq_template()
+{
+}
+
+IdentifyVTReq_template::IdentifyVTReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+IdentifyVTReq_template::IdentifyVTReq_template(const IdentifyVTReq& other_value)
+{
+copy_value(other_value);
+}
+
+IdentifyVTReq_template::IdentifyVTReq_template(const OPTIONAL<IdentifyVTReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const IdentifyVTReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.IdentifyVTReq from an unbound optional field.");
+}
+}
+
+IdentifyVTReq_template::IdentifyVTReq_template(const IdentifyVTReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+IdentifyVTReq_template::~IdentifyVTReq_template()
+{
+clean_up();
+}
+
+IdentifyVTReq_template& IdentifyVTReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+IdentifyVTReq_template& IdentifyVTReq_template::operator=(const IdentifyVTReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+IdentifyVTReq_template& IdentifyVTReq_template::operator=(const OPTIONAL<IdentifyVTReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const IdentifyVTReq&)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 @IsobusVTMessageTypes.IdentifyVTReq.");
+}
+return *this;
+}
+
+IdentifyVTReq_template& IdentifyVTReq_template::operator=(const IdentifyVTReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean IdentifyVTReq_template::match(const IdentifyVTReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.reserved2().is_bound()) return FALSE;
+if(!single_value->field_reserved2.match(other_value.reserved2(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.IdentifyVTReq.");
+}
+return FALSE;
+}
+
+boolean IdentifyVTReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_reserved2.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean IdentifyVTReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_reserved2.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void IdentifyVTReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+IdentifyVTReq IdentifyVTReq_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 @IsobusVTMessageTypes.IdentifyVTReq.");
+IdentifyVTReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_reserved2.is_bound()) {
+ret_val.reserved2() = single_value->field_reserved2.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void IdentifyVTReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.IdentifyVTReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new IdentifyVTReq_template[list_length];
+}
+
+IdentifyVTReq_template& IdentifyVTReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.IdentifyVTReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.IdentifyVTReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& IdentifyVTReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& IdentifyVTReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.IdentifyVTReq.");
+return single_value->field_vtfunction;
+}
+
+OCTETSTRING_template& IdentifyVTReq_template::reserved2()
+{
+set_specific();
+return single_value->field_reserved2;
+}
+
+const OCTETSTRING_template& IdentifyVTReq_template::reserved2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved2 of a non-specific template of type @IsobusVTMessageTypes.IdentifyVTReq.");
+return single_value->field_reserved2;
+}
+
+OCTETSTRING_template& IdentifyVTReq_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const OCTETSTRING_template& IdentifyVTReq_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.IdentifyVTReq.");
+return single_value->field_reserved3;
+}
+
+OCTETSTRING_template& IdentifyVTReq_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& IdentifyVTReq_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.IdentifyVTReq.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& IdentifyVTReq_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& IdentifyVTReq_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.IdentifyVTReq.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& IdentifyVTReq_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& IdentifyVTReq_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.IdentifyVTReq.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& IdentifyVTReq_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& IdentifyVTReq_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.IdentifyVTReq.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& IdentifyVTReq_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& IdentifyVTReq_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.IdentifyVTReq.");
+return single_value->field_reserved8;
+}
+
+int IdentifyVTReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.IdentifyVTReq which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.IdentifyVTReq 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 @IsobusVTMessageTypes.IdentifyVTReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.IdentifyVTReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.IdentifyVTReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.IdentifyVTReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.IdentifyVTReq.");
+  }
+  return 0;
+}
+
+void IdentifyVTReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void IdentifyVTReq_template::log_match(const IdentifyVTReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved2.match(match_value.reserved2(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved2");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 IdentifyVTReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_reserved2.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.IdentifyVTReq.");
+}
+}
+
+void IdentifyVTReq_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_vtfunction.decode_text(text_buf);
+single_value->field_reserved2.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 IdentifyVTReq_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 @IsobusVTMessageTypes.IdentifyVTReq.");
+}
+}
+
+void IdentifyVTReq_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: {
+    IdentifyVTReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.IdentifyVTReq has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.IdentifyVTReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.IdentifyVTReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void IdentifyVTReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.IdentifyVTReq");
+single_value->field_reserved2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.IdentifyVTReq");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.IdentifyVTReq");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.IdentifyVTReq");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.IdentifyVTReq");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.IdentifyVTReq");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.IdentifyVTReq");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.IdentifyVTReq");
+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 : "@IsobusVTMessageTypes.IdentifyVTReq");
+}
+
+boolean IdentifyVTReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean IdentifyVTReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ExecuteExtendedMacroRes__ErrorCodes::ExecuteExtendedMacroRes__ErrorCodes()
+{
+}
+
+ExecuteExtendedMacroRes__ErrorCodes::ExecuteExtendedMacroRes__ErrorCodes(const BOOLEAN& par_objectIDdoesNotExist,
+    const BOOLEAN& par_objectIDisNotAMacroObject,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved3,
+    const BOOLEAN& par_reserved4,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7)
+  :   field_objectIDdoesNotExist(par_objectIDdoesNotExist),
+  field_objectIDisNotAMacroObject(par_objectIDisNotAMacroObject),
+  field_anyOtherError(par_anyOtherError),
+  field_reserved3(par_reserved3),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7)
+{
+}
+
+ExecuteExtendedMacroRes__ErrorCodes::ExecuteExtendedMacroRes__ErrorCodes(const ExecuteExtendedMacroRes__ErrorCodes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes.");
+if (other_value.objectIDdoesNotExist().is_bound()) field_objectIDdoesNotExist = other_value.objectIDdoesNotExist();
+else field_objectIDdoesNotExist.clean_up();
+if (other_value.objectIDisNotAMacroObject().is_bound()) field_objectIDisNotAMacroObject = other_value.objectIDisNotAMacroObject();
+else field_objectIDisNotAMacroObject.clean_up();
+if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+else field_anyOtherError.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+}
+
+void ExecuteExtendedMacroRes__ErrorCodes::clean_up()
+{
+field_objectIDdoesNotExist.clean_up();
+field_objectIDisNotAMacroObject.clean_up();
+field_anyOtherError.clean_up();
+field_reserved3.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ExecuteExtendedMacroRes__ErrorCodes::get_descriptor() const { return &ExecuteExtendedMacroRes__ErrorCodes_descr_; }
+ExecuteExtendedMacroRes__ErrorCodes& ExecuteExtendedMacroRes__ErrorCodes::operator=(const ExecuteExtendedMacroRes__ErrorCodes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes.");
+  if (other_value.objectIDdoesNotExist().is_bound()) field_objectIDdoesNotExist = other_value.objectIDdoesNotExist();
+  else field_objectIDdoesNotExist.clean_up();
+  if (other_value.objectIDisNotAMacroObject().is_bound()) field_objectIDisNotAMacroObject = other_value.objectIDisNotAMacroObject();
+  else field_objectIDisNotAMacroObject.clean_up();
+  if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+  else field_anyOtherError.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+}
+return *this;
+}
+
+boolean ExecuteExtendedMacroRes__ErrorCodes::operator==(const ExecuteExtendedMacroRes__ErrorCodes& other_value) const
+{
+return field_objectIDdoesNotExist==other_value.field_objectIDdoesNotExist
+  && field_objectIDisNotAMacroObject==other_value.field_objectIDisNotAMacroObject
+  && field_anyOtherError==other_value.field_anyOtherError
+  && field_reserved3==other_value.field_reserved3
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7;
+}
+
+boolean ExecuteExtendedMacroRes__ErrorCodes::is_bound() const
+{
+return (field_objectIDdoesNotExist.is_bound())
+  || (field_objectIDisNotAMacroObject.is_bound())
+  || (field_anyOtherError.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound());
+}
+boolean ExecuteExtendedMacroRes__ErrorCodes::is_value() const
+{
+return field_objectIDdoesNotExist.is_value()
+  && field_objectIDisNotAMacroObject.is_value()
+  && field_anyOtherError.is_value()
+  && field_reserved3.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value();
+}
+void ExecuteExtendedMacroRes__ErrorCodes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ objectIDdoesNotExist := ");
+field_objectIDdoesNotExist.log();
+TTCN_Logger::log_event_str(", objectIDisNotAMacroObject := ");
+field_objectIDisNotAMacroObject.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ExecuteExtendedMacroRes__ErrorCodes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes has 8 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) objectIDdoesNotExist().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectIDisNotAMacroObject().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "objectIDdoesNotExist")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDdoesNotExist().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(), "objectIDisNotAMacroObject")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDisNotAMacroObject().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes");
+  }
+}
+
+void ExecuteExtendedMacroRes__ErrorCodes::set_implicit_omit()
+{
+if (objectIDdoesNotExist().is_bound()) objectIDdoesNotExist().set_implicit_omit();
+if (objectIDisNotAMacroObject().is_bound()) objectIDisNotAMacroObject().set_implicit_omit();
+if (anyOtherError().is_bound()) anyOtherError().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+}
+
+void ExecuteExtendedMacroRes__ErrorCodes::encode_text(Text_Buf& text_buf) const
+{
+field_objectIDdoesNotExist.encode_text(text_buf);
+field_objectIDisNotAMacroObject.encode_text(text_buf);
+field_anyOtherError.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+}
+
+void ExecuteExtendedMacroRes__ErrorCodes::decode_text(Text_Buf& text_buf)
+{
+field_objectIDdoesNotExist.decode_text(text_buf);
+field_objectIDisNotAMacroObject.decode_text(text_buf);
+field_anyOtherError.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+}
+
+void ExecuteExtendedMacroRes__ErrorCodes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ExecuteExtendedMacroRes__ErrorCodes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ExecuteExtendedMacroRes__ErrorCodes::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_objectIDdoesNotExist.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_objectIDisNotAMacroObject.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_anyOtherError.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ExecuteExtendedMacroRes__ErrorCodes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_objectIDdoesNotExist.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectIDisNotAMacroObject.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_anyOtherError.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved3.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved4.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved5.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved6.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved7.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct ExecuteExtendedMacroRes__ErrorCodes_template::single_value_struct {
+BOOLEAN_template field_objectIDdoesNotExist;
+BOOLEAN_template field_objectIDisNotAMacroObject;
+BOOLEAN_template field_anyOtherError;
+BOOLEAN_template field_reserved3;
+BOOLEAN_template field_reserved4;
+BOOLEAN_template field_reserved5;
+BOOLEAN_template field_reserved6;
+BOOLEAN_template field_reserved7;
+};
+
+void ExecuteExtendedMacroRes__ErrorCodes_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_objectIDdoesNotExist = ANY_VALUE;
+single_value->field_objectIDisNotAMacroObject = ANY_VALUE;
+single_value->field_anyOtherError = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+}
+}
+}
+
+void ExecuteExtendedMacroRes__ErrorCodes_template::copy_value(const ExecuteExtendedMacroRes__ErrorCodes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.objectIDdoesNotExist().is_bound()) {
+  single_value->field_objectIDdoesNotExist = other_value.objectIDdoesNotExist();
+} else {
+  single_value->field_objectIDdoesNotExist.clean_up();
+}
+if (other_value.objectIDisNotAMacroObject().is_bound()) {
+  single_value->field_objectIDisNotAMacroObject = other_value.objectIDisNotAMacroObject();
+} else {
+  single_value->field_objectIDisNotAMacroObject.clean_up();
+}
+if (other_value.anyOtherError().is_bound()) {
+  single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+  single_value->field_anyOtherError.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ExecuteExtendedMacroRes__ErrorCodes_template::copy_template(const ExecuteExtendedMacroRes__ErrorCodes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.objectIDdoesNotExist().get_selection()) {
+single_value->field_objectIDdoesNotExist = other_value.objectIDdoesNotExist();
+} else {
+single_value->field_objectIDdoesNotExist.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectIDisNotAMacroObject().get_selection()) {
+single_value->field_objectIDisNotAMacroObject = other_value.objectIDisNotAMacroObject();
+} else {
+single_value->field_objectIDisNotAMacroObject.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.anyOtherError().get_selection()) {
+single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+single_value->field_anyOtherError.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ExecuteExtendedMacroRes__ErrorCodes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes.");
+break;
+}
+set_selection(other_value);
+}
+
+ExecuteExtendedMacroRes__ErrorCodes_template::ExecuteExtendedMacroRes__ErrorCodes_template()
+{
+}
+
+ExecuteExtendedMacroRes__ErrorCodes_template::ExecuteExtendedMacroRes__ErrorCodes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ExecuteExtendedMacroRes__ErrorCodes_template::ExecuteExtendedMacroRes__ErrorCodes_template(const ExecuteExtendedMacroRes__ErrorCodes& other_value)
+{
+copy_value(other_value);
+}
+
+ExecuteExtendedMacroRes__ErrorCodes_template::ExecuteExtendedMacroRes__ErrorCodes_template(const OPTIONAL<ExecuteExtendedMacroRes__ErrorCodes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExecuteExtendedMacroRes__ErrorCodes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes from an unbound optional field.");
+}
+}
+
+ExecuteExtendedMacroRes__ErrorCodes_template::ExecuteExtendedMacroRes__ErrorCodes_template(const ExecuteExtendedMacroRes__ErrorCodes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ExecuteExtendedMacroRes__ErrorCodes_template::~ExecuteExtendedMacroRes__ErrorCodes_template()
+{
+clean_up();
+}
+
+ExecuteExtendedMacroRes__ErrorCodes_template& ExecuteExtendedMacroRes__ErrorCodes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ExecuteExtendedMacroRes__ErrorCodes_template& ExecuteExtendedMacroRes__ErrorCodes_template::operator=(const ExecuteExtendedMacroRes__ErrorCodes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ExecuteExtendedMacroRes__ErrorCodes_template& ExecuteExtendedMacroRes__ErrorCodes_template::operator=(const OPTIONAL<ExecuteExtendedMacroRes__ErrorCodes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExecuteExtendedMacroRes__ErrorCodes&)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 @IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes.");
+}
+return *this;
+}
+
+ExecuteExtendedMacroRes__ErrorCodes_template& ExecuteExtendedMacroRes__ErrorCodes_template::operator=(const ExecuteExtendedMacroRes__ErrorCodes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ExecuteExtendedMacroRes__ErrorCodes_template::match(const ExecuteExtendedMacroRes__ErrorCodes& 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.objectIDdoesNotExist().is_bound()) return FALSE;
+if(!single_value->field_objectIDdoesNotExist.match(other_value.objectIDdoesNotExist(), legacy))return FALSE;
+if(!other_value.objectIDisNotAMacroObject().is_bound()) return FALSE;
+if(!single_value->field_objectIDisNotAMacroObject.match(other_value.objectIDisNotAMacroObject(), legacy))return FALSE;
+if(!other_value.anyOtherError().is_bound()) return FALSE;
+if(!single_value->field_anyOtherError.match(other_value.anyOtherError(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes.");
+}
+return FALSE;
+}
+
+boolean ExecuteExtendedMacroRes__ErrorCodes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_objectIDdoesNotExist.is_bound()
+
+ ||single_value->field_objectIDisNotAMacroObject.is_bound()
+
+ ||single_value->field_anyOtherError.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+;
+}
+
+boolean ExecuteExtendedMacroRes__ErrorCodes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_objectIDdoesNotExist.is_value()
+ &&single_value->field_objectIDisNotAMacroObject.is_value()
+ &&single_value->field_anyOtherError.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value();
+}
+
+void ExecuteExtendedMacroRes__ErrorCodes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ExecuteExtendedMacroRes__ErrorCodes ExecuteExtendedMacroRes__ErrorCodes_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 @IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes.");
+ExecuteExtendedMacroRes__ErrorCodes ret_val;
+if (single_value->field_objectIDdoesNotExist.is_bound()) {
+ret_val.objectIDdoesNotExist() = single_value->field_objectIDdoesNotExist.valueof();
+}
+if (single_value->field_objectIDisNotAMacroObject.is_bound()) {
+ret_val.objectIDisNotAMacroObject() = single_value->field_objectIDisNotAMacroObject.valueof();
+}
+if (single_value->field_anyOtherError.is_bound()) {
+ret_val.anyOtherError() = single_value->field_anyOtherError.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+return ret_val;
+}
+
+void ExecuteExtendedMacroRes__ErrorCodes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ExecuteExtendedMacroRes__ErrorCodes_template[list_length];
+}
+
+ExecuteExtendedMacroRes__ErrorCodes_template& ExecuteExtendedMacroRes__ErrorCodes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& ExecuteExtendedMacroRes__ErrorCodes_template::objectIDdoesNotExist()
+{
+set_specific();
+return single_value->field_objectIDdoesNotExist;
+}
+
+const BOOLEAN_template& ExecuteExtendedMacroRes__ErrorCodes_template::objectIDdoesNotExist() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectIDdoesNotExist of a non-specific template of type @IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes.");
+return single_value->field_objectIDdoesNotExist;
+}
+
+BOOLEAN_template& ExecuteExtendedMacroRes__ErrorCodes_template::objectIDisNotAMacroObject()
+{
+set_specific();
+return single_value->field_objectIDisNotAMacroObject;
+}
+
+const BOOLEAN_template& ExecuteExtendedMacroRes__ErrorCodes_template::objectIDisNotAMacroObject() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectIDisNotAMacroObject of a non-specific template of type @IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes.");
+return single_value->field_objectIDisNotAMacroObject;
+}
+
+BOOLEAN_template& ExecuteExtendedMacroRes__ErrorCodes_template::anyOtherError()
+{
+set_specific();
+return single_value->field_anyOtherError;
+}
+
+const BOOLEAN_template& ExecuteExtendedMacroRes__ErrorCodes_template::anyOtherError() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field anyOtherError of a non-specific template of type @IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes.");
+return single_value->field_anyOtherError;
+}
+
+BOOLEAN_template& ExecuteExtendedMacroRes__ErrorCodes_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const BOOLEAN_template& ExecuteExtendedMacroRes__ErrorCodes_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes.");
+return single_value->field_reserved3;
+}
+
+BOOLEAN_template& ExecuteExtendedMacroRes__ErrorCodes_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const BOOLEAN_template& ExecuteExtendedMacroRes__ErrorCodes_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes.");
+return single_value->field_reserved4;
+}
+
+BOOLEAN_template& ExecuteExtendedMacroRes__ErrorCodes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const BOOLEAN_template& ExecuteExtendedMacroRes__ErrorCodes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes.");
+return single_value->field_reserved5;
+}
+
+BOOLEAN_template& ExecuteExtendedMacroRes__ErrorCodes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const BOOLEAN_template& ExecuteExtendedMacroRes__ErrorCodes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes.");
+return single_value->field_reserved6;
+}
+
+BOOLEAN_template& ExecuteExtendedMacroRes__ErrorCodes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const BOOLEAN_template& ExecuteExtendedMacroRes__ErrorCodes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes.");
+return single_value->field_reserved7;
+}
+
+int ExecuteExtendedMacroRes__ErrorCodes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes 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 @IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes.");
+  }
+  return 0;
+}
+
+void ExecuteExtendedMacroRes__ErrorCodes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ objectIDdoesNotExist := ");
+single_value->field_objectIDdoesNotExist.log();
+TTCN_Logger::log_event_str(", objectIDisNotAMacroObject := ");
+single_value->field_objectIDisNotAMacroObject.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ExecuteExtendedMacroRes__ErrorCodes_template::log_match(const ExecuteExtendedMacroRes__ErrorCodes& 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_objectIDdoesNotExist.match(match_value.objectIDdoesNotExist(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectIDdoesNotExist");
+single_value->field_objectIDdoesNotExist.log_match(match_value.objectIDdoesNotExist(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectIDisNotAMacroObject.match(match_value.objectIDisNotAMacroObject(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectIDisNotAMacroObject");
+single_value->field_objectIDisNotAMacroObject.log_match(match_value.objectIDisNotAMacroObject(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_anyOtherError.match(match_value.anyOtherError(), legacy)){
+TTCN_Logger::log_logmatch_info(".anyOtherError");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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("{ objectIDdoesNotExist := ");
+single_value->field_objectIDdoesNotExist.log_match(match_value.objectIDdoesNotExist(), legacy);
+TTCN_Logger::log_event_str(", objectIDisNotAMacroObject := ");
+single_value->field_objectIDisNotAMacroObject.log_match(match_value.objectIDisNotAMacroObject(), legacy);
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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 ExecuteExtendedMacroRes__ErrorCodes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_objectIDdoesNotExist.encode_text(text_buf);
+single_value->field_objectIDisNotAMacroObject.encode_text(text_buf);
+single_value->field_anyOtherError.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.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 @IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes.");
+}
+}
+
+void ExecuteExtendedMacroRes__ErrorCodes_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_objectIDdoesNotExist.decode_text(text_buf);
+single_value->field_objectIDisNotAMacroObject.decode_text(text_buf);
+single_value->field_anyOtherError.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.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 ExecuteExtendedMacroRes__ErrorCodes_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 @IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes.");
+}
+}
+
+void ExecuteExtendedMacroRes__ErrorCodes_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: {
+    ExecuteExtendedMacroRes__ErrorCodes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes has 8 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) objectIDdoesNotExist().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectIDisNotAMacroObject().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "objectIDdoesNotExist")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDdoesNotExist().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(), "objectIDisNotAMacroObject")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDisNotAMacroObject().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ExecuteExtendedMacroRes__ErrorCodes_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_objectIDdoesNotExist.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes");
+single_value->field_objectIDisNotAMacroObject.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes");
+single_value->field_anyOtherError.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes");
+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 : "@IsobusVTMessageTypes.ExecuteExtendedMacroRes_ErrorCodes");
+}
+
+boolean ExecuteExtendedMacroRes__ErrorCodes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ExecuteExtendedMacroRes__ErrorCodes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ExecuteExtendedMacroRes::ExecuteExtendedMacroRes()
+{
+}
+
+ExecuteExtendedMacroRes::ExecuteExtendedMacroRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_ObjectIDofMacroObject,
+    const ExecuteExtendedMacroRes__ErrorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_ObjectIDofMacroObject(par_ObjectIDofMacroObject),
+  field_errorCodes(par_errorCodes),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+ExecuteExtendedMacroRes::ExecuteExtendedMacroRes(const ExecuteExtendedMacroRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ExecuteExtendedMacroRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.ObjectIDofMacroObject().is_bound()) field_ObjectIDofMacroObject = other_value.ObjectIDofMacroObject();
+else field_ObjectIDofMacroObject.clean_up();
+if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+else field_errorCodes.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void ExecuteExtendedMacroRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_ObjectIDofMacroObject.clean_up();
+field_errorCodes.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ExecuteExtendedMacroRes::get_descriptor() const { return &ExecuteExtendedMacroRes_descr_; }
+ExecuteExtendedMacroRes& ExecuteExtendedMacroRes::operator=(const ExecuteExtendedMacroRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ExecuteExtendedMacroRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.ObjectIDofMacroObject().is_bound()) field_ObjectIDofMacroObject = other_value.ObjectIDofMacroObject();
+  else field_ObjectIDofMacroObject.clean_up();
+  if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+  else field_errorCodes.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean ExecuteExtendedMacroRes::operator==(const ExecuteExtendedMacroRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_ObjectIDofMacroObject==other_value.field_ObjectIDofMacroObject
+  && field_errorCodes==other_value.field_errorCodes
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean ExecuteExtendedMacroRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_ObjectIDofMacroObject.is_bound())
+  || (field_errorCodes.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean ExecuteExtendedMacroRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_ObjectIDofMacroObject.is_value()
+  && field_errorCodes.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void ExecuteExtendedMacroRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", ObjectIDofMacroObject := ");
+field_ObjectIDofMacroObject.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ExecuteExtendedMacroRes::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 @IsobusVTMessageTypes.ExecuteExtendedMacroRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ObjectIDofMacroObject().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "ObjectIDofMacroObject")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ObjectIDofMacroObject().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ExecuteExtendedMacroRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ExecuteExtendedMacroRes");
+  }
+}
+
+void ExecuteExtendedMacroRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (ObjectIDofMacroObject().is_bound()) ObjectIDofMacroObject().set_implicit_omit();
+if (errorCodes().is_bound()) errorCodes().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void ExecuteExtendedMacroRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_ObjectIDofMacroObject.encode_text(text_buf);
+field_errorCodes.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void ExecuteExtendedMacroRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_ObjectIDofMacroObject.decode_text(text_buf);
+field_errorCodes.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void ExecuteExtendedMacroRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ExecuteExtendedMacroRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ExecuteExtendedMacroRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_ObjectIDofMacroObject.RAW_decode(ValidObjectID_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, ExecuteExtendedMacroRes__ErrorCodes_descr_.raw->forceomit);
+  decoded_field_length = field_errorCodes.RAW_decode(ExecuteExtendedMacroRes__ErrorCodes_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, ExecuteExtendedMacroRes_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(ExecuteExtendedMacroRes_reserved5_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, ExecuteExtendedMacroRes_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(ExecuteExtendedMacroRes_reserved6_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, ExecuteExtendedMacroRes_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(ExecuteExtendedMacroRes_reserved7_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, ExecuteExtendedMacroRes_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(ExecuteExtendedMacroRes_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ExecuteExtendedMacroRes::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ExecuteExtendedMacroRes__ErrorCodes_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, ExecuteExtendedMacroRes_reserved5_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, ExecuteExtendedMacroRes_reserved6_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, ExecuteExtendedMacroRes_reserved7_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, ExecuteExtendedMacroRes_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_ObjectIDofMacroObject.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_errorCodes.RAW_encode(ExecuteExtendedMacroRes__ErrorCodes_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved5.RAW_encode(ExecuteExtendedMacroRes_reserved5_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved6.RAW_encode(ExecuteExtendedMacroRes_reserved6_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved7.RAW_encode(ExecuteExtendedMacroRes_reserved7_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved8.RAW_encode(ExecuteExtendedMacroRes_reserved8_descr_, *myleaf.body.node.nodes[6]);
+  return myleaf.length = encoded_length;
+}
+
+struct ExecuteExtendedMacroRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_ObjectIDofMacroObject;
+ExecuteExtendedMacroRes__ErrorCodes_template field_errorCodes;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void ExecuteExtendedMacroRes_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_vtfunction = ANY_VALUE;
+single_value->field_ObjectIDofMacroObject = ANY_VALUE;
+single_value->field_errorCodes = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void ExecuteExtendedMacroRes_template::copy_value(const ExecuteExtendedMacroRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.ObjectIDofMacroObject().is_bound()) {
+  single_value->field_ObjectIDofMacroObject = other_value.ObjectIDofMacroObject();
+} else {
+  single_value->field_ObjectIDofMacroObject.clean_up();
+}
+if (other_value.errorCodes().is_bound()) {
+  single_value->field_errorCodes = other_value.errorCodes();
+} else {
+  single_value->field_errorCodes.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ExecuteExtendedMacroRes_template::copy_template(const ExecuteExtendedMacroRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.ObjectIDofMacroObject().get_selection()) {
+single_value->field_ObjectIDofMacroObject = other_value.ObjectIDofMacroObject();
+} else {
+single_value->field_ObjectIDofMacroObject.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.errorCodes().get_selection()) {
+single_value->field_errorCodes = other_value.errorCodes();
+} else {
+single_value->field_errorCodes.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ExecuteExtendedMacroRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExecuteExtendedMacroRes.");
+break;
+}
+set_selection(other_value);
+}
+
+ExecuteExtendedMacroRes_template::ExecuteExtendedMacroRes_template()
+{
+}
+
+ExecuteExtendedMacroRes_template::ExecuteExtendedMacroRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ExecuteExtendedMacroRes_template::ExecuteExtendedMacroRes_template(const ExecuteExtendedMacroRes& other_value)
+{
+copy_value(other_value);
+}
+
+ExecuteExtendedMacroRes_template::ExecuteExtendedMacroRes_template(const OPTIONAL<ExecuteExtendedMacroRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExecuteExtendedMacroRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ExecuteExtendedMacroRes from an unbound optional field.");
+}
+}
+
+ExecuteExtendedMacroRes_template::ExecuteExtendedMacroRes_template(const ExecuteExtendedMacroRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ExecuteExtendedMacroRes_template::~ExecuteExtendedMacroRes_template()
+{
+clean_up();
+}
+
+ExecuteExtendedMacroRes_template& ExecuteExtendedMacroRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ExecuteExtendedMacroRes_template& ExecuteExtendedMacroRes_template::operator=(const ExecuteExtendedMacroRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ExecuteExtendedMacroRes_template& ExecuteExtendedMacroRes_template::operator=(const OPTIONAL<ExecuteExtendedMacroRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExecuteExtendedMacroRes&)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 @IsobusVTMessageTypes.ExecuteExtendedMacroRes.");
+}
+return *this;
+}
+
+ExecuteExtendedMacroRes_template& ExecuteExtendedMacroRes_template::operator=(const ExecuteExtendedMacroRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ExecuteExtendedMacroRes_template::match(const ExecuteExtendedMacroRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.ObjectIDofMacroObject().is_bound()) return FALSE;
+if(!single_value->field_ObjectIDofMacroObject.match(other_value.ObjectIDofMacroObject(), legacy))return FALSE;
+if(!other_value.errorCodes().is_bound()) return FALSE;
+if(!single_value->field_errorCodes.match(other_value.errorCodes(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExecuteExtendedMacroRes.");
+}
+return FALSE;
+}
+
+boolean ExecuteExtendedMacroRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_ObjectIDofMacroObject.is_bound()
+
+ ||single_value->field_errorCodes.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean ExecuteExtendedMacroRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_ObjectIDofMacroObject.is_value()
+ &&single_value->field_errorCodes.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void ExecuteExtendedMacroRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ExecuteExtendedMacroRes ExecuteExtendedMacroRes_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 @IsobusVTMessageTypes.ExecuteExtendedMacroRes.");
+ExecuteExtendedMacroRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_ObjectIDofMacroObject.is_bound()) {
+ret_val.ObjectIDofMacroObject() = single_value->field_ObjectIDofMacroObject.valueof();
+}
+if (single_value->field_errorCodes.is_bound()) {
+ret_val.errorCodes() = single_value->field_errorCodes.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void ExecuteExtendedMacroRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ExecuteExtendedMacroRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ExecuteExtendedMacroRes_template[list_length];
+}
+
+ExecuteExtendedMacroRes_template& ExecuteExtendedMacroRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ExecuteExtendedMacroRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ExecuteExtendedMacroRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ExecuteExtendedMacroRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ExecuteExtendedMacroRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ExecuteExtendedMacroRes.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& ExecuteExtendedMacroRes_template::ObjectIDofMacroObject()
+{
+set_specific();
+return single_value->field_ObjectIDofMacroObject;
+}
+
+const INTEGER_template& ExecuteExtendedMacroRes_template::ObjectIDofMacroObject() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field ObjectIDofMacroObject of a non-specific template of type @IsobusVTMessageTypes.ExecuteExtendedMacroRes.");
+return single_value->field_ObjectIDofMacroObject;
+}
+
+ExecuteExtendedMacroRes__ErrorCodes_template& ExecuteExtendedMacroRes_template::errorCodes()
+{
+set_specific();
+return single_value->field_errorCodes;
+}
+
+const ExecuteExtendedMacroRes__ErrorCodes_template& ExecuteExtendedMacroRes_template::errorCodes() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field errorCodes of a non-specific template of type @IsobusVTMessageTypes.ExecuteExtendedMacroRes.");
+return single_value->field_errorCodes;
+}
+
+OCTETSTRING_template& ExecuteExtendedMacroRes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& ExecuteExtendedMacroRes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.ExecuteExtendedMacroRes.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& ExecuteExtendedMacroRes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& ExecuteExtendedMacroRes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.ExecuteExtendedMacroRes.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& ExecuteExtendedMacroRes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& ExecuteExtendedMacroRes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ExecuteExtendedMacroRes.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& ExecuteExtendedMacroRes_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& ExecuteExtendedMacroRes_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.ExecuteExtendedMacroRes.");
+return single_value->field_reserved8;
+}
+
+int ExecuteExtendedMacroRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExecuteExtendedMacroRes 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 @IsobusVTMessageTypes.ExecuteExtendedMacroRes 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 @IsobusVTMessageTypes.ExecuteExtendedMacroRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExecuteExtendedMacroRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExecuteExtendedMacroRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExecuteExtendedMacroRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExecuteExtendedMacroRes.");
+  }
+  return 0;
+}
+
+void ExecuteExtendedMacroRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", ObjectIDofMacroObject := ");
+single_value->field_ObjectIDofMacroObject.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ExecuteExtendedMacroRes_template::log_match(const ExecuteExtendedMacroRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_ObjectIDofMacroObject.match(match_value.ObjectIDofMacroObject(), legacy)){
+TTCN_Logger::log_logmatch_info(".ObjectIDofMacroObject");
+single_value->field_ObjectIDofMacroObject.log_match(match_value.ObjectIDofMacroObject(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_errorCodes.match(match_value.errorCodes(), legacy)){
+TTCN_Logger::log_logmatch_info(".errorCodes");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", ObjectIDofMacroObject := ");
+single_value->field_ObjectIDofMacroObject.log_match(match_value.ObjectIDofMacroObject(), legacy);
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 ExecuteExtendedMacroRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_ObjectIDofMacroObject.encode_text(text_buf);
+single_value->field_errorCodes.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.ExecuteExtendedMacroRes.");
+}
+}
+
+void ExecuteExtendedMacroRes_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_vtfunction.decode_text(text_buf);
+single_value->field_ObjectIDofMacroObject.decode_text(text_buf);
+single_value->field_errorCodes.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 ExecuteExtendedMacroRes_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 @IsobusVTMessageTypes.ExecuteExtendedMacroRes.");
+}
+}
+
+void ExecuteExtendedMacroRes_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: {
+    ExecuteExtendedMacroRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.ExecuteExtendedMacroRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ObjectIDofMacroObject().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "ObjectIDofMacroObject")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ObjectIDofMacroObject().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ExecuteExtendedMacroRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ExecuteExtendedMacroRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ExecuteExtendedMacroRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExecuteExtendedMacroRes");
+single_value->field_ObjectIDofMacroObject.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExecuteExtendedMacroRes");
+single_value->field_errorCodes.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExecuteExtendedMacroRes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExecuteExtendedMacroRes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExecuteExtendedMacroRes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExecuteExtendedMacroRes");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExecuteExtendedMacroRes");
+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 : "@IsobusVTMessageTypes.ExecuteExtendedMacroRes");
+}
+
+boolean ExecuteExtendedMacroRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ExecuteExtendedMacroRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ExecuteExtendedMacroReq::ExecuteExtendedMacroReq()
+{
+}
+
+ExecuteExtendedMacroReq::ExecuteExtendedMacroReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_ObjectIDofMacroObject,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_ObjectIDofMacroObject(par_ObjectIDofMacroObject),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+ExecuteExtendedMacroReq::ExecuteExtendedMacroReq(const ExecuteExtendedMacroReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ExecuteExtendedMacroReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.ObjectIDofMacroObject().is_bound()) field_ObjectIDofMacroObject = other_value.ObjectIDofMacroObject();
+else field_ObjectIDofMacroObject.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void ExecuteExtendedMacroReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_ObjectIDofMacroObject.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ExecuteExtendedMacroReq::get_descriptor() const { return &ExecuteExtendedMacroReq_descr_; }
+ExecuteExtendedMacroReq& ExecuteExtendedMacroReq::operator=(const ExecuteExtendedMacroReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ExecuteExtendedMacroReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.ObjectIDofMacroObject().is_bound()) field_ObjectIDofMacroObject = other_value.ObjectIDofMacroObject();
+  else field_ObjectIDofMacroObject.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean ExecuteExtendedMacroReq::operator==(const ExecuteExtendedMacroReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_ObjectIDofMacroObject==other_value.field_ObjectIDofMacroObject
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean ExecuteExtendedMacroReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_ObjectIDofMacroObject.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean ExecuteExtendedMacroReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_ObjectIDofMacroObject.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void ExecuteExtendedMacroReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", ObjectIDofMacroObject := ");
+field_ObjectIDofMacroObject.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ExecuteExtendedMacroReq::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 @IsobusVTMessageTypes.ExecuteExtendedMacroReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ObjectIDofMacroObject().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "ObjectIDofMacroObject")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ObjectIDofMacroObject().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ExecuteExtendedMacroReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ExecuteExtendedMacroReq");
+  }
+}
+
+void ExecuteExtendedMacroReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (ObjectIDofMacroObject().is_bound()) ObjectIDofMacroObject().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void ExecuteExtendedMacroReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_ObjectIDofMacroObject.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void ExecuteExtendedMacroReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_ObjectIDofMacroObject.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void ExecuteExtendedMacroReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ExecuteExtendedMacroReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ExecuteExtendedMacroReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_ObjectIDofMacroObject.RAW_decode(ValidObjectID_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, ExecuteExtendedMacroReq_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(ExecuteExtendedMacroReq_reserved4_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, ExecuteExtendedMacroReq_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(ExecuteExtendedMacroReq_reserved5_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, ExecuteExtendedMacroReq_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(ExecuteExtendedMacroReq_reserved6_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, ExecuteExtendedMacroReq_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(ExecuteExtendedMacroReq_reserved7_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, ExecuteExtendedMacroReq_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(ExecuteExtendedMacroReq_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ExecuteExtendedMacroReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ExecuteExtendedMacroReq_reserved4_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, ExecuteExtendedMacroReq_reserved5_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, ExecuteExtendedMacroReq_reserved6_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, ExecuteExtendedMacroReq_reserved7_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, ExecuteExtendedMacroReq_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_ObjectIDofMacroObject.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved4.RAW_encode(ExecuteExtendedMacroReq_reserved4_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved5.RAW_encode(ExecuteExtendedMacroReq_reserved5_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved6.RAW_encode(ExecuteExtendedMacroReq_reserved6_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved7.RAW_encode(ExecuteExtendedMacroReq_reserved7_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved8.RAW_encode(ExecuteExtendedMacroReq_reserved8_descr_, *myleaf.body.node.nodes[6]);
+  return myleaf.length = encoded_length;
+}
+
+struct ExecuteExtendedMacroReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_ObjectIDofMacroObject;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void ExecuteExtendedMacroReq_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_vtfunction = ANY_VALUE;
+single_value->field_ObjectIDofMacroObject = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void ExecuteExtendedMacroReq_template::copy_value(const ExecuteExtendedMacroReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.ObjectIDofMacroObject().is_bound()) {
+  single_value->field_ObjectIDofMacroObject = other_value.ObjectIDofMacroObject();
+} else {
+  single_value->field_ObjectIDofMacroObject.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ExecuteExtendedMacroReq_template::copy_template(const ExecuteExtendedMacroReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.ObjectIDofMacroObject().get_selection()) {
+single_value->field_ObjectIDofMacroObject = other_value.ObjectIDofMacroObject();
+} else {
+single_value->field_ObjectIDofMacroObject.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ExecuteExtendedMacroReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExecuteExtendedMacroReq.");
+break;
+}
+set_selection(other_value);
+}
+
+ExecuteExtendedMacroReq_template::ExecuteExtendedMacroReq_template()
+{
+}
+
+ExecuteExtendedMacroReq_template::ExecuteExtendedMacroReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ExecuteExtendedMacroReq_template::ExecuteExtendedMacroReq_template(const ExecuteExtendedMacroReq& other_value)
+{
+copy_value(other_value);
+}
+
+ExecuteExtendedMacroReq_template::ExecuteExtendedMacroReq_template(const OPTIONAL<ExecuteExtendedMacroReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExecuteExtendedMacroReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ExecuteExtendedMacroReq from an unbound optional field.");
+}
+}
+
+ExecuteExtendedMacroReq_template::ExecuteExtendedMacroReq_template(const ExecuteExtendedMacroReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ExecuteExtendedMacroReq_template::~ExecuteExtendedMacroReq_template()
+{
+clean_up();
+}
+
+ExecuteExtendedMacroReq_template& ExecuteExtendedMacroReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ExecuteExtendedMacroReq_template& ExecuteExtendedMacroReq_template::operator=(const ExecuteExtendedMacroReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ExecuteExtendedMacroReq_template& ExecuteExtendedMacroReq_template::operator=(const OPTIONAL<ExecuteExtendedMacroReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExecuteExtendedMacroReq&)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 @IsobusVTMessageTypes.ExecuteExtendedMacroReq.");
+}
+return *this;
+}
+
+ExecuteExtendedMacroReq_template& ExecuteExtendedMacroReq_template::operator=(const ExecuteExtendedMacroReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ExecuteExtendedMacroReq_template::match(const ExecuteExtendedMacroReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.ObjectIDofMacroObject().is_bound()) return FALSE;
+if(!single_value->field_ObjectIDofMacroObject.match(other_value.ObjectIDofMacroObject(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExecuteExtendedMacroReq.");
+}
+return FALSE;
+}
+
+boolean ExecuteExtendedMacroReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_ObjectIDofMacroObject.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean ExecuteExtendedMacroReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_ObjectIDofMacroObject.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void ExecuteExtendedMacroReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ExecuteExtendedMacroReq ExecuteExtendedMacroReq_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 @IsobusVTMessageTypes.ExecuteExtendedMacroReq.");
+ExecuteExtendedMacroReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_ObjectIDofMacroObject.is_bound()) {
+ret_val.ObjectIDofMacroObject() = single_value->field_ObjectIDofMacroObject.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void ExecuteExtendedMacroReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ExecuteExtendedMacroReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ExecuteExtendedMacroReq_template[list_length];
+}
+
+ExecuteExtendedMacroReq_template& ExecuteExtendedMacroReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ExecuteExtendedMacroReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ExecuteExtendedMacroReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ExecuteExtendedMacroReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ExecuteExtendedMacroReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ExecuteExtendedMacroReq.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& ExecuteExtendedMacroReq_template::ObjectIDofMacroObject()
+{
+set_specific();
+return single_value->field_ObjectIDofMacroObject;
+}
+
+const INTEGER_template& ExecuteExtendedMacroReq_template::ObjectIDofMacroObject() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field ObjectIDofMacroObject of a non-specific template of type @IsobusVTMessageTypes.ExecuteExtendedMacroReq.");
+return single_value->field_ObjectIDofMacroObject;
+}
+
+OCTETSTRING_template& ExecuteExtendedMacroReq_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& ExecuteExtendedMacroReq_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.ExecuteExtendedMacroReq.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& ExecuteExtendedMacroReq_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& ExecuteExtendedMacroReq_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.ExecuteExtendedMacroReq.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& ExecuteExtendedMacroReq_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& ExecuteExtendedMacroReq_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.ExecuteExtendedMacroReq.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& ExecuteExtendedMacroReq_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& ExecuteExtendedMacroReq_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ExecuteExtendedMacroReq.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& ExecuteExtendedMacroReq_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& ExecuteExtendedMacroReq_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.ExecuteExtendedMacroReq.");
+return single_value->field_reserved8;
+}
+
+int ExecuteExtendedMacroReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExecuteExtendedMacroReq 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 @IsobusVTMessageTypes.ExecuteExtendedMacroReq 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 @IsobusVTMessageTypes.ExecuteExtendedMacroReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExecuteExtendedMacroReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExecuteExtendedMacroReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExecuteExtendedMacroReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExecuteExtendedMacroReq.");
+  }
+  return 0;
+}
+
+void ExecuteExtendedMacroReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", ObjectIDofMacroObject := ");
+single_value->field_ObjectIDofMacroObject.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ExecuteExtendedMacroReq_template::log_match(const ExecuteExtendedMacroReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_ObjectIDofMacroObject.match(match_value.ObjectIDofMacroObject(), legacy)){
+TTCN_Logger::log_logmatch_info(".ObjectIDofMacroObject");
+single_value->field_ObjectIDofMacroObject.log_match(match_value.ObjectIDofMacroObject(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", ObjectIDofMacroObject := ");
+single_value->field_ObjectIDofMacroObject.log_match(match_value.ObjectIDofMacroObject(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 ExecuteExtendedMacroReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_ObjectIDofMacroObject.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.ExecuteExtendedMacroReq.");
+}
+}
+
+void ExecuteExtendedMacroReq_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_vtfunction.decode_text(text_buf);
+single_value->field_ObjectIDofMacroObject.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 ExecuteExtendedMacroReq_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 @IsobusVTMessageTypes.ExecuteExtendedMacroReq.");
+}
+}
+
+void ExecuteExtendedMacroReq_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: {
+    ExecuteExtendedMacroReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.ExecuteExtendedMacroReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ObjectIDofMacroObject().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "ObjectIDofMacroObject")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ObjectIDofMacroObject().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ExecuteExtendedMacroReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ExecuteExtendedMacroReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ExecuteExtendedMacroReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExecuteExtendedMacroReq");
+single_value->field_ObjectIDofMacroObject.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExecuteExtendedMacroReq");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExecuteExtendedMacroReq");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExecuteExtendedMacroReq");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExecuteExtendedMacroReq");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExecuteExtendedMacroReq");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExecuteExtendedMacroReq");
+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 : "@IsobusVTMessageTypes.ExecuteExtendedMacroReq");
+}
+
+boolean ExecuteExtendedMacroReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ExecuteExtendedMacroReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+LockUnlockMaskRes__ErrorCodes::LockUnlockMaskRes__ErrorCodes()
+{
+}
+
+LockUnlockMaskRes__ErrorCodes::LockUnlockMaskRes__ErrorCodes(const BOOLEAN& par_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask,
+    const BOOLEAN& par_lockCommandIgnoredAlreadyLocked,
+    const BOOLEAN& par_unlockCommandIgnoredNotLocked,
+    const BOOLEAN& par_lockCommandIgnoredAnAlarmMaskIsActive,
+    const BOOLEAN& par_unsolicitedUnlockTimeoutOccurred,
+    const BOOLEAN& par_unsolicitedUnlockThisMaskIsHidden,
+    const BOOLEAN& par_unsolicitedUnlockOperatorInducedOrAnyOtherError,
+    const BOOLEAN& par_anyOtherError)
+  :   field_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask(par_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask),
+  field_lockCommandIgnoredAlreadyLocked(par_lockCommandIgnoredAlreadyLocked),
+  field_unlockCommandIgnoredNotLocked(par_unlockCommandIgnoredNotLocked),
+  field_lockCommandIgnoredAnAlarmMaskIsActive(par_lockCommandIgnoredAnAlarmMaskIsActive),
+  field_unsolicitedUnlockTimeoutOccurred(par_unsolicitedUnlockTimeoutOccurred),
+  field_unsolicitedUnlockThisMaskIsHidden(par_unsolicitedUnlockThisMaskIsHidden),
+  field_unsolicitedUnlockOperatorInducedOrAnyOtherError(par_unsolicitedUnlockOperatorInducedOrAnyOtherError),
+  field_anyOtherError(par_anyOtherError)
+{
+}
+
+LockUnlockMaskRes__ErrorCodes::LockUnlockMaskRes__ErrorCodes(const LockUnlockMaskRes__ErrorCodes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes.");
+if (other_value.commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask().is_bound()) field_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask = other_value.commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask();
+else field_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask.clean_up();
+if (other_value.lockCommandIgnoredAlreadyLocked().is_bound()) field_lockCommandIgnoredAlreadyLocked = other_value.lockCommandIgnoredAlreadyLocked();
+else field_lockCommandIgnoredAlreadyLocked.clean_up();
+if (other_value.unlockCommandIgnoredNotLocked().is_bound()) field_unlockCommandIgnoredNotLocked = other_value.unlockCommandIgnoredNotLocked();
+else field_unlockCommandIgnoredNotLocked.clean_up();
+if (other_value.lockCommandIgnoredAnAlarmMaskIsActive().is_bound()) field_lockCommandIgnoredAnAlarmMaskIsActive = other_value.lockCommandIgnoredAnAlarmMaskIsActive();
+else field_lockCommandIgnoredAnAlarmMaskIsActive.clean_up();
+if (other_value.unsolicitedUnlockTimeoutOccurred().is_bound()) field_unsolicitedUnlockTimeoutOccurred = other_value.unsolicitedUnlockTimeoutOccurred();
+else field_unsolicitedUnlockTimeoutOccurred.clean_up();
+if (other_value.unsolicitedUnlockThisMaskIsHidden().is_bound()) field_unsolicitedUnlockThisMaskIsHidden = other_value.unsolicitedUnlockThisMaskIsHidden();
+else field_unsolicitedUnlockThisMaskIsHidden.clean_up();
+if (other_value.unsolicitedUnlockOperatorInducedOrAnyOtherError().is_bound()) field_unsolicitedUnlockOperatorInducedOrAnyOtherError = other_value.unsolicitedUnlockOperatorInducedOrAnyOtherError();
+else field_unsolicitedUnlockOperatorInducedOrAnyOtherError.clean_up();
+if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+else field_anyOtherError.clean_up();
+}
+
+void LockUnlockMaskRes__ErrorCodes::clean_up()
+{
+field_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask.clean_up();
+field_lockCommandIgnoredAlreadyLocked.clean_up();
+field_unlockCommandIgnoredNotLocked.clean_up();
+field_lockCommandIgnoredAnAlarmMaskIsActive.clean_up();
+field_unsolicitedUnlockTimeoutOccurred.clean_up();
+field_unsolicitedUnlockThisMaskIsHidden.clean_up();
+field_unsolicitedUnlockOperatorInducedOrAnyOtherError.clean_up();
+field_anyOtherError.clean_up();
+}
+
+const TTCN_Typedescriptor_t* LockUnlockMaskRes__ErrorCodes::get_descriptor() const { return &LockUnlockMaskRes__ErrorCodes_descr_; }
+LockUnlockMaskRes__ErrorCodes& LockUnlockMaskRes__ErrorCodes::operator=(const LockUnlockMaskRes__ErrorCodes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes.");
+  if (other_value.commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask().is_bound()) field_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask = other_value.commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask();
+  else field_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask.clean_up();
+  if (other_value.lockCommandIgnoredAlreadyLocked().is_bound()) field_lockCommandIgnoredAlreadyLocked = other_value.lockCommandIgnoredAlreadyLocked();
+  else field_lockCommandIgnoredAlreadyLocked.clean_up();
+  if (other_value.unlockCommandIgnoredNotLocked().is_bound()) field_unlockCommandIgnoredNotLocked = other_value.unlockCommandIgnoredNotLocked();
+  else field_unlockCommandIgnoredNotLocked.clean_up();
+  if (other_value.lockCommandIgnoredAnAlarmMaskIsActive().is_bound()) field_lockCommandIgnoredAnAlarmMaskIsActive = other_value.lockCommandIgnoredAnAlarmMaskIsActive();
+  else field_lockCommandIgnoredAnAlarmMaskIsActive.clean_up();
+  if (other_value.unsolicitedUnlockTimeoutOccurred().is_bound()) field_unsolicitedUnlockTimeoutOccurred = other_value.unsolicitedUnlockTimeoutOccurred();
+  else field_unsolicitedUnlockTimeoutOccurred.clean_up();
+  if (other_value.unsolicitedUnlockThisMaskIsHidden().is_bound()) field_unsolicitedUnlockThisMaskIsHidden = other_value.unsolicitedUnlockThisMaskIsHidden();
+  else field_unsolicitedUnlockThisMaskIsHidden.clean_up();
+  if (other_value.unsolicitedUnlockOperatorInducedOrAnyOtherError().is_bound()) field_unsolicitedUnlockOperatorInducedOrAnyOtherError = other_value.unsolicitedUnlockOperatorInducedOrAnyOtherError();
+  else field_unsolicitedUnlockOperatorInducedOrAnyOtherError.clean_up();
+  if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+  else field_anyOtherError.clean_up();
+}
+return *this;
+}
+
+boolean LockUnlockMaskRes__ErrorCodes::operator==(const LockUnlockMaskRes__ErrorCodes& other_value) const
+{
+return field_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask==other_value.field_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask
+  && field_lockCommandIgnoredAlreadyLocked==other_value.field_lockCommandIgnoredAlreadyLocked
+  && field_unlockCommandIgnoredNotLocked==other_value.field_unlockCommandIgnoredNotLocked
+  && field_lockCommandIgnoredAnAlarmMaskIsActive==other_value.field_lockCommandIgnoredAnAlarmMaskIsActive
+  && field_unsolicitedUnlockTimeoutOccurred==other_value.field_unsolicitedUnlockTimeoutOccurred
+  && field_unsolicitedUnlockThisMaskIsHidden==other_value.field_unsolicitedUnlockThisMaskIsHidden
+  && field_unsolicitedUnlockOperatorInducedOrAnyOtherError==other_value.field_unsolicitedUnlockOperatorInducedOrAnyOtherError
+  && field_anyOtherError==other_value.field_anyOtherError;
+}
+
+boolean LockUnlockMaskRes__ErrorCodes::is_bound() const
+{
+return (field_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask.is_bound())
+  || (field_lockCommandIgnoredAlreadyLocked.is_bound())
+  || (field_unlockCommandIgnoredNotLocked.is_bound())
+  || (field_lockCommandIgnoredAnAlarmMaskIsActive.is_bound())
+  || (field_unsolicitedUnlockTimeoutOccurred.is_bound())
+  || (field_unsolicitedUnlockThisMaskIsHidden.is_bound())
+  || (field_unsolicitedUnlockOperatorInducedOrAnyOtherError.is_bound())
+  || (field_anyOtherError.is_bound());
+}
+boolean LockUnlockMaskRes__ErrorCodes::is_value() const
+{
+return field_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask.is_value()
+  && field_lockCommandIgnoredAlreadyLocked.is_value()
+  && field_unlockCommandIgnoredNotLocked.is_value()
+  && field_lockCommandIgnoredAnAlarmMaskIsActive.is_value()
+  && field_unsolicitedUnlockTimeoutOccurred.is_value()
+  && field_unsolicitedUnlockThisMaskIsHidden.is_value()
+  && field_unsolicitedUnlockOperatorInducedOrAnyOtherError.is_value()
+  && field_anyOtherError.is_value();
+}
+void LockUnlockMaskRes__ErrorCodes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask := ");
+field_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask.log();
+TTCN_Logger::log_event_str(", lockCommandIgnoredAlreadyLocked := ");
+field_lockCommandIgnoredAlreadyLocked.log();
+TTCN_Logger::log_event_str(", unlockCommandIgnoredNotLocked := ");
+field_unlockCommandIgnoredNotLocked.log();
+TTCN_Logger::log_event_str(", lockCommandIgnoredAnAlarmMaskIsActive := ");
+field_lockCommandIgnoredAnAlarmMaskIsActive.log();
+TTCN_Logger::log_event_str(", unsolicitedUnlockTimeoutOccurred := ");
+field_unsolicitedUnlockTimeoutOccurred.log();
+TTCN_Logger::log_event_str(", unsolicitedUnlockThisMaskIsHidden := ");
+field_unsolicitedUnlockThisMaskIsHidden.log();
+TTCN_Logger::log_event_str(", unsolicitedUnlockOperatorInducedOrAnyOtherError := ");
+field_unsolicitedUnlockOperatorInducedOrAnyOtherError.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+field_anyOtherError.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void LockUnlockMaskRes__ErrorCodes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes has 8 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) commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) lockCommandIgnoredAlreadyLocked().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) unlockCommandIgnoredNotLocked().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) lockCommandIgnoredAnAlarmMaskIsActive().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) unsolicitedUnlockTimeoutOccurred().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) unsolicitedUnlockThisMaskIsHidden().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) unsolicitedUnlockOperatorInducedOrAnyOtherError().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(7));
+    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(), "commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask().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(), "lockCommandIgnoredAlreadyLocked")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          lockCommandIgnoredAlreadyLocked().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(), "unlockCommandIgnoredNotLocked")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          unlockCommandIgnoredNotLocked().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(), "lockCommandIgnoredAnAlarmMaskIsActive")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          lockCommandIgnoredAnAlarmMaskIsActive().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(), "unsolicitedUnlockTimeoutOccurred")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          unsolicitedUnlockTimeoutOccurred().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(), "unsolicitedUnlockThisMaskIsHidden")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          unsolicitedUnlockThisMaskIsHidden().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(), "unsolicitedUnlockOperatorInducedOrAnyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          unsolicitedUnlockOperatorInducedOrAnyOtherError().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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 @IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes");
+  }
+}
+
+void LockUnlockMaskRes__ErrorCodes::set_implicit_omit()
+{
+if (commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask().is_bound()) commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask().set_implicit_omit();
+if (lockCommandIgnoredAlreadyLocked().is_bound()) lockCommandIgnoredAlreadyLocked().set_implicit_omit();
+if (unlockCommandIgnoredNotLocked().is_bound()) unlockCommandIgnoredNotLocked().set_implicit_omit();
+if (lockCommandIgnoredAnAlarmMaskIsActive().is_bound()) lockCommandIgnoredAnAlarmMaskIsActive().set_implicit_omit();
+if (unsolicitedUnlockTimeoutOccurred().is_bound()) unsolicitedUnlockTimeoutOccurred().set_implicit_omit();
+if (unsolicitedUnlockThisMaskIsHidden().is_bound()) unsolicitedUnlockThisMaskIsHidden().set_implicit_omit();
+if (unsolicitedUnlockOperatorInducedOrAnyOtherError().is_bound()) unsolicitedUnlockOperatorInducedOrAnyOtherError().set_implicit_omit();
+if (anyOtherError().is_bound()) anyOtherError().set_implicit_omit();
+}
+
+void LockUnlockMaskRes__ErrorCodes::encode_text(Text_Buf& text_buf) const
+{
+field_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask.encode_text(text_buf);
+field_lockCommandIgnoredAlreadyLocked.encode_text(text_buf);
+field_unlockCommandIgnoredNotLocked.encode_text(text_buf);
+field_lockCommandIgnoredAnAlarmMaskIsActive.encode_text(text_buf);
+field_unsolicitedUnlockTimeoutOccurred.encode_text(text_buf);
+field_unsolicitedUnlockThisMaskIsHidden.encode_text(text_buf);
+field_unsolicitedUnlockOperatorInducedOrAnyOtherError.encode_text(text_buf);
+field_anyOtherError.encode_text(text_buf);
+}
+
+void LockUnlockMaskRes__ErrorCodes::decode_text(Text_Buf& text_buf)
+{
+field_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask.decode_text(text_buf);
+field_lockCommandIgnoredAlreadyLocked.decode_text(text_buf);
+field_unlockCommandIgnoredNotLocked.decode_text(text_buf);
+field_lockCommandIgnoredAnAlarmMaskIsActive.decode_text(text_buf);
+field_unsolicitedUnlockTimeoutOccurred.decode_text(text_buf);
+field_unsolicitedUnlockThisMaskIsHidden.decode_text(text_buf);
+field_unsolicitedUnlockOperatorInducedOrAnyOtherError.decode_text(text_buf);
+field_anyOtherError.decode_text(text_buf);
+}
+
+void LockUnlockMaskRes__ErrorCodes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void LockUnlockMaskRes__ErrorCodes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int LockUnlockMaskRes__ErrorCodes::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_lockCommandIgnoredAlreadyLocked.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_unlockCommandIgnoredNotLocked.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_lockCommandIgnoredAnAlarmMaskIsActive.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_unsolicitedUnlockTimeoutOccurred.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_unsolicitedUnlockThisMaskIsHidden.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_unsolicitedUnlockOperatorInducedOrAnyOtherError.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_anyOtherError.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int LockUnlockMaskRes__ErrorCodes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_lockCommandIgnoredAlreadyLocked.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_unlockCommandIgnoredNotLocked.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_lockCommandIgnoredAnAlarmMaskIsActive.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_unsolicitedUnlockTimeoutOccurred.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_unsolicitedUnlockThisMaskIsHidden.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_unsolicitedUnlockOperatorInducedOrAnyOtherError.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_anyOtherError.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct LockUnlockMaskRes__ErrorCodes_template::single_value_struct {
+BOOLEAN_template field_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask;
+BOOLEAN_template field_lockCommandIgnoredAlreadyLocked;
+BOOLEAN_template field_unlockCommandIgnoredNotLocked;
+BOOLEAN_template field_lockCommandIgnoredAnAlarmMaskIsActive;
+BOOLEAN_template field_unsolicitedUnlockTimeoutOccurred;
+BOOLEAN_template field_unsolicitedUnlockThisMaskIsHidden;
+BOOLEAN_template field_unsolicitedUnlockOperatorInducedOrAnyOtherError;
+BOOLEAN_template field_anyOtherError;
+};
+
+void LockUnlockMaskRes__ErrorCodes_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_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask = ANY_VALUE;
+single_value->field_lockCommandIgnoredAlreadyLocked = ANY_VALUE;
+single_value->field_unlockCommandIgnoredNotLocked = ANY_VALUE;
+single_value->field_lockCommandIgnoredAnAlarmMaskIsActive = ANY_VALUE;
+single_value->field_unsolicitedUnlockTimeoutOccurred = ANY_VALUE;
+single_value->field_unsolicitedUnlockThisMaskIsHidden = ANY_VALUE;
+single_value->field_unsolicitedUnlockOperatorInducedOrAnyOtherError = ANY_VALUE;
+single_value->field_anyOtherError = ANY_VALUE;
+}
+}
+}
+
+void LockUnlockMaskRes__ErrorCodes_template::copy_value(const LockUnlockMaskRes__ErrorCodes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask().is_bound()) {
+  single_value->field_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask = other_value.commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask();
+} else {
+  single_value->field_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask.clean_up();
+}
+if (other_value.lockCommandIgnoredAlreadyLocked().is_bound()) {
+  single_value->field_lockCommandIgnoredAlreadyLocked = other_value.lockCommandIgnoredAlreadyLocked();
+} else {
+  single_value->field_lockCommandIgnoredAlreadyLocked.clean_up();
+}
+if (other_value.unlockCommandIgnoredNotLocked().is_bound()) {
+  single_value->field_unlockCommandIgnoredNotLocked = other_value.unlockCommandIgnoredNotLocked();
+} else {
+  single_value->field_unlockCommandIgnoredNotLocked.clean_up();
+}
+if (other_value.lockCommandIgnoredAnAlarmMaskIsActive().is_bound()) {
+  single_value->field_lockCommandIgnoredAnAlarmMaskIsActive = other_value.lockCommandIgnoredAnAlarmMaskIsActive();
+} else {
+  single_value->field_lockCommandIgnoredAnAlarmMaskIsActive.clean_up();
+}
+if (other_value.unsolicitedUnlockTimeoutOccurred().is_bound()) {
+  single_value->field_unsolicitedUnlockTimeoutOccurred = other_value.unsolicitedUnlockTimeoutOccurred();
+} else {
+  single_value->field_unsolicitedUnlockTimeoutOccurred.clean_up();
+}
+if (other_value.unsolicitedUnlockThisMaskIsHidden().is_bound()) {
+  single_value->field_unsolicitedUnlockThisMaskIsHidden = other_value.unsolicitedUnlockThisMaskIsHidden();
+} else {
+  single_value->field_unsolicitedUnlockThisMaskIsHidden.clean_up();
+}
+if (other_value.unsolicitedUnlockOperatorInducedOrAnyOtherError().is_bound()) {
+  single_value->field_unsolicitedUnlockOperatorInducedOrAnyOtherError = other_value.unsolicitedUnlockOperatorInducedOrAnyOtherError();
+} else {
+  single_value->field_unsolicitedUnlockOperatorInducedOrAnyOtherError.clean_up();
+}
+if (other_value.anyOtherError().is_bound()) {
+  single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+  single_value->field_anyOtherError.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void LockUnlockMaskRes__ErrorCodes_template::copy_template(const LockUnlockMaskRes__ErrorCodes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask().get_selection()) {
+single_value->field_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask = other_value.commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask();
+} else {
+single_value->field_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.lockCommandIgnoredAlreadyLocked().get_selection()) {
+single_value->field_lockCommandIgnoredAlreadyLocked = other_value.lockCommandIgnoredAlreadyLocked();
+} else {
+single_value->field_lockCommandIgnoredAlreadyLocked.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.unlockCommandIgnoredNotLocked().get_selection()) {
+single_value->field_unlockCommandIgnoredNotLocked = other_value.unlockCommandIgnoredNotLocked();
+} else {
+single_value->field_unlockCommandIgnoredNotLocked.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.lockCommandIgnoredAnAlarmMaskIsActive().get_selection()) {
+single_value->field_lockCommandIgnoredAnAlarmMaskIsActive = other_value.lockCommandIgnoredAnAlarmMaskIsActive();
+} else {
+single_value->field_lockCommandIgnoredAnAlarmMaskIsActive.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.unsolicitedUnlockTimeoutOccurred().get_selection()) {
+single_value->field_unsolicitedUnlockTimeoutOccurred = other_value.unsolicitedUnlockTimeoutOccurred();
+} else {
+single_value->field_unsolicitedUnlockTimeoutOccurred.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.unsolicitedUnlockThisMaskIsHidden().get_selection()) {
+single_value->field_unsolicitedUnlockThisMaskIsHidden = other_value.unsolicitedUnlockThisMaskIsHidden();
+} else {
+single_value->field_unsolicitedUnlockThisMaskIsHidden.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.unsolicitedUnlockOperatorInducedOrAnyOtherError().get_selection()) {
+single_value->field_unsolicitedUnlockOperatorInducedOrAnyOtherError = other_value.unsolicitedUnlockOperatorInducedOrAnyOtherError();
+} else {
+single_value->field_unsolicitedUnlockOperatorInducedOrAnyOtherError.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.anyOtherError().get_selection()) {
+single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+single_value->field_anyOtherError.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new LockUnlockMaskRes__ErrorCodes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes.");
+break;
+}
+set_selection(other_value);
+}
+
+LockUnlockMaskRes__ErrorCodes_template::LockUnlockMaskRes__ErrorCodes_template()
+{
+}
+
+LockUnlockMaskRes__ErrorCodes_template::LockUnlockMaskRes__ErrorCodes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+LockUnlockMaskRes__ErrorCodes_template::LockUnlockMaskRes__ErrorCodes_template(const LockUnlockMaskRes__ErrorCodes& other_value)
+{
+copy_value(other_value);
+}
+
+LockUnlockMaskRes__ErrorCodes_template::LockUnlockMaskRes__ErrorCodes_template(const OPTIONAL<LockUnlockMaskRes__ErrorCodes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const LockUnlockMaskRes__ErrorCodes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes from an unbound optional field.");
+}
+}
+
+LockUnlockMaskRes__ErrorCodes_template::LockUnlockMaskRes__ErrorCodes_template(const LockUnlockMaskRes__ErrorCodes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+LockUnlockMaskRes__ErrorCodes_template::~LockUnlockMaskRes__ErrorCodes_template()
+{
+clean_up();
+}
+
+LockUnlockMaskRes__ErrorCodes_template& LockUnlockMaskRes__ErrorCodes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+LockUnlockMaskRes__ErrorCodes_template& LockUnlockMaskRes__ErrorCodes_template::operator=(const LockUnlockMaskRes__ErrorCodes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+LockUnlockMaskRes__ErrorCodes_template& LockUnlockMaskRes__ErrorCodes_template::operator=(const OPTIONAL<LockUnlockMaskRes__ErrorCodes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const LockUnlockMaskRes__ErrorCodes&)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 @IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes.");
+}
+return *this;
+}
+
+LockUnlockMaskRes__ErrorCodes_template& LockUnlockMaskRes__ErrorCodes_template::operator=(const LockUnlockMaskRes__ErrorCodes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean LockUnlockMaskRes__ErrorCodes_template::match(const LockUnlockMaskRes__ErrorCodes& 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.commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask().is_bound()) return FALSE;
+if(!single_value->field_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask.match(other_value.commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask(), legacy))return FALSE;
+if(!other_value.lockCommandIgnoredAlreadyLocked().is_bound()) return FALSE;
+if(!single_value->field_lockCommandIgnoredAlreadyLocked.match(other_value.lockCommandIgnoredAlreadyLocked(), legacy))return FALSE;
+if(!other_value.unlockCommandIgnoredNotLocked().is_bound()) return FALSE;
+if(!single_value->field_unlockCommandIgnoredNotLocked.match(other_value.unlockCommandIgnoredNotLocked(), legacy))return FALSE;
+if(!other_value.lockCommandIgnoredAnAlarmMaskIsActive().is_bound()) return FALSE;
+if(!single_value->field_lockCommandIgnoredAnAlarmMaskIsActive.match(other_value.lockCommandIgnoredAnAlarmMaskIsActive(), legacy))return FALSE;
+if(!other_value.unsolicitedUnlockTimeoutOccurred().is_bound()) return FALSE;
+if(!single_value->field_unsolicitedUnlockTimeoutOccurred.match(other_value.unsolicitedUnlockTimeoutOccurred(), legacy))return FALSE;
+if(!other_value.unsolicitedUnlockThisMaskIsHidden().is_bound()) return FALSE;
+if(!single_value->field_unsolicitedUnlockThisMaskIsHidden.match(other_value.unsolicitedUnlockThisMaskIsHidden(), legacy))return FALSE;
+if(!other_value.unsolicitedUnlockOperatorInducedOrAnyOtherError().is_bound()) return FALSE;
+if(!single_value->field_unsolicitedUnlockOperatorInducedOrAnyOtherError.match(other_value.unsolicitedUnlockOperatorInducedOrAnyOtherError(), legacy))return FALSE;
+if(!other_value.anyOtherError().is_bound()) return FALSE;
+if(!single_value->field_anyOtherError.match(other_value.anyOtherError(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes.");
+}
+return FALSE;
+}
+
+boolean LockUnlockMaskRes__ErrorCodes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask.is_bound()
+
+ ||single_value->field_lockCommandIgnoredAlreadyLocked.is_bound()
+
+ ||single_value->field_unlockCommandIgnoredNotLocked.is_bound()
+
+ ||single_value->field_lockCommandIgnoredAnAlarmMaskIsActive.is_bound()
+
+ ||single_value->field_unsolicitedUnlockTimeoutOccurred.is_bound()
+
+ ||single_value->field_unsolicitedUnlockThisMaskIsHidden.is_bound()
+
+ ||single_value->field_unsolicitedUnlockOperatorInducedOrAnyOtherError.is_bound()
+
+ ||single_value->field_anyOtherError.is_bound()
+;
+}
+
+boolean LockUnlockMaskRes__ErrorCodes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask.is_value()
+ &&single_value->field_lockCommandIgnoredAlreadyLocked.is_value()
+ &&single_value->field_unlockCommandIgnoredNotLocked.is_value()
+ &&single_value->field_lockCommandIgnoredAnAlarmMaskIsActive.is_value()
+ &&single_value->field_unsolicitedUnlockTimeoutOccurred.is_value()
+ &&single_value->field_unsolicitedUnlockThisMaskIsHidden.is_value()
+ &&single_value->field_unsolicitedUnlockOperatorInducedOrAnyOtherError.is_value()
+ &&single_value->field_anyOtherError.is_value();
+}
+
+void LockUnlockMaskRes__ErrorCodes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+LockUnlockMaskRes__ErrorCodes LockUnlockMaskRes__ErrorCodes_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 @IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes.");
+LockUnlockMaskRes__ErrorCodes ret_val;
+if (single_value->field_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask.is_bound()) {
+ret_val.commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask() = single_value->field_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask.valueof();
+}
+if (single_value->field_lockCommandIgnoredAlreadyLocked.is_bound()) {
+ret_val.lockCommandIgnoredAlreadyLocked() = single_value->field_lockCommandIgnoredAlreadyLocked.valueof();
+}
+if (single_value->field_unlockCommandIgnoredNotLocked.is_bound()) {
+ret_val.unlockCommandIgnoredNotLocked() = single_value->field_unlockCommandIgnoredNotLocked.valueof();
+}
+if (single_value->field_lockCommandIgnoredAnAlarmMaskIsActive.is_bound()) {
+ret_val.lockCommandIgnoredAnAlarmMaskIsActive() = single_value->field_lockCommandIgnoredAnAlarmMaskIsActive.valueof();
+}
+if (single_value->field_unsolicitedUnlockTimeoutOccurred.is_bound()) {
+ret_val.unsolicitedUnlockTimeoutOccurred() = single_value->field_unsolicitedUnlockTimeoutOccurred.valueof();
+}
+if (single_value->field_unsolicitedUnlockThisMaskIsHidden.is_bound()) {
+ret_val.unsolicitedUnlockThisMaskIsHidden() = single_value->field_unsolicitedUnlockThisMaskIsHidden.valueof();
+}
+if (single_value->field_unsolicitedUnlockOperatorInducedOrAnyOtherError.is_bound()) {
+ret_val.unsolicitedUnlockOperatorInducedOrAnyOtherError() = single_value->field_unsolicitedUnlockOperatorInducedOrAnyOtherError.valueof();
+}
+if (single_value->field_anyOtherError.is_bound()) {
+ret_val.anyOtherError() = single_value->field_anyOtherError.valueof();
+}
+return ret_val;
+}
+
+void LockUnlockMaskRes__ErrorCodes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new LockUnlockMaskRes__ErrorCodes_template[list_length];
+}
+
+LockUnlockMaskRes__ErrorCodes_template& LockUnlockMaskRes__ErrorCodes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& LockUnlockMaskRes__ErrorCodes_template::commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask()
+{
+set_specific();
+return single_value->field_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask;
+}
+
+const BOOLEAN_template& LockUnlockMaskRes__ErrorCodes_template::commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask of a non-specific template of type @IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes.");
+return single_value->field_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask;
+}
+
+BOOLEAN_template& LockUnlockMaskRes__ErrorCodes_template::lockCommandIgnoredAlreadyLocked()
+{
+set_specific();
+return single_value->field_lockCommandIgnoredAlreadyLocked;
+}
+
+const BOOLEAN_template& LockUnlockMaskRes__ErrorCodes_template::lockCommandIgnoredAlreadyLocked() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field lockCommandIgnoredAlreadyLocked of a non-specific template of type @IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes.");
+return single_value->field_lockCommandIgnoredAlreadyLocked;
+}
+
+BOOLEAN_template& LockUnlockMaskRes__ErrorCodes_template::unlockCommandIgnoredNotLocked()
+{
+set_specific();
+return single_value->field_unlockCommandIgnoredNotLocked;
+}
+
+const BOOLEAN_template& LockUnlockMaskRes__ErrorCodes_template::unlockCommandIgnoredNotLocked() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field unlockCommandIgnoredNotLocked of a non-specific template of type @IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes.");
+return single_value->field_unlockCommandIgnoredNotLocked;
+}
+
+BOOLEAN_template& LockUnlockMaskRes__ErrorCodes_template::lockCommandIgnoredAnAlarmMaskIsActive()
+{
+set_specific();
+return single_value->field_lockCommandIgnoredAnAlarmMaskIsActive;
+}
+
+const BOOLEAN_template& LockUnlockMaskRes__ErrorCodes_template::lockCommandIgnoredAnAlarmMaskIsActive() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field lockCommandIgnoredAnAlarmMaskIsActive of a non-specific template of type @IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes.");
+return single_value->field_lockCommandIgnoredAnAlarmMaskIsActive;
+}
+
+BOOLEAN_template& LockUnlockMaskRes__ErrorCodes_template::unsolicitedUnlockTimeoutOccurred()
+{
+set_specific();
+return single_value->field_unsolicitedUnlockTimeoutOccurred;
+}
+
+const BOOLEAN_template& LockUnlockMaskRes__ErrorCodes_template::unsolicitedUnlockTimeoutOccurred() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field unsolicitedUnlockTimeoutOccurred of a non-specific template of type @IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes.");
+return single_value->field_unsolicitedUnlockTimeoutOccurred;
+}
+
+BOOLEAN_template& LockUnlockMaskRes__ErrorCodes_template::unsolicitedUnlockThisMaskIsHidden()
+{
+set_specific();
+return single_value->field_unsolicitedUnlockThisMaskIsHidden;
+}
+
+const BOOLEAN_template& LockUnlockMaskRes__ErrorCodes_template::unsolicitedUnlockThisMaskIsHidden() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field unsolicitedUnlockThisMaskIsHidden of a non-specific template of type @IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes.");
+return single_value->field_unsolicitedUnlockThisMaskIsHidden;
+}
+
+BOOLEAN_template& LockUnlockMaskRes__ErrorCodes_template::unsolicitedUnlockOperatorInducedOrAnyOtherError()
+{
+set_specific();
+return single_value->field_unsolicitedUnlockOperatorInducedOrAnyOtherError;
+}
+
+const BOOLEAN_template& LockUnlockMaskRes__ErrorCodes_template::unsolicitedUnlockOperatorInducedOrAnyOtherError() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field unsolicitedUnlockOperatorInducedOrAnyOtherError of a non-specific template of type @IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes.");
+return single_value->field_unsolicitedUnlockOperatorInducedOrAnyOtherError;
+}
+
+BOOLEAN_template& LockUnlockMaskRes__ErrorCodes_template::anyOtherError()
+{
+set_specific();
+return single_value->field_anyOtherError;
+}
+
+const BOOLEAN_template& LockUnlockMaskRes__ErrorCodes_template::anyOtherError() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field anyOtherError of a non-specific template of type @IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes.");
+return single_value->field_anyOtherError;
+}
+
+int LockUnlockMaskRes__ErrorCodes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes 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 @IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes.");
+  }
+  return 0;
+}
+
+void LockUnlockMaskRes__ErrorCodes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask := ");
+single_value->field_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask.log();
+TTCN_Logger::log_event_str(", lockCommandIgnoredAlreadyLocked := ");
+single_value->field_lockCommandIgnoredAlreadyLocked.log();
+TTCN_Logger::log_event_str(", unlockCommandIgnoredNotLocked := ");
+single_value->field_unlockCommandIgnoredNotLocked.log();
+TTCN_Logger::log_event_str(", lockCommandIgnoredAnAlarmMaskIsActive := ");
+single_value->field_lockCommandIgnoredAnAlarmMaskIsActive.log();
+TTCN_Logger::log_event_str(", unsolicitedUnlockTimeoutOccurred := ");
+single_value->field_unsolicitedUnlockTimeoutOccurred.log();
+TTCN_Logger::log_event_str(", unsolicitedUnlockThisMaskIsHidden := ");
+single_value->field_unsolicitedUnlockThisMaskIsHidden.log();
+TTCN_Logger::log_event_str(", unsolicitedUnlockOperatorInducedOrAnyOtherError := ");
+single_value->field_unsolicitedUnlockOperatorInducedOrAnyOtherError.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void LockUnlockMaskRes__ErrorCodes_template::log_match(const LockUnlockMaskRes__ErrorCodes& 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_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask.match(match_value.commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask(), legacy)){
+TTCN_Logger::log_logmatch_info(".commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask");
+single_value->field_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask.log_match(match_value.commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_lockCommandIgnoredAlreadyLocked.match(match_value.lockCommandIgnoredAlreadyLocked(), legacy)){
+TTCN_Logger::log_logmatch_info(".lockCommandIgnoredAlreadyLocked");
+single_value->field_lockCommandIgnoredAlreadyLocked.log_match(match_value.lockCommandIgnoredAlreadyLocked(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_unlockCommandIgnoredNotLocked.match(match_value.unlockCommandIgnoredNotLocked(), legacy)){
+TTCN_Logger::log_logmatch_info(".unlockCommandIgnoredNotLocked");
+single_value->field_unlockCommandIgnoredNotLocked.log_match(match_value.unlockCommandIgnoredNotLocked(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_lockCommandIgnoredAnAlarmMaskIsActive.match(match_value.lockCommandIgnoredAnAlarmMaskIsActive(), legacy)){
+TTCN_Logger::log_logmatch_info(".lockCommandIgnoredAnAlarmMaskIsActive");
+single_value->field_lockCommandIgnoredAnAlarmMaskIsActive.log_match(match_value.lockCommandIgnoredAnAlarmMaskIsActive(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_unsolicitedUnlockTimeoutOccurred.match(match_value.unsolicitedUnlockTimeoutOccurred(), legacy)){
+TTCN_Logger::log_logmatch_info(".unsolicitedUnlockTimeoutOccurred");
+single_value->field_unsolicitedUnlockTimeoutOccurred.log_match(match_value.unsolicitedUnlockTimeoutOccurred(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_unsolicitedUnlockThisMaskIsHidden.match(match_value.unsolicitedUnlockThisMaskIsHidden(), legacy)){
+TTCN_Logger::log_logmatch_info(".unsolicitedUnlockThisMaskIsHidden");
+single_value->field_unsolicitedUnlockThisMaskIsHidden.log_match(match_value.unsolicitedUnlockThisMaskIsHidden(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_unsolicitedUnlockOperatorInducedOrAnyOtherError.match(match_value.unsolicitedUnlockOperatorInducedOrAnyOtherError(), legacy)){
+TTCN_Logger::log_logmatch_info(".unsolicitedUnlockOperatorInducedOrAnyOtherError");
+single_value->field_unsolicitedUnlockOperatorInducedOrAnyOtherError.log_match(match_value.unsolicitedUnlockOperatorInducedOrAnyOtherError(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_anyOtherError.match(match_value.anyOtherError(), legacy)){
+TTCN_Logger::log_logmatch_info(".anyOtherError");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), 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("{ commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask := ");
+single_value->field_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask.log_match(match_value.commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask(), legacy);
+TTCN_Logger::log_event_str(", lockCommandIgnoredAlreadyLocked := ");
+single_value->field_lockCommandIgnoredAlreadyLocked.log_match(match_value.lockCommandIgnoredAlreadyLocked(), legacy);
+TTCN_Logger::log_event_str(", unlockCommandIgnoredNotLocked := ");
+single_value->field_unlockCommandIgnoredNotLocked.log_match(match_value.unlockCommandIgnoredNotLocked(), legacy);
+TTCN_Logger::log_event_str(", lockCommandIgnoredAnAlarmMaskIsActive := ");
+single_value->field_lockCommandIgnoredAnAlarmMaskIsActive.log_match(match_value.lockCommandIgnoredAnAlarmMaskIsActive(), legacy);
+TTCN_Logger::log_event_str(", unsolicitedUnlockTimeoutOccurred := ");
+single_value->field_unsolicitedUnlockTimeoutOccurred.log_match(match_value.unsolicitedUnlockTimeoutOccurred(), legacy);
+TTCN_Logger::log_event_str(", unsolicitedUnlockThisMaskIsHidden := ");
+single_value->field_unsolicitedUnlockThisMaskIsHidden.log_match(match_value.unsolicitedUnlockThisMaskIsHidden(), legacy);
+TTCN_Logger::log_event_str(", unsolicitedUnlockOperatorInducedOrAnyOtherError := ");
+single_value->field_unsolicitedUnlockOperatorInducedOrAnyOtherError.log_match(match_value.unsolicitedUnlockOperatorInducedOrAnyOtherError(), legacy);
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), 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 LockUnlockMaskRes__ErrorCodes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask.encode_text(text_buf);
+single_value->field_lockCommandIgnoredAlreadyLocked.encode_text(text_buf);
+single_value->field_unlockCommandIgnoredNotLocked.encode_text(text_buf);
+single_value->field_lockCommandIgnoredAnAlarmMaskIsActive.encode_text(text_buf);
+single_value->field_unsolicitedUnlockTimeoutOccurred.encode_text(text_buf);
+single_value->field_unsolicitedUnlockThisMaskIsHidden.encode_text(text_buf);
+single_value->field_unsolicitedUnlockOperatorInducedOrAnyOtherError.encode_text(text_buf);
+single_value->field_anyOtherError.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 @IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes.");
+}
+}
+
+void LockUnlockMaskRes__ErrorCodes_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_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask.decode_text(text_buf);
+single_value->field_lockCommandIgnoredAlreadyLocked.decode_text(text_buf);
+single_value->field_unlockCommandIgnoredNotLocked.decode_text(text_buf);
+single_value->field_lockCommandIgnoredAnAlarmMaskIsActive.decode_text(text_buf);
+single_value->field_unsolicitedUnlockTimeoutOccurred.decode_text(text_buf);
+single_value->field_unsolicitedUnlockThisMaskIsHidden.decode_text(text_buf);
+single_value->field_unsolicitedUnlockOperatorInducedOrAnyOtherError.decode_text(text_buf);
+single_value->field_anyOtherError.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 LockUnlockMaskRes__ErrorCodes_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 @IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes.");
+}
+}
+
+void LockUnlockMaskRes__ErrorCodes_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: {
+    LockUnlockMaskRes__ErrorCodes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes has 8 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) commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) lockCommandIgnoredAlreadyLocked().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) unlockCommandIgnoredNotLocked().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) lockCommandIgnoredAnAlarmMaskIsActive().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) unsolicitedUnlockTimeoutOccurred().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) unsolicitedUnlockThisMaskIsHidden().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) unsolicitedUnlockOperatorInducedOrAnyOtherError().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(7));
+    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(), "commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask().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(), "lockCommandIgnoredAlreadyLocked")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          lockCommandIgnoredAlreadyLocked().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(), "unlockCommandIgnoredNotLocked")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          unlockCommandIgnoredNotLocked().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(), "lockCommandIgnoredAnAlarmMaskIsActive")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          lockCommandIgnoredAnAlarmMaskIsActive().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(), "unsolicitedUnlockTimeoutOccurred")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          unsolicitedUnlockTimeoutOccurred().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(), "unsolicitedUnlockThisMaskIsHidden")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          unsolicitedUnlockThisMaskIsHidden().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(), "unsolicitedUnlockOperatorInducedOrAnyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          unsolicitedUnlockOperatorInducedOrAnyOtherError().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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 @IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void LockUnlockMaskRes__ErrorCodes_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_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes");
+single_value->field_lockCommandIgnoredAlreadyLocked.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes");
+single_value->field_unlockCommandIgnoredNotLocked.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes");
+single_value->field_lockCommandIgnoredAnAlarmMaskIsActive.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes");
+single_value->field_unsolicitedUnlockTimeoutOccurred.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes");
+single_value->field_unsolicitedUnlockThisMaskIsHidden.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes");
+single_value->field_unsolicitedUnlockOperatorInducedOrAnyOtherError.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes");
+single_value->field_anyOtherError.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes");
+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 : "@IsobusVTMessageTypes.LockUnlockMaskRes_ErrorCodes");
+}
+
+boolean LockUnlockMaskRes__ErrorCodes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean LockUnlockMaskRes__ErrorCodes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+e__LockUnlockMaskReqCommand::e__LockUnlockMaskReqCommand()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+e__LockUnlockMaskReqCommand::e__LockUnlockMaskReqCommand(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @IsobusVTMessageTypes.e_LockUnlockMaskReqCommand with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+e__LockUnlockMaskReqCommand::e__LockUnlockMaskReqCommand(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+e__LockUnlockMaskReqCommand::e__LockUnlockMaskReqCommand(const e__LockUnlockMaskReqCommand& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @IsobusVTMessageTypes.e_LockUnlockMaskReqCommand.");
+enum_value = other_value.enum_value;
+}
+
+e__LockUnlockMaskReqCommand& e__LockUnlockMaskReqCommand::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @IsobusVTMessageTypes.e_LockUnlockMaskReqCommand.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+e__LockUnlockMaskReqCommand& e__LockUnlockMaskReqCommand::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+e__LockUnlockMaskReqCommand& e__LockUnlockMaskReqCommand::operator=(const e__LockUnlockMaskReqCommand& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusVTMessageTypes.e_LockUnlockMaskReqCommand.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean e__LockUnlockMaskReqCommand::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_LockUnlockMaskReqCommand.");
+return enum_value == other_value;
+}
+
+boolean e__LockUnlockMaskReqCommand::operator==(const e__LockUnlockMaskReqCommand& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_LockUnlockMaskReqCommand.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_LockUnlockMaskReqCommand.");
+return enum_value == other_value.enum_value;
+}
+
+boolean e__LockUnlockMaskReqCommand::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_LockUnlockMaskReqCommand.");
+return enum_value < other_value;
+}
+
+boolean e__LockUnlockMaskReqCommand::operator<(const e__LockUnlockMaskReqCommand& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_LockUnlockMaskReqCommand.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_LockUnlockMaskReqCommand.");
+return enum_value < other_value.enum_value;
+}
+
+boolean e__LockUnlockMaskReqCommand::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_LockUnlockMaskReqCommand.");
+return enum_value > other_value;
+}
+
+boolean e__LockUnlockMaskReqCommand::operator>(const e__LockUnlockMaskReqCommand& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_LockUnlockMaskReqCommand.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_LockUnlockMaskReqCommand.");
+return enum_value > other_value.enum_value;
+}
+
+const char *e__LockUnlockMaskReqCommand::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case unlockDataMaskOrUserLayoutDataMask: return "unlockDataMaskOrUserLayoutDataMask";
+case lockDataMaskOrUserLayoutDataMask: return "lockDataMaskOrUserLayoutDataMask";
+default: return "<unknown>";
+}
+}
+
+e__LockUnlockMaskReqCommand::enum_type e__LockUnlockMaskReqCommand::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "unlockDataMaskOrUserLayoutDataMask")) return unlockDataMaskOrUserLayoutDataMask;
+else if (!strcmp(str_par, "lockDataMaskOrUserLayoutDataMask")) return lockDataMaskOrUserLayoutDataMask;
+else return UNKNOWN_VALUE;
+}
+
+boolean e__LockUnlockMaskReqCommand::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 0:
+case 1:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int e__LockUnlockMaskReqCommand::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusVTMessageTypes.e_LockUnlockMaskReqCommand.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int e__LockUnlockMaskReqCommand::enum2int(const e__LockUnlockMaskReqCommand& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusVTMessageTypes.e_LockUnlockMaskReqCommand.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void e__LockUnlockMaskReqCommand::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @IsobusVTMessageTypes.e_LockUnlockMaskReqCommand.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+e__LockUnlockMaskReqCommand::operator e__LockUnlockMaskReqCommand::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @IsobusVTMessageTypes.e_LockUnlockMaskReqCommand.");
+return enum_value;
+}
+
+void e__LockUnlockMaskReqCommand::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void e__LockUnlockMaskReqCommand::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@IsobusVTMessageTypes.e_LockUnlockMaskReqCommand");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @IsobusVTMessageTypes.e_LockUnlockMaskReqCommand.");
+  }
+}
+
+void e__LockUnlockMaskReqCommand::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @IsobusVTMessageTypes.e_LockUnlockMaskReqCommand.");
+text_buf.push_int(enum_value);
+}
+
+void e__LockUnlockMaskReqCommand::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @IsobusVTMessageTypes.e_LockUnlockMaskReqCommand.", enum_value);
+}
+
+void e__LockUnlockMaskReqCommand::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void e__LockUnlockMaskReqCommand::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int e__LockUnlockMaskReqCommand::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*)
+{
+  int decoded_value = 0;
+  int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 2, no_err);
+  if (decoded_length < 0) return decoded_length;
+  if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value;
+  else {
+    if(no_err){
+     return -1;
+    } else {
+    TTCN_EncDec_ErrorContext::error
+      (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name);
+    enum_value = UNKNOWN_VALUE;
+    }
+  }
+  return decoded_length;
+}
+
+int e__LockUnlockMaskReqCommand::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const
+{
+  return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 2);
+}
+
+void e__LockUnlockMaskReqCommand_template::copy_template(const e__LockUnlockMaskReqCommand_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new e__LockUnlockMaskReqCommand_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_LockUnlockMaskReqCommand.");
+}
+}
+
+e__LockUnlockMaskReqCommand_template::e__LockUnlockMaskReqCommand_template()
+{
+}
+
+e__LockUnlockMaskReqCommand_template::e__LockUnlockMaskReqCommand_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+e__LockUnlockMaskReqCommand_template::e__LockUnlockMaskReqCommand_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!e__LockUnlockMaskReqCommand::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @IsobusVTMessageTypes.e_LockUnlockMaskReqCommand with unknown numeric value %d.", other_value);
+single_value = (e__LockUnlockMaskReqCommand::enum_type)other_value;
+}
+
+e__LockUnlockMaskReqCommand_template::e__LockUnlockMaskReqCommand_template(e__LockUnlockMaskReqCommand::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+e__LockUnlockMaskReqCommand_template::e__LockUnlockMaskReqCommand_template(const e__LockUnlockMaskReqCommand& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == e__LockUnlockMaskReqCommand::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @IsobusVTMessageTypes.e_LockUnlockMaskReqCommand.");
+single_value = other_value.enum_value;
+}
+
+e__LockUnlockMaskReqCommand_template::e__LockUnlockMaskReqCommand_template(const OPTIONAL<e__LockUnlockMaskReqCommand>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__LockUnlockMaskReqCommand::enum_type)(const e__LockUnlockMaskReqCommand&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @IsobusVTMessageTypes.e_LockUnlockMaskReqCommand from an unbound optional field.");
+}
+}
+
+e__LockUnlockMaskReqCommand_template::e__LockUnlockMaskReqCommand_template(const e__LockUnlockMaskReqCommand_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+e__LockUnlockMaskReqCommand_template::~e__LockUnlockMaskReqCommand_template()
+{
+clean_up();
+}
+
+boolean e__LockUnlockMaskReqCommand_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean e__LockUnlockMaskReqCommand_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != e__LockUnlockMaskReqCommand::UNBOUND_VALUE;
+}
+
+void e__LockUnlockMaskReqCommand_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+e__LockUnlockMaskReqCommand_template& e__LockUnlockMaskReqCommand_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+e__LockUnlockMaskReqCommand_template& e__LockUnlockMaskReqCommand_template::operator=(int other_value)
+{
+if (!e__LockUnlockMaskReqCommand::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @IsobusVTMessageTypes.e_LockUnlockMaskReqCommand.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (e__LockUnlockMaskReqCommand::enum_type)other_value;
+return *this;
+}
+
+e__LockUnlockMaskReqCommand_template& e__LockUnlockMaskReqCommand_template::operator=(e__LockUnlockMaskReqCommand::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+e__LockUnlockMaskReqCommand_template& e__LockUnlockMaskReqCommand_template::operator=(const e__LockUnlockMaskReqCommand& other_value)
+{
+if (other_value.enum_value == e__LockUnlockMaskReqCommand::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusVTMessageTypes.e_LockUnlockMaskReqCommand to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+e__LockUnlockMaskReqCommand_template& e__LockUnlockMaskReqCommand_template::operator=(const OPTIONAL<e__LockUnlockMaskReqCommand>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__LockUnlockMaskReqCommand::enum_type)(const e__LockUnlockMaskReqCommand&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @IsobusVTMessageTypes.e_LockUnlockMaskReqCommand.");
+}
+return *this;
+}
+
+e__LockUnlockMaskReqCommand_template& e__LockUnlockMaskReqCommand_template::operator=(const e__LockUnlockMaskReqCommand_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean e__LockUnlockMaskReqCommand_template::match(e__LockUnlockMaskReqCommand::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_LockUnlockMaskReqCommand.");
+}
+return FALSE;
+}
+
+boolean e__LockUnlockMaskReqCommand_template::match(const e__LockUnlockMaskReqCommand& other_value, boolean) const
+{
+if (other_value.enum_value == e__LockUnlockMaskReqCommand::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @IsobusVTMessageTypes.e_LockUnlockMaskReqCommand with an unbound value.");
+return match(other_value.enum_value);
+}
+
+e__LockUnlockMaskReqCommand::enum_type e__LockUnlockMaskReqCommand_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @IsobusVTMessageTypes.e_LockUnlockMaskReqCommand.");
+return single_value;
+}
+
+void e__LockUnlockMaskReqCommand_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @IsobusVTMessageTypes.e_LockUnlockMaskReqCommand.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new e__LockUnlockMaskReqCommand_template[list_length];
+}
+
+e__LockUnlockMaskReqCommand_template& e__LockUnlockMaskReqCommand_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @IsobusVTMessageTypes.e_LockUnlockMaskReqCommand.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @IsobusVTMessageTypes.e_LockUnlockMaskReqCommand.");
+return value_list.list_value[list_index];
+}
+
+void e__LockUnlockMaskReqCommand_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(e__LockUnlockMaskReqCommand::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void e__LockUnlockMaskReqCommand_template::log_match(const e__LockUnlockMaskReqCommand& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void e__LockUnlockMaskReqCommand_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_LockUnlockMaskReqCommand.");
+}
+}
+
+void e__LockUnlockMaskReqCommand_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (e__LockUnlockMaskReqCommand::enum_type)text_buf.pull_int().get_val();
+if (!e__LockUnlockMaskReqCommand::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @IsobusVTMessageTypes.e_LockUnlockMaskReqCommand.", single_value);
+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 e__LockUnlockMaskReqCommand_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @IsobusVTMessageTypes.e_LockUnlockMaskReqCommand.");
+}
+}
+
+boolean e__LockUnlockMaskReqCommand_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean e__LockUnlockMaskReqCommand_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 e__LockUnlockMaskReqCommand_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    e__LockUnlockMaskReqCommand_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    e__LockUnlockMaskReqCommand::enum_type enum_val = e__LockUnlockMaskReqCommand::str_to_enum(m_p->get_enumerated());
+    if (!e__LockUnlockMaskReqCommand::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @IsobusVTMessageTypes.e_LockUnlockMaskReqCommand.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@IsobusVTMessageTypes.e_LockUnlockMaskReqCommand");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void e__LockUnlockMaskReqCommand_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@IsobusVTMessageTypes.e_LockUnlockMaskReqCommand");
+}
+
+LockUnlockMaskRes::LockUnlockMaskRes()
+{
+}
+
+LockUnlockMaskRes::LockUnlockMaskRes(const INTEGER& par_vtfunction,
+    const e__LockUnlockMaskReqCommand& par_command,
+    const LockUnlockMaskRes__ErrorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_command(par_command),
+  field_errorCodes(par_errorCodes),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+LockUnlockMaskRes::LockUnlockMaskRes(const LockUnlockMaskRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.LockUnlockMaskRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.command().is_bound()) field_command = other_value.command();
+else field_command.clean_up();
+if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+else field_errorCodes.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void LockUnlockMaskRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_command.clean_up();
+field_errorCodes.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* LockUnlockMaskRes::get_descriptor() const { return &LockUnlockMaskRes_descr_; }
+LockUnlockMaskRes& LockUnlockMaskRes::operator=(const LockUnlockMaskRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.LockUnlockMaskRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.command().is_bound()) field_command = other_value.command();
+  else field_command.clean_up();
+  if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+  else field_errorCodes.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean LockUnlockMaskRes::operator==(const LockUnlockMaskRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_command==other_value.field_command
+  && field_errorCodes==other_value.field_errorCodes
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean LockUnlockMaskRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_command.is_bound())
+  || (field_errorCodes.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean LockUnlockMaskRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_command.is_value()
+  && field_errorCodes.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void LockUnlockMaskRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", command := ");
+field_command.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void LockUnlockMaskRes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.LockUnlockMaskRes has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) command().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "command")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          command().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.LockUnlockMaskRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.LockUnlockMaskRes");
+  }
+}
+
+void LockUnlockMaskRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (command().is_bound()) command().set_implicit_omit();
+if (errorCodes().is_bound()) errorCodes().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void LockUnlockMaskRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_command.encode_text(text_buf);
+field_errorCodes.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void LockUnlockMaskRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_command.decode_text(text_buf);
+field_errorCodes.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void LockUnlockMaskRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void LockUnlockMaskRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int LockUnlockMaskRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, e__LockUnlockMaskReqCommand_descr_.raw->forceomit);
+  decoded_field_length = field_command.RAW_decode(e__LockUnlockMaskReqCommand_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, LockUnlockMaskRes__ErrorCodes_descr_.raw->forceomit);
+  decoded_field_length = field_errorCodes.RAW_decode(LockUnlockMaskRes__ErrorCodes_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, LockUnlockMaskRes_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(LockUnlockMaskRes_reserved4_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, LockUnlockMaskRes_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(LockUnlockMaskRes_reserved5_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, LockUnlockMaskRes_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(LockUnlockMaskRes_reserved6_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, LockUnlockMaskRes_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(LockUnlockMaskRes_reserved7_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, LockUnlockMaskRes_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(LockUnlockMaskRes_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int LockUnlockMaskRes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, e__LockUnlockMaskReqCommand_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, LockUnlockMaskRes__ErrorCodes_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, LockUnlockMaskRes_reserved4_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, LockUnlockMaskRes_reserved5_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, LockUnlockMaskRes_reserved6_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, LockUnlockMaskRes_reserved7_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, LockUnlockMaskRes_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_command.RAW_encode(e__LockUnlockMaskReqCommand_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_errorCodes.RAW_encode(LockUnlockMaskRes__ErrorCodes_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved4.RAW_encode(LockUnlockMaskRes_reserved4_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved5.RAW_encode(LockUnlockMaskRes_reserved5_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved6.RAW_encode(LockUnlockMaskRes_reserved6_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved7.RAW_encode(LockUnlockMaskRes_reserved7_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved8.RAW_encode(LockUnlockMaskRes_reserved8_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct LockUnlockMaskRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+e__LockUnlockMaskReqCommand_template field_command;
+LockUnlockMaskRes__ErrorCodes_template field_errorCodes;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void LockUnlockMaskRes_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_vtfunction = ANY_VALUE;
+single_value->field_command = ANY_VALUE;
+single_value->field_errorCodes = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void LockUnlockMaskRes_template::copy_value(const LockUnlockMaskRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.command().is_bound()) {
+  single_value->field_command = other_value.command();
+} else {
+  single_value->field_command.clean_up();
+}
+if (other_value.errorCodes().is_bound()) {
+  single_value->field_errorCodes = other_value.errorCodes();
+} else {
+  single_value->field_errorCodes.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void LockUnlockMaskRes_template::copy_template(const LockUnlockMaskRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.command().get_selection()) {
+single_value->field_command = other_value.command();
+} else {
+single_value->field_command.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.errorCodes().get_selection()) {
+single_value->field_errorCodes = other_value.errorCodes();
+} else {
+single_value->field_errorCodes.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new LockUnlockMaskRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.LockUnlockMaskRes.");
+break;
+}
+set_selection(other_value);
+}
+
+LockUnlockMaskRes_template::LockUnlockMaskRes_template()
+{
+}
+
+LockUnlockMaskRes_template::LockUnlockMaskRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+LockUnlockMaskRes_template::LockUnlockMaskRes_template(const LockUnlockMaskRes& other_value)
+{
+copy_value(other_value);
+}
+
+LockUnlockMaskRes_template::LockUnlockMaskRes_template(const OPTIONAL<LockUnlockMaskRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const LockUnlockMaskRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.LockUnlockMaskRes from an unbound optional field.");
+}
+}
+
+LockUnlockMaskRes_template::LockUnlockMaskRes_template(const LockUnlockMaskRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+LockUnlockMaskRes_template::~LockUnlockMaskRes_template()
+{
+clean_up();
+}
+
+LockUnlockMaskRes_template& LockUnlockMaskRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+LockUnlockMaskRes_template& LockUnlockMaskRes_template::operator=(const LockUnlockMaskRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+LockUnlockMaskRes_template& LockUnlockMaskRes_template::operator=(const OPTIONAL<LockUnlockMaskRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const LockUnlockMaskRes&)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 @IsobusVTMessageTypes.LockUnlockMaskRes.");
+}
+return *this;
+}
+
+LockUnlockMaskRes_template& LockUnlockMaskRes_template::operator=(const LockUnlockMaskRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean LockUnlockMaskRes_template::match(const LockUnlockMaskRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.command().is_bound()) return FALSE;
+if(!single_value->field_command.match(other_value.command(), legacy))return FALSE;
+if(!other_value.errorCodes().is_bound()) return FALSE;
+if(!single_value->field_errorCodes.match(other_value.errorCodes(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.LockUnlockMaskRes.");
+}
+return FALSE;
+}
+
+boolean LockUnlockMaskRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_command.is_bound()
+
+ ||single_value->field_errorCodes.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean LockUnlockMaskRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_command.is_value()
+ &&single_value->field_errorCodes.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void LockUnlockMaskRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+LockUnlockMaskRes LockUnlockMaskRes_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 @IsobusVTMessageTypes.LockUnlockMaskRes.");
+LockUnlockMaskRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_command.is_bound()) {
+ret_val.command() = single_value->field_command.valueof();
+}
+if (single_value->field_errorCodes.is_bound()) {
+ret_val.errorCodes() = single_value->field_errorCodes.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void LockUnlockMaskRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.LockUnlockMaskRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new LockUnlockMaskRes_template[list_length];
+}
+
+LockUnlockMaskRes_template& LockUnlockMaskRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.LockUnlockMaskRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.LockUnlockMaskRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& LockUnlockMaskRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& LockUnlockMaskRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.LockUnlockMaskRes.");
+return single_value->field_vtfunction;
+}
+
+e__LockUnlockMaskReqCommand_template& LockUnlockMaskRes_template::command()
+{
+set_specific();
+return single_value->field_command;
+}
+
+const e__LockUnlockMaskReqCommand_template& LockUnlockMaskRes_template::command() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field command of a non-specific template of type @IsobusVTMessageTypes.LockUnlockMaskRes.");
+return single_value->field_command;
+}
+
+LockUnlockMaskRes__ErrorCodes_template& LockUnlockMaskRes_template::errorCodes()
+{
+set_specific();
+return single_value->field_errorCodes;
+}
+
+const LockUnlockMaskRes__ErrorCodes_template& LockUnlockMaskRes_template::errorCodes() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field errorCodes of a non-specific template of type @IsobusVTMessageTypes.LockUnlockMaskRes.");
+return single_value->field_errorCodes;
+}
+
+OCTETSTRING_template& LockUnlockMaskRes_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& LockUnlockMaskRes_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.LockUnlockMaskRes.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& LockUnlockMaskRes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& LockUnlockMaskRes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.LockUnlockMaskRes.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& LockUnlockMaskRes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& LockUnlockMaskRes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.LockUnlockMaskRes.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& LockUnlockMaskRes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& LockUnlockMaskRes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.LockUnlockMaskRes.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& LockUnlockMaskRes_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& LockUnlockMaskRes_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.LockUnlockMaskRes.");
+return single_value->field_reserved8;
+}
+
+int LockUnlockMaskRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.LockUnlockMaskRes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.LockUnlockMaskRes 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 @IsobusVTMessageTypes.LockUnlockMaskRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.LockUnlockMaskRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.LockUnlockMaskRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.LockUnlockMaskRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.LockUnlockMaskRes.");
+  }
+  return 0;
+}
+
+void LockUnlockMaskRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", command := ");
+single_value->field_command.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void LockUnlockMaskRes_template::log_match(const LockUnlockMaskRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_command.match(match_value.command(), legacy)){
+TTCN_Logger::log_logmatch_info(".command");
+single_value->field_command.log_match(match_value.command(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_errorCodes.match(match_value.errorCodes(), legacy)){
+TTCN_Logger::log_logmatch_info(".errorCodes");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", command := ");
+single_value->field_command.log_match(match_value.command(), legacy);
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 LockUnlockMaskRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_command.encode_text(text_buf);
+single_value->field_errorCodes.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.LockUnlockMaskRes.");
+}
+}
+
+void LockUnlockMaskRes_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_vtfunction.decode_text(text_buf);
+single_value->field_command.decode_text(text_buf);
+single_value->field_errorCodes.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 LockUnlockMaskRes_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 @IsobusVTMessageTypes.LockUnlockMaskRes.");
+}
+}
+
+void LockUnlockMaskRes_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: {
+    LockUnlockMaskRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.LockUnlockMaskRes has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) command().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "command")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          command().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.LockUnlockMaskRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.LockUnlockMaskRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void LockUnlockMaskRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.LockUnlockMaskRes");
+single_value->field_command.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.LockUnlockMaskRes");
+single_value->field_errorCodes.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.LockUnlockMaskRes");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.LockUnlockMaskRes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.LockUnlockMaskRes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.LockUnlockMaskRes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.LockUnlockMaskRes");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.LockUnlockMaskRes");
+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 : "@IsobusVTMessageTypes.LockUnlockMaskRes");
+}
+
+boolean LockUnlockMaskRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean LockUnlockMaskRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+LockUnlockMaskReq::LockUnlockMaskReq()
+{
+}
+
+LockUnlockMaskReq::LockUnlockMaskReq(const INTEGER& par_vtfunction,
+    const e__LockUnlockMaskReqCommand& par_command,
+    const INTEGER& par_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock,
+    const INTEGER& par_lockTimeout,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_command(par_command),
+  field_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock(par_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock),
+  field_lockTimeout(par_lockTimeout),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+LockUnlockMaskReq::LockUnlockMaskReq(const LockUnlockMaskReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.LockUnlockMaskReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.command().is_bound()) field_command = other_value.command();
+else field_command.clean_up();
+if (other_value.ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock().is_bound()) field_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock = other_value.ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock();
+else field_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock.clean_up();
+if (other_value.lockTimeout().is_bound()) field_lockTimeout = other_value.lockTimeout();
+else field_lockTimeout.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void LockUnlockMaskReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_command.clean_up();
+field_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock.clean_up();
+field_lockTimeout.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* LockUnlockMaskReq::get_descriptor() const { return &LockUnlockMaskReq_descr_; }
+LockUnlockMaskReq& LockUnlockMaskReq::operator=(const LockUnlockMaskReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.LockUnlockMaskReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.command().is_bound()) field_command = other_value.command();
+  else field_command.clean_up();
+  if (other_value.ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock().is_bound()) field_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock = other_value.ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock();
+  else field_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock.clean_up();
+  if (other_value.lockTimeout().is_bound()) field_lockTimeout = other_value.lockTimeout();
+  else field_lockTimeout.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean LockUnlockMaskReq::operator==(const LockUnlockMaskReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_command==other_value.field_command
+  && field_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock==other_value.field_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock
+  && field_lockTimeout==other_value.field_lockTimeout
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean LockUnlockMaskReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_command.is_bound())
+  || (field_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock.is_bound())
+  || (field_lockTimeout.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean LockUnlockMaskReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_command.is_value()
+  && field_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock.is_value()
+  && field_lockTimeout.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void LockUnlockMaskReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", command := ");
+field_command.log();
+TTCN_Logger::log_event_str(", ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock := ");
+field_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock.log();
+TTCN_Logger::log_event_str(", lockTimeout := ");
+field_lockTimeout.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void LockUnlockMaskReq::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 @IsobusVTMessageTypes.LockUnlockMaskReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) command().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) lockTimeout().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "command")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          command().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(), "ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock().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(), "lockTimeout")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          lockTimeout().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.LockUnlockMaskReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.LockUnlockMaskReq");
+  }
+}
+
+void LockUnlockMaskReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (command().is_bound()) command().set_implicit_omit();
+if (ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock().is_bound()) ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock().set_implicit_omit();
+if (lockTimeout().is_bound()) lockTimeout().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void LockUnlockMaskReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_command.encode_text(text_buf);
+field_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock.encode_text(text_buf);
+field_lockTimeout.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void LockUnlockMaskReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_command.decode_text(text_buf);
+field_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock.decode_text(text_buf);
+field_lockTimeout.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void LockUnlockMaskReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void LockUnlockMaskReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int LockUnlockMaskReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, e__LockUnlockMaskReqCommand_descr_.raw->forceomit);
+  decoded_field_length = field_command.RAW_decode(e__LockUnlockMaskReqCommand_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock.RAW_decode(ValidObjectID_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, IsobusMessageTypes::INT2_descr_.raw->forceomit);
+  decoded_field_length = field_lockTimeout.RAW_decode(IsobusMessageTypes::INT2_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, LockUnlockMaskReq_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(LockUnlockMaskReq_reserved7_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, LockUnlockMaskReq_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(LockUnlockMaskReq_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int LockUnlockMaskReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, e__LockUnlockMaskReqCommand_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, IsobusMessageTypes::INT2_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, LockUnlockMaskReq_reserved7_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, LockUnlockMaskReq_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_command.RAW_encode(e__LockUnlockMaskReqCommand_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_lockTimeout.RAW_encode(IsobusMessageTypes::INT2_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved7.RAW_encode(LockUnlockMaskReq_reserved7_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved8.RAW_encode(LockUnlockMaskReq_reserved8_descr_, *myleaf.body.node.nodes[5]);
+  return myleaf.length = encoded_length;
+}
+
+struct LockUnlockMaskReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+e__LockUnlockMaskReqCommand_template field_command;
+INTEGER_template field_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock;
+INTEGER_template field_lockTimeout;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void LockUnlockMaskReq_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_vtfunction = ANY_VALUE;
+single_value->field_command = ANY_VALUE;
+single_value->field_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock = ANY_VALUE;
+single_value->field_lockTimeout = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void LockUnlockMaskReq_template::copy_value(const LockUnlockMaskReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.command().is_bound()) {
+  single_value->field_command = other_value.command();
+} else {
+  single_value->field_command.clean_up();
+}
+if (other_value.ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock().is_bound()) {
+  single_value->field_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock = other_value.ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock();
+} else {
+  single_value->field_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock.clean_up();
+}
+if (other_value.lockTimeout().is_bound()) {
+  single_value->field_lockTimeout = other_value.lockTimeout();
+} else {
+  single_value->field_lockTimeout.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void LockUnlockMaskReq_template::copy_template(const LockUnlockMaskReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.command().get_selection()) {
+single_value->field_command = other_value.command();
+} else {
+single_value->field_command.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock().get_selection()) {
+single_value->field_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock = other_value.ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock();
+} else {
+single_value->field_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.lockTimeout().get_selection()) {
+single_value->field_lockTimeout = other_value.lockTimeout();
+} else {
+single_value->field_lockTimeout.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new LockUnlockMaskReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.LockUnlockMaskReq.");
+break;
+}
+set_selection(other_value);
+}
+
+LockUnlockMaskReq_template::LockUnlockMaskReq_template()
+{
+}
+
+LockUnlockMaskReq_template::LockUnlockMaskReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+LockUnlockMaskReq_template::LockUnlockMaskReq_template(const LockUnlockMaskReq& other_value)
+{
+copy_value(other_value);
+}
+
+LockUnlockMaskReq_template::LockUnlockMaskReq_template(const OPTIONAL<LockUnlockMaskReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const LockUnlockMaskReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.LockUnlockMaskReq from an unbound optional field.");
+}
+}
+
+LockUnlockMaskReq_template::LockUnlockMaskReq_template(const LockUnlockMaskReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+LockUnlockMaskReq_template::~LockUnlockMaskReq_template()
+{
+clean_up();
+}
+
+LockUnlockMaskReq_template& LockUnlockMaskReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+LockUnlockMaskReq_template& LockUnlockMaskReq_template::operator=(const LockUnlockMaskReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+LockUnlockMaskReq_template& LockUnlockMaskReq_template::operator=(const OPTIONAL<LockUnlockMaskReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const LockUnlockMaskReq&)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 @IsobusVTMessageTypes.LockUnlockMaskReq.");
+}
+return *this;
+}
+
+LockUnlockMaskReq_template& LockUnlockMaskReq_template::operator=(const LockUnlockMaskReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean LockUnlockMaskReq_template::match(const LockUnlockMaskReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.command().is_bound()) return FALSE;
+if(!single_value->field_command.match(other_value.command(), legacy))return FALSE;
+if(!other_value.ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock().is_bound()) return FALSE;
+if(!single_value->field_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock.match(other_value.ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock(), legacy))return FALSE;
+if(!other_value.lockTimeout().is_bound()) return FALSE;
+if(!single_value->field_lockTimeout.match(other_value.lockTimeout(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.LockUnlockMaskReq.");
+}
+return FALSE;
+}
+
+boolean LockUnlockMaskReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_command.is_bound()
+
+ ||single_value->field_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock.is_bound()
+
+ ||single_value->field_lockTimeout.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean LockUnlockMaskReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_command.is_value()
+ &&single_value->field_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock.is_value()
+ &&single_value->field_lockTimeout.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void LockUnlockMaskReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+LockUnlockMaskReq LockUnlockMaskReq_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 @IsobusVTMessageTypes.LockUnlockMaskReq.");
+LockUnlockMaskReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_command.is_bound()) {
+ret_val.command() = single_value->field_command.valueof();
+}
+if (single_value->field_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock.is_bound()) {
+ret_val.ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock() = single_value->field_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock.valueof();
+}
+if (single_value->field_lockTimeout.is_bound()) {
+ret_val.lockTimeout() = single_value->field_lockTimeout.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void LockUnlockMaskReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.LockUnlockMaskReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new LockUnlockMaskReq_template[list_length];
+}
+
+LockUnlockMaskReq_template& LockUnlockMaskReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.LockUnlockMaskReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.LockUnlockMaskReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& LockUnlockMaskReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& LockUnlockMaskReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.LockUnlockMaskReq.");
+return single_value->field_vtfunction;
+}
+
+e__LockUnlockMaskReqCommand_template& LockUnlockMaskReq_template::command()
+{
+set_specific();
+return single_value->field_command;
+}
+
+const e__LockUnlockMaskReqCommand_template& LockUnlockMaskReq_template::command() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field command of a non-specific template of type @IsobusVTMessageTypes.LockUnlockMaskReq.");
+return single_value->field_command;
+}
+
+INTEGER_template& LockUnlockMaskReq_template::ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock()
+{
+set_specific();
+return single_value->field_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock;
+}
+
+const INTEGER_template& LockUnlockMaskReq_template::ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock of a non-specific template of type @IsobusVTMessageTypes.LockUnlockMaskReq.");
+return single_value->field_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock;
+}
+
+INTEGER_template& LockUnlockMaskReq_template::lockTimeout()
+{
+set_specific();
+return single_value->field_lockTimeout;
+}
+
+const INTEGER_template& LockUnlockMaskReq_template::lockTimeout() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field lockTimeout of a non-specific template of type @IsobusVTMessageTypes.LockUnlockMaskReq.");
+return single_value->field_lockTimeout;
+}
+
+OCTETSTRING_template& LockUnlockMaskReq_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& LockUnlockMaskReq_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.LockUnlockMaskReq.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& LockUnlockMaskReq_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& LockUnlockMaskReq_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.LockUnlockMaskReq.");
+return single_value->field_reserved8;
+}
+
+int LockUnlockMaskReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.LockUnlockMaskReq 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 @IsobusVTMessageTypes.LockUnlockMaskReq 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 @IsobusVTMessageTypes.LockUnlockMaskReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.LockUnlockMaskReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.LockUnlockMaskReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.LockUnlockMaskReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.LockUnlockMaskReq.");
+  }
+  return 0;
+}
+
+void LockUnlockMaskReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", command := ");
+single_value->field_command.log();
+TTCN_Logger::log_event_str(", ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock := ");
+single_value->field_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock.log();
+TTCN_Logger::log_event_str(", lockTimeout := ");
+single_value->field_lockTimeout.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void LockUnlockMaskReq_template::log_match(const LockUnlockMaskReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_command.match(match_value.command(), legacy)){
+TTCN_Logger::log_logmatch_info(".command");
+single_value->field_command.log_match(match_value.command(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock.match(match_value.ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock(), legacy)){
+TTCN_Logger::log_logmatch_info(".ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock");
+single_value->field_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock.log_match(match_value.ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_lockTimeout.match(match_value.lockTimeout(), legacy)){
+TTCN_Logger::log_logmatch_info(".lockTimeout");
+single_value->field_lockTimeout.log_match(match_value.lockTimeout(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", command := ");
+single_value->field_command.log_match(match_value.command(), legacy);
+TTCN_Logger::log_event_str(", ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock := ");
+single_value->field_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock.log_match(match_value.ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock(), legacy);
+TTCN_Logger::log_event_str(", lockTimeout := ");
+single_value->field_lockTimeout.log_match(match_value.lockTimeout(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 LockUnlockMaskReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_command.encode_text(text_buf);
+single_value->field_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock.encode_text(text_buf);
+single_value->field_lockTimeout.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.LockUnlockMaskReq.");
+}
+}
+
+void LockUnlockMaskReq_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_vtfunction.decode_text(text_buf);
+single_value->field_command.decode_text(text_buf);
+single_value->field_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock.decode_text(text_buf);
+single_value->field_lockTimeout.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 LockUnlockMaskReq_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 @IsobusVTMessageTypes.LockUnlockMaskReq.");
+}
+}
+
+void LockUnlockMaskReq_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: {
+    LockUnlockMaskReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.LockUnlockMaskReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) command().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) lockTimeout().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "command")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          command().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(), "ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock().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(), "lockTimeout")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          lockTimeout().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.LockUnlockMaskReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.LockUnlockMaskReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void LockUnlockMaskReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.LockUnlockMaskReq");
+single_value->field_command.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.LockUnlockMaskReq");
+single_value->field_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.LockUnlockMaskReq");
+single_value->field_lockTimeout.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.LockUnlockMaskReq");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.LockUnlockMaskReq");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.LockUnlockMaskReq");
+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 : "@IsobusVTMessageTypes.LockUnlockMaskReq");
+}
+
+boolean LockUnlockMaskReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean LockUnlockMaskReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ExecuteMacroReq__ErrorCodes::ExecuteMacroReq__ErrorCodes()
+{
+}
+
+ExecuteMacroReq__ErrorCodes::ExecuteMacroReq__ErrorCodes(const BOOLEAN& par_objectIDdoesNotExist,
+    const BOOLEAN& par_objectIDisNotAMacroObject,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved3,
+    const BOOLEAN& par_reserved4,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7)
+  :   field_objectIDdoesNotExist(par_objectIDdoesNotExist),
+  field_objectIDisNotAMacroObject(par_objectIDisNotAMacroObject),
+  field_anyOtherError(par_anyOtherError),
+  field_reserved3(par_reserved3),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7)
+{
+}
+
+ExecuteMacroReq__ErrorCodes::ExecuteMacroReq__ErrorCodes(const ExecuteMacroReq__ErrorCodes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes.");
+if (other_value.objectIDdoesNotExist().is_bound()) field_objectIDdoesNotExist = other_value.objectIDdoesNotExist();
+else field_objectIDdoesNotExist.clean_up();
+if (other_value.objectIDisNotAMacroObject().is_bound()) field_objectIDisNotAMacroObject = other_value.objectIDisNotAMacroObject();
+else field_objectIDisNotAMacroObject.clean_up();
+if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+else field_anyOtherError.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+}
+
+void ExecuteMacroReq__ErrorCodes::clean_up()
+{
+field_objectIDdoesNotExist.clean_up();
+field_objectIDisNotAMacroObject.clean_up();
+field_anyOtherError.clean_up();
+field_reserved3.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ExecuteMacroReq__ErrorCodes::get_descriptor() const { return &ExecuteMacroReq__ErrorCodes_descr_; }
+ExecuteMacroReq__ErrorCodes& ExecuteMacroReq__ErrorCodes::operator=(const ExecuteMacroReq__ErrorCodes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes.");
+  if (other_value.objectIDdoesNotExist().is_bound()) field_objectIDdoesNotExist = other_value.objectIDdoesNotExist();
+  else field_objectIDdoesNotExist.clean_up();
+  if (other_value.objectIDisNotAMacroObject().is_bound()) field_objectIDisNotAMacroObject = other_value.objectIDisNotAMacroObject();
+  else field_objectIDisNotAMacroObject.clean_up();
+  if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+  else field_anyOtherError.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+}
+return *this;
+}
+
+boolean ExecuteMacroReq__ErrorCodes::operator==(const ExecuteMacroReq__ErrorCodes& other_value) const
+{
+return field_objectIDdoesNotExist==other_value.field_objectIDdoesNotExist
+  && field_objectIDisNotAMacroObject==other_value.field_objectIDisNotAMacroObject
+  && field_anyOtherError==other_value.field_anyOtherError
+  && field_reserved3==other_value.field_reserved3
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7;
+}
+
+boolean ExecuteMacroReq__ErrorCodes::is_bound() const
+{
+return (field_objectIDdoesNotExist.is_bound())
+  || (field_objectIDisNotAMacroObject.is_bound())
+  || (field_anyOtherError.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound());
+}
+boolean ExecuteMacroReq__ErrorCodes::is_value() const
+{
+return field_objectIDdoesNotExist.is_value()
+  && field_objectIDisNotAMacroObject.is_value()
+  && field_anyOtherError.is_value()
+  && field_reserved3.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value();
+}
+void ExecuteMacroReq__ErrorCodes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ objectIDdoesNotExist := ");
+field_objectIDdoesNotExist.log();
+TTCN_Logger::log_event_str(", objectIDisNotAMacroObject := ");
+field_objectIDisNotAMacroObject.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ExecuteMacroReq__ErrorCodes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes has 8 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) objectIDdoesNotExist().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectIDisNotAMacroObject().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "objectIDdoesNotExist")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDdoesNotExist().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(), "objectIDisNotAMacroObject")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDisNotAMacroObject().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes");
+  }
+}
+
+void ExecuteMacroReq__ErrorCodes::set_implicit_omit()
+{
+if (objectIDdoesNotExist().is_bound()) objectIDdoesNotExist().set_implicit_omit();
+if (objectIDisNotAMacroObject().is_bound()) objectIDisNotAMacroObject().set_implicit_omit();
+if (anyOtherError().is_bound()) anyOtherError().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+}
+
+void ExecuteMacroReq__ErrorCodes::encode_text(Text_Buf& text_buf) const
+{
+field_objectIDdoesNotExist.encode_text(text_buf);
+field_objectIDisNotAMacroObject.encode_text(text_buf);
+field_anyOtherError.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+}
+
+void ExecuteMacroReq__ErrorCodes::decode_text(Text_Buf& text_buf)
+{
+field_objectIDdoesNotExist.decode_text(text_buf);
+field_objectIDisNotAMacroObject.decode_text(text_buf);
+field_anyOtherError.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+}
+
+void ExecuteMacroReq__ErrorCodes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ExecuteMacroReq__ErrorCodes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ExecuteMacroReq__ErrorCodes::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_objectIDdoesNotExist.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_objectIDisNotAMacroObject.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_anyOtherError.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ExecuteMacroReq__ErrorCodes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_objectIDdoesNotExist.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectIDisNotAMacroObject.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_anyOtherError.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved3.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved4.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved5.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved6.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved7.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct ExecuteMacroReq__ErrorCodes_template::single_value_struct {
+BOOLEAN_template field_objectIDdoesNotExist;
+BOOLEAN_template field_objectIDisNotAMacroObject;
+BOOLEAN_template field_anyOtherError;
+BOOLEAN_template field_reserved3;
+BOOLEAN_template field_reserved4;
+BOOLEAN_template field_reserved5;
+BOOLEAN_template field_reserved6;
+BOOLEAN_template field_reserved7;
+};
+
+void ExecuteMacroReq__ErrorCodes_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_objectIDdoesNotExist = ANY_VALUE;
+single_value->field_objectIDisNotAMacroObject = ANY_VALUE;
+single_value->field_anyOtherError = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+}
+}
+}
+
+void ExecuteMacroReq__ErrorCodes_template::copy_value(const ExecuteMacroReq__ErrorCodes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.objectIDdoesNotExist().is_bound()) {
+  single_value->field_objectIDdoesNotExist = other_value.objectIDdoesNotExist();
+} else {
+  single_value->field_objectIDdoesNotExist.clean_up();
+}
+if (other_value.objectIDisNotAMacroObject().is_bound()) {
+  single_value->field_objectIDisNotAMacroObject = other_value.objectIDisNotAMacroObject();
+} else {
+  single_value->field_objectIDisNotAMacroObject.clean_up();
+}
+if (other_value.anyOtherError().is_bound()) {
+  single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+  single_value->field_anyOtherError.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ExecuteMacroReq__ErrorCodes_template::copy_template(const ExecuteMacroReq__ErrorCodes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.objectIDdoesNotExist().get_selection()) {
+single_value->field_objectIDdoesNotExist = other_value.objectIDdoesNotExist();
+} else {
+single_value->field_objectIDdoesNotExist.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectIDisNotAMacroObject().get_selection()) {
+single_value->field_objectIDisNotAMacroObject = other_value.objectIDisNotAMacroObject();
+} else {
+single_value->field_objectIDisNotAMacroObject.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.anyOtherError().get_selection()) {
+single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+single_value->field_anyOtherError.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ExecuteMacroReq__ErrorCodes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes.");
+break;
+}
+set_selection(other_value);
+}
+
+ExecuteMacroReq__ErrorCodes_template::ExecuteMacroReq__ErrorCodes_template()
+{
+}
+
+ExecuteMacroReq__ErrorCodes_template::ExecuteMacroReq__ErrorCodes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ExecuteMacroReq__ErrorCodes_template::ExecuteMacroReq__ErrorCodes_template(const ExecuteMacroReq__ErrorCodes& other_value)
+{
+copy_value(other_value);
+}
+
+ExecuteMacroReq__ErrorCodes_template::ExecuteMacroReq__ErrorCodes_template(const OPTIONAL<ExecuteMacroReq__ErrorCodes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExecuteMacroReq__ErrorCodes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes from an unbound optional field.");
+}
+}
+
+ExecuteMacroReq__ErrorCodes_template::ExecuteMacroReq__ErrorCodes_template(const ExecuteMacroReq__ErrorCodes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ExecuteMacroReq__ErrorCodes_template::~ExecuteMacroReq__ErrorCodes_template()
+{
+clean_up();
+}
+
+ExecuteMacroReq__ErrorCodes_template& ExecuteMacroReq__ErrorCodes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ExecuteMacroReq__ErrorCodes_template& ExecuteMacroReq__ErrorCodes_template::operator=(const ExecuteMacroReq__ErrorCodes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ExecuteMacroReq__ErrorCodes_template& ExecuteMacroReq__ErrorCodes_template::operator=(const OPTIONAL<ExecuteMacroReq__ErrorCodes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExecuteMacroReq__ErrorCodes&)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 @IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes.");
+}
+return *this;
+}
+
+ExecuteMacroReq__ErrorCodes_template& ExecuteMacroReq__ErrorCodes_template::operator=(const ExecuteMacroReq__ErrorCodes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ExecuteMacroReq__ErrorCodes_template::match(const ExecuteMacroReq__ErrorCodes& 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.objectIDdoesNotExist().is_bound()) return FALSE;
+if(!single_value->field_objectIDdoesNotExist.match(other_value.objectIDdoesNotExist(), legacy))return FALSE;
+if(!other_value.objectIDisNotAMacroObject().is_bound()) return FALSE;
+if(!single_value->field_objectIDisNotAMacroObject.match(other_value.objectIDisNotAMacroObject(), legacy))return FALSE;
+if(!other_value.anyOtherError().is_bound()) return FALSE;
+if(!single_value->field_anyOtherError.match(other_value.anyOtherError(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes.");
+}
+return FALSE;
+}
+
+boolean ExecuteMacroReq__ErrorCodes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_objectIDdoesNotExist.is_bound()
+
+ ||single_value->field_objectIDisNotAMacroObject.is_bound()
+
+ ||single_value->field_anyOtherError.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+;
+}
+
+boolean ExecuteMacroReq__ErrorCodes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_objectIDdoesNotExist.is_value()
+ &&single_value->field_objectIDisNotAMacroObject.is_value()
+ &&single_value->field_anyOtherError.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value();
+}
+
+void ExecuteMacroReq__ErrorCodes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ExecuteMacroReq__ErrorCodes ExecuteMacroReq__ErrorCodes_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 @IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes.");
+ExecuteMacroReq__ErrorCodes ret_val;
+if (single_value->field_objectIDdoesNotExist.is_bound()) {
+ret_val.objectIDdoesNotExist() = single_value->field_objectIDdoesNotExist.valueof();
+}
+if (single_value->field_objectIDisNotAMacroObject.is_bound()) {
+ret_val.objectIDisNotAMacroObject() = single_value->field_objectIDisNotAMacroObject.valueof();
+}
+if (single_value->field_anyOtherError.is_bound()) {
+ret_val.anyOtherError() = single_value->field_anyOtherError.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+return ret_val;
+}
+
+void ExecuteMacroReq__ErrorCodes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ExecuteMacroReq__ErrorCodes_template[list_length];
+}
+
+ExecuteMacroReq__ErrorCodes_template& ExecuteMacroReq__ErrorCodes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& ExecuteMacroReq__ErrorCodes_template::objectIDdoesNotExist()
+{
+set_specific();
+return single_value->field_objectIDdoesNotExist;
+}
+
+const BOOLEAN_template& ExecuteMacroReq__ErrorCodes_template::objectIDdoesNotExist() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectIDdoesNotExist of a non-specific template of type @IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes.");
+return single_value->field_objectIDdoesNotExist;
+}
+
+BOOLEAN_template& ExecuteMacroReq__ErrorCodes_template::objectIDisNotAMacroObject()
+{
+set_specific();
+return single_value->field_objectIDisNotAMacroObject;
+}
+
+const BOOLEAN_template& ExecuteMacroReq__ErrorCodes_template::objectIDisNotAMacroObject() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectIDisNotAMacroObject of a non-specific template of type @IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes.");
+return single_value->field_objectIDisNotAMacroObject;
+}
+
+BOOLEAN_template& ExecuteMacroReq__ErrorCodes_template::anyOtherError()
+{
+set_specific();
+return single_value->field_anyOtherError;
+}
+
+const BOOLEAN_template& ExecuteMacroReq__ErrorCodes_template::anyOtherError() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field anyOtherError of a non-specific template of type @IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes.");
+return single_value->field_anyOtherError;
+}
+
+BOOLEAN_template& ExecuteMacroReq__ErrorCodes_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const BOOLEAN_template& ExecuteMacroReq__ErrorCodes_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes.");
+return single_value->field_reserved3;
+}
+
+BOOLEAN_template& ExecuteMacroReq__ErrorCodes_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const BOOLEAN_template& ExecuteMacroReq__ErrorCodes_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes.");
+return single_value->field_reserved4;
+}
+
+BOOLEAN_template& ExecuteMacroReq__ErrorCodes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const BOOLEAN_template& ExecuteMacroReq__ErrorCodes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes.");
+return single_value->field_reserved5;
+}
+
+BOOLEAN_template& ExecuteMacroReq__ErrorCodes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const BOOLEAN_template& ExecuteMacroReq__ErrorCodes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes.");
+return single_value->field_reserved6;
+}
+
+BOOLEAN_template& ExecuteMacroReq__ErrorCodes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const BOOLEAN_template& ExecuteMacroReq__ErrorCodes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes.");
+return single_value->field_reserved7;
+}
+
+int ExecuteMacroReq__ErrorCodes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes 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 @IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes.");
+  }
+  return 0;
+}
+
+void ExecuteMacroReq__ErrorCodes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ objectIDdoesNotExist := ");
+single_value->field_objectIDdoesNotExist.log();
+TTCN_Logger::log_event_str(", objectIDisNotAMacroObject := ");
+single_value->field_objectIDisNotAMacroObject.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ExecuteMacroReq__ErrorCodes_template::log_match(const ExecuteMacroReq__ErrorCodes& 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_objectIDdoesNotExist.match(match_value.objectIDdoesNotExist(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectIDdoesNotExist");
+single_value->field_objectIDdoesNotExist.log_match(match_value.objectIDdoesNotExist(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectIDisNotAMacroObject.match(match_value.objectIDisNotAMacroObject(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectIDisNotAMacroObject");
+single_value->field_objectIDisNotAMacroObject.log_match(match_value.objectIDisNotAMacroObject(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_anyOtherError.match(match_value.anyOtherError(), legacy)){
+TTCN_Logger::log_logmatch_info(".anyOtherError");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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("{ objectIDdoesNotExist := ");
+single_value->field_objectIDdoesNotExist.log_match(match_value.objectIDdoesNotExist(), legacy);
+TTCN_Logger::log_event_str(", objectIDisNotAMacroObject := ");
+single_value->field_objectIDisNotAMacroObject.log_match(match_value.objectIDisNotAMacroObject(), legacy);
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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 ExecuteMacroReq__ErrorCodes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_objectIDdoesNotExist.encode_text(text_buf);
+single_value->field_objectIDisNotAMacroObject.encode_text(text_buf);
+single_value->field_anyOtherError.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.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 @IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes.");
+}
+}
+
+void ExecuteMacroReq__ErrorCodes_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_objectIDdoesNotExist.decode_text(text_buf);
+single_value->field_objectIDisNotAMacroObject.decode_text(text_buf);
+single_value->field_anyOtherError.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.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 ExecuteMacroReq__ErrorCodes_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 @IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes.");
+}
+}
+
+void ExecuteMacroReq__ErrorCodes_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: {
+    ExecuteMacroReq__ErrorCodes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes has 8 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) objectIDdoesNotExist().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectIDisNotAMacroObject().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "objectIDdoesNotExist")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDdoesNotExist().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(), "objectIDisNotAMacroObject")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDisNotAMacroObject().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ExecuteMacroReq__ErrorCodes_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_objectIDdoesNotExist.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes");
+single_value->field_objectIDisNotAMacroObject.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes");
+single_value->field_anyOtherError.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes");
+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 : "@IsobusVTMessageTypes.ExecuteMacroReq_ErrorCodes");
+}
+
+boolean ExecuteMacroReq__ErrorCodes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ExecuteMacroReq__ErrorCodes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ExecuteMacroRes::ExecuteMacroRes()
+{
+}
+
+ExecuteMacroRes::ExecuteMacroRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectIDofMacroObject,
+    const ExecuteMacroReq__ErrorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_objectIDofMacroObject(par_objectIDofMacroObject),
+  field_errorCodes(par_errorCodes),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+ExecuteMacroRes::ExecuteMacroRes(const ExecuteMacroRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ExecuteMacroRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectIDofMacroObject().is_bound()) field_objectIDofMacroObject = other_value.objectIDofMacroObject();
+else field_objectIDofMacroObject.clean_up();
+if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+else field_errorCodes.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void ExecuteMacroRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectIDofMacroObject.clean_up();
+field_errorCodes.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ExecuteMacroRes::get_descriptor() const { return &ExecuteMacroRes_descr_; }
+ExecuteMacroRes& ExecuteMacroRes::operator=(const ExecuteMacroRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ExecuteMacroRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectIDofMacroObject().is_bound()) field_objectIDofMacroObject = other_value.objectIDofMacroObject();
+  else field_objectIDofMacroObject.clean_up();
+  if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+  else field_errorCodes.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean ExecuteMacroRes::operator==(const ExecuteMacroRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectIDofMacroObject==other_value.field_objectIDofMacroObject
+  && field_errorCodes==other_value.field_errorCodes
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean ExecuteMacroRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectIDofMacroObject.is_bound())
+  || (field_errorCodes.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean ExecuteMacroRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectIDofMacroObject.is_value()
+  && field_errorCodes.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void ExecuteMacroRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectIDofMacroObject := ");
+field_objectIDofMacroObject.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ExecuteMacroRes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.ExecuteMacroRes has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectIDofMacroObject().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectIDofMacroObject")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofMacroObject().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ExecuteMacroRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ExecuteMacroRes");
+  }
+}
+
+void ExecuteMacroRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectIDofMacroObject().is_bound()) objectIDofMacroObject().set_implicit_omit();
+if (errorCodes().is_bound()) errorCodes().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void ExecuteMacroRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectIDofMacroObject.encode_text(text_buf);
+field_errorCodes.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void ExecuteMacroRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectIDofMacroObject.decode_text(text_buf);
+field_errorCodes.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void ExecuteMacroRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ExecuteMacroRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ExecuteMacroRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectIDofMacroObject.RAW_decode(ValidObjectID_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, ExecuteMacroReq__ErrorCodes_descr_.raw->forceomit);
+  decoded_field_length = field_errorCodes.RAW_decode(ExecuteMacroReq__ErrorCodes_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, ExecuteMacroRes_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(ExecuteMacroRes_reserved4_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, ExecuteMacroRes_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(ExecuteMacroRes_reserved5_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, ExecuteMacroRes_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(ExecuteMacroRes_reserved6_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, ExecuteMacroRes_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(ExecuteMacroRes_reserved7_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, ExecuteMacroRes_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(ExecuteMacroRes_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ExecuteMacroRes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ExecuteMacroReq__ErrorCodes_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, ExecuteMacroRes_reserved4_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, ExecuteMacroRes_reserved5_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, ExecuteMacroRes_reserved6_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, ExecuteMacroRes_reserved7_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, ExecuteMacroRes_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectIDofMacroObject.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_errorCodes.RAW_encode(ExecuteMacroReq__ErrorCodes_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved4.RAW_encode(ExecuteMacroRes_reserved4_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved5.RAW_encode(ExecuteMacroRes_reserved5_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved6.RAW_encode(ExecuteMacroRes_reserved6_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved7.RAW_encode(ExecuteMacroRes_reserved7_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved8.RAW_encode(ExecuteMacroRes_reserved8_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct ExecuteMacroRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectIDofMacroObject;
+ExecuteMacroReq__ErrorCodes_template field_errorCodes;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void ExecuteMacroRes_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_vtfunction = ANY_VALUE;
+single_value->field_objectIDofMacroObject = ANY_VALUE;
+single_value->field_errorCodes = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void ExecuteMacroRes_template::copy_value(const ExecuteMacroRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectIDofMacroObject().is_bound()) {
+  single_value->field_objectIDofMacroObject = other_value.objectIDofMacroObject();
+} else {
+  single_value->field_objectIDofMacroObject.clean_up();
+}
+if (other_value.errorCodes().is_bound()) {
+  single_value->field_errorCodes = other_value.errorCodes();
+} else {
+  single_value->field_errorCodes.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ExecuteMacroRes_template::copy_template(const ExecuteMacroRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectIDofMacroObject().get_selection()) {
+single_value->field_objectIDofMacroObject = other_value.objectIDofMacroObject();
+} else {
+single_value->field_objectIDofMacroObject.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.errorCodes().get_selection()) {
+single_value->field_errorCodes = other_value.errorCodes();
+} else {
+single_value->field_errorCodes.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ExecuteMacroRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExecuteMacroRes.");
+break;
+}
+set_selection(other_value);
+}
+
+ExecuteMacroRes_template::ExecuteMacroRes_template()
+{
+}
+
+ExecuteMacroRes_template::ExecuteMacroRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ExecuteMacroRes_template::ExecuteMacroRes_template(const ExecuteMacroRes& other_value)
+{
+copy_value(other_value);
+}
+
+ExecuteMacroRes_template::ExecuteMacroRes_template(const OPTIONAL<ExecuteMacroRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExecuteMacroRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ExecuteMacroRes from an unbound optional field.");
+}
+}
+
+ExecuteMacroRes_template::ExecuteMacroRes_template(const ExecuteMacroRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ExecuteMacroRes_template::~ExecuteMacroRes_template()
+{
+clean_up();
+}
+
+ExecuteMacroRes_template& ExecuteMacroRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ExecuteMacroRes_template& ExecuteMacroRes_template::operator=(const ExecuteMacroRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ExecuteMacroRes_template& ExecuteMacroRes_template::operator=(const OPTIONAL<ExecuteMacroRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExecuteMacroRes&)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 @IsobusVTMessageTypes.ExecuteMacroRes.");
+}
+return *this;
+}
+
+ExecuteMacroRes_template& ExecuteMacroRes_template::operator=(const ExecuteMacroRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ExecuteMacroRes_template::match(const ExecuteMacroRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectIDofMacroObject().is_bound()) return FALSE;
+if(!single_value->field_objectIDofMacroObject.match(other_value.objectIDofMacroObject(), legacy))return FALSE;
+if(!other_value.errorCodes().is_bound()) return FALSE;
+if(!single_value->field_errorCodes.match(other_value.errorCodes(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExecuteMacroRes.");
+}
+return FALSE;
+}
+
+boolean ExecuteMacroRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectIDofMacroObject.is_bound()
+
+ ||single_value->field_errorCodes.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean ExecuteMacroRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectIDofMacroObject.is_value()
+ &&single_value->field_errorCodes.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void ExecuteMacroRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ExecuteMacroRes ExecuteMacroRes_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 @IsobusVTMessageTypes.ExecuteMacroRes.");
+ExecuteMacroRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectIDofMacroObject.is_bound()) {
+ret_val.objectIDofMacroObject() = single_value->field_objectIDofMacroObject.valueof();
+}
+if (single_value->field_errorCodes.is_bound()) {
+ret_val.errorCodes() = single_value->field_errorCodes.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void ExecuteMacroRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ExecuteMacroRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ExecuteMacroRes_template[list_length];
+}
+
+ExecuteMacroRes_template& ExecuteMacroRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ExecuteMacroRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ExecuteMacroRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ExecuteMacroRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ExecuteMacroRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ExecuteMacroRes.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& ExecuteMacroRes_template::objectIDofMacroObject()
+{
+set_specific();
+return single_value->field_objectIDofMacroObject;
+}
+
+const INTEGER_template& ExecuteMacroRes_template::objectIDofMacroObject() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectIDofMacroObject of a non-specific template of type @IsobusVTMessageTypes.ExecuteMacroRes.");
+return single_value->field_objectIDofMacroObject;
+}
+
+ExecuteMacroReq__ErrorCodes_template& ExecuteMacroRes_template::errorCodes()
+{
+set_specific();
+return single_value->field_errorCodes;
+}
+
+const ExecuteMacroReq__ErrorCodes_template& ExecuteMacroRes_template::errorCodes() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field errorCodes of a non-specific template of type @IsobusVTMessageTypes.ExecuteMacroRes.");
+return single_value->field_errorCodes;
+}
+
+OCTETSTRING_template& ExecuteMacroRes_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& ExecuteMacroRes_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.ExecuteMacroRes.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& ExecuteMacroRes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& ExecuteMacroRes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.ExecuteMacroRes.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& ExecuteMacroRes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& ExecuteMacroRes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.ExecuteMacroRes.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& ExecuteMacroRes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& ExecuteMacroRes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ExecuteMacroRes.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& ExecuteMacroRes_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& ExecuteMacroRes_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.ExecuteMacroRes.");
+return single_value->field_reserved8;
+}
+
+int ExecuteMacroRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExecuteMacroRes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExecuteMacroRes 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 @IsobusVTMessageTypes.ExecuteMacroRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExecuteMacroRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExecuteMacroRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExecuteMacroRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExecuteMacroRes.");
+  }
+  return 0;
+}
+
+void ExecuteMacroRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectIDofMacroObject := ");
+single_value->field_objectIDofMacroObject.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ExecuteMacroRes_template::log_match(const ExecuteMacroRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectIDofMacroObject.match(match_value.objectIDofMacroObject(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectIDofMacroObject");
+single_value->field_objectIDofMacroObject.log_match(match_value.objectIDofMacroObject(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_errorCodes.match(match_value.errorCodes(), legacy)){
+TTCN_Logger::log_logmatch_info(".errorCodes");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectIDofMacroObject := ");
+single_value->field_objectIDofMacroObject.log_match(match_value.objectIDofMacroObject(), legacy);
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 ExecuteMacroRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectIDofMacroObject.encode_text(text_buf);
+single_value->field_errorCodes.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.ExecuteMacroRes.");
+}
+}
+
+void ExecuteMacroRes_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_vtfunction.decode_text(text_buf);
+single_value->field_objectIDofMacroObject.decode_text(text_buf);
+single_value->field_errorCodes.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 ExecuteMacroRes_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 @IsobusVTMessageTypes.ExecuteMacroRes.");
+}
+}
+
+void ExecuteMacroRes_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: {
+    ExecuteMacroRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.ExecuteMacroRes has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectIDofMacroObject().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectIDofMacroObject")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofMacroObject().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ExecuteMacroRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ExecuteMacroRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ExecuteMacroRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExecuteMacroRes");
+single_value->field_objectIDofMacroObject.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExecuteMacroRes");
+single_value->field_errorCodes.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExecuteMacroRes");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExecuteMacroRes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExecuteMacroRes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExecuteMacroRes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExecuteMacroRes");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExecuteMacroRes");
+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 : "@IsobusVTMessageTypes.ExecuteMacroRes");
+}
+
+boolean ExecuteMacroRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ExecuteMacroRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ExecuteMacroReq::ExecuteMacroReq()
+{
+}
+
+ExecuteMacroReq::ExecuteMacroReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectIDofMacroObject,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_objectIDofMacroObject(par_objectIDofMacroObject),
+  field_reserved3(par_reserved3),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+ExecuteMacroReq::ExecuteMacroReq(const ExecuteMacroReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ExecuteMacroReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.objectIDofMacroObject().is_bound()) field_objectIDofMacroObject = other_value.objectIDofMacroObject();
+else field_objectIDofMacroObject.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void ExecuteMacroReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_objectIDofMacroObject.clean_up();
+field_reserved3.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ExecuteMacroReq::get_descriptor() const { return &ExecuteMacroReq_descr_; }
+ExecuteMacroReq& ExecuteMacroReq::operator=(const ExecuteMacroReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ExecuteMacroReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.objectIDofMacroObject().is_bound()) field_objectIDofMacroObject = other_value.objectIDofMacroObject();
+  else field_objectIDofMacroObject.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean ExecuteMacroReq::operator==(const ExecuteMacroReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_objectIDofMacroObject==other_value.field_objectIDofMacroObject
+  && field_reserved3==other_value.field_reserved3
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean ExecuteMacroReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_objectIDofMacroObject.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean ExecuteMacroReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_objectIDofMacroObject.is_value()
+  && field_reserved3.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void ExecuteMacroReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectIDofMacroObject := ");
+field_objectIDofMacroObject.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ExecuteMacroReq::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.ExecuteMacroReq has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectIDofMacroObject().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectIDofMacroObject")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofMacroObject().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ExecuteMacroReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ExecuteMacroReq");
+  }
+}
+
+void ExecuteMacroReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (objectIDofMacroObject().is_bound()) objectIDofMacroObject().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void ExecuteMacroReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_objectIDofMacroObject.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void ExecuteMacroReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_objectIDofMacroObject.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void ExecuteMacroReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ExecuteMacroReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ExecuteMacroReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ValidObjectID_descr_.raw->forceomit);
+  decoded_field_length = field_objectIDofMacroObject.RAW_decode(ValidObjectID_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, ExecuteMacroReq_reserved3_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(ExecuteMacroReq_reserved3_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, ExecuteMacroReq_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(ExecuteMacroReq_reserved4_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, ExecuteMacroReq_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(ExecuteMacroReq_reserved5_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, ExecuteMacroReq_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(ExecuteMacroReq_reserved6_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, ExecuteMacroReq_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(ExecuteMacroReq_reserved7_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, ExecuteMacroReq_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(ExecuteMacroReq_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ExecuteMacroReq::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ValidObjectID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ExecuteMacroReq_reserved3_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, ExecuteMacroReq_reserved4_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, ExecuteMacroReq_reserved5_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, ExecuteMacroReq_reserved6_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, ExecuteMacroReq_reserved7_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, ExecuteMacroReq_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_objectIDofMacroObject.RAW_encode(ValidObjectID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved3.RAW_encode(ExecuteMacroReq_reserved3_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved4.RAW_encode(ExecuteMacroReq_reserved4_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved5.RAW_encode(ExecuteMacroReq_reserved5_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved6.RAW_encode(ExecuteMacroReq_reserved6_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved7.RAW_encode(ExecuteMacroReq_reserved7_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved8.RAW_encode(ExecuteMacroReq_reserved8_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct ExecuteMacroReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_objectIDofMacroObject;
+OCTETSTRING_template field_reserved3;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void ExecuteMacroReq_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_vtfunction = ANY_VALUE;
+single_value->field_objectIDofMacroObject = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void ExecuteMacroReq_template::copy_value(const ExecuteMacroReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.objectIDofMacroObject().is_bound()) {
+  single_value->field_objectIDofMacroObject = other_value.objectIDofMacroObject();
+} else {
+  single_value->field_objectIDofMacroObject.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ExecuteMacroReq_template::copy_template(const ExecuteMacroReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectIDofMacroObject().get_selection()) {
+single_value->field_objectIDofMacroObject = other_value.objectIDofMacroObject();
+} else {
+single_value->field_objectIDofMacroObject.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ExecuteMacroReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExecuteMacroReq.");
+break;
+}
+set_selection(other_value);
+}
+
+ExecuteMacroReq_template::ExecuteMacroReq_template()
+{
+}
+
+ExecuteMacroReq_template::ExecuteMacroReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ExecuteMacroReq_template::ExecuteMacroReq_template(const ExecuteMacroReq& other_value)
+{
+copy_value(other_value);
+}
+
+ExecuteMacroReq_template::ExecuteMacroReq_template(const OPTIONAL<ExecuteMacroReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExecuteMacroReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ExecuteMacroReq from an unbound optional field.");
+}
+}
+
+ExecuteMacroReq_template::ExecuteMacroReq_template(const ExecuteMacroReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ExecuteMacroReq_template::~ExecuteMacroReq_template()
+{
+clean_up();
+}
+
+ExecuteMacroReq_template& ExecuteMacroReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ExecuteMacroReq_template& ExecuteMacroReq_template::operator=(const ExecuteMacroReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ExecuteMacroReq_template& ExecuteMacroReq_template::operator=(const OPTIONAL<ExecuteMacroReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExecuteMacroReq&)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 @IsobusVTMessageTypes.ExecuteMacroReq.");
+}
+return *this;
+}
+
+ExecuteMacroReq_template& ExecuteMacroReq_template::operator=(const ExecuteMacroReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ExecuteMacroReq_template::match(const ExecuteMacroReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.objectIDofMacroObject().is_bound()) return FALSE;
+if(!single_value->field_objectIDofMacroObject.match(other_value.objectIDofMacroObject(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExecuteMacroReq.");
+}
+return FALSE;
+}
+
+boolean ExecuteMacroReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_objectIDofMacroObject.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean ExecuteMacroReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_objectIDofMacroObject.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void ExecuteMacroReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ExecuteMacroReq ExecuteMacroReq_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 @IsobusVTMessageTypes.ExecuteMacroReq.");
+ExecuteMacroReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_objectIDofMacroObject.is_bound()) {
+ret_val.objectIDofMacroObject() = single_value->field_objectIDofMacroObject.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void ExecuteMacroReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ExecuteMacroReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ExecuteMacroReq_template[list_length];
+}
+
+ExecuteMacroReq_template& ExecuteMacroReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ExecuteMacroReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ExecuteMacroReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ExecuteMacroReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ExecuteMacroReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ExecuteMacroReq.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& ExecuteMacroReq_template::objectIDofMacroObject()
+{
+set_specific();
+return single_value->field_objectIDofMacroObject;
+}
+
+const INTEGER_template& ExecuteMacroReq_template::objectIDofMacroObject() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectIDofMacroObject of a non-specific template of type @IsobusVTMessageTypes.ExecuteMacroReq.");
+return single_value->field_objectIDofMacroObject;
+}
+
+OCTETSTRING_template& ExecuteMacroReq_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const OCTETSTRING_template& ExecuteMacroReq_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.ExecuteMacroReq.");
+return single_value->field_reserved3;
+}
+
+OCTETSTRING_template& ExecuteMacroReq_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& ExecuteMacroReq_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.ExecuteMacroReq.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& ExecuteMacroReq_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& ExecuteMacroReq_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.ExecuteMacroReq.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& ExecuteMacroReq_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& ExecuteMacroReq_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.ExecuteMacroReq.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& ExecuteMacroReq_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& ExecuteMacroReq_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ExecuteMacroReq.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& ExecuteMacroReq_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& ExecuteMacroReq_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.ExecuteMacroReq.");
+return single_value->field_reserved8;
+}
+
+int ExecuteMacroReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExecuteMacroReq which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExecuteMacroReq 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 @IsobusVTMessageTypes.ExecuteMacroReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExecuteMacroReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExecuteMacroReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExecuteMacroReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExecuteMacroReq.");
+  }
+  return 0;
+}
+
+void ExecuteMacroReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", objectIDofMacroObject := ");
+single_value->field_objectIDofMacroObject.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ExecuteMacroReq_template::log_match(const ExecuteMacroReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectIDofMacroObject.match(match_value.objectIDofMacroObject(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectIDofMacroObject");
+single_value->field_objectIDofMacroObject.log_match(match_value.objectIDofMacroObject(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", objectIDofMacroObject := ");
+single_value->field_objectIDofMacroObject.log_match(match_value.objectIDofMacroObject(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 ExecuteMacroReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_objectIDofMacroObject.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.ExecuteMacroReq.");
+}
+}
+
+void ExecuteMacroReq_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_vtfunction.decode_text(text_buf);
+single_value->field_objectIDofMacroObject.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 ExecuteMacroReq_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 @IsobusVTMessageTypes.ExecuteMacroReq.");
+}
+}
+
+void ExecuteMacroReq_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: {
+    ExecuteMacroReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.ExecuteMacroReq has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) objectIDofMacroObject().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "objectIDofMacroObject")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDofMacroObject().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ExecuteMacroReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ExecuteMacroReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ExecuteMacroReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExecuteMacroReq");
+single_value->field_objectIDofMacroObject.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExecuteMacroReq");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExecuteMacroReq");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExecuteMacroReq");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExecuteMacroReq");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExecuteMacroReq");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExecuteMacroReq");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExecuteMacroReq");
+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 : "@IsobusVTMessageTypes.ExecuteMacroReq");
+}
+
+boolean ExecuteMacroReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ExecuteMacroReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+GetMemoryReq::GetMemoryReq()
+{
+}
+
+GetMemoryReq::GetMemoryReq(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_reserved2,
+    const INTEGER& par_memoryRequired,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_reserved2(par_reserved2),
+  field_memoryRequired(par_memoryRequired),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+GetMemoryReq::GetMemoryReq(const GetMemoryReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.GetMemoryReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+else field_reserved2.clean_up();
+if (other_value.memoryRequired().is_bound()) field_memoryRequired = other_value.memoryRequired();
+else field_memoryRequired.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void GetMemoryReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_reserved2.clean_up();
+field_memoryRequired.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* GetMemoryReq::get_descriptor() const { return &GetMemoryReq_descr_; }
+GetMemoryReq& GetMemoryReq::operator=(const GetMemoryReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.GetMemoryReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+  else field_reserved2.clean_up();
+  if (other_value.memoryRequired().is_bound()) field_memoryRequired = other_value.memoryRequired();
+  else field_memoryRequired.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean GetMemoryReq::operator==(const GetMemoryReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_reserved2==other_value.field_reserved2
+  && field_memoryRequired==other_value.field_memoryRequired
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean GetMemoryReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_reserved2.is_bound())
+  || (field_memoryRequired.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean GetMemoryReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_reserved2.is_value()
+  && field_memoryRequired.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void GetMemoryReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+field_reserved2.log();
+TTCN_Logger::log_event_str(", memoryRequired := ");
+field_memoryRequired.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void GetMemoryReq::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 @IsobusVTMessageTypes.GetMemoryReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) memoryRequired().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "memoryRequired")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          memoryRequired().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.GetMemoryReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.GetMemoryReq");
+  }
+}
+
+void GetMemoryReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (reserved2().is_bound()) reserved2().set_implicit_omit();
+if (memoryRequired().is_bound()) memoryRequired().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void GetMemoryReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_reserved2.encode_text(text_buf);
+field_memoryRequired.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void GetMemoryReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_reserved2.decode_text(text_buf);
+field_memoryRequired.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void GetMemoryReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void GetMemoryReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int GetMemoryReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, GetMemoryReq_reserved2_descr_.raw->forceomit);
+  decoded_field_length = field_reserved2.RAW_decode(GetMemoryReq_reserved2_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, IsobusMessageTypes::INT3_descr_.raw->forceomit);
+  decoded_field_length = field_memoryRequired.RAW_decode(IsobusMessageTypes::INT3_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, GetMemoryReq_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(GetMemoryReq_reserved7_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, GetMemoryReq_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(GetMemoryReq_reserved8_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 GetMemoryReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, GetMemoryReq_reserved2_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, IsobusMessageTypes::INT3_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, GetMemoryReq_reserved7_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, GetMemoryReq_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved2.RAW_encode(GetMemoryReq_reserved2_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_memoryRequired.RAW_encode(IsobusMessageTypes::INT3_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved7.RAW_encode(GetMemoryReq_reserved7_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved8.RAW_encode(GetMemoryReq_reserved8_descr_, *myleaf.body.node.nodes[4]);
+  return myleaf.length = encoded_length;
+}
+
+struct GetMemoryReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+OCTETSTRING_template field_reserved2;
+INTEGER_template field_memoryRequired;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void GetMemoryReq_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_vtfunction = ANY_VALUE;
+single_value->field_reserved2 = ANY_VALUE;
+single_value->field_memoryRequired = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void GetMemoryReq_template::copy_value(const GetMemoryReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.reserved2().is_bound()) {
+  single_value->field_reserved2 = other_value.reserved2();
+} else {
+  single_value->field_reserved2.clean_up();
+}
+if (other_value.memoryRequired().is_bound()) {
+  single_value->field_memoryRequired = other_value.memoryRequired();
+} else {
+  single_value->field_memoryRequired.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void GetMemoryReq_template::copy_template(const GetMemoryReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved2().get_selection()) {
+single_value->field_reserved2 = other_value.reserved2();
+} else {
+single_value->field_reserved2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.memoryRequired().get_selection()) {
+single_value->field_memoryRequired = other_value.memoryRequired();
+} else {
+single_value->field_memoryRequired.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new GetMemoryReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetMemoryReq.");
+break;
+}
+set_selection(other_value);
+}
+
+GetMemoryReq_template::GetMemoryReq_template()
+{
+}
+
+GetMemoryReq_template::GetMemoryReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+GetMemoryReq_template::GetMemoryReq_template(const GetMemoryReq& other_value)
+{
+copy_value(other_value);
+}
+
+GetMemoryReq_template::GetMemoryReq_template(const OPTIONAL<GetMemoryReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const GetMemoryReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.GetMemoryReq from an unbound optional field.");
+}
+}
+
+GetMemoryReq_template::GetMemoryReq_template(const GetMemoryReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+GetMemoryReq_template::~GetMemoryReq_template()
+{
+clean_up();
+}
+
+GetMemoryReq_template& GetMemoryReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+GetMemoryReq_template& GetMemoryReq_template::operator=(const GetMemoryReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+GetMemoryReq_template& GetMemoryReq_template::operator=(const OPTIONAL<GetMemoryReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const GetMemoryReq&)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 @IsobusVTMessageTypes.GetMemoryReq.");
+}
+return *this;
+}
+
+GetMemoryReq_template& GetMemoryReq_template::operator=(const GetMemoryReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean GetMemoryReq_template::match(const GetMemoryReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.reserved2().is_bound()) return FALSE;
+if(!single_value->field_reserved2.match(other_value.reserved2(), legacy))return FALSE;
+if(!other_value.memoryRequired().is_bound()) return FALSE;
+if(!single_value->field_memoryRequired.match(other_value.memoryRequired(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetMemoryReq.");
+}
+return FALSE;
+}
+
+boolean GetMemoryReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_reserved2.is_bound()
+
+ ||single_value->field_memoryRequired.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean GetMemoryReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_reserved2.is_value()
+ &&single_value->field_memoryRequired.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void GetMemoryReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+GetMemoryReq GetMemoryReq_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 @IsobusVTMessageTypes.GetMemoryReq.");
+GetMemoryReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_reserved2.is_bound()) {
+ret_val.reserved2() = single_value->field_reserved2.valueof();
+}
+if (single_value->field_memoryRequired.is_bound()) {
+ret_val.memoryRequired() = single_value->field_memoryRequired.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void GetMemoryReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.GetMemoryReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new GetMemoryReq_template[list_length];
+}
+
+GetMemoryReq_template& GetMemoryReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.GetMemoryReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.GetMemoryReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& GetMemoryReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& GetMemoryReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.GetMemoryReq.");
+return single_value->field_vtfunction;
+}
+
+OCTETSTRING_template& GetMemoryReq_template::reserved2()
+{
+set_specific();
+return single_value->field_reserved2;
+}
+
+const OCTETSTRING_template& GetMemoryReq_template::reserved2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved2 of a non-specific template of type @IsobusVTMessageTypes.GetMemoryReq.");
+return single_value->field_reserved2;
+}
+
+INTEGER_template& GetMemoryReq_template::memoryRequired()
+{
+set_specific();
+return single_value->field_memoryRequired;
+}
+
+const INTEGER_template& GetMemoryReq_template::memoryRequired() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field memoryRequired of a non-specific template of type @IsobusVTMessageTypes.GetMemoryReq.");
+return single_value->field_memoryRequired;
+}
+
+OCTETSTRING_template& GetMemoryReq_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& GetMemoryReq_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.GetMemoryReq.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& GetMemoryReq_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& GetMemoryReq_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.GetMemoryReq.");
+return single_value->field_reserved8;
+}
+
+int GetMemoryReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetMemoryReq 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 @IsobusVTMessageTypes.GetMemoryReq 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 @IsobusVTMessageTypes.GetMemoryReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetMemoryReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetMemoryReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetMemoryReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetMemoryReq.");
+  }
+  return 0;
+}
+
+void GetMemoryReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log();
+TTCN_Logger::log_event_str(", memoryRequired := ");
+single_value->field_memoryRequired.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void GetMemoryReq_template::log_match(const GetMemoryReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved2.match(match_value.reserved2(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved2");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_memoryRequired.match(match_value.memoryRequired(), legacy)){
+TTCN_Logger::log_logmatch_info(".memoryRequired");
+single_value->field_memoryRequired.log_match(match_value.memoryRequired(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::log_event_str(", memoryRequired := ");
+single_value->field_memoryRequired.log_match(match_value.memoryRequired(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 GetMemoryReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_reserved2.encode_text(text_buf);
+single_value->field_memoryRequired.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.GetMemoryReq.");
+}
+}
+
+void GetMemoryReq_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_vtfunction.decode_text(text_buf);
+single_value->field_reserved2.decode_text(text_buf);
+single_value->field_memoryRequired.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 GetMemoryReq_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 @IsobusVTMessageTypes.GetMemoryReq.");
+}
+}
+
+void GetMemoryReq_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: {
+    GetMemoryReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.GetMemoryReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) memoryRequired().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "memoryRequired")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          memoryRequired().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.GetMemoryReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.GetMemoryReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void GetMemoryReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetMemoryReq");
+single_value->field_reserved2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetMemoryReq");
+single_value->field_memoryRequired.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetMemoryReq");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetMemoryReq");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetMemoryReq");
+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 : "@IsobusVTMessageTypes.GetMemoryReq");
+}
+
+boolean GetMemoryReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean GetMemoryReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+e__GetMemoryResVersionNumber::e__GetMemoryResVersionNumber()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+e__GetMemoryResVersionNumber::e__GetMemoryResVersionNumber(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @IsobusVTMessageTypes.e_GetMemoryResVersionNumber with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+e__GetMemoryResVersionNumber::e__GetMemoryResVersionNumber(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+e__GetMemoryResVersionNumber::e__GetMemoryResVersionNumber(const e__GetMemoryResVersionNumber& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @IsobusVTMessageTypes.e_GetMemoryResVersionNumber.");
+enum_value = other_value.enum_value;
+}
+
+e__GetMemoryResVersionNumber& e__GetMemoryResVersionNumber::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @IsobusVTMessageTypes.e_GetMemoryResVersionNumber.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+e__GetMemoryResVersionNumber& e__GetMemoryResVersionNumber::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+e__GetMemoryResVersionNumber& e__GetMemoryResVersionNumber::operator=(const e__GetMemoryResVersionNumber& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusVTMessageTypes.e_GetMemoryResVersionNumber.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean e__GetMemoryResVersionNumber::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_GetMemoryResVersionNumber.");
+return enum_value == other_value;
+}
+
+boolean e__GetMemoryResVersionNumber::operator==(const e__GetMemoryResVersionNumber& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_GetMemoryResVersionNumber.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_GetMemoryResVersionNumber.");
+return enum_value == other_value.enum_value;
+}
+
+boolean e__GetMemoryResVersionNumber::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_GetMemoryResVersionNumber.");
+return enum_value < other_value;
+}
+
+boolean e__GetMemoryResVersionNumber::operator<(const e__GetMemoryResVersionNumber& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_GetMemoryResVersionNumber.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_GetMemoryResVersionNumber.");
+return enum_value < other_value.enum_value;
+}
+
+boolean e__GetMemoryResVersionNumber::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_GetMemoryResVersionNumber.");
+return enum_value > other_value;
+}
+
+boolean e__GetMemoryResVersionNumber::operator>(const e__GetMemoryResVersionNumber& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_GetMemoryResVersionNumber.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_GetMemoryResVersionNumber.");
+return enum_value > other_value.enum_value;
+}
+
+const char *e__GetMemoryResVersionNumber::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case compliantWithHannoverAgritechnica__2001__limitedfeatureSet: return "compliantWithHannoverAgritechnica_2001_limitedfeatureSet";
+case compliantWithFDISVersionISO11783__6__2002__E__Final__Draft: return "compliantWithFDISVersionISO11783_6_2002_E_Final_Draft";
+case compliantWithISVersionISO11783__6__2004__E__First__Edition: return "compliantWithISVersionISO11783_6_2004_E_First_Edition";
+case compliantWithISVersionISO11783__6__2010__E__Second__Edition__version__3: return "compliantWithISVersionISO11783_6_2010_E_Second_Edition_version_3";
+case compliantWithISVersionISO11783__6__2010__E__Second__Edition__version__4: return "compliantWithISVersionISO11783_6_2010_E_Second_Edition_version_4";
+case compliantWithISVersionISO11783__6__2014__E__Third__Edition: return "compliantWithISVersionISO11783_6_2014_E_Third_Edition";
+default: return "<unknown>";
+}
+}
+
+e__GetMemoryResVersionNumber::enum_type e__GetMemoryResVersionNumber::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "compliantWithHannoverAgritechnica_2001_limitedfeatureSet")) return compliantWithHannoverAgritechnica__2001__limitedfeatureSet;
+else if (!strcmp(str_par, "compliantWithFDISVersionISO11783_6_2002_E_Final_Draft")) return compliantWithFDISVersionISO11783__6__2002__E__Final__Draft;
+else if (!strcmp(str_par, "compliantWithISVersionISO11783_6_2004_E_First_Edition")) return compliantWithISVersionISO11783__6__2004__E__First__Edition;
+else if (!strcmp(str_par, "compliantWithISVersionISO11783_6_2010_E_Second_Edition_version_3")) return compliantWithISVersionISO11783__6__2010__E__Second__Edition__version__3;
+else if (!strcmp(str_par, "compliantWithISVersionISO11783_6_2010_E_Second_Edition_version_4")) return compliantWithISVersionISO11783__6__2010__E__Second__Edition__version__4;
+else if (!strcmp(str_par, "compliantWithISVersionISO11783_6_2014_E_Third_Edition")) return compliantWithISVersionISO11783__6__2014__E__Third__Edition;
+else return UNKNOWN_VALUE;
+}
+
+boolean e__GetMemoryResVersionNumber::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 0:
+case 1:
+case 2:
+case 3:
+case 4:
+case 5:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int e__GetMemoryResVersionNumber::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusVTMessageTypes.e_GetMemoryResVersionNumber.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int e__GetMemoryResVersionNumber::enum2int(const e__GetMemoryResVersionNumber& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusVTMessageTypes.e_GetMemoryResVersionNumber.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void e__GetMemoryResVersionNumber::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @IsobusVTMessageTypes.e_GetMemoryResVersionNumber.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+e__GetMemoryResVersionNumber::operator e__GetMemoryResVersionNumber::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @IsobusVTMessageTypes.e_GetMemoryResVersionNumber.");
+return enum_value;
+}
+
+void e__GetMemoryResVersionNumber::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void e__GetMemoryResVersionNumber::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@IsobusVTMessageTypes.e_GetMemoryResVersionNumber");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @IsobusVTMessageTypes.e_GetMemoryResVersionNumber.");
+  }
+}
+
+void e__GetMemoryResVersionNumber::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @IsobusVTMessageTypes.e_GetMemoryResVersionNumber.");
+text_buf.push_int(enum_value);
+}
+
+void e__GetMemoryResVersionNumber::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @IsobusVTMessageTypes.e_GetMemoryResVersionNumber.", enum_value);
+}
+
+void e__GetMemoryResVersionNumber::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void e__GetMemoryResVersionNumber::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int e__GetMemoryResVersionNumber::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*)
+{
+  int decoded_value = 0;
+  int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 3, no_err);
+  if (decoded_length < 0) return decoded_length;
+  if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value;
+  else {
+    if(no_err){
+     return -1;
+    } else {
+    TTCN_EncDec_ErrorContext::error
+      (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name);
+    enum_value = UNKNOWN_VALUE;
+    }
+  }
+  return decoded_length;
+}
+
+int e__GetMemoryResVersionNumber::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const
+{
+  return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 3);
+}
+
+void e__GetMemoryResVersionNumber_template::copy_template(const e__GetMemoryResVersionNumber_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new e__GetMemoryResVersionNumber_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_GetMemoryResVersionNumber.");
+}
+}
+
+e__GetMemoryResVersionNumber_template::e__GetMemoryResVersionNumber_template()
+{
+}
+
+e__GetMemoryResVersionNumber_template::e__GetMemoryResVersionNumber_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+e__GetMemoryResVersionNumber_template::e__GetMemoryResVersionNumber_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!e__GetMemoryResVersionNumber::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @IsobusVTMessageTypes.e_GetMemoryResVersionNumber with unknown numeric value %d.", other_value);
+single_value = (e__GetMemoryResVersionNumber::enum_type)other_value;
+}
+
+e__GetMemoryResVersionNumber_template::e__GetMemoryResVersionNumber_template(e__GetMemoryResVersionNumber::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+e__GetMemoryResVersionNumber_template::e__GetMemoryResVersionNumber_template(const e__GetMemoryResVersionNumber& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == e__GetMemoryResVersionNumber::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @IsobusVTMessageTypes.e_GetMemoryResVersionNumber.");
+single_value = other_value.enum_value;
+}
+
+e__GetMemoryResVersionNumber_template::e__GetMemoryResVersionNumber_template(const OPTIONAL<e__GetMemoryResVersionNumber>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__GetMemoryResVersionNumber::enum_type)(const e__GetMemoryResVersionNumber&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @IsobusVTMessageTypes.e_GetMemoryResVersionNumber from an unbound optional field.");
+}
+}
+
+e__GetMemoryResVersionNumber_template::e__GetMemoryResVersionNumber_template(const e__GetMemoryResVersionNumber_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+e__GetMemoryResVersionNumber_template::~e__GetMemoryResVersionNumber_template()
+{
+clean_up();
+}
+
+boolean e__GetMemoryResVersionNumber_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean e__GetMemoryResVersionNumber_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != e__GetMemoryResVersionNumber::UNBOUND_VALUE;
+}
+
+void e__GetMemoryResVersionNumber_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+e__GetMemoryResVersionNumber_template& e__GetMemoryResVersionNumber_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+e__GetMemoryResVersionNumber_template& e__GetMemoryResVersionNumber_template::operator=(int other_value)
+{
+if (!e__GetMemoryResVersionNumber::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @IsobusVTMessageTypes.e_GetMemoryResVersionNumber.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (e__GetMemoryResVersionNumber::enum_type)other_value;
+return *this;
+}
+
+e__GetMemoryResVersionNumber_template& e__GetMemoryResVersionNumber_template::operator=(e__GetMemoryResVersionNumber::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+e__GetMemoryResVersionNumber_template& e__GetMemoryResVersionNumber_template::operator=(const e__GetMemoryResVersionNumber& other_value)
+{
+if (other_value.enum_value == e__GetMemoryResVersionNumber::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusVTMessageTypes.e_GetMemoryResVersionNumber to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+e__GetMemoryResVersionNumber_template& e__GetMemoryResVersionNumber_template::operator=(const OPTIONAL<e__GetMemoryResVersionNumber>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__GetMemoryResVersionNumber::enum_type)(const e__GetMemoryResVersionNumber&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @IsobusVTMessageTypes.e_GetMemoryResVersionNumber.");
+}
+return *this;
+}
+
+e__GetMemoryResVersionNumber_template& e__GetMemoryResVersionNumber_template::operator=(const e__GetMemoryResVersionNumber_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean e__GetMemoryResVersionNumber_template::match(e__GetMemoryResVersionNumber::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_GetMemoryResVersionNumber.");
+}
+return FALSE;
+}
+
+boolean e__GetMemoryResVersionNumber_template::match(const e__GetMemoryResVersionNumber& other_value, boolean) const
+{
+if (other_value.enum_value == e__GetMemoryResVersionNumber::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @IsobusVTMessageTypes.e_GetMemoryResVersionNumber with an unbound value.");
+return match(other_value.enum_value);
+}
+
+e__GetMemoryResVersionNumber::enum_type e__GetMemoryResVersionNumber_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @IsobusVTMessageTypes.e_GetMemoryResVersionNumber.");
+return single_value;
+}
+
+void e__GetMemoryResVersionNumber_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @IsobusVTMessageTypes.e_GetMemoryResVersionNumber.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new e__GetMemoryResVersionNumber_template[list_length];
+}
+
+e__GetMemoryResVersionNumber_template& e__GetMemoryResVersionNumber_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @IsobusVTMessageTypes.e_GetMemoryResVersionNumber.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @IsobusVTMessageTypes.e_GetMemoryResVersionNumber.");
+return value_list.list_value[list_index];
+}
+
+void e__GetMemoryResVersionNumber_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(e__GetMemoryResVersionNumber::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void e__GetMemoryResVersionNumber_template::log_match(const e__GetMemoryResVersionNumber& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void e__GetMemoryResVersionNumber_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_GetMemoryResVersionNumber.");
+}
+}
+
+void e__GetMemoryResVersionNumber_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (e__GetMemoryResVersionNumber::enum_type)text_buf.pull_int().get_val();
+if (!e__GetMemoryResVersionNumber::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @IsobusVTMessageTypes.e_GetMemoryResVersionNumber.", single_value);
+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 e__GetMemoryResVersionNumber_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @IsobusVTMessageTypes.e_GetMemoryResVersionNumber.");
+}
+}
+
+boolean e__GetMemoryResVersionNumber_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean e__GetMemoryResVersionNumber_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 e__GetMemoryResVersionNumber_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    e__GetMemoryResVersionNumber_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    e__GetMemoryResVersionNumber::enum_type enum_val = e__GetMemoryResVersionNumber::str_to_enum(m_p->get_enumerated());
+    if (!e__GetMemoryResVersionNumber::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @IsobusVTMessageTypes.e_GetMemoryResVersionNumber.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@IsobusVTMessageTypes.e_GetMemoryResVersionNumber");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void e__GetMemoryResVersionNumber_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@IsobusVTMessageTypes.e_GetMemoryResVersionNumber");
+}
+
+e__GetMemoryResStatus::e__GetMemoryResStatus()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+e__GetMemoryResStatus::e__GetMemoryResStatus(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @IsobusVTMessageTypes.e_GetMemoryResStatus with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+e__GetMemoryResStatus::e__GetMemoryResStatus(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+e__GetMemoryResStatus::e__GetMemoryResStatus(const e__GetMemoryResStatus& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @IsobusVTMessageTypes.e_GetMemoryResStatus.");
+enum_value = other_value.enum_value;
+}
+
+e__GetMemoryResStatus& e__GetMemoryResStatus::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @IsobusVTMessageTypes.e_GetMemoryResStatus.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+e__GetMemoryResStatus& e__GetMemoryResStatus::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+e__GetMemoryResStatus& e__GetMemoryResStatus::operator=(const e__GetMemoryResStatus& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusVTMessageTypes.e_GetMemoryResStatus.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean e__GetMemoryResStatus::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_GetMemoryResStatus.");
+return enum_value == other_value;
+}
+
+boolean e__GetMemoryResStatus::operator==(const e__GetMemoryResStatus& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_GetMemoryResStatus.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_GetMemoryResStatus.");
+return enum_value == other_value.enum_value;
+}
+
+boolean e__GetMemoryResStatus::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_GetMemoryResStatus.");
+return enum_value < other_value;
+}
+
+boolean e__GetMemoryResStatus::operator<(const e__GetMemoryResStatus& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_GetMemoryResStatus.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_GetMemoryResStatus.");
+return enum_value < other_value.enum_value;
+}
+
+boolean e__GetMemoryResStatus::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_GetMemoryResStatus.");
+return enum_value > other_value;
+}
+
+boolean e__GetMemoryResStatus::operator>(const e__GetMemoryResStatus& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_GetMemoryResStatus.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_GetMemoryResStatus.");
+return enum_value > other_value.enum_value;
+}
+
+const char *e__GetMemoryResStatus::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case thereCanBeEnoughMemory: return "thereCanBeEnoughMemory";
+case thereIsNotEnoughMemoryAvailable: return "thereIsNotEnoughMemoryAvailable";
+default: return "<unknown>";
+}
+}
+
+e__GetMemoryResStatus::enum_type e__GetMemoryResStatus::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "thereCanBeEnoughMemory")) return thereCanBeEnoughMemory;
+else if (!strcmp(str_par, "thereIsNotEnoughMemoryAvailable")) return thereIsNotEnoughMemoryAvailable;
+else return UNKNOWN_VALUE;
+}
+
+boolean e__GetMemoryResStatus::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 0:
+case 1:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int e__GetMemoryResStatus::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusVTMessageTypes.e_GetMemoryResStatus.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int e__GetMemoryResStatus::enum2int(const e__GetMemoryResStatus& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusVTMessageTypes.e_GetMemoryResStatus.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void e__GetMemoryResStatus::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @IsobusVTMessageTypes.e_GetMemoryResStatus.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+e__GetMemoryResStatus::operator e__GetMemoryResStatus::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @IsobusVTMessageTypes.e_GetMemoryResStatus.");
+return enum_value;
+}
+
+void e__GetMemoryResStatus::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void e__GetMemoryResStatus::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@IsobusVTMessageTypes.e_GetMemoryResStatus");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @IsobusVTMessageTypes.e_GetMemoryResStatus.");
+  }
+}
+
+void e__GetMemoryResStatus::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @IsobusVTMessageTypes.e_GetMemoryResStatus.");
+text_buf.push_int(enum_value);
+}
+
+void e__GetMemoryResStatus::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @IsobusVTMessageTypes.e_GetMemoryResStatus.", enum_value);
+}
+
+void e__GetMemoryResStatus::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void e__GetMemoryResStatus::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int e__GetMemoryResStatus::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*)
+{
+  int decoded_value = 0;
+  int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 2, no_err);
+  if (decoded_length < 0) return decoded_length;
+  if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value;
+  else {
+    if(no_err){
+     return -1;
+    } else {
+    TTCN_EncDec_ErrorContext::error
+      (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name);
+    enum_value = UNKNOWN_VALUE;
+    }
+  }
+  return decoded_length;
+}
+
+int e__GetMemoryResStatus::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const
+{
+  return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 2);
+}
+
+void e__GetMemoryResStatus_template::copy_template(const e__GetMemoryResStatus_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new e__GetMemoryResStatus_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_GetMemoryResStatus.");
+}
+}
+
+e__GetMemoryResStatus_template::e__GetMemoryResStatus_template()
+{
+}
+
+e__GetMemoryResStatus_template::e__GetMemoryResStatus_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+e__GetMemoryResStatus_template::e__GetMemoryResStatus_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!e__GetMemoryResStatus::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @IsobusVTMessageTypes.e_GetMemoryResStatus with unknown numeric value %d.", other_value);
+single_value = (e__GetMemoryResStatus::enum_type)other_value;
+}
+
+e__GetMemoryResStatus_template::e__GetMemoryResStatus_template(e__GetMemoryResStatus::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+e__GetMemoryResStatus_template::e__GetMemoryResStatus_template(const e__GetMemoryResStatus& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == e__GetMemoryResStatus::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @IsobusVTMessageTypes.e_GetMemoryResStatus.");
+single_value = other_value.enum_value;
+}
+
+e__GetMemoryResStatus_template::e__GetMemoryResStatus_template(const OPTIONAL<e__GetMemoryResStatus>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__GetMemoryResStatus::enum_type)(const e__GetMemoryResStatus&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @IsobusVTMessageTypes.e_GetMemoryResStatus from an unbound optional field.");
+}
+}
+
+e__GetMemoryResStatus_template::e__GetMemoryResStatus_template(const e__GetMemoryResStatus_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+e__GetMemoryResStatus_template::~e__GetMemoryResStatus_template()
+{
+clean_up();
+}
+
+boolean e__GetMemoryResStatus_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean e__GetMemoryResStatus_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != e__GetMemoryResStatus::UNBOUND_VALUE;
+}
+
+void e__GetMemoryResStatus_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+e__GetMemoryResStatus_template& e__GetMemoryResStatus_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+e__GetMemoryResStatus_template& e__GetMemoryResStatus_template::operator=(int other_value)
+{
+if (!e__GetMemoryResStatus::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @IsobusVTMessageTypes.e_GetMemoryResStatus.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (e__GetMemoryResStatus::enum_type)other_value;
+return *this;
+}
+
+e__GetMemoryResStatus_template& e__GetMemoryResStatus_template::operator=(e__GetMemoryResStatus::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+e__GetMemoryResStatus_template& e__GetMemoryResStatus_template::operator=(const e__GetMemoryResStatus& other_value)
+{
+if (other_value.enum_value == e__GetMemoryResStatus::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusVTMessageTypes.e_GetMemoryResStatus to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+e__GetMemoryResStatus_template& e__GetMemoryResStatus_template::operator=(const OPTIONAL<e__GetMemoryResStatus>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__GetMemoryResStatus::enum_type)(const e__GetMemoryResStatus&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @IsobusVTMessageTypes.e_GetMemoryResStatus.");
+}
+return *this;
+}
+
+e__GetMemoryResStatus_template& e__GetMemoryResStatus_template::operator=(const e__GetMemoryResStatus_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean e__GetMemoryResStatus_template::match(e__GetMemoryResStatus::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_GetMemoryResStatus.");
+}
+return FALSE;
+}
+
+boolean e__GetMemoryResStatus_template::match(const e__GetMemoryResStatus& other_value, boolean) const
+{
+if (other_value.enum_value == e__GetMemoryResStatus::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @IsobusVTMessageTypes.e_GetMemoryResStatus with an unbound value.");
+return match(other_value.enum_value);
+}
+
+e__GetMemoryResStatus::enum_type e__GetMemoryResStatus_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @IsobusVTMessageTypes.e_GetMemoryResStatus.");
+return single_value;
+}
+
+void e__GetMemoryResStatus_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @IsobusVTMessageTypes.e_GetMemoryResStatus.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new e__GetMemoryResStatus_template[list_length];
+}
+
+e__GetMemoryResStatus_template& e__GetMemoryResStatus_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @IsobusVTMessageTypes.e_GetMemoryResStatus.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @IsobusVTMessageTypes.e_GetMemoryResStatus.");
+return value_list.list_value[list_index];
+}
+
+void e__GetMemoryResStatus_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(e__GetMemoryResStatus::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void e__GetMemoryResStatus_template::log_match(const e__GetMemoryResStatus& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void e__GetMemoryResStatus_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_GetMemoryResStatus.");
+}
+}
+
+void e__GetMemoryResStatus_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (e__GetMemoryResStatus::enum_type)text_buf.pull_int().get_val();
+if (!e__GetMemoryResStatus::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @IsobusVTMessageTypes.e_GetMemoryResStatus.", single_value);
+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 e__GetMemoryResStatus_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @IsobusVTMessageTypes.e_GetMemoryResStatus.");
+}
+}
+
+boolean e__GetMemoryResStatus_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean e__GetMemoryResStatus_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 e__GetMemoryResStatus_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    e__GetMemoryResStatus_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    e__GetMemoryResStatus::enum_type enum_val = e__GetMemoryResStatus::str_to_enum(m_p->get_enumerated());
+    if (!e__GetMemoryResStatus::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @IsobusVTMessageTypes.e_GetMemoryResStatus.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@IsobusVTMessageTypes.e_GetMemoryResStatus");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void e__GetMemoryResStatus_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@IsobusVTMessageTypes.e_GetMemoryResStatus");
+}
+
+GetMemoryRes::GetMemoryRes()
+{
+}
+
+GetMemoryRes::GetMemoryRes(const INTEGER& par_vtfunction,
+    const e__GetMemoryResVersionNumber& par_versionNumber,
+    const e__GetMemoryResStatus& par_status,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_versionNumber(par_versionNumber),
+  field_status(par_status),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+GetMemoryRes::GetMemoryRes(const GetMemoryRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.GetMemoryRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.versionNumber().is_bound()) field_versionNumber = other_value.versionNumber();
+else field_versionNumber.clean_up();
+if (other_value.status().is_bound()) field_status = other_value.status();
+else field_status.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void GetMemoryRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_versionNumber.clean_up();
+field_status.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* GetMemoryRes::get_descriptor() const { return &GetMemoryRes_descr_; }
+GetMemoryRes& GetMemoryRes::operator=(const GetMemoryRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.GetMemoryRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.versionNumber().is_bound()) field_versionNumber = other_value.versionNumber();
+  else field_versionNumber.clean_up();
+  if (other_value.status().is_bound()) field_status = other_value.status();
+  else field_status.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean GetMemoryRes::operator==(const GetMemoryRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_versionNumber==other_value.field_versionNumber
+  && field_status==other_value.field_status
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean GetMemoryRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_versionNumber.is_bound())
+  || (field_status.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean GetMemoryRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_versionNumber.is_value()
+  && field_status.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void GetMemoryRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", versionNumber := ");
+field_versionNumber.log();
+TTCN_Logger::log_event_str(", status := ");
+field_status.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void GetMemoryRes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.GetMemoryRes has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) versionNumber().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) status().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "versionNumber")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          versionNumber().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(), "status")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          status().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.GetMemoryRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.GetMemoryRes");
+  }
+}
+
+void GetMemoryRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (versionNumber().is_bound()) versionNumber().set_implicit_omit();
+if (status().is_bound()) status().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void GetMemoryRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_versionNumber.encode_text(text_buf);
+field_status.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void GetMemoryRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_versionNumber.decode_text(text_buf);
+field_status.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void GetMemoryRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void GetMemoryRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int GetMemoryRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, e__GetMemoryResVersionNumber_descr_.raw->forceomit);
+  decoded_field_length = field_versionNumber.RAW_decode(e__GetMemoryResVersionNumber_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, e__GetMemoryResStatus_descr_.raw->forceomit);
+  decoded_field_length = field_status.RAW_decode(e__GetMemoryResStatus_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, GetMemoryRes_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(GetMemoryRes_reserved4_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, GetMemoryRes_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(GetMemoryRes_reserved5_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, GetMemoryRes_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(GetMemoryRes_reserved6_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, GetMemoryRes_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(GetMemoryRes_reserved7_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, GetMemoryRes_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(GetMemoryRes_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int GetMemoryRes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, e__GetMemoryResVersionNumber_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, e__GetMemoryResStatus_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, GetMemoryRes_reserved4_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, GetMemoryRes_reserved5_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, GetMemoryRes_reserved6_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, GetMemoryRes_reserved7_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, GetMemoryRes_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_versionNumber.RAW_encode(e__GetMemoryResVersionNumber_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_status.RAW_encode(e__GetMemoryResStatus_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved4.RAW_encode(GetMemoryRes_reserved4_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved5.RAW_encode(GetMemoryRes_reserved5_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved6.RAW_encode(GetMemoryRes_reserved6_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved7.RAW_encode(GetMemoryRes_reserved7_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved8.RAW_encode(GetMemoryRes_reserved8_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct GetMemoryRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+e__GetMemoryResVersionNumber_template field_versionNumber;
+e__GetMemoryResStatus_template field_status;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void GetMemoryRes_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_vtfunction = ANY_VALUE;
+single_value->field_versionNumber = ANY_VALUE;
+single_value->field_status = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void GetMemoryRes_template::copy_value(const GetMemoryRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.versionNumber().is_bound()) {
+  single_value->field_versionNumber = other_value.versionNumber();
+} else {
+  single_value->field_versionNumber.clean_up();
+}
+if (other_value.status().is_bound()) {
+  single_value->field_status = other_value.status();
+} else {
+  single_value->field_status.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void GetMemoryRes_template::copy_template(const GetMemoryRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.versionNumber().get_selection()) {
+single_value->field_versionNumber = other_value.versionNumber();
+} else {
+single_value->field_versionNumber.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.status().get_selection()) {
+single_value->field_status = other_value.status();
+} else {
+single_value->field_status.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new GetMemoryRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetMemoryRes.");
+break;
+}
+set_selection(other_value);
+}
+
+GetMemoryRes_template::GetMemoryRes_template()
+{
+}
+
+GetMemoryRes_template::GetMemoryRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+GetMemoryRes_template::GetMemoryRes_template(const GetMemoryRes& other_value)
+{
+copy_value(other_value);
+}
+
+GetMemoryRes_template::GetMemoryRes_template(const OPTIONAL<GetMemoryRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const GetMemoryRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.GetMemoryRes from an unbound optional field.");
+}
+}
+
+GetMemoryRes_template::GetMemoryRes_template(const GetMemoryRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+GetMemoryRes_template::~GetMemoryRes_template()
+{
+clean_up();
+}
+
+GetMemoryRes_template& GetMemoryRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+GetMemoryRes_template& GetMemoryRes_template::operator=(const GetMemoryRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+GetMemoryRes_template& GetMemoryRes_template::operator=(const OPTIONAL<GetMemoryRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const GetMemoryRes&)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 @IsobusVTMessageTypes.GetMemoryRes.");
+}
+return *this;
+}
+
+GetMemoryRes_template& GetMemoryRes_template::operator=(const GetMemoryRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean GetMemoryRes_template::match(const GetMemoryRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.versionNumber().is_bound()) return FALSE;
+if(!single_value->field_versionNumber.match(other_value.versionNumber(), legacy))return FALSE;
+if(!other_value.status().is_bound()) return FALSE;
+if(!single_value->field_status.match(other_value.status(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetMemoryRes.");
+}
+return FALSE;
+}
+
+boolean GetMemoryRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_versionNumber.is_bound()
+
+ ||single_value->field_status.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean GetMemoryRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_versionNumber.is_value()
+ &&single_value->field_status.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void GetMemoryRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+GetMemoryRes GetMemoryRes_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 @IsobusVTMessageTypes.GetMemoryRes.");
+GetMemoryRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_versionNumber.is_bound()) {
+ret_val.versionNumber() = single_value->field_versionNumber.valueof();
+}
+if (single_value->field_status.is_bound()) {
+ret_val.status() = single_value->field_status.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void GetMemoryRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.GetMemoryRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new GetMemoryRes_template[list_length];
+}
+
+GetMemoryRes_template& GetMemoryRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.GetMemoryRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.GetMemoryRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& GetMemoryRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& GetMemoryRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.GetMemoryRes.");
+return single_value->field_vtfunction;
+}
+
+e__GetMemoryResVersionNumber_template& GetMemoryRes_template::versionNumber()
+{
+set_specific();
+return single_value->field_versionNumber;
+}
+
+const e__GetMemoryResVersionNumber_template& GetMemoryRes_template::versionNumber() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field versionNumber of a non-specific template of type @IsobusVTMessageTypes.GetMemoryRes.");
+return single_value->field_versionNumber;
+}
+
+e__GetMemoryResStatus_template& GetMemoryRes_template::status()
+{
+set_specific();
+return single_value->field_status;
+}
+
+const e__GetMemoryResStatus_template& GetMemoryRes_template::status() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field status of a non-specific template of type @IsobusVTMessageTypes.GetMemoryRes.");
+return single_value->field_status;
+}
+
+OCTETSTRING_template& GetMemoryRes_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& GetMemoryRes_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.GetMemoryRes.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& GetMemoryRes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& GetMemoryRes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.GetMemoryRes.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& GetMemoryRes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& GetMemoryRes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.GetMemoryRes.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& GetMemoryRes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& GetMemoryRes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.GetMemoryRes.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& GetMemoryRes_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& GetMemoryRes_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.GetMemoryRes.");
+return single_value->field_reserved8;
+}
+
+int GetMemoryRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetMemoryRes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetMemoryRes 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 @IsobusVTMessageTypes.GetMemoryRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetMemoryRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetMemoryRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetMemoryRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetMemoryRes.");
+  }
+  return 0;
+}
+
+void GetMemoryRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", versionNumber := ");
+single_value->field_versionNumber.log();
+TTCN_Logger::log_event_str(", status := ");
+single_value->field_status.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void GetMemoryRes_template::log_match(const GetMemoryRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_versionNumber.match(match_value.versionNumber(), legacy)){
+TTCN_Logger::log_logmatch_info(".versionNumber");
+single_value->field_versionNumber.log_match(match_value.versionNumber(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_status.match(match_value.status(), legacy)){
+TTCN_Logger::log_logmatch_info(".status");
+single_value->field_status.log_match(match_value.status(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", versionNumber := ");
+single_value->field_versionNumber.log_match(match_value.versionNumber(), legacy);
+TTCN_Logger::log_event_str(", status := ");
+single_value->field_status.log_match(match_value.status(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 GetMemoryRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_versionNumber.encode_text(text_buf);
+single_value->field_status.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.GetMemoryRes.");
+}
+}
+
+void GetMemoryRes_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_vtfunction.decode_text(text_buf);
+single_value->field_versionNumber.decode_text(text_buf);
+single_value->field_status.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 GetMemoryRes_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 @IsobusVTMessageTypes.GetMemoryRes.");
+}
+}
+
+void GetMemoryRes_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: {
+    GetMemoryRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.GetMemoryRes has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) versionNumber().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) status().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "versionNumber")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          versionNumber().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(), "status")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          status().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.GetMemoryRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.GetMemoryRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void GetMemoryRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetMemoryRes");
+single_value->field_versionNumber.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetMemoryRes");
+single_value->field_status.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetMemoryRes");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetMemoryRes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetMemoryRes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetMemoryRes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetMemoryRes");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetMemoryRes");
+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 : "@IsobusVTMessageTypes.GetMemoryRes");
+}
+
+boolean GetMemoryRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean GetMemoryRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+GetNumberOfSoftKeysReq::GetNumberOfSoftKeysReq()
+{
+}
+
+GetNumberOfSoftKeysReq::GetNumberOfSoftKeysReq(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_reserved2,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_reserved2(par_reserved2),
+  field_reserved3(par_reserved3),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+GetNumberOfSoftKeysReq::GetNumberOfSoftKeysReq(const GetNumberOfSoftKeysReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.GetNumberOfSoftKeysReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+else field_reserved2.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void GetNumberOfSoftKeysReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_reserved2.clean_up();
+field_reserved3.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* GetNumberOfSoftKeysReq::get_descriptor() const { return &GetNumberOfSoftKeysReq_descr_; }
+GetNumberOfSoftKeysReq& GetNumberOfSoftKeysReq::operator=(const GetNumberOfSoftKeysReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.GetNumberOfSoftKeysReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+  else field_reserved2.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean GetNumberOfSoftKeysReq::operator==(const GetNumberOfSoftKeysReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_reserved2==other_value.field_reserved2
+  && field_reserved3==other_value.field_reserved3
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean GetNumberOfSoftKeysReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_reserved2.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean GetNumberOfSoftKeysReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_reserved2.is_value()
+  && field_reserved3.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void GetNumberOfSoftKeysReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void GetNumberOfSoftKeysReq::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.GetNumberOfSoftKeysReq has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.GetNumberOfSoftKeysReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.GetNumberOfSoftKeysReq");
+  }
+}
+
+void GetNumberOfSoftKeysReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (reserved2().is_bound()) reserved2().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void GetNumberOfSoftKeysReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_reserved2.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void GetNumberOfSoftKeysReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_reserved2.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void GetNumberOfSoftKeysReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void GetNumberOfSoftKeysReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int GetNumberOfSoftKeysReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, GetNumberOfSoftKeysReq_reserved2_descr_.raw->forceomit);
+  decoded_field_length = field_reserved2.RAW_decode(GetNumberOfSoftKeysReq_reserved2_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, GetNumberOfSoftKeysReq_reserved3_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(GetNumberOfSoftKeysReq_reserved3_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, GetNumberOfSoftKeysReq_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(GetNumberOfSoftKeysReq_reserved4_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, GetNumberOfSoftKeysReq_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(GetNumberOfSoftKeysReq_reserved5_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, GetNumberOfSoftKeysReq_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(GetNumberOfSoftKeysReq_reserved6_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, GetNumberOfSoftKeysReq_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(GetNumberOfSoftKeysReq_reserved7_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, GetNumberOfSoftKeysReq_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(GetNumberOfSoftKeysReq_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int GetNumberOfSoftKeysReq::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, GetNumberOfSoftKeysReq_reserved2_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, GetNumberOfSoftKeysReq_reserved3_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, GetNumberOfSoftKeysReq_reserved4_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, GetNumberOfSoftKeysReq_reserved5_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, GetNumberOfSoftKeysReq_reserved6_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, GetNumberOfSoftKeysReq_reserved7_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, GetNumberOfSoftKeysReq_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved2.RAW_encode(GetNumberOfSoftKeysReq_reserved2_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved3.RAW_encode(GetNumberOfSoftKeysReq_reserved3_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved4.RAW_encode(GetNumberOfSoftKeysReq_reserved4_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved5.RAW_encode(GetNumberOfSoftKeysReq_reserved5_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved6.RAW_encode(GetNumberOfSoftKeysReq_reserved6_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved7.RAW_encode(GetNumberOfSoftKeysReq_reserved7_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved8.RAW_encode(GetNumberOfSoftKeysReq_reserved8_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct GetNumberOfSoftKeysReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+OCTETSTRING_template field_reserved2;
+OCTETSTRING_template field_reserved3;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void GetNumberOfSoftKeysReq_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_vtfunction = ANY_VALUE;
+single_value->field_reserved2 = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void GetNumberOfSoftKeysReq_template::copy_value(const GetNumberOfSoftKeysReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.reserved2().is_bound()) {
+  single_value->field_reserved2 = other_value.reserved2();
+} else {
+  single_value->field_reserved2.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void GetNumberOfSoftKeysReq_template::copy_template(const GetNumberOfSoftKeysReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved2().get_selection()) {
+single_value->field_reserved2 = other_value.reserved2();
+} else {
+single_value->field_reserved2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new GetNumberOfSoftKeysReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetNumberOfSoftKeysReq.");
+break;
+}
+set_selection(other_value);
+}
+
+GetNumberOfSoftKeysReq_template::GetNumberOfSoftKeysReq_template()
+{
+}
+
+GetNumberOfSoftKeysReq_template::GetNumberOfSoftKeysReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+GetNumberOfSoftKeysReq_template::GetNumberOfSoftKeysReq_template(const GetNumberOfSoftKeysReq& other_value)
+{
+copy_value(other_value);
+}
+
+GetNumberOfSoftKeysReq_template::GetNumberOfSoftKeysReq_template(const OPTIONAL<GetNumberOfSoftKeysReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const GetNumberOfSoftKeysReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.GetNumberOfSoftKeysReq from an unbound optional field.");
+}
+}
+
+GetNumberOfSoftKeysReq_template::GetNumberOfSoftKeysReq_template(const GetNumberOfSoftKeysReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+GetNumberOfSoftKeysReq_template::~GetNumberOfSoftKeysReq_template()
+{
+clean_up();
+}
+
+GetNumberOfSoftKeysReq_template& GetNumberOfSoftKeysReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+GetNumberOfSoftKeysReq_template& GetNumberOfSoftKeysReq_template::operator=(const GetNumberOfSoftKeysReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+GetNumberOfSoftKeysReq_template& GetNumberOfSoftKeysReq_template::operator=(const OPTIONAL<GetNumberOfSoftKeysReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const GetNumberOfSoftKeysReq&)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 @IsobusVTMessageTypes.GetNumberOfSoftKeysReq.");
+}
+return *this;
+}
+
+GetNumberOfSoftKeysReq_template& GetNumberOfSoftKeysReq_template::operator=(const GetNumberOfSoftKeysReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean GetNumberOfSoftKeysReq_template::match(const GetNumberOfSoftKeysReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.reserved2().is_bound()) return FALSE;
+if(!single_value->field_reserved2.match(other_value.reserved2(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetNumberOfSoftKeysReq.");
+}
+return FALSE;
+}
+
+boolean GetNumberOfSoftKeysReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_reserved2.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean GetNumberOfSoftKeysReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_reserved2.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void GetNumberOfSoftKeysReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+GetNumberOfSoftKeysReq GetNumberOfSoftKeysReq_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 @IsobusVTMessageTypes.GetNumberOfSoftKeysReq.");
+GetNumberOfSoftKeysReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_reserved2.is_bound()) {
+ret_val.reserved2() = single_value->field_reserved2.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void GetNumberOfSoftKeysReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.GetNumberOfSoftKeysReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new GetNumberOfSoftKeysReq_template[list_length];
+}
+
+GetNumberOfSoftKeysReq_template& GetNumberOfSoftKeysReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.GetNumberOfSoftKeysReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.GetNumberOfSoftKeysReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& GetNumberOfSoftKeysReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& GetNumberOfSoftKeysReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.GetNumberOfSoftKeysReq.");
+return single_value->field_vtfunction;
+}
+
+OCTETSTRING_template& GetNumberOfSoftKeysReq_template::reserved2()
+{
+set_specific();
+return single_value->field_reserved2;
+}
+
+const OCTETSTRING_template& GetNumberOfSoftKeysReq_template::reserved2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved2 of a non-specific template of type @IsobusVTMessageTypes.GetNumberOfSoftKeysReq.");
+return single_value->field_reserved2;
+}
+
+OCTETSTRING_template& GetNumberOfSoftKeysReq_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const OCTETSTRING_template& GetNumberOfSoftKeysReq_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.GetNumberOfSoftKeysReq.");
+return single_value->field_reserved3;
+}
+
+OCTETSTRING_template& GetNumberOfSoftKeysReq_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& GetNumberOfSoftKeysReq_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.GetNumberOfSoftKeysReq.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& GetNumberOfSoftKeysReq_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& GetNumberOfSoftKeysReq_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.GetNumberOfSoftKeysReq.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& GetNumberOfSoftKeysReq_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& GetNumberOfSoftKeysReq_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.GetNumberOfSoftKeysReq.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& GetNumberOfSoftKeysReq_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& GetNumberOfSoftKeysReq_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.GetNumberOfSoftKeysReq.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& GetNumberOfSoftKeysReq_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& GetNumberOfSoftKeysReq_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.GetNumberOfSoftKeysReq.");
+return single_value->field_reserved8;
+}
+
+int GetNumberOfSoftKeysReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetNumberOfSoftKeysReq which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetNumberOfSoftKeysReq 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 @IsobusVTMessageTypes.GetNumberOfSoftKeysReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetNumberOfSoftKeysReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetNumberOfSoftKeysReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetNumberOfSoftKeysReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetNumberOfSoftKeysReq.");
+  }
+  return 0;
+}
+
+void GetNumberOfSoftKeysReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void GetNumberOfSoftKeysReq_template::log_match(const GetNumberOfSoftKeysReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved2.match(match_value.reserved2(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved2");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 GetNumberOfSoftKeysReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_reserved2.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.GetNumberOfSoftKeysReq.");
+}
+}
+
+void GetNumberOfSoftKeysReq_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_vtfunction.decode_text(text_buf);
+single_value->field_reserved2.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 GetNumberOfSoftKeysReq_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 @IsobusVTMessageTypes.GetNumberOfSoftKeysReq.");
+}
+}
+
+void GetNumberOfSoftKeysReq_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: {
+    GetNumberOfSoftKeysReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.GetNumberOfSoftKeysReq has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.GetNumberOfSoftKeysReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.GetNumberOfSoftKeysReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void GetNumberOfSoftKeysReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetNumberOfSoftKeysReq");
+single_value->field_reserved2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetNumberOfSoftKeysReq");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetNumberOfSoftKeysReq");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetNumberOfSoftKeysReq");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetNumberOfSoftKeysReq");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetNumberOfSoftKeysReq");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetNumberOfSoftKeysReq");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetNumberOfSoftKeysReq");
+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 : "@IsobusVTMessageTypes.GetNumberOfSoftKeysReq");
+}
+
+boolean GetNumberOfSoftKeysReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean GetNumberOfSoftKeysReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+GetNumberOfSoftKeysRes::GetNumberOfSoftKeysRes()
+{
+}
+
+GetNumberOfSoftKeysRes::GetNumberOfSoftKeysRes(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_navigationSoftKeys__,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_x__dots,
+    const OCTETSTRING& par_y__dots,
+    const OCTETSTRING& par_numberOfVirtualSoftKeys__,
+    const OCTETSTRING& par_numberOfPhysicalSoftKeys__)
+  :   field_vtfunction(par_vtfunction),
+  field_navigationSoftKeys__(par_navigationSoftKeys__),
+  field_reserved3(par_reserved3),
+  field_reserved4(par_reserved4),
+  field_x__dots(par_x__dots),
+  field_y__dots(par_y__dots),
+  field_numberOfVirtualSoftKeys__(par_numberOfVirtualSoftKeys__),
+  field_numberOfPhysicalSoftKeys__(par_numberOfPhysicalSoftKeys__)
+{
+}
+
+GetNumberOfSoftKeysRes::GetNumberOfSoftKeysRes(const GetNumberOfSoftKeysRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.GetNumberOfSoftKeysRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.navigationSoftKeys__().is_bound()) field_navigationSoftKeys__ = other_value.navigationSoftKeys__();
+else field_navigationSoftKeys__.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.x__dots().is_bound()) field_x__dots = other_value.x__dots();
+else field_x__dots.clean_up();
+if (other_value.y__dots().is_bound()) field_y__dots = other_value.y__dots();
+else field_y__dots.clean_up();
+if (other_value.numberOfVirtualSoftKeys__().is_bound()) field_numberOfVirtualSoftKeys__ = other_value.numberOfVirtualSoftKeys__();
+else field_numberOfVirtualSoftKeys__.clean_up();
+if (other_value.numberOfPhysicalSoftKeys__().is_bound()) field_numberOfPhysicalSoftKeys__ = other_value.numberOfPhysicalSoftKeys__();
+else field_numberOfPhysicalSoftKeys__.clean_up();
+}
+
+void GetNumberOfSoftKeysRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_navigationSoftKeys__.clean_up();
+field_reserved3.clean_up();
+field_reserved4.clean_up();
+field_x__dots.clean_up();
+field_y__dots.clean_up();
+field_numberOfVirtualSoftKeys__.clean_up();
+field_numberOfPhysicalSoftKeys__.clean_up();
+}
+
+const TTCN_Typedescriptor_t* GetNumberOfSoftKeysRes::get_descriptor() const { return &GetNumberOfSoftKeysRes_descr_; }
+GetNumberOfSoftKeysRes& GetNumberOfSoftKeysRes::operator=(const GetNumberOfSoftKeysRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.GetNumberOfSoftKeysRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.navigationSoftKeys__().is_bound()) field_navigationSoftKeys__ = other_value.navigationSoftKeys__();
+  else field_navigationSoftKeys__.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.x__dots().is_bound()) field_x__dots = other_value.x__dots();
+  else field_x__dots.clean_up();
+  if (other_value.y__dots().is_bound()) field_y__dots = other_value.y__dots();
+  else field_y__dots.clean_up();
+  if (other_value.numberOfVirtualSoftKeys__().is_bound()) field_numberOfVirtualSoftKeys__ = other_value.numberOfVirtualSoftKeys__();
+  else field_numberOfVirtualSoftKeys__.clean_up();
+  if (other_value.numberOfPhysicalSoftKeys__().is_bound()) field_numberOfPhysicalSoftKeys__ = other_value.numberOfPhysicalSoftKeys__();
+  else field_numberOfPhysicalSoftKeys__.clean_up();
+}
+return *this;
+}
+
+boolean GetNumberOfSoftKeysRes::operator==(const GetNumberOfSoftKeysRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_navigationSoftKeys__==other_value.field_navigationSoftKeys__
+  && field_reserved3==other_value.field_reserved3
+  && field_reserved4==other_value.field_reserved4
+  && field_x__dots==other_value.field_x__dots
+  && field_y__dots==other_value.field_y__dots
+  && field_numberOfVirtualSoftKeys__==other_value.field_numberOfVirtualSoftKeys__
+  && field_numberOfPhysicalSoftKeys__==other_value.field_numberOfPhysicalSoftKeys__;
+}
+
+boolean GetNumberOfSoftKeysRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_navigationSoftKeys__.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_x__dots.is_bound())
+  || (field_y__dots.is_bound())
+  || (field_numberOfVirtualSoftKeys__.is_bound())
+  || (field_numberOfPhysicalSoftKeys__.is_bound());
+}
+boolean GetNumberOfSoftKeysRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_navigationSoftKeys__.is_value()
+  && field_reserved3.is_value()
+  && field_reserved4.is_value()
+  && field_x__dots.is_value()
+  && field_y__dots.is_value()
+  && field_numberOfVirtualSoftKeys__.is_value()
+  && field_numberOfPhysicalSoftKeys__.is_value();
+}
+void GetNumberOfSoftKeysRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", navigationSoftKeys_ := ");
+field_navigationSoftKeys__.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", x_dots := ");
+field_x__dots.log();
+TTCN_Logger::log_event_str(", y_dots := ");
+field_y__dots.log();
+TTCN_Logger::log_event_str(", numberOfVirtualSoftKeys_ := ");
+field_numberOfVirtualSoftKeys__.log();
+TTCN_Logger::log_event_str(", numberOfPhysicalSoftKeys_ := ");
+field_numberOfPhysicalSoftKeys__.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void GetNumberOfSoftKeysRes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.GetNumberOfSoftKeysRes has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) navigationSoftKeys__().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) x__dots().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) y__dots().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) numberOfVirtualSoftKeys__().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) numberOfPhysicalSoftKeys__().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "navigationSoftKeys_")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          navigationSoftKeys__().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "x_dots")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          x__dots().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(), "y_dots")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          y__dots().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(), "numberOfVirtualSoftKeys_")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          numberOfVirtualSoftKeys__().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(), "numberOfPhysicalSoftKeys_")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          numberOfPhysicalSoftKeys__().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 @IsobusVTMessageTypes.GetNumberOfSoftKeysRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.GetNumberOfSoftKeysRes");
+  }
+}
+
+void GetNumberOfSoftKeysRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (navigationSoftKeys__().is_bound()) navigationSoftKeys__().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (x__dots().is_bound()) x__dots().set_implicit_omit();
+if (y__dots().is_bound()) y__dots().set_implicit_omit();
+if (numberOfVirtualSoftKeys__().is_bound()) numberOfVirtualSoftKeys__().set_implicit_omit();
+if (numberOfPhysicalSoftKeys__().is_bound()) numberOfPhysicalSoftKeys__().set_implicit_omit();
+}
+
+void GetNumberOfSoftKeysRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_navigationSoftKeys__.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_x__dots.encode_text(text_buf);
+field_y__dots.encode_text(text_buf);
+field_numberOfVirtualSoftKeys__.encode_text(text_buf);
+field_numberOfPhysicalSoftKeys__.encode_text(text_buf);
+}
+
+void GetNumberOfSoftKeysRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_navigationSoftKeys__.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_x__dots.decode_text(text_buf);
+field_y__dots.decode_text(text_buf);
+field_numberOfVirtualSoftKeys__.decode_text(text_buf);
+field_numberOfPhysicalSoftKeys__.decode_text(text_buf);
+}
+
+void GetNumberOfSoftKeysRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void GetNumberOfSoftKeysRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int GetNumberOfSoftKeysRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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::OCT1_descr_.raw->forceomit);
+  decoded_field_length = field_navigationSoftKeys__.RAW_decode(General__Types::OCT1_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, GetNumberOfSoftKeysRes_reserved3_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(GetNumberOfSoftKeysRes_reserved3_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, GetNumberOfSoftKeysRes_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(GetNumberOfSoftKeysRes_reserved4_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::OCT1_descr_.raw->forceomit);
+  decoded_field_length = field_x__dots.RAW_decode(General__Types::OCT1_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::OCT1_descr_.raw->forceomit);
+  decoded_field_length = field_y__dots.RAW_decode(General__Types::OCT1_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::OCT1_descr_.raw->forceomit);
+  decoded_field_length = field_numberOfVirtualSoftKeys__.RAW_decode(General__Types::OCT1_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_numberOfPhysicalSoftKeys__.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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int GetNumberOfSoftKeysRes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, General__Types::OCT1_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, GetNumberOfSoftKeysRes_reserved3_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, GetNumberOfSoftKeysRes_reserved4_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, General__Types::OCT1_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, General__Types::OCT1_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, General__Types::OCT1_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, General__Types::OCT1_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_navigationSoftKeys__.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved3.RAW_encode(GetNumberOfSoftKeysRes_reserved3_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved4.RAW_encode(GetNumberOfSoftKeysRes_reserved4_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_x__dots.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_y__dots.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_numberOfVirtualSoftKeys__.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_numberOfPhysicalSoftKeys__.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct GetNumberOfSoftKeysRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+OCTETSTRING_template field_navigationSoftKeys__;
+OCTETSTRING_template field_reserved3;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_x__dots;
+OCTETSTRING_template field_y__dots;
+OCTETSTRING_template field_numberOfVirtualSoftKeys__;
+OCTETSTRING_template field_numberOfPhysicalSoftKeys__;
+};
+
+void GetNumberOfSoftKeysRes_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_vtfunction = ANY_VALUE;
+single_value->field_navigationSoftKeys__ = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_x__dots = ANY_VALUE;
+single_value->field_y__dots = ANY_VALUE;
+single_value->field_numberOfVirtualSoftKeys__ = ANY_VALUE;
+single_value->field_numberOfPhysicalSoftKeys__ = ANY_VALUE;
+}
+}
+}
+
+void GetNumberOfSoftKeysRes_template::copy_value(const GetNumberOfSoftKeysRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.navigationSoftKeys__().is_bound()) {
+  single_value->field_navigationSoftKeys__ = other_value.navigationSoftKeys__();
+} else {
+  single_value->field_navigationSoftKeys__.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.x__dots().is_bound()) {
+  single_value->field_x__dots = other_value.x__dots();
+} else {
+  single_value->field_x__dots.clean_up();
+}
+if (other_value.y__dots().is_bound()) {
+  single_value->field_y__dots = other_value.y__dots();
+} else {
+  single_value->field_y__dots.clean_up();
+}
+if (other_value.numberOfVirtualSoftKeys__().is_bound()) {
+  single_value->field_numberOfVirtualSoftKeys__ = other_value.numberOfVirtualSoftKeys__();
+} else {
+  single_value->field_numberOfVirtualSoftKeys__.clean_up();
+}
+if (other_value.numberOfPhysicalSoftKeys__().is_bound()) {
+  single_value->field_numberOfPhysicalSoftKeys__ = other_value.numberOfPhysicalSoftKeys__();
+} else {
+  single_value->field_numberOfPhysicalSoftKeys__.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void GetNumberOfSoftKeysRes_template::copy_template(const GetNumberOfSoftKeysRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.navigationSoftKeys__().get_selection()) {
+single_value->field_navigationSoftKeys__ = other_value.navigationSoftKeys__();
+} else {
+single_value->field_navigationSoftKeys__.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.x__dots().get_selection()) {
+single_value->field_x__dots = other_value.x__dots();
+} else {
+single_value->field_x__dots.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.y__dots().get_selection()) {
+single_value->field_y__dots = other_value.y__dots();
+} else {
+single_value->field_y__dots.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.numberOfVirtualSoftKeys__().get_selection()) {
+single_value->field_numberOfVirtualSoftKeys__ = other_value.numberOfVirtualSoftKeys__();
+} else {
+single_value->field_numberOfVirtualSoftKeys__.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.numberOfPhysicalSoftKeys__().get_selection()) {
+single_value->field_numberOfPhysicalSoftKeys__ = other_value.numberOfPhysicalSoftKeys__();
+} else {
+single_value->field_numberOfPhysicalSoftKeys__.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new GetNumberOfSoftKeysRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetNumberOfSoftKeysRes.");
+break;
+}
+set_selection(other_value);
+}
+
+GetNumberOfSoftKeysRes_template::GetNumberOfSoftKeysRes_template()
+{
+}
+
+GetNumberOfSoftKeysRes_template::GetNumberOfSoftKeysRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+GetNumberOfSoftKeysRes_template::GetNumberOfSoftKeysRes_template(const GetNumberOfSoftKeysRes& other_value)
+{
+copy_value(other_value);
+}
+
+GetNumberOfSoftKeysRes_template::GetNumberOfSoftKeysRes_template(const OPTIONAL<GetNumberOfSoftKeysRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const GetNumberOfSoftKeysRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.GetNumberOfSoftKeysRes from an unbound optional field.");
+}
+}
+
+GetNumberOfSoftKeysRes_template::GetNumberOfSoftKeysRes_template(const GetNumberOfSoftKeysRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+GetNumberOfSoftKeysRes_template::~GetNumberOfSoftKeysRes_template()
+{
+clean_up();
+}
+
+GetNumberOfSoftKeysRes_template& GetNumberOfSoftKeysRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+GetNumberOfSoftKeysRes_template& GetNumberOfSoftKeysRes_template::operator=(const GetNumberOfSoftKeysRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+GetNumberOfSoftKeysRes_template& GetNumberOfSoftKeysRes_template::operator=(const OPTIONAL<GetNumberOfSoftKeysRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const GetNumberOfSoftKeysRes&)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 @IsobusVTMessageTypes.GetNumberOfSoftKeysRes.");
+}
+return *this;
+}
+
+GetNumberOfSoftKeysRes_template& GetNumberOfSoftKeysRes_template::operator=(const GetNumberOfSoftKeysRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean GetNumberOfSoftKeysRes_template::match(const GetNumberOfSoftKeysRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.navigationSoftKeys__().is_bound()) return FALSE;
+if(!single_value->field_navigationSoftKeys__.match(other_value.navigationSoftKeys__(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.x__dots().is_bound()) return FALSE;
+if(!single_value->field_x__dots.match(other_value.x__dots(), legacy))return FALSE;
+if(!other_value.y__dots().is_bound()) return FALSE;
+if(!single_value->field_y__dots.match(other_value.y__dots(), legacy))return FALSE;
+if(!other_value.numberOfVirtualSoftKeys__().is_bound()) return FALSE;
+if(!single_value->field_numberOfVirtualSoftKeys__.match(other_value.numberOfVirtualSoftKeys__(), legacy))return FALSE;
+if(!other_value.numberOfPhysicalSoftKeys__().is_bound()) return FALSE;
+if(!single_value->field_numberOfPhysicalSoftKeys__.match(other_value.numberOfPhysicalSoftKeys__(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetNumberOfSoftKeysRes.");
+}
+return FALSE;
+}
+
+boolean GetNumberOfSoftKeysRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_navigationSoftKeys__.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_x__dots.is_bound()
+
+ ||single_value->field_y__dots.is_bound()
+
+ ||single_value->field_numberOfVirtualSoftKeys__.is_bound()
+
+ ||single_value->field_numberOfPhysicalSoftKeys__.is_bound()
+;
+}
+
+boolean GetNumberOfSoftKeysRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_navigationSoftKeys__.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_x__dots.is_value()
+ &&single_value->field_y__dots.is_value()
+ &&single_value->field_numberOfVirtualSoftKeys__.is_value()
+ &&single_value->field_numberOfPhysicalSoftKeys__.is_value();
+}
+
+void GetNumberOfSoftKeysRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+GetNumberOfSoftKeysRes GetNumberOfSoftKeysRes_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 @IsobusVTMessageTypes.GetNumberOfSoftKeysRes.");
+GetNumberOfSoftKeysRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_navigationSoftKeys__.is_bound()) {
+ret_val.navigationSoftKeys__() = single_value->field_navigationSoftKeys__.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_x__dots.is_bound()) {
+ret_val.x__dots() = single_value->field_x__dots.valueof();
+}
+if (single_value->field_y__dots.is_bound()) {
+ret_val.y__dots() = single_value->field_y__dots.valueof();
+}
+if (single_value->field_numberOfVirtualSoftKeys__.is_bound()) {
+ret_val.numberOfVirtualSoftKeys__() = single_value->field_numberOfVirtualSoftKeys__.valueof();
+}
+if (single_value->field_numberOfPhysicalSoftKeys__.is_bound()) {
+ret_val.numberOfPhysicalSoftKeys__() = single_value->field_numberOfPhysicalSoftKeys__.valueof();
+}
+return ret_val;
+}
+
+void GetNumberOfSoftKeysRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.GetNumberOfSoftKeysRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new GetNumberOfSoftKeysRes_template[list_length];
+}
+
+GetNumberOfSoftKeysRes_template& GetNumberOfSoftKeysRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.GetNumberOfSoftKeysRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.GetNumberOfSoftKeysRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& GetNumberOfSoftKeysRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& GetNumberOfSoftKeysRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.GetNumberOfSoftKeysRes.");
+return single_value->field_vtfunction;
+}
+
+OCTETSTRING_template& GetNumberOfSoftKeysRes_template::navigationSoftKeys__()
+{
+set_specific();
+return single_value->field_navigationSoftKeys__;
+}
+
+const OCTETSTRING_template& GetNumberOfSoftKeysRes_template::navigationSoftKeys__() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field navigationSoftKeys_ of a non-specific template of type @IsobusVTMessageTypes.GetNumberOfSoftKeysRes.");
+return single_value->field_navigationSoftKeys__;
+}
+
+OCTETSTRING_template& GetNumberOfSoftKeysRes_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const OCTETSTRING_template& GetNumberOfSoftKeysRes_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.GetNumberOfSoftKeysRes.");
+return single_value->field_reserved3;
+}
+
+OCTETSTRING_template& GetNumberOfSoftKeysRes_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& GetNumberOfSoftKeysRes_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.GetNumberOfSoftKeysRes.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& GetNumberOfSoftKeysRes_template::x__dots()
+{
+set_specific();
+return single_value->field_x__dots;
+}
+
+const OCTETSTRING_template& GetNumberOfSoftKeysRes_template::x__dots() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field x_dots of a non-specific template of type @IsobusVTMessageTypes.GetNumberOfSoftKeysRes.");
+return single_value->field_x__dots;
+}
+
+OCTETSTRING_template& GetNumberOfSoftKeysRes_template::y__dots()
+{
+set_specific();
+return single_value->field_y__dots;
+}
+
+const OCTETSTRING_template& GetNumberOfSoftKeysRes_template::y__dots() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field y_dots of a non-specific template of type @IsobusVTMessageTypes.GetNumberOfSoftKeysRes.");
+return single_value->field_y__dots;
+}
+
+OCTETSTRING_template& GetNumberOfSoftKeysRes_template::numberOfVirtualSoftKeys__()
+{
+set_specific();
+return single_value->field_numberOfVirtualSoftKeys__;
+}
+
+const OCTETSTRING_template& GetNumberOfSoftKeysRes_template::numberOfVirtualSoftKeys__() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field numberOfVirtualSoftKeys_ of a non-specific template of type @IsobusVTMessageTypes.GetNumberOfSoftKeysRes.");
+return single_value->field_numberOfVirtualSoftKeys__;
+}
+
+OCTETSTRING_template& GetNumberOfSoftKeysRes_template::numberOfPhysicalSoftKeys__()
+{
+set_specific();
+return single_value->field_numberOfPhysicalSoftKeys__;
+}
+
+const OCTETSTRING_template& GetNumberOfSoftKeysRes_template::numberOfPhysicalSoftKeys__() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field numberOfPhysicalSoftKeys_ of a non-specific template of type @IsobusVTMessageTypes.GetNumberOfSoftKeysRes.");
+return single_value->field_numberOfPhysicalSoftKeys__;
+}
+
+int GetNumberOfSoftKeysRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetNumberOfSoftKeysRes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetNumberOfSoftKeysRes 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 @IsobusVTMessageTypes.GetNumberOfSoftKeysRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetNumberOfSoftKeysRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetNumberOfSoftKeysRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetNumberOfSoftKeysRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetNumberOfSoftKeysRes.");
+  }
+  return 0;
+}
+
+void GetNumberOfSoftKeysRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", navigationSoftKeys_ := ");
+single_value->field_navigationSoftKeys__.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", x_dots := ");
+single_value->field_x__dots.log();
+TTCN_Logger::log_event_str(", y_dots := ");
+single_value->field_y__dots.log();
+TTCN_Logger::log_event_str(", numberOfVirtualSoftKeys_ := ");
+single_value->field_numberOfVirtualSoftKeys__.log();
+TTCN_Logger::log_event_str(", numberOfPhysicalSoftKeys_ := ");
+single_value->field_numberOfPhysicalSoftKeys__.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void GetNumberOfSoftKeysRes_template::log_match(const GetNumberOfSoftKeysRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_navigationSoftKeys__.match(match_value.navigationSoftKeys__(), legacy)){
+TTCN_Logger::log_logmatch_info(".navigationSoftKeys_");
+single_value->field_navigationSoftKeys__.log_match(match_value.navigationSoftKeys__(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_x__dots.match(match_value.x__dots(), legacy)){
+TTCN_Logger::log_logmatch_info(".x_dots");
+single_value->field_x__dots.log_match(match_value.x__dots(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_y__dots.match(match_value.y__dots(), legacy)){
+TTCN_Logger::log_logmatch_info(".y_dots");
+single_value->field_y__dots.log_match(match_value.y__dots(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_numberOfVirtualSoftKeys__.match(match_value.numberOfVirtualSoftKeys__(), legacy)){
+TTCN_Logger::log_logmatch_info(".numberOfVirtualSoftKeys_");
+single_value->field_numberOfVirtualSoftKeys__.log_match(match_value.numberOfVirtualSoftKeys__(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_numberOfPhysicalSoftKeys__.match(match_value.numberOfPhysicalSoftKeys__(), legacy)){
+TTCN_Logger::log_logmatch_info(".numberOfPhysicalSoftKeys_");
+single_value->field_numberOfPhysicalSoftKeys__.log_match(match_value.numberOfPhysicalSoftKeys__(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", navigationSoftKeys_ := ");
+single_value->field_navigationSoftKeys__.log_match(match_value.navigationSoftKeys__(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", x_dots := ");
+single_value->field_x__dots.log_match(match_value.x__dots(), legacy);
+TTCN_Logger::log_event_str(", y_dots := ");
+single_value->field_y__dots.log_match(match_value.y__dots(), legacy);
+TTCN_Logger::log_event_str(", numberOfVirtualSoftKeys_ := ");
+single_value->field_numberOfVirtualSoftKeys__.log_match(match_value.numberOfVirtualSoftKeys__(), legacy);
+TTCN_Logger::log_event_str(", numberOfPhysicalSoftKeys_ := ");
+single_value->field_numberOfPhysicalSoftKeys__.log_match(match_value.numberOfPhysicalSoftKeys__(), 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 GetNumberOfSoftKeysRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_navigationSoftKeys__.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_x__dots.encode_text(text_buf);
+single_value->field_y__dots.encode_text(text_buf);
+single_value->field_numberOfVirtualSoftKeys__.encode_text(text_buf);
+single_value->field_numberOfPhysicalSoftKeys__.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 @IsobusVTMessageTypes.GetNumberOfSoftKeysRes.");
+}
+}
+
+void GetNumberOfSoftKeysRes_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_vtfunction.decode_text(text_buf);
+single_value->field_navigationSoftKeys__.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_x__dots.decode_text(text_buf);
+single_value->field_y__dots.decode_text(text_buf);
+single_value->field_numberOfVirtualSoftKeys__.decode_text(text_buf);
+single_value->field_numberOfPhysicalSoftKeys__.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 GetNumberOfSoftKeysRes_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 @IsobusVTMessageTypes.GetNumberOfSoftKeysRes.");
+}
+}
+
+void GetNumberOfSoftKeysRes_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: {
+    GetNumberOfSoftKeysRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.GetNumberOfSoftKeysRes has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) navigationSoftKeys__().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) x__dots().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) y__dots().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) numberOfVirtualSoftKeys__().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) numberOfPhysicalSoftKeys__().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "navigationSoftKeys_")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          navigationSoftKeys__().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "x_dots")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          x__dots().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(), "y_dots")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          y__dots().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(), "numberOfVirtualSoftKeys_")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          numberOfVirtualSoftKeys__().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(), "numberOfPhysicalSoftKeys_")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          numberOfPhysicalSoftKeys__().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 @IsobusVTMessageTypes.GetNumberOfSoftKeysRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.GetNumberOfSoftKeysRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void GetNumberOfSoftKeysRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetNumberOfSoftKeysRes");
+single_value->field_navigationSoftKeys__.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetNumberOfSoftKeysRes");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetNumberOfSoftKeysRes");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetNumberOfSoftKeysRes");
+single_value->field_x__dots.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetNumberOfSoftKeysRes");
+single_value->field_y__dots.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetNumberOfSoftKeysRes");
+single_value->field_numberOfVirtualSoftKeys__.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetNumberOfSoftKeysRes");
+single_value->field_numberOfPhysicalSoftKeys__.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetNumberOfSoftKeysRes");
+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 : "@IsobusVTMessageTypes.GetNumberOfSoftKeysRes");
+}
+
+boolean GetNumberOfSoftKeysRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean GetNumberOfSoftKeysRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+GetTextFontDataReq::GetTextFontDataReq()
+{
+}
+
+GetTextFontDataReq::GetTextFontDataReq(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_reserved2,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_reserved2(par_reserved2),
+  field_reserved3(par_reserved3),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+GetTextFontDataReq::GetTextFontDataReq(const GetTextFontDataReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.GetTextFontDataReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+else field_reserved2.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void GetTextFontDataReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_reserved2.clean_up();
+field_reserved3.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* GetTextFontDataReq::get_descriptor() const { return &GetTextFontDataReq_descr_; }
+GetTextFontDataReq& GetTextFontDataReq::operator=(const GetTextFontDataReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.GetTextFontDataReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+  else field_reserved2.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean GetTextFontDataReq::operator==(const GetTextFontDataReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_reserved2==other_value.field_reserved2
+  && field_reserved3==other_value.field_reserved3
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean GetTextFontDataReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_reserved2.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean GetTextFontDataReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_reserved2.is_value()
+  && field_reserved3.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void GetTextFontDataReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void GetTextFontDataReq::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.GetTextFontDataReq has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.GetTextFontDataReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.GetTextFontDataReq");
+  }
+}
+
+void GetTextFontDataReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (reserved2().is_bound()) reserved2().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void GetTextFontDataReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_reserved2.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void GetTextFontDataReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_reserved2.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void GetTextFontDataReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void GetTextFontDataReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int GetTextFontDataReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, GetTextFontDataReq_reserved2_descr_.raw->forceomit);
+  decoded_field_length = field_reserved2.RAW_decode(GetTextFontDataReq_reserved2_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, GetTextFontDataReq_reserved3_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(GetTextFontDataReq_reserved3_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, GetTextFontDataReq_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(GetTextFontDataReq_reserved4_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, GetTextFontDataReq_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(GetTextFontDataReq_reserved5_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, GetTextFontDataReq_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(GetTextFontDataReq_reserved6_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, GetTextFontDataReq_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(GetTextFontDataReq_reserved7_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, GetTextFontDataReq_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(GetTextFontDataReq_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int GetTextFontDataReq::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, GetTextFontDataReq_reserved2_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, GetTextFontDataReq_reserved3_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, GetTextFontDataReq_reserved4_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, GetTextFontDataReq_reserved5_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, GetTextFontDataReq_reserved6_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, GetTextFontDataReq_reserved7_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, GetTextFontDataReq_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved2.RAW_encode(GetTextFontDataReq_reserved2_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved3.RAW_encode(GetTextFontDataReq_reserved3_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved4.RAW_encode(GetTextFontDataReq_reserved4_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved5.RAW_encode(GetTextFontDataReq_reserved5_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved6.RAW_encode(GetTextFontDataReq_reserved6_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved7.RAW_encode(GetTextFontDataReq_reserved7_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved8.RAW_encode(GetTextFontDataReq_reserved8_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct GetTextFontDataReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+OCTETSTRING_template field_reserved2;
+OCTETSTRING_template field_reserved3;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void GetTextFontDataReq_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_vtfunction = ANY_VALUE;
+single_value->field_reserved2 = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void GetTextFontDataReq_template::copy_value(const GetTextFontDataReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.reserved2().is_bound()) {
+  single_value->field_reserved2 = other_value.reserved2();
+} else {
+  single_value->field_reserved2.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void GetTextFontDataReq_template::copy_template(const GetTextFontDataReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved2().get_selection()) {
+single_value->field_reserved2 = other_value.reserved2();
+} else {
+single_value->field_reserved2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new GetTextFontDataReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetTextFontDataReq.");
+break;
+}
+set_selection(other_value);
+}
+
+GetTextFontDataReq_template::GetTextFontDataReq_template()
+{
+}
+
+GetTextFontDataReq_template::GetTextFontDataReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+GetTextFontDataReq_template::GetTextFontDataReq_template(const GetTextFontDataReq& other_value)
+{
+copy_value(other_value);
+}
+
+GetTextFontDataReq_template::GetTextFontDataReq_template(const OPTIONAL<GetTextFontDataReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const GetTextFontDataReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.GetTextFontDataReq from an unbound optional field.");
+}
+}
+
+GetTextFontDataReq_template::GetTextFontDataReq_template(const GetTextFontDataReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+GetTextFontDataReq_template::~GetTextFontDataReq_template()
+{
+clean_up();
+}
+
+GetTextFontDataReq_template& GetTextFontDataReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+GetTextFontDataReq_template& GetTextFontDataReq_template::operator=(const GetTextFontDataReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+GetTextFontDataReq_template& GetTextFontDataReq_template::operator=(const OPTIONAL<GetTextFontDataReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const GetTextFontDataReq&)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 @IsobusVTMessageTypes.GetTextFontDataReq.");
+}
+return *this;
+}
+
+GetTextFontDataReq_template& GetTextFontDataReq_template::operator=(const GetTextFontDataReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean GetTextFontDataReq_template::match(const GetTextFontDataReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.reserved2().is_bound()) return FALSE;
+if(!single_value->field_reserved2.match(other_value.reserved2(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetTextFontDataReq.");
+}
+return FALSE;
+}
+
+boolean GetTextFontDataReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_reserved2.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean GetTextFontDataReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_reserved2.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void GetTextFontDataReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+GetTextFontDataReq GetTextFontDataReq_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 @IsobusVTMessageTypes.GetTextFontDataReq.");
+GetTextFontDataReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_reserved2.is_bound()) {
+ret_val.reserved2() = single_value->field_reserved2.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void GetTextFontDataReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.GetTextFontDataReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new GetTextFontDataReq_template[list_length];
+}
+
+GetTextFontDataReq_template& GetTextFontDataReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.GetTextFontDataReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.GetTextFontDataReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& GetTextFontDataReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& GetTextFontDataReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.GetTextFontDataReq.");
+return single_value->field_vtfunction;
+}
+
+OCTETSTRING_template& GetTextFontDataReq_template::reserved2()
+{
+set_specific();
+return single_value->field_reserved2;
+}
+
+const OCTETSTRING_template& GetTextFontDataReq_template::reserved2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved2 of a non-specific template of type @IsobusVTMessageTypes.GetTextFontDataReq.");
+return single_value->field_reserved2;
+}
+
+OCTETSTRING_template& GetTextFontDataReq_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const OCTETSTRING_template& GetTextFontDataReq_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.GetTextFontDataReq.");
+return single_value->field_reserved3;
+}
+
+OCTETSTRING_template& GetTextFontDataReq_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& GetTextFontDataReq_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.GetTextFontDataReq.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& GetTextFontDataReq_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& GetTextFontDataReq_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.GetTextFontDataReq.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& GetTextFontDataReq_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& GetTextFontDataReq_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.GetTextFontDataReq.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& GetTextFontDataReq_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& GetTextFontDataReq_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.GetTextFontDataReq.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& GetTextFontDataReq_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& GetTextFontDataReq_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.GetTextFontDataReq.");
+return single_value->field_reserved8;
+}
+
+int GetTextFontDataReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetTextFontDataReq which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetTextFontDataReq 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 @IsobusVTMessageTypes.GetTextFontDataReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetTextFontDataReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetTextFontDataReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetTextFontDataReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetTextFontDataReq.");
+  }
+  return 0;
+}
+
+void GetTextFontDataReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void GetTextFontDataReq_template::log_match(const GetTextFontDataReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved2.match(match_value.reserved2(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved2");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 GetTextFontDataReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_reserved2.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.GetTextFontDataReq.");
+}
+}
+
+void GetTextFontDataReq_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_vtfunction.decode_text(text_buf);
+single_value->field_reserved2.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 GetTextFontDataReq_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 @IsobusVTMessageTypes.GetTextFontDataReq.");
+}
+}
+
+void GetTextFontDataReq_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: {
+    GetTextFontDataReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.GetTextFontDataReq has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.GetTextFontDataReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.GetTextFontDataReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void GetTextFontDataReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetTextFontDataReq");
+single_value->field_reserved2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetTextFontDataReq");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetTextFontDataReq");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetTextFontDataReq");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetTextFontDataReq");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetTextFontDataReq");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetTextFontDataReq");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetTextFontDataReq");
+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 : "@IsobusVTMessageTypes.GetTextFontDataReq");
+}
+
+boolean GetTextFontDataReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean GetTextFontDataReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+TextFontDataRes__small__font__sizes::TextFontDataRes__small__font__sizes()
+{
+}
+
+TextFontDataRes__small__font__sizes::TextFontDataRes__small__font__sizes(const BOOLEAN& par_font__8x8,
+    const BOOLEAN& par_font__8x12,
+    const BOOLEAN& par_font__12x16,
+    const BOOLEAN& par_font__16x16,
+    const BOOLEAN& par_font__16x24,
+    const BOOLEAN& par_font__24x32,
+    const BOOLEAN& par_font__32x32,
+    const BOOLEAN& par_reserved)
+  :   field_font__8x8(par_font__8x8),
+  field_font__8x12(par_font__8x12),
+  field_font__12x16(par_font__12x16),
+  field_font__16x16(par_font__16x16),
+  field_font__16x24(par_font__16x24),
+  field_font__24x32(par_font__24x32),
+  field_font__32x32(par_font__32x32),
+  field_reserved(par_reserved)
+{
+}
+
+TextFontDataRes__small__font__sizes::TextFontDataRes__small__font__sizes(const TextFontDataRes__small__font__sizes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.TextFontDataRes_small_font_sizes.");
+if (other_value.font__8x8().is_bound()) field_font__8x8 = other_value.font__8x8();
+else field_font__8x8.clean_up();
+if (other_value.font__8x12().is_bound()) field_font__8x12 = other_value.font__8x12();
+else field_font__8x12.clean_up();
+if (other_value.font__12x16().is_bound()) field_font__12x16 = other_value.font__12x16();
+else field_font__12x16.clean_up();
+if (other_value.font__16x16().is_bound()) field_font__16x16 = other_value.font__16x16();
+else field_font__16x16.clean_up();
+if (other_value.font__16x24().is_bound()) field_font__16x24 = other_value.font__16x24();
+else field_font__16x24.clean_up();
+if (other_value.font__24x32().is_bound()) field_font__24x32 = other_value.font__24x32();
+else field_font__24x32.clean_up();
+if (other_value.font__32x32().is_bound()) field_font__32x32 = other_value.font__32x32();
+else field_font__32x32.clean_up();
+if (other_value.reserved().is_bound()) field_reserved = other_value.reserved();
+else field_reserved.clean_up();
+}
+
+void TextFontDataRes__small__font__sizes::clean_up()
+{
+field_font__8x8.clean_up();
+field_font__8x12.clean_up();
+field_font__12x16.clean_up();
+field_font__16x16.clean_up();
+field_font__16x24.clean_up();
+field_font__24x32.clean_up();
+field_font__32x32.clean_up();
+field_reserved.clean_up();
+}
+
+const TTCN_Typedescriptor_t* TextFontDataRes__small__font__sizes::get_descriptor() const { return &TextFontDataRes__small__font__sizes_descr_; }
+TextFontDataRes__small__font__sizes& TextFontDataRes__small__font__sizes::operator=(const TextFontDataRes__small__font__sizes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.TextFontDataRes_small_font_sizes.");
+  if (other_value.font__8x8().is_bound()) field_font__8x8 = other_value.font__8x8();
+  else field_font__8x8.clean_up();
+  if (other_value.font__8x12().is_bound()) field_font__8x12 = other_value.font__8x12();
+  else field_font__8x12.clean_up();
+  if (other_value.font__12x16().is_bound()) field_font__12x16 = other_value.font__12x16();
+  else field_font__12x16.clean_up();
+  if (other_value.font__16x16().is_bound()) field_font__16x16 = other_value.font__16x16();
+  else field_font__16x16.clean_up();
+  if (other_value.font__16x24().is_bound()) field_font__16x24 = other_value.font__16x24();
+  else field_font__16x24.clean_up();
+  if (other_value.font__24x32().is_bound()) field_font__24x32 = other_value.font__24x32();
+  else field_font__24x32.clean_up();
+  if (other_value.font__32x32().is_bound()) field_font__32x32 = other_value.font__32x32();
+  else field_font__32x32.clean_up();
+  if (other_value.reserved().is_bound()) field_reserved = other_value.reserved();
+  else field_reserved.clean_up();
+}
+return *this;
+}
+
+boolean TextFontDataRes__small__font__sizes::operator==(const TextFontDataRes__small__font__sizes& other_value) const
+{
+return field_font__8x8==other_value.field_font__8x8
+  && field_font__8x12==other_value.field_font__8x12
+  && field_font__12x16==other_value.field_font__12x16
+  && field_font__16x16==other_value.field_font__16x16
+  && field_font__16x24==other_value.field_font__16x24
+  && field_font__24x32==other_value.field_font__24x32
+  && field_font__32x32==other_value.field_font__32x32
+  && field_reserved==other_value.field_reserved;
+}
+
+boolean TextFontDataRes__small__font__sizes::is_bound() const
+{
+return (field_font__8x8.is_bound())
+  || (field_font__8x12.is_bound())
+  || (field_font__12x16.is_bound())
+  || (field_font__16x16.is_bound())
+  || (field_font__16x24.is_bound())
+  || (field_font__24x32.is_bound())
+  || (field_font__32x32.is_bound())
+  || (field_reserved.is_bound());
+}
+boolean TextFontDataRes__small__font__sizes::is_value() const
+{
+return field_font__8x8.is_value()
+  && field_font__8x12.is_value()
+  && field_font__12x16.is_value()
+  && field_font__16x16.is_value()
+  && field_font__16x24.is_value()
+  && field_font__24x32.is_value()
+  && field_font__32x32.is_value()
+  && field_reserved.is_value();
+}
+void TextFontDataRes__small__font__sizes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ font_8x8 := ");
+field_font__8x8.log();
+TTCN_Logger::log_event_str(", font_8x12 := ");
+field_font__8x12.log();
+TTCN_Logger::log_event_str(", font_12x16 := ");
+field_font__12x16.log();
+TTCN_Logger::log_event_str(", font_16x16 := ");
+field_font__16x16.log();
+TTCN_Logger::log_event_str(", font_16x24 := ");
+field_font__16x24.log();
+TTCN_Logger::log_event_str(", font_24x32 := ");
+field_font__24x32.log();
+TTCN_Logger::log_event_str(", font_32x32 := ");
+field_font__32x32.log();
+TTCN_Logger::log_event_str(", reserved := ");
+field_reserved.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void TextFontDataRes__small__font__sizes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.TextFontDataRes_small_font_sizes has 8 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) font__8x8().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) font__8x12().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) font__12x16().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) font__16x16().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) font__16x24().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) font__24x32().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) font__32x32().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved().set_param(*param.get_elem(7));
+    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(), "font_8x8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          font__8x8().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(), "font_8x12")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          font__8x12().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(), "font_12x16")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          font__12x16().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(), "font_16x16")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          font__16x16().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(), "font_16x24")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          font__16x24().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(), "font_24x32")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          font__24x32().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(), "font_32x32")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          font__32x32().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(), "reserved")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved().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 @IsobusVTMessageTypes.TextFontDataRes_small_font_sizes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.TextFontDataRes_small_font_sizes");
+  }
+}
+
+void TextFontDataRes__small__font__sizes::set_implicit_omit()
+{
+if (font__8x8().is_bound()) font__8x8().set_implicit_omit();
+if (font__8x12().is_bound()) font__8x12().set_implicit_omit();
+if (font__12x16().is_bound()) font__12x16().set_implicit_omit();
+if (font__16x16().is_bound()) font__16x16().set_implicit_omit();
+if (font__16x24().is_bound()) font__16x24().set_implicit_omit();
+if (font__24x32().is_bound()) font__24x32().set_implicit_omit();
+if (font__32x32().is_bound()) font__32x32().set_implicit_omit();
+if (reserved().is_bound()) reserved().set_implicit_omit();
+}
+
+void TextFontDataRes__small__font__sizes::encode_text(Text_Buf& text_buf) const
+{
+field_font__8x8.encode_text(text_buf);
+field_font__8x12.encode_text(text_buf);
+field_font__12x16.encode_text(text_buf);
+field_font__16x16.encode_text(text_buf);
+field_font__16x24.encode_text(text_buf);
+field_font__24x32.encode_text(text_buf);
+field_font__32x32.encode_text(text_buf);
+field_reserved.encode_text(text_buf);
+}
+
+void TextFontDataRes__small__font__sizes::decode_text(Text_Buf& text_buf)
+{
+field_font__8x8.decode_text(text_buf);
+field_font__8x12.decode_text(text_buf);
+field_font__12x16.decode_text(text_buf);
+field_font__16x16.decode_text(text_buf);
+field_font__16x24.decode_text(text_buf);
+field_font__24x32.decode_text(text_buf);
+field_font__32x32.decode_text(text_buf);
+field_reserved.decode_text(text_buf);
+}
+
+void TextFontDataRes__small__font__sizes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void TextFontDataRes__small__font__sizes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int TextFontDataRes__small__font__sizes::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_font__8x8.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_font__8x12.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_font__12x16.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_font__16x16.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_font__16x24.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_font__24x32.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_font__32x32.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int TextFontDataRes__small__font__sizes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_font__8x8.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_font__8x12.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_font__12x16.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_font__16x16.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_font__16x24.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_font__24x32.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_font__32x32.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct TextFontDataRes__small__font__sizes_template::single_value_struct {
+BOOLEAN_template field_font__8x8;
+BOOLEAN_template field_font__8x12;
+BOOLEAN_template field_font__12x16;
+BOOLEAN_template field_font__16x16;
+BOOLEAN_template field_font__16x24;
+BOOLEAN_template field_font__24x32;
+BOOLEAN_template field_font__32x32;
+BOOLEAN_template field_reserved;
+};
+
+void TextFontDataRes__small__font__sizes_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_font__8x8 = ANY_VALUE;
+single_value->field_font__8x12 = ANY_VALUE;
+single_value->field_font__12x16 = ANY_VALUE;
+single_value->field_font__16x16 = ANY_VALUE;
+single_value->field_font__16x24 = ANY_VALUE;
+single_value->field_font__24x32 = ANY_VALUE;
+single_value->field_font__32x32 = ANY_VALUE;
+single_value->field_reserved = ANY_VALUE;
+}
+}
+}
+
+void TextFontDataRes__small__font__sizes_template::copy_value(const TextFontDataRes__small__font__sizes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.font__8x8().is_bound()) {
+  single_value->field_font__8x8 = other_value.font__8x8();
+} else {
+  single_value->field_font__8x8.clean_up();
+}
+if (other_value.font__8x12().is_bound()) {
+  single_value->field_font__8x12 = other_value.font__8x12();
+} else {
+  single_value->field_font__8x12.clean_up();
+}
+if (other_value.font__12x16().is_bound()) {
+  single_value->field_font__12x16 = other_value.font__12x16();
+} else {
+  single_value->field_font__12x16.clean_up();
+}
+if (other_value.font__16x16().is_bound()) {
+  single_value->field_font__16x16 = other_value.font__16x16();
+} else {
+  single_value->field_font__16x16.clean_up();
+}
+if (other_value.font__16x24().is_bound()) {
+  single_value->field_font__16x24 = other_value.font__16x24();
+} else {
+  single_value->field_font__16x24.clean_up();
+}
+if (other_value.font__24x32().is_bound()) {
+  single_value->field_font__24x32 = other_value.font__24x32();
+} else {
+  single_value->field_font__24x32.clean_up();
+}
+if (other_value.font__32x32().is_bound()) {
+  single_value->field_font__32x32 = other_value.font__32x32();
+} else {
+  single_value->field_font__32x32.clean_up();
+}
+if (other_value.reserved().is_bound()) {
+  single_value->field_reserved = other_value.reserved();
+} else {
+  single_value->field_reserved.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void TextFontDataRes__small__font__sizes_template::copy_template(const TextFontDataRes__small__font__sizes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.font__8x8().get_selection()) {
+single_value->field_font__8x8 = other_value.font__8x8();
+} else {
+single_value->field_font__8x8.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.font__8x12().get_selection()) {
+single_value->field_font__8x12 = other_value.font__8x12();
+} else {
+single_value->field_font__8x12.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.font__12x16().get_selection()) {
+single_value->field_font__12x16 = other_value.font__12x16();
+} else {
+single_value->field_font__12x16.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.font__16x16().get_selection()) {
+single_value->field_font__16x16 = other_value.font__16x16();
+} else {
+single_value->field_font__16x16.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.font__16x24().get_selection()) {
+single_value->field_font__16x24 = other_value.font__16x24();
+} else {
+single_value->field_font__16x24.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.font__24x32().get_selection()) {
+single_value->field_font__24x32 = other_value.font__24x32();
+} else {
+single_value->field_font__24x32.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.font__32x32().get_selection()) {
+single_value->field_font__32x32 = other_value.font__32x32();
+} else {
+single_value->field_font__32x32.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved().get_selection()) {
+single_value->field_reserved = other_value.reserved();
+} else {
+single_value->field_reserved.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new TextFontDataRes__small__font__sizes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.TextFontDataRes_small_font_sizes.");
+break;
+}
+set_selection(other_value);
+}
+
+TextFontDataRes__small__font__sizes_template::TextFontDataRes__small__font__sizes_template()
+{
+}
+
+TextFontDataRes__small__font__sizes_template::TextFontDataRes__small__font__sizes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+TextFontDataRes__small__font__sizes_template::TextFontDataRes__small__font__sizes_template(const TextFontDataRes__small__font__sizes& other_value)
+{
+copy_value(other_value);
+}
+
+TextFontDataRes__small__font__sizes_template::TextFontDataRes__small__font__sizes_template(const OPTIONAL<TextFontDataRes__small__font__sizes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const TextFontDataRes__small__font__sizes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.TextFontDataRes_small_font_sizes from an unbound optional field.");
+}
+}
+
+TextFontDataRes__small__font__sizes_template::TextFontDataRes__small__font__sizes_template(const TextFontDataRes__small__font__sizes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+TextFontDataRes__small__font__sizes_template::~TextFontDataRes__small__font__sizes_template()
+{
+clean_up();
+}
+
+TextFontDataRes__small__font__sizes_template& TextFontDataRes__small__font__sizes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+TextFontDataRes__small__font__sizes_template& TextFontDataRes__small__font__sizes_template::operator=(const TextFontDataRes__small__font__sizes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+TextFontDataRes__small__font__sizes_template& TextFontDataRes__small__font__sizes_template::operator=(const OPTIONAL<TextFontDataRes__small__font__sizes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const TextFontDataRes__small__font__sizes&)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 @IsobusVTMessageTypes.TextFontDataRes_small_font_sizes.");
+}
+return *this;
+}
+
+TextFontDataRes__small__font__sizes_template& TextFontDataRes__small__font__sizes_template::operator=(const TextFontDataRes__small__font__sizes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean TextFontDataRes__small__font__sizes_template::match(const TextFontDataRes__small__font__sizes& 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.font__8x8().is_bound()) return FALSE;
+if(!single_value->field_font__8x8.match(other_value.font__8x8(), legacy))return FALSE;
+if(!other_value.font__8x12().is_bound()) return FALSE;
+if(!single_value->field_font__8x12.match(other_value.font__8x12(), legacy))return FALSE;
+if(!other_value.font__12x16().is_bound()) return FALSE;
+if(!single_value->field_font__12x16.match(other_value.font__12x16(), legacy))return FALSE;
+if(!other_value.font__16x16().is_bound()) return FALSE;
+if(!single_value->field_font__16x16.match(other_value.font__16x16(), legacy))return FALSE;
+if(!other_value.font__16x24().is_bound()) return FALSE;
+if(!single_value->field_font__16x24.match(other_value.font__16x24(), legacy))return FALSE;
+if(!other_value.font__24x32().is_bound()) return FALSE;
+if(!single_value->field_font__24x32.match(other_value.font__24x32(), legacy))return FALSE;
+if(!other_value.font__32x32().is_bound()) return FALSE;
+if(!single_value->field_font__32x32.match(other_value.font__32x32(), legacy))return FALSE;
+if(!other_value.reserved().is_bound()) return FALSE;
+if(!single_value->field_reserved.match(other_value.reserved(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.TextFontDataRes_small_font_sizes.");
+}
+return FALSE;
+}
+
+boolean TextFontDataRes__small__font__sizes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_font__8x8.is_bound()
+
+ ||single_value->field_font__8x12.is_bound()
+
+ ||single_value->field_font__12x16.is_bound()
+
+ ||single_value->field_font__16x16.is_bound()
+
+ ||single_value->field_font__16x24.is_bound()
+
+ ||single_value->field_font__24x32.is_bound()
+
+ ||single_value->field_font__32x32.is_bound()
+
+ ||single_value->field_reserved.is_bound()
+;
+}
+
+boolean TextFontDataRes__small__font__sizes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_font__8x8.is_value()
+ &&single_value->field_font__8x12.is_value()
+ &&single_value->field_font__12x16.is_value()
+ &&single_value->field_font__16x16.is_value()
+ &&single_value->field_font__16x24.is_value()
+ &&single_value->field_font__24x32.is_value()
+ &&single_value->field_font__32x32.is_value()
+ &&single_value->field_reserved.is_value();
+}
+
+void TextFontDataRes__small__font__sizes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+TextFontDataRes__small__font__sizes TextFontDataRes__small__font__sizes_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 @IsobusVTMessageTypes.TextFontDataRes_small_font_sizes.");
+TextFontDataRes__small__font__sizes ret_val;
+if (single_value->field_font__8x8.is_bound()) {
+ret_val.font__8x8() = single_value->field_font__8x8.valueof();
+}
+if (single_value->field_font__8x12.is_bound()) {
+ret_val.font__8x12() = single_value->field_font__8x12.valueof();
+}
+if (single_value->field_font__12x16.is_bound()) {
+ret_val.font__12x16() = single_value->field_font__12x16.valueof();
+}
+if (single_value->field_font__16x16.is_bound()) {
+ret_val.font__16x16() = single_value->field_font__16x16.valueof();
+}
+if (single_value->field_font__16x24.is_bound()) {
+ret_val.font__16x24() = single_value->field_font__16x24.valueof();
+}
+if (single_value->field_font__24x32.is_bound()) {
+ret_val.font__24x32() = single_value->field_font__24x32.valueof();
+}
+if (single_value->field_font__32x32.is_bound()) {
+ret_val.font__32x32() = single_value->field_font__32x32.valueof();
+}
+if (single_value->field_reserved.is_bound()) {
+ret_val.reserved() = single_value->field_reserved.valueof();
+}
+return ret_val;
+}
+
+void TextFontDataRes__small__font__sizes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.TextFontDataRes_small_font_sizes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new TextFontDataRes__small__font__sizes_template[list_length];
+}
+
+TextFontDataRes__small__font__sizes_template& TextFontDataRes__small__font__sizes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.TextFontDataRes_small_font_sizes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.TextFontDataRes_small_font_sizes.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& TextFontDataRes__small__font__sizes_template::font__8x8()
+{
+set_specific();
+return single_value->field_font__8x8;
+}
+
+const BOOLEAN_template& TextFontDataRes__small__font__sizes_template::font__8x8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field font_8x8 of a non-specific template of type @IsobusVTMessageTypes.TextFontDataRes_small_font_sizes.");
+return single_value->field_font__8x8;
+}
+
+BOOLEAN_template& TextFontDataRes__small__font__sizes_template::font__8x12()
+{
+set_specific();
+return single_value->field_font__8x12;
+}
+
+const BOOLEAN_template& TextFontDataRes__small__font__sizes_template::font__8x12() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field font_8x12 of a non-specific template of type @IsobusVTMessageTypes.TextFontDataRes_small_font_sizes.");
+return single_value->field_font__8x12;
+}
+
+BOOLEAN_template& TextFontDataRes__small__font__sizes_template::font__12x16()
+{
+set_specific();
+return single_value->field_font__12x16;
+}
+
+const BOOLEAN_template& TextFontDataRes__small__font__sizes_template::font__12x16() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field font_12x16 of a non-specific template of type @IsobusVTMessageTypes.TextFontDataRes_small_font_sizes.");
+return single_value->field_font__12x16;
+}
+
+BOOLEAN_template& TextFontDataRes__small__font__sizes_template::font__16x16()
+{
+set_specific();
+return single_value->field_font__16x16;
+}
+
+const BOOLEAN_template& TextFontDataRes__small__font__sizes_template::font__16x16() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field font_16x16 of a non-specific template of type @IsobusVTMessageTypes.TextFontDataRes_small_font_sizes.");
+return single_value->field_font__16x16;
+}
+
+BOOLEAN_template& TextFontDataRes__small__font__sizes_template::font__16x24()
+{
+set_specific();
+return single_value->field_font__16x24;
+}
+
+const BOOLEAN_template& TextFontDataRes__small__font__sizes_template::font__16x24() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field font_16x24 of a non-specific template of type @IsobusVTMessageTypes.TextFontDataRes_small_font_sizes.");
+return single_value->field_font__16x24;
+}
+
+BOOLEAN_template& TextFontDataRes__small__font__sizes_template::font__24x32()
+{
+set_specific();
+return single_value->field_font__24x32;
+}
+
+const BOOLEAN_template& TextFontDataRes__small__font__sizes_template::font__24x32() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field font_24x32 of a non-specific template of type @IsobusVTMessageTypes.TextFontDataRes_small_font_sizes.");
+return single_value->field_font__24x32;
+}
+
+BOOLEAN_template& TextFontDataRes__small__font__sizes_template::font__32x32()
+{
+set_specific();
+return single_value->field_font__32x32;
+}
+
+const BOOLEAN_template& TextFontDataRes__small__font__sizes_template::font__32x32() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field font_32x32 of a non-specific template of type @IsobusVTMessageTypes.TextFontDataRes_small_font_sizes.");
+return single_value->field_font__32x32;
+}
+
+BOOLEAN_template& TextFontDataRes__small__font__sizes_template::reserved()
+{
+set_specific();
+return single_value->field_reserved;
+}
+
+const BOOLEAN_template& TextFontDataRes__small__font__sizes_template::reserved() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved of a non-specific template of type @IsobusVTMessageTypes.TextFontDataRes_small_font_sizes.");
+return single_value->field_reserved;
+}
+
+int TextFontDataRes__small__font__sizes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.TextFontDataRes_small_font_sizes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.TextFontDataRes_small_font_sizes 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 @IsobusVTMessageTypes.TextFontDataRes_small_font_sizes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.TextFontDataRes_small_font_sizes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.TextFontDataRes_small_font_sizes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.TextFontDataRes_small_font_sizes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.TextFontDataRes_small_font_sizes.");
+  }
+  return 0;
+}
+
+void TextFontDataRes__small__font__sizes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ font_8x8 := ");
+single_value->field_font__8x8.log();
+TTCN_Logger::log_event_str(", font_8x12 := ");
+single_value->field_font__8x12.log();
+TTCN_Logger::log_event_str(", font_12x16 := ");
+single_value->field_font__12x16.log();
+TTCN_Logger::log_event_str(", font_16x16 := ");
+single_value->field_font__16x16.log();
+TTCN_Logger::log_event_str(", font_16x24 := ");
+single_value->field_font__16x24.log();
+TTCN_Logger::log_event_str(", font_24x32 := ");
+single_value->field_font__24x32.log();
+TTCN_Logger::log_event_str(", font_32x32 := ");
+single_value->field_font__32x32.log();
+TTCN_Logger::log_event_str(", reserved := ");
+single_value->field_reserved.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void TextFontDataRes__small__font__sizes_template::log_match(const TextFontDataRes__small__font__sizes& 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_font__8x8.match(match_value.font__8x8(), legacy)){
+TTCN_Logger::log_logmatch_info(".font_8x8");
+single_value->field_font__8x8.log_match(match_value.font__8x8(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_font__8x12.match(match_value.font__8x12(), legacy)){
+TTCN_Logger::log_logmatch_info(".font_8x12");
+single_value->field_font__8x12.log_match(match_value.font__8x12(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_font__12x16.match(match_value.font__12x16(), legacy)){
+TTCN_Logger::log_logmatch_info(".font_12x16");
+single_value->field_font__12x16.log_match(match_value.font__12x16(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_font__16x16.match(match_value.font__16x16(), legacy)){
+TTCN_Logger::log_logmatch_info(".font_16x16");
+single_value->field_font__16x16.log_match(match_value.font__16x16(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_font__16x24.match(match_value.font__16x24(), legacy)){
+TTCN_Logger::log_logmatch_info(".font_16x24");
+single_value->field_font__16x24.log_match(match_value.font__16x24(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_font__24x32.match(match_value.font__24x32(), legacy)){
+TTCN_Logger::log_logmatch_info(".font_24x32");
+single_value->field_font__24x32.log_match(match_value.font__24x32(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_font__32x32.match(match_value.font__32x32(), legacy)){
+TTCN_Logger::log_logmatch_info(".font_32x32");
+single_value->field_font__32x32.log_match(match_value.font__32x32(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved.match(match_value.reserved(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved");
+single_value->field_reserved.log_match(match_value.reserved(), 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("{ font_8x8 := ");
+single_value->field_font__8x8.log_match(match_value.font__8x8(), legacy);
+TTCN_Logger::log_event_str(", font_8x12 := ");
+single_value->field_font__8x12.log_match(match_value.font__8x12(), legacy);
+TTCN_Logger::log_event_str(", font_12x16 := ");
+single_value->field_font__12x16.log_match(match_value.font__12x16(), legacy);
+TTCN_Logger::log_event_str(", font_16x16 := ");
+single_value->field_font__16x16.log_match(match_value.font__16x16(), legacy);
+TTCN_Logger::log_event_str(", font_16x24 := ");
+single_value->field_font__16x24.log_match(match_value.font__16x24(), legacy);
+TTCN_Logger::log_event_str(", font_24x32 := ");
+single_value->field_font__24x32.log_match(match_value.font__24x32(), legacy);
+TTCN_Logger::log_event_str(", font_32x32 := ");
+single_value->field_font__32x32.log_match(match_value.font__32x32(), legacy);
+TTCN_Logger::log_event_str(", reserved := ");
+single_value->field_reserved.log_match(match_value.reserved(), 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 TextFontDataRes__small__font__sizes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_font__8x8.encode_text(text_buf);
+single_value->field_font__8x12.encode_text(text_buf);
+single_value->field_font__12x16.encode_text(text_buf);
+single_value->field_font__16x16.encode_text(text_buf);
+single_value->field_font__16x24.encode_text(text_buf);
+single_value->field_font__24x32.encode_text(text_buf);
+single_value->field_font__32x32.encode_text(text_buf);
+single_value->field_reserved.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 @IsobusVTMessageTypes.TextFontDataRes_small_font_sizes.");
+}
+}
+
+void TextFontDataRes__small__font__sizes_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_font__8x8.decode_text(text_buf);
+single_value->field_font__8x12.decode_text(text_buf);
+single_value->field_font__12x16.decode_text(text_buf);
+single_value->field_font__16x16.decode_text(text_buf);
+single_value->field_font__16x24.decode_text(text_buf);
+single_value->field_font__24x32.decode_text(text_buf);
+single_value->field_font__32x32.decode_text(text_buf);
+single_value->field_reserved.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 TextFontDataRes__small__font__sizes_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 @IsobusVTMessageTypes.TextFontDataRes_small_font_sizes.");
+}
+}
+
+void TextFontDataRes__small__font__sizes_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: {
+    TextFontDataRes__small__font__sizes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.TextFontDataRes_small_font_sizes has 8 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) font__8x8().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) font__8x12().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) font__12x16().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) font__16x16().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) font__16x24().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) font__24x32().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) font__32x32().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved().set_param(*param.get_elem(7));
+    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(), "font_8x8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          font__8x8().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(), "font_8x12")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          font__8x12().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(), "font_12x16")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          font__12x16().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(), "font_16x16")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          font__16x16().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(), "font_16x24")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          font__16x24().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(), "font_24x32")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          font__24x32().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(), "font_32x32")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          font__32x32().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(), "reserved")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved().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 @IsobusVTMessageTypes.TextFontDataRes_small_font_sizes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.TextFontDataRes_small_font_sizes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void TextFontDataRes__small__font__sizes_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_font__8x8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.TextFontDataRes_small_font_sizes");
+single_value->field_font__8x12.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.TextFontDataRes_small_font_sizes");
+single_value->field_font__12x16.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.TextFontDataRes_small_font_sizes");
+single_value->field_font__16x16.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.TextFontDataRes_small_font_sizes");
+single_value->field_font__16x24.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.TextFontDataRes_small_font_sizes");
+single_value->field_font__24x32.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.TextFontDataRes_small_font_sizes");
+single_value->field_font__32x32.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.TextFontDataRes_small_font_sizes");
+single_value->field_reserved.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.TextFontDataRes_small_font_sizes");
+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 : "@IsobusVTMessageTypes.TextFontDataRes_small_font_sizes");
+}
+
+boolean TextFontDataRes__small__font__sizes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean TextFontDataRes__small__font__sizes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+TextFontDataRes__large__font__sizes::TextFontDataRes__large__font__sizes()
+{
+}
+
+TextFontDataRes__large__font__sizes::TextFontDataRes__large__font__sizes(const BOOLEAN& par_font__32x48,
+    const BOOLEAN& par_font__48x64,
+    const BOOLEAN& par_font__64x64,
+    const BOOLEAN& par_font__64x96,
+    const BOOLEAN& par_font__96x128,
+    const BOOLEAN& par_font__128x128,
+    const BOOLEAN& par_font__128x192,
+    const BOOLEAN& par_reserved)
+  :   field_font__32x48(par_font__32x48),
+  field_font__48x64(par_font__48x64),
+  field_font__64x64(par_font__64x64),
+  field_font__64x96(par_font__64x96),
+  field_font__96x128(par_font__96x128),
+  field_font__128x128(par_font__128x128),
+  field_font__128x192(par_font__128x192),
+  field_reserved(par_reserved)
+{
+}
+
+TextFontDataRes__large__font__sizes::TextFontDataRes__large__font__sizes(const TextFontDataRes__large__font__sizes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.TextFontDataRes_large_font_sizes.");
+if (other_value.font__32x48().is_bound()) field_font__32x48 = other_value.font__32x48();
+else field_font__32x48.clean_up();
+if (other_value.font__48x64().is_bound()) field_font__48x64 = other_value.font__48x64();
+else field_font__48x64.clean_up();
+if (other_value.font__64x64().is_bound()) field_font__64x64 = other_value.font__64x64();
+else field_font__64x64.clean_up();
+if (other_value.font__64x96().is_bound()) field_font__64x96 = other_value.font__64x96();
+else field_font__64x96.clean_up();
+if (other_value.font__96x128().is_bound()) field_font__96x128 = other_value.font__96x128();
+else field_font__96x128.clean_up();
+if (other_value.font__128x128().is_bound()) field_font__128x128 = other_value.font__128x128();
+else field_font__128x128.clean_up();
+if (other_value.font__128x192().is_bound()) field_font__128x192 = other_value.font__128x192();
+else field_font__128x192.clean_up();
+if (other_value.reserved().is_bound()) field_reserved = other_value.reserved();
+else field_reserved.clean_up();
+}
+
+void TextFontDataRes__large__font__sizes::clean_up()
+{
+field_font__32x48.clean_up();
+field_font__48x64.clean_up();
+field_font__64x64.clean_up();
+field_font__64x96.clean_up();
+field_font__96x128.clean_up();
+field_font__128x128.clean_up();
+field_font__128x192.clean_up();
+field_reserved.clean_up();
+}
+
+const TTCN_Typedescriptor_t* TextFontDataRes__large__font__sizes::get_descriptor() const { return &TextFontDataRes__large__font__sizes_descr_; }
+TextFontDataRes__large__font__sizes& TextFontDataRes__large__font__sizes::operator=(const TextFontDataRes__large__font__sizes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.TextFontDataRes_large_font_sizes.");
+  if (other_value.font__32x48().is_bound()) field_font__32x48 = other_value.font__32x48();
+  else field_font__32x48.clean_up();
+  if (other_value.font__48x64().is_bound()) field_font__48x64 = other_value.font__48x64();
+  else field_font__48x64.clean_up();
+  if (other_value.font__64x64().is_bound()) field_font__64x64 = other_value.font__64x64();
+  else field_font__64x64.clean_up();
+  if (other_value.font__64x96().is_bound()) field_font__64x96 = other_value.font__64x96();
+  else field_font__64x96.clean_up();
+  if (other_value.font__96x128().is_bound()) field_font__96x128 = other_value.font__96x128();
+  else field_font__96x128.clean_up();
+  if (other_value.font__128x128().is_bound()) field_font__128x128 = other_value.font__128x128();
+  else field_font__128x128.clean_up();
+  if (other_value.font__128x192().is_bound()) field_font__128x192 = other_value.font__128x192();
+  else field_font__128x192.clean_up();
+  if (other_value.reserved().is_bound()) field_reserved = other_value.reserved();
+  else field_reserved.clean_up();
+}
+return *this;
+}
+
+boolean TextFontDataRes__large__font__sizes::operator==(const TextFontDataRes__large__font__sizes& other_value) const
+{
+return field_font__32x48==other_value.field_font__32x48
+  && field_font__48x64==other_value.field_font__48x64
+  && field_font__64x64==other_value.field_font__64x64
+  && field_font__64x96==other_value.field_font__64x96
+  && field_font__96x128==other_value.field_font__96x128
+  && field_font__128x128==other_value.field_font__128x128
+  && field_font__128x192==other_value.field_font__128x192
+  && field_reserved==other_value.field_reserved;
+}
+
+boolean TextFontDataRes__large__font__sizes::is_bound() const
+{
+return (field_font__32x48.is_bound())
+  || (field_font__48x64.is_bound())
+  || (field_font__64x64.is_bound())
+  || (field_font__64x96.is_bound())
+  || (field_font__96x128.is_bound())
+  || (field_font__128x128.is_bound())
+  || (field_font__128x192.is_bound())
+  || (field_reserved.is_bound());
+}
+boolean TextFontDataRes__large__font__sizes::is_value() const
+{
+return field_font__32x48.is_value()
+  && field_font__48x64.is_value()
+  && field_font__64x64.is_value()
+  && field_font__64x96.is_value()
+  && field_font__96x128.is_value()
+  && field_font__128x128.is_value()
+  && field_font__128x192.is_value()
+  && field_reserved.is_value();
+}
+void TextFontDataRes__large__font__sizes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ font_32x48 := ");
+field_font__32x48.log();
+TTCN_Logger::log_event_str(", font_48x64 := ");
+field_font__48x64.log();
+TTCN_Logger::log_event_str(", font_64x64 := ");
+field_font__64x64.log();
+TTCN_Logger::log_event_str(", font_64x96 := ");
+field_font__64x96.log();
+TTCN_Logger::log_event_str(", font_96x128 := ");
+field_font__96x128.log();
+TTCN_Logger::log_event_str(", font_128x128 := ");
+field_font__128x128.log();
+TTCN_Logger::log_event_str(", font_128x192 := ");
+field_font__128x192.log();
+TTCN_Logger::log_event_str(", reserved := ");
+field_reserved.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void TextFontDataRes__large__font__sizes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.TextFontDataRes_large_font_sizes has 8 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) font__32x48().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) font__48x64().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) font__64x64().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) font__64x96().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) font__96x128().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) font__128x128().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) font__128x192().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved().set_param(*param.get_elem(7));
+    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(), "font_32x48")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          font__32x48().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(), "font_48x64")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          font__48x64().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(), "font_64x64")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          font__64x64().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(), "font_64x96")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          font__64x96().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(), "font_96x128")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          font__96x128().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(), "font_128x128")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          font__128x128().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(), "font_128x192")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          font__128x192().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(), "reserved")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved().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 @IsobusVTMessageTypes.TextFontDataRes_large_font_sizes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.TextFontDataRes_large_font_sizes");
+  }
+}
+
+void TextFontDataRes__large__font__sizes::set_implicit_omit()
+{
+if (font__32x48().is_bound()) font__32x48().set_implicit_omit();
+if (font__48x64().is_bound()) font__48x64().set_implicit_omit();
+if (font__64x64().is_bound()) font__64x64().set_implicit_omit();
+if (font__64x96().is_bound()) font__64x96().set_implicit_omit();
+if (font__96x128().is_bound()) font__96x128().set_implicit_omit();
+if (font__128x128().is_bound()) font__128x128().set_implicit_omit();
+if (font__128x192().is_bound()) font__128x192().set_implicit_omit();
+if (reserved().is_bound()) reserved().set_implicit_omit();
+}
+
+void TextFontDataRes__large__font__sizes::encode_text(Text_Buf& text_buf) const
+{
+field_font__32x48.encode_text(text_buf);
+field_font__48x64.encode_text(text_buf);
+field_font__64x64.encode_text(text_buf);
+field_font__64x96.encode_text(text_buf);
+field_font__96x128.encode_text(text_buf);
+field_font__128x128.encode_text(text_buf);
+field_font__128x192.encode_text(text_buf);
+field_reserved.encode_text(text_buf);
+}
+
+void TextFontDataRes__large__font__sizes::decode_text(Text_Buf& text_buf)
+{
+field_font__32x48.decode_text(text_buf);
+field_font__48x64.decode_text(text_buf);
+field_font__64x64.decode_text(text_buf);
+field_font__64x96.decode_text(text_buf);
+field_font__96x128.decode_text(text_buf);
+field_font__128x128.decode_text(text_buf);
+field_font__128x192.decode_text(text_buf);
+field_reserved.decode_text(text_buf);
+}
+
+void TextFontDataRes__large__font__sizes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void TextFontDataRes__large__font__sizes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int TextFontDataRes__large__font__sizes::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_font__32x48.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_font__48x64.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_font__64x64.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_font__64x96.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_font__96x128.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_font__128x128.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_font__128x192.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int TextFontDataRes__large__font__sizes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_font__32x48.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_font__48x64.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_font__64x64.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_font__64x96.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_font__96x128.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_font__128x128.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_font__128x192.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct TextFontDataRes__large__font__sizes_template::single_value_struct {
+BOOLEAN_template field_font__32x48;
+BOOLEAN_template field_font__48x64;
+BOOLEAN_template field_font__64x64;
+BOOLEAN_template field_font__64x96;
+BOOLEAN_template field_font__96x128;
+BOOLEAN_template field_font__128x128;
+BOOLEAN_template field_font__128x192;
+BOOLEAN_template field_reserved;
+};
+
+void TextFontDataRes__large__font__sizes_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_font__32x48 = ANY_VALUE;
+single_value->field_font__48x64 = ANY_VALUE;
+single_value->field_font__64x64 = ANY_VALUE;
+single_value->field_font__64x96 = ANY_VALUE;
+single_value->field_font__96x128 = ANY_VALUE;
+single_value->field_font__128x128 = ANY_VALUE;
+single_value->field_font__128x192 = ANY_VALUE;
+single_value->field_reserved = ANY_VALUE;
+}
+}
+}
+
+void TextFontDataRes__large__font__sizes_template::copy_value(const TextFontDataRes__large__font__sizes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.font__32x48().is_bound()) {
+  single_value->field_font__32x48 = other_value.font__32x48();
+} else {
+  single_value->field_font__32x48.clean_up();
+}
+if (other_value.font__48x64().is_bound()) {
+  single_value->field_font__48x64 = other_value.font__48x64();
+} else {
+  single_value->field_font__48x64.clean_up();
+}
+if (other_value.font__64x64().is_bound()) {
+  single_value->field_font__64x64 = other_value.font__64x64();
+} else {
+  single_value->field_font__64x64.clean_up();
+}
+if (other_value.font__64x96().is_bound()) {
+  single_value->field_font__64x96 = other_value.font__64x96();
+} else {
+  single_value->field_font__64x96.clean_up();
+}
+if (other_value.font__96x128().is_bound()) {
+  single_value->field_font__96x128 = other_value.font__96x128();
+} else {
+  single_value->field_font__96x128.clean_up();
+}
+if (other_value.font__128x128().is_bound()) {
+  single_value->field_font__128x128 = other_value.font__128x128();
+} else {
+  single_value->field_font__128x128.clean_up();
+}
+if (other_value.font__128x192().is_bound()) {
+  single_value->field_font__128x192 = other_value.font__128x192();
+} else {
+  single_value->field_font__128x192.clean_up();
+}
+if (other_value.reserved().is_bound()) {
+  single_value->field_reserved = other_value.reserved();
+} else {
+  single_value->field_reserved.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void TextFontDataRes__large__font__sizes_template::copy_template(const TextFontDataRes__large__font__sizes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.font__32x48().get_selection()) {
+single_value->field_font__32x48 = other_value.font__32x48();
+} else {
+single_value->field_font__32x48.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.font__48x64().get_selection()) {
+single_value->field_font__48x64 = other_value.font__48x64();
+} else {
+single_value->field_font__48x64.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.font__64x64().get_selection()) {
+single_value->field_font__64x64 = other_value.font__64x64();
+} else {
+single_value->field_font__64x64.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.font__64x96().get_selection()) {
+single_value->field_font__64x96 = other_value.font__64x96();
+} else {
+single_value->field_font__64x96.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.font__96x128().get_selection()) {
+single_value->field_font__96x128 = other_value.font__96x128();
+} else {
+single_value->field_font__96x128.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.font__128x128().get_selection()) {
+single_value->field_font__128x128 = other_value.font__128x128();
+} else {
+single_value->field_font__128x128.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.font__128x192().get_selection()) {
+single_value->field_font__128x192 = other_value.font__128x192();
+} else {
+single_value->field_font__128x192.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved().get_selection()) {
+single_value->field_reserved = other_value.reserved();
+} else {
+single_value->field_reserved.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new TextFontDataRes__large__font__sizes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.TextFontDataRes_large_font_sizes.");
+break;
+}
+set_selection(other_value);
+}
+
+TextFontDataRes__large__font__sizes_template::TextFontDataRes__large__font__sizes_template()
+{
+}
+
+TextFontDataRes__large__font__sizes_template::TextFontDataRes__large__font__sizes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+TextFontDataRes__large__font__sizes_template::TextFontDataRes__large__font__sizes_template(const TextFontDataRes__large__font__sizes& other_value)
+{
+copy_value(other_value);
+}
+
+TextFontDataRes__large__font__sizes_template::TextFontDataRes__large__font__sizes_template(const OPTIONAL<TextFontDataRes__large__font__sizes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const TextFontDataRes__large__font__sizes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.TextFontDataRes_large_font_sizes from an unbound optional field.");
+}
+}
+
+TextFontDataRes__large__font__sizes_template::TextFontDataRes__large__font__sizes_template(const TextFontDataRes__large__font__sizes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+TextFontDataRes__large__font__sizes_template::~TextFontDataRes__large__font__sizes_template()
+{
+clean_up();
+}
+
+TextFontDataRes__large__font__sizes_template& TextFontDataRes__large__font__sizes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+TextFontDataRes__large__font__sizes_template& TextFontDataRes__large__font__sizes_template::operator=(const TextFontDataRes__large__font__sizes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+TextFontDataRes__large__font__sizes_template& TextFontDataRes__large__font__sizes_template::operator=(const OPTIONAL<TextFontDataRes__large__font__sizes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const TextFontDataRes__large__font__sizes&)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 @IsobusVTMessageTypes.TextFontDataRes_large_font_sizes.");
+}
+return *this;
+}
+
+TextFontDataRes__large__font__sizes_template& TextFontDataRes__large__font__sizes_template::operator=(const TextFontDataRes__large__font__sizes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean TextFontDataRes__large__font__sizes_template::match(const TextFontDataRes__large__font__sizes& 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.font__32x48().is_bound()) return FALSE;
+if(!single_value->field_font__32x48.match(other_value.font__32x48(), legacy))return FALSE;
+if(!other_value.font__48x64().is_bound()) return FALSE;
+if(!single_value->field_font__48x64.match(other_value.font__48x64(), legacy))return FALSE;
+if(!other_value.font__64x64().is_bound()) return FALSE;
+if(!single_value->field_font__64x64.match(other_value.font__64x64(), legacy))return FALSE;
+if(!other_value.font__64x96().is_bound()) return FALSE;
+if(!single_value->field_font__64x96.match(other_value.font__64x96(), legacy))return FALSE;
+if(!other_value.font__96x128().is_bound()) return FALSE;
+if(!single_value->field_font__96x128.match(other_value.font__96x128(), legacy))return FALSE;
+if(!other_value.font__128x128().is_bound()) return FALSE;
+if(!single_value->field_font__128x128.match(other_value.font__128x128(), legacy))return FALSE;
+if(!other_value.font__128x192().is_bound()) return FALSE;
+if(!single_value->field_font__128x192.match(other_value.font__128x192(), legacy))return FALSE;
+if(!other_value.reserved().is_bound()) return FALSE;
+if(!single_value->field_reserved.match(other_value.reserved(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.TextFontDataRes_large_font_sizes.");
+}
+return FALSE;
+}
+
+boolean TextFontDataRes__large__font__sizes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_font__32x48.is_bound()
+
+ ||single_value->field_font__48x64.is_bound()
+
+ ||single_value->field_font__64x64.is_bound()
+
+ ||single_value->field_font__64x96.is_bound()
+
+ ||single_value->field_font__96x128.is_bound()
+
+ ||single_value->field_font__128x128.is_bound()
+
+ ||single_value->field_font__128x192.is_bound()
+
+ ||single_value->field_reserved.is_bound()
+;
+}
+
+boolean TextFontDataRes__large__font__sizes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_font__32x48.is_value()
+ &&single_value->field_font__48x64.is_value()
+ &&single_value->field_font__64x64.is_value()
+ &&single_value->field_font__64x96.is_value()
+ &&single_value->field_font__96x128.is_value()
+ &&single_value->field_font__128x128.is_value()
+ &&single_value->field_font__128x192.is_value()
+ &&single_value->field_reserved.is_value();
+}
+
+void TextFontDataRes__large__font__sizes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+TextFontDataRes__large__font__sizes TextFontDataRes__large__font__sizes_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 @IsobusVTMessageTypes.TextFontDataRes_large_font_sizes.");
+TextFontDataRes__large__font__sizes ret_val;
+if (single_value->field_font__32x48.is_bound()) {
+ret_val.font__32x48() = single_value->field_font__32x48.valueof();
+}
+if (single_value->field_font__48x64.is_bound()) {
+ret_val.font__48x64() = single_value->field_font__48x64.valueof();
+}
+if (single_value->field_font__64x64.is_bound()) {
+ret_val.font__64x64() = single_value->field_font__64x64.valueof();
+}
+if (single_value->field_font__64x96.is_bound()) {
+ret_val.font__64x96() = single_value->field_font__64x96.valueof();
+}
+if (single_value->field_font__96x128.is_bound()) {
+ret_val.font__96x128() = single_value->field_font__96x128.valueof();
+}
+if (single_value->field_font__128x128.is_bound()) {
+ret_val.font__128x128() = single_value->field_font__128x128.valueof();
+}
+if (single_value->field_font__128x192.is_bound()) {
+ret_val.font__128x192() = single_value->field_font__128x192.valueof();
+}
+if (single_value->field_reserved.is_bound()) {
+ret_val.reserved() = single_value->field_reserved.valueof();
+}
+return ret_val;
+}
+
+void TextFontDataRes__large__font__sizes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.TextFontDataRes_large_font_sizes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new TextFontDataRes__large__font__sizes_template[list_length];
+}
+
+TextFontDataRes__large__font__sizes_template& TextFontDataRes__large__font__sizes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.TextFontDataRes_large_font_sizes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.TextFontDataRes_large_font_sizes.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& TextFontDataRes__large__font__sizes_template::font__32x48()
+{
+set_specific();
+return single_value->field_font__32x48;
+}
+
+const BOOLEAN_template& TextFontDataRes__large__font__sizes_template::font__32x48() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field font_32x48 of a non-specific template of type @IsobusVTMessageTypes.TextFontDataRes_large_font_sizes.");
+return single_value->field_font__32x48;
+}
+
+BOOLEAN_template& TextFontDataRes__large__font__sizes_template::font__48x64()
+{
+set_specific();
+return single_value->field_font__48x64;
+}
+
+const BOOLEAN_template& TextFontDataRes__large__font__sizes_template::font__48x64() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field font_48x64 of a non-specific template of type @IsobusVTMessageTypes.TextFontDataRes_large_font_sizes.");
+return single_value->field_font__48x64;
+}
+
+BOOLEAN_template& TextFontDataRes__large__font__sizes_template::font__64x64()
+{
+set_specific();
+return single_value->field_font__64x64;
+}
+
+const BOOLEAN_template& TextFontDataRes__large__font__sizes_template::font__64x64() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field font_64x64 of a non-specific template of type @IsobusVTMessageTypes.TextFontDataRes_large_font_sizes.");
+return single_value->field_font__64x64;
+}
+
+BOOLEAN_template& TextFontDataRes__large__font__sizes_template::font__64x96()
+{
+set_specific();
+return single_value->field_font__64x96;
+}
+
+const BOOLEAN_template& TextFontDataRes__large__font__sizes_template::font__64x96() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field font_64x96 of a non-specific template of type @IsobusVTMessageTypes.TextFontDataRes_large_font_sizes.");
+return single_value->field_font__64x96;
+}
+
+BOOLEAN_template& TextFontDataRes__large__font__sizes_template::font__96x128()
+{
+set_specific();
+return single_value->field_font__96x128;
+}
+
+const BOOLEAN_template& TextFontDataRes__large__font__sizes_template::font__96x128() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field font_96x128 of a non-specific template of type @IsobusVTMessageTypes.TextFontDataRes_large_font_sizes.");
+return single_value->field_font__96x128;
+}
+
+BOOLEAN_template& TextFontDataRes__large__font__sizes_template::font__128x128()
+{
+set_specific();
+return single_value->field_font__128x128;
+}
+
+const BOOLEAN_template& TextFontDataRes__large__font__sizes_template::font__128x128() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field font_128x128 of a non-specific template of type @IsobusVTMessageTypes.TextFontDataRes_large_font_sizes.");
+return single_value->field_font__128x128;
+}
+
+BOOLEAN_template& TextFontDataRes__large__font__sizes_template::font__128x192()
+{
+set_specific();
+return single_value->field_font__128x192;
+}
+
+const BOOLEAN_template& TextFontDataRes__large__font__sizes_template::font__128x192() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field font_128x192 of a non-specific template of type @IsobusVTMessageTypes.TextFontDataRes_large_font_sizes.");
+return single_value->field_font__128x192;
+}
+
+BOOLEAN_template& TextFontDataRes__large__font__sizes_template::reserved()
+{
+set_specific();
+return single_value->field_reserved;
+}
+
+const BOOLEAN_template& TextFontDataRes__large__font__sizes_template::reserved() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved of a non-specific template of type @IsobusVTMessageTypes.TextFontDataRes_large_font_sizes.");
+return single_value->field_reserved;
+}
+
+int TextFontDataRes__large__font__sizes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.TextFontDataRes_large_font_sizes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.TextFontDataRes_large_font_sizes 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 @IsobusVTMessageTypes.TextFontDataRes_large_font_sizes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.TextFontDataRes_large_font_sizes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.TextFontDataRes_large_font_sizes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.TextFontDataRes_large_font_sizes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.TextFontDataRes_large_font_sizes.");
+  }
+  return 0;
+}
+
+void TextFontDataRes__large__font__sizes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ font_32x48 := ");
+single_value->field_font__32x48.log();
+TTCN_Logger::log_event_str(", font_48x64 := ");
+single_value->field_font__48x64.log();
+TTCN_Logger::log_event_str(", font_64x64 := ");
+single_value->field_font__64x64.log();
+TTCN_Logger::log_event_str(", font_64x96 := ");
+single_value->field_font__64x96.log();
+TTCN_Logger::log_event_str(", font_96x128 := ");
+single_value->field_font__96x128.log();
+TTCN_Logger::log_event_str(", font_128x128 := ");
+single_value->field_font__128x128.log();
+TTCN_Logger::log_event_str(", font_128x192 := ");
+single_value->field_font__128x192.log();
+TTCN_Logger::log_event_str(", reserved := ");
+single_value->field_reserved.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void TextFontDataRes__large__font__sizes_template::log_match(const TextFontDataRes__large__font__sizes& 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_font__32x48.match(match_value.font__32x48(), legacy)){
+TTCN_Logger::log_logmatch_info(".font_32x48");
+single_value->field_font__32x48.log_match(match_value.font__32x48(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_font__48x64.match(match_value.font__48x64(), legacy)){
+TTCN_Logger::log_logmatch_info(".font_48x64");
+single_value->field_font__48x64.log_match(match_value.font__48x64(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_font__64x64.match(match_value.font__64x64(), legacy)){
+TTCN_Logger::log_logmatch_info(".font_64x64");
+single_value->field_font__64x64.log_match(match_value.font__64x64(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_font__64x96.match(match_value.font__64x96(), legacy)){
+TTCN_Logger::log_logmatch_info(".font_64x96");
+single_value->field_font__64x96.log_match(match_value.font__64x96(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_font__96x128.match(match_value.font__96x128(), legacy)){
+TTCN_Logger::log_logmatch_info(".font_96x128");
+single_value->field_font__96x128.log_match(match_value.font__96x128(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_font__128x128.match(match_value.font__128x128(), legacy)){
+TTCN_Logger::log_logmatch_info(".font_128x128");
+single_value->field_font__128x128.log_match(match_value.font__128x128(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_font__128x192.match(match_value.font__128x192(), legacy)){
+TTCN_Logger::log_logmatch_info(".font_128x192");
+single_value->field_font__128x192.log_match(match_value.font__128x192(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved.match(match_value.reserved(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved");
+single_value->field_reserved.log_match(match_value.reserved(), 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("{ font_32x48 := ");
+single_value->field_font__32x48.log_match(match_value.font__32x48(), legacy);
+TTCN_Logger::log_event_str(", font_48x64 := ");
+single_value->field_font__48x64.log_match(match_value.font__48x64(), legacy);
+TTCN_Logger::log_event_str(", font_64x64 := ");
+single_value->field_font__64x64.log_match(match_value.font__64x64(), legacy);
+TTCN_Logger::log_event_str(", font_64x96 := ");
+single_value->field_font__64x96.log_match(match_value.font__64x96(), legacy);
+TTCN_Logger::log_event_str(", font_96x128 := ");
+single_value->field_font__96x128.log_match(match_value.font__96x128(), legacy);
+TTCN_Logger::log_event_str(", font_128x128 := ");
+single_value->field_font__128x128.log_match(match_value.font__128x128(), legacy);
+TTCN_Logger::log_event_str(", font_128x192 := ");
+single_value->field_font__128x192.log_match(match_value.font__128x192(), legacy);
+TTCN_Logger::log_event_str(", reserved := ");
+single_value->field_reserved.log_match(match_value.reserved(), 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 TextFontDataRes__large__font__sizes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_font__32x48.encode_text(text_buf);
+single_value->field_font__48x64.encode_text(text_buf);
+single_value->field_font__64x64.encode_text(text_buf);
+single_value->field_font__64x96.encode_text(text_buf);
+single_value->field_font__96x128.encode_text(text_buf);
+single_value->field_font__128x128.encode_text(text_buf);
+single_value->field_font__128x192.encode_text(text_buf);
+single_value->field_reserved.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 @IsobusVTMessageTypes.TextFontDataRes_large_font_sizes.");
+}
+}
+
+void TextFontDataRes__large__font__sizes_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_font__32x48.decode_text(text_buf);
+single_value->field_font__48x64.decode_text(text_buf);
+single_value->field_font__64x64.decode_text(text_buf);
+single_value->field_font__64x96.decode_text(text_buf);
+single_value->field_font__96x128.decode_text(text_buf);
+single_value->field_font__128x128.decode_text(text_buf);
+single_value->field_font__128x192.decode_text(text_buf);
+single_value->field_reserved.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 TextFontDataRes__large__font__sizes_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 @IsobusVTMessageTypes.TextFontDataRes_large_font_sizes.");
+}
+}
+
+void TextFontDataRes__large__font__sizes_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: {
+    TextFontDataRes__large__font__sizes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.TextFontDataRes_large_font_sizes has 8 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) font__32x48().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) font__48x64().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) font__64x64().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) font__64x96().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) font__96x128().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) font__128x128().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) font__128x192().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved().set_param(*param.get_elem(7));
+    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(), "font_32x48")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          font__32x48().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(), "font_48x64")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          font__48x64().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(), "font_64x64")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          font__64x64().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(), "font_64x96")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          font__64x96().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(), "font_96x128")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          font__96x128().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(), "font_128x128")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          font__128x128().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(), "font_128x192")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          font__128x192().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(), "reserved")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved().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 @IsobusVTMessageTypes.TextFontDataRes_large_font_sizes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.TextFontDataRes_large_font_sizes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void TextFontDataRes__large__font__sizes_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_font__32x48.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.TextFontDataRes_large_font_sizes");
+single_value->field_font__48x64.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.TextFontDataRes_large_font_sizes");
+single_value->field_font__64x64.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.TextFontDataRes_large_font_sizes");
+single_value->field_font__64x96.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.TextFontDataRes_large_font_sizes");
+single_value->field_font__96x128.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.TextFontDataRes_large_font_sizes");
+single_value->field_font__128x128.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.TextFontDataRes_large_font_sizes");
+single_value->field_font__128x192.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.TextFontDataRes_large_font_sizes");
+single_value->field_reserved.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.TextFontDataRes_large_font_sizes");
+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 : "@IsobusVTMessageTypes.TextFontDataRes_large_font_sizes");
+}
+
+boolean TextFontDataRes__large__font__sizes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean TextFontDataRes__large__font__sizes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+TextFontDataRes__type__attribute::TextFontDataRes__type__attribute()
+{
+}
+
+TextFontDataRes__type__attribute::TextFontDataRes__type__attribute(const BOOLEAN& par_bold__text,
+    const BOOLEAN& par_crossed__out__text,
+    const BOOLEAN& par_underlined__text,
+    const BOOLEAN& par_italics__text,
+    const BOOLEAN& par_inverted__text,
+    const BOOLEAN& par_flash__inverted,
+    const BOOLEAN& par_flash__background__and__foreground,
+    const BOOLEAN& par_proportional__font__rendering)
+  :   field_bold__text(par_bold__text),
+  field_crossed__out__text(par_crossed__out__text),
+  field_underlined__text(par_underlined__text),
+  field_italics__text(par_italics__text),
+  field_inverted__text(par_inverted__text),
+  field_flash__inverted(par_flash__inverted),
+  field_flash__background__and__foreground(par_flash__background__and__foreground),
+  field_proportional__font__rendering(par_proportional__font__rendering)
+{
+}
+
+TextFontDataRes__type__attribute::TextFontDataRes__type__attribute(const TextFontDataRes__type__attribute& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.TextFontDataRes_type_attribute.");
+if (other_value.bold__text().is_bound()) field_bold__text = other_value.bold__text();
+else field_bold__text.clean_up();
+if (other_value.crossed__out__text().is_bound()) field_crossed__out__text = other_value.crossed__out__text();
+else field_crossed__out__text.clean_up();
+if (other_value.underlined__text().is_bound()) field_underlined__text = other_value.underlined__text();
+else field_underlined__text.clean_up();
+if (other_value.italics__text().is_bound()) field_italics__text = other_value.italics__text();
+else field_italics__text.clean_up();
+if (other_value.inverted__text().is_bound()) field_inverted__text = other_value.inverted__text();
+else field_inverted__text.clean_up();
+if (other_value.flash__inverted().is_bound()) field_flash__inverted = other_value.flash__inverted();
+else field_flash__inverted.clean_up();
+if (other_value.flash__background__and__foreground().is_bound()) field_flash__background__and__foreground = other_value.flash__background__and__foreground();
+else field_flash__background__and__foreground.clean_up();
+if (other_value.proportional__font__rendering().is_bound()) field_proportional__font__rendering = other_value.proportional__font__rendering();
+else field_proportional__font__rendering.clean_up();
+}
+
+void TextFontDataRes__type__attribute::clean_up()
+{
+field_bold__text.clean_up();
+field_crossed__out__text.clean_up();
+field_underlined__text.clean_up();
+field_italics__text.clean_up();
+field_inverted__text.clean_up();
+field_flash__inverted.clean_up();
+field_flash__background__and__foreground.clean_up();
+field_proportional__font__rendering.clean_up();
+}
+
+const TTCN_Typedescriptor_t* TextFontDataRes__type__attribute::get_descriptor() const { return &TextFontDataRes__type__attribute_descr_; }
+TextFontDataRes__type__attribute& TextFontDataRes__type__attribute::operator=(const TextFontDataRes__type__attribute& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.TextFontDataRes_type_attribute.");
+  if (other_value.bold__text().is_bound()) field_bold__text = other_value.bold__text();
+  else field_bold__text.clean_up();
+  if (other_value.crossed__out__text().is_bound()) field_crossed__out__text = other_value.crossed__out__text();
+  else field_crossed__out__text.clean_up();
+  if (other_value.underlined__text().is_bound()) field_underlined__text = other_value.underlined__text();
+  else field_underlined__text.clean_up();
+  if (other_value.italics__text().is_bound()) field_italics__text = other_value.italics__text();
+  else field_italics__text.clean_up();
+  if (other_value.inverted__text().is_bound()) field_inverted__text = other_value.inverted__text();
+  else field_inverted__text.clean_up();
+  if (other_value.flash__inverted().is_bound()) field_flash__inverted = other_value.flash__inverted();
+  else field_flash__inverted.clean_up();
+  if (other_value.flash__background__and__foreground().is_bound()) field_flash__background__and__foreground = other_value.flash__background__and__foreground();
+  else field_flash__background__and__foreground.clean_up();
+  if (other_value.proportional__font__rendering().is_bound()) field_proportional__font__rendering = other_value.proportional__font__rendering();
+  else field_proportional__font__rendering.clean_up();
+}
+return *this;
+}
+
+boolean TextFontDataRes__type__attribute::operator==(const TextFontDataRes__type__attribute& other_value) const
+{
+return field_bold__text==other_value.field_bold__text
+  && field_crossed__out__text==other_value.field_crossed__out__text
+  && field_underlined__text==other_value.field_underlined__text
+  && field_italics__text==other_value.field_italics__text
+  && field_inverted__text==other_value.field_inverted__text
+  && field_flash__inverted==other_value.field_flash__inverted
+  && field_flash__background__and__foreground==other_value.field_flash__background__and__foreground
+  && field_proportional__font__rendering==other_value.field_proportional__font__rendering;
+}
+
+boolean TextFontDataRes__type__attribute::is_bound() const
+{
+return (field_bold__text.is_bound())
+  || (field_crossed__out__text.is_bound())
+  || (field_underlined__text.is_bound())
+  || (field_italics__text.is_bound())
+  || (field_inverted__text.is_bound())
+  || (field_flash__inverted.is_bound())
+  || (field_flash__background__and__foreground.is_bound())
+  || (field_proportional__font__rendering.is_bound());
+}
+boolean TextFontDataRes__type__attribute::is_value() const
+{
+return field_bold__text.is_value()
+  && field_crossed__out__text.is_value()
+  && field_underlined__text.is_value()
+  && field_italics__text.is_value()
+  && field_inverted__text.is_value()
+  && field_flash__inverted.is_value()
+  && field_flash__background__and__foreground.is_value()
+  && field_proportional__font__rendering.is_value();
+}
+void TextFontDataRes__type__attribute::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ bold_text := ");
+field_bold__text.log();
+TTCN_Logger::log_event_str(", crossed_out_text := ");
+field_crossed__out__text.log();
+TTCN_Logger::log_event_str(", underlined_text := ");
+field_underlined__text.log();
+TTCN_Logger::log_event_str(", italics_text := ");
+field_italics__text.log();
+TTCN_Logger::log_event_str(", inverted_text := ");
+field_inverted__text.log();
+TTCN_Logger::log_event_str(", flash_inverted := ");
+field_flash__inverted.log();
+TTCN_Logger::log_event_str(", flash_background_and_foreground := ");
+field_flash__background__and__foreground.log();
+TTCN_Logger::log_event_str(", proportional_font_rendering := ");
+field_proportional__font__rendering.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void TextFontDataRes__type__attribute::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.TextFontDataRes_type_attribute has 8 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) bold__text().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) crossed__out__text().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) underlined__text().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) italics__text().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) inverted__text().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) flash__inverted().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) flash__background__and__foreground().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) proportional__font__rendering().set_param(*param.get_elem(7));
+    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(), "bold_text")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          bold__text().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(), "crossed_out_text")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          crossed__out__text().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(), "underlined_text")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          underlined__text().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(), "italics_text")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          italics__text().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(), "inverted_text")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          inverted__text().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(), "flash_inverted")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          flash__inverted().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(), "flash_background_and_foreground")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          flash__background__and__foreground().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(), "proportional_font_rendering")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          proportional__font__rendering().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 @IsobusVTMessageTypes.TextFontDataRes_type_attribute: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.TextFontDataRes_type_attribute");
+  }
+}
+
+void TextFontDataRes__type__attribute::set_implicit_omit()
+{
+if (bold__text().is_bound()) bold__text().set_implicit_omit();
+if (crossed__out__text().is_bound()) crossed__out__text().set_implicit_omit();
+if (underlined__text().is_bound()) underlined__text().set_implicit_omit();
+if (italics__text().is_bound()) italics__text().set_implicit_omit();
+if (inverted__text().is_bound()) inverted__text().set_implicit_omit();
+if (flash__inverted().is_bound()) flash__inverted().set_implicit_omit();
+if (flash__background__and__foreground().is_bound()) flash__background__and__foreground().set_implicit_omit();
+if (proportional__font__rendering().is_bound()) proportional__font__rendering().set_implicit_omit();
+}
+
+void TextFontDataRes__type__attribute::encode_text(Text_Buf& text_buf) const
+{
+field_bold__text.encode_text(text_buf);
+field_crossed__out__text.encode_text(text_buf);
+field_underlined__text.encode_text(text_buf);
+field_italics__text.encode_text(text_buf);
+field_inverted__text.encode_text(text_buf);
+field_flash__inverted.encode_text(text_buf);
+field_flash__background__and__foreground.encode_text(text_buf);
+field_proportional__font__rendering.encode_text(text_buf);
+}
+
+void TextFontDataRes__type__attribute::decode_text(Text_Buf& text_buf)
+{
+field_bold__text.decode_text(text_buf);
+field_crossed__out__text.decode_text(text_buf);
+field_underlined__text.decode_text(text_buf);
+field_italics__text.decode_text(text_buf);
+field_inverted__text.decode_text(text_buf);
+field_flash__inverted.decode_text(text_buf);
+field_flash__background__and__foreground.decode_text(text_buf);
+field_proportional__font__rendering.decode_text(text_buf);
+}
+
+void TextFontDataRes__type__attribute::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void TextFontDataRes__type__attribute::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int TextFontDataRes__type__attribute::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_bold__text.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_crossed__out__text.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_underlined__text.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_italics__text.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_inverted__text.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_flash__inverted.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_flash__background__and__foreground.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_proportional__font__rendering.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int TextFontDataRes__type__attribute::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_bold__text.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_crossed__out__text.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_underlined__text.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_italics__text.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_inverted__text.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_flash__inverted.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_flash__background__and__foreground.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_proportional__font__rendering.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct TextFontDataRes__type__attribute_template::single_value_struct {
+BOOLEAN_template field_bold__text;
+BOOLEAN_template field_crossed__out__text;
+BOOLEAN_template field_underlined__text;
+BOOLEAN_template field_italics__text;
+BOOLEAN_template field_inverted__text;
+BOOLEAN_template field_flash__inverted;
+BOOLEAN_template field_flash__background__and__foreground;
+BOOLEAN_template field_proportional__font__rendering;
+};
+
+void TextFontDataRes__type__attribute_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_bold__text = ANY_VALUE;
+single_value->field_crossed__out__text = ANY_VALUE;
+single_value->field_underlined__text = ANY_VALUE;
+single_value->field_italics__text = ANY_VALUE;
+single_value->field_inverted__text = ANY_VALUE;
+single_value->field_flash__inverted = ANY_VALUE;
+single_value->field_flash__background__and__foreground = ANY_VALUE;
+single_value->field_proportional__font__rendering = ANY_VALUE;
+}
+}
+}
+
+void TextFontDataRes__type__attribute_template::copy_value(const TextFontDataRes__type__attribute& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.bold__text().is_bound()) {
+  single_value->field_bold__text = other_value.bold__text();
+} else {
+  single_value->field_bold__text.clean_up();
+}
+if (other_value.crossed__out__text().is_bound()) {
+  single_value->field_crossed__out__text = other_value.crossed__out__text();
+} else {
+  single_value->field_crossed__out__text.clean_up();
+}
+if (other_value.underlined__text().is_bound()) {
+  single_value->field_underlined__text = other_value.underlined__text();
+} else {
+  single_value->field_underlined__text.clean_up();
+}
+if (other_value.italics__text().is_bound()) {
+  single_value->field_italics__text = other_value.italics__text();
+} else {
+  single_value->field_italics__text.clean_up();
+}
+if (other_value.inverted__text().is_bound()) {
+  single_value->field_inverted__text = other_value.inverted__text();
+} else {
+  single_value->field_inverted__text.clean_up();
+}
+if (other_value.flash__inverted().is_bound()) {
+  single_value->field_flash__inverted = other_value.flash__inverted();
+} else {
+  single_value->field_flash__inverted.clean_up();
+}
+if (other_value.flash__background__and__foreground().is_bound()) {
+  single_value->field_flash__background__and__foreground = other_value.flash__background__and__foreground();
+} else {
+  single_value->field_flash__background__and__foreground.clean_up();
+}
+if (other_value.proportional__font__rendering().is_bound()) {
+  single_value->field_proportional__font__rendering = other_value.proportional__font__rendering();
+} else {
+  single_value->field_proportional__font__rendering.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void TextFontDataRes__type__attribute_template::copy_template(const TextFontDataRes__type__attribute_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.bold__text().get_selection()) {
+single_value->field_bold__text = other_value.bold__text();
+} else {
+single_value->field_bold__text.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.crossed__out__text().get_selection()) {
+single_value->field_crossed__out__text = other_value.crossed__out__text();
+} else {
+single_value->field_crossed__out__text.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.underlined__text().get_selection()) {
+single_value->field_underlined__text = other_value.underlined__text();
+} else {
+single_value->field_underlined__text.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.italics__text().get_selection()) {
+single_value->field_italics__text = other_value.italics__text();
+} else {
+single_value->field_italics__text.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.inverted__text().get_selection()) {
+single_value->field_inverted__text = other_value.inverted__text();
+} else {
+single_value->field_inverted__text.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.flash__inverted().get_selection()) {
+single_value->field_flash__inverted = other_value.flash__inverted();
+} else {
+single_value->field_flash__inverted.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.flash__background__and__foreground().get_selection()) {
+single_value->field_flash__background__and__foreground = other_value.flash__background__and__foreground();
+} else {
+single_value->field_flash__background__and__foreground.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.proportional__font__rendering().get_selection()) {
+single_value->field_proportional__font__rendering = other_value.proportional__font__rendering();
+} else {
+single_value->field_proportional__font__rendering.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new TextFontDataRes__type__attribute_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.TextFontDataRes_type_attribute.");
+break;
+}
+set_selection(other_value);
+}
+
+TextFontDataRes__type__attribute_template::TextFontDataRes__type__attribute_template()
+{
+}
+
+TextFontDataRes__type__attribute_template::TextFontDataRes__type__attribute_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+TextFontDataRes__type__attribute_template::TextFontDataRes__type__attribute_template(const TextFontDataRes__type__attribute& other_value)
+{
+copy_value(other_value);
+}
+
+TextFontDataRes__type__attribute_template::TextFontDataRes__type__attribute_template(const OPTIONAL<TextFontDataRes__type__attribute>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const TextFontDataRes__type__attribute&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.TextFontDataRes_type_attribute from an unbound optional field.");
+}
+}
+
+TextFontDataRes__type__attribute_template::TextFontDataRes__type__attribute_template(const TextFontDataRes__type__attribute_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+TextFontDataRes__type__attribute_template::~TextFontDataRes__type__attribute_template()
+{
+clean_up();
+}
+
+TextFontDataRes__type__attribute_template& TextFontDataRes__type__attribute_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+TextFontDataRes__type__attribute_template& TextFontDataRes__type__attribute_template::operator=(const TextFontDataRes__type__attribute& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+TextFontDataRes__type__attribute_template& TextFontDataRes__type__attribute_template::operator=(const OPTIONAL<TextFontDataRes__type__attribute>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const TextFontDataRes__type__attribute&)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 @IsobusVTMessageTypes.TextFontDataRes_type_attribute.");
+}
+return *this;
+}
+
+TextFontDataRes__type__attribute_template& TextFontDataRes__type__attribute_template::operator=(const TextFontDataRes__type__attribute_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean TextFontDataRes__type__attribute_template::match(const TextFontDataRes__type__attribute& 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.bold__text().is_bound()) return FALSE;
+if(!single_value->field_bold__text.match(other_value.bold__text(), legacy))return FALSE;
+if(!other_value.crossed__out__text().is_bound()) return FALSE;
+if(!single_value->field_crossed__out__text.match(other_value.crossed__out__text(), legacy))return FALSE;
+if(!other_value.underlined__text().is_bound()) return FALSE;
+if(!single_value->field_underlined__text.match(other_value.underlined__text(), legacy))return FALSE;
+if(!other_value.italics__text().is_bound()) return FALSE;
+if(!single_value->field_italics__text.match(other_value.italics__text(), legacy))return FALSE;
+if(!other_value.inverted__text().is_bound()) return FALSE;
+if(!single_value->field_inverted__text.match(other_value.inverted__text(), legacy))return FALSE;
+if(!other_value.flash__inverted().is_bound()) return FALSE;
+if(!single_value->field_flash__inverted.match(other_value.flash__inverted(), legacy))return FALSE;
+if(!other_value.flash__background__and__foreground().is_bound()) return FALSE;
+if(!single_value->field_flash__background__and__foreground.match(other_value.flash__background__and__foreground(), legacy))return FALSE;
+if(!other_value.proportional__font__rendering().is_bound()) return FALSE;
+if(!single_value->field_proportional__font__rendering.match(other_value.proportional__font__rendering(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.TextFontDataRes_type_attribute.");
+}
+return FALSE;
+}
+
+boolean TextFontDataRes__type__attribute_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_bold__text.is_bound()
+
+ ||single_value->field_crossed__out__text.is_bound()
+
+ ||single_value->field_underlined__text.is_bound()
+
+ ||single_value->field_italics__text.is_bound()
+
+ ||single_value->field_inverted__text.is_bound()
+
+ ||single_value->field_flash__inverted.is_bound()
+
+ ||single_value->field_flash__background__and__foreground.is_bound()
+
+ ||single_value->field_proportional__font__rendering.is_bound()
+;
+}
+
+boolean TextFontDataRes__type__attribute_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_bold__text.is_value()
+ &&single_value->field_crossed__out__text.is_value()
+ &&single_value->field_underlined__text.is_value()
+ &&single_value->field_italics__text.is_value()
+ &&single_value->field_inverted__text.is_value()
+ &&single_value->field_flash__inverted.is_value()
+ &&single_value->field_flash__background__and__foreground.is_value()
+ &&single_value->field_proportional__font__rendering.is_value();
+}
+
+void TextFontDataRes__type__attribute_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+TextFontDataRes__type__attribute TextFontDataRes__type__attribute_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 @IsobusVTMessageTypes.TextFontDataRes_type_attribute.");
+TextFontDataRes__type__attribute ret_val;
+if (single_value->field_bold__text.is_bound()) {
+ret_val.bold__text() = single_value->field_bold__text.valueof();
+}
+if (single_value->field_crossed__out__text.is_bound()) {
+ret_val.crossed__out__text() = single_value->field_crossed__out__text.valueof();
+}
+if (single_value->field_underlined__text.is_bound()) {
+ret_val.underlined__text() = single_value->field_underlined__text.valueof();
+}
+if (single_value->field_italics__text.is_bound()) {
+ret_val.italics__text() = single_value->field_italics__text.valueof();
+}
+if (single_value->field_inverted__text.is_bound()) {
+ret_val.inverted__text() = single_value->field_inverted__text.valueof();
+}
+if (single_value->field_flash__inverted.is_bound()) {
+ret_val.flash__inverted() = single_value->field_flash__inverted.valueof();
+}
+if (single_value->field_flash__background__and__foreground.is_bound()) {
+ret_val.flash__background__and__foreground() = single_value->field_flash__background__and__foreground.valueof();
+}
+if (single_value->field_proportional__font__rendering.is_bound()) {
+ret_val.proportional__font__rendering() = single_value->field_proportional__font__rendering.valueof();
+}
+return ret_val;
+}
+
+void TextFontDataRes__type__attribute_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.TextFontDataRes_type_attribute.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new TextFontDataRes__type__attribute_template[list_length];
+}
+
+TextFontDataRes__type__attribute_template& TextFontDataRes__type__attribute_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.TextFontDataRes_type_attribute.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.TextFontDataRes_type_attribute.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& TextFontDataRes__type__attribute_template::bold__text()
+{
+set_specific();
+return single_value->field_bold__text;
+}
+
+const BOOLEAN_template& TextFontDataRes__type__attribute_template::bold__text() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field bold_text of a non-specific template of type @IsobusVTMessageTypes.TextFontDataRes_type_attribute.");
+return single_value->field_bold__text;
+}
+
+BOOLEAN_template& TextFontDataRes__type__attribute_template::crossed__out__text()
+{
+set_specific();
+return single_value->field_crossed__out__text;
+}
+
+const BOOLEAN_template& TextFontDataRes__type__attribute_template::crossed__out__text() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field crossed_out_text of a non-specific template of type @IsobusVTMessageTypes.TextFontDataRes_type_attribute.");
+return single_value->field_crossed__out__text;
+}
+
+BOOLEAN_template& TextFontDataRes__type__attribute_template::underlined__text()
+{
+set_specific();
+return single_value->field_underlined__text;
+}
+
+const BOOLEAN_template& TextFontDataRes__type__attribute_template::underlined__text() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field underlined_text of a non-specific template of type @IsobusVTMessageTypes.TextFontDataRes_type_attribute.");
+return single_value->field_underlined__text;
+}
+
+BOOLEAN_template& TextFontDataRes__type__attribute_template::italics__text()
+{
+set_specific();
+return single_value->field_italics__text;
+}
+
+const BOOLEAN_template& TextFontDataRes__type__attribute_template::italics__text() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field italics_text of a non-specific template of type @IsobusVTMessageTypes.TextFontDataRes_type_attribute.");
+return single_value->field_italics__text;
+}
+
+BOOLEAN_template& TextFontDataRes__type__attribute_template::inverted__text()
+{
+set_specific();
+return single_value->field_inverted__text;
+}
+
+const BOOLEAN_template& TextFontDataRes__type__attribute_template::inverted__text() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field inverted_text of a non-specific template of type @IsobusVTMessageTypes.TextFontDataRes_type_attribute.");
+return single_value->field_inverted__text;
+}
+
+BOOLEAN_template& TextFontDataRes__type__attribute_template::flash__inverted()
+{
+set_specific();
+return single_value->field_flash__inverted;
+}
+
+const BOOLEAN_template& TextFontDataRes__type__attribute_template::flash__inverted() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field flash_inverted of a non-specific template of type @IsobusVTMessageTypes.TextFontDataRes_type_attribute.");
+return single_value->field_flash__inverted;
+}
+
+BOOLEAN_template& TextFontDataRes__type__attribute_template::flash__background__and__foreground()
+{
+set_specific();
+return single_value->field_flash__background__and__foreground;
+}
+
+const BOOLEAN_template& TextFontDataRes__type__attribute_template::flash__background__and__foreground() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field flash_background_and_foreground of a non-specific template of type @IsobusVTMessageTypes.TextFontDataRes_type_attribute.");
+return single_value->field_flash__background__and__foreground;
+}
+
+BOOLEAN_template& TextFontDataRes__type__attribute_template::proportional__font__rendering()
+{
+set_specific();
+return single_value->field_proportional__font__rendering;
+}
+
+const BOOLEAN_template& TextFontDataRes__type__attribute_template::proportional__font__rendering() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field proportional_font_rendering of a non-specific template of type @IsobusVTMessageTypes.TextFontDataRes_type_attribute.");
+return single_value->field_proportional__font__rendering;
+}
+
+int TextFontDataRes__type__attribute_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.TextFontDataRes_type_attribute which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.TextFontDataRes_type_attribute 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 @IsobusVTMessageTypes.TextFontDataRes_type_attribute containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.TextFontDataRes_type_attribute containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.TextFontDataRes_type_attribute containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.TextFontDataRes_type_attribute containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.TextFontDataRes_type_attribute.");
+  }
+  return 0;
+}
+
+void TextFontDataRes__type__attribute_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ bold_text := ");
+single_value->field_bold__text.log();
+TTCN_Logger::log_event_str(", crossed_out_text := ");
+single_value->field_crossed__out__text.log();
+TTCN_Logger::log_event_str(", underlined_text := ");
+single_value->field_underlined__text.log();
+TTCN_Logger::log_event_str(", italics_text := ");
+single_value->field_italics__text.log();
+TTCN_Logger::log_event_str(", inverted_text := ");
+single_value->field_inverted__text.log();
+TTCN_Logger::log_event_str(", flash_inverted := ");
+single_value->field_flash__inverted.log();
+TTCN_Logger::log_event_str(", flash_background_and_foreground := ");
+single_value->field_flash__background__and__foreground.log();
+TTCN_Logger::log_event_str(", proportional_font_rendering := ");
+single_value->field_proportional__font__rendering.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void TextFontDataRes__type__attribute_template::log_match(const TextFontDataRes__type__attribute& 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_bold__text.match(match_value.bold__text(), legacy)){
+TTCN_Logger::log_logmatch_info(".bold_text");
+single_value->field_bold__text.log_match(match_value.bold__text(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_crossed__out__text.match(match_value.crossed__out__text(), legacy)){
+TTCN_Logger::log_logmatch_info(".crossed_out_text");
+single_value->field_crossed__out__text.log_match(match_value.crossed__out__text(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_underlined__text.match(match_value.underlined__text(), legacy)){
+TTCN_Logger::log_logmatch_info(".underlined_text");
+single_value->field_underlined__text.log_match(match_value.underlined__text(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_italics__text.match(match_value.italics__text(), legacy)){
+TTCN_Logger::log_logmatch_info(".italics_text");
+single_value->field_italics__text.log_match(match_value.italics__text(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_inverted__text.match(match_value.inverted__text(), legacy)){
+TTCN_Logger::log_logmatch_info(".inverted_text");
+single_value->field_inverted__text.log_match(match_value.inverted__text(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_flash__inverted.match(match_value.flash__inverted(), legacy)){
+TTCN_Logger::log_logmatch_info(".flash_inverted");
+single_value->field_flash__inverted.log_match(match_value.flash__inverted(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_flash__background__and__foreground.match(match_value.flash__background__and__foreground(), legacy)){
+TTCN_Logger::log_logmatch_info(".flash_background_and_foreground");
+single_value->field_flash__background__and__foreground.log_match(match_value.flash__background__and__foreground(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_proportional__font__rendering.match(match_value.proportional__font__rendering(), legacy)){
+TTCN_Logger::log_logmatch_info(".proportional_font_rendering");
+single_value->field_proportional__font__rendering.log_match(match_value.proportional__font__rendering(), 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("{ bold_text := ");
+single_value->field_bold__text.log_match(match_value.bold__text(), legacy);
+TTCN_Logger::log_event_str(", crossed_out_text := ");
+single_value->field_crossed__out__text.log_match(match_value.crossed__out__text(), legacy);
+TTCN_Logger::log_event_str(", underlined_text := ");
+single_value->field_underlined__text.log_match(match_value.underlined__text(), legacy);
+TTCN_Logger::log_event_str(", italics_text := ");
+single_value->field_italics__text.log_match(match_value.italics__text(), legacy);
+TTCN_Logger::log_event_str(", inverted_text := ");
+single_value->field_inverted__text.log_match(match_value.inverted__text(), legacy);
+TTCN_Logger::log_event_str(", flash_inverted := ");
+single_value->field_flash__inverted.log_match(match_value.flash__inverted(), legacy);
+TTCN_Logger::log_event_str(", flash_background_and_foreground := ");
+single_value->field_flash__background__and__foreground.log_match(match_value.flash__background__and__foreground(), legacy);
+TTCN_Logger::log_event_str(", proportional_font_rendering := ");
+single_value->field_proportional__font__rendering.log_match(match_value.proportional__font__rendering(), 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 TextFontDataRes__type__attribute_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_bold__text.encode_text(text_buf);
+single_value->field_crossed__out__text.encode_text(text_buf);
+single_value->field_underlined__text.encode_text(text_buf);
+single_value->field_italics__text.encode_text(text_buf);
+single_value->field_inverted__text.encode_text(text_buf);
+single_value->field_flash__inverted.encode_text(text_buf);
+single_value->field_flash__background__and__foreground.encode_text(text_buf);
+single_value->field_proportional__font__rendering.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 @IsobusVTMessageTypes.TextFontDataRes_type_attribute.");
+}
+}
+
+void TextFontDataRes__type__attribute_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_bold__text.decode_text(text_buf);
+single_value->field_crossed__out__text.decode_text(text_buf);
+single_value->field_underlined__text.decode_text(text_buf);
+single_value->field_italics__text.decode_text(text_buf);
+single_value->field_inverted__text.decode_text(text_buf);
+single_value->field_flash__inverted.decode_text(text_buf);
+single_value->field_flash__background__and__foreground.decode_text(text_buf);
+single_value->field_proportional__font__rendering.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 TextFontDataRes__type__attribute_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 @IsobusVTMessageTypes.TextFontDataRes_type_attribute.");
+}
+}
+
+void TextFontDataRes__type__attribute_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: {
+    TextFontDataRes__type__attribute_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.TextFontDataRes_type_attribute has 8 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) bold__text().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) crossed__out__text().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) underlined__text().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) italics__text().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) inverted__text().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) flash__inverted().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) flash__background__and__foreground().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) proportional__font__rendering().set_param(*param.get_elem(7));
+    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(), "bold_text")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          bold__text().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(), "crossed_out_text")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          crossed__out__text().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(), "underlined_text")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          underlined__text().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(), "italics_text")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          italics__text().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(), "inverted_text")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          inverted__text().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(), "flash_inverted")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          flash__inverted().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(), "flash_background_and_foreground")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          flash__background__and__foreground().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(), "proportional_font_rendering")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          proportional__font__rendering().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 @IsobusVTMessageTypes.TextFontDataRes_type_attribute: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.TextFontDataRes_type_attribute");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void TextFontDataRes__type__attribute_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_bold__text.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.TextFontDataRes_type_attribute");
+single_value->field_crossed__out__text.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.TextFontDataRes_type_attribute");
+single_value->field_underlined__text.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.TextFontDataRes_type_attribute");
+single_value->field_italics__text.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.TextFontDataRes_type_attribute");
+single_value->field_inverted__text.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.TextFontDataRes_type_attribute");
+single_value->field_flash__inverted.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.TextFontDataRes_type_attribute");
+single_value->field_flash__background__and__foreground.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.TextFontDataRes_type_attribute");
+single_value->field_proportional__font__rendering.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.TextFontDataRes_type_attribute");
+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 : "@IsobusVTMessageTypes.TextFontDataRes_type_attribute");
+}
+
+boolean TextFontDataRes__type__attribute_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean TextFontDataRes__type__attribute_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+GetTextFontDataRes::GetTextFontDataRes()
+{
+}
+
+GetTextFontDataRes::GetTextFontDataRes(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_reserved2,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const TextFontDataRes__small__font__sizes& par_small__font__sizes,
+    const TextFontDataRes__large__font__sizes& par_large__font__sizes,
+    const TextFontDataRes__type__attribute& par_type__attribute)
+  :   field_vtfunction(par_vtfunction),
+  field_reserved2(par_reserved2),
+  field_reserved3(par_reserved3),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_small__font__sizes(par_small__font__sizes),
+  field_large__font__sizes(par_large__font__sizes),
+  field_type__attribute(par_type__attribute)
+{
+}
+
+GetTextFontDataRes::GetTextFontDataRes(const GetTextFontDataRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.GetTextFontDataRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+else field_reserved2.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.small__font__sizes().is_bound()) field_small__font__sizes = other_value.small__font__sizes();
+else field_small__font__sizes.clean_up();
+if (other_value.large__font__sizes().is_bound()) field_large__font__sizes = other_value.large__font__sizes();
+else field_large__font__sizes.clean_up();
+if (other_value.type__attribute().is_bound()) field_type__attribute = other_value.type__attribute();
+else field_type__attribute.clean_up();
+}
+
+void GetTextFontDataRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_reserved2.clean_up();
+field_reserved3.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_small__font__sizes.clean_up();
+field_large__font__sizes.clean_up();
+field_type__attribute.clean_up();
+}
+
+const TTCN_Typedescriptor_t* GetTextFontDataRes::get_descriptor() const { return &GetTextFontDataRes_descr_; }
+GetTextFontDataRes& GetTextFontDataRes::operator=(const GetTextFontDataRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.GetTextFontDataRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+  else field_reserved2.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.small__font__sizes().is_bound()) field_small__font__sizes = other_value.small__font__sizes();
+  else field_small__font__sizes.clean_up();
+  if (other_value.large__font__sizes().is_bound()) field_large__font__sizes = other_value.large__font__sizes();
+  else field_large__font__sizes.clean_up();
+  if (other_value.type__attribute().is_bound()) field_type__attribute = other_value.type__attribute();
+  else field_type__attribute.clean_up();
+}
+return *this;
+}
+
+boolean GetTextFontDataRes::operator==(const GetTextFontDataRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_reserved2==other_value.field_reserved2
+  && field_reserved3==other_value.field_reserved3
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_small__font__sizes==other_value.field_small__font__sizes
+  && field_large__font__sizes==other_value.field_large__font__sizes
+  && field_type__attribute==other_value.field_type__attribute;
+}
+
+boolean GetTextFontDataRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_reserved2.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_small__font__sizes.is_bound())
+  || (field_large__font__sizes.is_bound())
+  || (field_type__attribute.is_bound());
+}
+boolean GetTextFontDataRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_reserved2.is_value()
+  && field_reserved3.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_small__font__sizes.is_value()
+  && field_large__font__sizes.is_value()
+  && field_type__attribute.is_value();
+}
+void GetTextFontDataRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", small_font_sizes := ");
+field_small__font__sizes.log();
+TTCN_Logger::log_event_str(", large_font_sizes := ");
+field_large__font__sizes.log();
+TTCN_Logger::log_event_str(", type_attribute := ");
+field_type__attribute.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void GetTextFontDataRes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.GetTextFontDataRes has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) small__font__sizes().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) large__font__sizes().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) type__attribute().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "small_font_sizes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          small__font__sizes().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(), "large_font_sizes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          large__font__sizes().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_attribute")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          type__attribute().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 @IsobusVTMessageTypes.GetTextFontDataRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.GetTextFontDataRes");
+  }
+}
+
+void GetTextFontDataRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (reserved2().is_bound()) reserved2().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (small__font__sizes().is_bound()) small__font__sizes().set_implicit_omit();
+if (large__font__sizes().is_bound()) large__font__sizes().set_implicit_omit();
+if (type__attribute().is_bound()) type__attribute().set_implicit_omit();
+}
+
+void GetTextFontDataRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_reserved2.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_small__font__sizes.encode_text(text_buf);
+field_large__font__sizes.encode_text(text_buf);
+field_type__attribute.encode_text(text_buf);
+}
+
+void GetTextFontDataRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_reserved2.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_small__font__sizes.decode_text(text_buf);
+field_large__font__sizes.decode_text(text_buf);
+field_type__attribute.decode_text(text_buf);
+}
+
+void GetTextFontDataRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void GetTextFontDataRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int GetTextFontDataRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, GetTextFontDataRes_reserved2_descr_.raw->forceomit);
+  decoded_field_length = field_reserved2.RAW_decode(GetTextFontDataRes_reserved2_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, GetTextFontDataRes_reserved3_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(GetTextFontDataRes_reserved3_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, GetTextFontDataRes_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(GetTextFontDataRes_reserved4_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, GetTextFontDataRes_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(GetTextFontDataRes_reserved5_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, TextFontDataRes__small__font__sizes_descr_.raw->forceomit);
+  decoded_field_length = field_small__font__sizes.RAW_decode(TextFontDataRes__small__font__sizes_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, TextFontDataRes__large__font__sizes_descr_.raw->forceomit);
+  decoded_field_length = field_large__font__sizes.RAW_decode(TextFontDataRes__large__font__sizes_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, TextFontDataRes__type__attribute_descr_.raw->forceomit);
+  decoded_field_length = field_type__attribute.RAW_decode(TextFontDataRes__type__attribute_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int GetTextFontDataRes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, GetTextFontDataRes_reserved2_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, GetTextFontDataRes_reserved3_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, GetTextFontDataRes_reserved4_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, GetTextFontDataRes_reserved5_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, TextFontDataRes__small__font__sizes_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, TextFontDataRes__large__font__sizes_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, TextFontDataRes__type__attribute_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved2.RAW_encode(GetTextFontDataRes_reserved2_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved3.RAW_encode(GetTextFontDataRes_reserved3_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved4.RAW_encode(GetTextFontDataRes_reserved4_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved5.RAW_encode(GetTextFontDataRes_reserved5_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_small__font__sizes.RAW_encode(TextFontDataRes__small__font__sizes_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_large__font__sizes.RAW_encode(TextFontDataRes__large__font__sizes_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_type__attribute.RAW_encode(TextFontDataRes__type__attribute_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct GetTextFontDataRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+OCTETSTRING_template field_reserved2;
+OCTETSTRING_template field_reserved3;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+TextFontDataRes__small__font__sizes_template field_small__font__sizes;
+TextFontDataRes__large__font__sizes_template field_large__font__sizes;
+TextFontDataRes__type__attribute_template field_type__attribute;
+};
+
+void GetTextFontDataRes_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_vtfunction = ANY_VALUE;
+single_value->field_reserved2 = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_small__font__sizes = ANY_VALUE;
+single_value->field_large__font__sizes = ANY_VALUE;
+single_value->field_type__attribute = ANY_VALUE;
+}
+}
+}
+
+void GetTextFontDataRes_template::copy_value(const GetTextFontDataRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.reserved2().is_bound()) {
+  single_value->field_reserved2 = other_value.reserved2();
+} else {
+  single_value->field_reserved2.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.small__font__sizes().is_bound()) {
+  single_value->field_small__font__sizes = other_value.small__font__sizes();
+} else {
+  single_value->field_small__font__sizes.clean_up();
+}
+if (other_value.large__font__sizes().is_bound()) {
+  single_value->field_large__font__sizes = other_value.large__font__sizes();
+} else {
+  single_value->field_large__font__sizes.clean_up();
+}
+if (other_value.type__attribute().is_bound()) {
+  single_value->field_type__attribute = other_value.type__attribute();
+} else {
+  single_value->field_type__attribute.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void GetTextFontDataRes_template::copy_template(const GetTextFontDataRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved2().get_selection()) {
+single_value->field_reserved2 = other_value.reserved2();
+} else {
+single_value->field_reserved2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.small__font__sizes().get_selection()) {
+single_value->field_small__font__sizes = other_value.small__font__sizes();
+} else {
+single_value->field_small__font__sizes.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.large__font__sizes().get_selection()) {
+single_value->field_large__font__sizes = other_value.large__font__sizes();
+} else {
+single_value->field_large__font__sizes.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.type__attribute().get_selection()) {
+single_value->field_type__attribute = other_value.type__attribute();
+} else {
+single_value->field_type__attribute.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new GetTextFontDataRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetTextFontDataRes.");
+break;
+}
+set_selection(other_value);
+}
+
+GetTextFontDataRes_template::GetTextFontDataRes_template()
+{
+}
+
+GetTextFontDataRes_template::GetTextFontDataRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+GetTextFontDataRes_template::GetTextFontDataRes_template(const GetTextFontDataRes& other_value)
+{
+copy_value(other_value);
+}
+
+GetTextFontDataRes_template::GetTextFontDataRes_template(const OPTIONAL<GetTextFontDataRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const GetTextFontDataRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.GetTextFontDataRes from an unbound optional field.");
+}
+}
+
+GetTextFontDataRes_template::GetTextFontDataRes_template(const GetTextFontDataRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+GetTextFontDataRes_template::~GetTextFontDataRes_template()
+{
+clean_up();
+}
+
+GetTextFontDataRes_template& GetTextFontDataRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+GetTextFontDataRes_template& GetTextFontDataRes_template::operator=(const GetTextFontDataRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+GetTextFontDataRes_template& GetTextFontDataRes_template::operator=(const OPTIONAL<GetTextFontDataRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const GetTextFontDataRes&)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 @IsobusVTMessageTypes.GetTextFontDataRes.");
+}
+return *this;
+}
+
+GetTextFontDataRes_template& GetTextFontDataRes_template::operator=(const GetTextFontDataRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean GetTextFontDataRes_template::match(const GetTextFontDataRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.reserved2().is_bound()) return FALSE;
+if(!single_value->field_reserved2.match(other_value.reserved2(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.small__font__sizes().is_bound()) return FALSE;
+if(!single_value->field_small__font__sizes.match(other_value.small__font__sizes(), legacy))return FALSE;
+if(!other_value.large__font__sizes().is_bound()) return FALSE;
+if(!single_value->field_large__font__sizes.match(other_value.large__font__sizes(), legacy))return FALSE;
+if(!other_value.type__attribute().is_bound()) return FALSE;
+if(!single_value->field_type__attribute.match(other_value.type__attribute(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetTextFontDataRes.");
+}
+return FALSE;
+}
+
+boolean GetTextFontDataRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_reserved2.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_small__font__sizes.is_bound()
+
+ ||single_value->field_large__font__sizes.is_bound()
+
+ ||single_value->field_type__attribute.is_bound()
+;
+}
+
+boolean GetTextFontDataRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_reserved2.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_small__font__sizes.is_value()
+ &&single_value->field_large__font__sizes.is_value()
+ &&single_value->field_type__attribute.is_value();
+}
+
+void GetTextFontDataRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+GetTextFontDataRes GetTextFontDataRes_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 @IsobusVTMessageTypes.GetTextFontDataRes.");
+GetTextFontDataRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_reserved2.is_bound()) {
+ret_val.reserved2() = single_value->field_reserved2.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_small__font__sizes.is_bound()) {
+ret_val.small__font__sizes() = single_value->field_small__font__sizes.valueof();
+}
+if (single_value->field_large__font__sizes.is_bound()) {
+ret_val.large__font__sizes() = single_value->field_large__font__sizes.valueof();
+}
+if (single_value->field_type__attribute.is_bound()) {
+ret_val.type__attribute() = single_value->field_type__attribute.valueof();
+}
+return ret_val;
+}
+
+void GetTextFontDataRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.GetTextFontDataRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new GetTextFontDataRes_template[list_length];
+}
+
+GetTextFontDataRes_template& GetTextFontDataRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.GetTextFontDataRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.GetTextFontDataRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& GetTextFontDataRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& GetTextFontDataRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.GetTextFontDataRes.");
+return single_value->field_vtfunction;
+}
+
+OCTETSTRING_template& GetTextFontDataRes_template::reserved2()
+{
+set_specific();
+return single_value->field_reserved2;
+}
+
+const OCTETSTRING_template& GetTextFontDataRes_template::reserved2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved2 of a non-specific template of type @IsobusVTMessageTypes.GetTextFontDataRes.");
+return single_value->field_reserved2;
+}
+
+OCTETSTRING_template& GetTextFontDataRes_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const OCTETSTRING_template& GetTextFontDataRes_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.GetTextFontDataRes.");
+return single_value->field_reserved3;
+}
+
+OCTETSTRING_template& GetTextFontDataRes_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& GetTextFontDataRes_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.GetTextFontDataRes.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& GetTextFontDataRes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& GetTextFontDataRes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.GetTextFontDataRes.");
+return single_value->field_reserved5;
+}
+
+TextFontDataRes__small__font__sizes_template& GetTextFontDataRes_template::small__font__sizes()
+{
+set_specific();
+return single_value->field_small__font__sizes;
+}
+
+const TextFontDataRes__small__font__sizes_template& GetTextFontDataRes_template::small__font__sizes() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field small_font_sizes of a non-specific template of type @IsobusVTMessageTypes.GetTextFontDataRes.");
+return single_value->field_small__font__sizes;
+}
+
+TextFontDataRes__large__font__sizes_template& GetTextFontDataRes_template::large__font__sizes()
+{
+set_specific();
+return single_value->field_large__font__sizes;
+}
+
+const TextFontDataRes__large__font__sizes_template& GetTextFontDataRes_template::large__font__sizes() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field large_font_sizes of a non-specific template of type @IsobusVTMessageTypes.GetTextFontDataRes.");
+return single_value->field_large__font__sizes;
+}
+
+TextFontDataRes__type__attribute_template& GetTextFontDataRes_template::type__attribute()
+{
+set_specific();
+return single_value->field_type__attribute;
+}
+
+const TextFontDataRes__type__attribute_template& GetTextFontDataRes_template::type__attribute() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field type_attribute of a non-specific template of type @IsobusVTMessageTypes.GetTextFontDataRes.");
+return single_value->field_type__attribute;
+}
+
+int GetTextFontDataRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetTextFontDataRes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetTextFontDataRes 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 @IsobusVTMessageTypes.GetTextFontDataRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetTextFontDataRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetTextFontDataRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetTextFontDataRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetTextFontDataRes.");
+  }
+  return 0;
+}
+
+void GetTextFontDataRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", small_font_sizes := ");
+single_value->field_small__font__sizes.log();
+TTCN_Logger::log_event_str(", large_font_sizes := ");
+single_value->field_large__font__sizes.log();
+TTCN_Logger::log_event_str(", type_attribute := ");
+single_value->field_type__attribute.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void GetTextFontDataRes_template::log_match(const GetTextFontDataRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved2.match(match_value.reserved2(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved2");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_small__font__sizes.match(match_value.small__font__sizes(), legacy)){
+TTCN_Logger::log_logmatch_info(".small_font_sizes");
+single_value->field_small__font__sizes.log_match(match_value.small__font__sizes(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_large__font__sizes.match(match_value.large__font__sizes(), legacy)){
+TTCN_Logger::log_logmatch_info(".large_font_sizes");
+single_value->field_large__font__sizes.log_match(match_value.large__font__sizes(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_type__attribute.match(match_value.type__attribute(), legacy)){
+TTCN_Logger::log_logmatch_info(".type_attribute");
+single_value->field_type__attribute.log_match(match_value.type__attribute(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", small_font_sizes := ");
+single_value->field_small__font__sizes.log_match(match_value.small__font__sizes(), legacy);
+TTCN_Logger::log_event_str(", large_font_sizes := ");
+single_value->field_large__font__sizes.log_match(match_value.large__font__sizes(), legacy);
+TTCN_Logger::log_event_str(", type_attribute := ");
+single_value->field_type__attribute.log_match(match_value.type__attribute(), 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 GetTextFontDataRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_reserved2.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_small__font__sizes.encode_text(text_buf);
+single_value->field_large__font__sizes.encode_text(text_buf);
+single_value->field_type__attribute.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 @IsobusVTMessageTypes.GetTextFontDataRes.");
+}
+}
+
+void GetTextFontDataRes_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_vtfunction.decode_text(text_buf);
+single_value->field_reserved2.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_small__font__sizes.decode_text(text_buf);
+single_value->field_large__font__sizes.decode_text(text_buf);
+single_value->field_type__attribute.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 GetTextFontDataRes_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 @IsobusVTMessageTypes.GetTextFontDataRes.");
+}
+}
+
+void GetTextFontDataRes_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: {
+    GetTextFontDataRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.GetTextFontDataRes has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) small__font__sizes().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) large__font__sizes().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) type__attribute().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "small_font_sizes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          small__font__sizes().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(), "large_font_sizes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          large__font__sizes().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_attribute")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          type__attribute().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 @IsobusVTMessageTypes.GetTextFontDataRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.GetTextFontDataRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void GetTextFontDataRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetTextFontDataRes");
+single_value->field_reserved2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetTextFontDataRes");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetTextFontDataRes");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetTextFontDataRes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetTextFontDataRes");
+single_value->field_small__font__sizes.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetTextFontDataRes");
+single_value->field_large__font__sizes.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetTextFontDataRes");
+single_value->field_type__attribute.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetTextFontDataRes");
+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 : "@IsobusVTMessageTypes.GetTextFontDataRes");
+}
+
+boolean GetTextFontDataRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean GetTextFontDataRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+GetHardwareReq::GetHardwareReq()
+{
+}
+
+GetHardwareReq::GetHardwareReq(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_reserved2,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_reserved2(par_reserved2),
+  field_reserved3(par_reserved3),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+GetHardwareReq::GetHardwareReq(const GetHardwareReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.GetHardwareReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+else field_reserved2.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void GetHardwareReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_reserved2.clean_up();
+field_reserved3.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* GetHardwareReq::get_descriptor() const { return &GetHardwareReq_descr_; }
+GetHardwareReq& GetHardwareReq::operator=(const GetHardwareReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.GetHardwareReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+  else field_reserved2.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean GetHardwareReq::operator==(const GetHardwareReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_reserved2==other_value.field_reserved2
+  && field_reserved3==other_value.field_reserved3
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean GetHardwareReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_reserved2.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean GetHardwareReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_reserved2.is_value()
+  && field_reserved3.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void GetHardwareReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void GetHardwareReq::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.GetHardwareReq has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.GetHardwareReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.GetHardwareReq");
+  }
+}
+
+void GetHardwareReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (reserved2().is_bound()) reserved2().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void GetHardwareReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_reserved2.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void GetHardwareReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_reserved2.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void GetHardwareReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void GetHardwareReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int GetHardwareReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, GetHardwareReq_reserved2_descr_.raw->forceomit);
+  decoded_field_length = field_reserved2.RAW_decode(GetHardwareReq_reserved2_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, GetHardwareReq_reserved3_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(GetHardwareReq_reserved3_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, GetHardwareReq_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(GetHardwareReq_reserved4_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, GetHardwareReq_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(GetHardwareReq_reserved5_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, GetHardwareReq_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(GetHardwareReq_reserved6_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, GetHardwareReq_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(GetHardwareReq_reserved7_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, GetHardwareReq_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(GetHardwareReq_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int GetHardwareReq::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, GetHardwareReq_reserved2_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, GetHardwareReq_reserved3_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, GetHardwareReq_reserved4_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, GetHardwareReq_reserved5_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, GetHardwareReq_reserved6_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, GetHardwareReq_reserved7_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, GetHardwareReq_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved2.RAW_encode(GetHardwareReq_reserved2_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved3.RAW_encode(GetHardwareReq_reserved3_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved4.RAW_encode(GetHardwareReq_reserved4_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved5.RAW_encode(GetHardwareReq_reserved5_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved6.RAW_encode(GetHardwareReq_reserved6_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved7.RAW_encode(GetHardwareReq_reserved7_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved8.RAW_encode(GetHardwareReq_reserved8_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct GetHardwareReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+OCTETSTRING_template field_reserved2;
+OCTETSTRING_template field_reserved3;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void GetHardwareReq_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_vtfunction = ANY_VALUE;
+single_value->field_reserved2 = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void GetHardwareReq_template::copy_value(const GetHardwareReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.reserved2().is_bound()) {
+  single_value->field_reserved2 = other_value.reserved2();
+} else {
+  single_value->field_reserved2.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void GetHardwareReq_template::copy_template(const GetHardwareReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved2().get_selection()) {
+single_value->field_reserved2 = other_value.reserved2();
+} else {
+single_value->field_reserved2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new GetHardwareReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetHardwareReq.");
+break;
+}
+set_selection(other_value);
+}
+
+GetHardwareReq_template::GetHardwareReq_template()
+{
+}
+
+GetHardwareReq_template::GetHardwareReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+GetHardwareReq_template::GetHardwareReq_template(const GetHardwareReq& other_value)
+{
+copy_value(other_value);
+}
+
+GetHardwareReq_template::GetHardwareReq_template(const OPTIONAL<GetHardwareReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const GetHardwareReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.GetHardwareReq from an unbound optional field.");
+}
+}
+
+GetHardwareReq_template::GetHardwareReq_template(const GetHardwareReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+GetHardwareReq_template::~GetHardwareReq_template()
+{
+clean_up();
+}
+
+GetHardwareReq_template& GetHardwareReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+GetHardwareReq_template& GetHardwareReq_template::operator=(const GetHardwareReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+GetHardwareReq_template& GetHardwareReq_template::operator=(const OPTIONAL<GetHardwareReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const GetHardwareReq&)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 @IsobusVTMessageTypes.GetHardwareReq.");
+}
+return *this;
+}
+
+GetHardwareReq_template& GetHardwareReq_template::operator=(const GetHardwareReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean GetHardwareReq_template::match(const GetHardwareReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.reserved2().is_bound()) return FALSE;
+if(!single_value->field_reserved2.match(other_value.reserved2(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetHardwareReq.");
+}
+return FALSE;
+}
+
+boolean GetHardwareReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_reserved2.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean GetHardwareReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_reserved2.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void GetHardwareReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+GetHardwareReq GetHardwareReq_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 @IsobusVTMessageTypes.GetHardwareReq.");
+GetHardwareReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_reserved2.is_bound()) {
+ret_val.reserved2() = single_value->field_reserved2.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void GetHardwareReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.GetHardwareReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new GetHardwareReq_template[list_length];
+}
+
+GetHardwareReq_template& GetHardwareReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.GetHardwareReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.GetHardwareReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& GetHardwareReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& GetHardwareReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.GetHardwareReq.");
+return single_value->field_vtfunction;
+}
+
+OCTETSTRING_template& GetHardwareReq_template::reserved2()
+{
+set_specific();
+return single_value->field_reserved2;
+}
+
+const OCTETSTRING_template& GetHardwareReq_template::reserved2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved2 of a non-specific template of type @IsobusVTMessageTypes.GetHardwareReq.");
+return single_value->field_reserved2;
+}
+
+OCTETSTRING_template& GetHardwareReq_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const OCTETSTRING_template& GetHardwareReq_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.GetHardwareReq.");
+return single_value->field_reserved3;
+}
+
+OCTETSTRING_template& GetHardwareReq_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& GetHardwareReq_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.GetHardwareReq.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& GetHardwareReq_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& GetHardwareReq_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.GetHardwareReq.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& GetHardwareReq_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& GetHardwareReq_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.GetHardwareReq.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& GetHardwareReq_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& GetHardwareReq_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.GetHardwareReq.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& GetHardwareReq_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& GetHardwareReq_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.GetHardwareReq.");
+return single_value->field_reserved8;
+}
+
+int GetHardwareReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetHardwareReq which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetHardwareReq 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 @IsobusVTMessageTypes.GetHardwareReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetHardwareReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetHardwareReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetHardwareReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetHardwareReq.");
+  }
+  return 0;
+}
+
+void GetHardwareReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void GetHardwareReq_template::log_match(const GetHardwareReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved2.match(match_value.reserved2(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved2");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 GetHardwareReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_reserved2.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.GetHardwareReq.");
+}
+}
+
+void GetHardwareReq_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_vtfunction.decode_text(text_buf);
+single_value->field_reserved2.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 GetHardwareReq_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 @IsobusVTMessageTypes.GetHardwareReq.");
+}
+}
+
+void GetHardwareReq_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: {
+    GetHardwareReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.GetHardwareReq has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.GetHardwareReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.GetHardwareReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void GetHardwareReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetHardwareReq");
+single_value->field_reserved2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetHardwareReq");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetHardwareReq");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetHardwareReq");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetHardwareReq");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetHardwareReq");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetHardwareReq");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetHardwareReq");
+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 : "@IsobusVTMessageTypes.GetHardwareReq");
+}
+
+boolean GetHardwareReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean GetHardwareReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+e__GetHardwareResGraphicType::e__GetHardwareResGraphicType()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+e__GetHardwareResGraphicType::e__GetHardwareResGraphicType(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @IsobusVTMessageTypes.e_GetHardwareResGraphicType with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+e__GetHardwareResGraphicType::e__GetHardwareResGraphicType(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+e__GetHardwareResGraphicType::e__GetHardwareResGraphicType(const e__GetHardwareResGraphicType& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @IsobusVTMessageTypes.e_GetHardwareResGraphicType.");
+enum_value = other_value.enum_value;
+}
+
+e__GetHardwareResGraphicType& e__GetHardwareResGraphicType::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @IsobusVTMessageTypes.e_GetHardwareResGraphicType.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+e__GetHardwareResGraphicType& e__GetHardwareResGraphicType::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+e__GetHardwareResGraphicType& e__GetHardwareResGraphicType::operator=(const e__GetHardwareResGraphicType& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusVTMessageTypes.e_GetHardwareResGraphicType.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean e__GetHardwareResGraphicType::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_GetHardwareResGraphicType.");
+return enum_value == other_value;
+}
+
+boolean e__GetHardwareResGraphicType::operator==(const e__GetHardwareResGraphicType& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_GetHardwareResGraphicType.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_GetHardwareResGraphicType.");
+return enum_value == other_value.enum_value;
+}
+
+boolean e__GetHardwareResGraphicType::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_GetHardwareResGraphicType.");
+return enum_value < other_value;
+}
+
+boolean e__GetHardwareResGraphicType::operator<(const e__GetHardwareResGraphicType& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_GetHardwareResGraphicType.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_GetHardwareResGraphicType.");
+return enum_value < other_value.enum_value;
+}
+
+boolean e__GetHardwareResGraphicType::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_GetHardwareResGraphicType.");
+return enum_value > other_value;
+}
+
+boolean e__GetHardwareResGraphicType::operator>(const e__GetHardwareResGraphicType& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_GetHardwareResGraphicType.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_GetHardwareResGraphicType.");
+return enum_value > other_value.enum_value;
+}
+
+const char *e__GetHardwareResGraphicType::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case monochrome: return "monochrome";
+case colors16: return "colors16";
+case colors256: return "colors256";
+default: return "<unknown>";
+}
+}
+
+e__GetHardwareResGraphicType::enum_type e__GetHardwareResGraphicType::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "monochrome")) return monochrome;
+else if (!strcmp(str_par, "colors16")) return colors16;
+else if (!strcmp(str_par, "colors256")) return colors256;
+else return UNKNOWN_VALUE;
+}
+
+boolean e__GetHardwareResGraphicType::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 0:
+case 1:
+case 2:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int e__GetHardwareResGraphicType::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusVTMessageTypes.e_GetHardwareResGraphicType.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int e__GetHardwareResGraphicType::enum2int(const e__GetHardwareResGraphicType& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusVTMessageTypes.e_GetHardwareResGraphicType.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void e__GetHardwareResGraphicType::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @IsobusVTMessageTypes.e_GetHardwareResGraphicType.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+e__GetHardwareResGraphicType::operator e__GetHardwareResGraphicType::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @IsobusVTMessageTypes.e_GetHardwareResGraphicType.");
+return enum_value;
+}
+
+void e__GetHardwareResGraphicType::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void e__GetHardwareResGraphicType::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@IsobusVTMessageTypes.e_GetHardwareResGraphicType");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @IsobusVTMessageTypes.e_GetHardwareResGraphicType.");
+  }
+}
+
+void e__GetHardwareResGraphicType::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @IsobusVTMessageTypes.e_GetHardwareResGraphicType.");
+text_buf.push_int(enum_value);
+}
+
+void e__GetHardwareResGraphicType::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @IsobusVTMessageTypes.e_GetHardwareResGraphicType.", enum_value);
+}
+
+void e__GetHardwareResGraphicType::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void e__GetHardwareResGraphicType::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int e__GetHardwareResGraphicType::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*)
+{
+  int decoded_value = 0;
+  int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 2, no_err);
+  if (decoded_length < 0) return decoded_length;
+  if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value;
+  else {
+    if(no_err){
+     return -1;
+    } else {
+    TTCN_EncDec_ErrorContext::error
+      (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name);
+    enum_value = UNKNOWN_VALUE;
+    }
+  }
+  return decoded_length;
+}
+
+int e__GetHardwareResGraphicType::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const
+{
+  return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 2);
+}
+
+void e__GetHardwareResGraphicType_template::copy_template(const e__GetHardwareResGraphicType_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new e__GetHardwareResGraphicType_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_GetHardwareResGraphicType.");
+}
+}
+
+e__GetHardwareResGraphicType_template::e__GetHardwareResGraphicType_template()
+{
+}
+
+e__GetHardwareResGraphicType_template::e__GetHardwareResGraphicType_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+e__GetHardwareResGraphicType_template::e__GetHardwareResGraphicType_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!e__GetHardwareResGraphicType::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @IsobusVTMessageTypes.e_GetHardwareResGraphicType with unknown numeric value %d.", other_value);
+single_value = (e__GetHardwareResGraphicType::enum_type)other_value;
+}
+
+e__GetHardwareResGraphicType_template::e__GetHardwareResGraphicType_template(e__GetHardwareResGraphicType::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+e__GetHardwareResGraphicType_template::e__GetHardwareResGraphicType_template(const e__GetHardwareResGraphicType& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == e__GetHardwareResGraphicType::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @IsobusVTMessageTypes.e_GetHardwareResGraphicType.");
+single_value = other_value.enum_value;
+}
+
+e__GetHardwareResGraphicType_template::e__GetHardwareResGraphicType_template(const OPTIONAL<e__GetHardwareResGraphicType>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__GetHardwareResGraphicType::enum_type)(const e__GetHardwareResGraphicType&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @IsobusVTMessageTypes.e_GetHardwareResGraphicType from an unbound optional field.");
+}
+}
+
+e__GetHardwareResGraphicType_template::e__GetHardwareResGraphicType_template(const e__GetHardwareResGraphicType_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+e__GetHardwareResGraphicType_template::~e__GetHardwareResGraphicType_template()
+{
+clean_up();
+}
+
+boolean e__GetHardwareResGraphicType_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean e__GetHardwareResGraphicType_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != e__GetHardwareResGraphicType::UNBOUND_VALUE;
+}
+
+void e__GetHardwareResGraphicType_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+e__GetHardwareResGraphicType_template& e__GetHardwareResGraphicType_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+e__GetHardwareResGraphicType_template& e__GetHardwareResGraphicType_template::operator=(int other_value)
+{
+if (!e__GetHardwareResGraphicType::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @IsobusVTMessageTypes.e_GetHardwareResGraphicType.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (e__GetHardwareResGraphicType::enum_type)other_value;
+return *this;
+}
+
+e__GetHardwareResGraphicType_template& e__GetHardwareResGraphicType_template::operator=(e__GetHardwareResGraphicType::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+e__GetHardwareResGraphicType_template& e__GetHardwareResGraphicType_template::operator=(const e__GetHardwareResGraphicType& other_value)
+{
+if (other_value.enum_value == e__GetHardwareResGraphicType::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusVTMessageTypes.e_GetHardwareResGraphicType to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+e__GetHardwareResGraphicType_template& e__GetHardwareResGraphicType_template::operator=(const OPTIONAL<e__GetHardwareResGraphicType>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__GetHardwareResGraphicType::enum_type)(const e__GetHardwareResGraphicType&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @IsobusVTMessageTypes.e_GetHardwareResGraphicType.");
+}
+return *this;
+}
+
+e__GetHardwareResGraphicType_template& e__GetHardwareResGraphicType_template::operator=(const e__GetHardwareResGraphicType_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean e__GetHardwareResGraphicType_template::match(e__GetHardwareResGraphicType::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_GetHardwareResGraphicType.");
+}
+return FALSE;
+}
+
+boolean e__GetHardwareResGraphicType_template::match(const e__GetHardwareResGraphicType& other_value, boolean) const
+{
+if (other_value.enum_value == e__GetHardwareResGraphicType::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @IsobusVTMessageTypes.e_GetHardwareResGraphicType with an unbound value.");
+return match(other_value.enum_value);
+}
+
+e__GetHardwareResGraphicType::enum_type e__GetHardwareResGraphicType_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @IsobusVTMessageTypes.e_GetHardwareResGraphicType.");
+return single_value;
+}
+
+void e__GetHardwareResGraphicType_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @IsobusVTMessageTypes.e_GetHardwareResGraphicType.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new e__GetHardwareResGraphicType_template[list_length];
+}
+
+e__GetHardwareResGraphicType_template& e__GetHardwareResGraphicType_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @IsobusVTMessageTypes.e_GetHardwareResGraphicType.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @IsobusVTMessageTypes.e_GetHardwareResGraphicType.");
+return value_list.list_value[list_index];
+}
+
+void e__GetHardwareResGraphicType_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(e__GetHardwareResGraphicType::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void e__GetHardwareResGraphicType_template::log_match(const e__GetHardwareResGraphicType& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void e__GetHardwareResGraphicType_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_GetHardwareResGraphicType.");
+}
+}
+
+void e__GetHardwareResGraphicType_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (e__GetHardwareResGraphicType::enum_type)text_buf.pull_int().get_val();
+if (!e__GetHardwareResGraphicType::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @IsobusVTMessageTypes.e_GetHardwareResGraphicType.", single_value);
+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 e__GetHardwareResGraphicType_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @IsobusVTMessageTypes.e_GetHardwareResGraphicType.");
+}
+}
+
+boolean e__GetHardwareResGraphicType_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean e__GetHardwareResGraphicType_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 e__GetHardwareResGraphicType_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    e__GetHardwareResGraphicType_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    e__GetHardwareResGraphicType::enum_type enum_val = e__GetHardwareResGraphicType::str_to_enum(m_p->get_enumerated());
+    if (!e__GetHardwareResGraphicType::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @IsobusVTMessageTypes.e_GetHardwareResGraphicType.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@IsobusVTMessageTypes.e_GetHardwareResGraphicType");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void e__GetHardwareResGraphicType_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@IsobusVTMessageTypes.e_GetHardwareResGraphicType");
+}
+
+GetHardwareResHardwareType::GetHardwareResHardwareType()
+{
+}
+
+GetHardwareResHardwareType::GetHardwareResHardwareType(const BOOLEAN& par_touchScreenandPointingEvent,
+    const BOOLEAN& par_pointingDeviceAndPointingEvent,
+    const BOOLEAN& par_multipleFrequencyAudioOutput,
+    const BOOLEAN& par_adjustableVolumeAudioOutput,
+    const BOOLEAN& par_simultaneousActivationsOfPhysicalSoftKeys,
+    const BOOLEAN& par_simultaneousActivationsOfButtons,
+    const BOOLEAN& par_dragOperationViaPointingEvent,
+    const BOOLEAN& par_intermediateCoordinatesDuringDragOperation)
+  :   field_touchScreenandPointingEvent(par_touchScreenandPointingEvent),
+  field_pointingDeviceAndPointingEvent(par_pointingDeviceAndPointingEvent),
+  field_multipleFrequencyAudioOutput(par_multipleFrequencyAudioOutput),
+  field_adjustableVolumeAudioOutput(par_adjustableVolumeAudioOutput),
+  field_simultaneousActivationsOfPhysicalSoftKeys(par_simultaneousActivationsOfPhysicalSoftKeys),
+  field_simultaneousActivationsOfButtons(par_simultaneousActivationsOfButtons),
+  field_dragOperationViaPointingEvent(par_dragOperationViaPointingEvent),
+  field_intermediateCoordinatesDuringDragOperation(par_intermediateCoordinatesDuringDragOperation)
+{
+}
+
+GetHardwareResHardwareType::GetHardwareResHardwareType(const GetHardwareResHardwareType& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.GetHardwareResHardwareType.");
+if (other_value.touchScreenandPointingEvent().is_bound()) field_touchScreenandPointingEvent = other_value.touchScreenandPointingEvent();
+else field_touchScreenandPointingEvent.clean_up();
+if (other_value.pointingDeviceAndPointingEvent().is_bound()) field_pointingDeviceAndPointingEvent = other_value.pointingDeviceAndPointingEvent();
+else field_pointingDeviceAndPointingEvent.clean_up();
+if (other_value.multipleFrequencyAudioOutput().is_bound()) field_multipleFrequencyAudioOutput = other_value.multipleFrequencyAudioOutput();
+else field_multipleFrequencyAudioOutput.clean_up();
+if (other_value.adjustableVolumeAudioOutput().is_bound()) field_adjustableVolumeAudioOutput = other_value.adjustableVolumeAudioOutput();
+else field_adjustableVolumeAudioOutput.clean_up();
+if (other_value.simultaneousActivationsOfPhysicalSoftKeys().is_bound()) field_simultaneousActivationsOfPhysicalSoftKeys = other_value.simultaneousActivationsOfPhysicalSoftKeys();
+else field_simultaneousActivationsOfPhysicalSoftKeys.clean_up();
+if (other_value.simultaneousActivationsOfButtons().is_bound()) field_simultaneousActivationsOfButtons = other_value.simultaneousActivationsOfButtons();
+else field_simultaneousActivationsOfButtons.clean_up();
+if (other_value.dragOperationViaPointingEvent().is_bound()) field_dragOperationViaPointingEvent = other_value.dragOperationViaPointingEvent();
+else field_dragOperationViaPointingEvent.clean_up();
+if (other_value.intermediateCoordinatesDuringDragOperation().is_bound()) field_intermediateCoordinatesDuringDragOperation = other_value.intermediateCoordinatesDuringDragOperation();
+else field_intermediateCoordinatesDuringDragOperation.clean_up();
+}
+
+void GetHardwareResHardwareType::clean_up()
+{
+field_touchScreenandPointingEvent.clean_up();
+field_pointingDeviceAndPointingEvent.clean_up();
+field_multipleFrequencyAudioOutput.clean_up();
+field_adjustableVolumeAudioOutput.clean_up();
+field_simultaneousActivationsOfPhysicalSoftKeys.clean_up();
+field_simultaneousActivationsOfButtons.clean_up();
+field_dragOperationViaPointingEvent.clean_up();
+field_intermediateCoordinatesDuringDragOperation.clean_up();
+}
+
+const TTCN_Typedescriptor_t* GetHardwareResHardwareType::get_descriptor() const { return &GetHardwareResHardwareType_descr_; }
+GetHardwareResHardwareType& GetHardwareResHardwareType::operator=(const GetHardwareResHardwareType& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.GetHardwareResHardwareType.");
+  if (other_value.touchScreenandPointingEvent().is_bound()) field_touchScreenandPointingEvent = other_value.touchScreenandPointingEvent();
+  else field_touchScreenandPointingEvent.clean_up();
+  if (other_value.pointingDeviceAndPointingEvent().is_bound()) field_pointingDeviceAndPointingEvent = other_value.pointingDeviceAndPointingEvent();
+  else field_pointingDeviceAndPointingEvent.clean_up();
+  if (other_value.multipleFrequencyAudioOutput().is_bound()) field_multipleFrequencyAudioOutput = other_value.multipleFrequencyAudioOutput();
+  else field_multipleFrequencyAudioOutput.clean_up();
+  if (other_value.adjustableVolumeAudioOutput().is_bound()) field_adjustableVolumeAudioOutput = other_value.adjustableVolumeAudioOutput();
+  else field_adjustableVolumeAudioOutput.clean_up();
+  if (other_value.simultaneousActivationsOfPhysicalSoftKeys().is_bound()) field_simultaneousActivationsOfPhysicalSoftKeys = other_value.simultaneousActivationsOfPhysicalSoftKeys();
+  else field_simultaneousActivationsOfPhysicalSoftKeys.clean_up();
+  if (other_value.simultaneousActivationsOfButtons().is_bound()) field_simultaneousActivationsOfButtons = other_value.simultaneousActivationsOfButtons();
+  else field_simultaneousActivationsOfButtons.clean_up();
+  if (other_value.dragOperationViaPointingEvent().is_bound()) field_dragOperationViaPointingEvent = other_value.dragOperationViaPointingEvent();
+  else field_dragOperationViaPointingEvent.clean_up();
+  if (other_value.intermediateCoordinatesDuringDragOperation().is_bound()) field_intermediateCoordinatesDuringDragOperation = other_value.intermediateCoordinatesDuringDragOperation();
+  else field_intermediateCoordinatesDuringDragOperation.clean_up();
+}
+return *this;
+}
+
+boolean GetHardwareResHardwareType::operator==(const GetHardwareResHardwareType& other_value) const
+{
+return field_touchScreenandPointingEvent==other_value.field_touchScreenandPointingEvent
+  && field_pointingDeviceAndPointingEvent==other_value.field_pointingDeviceAndPointingEvent
+  && field_multipleFrequencyAudioOutput==other_value.field_multipleFrequencyAudioOutput
+  && field_adjustableVolumeAudioOutput==other_value.field_adjustableVolumeAudioOutput
+  && field_simultaneousActivationsOfPhysicalSoftKeys==other_value.field_simultaneousActivationsOfPhysicalSoftKeys
+  && field_simultaneousActivationsOfButtons==other_value.field_simultaneousActivationsOfButtons
+  && field_dragOperationViaPointingEvent==other_value.field_dragOperationViaPointingEvent
+  && field_intermediateCoordinatesDuringDragOperation==other_value.field_intermediateCoordinatesDuringDragOperation;
+}
+
+boolean GetHardwareResHardwareType::is_bound() const
+{
+return (field_touchScreenandPointingEvent.is_bound())
+  || (field_pointingDeviceAndPointingEvent.is_bound())
+  || (field_multipleFrequencyAudioOutput.is_bound())
+  || (field_adjustableVolumeAudioOutput.is_bound())
+  || (field_simultaneousActivationsOfPhysicalSoftKeys.is_bound())
+  || (field_simultaneousActivationsOfButtons.is_bound())
+  || (field_dragOperationViaPointingEvent.is_bound())
+  || (field_intermediateCoordinatesDuringDragOperation.is_bound());
+}
+boolean GetHardwareResHardwareType::is_value() const
+{
+return field_touchScreenandPointingEvent.is_value()
+  && field_pointingDeviceAndPointingEvent.is_value()
+  && field_multipleFrequencyAudioOutput.is_value()
+  && field_adjustableVolumeAudioOutput.is_value()
+  && field_simultaneousActivationsOfPhysicalSoftKeys.is_value()
+  && field_simultaneousActivationsOfButtons.is_value()
+  && field_dragOperationViaPointingEvent.is_value()
+  && field_intermediateCoordinatesDuringDragOperation.is_value();
+}
+void GetHardwareResHardwareType::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ touchScreenandPointingEvent := ");
+field_touchScreenandPointingEvent.log();
+TTCN_Logger::log_event_str(", pointingDeviceAndPointingEvent := ");
+field_pointingDeviceAndPointingEvent.log();
+TTCN_Logger::log_event_str(", multipleFrequencyAudioOutput := ");
+field_multipleFrequencyAudioOutput.log();
+TTCN_Logger::log_event_str(", adjustableVolumeAudioOutput := ");
+field_adjustableVolumeAudioOutput.log();
+TTCN_Logger::log_event_str(", simultaneousActivationsOfPhysicalSoftKeys := ");
+field_simultaneousActivationsOfPhysicalSoftKeys.log();
+TTCN_Logger::log_event_str(", simultaneousActivationsOfButtons := ");
+field_simultaneousActivationsOfButtons.log();
+TTCN_Logger::log_event_str(", dragOperationViaPointingEvent := ");
+field_dragOperationViaPointingEvent.log();
+TTCN_Logger::log_event_str(", intermediateCoordinatesDuringDragOperation := ");
+field_intermediateCoordinatesDuringDragOperation.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void GetHardwareResHardwareType::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.GetHardwareResHardwareType has 8 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) touchScreenandPointingEvent().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) pointingDeviceAndPointingEvent().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) multipleFrequencyAudioOutput().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) adjustableVolumeAudioOutput().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) simultaneousActivationsOfPhysicalSoftKeys().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) simultaneousActivationsOfButtons().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) dragOperationViaPointingEvent().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) intermediateCoordinatesDuringDragOperation().set_param(*param.get_elem(7));
+    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(), "touchScreenandPointingEvent")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          touchScreenandPointingEvent().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(), "pointingDeviceAndPointingEvent")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          pointingDeviceAndPointingEvent().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(), "multipleFrequencyAudioOutput")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          multipleFrequencyAudioOutput().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(), "adjustableVolumeAudioOutput")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          adjustableVolumeAudioOutput().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(), "simultaneousActivationsOfPhysicalSoftKeys")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          simultaneousActivationsOfPhysicalSoftKeys().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(), "simultaneousActivationsOfButtons")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          simultaneousActivationsOfButtons().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(), "dragOperationViaPointingEvent")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          dragOperationViaPointingEvent().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(), "intermediateCoordinatesDuringDragOperation")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          intermediateCoordinatesDuringDragOperation().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 @IsobusVTMessageTypes.GetHardwareResHardwareType: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.GetHardwareResHardwareType");
+  }
+}
+
+void GetHardwareResHardwareType::set_implicit_omit()
+{
+if (touchScreenandPointingEvent().is_bound()) touchScreenandPointingEvent().set_implicit_omit();
+if (pointingDeviceAndPointingEvent().is_bound()) pointingDeviceAndPointingEvent().set_implicit_omit();
+if (multipleFrequencyAudioOutput().is_bound()) multipleFrequencyAudioOutput().set_implicit_omit();
+if (adjustableVolumeAudioOutput().is_bound()) adjustableVolumeAudioOutput().set_implicit_omit();
+if (simultaneousActivationsOfPhysicalSoftKeys().is_bound()) simultaneousActivationsOfPhysicalSoftKeys().set_implicit_omit();
+if (simultaneousActivationsOfButtons().is_bound()) simultaneousActivationsOfButtons().set_implicit_omit();
+if (dragOperationViaPointingEvent().is_bound()) dragOperationViaPointingEvent().set_implicit_omit();
+if (intermediateCoordinatesDuringDragOperation().is_bound()) intermediateCoordinatesDuringDragOperation().set_implicit_omit();
+}
+
+void GetHardwareResHardwareType::encode_text(Text_Buf& text_buf) const
+{
+field_touchScreenandPointingEvent.encode_text(text_buf);
+field_pointingDeviceAndPointingEvent.encode_text(text_buf);
+field_multipleFrequencyAudioOutput.encode_text(text_buf);
+field_adjustableVolumeAudioOutput.encode_text(text_buf);
+field_simultaneousActivationsOfPhysicalSoftKeys.encode_text(text_buf);
+field_simultaneousActivationsOfButtons.encode_text(text_buf);
+field_dragOperationViaPointingEvent.encode_text(text_buf);
+field_intermediateCoordinatesDuringDragOperation.encode_text(text_buf);
+}
+
+void GetHardwareResHardwareType::decode_text(Text_Buf& text_buf)
+{
+field_touchScreenandPointingEvent.decode_text(text_buf);
+field_pointingDeviceAndPointingEvent.decode_text(text_buf);
+field_multipleFrequencyAudioOutput.decode_text(text_buf);
+field_adjustableVolumeAudioOutput.decode_text(text_buf);
+field_simultaneousActivationsOfPhysicalSoftKeys.decode_text(text_buf);
+field_simultaneousActivationsOfButtons.decode_text(text_buf);
+field_dragOperationViaPointingEvent.decode_text(text_buf);
+field_intermediateCoordinatesDuringDragOperation.decode_text(text_buf);
+}
+
+void GetHardwareResHardwareType::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void GetHardwareResHardwareType::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int GetHardwareResHardwareType::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_touchScreenandPointingEvent.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_pointingDeviceAndPointingEvent.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_multipleFrequencyAudioOutput.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_adjustableVolumeAudioOutput.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_simultaneousActivationsOfPhysicalSoftKeys.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_simultaneousActivationsOfButtons.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_dragOperationViaPointingEvent.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_intermediateCoordinatesDuringDragOperation.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int GetHardwareResHardwareType::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_touchScreenandPointingEvent.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_pointingDeviceAndPointingEvent.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_multipleFrequencyAudioOutput.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_adjustableVolumeAudioOutput.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_simultaneousActivationsOfPhysicalSoftKeys.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_simultaneousActivationsOfButtons.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_dragOperationViaPointingEvent.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_intermediateCoordinatesDuringDragOperation.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct GetHardwareResHardwareType_template::single_value_struct {
+BOOLEAN_template field_touchScreenandPointingEvent;
+BOOLEAN_template field_pointingDeviceAndPointingEvent;
+BOOLEAN_template field_multipleFrequencyAudioOutput;
+BOOLEAN_template field_adjustableVolumeAudioOutput;
+BOOLEAN_template field_simultaneousActivationsOfPhysicalSoftKeys;
+BOOLEAN_template field_simultaneousActivationsOfButtons;
+BOOLEAN_template field_dragOperationViaPointingEvent;
+BOOLEAN_template field_intermediateCoordinatesDuringDragOperation;
+};
+
+void GetHardwareResHardwareType_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_touchScreenandPointingEvent = ANY_VALUE;
+single_value->field_pointingDeviceAndPointingEvent = ANY_VALUE;
+single_value->field_multipleFrequencyAudioOutput = ANY_VALUE;
+single_value->field_adjustableVolumeAudioOutput = ANY_VALUE;
+single_value->field_simultaneousActivationsOfPhysicalSoftKeys = ANY_VALUE;
+single_value->field_simultaneousActivationsOfButtons = ANY_VALUE;
+single_value->field_dragOperationViaPointingEvent = ANY_VALUE;
+single_value->field_intermediateCoordinatesDuringDragOperation = ANY_VALUE;
+}
+}
+}
+
+void GetHardwareResHardwareType_template::copy_value(const GetHardwareResHardwareType& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.touchScreenandPointingEvent().is_bound()) {
+  single_value->field_touchScreenandPointingEvent = other_value.touchScreenandPointingEvent();
+} else {
+  single_value->field_touchScreenandPointingEvent.clean_up();
+}
+if (other_value.pointingDeviceAndPointingEvent().is_bound()) {
+  single_value->field_pointingDeviceAndPointingEvent = other_value.pointingDeviceAndPointingEvent();
+} else {
+  single_value->field_pointingDeviceAndPointingEvent.clean_up();
+}
+if (other_value.multipleFrequencyAudioOutput().is_bound()) {
+  single_value->field_multipleFrequencyAudioOutput = other_value.multipleFrequencyAudioOutput();
+} else {
+  single_value->field_multipleFrequencyAudioOutput.clean_up();
+}
+if (other_value.adjustableVolumeAudioOutput().is_bound()) {
+  single_value->field_adjustableVolumeAudioOutput = other_value.adjustableVolumeAudioOutput();
+} else {
+  single_value->field_adjustableVolumeAudioOutput.clean_up();
+}
+if (other_value.simultaneousActivationsOfPhysicalSoftKeys().is_bound()) {
+  single_value->field_simultaneousActivationsOfPhysicalSoftKeys = other_value.simultaneousActivationsOfPhysicalSoftKeys();
+} else {
+  single_value->field_simultaneousActivationsOfPhysicalSoftKeys.clean_up();
+}
+if (other_value.simultaneousActivationsOfButtons().is_bound()) {
+  single_value->field_simultaneousActivationsOfButtons = other_value.simultaneousActivationsOfButtons();
+} else {
+  single_value->field_simultaneousActivationsOfButtons.clean_up();
+}
+if (other_value.dragOperationViaPointingEvent().is_bound()) {
+  single_value->field_dragOperationViaPointingEvent = other_value.dragOperationViaPointingEvent();
+} else {
+  single_value->field_dragOperationViaPointingEvent.clean_up();
+}
+if (other_value.intermediateCoordinatesDuringDragOperation().is_bound()) {
+  single_value->field_intermediateCoordinatesDuringDragOperation = other_value.intermediateCoordinatesDuringDragOperation();
+} else {
+  single_value->field_intermediateCoordinatesDuringDragOperation.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void GetHardwareResHardwareType_template::copy_template(const GetHardwareResHardwareType_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.touchScreenandPointingEvent().get_selection()) {
+single_value->field_touchScreenandPointingEvent = other_value.touchScreenandPointingEvent();
+} else {
+single_value->field_touchScreenandPointingEvent.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.pointingDeviceAndPointingEvent().get_selection()) {
+single_value->field_pointingDeviceAndPointingEvent = other_value.pointingDeviceAndPointingEvent();
+} else {
+single_value->field_pointingDeviceAndPointingEvent.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.multipleFrequencyAudioOutput().get_selection()) {
+single_value->field_multipleFrequencyAudioOutput = other_value.multipleFrequencyAudioOutput();
+} else {
+single_value->field_multipleFrequencyAudioOutput.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.adjustableVolumeAudioOutput().get_selection()) {
+single_value->field_adjustableVolumeAudioOutput = other_value.adjustableVolumeAudioOutput();
+} else {
+single_value->field_adjustableVolumeAudioOutput.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.simultaneousActivationsOfPhysicalSoftKeys().get_selection()) {
+single_value->field_simultaneousActivationsOfPhysicalSoftKeys = other_value.simultaneousActivationsOfPhysicalSoftKeys();
+} else {
+single_value->field_simultaneousActivationsOfPhysicalSoftKeys.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.simultaneousActivationsOfButtons().get_selection()) {
+single_value->field_simultaneousActivationsOfButtons = other_value.simultaneousActivationsOfButtons();
+} else {
+single_value->field_simultaneousActivationsOfButtons.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.dragOperationViaPointingEvent().get_selection()) {
+single_value->field_dragOperationViaPointingEvent = other_value.dragOperationViaPointingEvent();
+} else {
+single_value->field_dragOperationViaPointingEvent.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.intermediateCoordinatesDuringDragOperation().get_selection()) {
+single_value->field_intermediateCoordinatesDuringDragOperation = other_value.intermediateCoordinatesDuringDragOperation();
+} else {
+single_value->field_intermediateCoordinatesDuringDragOperation.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new GetHardwareResHardwareType_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetHardwareResHardwareType.");
+break;
+}
+set_selection(other_value);
+}
+
+GetHardwareResHardwareType_template::GetHardwareResHardwareType_template()
+{
+}
+
+GetHardwareResHardwareType_template::GetHardwareResHardwareType_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+GetHardwareResHardwareType_template::GetHardwareResHardwareType_template(const GetHardwareResHardwareType& other_value)
+{
+copy_value(other_value);
+}
+
+GetHardwareResHardwareType_template::GetHardwareResHardwareType_template(const OPTIONAL<GetHardwareResHardwareType>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const GetHardwareResHardwareType&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.GetHardwareResHardwareType from an unbound optional field.");
+}
+}
+
+GetHardwareResHardwareType_template::GetHardwareResHardwareType_template(const GetHardwareResHardwareType_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+GetHardwareResHardwareType_template::~GetHardwareResHardwareType_template()
+{
+clean_up();
+}
+
+GetHardwareResHardwareType_template& GetHardwareResHardwareType_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+GetHardwareResHardwareType_template& GetHardwareResHardwareType_template::operator=(const GetHardwareResHardwareType& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+GetHardwareResHardwareType_template& GetHardwareResHardwareType_template::operator=(const OPTIONAL<GetHardwareResHardwareType>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const GetHardwareResHardwareType&)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 @IsobusVTMessageTypes.GetHardwareResHardwareType.");
+}
+return *this;
+}
+
+GetHardwareResHardwareType_template& GetHardwareResHardwareType_template::operator=(const GetHardwareResHardwareType_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean GetHardwareResHardwareType_template::match(const GetHardwareResHardwareType& 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.touchScreenandPointingEvent().is_bound()) return FALSE;
+if(!single_value->field_touchScreenandPointingEvent.match(other_value.touchScreenandPointingEvent(), legacy))return FALSE;
+if(!other_value.pointingDeviceAndPointingEvent().is_bound()) return FALSE;
+if(!single_value->field_pointingDeviceAndPointingEvent.match(other_value.pointingDeviceAndPointingEvent(), legacy))return FALSE;
+if(!other_value.multipleFrequencyAudioOutput().is_bound()) return FALSE;
+if(!single_value->field_multipleFrequencyAudioOutput.match(other_value.multipleFrequencyAudioOutput(), legacy))return FALSE;
+if(!other_value.adjustableVolumeAudioOutput().is_bound()) return FALSE;
+if(!single_value->field_adjustableVolumeAudioOutput.match(other_value.adjustableVolumeAudioOutput(), legacy))return FALSE;
+if(!other_value.simultaneousActivationsOfPhysicalSoftKeys().is_bound()) return FALSE;
+if(!single_value->field_simultaneousActivationsOfPhysicalSoftKeys.match(other_value.simultaneousActivationsOfPhysicalSoftKeys(), legacy))return FALSE;
+if(!other_value.simultaneousActivationsOfButtons().is_bound()) return FALSE;
+if(!single_value->field_simultaneousActivationsOfButtons.match(other_value.simultaneousActivationsOfButtons(), legacy))return FALSE;
+if(!other_value.dragOperationViaPointingEvent().is_bound()) return FALSE;
+if(!single_value->field_dragOperationViaPointingEvent.match(other_value.dragOperationViaPointingEvent(), legacy))return FALSE;
+if(!other_value.intermediateCoordinatesDuringDragOperation().is_bound()) return FALSE;
+if(!single_value->field_intermediateCoordinatesDuringDragOperation.match(other_value.intermediateCoordinatesDuringDragOperation(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetHardwareResHardwareType.");
+}
+return FALSE;
+}
+
+boolean GetHardwareResHardwareType_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_touchScreenandPointingEvent.is_bound()
+
+ ||single_value->field_pointingDeviceAndPointingEvent.is_bound()
+
+ ||single_value->field_multipleFrequencyAudioOutput.is_bound()
+
+ ||single_value->field_adjustableVolumeAudioOutput.is_bound()
+
+ ||single_value->field_simultaneousActivationsOfPhysicalSoftKeys.is_bound()
+
+ ||single_value->field_simultaneousActivationsOfButtons.is_bound()
+
+ ||single_value->field_dragOperationViaPointingEvent.is_bound()
+
+ ||single_value->field_intermediateCoordinatesDuringDragOperation.is_bound()
+;
+}
+
+boolean GetHardwareResHardwareType_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_touchScreenandPointingEvent.is_value()
+ &&single_value->field_pointingDeviceAndPointingEvent.is_value()
+ &&single_value->field_multipleFrequencyAudioOutput.is_value()
+ &&single_value->field_adjustableVolumeAudioOutput.is_value()
+ &&single_value->field_simultaneousActivationsOfPhysicalSoftKeys.is_value()
+ &&single_value->field_simultaneousActivationsOfButtons.is_value()
+ &&single_value->field_dragOperationViaPointingEvent.is_value()
+ &&single_value->field_intermediateCoordinatesDuringDragOperation.is_value();
+}
+
+void GetHardwareResHardwareType_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+GetHardwareResHardwareType GetHardwareResHardwareType_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 @IsobusVTMessageTypes.GetHardwareResHardwareType.");
+GetHardwareResHardwareType ret_val;
+if (single_value->field_touchScreenandPointingEvent.is_bound()) {
+ret_val.touchScreenandPointingEvent() = single_value->field_touchScreenandPointingEvent.valueof();
+}
+if (single_value->field_pointingDeviceAndPointingEvent.is_bound()) {
+ret_val.pointingDeviceAndPointingEvent() = single_value->field_pointingDeviceAndPointingEvent.valueof();
+}
+if (single_value->field_multipleFrequencyAudioOutput.is_bound()) {
+ret_val.multipleFrequencyAudioOutput() = single_value->field_multipleFrequencyAudioOutput.valueof();
+}
+if (single_value->field_adjustableVolumeAudioOutput.is_bound()) {
+ret_val.adjustableVolumeAudioOutput() = single_value->field_adjustableVolumeAudioOutput.valueof();
+}
+if (single_value->field_simultaneousActivationsOfPhysicalSoftKeys.is_bound()) {
+ret_val.simultaneousActivationsOfPhysicalSoftKeys() = single_value->field_simultaneousActivationsOfPhysicalSoftKeys.valueof();
+}
+if (single_value->field_simultaneousActivationsOfButtons.is_bound()) {
+ret_val.simultaneousActivationsOfButtons() = single_value->field_simultaneousActivationsOfButtons.valueof();
+}
+if (single_value->field_dragOperationViaPointingEvent.is_bound()) {
+ret_val.dragOperationViaPointingEvent() = single_value->field_dragOperationViaPointingEvent.valueof();
+}
+if (single_value->field_intermediateCoordinatesDuringDragOperation.is_bound()) {
+ret_val.intermediateCoordinatesDuringDragOperation() = single_value->field_intermediateCoordinatesDuringDragOperation.valueof();
+}
+return ret_val;
+}
+
+void GetHardwareResHardwareType_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.GetHardwareResHardwareType.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new GetHardwareResHardwareType_template[list_length];
+}
+
+GetHardwareResHardwareType_template& GetHardwareResHardwareType_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.GetHardwareResHardwareType.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.GetHardwareResHardwareType.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& GetHardwareResHardwareType_template::touchScreenandPointingEvent()
+{
+set_specific();
+return single_value->field_touchScreenandPointingEvent;
+}
+
+const BOOLEAN_template& GetHardwareResHardwareType_template::touchScreenandPointingEvent() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field touchScreenandPointingEvent of a non-specific template of type @IsobusVTMessageTypes.GetHardwareResHardwareType.");
+return single_value->field_touchScreenandPointingEvent;
+}
+
+BOOLEAN_template& GetHardwareResHardwareType_template::pointingDeviceAndPointingEvent()
+{
+set_specific();
+return single_value->field_pointingDeviceAndPointingEvent;
+}
+
+const BOOLEAN_template& GetHardwareResHardwareType_template::pointingDeviceAndPointingEvent() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field pointingDeviceAndPointingEvent of a non-specific template of type @IsobusVTMessageTypes.GetHardwareResHardwareType.");
+return single_value->field_pointingDeviceAndPointingEvent;
+}
+
+BOOLEAN_template& GetHardwareResHardwareType_template::multipleFrequencyAudioOutput()
+{
+set_specific();
+return single_value->field_multipleFrequencyAudioOutput;
+}
+
+const BOOLEAN_template& GetHardwareResHardwareType_template::multipleFrequencyAudioOutput() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field multipleFrequencyAudioOutput of a non-specific template of type @IsobusVTMessageTypes.GetHardwareResHardwareType.");
+return single_value->field_multipleFrequencyAudioOutput;
+}
+
+BOOLEAN_template& GetHardwareResHardwareType_template::adjustableVolumeAudioOutput()
+{
+set_specific();
+return single_value->field_adjustableVolumeAudioOutput;
+}
+
+const BOOLEAN_template& GetHardwareResHardwareType_template::adjustableVolumeAudioOutput() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field adjustableVolumeAudioOutput of a non-specific template of type @IsobusVTMessageTypes.GetHardwareResHardwareType.");
+return single_value->field_adjustableVolumeAudioOutput;
+}
+
+BOOLEAN_template& GetHardwareResHardwareType_template::simultaneousActivationsOfPhysicalSoftKeys()
+{
+set_specific();
+return single_value->field_simultaneousActivationsOfPhysicalSoftKeys;
+}
+
+const BOOLEAN_template& GetHardwareResHardwareType_template::simultaneousActivationsOfPhysicalSoftKeys() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field simultaneousActivationsOfPhysicalSoftKeys of a non-specific template of type @IsobusVTMessageTypes.GetHardwareResHardwareType.");
+return single_value->field_simultaneousActivationsOfPhysicalSoftKeys;
+}
+
+BOOLEAN_template& GetHardwareResHardwareType_template::simultaneousActivationsOfButtons()
+{
+set_specific();
+return single_value->field_simultaneousActivationsOfButtons;
+}
+
+const BOOLEAN_template& GetHardwareResHardwareType_template::simultaneousActivationsOfButtons() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field simultaneousActivationsOfButtons of a non-specific template of type @IsobusVTMessageTypes.GetHardwareResHardwareType.");
+return single_value->field_simultaneousActivationsOfButtons;
+}
+
+BOOLEAN_template& GetHardwareResHardwareType_template::dragOperationViaPointingEvent()
+{
+set_specific();
+return single_value->field_dragOperationViaPointingEvent;
+}
+
+const BOOLEAN_template& GetHardwareResHardwareType_template::dragOperationViaPointingEvent() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field dragOperationViaPointingEvent of a non-specific template of type @IsobusVTMessageTypes.GetHardwareResHardwareType.");
+return single_value->field_dragOperationViaPointingEvent;
+}
+
+BOOLEAN_template& GetHardwareResHardwareType_template::intermediateCoordinatesDuringDragOperation()
+{
+set_specific();
+return single_value->field_intermediateCoordinatesDuringDragOperation;
+}
+
+const BOOLEAN_template& GetHardwareResHardwareType_template::intermediateCoordinatesDuringDragOperation() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field intermediateCoordinatesDuringDragOperation of a non-specific template of type @IsobusVTMessageTypes.GetHardwareResHardwareType.");
+return single_value->field_intermediateCoordinatesDuringDragOperation;
+}
+
+int GetHardwareResHardwareType_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetHardwareResHardwareType which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetHardwareResHardwareType 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 @IsobusVTMessageTypes.GetHardwareResHardwareType containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetHardwareResHardwareType containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetHardwareResHardwareType containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetHardwareResHardwareType containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetHardwareResHardwareType.");
+  }
+  return 0;
+}
+
+void GetHardwareResHardwareType_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ touchScreenandPointingEvent := ");
+single_value->field_touchScreenandPointingEvent.log();
+TTCN_Logger::log_event_str(", pointingDeviceAndPointingEvent := ");
+single_value->field_pointingDeviceAndPointingEvent.log();
+TTCN_Logger::log_event_str(", multipleFrequencyAudioOutput := ");
+single_value->field_multipleFrequencyAudioOutput.log();
+TTCN_Logger::log_event_str(", adjustableVolumeAudioOutput := ");
+single_value->field_adjustableVolumeAudioOutput.log();
+TTCN_Logger::log_event_str(", simultaneousActivationsOfPhysicalSoftKeys := ");
+single_value->field_simultaneousActivationsOfPhysicalSoftKeys.log();
+TTCN_Logger::log_event_str(", simultaneousActivationsOfButtons := ");
+single_value->field_simultaneousActivationsOfButtons.log();
+TTCN_Logger::log_event_str(", dragOperationViaPointingEvent := ");
+single_value->field_dragOperationViaPointingEvent.log();
+TTCN_Logger::log_event_str(", intermediateCoordinatesDuringDragOperation := ");
+single_value->field_intermediateCoordinatesDuringDragOperation.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void GetHardwareResHardwareType_template::log_match(const GetHardwareResHardwareType& 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_touchScreenandPointingEvent.match(match_value.touchScreenandPointingEvent(), legacy)){
+TTCN_Logger::log_logmatch_info(".touchScreenandPointingEvent");
+single_value->field_touchScreenandPointingEvent.log_match(match_value.touchScreenandPointingEvent(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_pointingDeviceAndPointingEvent.match(match_value.pointingDeviceAndPointingEvent(), legacy)){
+TTCN_Logger::log_logmatch_info(".pointingDeviceAndPointingEvent");
+single_value->field_pointingDeviceAndPointingEvent.log_match(match_value.pointingDeviceAndPointingEvent(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_multipleFrequencyAudioOutput.match(match_value.multipleFrequencyAudioOutput(), legacy)){
+TTCN_Logger::log_logmatch_info(".multipleFrequencyAudioOutput");
+single_value->field_multipleFrequencyAudioOutput.log_match(match_value.multipleFrequencyAudioOutput(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_adjustableVolumeAudioOutput.match(match_value.adjustableVolumeAudioOutput(), legacy)){
+TTCN_Logger::log_logmatch_info(".adjustableVolumeAudioOutput");
+single_value->field_adjustableVolumeAudioOutput.log_match(match_value.adjustableVolumeAudioOutput(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_simultaneousActivationsOfPhysicalSoftKeys.match(match_value.simultaneousActivationsOfPhysicalSoftKeys(), legacy)){
+TTCN_Logger::log_logmatch_info(".simultaneousActivationsOfPhysicalSoftKeys");
+single_value->field_simultaneousActivationsOfPhysicalSoftKeys.log_match(match_value.simultaneousActivationsOfPhysicalSoftKeys(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_simultaneousActivationsOfButtons.match(match_value.simultaneousActivationsOfButtons(), legacy)){
+TTCN_Logger::log_logmatch_info(".simultaneousActivationsOfButtons");
+single_value->field_simultaneousActivationsOfButtons.log_match(match_value.simultaneousActivationsOfButtons(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_dragOperationViaPointingEvent.match(match_value.dragOperationViaPointingEvent(), legacy)){
+TTCN_Logger::log_logmatch_info(".dragOperationViaPointingEvent");
+single_value->field_dragOperationViaPointingEvent.log_match(match_value.dragOperationViaPointingEvent(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_intermediateCoordinatesDuringDragOperation.match(match_value.intermediateCoordinatesDuringDragOperation(), legacy)){
+TTCN_Logger::log_logmatch_info(".intermediateCoordinatesDuringDragOperation");
+single_value->field_intermediateCoordinatesDuringDragOperation.log_match(match_value.intermediateCoordinatesDuringDragOperation(), 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("{ touchScreenandPointingEvent := ");
+single_value->field_touchScreenandPointingEvent.log_match(match_value.touchScreenandPointingEvent(), legacy);
+TTCN_Logger::log_event_str(", pointingDeviceAndPointingEvent := ");
+single_value->field_pointingDeviceAndPointingEvent.log_match(match_value.pointingDeviceAndPointingEvent(), legacy);
+TTCN_Logger::log_event_str(", multipleFrequencyAudioOutput := ");
+single_value->field_multipleFrequencyAudioOutput.log_match(match_value.multipleFrequencyAudioOutput(), legacy);
+TTCN_Logger::log_event_str(", adjustableVolumeAudioOutput := ");
+single_value->field_adjustableVolumeAudioOutput.log_match(match_value.adjustableVolumeAudioOutput(), legacy);
+TTCN_Logger::log_event_str(", simultaneousActivationsOfPhysicalSoftKeys := ");
+single_value->field_simultaneousActivationsOfPhysicalSoftKeys.log_match(match_value.simultaneousActivationsOfPhysicalSoftKeys(), legacy);
+TTCN_Logger::log_event_str(", simultaneousActivationsOfButtons := ");
+single_value->field_simultaneousActivationsOfButtons.log_match(match_value.simultaneousActivationsOfButtons(), legacy);
+TTCN_Logger::log_event_str(", dragOperationViaPointingEvent := ");
+single_value->field_dragOperationViaPointingEvent.log_match(match_value.dragOperationViaPointingEvent(), legacy);
+TTCN_Logger::log_event_str(", intermediateCoordinatesDuringDragOperation := ");
+single_value->field_intermediateCoordinatesDuringDragOperation.log_match(match_value.intermediateCoordinatesDuringDragOperation(), 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 GetHardwareResHardwareType_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_touchScreenandPointingEvent.encode_text(text_buf);
+single_value->field_pointingDeviceAndPointingEvent.encode_text(text_buf);
+single_value->field_multipleFrequencyAudioOutput.encode_text(text_buf);
+single_value->field_adjustableVolumeAudioOutput.encode_text(text_buf);
+single_value->field_simultaneousActivationsOfPhysicalSoftKeys.encode_text(text_buf);
+single_value->field_simultaneousActivationsOfButtons.encode_text(text_buf);
+single_value->field_dragOperationViaPointingEvent.encode_text(text_buf);
+single_value->field_intermediateCoordinatesDuringDragOperation.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 @IsobusVTMessageTypes.GetHardwareResHardwareType.");
+}
+}
+
+void GetHardwareResHardwareType_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_touchScreenandPointingEvent.decode_text(text_buf);
+single_value->field_pointingDeviceAndPointingEvent.decode_text(text_buf);
+single_value->field_multipleFrequencyAudioOutput.decode_text(text_buf);
+single_value->field_adjustableVolumeAudioOutput.decode_text(text_buf);
+single_value->field_simultaneousActivationsOfPhysicalSoftKeys.decode_text(text_buf);
+single_value->field_simultaneousActivationsOfButtons.decode_text(text_buf);
+single_value->field_dragOperationViaPointingEvent.decode_text(text_buf);
+single_value->field_intermediateCoordinatesDuringDragOperation.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 GetHardwareResHardwareType_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 @IsobusVTMessageTypes.GetHardwareResHardwareType.");
+}
+}
+
+void GetHardwareResHardwareType_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: {
+    GetHardwareResHardwareType_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.GetHardwareResHardwareType has 8 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) touchScreenandPointingEvent().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) pointingDeviceAndPointingEvent().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) multipleFrequencyAudioOutput().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) adjustableVolumeAudioOutput().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) simultaneousActivationsOfPhysicalSoftKeys().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) simultaneousActivationsOfButtons().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) dragOperationViaPointingEvent().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) intermediateCoordinatesDuringDragOperation().set_param(*param.get_elem(7));
+    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(), "touchScreenandPointingEvent")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          touchScreenandPointingEvent().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(), "pointingDeviceAndPointingEvent")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          pointingDeviceAndPointingEvent().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(), "multipleFrequencyAudioOutput")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          multipleFrequencyAudioOutput().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(), "adjustableVolumeAudioOutput")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          adjustableVolumeAudioOutput().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(), "simultaneousActivationsOfPhysicalSoftKeys")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          simultaneousActivationsOfPhysicalSoftKeys().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(), "simultaneousActivationsOfButtons")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          simultaneousActivationsOfButtons().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(), "dragOperationViaPointingEvent")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          dragOperationViaPointingEvent().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(), "intermediateCoordinatesDuringDragOperation")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          intermediateCoordinatesDuringDragOperation().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 @IsobusVTMessageTypes.GetHardwareResHardwareType: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.GetHardwareResHardwareType");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void GetHardwareResHardwareType_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_touchScreenandPointingEvent.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetHardwareResHardwareType");
+single_value->field_pointingDeviceAndPointingEvent.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetHardwareResHardwareType");
+single_value->field_multipleFrequencyAudioOutput.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetHardwareResHardwareType");
+single_value->field_adjustableVolumeAudioOutput.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetHardwareResHardwareType");
+single_value->field_simultaneousActivationsOfPhysicalSoftKeys.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetHardwareResHardwareType");
+single_value->field_simultaneousActivationsOfButtons.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetHardwareResHardwareType");
+single_value->field_dragOperationViaPointingEvent.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetHardwareResHardwareType");
+single_value->field_intermediateCoordinatesDuringDragOperation.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetHardwareResHardwareType");
+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 : "@IsobusVTMessageTypes.GetHardwareResHardwareType");
+}
+
+boolean GetHardwareResHardwareType_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean GetHardwareResHardwareType_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+GetHardwareRes::GetHardwareRes()
+{
+}
+
+GetHardwareRes::GetHardwareRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_bootTimeInSeconds,
+    const e__GetHardwareResGraphicType& par_graphicType,
+    const GetHardwareResHardwareType& par_hardware,
+    const INTEGER& par_xPixels,
+    const INTEGER& par_yPixels)
+  :   field_vtfunction(par_vtfunction),
+  field_bootTimeInSeconds(par_bootTimeInSeconds),
+  field_graphicType(par_graphicType),
+  field_hardware(par_hardware),
+  field_xPixels(par_xPixels),
+  field_yPixels(par_yPixels)
+{
+}
+
+GetHardwareRes::GetHardwareRes(const GetHardwareRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.GetHardwareRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.bootTimeInSeconds().is_bound()) field_bootTimeInSeconds = other_value.bootTimeInSeconds();
+else field_bootTimeInSeconds.clean_up();
+if (other_value.graphicType().is_bound()) field_graphicType = other_value.graphicType();
+else field_graphicType.clean_up();
+if (other_value.hardware().is_bound()) field_hardware = other_value.hardware();
+else field_hardware.clean_up();
+if (other_value.xPixels().is_bound()) field_xPixels = other_value.xPixels();
+else field_xPixels.clean_up();
+if (other_value.yPixels().is_bound()) field_yPixels = other_value.yPixels();
+else field_yPixels.clean_up();
+}
+
+void GetHardwareRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_bootTimeInSeconds.clean_up();
+field_graphicType.clean_up();
+field_hardware.clean_up();
+field_xPixels.clean_up();
+field_yPixels.clean_up();
+}
+
+const TTCN_Typedescriptor_t* GetHardwareRes::get_descriptor() const { return &GetHardwareRes_descr_; }
+GetHardwareRes& GetHardwareRes::operator=(const GetHardwareRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.GetHardwareRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.bootTimeInSeconds().is_bound()) field_bootTimeInSeconds = other_value.bootTimeInSeconds();
+  else field_bootTimeInSeconds.clean_up();
+  if (other_value.graphicType().is_bound()) field_graphicType = other_value.graphicType();
+  else field_graphicType.clean_up();
+  if (other_value.hardware().is_bound()) field_hardware = other_value.hardware();
+  else field_hardware.clean_up();
+  if (other_value.xPixels().is_bound()) field_xPixels = other_value.xPixels();
+  else field_xPixels.clean_up();
+  if (other_value.yPixels().is_bound()) field_yPixels = other_value.yPixels();
+  else field_yPixels.clean_up();
+}
+return *this;
+}
+
+boolean GetHardwareRes::operator==(const GetHardwareRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_bootTimeInSeconds==other_value.field_bootTimeInSeconds
+  && field_graphicType==other_value.field_graphicType
+  && field_hardware==other_value.field_hardware
+  && field_xPixels==other_value.field_xPixels
+  && field_yPixels==other_value.field_yPixels;
+}
+
+boolean GetHardwareRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_bootTimeInSeconds.is_bound())
+  || (field_graphicType.is_bound())
+  || (field_hardware.is_bound())
+  || (field_xPixels.is_bound())
+  || (field_yPixels.is_bound());
+}
+boolean GetHardwareRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_bootTimeInSeconds.is_value()
+  && field_graphicType.is_value()
+  && field_hardware.is_value()
+  && field_xPixels.is_value()
+  && field_yPixels.is_value();
+}
+void GetHardwareRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", bootTimeInSeconds := ");
+field_bootTimeInSeconds.log();
+TTCN_Logger::log_event_str(", graphicType := ");
+field_graphicType.log();
+TTCN_Logger::log_event_str(", hardware := ");
+field_hardware.log();
+TTCN_Logger::log_event_str(", xPixels := ");
+field_xPixels.log();
+TTCN_Logger::log_event_str(", yPixels := ");
+field_yPixels.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void GetHardwareRes::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 @IsobusVTMessageTypes.GetHardwareRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) bootTimeInSeconds().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) graphicType().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) hardware().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) xPixels().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) yPixels().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "bootTimeInSeconds")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          bootTimeInSeconds().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(), "graphicType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          graphicType().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(), "hardware")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          hardware().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(), "xPixels")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          xPixels().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(), "yPixels")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          yPixels().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 @IsobusVTMessageTypes.GetHardwareRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.GetHardwareRes");
+  }
+}
+
+void GetHardwareRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (bootTimeInSeconds().is_bound()) bootTimeInSeconds().set_implicit_omit();
+if (graphicType().is_bound()) graphicType().set_implicit_omit();
+if (hardware().is_bound()) hardware().set_implicit_omit();
+if (xPixels().is_bound()) xPixels().set_implicit_omit();
+if (yPixels().is_bound()) yPixels().set_implicit_omit();
+}
+
+void GetHardwareRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_bootTimeInSeconds.encode_text(text_buf);
+field_graphicType.encode_text(text_buf);
+field_hardware.encode_text(text_buf);
+field_xPixels.encode_text(text_buf);
+field_yPixels.encode_text(text_buf);
+}
+
+void GetHardwareRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_bootTimeInSeconds.decode_text(text_buf);
+field_graphicType.decode_text(text_buf);
+field_hardware.decode_text(text_buf);
+field_xPixels.decode_text(text_buf);
+field_yPixels.decode_text(text_buf);
+}
+
+void GetHardwareRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void GetHardwareRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int GetHardwareRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, BootTimeType_descr_.raw->forceomit);
+  decoded_field_length = field_bootTimeInSeconds.RAW_decode(BootTimeType_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, e__GetHardwareResGraphicType_descr_.raw->forceomit);
+  decoded_field_length = field_graphicType.RAW_decode(e__GetHardwareResGraphicType_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, GetHardwareResHardwareType_descr_.raw->forceomit);
+  decoded_field_length = field_hardware.RAW_decode(GetHardwareResHardwareType_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, IsobusMessageTypes::INT2_descr_.raw->forceomit);
+  decoded_field_length = field_xPixels.RAW_decode(IsobusMessageTypes::INT2_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, IsobusMessageTypes::INT2_descr_.raw->forceomit);
+  decoded_field_length = field_yPixels.RAW_decode(IsobusMessageTypes::INT2_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int GetHardwareRes::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BootTimeType_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, e__GetHardwareResGraphicType_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, GetHardwareResHardwareType_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, IsobusMessageTypes::INT2_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, IsobusMessageTypes::INT2_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_bootTimeInSeconds.RAW_encode(BootTimeType_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_graphicType.RAW_encode(e__GetHardwareResGraphicType_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_hardware.RAW_encode(GetHardwareResHardwareType_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_xPixels.RAW_encode(IsobusMessageTypes::INT2_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_yPixels.RAW_encode(IsobusMessageTypes::INT2_descr_, *myleaf.body.node.nodes[5]);
+  return myleaf.length = encoded_length;
+}
+
+struct GetHardwareRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_bootTimeInSeconds;
+e__GetHardwareResGraphicType_template field_graphicType;
+GetHardwareResHardwareType_template field_hardware;
+INTEGER_template field_xPixels;
+INTEGER_template field_yPixels;
+};
+
+void GetHardwareRes_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_vtfunction = ANY_VALUE;
+single_value->field_bootTimeInSeconds = ANY_VALUE;
+single_value->field_graphicType = ANY_VALUE;
+single_value->field_hardware = ANY_VALUE;
+single_value->field_xPixels = ANY_VALUE;
+single_value->field_yPixels = ANY_VALUE;
+}
+}
+}
+
+void GetHardwareRes_template::copy_value(const GetHardwareRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.bootTimeInSeconds().is_bound()) {
+  single_value->field_bootTimeInSeconds = other_value.bootTimeInSeconds();
+} else {
+  single_value->field_bootTimeInSeconds.clean_up();
+}
+if (other_value.graphicType().is_bound()) {
+  single_value->field_graphicType = other_value.graphicType();
+} else {
+  single_value->field_graphicType.clean_up();
+}
+if (other_value.hardware().is_bound()) {
+  single_value->field_hardware = other_value.hardware();
+} else {
+  single_value->field_hardware.clean_up();
+}
+if (other_value.xPixels().is_bound()) {
+  single_value->field_xPixels = other_value.xPixels();
+} else {
+  single_value->field_xPixels.clean_up();
+}
+if (other_value.yPixels().is_bound()) {
+  single_value->field_yPixels = other_value.yPixels();
+} else {
+  single_value->field_yPixels.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void GetHardwareRes_template::copy_template(const GetHardwareRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.bootTimeInSeconds().get_selection()) {
+single_value->field_bootTimeInSeconds = other_value.bootTimeInSeconds();
+} else {
+single_value->field_bootTimeInSeconds.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.graphicType().get_selection()) {
+single_value->field_graphicType = other_value.graphicType();
+} else {
+single_value->field_graphicType.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.hardware().get_selection()) {
+single_value->field_hardware = other_value.hardware();
+} else {
+single_value->field_hardware.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.xPixels().get_selection()) {
+single_value->field_xPixels = other_value.xPixels();
+} else {
+single_value->field_xPixels.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.yPixels().get_selection()) {
+single_value->field_yPixels = other_value.yPixels();
+} else {
+single_value->field_yPixels.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new GetHardwareRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetHardwareRes.");
+break;
+}
+set_selection(other_value);
+}
+
+GetHardwareRes_template::GetHardwareRes_template()
+{
+}
+
+GetHardwareRes_template::GetHardwareRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+GetHardwareRes_template::GetHardwareRes_template(const GetHardwareRes& other_value)
+{
+copy_value(other_value);
+}
+
+GetHardwareRes_template::GetHardwareRes_template(const OPTIONAL<GetHardwareRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const GetHardwareRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.GetHardwareRes from an unbound optional field.");
+}
+}
+
+GetHardwareRes_template::GetHardwareRes_template(const GetHardwareRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+GetHardwareRes_template::~GetHardwareRes_template()
+{
+clean_up();
+}
+
+GetHardwareRes_template& GetHardwareRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+GetHardwareRes_template& GetHardwareRes_template::operator=(const GetHardwareRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+GetHardwareRes_template& GetHardwareRes_template::operator=(const OPTIONAL<GetHardwareRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const GetHardwareRes&)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 @IsobusVTMessageTypes.GetHardwareRes.");
+}
+return *this;
+}
+
+GetHardwareRes_template& GetHardwareRes_template::operator=(const GetHardwareRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean GetHardwareRes_template::match(const GetHardwareRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.bootTimeInSeconds().is_bound()) return FALSE;
+if(!single_value->field_bootTimeInSeconds.match(other_value.bootTimeInSeconds(), legacy))return FALSE;
+if(!other_value.graphicType().is_bound()) return FALSE;
+if(!single_value->field_graphicType.match(other_value.graphicType(), legacy))return FALSE;
+if(!other_value.hardware().is_bound()) return FALSE;
+if(!single_value->field_hardware.match(other_value.hardware(), legacy))return FALSE;
+if(!other_value.xPixels().is_bound()) return FALSE;
+if(!single_value->field_xPixels.match(other_value.xPixels(), legacy))return FALSE;
+if(!other_value.yPixels().is_bound()) return FALSE;
+if(!single_value->field_yPixels.match(other_value.yPixels(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetHardwareRes.");
+}
+return FALSE;
+}
+
+boolean GetHardwareRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_bootTimeInSeconds.is_bound()
+
+ ||single_value->field_graphicType.is_bound()
+
+ ||single_value->field_hardware.is_bound()
+
+ ||single_value->field_xPixels.is_bound()
+
+ ||single_value->field_yPixels.is_bound()
+;
+}
+
+boolean GetHardwareRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_bootTimeInSeconds.is_value()
+ &&single_value->field_graphicType.is_value()
+ &&single_value->field_hardware.is_value()
+ &&single_value->field_xPixels.is_value()
+ &&single_value->field_yPixels.is_value();
+}
+
+void GetHardwareRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+GetHardwareRes GetHardwareRes_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 @IsobusVTMessageTypes.GetHardwareRes.");
+GetHardwareRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_bootTimeInSeconds.is_bound()) {
+ret_val.bootTimeInSeconds() = single_value->field_bootTimeInSeconds.valueof();
+}
+if (single_value->field_graphicType.is_bound()) {
+ret_val.graphicType() = single_value->field_graphicType.valueof();
+}
+if (single_value->field_hardware.is_bound()) {
+ret_val.hardware() = single_value->field_hardware.valueof();
+}
+if (single_value->field_xPixels.is_bound()) {
+ret_val.xPixels() = single_value->field_xPixels.valueof();
+}
+if (single_value->field_yPixels.is_bound()) {
+ret_val.yPixels() = single_value->field_yPixels.valueof();
+}
+return ret_val;
+}
+
+void GetHardwareRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.GetHardwareRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new GetHardwareRes_template[list_length];
+}
+
+GetHardwareRes_template& GetHardwareRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.GetHardwareRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.GetHardwareRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& GetHardwareRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& GetHardwareRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.GetHardwareRes.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& GetHardwareRes_template::bootTimeInSeconds()
+{
+set_specific();
+return single_value->field_bootTimeInSeconds;
+}
+
+const INTEGER_template& GetHardwareRes_template::bootTimeInSeconds() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field bootTimeInSeconds of a non-specific template of type @IsobusVTMessageTypes.GetHardwareRes.");
+return single_value->field_bootTimeInSeconds;
+}
+
+e__GetHardwareResGraphicType_template& GetHardwareRes_template::graphicType()
+{
+set_specific();
+return single_value->field_graphicType;
+}
+
+const e__GetHardwareResGraphicType_template& GetHardwareRes_template::graphicType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field graphicType of a non-specific template of type @IsobusVTMessageTypes.GetHardwareRes.");
+return single_value->field_graphicType;
+}
+
+GetHardwareResHardwareType_template& GetHardwareRes_template::hardware()
+{
+set_specific();
+return single_value->field_hardware;
+}
+
+const GetHardwareResHardwareType_template& GetHardwareRes_template::hardware() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field hardware of a non-specific template of type @IsobusVTMessageTypes.GetHardwareRes.");
+return single_value->field_hardware;
+}
+
+INTEGER_template& GetHardwareRes_template::xPixels()
+{
+set_specific();
+return single_value->field_xPixels;
+}
+
+const INTEGER_template& GetHardwareRes_template::xPixels() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field xPixels of a non-specific template of type @IsobusVTMessageTypes.GetHardwareRes.");
+return single_value->field_xPixels;
+}
+
+INTEGER_template& GetHardwareRes_template::yPixels()
+{
+set_specific();
+return single_value->field_yPixels;
+}
+
+const INTEGER_template& GetHardwareRes_template::yPixels() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field yPixels of a non-specific template of type @IsobusVTMessageTypes.GetHardwareRes.");
+return single_value->field_yPixels;
+}
+
+int GetHardwareRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetHardwareRes 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 @IsobusVTMessageTypes.GetHardwareRes 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 @IsobusVTMessageTypes.GetHardwareRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetHardwareRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetHardwareRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetHardwareRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetHardwareRes.");
+  }
+  return 0;
+}
+
+void GetHardwareRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", bootTimeInSeconds := ");
+single_value->field_bootTimeInSeconds.log();
+TTCN_Logger::log_event_str(", graphicType := ");
+single_value->field_graphicType.log();
+TTCN_Logger::log_event_str(", hardware := ");
+single_value->field_hardware.log();
+TTCN_Logger::log_event_str(", xPixels := ");
+single_value->field_xPixels.log();
+TTCN_Logger::log_event_str(", yPixels := ");
+single_value->field_yPixels.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void GetHardwareRes_template::log_match(const GetHardwareRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_bootTimeInSeconds.match(match_value.bootTimeInSeconds(), legacy)){
+TTCN_Logger::log_logmatch_info(".bootTimeInSeconds");
+single_value->field_bootTimeInSeconds.log_match(match_value.bootTimeInSeconds(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_graphicType.match(match_value.graphicType(), legacy)){
+TTCN_Logger::log_logmatch_info(".graphicType");
+single_value->field_graphicType.log_match(match_value.graphicType(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_hardware.match(match_value.hardware(), legacy)){
+TTCN_Logger::log_logmatch_info(".hardware");
+single_value->field_hardware.log_match(match_value.hardware(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_xPixels.match(match_value.xPixels(), legacy)){
+TTCN_Logger::log_logmatch_info(".xPixels");
+single_value->field_xPixels.log_match(match_value.xPixels(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_yPixels.match(match_value.yPixels(), legacy)){
+TTCN_Logger::log_logmatch_info(".yPixels");
+single_value->field_yPixels.log_match(match_value.yPixels(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", bootTimeInSeconds := ");
+single_value->field_bootTimeInSeconds.log_match(match_value.bootTimeInSeconds(), legacy);
+TTCN_Logger::log_event_str(", graphicType := ");
+single_value->field_graphicType.log_match(match_value.graphicType(), legacy);
+TTCN_Logger::log_event_str(", hardware := ");
+single_value->field_hardware.log_match(match_value.hardware(), legacy);
+TTCN_Logger::log_event_str(", xPixels := ");
+single_value->field_xPixels.log_match(match_value.xPixels(), legacy);
+TTCN_Logger::log_event_str(", yPixels := ");
+single_value->field_yPixels.log_match(match_value.yPixels(), 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 GetHardwareRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_bootTimeInSeconds.encode_text(text_buf);
+single_value->field_graphicType.encode_text(text_buf);
+single_value->field_hardware.encode_text(text_buf);
+single_value->field_xPixels.encode_text(text_buf);
+single_value->field_yPixels.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 @IsobusVTMessageTypes.GetHardwareRes.");
+}
+}
+
+void GetHardwareRes_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_vtfunction.decode_text(text_buf);
+single_value->field_bootTimeInSeconds.decode_text(text_buf);
+single_value->field_graphicType.decode_text(text_buf);
+single_value->field_hardware.decode_text(text_buf);
+single_value->field_xPixels.decode_text(text_buf);
+single_value->field_yPixels.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 GetHardwareRes_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 @IsobusVTMessageTypes.GetHardwareRes.");
+}
+}
+
+void GetHardwareRes_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: {
+    GetHardwareRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.GetHardwareRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) bootTimeInSeconds().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) graphicType().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) hardware().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) xPixels().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) yPixels().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "bootTimeInSeconds")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          bootTimeInSeconds().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(), "graphicType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          graphicType().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(), "hardware")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          hardware().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(), "xPixels")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          xPixels().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(), "yPixels")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          yPixels().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 @IsobusVTMessageTypes.GetHardwareRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.GetHardwareRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void GetHardwareRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetHardwareRes");
+single_value->field_bootTimeInSeconds.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetHardwareRes");
+single_value->field_graphicType.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetHardwareRes");
+single_value->field_hardware.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetHardwareRes");
+single_value->field_xPixels.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetHardwareRes");
+single_value->field_yPixels.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetHardwareRes");
+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 : "@IsobusVTMessageTypes.GetHardwareRes");
+}
+
+boolean GetHardwareRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean GetHardwareRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+e__Codeplane::e__Codeplane()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+e__Codeplane::e__Codeplane(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @IsobusVTMessageTypes.e_Codeplane with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+e__Codeplane::e__Codeplane(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+e__Codeplane::e__Codeplane(const e__Codeplane& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @IsobusVTMessageTypes.e_Codeplane.");
+enum_value = other_value.enum_value;
+}
+
+e__Codeplane& e__Codeplane::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @IsobusVTMessageTypes.e_Codeplane.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+e__Codeplane& e__Codeplane::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+e__Codeplane& e__Codeplane::operator=(const e__Codeplane& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusVTMessageTypes.e_Codeplane.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean e__Codeplane::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_Codeplane.");
+return enum_value == other_value;
+}
+
+boolean e__Codeplane::operator==(const e__Codeplane& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_Codeplane.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_Codeplane.");
+return enum_value == other_value.enum_value;
+}
+
+boolean e__Codeplane::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_Codeplane.");
+return enum_value < other_value;
+}
+
+boolean e__Codeplane::operator<(const e__Codeplane& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_Codeplane.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_Codeplane.");
+return enum_value < other_value.enum_value;
+}
+
+boolean e__Codeplane::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_Codeplane.");
+return enum_value > other_value;
+}
+
+boolean e__Codeplane::operator>(const e__Codeplane& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_Codeplane.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_Codeplane.");
+return enum_value > other_value.enum_value;
+}
+
+const char *e__Codeplane::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case codeplane0: return "codeplane0";
+case codeplane1: return "codeplane1";
+case codeplane2: return "codeplane2";
+case codeplane3: return "codeplane3";
+case codeplane4: return "codeplane4";
+case codeplane5: return "codeplane5";
+case codeplane6: return "codeplane6";
+case codeplane7: return "codeplane7";
+case codeplane8: return "codeplane8";
+case codeplane9: return "codeplane9";
+case codeplane10: return "codeplane10";
+case codeplane11: return "codeplane11";
+case codeplane12: return "codeplane12";
+case codeplane13: return "codeplane13";
+case codeplane14: return "codeplane14";
+case codeplane15: return "codeplane15";
+case codeplane16: return "codeplane16";
+default: return "<unknown>";
+}
+}
+
+e__Codeplane::enum_type e__Codeplane::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "codeplane0")) return codeplane0;
+else if (!strcmp(str_par, "codeplane1")) return codeplane1;
+else if (!strcmp(str_par, "codeplane2")) return codeplane2;
+else if (!strcmp(str_par, "codeplane3")) return codeplane3;
+else if (!strcmp(str_par, "codeplane4")) return codeplane4;
+else if (!strcmp(str_par, "codeplane5")) return codeplane5;
+else if (!strcmp(str_par, "codeplane6")) return codeplane6;
+else if (!strcmp(str_par, "codeplane7")) return codeplane7;
+else if (!strcmp(str_par, "codeplane8")) return codeplane8;
+else if (!strcmp(str_par, "codeplane9")) return codeplane9;
+else if (!strcmp(str_par, "codeplane10")) return codeplane10;
+else if (!strcmp(str_par, "codeplane11")) return codeplane11;
+else if (!strcmp(str_par, "codeplane12")) return codeplane12;
+else if (!strcmp(str_par, "codeplane13")) return codeplane13;
+else if (!strcmp(str_par, "codeplane14")) return codeplane14;
+else if (!strcmp(str_par, "codeplane15")) return codeplane15;
+else if (!strcmp(str_par, "codeplane16")) return codeplane16;
+else return UNKNOWN_VALUE;
+}
+
+boolean e__Codeplane::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 0:
+case 1:
+case 2:
+case 3:
+case 4:
+case 5:
+case 6:
+case 7:
+case 8:
+case 9:
+case 10:
+case 11:
+case 12:
+case 13:
+case 14:
+case 15:
+case 16:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int e__Codeplane::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusVTMessageTypes.e_Codeplane.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int e__Codeplane::enum2int(const e__Codeplane& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusVTMessageTypes.e_Codeplane.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void e__Codeplane::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @IsobusVTMessageTypes.e_Codeplane.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+e__Codeplane::operator e__Codeplane::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @IsobusVTMessageTypes.e_Codeplane.");
+return enum_value;
+}
+
+void e__Codeplane::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void e__Codeplane::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@IsobusVTMessageTypes.e_Codeplane");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @IsobusVTMessageTypes.e_Codeplane.");
+  }
+}
+
+void e__Codeplane::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @IsobusVTMessageTypes.e_Codeplane.");
+text_buf.push_int(enum_value);
+}
+
+void e__Codeplane::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @IsobusVTMessageTypes.e_Codeplane.", enum_value);
+}
+
+void e__Codeplane::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void e__Codeplane::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int e__Codeplane::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*)
+{
+  int decoded_value = 0;
+  int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 5, no_err);
+  if (decoded_length < 0) return decoded_length;
+  if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value;
+  else {
+    if(no_err){
+     return -1;
+    } else {
+    TTCN_EncDec_ErrorContext::error
+      (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name);
+    enum_value = UNKNOWN_VALUE;
+    }
+  }
+  return decoded_length;
+}
+
+int e__Codeplane::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const
+{
+  return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 5);
+}
+
+void e__Codeplane_template::copy_template(const e__Codeplane_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new e__Codeplane_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_Codeplane.");
+}
+}
+
+e__Codeplane_template::e__Codeplane_template()
+{
+}
+
+e__Codeplane_template::e__Codeplane_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+e__Codeplane_template::e__Codeplane_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!e__Codeplane::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @IsobusVTMessageTypes.e_Codeplane with unknown numeric value %d.", other_value);
+single_value = (e__Codeplane::enum_type)other_value;
+}
+
+e__Codeplane_template::e__Codeplane_template(e__Codeplane::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+e__Codeplane_template::e__Codeplane_template(const e__Codeplane& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == e__Codeplane::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @IsobusVTMessageTypes.e_Codeplane.");
+single_value = other_value.enum_value;
+}
+
+e__Codeplane_template::e__Codeplane_template(const OPTIONAL<e__Codeplane>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__Codeplane::enum_type)(const e__Codeplane&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @IsobusVTMessageTypes.e_Codeplane from an unbound optional field.");
+}
+}
+
+e__Codeplane_template::e__Codeplane_template(const e__Codeplane_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+e__Codeplane_template::~e__Codeplane_template()
+{
+clean_up();
+}
+
+boolean e__Codeplane_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean e__Codeplane_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != e__Codeplane::UNBOUND_VALUE;
+}
+
+void e__Codeplane_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+e__Codeplane_template& e__Codeplane_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+e__Codeplane_template& e__Codeplane_template::operator=(int other_value)
+{
+if (!e__Codeplane::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @IsobusVTMessageTypes.e_Codeplane.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (e__Codeplane::enum_type)other_value;
+return *this;
+}
+
+e__Codeplane_template& e__Codeplane_template::operator=(e__Codeplane::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+e__Codeplane_template& e__Codeplane_template::operator=(const e__Codeplane& other_value)
+{
+if (other_value.enum_value == e__Codeplane::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusVTMessageTypes.e_Codeplane to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+e__Codeplane_template& e__Codeplane_template::operator=(const OPTIONAL<e__Codeplane>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__Codeplane::enum_type)(const e__Codeplane&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @IsobusVTMessageTypes.e_Codeplane.");
+}
+return *this;
+}
+
+e__Codeplane_template& e__Codeplane_template::operator=(const e__Codeplane_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean e__Codeplane_template::match(e__Codeplane::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_Codeplane.");
+}
+return FALSE;
+}
+
+boolean e__Codeplane_template::match(const e__Codeplane& other_value, boolean) const
+{
+if (other_value.enum_value == e__Codeplane::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @IsobusVTMessageTypes.e_Codeplane with an unbound value.");
+return match(other_value.enum_value);
+}
+
+e__Codeplane::enum_type e__Codeplane_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @IsobusVTMessageTypes.e_Codeplane.");
+return single_value;
+}
+
+void e__Codeplane_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @IsobusVTMessageTypes.e_Codeplane.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new e__Codeplane_template[list_length];
+}
+
+e__Codeplane_template& e__Codeplane_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @IsobusVTMessageTypes.e_Codeplane.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @IsobusVTMessageTypes.e_Codeplane.");
+return value_list.list_value[list_index];
+}
+
+void e__Codeplane_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(e__Codeplane::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void e__Codeplane_template::log_match(const e__Codeplane& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void e__Codeplane_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_Codeplane.");
+}
+}
+
+void e__Codeplane_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (e__Codeplane::enum_type)text_buf.pull_int().get_val();
+if (!e__Codeplane::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @IsobusVTMessageTypes.e_Codeplane.", single_value);
+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 e__Codeplane_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @IsobusVTMessageTypes.e_Codeplane.");
+}
+}
+
+boolean e__Codeplane_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean e__Codeplane_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 e__Codeplane_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    e__Codeplane_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    e__Codeplane::enum_type enum_val = e__Codeplane::str_to_enum(m_p->get_enumerated());
+    if (!e__Codeplane::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @IsobusVTMessageTypes.e_Codeplane.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@IsobusVTMessageTypes.e_Codeplane");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void e__Codeplane_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@IsobusVTMessageTypes.e_Codeplane");
+}
+
+GetSupportedWidecharsReq::GetSupportedWidecharsReq()
+{
+}
+
+GetSupportedWidecharsReq::GetSupportedWidecharsReq(const INTEGER& par_vtfunction,
+    const e__Codeplane& par_codeplane,
+    const OCTETSTRING& par_firstWideCharInInquiryRange,
+    const OCTETSTRING& par_lastWideCharInInquiryRange,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_codeplane(par_codeplane),
+  field_firstWideCharInInquiryRange(par_firstWideCharInInquiryRange),
+  field_lastWideCharInInquiryRange(par_lastWideCharInInquiryRange),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+GetSupportedWidecharsReq::GetSupportedWidecharsReq(const GetSupportedWidecharsReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.GetSupportedWidecharsReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.codeplane().is_bound()) field_codeplane = other_value.codeplane();
+else field_codeplane.clean_up();
+if (other_value.firstWideCharInInquiryRange().is_bound()) field_firstWideCharInInquiryRange = other_value.firstWideCharInInquiryRange();
+else field_firstWideCharInInquiryRange.clean_up();
+if (other_value.lastWideCharInInquiryRange().is_bound()) field_lastWideCharInInquiryRange = other_value.lastWideCharInInquiryRange();
+else field_lastWideCharInInquiryRange.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void GetSupportedWidecharsReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_codeplane.clean_up();
+field_firstWideCharInInquiryRange.clean_up();
+field_lastWideCharInInquiryRange.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* GetSupportedWidecharsReq::get_descriptor() const { return &GetSupportedWidecharsReq_descr_; }
+GetSupportedWidecharsReq& GetSupportedWidecharsReq::operator=(const GetSupportedWidecharsReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.GetSupportedWidecharsReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.codeplane().is_bound()) field_codeplane = other_value.codeplane();
+  else field_codeplane.clean_up();
+  if (other_value.firstWideCharInInquiryRange().is_bound()) field_firstWideCharInInquiryRange = other_value.firstWideCharInInquiryRange();
+  else field_firstWideCharInInquiryRange.clean_up();
+  if (other_value.lastWideCharInInquiryRange().is_bound()) field_lastWideCharInInquiryRange = other_value.lastWideCharInInquiryRange();
+  else field_lastWideCharInInquiryRange.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean GetSupportedWidecharsReq::operator==(const GetSupportedWidecharsReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_codeplane==other_value.field_codeplane
+  && field_firstWideCharInInquiryRange==other_value.field_firstWideCharInInquiryRange
+  && field_lastWideCharInInquiryRange==other_value.field_lastWideCharInInquiryRange
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean GetSupportedWidecharsReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_codeplane.is_bound())
+  || (field_firstWideCharInInquiryRange.is_bound())
+  || (field_lastWideCharInInquiryRange.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean GetSupportedWidecharsReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_codeplane.is_value()
+  && field_firstWideCharInInquiryRange.is_value()
+  && field_lastWideCharInInquiryRange.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void GetSupportedWidecharsReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", codeplane := ");
+field_codeplane.log();
+TTCN_Logger::log_event_str(", firstWideCharInInquiryRange := ");
+field_firstWideCharInInquiryRange.log();
+TTCN_Logger::log_event_str(", lastWideCharInInquiryRange := ");
+field_lastWideCharInInquiryRange.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void GetSupportedWidecharsReq::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 @IsobusVTMessageTypes.GetSupportedWidecharsReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) codeplane().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) firstWideCharInInquiryRange().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) lastWideCharInInquiryRange().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "codeplane")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          codeplane().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(), "firstWideCharInInquiryRange")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          firstWideCharInInquiryRange().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(), "lastWideCharInInquiryRange")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          lastWideCharInInquiryRange().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.GetSupportedWidecharsReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.GetSupportedWidecharsReq");
+  }
+}
+
+void GetSupportedWidecharsReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (codeplane().is_bound()) codeplane().set_implicit_omit();
+if (firstWideCharInInquiryRange().is_bound()) firstWideCharInInquiryRange().set_implicit_omit();
+if (lastWideCharInInquiryRange().is_bound()) lastWideCharInInquiryRange().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void GetSupportedWidecharsReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_codeplane.encode_text(text_buf);
+field_firstWideCharInInquiryRange.encode_text(text_buf);
+field_lastWideCharInInquiryRange.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void GetSupportedWidecharsReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_codeplane.decode_text(text_buf);
+field_firstWideCharInInquiryRange.decode_text(text_buf);
+field_lastWideCharInInquiryRange.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void GetSupportedWidecharsReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void GetSupportedWidecharsReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int GetSupportedWidecharsReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, e__Codeplane_descr_.raw->forceomit);
+  decoded_field_length = field_codeplane.RAW_decode(e__Codeplane_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::OCT2_descr_.raw->forceomit);
+  decoded_field_length = field_firstWideCharInInquiryRange.RAW_decode(General__Types::OCT2_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::OCT2_descr_.raw->forceomit);
+  decoded_field_length = field_lastWideCharInInquiryRange.RAW_decode(General__Types::OCT2_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, GetSupportedWidecharsReq_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(GetSupportedWidecharsReq_reserved7_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, GetSupportedWidecharsReq_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(GetSupportedWidecharsReq_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int GetSupportedWidecharsReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, e__Codeplane_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, General__Types::OCT2_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, General__Types::OCT2_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, GetSupportedWidecharsReq_reserved7_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, GetSupportedWidecharsReq_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_codeplane.RAW_encode(e__Codeplane_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_firstWideCharInInquiryRange.RAW_encode(General__Types::OCT2_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_lastWideCharInInquiryRange.RAW_encode(General__Types::OCT2_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved7.RAW_encode(GetSupportedWidecharsReq_reserved7_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved8.RAW_encode(GetSupportedWidecharsReq_reserved8_descr_, *myleaf.body.node.nodes[5]);
+  return myleaf.length = encoded_length;
+}
+
+struct GetSupportedWidecharsReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+e__Codeplane_template field_codeplane;
+OCTETSTRING_template field_firstWideCharInInquiryRange;
+OCTETSTRING_template field_lastWideCharInInquiryRange;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void GetSupportedWidecharsReq_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_vtfunction = ANY_VALUE;
+single_value->field_codeplane = ANY_VALUE;
+single_value->field_firstWideCharInInquiryRange = ANY_VALUE;
+single_value->field_lastWideCharInInquiryRange = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void GetSupportedWidecharsReq_template::copy_value(const GetSupportedWidecharsReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.codeplane().is_bound()) {
+  single_value->field_codeplane = other_value.codeplane();
+} else {
+  single_value->field_codeplane.clean_up();
+}
+if (other_value.firstWideCharInInquiryRange().is_bound()) {
+  single_value->field_firstWideCharInInquiryRange = other_value.firstWideCharInInquiryRange();
+} else {
+  single_value->field_firstWideCharInInquiryRange.clean_up();
+}
+if (other_value.lastWideCharInInquiryRange().is_bound()) {
+  single_value->field_lastWideCharInInquiryRange = other_value.lastWideCharInInquiryRange();
+} else {
+  single_value->field_lastWideCharInInquiryRange.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void GetSupportedWidecharsReq_template::copy_template(const GetSupportedWidecharsReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.codeplane().get_selection()) {
+single_value->field_codeplane = other_value.codeplane();
+} else {
+single_value->field_codeplane.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.firstWideCharInInquiryRange().get_selection()) {
+single_value->field_firstWideCharInInquiryRange = other_value.firstWideCharInInquiryRange();
+} else {
+single_value->field_firstWideCharInInquiryRange.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.lastWideCharInInquiryRange().get_selection()) {
+single_value->field_lastWideCharInInquiryRange = other_value.lastWideCharInInquiryRange();
+} else {
+single_value->field_lastWideCharInInquiryRange.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new GetSupportedWidecharsReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetSupportedWidecharsReq.");
+break;
+}
+set_selection(other_value);
+}
+
+GetSupportedWidecharsReq_template::GetSupportedWidecharsReq_template()
+{
+}
+
+GetSupportedWidecharsReq_template::GetSupportedWidecharsReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+GetSupportedWidecharsReq_template::GetSupportedWidecharsReq_template(const GetSupportedWidecharsReq& other_value)
+{
+copy_value(other_value);
+}
+
+GetSupportedWidecharsReq_template::GetSupportedWidecharsReq_template(const OPTIONAL<GetSupportedWidecharsReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const GetSupportedWidecharsReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.GetSupportedWidecharsReq from an unbound optional field.");
+}
+}
+
+GetSupportedWidecharsReq_template::GetSupportedWidecharsReq_template(const GetSupportedWidecharsReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+GetSupportedWidecharsReq_template::~GetSupportedWidecharsReq_template()
+{
+clean_up();
+}
+
+GetSupportedWidecharsReq_template& GetSupportedWidecharsReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+GetSupportedWidecharsReq_template& GetSupportedWidecharsReq_template::operator=(const GetSupportedWidecharsReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+GetSupportedWidecharsReq_template& GetSupportedWidecharsReq_template::operator=(const OPTIONAL<GetSupportedWidecharsReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const GetSupportedWidecharsReq&)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 @IsobusVTMessageTypes.GetSupportedWidecharsReq.");
+}
+return *this;
+}
+
+GetSupportedWidecharsReq_template& GetSupportedWidecharsReq_template::operator=(const GetSupportedWidecharsReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean GetSupportedWidecharsReq_template::match(const GetSupportedWidecharsReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.codeplane().is_bound()) return FALSE;
+if(!single_value->field_codeplane.match(other_value.codeplane(), legacy))return FALSE;
+if(!other_value.firstWideCharInInquiryRange().is_bound()) return FALSE;
+if(!single_value->field_firstWideCharInInquiryRange.match(other_value.firstWideCharInInquiryRange(), legacy))return FALSE;
+if(!other_value.lastWideCharInInquiryRange().is_bound()) return FALSE;
+if(!single_value->field_lastWideCharInInquiryRange.match(other_value.lastWideCharInInquiryRange(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetSupportedWidecharsReq.");
+}
+return FALSE;
+}
+
+boolean GetSupportedWidecharsReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_codeplane.is_bound()
+
+ ||single_value->field_firstWideCharInInquiryRange.is_bound()
+
+ ||single_value->field_lastWideCharInInquiryRange.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean GetSupportedWidecharsReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_codeplane.is_value()
+ &&single_value->field_firstWideCharInInquiryRange.is_value()
+ &&single_value->field_lastWideCharInInquiryRange.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void GetSupportedWidecharsReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+GetSupportedWidecharsReq GetSupportedWidecharsReq_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 @IsobusVTMessageTypes.GetSupportedWidecharsReq.");
+GetSupportedWidecharsReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_codeplane.is_bound()) {
+ret_val.codeplane() = single_value->field_codeplane.valueof();
+}
+if (single_value->field_firstWideCharInInquiryRange.is_bound()) {
+ret_val.firstWideCharInInquiryRange() = single_value->field_firstWideCharInInquiryRange.valueof();
+}
+if (single_value->field_lastWideCharInInquiryRange.is_bound()) {
+ret_val.lastWideCharInInquiryRange() = single_value->field_lastWideCharInInquiryRange.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void GetSupportedWidecharsReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.GetSupportedWidecharsReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new GetSupportedWidecharsReq_template[list_length];
+}
+
+GetSupportedWidecharsReq_template& GetSupportedWidecharsReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.GetSupportedWidecharsReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.GetSupportedWidecharsReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& GetSupportedWidecharsReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& GetSupportedWidecharsReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.GetSupportedWidecharsReq.");
+return single_value->field_vtfunction;
+}
+
+e__Codeplane_template& GetSupportedWidecharsReq_template::codeplane()
+{
+set_specific();
+return single_value->field_codeplane;
+}
+
+const e__Codeplane_template& GetSupportedWidecharsReq_template::codeplane() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field codeplane of a non-specific template of type @IsobusVTMessageTypes.GetSupportedWidecharsReq.");
+return single_value->field_codeplane;
+}
+
+OCTETSTRING_template& GetSupportedWidecharsReq_template::firstWideCharInInquiryRange()
+{
+set_specific();
+return single_value->field_firstWideCharInInquiryRange;
+}
+
+const OCTETSTRING_template& GetSupportedWidecharsReq_template::firstWideCharInInquiryRange() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field firstWideCharInInquiryRange of a non-specific template of type @IsobusVTMessageTypes.GetSupportedWidecharsReq.");
+return single_value->field_firstWideCharInInquiryRange;
+}
+
+OCTETSTRING_template& GetSupportedWidecharsReq_template::lastWideCharInInquiryRange()
+{
+set_specific();
+return single_value->field_lastWideCharInInquiryRange;
+}
+
+const OCTETSTRING_template& GetSupportedWidecharsReq_template::lastWideCharInInquiryRange() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field lastWideCharInInquiryRange of a non-specific template of type @IsobusVTMessageTypes.GetSupportedWidecharsReq.");
+return single_value->field_lastWideCharInInquiryRange;
+}
+
+OCTETSTRING_template& GetSupportedWidecharsReq_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& GetSupportedWidecharsReq_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.GetSupportedWidecharsReq.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& GetSupportedWidecharsReq_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& GetSupportedWidecharsReq_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.GetSupportedWidecharsReq.");
+return single_value->field_reserved8;
+}
+
+int GetSupportedWidecharsReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetSupportedWidecharsReq 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 @IsobusVTMessageTypes.GetSupportedWidecharsReq 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 @IsobusVTMessageTypes.GetSupportedWidecharsReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetSupportedWidecharsReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetSupportedWidecharsReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetSupportedWidecharsReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetSupportedWidecharsReq.");
+  }
+  return 0;
+}
+
+void GetSupportedWidecharsReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", codeplane := ");
+single_value->field_codeplane.log();
+TTCN_Logger::log_event_str(", firstWideCharInInquiryRange := ");
+single_value->field_firstWideCharInInquiryRange.log();
+TTCN_Logger::log_event_str(", lastWideCharInInquiryRange := ");
+single_value->field_lastWideCharInInquiryRange.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void GetSupportedWidecharsReq_template::log_match(const GetSupportedWidecharsReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_codeplane.match(match_value.codeplane(), legacy)){
+TTCN_Logger::log_logmatch_info(".codeplane");
+single_value->field_codeplane.log_match(match_value.codeplane(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_firstWideCharInInquiryRange.match(match_value.firstWideCharInInquiryRange(), legacy)){
+TTCN_Logger::log_logmatch_info(".firstWideCharInInquiryRange");
+single_value->field_firstWideCharInInquiryRange.log_match(match_value.firstWideCharInInquiryRange(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_lastWideCharInInquiryRange.match(match_value.lastWideCharInInquiryRange(), legacy)){
+TTCN_Logger::log_logmatch_info(".lastWideCharInInquiryRange");
+single_value->field_lastWideCharInInquiryRange.log_match(match_value.lastWideCharInInquiryRange(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", codeplane := ");
+single_value->field_codeplane.log_match(match_value.codeplane(), legacy);
+TTCN_Logger::log_event_str(", firstWideCharInInquiryRange := ");
+single_value->field_firstWideCharInInquiryRange.log_match(match_value.firstWideCharInInquiryRange(), legacy);
+TTCN_Logger::log_event_str(", lastWideCharInInquiryRange := ");
+single_value->field_lastWideCharInInquiryRange.log_match(match_value.lastWideCharInInquiryRange(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 GetSupportedWidecharsReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_codeplane.encode_text(text_buf);
+single_value->field_firstWideCharInInquiryRange.encode_text(text_buf);
+single_value->field_lastWideCharInInquiryRange.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.GetSupportedWidecharsReq.");
+}
+}
+
+void GetSupportedWidecharsReq_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_vtfunction.decode_text(text_buf);
+single_value->field_codeplane.decode_text(text_buf);
+single_value->field_firstWideCharInInquiryRange.decode_text(text_buf);
+single_value->field_lastWideCharInInquiryRange.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 GetSupportedWidecharsReq_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 @IsobusVTMessageTypes.GetSupportedWidecharsReq.");
+}
+}
+
+void GetSupportedWidecharsReq_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: {
+    GetSupportedWidecharsReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.GetSupportedWidecharsReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) codeplane().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) firstWideCharInInquiryRange().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) lastWideCharInInquiryRange().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved8().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "codeplane")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          codeplane().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(), "firstWideCharInInquiryRange")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          firstWideCharInInquiryRange().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(), "lastWideCharInInquiryRange")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          lastWideCharInInquiryRange().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.GetSupportedWidecharsReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.GetSupportedWidecharsReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void GetSupportedWidecharsReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetSupportedWidecharsReq");
+single_value->field_codeplane.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetSupportedWidecharsReq");
+single_value->field_firstWideCharInInquiryRange.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetSupportedWidecharsReq");
+single_value->field_lastWideCharInInquiryRange.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetSupportedWidecharsReq");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetSupportedWidecharsReq");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetSupportedWidecharsReq");
+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 : "@IsobusVTMessageTypes.GetSupportedWidecharsReq");
+}
+
+boolean GetSupportedWidecharsReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean GetSupportedWidecharsReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+WideCharRange::WideCharRange()
+{
+}
+
+WideCharRange::WideCharRange(const OCTETSTRING& par_firstWideChar,
+    const OCTETSTRING& par_lastWideChar)
+  :   field_firstWideChar(par_firstWideChar),
+  field_lastWideChar(par_lastWideChar)
+{
+}
+
+WideCharRange::WideCharRange(const WideCharRange& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.WideCharRange.");
+if (other_value.firstWideChar().is_bound()) field_firstWideChar = other_value.firstWideChar();
+else field_firstWideChar.clean_up();
+if (other_value.lastWideChar().is_bound()) field_lastWideChar = other_value.lastWideChar();
+else field_lastWideChar.clean_up();
+}
+
+void WideCharRange::clean_up()
+{
+field_firstWideChar.clean_up();
+field_lastWideChar.clean_up();
+}
+
+const TTCN_Typedescriptor_t* WideCharRange::get_descriptor() const { return &WideCharRange_descr_; }
+WideCharRange& WideCharRange::operator=(const WideCharRange& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.WideCharRange.");
+  if (other_value.firstWideChar().is_bound()) field_firstWideChar = other_value.firstWideChar();
+  else field_firstWideChar.clean_up();
+  if (other_value.lastWideChar().is_bound()) field_lastWideChar = other_value.lastWideChar();
+  else field_lastWideChar.clean_up();
+}
+return *this;
+}
+
+boolean WideCharRange::operator==(const WideCharRange& other_value) const
+{
+return field_firstWideChar==other_value.field_firstWideChar
+  && field_lastWideChar==other_value.field_lastWideChar;
+}
+
+boolean WideCharRange::is_bound() const
+{
+return (field_firstWideChar.is_bound())
+  || (field_lastWideChar.is_bound());
+}
+boolean WideCharRange::is_value() const
+{
+return field_firstWideChar.is_value()
+  && field_lastWideChar.is_value();
+}
+void WideCharRange::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ firstWideChar := ");
+field_firstWideChar.log();
+TTCN_Logger::log_event_str(", lastWideChar := ");
+field_lastWideChar.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void WideCharRange::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 @IsobusVTMessageTypes.WideCharRange 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) firstWideChar().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) lastWideChar().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(), "firstWideChar")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          firstWideChar().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(), "lastWideChar")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          lastWideChar().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 @IsobusVTMessageTypes.WideCharRange: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.WideCharRange");
+  }
+}
+
+void WideCharRange::set_implicit_omit()
+{
+if (firstWideChar().is_bound()) firstWideChar().set_implicit_omit();
+if (lastWideChar().is_bound()) lastWideChar().set_implicit_omit();
+}
+
+void WideCharRange::encode_text(Text_Buf& text_buf) const
+{
+field_firstWideChar.encode_text(text_buf);
+field_lastWideChar.encode_text(text_buf);
+}
+
+void WideCharRange::decode_text(Text_Buf& text_buf)
+{
+field_firstWideChar.decode_text(text_buf);
+field_lastWideChar.decode_text(text_buf);
+}
+
+void WideCharRange::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void WideCharRange::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int WideCharRange::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::OCT2_descr_.raw->forceomit);
+  decoded_field_length = field_firstWideChar.RAW_decode(General__Types::OCT2_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::OCT2_descr_.raw->forceomit);
+  decoded_field_length = field_lastWideChar.RAW_decode(General__Types::OCT2_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 WideCharRange::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::OCT2_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, General__Types::OCT2_descr_.raw);
+  encoded_length += field_firstWideChar.RAW_encode(General__Types::OCT2_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_lastWideChar.RAW_encode(General__Types::OCT2_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct WideCharRange_template::single_value_struct {
+OCTETSTRING_template field_firstWideChar;
+OCTETSTRING_template field_lastWideChar;
+};
+
+void WideCharRange_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_firstWideChar = ANY_VALUE;
+single_value->field_lastWideChar = ANY_VALUE;
+}
+}
+}
+
+void WideCharRange_template::copy_value(const WideCharRange& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.firstWideChar().is_bound()) {
+  single_value->field_firstWideChar = other_value.firstWideChar();
+} else {
+  single_value->field_firstWideChar.clean_up();
+}
+if (other_value.lastWideChar().is_bound()) {
+  single_value->field_lastWideChar = other_value.lastWideChar();
+} else {
+  single_value->field_lastWideChar.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void WideCharRange_template::copy_template(const WideCharRange_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.firstWideChar().get_selection()) {
+single_value->field_firstWideChar = other_value.firstWideChar();
+} else {
+single_value->field_firstWideChar.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.lastWideChar().get_selection()) {
+single_value->field_lastWideChar = other_value.lastWideChar();
+} else {
+single_value->field_lastWideChar.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new WideCharRange_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.WideCharRange.");
+break;
+}
+set_selection(other_value);
+}
+
+WideCharRange_template::WideCharRange_template()
+{
+}
+
+WideCharRange_template::WideCharRange_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+WideCharRange_template::WideCharRange_template(const WideCharRange& other_value)
+{
+copy_value(other_value);
+}
+
+WideCharRange_template::WideCharRange_template(const OPTIONAL<WideCharRange>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const WideCharRange&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.WideCharRange from an unbound optional field.");
+}
+}
+
+WideCharRange_template::WideCharRange_template(const WideCharRange_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+WideCharRange_template::~WideCharRange_template()
+{
+clean_up();
+}
+
+WideCharRange_template& WideCharRange_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+WideCharRange_template& WideCharRange_template::operator=(const WideCharRange& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+WideCharRange_template& WideCharRange_template::operator=(const OPTIONAL<WideCharRange>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const WideCharRange&)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 @IsobusVTMessageTypes.WideCharRange.");
+}
+return *this;
+}
+
+WideCharRange_template& WideCharRange_template::operator=(const WideCharRange_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean WideCharRange_template::match(const WideCharRange& 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.firstWideChar().is_bound()) return FALSE;
+if(!single_value->field_firstWideChar.match(other_value.firstWideChar(), legacy))return FALSE;
+if(!other_value.lastWideChar().is_bound()) return FALSE;
+if(!single_value->field_lastWideChar.match(other_value.lastWideChar(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.WideCharRange.");
+}
+return FALSE;
+}
+
+boolean WideCharRange_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_firstWideChar.is_bound()
+
+ ||single_value->field_lastWideChar.is_bound()
+;
+}
+
+boolean WideCharRange_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_firstWideChar.is_value()
+ &&single_value->field_lastWideChar.is_value();
+}
+
+void WideCharRange_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+WideCharRange WideCharRange_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 @IsobusVTMessageTypes.WideCharRange.");
+WideCharRange ret_val;
+if (single_value->field_firstWideChar.is_bound()) {
+ret_val.firstWideChar() = single_value->field_firstWideChar.valueof();
+}
+if (single_value->field_lastWideChar.is_bound()) {
+ret_val.lastWideChar() = single_value->field_lastWideChar.valueof();
+}
+return ret_val;
+}
+
+void WideCharRange_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.WideCharRange.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new WideCharRange_template[list_length];
+}
+
+WideCharRange_template& WideCharRange_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.WideCharRange.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.WideCharRange.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& WideCharRange_template::firstWideChar()
+{
+set_specific();
+return single_value->field_firstWideChar;
+}
+
+const OCTETSTRING_template& WideCharRange_template::firstWideChar() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field firstWideChar of a non-specific template of type @IsobusVTMessageTypes.WideCharRange.");
+return single_value->field_firstWideChar;
+}
+
+OCTETSTRING_template& WideCharRange_template::lastWideChar()
+{
+set_specific();
+return single_value->field_lastWideChar;
+}
+
+const OCTETSTRING_template& WideCharRange_template::lastWideChar() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field lastWideChar of a non-specific template of type @IsobusVTMessageTypes.WideCharRange.");
+return single_value->field_lastWideChar;
+}
+
+int WideCharRange_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.WideCharRange 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 @IsobusVTMessageTypes.WideCharRange 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 @IsobusVTMessageTypes.WideCharRange containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.WideCharRange containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.WideCharRange containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.WideCharRange containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.WideCharRange.");
+  }
+  return 0;
+}
+
+void WideCharRange_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ firstWideChar := ");
+single_value->field_firstWideChar.log();
+TTCN_Logger::log_event_str(", lastWideChar := ");
+single_value->field_lastWideChar.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void WideCharRange_template::log_match(const WideCharRange& 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_firstWideChar.match(match_value.firstWideChar(), legacy)){
+TTCN_Logger::log_logmatch_info(".firstWideChar");
+single_value->field_firstWideChar.log_match(match_value.firstWideChar(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_lastWideChar.match(match_value.lastWideChar(), legacy)){
+TTCN_Logger::log_logmatch_info(".lastWideChar");
+single_value->field_lastWideChar.log_match(match_value.lastWideChar(), 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("{ firstWideChar := ");
+single_value->field_firstWideChar.log_match(match_value.firstWideChar(), legacy);
+TTCN_Logger::log_event_str(", lastWideChar := ");
+single_value->field_lastWideChar.log_match(match_value.lastWideChar(), 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 WideCharRange_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_firstWideChar.encode_text(text_buf);
+single_value->field_lastWideChar.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 @IsobusVTMessageTypes.WideCharRange.");
+}
+}
+
+void WideCharRange_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_firstWideChar.decode_text(text_buf);
+single_value->field_lastWideChar.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 WideCharRange_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 @IsobusVTMessageTypes.WideCharRange.");
+}
+}
+
+void WideCharRange_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: {
+    WideCharRange_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.WideCharRange 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) firstWideChar().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) lastWideChar().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(), "firstWideChar")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          firstWideChar().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(), "lastWideChar")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          lastWideChar().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 @IsobusVTMessageTypes.WideCharRange: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.WideCharRange");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void WideCharRange_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_firstWideChar.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.WideCharRange");
+single_value->field_lastWideChar.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.WideCharRange");
+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 : "@IsobusVTMessageTypes.WideCharRange");
+}
+
+boolean WideCharRange_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean WideCharRange_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 WideCharRange WideCharRangeArray::UNBOUND_ELEM;
+WideCharRangeArray::WideCharRangeArray()
+{
+val_ptr = NULL;
+}
+
+WideCharRangeArray::WideCharRangeArray(null_type)
+{
+val_ptr = new recordof_setof_struct;
+val_ptr->ref_count = 1;
+val_ptr->n_elements = 0;
+val_ptr->value_elements = NULL;
+}
+
+WideCharRangeArray::WideCharRangeArray(const WideCharRangeArray& other_value)
+{
+if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.WideCharRangeArray.");
+val_ptr = other_value.val_ptr;
+val_ptr->ref_count++;
+}
+
+WideCharRangeArray::~WideCharRangeArray()
+{
+clean_up();
+if (val_ptr != NULL) val_ptr = NULL;
+}
+
+void WideCharRangeArray::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.");
+}
+}
+
+WideCharRangeArray& WideCharRangeArray::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;
+}
+
+WideCharRangeArray& WideCharRangeArray::operator=(const WideCharRangeArray& other_value)
+{
+if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @IsobusVTMessageTypes.WideCharRangeArray.");
+if (this != &other_value) {
+clean_up();
+val_ptr = other_value.val_ptr;
+val_ptr->ref_count++;
+}
+return *this;
+}
+
+boolean WideCharRangeArray::operator==(null_type) const
+{
+if (val_ptr == NULL)
+TTCN_error("The left operand of comparison is an unbound value of type @IsobusVTMessageTypes.WideCharRangeArray.");
+return val_ptr->n_elements == 0 ;
+}
+
+boolean WideCharRangeArray::operator==(const WideCharRangeArray& other_value) const
+{
+if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @IsobusVTMessageTypes.WideCharRangeArray.");
+if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @IsobusVTMessageTypes.WideCharRangeArray.");
+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;
+}
+
+WideCharRange& WideCharRangeArray::operator[](int index_value)
+{
+if (index_value < 0) TTCN_error("Accessing an element of type @IsobusVTMessageTypes.WideCharRangeArray 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 = (WideCharRange**)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 WideCharRange(*(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 WideCharRange;
+}
+return *val_ptr->value_elements[index_value];
+}
+
+WideCharRange& WideCharRangeArray::operator[](const INTEGER& index_value)
+{
+index_value.must_bound("Using an unbound integer value for indexing a value of type @IsobusVTMessageTypes.WideCharRangeArray.");
+return (*this)[(int)index_value];
+}
+
+const WideCharRange& WideCharRangeArray::operator[](int index_value) const
+{
+if (val_ptr == NULL)
+TTCN_error("Accessing an element in an unbound value of type @IsobusVTMessageTypes.WideCharRangeArray.");
+if (index_value < 0) TTCN_error("Accessing an element of type @IsobusVTMessageTypes.WideCharRangeArray using a negative index: %d.", index_value);
+if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @IsobusVTMessageTypes.WideCharRangeArray: 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 WideCharRange& WideCharRangeArray::operator[](const INTEGER& index_value) const
+{
+index_value.must_bound("Using an unbound integer value for indexing a value of type @IsobusVTMessageTypes.WideCharRangeArray.");
+return (*this)[(int)index_value];
+}
+
+WideCharRangeArray WideCharRangeArray::operator<<=(int rotate_count) const
+{
+return *this >>= (-rotate_count);
+}
+
+WideCharRangeArray WideCharRangeArray::operator<<=(const INTEGER& rotate_count) const
+{
+rotate_count.must_bound("Unbound integer operand of rotate left operator.");
+return *this >>= (int)(-rotate_count);
+}
+
+WideCharRangeArray WideCharRangeArray::operator>>=(const INTEGER& rotate_count) const
+{
+rotate_count.must_bound("Unbound integer operand of rotate right operator.");
+return *this >>= (int)rotate_count;
+}
+
+WideCharRangeArray WideCharRangeArray::operator>>=(int rotate_count) const
+{
+if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @IsobusVTMessageTypes.WideCharRangeArray.");
+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;
+WideCharRangeArray 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 WideCharRange(*val_ptr->value_elements[i]);
+}
+}
+return ret_val;
+}
+
+WideCharRangeArray WideCharRangeArray::operator+(const WideCharRangeArray& other_value) const
+{
+if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @IsobusVTMessageTypes.WideCharRangeArray concatenation.");
+if (val_ptr->n_elements == 0) return other_value;
+if (other_value.val_ptr->n_elements == 0) return *this;
+WideCharRangeArray 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 WideCharRange(*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 WideCharRange(*other_value.val_ptr->value_elements[i]);
+}
+}
+return ret_val;
+}
+
+WideCharRangeArray WideCharRangeArray::substr(int index, int returncount) const
+{
+if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @IsobusVTMessageTypes.WideCharRangeArray.");
+check_substr_arguments(val_ptr->n_elements, index, returncount, "@IsobusVTMessageTypes.WideCharRangeArray","element");
+WideCharRangeArray 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 WideCharRange(*val_ptr->value_elements[i+index]);
+}
+}
+return ret_val;
+}
+
+WideCharRangeArray WideCharRangeArray::replace(int index, int len, const WideCharRangeArray& repl) const
+{
+if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @IsobusVTMessageTypes.WideCharRangeArray.");
+if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @IsobusVTMessageTypes.WideCharRangeArray.");
+check_replace_arguments(val_ptr->n_elements, index, len, "@IsobusVTMessageTypes.WideCharRangeArray","element");
+WideCharRangeArray 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 WideCharRange(*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 WideCharRange(*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 WideCharRange(*val_ptr->value_elements[index+i+len]);
+}
+}
+return ret_val;
+}
+
+WideCharRangeArray WideCharRangeArray::replace(int index, int len, const WideCharRangeArray_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 WideCharRangeArray::set_size(int new_size)
+{
+if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @IsobusVTMessageTypes.WideCharRangeArray.");
+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 = (WideCharRange**)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 WideCharRange(*(val_ptr->value_elements[elem_count]));
+}
+}
+clean_up();
+val_ptr = new_val_ptr;
+}
+if (new_size > val_ptr->n_elements) {
+val_ptr->value_elements = (WideCharRange**)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 @IsobusVTMessageTypes.WideCharRangeArray: %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 = (WideCharRange**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size);
+val_ptr->n_elements = new_size;
+}
+}
+
+boolean WideCharRangeArray::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 WideCharRangeArray::size_of() const
+{
+if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @IsobusVTMessageTypes.WideCharRangeArray.");
+return val_ptr->n_elements;
+}
+
+int WideCharRangeArray::lengthof() const
+{
+if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @IsobusVTMessageTypes.WideCharRangeArray.");
+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 WideCharRangeArray::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 WideCharRangeArray::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", "@IsobusVTMessageTypes.WideCharRangeArray");
+    }
+    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", "@IsobusVTMessageTypes.WideCharRangeArray");
+    }
+    break;
+  default:
+    TTCN_error("Internal error: Unknown operation type.");
+  }
+}
+
+void WideCharRangeArray::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 WideCharRangeArray::encode_text(Text_Buf& text_buf) const
+{
+if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @IsobusVTMessageTypes.WideCharRangeArray.");
+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 WideCharRangeArray::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 @IsobusVTMessageTypes.WideCharRangeArray.");
+val_ptr->value_elements = (WideCharRange**)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 WideCharRange;
+val_ptr->value_elements[elem_count]->decode_text(text_buf);
+}
+}
+
+void WideCharRangeArray::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void WideCharRangeArray::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int WideCharRangeArray::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;
+    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) 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 WideCharRangeArray::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 WideCharRangeArray_template::copy_value(const WideCharRangeArray& other_value)
+{
+if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @IsobusVTMessageTypes.WideCharRangeArray with an unbound value.");
+single_value.n_elements = other_value.size_of();
+single_value.value_elements = (WideCharRange_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 WideCharRange_template(other_value[elem_count]);
+} else {
+single_value.value_elements[elem_count] = new WideCharRange_template;
+}
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void WideCharRangeArray_template::copy_template(const WideCharRangeArray_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 = (WideCharRange_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 WideCharRange_template(*other_value.single_value.value_elements[elem_count]);
+} else {
+single_value.value_elements[elem_count] = new WideCharRange_template;
+}
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new WideCharRangeArray_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.WideCharRangeArray.");
+break;
+}
+set_selection(other_value);
+}
+
+boolean WideCharRangeArray_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 WideCharRangeArray_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const WideCharRangeArray*)value_ptr)[value_index], legacy);
+else return ((const WideCharRangeArray_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit();
+}
+
+WideCharRangeArray_template::WideCharRangeArray_template()
+{
+}
+
+WideCharRangeArray_template::WideCharRangeArray_template(template_sel other_value)
+ : Record_Of_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+WideCharRangeArray_template::WideCharRangeArray_template(null_type)
+ : Record_Of_Template(SPECIFIC_VALUE)
+{
+single_value.n_elements = 0;
+single_value.value_elements = NULL;
+}
+
+WideCharRangeArray_template::WideCharRangeArray_template(const WideCharRangeArray& other_value)
+{
+copy_value(other_value);
+}
+
+WideCharRangeArray_template::WideCharRangeArray_template(const OPTIONAL<WideCharRangeArray>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const WideCharRangeArray&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.WideCharRangeArray from an unbound optional field.");
+}
+}
+
+WideCharRangeArray_template::WideCharRangeArray_template(const WideCharRangeArray_template& other_value)
+ : Record_Of_Template()
+{
+copy_template(other_value);
+}
+
+WideCharRangeArray_template::~WideCharRangeArray_template()
+{
+clean_up();
+}
+
+void WideCharRangeArray_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:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+WideCharRangeArray_template& WideCharRangeArray_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+WideCharRangeArray_template& WideCharRangeArray_template::operator=(null_type)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value.n_elements = 0;
+single_value.value_elements = NULL;
+return *this;
+}
+
+WideCharRangeArray_template& WideCharRangeArray_template::operator=(const WideCharRangeArray& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+WideCharRangeArray_template& WideCharRangeArray_template::operator=(const OPTIONAL<WideCharRangeArray>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const WideCharRangeArray&)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 @IsobusVTMessageTypes.WideCharRangeArray.");
+}
+return *this;
+}
+
+WideCharRangeArray_template& WideCharRangeArray_template::operator=(const WideCharRangeArray_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+WideCharRange_template& WideCharRangeArray_template::operator[](int index_value)
+{
+if (index_value < 0) TTCN_error("Accessing an element of a template for type @IsobusVTMessageTypes.WideCharRangeArray 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 @IsobusVTMessageTypes.WideCharRangeArray.");
+    break;
+}
+return *single_value.value_elements[index_value];
+}
+
+WideCharRange_template& WideCharRangeArray_template::operator[](const INTEGER& index_value)
+{
+index_value.must_bound("Using an unbound integer value for indexing a template of type @IsobusVTMessageTypes.WideCharRangeArray.");
+return (*this)[(int)index_value];
+}
+
+const WideCharRange_template& WideCharRangeArray_template::operator[](int index_value) const
+{
+if (index_value < 0) TTCN_error("Accessing an element of a template for type @IsobusVTMessageTypes.WideCharRangeArray using a negative index: %d.", index_value);
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @IsobusVTMessageTypes.WideCharRangeArray.");
+if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @IsobusVTMessageTypes.WideCharRangeArray: 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 WideCharRange_template& WideCharRangeArray_template::operator[](const INTEGER& index_value) const
+{
+index_value.must_bound("Using an unbound integer value for indexing a template of type @IsobusVTMessageTypes.WideCharRangeArray.");
+return (*this)[(int)index_value];
+}
+
+void WideCharRangeArray_template::set_size(int new_size)
+{
+if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @IsobusVTMessageTypes.WideCharRangeArray.");
+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 = (WideCharRange_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 WideCharRange_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 WideCharRange_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 = (WideCharRange_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size);
+single_value.n_elements = new_size;
+}
+}
+
+int WideCharRangeArray_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 WideCharRangeArray_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 @IsobusVTMessageTypes.WideCharRangeArray 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 @IsobusVTMessageTypes.WideCharRangeArray 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 @IsobusVTMessageTypes.WideCharRangeArray 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 @IsobusVTMessageTypes.WideCharRangeArray 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 @IsobusVTMessageTypes.WideCharRangeArray 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 @IsobusVTMessageTypes.WideCharRangeArray containing complemented list.", op_name);
+default:
+  TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.WideCharRangeArray.", op_name);
+}
+return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @IsobusVTMessageTypes.WideCharRangeArray");
+}
+
+boolean WideCharRangeArray_template::match(const WideCharRangeArray& 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;
+default:
+TTCN_error("Matching with an uninitialized/unsupported template of type @IsobusVTMessageTypes.WideCharRangeArray.");
+}
+return FALSE;
+}
+
+boolean WideCharRangeArray_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;
+}
+
+WideCharRangeArray WideCharRangeArray_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 @IsobusVTMessageTypes.WideCharRangeArray.");
+WideCharRangeArray 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;
+}
+
+WideCharRangeArray WideCharRangeArray_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);
+}
+
+WideCharRangeArray WideCharRangeArray_template::replace(int index, int len, const WideCharRangeArray_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());
+}
+
+WideCharRangeArray WideCharRangeArray_template::replace(int index, int len, const WideCharRangeArray& 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 WideCharRangeArray_template::set_type(template_sel template_type, unsigned int list_length)
+{
+clean_up();
+switch (template_type) {
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = list_length;
+value_list.list_value = new WideCharRangeArray_template[list_length];
+break;
+default:
+TTCN_error("Internal error: Setting an invalid type for a template of type @IsobusVTMessageTypes.WideCharRangeArray.");
+}
+set_selection(template_type);
+}
+
+WideCharRangeArray_template& WideCharRangeArray_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of type @IsobusVTMessageTypes.WideCharRangeArray.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @IsobusVTMessageTypes.WideCharRangeArray.");
+return value_list.list_value[list_index];
+}
+
+void WideCharRangeArray_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 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;
+default:
+log_generic();
+}
+log_restricted();
+log_ifpresent();
+}
+
+void WideCharRangeArray_template::log_match(const WideCharRangeArray& 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 WideCharRangeArray_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 @IsobusVTMessageTypes.WideCharRangeArray.");
+}
+}
+
+void WideCharRangeArray_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 @IsobusVTMessageTypes.WideCharRangeArray.");
+single_value.value_elements = (WideCharRange_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 WideCharRange_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 WideCharRangeArray_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 @IsobusVTMessageTypes.WideCharRangeArray.");
+}
+}
+
+boolean WideCharRangeArray_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean WideCharRangeArray_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 WideCharRangeArray_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: {
+    WideCharRangeArray_template temp;
+    temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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;
+  default:
+    param.type_error("record of template", "@IsobusVTMessageTypes.WideCharRangeArray");
+  }
+  is_ifpresent = param.get_ifpresent();
+  set_length_range(param);
+}
+
+void WideCharRangeArray_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 : "@IsobusVTMessageTypes.WideCharRangeArray");
+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 : "@IsobusVTMessageTypes.WideCharRangeArray");
+}
+
+boolean WideCharRangeArray_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);
+}
+}
+GetSupportedWidecharsRes::GetSupportedWidecharsRes()
+{
+}
+
+GetSupportedWidecharsRes::GetSupportedWidecharsRes(const INTEGER& par_vtfunction,
+    const e__Codeplane& par_codeplane,
+    const OCTETSTRING& par_firstWideCharInInquiryRange,
+    const OCTETSTRING& par_lastWideCharInInquiryRange,
+    const INTEGER& par_numberOfRanges,
+    const WideCharRangeArray& par_wideCharRangeArray)
+  :   field_vtfunction(par_vtfunction),
+  field_codeplane(par_codeplane),
+  field_firstWideCharInInquiryRange(par_firstWideCharInInquiryRange),
+  field_lastWideCharInInquiryRange(par_lastWideCharInInquiryRange),
+  field_numberOfRanges(par_numberOfRanges),
+  field_wideCharRangeArray(par_wideCharRangeArray)
+{
+}
+
+GetSupportedWidecharsRes::GetSupportedWidecharsRes(const GetSupportedWidecharsRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.GetSupportedWidecharsRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.codeplane().is_bound()) field_codeplane = other_value.codeplane();
+else field_codeplane.clean_up();
+if (other_value.firstWideCharInInquiryRange().is_bound()) field_firstWideCharInInquiryRange = other_value.firstWideCharInInquiryRange();
+else field_firstWideCharInInquiryRange.clean_up();
+if (other_value.lastWideCharInInquiryRange().is_bound()) field_lastWideCharInInquiryRange = other_value.lastWideCharInInquiryRange();
+else field_lastWideCharInInquiryRange.clean_up();
+if (other_value.numberOfRanges().is_bound()) field_numberOfRanges = other_value.numberOfRanges();
+else field_numberOfRanges.clean_up();
+if (other_value.wideCharRangeArray().is_bound()) field_wideCharRangeArray = other_value.wideCharRangeArray();
+else field_wideCharRangeArray.clean_up();
+}
+
+void GetSupportedWidecharsRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_codeplane.clean_up();
+field_firstWideCharInInquiryRange.clean_up();
+field_lastWideCharInInquiryRange.clean_up();
+field_numberOfRanges.clean_up();
+field_wideCharRangeArray.clean_up();
+}
+
+const TTCN_Typedescriptor_t* GetSupportedWidecharsRes::get_descriptor() const { return &GetSupportedWidecharsRes_descr_; }
+GetSupportedWidecharsRes& GetSupportedWidecharsRes::operator=(const GetSupportedWidecharsRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.GetSupportedWidecharsRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.codeplane().is_bound()) field_codeplane = other_value.codeplane();
+  else field_codeplane.clean_up();
+  if (other_value.firstWideCharInInquiryRange().is_bound()) field_firstWideCharInInquiryRange = other_value.firstWideCharInInquiryRange();
+  else field_firstWideCharInInquiryRange.clean_up();
+  if (other_value.lastWideCharInInquiryRange().is_bound()) field_lastWideCharInInquiryRange = other_value.lastWideCharInInquiryRange();
+  else field_lastWideCharInInquiryRange.clean_up();
+  if (other_value.numberOfRanges().is_bound()) field_numberOfRanges = other_value.numberOfRanges();
+  else field_numberOfRanges.clean_up();
+  if (other_value.wideCharRangeArray().is_bound()) field_wideCharRangeArray = other_value.wideCharRangeArray();
+  else field_wideCharRangeArray.clean_up();
+}
+return *this;
+}
+
+boolean GetSupportedWidecharsRes::operator==(const GetSupportedWidecharsRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_codeplane==other_value.field_codeplane
+  && field_firstWideCharInInquiryRange==other_value.field_firstWideCharInInquiryRange
+  && field_lastWideCharInInquiryRange==other_value.field_lastWideCharInInquiryRange
+  && field_numberOfRanges==other_value.field_numberOfRanges
+  && field_wideCharRangeArray==other_value.field_wideCharRangeArray;
+}
+
+boolean GetSupportedWidecharsRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_codeplane.is_bound())
+  || (field_firstWideCharInInquiryRange.is_bound())
+  || (field_lastWideCharInInquiryRange.is_bound())
+  || (field_numberOfRanges.is_bound())
+  || (field_wideCharRangeArray.is_bound());
+}
+boolean GetSupportedWidecharsRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_codeplane.is_value()
+  && field_firstWideCharInInquiryRange.is_value()
+  && field_lastWideCharInInquiryRange.is_value()
+  && field_numberOfRanges.is_value()
+  && field_wideCharRangeArray.is_value();
+}
+void GetSupportedWidecharsRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", codeplane := ");
+field_codeplane.log();
+TTCN_Logger::log_event_str(", firstWideCharInInquiryRange := ");
+field_firstWideCharInInquiryRange.log();
+TTCN_Logger::log_event_str(", lastWideCharInInquiryRange := ");
+field_lastWideCharInInquiryRange.log();
+TTCN_Logger::log_event_str(", numberOfRanges := ");
+field_numberOfRanges.log();
+TTCN_Logger::log_event_str(", wideCharRangeArray := ");
+field_wideCharRangeArray.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void GetSupportedWidecharsRes::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 @IsobusVTMessageTypes.GetSupportedWidecharsRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) codeplane().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) firstWideCharInInquiryRange().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) lastWideCharInInquiryRange().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) numberOfRanges().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) wideCharRangeArray().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "codeplane")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          codeplane().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(), "firstWideCharInInquiryRange")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          firstWideCharInInquiryRange().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(), "lastWideCharInInquiryRange")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          lastWideCharInInquiryRange().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(), "numberOfRanges")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          numberOfRanges().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(), "wideCharRangeArray")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          wideCharRangeArray().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 @IsobusVTMessageTypes.GetSupportedWidecharsRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.GetSupportedWidecharsRes");
+  }
+}
+
+void GetSupportedWidecharsRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (codeplane().is_bound()) codeplane().set_implicit_omit();
+if (firstWideCharInInquiryRange().is_bound()) firstWideCharInInquiryRange().set_implicit_omit();
+if (lastWideCharInInquiryRange().is_bound()) lastWideCharInInquiryRange().set_implicit_omit();
+if (numberOfRanges().is_bound()) numberOfRanges().set_implicit_omit();
+if (wideCharRangeArray().is_bound()) wideCharRangeArray().set_implicit_omit();
+}
+
+void GetSupportedWidecharsRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_codeplane.encode_text(text_buf);
+field_firstWideCharInInquiryRange.encode_text(text_buf);
+field_lastWideCharInInquiryRange.encode_text(text_buf);
+field_numberOfRanges.encode_text(text_buf);
+field_wideCharRangeArray.encode_text(text_buf);
+}
+
+void GetSupportedWidecharsRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_codeplane.decode_text(text_buf);
+field_firstWideCharInInquiryRange.decode_text(text_buf);
+field_lastWideCharInInquiryRange.decode_text(text_buf);
+field_numberOfRanges.decode_text(text_buf);
+field_wideCharRangeArray.decode_text(text_buf);
+}
+
+void GetSupportedWidecharsRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void GetSupportedWidecharsRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int GetSupportedWidecharsRes::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;
+  int value_of_length_field4 = 0;
+  RAW_Force_Omit field_0_force_omit(0, force_omit, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, e__Codeplane_descr_.raw->forceomit);
+  decoded_field_length = field_codeplane.RAW_decode(e__Codeplane_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::OCT2_descr_.raw->forceomit);
+  decoded_field_length = field_firstWideCharInInquiryRange.RAW_decode(General__Types::OCT2_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::OCT2_descr_.raw->forceomit);
+  decoded_field_length = field_lastWideCharInInquiryRange.RAW_decode(General__Types::OCT2_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, GetSupportedWidecharsRes_numberOfRanges_descr_.raw->forceomit);
+  decoded_field_length = field_numberOfRanges.RAW_decode(GetSupportedWidecharsRes_numberOfRanges_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());
+  value_of_length_field4+=field_numberOfRanges.get_long_long_val()*1;
+  RAW_Force_Omit field_5_force_omit(5, force_omit, WideCharRangeArray_descr_.raw->forceomit);
+  decoded_field_length = field_wideCharRangeArray.RAW_decode(WideCharRangeArray_descr_, p_buf, limit, local_top_order, no_err, value_of_length_field4, 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_field4 -= decoded_field_length;
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int GetSupportedWidecharsRes::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, e__Codeplane_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, General__Types::OCT2_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, General__Types::OCT2_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, GetSupportedWidecharsRes_numberOfRanges_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, WideCharRangeArray_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_codeplane.RAW_encode(e__Codeplane_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_firstWideCharInInquiryRange.RAW_encode(General__Types::OCT2_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_lastWideCharInInquiryRange.RAW_encode(General__Types::OCT2_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += 8;
+  myleaf.body.node.nodes[4]->calc = CALC_LENGTH;
+  myleaf.body.node.nodes[4]->coding_descr = &GetSupportedWidecharsRes_numberOfRanges_descr_;
+  myleaf.body.node.nodes[4]->calcof.lengthto.num_of_fields = 1;
+  myleaf.body.node.nodes[4]->calcof.lengthto.unit = -1;
+  myleaf.body.node.nodes[4]->calcof.lengthto.offset = 0;
+  myleaf.body.node.nodes[4]->calcof.lengthto.fields = init_lengthto_fields_list(1);
+  myleaf.body.node.nodes[4]->length = 8;
+  myleaf.body.node.nodes[4]->calcof.lengthto.fields[0].level = myleaf.body.node.nodes[5]->curr_pos.level;
+  myleaf.body.node.nodes[4]->calcof.lengthto.fields[0].pos = myleaf.body.node.nodes[5]->curr_pos.pos;
+  encoded_length += field_wideCharRangeArray.RAW_encode(WideCharRangeArray_descr_, *myleaf.body.node.nodes[5]);
+  return myleaf.length = encoded_length;
+}
+
+struct GetSupportedWidecharsRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+e__Codeplane_template field_codeplane;
+OCTETSTRING_template field_firstWideCharInInquiryRange;
+OCTETSTRING_template field_lastWideCharInInquiryRange;
+INTEGER_template field_numberOfRanges;
+WideCharRangeArray_template field_wideCharRangeArray;
+};
+
+void GetSupportedWidecharsRes_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_vtfunction = ANY_VALUE;
+single_value->field_codeplane = ANY_VALUE;
+single_value->field_firstWideCharInInquiryRange = ANY_VALUE;
+single_value->field_lastWideCharInInquiryRange = ANY_VALUE;
+single_value->field_numberOfRanges = ANY_VALUE;
+single_value->field_wideCharRangeArray = ANY_VALUE;
+}
+}
+}
+
+void GetSupportedWidecharsRes_template::copy_value(const GetSupportedWidecharsRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.codeplane().is_bound()) {
+  single_value->field_codeplane = other_value.codeplane();
+} else {
+  single_value->field_codeplane.clean_up();
+}
+if (other_value.firstWideCharInInquiryRange().is_bound()) {
+  single_value->field_firstWideCharInInquiryRange = other_value.firstWideCharInInquiryRange();
+} else {
+  single_value->field_firstWideCharInInquiryRange.clean_up();
+}
+if (other_value.lastWideCharInInquiryRange().is_bound()) {
+  single_value->field_lastWideCharInInquiryRange = other_value.lastWideCharInInquiryRange();
+} else {
+  single_value->field_lastWideCharInInquiryRange.clean_up();
+}
+if (other_value.numberOfRanges().is_bound()) {
+  single_value->field_numberOfRanges = other_value.numberOfRanges();
+} else {
+  single_value->field_numberOfRanges.clean_up();
+}
+if (other_value.wideCharRangeArray().is_bound()) {
+  single_value->field_wideCharRangeArray = other_value.wideCharRangeArray();
+} else {
+  single_value->field_wideCharRangeArray.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void GetSupportedWidecharsRes_template::copy_template(const GetSupportedWidecharsRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.codeplane().get_selection()) {
+single_value->field_codeplane = other_value.codeplane();
+} else {
+single_value->field_codeplane.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.firstWideCharInInquiryRange().get_selection()) {
+single_value->field_firstWideCharInInquiryRange = other_value.firstWideCharInInquiryRange();
+} else {
+single_value->field_firstWideCharInInquiryRange.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.lastWideCharInInquiryRange().get_selection()) {
+single_value->field_lastWideCharInInquiryRange = other_value.lastWideCharInInquiryRange();
+} else {
+single_value->field_lastWideCharInInquiryRange.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.numberOfRanges().get_selection()) {
+single_value->field_numberOfRanges = other_value.numberOfRanges();
+} else {
+single_value->field_numberOfRanges.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.wideCharRangeArray().get_selection()) {
+single_value->field_wideCharRangeArray = other_value.wideCharRangeArray();
+} else {
+single_value->field_wideCharRangeArray.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new GetSupportedWidecharsRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetSupportedWidecharsRes.");
+break;
+}
+set_selection(other_value);
+}
+
+GetSupportedWidecharsRes_template::GetSupportedWidecharsRes_template()
+{
+}
+
+GetSupportedWidecharsRes_template::GetSupportedWidecharsRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+GetSupportedWidecharsRes_template::GetSupportedWidecharsRes_template(const GetSupportedWidecharsRes& other_value)
+{
+copy_value(other_value);
+}
+
+GetSupportedWidecharsRes_template::GetSupportedWidecharsRes_template(const OPTIONAL<GetSupportedWidecharsRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const GetSupportedWidecharsRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.GetSupportedWidecharsRes from an unbound optional field.");
+}
+}
+
+GetSupportedWidecharsRes_template::GetSupportedWidecharsRes_template(const GetSupportedWidecharsRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+GetSupportedWidecharsRes_template::~GetSupportedWidecharsRes_template()
+{
+clean_up();
+}
+
+GetSupportedWidecharsRes_template& GetSupportedWidecharsRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+GetSupportedWidecharsRes_template& GetSupportedWidecharsRes_template::operator=(const GetSupportedWidecharsRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+GetSupportedWidecharsRes_template& GetSupportedWidecharsRes_template::operator=(const OPTIONAL<GetSupportedWidecharsRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const GetSupportedWidecharsRes&)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 @IsobusVTMessageTypes.GetSupportedWidecharsRes.");
+}
+return *this;
+}
+
+GetSupportedWidecharsRes_template& GetSupportedWidecharsRes_template::operator=(const GetSupportedWidecharsRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean GetSupportedWidecharsRes_template::match(const GetSupportedWidecharsRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.codeplane().is_bound()) return FALSE;
+if(!single_value->field_codeplane.match(other_value.codeplane(), legacy))return FALSE;
+if(!other_value.firstWideCharInInquiryRange().is_bound()) return FALSE;
+if(!single_value->field_firstWideCharInInquiryRange.match(other_value.firstWideCharInInquiryRange(), legacy))return FALSE;
+if(!other_value.lastWideCharInInquiryRange().is_bound()) return FALSE;
+if(!single_value->field_lastWideCharInInquiryRange.match(other_value.lastWideCharInInquiryRange(), legacy))return FALSE;
+if(!other_value.numberOfRanges().is_bound()) return FALSE;
+if(!single_value->field_numberOfRanges.match(other_value.numberOfRanges(), legacy))return FALSE;
+if(!other_value.wideCharRangeArray().is_bound()) return FALSE;
+if(!single_value->field_wideCharRangeArray.match(other_value.wideCharRangeArray(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetSupportedWidecharsRes.");
+}
+return FALSE;
+}
+
+boolean GetSupportedWidecharsRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_codeplane.is_bound()
+
+ ||single_value->field_firstWideCharInInquiryRange.is_bound()
+
+ ||single_value->field_lastWideCharInInquiryRange.is_bound()
+
+ ||single_value->field_numberOfRanges.is_bound()
+
+ ||single_value->field_wideCharRangeArray.is_bound()
+;
+}
+
+boolean GetSupportedWidecharsRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_codeplane.is_value()
+ &&single_value->field_firstWideCharInInquiryRange.is_value()
+ &&single_value->field_lastWideCharInInquiryRange.is_value()
+ &&single_value->field_numberOfRanges.is_value()
+ &&single_value->field_wideCharRangeArray.is_value();
+}
+
+void GetSupportedWidecharsRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+GetSupportedWidecharsRes GetSupportedWidecharsRes_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 @IsobusVTMessageTypes.GetSupportedWidecharsRes.");
+GetSupportedWidecharsRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_codeplane.is_bound()) {
+ret_val.codeplane() = single_value->field_codeplane.valueof();
+}
+if (single_value->field_firstWideCharInInquiryRange.is_bound()) {
+ret_val.firstWideCharInInquiryRange() = single_value->field_firstWideCharInInquiryRange.valueof();
+}
+if (single_value->field_lastWideCharInInquiryRange.is_bound()) {
+ret_val.lastWideCharInInquiryRange() = single_value->field_lastWideCharInInquiryRange.valueof();
+}
+if (single_value->field_numberOfRanges.is_bound()) {
+ret_val.numberOfRanges() = single_value->field_numberOfRanges.valueof();
+}
+if (single_value->field_wideCharRangeArray.is_bound()) {
+ret_val.wideCharRangeArray() = single_value->field_wideCharRangeArray.valueof();
+}
+return ret_val;
+}
+
+void GetSupportedWidecharsRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.GetSupportedWidecharsRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new GetSupportedWidecharsRes_template[list_length];
+}
+
+GetSupportedWidecharsRes_template& GetSupportedWidecharsRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.GetSupportedWidecharsRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.GetSupportedWidecharsRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& GetSupportedWidecharsRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& GetSupportedWidecharsRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.GetSupportedWidecharsRes.");
+return single_value->field_vtfunction;
+}
+
+e__Codeplane_template& GetSupportedWidecharsRes_template::codeplane()
+{
+set_specific();
+return single_value->field_codeplane;
+}
+
+const e__Codeplane_template& GetSupportedWidecharsRes_template::codeplane() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field codeplane of a non-specific template of type @IsobusVTMessageTypes.GetSupportedWidecharsRes.");
+return single_value->field_codeplane;
+}
+
+OCTETSTRING_template& GetSupportedWidecharsRes_template::firstWideCharInInquiryRange()
+{
+set_specific();
+return single_value->field_firstWideCharInInquiryRange;
+}
+
+const OCTETSTRING_template& GetSupportedWidecharsRes_template::firstWideCharInInquiryRange() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field firstWideCharInInquiryRange of a non-specific template of type @IsobusVTMessageTypes.GetSupportedWidecharsRes.");
+return single_value->field_firstWideCharInInquiryRange;
+}
+
+OCTETSTRING_template& GetSupportedWidecharsRes_template::lastWideCharInInquiryRange()
+{
+set_specific();
+return single_value->field_lastWideCharInInquiryRange;
+}
+
+const OCTETSTRING_template& GetSupportedWidecharsRes_template::lastWideCharInInquiryRange() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field lastWideCharInInquiryRange of a non-specific template of type @IsobusVTMessageTypes.GetSupportedWidecharsRes.");
+return single_value->field_lastWideCharInInquiryRange;
+}
+
+INTEGER_template& GetSupportedWidecharsRes_template::numberOfRanges()
+{
+set_specific();
+return single_value->field_numberOfRanges;
+}
+
+const INTEGER_template& GetSupportedWidecharsRes_template::numberOfRanges() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field numberOfRanges of a non-specific template of type @IsobusVTMessageTypes.GetSupportedWidecharsRes.");
+return single_value->field_numberOfRanges;
+}
+
+WideCharRangeArray_template& GetSupportedWidecharsRes_template::wideCharRangeArray()
+{
+set_specific();
+return single_value->field_wideCharRangeArray;
+}
+
+const WideCharRangeArray_template& GetSupportedWidecharsRes_template::wideCharRangeArray() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field wideCharRangeArray of a non-specific template of type @IsobusVTMessageTypes.GetSupportedWidecharsRes.");
+return single_value->field_wideCharRangeArray;
+}
+
+int GetSupportedWidecharsRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetSupportedWidecharsRes 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 @IsobusVTMessageTypes.GetSupportedWidecharsRes 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 @IsobusVTMessageTypes.GetSupportedWidecharsRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetSupportedWidecharsRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetSupportedWidecharsRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetSupportedWidecharsRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetSupportedWidecharsRes.");
+  }
+  return 0;
+}
+
+void GetSupportedWidecharsRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", codeplane := ");
+single_value->field_codeplane.log();
+TTCN_Logger::log_event_str(", firstWideCharInInquiryRange := ");
+single_value->field_firstWideCharInInquiryRange.log();
+TTCN_Logger::log_event_str(", lastWideCharInInquiryRange := ");
+single_value->field_lastWideCharInInquiryRange.log();
+TTCN_Logger::log_event_str(", numberOfRanges := ");
+single_value->field_numberOfRanges.log();
+TTCN_Logger::log_event_str(", wideCharRangeArray := ");
+single_value->field_wideCharRangeArray.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void GetSupportedWidecharsRes_template::log_match(const GetSupportedWidecharsRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_codeplane.match(match_value.codeplane(), legacy)){
+TTCN_Logger::log_logmatch_info(".codeplane");
+single_value->field_codeplane.log_match(match_value.codeplane(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_firstWideCharInInquiryRange.match(match_value.firstWideCharInInquiryRange(), legacy)){
+TTCN_Logger::log_logmatch_info(".firstWideCharInInquiryRange");
+single_value->field_firstWideCharInInquiryRange.log_match(match_value.firstWideCharInInquiryRange(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_lastWideCharInInquiryRange.match(match_value.lastWideCharInInquiryRange(), legacy)){
+TTCN_Logger::log_logmatch_info(".lastWideCharInInquiryRange");
+single_value->field_lastWideCharInInquiryRange.log_match(match_value.lastWideCharInInquiryRange(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_numberOfRanges.match(match_value.numberOfRanges(), legacy)){
+TTCN_Logger::log_logmatch_info(".numberOfRanges");
+single_value->field_numberOfRanges.log_match(match_value.numberOfRanges(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_wideCharRangeArray.match(match_value.wideCharRangeArray(), legacy)){
+TTCN_Logger::log_logmatch_info(".wideCharRangeArray");
+single_value->field_wideCharRangeArray.log_match(match_value.wideCharRangeArray(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", codeplane := ");
+single_value->field_codeplane.log_match(match_value.codeplane(), legacy);
+TTCN_Logger::log_event_str(", firstWideCharInInquiryRange := ");
+single_value->field_firstWideCharInInquiryRange.log_match(match_value.firstWideCharInInquiryRange(), legacy);
+TTCN_Logger::log_event_str(", lastWideCharInInquiryRange := ");
+single_value->field_lastWideCharInInquiryRange.log_match(match_value.lastWideCharInInquiryRange(), legacy);
+TTCN_Logger::log_event_str(", numberOfRanges := ");
+single_value->field_numberOfRanges.log_match(match_value.numberOfRanges(), legacy);
+TTCN_Logger::log_event_str(", wideCharRangeArray := ");
+single_value->field_wideCharRangeArray.log_match(match_value.wideCharRangeArray(), 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 GetSupportedWidecharsRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_codeplane.encode_text(text_buf);
+single_value->field_firstWideCharInInquiryRange.encode_text(text_buf);
+single_value->field_lastWideCharInInquiryRange.encode_text(text_buf);
+single_value->field_numberOfRanges.encode_text(text_buf);
+single_value->field_wideCharRangeArray.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 @IsobusVTMessageTypes.GetSupportedWidecharsRes.");
+}
+}
+
+void GetSupportedWidecharsRes_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_vtfunction.decode_text(text_buf);
+single_value->field_codeplane.decode_text(text_buf);
+single_value->field_firstWideCharInInquiryRange.decode_text(text_buf);
+single_value->field_lastWideCharInInquiryRange.decode_text(text_buf);
+single_value->field_numberOfRanges.decode_text(text_buf);
+single_value->field_wideCharRangeArray.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 GetSupportedWidecharsRes_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 @IsobusVTMessageTypes.GetSupportedWidecharsRes.");
+}
+}
+
+void GetSupportedWidecharsRes_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: {
+    GetSupportedWidecharsRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.GetSupportedWidecharsRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) codeplane().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) firstWideCharInInquiryRange().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) lastWideCharInInquiryRange().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) numberOfRanges().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) wideCharRangeArray().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "codeplane")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          codeplane().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(), "firstWideCharInInquiryRange")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          firstWideCharInInquiryRange().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(), "lastWideCharInInquiryRange")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          lastWideCharInInquiryRange().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(), "numberOfRanges")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          numberOfRanges().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(), "wideCharRangeArray")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          wideCharRangeArray().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 @IsobusVTMessageTypes.GetSupportedWidecharsRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.GetSupportedWidecharsRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void GetSupportedWidecharsRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetSupportedWidecharsRes");
+single_value->field_codeplane.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetSupportedWidecharsRes");
+single_value->field_firstWideCharInInquiryRange.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetSupportedWidecharsRes");
+single_value->field_lastWideCharInInquiryRange.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetSupportedWidecharsRes");
+single_value->field_numberOfRanges.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetSupportedWidecharsRes");
+single_value->field_wideCharRangeArray.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetSupportedWidecharsRes");
+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 : "@IsobusVTMessageTypes.GetSupportedWidecharsRes");
+}
+
+boolean GetSupportedWidecharsRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean GetSupportedWidecharsRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+GetWindowMaskDataReq::GetWindowMaskDataReq()
+{
+}
+
+GetWindowMaskDataReq::GetWindowMaskDataReq(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_reserved2,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_reserved2(par_reserved2),
+  field_reserved3(par_reserved3),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+GetWindowMaskDataReq::GetWindowMaskDataReq(const GetWindowMaskDataReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.GetWindowMaskDataReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+else field_reserved2.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void GetWindowMaskDataReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_reserved2.clean_up();
+field_reserved3.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* GetWindowMaskDataReq::get_descriptor() const { return &GetWindowMaskDataReq_descr_; }
+GetWindowMaskDataReq& GetWindowMaskDataReq::operator=(const GetWindowMaskDataReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.GetWindowMaskDataReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+  else field_reserved2.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean GetWindowMaskDataReq::operator==(const GetWindowMaskDataReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_reserved2==other_value.field_reserved2
+  && field_reserved3==other_value.field_reserved3
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean GetWindowMaskDataReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_reserved2.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean GetWindowMaskDataReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_reserved2.is_value()
+  && field_reserved3.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void GetWindowMaskDataReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void GetWindowMaskDataReq::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.GetWindowMaskDataReq has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.GetWindowMaskDataReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.GetWindowMaskDataReq");
+  }
+}
+
+void GetWindowMaskDataReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (reserved2().is_bound()) reserved2().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void GetWindowMaskDataReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_reserved2.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void GetWindowMaskDataReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_reserved2.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void GetWindowMaskDataReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void GetWindowMaskDataReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int GetWindowMaskDataReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, GetWindowMaskDataReq_reserved2_descr_.raw->forceomit);
+  decoded_field_length = field_reserved2.RAW_decode(GetWindowMaskDataReq_reserved2_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, GetWindowMaskDataReq_reserved3_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(GetWindowMaskDataReq_reserved3_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, GetWindowMaskDataReq_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(GetWindowMaskDataReq_reserved4_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, GetWindowMaskDataReq_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(GetWindowMaskDataReq_reserved5_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, GetWindowMaskDataReq_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(GetWindowMaskDataReq_reserved6_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, GetWindowMaskDataReq_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(GetWindowMaskDataReq_reserved7_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, GetWindowMaskDataReq_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(GetWindowMaskDataReq_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int GetWindowMaskDataReq::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, GetWindowMaskDataReq_reserved2_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, GetWindowMaskDataReq_reserved3_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, GetWindowMaskDataReq_reserved4_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, GetWindowMaskDataReq_reserved5_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, GetWindowMaskDataReq_reserved6_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, GetWindowMaskDataReq_reserved7_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, GetWindowMaskDataReq_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved2.RAW_encode(GetWindowMaskDataReq_reserved2_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved3.RAW_encode(GetWindowMaskDataReq_reserved3_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved4.RAW_encode(GetWindowMaskDataReq_reserved4_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved5.RAW_encode(GetWindowMaskDataReq_reserved5_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved6.RAW_encode(GetWindowMaskDataReq_reserved6_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved7.RAW_encode(GetWindowMaskDataReq_reserved7_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved8.RAW_encode(GetWindowMaskDataReq_reserved8_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct GetWindowMaskDataReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+OCTETSTRING_template field_reserved2;
+OCTETSTRING_template field_reserved3;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void GetWindowMaskDataReq_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_vtfunction = ANY_VALUE;
+single_value->field_reserved2 = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void GetWindowMaskDataReq_template::copy_value(const GetWindowMaskDataReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.reserved2().is_bound()) {
+  single_value->field_reserved2 = other_value.reserved2();
+} else {
+  single_value->field_reserved2.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void GetWindowMaskDataReq_template::copy_template(const GetWindowMaskDataReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved2().get_selection()) {
+single_value->field_reserved2 = other_value.reserved2();
+} else {
+single_value->field_reserved2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new GetWindowMaskDataReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetWindowMaskDataReq.");
+break;
+}
+set_selection(other_value);
+}
+
+GetWindowMaskDataReq_template::GetWindowMaskDataReq_template()
+{
+}
+
+GetWindowMaskDataReq_template::GetWindowMaskDataReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+GetWindowMaskDataReq_template::GetWindowMaskDataReq_template(const GetWindowMaskDataReq& other_value)
+{
+copy_value(other_value);
+}
+
+GetWindowMaskDataReq_template::GetWindowMaskDataReq_template(const OPTIONAL<GetWindowMaskDataReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const GetWindowMaskDataReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.GetWindowMaskDataReq from an unbound optional field.");
+}
+}
+
+GetWindowMaskDataReq_template::GetWindowMaskDataReq_template(const GetWindowMaskDataReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+GetWindowMaskDataReq_template::~GetWindowMaskDataReq_template()
+{
+clean_up();
+}
+
+GetWindowMaskDataReq_template& GetWindowMaskDataReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+GetWindowMaskDataReq_template& GetWindowMaskDataReq_template::operator=(const GetWindowMaskDataReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+GetWindowMaskDataReq_template& GetWindowMaskDataReq_template::operator=(const OPTIONAL<GetWindowMaskDataReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const GetWindowMaskDataReq&)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 @IsobusVTMessageTypes.GetWindowMaskDataReq.");
+}
+return *this;
+}
+
+GetWindowMaskDataReq_template& GetWindowMaskDataReq_template::operator=(const GetWindowMaskDataReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean GetWindowMaskDataReq_template::match(const GetWindowMaskDataReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.reserved2().is_bound()) return FALSE;
+if(!single_value->field_reserved2.match(other_value.reserved2(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetWindowMaskDataReq.");
+}
+return FALSE;
+}
+
+boolean GetWindowMaskDataReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_reserved2.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean GetWindowMaskDataReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_reserved2.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void GetWindowMaskDataReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+GetWindowMaskDataReq GetWindowMaskDataReq_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 @IsobusVTMessageTypes.GetWindowMaskDataReq.");
+GetWindowMaskDataReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_reserved2.is_bound()) {
+ret_val.reserved2() = single_value->field_reserved2.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void GetWindowMaskDataReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.GetWindowMaskDataReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new GetWindowMaskDataReq_template[list_length];
+}
+
+GetWindowMaskDataReq_template& GetWindowMaskDataReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.GetWindowMaskDataReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.GetWindowMaskDataReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& GetWindowMaskDataReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& GetWindowMaskDataReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.GetWindowMaskDataReq.");
+return single_value->field_vtfunction;
+}
+
+OCTETSTRING_template& GetWindowMaskDataReq_template::reserved2()
+{
+set_specific();
+return single_value->field_reserved2;
+}
+
+const OCTETSTRING_template& GetWindowMaskDataReq_template::reserved2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved2 of a non-specific template of type @IsobusVTMessageTypes.GetWindowMaskDataReq.");
+return single_value->field_reserved2;
+}
+
+OCTETSTRING_template& GetWindowMaskDataReq_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const OCTETSTRING_template& GetWindowMaskDataReq_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.GetWindowMaskDataReq.");
+return single_value->field_reserved3;
+}
+
+OCTETSTRING_template& GetWindowMaskDataReq_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& GetWindowMaskDataReq_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.GetWindowMaskDataReq.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& GetWindowMaskDataReq_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& GetWindowMaskDataReq_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.GetWindowMaskDataReq.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& GetWindowMaskDataReq_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& GetWindowMaskDataReq_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.GetWindowMaskDataReq.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& GetWindowMaskDataReq_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& GetWindowMaskDataReq_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.GetWindowMaskDataReq.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& GetWindowMaskDataReq_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& GetWindowMaskDataReq_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.GetWindowMaskDataReq.");
+return single_value->field_reserved8;
+}
+
+int GetWindowMaskDataReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetWindowMaskDataReq which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetWindowMaskDataReq 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 @IsobusVTMessageTypes.GetWindowMaskDataReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetWindowMaskDataReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetWindowMaskDataReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetWindowMaskDataReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetWindowMaskDataReq.");
+  }
+  return 0;
+}
+
+void GetWindowMaskDataReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void GetWindowMaskDataReq_template::log_match(const GetWindowMaskDataReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved2.match(match_value.reserved2(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved2");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 GetWindowMaskDataReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_reserved2.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.GetWindowMaskDataReq.");
+}
+}
+
+void GetWindowMaskDataReq_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_vtfunction.decode_text(text_buf);
+single_value->field_reserved2.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 GetWindowMaskDataReq_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 @IsobusVTMessageTypes.GetWindowMaskDataReq.");
+}
+}
+
+void GetWindowMaskDataReq_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: {
+    GetWindowMaskDataReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.GetWindowMaskDataReq has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.GetWindowMaskDataReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.GetWindowMaskDataReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void GetWindowMaskDataReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetWindowMaskDataReq");
+single_value->field_reserved2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetWindowMaskDataReq");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetWindowMaskDataReq");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetWindowMaskDataReq");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetWindowMaskDataReq");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetWindowMaskDataReq");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetWindowMaskDataReq");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetWindowMaskDataReq");
+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 : "@IsobusVTMessageTypes.GetWindowMaskDataReq");
+}
+
+boolean GetWindowMaskDataReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean GetWindowMaskDataReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+GetWindowMaskDataRes::GetWindowMaskDataRes()
+{
+}
+
+GetWindowMaskDataRes::GetWindowMaskDataRes(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_BackgroundColourVTUserLayoutDataMasks,
+    const OCTETSTRING& par_BackgroundColourVTKeyCells,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_BackgroundColourVTUserLayoutDataMasks(par_BackgroundColourVTUserLayoutDataMasks),
+  field_BackgroundColourVTKeyCells(par_BackgroundColourVTKeyCells),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+GetWindowMaskDataRes::GetWindowMaskDataRes(const GetWindowMaskDataRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.GetWindowMaskDataRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.BackgroundColourVTUserLayoutDataMasks().is_bound()) field_BackgroundColourVTUserLayoutDataMasks = other_value.BackgroundColourVTUserLayoutDataMasks();
+else field_BackgroundColourVTUserLayoutDataMasks.clean_up();
+if (other_value.BackgroundColourVTKeyCells().is_bound()) field_BackgroundColourVTKeyCells = other_value.BackgroundColourVTKeyCells();
+else field_BackgroundColourVTKeyCells.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void GetWindowMaskDataRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_BackgroundColourVTUserLayoutDataMasks.clean_up();
+field_BackgroundColourVTKeyCells.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* GetWindowMaskDataRes::get_descriptor() const { return &GetWindowMaskDataRes_descr_; }
+GetWindowMaskDataRes& GetWindowMaskDataRes::operator=(const GetWindowMaskDataRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.GetWindowMaskDataRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.BackgroundColourVTUserLayoutDataMasks().is_bound()) field_BackgroundColourVTUserLayoutDataMasks = other_value.BackgroundColourVTUserLayoutDataMasks();
+  else field_BackgroundColourVTUserLayoutDataMasks.clean_up();
+  if (other_value.BackgroundColourVTKeyCells().is_bound()) field_BackgroundColourVTKeyCells = other_value.BackgroundColourVTKeyCells();
+  else field_BackgroundColourVTKeyCells.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean GetWindowMaskDataRes::operator==(const GetWindowMaskDataRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_BackgroundColourVTUserLayoutDataMasks==other_value.field_BackgroundColourVTUserLayoutDataMasks
+  && field_BackgroundColourVTKeyCells==other_value.field_BackgroundColourVTKeyCells
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean GetWindowMaskDataRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_BackgroundColourVTUserLayoutDataMasks.is_bound())
+  || (field_BackgroundColourVTKeyCells.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean GetWindowMaskDataRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_BackgroundColourVTUserLayoutDataMasks.is_value()
+  && field_BackgroundColourVTKeyCells.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void GetWindowMaskDataRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", BackgroundColourVTUserLayoutDataMasks := ");
+field_BackgroundColourVTUserLayoutDataMasks.log();
+TTCN_Logger::log_event_str(", BackgroundColourVTKeyCells := ");
+field_BackgroundColourVTKeyCells.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void GetWindowMaskDataRes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.GetWindowMaskDataRes has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) BackgroundColourVTUserLayoutDataMasks().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) BackgroundColourVTKeyCells().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "BackgroundColourVTUserLayoutDataMasks")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          BackgroundColourVTUserLayoutDataMasks().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(), "BackgroundColourVTKeyCells")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          BackgroundColourVTKeyCells().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.GetWindowMaskDataRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.GetWindowMaskDataRes");
+  }
+}
+
+void GetWindowMaskDataRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (BackgroundColourVTUserLayoutDataMasks().is_bound()) BackgroundColourVTUserLayoutDataMasks().set_implicit_omit();
+if (BackgroundColourVTKeyCells().is_bound()) BackgroundColourVTKeyCells().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void GetWindowMaskDataRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_BackgroundColourVTUserLayoutDataMasks.encode_text(text_buf);
+field_BackgroundColourVTKeyCells.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void GetWindowMaskDataRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_BackgroundColourVTUserLayoutDataMasks.decode_text(text_buf);
+field_BackgroundColourVTKeyCells.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void GetWindowMaskDataRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void GetWindowMaskDataRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int GetWindowMaskDataRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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::OCT1_descr_.raw->forceomit);
+  decoded_field_length = field_BackgroundColourVTUserLayoutDataMasks.RAW_decode(General__Types::OCT1_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::OCT1_descr_.raw->forceomit);
+  decoded_field_length = field_BackgroundColourVTKeyCells.RAW_decode(General__Types::OCT1_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, GetWindowMaskDataRes_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(GetWindowMaskDataRes_reserved4_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, GetWindowMaskDataRes_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(GetWindowMaskDataRes_reserved5_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, GetWindowMaskDataRes_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(GetWindowMaskDataRes_reserved6_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, GetWindowMaskDataRes_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(GetWindowMaskDataRes_reserved7_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, GetWindowMaskDataRes_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(GetWindowMaskDataRes_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int GetWindowMaskDataRes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, General__Types::OCT1_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, General__Types::OCT1_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, GetWindowMaskDataRes_reserved4_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, GetWindowMaskDataRes_reserved5_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, GetWindowMaskDataRes_reserved6_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, GetWindowMaskDataRes_reserved7_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, GetWindowMaskDataRes_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_BackgroundColourVTUserLayoutDataMasks.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_BackgroundColourVTKeyCells.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved4.RAW_encode(GetWindowMaskDataRes_reserved4_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved5.RAW_encode(GetWindowMaskDataRes_reserved5_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved6.RAW_encode(GetWindowMaskDataRes_reserved6_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved7.RAW_encode(GetWindowMaskDataRes_reserved7_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved8.RAW_encode(GetWindowMaskDataRes_reserved8_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct GetWindowMaskDataRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+OCTETSTRING_template field_BackgroundColourVTUserLayoutDataMasks;
+OCTETSTRING_template field_BackgroundColourVTKeyCells;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void GetWindowMaskDataRes_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_vtfunction = ANY_VALUE;
+single_value->field_BackgroundColourVTUserLayoutDataMasks = ANY_VALUE;
+single_value->field_BackgroundColourVTKeyCells = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void GetWindowMaskDataRes_template::copy_value(const GetWindowMaskDataRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.BackgroundColourVTUserLayoutDataMasks().is_bound()) {
+  single_value->field_BackgroundColourVTUserLayoutDataMasks = other_value.BackgroundColourVTUserLayoutDataMasks();
+} else {
+  single_value->field_BackgroundColourVTUserLayoutDataMasks.clean_up();
+}
+if (other_value.BackgroundColourVTKeyCells().is_bound()) {
+  single_value->field_BackgroundColourVTKeyCells = other_value.BackgroundColourVTKeyCells();
+} else {
+  single_value->field_BackgroundColourVTKeyCells.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void GetWindowMaskDataRes_template::copy_template(const GetWindowMaskDataRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.BackgroundColourVTUserLayoutDataMasks().get_selection()) {
+single_value->field_BackgroundColourVTUserLayoutDataMasks = other_value.BackgroundColourVTUserLayoutDataMasks();
+} else {
+single_value->field_BackgroundColourVTUserLayoutDataMasks.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.BackgroundColourVTKeyCells().get_selection()) {
+single_value->field_BackgroundColourVTKeyCells = other_value.BackgroundColourVTKeyCells();
+} else {
+single_value->field_BackgroundColourVTKeyCells.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new GetWindowMaskDataRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetWindowMaskDataRes.");
+break;
+}
+set_selection(other_value);
+}
+
+GetWindowMaskDataRes_template::GetWindowMaskDataRes_template()
+{
+}
+
+GetWindowMaskDataRes_template::GetWindowMaskDataRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+GetWindowMaskDataRes_template::GetWindowMaskDataRes_template(const GetWindowMaskDataRes& other_value)
+{
+copy_value(other_value);
+}
+
+GetWindowMaskDataRes_template::GetWindowMaskDataRes_template(const OPTIONAL<GetWindowMaskDataRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const GetWindowMaskDataRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.GetWindowMaskDataRes from an unbound optional field.");
+}
+}
+
+GetWindowMaskDataRes_template::GetWindowMaskDataRes_template(const GetWindowMaskDataRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+GetWindowMaskDataRes_template::~GetWindowMaskDataRes_template()
+{
+clean_up();
+}
+
+GetWindowMaskDataRes_template& GetWindowMaskDataRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+GetWindowMaskDataRes_template& GetWindowMaskDataRes_template::operator=(const GetWindowMaskDataRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+GetWindowMaskDataRes_template& GetWindowMaskDataRes_template::operator=(const OPTIONAL<GetWindowMaskDataRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const GetWindowMaskDataRes&)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 @IsobusVTMessageTypes.GetWindowMaskDataRes.");
+}
+return *this;
+}
+
+GetWindowMaskDataRes_template& GetWindowMaskDataRes_template::operator=(const GetWindowMaskDataRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean GetWindowMaskDataRes_template::match(const GetWindowMaskDataRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.BackgroundColourVTUserLayoutDataMasks().is_bound()) return FALSE;
+if(!single_value->field_BackgroundColourVTUserLayoutDataMasks.match(other_value.BackgroundColourVTUserLayoutDataMasks(), legacy))return FALSE;
+if(!other_value.BackgroundColourVTKeyCells().is_bound()) return FALSE;
+if(!single_value->field_BackgroundColourVTKeyCells.match(other_value.BackgroundColourVTKeyCells(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetWindowMaskDataRes.");
+}
+return FALSE;
+}
+
+boolean GetWindowMaskDataRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_BackgroundColourVTUserLayoutDataMasks.is_bound()
+
+ ||single_value->field_BackgroundColourVTKeyCells.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean GetWindowMaskDataRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_BackgroundColourVTUserLayoutDataMasks.is_value()
+ &&single_value->field_BackgroundColourVTKeyCells.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void GetWindowMaskDataRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+GetWindowMaskDataRes GetWindowMaskDataRes_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 @IsobusVTMessageTypes.GetWindowMaskDataRes.");
+GetWindowMaskDataRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_BackgroundColourVTUserLayoutDataMasks.is_bound()) {
+ret_val.BackgroundColourVTUserLayoutDataMasks() = single_value->field_BackgroundColourVTUserLayoutDataMasks.valueof();
+}
+if (single_value->field_BackgroundColourVTKeyCells.is_bound()) {
+ret_val.BackgroundColourVTKeyCells() = single_value->field_BackgroundColourVTKeyCells.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void GetWindowMaskDataRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.GetWindowMaskDataRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new GetWindowMaskDataRes_template[list_length];
+}
+
+GetWindowMaskDataRes_template& GetWindowMaskDataRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.GetWindowMaskDataRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.GetWindowMaskDataRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& GetWindowMaskDataRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& GetWindowMaskDataRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.GetWindowMaskDataRes.");
+return single_value->field_vtfunction;
+}
+
+OCTETSTRING_template& GetWindowMaskDataRes_template::BackgroundColourVTUserLayoutDataMasks()
+{
+set_specific();
+return single_value->field_BackgroundColourVTUserLayoutDataMasks;
+}
+
+const OCTETSTRING_template& GetWindowMaskDataRes_template::BackgroundColourVTUserLayoutDataMasks() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field BackgroundColourVTUserLayoutDataMasks of a non-specific template of type @IsobusVTMessageTypes.GetWindowMaskDataRes.");
+return single_value->field_BackgroundColourVTUserLayoutDataMasks;
+}
+
+OCTETSTRING_template& GetWindowMaskDataRes_template::BackgroundColourVTKeyCells()
+{
+set_specific();
+return single_value->field_BackgroundColourVTKeyCells;
+}
+
+const OCTETSTRING_template& GetWindowMaskDataRes_template::BackgroundColourVTKeyCells() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field BackgroundColourVTKeyCells of a non-specific template of type @IsobusVTMessageTypes.GetWindowMaskDataRes.");
+return single_value->field_BackgroundColourVTKeyCells;
+}
+
+OCTETSTRING_template& GetWindowMaskDataRes_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& GetWindowMaskDataRes_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.GetWindowMaskDataRes.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& GetWindowMaskDataRes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& GetWindowMaskDataRes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.GetWindowMaskDataRes.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& GetWindowMaskDataRes_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& GetWindowMaskDataRes_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.GetWindowMaskDataRes.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& GetWindowMaskDataRes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& GetWindowMaskDataRes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.GetWindowMaskDataRes.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& GetWindowMaskDataRes_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& GetWindowMaskDataRes_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.GetWindowMaskDataRes.");
+return single_value->field_reserved8;
+}
+
+int GetWindowMaskDataRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetWindowMaskDataRes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetWindowMaskDataRes 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 @IsobusVTMessageTypes.GetWindowMaskDataRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetWindowMaskDataRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetWindowMaskDataRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetWindowMaskDataRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetWindowMaskDataRes.");
+  }
+  return 0;
+}
+
+void GetWindowMaskDataRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", BackgroundColourVTUserLayoutDataMasks := ");
+single_value->field_BackgroundColourVTUserLayoutDataMasks.log();
+TTCN_Logger::log_event_str(", BackgroundColourVTKeyCells := ");
+single_value->field_BackgroundColourVTKeyCells.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void GetWindowMaskDataRes_template::log_match(const GetWindowMaskDataRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_BackgroundColourVTUserLayoutDataMasks.match(match_value.BackgroundColourVTUserLayoutDataMasks(), legacy)){
+TTCN_Logger::log_logmatch_info(".BackgroundColourVTUserLayoutDataMasks");
+single_value->field_BackgroundColourVTUserLayoutDataMasks.log_match(match_value.BackgroundColourVTUserLayoutDataMasks(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_BackgroundColourVTKeyCells.match(match_value.BackgroundColourVTKeyCells(), legacy)){
+TTCN_Logger::log_logmatch_info(".BackgroundColourVTKeyCells");
+single_value->field_BackgroundColourVTKeyCells.log_match(match_value.BackgroundColourVTKeyCells(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", BackgroundColourVTUserLayoutDataMasks := ");
+single_value->field_BackgroundColourVTUserLayoutDataMasks.log_match(match_value.BackgroundColourVTUserLayoutDataMasks(), legacy);
+TTCN_Logger::log_event_str(", BackgroundColourVTKeyCells := ");
+single_value->field_BackgroundColourVTKeyCells.log_match(match_value.BackgroundColourVTKeyCells(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 GetWindowMaskDataRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_BackgroundColourVTUserLayoutDataMasks.encode_text(text_buf);
+single_value->field_BackgroundColourVTKeyCells.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.GetWindowMaskDataRes.");
+}
+}
+
+void GetWindowMaskDataRes_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_vtfunction.decode_text(text_buf);
+single_value->field_BackgroundColourVTUserLayoutDataMasks.decode_text(text_buf);
+single_value->field_BackgroundColourVTKeyCells.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 GetWindowMaskDataRes_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 @IsobusVTMessageTypes.GetWindowMaskDataRes.");
+}
+}
+
+void GetWindowMaskDataRes_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: {
+    GetWindowMaskDataRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.GetWindowMaskDataRes has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) BackgroundColourVTUserLayoutDataMasks().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) BackgroundColourVTKeyCells().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "BackgroundColourVTUserLayoutDataMasks")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          BackgroundColourVTUserLayoutDataMasks().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(), "BackgroundColourVTKeyCells")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          BackgroundColourVTKeyCells().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.GetWindowMaskDataRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.GetWindowMaskDataRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void GetWindowMaskDataRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetWindowMaskDataRes");
+single_value->field_BackgroundColourVTUserLayoutDataMasks.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetWindowMaskDataRes");
+single_value->field_BackgroundColourVTKeyCells.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetWindowMaskDataRes");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetWindowMaskDataRes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetWindowMaskDataRes");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetWindowMaskDataRes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetWindowMaskDataRes");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetWindowMaskDataRes");
+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 : "@IsobusVTMessageTypes.GetWindowMaskDataRes");
+}
+
+boolean GetWindowMaskDataRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean GetWindowMaskDataRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+GetSupportedObjectsReq::GetSupportedObjectsReq()
+{
+}
+
+GetSupportedObjectsReq::GetSupportedObjectsReq(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_reserved2,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_reserved2(par_reserved2),
+  field_reserved3(par_reserved3),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+GetSupportedObjectsReq::GetSupportedObjectsReq(const GetSupportedObjectsReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.GetSupportedObjectsReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+else field_reserved2.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void GetSupportedObjectsReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_reserved2.clean_up();
+field_reserved3.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* GetSupportedObjectsReq::get_descriptor() const { return &GetSupportedObjectsReq_descr_; }
+GetSupportedObjectsReq& GetSupportedObjectsReq::operator=(const GetSupportedObjectsReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.GetSupportedObjectsReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+  else field_reserved2.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean GetSupportedObjectsReq::operator==(const GetSupportedObjectsReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_reserved2==other_value.field_reserved2
+  && field_reserved3==other_value.field_reserved3
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean GetSupportedObjectsReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_reserved2.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean GetSupportedObjectsReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_reserved2.is_value()
+  && field_reserved3.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void GetSupportedObjectsReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void GetSupportedObjectsReq::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.GetSupportedObjectsReq has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.GetSupportedObjectsReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.GetSupportedObjectsReq");
+  }
+}
+
+void GetSupportedObjectsReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (reserved2().is_bound()) reserved2().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void GetSupportedObjectsReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_reserved2.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void GetSupportedObjectsReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_reserved2.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void GetSupportedObjectsReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void GetSupportedObjectsReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int GetSupportedObjectsReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, GetSupportedObjectsReq_reserved2_descr_.raw->forceomit);
+  decoded_field_length = field_reserved2.RAW_decode(GetSupportedObjectsReq_reserved2_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, GetSupportedObjectsReq_reserved3_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(GetSupportedObjectsReq_reserved3_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, GetSupportedObjectsReq_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(GetSupportedObjectsReq_reserved4_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, GetSupportedObjectsReq_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(GetSupportedObjectsReq_reserved5_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, GetSupportedObjectsReq_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(GetSupportedObjectsReq_reserved6_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, GetSupportedObjectsReq_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(GetSupportedObjectsReq_reserved7_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, GetSupportedObjectsReq_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(GetSupportedObjectsReq_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int GetSupportedObjectsReq::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, GetSupportedObjectsReq_reserved2_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, GetSupportedObjectsReq_reserved3_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, GetSupportedObjectsReq_reserved4_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, GetSupportedObjectsReq_reserved5_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, GetSupportedObjectsReq_reserved6_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, GetSupportedObjectsReq_reserved7_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, GetSupportedObjectsReq_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved2.RAW_encode(GetSupportedObjectsReq_reserved2_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved3.RAW_encode(GetSupportedObjectsReq_reserved3_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved4.RAW_encode(GetSupportedObjectsReq_reserved4_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved5.RAW_encode(GetSupportedObjectsReq_reserved5_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved6.RAW_encode(GetSupportedObjectsReq_reserved6_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved7.RAW_encode(GetSupportedObjectsReq_reserved7_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved8.RAW_encode(GetSupportedObjectsReq_reserved8_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct GetSupportedObjectsReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+OCTETSTRING_template field_reserved2;
+OCTETSTRING_template field_reserved3;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void GetSupportedObjectsReq_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_vtfunction = ANY_VALUE;
+single_value->field_reserved2 = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void GetSupportedObjectsReq_template::copy_value(const GetSupportedObjectsReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.reserved2().is_bound()) {
+  single_value->field_reserved2 = other_value.reserved2();
+} else {
+  single_value->field_reserved2.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void GetSupportedObjectsReq_template::copy_template(const GetSupportedObjectsReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved2().get_selection()) {
+single_value->field_reserved2 = other_value.reserved2();
+} else {
+single_value->field_reserved2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new GetSupportedObjectsReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetSupportedObjectsReq.");
+break;
+}
+set_selection(other_value);
+}
+
+GetSupportedObjectsReq_template::GetSupportedObjectsReq_template()
+{
+}
+
+GetSupportedObjectsReq_template::GetSupportedObjectsReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+GetSupportedObjectsReq_template::GetSupportedObjectsReq_template(const GetSupportedObjectsReq& other_value)
+{
+copy_value(other_value);
+}
+
+GetSupportedObjectsReq_template::GetSupportedObjectsReq_template(const OPTIONAL<GetSupportedObjectsReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const GetSupportedObjectsReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.GetSupportedObjectsReq from an unbound optional field.");
+}
+}
+
+GetSupportedObjectsReq_template::GetSupportedObjectsReq_template(const GetSupportedObjectsReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+GetSupportedObjectsReq_template::~GetSupportedObjectsReq_template()
+{
+clean_up();
+}
+
+GetSupportedObjectsReq_template& GetSupportedObjectsReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+GetSupportedObjectsReq_template& GetSupportedObjectsReq_template::operator=(const GetSupportedObjectsReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+GetSupportedObjectsReq_template& GetSupportedObjectsReq_template::operator=(const OPTIONAL<GetSupportedObjectsReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const GetSupportedObjectsReq&)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 @IsobusVTMessageTypes.GetSupportedObjectsReq.");
+}
+return *this;
+}
+
+GetSupportedObjectsReq_template& GetSupportedObjectsReq_template::operator=(const GetSupportedObjectsReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean GetSupportedObjectsReq_template::match(const GetSupportedObjectsReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.reserved2().is_bound()) return FALSE;
+if(!single_value->field_reserved2.match(other_value.reserved2(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetSupportedObjectsReq.");
+}
+return FALSE;
+}
+
+boolean GetSupportedObjectsReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_reserved2.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean GetSupportedObjectsReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_reserved2.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void GetSupportedObjectsReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+GetSupportedObjectsReq GetSupportedObjectsReq_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 @IsobusVTMessageTypes.GetSupportedObjectsReq.");
+GetSupportedObjectsReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_reserved2.is_bound()) {
+ret_val.reserved2() = single_value->field_reserved2.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void GetSupportedObjectsReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.GetSupportedObjectsReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new GetSupportedObjectsReq_template[list_length];
+}
+
+GetSupportedObjectsReq_template& GetSupportedObjectsReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.GetSupportedObjectsReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.GetSupportedObjectsReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& GetSupportedObjectsReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& GetSupportedObjectsReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.GetSupportedObjectsReq.");
+return single_value->field_vtfunction;
+}
+
+OCTETSTRING_template& GetSupportedObjectsReq_template::reserved2()
+{
+set_specific();
+return single_value->field_reserved2;
+}
+
+const OCTETSTRING_template& GetSupportedObjectsReq_template::reserved2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved2 of a non-specific template of type @IsobusVTMessageTypes.GetSupportedObjectsReq.");
+return single_value->field_reserved2;
+}
+
+OCTETSTRING_template& GetSupportedObjectsReq_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const OCTETSTRING_template& GetSupportedObjectsReq_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.GetSupportedObjectsReq.");
+return single_value->field_reserved3;
+}
+
+OCTETSTRING_template& GetSupportedObjectsReq_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& GetSupportedObjectsReq_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.GetSupportedObjectsReq.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& GetSupportedObjectsReq_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& GetSupportedObjectsReq_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.GetSupportedObjectsReq.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& GetSupportedObjectsReq_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& GetSupportedObjectsReq_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.GetSupportedObjectsReq.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& GetSupportedObjectsReq_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& GetSupportedObjectsReq_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.GetSupportedObjectsReq.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& GetSupportedObjectsReq_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& GetSupportedObjectsReq_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.GetSupportedObjectsReq.");
+return single_value->field_reserved8;
+}
+
+int GetSupportedObjectsReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetSupportedObjectsReq which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetSupportedObjectsReq 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 @IsobusVTMessageTypes.GetSupportedObjectsReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetSupportedObjectsReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetSupportedObjectsReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetSupportedObjectsReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetSupportedObjectsReq.");
+  }
+  return 0;
+}
+
+void GetSupportedObjectsReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void GetSupportedObjectsReq_template::log_match(const GetSupportedObjectsReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved2.match(match_value.reserved2(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved2");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 GetSupportedObjectsReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_reserved2.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.GetSupportedObjectsReq.");
+}
+}
+
+void GetSupportedObjectsReq_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_vtfunction.decode_text(text_buf);
+single_value->field_reserved2.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 GetSupportedObjectsReq_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 @IsobusVTMessageTypes.GetSupportedObjectsReq.");
+}
+}
+
+void GetSupportedObjectsReq_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: {
+    GetSupportedObjectsReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.GetSupportedObjectsReq has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.GetSupportedObjectsReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.GetSupportedObjectsReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void GetSupportedObjectsReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetSupportedObjectsReq");
+single_value->field_reserved2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetSupportedObjectsReq");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetSupportedObjectsReq");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetSupportedObjectsReq");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetSupportedObjectsReq");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetSupportedObjectsReq");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetSupportedObjectsReq");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetSupportedObjectsReq");
+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 : "@IsobusVTMessageTypes.GetSupportedObjectsReq");
+}
+
+boolean GetSupportedObjectsReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean GetSupportedObjectsReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+GetSupportedObjectsRes::GetSupportedObjectsRes()
+{
+}
+
+GetSupportedObjectsRes::GetSupportedObjectsRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_numberOfBytesToFollow,
+    const OCTETSTRING& par_supportedObjectTypes)
+  :   field_vtfunction(par_vtfunction),
+  field_numberOfBytesToFollow(par_numberOfBytesToFollow),
+  field_supportedObjectTypes(par_supportedObjectTypes)
+{
+}
+
+GetSupportedObjectsRes::GetSupportedObjectsRes(const GetSupportedObjectsRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.GetSupportedObjectsRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.numberOfBytesToFollow().is_bound()) field_numberOfBytesToFollow = other_value.numberOfBytesToFollow();
+else field_numberOfBytesToFollow.clean_up();
+if (other_value.supportedObjectTypes().is_bound()) field_supportedObjectTypes = other_value.supportedObjectTypes();
+else field_supportedObjectTypes.clean_up();
+}
+
+void GetSupportedObjectsRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_numberOfBytesToFollow.clean_up();
+field_supportedObjectTypes.clean_up();
+}
+
+const TTCN_Typedescriptor_t* GetSupportedObjectsRes::get_descriptor() const { return &GetSupportedObjectsRes_descr_; }
+GetSupportedObjectsRes& GetSupportedObjectsRes::operator=(const GetSupportedObjectsRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.GetSupportedObjectsRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.numberOfBytesToFollow().is_bound()) field_numberOfBytesToFollow = other_value.numberOfBytesToFollow();
+  else field_numberOfBytesToFollow.clean_up();
+  if (other_value.supportedObjectTypes().is_bound()) field_supportedObjectTypes = other_value.supportedObjectTypes();
+  else field_supportedObjectTypes.clean_up();
+}
+return *this;
+}
+
+boolean GetSupportedObjectsRes::operator==(const GetSupportedObjectsRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_numberOfBytesToFollow==other_value.field_numberOfBytesToFollow
+  && field_supportedObjectTypes==other_value.field_supportedObjectTypes;
+}
+
+boolean GetSupportedObjectsRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_numberOfBytesToFollow.is_bound())
+  || (field_supportedObjectTypes.is_bound());
+}
+boolean GetSupportedObjectsRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_numberOfBytesToFollow.is_value()
+  && field_supportedObjectTypes.is_value();
+}
+void GetSupportedObjectsRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", numberOfBytesToFollow := ");
+field_numberOfBytesToFollow.log();
+TTCN_Logger::log_event_str(", supportedObjectTypes := ");
+field_supportedObjectTypes.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void GetSupportedObjectsRes::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 @IsobusVTMessageTypes.GetSupportedObjectsRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) numberOfBytesToFollow().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) supportedObjectTypes().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "numberOfBytesToFollow")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          numberOfBytesToFollow().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(), "supportedObjectTypes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          supportedObjectTypes().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 @IsobusVTMessageTypes.GetSupportedObjectsRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.GetSupportedObjectsRes");
+  }
+}
+
+void GetSupportedObjectsRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (numberOfBytesToFollow().is_bound()) numberOfBytesToFollow().set_implicit_omit();
+if (supportedObjectTypes().is_bound()) supportedObjectTypes().set_implicit_omit();
+}
+
+void GetSupportedObjectsRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_numberOfBytesToFollow.encode_text(text_buf);
+field_supportedObjectTypes.encode_text(text_buf);
+}
+
+void GetSupportedObjectsRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_numberOfBytesToFollow.decode_text(text_buf);
+field_supportedObjectTypes.decode_text(text_buf);
+}
+
+void GetSupportedObjectsRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void GetSupportedObjectsRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int GetSupportedObjectsRes::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;
+  int value_of_length_field1 = 0;
+  RAW_Force_Omit field_0_force_omit(0, force_omit, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, GetSupportedObjectsRes_numberOfBytesToFollow_descr_.raw->forceomit);
+  decoded_field_length = field_numberOfBytesToFollow.RAW_decode(GetSupportedObjectsRes_numberOfBytesToFollow_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());
+  value_of_length_field1+=field_numberOfBytesToFollow.get_long_long_val()*1;
+  RAW_Force_Omit field_2_force_omit(2, force_omit, General__Types::OCT1_descr_.raw->forceomit);
+  decoded_field_length = field_supportedObjectTypes.RAW_decode(General__Types::OCT1_descr_, p_buf, limit, local_top_order, no_err, value_of_length_field1, 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());
+  value_of_length_field1 -= decoded_field_length;
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int GetSupportedObjectsRes::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, GetSupportedObjectsRes_numberOfBytesToFollow_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, General__Types::OCT1_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += 16;
+  myleaf.body.node.nodes[1]->calc = CALC_LENGTH;
+  myleaf.body.node.nodes[1]->coding_descr = &GetSupportedObjectsRes_numberOfBytesToFollow_descr_;
+  myleaf.body.node.nodes[1]->calcof.lengthto.num_of_fields = 1;
+  myleaf.body.node.nodes[1]->calcof.lengthto.unit = -1;
+  myleaf.body.node.nodes[1]->calcof.lengthto.offset = 0;
+  myleaf.body.node.nodes[1]->calcof.lengthto.fields = init_lengthto_fields_list(1);
+  myleaf.body.node.nodes[1]->length = 16;
+  myleaf.body.node.nodes[1]->calcof.lengthto.fields[0].level = myleaf.body.node.nodes[2]->curr_pos.level;
+  myleaf.body.node.nodes[1]->calcof.lengthto.fields[0].pos = myleaf.body.node.nodes[2]->curr_pos.pos;
+  encoded_length += field_supportedObjectTypes.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[2]);
+  return myleaf.length = encoded_length;
+}
+
+struct GetSupportedObjectsRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_numberOfBytesToFollow;
+OCTETSTRING_template field_supportedObjectTypes;
+};
+
+void GetSupportedObjectsRes_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_vtfunction = ANY_VALUE;
+single_value->field_numberOfBytesToFollow = ANY_VALUE;
+single_value->field_supportedObjectTypes = ANY_VALUE;
+}
+}
+}
+
+void GetSupportedObjectsRes_template::copy_value(const GetSupportedObjectsRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.numberOfBytesToFollow().is_bound()) {
+  single_value->field_numberOfBytesToFollow = other_value.numberOfBytesToFollow();
+} else {
+  single_value->field_numberOfBytesToFollow.clean_up();
+}
+if (other_value.supportedObjectTypes().is_bound()) {
+  single_value->field_supportedObjectTypes = other_value.supportedObjectTypes();
+} else {
+  single_value->field_supportedObjectTypes.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void GetSupportedObjectsRes_template::copy_template(const GetSupportedObjectsRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.numberOfBytesToFollow().get_selection()) {
+single_value->field_numberOfBytesToFollow = other_value.numberOfBytesToFollow();
+} else {
+single_value->field_numberOfBytesToFollow.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.supportedObjectTypes().get_selection()) {
+single_value->field_supportedObjectTypes = other_value.supportedObjectTypes();
+} else {
+single_value->field_supportedObjectTypes.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new GetSupportedObjectsRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetSupportedObjectsRes.");
+break;
+}
+set_selection(other_value);
+}
+
+GetSupportedObjectsRes_template::GetSupportedObjectsRes_template()
+{
+}
+
+GetSupportedObjectsRes_template::GetSupportedObjectsRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+GetSupportedObjectsRes_template::GetSupportedObjectsRes_template(const GetSupportedObjectsRes& other_value)
+{
+copy_value(other_value);
+}
+
+GetSupportedObjectsRes_template::GetSupportedObjectsRes_template(const OPTIONAL<GetSupportedObjectsRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const GetSupportedObjectsRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.GetSupportedObjectsRes from an unbound optional field.");
+}
+}
+
+GetSupportedObjectsRes_template::GetSupportedObjectsRes_template(const GetSupportedObjectsRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+GetSupportedObjectsRes_template::~GetSupportedObjectsRes_template()
+{
+clean_up();
+}
+
+GetSupportedObjectsRes_template& GetSupportedObjectsRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+GetSupportedObjectsRes_template& GetSupportedObjectsRes_template::operator=(const GetSupportedObjectsRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+GetSupportedObjectsRes_template& GetSupportedObjectsRes_template::operator=(const OPTIONAL<GetSupportedObjectsRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const GetSupportedObjectsRes&)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 @IsobusVTMessageTypes.GetSupportedObjectsRes.");
+}
+return *this;
+}
+
+GetSupportedObjectsRes_template& GetSupportedObjectsRes_template::operator=(const GetSupportedObjectsRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean GetSupportedObjectsRes_template::match(const GetSupportedObjectsRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.numberOfBytesToFollow().is_bound()) return FALSE;
+if(!single_value->field_numberOfBytesToFollow.match(other_value.numberOfBytesToFollow(), legacy))return FALSE;
+if(!other_value.supportedObjectTypes().is_bound()) return FALSE;
+if(!single_value->field_supportedObjectTypes.match(other_value.supportedObjectTypes(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetSupportedObjectsRes.");
+}
+return FALSE;
+}
+
+boolean GetSupportedObjectsRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_numberOfBytesToFollow.is_bound()
+
+ ||single_value->field_supportedObjectTypes.is_bound()
+;
+}
+
+boolean GetSupportedObjectsRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_numberOfBytesToFollow.is_value()
+ &&single_value->field_supportedObjectTypes.is_value();
+}
+
+void GetSupportedObjectsRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+GetSupportedObjectsRes GetSupportedObjectsRes_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 @IsobusVTMessageTypes.GetSupportedObjectsRes.");
+GetSupportedObjectsRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_numberOfBytesToFollow.is_bound()) {
+ret_val.numberOfBytesToFollow() = single_value->field_numberOfBytesToFollow.valueof();
+}
+if (single_value->field_supportedObjectTypes.is_bound()) {
+ret_val.supportedObjectTypes() = single_value->field_supportedObjectTypes.valueof();
+}
+return ret_val;
+}
+
+void GetSupportedObjectsRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.GetSupportedObjectsRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new GetSupportedObjectsRes_template[list_length];
+}
+
+GetSupportedObjectsRes_template& GetSupportedObjectsRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.GetSupportedObjectsRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.GetSupportedObjectsRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& GetSupportedObjectsRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& GetSupportedObjectsRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.GetSupportedObjectsRes.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& GetSupportedObjectsRes_template::numberOfBytesToFollow()
+{
+set_specific();
+return single_value->field_numberOfBytesToFollow;
+}
+
+const INTEGER_template& GetSupportedObjectsRes_template::numberOfBytesToFollow() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field numberOfBytesToFollow of a non-specific template of type @IsobusVTMessageTypes.GetSupportedObjectsRes.");
+return single_value->field_numberOfBytesToFollow;
+}
+
+OCTETSTRING_template& GetSupportedObjectsRes_template::supportedObjectTypes()
+{
+set_specific();
+return single_value->field_supportedObjectTypes;
+}
+
+const OCTETSTRING_template& GetSupportedObjectsRes_template::supportedObjectTypes() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field supportedObjectTypes of a non-specific template of type @IsobusVTMessageTypes.GetSupportedObjectsRes.");
+return single_value->field_supportedObjectTypes;
+}
+
+int GetSupportedObjectsRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetSupportedObjectsRes 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 @IsobusVTMessageTypes.GetSupportedObjectsRes 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 @IsobusVTMessageTypes.GetSupportedObjectsRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetSupportedObjectsRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetSupportedObjectsRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetSupportedObjectsRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetSupportedObjectsRes.");
+  }
+  return 0;
+}
+
+void GetSupportedObjectsRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", numberOfBytesToFollow := ");
+single_value->field_numberOfBytesToFollow.log();
+TTCN_Logger::log_event_str(", supportedObjectTypes := ");
+single_value->field_supportedObjectTypes.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void GetSupportedObjectsRes_template::log_match(const GetSupportedObjectsRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_numberOfBytesToFollow.match(match_value.numberOfBytesToFollow(), legacy)){
+TTCN_Logger::log_logmatch_info(".numberOfBytesToFollow");
+single_value->field_numberOfBytesToFollow.log_match(match_value.numberOfBytesToFollow(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_supportedObjectTypes.match(match_value.supportedObjectTypes(), legacy)){
+TTCN_Logger::log_logmatch_info(".supportedObjectTypes");
+single_value->field_supportedObjectTypes.log_match(match_value.supportedObjectTypes(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", numberOfBytesToFollow := ");
+single_value->field_numberOfBytesToFollow.log_match(match_value.numberOfBytesToFollow(), legacy);
+TTCN_Logger::log_event_str(", supportedObjectTypes := ");
+single_value->field_supportedObjectTypes.log_match(match_value.supportedObjectTypes(), 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 GetSupportedObjectsRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_numberOfBytesToFollow.encode_text(text_buf);
+single_value->field_supportedObjectTypes.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 @IsobusVTMessageTypes.GetSupportedObjectsRes.");
+}
+}
+
+void GetSupportedObjectsRes_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_vtfunction.decode_text(text_buf);
+single_value->field_numberOfBytesToFollow.decode_text(text_buf);
+single_value->field_supportedObjectTypes.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 GetSupportedObjectsRes_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 @IsobusVTMessageTypes.GetSupportedObjectsRes.");
+}
+}
+
+void GetSupportedObjectsRes_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: {
+    GetSupportedObjectsRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.GetSupportedObjectsRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) numberOfBytesToFollow().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) supportedObjectTypes().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "numberOfBytesToFollow")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          numberOfBytesToFollow().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(), "supportedObjectTypes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          supportedObjectTypes().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 @IsobusVTMessageTypes.GetSupportedObjectsRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.GetSupportedObjectsRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void GetSupportedObjectsRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetSupportedObjectsRes");
+single_value->field_numberOfBytesToFollow.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetSupportedObjectsRes");
+single_value->field_supportedObjectTypes.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetSupportedObjectsRes");
+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 : "@IsobusVTMessageTypes.GetSupportedObjectsRes");
+}
+
+boolean GetSupportedObjectsRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean GetSupportedObjectsRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+StoreVersionRes__errorCodesType::StoreVersionRes__errorCodesType()
+{
+}
+
+StoreVersionRes__errorCodesType::StoreVersionRes__errorCodesType(const BOOLEAN& par_reserved0,
+    const BOOLEAN& par_versionLabelIsNotCorrect,
+    const BOOLEAN& par_insufficientMemoryAvailable,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved4,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7)
+  :   field_reserved0(par_reserved0),
+  field_versionLabelIsNotCorrect(par_versionLabelIsNotCorrect),
+  field_insufficientMemoryAvailable(par_insufficientMemoryAvailable),
+  field_anyOtherError(par_anyOtherError),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7)
+{
+}
+
+StoreVersionRes__errorCodesType::StoreVersionRes__errorCodesType(const StoreVersionRes__errorCodesType& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.StoreVersionRes_errorCodesType.");
+if (other_value.reserved0().is_bound()) field_reserved0 = other_value.reserved0();
+else field_reserved0.clean_up();
+if (other_value.versionLabelIsNotCorrect().is_bound()) field_versionLabelIsNotCorrect = other_value.versionLabelIsNotCorrect();
+else field_versionLabelIsNotCorrect.clean_up();
+if (other_value.insufficientMemoryAvailable().is_bound()) field_insufficientMemoryAvailable = other_value.insufficientMemoryAvailable();
+else field_insufficientMemoryAvailable.clean_up();
+if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+else field_anyOtherError.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+}
+
+void StoreVersionRes__errorCodesType::clean_up()
+{
+field_reserved0.clean_up();
+field_versionLabelIsNotCorrect.clean_up();
+field_insufficientMemoryAvailable.clean_up();
+field_anyOtherError.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+}
+
+const TTCN_Typedescriptor_t* StoreVersionRes__errorCodesType::get_descriptor() const { return &StoreVersionRes__errorCodesType_descr_; }
+StoreVersionRes__errorCodesType& StoreVersionRes__errorCodesType::operator=(const StoreVersionRes__errorCodesType& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.StoreVersionRes_errorCodesType.");
+  if (other_value.reserved0().is_bound()) field_reserved0 = other_value.reserved0();
+  else field_reserved0.clean_up();
+  if (other_value.versionLabelIsNotCorrect().is_bound()) field_versionLabelIsNotCorrect = other_value.versionLabelIsNotCorrect();
+  else field_versionLabelIsNotCorrect.clean_up();
+  if (other_value.insufficientMemoryAvailable().is_bound()) field_insufficientMemoryAvailable = other_value.insufficientMemoryAvailable();
+  else field_insufficientMemoryAvailable.clean_up();
+  if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+  else field_anyOtherError.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+}
+return *this;
+}
+
+boolean StoreVersionRes__errorCodesType::operator==(const StoreVersionRes__errorCodesType& other_value) const
+{
+return field_reserved0==other_value.field_reserved0
+  && field_versionLabelIsNotCorrect==other_value.field_versionLabelIsNotCorrect
+  && field_insufficientMemoryAvailable==other_value.field_insufficientMemoryAvailable
+  && field_anyOtherError==other_value.field_anyOtherError
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7;
+}
+
+boolean StoreVersionRes__errorCodesType::is_bound() const
+{
+return (field_reserved0.is_bound())
+  || (field_versionLabelIsNotCorrect.is_bound())
+  || (field_insufficientMemoryAvailable.is_bound())
+  || (field_anyOtherError.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound());
+}
+boolean StoreVersionRes__errorCodesType::is_value() const
+{
+return field_reserved0.is_value()
+  && field_versionLabelIsNotCorrect.is_value()
+  && field_insufficientMemoryAvailable.is_value()
+  && field_anyOtherError.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value();
+}
+void StoreVersionRes__errorCodesType::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ reserved0 := ");
+field_reserved0.log();
+TTCN_Logger::log_event_str(", versionLabelIsNotCorrect := ");
+field_versionLabelIsNotCorrect.log();
+TTCN_Logger::log_event_str(", insufficientMemoryAvailable := ");
+field_insufficientMemoryAvailable.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void StoreVersionRes__errorCodesType::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.StoreVersionRes_errorCodesType has 8 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) reserved0().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) versionLabelIsNotCorrect().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) insufficientMemoryAvailable().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "reserved0")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved0().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(), "versionLabelIsNotCorrect")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          versionLabelIsNotCorrect().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(), "insufficientMemoryAvailable")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          insufficientMemoryAvailable().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.StoreVersionRes_errorCodesType: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.StoreVersionRes_errorCodesType");
+  }
+}
+
+void StoreVersionRes__errorCodesType::set_implicit_omit()
+{
+if (reserved0().is_bound()) reserved0().set_implicit_omit();
+if (versionLabelIsNotCorrect().is_bound()) versionLabelIsNotCorrect().set_implicit_omit();
+if (insufficientMemoryAvailable().is_bound()) insufficientMemoryAvailable().set_implicit_omit();
+if (anyOtherError().is_bound()) anyOtherError().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+}
+
+void StoreVersionRes__errorCodesType::encode_text(Text_Buf& text_buf) const
+{
+field_reserved0.encode_text(text_buf);
+field_versionLabelIsNotCorrect.encode_text(text_buf);
+field_insufficientMemoryAvailable.encode_text(text_buf);
+field_anyOtherError.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+}
+
+void StoreVersionRes__errorCodesType::decode_text(Text_Buf& text_buf)
+{
+field_reserved0.decode_text(text_buf);
+field_versionLabelIsNotCorrect.decode_text(text_buf);
+field_insufficientMemoryAvailable.decode_text(text_buf);
+field_anyOtherError.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+}
+
+void StoreVersionRes__errorCodesType::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void StoreVersionRes__errorCodesType::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int StoreVersionRes__errorCodesType::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved0.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_versionLabelIsNotCorrect.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_insufficientMemoryAvailable.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_anyOtherError.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int StoreVersionRes__errorCodesType::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_reserved0.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_versionLabelIsNotCorrect.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_insufficientMemoryAvailable.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_anyOtherError.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved4.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved5.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved6.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved7.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct StoreVersionRes__errorCodesType_template::single_value_struct {
+BOOLEAN_template field_reserved0;
+BOOLEAN_template field_versionLabelIsNotCorrect;
+BOOLEAN_template field_insufficientMemoryAvailable;
+BOOLEAN_template field_anyOtherError;
+BOOLEAN_template field_reserved4;
+BOOLEAN_template field_reserved5;
+BOOLEAN_template field_reserved6;
+BOOLEAN_template field_reserved7;
+};
+
+void StoreVersionRes__errorCodesType_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_reserved0 = ANY_VALUE;
+single_value->field_versionLabelIsNotCorrect = ANY_VALUE;
+single_value->field_insufficientMemoryAvailable = ANY_VALUE;
+single_value->field_anyOtherError = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+}
+}
+}
+
+void StoreVersionRes__errorCodesType_template::copy_value(const StoreVersionRes__errorCodesType& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.reserved0().is_bound()) {
+  single_value->field_reserved0 = other_value.reserved0();
+} else {
+  single_value->field_reserved0.clean_up();
+}
+if (other_value.versionLabelIsNotCorrect().is_bound()) {
+  single_value->field_versionLabelIsNotCorrect = other_value.versionLabelIsNotCorrect();
+} else {
+  single_value->field_versionLabelIsNotCorrect.clean_up();
+}
+if (other_value.insufficientMemoryAvailable().is_bound()) {
+  single_value->field_insufficientMemoryAvailable = other_value.insufficientMemoryAvailable();
+} else {
+  single_value->field_insufficientMemoryAvailable.clean_up();
+}
+if (other_value.anyOtherError().is_bound()) {
+  single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+  single_value->field_anyOtherError.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void StoreVersionRes__errorCodesType_template::copy_template(const StoreVersionRes__errorCodesType_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.reserved0().get_selection()) {
+single_value->field_reserved0 = other_value.reserved0();
+} else {
+single_value->field_reserved0.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.versionLabelIsNotCorrect().get_selection()) {
+single_value->field_versionLabelIsNotCorrect = other_value.versionLabelIsNotCorrect();
+} else {
+single_value->field_versionLabelIsNotCorrect.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.insufficientMemoryAvailable().get_selection()) {
+single_value->field_insufficientMemoryAvailable = other_value.insufficientMemoryAvailable();
+} else {
+single_value->field_insufficientMemoryAvailable.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.anyOtherError().get_selection()) {
+single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+single_value->field_anyOtherError.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new StoreVersionRes__errorCodesType_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.StoreVersionRes_errorCodesType.");
+break;
+}
+set_selection(other_value);
+}
+
+StoreVersionRes__errorCodesType_template::StoreVersionRes__errorCodesType_template()
+{
+}
+
+StoreVersionRes__errorCodesType_template::StoreVersionRes__errorCodesType_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+StoreVersionRes__errorCodesType_template::StoreVersionRes__errorCodesType_template(const StoreVersionRes__errorCodesType& other_value)
+{
+copy_value(other_value);
+}
+
+StoreVersionRes__errorCodesType_template::StoreVersionRes__errorCodesType_template(const OPTIONAL<StoreVersionRes__errorCodesType>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const StoreVersionRes__errorCodesType&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.StoreVersionRes_errorCodesType from an unbound optional field.");
+}
+}
+
+StoreVersionRes__errorCodesType_template::StoreVersionRes__errorCodesType_template(const StoreVersionRes__errorCodesType_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+StoreVersionRes__errorCodesType_template::~StoreVersionRes__errorCodesType_template()
+{
+clean_up();
+}
+
+StoreVersionRes__errorCodesType_template& StoreVersionRes__errorCodesType_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+StoreVersionRes__errorCodesType_template& StoreVersionRes__errorCodesType_template::operator=(const StoreVersionRes__errorCodesType& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+StoreVersionRes__errorCodesType_template& StoreVersionRes__errorCodesType_template::operator=(const OPTIONAL<StoreVersionRes__errorCodesType>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const StoreVersionRes__errorCodesType&)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 @IsobusVTMessageTypes.StoreVersionRes_errorCodesType.");
+}
+return *this;
+}
+
+StoreVersionRes__errorCodesType_template& StoreVersionRes__errorCodesType_template::operator=(const StoreVersionRes__errorCodesType_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean StoreVersionRes__errorCodesType_template::match(const StoreVersionRes__errorCodesType& 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.reserved0().is_bound()) return FALSE;
+if(!single_value->field_reserved0.match(other_value.reserved0(), legacy))return FALSE;
+if(!other_value.versionLabelIsNotCorrect().is_bound()) return FALSE;
+if(!single_value->field_versionLabelIsNotCorrect.match(other_value.versionLabelIsNotCorrect(), legacy))return FALSE;
+if(!other_value.insufficientMemoryAvailable().is_bound()) return FALSE;
+if(!single_value->field_insufficientMemoryAvailable.match(other_value.insufficientMemoryAvailable(), legacy))return FALSE;
+if(!other_value.anyOtherError().is_bound()) return FALSE;
+if(!single_value->field_anyOtherError.match(other_value.anyOtherError(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.StoreVersionRes_errorCodesType.");
+}
+return FALSE;
+}
+
+boolean StoreVersionRes__errorCodesType_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_reserved0.is_bound()
+
+ ||single_value->field_versionLabelIsNotCorrect.is_bound()
+
+ ||single_value->field_insufficientMemoryAvailable.is_bound()
+
+ ||single_value->field_anyOtherError.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+;
+}
+
+boolean StoreVersionRes__errorCodesType_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_reserved0.is_value()
+ &&single_value->field_versionLabelIsNotCorrect.is_value()
+ &&single_value->field_insufficientMemoryAvailable.is_value()
+ &&single_value->field_anyOtherError.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value();
+}
+
+void StoreVersionRes__errorCodesType_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+StoreVersionRes__errorCodesType StoreVersionRes__errorCodesType_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 @IsobusVTMessageTypes.StoreVersionRes_errorCodesType.");
+StoreVersionRes__errorCodesType ret_val;
+if (single_value->field_reserved0.is_bound()) {
+ret_val.reserved0() = single_value->field_reserved0.valueof();
+}
+if (single_value->field_versionLabelIsNotCorrect.is_bound()) {
+ret_val.versionLabelIsNotCorrect() = single_value->field_versionLabelIsNotCorrect.valueof();
+}
+if (single_value->field_insufficientMemoryAvailable.is_bound()) {
+ret_val.insufficientMemoryAvailable() = single_value->field_insufficientMemoryAvailable.valueof();
+}
+if (single_value->field_anyOtherError.is_bound()) {
+ret_val.anyOtherError() = single_value->field_anyOtherError.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+return ret_val;
+}
+
+void StoreVersionRes__errorCodesType_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.StoreVersionRes_errorCodesType.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new StoreVersionRes__errorCodesType_template[list_length];
+}
+
+StoreVersionRes__errorCodesType_template& StoreVersionRes__errorCodesType_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.StoreVersionRes_errorCodesType.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.StoreVersionRes_errorCodesType.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& StoreVersionRes__errorCodesType_template::reserved0()
+{
+set_specific();
+return single_value->field_reserved0;
+}
+
+const BOOLEAN_template& StoreVersionRes__errorCodesType_template::reserved0() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved0 of a non-specific template of type @IsobusVTMessageTypes.StoreVersionRes_errorCodesType.");
+return single_value->field_reserved0;
+}
+
+BOOLEAN_template& StoreVersionRes__errorCodesType_template::versionLabelIsNotCorrect()
+{
+set_specific();
+return single_value->field_versionLabelIsNotCorrect;
+}
+
+const BOOLEAN_template& StoreVersionRes__errorCodesType_template::versionLabelIsNotCorrect() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field versionLabelIsNotCorrect of a non-specific template of type @IsobusVTMessageTypes.StoreVersionRes_errorCodesType.");
+return single_value->field_versionLabelIsNotCorrect;
+}
+
+BOOLEAN_template& StoreVersionRes__errorCodesType_template::insufficientMemoryAvailable()
+{
+set_specific();
+return single_value->field_insufficientMemoryAvailable;
+}
+
+const BOOLEAN_template& StoreVersionRes__errorCodesType_template::insufficientMemoryAvailable() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field insufficientMemoryAvailable of a non-specific template of type @IsobusVTMessageTypes.StoreVersionRes_errorCodesType.");
+return single_value->field_insufficientMemoryAvailable;
+}
+
+BOOLEAN_template& StoreVersionRes__errorCodesType_template::anyOtherError()
+{
+set_specific();
+return single_value->field_anyOtherError;
+}
+
+const BOOLEAN_template& StoreVersionRes__errorCodesType_template::anyOtherError() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field anyOtherError of a non-specific template of type @IsobusVTMessageTypes.StoreVersionRes_errorCodesType.");
+return single_value->field_anyOtherError;
+}
+
+BOOLEAN_template& StoreVersionRes__errorCodesType_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const BOOLEAN_template& StoreVersionRes__errorCodesType_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.StoreVersionRes_errorCodesType.");
+return single_value->field_reserved4;
+}
+
+BOOLEAN_template& StoreVersionRes__errorCodesType_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const BOOLEAN_template& StoreVersionRes__errorCodesType_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.StoreVersionRes_errorCodesType.");
+return single_value->field_reserved5;
+}
+
+BOOLEAN_template& StoreVersionRes__errorCodesType_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const BOOLEAN_template& StoreVersionRes__errorCodesType_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.StoreVersionRes_errorCodesType.");
+return single_value->field_reserved6;
+}
+
+BOOLEAN_template& StoreVersionRes__errorCodesType_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const BOOLEAN_template& StoreVersionRes__errorCodesType_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.StoreVersionRes_errorCodesType.");
+return single_value->field_reserved7;
+}
+
+int StoreVersionRes__errorCodesType_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.StoreVersionRes_errorCodesType which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.StoreVersionRes_errorCodesType 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 @IsobusVTMessageTypes.StoreVersionRes_errorCodesType containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.StoreVersionRes_errorCodesType containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.StoreVersionRes_errorCodesType containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.StoreVersionRes_errorCodesType containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.StoreVersionRes_errorCodesType.");
+  }
+  return 0;
+}
+
+void StoreVersionRes__errorCodesType_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ reserved0 := ");
+single_value->field_reserved0.log();
+TTCN_Logger::log_event_str(", versionLabelIsNotCorrect := ");
+single_value->field_versionLabelIsNotCorrect.log();
+TTCN_Logger::log_event_str(", insufficientMemoryAvailable := ");
+single_value->field_insufficientMemoryAvailable.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void StoreVersionRes__errorCodesType_template::log_match(const StoreVersionRes__errorCodesType& 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_reserved0.match(match_value.reserved0(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved0");
+single_value->field_reserved0.log_match(match_value.reserved0(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_versionLabelIsNotCorrect.match(match_value.versionLabelIsNotCorrect(), legacy)){
+TTCN_Logger::log_logmatch_info(".versionLabelIsNotCorrect");
+single_value->field_versionLabelIsNotCorrect.log_match(match_value.versionLabelIsNotCorrect(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_insufficientMemoryAvailable.match(match_value.insufficientMemoryAvailable(), legacy)){
+TTCN_Logger::log_logmatch_info(".insufficientMemoryAvailable");
+single_value->field_insufficientMemoryAvailable.log_match(match_value.insufficientMemoryAvailable(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_anyOtherError.match(match_value.anyOtherError(), legacy)){
+TTCN_Logger::log_logmatch_info(".anyOtherError");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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("{ reserved0 := ");
+single_value->field_reserved0.log_match(match_value.reserved0(), legacy);
+TTCN_Logger::log_event_str(", versionLabelIsNotCorrect := ");
+single_value->field_versionLabelIsNotCorrect.log_match(match_value.versionLabelIsNotCorrect(), legacy);
+TTCN_Logger::log_event_str(", insufficientMemoryAvailable := ");
+single_value->field_insufficientMemoryAvailable.log_match(match_value.insufficientMemoryAvailable(), legacy);
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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 StoreVersionRes__errorCodesType_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_reserved0.encode_text(text_buf);
+single_value->field_versionLabelIsNotCorrect.encode_text(text_buf);
+single_value->field_insufficientMemoryAvailable.encode_text(text_buf);
+single_value->field_anyOtherError.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.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 @IsobusVTMessageTypes.StoreVersionRes_errorCodesType.");
+}
+}
+
+void StoreVersionRes__errorCodesType_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_reserved0.decode_text(text_buf);
+single_value->field_versionLabelIsNotCorrect.decode_text(text_buf);
+single_value->field_insufficientMemoryAvailable.decode_text(text_buf);
+single_value->field_anyOtherError.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.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 StoreVersionRes__errorCodesType_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 @IsobusVTMessageTypes.StoreVersionRes_errorCodesType.");
+}
+}
+
+void StoreVersionRes__errorCodesType_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: {
+    StoreVersionRes__errorCodesType_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.StoreVersionRes_errorCodesType has 8 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) reserved0().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) versionLabelIsNotCorrect().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) insufficientMemoryAvailable().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "reserved0")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved0().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(), "versionLabelIsNotCorrect")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          versionLabelIsNotCorrect().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(), "insufficientMemoryAvailable")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          insufficientMemoryAvailable().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.StoreVersionRes_errorCodesType: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.StoreVersionRes_errorCodesType");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void StoreVersionRes__errorCodesType_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_reserved0.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.StoreVersionRes_errorCodesType");
+single_value->field_versionLabelIsNotCorrect.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.StoreVersionRes_errorCodesType");
+single_value->field_insufficientMemoryAvailable.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.StoreVersionRes_errorCodesType");
+single_value->field_anyOtherError.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.StoreVersionRes_errorCodesType");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.StoreVersionRes_errorCodesType");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.StoreVersionRes_errorCodesType");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.StoreVersionRes_errorCodesType");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.StoreVersionRes_errorCodesType");
+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 : "@IsobusVTMessageTypes.StoreVersionRes_errorCodesType");
+}
+
+boolean StoreVersionRes__errorCodesType_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean StoreVersionRes__errorCodesType_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+StoreVersionRes::StoreVersionRes()
+{
+}
+
+StoreVersionRes::StoreVersionRes(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_reserved2,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const StoreVersionRes__errorCodesType& par_errorCodes,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_reserved2(par_reserved2),
+  field_reserved3(par_reserved3),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_errorCodes(par_errorCodes),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+StoreVersionRes::StoreVersionRes(const StoreVersionRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.StoreVersionRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+else field_reserved2.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+else field_errorCodes.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void StoreVersionRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_reserved2.clean_up();
+field_reserved3.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_errorCodes.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* StoreVersionRes::get_descriptor() const { return &StoreVersionRes_descr_; }
+StoreVersionRes& StoreVersionRes::operator=(const StoreVersionRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.StoreVersionRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+  else field_reserved2.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+  else field_errorCodes.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean StoreVersionRes::operator==(const StoreVersionRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_reserved2==other_value.field_reserved2
+  && field_reserved3==other_value.field_reserved3
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_errorCodes==other_value.field_errorCodes
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean StoreVersionRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_reserved2.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_errorCodes.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean StoreVersionRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_reserved2.is_value()
+  && field_reserved3.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_errorCodes.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void StoreVersionRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void StoreVersionRes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.StoreVersionRes has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.StoreVersionRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.StoreVersionRes");
+  }
+}
+
+void StoreVersionRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (reserved2().is_bound()) reserved2().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (errorCodes().is_bound()) errorCodes().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void StoreVersionRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_reserved2.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_errorCodes.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void StoreVersionRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_reserved2.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_errorCodes.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void StoreVersionRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void StoreVersionRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int StoreVersionRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, StoreVersionRes_reserved2_descr_.raw->forceomit);
+  decoded_field_length = field_reserved2.RAW_decode(StoreVersionRes_reserved2_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, StoreVersionRes_reserved3_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(StoreVersionRes_reserved3_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, StoreVersionRes_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(StoreVersionRes_reserved4_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, StoreVersionRes_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(StoreVersionRes_reserved5_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, StoreVersionRes__errorCodesType_descr_.raw->forceomit);
+  decoded_field_length = field_errorCodes.RAW_decode(StoreVersionRes__errorCodesType_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, StoreVersionRes_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(StoreVersionRes_reserved7_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, StoreVersionRes_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(StoreVersionRes_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int StoreVersionRes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, StoreVersionRes_reserved2_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, StoreVersionRes_reserved3_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, StoreVersionRes_reserved4_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, StoreVersionRes_reserved5_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, StoreVersionRes__errorCodesType_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, StoreVersionRes_reserved7_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, StoreVersionRes_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved2.RAW_encode(StoreVersionRes_reserved2_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved3.RAW_encode(StoreVersionRes_reserved3_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved4.RAW_encode(StoreVersionRes_reserved4_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved5.RAW_encode(StoreVersionRes_reserved5_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_errorCodes.RAW_encode(StoreVersionRes__errorCodesType_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved7.RAW_encode(StoreVersionRes_reserved7_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved8.RAW_encode(StoreVersionRes_reserved8_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct StoreVersionRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+OCTETSTRING_template field_reserved2;
+OCTETSTRING_template field_reserved3;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+StoreVersionRes__errorCodesType_template field_errorCodes;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void StoreVersionRes_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_vtfunction = ANY_VALUE;
+single_value->field_reserved2 = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_errorCodes = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void StoreVersionRes_template::copy_value(const StoreVersionRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.reserved2().is_bound()) {
+  single_value->field_reserved2 = other_value.reserved2();
+} else {
+  single_value->field_reserved2.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.errorCodes().is_bound()) {
+  single_value->field_errorCodes = other_value.errorCodes();
+} else {
+  single_value->field_errorCodes.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void StoreVersionRes_template::copy_template(const StoreVersionRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved2().get_selection()) {
+single_value->field_reserved2 = other_value.reserved2();
+} else {
+single_value->field_reserved2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.errorCodes().get_selection()) {
+single_value->field_errorCodes = other_value.errorCodes();
+} else {
+single_value->field_errorCodes.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new StoreVersionRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.StoreVersionRes.");
+break;
+}
+set_selection(other_value);
+}
+
+StoreVersionRes_template::StoreVersionRes_template()
+{
+}
+
+StoreVersionRes_template::StoreVersionRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+StoreVersionRes_template::StoreVersionRes_template(const StoreVersionRes& other_value)
+{
+copy_value(other_value);
+}
+
+StoreVersionRes_template::StoreVersionRes_template(const OPTIONAL<StoreVersionRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const StoreVersionRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.StoreVersionRes from an unbound optional field.");
+}
+}
+
+StoreVersionRes_template::StoreVersionRes_template(const StoreVersionRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+StoreVersionRes_template::~StoreVersionRes_template()
+{
+clean_up();
+}
+
+StoreVersionRes_template& StoreVersionRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+StoreVersionRes_template& StoreVersionRes_template::operator=(const StoreVersionRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+StoreVersionRes_template& StoreVersionRes_template::operator=(const OPTIONAL<StoreVersionRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const StoreVersionRes&)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 @IsobusVTMessageTypes.StoreVersionRes.");
+}
+return *this;
+}
+
+StoreVersionRes_template& StoreVersionRes_template::operator=(const StoreVersionRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean StoreVersionRes_template::match(const StoreVersionRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.reserved2().is_bound()) return FALSE;
+if(!single_value->field_reserved2.match(other_value.reserved2(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.errorCodes().is_bound()) return FALSE;
+if(!single_value->field_errorCodes.match(other_value.errorCodes(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.StoreVersionRes.");
+}
+return FALSE;
+}
+
+boolean StoreVersionRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_reserved2.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_errorCodes.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean StoreVersionRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_reserved2.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_errorCodes.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void StoreVersionRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+StoreVersionRes StoreVersionRes_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 @IsobusVTMessageTypes.StoreVersionRes.");
+StoreVersionRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_reserved2.is_bound()) {
+ret_val.reserved2() = single_value->field_reserved2.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_errorCodes.is_bound()) {
+ret_val.errorCodes() = single_value->field_errorCodes.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void StoreVersionRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.StoreVersionRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new StoreVersionRes_template[list_length];
+}
+
+StoreVersionRes_template& StoreVersionRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.StoreVersionRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.StoreVersionRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& StoreVersionRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& StoreVersionRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.StoreVersionRes.");
+return single_value->field_vtfunction;
+}
+
+OCTETSTRING_template& StoreVersionRes_template::reserved2()
+{
+set_specific();
+return single_value->field_reserved2;
+}
+
+const OCTETSTRING_template& StoreVersionRes_template::reserved2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved2 of a non-specific template of type @IsobusVTMessageTypes.StoreVersionRes.");
+return single_value->field_reserved2;
+}
+
+OCTETSTRING_template& StoreVersionRes_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const OCTETSTRING_template& StoreVersionRes_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.StoreVersionRes.");
+return single_value->field_reserved3;
+}
+
+OCTETSTRING_template& StoreVersionRes_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& StoreVersionRes_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.StoreVersionRes.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& StoreVersionRes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& StoreVersionRes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.StoreVersionRes.");
+return single_value->field_reserved5;
+}
+
+StoreVersionRes__errorCodesType_template& StoreVersionRes_template::errorCodes()
+{
+set_specific();
+return single_value->field_errorCodes;
+}
+
+const StoreVersionRes__errorCodesType_template& StoreVersionRes_template::errorCodes() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field errorCodes of a non-specific template of type @IsobusVTMessageTypes.StoreVersionRes.");
+return single_value->field_errorCodes;
+}
+
+OCTETSTRING_template& StoreVersionRes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& StoreVersionRes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.StoreVersionRes.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& StoreVersionRes_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& StoreVersionRes_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.StoreVersionRes.");
+return single_value->field_reserved8;
+}
+
+int StoreVersionRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.StoreVersionRes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.StoreVersionRes 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 @IsobusVTMessageTypes.StoreVersionRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.StoreVersionRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.StoreVersionRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.StoreVersionRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.StoreVersionRes.");
+  }
+  return 0;
+}
+
+void StoreVersionRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void StoreVersionRes_template::log_match(const StoreVersionRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved2.match(match_value.reserved2(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved2");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_errorCodes.match(match_value.errorCodes(), legacy)){
+TTCN_Logger::log_logmatch_info(".errorCodes");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 StoreVersionRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_reserved2.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_errorCodes.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.StoreVersionRes.");
+}
+}
+
+void StoreVersionRes_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_vtfunction.decode_text(text_buf);
+single_value->field_reserved2.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_errorCodes.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 StoreVersionRes_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 @IsobusVTMessageTypes.StoreVersionRes.");
+}
+}
+
+void StoreVersionRes_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: {
+    StoreVersionRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.StoreVersionRes has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.StoreVersionRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.StoreVersionRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void StoreVersionRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.StoreVersionRes");
+single_value->field_reserved2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.StoreVersionRes");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.StoreVersionRes");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.StoreVersionRes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.StoreVersionRes");
+single_value->field_errorCodes.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.StoreVersionRes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.StoreVersionRes");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.StoreVersionRes");
+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 : "@IsobusVTMessageTypes.StoreVersionRes");
+}
+
+boolean StoreVersionRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean StoreVersionRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+StoreVersionReq::StoreVersionReq()
+{
+}
+
+StoreVersionReq::StoreVersionReq(const INTEGER& par_vtfunction,
+    const CHARSTRING& par_versionLabel)
+  :   field_vtfunction(par_vtfunction),
+  field_versionLabel(par_versionLabel)
+{
+}
+
+StoreVersionReq::StoreVersionReq(const StoreVersionReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.StoreVersionReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.versionLabel().is_bound()) field_versionLabel = other_value.versionLabel();
+else field_versionLabel.clean_up();
+}
+
+void StoreVersionReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_versionLabel.clean_up();
+}
+
+const TTCN_Typedescriptor_t* StoreVersionReq::get_descriptor() const { return &StoreVersionReq_descr_; }
+StoreVersionReq& StoreVersionReq::operator=(const StoreVersionReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.StoreVersionReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.versionLabel().is_bound()) field_versionLabel = other_value.versionLabel();
+  else field_versionLabel.clean_up();
+}
+return *this;
+}
+
+boolean StoreVersionReq::operator==(const StoreVersionReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_versionLabel==other_value.field_versionLabel;
+}
+
+boolean StoreVersionReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_versionLabel.is_bound());
+}
+boolean StoreVersionReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_versionLabel.is_value();
+}
+void StoreVersionReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", versionLabel := ");
+field_versionLabel.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void StoreVersionReq::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 @IsobusVTMessageTypes.StoreVersionReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) versionLabel().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "versionLabel")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          versionLabel().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 @IsobusVTMessageTypes.StoreVersionReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.StoreVersionReq");
+  }
+}
+
+void StoreVersionReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (versionLabel().is_bound()) versionLabel().set_implicit_omit();
+}
+
+void StoreVersionReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_versionLabel.encode_text(text_buf);
+}
+
+void StoreVersionReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_versionLabel.decode_text(text_buf);
+}
+
+void StoreVersionReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void StoreVersionReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int StoreVersionReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, VersionLabel7Char_descr_.raw->forceomit);
+  decoded_field_length = field_versionLabel.RAW_decode(VersionLabel7Char_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 StoreVersionReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, VersionLabel7Char_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_versionLabel.RAW_encode(VersionLabel7Char_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct StoreVersionReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+CHARSTRING_template field_versionLabel;
+};
+
+void StoreVersionReq_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_vtfunction = ANY_VALUE;
+single_value->field_versionLabel = ANY_VALUE;
+}
+}
+}
+
+void StoreVersionReq_template::copy_value(const StoreVersionReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.versionLabel().is_bound()) {
+  single_value->field_versionLabel = other_value.versionLabel();
+} else {
+  single_value->field_versionLabel.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void StoreVersionReq_template::copy_template(const StoreVersionReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.versionLabel().get_selection()) {
+single_value->field_versionLabel = other_value.versionLabel();
+} else {
+single_value->field_versionLabel.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new StoreVersionReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.StoreVersionReq.");
+break;
+}
+set_selection(other_value);
+}
+
+StoreVersionReq_template::StoreVersionReq_template()
+{
+}
+
+StoreVersionReq_template::StoreVersionReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+StoreVersionReq_template::StoreVersionReq_template(const StoreVersionReq& other_value)
+{
+copy_value(other_value);
+}
+
+StoreVersionReq_template::StoreVersionReq_template(const OPTIONAL<StoreVersionReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const StoreVersionReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.StoreVersionReq from an unbound optional field.");
+}
+}
+
+StoreVersionReq_template::StoreVersionReq_template(const StoreVersionReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+StoreVersionReq_template::~StoreVersionReq_template()
+{
+clean_up();
+}
+
+StoreVersionReq_template& StoreVersionReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+StoreVersionReq_template& StoreVersionReq_template::operator=(const StoreVersionReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+StoreVersionReq_template& StoreVersionReq_template::operator=(const OPTIONAL<StoreVersionReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const StoreVersionReq&)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 @IsobusVTMessageTypes.StoreVersionReq.");
+}
+return *this;
+}
+
+StoreVersionReq_template& StoreVersionReq_template::operator=(const StoreVersionReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean StoreVersionReq_template::match(const StoreVersionReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.versionLabel().is_bound()) return FALSE;
+if(!single_value->field_versionLabel.match(other_value.versionLabel(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.StoreVersionReq.");
+}
+return FALSE;
+}
+
+boolean StoreVersionReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_versionLabel.is_bound()
+;
+}
+
+boolean StoreVersionReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_versionLabel.is_value();
+}
+
+void StoreVersionReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+StoreVersionReq StoreVersionReq_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 @IsobusVTMessageTypes.StoreVersionReq.");
+StoreVersionReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_versionLabel.is_bound()) {
+ret_val.versionLabel() = single_value->field_versionLabel.valueof();
+}
+return ret_val;
+}
+
+void StoreVersionReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.StoreVersionReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new StoreVersionReq_template[list_length];
+}
+
+StoreVersionReq_template& StoreVersionReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.StoreVersionReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.StoreVersionReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& StoreVersionReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& StoreVersionReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.StoreVersionReq.");
+return single_value->field_vtfunction;
+}
+
+CHARSTRING_template& StoreVersionReq_template::versionLabel()
+{
+set_specific();
+return single_value->field_versionLabel;
+}
+
+const CHARSTRING_template& StoreVersionReq_template::versionLabel() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field versionLabel of a non-specific template of type @IsobusVTMessageTypes.StoreVersionReq.");
+return single_value->field_versionLabel;
+}
+
+int StoreVersionReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.StoreVersionReq 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 @IsobusVTMessageTypes.StoreVersionReq 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 @IsobusVTMessageTypes.StoreVersionReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.StoreVersionReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.StoreVersionReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.StoreVersionReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.StoreVersionReq.");
+  }
+  return 0;
+}
+
+void StoreVersionReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", versionLabel := ");
+single_value->field_versionLabel.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void StoreVersionReq_template::log_match(const StoreVersionReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_versionLabel.match(match_value.versionLabel(), legacy)){
+TTCN_Logger::log_logmatch_info(".versionLabel");
+single_value->field_versionLabel.log_match(match_value.versionLabel(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", versionLabel := ");
+single_value->field_versionLabel.log_match(match_value.versionLabel(), 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 StoreVersionReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_versionLabel.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 @IsobusVTMessageTypes.StoreVersionReq.");
+}
+}
+
+void StoreVersionReq_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_vtfunction.decode_text(text_buf);
+single_value->field_versionLabel.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 StoreVersionReq_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 @IsobusVTMessageTypes.StoreVersionReq.");
+}
+}
+
+void StoreVersionReq_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: {
+    StoreVersionReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.StoreVersionReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) versionLabel().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "versionLabel")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          versionLabel().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 @IsobusVTMessageTypes.StoreVersionReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.StoreVersionReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void StoreVersionReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.StoreVersionReq");
+single_value->field_versionLabel.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.StoreVersionReq");
+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 : "@IsobusVTMessageTypes.StoreVersionReq");
+}
+
+boolean StoreVersionReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean StoreVersionReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+WorkingSetMaintenanceBitMask::WorkingSetMaintenanceBitMask()
+{
+}
+
+WorkingSetMaintenanceBitMask::WorkingSetMaintenanceBitMask(const BOOLEAN& par_initiatingWorkingSetMaintenance,
+    const BOOLEAN& par_reserved1,
+    const BOOLEAN& par_reserved2,
+    const BOOLEAN& par_reserved3,
+    const BOOLEAN& par_reserved4,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7)
+  :   field_initiatingWorkingSetMaintenance(par_initiatingWorkingSetMaintenance),
+  field_reserved1(par_reserved1),
+  field_reserved2(par_reserved2),
+  field_reserved3(par_reserved3),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7)
+{
+}
+
+WorkingSetMaintenanceBitMask::WorkingSetMaintenanceBitMask(const WorkingSetMaintenanceBitMask& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.WorkingSetMaintenanceBitMask.");
+if (other_value.initiatingWorkingSetMaintenance().is_bound()) field_initiatingWorkingSetMaintenance = other_value.initiatingWorkingSetMaintenance();
+else field_initiatingWorkingSetMaintenance.clean_up();
+if (other_value.reserved1().is_bound()) field_reserved1 = other_value.reserved1();
+else field_reserved1.clean_up();
+if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+else field_reserved2.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+}
+
+void WorkingSetMaintenanceBitMask::clean_up()
+{
+field_initiatingWorkingSetMaintenance.clean_up();
+field_reserved1.clean_up();
+field_reserved2.clean_up();
+field_reserved3.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+}
+
+const TTCN_Typedescriptor_t* WorkingSetMaintenanceBitMask::get_descriptor() const { return &WorkingSetMaintenanceBitMask_descr_; }
+WorkingSetMaintenanceBitMask& WorkingSetMaintenanceBitMask::operator=(const WorkingSetMaintenanceBitMask& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.WorkingSetMaintenanceBitMask.");
+  if (other_value.initiatingWorkingSetMaintenance().is_bound()) field_initiatingWorkingSetMaintenance = other_value.initiatingWorkingSetMaintenance();
+  else field_initiatingWorkingSetMaintenance.clean_up();
+  if (other_value.reserved1().is_bound()) field_reserved1 = other_value.reserved1();
+  else field_reserved1.clean_up();
+  if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+  else field_reserved2.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+}
+return *this;
+}
+
+boolean WorkingSetMaintenanceBitMask::operator==(const WorkingSetMaintenanceBitMask& other_value) const
+{
+return field_initiatingWorkingSetMaintenance==other_value.field_initiatingWorkingSetMaintenance
+  && field_reserved1==other_value.field_reserved1
+  && field_reserved2==other_value.field_reserved2
+  && field_reserved3==other_value.field_reserved3
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7;
+}
+
+boolean WorkingSetMaintenanceBitMask::is_bound() const
+{
+return (field_initiatingWorkingSetMaintenance.is_bound())
+  || (field_reserved1.is_bound())
+  || (field_reserved2.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound());
+}
+boolean WorkingSetMaintenanceBitMask::is_value() const
+{
+return field_initiatingWorkingSetMaintenance.is_value()
+  && field_reserved1.is_value()
+  && field_reserved2.is_value()
+  && field_reserved3.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value();
+}
+void WorkingSetMaintenanceBitMask::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ initiatingWorkingSetMaintenance := ");
+field_initiatingWorkingSetMaintenance.log();
+TTCN_Logger::log_event_str(", reserved1 := ");
+field_reserved1.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void WorkingSetMaintenanceBitMask::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.WorkingSetMaintenanceBitMask has 8 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) initiatingWorkingSetMaintenance().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved1().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "initiatingWorkingSetMaintenance")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          initiatingWorkingSetMaintenance().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(), "reserved1")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved1().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.WorkingSetMaintenanceBitMask: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.WorkingSetMaintenanceBitMask");
+  }
+}
+
+void WorkingSetMaintenanceBitMask::set_implicit_omit()
+{
+if (initiatingWorkingSetMaintenance().is_bound()) initiatingWorkingSetMaintenance().set_implicit_omit();
+if (reserved1().is_bound()) reserved1().set_implicit_omit();
+if (reserved2().is_bound()) reserved2().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+}
+
+void WorkingSetMaintenanceBitMask::encode_text(Text_Buf& text_buf) const
+{
+field_initiatingWorkingSetMaintenance.encode_text(text_buf);
+field_reserved1.encode_text(text_buf);
+field_reserved2.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+}
+
+void WorkingSetMaintenanceBitMask::decode_text(Text_Buf& text_buf)
+{
+field_initiatingWorkingSetMaintenance.decode_text(text_buf);
+field_reserved1.decode_text(text_buf);
+field_reserved2.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+}
+
+void WorkingSetMaintenanceBitMask::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void WorkingSetMaintenanceBitMask::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int WorkingSetMaintenanceBitMask::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_initiatingWorkingSetMaintenance.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved1.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved2.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int WorkingSetMaintenanceBitMask::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_initiatingWorkingSetMaintenance.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved1.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved2.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved3.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved4.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved5.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved6.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved7.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct WorkingSetMaintenanceBitMask_template::single_value_struct {
+BOOLEAN_template field_initiatingWorkingSetMaintenance;
+BOOLEAN_template field_reserved1;
+BOOLEAN_template field_reserved2;
+BOOLEAN_template field_reserved3;
+BOOLEAN_template field_reserved4;
+BOOLEAN_template field_reserved5;
+BOOLEAN_template field_reserved6;
+BOOLEAN_template field_reserved7;
+};
+
+void WorkingSetMaintenanceBitMask_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_initiatingWorkingSetMaintenance = ANY_VALUE;
+single_value->field_reserved1 = ANY_VALUE;
+single_value->field_reserved2 = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+}
+}
+}
+
+void WorkingSetMaintenanceBitMask_template::copy_value(const WorkingSetMaintenanceBitMask& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.initiatingWorkingSetMaintenance().is_bound()) {
+  single_value->field_initiatingWorkingSetMaintenance = other_value.initiatingWorkingSetMaintenance();
+} else {
+  single_value->field_initiatingWorkingSetMaintenance.clean_up();
+}
+if (other_value.reserved1().is_bound()) {
+  single_value->field_reserved1 = other_value.reserved1();
+} else {
+  single_value->field_reserved1.clean_up();
+}
+if (other_value.reserved2().is_bound()) {
+  single_value->field_reserved2 = other_value.reserved2();
+} else {
+  single_value->field_reserved2.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void WorkingSetMaintenanceBitMask_template::copy_template(const WorkingSetMaintenanceBitMask_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.initiatingWorkingSetMaintenance().get_selection()) {
+single_value->field_initiatingWorkingSetMaintenance = other_value.initiatingWorkingSetMaintenance();
+} else {
+single_value->field_initiatingWorkingSetMaintenance.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved1().get_selection()) {
+single_value->field_reserved1 = other_value.reserved1();
+} else {
+single_value->field_reserved1.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved2().get_selection()) {
+single_value->field_reserved2 = other_value.reserved2();
+} else {
+single_value->field_reserved2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new WorkingSetMaintenanceBitMask_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.WorkingSetMaintenanceBitMask.");
+break;
+}
+set_selection(other_value);
+}
+
+WorkingSetMaintenanceBitMask_template::WorkingSetMaintenanceBitMask_template()
+{
+}
+
+WorkingSetMaintenanceBitMask_template::WorkingSetMaintenanceBitMask_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+WorkingSetMaintenanceBitMask_template::WorkingSetMaintenanceBitMask_template(const WorkingSetMaintenanceBitMask& other_value)
+{
+copy_value(other_value);
+}
+
+WorkingSetMaintenanceBitMask_template::WorkingSetMaintenanceBitMask_template(const OPTIONAL<WorkingSetMaintenanceBitMask>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const WorkingSetMaintenanceBitMask&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.WorkingSetMaintenanceBitMask from an unbound optional field.");
+}
+}
+
+WorkingSetMaintenanceBitMask_template::WorkingSetMaintenanceBitMask_template(const WorkingSetMaintenanceBitMask_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+WorkingSetMaintenanceBitMask_template::~WorkingSetMaintenanceBitMask_template()
+{
+clean_up();
+}
+
+WorkingSetMaintenanceBitMask_template& WorkingSetMaintenanceBitMask_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+WorkingSetMaintenanceBitMask_template& WorkingSetMaintenanceBitMask_template::operator=(const WorkingSetMaintenanceBitMask& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+WorkingSetMaintenanceBitMask_template& WorkingSetMaintenanceBitMask_template::operator=(const OPTIONAL<WorkingSetMaintenanceBitMask>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const WorkingSetMaintenanceBitMask&)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 @IsobusVTMessageTypes.WorkingSetMaintenanceBitMask.");
+}
+return *this;
+}
+
+WorkingSetMaintenanceBitMask_template& WorkingSetMaintenanceBitMask_template::operator=(const WorkingSetMaintenanceBitMask_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean WorkingSetMaintenanceBitMask_template::match(const WorkingSetMaintenanceBitMask& 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.initiatingWorkingSetMaintenance().is_bound()) return FALSE;
+if(!single_value->field_initiatingWorkingSetMaintenance.match(other_value.initiatingWorkingSetMaintenance(), legacy))return FALSE;
+if(!other_value.reserved1().is_bound()) return FALSE;
+if(!single_value->field_reserved1.match(other_value.reserved1(), legacy))return FALSE;
+if(!other_value.reserved2().is_bound()) return FALSE;
+if(!single_value->field_reserved2.match(other_value.reserved2(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.WorkingSetMaintenanceBitMask.");
+}
+return FALSE;
+}
+
+boolean WorkingSetMaintenanceBitMask_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_initiatingWorkingSetMaintenance.is_bound()
+
+ ||single_value->field_reserved1.is_bound()
+
+ ||single_value->field_reserved2.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+;
+}
+
+boolean WorkingSetMaintenanceBitMask_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_initiatingWorkingSetMaintenance.is_value()
+ &&single_value->field_reserved1.is_value()
+ &&single_value->field_reserved2.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value();
+}
+
+void WorkingSetMaintenanceBitMask_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+WorkingSetMaintenanceBitMask WorkingSetMaintenanceBitMask_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 @IsobusVTMessageTypes.WorkingSetMaintenanceBitMask.");
+WorkingSetMaintenanceBitMask ret_val;
+if (single_value->field_initiatingWorkingSetMaintenance.is_bound()) {
+ret_val.initiatingWorkingSetMaintenance() = single_value->field_initiatingWorkingSetMaintenance.valueof();
+}
+if (single_value->field_reserved1.is_bound()) {
+ret_val.reserved1() = single_value->field_reserved1.valueof();
+}
+if (single_value->field_reserved2.is_bound()) {
+ret_val.reserved2() = single_value->field_reserved2.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+return ret_val;
+}
+
+void WorkingSetMaintenanceBitMask_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.WorkingSetMaintenanceBitMask.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new WorkingSetMaintenanceBitMask_template[list_length];
+}
+
+WorkingSetMaintenanceBitMask_template& WorkingSetMaintenanceBitMask_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.WorkingSetMaintenanceBitMask.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.WorkingSetMaintenanceBitMask.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& WorkingSetMaintenanceBitMask_template::initiatingWorkingSetMaintenance()
+{
+set_specific();
+return single_value->field_initiatingWorkingSetMaintenance;
+}
+
+const BOOLEAN_template& WorkingSetMaintenanceBitMask_template::initiatingWorkingSetMaintenance() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field initiatingWorkingSetMaintenance of a non-specific template of type @IsobusVTMessageTypes.WorkingSetMaintenanceBitMask.");
+return single_value->field_initiatingWorkingSetMaintenance;
+}
+
+BOOLEAN_template& WorkingSetMaintenanceBitMask_template::reserved1()
+{
+set_specific();
+return single_value->field_reserved1;
+}
+
+const BOOLEAN_template& WorkingSetMaintenanceBitMask_template::reserved1() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved1 of a non-specific template of type @IsobusVTMessageTypes.WorkingSetMaintenanceBitMask.");
+return single_value->field_reserved1;
+}
+
+BOOLEAN_template& WorkingSetMaintenanceBitMask_template::reserved2()
+{
+set_specific();
+return single_value->field_reserved2;
+}
+
+const BOOLEAN_template& WorkingSetMaintenanceBitMask_template::reserved2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved2 of a non-specific template of type @IsobusVTMessageTypes.WorkingSetMaintenanceBitMask.");
+return single_value->field_reserved2;
+}
+
+BOOLEAN_template& WorkingSetMaintenanceBitMask_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const BOOLEAN_template& WorkingSetMaintenanceBitMask_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.WorkingSetMaintenanceBitMask.");
+return single_value->field_reserved3;
+}
+
+BOOLEAN_template& WorkingSetMaintenanceBitMask_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const BOOLEAN_template& WorkingSetMaintenanceBitMask_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.WorkingSetMaintenanceBitMask.");
+return single_value->field_reserved4;
+}
+
+BOOLEAN_template& WorkingSetMaintenanceBitMask_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const BOOLEAN_template& WorkingSetMaintenanceBitMask_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.WorkingSetMaintenanceBitMask.");
+return single_value->field_reserved5;
+}
+
+BOOLEAN_template& WorkingSetMaintenanceBitMask_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const BOOLEAN_template& WorkingSetMaintenanceBitMask_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.WorkingSetMaintenanceBitMask.");
+return single_value->field_reserved6;
+}
+
+BOOLEAN_template& WorkingSetMaintenanceBitMask_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const BOOLEAN_template& WorkingSetMaintenanceBitMask_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.WorkingSetMaintenanceBitMask.");
+return single_value->field_reserved7;
+}
+
+int WorkingSetMaintenanceBitMask_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.WorkingSetMaintenanceBitMask which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.WorkingSetMaintenanceBitMask 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 @IsobusVTMessageTypes.WorkingSetMaintenanceBitMask containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.WorkingSetMaintenanceBitMask containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.WorkingSetMaintenanceBitMask containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.WorkingSetMaintenanceBitMask containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.WorkingSetMaintenanceBitMask.");
+  }
+  return 0;
+}
+
+void WorkingSetMaintenanceBitMask_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ initiatingWorkingSetMaintenance := ");
+single_value->field_initiatingWorkingSetMaintenance.log();
+TTCN_Logger::log_event_str(", reserved1 := ");
+single_value->field_reserved1.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void WorkingSetMaintenanceBitMask_template::log_match(const WorkingSetMaintenanceBitMask& 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_initiatingWorkingSetMaintenance.match(match_value.initiatingWorkingSetMaintenance(), legacy)){
+TTCN_Logger::log_logmatch_info(".initiatingWorkingSetMaintenance");
+single_value->field_initiatingWorkingSetMaintenance.log_match(match_value.initiatingWorkingSetMaintenance(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved1.match(match_value.reserved1(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved1");
+single_value->field_reserved1.log_match(match_value.reserved1(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved2.match(match_value.reserved2(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved2");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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("{ initiatingWorkingSetMaintenance := ");
+single_value->field_initiatingWorkingSetMaintenance.log_match(match_value.initiatingWorkingSetMaintenance(), legacy);
+TTCN_Logger::log_event_str(", reserved1 := ");
+single_value->field_reserved1.log_match(match_value.reserved1(), legacy);
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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 WorkingSetMaintenanceBitMask_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_initiatingWorkingSetMaintenance.encode_text(text_buf);
+single_value->field_reserved1.encode_text(text_buf);
+single_value->field_reserved2.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.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 @IsobusVTMessageTypes.WorkingSetMaintenanceBitMask.");
+}
+}
+
+void WorkingSetMaintenanceBitMask_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_initiatingWorkingSetMaintenance.decode_text(text_buf);
+single_value->field_reserved1.decode_text(text_buf);
+single_value->field_reserved2.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.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 WorkingSetMaintenanceBitMask_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 @IsobusVTMessageTypes.WorkingSetMaintenanceBitMask.");
+}
+}
+
+void WorkingSetMaintenanceBitMask_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: {
+    WorkingSetMaintenanceBitMask_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.WorkingSetMaintenanceBitMask has 8 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) initiatingWorkingSetMaintenance().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved1().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "initiatingWorkingSetMaintenance")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          initiatingWorkingSetMaintenance().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(), "reserved1")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved1().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.WorkingSetMaintenanceBitMask: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.WorkingSetMaintenanceBitMask");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void WorkingSetMaintenanceBitMask_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_initiatingWorkingSetMaintenance.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.WorkingSetMaintenanceBitMask");
+single_value->field_reserved1.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.WorkingSetMaintenanceBitMask");
+single_value->field_reserved2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.WorkingSetMaintenanceBitMask");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.WorkingSetMaintenanceBitMask");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.WorkingSetMaintenanceBitMask");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.WorkingSetMaintenanceBitMask");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.WorkingSetMaintenanceBitMask");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.WorkingSetMaintenanceBitMask");
+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 : "@IsobusVTMessageTypes.WorkingSetMaintenanceBitMask");
+}
+
+boolean WorkingSetMaintenanceBitMask_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean WorkingSetMaintenanceBitMask_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+e__WorkingSetMaintenanceVersionNumber::e__WorkingSetMaintenanceVersionNumber()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+e__WorkingSetMaintenanceVersionNumber::e__WorkingSetMaintenanceVersionNumber(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @IsobusVTMessageTypes.e_WorkingSetMaintenanceVersionNumber with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+e__WorkingSetMaintenanceVersionNumber::e__WorkingSetMaintenanceVersionNumber(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+e__WorkingSetMaintenanceVersionNumber::e__WorkingSetMaintenanceVersionNumber(const e__WorkingSetMaintenanceVersionNumber& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @IsobusVTMessageTypes.e_WorkingSetMaintenanceVersionNumber.");
+enum_value = other_value.enum_value;
+}
+
+e__WorkingSetMaintenanceVersionNumber& e__WorkingSetMaintenanceVersionNumber::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @IsobusVTMessageTypes.e_WorkingSetMaintenanceVersionNumber.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+e__WorkingSetMaintenanceVersionNumber& e__WorkingSetMaintenanceVersionNumber::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+e__WorkingSetMaintenanceVersionNumber& e__WorkingSetMaintenanceVersionNumber::operator=(const e__WorkingSetMaintenanceVersionNumber& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusVTMessageTypes.e_WorkingSetMaintenanceVersionNumber.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean e__WorkingSetMaintenanceVersionNumber::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_WorkingSetMaintenanceVersionNumber.");
+return enum_value == other_value;
+}
+
+boolean e__WorkingSetMaintenanceVersionNumber::operator==(const e__WorkingSetMaintenanceVersionNumber& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_WorkingSetMaintenanceVersionNumber.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_WorkingSetMaintenanceVersionNumber.");
+return enum_value == other_value.enum_value;
+}
+
+boolean e__WorkingSetMaintenanceVersionNumber::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_WorkingSetMaintenanceVersionNumber.");
+return enum_value < other_value;
+}
+
+boolean e__WorkingSetMaintenanceVersionNumber::operator<(const e__WorkingSetMaintenanceVersionNumber& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_WorkingSetMaintenanceVersionNumber.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_WorkingSetMaintenanceVersionNumber.");
+return enum_value < other_value.enum_value;
+}
+
+boolean e__WorkingSetMaintenanceVersionNumber::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_WorkingSetMaintenanceVersionNumber.");
+return enum_value > other_value;
+}
+
+boolean e__WorkingSetMaintenanceVersionNumber::operator>(const e__WorkingSetMaintenanceVersionNumber& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_WorkingSetMaintenanceVersionNumber.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_WorkingSetMaintenanceVersionNumber.");
+return enum_value > other_value.enum_value;
+}
+
+const char *e__WorkingSetMaintenanceVersionNumber::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case reserved0: return "reserved0";
+case reserved1: return "reserved1";
+case reserved2: return "reserved2";
+case compliantWithVTVersion3: return "compliantWithVTVersion3";
+case compliantWithVTVersion4: return "compliantWithVTVersion4";
+case compliantWithVTVersion5: return "compliantWithVTVersion5";
+case compliantWithVTVersion2: return "compliantWithVTVersion2";
+default: return "<unknown>";
+}
+}
+
+e__WorkingSetMaintenanceVersionNumber::enum_type e__WorkingSetMaintenanceVersionNumber::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "reserved0")) return reserved0;
+else if (!strcmp(str_par, "reserved1")) return reserved1;
+else if (!strcmp(str_par, "reserved2")) return reserved2;
+else if (!strcmp(str_par, "compliantWithVTVersion3")) return compliantWithVTVersion3;
+else if (!strcmp(str_par, "compliantWithVTVersion4")) return compliantWithVTVersion4;
+else if (!strcmp(str_par, "compliantWithVTVersion5")) return compliantWithVTVersion5;
+else if (!strcmp(str_par, "compliantWithVTVersion2")) return compliantWithVTVersion2;
+else return UNKNOWN_VALUE;
+}
+
+boolean e__WorkingSetMaintenanceVersionNumber::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 0:
+case 1:
+case 2:
+case 3:
+case 4:
+case 5:
+case 255:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int e__WorkingSetMaintenanceVersionNumber::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusVTMessageTypes.e_WorkingSetMaintenanceVersionNumber.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int e__WorkingSetMaintenanceVersionNumber::enum2int(const e__WorkingSetMaintenanceVersionNumber& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusVTMessageTypes.e_WorkingSetMaintenanceVersionNumber.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void e__WorkingSetMaintenanceVersionNumber::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @IsobusVTMessageTypes.e_WorkingSetMaintenanceVersionNumber.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+e__WorkingSetMaintenanceVersionNumber::operator e__WorkingSetMaintenanceVersionNumber::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @IsobusVTMessageTypes.e_WorkingSetMaintenanceVersionNumber.");
+return enum_value;
+}
+
+void e__WorkingSetMaintenanceVersionNumber::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void e__WorkingSetMaintenanceVersionNumber::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@IsobusVTMessageTypes.e_WorkingSetMaintenanceVersionNumber");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @IsobusVTMessageTypes.e_WorkingSetMaintenanceVersionNumber.");
+  }
+}
+
+void e__WorkingSetMaintenanceVersionNumber::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @IsobusVTMessageTypes.e_WorkingSetMaintenanceVersionNumber.");
+text_buf.push_int(enum_value);
+}
+
+void e__WorkingSetMaintenanceVersionNumber::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @IsobusVTMessageTypes.e_WorkingSetMaintenanceVersionNumber.", enum_value);
+}
+
+void e__WorkingSetMaintenanceVersionNumber::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void e__WorkingSetMaintenanceVersionNumber::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int e__WorkingSetMaintenanceVersionNumber::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*)
+{
+  int decoded_value = 0;
+  int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 8, no_err);
+  if (decoded_length < 0) return decoded_length;
+  if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value;
+  else {
+    if(no_err){
+     return -1;
+    } else {
+    TTCN_EncDec_ErrorContext::error
+      (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name);
+    enum_value = UNKNOWN_VALUE;
+    }
+  }
+  return decoded_length;
+}
+
+int e__WorkingSetMaintenanceVersionNumber::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const
+{
+  return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 8);
+}
+
+void e__WorkingSetMaintenanceVersionNumber_template::copy_template(const e__WorkingSetMaintenanceVersionNumber_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new e__WorkingSetMaintenanceVersionNumber_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_WorkingSetMaintenanceVersionNumber.");
+}
+}
+
+e__WorkingSetMaintenanceVersionNumber_template::e__WorkingSetMaintenanceVersionNumber_template()
+{
+}
+
+e__WorkingSetMaintenanceVersionNumber_template::e__WorkingSetMaintenanceVersionNumber_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+e__WorkingSetMaintenanceVersionNumber_template::e__WorkingSetMaintenanceVersionNumber_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!e__WorkingSetMaintenanceVersionNumber::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @IsobusVTMessageTypes.e_WorkingSetMaintenanceVersionNumber with unknown numeric value %d.", other_value);
+single_value = (e__WorkingSetMaintenanceVersionNumber::enum_type)other_value;
+}
+
+e__WorkingSetMaintenanceVersionNumber_template::e__WorkingSetMaintenanceVersionNumber_template(e__WorkingSetMaintenanceVersionNumber::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+e__WorkingSetMaintenanceVersionNumber_template::e__WorkingSetMaintenanceVersionNumber_template(const e__WorkingSetMaintenanceVersionNumber& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == e__WorkingSetMaintenanceVersionNumber::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @IsobusVTMessageTypes.e_WorkingSetMaintenanceVersionNumber.");
+single_value = other_value.enum_value;
+}
+
+e__WorkingSetMaintenanceVersionNumber_template::e__WorkingSetMaintenanceVersionNumber_template(const OPTIONAL<e__WorkingSetMaintenanceVersionNumber>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__WorkingSetMaintenanceVersionNumber::enum_type)(const e__WorkingSetMaintenanceVersionNumber&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @IsobusVTMessageTypes.e_WorkingSetMaintenanceVersionNumber from an unbound optional field.");
+}
+}
+
+e__WorkingSetMaintenanceVersionNumber_template::e__WorkingSetMaintenanceVersionNumber_template(const e__WorkingSetMaintenanceVersionNumber_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+e__WorkingSetMaintenanceVersionNumber_template::~e__WorkingSetMaintenanceVersionNumber_template()
+{
+clean_up();
+}
+
+boolean e__WorkingSetMaintenanceVersionNumber_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean e__WorkingSetMaintenanceVersionNumber_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != e__WorkingSetMaintenanceVersionNumber::UNBOUND_VALUE;
+}
+
+void e__WorkingSetMaintenanceVersionNumber_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+e__WorkingSetMaintenanceVersionNumber_template& e__WorkingSetMaintenanceVersionNumber_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+e__WorkingSetMaintenanceVersionNumber_template& e__WorkingSetMaintenanceVersionNumber_template::operator=(int other_value)
+{
+if (!e__WorkingSetMaintenanceVersionNumber::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @IsobusVTMessageTypes.e_WorkingSetMaintenanceVersionNumber.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (e__WorkingSetMaintenanceVersionNumber::enum_type)other_value;
+return *this;
+}
+
+e__WorkingSetMaintenanceVersionNumber_template& e__WorkingSetMaintenanceVersionNumber_template::operator=(e__WorkingSetMaintenanceVersionNumber::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+e__WorkingSetMaintenanceVersionNumber_template& e__WorkingSetMaintenanceVersionNumber_template::operator=(const e__WorkingSetMaintenanceVersionNumber& other_value)
+{
+if (other_value.enum_value == e__WorkingSetMaintenanceVersionNumber::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusVTMessageTypes.e_WorkingSetMaintenanceVersionNumber to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+e__WorkingSetMaintenanceVersionNumber_template& e__WorkingSetMaintenanceVersionNumber_template::operator=(const OPTIONAL<e__WorkingSetMaintenanceVersionNumber>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__WorkingSetMaintenanceVersionNumber::enum_type)(const e__WorkingSetMaintenanceVersionNumber&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @IsobusVTMessageTypes.e_WorkingSetMaintenanceVersionNumber.");
+}
+return *this;
+}
+
+e__WorkingSetMaintenanceVersionNumber_template& e__WorkingSetMaintenanceVersionNumber_template::operator=(const e__WorkingSetMaintenanceVersionNumber_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean e__WorkingSetMaintenanceVersionNumber_template::match(e__WorkingSetMaintenanceVersionNumber::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_WorkingSetMaintenanceVersionNumber.");
+}
+return FALSE;
+}
+
+boolean e__WorkingSetMaintenanceVersionNumber_template::match(const e__WorkingSetMaintenanceVersionNumber& other_value, boolean) const
+{
+if (other_value.enum_value == e__WorkingSetMaintenanceVersionNumber::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @IsobusVTMessageTypes.e_WorkingSetMaintenanceVersionNumber with an unbound value.");
+return match(other_value.enum_value);
+}
+
+e__WorkingSetMaintenanceVersionNumber::enum_type e__WorkingSetMaintenanceVersionNumber_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @IsobusVTMessageTypes.e_WorkingSetMaintenanceVersionNumber.");
+return single_value;
+}
+
+void e__WorkingSetMaintenanceVersionNumber_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @IsobusVTMessageTypes.e_WorkingSetMaintenanceVersionNumber.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new e__WorkingSetMaintenanceVersionNumber_template[list_length];
+}
+
+e__WorkingSetMaintenanceVersionNumber_template& e__WorkingSetMaintenanceVersionNumber_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @IsobusVTMessageTypes.e_WorkingSetMaintenanceVersionNumber.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @IsobusVTMessageTypes.e_WorkingSetMaintenanceVersionNumber.");
+return value_list.list_value[list_index];
+}
+
+void e__WorkingSetMaintenanceVersionNumber_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(e__WorkingSetMaintenanceVersionNumber::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void e__WorkingSetMaintenanceVersionNumber_template::log_match(const e__WorkingSetMaintenanceVersionNumber& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void e__WorkingSetMaintenanceVersionNumber_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_WorkingSetMaintenanceVersionNumber.");
+}
+}
+
+void e__WorkingSetMaintenanceVersionNumber_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (e__WorkingSetMaintenanceVersionNumber::enum_type)text_buf.pull_int().get_val();
+if (!e__WorkingSetMaintenanceVersionNumber::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @IsobusVTMessageTypes.e_WorkingSetMaintenanceVersionNumber.", single_value);
+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 e__WorkingSetMaintenanceVersionNumber_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @IsobusVTMessageTypes.e_WorkingSetMaintenanceVersionNumber.");
+}
+}
+
+boolean e__WorkingSetMaintenanceVersionNumber_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean e__WorkingSetMaintenanceVersionNumber_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 e__WorkingSetMaintenanceVersionNumber_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    e__WorkingSetMaintenanceVersionNumber_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    e__WorkingSetMaintenanceVersionNumber::enum_type enum_val = e__WorkingSetMaintenanceVersionNumber::str_to_enum(m_p->get_enumerated());
+    if (!e__WorkingSetMaintenanceVersionNumber::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @IsobusVTMessageTypes.e_WorkingSetMaintenanceVersionNumber.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@IsobusVTMessageTypes.e_WorkingSetMaintenanceVersionNumber");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void e__WorkingSetMaintenanceVersionNumber_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@IsobusVTMessageTypes.e_WorkingSetMaintenanceVersionNumber");
+}
+
+LoadVersionReq::LoadVersionReq()
+{
+}
+
+LoadVersionReq::LoadVersionReq(const INTEGER& par_vtfunction,
+    const CHARSTRING& par_versionLabel)
+  :   field_vtfunction(par_vtfunction),
+  field_versionLabel(par_versionLabel)
+{
+}
+
+LoadVersionReq::LoadVersionReq(const LoadVersionReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.LoadVersionReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.versionLabel().is_bound()) field_versionLabel = other_value.versionLabel();
+else field_versionLabel.clean_up();
+}
+
+void LoadVersionReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_versionLabel.clean_up();
+}
+
+const TTCN_Typedescriptor_t* LoadVersionReq::get_descriptor() const { return &LoadVersionReq_descr_; }
+LoadVersionReq& LoadVersionReq::operator=(const LoadVersionReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.LoadVersionReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.versionLabel().is_bound()) field_versionLabel = other_value.versionLabel();
+  else field_versionLabel.clean_up();
+}
+return *this;
+}
+
+boolean LoadVersionReq::operator==(const LoadVersionReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_versionLabel==other_value.field_versionLabel;
+}
+
+boolean LoadVersionReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_versionLabel.is_bound());
+}
+boolean LoadVersionReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_versionLabel.is_value();
+}
+void LoadVersionReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", versionLabel := ");
+field_versionLabel.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void LoadVersionReq::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 @IsobusVTMessageTypes.LoadVersionReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) versionLabel().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "versionLabel")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          versionLabel().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 @IsobusVTMessageTypes.LoadVersionReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.LoadVersionReq");
+  }
+}
+
+void LoadVersionReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (versionLabel().is_bound()) versionLabel().set_implicit_omit();
+}
+
+void LoadVersionReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_versionLabel.encode_text(text_buf);
+}
+
+void LoadVersionReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_versionLabel.decode_text(text_buf);
+}
+
+void LoadVersionReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void LoadVersionReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int LoadVersionReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, VersionLabel7Char_descr_.raw->forceomit);
+  decoded_field_length = field_versionLabel.RAW_decode(VersionLabel7Char_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 LoadVersionReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, VersionLabel7Char_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_versionLabel.RAW_encode(VersionLabel7Char_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct LoadVersionReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+CHARSTRING_template field_versionLabel;
+};
+
+void LoadVersionReq_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_vtfunction = ANY_VALUE;
+single_value->field_versionLabel = ANY_VALUE;
+}
+}
+}
+
+void LoadVersionReq_template::copy_value(const LoadVersionReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.versionLabel().is_bound()) {
+  single_value->field_versionLabel = other_value.versionLabel();
+} else {
+  single_value->field_versionLabel.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void LoadVersionReq_template::copy_template(const LoadVersionReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.versionLabel().get_selection()) {
+single_value->field_versionLabel = other_value.versionLabel();
+} else {
+single_value->field_versionLabel.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new LoadVersionReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.LoadVersionReq.");
+break;
+}
+set_selection(other_value);
+}
+
+LoadVersionReq_template::LoadVersionReq_template()
+{
+}
+
+LoadVersionReq_template::LoadVersionReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+LoadVersionReq_template::LoadVersionReq_template(const LoadVersionReq& other_value)
+{
+copy_value(other_value);
+}
+
+LoadVersionReq_template::LoadVersionReq_template(const OPTIONAL<LoadVersionReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const LoadVersionReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.LoadVersionReq from an unbound optional field.");
+}
+}
+
+LoadVersionReq_template::LoadVersionReq_template(const LoadVersionReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+LoadVersionReq_template::~LoadVersionReq_template()
+{
+clean_up();
+}
+
+LoadVersionReq_template& LoadVersionReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+LoadVersionReq_template& LoadVersionReq_template::operator=(const LoadVersionReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+LoadVersionReq_template& LoadVersionReq_template::operator=(const OPTIONAL<LoadVersionReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const LoadVersionReq&)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 @IsobusVTMessageTypes.LoadVersionReq.");
+}
+return *this;
+}
+
+LoadVersionReq_template& LoadVersionReq_template::operator=(const LoadVersionReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean LoadVersionReq_template::match(const LoadVersionReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.versionLabel().is_bound()) return FALSE;
+if(!single_value->field_versionLabel.match(other_value.versionLabel(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.LoadVersionReq.");
+}
+return FALSE;
+}
+
+boolean LoadVersionReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_versionLabel.is_bound()
+;
+}
+
+boolean LoadVersionReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_versionLabel.is_value();
+}
+
+void LoadVersionReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+LoadVersionReq LoadVersionReq_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 @IsobusVTMessageTypes.LoadVersionReq.");
+LoadVersionReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_versionLabel.is_bound()) {
+ret_val.versionLabel() = single_value->field_versionLabel.valueof();
+}
+return ret_val;
+}
+
+void LoadVersionReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.LoadVersionReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new LoadVersionReq_template[list_length];
+}
+
+LoadVersionReq_template& LoadVersionReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.LoadVersionReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.LoadVersionReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& LoadVersionReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& LoadVersionReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.LoadVersionReq.");
+return single_value->field_vtfunction;
+}
+
+CHARSTRING_template& LoadVersionReq_template::versionLabel()
+{
+set_specific();
+return single_value->field_versionLabel;
+}
+
+const CHARSTRING_template& LoadVersionReq_template::versionLabel() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field versionLabel of a non-specific template of type @IsobusVTMessageTypes.LoadVersionReq.");
+return single_value->field_versionLabel;
+}
+
+int LoadVersionReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.LoadVersionReq 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 @IsobusVTMessageTypes.LoadVersionReq 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 @IsobusVTMessageTypes.LoadVersionReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.LoadVersionReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.LoadVersionReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.LoadVersionReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.LoadVersionReq.");
+  }
+  return 0;
+}
+
+void LoadVersionReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", versionLabel := ");
+single_value->field_versionLabel.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void LoadVersionReq_template::log_match(const LoadVersionReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_versionLabel.match(match_value.versionLabel(), legacy)){
+TTCN_Logger::log_logmatch_info(".versionLabel");
+single_value->field_versionLabel.log_match(match_value.versionLabel(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", versionLabel := ");
+single_value->field_versionLabel.log_match(match_value.versionLabel(), 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 LoadVersionReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_versionLabel.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 @IsobusVTMessageTypes.LoadVersionReq.");
+}
+}
+
+void LoadVersionReq_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_vtfunction.decode_text(text_buf);
+single_value->field_versionLabel.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 LoadVersionReq_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 @IsobusVTMessageTypes.LoadVersionReq.");
+}
+}
+
+void LoadVersionReq_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: {
+    LoadVersionReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.LoadVersionReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) versionLabel().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "versionLabel")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          versionLabel().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 @IsobusVTMessageTypes.LoadVersionReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.LoadVersionReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void LoadVersionReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.LoadVersionReq");
+single_value->field_versionLabel.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.LoadVersionReq");
+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 : "@IsobusVTMessageTypes.LoadVersionReq");
+}
+
+boolean LoadVersionReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean LoadVersionReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+LoadVersionRes__errorCodesType::LoadVersionRes__errorCodesType()
+{
+}
+
+LoadVersionRes__errorCodesType::LoadVersionRes__errorCodesType(const BOOLEAN& par_fileSystemErrorOrPoolDataCorruption,
+    const BOOLEAN& par_versionLabelIsNotCorrectOrVersionLabeUnknown,
+    const BOOLEAN& par_insufficientMemoryAvailable,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7,
+    const BOOLEAN& par_reserved8)
+  :   field_fileSystemErrorOrPoolDataCorruption(par_fileSystemErrorOrPoolDataCorruption),
+  field_versionLabelIsNotCorrectOrVersionLabeUnknown(par_versionLabelIsNotCorrectOrVersionLabeUnknown),
+  field_insufficientMemoryAvailable(par_insufficientMemoryAvailable),
+  field_anyOtherError(par_anyOtherError),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+LoadVersionRes__errorCodesType::LoadVersionRes__errorCodesType(const LoadVersionRes__errorCodesType& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.LoadVersionRes_errorCodesType.");
+if (other_value.fileSystemErrorOrPoolDataCorruption().is_bound()) field_fileSystemErrorOrPoolDataCorruption = other_value.fileSystemErrorOrPoolDataCorruption();
+else field_fileSystemErrorOrPoolDataCorruption.clean_up();
+if (other_value.versionLabelIsNotCorrectOrVersionLabeUnknown().is_bound()) field_versionLabelIsNotCorrectOrVersionLabeUnknown = other_value.versionLabelIsNotCorrectOrVersionLabeUnknown();
+else field_versionLabelIsNotCorrectOrVersionLabeUnknown.clean_up();
+if (other_value.insufficientMemoryAvailable().is_bound()) field_insufficientMemoryAvailable = other_value.insufficientMemoryAvailable();
+else field_insufficientMemoryAvailable.clean_up();
+if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+else field_anyOtherError.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void LoadVersionRes__errorCodesType::clean_up()
+{
+field_fileSystemErrorOrPoolDataCorruption.clean_up();
+field_versionLabelIsNotCorrectOrVersionLabeUnknown.clean_up();
+field_insufficientMemoryAvailable.clean_up();
+field_anyOtherError.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* LoadVersionRes__errorCodesType::get_descriptor() const { return &LoadVersionRes__errorCodesType_descr_; }
+LoadVersionRes__errorCodesType& LoadVersionRes__errorCodesType::operator=(const LoadVersionRes__errorCodesType& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.LoadVersionRes_errorCodesType.");
+  if (other_value.fileSystemErrorOrPoolDataCorruption().is_bound()) field_fileSystemErrorOrPoolDataCorruption = other_value.fileSystemErrorOrPoolDataCorruption();
+  else field_fileSystemErrorOrPoolDataCorruption.clean_up();
+  if (other_value.versionLabelIsNotCorrectOrVersionLabeUnknown().is_bound()) field_versionLabelIsNotCorrectOrVersionLabeUnknown = other_value.versionLabelIsNotCorrectOrVersionLabeUnknown();
+  else field_versionLabelIsNotCorrectOrVersionLabeUnknown.clean_up();
+  if (other_value.insufficientMemoryAvailable().is_bound()) field_insufficientMemoryAvailable = other_value.insufficientMemoryAvailable();
+  else field_insufficientMemoryAvailable.clean_up();
+  if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+  else field_anyOtherError.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean LoadVersionRes__errorCodesType::operator==(const LoadVersionRes__errorCodesType& other_value) const
+{
+return field_fileSystemErrorOrPoolDataCorruption==other_value.field_fileSystemErrorOrPoolDataCorruption
+  && field_versionLabelIsNotCorrectOrVersionLabeUnknown==other_value.field_versionLabelIsNotCorrectOrVersionLabeUnknown
+  && field_insufficientMemoryAvailable==other_value.field_insufficientMemoryAvailable
+  && field_anyOtherError==other_value.field_anyOtherError
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean LoadVersionRes__errorCodesType::is_bound() const
+{
+return (field_fileSystemErrorOrPoolDataCorruption.is_bound())
+  || (field_versionLabelIsNotCorrectOrVersionLabeUnknown.is_bound())
+  || (field_insufficientMemoryAvailable.is_bound())
+  || (field_anyOtherError.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean LoadVersionRes__errorCodesType::is_value() const
+{
+return field_fileSystemErrorOrPoolDataCorruption.is_value()
+  && field_versionLabelIsNotCorrectOrVersionLabeUnknown.is_value()
+  && field_insufficientMemoryAvailable.is_value()
+  && field_anyOtherError.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void LoadVersionRes__errorCodesType::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ fileSystemErrorOrPoolDataCorruption := ");
+field_fileSystemErrorOrPoolDataCorruption.log();
+TTCN_Logger::log_event_str(", versionLabelIsNotCorrectOrVersionLabeUnknown := ");
+field_versionLabelIsNotCorrectOrVersionLabeUnknown.log();
+TTCN_Logger::log_event_str(", insufficientMemoryAvailable := ");
+field_insufficientMemoryAvailable.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void LoadVersionRes__errorCodesType::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.LoadVersionRes_errorCodesType has 8 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) fileSystemErrorOrPoolDataCorruption().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) versionLabelIsNotCorrectOrVersionLabeUnknown().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) insufficientMemoryAvailable().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "fileSystemErrorOrPoolDataCorruption")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          fileSystemErrorOrPoolDataCorruption().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(), "versionLabelIsNotCorrectOrVersionLabeUnknown")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          versionLabelIsNotCorrectOrVersionLabeUnknown().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(), "insufficientMemoryAvailable")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          insufficientMemoryAvailable().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.LoadVersionRes_errorCodesType: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.LoadVersionRes_errorCodesType");
+  }
+}
+
+void LoadVersionRes__errorCodesType::set_implicit_omit()
+{
+if (fileSystemErrorOrPoolDataCorruption().is_bound()) fileSystemErrorOrPoolDataCorruption().set_implicit_omit();
+if (versionLabelIsNotCorrectOrVersionLabeUnknown().is_bound()) versionLabelIsNotCorrectOrVersionLabeUnknown().set_implicit_omit();
+if (insufficientMemoryAvailable().is_bound()) insufficientMemoryAvailable().set_implicit_omit();
+if (anyOtherError().is_bound()) anyOtherError().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void LoadVersionRes__errorCodesType::encode_text(Text_Buf& text_buf) const
+{
+field_fileSystemErrorOrPoolDataCorruption.encode_text(text_buf);
+field_versionLabelIsNotCorrectOrVersionLabeUnknown.encode_text(text_buf);
+field_insufficientMemoryAvailable.encode_text(text_buf);
+field_anyOtherError.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void LoadVersionRes__errorCodesType::decode_text(Text_Buf& text_buf)
+{
+field_fileSystemErrorOrPoolDataCorruption.decode_text(text_buf);
+field_versionLabelIsNotCorrectOrVersionLabeUnknown.decode_text(text_buf);
+field_insufficientMemoryAvailable.decode_text(text_buf);
+field_anyOtherError.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void LoadVersionRes__errorCodesType::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void LoadVersionRes__errorCodesType::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int LoadVersionRes__errorCodesType::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_fileSystemErrorOrPoolDataCorruption.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_versionLabelIsNotCorrectOrVersionLabeUnknown.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_insufficientMemoryAvailable.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_anyOtherError.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int LoadVersionRes__errorCodesType::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_fileSystemErrorOrPoolDataCorruption.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_versionLabelIsNotCorrectOrVersionLabeUnknown.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_insufficientMemoryAvailable.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_anyOtherError.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved5.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved6.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved7.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved8.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct LoadVersionRes__errorCodesType_template::single_value_struct {
+BOOLEAN_template field_fileSystemErrorOrPoolDataCorruption;
+BOOLEAN_template field_versionLabelIsNotCorrectOrVersionLabeUnknown;
+BOOLEAN_template field_insufficientMemoryAvailable;
+BOOLEAN_template field_anyOtherError;
+BOOLEAN_template field_reserved5;
+BOOLEAN_template field_reserved6;
+BOOLEAN_template field_reserved7;
+BOOLEAN_template field_reserved8;
+};
+
+void LoadVersionRes__errorCodesType_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_fileSystemErrorOrPoolDataCorruption = ANY_VALUE;
+single_value->field_versionLabelIsNotCorrectOrVersionLabeUnknown = ANY_VALUE;
+single_value->field_insufficientMemoryAvailable = ANY_VALUE;
+single_value->field_anyOtherError = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void LoadVersionRes__errorCodesType_template::copy_value(const LoadVersionRes__errorCodesType& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.fileSystemErrorOrPoolDataCorruption().is_bound()) {
+  single_value->field_fileSystemErrorOrPoolDataCorruption = other_value.fileSystemErrorOrPoolDataCorruption();
+} else {
+  single_value->field_fileSystemErrorOrPoolDataCorruption.clean_up();
+}
+if (other_value.versionLabelIsNotCorrectOrVersionLabeUnknown().is_bound()) {
+  single_value->field_versionLabelIsNotCorrectOrVersionLabeUnknown = other_value.versionLabelIsNotCorrectOrVersionLabeUnknown();
+} else {
+  single_value->field_versionLabelIsNotCorrectOrVersionLabeUnknown.clean_up();
+}
+if (other_value.insufficientMemoryAvailable().is_bound()) {
+  single_value->field_insufficientMemoryAvailable = other_value.insufficientMemoryAvailable();
+} else {
+  single_value->field_insufficientMemoryAvailable.clean_up();
+}
+if (other_value.anyOtherError().is_bound()) {
+  single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+  single_value->field_anyOtherError.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void LoadVersionRes__errorCodesType_template::copy_template(const LoadVersionRes__errorCodesType_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.fileSystemErrorOrPoolDataCorruption().get_selection()) {
+single_value->field_fileSystemErrorOrPoolDataCorruption = other_value.fileSystemErrorOrPoolDataCorruption();
+} else {
+single_value->field_fileSystemErrorOrPoolDataCorruption.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.versionLabelIsNotCorrectOrVersionLabeUnknown().get_selection()) {
+single_value->field_versionLabelIsNotCorrectOrVersionLabeUnknown = other_value.versionLabelIsNotCorrectOrVersionLabeUnknown();
+} else {
+single_value->field_versionLabelIsNotCorrectOrVersionLabeUnknown.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.insufficientMemoryAvailable().get_selection()) {
+single_value->field_insufficientMemoryAvailable = other_value.insufficientMemoryAvailable();
+} else {
+single_value->field_insufficientMemoryAvailable.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.anyOtherError().get_selection()) {
+single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+single_value->field_anyOtherError.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new LoadVersionRes__errorCodesType_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.LoadVersionRes_errorCodesType.");
+break;
+}
+set_selection(other_value);
+}
+
+LoadVersionRes__errorCodesType_template::LoadVersionRes__errorCodesType_template()
+{
+}
+
+LoadVersionRes__errorCodesType_template::LoadVersionRes__errorCodesType_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+LoadVersionRes__errorCodesType_template::LoadVersionRes__errorCodesType_template(const LoadVersionRes__errorCodesType& other_value)
+{
+copy_value(other_value);
+}
+
+LoadVersionRes__errorCodesType_template::LoadVersionRes__errorCodesType_template(const OPTIONAL<LoadVersionRes__errorCodesType>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const LoadVersionRes__errorCodesType&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.LoadVersionRes_errorCodesType from an unbound optional field.");
+}
+}
+
+LoadVersionRes__errorCodesType_template::LoadVersionRes__errorCodesType_template(const LoadVersionRes__errorCodesType_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+LoadVersionRes__errorCodesType_template::~LoadVersionRes__errorCodesType_template()
+{
+clean_up();
+}
+
+LoadVersionRes__errorCodesType_template& LoadVersionRes__errorCodesType_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+LoadVersionRes__errorCodesType_template& LoadVersionRes__errorCodesType_template::operator=(const LoadVersionRes__errorCodesType& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+LoadVersionRes__errorCodesType_template& LoadVersionRes__errorCodesType_template::operator=(const OPTIONAL<LoadVersionRes__errorCodesType>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const LoadVersionRes__errorCodesType&)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 @IsobusVTMessageTypes.LoadVersionRes_errorCodesType.");
+}
+return *this;
+}
+
+LoadVersionRes__errorCodesType_template& LoadVersionRes__errorCodesType_template::operator=(const LoadVersionRes__errorCodesType_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean LoadVersionRes__errorCodesType_template::match(const LoadVersionRes__errorCodesType& 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.fileSystemErrorOrPoolDataCorruption().is_bound()) return FALSE;
+if(!single_value->field_fileSystemErrorOrPoolDataCorruption.match(other_value.fileSystemErrorOrPoolDataCorruption(), legacy))return FALSE;
+if(!other_value.versionLabelIsNotCorrectOrVersionLabeUnknown().is_bound()) return FALSE;
+if(!single_value->field_versionLabelIsNotCorrectOrVersionLabeUnknown.match(other_value.versionLabelIsNotCorrectOrVersionLabeUnknown(), legacy))return FALSE;
+if(!other_value.insufficientMemoryAvailable().is_bound()) return FALSE;
+if(!single_value->field_insufficientMemoryAvailable.match(other_value.insufficientMemoryAvailable(), legacy))return FALSE;
+if(!other_value.anyOtherError().is_bound()) return FALSE;
+if(!single_value->field_anyOtherError.match(other_value.anyOtherError(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.LoadVersionRes_errorCodesType.");
+}
+return FALSE;
+}
+
+boolean LoadVersionRes__errorCodesType_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_fileSystemErrorOrPoolDataCorruption.is_bound()
+
+ ||single_value->field_versionLabelIsNotCorrectOrVersionLabeUnknown.is_bound()
+
+ ||single_value->field_insufficientMemoryAvailable.is_bound()
+
+ ||single_value->field_anyOtherError.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean LoadVersionRes__errorCodesType_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_fileSystemErrorOrPoolDataCorruption.is_value()
+ &&single_value->field_versionLabelIsNotCorrectOrVersionLabeUnknown.is_value()
+ &&single_value->field_insufficientMemoryAvailable.is_value()
+ &&single_value->field_anyOtherError.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void LoadVersionRes__errorCodesType_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+LoadVersionRes__errorCodesType LoadVersionRes__errorCodesType_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 @IsobusVTMessageTypes.LoadVersionRes_errorCodesType.");
+LoadVersionRes__errorCodesType ret_val;
+if (single_value->field_fileSystemErrorOrPoolDataCorruption.is_bound()) {
+ret_val.fileSystemErrorOrPoolDataCorruption() = single_value->field_fileSystemErrorOrPoolDataCorruption.valueof();
+}
+if (single_value->field_versionLabelIsNotCorrectOrVersionLabeUnknown.is_bound()) {
+ret_val.versionLabelIsNotCorrectOrVersionLabeUnknown() = single_value->field_versionLabelIsNotCorrectOrVersionLabeUnknown.valueof();
+}
+if (single_value->field_insufficientMemoryAvailable.is_bound()) {
+ret_val.insufficientMemoryAvailable() = single_value->field_insufficientMemoryAvailable.valueof();
+}
+if (single_value->field_anyOtherError.is_bound()) {
+ret_val.anyOtherError() = single_value->field_anyOtherError.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void LoadVersionRes__errorCodesType_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.LoadVersionRes_errorCodesType.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new LoadVersionRes__errorCodesType_template[list_length];
+}
+
+LoadVersionRes__errorCodesType_template& LoadVersionRes__errorCodesType_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.LoadVersionRes_errorCodesType.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.LoadVersionRes_errorCodesType.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& LoadVersionRes__errorCodesType_template::fileSystemErrorOrPoolDataCorruption()
+{
+set_specific();
+return single_value->field_fileSystemErrorOrPoolDataCorruption;
+}
+
+const BOOLEAN_template& LoadVersionRes__errorCodesType_template::fileSystemErrorOrPoolDataCorruption() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field fileSystemErrorOrPoolDataCorruption of a non-specific template of type @IsobusVTMessageTypes.LoadVersionRes_errorCodesType.");
+return single_value->field_fileSystemErrorOrPoolDataCorruption;
+}
+
+BOOLEAN_template& LoadVersionRes__errorCodesType_template::versionLabelIsNotCorrectOrVersionLabeUnknown()
+{
+set_specific();
+return single_value->field_versionLabelIsNotCorrectOrVersionLabeUnknown;
+}
+
+const BOOLEAN_template& LoadVersionRes__errorCodesType_template::versionLabelIsNotCorrectOrVersionLabeUnknown() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field versionLabelIsNotCorrectOrVersionLabeUnknown of a non-specific template of type @IsobusVTMessageTypes.LoadVersionRes_errorCodesType.");
+return single_value->field_versionLabelIsNotCorrectOrVersionLabeUnknown;
+}
+
+BOOLEAN_template& LoadVersionRes__errorCodesType_template::insufficientMemoryAvailable()
+{
+set_specific();
+return single_value->field_insufficientMemoryAvailable;
+}
+
+const BOOLEAN_template& LoadVersionRes__errorCodesType_template::insufficientMemoryAvailable() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field insufficientMemoryAvailable of a non-specific template of type @IsobusVTMessageTypes.LoadVersionRes_errorCodesType.");
+return single_value->field_insufficientMemoryAvailable;
+}
+
+BOOLEAN_template& LoadVersionRes__errorCodesType_template::anyOtherError()
+{
+set_specific();
+return single_value->field_anyOtherError;
+}
+
+const BOOLEAN_template& LoadVersionRes__errorCodesType_template::anyOtherError() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field anyOtherError of a non-specific template of type @IsobusVTMessageTypes.LoadVersionRes_errorCodesType.");
+return single_value->field_anyOtherError;
+}
+
+BOOLEAN_template& LoadVersionRes__errorCodesType_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const BOOLEAN_template& LoadVersionRes__errorCodesType_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.LoadVersionRes_errorCodesType.");
+return single_value->field_reserved5;
+}
+
+BOOLEAN_template& LoadVersionRes__errorCodesType_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const BOOLEAN_template& LoadVersionRes__errorCodesType_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.LoadVersionRes_errorCodesType.");
+return single_value->field_reserved6;
+}
+
+BOOLEAN_template& LoadVersionRes__errorCodesType_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const BOOLEAN_template& LoadVersionRes__errorCodesType_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.LoadVersionRes_errorCodesType.");
+return single_value->field_reserved7;
+}
+
+BOOLEAN_template& LoadVersionRes__errorCodesType_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const BOOLEAN_template& LoadVersionRes__errorCodesType_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.LoadVersionRes_errorCodesType.");
+return single_value->field_reserved8;
+}
+
+int LoadVersionRes__errorCodesType_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.LoadVersionRes_errorCodesType which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.LoadVersionRes_errorCodesType 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 @IsobusVTMessageTypes.LoadVersionRes_errorCodesType containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.LoadVersionRes_errorCodesType containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.LoadVersionRes_errorCodesType containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.LoadVersionRes_errorCodesType containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.LoadVersionRes_errorCodesType.");
+  }
+  return 0;
+}
+
+void LoadVersionRes__errorCodesType_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ fileSystemErrorOrPoolDataCorruption := ");
+single_value->field_fileSystemErrorOrPoolDataCorruption.log();
+TTCN_Logger::log_event_str(", versionLabelIsNotCorrectOrVersionLabeUnknown := ");
+single_value->field_versionLabelIsNotCorrectOrVersionLabeUnknown.log();
+TTCN_Logger::log_event_str(", insufficientMemoryAvailable := ");
+single_value->field_insufficientMemoryAvailable.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void LoadVersionRes__errorCodesType_template::log_match(const LoadVersionRes__errorCodesType& 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_fileSystemErrorOrPoolDataCorruption.match(match_value.fileSystemErrorOrPoolDataCorruption(), legacy)){
+TTCN_Logger::log_logmatch_info(".fileSystemErrorOrPoolDataCorruption");
+single_value->field_fileSystemErrorOrPoolDataCorruption.log_match(match_value.fileSystemErrorOrPoolDataCorruption(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_versionLabelIsNotCorrectOrVersionLabeUnknown.match(match_value.versionLabelIsNotCorrectOrVersionLabeUnknown(), legacy)){
+TTCN_Logger::log_logmatch_info(".versionLabelIsNotCorrectOrVersionLabeUnknown");
+single_value->field_versionLabelIsNotCorrectOrVersionLabeUnknown.log_match(match_value.versionLabelIsNotCorrectOrVersionLabeUnknown(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_insufficientMemoryAvailable.match(match_value.insufficientMemoryAvailable(), legacy)){
+TTCN_Logger::log_logmatch_info(".insufficientMemoryAvailable");
+single_value->field_insufficientMemoryAvailable.log_match(match_value.insufficientMemoryAvailable(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_anyOtherError.match(match_value.anyOtherError(), legacy)){
+TTCN_Logger::log_logmatch_info(".anyOtherError");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ fileSystemErrorOrPoolDataCorruption := ");
+single_value->field_fileSystemErrorOrPoolDataCorruption.log_match(match_value.fileSystemErrorOrPoolDataCorruption(), legacy);
+TTCN_Logger::log_event_str(", versionLabelIsNotCorrectOrVersionLabeUnknown := ");
+single_value->field_versionLabelIsNotCorrectOrVersionLabeUnknown.log_match(match_value.versionLabelIsNotCorrectOrVersionLabeUnknown(), legacy);
+TTCN_Logger::log_event_str(", insufficientMemoryAvailable := ");
+single_value->field_insufficientMemoryAvailable.log_match(match_value.insufficientMemoryAvailable(), legacy);
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 LoadVersionRes__errorCodesType_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_fileSystemErrorOrPoolDataCorruption.encode_text(text_buf);
+single_value->field_versionLabelIsNotCorrectOrVersionLabeUnknown.encode_text(text_buf);
+single_value->field_insufficientMemoryAvailable.encode_text(text_buf);
+single_value->field_anyOtherError.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.LoadVersionRes_errorCodesType.");
+}
+}
+
+void LoadVersionRes__errorCodesType_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_fileSystemErrorOrPoolDataCorruption.decode_text(text_buf);
+single_value->field_versionLabelIsNotCorrectOrVersionLabeUnknown.decode_text(text_buf);
+single_value->field_insufficientMemoryAvailable.decode_text(text_buf);
+single_value->field_anyOtherError.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 LoadVersionRes__errorCodesType_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 @IsobusVTMessageTypes.LoadVersionRes_errorCodesType.");
+}
+}
+
+void LoadVersionRes__errorCodesType_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: {
+    LoadVersionRes__errorCodesType_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.LoadVersionRes_errorCodesType has 8 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) fileSystemErrorOrPoolDataCorruption().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) versionLabelIsNotCorrectOrVersionLabeUnknown().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) insufficientMemoryAvailable().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "fileSystemErrorOrPoolDataCorruption")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          fileSystemErrorOrPoolDataCorruption().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(), "versionLabelIsNotCorrectOrVersionLabeUnknown")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          versionLabelIsNotCorrectOrVersionLabeUnknown().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(), "insufficientMemoryAvailable")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          insufficientMemoryAvailable().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.LoadVersionRes_errorCodesType: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.LoadVersionRes_errorCodesType");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void LoadVersionRes__errorCodesType_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_fileSystemErrorOrPoolDataCorruption.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.LoadVersionRes_errorCodesType");
+single_value->field_versionLabelIsNotCorrectOrVersionLabeUnknown.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.LoadVersionRes_errorCodesType");
+single_value->field_insufficientMemoryAvailable.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.LoadVersionRes_errorCodesType");
+single_value->field_anyOtherError.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.LoadVersionRes_errorCodesType");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.LoadVersionRes_errorCodesType");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.LoadVersionRes_errorCodesType");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.LoadVersionRes_errorCodesType");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.LoadVersionRes_errorCodesType");
+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 : "@IsobusVTMessageTypes.LoadVersionRes_errorCodesType");
+}
+
+boolean LoadVersionRes__errorCodesType_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean LoadVersionRes__errorCodesType_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+LoadVersionRes::LoadVersionRes()
+{
+}
+
+LoadVersionRes::LoadVersionRes(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_reserved2,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const LoadVersionRes__errorCodesType& par_errorCodes,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_reserved2(par_reserved2),
+  field_reserved3(par_reserved3),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_errorCodes(par_errorCodes),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+LoadVersionRes::LoadVersionRes(const LoadVersionRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.LoadVersionRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+else field_reserved2.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+else field_errorCodes.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void LoadVersionRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_reserved2.clean_up();
+field_reserved3.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_errorCodes.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* LoadVersionRes::get_descriptor() const { return &LoadVersionRes_descr_; }
+LoadVersionRes& LoadVersionRes::operator=(const LoadVersionRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.LoadVersionRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+  else field_reserved2.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+  else field_errorCodes.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean LoadVersionRes::operator==(const LoadVersionRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_reserved2==other_value.field_reserved2
+  && field_reserved3==other_value.field_reserved3
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_errorCodes==other_value.field_errorCodes
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean LoadVersionRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_reserved2.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_errorCodes.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean LoadVersionRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_reserved2.is_value()
+  && field_reserved3.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_errorCodes.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void LoadVersionRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void LoadVersionRes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.LoadVersionRes has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.LoadVersionRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.LoadVersionRes");
+  }
+}
+
+void LoadVersionRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (reserved2().is_bound()) reserved2().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (errorCodes().is_bound()) errorCodes().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void LoadVersionRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_reserved2.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_errorCodes.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void LoadVersionRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_reserved2.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_errorCodes.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void LoadVersionRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void LoadVersionRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int LoadVersionRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, LoadVersionRes_reserved2_descr_.raw->forceomit);
+  decoded_field_length = field_reserved2.RAW_decode(LoadVersionRes_reserved2_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, LoadVersionRes_reserved3_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(LoadVersionRes_reserved3_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, LoadVersionRes_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(LoadVersionRes_reserved4_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, LoadVersionRes_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(LoadVersionRes_reserved5_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, LoadVersionRes__errorCodesType_descr_.raw->forceomit);
+  decoded_field_length = field_errorCodes.RAW_decode(LoadVersionRes__errorCodesType_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, LoadVersionRes_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(LoadVersionRes_reserved7_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, LoadVersionRes_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(LoadVersionRes_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int LoadVersionRes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, LoadVersionRes_reserved2_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, LoadVersionRes_reserved3_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, LoadVersionRes_reserved4_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, LoadVersionRes_reserved5_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, LoadVersionRes__errorCodesType_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, LoadVersionRes_reserved7_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, LoadVersionRes_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved2.RAW_encode(LoadVersionRes_reserved2_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved3.RAW_encode(LoadVersionRes_reserved3_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved4.RAW_encode(LoadVersionRes_reserved4_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved5.RAW_encode(LoadVersionRes_reserved5_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_errorCodes.RAW_encode(LoadVersionRes__errorCodesType_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved7.RAW_encode(LoadVersionRes_reserved7_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved8.RAW_encode(LoadVersionRes_reserved8_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct LoadVersionRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+OCTETSTRING_template field_reserved2;
+OCTETSTRING_template field_reserved3;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+LoadVersionRes__errorCodesType_template field_errorCodes;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void LoadVersionRes_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_vtfunction = ANY_VALUE;
+single_value->field_reserved2 = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_errorCodes = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void LoadVersionRes_template::copy_value(const LoadVersionRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.reserved2().is_bound()) {
+  single_value->field_reserved2 = other_value.reserved2();
+} else {
+  single_value->field_reserved2.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.errorCodes().is_bound()) {
+  single_value->field_errorCodes = other_value.errorCodes();
+} else {
+  single_value->field_errorCodes.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void LoadVersionRes_template::copy_template(const LoadVersionRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved2().get_selection()) {
+single_value->field_reserved2 = other_value.reserved2();
+} else {
+single_value->field_reserved2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.errorCodes().get_selection()) {
+single_value->field_errorCodes = other_value.errorCodes();
+} else {
+single_value->field_errorCodes.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new LoadVersionRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.LoadVersionRes.");
+break;
+}
+set_selection(other_value);
+}
+
+LoadVersionRes_template::LoadVersionRes_template()
+{
+}
+
+LoadVersionRes_template::LoadVersionRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+LoadVersionRes_template::LoadVersionRes_template(const LoadVersionRes& other_value)
+{
+copy_value(other_value);
+}
+
+LoadVersionRes_template::LoadVersionRes_template(const OPTIONAL<LoadVersionRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const LoadVersionRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.LoadVersionRes from an unbound optional field.");
+}
+}
+
+LoadVersionRes_template::LoadVersionRes_template(const LoadVersionRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+LoadVersionRes_template::~LoadVersionRes_template()
+{
+clean_up();
+}
+
+LoadVersionRes_template& LoadVersionRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+LoadVersionRes_template& LoadVersionRes_template::operator=(const LoadVersionRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+LoadVersionRes_template& LoadVersionRes_template::operator=(const OPTIONAL<LoadVersionRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const LoadVersionRes&)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 @IsobusVTMessageTypes.LoadVersionRes.");
+}
+return *this;
+}
+
+LoadVersionRes_template& LoadVersionRes_template::operator=(const LoadVersionRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean LoadVersionRes_template::match(const LoadVersionRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.reserved2().is_bound()) return FALSE;
+if(!single_value->field_reserved2.match(other_value.reserved2(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.errorCodes().is_bound()) return FALSE;
+if(!single_value->field_errorCodes.match(other_value.errorCodes(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.LoadVersionRes.");
+}
+return FALSE;
+}
+
+boolean LoadVersionRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_reserved2.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_errorCodes.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean LoadVersionRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_reserved2.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_errorCodes.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void LoadVersionRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+LoadVersionRes LoadVersionRes_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 @IsobusVTMessageTypes.LoadVersionRes.");
+LoadVersionRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_reserved2.is_bound()) {
+ret_val.reserved2() = single_value->field_reserved2.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_errorCodes.is_bound()) {
+ret_val.errorCodes() = single_value->field_errorCodes.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void LoadVersionRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.LoadVersionRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new LoadVersionRes_template[list_length];
+}
+
+LoadVersionRes_template& LoadVersionRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.LoadVersionRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.LoadVersionRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& LoadVersionRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& LoadVersionRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.LoadVersionRes.");
+return single_value->field_vtfunction;
+}
+
+OCTETSTRING_template& LoadVersionRes_template::reserved2()
+{
+set_specific();
+return single_value->field_reserved2;
+}
+
+const OCTETSTRING_template& LoadVersionRes_template::reserved2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved2 of a non-specific template of type @IsobusVTMessageTypes.LoadVersionRes.");
+return single_value->field_reserved2;
+}
+
+OCTETSTRING_template& LoadVersionRes_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const OCTETSTRING_template& LoadVersionRes_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.LoadVersionRes.");
+return single_value->field_reserved3;
+}
+
+OCTETSTRING_template& LoadVersionRes_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& LoadVersionRes_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.LoadVersionRes.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& LoadVersionRes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& LoadVersionRes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.LoadVersionRes.");
+return single_value->field_reserved5;
+}
+
+LoadVersionRes__errorCodesType_template& LoadVersionRes_template::errorCodes()
+{
+set_specific();
+return single_value->field_errorCodes;
+}
+
+const LoadVersionRes__errorCodesType_template& LoadVersionRes_template::errorCodes() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field errorCodes of a non-specific template of type @IsobusVTMessageTypes.LoadVersionRes.");
+return single_value->field_errorCodes;
+}
+
+OCTETSTRING_template& LoadVersionRes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& LoadVersionRes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.LoadVersionRes.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& LoadVersionRes_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& LoadVersionRes_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.LoadVersionRes.");
+return single_value->field_reserved8;
+}
+
+int LoadVersionRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.LoadVersionRes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.LoadVersionRes 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 @IsobusVTMessageTypes.LoadVersionRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.LoadVersionRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.LoadVersionRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.LoadVersionRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.LoadVersionRes.");
+  }
+  return 0;
+}
+
+void LoadVersionRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void LoadVersionRes_template::log_match(const LoadVersionRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved2.match(match_value.reserved2(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved2");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_errorCodes.match(match_value.errorCodes(), legacy)){
+TTCN_Logger::log_logmatch_info(".errorCodes");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 LoadVersionRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_reserved2.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_errorCodes.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.LoadVersionRes.");
+}
+}
+
+void LoadVersionRes_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_vtfunction.decode_text(text_buf);
+single_value->field_reserved2.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_errorCodes.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 LoadVersionRes_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 @IsobusVTMessageTypes.LoadVersionRes.");
+}
+}
+
+void LoadVersionRes_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: {
+    LoadVersionRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.LoadVersionRes has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.LoadVersionRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.LoadVersionRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void LoadVersionRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.LoadVersionRes");
+single_value->field_reserved2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.LoadVersionRes");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.LoadVersionRes");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.LoadVersionRes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.LoadVersionRes");
+single_value->field_errorCodes.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.LoadVersionRes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.LoadVersionRes");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.LoadVersionRes");
+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 : "@IsobusVTMessageTypes.LoadVersionRes");
+}
+
+boolean LoadVersionRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean LoadVersionRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+DeleteVersionRes__errorCodesType::DeleteVersionRes__errorCodesType()
+{
+}
+
+DeleteVersionRes__errorCodesType::DeleteVersionRes__errorCodesType(const BOOLEAN& par_reserved0,
+    const BOOLEAN& par_versionLabelIsNotCorrectOrVersionLabelUnknown,
+    const BOOLEAN& par_reserved2,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved4,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7)
+  :   field_reserved0(par_reserved0),
+  field_versionLabelIsNotCorrectOrVersionLabelUnknown(par_versionLabelIsNotCorrectOrVersionLabelUnknown),
+  field_reserved2(par_reserved2),
+  field_anyOtherError(par_anyOtherError),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7)
+{
+}
+
+DeleteVersionRes__errorCodesType::DeleteVersionRes__errorCodesType(const DeleteVersionRes__errorCodesType& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.DeleteVersionRes_errorCodesType.");
+if (other_value.reserved0().is_bound()) field_reserved0 = other_value.reserved0();
+else field_reserved0.clean_up();
+if (other_value.versionLabelIsNotCorrectOrVersionLabelUnknown().is_bound()) field_versionLabelIsNotCorrectOrVersionLabelUnknown = other_value.versionLabelIsNotCorrectOrVersionLabelUnknown();
+else field_versionLabelIsNotCorrectOrVersionLabelUnknown.clean_up();
+if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+else field_reserved2.clean_up();
+if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+else field_anyOtherError.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+}
+
+void DeleteVersionRes__errorCodesType::clean_up()
+{
+field_reserved0.clean_up();
+field_versionLabelIsNotCorrectOrVersionLabelUnknown.clean_up();
+field_reserved2.clean_up();
+field_anyOtherError.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+}
+
+const TTCN_Typedescriptor_t* DeleteVersionRes__errorCodesType::get_descriptor() const { return &DeleteVersionRes__errorCodesType_descr_; }
+DeleteVersionRes__errorCodesType& DeleteVersionRes__errorCodesType::operator=(const DeleteVersionRes__errorCodesType& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.DeleteVersionRes_errorCodesType.");
+  if (other_value.reserved0().is_bound()) field_reserved0 = other_value.reserved0();
+  else field_reserved0.clean_up();
+  if (other_value.versionLabelIsNotCorrectOrVersionLabelUnknown().is_bound()) field_versionLabelIsNotCorrectOrVersionLabelUnknown = other_value.versionLabelIsNotCorrectOrVersionLabelUnknown();
+  else field_versionLabelIsNotCorrectOrVersionLabelUnknown.clean_up();
+  if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+  else field_reserved2.clean_up();
+  if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+  else field_anyOtherError.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+}
+return *this;
+}
+
+boolean DeleteVersionRes__errorCodesType::operator==(const DeleteVersionRes__errorCodesType& other_value) const
+{
+return field_reserved0==other_value.field_reserved0
+  && field_versionLabelIsNotCorrectOrVersionLabelUnknown==other_value.field_versionLabelIsNotCorrectOrVersionLabelUnknown
+  && field_reserved2==other_value.field_reserved2
+  && field_anyOtherError==other_value.field_anyOtherError
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7;
+}
+
+boolean DeleteVersionRes__errorCodesType::is_bound() const
+{
+return (field_reserved0.is_bound())
+  || (field_versionLabelIsNotCorrectOrVersionLabelUnknown.is_bound())
+  || (field_reserved2.is_bound())
+  || (field_anyOtherError.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound());
+}
+boolean DeleteVersionRes__errorCodesType::is_value() const
+{
+return field_reserved0.is_value()
+  && field_versionLabelIsNotCorrectOrVersionLabelUnknown.is_value()
+  && field_reserved2.is_value()
+  && field_anyOtherError.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value();
+}
+void DeleteVersionRes__errorCodesType::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ reserved0 := ");
+field_reserved0.log();
+TTCN_Logger::log_event_str(", versionLabelIsNotCorrectOrVersionLabelUnknown := ");
+field_versionLabelIsNotCorrectOrVersionLabelUnknown.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+field_reserved2.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void DeleteVersionRes__errorCodesType::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.DeleteVersionRes_errorCodesType has 8 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) reserved0().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) versionLabelIsNotCorrectOrVersionLabelUnknown().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "reserved0")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved0().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(), "versionLabelIsNotCorrectOrVersionLabelUnknown")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          versionLabelIsNotCorrectOrVersionLabelUnknown().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.DeleteVersionRes_errorCodesType: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.DeleteVersionRes_errorCodesType");
+  }
+}
+
+void DeleteVersionRes__errorCodesType::set_implicit_omit()
+{
+if (reserved0().is_bound()) reserved0().set_implicit_omit();
+if (versionLabelIsNotCorrectOrVersionLabelUnknown().is_bound()) versionLabelIsNotCorrectOrVersionLabelUnknown().set_implicit_omit();
+if (reserved2().is_bound()) reserved2().set_implicit_omit();
+if (anyOtherError().is_bound()) anyOtherError().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+}
+
+void DeleteVersionRes__errorCodesType::encode_text(Text_Buf& text_buf) const
+{
+field_reserved0.encode_text(text_buf);
+field_versionLabelIsNotCorrectOrVersionLabelUnknown.encode_text(text_buf);
+field_reserved2.encode_text(text_buf);
+field_anyOtherError.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+}
+
+void DeleteVersionRes__errorCodesType::decode_text(Text_Buf& text_buf)
+{
+field_reserved0.decode_text(text_buf);
+field_versionLabelIsNotCorrectOrVersionLabelUnknown.decode_text(text_buf);
+field_reserved2.decode_text(text_buf);
+field_anyOtherError.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+}
+
+void DeleteVersionRes__errorCodesType::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void DeleteVersionRes__errorCodesType::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int DeleteVersionRes__errorCodesType::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved0.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_versionLabelIsNotCorrectOrVersionLabelUnknown.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved2.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_anyOtherError.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int DeleteVersionRes__errorCodesType::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_reserved0.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_versionLabelIsNotCorrectOrVersionLabelUnknown.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved2.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_anyOtherError.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved4.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved5.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved6.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved7.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct DeleteVersionRes__errorCodesType_template::single_value_struct {
+BOOLEAN_template field_reserved0;
+BOOLEAN_template field_versionLabelIsNotCorrectOrVersionLabelUnknown;
+BOOLEAN_template field_reserved2;
+BOOLEAN_template field_anyOtherError;
+BOOLEAN_template field_reserved4;
+BOOLEAN_template field_reserved5;
+BOOLEAN_template field_reserved6;
+BOOLEAN_template field_reserved7;
+};
+
+void DeleteVersionRes__errorCodesType_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_reserved0 = ANY_VALUE;
+single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown = ANY_VALUE;
+single_value->field_reserved2 = ANY_VALUE;
+single_value->field_anyOtherError = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+}
+}
+}
+
+void DeleteVersionRes__errorCodesType_template::copy_value(const DeleteVersionRes__errorCodesType& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.reserved0().is_bound()) {
+  single_value->field_reserved0 = other_value.reserved0();
+} else {
+  single_value->field_reserved0.clean_up();
+}
+if (other_value.versionLabelIsNotCorrectOrVersionLabelUnknown().is_bound()) {
+  single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown = other_value.versionLabelIsNotCorrectOrVersionLabelUnknown();
+} else {
+  single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown.clean_up();
+}
+if (other_value.reserved2().is_bound()) {
+  single_value->field_reserved2 = other_value.reserved2();
+} else {
+  single_value->field_reserved2.clean_up();
+}
+if (other_value.anyOtherError().is_bound()) {
+  single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+  single_value->field_anyOtherError.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void DeleteVersionRes__errorCodesType_template::copy_template(const DeleteVersionRes__errorCodesType_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.reserved0().get_selection()) {
+single_value->field_reserved0 = other_value.reserved0();
+} else {
+single_value->field_reserved0.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.versionLabelIsNotCorrectOrVersionLabelUnknown().get_selection()) {
+single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown = other_value.versionLabelIsNotCorrectOrVersionLabelUnknown();
+} else {
+single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved2().get_selection()) {
+single_value->field_reserved2 = other_value.reserved2();
+} else {
+single_value->field_reserved2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.anyOtherError().get_selection()) {
+single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+single_value->field_anyOtherError.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new DeleteVersionRes__errorCodesType_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.DeleteVersionRes_errorCodesType.");
+break;
+}
+set_selection(other_value);
+}
+
+DeleteVersionRes__errorCodesType_template::DeleteVersionRes__errorCodesType_template()
+{
+}
+
+DeleteVersionRes__errorCodesType_template::DeleteVersionRes__errorCodesType_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+DeleteVersionRes__errorCodesType_template::DeleteVersionRes__errorCodesType_template(const DeleteVersionRes__errorCodesType& other_value)
+{
+copy_value(other_value);
+}
+
+DeleteVersionRes__errorCodesType_template::DeleteVersionRes__errorCodesType_template(const OPTIONAL<DeleteVersionRes__errorCodesType>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const DeleteVersionRes__errorCodesType&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.DeleteVersionRes_errorCodesType from an unbound optional field.");
+}
+}
+
+DeleteVersionRes__errorCodesType_template::DeleteVersionRes__errorCodesType_template(const DeleteVersionRes__errorCodesType_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+DeleteVersionRes__errorCodesType_template::~DeleteVersionRes__errorCodesType_template()
+{
+clean_up();
+}
+
+DeleteVersionRes__errorCodesType_template& DeleteVersionRes__errorCodesType_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+DeleteVersionRes__errorCodesType_template& DeleteVersionRes__errorCodesType_template::operator=(const DeleteVersionRes__errorCodesType& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+DeleteVersionRes__errorCodesType_template& DeleteVersionRes__errorCodesType_template::operator=(const OPTIONAL<DeleteVersionRes__errorCodesType>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const DeleteVersionRes__errorCodesType&)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 @IsobusVTMessageTypes.DeleteVersionRes_errorCodesType.");
+}
+return *this;
+}
+
+DeleteVersionRes__errorCodesType_template& DeleteVersionRes__errorCodesType_template::operator=(const DeleteVersionRes__errorCodesType_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean DeleteVersionRes__errorCodesType_template::match(const DeleteVersionRes__errorCodesType& 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.reserved0().is_bound()) return FALSE;
+if(!single_value->field_reserved0.match(other_value.reserved0(), legacy))return FALSE;
+if(!other_value.versionLabelIsNotCorrectOrVersionLabelUnknown().is_bound()) return FALSE;
+if(!single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown.match(other_value.versionLabelIsNotCorrectOrVersionLabelUnknown(), legacy))return FALSE;
+if(!other_value.reserved2().is_bound()) return FALSE;
+if(!single_value->field_reserved2.match(other_value.reserved2(), legacy))return FALSE;
+if(!other_value.anyOtherError().is_bound()) return FALSE;
+if(!single_value->field_anyOtherError.match(other_value.anyOtherError(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.DeleteVersionRes_errorCodesType.");
+}
+return FALSE;
+}
+
+boolean DeleteVersionRes__errorCodesType_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_reserved0.is_bound()
+
+ ||single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown.is_bound()
+
+ ||single_value->field_reserved2.is_bound()
+
+ ||single_value->field_anyOtherError.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+;
+}
+
+boolean DeleteVersionRes__errorCodesType_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_reserved0.is_value()
+ &&single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown.is_value()
+ &&single_value->field_reserved2.is_value()
+ &&single_value->field_anyOtherError.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value();
+}
+
+void DeleteVersionRes__errorCodesType_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+DeleteVersionRes__errorCodesType DeleteVersionRes__errorCodesType_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 @IsobusVTMessageTypes.DeleteVersionRes_errorCodesType.");
+DeleteVersionRes__errorCodesType ret_val;
+if (single_value->field_reserved0.is_bound()) {
+ret_val.reserved0() = single_value->field_reserved0.valueof();
+}
+if (single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown.is_bound()) {
+ret_val.versionLabelIsNotCorrectOrVersionLabelUnknown() = single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown.valueof();
+}
+if (single_value->field_reserved2.is_bound()) {
+ret_val.reserved2() = single_value->field_reserved2.valueof();
+}
+if (single_value->field_anyOtherError.is_bound()) {
+ret_val.anyOtherError() = single_value->field_anyOtherError.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+return ret_val;
+}
+
+void DeleteVersionRes__errorCodesType_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.DeleteVersionRes_errorCodesType.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new DeleteVersionRes__errorCodesType_template[list_length];
+}
+
+DeleteVersionRes__errorCodesType_template& DeleteVersionRes__errorCodesType_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.DeleteVersionRes_errorCodesType.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.DeleteVersionRes_errorCodesType.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& DeleteVersionRes__errorCodesType_template::reserved0()
+{
+set_specific();
+return single_value->field_reserved0;
+}
+
+const BOOLEAN_template& DeleteVersionRes__errorCodesType_template::reserved0() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved0 of a non-specific template of type @IsobusVTMessageTypes.DeleteVersionRes_errorCodesType.");
+return single_value->field_reserved0;
+}
+
+BOOLEAN_template& DeleteVersionRes__errorCodesType_template::versionLabelIsNotCorrectOrVersionLabelUnknown()
+{
+set_specific();
+return single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown;
+}
+
+const BOOLEAN_template& DeleteVersionRes__errorCodesType_template::versionLabelIsNotCorrectOrVersionLabelUnknown() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field versionLabelIsNotCorrectOrVersionLabelUnknown of a non-specific template of type @IsobusVTMessageTypes.DeleteVersionRes_errorCodesType.");
+return single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown;
+}
+
+BOOLEAN_template& DeleteVersionRes__errorCodesType_template::reserved2()
+{
+set_specific();
+return single_value->field_reserved2;
+}
+
+const BOOLEAN_template& DeleteVersionRes__errorCodesType_template::reserved2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved2 of a non-specific template of type @IsobusVTMessageTypes.DeleteVersionRes_errorCodesType.");
+return single_value->field_reserved2;
+}
+
+BOOLEAN_template& DeleteVersionRes__errorCodesType_template::anyOtherError()
+{
+set_specific();
+return single_value->field_anyOtherError;
+}
+
+const BOOLEAN_template& DeleteVersionRes__errorCodesType_template::anyOtherError() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field anyOtherError of a non-specific template of type @IsobusVTMessageTypes.DeleteVersionRes_errorCodesType.");
+return single_value->field_anyOtherError;
+}
+
+BOOLEAN_template& DeleteVersionRes__errorCodesType_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const BOOLEAN_template& DeleteVersionRes__errorCodesType_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.DeleteVersionRes_errorCodesType.");
+return single_value->field_reserved4;
+}
+
+BOOLEAN_template& DeleteVersionRes__errorCodesType_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const BOOLEAN_template& DeleteVersionRes__errorCodesType_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.DeleteVersionRes_errorCodesType.");
+return single_value->field_reserved5;
+}
+
+BOOLEAN_template& DeleteVersionRes__errorCodesType_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const BOOLEAN_template& DeleteVersionRes__errorCodesType_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.DeleteVersionRes_errorCodesType.");
+return single_value->field_reserved6;
+}
+
+BOOLEAN_template& DeleteVersionRes__errorCodesType_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const BOOLEAN_template& DeleteVersionRes__errorCodesType_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.DeleteVersionRes_errorCodesType.");
+return single_value->field_reserved7;
+}
+
+int DeleteVersionRes__errorCodesType_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DeleteVersionRes_errorCodesType which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DeleteVersionRes_errorCodesType 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 @IsobusVTMessageTypes.DeleteVersionRes_errorCodesType containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DeleteVersionRes_errorCodesType containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DeleteVersionRes_errorCodesType containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DeleteVersionRes_errorCodesType containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.DeleteVersionRes_errorCodesType.");
+  }
+  return 0;
+}
+
+void DeleteVersionRes__errorCodesType_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ reserved0 := ");
+single_value->field_reserved0.log();
+TTCN_Logger::log_event_str(", versionLabelIsNotCorrectOrVersionLabelUnknown := ");
+single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void DeleteVersionRes__errorCodesType_template::log_match(const DeleteVersionRes__errorCodesType& 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_reserved0.match(match_value.reserved0(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved0");
+single_value->field_reserved0.log_match(match_value.reserved0(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown.match(match_value.versionLabelIsNotCorrectOrVersionLabelUnknown(), legacy)){
+TTCN_Logger::log_logmatch_info(".versionLabelIsNotCorrectOrVersionLabelUnknown");
+single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown.log_match(match_value.versionLabelIsNotCorrectOrVersionLabelUnknown(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved2.match(match_value.reserved2(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved2");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_anyOtherError.match(match_value.anyOtherError(), legacy)){
+TTCN_Logger::log_logmatch_info(".anyOtherError");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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("{ reserved0 := ");
+single_value->field_reserved0.log_match(match_value.reserved0(), legacy);
+TTCN_Logger::log_event_str(", versionLabelIsNotCorrectOrVersionLabelUnknown := ");
+single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown.log_match(match_value.versionLabelIsNotCorrectOrVersionLabelUnknown(), legacy);
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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 DeleteVersionRes__errorCodesType_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_reserved0.encode_text(text_buf);
+single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown.encode_text(text_buf);
+single_value->field_reserved2.encode_text(text_buf);
+single_value->field_anyOtherError.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.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 @IsobusVTMessageTypes.DeleteVersionRes_errorCodesType.");
+}
+}
+
+void DeleteVersionRes__errorCodesType_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_reserved0.decode_text(text_buf);
+single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown.decode_text(text_buf);
+single_value->field_reserved2.decode_text(text_buf);
+single_value->field_anyOtherError.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.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 DeleteVersionRes__errorCodesType_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 @IsobusVTMessageTypes.DeleteVersionRes_errorCodesType.");
+}
+}
+
+void DeleteVersionRes__errorCodesType_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: {
+    DeleteVersionRes__errorCodesType_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.DeleteVersionRes_errorCodesType has 8 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) reserved0().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) versionLabelIsNotCorrectOrVersionLabelUnknown().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "reserved0")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved0().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(), "versionLabelIsNotCorrectOrVersionLabelUnknown")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          versionLabelIsNotCorrectOrVersionLabelUnknown().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.DeleteVersionRes_errorCodesType: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.DeleteVersionRes_errorCodesType");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void DeleteVersionRes__errorCodesType_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_reserved0.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DeleteVersionRes_errorCodesType");
+single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DeleteVersionRes_errorCodesType");
+single_value->field_reserved2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DeleteVersionRes_errorCodesType");
+single_value->field_anyOtherError.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DeleteVersionRes_errorCodesType");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DeleteVersionRes_errorCodesType");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DeleteVersionRes_errorCodesType");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DeleteVersionRes_errorCodesType");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DeleteVersionRes_errorCodesType");
+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 : "@IsobusVTMessageTypes.DeleteVersionRes_errorCodesType");
+}
+
+boolean DeleteVersionRes__errorCodesType_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean DeleteVersionRes__errorCodesType_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+DeleteVersionRes::DeleteVersionRes()
+{
+}
+
+DeleteVersionRes::DeleteVersionRes(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_reserved2,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const DeleteVersionRes__errorCodesType& par_errorCodes,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_reserved2(par_reserved2),
+  field_reserved3(par_reserved3),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_errorCodes(par_errorCodes),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+DeleteVersionRes::DeleteVersionRes(const DeleteVersionRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.DeleteVersionRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+else field_reserved2.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+else field_errorCodes.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void DeleteVersionRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_reserved2.clean_up();
+field_reserved3.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_errorCodes.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* DeleteVersionRes::get_descriptor() const { return &DeleteVersionRes_descr_; }
+DeleteVersionRes& DeleteVersionRes::operator=(const DeleteVersionRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.DeleteVersionRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+  else field_reserved2.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+  else field_errorCodes.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean DeleteVersionRes::operator==(const DeleteVersionRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_reserved2==other_value.field_reserved2
+  && field_reserved3==other_value.field_reserved3
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_errorCodes==other_value.field_errorCodes
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean DeleteVersionRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_reserved2.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_errorCodes.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean DeleteVersionRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_reserved2.is_value()
+  && field_reserved3.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_errorCodes.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void DeleteVersionRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void DeleteVersionRes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.DeleteVersionRes has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.DeleteVersionRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.DeleteVersionRes");
+  }
+}
+
+void DeleteVersionRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (reserved2().is_bound()) reserved2().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (errorCodes().is_bound()) errorCodes().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void DeleteVersionRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_reserved2.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_errorCodes.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void DeleteVersionRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_reserved2.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_errorCodes.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void DeleteVersionRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void DeleteVersionRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int DeleteVersionRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, DeleteVersionRes_reserved2_descr_.raw->forceomit);
+  decoded_field_length = field_reserved2.RAW_decode(DeleteVersionRes_reserved2_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, DeleteVersionRes_reserved3_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(DeleteVersionRes_reserved3_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, DeleteVersionRes_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(DeleteVersionRes_reserved4_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, DeleteVersionRes_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(DeleteVersionRes_reserved5_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, DeleteVersionRes__errorCodesType_descr_.raw->forceomit);
+  decoded_field_length = field_errorCodes.RAW_decode(DeleteVersionRes__errorCodesType_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, DeleteVersionRes_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(DeleteVersionRes_reserved7_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, DeleteVersionRes_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(DeleteVersionRes_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int DeleteVersionRes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, DeleteVersionRes_reserved2_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, DeleteVersionRes_reserved3_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, DeleteVersionRes_reserved4_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, DeleteVersionRes_reserved5_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, DeleteVersionRes__errorCodesType_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, DeleteVersionRes_reserved7_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, DeleteVersionRes_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved2.RAW_encode(DeleteVersionRes_reserved2_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved3.RAW_encode(DeleteVersionRes_reserved3_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved4.RAW_encode(DeleteVersionRes_reserved4_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved5.RAW_encode(DeleteVersionRes_reserved5_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_errorCodes.RAW_encode(DeleteVersionRes__errorCodesType_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved7.RAW_encode(DeleteVersionRes_reserved7_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved8.RAW_encode(DeleteVersionRes_reserved8_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct DeleteVersionRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+OCTETSTRING_template field_reserved2;
+OCTETSTRING_template field_reserved3;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+DeleteVersionRes__errorCodesType_template field_errorCodes;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void DeleteVersionRes_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_vtfunction = ANY_VALUE;
+single_value->field_reserved2 = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_errorCodes = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void DeleteVersionRes_template::copy_value(const DeleteVersionRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.reserved2().is_bound()) {
+  single_value->field_reserved2 = other_value.reserved2();
+} else {
+  single_value->field_reserved2.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.errorCodes().is_bound()) {
+  single_value->field_errorCodes = other_value.errorCodes();
+} else {
+  single_value->field_errorCodes.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void DeleteVersionRes_template::copy_template(const DeleteVersionRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved2().get_selection()) {
+single_value->field_reserved2 = other_value.reserved2();
+} else {
+single_value->field_reserved2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.errorCodes().get_selection()) {
+single_value->field_errorCodes = other_value.errorCodes();
+} else {
+single_value->field_errorCodes.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new DeleteVersionRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.DeleteVersionRes.");
+break;
+}
+set_selection(other_value);
+}
+
+DeleteVersionRes_template::DeleteVersionRes_template()
+{
+}
+
+DeleteVersionRes_template::DeleteVersionRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+DeleteVersionRes_template::DeleteVersionRes_template(const DeleteVersionRes& other_value)
+{
+copy_value(other_value);
+}
+
+DeleteVersionRes_template::DeleteVersionRes_template(const OPTIONAL<DeleteVersionRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const DeleteVersionRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.DeleteVersionRes from an unbound optional field.");
+}
+}
+
+DeleteVersionRes_template::DeleteVersionRes_template(const DeleteVersionRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+DeleteVersionRes_template::~DeleteVersionRes_template()
+{
+clean_up();
+}
+
+DeleteVersionRes_template& DeleteVersionRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+DeleteVersionRes_template& DeleteVersionRes_template::operator=(const DeleteVersionRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+DeleteVersionRes_template& DeleteVersionRes_template::operator=(const OPTIONAL<DeleteVersionRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const DeleteVersionRes&)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 @IsobusVTMessageTypes.DeleteVersionRes.");
+}
+return *this;
+}
+
+DeleteVersionRes_template& DeleteVersionRes_template::operator=(const DeleteVersionRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean DeleteVersionRes_template::match(const DeleteVersionRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.reserved2().is_bound()) return FALSE;
+if(!single_value->field_reserved2.match(other_value.reserved2(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.errorCodes().is_bound()) return FALSE;
+if(!single_value->field_errorCodes.match(other_value.errorCodes(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.DeleteVersionRes.");
+}
+return FALSE;
+}
+
+boolean DeleteVersionRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_reserved2.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_errorCodes.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean DeleteVersionRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_reserved2.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_errorCodes.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void DeleteVersionRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+DeleteVersionRes DeleteVersionRes_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 @IsobusVTMessageTypes.DeleteVersionRes.");
+DeleteVersionRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_reserved2.is_bound()) {
+ret_val.reserved2() = single_value->field_reserved2.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_errorCodes.is_bound()) {
+ret_val.errorCodes() = single_value->field_errorCodes.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void DeleteVersionRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.DeleteVersionRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new DeleteVersionRes_template[list_length];
+}
+
+DeleteVersionRes_template& DeleteVersionRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.DeleteVersionRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.DeleteVersionRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& DeleteVersionRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& DeleteVersionRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.DeleteVersionRes.");
+return single_value->field_vtfunction;
+}
+
+OCTETSTRING_template& DeleteVersionRes_template::reserved2()
+{
+set_specific();
+return single_value->field_reserved2;
+}
+
+const OCTETSTRING_template& DeleteVersionRes_template::reserved2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved2 of a non-specific template of type @IsobusVTMessageTypes.DeleteVersionRes.");
+return single_value->field_reserved2;
+}
+
+OCTETSTRING_template& DeleteVersionRes_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const OCTETSTRING_template& DeleteVersionRes_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.DeleteVersionRes.");
+return single_value->field_reserved3;
+}
+
+OCTETSTRING_template& DeleteVersionRes_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& DeleteVersionRes_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.DeleteVersionRes.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& DeleteVersionRes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& DeleteVersionRes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.DeleteVersionRes.");
+return single_value->field_reserved5;
+}
+
+DeleteVersionRes__errorCodesType_template& DeleteVersionRes_template::errorCodes()
+{
+set_specific();
+return single_value->field_errorCodes;
+}
+
+const DeleteVersionRes__errorCodesType_template& DeleteVersionRes_template::errorCodes() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field errorCodes of a non-specific template of type @IsobusVTMessageTypes.DeleteVersionRes.");
+return single_value->field_errorCodes;
+}
+
+OCTETSTRING_template& DeleteVersionRes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& DeleteVersionRes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.DeleteVersionRes.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& DeleteVersionRes_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& DeleteVersionRes_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.DeleteVersionRes.");
+return single_value->field_reserved8;
+}
+
+int DeleteVersionRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DeleteVersionRes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DeleteVersionRes 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 @IsobusVTMessageTypes.DeleteVersionRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DeleteVersionRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DeleteVersionRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DeleteVersionRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.DeleteVersionRes.");
+  }
+  return 0;
+}
+
+void DeleteVersionRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void DeleteVersionRes_template::log_match(const DeleteVersionRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved2.match(match_value.reserved2(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved2");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_errorCodes.match(match_value.errorCodes(), legacy)){
+TTCN_Logger::log_logmatch_info(".errorCodes");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 DeleteVersionRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_reserved2.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_errorCodes.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.DeleteVersionRes.");
+}
+}
+
+void DeleteVersionRes_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_vtfunction.decode_text(text_buf);
+single_value->field_reserved2.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_errorCodes.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 DeleteVersionRes_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 @IsobusVTMessageTypes.DeleteVersionRes.");
+}
+}
+
+void DeleteVersionRes_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: {
+    DeleteVersionRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.DeleteVersionRes has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.DeleteVersionRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.DeleteVersionRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void DeleteVersionRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DeleteVersionRes");
+single_value->field_reserved2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DeleteVersionRes");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DeleteVersionRes");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DeleteVersionRes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DeleteVersionRes");
+single_value->field_errorCodes.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DeleteVersionRes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DeleteVersionRes");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DeleteVersionRes");
+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 : "@IsobusVTMessageTypes.DeleteVersionRes");
+}
+
+boolean DeleteVersionRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean DeleteVersionRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+DeleteVersionReq::DeleteVersionReq()
+{
+}
+
+DeleteVersionReq::DeleteVersionReq(const INTEGER& par_vtfunction,
+    const CHARSTRING& par_versionLabel)
+  :   field_vtfunction(par_vtfunction),
+  field_versionLabel(par_versionLabel)
+{
+}
+
+DeleteVersionReq::DeleteVersionReq(const DeleteVersionReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.DeleteVersionReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.versionLabel().is_bound()) field_versionLabel = other_value.versionLabel();
+else field_versionLabel.clean_up();
+}
+
+void DeleteVersionReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_versionLabel.clean_up();
+}
+
+const TTCN_Typedescriptor_t* DeleteVersionReq::get_descriptor() const { return &DeleteVersionReq_descr_; }
+DeleteVersionReq& DeleteVersionReq::operator=(const DeleteVersionReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.DeleteVersionReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.versionLabel().is_bound()) field_versionLabel = other_value.versionLabel();
+  else field_versionLabel.clean_up();
+}
+return *this;
+}
+
+boolean DeleteVersionReq::operator==(const DeleteVersionReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_versionLabel==other_value.field_versionLabel;
+}
+
+boolean DeleteVersionReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_versionLabel.is_bound());
+}
+boolean DeleteVersionReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_versionLabel.is_value();
+}
+void DeleteVersionReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", versionLabel := ");
+field_versionLabel.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void DeleteVersionReq::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 @IsobusVTMessageTypes.DeleteVersionReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) versionLabel().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "versionLabel")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          versionLabel().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 @IsobusVTMessageTypes.DeleteVersionReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.DeleteVersionReq");
+  }
+}
+
+void DeleteVersionReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (versionLabel().is_bound()) versionLabel().set_implicit_omit();
+}
+
+void DeleteVersionReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_versionLabel.encode_text(text_buf);
+}
+
+void DeleteVersionReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_versionLabel.decode_text(text_buf);
+}
+
+void DeleteVersionReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void DeleteVersionReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int DeleteVersionReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, VersionLabel7Char_descr_.raw->forceomit);
+  decoded_field_length = field_versionLabel.RAW_decode(VersionLabel7Char_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 DeleteVersionReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, VersionLabel7Char_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_versionLabel.RAW_encode(VersionLabel7Char_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct DeleteVersionReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+CHARSTRING_template field_versionLabel;
+};
+
+void DeleteVersionReq_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_vtfunction = ANY_VALUE;
+single_value->field_versionLabel = ANY_VALUE;
+}
+}
+}
+
+void DeleteVersionReq_template::copy_value(const DeleteVersionReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.versionLabel().is_bound()) {
+  single_value->field_versionLabel = other_value.versionLabel();
+} else {
+  single_value->field_versionLabel.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void DeleteVersionReq_template::copy_template(const DeleteVersionReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.versionLabel().get_selection()) {
+single_value->field_versionLabel = other_value.versionLabel();
+} else {
+single_value->field_versionLabel.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new DeleteVersionReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.DeleteVersionReq.");
+break;
+}
+set_selection(other_value);
+}
+
+DeleteVersionReq_template::DeleteVersionReq_template()
+{
+}
+
+DeleteVersionReq_template::DeleteVersionReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+DeleteVersionReq_template::DeleteVersionReq_template(const DeleteVersionReq& other_value)
+{
+copy_value(other_value);
+}
+
+DeleteVersionReq_template::DeleteVersionReq_template(const OPTIONAL<DeleteVersionReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const DeleteVersionReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.DeleteVersionReq from an unbound optional field.");
+}
+}
+
+DeleteVersionReq_template::DeleteVersionReq_template(const DeleteVersionReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+DeleteVersionReq_template::~DeleteVersionReq_template()
+{
+clean_up();
+}
+
+DeleteVersionReq_template& DeleteVersionReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+DeleteVersionReq_template& DeleteVersionReq_template::operator=(const DeleteVersionReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+DeleteVersionReq_template& DeleteVersionReq_template::operator=(const OPTIONAL<DeleteVersionReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const DeleteVersionReq&)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 @IsobusVTMessageTypes.DeleteVersionReq.");
+}
+return *this;
+}
+
+DeleteVersionReq_template& DeleteVersionReq_template::operator=(const DeleteVersionReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean DeleteVersionReq_template::match(const DeleteVersionReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.versionLabel().is_bound()) return FALSE;
+if(!single_value->field_versionLabel.match(other_value.versionLabel(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.DeleteVersionReq.");
+}
+return FALSE;
+}
+
+boolean DeleteVersionReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_versionLabel.is_bound()
+;
+}
+
+boolean DeleteVersionReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_versionLabel.is_value();
+}
+
+void DeleteVersionReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+DeleteVersionReq DeleteVersionReq_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 @IsobusVTMessageTypes.DeleteVersionReq.");
+DeleteVersionReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_versionLabel.is_bound()) {
+ret_val.versionLabel() = single_value->field_versionLabel.valueof();
+}
+return ret_val;
+}
+
+void DeleteVersionReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.DeleteVersionReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new DeleteVersionReq_template[list_length];
+}
+
+DeleteVersionReq_template& DeleteVersionReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.DeleteVersionReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.DeleteVersionReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& DeleteVersionReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& DeleteVersionReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.DeleteVersionReq.");
+return single_value->field_vtfunction;
+}
+
+CHARSTRING_template& DeleteVersionReq_template::versionLabel()
+{
+set_specific();
+return single_value->field_versionLabel;
+}
+
+const CHARSTRING_template& DeleteVersionReq_template::versionLabel() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field versionLabel of a non-specific template of type @IsobusVTMessageTypes.DeleteVersionReq.");
+return single_value->field_versionLabel;
+}
+
+int DeleteVersionReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DeleteVersionReq 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 @IsobusVTMessageTypes.DeleteVersionReq 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 @IsobusVTMessageTypes.DeleteVersionReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DeleteVersionReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DeleteVersionReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.DeleteVersionReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.DeleteVersionReq.");
+  }
+  return 0;
+}
+
+void DeleteVersionReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", versionLabel := ");
+single_value->field_versionLabel.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void DeleteVersionReq_template::log_match(const DeleteVersionReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_versionLabel.match(match_value.versionLabel(), legacy)){
+TTCN_Logger::log_logmatch_info(".versionLabel");
+single_value->field_versionLabel.log_match(match_value.versionLabel(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", versionLabel := ");
+single_value->field_versionLabel.log_match(match_value.versionLabel(), 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 DeleteVersionReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_versionLabel.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 @IsobusVTMessageTypes.DeleteVersionReq.");
+}
+}
+
+void DeleteVersionReq_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_vtfunction.decode_text(text_buf);
+single_value->field_versionLabel.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 DeleteVersionReq_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 @IsobusVTMessageTypes.DeleteVersionReq.");
+}
+}
+
+void DeleteVersionReq_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: {
+    DeleteVersionReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.DeleteVersionReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) versionLabel().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "versionLabel")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          versionLabel().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 @IsobusVTMessageTypes.DeleteVersionReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.DeleteVersionReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void DeleteVersionReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DeleteVersionReq");
+single_value->field_versionLabel.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.DeleteVersionReq");
+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 : "@IsobusVTMessageTypes.DeleteVersionReq");
+}
+
+boolean DeleteVersionReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean DeleteVersionReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ExtendedGetVersionsRes::ExtendedGetVersionsRes()
+{
+}
+
+ExtendedGetVersionsRes::ExtendedGetVersionsRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_numberOfVersionStrings,
+    const OCTETSTRING& par_versionLabels,
+    const OPTIONAL<OCTETSTRING>& par_padding)
+  :   field_vtfunction(par_vtfunction),
+  field_numberOfVersionStrings(par_numberOfVersionStrings),
+  field_versionLabels(par_versionLabels),
+  field_padding(par_padding)
+{
+}
+
+ExtendedGetVersionsRes::ExtendedGetVersionsRes(const ExtendedGetVersionsRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ExtendedGetVersionsRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.numberOfVersionStrings().is_bound()) field_numberOfVersionStrings = other_value.numberOfVersionStrings();
+else field_numberOfVersionStrings.clean_up();
+if (other_value.versionLabels().is_bound()) field_versionLabels = other_value.versionLabels();
+else field_versionLabels.clean_up();
+if (other_value.padding().is_bound()) field_padding = other_value.padding();
+else field_padding.clean_up();
+}
+
+void ExtendedGetVersionsRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_numberOfVersionStrings.clean_up();
+field_versionLabels.clean_up();
+field_padding.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ExtendedGetVersionsRes::get_descriptor() const { return &ExtendedGetVersionsRes_descr_; }
+ExtendedGetVersionsRes& ExtendedGetVersionsRes::operator=(const ExtendedGetVersionsRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ExtendedGetVersionsRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.numberOfVersionStrings().is_bound()) field_numberOfVersionStrings = other_value.numberOfVersionStrings();
+  else field_numberOfVersionStrings.clean_up();
+  if (other_value.versionLabels().is_bound()) field_versionLabels = other_value.versionLabels();
+  else field_versionLabels.clean_up();
+  if (other_value.padding().is_bound()) field_padding = other_value.padding();
+  else field_padding.clean_up();
+}
+return *this;
+}
+
+boolean ExtendedGetVersionsRes::operator==(const ExtendedGetVersionsRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_numberOfVersionStrings==other_value.field_numberOfVersionStrings
+  && field_versionLabels==other_value.field_versionLabels
+  && field_padding==other_value.field_padding;
+}
+
+boolean ExtendedGetVersionsRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_numberOfVersionStrings.is_bound())
+  || (field_versionLabels.is_bound())
+  || (OPTIONAL_OMIT == field_padding.get_selection() || field_padding.is_bound());
+}
+boolean ExtendedGetVersionsRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_numberOfVersionStrings.is_value()
+  && field_versionLabels.is_value()
+  && (OPTIONAL_OMIT == field_padding.get_selection() || field_padding.is_value());
+}
+int ExtendedGetVersionsRes::size_of() const
+{
+  int ret_val = 3;
+  if (field_padding.ispresent()) ret_val++;
+  return ret_val;
+}
+
+void ExtendedGetVersionsRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", numberOfVersionStrings := ");
+field_numberOfVersionStrings.log();
+TTCN_Logger::log_event_str(", versionLabels := ");
+field_versionLabels.log();
+TTCN_Logger::log_event_str(", padding := ");
+field_padding.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ExtendedGetVersionsRes::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 @IsobusVTMessageTypes.ExtendedGetVersionsRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) numberOfVersionStrings().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) versionLabels().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) padding().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "numberOfVersionStrings")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          numberOfVersionStrings().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(), "versionLabels")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          versionLabels().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(), "padding")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          padding().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 @IsobusVTMessageTypes.ExtendedGetVersionsRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ExtendedGetVersionsRes");
+  }
+}
+
+void ExtendedGetVersionsRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (numberOfVersionStrings().is_bound()) numberOfVersionStrings().set_implicit_omit();
+if (versionLabels().is_bound()) versionLabels().set_implicit_omit();
+if (!padding().is_bound()) padding() = OMIT_VALUE;
+else padding().set_implicit_omit();
+}
+
+void ExtendedGetVersionsRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_numberOfVersionStrings.encode_text(text_buf);
+field_versionLabels.encode_text(text_buf);
+field_padding.encode_text(text_buf);
+}
+
+void ExtendedGetVersionsRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_numberOfVersionStrings.decode_text(text_buf);
+field_versionLabels.decode_text(text_buf);
+field_padding.decode_text(text_buf);
+}
+
+void ExtendedGetVersionsRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ExtendedGetVersionsRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ExtendedGetVersionsRes::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;
+  int value_of_length_field1 = 0;
+  RAW_Force_Omit field_0_force_omit(0, force_omit, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ExtendedGetVersionsRes_numberOfVersionStrings_descr_.raw->forceomit);
+  decoded_field_length = field_numberOfVersionStrings.RAW_decode(ExtendedGetVersionsRes_numberOfVersionStrings_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());
+  value_of_length_field1+=field_numberOfVersionStrings.get_long_long_val()*1;
+  RAW_Force_Omit field_2_force_omit(2, force_omit, General__Types::OCT32_descr_.raw->forceomit);
+  decoded_field_length = field_versionLabels.RAW_decode(General__Types::OCT32_descr_, p_buf, limit, local_top_order, no_err, value_of_length_field1, 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());
+  value_of_length_field1 -= decoded_field_length;
+  if (limit > 0){
+  if (force_omit != NULL && (*force_omit)(3)) {
+    field_padding = OMIT_VALUE;
+  }
+  else {
+  size_t fl_start_pos = p_buf.get_pos_bit();
+  RAW_Force_Omit field_3_force_omit(3, force_omit, General__Types::OCT6_descr_.raw->forceomit);
+  decoded_field_length = field_padding().RAW_decode(General__Types::OCT6_descr_, p_buf, limit, local_top_order, TRUE, -1, TRUE, &field_3_force_omit);
+  if (decoded_field_length < 1) {
+  field_padding = 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_padding=OMIT_VALUE;
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ExtendedGetVersionsRes::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ExtendedGetVersionsRes_numberOfVersionStrings_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, General__Types::OCT32_descr_.raw);
+  if (field_padding.ispresent()) {
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, General__Types::OCT6_descr_.raw);
+  }
+  else myleaf.body.node.nodes[3] = NULL;
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += 8;
+  myleaf.body.node.nodes[1]->calc = CALC_LENGTH;
+  myleaf.body.node.nodes[1]->coding_descr = &ExtendedGetVersionsRes_numberOfVersionStrings_descr_;
+  myleaf.body.node.nodes[1]->calcof.lengthto.num_of_fields = 1;
+  myleaf.body.node.nodes[1]->calcof.lengthto.unit = -1;
+  myleaf.body.node.nodes[1]->calcof.lengthto.offset = 0;
+  myleaf.body.node.nodes[1]->calcof.lengthto.fields = init_lengthto_fields_list(1);
+  myleaf.body.node.nodes[1]->length = 8;
+  myleaf.body.node.nodes[1]->calcof.lengthto.fields[0].level = myleaf.body.node.nodes[2]->curr_pos.level;
+  myleaf.body.node.nodes[1]->calcof.lengthto.fields[0].pos = myleaf.body.node.nodes[2]->curr_pos.pos;
+  encoded_length += field_versionLabels.RAW_encode(General__Types::OCT32_descr_, *myleaf.body.node.nodes[2]);
+  if (field_padding.ispresent()) {
+  encoded_length += field_padding().RAW_encode(General__Types::OCT6_descr_, *myleaf.body.node.nodes[3]);
+  }
+  return myleaf.length = encoded_length;
+}
+
+struct ExtendedGetVersionsRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_numberOfVersionStrings;
+OCTETSTRING_template field_versionLabels;
+OCTETSTRING_template field_padding;
+};
+
+void ExtendedGetVersionsRes_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_vtfunction = ANY_VALUE;
+single_value->field_numberOfVersionStrings = ANY_VALUE;
+single_value->field_versionLabels = ANY_VALUE;
+single_value->field_padding = ANY_OR_OMIT;
+}
+}
+}
+
+void ExtendedGetVersionsRes_template::copy_value(const ExtendedGetVersionsRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.numberOfVersionStrings().is_bound()) {
+  single_value->field_numberOfVersionStrings = other_value.numberOfVersionStrings();
+} else {
+  single_value->field_numberOfVersionStrings.clean_up();
+}
+if (other_value.versionLabels().is_bound()) {
+  single_value->field_versionLabels = other_value.versionLabels();
+} else {
+  single_value->field_versionLabels.clean_up();
+}
+if (other_value.padding().is_bound()) {
+  if (other_value.padding().ispresent()) single_value->field_padding = other_value.padding()();
+  else single_value->field_padding = OMIT_VALUE;
+} else {
+  single_value->field_padding.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ExtendedGetVersionsRes_template::copy_template(const ExtendedGetVersionsRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.numberOfVersionStrings().get_selection()) {
+single_value->field_numberOfVersionStrings = other_value.numberOfVersionStrings();
+} else {
+single_value->field_numberOfVersionStrings.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.versionLabels().get_selection()) {
+single_value->field_versionLabels = other_value.versionLabels();
+} else {
+single_value->field_versionLabels.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.padding().get_selection()) {
+single_value->field_padding = other_value.padding();
+} else {
+single_value->field_padding.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ExtendedGetVersionsRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExtendedGetVersionsRes.");
+break;
+}
+set_selection(other_value);
+}
+
+ExtendedGetVersionsRes_template::ExtendedGetVersionsRes_template()
+{
+}
+
+ExtendedGetVersionsRes_template::ExtendedGetVersionsRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ExtendedGetVersionsRes_template::ExtendedGetVersionsRes_template(const ExtendedGetVersionsRes& other_value)
+{
+copy_value(other_value);
+}
+
+ExtendedGetVersionsRes_template::ExtendedGetVersionsRes_template(const OPTIONAL<ExtendedGetVersionsRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExtendedGetVersionsRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ExtendedGetVersionsRes from an unbound optional field.");
+}
+}
+
+ExtendedGetVersionsRes_template::ExtendedGetVersionsRes_template(const ExtendedGetVersionsRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ExtendedGetVersionsRes_template::~ExtendedGetVersionsRes_template()
+{
+clean_up();
+}
+
+ExtendedGetVersionsRes_template& ExtendedGetVersionsRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ExtendedGetVersionsRes_template& ExtendedGetVersionsRes_template::operator=(const ExtendedGetVersionsRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ExtendedGetVersionsRes_template& ExtendedGetVersionsRes_template::operator=(const OPTIONAL<ExtendedGetVersionsRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExtendedGetVersionsRes&)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 @IsobusVTMessageTypes.ExtendedGetVersionsRes.");
+}
+return *this;
+}
+
+ExtendedGetVersionsRes_template& ExtendedGetVersionsRes_template::operator=(const ExtendedGetVersionsRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ExtendedGetVersionsRes_template::match(const ExtendedGetVersionsRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.numberOfVersionStrings().is_bound()) return FALSE;
+if(!single_value->field_numberOfVersionStrings.match(other_value.numberOfVersionStrings(), legacy))return FALSE;
+if(!other_value.versionLabels().is_bound()) return FALSE;
+if(!single_value->field_versionLabels.match(other_value.versionLabels(), legacy))return FALSE;
+if(!other_value.padding().is_bound()) return FALSE;
+if((other_value.padding().ispresent() ? !single_value->field_padding.match((const OCTETSTRING&)other_value.padding(), legacy) : !single_value->field_padding.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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExtendedGetVersionsRes.");
+}
+return FALSE;
+}
+
+boolean ExtendedGetVersionsRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_numberOfVersionStrings.is_bound()
+
+ ||single_value->field_versionLabels.is_bound()
+
+ ||(single_value->field_padding.is_omit() || single_value->field_padding.is_bound())
+;
+}
+
+boolean ExtendedGetVersionsRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_numberOfVersionStrings.is_value()
+ &&single_value->field_versionLabels.is_value()
+ &&(single_value->field_padding.is_omit() || single_value->field_padding.is_value());
+}
+
+void ExtendedGetVersionsRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ExtendedGetVersionsRes ExtendedGetVersionsRes_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 @IsobusVTMessageTypes.ExtendedGetVersionsRes.");
+ExtendedGetVersionsRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_numberOfVersionStrings.is_bound()) {
+ret_val.numberOfVersionStrings() = single_value->field_numberOfVersionStrings.valueof();
+}
+if (single_value->field_versionLabels.is_bound()) {
+ret_val.versionLabels() = single_value->field_versionLabels.valueof();
+}
+if (single_value->field_padding.is_omit()) ret_val.padding() = OMIT_VALUE;
+else if (single_value->field_padding.is_bound()) {
+ret_val.padding() = single_value->field_padding.valueof();
+}
+return ret_val;
+}
+
+void ExtendedGetVersionsRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ExtendedGetVersionsRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ExtendedGetVersionsRes_template[list_length];
+}
+
+ExtendedGetVersionsRes_template& ExtendedGetVersionsRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ExtendedGetVersionsRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ExtendedGetVersionsRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ExtendedGetVersionsRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ExtendedGetVersionsRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ExtendedGetVersionsRes.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& ExtendedGetVersionsRes_template::numberOfVersionStrings()
+{
+set_specific();
+return single_value->field_numberOfVersionStrings;
+}
+
+const INTEGER_template& ExtendedGetVersionsRes_template::numberOfVersionStrings() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field numberOfVersionStrings of a non-specific template of type @IsobusVTMessageTypes.ExtendedGetVersionsRes.");
+return single_value->field_numberOfVersionStrings;
+}
+
+OCTETSTRING_template& ExtendedGetVersionsRes_template::versionLabels()
+{
+set_specific();
+return single_value->field_versionLabels;
+}
+
+const OCTETSTRING_template& ExtendedGetVersionsRes_template::versionLabels() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field versionLabels of a non-specific template of type @IsobusVTMessageTypes.ExtendedGetVersionsRes.");
+return single_value->field_versionLabels;
+}
+
+OCTETSTRING_template& ExtendedGetVersionsRes_template::padding()
+{
+set_specific();
+return single_value->field_padding;
+}
+
+const OCTETSTRING_template& ExtendedGetVersionsRes_template::padding() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field padding of a non-specific template of type @IsobusVTMessageTypes.ExtendedGetVersionsRes.");
+return single_value->field_padding;
+}
+
+int ExtendedGetVersionsRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedGetVersionsRes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+  {    int ret_val = 3;
+      if (single_value->field_padding.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 @IsobusVTMessageTypes.ExtendedGetVersionsRes 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 @IsobusVTMessageTypes.ExtendedGetVersionsRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedGetVersionsRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedGetVersionsRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedGetVersionsRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExtendedGetVersionsRes.");
+  }
+  return 0;
+}
+
+void ExtendedGetVersionsRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", numberOfVersionStrings := ");
+single_value->field_numberOfVersionStrings.log();
+TTCN_Logger::log_event_str(", versionLabels := ");
+single_value->field_versionLabels.log();
+TTCN_Logger::log_event_str(", padding := ");
+single_value->field_padding.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ExtendedGetVersionsRes_template::log_match(const ExtendedGetVersionsRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_numberOfVersionStrings.match(match_value.numberOfVersionStrings(), legacy)){
+TTCN_Logger::log_logmatch_info(".numberOfVersionStrings");
+single_value->field_numberOfVersionStrings.log_match(match_value.numberOfVersionStrings(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_versionLabels.match(match_value.versionLabels(), legacy)){
+TTCN_Logger::log_logmatch_info(".versionLabels");
+single_value->field_versionLabels.log_match(match_value.versionLabels(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if (match_value.padding().ispresent()){
+if(!single_value->field_padding.match(match_value.padding(), legacy)){
+TTCN_Logger::log_logmatch_info(".padding");
+single_value->field_padding.log_match(match_value.padding(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+} else {
+if (!single_value->field_padding.match_omit(legacy)){
+ TTCN_Logger::log_logmatch_info(".padding := omit with ");
+TTCN_Logger::print_logmatch_buffer();
+single_value->field_padding.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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", numberOfVersionStrings := ");
+single_value->field_numberOfVersionStrings.log_match(match_value.numberOfVersionStrings(), legacy);
+TTCN_Logger::log_event_str(", versionLabels := ");
+single_value->field_versionLabels.log_match(match_value.versionLabels(), legacy);
+TTCN_Logger::log_event_str(", padding := ");
+if (match_value.padding().ispresent()) single_value->field_padding.log_match(match_value.padding(), legacy);
+else {
+TTCN_Logger::log_event_str("omit with ");
+single_value->field_padding.log();
+if (single_value->field_padding.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 ExtendedGetVersionsRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_numberOfVersionStrings.encode_text(text_buf);
+single_value->field_versionLabels.encode_text(text_buf);
+single_value->field_padding.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 @IsobusVTMessageTypes.ExtendedGetVersionsRes.");
+}
+}
+
+void ExtendedGetVersionsRes_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_vtfunction.decode_text(text_buf);
+single_value->field_numberOfVersionStrings.decode_text(text_buf);
+single_value->field_versionLabels.decode_text(text_buf);
+single_value->field_padding.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 ExtendedGetVersionsRes_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 @IsobusVTMessageTypes.ExtendedGetVersionsRes.");
+}
+}
+
+void ExtendedGetVersionsRes_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: {
+    ExtendedGetVersionsRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.ExtendedGetVersionsRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) numberOfVersionStrings().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) versionLabels().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) padding().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "numberOfVersionStrings")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          numberOfVersionStrings().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(), "versionLabels")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          versionLabels().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(), "padding")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          padding().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 @IsobusVTMessageTypes.ExtendedGetVersionsRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ExtendedGetVersionsRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ExtendedGetVersionsRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedGetVersionsRes");
+single_value->field_numberOfVersionStrings.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedGetVersionsRes");
+single_value->field_versionLabels.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedGetVersionsRes");
+single_value->field_padding.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedGetVersionsRes");
+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 : "@IsobusVTMessageTypes.ExtendedGetVersionsRes");
+}
+
+boolean ExtendedGetVersionsRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ExtendedGetVersionsRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ExtendedGetVersionsReq::ExtendedGetVersionsReq()
+{
+}
+
+ExtendedGetVersionsReq::ExtendedGetVersionsReq(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_reserved2,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_reserved2(par_reserved2),
+  field_reserved3(par_reserved3),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+ExtendedGetVersionsReq::ExtendedGetVersionsReq(const ExtendedGetVersionsReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ExtendedGetVersionsReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+else field_reserved2.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void ExtendedGetVersionsReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_reserved2.clean_up();
+field_reserved3.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ExtendedGetVersionsReq::get_descriptor() const { return &ExtendedGetVersionsReq_descr_; }
+ExtendedGetVersionsReq& ExtendedGetVersionsReq::operator=(const ExtendedGetVersionsReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ExtendedGetVersionsReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+  else field_reserved2.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean ExtendedGetVersionsReq::operator==(const ExtendedGetVersionsReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_reserved2==other_value.field_reserved2
+  && field_reserved3==other_value.field_reserved3
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean ExtendedGetVersionsReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_reserved2.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean ExtendedGetVersionsReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_reserved2.is_value()
+  && field_reserved3.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void ExtendedGetVersionsReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ExtendedGetVersionsReq::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.ExtendedGetVersionsReq has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ExtendedGetVersionsReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ExtendedGetVersionsReq");
+  }
+}
+
+void ExtendedGetVersionsReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (reserved2().is_bound()) reserved2().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void ExtendedGetVersionsReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_reserved2.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void ExtendedGetVersionsReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_reserved2.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void ExtendedGetVersionsReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ExtendedGetVersionsReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ExtendedGetVersionsReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ExtendedGetVersionsReq_reserved2_descr_.raw->forceomit);
+  decoded_field_length = field_reserved2.RAW_decode(ExtendedGetVersionsReq_reserved2_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, ExtendedGetVersionsReq_reserved3_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(ExtendedGetVersionsReq_reserved3_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, ExtendedGetVersionsReq_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(ExtendedGetVersionsReq_reserved4_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, ExtendedGetVersionsReq_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(ExtendedGetVersionsReq_reserved5_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, ExtendedGetVersionsReq_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(ExtendedGetVersionsReq_reserved6_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, ExtendedGetVersionsReq_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(ExtendedGetVersionsReq_reserved7_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, ExtendedGetVersionsReq_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(ExtendedGetVersionsReq_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ExtendedGetVersionsReq::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ExtendedGetVersionsReq_reserved2_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ExtendedGetVersionsReq_reserved3_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, ExtendedGetVersionsReq_reserved4_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, ExtendedGetVersionsReq_reserved5_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, ExtendedGetVersionsReq_reserved6_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, ExtendedGetVersionsReq_reserved7_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, ExtendedGetVersionsReq_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved2.RAW_encode(ExtendedGetVersionsReq_reserved2_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved3.RAW_encode(ExtendedGetVersionsReq_reserved3_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved4.RAW_encode(ExtendedGetVersionsReq_reserved4_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved5.RAW_encode(ExtendedGetVersionsReq_reserved5_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved6.RAW_encode(ExtendedGetVersionsReq_reserved6_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved7.RAW_encode(ExtendedGetVersionsReq_reserved7_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved8.RAW_encode(ExtendedGetVersionsReq_reserved8_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct ExtendedGetVersionsReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+OCTETSTRING_template field_reserved2;
+OCTETSTRING_template field_reserved3;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void ExtendedGetVersionsReq_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_vtfunction = ANY_VALUE;
+single_value->field_reserved2 = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void ExtendedGetVersionsReq_template::copy_value(const ExtendedGetVersionsReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.reserved2().is_bound()) {
+  single_value->field_reserved2 = other_value.reserved2();
+} else {
+  single_value->field_reserved2.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ExtendedGetVersionsReq_template::copy_template(const ExtendedGetVersionsReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved2().get_selection()) {
+single_value->field_reserved2 = other_value.reserved2();
+} else {
+single_value->field_reserved2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ExtendedGetVersionsReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExtendedGetVersionsReq.");
+break;
+}
+set_selection(other_value);
+}
+
+ExtendedGetVersionsReq_template::ExtendedGetVersionsReq_template()
+{
+}
+
+ExtendedGetVersionsReq_template::ExtendedGetVersionsReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ExtendedGetVersionsReq_template::ExtendedGetVersionsReq_template(const ExtendedGetVersionsReq& other_value)
+{
+copy_value(other_value);
+}
+
+ExtendedGetVersionsReq_template::ExtendedGetVersionsReq_template(const OPTIONAL<ExtendedGetVersionsReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExtendedGetVersionsReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ExtendedGetVersionsReq from an unbound optional field.");
+}
+}
+
+ExtendedGetVersionsReq_template::ExtendedGetVersionsReq_template(const ExtendedGetVersionsReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ExtendedGetVersionsReq_template::~ExtendedGetVersionsReq_template()
+{
+clean_up();
+}
+
+ExtendedGetVersionsReq_template& ExtendedGetVersionsReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ExtendedGetVersionsReq_template& ExtendedGetVersionsReq_template::operator=(const ExtendedGetVersionsReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ExtendedGetVersionsReq_template& ExtendedGetVersionsReq_template::operator=(const OPTIONAL<ExtendedGetVersionsReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExtendedGetVersionsReq&)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 @IsobusVTMessageTypes.ExtendedGetVersionsReq.");
+}
+return *this;
+}
+
+ExtendedGetVersionsReq_template& ExtendedGetVersionsReq_template::operator=(const ExtendedGetVersionsReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ExtendedGetVersionsReq_template::match(const ExtendedGetVersionsReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.reserved2().is_bound()) return FALSE;
+if(!single_value->field_reserved2.match(other_value.reserved2(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExtendedGetVersionsReq.");
+}
+return FALSE;
+}
+
+boolean ExtendedGetVersionsReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_reserved2.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean ExtendedGetVersionsReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_reserved2.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void ExtendedGetVersionsReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ExtendedGetVersionsReq ExtendedGetVersionsReq_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 @IsobusVTMessageTypes.ExtendedGetVersionsReq.");
+ExtendedGetVersionsReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_reserved2.is_bound()) {
+ret_val.reserved2() = single_value->field_reserved2.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void ExtendedGetVersionsReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ExtendedGetVersionsReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ExtendedGetVersionsReq_template[list_length];
+}
+
+ExtendedGetVersionsReq_template& ExtendedGetVersionsReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ExtendedGetVersionsReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ExtendedGetVersionsReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ExtendedGetVersionsReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ExtendedGetVersionsReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ExtendedGetVersionsReq.");
+return single_value->field_vtfunction;
+}
+
+OCTETSTRING_template& ExtendedGetVersionsReq_template::reserved2()
+{
+set_specific();
+return single_value->field_reserved2;
+}
+
+const OCTETSTRING_template& ExtendedGetVersionsReq_template::reserved2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved2 of a non-specific template of type @IsobusVTMessageTypes.ExtendedGetVersionsReq.");
+return single_value->field_reserved2;
+}
+
+OCTETSTRING_template& ExtendedGetVersionsReq_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const OCTETSTRING_template& ExtendedGetVersionsReq_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.ExtendedGetVersionsReq.");
+return single_value->field_reserved3;
+}
+
+OCTETSTRING_template& ExtendedGetVersionsReq_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& ExtendedGetVersionsReq_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.ExtendedGetVersionsReq.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& ExtendedGetVersionsReq_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& ExtendedGetVersionsReq_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.ExtendedGetVersionsReq.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& ExtendedGetVersionsReq_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& ExtendedGetVersionsReq_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.ExtendedGetVersionsReq.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& ExtendedGetVersionsReq_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& ExtendedGetVersionsReq_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ExtendedGetVersionsReq.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& ExtendedGetVersionsReq_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& ExtendedGetVersionsReq_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.ExtendedGetVersionsReq.");
+return single_value->field_reserved8;
+}
+
+int ExtendedGetVersionsReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedGetVersionsReq which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedGetVersionsReq 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 @IsobusVTMessageTypes.ExtendedGetVersionsReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedGetVersionsReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedGetVersionsReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedGetVersionsReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExtendedGetVersionsReq.");
+  }
+  return 0;
+}
+
+void ExtendedGetVersionsReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ExtendedGetVersionsReq_template::log_match(const ExtendedGetVersionsReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved2.match(match_value.reserved2(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved2");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 ExtendedGetVersionsReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_reserved2.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.ExtendedGetVersionsReq.");
+}
+}
+
+void ExtendedGetVersionsReq_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_vtfunction.decode_text(text_buf);
+single_value->field_reserved2.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 ExtendedGetVersionsReq_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 @IsobusVTMessageTypes.ExtendedGetVersionsReq.");
+}
+}
+
+void ExtendedGetVersionsReq_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: {
+    ExtendedGetVersionsReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.ExtendedGetVersionsReq has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ExtendedGetVersionsReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ExtendedGetVersionsReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ExtendedGetVersionsReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedGetVersionsReq");
+single_value->field_reserved2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedGetVersionsReq");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedGetVersionsReq");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedGetVersionsReq");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedGetVersionsReq");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedGetVersionsReq");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedGetVersionsReq");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedGetVersionsReq");
+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 : "@IsobusVTMessageTypes.ExtendedGetVersionsReq");
+}
+
+boolean ExtendedGetVersionsReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ExtendedGetVersionsReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ExtendedStoreVersionRes__errorCodesType::ExtendedStoreVersionRes__errorCodesType()
+{
+}
+
+ExtendedStoreVersionRes__errorCodesType::ExtendedStoreVersionRes__errorCodesType(const BOOLEAN& par_reserved0,
+    const BOOLEAN& par_versionLabelIsNotCorrect,
+    const BOOLEAN& par_insufficientMemoryAvailable,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved4,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7)
+  :   field_reserved0(par_reserved0),
+  field_versionLabelIsNotCorrect(par_versionLabelIsNotCorrect),
+  field_insufficientMemoryAvailable(par_insufficientMemoryAvailable),
+  field_anyOtherError(par_anyOtherError),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7)
+{
+}
+
+ExtendedStoreVersionRes__errorCodesType::ExtendedStoreVersionRes__errorCodesType(const ExtendedStoreVersionRes__errorCodesType& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType.");
+if (other_value.reserved0().is_bound()) field_reserved0 = other_value.reserved0();
+else field_reserved0.clean_up();
+if (other_value.versionLabelIsNotCorrect().is_bound()) field_versionLabelIsNotCorrect = other_value.versionLabelIsNotCorrect();
+else field_versionLabelIsNotCorrect.clean_up();
+if (other_value.insufficientMemoryAvailable().is_bound()) field_insufficientMemoryAvailable = other_value.insufficientMemoryAvailable();
+else field_insufficientMemoryAvailable.clean_up();
+if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+else field_anyOtherError.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+}
+
+void ExtendedStoreVersionRes__errorCodesType::clean_up()
+{
+field_reserved0.clean_up();
+field_versionLabelIsNotCorrect.clean_up();
+field_insufficientMemoryAvailable.clean_up();
+field_anyOtherError.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ExtendedStoreVersionRes__errorCodesType::get_descriptor() const { return &ExtendedStoreVersionRes__errorCodesType_descr_; }
+ExtendedStoreVersionRes__errorCodesType& ExtendedStoreVersionRes__errorCodesType::operator=(const ExtendedStoreVersionRes__errorCodesType& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType.");
+  if (other_value.reserved0().is_bound()) field_reserved0 = other_value.reserved0();
+  else field_reserved0.clean_up();
+  if (other_value.versionLabelIsNotCorrect().is_bound()) field_versionLabelIsNotCorrect = other_value.versionLabelIsNotCorrect();
+  else field_versionLabelIsNotCorrect.clean_up();
+  if (other_value.insufficientMemoryAvailable().is_bound()) field_insufficientMemoryAvailable = other_value.insufficientMemoryAvailable();
+  else field_insufficientMemoryAvailable.clean_up();
+  if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+  else field_anyOtherError.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+}
+return *this;
+}
+
+boolean ExtendedStoreVersionRes__errorCodesType::operator==(const ExtendedStoreVersionRes__errorCodesType& other_value) const
+{
+return field_reserved0==other_value.field_reserved0
+  && field_versionLabelIsNotCorrect==other_value.field_versionLabelIsNotCorrect
+  && field_insufficientMemoryAvailable==other_value.field_insufficientMemoryAvailable
+  && field_anyOtherError==other_value.field_anyOtherError
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7;
+}
+
+boolean ExtendedStoreVersionRes__errorCodesType::is_bound() const
+{
+return (field_reserved0.is_bound())
+  || (field_versionLabelIsNotCorrect.is_bound())
+  || (field_insufficientMemoryAvailable.is_bound())
+  || (field_anyOtherError.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound());
+}
+boolean ExtendedStoreVersionRes__errorCodesType::is_value() const
+{
+return field_reserved0.is_value()
+  && field_versionLabelIsNotCorrect.is_value()
+  && field_insufficientMemoryAvailable.is_value()
+  && field_anyOtherError.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value();
+}
+void ExtendedStoreVersionRes__errorCodesType::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ reserved0 := ");
+field_reserved0.log();
+TTCN_Logger::log_event_str(", versionLabelIsNotCorrect := ");
+field_versionLabelIsNotCorrect.log();
+TTCN_Logger::log_event_str(", insufficientMemoryAvailable := ");
+field_insufficientMemoryAvailable.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ExtendedStoreVersionRes__errorCodesType::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType has 8 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) reserved0().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) versionLabelIsNotCorrect().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) insufficientMemoryAvailable().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "reserved0")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved0().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(), "versionLabelIsNotCorrect")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          versionLabelIsNotCorrect().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(), "insufficientMemoryAvailable")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          insufficientMemoryAvailable().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType");
+  }
+}
+
+void ExtendedStoreVersionRes__errorCodesType::set_implicit_omit()
+{
+if (reserved0().is_bound()) reserved0().set_implicit_omit();
+if (versionLabelIsNotCorrect().is_bound()) versionLabelIsNotCorrect().set_implicit_omit();
+if (insufficientMemoryAvailable().is_bound()) insufficientMemoryAvailable().set_implicit_omit();
+if (anyOtherError().is_bound()) anyOtherError().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+}
+
+void ExtendedStoreVersionRes__errorCodesType::encode_text(Text_Buf& text_buf) const
+{
+field_reserved0.encode_text(text_buf);
+field_versionLabelIsNotCorrect.encode_text(text_buf);
+field_insufficientMemoryAvailable.encode_text(text_buf);
+field_anyOtherError.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+}
+
+void ExtendedStoreVersionRes__errorCodesType::decode_text(Text_Buf& text_buf)
+{
+field_reserved0.decode_text(text_buf);
+field_versionLabelIsNotCorrect.decode_text(text_buf);
+field_insufficientMemoryAvailable.decode_text(text_buf);
+field_anyOtherError.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+}
+
+void ExtendedStoreVersionRes__errorCodesType::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ExtendedStoreVersionRes__errorCodesType::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ExtendedStoreVersionRes__errorCodesType::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved0.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_versionLabelIsNotCorrect.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_insufficientMemoryAvailable.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_anyOtherError.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ExtendedStoreVersionRes__errorCodesType::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_reserved0.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_versionLabelIsNotCorrect.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_insufficientMemoryAvailable.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_anyOtherError.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved4.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved5.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved6.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved7.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct ExtendedStoreVersionRes__errorCodesType_template::single_value_struct {
+BOOLEAN_template field_reserved0;
+BOOLEAN_template field_versionLabelIsNotCorrect;
+BOOLEAN_template field_insufficientMemoryAvailable;
+BOOLEAN_template field_anyOtherError;
+BOOLEAN_template field_reserved4;
+BOOLEAN_template field_reserved5;
+BOOLEAN_template field_reserved6;
+BOOLEAN_template field_reserved7;
+};
+
+void ExtendedStoreVersionRes__errorCodesType_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_reserved0 = ANY_VALUE;
+single_value->field_versionLabelIsNotCorrect = ANY_VALUE;
+single_value->field_insufficientMemoryAvailable = ANY_VALUE;
+single_value->field_anyOtherError = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+}
+}
+}
+
+void ExtendedStoreVersionRes__errorCodesType_template::copy_value(const ExtendedStoreVersionRes__errorCodesType& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.reserved0().is_bound()) {
+  single_value->field_reserved0 = other_value.reserved0();
+} else {
+  single_value->field_reserved0.clean_up();
+}
+if (other_value.versionLabelIsNotCorrect().is_bound()) {
+  single_value->field_versionLabelIsNotCorrect = other_value.versionLabelIsNotCorrect();
+} else {
+  single_value->field_versionLabelIsNotCorrect.clean_up();
+}
+if (other_value.insufficientMemoryAvailable().is_bound()) {
+  single_value->field_insufficientMemoryAvailable = other_value.insufficientMemoryAvailable();
+} else {
+  single_value->field_insufficientMemoryAvailable.clean_up();
+}
+if (other_value.anyOtherError().is_bound()) {
+  single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+  single_value->field_anyOtherError.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ExtendedStoreVersionRes__errorCodesType_template::copy_template(const ExtendedStoreVersionRes__errorCodesType_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.reserved0().get_selection()) {
+single_value->field_reserved0 = other_value.reserved0();
+} else {
+single_value->field_reserved0.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.versionLabelIsNotCorrect().get_selection()) {
+single_value->field_versionLabelIsNotCorrect = other_value.versionLabelIsNotCorrect();
+} else {
+single_value->field_versionLabelIsNotCorrect.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.insufficientMemoryAvailable().get_selection()) {
+single_value->field_insufficientMemoryAvailable = other_value.insufficientMemoryAvailable();
+} else {
+single_value->field_insufficientMemoryAvailable.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.anyOtherError().get_selection()) {
+single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+single_value->field_anyOtherError.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ExtendedStoreVersionRes__errorCodesType_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType.");
+break;
+}
+set_selection(other_value);
+}
+
+ExtendedStoreVersionRes__errorCodesType_template::ExtendedStoreVersionRes__errorCodesType_template()
+{
+}
+
+ExtendedStoreVersionRes__errorCodesType_template::ExtendedStoreVersionRes__errorCodesType_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ExtendedStoreVersionRes__errorCodesType_template::ExtendedStoreVersionRes__errorCodesType_template(const ExtendedStoreVersionRes__errorCodesType& other_value)
+{
+copy_value(other_value);
+}
+
+ExtendedStoreVersionRes__errorCodesType_template::ExtendedStoreVersionRes__errorCodesType_template(const OPTIONAL<ExtendedStoreVersionRes__errorCodesType>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExtendedStoreVersionRes__errorCodesType&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType from an unbound optional field.");
+}
+}
+
+ExtendedStoreVersionRes__errorCodesType_template::ExtendedStoreVersionRes__errorCodesType_template(const ExtendedStoreVersionRes__errorCodesType_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ExtendedStoreVersionRes__errorCodesType_template::~ExtendedStoreVersionRes__errorCodesType_template()
+{
+clean_up();
+}
+
+ExtendedStoreVersionRes__errorCodesType_template& ExtendedStoreVersionRes__errorCodesType_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ExtendedStoreVersionRes__errorCodesType_template& ExtendedStoreVersionRes__errorCodesType_template::operator=(const ExtendedStoreVersionRes__errorCodesType& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ExtendedStoreVersionRes__errorCodesType_template& ExtendedStoreVersionRes__errorCodesType_template::operator=(const OPTIONAL<ExtendedStoreVersionRes__errorCodesType>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExtendedStoreVersionRes__errorCodesType&)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 @IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType.");
+}
+return *this;
+}
+
+ExtendedStoreVersionRes__errorCodesType_template& ExtendedStoreVersionRes__errorCodesType_template::operator=(const ExtendedStoreVersionRes__errorCodesType_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ExtendedStoreVersionRes__errorCodesType_template::match(const ExtendedStoreVersionRes__errorCodesType& 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.reserved0().is_bound()) return FALSE;
+if(!single_value->field_reserved0.match(other_value.reserved0(), legacy))return FALSE;
+if(!other_value.versionLabelIsNotCorrect().is_bound()) return FALSE;
+if(!single_value->field_versionLabelIsNotCorrect.match(other_value.versionLabelIsNotCorrect(), legacy))return FALSE;
+if(!other_value.insufficientMemoryAvailable().is_bound()) return FALSE;
+if(!single_value->field_insufficientMemoryAvailable.match(other_value.insufficientMemoryAvailable(), legacy))return FALSE;
+if(!other_value.anyOtherError().is_bound()) return FALSE;
+if(!single_value->field_anyOtherError.match(other_value.anyOtherError(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType.");
+}
+return FALSE;
+}
+
+boolean ExtendedStoreVersionRes__errorCodesType_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_reserved0.is_bound()
+
+ ||single_value->field_versionLabelIsNotCorrect.is_bound()
+
+ ||single_value->field_insufficientMemoryAvailable.is_bound()
+
+ ||single_value->field_anyOtherError.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+;
+}
+
+boolean ExtendedStoreVersionRes__errorCodesType_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_reserved0.is_value()
+ &&single_value->field_versionLabelIsNotCorrect.is_value()
+ &&single_value->field_insufficientMemoryAvailable.is_value()
+ &&single_value->field_anyOtherError.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value();
+}
+
+void ExtendedStoreVersionRes__errorCodesType_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ExtendedStoreVersionRes__errorCodesType ExtendedStoreVersionRes__errorCodesType_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 @IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType.");
+ExtendedStoreVersionRes__errorCodesType ret_val;
+if (single_value->field_reserved0.is_bound()) {
+ret_val.reserved0() = single_value->field_reserved0.valueof();
+}
+if (single_value->field_versionLabelIsNotCorrect.is_bound()) {
+ret_val.versionLabelIsNotCorrect() = single_value->field_versionLabelIsNotCorrect.valueof();
+}
+if (single_value->field_insufficientMemoryAvailable.is_bound()) {
+ret_val.insufficientMemoryAvailable() = single_value->field_insufficientMemoryAvailable.valueof();
+}
+if (single_value->field_anyOtherError.is_bound()) {
+ret_val.anyOtherError() = single_value->field_anyOtherError.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+return ret_val;
+}
+
+void ExtendedStoreVersionRes__errorCodesType_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ExtendedStoreVersionRes__errorCodesType_template[list_length];
+}
+
+ExtendedStoreVersionRes__errorCodesType_template& ExtendedStoreVersionRes__errorCodesType_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& ExtendedStoreVersionRes__errorCodesType_template::reserved0()
+{
+set_specific();
+return single_value->field_reserved0;
+}
+
+const BOOLEAN_template& ExtendedStoreVersionRes__errorCodesType_template::reserved0() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved0 of a non-specific template of type @IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType.");
+return single_value->field_reserved0;
+}
+
+BOOLEAN_template& ExtendedStoreVersionRes__errorCodesType_template::versionLabelIsNotCorrect()
+{
+set_specific();
+return single_value->field_versionLabelIsNotCorrect;
+}
+
+const BOOLEAN_template& ExtendedStoreVersionRes__errorCodesType_template::versionLabelIsNotCorrect() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field versionLabelIsNotCorrect of a non-specific template of type @IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType.");
+return single_value->field_versionLabelIsNotCorrect;
+}
+
+BOOLEAN_template& ExtendedStoreVersionRes__errorCodesType_template::insufficientMemoryAvailable()
+{
+set_specific();
+return single_value->field_insufficientMemoryAvailable;
+}
+
+const BOOLEAN_template& ExtendedStoreVersionRes__errorCodesType_template::insufficientMemoryAvailable() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field insufficientMemoryAvailable of a non-specific template of type @IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType.");
+return single_value->field_insufficientMemoryAvailable;
+}
+
+BOOLEAN_template& ExtendedStoreVersionRes__errorCodesType_template::anyOtherError()
+{
+set_specific();
+return single_value->field_anyOtherError;
+}
+
+const BOOLEAN_template& ExtendedStoreVersionRes__errorCodesType_template::anyOtherError() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field anyOtherError of a non-specific template of type @IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType.");
+return single_value->field_anyOtherError;
+}
+
+BOOLEAN_template& ExtendedStoreVersionRes__errorCodesType_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const BOOLEAN_template& ExtendedStoreVersionRes__errorCodesType_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType.");
+return single_value->field_reserved4;
+}
+
+BOOLEAN_template& ExtendedStoreVersionRes__errorCodesType_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const BOOLEAN_template& ExtendedStoreVersionRes__errorCodesType_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType.");
+return single_value->field_reserved5;
+}
+
+BOOLEAN_template& ExtendedStoreVersionRes__errorCodesType_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const BOOLEAN_template& ExtendedStoreVersionRes__errorCodesType_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType.");
+return single_value->field_reserved6;
+}
+
+BOOLEAN_template& ExtendedStoreVersionRes__errorCodesType_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const BOOLEAN_template& ExtendedStoreVersionRes__errorCodesType_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType.");
+return single_value->field_reserved7;
+}
+
+int ExtendedStoreVersionRes__errorCodesType_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType 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 @IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType.");
+  }
+  return 0;
+}
+
+void ExtendedStoreVersionRes__errorCodesType_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ reserved0 := ");
+single_value->field_reserved0.log();
+TTCN_Logger::log_event_str(", versionLabelIsNotCorrect := ");
+single_value->field_versionLabelIsNotCorrect.log();
+TTCN_Logger::log_event_str(", insufficientMemoryAvailable := ");
+single_value->field_insufficientMemoryAvailable.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ExtendedStoreVersionRes__errorCodesType_template::log_match(const ExtendedStoreVersionRes__errorCodesType& 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_reserved0.match(match_value.reserved0(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved0");
+single_value->field_reserved0.log_match(match_value.reserved0(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_versionLabelIsNotCorrect.match(match_value.versionLabelIsNotCorrect(), legacy)){
+TTCN_Logger::log_logmatch_info(".versionLabelIsNotCorrect");
+single_value->field_versionLabelIsNotCorrect.log_match(match_value.versionLabelIsNotCorrect(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_insufficientMemoryAvailable.match(match_value.insufficientMemoryAvailable(), legacy)){
+TTCN_Logger::log_logmatch_info(".insufficientMemoryAvailable");
+single_value->field_insufficientMemoryAvailable.log_match(match_value.insufficientMemoryAvailable(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_anyOtherError.match(match_value.anyOtherError(), legacy)){
+TTCN_Logger::log_logmatch_info(".anyOtherError");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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("{ reserved0 := ");
+single_value->field_reserved0.log_match(match_value.reserved0(), legacy);
+TTCN_Logger::log_event_str(", versionLabelIsNotCorrect := ");
+single_value->field_versionLabelIsNotCorrect.log_match(match_value.versionLabelIsNotCorrect(), legacy);
+TTCN_Logger::log_event_str(", insufficientMemoryAvailable := ");
+single_value->field_insufficientMemoryAvailable.log_match(match_value.insufficientMemoryAvailable(), legacy);
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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 ExtendedStoreVersionRes__errorCodesType_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_reserved0.encode_text(text_buf);
+single_value->field_versionLabelIsNotCorrect.encode_text(text_buf);
+single_value->field_insufficientMemoryAvailable.encode_text(text_buf);
+single_value->field_anyOtherError.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.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 @IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType.");
+}
+}
+
+void ExtendedStoreVersionRes__errorCodesType_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_reserved0.decode_text(text_buf);
+single_value->field_versionLabelIsNotCorrect.decode_text(text_buf);
+single_value->field_insufficientMemoryAvailable.decode_text(text_buf);
+single_value->field_anyOtherError.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.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 ExtendedStoreVersionRes__errorCodesType_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 @IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType.");
+}
+}
+
+void ExtendedStoreVersionRes__errorCodesType_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: {
+    ExtendedStoreVersionRes__errorCodesType_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType has 8 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) reserved0().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) versionLabelIsNotCorrect().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) insufficientMemoryAvailable().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "reserved0")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved0().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(), "versionLabelIsNotCorrect")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          versionLabelIsNotCorrect().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(), "insufficientMemoryAvailable")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          insufficientMemoryAvailable().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ExtendedStoreVersionRes__errorCodesType_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_reserved0.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType");
+single_value->field_versionLabelIsNotCorrect.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType");
+single_value->field_insufficientMemoryAvailable.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType");
+single_value->field_anyOtherError.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType");
+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 : "@IsobusVTMessageTypes.ExtendedStoreVersionRes_errorCodesType");
+}
+
+boolean ExtendedStoreVersionRes__errorCodesType_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ExtendedStoreVersionRes__errorCodesType_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ExtendedStoreVersionRes::ExtendedStoreVersionRes()
+{
+}
+
+ExtendedStoreVersionRes::ExtendedStoreVersionRes(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_reserved2,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const ExtendedStoreVersionRes__errorCodesType& par_errorCodes,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_reserved2(par_reserved2),
+  field_reserved3(par_reserved3),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_errorCodes(par_errorCodes),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+ExtendedStoreVersionRes::ExtendedStoreVersionRes(const ExtendedStoreVersionRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ExtendedStoreVersionRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+else field_reserved2.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+else field_errorCodes.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void ExtendedStoreVersionRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_reserved2.clean_up();
+field_reserved3.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_errorCodes.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ExtendedStoreVersionRes::get_descriptor() const { return &ExtendedStoreVersionRes_descr_; }
+ExtendedStoreVersionRes& ExtendedStoreVersionRes::operator=(const ExtendedStoreVersionRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ExtendedStoreVersionRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+  else field_reserved2.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+  else field_errorCodes.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean ExtendedStoreVersionRes::operator==(const ExtendedStoreVersionRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_reserved2==other_value.field_reserved2
+  && field_reserved3==other_value.field_reserved3
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_errorCodes==other_value.field_errorCodes
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean ExtendedStoreVersionRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_reserved2.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_errorCodes.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean ExtendedStoreVersionRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_reserved2.is_value()
+  && field_reserved3.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_errorCodes.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void ExtendedStoreVersionRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ExtendedStoreVersionRes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.ExtendedStoreVersionRes has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ExtendedStoreVersionRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ExtendedStoreVersionRes");
+  }
+}
+
+void ExtendedStoreVersionRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (reserved2().is_bound()) reserved2().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (errorCodes().is_bound()) errorCodes().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void ExtendedStoreVersionRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_reserved2.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_errorCodes.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void ExtendedStoreVersionRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_reserved2.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_errorCodes.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void ExtendedStoreVersionRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ExtendedStoreVersionRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ExtendedStoreVersionRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ExtendedStoreVersionRes_reserved2_descr_.raw->forceomit);
+  decoded_field_length = field_reserved2.RAW_decode(ExtendedStoreVersionRes_reserved2_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, ExtendedStoreVersionRes_reserved3_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(ExtendedStoreVersionRes_reserved3_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, ExtendedStoreVersionRes_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(ExtendedStoreVersionRes_reserved4_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, ExtendedStoreVersionRes_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(ExtendedStoreVersionRes_reserved5_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, ExtendedStoreVersionRes__errorCodesType_descr_.raw->forceomit);
+  decoded_field_length = field_errorCodes.RAW_decode(ExtendedStoreVersionRes__errorCodesType_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, ExtendedStoreVersionRes_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(ExtendedStoreVersionRes_reserved7_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, ExtendedStoreVersionRes_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(ExtendedStoreVersionRes_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ExtendedStoreVersionRes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ExtendedStoreVersionRes_reserved2_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ExtendedStoreVersionRes_reserved3_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, ExtendedStoreVersionRes_reserved4_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, ExtendedStoreVersionRes_reserved5_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, ExtendedStoreVersionRes__errorCodesType_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, ExtendedStoreVersionRes_reserved7_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, ExtendedStoreVersionRes_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved2.RAW_encode(ExtendedStoreVersionRes_reserved2_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved3.RAW_encode(ExtendedStoreVersionRes_reserved3_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved4.RAW_encode(ExtendedStoreVersionRes_reserved4_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved5.RAW_encode(ExtendedStoreVersionRes_reserved5_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_errorCodes.RAW_encode(ExtendedStoreVersionRes__errorCodesType_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved7.RAW_encode(ExtendedStoreVersionRes_reserved7_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved8.RAW_encode(ExtendedStoreVersionRes_reserved8_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct ExtendedStoreVersionRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+OCTETSTRING_template field_reserved2;
+OCTETSTRING_template field_reserved3;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+ExtendedStoreVersionRes__errorCodesType_template field_errorCodes;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void ExtendedStoreVersionRes_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_vtfunction = ANY_VALUE;
+single_value->field_reserved2 = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_errorCodes = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void ExtendedStoreVersionRes_template::copy_value(const ExtendedStoreVersionRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.reserved2().is_bound()) {
+  single_value->field_reserved2 = other_value.reserved2();
+} else {
+  single_value->field_reserved2.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.errorCodes().is_bound()) {
+  single_value->field_errorCodes = other_value.errorCodes();
+} else {
+  single_value->field_errorCodes.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ExtendedStoreVersionRes_template::copy_template(const ExtendedStoreVersionRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved2().get_selection()) {
+single_value->field_reserved2 = other_value.reserved2();
+} else {
+single_value->field_reserved2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.errorCodes().get_selection()) {
+single_value->field_errorCodes = other_value.errorCodes();
+} else {
+single_value->field_errorCodes.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ExtendedStoreVersionRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExtendedStoreVersionRes.");
+break;
+}
+set_selection(other_value);
+}
+
+ExtendedStoreVersionRes_template::ExtendedStoreVersionRes_template()
+{
+}
+
+ExtendedStoreVersionRes_template::ExtendedStoreVersionRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ExtendedStoreVersionRes_template::ExtendedStoreVersionRes_template(const ExtendedStoreVersionRes& other_value)
+{
+copy_value(other_value);
+}
+
+ExtendedStoreVersionRes_template::ExtendedStoreVersionRes_template(const OPTIONAL<ExtendedStoreVersionRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExtendedStoreVersionRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ExtendedStoreVersionRes from an unbound optional field.");
+}
+}
+
+ExtendedStoreVersionRes_template::ExtendedStoreVersionRes_template(const ExtendedStoreVersionRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ExtendedStoreVersionRes_template::~ExtendedStoreVersionRes_template()
+{
+clean_up();
+}
+
+ExtendedStoreVersionRes_template& ExtendedStoreVersionRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ExtendedStoreVersionRes_template& ExtendedStoreVersionRes_template::operator=(const ExtendedStoreVersionRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ExtendedStoreVersionRes_template& ExtendedStoreVersionRes_template::operator=(const OPTIONAL<ExtendedStoreVersionRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExtendedStoreVersionRes&)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 @IsobusVTMessageTypes.ExtendedStoreVersionRes.");
+}
+return *this;
+}
+
+ExtendedStoreVersionRes_template& ExtendedStoreVersionRes_template::operator=(const ExtendedStoreVersionRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ExtendedStoreVersionRes_template::match(const ExtendedStoreVersionRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.reserved2().is_bound()) return FALSE;
+if(!single_value->field_reserved2.match(other_value.reserved2(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.errorCodes().is_bound()) return FALSE;
+if(!single_value->field_errorCodes.match(other_value.errorCodes(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExtendedStoreVersionRes.");
+}
+return FALSE;
+}
+
+boolean ExtendedStoreVersionRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_reserved2.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_errorCodes.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean ExtendedStoreVersionRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_reserved2.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_errorCodes.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void ExtendedStoreVersionRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ExtendedStoreVersionRes ExtendedStoreVersionRes_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 @IsobusVTMessageTypes.ExtendedStoreVersionRes.");
+ExtendedStoreVersionRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_reserved2.is_bound()) {
+ret_val.reserved2() = single_value->field_reserved2.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_errorCodes.is_bound()) {
+ret_val.errorCodes() = single_value->field_errorCodes.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void ExtendedStoreVersionRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ExtendedStoreVersionRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ExtendedStoreVersionRes_template[list_length];
+}
+
+ExtendedStoreVersionRes_template& ExtendedStoreVersionRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ExtendedStoreVersionRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ExtendedStoreVersionRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ExtendedStoreVersionRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ExtendedStoreVersionRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ExtendedStoreVersionRes.");
+return single_value->field_vtfunction;
+}
+
+OCTETSTRING_template& ExtendedStoreVersionRes_template::reserved2()
+{
+set_specific();
+return single_value->field_reserved2;
+}
+
+const OCTETSTRING_template& ExtendedStoreVersionRes_template::reserved2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved2 of a non-specific template of type @IsobusVTMessageTypes.ExtendedStoreVersionRes.");
+return single_value->field_reserved2;
+}
+
+OCTETSTRING_template& ExtendedStoreVersionRes_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const OCTETSTRING_template& ExtendedStoreVersionRes_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.ExtendedStoreVersionRes.");
+return single_value->field_reserved3;
+}
+
+OCTETSTRING_template& ExtendedStoreVersionRes_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& ExtendedStoreVersionRes_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.ExtendedStoreVersionRes.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& ExtendedStoreVersionRes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& ExtendedStoreVersionRes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.ExtendedStoreVersionRes.");
+return single_value->field_reserved5;
+}
+
+ExtendedStoreVersionRes__errorCodesType_template& ExtendedStoreVersionRes_template::errorCodes()
+{
+set_specific();
+return single_value->field_errorCodes;
+}
+
+const ExtendedStoreVersionRes__errorCodesType_template& ExtendedStoreVersionRes_template::errorCodes() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field errorCodes of a non-specific template of type @IsobusVTMessageTypes.ExtendedStoreVersionRes.");
+return single_value->field_errorCodes;
+}
+
+OCTETSTRING_template& ExtendedStoreVersionRes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& ExtendedStoreVersionRes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ExtendedStoreVersionRes.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& ExtendedStoreVersionRes_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& ExtendedStoreVersionRes_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.ExtendedStoreVersionRes.");
+return single_value->field_reserved8;
+}
+
+int ExtendedStoreVersionRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedStoreVersionRes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedStoreVersionRes 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 @IsobusVTMessageTypes.ExtendedStoreVersionRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedStoreVersionRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedStoreVersionRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedStoreVersionRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExtendedStoreVersionRes.");
+  }
+  return 0;
+}
+
+void ExtendedStoreVersionRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ExtendedStoreVersionRes_template::log_match(const ExtendedStoreVersionRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved2.match(match_value.reserved2(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved2");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_errorCodes.match(match_value.errorCodes(), legacy)){
+TTCN_Logger::log_logmatch_info(".errorCodes");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 ExtendedStoreVersionRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_reserved2.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_errorCodes.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.ExtendedStoreVersionRes.");
+}
+}
+
+void ExtendedStoreVersionRes_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_vtfunction.decode_text(text_buf);
+single_value->field_reserved2.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_errorCodes.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 ExtendedStoreVersionRes_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 @IsobusVTMessageTypes.ExtendedStoreVersionRes.");
+}
+}
+
+void ExtendedStoreVersionRes_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: {
+    ExtendedStoreVersionRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.ExtendedStoreVersionRes has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ExtendedStoreVersionRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ExtendedStoreVersionRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ExtendedStoreVersionRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedStoreVersionRes");
+single_value->field_reserved2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedStoreVersionRes");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedStoreVersionRes");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedStoreVersionRes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedStoreVersionRes");
+single_value->field_errorCodes.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedStoreVersionRes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedStoreVersionRes");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedStoreVersionRes");
+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 : "@IsobusVTMessageTypes.ExtendedStoreVersionRes");
+}
+
+boolean ExtendedStoreVersionRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ExtendedStoreVersionRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ExtendedStoreVersionReq::ExtendedStoreVersionReq()
+{
+}
+
+ExtendedStoreVersionReq::ExtendedStoreVersionReq(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_versionLabel)
+  :   field_vtfunction(par_vtfunction),
+  field_versionLabel(par_versionLabel)
+{
+}
+
+ExtendedStoreVersionReq::ExtendedStoreVersionReq(const ExtendedStoreVersionReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ExtendedStoreVersionReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.versionLabel().is_bound()) field_versionLabel = other_value.versionLabel();
+else field_versionLabel.clean_up();
+}
+
+void ExtendedStoreVersionReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_versionLabel.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ExtendedStoreVersionReq::get_descriptor() const { return &ExtendedStoreVersionReq_descr_; }
+ExtendedStoreVersionReq& ExtendedStoreVersionReq::operator=(const ExtendedStoreVersionReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ExtendedStoreVersionReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.versionLabel().is_bound()) field_versionLabel = other_value.versionLabel();
+  else field_versionLabel.clean_up();
+}
+return *this;
+}
+
+boolean ExtendedStoreVersionReq::operator==(const ExtendedStoreVersionReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_versionLabel==other_value.field_versionLabel;
+}
+
+boolean ExtendedStoreVersionReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_versionLabel.is_bound());
+}
+boolean ExtendedStoreVersionReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_versionLabel.is_value();
+}
+void ExtendedStoreVersionReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", versionLabel := ");
+field_versionLabel.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ExtendedStoreVersionReq::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 @IsobusVTMessageTypes.ExtendedStoreVersionReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) versionLabel().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "versionLabel")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          versionLabel().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 @IsobusVTMessageTypes.ExtendedStoreVersionReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ExtendedStoreVersionReq");
+  }
+}
+
+void ExtendedStoreVersionReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (versionLabel().is_bound()) versionLabel().set_implicit_omit();
+}
+
+void ExtendedStoreVersionReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_versionLabel.encode_text(text_buf);
+}
+
+void ExtendedStoreVersionReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_versionLabel.decode_text(text_buf);
+}
+
+void ExtendedStoreVersionReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ExtendedStoreVersionReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ExtendedStoreVersionReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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::OCT32_descr_.raw->forceomit);
+  decoded_field_length = field_versionLabel.RAW_decode(General__Types::OCT32_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 ExtendedStoreVersionReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, General__Types::OCT32_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_versionLabel.RAW_encode(General__Types::OCT32_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct ExtendedStoreVersionReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+OCTETSTRING_template field_versionLabel;
+};
+
+void ExtendedStoreVersionReq_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_vtfunction = ANY_VALUE;
+single_value->field_versionLabel = ANY_VALUE;
+}
+}
+}
+
+void ExtendedStoreVersionReq_template::copy_value(const ExtendedStoreVersionReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.versionLabel().is_bound()) {
+  single_value->field_versionLabel = other_value.versionLabel();
+} else {
+  single_value->field_versionLabel.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ExtendedStoreVersionReq_template::copy_template(const ExtendedStoreVersionReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.versionLabel().get_selection()) {
+single_value->field_versionLabel = other_value.versionLabel();
+} else {
+single_value->field_versionLabel.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ExtendedStoreVersionReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExtendedStoreVersionReq.");
+break;
+}
+set_selection(other_value);
+}
+
+ExtendedStoreVersionReq_template::ExtendedStoreVersionReq_template()
+{
+}
+
+ExtendedStoreVersionReq_template::ExtendedStoreVersionReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ExtendedStoreVersionReq_template::ExtendedStoreVersionReq_template(const ExtendedStoreVersionReq& other_value)
+{
+copy_value(other_value);
+}
+
+ExtendedStoreVersionReq_template::ExtendedStoreVersionReq_template(const OPTIONAL<ExtendedStoreVersionReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExtendedStoreVersionReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ExtendedStoreVersionReq from an unbound optional field.");
+}
+}
+
+ExtendedStoreVersionReq_template::ExtendedStoreVersionReq_template(const ExtendedStoreVersionReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ExtendedStoreVersionReq_template::~ExtendedStoreVersionReq_template()
+{
+clean_up();
+}
+
+ExtendedStoreVersionReq_template& ExtendedStoreVersionReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ExtendedStoreVersionReq_template& ExtendedStoreVersionReq_template::operator=(const ExtendedStoreVersionReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ExtendedStoreVersionReq_template& ExtendedStoreVersionReq_template::operator=(const OPTIONAL<ExtendedStoreVersionReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExtendedStoreVersionReq&)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 @IsobusVTMessageTypes.ExtendedStoreVersionReq.");
+}
+return *this;
+}
+
+ExtendedStoreVersionReq_template& ExtendedStoreVersionReq_template::operator=(const ExtendedStoreVersionReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ExtendedStoreVersionReq_template::match(const ExtendedStoreVersionReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.versionLabel().is_bound()) return FALSE;
+if(!single_value->field_versionLabel.match(other_value.versionLabel(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExtendedStoreVersionReq.");
+}
+return FALSE;
+}
+
+boolean ExtendedStoreVersionReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_versionLabel.is_bound()
+;
+}
+
+boolean ExtendedStoreVersionReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_versionLabel.is_value();
+}
+
+void ExtendedStoreVersionReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ExtendedStoreVersionReq ExtendedStoreVersionReq_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 @IsobusVTMessageTypes.ExtendedStoreVersionReq.");
+ExtendedStoreVersionReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_versionLabel.is_bound()) {
+ret_val.versionLabel() = single_value->field_versionLabel.valueof();
+}
+return ret_val;
+}
+
+void ExtendedStoreVersionReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ExtendedStoreVersionReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ExtendedStoreVersionReq_template[list_length];
+}
+
+ExtendedStoreVersionReq_template& ExtendedStoreVersionReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ExtendedStoreVersionReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ExtendedStoreVersionReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ExtendedStoreVersionReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ExtendedStoreVersionReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ExtendedStoreVersionReq.");
+return single_value->field_vtfunction;
+}
+
+OCTETSTRING_template& ExtendedStoreVersionReq_template::versionLabel()
+{
+set_specific();
+return single_value->field_versionLabel;
+}
+
+const OCTETSTRING_template& ExtendedStoreVersionReq_template::versionLabel() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field versionLabel of a non-specific template of type @IsobusVTMessageTypes.ExtendedStoreVersionReq.");
+return single_value->field_versionLabel;
+}
+
+int ExtendedStoreVersionReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedStoreVersionReq 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 @IsobusVTMessageTypes.ExtendedStoreVersionReq 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 @IsobusVTMessageTypes.ExtendedStoreVersionReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedStoreVersionReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedStoreVersionReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedStoreVersionReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExtendedStoreVersionReq.");
+  }
+  return 0;
+}
+
+void ExtendedStoreVersionReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", versionLabel := ");
+single_value->field_versionLabel.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ExtendedStoreVersionReq_template::log_match(const ExtendedStoreVersionReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_versionLabel.match(match_value.versionLabel(), legacy)){
+TTCN_Logger::log_logmatch_info(".versionLabel");
+single_value->field_versionLabel.log_match(match_value.versionLabel(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", versionLabel := ");
+single_value->field_versionLabel.log_match(match_value.versionLabel(), 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 ExtendedStoreVersionReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_versionLabel.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 @IsobusVTMessageTypes.ExtendedStoreVersionReq.");
+}
+}
+
+void ExtendedStoreVersionReq_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_vtfunction.decode_text(text_buf);
+single_value->field_versionLabel.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 ExtendedStoreVersionReq_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 @IsobusVTMessageTypes.ExtendedStoreVersionReq.");
+}
+}
+
+void ExtendedStoreVersionReq_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: {
+    ExtendedStoreVersionReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.ExtendedStoreVersionReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) versionLabel().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "versionLabel")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          versionLabel().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 @IsobusVTMessageTypes.ExtendedStoreVersionReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ExtendedStoreVersionReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ExtendedStoreVersionReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedStoreVersionReq");
+single_value->field_versionLabel.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedStoreVersionReq");
+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 : "@IsobusVTMessageTypes.ExtendedStoreVersionReq");
+}
+
+boolean ExtendedStoreVersionReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ExtendedStoreVersionReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ExtendedLoadVersionRes__errorCodesType::ExtendedLoadVersionRes__errorCodesType()
+{
+}
+
+ExtendedLoadVersionRes__errorCodesType::ExtendedLoadVersionRes__errorCodesType(const BOOLEAN& par_fileSystemErrorOrPoolDataCorruption,
+    const BOOLEAN& par_versionLabelIsNotCorrectOrVersionLabelUnknown,
+    const BOOLEAN& par_insufficientMemoryAvailable,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved4,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7)
+  :   field_fileSystemErrorOrPoolDataCorruption(par_fileSystemErrorOrPoolDataCorruption),
+  field_versionLabelIsNotCorrectOrVersionLabelUnknown(par_versionLabelIsNotCorrectOrVersionLabelUnknown),
+  field_insufficientMemoryAvailable(par_insufficientMemoryAvailable),
+  field_anyOtherError(par_anyOtherError),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7)
+{
+}
+
+ExtendedLoadVersionRes__errorCodesType::ExtendedLoadVersionRes__errorCodesType(const ExtendedLoadVersionRes__errorCodesType& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType.");
+if (other_value.fileSystemErrorOrPoolDataCorruption().is_bound()) field_fileSystemErrorOrPoolDataCorruption = other_value.fileSystemErrorOrPoolDataCorruption();
+else field_fileSystemErrorOrPoolDataCorruption.clean_up();
+if (other_value.versionLabelIsNotCorrectOrVersionLabelUnknown().is_bound()) field_versionLabelIsNotCorrectOrVersionLabelUnknown = other_value.versionLabelIsNotCorrectOrVersionLabelUnknown();
+else field_versionLabelIsNotCorrectOrVersionLabelUnknown.clean_up();
+if (other_value.insufficientMemoryAvailable().is_bound()) field_insufficientMemoryAvailable = other_value.insufficientMemoryAvailable();
+else field_insufficientMemoryAvailable.clean_up();
+if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+else field_anyOtherError.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+}
+
+void ExtendedLoadVersionRes__errorCodesType::clean_up()
+{
+field_fileSystemErrorOrPoolDataCorruption.clean_up();
+field_versionLabelIsNotCorrectOrVersionLabelUnknown.clean_up();
+field_insufficientMemoryAvailable.clean_up();
+field_anyOtherError.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ExtendedLoadVersionRes__errorCodesType::get_descriptor() const { return &ExtendedLoadVersionRes__errorCodesType_descr_; }
+ExtendedLoadVersionRes__errorCodesType& ExtendedLoadVersionRes__errorCodesType::operator=(const ExtendedLoadVersionRes__errorCodesType& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType.");
+  if (other_value.fileSystemErrorOrPoolDataCorruption().is_bound()) field_fileSystemErrorOrPoolDataCorruption = other_value.fileSystemErrorOrPoolDataCorruption();
+  else field_fileSystemErrorOrPoolDataCorruption.clean_up();
+  if (other_value.versionLabelIsNotCorrectOrVersionLabelUnknown().is_bound()) field_versionLabelIsNotCorrectOrVersionLabelUnknown = other_value.versionLabelIsNotCorrectOrVersionLabelUnknown();
+  else field_versionLabelIsNotCorrectOrVersionLabelUnknown.clean_up();
+  if (other_value.insufficientMemoryAvailable().is_bound()) field_insufficientMemoryAvailable = other_value.insufficientMemoryAvailable();
+  else field_insufficientMemoryAvailable.clean_up();
+  if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+  else field_anyOtherError.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+}
+return *this;
+}
+
+boolean ExtendedLoadVersionRes__errorCodesType::operator==(const ExtendedLoadVersionRes__errorCodesType& other_value) const
+{
+return field_fileSystemErrorOrPoolDataCorruption==other_value.field_fileSystemErrorOrPoolDataCorruption
+  && field_versionLabelIsNotCorrectOrVersionLabelUnknown==other_value.field_versionLabelIsNotCorrectOrVersionLabelUnknown
+  && field_insufficientMemoryAvailable==other_value.field_insufficientMemoryAvailable
+  && field_anyOtherError==other_value.field_anyOtherError
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7;
+}
+
+boolean ExtendedLoadVersionRes__errorCodesType::is_bound() const
+{
+return (field_fileSystemErrorOrPoolDataCorruption.is_bound())
+  || (field_versionLabelIsNotCorrectOrVersionLabelUnknown.is_bound())
+  || (field_insufficientMemoryAvailable.is_bound())
+  || (field_anyOtherError.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound());
+}
+boolean ExtendedLoadVersionRes__errorCodesType::is_value() const
+{
+return field_fileSystemErrorOrPoolDataCorruption.is_value()
+  && field_versionLabelIsNotCorrectOrVersionLabelUnknown.is_value()
+  && field_insufficientMemoryAvailable.is_value()
+  && field_anyOtherError.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value();
+}
+void ExtendedLoadVersionRes__errorCodesType::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ fileSystemErrorOrPoolDataCorruption := ");
+field_fileSystemErrorOrPoolDataCorruption.log();
+TTCN_Logger::log_event_str(", versionLabelIsNotCorrectOrVersionLabelUnknown := ");
+field_versionLabelIsNotCorrectOrVersionLabelUnknown.log();
+TTCN_Logger::log_event_str(", insufficientMemoryAvailable := ");
+field_insufficientMemoryAvailable.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ExtendedLoadVersionRes__errorCodesType::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType has 8 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) fileSystemErrorOrPoolDataCorruption().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) versionLabelIsNotCorrectOrVersionLabelUnknown().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) insufficientMemoryAvailable().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "fileSystemErrorOrPoolDataCorruption")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          fileSystemErrorOrPoolDataCorruption().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(), "versionLabelIsNotCorrectOrVersionLabelUnknown")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          versionLabelIsNotCorrectOrVersionLabelUnknown().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(), "insufficientMemoryAvailable")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          insufficientMemoryAvailable().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType");
+  }
+}
+
+void ExtendedLoadVersionRes__errorCodesType::set_implicit_omit()
+{
+if (fileSystemErrorOrPoolDataCorruption().is_bound()) fileSystemErrorOrPoolDataCorruption().set_implicit_omit();
+if (versionLabelIsNotCorrectOrVersionLabelUnknown().is_bound()) versionLabelIsNotCorrectOrVersionLabelUnknown().set_implicit_omit();
+if (insufficientMemoryAvailable().is_bound()) insufficientMemoryAvailable().set_implicit_omit();
+if (anyOtherError().is_bound()) anyOtherError().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+}
+
+void ExtendedLoadVersionRes__errorCodesType::encode_text(Text_Buf& text_buf) const
+{
+field_fileSystemErrorOrPoolDataCorruption.encode_text(text_buf);
+field_versionLabelIsNotCorrectOrVersionLabelUnknown.encode_text(text_buf);
+field_insufficientMemoryAvailable.encode_text(text_buf);
+field_anyOtherError.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+}
+
+void ExtendedLoadVersionRes__errorCodesType::decode_text(Text_Buf& text_buf)
+{
+field_fileSystemErrorOrPoolDataCorruption.decode_text(text_buf);
+field_versionLabelIsNotCorrectOrVersionLabelUnknown.decode_text(text_buf);
+field_insufficientMemoryAvailable.decode_text(text_buf);
+field_anyOtherError.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+}
+
+void ExtendedLoadVersionRes__errorCodesType::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ExtendedLoadVersionRes__errorCodesType::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ExtendedLoadVersionRes__errorCodesType::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_fileSystemErrorOrPoolDataCorruption.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_versionLabelIsNotCorrectOrVersionLabelUnknown.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_insufficientMemoryAvailable.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_anyOtherError.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ExtendedLoadVersionRes__errorCodesType::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_fileSystemErrorOrPoolDataCorruption.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_versionLabelIsNotCorrectOrVersionLabelUnknown.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_insufficientMemoryAvailable.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_anyOtherError.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved4.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved5.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved6.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved7.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct ExtendedLoadVersionRes__errorCodesType_template::single_value_struct {
+BOOLEAN_template field_fileSystemErrorOrPoolDataCorruption;
+BOOLEAN_template field_versionLabelIsNotCorrectOrVersionLabelUnknown;
+BOOLEAN_template field_insufficientMemoryAvailable;
+BOOLEAN_template field_anyOtherError;
+BOOLEAN_template field_reserved4;
+BOOLEAN_template field_reserved5;
+BOOLEAN_template field_reserved6;
+BOOLEAN_template field_reserved7;
+};
+
+void ExtendedLoadVersionRes__errorCodesType_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_fileSystemErrorOrPoolDataCorruption = ANY_VALUE;
+single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown = ANY_VALUE;
+single_value->field_insufficientMemoryAvailable = ANY_VALUE;
+single_value->field_anyOtherError = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+}
+}
+}
+
+void ExtendedLoadVersionRes__errorCodesType_template::copy_value(const ExtendedLoadVersionRes__errorCodesType& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.fileSystemErrorOrPoolDataCorruption().is_bound()) {
+  single_value->field_fileSystemErrorOrPoolDataCorruption = other_value.fileSystemErrorOrPoolDataCorruption();
+} else {
+  single_value->field_fileSystemErrorOrPoolDataCorruption.clean_up();
+}
+if (other_value.versionLabelIsNotCorrectOrVersionLabelUnknown().is_bound()) {
+  single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown = other_value.versionLabelIsNotCorrectOrVersionLabelUnknown();
+} else {
+  single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown.clean_up();
+}
+if (other_value.insufficientMemoryAvailable().is_bound()) {
+  single_value->field_insufficientMemoryAvailable = other_value.insufficientMemoryAvailable();
+} else {
+  single_value->field_insufficientMemoryAvailable.clean_up();
+}
+if (other_value.anyOtherError().is_bound()) {
+  single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+  single_value->field_anyOtherError.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ExtendedLoadVersionRes__errorCodesType_template::copy_template(const ExtendedLoadVersionRes__errorCodesType_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.fileSystemErrorOrPoolDataCorruption().get_selection()) {
+single_value->field_fileSystemErrorOrPoolDataCorruption = other_value.fileSystemErrorOrPoolDataCorruption();
+} else {
+single_value->field_fileSystemErrorOrPoolDataCorruption.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.versionLabelIsNotCorrectOrVersionLabelUnknown().get_selection()) {
+single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown = other_value.versionLabelIsNotCorrectOrVersionLabelUnknown();
+} else {
+single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.insufficientMemoryAvailable().get_selection()) {
+single_value->field_insufficientMemoryAvailable = other_value.insufficientMemoryAvailable();
+} else {
+single_value->field_insufficientMemoryAvailable.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.anyOtherError().get_selection()) {
+single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+single_value->field_anyOtherError.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ExtendedLoadVersionRes__errorCodesType_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType.");
+break;
+}
+set_selection(other_value);
+}
+
+ExtendedLoadVersionRes__errorCodesType_template::ExtendedLoadVersionRes__errorCodesType_template()
+{
+}
+
+ExtendedLoadVersionRes__errorCodesType_template::ExtendedLoadVersionRes__errorCodesType_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ExtendedLoadVersionRes__errorCodesType_template::ExtendedLoadVersionRes__errorCodesType_template(const ExtendedLoadVersionRes__errorCodesType& other_value)
+{
+copy_value(other_value);
+}
+
+ExtendedLoadVersionRes__errorCodesType_template::ExtendedLoadVersionRes__errorCodesType_template(const OPTIONAL<ExtendedLoadVersionRes__errorCodesType>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExtendedLoadVersionRes__errorCodesType&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType from an unbound optional field.");
+}
+}
+
+ExtendedLoadVersionRes__errorCodesType_template::ExtendedLoadVersionRes__errorCodesType_template(const ExtendedLoadVersionRes__errorCodesType_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ExtendedLoadVersionRes__errorCodesType_template::~ExtendedLoadVersionRes__errorCodesType_template()
+{
+clean_up();
+}
+
+ExtendedLoadVersionRes__errorCodesType_template& ExtendedLoadVersionRes__errorCodesType_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ExtendedLoadVersionRes__errorCodesType_template& ExtendedLoadVersionRes__errorCodesType_template::operator=(const ExtendedLoadVersionRes__errorCodesType& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ExtendedLoadVersionRes__errorCodesType_template& ExtendedLoadVersionRes__errorCodesType_template::operator=(const OPTIONAL<ExtendedLoadVersionRes__errorCodesType>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExtendedLoadVersionRes__errorCodesType&)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 @IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType.");
+}
+return *this;
+}
+
+ExtendedLoadVersionRes__errorCodesType_template& ExtendedLoadVersionRes__errorCodesType_template::operator=(const ExtendedLoadVersionRes__errorCodesType_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ExtendedLoadVersionRes__errorCodesType_template::match(const ExtendedLoadVersionRes__errorCodesType& 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.fileSystemErrorOrPoolDataCorruption().is_bound()) return FALSE;
+if(!single_value->field_fileSystemErrorOrPoolDataCorruption.match(other_value.fileSystemErrorOrPoolDataCorruption(), legacy))return FALSE;
+if(!other_value.versionLabelIsNotCorrectOrVersionLabelUnknown().is_bound()) return FALSE;
+if(!single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown.match(other_value.versionLabelIsNotCorrectOrVersionLabelUnknown(), legacy))return FALSE;
+if(!other_value.insufficientMemoryAvailable().is_bound()) return FALSE;
+if(!single_value->field_insufficientMemoryAvailable.match(other_value.insufficientMemoryAvailable(), legacy))return FALSE;
+if(!other_value.anyOtherError().is_bound()) return FALSE;
+if(!single_value->field_anyOtherError.match(other_value.anyOtherError(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType.");
+}
+return FALSE;
+}
+
+boolean ExtendedLoadVersionRes__errorCodesType_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_fileSystemErrorOrPoolDataCorruption.is_bound()
+
+ ||single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown.is_bound()
+
+ ||single_value->field_insufficientMemoryAvailable.is_bound()
+
+ ||single_value->field_anyOtherError.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+;
+}
+
+boolean ExtendedLoadVersionRes__errorCodesType_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_fileSystemErrorOrPoolDataCorruption.is_value()
+ &&single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown.is_value()
+ &&single_value->field_insufficientMemoryAvailable.is_value()
+ &&single_value->field_anyOtherError.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value();
+}
+
+void ExtendedLoadVersionRes__errorCodesType_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ExtendedLoadVersionRes__errorCodesType ExtendedLoadVersionRes__errorCodesType_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 @IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType.");
+ExtendedLoadVersionRes__errorCodesType ret_val;
+if (single_value->field_fileSystemErrorOrPoolDataCorruption.is_bound()) {
+ret_val.fileSystemErrorOrPoolDataCorruption() = single_value->field_fileSystemErrorOrPoolDataCorruption.valueof();
+}
+if (single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown.is_bound()) {
+ret_val.versionLabelIsNotCorrectOrVersionLabelUnknown() = single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown.valueof();
+}
+if (single_value->field_insufficientMemoryAvailable.is_bound()) {
+ret_val.insufficientMemoryAvailable() = single_value->field_insufficientMemoryAvailable.valueof();
+}
+if (single_value->field_anyOtherError.is_bound()) {
+ret_val.anyOtherError() = single_value->field_anyOtherError.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+return ret_val;
+}
+
+void ExtendedLoadVersionRes__errorCodesType_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ExtendedLoadVersionRes__errorCodesType_template[list_length];
+}
+
+ExtendedLoadVersionRes__errorCodesType_template& ExtendedLoadVersionRes__errorCodesType_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& ExtendedLoadVersionRes__errorCodesType_template::fileSystemErrorOrPoolDataCorruption()
+{
+set_specific();
+return single_value->field_fileSystemErrorOrPoolDataCorruption;
+}
+
+const BOOLEAN_template& ExtendedLoadVersionRes__errorCodesType_template::fileSystemErrorOrPoolDataCorruption() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field fileSystemErrorOrPoolDataCorruption of a non-specific template of type @IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType.");
+return single_value->field_fileSystemErrorOrPoolDataCorruption;
+}
+
+BOOLEAN_template& ExtendedLoadVersionRes__errorCodesType_template::versionLabelIsNotCorrectOrVersionLabelUnknown()
+{
+set_specific();
+return single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown;
+}
+
+const BOOLEAN_template& ExtendedLoadVersionRes__errorCodesType_template::versionLabelIsNotCorrectOrVersionLabelUnknown() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field versionLabelIsNotCorrectOrVersionLabelUnknown of a non-specific template of type @IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType.");
+return single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown;
+}
+
+BOOLEAN_template& ExtendedLoadVersionRes__errorCodesType_template::insufficientMemoryAvailable()
+{
+set_specific();
+return single_value->field_insufficientMemoryAvailable;
+}
+
+const BOOLEAN_template& ExtendedLoadVersionRes__errorCodesType_template::insufficientMemoryAvailable() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field insufficientMemoryAvailable of a non-specific template of type @IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType.");
+return single_value->field_insufficientMemoryAvailable;
+}
+
+BOOLEAN_template& ExtendedLoadVersionRes__errorCodesType_template::anyOtherError()
+{
+set_specific();
+return single_value->field_anyOtherError;
+}
+
+const BOOLEAN_template& ExtendedLoadVersionRes__errorCodesType_template::anyOtherError() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field anyOtherError of a non-specific template of type @IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType.");
+return single_value->field_anyOtherError;
+}
+
+BOOLEAN_template& ExtendedLoadVersionRes__errorCodesType_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const BOOLEAN_template& ExtendedLoadVersionRes__errorCodesType_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType.");
+return single_value->field_reserved4;
+}
+
+BOOLEAN_template& ExtendedLoadVersionRes__errorCodesType_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const BOOLEAN_template& ExtendedLoadVersionRes__errorCodesType_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType.");
+return single_value->field_reserved5;
+}
+
+BOOLEAN_template& ExtendedLoadVersionRes__errorCodesType_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const BOOLEAN_template& ExtendedLoadVersionRes__errorCodesType_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType.");
+return single_value->field_reserved6;
+}
+
+BOOLEAN_template& ExtendedLoadVersionRes__errorCodesType_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const BOOLEAN_template& ExtendedLoadVersionRes__errorCodesType_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType.");
+return single_value->field_reserved7;
+}
+
+int ExtendedLoadVersionRes__errorCodesType_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType 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 @IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType.");
+  }
+  return 0;
+}
+
+void ExtendedLoadVersionRes__errorCodesType_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ fileSystemErrorOrPoolDataCorruption := ");
+single_value->field_fileSystemErrorOrPoolDataCorruption.log();
+TTCN_Logger::log_event_str(", versionLabelIsNotCorrectOrVersionLabelUnknown := ");
+single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown.log();
+TTCN_Logger::log_event_str(", insufficientMemoryAvailable := ");
+single_value->field_insufficientMemoryAvailable.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ExtendedLoadVersionRes__errorCodesType_template::log_match(const ExtendedLoadVersionRes__errorCodesType& 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_fileSystemErrorOrPoolDataCorruption.match(match_value.fileSystemErrorOrPoolDataCorruption(), legacy)){
+TTCN_Logger::log_logmatch_info(".fileSystemErrorOrPoolDataCorruption");
+single_value->field_fileSystemErrorOrPoolDataCorruption.log_match(match_value.fileSystemErrorOrPoolDataCorruption(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown.match(match_value.versionLabelIsNotCorrectOrVersionLabelUnknown(), legacy)){
+TTCN_Logger::log_logmatch_info(".versionLabelIsNotCorrectOrVersionLabelUnknown");
+single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown.log_match(match_value.versionLabelIsNotCorrectOrVersionLabelUnknown(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_insufficientMemoryAvailable.match(match_value.insufficientMemoryAvailable(), legacy)){
+TTCN_Logger::log_logmatch_info(".insufficientMemoryAvailable");
+single_value->field_insufficientMemoryAvailable.log_match(match_value.insufficientMemoryAvailable(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_anyOtherError.match(match_value.anyOtherError(), legacy)){
+TTCN_Logger::log_logmatch_info(".anyOtherError");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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("{ fileSystemErrorOrPoolDataCorruption := ");
+single_value->field_fileSystemErrorOrPoolDataCorruption.log_match(match_value.fileSystemErrorOrPoolDataCorruption(), legacy);
+TTCN_Logger::log_event_str(", versionLabelIsNotCorrectOrVersionLabelUnknown := ");
+single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown.log_match(match_value.versionLabelIsNotCorrectOrVersionLabelUnknown(), legacy);
+TTCN_Logger::log_event_str(", insufficientMemoryAvailable := ");
+single_value->field_insufficientMemoryAvailable.log_match(match_value.insufficientMemoryAvailable(), legacy);
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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 ExtendedLoadVersionRes__errorCodesType_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_fileSystemErrorOrPoolDataCorruption.encode_text(text_buf);
+single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown.encode_text(text_buf);
+single_value->field_insufficientMemoryAvailable.encode_text(text_buf);
+single_value->field_anyOtherError.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.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 @IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType.");
+}
+}
+
+void ExtendedLoadVersionRes__errorCodesType_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_fileSystemErrorOrPoolDataCorruption.decode_text(text_buf);
+single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown.decode_text(text_buf);
+single_value->field_insufficientMemoryAvailable.decode_text(text_buf);
+single_value->field_anyOtherError.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.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 ExtendedLoadVersionRes__errorCodesType_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 @IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType.");
+}
+}
+
+void ExtendedLoadVersionRes__errorCodesType_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: {
+    ExtendedLoadVersionRes__errorCodesType_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType has 8 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) fileSystemErrorOrPoolDataCorruption().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) versionLabelIsNotCorrectOrVersionLabelUnknown().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) insufficientMemoryAvailable().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "fileSystemErrorOrPoolDataCorruption")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          fileSystemErrorOrPoolDataCorruption().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(), "versionLabelIsNotCorrectOrVersionLabelUnknown")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          versionLabelIsNotCorrectOrVersionLabelUnknown().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(), "insufficientMemoryAvailable")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          insufficientMemoryAvailable().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ExtendedLoadVersionRes__errorCodesType_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_fileSystemErrorOrPoolDataCorruption.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType");
+single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType");
+single_value->field_insufficientMemoryAvailable.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType");
+single_value->field_anyOtherError.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType");
+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 : "@IsobusVTMessageTypes.ExtendedLoadVersionRes_errorCodesType");
+}
+
+boolean ExtendedLoadVersionRes__errorCodesType_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ExtendedLoadVersionRes__errorCodesType_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ExtendedLoadVersionRes::ExtendedLoadVersionRes()
+{
+}
+
+ExtendedLoadVersionRes::ExtendedLoadVersionRes(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_reserved2,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const ExtendedLoadVersionRes__errorCodesType& par_errorCodes,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_reserved2(par_reserved2),
+  field_reserved3(par_reserved3),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_errorCodes(par_errorCodes),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+ExtendedLoadVersionRes::ExtendedLoadVersionRes(const ExtendedLoadVersionRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ExtendedLoadVersionRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+else field_reserved2.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+else field_errorCodes.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void ExtendedLoadVersionRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_reserved2.clean_up();
+field_reserved3.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_errorCodes.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ExtendedLoadVersionRes::get_descriptor() const { return &ExtendedLoadVersionRes_descr_; }
+ExtendedLoadVersionRes& ExtendedLoadVersionRes::operator=(const ExtendedLoadVersionRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ExtendedLoadVersionRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+  else field_reserved2.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+  else field_errorCodes.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean ExtendedLoadVersionRes::operator==(const ExtendedLoadVersionRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_reserved2==other_value.field_reserved2
+  && field_reserved3==other_value.field_reserved3
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_errorCodes==other_value.field_errorCodes
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean ExtendedLoadVersionRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_reserved2.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_errorCodes.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean ExtendedLoadVersionRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_reserved2.is_value()
+  && field_reserved3.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_errorCodes.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void ExtendedLoadVersionRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ExtendedLoadVersionRes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.ExtendedLoadVersionRes has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ExtendedLoadVersionRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ExtendedLoadVersionRes");
+  }
+}
+
+void ExtendedLoadVersionRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (reserved2().is_bound()) reserved2().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (errorCodes().is_bound()) errorCodes().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void ExtendedLoadVersionRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_reserved2.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_errorCodes.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void ExtendedLoadVersionRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_reserved2.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_errorCodes.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void ExtendedLoadVersionRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ExtendedLoadVersionRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ExtendedLoadVersionRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ExtendedLoadVersionRes_reserved2_descr_.raw->forceomit);
+  decoded_field_length = field_reserved2.RAW_decode(ExtendedLoadVersionRes_reserved2_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, ExtendedLoadVersionRes_reserved3_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(ExtendedLoadVersionRes_reserved3_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, ExtendedLoadVersionRes_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(ExtendedLoadVersionRes_reserved4_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, ExtendedLoadVersionRes_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(ExtendedLoadVersionRes_reserved5_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, ExtendedLoadVersionRes__errorCodesType_descr_.raw->forceomit);
+  decoded_field_length = field_errorCodes.RAW_decode(ExtendedLoadVersionRes__errorCodesType_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, ExtendedLoadVersionRes_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(ExtendedLoadVersionRes_reserved7_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, ExtendedLoadVersionRes_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(ExtendedLoadVersionRes_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ExtendedLoadVersionRes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ExtendedLoadVersionRes_reserved2_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ExtendedLoadVersionRes_reserved3_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, ExtendedLoadVersionRes_reserved4_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, ExtendedLoadVersionRes_reserved5_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, ExtendedLoadVersionRes__errorCodesType_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, ExtendedLoadVersionRes_reserved7_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, ExtendedLoadVersionRes_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved2.RAW_encode(ExtendedLoadVersionRes_reserved2_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved3.RAW_encode(ExtendedLoadVersionRes_reserved3_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved4.RAW_encode(ExtendedLoadVersionRes_reserved4_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved5.RAW_encode(ExtendedLoadVersionRes_reserved5_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_errorCodes.RAW_encode(ExtendedLoadVersionRes__errorCodesType_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved7.RAW_encode(ExtendedLoadVersionRes_reserved7_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved8.RAW_encode(ExtendedLoadVersionRes_reserved8_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct ExtendedLoadVersionRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+OCTETSTRING_template field_reserved2;
+OCTETSTRING_template field_reserved3;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+ExtendedLoadVersionRes__errorCodesType_template field_errorCodes;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void ExtendedLoadVersionRes_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_vtfunction = ANY_VALUE;
+single_value->field_reserved2 = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_errorCodes = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void ExtendedLoadVersionRes_template::copy_value(const ExtendedLoadVersionRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.reserved2().is_bound()) {
+  single_value->field_reserved2 = other_value.reserved2();
+} else {
+  single_value->field_reserved2.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.errorCodes().is_bound()) {
+  single_value->field_errorCodes = other_value.errorCodes();
+} else {
+  single_value->field_errorCodes.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ExtendedLoadVersionRes_template::copy_template(const ExtendedLoadVersionRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved2().get_selection()) {
+single_value->field_reserved2 = other_value.reserved2();
+} else {
+single_value->field_reserved2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.errorCodes().get_selection()) {
+single_value->field_errorCodes = other_value.errorCodes();
+} else {
+single_value->field_errorCodes.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ExtendedLoadVersionRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExtendedLoadVersionRes.");
+break;
+}
+set_selection(other_value);
+}
+
+ExtendedLoadVersionRes_template::ExtendedLoadVersionRes_template()
+{
+}
+
+ExtendedLoadVersionRes_template::ExtendedLoadVersionRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ExtendedLoadVersionRes_template::ExtendedLoadVersionRes_template(const ExtendedLoadVersionRes& other_value)
+{
+copy_value(other_value);
+}
+
+ExtendedLoadVersionRes_template::ExtendedLoadVersionRes_template(const OPTIONAL<ExtendedLoadVersionRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExtendedLoadVersionRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ExtendedLoadVersionRes from an unbound optional field.");
+}
+}
+
+ExtendedLoadVersionRes_template::ExtendedLoadVersionRes_template(const ExtendedLoadVersionRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ExtendedLoadVersionRes_template::~ExtendedLoadVersionRes_template()
+{
+clean_up();
+}
+
+ExtendedLoadVersionRes_template& ExtendedLoadVersionRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ExtendedLoadVersionRes_template& ExtendedLoadVersionRes_template::operator=(const ExtendedLoadVersionRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ExtendedLoadVersionRes_template& ExtendedLoadVersionRes_template::operator=(const OPTIONAL<ExtendedLoadVersionRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExtendedLoadVersionRes&)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 @IsobusVTMessageTypes.ExtendedLoadVersionRes.");
+}
+return *this;
+}
+
+ExtendedLoadVersionRes_template& ExtendedLoadVersionRes_template::operator=(const ExtendedLoadVersionRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ExtendedLoadVersionRes_template::match(const ExtendedLoadVersionRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.reserved2().is_bound()) return FALSE;
+if(!single_value->field_reserved2.match(other_value.reserved2(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.errorCodes().is_bound()) return FALSE;
+if(!single_value->field_errorCodes.match(other_value.errorCodes(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExtendedLoadVersionRes.");
+}
+return FALSE;
+}
+
+boolean ExtendedLoadVersionRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_reserved2.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_errorCodes.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean ExtendedLoadVersionRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_reserved2.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_errorCodes.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void ExtendedLoadVersionRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ExtendedLoadVersionRes ExtendedLoadVersionRes_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 @IsobusVTMessageTypes.ExtendedLoadVersionRes.");
+ExtendedLoadVersionRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_reserved2.is_bound()) {
+ret_val.reserved2() = single_value->field_reserved2.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_errorCodes.is_bound()) {
+ret_val.errorCodes() = single_value->field_errorCodes.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void ExtendedLoadVersionRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ExtendedLoadVersionRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ExtendedLoadVersionRes_template[list_length];
+}
+
+ExtendedLoadVersionRes_template& ExtendedLoadVersionRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ExtendedLoadVersionRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ExtendedLoadVersionRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ExtendedLoadVersionRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ExtendedLoadVersionRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ExtendedLoadVersionRes.");
+return single_value->field_vtfunction;
+}
+
+OCTETSTRING_template& ExtendedLoadVersionRes_template::reserved2()
+{
+set_specific();
+return single_value->field_reserved2;
+}
+
+const OCTETSTRING_template& ExtendedLoadVersionRes_template::reserved2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved2 of a non-specific template of type @IsobusVTMessageTypes.ExtendedLoadVersionRes.");
+return single_value->field_reserved2;
+}
+
+OCTETSTRING_template& ExtendedLoadVersionRes_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const OCTETSTRING_template& ExtendedLoadVersionRes_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.ExtendedLoadVersionRes.");
+return single_value->field_reserved3;
+}
+
+OCTETSTRING_template& ExtendedLoadVersionRes_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& ExtendedLoadVersionRes_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.ExtendedLoadVersionRes.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& ExtendedLoadVersionRes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& ExtendedLoadVersionRes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.ExtendedLoadVersionRes.");
+return single_value->field_reserved5;
+}
+
+ExtendedLoadVersionRes__errorCodesType_template& ExtendedLoadVersionRes_template::errorCodes()
+{
+set_specific();
+return single_value->field_errorCodes;
+}
+
+const ExtendedLoadVersionRes__errorCodesType_template& ExtendedLoadVersionRes_template::errorCodes() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field errorCodes of a non-specific template of type @IsobusVTMessageTypes.ExtendedLoadVersionRes.");
+return single_value->field_errorCodes;
+}
+
+OCTETSTRING_template& ExtendedLoadVersionRes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& ExtendedLoadVersionRes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ExtendedLoadVersionRes.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& ExtendedLoadVersionRes_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& ExtendedLoadVersionRes_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.ExtendedLoadVersionRes.");
+return single_value->field_reserved8;
+}
+
+int ExtendedLoadVersionRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedLoadVersionRes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedLoadVersionRes 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 @IsobusVTMessageTypes.ExtendedLoadVersionRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedLoadVersionRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedLoadVersionRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedLoadVersionRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExtendedLoadVersionRes.");
+  }
+  return 0;
+}
+
+void ExtendedLoadVersionRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ExtendedLoadVersionRes_template::log_match(const ExtendedLoadVersionRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved2.match(match_value.reserved2(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved2");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_errorCodes.match(match_value.errorCodes(), legacy)){
+TTCN_Logger::log_logmatch_info(".errorCodes");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 ExtendedLoadVersionRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_reserved2.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_errorCodes.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.ExtendedLoadVersionRes.");
+}
+}
+
+void ExtendedLoadVersionRes_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_vtfunction.decode_text(text_buf);
+single_value->field_reserved2.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_errorCodes.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 ExtendedLoadVersionRes_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 @IsobusVTMessageTypes.ExtendedLoadVersionRes.");
+}
+}
+
+void ExtendedLoadVersionRes_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: {
+    ExtendedLoadVersionRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.ExtendedLoadVersionRes has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ExtendedLoadVersionRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ExtendedLoadVersionRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ExtendedLoadVersionRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedLoadVersionRes");
+single_value->field_reserved2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedLoadVersionRes");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedLoadVersionRes");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedLoadVersionRes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedLoadVersionRes");
+single_value->field_errorCodes.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedLoadVersionRes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedLoadVersionRes");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedLoadVersionRes");
+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 : "@IsobusVTMessageTypes.ExtendedLoadVersionRes");
+}
+
+boolean ExtendedLoadVersionRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ExtendedLoadVersionRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ExtendedLoadVersionReq::ExtendedLoadVersionReq()
+{
+}
+
+ExtendedLoadVersionReq::ExtendedLoadVersionReq(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_versionLabel)
+  :   field_vtfunction(par_vtfunction),
+  field_versionLabel(par_versionLabel)
+{
+}
+
+ExtendedLoadVersionReq::ExtendedLoadVersionReq(const ExtendedLoadVersionReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ExtendedLoadVersionReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.versionLabel().is_bound()) field_versionLabel = other_value.versionLabel();
+else field_versionLabel.clean_up();
+}
+
+void ExtendedLoadVersionReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_versionLabel.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ExtendedLoadVersionReq::get_descriptor() const { return &ExtendedLoadVersionReq_descr_; }
+ExtendedLoadVersionReq& ExtendedLoadVersionReq::operator=(const ExtendedLoadVersionReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ExtendedLoadVersionReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.versionLabel().is_bound()) field_versionLabel = other_value.versionLabel();
+  else field_versionLabel.clean_up();
+}
+return *this;
+}
+
+boolean ExtendedLoadVersionReq::operator==(const ExtendedLoadVersionReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_versionLabel==other_value.field_versionLabel;
+}
+
+boolean ExtendedLoadVersionReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_versionLabel.is_bound());
+}
+boolean ExtendedLoadVersionReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_versionLabel.is_value();
+}
+void ExtendedLoadVersionReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", versionLabel := ");
+field_versionLabel.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ExtendedLoadVersionReq::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 @IsobusVTMessageTypes.ExtendedLoadVersionReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) versionLabel().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "versionLabel")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          versionLabel().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 @IsobusVTMessageTypes.ExtendedLoadVersionReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ExtendedLoadVersionReq");
+  }
+}
+
+void ExtendedLoadVersionReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (versionLabel().is_bound()) versionLabel().set_implicit_omit();
+}
+
+void ExtendedLoadVersionReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_versionLabel.encode_text(text_buf);
+}
+
+void ExtendedLoadVersionReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_versionLabel.decode_text(text_buf);
+}
+
+void ExtendedLoadVersionReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ExtendedLoadVersionReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ExtendedLoadVersionReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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::OCT32_descr_.raw->forceomit);
+  decoded_field_length = field_versionLabel.RAW_decode(General__Types::OCT32_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 ExtendedLoadVersionReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, General__Types::OCT32_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_versionLabel.RAW_encode(General__Types::OCT32_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct ExtendedLoadVersionReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+OCTETSTRING_template field_versionLabel;
+};
+
+void ExtendedLoadVersionReq_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_vtfunction = ANY_VALUE;
+single_value->field_versionLabel = ANY_VALUE;
+}
+}
+}
+
+void ExtendedLoadVersionReq_template::copy_value(const ExtendedLoadVersionReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.versionLabel().is_bound()) {
+  single_value->field_versionLabel = other_value.versionLabel();
+} else {
+  single_value->field_versionLabel.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ExtendedLoadVersionReq_template::copy_template(const ExtendedLoadVersionReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.versionLabel().get_selection()) {
+single_value->field_versionLabel = other_value.versionLabel();
+} else {
+single_value->field_versionLabel.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ExtendedLoadVersionReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExtendedLoadVersionReq.");
+break;
+}
+set_selection(other_value);
+}
+
+ExtendedLoadVersionReq_template::ExtendedLoadVersionReq_template()
+{
+}
+
+ExtendedLoadVersionReq_template::ExtendedLoadVersionReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ExtendedLoadVersionReq_template::ExtendedLoadVersionReq_template(const ExtendedLoadVersionReq& other_value)
+{
+copy_value(other_value);
+}
+
+ExtendedLoadVersionReq_template::ExtendedLoadVersionReq_template(const OPTIONAL<ExtendedLoadVersionReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExtendedLoadVersionReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ExtendedLoadVersionReq from an unbound optional field.");
+}
+}
+
+ExtendedLoadVersionReq_template::ExtendedLoadVersionReq_template(const ExtendedLoadVersionReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ExtendedLoadVersionReq_template::~ExtendedLoadVersionReq_template()
+{
+clean_up();
+}
+
+ExtendedLoadVersionReq_template& ExtendedLoadVersionReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ExtendedLoadVersionReq_template& ExtendedLoadVersionReq_template::operator=(const ExtendedLoadVersionReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ExtendedLoadVersionReq_template& ExtendedLoadVersionReq_template::operator=(const OPTIONAL<ExtendedLoadVersionReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExtendedLoadVersionReq&)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 @IsobusVTMessageTypes.ExtendedLoadVersionReq.");
+}
+return *this;
+}
+
+ExtendedLoadVersionReq_template& ExtendedLoadVersionReq_template::operator=(const ExtendedLoadVersionReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ExtendedLoadVersionReq_template::match(const ExtendedLoadVersionReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.versionLabel().is_bound()) return FALSE;
+if(!single_value->field_versionLabel.match(other_value.versionLabel(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExtendedLoadVersionReq.");
+}
+return FALSE;
+}
+
+boolean ExtendedLoadVersionReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_versionLabel.is_bound()
+;
+}
+
+boolean ExtendedLoadVersionReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_versionLabel.is_value();
+}
+
+void ExtendedLoadVersionReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ExtendedLoadVersionReq ExtendedLoadVersionReq_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 @IsobusVTMessageTypes.ExtendedLoadVersionReq.");
+ExtendedLoadVersionReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_versionLabel.is_bound()) {
+ret_val.versionLabel() = single_value->field_versionLabel.valueof();
+}
+return ret_val;
+}
+
+void ExtendedLoadVersionReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ExtendedLoadVersionReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ExtendedLoadVersionReq_template[list_length];
+}
+
+ExtendedLoadVersionReq_template& ExtendedLoadVersionReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ExtendedLoadVersionReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ExtendedLoadVersionReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ExtendedLoadVersionReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ExtendedLoadVersionReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ExtendedLoadVersionReq.");
+return single_value->field_vtfunction;
+}
+
+OCTETSTRING_template& ExtendedLoadVersionReq_template::versionLabel()
+{
+set_specific();
+return single_value->field_versionLabel;
+}
+
+const OCTETSTRING_template& ExtendedLoadVersionReq_template::versionLabel() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field versionLabel of a non-specific template of type @IsobusVTMessageTypes.ExtendedLoadVersionReq.");
+return single_value->field_versionLabel;
+}
+
+int ExtendedLoadVersionReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedLoadVersionReq 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 @IsobusVTMessageTypes.ExtendedLoadVersionReq 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 @IsobusVTMessageTypes.ExtendedLoadVersionReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedLoadVersionReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedLoadVersionReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedLoadVersionReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExtendedLoadVersionReq.");
+  }
+  return 0;
+}
+
+void ExtendedLoadVersionReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", versionLabel := ");
+single_value->field_versionLabel.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ExtendedLoadVersionReq_template::log_match(const ExtendedLoadVersionReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_versionLabel.match(match_value.versionLabel(), legacy)){
+TTCN_Logger::log_logmatch_info(".versionLabel");
+single_value->field_versionLabel.log_match(match_value.versionLabel(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", versionLabel := ");
+single_value->field_versionLabel.log_match(match_value.versionLabel(), 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 ExtendedLoadVersionReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_versionLabel.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 @IsobusVTMessageTypes.ExtendedLoadVersionReq.");
+}
+}
+
+void ExtendedLoadVersionReq_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_vtfunction.decode_text(text_buf);
+single_value->field_versionLabel.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 ExtendedLoadVersionReq_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 @IsobusVTMessageTypes.ExtendedLoadVersionReq.");
+}
+}
+
+void ExtendedLoadVersionReq_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: {
+    ExtendedLoadVersionReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.ExtendedLoadVersionReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) versionLabel().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "versionLabel")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          versionLabel().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 @IsobusVTMessageTypes.ExtendedLoadVersionReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ExtendedLoadVersionReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ExtendedLoadVersionReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedLoadVersionReq");
+single_value->field_versionLabel.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedLoadVersionReq");
+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 : "@IsobusVTMessageTypes.ExtendedLoadVersionReq");
+}
+
+boolean ExtendedLoadVersionReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ExtendedLoadVersionReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ExtendedDeleteVersionRes__errorCodesType::ExtendedDeleteVersionRes__errorCodesType()
+{
+}
+
+ExtendedDeleteVersionRes__errorCodesType::ExtendedDeleteVersionRes__errorCodesType(const BOOLEAN& par_reserved0,
+    const BOOLEAN& par_versionLabelIsNotCorrectOrVersionLabelUnknown,
+    const BOOLEAN& par_reserved2,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved4,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7)
+  :   field_reserved0(par_reserved0),
+  field_versionLabelIsNotCorrectOrVersionLabelUnknown(par_versionLabelIsNotCorrectOrVersionLabelUnknown),
+  field_reserved2(par_reserved2),
+  field_anyOtherError(par_anyOtherError),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7)
+{
+}
+
+ExtendedDeleteVersionRes__errorCodesType::ExtendedDeleteVersionRes__errorCodesType(const ExtendedDeleteVersionRes__errorCodesType& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType.");
+if (other_value.reserved0().is_bound()) field_reserved0 = other_value.reserved0();
+else field_reserved0.clean_up();
+if (other_value.versionLabelIsNotCorrectOrVersionLabelUnknown().is_bound()) field_versionLabelIsNotCorrectOrVersionLabelUnknown = other_value.versionLabelIsNotCorrectOrVersionLabelUnknown();
+else field_versionLabelIsNotCorrectOrVersionLabelUnknown.clean_up();
+if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+else field_reserved2.clean_up();
+if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+else field_anyOtherError.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+}
+
+void ExtendedDeleteVersionRes__errorCodesType::clean_up()
+{
+field_reserved0.clean_up();
+field_versionLabelIsNotCorrectOrVersionLabelUnknown.clean_up();
+field_reserved2.clean_up();
+field_anyOtherError.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ExtendedDeleteVersionRes__errorCodesType::get_descriptor() const { return &ExtendedDeleteVersionRes__errorCodesType_descr_; }
+ExtendedDeleteVersionRes__errorCodesType& ExtendedDeleteVersionRes__errorCodesType::operator=(const ExtendedDeleteVersionRes__errorCodesType& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType.");
+  if (other_value.reserved0().is_bound()) field_reserved0 = other_value.reserved0();
+  else field_reserved0.clean_up();
+  if (other_value.versionLabelIsNotCorrectOrVersionLabelUnknown().is_bound()) field_versionLabelIsNotCorrectOrVersionLabelUnknown = other_value.versionLabelIsNotCorrectOrVersionLabelUnknown();
+  else field_versionLabelIsNotCorrectOrVersionLabelUnknown.clean_up();
+  if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+  else field_reserved2.clean_up();
+  if (other_value.anyOtherError().is_bound()) field_anyOtherError = other_value.anyOtherError();
+  else field_anyOtherError.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+}
+return *this;
+}
+
+boolean ExtendedDeleteVersionRes__errorCodesType::operator==(const ExtendedDeleteVersionRes__errorCodesType& other_value) const
+{
+return field_reserved0==other_value.field_reserved0
+  && field_versionLabelIsNotCorrectOrVersionLabelUnknown==other_value.field_versionLabelIsNotCorrectOrVersionLabelUnknown
+  && field_reserved2==other_value.field_reserved2
+  && field_anyOtherError==other_value.field_anyOtherError
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7;
+}
+
+boolean ExtendedDeleteVersionRes__errorCodesType::is_bound() const
+{
+return (field_reserved0.is_bound())
+  || (field_versionLabelIsNotCorrectOrVersionLabelUnknown.is_bound())
+  || (field_reserved2.is_bound())
+  || (field_anyOtherError.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound());
+}
+boolean ExtendedDeleteVersionRes__errorCodesType::is_value() const
+{
+return field_reserved0.is_value()
+  && field_versionLabelIsNotCorrectOrVersionLabelUnknown.is_value()
+  && field_reserved2.is_value()
+  && field_anyOtherError.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value();
+}
+void ExtendedDeleteVersionRes__errorCodesType::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ reserved0 := ");
+field_reserved0.log();
+TTCN_Logger::log_event_str(", versionLabelIsNotCorrectOrVersionLabelUnknown := ");
+field_versionLabelIsNotCorrectOrVersionLabelUnknown.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+field_reserved2.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ExtendedDeleteVersionRes__errorCodesType::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType has 8 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) reserved0().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) versionLabelIsNotCorrectOrVersionLabelUnknown().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "reserved0")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved0().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(), "versionLabelIsNotCorrectOrVersionLabelUnknown")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          versionLabelIsNotCorrectOrVersionLabelUnknown().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType");
+  }
+}
+
+void ExtendedDeleteVersionRes__errorCodesType::set_implicit_omit()
+{
+if (reserved0().is_bound()) reserved0().set_implicit_omit();
+if (versionLabelIsNotCorrectOrVersionLabelUnknown().is_bound()) versionLabelIsNotCorrectOrVersionLabelUnknown().set_implicit_omit();
+if (reserved2().is_bound()) reserved2().set_implicit_omit();
+if (anyOtherError().is_bound()) anyOtherError().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+}
+
+void ExtendedDeleteVersionRes__errorCodesType::encode_text(Text_Buf& text_buf) const
+{
+field_reserved0.encode_text(text_buf);
+field_versionLabelIsNotCorrectOrVersionLabelUnknown.encode_text(text_buf);
+field_reserved2.encode_text(text_buf);
+field_anyOtherError.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+}
+
+void ExtendedDeleteVersionRes__errorCodesType::decode_text(Text_Buf& text_buf)
+{
+field_reserved0.decode_text(text_buf);
+field_versionLabelIsNotCorrectOrVersionLabelUnknown.decode_text(text_buf);
+field_reserved2.decode_text(text_buf);
+field_anyOtherError.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+}
+
+void ExtendedDeleteVersionRes__errorCodesType::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ExtendedDeleteVersionRes__errorCodesType::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ExtendedDeleteVersionRes__errorCodesType::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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved0.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_versionLabelIsNotCorrectOrVersionLabelUnknown.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved2.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_anyOtherError.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(BOOLEAN_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, BOOLEAN_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(BOOLEAN_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ExtendedDeleteVersionRes__errorCodesType::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, BOOLEAN_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, BOOLEAN_descr_.raw);
+  encoded_length += field_reserved0.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_versionLabelIsNotCorrectOrVersionLabelUnknown.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved2.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_anyOtherError.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved4.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved5.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved6.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved7.RAW_encode(BOOLEAN_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct ExtendedDeleteVersionRes__errorCodesType_template::single_value_struct {
+BOOLEAN_template field_reserved0;
+BOOLEAN_template field_versionLabelIsNotCorrectOrVersionLabelUnknown;
+BOOLEAN_template field_reserved2;
+BOOLEAN_template field_anyOtherError;
+BOOLEAN_template field_reserved4;
+BOOLEAN_template field_reserved5;
+BOOLEAN_template field_reserved6;
+BOOLEAN_template field_reserved7;
+};
+
+void ExtendedDeleteVersionRes__errorCodesType_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_reserved0 = ANY_VALUE;
+single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown = ANY_VALUE;
+single_value->field_reserved2 = ANY_VALUE;
+single_value->field_anyOtherError = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+}
+}
+}
+
+void ExtendedDeleteVersionRes__errorCodesType_template::copy_value(const ExtendedDeleteVersionRes__errorCodesType& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.reserved0().is_bound()) {
+  single_value->field_reserved0 = other_value.reserved0();
+} else {
+  single_value->field_reserved0.clean_up();
+}
+if (other_value.versionLabelIsNotCorrectOrVersionLabelUnknown().is_bound()) {
+  single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown = other_value.versionLabelIsNotCorrectOrVersionLabelUnknown();
+} else {
+  single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown.clean_up();
+}
+if (other_value.reserved2().is_bound()) {
+  single_value->field_reserved2 = other_value.reserved2();
+} else {
+  single_value->field_reserved2.clean_up();
+}
+if (other_value.anyOtherError().is_bound()) {
+  single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+  single_value->field_anyOtherError.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ExtendedDeleteVersionRes__errorCodesType_template::copy_template(const ExtendedDeleteVersionRes__errorCodesType_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.reserved0().get_selection()) {
+single_value->field_reserved0 = other_value.reserved0();
+} else {
+single_value->field_reserved0.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.versionLabelIsNotCorrectOrVersionLabelUnknown().get_selection()) {
+single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown = other_value.versionLabelIsNotCorrectOrVersionLabelUnknown();
+} else {
+single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved2().get_selection()) {
+single_value->field_reserved2 = other_value.reserved2();
+} else {
+single_value->field_reserved2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.anyOtherError().get_selection()) {
+single_value->field_anyOtherError = other_value.anyOtherError();
+} else {
+single_value->field_anyOtherError.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ExtendedDeleteVersionRes__errorCodesType_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType.");
+break;
+}
+set_selection(other_value);
+}
+
+ExtendedDeleteVersionRes__errorCodesType_template::ExtendedDeleteVersionRes__errorCodesType_template()
+{
+}
+
+ExtendedDeleteVersionRes__errorCodesType_template::ExtendedDeleteVersionRes__errorCodesType_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ExtendedDeleteVersionRes__errorCodesType_template::ExtendedDeleteVersionRes__errorCodesType_template(const ExtendedDeleteVersionRes__errorCodesType& other_value)
+{
+copy_value(other_value);
+}
+
+ExtendedDeleteVersionRes__errorCodesType_template::ExtendedDeleteVersionRes__errorCodesType_template(const OPTIONAL<ExtendedDeleteVersionRes__errorCodesType>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExtendedDeleteVersionRes__errorCodesType&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType from an unbound optional field.");
+}
+}
+
+ExtendedDeleteVersionRes__errorCodesType_template::ExtendedDeleteVersionRes__errorCodesType_template(const ExtendedDeleteVersionRes__errorCodesType_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ExtendedDeleteVersionRes__errorCodesType_template::~ExtendedDeleteVersionRes__errorCodesType_template()
+{
+clean_up();
+}
+
+ExtendedDeleteVersionRes__errorCodesType_template& ExtendedDeleteVersionRes__errorCodesType_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ExtendedDeleteVersionRes__errorCodesType_template& ExtendedDeleteVersionRes__errorCodesType_template::operator=(const ExtendedDeleteVersionRes__errorCodesType& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ExtendedDeleteVersionRes__errorCodesType_template& ExtendedDeleteVersionRes__errorCodesType_template::operator=(const OPTIONAL<ExtendedDeleteVersionRes__errorCodesType>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExtendedDeleteVersionRes__errorCodesType&)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 @IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType.");
+}
+return *this;
+}
+
+ExtendedDeleteVersionRes__errorCodesType_template& ExtendedDeleteVersionRes__errorCodesType_template::operator=(const ExtendedDeleteVersionRes__errorCodesType_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ExtendedDeleteVersionRes__errorCodesType_template::match(const ExtendedDeleteVersionRes__errorCodesType& 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.reserved0().is_bound()) return FALSE;
+if(!single_value->field_reserved0.match(other_value.reserved0(), legacy))return FALSE;
+if(!other_value.versionLabelIsNotCorrectOrVersionLabelUnknown().is_bound()) return FALSE;
+if(!single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown.match(other_value.versionLabelIsNotCorrectOrVersionLabelUnknown(), legacy))return FALSE;
+if(!other_value.reserved2().is_bound()) return FALSE;
+if(!single_value->field_reserved2.match(other_value.reserved2(), legacy))return FALSE;
+if(!other_value.anyOtherError().is_bound()) return FALSE;
+if(!single_value->field_anyOtherError.match(other_value.anyOtherError(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType.");
+}
+return FALSE;
+}
+
+boolean ExtendedDeleteVersionRes__errorCodesType_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_reserved0.is_bound()
+
+ ||single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown.is_bound()
+
+ ||single_value->field_reserved2.is_bound()
+
+ ||single_value->field_anyOtherError.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+;
+}
+
+boolean ExtendedDeleteVersionRes__errorCodesType_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_reserved0.is_value()
+ &&single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown.is_value()
+ &&single_value->field_reserved2.is_value()
+ &&single_value->field_anyOtherError.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value();
+}
+
+void ExtendedDeleteVersionRes__errorCodesType_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ExtendedDeleteVersionRes__errorCodesType ExtendedDeleteVersionRes__errorCodesType_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 @IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType.");
+ExtendedDeleteVersionRes__errorCodesType ret_val;
+if (single_value->field_reserved0.is_bound()) {
+ret_val.reserved0() = single_value->field_reserved0.valueof();
+}
+if (single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown.is_bound()) {
+ret_val.versionLabelIsNotCorrectOrVersionLabelUnknown() = single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown.valueof();
+}
+if (single_value->field_reserved2.is_bound()) {
+ret_val.reserved2() = single_value->field_reserved2.valueof();
+}
+if (single_value->field_anyOtherError.is_bound()) {
+ret_val.anyOtherError() = single_value->field_anyOtherError.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+return ret_val;
+}
+
+void ExtendedDeleteVersionRes__errorCodesType_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ExtendedDeleteVersionRes__errorCodesType_template[list_length];
+}
+
+ExtendedDeleteVersionRes__errorCodesType_template& ExtendedDeleteVersionRes__errorCodesType_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType.");
+return value_list.list_value[list_index];
+}
+
+BOOLEAN_template& ExtendedDeleteVersionRes__errorCodesType_template::reserved0()
+{
+set_specific();
+return single_value->field_reserved0;
+}
+
+const BOOLEAN_template& ExtendedDeleteVersionRes__errorCodesType_template::reserved0() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved0 of a non-specific template of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType.");
+return single_value->field_reserved0;
+}
+
+BOOLEAN_template& ExtendedDeleteVersionRes__errorCodesType_template::versionLabelIsNotCorrectOrVersionLabelUnknown()
+{
+set_specific();
+return single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown;
+}
+
+const BOOLEAN_template& ExtendedDeleteVersionRes__errorCodesType_template::versionLabelIsNotCorrectOrVersionLabelUnknown() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field versionLabelIsNotCorrectOrVersionLabelUnknown of a non-specific template of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType.");
+return single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown;
+}
+
+BOOLEAN_template& ExtendedDeleteVersionRes__errorCodesType_template::reserved2()
+{
+set_specific();
+return single_value->field_reserved2;
+}
+
+const BOOLEAN_template& ExtendedDeleteVersionRes__errorCodesType_template::reserved2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved2 of a non-specific template of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType.");
+return single_value->field_reserved2;
+}
+
+BOOLEAN_template& ExtendedDeleteVersionRes__errorCodesType_template::anyOtherError()
+{
+set_specific();
+return single_value->field_anyOtherError;
+}
+
+const BOOLEAN_template& ExtendedDeleteVersionRes__errorCodesType_template::anyOtherError() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field anyOtherError of a non-specific template of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType.");
+return single_value->field_anyOtherError;
+}
+
+BOOLEAN_template& ExtendedDeleteVersionRes__errorCodesType_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const BOOLEAN_template& ExtendedDeleteVersionRes__errorCodesType_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType.");
+return single_value->field_reserved4;
+}
+
+BOOLEAN_template& ExtendedDeleteVersionRes__errorCodesType_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const BOOLEAN_template& ExtendedDeleteVersionRes__errorCodesType_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType.");
+return single_value->field_reserved5;
+}
+
+BOOLEAN_template& ExtendedDeleteVersionRes__errorCodesType_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const BOOLEAN_template& ExtendedDeleteVersionRes__errorCodesType_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType.");
+return single_value->field_reserved6;
+}
+
+BOOLEAN_template& ExtendedDeleteVersionRes__errorCodesType_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const BOOLEAN_template& ExtendedDeleteVersionRes__errorCodesType_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType.");
+return single_value->field_reserved7;
+}
+
+int ExtendedDeleteVersionRes__errorCodesType_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType 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 @IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType.");
+  }
+  return 0;
+}
+
+void ExtendedDeleteVersionRes__errorCodesType_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ reserved0 := ");
+single_value->field_reserved0.log();
+TTCN_Logger::log_event_str(", versionLabelIsNotCorrectOrVersionLabelUnknown := ");
+single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log();
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ExtendedDeleteVersionRes__errorCodesType_template::log_match(const ExtendedDeleteVersionRes__errorCodesType& 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_reserved0.match(match_value.reserved0(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved0");
+single_value->field_reserved0.log_match(match_value.reserved0(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown.match(match_value.versionLabelIsNotCorrectOrVersionLabelUnknown(), legacy)){
+TTCN_Logger::log_logmatch_info(".versionLabelIsNotCorrectOrVersionLabelUnknown");
+single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown.log_match(match_value.versionLabelIsNotCorrectOrVersionLabelUnknown(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved2.match(match_value.reserved2(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved2");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_anyOtherError.match(match_value.anyOtherError(), legacy)){
+TTCN_Logger::log_logmatch_info(".anyOtherError");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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("{ reserved0 := ");
+single_value->field_reserved0.log_match(match_value.reserved0(), legacy);
+TTCN_Logger::log_event_str(", versionLabelIsNotCorrectOrVersionLabelUnknown := ");
+single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown.log_match(match_value.versionLabelIsNotCorrectOrVersionLabelUnknown(), legacy);
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::log_event_str(", anyOtherError := ");
+single_value->field_anyOtherError.log_match(match_value.anyOtherError(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), 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 ExtendedDeleteVersionRes__errorCodesType_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_reserved0.encode_text(text_buf);
+single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown.encode_text(text_buf);
+single_value->field_reserved2.encode_text(text_buf);
+single_value->field_anyOtherError.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.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 @IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType.");
+}
+}
+
+void ExtendedDeleteVersionRes__errorCodesType_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_reserved0.decode_text(text_buf);
+single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown.decode_text(text_buf);
+single_value->field_reserved2.decode_text(text_buf);
+single_value->field_anyOtherError.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.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 ExtendedDeleteVersionRes__errorCodesType_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 @IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType.");
+}
+}
+
+void ExtendedDeleteVersionRes__errorCodesType_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: {
+    ExtendedDeleteVersionRes__errorCodesType_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType has 8 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) reserved0().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) versionLabelIsNotCorrectOrVersionLabelUnknown().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) anyOtherError().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(7));
+    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(), "reserved0")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved0().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(), "versionLabelIsNotCorrectOrVersionLabelUnknown")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          versionLabelIsNotCorrectOrVersionLabelUnknown().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "anyOtherError")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          anyOtherError().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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 @IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ExtendedDeleteVersionRes__errorCodesType_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_reserved0.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType");
+single_value->field_versionLabelIsNotCorrectOrVersionLabelUnknown.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType");
+single_value->field_reserved2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType");
+single_value->field_anyOtherError.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType");
+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 : "@IsobusVTMessageTypes.ExtendedDeleteVersionRes_errorCodesType");
+}
+
+boolean ExtendedDeleteVersionRes__errorCodesType_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ExtendedDeleteVersionRes__errorCodesType_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ExtendedDeleteVersionRes::ExtendedDeleteVersionRes()
+{
+}
+
+ExtendedDeleteVersionRes::ExtendedDeleteVersionRes(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_reserved2,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const ExtendedDeleteVersionRes__errorCodesType& par_errorCodes,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_reserved2(par_reserved2),
+  field_reserved3(par_reserved3),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_errorCodes(par_errorCodes),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+ExtendedDeleteVersionRes::ExtendedDeleteVersionRes(const ExtendedDeleteVersionRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+else field_reserved2.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+else field_errorCodes.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void ExtendedDeleteVersionRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_reserved2.clean_up();
+field_reserved3.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_errorCodes.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ExtendedDeleteVersionRes::get_descriptor() const { return &ExtendedDeleteVersionRes_descr_; }
+ExtendedDeleteVersionRes& ExtendedDeleteVersionRes::operator=(const ExtendedDeleteVersionRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+  else field_reserved2.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.errorCodes().is_bound()) field_errorCodes = other_value.errorCodes();
+  else field_errorCodes.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean ExtendedDeleteVersionRes::operator==(const ExtendedDeleteVersionRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_reserved2==other_value.field_reserved2
+  && field_reserved3==other_value.field_reserved3
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_errorCodes==other_value.field_errorCodes
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean ExtendedDeleteVersionRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_reserved2.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_errorCodes.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean ExtendedDeleteVersionRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_reserved2.is_value()
+  && field_reserved3.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_errorCodes.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void ExtendedDeleteVersionRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ExtendedDeleteVersionRes::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ExtendedDeleteVersionRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ExtendedDeleteVersionRes");
+  }
+}
+
+void ExtendedDeleteVersionRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (reserved2().is_bound()) reserved2().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (errorCodes().is_bound()) errorCodes().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void ExtendedDeleteVersionRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_reserved2.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_errorCodes.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void ExtendedDeleteVersionRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_reserved2.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_errorCodes.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void ExtendedDeleteVersionRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ExtendedDeleteVersionRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ExtendedDeleteVersionRes::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, ExtendedDeleteVersionRes_reserved2_descr_.raw->forceomit);
+  decoded_field_length = field_reserved2.RAW_decode(ExtendedDeleteVersionRes_reserved2_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, ExtendedDeleteVersionRes_reserved3_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(ExtendedDeleteVersionRes_reserved3_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, ExtendedDeleteVersionRes_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(ExtendedDeleteVersionRes_reserved4_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, ExtendedDeleteVersionRes_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(ExtendedDeleteVersionRes_reserved5_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, ExtendedDeleteVersionRes__errorCodesType_descr_.raw->forceomit);
+  decoded_field_length = field_errorCodes.RAW_decode(ExtendedDeleteVersionRes__errorCodesType_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, ExtendedDeleteVersionRes_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(ExtendedDeleteVersionRes_reserved7_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, ExtendedDeleteVersionRes_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(ExtendedDeleteVersionRes_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ExtendedDeleteVersionRes::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ExtendedDeleteVersionRes_reserved2_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ExtendedDeleteVersionRes_reserved3_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, ExtendedDeleteVersionRes_reserved4_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, ExtendedDeleteVersionRes_reserved5_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, ExtendedDeleteVersionRes__errorCodesType_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, ExtendedDeleteVersionRes_reserved7_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, ExtendedDeleteVersionRes_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved2.RAW_encode(ExtendedDeleteVersionRes_reserved2_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved3.RAW_encode(ExtendedDeleteVersionRes_reserved3_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved4.RAW_encode(ExtendedDeleteVersionRes_reserved4_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved5.RAW_encode(ExtendedDeleteVersionRes_reserved5_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_errorCodes.RAW_encode(ExtendedDeleteVersionRes__errorCodesType_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved7.RAW_encode(ExtendedDeleteVersionRes_reserved7_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved8.RAW_encode(ExtendedDeleteVersionRes_reserved8_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct ExtendedDeleteVersionRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+OCTETSTRING_template field_reserved2;
+OCTETSTRING_template field_reserved3;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+ExtendedDeleteVersionRes__errorCodesType_template field_errorCodes;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void ExtendedDeleteVersionRes_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_vtfunction = ANY_VALUE;
+single_value->field_reserved2 = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_errorCodes = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void ExtendedDeleteVersionRes_template::copy_value(const ExtendedDeleteVersionRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.reserved2().is_bound()) {
+  single_value->field_reserved2 = other_value.reserved2();
+} else {
+  single_value->field_reserved2.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.errorCodes().is_bound()) {
+  single_value->field_errorCodes = other_value.errorCodes();
+} else {
+  single_value->field_errorCodes.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ExtendedDeleteVersionRes_template::copy_template(const ExtendedDeleteVersionRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved2().get_selection()) {
+single_value->field_reserved2 = other_value.reserved2();
+} else {
+single_value->field_reserved2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.errorCodes().get_selection()) {
+single_value->field_errorCodes = other_value.errorCodes();
+} else {
+single_value->field_errorCodes.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ExtendedDeleteVersionRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes.");
+break;
+}
+set_selection(other_value);
+}
+
+ExtendedDeleteVersionRes_template::ExtendedDeleteVersionRes_template()
+{
+}
+
+ExtendedDeleteVersionRes_template::ExtendedDeleteVersionRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ExtendedDeleteVersionRes_template::ExtendedDeleteVersionRes_template(const ExtendedDeleteVersionRes& other_value)
+{
+copy_value(other_value);
+}
+
+ExtendedDeleteVersionRes_template::ExtendedDeleteVersionRes_template(const OPTIONAL<ExtendedDeleteVersionRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExtendedDeleteVersionRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes from an unbound optional field.");
+}
+}
+
+ExtendedDeleteVersionRes_template::ExtendedDeleteVersionRes_template(const ExtendedDeleteVersionRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ExtendedDeleteVersionRes_template::~ExtendedDeleteVersionRes_template()
+{
+clean_up();
+}
+
+ExtendedDeleteVersionRes_template& ExtendedDeleteVersionRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ExtendedDeleteVersionRes_template& ExtendedDeleteVersionRes_template::operator=(const ExtendedDeleteVersionRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ExtendedDeleteVersionRes_template& ExtendedDeleteVersionRes_template::operator=(const OPTIONAL<ExtendedDeleteVersionRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExtendedDeleteVersionRes&)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 @IsobusVTMessageTypes.ExtendedDeleteVersionRes.");
+}
+return *this;
+}
+
+ExtendedDeleteVersionRes_template& ExtendedDeleteVersionRes_template::operator=(const ExtendedDeleteVersionRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ExtendedDeleteVersionRes_template::match(const ExtendedDeleteVersionRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.reserved2().is_bound()) return FALSE;
+if(!single_value->field_reserved2.match(other_value.reserved2(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.errorCodes().is_bound()) return FALSE;
+if(!single_value->field_errorCodes.match(other_value.errorCodes(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes.");
+}
+return FALSE;
+}
+
+boolean ExtendedDeleteVersionRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_reserved2.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_errorCodes.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean ExtendedDeleteVersionRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_reserved2.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_errorCodes.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void ExtendedDeleteVersionRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ExtendedDeleteVersionRes ExtendedDeleteVersionRes_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 @IsobusVTMessageTypes.ExtendedDeleteVersionRes.");
+ExtendedDeleteVersionRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_reserved2.is_bound()) {
+ret_val.reserved2() = single_value->field_reserved2.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_errorCodes.is_bound()) {
+ret_val.errorCodes() = single_value->field_errorCodes.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void ExtendedDeleteVersionRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ExtendedDeleteVersionRes_template[list_length];
+}
+
+ExtendedDeleteVersionRes_template& ExtendedDeleteVersionRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ExtendedDeleteVersionRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ExtendedDeleteVersionRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes.");
+return single_value->field_vtfunction;
+}
+
+OCTETSTRING_template& ExtendedDeleteVersionRes_template::reserved2()
+{
+set_specific();
+return single_value->field_reserved2;
+}
+
+const OCTETSTRING_template& ExtendedDeleteVersionRes_template::reserved2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved2 of a non-specific template of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes.");
+return single_value->field_reserved2;
+}
+
+OCTETSTRING_template& ExtendedDeleteVersionRes_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const OCTETSTRING_template& ExtendedDeleteVersionRes_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes.");
+return single_value->field_reserved3;
+}
+
+OCTETSTRING_template& ExtendedDeleteVersionRes_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& ExtendedDeleteVersionRes_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& ExtendedDeleteVersionRes_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& ExtendedDeleteVersionRes_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes.");
+return single_value->field_reserved5;
+}
+
+ExtendedDeleteVersionRes__errorCodesType_template& ExtendedDeleteVersionRes_template::errorCodes()
+{
+set_specific();
+return single_value->field_errorCodes;
+}
+
+const ExtendedDeleteVersionRes__errorCodesType_template& ExtendedDeleteVersionRes_template::errorCodes() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field errorCodes of a non-specific template of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes.");
+return single_value->field_errorCodes;
+}
+
+OCTETSTRING_template& ExtendedDeleteVersionRes_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& ExtendedDeleteVersionRes_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& ExtendedDeleteVersionRes_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& ExtendedDeleteVersionRes_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes.");
+return single_value->field_reserved8;
+}
+
+int ExtendedDeleteVersionRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes 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 @IsobusVTMessageTypes.ExtendedDeleteVersionRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes.");
+  }
+  return 0;
+}
+
+void ExtendedDeleteVersionRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ExtendedDeleteVersionRes_template::log_match(const ExtendedDeleteVersionRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved2.match(match_value.reserved2(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved2");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_errorCodes.match(match_value.errorCodes(), legacy)){
+TTCN_Logger::log_logmatch_info(".errorCodes");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", errorCodes := ");
+single_value->field_errorCodes.log_match(match_value.errorCodes(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 ExtendedDeleteVersionRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_reserved2.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_errorCodes.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.ExtendedDeleteVersionRes.");
+}
+}
+
+void ExtendedDeleteVersionRes_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_vtfunction.decode_text(text_buf);
+single_value->field_reserved2.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_errorCodes.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 ExtendedDeleteVersionRes_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 @IsobusVTMessageTypes.ExtendedDeleteVersionRes.");
+}
+}
+
+void ExtendedDeleteVersionRes_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: {
+    ExtendedDeleteVersionRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.ExtendedDeleteVersionRes has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) errorCodes().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "errorCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          errorCodes().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.ExtendedDeleteVersionRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ExtendedDeleteVersionRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ExtendedDeleteVersionRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedDeleteVersionRes");
+single_value->field_reserved2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedDeleteVersionRes");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedDeleteVersionRes");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedDeleteVersionRes");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedDeleteVersionRes");
+single_value->field_errorCodes.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedDeleteVersionRes");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedDeleteVersionRes");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedDeleteVersionRes");
+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 : "@IsobusVTMessageTypes.ExtendedDeleteVersionRes");
+}
+
+boolean ExtendedDeleteVersionRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ExtendedDeleteVersionRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ExtendedDeleteVersionReq::ExtendedDeleteVersionReq()
+{
+}
+
+ExtendedDeleteVersionReq::ExtendedDeleteVersionReq(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_versionLabel)
+  :   field_vtfunction(par_vtfunction),
+  field_versionLabel(par_versionLabel)
+{
+}
+
+ExtendedDeleteVersionReq::ExtendedDeleteVersionReq(const ExtendedDeleteVersionReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.ExtendedDeleteVersionReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.versionLabel().is_bound()) field_versionLabel = other_value.versionLabel();
+else field_versionLabel.clean_up();
+}
+
+void ExtendedDeleteVersionReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_versionLabel.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ExtendedDeleteVersionReq::get_descriptor() const { return &ExtendedDeleteVersionReq_descr_; }
+ExtendedDeleteVersionReq& ExtendedDeleteVersionReq::operator=(const ExtendedDeleteVersionReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.ExtendedDeleteVersionReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.versionLabel().is_bound()) field_versionLabel = other_value.versionLabel();
+  else field_versionLabel.clean_up();
+}
+return *this;
+}
+
+boolean ExtendedDeleteVersionReq::operator==(const ExtendedDeleteVersionReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_versionLabel==other_value.field_versionLabel;
+}
+
+boolean ExtendedDeleteVersionReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_versionLabel.is_bound());
+}
+boolean ExtendedDeleteVersionReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_versionLabel.is_value();
+}
+void ExtendedDeleteVersionReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", versionLabel := ");
+field_versionLabel.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ExtendedDeleteVersionReq::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 @IsobusVTMessageTypes.ExtendedDeleteVersionReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) versionLabel().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "versionLabel")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          versionLabel().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 @IsobusVTMessageTypes.ExtendedDeleteVersionReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.ExtendedDeleteVersionReq");
+  }
+}
+
+void ExtendedDeleteVersionReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (versionLabel().is_bound()) versionLabel().set_implicit_omit();
+}
+
+void ExtendedDeleteVersionReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_versionLabel.encode_text(text_buf);
+}
+
+void ExtendedDeleteVersionReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_versionLabel.decode_text(text_buf);
+}
+
+void ExtendedDeleteVersionReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ExtendedDeleteVersionReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ExtendedDeleteVersionReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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::OCT32_descr_.raw->forceomit);
+  decoded_field_length = field_versionLabel.RAW_decode(General__Types::OCT32_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 ExtendedDeleteVersionReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, General__Types::OCT32_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_versionLabel.RAW_encode(General__Types::OCT32_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct ExtendedDeleteVersionReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+OCTETSTRING_template field_versionLabel;
+};
+
+void ExtendedDeleteVersionReq_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_vtfunction = ANY_VALUE;
+single_value->field_versionLabel = ANY_VALUE;
+}
+}
+}
+
+void ExtendedDeleteVersionReq_template::copy_value(const ExtendedDeleteVersionReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.versionLabel().is_bound()) {
+  single_value->field_versionLabel = other_value.versionLabel();
+} else {
+  single_value->field_versionLabel.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ExtendedDeleteVersionReq_template::copy_template(const ExtendedDeleteVersionReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.versionLabel().get_selection()) {
+single_value->field_versionLabel = other_value.versionLabel();
+} else {
+single_value->field_versionLabel.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ExtendedDeleteVersionReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExtendedDeleteVersionReq.");
+break;
+}
+set_selection(other_value);
+}
+
+ExtendedDeleteVersionReq_template::ExtendedDeleteVersionReq_template()
+{
+}
+
+ExtendedDeleteVersionReq_template::ExtendedDeleteVersionReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ExtendedDeleteVersionReq_template::ExtendedDeleteVersionReq_template(const ExtendedDeleteVersionReq& other_value)
+{
+copy_value(other_value);
+}
+
+ExtendedDeleteVersionReq_template::ExtendedDeleteVersionReq_template(const OPTIONAL<ExtendedDeleteVersionReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExtendedDeleteVersionReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.ExtendedDeleteVersionReq from an unbound optional field.");
+}
+}
+
+ExtendedDeleteVersionReq_template::ExtendedDeleteVersionReq_template(const ExtendedDeleteVersionReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ExtendedDeleteVersionReq_template::~ExtendedDeleteVersionReq_template()
+{
+clean_up();
+}
+
+ExtendedDeleteVersionReq_template& ExtendedDeleteVersionReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ExtendedDeleteVersionReq_template& ExtendedDeleteVersionReq_template::operator=(const ExtendedDeleteVersionReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ExtendedDeleteVersionReq_template& ExtendedDeleteVersionReq_template::operator=(const OPTIONAL<ExtendedDeleteVersionReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExtendedDeleteVersionReq&)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 @IsobusVTMessageTypes.ExtendedDeleteVersionReq.");
+}
+return *this;
+}
+
+ExtendedDeleteVersionReq_template& ExtendedDeleteVersionReq_template::operator=(const ExtendedDeleteVersionReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ExtendedDeleteVersionReq_template::match(const ExtendedDeleteVersionReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.versionLabel().is_bound()) return FALSE;
+if(!single_value->field_versionLabel.match(other_value.versionLabel(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExtendedDeleteVersionReq.");
+}
+return FALSE;
+}
+
+boolean ExtendedDeleteVersionReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_versionLabel.is_bound()
+;
+}
+
+boolean ExtendedDeleteVersionReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_versionLabel.is_value();
+}
+
+void ExtendedDeleteVersionReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ExtendedDeleteVersionReq ExtendedDeleteVersionReq_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 @IsobusVTMessageTypes.ExtendedDeleteVersionReq.");
+ExtendedDeleteVersionReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_versionLabel.is_bound()) {
+ret_val.versionLabel() = single_value->field_versionLabel.valueof();
+}
+return ret_val;
+}
+
+void ExtendedDeleteVersionReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.ExtendedDeleteVersionReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ExtendedDeleteVersionReq_template[list_length];
+}
+
+ExtendedDeleteVersionReq_template& ExtendedDeleteVersionReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.ExtendedDeleteVersionReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.ExtendedDeleteVersionReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& ExtendedDeleteVersionReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& ExtendedDeleteVersionReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.ExtendedDeleteVersionReq.");
+return single_value->field_vtfunction;
+}
+
+OCTETSTRING_template& ExtendedDeleteVersionReq_template::versionLabel()
+{
+set_specific();
+return single_value->field_versionLabel;
+}
+
+const OCTETSTRING_template& ExtendedDeleteVersionReq_template::versionLabel() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field versionLabel of a non-specific template of type @IsobusVTMessageTypes.ExtendedDeleteVersionReq.");
+return single_value->field_versionLabel;
+}
+
+int ExtendedDeleteVersionReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedDeleteVersionReq 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 @IsobusVTMessageTypes.ExtendedDeleteVersionReq 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 @IsobusVTMessageTypes.ExtendedDeleteVersionReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedDeleteVersionReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedDeleteVersionReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.ExtendedDeleteVersionReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.ExtendedDeleteVersionReq.");
+  }
+  return 0;
+}
+
+void ExtendedDeleteVersionReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", versionLabel := ");
+single_value->field_versionLabel.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ExtendedDeleteVersionReq_template::log_match(const ExtendedDeleteVersionReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_versionLabel.match(match_value.versionLabel(), legacy)){
+TTCN_Logger::log_logmatch_info(".versionLabel");
+single_value->field_versionLabel.log_match(match_value.versionLabel(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", versionLabel := ");
+single_value->field_versionLabel.log_match(match_value.versionLabel(), 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 ExtendedDeleteVersionReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_versionLabel.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 @IsobusVTMessageTypes.ExtendedDeleteVersionReq.");
+}
+}
+
+void ExtendedDeleteVersionReq_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_vtfunction.decode_text(text_buf);
+single_value->field_versionLabel.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 ExtendedDeleteVersionReq_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 @IsobusVTMessageTypes.ExtendedDeleteVersionReq.");
+}
+}
+
+void ExtendedDeleteVersionReq_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: {
+    ExtendedDeleteVersionReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.ExtendedDeleteVersionReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) versionLabel().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "versionLabel")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          versionLabel().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 @IsobusVTMessageTypes.ExtendedDeleteVersionReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.ExtendedDeleteVersionReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ExtendedDeleteVersionReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedDeleteVersionReq");
+single_value->field_versionLabel.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ExtendedDeleteVersionReq");
+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 : "@IsobusVTMessageTypes.ExtendedDeleteVersionReq");
+}
+
+boolean ExtendedDeleteVersionReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ExtendedDeleteVersionReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+GetVersionsReq::GetVersionsReq()
+{
+}
+
+GetVersionsReq::GetVersionsReq(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_reserved2,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_reserved2(par_reserved2),
+  field_reserved3(par_reserved3),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+GetVersionsReq::GetVersionsReq(const GetVersionsReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.GetVersionsReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+else field_reserved2.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void GetVersionsReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_reserved2.clean_up();
+field_reserved3.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* GetVersionsReq::get_descriptor() const { return &GetVersionsReq_descr_; }
+GetVersionsReq& GetVersionsReq::operator=(const GetVersionsReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.GetVersionsReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.reserved2().is_bound()) field_reserved2 = other_value.reserved2();
+  else field_reserved2.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean GetVersionsReq::operator==(const GetVersionsReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_reserved2==other_value.field_reserved2
+  && field_reserved3==other_value.field_reserved3
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean GetVersionsReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_reserved2.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean GetVersionsReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_reserved2.is_value()
+  && field_reserved3.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void GetVersionsReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void GetVersionsReq::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.GetVersionsReq has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.GetVersionsReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.GetVersionsReq");
+  }
+}
+
+void GetVersionsReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (reserved2().is_bound()) reserved2().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void GetVersionsReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_reserved2.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void GetVersionsReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_reserved2.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void GetVersionsReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void GetVersionsReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int GetVersionsReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, GetVersionsReq_reserved2_descr_.raw->forceomit);
+  decoded_field_length = field_reserved2.RAW_decode(GetVersionsReq_reserved2_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, GetVersionsReq_reserved3_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(GetVersionsReq_reserved3_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, GetVersionsReq_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(GetVersionsReq_reserved4_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, GetVersionsReq_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(GetVersionsReq_reserved5_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, GetVersionsReq_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(GetVersionsReq_reserved6_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, GetVersionsReq_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(GetVersionsReq_reserved7_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, GetVersionsReq_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(GetVersionsReq_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int GetVersionsReq::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, GetVersionsReq_reserved2_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, GetVersionsReq_reserved3_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, GetVersionsReq_reserved4_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, GetVersionsReq_reserved5_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, GetVersionsReq_reserved6_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, GetVersionsReq_reserved7_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, GetVersionsReq_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved2.RAW_encode(GetVersionsReq_reserved2_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved3.RAW_encode(GetVersionsReq_reserved3_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved4.RAW_encode(GetVersionsReq_reserved4_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved5.RAW_encode(GetVersionsReq_reserved5_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved6.RAW_encode(GetVersionsReq_reserved6_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved7.RAW_encode(GetVersionsReq_reserved7_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved8.RAW_encode(GetVersionsReq_reserved8_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct GetVersionsReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+OCTETSTRING_template field_reserved2;
+OCTETSTRING_template field_reserved3;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void GetVersionsReq_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_vtfunction = ANY_VALUE;
+single_value->field_reserved2 = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void GetVersionsReq_template::copy_value(const GetVersionsReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.reserved2().is_bound()) {
+  single_value->field_reserved2 = other_value.reserved2();
+} else {
+  single_value->field_reserved2.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void GetVersionsReq_template::copy_template(const GetVersionsReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved2().get_selection()) {
+single_value->field_reserved2 = other_value.reserved2();
+} else {
+single_value->field_reserved2.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new GetVersionsReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetVersionsReq.");
+break;
+}
+set_selection(other_value);
+}
+
+GetVersionsReq_template::GetVersionsReq_template()
+{
+}
+
+GetVersionsReq_template::GetVersionsReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+GetVersionsReq_template::GetVersionsReq_template(const GetVersionsReq& other_value)
+{
+copy_value(other_value);
+}
+
+GetVersionsReq_template::GetVersionsReq_template(const OPTIONAL<GetVersionsReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const GetVersionsReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.GetVersionsReq from an unbound optional field.");
+}
+}
+
+GetVersionsReq_template::GetVersionsReq_template(const GetVersionsReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+GetVersionsReq_template::~GetVersionsReq_template()
+{
+clean_up();
+}
+
+GetVersionsReq_template& GetVersionsReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+GetVersionsReq_template& GetVersionsReq_template::operator=(const GetVersionsReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+GetVersionsReq_template& GetVersionsReq_template::operator=(const OPTIONAL<GetVersionsReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const GetVersionsReq&)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 @IsobusVTMessageTypes.GetVersionsReq.");
+}
+return *this;
+}
+
+GetVersionsReq_template& GetVersionsReq_template::operator=(const GetVersionsReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean GetVersionsReq_template::match(const GetVersionsReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.reserved2().is_bound()) return FALSE;
+if(!single_value->field_reserved2.match(other_value.reserved2(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetVersionsReq.");
+}
+return FALSE;
+}
+
+boolean GetVersionsReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_reserved2.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean GetVersionsReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_reserved2.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void GetVersionsReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+GetVersionsReq GetVersionsReq_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 @IsobusVTMessageTypes.GetVersionsReq.");
+GetVersionsReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_reserved2.is_bound()) {
+ret_val.reserved2() = single_value->field_reserved2.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void GetVersionsReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.GetVersionsReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new GetVersionsReq_template[list_length];
+}
+
+GetVersionsReq_template& GetVersionsReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.GetVersionsReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.GetVersionsReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& GetVersionsReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& GetVersionsReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.GetVersionsReq.");
+return single_value->field_vtfunction;
+}
+
+OCTETSTRING_template& GetVersionsReq_template::reserved2()
+{
+set_specific();
+return single_value->field_reserved2;
+}
+
+const OCTETSTRING_template& GetVersionsReq_template::reserved2() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved2 of a non-specific template of type @IsobusVTMessageTypes.GetVersionsReq.");
+return single_value->field_reserved2;
+}
+
+OCTETSTRING_template& GetVersionsReq_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const OCTETSTRING_template& GetVersionsReq_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.GetVersionsReq.");
+return single_value->field_reserved3;
+}
+
+OCTETSTRING_template& GetVersionsReq_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& GetVersionsReq_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.GetVersionsReq.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& GetVersionsReq_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& GetVersionsReq_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.GetVersionsReq.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& GetVersionsReq_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& GetVersionsReq_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.GetVersionsReq.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& GetVersionsReq_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& GetVersionsReq_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.GetVersionsReq.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& GetVersionsReq_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& GetVersionsReq_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.GetVersionsReq.");
+return single_value->field_reserved8;
+}
+
+int GetVersionsReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetVersionsReq which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetVersionsReq 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 @IsobusVTMessageTypes.GetVersionsReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetVersionsReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetVersionsReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetVersionsReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetVersionsReq.");
+  }
+  return 0;
+}
+
+void GetVersionsReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void GetVersionsReq_template::log_match(const GetVersionsReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved2.match(match_value.reserved2(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved2");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", reserved2 := ");
+single_value->field_reserved2.log_match(match_value.reserved2(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 GetVersionsReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_reserved2.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.GetVersionsReq.");
+}
+}
+
+void GetVersionsReq_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_vtfunction.decode_text(text_buf);
+single_value->field_reserved2.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 GetVersionsReq_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 @IsobusVTMessageTypes.GetVersionsReq.");
+}
+}
+
+void GetVersionsReq_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: {
+    GetVersionsReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.GetVersionsReq has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved2().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "reserved2")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved2().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.GetVersionsReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.GetVersionsReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void GetVersionsReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetVersionsReq");
+single_value->field_reserved2.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetVersionsReq");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetVersionsReq");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetVersionsReq");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetVersionsReq");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetVersionsReq");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetVersionsReq");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetVersionsReq");
+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 : "@IsobusVTMessageTypes.GetVersionsReq");
+}
+
+boolean GetVersionsReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean GetVersionsReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+GetVersionsRes::GetVersionsRes()
+{
+}
+
+GetVersionsRes::GetVersionsRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_numberOfVersionStrings,
+    const CHARSTRING& par_versionStrings)
+  :   field_vtfunction(par_vtfunction),
+  field_numberOfVersionStrings(par_numberOfVersionStrings),
+  field_versionStrings(par_versionStrings)
+{
+}
+
+GetVersionsRes::GetVersionsRes(const GetVersionsRes& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.GetVersionsRes.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.numberOfVersionStrings().is_bound()) field_numberOfVersionStrings = other_value.numberOfVersionStrings();
+else field_numberOfVersionStrings.clean_up();
+if (other_value.versionStrings().is_bound()) field_versionStrings = other_value.versionStrings();
+else field_versionStrings.clean_up();
+}
+
+void GetVersionsRes::clean_up()
+{
+field_vtfunction.clean_up();
+field_numberOfVersionStrings.clean_up();
+field_versionStrings.clean_up();
+}
+
+const TTCN_Typedescriptor_t* GetVersionsRes::get_descriptor() const { return &GetVersionsRes_descr_; }
+GetVersionsRes& GetVersionsRes::operator=(const GetVersionsRes& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.GetVersionsRes.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.numberOfVersionStrings().is_bound()) field_numberOfVersionStrings = other_value.numberOfVersionStrings();
+  else field_numberOfVersionStrings.clean_up();
+  if (other_value.versionStrings().is_bound()) field_versionStrings = other_value.versionStrings();
+  else field_versionStrings.clean_up();
+}
+return *this;
+}
+
+boolean GetVersionsRes::operator==(const GetVersionsRes& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_numberOfVersionStrings==other_value.field_numberOfVersionStrings
+  && field_versionStrings==other_value.field_versionStrings;
+}
+
+boolean GetVersionsRes::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_numberOfVersionStrings.is_bound())
+  || (field_versionStrings.is_bound());
+}
+boolean GetVersionsRes::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_numberOfVersionStrings.is_value()
+  && field_versionStrings.is_value();
+}
+void GetVersionsRes::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", numberOfVersionStrings := ");
+field_numberOfVersionStrings.log();
+TTCN_Logger::log_event_str(", versionStrings := ");
+field_versionStrings.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void GetVersionsRes::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 @IsobusVTMessageTypes.GetVersionsRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) numberOfVersionStrings().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) versionStrings().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "numberOfVersionStrings")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          numberOfVersionStrings().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(), "versionStrings")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          versionStrings().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 @IsobusVTMessageTypes.GetVersionsRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.GetVersionsRes");
+  }
+}
+
+void GetVersionsRes::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (numberOfVersionStrings().is_bound()) numberOfVersionStrings().set_implicit_omit();
+if (versionStrings().is_bound()) versionStrings().set_implicit_omit();
+}
+
+void GetVersionsRes::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_numberOfVersionStrings.encode_text(text_buf);
+field_versionStrings.encode_text(text_buf);
+}
+
+void GetVersionsRes::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_numberOfVersionStrings.decode_text(text_buf);
+field_versionStrings.decode_text(text_buf);
+}
+
+void GetVersionsRes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void GetVersionsRes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int GetVersionsRes::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;
+  int value_of_length_field1 = 0;
+  RAW_Force_Omit field_0_force_omit(0, force_omit, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, GetVersionsRes_numberOfVersionStrings_descr_.raw->forceomit);
+  decoded_field_length = field_numberOfVersionStrings.RAW_decode(GetVersionsRes_numberOfVersionStrings_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());
+  value_of_length_field1+=field_numberOfVersionStrings.get_long_long_val()*1;
+  RAW_Force_Omit field_2_force_omit(2, force_omit, VersionLabel7Char_descr_.raw->forceomit);
+  decoded_field_length = field_versionStrings.RAW_decode(VersionLabel7Char_descr_, p_buf, limit, local_top_order, no_err, value_of_length_field1, 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());
+  value_of_length_field1 -= decoded_field_length;
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int GetVersionsRes::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, GetVersionsRes_numberOfVersionStrings_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, VersionLabel7Char_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += 8;
+  myleaf.body.node.nodes[1]->calc = CALC_LENGTH;
+  myleaf.body.node.nodes[1]->coding_descr = &GetVersionsRes_numberOfVersionStrings_descr_;
+  myleaf.body.node.nodes[1]->calcof.lengthto.num_of_fields = 1;
+  myleaf.body.node.nodes[1]->calcof.lengthto.unit = -1;
+  myleaf.body.node.nodes[1]->calcof.lengthto.offset = 0;
+  myleaf.body.node.nodes[1]->calcof.lengthto.fields = init_lengthto_fields_list(1);
+  myleaf.body.node.nodes[1]->length = 8;
+  myleaf.body.node.nodes[1]->calcof.lengthto.fields[0].level = myleaf.body.node.nodes[2]->curr_pos.level;
+  myleaf.body.node.nodes[1]->calcof.lengthto.fields[0].pos = myleaf.body.node.nodes[2]->curr_pos.pos;
+  encoded_length += field_versionStrings.RAW_encode(VersionLabel7Char_descr_, *myleaf.body.node.nodes[2]);
+  return myleaf.length = encoded_length;
+}
+
+struct GetVersionsRes_template::single_value_struct {
+INTEGER_template field_vtfunction;
+INTEGER_template field_numberOfVersionStrings;
+CHARSTRING_template field_versionStrings;
+};
+
+void GetVersionsRes_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_vtfunction = ANY_VALUE;
+single_value->field_numberOfVersionStrings = ANY_VALUE;
+single_value->field_versionStrings = ANY_VALUE;
+}
+}
+}
+
+void GetVersionsRes_template::copy_value(const GetVersionsRes& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.numberOfVersionStrings().is_bound()) {
+  single_value->field_numberOfVersionStrings = other_value.numberOfVersionStrings();
+} else {
+  single_value->field_numberOfVersionStrings.clean_up();
+}
+if (other_value.versionStrings().is_bound()) {
+  single_value->field_versionStrings = other_value.versionStrings();
+} else {
+  single_value->field_versionStrings.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void GetVersionsRes_template::copy_template(const GetVersionsRes_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.numberOfVersionStrings().get_selection()) {
+single_value->field_numberOfVersionStrings = other_value.numberOfVersionStrings();
+} else {
+single_value->field_numberOfVersionStrings.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.versionStrings().get_selection()) {
+single_value->field_versionStrings = other_value.versionStrings();
+} else {
+single_value->field_versionStrings.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new GetVersionsRes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetVersionsRes.");
+break;
+}
+set_selection(other_value);
+}
+
+GetVersionsRes_template::GetVersionsRes_template()
+{
+}
+
+GetVersionsRes_template::GetVersionsRes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+GetVersionsRes_template::GetVersionsRes_template(const GetVersionsRes& other_value)
+{
+copy_value(other_value);
+}
+
+GetVersionsRes_template::GetVersionsRes_template(const OPTIONAL<GetVersionsRes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const GetVersionsRes&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.GetVersionsRes from an unbound optional field.");
+}
+}
+
+GetVersionsRes_template::GetVersionsRes_template(const GetVersionsRes_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+GetVersionsRes_template::~GetVersionsRes_template()
+{
+clean_up();
+}
+
+GetVersionsRes_template& GetVersionsRes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+GetVersionsRes_template& GetVersionsRes_template::operator=(const GetVersionsRes& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+GetVersionsRes_template& GetVersionsRes_template::operator=(const OPTIONAL<GetVersionsRes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const GetVersionsRes&)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 @IsobusVTMessageTypes.GetVersionsRes.");
+}
+return *this;
+}
+
+GetVersionsRes_template& GetVersionsRes_template::operator=(const GetVersionsRes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean GetVersionsRes_template::match(const GetVersionsRes& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.numberOfVersionStrings().is_bound()) return FALSE;
+if(!single_value->field_numberOfVersionStrings.match(other_value.numberOfVersionStrings(), legacy))return FALSE;
+if(!other_value.versionStrings().is_bound()) return FALSE;
+if(!single_value->field_versionStrings.match(other_value.versionStrings(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetVersionsRes.");
+}
+return FALSE;
+}
+
+boolean GetVersionsRes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_numberOfVersionStrings.is_bound()
+
+ ||single_value->field_versionStrings.is_bound()
+;
+}
+
+boolean GetVersionsRes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_numberOfVersionStrings.is_value()
+ &&single_value->field_versionStrings.is_value();
+}
+
+void GetVersionsRes_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+GetVersionsRes GetVersionsRes_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 @IsobusVTMessageTypes.GetVersionsRes.");
+GetVersionsRes ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_numberOfVersionStrings.is_bound()) {
+ret_val.numberOfVersionStrings() = single_value->field_numberOfVersionStrings.valueof();
+}
+if (single_value->field_versionStrings.is_bound()) {
+ret_val.versionStrings() = single_value->field_versionStrings.valueof();
+}
+return ret_val;
+}
+
+void GetVersionsRes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.GetVersionsRes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new GetVersionsRes_template[list_length];
+}
+
+GetVersionsRes_template& GetVersionsRes_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.GetVersionsRes.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.GetVersionsRes.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& GetVersionsRes_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& GetVersionsRes_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.GetVersionsRes.");
+return single_value->field_vtfunction;
+}
+
+INTEGER_template& GetVersionsRes_template::numberOfVersionStrings()
+{
+set_specific();
+return single_value->field_numberOfVersionStrings;
+}
+
+const INTEGER_template& GetVersionsRes_template::numberOfVersionStrings() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field numberOfVersionStrings of a non-specific template of type @IsobusVTMessageTypes.GetVersionsRes.");
+return single_value->field_numberOfVersionStrings;
+}
+
+CHARSTRING_template& GetVersionsRes_template::versionStrings()
+{
+set_specific();
+return single_value->field_versionStrings;
+}
+
+const CHARSTRING_template& GetVersionsRes_template::versionStrings() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field versionStrings of a non-specific template of type @IsobusVTMessageTypes.GetVersionsRes.");
+return single_value->field_versionStrings;
+}
+
+int GetVersionsRes_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetVersionsRes 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 @IsobusVTMessageTypes.GetVersionsRes 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 @IsobusVTMessageTypes.GetVersionsRes containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetVersionsRes containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetVersionsRes containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.GetVersionsRes containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.GetVersionsRes.");
+  }
+  return 0;
+}
+
+void GetVersionsRes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", numberOfVersionStrings := ");
+single_value->field_numberOfVersionStrings.log();
+TTCN_Logger::log_event_str(", versionStrings := ");
+single_value->field_versionStrings.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void GetVersionsRes_template::log_match(const GetVersionsRes& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_numberOfVersionStrings.match(match_value.numberOfVersionStrings(), legacy)){
+TTCN_Logger::log_logmatch_info(".numberOfVersionStrings");
+single_value->field_numberOfVersionStrings.log_match(match_value.numberOfVersionStrings(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_versionStrings.match(match_value.versionStrings(), legacy)){
+TTCN_Logger::log_logmatch_info(".versionStrings");
+single_value->field_versionStrings.log_match(match_value.versionStrings(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", numberOfVersionStrings := ");
+single_value->field_numberOfVersionStrings.log_match(match_value.numberOfVersionStrings(), legacy);
+TTCN_Logger::log_event_str(", versionStrings := ");
+single_value->field_versionStrings.log_match(match_value.versionStrings(), 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 GetVersionsRes_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_numberOfVersionStrings.encode_text(text_buf);
+single_value->field_versionStrings.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 @IsobusVTMessageTypes.GetVersionsRes.");
+}
+}
+
+void GetVersionsRes_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_vtfunction.decode_text(text_buf);
+single_value->field_numberOfVersionStrings.decode_text(text_buf);
+single_value->field_versionStrings.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 GetVersionsRes_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 @IsobusVTMessageTypes.GetVersionsRes.");
+}
+}
+
+void GetVersionsRes_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: {
+    GetVersionsRes_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.GetVersionsRes 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) numberOfVersionStrings().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) versionStrings().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "numberOfVersionStrings")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          numberOfVersionStrings().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(), "versionStrings")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          versionStrings().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 @IsobusVTMessageTypes.GetVersionsRes: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.GetVersionsRes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void GetVersionsRes_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetVersionsRes");
+single_value->field_numberOfVersionStrings.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetVersionsRes");
+single_value->field_versionStrings.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.GetVersionsRes");
+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 : "@IsobusVTMessageTypes.GetVersionsRes");
+}
+
+boolean GetVersionsRes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean GetVersionsRes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+VTUnsupportedVTFunctionInd::VTUnsupportedVTFunctionInd()
+{
+}
+
+VTUnsupportedVTFunctionInd::VTUnsupportedVTFunctionInd(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_unsupportedVTfunction,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_unsupportedVTfunction(par_unsupportedVTfunction),
+  field_reserved3(par_reserved3),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+VTUnsupportedVTFunctionInd::VTUnsupportedVTFunctionInd(const VTUnsupportedVTFunctionInd& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.VTUnsupportedVTFunctionInd.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.unsupportedVTfunction().is_bound()) field_unsupportedVTfunction = other_value.unsupportedVTfunction();
+else field_unsupportedVTfunction.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void VTUnsupportedVTFunctionInd::clean_up()
+{
+field_vtfunction.clean_up();
+field_unsupportedVTfunction.clean_up();
+field_reserved3.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* VTUnsupportedVTFunctionInd::get_descriptor() const { return &VTUnsupportedVTFunctionInd_descr_; }
+VTUnsupportedVTFunctionInd& VTUnsupportedVTFunctionInd::operator=(const VTUnsupportedVTFunctionInd& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.VTUnsupportedVTFunctionInd.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.unsupportedVTfunction().is_bound()) field_unsupportedVTfunction = other_value.unsupportedVTfunction();
+  else field_unsupportedVTfunction.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean VTUnsupportedVTFunctionInd::operator==(const VTUnsupportedVTFunctionInd& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_unsupportedVTfunction==other_value.field_unsupportedVTfunction
+  && field_reserved3==other_value.field_reserved3
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean VTUnsupportedVTFunctionInd::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_unsupportedVTfunction.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean VTUnsupportedVTFunctionInd::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_unsupportedVTfunction.is_value()
+  && field_reserved3.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void VTUnsupportedVTFunctionInd::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", unsupportedVTfunction := ");
+field_unsupportedVTfunction.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void VTUnsupportedVTFunctionInd::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.VTUnsupportedVTFunctionInd has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) unsupportedVTfunction().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "unsupportedVTfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          unsupportedVTfunction().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.VTUnsupportedVTFunctionInd: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.VTUnsupportedVTFunctionInd");
+  }
+}
+
+void VTUnsupportedVTFunctionInd::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (unsupportedVTfunction().is_bound()) unsupportedVTfunction().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void VTUnsupportedVTFunctionInd::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_unsupportedVTfunction.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void VTUnsupportedVTFunctionInd::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_unsupportedVTfunction.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void VTUnsupportedVTFunctionInd::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void VTUnsupportedVTFunctionInd::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int VTUnsupportedVTFunctionInd::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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::OCT1_descr_.raw->forceomit);
+  decoded_field_length = field_unsupportedVTfunction.RAW_decode(General__Types::OCT1_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, VTUnsupportedVTFunctionInd_reserved3_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(VTUnsupportedVTFunctionInd_reserved3_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, VTUnsupportedVTFunctionInd_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(VTUnsupportedVTFunctionInd_reserved4_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, VTUnsupportedVTFunctionInd_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(VTUnsupportedVTFunctionInd_reserved5_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, VTUnsupportedVTFunctionInd_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(VTUnsupportedVTFunctionInd_reserved6_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, VTUnsupportedVTFunctionInd_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(VTUnsupportedVTFunctionInd_reserved7_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, VTUnsupportedVTFunctionInd_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(VTUnsupportedVTFunctionInd_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int VTUnsupportedVTFunctionInd::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, General__Types::OCT1_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, VTUnsupportedVTFunctionInd_reserved3_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, VTUnsupportedVTFunctionInd_reserved4_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, VTUnsupportedVTFunctionInd_reserved5_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, VTUnsupportedVTFunctionInd_reserved6_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, VTUnsupportedVTFunctionInd_reserved7_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, VTUnsupportedVTFunctionInd_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_unsupportedVTfunction.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved3.RAW_encode(VTUnsupportedVTFunctionInd_reserved3_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved4.RAW_encode(VTUnsupportedVTFunctionInd_reserved4_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved5.RAW_encode(VTUnsupportedVTFunctionInd_reserved5_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved6.RAW_encode(VTUnsupportedVTFunctionInd_reserved6_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved7.RAW_encode(VTUnsupportedVTFunctionInd_reserved7_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved8.RAW_encode(VTUnsupportedVTFunctionInd_reserved8_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct VTUnsupportedVTFunctionInd_template::single_value_struct {
+INTEGER_template field_vtfunction;
+OCTETSTRING_template field_unsupportedVTfunction;
+OCTETSTRING_template field_reserved3;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void VTUnsupportedVTFunctionInd_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_vtfunction = ANY_VALUE;
+single_value->field_unsupportedVTfunction = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void VTUnsupportedVTFunctionInd_template::copy_value(const VTUnsupportedVTFunctionInd& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.unsupportedVTfunction().is_bound()) {
+  single_value->field_unsupportedVTfunction = other_value.unsupportedVTfunction();
+} else {
+  single_value->field_unsupportedVTfunction.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void VTUnsupportedVTFunctionInd_template::copy_template(const VTUnsupportedVTFunctionInd_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.unsupportedVTfunction().get_selection()) {
+single_value->field_unsupportedVTfunction = other_value.unsupportedVTfunction();
+} else {
+single_value->field_unsupportedVTfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new VTUnsupportedVTFunctionInd_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTUnsupportedVTFunctionInd.");
+break;
+}
+set_selection(other_value);
+}
+
+VTUnsupportedVTFunctionInd_template::VTUnsupportedVTFunctionInd_template()
+{
+}
+
+VTUnsupportedVTFunctionInd_template::VTUnsupportedVTFunctionInd_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+VTUnsupportedVTFunctionInd_template::VTUnsupportedVTFunctionInd_template(const VTUnsupportedVTFunctionInd& other_value)
+{
+copy_value(other_value);
+}
+
+VTUnsupportedVTFunctionInd_template::VTUnsupportedVTFunctionInd_template(const OPTIONAL<VTUnsupportedVTFunctionInd>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTUnsupportedVTFunctionInd&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.VTUnsupportedVTFunctionInd from an unbound optional field.");
+}
+}
+
+VTUnsupportedVTFunctionInd_template::VTUnsupportedVTFunctionInd_template(const VTUnsupportedVTFunctionInd_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+VTUnsupportedVTFunctionInd_template::~VTUnsupportedVTFunctionInd_template()
+{
+clean_up();
+}
+
+VTUnsupportedVTFunctionInd_template& VTUnsupportedVTFunctionInd_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+VTUnsupportedVTFunctionInd_template& VTUnsupportedVTFunctionInd_template::operator=(const VTUnsupportedVTFunctionInd& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+VTUnsupportedVTFunctionInd_template& VTUnsupportedVTFunctionInd_template::operator=(const OPTIONAL<VTUnsupportedVTFunctionInd>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTUnsupportedVTFunctionInd&)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 @IsobusVTMessageTypes.VTUnsupportedVTFunctionInd.");
+}
+return *this;
+}
+
+VTUnsupportedVTFunctionInd_template& VTUnsupportedVTFunctionInd_template::operator=(const VTUnsupportedVTFunctionInd_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean VTUnsupportedVTFunctionInd_template::match(const VTUnsupportedVTFunctionInd& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.unsupportedVTfunction().is_bound()) return FALSE;
+if(!single_value->field_unsupportedVTfunction.match(other_value.unsupportedVTfunction(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTUnsupportedVTFunctionInd.");
+}
+return FALSE;
+}
+
+boolean VTUnsupportedVTFunctionInd_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_unsupportedVTfunction.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean VTUnsupportedVTFunctionInd_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_unsupportedVTfunction.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void VTUnsupportedVTFunctionInd_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+VTUnsupportedVTFunctionInd VTUnsupportedVTFunctionInd_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 @IsobusVTMessageTypes.VTUnsupportedVTFunctionInd.");
+VTUnsupportedVTFunctionInd ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_unsupportedVTfunction.is_bound()) {
+ret_val.unsupportedVTfunction() = single_value->field_unsupportedVTfunction.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void VTUnsupportedVTFunctionInd_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.VTUnsupportedVTFunctionInd.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new VTUnsupportedVTFunctionInd_template[list_length];
+}
+
+VTUnsupportedVTFunctionInd_template& VTUnsupportedVTFunctionInd_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.VTUnsupportedVTFunctionInd.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.VTUnsupportedVTFunctionInd.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& VTUnsupportedVTFunctionInd_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& VTUnsupportedVTFunctionInd_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.VTUnsupportedVTFunctionInd.");
+return single_value->field_vtfunction;
+}
+
+OCTETSTRING_template& VTUnsupportedVTFunctionInd_template::unsupportedVTfunction()
+{
+set_specific();
+return single_value->field_unsupportedVTfunction;
+}
+
+const OCTETSTRING_template& VTUnsupportedVTFunctionInd_template::unsupportedVTfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field unsupportedVTfunction of a non-specific template of type @IsobusVTMessageTypes.VTUnsupportedVTFunctionInd.");
+return single_value->field_unsupportedVTfunction;
+}
+
+OCTETSTRING_template& VTUnsupportedVTFunctionInd_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const OCTETSTRING_template& VTUnsupportedVTFunctionInd_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.VTUnsupportedVTFunctionInd.");
+return single_value->field_reserved3;
+}
+
+OCTETSTRING_template& VTUnsupportedVTFunctionInd_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& VTUnsupportedVTFunctionInd_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.VTUnsupportedVTFunctionInd.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& VTUnsupportedVTFunctionInd_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& VTUnsupportedVTFunctionInd_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.VTUnsupportedVTFunctionInd.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& VTUnsupportedVTFunctionInd_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& VTUnsupportedVTFunctionInd_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.VTUnsupportedVTFunctionInd.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& VTUnsupportedVTFunctionInd_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& VTUnsupportedVTFunctionInd_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.VTUnsupportedVTFunctionInd.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& VTUnsupportedVTFunctionInd_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& VTUnsupportedVTFunctionInd_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.VTUnsupportedVTFunctionInd.");
+return single_value->field_reserved8;
+}
+
+int VTUnsupportedVTFunctionInd_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTUnsupportedVTFunctionInd which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTUnsupportedVTFunctionInd 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 @IsobusVTMessageTypes.VTUnsupportedVTFunctionInd containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTUnsupportedVTFunctionInd containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTUnsupportedVTFunctionInd containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTUnsupportedVTFunctionInd containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTUnsupportedVTFunctionInd.");
+  }
+  return 0;
+}
+
+void VTUnsupportedVTFunctionInd_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", unsupportedVTfunction := ");
+single_value->field_unsupportedVTfunction.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void VTUnsupportedVTFunctionInd_template::log_match(const VTUnsupportedVTFunctionInd& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_unsupportedVTfunction.match(match_value.unsupportedVTfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".unsupportedVTfunction");
+single_value->field_unsupportedVTfunction.log_match(match_value.unsupportedVTfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", unsupportedVTfunction := ");
+single_value->field_unsupportedVTfunction.log_match(match_value.unsupportedVTfunction(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 VTUnsupportedVTFunctionInd_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_unsupportedVTfunction.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.VTUnsupportedVTFunctionInd.");
+}
+}
+
+void VTUnsupportedVTFunctionInd_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_vtfunction.decode_text(text_buf);
+single_value->field_unsupportedVTfunction.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 VTUnsupportedVTFunctionInd_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 @IsobusVTMessageTypes.VTUnsupportedVTFunctionInd.");
+}
+}
+
+void VTUnsupportedVTFunctionInd_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: {
+    VTUnsupportedVTFunctionInd_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.VTUnsupportedVTFunctionInd has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) unsupportedVTfunction().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "unsupportedVTfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          unsupportedVTfunction().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.VTUnsupportedVTFunctionInd: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.VTUnsupportedVTFunctionInd");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void VTUnsupportedVTFunctionInd_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTUnsupportedVTFunctionInd");
+single_value->field_unsupportedVTfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTUnsupportedVTFunctionInd");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTUnsupportedVTFunctionInd");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTUnsupportedVTFunctionInd");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTUnsupportedVTFunctionInd");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTUnsupportedVTFunctionInd");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTUnsupportedVTFunctionInd");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTUnsupportedVTFunctionInd");
+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 : "@IsobusVTMessageTypes.VTUnsupportedVTFunctionInd");
+}
+
+boolean VTUnsupportedVTFunctionInd_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean VTUnsupportedVTFunctionInd_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+UnsupportedVTFunctionInd::UnsupportedVTFunctionInd()
+{
+}
+
+UnsupportedVTFunctionInd::UnsupportedVTFunctionInd(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_unsupportedVTfunction,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_unsupportedVTfunction(par_unsupportedVTfunction),
+  field_reserved3(par_reserved3),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+UnsupportedVTFunctionInd::UnsupportedVTFunctionInd(const UnsupportedVTFunctionInd& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.UnsupportedVTFunctionInd.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.unsupportedVTfunction().is_bound()) field_unsupportedVTfunction = other_value.unsupportedVTfunction();
+else field_unsupportedVTfunction.clean_up();
+if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+else field_reserved3.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void UnsupportedVTFunctionInd::clean_up()
+{
+field_vtfunction.clean_up();
+field_unsupportedVTfunction.clean_up();
+field_reserved3.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* UnsupportedVTFunctionInd::get_descriptor() const { return &UnsupportedVTFunctionInd_descr_; }
+UnsupportedVTFunctionInd& UnsupportedVTFunctionInd::operator=(const UnsupportedVTFunctionInd& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.UnsupportedVTFunctionInd.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.unsupportedVTfunction().is_bound()) field_unsupportedVTfunction = other_value.unsupportedVTfunction();
+  else field_unsupportedVTfunction.clean_up();
+  if (other_value.reserved3().is_bound()) field_reserved3 = other_value.reserved3();
+  else field_reserved3.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean UnsupportedVTFunctionInd::operator==(const UnsupportedVTFunctionInd& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_unsupportedVTfunction==other_value.field_unsupportedVTfunction
+  && field_reserved3==other_value.field_reserved3
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean UnsupportedVTFunctionInd::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_unsupportedVTfunction.is_bound())
+  || (field_reserved3.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean UnsupportedVTFunctionInd::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_unsupportedVTfunction.is_value()
+  && field_reserved3.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void UnsupportedVTFunctionInd::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", unsupportedVTfunction := ");
+field_unsupportedVTfunction.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void UnsupportedVTFunctionInd::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.UnsupportedVTFunctionInd has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) unsupportedVTfunction().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "unsupportedVTfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          unsupportedVTfunction().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.UnsupportedVTFunctionInd: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.UnsupportedVTFunctionInd");
+  }
+}
+
+void UnsupportedVTFunctionInd::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (unsupportedVTfunction().is_bound()) unsupportedVTfunction().set_implicit_omit();
+if (reserved3().is_bound()) reserved3().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void UnsupportedVTFunctionInd::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_unsupportedVTfunction.encode_text(text_buf);
+field_reserved3.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void UnsupportedVTFunctionInd::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_unsupportedVTfunction.decode_text(text_buf);
+field_reserved3.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void UnsupportedVTFunctionInd::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void UnsupportedVTFunctionInd::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int UnsupportedVTFunctionInd::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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::OCT1_descr_.raw->forceomit);
+  decoded_field_length = field_unsupportedVTfunction.RAW_decode(General__Types::OCT1_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, UnsupportedVTFunctionInd_reserved3_descr_.raw->forceomit);
+  decoded_field_length = field_reserved3.RAW_decode(UnsupportedVTFunctionInd_reserved3_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, UnsupportedVTFunctionInd_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(UnsupportedVTFunctionInd_reserved4_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, UnsupportedVTFunctionInd_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(UnsupportedVTFunctionInd_reserved5_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, UnsupportedVTFunctionInd_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(UnsupportedVTFunctionInd_reserved6_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, UnsupportedVTFunctionInd_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(UnsupportedVTFunctionInd_reserved7_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, UnsupportedVTFunctionInd_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(UnsupportedVTFunctionInd_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int UnsupportedVTFunctionInd::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, General__Types::OCT1_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, UnsupportedVTFunctionInd_reserved3_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, UnsupportedVTFunctionInd_reserved4_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, UnsupportedVTFunctionInd_reserved5_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, UnsupportedVTFunctionInd_reserved6_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, UnsupportedVTFunctionInd_reserved7_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, UnsupportedVTFunctionInd_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_unsupportedVTfunction.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_reserved3.RAW_encode(UnsupportedVTFunctionInd_reserved3_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved4.RAW_encode(UnsupportedVTFunctionInd_reserved4_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved5.RAW_encode(UnsupportedVTFunctionInd_reserved5_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved6.RAW_encode(UnsupportedVTFunctionInd_reserved6_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved7.RAW_encode(UnsupportedVTFunctionInd_reserved7_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved8.RAW_encode(UnsupportedVTFunctionInd_reserved8_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct UnsupportedVTFunctionInd_template::single_value_struct {
+INTEGER_template field_vtfunction;
+OCTETSTRING_template field_unsupportedVTfunction;
+OCTETSTRING_template field_reserved3;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void UnsupportedVTFunctionInd_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_vtfunction = ANY_VALUE;
+single_value->field_unsupportedVTfunction = ANY_VALUE;
+single_value->field_reserved3 = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void UnsupportedVTFunctionInd_template::copy_value(const UnsupportedVTFunctionInd& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.unsupportedVTfunction().is_bound()) {
+  single_value->field_unsupportedVTfunction = other_value.unsupportedVTfunction();
+} else {
+  single_value->field_unsupportedVTfunction.clean_up();
+}
+if (other_value.reserved3().is_bound()) {
+  single_value->field_reserved3 = other_value.reserved3();
+} else {
+  single_value->field_reserved3.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void UnsupportedVTFunctionInd_template::copy_template(const UnsupportedVTFunctionInd_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.unsupportedVTfunction().get_selection()) {
+single_value->field_unsupportedVTfunction = other_value.unsupportedVTfunction();
+} else {
+single_value->field_unsupportedVTfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved3().get_selection()) {
+single_value->field_reserved3 = other_value.reserved3();
+} else {
+single_value->field_reserved3.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new UnsupportedVTFunctionInd_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.UnsupportedVTFunctionInd.");
+break;
+}
+set_selection(other_value);
+}
+
+UnsupportedVTFunctionInd_template::UnsupportedVTFunctionInd_template()
+{
+}
+
+UnsupportedVTFunctionInd_template::UnsupportedVTFunctionInd_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+UnsupportedVTFunctionInd_template::UnsupportedVTFunctionInd_template(const UnsupportedVTFunctionInd& other_value)
+{
+copy_value(other_value);
+}
+
+UnsupportedVTFunctionInd_template::UnsupportedVTFunctionInd_template(const OPTIONAL<UnsupportedVTFunctionInd>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const UnsupportedVTFunctionInd&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.UnsupportedVTFunctionInd from an unbound optional field.");
+}
+}
+
+UnsupportedVTFunctionInd_template::UnsupportedVTFunctionInd_template(const UnsupportedVTFunctionInd_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+UnsupportedVTFunctionInd_template::~UnsupportedVTFunctionInd_template()
+{
+clean_up();
+}
+
+UnsupportedVTFunctionInd_template& UnsupportedVTFunctionInd_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+UnsupportedVTFunctionInd_template& UnsupportedVTFunctionInd_template::operator=(const UnsupportedVTFunctionInd& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+UnsupportedVTFunctionInd_template& UnsupportedVTFunctionInd_template::operator=(const OPTIONAL<UnsupportedVTFunctionInd>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const UnsupportedVTFunctionInd&)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 @IsobusVTMessageTypes.UnsupportedVTFunctionInd.");
+}
+return *this;
+}
+
+UnsupportedVTFunctionInd_template& UnsupportedVTFunctionInd_template::operator=(const UnsupportedVTFunctionInd_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean UnsupportedVTFunctionInd_template::match(const UnsupportedVTFunctionInd& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.unsupportedVTfunction().is_bound()) return FALSE;
+if(!single_value->field_unsupportedVTfunction.match(other_value.unsupportedVTfunction(), legacy))return FALSE;
+if(!other_value.reserved3().is_bound()) return FALSE;
+if(!single_value->field_reserved3.match(other_value.reserved3(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.UnsupportedVTFunctionInd.");
+}
+return FALSE;
+}
+
+boolean UnsupportedVTFunctionInd_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_unsupportedVTfunction.is_bound()
+
+ ||single_value->field_reserved3.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean UnsupportedVTFunctionInd_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_unsupportedVTfunction.is_value()
+ &&single_value->field_reserved3.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void UnsupportedVTFunctionInd_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+UnsupportedVTFunctionInd UnsupportedVTFunctionInd_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 @IsobusVTMessageTypes.UnsupportedVTFunctionInd.");
+UnsupportedVTFunctionInd ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_unsupportedVTfunction.is_bound()) {
+ret_val.unsupportedVTfunction() = single_value->field_unsupportedVTfunction.valueof();
+}
+if (single_value->field_reserved3.is_bound()) {
+ret_val.reserved3() = single_value->field_reserved3.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void UnsupportedVTFunctionInd_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.UnsupportedVTFunctionInd.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new UnsupportedVTFunctionInd_template[list_length];
+}
+
+UnsupportedVTFunctionInd_template& UnsupportedVTFunctionInd_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.UnsupportedVTFunctionInd.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.UnsupportedVTFunctionInd.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& UnsupportedVTFunctionInd_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& UnsupportedVTFunctionInd_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.UnsupportedVTFunctionInd.");
+return single_value->field_vtfunction;
+}
+
+OCTETSTRING_template& UnsupportedVTFunctionInd_template::unsupportedVTfunction()
+{
+set_specific();
+return single_value->field_unsupportedVTfunction;
+}
+
+const OCTETSTRING_template& UnsupportedVTFunctionInd_template::unsupportedVTfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field unsupportedVTfunction of a non-specific template of type @IsobusVTMessageTypes.UnsupportedVTFunctionInd.");
+return single_value->field_unsupportedVTfunction;
+}
+
+OCTETSTRING_template& UnsupportedVTFunctionInd_template::reserved3()
+{
+set_specific();
+return single_value->field_reserved3;
+}
+
+const OCTETSTRING_template& UnsupportedVTFunctionInd_template::reserved3() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved3 of a non-specific template of type @IsobusVTMessageTypes.UnsupportedVTFunctionInd.");
+return single_value->field_reserved3;
+}
+
+OCTETSTRING_template& UnsupportedVTFunctionInd_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& UnsupportedVTFunctionInd_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.UnsupportedVTFunctionInd.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& UnsupportedVTFunctionInd_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& UnsupportedVTFunctionInd_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.UnsupportedVTFunctionInd.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& UnsupportedVTFunctionInd_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& UnsupportedVTFunctionInd_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.UnsupportedVTFunctionInd.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& UnsupportedVTFunctionInd_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& UnsupportedVTFunctionInd_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.UnsupportedVTFunctionInd.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& UnsupportedVTFunctionInd_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& UnsupportedVTFunctionInd_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.UnsupportedVTFunctionInd.");
+return single_value->field_reserved8;
+}
+
+int UnsupportedVTFunctionInd_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.UnsupportedVTFunctionInd which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.UnsupportedVTFunctionInd 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 @IsobusVTMessageTypes.UnsupportedVTFunctionInd containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.UnsupportedVTFunctionInd containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.UnsupportedVTFunctionInd containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.UnsupportedVTFunctionInd containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.UnsupportedVTFunctionInd.");
+  }
+  return 0;
+}
+
+void UnsupportedVTFunctionInd_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", unsupportedVTfunction := ");
+single_value->field_unsupportedVTfunction.log();
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void UnsupportedVTFunctionInd_template::log_match(const UnsupportedVTFunctionInd& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_unsupportedVTfunction.match(match_value.unsupportedVTfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".unsupportedVTfunction");
+single_value->field_unsupportedVTfunction.log_match(match_value.unsupportedVTfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved3.match(match_value.reserved3(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved3");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", unsupportedVTfunction := ");
+single_value->field_unsupportedVTfunction.log_match(match_value.unsupportedVTfunction(), legacy);
+TTCN_Logger::log_event_str(", reserved3 := ");
+single_value->field_reserved3.log_match(match_value.reserved3(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 UnsupportedVTFunctionInd_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_unsupportedVTfunction.encode_text(text_buf);
+single_value->field_reserved3.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.UnsupportedVTFunctionInd.");
+}
+}
+
+void UnsupportedVTFunctionInd_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_vtfunction.decode_text(text_buf);
+single_value->field_unsupportedVTfunction.decode_text(text_buf);
+single_value->field_reserved3.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 UnsupportedVTFunctionInd_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 @IsobusVTMessageTypes.UnsupportedVTFunctionInd.");
+}
+}
+
+void UnsupportedVTFunctionInd_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: {
+    UnsupportedVTFunctionInd_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.UnsupportedVTFunctionInd has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) unsupportedVTfunction().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) reserved3().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "unsupportedVTfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          unsupportedVTfunction().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(), "reserved3")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved3().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.UnsupportedVTFunctionInd: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.UnsupportedVTFunctionInd");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void UnsupportedVTFunctionInd_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.UnsupportedVTFunctionInd");
+single_value->field_unsupportedVTfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.UnsupportedVTFunctionInd");
+single_value->field_reserved3.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.UnsupportedVTFunctionInd");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.UnsupportedVTFunctionInd");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.UnsupportedVTFunctionInd");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.UnsupportedVTFunctionInd");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.UnsupportedVTFunctionInd");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.UnsupportedVTFunctionInd");
+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 : "@IsobusVTMessageTypes.UnsupportedVTFunctionInd");
+}
+
+boolean UnsupportedVTFunctionInd_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean UnsupportedVTFunctionInd_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+WorkingSetMaintenanceReq::WorkingSetMaintenanceReq()
+{
+}
+
+WorkingSetMaintenanceReq::WorkingSetMaintenanceReq(const INTEGER& par_vtfunction,
+    const WorkingSetMaintenanceBitMask& par_bitMask,
+    const e__WorkingSetMaintenanceVersionNumber& par_versionNumber,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8)
+  :   field_vtfunction(par_vtfunction),
+  field_bitMask(par_bitMask),
+  field_versionNumber(par_versionNumber),
+  field_reserved4(par_reserved4),
+  field_reserved5(par_reserved5),
+  field_reserved6(par_reserved6),
+  field_reserved7(par_reserved7),
+  field_reserved8(par_reserved8)
+{
+}
+
+WorkingSetMaintenanceReq::WorkingSetMaintenanceReq(const WorkingSetMaintenanceReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.WorkingSetMaintenanceReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.bitMask().is_bound()) field_bitMask = other_value.bitMask();
+else field_bitMask.clean_up();
+if (other_value.versionNumber().is_bound()) field_versionNumber = other_value.versionNumber();
+else field_versionNumber.clean_up();
+if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+else field_reserved4.clean_up();
+if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+else field_reserved5.clean_up();
+if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+else field_reserved6.clean_up();
+if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+else field_reserved7.clean_up();
+if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+else field_reserved8.clean_up();
+}
+
+void WorkingSetMaintenanceReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_bitMask.clean_up();
+field_versionNumber.clean_up();
+field_reserved4.clean_up();
+field_reserved5.clean_up();
+field_reserved6.clean_up();
+field_reserved7.clean_up();
+field_reserved8.clean_up();
+}
+
+const TTCN_Typedescriptor_t* WorkingSetMaintenanceReq::get_descriptor() const { return &WorkingSetMaintenanceReq_descr_; }
+WorkingSetMaintenanceReq& WorkingSetMaintenanceReq::operator=(const WorkingSetMaintenanceReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.WorkingSetMaintenanceReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.bitMask().is_bound()) field_bitMask = other_value.bitMask();
+  else field_bitMask.clean_up();
+  if (other_value.versionNumber().is_bound()) field_versionNumber = other_value.versionNumber();
+  else field_versionNumber.clean_up();
+  if (other_value.reserved4().is_bound()) field_reserved4 = other_value.reserved4();
+  else field_reserved4.clean_up();
+  if (other_value.reserved5().is_bound()) field_reserved5 = other_value.reserved5();
+  else field_reserved5.clean_up();
+  if (other_value.reserved6().is_bound()) field_reserved6 = other_value.reserved6();
+  else field_reserved6.clean_up();
+  if (other_value.reserved7().is_bound()) field_reserved7 = other_value.reserved7();
+  else field_reserved7.clean_up();
+  if (other_value.reserved8().is_bound()) field_reserved8 = other_value.reserved8();
+  else field_reserved8.clean_up();
+}
+return *this;
+}
+
+boolean WorkingSetMaintenanceReq::operator==(const WorkingSetMaintenanceReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_bitMask==other_value.field_bitMask
+  && field_versionNumber==other_value.field_versionNumber
+  && field_reserved4==other_value.field_reserved4
+  && field_reserved5==other_value.field_reserved5
+  && field_reserved6==other_value.field_reserved6
+  && field_reserved7==other_value.field_reserved7
+  && field_reserved8==other_value.field_reserved8;
+}
+
+boolean WorkingSetMaintenanceReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_bitMask.is_bound())
+  || (field_versionNumber.is_bound())
+  || (field_reserved4.is_bound())
+  || (field_reserved5.is_bound())
+  || (field_reserved6.is_bound())
+  || (field_reserved7.is_bound())
+  || (field_reserved8.is_bound());
+}
+boolean WorkingSetMaintenanceReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_bitMask.is_value()
+  && field_versionNumber.is_value()
+  && field_reserved4.is_value()
+  && field_reserved5.is_value()
+  && field_reserved6.is_value()
+  && field_reserved7.is_value()
+  && field_reserved8.is_value();
+}
+void WorkingSetMaintenanceReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", bitMask := ");
+field_bitMask.log();
+TTCN_Logger::log_event_str(", versionNumber := ");
+field_versionNumber.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void WorkingSetMaintenanceReq::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 (8<param.get_size()) {
+      param.error("record value of type @IsobusVTMessageTypes.WorkingSetMaintenanceReq has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) bitMask().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) versionNumber().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "bitMask")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          bitMask().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(), "versionNumber")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          versionNumber().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.WorkingSetMaintenanceReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.WorkingSetMaintenanceReq");
+  }
+}
+
+void WorkingSetMaintenanceReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (bitMask().is_bound()) bitMask().set_implicit_omit();
+if (versionNumber().is_bound()) versionNumber().set_implicit_omit();
+if (reserved4().is_bound()) reserved4().set_implicit_omit();
+if (reserved5().is_bound()) reserved5().set_implicit_omit();
+if (reserved6().is_bound()) reserved6().set_implicit_omit();
+if (reserved7().is_bound()) reserved7().set_implicit_omit();
+if (reserved8().is_bound()) reserved8().set_implicit_omit();
+}
+
+void WorkingSetMaintenanceReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_bitMask.encode_text(text_buf);
+field_versionNumber.encode_text(text_buf);
+field_reserved4.encode_text(text_buf);
+field_reserved5.encode_text(text_buf);
+field_reserved6.encode_text(text_buf);
+field_reserved7.encode_text(text_buf);
+field_reserved8.encode_text(text_buf);
+}
+
+void WorkingSetMaintenanceReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_bitMask.decode_text(text_buf);
+field_versionNumber.decode_text(text_buf);
+field_reserved4.decode_text(text_buf);
+field_reserved5.decode_text(text_buf);
+field_reserved6.decode_text(text_buf);
+field_reserved7.decode_text(text_buf);
+field_reserved8.decode_text(text_buf);
+}
+
+void WorkingSetMaintenanceReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void WorkingSetMaintenanceReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int WorkingSetMaintenanceReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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, WorkingSetMaintenanceBitMask_descr_.raw->forceomit);
+  decoded_field_length = field_bitMask.RAW_decode(WorkingSetMaintenanceBitMask_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, e__WorkingSetMaintenanceVersionNumber_descr_.raw->forceomit);
+  decoded_field_length = field_versionNumber.RAW_decode(e__WorkingSetMaintenanceVersionNumber_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, WorkingSetMaintenanceReq_reserved4_descr_.raw->forceomit);
+  decoded_field_length = field_reserved4.RAW_decode(WorkingSetMaintenanceReq_reserved4_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, WorkingSetMaintenanceReq_reserved5_descr_.raw->forceomit);
+  decoded_field_length = field_reserved5.RAW_decode(WorkingSetMaintenanceReq_reserved5_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, WorkingSetMaintenanceReq_reserved6_descr_.raw->forceomit);
+  decoded_field_length = field_reserved6.RAW_decode(WorkingSetMaintenanceReq_reserved6_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, WorkingSetMaintenanceReq_reserved7_descr_.raw->forceomit);
+  decoded_field_length = field_reserved7.RAW_decode(WorkingSetMaintenanceReq_reserved7_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, WorkingSetMaintenanceReq_reserved8_descr_.raw->forceomit);
+  decoded_field_length = field_reserved8.RAW_decode(WorkingSetMaintenanceReq_reserved8_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int WorkingSetMaintenanceReq::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 = 8;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, WorkingSetMaintenanceBitMask_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, e__WorkingSetMaintenanceVersionNumber_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, WorkingSetMaintenanceReq_reserved4_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, WorkingSetMaintenanceReq_reserved5_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, WorkingSetMaintenanceReq_reserved6_descr_.raw);
+  myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 6, WorkingSetMaintenanceReq_reserved7_descr_.raw);
+  myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 7, WorkingSetMaintenanceReq_reserved8_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_bitMask.RAW_encode(WorkingSetMaintenanceBitMask_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_versionNumber.RAW_encode(e__WorkingSetMaintenanceVersionNumber_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_reserved4.RAW_encode(WorkingSetMaintenanceReq_reserved4_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_reserved5.RAW_encode(WorkingSetMaintenanceReq_reserved5_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_reserved6.RAW_encode(WorkingSetMaintenanceReq_reserved6_descr_, *myleaf.body.node.nodes[5]);
+  encoded_length += field_reserved7.RAW_encode(WorkingSetMaintenanceReq_reserved7_descr_, *myleaf.body.node.nodes[6]);
+  encoded_length += field_reserved8.RAW_encode(WorkingSetMaintenanceReq_reserved8_descr_, *myleaf.body.node.nodes[7]);
+  return myleaf.length = encoded_length;
+}
+
+struct WorkingSetMaintenanceReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+WorkingSetMaintenanceBitMask_template field_bitMask;
+e__WorkingSetMaintenanceVersionNumber_template field_versionNumber;
+OCTETSTRING_template field_reserved4;
+OCTETSTRING_template field_reserved5;
+OCTETSTRING_template field_reserved6;
+OCTETSTRING_template field_reserved7;
+OCTETSTRING_template field_reserved8;
+};
+
+void WorkingSetMaintenanceReq_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_vtfunction = ANY_VALUE;
+single_value->field_bitMask = ANY_VALUE;
+single_value->field_versionNumber = ANY_VALUE;
+single_value->field_reserved4 = ANY_VALUE;
+single_value->field_reserved5 = ANY_VALUE;
+single_value->field_reserved6 = ANY_VALUE;
+single_value->field_reserved7 = ANY_VALUE;
+single_value->field_reserved8 = ANY_VALUE;
+}
+}
+}
+
+void WorkingSetMaintenanceReq_template::copy_value(const WorkingSetMaintenanceReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.bitMask().is_bound()) {
+  single_value->field_bitMask = other_value.bitMask();
+} else {
+  single_value->field_bitMask.clean_up();
+}
+if (other_value.versionNumber().is_bound()) {
+  single_value->field_versionNumber = other_value.versionNumber();
+} else {
+  single_value->field_versionNumber.clean_up();
+}
+if (other_value.reserved4().is_bound()) {
+  single_value->field_reserved4 = other_value.reserved4();
+} else {
+  single_value->field_reserved4.clean_up();
+}
+if (other_value.reserved5().is_bound()) {
+  single_value->field_reserved5 = other_value.reserved5();
+} else {
+  single_value->field_reserved5.clean_up();
+}
+if (other_value.reserved6().is_bound()) {
+  single_value->field_reserved6 = other_value.reserved6();
+} else {
+  single_value->field_reserved6.clean_up();
+}
+if (other_value.reserved7().is_bound()) {
+  single_value->field_reserved7 = other_value.reserved7();
+} else {
+  single_value->field_reserved7.clean_up();
+}
+if (other_value.reserved8().is_bound()) {
+  single_value->field_reserved8 = other_value.reserved8();
+} else {
+  single_value->field_reserved8.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void WorkingSetMaintenanceReq_template::copy_template(const WorkingSetMaintenanceReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.bitMask().get_selection()) {
+single_value->field_bitMask = other_value.bitMask();
+} else {
+single_value->field_bitMask.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.versionNumber().get_selection()) {
+single_value->field_versionNumber = other_value.versionNumber();
+} else {
+single_value->field_versionNumber.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved4().get_selection()) {
+single_value->field_reserved4 = other_value.reserved4();
+} else {
+single_value->field_reserved4.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved5().get_selection()) {
+single_value->field_reserved5 = other_value.reserved5();
+} else {
+single_value->field_reserved5.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved6().get_selection()) {
+single_value->field_reserved6 = other_value.reserved6();
+} else {
+single_value->field_reserved6.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved7().get_selection()) {
+single_value->field_reserved7 = other_value.reserved7();
+} else {
+single_value->field_reserved7.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved8().get_selection()) {
+single_value->field_reserved8 = other_value.reserved8();
+} else {
+single_value->field_reserved8.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new WorkingSetMaintenanceReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.WorkingSetMaintenanceReq.");
+break;
+}
+set_selection(other_value);
+}
+
+WorkingSetMaintenanceReq_template::WorkingSetMaintenanceReq_template()
+{
+}
+
+WorkingSetMaintenanceReq_template::WorkingSetMaintenanceReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+WorkingSetMaintenanceReq_template::WorkingSetMaintenanceReq_template(const WorkingSetMaintenanceReq& other_value)
+{
+copy_value(other_value);
+}
+
+WorkingSetMaintenanceReq_template::WorkingSetMaintenanceReq_template(const OPTIONAL<WorkingSetMaintenanceReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const WorkingSetMaintenanceReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.WorkingSetMaintenanceReq from an unbound optional field.");
+}
+}
+
+WorkingSetMaintenanceReq_template::WorkingSetMaintenanceReq_template(const WorkingSetMaintenanceReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+WorkingSetMaintenanceReq_template::~WorkingSetMaintenanceReq_template()
+{
+clean_up();
+}
+
+WorkingSetMaintenanceReq_template& WorkingSetMaintenanceReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+WorkingSetMaintenanceReq_template& WorkingSetMaintenanceReq_template::operator=(const WorkingSetMaintenanceReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+WorkingSetMaintenanceReq_template& WorkingSetMaintenanceReq_template::operator=(const OPTIONAL<WorkingSetMaintenanceReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const WorkingSetMaintenanceReq&)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 @IsobusVTMessageTypes.WorkingSetMaintenanceReq.");
+}
+return *this;
+}
+
+WorkingSetMaintenanceReq_template& WorkingSetMaintenanceReq_template::operator=(const WorkingSetMaintenanceReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean WorkingSetMaintenanceReq_template::match(const WorkingSetMaintenanceReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.bitMask().is_bound()) return FALSE;
+if(!single_value->field_bitMask.match(other_value.bitMask(), legacy))return FALSE;
+if(!other_value.versionNumber().is_bound()) return FALSE;
+if(!single_value->field_versionNumber.match(other_value.versionNumber(), legacy))return FALSE;
+if(!other_value.reserved4().is_bound()) return FALSE;
+if(!single_value->field_reserved4.match(other_value.reserved4(), legacy))return FALSE;
+if(!other_value.reserved5().is_bound()) return FALSE;
+if(!single_value->field_reserved5.match(other_value.reserved5(), legacy))return FALSE;
+if(!other_value.reserved6().is_bound()) return FALSE;
+if(!single_value->field_reserved6.match(other_value.reserved6(), legacy))return FALSE;
+if(!other_value.reserved7().is_bound()) return FALSE;
+if(!single_value->field_reserved7.match(other_value.reserved7(), legacy))return FALSE;
+if(!other_value.reserved8().is_bound()) return FALSE;
+if(!single_value->field_reserved8.match(other_value.reserved8(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.WorkingSetMaintenanceReq.");
+}
+return FALSE;
+}
+
+boolean WorkingSetMaintenanceReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_bitMask.is_bound()
+
+ ||single_value->field_versionNumber.is_bound()
+
+ ||single_value->field_reserved4.is_bound()
+
+ ||single_value->field_reserved5.is_bound()
+
+ ||single_value->field_reserved6.is_bound()
+
+ ||single_value->field_reserved7.is_bound()
+
+ ||single_value->field_reserved8.is_bound()
+;
+}
+
+boolean WorkingSetMaintenanceReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_bitMask.is_value()
+ &&single_value->field_versionNumber.is_value()
+ &&single_value->field_reserved4.is_value()
+ &&single_value->field_reserved5.is_value()
+ &&single_value->field_reserved6.is_value()
+ &&single_value->field_reserved7.is_value()
+ &&single_value->field_reserved8.is_value();
+}
+
+void WorkingSetMaintenanceReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+WorkingSetMaintenanceReq WorkingSetMaintenanceReq_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 @IsobusVTMessageTypes.WorkingSetMaintenanceReq.");
+WorkingSetMaintenanceReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_bitMask.is_bound()) {
+ret_val.bitMask() = single_value->field_bitMask.valueof();
+}
+if (single_value->field_versionNumber.is_bound()) {
+ret_val.versionNumber() = single_value->field_versionNumber.valueof();
+}
+if (single_value->field_reserved4.is_bound()) {
+ret_val.reserved4() = single_value->field_reserved4.valueof();
+}
+if (single_value->field_reserved5.is_bound()) {
+ret_val.reserved5() = single_value->field_reserved5.valueof();
+}
+if (single_value->field_reserved6.is_bound()) {
+ret_val.reserved6() = single_value->field_reserved6.valueof();
+}
+if (single_value->field_reserved7.is_bound()) {
+ret_val.reserved7() = single_value->field_reserved7.valueof();
+}
+if (single_value->field_reserved8.is_bound()) {
+ret_val.reserved8() = single_value->field_reserved8.valueof();
+}
+return ret_val;
+}
+
+void WorkingSetMaintenanceReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.WorkingSetMaintenanceReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new WorkingSetMaintenanceReq_template[list_length];
+}
+
+WorkingSetMaintenanceReq_template& WorkingSetMaintenanceReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.WorkingSetMaintenanceReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.WorkingSetMaintenanceReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& WorkingSetMaintenanceReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& WorkingSetMaintenanceReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.WorkingSetMaintenanceReq.");
+return single_value->field_vtfunction;
+}
+
+WorkingSetMaintenanceBitMask_template& WorkingSetMaintenanceReq_template::bitMask()
+{
+set_specific();
+return single_value->field_bitMask;
+}
+
+const WorkingSetMaintenanceBitMask_template& WorkingSetMaintenanceReq_template::bitMask() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field bitMask of a non-specific template of type @IsobusVTMessageTypes.WorkingSetMaintenanceReq.");
+return single_value->field_bitMask;
+}
+
+e__WorkingSetMaintenanceVersionNumber_template& WorkingSetMaintenanceReq_template::versionNumber()
+{
+set_specific();
+return single_value->field_versionNumber;
+}
+
+const e__WorkingSetMaintenanceVersionNumber_template& WorkingSetMaintenanceReq_template::versionNumber() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field versionNumber of a non-specific template of type @IsobusVTMessageTypes.WorkingSetMaintenanceReq.");
+return single_value->field_versionNumber;
+}
+
+OCTETSTRING_template& WorkingSetMaintenanceReq_template::reserved4()
+{
+set_specific();
+return single_value->field_reserved4;
+}
+
+const OCTETSTRING_template& WorkingSetMaintenanceReq_template::reserved4() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved4 of a non-specific template of type @IsobusVTMessageTypes.WorkingSetMaintenanceReq.");
+return single_value->field_reserved4;
+}
+
+OCTETSTRING_template& WorkingSetMaintenanceReq_template::reserved5()
+{
+set_specific();
+return single_value->field_reserved5;
+}
+
+const OCTETSTRING_template& WorkingSetMaintenanceReq_template::reserved5() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved5 of a non-specific template of type @IsobusVTMessageTypes.WorkingSetMaintenanceReq.");
+return single_value->field_reserved5;
+}
+
+OCTETSTRING_template& WorkingSetMaintenanceReq_template::reserved6()
+{
+set_specific();
+return single_value->field_reserved6;
+}
+
+const OCTETSTRING_template& WorkingSetMaintenanceReq_template::reserved6() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved6 of a non-specific template of type @IsobusVTMessageTypes.WorkingSetMaintenanceReq.");
+return single_value->field_reserved6;
+}
+
+OCTETSTRING_template& WorkingSetMaintenanceReq_template::reserved7()
+{
+set_specific();
+return single_value->field_reserved7;
+}
+
+const OCTETSTRING_template& WorkingSetMaintenanceReq_template::reserved7() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved7 of a non-specific template of type @IsobusVTMessageTypes.WorkingSetMaintenanceReq.");
+return single_value->field_reserved7;
+}
+
+OCTETSTRING_template& WorkingSetMaintenanceReq_template::reserved8()
+{
+set_specific();
+return single_value->field_reserved8;
+}
+
+const OCTETSTRING_template& WorkingSetMaintenanceReq_template::reserved8() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved8 of a non-specific template of type @IsobusVTMessageTypes.WorkingSetMaintenanceReq.");
+return single_value->field_reserved8;
+}
+
+int WorkingSetMaintenanceReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.WorkingSetMaintenanceReq which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 8;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @IsobusVTMessageTypes.WorkingSetMaintenanceReq 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 @IsobusVTMessageTypes.WorkingSetMaintenanceReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.WorkingSetMaintenanceReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.WorkingSetMaintenanceReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.WorkingSetMaintenanceReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.WorkingSetMaintenanceReq.");
+  }
+  return 0;
+}
+
+void WorkingSetMaintenanceReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", bitMask := ");
+single_value->field_bitMask.log();
+TTCN_Logger::log_event_str(", versionNumber := ");
+single_value->field_versionNumber.log();
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log();
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log();
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log();
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log();
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void WorkingSetMaintenanceReq_template::log_match(const WorkingSetMaintenanceReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_bitMask.match(match_value.bitMask(), legacy)){
+TTCN_Logger::log_logmatch_info(".bitMask");
+single_value->field_bitMask.log_match(match_value.bitMask(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_versionNumber.match(match_value.versionNumber(), legacy)){
+TTCN_Logger::log_logmatch_info(".versionNumber");
+single_value->field_versionNumber.log_match(match_value.versionNumber(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved4.match(match_value.reserved4(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved4");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved5.match(match_value.reserved5(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved5");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved6.match(match_value.reserved6(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved6");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved7.match(match_value.reserved7(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved7");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved8.match(match_value.reserved8(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved8");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", bitMask := ");
+single_value->field_bitMask.log_match(match_value.bitMask(), legacy);
+TTCN_Logger::log_event_str(", versionNumber := ");
+single_value->field_versionNumber.log_match(match_value.versionNumber(), legacy);
+TTCN_Logger::log_event_str(", reserved4 := ");
+single_value->field_reserved4.log_match(match_value.reserved4(), legacy);
+TTCN_Logger::log_event_str(", reserved5 := ");
+single_value->field_reserved5.log_match(match_value.reserved5(), legacy);
+TTCN_Logger::log_event_str(", reserved6 := ");
+single_value->field_reserved6.log_match(match_value.reserved6(), legacy);
+TTCN_Logger::log_event_str(", reserved7 := ");
+single_value->field_reserved7.log_match(match_value.reserved7(), legacy);
+TTCN_Logger::log_event_str(", reserved8 := ");
+single_value->field_reserved8.log_match(match_value.reserved8(), 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 WorkingSetMaintenanceReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_bitMask.encode_text(text_buf);
+single_value->field_versionNumber.encode_text(text_buf);
+single_value->field_reserved4.encode_text(text_buf);
+single_value->field_reserved5.encode_text(text_buf);
+single_value->field_reserved6.encode_text(text_buf);
+single_value->field_reserved7.encode_text(text_buf);
+single_value->field_reserved8.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 @IsobusVTMessageTypes.WorkingSetMaintenanceReq.");
+}
+}
+
+void WorkingSetMaintenanceReq_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_vtfunction.decode_text(text_buf);
+single_value->field_bitMask.decode_text(text_buf);
+single_value->field_versionNumber.decode_text(text_buf);
+single_value->field_reserved4.decode_text(text_buf);
+single_value->field_reserved5.decode_text(text_buf);
+single_value->field_reserved6.decode_text(text_buf);
+single_value->field_reserved7.decode_text(text_buf);
+single_value->field_reserved8.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 WorkingSetMaintenanceReq_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 @IsobusVTMessageTypes.WorkingSetMaintenanceReq.");
+}
+}
+
+void WorkingSetMaintenanceReq_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: {
+    WorkingSetMaintenanceReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (8<param.get_size()) {
+      param.error("record template of type @IsobusVTMessageTypes.WorkingSetMaintenanceReq has 8 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) bitMask().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) versionNumber().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) reserved4().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) reserved5().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) reserved6().set_param(*param.get_elem(5));
+    if (param.get_size()>6 && param.get_elem(6)->get_type()!=Module_Param::MP_NotUsed) reserved7().set_param(*param.get_elem(6));
+    if (param.get_size()>7 && param.get_elem(7)->get_type()!=Module_Param::MP_NotUsed) reserved8().set_param(*param.get_elem(7));
+    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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "bitMask")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          bitMask().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(), "versionNumber")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          versionNumber().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(), "reserved4")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved4().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(), "reserved5")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved5().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(), "reserved6")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved6().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(), "reserved7")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved7().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(), "reserved8")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved8().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 @IsobusVTMessageTypes.WorkingSetMaintenanceReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.WorkingSetMaintenanceReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void WorkingSetMaintenanceReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.WorkingSetMaintenanceReq");
+single_value->field_bitMask.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.WorkingSetMaintenanceReq");
+single_value->field_versionNumber.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.WorkingSetMaintenanceReq");
+single_value->field_reserved4.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.WorkingSetMaintenanceReq");
+single_value->field_reserved5.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.WorkingSetMaintenanceReq");
+single_value->field_reserved6.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.WorkingSetMaintenanceReq");
+single_value->field_reserved7.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.WorkingSetMaintenanceReq");
+single_value->field_reserved8.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.WorkingSetMaintenanceReq");
+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 : "@IsobusVTMessageTypes.WorkingSetMaintenanceReq");
+}
+
+boolean WorkingSetMaintenanceReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean WorkingSetMaintenanceReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+e__BusyCodes::e__BusyCodes()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+e__BusyCodes::e__BusyCodes(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @IsobusVTMessageTypes.e_BusyCodes with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+e__BusyCodes::e__BusyCodes(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+e__BusyCodes::e__BusyCodes(const e__BusyCodes& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @IsobusVTMessageTypes.e_BusyCodes.");
+enum_value = other_value.enum_value;
+}
+
+e__BusyCodes& e__BusyCodes::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @IsobusVTMessageTypes.e_BusyCodes.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+e__BusyCodes& e__BusyCodes::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+e__BusyCodes& e__BusyCodes::operator=(const e__BusyCodes& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusVTMessageTypes.e_BusyCodes.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean e__BusyCodes::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_BusyCodes.");
+return enum_value == other_value;
+}
+
+boolean e__BusyCodes::operator==(const e__BusyCodes& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_BusyCodes.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_BusyCodes.");
+return enum_value == other_value.enum_value;
+}
+
+boolean e__BusyCodes::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_BusyCodes.");
+return enum_value < other_value;
+}
+
+boolean e__BusyCodes::operator<(const e__BusyCodes& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_BusyCodes.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_BusyCodes.");
+return enum_value < other_value.enum_value;
+}
+
+boolean e__BusyCodes::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_BusyCodes.");
+return enum_value > other_value;
+}
+
+boolean e__BusyCodes::operator>(const e__BusyCodes& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_BusyCodes.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @IsobusVTMessageTypes.e_BusyCodes.");
+return enum_value > other_value.enum_value;
+}
+
+const char *e__BusyCodes::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case vtIsBusyUpdatingVisibleMask: return "vtIsBusyUpdatingVisibleMask";
+case vtIsBusySavingDataToNonVolatileMemory: return "vtIsBusySavingDataToNonVolatileMemory";
+case vtIsBusyExecutingACommand: return "vtIsBusyExecutingACommand";
+case vtIsBusyExecutingAMacro: return "vtIsBusyExecutingAMacro";
+case vtIsBusyParsingAnObjectPool: return "vtIsBusyParsingAnObjectPool";
+case reserved: return "reserved";
+case auxiliaryControlsLearnModeActive: return "auxiliaryControlsLearnModeActive";
+case vtIsOutOfMemory: return "vtIsOutOfMemory";
+default: return "<unknown>";
+}
+}
+
+e__BusyCodes::enum_type e__BusyCodes::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "vtIsBusyUpdatingVisibleMask")) return vtIsBusyUpdatingVisibleMask;
+else if (!strcmp(str_par, "vtIsBusySavingDataToNonVolatileMemory")) return vtIsBusySavingDataToNonVolatileMemory;
+else if (!strcmp(str_par, "vtIsBusyExecutingACommand")) return vtIsBusyExecutingACommand;
+else if (!strcmp(str_par, "vtIsBusyExecutingAMacro")) return vtIsBusyExecutingAMacro;
+else if (!strcmp(str_par, "vtIsBusyParsingAnObjectPool")) return vtIsBusyParsingAnObjectPool;
+else if (!strcmp(str_par, "reserved")) return reserved;
+else if (!strcmp(str_par, "auxiliaryControlsLearnModeActive")) return auxiliaryControlsLearnModeActive;
+else if (!strcmp(str_par, "vtIsOutOfMemory")) return vtIsOutOfMemory;
+else return UNKNOWN_VALUE;
+}
+
+boolean e__BusyCodes::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 0:
+case 1:
+case 2:
+case 3:
+case 4:
+case 5:
+case 6:
+case 7:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int e__BusyCodes::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusVTMessageTypes.e_BusyCodes.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int e__BusyCodes::enum2int(const e__BusyCodes& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @IsobusVTMessageTypes.e_BusyCodes.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void e__BusyCodes::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @IsobusVTMessageTypes.e_BusyCodes.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+e__BusyCodes::operator e__BusyCodes::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @IsobusVTMessageTypes.e_BusyCodes.");
+return enum_value;
+}
+
+void e__BusyCodes::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void e__BusyCodes::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@IsobusVTMessageTypes.e_BusyCodes");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @IsobusVTMessageTypes.e_BusyCodes.");
+  }
+}
+
+void e__BusyCodes::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @IsobusVTMessageTypes.e_BusyCodes.");
+text_buf.push_int(enum_value);
+}
+
+void e__BusyCodes::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @IsobusVTMessageTypes.e_BusyCodes.", enum_value);
+}
+
+void e__BusyCodes::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void e__BusyCodes::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int e__BusyCodes::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*)
+{
+  int decoded_value = 0;
+  int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 4, no_err);
+  if (decoded_length < 0) return decoded_length;
+  if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value;
+  else {
+    if(no_err){
+     return -1;
+    } else {
+    TTCN_EncDec_ErrorContext::error
+      (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name);
+    enum_value = UNKNOWN_VALUE;
+    }
+  }
+  return decoded_length;
+}
+
+int e__BusyCodes::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const
+{
+  return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 4);
+}
+
+void e__BusyCodes_template::copy_template(const e__BusyCodes_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new e__BusyCodes_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_BusyCodes.");
+}
+}
+
+e__BusyCodes_template::e__BusyCodes_template()
+{
+}
+
+e__BusyCodes_template::e__BusyCodes_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+e__BusyCodes_template::e__BusyCodes_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!e__BusyCodes::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @IsobusVTMessageTypes.e_BusyCodes with unknown numeric value %d.", other_value);
+single_value = (e__BusyCodes::enum_type)other_value;
+}
+
+e__BusyCodes_template::e__BusyCodes_template(e__BusyCodes::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+e__BusyCodes_template::e__BusyCodes_template(const e__BusyCodes& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == e__BusyCodes::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @IsobusVTMessageTypes.e_BusyCodes.");
+single_value = other_value.enum_value;
+}
+
+e__BusyCodes_template::e__BusyCodes_template(const OPTIONAL<e__BusyCodes>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__BusyCodes::enum_type)(const e__BusyCodes&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @IsobusVTMessageTypes.e_BusyCodes from an unbound optional field.");
+}
+}
+
+e__BusyCodes_template::e__BusyCodes_template(const e__BusyCodes_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+e__BusyCodes_template::~e__BusyCodes_template()
+{
+clean_up();
+}
+
+boolean e__BusyCodes_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean e__BusyCodes_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != e__BusyCodes::UNBOUND_VALUE;
+}
+
+void e__BusyCodes_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+e__BusyCodes_template& e__BusyCodes_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+e__BusyCodes_template& e__BusyCodes_template::operator=(int other_value)
+{
+if (!e__BusyCodes::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @IsobusVTMessageTypes.e_BusyCodes.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (e__BusyCodes::enum_type)other_value;
+return *this;
+}
+
+e__BusyCodes_template& e__BusyCodes_template::operator=(e__BusyCodes::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+e__BusyCodes_template& e__BusyCodes_template::operator=(const e__BusyCodes& other_value)
+{
+if (other_value.enum_value == e__BusyCodes::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @IsobusVTMessageTypes.e_BusyCodes to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+e__BusyCodes_template& e__BusyCodes_template::operator=(const OPTIONAL<e__BusyCodes>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__BusyCodes::enum_type)(const e__BusyCodes&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @IsobusVTMessageTypes.e_BusyCodes.");
+}
+return *this;
+}
+
+e__BusyCodes_template& e__BusyCodes_template::operator=(const e__BusyCodes_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean e__BusyCodes_template::match(e__BusyCodes::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_BusyCodes.");
+}
+return FALSE;
+}
+
+boolean e__BusyCodes_template::match(const e__BusyCodes& other_value, boolean) const
+{
+if (other_value.enum_value == e__BusyCodes::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @IsobusVTMessageTypes.e_BusyCodes with an unbound value.");
+return match(other_value.enum_value);
+}
+
+e__BusyCodes::enum_type e__BusyCodes_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @IsobusVTMessageTypes.e_BusyCodes.");
+return single_value;
+}
+
+void e__BusyCodes_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @IsobusVTMessageTypes.e_BusyCodes.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new e__BusyCodes_template[list_length];
+}
+
+e__BusyCodes_template& e__BusyCodes_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @IsobusVTMessageTypes.e_BusyCodes.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @IsobusVTMessageTypes.e_BusyCodes.");
+return value_list.list_value[list_index];
+}
+
+void e__BusyCodes_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(e__BusyCodes::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void e__BusyCodes_template::log_match(const e__BusyCodes& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void e__BusyCodes_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @IsobusVTMessageTypes.e_BusyCodes.");
+}
+}
+
+void e__BusyCodes_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (e__BusyCodes::enum_type)text_buf.pull_int().get_val();
+if (!e__BusyCodes::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @IsobusVTMessageTypes.e_BusyCodes.", single_value);
+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 e__BusyCodes_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @IsobusVTMessageTypes.e_BusyCodes.");
+}
+}
+
+boolean e__BusyCodes_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean e__BusyCodes_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 e__BusyCodes_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    e__BusyCodes_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    e__BusyCodes::enum_type enum_val = e__BusyCodes::str_to_enum(m_p->get_enumerated());
+    if (!e__BusyCodes::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @IsobusVTMessageTypes.e_BusyCodes.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@IsobusVTMessageTypes.e_BusyCodes");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void e__BusyCodes_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@IsobusVTMessageTypes.e_BusyCodes");
+}
+
+VTStatusReq::VTStatusReq()
+{
+}
+
+VTStatusReq::VTStatusReq(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_sourceAddressOfActiveWorkingSetMaster,
+    const OCTETSTRING& par_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet,
+    const OCTETSTRING& par_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet,
+    const e__BusyCodes& par_vtBusyCodes,
+    const OCTETSTRING& par_vtFunctionCode)
+  :   field_vtfunction(par_vtfunction),
+  field_sourceAddressOfActiveWorkingSetMaster(par_sourceAddressOfActiveWorkingSetMaster),
+  field_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet(par_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet),
+  field_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet(par_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet),
+  field_vtBusyCodes(par_vtBusyCodes),
+  field_vtFunctionCode(par_vtFunctionCode)
+{
+}
+
+VTStatusReq::VTStatusReq(const VTStatusReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @IsobusVTMessageTypes.VTStatusReq.");
+if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+else field_vtfunction.clean_up();
+if (other_value.sourceAddressOfActiveWorkingSetMaster().is_bound()) field_sourceAddressOfActiveWorkingSetMaster = other_value.sourceAddressOfActiveWorkingSetMaster();
+else field_sourceAddressOfActiveWorkingSetMaster.clean_up();
+if (other_value.objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet().is_bound()) field_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet = other_value.objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet();
+else field_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet.clean_up();
+if (other_value.objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet().is_bound()) field_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet = other_value.objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet();
+else field_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet.clean_up();
+if (other_value.vtBusyCodes().is_bound()) field_vtBusyCodes = other_value.vtBusyCodes();
+else field_vtBusyCodes.clean_up();
+if (other_value.vtFunctionCode().is_bound()) field_vtFunctionCode = other_value.vtFunctionCode();
+else field_vtFunctionCode.clean_up();
+}
+
+void VTStatusReq::clean_up()
+{
+field_vtfunction.clean_up();
+field_sourceAddressOfActiveWorkingSetMaster.clean_up();
+field_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet.clean_up();
+field_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet.clean_up();
+field_vtBusyCodes.clean_up();
+field_vtFunctionCode.clean_up();
+}
+
+const TTCN_Typedescriptor_t* VTStatusReq::get_descriptor() const { return &VTStatusReq_descr_; }
+VTStatusReq& VTStatusReq::operator=(const VTStatusReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @IsobusVTMessageTypes.VTStatusReq.");
+  if (other_value.vtfunction().is_bound()) field_vtfunction = other_value.vtfunction();
+  else field_vtfunction.clean_up();
+  if (other_value.sourceAddressOfActiveWorkingSetMaster().is_bound()) field_sourceAddressOfActiveWorkingSetMaster = other_value.sourceAddressOfActiveWorkingSetMaster();
+  else field_sourceAddressOfActiveWorkingSetMaster.clean_up();
+  if (other_value.objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet().is_bound()) field_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet = other_value.objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet();
+  else field_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet.clean_up();
+  if (other_value.objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet().is_bound()) field_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet = other_value.objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet();
+  else field_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet.clean_up();
+  if (other_value.vtBusyCodes().is_bound()) field_vtBusyCodes = other_value.vtBusyCodes();
+  else field_vtBusyCodes.clean_up();
+  if (other_value.vtFunctionCode().is_bound()) field_vtFunctionCode = other_value.vtFunctionCode();
+  else field_vtFunctionCode.clean_up();
+}
+return *this;
+}
+
+boolean VTStatusReq::operator==(const VTStatusReq& other_value) const
+{
+return field_vtfunction==other_value.field_vtfunction
+  && field_sourceAddressOfActiveWorkingSetMaster==other_value.field_sourceAddressOfActiveWorkingSetMaster
+  && field_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet==other_value.field_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet
+  && field_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet==other_value.field_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet
+  && field_vtBusyCodes==other_value.field_vtBusyCodes
+  && field_vtFunctionCode==other_value.field_vtFunctionCode;
+}
+
+boolean VTStatusReq::is_bound() const
+{
+return (field_vtfunction.is_bound())
+  || (field_sourceAddressOfActiveWorkingSetMaster.is_bound())
+  || (field_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet.is_bound())
+  || (field_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet.is_bound())
+  || (field_vtBusyCodes.is_bound())
+  || (field_vtFunctionCode.is_bound());
+}
+boolean VTStatusReq::is_value() const
+{
+return field_vtfunction.is_value()
+  && field_sourceAddressOfActiveWorkingSetMaster.is_value()
+  && field_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet.is_value()
+  && field_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet.is_value()
+  && field_vtBusyCodes.is_value()
+  && field_vtFunctionCode.is_value();
+}
+void VTStatusReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ vtfunction := ");
+field_vtfunction.log();
+TTCN_Logger::log_event_str(", sourceAddressOfActiveWorkingSetMaster := ");
+field_sourceAddressOfActiveWorkingSetMaster.log();
+TTCN_Logger::log_event_str(", objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet := ");
+field_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet.log();
+TTCN_Logger::log_event_str(", objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet := ");
+field_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet.log();
+TTCN_Logger::log_event_str(", vtBusyCodes := ");
+field_vtBusyCodes.log();
+TTCN_Logger::log_event_str(", vtFunctionCode := ");
+field_vtFunctionCode.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void VTStatusReq::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 @IsobusVTMessageTypes.VTStatusReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) sourceAddressOfActiveWorkingSetMaster().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) vtBusyCodes().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) vtFunctionCode().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "sourceAddressOfActiveWorkingSetMaster")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          sourceAddressOfActiveWorkingSetMaster().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(), "objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet().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(), "objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet().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(), "vtBusyCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtBusyCodes().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(), "vtFunctionCode")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtFunctionCode().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 @IsobusVTMessageTypes.VTStatusReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@IsobusVTMessageTypes.VTStatusReq");
+  }
+}
+
+void VTStatusReq::set_implicit_omit()
+{
+if (vtfunction().is_bound()) vtfunction().set_implicit_omit();
+if (sourceAddressOfActiveWorkingSetMaster().is_bound()) sourceAddressOfActiveWorkingSetMaster().set_implicit_omit();
+if (objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet().is_bound()) objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet().set_implicit_omit();
+if (objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet().is_bound()) objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet().set_implicit_omit();
+if (vtBusyCodes().is_bound()) vtBusyCodes().set_implicit_omit();
+if (vtFunctionCode().is_bound()) vtFunctionCode().set_implicit_omit();
+}
+
+void VTStatusReq::encode_text(Text_Buf& text_buf) const
+{
+field_vtfunction.encode_text(text_buf);
+field_sourceAddressOfActiveWorkingSetMaster.encode_text(text_buf);
+field_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet.encode_text(text_buf);
+field_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet.encode_text(text_buf);
+field_vtBusyCodes.encode_text(text_buf);
+field_vtFunctionCode.encode_text(text_buf);
+}
+
+void VTStatusReq::decode_text(Text_Buf& text_buf)
+{
+field_vtfunction.decode_text(text_buf);
+field_sourceAddressOfActiveWorkingSetMaster.decode_text(text_buf);
+field_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet.decode_text(text_buf);
+field_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet.decode_text(text_buf);
+field_vtBusyCodes.decode_text(text_buf);
+field_vtFunctionCode.decode_text(text_buf);
+}
+
+void VTStatusReq::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void VTStatusReq::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int VTStatusReq::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, VTfunction_descr_.raw->forceomit);
+  decoded_field_length = field_vtfunction.RAW_decode(VTfunction_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::OCT1_descr_.raw->forceomit);
+  decoded_field_length = field_sourceAddressOfActiveWorkingSetMaster.RAW_decode(General__Types::OCT1_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::OCT2_descr_.raw->forceomit);
+  decoded_field_length = field_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet.RAW_decode(General__Types::OCT2_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::OCT2_descr_.raw->forceomit);
+  decoded_field_length = field_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet.RAW_decode(General__Types::OCT2_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, e__BusyCodes_descr_.raw->forceomit);
+  decoded_field_length = field_vtBusyCodes.RAW_decode(e__BusyCodes_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::OCT1_descr_.raw->forceomit);
+  decoded_field_length = field_vtFunctionCode.RAW_decode(General__Types::OCT1_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int VTStatusReq::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, VTfunction_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, General__Types::OCT1_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, General__Types::OCT2_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, General__Types::OCT2_descr_.raw);
+  myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 4, e__BusyCodes_descr_.raw);
+  myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 5, General__Types::OCT1_descr_.raw);
+  encoded_length += field_vtfunction.RAW_encode(VTfunction_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_sourceAddressOfActiveWorkingSetMaster.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet.RAW_encode(General__Types::OCT2_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet.RAW_encode(General__Types::OCT2_descr_, *myleaf.body.node.nodes[3]);
+  encoded_length += field_vtBusyCodes.RAW_encode(e__BusyCodes_descr_, *myleaf.body.node.nodes[4]);
+  encoded_length += field_vtFunctionCode.RAW_encode(General__Types::OCT1_descr_, *myleaf.body.node.nodes[5]);
+  return myleaf.length = encoded_length;
+}
+
+struct VTStatusReq_template::single_value_struct {
+INTEGER_template field_vtfunction;
+OCTETSTRING_template field_sourceAddressOfActiveWorkingSetMaster;
+OCTETSTRING_template field_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet;
+OCTETSTRING_template field_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet;
+e__BusyCodes_template field_vtBusyCodes;
+OCTETSTRING_template field_vtFunctionCode;
+};
+
+void VTStatusReq_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_vtfunction = ANY_VALUE;
+single_value->field_sourceAddressOfActiveWorkingSetMaster = ANY_VALUE;
+single_value->field_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet = ANY_VALUE;
+single_value->field_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet = ANY_VALUE;
+single_value->field_vtBusyCodes = ANY_VALUE;
+single_value->field_vtFunctionCode = ANY_VALUE;
+}
+}
+}
+
+void VTStatusReq_template::copy_value(const VTStatusReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.vtfunction().is_bound()) {
+  single_value->field_vtfunction = other_value.vtfunction();
+} else {
+  single_value->field_vtfunction.clean_up();
+}
+if (other_value.sourceAddressOfActiveWorkingSetMaster().is_bound()) {
+  single_value->field_sourceAddressOfActiveWorkingSetMaster = other_value.sourceAddressOfActiveWorkingSetMaster();
+} else {
+  single_value->field_sourceAddressOfActiveWorkingSetMaster.clean_up();
+}
+if (other_value.objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet().is_bound()) {
+  single_value->field_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet = other_value.objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet();
+} else {
+  single_value->field_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet.clean_up();
+}
+if (other_value.objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet().is_bound()) {
+  single_value->field_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet = other_value.objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet();
+} else {
+  single_value->field_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet.clean_up();
+}
+if (other_value.vtBusyCodes().is_bound()) {
+  single_value->field_vtBusyCodes = other_value.vtBusyCodes();
+} else {
+  single_value->field_vtBusyCodes.clean_up();
+}
+if (other_value.vtFunctionCode().is_bound()) {
+  single_value->field_vtFunctionCode = other_value.vtFunctionCode();
+} else {
+  single_value->field_vtFunctionCode.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void VTStatusReq_template::copy_template(const VTStatusReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.vtfunction().get_selection()) {
+single_value->field_vtfunction = other_value.vtfunction();
+} else {
+single_value->field_vtfunction.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.sourceAddressOfActiveWorkingSetMaster().get_selection()) {
+single_value->field_sourceAddressOfActiveWorkingSetMaster = other_value.sourceAddressOfActiveWorkingSetMaster();
+} else {
+single_value->field_sourceAddressOfActiveWorkingSetMaster.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet().get_selection()) {
+single_value->field_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet = other_value.objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet();
+} else {
+single_value->field_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet().get_selection()) {
+single_value->field_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet = other_value.objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet();
+} else {
+single_value->field_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.vtBusyCodes().get_selection()) {
+single_value->field_vtBusyCodes = other_value.vtBusyCodes();
+} else {
+single_value->field_vtBusyCodes.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.vtFunctionCode().get_selection()) {
+single_value->field_vtFunctionCode = other_value.vtFunctionCode();
+} else {
+single_value->field_vtFunctionCode.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new VTStatusReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTStatusReq.");
+break;
+}
+set_selection(other_value);
+}
+
+VTStatusReq_template::VTStatusReq_template()
+{
+}
+
+VTStatusReq_template::VTStatusReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+VTStatusReq_template::VTStatusReq_template(const VTStatusReq& other_value)
+{
+copy_value(other_value);
+}
+
+VTStatusReq_template::VTStatusReq_template(const OPTIONAL<VTStatusReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTStatusReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @IsobusVTMessageTypes.VTStatusReq from an unbound optional field.");
+}
+}
+
+VTStatusReq_template::VTStatusReq_template(const VTStatusReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+VTStatusReq_template::~VTStatusReq_template()
+{
+clean_up();
+}
+
+VTStatusReq_template& VTStatusReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+VTStatusReq_template& VTStatusReq_template::operator=(const VTStatusReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+VTStatusReq_template& VTStatusReq_template::operator=(const OPTIONAL<VTStatusReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VTStatusReq&)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 @IsobusVTMessageTypes.VTStatusReq.");
+}
+return *this;
+}
+
+VTStatusReq_template& VTStatusReq_template::operator=(const VTStatusReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean VTStatusReq_template::match(const VTStatusReq& 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.vtfunction().is_bound()) return FALSE;
+if(!single_value->field_vtfunction.match(other_value.vtfunction(), legacy))return FALSE;
+if(!other_value.sourceAddressOfActiveWorkingSetMaster().is_bound()) return FALSE;
+if(!single_value->field_sourceAddressOfActiveWorkingSetMaster.match(other_value.sourceAddressOfActiveWorkingSetMaster(), legacy))return FALSE;
+if(!other_value.objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet().is_bound()) return FALSE;
+if(!single_value->field_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet.match(other_value.objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet(), legacy))return FALSE;
+if(!other_value.objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet().is_bound()) return FALSE;
+if(!single_value->field_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet.match(other_value.objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet(), legacy))return FALSE;
+if(!other_value.vtBusyCodes().is_bound()) return FALSE;
+if(!single_value->field_vtBusyCodes.match(other_value.vtBusyCodes(), legacy))return FALSE;
+if(!other_value.vtFunctionCode().is_bound()) return FALSE;
+if(!single_value->field_vtFunctionCode.match(other_value.vtFunctionCode(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTStatusReq.");
+}
+return FALSE;
+}
+
+boolean VTStatusReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_vtfunction.is_bound()
+
+ ||single_value->field_sourceAddressOfActiveWorkingSetMaster.is_bound()
+
+ ||single_value->field_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet.is_bound()
+
+ ||single_value->field_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet.is_bound()
+
+ ||single_value->field_vtBusyCodes.is_bound()
+
+ ||single_value->field_vtFunctionCode.is_bound()
+;
+}
+
+boolean VTStatusReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_vtfunction.is_value()
+ &&single_value->field_sourceAddressOfActiveWorkingSetMaster.is_value()
+ &&single_value->field_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet.is_value()
+ &&single_value->field_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet.is_value()
+ &&single_value->field_vtBusyCodes.is_value()
+ &&single_value->field_vtFunctionCode.is_value();
+}
+
+void VTStatusReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+VTStatusReq VTStatusReq_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 @IsobusVTMessageTypes.VTStatusReq.");
+VTStatusReq ret_val;
+if (single_value->field_vtfunction.is_bound()) {
+ret_val.vtfunction() = single_value->field_vtfunction.valueof();
+}
+if (single_value->field_sourceAddressOfActiveWorkingSetMaster.is_bound()) {
+ret_val.sourceAddressOfActiveWorkingSetMaster() = single_value->field_sourceAddressOfActiveWorkingSetMaster.valueof();
+}
+if (single_value->field_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet.is_bound()) {
+ret_val.objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet() = single_value->field_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet.valueof();
+}
+if (single_value->field_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet.is_bound()) {
+ret_val.objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet() = single_value->field_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet.valueof();
+}
+if (single_value->field_vtBusyCodes.is_bound()) {
+ret_val.vtBusyCodes() = single_value->field_vtBusyCodes.valueof();
+}
+if (single_value->field_vtFunctionCode.is_bound()) {
+ret_val.vtFunctionCode() = single_value->field_vtFunctionCode.valueof();
+}
+return ret_val;
+}
+
+void VTStatusReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @IsobusVTMessageTypes.VTStatusReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new VTStatusReq_template[list_length];
+}
+
+VTStatusReq_template& VTStatusReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @IsobusVTMessageTypes.VTStatusReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @IsobusVTMessageTypes.VTStatusReq.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& VTStatusReq_template::vtfunction()
+{
+set_specific();
+return single_value->field_vtfunction;
+}
+
+const INTEGER_template& VTStatusReq_template::vtfunction() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtfunction of a non-specific template of type @IsobusVTMessageTypes.VTStatusReq.");
+return single_value->field_vtfunction;
+}
+
+OCTETSTRING_template& VTStatusReq_template::sourceAddressOfActiveWorkingSetMaster()
+{
+set_specific();
+return single_value->field_sourceAddressOfActiveWorkingSetMaster;
+}
+
+const OCTETSTRING_template& VTStatusReq_template::sourceAddressOfActiveWorkingSetMaster() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field sourceAddressOfActiveWorkingSetMaster of a non-specific template of type @IsobusVTMessageTypes.VTStatusReq.");
+return single_value->field_sourceAddressOfActiveWorkingSetMaster;
+}
+
+OCTETSTRING_template& VTStatusReq_template::objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet()
+{
+set_specific();
+return single_value->field_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet;
+}
+
+const OCTETSTRING_template& VTStatusReq_template::objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet of a non-specific template of type @IsobusVTMessageTypes.VTStatusReq.");
+return single_value->field_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet;
+}
+
+OCTETSTRING_template& VTStatusReq_template::objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet()
+{
+set_specific();
+return single_value->field_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet;
+}
+
+const OCTETSTRING_template& VTStatusReq_template::objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet of a non-specific template of type @IsobusVTMessageTypes.VTStatusReq.");
+return single_value->field_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet;
+}
+
+e__BusyCodes_template& VTStatusReq_template::vtBusyCodes()
+{
+set_specific();
+return single_value->field_vtBusyCodes;
+}
+
+const e__BusyCodes_template& VTStatusReq_template::vtBusyCodes() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtBusyCodes of a non-specific template of type @IsobusVTMessageTypes.VTStatusReq.");
+return single_value->field_vtBusyCodes;
+}
+
+OCTETSTRING_template& VTStatusReq_template::vtFunctionCode()
+{
+set_specific();
+return single_value->field_vtFunctionCode;
+}
+
+const OCTETSTRING_template& VTStatusReq_template::vtFunctionCode() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field vtFunctionCode of a non-specific template of type @IsobusVTMessageTypes.VTStatusReq.");
+return single_value->field_vtFunctionCode;
+}
+
+int VTStatusReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTStatusReq 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 @IsobusVTMessageTypes.VTStatusReq 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 @IsobusVTMessageTypes.VTStatusReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTStatusReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTStatusReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @IsobusVTMessageTypes.VTStatusReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @IsobusVTMessageTypes.VTStatusReq.");
+  }
+  return 0;
+}
+
+void VTStatusReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ vtfunction := ");
+single_value->field_vtfunction.log();
+TTCN_Logger::log_event_str(", sourceAddressOfActiveWorkingSetMaster := ");
+single_value->field_sourceAddressOfActiveWorkingSetMaster.log();
+TTCN_Logger::log_event_str(", objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet := ");
+single_value->field_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet.log();
+TTCN_Logger::log_event_str(", objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet := ");
+single_value->field_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet.log();
+TTCN_Logger::log_event_str(", vtBusyCodes := ");
+single_value->field_vtBusyCodes.log();
+TTCN_Logger::log_event_str(", vtFunctionCode := ");
+single_value->field_vtFunctionCode.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void VTStatusReq_template::log_match(const VTStatusReq& 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_vtfunction.match(match_value.vtfunction(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtfunction");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_sourceAddressOfActiveWorkingSetMaster.match(match_value.sourceAddressOfActiveWorkingSetMaster(), legacy)){
+TTCN_Logger::log_logmatch_info(".sourceAddressOfActiveWorkingSetMaster");
+single_value->field_sourceAddressOfActiveWorkingSetMaster.log_match(match_value.sourceAddressOfActiveWorkingSetMaster(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet.match(match_value.objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet");
+single_value->field_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet.log_match(match_value.objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet.match(match_value.objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet(), legacy)){
+TTCN_Logger::log_logmatch_info(".objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet");
+single_value->field_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet.log_match(match_value.objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_vtBusyCodes.match(match_value.vtBusyCodes(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtBusyCodes");
+single_value->field_vtBusyCodes.log_match(match_value.vtBusyCodes(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_vtFunctionCode.match(match_value.vtFunctionCode(), legacy)){
+TTCN_Logger::log_logmatch_info(".vtFunctionCode");
+single_value->field_vtFunctionCode.log_match(match_value.vtFunctionCode(), 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("{ vtfunction := ");
+single_value->field_vtfunction.log_match(match_value.vtfunction(), legacy);
+TTCN_Logger::log_event_str(", sourceAddressOfActiveWorkingSetMaster := ");
+single_value->field_sourceAddressOfActiveWorkingSetMaster.log_match(match_value.sourceAddressOfActiveWorkingSetMaster(), legacy);
+TTCN_Logger::log_event_str(", objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet := ");
+single_value->field_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet.log_match(match_value.objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet(), legacy);
+TTCN_Logger::log_event_str(", objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet := ");
+single_value->field_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet.log_match(match_value.objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet(), legacy);
+TTCN_Logger::log_event_str(", vtBusyCodes := ");
+single_value->field_vtBusyCodes.log_match(match_value.vtBusyCodes(), legacy);
+TTCN_Logger::log_event_str(", vtFunctionCode := ");
+single_value->field_vtFunctionCode.log_match(match_value.vtFunctionCode(), 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 VTStatusReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_vtfunction.encode_text(text_buf);
+single_value->field_sourceAddressOfActiveWorkingSetMaster.encode_text(text_buf);
+single_value->field_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet.encode_text(text_buf);
+single_value->field_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet.encode_text(text_buf);
+single_value->field_vtBusyCodes.encode_text(text_buf);
+single_value->field_vtFunctionCode.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 @IsobusVTMessageTypes.VTStatusReq.");
+}
+}
+
+void VTStatusReq_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_vtfunction.decode_text(text_buf);
+single_value->field_sourceAddressOfActiveWorkingSetMaster.decode_text(text_buf);
+single_value->field_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet.decode_text(text_buf);
+single_value->field_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet.decode_text(text_buf);
+single_value->field_vtBusyCodes.decode_text(text_buf);
+single_value->field_vtFunctionCode.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 VTStatusReq_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 @IsobusVTMessageTypes.VTStatusReq.");
+}
+}
+
+void VTStatusReq_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: {
+    VTStatusReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @IsobusVTMessageTypes.VTStatusReq 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) vtfunction().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) sourceAddressOfActiveWorkingSetMaster().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet().set_param(*param.get_elem(3));
+    if (param.get_size()>4 && param.get_elem(4)->get_type()!=Module_Param::MP_NotUsed) vtBusyCodes().set_param(*param.get_elem(4));
+    if (param.get_size()>5 && param.get_elem(5)->get_type()!=Module_Param::MP_NotUsed) vtFunctionCode().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(), "vtfunction")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtfunction().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(), "sourceAddressOfActiveWorkingSetMaster")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          sourceAddressOfActiveWorkingSetMaster().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(), "objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet().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(), "objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet().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(), "vtBusyCodes")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtBusyCodes().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(), "vtFunctionCode")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          vtFunctionCode().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 @IsobusVTMessageTypes.VTStatusReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@IsobusVTMessageTypes.VTStatusReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void VTStatusReq_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_vtfunction.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTStatusReq");
+single_value->field_sourceAddressOfActiveWorkingSetMaster.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTStatusReq");
+single_value->field_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTStatusReq");
+single_value->field_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTStatusReq");
+single_value->field_vtBusyCodes.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTStatusReq");
+single_value->field_vtFunctionCode.check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VTStatusReq");
+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 : "@IsobusVTMessageTypes.VTStatusReq");
+}
+
+boolean VTStatusReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean VTStatusReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 VT2ECU::copy_value(const VT2ECU& other_value)
+{
+switch (other_value.union_selection) {
+case ALT_softKeyActivationReq:
+field_softKeyActivationReq = new SoftKeyActivationReq(*other_value.field_softKeyActivationReq);
+break;
+case ALT_buttonActivationReq:
+field_buttonActivationReq = new ButtonActivationReq(*other_value.field_buttonActivationReq);
+break;
+case ALT_pointingEventReq:
+field_pointingEventReq = new PointingEventReq(*other_value.field_pointingEventReq);
+break;
+case ALT_vtSelectInputObjectReq:
+field_vtSelectInputObjectReq = new VTSelectInputObjectReq(*other_value.field_vtSelectInputObjectReq);
+break;
+case ALT_vtESCReq:
+field_vtESCReq = new VTESCReq(*other_value.field_vtESCReq);
+break;
+case ALT_vtChangeNumericValueReq:
+field_vtChangeNumericValueReq = new VTChangeNumericValueReq(*other_value.field_vtChangeNumericValueReq);
+break;
+case ALT_vtChangeActiveMaskReq:
+field_vtChangeActiveMaskReq = new VTChangeActiveMaskReq(*other_value.field_vtChangeActiveMaskReq);
+break;
+case ALT_vtChangeSoftKeyMaskReq:
+field_vtChangeSoftKeyMaskReq = new VTChangeSoftKeyMaskReq(*other_value.field_vtChangeSoftKeyMaskReq);
+break;
+case ALT_vtChangeStringValueReq:
+field_vtChangeStringValueReq = new VTChangeStringValueReq(*other_value.field_vtChangeStringValueReq);
+break;
+case ALT_vtOnUserLayoutHideShowReq:
+field_vtOnUserLayoutHideShowReq = new VTOnUserLayoutHideShowReq(*other_value.field_vtOnUserLayoutHideShowReq);
+break;
+case ALT_vtControlAudioSignalTerminationInd:
+field_vtControlAudioSignalTerminationInd = new VTControlAudioSignalTerminationInd(*other_value.field_vtControlAudioSignalTerminationInd);
+break;
+case ALT_endOfObjectPoolRes:
+field_endOfObjectPoolRes = new EndOfObjectPoolRes(*other_value.field_endOfObjectPoolRes);
+break;
+case ALT_vtfunction32VT2ECU:
+field_vtfunction32VT2ECU = new VTfunction32VT2ECU(*other_value.field_vtfunction32VT2ECU);
+break;
+case ALT_vtfunction34VT2ECU:
+field_vtfunction34VT2ECU = new VTfunction34VT2ECU(*other_value.field_vtfunction34VT2ECU);
+break;
+case ALT_vtfunction36VT2ECU:
+field_vtfunction36VT2ECU = new VTfunction36VT2ECU(*other_value.field_vtfunction36VT2ECU);
+break;
+case ALT_vtfunction37VT2ECU:
+field_vtfunction37VT2ECU = new VTfunction37VT2ECU(*other_value.field_vtfunction37VT2ECU);
+break;
+case ALT_vtfunction39VT2ECU:
+field_vtfunction39VT2ECU = new VTfunction39VT2ECU(*other_value.field_vtfunction39VT2ECU);
+break;
+case ALT_escRes:
+field_escRes = new ESCres(*other_value.field_escRes);
+break;
+case ALT_hideShowObjectRes:
+field_hideShowObjectRes = new HideShowObjectRes(*other_value.field_hideShowObjectRes);
+break;
+case ALT_enableDisableObjectRes:
+field_enableDisableObjectRes = new EnableDisableObjectRes(*other_value.field_enableDisableObjectRes);
+break;
+case ALT_selectInputObjectRes:
+field_selectInputObjectRes = new SelectInputObjectRes(*other_value.field_selectInputObjectRes);
+break;
+case ALT_controlAudioSignalRes:
+field_controlAudioSignalRes = new ControlAudioSignalRes(*other_value.field_controlAudioSignalRes);
+break;
+case ALT_setAudioVolumeRes:
+field_setAudioVolumeRes = new SetAudioVolumeRes(*other_value.field_setAudioVolumeRes);
+break;
+case ALT_changeChildLocationRes:
+field_changeChildLocationRes = new ChangeChildLocationRes(*other_value.field_changeChildLocationRes);
+break;
+case ALT_changeSizeRes:
+field_changeSizeRes = new ChangeSizeRes(*other_value.field_changeSizeRes);
+break;
+case ALT_changeBackgroundColourRes:
+field_changeBackgroundColourRes = new ChangeBackgroundColourRes(*other_value.field_changeBackgroundColourRes);
+break;
+case ALT_changeNumericValueRes:
+field_changeNumericValueRes = new ChangeNumericValueRes(*other_value.field_changeNumericValueRes);
+break;
+case ALT_changeEndPointRes:
+field_changeEndPointRes = new ChangeEndPointRes(*other_value.field_changeEndPointRes);
+break;
+case ALT_changeFontAttributesRes:
+field_changeFontAttributesRes = new ChangeFontAttributesRes(*other_value.field_changeFontAttributesRes);
+break;
+case ALT_changeLineAttributesRes:
+field_changeLineAttributesRes = new ChangeLineAttributesRes(*other_value.field_changeLineAttributesRes);
+break;
+case ALT_changeFillAttributesRes:
+field_changeFillAttributesRes = new ChangeFillAttributesRes(*other_value.field_changeFillAttributesRes);
+break;
+case ALT_changeActiveMaskRes:
+field_changeActiveMaskRes = new ChangeActiveMaskRes(*other_value.field_changeActiveMaskRes);
+break;
+case ALT_changeSoftKeyMaskRes:
+field_changeSoftKeyMaskRes = new ChangeSoftKeyMaskRes(*other_value.field_changeSoftKeyMaskRes);
+break;
+case ALT_changeAttributeRes:
+field_changeAttributeRes = new ChangeAttributeRes(*other_value.field_changeAttributeRes);
+break;
+case ALT_changePriorityRes:
+field_changePriorityRes = new ChangePriorityRes(*other_value.field_changePriorityRes);
+break;
+case ALT_changeListItemRes:
+field_changeListItemRes = new ChangeListItemRes(*other_value.field_changeListItemRes);
+break;
+case ALT_deleteObjectPoolRes:
+field_deleteObjectPoolRes = new DeleteObjectPoolRes(*other_value.field_deleteObjectPoolRes);
+break;
+case ALT_changeStringValueRes:
+field_changeStringValueRes = new ChangeStringValueRes(*other_value.field_changeStringValueRes);
+break;
+case ALT_changeChildPositionRes:
+field_changeChildPositionRes = new ChangeChildPositionRes(*other_value.field_changeChildPositionRes);
+break;
+case ALT_changeObjectLabelRes:
+field_changeObjectLabelRes = new ChangeObjectLabelRes(*other_value.field_changeObjectLabelRes);
+break;
+case ALT_changePolygonPointRes:
+field_changePolygonPointRes = new ChangePolygonPointRes(*other_value.field_changePolygonPointRes);
+break;
+case ALT_changePolygonScaleRes:
+field_changePolygonScaleRes = new ChangePolygonScaleRes(*other_value.field_changePolygonScaleRes);
+break;
+case ALT_graphicsContextRes:
+field_graphicsContextRes = new GraphicsContextRes(*other_value.field_graphicsContextRes);
+break;
+case ALT_getAttributeValueRes:
+field_getAttributeValueRes = new GetAttributeValueRes(*other_value.field_getAttributeValueRes);
+break;
+case ALT_selectColourMapRes:
+field_selectColourMapRes = new SelectColourMapRes(*other_value.field_selectColourMapRes);
+break;
+case ALT_identifyVTRes:
+field_identifyVTRes = new IdentifyVTRes(*other_value.field_identifyVTRes);
+break;
+case ALT_executeExtendedMacroRes:
+field_executeExtendedMacroRes = new ExecuteExtendedMacroRes(*other_value.field_executeExtendedMacroRes);
+break;
+case ALT_lockUnlockMaskRes:
+field_lockUnlockMaskRes = new LockUnlockMaskRes(*other_value.field_lockUnlockMaskRes);
+break;
+case ALT_executeMacroRes:
+field_executeMacroRes = new ExecuteMacroRes(*other_value.field_executeMacroRes);
+break;
+case ALT_getMemoryRes:
+field_getMemoryRes = new GetMemoryRes(*other_value.field_getMemoryRes);
+break;
+case ALT_getNumberOfSoftKeysRes:
+field_getNumberOfSoftKeysRes = new GetNumberOfSoftKeysRes(*other_value.field_getNumberOfSoftKeysRes);
+break;
+case ALT_getTextFontDataRes:
+field_getTextFontDataRes = new GetTextFontDataRes(*other_value.field_getTextFontDataRes);
+break;
+case ALT_getHardwareRes:
+field_getHardwareRes = new GetHardwareRes(*other_value.field_getHardwareRes);
+break;
+case ALT_getSupportedWidecharsRes:
+field_getSupportedWidecharsRes = new GetSupportedWidecharsRes(*other_value.field_getSupportedWidecharsRes);
+break;
+case ALT_getWindowMaskDataRes:
+field_getWindowMaskDataRes = new GetWindowMaskDataRes(*other_value.field_getWindowMaskDataRes);
+break;
+case ALT_getSupportedObjectsRes:
+field_getSupportedObjectsRes = new GetSupportedObjectsRes(*other_value.field_getSupportedObjectsRes);
+break;
+case ALT_storeVersionRes:
+field_storeVersionRes = new StoreVersionRes(*other_value.field_storeVersionRes);
+break;
+case ALT_loadVersionRes:
+field_loadVersionRes = new LoadVersionRes(*other_value.field_loadVersionRes);
+break;
+case ALT_deleteVersionRes:
+field_deleteVersionRes = new DeleteVersionRes(*other_value.field_deleteVersionRes);
+break;
+case ALT_extendedGetVersionsRes:
+field_extendedGetVersionsRes = new ExtendedGetVersionsRes(*other_value.field_extendedGetVersionsRes);
+break;
+case ALT_extendedStoreVersionRes:
+field_extendedStoreVersionRes = new ExtendedStoreVersionRes(*other_value.field_extendedStoreVersionRes);
+break;
+case ALT_extendedLoadVersionRes:
+field_extendedLoadVersionRes = new ExtendedLoadVersionRes(*other_value.field_extendedLoadVersionRes);
+break;
+case ALT_extendedDeleteVersionRes:
+field_extendedDeleteVersionRes = new ExtendedDeleteVersionRes(*other_value.field_extendedDeleteVersionRes);
+break;
+case ALT_getVersionsRes:
+field_getVersionsRes = new GetVersionsRes(*other_value.field_getVersionsRes);
+break;
+case ALT_vtUnsupportedVTFunctionInd:
+field_vtUnsupportedVTFunctionInd = new VTUnsupportedVTFunctionInd(*other_value.field_vtUnsupportedVTFunctionInd);
+break;
+case ALT_vtStatusReq:
+field_vtStatusReq = new VTStatusReq(*other_value.field_vtStatusReq);
+break;
+default:
+TTCN_error("Assignment of an unbound union value of type @IsobusVTMessageTypes.VT2ECU.");
+}
+union_selection = other_value.union_selection;
+}
+
+VT2ECU::VT2ECU()
+{
+union_selection = UNBOUND_VALUE;
+}
+
+VT2ECU::VT2ECU(const VT2ECU& other_value)
+: Base_Type(){
+copy_value(other_value);
+}
+
+VT2ECU::~VT2ECU()
+{
+clean_up();
+}
+
+VT2ECU& VT2ECU::operator=(const VT2ECU& other_value)
+{
+if (this != &other_value) {
+clean_up();
+copy_value(other_value);
+}
+return *this;
+}
+
+boolean VT2ECU::operator==(const VT2ECU& other_value) const
+{
+if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @IsobusVTMessageTypes.VT2ECU.");
+if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @IsobusVTMessageTypes.VT2ECU.");
+if (union_selection != other_value.union_selection) return FALSE;
+switch (union_selection) {
+case ALT_softKeyActivationReq:
+return *field_softKeyActivationReq == *other_value.field_softKeyActivationReq;
+case ALT_buttonActivationReq:
+return *field_buttonActivationReq == *other_value.field_buttonActivationReq;
+case ALT_pointingEventReq:
+return *field_pointingEventReq == *other_value.field_pointingEventReq;
+case ALT_vtSelectInputObjectReq:
+return *field_vtSelectInputObjectReq == *other_value.field_vtSelectInputObjectReq;
+case ALT_vtESCReq:
+return *field_vtESCReq == *other_value.field_vtESCReq;
+case ALT_vtChangeNumericValueReq:
+return *field_vtChangeNumericValueReq == *other_value.field_vtChangeNumericValueReq;
+case ALT_vtChangeActiveMaskReq:
+return *field_vtChangeActiveMaskReq == *other_value.field_vtChangeActiveMaskReq;
+case ALT_vtChangeSoftKeyMaskReq:
+return *field_vtChangeSoftKeyMaskReq == *other_value.field_vtChangeSoftKeyMaskReq;
+case ALT_vtChangeStringValueReq:
+return *field_vtChangeStringValueReq == *other_value.field_vtChangeStringValueReq;
+case ALT_vtOnUserLayoutHideShowReq:
+return *field_vtOnUserLayoutHideShowReq == *other_value.field_vtOnUserLayoutHideShowReq;
+case ALT_vtControlAudioSignalTerminationInd:
+return *field_vtControlAudioSignalTerminationInd == *other_value.field_vtControlAudioSignalTerminationInd;
+case ALT_endOfObjectPoolRes:
+return *field_endOfObjectPoolRes == *other_value.field_endOfObjectPoolRes;
+case ALT_vtfunction32VT2ECU:
+return *field_vtfunction32VT2ECU == *other_value.field_vtfunction32VT2ECU;
+case ALT_vtfunction34VT2ECU:
+return *field_vtfunction34VT2ECU == *other_value.field_vtfunction34VT2ECU;
+case ALT_vtfunction36VT2ECU:
+return *field_vtfunction36VT2ECU == *other_value.field_vtfunction36VT2ECU;
+case ALT_vtfunction37VT2ECU:
+return *field_vtfunction37VT2ECU == *other_value.field_vtfunction37VT2ECU;
+case ALT_vtfunction39VT2ECU:
+return *field_vtfunction39VT2ECU == *other_value.field_vtfunction39VT2ECU;
+case ALT_escRes:
+return *field_escRes == *other_value.field_escRes;
+case ALT_hideShowObjectRes:
+return *field_hideShowObjectRes == *other_value.field_hideShowObjectRes;
+case ALT_enableDisableObjectRes:
+return *field_enableDisableObjectRes == *other_value.field_enableDisableObjectRes;
+case ALT_selectInputObjectRes:
+return *field_selectInputObjectRes == *other_value.field_selectInputObjectRes;
+case ALT_controlAudioSignalRes:
+return *field_controlAudioSignalRes == *other_value.field_controlAudioSignalRes;
+case ALT_setAudioVolumeRes:
+return *field_setAudioVolumeRes == *other_value.field_setAudioVolumeRes;
+case ALT_changeChildLocationRes:
+return *field_changeChildLocationRes == *other_value.field_changeChildLocationRes;
+case ALT_changeSizeRes:
+return *field_changeSizeRes == *other_value.field_changeSizeRes;
+case ALT_changeBackgroundColourRes:
+return *field_changeBackgroundColourRes == *other_value.field_changeBackgroundColourRes;
+case ALT_changeNumericValueRes:
+return *field_changeNumericValueRes == *other_value.field_changeNumericValueRes;
+case ALT_changeEndPointRes:
+return *field_changeEndPointRes == *other_value.field_changeEndPointRes;
+case ALT_changeFontAttributesRes:
+return *field_changeFontAttributesRes == *other_value.field_changeFontAttributesRes;
+case ALT_changeLineAttributesRes:
+return *field_changeLineAttributesRes == *other_value.field_changeLineAttributesRes;
+case ALT_changeFillAttributesRes:
+return *field_changeFillAttributesRes == *other_value.field_changeFillAttributesRes;
+case ALT_changeActiveMaskRes:
+return *field_changeActiveMaskRes == *other_value.field_changeActiveMaskRes;
+case ALT_changeSoftKeyMaskRes:
+return *field_changeSoftKeyMaskRes == *other_value.field_changeSoftKeyMaskRes;
+case ALT_changeAttributeRes:
+return *field_changeAttributeRes == *other_value.field_changeAttributeRes;
+case ALT_changePriorityRes:
+return *field_changePriorityRes == *other_value.field_changePriorityRes;
+case ALT_changeListItemRes:
+return *field_changeListItemRes == *other_value.field_changeListItemRes;
+case ALT_deleteObjectPoolRes:
+return *field_deleteObjectPoolRes == *other_value.field_deleteObjectPoolRes;
+case ALT_changeStringValueRes:
+return *field_changeStringValueRes == *other_value.field_changeStringValueRes;
+case ALT_changeChildPositionRes:
+return *field_changeChildPositionRes == *other_value.field_changeChildPositionRes;
+case ALT_changeObjectLabelRes:
+return *field_changeObjectLabelRes == *other_value.field_changeObjectLabelRes;
+case ALT_changePolygonPointRes:
+return *field_changePolygonPointRes == *other_value.field_changePolygonPointRes;
+case ALT_changePolygonScaleRes:
+return *field_changePolygonScaleRes == *other_value.field_changePolygonScaleRes;
+case ALT_graphicsContextRes:
+return *field_graphicsContextRes == *other_value.field_graphicsContextRes;
+case ALT_getAttributeValueRes:
+return *field_getAttributeValueRes == *other_value.field_getAttributeValueRes;
+case ALT_selectColourMapRes:
+return *field_selectColourMapRes == *other_value.field_selectColourMapRes;
+case ALT_identifyVTRes:
+return *field_identifyVTRes == *other_value.field_identifyVTRes;
+case ALT_executeExtendedMacroRes:
+return *field_executeExtendedMacroRes == *other_value.field_executeExtendedMacroRes;
+case ALT_lockUnlockMaskRes:
+return *field_lockUnlockMaskRes == *other_value.field_lockUnlockMaskRes;
+case ALT_executeMacroRes:
+return *field_executeMacroRes == *other_value.field_executeMacroRes;
+case ALT_getMemoryRes:
+return *field_getMemoryRes == *other_value.field_getMemoryRes;
+case ALT_getNumberOfSoftKeysRes:
+return *field_getNumberOfSoftKeysRes == *other_value.field_getNumberOfSoftKeysRes;
+case ALT_getTextFontDataRes:
+return *field_getTextFontDataRes == *other_value.field_getTextFontDataRes;
+case ALT_getHardwareRes:
+return *field_getHardwareRes == *other_value.field_getHardwareRes;
+case ALT_getSupportedWidecharsRes:
+return *field_getSupportedWidecharsRes == *other_value.field_getSupportedWidecharsRes;
+case ALT_getWindowMaskDataRes:
+return *field_getWindowMaskDataRes == *other_value.field_getWindowMaskDataRes;
+case ALT_getSupportedObjectsRes:
+return *field_getSupportedObjectsRes == *other_value.field_getSupportedObjectsRes;
+case ALT_storeVersionRes:
+return *field_storeVersionRes == *other_value.field_storeVersionRes;
+case ALT_loadVersionRes:
+return *field_loadVersionRes == *other_value.field_loadVersionRes;
+case ALT_deleteVersionRes:
+return *field_deleteVersionRes == *other_value.field_deleteVersionRes;
+case ALT_extendedGetVersionsRes:
+return *field_extendedGetVersionsRes == *other_value.field_extendedGetVersionsRes;
+case ALT_extendedStoreVersionRes:
+return *field_extendedStoreVersionRes == *other_value.field_extendedStoreVersionRes;
+case ALT_extendedLoadVersionRes:
+return *field_extendedLoadVersionRes == *other_value.field_extendedLoadVersionRes;
+case ALT_extendedDeleteVersionRes:
+return *field_extendedDeleteVersionRes == *other_value.field_extendedDeleteVersionRes;
+case ALT_getVersionsRes:
+return *field_getVersionsRes == *other_value.field_getVersionsRes;
+case ALT_vtUnsupportedVTFunctionInd:
+return *field_vtUnsupportedVTFunctionInd == *other_value.field_vtUnsupportedVTFunctionInd;
+case ALT_vtStatusReq:
+return *field_vtStatusReq == *other_value.field_vtStatusReq;
+default:
+return FALSE;
+}
+}
+
+SoftKeyActivationReq& VT2ECU::softKeyActivationReq()
+{
+if (union_selection != ALT_softKeyActivationReq) {
+clean_up();
+field_softKeyActivationReq = new SoftKeyActivationReq;
+union_selection = ALT_softKeyActivationReq;
+}
+return *field_softKeyActivationReq;
+}
+
+const SoftKeyActivationReq& VT2ECU::softKeyActivationReq() const
+{
+if (union_selection != ALT_softKeyActivationReq) TTCN_error("Using non-selected field softKeyActivationReq in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_softKeyActivationReq;
+}
+
+ButtonActivationReq& VT2ECU::buttonActivationReq()
+{
+if (union_selection != ALT_buttonActivationReq) {
+clean_up();
+field_buttonActivationReq = new ButtonActivationReq;
+union_selection = ALT_buttonActivationReq;
+}
+return *field_buttonActivationReq;
+}
+
+const ButtonActivationReq& VT2ECU::buttonActivationReq() const
+{
+if (union_selection != ALT_buttonActivationReq) TTCN_error("Using non-selected field buttonActivationReq in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_buttonActivationReq;
+}
+
+PointingEventReq& VT2ECU::pointingEventReq()
+{
+if (union_selection != ALT_pointingEventReq) {
+clean_up();
+field_pointingEventReq = new PointingEventReq;
+union_selection = ALT_pointingEventReq;
+}
+return *field_pointingEventReq;
+}
+
+const PointingEventReq& VT2ECU::pointingEventReq() const
+{
+if (union_selection != ALT_pointingEventReq) TTCN_error("Using non-selected field pointingEventReq in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_pointingEventReq;
+}
+
+VTSelectInputObjectReq& VT2ECU::vtSelectInputObjectReq()
+{
+if (union_selection != ALT_vtSelectInputObjectReq) {
+clean_up();
+field_vtSelectInputObjectReq = new VTSelectInputObjectReq;
+union_selection = ALT_vtSelectInputObjectReq;
+}
+return *field_vtSelectInputObjectReq;
+}
+
+const VTSelectInputObjectReq& VT2ECU::vtSelectInputObjectReq() const
+{
+if (union_selection != ALT_vtSelectInputObjectReq) TTCN_error("Using non-selected field vtSelectInputObjectReq in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_vtSelectInputObjectReq;
+}
+
+VTESCReq& VT2ECU::vtESCReq()
+{
+if (union_selection != ALT_vtESCReq) {
+clean_up();
+field_vtESCReq = new VTESCReq;
+union_selection = ALT_vtESCReq;
+}
+return *field_vtESCReq;
+}
+
+const VTESCReq& VT2ECU::vtESCReq() const
+{
+if (union_selection != ALT_vtESCReq) TTCN_error("Using non-selected field vtESCReq in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_vtESCReq;
+}
+
+VTChangeNumericValueReq& VT2ECU::vtChangeNumericValueReq()
+{
+if (union_selection != ALT_vtChangeNumericValueReq) {
+clean_up();
+field_vtChangeNumericValueReq = new VTChangeNumericValueReq;
+union_selection = ALT_vtChangeNumericValueReq;
+}
+return *field_vtChangeNumericValueReq;
+}
+
+const VTChangeNumericValueReq& VT2ECU::vtChangeNumericValueReq() const
+{
+if (union_selection != ALT_vtChangeNumericValueReq) TTCN_error("Using non-selected field vtChangeNumericValueReq in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_vtChangeNumericValueReq;
+}
+
+VTChangeActiveMaskReq& VT2ECU::vtChangeActiveMaskReq()
+{
+if (union_selection != ALT_vtChangeActiveMaskReq) {
+clean_up();
+field_vtChangeActiveMaskReq = new VTChangeActiveMaskReq;
+union_selection = ALT_vtChangeActiveMaskReq;
+}
+return *field_vtChangeActiveMaskReq;
+}
+
+const VTChangeActiveMaskReq& VT2ECU::vtChangeActiveMaskReq() const
+{
+if (union_selection != ALT_vtChangeActiveMaskReq) TTCN_error("Using non-selected field vtChangeActiveMaskReq in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_vtChangeActiveMaskReq;
+}
+
+VTChangeSoftKeyMaskReq& VT2ECU::vtChangeSoftKeyMaskReq()
+{
+if (union_selection != ALT_vtChangeSoftKeyMaskReq) {
+clean_up();
+field_vtChangeSoftKeyMaskReq = new VTChangeSoftKeyMaskReq;
+union_selection = ALT_vtChangeSoftKeyMaskReq;
+}
+return *field_vtChangeSoftKeyMaskReq;
+}
+
+const VTChangeSoftKeyMaskReq& VT2ECU::vtChangeSoftKeyMaskReq() const
+{
+if (union_selection != ALT_vtChangeSoftKeyMaskReq) TTCN_error("Using non-selected field vtChangeSoftKeyMaskReq in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_vtChangeSoftKeyMaskReq;
+}
+
+VTChangeStringValueReq& VT2ECU::vtChangeStringValueReq()
+{
+if (union_selection != ALT_vtChangeStringValueReq) {
+clean_up();
+field_vtChangeStringValueReq = new VTChangeStringValueReq;
+union_selection = ALT_vtChangeStringValueReq;
+}
+return *field_vtChangeStringValueReq;
+}
+
+const VTChangeStringValueReq& VT2ECU::vtChangeStringValueReq() const
+{
+if (union_selection != ALT_vtChangeStringValueReq) TTCN_error("Using non-selected field vtChangeStringValueReq in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_vtChangeStringValueReq;
+}
+
+VTOnUserLayoutHideShowReq& VT2ECU::vtOnUserLayoutHideShowReq()
+{
+if (union_selection != ALT_vtOnUserLayoutHideShowReq) {
+clean_up();
+field_vtOnUserLayoutHideShowReq = new VTOnUserLayoutHideShowReq;
+union_selection = ALT_vtOnUserLayoutHideShowReq;
+}
+return *field_vtOnUserLayoutHideShowReq;
+}
+
+const VTOnUserLayoutHideShowReq& VT2ECU::vtOnUserLayoutHideShowReq() const
+{
+if (union_selection != ALT_vtOnUserLayoutHideShowReq) TTCN_error("Using non-selected field vtOnUserLayoutHideShowReq in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_vtOnUserLayoutHideShowReq;
+}
+
+VTControlAudioSignalTerminationInd& VT2ECU::vtControlAudioSignalTerminationInd()
+{
+if (union_selection != ALT_vtControlAudioSignalTerminationInd) {
+clean_up();
+field_vtControlAudioSignalTerminationInd = new VTControlAudioSignalTerminationInd;
+union_selection = ALT_vtControlAudioSignalTerminationInd;
+}
+return *field_vtControlAudioSignalTerminationInd;
+}
+
+const VTControlAudioSignalTerminationInd& VT2ECU::vtControlAudioSignalTerminationInd() const
+{
+if (union_selection != ALT_vtControlAudioSignalTerminationInd) TTCN_error("Using non-selected field vtControlAudioSignalTerminationInd in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_vtControlAudioSignalTerminationInd;
+}
+
+EndOfObjectPoolRes& VT2ECU::endOfObjectPoolRes()
+{
+if (union_selection != ALT_endOfObjectPoolRes) {
+clean_up();
+field_endOfObjectPoolRes = new EndOfObjectPoolRes;
+union_selection = ALT_endOfObjectPoolRes;
+}
+return *field_endOfObjectPoolRes;
+}
+
+const EndOfObjectPoolRes& VT2ECU::endOfObjectPoolRes() const
+{
+if (union_selection != ALT_endOfObjectPoolRes) TTCN_error("Using non-selected field endOfObjectPoolRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_endOfObjectPoolRes;
+}
+
+VTfunction32VT2ECU& VT2ECU::vtfunction32VT2ECU()
+{
+if (union_selection != ALT_vtfunction32VT2ECU) {
+clean_up();
+field_vtfunction32VT2ECU = new VTfunction32VT2ECU;
+union_selection = ALT_vtfunction32VT2ECU;
+}
+return *field_vtfunction32VT2ECU;
+}
+
+const VTfunction32VT2ECU& VT2ECU::vtfunction32VT2ECU() const
+{
+if (union_selection != ALT_vtfunction32VT2ECU) TTCN_error("Using non-selected field vtfunction32VT2ECU in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_vtfunction32VT2ECU;
+}
+
+VTfunction34VT2ECU& VT2ECU::vtfunction34VT2ECU()
+{
+if (union_selection != ALT_vtfunction34VT2ECU) {
+clean_up();
+field_vtfunction34VT2ECU = new VTfunction34VT2ECU;
+union_selection = ALT_vtfunction34VT2ECU;
+}
+return *field_vtfunction34VT2ECU;
+}
+
+const VTfunction34VT2ECU& VT2ECU::vtfunction34VT2ECU() const
+{
+if (union_selection != ALT_vtfunction34VT2ECU) TTCN_error("Using non-selected field vtfunction34VT2ECU in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_vtfunction34VT2ECU;
+}
+
+VTfunction36VT2ECU& VT2ECU::vtfunction36VT2ECU()
+{
+if (union_selection != ALT_vtfunction36VT2ECU) {
+clean_up();
+field_vtfunction36VT2ECU = new VTfunction36VT2ECU;
+union_selection = ALT_vtfunction36VT2ECU;
+}
+return *field_vtfunction36VT2ECU;
+}
+
+const VTfunction36VT2ECU& VT2ECU::vtfunction36VT2ECU() const
+{
+if (union_selection != ALT_vtfunction36VT2ECU) TTCN_error("Using non-selected field vtfunction36VT2ECU in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_vtfunction36VT2ECU;
+}
+
+VTfunction37VT2ECU& VT2ECU::vtfunction37VT2ECU()
+{
+if (union_selection != ALT_vtfunction37VT2ECU) {
+clean_up();
+field_vtfunction37VT2ECU = new VTfunction37VT2ECU;
+union_selection = ALT_vtfunction37VT2ECU;
+}
+return *field_vtfunction37VT2ECU;
+}
+
+const VTfunction37VT2ECU& VT2ECU::vtfunction37VT2ECU() const
+{
+if (union_selection != ALT_vtfunction37VT2ECU) TTCN_error("Using non-selected field vtfunction37VT2ECU in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_vtfunction37VT2ECU;
+}
+
+VTfunction39VT2ECU& VT2ECU::vtfunction39VT2ECU()
+{
+if (union_selection != ALT_vtfunction39VT2ECU) {
+clean_up();
+field_vtfunction39VT2ECU = new VTfunction39VT2ECU;
+union_selection = ALT_vtfunction39VT2ECU;
+}
+return *field_vtfunction39VT2ECU;
+}
+
+const VTfunction39VT2ECU& VT2ECU::vtfunction39VT2ECU() const
+{
+if (union_selection != ALT_vtfunction39VT2ECU) TTCN_error("Using non-selected field vtfunction39VT2ECU in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_vtfunction39VT2ECU;
+}
+
+ESCres& VT2ECU::escRes()
+{
+if (union_selection != ALT_escRes) {
+clean_up();
+field_escRes = new ESCres;
+union_selection = ALT_escRes;
+}
+return *field_escRes;
+}
+
+const ESCres& VT2ECU::escRes() const
+{
+if (union_selection != ALT_escRes) TTCN_error("Using non-selected field escRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_escRes;
+}
+
+HideShowObjectRes& VT2ECU::hideShowObjectRes()
+{
+if (union_selection != ALT_hideShowObjectRes) {
+clean_up();
+field_hideShowObjectRes = new HideShowObjectRes;
+union_selection = ALT_hideShowObjectRes;
+}
+return *field_hideShowObjectRes;
+}
+
+const HideShowObjectRes& VT2ECU::hideShowObjectRes() const
+{
+if (union_selection != ALT_hideShowObjectRes) TTCN_error("Using non-selected field hideShowObjectRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_hideShowObjectRes;
+}
+
+EnableDisableObjectRes& VT2ECU::enableDisableObjectRes()
+{
+if (union_selection != ALT_enableDisableObjectRes) {
+clean_up();
+field_enableDisableObjectRes = new EnableDisableObjectRes;
+union_selection = ALT_enableDisableObjectRes;
+}
+return *field_enableDisableObjectRes;
+}
+
+const EnableDisableObjectRes& VT2ECU::enableDisableObjectRes() const
+{
+if (union_selection != ALT_enableDisableObjectRes) TTCN_error("Using non-selected field enableDisableObjectRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_enableDisableObjectRes;
+}
+
+SelectInputObjectRes& VT2ECU::selectInputObjectRes()
+{
+if (union_selection != ALT_selectInputObjectRes) {
+clean_up();
+field_selectInputObjectRes = new SelectInputObjectRes;
+union_selection = ALT_selectInputObjectRes;
+}
+return *field_selectInputObjectRes;
+}
+
+const SelectInputObjectRes& VT2ECU::selectInputObjectRes() const
+{
+if (union_selection != ALT_selectInputObjectRes) TTCN_error("Using non-selected field selectInputObjectRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_selectInputObjectRes;
+}
+
+ControlAudioSignalRes& VT2ECU::controlAudioSignalRes()
+{
+if (union_selection != ALT_controlAudioSignalRes) {
+clean_up();
+field_controlAudioSignalRes = new ControlAudioSignalRes;
+union_selection = ALT_controlAudioSignalRes;
+}
+return *field_controlAudioSignalRes;
+}
+
+const ControlAudioSignalRes& VT2ECU::controlAudioSignalRes() const
+{
+if (union_selection != ALT_controlAudioSignalRes) TTCN_error("Using non-selected field controlAudioSignalRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_controlAudioSignalRes;
+}
+
+SetAudioVolumeRes& VT2ECU::setAudioVolumeRes()
+{
+if (union_selection != ALT_setAudioVolumeRes) {
+clean_up();
+field_setAudioVolumeRes = new SetAudioVolumeRes;
+union_selection = ALT_setAudioVolumeRes;
+}
+return *field_setAudioVolumeRes;
+}
+
+const SetAudioVolumeRes& VT2ECU::setAudioVolumeRes() const
+{
+if (union_selection != ALT_setAudioVolumeRes) TTCN_error("Using non-selected field setAudioVolumeRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_setAudioVolumeRes;
+}
+
+ChangeChildLocationRes& VT2ECU::changeChildLocationRes()
+{
+if (union_selection != ALT_changeChildLocationRes) {
+clean_up();
+field_changeChildLocationRes = new ChangeChildLocationRes;
+union_selection = ALT_changeChildLocationRes;
+}
+return *field_changeChildLocationRes;
+}
+
+const ChangeChildLocationRes& VT2ECU::changeChildLocationRes() const
+{
+if (union_selection != ALT_changeChildLocationRes) TTCN_error("Using non-selected field changeChildLocationRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_changeChildLocationRes;
+}
+
+ChangeSizeRes& VT2ECU::changeSizeRes()
+{
+if (union_selection != ALT_changeSizeRes) {
+clean_up();
+field_changeSizeRes = new ChangeSizeRes;
+union_selection = ALT_changeSizeRes;
+}
+return *field_changeSizeRes;
+}
+
+const ChangeSizeRes& VT2ECU::changeSizeRes() const
+{
+if (union_selection != ALT_changeSizeRes) TTCN_error("Using non-selected field changeSizeRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_changeSizeRes;
+}
+
+ChangeBackgroundColourRes& VT2ECU::changeBackgroundColourRes()
+{
+if (union_selection != ALT_changeBackgroundColourRes) {
+clean_up();
+field_changeBackgroundColourRes = new ChangeBackgroundColourRes;
+union_selection = ALT_changeBackgroundColourRes;
+}
+return *field_changeBackgroundColourRes;
+}
+
+const ChangeBackgroundColourRes& VT2ECU::changeBackgroundColourRes() const
+{
+if (union_selection != ALT_changeBackgroundColourRes) TTCN_error("Using non-selected field changeBackgroundColourRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_changeBackgroundColourRes;
+}
+
+ChangeNumericValueRes& VT2ECU::changeNumericValueRes()
+{
+if (union_selection != ALT_changeNumericValueRes) {
+clean_up();
+field_changeNumericValueRes = new ChangeNumericValueRes;
+union_selection = ALT_changeNumericValueRes;
+}
+return *field_changeNumericValueRes;
+}
+
+const ChangeNumericValueRes& VT2ECU::changeNumericValueRes() const
+{
+if (union_selection != ALT_changeNumericValueRes) TTCN_error("Using non-selected field changeNumericValueRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_changeNumericValueRes;
+}
+
+ChangeEndPointRes& VT2ECU::changeEndPointRes()
+{
+if (union_selection != ALT_changeEndPointRes) {
+clean_up();
+field_changeEndPointRes = new ChangeEndPointRes;
+union_selection = ALT_changeEndPointRes;
+}
+return *field_changeEndPointRes;
+}
+
+const ChangeEndPointRes& VT2ECU::changeEndPointRes() const
+{
+if (union_selection != ALT_changeEndPointRes) TTCN_error("Using non-selected field changeEndPointRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_changeEndPointRes;
+}
+
+ChangeFontAttributesRes& VT2ECU::changeFontAttributesRes()
+{
+if (union_selection != ALT_changeFontAttributesRes) {
+clean_up();
+field_changeFontAttributesRes = new ChangeFontAttributesRes;
+union_selection = ALT_changeFontAttributesRes;
+}
+return *field_changeFontAttributesRes;
+}
+
+const ChangeFontAttributesRes& VT2ECU::changeFontAttributesRes() const
+{
+if (union_selection != ALT_changeFontAttributesRes) TTCN_error("Using non-selected field changeFontAttributesRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_changeFontAttributesRes;
+}
+
+ChangeLineAttributesRes& VT2ECU::changeLineAttributesRes()
+{
+if (union_selection != ALT_changeLineAttributesRes) {
+clean_up();
+field_changeLineAttributesRes = new ChangeLineAttributesRes;
+union_selection = ALT_changeLineAttributesRes;
+}
+return *field_changeLineAttributesRes;
+}
+
+const ChangeLineAttributesRes& VT2ECU::changeLineAttributesRes() const
+{
+if (union_selection != ALT_changeLineAttributesRes) TTCN_error("Using non-selected field changeLineAttributesRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_changeLineAttributesRes;
+}
+
+ChangeFillAttributesRes& VT2ECU::changeFillAttributesRes()
+{
+if (union_selection != ALT_changeFillAttributesRes) {
+clean_up();
+field_changeFillAttributesRes = new ChangeFillAttributesRes;
+union_selection = ALT_changeFillAttributesRes;
+}
+return *field_changeFillAttributesRes;
+}
+
+const ChangeFillAttributesRes& VT2ECU::changeFillAttributesRes() const
+{
+if (union_selection != ALT_changeFillAttributesRes) TTCN_error("Using non-selected field changeFillAttributesRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_changeFillAttributesRes;
+}
+
+ChangeActiveMaskRes& VT2ECU::changeActiveMaskRes()
+{
+if (union_selection != ALT_changeActiveMaskRes) {
+clean_up();
+field_changeActiveMaskRes = new ChangeActiveMaskRes;
+union_selection = ALT_changeActiveMaskRes;
+}
+return *field_changeActiveMaskRes;
+}
+
+const ChangeActiveMaskRes& VT2ECU::changeActiveMaskRes() const
+{
+if (union_selection != ALT_changeActiveMaskRes) TTCN_error("Using non-selected field changeActiveMaskRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_changeActiveMaskRes;
+}
+
+ChangeSoftKeyMaskRes& VT2ECU::changeSoftKeyMaskRes()
+{
+if (union_selection != ALT_changeSoftKeyMaskRes) {
+clean_up();
+field_changeSoftKeyMaskRes = new ChangeSoftKeyMaskRes;
+union_selection = ALT_changeSoftKeyMaskRes;
+}
+return *field_changeSoftKeyMaskRes;
+}
+
+const ChangeSoftKeyMaskRes& VT2ECU::changeSoftKeyMaskRes() const
+{
+if (union_selection != ALT_changeSoftKeyMaskRes) TTCN_error("Using non-selected field changeSoftKeyMaskRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_changeSoftKeyMaskRes;
+}
+
+ChangeAttributeRes& VT2ECU::changeAttributeRes()
+{
+if (union_selection != ALT_changeAttributeRes) {
+clean_up();
+field_changeAttributeRes = new ChangeAttributeRes;
+union_selection = ALT_changeAttributeRes;
+}
+return *field_changeAttributeRes;
+}
+
+const ChangeAttributeRes& VT2ECU::changeAttributeRes() const
+{
+if (union_selection != ALT_changeAttributeRes) TTCN_error("Using non-selected field changeAttributeRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_changeAttributeRes;
+}
+
+ChangePriorityRes& VT2ECU::changePriorityRes()
+{
+if (union_selection != ALT_changePriorityRes) {
+clean_up();
+field_changePriorityRes = new ChangePriorityRes;
+union_selection = ALT_changePriorityRes;
+}
+return *field_changePriorityRes;
+}
+
+const ChangePriorityRes& VT2ECU::changePriorityRes() const
+{
+if (union_selection != ALT_changePriorityRes) TTCN_error("Using non-selected field changePriorityRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_changePriorityRes;
+}
+
+ChangeListItemRes& VT2ECU::changeListItemRes()
+{
+if (union_selection != ALT_changeListItemRes) {
+clean_up();
+field_changeListItemRes = new ChangeListItemRes;
+union_selection = ALT_changeListItemRes;
+}
+return *field_changeListItemRes;
+}
+
+const ChangeListItemRes& VT2ECU::changeListItemRes() const
+{
+if (union_selection != ALT_changeListItemRes) TTCN_error("Using non-selected field changeListItemRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_changeListItemRes;
+}
+
+DeleteObjectPoolRes& VT2ECU::deleteObjectPoolRes()
+{
+if (union_selection != ALT_deleteObjectPoolRes) {
+clean_up();
+field_deleteObjectPoolRes = new DeleteObjectPoolRes;
+union_selection = ALT_deleteObjectPoolRes;
+}
+return *field_deleteObjectPoolRes;
+}
+
+const DeleteObjectPoolRes& VT2ECU::deleteObjectPoolRes() const
+{
+if (union_selection != ALT_deleteObjectPoolRes) TTCN_error("Using non-selected field deleteObjectPoolRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_deleteObjectPoolRes;
+}
+
+ChangeStringValueRes& VT2ECU::changeStringValueRes()
+{
+if (union_selection != ALT_changeStringValueRes) {
+clean_up();
+field_changeStringValueRes = new ChangeStringValueRes;
+union_selection = ALT_changeStringValueRes;
+}
+return *field_changeStringValueRes;
+}
+
+const ChangeStringValueRes& VT2ECU::changeStringValueRes() const
+{
+if (union_selection != ALT_changeStringValueRes) TTCN_error("Using non-selected field changeStringValueRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_changeStringValueRes;
+}
+
+ChangeChildPositionRes& VT2ECU::changeChildPositionRes()
+{
+if (union_selection != ALT_changeChildPositionRes) {
+clean_up();
+field_changeChildPositionRes = new ChangeChildPositionRes;
+union_selection = ALT_changeChildPositionRes;
+}
+return *field_changeChildPositionRes;
+}
+
+const ChangeChildPositionRes& VT2ECU::changeChildPositionRes() const
+{
+if (union_selection != ALT_changeChildPositionRes) TTCN_error("Using non-selected field changeChildPositionRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_changeChildPositionRes;
+}
+
+ChangeObjectLabelRes& VT2ECU::changeObjectLabelRes()
+{
+if (union_selection != ALT_changeObjectLabelRes) {
+clean_up();
+field_changeObjectLabelRes = new ChangeObjectLabelRes;
+union_selection = ALT_changeObjectLabelRes;
+}
+return *field_changeObjectLabelRes;
+}
+
+const ChangeObjectLabelRes& VT2ECU::changeObjectLabelRes() const
+{
+if (union_selection != ALT_changeObjectLabelRes) TTCN_error("Using non-selected field changeObjectLabelRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_changeObjectLabelRes;
+}
+
+ChangePolygonPointRes& VT2ECU::changePolygonPointRes()
+{
+if (union_selection != ALT_changePolygonPointRes) {
+clean_up();
+field_changePolygonPointRes = new ChangePolygonPointRes;
+union_selection = ALT_changePolygonPointRes;
+}
+return *field_changePolygonPointRes;
+}
+
+const ChangePolygonPointRes& VT2ECU::changePolygonPointRes() const
+{
+if (union_selection != ALT_changePolygonPointRes) TTCN_error("Using non-selected field changePolygonPointRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_changePolygonPointRes;
+}
+
+ChangePolygonScaleRes& VT2ECU::changePolygonScaleRes()
+{
+if (union_selection != ALT_changePolygonScaleRes) {
+clean_up();
+field_changePolygonScaleRes = new ChangePolygonScaleRes;
+union_selection = ALT_changePolygonScaleRes;
+}
+return *field_changePolygonScaleRes;
+}
+
+const ChangePolygonScaleRes& VT2ECU::changePolygonScaleRes() const
+{
+if (union_selection != ALT_changePolygonScaleRes) TTCN_error("Using non-selected field changePolygonScaleRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_changePolygonScaleRes;
+}
+
+GraphicsContextRes& VT2ECU::graphicsContextRes()
+{
+if (union_selection != ALT_graphicsContextRes) {
+clean_up();
+field_graphicsContextRes = new GraphicsContextRes;
+union_selection = ALT_graphicsContextRes;
+}
+return *field_graphicsContextRes;
+}
+
+const GraphicsContextRes& VT2ECU::graphicsContextRes() const
+{
+if (union_selection != ALT_graphicsContextRes) TTCN_error("Using non-selected field graphicsContextRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_graphicsContextRes;
+}
+
+GetAttributeValueRes& VT2ECU::getAttributeValueRes()
+{
+if (union_selection != ALT_getAttributeValueRes) {
+clean_up();
+field_getAttributeValueRes = new GetAttributeValueRes;
+union_selection = ALT_getAttributeValueRes;
+}
+return *field_getAttributeValueRes;
+}
+
+const GetAttributeValueRes& VT2ECU::getAttributeValueRes() const
+{
+if (union_selection != ALT_getAttributeValueRes) TTCN_error("Using non-selected field getAttributeValueRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_getAttributeValueRes;
+}
+
+SelectColourMapRes& VT2ECU::selectColourMapRes()
+{
+if (union_selection != ALT_selectColourMapRes) {
+clean_up();
+field_selectColourMapRes = new SelectColourMapRes;
+union_selection = ALT_selectColourMapRes;
+}
+return *field_selectColourMapRes;
+}
+
+const SelectColourMapRes& VT2ECU::selectColourMapRes() const
+{
+if (union_selection != ALT_selectColourMapRes) TTCN_error("Using non-selected field selectColourMapRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_selectColourMapRes;
+}
+
+IdentifyVTRes& VT2ECU::identifyVTRes()
+{
+if (union_selection != ALT_identifyVTRes) {
+clean_up();
+field_identifyVTRes = new IdentifyVTRes;
+union_selection = ALT_identifyVTRes;
+}
+return *field_identifyVTRes;
+}
+
+const IdentifyVTRes& VT2ECU::identifyVTRes() const
+{
+if (union_selection != ALT_identifyVTRes) TTCN_error("Using non-selected field identifyVTRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_identifyVTRes;
+}
+
+ExecuteExtendedMacroRes& VT2ECU::executeExtendedMacroRes()
+{
+if (union_selection != ALT_executeExtendedMacroRes) {
+clean_up();
+field_executeExtendedMacroRes = new ExecuteExtendedMacroRes;
+union_selection = ALT_executeExtendedMacroRes;
+}
+return *field_executeExtendedMacroRes;
+}
+
+const ExecuteExtendedMacroRes& VT2ECU::executeExtendedMacroRes() const
+{
+if (union_selection != ALT_executeExtendedMacroRes) TTCN_error("Using non-selected field executeExtendedMacroRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_executeExtendedMacroRes;
+}
+
+LockUnlockMaskRes& VT2ECU::lockUnlockMaskRes()
+{
+if (union_selection != ALT_lockUnlockMaskRes) {
+clean_up();
+field_lockUnlockMaskRes = new LockUnlockMaskRes;
+union_selection = ALT_lockUnlockMaskRes;
+}
+return *field_lockUnlockMaskRes;
+}
+
+const LockUnlockMaskRes& VT2ECU::lockUnlockMaskRes() const
+{
+if (union_selection != ALT_lockUnlockMaskRes) TTCN_error("Using non-selected field lockUnlockMaskRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_lockUnlockMaskRes;
+}
+
+ExecuteMacroRes& VT2ECU::executeMacroRes()
+{
+if (union_selection != ALT_executeMacroRes) {
+clean_up();
+field_executeMacroRes = new ExecuteMacroRes;
+union_selection = ALT_executeMacroRes;
+}
+return *field_executeMacroRes;
+}
+
+const ExecuteMacroRes& VT2ECU::executeMacroRes() const
+{
+if (union_selection != ALT_executeMacroRes) TTCN_error("Using non-selected field executeMacroRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_executeMacroRes;
+}
+
+GetMemoryRes& VT2ECU::getMemoryRes()
+{
+if (union_selection != ALT_getMemoryRes) {
+clean_up();
+field_getMemoryRes = new GetMemoryRes;
+union_selection = ALT_getMemoryRes;
+}
+return *field_getMemoryRes;
+}
+
+const GetMemoryRes& VT2ECU::getMemoryRes() const
+{
+if (union_selection != ALT_getMemoryRes) TTCN_error("Using non-selected field getMemoryRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_getMemoryRes;
+}
+
+GetNumberOfSoftKeysRes& VT2ECU::getNumberOfSoftKeysRes()
+{
+if (union_selection != ALT_getNumberOfSoftKeysRes) {
+clean_up();
+field_getNumberOfSoftKeysRes = new GetNumberOfSoftKeysRes;
+union_selection = ALT_getNumberOfSoftKeysRes;
+}
+return *field_getNumberOfSoftKeysRes;
+}
+
+const GetNumberOfSoftKeysRes& VT2ECU::getNumberOfSoftKeysRes() const
+{
+if (union_selection != ALT_getNumberOfSoftKeysRes) TTCN_error("Using non-selected field getNumberOfSoftKeysRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_getNumberOfSoftKeysRes;
+}
+
+GetTextFontDataRes& VT2ECU::getTextFontDataRes()
+{
+if (union_selection != ALT_getTextFontDataRes) {
+clean_up();
+field_getTextFontDataRes = new GetTextFontDataRes;
+union_selection = ALT_getTextFontDataRes;
+}
+return *field_getTextFontDataRes;
+}
+
+const GetTextFontDataRes& VT2ECU::getTextFontDataRes() const
+{
+if (union_selection != ALT_getTextFontDataRes) TTCN_error("Using non-selected field getTextFontDataRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_getTextFontDataRes;
+}
+
+GetHardwareRes& VT2ECU::getHardwareRes()
+{
+if (union_selection != ALT_getHardwareRes) {
+clean_up();
+field_getHardwareRes = new GetHardwareRes;
+union_selection = ALT_getHardwareRes;
+}
+return *field_getHardwareRes;
+}
+
+const GetHardwareRes& VT2ECU::getHardwareRes() const
+{
+if (union_selection != ALT_getHardwareRes) TTCN_error("Using non-selected field getHardwareRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_getHardwareRes;
+}
+
+GetSupportedWidecharsRes& VT2ECU::getSupportedWidecharsRes()
+{
+if (union_selection != ALT_getSupportedWidecharsRes) {
+clean_up();
+field_getSupportedWidecharsRes = new GetSupportedWidecharsRes;
+union_selection = ALT_getSupportedWidecharsRes;
+}
+return *field_getSupportedWidecharsRes;
+}
+
+const GetSupportedWidecharsRes& VT2ECU::getSupportedWidecharsRes() const
+{
+if (union_selection != ALT_getSupportedWidecharsRes) TTCN_error("Using non-selected field getSupportedWidecharsRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_getSupportedWidecharsRes;
+}
+
+GetWindowMaskDataRes& VT2ECU::getWindowMaskDataRes()
+{
+if (union_selection != ALT_getWindowMaskDataRes) {
+clean_up();
+field_getWindowMaskDataRes = new GetWindowMaskDataRes;
+union_selection = ALT_getWindowMaskDataRes;
+}
+return *field_getWindowMaskDataRes;
+}
+
+const GetWindowMaskDataRes& VT2ECU::getWindowMaskDataRes() const
+{
+if (union_selection != ALT_getWindowMaskDataRes) TTCN_error("Using non-selected field getWindowMaskDataRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_getWindowMaskDataRes;
+}
+
+GetSupportedObjectsRes& VT2ECU::getSupportedObjectsRes()
+{
+if (union_selection != ALT_getSupportedObjectsRes) {
+clean_up();
+field_getSupportedObjectsRes = new GetSupportedObjectsRes;
+union_selection = ALT_getSupportedObjectsRes;
+}
+return *field_getSupportedObjectsRes;
+}
+
+const GetSupportedObjectsRes& VT2ECU::getSupportedObjectsRes() const
+{
+if (union_selection != ALT_getSupportedObjectsRes) TTCN_error("Using non-selected field getSupportedObjectsRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_getSupportedObjectsRes;
+}
+
+StoreVersionRes& VT2ECU::storeVersionRes()
+{
+if (union_selection != ALT_storeVersionRes) {
+clean_up();
+field_storeVersionRes = new StoreVersionRes;
+union_selection = ALT_storeVersionRes;
+}
+return *field_storeVersionRes;
+}
+
+const StoreVersionRes& VT2ECU::storeVersionRes() const
+{
+if (union_selection != ALT_storeVersionRes) TTCN_error("Using non-selected field storeVersionRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_storeVersionRes;
+}
+
+LoadVersionRes& VT2ECU::loadVersionRes()
+{
+if (union_selection != ALT_loadVersionRes) {
+clean_up();
+field_loadVersionRes = new LoadVersionRes;
+union_selection = ALT_loadVersionRes;
+}
+return *field_loadVersionRes;
+}
+
+const LoadVersionRes& VT2ECU::loadVersionRes() const
+{
+if (union_selection != ALT_loadVersionRes) TTCN_error("Using non-selected field loadVersionRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_loadVersionRes;
+}
+
+DeleteVersionRes& VT2ECU::deleteVersionRes()
+{
+if (union_selection != ALT_deleteVersionRes) {
+clean_up();
+field_deleteVersionRes = new DeleteVersionRes;
+union_selection = ALT_deleteVersionRes;
+}
+return *field_deleteVersionRes;
+}
+
+const DeleteVersionRes& VT2ECU::deleteVersionRes() const
+{
+if (union_selection != ALT_deleteVersionRes) TTCN_error("Using non-selected field deleteVersionRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_deleteVersionRes;
+}
+
+ExtendedGetVersionsRes& VT2ECU::extendedGetVersionsRes()
+{
+if (union_selection != ALT_extendedGetVersionsRes) {
+clean_up();
+field_extendedGetVersionsRes = new ExtendedGetVersionsRes;
+union_selection = ALT_extendedGetVersionsRes;
+}
+return *field_extendedGetVersionsRes;
+}
+
+const ExtendedGetVersionsRes& VT2ECU::extendedGetVersionsRes() const
+{
+if (union_selection != ALT_extendedGetVersionsRes) TTCN_error("Using non-selected field extendedGetVersionsRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_extendedGetVersionsRes;
+}
+
+ExtendedStoreVersionRes& VT2ECU::extendedStoreVersionRes()
+{
+if (union_selection != ALT_extendedStoreVersionRes) {
+clean_up();
+field_extendedStoreVersionRes = new ExtendedStoreVersionRes;
+union_selection = ALT_extendedStoreVersionRes;
+}
+return *field_extendedStoreVersionRes;
+}
+
+const ExtendedStoreVersionRes& VT2ECU::extendedStoreVersionRes() const
+{
+if (union_selection != ALT_extendedStoreVersionRes) TTCN_error("Using non-selected field extendedStoreVersionRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_extendedStoreVersionRes;
+}
+
+ExtendedLoadVersionRes& VT2ECU::extendedLoadVersionRes()
+{
+if (union_selection != ALT_extendedLoadVersionRes) {
+clean_up();
+field_extendedLoadVersionRes = new ExtendedLoadVersionRes;
+union_selection = ALT_extendedLoadVersionRes;
+}
+return *field_extendedLoadVersionRes;
+}
+
+const ExtendedLoadVersionRes& VT2ECU::extendedLoadVersionRes() const
+{
+if (union_selection != ALT_extendedLoadVersionRes) TTCN_error("Using non-selected field extendedLoadVersionRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_extendedLoadVersionRes;
+}
+
+ExtendedDeleteVersionRes& VT2ECU::extendedDeleteVersionRes()
+{
+if (union_selection != ALT_extendedDeleteVersionRes) {
+clean_up();
+field_extendedDeleteVersionRes = new ExtendedDeleteVersionRes;
+union_selection = ALT_extendedDeleteVersionRes;
+}
+return *field_extendedDeleteVersionRes;
+}
+
+const ExtendedDeleteVersionRes& VT2ECU::extendedDeleteVersionRes() const
+{
+if (union_selection != ALT_extendedDeleteVersionRes) TTCN_error("Using non-selected field extendedDeleteVersionRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_extendedDeleteVersionRes;
+}
+
+GetVersionsRes& VT2ECU::getVersionsRes()
+{
+if (union_selection != ALT_getVersionsRes) {
+clean_up();
+field_getVersionsRes = new GetVersionsRes;
+union_selection = ALT_getVersionsRes;
+}
+return *field_getVersionsRes;
+}
+
+const GetVersionsRes& VT2ECU::getVersionsRes() const
+{
+if (union_selection != ALT_getVersionsRes) TTCN_error("Using non-selected field getVersionsRes in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_getVersionsRes;
+}
+
+VTUnsupportedVTFunctionInd& VT2ECU::vtUnsupportedVTFunctionInd()
+{
+if (union_selection != ALT_vtUnsupportedVTFunctionInd) {
+clean_up();
+field_vtUnsupportedVTFunctionInd = new VTUnsupportedVTFunctionInd;
+union_selection = ALT_vtUnsupportedVTFunctionInd;
+}
+return *field_vtUnsupportedVTFunctionInd;
+}
+
+const VTUnsupportedVTFunctionInd& VT2ECU::vtUnsupportedVTFunctionInd() const
+{
+if (union_selection != ALT_vtUnsupportedVTFunctionInd) TTCN_error("Using non-selected field vtUnsupportedVTFunctionInd in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_vtUnsupportedVTFunctionInd;
+}
+
+VTStatusReq& VT2ECU::vtStatusReq()
+{
+if (union_selection != ALT_vtStatusReq) {
+clean_up();
+field_vtStatusReq = new VTStatusReq;
+union_selection = ALT_vtStatusReq;
+}
+return *field_vtStatusReq;
+}
+
+const VTStatusReq& VT2ECU::vtStatusReq() const
+{
+if (union_selection != ALT_vtStatusReq) TTCN_error("Using non-selected field vtStatusReq in a value of union type @IsobusVTMessageTypes.VT2ECU.");
+return *field_vtStatusReq;
+}
+
+boolean VT2ECU::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 @IsobusVTMessageTypes.VT2ECU.");
+return union_selection == checked_selection;
+}
+
+boolean VT2ECU::is_bound() const
+{
+  return union_selection != UNBOUND_VALUE;
+}
+
+boolean VT2ECU::is_value() const
+{
+switch (union_selection) {
+case UNBOUND_VALUE: return FALSE;
+case ALT_softKeyActivationReq: return field_softKeyActivationReq->is_value();
+case ALT_buttonActivationReq: return field_buttonActivationReq->is_value();
+case ALT_pointingEventReq: return field_pointingEventReq->is_value();
+case ALT_vtSelectInputObjectReq: return field_vtSelectInputObjectReq->is_value();
+case ALT_vtESCReq: return field_vtESCReq->is_value();
+case ALT_vtChangeNumericValueReq: return field_vtChangeNumericValueReq->is_value();
+case ALT_vtChangeActiveMaskReq: return field_vtChangeActiveMaskReq->is_value();
+case ALT_vtChangeSoftKeyMaskReq: return field_vtChangeSoftKeyMaskReq->is_value();
+case ALT_vtChangeStringValueReq: return field_vtChangeStringValueReq->is_value();
+case ALT_vtOnUserLayoutHideShowReq: return field_vtOnUserLayoutHideShowReq->is_value();
+case ALT_vtControlAudioSignalTerminationInd: return field_vtControlAudioSignalTerminationInd->is_value();
+case ALT_endOfObjectPoolRes: return field_endOfObjectPoolRes->is_value();
+case ALT_vtfunction32VT2ECU: return field_vtfunction32VT2ECU->is_value();
+case ALT_vtfunction34VT2ECU: return field_vtfunction34VT2ECU->is_value();
+case ALT_vtfunction36VT2ECU: return field_vtfunction36VT2ECU->is_value();
+case ALT_vtfunction37VT2ECU: return field_vtfunction37VT2ECU->is_value();
+case ALT_vtfunction39VT2ECU: return field_vtfunction39VT2ECU->is_value();
+case ALT_escRes: return field_escRes->is_value();
+case ALT_hideShowObjectRes: return field_hideShowObjectRes->is_value();
+case ALT_enableDisableObjectRes: return field_enableDisableObjectRes->is_value();
+case ALT_selectInputObjectRes: return field_selectInputObjectRes->is_value();
+case ALT_controlAudioSignalRes: return field_controlAudioSignalRes->is_value();
+case ALT_setAudioVolumeRes: return field_setAudioVolumeRes->is_value();
+case ALT_changeChildLocationRes: return field_changeChildLocationRes->is_value();
+case ALT_changeSizeRes: return field_changeSizeRes->is_value();
+case ALT_changeBackgroundColourRes: return field_changeBackgroundColourRes->is_value();
+case ALT_changeNumericValueRes: return field_changeNumericValueRes->is_value();
+case ALT_changeEndPointRes: return field_changeEndPointRes->is_value();
+case ALT_changeFontAttributesRes: return field_changeFontAttributesRes->is_value();
+case ALT_changeLineAttributesRes: return field_changeLineAttributesRes->is_value();
+case ALT_changeFillAttributesRes: return field_changeFillAttributesRes->is_value();
+case ALT_changeActiveMaskRes: return field_changeActiveMaskRes->is_value();
+case ALT_changeSoftKeyMaskRes: return field_changeSoftKeyMaskRes->is_value();
+case ALT_changeAttributeRes: return field_changeAttributeRes->is_value();
+case ALT_changePriorityRes: return field_changePriorityRes->is_value();
+case ALT_changeListItemRes: return field_changeListItemRes->is_value();
+case ALT_deleteObjectPoolRes: return field_deleteObjectPoolRes->is_value();
+case ALT_changeStringValueRes: return field_changeStringValueRes->is_value();
+case ALT_changeChildPositionRes: return field_changeChildPositionRes->is_value();
+case ALT_changeObjectLabelRes: return field_changeObjectLabelRes->is_value();
+case ALT_changePolygonPointRes: return field_changePolygonPointRes->is_value();
+case ALT_changePolygonScaleRes: return field_changePolygonScaleRes->is_value();
+case ALT_graphicsContextRes: return field_graphicsContextRes->is_value();
+case ALT_getAttributeValueRes: return field_getAttributeValueRes->is_value();
+case ALT_selectColourMapRes: return field_selectColourMapRes->is_value();
+case ALT_identifyVTRes: return field_identifyVTRes->is_value();
+case ALT_executeExtendedMacroRes: return field_executeExtendedMacroRes->is_value();
+case ALT_lockUnlockMaskRes: return field_lockUnlockMaskRes->is_value();
+case ALT_executeMacroRes: return field_executeMacroRes->is_value();
+case ALT_getMemoryRes: return field_getMemoryRes->is_value();
+case ALT_getNumberOfSoftKeysRes: return field_getNumberOfSoftKeysRes->is_value();
+case ALT_getTextFontDataRes: return field_getTextFontDataRes->is_value();
+case ALT_getHardwareRes: return field_getHardwareRes->is_value();
+case ALT_getSupportedWidecharsRes: return field_getSupportedWidecharsRes->is_value();
+case ALT_getWindowMaskDataRes: return field_getWindowMaskDataRes->is_value();
+case ALT_getSupportedObjectsRes: return field_getSupportedObjectsRes->is_value();
+case ALT_storeVersionRes: return field_storeVersionRes->is_value();
+case ALT_loadVersionRes: return field_loadVersionRes->is_value();
+case ALT_deleteVersionRes: return field_deleteVersionRes->is_value();
+case ALT_extendedGetVersionsRes: return field_extendedGetVersionsRes->is_value();
+case ALT_extendedStoreVersionRes: return field_extendedStoreVersionRes->is_value();
+case ALT_extendedLoadVersionRes: return field_extendedLoadVersionRes->is_value();
+case ALT_extendedDeleteVersionRes: return field_extendedDeleteVersionRes->is_value();
+case ALT_getVersionsRes: return field_getVersionsRes->is_value();
+case ALT_vtUnsupportedVTFunctionInd: return field_vtUnsupportedVTFunctionInd->is_value();
+case ALT_vtStatusReq: return field_vtStatusReq->is_value();
+default: TTCN_error("Invalid selection in union is_bound");}
+}
+
+void VT2ECU::clean_up()
+{
+switch (union_selection) {
+case ALT_softKeyActivationReq:
+  delete field_softKeyActivationReq;
+  break;
+case ALT_buttonActivationReq:
+  delete field_buttonActivationReq;
+  break;
+case ALT_pointingEventReq:
+  delete field_pointingEventReq;
+  break;
+case ALT_vtSelectInputObjectReq:
+  delete field_vtSelectInputObjectReq;
+  break;
+case ALT_vtESCReq:
+  delete field_vtESCReq;
+  break;
+case ALT_vtChangeNumericValueReq:
+  delete field_vtChangeNumericValueReq;
+  break;
+case ALT_vtChangeActiveMaskReq:
+  delete field_vtChangeActiveMaskReq;
+  break;
+case ALT_vtChangeSoftKeyMaskReq:
+  delete field_vtChangeSoftKeyMaskReq;
+  break;
+case ALT_vtChangeStringValueReq:
+  delete field_vtChangeStringValueReq;
+  break;
+case ALT_vtOnUserLayoutHideShowReq:
+  delete field_vtOnUserLayoutHideShowReq;
+  break;
+case ALT_vtControlAudioSignalTerminationInd:
+  delete field_vtControlAudioSignalTerminationInd;
+  break;
+case ALT_endOfObjectPoolRes:
+  delete field_endOfObjectPoolRes;
+  break;
+case ALT_vtfunction32VT2ECU:
+  delete field_vtfunction32VT2ECU;
+  break;
+case ALT_vtfunction34VT2ECU:
+  delete field_vtfunction34VT2ECU;
+  break;
+case ALT_vtfunction36VT2ECU:
+  delete field_vtfunction36VT2ECU;
+  break;
+case ALT_vtfunction37VT2ECU:
+  delete field_vtfunction37VT2ECU;
+  break;
+case ALT_vtfunction39VT2ECU:
+  delete field_vtfunction39VT2ECU;
+  break;
+case ALT_escRes:
+  delete field_escRes;
+  break;
+case ALT_hideShowObjectRes:
+  delete field_hideShowObjectRes;
+  break;
+case ALT_enableDisableObjectRes:
+  delete field_enableDisableObjectRes;
+  break;
+case ALT_selectInputObjectRes:
+  delete field_selectInputObjectRes;
+  break;
+case ALT_controlAudioSignalRes:
+  delete field_controlAudioSignalRes;
+  break;
+case ALT_setAudioVolumeRes:
+  delete field_setAudioVolumeRes;
+  break;
+case ALT_changeChildLocationRes:
+  delete field_changeChildLocationRes;
+  break;
+case ALT_changeSizeRes:
+  delete field_changeSizeRes;
+  break;
+case ALT_changeBackgroundColourRes:
+  delete field_changeBackgroundColourRes;
+  break;
+case ALT_changeNumericValueRes:
+  delete field_changeNumericValueRes;
+  break;
+case ALT_changeEndPointRes:
+  delete field_changeEndPointRes;
+  break;
+case ALT_changeFontAttributesRes:
+  delete field_changeFontAttributesRes;
+  break;
+case ALT_changeLineAttributesRes:
+  delete field_changeLineAttributesRes;
+  break;
+case ALT_changeFillAttributesRes:
+  delete field_changeFillAttributesRes;
+  break;
+case ALT_changeActiveMaskRes:
+  delete field_changeActiveMaskRes;
+  break;
+case ALT_changeSoftKeyMaskRes:
+  delete field_changeSoftKeyMaskRes;
+  break;
+case ALT_changeAttributeRes:
+  delete field_changeAttributeRes;
+  break;
+case ALT_changePriorityRes:
+  delete field_changePriorityRes;
+  break;
+case ALT_changeListItemRes:
+  delete field_changeListItemRes;
+  break;
+case ALT_deleteObjectPoolRes:
+  delete field_deleteObjectPoolRes;
+  break;
+case ALT_changeStringValueRes:
+  delete field_changeStringValueRes;
+  break;
+case ALT_changeChildPositionRes:
+  delete field_changeChildPositionRes;
+  break;
+case ALT_changeObjectLabelRes:
+  delete field_changeObjectLabelRes;
+  break;
+case ALT_changePolygonPointRes:
+  delete field_changePolygonPointRes;
+  break;
+case ALT_changePolygonScaleRes:
+  delete field_changePolygonScaleRes;
+  break;
+case ALT_graphicsContextRes:
+  delete field_graphicsContextRes;
+  break;
+case ALT_getAttributeValueRes:
+  delete field_getAttributeValueRes;
+  break;
+case ALT_selectColourMapRes:
+  delete field_selectColourMapRes;
+  break;
+case ALT_identifyVTRes:
+  delete field_identifyVTRes;
+  break;
+case ALT_executeExtendedMacroRes:
+  delete field_executeExtendedMacroRes;
+  break;
+case ALT_lockUnlockMaskRes:
+  delete field_lockUnlockMaskRes;
+  break;
+case ALT_executeMacroRes:
+  delete field_executeMacroRes;
+  break;
+case ALT_getMemoryRes:
+  delete field_getMemoryRes;
+  break;
+case ALT_getNumberOfSoftKeysRes:
+  delete field_getNumberOfSoftKeysRes;
+  break;
+case ALT_getTextFontDataRes:
+  delete field_getTextFontDataRes;
+  break;
+case ALT_getHardwareRes:
+  delete field_getHardwareRes;
+  break;
+case ALT_getSupportedWidecharsRes:
+  delete field_getSupportedWidecharsRes;
+  break;
+case ALT_getWindowMaskDataRes:
+  delete field_getWindowMaskDataRes;
+  break;
+case ALT_getSupportedObjectsRes:
+  delete field_getSupportedObjectsRes;
+  break;
+case ALT_storeVersionRes:
+  delete field_storeVersionRes;
+  break;
+case ALT_loadVersionRes:
+  delete field_loadVersionRes;
+  break;
+case ALT_deleteVersionRes:
+  delete field_deleteVersionRes;
+  break;
+case ALT_extendedGetVersionsRes:
+  delete field_extendedGetVersionsRes;
+  break;
+case ALT_extendedStoreVersionRes:
+  delete field_extendedStoreVersionRes;
+  break;
+case ALT_extendedLoadVersionRes:
+  delete field_extendedLoadVersionRes;
+  break;
+case ALT_extendedDeleteVersionRes:
+  delete field_extendedDeleteVersionRes;
+  break;
+case ALT_getVersionsRes:
+  delete field_getVersionsRes;
+  break;
+case ALT_vtUnsupportedVTFunctionInd:
+  delete field_vtUnsupportedVTFunctionInd;
+  break;
+case ALT_vtStatusReq:
+  delete field_vtStatusReq;
+  break;
+default:
+  break;
+}
+union_selection = UNBOUND_VALUE;
+}
+
+void VT2ECU::log() const
+{
+switch (union_selection) {
+case ALT_softKeyActivationReq:
+TTCN_Logger::log_event_str("{ softKeyActivationReq := ");
+field_softKeyActivationReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_buttonActivationReq:
+TTCN_Logger::log_event_str("{ buttonActivationReq := ");
+field_buttonActivationReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_pointingEventReq:
+TTCN_Logger::log_event_str("{ pointingEventReq := ");
+field_pointingEventReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_vtSelectInputObjectReq:
+TTCN_Logger::log_event_str("{ vtSelectInputObjectReq := ");
+field_vtSelectInputObjectReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_vtESCReq:
+TTCN_Logger::log_event_str("{ vtESCReq := ");
+field_vtESCReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_vtChangeNumericValueReq:
+TTCN_Logger::log_event_str("{ vtChangeNumericValueReq := ");
+field_vtChangeNumericValueReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_vtChangeActiveMaskReq:
+TTCN_Logger::log_event_str("{ vtChangeActiveMaskReq := ");
+field_vtChangeActiveMaskReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_vtChangeSoftKeyMaskReq:
+TTCN_Logger::log_event_str("{ vtChangeSoftKeyMaskReq := ");
+field_vtChangeSoftKeyMaskReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_vtChangeStringValueReq:
+TTCN_Logger::log_event_str("{ vtChangeStringValueReq := ");
+field_vtChangeStringValueReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_vtOnUserLayoutHideShowReq:
+TTCN_Logger::log_event_str("{ vtOnUserLayoutHideShowReq := ");
+field_vtOnUserLayoutHideShowReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_vtControlAudioSignalTerminationInd:
+TTCN_Logger::log_event_str("{ vtControlAudioSignalTerminationInd := ");
+field_vtControlAudioSignalTerminationInd->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_endOfObjectPoolRes:
+TTCN_Logger::log_event_str("{ endOfObjectPoolRes := ");
+field_endOfObjectPoolRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_vtfunction32VT2ECU:
+TTCN_Logger::log_event_str("{ vtfunction32VT2ECU := ");
+field_vtfunction32VT2ECU->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_vtfunction34VT2ECU:
+TTCN_Logger::log_event_str("{ vtfunction34VT2ECU := ");
+field_vtfunction34VT2ECU->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_vtfunction36VT2ECU:
+TTCN_Logger::log_event_str("{ vtfunction36VT2ECU := ");
+field_vtfunction36VT2ECU->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_vtfunction37VT2ECU:
+TTCN_Logger::log_event_str("{ vtfunction37VT2ECU := ");
+field_vtfunction37VT2ECU->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_vtfunction39VT2ECU:
+TTCN_Logger::log_event_str("{ vtfunction39VT2ECU := ");
+field_vtfunction39VT2ECU->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_escRes:
+TTCN_Logger::log_event_str("{ escRes := ");
+field_escRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_hideShowObjectRes:
+TTCN_Logger::log_event_str("{ hideShowObjectRes := ");
+field_hideShowObjectRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_enableDisableObjectRes:
+TTCN_Logger::log_event_str("{ enableDisableObjectRes := ");
+field_enableDisableObjectRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_selectInputObjectRes:
+TTCN_Logger::log_event_str("{ selectInputObjectRes := ");
+field_selectInputObjectRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_controlAudioSignalRes:
+TTCN_Logger::log_event_str("{ controlAudioSignalRes := ");
+field_controlAudioSignalRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_setAudioVolumeRes:
+TTCN_Logger::log_event_str("{ setAudioVolumeRes := ");
+field_setAudioVolumeRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_changeChildLocationRes:
+TTCN_Logger::log_event_str("{ changeChildLocationRes := ");
+field_changeChildLocationRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_changeSizeRes:
+TTCN_Logger::log_event_str("{ changeSizeRes := ");
+field_changeSizeRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_changeBackgroundColourRes:
+TTCN_Logger::log_event_str("{ changeBackgroundColourRes := ");
+field_changeBackgroundColourRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_changeNumericValueRes:
+TTCN_Logger::log_event_str("{ changeNumericValueRes := ");
+field_changeNumericValueRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_changeEndPointRes:
+TTCN_Logger::log_event_str("{ changeEndPointRes := ");
+field_changeEndPointRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_changeFontAttributesRes:
+TTCN_Logger::log_event_str("{ changeFontAttributesRes := ");
+field_changeFontAttributesRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_changeLineAttributesRes:
+TTCN_Logger::log_event_str("{ changeLineAttributesRes := ");
+field_changeLineAttributesRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_changeFillAttributesRes:
+TTCN_Logger::log_event_str("{ changeFillAttributesRes := ");
+field_changeFillAttributesRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_changeActiveMaskRes:
+TTCN_Logger::log_event_str("{ changeActiveMaskRes := ");
+field_changeActiveMaskRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_changeSoftKeyMaskRes:
+TTCN_Logger::log_event_str("{ changeSoftKeyMaskRes := ");
+field_changeSoftKeyMaskRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_changeAttributeRes:
+TTCN_Logger::log_event_str("{ changeAttributeRes := ");
+field_changeAttributeRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_changePriorityRes:
+TTCN_Logger::log_event_str("{ changePriorityRes := ");
+field_changePriorityRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_changeListItemRes:
+TTCN_Logger::log_event_str("{ changeListItemRes := ");
+field_changeListItemRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_deleteObjectPoolRes:
+TTCN_Logger::log_event_str("{ deleteObjectPoolRes := ");
+field_deleteObjectPoolRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_changeStringValueRes:
+TTCN_Logger::log_event_str("{ changeStringValueRes := ");
+field_changeStringValueRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_changeChildPositionRes:
+TTCN_Logger::log_event_str("{ changeChildPositionRes := ");
+field_changeChildPositionRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_changeObjectLabelRes:
+TTCN_Logger::log_event_str("{ changeObjectLabelRes := ");
+field_changeObjectLabelRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_changePolygonPointRes:
+TTCN_Logger::log_event_str("{ changePolygonPointRes := ");
+field_changePolygonPointRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_changePolygonScaleRes:
+TTCN_Logger::log_event_str("{ changePolygonScaleRes := ");
+field_changePolygonScaleRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_graphicsContextRes:
+TTCN_Logger::log_event_str("{ graphicsContextRes := ");
+field_graphicsContextRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_getAttributeValueRes:
+TTCN_Logger::log_event_str("{ getAttributeValueRes := ");
+field_getAttributeValueRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_selectColourMapRes:
+TTCN_Logger::log_event_str("{ selectColourMapRes := ");
+field_selectColourMapRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_identifyVTRes:
+TTCN_Logger::log_event_str("{ identifyVTRes := ");
+field_identifyVTRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_executeExtendedMacroRes:
+TTCN_Logger::log_event_str("{ executeExtendedMacroRes := ");
+field_executeExtendedMacroRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_lockUnlockMaskRes:
+TTCN_Logger::log_event_str("{ lockUnlockMaskRes := ");
+field_lockUnlockMaskRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_executeMacroRes:
+TTCN_Logger::log_event_str("{ executeMacroRes := ");
+field_executeMacroRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_getMemoryRes:
+TTCN_Logger::log_event_str("{ getMemoryRes := ");
+field_getMemoryRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_getNumberOfSoftKeysRes:
+TTCN_Logger::log_event_str("{ getNumberOfSoftKeysRes := ");
+field_getNumberOfSoftKeysRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_getTextFontDataRes:
+TTCN_Logger::log_event_str("{ getTextFontDataRes := ");
+field_getTextFontDataRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_getHardwareRes:
+TTCN_Logger::log_event_str("{ getHardwareRes := ");
+field_getHardwareRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_getSupportedWidecharsRes:
+TTCN_Logger::log_event_str("{ getSupportedWidecharsRes := ");
+field_getSupportedWidecharsRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_getWindowMaskDataRes:
+TTCN_Logger::log_event_str("{ getWindowMaskDataRes := ");
+field_getWindowMaskDataRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_getSupportedObjectsRes:
+TTCN_Logger::log_event_str("{ getSupportedObjectsRes := ");
+field_getSupportedObjectsRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_storeVersionRes:
+TTCN_Logger::log_event_str("{ storeVersionRes := ");
+field_storeVersionRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_loadVersionRes:
+TTCN_Logger::log_event_str("{ loadVersionRes := ");
+field_loadVersionRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_deleteVersionRes:
+TTCN_Logger::log_event_str("{ deleteVersionRes := ");
+field_deleteVersionRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_extendedGetVersionsRes:
+TTCN_Logger::log_event_str("{ extendedGetVersionsRes := ");
+field_extendedGetVersionsRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_extendedStoreVersionRes:
+TTCN_Logger::log_event_str("{ extendedStoreVersionRes := ");
+field_extendedStoreVersionRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_extendedLoadVersionRes:
+TTCN_Logger::log_event_str("{ extendedLoadVersionRes := ");
+field_extendedLoadVersionRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_extendedDeleteVersionRes:
+TTCN_Logger::log_event_str("{ extendedDeleteVersionRes := ");
+field_extendedDeleteVersionRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_getVersionsRes:
+TTCN_Logger::log_event_str("{ getVersionsRes := ");
+field_getVersionsRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_vtUnsupportedVTFunctionInd:
+TTCN_Logger::log_event_str("{ vtUnsupportedVTFunctionInd := ");
+field_vtUnsupportedVTFunctionInd->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_vtStatusReq:
+TTCN_Logger::log_event_str("{ vtStatusReq := ");
+field_vtStatusReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+default:
+TTCN_Logger::log_event_unbound();
+}
+}
+
+void VT2ECU::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, "softKeyActivationReq")) {
+    softKeyActivationReq().set_param(*mp_last);
+    if (!softKeyActivationReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "buttonActivationReq")) {
+    buttonActivationReq().set_param(*mp_last);
+    if (!buttonActivationReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "pointingEventReq")) {
+    pointingEventReq().set_param(*mp_last);
+    if (!pointingEventReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "vtSelectInputObjectReq")) {
+    vtSelectInputObjectReq().set_param(*mp_last);
+    if (!vtSelectInputObjectReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "vtESCReq")) {
+    vtESCReq().set_param(*mp_last);
+    if (!vtESCReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "vtChangeNumericValueReq")) {
+    vtChangeNumericValueReq().set_param(*mp_last);
+    if (!vtChangeNumericValueReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "vtChangeActiveMaskReq")) {
+    vtChangeActiveMaskReq().set_param(*mp_last);
+    if (!vtChangeActiveMaskReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "vtChangeSoftKeyMaskReq")) {
+    vtChangeSoftKeyMaskReq().set_param(*mp_last);
+    if (!vtChangeSoftKeyMaskReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "vtChangeStringValueReq")) {
+    vtChangeStringValueReq().set_param(*mp_last);
+    if (!vtChangeStringValueReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "vtOnUserLayoutHideShowReq")) {
+    vtOnUserLayoutHideShowReq().set_param(*mp_last);
+    if (!vtOnUserLayoutHideShowReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "vtControlAudioSignalTerminationInd")) {
+    vtControlAudioSignalTerminationInd().set_param(*mp_last);
+    if (!vtControlAudioSignalTerminationInd().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "endOfObjectPoolRes")) {
+    endOfObjectPoolRes().set_param(*mp_last);
+    if (!endOfObjectPoolRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "vtfunction32VT2ECU")) {
+    vtfunction32VT2ECU().set_param(*mp_last);
+    if (!vtfunction32VT2ECU().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "vtfunction34VT2ECU")) {
+    vtfunction34VT2ECU().set_param(*mp_last);
+    if (!vtfunction34VT2ECU().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "vtfunction36VT2ECU")) {
+    vtfunction36VT2ECU().set_param(*mp_last);
+    if (!vtfunction36VT2ECU().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "vtfunction37VT2ECU")) {
+    vtfunction37VT2ECU().set_param(*mp_last);
+    if (!vtfunction37VT2ECU().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "vtfunction39VT2ECU")) {
+    vtfunction39VT2ECU().set_param(*mp_last);
+    if (!vtfunction39VT2ECU().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "escRes")) {
+    escRes().set_param(*mp_last);
+    if (!escRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "hideShowObjectRes")) {
+    hideShowObjectRes().set_param(*mp_last);
+    if (!hideShowObjectRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "enableDisableObjectRes")) {
+    enableDisableObjectRes().set_param(*mp_last);
+    if (!enableDisableObjectRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "selectInputObjectRes")) {
+    selectInputObjectRes().set_param(*mp_last);
+    if (!selectInputObjectRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "controlAudioSignalRes")) {
+    controlAudioSignalRes().set_param(*mp_last);
+    if (!controlAudioSignalRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "setAudioVolumeRes")) {
+    setAudioVolumeRes().set_param(*mp_last);
+    if (!setAudioVolumeRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "changeChildLocationRes")) {
+    changeChildLocationRes().set_param(*mp_last);
+    if (!changeChildLocationRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "changeSizeRes")) {
+    changeSizeRes().set_param(*mp_last);
+    if (!changeSizeRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "changeBackgroundColourRes")) {
+    changeBackgroundColourRes().set_param(*mp_last);
+    if (!changeBackgroundColourRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "changeNumericValueRes")) {
+    changeNumericValueRes().set_param(*mp_last);
+    if (!changeNumericValueRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "changeEndPointRes")) {
+    changeEndPointRes().set_param(*mp_last);
+    if (!changeEndPointRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "changeFontAttributesRes")) {
+    changeFontAttributesRes().set_param(*mp_last);
+    if (!changeFontAttributesRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "changeLineAttributesRes")) {
+    changeLineAttributesRes().set_param(*mp_last);
+    if (!changeLineAttributesRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "changeFillAttributesRes")) {
+    changeFillAttributesRes().set_param(*mp_last);
+    if (!changeFillAttributesRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "changeActiveMaskRes")) {
+    changeActiveMaskRes().set_param(*mp_last);
+    if (!changeActiveMaskRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "changeSoftKeyMaskRes")) {
+    changeSoftKeyMaskRes().set_param(*mp_last);
+    if (!changeSoftKeyMaskRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "changeAttributeRes")) {
+    changeAttributeRes().set_param(*mp_last);
+    if (!changeAttributeRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "changePriorityRes")) {
+    changePriorityRes().set_param(*mp_last);
+    if (!changePriorityRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "changeListItemRes")) {
+    changeListItemRes().set_param(*mp_last);
+    if (!changeListItemRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "deleteObjectPoolRes")) {
+    deleteObjectPoolRes().set_param(*mp_last);
+    if (!deleteObjectPoolRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "changeStringValueRes")) {
+    changeStringValueRes().set_param(*mp_last);
+    if (!changeStringValueRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "changeChildPositionRes")) {
+    changeChildPositionRes().set_param(*mp_last);
+    if (!changeChildPositionRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "changeObjectLabelRes")) {
+    changeObjectLabelRes().set_param(*mp_last);
+    if (!changeObjectLabelRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "changePolygonPointRes")) {
+    changePolygonPointRes().set_param(*mp_last);
+    if (!changePolygonPointRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "changePolygonScaleRes")) {
+    changePolygonScaleRes().set_param(*mp_last);
+    if (!changePolygonScaleRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "graphicsContextRes")) {
+    graphicsContextRes().set_param(*mp_last);
+    if (!graphicsContextRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "getAttributeValueRes")) {
+    getAttributeValueRes().set_param(*mp_last);
+    if (!getAttributeValueRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "selectColourMapRes")) {
+    selectColourMapRes().set_param(*mp_last);
+    if (!selectColourMapRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "identifyVTRes")) {
+    identifyVTRes().set_param(*mp_last);
+    if (!identifyVTRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "executeExtendedMacroRes")) {
+    executeExtendedMacroRes().set_param(*mp_last);
+    if (!executeExtendedMacroRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "lockUnlockMaskRes")) {
+    lockUnlockMaskRes().set_param(*mp_last);
+    if (!lockUnlockMaskRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "executeMacroRes")) {
+    executeMacroRes().set_param(*mp_last);
+    if (!executeMacroRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "getMemoryRes")) {
+    getMemoryRes().set_param(*mp_last);
+    if (!getMemoryRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "getNumberOfSoftKeysRes")) {
+    getNumberOfSoftKeysRes().set_param(*mp_last);
+    if (!getNumberOfSoftKeysRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "getTextFontDataRes")) {
+    getTextFontDataRes().set_param(*mp_last);
+    if (!getTextFontDataRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "getHardwareRes")) {
+    getHardwareRes().set_param(*mp_last);
+    if (!getHardwareRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "getSupportedWidecharsRes")) {
+    getSupportedWidecharsRes().set_param(*mp_last);
+    if (!getSupportedWidecharsRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "getWindowMaskDataRes")) {
+    getWindowMaskDataRes().set_param(*mp_last);
+    if (!getWindowMaskDataRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "getSupportedObjectsRes")) {
+    getSupportedObjectsRes().set_param(*mp_last);
+    if (!getSupportedObjectsRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "storeVersionRes")) {
+    storeVersionRes().set_param(*mp_last);
+    if (!storeVersionRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "loadVersionRes")) {
+    loadVersionRes().set_param(*mp_last);
+    if (!loadVersionRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "deleteVersionRes")) {
+    deleteVersionRes().set_param(*mp_last);
+    if (!deleteVersionRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "extendedGetVersionsRes")) {
+    extendedGetVersionsRes().set_param(*mp_last);
+    if (!extendedGetVersionsRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "extendedStoreVersionRes")) {
+    extendedStoreVersionRes().set_param(*mp_last);
+    if (!extendedStoreVersionRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "extendedLoadVersionRes")) {
+    extendedLoadVersionRes().set_param(*mp_last);
+    if (!extendedLoadVersionRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "extendedDeleteVersionRes")) {
+    extendedDeleteVersionRes().set_param(*mp_last);
+    if (!extendedDeleteVersionRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "getVersionsRes")) {
+    getVersionsRes().set_param(*mp_last);
+    if (!getVersionsRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "vtUnsupportedVTFunctionInd")) {
+    vtUnsupportedVTFunctionInd().set_param(*mp_last);
+    if (!vtUnsupportedVTFunctionInd().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "vtStatusReq")) {
+    vtStatusReq().set_param(*mp_last);
+    if (!vtStatusReq().is_bound()) clean_up();
+    return;
+  }
+  mp_last->error("Field %s does not exist in type @IsobusVTMessageTypes.VT2ECU.", last_name);
+}
+
+void VT2ECU::set_implicit_omit()
+{
+switch (union_selection) {
+case ALT_softKeyActivationReq:
+field_softKeyActivationReq->set_implicit_omit(); break;
+case ALT_buttonActivationReq:
+field_buttonActivationReq->set_implicit_omit(); break;
+case ALT_pointingEventReq:
+field_pointingEventReq->set_implicit_omit(); break;
+case ALT_vtSelectInputObjectReq:
+field_vtSelectInputObjectReq->set_implicit_omit(); break;
+case ALT_vtESCReq:
+field_vtESCReq->set_implicit_omit(); break;
+case ALT_vtChangeNumericValueReq:
+field_vtChangeNumericValueReq->set_implicit_omit(); break;
+case ALT_vtChangeActiveMaskReq:
+field_vtChangeActiveMaskReq->set_implicit_omit(); break;
+case ALT_vtChangeSoftKeyMaskReq:
+field_vtChangeSoftKeyMaskReq->set_implicit_omit(); break;
+case ALT_vtChangeStringValueReq:
+field_vtChangeStringValueReq->set_implicit_omit(); break;
+case ALT_vtOnUserLayoutHideShowReq:
+field_vtOnUserLayoutHideShowReq->set_implicit_omit(); break;
+case ALT_vtControlAudioSignalTerminationInd:
+field_vtControlAudioSignalTerminationInd->set_implicit_omit(); break;
+case ALT_endOfObjectPoolRes:
+field_endOfObjectPoolRes->set_implicit_omit(); break;
+case ALT_vtfunction32VT2ECU:
+field_vtfunction32VT2ECU->set_implicit_omit(); break;
+case ALT_vtfunction34VT2ECU:
+field_vtfunction34VT2ECU->set_implicit_omit(); break;
+case ALT_vtfunction36VT2ECU:
+field_vtfunction36VT2ECU->set_implicit_omit(); break;
+case ALT_vtfunction37VT2ECU:
+field_vtfunction37VT2ECU->set_implicit_omit(); break;
+case ALT_vtfunction39VT2ECU:
+field_vtfunction39VT2ECU->set_implicit_omit(); break;
+case ALT_escRes:
+field_escRes->set_implicit_omit(); break;
+case ALT_hideShowObjectRes:
+field_hideShowObjectRes->set_implicit_omit(); break;
+case ALT_enableDisableObjectRes:
+field_enableDisableObjectRes->set_implicit_omit(); break;
+case ALT_selectInputObjectRes:
+field_selectInputObjectRes->set_implicit_omit(); break;
+case ALT_controlAudioSignalRes:
+field_controlAudioSignalRes->set_implicit_omit(); break;
+case ALT_setAudioVolumeRes:
+field_setAudioVolumeRes->set_implicit_omit(); break;
+case ALT_changeChildLocationRes:
+field_changeChildLocationRes->set_implicit_omit(); break;
+case ALT_changeSizeRes:
+field_changeSizeRes->set_implicit_omit(); break;
+case ALT_changeBackgroundColourRes:
+field_changeBackgroundColourRes->set_implicit_omit(); break;
+case ALT_changeNumericValueRes:
+field_changeNumericValueRes->set_implicit_omit(); break;
+case ALT_changeEndPointRes:
+field_changeEndPointRes->set_implicit_omit(); break;
+case ALT_changeFontAttributesRes:
+field_changeFontAttributesRes->set_implicit_omit(); break;
+case ALT_changeLineAttributesRes:
+field_changeLineAttributesRes->set_implicit_omit(); break;
+case ALT_changeFillAttributesRes:
+field_changeFillAttributesRes->set_implicit_omit(); break;
+case ALT_changeActiveMaskRes:
+field_changeActiveMaskRes->set_implicit_omit(); break;
+case ALT_changeSoftKeyMaskRes:
+field_changeSoftKeyMaskRes->set_implicit_omit(); break;
+case ALT_changeAttributeRes:
+field_changeAttributeRes->set_implicit_omit(); break;
+case ALT_changePriorityRes:
+field_changePriorityRes->set_implicit_omit(); break;
+case ALT_changeListItemRes:
+field_changeListItemRes->set_implicit_omit(); break;
+case ALT_deleteObjectPoolRes:
+field_deleteObjectPoolRes->set_implicit_omit(); break;
+case ALT_changeStringValueRes:
+field_changeStringValueRes->set_implicit_omit(); break;
+case ALT_changeChildPositionRes:
+field_changeChildPositionRes->set_implicit_omit(); break;
+case ALT_changeObjectLabelRes:
+field_changeObjectLabelRes->set_implicit_omit(); break;
+case ALT_changePolygonPointRes:
+field_changePolygonPointRes->set_implicit_omit(); break;
+case ALT_changePolygonScaleRes:
+field_changePolygonScaleRes->set_implicit_omit(); break;
+case ALT_graphicsContextRes:
+field_graphicsContextRes->set_implicit_omit(); break;
+case ALT_getAttributeValueRes:
+field_getAttributeValueRes->set_implicit_omit(); break;
+case ALT_selectColourMapRes:
+field_selectColourMapRes->set_implicit_omit(); break;
+case ALT_identifyVTRes:
+field_identifyVTRes->set_implicit_omit(); break;
+case ALT_executeExtendedMacroRes:
+field_executeExtendedMacroRes->set_implicit_omit(); break;
+case ALT_lockUnlockMaskRes:
+field_lockUnlockMaskRes->set_implicit_omit(); break;
+case ALT_executeMacroRes:
+field_executeMacroRes->set_implicit_omit(); break;
+case ALT_getMemoryRes:
+field_getMemoryRes->set_implicit_omit(); break;
+case ALT_getNumberOfSoftKeysRes:
+field_getNumberOfSoftKeysRes->set_implicit_omit(); break;
+case ALT_getTextFontDataRes:
+field_getTextFontDataRes->set_implicit_omit(); break;
+case ALT_getHardwareRes:
+field_getHardwareRes->set_implicit_omit(); break;
+case ALT_getSupportedWidecharsRes:
+field_getSupportedWidecharsRes->set_implicit_omit(); break;
+case ALT_getWindowMaskDataRes:
+field_getWindowMaskDataRes->set_implicit_omit(); break;
+case ALT_getSupportedObjectsRes:
+field_getSupportedObjectsRes->set_implicit_omit(); break;
+case ALT_storeVersionRes:
+field_storeVersionRes->set_implicit_omit(); break;
+case ALT_loadVersionRes:
+field_loadVersionRes->set_implicit_omit(); break;
+case ALT_deleteVersionRes:
+field_deleteVersionRes->set_implicit_omit(); break;
+case ALT_extendedGetVersionsRes:
+field_extendedGetVersionsRes->set_implicit_omit(); break;
+case ALT_extendedStoreVersionRes:
+field_extendedStoreVersionRes->set_implicit_omit(); break;
+case ALT_extendedLoadVersionRes:
+field_extendedLoadVersionRes->set_implicit_omit(); break;
+case ALT_extendedDeleteVersionRes:
+field_extendedDeleteVersionRes->set_implicit_omit(); break;
+case ALT_getVersionsRes:
+field_getVersionsRes->set_implicit_omit(); break;
+case ALT_vtUnsupportedVTFunctionInd:
+field_vtUnsupportedVTFunctionInd->set_implicit_omit(); break;
+case ALT_vtStatusReq:
+field_vtStatusReq->set_implicit_omit(); break;
+default: break;
+}
+}
+
+void VT2ECU::encode_text(Text_Buf& text_buf) const
+{
+text_buf.push_int(union_selection);
+switch (union_selection) {
+case ALT_softKeyActivationReq:
+field_softKeyActivationReq->encode_text(text_buf);
+break;
+case ALT_buttonActivationReq:
+field_buttonActivationReq->encode_text(text_buf);
+break;
+case ALT_pointingEventReq:
+field_pointingEventReq->encode_text(text_buf);
+break;
+case ALT_vtSelectInputObjectReq:
+field_vtSelectInputObjectReq->encode_text(text_buf);
+break;
+case ALT_vtESCReq:
+field_vtESCReq->encode_text(text_buf);
+break;
+case ALT_vtChangeNumericValueReq:
+field_vtChangeNumericValueReq->encode_text(text_buf);
+break;
+case ALT_vtChangeActiveMaskReq:
+field_vtChangeActiveMaskReq->encode_text(text_buf);
+break;
+case ALT_vtChangeSoftKeyMaskReq:
+field_vtChangeSoftKeyMaskReq->encode_text(text_buf);
+break;
+case ALT_vtChangeStringValueReq:
+field_vtChangeStringValueReq->encode_text(text_buf);
+break;
+case ALT_vtOnUserLayoutHideShowReq:
+field_vtOnUserLayoutHideShowReq->encode_text(text_buf);
+break;
+case ALT_vtControlAudioSignalTerminationInd:
+field_vtControlAudioSignalTerminationInd->encode_text(text_buf);
+break;
+case ALT_endOfObjectPoolRes:
+field_endOfObjectPoolRes->encode_text(text_buf);
+break;
+case ALT_vtfunction32VT2ECU:
+field_vtfunction32VT2ECU->encode_text(text_buf);
+break;
+case ALT_vtfunction34VT2ECU:
+field_vtfunction34VT2ECU->encode_text(text_buf);
+break;
+case ALT_vtfunction36VT2ECU:
+field_vtfunction36VT2ECU->encode_text(text_buf);
+break;
+case ALT_vtfunction37VT2ECU:
+field_vtfunction37VT2ECU->encode_text(text_buf);
+break;
+case ALT_vtfunction39VT2ECU:
+field_vtfunction39VT2ECU->encode_text(text_buf);
+break;
+case ALT_escRes:
+field_escRes->encode_text(text_buf);
+break;
+case ALT_hideShowObjectRes:
+field_hideShowObjectRes->encode_text(text_buf);
+break;
+case ALT_enableDisableObjectRes:
+field_enableDisableObjectRes->encode_text(text_buf);
+break;
+case ALT_selectInputObjectRes:
+field_selectInputObjectRes->encode_text(text_buf);
+break;
+case ALT_controlAudioSignalRes:
+field_controlAudioSignalRes->encode_text(text_buf);
+break;
+case ALT_setAudioVolumeRes:
+field_setAudioVolumeRes->encode_text(text_buf);
+break;
+case ALT_changeChildLocationRes:
+field_changeChildLocationRes->encode_text(text_buf);
+break;
+case ALT_changeSizeRes:
+field_changeSizeRes->encode_text(text_buf);
+break;
+case ALT_changeBackgroundColourRes:
+field_changeBackgroundColourRes->encode_text(text_buf);
+break;
+case ALT_changeNumericValueRes:
+field_changeNumericValueRes->encode_text(text_buf);
+break;
+case ALT_changeEndPointRes:
+field_changeEndPointRes->encode_text(text_buf);
+break;
+case ALT_changeFontAttributesRes:
+field_changeFontAttributesRes->encode_text(text_buf);
+break;
+case ALT_changeLineAttributesRes:
+field_changeLineAttributesRes->encode_text(text_buf);
+break;
+case ALT_changeFillAttributesRes:
+field_changeFillAttributesRes->encode_text(text_buf);
+break;
+case ALT_changeActiveMaskRes:
+field_changeActiveMaskRes->encode_text(text_buf);
+break;
+case ALT_changeSoftKeyMaskRes:
+field_changeSoftKeyMaskRes->encode_text(text_buf);
+break;
+case ALT_changeAttributeRes:
+field_changeAttributeRes->encode_text(text_buf);
+break;
+case ALT_changePriorityRes:
+field_changePriorityRes->encode_text(text_buf);
+break;
+case ALT_changeListItemRes:
+field_changeListItemRes->encode_text(text_buf);
+break;
+case ALT_deleteObjectPoolRes:
+field_deleteObjectPoolRes->encode_text(text_buf);
+break;
+case ALT_changeStringValueRes:
+field_changeStringValueRes->encode_text(text_buf);
+break;
+case ALT_changeChildPositionRes:
+field_changeChildPositionRes->encode_text(text_buf);
+break;
+case ALT_changeObjectLabelRes:
+field_changeObjectLabelRes->encode_text(text_buf);
+break;
+case ALT_changePolygonPointRes:
+field_changePolygonPointRes->encode_text(text_buf);
+break;
+case ALT_changePolygonScaleRes:
+field_changePolygonScaleRes->encode_text(text_buf);
+break;
+case ALT_graphicsContextRes:
+field_graphicsContextRes->encode_text(text_buf);
+break;
+case ALT_getAttributeValueRes:
+field_getAttributeValueRes->encode_text(text_buf);
+break;
+case ALT_selectColourMapRes:
+field_selectColourMapRes->encode_text(text_buf);
+break;
+case ALT_identifyVTRes:
+field_identifyVTRes->encode_text(text_buf);
+break;
+case ALT_executeExtendedMacroRes:
+field_executeExtendedMacroRes->encode_text(text_buf);
+break;
+case ALT_lockUnlockMaskRes:
+field_lockUnlockMaskRes->encode_text(text_buf);
+break;
+case ALT_executeMacroRes:
+field_executeMacroRes->encode_text(text_buf);
+break;
+case ALT_getMemoryRes:
+field_getMemoryRes->encode_text(text_buf);
+break;
+case ALT_getNumberOfSoftKeysRes:
+field_getNumberOfSoftKeysRes->encode_text(text_buf);
+break;
+case ALT_getTextFontDataRes:
+field_getTextFontDataRes->encode_text(text_buf);
+break;
+case ALT_getHardwareRes:
+field_getHardwareRes->encode_text(text_buf);
+break;
+case ALT_getSupportedWidecharsRes:
+field_getSupportedWidecharsRes->encode_text(text_buf);
+break;
+case ALT_getWindowMaskDataRes:
+field_getWindowMaskDataRes->encode_text(text_buf);
+break;
+case ALT_getSupportedObjectsRes:
+field_getSupportedObjectsRes->encode_text(text_buf);
+break;
+case ALT_storeVersionRes:
+field_storeVersionRes->encode_text(text_buf);
+break;
+case ALT_loadVersionRes:
+field_loadVersionRes->encode_text(text_buf);
+break;
+case ALT_deleteVersionRes:
+field_deleteVersionRes->encode_text(text_buf);
+break;
+case ALT_extendedGetVersionsRes:
+field_extendedGetVersionsRes->encode_text(text_buf);
+break;
+case ALT_extendedStoreVersionRes:
+field_extendedStoreVersionRes->encode_text(text_buf);
+break;
+case ALT_extendedLoadVersionRes:
+field_extendedLoadVersionRes->encode_text(text_buf);
+break;
+case ALT_extendedDeleteVersionRes:
+field_extendedDeleteVersionRes->encode_text(text_buf);
+break;
+case ALT_getVersionsRes:
+field_getVersionsRes->encode_text(text_buf);
+break;
+case ALT_vtUnsupportedVTFunctionInd:
+field_vtUnsupportedVTFunctionInd->encode_text(text_buf);
+break;
+case ALT_vtStatusReq:
+field_vtStatusReq->encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an unbound value of union type @IsobusVTMessageTypes.VT2ECU.");
+}
+}
+
+void VT2ECU::decode_text(Text_Buf& text_buf)
+{
+switch ((union_selection_type)text_buf.pull_int().get_val()) {
+case ALT_softKeyActivationReq:
+softKeyActivationReq().decode_text(text_buf);
+break;
+case ALT_buttonActivationReq:
+buttonActivationReq().decode_text(text_buf);
+break;
+case ALT_pointingEventReq:
+pointingEventReq().decode_text(text_buf);
+break;
+case ALT_vtSelectInputObjectReq:
+vtSelectInputObjectReq().decode_text(text_buf);
+break;
+case ALT_vtESCReq:
+vtESCReq().decode_text(text_buf);
+break;
+case ALT_vtChangeNumericValueReq:
+vtChangeNumericValueReq().decode_text(text_buf);
+break;
+case ALT_vtChangeActiveMaskReq:
+vtChangeActiveMaskReq().decode_text(text_buf);
+break;
+case ALT_vtChangeSoftKeyMaskReq:
+vtChangeSoftKeyMaskReq().decode_text(text_buf);
+break;
+case ALT_vtChangeStringValueReq:
+vtChangeStringValueReq().decode_text(text_buf);
+break;
+case ALT_vtOnUserLayoutHideShowReq:
+vtOnUserLayoutHideShowReq().decode_text(text_buf);
+break;
+case ALT_vtControlAudioSignalTerminationInd:
+vtControlAudioSignalTerminationInd().decode_text(text_buf);
+break;
+case ALT_endOfObjectPoolRes:
+endOfObjectPoolRes().decode_text(text_buf);
+break;
+case ALT_vtfunction32VT2ECU:
+vtfunction32VT2ECU().decode_text(text_buf);
+break;
+case ALT_vtfunction34VT2ECU:
+vtfunction34VT2ECU().decode_text(text_buf);
+break;
+case ALT_vtfunction36VT2ECU:
+vtfunction36VT2ECU().decode_text(text_buf);
+break;
+case ALT_vtfunction37VT2ECU:
+vtfunction37VT2ECU().decode_text(text_buf);
+break;
+case ALT_vtfunction39VT2ECU:
+vtfunction39VT2ECU().decode_text(text_buf);
+break;
+case ALT_escRes:
+escRes().decode_text(text_buf);
+break;
+case ALT_hideShowObjectRes:
+hideShowObjectRes().decode_text(text_buf);
+break;
+case ALT_enableDisableObjectRes:
+enableDisableObjectRes().decode_text(text_buf);
+break;
+case ALT_selectInputObjectRes:
+selectInputObjectRes().decode_text(text_buf);
+break;
+case ALT_controlAudioSignalRes:
+controlAudioSignalRes().decode_text(text_buf);
+break;
+case ALT_setAudioVolumeRes:
+setAudioVolumeRes().decode_text(text_buf);
+break;
+case ALT_changeChildLocationRes:
+changeChildLocationRes().decode_text(text_buf);
+break;
+case ALT_changeSizeRes:
+changeSizeRes().decode_text(text_buf);
+break;
+case ALT_changeBackgroundColourRes:
+changeBackgroundColourRes().decode_text(text_buf);
+break;
+case ALT_changeNumericValueRes:
+changeNumericValueRes().decode_text(text_buf);
+break;
+case ALT_changeEndPointRes:
+changeEndPointRes().decode_text(text_buf);
+break;
+case ALT_changeFontAttributesRes:
+changeFontAttributesRes().decode_text(text_buf);
+break;
+case ALT_changeLineAttributesRes:
+changeLineAttributesRes().decode_text(text_buf);
+break;
+case ALT_changeFillAttributesRes:
+changeFillAttributesRes().decode_text(text_buf);
+break;
+case ALT_changeActiveMaskRes:
+changeActiveMaskRes().decode_text(text_buf);
+break;
+case ALT_changeSoftKeyMaskRes:
+changeSoftKeyMaskRes().decode_text(text_buf);
+break;
+case ALT_changeAttributeRes:
+changeAttributeRes().decode_text(text_buf);
+break;
+case ALT_changePriorityRes:
+changePriorityRes().decode_text(text_buf);
+break;
+case ALT_changeListItemRes:
+changeListItemRes().decode_text(text_buf);
+break;
+case ALT_deleteObjectPoolRes:
+deleteObjectPoolRes().decode_text(text_buf);
+break;
+case ALT_changeStringValueRes:
+changeStringValueRes().decode_text(text_buf);
+break;
+case ALT_changeChildPositionRes:
+changeChildPositionRes().decode_text(text_buf);
+break;
+case ALT_changeObjectLabelRes:
+changeObjectLabelRes().decode_text(text_buf);
+break;
+case ALT_changePolygonPointRes:
+changePolygonPointRes().decode_text(text_buf);
+break;
+case ALT_changePolygonScaleRes:
+changePolygonScaleRes().decode_text(text_buf);
+break;
+case ALT_graphicsContextRes:
+graphicsContextRes().decode_text(text_buf);
+break;
+case ALT_getAttributeValueRes:
+getAttributeValueRes().decode_text(text_buf);
+break;
+case ALT_selectColourMapRes:
+selectColourMapRes().decode_text(text_buf);
+break;
+case ALT_identifyVTRes:
+identifyVTRes().decode_text(text_buf);
+break;
+case ALT_executeExtendedMacroRes:
+executeExtendedMacroRes().decode_text(text_buf);
+break;
+case ALT_lockUnlockMaskRes:
+lockUnlockMaskRes().decode_text(text_buf);
+break;
+case ALT_executeMacroRes:
+executeMacroRes().decode_text(text_buf);
+break;
+case ALT_getMemoryRes:
+getMemoryRes().decode_text(text_buf);
+break;
+case ALT_getNumberOfSoftKeysRes:
+getNumberOfSoftKeysRes().decode_text(text_buf);
+break;
+case ALT_getTextFontDataRes:
+getTextFontDataRes().decode_text(text_buf);
+break;
+case ALT_getHardwareRes:
+getHardwareRes().decode_text(text_buf);
+break;
+case ALT_getSupportedWidecharsRes:
+getSupportedWidecharsRes().decode_text(text_buf);
+break;
+case ALT_getWindowMaskDataRes:
+getWindowMaskDataRes().decode_text(text_buf);
+break;
+case ALT_getSupportedObjectsRes:
+getSupportedObjectsRes().decode_text(text_buf);
+break;
+case ALT_storeVersionRes:
+storeVersionRes().decode_text(text_buf);
+break;
+case ALT_loadVersionRes:
+loadVersionRes().decode_text(text_buf);
+break;
+case ALT_deleteVersionRes:
+deleteVersionRes().decode_text(text_buf);
+break;
+case ALT_extendedGetVersionsRes:
+extendedGetVersionsRes().decode_text(text_buf);
+break;
+case ALT_extendedStoreVersionRes:
+extendedStoreVersionRes().decode_text(text_buf);
+break;
+case ALT_extendedLoadVersionRes:
+extendedLoadVersionRes().decode_text(text_buf);
+break;
+case ALT_extendedDeleteVersionRes:
+extendedDeleteVersionRes().decode_text(text_buf);
+break;
+case ALT_getVersionsRes:
+getVersionsRes().decode_text(text_buf);
+break;
+case ALT_vtUnsupportedVTFunctionInd:
+vtUnsupportedVTFunctionInd().decode_text(text_buf);
+break;
+case ALT_vtStatusReq:
+vtStatusReq().decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for type @IsobusVTMessageTypes.VT2ECU.");
+}
+}
+
+void VT2ECU::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void VT2ECU::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int VT2ECU::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, SoftKeyActivationReq_descr_.raw->forceomit);
+      decoded_length = softKeyActivationReq().RAW_decode(SoftKeyActivationReq_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, ButtonActivationReq_descr_.raw->forceomit);
+      decoded_length = buttonActivationReq().RAW_decode(ButtonActivationReq_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, PointingEventReq_descr_.raw->forceomit);
+      decoded_length = pointingEventReq().RAW_decode(PointingEventReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 3: {
+      RAW_Force_Omit field_force_omit(3, force_omit, VTSelectInputObjectReq_descr_.raw->forceomit);
+      decoded_length = vtSelectInputObjectReq().RAW_decode(VTSelectInputObjectReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 4: {
+      RAW_Force_Omit field_force_omit(4, force_omit, VTESCReq_descr_.raw->forceomit);
+      decoded_length = vtESCReq().RAW_decode(VTESCReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 5: {
+      RAW_Force_Omit field_force_omit(5, force_omit, VTChangeNumericValueReq_descr_.raw->forceomit);
+      decoded_length = vtChangeNumericValueReq().RAW_decode(VTChangeNumericValueReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 6: {
+      RAW_Force_Omit field_force_omit(6, force_omit, VTChangeActiveMaskReq_descr_.raw->forceomit);
+      decoded_length = vtChangeActiveMaskReq().RAW_decode(VTChangeActiveMaskReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 7: {
+      RAW_Force_Omit field_force_omit(7, force_omit, VTChangeSoftKeyMaskReq_descr_.raw->forceomit);
+      decoded_length = vtChangeSoftKeyMaskReq().RAW_decode(VTChangeSoftKeyMaskReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 8: {
+      RAW_Force_Omit field_force_omit(8, force_omit, VTChangeStringValueReq_descr_.raw->forceomit);
+      decoded_length = vtChangeStringValueReq().RAW_decode(VTChangeStringValueReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 9: {
+      RAW_Force_Omit field_force_omit(9, force_omit, VTOnUserLayoutHideShowReq_descr_.raw->forceomit);
+      decoded_length = vtOnUserLayoutHideShowReq().RAW_decode(VTOnUserLayoutHideShowReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 10: {
+      RAW_Force_Omit field_force_omit(10, force_omit, VTControlAudioSignalTerminationInd_descr_.raw->forceomit);
+      decoded_length = vtControlAudioSignalTerminationInd().RAW_decode(VTControlAudioSignalTerminationInd_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 11: {
+      RAW_Force_Omit field_force_omit(11, force_omit, EndOfObjectPoolRes_descr_.raw->forceomit);
+      decoded_length = endOfObjectPoolRes().RAW_decode(EndOfObjectPoolRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 12: {
+      RAW_Force_Omit field_force_omit(12, force_omit, VTfunction32VT2ECU_descr_.raw->forceomit);
+      decoded_length = vtfunction32VT2ECU().RAW_decode(VTfunction32VT2ECU_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 13: {
+      RAW_Force_Omit field_force_omit(13, force_omit, VTfunction34VT2ECU_descr_.raw->forceomit);
+      decoded_length = vtfunction34VT2ECU().RAW_decode(VTfunction34VT2ECU_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 14: {
+      RAW_Force_Omit field_force_omit(14, force_omit, VTfunction36VT2ECU_descr_.raw->forceomit);
+      decoded_length = vtfunction36VT2ECU().RAW_decode(VTfunction36VT2ECU_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 15: {
+      RAW_Force_Omit field_force_omit(15, force_omit, VTfunction37VT2ECU_descr_.raw->forceomit);
+      decoded_length = vtfunction37VT2ECU().RAW_decode(VTfunction37VT2ECU_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 16: {
+      RAW_Force_Omit field_force_omit(16, force_omit, VTfunction39VT2ECU_descr_.raw->forceomit);
+      decoded_length = vtfunction39VT2ECU().RAW_decode(VTfunction39VT2ECU_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 17: {
+      RAW_Force_Omit field_force_omit(17, force_omit, ESCres_descr_.raw->forceomit);
+      decoded_length = escRes().RAW_decode(ESCres_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 18: {
+      RAW_Force_Omit field_force_omit(18, force_omit, HideShowObjectRes_descr_.raw->forceomit);
+      decoded_length = hideShowObjectRes().RAW_decode(HideShowObjectRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 19: {
+      RAW_Force_Omit field_force_omit(19, force_omit, EnableDisableObjectRes_descr_.raw->forceomit);
+      decoded_length = enableDisableObjectRes().RAW_decode(EnableDisableObjectRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 20: {
+      RAW_Force_Omit field_force_omit(20, force_omit, SelectInputObjectRes_descr_.raw->forceomit);
+      decoded_length = selectInputObjectRes().RAW_decode(SelectInputObjectRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 21: {
+      RAW_Force_Omit field_force_omit(21, force_omit, ControlAudioSignalRes_descr_.raw->forceomit);
+      decoded_length = controlAudioSignalRes().RAW_decode(ControlAudioSignalRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 22: {
+      RAW_Force_Omit field_force_omit(22, force_omit, SetAudioVolumeRes_descr_.raw->forceomit);
+      decoded_length = setAudioVolumeRes().RAW_decode(SetAudioVolumeRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 23: {
+      RAW_Force_Omit field_force_omit(23, force_omit, ChangeChildLocationRes_descr_.raw->forceomit);
+      decoded_length = changeChildLocationRes().RAW_decode(ChangeChildLocationRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 24: {
+      RAW_Force_Omit field_force_omit(24, force_omit, ChangeSizeRes_descr_.raw->forceomit);
+      decoded_length = changeSizeRes().RAW_decode(ChangeSizeRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 25: {
+      RAW_Force_Omit field_force_omit(25, force_omit, ChangeBackgroundColourRes_descr_.raw->forceomit);
+      decoded_length = changeBackgroundColourRes().RAW_decode(ChangeBackgroundColourRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 26: {
+      RAW_Force_Omit field_force_omit(26, force_omit, ChangeNumericValueRes_descr_.raw->forceomit);
+      decoded_length = changeNumericValueRes().RAW_decode(ChangeNumericValueRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 27: {
+      RAW_Force_Omit field_force_omit(27, force_omit, ChangeEndPointRes_descr_.raw->forceomit);
+      decoded_length = changeEndPointRes().RAW_decode(ChangeEndPointRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 28: {
+      RAW_Force_Omit field_force_omit(28, force_omit, ChangeFontAttributesRes_descr_.raw->forceomit);
+      decoded_length = changeFontAttributesRes().RAW_decode(ChangeFontAttributesRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 29: {
+      RAW_Force_Omit field_force_omit(29, force_omit, ChangeLineAttributesRes_descr_.raw->forceomit);
+      decoded_length = changeLineAttributesRes().RAW_decode(ChangeLineAttributesRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 30: {
+      RAW_Force_Omit field_force_omit(30, force_omit, ChangeFillAttributesRes_descr_.raw->forceomit);
+      decoded_length = changeFillAttributesRes().RAW_decode(ChangeFillAttributesRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 31: {
+      RAW_Force_Omit field_force_omit(31, force_omit, ChangeActiveMaskRes_descr_.raw->forceomit);
+      decoded_length = changeActiveMaskRes().RAW_decode(ChangeActiveMaskRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 32: {
+      RAW_Force_Omit field_force_omit(32, force_omit, ChangeSoftKeyMaskRes_descr_.raw->forceomit);
+      decoded_length = changeSoftKeyMaskRes().RAW_decode(ChangeSoftKeyMaskRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 33: {
+      RAW_Force_Omit field_force_omit(33, force_omit, ChangeAttributeRes_descr_.raw->forceomit);
+      decoded_length = changeAttributeRes().RAW_decode(ChangeAttributeRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 34: {
+      RAW_Force_Omit field_force_omit(34, force_omit, ChangePriorityRes_descr_.raw->forceomit);
+      decoded_length = changePriorityRes().RAW_decode(ChangePriorityRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 35: {
+      RAW_Force_Omit field_force_omit(35, force_omit, ChangeListItemRes_descr_.raw->forceomit);
+      decoded_length = changeListItemRes().RAW_decode(ChangeListItemRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 36: {
+      RAW_Force_Omit field_force_omit(36, force_omit, DeleteObjectPoolRes_descr_.raw->forceomit);
+      decoded_length = deleteObjectPoolRes().RAW_decode(DeleteObjectPoolRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 37: {
+      RAW_Force_Omit field_force_omit(37, force_omit, ChangeStringValueRes_descr_.raw->forceomit);
+      decoded_length = changeStringValueRes().RAW_decode(ChangeStringValueRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 38: {
+      RAW_Force_Omit field_force_omit(38, force_omit, ChangeChildPositionRes_descr_.raw->forceomit);
+      decoded_length = changeChildPositionRes().RAW_decode(ChangeChildPositionRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 39: {
+      RAW_Force_Omit field_force_omit(39, force_omit, ChangeObjectLabelRes_descr_.raw->forceomit);
+      decoded_length = changeObjectLabelRes().RAW_decode(ChangeObjectLabelRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 40: {
+      RAW_Force_Omit field_force_omit(40, force_omit, ChangePolygonPointRes_descr_.raw->forceomit);
+      decoded_length = changePolygonPointRes().RAW_decode(ChangePolygonPointRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 41: {
+      RAW_Force_Omit field_force_omit(41, force_omit, ChangePolygonScaleRes_descr_.raw->forceomit);
+      decoded_length = changePolygonScaleRes().RAW_decode(ChangePolygonScaleRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 42: {
+      RAW_Force_Omit field_force_omit(42, force_omit, GraphicsContextRes_descr_.raw->forceomit);
+      decoded_length = graphicsContextRes().RAW_decode(GraphicsContextRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 43: {
+      RAW_Force_Omit field_force_omit(43, force_omit, GetAttributeValueRes_descr_.raw->forceomit);
+      decoded_length = getAttributeValueRes().RAW_decode(GetAttributeValueRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 44: {
+      RAW_Force_Omit field_force_omit(44, force_omit, SelectColourMapRes_descr_.raw->forceomit);
+      decoded_length = selectColourMapRes().RAW_decode(SelectColourMapRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 45: {
+      RAW_Force_Omit field_force_omit(45, force_omit, IdentifyVTRes_descr_.raw->forceomit);
+      decoded_length = identifyVTRes().RAW_decode(IdentifyVTRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 46: {
+      RAW_Force_Omit field_force_omit(46, force_omit, ExecuteExtendedMacroRes_descr_.raw->forceomit);
+      decoded_length = executeExtendedMacroRes().RAW_decode(ExecuteExtendedMacroRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 47: {
+      RAW_Force_Omit field_force_omit(47, force_omit, LockUnlockMaskRes_descr_.raw->forceomit);
+      decoded_length = lockUnlockMaskRes().RAW_decode(LockUnlockMaskRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 48: {
+      RAW_Force_Omit field_force_omit(48, force_omit, ExecuteMacroRes_descr_.raw->forceomit);
+      decoded_length = executeMacroRes().RAW_decode(ExecuteMacroRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 49: {
+      RAW_Force_Omit field_force_omit(49, force_omit, GetMemoryRes_descr_.raw->forceomit);
+      decoded_length = getMemoryRes().RAW_decode(GetMemoryRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 50: {
+      RAW_Force_Omit field_force_omit(50, force_omit, GetNumberOfSoftKeysRes_descr_.raw->forceomit);
+      decoded_length = getNumberOfSoftKeysRes().RAW_decode(GetNumberOfSoftKeysRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 51: {
+      RAW_Force_Omit field_force_omit(51, force_omit, GetTextFontDataRes_descr_.raw->forceomit);
+      decoded_length = getTextFontDataRes().RAW_decode(GetTextFontDataRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 52: {
+      RAW_Force_Omit field_force_omit(52, force_omit, GetHardwareRes_descr_.raw->forceomit);
+      decoded_length = getHardwareRes().RAW_decode(GetHardwareRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 53: {
+      RAW_Force_Omit field_force_omit(53, force_omit, GetSupportedWidecharsRes_descr_.raw->forceomit);
+      decoded_length = getSupportedWidecharsRes().RAW_decode(GetSupportedWidecharsRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 54: {
+      RAW_Force_Omit field_force_omit(54, force_omit, GetWindowMaskDataRes_descr_.raw->forceomit);
+      decoded_length = getWindowMaskDataRes().RAW_decode(GetWindowMaskDataRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 55: {
+      RAW_Force_Omit field_force_omit(55, force_omit, GetSupportedObjectsRes_descr_.raw->forceomit);
+      decoded_length = getSupportedObjectsRes().RAW_decode(GetSupportedObjectsRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 56: {
+      RAW_Force_Omit field_force_omit(56, force_omit, StoreVersionRes_descr_.raw->forceomit);
+      decoded_length = storeVersionRes().RAW_decode(StoreVersionRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 57: {
+      RAW_Force_Omit field_force_omit(57, force_omit, LoadVersionRes_descr_.raw->forceomit);
+      decoded_length = loadVersionRes().RAW_decode(LoadVersionRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 58: {
+      RAW_Force_Omit field_force_omit(58, force_omit, DeleteVersionRes_descr_.raw->forceomit);
+      decoded_length = deleteVersionRes().RAW_decode(DeleteVersionRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 59: {
+      RAW_Force_Omit field_force_omit(59, force_omit, ExtendedGetVersionsRes_descr_.raw->forceomit);
+      decoded_length = extendedGetVersionsRes().RAW_decode(ExtendedGetVersionsRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 60: {
+      RAW_Force_Omit field_force_omit(60, force_omit, ExtendedStoreVersionRes_descr_.raw->forceomit);
+      decoded_length = extendedStoreVersionRes().RAW_decode(ExtendedStoreVersionRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 61: {
+      RAW_Force_Omit field_force_omit(61, force_omit, ExtendedLoadVersionRes_descr_.raw->forceomit);
+      decoded_length = extendedLoadVersionRes().RAW_decode(ExtendedLoadVersionRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 62: {
+      RAW_Force_Omit field_force_omit(62, force_omit, ExtendedDeleteVersionRes_descr_.raw->forceomit);
+      decoded_length = extendedDeleteVersionRes().RAW_decode(ExtendedDeleteVersionRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 63: {
+      RAW_Force_Omit field_force_omit(63, force_omit, GetVersionsRes_descr_.raw->forceomit);
+      decoded_length = getVersionsRes().RAW_decode(GetVersionsRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 64: {
+      RAW_Force_Omit field_force_omit(64, force_omit, VTUnsupportedVTFunctionInd_descr_.raw->forceomit);
+      decoded_length = vtUnsupportedVTFunctionInd().RAW_decode(VTUnsupportedVTFunctionInd_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 65: {
+      RAW_Force_Omit field_force_omit(65, force_omit, VTStatusReq_descr_.raw->forceomit);
+      decoded_length = vtStatusReq().RAW_decode(VTStatusReq_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 {
+    boolean already_failed = FALSE;
+    INTEGER temporal_0;
+    int decoded_0_length;
+    already_failed = FALSE;
+    if (!already_failed) {
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_0_length = temporal_0.RAW_decode(VTfunction_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 0) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(0, force_omit, SoftKeyActivationReq_descr_.raw->forceomit);
+          decoded_length = softKeyActivationReq().RAW_decode(SoftKeyActivationReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_softKeyActivationReq).vtfunction() == 0) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 1) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(1, force_omit, ButtonActivationReq_descr_.raw->forceomit);
+          decoded_length = buttonActivationReq().RAW_decode(ButtonActivationReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_buttonActivationReq).vtfunction() == 1) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 2) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(2, force_omit, PointingEventReq_descr_.raw->forceomit);
+          decoded_length = pointingEventReq().RAW_decode(PointingEventReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_pointingEventReq).vtfunction() == 2) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 3) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(3, force_omit, VTSelectInputObjectReq_descr_.raw->forceomit);
+          decoded_length = vtSelectInputObjectReq().RAW_decode(VTSelectInputObjectReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_vtSelectInputObjectReq).vtfunction() == 3) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 4) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(4, force_omit, VTESCReq_descr_.raw->forceomit);
+          decoded_length = vtESCReq().RAW_decode(VTESCReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_vtESCReq).vtfunction() == 4) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 5) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(5, force_omit, VTChangeNumericValueReq_descr_.raw->forceomit);
+          decoded_length = vtChangeNumericValueReq().RAW_decode(VTChangeNumericValueReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_vtChangeNumericValueReq).vtfunction() == 5) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 6) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(6, force_omit, VTChangeActiveMaskReq_descr_.raw->forceomit);
+          decoded_length = vtChangeActiveMaskReq().RAW_decode(VTChangeActiveMaskReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_vtChangeActiveMaskReq).vtfunction() == 6) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 7) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(7, force_omit, VTChangeSoftKeyMaskReq_descr_.raw->forceomit);
+          decoded_length = vtChangeSoftKeyMaskReq().RAW_decode(VTChangeSoftKeyMaskReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_vtChangeSoftKeyMaskReq).vtfunction() == 7) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 8) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(8, force_omit, VTChangeStringValueReq_descr_.raw->forceomit);
+          decoded_length = vtChangeStringValueReq().RAW_decode(VTChangeStringValueReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_vtChangeStringValueReq).vtfunction() == 8) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 9) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(9, force_omit, VTOnUserLayoutHideShowReq_descr_.raw->forceomit);
+          decoded_length = vtOnUserLayoutHideShowReq().RAW_decode(VTOnUserLayoutHideShowReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_vtOnUserLayoutHideShowReq).vtfunction() == 9) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 10) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(10, force_omit, VTControlAudioSignalTerminationInd_descr_.raw->forceomit);
+          decoded_length = vtControlAudioSignalTerminationInd().RAW_decode(VTControlAudioSignalTerminationInd_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_vtControlAudioSignalTerminationInd).vtfunction() == 10) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 18) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(11, force_omit, EndOfObjectPoolRes_descr_.raw->forceomit);
+          decoded_length = endOfObjectPoolRes().RAW_decode(EndOfObjectPoolRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_endOfObjectPoolRes).vtfunction() == 18) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 32) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(12, force_omit, VTfunction32VT2ECU_descr_.raw->forceomit);
+          decoded_length = vtfunction32VT2ECU().RAW_decode(VTfunction32VT2ECU_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_vtfunction32VT2ECU).vtfunction() == 32) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 34) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(13, force_omit, VTfunction34VT2ECU_descr_.raw->forceomit);
+          decoded_length = vtfunction34VT2ECU().RAW_decode(VTfunction34VT2ECU_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_vtfunction34VT2ECU).vtfunction() == 34) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 36) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(14, force_omit, VTfunction36VT2ECU_descr_.raw->forceomit);
+          decoded_length = vtfunction36VT2ECU().RAW_decode(VTfunction36VT2ECU_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_vtfunction36VT2ECU).vtfunction() == 36) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 37) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(15, force_omit, VTfunction37VT2ECU_descr_.raw->forceomit);
+          decoded_length = vtfunction37VT2ECU().RAW_decode(VTfunction37VT2ECU_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_vtfunction37VT2ECU).vtfunction() == 37) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 39) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(16, force_omit, VTfunction39VT2ECU_descr_.raw->forceomit);
+          decoded_length = vtfunction39VT2ECU().RAW_decode(VTfunction39VT2ECU_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_vtfunction39VT2ECU).vtfunction() == 39) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 146) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(17, force_omit, ESCres_descr_.raw->forceomit);
+          decoded_length = escRes().RAW_decode(ESCres_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_escRes).vtfunction() == 146) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 160) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(18, force_omit, HideShowObjectRes_descr_.raw->forceomit);
+          decoded_length = hideShowObjectRes().RAW_decode(HideShowObjectRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_hideShowObjectRes).vtfunction() == 160) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 161) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(19, force_omit, EnableDisableObjectRes_descr_.raw->forceomit);
+          decoded_length = enableDisableObjectRes().RAW_decode(EnableDisableObjectRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_enableDisableObjectRes).vtfunction() == 161) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 162) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(20, force_omit, SelectInputObjectRes_descr_.raw->forceomit);
+          decoded_length = selectInputObjectRes().RAW_decode(SelectInputObjectRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_selectInputObjectRes).vtfunction() == 162) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 163) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(21, force_omit, ControlAudioSignalRes_descr_.raw->forceomit);
+          decoded_length = controlAudioSignalRes().RAW_decode(ControlAudioSignalRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_controlAudioSignalRes).vtfunction() == 163) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 164) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(22, force_omit, SetAudioVolumeRes_descr_.raw->forceomit);
+          decoded_length = setAudioVolumeRes().RAW_decode(SetAudioVolumeRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_setAudioVolumeRes).vtfunction() == 164) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 165) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(23, force_omit, ChangeChildLocationRes_descr_.raw->forceomit);
+          decoded_length = changeChildLocationRes().RAW_decode(ChangeChildLocationRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_changeChildLocationRes).vtfunction() == 165) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 166) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(24, force_omit, ChangeSizeRes_descr_.raw->forceomit);
+          decoded_length = changeSizeRes().RAW_decode(ChangeSizeRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_changeSizeRes).vtfunction() == 166) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 167) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(25, force_omit, ChangeBackgroundColourRes_descr_.raw->forceomit);
+          decoded_length = changeBackgroundColourRes().RAW_decode(ChangeBackgroundColourRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_changeBackgroundColourRes).vtfunction() == 167) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 168) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(26, force_omit, ChangeNumericValueRes_descr_.raw->forceomit);
+          decoded_length = changeNumericValueRes().RAW_decode(ChangeNumericValueRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_changeNumericValueRes).vtfunction() == 168) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 169) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(27, force_omit, ChangeEndPointRes_descr_.raw->forceomit);
+          decoded_length = changeEndPointRes().RAW_decode(ChangeEndPointRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_changeEndPointRes).vtfunction() == 169) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 170) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(28, force_omit, ChangeFontAttributesRes_descr_.raw->forceomit);
+          decoded_length = changeFontAttributesRes().RAW_decode(ChangeFontAttributesRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_changeFontAttributesRes).vtfunction() == 170) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 171) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(29, force_omit, ChangeLineAttributesRes_descr_.raw->forceomit);
+          decoded_length = changeLineAttributesRes().RAW_decode(ChangeLineAttributesRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_changeLineAttributesRes).vtfunction() == 171) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 172) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(30, force_omit, ChangeFillAttributesRes_descr_.raw->forceomit);
+          decoded_length = changeFillAttributesRes().RAW_decode(ChangeFillAttributesRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_changeFillAttributesRes).vtfunction() == 172) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 173) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(31, force_omit, ChangeActiveMaskRes_descr_.raw->forceomit);
+          decoded_length = changeActiveMaskRes().RAW_decode(ChangeActiveMaskRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_changeActiveMaskRes).vtfunction() == 173) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 174) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(32, force_omit, ChangeSoftKeyMaskRes_descr_.raw->forceomit);
+          decoded_length = changeSoftKeyMaskRes().RAW_decode(ChangeSoftKeyMaskRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_changeSoftKeyMaskRes).vtfunction() == 174) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 175) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(33, force_omit, ChangeAttributeRes_descr_.raw->forceomit);
+          decoded_length = changeAttributeRes().RAW_decode(ChangeAttributeRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_changeAttributeRes).vtfunction() == 175) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 176) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(34, force_omit, ChangePriorityRes_descr_.raw->forceomit);
+          decoded_length = changePriorityRes().RAW_decode(ChangePriorityRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_changePriorityRes).vtfunction() == 176) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 177) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(35, force_omit, ChangeListItemRes_descr_.raw->forceomit);
+          decoded_length = changeListItemRes().RAW_decode(ChangeListItemRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_changeListItemRes).vtfunction() == 177) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 178) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(36, force_omit, DeleteObjectPoolRes_descr_.raw->forceomit);
+          decoded_length = deleteObjectPoolRes().RAW_decode(DeleteObjectPoolRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_deleteObjectPoolRes).vtfunction() == 178) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 179) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(37, force_omit, ChangeStringValueRes_descr_.raw->forceomit);
+          decoded_length = changeStringValueRes().RAW_decode(ChangeStringValueRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_changeStringValueRes).vtfunction() == 179) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 180) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(38, force_omit, ChangeChildPositionRes_descr_.raw->forceomit);
+          decoded_length = changeChildPositionRes().RAW_decode(ChangeChildPositionRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_changeChildPositionRes).vtfunction() == 180) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 181) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(39, force_omit, ChangeObjectLabelRes_descr_.raw->forceomit);
+          decoded_length = changeObjectLabelRes().RAW_decode(ChangeObjectLabelRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_changeObjectLabelRes).vtfunction() == 181) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 182) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(40, force_omit, ChangePolygonPointRes_descr_.raw->forceomit);
+          decoded_length = changePolygonPointRes().RAW_decode(ChangePolygonPointRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_changePolygonPointRes).vtfunction() == 182) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 183) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(41, force_omit, ChangePolygonScaleRes_descr_.raw->forceomit);
+          decoded_length = changePolygonScaleRes().RAW_decode(ChangePolygonScaleRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_changePolygonScaleRes).vtfunction() == 183) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 184) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(42, force_omit, GraphicsContextRes_descr_.raw->forceomit);
+          decoded_length = graphicsContextRes().RAW_decode(GraphicsContextRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_graphicsContextRes).vtfunction() == 184) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 185) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(43, force_omit, GetAttributeValueRes_descr_.raw->forceomit);
+          decoded_length = getAttributeValueRes().RAW_decode(GetAttributeValueRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_getAttributeValueRes).vtfunction() == 185) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 186) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(44, force_omit, SelectColourMapRes_descr_.raw->forceomit);
+          decoded_length = selectColourMapRes().RAW_decode(SelectColourMapRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_selectColourMapRes).vtfunction() == 186) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 187) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(45, force_omit, IdentifyVTRes_descr_.raw->forceomit);
+          decoded_length = identifyVTRes().RAW_decode(IdentifyVTRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_identifyVTRes).vtfunction() == 187) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 188) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(46, force_omit, ExecuteExtendedMacroRes_descr_.raw->forceomit);
+          decoded_length = executeExtendedMacroRes().RAW_decode(ExecuteExtendedMacroRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_executeExtendedMacroRes).vtfunction() == 188) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 189) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(47, force_omit, LockUnlockMaskRes_descr_.raw->forceomit);
+          decoded_length = lockUnlockMaskRes().RAW_decode(LockUnlockMaskRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_lockUnlockMaskRes).vtfunction() == 189) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 190) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(48, force_omit, ExecuteMacroRes_descr_.raw->forceomit);
+          decoded_length = executeMacroRes().RAW_decode(ExecuteMacroRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_executeMacroRes).vtfunction() == 190) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 192) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(49, force_omit, GetMemoryRes_descr_.raw->forceomit);
+          decoded_length = getMemoryRes().RAW_decode(GetMemoryRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_getMemoryRes).vtfunction() == 192) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 194) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(50, force_omit, GetNumberOfSoftKeysRes_descr_.raw->forceomit);
+          decoded_length = getNumberOfSoftKeysRes().RAW_decode(GetNumberOfSoftKeysRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_getNumberOfSoftKeysRes).vtfunction() == 194) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 195) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(51, force_omit, GetTextFontDataRes_descr_.raw->forceomit);
+          decoded_length = getTextFontDataRes().RAW_decode(GetTextFontDataRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_getTextFontDataRes).vtfunction() == 195) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 199) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(52, force_omit, GetHardwareRes_descr_.raw->forceomit);
+          decoded_length = getHardwareRes().RAW_decode(GetHardwareRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_getHardwareRes).vtfunction() == 199) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 193) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(53, force_omit, GetSupportedWidecharsRes_descr_.raw->forceomit);
+          decoded_length = getSupportedWidecharsRes().RAW_decode(GetSupportedWidecharsRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_getSupportedWidecharsRes).vtfunction() == 193) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 196) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(54, force_omit, GetWindowMaskDataRes_descr_.raw->forceomit);
+          decoded_length = getWindowMaskDataRes().RAW_decode(GetWindowMaskDataRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_getWindowMaskDataRes).vtfunction() == 196) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 197) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(55, force_omit, GetSupportedObjectsRes_descr_.raw->forceomit);
+          decoded_length = getSupportedObjectsRes().RAW_decode(GetSupportedObjectsRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_getSupportedObjectsRes).vtfunction() == 197) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 208) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(56, force_omit, StoreVersionRes_descr_.raw->forceomit);
+          decoded_length = storeVersionRes().RAW_decode(StoreVersionRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_storeVersionRes).vtfunction() == 208) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 209) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(57, force_omit, LoadVersionRes_descr_.raw->forceomit);
+          decoded_length = loadVersionRes().RAW_decode(LoadVersionRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_loadVersionRes).vtfunction() == 209) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 210) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(58, force_omit, DeleteVersionRes_descr_.raw->forceomit);
+          decoded_length = deleteVersionRes().RAW_decode(DeleteVersionRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_deleteVersionRes).vtfunction() == 210) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 211) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(59, force_omit, ExtendedGetVersionsRes_descr_.raw->forceomit);
+          decoded_length = extendedGetVersionsRes().RAW_decode(ExtendedGetVersionsRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_extendedGetVersionsRes).vtfunction() == 211) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 212) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(60, force_omit, ExtendedStoreVersionRes_descr_.raw->forceomit);
+          decoded_length = extendedStoreVersionRes().RAW_decode(ExtendedStoreVersionRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_extendedStoreVersionRes).vtfunction() == 212) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 213) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(61, force_omit, ExtendedLoadVersionRes_descr_.raw->forceomit);
+          decoded_length = extendedLoadVersionRes().RAW_decode(ExtendedLoadVersionRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_extendedLoadVersionRes).vtfunction() == 213) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 214) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(62, force_omit, ExtendedDeleteVersionRes_descr_.raw->forceomit);
+          decoded_length = extendedDeleteVersionRes().RAW_decode(ExtendedDeleteVersionRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_extendedDeleteVersionRes).vtfunction() == 214) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 224) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(63, force_omit, GetVersionsRes_descr_.raw->forceomit);
+          decoded_length = getVersionsRes().RAW_decode(GetVersionsRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_getVersionsRes).vtfunction() == 224) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 253) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(64, force_omit, VTUnsupportedVTFunctionInd_descr_.raw->forceomit);
+          decoded_length = vtUnsupportedVTFunctionInd().RAW_decode(VTUnsupportedVTFunctionInd_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_vtUnsupportedVTFunctionInd).vtfunction() == 253) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 254) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(65, force_omit, VTStatusReq_descr_.raw->forceomit);
+          decoded_length = vtStatusReq().RAW_decode(VTStatusReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_vtStatusReq).vtfunction() == 254) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+ }
+ clean_up();
+ return -1;
+}
+
+int VT2ECU::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const
+{
+  int encoded_length = 0;
+  myleaf.isleaf = FALSE;
+  myleaf.body.node.num_of_nodes = 66;  myleaf.body.node.nodes = init_nodes_of_enc_tree(66);
+  memset(myleaf.body.node.nodes, 0, 66 * sizeof(RAW_enc_tree *));
+  switch (union_selection) {
+  case ALT_softKeyActivationReq:
+    myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 0, SoftKeyActivationReq_descr_.raw);
+    encoded_length = field_softKeyActivationReq->RAW_encode(SoftKeyActivationReq_descr_, *myleaf.body.node.nodes[0]);
+    myleaf.body.node.nodes[0]->coding_descr = &SoftKeyActivationReq_descr_;
+    if ((*field_softKeyActivationReq).vtfunction() != 0) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={0,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 0;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_buttonActivationReq:
+    myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 1, ButtonActivationReq_descr_.raw);
+    encoded_length = field_buttonActivationReq->RAW_encode(ButtonActivationReq_descr_, *myleaf.body.node.nodes[1]);
+    myleaf.body.node.nodes[1]->coding_descr = &ButtonActivationReq_descr_;
+    if ((*field_buttonActivationReq).vtfunction() != 1) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={1,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 1;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_pointingEventReq:
+    myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 2, PointingEventReq_descr_.raw);
+    encoded_length = field_pointingEventReq->RAW_encode(PointingEventReq_descr_, *myleaf.body.node.nodes[2]);
+    myleaf.body.node.nodes[2]->coding_descr = &PointingEventReq_descr_;
+    if ((*field_pointingEventReq).vtfunction() != 2) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={2,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 2;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_vtSelectInputObjectReq:
+    myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 3, VTSelectInputObjectReq_descr_.raw);
+    encoded_length = field_vtSelectInputObjectReq->RAW_encode(VTSelectInputObjectReq_descr_, *myleaf.body.node.nodes[3]);
+    myleaf.body.node.nodes[3]->coding_descr = &VTSelectInputObjectReq_descr_;
+    if ((*field_vtSelectInputObjectReq).vtfunction() != 3) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={3,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 3;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_vtESCReq:
+    myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 4, VTESCReq_descr_.raw);
+    encoded_length = field_vtESCReq->RAW_encode(VTESCReq_descr_, *myleaf.body.node.nodes[4]);
+    myleaf.body.node.nodes[4]->coding_descr = &VTESCReq_descr_;
+    if ((*field_vtESCReq).vtfunction() != 4) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={4,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 4;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_vtChangeNumericValueReq:
+    myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 5, VTChangeNumericValueReq_descr_.raw);
+    encoded_length = field_vtChangeNumericValueReq->RAW_encode(VTChangeNumericValueReq_descr_, *myleaf.body.node.nodes[5]);
+    myleaf.body.node.nodes[5]->coding_descr = &VTChangeNumericValueReq_descr_;
+    if ((*field_vtChangeNumericValueReq).vtfunction() != 5) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={5,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 5;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_vtChangeActiveMaskReq:
+    myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 6, VTChangeActiveMaskReq_descr_.raw);
+    encoded_length = field_vtChangeActiveMaskReq->RAW_encode(VTChangeActiveMaskReq_descr_, *myleaf.body.node.nodes[6]);
+    myleaf.body.node.nodes[6]->coding_descr = &VTChangeActiveMaskReq_descr_;
+    if ((*field_vtChangeActiveMaskReq).vtfunction() != 6) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={6,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 6;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_vtChangeSoftKeyMaskReq:
+    myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 7, VTChangeSoftKeyMaskReq_descr_.raw);
+    encoded_length = field_vtChangeSoftKeyMaskReq->RAW_encode(VTChangeSoftKeyMaskReq_descr_, *myleaf.body.node.nodes[7]);
+    myleaf.body.node.nodes[7]->coding_descr = &VTChangeSoftKeyMaskReq_descr_;
+    if ((*field_vtChangeSoftKeyMaskReq).vtfunction() != 7) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={7,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 7;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_vtChangeStringValueReq:
+    myleaf.body.node.nodes[8] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 8, VTChangeStringValueReq_descr_.raw);
+    encoded_length = field_vtChangeStringValueReq->RAW_encode(VTChangeStringValueReq_descr_, *myleaf.body.node.nodes[8]);
+    myleaf.body.node.nodes[8]->coding_descr = &VTChangeStringValueReq_descr_;
+    if ((*field_vtChangeStringValueReq).vtfunction() != 8) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={8,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 8;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_vtOnUserLayoutHideShowReq:
+    myleaf.body.node.nodes[9] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 9, VTOnUserLayoutHideShowReq_descr_.raw);
+    encoded_length = field_vtOnUserLayoutHideShowReq->RAW_encode(VTOnUserLayoutHideShowReq_descr_, *myleaf.body.node.nodes[9]);
+    myleaf.body.node.nodes[9]->coding_descr = &VTOnUserLayoutHideShowReq_descr_;
+    if ((*field_vtOnUserLayoutHideShowReq).vtfunction() != 9) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={9,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 9;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_vtControlAudioSignalTerminationInd:
+    myleaf.body.node.nodes[10] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 10, VTControlAudioSignalTerminationInd_descr_.raw);
+    encoded_length = field_vtControlAudioSignalTerminationInd->RAW_encode(VTControlAudioSignalTerminationInd_descr_, *myleaf.body.node.nodes[10]);
+    myleaf.body.node.nodes[10]->coding_descr = &VTControlAudioSignalTerminationInd_descr_;
+    if ((*field_vtControlAudioSignalTerminationInd).vtfunction() != 10) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={10,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 10;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_endOfObjectPoolRes:
+    myleaf.body.node.nodes[11] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 11, EndOfObjectPoolRes_descr_.raw);
+    encoded_length = field_endOfObjectPoolRes->RAW_encode(EndOfObjectPoolRes_descr_, *myleaf.body.node.nodes[11]);
+    myleaf.body.node.nodes[11]->coding_descr = &EndOfObjectPoolRes_descr_;
+    if ((*field_endOfObjectPoolRes).vtfunction() != 18) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={11,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 18;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_vtfunction32VT2ECU:
+    myleaf.body.node.nodes[12] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 12, VTfunction32VT2ECU_descr_.raw);
+    encoded_length = field_vtfunction32VT2ECU->RAW_encode(VTfunction32VT2ECU_descr_, *myleaf.body.node.nodes[12]);
+    myleaf.body.node.nodes[12]->coding_descr = &VTfunction32VT2ECU_descr_;
+    if ((*field_vtfunction32VT2ECU).vtfunction() != 32) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={12,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 32;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_vtfunction34VT2ECU:
+    myleaf.body.node.nodes[13] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 13, VTfunction34VT2ECU_descr_.raw);
+    encoded_length = field_vtfunction34VT2ECU->RAW_encode(VTfunction34VT2ECU_descr_, *myleaf.body.node.nodes[13]);
+    myleaf.body.node.nodes[13]->coding_descr = &VTfunction34VT2ECU_descr_;
+    if ((*field_vtfunction34VT2ECU).vtfunction() != 34) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={13,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 34;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_vtfunction36VT2ECU:
+    myleaf.body.node.nodes[14] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 14, VTfunction36VT2ECU_descr_.raw);
+    encoded_length = field_vtfunction36VT2ECU->RAW_encode(VTfunction36VT2ECU_descr_, *myleaf.body.node.nodes[14]);
+    myleaf.body.node.nodes[14]->coding_descr = &VTfunction36VT2ECU_descr_;
+    if ((*field_vtfunction36VT2ECU).vtfunction() != 36) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={14,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 36;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_vtfunction37VT2ECU:
+    myleaf.body.node.nodes[15] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 15, VTfunction37VT2ECU_descr_.raw);
+    encoded_length = field_vtfunction37VT2ECU->RAW_encode(VTfunction37VT2ECU_descr_, *myleaf.body.node.nodes[15]);
+    myleaf.body.node.nodes[15]->coding_descr = &VTfunction37VT2ECU_descr_;
+    if ((*field_vtfunction37VT2ECU).vtfunction() != 37) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={15,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 37;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_vtfunction39VT2ECU:
+    myleaf.body.node.nodes[16] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 16, VTfunction39VT2ECU_descr_.raw);
+    encoded_length = field_vtfunction39VT2ECU->RAW_encode(VTfunction39VT2ECU_descr_, *myleaf.body.node.nodes[16]);
+    myleaf.body.node.nodes[16]->coding_descr = &VTfunction39VT2ECU_descr_;
+    if ((*field_vtfunction39VT2ECU).vtfunction() != 39) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={16,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 39;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_escRes:
+    myleaf.body.node.nodes[17] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 17, ESCres_descr_.raw);
+    encoded_length = field_escRes->RAW_encode(ESCres_descr_, *myleaf.body.node.nodes[17]);
+    myleaf.body.node.nodes[17]->coding_descr = &ESCres_descr_;
+    if ((*field_escRes).vtfunction() != 146) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={17,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 146;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_hideShowObjectRes:
+    myleaf.body.node.nodes[18] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 18, HideShowObjectRes_descr_.raw);
+    encoded_length = field_hideShowObjectRes->RAW_encode(HideShowObjectRes_descr_, *myleaf.body.node.nodes[18]);
+    myleaf.body.node.nodes[18]->coding_descr = &HideShowObjectRes_descr_;
+    if ((*field_hideShowObjectRes).vtfunction() != 160) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={18,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 160;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_enableDisableObjectRes:
+    myleaf.body.node.nodes[19] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 19, EnableDisableObjectRes_descr_.raw);
+    encoded_length = field_enableDisableObjectRes->RAW_encode(EnableDisableObjectRes_descr_, *myleaf.body.node.nodes[19]);
+    myleaf.body.node.nodes[19]->coding_descr = &EnableDisableObjectRes_descr_;
+    if ((*field_enableDisableObjectRes).vtfunction() != 161) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={19,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 161;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_selectInputObjectRes:
+    myleaf.body.node.nodes[20] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 20, SelectInputObjectRes_descr_.raw);
+    encoded_length = field_selectInputObjectRes->RAW_encode(SelectInputObjectRes_descr_, *myleaf.body.node.nodes[20]);
+    myleaf.body.node.nodes[20]->coding_descr = &SelectInputObjectRes_descr_;
+    if ((*field_selectInputObjectRes).vtfunction() != 162) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={20,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 162;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_controlAudioSignalRes:
+    myleaf.body.node.nodes[21] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 21, ControlAudioSignalRes_descr_.raw);
+    encoded_length = field_controlAudioSignalRes->RAW_encode(ControlAudioSignalRes_descr_, *myleaf.body.node.nodes[21]);
+    myleaf.body.node.nodes[21]->coding_descr = &ControlAudioSignalRes_descr_;
+    if ((*field_controlAudioSignalRes).vtfunction() != 163) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={21,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 163;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_setAudioVolumeRes:
+    myleaf.body.node.nodes[22] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 22, SetAudioVolumeRes_descr_.raw);
+    encoded_length = field_setAudioVolumeRes->RAW_encode(SetAudioVolumeRes_descr_, *myleaf.body.node.nodes[22]);
+    myleaf.body.node.nodes[22]->coding_descr = &SetAudioVolumeRes_descr_;
+    if ((*field_setAudioVolumeRes).vtfunction() != 164) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={22,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 164;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_changeChildLocationRes:
+    myleaf.body.node.nodes[23] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 23, ChangeChildLocationRes_descr_.raw);
+    encoded_length = field_changeChildLocationRes->RAW_encode(ChangeChildLocationRes_descr_, *myleaf.body.node.nodes[23]);
+    myleaf.body.node.nodes[23]->coding_descr = &ChangeChildLocationRes_descr_;
+    if ((*field_changeChildLocationRes).vtfunction() != 165) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={23,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 165;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_changeSizeRes:
+    myleaf.body.node.nodes[24] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 24, ChangeSizeRes_descr_.raw);
+    encoded_length = field_changeSizeRes->RAW_encode(ChangeSizeRes_descr_, *myleaf.body.node.nodes[24]);
+    myleaf.body.node.nodes[24]->coding_descr = &ChangeSizeRes_descr_;
+    if ((*field_changeSizeRes).vtfunction() != 166) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={24,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 166;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_changeBackgroundColourRes:
+    myleaf.body.node.nodes[25] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 25, ChangeBackgroundColourRes_descr_.raw);
+    encoded_length = field_changeBackgroundColourRes->RAW_encode(ChangeBackgroundColourRes_descr_, *myleaf.body.node.nodes[25]);
+    myleaf.body.node.nodes[25]->coding_descr = &ChangeBackgroundColourRes_descr_;
+    if ((*field_changeBackgroundColourRes).vtfunction() != 167) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={25,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 167;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_changeNumericValueRes:
+    myleaf.body.node.nodes[26] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 26, ChangeNumericValueRes_descr_.raw);
+    encoded_length = field_changeNumericValueRes->RAW_encode(ChangeNumericValueRes_descr_, *myleaf.body.node.nodes[26]);
+    myleaf.body.node.nodes[26]->coding_descr = &ChangeNumericValueRes_descr_;
+    if ((*field_changeNumericValueRes).vtfunction() != 168) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={26,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 168;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_changeEndPointRes:
+    myleaf.body.node.nodes[27] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 27, ChangeEndPointRes_descr_.raw);
+    encoded_length = field_changeEndPointRes->RAW_encode(ChangeEndPointRes_descr_, *myleaf.body.node.nodes[27]);
+    myleaf.body.node.nodes[27]->coding_descr = &ChangeEndPointRes_descr_;
+    if ((*field_changeEndPointRes).vtfunction() != 169) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={27,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 169;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_changeFontAttributesRes:
+    myleaf.body.node.nodes[28] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 28, ChangeFontAttributesRes_descr_.raw);
+    encoded_length = field_changeFontAttributesRes->RAW_encode(ChangeFontAttributesRes_descr_, *myleaf.body.node.nodes[28]);
+    myleaf.body.node.nodes[28]->coding_descr = &ChangeFontAttributesRes_descr_;
+    if ((*field_changeFontAttributesRes).vtfunction() != 170) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={28,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 170;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_changeLineAttributesRes:
+    myleaf.body.node.nodes[29] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 29, ChangeLineAttributesRes_descr_.raw);
+    encoded_length = field_changeLineAttributesRes->RAW_encode(ChangeLineAttributesRes_descr_, *myleaf.body.node.nodes[29]);
+    myleaf.body.node.nodes[29]->coding_descr = &ChangeLineAttributesRes_descr_;
+    if ((*field_changeLineAttributesRes).vtfunction() != 171) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={29,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 171;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_changeFillAttributesRes:
+    myleaf.body.node.nodes[30] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 30, ChangeFillAttributesRes_descr_.raw);
+    encoded_length = field_changeFillAttributesRes->RAW_encode(ChangeFillAttributesRes_descr_, *myleaf.body.node.nodes[30]);
+    myleaf.body.node.nodes[30]->coding_descr = &ChangeFillAttributesRes_descr_;
+    if ((*field_changeFillAttributesRes).vtfunction() != 172) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={30,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 172;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_changeActiveMaskRes:
+    myleaf.body.node.nodes[31] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 31, ChangeActiveMaskRes_descr_.raw);
+    encoded_length = field_changeActiveMaskRes->RAW_encode(ChangeActiveMaskRes_descr_, *myleaf.body.node.nodes[31]);
+    myleaf.body.node.nodes[31]->coding_descr = &ChangeActiveMaskRes_descr_;
+    if ((*field_changeActiveMaskRes).vtfunction() != 173) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={31,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 173;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_changeSoftKeyMaskRes:
+    myleaf.body.node.nodes[32] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 32, ChangeSoftKeyMaskRes_descr_.raw);
+    encoded_length = field_changeSoftKeyMaskRes->RAW_encode(ChangeSoftKeyMaskRes_descr_, *myleaf.body.node.nodes[32]);
+    myleaf.body.node.nodes[32]->coding_descr = &ChangeSoftKeyMaskRes_descr_;
+    if ((*field_changeSoftKeyMaskRes).vtfunction() != 174) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={32,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 174;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_changeAttributeRes:
+    myleaf.body.node.nodes[33] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 33, ChangeAttributeRes_descr_.raw);
+    encoded_length = field_changeAttributeRes->RAW_encode(ChangeAttributeRes_descr_, *myleaf.body.node.nodes[33]);
+    myleaf.body.node.nodes[33]->coding_descr = &ChangeAttributeRes_descr_;
+    if ((*field_changeAttributeRes).vtfunction() != 175) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={33,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 175;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_changePriorityRes:
+    myleaf.body.node.nodes[34] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 34, ChangePriorityRes_descr_.raw);
+    encoded_length = field_changePriorityRes->RAW_encode(ChangePriorityRes_descr_, *myleaf.body.node.nodes[34]);
+    myleaf.body.node.nodes[34]->coding_descr = &ChangePriorityRes_descr_;
+    if ((*field_changePriorityRes).vtfunction() != 176) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={34,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 176;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_changeListItemRes:
+    myleaf.body.node.nodes[35] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 35, ChangeListItemRes_descr_.raw);
+    encoded_length = field_changeListItemRes->RAW_encode(ChangeListItemRes_descr_, *myleaf.body.node.nodes[35]);
+    myleaf.body.node.nodes[35]->coding_descr = &ChangeListItemRes_descr_;
+    if ((*field_changeListItemRes).vtfunction() != 177) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={35,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 177;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_deleteObjectPoolRes:
+    myleaf.body.node.nodes[36] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 36, DeleteObjectPoolRes_descr_.raw);
+    encoded_length = field_deleteObjectPoolRes->RAW_encode(DeleteObjectPoolRes_descr_, *myleaf.body.node.nodes[36]);
+    myleaf.body.node.nodes[36]->coding_descr = &DeleteObjectPoolRes_descr_;
+    if ((*field_deleteObjectPoolRes).vtfunction() != 178) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={36,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 178;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_changeStringValueRes:
+    myleaf.body.node.nodes[37] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 37, ChangeStringValueRes_descr_.raw);
+    encoded_length = field_changeStringValueRes->RAW_encode(ChangeStringValueRes_descr_, *myleaf.body.node.nodes[37]);
+    myleaf.body.node.nodes[37]->coding_descr = &ChangeStringValueRes_descr_;
+    if ((*field_changeStringValueRes).vtfunction() != 179) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={37,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 179;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_changeChildPositionRes:
+    myleaf.body.node.nodes[38] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 38, ChangeChildPositionRes_descr_.raw);
+    encoded_length = field_changeChildPositionRes->RAW_encode(ChangeChildPositionRes_descr_, *myleaf.body.node.nodes[38]);
+    myleaf.body.node.nodes[38]->coding_descr = &ChangeChildPositionRes_descr_;
+    if ((*field_changeChildPositionRes).vtfunction() != 180) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={38,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 180;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_changeObjectLabelRes:
+    myleaf.body.node.nodes[39] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 39, ChangeObjectLabelRes_descr_.raw);
+    encoded_length = field_changeObjectLabelRes->RAW_encode(ChangeObjectLabelRes_descr_, *myleaf.body.node.nodes[39]);
+    myleaf.body.node.nodes[39]->coding_descr = &ChangeObjectLabelRes_descr_;
+    if ((*field_changeObjectLabelRes).vtfunction() != 181) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={39,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 181;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_changePolygonPointRes:
+    myleaf.body.node.nodes[40] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 40, ChangePolygonPointRes_descr_.raw);
+    encoded_length = field_changePolygonPointRes->RAW_encode(ChangePolygonPointRes_descr_, *myleaf.body.node.nodes[40]);
+    myleaf.body.node.nodes[40]->coding_descr = &ChangePolygonPointRes_descr_;
+    if ((*field_changePolygonPointRes).vtfunction() != 182) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={40,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 182;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_changePolygonScaleRes:
+    myleaf.body.node.nodes[41] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 41, ChangePolygonScaleRes_descr_.raw);
+    encoded_length = field_changePolygonScaleRes->RAW_encode(ChangePolygonScaleRes_descr_, *myleaf.body.node.nodes[41]);
+    myleaf.body.node.nodes[41]->coding_descr = &ChangePolygonScaleRes_descr_;
+    if ((*field_changePolygonScaleRes).vtfunction() != 183) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={41,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 183;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_graphicsContextRes:
+    myleaf.body.node.nodes[42] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 42, GraphicsContextRes_descr_.raw);
+    encoded_length = field_graphicsContextRes->RAW_encode(GraphicsContextRes_descr_, *myleaf.body.node.nodes[42]);
+    myleaf.body.node.nodes[42]->coding_descr = &GraphicsContextRes_descr_;
+    if ((*field_graphicsContextRes).vtfunction() != 184) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={42,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 184;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_getAttributeValueRes:
+    myleaf.body.node.nodes[43] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 43, GetAttributeValueRes_descr_.raw);
+    encoded_length = field_getAttributeValueRes->RAW_encode(GetAttributeValueRes_descr_, *myleaf.body.node.nodes[43]);
+    myleaf.body.node.nodes[43]->coding_descr = &GetAttributeValueRes_descr_;
+    if ((*field_getAttributeValueRes).vtfunction() != 185) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={43,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 185;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_selectColourMapRes:
+    myleaf.body.node.nodes[44] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 44, SelectColourMapRes_descr_.raw);
+    encoded_length = field_selectColourMapRes->RAW_encode(SelectColourMapRes_descr_, *myleaf.body.node.nodes[44]);
+    myleaf.body.node.nodes[44]->coding_descr = &SelectColourMapRes_descr_;
+    if ((*field_selectColourMapRes).vtfunction() != 186) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={44,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 186;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_identifyVTRes:
+    myleaf.body.node.nodes[45] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 45, IdentifyVTRes_descr_.raw);
+    encoded_length = field_identifyVTRes->RAW_encode(IdentifyVTRes_descr_, *myleaf.body.node.nodes[45]);
+    myleaf.body.node.nodes[45]->coding_descr = &IdentifyVTRes_descr_;
+    if ((*field_identifyVTRes).vtfunction() != 187) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={45,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 187;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_executeExtendedMacroRes:
+    myleaf.body.node.nodes[46] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 46, ExecuteExtendedMacroRes_descr_.raw);
+    encoded_length = field_executeExtendedMacroRes->RAW_encode(ExecuteExtendedMacroRes_descr_, *myleaf.body.node.nodes[46]);
+    myleaf.body.node.nodes[46]->coding_descr = &ExecuteExtendedMacroRes_descr_;
+    if ((*field_executeExtendedMacroRes).vtfunction() != 188) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={46,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 188;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_lockUnlockMaskRes:
+    myleaf.body.node.nodes[47] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 47, LockUnlockMaskRes_descr_.raw);
+    encoded_length = field_lockUnlockMaskRes->RAW_encode(LockUnlockMaskRes_descr_, *myleaf.body.node.nodes[47]);
+    myleaf.body.node.nodes[47]->coding_descr = &LockUnlockMaskRes_descr_;
+    if ((*field_lockUnlockMaskRes).vtfunction() != 189) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={47,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 189;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_executeMacroRes:
+    myleaf.body.node.nodes[48] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 48, ExecuteMacroRes_descr_.raw);
+    encoded_length = field_executeMacroRes->RAW_encode(ExecuteMacroRes_descr_, *myleaf.body.node.nodes[48]);
+    myleaf.body.node.nodes[48]->coding_descr = &ExecuteMacroRes_descr_;
+    if ((*field_executeMacroRes).vtfunction() != 190) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={48,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 190;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_getMemoryRes:
+    myleaf.body.node.nodes[49] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 49, GetMemoryRes_descr_.raw);
+    encoded_length = field_getMemoryRes->RAW_encode(GetMemoryRes_descr_, *myleaf.body.node.nodes[49]);
+    myleaf.body.node.nodes[49]->coding_descr = &GetMemoryRes_descr_;
+    if ((*field_getMemoryRes).vtfunction() != 192) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={49,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 192;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_getNumberOfSoftKeysRes:
+    myleaf.body.node.nodes[50] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 50, GetNumberOfSoftKeysRes_descr_.raw);
+    encoded_length = field_getNumberOfSoftKeysRes->RAW_encode(GetNumberOfSoftKeysRes_descr_, *myleaf.body.node.nodes[50]);
+    myleaf.body.node.nodes[50]->coding_descr = &GetNumberOfSoftKeysRes_descr_;
+    if ((*field_getNumberOfSoftKeysRes).vtfunction() != 194) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={50,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 194;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_getTextFontDataRes:
+    myleaf.body.node.nodes[51] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 51, GetTextFontDataRes_descr_.raw);
+    encoded_length = field_getTextFontDataRes->RAW_encode(GetTextFontDataRes_descr_, *myleaf.body.node.nodes[51]);
+    myleaf.body.node.nodes[51]->coding_descr = &GetTextFontDataRes_descr_;
+    if ((*field_getTextFontDataRes).vtfunction() != 195) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={51,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 195;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_getHardwareRes:
+    myleaf.body.node.nodes[52] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 52, GetHardwareRes_descr_.raw);
+    encoded_length = field_getHardwareRes->RAW_encode(GetHardwareRes_descr_, *myleaf.body.node.nodes[52]);
+    myleaf.body.node.nodes[52]->coding_descr = &GetHardwareRes_descr_;
+    if ((*field_getHardwareRes).vtfunction() != 199) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={52,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 199;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_getSupportedWidecharsRes:
+    myleaf.body.node.nodes[53] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 53, GetSupportedWidecharsRes_descr_.raw);
+    encoded_length = field_getSupportedWidecharsRes->RAW_encode(GetSupportedWidecharsRes_descr_, *myleaf.body.node.nodes[53]);
+    myleaf.body.node.nodes[53]->coding_descr = &GetSupportedWidecharsRes_descr_;
+    if ((*field_getSupportedWidecharsRes).vtfunction() != 193) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={53,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 193;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_getWindowMaskDataRes:
+    myleaf.body.node.nodes[54] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 54, GetWindowMaskDataRes_descr_.raw);
+    encoded_length = field_getWindowMaskDataRes->RAW_encode(GetWindowMaskDataRes_descr_, *myleaf.body.node.nodes[54]);
+    myleaf.body.node.nodes[54]->coding_descr = &GetWindowMaskDataRes_descr_;
+    if ((*field_getWindowMaskDataRes).vtfunction() != 196) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={54,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 196;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_getSupportedObjectsRes:
+    myleaf.body.node.nodes[55] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 55, GetSupportedObjectsRes_descr_.raw);
+    encoded_length = field_getSupportedObjectsRes->RAW_encode(GetSupportedObjectsRes_descr_, *myleaf.body.node.nodes[55]);
+    myleaf.body.node.nodes[55]->coding_descr = &GetSupportedObjectsRes_descr_;
+    if ((*field_getSupportedObjectsRes).vtfunction() != 197) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={55,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 197;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_storeVersionRes:
+    myleaf.body.node.nodes[56] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 56, StoreVersionRes_descr_.raw);
+    encoded_length = field_storeVersionRes->RAW_encode(StoreVersionRes_descr_, *myleaf.body.node.nodes[56]);
+    myleaf.body.node.nodes[56]->coding_descr = &StoreVersionRes_descr_;
+    if ((*field_storeVersionRes).vtfunction() != 208) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={56,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 208;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_loadVersionRes:
+    myleaf.body.node.nodes[57] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 57, LoadVersionRes_descr_.raw);
+    encoded_length = field_loadVersionRes->RAW_encode(LoadVersionRes_descr_, *myleaf.body.node.nodes[57]);
+    myleaf.body.node.nodes[57]->coding_descr = &LoadVersionRes_descr_;
+    if ((*field_loadVersionRes).vtfunction() != 209) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={57,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 209;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_deleteVersionRes:
+    myleaf.body.node.nodes[58] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 58, DeleteVersionRes_descr_.raw);
+    encoded_length = field_deleteVersionRes->RAW_encode(DeleteVersionRes_descr_, *myleaf.body.node.nodes[58]);
+    myleaf.body.node.nodes[58]->coding_descr = &DeleteVersionRes_descr_;
+    if ((*field_deleteVersionRes).vtfunction() != 210) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={58,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 210;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_extendedGetVersionsRes:
+    myleaf.body.node.nodes[59] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 59, ExtendedGetVersionsRes_descr_.raw);
+    encoded_length = field_extendedGetVersionsRes->RAW_encode(ExtendedGetVersionsRes_descr_, *myleaf.body.node.nodes[59]);
+    myleaf.body.node.nodes[59]->coding_descr = &ExtendedGetVersionsRes_descr_;
+    if ((*field_extendedGetVersionsRes).vtfunction() != 211) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={59,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 211;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_extendedStoreVersionRes:
+    myleaf.body.node.nodes[60] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 60, ExtendedStoreVersionRes_descr_.raw);
+    encoded_length = field_extendedStoreVersionRes->RAW_encode(ExtendedStoreVersionRes_descr_, *myleaf.body.node.nodes[60]);
+    myleaf.body.node.nodes[60]->coding_descr = &ExtendedStoreVersionRes_descr_;
+    if ((*field_extendedStoreVersionRes).vtfunction() != 212) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={60,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 212;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_extendedLoadVersionRes:
+    myleaf.body.node.nodes[61] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 61, ExtendedLoadVersionRes_descr_.raw);
+    encoded_length = field_extendedLoadVersionRes->RAW_encode(ExtendedLoadVersionRes_descr_, *myleaf.body.node.nodes[61]);
+    myleaf.body.node.nodes[61]->coding_descr = &ExtendedLoadVersionRes_descr_;
+    if ((*field_extendedLoadVersionRes).vtfunction() != 213) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={61,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 213;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_extendedDeleteVersionRes:
+    myleaf.body.node.nodes[62] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 62, ExtendedDeleteVersionRes_descr_.raw);
+    encoded_length = field_extendedDeleteVersionRes->RAW_encode(ExtendedDeleteVersionRes_descr_, *myleaf.body.node.nodes[62]);
+    myleaf.body.node.nodes[62]->coding_descr = &ExtendedDeleteVersionRes_descr_;
+    if ((*field_extendedDeleteVersionRes).vtfunction() != 214) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={62,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 214;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_getVersionsRes:
+    myleaf.body.node.nodes[63] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 63, GetVersionsRes_descr_.raw);
+    encoded_length = field_getVersionsRes->RAW_encode(GetVersionsRes_descr_, *myleaf.body.node.nodes[63]);
+    myleaf.body.node.nodes[63]->coding_descr = &GetVersionsRes_descr_;
+    if ((*field_getVersionsRes).vtfunction() != 224) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={63,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 224;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_vtUnsupportedVTFunctionInd:
+    myleaf.body.node.nodes[64] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 64, VTUnsupportedVTFunctionInd_descr_.raw);
+    encoded_length = field_vtUnsupportedVTFunctionInd->RAW_encode(VTUnsupportedVTFunctionInd_descr_, *myleaf.body.node.nodes[64]);
+    myleaf.body.node.nodes[64]->coding_descr = &VTUnsupportedVTFunctionInd_descr_;
+    if ((*field_vtUnsupportedVTFunctionInd).vtfunction() != 253) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={64,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 253;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_vtStatusReq:
+    myleaf.body.node.nodes[65] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 65, VTStatusReq_descr_.raw);
+    encoded_length = field_vtStatusReq->RAW_encode(VTStatusReq_descr_, *myleaf.body.node.nodes[65]);
+    myleaf.body.node.nodes[65]->coding_descr = &VTStatusReq_descr_;
+    if ((*field_vtStatusReq).vtfunction() != 254) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={65,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 254;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  default:
+    TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
+  }
+  return encoded_length;
+}
+
+void VT2ECU_template::copy_value(const VT2ECU& other_value)
+{
+single_value.union_selection = other_value.get_selection();
+switch (single_value.union_selection) {
+case VT2ECU::ALT_softKeyActivationReq:
+single_value.field_softKeyActivationReq = new SoftKeyActivationReq_template(other_value.softKeyActivationReq());
+break;
+case VT2ECU::ALT_buttonActivationReq:
+single_value.field_buttonActivationReq = new ButtonActivationReq_template(other_value.buttonActivationReq());
+break;
+case VT2ECU::ALT_pointingEventReq:
+single_value.field_pointingEventReq = new PointingEventReq_template(other_value.pointingEventReq());
+break;
+case VT2ECU::ALT_vtSelectInputObjectReq:
+single_value.field_vtSelectInputObjectReq = new VTSelectInputObjectReq_template(other_value.vtSelectInputObjectReq());
+break;
+case VT2ECU::ALT_vtESCReq:
+single_value.field_vtESCReq = new VTESCReq_template(other_value.vtESCReq());
+break;
+case VT2ECU::ALT_vtChangeNumericValueReq:
+single_value.field_vtChangeNumericValueReq = new VTChangeNumericValueReq_template(other_value.vtChangeNumericValueReq());
+break;
+case VT2ECU::ALT_vtChangeActiveMaskReq:
+single_value.field_vtChangeActiveMaskReq = new VTChangeActiveMaskReq_template(other_value.vtChangeActiveMaskReq());
+break;
+case VT2ECU::ALT_vtChangeSoftKeyMaskReq:
+single_value.field_vtChangeSoftKeyMaskReq = new VTChangeSoftKeyMaskReq_template(other_value.vtChangeSoftKeyMaskReq());
+break;
+case VT2ECU::ALT_vtChangeStringValueReq:
+single_value.field_vtChangeStringValueReq = new VTChangeStringValueReq_template(other_value.vtChangeStringValueReq());
+break;
+case VT2ECU::ALT_vtOnUserLayoutHideShowReq:
+single_value.field_vtOnUserLayoutHideShowReq = new VTOnUserLayoutHideShowReq_template(other_value.vtOnUserLayoutHideShowReq());
+break;
+case VT2ECU::ALT_vtControlAudioSignalTerminationInd:
+single_value.field_vtControlAudioSignalTerminationInd = new VTControlAudioSignalTerminationInd_template(other_value.vtControlAudioSignalTerminationInd());
+break;
+case VT2ECU::ALT_endOfObjectPoolRes:
+single_value.field_endOfObjectPoolRes = new EndOfObjectPoolRes_template(other_value.endOfObjectPoolRes());
+break;
+case VT2ECU::ALT_vtfunction32VT2ECU:
+single_value.field_vtfunction32VT2ECU = new VTfunction32VT2ECU_template(other_value.vtfunction32VT2ECU());
+break;
+case VT2ECU::ALT_vtfunction34VT2ECU:
+single_value.field_vtfunction34VT2ECU = new VTfunction34VT2ECU_template(other_value.vtfunction34VT2ECU());
+break;
+case VT2ECU::ALT_vtfunction36VT2ECU:
+single_value.field_vtfunction36VT2ECU = new VTfunction36VT2ECU_template(other_value.vtfunction36VT2ECU());
+break;
+case VT2ECU::ALT_vtfunction37VT2ECU:
+single_value.field_vtfunction37VT2ECU = new VTfunction37VT2ECU_template(other_value.vtfunction37VT2ECU());
+break;
+case VT2ECU::ALT_vtfunction39VT2ECU:
+single_value.field_vtfunction39VT2ECU = new VTfunction39VT2ECU_template(other_value.vtfunction39VT2ECU());
+break;
+case VT2ECU::ALT_escRes:
+single_value.field_escRes = new ESCres_template(other_value.escRes());
+break;
+case VT2ECU::ALT_hideShowObjectRes:
+single_value.field_hideShowObjectRes = new HideShowObjectRes_template(other_value.hideShowObjectRes());
+break;
+case VT2ECU::ALT_enableDisableObjectRes:
+single_value.field_enableDisableObjectRes = new EnableDisableObjectRes_template(other_value.enableDisableObjectRes());
+break;
+case VT2ECU::ALT_selectInputObjectRes:
+single_value.field_selectInputObjectRes = new SelectInputObjectRes_template(other_value.selectInputObjectRes());
+break;
+case VT2ECU::ALT_controlAudioSignalRes:
+single_value.field_controlAudioSignalRes = new ControlAudioSignalRes_template(other_value.controlAudioSignalRes());
+break;
+case VT2ECU::ALT_setAudioVolumeRes:
+single_value.field_setAudioVolumeRes = new SetAudioVolumeRes_template(other_value.setAudioVolumeRes());
+break;
+case VT2ECU::ALT_changeChildLocationRes:
+single_value.field_changeChildLocationRes = new ChangeChildLocationRes_template(other_value.changeChildLocationRes());
+break;
+case VT2ECU::ALT_changeSizeRes:
+single_value.field_changeSizeRes = new ChangeSizeRes_template(other_value.changeSizeRes());
+break;
+case VT2ECU::ALT_changeBackgroundColourRes:
+single_value.field_changeBackgroundColourRes = new ChangeBackgroundColourRes_template(other_value.changeBackgroundColourRes());
+break;
+case VT2ECU::ALT_changeNumericValueRes:
+single_value.field_changeNumericValueRes = new ChangeNumericValueRes_template(other_value.changeNumericValueRes());
+break;
+case VT2ECU::ALT_changeEndPointRes:
+single_value.field_changeEndPointRes = new ChangeEndPointRes_template(other_value.changeEndPointRes());
+break;
+case VT2ECU::ALT_changeFontAttributesRes:
+single_value.field_changeFontAttributesRes = new ChangeFontAttributesRes_template(other_value.changeFontAttributesRes());
+break;
+case VT2ECU::ALT_changeLineAttributesRes:
+single_value.field_changeLineAttributesRes = new ChangeLineAttributesRes_template(other_value.changeLineAttributesRes());
+break;
+case VT2ECU::ALT_changeFillAttributesRes:
+single_value.field_changeFillAttributesRes = new ChangeFillAttributesRes_template(other_value.changeFillAttributesRes());
+break;
+case VT2ECU::ALT_changeActiveMaskRes:
+single_value.field_changeActiveMaskRes = new ChangeActiveMaskRes_template(other_value.changeActiveMaskRes());
+break;
+case VT2ECU::ALT_changeSoftKeyMaskRes:
+single_value.field_changeSoftKeyMaskRes = new ChangeSoftKeyMaskRes_template(other_value.changeSoftKeyMaskRes());
+break;
+case VT2ECU::ALT_changeAttributeRes:
+single_value.field_changeAttributeRes = new ChangeAttributeRes_template(other_value.changeAttributeRes());
+break;
+case VT2ECU::ALT_changePriorityRes:
+single_value.field_changePriorityRes = new ChangePriorityRes_template(other_value.changePriorityRes());
+break;
+case VT2ECU::ALT_changeListItemRes:
+single_value.field_changeListItemRes = new ChangeListItemRes_template(other_value.changeListItemRes());
+break;
+case VT2ECU::ALT_deleteObjectPoolRes:
+single_value.field_deleteObjectPoolRes = new DeleteObjectPoolRes_template(other_value.deleteObjectPoolRes());
+break;
+case VT2ECU::ALT_changeStringValueRes:
+single_value.field_changeStringValueRes = new ChangeStringValueRes_template(other_value.changeStringValueRes());
+break;
+case VT2ECU::ALT_changeChildPositionRes:
+single_value.field_changeChildPositionRes = new ChangeChildPositionRes_template(other_value.changeChildPositionRes());
+break;
+case VT2ECU::ALT_changeObjectLabelRes:
+single_value.field_changeObjectLabelRes = new ChangeObjectLabelRes_template(other_value.changeObjectLabelRes());
+break;
+case VT2ECU::ALT_changePolygonPointRes:
+single_value.field_changePolygonPointRes = new ChangePolygonPointRes_template(other_value.changePolygonPointRes());
+break;
+case VT2ECU::ALT_changePolygonScaleRes:
+single_value.field_changePolygonScaleRes = new ChangePolygonScaleRes_template(other_value.changePolygonScaleRes());
+break;
+case VT2ECU::ALT_graphicsContextRes:
+single_value.field_graphicsContextRes = new GraphicsContextRes_template(other_value.graphicsContextRes());
+break;
+case VT2ECU::ALT_getAttributeValueRes:
+single_value.field_getAttributeValueRes = new GetAttributeValueRes_template(other_value.getAttributeValueRes());
+break;
+case VT2ECU::ALT_selectColourMapRes:
+single_value.field_selectColourMapRes = new SelectColourMapRes_template(other_value.selectColourMapRes());
+break;
+case VT2ECU::ALT_identifyVTRes:
+single_value.field_identifyVTRes = new IdentifyVTRes_template(other_value.identifyVTRes());
+break;
+case VT2ECU::ALT_executeExtendedMacroRes:
+single_value.field_executeExtendedMacroRes = new ExecuteExtendedMacroRes_template(other_value.executeExtendedMacroRes());
+break;
+case VT2ECU::ALT_lockUnlockMaskRes:
+single_value.field_lockUnlockMaskRes = new LockUnlockMaskRes_template(other_value.lockUnlockMaskRes());
+break;
+case VT2ECU::ALT_executeMacroRes:
+single_value.field_executeMacroRes = new ExecuteMacroRes_template(other_value.executeMacroRes());
+break;
+case VT2ECU::ALT_getMemoryRes:
+single_value.field_getMemoryRes = new GetMemoryRes_template(other_value.getMemoryRes());
+break;
+case VT2ECU::ALT_getNumberOfSoftKeysRes:
+single_value.field_getNumberOfSoftKeysRes = new GetNumberOfSoftKeysRes_template(other_value.getNumberOfSoftKeysRes());
+break;
+case VT2ECU::ALT_getTextFontDataRes:
+single_value.field_getTextFontDataRes = new GetTextFontDataRes_template(other_value.getTextFontDataRes());
+break;
+case VT2ECU::ALT_getHardwareRes:
+single_value.field_getHardwareRes = new GetHardwareRes_template(other_value.getHardwareRes());
+break;
+case VT2ECU::ALT_getSupportedWidecharsRes:
+single_value.field_getSupportedWidecharsRes = new GetSupportedWidecharsRes_template(other_value.getSupportedWidecharsRes());
+break;
+case VT2ECU::ALT_getWindowMaskDataRes:
+single_value.field_getWindowMaskDataRes = new GetWindowMaskDataRes_template(other_value.getWindowMaskDataRes());
+break;
+case VT2ECU::ALT_getSupportedObjectsRes:
+single_value.field_getSupportedObjectsRes = new GetSupportedObjectsRes_template(other_value.getSupportedObjectsRes());
+break;
+case VT2ECU::ALT_storeVersionRes:
+single_value.field_storeVersionRes = new StoreVersionRes_template(other_value.storeVersionRes());
+break;
+case VT2ECU::ALT_loadVersionRes:
+single_value.field_loadVersionRes = new LoadVersionRes_template(other_value.loadVersionRes());
+break;
+case VT2ECU::ALT_deleteVersionRes:
+single_value.field_deleteVersionRes = new DeleteVersionRes_template(other_value.deleteVersionRes());
+break;
+case VT2ECU::ALT_extendedGetVersionsRes:
+single_value.field_extendedGetVersionsRes = new ExtendedGetVersionsRes_template(other_value.extendedGetVersionsRes());
+break;
+case VT2ECU::ALT_extendedStoreVersionRes:
+single_value.field_extendedStoreVersionRes = new ExtendedStoreVersionRes_template(other_value.extendedStoreVersionRes());
+break;
+case VT2ECU::ALT_extendedLoadVersionRes:
+single_value.field_extendedLoadVersionRes = new ExtendedLoadVersionRes_template(other_value.extendedLoadVersionRes());
+break;
+case VT2ECU::ALT_extendedDeleteVersionRes:
+single_value.field_extendedDeleteVersionRes = new ExtendedDeleteVersionRes_template(other_value.extendedDeleteVersionRes());
+break;
+case VT2ECU::ALT_getVersionsRes:
+single_value.field_getVersionsRes = new GetVersionsRes_template(other_value.getVersionsRes());
+break;
+case VT2ECU::ALT_vtUnsupportedVTFunctionInd:
+single_value.field_vtUnsupportedVTFunctionInd = new VTUnsupportedVTFunctionInd_template(other_value.vtUnsupportedVTFunctionInd());
+break;
+case VT2ECU::ALT_vtStatusReq:
+single_value.field_vtStatusReq = new VTStatusReq_template(other_value.vtStatusReq());
+break;
+default:
+TTCN_error("Initializing a template with an unbound value of type @IsobusVTMessageTypes.VT2ECU.");
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void VT2ECU_template::copy_template(const VT2ECU_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 VT2ECU::ALT_softKeyActivationReq:
+single_value.field_softKeyActivationReq = new SoftKeyActivationReq_template(*other_value.single_value.field_softKeyActivationReq);
+break;
+case VT2ECU::ALT_buttonActivationReq:
+single_value.field_buttonActivationReq = new ButtonActivationReq_template(*other_value.single_value.field_buttonActivationReq);
+break;
+case VT2ECU::ALT_pointingEventReq:
+single_value.field_pointingEventReq = new PointingEventReq_template(*other_value.single_value.field_pointingEventReq);
+break;
+case VT2ECU::ALT_vtSelectInputObjectReq:
+single_value.field_vtSelectInputObjectReq = new VTSelectInputObjectReq_template(*other_value.single_value.field_vtSelectInputObjectReq);
+break;
+case VT2ECU::ALT_vtESCReq:
+single_value.field_vtESCReq = new VTESCReq_template(*other_value.single_value.field_vtESCReq);
+break;
+case VT2ECU::ALT_vtChangeNumericValueReq:
+single_value.field_vtChangeNumericValueReq = new VTChangeNumericValueReq_template(*other_value.single_value.field_vtChangeNumericValueReq);
+break;
+case VT2ECU::ALT_vtChangeActiveMaskReq:
+single_value.field_vtChangeActiveMaskReq = new VTChangeActiveMaskReq_template(*other_value.single_value.field_vtChangeActiveMaskReq);
+break;
+case VT2ECU::ALT_vtChangeSoftKeyMaskReq:
+single_value.field_vtChangeSoftKeyMaskReq = new VTChangeSoftKeyMaskReq_template(*other_value.single_value.field_vtChangeSoftKeyMaskReq);
+break;
+case VT2ECU::ALT_vtChangeStringValueReq:
+single_value.field_vtChangeStringValueReq = new VTChangeStringValueReq_template(*other_value.single_value.field_vtChangeStringValueReq);
+break;
+case VT2ECU::ALT_vtOnUserLayoutHideShowReq:
+single_value.field_vtOnUserLayoutHideShowReq = new VTOnUserLayoutHideShowReq_template(*other_value.single_value.field_vtOnUserLayoutHideShowReq);
+break;
+case VT2ECU::ALT_vtControlAudioSignalTerminationInd:
+single_value.field_vtControlAudioSignalTerminationInd = new VTControlAudioSignalTerminationInd_template(*other_value.single_value.field_vtControlAudioSignalTerminationInd);
+break;
+case VT2ECU::ALT_endOfObjectPoolRes:
+single_value.field_endOfObjectPoolRes = new EndOfObjectPoolRes_template(*other_value.single_value.field_endOfObjectPoolRes);
+break;
+case VT2ECU::ALT_vtfunction32VT2ECU:
+single_value.field_vtfunction32VT2ECU = new VTfunction32VT2ECU_template(*other_value.single_value.field_vtfunction32VT2ECU);
+break;
+case VT2ECU::ALT_vtfunction34VT2ECU:
+single_value.field_vtfunction34VT2ECU = new VTfunction34VT2ECU_template(*other_value.single_value.field_vtfunction34VT2ECU);
+break;
+case VT2ECU::ALT_vtfunction36VT2ECU:
+single_value.field_vtfunction36VT2ECU = new VTfunction36VT2ECU_template(*other_value.single_value.field_vtfunction36VT2ECU);
+break;
+case VT2ECU::ALT_vtfunction37VT2ECU:
+single_value.field_vtfunction37VT2ECU = new VTfunction37VT2ECU_template(*other_value.single_value.field_vtfunction37VT2ECU);
+break;
+case VT2ECU::ALT_vtfunction39VT2ECU:
+single_value.field_vtfunction39VT2ECU = new VTfunction39VT2ECU_template(*other_value.single_value.field_vtfunction39VT2ECU);
+break;
+case VT2ECU::ALT_escRes:
+single_value.field_escRes = new ESCres_template(*other_value.single_value.field_escRes);
+break;
+case VT2ECU::ALT_hideShowObjectRes:
+single_value.field_hideShowObjectRes = new HideShowObjectRes_template(*other_value.single_value.field_hideShowObjectRes);
+break;
+case VT2ECU::ALT_enableDisableObjectRes:
+single_value.field_enableDisableObjectRes = new EnableDisableObjectRes_template(*other_value.single_value.field_enableDisableObjectRes);
+break;
+case VT2ECU::ALT_selectInputObjectRes:
+single_value.field_selectInputObjectRes = new SelectInputObjectRes_template(*other_value.single_value.field_selectInputObjectRes);
+break;
+case VT2ECU::ALT_controlAudioSignalRes:
+single_value.field_controlAudioSignalRes = new ControlAudioSignalRes_template(*other_value.single_value.field_controlAudioSignalRes);
+break;
+case VT2ECU::ALT_setAudioVolumeRes:
+single_value.field_setAudioVolumeRes = new SetAudioVolumeRes_template(*other_value.single_value.field_setAudioVolumeRes);
+break;
+case VT2ECU::ALT_changeChildLocationRes:
+single_value.field_changeChildLocationRes = new ChangeChildLocationRes_template(*other_value.single_value.field_changeChildLocationRes);
+break;
+case VT2ECU::ALT_changeSizeRes:
+single_value.field_changeSizeRes = new ChangeSizeRes_template(*other_value.single_value.field_changeSizeRes);
+break;
+case VT2ECU::ALT_changeBackgroundColourRes:
+single_value.field_changeBackgroundColourRes = new ChangeBackgroundColourRes_template(*other_value.single_value.field_changeBackgroundColourRes);
+break;
+case VT2ECU::ALT_changeNumericValueRes:
+single_value.field_changeNumericValueRes = new ChangeNumericValueRes_template(*other_value.single_value.field_changeNumericValueRes);
+break;
+case VT2ECU::ALT_changeEndPointRes:
+single_value.field_changeEndPointRes = new ChangeEndPointRes_template(*other_value.single_value.field_changeEndPointRes);
+break;
+case VT2ECU::ALT_changeFontAttributesRes:
+single_value.field_changeFontAttributesRes = new ChangeFontAttributesRes_template(*other_value.single_value.field_changeFontAttributesRes);
+break;
+case VT2ECU::ALT_changeLineAttributesRes:
+single_value.field_changeLineAttributesRes = new ChangeLineAttributesRes_template(*other_value.single_value.field_changeLineAttributesRes);
+break;
+case VT2ECU::ALT_changeFillAttributesRes:
+single_value.field_changeFillAttributesRes = new ChangeFillAttributesRes_template(*other_value.single_value.field_changeFillAttributesRes);
+break;
+case VT2ECU::ALT_changeActiveMaskRes:
+single_value.field_changeActiveMaskRes = new ChangeActiveMaskRes_template(*other_value.single_value.field_changeActiveMaskRes);
+break;
+case VT2ECU::ALT_changeSoftKeyMaskRes:
+single_value.field_changeSoftKeyMaskRes = new ChangeSoftKeyMaskRes_template(*other_value.single_value.field_changeSoftKeyMaskRes);
+break;
+case VT2ECU::ALT_changeAttributeRes:
+single_value.field_changeAttributeRes = new ChangeAttributeRes_template(*other_value.single_value.field_changeAttributeRes);
+break;
+case VT2ECU::ALT_changePriorityRes:
+single_value.field_changePriorityRes = new ChangePriorityRes_template(*other_value.single_value.field_changePriorityRes);
+break;
+case VT2ECU::ALT_changeListItemRes:
+single_value.field_changeListItemRes = new ChangeListItemRes_template(*other_value.single_value.field_changeListItemRes);
+break;
+case VT2ECU::ALT_deleteObjectPoolRes:
+single_value.field_deleteObjectPoolRes = new DeleteObjectPoolRes_template(*other_value.single_value.field_deleteObjectPoolRes);
+break;
+case VT2ECU::ALT_changeStringValueRes:
+single_value.field_changeStringValueRes = new ChangeStringValueRes_template(*other_value.single_value.field_changeStringValueRes);
+break;
+case VT2ECU::ALT_changeChildPositionRes:
+single_value.field_changeChildPositionRes = new ChangeChildPositionRes_template(*other_value.single_value.field_changeChildPositionRes);
+break;
+case VT2ECU::ALT_changeObjectLabelRes:
+single_value.field_changeObjectLabelRes = new ChangeObjectLabelRes_template(*other_value.single_value.field_changeObjectLabelRes);
+break;
+case VT2ECU::ALT_changePolygonPointRes:
+single_value.field_changePolygonPointRes = new ChangePolygonPointRes_template(*other_value.single_value.field_changePolygonPointRes);
+break;
+case VT2ECU::ALT_changePolygonScaleRes:
+single_value.field_changePolygonScaleRes = new ChangePolygonScaleRes_template(*other_value.single_value.field_changePolygonScaleRes);
+break;
+case VT2ECU::ALT_graphicsContextRes:
+single_value.field_graphicsContextRes = new GraphicsContextRes_template(*other_value.single_value.field_graphicsContextRes);
+break;
+case VT2ECU::ALT_getAttributeValueRes:
+single_value.field_getAttributeValueRes = new GetAttributeValueRes_template(*other_value.single_value.field_getAttributeValueRes);
+break;
+case VT2ECU::ALT_selectColourMapRes:
+single_value.field_selectColourMapRes = new SelectColourMapRes_template(*other_value.single_value.field_selectColourMapRes);
+break;
+case VT2ECU::ALT_identifyVTRes:
+single_value.field_identifyVTRes = new IdentifyVTRes_template(*other_value.single_value.field_identifyVTRes);
+break;
+case VT2ECU::ALT_executeExtendedMacroRes:
+single_value.field_executeExtendedMacroRes = new ExecuteExtendedMacroRes_template(*other_value.single_value.field_executeExtendedMacroRes);
+break;
+case VT2ECU::ALT_lockUnlockMaskRes:
+single_value.field_lockUnlockMaskRes = new LockUnlockMaskRes_template(*other_value.single_value.field_lockUnlockMaskRes);
+break;
+case VT2ECU::ALT_executeMacroRes:
+single_value.field_executeMacroRes = new ExecuteMacroRes_template(*other_value.single_value.field_executeMacroRes);
+break;
+case VT2ECU::ALT_getMemoryRes:
+single_value.field_getMemoryRes = new GetMemoryRes_template(*other_value.single_value.field_getMemoryRes);
+break;
+case VT2ECU::ALT_getNumberOfSoftKeysRes:
+single_value.field_getNumberOfSoftKeysRes = new GetNumberOfSoftKeysRes_template(*other_value.single_value.field_getNumberOfSoftKeysRes);
+break;
+case VT2ECU::ALT_getTextFontDataRes:
+single_value.field_getTextFontDataRes = new GetTextFontDataRes_template(*other_value.single_value.field_getTextFontDataRes);
+break;
+case VT2ECU::ALT_getHardwareRes:
+single_value.field_getHardwareRes = new GetHardwareRes_template(*other_value.single_value.field_getHardwareRes);
+break;
+case VT2ECU::ALT_getSupportedWidecharsRes:
+single_value.field_getSupportedWidecharsRes = new GetSupportedWidecharsRes_template(*other_value.single_value.field_getSupportedWidecharsRes);
+break;
+case VT2ECU::ALT_getWindowMaskDataRes:
+single_value.field_getWindowMaskDataRes = new GetWindowMaskDataRes_template(*other_value.single_value.field_getWindowMaskDataRes);
+break;
+case VT2ECU::ALT_getSupportedObjectsRes:
+single_value.field_getSupportedObjectsRes = new GetSupportedObjectsRes_template(*other_value.single_value.field_getSupportedObjectsRes);
+break;
+case VT2ECU::ALT_storeVersionRes:
+single_value.field_storeVersionRes = new StoreVersionRes_template(*other_value.single_value.field_storeVersionRes);
+break;
+case VT2ECU::ALT_loadVersionRes:
+single_value.field_loadVersionRes = new LoadVersionRes_template(*other_value.single_value.field_loadVersionRes);
+break;
+case VT2ECU::ALT_deleteVersionRes:
+single_value.field_deleteVersionRes = new DeleteVersionRes_template(*other_value.single_value.field_deleteVersionRes);
+break;
+case VT2ECU::ALT_extendedGetVersionsRes:
+single_value.field_extendedGetVersionsRes = new ExtendedGetVersionsRes_template(*other_value.single_value.field_extendedGetVersionsRes);
+break;
+case VT2ECU::ALT_extendedStoreVersionRes:
+single_value.field_extendedStoreVersionRes = new ExtendedStoreVersionRes_template(*other_value.single_value.field_extendedStoreVersionRes);
+break;
+case VT2ECU::ALT_extendedLoadVersionRes:
+single_value.field_extendedLoadVersionRes = new ExtendedLoadVersionRes_template(*other_value.single_value.field_extendedLoadVersionRes);
+break;
+case VT2ECU::ALT_extendedDeleteVersionRes:
+single_value.field_extendedDeleteVersionRes = new ExtendedDeleteVersionRes_template(*other_value.single_value.field_extendedDeleteVersionRes);
+break;
+case VT2ECU::ALT_getVersionsRes:
+single_value.field_getVersionsRes = new GetVersionsRes_template(*other_value.single_value.field_getVersionsRes);
+break;
+case VT2ECU::ALT_vtUnsupportedVTFunctionInd:
+single_value.field_vtUnsupportedVTFunctionInd = new VTUnsupportedVTFunctionInd_template(*other_value.single_value.field_vtUnsupportedVTFunctionInd);
+break;
+case VT2ECU::ALT_vtStatusReq:
+single_value.field_vtStatusReq = new VTStatusReq_template(*other_value.single_value.field_vtStatusReq);
+break;
+default:
+TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @IsobusVTMessageTypes.VT2ECU.");
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new VT2ECU_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;
+default:
+TTCN_error("Copying an uninitialized template of union type @IsobusVTMessageTypes.VT2ECU.");
+}
+set_selection(other_value);
+}
+
+VT2ECU_template::VT2ECU_template()
+{
+}
+
+VT2ECU_template::VT2ECU_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+VT2ECU_template::VT2ECU_template(const VT2ECU& other_value)
+{
+copy_value(other_value);
+}
+
+VT2ECU_template::VT2ECU_template(const OPTIONAL<VT2ECU>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VT2ECU&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of union type @IsobusVTMessageTypes.VT2ECU from an unbound optional field.");
+}
+}
+
+VT2ECU_template::VT2ECU_template(const VT2ECU_template& other_value)
+: Base_Template(){
+copy_template(other_value);
+}
+
+VT2ECU_template::~VT2ECU_template()
+{
+clean_up();
+}
+
+void VT2ECU_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case VT2ECU::ALT_softKeyActivationReq:
+delete single_value.field_softKeyActivationReq;
+break;
+case VT2ECU::ALT_buttonActivationReq:
+delete single_value.field_buttonActivationReq;
+break;
+case VT2ECU::ALT_pointingEventReq:
+delete single_value.field_pointingEventReq;
+break;
+case VT2ECU::ALT_vtSelectInputObjectReq:
+delete single_value.field_vtSelectInputObjectReq;
+break;
+case VT2ECU::ALT_vtESCReq:
+delete single_value.field_vtESCReq;
+break;
+case VT2ECU::ALT_vtChangeNumericValueReq:
+delete single_value.field_vtChangeNumericValueReq;
+break;
+case VT2ECU::ALT_vtChangeActiveMaskReq:
+delete single_value.field_vtChangeActiveMaskReq;
+break;
+case VT2ECU::ALT_vtChangeSoftKeyMaskReq:
+delete single_value.field_vtChangeSoftKeyMaskReq;
+break;
+case VT2ECU::ALT_vtChangeStringValueReq:
+delete single_value.field_vtChangeStringValueReq;
+break;
+case VT2ECU::ALT_vtOnUserLayoutHideShowReq:
+delete single_value.field_vtOnUserLayoutHideShowReq;
+break;
+case VT2ECU::ALT_vtControlAudioSignalTerminationInd:
+delete single_value.field_vtControlAudioSignalTerminationInd;
+break;
+case VT2ECU::ALT_endOfObjectPoolRes:
+delete single_value.field_endOfObjectPoolRes;
+break;
+case VT2ECU::ALT_vtfunction32VT2ECU:
+delete single_value.field_vtfunction32VT2ECU;
+break;
+case VT2ECU::ALT_vtfunction34VT2ECU:
+delete single_value.field_vtfunction34VT2ECU;
+break;
+case VT2ECU::ALT_vtfunction36VT2ECU:
+delete single_value.field_vtfunction36VT2ECU;
+break;
+case VT2ECU::ALT_vtfunction37VT2ECU:
+delete single_value.field_vtfunction37VT2ECU;
+break;
+case VT2ECU::ALT_vtfunction39VT2ECU:
+delete single_value.field_vtfunction39VT2ECU;
+break;
+case VT2ECU::ALT_escRes:
+delete single_value.field_escRes;
+break;
+case VT2ECU::ALT_hideShowObjectRes:
+delete single_value.field_hideShowObjectRes;
+break;
+case VT2ECU::ALT_enableDisableObjectRes:
+delete single_value.field_enableDisableObjectRes;
+break;
+case VT2ECU::ALT_selectInputObjectRes:
+delete single_value.field_selectInputObjectRes;
+break;
+case VT2ECU::ALT_controlAudioSignalRes:
+delete single_value.field_controlAudioSignalRes;
+break;
+case VT2ECU::ALT_setAudioVolumeRes:
+delete single_value.field_setAudioVolumeRes;
+break;
+case VT2ECU::ALT_changeChildLocationRes:
+delete single_value.field_changeChildLocationRes;
+break;
+case VT2ECU::ALT_changeSizeRes:
+delete single_value.field_changeSizeRes;
+break;
+case VT2ECU::ALT_changeBackgroundColourRes:
+delete single_value.field_changeBackgroundColourRes;
+break;
+case VT2ECU::ALT_changeNumericValueRes:
+delete single_value.field_changeNumericValueRes;
+break;
+case VT2ECU::ALT_changeEndPointRes:
+delete single_value.field_changeEndPointRes;
+break;
+case VT2ECU::ALT_changeFontAttributesRes:
+delete single_value.field_changeFontAttributesRes;
+break;
+case VT2ECU::ALT_changeLineAttributesRes:
+delete single_value.field_changeLineAttributesRes;
+break;
+case VT2ECU::ALT_changeFillAttributesRes:
+delete single_value.field_changeFillAttributesRes;
+break;
+case VT2ECU::ALT_changeActiveMaskRes:
+delete single_value.field_changeActiveMaskRes;
+break;
+case VT2ECU::ALT_changeSoftKeyMaskRes:
+delete single_value.field_changeSoftKeyMaskRes;
+break;
+case VT2ECU::ALT_changeAttributeRes:
+delete single_value.field_changeAttributeRes;
+break;
+case VT2ECU::ALT_changePriorityRes:
+delete single_value.field_changePriorityRes;
+break;
+case VT2ECU::ALT_changeListItemRes:
+delete single_value.field_changeListItemRes;
+break;
+case VT2ECU::ALT_deleteObjectPoolRes:
+delete single_value.field_deleteObjectPoolRes;
+break;
+case VT2ECU::ALT_changeStringValueRes:
+delete single_value.field_changeStringValueRes;
+break;
+case VT2ECU::ALT_changeChildPositionRes:
+delete single_value.field_changeChildPositionRes;
+break;
+case VT2ECU::ALT_changeObjectLabelRes:
+delete single_value.field_changeObjectLabelRes;
+break;
+case VT2ECU::ALT_changePolygonPointRes:
+delete single_value.field_changePolygonPointRes;
+break;
+case VT2ECU::ALT_changePolygonScaleRes:
+delete single_value.field_changePolygonScaleRes;
+break;
+case VT2ECU::ALT_graphicsContextRes:
+delete single_value.field_graphicsContextRes;
+break;
+case VT2ECU::ALT_getAttributeValueRes:
+delete single_value.field_getAttributeValueRes;
+break;
+case VT2ECU::ALT_selectColourMapRes:
+delete single_value.field_selectColourMapRes;
+break;
+case VT2ECU::ALT_identifyVTRes:
+delete single_value.field_identifyVTRes;
+break;
+case VT2ECU::ALT_executeExtendedMacroRes:
+delete single_value.field_executeExtendedMacroRes;
+break;
+case VT2ECU::ALT_lockUnlockMaskRes:
+delete single_value.field_lockUnlockMaskRes;
+break;
+case VT2ECU::ALT_executeMacroRes:
+delete single_value.field_executeMacroRes;
+break;
+case VT2ECU::ALT_getMemoryRes:
+delete single_value.field_getMemoryRes;
+break;
+case VT2ECU::ALT_getNumberOfSoftKeysRes:
+delete single_value.field_getNumberOfSoftKeysRes;
+break;
+case VT2ECU::ALT_getTextFontDataRes:
+delete single_value.field_getTextFontDataRes;
+break;
+case VT2ECU::ALT_getHardwareRes:
+delete single_value.field_getHardwareRes;
+break;
+case VT2ECU::ALT_getSupportedWidecharsRes:
+delete single_value.field_getSupportedWidecharsRes;
+break;
+case VT2ECU::ALT_getWindowMaskDataRes:
+delete single_value.field_getWindowMaskDataRes;
+break;
+case VT2ECU::ALT_getSupportedObjectsRes:
+delete single_value.field_getSupportedObjectsRes;
+break;
+case VT2ECU::ALT_storeVersionRes:
+delete single_value.field_storeVersionRes;
+break;
+case VT2ECU::ALT_loadVersionRes:
+delete single_value.field_loadVersionRes;
+break;
+case VT2ECU::ALT_deleteVersionRes:
+delete single_value.field_deleteVersionRes;
+break;
+case VT2ECU::ALT_extendedGetVersionsRes:
+delete single_value.field_extendedGetVersionsRes;
+break;
+case VT2ECU::ALT_extendedStoreVersionRes:
+delete single_value.field_extendedStoreVersionRes;
+break;
+case VT2ECU::ALT_extendedLoadVersionRes:
+delete single_value.field_extendedLoadVersionRes;
+break;
+case VT2ECU::ALT_extendedDeleteVersionRes:
+delete single_value.field_extendedDeleteVersionRes;
+break;
+case VT2ECU::ALT_getVersionsRes:
+delete single_value.field_getVersionsRes;
+break;
+case VT2ECU::ALT_vtUnsupportedVTFunctionInd:
+delete single_value.field_vtUnsupportedVTFunctionInd;
+break;
+case VT2ECU::ALT_vtStatusReq:
+delete single_value.field_vtStatusReq;
+default:
+break;
+}
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+VT2ECU_template& VT2ECU_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+VT2ECU_template& VT2ECU_template::operator=(const VT2ECU& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+VT2ECU_template& VT2ECU_template::operator=(const OPTIONAL<VT2ECU>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const VT2ECU&)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 @IsobusVTMessageTypes.VT2ECU.");
+}
+return *this;
+}
+
+VT2ECU_template& VT2ECU_template::operator=(const VT2ECU_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean VT2ECU_template::match(const VT2ECU& 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:
+{
+VT2ECU::union_selection_type value_selection = other_value.get_selection();
+if (value_selection == VT2ECU::UNBOUND_VALUE) return FALSE;
+if (value_selection != single_value.union_selection) return FALSE;
+switch (value_selection) {
+case VT2ECU::ALT_softKeyActivationReq:
+return single_value.field_softKeyActivationReq->match(other_value.softKeyActivationReq(), legacy);
+case VT2ECU::ALT_buttonActivationReq:
+return single_value.field_buttonActivationReq->match(other_value.buttonActivationReq(), legacy);
+case VT2ECU::ALT_pointingEventReq:
+return single_value.field_pointingEventReq->match(other_value.pointingEventReq(), legacy);
+case VT2ECU::ALT_vtSelectInputObjectReq:
+return single_value.field_vtSelectInputObjectReq->match(other_value.vtSelectInputObjectReq(), legacy);
+case VT2ECU::ALT_vtESCReq:
+return single_value.field_vtESCReq->match(other_value.vtESCReq(), legacy);
+case VT2ECU::ALT_vtChangeNumericValueReq:
+return single_value.field_vtChangeNumericValueReq->match(other_value.vtChangeNumericValueReq(), legacy);
+case VT2ECU::ALT_vtChangeActiveMaskReq:
+return single_value.field_vtChangeActiveMaskReq->match(other_value.vtChangeActiveMaskReq(), legacy);
+case VT2ECU::ALT_vtChangeSoftKeyMaskReq:
+return single_value.field_vtChangeSoftKeyMaskReq->match(other_value.vtChangeSoftKeyMaskReq(), legacy);
+case VT2ECU::ALT_vtChangeStringValueReq:
+return single_value.field_vtChangeStringValueReq->match(other_value.vtChangeStringValueReq(), legacy);
+case VT2ECU::ALT_vtOnUserLayoutHideShowReq:
+return single_value.field_vtOnUserLayoutHideShowReq->match(other_value.vtOnUserLayoutHideShowReq(), legacy);
+case VT2ECU::ALT_vtControlAudioSignalTerminationInd:
+return single_value.field_vtControlAudioSignalTerminationInd->match(other_value.vtControlAudioSignalTerminationInd(), legacy);
+case VT2ECU::ALT_endOfObjectPoolRes:
+return single_value.field_endOfObjectPoolRes->match(other_value.endOfObjectPoolRes(), legacy);
+case VT2ECU::ALT_vtfunction32VT2ECU:
+return single_value.field_vtfunction32VT2ECU->match(other_value.vtfunction32VT2ECU(), legacy);
+case VT2ECU::ALT_vtfunction34VT2ECU:
+return single_value.field_vtfunction34VT2ECU->match(other_value.vtfunction34VT2ECU(), legacy);
+case VT2ECU::ALT_vtfunction36VT2ECU:
+return single_value.field_vtfunction36VT2ECU->match(other_value.vtfunction36VT2ECU(), legacy);
+case VT2ECU::ALT_vtfunction37VT2ECU:
+return single_value.field_vtfunction37VT2ECU->match(other_value.vtfunction37VT2ECU(), legacy);
+case VT2ECU::ALT_vtfunction39VT2ECU:
+return single_value.field_vtfunction39VT2ECU->match(other_value.vtfunction39VT2ECU(), legacy);
+case VT2ECU::ALT_escRes:
+return single_value.field_escRes->match(other_value.escRes(), legacy);
+case VT2ECU::ALT_hideShowObjectRes:
+return single_value.field_hideShowObjectRes->match(other_value.hideShowObjectRes(), legacy);
+case VT2ECU::ALT_enableDisableObjectRes:
+return single_value.field_enableDisableObjectRes->match(other_value.enableDisableObjectRes(), legacy);
+case VT2ECU::ALT_selectInputObjectRes:
+return single_value.field_selectInputObjectRes->match(other_value.selectInputObjectRes(), legacy);
+case VT2ECU::ALT_controlAudioSignalRes:
+return single_value.field_controlAudioSignalRes->match(other_value.controlAudioSignalRes(), legacy);
+case VT2ECU::ALT_setAudioVolumeRes:
+return single_value.field_setAudioVolumeRes->match(other_value.setAudioVolumeRes(), legacy);
+case VT2ECU::ALT_changeChildLocationRes:
+return single_value.field_changeChildLocationRes->match(other_value.changeChildLocationRes(), legacy);
+case VT2ECU::ALT_changeSizeRes:
+return single_value.field_changeSizeRes->match(other_value.changeSizeRes(), legacy);
+case VT2ECU::ALT_changeBackgroundColourRes:
+return single_value.field_changeBackgroundColourRes->match(other_value.changeBackgroundColourRes(), legacy);
+case VT2ECU::ALT_changeNumericValueRes:
+return single_value.field_changeNumericValueRes->match(other_value.changeNumericValueRes(), legacy);
+case VT2ECU::ALT_changeEndPointRes:
+return single_value.field_changeEndPointRes->match(other_value.changeEndPointRes(), legacy);
+case VT2ECU::ALT_changeFontAttributesRes:
+return single_value.field_changeFontAttributesRes->match(other_value.changeFontAttributesRes(), legacy);
+case VT2ECU::ALT_changeLineAttributesRes:
+return single_value.field_changeLineAttributesRes->match(other_value.changeLineAttributesRes(), legacy);
+case VT2ECU::ALT_changeFillAttributesRes:
+return single_value.field_changeFillAttributesRes->match(other_value.changeFillAttributesRes(), legacy);
+case VT2ECU::ALT_changeActiveMaskRes:
+return single_value.field_changeActiveMaskRes->match(other_value.changeActiveMaskRes(), legacy);
+case VT2ECU::ALT_changeSoftKeyMaskRes:
+return single_value.field_changeSoftKeyMaskRes->match(other_value.changeSoftKeyMaskRes(), legacy);
+case VT2ECU::ALT_changeAttributeRes:
+return single_value.field_changeAttributeRes->match(other_value.changeAttributeRes(), legacy);
+case VT2ECU::ALT_changePriorityRes:
+return single_value.field_changePriorityRes->match(other_value.changePriorityRes(), legacy);
+case VT2ECU::ALT_changeListItemRes:
+return single_value.field_changeListItemRes->match(other_value.changeListItemRes(), legacy);
+case VT2ECU::ALT_deleteObjectPoolRes:
+return single_value.field_deleteObjectPoolRes->match(other_value.deleteObjectPoolRes(), legacy);
+case VT2ECU::ALT_changeStringValueRes:
+return single_value.field_changeStringValueRes->match(other_value.changeStringValueRes(), legacy);
+case VT2ECU::ALT_changeChildPositionRes:
+return single_value.field_changeChildPositionRes->match(other_value.changeChildPositionRes(), legacy);
+case VT2ECU::ALT_changeObjectLabelRes:
+return single_value.field_changeObjectLabelRes->match(other_value.changeObjectLabelRes(), legacy);
+case VT2ECU::ALT_changePolygonPointRes:
+return single_value.field_changePolygonPointRes->match(other_value.changePolygonPointRes(), legacy);
+case VT2ECU::ALT_changePolygonScaleRes:
+return single_value.field_changePolygonScaleRes->match(other_value.changePolygonScaleRes(), legacy);
+case VT2ECU::ALT_graphicsContextRes:
+return single_value.field_graphicsContextRes->match(other_value.graphicsContextRes(), legacy);
+case VT2ECU::ALT_getAttributeValueRes:
+return single_value.field_getAttributeValueRes->match(other_value.getAttributeValueRes(), legacy);
+case VT2ECU::ALT_selectColourMapRes:
+return single_value.field_selectColourMapRes->match(other_value.selectColourMapRes(), legacy);
+case VT2ECU::ALT_identifyVTRes:
+return single_value.field_identifyVTRes->match(other_value.identifyVTRes(), legacy);
+case VT2ECU::ALT_executeExtendedMacroRes:
+return single_value.field_executeExtendedMacroRes->match(other_value.executeExtendedMacroRes(), legacy);
+case VT2ECU::ALT_lockUnlockMaskRes:
+return single_value.field_lockUnlockMaskRes->match(other_value.lockUnlockMaskRes(), legacy);
+case VT2ECU::ALT_executeMacroRes:
+return single_value.field_executeMacroRes->match(other_value.executeMacroRes(), legacy);
+case VT2ECU::ALT_getMemoryRes:
+return single_value.field_getMemoryRes->match(other_value.getMemoryRes(), legacy);
+case VT2ECU::ALT_getNumberOfSoftKeysRes:
+return single_value.field_getNumberOfSoftKeysRes->match(other_value.getNumberOfSoftKeysRes(), legacy);
+case VT2ECU::ALT_getTextFontDataRes:
+return single_value.field_getTextFontDataRes->match(other_value.getTextFontDataRes(), legacy);
+case VT2ECU::ALT_getHardwareRes:
+return single_value.field_getHardwareRes->match(other_value.getHardwareRes(), legacy);
+case VT2ECU::ALT_getSupportedWidecharsRes:
+return single_value.field_getSupportedWidecharsRes->match(other_value.getSupportedWidecharsRes(), legacy);
+case VT2ECU::ALT_getWindowMaskDataRes:
+return single_value.field_getWindowMaskDataRes->match(other_value.getWindowMaskDataRes(), legacy);
+case VT2ECU::ALT_getSupportedObjectsRes:
+return single_value.field_getSupportedObjectsRes->match(other_value.getSupportedObjectsRes(), legacy);
+case VT2ECU::ALT_storeVersionRes:
+return single_value.field_storeVersionRes->match(other_value.storeVersionRes(), legacy);
+case VT2ECU::ALT_loadVersionRes:
+return single_value.field_loadVersionRes->match(other_value.loadVersionRes(), legacy);
+case VT2ECU::ALT_deleteVersionRes:
+return single_value.field_deleteVersionRes->match(other_value.deleteVersionRes(), legacy);
+case VT2ECU::ALT_extendedGetVersionsRes:
+return single_value.field_extendedGetVersionsRes->match(other_value.extendedGetVersionsRes(), legacy);
+case VT2ECU::ALT_extendedStoreVersionRes:
+return single_value.field_extendedStoreVersionRes->match(other_value.extendedStoreVersionRes(), legacy);
+case VT2ECU::ALT_extendedLoadVersionRes:
+return single_value.field_extendedLoadVersionRes->match(other_value.extendedLoadVersionRes(), legacy);
+case VT2ECU::ALT_extendedDeleteVersionRes:
+return single_value.field_extendedDeleteVersionRes->match(other_value.extendedDeleteVersionRes(), legacy);
+case VT2ECU::ALT_getVersionsRes:
+return single_value.field_getVersionsRes->match(other_value.getVersionsRes(), legacy);
+case VT2ECU::ALT_vtUnsupportedVTFunctionInd:
+return single_value.field_vtUnsupportedVTFunctionInd->match(other_value.vtUnsupportedVTFunctionInd(), legacy);
+case VT2ECU::ALT_vtStatusReq:
+return single_value.field_vtStatusReq->match(other_value.vtStatusReq(), legacy);
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @IsobusVTMessageTypes.VT2ECU.");
+}
+}
+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;
+default:
+TTCN_error ("Matching an uninitialized template of union type @IsobusVTMessageTypes.VT2ECU.");
+}
+return FALSE;
+}
+
+boolean VT2ECU_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+switch (single_value.union_selection) {
+case VT2ECU::ALT_softKeyActivationReq:
+return single_value.field_softKeyActivationReq->is_value();
+case VT2ECU::ALT_buttonActivationReq:
+return single_value.field_buttonActivationReq->is_value();
+case VT2ECU::ALT_pointingEventReq:
+return single_value.field_pointingEventReq->is_value();
+case VT2ECU::ALT_vtSelectInputObjectReq:
+return single_value.field_vtSelectInputObjectReq->is_value();
+case VT2ECU::ALT_vtESCReq:
+return single_value.field_vtESCReq->is_value();
+case VT2ECU::ALT_vtChangeNumericValueReq:
+return single_value.field_vtChangeNumericValueReq->is_value();
+case VT2ECU::ALT_vtChangeActiveMaskReq:
+return single_value.field_vtChangeActiveMaskReq->is_value();
+case VT2ECU::ALT_vtChangeSoftKeyMaskReq:
+return single_value.field_vtChangeSoftKeyMaskReq->is_value();
+case VT2ECU::ALT_vtChangeStringValueReq:
+return single_value.field_vtChangeStringValueReq->is_value();
+case VT2ECU::ALT_vtOnUserLayoutHideShowReq:
+return single_value.field_vtOnUserLayoutHideShowReq->is_value();
+case VT2ECU::ALT_vtControlAudioSignalTerminationInd:
+return single_value.field_vtControlAudioSignalTerminationInd->is_value();
+case VT2ECU::ALT_endOfObjectPoolRes:
+return single_value.field_endOfObjectPoolRes->is_value();
+case VT2ECU::ALT_vtfunction32VT2ECU:
+return single_value.field_vtfunction32VT2ECU->is_value();
+case VT2ECU::ALT_vtfunction34VT2ECU:
+return single_value.field_vtfunction34VT2ECU->is_value();
+case VT2ECU::ALT_vtfunction36VT2ECU:
+return single_value.field_vtfunction36VT2ECU->is_value();
+case VT2ECU::ALT_vtfunction37VT2ECU:
+return single_value.field_vtfunction37VT2ECU->is_value();
+case VT2ECU::ALT_vtfunction39VT2ECU:
+return single_value.field_vtfunction39VT2ECU->is_value();
+case VT2ECU::ALT_escRes:
+return single_value.field_escRes->is_value();
+case VT2ECU::ALT_hideShowObjectRes:
+return single_value.field_hideShowObjectRes->is_value();
+case VT2ECU::ALT_enableDisableObjectRes:
+return single_value.field_enableDisableObjectRes->is_value();
+case VT2ECU::ALT_selectInputObjectRes:
+return single_value.field_selectInputObjectRes->is_value();
+case VT2ECU::ALT_controlAudioSignalRes:
+return single_value.field_controlAudioSignalRes->is_value();
+case VT2ECU::ALT_setAudioVolumeRes:
+return single_value.field_setAudioVolumeRes->is_value();
+case VT2ECU::ALT_changeChildLocationRes:
+return single_value.field_changeChildLocationRes->is_value();
+case VT2ECU::ALT_changeSizeRes:
+return single_value.field_changeSizeRes->is_value();
+case VT2ECU::ALT_changeBackgroundColourRes:
+return single_value.field_changeBackgroundColourRes->is_value();
+case VT2ECU::ALT_changeNumericValueRes:
+return single_value.field_changeNumericValueRes->is_value();
+case VT2ECU::ALT_changeEndPointRes:
+return single_value.field_changeEndPointRes->is_value();
+case VT2ECU::ALT_changeFontAttributesRes:
+return single_value.field_changeFontAttributesRes->is_value();
+case VT2ECU::ALT_changeLineAttributesRes:
+return single_value.field_changeLineAttributesRes->is_value();
+case VT2ECU::ALT_changeFillAttributesRes:
+return single_value.field_changeFillAttributesRes->is_value();
+case VT2ECU::ALT_changeActiveMaskRes:
+return single_value.field_changeActiveMaskRes->is_value();
+case VT2ECU::ALT_changeSoftKeyMaskRes:
+return single_value.field_changeSoftKeyMaskRes->is_value();
+case VT2ECU::ALT_changeAttributeRes:
+return single_value.field_changeAttributeRes->is_value();
+case VT2ECU::ALT_changePriorityRes:
+return single_value.field_changePriorityRes->is_value();
+case VT2ECU::ALT_changeListItemRes:
+return single_value.field_changeListItemRes->is_value();
+case VT2ECU::ALT_deleteObjectPoolRes:
+return single_value.field_deleteObjectPoolRes->is_value();
+case VT2ECU::ALT_changeStringValueRes:
+return single_value.field_changeStringValueRes->is_value();
+case VT2ECU::ALT_changeChildPositionRes:
+return single_value.field_changeChildPositionRes->is_value();
+case VT2ECU::ALT_changeObjectLabelRes:
+return single_value.field_changeObjectLabelRes->is_value();
+case VT2ECU::ALT_changePolygonPointRes:
+return single_value.field_changePolygonPointRes->is_value();
+case VT2ECU::ALT_changePolygonScaleRes:
+return single_value.field_changePolygonScaleRes->is_value();
+case VT2ECU::ALT_graphicsContextRes:
+return single_value.field_graphicsContextRes->is_value();
+case VT2ECU::ALT_getAttributeValueRes:
+return single_value.field_getAttributeValueRes->is_value();
+case VT2ECU::ALT_selectColourMapRes:
+return single_value.field_selectColourMapRes->is_value();
+case VT2ECU::ALT_identifyVTRes:
+return single_value.field_identifyVTRes->is_value();
+case VT2ECU::ALT_executeExtendedMacroRes:
+return single_value.field_executeExtendedMacroRes->is_value();
+case VT2ECU::ALT_lockUnlockMaskRes:
+return single_value.field_lockUnlockMaskRes->is_value();
+case VT2ECU::ALT_executeMacroRes:
+return single_value.field_executeMacroRes->is_value();
+case VT2ECU::ALT_getMemoryRes:
+return single_value.field_getMemoryRes->is_value();
+case VT2ECU::ALT_getNumberOfSoftKeysRes:
+return single_value.field_getNumberOfSoftKeysRes->is_value();
+case VT2ECU::ALT_getTextFontDataRes:
+return single_value.field_getTextFontDataRes->is_value();
+case VT2ECU::ALT_getHardwareRes:
+return single_value.field_getHardwareRes->is_value();
+case VT2ECU::ALT_getSupportedWidecharsRes:
+return single_value.field_getSupportedWidecharsRes->is_value();
+case VT2ECU::ALT_getWindowMaskDataRes:
+return single_value.field_getWindowMaskDataRes->is_value();
+case VT2ECU::ALT_getSupportedObjectsRes:
+return single_value.field_getSupportedObjectsRes->is_value();
+case VT2ECU::ALT_storeVersionRes:
+return single_value.field_storeVersionRes->is_value();
+case VT2ECU::ALT_loadVersionRes:
+return single_value.field_loadVersionRes->is_value();
+case VT2ECU::ALT_deleteVersionRes:
+return single_value.field_deleteVersionRes->is_value();
+case VT2ECU::ALT_extendedGetVersionsRes:
+return single_value.field_extendedGetVersionsRes->is_value();
+case VT2ECU::ALT_extendedStoreVersionRes:
+return single_value.field_extendedStoreVersionRes->is_value();
+case VT2ECU::ALT_extendedLoadVersionRes:
+return single_value.field_extendedLoadVersionRes->is_value();
+case VT2ECU::ALT_extendedDeleteVersionRes:
+return single_value.field_extendedDeleteVersionRes->is_value();
+case VT2ECU::ALT_getVersionsRes:
+return single_value.field_getVersionsRes->is_value();
+case VT2ECU::ALT_vtUnsupportedVTFunctionInd:
+return single_value.field_vtUnsupportedVTFunctionInd->is_value();
+case VT2ECU::ALT_vtStatusReq:
+return single_value.field_vtStatusReq->is_value();
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @IsobusVTMessageTypes.VT2ECU.");
+}
+}
+
+VT2ECU VT2ECU_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 @IsobusVTMessageTypes.VT2ECU.");
+VT2ECU ret_val;
+switch (single_value.union_selection) {
+case VT2ECU::ALT_softKeyActivationReq:
+ret_val.softKeyActivationReq() = single_value.field_softKeyActivationReq->valueof();
+break;
+case VT2ECU::ALT_buttonActivationReq:
+ret_val.buttonActivationReq() = single_value.field_buttonActivationReq->valueof();
+break;
+case VT2ECU::ALT_pointingEventReq:
+ret_val.pointingEventReq() = single_value.field_pointingEventReq->valueof();
+break;
+case VT2ECU::ALT_vtSelectInputObjectReq:
+ret_val.vtSelectInputObjectReq() = single_value.field_vtSelectInputObjectReq->valueof();
+break;
+case VT2ECU::ALT_vtESCReq:
+ret_val.vtESCReq() = single_value.field_vtESCReq->valueof();
+break;
+case VT2ECU::ALT_vtChangeNumericValueReq:
+ret_val.vtChangeNumericValueReq() = single_value.field_vtChangeNumericValueReq->valueof();
+break;
+case VT2ECU::ALT_vtChangeActiveMaskReq:
+ret_val.vtChangeActiveMaskReq() = single_value.field_vtChangeActiveMaskReq->valueof();
+break;
+case VT2ECU::ALT_vtChangeSoftKeyMaskReq:
+ret_val.vtChangeSoftKeyMaskReq() = single_value.field_vtChangeSoftKeyMaskReq->valueof();
+break;
+case VT2ECU::ALT_vtChangeStringValueReq:
+ret_val.vtChangeStringValueReq() = single_value.field_vtChangeStringValueReq->valueof();
+break;
+case VT2ECU::ALT_vtOnUserLayoutHideShowReq:
+ret_val.vtOnUserLayoutHideShowReq() = single_value.field_vtOnUserLayoutHideShowReq->valueof();
+break;
+case VT2ECU::ALT_vtControlAudioSignalTerminationInd:
+ret_val.vtControlAudioSignalTerminationInd() = single_value.field_vtControlAudioSignalTerminationInd->valueof();
+break;
+case VT2ECU::ALT_endOfObjectPoolRes:
+ret_val.endOfObjectPoolRes() = single_value.field_endOfObjectPoolRes->valueof();
+break;
+case VT2ECU::ALT_vtfunction32VT2ECU:
+ret_val.vtfunction32VT2ECU() = single_value.field_vtfunction32VT2ECU->valueof();
+break;
+case VT2ECU::ALT_vtfunction34VT2ECU:
+ret_val.vtfunction34VT2ECU() = single_value.field_vtfunction34VT2ECU->valueof();
+break;
+case VT2ECU::ALT_vtfunction36VT2ECU:
+ret_val.vtfunction36VT2ECU() = single_value.field_vtfunction36VT2ECU->valueof();
+break;
+case VT2ECU::ALT_vtfunction37VT2ECU:
+ret_val.vtfunction37VT2ECU() = single_value.field_vtfunction37VT2ECU->valueof();
+break;
+case VT2ECU::ALT_vtfunction39VT2ECU:
+ret_val.vtfunction39VT2ECU() = single_value.field_vtfunction39VT2ECU->valueof();
+break;
+case VT2ECU::ALT_escRes:
+ret_val.escRes() = single_value.field_escRes->valueof();
+break;
+case VT2ECU::ALT_hideShowObjectRes:
+ret_val.hideShowObjectRes() = single_value.field_hideShowObjectRes->valueof();
+break;
+case VT2ECU::ALT_enableDisableObjectRes:
+ret_val.enableDisableObjectRes() = single_value.field_enableDisableObjectRes->valueof();
+break;
+case VT2ECU::ALT_selectInputObjectRes:
+ret_val.selectInputObjectRes() = single_value.field_selectInputObjectRes->valueof();
+break;
+case VT2ECU::ALT_controlAudioSignalRes:
+ret_val.controlAudioSignalRes() = single_value.field_controlAudioSignalRes->valueof();
+break;
+case VT2ECU::ALT_setAudioVolumeRes:
+ret_val.setAudioVolumeRes() = single_value.field_setAudioVolumeRes->valueof();
+break;
+case VT2ECU::ALT_changeChildLocationRes:
+ret_val.changeChildLocationRes() = single_value.field_changeChildLocationRes->valueof();
+break;
+case VT2ECU::ALT_changeSizeRes:
+ret_val.changeSizeRes() = single_value.field_changeSizeRes->valueof();
+break;
+case VT2ECU::ALT_changeBackgroundColourRes:
+ret_val.changeBackgroundColourRes() = single_value.field_changeBackgroundColourRes->valueof();
+break;
+case VT2ECU::ALT_changeNumericValueRes:
+ret_val.changeNumericValueRes() = single_value.field_changeNumericValueRes->valueof();
+break;
+case VT2ECU::ALT_changeEndPointRes:
+ret_val.changeEndPointRes() = single_value.field_changeEndPointRes->valueof();
+break;
+case VT2ECU::ALT_changeFontAttributesRes:
+ret_val.changeFontAttributesRes() = single_value.field_changeFontAttributesRes->valueof();
+break;
+case VT2ECU::ALT_changeLineAttributesRes:
+ret_val.changeLineAttributesRes() = single_value.field_changeLineAttributesRes->valueof();
+break;
+case VT2ECU::ALT_changeFillAttributesRes:
+ret_val.changeFillAttributesRes() = single_value.field_changeFillAttributesRes->valueof();
+break;
+case VT2ECU::ALT_changeActiveMaskRes:
+ret_val.changeActiveMaskRes() = single_value.field_changeActiveMaskRes->valueof();
+break;
+case VT2ECU::ALT_changeSoftKeyMaskRes:
+ret_val.changeSoftKeyMaskRes() = single_value.field_changeSoftKeyMaskRes->valueof();
+break;
+case VT2ECU::ALT_changeAttributeRes:
+ret_val.changeAttributeRes() = single_value.field_changeAttributeRes->valueof();
+break;
+case VT2ECU::ALT_changePriorityRes:
+ret_val.changePriorityRes() = single_value.field_changePriorityRes->valueof();
+break;
+case VT2ECU::ALT_changeListItemRes:
+ret_val.changeListItemRes() = single_value.field_changeListItemRes->valueof();
+break;
+case VT2ECU::ALT_deleteObjectPoolRes:
+ret_val.deleteObjectPoolRes() = single_value.field_deleteObjectPoolRes->valueof();
+break;
+case VT2ECU::ALT_changeStringValueRes:
+ret_val.changeStringValueRes() = single_value.field_changeStringValueRes->valueof();
+break;
+case VT2ECU::ALT_changeChildPositionRes:
+ret_val.changeChildPositionRes() = single_value.field_changeChildPositionRes->valueof();
+break;
+case VT2ECU::ALT_changeObjectLabelRes:
+ret_val.changeObjectLabelRes() = single_value.field_changeObjectLabelRes->valueof();
+break;
+case VT2ECU::ALT_changePolygonPointRes:
+ret_val.changePolygonPointRes() = single_value.field_changePolygonPointRes->valueof();
+break;
+case VT2ECU::ALT_changePolygonScaleRes:
+ret_val.changePolygonScaleRes() = single_value.field_changePolygonScaleRes->valueof();
+break;
+case VT2ECU::ALT_graphicsContextRes:
+ret_val.graphicsContextRes() = single_value.field_graphicsContextRes->valueof();
+break;
+case VT2ECU::ALT_getAttributeValueRes:
+ret_val.getAttributeValueRes() = single_value.field_getAttributeValueRes->valueof();
+break;
+case VT2ECU::ALT_selectColourMapRes:
+ret_val.selectColourMapRes() = single_value.field_selectColourMapRes->valueof();
+break;
+case VT2ECU::ALT_identifyVTRes:
+ret_val.identifyVTRes() = single_value.field_identifyVTRes->valueof();
+break;
+case VT2ECU::ALT_executeExtendedMacroRes:
+ret_val.executeExtendedMacroRes() = single_value.field_executeExtendedMacroRes->valueof();
+break;
+case VT2ECU::ALT_lockUnlockMaskRes:
+ret_val.lockUnlockMaskRes() = single_value.field_lockUnlockMaskRes->valueof();
+break;
+case VT2ECU::ALT_executeMacroRes:
+ret_val.executeMacroRes() = single_value.field_executeMacroRes->valueof();
+break;
+case VT2ECU::ALT_getMemoryRes:
+ret_val.getMemoryRes() = single_value.field_getMemoryRes->valueof();
+break;
+case VT2ECU::ALT_getNumberOfSoftKeysRes:
+ret_val.getNumberOfSoftKeysRes() = single_value.field_getNumberOfSoftKeysRes->valueof();
+break;
+case VT2ECU::ALT_getTextFontDataRes:
+ret_val.getTextFontDataRes() = single_value.field_getTextFontDataRes->valueof();
+break;
+case VT2ECU::ALT_getHardwareRes:
+ret_val.getHardwareRes() = single_value.field_getHardwareRes->valueof();
+break;
+case VT2ECU::ALT_getSupportedWidecharsRes:
+ret_val.getSupportedWidecharsRes() = single_value.field_getSupportedWidecharsRes->valueof();
+break;
+case VT2ECU::ALT_getWindowMaskDataRes:
+ret_val.getWindowMaskDataRes() = single_value.field_getWindowMaskDataRes->valueof();
+break;
+case VT2ECU::ALT_getSupportedObjectsRes:
+ret_val.getSupportedObjectsRes() = single_value.field_getSupportedObjectsRes->valueof();
+break;
+case VT2ECU::ALT_storeVersionRes:
+ret_val.storeVersionRes() = single_value.field_storeVersionRes->valueof();
+break;
+case VT2ECU::ALT_loadVersionRes:
+ret_val.loadVersionRes() = single_value.field_loadVersionRes->valueof();
+break;
+case VT2ECU::ALT_deleteVersionRes:
+ret_val.deleteVersionRes() = single_value.field_deleteVersionRes->valueof();
+break;
+case VT2ECU::ALT_extendedGetVersionsRes:
+ret_val.extendedGetVersionsRes() = single_value.field_extendedGetVersionsRes->valueof();
+break;
+case VT2ECU::ALT_extendedStoreVersionRes:
+ret_val.extendedStoreVersionRes() = single_value.field_extendedStoreVersionRes->valueof();
+break;
+case VT2ECU::ALT_extendedLoadVersionRes:
+ret_val.extendedLoadVersionRes() = single_value.field_extendedLoadVersionRes->valueof();
+break;
+case VT2ECU::ALT_extendedDeleteVersionRes:
+ret_val.extendedDeleteVersionRes() = single_value.field_extendedDeleteVersionRes->valueof();
+break;
+case VT2ECU::ALT_getVersionsRes:
+ret_val.getVersionsRes() = single_value.field_getVersionsRes->valueof();
+break;
+case VT2ECU::ALT_vtUnsupportedVTFunctionInd:
+ret_val.vtUnsupportedVTFunctionInd() = single_value.field_vtUnsupportedVTFunctionInd->valueof();
+break;
+case VT2ECU::ALT_vtStatusReq:
+ret_val.vtStatusReq() = single_value.field_vtStatusReq->valueof();
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @IsobusVTMessageTypes.VT2ECU.");
+}
+return ret_val;
+}
+
+VT2ECU_template& VT2ECU_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @IsobusVTMessageTypes.VT2ECU.");
+return value_list.list_value[list_index];
+}
+void VT2ECU_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error ("Internal error: Setting an invalid list for a template of union type @IsobusVTMessageTypes.VT2ECU.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new VT2ECU_template[list_length];
+}
+
+SoftKeyActivationReq_template& VT2ECU_template::softKeyActivationReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_softKeyActivationReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_softKeyActivationReq = new SoftKeyActivationReq_template(ANY_VALUE);
+else single_value.field_softKeyActivationReq = new SoftKeyActivationReq_template;
+single_value.union_selection = VT2ECU::ALT_softKeyActivationReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_softKeyActivationReq;
+}
+
+const SoftKeyActivationReq_template& VT2ECU_template::softKeyActivationReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field softKeyActivationReq in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_softKeyActivationReq) TTCN_error("Accessing non-selected field softKeyActivationReq in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_softKeyActivationReq;
+}
+
+ButtonActivationReq_template& VT2ECU_template::buttonActivationReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_buttonActivationReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_buttonActivationReq = new ButtonActivationReq_template(ANY_VALUE);
+else single_value.field_buttonActivationReq = new ButtonActivationReq_template;
+single_value.union_selection = VT2ECU::ALT_buttonActivationReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_buttonActivationReq;
+}
+
+const ButtonActivationReq_template& VT2ECU_template::buttonActivationReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field buttonActivationReq in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_buttonActivationReq) TTCN_error("Accessing non-selected field buttonActivationReq in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_buttonActivationReq;
+}
+
+PointingEventReq_template& VT2ECU_template::pointingEventReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_pointingEventReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_pointingEventReq = new PointingEventReq_template(ANY_VALUE);
+else single_value.field_pointingEventReq = new PointingEventReq_template;
+single_value.union_selection = VT2ECU::ALT_pointingEventReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_pointingEventReq;
+}
+
+const PointingEventReq_template& VT2ECU_template::pointingEventReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field pointingEventReq in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_pointingEventReq) TTCN_error("Accessing non-selected field pointingEventReq in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_pointingEventReq;
+}
+
+VTSelectInputObjectReq_template& VT2ECU_template::vtSelectInputObjectReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_vtSelectInputObjectReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_vtSelectInputObjectReq = new VTSelectInputObjectReq_template(ANY_VALUE);
+else single_value.field_vtSelectInputObjectReq = new VTSelectInputObjectReq_template;
+single_value.union_selection = VT2ECU::ALT_vtSelectInputObjectReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_vtSelectInputObjectReq;
+}
+
+const VTSelectInputObjectReq_template& VT2ECU_template::vtSelectInputObjectReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field vtSelectInputObjectReq in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_vtSelectInputObjectReq) TTCN_error("Accessing non-selected field vtSelectInputObjectReq in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_vtSelectInputObjectReq;
+}
+
+VTESCReq_template& VT2ECU_template::vtESCReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_vtESCReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_vtESCReq = new VTESCReq_template(ANY_VALUE);
+else single_value.field_vtESCReq = new VTESCReq_template;
+single_value.union_selection = VT2ECU::ALT_vtESCReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_vtESCReq;
+}
+
+const VTESCReq_template& VT2ECU_template::vtESCReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field vtESCReq in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_vtESCReq) TTCN_error("Accessing non-selected field vtESCReq in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_vtESCReq;
+}
+
+VTChangeNumericValueReq_template& VT2ECU_template::vtChangeNumericValueReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_vtChangeNumericValueReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_vtChangeNumericValueReq = new VTChangeNumericValueReq_template(ANY_VALUE);
+else single_value.field_vtChangeNumericValueReq = new VTChangeNumericValueReq_template;
+single_value.union_selection = VT2ECU::ALT_vtChangeNumericValueReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_vtChangeNumericValueReq;
+}
+
+const VTChangeNumericValueReq_template& VT2ECU_template::vtChangeNumericValueReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field vtChangeNumericValueReq in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_vtChangeNumericValueReq) TTCN_error("Accessing non-selected field vtChangeNumericValueReq in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_vtChangeNumericValueReq;
+}
+
+VTChangeActiveMaskReq_template& VT2ECU_template::vtChangeActiveMaskReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_vtChangeActiveMaskReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_vtChangeActiveMaskReq = new VTChangeActiveMaskReq_template(ANY_VALUE);
+else single_value.field_vtChangeActiveMaskReq = new VTChangeActiveMaskReq_template;
+single_value.union_selection = VT2ECU::ALT_vtChangeActiveMaskReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_vtChangeActiveMaskReq;
+}
+
+const VTChangeActiveMaskReq_template& VT2ECU_template::vtChangeActiveMaskReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field vtChangeActiveMaskReq in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_vtChangeActiveMaskReq) TTCN_error("Accessing non-selected field vtChangeActiveMaskReq in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_vtChangeActiveMaskReq;
+}
+
+VTChangeSoftKeyMaskReq_template& VT2ECU_template::vtChangeSoftKeyMaskReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_vtChangeSoftKeyMaskReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_vtChangeSoftKeyMaskReq = new VTChangeSoftKeyMaskReq_template(ANY_VALUE);
+else single_value.field_vtChangeSoftKeyMaskReq = new VTChangeSoftKeyMaskReq_template;
+single_value.union_selection = VT2ECU::ALT_vtChangeSoftKeyMaskReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_vtChangeSoftKeyMaskReq;
+}
+
+const VTChangeSoftKeyMaskReq_template& VT2ECU_template::vtChangeSoftKeyMaskReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field vtChangeSoftKeyMaskReq in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_vtChangeSoftKeyMaskReq) TTCN_error("Accessing non-selected field vtChangeSoftKeyMaskReq in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_vtChangeSoftKeyMaskReq;
+}
+
+VTChangeStringValueReq_template& VT2ECU_template::vtChangeStringValueReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_vtChangeStringValueReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_vtChangeStringValueReq = new VTChangeStringValueReq_template(ANY_VALUE);
+else single_value.field_vtChangeStringValueReq = new VTChangeStringValueReq_template;
+single_value.union_selection = VT2ECU::ALT_vtChangeStringValueReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_vtChangeStringValueReq;
+}
+
+const VTChangeStringValueReq_template& VT2ECU_template::vtChangeStringValueReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field vtChangeStringValueReq in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_vtChangeStringValueReq) TTCN_error("Accessing non-selected field vtChangeStringValueReq in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_vtChangeStringValueReq;
+}
+
+VTOnUserLayoutHideShowReq_template& VT2ECU_template::vtOnUserLayoutHideShowReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_vtOnUserLayoutHideShowReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_vtOnUserLayoutHideShowReq = new VTOnUserLayoutHideShowReq_template(ANY_VALUE);
+else single_value.field_vtOnUserLayoutHideShowReq = new VTOnUserLayoutHideShowReq_template;
+single_value.union_selection = VT2ECU::ALT_vtOnUserLayoutHideShowReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_vtOnUserLayoutHideShowReq;
+}
+
+const VTOnUserLayoutHideShowReq_template& VT2ECU_template::vtOnUserLayoutHideShowReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field vtOnUserLayoutHideShowReq in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_vtOnUserLayoutHideShowReq) TTCN_error("Accessing non-selected field vtOnUserLayoutHideShowReq in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_vtOnUserLayoutHideShowReq;
+}
+
+VTControlAudioSignalTerminationInd_template& VT2ECU_template::vtControlAudioSignalTerminationInd()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_vtControlAudioSignalTerminationInd) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_vtControlAudioSignalTerminationInd = new VTControlAudioSignalTerminationInd_template(ANY_VALUE);
+else single_value.field_vtControlAudioSignalTerminationInd = new VTControlAudioSignalTerminationInd_template;
+single_value.union_selection = VT2ECU::ALT_vtControlAudioSignalTerminationInd;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_vtControlAudioSignalTerminationInd;
+}
+
+const VTControlAudioSignalTerminationInd_template& VT2ECU_template::vtControlAudioSignalTerminationInd() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field vtControlAudioSignalTerminationInd in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_vtControlAudioSignalTerminationInd) TTCN_error("Accessing non-selected field vtControlAudioSignalTerminationInd in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_vtControlAudioSignalTerminationInd;
+}
+
+EndOfObjectPoolRes_template& VT2ECU_template::endOfObjectPoolRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_endOfObjectPoolRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_endOfObjectPoolRes = new EndOfObjectPoolRes_template(ANY_VALUE);
+else single_value.field_endOfObjectPoolRes = new EndOfObjectPoolRes_template;
+single_value.union_selection = VT2ECU::ALT_endOfObjectPoolRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_endOfObjectPoolRes;
+}
+
+const EndOfObjectPoolRes_template& VT2ECU_template::endOfObjectPoolRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field endOfObjectPoolRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_endOfObjectPoolRes) TTCN_error("Accessing non-selected field endOfObjectPoolRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_endOfObjectPoolRes;
+}
+
+VTfunction32VT2ECU_template& VT2ECU_template::vtfunction32VT2ECU()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_vtfunction32VT2ECU) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_vtfunction32VT2ECU = new VTfunction32VT2ECU_template(ANY_VALUE);
+else single_value.field_vtfunction32VT2ECU = new VTfunction32VT2ECU_template;
+single_value.union_selection = VT2ECU::ALT_vtfunction32VT2ECU;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_vtfunction32VT2ECU;
+}
+
+const VTfunction32VT2ECU_template& VT2ECU_template::vtfunction32VT2ECU() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field vtfunction32VT2ECU in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_vtfunction32VT2ECU) TTCN_error("Accessing non-selected field vtfunction32VT2ECU in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_vtfunction32VT2ECU;
+}
+
+VTfunction34VT2ECU_template& VT2ECU_template::vtfunction34VT2ECU()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_vtfunction34VT2ECU) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_vtfunction34VT2ECU = new VTfunction34VT2ECU_template(ANY_VALUE);
+else single_value.field_vtfunction34VT2ECU = new VTfunction34VT2ECU_template;
+single_value.union_selection = VT2ECU::ALT_vtfunction34VT2ECU;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_vtfunction34VT2ECU;
+}
+
+const VTfunction34VT2ECU_template& VT2ECU_template::vtfunction34VT2ECU() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field vtfunction34VT2ECU in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_vtfunction34VT2ECU) TTCN_error("Accessing non-selected field vtfunction34VT2ECU in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_vtfunction34VT2ECU;
+}
+
+VTfunction36VT2ECU_template& VT2ECU_template::vtfunction36VT2ECU()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_vtfunction36VT2ECU) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_vtfunction36VT2ECU = new VTfunction36VT2ECU_template(ANY_VALUE);
+else single_value.field_vtfunction36VT2ECU = new VTfunction36VT2ECU_template;
+single_value.union_selection = VT2ECU::ALT_vtfunction36VT2ECU;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_vtfunction36VT2ECU;
+}
+
+const VTfunction36VT2ECU_template& VT2ECU_template::vtfunction36VT2ECU() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field vtfunction36VT2ECU in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_vtfunction36VT2ECU) TTCN_error("Accessing non-selected field vtfunction36VT2ECU in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_vtfunction36VT2ECU;
+}
+
+VTfunction37VT2ECU_template& VT2ECU_template::vtfunction37VT2ECU()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_vtfunction37VT2ECU) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_vtfunction37VT2ECU = new VTfunction37VT2ECU_template(ANY_VALUE);
+else single_value.field_vtfunction37VT2ECU = new VTfunction37VT2ECU_template;
+single_value.union_selection = VT2ECU::ALT_vtfunction37VT2ECU;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_vtfunction37VT2ECU;
+}
+
+const VTfunction37VT2ECU_template& VT2ECU_template::vtfunction37VT2ECU() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field vtfunction37VT2ECU in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_vtfunction37VT2ECU) TTCN_error("Accessing non-selected field vtfunction37VT2ECU in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_vtfunction37VT2ECU;
+}
+
+VTfunction39VT2ECU_template& VT2ECU_template::vtfunction39VT2ECU()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_vtfunction39VT2ECU) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_vtfunction39VT2ECU = new VTfunction39VT2ECU_template(ANY_VALUE);
+else single_value.field_vtfunction39VT2ECU = new VTfunction39VT2ECU_template;
+single_value.union_selection = VT2ECU::ALT_vtfunction39VT2ECU;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_vtfunction39VT2ECU;
+}
+
+const VTfunction39VT2ECU_template& VT2ECU_template::vtfunction39VT2ECU() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field vtfunction39VT2ECU in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_vtfunction39VT2ECU) TTCN_error("Accessing non-selected field vtfunction39VT2ECU in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_vtfunction39VT2ECU;
+}
+
+ESCres_template& VT2ECU_template::escRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_escRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_escRes = new ESCres_template(ANY_VALUE);
+else single_value.field_escRes = new ESCres_template;
+single_value.union_selection = VT2ECU::ALT_escRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_escRes;
+}
+
+const ESCres_template& VT2ECU_template::escRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field escRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_escRes) TTCN_error("Accessing non-selected field escRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_escRes;
+}
+
+HideShowObjectRes_template& VT2ECU_template::hideShowObjectRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_hideShowObjectRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_hideShowObjectRes = new HideShowObjectRes_template(ANY_VALUE);
+else single_value.field_hideShowObjectRes = new HideShowObjectRes_template;
+single_value.union_selection = VT2ECU::ALT_hideShowObjectRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_hideShowObjectRes;
+}
+
+const HideShowObjectRes_template& VT2ECU_template::hideShowObjectRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field hideShowObjectRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_hideShowObjectRes) TTCN_error("Accessing non-selected field hideShowObjectRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_hideShowObjectRes;
+}
+
+EnableDisableObjectRes_template& VT2ECU_template::enableDisableObjectRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_enableDisableObjectRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_enableDisableObjectRes = new EnableDisableObjectRes_template(ANY_VALUE);
+else single_value.field_enableDisableObjectRes = new EnableDisableObjectRes_template;
+single_value.union_selection = VT2ECU::ALT_enableDisableObjectRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_enableDisableObjectRes;
+}
+
+const EnableDisableObjectRes_template& VT2ECU_template::enableDisableObjectRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field enableDisableObjectRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_enableDisableObjectRes) TTCN_error("Accessing non-selected field enableDisableObjectRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_enableDisableObjectRes;
+}
+
+SelectInputObjectRes_template& VT2ECU_template::selectInputObjectRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_selectInputObjectRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_selectInputObjectRes = new SelectInputObjectRes_template(ANY_VALUE);
+else single_value.field_selectInputObjectRes = new SelectInputObjectRes_template;
+single_value.union_selection = VT2ECU::ALT_selectInputObjectRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_selectInputObjectRes;
+}
+
+const SelectInputObjectRes_template& VT2ECU_template::selectInputObjectRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field selectInputObjectRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_selectInputObjectRes) TTCN_error("Accessing non-selected field selectInputObjectRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_selectInputObjectRes;
+}
+
+ControlAudioSignalRes_template& VT2ECU_template::controlAudioSignalRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_controlAudioSignalRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_controlAudioSignalRes = new ControlAudioSignalRes_template(ANY_VALUE);
+else single_value.field_controlAudioSignalRes = new ControlAudioSignalRes_template;
+single_value.union_selection = VT2ECU::ALT_controlAudioSignalRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_controlAudioSignalRes;
+}
+
+const ControlAudioSignalRes_template& VT2ECU_template::controlAudioSignalRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field controlAudioSignalRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_controlAudioSignalRes) TTCN_error("Accessing non-selected field controlAudioSignalRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_controlAudioSignalRes;
+}
+
+SetAudioVolumeRes_template& VT2ECU_template::setAudioVolumeRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_setAudioVolumeRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_setAudioVolumeRes = new SetAudioVolumeRes_template(ANY_VALUE);
+else single_value.field_setAudioVolumeRes = new SetAudioVolumeRes_template;
+single_value.union_selection = VT2ECU::ALT_setAudioVolumeRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_setAudioVolumeRes;
+}
+
+const SetAudioVolumeRes_template& VT2ECU_template::setAudioVolumeRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field setAudioVolumeRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_setAudioVolumeRes) TTCN_error("Accessing non-selected field setAudioVolumeRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_setAudioVolumeRes;
+}
+
+ChangeChildLocationRes_template& VT2ECU_template::changeChildLocationRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_changeChildLocationRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_changeChildLocationRes = new ChangeChildLocationRes_template(ANY_VALUE);
+else single_value.field_changeChildLocationRes = new ChangeChildLocationRes_template;
+single_value.union_selection = VT2ECU::ALT_changeChildLocationRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_changeChildLocationRes;
+}
+
+const ChangeChildLocationRes_template& VT2ECU_template::changeChildLocationRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field changeChildLocationRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_changeChildLocationRes) TTCN_error("Accessing non-selected field changeChildLocationRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_changeChildLocationRes;
+}
+
+ChangeSizeRes_template& VT2ECU_template::changeSizeRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_changeSizeRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_changeSizeRes = new ChangeSizeRes_template(ANY_VALUE);
+else single_value.field_changeSizeRes = new ChangeSizeRes_template;
+single_value.union_selection = VT2ECU::ALT_changeSizeRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_changeSizeRes;
+}
+
+const ChangeSizeRes_template& VT2ECU_template::changeSizeRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field changeSizeRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_changeSizeRes) TTCN_error("Accessing non-selected field changeSizeRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_changeSizeRes;
+}
+
+ChangeBackgroundColourRes_template& VT2ECU_template::changeBackgroundColourRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_changeBackgroundColourRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_changeBackgroundColourRes = new ChangeBackgroundColourRes_template(ANY_VALUE);
+else single_value.field_changeBackgroundColourRes = new ChangeBackgroundColourRes_template;
+single_value.union_selection = VT2ECU::ALT_changeBackgroundColourRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_changeBackgroundColourRes;
+}
+
+const ChangeBackgroundColourRes_template& VT2ECU_template::changeBackgroundColourRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field changeBackgroundColourRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_changeBackgroundColourRes) TTCN_error("Accessing non-selected field changeBackgroundColourRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_changeBackgroundColourRes;
+}
+
+ChangeNumericValueRes_template& VT2ECU_template::changeNumericValueRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_changeNumericValueRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_changeNumericValueRes = new ChangeNumericValueRes_template(ANY_VALUE);
+else single_value.field_changeNumericValueRes = new ChangeNumericValueRes_template;
+single_value.union_selection = VT2ECU::ALT_changeNumericValueRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_changeNumericValueRes;
+}
+
+const ChangeNumericValueRes_template& VT2ECU_template::changeNumericValueRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field changeNumericValueRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_changeNumericValueRes) TTCN_error("Accessing non-selected field changeNumericValueRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_changeNumericValueRes;
+}
+
+ChangeEndPointRes_template& VT2ECU_template::changeEndPointRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_changeEndPointRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_changeEndPointRes = new ChangeEndPointRes_template(ANY_VALUE);
+else single_value.field_changeEndPointRes = new ChangeEndPointRes_template;
+single_value.union_selection = VT2ECU::ALT_changeEndPointRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_changeEndPointRes;
+}
+
+const ChangeEndPointRes_template& VT2ECU_template::changeEndPointRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field changeEndPointRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_changeEndPointRes) TTCN_error("Accessing non-selected field changeEndPointRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_changeEndPointRes;
+}
+
+ChangeFontAttributesRes_template& VT2ECU_template::changeFontAttributesRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_changeFontAttributesRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_changeFontAttributesRes = new ChangeFontAttributesRes_template(ANY_VALUE);
+else single_value.field_changeFontAttributesRes = new ChangeFontAttributesRes_template;
+single_value.union_selection = VT2ECU::ALT_changeFontAttributesRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_changeFontAttributesRes;
+}
+
+const ChangeFontAttributesRes_template& VT2ECU_template::changeFontAttributesRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field changeFontAttributesRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_changeFontAttributesRes) TTCN_error("Accessing non-selected field changeFontAttributesRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_changeFontAttributesRes;
+}
+
+ChangeLineAttributesRes_template& VT2ECU_template::changeLineAttributesRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_changeLineAttributesRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_changeLineAttributesRes = new ChangeLineAttributesRes_template(ANY_VALUE);
+else single_value.field_changeLineAttributesRes = new ChangeLineAttributesRes_template;
+single_value.union_selection = VT2ECU::ALT_changeLineAttributesRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_changeLineAttributesRes;
+}
+
+const ChangeLineAttributesRes_template& VT2ECU_template::changeLineAttributesRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field changeLineAttributesRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_changeLineAttributesRes) TTCN_error("Accessing non-selected field changeLineAttributesRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_changeLineAttributesRes;
+}
+
+ChangeFillAttributesRes_template& VT2ECU_template::changeFillAttributesRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_changeFillAttributesRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_changeFillAttributesRes = new ChangeFillAttributesRes_template(ANY_VALUE);
+else single_value.field_changeFillAttributesRes = new ChangeFillAttributesRes_template;
+single_value.union_selection = VT2ECU::ALT_changeFillAttributesRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_changeFillAttributesRes;
+}
+
+const ChangeFillAttributesRes_template& VT2ECU_template::changeFillAttributesRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field changeFillAttributesRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_changeFillAttributesRes) TTCN_error("Accessing non-selected field changeFillAttributesRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_changeFillAttributesRes;
+}
+
+ChangeActiveMaskRes_template& VT2ECU_template::changeActiveMaskRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_changeActiveMaskRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_changeActiveMaskRes = new ChangeActiveMaskRes_template(ANY_VALUE);
+else single_value.field_changeActiveMaskRes = new ChangeActiveMaskRes_template;
+single_value.union_selection = VT2ECU::ALT_changeActiveMaskRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_changeActiveMaskRes;
+}
+
+const ChangeActiveMaskRes_template& VT2ECU_template::changeActiveMaskRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field changeActiveMaskRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_changeActiveMaskRes) TTCN_error("Accessing non-selected field changeActiveMaskRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_changeActiveMaskRes;
+}
+
+ChangeSoftKeyMaskRes_template& VT2ECU_template::changeSoftKeyMaskRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_changeSoftKeyMaskRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_changeSoftKeyMaskRes = new ChangeSoftKeyMaskRes_template(ANY_VALUE);
+else single_value.field_changeSoftKeyMaskRes = new ChangeSoftKeyMaskRes_template;
+single_value.union_selection = VT2ECU::ALT_changeSoftKeyMaskRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_changeSoftKeyMaskRes;
+}
+
+const ChangeSoftKeyMaskRes_template& VT2ECU_template::changeSoftKeyMaskRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field changeSoftKeyMaskRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_changeSoftKeyMaskRes) TTCN_error("Accessing non-selected field changeSoftKeyMaskRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_changeSoftKeyMaskRes;
+}
+
+ChangeAttributeRes_template& VT2ECU_template::changeAttributeRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_changeAttributeRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_changeAttributeRes = new ChangeAttributeRes_template(ANY_VALUE);
+else single_value.field_changeAttributeRes = new ChangeAttributeRes_template;
+single_value.union_selection = VT2ECU::ALT_changeAttributeRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_changeAttributeRes;
+}
+
+const ChangeAttributeRes_template& VT2ECU_template::changeAttributeRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field changeAttributeRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_changeAttributeRes) TTCN_error("Accessing non-selected field changeAttributeRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_changeAttributeRes;
+}
+
+ChangePriorityRes_template& VT2ECU_template::changePriorityRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_changePriorityRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_changePriorityRes = new ChangePriorityRes_template(ANY_VALUE);
+else single_value.field_changePriorityRes = new ChangePriorityRes_template;
+single_value.union_selection = VT2ECU::ALT_changePriorityRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_changePriorityRes;
+}
+
+const ChangePriorityRes_template& VT2ECU_template::changePriorityRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field changePriorityRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_changePriorityRes) TTCN_error("Accessing non-selected field changePriorityRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_changePriorityRes;
+}
+
+ChangeListItemRes_template& VT2ECU_template::changeListItemRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_changeListItemRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_changeListItemRes = new ChangeListItemRes_template(ANY_VALUE);
+else single_value.field_changeListItemRes = new ChangeListItemRes_template;
+single_value.union_selection = VT2ECU::ALT_changeListItemRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_changeListItemRes;
+}
+
+const ChangeListItemRes_template& VT2ECU_template::changeListItemRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field changeListItemRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_changeListItemRes) TTCN_error("Accessing non-selected field changeListItemRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_changeListItemRes;
+}
+
+DeleteObjectPoolRes_template& VT2ECU_template::deleteObjectPoolRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_deleteObjectPoolRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_deleteObjectPoolRes = new DeleteObjectPoolRes_template(ANY_VALUE);
+else single_value.field_deleteObjectPoolRes = new DeleteObjectPoolRes_template;
+single_value.union_selection = VT2ECU::ALT_deleteObjectPoolRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_deleteObjectPoolRes;
+}
+
+const DeleteObjectPoolRes_template& VT2ECU_template::deleteObjectPoolRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field deleteObjectPoolRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_deleteObjectPoolRes) TTCN_error("Accessing non-selected field deleteObjectPoolRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_deleteObjectPoolRes;
+}
+
+ChangeStringValueRes_template& VT2ECU_template::changeStringValueRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_changeStringValueRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_changeStringValueRes = new ChangeStringValueRes_template(ANY_VALUE);
+else single_value.field_changeStringValueRes = new ChangeStringValueRes_template;
+single_value.union_selection = VT2ECU::ALT_changeStringValueRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_changeStringValueRes;
+}
+
+const ChangeStringValueRes_template& VT2ECU_template::changeStringValueRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field changeStringValueRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_changeStringValueRes) TTCN_error("Accessing non-selected field changeStringValueRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_changeStringValueRes;
+}
+
+ChangeChildPositionRes_template& VT2ECU_template::changeChildPositionRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_changeChildPositionRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_changeChildPositionRes = new ChangeChildPositionRes_template(ANY_VALUE);
+else single_value.field_changeChildPositionRes = new ChangeChildPositionRes_template;
+single_value.union_selection = VT2ECU::ALT_changeChildPositionRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_changeChildPositionRes;
+}
+
+const ChangeChildPositionRes_template& VT2ECU_template::changeChildPositionRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field changeChildPositionRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_changeChildPositionRes) TTCN_error("Accessing non-selected field changeChildPositionRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_changeChildPositionRes;
+}
+
+ChangeObjectLabelRes_template& VT2ECU_template::changeObjectLabelRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_changeObjectLabelRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_changeObjectLabelRes = new ChangeObjectLabelRes_template(ANY_VALUE);
+else single_value.field_changeObjectLabelRes = new ChangeObjectLabelRes_template;
+single_value.union_selection = VT2ECU::ALT_changeObjectLabelRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_changeObjectLabelRes;
+}
+
+const ChangeObjectLabelRes_template& VT2ECU_template::changeObjectLabelRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field changeObjectLabelRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_changeObjectLabelRes) TTCN_error("Accessing non-selected field changeObjectLabelRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_changeObjectLabelRes;
+}
+
+ChangePolygonPointRes_template& VT2ECU_template::changePolygonPointRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_changePolygonPointRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_changePolygonPointRes = new ChangePolygonPointRes_template(ANY_VALUE);
+else single_value.field_changePolygonPointRes = new ChangePolygonPointRes_template;
+single_value.union_selection = VT2ECU::ALT_changePolygonPointRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_changePolygonPointRes;
+}
+
+const ChangePolygonPointRes_template& VT2ECU_template::changePolygonPointRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field changePolygonPointRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_changePolygonPointRes) TTCN_error("Accessing non-selected field changePolygonPointRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_changePolygonPointRes;
+}
+
+ChangePolygonScaleRes_template& VT2ECU_template::changePolygonScaleRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_changePolygonScaleRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_changePolygonScaleRes = new ChangePolygonScaleRes_template(ANY_VALUE);
+else single_value.field_changePolygonScaleRes = new ChangePolygonScaleRes_template;
+single_value.union_selection = VT2ECU::ALT_changePolygonScaleRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_changePolygonScaleRes;
+}
+
+const ChangePolygonScaleRes_template& VT2ECU_template::changePolygonScaleRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field changePolygonScaleRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_changePolygonScaleRes) TTCN_error("Accessing non-selected field changePolygonScaleRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_changePolygonScaleRes;
+}
+
+GraphicsContextRes_template& VT2ECU_template::graphicsContextRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_graphicsContextRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_graphicsContextRes = new GraphicsContextRes_template(ANY_VALUE);
+else single_value.field_graphicsContextRes = new GraphicsContextRes_template;
+single_value.union_selection = VT2ECU::ALT_graphicsContextRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_graphicsContextRes;
+}
+
+const GraphicsContextRes_template& VT2ECU_template::graphicsContextRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field graphicsContextRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_graphicsContextRes) TTCN_error("Accessing non-selected field graphicsContextRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_graphicsContextRes;
+}
+
+GetAttributeValueRes_template& VT2ECU_template::getAttributeValueRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_getAttributeValueRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_getAttributeValueRes = new GetAttributeValueRes_template(ANY_VALUE);
+else single_value.field_getAttributeValueRes = new GetAttributeValueRes_template;
+single_value.union_selection = VT2ECU::ALT_getAttributeValueRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_getAttributeValueRes;
+}
+
+const GetAttributeValueRes_template& VT2ECU_template::getAttributeValueRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field getAttributeValueRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_getAttributeValueRes) TTCN_error("Accessing non-selected field getAttributeValueRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_getAttributeValueRes;
+}
+
+SelectColourMapRes_template& VT2ECU_template::selectColourMapRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_selectColourMapRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_selectColourMapRes = new SelectColourMapRes_template(ANY_VALUE);
+else single_value.field_selectColourMapRes = new SelectColourMapRes_template;
+single_value.union_selection = VT2ECU::ALT_selectColourMapRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_selectColourMapRes;
+}
+
+const SelectColourMapRes_template& VT2ECU_template::selectColourMapRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field selectColourMapRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_selectColourMapRes) TTCN_error("Accessing non-selected field selectColourMapRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_selectColourMapRes;
+}
+
+IdentifyVTRes_template& VT2ECU_template::identifyVTRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_identifyVTRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_identifyVTRes = new IdentifyVTRes_template(ANY_VALUE);
+else single_value.field_identifyVTRes = new IdentifyVTRes_template;
+single_value.union_selection = VT2ECU::ALT_identifyVTRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_identifyVTRes;
+}
+
+const IdentifyVTRes_template& VT2ECU_template::identifyVTRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field identifyVTRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_identifyVTRes) TTCN_error("Accessing non-selected field identifyVTRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_identifyVTRes;
+}
+
+ExecuteExtendedMacroRes_template& VT2ECU_template::executeExtendedMacroRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_executeExtendedMacroRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_executeExtendedMacroRes = new ExecuteExtendedMacroRes_template(ANY_VALUE);
+else single_value.field_executeExtendedMacroRes = new ExecuteExtendedMacroRes_template;
+single_value.union_selection = VT2ECU::ALT_executeExtendedMacroRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_executeExtendedMacroRes;
+}
+
+const ExecuteExtendedMacroRes_template& VT2ECU_template::executeExtendedMacroRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field executeExtendedMacroRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_executeExtendedMacroRes) TTCN_error("Accessing non-selected field executeExtendedMacroRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_executeExtendedMacroRes;
+}
+
+LockUnlockMaskRes_template& VT2ECU_template::lockUnlockMaskRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_lockUnlockMaskRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_lockUnlockMaskRes = new LockUnlockMaskRes_template(ANY_VALUE);
+else single_value.field_lockUnlockMaskRes = new LockUnlockMaskRes_template;
+single_value.union_selection = VT2ECU::ALT_lockUnlockMaskRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_lockUnlockMaskRes;
+}
+
+const LockUnlockMaskRes_template& VT2ECU_template::lockUnlockMaskRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field lockUnlockMaskRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_lockUnlockMaskRes) TTCN_error("Accessing non-selected field lockUnlockMaskRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_lockUnlockMaskRes;
+}
+
+ExecuteMacroRes_template& VT2ECU_template::executeMacroRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_executeMacroRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_executeMacroRes = new ExecuteMacroRes_template(ANY_VALUE);
+else single_value.field_executeMacroRes = new ExecuteMacroRes_template;
+single_value.union_selection = VT2ECU::ALT_executeMacroRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_executeMacroRes;
+}
+
+const ExecuteMacroRes_template& VT2ECU_template::executeMacroRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field executeMacroRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_executeMacroRes) TTCN_error("Accessing non-selected field executeMacroRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_executeMacroRes;
+}
+
+GetMemoryRes_template& VT2ECU_template::getMemoryRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_getMemoryRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_getMemoryRes = new GetMemoryRes_template(ANY_VALUE);
+else single_value.field_getMemoryRes = new GetMemoryRes_template;
+single_value.union_selection = VT2ECU::ALT_getMemoryRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_getMemoryRes;
+}
+
+const GetMemoryRes_template& VT2ECU_template::getMemoryRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field getMemoryRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_getMemoryRes) TTCN_error("Accessing non-selected field getMemoryRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_getMemoryRes;
+}
+
+GetNumberOfSoftKeysRes_template& VT2ECU_template::getNumberOfSoftKeysRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_getNumberOfSoftKeysRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_getNumberOfSoftKeysRes = new GetNumberOfSoftKeysRes_template(ANY_VALUE);
+else single_value.field_getNumberOfSoftKeysRes = new GetNumberOfSoftKeysRes_template;
+single_value.union_selection = VT2ECU::ALT_getNumberOfSoftKeysRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_getNumberOfSoftKeysRes;
+}
+
+const GetNumberOfSoftKeysRes_template& VT2ECU_template::getNumberOfSoftKeysRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field getNumberOfSoftKeysRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_getNumberOfSoftKeysRes) TTCN_error("Accessing non-selected field getNumberOfSoftKeysRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_getNumberOfSoftKeysRes;
+}
+
+GetTextFontDataRes_template& VT2ECU_template::getTextFontDataRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_getTextFontDataRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_getTextFontDataRes = new GetTextFontDataRes_template(ANY_VALUE);
+else single_value.field_getTextFontDataRes = new GetTextFontDataRes_template;
+single_value.union_selection = VT2ECU::ALT_getTextFontDataRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_getTextFontDataRes;
+}
+
+const GetTextFontDataRes_template& VT2ECU_template::getTextFontDataRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field getTextFontDataRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_getTextFontDataRes) TTCN_error("Accessing non-selected field getTextFontDataRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_getTextFontDataRes;
+}
+
+GetHardwareRes_template& VT2ECU_template::getHardwareRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_getHardwareRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_getHardwareRes = new GetHardwareRes_template(ANY_VALUE);
+else single_value.field_getHardwareRes = new GetHardwareRes_template;
+single_value.union_selection = VT2ECU::ALT_getHardwareRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_getHardwareRes;
+}
+
+const GetHardwareRes_template& VT2ECU_template::getHardwareRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field getHardwareRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_getHardwareRes) TTCN_error("Accessing non-selected field getHardwareRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_getHardwareRes;
+}
+
+GetSupportedWidecharsRes_template& VT2ECU_template::getSupportedWidecharsRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_getSupportedWidecharsRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_getSupportedWidecharsRes = new GetSupportedWidecharsRes_template(ANY_VALUE);
+else single_value.field_getSupportedWidecharsRes = new GetSupportedWidecharsRes_template;
+single_value.union_selection = VT2ECU::ALT_getSupportedWidecharsRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_getSupportedWidecharsRes;
+}
+
+const GetSupportedWidecharsRes_template& VT2ECU_template::getSupportedWidecharsRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field getSupportedWidecharsRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_getSupportedWidecharsRes) TTCN_error("Accessing non-selected field getSupportedWidecharsRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_getSupportedWidecharsRes;
+}
+
+GetWindowMaskDataRes_template& VT2ECU_template::getWindowMaskDataRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_getWindowMaskDataRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_getWindowMaskDataRes = new GetWindowMaskDataRes_template(ANY_VALUE);
+else single_value.field_getWindowMaskDataRes = new GetWindowMaskDataRes_template;
+single_value.union_selection = VT2ECU::ALT_getWindowMaskDataRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_getWindowMaskDataRes;
+}
+
+const GetWindowMaskDataRes_template& VT2ECU_template::getWindowMaskDataRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field getWindowMaskDataRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_getWindowMaskDataRes) TTCN_error("Accessing non-selected field getWindowMaskDataRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_getWindowMaskDataRes;
+}
+
+GetSupportedObjectsRes_template& VT2ECU_template::getSupportedObjectsRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_getSupportedObjectsRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_getSupportedObjectsRes = new GetSupportedObjectsRes_template(ANY_VALUE);
+else single_value.field_getSupportedObjectsRes = new GetSupportedObjectsRes_template;
+single_value.union_selection = VT2ECU::ALT_getSupportedObjectsRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_getSupportedObjectsRes;
+}
+
+const GetSupportedObjectsRes_template& VT2ECU_template::getSupportedObjectsRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field getSupportedObjectsRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_getSupportedObjectsRes) TTCN_error("Accessing non-selected field getSupportedObjectsRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_getSupportedObjectsRes;
+}
+
+StoreVersionRes_template& VT2ECU_template::storeVersionRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_storeVersionRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_storeVersionRes = new StoreVersionRes_template(ANY_VALUE);
+else single_value.field_storeVersionRes = new StoreVersionRes_template;
+single_value.union_selection = VT2ECU::ALT_storeVersionRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_storeVersionRes;
+}
+
+const StoreVersionRes_template& VT2ECU_template::storeVersionRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field storeVersionRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_storeVersionRes) TTCN_error("Accessing non-selected field storeVersionRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_storeVersionRes;
+}
+
+LoadVersionRes_template& VT2ECU_template::loadVersionRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_loadVersionRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_loadVersionRes = new LoadVersionRes_template(ANY_VALUE);
+else single_value.field_loadVersionRes = new LoadVersionRes_template;
+single_value.union_selection = VT2ECU::ALT_loadVersionRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_loadVersionRes;
+}
+
+const LoadVersionRes_template& VT2ECU_template::loadVersionRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field loadVersionRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_loadVersionRes) TTCN_error("Accessing non-selected field loadVersionRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_loadVersionRes;
+}
+
+DeleteVersionRes_template& VT2ECU_template::deleteVersionRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_deleteVersionRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_deleteVersionRes = new DeleteVersionRes_template(ANY_VALUE);
+else single_value.field_deleteVersionRes = new DeleteVersionRes_template;
+single_value.union_selection = VT2ECU::ALT_deleteVersionRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_deleteVersionRes;
+}
+
+const DeleteVersionRes_template& VT2ECU_template::deleteVersionRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field deleteVersionRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_deleteVersionRes) TTCN_error("Accessing non-selected field deleteVersionRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_deleteVersionRes;
+}
+
+ExtendedGetVersionsRes_template& VT2ECU_template::extendedGetVersionsRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_extendedGetVersionsRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_extendedGetVersionsRes = new ExtendedGetVersionsRes_template(ANY_VALUE);
+else single_value.field_extendedGetVersionsRes = new ExtendedGetVersionsRes_template;
+single_value.union_selection = VT2ECU::ALT_extendedGetVersionsRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_extendedGetVersionsRes;
+}
+
+const ExtendedGetVersionsRes_template& VT2ECU_template::extendedGetVersionsRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field extendedGetVersionsRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_extendedGetVersionsRes) TTCN_error("Accessing non-selected field extendedGetVersionsRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_extendedGetVersionsRes;
+}
+
+ExtendedStoreVersionRes_template& VT2ECU_template::extendedStoreVersionRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_extendedStoreVersionRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_extendedStoreVersionRes = new ExtendedStoreVersionRes_template(ANY_VALUE);
+else single_value.field_extendedStoreVersionRes = new ExtendedStoreVersionRes_template;
+single_value.union_selection = VT2ECU::ALT_extendedStoreVersionRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_extendedStoreVersionRes;
+}
+
+const ExtendedStoreVersionRes_template& VT2ECU_template::extendedStoreVersionRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field extendedStoreVersionRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_extendedStoreVersionRes) TTCN_error("Accessing non-selected field extendedStoreVersionRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_extendedStoreVersionRes;
+}
+
+ExtendedLoadVersionRes_template& VT2ECU_template::extendedLoadVersionRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_extendedLoadVersionRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_extendedLoadVersionRes = new ExtendedLoadVersionRes_template(ANY_VALUE);
+else single_value.field_extendedLoadVersionRes = new ExtendedLoadVersionRes_template;
+single_value.union_selection = VT2ECU::ALT_extendedLoadVersionRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_extendedLoadVersionRes;
+}
+
+const ExtendedLoadVersionRes_template& VT2ECU_template::extendedLoadVersionRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field extendedLoadVersionRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_extendedLoadVersionRes) TTCN_error("Accessing non-selected field extendedLoadVersionRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_extendedLoadVersionRes;
+}
+
+ExtendedDeleteVersionRes_template& VT2ECU_template::extendedDeleteVersionRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_extendedDeleteVersionRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_extendedDeleteVersionRes = new ExtendedDeleteVersionRes_template(ANY_VALUE);
+else single_value.field_extendedDeleteVersionRes = new ExtendedDeleteVersionRes_template;
+single_value.union_selection = VT2ECU::ALT_extendedDeleteVersionRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_extendedDeleteVersionRes;
+}
+
+const ExtendedDeleteVersionRes_template& VT2ECU_template::extendedDeleteVersionRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field extendedDeleteVersionRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_extendedDeleteVersionRes) TTCN_error("Accessing non-selected field extendedDeleteVersionRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_extendedDeleteVersionRes;
+}
+
+GetVersionsRes_template& VT2ECU_template::getVersionsRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_getVersionsRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_getVersionsRes = new GetVersionsRes_template(ANY_VALUE);
+else single_value.field_getVersionsRes = new GetVersionsRes_template;
+single_value.union_selection = VT2ECU::ALT_getVersionsRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_getVersionsRes;
+}
+
+const GetVersionsRes_template& VT2ECU_template::getVersionsRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field getVersionsRes in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_getVersionsRes) TTCN_error("Accessing non-selected field getVersionsRes in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_getVersionsRes;
+}
+
+VTUnsupportedVTFunctionInd_template& VT2ECU_template::vtUnsupportedVTFunctionInd()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_vtUnsupportedVTFunctionInd) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_vtUnsupportedVTFunctionInd = new VTUnsupportedVTFunctionInd_template(ANY_VALUE);
+else single_value.field_vtUnsupportedVTFunctionInd = new VTUnsupportedVTFunctionInd_template;
+single_value.union_selection = VT2ECU::ALT_vtUnsupportedVTFunctionInd;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_vtUnsupportedVTFunctionInd;
+}
+
+const VTUnsupportedVTFunctionInd_template& VT2ECU_template::vtUnsupportedVTFunctionInd() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field vtUnsupportedVTFunctionInd in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_vtUnsupportedVTFunctionInd) TTCN_error("Accessing non-selected field vtUnsupportedVTFunctionInd in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_vtUnsupportedVTFunctionInd;
+}
+
+VTStatusReq_template& VT2ECU_template::vtStatusReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != VT2ECU::ALT_vtStatusReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_vtStatusReq = new VTStatusReq_template(ANY_VALUE);
+else single_value.field_vtStatusReq = new VTStatusReq_template;
+single_value.union_selection = VT2ECU::ALT_vtStatusReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_vtStatusReq;
+}
+
+const VTStatusReq_template& VT2ECU_template::vtStatusReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field vtStatusReq in a non-specific template of union type @IsobusVTMessageTypes.VT2ECU.");
+if (single_value.union_selection != VT2ECU::ALT_vtStatusReq) TTCN_error("Accessing non-selected field vtStatusReq in a template of union type @IsobusVTMessageTypes.VT2ECU.");
+return *single_value.field_vtStatusReq;
+}
+
+boolean VT2ECU_template::ischosen(VT2ECU::union_selection_type checked_selection) const
+{
+if (checked_selection == VT2ECU::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @IsobusVTMessageTypes.VT2ECU.");
+switch (template_selection) {
+case SPECIFIC_VALUE:
+if (single_value.union_selection == VT2ECU::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @IsobusVTMessageTypes.VT2ECU.");
+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 @IsobusVTMessageTypes.VT2ECU 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 VT2ECU_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case VT2ECU::ALT_softKeyActivationReq:
+TTCN_Logger::log_event_str("{ softKeyActivationReq := ");
+single_value.field_softKeyActivationReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_buttonActivationReq:
+TTCN_Logger::log_event_str("{ buttonActivationReq := ");
+single_value.field_buttonActivationReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_pointingEventReq:
+TTCN_Logger::log_event_str("{ pointingEventReq := ");
+single_value.field_pointingEventReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_vtSelectInputObjectReq:
+TTCN_Logger::log_event_str("{ vtSelectInputObjectReq := ");
+single_value.field_vtSelectInputObjectReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_vtESCReq:
+TTCN_Logger::log_event_str("{ vtESCReq := ");
+single_value.field_vtESCReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_vtChangeNumericValueReq:
+TTCN_Logger::log_event_str("{ vtChangeNumericValueReq := ");
+single_value.field_vtChangeNumericValueReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_vtChangeActiveMaskReq:
+TTCN_Logger::log_event_str("{ vtChangeActiveMaskReq := ");
+single_value.field_vtChangeActiveMaskReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_vtChangeSoftKeyMaskReq:
+TTCN_Logger::log_event_str("{ vtChangeSoftKeyMaskReq := ");
+single_value.field_vtChangeSoftKeyMaskReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_vtChangeStringValueReq:
+TTCN_Logger::log_event_str("{ vtChangeStringValueReq := ");
+single_value.field_vtChangeStringValueReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_vtOnUserLayoutHideShowReq:
+TTCN_Logger::log_event_str("{ vtOnUserLayoutHideShowReq := ");
+single_value.field_vtOnUserLayoutHideShowReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_vtControlAudioSignalTerminationInd:
+TTCN_Logger::log_event_str("{ vtControlAudioSignalTerminationInd := ");
+single_value.field_vtControlAudioSignalTerminationInd->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_endOfObjectPoolRes:
+TTCN_Logger::log_event_str("{ endOfObjectPoolRes := ");
+single_value.field_endOfObjectPoolRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_vtfunction32VT2ECU:
+TTCN_Logger::log_event_str("{ vtfunction32VT2ECU := ");
+single_value.field_vtfunction32VT2ECU->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_vtfunction34VT2ECU:
+TTCN_Logger::log_event_str("{ vtfunction34VT2ECU := ");
+single_value.field_vtfunction34VT2ECU->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_vtfunction36VT2ECU:
+TTCN_Logger::log_event_str("{ vtfunction36VT2ECU := ");
+single_value.field_vtfunction36VT2ECU->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_vtfunction37VT2ECU:
+TTCN_Logger::log_event_str("{ vtfunction37VT2ECU := ");
+single_value.field_vtfunction37VT2ECU->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_vtfunction39VT2ECU:
+TTCN_Logger::log_event_str("{ vtfunction39VT2ECU := ");
+single_value.field_vtfunction39VT2ECU->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_escRes:
+TTCN_Logger::log_event_str("{ escRes := ");
+single_value.field_escRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_hideShowObjectRes:
+TTCN_Logger::log_event_str("{ hideShowObjectRes := ");
+single_value.field_hideShowObjectRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_enableDisableObjectRes:
+TTCN_Logger::log_event_str("{ enableDisableObjectRes := ");
+single_value.field_enableDisableObjectRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_selectInputObjectRes:
+TTCN_Logger::log_event_str("{ selectInputObjectRes := ");
+single_value.field_selectInputObjectRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_controlAudioSignalRes:
+TTCN_Logger::log_event_str("{ controlAudioSignalRes := ");
+single_value.field_controlAudioSignalRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_setAudioVolumeRes:
+TTCN_Logger::log_event_str("{ setAudioVolumeRes := ");
+single_value.field_setAudioVolumeRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_changeChildLocationRes:
+TTCN_Logger::log_event_str("{ changeChildLocationRes := ");
+single_value.field_changeChildLocationRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_changeSizeRes:
+TTCN_Logger::log_event_str("{ changeSizeRes := ");
+single_value.field_changeSizeRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_changeBackgroundColourRes:
+TTCN_Logger::log_event_str("{ changeBackgroundColourRes := ");
+single_value.field_changeBackgroundColourRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_changeNumericValueRes:
+TTCN_Logger::log_event_str("{ changeNumericValueRes := ");
+single_value.field_changeNumericValueRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_changeEndPointRes:
+TTCN_Logger::log_event_str("{ changeEndPointRes := ");
+single_value.field_changeEndPointRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_changeFontAttributesRes:
+TTCN_Logger::log_event_str("{ changeFontAttributesRes := ");
+single_value.field_changeFontAttributesRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_changeLineAttributesRes:
+TTCN_Logger::log_event_str("{ changeLineAttributesRes := ");
+single_value.field_changeLineAttributesRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_changeFillAttributesRes:
+TTCN_Logger::log_event_str("{ changeFillAttributesRes := ");
+single_value.field_changeFillAttributesRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_changeActiveMaskRes:
+TTCN_Logger::log_event_str("{ changeActiveMaskRes := ");
+single_value.field_changeActiveMaskRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_changeSoftKeyMaskRes:
+TTCN_Logger::log_event_str("{ changeSoftKeyMaskRes := ");
+single_value.field_changeSoftKeyMaskRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_changeAttributeRes:
+TTCN_Logger::log_event_str("{ changeAttributeRes := ");
+single_value.field_changeAttributeRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_changePriorityRes:
+TTCN_Logger::log_event_str("{ changePriorityRes := ");
+single_value.field_changePriorityRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_changeListItemRes:
+TTCN_Logger::log_event_str("{ changeListItemRes := ");
+single_value.field_changeListItemRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_deleteObjectPoolRes:
+TTCN_Logger::log_event_str("{ deleteObjectPoolRes := ");
+single_value.field_deleteObjectPoolRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_changeStringValueRes:
+TTCN_Logger::log_event_str("{ changeStringValueRes := ");
+single_value.field_changeStringValueRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_changeChildPositionRes:
+TTCN_Logger::log_event_str("{ changeChildPositionRes := ");
+single_value.field_changeChildPositionRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_changeObjectLabelRes:
+TTCN_Logger::log_event_str("{ changeObjectLabelRes := ");
+single_value.field_changeObjectLabelRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_changePolygonPointRes:
+TTCN_Logger::log_event_str("{ changePolygonPointRes := ");
+single_value.field_changePolygonPointRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_changePolygonScaleRes:
+TTCN_Logger::log_event_str("{ changePolygonScaleRes := ");
+single_value.field_changePolygonScaleRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_graphicsContextRes:
+TTCN_Logger::log_event_str("{ graphicsContextRes := ");
+single_value.field_graphicsContextRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_getAttributeValueRes:
+TTCN_Logger::log_event_str("{ getAttributeValueRes := ");
+single_value.field_getAttributeValueRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_selectColourMapRes:
+TTCN_Logger::log_event_str("{ selectColourMapRes := ");
+single_value.field_selectColourMapRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_identifyVTRes:
+TTCN_Logger::log_event_str("{ identifyVTRes := ");
+single_value.field_identifyVTRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_executeExtendedMacroRes:
+TTCN_Logger::log_event_str("{ executeExtendedMacroRes := ");
+single_value.field_executeExtendedMacroRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_lockUnlockMaskRes:
+TTCN_Logger::log_event_str("{ lockUnlockMaskRes := ");
+single_value.field_lockUnlockMaskRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_executeMacroRes:
+TTCN_Logger::log_event_str("{ executeMacroRes := ");
+single_value.field_executeMacroRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_getMemoryRes:
+TTCN_Logger::log_event_str("{ getMemoryRes := ");
+single_value.field_getMemoryRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_getNumberOfSoftKeysRes:
+TTCN_Logger::log_event_str("{ getNumberOfSoftKeysRes := ");
+single_value.field_getNumberOfSoftKeysRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_getTextFontDataRes:
+TTCN_Logger::log_event_str("{ getTextFontDataRes := ");
+single_value.field_getTextFontDataRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_getHardwareRes:
+TTCN_Logger::log_event_str("{ getHardwareRes := ");
+single_value.field_getHardwareRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_getSupportedWidecharsRes:
+TTCN_Logger::log_event_str("{ getSupportedWidecharsRes := ");
+single_value.field_getSupportedWidecharsRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_getWindowMaskDataRes:
+TTCN_Logger::log_event_str("{ getWindowMaskDataRes := ");
+single_value.field_getWindowMaskDataRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_getSupportedObjectsRes:
+TTCN_Logger::log_event_str("{ getSupportedObjectsRes := ");
+single_value.field_getSupportedObjectsRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_storeVersionRes:
+TTCN_Logger::log_event_str("{ storeVersionRes := ");
+single_value.field_storeVersionRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_loadVersionRes:
+TTCN_Logger::log_event_str("{ loadVersionRes := ");
+single_value.field_loadVersionRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_deleteVersionRes:
+TTCN_Logger::log_event_str("{ deleteVersionRes := ");
+single_value.field_deleteVersionRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_extendedGetVersionsRes:
+TTCN_Logger::log_event_str("{ extendedGetVersionsRes := ");
+single_value.field_extendedGetVersionsRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_extendedStoreVersionRes:
+TTCN_Logger::log_event_str("{ extendedStoreVersionRes := ");
+single_value.field_extendedStoreVersionRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_extendedLoadVersionRes:
+TTCN_Logger::log_event_str("{ extendedLoadVersionRes := ");
+single_value.field_extendedLoadVersionRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_extendedDeleteVersionRes:
+TTCN_Logger::log_event_str("{ extendedDeleteVersionRes := ");
+single_value.field_extendedDeleteVersionRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_getVersionsRes:
+TTCN_Logger::log_event_str("{ getVersionsRes := ");
+single_value.field_getVersionsRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_vtUnsupportedVTFunctionInd:
+TTCN_Logger::log_event_str("{ vtUnsupportedVTFunctionInd := ");
+single_value.field_vtUnsupportedVTFunctionInd->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case VT2ECU::ALT_vtStatusReq:
+TTCN_Logger::log_event_str("{ vtStatusReq := ");
+single_value.field_vtStatusReq->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 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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void VT2ECU_template::log_match(const VT2ECU& 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()) {
+switch (single_value.union_selection) {
+case VT2ECU::ALT_softKeyActivationReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".softKeyActivationReq");
+single_value.field_softKeyActivationReq->log_match(match_value.softKeyActivationReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ softKeyActivationReq := ");
+single_value.field_softKeyActivationReq->log_match(match_value.softKeyActivationReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_buttonActivationReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".buttonActivationReq");
+single_value.field_buttonActivationReq->log_match(match_value.buttonActivationReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ buttonActivationReq := ");
+single_value.field_buttonActivationReq->log_match(match_value.buttonActivationReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_pointingEventReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".pointingEventReq");
+single_value.field_pointingEventReq->log_match(match_value.pointingEventReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ pointingEventReq := ");
+single_value.field_pointingEventReq->log_match(match_value.pointingEventReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_vtSelectInputObjectReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".vtSelectInputObjectReq");
+single_value.field_vtSelectInputObjectReq->log_match(match_value.vtSelectInputObjectReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ vtSelectInputObjectReq := ");
+single_value.field_vtSelectInputObjectReq->log_match(match_value.vtSelectInputObjectReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_vtESCReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".vtESCReq");
+single_value.field_vtESCReq->log_match(match_value.vtESCReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ vtESCReq := ");
+single_value.field_vtESCReq->log_match(match_value.vtESCReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_vtChangeNumericValueReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".vtChangeNumericValueReq");
+single_value.field_vtChangeNumericValueReq->log_match(match_value.vtChangeNumericValueReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ vtChangeNumericValueReq := ");
+single_value.field_vtChangeNumericValueReq->log_match(match_value.vtChangeNumericValueReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_vtChangeActiveMaskReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".vtChangeActiveMaskReq");
+single_value.field_vtChangeActiveMaskReq->log_match(match_value.vtChangeActiveMaskReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ vtChangeActiveMaskReq := ");
+single_value.field_vtChangeActiveMaskReq->log_match(match_value.vtChangeActiveMaskReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_vtChangeSoftKeyMaskReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".vtChangeSoftKeyMaskReq");
+single_value.field_vtChangeSoftKeyMaskReq->log_match(match_value.vtChangeSoftKeyMaskReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ vtChangeSoftKeyMaskReq := ");
+single_value.field_vtChangeSoftKeyMaskReq->log_match(match_value.vtChangeSoftKeyMaskReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_vtChangeStringValueReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".vtChangeStringValueReq");
+single_value.field_vtChangeStringValueReq->log_match(match_value.vtChangeStringValueReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ vtChangeStringValueReq := ");
+single_value.field_vtChangeStringValueReq->log_match(match_value.vtChangeStringValueReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_vtOnUserLayoutHideShowReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".vtOnUserLayoutHideShowReq");
+single_value.field_vtOnUserLayoutHideShowReq->log_match(match_value.vtOnUserLayoutHideShowReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ vtOnUserLayoutHideShowReq := ");
+single_value.field_vtOnUserLayoutHideShowReq->log_match(match_value.vtOnUserLayoutHideShowReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_vtControlAudioSignalTerminationInd:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".vtControlAudioSignalTerminationInd");
+single_value.field_vtControlAudioSignalTerminationInd->log_match(match_value.vtControlAudioSignalTerminationInd(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ vtControlAudioSignalTerminationInd := ");
+single_value.field_vtControlAudioSignalTerminationInd->log_match(match_value.vtControlAudioSignalTerminationInd(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_endOfObjectPoolRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".endOfObjectPoolRes");
+single_value.field_endOfObjectPoolRes->log_match(match_value.endOfObjectPoolRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ endOfObjectPoolRes := ");
+single_value.field_endOfObjectPoolRes->log_match(match_value.endOfObjectPoolRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_vtfunction32VT2ECU:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".vtfunction32VT2ECU");
+single_value.field_vtfunction32VT2ECU->log_match(match_value.vtfunction32VT2ECU(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ vtfunction32VT2ECU := ");
+single_value.field_vtfunction32VT2ECU->log_match(match_value.vtfunction32VT2ECU(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_vtfunction34VT2ECU:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".vtfunction34VT2ECU");
+single_value.field_vtfunction34VT2ECU->log_match(match_value.vtfunction34VT2ECU(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ vtfunction34VT2ECU := ");
+single_value.field_vtfunction34VT2ECU->log_match(match_value.vtfunction34VT2ECU(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_vtfunction36VT2ECU:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".vtfunction36VT2ECU");
+single_value.field_vtfunction36VT2ECU->log_match(match_value.vtfunction36VT2ECU(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ vtfunction36VT2ECU := ");
+single_value.field_vtfunction36VT2ECU->log_match(match_value.vtfunction36VT2ECU(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_vtfunction37VT2ECU:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".vtfunction37VT2ECU");
+single_value.field_vtfunction37VT2ECU->log_match(match_value.vtfunction37VT2ECU(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ vtfunction37VT2ECU := ");
+single_value.field_vtfunction37VT2ECU->log_match(match_value.vtfunction37VT2ECU(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_vtfunction39VT2ECU:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".vtfunction39VT2ECU");
+single_value.field_vtfunction39VT2ECU->log_match(match_value.vtfunction39VT2ECU(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ vtfunction39VT2ECU := ");
+single_value.field_vtfunction39VT2ECU->log_match(match_value.vtfunction39VT2ECU(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_escRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".escRes");
+single_value.field_escRes->log_match(match_value.escRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ escRes := ");
+single_value.field_escRes->log_match(match_value.escRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_hideShowObjectRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".hideShowObjectRes");
+single_value.field_hideShowObjectRes->log_match(match_value.hideShowObjectRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ hideShowObjectRes := ");
+single_value.field_hideShowObjectRes->log_match(match_value.hideShowObjectRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_enableDisableObjectRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".enableDisableObjectRes");
+single_value.field_enableDisableObjectRes->log_match(match_value.enableDisableObjectRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ enableDisableObjectRes := ");
+single_value.field_enableDisableObjectRes->log_match(match_value.enableDisableObjectRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_selectInputObjectRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".selectInputObjectRes");
+single_value.field_selectInputObjectRes->log_match(match_value.selectInputObjectRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ selectInputObjectRes := ");
+single_value.field_selectInputObjectRes->log_match(match_value.selectInputObjectRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_controlAudioSignalRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".controlAudioSignalRes");
+single_value.field_controlAudioSignalRes->log_match(match_value.controlAudioSignalRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ controlAudioSignalRes := ");
+single_value.field_controlAudioSignalRes->log_match(match_value.controlAudioSignalRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_setAudioVolumeRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".setAudioVolumeRes");
+single_value.field_setAudioVolumeRes->log_match(match_value.setAudioVolumeRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ setAudioVolumeRes := ");
+single_value.field_setAudioVolumeRes->log_match(match_value.setAudioVolumeRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_changeChildLocationRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".changeChildLocationRes");
+single_value.field_changeChildLocationRes->log_match(match_value.changeChildLocationRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ changeChildLocationRes := ");
+single_value.field_changeChildLocationRes->log_match(match_value.changeChildLocationRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_changeSizeRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".changeSizeRes");
+single_value.field_changeSizeRes->log_match(match_value.changeSizeRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ changeSizeRes := ");
+single_value.field_changeSizeRes->log_match(match_value.changeSizeRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_changeBackgroundColourRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".changeBackgroundColourRes");
+single_value.field_changeBackgroundColourRes->log_match(match_value.changeBackgroundColourRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ changeBackgroundColourRes := ");
+single_value.field_changeBackgroundColourRes->log_match(match_value.changeBackgroundColourRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_changeNumericValueRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".changeNumericValueRes");
+single_value.field_changeNumericValueRes->log_match(match_value.changeNumericValueRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ changeNumericValueRes := ");
+single_value.field_changeNumericValueRes->log_match(match_value.changeNumericValueRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_changeEndPointRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".changeEndPointRes");
+single_value.field_changeEndPointRes->log_match(match_value.changeEndPointRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ changeEndPointRes := ");
+single_value.field_changeEndPointRes->log_match(match_value.changeEndPointRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_changeFontAttributesRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".changeFontAttributesRes");
+single_value.field_changeFontAttributesRes->log_match(match_value.changeFontAttributesRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ changeFontAttributesRes := ");
+single_value.field_changeFontAttributesRes->log_match(match_value.changeFontAttributesRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_changeLineAttributesRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".changeLineAttributesRes");
+single_value.field_changeLineAttributesRes->log_match(match_value.changeLineAttributesRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ changeLineAttributesRes := ");
+single_value.field_changeLineAttributesRes->log_match(match_value.changeLineAttributesRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_changeFillAttributesRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".changeFillAttributesRes");
+single_value.field_changeFillAttributesRes->log_match(match_value.changeFillAttributesRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ changeFillAttributesRes := ");
+single_value.field_changeFillAttributesRes->log_match(match_value.changeFillAttributesRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_changeActiveMaskRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".changeActiveMaskRes");
+single_value.field_changeActiveMaskRes->log_match(match_value.changeActiveMaskRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ changeActiveMaskRes := ");
+single_value.field_changeActiveMaskRes->log_match(match_value.changeActiveMaskRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_changeSoftKeyMaskRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".changeSoftKeyMaskRes");
+single_value.field_changeSoftKeyMaskRes->log_match(match_value.changeSoftKeyMaskRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ changeSoftKeyMaskRes := ");
+single_value.field_changeSoftKeyMaskRes->log_match(match_value.changeSoftKeyMaskRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_changeAttributeRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".changeAttributeRes");
+single_value.field_changeAttributeRes->log_match(match_value.changeAttributeRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ changeAttributeRes := ");
+single_value.field_changeAttributeRes->log_match(match_value.changeAttributeRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_changePriorityRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".changePriorityRes");
+single_value.field_changePriorityRes->log_match(match_value.changePriorityRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ changePriorityRes := ");
+single_value.field_changePriorityRes->log_match(match_value.changePriorityRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_changeListItemRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".changeListItemRes");
+single_value.field_changeListItemRes->log_match(match_value.changeListItemRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ changeListItemRes := ");
+single_value.field_changeListItemRes->log_match(match_value.changeListItemRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_deleteObjectPoolRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".deleteObjectPoolRes");
+single_value.field_deleteObjectPoolRes->log_match(match_value.deleteObjectPoolRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ deleteObjectPoolRes := ");
+single_value.field_deleteObjectPoolRes->log_match(match_value.deleteObjectPoolRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_changeStringValueRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".changeStringValueRes");
+single_value.field_changeStringValueRes->log_match(match_value.changeStringValueRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ changeStringValueRes := ");
+single_value.field_changeStringValueRes->log_match(match_value.changeStringValueRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_changeChildPositionRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".changeChildPositionRes");
+single_value.field_changeChildPositionRes->log_match(match_value.changeChildPositionRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ changeChildPositionRes := ");
+single_value.field_changeChildPositionRes->log_match(match_value.changeChildPositionRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_changeObjectLabelRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".changeObjectLabelRes");
+single_value.field_changeObjectLabelRes->log_match(match_value.changeObjectLabelRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ changeObjectLabelRes := ");
+single_value.field_changeObjectLabelRes->log_match(match_value.changeObjectLabelRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_changePolygonPointRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".changePolygonPointRes");
+single_value.field_changePolygonPointRes->log_match(match_value.changePolygonPointRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ changePolygonPointRes := ");
+single_value.field_changePolygonPointRes->log_match(match_value.changePolygonPointRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_changePolygonScaleRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".changePolygonScaleRes");
+single_value.field_changePolygonScaleRes->log_match(match_value.changePolygonScaleRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ changePolygonScaleRes := ");
+single_value.field_changePolygonScaleRes->log_match(match_value.changePolygonScaleRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_graphicsContextRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".graphicsContextRes");
+single_value.field_graphicsContextRes->log_match(match_value.graphicsContextRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ graphicsContextRes := ");
+single_value.field_graphicsContextRes->log_match(match_value.graphicsContextRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_getAttributeValueRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".getAttributeValueRes");
+single_value.field_getAttributeValueRes->log_match(match_value.getAttributeValueRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ getAttributeValueRes := ");
+single_value.field_getAttributeValueRes->log_match(match_value.getAttributeValueRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_selectColourMapRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".selectColourMapRes");
+single_value.field_selectColourMapRes->log_match(match_value.selectColourMapRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ selectColourMapRes := ");
+single_value.field_selectColourMapRes->log_match(match_value.selectColourMapRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_identifyVTRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".identifyVTRes");
+single_value.field_identifyVTRes->log_match(match_value.identifyVTRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ identifyVTRes := ");
+single_value.field_identifyVTRes->log_match(match_value.identifyVTRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_executeExtendedMacroRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".executeExtendedMacroRes");
+single_value.field_executeExtendedMacroRes->log_match(match_value.executeExtendedMacroRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ executeExtendedMacroRes := ");
+single_value.field_executeExtendedMacroRes->log_match(match_value.executeExtendedMacroRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_lockUnlockMaskRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".lockUnlockMaskRes");
+single_value.field_lockUnlockMaskRes->log_match(match_value.lockUnlockMaskRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ lockUnlockMaskRes := ");
+single_value.field_lockUnlockMaskRes->log_match(match_value.lockUnlockMaskRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_executeMacroRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".executeMacroRes");
+single_value.field_executeMacroRes->log_match(match_value.executeMacroRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ executeMacroRes := ");
+single_value.field_executeMacroRes->log_match(match_value.executeMacroRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_getMemoryRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".getMemoryRes");
+single_value.field_getMemoryRes->log_match(match_value.getMemoryRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ getMemoryRes := ");
+single_value.field_getMemoryRes->log_match(match_value.getMemoryRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_getNumberOfSoftKeysRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".getNumberOfSoftKeysRes");
+single_value.field_getNumberOfSoftKeysRes->log_match(match_value.getNumberOfSoftKeysRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ getNumberOfSoftKeysRes := ");
+single_value.field_getNumberOfSoftKeysRes->log_match(match_value.getNumberOfSoftKeysRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_getTextFontDataRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".getTextFontDataRes");
+single_value.field_getTextFontDataRes->log_match(match_value.getTextFontDataRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ getTextFontDataRes := ");
+single_value.field_getTextFontDataRes->log_match(match_value.getTextFontDataRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_getHardwareRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".getHardwareRes");
+single_value.field_getHardwareRes->log_match(match_value.getHardwareRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ getHardwareRes := ");
+single_value.field_getHardwareRes->log_match(match_value.getHardwareRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_getSupportedWidecharsRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".getSupportedWidecharsRes");
+single_value.field_getSupportedWidecharsRes->log_match(match_value.getSupportedWidecharsRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ getSupportedWidecharsRes := ");
+single_value.field_getSupportedWidecharsRes->log_match(match_value.getSupportedWidecharsRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_getWindowMaskDataRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".getWindowMaskDataRes");
+single_value.field_getWindowMaskDataRes->log_match(match_value.getWindowMaskDataRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ getWindowMaskDataRes := ");
+single_value.field_getWindowMaskDataRes->log_match(match_value.getWindowMaskDataRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_getSupportedObjectsRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".getSupportedObjectsRes");
+single_value.field_getSupportedObjectsRes->log_match(match_value.getSupportedObjectsRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ getSupportedObjectsRes := ");
+single_value.field_getSupportedObjectsRes->log_match(match_value.getSupportedObjectsRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_storeVersionRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".storeVersionRes");
+single_value.field_storeVersionRes->log_match(match_value.storeVersionRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ storeVersionRes := ");
+single_value.field_storeVersionRes->log_match(match_value.storeVersionRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_loadVersionRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".loadVersionRes");
+single_value.field_loadVersionRes->log_match(match_value.loadVersionRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ loadVersionRes := ");
+single_value.field_loadVersionRes->log_match(match_value.loadVersionRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_deleteVersionRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".deleteVersionRes");
+single_value.field_deleteVersionRes->log_match(match_value.deleteVersionRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ deleteVersionRes := ");
+single_value.field_deleteVersionRes->log_match(match_value.deleteVersionRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_extendedGetVersionsRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".extendedGetVersionsRes");
+single_value.field_extendedGetVersionsRes->log_match(match_value.extendedGetVersionsRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ extendedGetVersionsRes := ");
+single_value.field_extendedGetVersionsRes->log_match(match_value.extendedGetVersionsRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_extendedStoreVersionRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".extendedStoreVersionRes");
+single_value.field_extendedStoreVersionRes->log_match(match_value.extendedStoreVersionRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ extendedStoreVersionRes := ");
+single_value.field_extendedStoreVersionRes->log_match(match_value.extendedStoreVersionRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_extendedLoadVersionRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".extendedLoadVersionRes");
+single_value.field_extendedLoadVersionRes->log_match(match_value.extendedLoadVersionRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ extendedLoadVersionRes := ");
+single_value.field_extendedLoadVersionRes->log_match(match_value.extendedLoadVersionRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_extendedDeleteVersionRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".extendedDeleteVersionRes");
+single_value.field_extendedDeleteVersionRes->log_match(match_value.extendedDeleteVersionRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ extendedDeleteVersionRes := ");
+single_value.field_extendedDeleteVersionRes->log_match(match_value.extendedDeleteVersionRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_getVersionsRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".getVersionsRes");
+single_value.field_getVersionsRes->log_match(match_value.getVersionsRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ getVersionsRes := ");
+single_value.field_getVersionsRes->log_match(match_value.getVersionsRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_vtUnsupportedVTFunctionInd:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".vtUnsupportedVTFunctionInd");
+single_value.field_vtUnsupportedVTFunctionInd->log_match(match_value.vtUnsupportedVTFunctionInd(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ vtUnsupportedVTFunctionInd := ");
+single_value.field_vtUnsupportedVTFunctionInd->log_match(match_value.vtUnsupportedVTFunctionInd(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case VT2ECU::ALT_vtStatusReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".vtStatusReq");
+single_value.field_vtStatusReq->log_match(match_value.vtStatusReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ vtStatusReq := ");
+single_value.field_vtStatusReq->log_match(match_value.vtStatusReq(), 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 VT2ECU_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 VT2ECU::ALT_softKeyActivationReq:
+single_value.field_softKeyActivationReq->encode_text(text_buf);
+break;
+case VT2ECU::ALT_buttonActivationReq:
+single_value.field_buttonActivationReq->encode_text(text_buf);
+break;
+case VT2ECU::ALT_pointingEventReq:
+single_value.field_pointingEventReq->encode_text(text_buf);
+break;
+case VT2ECU::ALT_vtSelectInputObjectReq:
+single_value.field_vtSelectInputObjectReq->encode_text(text_buf);
+break;
+case VT2ECU::ALT_vtESCReq:
+single_value.field_vtESCReq->encode_text(text_buf);
+break;
+case VT2ECU::ALT_vtChangeNumericValueReq:
+single_value.field_vtChangeNumericValueReq->encode_text(text_buf);
+break;
+case VT2ECU::ALT_vtChangeActiveMaskReq:
+single_value.field_vtChangeActiveMaskReq->encode_text(text_buf);
+break;
+case VT2ECU::ALT_vtChangeSoftKeyMaskReq:
+single_value.field_vtChangeSoftKeyMaskReq->encode_text(text_buf);
+break;
+case VT2ECU::ALT_vtChangeStringValueReq:
+single_value.field_vtChangeStringValueReq->encode_text(text_buf);
+break;
+case VT2ECU::ALT_vtOnUserLayoutHideShowReq:
+single_value.field_vtOnUserLayoutHideShowReq->encode_text(text_buf);
+break;
+case VT2ECU::ALT_vtControlAudioSignalTerminationInd:
+single_value.field_vtControlAudioSignalTerminationInd->encode_text(text_buf);
+break;
+case VT2ECU::ALT_endOfObjectPoolRes:
+single_value.field_endOfObjectPoolRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_vtfunction32VT2ECU:
+single_value.field_vtfunction32VT2ECU->encode_text(text_buf);
+break;
+case VT2ECU::ALT_vtfunction34VT2ECU:
+single_value.field_vtfunction34VT2ECU->encode_text(text_buf);
+break;
+case VT2ECU::ALT_vtfunction36VT2ECU:
+single_value.field_vtfunction36VT2ECU->encode_text(text_buf);
+break;
+case VT2ECU::ALT_vtfunction37VT2ECU:
+single_value.field_vtfunction37VT2ECU->encode_text(text_buf);
+break;
+case VT2ECU::ALT_vtfunction39VT2ECU:
+single_value.field_vtfunction39VT2ECU->encode_text(text_buf);
+break;
+case VT2ECU::ALT_escRes:
+single_value.field_escRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_hideShowObjectRes:
+single_value.field_hideShowObjectRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_enableDisableObjectRes:
+single_value.field_enableDisableObjectRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_selectInputObjectRes:
+single_value.field_selectInputObjectRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_controlAudioSignalRes:
+single_value.field_controlAudioSignalRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_setAudioVolumeRes:
+single_value.field_setAudioVolumeRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_changeChildLocationRes:
+single_value.field_changeChildLocationRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_changeSizeRes:
+single_value.field_changeSizeRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_changeBackgroundColourRes:
+single_value.field_changeBackgroundColourRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_changeNumericValueRes:
+single_value.field_changeNumericValueRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_changeEndPointRes:
+single_value.field_changeEndPointRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_changeFontAttributesRes:
+single_value.field_changeFontAttributesRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_changeLineAttributesRes:
+single_value.field_changeLineAttributesRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_changeFillAttributesRes:
+single_value.field_changeFillAttributesRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_changeActiveMaskRes:
+single_value.field_changeActiveMaskRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_changeSoftKeyMaskRes:
+single_value.field_changeSoftKeyMaskRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_changeAttributeRes:
+single_value.field_changeAttributeRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_changePriorityRes:
+single_value.field_changePriorityRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_changeListItemRes:
+single_value.field_changeListItemRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_deleteObjectPoolRes:
+single_value.field_deleteObjectPoolRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_changeStringValueRes:
+single_value.field_changeStringValueRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_changeChildPositionRes:
+single_value.field_changeChildPositionRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_changeObjectLabelRes:
+single_value.field_changeObjectLabelRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_changePolygonPointRes:
+single_value.field_changePolygonPointRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_changePolygonScaleRes:
+single_value.field_changePolygonScaleRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_graphicsContextRes:
+single_value.field_graphicsContextRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_getAttributeValueRes:
+single_value.field_getAttributeValueRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_selectColourMapRes:
+single_value.field_selectColourMapRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_identifyVTRes:
+single_value.field_identifyVTRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_executeExtendedMacroRes:
+single_value.field_executeExtendedMacroRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_lockUnlockMaskRes:
+single_value.field_lockUnlockMaskRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_executeMacroRes:
+single_value.field_executeMacroRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_getMemoryRes:
+single_value.field_getMemoryRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_getNumberOfSoftKeysRes:
+single_value.field_getNumberOfSoftKeysRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_getTextFontDataRes:
+single_value.field_getTextFontDataRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_getHardwareRes:
+single_value.field_getHardwareRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_getSupportedWidecharsRes:
+single_value.field_getSupportedWidecharsRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_getWindowMaskDataRes:
+single_value.field_getWindowMaskDataRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_getSupportedObjectsRes:
+single_value.field_getSupportedObjectsRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_storeVersionRes:
+single_value.field_storeVersionRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_loadVersionRes:
+single_value.field_loadVersionRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_deleteVersionRes:
+single_value.field_deleteVersionRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_extendedGetVersionsRes:
+single_value.field_extendedGetVersionsRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_extendedStoreVersionRes:
+single_value.field_extendedStoreVersionRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_extendedLoadVersionRes:
+single_value.field_extendedLoadVersionRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_extendedDeleteVersionRes:
+single_value.field_extendedDeleteVersionRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_getVersionsRes:
+single_value.field_getVersionsRes->encode_text(text_buf);
+break;
+case VT2ECU::ALT_vtUnsupportedVTFunctionInd:
+single_value.field_vtUnsupportedVTFunctionInd->encode_text(text_buf);
+break;
+case VT2ECU::ALT_vtStatusReq:
+single_value.field_vtStatusReq->encode_text(text_buf);
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @IsobusVTMessageTypes.VT2ECU.");
+}
+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 @IsobusVTMessageTypes.VT2ECU.");
+}
+}
+
+void VT2ECU_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+{
+single_value.union_selection = VT2ECU::UNBOUND_VALUE;
+VT2ECU::union_selection_type new_selection = (VT2ECU::union_selection_type)text_buf.pull_int().get_val();
+switch (new_selection) {
+case VT2ECU::ALT_softKeyActivationReq:
+single_value.field_softKeyActivationReq = new SoftKeyActivationReq_template;
+single_value.field_softKeyActivationReq->decode_text(text_buf);
+break;
+case VT2ECU::ALT_buttonActivationReq:
+single_value.field_buttonActivationReq = new ButtonActivationReq_template;
+single_value.field_buttonActivationReq->decode_text(text_buf);
+break;
+case VT2ECU::ALT_pointingEventReq:
+single_value.field_pointingEventReq = new PointingEventReq_template;
+single_value.field_pointingEventReq->decode_text(text_buf);
+break;
+case VT2ECU::ALT_vtSelectInputObjectReq:
+single_value.field_vtSelectInputObjectReq = new VTSelectInputObjectReq_template;
+single_value.field_vtSelectInputObjectReq->decode_text(text_buf);
+break;
+case VT2ECU::ALT_vtESCReq:
+single_value.field_vtESCReq = new VTESCReq_template;
+single_value.field_vtESCReq->decode_text(text_buf);
+break;
+case VT2ECU::ALT_vtChangeNumericValueReq:
+single_value.field_vtChangeNumericValueReq = new VTChangeNumericValueReq_template;
+single_value.field_vtChangeNumericValueReq->decode_text(text_buf);
+break;
+case VT2ECU::ALT_vtChangeActiveMaskReq:
+single_value.field_vtChangeActiveMaskReq = new VTChangeActiveMaskReq_template;
+single_value.field_vtChangeActiveMaskReq->decode_text(text_buf);
+break;
+case VT2ECU::ALT_vtChangeSoftKeyMaskReq:
+single_value.field_vtChangeSoftKeyMaskReq = new VTChangeSoftKeyMaskReq_template;
+single_value.field_vtChangeSoftKeyMaskReq->decode_text(text_buf);
+break;
+case VT2ECU::ALT_vtChangeStringValueReq:
+single_value.field_vtChangeStringValueReq = new VTChangeStringValueReq_template;
+single_value.field_vtChangeStringValueReq->decode_text(text_buf);
+break;
+case VT2ECU::ALT_vtOnUserLayoutHideShowReq:
+single_value.field_vtOnUserLayoutHideShowReq = new VTOnUserLayoutHideShowReq_template;
+single_value.field_vtOnUserLayoutHideShowReq->decode_text(text_buf);
+break;
+case VT2ECU::ALT_vtControlAudioSignalTerminationInd:
+single_value.field_vtControlAudioSignalTerminationInd = new VTControlAudioSignalTerminationInd_template;
+single_value.field_vtControlAudioSignalTerminationInd->decode_text(text_buf);
+break;
+case VT2ECU::ALT_endOfObjectPoolRes:
+single_value.field_endOfObjectPoolRes = new EndOfObjectPoolRes_template;
+single_value.field_endOfObjectPoolRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_vtfunction32VT2ECU:
+single_value.field_vtfunction32VT2ECU = new VTfunction32VT2ECU_template;
+single_value.field_vtfunction32VT2ECU->decode_text(text_buf);
+break;
+case VT2ECU::ALT_vtfunction34VT2ECU:
+single_value.field_vtfunction34VT2ECU = new VTfunction34VT2ECU_template;
+single_value.field_vtfunction34VT2ECU->decode_text(text_buf);
+break;
+case VT2ECU::ALT_vtfunction36VT2ECU:
+single_value.field_vtfunction36VT2ECU = new VTfunction36VT2ECU_template;
+single_value.field_vtfunction36VT2ECU->decode_text(text_buf);
+break;
+case VT2ECU::ALT_vtfunction37VT2ECU:
+single_value.field_vtfunction37VT2ECU = new VTfunction37VT2ECU_template;
+single_value.field_vtfunction37VT2ECU->decode_text(text_buf);
+break;
+case VT2ECU::ALT_vtfunction39VT2ECU:
+single_value.field_vtfunction39VT2ECU = new VTfunction39VT2ECU_template;
+single_value.field_vtfunction39VT2ECU->decode_text(text_buf);
+break;
+case VT2ECU::ALT_escRes:
+single_value.field_escRes = new ESCres_template;
+single_value.field_escRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_hideShowObjectRes:
+single_value.field_hideShowObjectRes = new HideShowObjectRes_template;
+single_value.field_hideShowObjectRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_enableDisableObjectRes:
+single_value.field_enableDisableObjectRes = new EnableDisableObjectRes_template;
+single_value.field_enableDisableObjectRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_selectInputObjectRes:
+single_value.field_selectInputObjectRes = new SelectInputObjectRes_template;
+single_value.field_selectInputObjectRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_controlAudioSignalRes:
+single_value.field_controlAudioSignalRes = new ControlAudioSignalRes_template;
+single_value.field_controlAudioSignalRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_setAudioVolumeRes:
+single_value.field_setAudioVolumeRes = new SetAudioVolumeRes_template;
+single_value.field_setAudioVolumeRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_changeChildLocationRes:
+single_value.field_changeChildLocationRes = new ChangeChildLocationRes_template;
+single_value.field_changeChildLocationRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_changeSizeRes:
+single_value.field_changeSizeRes = new ChangeSizeRes_template;
+single_value.field_changeSizeRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_changeBackgroundColourRes:
+single_value.field_changeBackgroundColourRes = new ChangeBackgroundColourRes_template;
+single_value.field_changeBackgroundColourRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_changeNumericValueRes:
+single_value.field_changeNumericValueRes = new ChangeNumericValueRes_template;
+single_value.field_changeNumericValueRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_changeEndPointRes:
+single_value.field_changeEndPointRes = new ChangeEndPointRes_template;
+single_value.field_changeEndPointRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_changeFontAttributesRes:
+single_value.field_changeFontAttributesRes = new ChangeFontAttributesRes_template;
+single_value.field_changeFontAttributesRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_changeLineAttributesRes:
+single_value.field_changeLineAttributesRes = new ChangeLineAttributesRes_template;
+single_value.field_changeLineAttributesRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_changeFillAttributesRes:
+single_value.field_changeFillAttributesRes = new ChangeFillAttributesRes_template;
+single_value.field_changeFillAttributesRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_changeActiveMaskRes:
+single_value.field_changeActiveMaskRes = new ChangeActiveMaskRes_template;
+single_value.field_changeActiveMaskRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_changeSoftKeyMaskRes:
+single_value.field_changeSoftKeyMaskRes = new ChangeSoftKeyMaskRes_template;
+single_value.field_changeSoftKeyMaskRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_changeAttributeRes:
+single_value.field_changeAttributeRes = new ChangeAttributeRes_template;
+single_value.field_changeAttributeRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_changePriorityRes:
+single_value.field_changePriorityRes = new ChangePriorityRes_template;
+single_value.field_changePriorityRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_changeListItemRes:
+single_value.field_changeListItemRes = new ChangeListItemRes_template;
+single_value.field_changeListItemRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_deleteObjectPoolRes:
+single_value.field_deleteObjectPoolRes = new DeleteObjectPoolRes_template;
+single_value.field_deleteObjectPoolRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_changeStringValueRes:
+single_value.field_changeStringValueRes = new ChangeStringValueRes_template;
+single_value.field_changeStringValueRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_changeChildPositionRes:
+single_value.field_changeChildPositionRes = new ChangeChildPositionRes_template;
+single_value.field_changeChildPositionRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_changeObjectLabelRes:
+single_value.field_changeObjectLabelRes = new ChangeObjectLabelRes_template;
+single_value.field_changeObjectLabelRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_changePolygonPointRes:
+single_value.field_changePolygonPointRes = new ChangePolygonPointRes_template;
+single_value.field_changePolygonPointRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_changePolygonScaleRes:
+single_value.field_changePolygonScaleRes = new ChangePolygonScaleRes_template;
+single_value.field_changePolygonScaleRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_graphicsContextRes:
+single_value.field_graphicsContextRes = new GraphicsContextRes_template;
+single_value.field_graphicsContextRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_getAttributeValueRes:
+single_value.field_getAttributeValueRes = new GetAttributeValueRes_template;
+single_value.field_getAttributeValueRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_selectColourMapRes:
+single_value.field_selectColourMapRes = new SelectColourMapRes_template;
+single_value.field_selectColourMapRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_identifyVTRes:
+single_value.field_identifyVTRes = new IdentifyVTRes_template;
+single_value.field_identifyVTRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_executeExtendedMacroRes:
+single_value.field_executeExtendedMacroRes = new ExecuteExtendedMacroRes_template;
+single_value.field_executeExtendedMacroRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_lockUnlockMaskRes:
+single_value.field_lockUnlockMaskRes = new LockUnlockMaskRes_template;
+single_value.field_lockUnlockMaskRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_executeMacroRes:
+single_value.field_executeMacroRes = new ExecuteMacroRes_template;
+single_value.field_executeMacroRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_getMemoryRes:
+single_value.field_getMemoryRes = new GetMemoryRes_template;
+single_value.field_getMemoryRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_getNumberOfSoftKeysRes:
+single_value.field_getNumberOfSoftKeysRes = new GetNumberOfSoftKeysRes_template;
+single_value.field_getNumberOfSoftKeysRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_getTextFontDataRes:
+single_value.field_getTextFontDataRes = new GetTextFontDataRes_template;
+single_value.field_getTextFontDataRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_getHardwareRes:
+single_value.field_getHardwareRes = new GetHardwareRes_template;
+single_value.field_getHardwareRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_getSupportedWidecharsRes:
+single_value.field_getSupportedWidecharsRes = new GetSupportedWidecharsRes_template;
+single_value.field_getSupportedWidecharsRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_getWindowMaskDataRes:
+single_value.field_getWindowMaskDataRes = new GetWindowMaskDataRes_template;
+single_value.field_getWindowMaskDataRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_getSupportedObjectsRes:
+single_value.field_getSupportedObjectsRes = new GetSupportedObjectsRes_template;
+single_value.field_getSupportedObjectsRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_storeVersionRes:
+single_value.field_storeVersionRes = new StoreVersionRes_template;
+single_value.field_storeVersionRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_loadVersionRes:
+single_value.field_loadVersionRes = new LoadVersionRes_template;
+single_value.field_loadVersionRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_deleteVersionRes:
+single_value.field_deleteVersionRes = new DeleteVersionRes_template;
+single_value.field_deleteVersionRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_extendedGetVersionsRes:
+single_value.field_extendedGetVersionsRes = new ExtendedGetVersionsRes_template;
+single_value.field_extendedGetVersionsRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_extendedStoreVersionRes:
+single_value.field_extendedStoreVersionRes = new ExtendedStoreVersionRes_template;
+single_value.field_extendedStoreVersionRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_extendedLoadVersionRes:
+single_value.field_extendedLoadVersionRes = new ExtendedLoadVersionRes_template;
+single_value.field_extendedLoadVersionRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_extendedDeleteVersionRes:
+single_value.field_extendedDeleteVersionRes = new ExtendedDeleteVersionRes_template;
+single_value.field_extendedDeleteVersionRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_getVersionsRes:
+single_value.field_getVersionsRes = new GetVersionsRes_template;
+single_value.field_getVersionsRes->decode_text(text_buf);
+break;
+case VT2ECU::ALT_vtUnsupportedVTFunctionInd:
+single_value.field_vtUnsupportedVTFunctionInd = new VTUnsupportedVTFunctionInd_template;
+single_value.field_vtUnsupportedVTFunctionInd->decode_text(text_buf);
+break;
+case VT2ECU::ALT_vtStatusReq:
+single_value.field_vtStatusReq = new VTStatusReq_template;
+single_value.field_vtStatusReq->decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @IsobusVTMessageTypes.VT2ECU.");
+}
+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 VT2ECU_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 @IsobusVTMessageTypes.VT2ECU.");
+}
+}
+
+boolean VT2ECU_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean VT2ECU_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 VT2ECU_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 `@IsobusVTMessageTypes.VT2ECU'");
+    }
+    if (strcmp("softKeyActivationReq", param_field) == 0) {
+      softKeyActivationReq().set_param(param);
+      return;
+    } else if (strcmp("buttonActivationReq", param_field) == 0) {
+      buttonActivationReq().set_param(param);
+      return;
+    } else if (strcmp("pointingEventReq", param_field) == 0) {
+      pointingEventReq().set_param(param);
+      return;
+    } else if (strcmp("vtSelectInputObjectReq", param_field) == 0) {
+      vtSelectInputObjectReq().set_param(param);
+      return;
+    } else if (strcmp("vtESCReq", param_field) == 0) {
+      vtESCReq().set_param(param);
+      return;
+    } else if (strcmp("vtChangeNumericValueReq", param_field) == 0) {
+      vtChangeNumericValueReq().set_param(param);
+      return;
+    } else if (strcmp("vtChangeActiveMaskReq", param_field) == 0) {
+      vtChangeActiveMaskReq().set_param(param);
+      return;
+    } else if (strcmp("vtChangeSoftKeyMaskReq", param_field) == 0) {
+      vtChangeSoftKeyMaskReq().set_param(param);
+      return;
+    } else if (strcmp("vtChangeStringValueReq", param_field) == 0) {
+      vtChangeStringValueReq().set_param(param);
+      return;
+    } else if (strcmp("vtOnUserLayoutHideShowReq", param_field) == 0) {
+      vtOnUserLayoutHideShowReq().set_param(param);
+      return;
+    } else if (strcmp("vtControlAudioSignalTerminationInd", param_field) == 0) {
+      vtControlAudioSignalTerminationInd().set_param(param);
+      return;
+    } else if (strcmp("endOfObjectPoolRes", param_field) == 0) {
+      endOfObjectPoolRes().set_param(param);
+      return;
+    } else if (strcmp("vtfunction32VT2ECU", param_field) == 0) {
+      vtfunction32VT2ECU().set_param(param);
+      return;
+    } else if (strcmp("vtfunction34VT2ECU", param_field) == 0) {
+      vtfunction34VT2ECU().set_param(param);
+      return;
+    } else if (strcmp("vtfunction36VT2ECU", param_field) == 0) {
+      vtfunction36VT2ECU().set_param(param);
+      return;
+    } else if (strcmp("vtfunction37VT2ECU", param_field) == 0) {
+      vtfunction37VT2ECU().set_param(param);
+      return;
+    } else if (strcmp("vtfunction39VT2ECU", param_field) == 0) {
+      vtfunction39VT2ECU().set_param(param);
+      return;
+    } else if (strcmp("escRes", param_field) == 0) {
+      escRes().set_param(param);
+      return;
+    } else if (strcmp("hideShowObjectRes", param_field) == 0) {
+      hideShowObjectRes().set_param(param);
+      return;
+    } else if (strcmp("enableDisableObjectRes", param_field) == 0) {
+      enableDisableObjectRes().set_param(param);
+      return;
+    } else if (strcmp("selectInputObjectRes", param_field) == 0) {
+      selectInputObjectRes().set_param(param);
+      return;
+    } else if (strcmp("controlAudioSignalRes", param_field) == 0) {
+      controlAudioSignalRes().set_param(param);
+      return;
+    } else if (strcmp("setAudioVolumeRes", param_field) == 0) {
+      setAudioVolumeRes().set_param(param);
+      return;
+    } else if (strcmp("changeChildLocationRes", param_field) == 0) {
+      changeChildLocationRes().set_param(param);
+      return;
+    } else if (strcmp("changeSizeRes", param_field) == 0) {
+      changeSizeRes().set_param(param);
+      return;
+    } else if (strcmp("changeBackgroundColourRes", param_field) == 0) {
+      changeBackgroundColourRes().set_param(param);
+      return;
+    } else if (strcmp("changeNumericValueRes", param_field) == 0) {
+      changeNumericValueRes().set_param(param);
+      return;
+    } else if (strcmp("changeEndPointRes", param_field) == 0) {
+      changeEndPointRes().set_param(param);
+      return;
+    } else if (strcmp("changeFontAttributesRes", param_field) == 0) {
+      changeFontAttributesRes().set_param(param);
+      return;
+    } else if (strcmp("changeLineAttributesRes", param_field) == 0) {
+      changeLineAttributesRes().set_param(param);
+      return;
+    } else if (strcmp("changeFillAttributesRes", param_field) == 0) {
+      changeFillAttributesRes().set_param(param);
+      return;
+    } else if (strcmp("changeActiveMaskRes", param_field) == 0) {
+      changeActiveMaskRes().set_param(param);
+      return;
+    } else if (strcmp("changeSoftKeyMaskRes", param_field) == 0) {
+      changeSoftKeyMaskRes().set_param(param);
+      return;
+    } else if (strcmp("changeAttributeRes", param_field) == 0) {
+      changeAttributeRes().set_param(param);
+      return;
+    } else if (strcmp("changePriorityRes", param_field) == 0) {
+      changePriorityRes().set_param(param);
+      return;
+    } else if (strcmp("changeListItemRes", param_field) == 0) {
+      changeListItemRes().set_param(param);
+      return;
+    } else if (strcmp("deleteObjectPoolRes", param_field) == 0) {
+      deleteObjectPoolRes().set_param(param);
+      return;
+    } else if (strcmp("changeStringValueRes", param_field) == 0) {
+      changeStringValueRes().set_param(param);
+      return;
+    } else if (strcmp("changeChildPositionRes", param_field) == 0) {
+      changeChildPositionRes().set_param(param);
+      return;
+    } else if (strcmp("changeObjectLabelRes", param_field) == 0) {
+      changeObjectLabelRes().set_param(param);
+      return;
+    } else if (strcmp("changePolygonPointRes", param_field) == 0) {
+      changePolygonPointRes().set_param(param);
+      return;
+    } else if (strcmp("changePolygonScaleRes", param_field) == 0) {
+      changePolygonScaleRes().set_param(param);
+      return;
+    } else if (strcmp("graphicsContextRes", param_field) == 0) {
+      graphicsContextRes().set_param(param);
+      return;
+    } else if (strcmp("getAttributeValueRes", param_field) == 0) {
+      getAttributeValueRes().set_param(param);
+      return;
+    } else if (strcmp("selectColourMapRes", param_field) == 0) {
+      selectColourMapRes().set_param(param);
+      return;
+    } else if (strcmp("identifyVTRes", param_field) == 0) {
+      identifyVTRes().set_param(param);
+      return;
+    } else if (strcmp("executeExtendedMacroRes", param_field) == 0) {
+      executeExtendedMacroRes().set_param(param);
+      return;
+    } else if (strcmp("lockUnlockMaskRes", param_field) == 0) {
+      lockUnlockMaskRes().set_param(param);
+      return;
+    } else if (strcmp("executeMacroRes", param_field) == 0) {
+      executeMacroRes().set_param(param);
+      return;
+    } else if (strcmp("getMemoryRes", param_field) == 0) {
+      getMemoryRes().set_param(param);
+      return;
+    } else if (strcmp("getNumberOfSoftKeysRes", param_field) == 0) {
+      getNumberOfSoftKeysRes().set_param(param);
+      return;
+    } else if (strcmp("getTextFontDataRes", param_field) == 0) {
+      getTextFontDataRes().set_param(param);
+      return;
+    } else if (strcmp("getHardwareRes", param_field) == 0) {
+      getHardwareRes().set_param(param);
+      return;
+    } else if (strcmp("getSupportedWidecharsRes", param_field) == 0) {
+      getSupportedWidecharsRes().set_param(param);
+      return;
+    } else if (strcmp("getWindowMaskDataRes", param_field) == 0) {
+      getWindowMaskDataRes().set_param(param);
+      return;
+    } else if (strcmp("getSupportedObjectsRes", param_field) == 0) {
+      getSupportedObjectsRes().set_param(param);
+      return;
+    } else if (strcmp("storeVersionRes", param_field) == 0) {
+      storeVersionRes().set_param(param);
+      return;
+    } else if (strcmp("loadVersionRes", param_field) == 0) {
+      loadVersionRes().set_param(param);
+      return;
+    } else if (strcmp("deleteVersionRes", param_field) == 0) {
+      deleteVersionRes().set_param(param);
+      return;
+    } else if (strcmp("extendedGetVersionsRes", param_field) == 0) {
+      extendedGetVersionsRes().set_param(param);
+      return;
+    } else if (strcmp("extendedStoreVersionRes", param_field) == 0) {
+      extendedStoreVersionRes().set_param(param);
+      return;
+    } else if (strcmp("extendedLoadVersionRes", param_field) == 0) {
+      extendedLoadVersionRes().set_param(param);
+      return;
+    } else if (strcmp("extendedDeleteVersionRes", param_field) == 0) {
+      extendedDeleteVersionRes().set_param(param);
+      return;
+    } else if (strcmp("getVersionsRes", param_field) == 0) {
+      getVersionsRes().set_param(param);
+      return;
+    } else if (strcmp("vtUnsupportedVTFunctionInd", param_field) == 0) {
+      vtUnsupportedVTFunctionInd().set_param(param);
+      return;
+    } else if (strcmp("vtStatusReq", param_field) == 0) {
+      vtStatusReq().set_param(param);
+      return;
+    } else param.error("Field `%s' not found in union template type `@IsobusVTMessageTypes.VT2ECU'", 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: {
+    VT2ECU_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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", "@IsobusVTMessageTypes.VT2ECU");
+    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, "softKeyActivationReq")) {
+      softKeyActivationReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "buttonActivationReq")) {
+      buttonActivationReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "pointingEventReq")) {
+      pointingEventReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "vtSelectInputObjectReq")) {
+      vtSelectInputObjectReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "vtESCReq")) {
+      vtESCReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "vtChangeNumericValueReq")) {
+      vtChangeNumericValueReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "vtChangeActiveMaskReq")) {
+      vtChangeActiveMaskReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "vtChangeSoftKeyMaskReq")) {
+      vtChangeSoftKeyMaskReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "vtChangeStringValueReq")) {
+      vtChangeStringValueReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "vtOnUserLayoutHideShowReq")) {
+      vtOnUserLayoutHideShowReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "vtControlAudioSignalTerminationInd")) {
+      vtControlAudioSignalTerminationInd().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "endOfObjectPoolRes")) {
+      endOfObjectPoolRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "vtfunction32VT2ECU")) {
+      vtfunction32VT2ECU().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "vtfunction34VT2ECU")) {
+      vtfunction34VT2ECU().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "vtfunction36VT2ECU")) {
+      vtfunction36VT2ECU().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "vtfunction37VT2ECU")) {
+      vtfunction37VT2ECU().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "vtfunction39VT2ECU")) {
+      vtfunction39VT2ECU().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "escRes")) {
+      escRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "hideShowObjectRes")) {
+      hideShowObjectRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "enableDisableObjectRes")) {
+      enableDisableObjectRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "selectInputObjectRes")) {
+      selectInputObjectRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "controlAudioSignalRes")) {
+      controlAudioSignalRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "setAudioVolumeRes")) {
+      setAudioVolumeRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "changeChildLocationRes")) {
+      changeChildLocationRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "changeSizeRes")) {
+      changeSizeRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "changeBackgroundColourRes")) {
+      changeBackgroundColourRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "changeNumericValueRes")) {
+      changeNumericValueRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "changeEndPointRes")) {
+      changeEndPointRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "changeFontAttributesRes")) {
+      changeFontAttributesRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "changeLineAttributesRes")) {
+      changeLineAttributesRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "changeFillAttributesRes")) {
+      changeFillAttributesRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "changeActiveMaskRes")) {
+      changeActiveMaskRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "changeSoftKeyMaskRes")) {
+      changeSoftKeyMaskRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "changeAttributeRes")) {
+      changeAttributeRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "changePriorityRes")) {
+      changePriorityRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "changeListItemRes")) {
+      changeListItemRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "deleteObjectPoolRes")) {
+      deleteObjectPoolRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "changeStringValueRes")) {
+      changeStringValueRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "changeChildPositionRes")) {
+      changeChildPositionRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "changeObjectLabelRes")) {
+      changeObjectLabelRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "changePolygonPointRes")) {
+      changePolygonPointRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "changePolygonScaleRes")) {
+      changePolygonScaleRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "graphicsContextRes")) {
+      graphicsContextRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "getAttributeValueRes")) {
+      getAttributeValueRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "selectColourMapRes")) {
+      selectColourMapRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "identifyVTRes")) {
+      identifyVTRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "executeExtendedMacroRes")) {
+      executeExtendedMacroRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "lockUnlockMaskRes")) {
+      lockUnlockMaskRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "executeMacroRes")) {
+      executeMacroRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "getMemoryRes")) {
+      getMemoryRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "getNumberOfSoftKeysRes")) {
+      getNumberOfSoftKeysRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "getTextFontDataRes")) {
+      getTextFontDataRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "getHardwareRes")) {
+      getHardwareRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "getSupportedWidecharsRes")) {
+      getSupportedWidecharsRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "getWindowMaskDataRes")) {
+      getWindowMaskDataRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "getSupportedObjectsRes")) {
+      getSupportedObjectsRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "storeVersionRes")) {
+      storeVersionRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "loadVersionRes")) {
+      loadVersionRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "deleteVersionRes")) {
+      deleteVersionRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "extendedGetVersionsRes")) {
+      extendedGetVersionsRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "extendedStoreVersionRes")) {
+      extendedStoreVersionRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "extendedLoadVersionRes")) {
+      extendedLoadVersionRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "extendedDeleteVersionRes")) {
+      extendedDeleteVersionRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "getVersionsRes")) {
+      getVersionsRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "vtUnsupportedVTFunctionInd")) {
+      vtUnsupportedVTFunctionInd().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "vtStatusReq")) {
+      vtStatusReq().set_param(*mp_last);
+      break;
+    }
+    mp_last->error("Field %s does not exist in type @IsobusVTMessageTypes.VT2ECU.", last_name);
+  } break;
+  default:
+    param.type_error("union template", "@IsobusVTMessageTypes.VT2ECU");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void VT2ECU_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 VT2ECU::ALT_softKeyActivationReq:
+single_value.field_softKeyActivationReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_buttonActivationReq:
+single_value.field_buttonActivationReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_pointingEventReq:
+single_value.field_pointingEventReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_vtSelectInputObjectReq:
+single_value.field_vtSelectInputObjectReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_vtESCReq:
+single_value.field_vtESCReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_vtChangeNumericValueReq:
+single_value.field_vtChangeNumericValueReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_vtChangeActiveMaskReq:
+single_value.field_vtChangeActiveMaskReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_vtChangeSoftKeyMaskReq:
+single_value.field_vtChangeSoftKeyMaskReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_vtChangeStringValueReq:
+single_value.field_vtChangeStringValueReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_vtOnUserLayoutHideShowReq:
+single_value.field_vtOnUserLayoutHideShowReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_vtControlAudioSignalTerminationInd:
+single_value.field_vtControlAudioSignalTerminationInd->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_endOfObjectPoolRes:
+single_value.field_endOfObjectPoolRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_vtfunction32VT2ECU:
+single_value.field_vtfunction32VT2ECU->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_vtfunction34VT2ECU:
+single_value.field_vtfunction34VT2ECU->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_vtfunction36VT2ECU:
+single_value.field_vtfunction36VT2ECU->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_vtfunction37VT2ECU:
+single_value.field_vtfunction37VT2ECU->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_vtfunction39VT2ECU:
+single_value.field_vtfunction39VT2ECU->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_escRes:
+single_value.field_escRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_hideShowObjectRes:
+single_value.field_hideShowObjectRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_enableDisableObjectRes:
+single_value.field_enableDisableObjectRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_selectInputObjectRes:
+single_value.field_selectInputObjectRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_controlAudioSignalRes:
+single_value.field_controlAudioSignalRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_setAudioVolumeRes:
+single_value.field_setAudioVolumeRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_changeChildLocationRes:
+single_value.field_changeChildLocationRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_changeSizeRes:
+single_value.field_changeSizeRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_changeBackgroundColourRes:
+single_value.field_changeBackgroundColourRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_changeNumericValueRes:
+single_value.field_changeNumericValueRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_changeEndPointRes:
+single_value.field_changeEndPointRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_changeFontAttributesRes:
+single_value.field_changeFontAttributesRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_changeLineAttributesRes:
+single_value.field_changeLineAttributesRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_changeFillAttributesRes:
+single_value.field_changeFillAttributesRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_changeActiveMaskRes:
+single_value.field_changeActiveMaskRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_changeSoftKeyMaskRes:
+single_value.field_changeSoftKeyMaskRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_changeAttributeRes:
+single_value.field_changeAttributeRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_changePriorityRes:
+single_value.field_changePriorityRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_changeListItemRes:
+single_value.field_changeListItemRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_deleteObjectPoolRes:
+single_value.field_deleteObjectPoolRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_changeStringValueRes:
+single_value.field_changeStringValueRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_changeChildPositionRes:
+single_value.field_changeChildPositionRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_changeObjectLabelRes:
+single_value.field_changeObjectLabelRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_changePolygonPointRes:
+single_value.field_changePolygonPointRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_changePolygonScaleRes:
+single_value.field_changePolygonScaleRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_graphicsContextRes:
+single_value.field_graphicsContextRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_getAttributeValueRes:
+single_value.field_getAttributeValueRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_selectColourMapRes:
+single_value.field_selectColourMapRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_identifyVTRes:
+single_value.field_identifyVTRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_executeExtendedMacroRes:
+single_value.field_executeExtendedMacroRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_lockUnlockMaskRes:
+single_value.field_lockUnlockMaskRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_executeMacroRes:
+single_value.field_executeMacroRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_getMemoryRes:
+single_value.field_getMemoryRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_getNumberOfSoftKeysRes:
+single_value.field_getNumberOfSoftKeysRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_getTextFontDataRes:
+single_value.field_getTextFontDataRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_getHardwareRes:
+single_value.field_getHardwareRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_getSupportedWidecharsRes:
+single_value.field_getSupportedWidecharsRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_getWindowMaskDataRes:
+single_value.field_getWindowMaskDataRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_getSupportedObjectsRes:
+single_value.field_getSupportedObjectsRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_storeVersionRes:
+single_value.field_storeVersionRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_loadVersionRes:
+single_value.field_loadVersionRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_deleteVersionRes:
+single_value.field_deleteVersionRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_extendedGetVersionsRes:
+single_value.field_extendedGetVersionsRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_extendedStoreVersionRes:
+single_value.field_extendedStoreVersionRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_extendedLoadVersionRes:
+single_value.field_extendedLoadVersionRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_extendedDeleteVersionRes:
+single_value.field_extendedDeleteVersionRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_getVersionsRes:
+single_value.field_getVersionsRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_vtUnsupportedVTFunctionInd:
+single_value.field_vtUnsupportedVTFunctionInd->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+case VT2ECU::ALT_vtStatusReq:
+single_value.field_vtStatusReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.VT2ECU");
+return;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @IsobusVTMessageTypes.VT2ECU.");
+}
+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 : "@IsobusVTMessageTypes.VT2ECU");
+}
+
+void ECU2VT::copy_value(const ECU2VT& other_value)
+{
+switch (other_value.union_selection) {
+case ALT_softKeyActivationRes:
+field_softKeyActivationRes = new SoftKeyActivationRes(*other_value.field_softKeyActivationRes);
+break;
+case ALT_buttonActivationRes:
+field_buttonActivationRes = new ButtonActivationRes(*other_value.field_buttonActivationRes);
+break;
+case ALT_pointingEventRes:
+field_pointingEventRes = new PointingEventRes(*other_value.field_pointingEventRes);
+break;
+case ALT_vtSelectInputObjectRes:
+field_vtSelectInputObjectRes = new VTSelectInputObjectRes(*other_value.field_vtSelectInputObjectRes);
+break;
+case ALT_vtESCRes:
+field_vtESCRes = new VTESCRes(*other_value.field_vtESCRes);
+break;
+case ALT_vtChangeNumericValueRes:
+field_vtChangeNumericValueRes = new VTChangeNumericValueRes(*other_value.field_vtChangeNumericValueRes);
+break;
+case ALT_vtChangeActiveMaskRes:
+field_vtChangeActiveMaskRes = new VTChangeActiveMaskRes(*other_value.field_vtChangeActiveMaskRes);
+break;
+case ALT_vtChangeSoftKeyMaskReq:
+field_vtChangeSoftKeyMaskReq = new VTChangeSoftKeyMaskReq(*other_value.field_vtChangeSoftKeyMaskReq);
+break;
+case ALT_vtChangeStringValueRes:
+field_vtChangeStringValueRes = new VTChangeStringValueRes(*other_value.field_vtChangeStringValueRes);
+break;
+case ALT_vtOnUserLayoutHideShowRes:
+field_vtOnUserLayoutHideShowRes = new VTOnUserLayoutHideShowRes(*other_value.field_vtOnUserLayoutHideShowRes);
+break;
+case ALT_objectPoolTransferInd:
+field_objectPoolTransferInd = new ObjectPoolTransferInd(*other_value.field_objectPoolTransferInd);
+break;
+case ALT_endOfObjectPoolReq:
+field_endOfObjectPoolReq = new EndOfObjectPoolReq(*other_value.field_endOfObjectPoolReq);
+break;
+case ALT_vtfunction32ECU2VT:
+field_vtfunction32ECU2VT = new VTfunction32ECU2VT(*other_value.field_vtfunction32ECU2VT);
+break;
+case ALT_vtfunction33ECU2VT:
+field_vtfunction33ECU2VT = new VTfunction33ECU2VT(*other_value.field_vtfunction33ECU2VT);
+break;
+case ALT_vtfunction34ECU2VT:
+field_vtfunction34ECU2VT = new VTfunction34ECU2VT(*other_value.field_vtfunction34ECU2VT);
+break;
+case ALT_vtfunction36ECU2VT:
+field_vtfunction36ECU2VT = new VTfunction36ECU2VT(*other_value.field_vtfunction36ECU2VT);
+break;
+case ALT_vtfunction37ECU2VT:
+field_vtfunction37ECU2VT = new VTfunction37ECU2VT(*other_value.field_vtfunction37ECU2VT);
+break;
+case ALT_auxiliaryInputType2StatusInd:
+field_auxiliaryInputType2StatusInd = new AuxiliaryInputType2StatusInd(*other_value.field_auxiliaryInputType2StatusInd);
+break;
+case ALT_vtfunction39ECU2VT:
+field_vtfunction39ECU2VT = new VTfunction39ECU2VT(*other_value.field_vtfunction39ECU2VT);
+break;
+case ALT_escReq:
+field_escReq = new ESCreq(*other_value.field_escReq);
+break;
+case ALT_hideShowObjectReq:
+field_hideShowObjectReq = new HideShowObjectReq(*other_value.field_hideShowObjectReq);
+break;
+case ALT_enableDisableObjectReq:
+field_enableDisableObjectReq = new EnableDisableObjectReq(*other_value.field_enableDisableObjectReq);
+break;
+case ALT_selectInputObjectReq:
+field_selectInputObjectReq = new SelectInputObjectReq(*other_value.field_selectInputObjectReq);
+break;
+case ALT_controlAudioSignalReq:
+field_controlAudioSignalReq = new ControlAudioSignalReq(*other_value.field_controlAudioSignalReq);
+break;
+case ALT_setAudioVolumeReq:
+field_setAudioVolumeReq = new SetAudioVolumeReq(*other_value.field_setAudioVolumeReq);
+break;
+case ALT_changeChildLocationReq:
+field_changeChildLocationReq = new ChangeChildLocationReq(*other_value.field_changeChildLocationReq);
+break;
+case ALT_changeSizeReq:
+field_changeSizeReq = new ChangeSizeReq(*other_value.field_changeSizeReq);
+break;
+case ALT_changeBackgroundColourReq:
+field_changeBackgroundColourReq = new ChangeBackgroundColourReq(*other_value.field_changeBackgroundColourReq);
+break;
+case ALT_changeNumericValueReq:
+field_changeNumericValueReq = new ChangeNumericValueReq(*other_value.field_changeNumericValueReq);
+break;
+case ALT_changeEndPointReq:
+field_changeEndPointReq = new ChangeEndPointReq(*other_value.field_changeEndPointReq);
+break;
+case ALT_changeFontAttributesReq:
+field_changeFontAttributesReq = new ChangeFontAttributesReq(*other_value.field_changeFontAttributesReq);
+break;
+case ALT_changeLineAttributesReq:
+field_changeLineAttributesReq = new ChangeLineAttributesReq(*other_value.field_changeLineAttributesReq);
+break;
+case ALT_changeFillAttributesReq:
+field_changeFillAttributesReq = new ChangeFillAttributesReq(*other_value.field_changeFillAttributesReq);
+break;
+case ALT_changeActiveMaskReq:
+field_changeActiveMaskReq = new ChangeActiveMaskReq(*other_value.field_changeActiveMaskReq);
+break;
+case ALT_changeSoftKeyMaskRes:
+field_changeSoftKeyMaskRes = new ChangeSoftKeyMaskRes(*other_value.field_changeSoftKeyMaskRes);
+break;
+case ALT_changeAttributeReq:
+field_changeAttributeReq = new ChangeAttributeReq(*other_value.field_changeAttributeReq);
+break;
+case ALT_changePriorityReq:
+field_changePriorityReq = new ChangePriorityReq(*other_value.field_changePriorityReq);
+break;
+case ALT_changeListItemReq:
+field_changeListItemReq = new ChangeListItemReq(*other_value.field_changeListItemReq);
+break;
+case ALT_deleteObjectPoolReq:
+field_deleteObjectPoolReq = new DeleteObjectPoolReq(*other_value.field_deleteObjectPoolReq);
+break;
+case ALT_changeStringValueReq:
+field_changeStringValueReq = new ChangeStringValueReq(*other_value.field_changeStringValueReq);
+break;
+case ALT_changeChildPositionReq:
+field_changeChildPositionReq = new ChangeChildPositionReq(*other_value.field_changeChildPositionReq);
+break;
+case ALT_changeObjectLabelReq:
+field_changeObjectLabelReq = new ChangeObjectLabelReq(*other_value.field_changeObjectLabelReq);
+break;
+case ALT_changePolygonPointReq:
+field_changePolygonPointReq = new ChangePolygonPointReq(*other_value.field_changePolygonPointReq);
+break;
+case ALT_changePolygonScaleReq:
+field_changePolygonScaleReq = new ChangePolygonScaleReq(*other_value.field_changePolygonScaleReq);
+break;
+case ALT_graphicsContextReq:
+field_graphicsContextReq = new GraphicsContextReq(*other_value.field_graphicsContextReq);
+break;
+case ALT_getAttributeValueReq:
+field_getAttributeValueReq = new GetAttributeValueReq(*other_value.field_getAttributeValueReq);
+break;
+case ALT_selectColourMapReq:
+field_selectColourMapReq = new SelectColourMapReq(*other_value.field_selectColourMapReq);
+break;
+case ALT_identifyVTReq:
+field_identifyVTReq = new IdentifyVTReq(*other_value.field_identifyVTReq);
+break;
+case ALT_executeExtendedMacroReq:
+field_executeExtendedMacroReq = new ExecuteExtendedMacroReq(*other_value.field_executeExtendedMacroReq);
+break;
+case ALT_lockUnlockMaskReq:
+field_lockUnlockMaskReq = new LockUnlockMaskReq(*other_value.field_lockUnlockMaskReq);
+break;
+case ALT_executeMacroReq:
+field_executeMacroReq = new ExecuteMacroReq(*other_value.field_executeMacroReq);
+break;
+case ALT_getMemoryReq:
+field_getMemoryReq = new GetMemoryReq(*other_value.field_getMemoryReq);
+break;
+case ALT_getNumberOfSoftKeysReq:
+field_getNumberOfSoftKeysReq = new GetNumberOfSoftKeysReq(*other_value.field_getNumberOfSoftKeysReq);
+break;
+case ALT_getTextFontDataReq:
+field_getTextFontDataReq = new GetTextFontDataReq(*other_value.field_getTextFontDataReq);
+break;
+case ALT_getHardwareReq:
+field_getHardwareReq = new GetHardwareReq(*other_value.field_getHardwareReq);
+break;
+case ALT_getSupportedWidecharsReq:
+field_getSupportedWidecharsReq = new GetSupportedWidecharsReq(*other_value.field_getSupportedWidecharsReq);
+break;
+case ALT_getWindowMaskDataReq:
+field_getWindowMaskDataReq = new GetWindowMaskDataReq(*other_value.field_getWindowMaskDataReq);
+break;
+case ALT_getSupportedObjectsReq:
+field_getSupportedObjectsReq = new GetSupportedObjectsReq(*other_value.field_getSupportedObjectsReq);
+break;
+case ALT_storeVersionReq:
+field_storeVersionReq = new StoreVersionReq(*other_value.field_storeVersionReq);
+break;
+case ALT_loadVersionReq:
+field_loadVersionReq = new LoadVersionReq(*other_value.field_loadVersionReq);
+break;
+case ALT_deleteVersionReq:
+field_deleteVersionReq = new DeleteVersionReq(*other_value.field_deleteVersionReq);
+break;
+case ALT_extendedGetVersionsReq:
+field_extendedGetVersionsReq = new ExtendedGetVersionsReq(*other_value.field_extendedGetVersionsReq);
+break;
+case ALT_extendedStoreVersionReq:
+field_extendedStoreVersionReq = new ExtendedStoreVersionReq(*other_value.field_extendedStoreVersionReq);
+break;
+case ALT_extendedLoadVersionReq:
+field_extendedLoadVersionReq = new ExtendedLoadVersionReq(*other_value.field_extendedLoadVersionReq);
+break;
+case ALT_extendedDeleteVersionReq:
+field_extendedDeleteVersionReq = new ExtendedDeleteVersionReq(*other_value.field_extendedDeleteVersionReq);
+break;
+case ALT_getVersionsReq:
+field_getVersionsReq = new GetVersionsReq(*other_value.field_getVersionsReq);
+break;
+case ALT_unsupportedVTFunctionInd:
+field_unsupportedVTFunctionInd = new UnsupportedVTFunctionInd(*other_value.field_unsupportedVTFunctionInd);
+break;
+case ALT_workingSetMaintenanceReq:
+field_workingSetMaintenanceReq = new WorkingSetMaintenanceReq(*other_value.field_workingSetMaintenanceReq);
+break;
+default:
+TTCN_error("Assignment of an unbound union value of type @IsobusVTMessageTypes.ECU2VT.");
+}
+union_selection = other_value.union_selection;
+}
+
+ECU2VT::ECU2VT()
+{
+union_selection = UNBOUND_VALUE;
+}
+
+ECU2VT::ECU2VT(const ECU2VT& other_value)
+: Base_Type(){
+copy_value(other_value);
+}
+
+ECU2VT::~ECU2VT()
+{
+clean_up();
+}
+
+ECU2VT& ECU2VT::operator=(const ECU2VT& other_value)
+{
+if (this != &other_value) {
+clean_up();
+copy_value(other_value);
+}
+return *this;
+}
+
+boolean ECU2VT::operator==(const ECU2VT& other_value) const
+{
+if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @IsobusVTMessageTypes.ECU2VT.");
+if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @IsobusVTMessageTypes.ECU2VT.");
+if (union_selection != other_value.union_selection) return FALSE;
+switch (union_selection) {
+case ALT_softKeyActivationRes:
+return *field_softKeyActivationRes == *other_value.field_softKeyActivationRes;
+case ALT_buttonActivationRes:
+return *field_buttonActivationRes == *other_value.field_buttonActivationRes;
+case ALT_pointingEventRes:
+return *field_pointingEventRes == *other_value.field_pointingEventRes;
+case ALT_vtSelectInputObjectRes:
+return *field_vtSelectInputObjectRes == *other_value.field_vtSelectInputObjectRes;
+case ALT_vtESCRes:
+return *field_vtESCRes == *other_value.field_vtESCRes;
+case ALT_vtChangeNumericValueRes:
+return *field_vtChangeNumericValueRes == *other_value.field_vtChangeNumericValueRes;
+case ALT_vtChangeActiveMaskRes:
+return *field_vtChangeActiveMaskRes == *other_value.field_vtChangeActiveMaskRes;
+case ALT_vtChangeSoftKeyMaskReq:
+return *field_vtChangeSoftKeyMaskReq == *other_value.field_vtChangeSoftKeyMaskReq;
+case ALT_vtChangeStringValueRes:
+return *field_vtChangeStringValueRes == *other_value.field_vtChangeStringValueRes;
+case ALT_vtOnUserLayoutHideShowRes:
+return *field_vtOnUserLayoutHideShowRes == *other_value.field_vtOnUserLayoutHideShowRes;
+case ALT_objectPoolTransferInd:
+return *field_objectPoolTransferInd == *other_value.field_objectPoolTransferInd;
+case ALT_endOfObjectPoolReq:
+return *field_endOfObjectPoolReq == *other_value.field_endOfObjectPoolReq;
+case ALT_vtfunction32ECU2VT:
+return *field_vtfunction32ECU2VT == *other_value.field_vtfunction32ECU2VT;
+case ALT_vtfunction33ECU2VT:
+return *field_vtfunction33ECU2VT == *other_value.field_vtfunction33ECU2VT;
+case ALT_vtfunction34ECU2VT:
+return *field_vtfunction34ECU2VT == *other_value.field_vtfunction34ECU2VT;
+case ALT_vtfunction36ECU2VT:
+return *field_vtfunction36ECU2VT == *other_value.field_vtfunction36ECU2VT;
+case ALT_vtfunction37ECU2VT:
+return *field_vtfunction37ECU2VT == *other_value.field_vtfunction37ECU2VT;
+case ALT_auxiliaryInputType2StatusInd:
+return *field_auxiliaryInputType2StatusInd == *other_value.field_auxiliaryInputType2StatusInd;
+case ALT_vtfunction39ECU2VT:
+return *field_vtfunction39ECU2VT == *other_value.field_vtfunction39ECU2VT;
+case ALT_escReq:
+return *field_escReq == *other_value.field_escReq;
+case ALT_hideShowObjectReq:
+return *field_hideShowObjectReq == *other_value.field_hideShowObjectReq;
+case ALT_enableDisableObjectReq:
+return *field_enableDisableObjectReq == *other_value.field_enableDisableObjectReq;
+case ALT_selectInputObjectReq:
+return *field_selectInputObjectReq == *other_value.field_selectInputObjectReq;
+case ALT_controlAudioSignalReq:
+return *field_controlAudioSignalReq == *other_value.field_controlAudioSignalReq;
+case ALT_setAudioVolumeReq:
+return *field_setAudioVolumeReq == *other_value.field_setAudioVolumeReq;
+case ALT_changeChildLocationReq:
+return *field_changeChildLocationReq == *other_value.field_changeChildLocationReq;
+case ALT_changeSizeReq:
+return *field_changeSizeReq == *other_value.field_changeSizeReq;
+case ALT_changeBackgroundColourReq:
+return *field_changeBackgroundColourReq == *other_value.field_changeBackgroundColourReq;
+case ALT_changeNumericValueReq:
+return *field_changeNumericValueReq == *other_value.field_changeNumericValueReq;
+case ALT_changeEndPointReq:
+return *field_changeEndPointReq == *other_value.field_changeEndPointReq;
+case ALT_changeFontAttributesReq:
+return *field_changeFontAttributesReq == *other_value.field_changeFontAttributesReq;
+case ALT_changeLineAttributesReq:
+return *field_changeLineAttributesReq == *other_value.field_changeLineAttributesReq;
+case ALT_changeFillAttributesReq:
+return *field_changeFillAttributesReq == *other_value.field_changeFillAttributesReq;
+case ALT_changeActiveMaskReq:
+return *field_changeActiveMaskReq == *other_value.field_changeActiveMaskReq;
+case ALT_changeSoftKeyMaskRes:
+return *field_changeSoftKeyMaskRes == *other_value.field_changeSoftKeyMaskRes;
+case ALT_changeAttributeReq:
+return *field_changeAttributeReq == *other_value.field_changeAttributeReq;
+case ALT_changePriorityReq:
+return *field_changePriorityReq == *other_value.field_changePriorityReq;
+case ALT_changeListItemReq:
+return *field_changeListItemReq == *other_value.field_changeListItemReq;
+case ALT_deleteObjectPoolReq:
+return *field_deleteObjectPoolReq == *other_value.field_deleteObjectPoolReq;
+case ALT_changeStringValueReq:
+return *field_changeStringValueReq == *other_value.field_changeStringValueReq;
+case ALT_changeChildPositionReq:
+return *field_changeChildPositionReq == *other_value.field_changeChildPositionReq;
+case ALT_changeObjectLabelReq:
+return *field_changeObjectLabelReq == *other_value.field_changeObjectLabelReq;
+case ALT_changePolygonPointReq:
+return *field_changePolygonPointReq == *other_value.field_changePolygonPointReq;
+case ALT_changePolygonScaleReq:
+return *field_changePolygonScaleReq == *other_value.field_changePolygonScaleReq;
+case ALT_graphicsContextReq:
+return *field_graphicsContextReq == *other_value.field_graphicsContextReq;
+case ALT_getAttributeValueReq:
+return *field_getAttributeValueReq == *other_value.field_getAttributeValueReq;
+case ALT_selectColourMapReq:
+return *field_selectColourMapReq == *other_value.field_selectColourMapReq;
+case ALT_identifyVTReq:
+return *field_identifyVTReq == *other_value.field_identifyVTReq;
+case ALT_executeExtendedMacroReq:
+return *field_executeExtendedMacroReq == *other_value.field_executeExtendedMacroReq;
+case ALT_lockUnlockMaskReq:
+return *field_lockUnlockMaskReq == *other_value.field_lockUnlockMaskReq;
+case ALT_executeMacroReq:
+return *field_executeMacroReq == *other_value.field_executeMacroReq;
+case ALT_getMemoryReq:
+return *field_getMemoryReq == *other_value.field_getMemoryReq;
+case ALT_getNumberOfSoftKeysReq:
+return *field_getNumberOfSoftKeysReq == *other_value.field_getNumberOfSoftKeysReq;
+case ALT_getTextFontDataReq:
+return *field_getTextFontDataReq == *other_value.field_getTextFontDataReq;
+case ALT_getHardwareReq:
+return *field_getHardwareReq == *other_value.field_getHardwareReq;
+case ALT_getSupportedWidecharsReq:
+return *field_getSupportedWidecharsReq == *other_value.field_getSupportedWidecharsReq;
+case ALT_getWindowMaskDataReq:
+return *field_getWindowMaskDataReq == *other_value.field_getWindowMaskDataReq;
+case ALT_getSupportedObjectsReq:
+return *field_getSupportedObjectsReq == *other_value.field_getSupportedObjectsReq;
+case ALT_storeVersionReq:
+return *field_storeVersionReq == *other_value.field_storeVersionReq;
+case ALT_loadVersionReq:
+return *field_loadVersionReq == *other_value.field_loadVersionReq;
+case ALT_deleteVersionReq:
+return *field_deleteVersionReq == *other_value.field_deleteVersionReq;
+case ALT_extendedGetVersionsReq:
+return *field_extendedGetVersionsReq == *other_value.field_extendedGetVersionsReq;
+case ALT_extendedStoreVersionReq:
+return *field_extendedStoreVersionReq == *other_value.field_extendedStoreVersionReq;
+case ALT_extendedLoadVersionReq:
+return *field_extendedLoadVersionReq == *other_value.field_extendedLoadVersionReq;
+case ALT_extendedDeleteVersionReq:
+return *field_extendedDeleteVersionReq == *other_value.field_extendedDeleteVersionReq;
+case ALT_getVersionsReq:
+return *field_getVersionsReq == *other_value.field_getVersionsReq;
+case ALT_unsupportedVTFunctionInd:
+return *field_unsupportedVTFunctionInd == *other_value.field_unsupportedVTFunctionInd;
+case ALT_workingSetMaintenanceReq:
+return *field_workingSetMaintenanceReq == *other_value.field_workingSetMaintenanceReq;
+default:
+return FALSE;
+}
+}
+
+SoftKeyActivationRes& ECU2VT::softKeyActivationRes()
+{
+if (union_selection != ALT_softKeyActivationRes) {
+clean_up();
+field_softKeyActivationRes = new SoftKeyActivationRes;
+union_selection = ALT_softKeyActivationRes;
+}
+return *field_softKeyActivationRes;
+}
+
+const SoftKeyActivationRes& ECU2VT::softKeyActivationRes() const
+{
+if (union_selection != ALT_softKeyActivationRes) TTCN_error("Using non-selected field softKeyActivationRes in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_softKeyActivationRes;
+}
+
+ButtonActivationRes& ECU2VT::buttonActivationRes()
+{
+if (union_selection != ALT_buttonActivationRes) {
+clean_up();
+field_buttonActivationRes = new ButtonActivationRes;
+union_selection = ALT_buttonActivationRes;
+}
+return *field_buttonActivationRes;
+}
+
+const ButtonActivationRes& ECU2VT::buttonActivationRes() const
+{
+if (union_selection != ALT_buttonActivationRes) TTCN_error("Using non-selected field buttonActivationRes in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_buttonActivationRes;
+}
+
+PointingEventRes& ECU2VT::pointingEventRes()
+{
+if (union_selection != ALT_pointingEventRes) {
+clean_up();
+field_pointingEventRes = new PointingEventRes;
+union_selection = ALT_pointingEventRes;
+}
+return *field_pointingEventRes;
+}
+
+const PointingEventRes& ECU2VT::pointingEventRes() const
+{
+if (union_selection != ALT_pointingEventRes) TTCN_error("Using non-selected field pointingEventRes in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_pointingEventRes;
+}
+
+VTSelectInputObjectRes& ECU2VT::vtSelectInputObjectRes()
+{
+if (union_selection != ALT_vtSelectInputObjectRes) {
+clean_up();
+field_vtSelectInputObjectRes = new VTSelectInputObjectRes;
+union_selection = ALT_vtSelectInputObjectRes;
+}
+return *field_vtSelectInputObjectRes;
+}
+
+const VTSelectInputObjectRes& ECU2VT::vtSelectInputObjectRes() const
+{
+if (union_selection != ALT_vtSelectInputObjectRes) TTCN_error("Using non-selected field vtSelectInputObjectRes in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_vtSelectInputObjectRes;
+}
+
+VTESCRes& ECU2VT::vtESCRes()
+{
+if (union_selection != ALT_vtESCRes) {
+clean_up();
+field_vtESCRes = new VTESCRes;
+union_selection = ALT_vtESCRes;
+}
+return *field_vtESCRes;
+}
+
+const VTESCRes& ECU2VT::vtESCRes() const
+{
+if (union_selection != ALT_vtESCRes) TTCN_error("Using non-selected field vtESCRes in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_vtESCRes;
+}
+
+VTChangeNumericValueRes& ECU2VT::vtChangeNumericValueRes()
+{
+if (union_selection != ALT_vtChangeNumericValueRes) {
+clean_up();
+field_vtChangeNumericValueRes = new VTChangeNumericValueRes;
+union_selection = ALT_vtChangeNumericValueRes;
+}
+return *field_vtChangeNumericValueRes;
+}
+
+const VTChangeNumericValueRes& ECU2VT::vtChangeNumericValueRes() const
+{
+if (union_selection != ALT_vtChangeNumericValueRes) TTCN_error("Using non-selected field vtChangeNumericValueRes in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_vtChangeNumericValueRes;
+}
+
+VTChangeActiveMaskRes& ECU2VT::vtChangeActiveMaskRes()
+{
+if (union_selection != ALT_vtChangeActiveMaskRes) {
+clean_up();
+field_vtChangeActiveMaskRes = new VTChangeActiveMaskRes;
+union_selection = ALT_vtChangeActiveMaskRes;
+}
+return *field_vtChangeActiveMaskRes;
+}
+
+const VTChangeActiveMaskRes& ECU2VT::vtChangeActiveMaskRes() const
+{
+if (union_selection != ALT_vtChangeActiveMaskRes) TTCN_error("Using non-selected field vtChangeActiveMaskRes in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_vtChangeActiveMaskRes;
+}
+
+VTChangeSoftKeyMaskReq& ECU2VT::vtChangeSoftKeyMaskReq()
+{
+if (union_selection != ALT_vtChangeSoftKeyMaskReq) {
+clean_up();
+field_vtChangeSoftKeyMaskReq = new VTChangeSoftKeyMaskReq;
+union_selection = ALT_vtChangeSoftKeyMaskReq;
+}
+return *field_vtChangeSoftKeyMaskReq;
+}
+
+const VTChangeSoftKeyMaskReq& ECU2VT::vtChangeSoftKeyMaskReq() const
+{
+if (union_selection != ALT_vtChangeSoftKeyMaskReq) TTCN_error("Using non-selected field vtChangeSoftKeyMaskReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_vtChangeSoftKeyMaskReq;
+}
+
+VTChangeStringValueRes& ECU2VT::vtChangeStringValueRes()
+{
+if (union_selection != ALT_vtChangeStringValueRes) {
+clean_up();
+field_vtChangeStringValueRes = new VTChangeStringValueRes;
+union_selection = ALT_vtChangeStringValueRes;
+}
+return *field_vtChangeStringValueRes;
+}
+
+const VTChangeStringValueRes& ECU2VT::vtChangeStringValueRes() const
+{
+if (union_selection != ALT_vtChangeStringValueRes) TTCN_error("Using non-selected field vtChangeStringValueRes in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_vtChangeStringValueRes;
+}
+
+VTOnUserLayoutHideShowRes& ECU2VT::vtOnUserLayoutHideShowRes()
+{
+if (union_selection != ALT_vtOnUserLayoutHideShowRes) {
+clean_up();
+field_vtOnUserLayoutHideShowRes = new VTOnUserLayoutHideShowRes;
+union_selection = ALT_vtOnUserLayoutHideShowRes;
+}
+return *field_vtOnUserLayoutHideShowRes;
+}
+
+const VTOnUserLayoutHideShowRes& ECU2VT::vtOnUserLayoutHideShowRes() const
+{
+if (union_selection != ALT_vtOnUserLayoutHideShowRes) TTCN_error("Using non-selected field vtOnUserLayoutHideShowRes in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_vtOnUserLayoutHideShowRes;
+}
+
+ObjectPoolTransferInd& ECU2VT::objectPoolTransferInd()
+{
+if (union_selection != ALT_objectPoolTransferInd) {
+clean_up();
+field_objectPoolTransferInd = new ObjectPoolTransferInd;
+union_selection = ALT_objectPoolTransferInd;
+}
+return *field_objectPoolTransferInd;
+}
+
+const ObjectPoolTransferInd& ECU2VT::objectPoolTransferInd() const
+{
+if (union_selection != ALT_objectPoolTransferInd) TTCN_error("Using non-selected field objectPoolTransferInd in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_objectPoolTransferInd;
+}
+
+EndOfObjectPoolReq& ECU2VT::endOfObjectPoolReq()
+{
+if (union_selection != ALT_endOfObjectPoolReq) {
+clean_up();
+field_endOfObjectPoolReq = new EndOfObjectPoolReq;
+union_selection = ALT_endOfObjectPoolReq;
+}
+return *field_endOfObjectPoolReq;
+}
+
+const EndOfObjectPoolReq& ECU2VT::endOfObjectPoolReq() const
+{
+if (union_selection != ALT_endOfObjectPoolReq) TTCN_error("Using non-selected field endOfObjectPoolReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_endOfObjectPoolReq;
+}
+
+VTfunction32ECU2VT& ECU2VT::vtfunction32ECU2VT()
+{
+if (union_selection != ALT_vtfunction32ECU2VT) {
+clean_up();
+field_vtfunction32ECU2VT = new VTfunction32ECU2VT;
+union_selection = ALT_vtfunction32ECU2VT;
+}
+return *field_vtfunction32ECU2VT;
+}
+
+const VTfunction32ECU2VT& ECU2VT::vtfunction32ECU2VT() const
+{
+if (union_selection != ALT_vtfunction32ECU2VT) TTCN_error("Using non-selected field vtfunction32ECU2VT in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_vtfunction32ECU2VT;
+}
+
+VTfunction33ECU2VT& ECU2VT::vtfunction33ECU2VT()
+{
+if (union_selection != ALT_vtfunction33ECU2VT) {
+clean_up();
+field_vtfunction33ECU2VT = new VTfunction33ECU2VT;
+union_selection = ALT_vtfunction33ECU2VT;
+}
+return *field_vtfunction33ECU2VT;
+}
+
+const VTfunction33ECU2VT& ECU2VT::vtfunction33ECU2VT() const
+{
+if (union_selection != ALT_vtfunction33ECU2VT) TTCN_error("Using non-selected field vtfunction33ECU2VT in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_vtfunction33ECU2VT;
+}
+
+VTfunction34ECU2VT& ECU2VT::vtfunction34ECU2VT()
+{
+if (union_selection != ALT_vtfunction34ECU2VT) {
+clean_up();
+field_vtfunction34ECU2VT = new VTfunction34ECU2VT;
+union_selection = ALT_vtfunction34ECU2VT;
+}
+return *field_vtfunction34ECU2VT;
+}
+
+const VTfunction34ECU2VT& ECU2VT::vtfunction34ECU2VT() const
+{
+if (union_selection != ALT_vtfunction34ECU2VT) TTCN_error("Using non-selected field vtfunction34ECU2VT in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_vtfunction34ECU2VT;
+}
+
+VTfunction36ECU2VT& ECU2VT::vtfunction36ECU2VT()
+{
+if (union_selection != ALT_vtfunction36ECU2VT) {
+clean_up();
+field_vtfunction36ECU2VT = new VTfunction36ECU2VT;
+union_selection = ALT_vtfunction36ECU2VT;
+}
+return *field_vtfunction36ECU2VT;
+}
+
+const VTfunction36ECU2VT& ECU2VT::vtfunction36ECU2VT() const
+{
+if (union_selection != ALT_vtfunction36ECU2VT) TTCN_error("Using non-selected field vtfunction36ECU2VT in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_vtfunction36ECU2VT;
+}
+
+VTfunction37ECU2VT& ECU2VT::vtfunction37ECU2VT()
+{
+if (union_selection != ALT_vtfunction37ECU2VT) {
+clean_up();
+field_vtfunction37ECU2VT = new VTfunction37ECU2VT;
+union_selection = ALT_vtfunction37ECU2VT;
+}
+return *field_vtfunction37ECU2VT;
+}
+
+const VTfunction37ECU2VT& ECU2VT::vtfunction37ECU2VT() const
+{
+if (union_selection != ALT_vtfunction37ECU2VT) TTCN_error("Using non-selected field vtfunction37ECU2VT in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_vtfunction37ECU2VT;
+}
+
+AuxiliaryInputType2StatusInd& ECU2VT::auxiliaryInputType2StatusInd()
+{
+if (union_selection != ALT_auxiliaryInputType2StatusInd) {
+clean_up();
+field_auxiliaryInputType2StatusInd = new AuxiliaryInputType2StatusInd;
+union_selection = ALT_auxiliaryInputType2StatusInd;
+}
+return *field_auxiliaryInputType2StatusInd;
+}
+
+const AuxiliaryInputType2StatusInd& ECU2VT::auxiliaryInputType2StatusInd() const
+{
+if (union_selection != ALT_auxiliaryInputType2StatusInd) TTCN_error("Using non-selected field auxiliaryInputType2StatusInd in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_auxiliaryInputType2StatusInd;
+}
+
+VTfunction39ECU2VT& ECU2VT::vtfunction39ECU2VT()
+{
+if (union_selection != ALT_vtfunction39ECU2VT) {
+clean_up();
+field_vtfunction39ECU2VT = new VTfunction39ECU2VT;
+union_selection = ALT_vtfunction39ECU2VT;
+}
+return *field_vtfunction39ECU2VT;
+}
+
+const VTfunction39ECU2VT& ECU2VT::vtfunction39ECU2VT() const
+{
+if (union_selection != ALT_vtfunction39ECU2VT) TTCN_error("Using non-selected field vtfunction39ECU2VT in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_vtfunction39ECU2VT;
+}
+
+ESCreq& ECU2VT::escReq()
+{
+if (union_selection != ALT_escReq) {
+clean_up();
+field_escReq = new ESCreq;
+union_selection = ALT_escReq;
+}
+return *field_escReq;
+}
+
+const ESCreq& ECU2VT::escReq() const
+{
+if (union_selection != ALT_escReq) TTCN_error("Using non-selected field escReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_escReq;
+}
+
+HideShowObjectReq& ECU2VT::hideShowObjectReq()
+{
+if (union_selection != ALT_hideShowObjectReq) {
+clean_up();
+field_hideShowObjectReq = new HideShowObjectReq;
+union_selection = ALT_hideShowObjectReq;
+}
+return *field_hideShowObjectReq;
+}
+
+const HideShowObjectReq& ECU2VT::hideShowObjectReq() const
+{
+if (union_selection != ALT_hideShowObjectReq) TTCN_error("Using non-selected field hideShowObjectReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_hideShowObjectReq;
+}
+
+EnableDisableObjectReq& ECU2VT::enableDisableObjectReq()
+{
+if (union_selection != ALT_enableDisableObjectReq) {
+clean_up();
+field_enableDisableObjectReq = new EnableDisableObjectReq;
+union_selection = ALT_enableDisableObjectReq;
+}
+return *field_enableDisableObjectReq;
+}
+
+const EnableDisableObjectReq& ECU2VT::enableDisableObjectReq() const
+{
+if (union_selection != ALT_enableDisableObjectReq) TTCN_error("Using non-selected field enableDisableObjectReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_enableDisableObjectReq;
+}
+
+SelectInputObjectReq& ECU2VT::selectInputObjectReq()
+{
+if (union_selection != ALT_selectInputObjectReq) {
+clean_up();
+field_selectInputObjectReq = new SelectInputObjectReq;
+union_selection = ALT_selectInputObjectReq;
+}
+return *field_selectInputObjectReq;
+}
+
+const SelectInputObjectReq& ECU2VT::selectInputObjectReq() const
+{
+if (union_selection != ALT_selectInputObjectReq) TTCN_error("Using non-selected field selectInputObjectReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_selectInputObjectReq;
+}
+
+ControlAudioSignalReq& ECU2VT::controlAudioSignalReq()
+{
+if (union_selection != ALT_controlAudioSignalReq) {
+clean_up();
+field_controlAudioSignalReq = new ControlAudioSignalReq;
+union_selection = ALT_controlAudioSignalReq;
+}
+return *field_controlAudioSignalReq;
+}
+
+const ControlAudioSignalReq& ECU2VT::controlAudioSignalReq() const
+{
+if (union_selection != ALT_controlAudioSignalReq) TTCN_error("Using non-selected field controlAudioSignalReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_controlAudioSignalReq;
+}
+
+SetAudioVolumeReq& ECU2VT::setAudioVolumeReq()
+{
+if (union_selection != ALT_setAudioVolumeReq) {
+clean_up();
+field_setAudioVolumeReq = new SetAudioVolumeReq;
+union_selection = ALT_setAudioVolumeReq;
+}
+return *field_setAudioVolumeReq;
+}
+
+const SetAudioVolumeReq& ECU2VT::setAudioVolumeReq() const
+{
+if (union_selection != ALT_setAudioVolumeReq) TTCN_error("Using non-selected field setAudioVolumeReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_setAudioVolumeReq;
+}
+
+ChangeChildLocationReq& ECU2VT::changeChildLocationReq()
+{
+if (union_selection != ALT_changeChildLocationReq) {
+clean_up();
+field_changeChildLocationReq = new ChangeChildLocationReq;
+union_selection = ALT_changeChildLocationReq;
+}
+return *field_changeChildLocationReq;
+}
+
+const ChangeChildLocationReq& ECU2VT::changeChildLocationReq() const
+{
+if (union_selection != ALT_changeChildLocationReq) TTCN_error("Using non-selected field changeChildLocationReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_changeChildLocationReq;
+}
+
+ChangeSizeReq& ECU2VT::changeSizeReq()
+{
+if (union_selection != ALT_changeSizeReq) {
+clean_up();
+field_changeSizeReq = new ChangeSizeReq;
+union_selection = ALT_changeSizeReq;
+}
+return *field_changeSizeReq;
+}
+
+const ChangeSizeReq& ECU2VT::changeSizeReq() const
+{
+if (union_selection != ALT_changeSizeReq) TTCN_error("Using non-selected field changeSizeReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_changeSizeReq;
+}
+
+ChangeBackgroundColourReq& ECU2VT::changeBackgroundColourReq()
+{
+if (union_selection != ALT_changeBackgroundColourReq) {
+clean_up();
+field_changeBackgroundColourReq = new ChangeBackgroundColourReq;
+union_selection = ALT_changeBackgroundColourReq;
+}
+return *field_changeBackgroundColourReq;
+}
+
+const ChangeBackgroundColourReq& ECU2VT::changeBackgroundColourReq() const
+{
+if (union_selection != ALT_changeBackgroundColourReq) TTCN_error("Using non-selected field changeBackgroundColourReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_changeBackgroundColourReq;
+}
+
+ChangeNumericValueReq& ECU2VT::changeNumericValueReq()
+{
+if (union_selection != ALT_changeNumericValueReq) {
+clean_up();
+field_changeNumericValueReq = new ChangeNumericValueReq;
+union_selection = ALT_changeNumericValueReq;
+}
+return *field_changeNumericValueReq;
+}
+
+const ChangeNumericValueReq& ECU2VT::changeNumericValueReq() const
+{
+if (union_selection != ALT_changeNumericValueReq) TTCN_error("Using non-selected field changeNumericValueReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_changeNumericValueReq;
+}
+
+ChangeEndPointReq& ECU2VT::changeEndPointReq()
+{
+if (union_selection != ALT_changeEndPointReq) {
+clean_up();
+field_changeEndPointReq = new ChangeEndPointReq;
+union_selection = ALT_changeEndPointReq;
+}
+return *field_changeEndPointReq;
+}
+
+const ChangeEndPointReq& ECU2VT::changeEndPointReq() const
+{
+if (union_selection != ALT_changeEndPointReq) TTCN_error("Using non-selected field changeEndPointReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_changeEndPointReq;
+}
+
+ChangeFontAttributesReq& ECU2VT::changeFontAttributesReq()
+{
+if (union_selection != ALT_changeFontAttributesReq) {
+clean_up();
+field_changeFontAttributesReq = new ChangeFontAttributesReq;
+union_selection = ALT_changeFontAttributesReq;
+}
+return *field_changeFontAttributesReq;
+}
+
+const ChangeFontAttributesReq& ECU2VT::changeFontAttributesReq() const
+{
+if (union_selection != ALT_changeFontAttributesReq) TTCN_error("Using non-selected field changeFontAttributesReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_changeFontAttributesReq;
+}
+
+ChangeLineAttributesReq& ECU2VT::changeLineAttributesReq()
+{
+if (union_selection != ALT_changeLineAttributesReq) {
+clean_up();
+field_changeLineAttributesReq = new ChangeLineAttributesReq;
+union_selection = ALT_changeLineAttributesReq;
+}
+return *field_changeLineAttributesReq;
+}
+
+const ChangeLineAttributesReq& ECU2VT::changeLineAttributesReq() const
+{
+if (union_selection != ALT_changeLineAttributesReq) TTCN_error("Using non-selected field changeLineAttributesReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_changeLineAttributesReq;
+}
+
+ChangeFillAttributesReq& ECU2VT::changeFillAttributesReq()
+{
+if (union_selection != ALT_changeFillAttributesReq) {
+clean_up();
+field_changeFillAttributesReq = new ChangeFillAttributesReq;
+union_selection = ALT_changeFillAttributesReq;
+}
+return *field_changeFillAttributesReq;
+}
+
+const ChangeFillAttributesReq& ECU2VT::changeFillAttributesReq() const
+{
+if (union_selection != ALT_changeFillAttributesReq) TTCN_error("Using non-selected field changeFillAttributesReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_changeFillAttributesReq;
+}
+
+ChangeActiveMaskReq& ECU2VT::changeActiveMaskReq()
+{
+if (union_selection != ALT_changeActiveMaskReq) {
+clean_up();
+field_changeActiveMaskReq = new ChangeActiveMaskReq;
+union_selection = ALT_changeActiveMaskReq;
+}
+return *field_changeActiveMaskReq;
+}
+
+const ChangeActiveMaskReq& ECU2VT::changeActiveMaskReq() const
+{
+if (union_selection != ALT_changeActiveMaskReq) TTCN_error("Using non-selected field changeActiveMaskReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_changeActiveMaskReq;
+}
+
+ChangeSoftKeyMaskRes& ECU2VT::changeSoftKeyMaskRes()
+{
+if (union_selection != ALT_changeSoftKeyMaskRes) {
+clean_up();
+field_changeSoftKeyMaskRes = new ChangeSoftKeyMaskRes;
+union_selection = ALT_changeSoftKeyMaskRes;
+}
+return *field_changeSoftKeyMaskRes;
+}
+
+const ChangeSoftKeyMaskRes& ECU2VT::changeSoftKeyMaskRes() const
+{
+if (union_selection != ALT_changeSoftKeyMaskRes) TTCN_error("Using non-selected field changeSoftKeyMaskRes in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_changeSoftKeyMaskRes;
+}
+
+ChangeAttributeReq& ECU2VT::changeAttributeReq()
+{
+if (union_selection != ALT_changeAttributeReq) {
+clean_up();
+field_changeAttributeReq = new ChangeAttributeReq;
+union_selection = ALT_changeAttributeReq;
+}
+return *field_changeAttributeReq;
+}
+
+const ChangeAttributeReq& ECU2VT::changeAttributeReq() const
+{
+if (union_selection != ALT_changeAttributeReq) TTCN_error("Using non-selected field changeAttributeReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_changeAttributeReq;
+}
+
+ChangePriorityReq& ECU2VT::changePriorityReq()
+{
+if (union_selection != ALT_changePriorityReq) {
+clean_up();
+field_changePriorityReq = new ChangePriorityReq;
+union_selection = ALT_changePriorityReq;
+}
+return *field_changePriorityReq;
+}
+
+const ChangePriorityReq& ECU2VT::changePriorityReq() const
+{
+if (union_selection != ALT_changePriorityReq) TTCN_error("Using non-selected field changePriorityReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_changePriorityReq;
+}
+
+ChangeListItemReq& ECU2VT::changeListItemReq()
+{
+if (union_selection != ALT_changeListItemReq) {
+clean_up();
+field_changeListItemReq = new ChangeListItemReq;
+union_selection = ALT_changeListItemReq;
+}
+return *field_changeListItemReq;
+}
+
+const ChangeListItemReq& ECU2VT::changeListItemReq() const
+{
+if (union_selection != ALT_changeListItemReq) TTCN_error("Using non-selected field changeListItemReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_changeListItemReq;
+}
+
+DeleteObjectPoolReq& ECU2VT::deleteObjectPoolReq()
+{
+if (union_selection != ALT_deleteObjectPoolReq) {
+clean_up();
+field_deleteObjectPoolReq = new DeleteObjectPoolReq;
+union_selection = ALT_deleteObjectPoolReq;
+}
+return *field_deleteObjectPoolReq;
+}
+
+const DeleteObjectPoolReq& ECU2VT::deleteObjectPoolReq() const
+{
+if (union_selection != ALT_deleteObjectPoolReq) TTCN_error("Using non-selected field deleteObjectPoolReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_deleteObjectPoolReq;
+}
+
+ChangeStringValueReq& ECU2VT::changeStringValueReq()
+{
+if (union_selection != ALT_changeStringValueReq) {
+clean_up();
+field_changeStringValueReq = new ChangeStringValueReq;
+union_selection = ALT_changeStringValueReq;
+}
+return *field_changeStringValueReq;
+}
+
+const ChangeStringValueReq& ECU2VT::changeStringValueReq() const
+{
+if (union_selection != ALT_changeStringValueReq) TTCN_error("Using non-selected field changeStringValueReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_changeStringValueReq;
+}
+
+ChangeChildPositionReq& ECU2VT::changeChildPositionReq()
+{
+if (union_selection != ALT_changeChildPositionReq) {
+clean_up();
+field_changeChildPositionReq = new ChangeChildPositionReq;
+union_selection = ALT_changeChildPositionReq;
+}
+return *field_changeChildPositionReq;
+}
+
+const ChangeChildPositionReq& ECU2VT::changeChildPositionReq() const
+{
+if (union_selection != ALT_changeChildPositionReq) TTCN_error("Using non-selected field changeChildPositionReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_changeChildPositionReq;
+}
+
+ChangeObjectLabelReq& ECU2VT::changeObjectLabelReq()
+{
+if (union_selection != ALT_changeObjectLabelReq) {
+clean_up();
+field_changeObjectLabelReq = new ChangeObjectLabelReq;
+union_selection = ALT_changeObjectLabelReq;
+}
+return *field_changeObjectLabelReq;
+}
+
+const ChangeObjectLabelReq& ECU2VT::changeObjectLabelReq() const
+{
+if (union_selection != ALT_changeObjectLabelReq) TTCN_error("Using non-selected field changeObjectLabelReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_changeObjectLabelReq;
+}
+
+ChangePolygonPointReq& ECU2VT::changePolygonPointReq()
+{
+if (union_selection != ALT_changePolygonPointReq) {
+clean_up();
+field_changePolygonPointReq = new ChangePolygonPointReq;
+union_selection = ALT_changePolygonPointReq;
+}
+return *field_changePolygonPointReq;
+}
+
+const ChangePolygonPointReq& ECU2VT::changePolygonPointReq() const
+{
+if (union_selection != ALT_changePolygonPointReq) TTCN_error("Using non-selected field changePolygonPointReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_changePolygonPointReq;
+}
+
+ChangePolygonScaleReq& ECU2VT::changePolygonScaleReq()
+{
+if (union_selection != ALT_changePolygonScaleReq) {
+clean_up();
+field_changePolygonScaleReq = new ChangePolygonScaleReq;
+union_selection = ALT_changePolygonScaleReq;
+}
+return *field_changePolygonScaleReq;
+}
+
+const ChangePolygonScaleReq& ECU2VT::changePolygonScaleReq() const
+{
+if (union_selection != ALT_changePolygonScaleReq) TTCN_error("Using non-selected field changePolygonScaleReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_changePolygonScaleReq;
+}
+
+GraphicsContextReq& ECU2VT::graphicsContextReq()
+{
+if (union_selection != ALT_graphicsContextReq) {
+clean_up();
+field_graphicsContextReq = new GraphicsContextReq;
+union_selection = ALT_graphicsContextReq;
+}
+return *field_graphicsContextReq;
+}
+
+const GraphicsContextReq& ECU2VT::graphicsContextReq() const
+{
+if (union_selection != ALT_graphicsContextReq) TTCN_error("Using non-selected field graphicsContextReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_graphicsContextReq;
+}
+
+GetAttributeValueReq& ECU2VT::getAttributeValueReq()
+{
+if (union_selection != ALT_getAttributeValueReq) {
+clean_up();
+field_getAttributeValueReq = new GetAttributeValueReq;
+union_selection = ALT_getAttributeValueReq;
+}
+return *field_getAttributeValueReq;
+}
+
+const GetAttributeValueReq& ECU2VT::getAttributeValueReq() const
+{
+if (union_selection != ALT_getAttributeValueReq) TTCN_error("Using non-selected field getAttributeValueReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_getAttributeValueReq;
+}
+
+SelectColourMapReq& ECU2VT::selectColourMapReq()
+{
+if (union_selection != ALT_selectColourMapReq) {
+clean_up();
+field_selectColourMapReq = new SelectColourMapReq;
+union_selection = ALT_selectColourMapReq;
+}
+return *field_selectColourMapReq;
+}
+
+const SelectColourMapReq& ECU2VT::selectColourMapReq() const
+{
+if (union_selection != ALT_selectColourMapReq) TTCN_error("Using non-selected field selectColourMapReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_selectColourMapReq;
+}
+
+IdentifyVTReq& ECU2VT::identifyVTReq()
+{
+if (union_selection != ALT_identifyVTReq) {
+clean_up();
+field_identifyVTReq = new IdentifyVTReq;
+union_selection = ALT_identifyVTReq;
+}
+return *field_identifyVTReq;
+}
+
+const IdentifyVTReq& ECU2VT::identifyVTReq() const
+{
+if (union_selection != ALT_identifyVTReq) TTCN_error("Using non-selected field identifyVTReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_identifyVTReq;
+}
+
+ExecuteExtendedMacroReq& ECU2VT::executeExtendedMacroReq()
+{
+if (union_selection != ALT_executeExtendedMacroReq) {
+clean_up();
+field_executeExtendedMacroReq = new ExecuteExtendedMacroReq;
+union_selection = ALT_executeExtendedMacroReq;
+}
+return *field_executeExtendedMacroReq;
+}
+
+const ExecuteExtendedMacroReq& ECU2VT::executeExtendedMacroReq() const
+{
+if (union_selection != ALT_executeExtendedMacroReq) TTCN_error("Using non-selected field executeExtendedMacroReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_executeExtendedMacroReq;
+}
+
+LockUnlockMaskReq& ECU2VT::lockUnlockMaskReq()
+{
+if (union_selection != ALT_lockUnlockMaskReq) {
+clean_up();
+field_lockUnlockMaskReq = new LockUnlockMaskReq;
+union_selection = ALT_lockUnlockMaskReq;
+}
+return *field_lockUnlockMaskReq;
+}
+
+const LockUnlockMaskReq& ECU2VT::lockUnlockMaskReq() const
+{
+if (union_selection != ALT_lockUnlockMaskReq) TTCN_error("Using non-selected field lockUnlockMaskReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_lockUnlockMaskReq;
+}
+
+ExecuteMacroReq& ECU2VT::executeMacroReq()
+{
+if (union_selection != ALT_executeMacroReq) {
+clean_up();
+field_executeMacroReq = new ExecuteMacroReq;
+union_selection = ALT_executeMacroReq;
+}
+return *field_executeMacroReq;
+}
+
+const ExecuteMacroReq& ECU2VT::executeMacroReq() const
+{
+if (union_selection != ALT_executeMacroReq) TTCN_error("Using non-selected field executeMacroReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_executeMacroReq;
+}
+
+GetMemoryReq& ECU2VT::getMemoryReq()
+{
+if (union_selection != ALT_getMemoryReq) {
+clean_up();
+field_getMemoryReq = new GetMemoryReq;
+union_selection = ALT_getMemoryReq;
+}
+return *field_getMemoryReq;
+}
+
+const GetMemoryReq& ECU2VT::getMemoryReq() const
+{
+if (union_selection != ALT_getMemoryReq) TTCN_error("Using non-selected field getMemoryReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_getMemoryReq;
+}
+
+GetNumberOfSoftKeysReq& ECU2VT::getNumberOfSoftKeysReq()
+{
+if (union_selection != ALT_getNumberOfSoftKeysReq) {
+clean_up();
+field_getNumberOfSoftKeysReq = new GetNumberOfSoftKeysReq;
+union_selection = ALT_getNumberOfSoftKeysReq;
+}
+return *field_getNumberOfSoftKeysReq;
+}
+
+const GetNumberOfSoftKeysReq& ECU2VT::getNumberOfSoftKeysReq() const
+{
+if (union_selection != ALT_getNumberOfSoftKeysReq) TTCN_error("Using non-selected field getNumberOfSoftKeysReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_getNumberOfSoftKeysReq;
+}
+
+GetTextFontDataReq& ECU2VT::getTextFontDataReq()
+{
+if (union_selection != ALT_getTextFontDataReq) {
+clean_up();
+field_getTextFontDataReq = new GetTextFontDataReq;
+union_selection = ALT_getTextFontDataReq;
+}
+return *field_getTextFontDataReq;
+}
+
+const GetTextFontDataReq& ECU2VT::getTextFontDataReq() const
+{
+if (union_selection != ALT_getTextFontDataReq) TTCN_error("Using non-selected field getTextFontDataReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_getTextFontDataReq;
+}
+
+GetHardwareReq& ECU2VT::getHardwareReq()
+{
+if (union_selection != ALT_getHardwareReq) {
+clean_up();
+field_getHardwareReq = new GetHardwareReq;
+union_selection = ALT_getHardwareReq;
+}
+return *field_getHardwareReq;
+}
+
+const GetHardwareReq& ECU2VT::getHardwareReq() const
+{
+if (union_selection != ALT_getHardwareReq) TTCN_error("Using non-selected field getHardwareReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_getHardwareReq;
+}
+
+GetSupportedWidecharsReq& ECU2VT::getSupportedWidecharsReq()
+{
+if (union_selection != ALT_getSupportedWidecharsReq) {
+clean_up();
+field_getSupportedWidecharsReq = new GetSupportedWidecharsReq;
+union_selection = ALT_getSupportedWidecharsReq;
+}
+return *field_getSupportedWidecharsReq;
+}
+
+const GetSupportedWidecharsReq& ECU2VT::getSupportedWidecharsReq() const
+{
+if (union_selection != ALT_getSupportedWidecharsReq) TTCN_error("Using non-selected field getSupportedWidecharsReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_getSupportedWidecharsReq;
+}
+
+GetWindowMaskDataReq& ECU2VT::getWindowMaskDataReq()
+{
+if (union_selection != ALT_getWindowMaskDataReq) {
+clean_up();
+field_getWindowMaskDataReq = new GetWindowMaskDataReq;
+union_selection = ALT_getWindowMaskDataReq;
+}
+return *field_getWindowMaskDataReq;
+}
+
+const GetWindowMaskDataReq& ECU2VT::getWindowMaskDataReq() const
+{
+if (union_selection != ALT_getWindowMaskDataReq) TTCN_error("Using non-selected field getWindowMaskDataReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_getWindowMaskDataReq;
+}
+
+GetSupportedObjectsReq& ECU2VT::getSupportedObjectsReq()
+{
+if (union_selection != ALT_getSupportedObjectsReq) {
+clean_up();
+field_getSupportedObjectsReq = new GetSupportedObjectsReq;
+union_selection = ALT_getSupportedObjectsReq;
+}
+return *field_getSupportedObjectsReq;
+}
+
+const GetSupportedObjectsReq& ECU2VT::getSupportedObjectsReq() const
+{
+if (union_selection != ALT_getSupportedObjectsReq) TTCN_error("Using non-selected field getSupportedObjectsReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_getSupportedObjectsReq;
+}
+
+StoreVersionReq& ECU2VT::storeVersionReq()
+{
+if (union_selection != ALT_storeVersionReq) {
+clean_up();
+field_storeVersionReq = new StoreVersionReq;
+union_selection = ALT_storeVersionReq;
+}
+return *field_storeVersionReq;
+}
+
+const StoreVersionReq& ECU2VT::storeVersionReq() const
+{
+if (union_selection != ALT_storeVersionReq) TTCN_error("Using non-selected field storeVersionReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_storeVersionReq;
+}
+
+LoadVersionReq& ECU2VT::loadVersionReq()
+{
+if (union_selection != ALT_loadVersionReq) {
+clean_up();
+field_loadVersionReq = new LoadVersionReq;
+union_selection = ALT_loadVersionReq;
+}
+return *field_loadVersionReq;
+}
+
+const LoadVersionReq& ECU2VT::loadVersionReq() const
+{
+if (union_selection != ALT_loadVersionReq) TTCN_error("Using non-selected field loadVersionReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_loadVersionReq;
+}
+
+DeleteVersionReq& ECU2VT::deleteVersionReq()
+{
+if (union_selection != ALT_deleteVersionReq) {
+clean_up();
+field_deleteVersionReq = new DeleteVersionReq;
+union_selection = ALT_deleteVersionReq;
+}
+return *field_deleteVersionReq;
+}
+
+const DeleteVersionReq& ECU2VT::deleteVersionReq() const
+{
+if (union_selection != ALT_deleteVersionReq) TTCN_error("Using non-selected field deleteVersionReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_deleteVersionReq;
+}
+
+ExtendedGetVersionsReq& ECU2VT::extendedGetVersionsReq()
+{
+if (union_selection != ALT_extendedGetVersionsReq) {
+clean_up();
+field_extendedGetVersionsReq = new ExtendedGetVersionsReq;
+union_selection = ALT_extendedGetVersionsReq;
+}
+return *field_extendedGetVersionsReq;
+}
+
+const ExtendedGetVersionsReq& ECU2VT::extendedGetVersionsReq() const
+{
+if (union_selection != ALT_extendedGetVersionsReq) TTCN_error("Using non-selected field extendedGetVersionsReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_extendedGetVersionsReq;
+}
+
+ExtendedStoreVersionReq& ECU2VT::extendedStoreVersionReq()
+{
+if (union_selection != ALT_extendedStoreVersionReq) {
+clean_up();
+field_extendedStoreVersionReq = new ExtendedStoreVersionReq;
+union_selection = ALT_extendedStoreVersionReq;
+}
+return *field_extendedStoreVersionReq;
+}
+
+const ExtendedStoreVersionReq& ECU2VT::extendedStoreVersionReq() const
+{
+if (union_selection != ALT_extendedStoreVersionReq) TTCN_error("Using non-selected field extendedStoreVersionReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_extendedStoreVersionReq;
+}
+
+ExtendedLoadVersionReq& ECU2VT::extendedLoadVersionReq()
+{
+if (union_selection != ALT_extendedLoadVersionReq) {
+clean_up();
+field_extendedLoadVersionReq = new ExtendedLoadVersionReq;
+union_selection = ALT_extendedLoadVersionReq;
+}
+return *field_extendedLoadVersionReq;
+}
+
+const ExtendedLoadVersionReq& ECU2VT::extendedLoadVersionReq() const
+{
+if (union_selection != ALT_extendedLoadVersionReq) TTCN_error("Using non-selected field extendedLoadVersionReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_extendedLoadVersionReq;
+}
+
+ExtendedDeleteVersionReq& ECU2VT::extendedDeleteVersionReq()
+{
+if (union_selection != ALT_extendedDeleteVersionReq) {
+clean_up();
+field_extendedDeleteVersionReq = new ExtendedDeleteVersionReq;
+union_selection = ALT_extendedDeleteVersionReq;
+}
+return *field_extendedDeleteVersionReq;
+}
+
+const ExtendedDeleteVersionReq& ECU2VT::extendedDeleteVersionReq() const
+{
+if (union_selection != ALT_extendedDeleteVersionReq) TTCN_error("Using non-selected field extendedDeleteVersionReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_extendedDeleteVersionReq;
+}
+
+GetVersionsReq& ECU2VT::getVersionsReq()
+{
+if (union_selection != ALT_getVersionsReq) {
+clean_up();
+field_getVersionsReq = new GetVersionsReq;
+union_selection = ALT_getVersionsReq;
+}
+return *field_getVersionsReq;
+}
+
+const GetVersionsReq& ECU2VT::getVersionsReq() const
+{
+if (union_selection != ALT_getVersionsReq) TTCN_error("Using non-selected field getVersionsReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_getVersionsReq;
+}
+
+UnsupportedVTFunctionInd& ECU2VT::unsupportedVTFunctionInd()
+{
+if (union_selection != ALT_unsupportedVTFunctionInd) {
+clean_up();
+field_unsupportedVTFunctionInd = new UnsupportedVTFunctionInd;
+union_selection = ALT_unsupportedVTFunctionInd;
+}
+return *field_unsupportedVTFunctionInd;
+}
+
+const UnsupportedVTFunctionInd& ECU2VT::unsupportedVTFunctionInd() const
+{
+if (union_selection != ALT_unsupportedVTFunctionInd) TTCN_error("Using non-selected field unsupportedVTFunctionInd in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_unsupportedVTFunctionInd;
+}
+
+WorkingSetMaintenanceReq& ECU2VT::workingSetMaintenanceReq()
+{
+if (union_selection != ALT_workingSetMaintenanceReq) {
+clean_up();
+field_workingSetMaintenanceReq = new WorkingSetMaintenanceReq;
+union_selection = ALT_workingSetMaintenanceReq;
+}
+return *field_workingSetMaintenanceReq;
+}
+
+const WorkingSetMaintenanceReq& ECU2VT::workingSetMaintenanceReq() const
+{
+if (union_selection != ALT_workingSetMaintenanceReq) TTCN_error("Using non-selected field workingSetMaintenanceReq in a value of union type @IsobusVTMessageTypes.ECU2VT.");
+return *field_workingSetMaintenanceReq;
+}
+
+boolean ECU2VT::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 @IsobusVTMessageTypes.ECU2VT.");
+return union_selection == checked_selection;
+}
+
+boolean ECU2VT::is_bound() const
+{
+  return union_selection != UNBOUND_VALUE;
+}
+
+boolean ECU2VT::is_value() const
+{
+switch (union_selection) {
+case UNBOUND_VALUE: return FALSE;
+case ALT_softKeyActivationRes: return field_softKeyActivationRes->is_value();
+case ALT_buttonActivationRes: return field_buttonActivationRes->is_value();
+case ALT_pointingEventRes: return field_pointingEventRes->is_value();
+case ALT_vtSelectInputObjectRes: return field_vtSelectInputObjectRes->is_value();
+case ALT_vtESCRes: return field_vtESCRes->is_value();
+case ALT_vtChangeNumericValueRes: return field_vtChangeNumericValueRes->is_value();
+case ALT_vtChangeActiveMaskRes: return field_vtChangeActiveMaskRes->is_value();
+case ALT_vtChangeSoftKeyMaskReq: return field_vtChangeSoftKeyMaskReq->is_value();
+case ALT_vtChangeStringValueRes: return field_vtChangeStringValueRes->is_value();
+case ALT_vtOnUserLayoutHideShowRes: return field_vtOnUserLayoutHideShowRes->is_value();
+case ALT_objectPoolTransferInd: return field_objectPoolTransferInd->is_value();
+case ALT_endOfObjectPoolReq: return field_endOfObjectPoolReq->is_value();
+case ALT_vtfunction32ECU2VT: return field_vtfunction32ECU2VT->is_value();
+case ALT_vtfunction33ECU2VT: return field_vtfunction33ECU2VT->is_value();
+case ALT_vtfunction34ECU2VT: return field_vtfunction34ECU2VT->is_value();
+case ALT_vtfunction36ECU2VT: return field_vtfunction36ECU2VT->is_value();
+case ALT_vtfunction37ECU2VT: return field_vtfunction37ECU2VT->is_value();
+case ALT_auxiliaryInputType2StatusInd: return field_auxiliaryInputType2StatusInd->is_value();
+case ALT_vtfunction39ECU2VT: return field_vtfunction39ECU2VT->is_value();
+case ALT_escReq: return field_escReq->is_value();
+case ALT_hideShowObjectReq: return field_hideShowObjectReq->is_value();
+case ALT_enableDisableObjectReq: return field_enableDisableObjectReq->is_value();
+case ALT_selectInputObjectReq: return field_selectInputObjectReq->is_value();
+case ALT_controlAudioSignalReq: return field_controlAudioSignalReq->is_value();
+case ALT_setAudioVolumeReq: return field_setAudioVolumeReq->is_value();
+case ALT_changeChildLocationReq: return field_changeChildLocationReq->is_value();
+case ALT_changeSizeReq: return field_changeSizeReq->is_value();
+case ALT_changeBackgroundColourReq: return field_changeBackgroundColourReq->is_value();
+case ALT_changeNumericValueReq: return field_changeNumericValueReq->is_value();
+case ALT_changeEndPointReq: return field_changeEndPointReq->is_value();
+case ALT_changeFontAttributesReq: return field_changeFontAttributesReq->is_value();
+case ALT_changeLineAttributesReq: return field_changeLineAttributesReq->is_value();
+case ALT_changeFillAttributesReq: return field_changeFillAttributesReq->is_value();
+case ALT_changeActiveMaskReq: return field_changeActiveMaskReq->is_value();
+case ALT_changeSoftKeyMaskRes: return field_changeSoftKeyMaskRes->is_value();
+case ALT_changeAttributeReq: return field_changeAttributeReq->is_value();
+case ALT_changePriorityReq: return field_changePriorityReq->is_value();
+case ALT_changeListItemReq: return field_changeListItemReq->is_value();
+case ALT_deleteObjectPoolReq: return field_deleteObjectPoolReq->is_value();
+case ALT_changeStringValueReq: return field_changeStringValueReq->is_value();
+case ALT_changeChildPositionReq: return field_changeChildPositionReq->is_value();
+case ALT_changeObjectLabelReq: return field_changeObjectLabelReq->is_value();
+case ALT_changePolygonPointReq: return field_changePolygonPointReq->is_value();
+case ALT_changePolygonScaleReq: return field_changePolygonScaleReq->is_value();
+case ALT_graphicsContextReq: return field_graphicsContextReq->is_value();
+case ALT_getAttributeValueReq: return field_getAttributeValueReq->is_value();
+case ALT_selectColourMapReq: return field_selectColourMapReq->is_value();
+case ALT_identifyVTReq: return field_identifyVTReq->is_value();
+case ALT_executeExtendedMacroReq: return field_executeExtendedMacroReq->is_value();
+case ALT_lockUnlockMaskReq: return field_lockUnlockMaskReq->is_value();
+case ALT_executeMacroReq: return field_executeMacroReq->is_value();
+case ALT_getMemoryReq: return field_getMemoryReq->is_value();
+case ALT_getNumberOfSoftKeysReq: return field_getNumberOfSoftKeysReq->is_value();
+case ALT_getTextFontDataReq: return field_getTextFontDataReq->is_value();
+case ALT_getHardwareReq: return field_getHardwareReq->is_value();
+case ALT_getSupportedWidecharsReq: return field_getSupportedWidecharsReq->is_value();
+case ALT_getWindowMaskDataReq: return field_getWindowMaskDataReq->is_value();
+case ALT_getSupportedObjectsReq: return field_getSupportedObjectsReq->is_value();
+case ALT_storeVersionReq: return field_storeVersionReq->is_value();
+case ALT_loadVersionReq: return field_loadVersionReq->is_value();
+case ALT_deleteVersionReq: return field_deleteVersionReq->is_value();
+case ALT_extendedGetVersionsReq: return field_extendedGetVersionsReq->is_value();
+case ALT_extendedStoreVersionReq: return field_extendedStoreVersionReq->is_value();
+case ALT_extendedLoadVersionReq: return field_extendedLoadVersionReq->is_value();
+case ALT_extendedDeleteVersionReq: return field_extendedDeleteVersionReq->is_value();
+case ALT_getVersionsReq: return field_getVersionsReq->is_value();
+case ALT_unsupportedVTFunctionInd: return field_unsupportedVTFunctionInd->is_value();
+case ALT_workingSetMaintenanceReq: return field_workingSetMaintenanceReq->is_value();
+default: TTCN_error("Invalid selection in union is_bound");}
+}
+
+void ECU2VT::clean_up()
+{
+switch (union_selection) {
+case ALT_softKeyActivationRes:
+  delete field_softKeyActivationRes;
+  break;
+case ALT_buttonActivationRes:
+  delete field_buttonActivationRes;
+  break;
+case ALT_pointingEventRes:
+  delete field_pointingEventRes;
+  break;
+case ALT_vtSelectInputObjectRes:
+  delete field_vtSelectInputObjectRes;
+  break;
+case ALT_vtESCRes:
+  delete field_vtESCRes;
+  break;
+case ALT_vtChangeNumericValueRes:
+  delete field_vtChangeNumericValueRes;
+  break;
+case ALT_vtChangeActiveMaskRes:
+  delete field_vtChangeActiveMaskRes;
+  break;
+case ALT_vtChangeSoftKeyMaskReq:
+  delete field_vtChangeSoftKeyMaskReq;
+  break;
+case ALT_vtChangeStringValueRes:
+  delete field_vtChangeStringValueRes;
+  break;
+case ALT_vtOnUserLayoutHideShowRes:
+  delete field_vtOnUserLayoutHideShowRes;
+  break;
+case ALT_objectPoolTransferInd:
+  delete field_objectPoolTransferInd;
+  break;
+case ALT_endOfObjectPoolReq:
+  delete field_endOfObjectPoolReq;
+  break;
+case ALT_vtfunction32ECU2VT:
+  delete field_vtfunction32ECU2VT;
+  break;
+case ALT_vtfunction33ECU2VT:
+  delete field_vtfunction33ECU2VT;
+  break;
+case ALT_vtfunction34ECU2VT:
+  delete field_vtfunction34ECU2VT;
+  break;
+case ALT_vtfunction36ECU2VT:
+  delete field_vtfunction36ECU2VT;
+  break;
+case ALT_vtfunction37ECU2VT:
+  delete field_vtfunction37ECU2VT;
+  break;
+case ALT_auxiliaryInputType2StatusInd:
+  delete field_auxiliaryInputType2StatusInd;
+  break;
+case ALT_vtfunction39ECU2VT:
+  delete field_vtfunction39ECU2VT;
+  break;
+case ALT_escReq:
+  delete field_escReq;
+  break;
+case ALT_hideShowObjectReq:
+  delete field_hideShowObjectReq;
+  break;
+case ALT_enableDisableObjectReq:
+  delete field_enableDisableObjectReq;
+  break;
+case ALT_selectInputObjectReq:
+  delete field_selectInputObjectReq;
+  break;
+case ALT_controlAudioSignalReq:
+  delete field_controlAudioSignalReq;
+  break;
+case ALT_setAudioVolumeReq:
+  delete field_setAudioVolumeReq;
+  break;
+case ALT_changeChildLocationReq:
+  delete field_changeChildLocationReq;
+  break;
+case ALT_changeSizeReq:
+  delete field_changeSizeReq;
+  break;
+case ALT_changeBackgroundColourReq:
+  delete field_changeBackgroundColourReq;
+  break;
+case ALT_changeNumericValueReq:
+  delete field_changeNumericValueReq;
+  break;
+case ALT_changeEndPointReq:
+  delete field_changeEndPointReq;
+  break;
+case ALT_changeFontAttributesReq:
+  delete field_changeFontAttributesReq;
+  break;
+case ALT_changeLineAttributesReq:
+  delete field_changeLineAttributesReq;
+  break;
+case ALT_changeFillAttributesReq:
+  delete field_changeFillAttributesReq;
+  break;
+case ALT_changeActiveMaskReq:
+  delete field_changeActiveMaskReq;
+  break;
+case ALT_changeSoftKeyMaskRes:
+  delete field_changeSoftKeyMaskRes;
+  break;
+case ALT_changeAttributeReq:
+  delete field_changeAttributeReq;
+  break;
+case ALT_changePriorityReq:
+  delete field_changePriorityReq;
+  break;
+case ALT_changeListItemReq:
+  delete field_changeListItemReq;
+  break;
+case ALT_deleteObjectPoolReq:
+  delete field_deleteObjectPoolReq;
+  break;
+case ALT_changeStringValueReq:
+  delete field_changeStringValueReq;
+  break;
+case ALT_changeChildPositionReq:
+  delete field_changeChildPositionReq;
+  break;
+case ALT_changeObjectLabelReq:
+  delete field_changeObjectLabelReq;
+  break;
+case ALT_changePolygonPointReq:
+  delete field_changePolygonPointReq;
+  break;
+case ALT_changePolygonScaleReq:
+  delete field_changePolygonScaleReq;
+  break;
+case ALT_graphicsContextReq:
+  delete field_graphicsContextReq;
+  break;
+case ALT_getAttributeValueReq:
+  delete field_getAttributeValueReq;
+  break;
+case ALT_selectColourMapReq:
+  delete field_selectColourMapReq;
+  break;
+case ALT_identifyVTReq:
+  delete field_identifyVTReq;
+  break;
+case ALT_executeExtendedMacroReq:
+  delete field_executeExtendedMacroReq;
+  break;
+case ALT_lockUnlockMaskReq:
+  delete field_lockUnlockMaskReq;
+  break;
+case ALT_executeMacroReq:
+  delete field_executeMacroReq;
+  break;
+case ALT_getMemoryReq:
+  delete field_getMemoryReq;
+  break;
+case ALT_getNumberOfSoftKeysReq:
+  delete field_getNumberOfSoftKeysReq;
+  break;
+case ALT_getTextFontDataReq:
+  delete field_getTextFontDataReq;
+  break;
+case ALT_getHardwareReq:
+  delete field_getHardwareReq;
+  break;
+case ALT_getSupportedWidecharsReq:
+  delete field_getSupportedWidecharsReq;
+  break;
+case ALT_getWindowMaskDataReq:
+  delete field_getWindowMaskDataReq;
+  break;
+case ALT_getSupportedObjectsReq:
+  delete field_getSupportedObjectsReq;
+  break;
+case ALT_storeVersionReq:
+  delete field_storeVersionReq;
+  break;
+case ALT_loadVersionReq:
+  delete field_loadVersionReq;
+  break;
+case ALT_deleteVersionReq:
+  delete field_deleteVersionReq;
+  break;
+case ALT_extendedGetVersionsReq:
+  delete field_extendedGetVersionsReq;
+  break;
+case ALT_extendedStoreVersionReq:
+  delete field_extendedStoreVersionReq;
+  break;
+case ALT_extendedLoadVersionReq:
+  delete field_extendedLoadVersionReq;
+  break;
+case ALT_extendedDeleteVersionReq:
+  delete field_extendedDeleteVersionReq;
+  break;
+case ALT_getVersionsReq:
+  delete field_getVersionsReq;
+  break;
+case ALT_unsupportedVTFunctionInd:
+  delete field_unsupportedVTFunctionInd;
+  break;
+case ALT_workingSetMaintenanceReq:
+  delete field_workingSetMaintenanceReq;
+  break;
+default:
+  break;
+}
+union_selection = UNBOUND_VALUE;
+}
+
+void ECU2VT::log() const
+{
+switch (union_selection) {
+case ALT_softKeyActivationRes:
+TTCN_Logger::log_event_str("{ softKeyActivationRes := ");
+field_softKeyActivationRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_buttonActivationRes:
+TTCN_Logger::log_event_str("{ buttonActivationRes := ");
+field_buttonActivationRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_pointingEventRes:
+TTCN_Logger::log_event_str("{ pointingEventRes := ");
+field_pointingEventRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_vtSelectInputObjectRes:
+TTCN_Logger::log_event_str("{ vtSelectInputObjectRes := ");
+field_vtSelectInputObjectRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_vtESCRes:
+TTCN_Logger::log_event_str("{ vtESCRes := ");
+field_vtESCRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_vtChangeNumericValueRes:
+TTCN_Logger::log_event_str("{ vtChangeNumericValueRes := ");
+field_vtChangeNumericValueRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_vtChangeActiveMaskRes:
+TTCN_Logger::log_event_str("{ vtChangeActiveMaskRes := ");
+field_vtChangeActiveMaskRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_vtChangeSoftKeyMaskReq:
+TTCN_Logger::log_event_str("{ vtChangeSoftKeyMaskReq := ");
+field_vtChangeSoftKeyMaskReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_vtChangeStringValueRes:
+TTCN_Logger::log_event_str("{ vtChangeStringValueRes := ");
+field_vtChangeStringValueRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_vtOnUserLayoutHideShowRes:
+TTCN_Logger::log_event_str("{ vtOnUserLayoutHideShowRes := ");
+field_vtOnUserLayoutHideShowRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_objectPoolTransferInd:
+TTCN_Logger::log_event_str("{ objectPoolTransferInd := ");
+field_objectPoolTransferInd->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_endOfObjectPoolReq:
+TTCN_Logger::log_event_str("{ endOfObjectPoolReq := ");
+field_endOfObjectPoolReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_vtfunction32ECU2VT:
+TTCN_Logger::log_event_str("{ vtfunction32ECU2VT := ");
+field_vtfunction32ECU2VT->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_vtfunction33ECU2VT:
+TTCN_Logger::log_event_str("{ vtfunction33ECU2VT := ");
+field_vtfunction33ECU2VT->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_vtfunction34ECU2VT:
+TTCN_Logger::log_event_str("{ vtfunction34ECU2VT := ");
+field_vtfunction34ECU2VT->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_vtfunction36ECU2VT:
+TTCN_Logger::log_event_str("{ vtfunction36ECU2VT := ");
+field_vtfunction36ECU2VT->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_vtfunction37ECU2VT:
+TTCN_Logger::log_event_str("{ vtfunction37ECU2VT := ");
+field_vtfunction37ECU2VT->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_auxiliaryInputType2StatusInd:
+TTCN_Logger::log_event_str("{ auxiliaryInputType2StatusInd := ");
+field_auxiliaryInputType2StatusInd->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_vtfunction39ECU2VT:
+TTCN_Logger::log_event_str("{ vtfunction39ECU2VT := ");
+field_vtfunction39ECU2VT->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_escReq:
+TTCN_Logger::log_event_str("{ escReq := ");
+field_escReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_hideShowObjectReq:
+TTCN_Logger::log_event_str("{ hideShowObjectReq := ");
+field_hideShowObjectReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_enableDisableObjectReq:
+TTCN_Logger::log_event_str("{ enableDisableObjectReq := ");
+field_enableDisableObjectReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_selectInputObjectReq:
+TTCN_Logger::log_event_str("{ selectInputObjectReq := ");
+field_selectInputObjectReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_controlAudioSignalReq:
+TTCN_Logger::log_event_str("{ controlAudioSignalReq := ");
+field_controlAudioSignalReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_setAudioVolumeReq:
+TTCN_Logger::log_event_str("{ setAudioVolumeReq := ");
+field_setAudioVolumeReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_changeChildLocationReq:
+TTCN_Logger::log_event_str("{ changeChildLocationReq := ");
+field_changeChildLocationReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_changeSizeReq:
+TTCN_Logger::log_event_str("{ changeSizeReq := ");
+field_changeSizeReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_changeBackgroundColourReq:
+TTCN_Logger::log_event_str("{ changeBackgroundColourReq := ");
+field_changeBackgroundColourReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_changeNumericValueReq:
+TTCN_Logger::log_event_str("{ changeNumericValueReq := ");
+field_changeNumericValueReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_changeEndPointReq:
+TTCN_Logger::log_event_str("{ changeEndPointReq := ");
+field_changeEndPointReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_changeFontAttributesReq:
+TTCN_Logger::log_event_str("{ changeFontAttributesReq := ");
+field_changeFontAttributesReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_changeLineAttributesReq:
+TTCN_Logger::log_event_str("{ changeLineAttributesReq := ");
+field_changeLineAttributesReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_changeFillAttributesReq:
+TTCN_Logger::log_event_str("{ changeFillAttributesReq := ");
+field_changeFillAttributesReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_changeActiveMaskReq:
+TTCN_Logger::log_event_str("{ changeActiveMaskReq := ");
+field_changeActiveMaskReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_changeSoftKeyMaskRes:
+TTCN_Logger::log_event_str("{ changeSoftKeyMaskRes := ");
+field_changeSoftKeyMaskRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_changeAttributeReq:
+TTCN_Logger::log_event_str("{ changeAttributeReq := ");
+field_changeAttributeReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_changePriorityReq:
+TTCN_Logger::log_event_str("{ changePriorityReq := ");
+field_changePriorityReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_changeListItemReq:
+TTCN_Logger::log_event_str("{ changeListItemReq := ");
+field_changeListItemReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_deleteObjectPoolReq:
+TTCN_Logger::log_event_str("{ deleteObjectPoolReq := ");
+field_deleteObjectPoolReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_changeStringValueReq:
+TTCN_Logger::log_event_str("{ changeStringValueReq := ");
+field_changeStringValueReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_changeChildPositionReq:
+TTCN_Logger::log_event_str("{ changeChildPositionReq := ");
+field_changeChildPositionReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_changeObjectLabelReq:
+TTCN_Logger::log_event_str("{ changeObjectLabelReq := ");
+field_changeObjectLabelReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_changePolygonPointReq:
+TTCN_Logger::log_event_str("{ changePolygonPointReq := ");
+field_changePolygonPointReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_changePolygonScaleReq:
+TTCN_Logger::log_event_str("{ changePolygonScaleReq := ");
+field_changePolygonScaleReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_graphicsContextReq:
+TTCN_Logger::log_event_str("{ graphicsContextReq := ");
+field_graphicsContextReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_getAttributeValueReq:
+TTCN_Logger::log_event_str("{ getAttributeValueReq := ");
+field_getAttributeValueReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_selectColourMapReq:
+TTCN_Logger::log_event_str("{ selectColourMapReq := ");
+field_selectColourMapReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_identifyVTReq:
+TTCN_Logger::log_event_str("{ identifyVTReq := ");
+field_identifyVTReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_executeExtendedMacroReq:
+TTCN_Logger::log_event_str("{ executeExtendedMacroReq := ");
+field_executeExtendedMacroReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_lockUnlockMaskReq:
+TTCN_Logger::log_event_str("{ lockUnlockMaskReq := ");
+field_lockUnlockMaskReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_executeMacroReq:
+TTCN_Logger::log_event_str("{ executeMacroReq := ");
+field_executeMacroReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_getMemoryReq:
+TTCN_Logger::log_event_str("{ getMemoryReq := ");
+field_getMemoryReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_getNumberOfSoftKeysReq:
+TTCN_Logger::log_event_str("{ getNumberOfSoftKeysReq := ");
+field_getNumberOfSoftKeysReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_getTextFontDataReq:
+TTCN_Logger::log_event_str("{ getTextFontDataReq := ");
+field_getTextFontDataReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_getHardwareReq:
+TTCN_Logger::log_event_str("{ getHardwareReq := ");
+field_getHardwareReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_getSupportedWidecharsReq:
+TTCN_Logger::log_event_str("{ getSupportedWidecharsReq := ");
+field_getSupportedWidecharsReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_getWindowMaskDataReq:
+TTCN_Logger::log_event_str("{ getWindowMaskDataReq := ");
+field_getWindowMaskDataReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_getSupportedObjectsReq:
+TTCN_Logger::log_event_str("{ getSupportedObjectsReq := ");
+field_getSupportedObjectsReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_storeVersionReq:
+TTCN_Logger::log_event_str("{ storeVersionReq := ");
+field_storeVersionReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_loadVersionReq:
+TTCN_Logger::log_event_str("{ loadVersionReq := ");
+field_loadVersionReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_deleteVersionReq:
+TTCN_Logger::log_event_str("{ deleteVersionReq := ");
+field_deleteVersionReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_extendedGetVersionsReq:
+TTCN_Logger::log_event_str("{ extendedGetVersionsReq := ");
+field_extendedGetVersionsReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_extendedStoreVersionReq:
+TTCN_Logger::log_event_str("{ extendedStoreVersionReq := ");
+field_extendedStoreVersionReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_extendedLoadVersionReq:
+TTCN_Logger::log_event_str("{ extendedLoadVersionReq := ");
+field_extendedLoadVersionReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_extendedDeleteVersionReq:
+TTCN_Logger::log_event_str("{ extendedDeleteVersionReq := ");
+field_extendedDeleteVersionReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_getVersionsReq:
+TTCN_Logger::log_event_str("{ getVersionsReq := ");
+field_getVersionsReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_unsupportedVTFunctionInd:
+TTCN_Logger::log_event_str("{ unsupportedVTFunctionInd := ");
+field_unsupportedVTFunctionInd->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_workingSetMaintenanceReq:
+TTCN_Logger::log_event_str("{ workingSetMaintenanceReq := ");
+field_workingSetMaintenanceReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+default:
+TTCN_Logger::log_event_unbound();
+}
+}
+
+void ECU2VT::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, "softKeyActivationRes")) {
+    softKeyActivationRes().set_param(*mp_last);
+    if (!softKeyActivationRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "buttonActivationRes")) {
+    buttonActivationRes().set_param(*mp_last);
+    if (!buttonActivationRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "pointingEventRes")) {
+    pointingEventRes().set_param(*mp_last);
+    if (!pointingEventRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "vtSelectInputObjectRes")) {
+    vtSelectInputObjectRes().set_param(*mp_last);
+    if (!vtSelectInputObjectRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "vtESCRes")) {
+    vtESCRes().set_param(*mp_last);
+    if (!vtESCRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "vtChangeNumericValueRes")) {
+    vtChangeNumericValueRes().set_param(*mp_last);
+    if (!vtChangeNumericValueRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "vtChangeActiveMaskRes")) {
+    vtChangeActiveMaskRes().set_param(*mp_last);
+    if (!vtChangeActiveMaskRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "vtChangeSoftKeyMaskReq")) {
+    vtChangeSoftKeyMaskReq().set_param(*mp_last);
+    if (!vtChangeSoftKeyMaskReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "vtChangeStringValueRes")) {
+    vtChangeStringValueRes().set_param(*mp_last);
+    if (!vtChangeStringValueRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "vtOnUserLayoutHideShowRes")) {
+    vtOnUserLayoutHideShowRes().set_param(*mp_last);
+    if (!vtOnUserLayoutHideShowRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "objectPoolTransferInd")) {
+    objectPoolTransferInd().set_param(*mp_last);
+    if (!objectPoolTransferInd().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "endOfObjectPoolReq")) {
+    endOfObjectPoolReq().set_param(*mp_last);
+    if (!endOfObjectPoolReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "vtfunction32ECU2VT")) {
+    vtfunction32ECU2VT().set_param(*mp_last);
+    if (!vtfunction32ECU2VT().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "vtfunction33ECU2VT")) {
+    vtfunction33ECU2VT().set_param(*mp_last);
+    if (!vtfunction33ECU2VT().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "vtfunction34ECU2VT")) {
+    vtfunction34ECU2VT().set_param(*mp_last);
+    if (!vtfunction34ECU2VT().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "vtfunction36ECU2VT")) {
+    vtfunction36ECU2VT().set_param(*mp_last);
+    if (!vtfunction36ECU2VT().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "vtfunction37ECU2VT")) {
+    vtfunction37ECU2VT().set_param(*mp_last);
+    if (!vtfunction37ECU2VT().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "auxiliaryInputType2StatusInd")) {
+    auxiliaryInputType2StatusInd().set_param(*mp_last);
+    if (!auxiliaryInputType2StatusInd().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "vtfunction39ECU2VT")) {
+    vtfunction39ECU2VT().set_param(*mp_last);
+    if (!vtfunction39ECU2VT().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "escReq")) {
+    escReq().set_param(*mp_last);
+    if (!escReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "hideShowObjectReq")) {
+    hideShowObjectReq().set_param(*mp_last);
+    if (!hideShowObjectReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "enableDisableObjectReq")) {
+    enableDisableObjectReq().set_param(*mp_last);
+    if (!enableDisableObjectReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "selectInputObjectReq")) {
+    selectInputObjectReq().set_param(*mp_last);
+    if (!selectInputObjectReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "controlAudioSignalReq")) {
+    controlAudioSignalReq().set_param(*mp_last);
+    if (!controlAudioSignalReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "setAudioVolumeReq")) {
+    setAudioVolumeReq().set_param(*mp_last);
+    if (!setAudioVolumeReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "changeChildLocationReq")) {
+    changeChildLocationReq().set_param(*mp_last);
+    if (!changeChildLocationReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "changeSizeReq")) {
+    changeSizeReq().set_param(*mp_last);
+    if (!changeSizeReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "changeBackgroundColourReq")) {
+    changeBackgroundColourReq().set_param(*mp_last);
+    if (!changeBackgroundColourReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "changeNumericValueReq")) {
+    changeNumericValueReq().set_param(*mp_last);
+    if (!changeNumericValueReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "changeEndPointReq")) {
+    changeEndPointReq().set_param(*mp_last);
+    if (!changeEndPointReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "changeFontAttributesReq")) {
+    changeFontAttributesReq().set_param(*mp_last);
+    if (!changeFontAttributesReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "changeLineAttributesReq")) {
+    changeLineAttributesReq().set_param(*mp_last);
+    if (!changeLineAttributesReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "changeFillAttributesReq")) {
+    changeFillAttributesReq().set_param(*mp_last);
+    if (!changeFillAttributesReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "changeActiveMaskReq")) {
+    changeActiveMaskReq().set_param(*mp_last);
+    if (!changeActiveMaskReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "changeSoftKeyMaskRes")) {
+    changeSoftKeyMaskRes().set_param(*mp_last);
+    if (!changeSoftKeyMaskRes().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "changeAttributeReq")) {
+    changeAttributeReq().set_param(*mp_last);
+    if (!changeAttributeReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "changePriorityReq")) {
+    changePriorityReq().set_param(*mp_last);
+    if (!changePriorityReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "changeListItemReq")) {
+    changeListItemReq().set_param(*mp_last);
+    if (!changeListItemReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "deleteObjectPoolReq")) {
+    deleteObjectPoolReq().set_param(*mp_last);
+    if (!deleteObjectPoolReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "changeStringValueReq")) {
+    changeStringValueReq().set_param(*mp_last);
+    if (!changeStringValueReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "changeChildPositionReq")) {
+    changeChildPositionReq().set_param(*mp_last);
+    if (!changeChildPositionReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "changeObjectLabelReq")) {
+    changeObjectLabelReq().set_param(*mp_last);
+    if (!changeObjectLabelReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "changePolygonPointReq")) {
+    changePolygonPointReq().set_param(*mp_last);
+    if (!changePolygonPointReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "changePolygonScaleReq")) {
+    changePolygonScaleReq().set_param(*mp_last);
+    if (!changePolygonScaleReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "graphicsContextReq")) {
+    graphicsContextReq().set_param(*mp_last);
+    if (!graphicsContextReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "getAttributeValueReq")) {
+    getAttributeValueReq().set_param(*mp_last);
+    if (!getAttributeValueReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "selectColourMapReq")) {
+    selectColourMapReq().set_param(*mp_last);
+    if (!selectColourMapReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "identifyVTReq")) {
+    identifyVTReq().set_param(*mp_last);
+    if (!identifyVTReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "executeExtendedMacroReq")) {
+    executeExtendedMacroReq().set_param(*mp_last);
+    if (!executeExtendedMacroReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "lockUnlockMaskReq")) {
+    lockUnlockMaskReq().set_param(*mp_last);
+    if (!lockUnlockMaskReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "executeMacroReq")) {
+    executeMacroReq().set_param(*mp_last);
+    if (!executeMacroReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "getMemoryReq")) {
+    getMemoryReq().set_param(*mp_last);
+    if (!getMemoryReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "getNumberOfSoftKeysReq")) {
+    getNumberOfSoftKeysReq().set_param(*mp_last);
+    if (!getNumberOfSoftKeysReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "getTextFontDataReq")) {
+    getTextFontDataReq().set_param(*mp_last);
+    if (!getTextFontDataReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "getHardwareReq")) {
+    getHardwareReq().set_param(*mp_last);
+    if (!getHardwareReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "getSupportedWidecharsReq")) {
+    getSupportedWidecharsReq().set_param(*mp_last);
+    if (!getSupportedWidecharsReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "getWindowMaskDataReq")) {
+    getWindowMaskDataReq().set_param(*mp_last);
+    if (!getWindowMaskDataReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "getSupportedObjectsReq")) {
+    getSupportedObjectsReq().set_param(*mp_last);
+    if (!getSupportedObjectsReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "storeVersionReq")) {
+    storeVersionReq().set_param(*mp_last);
+    if (!storeVersionReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "loadVersionReq")) {
+    loadVersionReq().set_param(*mp_last);
+    if (!loadVersionReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "deleteVersionReq")) {
+    deleteVersionReq().set_param(*mp_last);
+    if (!deleteVersionReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "extendedGetVersionsReq")) {
+    extendedGetVersionsReq().set_param(*mp_last);
+    if (!extendedGetVersionsReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "extendedStoreVersionReq")) {
+    extendedStoreVersionReq().set_param(*mp_last);
+    if (!extendedStoreVersionReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "extendedLoadVersionReq")) {
+    extendedLoadVersionReq().set_param(*mp_last);
+    if (!extendedLoadVersionReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "extendedDeleteVersionReq")) {
+    extendedDeleteVersionReq().set_param(*mp_last);
+    if (!extendedDeleteVersionReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "getVersionsReq")) {
+    getVersionsReq().set_param(*mp_last);
+    if (!getVersionsReq().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "unsupportedVTFunctionInd")) {
+    unsupportedVTFunctionInd().set_param(*mp_last);
+    if (!unsupportedVTFunctionInd().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "workingSetMaintenanceReq")) {
+    workingSetMaintenanceReq().set_param(*mp_last);
+    if (!workingSetMaintenanceReq().is_bound()) clean_up();
+    return;
+  }
+  mp_last->error("Field %s does not exist in type @IsobusVTMessageTypes.ECU2VT.", last_name);
+}
+
+void ECU2VT::set_implicit_omit()
+{
+switch (union_selection) {
+case ALT_softKeyActivationRes:
+field_softKeyActivationRes->set_implicit_omit(); break;
+case ALT_buttonActivationRes:
+field_buttonActivationRes->set_implicit_omit(); break;
+case ALT_pointingEventRes:
+field_pointingEventRes->set_implicit_omit(); break;
+case ALT_vtSelectInputObjectRes:
+field_vtSelectInputObjectRes->set_implicit_omit(); break;
+case ALT_vtESCRes:
+field_vtESCRes->set_implicit_omit(); break;
+case ALT_vtChangeNumericValueRes:
+field_vtChangeNumericValueRes->set_implicit_omit(); break;
+case ALT_vtChangeActiveMaskRes:
+field_vtChangeActiveMaskRes->set_implicit_omit(); break;
+case ALT_vtChangeSoftKeyMaskReq:
+field_vtChangeSoftKeyMaskReq->set_implicit_omit(); break;
+case ALT_vtChangeStringValueRes:
+field_vtChangeStringValueRes->set_implicit_omit(); break;
+case ALT_vtOnUserLayoutHideShowRes:
+field_vtOnUserLayoutHideShowRes->set_implicit_omit(); break;
+case ALT_objectPoolTransferInd:
+field_objectPoolTransferInd->set_implicit_omit(); break;
+case ALT_endOfObjectPoolReq:
+field_endOfObjectPoolReq->set_implicit_omit(); break;
+case ALT_vtfunction32ECU2VT:
+field_vtfunction32ECU2VT->set_implicit_omit(); break;
+case ALT_vtfunction33ECU2VT:
+field_vtfunction33ECU2VT->set_implicit_omit(); break;
+case ALT_vtfunction34ECU2VT:
+field_vtfunction34ECU2VT->set_implicit_omit(); break;
+case ALT_vtfunction36ECU2VT:
+field_vtfunction36ECU2VT->set_implicit_omit(); break;
+case ALT_vtfunction37ECU2VT:
+field_vtfunction37ECU2VT->set_implicit_omit(); break;
+case ALT_auxiliaryInputType2StatusInd:
+field_auxiliaryInputType2StatusInd->set_implicit_omit(); break;
+case ALT_vtfunction39ECU2VT:
+field_vtfunction39ECU2VT->set_implicit_omit(); break;
+case ALT_escReq:
+field_escReq->set_implicit_omit(); break;
+case ALT_hideShowObjectReq:
+field_hideShowObjectReq->set_implicit_omit(); break;
+case ALT_enableDisableObjectReq:
+field_enableDisableObjectReq->set_implicit_omit(); break;
+case ALT_selectInputObjectReq:
+field_selectInputObjectReq->set_implicit_omit(); break;
+case ALT_controlAudioSignalReq:
+field_controlAudioSignalReq->set_implicit_omit(); break;
+case ALT_setAudioVolumeReq:
+field_setAudioVolumeReq->set_implicit_omit(); break;
+case ALT_changeChildLocationReq:
+field_changeChildLocationReq->set_implicit_omit(); break;
+case ALT_changeSizeReq:
+field_changeSizeReq->set_implicit_omit(); break;
+case ALT_changeBackgroundColourReq:
+field_changeBackgroundColourReq->set_implicit_omit(); break;
+case ALT_changeNumericValueReq:
+field_changeNumericValueReq->set_implicit_omit(); break;
+case ALT_changeEndPointReq:
+field_changeEndPointReq->set_implicit_omit(); break;
+case ALT_changeFontAttributesReq:
+field_changeFontAttributesReq->set_implicit_omit(); break;
+case ALT_changeLineAttributesReq:
+field_changeLineAttributesReq->set_implicit_omit(); break;
+case ALT_changeFillAttributesReq:
+field_changeFillAttributesReq->set_implicit_omit(); break;
+case ALT_changeActiveMaskReq:
+field_changeActiveMaskReq->set_implicit_omit(); break;
+case ALT_changeSoftKeyMaskRes:
+field_changeSoftKeyMaskRes->set_implicit_omit(); break;
+case ALT_changeAttributeReq:
+field_changeAttributeReq->set_implicit_omit(); break;
+case ALT_changePriorityReq:
+field_changePriorityReq->set_implicit_omit(); break;
+case ALT_changeListItemReq:
+field_changeListItemReq->set_implicit_omit(); break;
+case ALT_deleteObjectPoolReq:
+field_deleteObjectPoolReq->set_implicit_omit(); break;
+case ALT_changeStringValueReq:
+field_changeStringValueReq->set_implicit_omit(); break;
+case ALT_changeChildPositionReq:
+field_changeChildPositionReq->set_implicit_omit(); break;
+case ALT_changeObjectLabelReq:
+field_changeObjectLabelReq->set_implicit_omit(); break;
+case ALT_changePolygonPointReq:
+field_changePolygonPointReq->set_implicit_omit(); break;
+case ALT_changePolygonScaleReq:
+field_changePolygonScaleReq->set_implicit_omit(); break;
+case ALT_graphicsContextReq:
+field_graphicsContextReq->set_implicit_omit(); break;
+case ALT_getAttributeValueReq:
+field_getAttributeValueReq->set_implicit_omit(); break;
+case ALT_selectColourMapReq:
+field_selectColourMapReq->set_implicit_omit(); break;
+case ALT_identifyVTReq:
+field_identifyVTReq->set_implicit_omit(); break;
+case ALT_executeExtendedMacroReq:
+field_executeExtendedMacroReq->set_implicit_omit(); break;
+case ALT_lockUnlockMaskReq:
+field_lockUnlockMaskReq->set_implicit_omit(); break;
+case ALT_executeMacroReq:
+field_executeMacroReq->set_implicit_omit(); break;
+case ALT_getMemoryReq:
+field_getMemoryReq->set_implicit_omit(); break;
+case ALT_getNumberOfSoftKeysReq:
+field_getNumberOfSoftKeysReq->set_implicit_omit(); break;
+case ALT_getTextFontDataReq:
+field_getTextFontDataReq->set_implicit_omit(); break;
+case ALT_getHardwareReq:
+field_getHardwareReq->set_implicit_omit(); break;
+case ALT_getSupportedWidecharsReq:
+field_getSupportedWidecharsReq->set_implicit_omit(); break;
+case ALT_getWindowMaskDataReq:
+field_getWindowMaskDataReq->set_implicit_omit(); break;
+case ALT_getSupportedObjectsReq:
+field_getSupportedObjectsReq->set_implicit_omit(); break;
+case ALT_storeVersionReq:
+field_storeVersionReq->set_implicit_omit(); break;
+case ALT_loadVersionReq:
+field_loadVersionReq->set_implicit_omit(); break;
+case ALT_deleteVersionReq:
+field_deleteVersionReq->set_implicit_omit(); break;
+case ALT_extendedGetVersionsReq:
+field_extendedGetVersionsReq->set_implicit_omit(); break;
+case ALT_extendedStoreVersionReq:
+field_extendedStoreVersionReq->set_implicit_omit(); break;
+case ALT_extendedLoadVersionReq:
+field_extendedLoadVersionReq->set_implicit_omit(); break;
+case ALT_extendedDeleteVersionReq:
+field_extendedDeleteVersionReq->set_implicit_omit(); break;
+case ALT_getVersionsReq:
+field_getVersionsReq->set_implicit_omit(); break;
+case ALT_unsupportedVTFunctionInd:
+field_unsupportedVTFunctionInd->set_implicit_omit(); break;
+case ALT_workingSetMaintenanceReq:
+field_workingSetMaintenanceReq->set_implicit_omit(); break;
+default: break;
+}
+}
+
+void ECU2VT::encode_text(Text_Buf& text_buf) const
+{
+text_buf.push_int(union_selection);
+switch (union_selection) {
+case ALT_softKeyActivationRes:
+field_softKeyActivationRes->encode_text(text_buf);
+break;
+case ALT_buttonActivationRes:
+field_buttonActivationRes->encode_text(text_buf);
+break;
+case ALT_pointingEventRes:
+field_pointingEventRes->encode_text(text_buf);
+break;
+case ALT_vtSelectInputObjectRes:
+field_vtSelectInputObjectRes->encode_text(text_buf);
+break;
+case ALT_vtESCRes:
+field_vtESCRes->encode_text(text_buf);
+break;
+case ALT_vtChangeNumericValueRes:
+field_vtChangeNumericValueRes->encode_text(text_buf);
+break;
+case ALT_vtChangeActiveMaskRes:
+field_vtChangeActiveMaskRes->encode_text(text_buf);
+break;
+case ALT_vtChangeSoftKeyMaskReq:
+field_vtChangeSoftKeyMaskReq->encode_text(text_buf);
+break;
+case ALT_vtChangeStringValueRes:
+field_vtChangeStringValueRes->encode_text(text_buf);
+break;
+case ALT_vtOnUserLayoutHideShowRes:
+field_vtOnUserLayoutHideShowRes->encode_text(text_buf);
+break;
+case ALT_objectPoolTransferInd:
+field_objectPoolTransferInd->encode_text(text_buf);
+break;
+case ALT_endOfObjectPoolReq:
+field_endOfObjectPoolReq->encode_text(text_buf);
+break;
+case ALT_vtfunction32ECU2VT:
+field_vtfunction32ECU2VT->encode_text(text_buf);
+break;
+case ALT_vtfunction33ECU2VT:
+field_vtfunction33ECU2VT->encode_text(text_buf);
+break;
+case ALT_vtfunction34ECU2VT:
+field_vtfunction34ECU2VT->encode_text(text_buf);
+break;
+case ALT_vtfunction36ECU2VT:
+field_vtfunction36ECU2VT->encode_text(text_buf);
+break;
+case ALT_vtfunction37ECU2VT:
+field_vtfunction37ECU2VT->encode_text(text_buf);
+break;
+case ALT_auxiliaryInputType2StatusInd:
+field_auxiliaryInputType2StatusInd->encode_text(text_buf);
+break;
+case ALT_vtfunction39ECU2VT:
+field_vtfunction39ECU2VT->encode_text(text_buf);
+break;
+case ALT_escReq:
+field_escReq->encode_text(text_buf);
+break;
+case ALT_hideShowObjectReq:
+field_hideShowObjectReq->encode_text(text_buf);
+break;
+case ALT_enableDisableObjectReq:
+field_enableDisableObjectReq->encode_text(text_buf);
+break;
+case ALT_selectInputObjectReq:
+field_selectInputObjectReq->encode_text(text_buf);
+break;
+case ALT_controlAudioSignalReq:
+field_controlAudioSignalReq->encode_text(text_buf);
+break;
+case ALT_setAudioVolumeReq:
+field_setAudioVolumeReq->encode_text(text_buf);
+break;
+case ALT_changeChildLocationReq:
+field_changeChildLocationReq->encode_text(text_buf);
+break;
+case ALT_changeSizeReq:
+field_changeSizeReq->encode_text(text_buf);
+break;
+case ALT_changeBackgroundColourReq:
+field_changeBackgroundColourReq->encode_text(text_buf);
+break;
+case ALT_changeNumericValueReq:
+field_changeNumericValueReq->encode_text(text_buf);
+break;
+case ALT_changeEndPointReq:
+field_changeEndPointReq->encode_text(text_buf);
+break;
+case ALT_changeFontAttributesReq:
+field_changeFontAttributesReq->encode_text(text_buf);
+break;
+case ALT_changeLineAttributesReq:
+field_changeLineAttributesReq->encode_text(text_buf);
+break;
+case ALT_changeFillAttributesReq:
+field_changeFillAttributesReq->encode_text(text_buf);
+break;
+case ALT_changeActiveMaskReq:
+field_changeActiveMaskReq->encode_text(text_buf);
+break;
+case ALT_changeSoftKeyMaskRes:
+field_changeSoftKeyMaskRes->encode_text(text_buf);
+break;
+case ALT_changeAttributeReq:
+field_changeAttributeReq->encode_text(text_buf);
+break;
+case ALT_changePriorityReq:
+field_changePriorityReq->encode_text(text_buf);
+break;
+case ALT_changeListItemReq:
+field_changeListItemReq->encode_text(text_buf);
+break;
+case ALT_deleteObjectPoolReq:
+field_deleteObjectPoolReq->encode_text(text_buf);
+break;
+case ALT_changeStringValueReq:
+field_changeStringValueReq->encode_text(text_buf);
+break;
+case ALT_changeChildPositionReq:
+field_changeChildPositionReq->encode_text(text_buf);
+break;
+case ALT_changeObjectLabelReq:
+field_changeObjectLabelReq->encode_text(text_buf);
+break;
+case ALT_changePolygonPointReq:
+field_changePolygonPointReq->encode_text(text_buf);
+break;
+case ALT_changePolygonScaleReq:
+field_changePolygonScaleReq->encode_text(text_buf);
+break;
+case ALT_graphicsContextReq:
+field_graphicsContextReq->encode_text(text_buf);
+break;
+case ALT_getAttributeValueReq:
+field_getAttributeValueReq->encode_text(text_buf);
+break;
+case ALT_selectColourMapReq:
+field_selectColourMapReq->encode_text(text_buf);
+break;
+case ALT_identifyVTReq:
+field_identifyVTReq->encode_text(text_buf);
+break;
+case ALT_executeExtendedMacroReq:
+field_executeExtendedMacroReq->encode_text(text_buf);
+break;
+case ALT_lockUnlockMaskReq:
+field_lockUnlockMaskReq->encode_text(text_buf);
+break;
+case ALT_executeMacroReq:
+field_executeMacroReq->encode_text(text_buf);
+break;
+case ALT_getMemoryReq:
+field_getMemoryReq->encode_text(text_buf);
+break;
+case ALT_getNumberOfSoftKeysReq:
+field_getNumberOfSoftKeysReq->encode_text(text_buf);
+break;
+case ALT_getTextFontDataReq:
+field_getTextFontDataReq->encode_text(text_buf);
+break;
+case ALT_getHardwareReq:
+field_getHardwareReq->encode_text(text_buf);
+break;
+case ALT_getSupportedWidecharsReq:
+field_getSupportedWidecharsReq->encode_text(text_buf);
+break;
+case ALT_getWindowMaskDataReq:
+field_getWindowMaskDataReq->encode_text(text_buf);
+break;
+case ALT_getSupportedObjectsReq:
+field_getSupportedObjectsReq->encode_text(text_buf);
+break;
+case ALT_storeVersionReq:
+field_storeVersionReq->encode_text(text_buf);
+break;
+case ALT_loadVersionReq:
+field_loadVersionReq->encode_text(text_buf);
+break;
+case ALT_deleteVersionReq:
+field_deleteVersionReq->encode_text(text_buf);
+break;
+case ALT_extendedGetVersionsReq:
+field_extendedGetVersionsReq->encode_text(text_buf);
+break;
+case ALT_extendedStoreVersionReq:
+field_extendedStoreVersionReq->encode_text(text_buf);
+break;
+case ALT_extendedLoadVersionReq:
+field_extendedLoadVersionReq->encode_text(text_buf);
+break;
+case ALT_extendedDeleteVersionReq:
+field_extendedDeleteVersionReq->encode_text(text_buf);
+break;
+case ALT_getVersionsReq:
+field_getVersionsReq->encode_text(text_buf);
+break;
+case ALT_unsupportedVTFunctionInd:
+field_unsupportedVTFunctionInd->encode_text(text_buf);
+break;
+case ALT_workingSetMaintenanceReq:
+field_workingSetMaintenanceReq->encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an unbound value of union type @IsobusVTMessageTypes.ECU2VT.");
+}
+}
+
+void ECU2VT::decode_text(Text_Buf& text_buf)
+{
+switch ((union_selection_type)text_buf.pull_int().get_val()) {
+case ALT_softKeyActivationRes:
+softKeyActivationRes().decode_text(text_buf);
+break;
+case ALT_buttonActivationRes:
+buttonActivationRes().decode_text(text_buf);
+break;
+case ALT_pointingEventRes:
+pointingEventRes().decode_text(text_buf);
+break;
+case ALT_vtSelectInputObjectRes:
+vtSelectInputObjectRes().decode_text(text_buf);
+break;
+case ALT_vtESCRes:
+vtESCRes().decode_text(text_buf);
+break;
+case ALT_vtChangeNumericValueRes:
+vtChangeNumericValueRes().decode_text(text_buf);
+break;
+case ALT_vtChangeActiveMaskRes:
+vtChangeActiveMaskRes().decode_text(text_buf);
+break;
+case ALT_vtChangeSoftKeyMaskReq:
+vtChangeSoftKeyMaskReq().decode_text(text_buf);
+break;
+case ALT_vtChangeStringValueRes:
+vtChangeStringValueRes().decode_text(text_buf);
+break;
+case ALT_vtOnUserLayoutHideShowRes:
+vtOnUserLayoutHideShowRes().decode_text(text_buf);
+break;
+case ALT_objectPoolTransferInd:
+objectPoolTransferInd().decode_text(text_buf);
+break;
+case ALT_endOfObjectPoolReq:
+endOfObjectPoolReq().decode_text(text_buf);
+break;
+case ALT_vtfunction32ECU2VT:
+vtfunction32ECU2VT().decode_text(text_buf);
+break;
+case ALT_vtfunction33ECU2VT:
+vtfunction33ECU2VT().decode_text(text_buf);
+break;
+case ALT_vtfunction34ECU2VT:
+vtfunction34ECU2VT().decode_text(text_buf);
+break;
+case ALT_vtfunction36ECU2VT:
+vtfunction36ECU2VT().decode_text(text_buf);
+break;
+case ALT_vtfunction37ECU2VT:
+vtfunction37ECU2VT().decode_text(text_buf);
+break;
+case ALT_auxiliaryInputType2StatusInd:
+auxiliaryInputType2StatusInd().decode_text(text_buf);
+break;
+case ALT_vtfunction39ECU2VT:
+vtfunction39ECU2VT().decode_text(text_buf);
+break;
+case ALT_escReq:
+escReq().decode_text(text_buf);
+break;
+case ALT_hideShowObjectReq:
+hideShowObjectReq().decode_text(text_buf);
+break;
+case ALT_enableDisableObjectReq:
+enableDisableObjectReq().decode_text(text_buf);
+break;
+case ALT_selectInputObjectReq:
+selectInputObjectReq().decode_text(text_buf);
+break;
+case ALT_controlAudioSignalReq:
+controlAudioSignalReq().decode_text(text_buf);
+break;
+case ALT_setAudioVolumeReq:
+setAudioVolumeReq().decode_text(text_buf);
+break;
+case ALT_changeChildLocationReq:
+changeChildLocationReq().decode_text(text_buf);
+break;
+case ALT_changeSizeReq:
+changeSizeReq().decode_text(text_buf);
+break;
+case ALT_changeBackgroundColourReq:
+changeBackgroundColourReq().decode_text(text_buf);
+break;
+case ALT_changeNumericValueReq:
+changeNumericValueReq().decode_text(text_buf);
+break;
+case ALT_changeEndPointReq:
+changeEndPointReq().decode_text(text_buf);
+break;
+case ALT_changeFontAttributesReq:
+changeFontAttributesReq().decode_text(text_buf);
+break;
+case ALT_changeLineAttributesReq:
+changeLineAttributesReq().decode_text(text_buf);
+break;
+case ALT_changeFillAttributesReq:
+changeFillAttributesReq().decode_text(text_buf);
+break;
+case ALT_changeActiveMaskReq:
+changeActiveMaskReq().decode_text(text_buf);
+break;
+case ALT_changeSoftKeyMaskRes:
+changeSoftKeyMaskRes().decode_text(text_buf);
+break;
+case ALT_changeAttributeReq:
+changeAttributeReq().decode_text(text_buf);
+break;
+case ALT_changePriorityReq:
+changePriorityReq().decode_text(text_buf);
+break;
+case ALT_changeListItemReq:
+changeListItemReq().decode_text(text_buf);
+break;
+case ALT_deleteObjectPoolReq:
+deleteObjectPoolReq().decode_text(text_buf);
+break;
+case ALT_changeStringValueReq:
+changeStringValueReq().decode_text(text_buf);
+break;
+case ALT_changeChildPositionReq:
+changeChildPositionReq().decode_text(text_buf);
+break;
+case ALT_changeObjectLabelReq:
+changeObjectLabelReq().decode_text(text_buf);
+break;
+case ALT_changePolygonPointReq:
+changePolygonPointReq().decode_text(text_buf);
+break;
+case ALT_changePolygonScaleReq:
+changePolygonScaleReq().decode_text(text_buf);
+break;
+case ALT_graphicsContextReq:
+graphicsContextReq().decode_text(text_buf);
+break;
+case ALT_getAttributeValueReq:
+getAttributeValueReq().decode_text(text_buf);
+break;
+case ALT_selectColourMapReq:
+selectColourMapReq().decode_text(text_buf);
+break;
+case ALT_identifyVTReq:
+identifyVTReq().decode_text(text_buf);
+break;
+case ALT_executeExtendedMacroReq:
+executeExtendedMacroReq().decode_text(text_buf);
+break;
+case ALT_lockUnlockMaskReq:
+lockUnlockMaskReq().decode_text(text_buf);
+break;
+case ALT_executeMacroReq:
+executeMacroReq().decode_text(text_buf);
+break;
+case ALT_getMemoryReq:
+getMemoryReq().decode_text(text_buf);
+break;
+case ALT_getNumberOfSoftKeysReq:
+getNumberOfSoftKeysReq().decode_text(text_buf);
+break;
+case ALT_getTextFontDataReq:
+getTextFontDataReq().decode_text(text_buf);
+break;
+case ALT_getHardwareReq:
+getHardwareReq().decode_text(text_buf);
+break;
+case ALT_getSupportedWidecharsReq:
+getSupportedWidecharsReq().decode_text(text_buf);
+break;
+case ALT_getWindowMaskDataReq:
+getWindowMaskDataReq().decode_text(text_buf);
+break;
+case ALT_getSupportedObjectsReq:
+getSupportedObjectsReq().decode_text(text_buf);
+break;
+case ALT_storeVersionReq:
+storeVersionReq().decode_text(text_buf);
+break;
+case ALT_loadVersionReq:
+loadVersionReq().decode_text(text_buf);
+break;
+case ALT_deleteVersionReq:
+deleteVersionReq().decode_text(text_buf);
+break;
+case ALT_extendedGetVersionsReq:
+extendedGetVersionsReq().decode_text(text_buf);
+break;
+case ALT_extendedStoreVersionReq:
+extendedStoreVersionReq().decode_text(text_buf);
+break;
+case ALT_extendedLoadVersionReq:
+extendedLoadVersionReq().decode_text(text_buf);
+break;
+case ALT_extendedDeleteVersionReq:
+extendedDeleteVersionReq().decode_text(text_buf);
+break;
+case ALT_getVersionsReq:
+getVersionsReq().decode_text(text_buf);
+break;
+case ALT_unsupportedVTFunctionInd:
+unsupportedVTFunctionInd().decode_text(text_buf);
+break;
+case ALT_workingSetMaintenanceReq:
+workingSetMaintenanceReq().decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for type @IsobusVTMessageTypes.ECU2VT.");
+}
+}
+
+void ECU2VT::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ECU2VT::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ECU2VT::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, SoftKeyActivationRes_descr_.raw->forceomit);
+      decoded_length = softKeyActivationRes().RAW_decode(SoftKeyActivationRes_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, ButtonActivationRes_descr_.raw->forceomit);
+      decoded_length = buttonActivationRes().RAW_decode(ButtonActivationRes_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, PointingEventRes_descr_.raw->forceomit);
+      decoded_length = pointingEventRes().RAW_decode(PointingEventRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 3: {
+      RAW_Force_Omit field_force_omit(3, force_omit, VTSelectInputObjectRes_descr_.raw->forceomit);
+      decoded_length = vtSelectInputObjectRes().RAW_decode(VTSelectInputObjectRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 4: {
+      RAW_Force_Omit field_force_omit(4, force_omit, VTESCRes_descr_.raw->forceomit);
+      decoded_length = vtESCRes().RAW_decode(VTESCRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 5: {
+      RAW_Force_Omit field_force_omit(5, force_omit, VTChangeNumericValueRes_descr_.raw->forceomit);
+      decoded_length = vtChangeNumericValueRes().RAW_decode(VTChangeNumericValueRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 6: {
+      RAW_Force_Omit field_force_omit(6, force_omit, VTChangeActiveMaskRes_descr_.raw->forceomit);
+      decoded_length = vtChangeActiveMaskRes().RAW_decode(VTChangeActiveMaskRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 7: {
+      RAW_Force_Omit field_force_omit(7, force_omit, VTChangeSoftKeyMaskReq_descr_.raw->forceomit);
+      decoded_length = vtChangeSoftKeyMaskReq().RAW_decode(VTChangeSoftKeyMaskReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 8: {
+      RAW_Force_Omit field_force_omit(8, force_omit, VTChangeStringValueRes_descr_.raw->forceomit);
+      decoded_length = vtChangeStringValueRes().RAW_decode(VTChangeStringValueRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 9: {
+      RAW_Force_Omit field_force_omit(9, force_omit, VTOnUserLayoutHideShowRes_descr_.raw->forceomit);
+      decoded_length = vtOnUserLayoutHideShowRes().RAW_decode(VTOnUserLayoutHideShowRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 10: {
+      RAW_Force_Omit field_force_omit(10, force_omit, ObjectPoolTransferInd_descr_.raw->forceomit);
+      decoded_length = objectPoolTransferInd().RAW_decode(ObjectPoolTransferInd_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 11: {
+      RAW_Force_Omit field_force_omit(11, force_omit, EndOfObjectPoolReq_descr_.raw->forceomit);
+      decoded_length = endOfObjectPoolReq().RAW_decode(EndOfObjectPoolReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 12: {
+      RAW_Force_Omit field_force_omit(12, force_omit, VTfunction32ECU2VT_descr_.raw->forceomit);
+      decoded_length = vtfunction32ECU2VT().RAW_decode(VTfunction32ECU2VT_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 13: {
+      RAW_Force_Omit field_force_omit(13, force_omit, VTfunction33ECU2VT_descr_.raw->forceomit);
+      decoded_length = vtfunction33ECU2VT().RAW_decode(VTfunction33ECU2VT_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 14: {
+      RAW_Force_Omit field_force_omit(14, force_omit, VTfunction34ECU2VT_descr_.raw->forceomit);
+      decoded_length = vtfunction34ECU2VT().RAW_decode(VTfunction34ECU2VT_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 15: {
+      RAW_Force_Omit field_force_omit(15, force_omit, VTfunction36ECU2VT_descr_.raw->forceomit);
+      decoded_length = vtfunction36ECU2VT().RAW_decode(VTfunction36ECU2VT_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 16: {
+      RAW_Force_Omit field_force_omit(16, force_omit, VTfunction37ECU2VT_descr_.raw->forceomit);
+      decoded_length = vtfunction37ECU2VT().RAW_decode(VTfunction37ECU2VT_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 17: {
+      RAW_Force_Omit field_force_omit(17, force_omit, AuxiliaryInputType2StatusInd_descr_.raw->forceomit);
+      decoded_length = auxiliaryInputType2StatusInd().RAW_decode(AuxiliaryInputType2StatusInd_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 18: {
+      RAW_Force_Omit field_force_omit(18, force_omit, VTfunction39ECU2VT_descr_.raw->forceomit);
+      decoded_length = vtfunction39ECU2VT().RAW_decode(VTfunction39ECU2VT_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 19: {
+      RAW_Force_Omit field_force_omit(19, force_omit, ESCreq_descr_.raw->forceomit);
+      decoded_length = escReq().RAW_decode(ESCreq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 20: {
+      RAW_Force_Omit field_force_omit(20, force_omit, HideShowObjectReq_descr_.raw->forceomit);
+      decoded_length = hideShowObjectReq().RAW_decode(HideShowObjectReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 21: {
+      RAW_Force_Omit field_force_omit(21, force_omit, EnableDisableObjectReq_descr_.raw->forceomit);
+      decoded_length = enableDisableObjectReq().RAW_decode(EnableDisableObjectReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 22: {
+      RAW_Force_Omit field_force_omit(22, force_omit, SelectInputObjectReq_descr_.raw->forceomit);
+      decoded_length = selectInputObjectReq().RAW_decode(SelectInputObjectReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 23: {
+      RAW_Force_Omit field_force_omit(23, force_omit, ControlAudioSignalReq_descr_.raw->forceomit);
+      decoded_length = controlAudioSignalReq().RAW_decode(ControlAudioSignalReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 24: {
+      RAW_Force_Omit field_force_omit(24, force_omit, SetAudioVolumeReq_descr_.raw->forceomit);
+      decoded_length = setAudioVolumeReq().RAW_decode(SetAudioVolumeReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 25: {
+      RAW_Force_Omit field_force_omit(25, force_omit, ChangeChildLocationReq_descr_.raw->forceomit);
+      decoded_length = changeChildLocationReq().RAW_decode(ChangeChildLocationReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 26: {
+      RAW_Force_Omit field_force_omit(26, force_omit, ChangeSizeReq_descr_.raw->forceomit);
+      decoded_length = changeSizeReq().RAW_decode(ChangeSizeReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 27: {
+      RAW_Force_Omit field_force_omit(27, force_omit, ChangeBackgroundColourReq_descr_.raw->forceomit);
+      decoded_length = changeBackgroundColourReq().RAW_decode(ChangeBackgroundColourReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 28: {
+      RAW_Force_Omit field_force_omit(28, force_omit, ChangeNumericValueReq_descr_.raw->forceomit);
+      decoded_length = changeNumericValueReq().RAW_decode(ChangeNumericValueReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 29: {
+      RAW_Force_Omit field_force_omit(29, force_omit, ChangeEndPointReq_descr_.raw->forceomit);
+      decoded_length = changeEndPointReq().RAW_decode(ChangeEndPointReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 30: {
+      RAW_Force_Omit field_force_omit(30, force_omit, ChangeFontAttributesReq_descr_.raw->forceomit);
+      decoded_length = changeFontAttributesReq().RAW_decode(ChangeFontAttributesReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 31: {
+      RAW_Force_Omit field_force_omit(31, force_omit, ChangeLineAttributesReq_descr_.raw->forceomit);
+      decoded_length = changeLineAttributesReq().RAW_decode(ChangeLineAttributesReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 32: {
+      RAW_Force_Omit field_force_omit(32, force_omit, ChangeFillAttributesReq_descr_.raw->forceomit);
+      decoded_length = changeFillAttributesReq().RAW_decode(ChangeFillAttributesReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 33: {
+      RAW_Force_Omit field_force_omit(33, force_omit, ChangeActiveMaskReq_descr_.raw->forceomit);
+      decoded_length = changeActiveMaskReq().RAW_decode(ChangeActiveMaskReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 34: {
+      RAW_Force_Omit field_force_omit(34, force_omit, ChangeSoftKeyMaskRes_descr_.raw->forceomit);
+      decoded_length = changeSoftKeyMaskRes().RAW_decode(ChangeSoftKeyMaskRes_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 35: {
+      RAW_Force_Omit field_force_omit(35, force_omit, ChangeAttributeReq_descr_.raw->forceomit);
+      decoded_length = changeAttributeReq().RAW_decode(ChangeAttributeReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 36: {
+      RAW_Force_Omit field_force_omit(36, force_omit, ChangePriorityReq_descr_.raw->forceomit);
+      decoded_length = changePriorityReq().RAW_decode(ChangePriorityReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 37: {
+      RAW_Force_Omit field_force_omit(37, force_omit, ChangeListItemReq_descr_.raw->forceomit);
+      decoded_length = changeListItemReq().RAW_decode(ChangeListItemReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 38: {
+      RAW_Force_Omit field_force_omit(38, force_omit, DeleteObjectPoolReq_descr_.raw->forceomit);
+      decoded_length = deleteObjectPoolReq().RAW_decode(DeleteObjectPoolReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 39: {
+      RAW_Force_Omit field_force_omit(39, force_omit, ChangeStringValueReq_descr_.raw->forceomit);
+      decoded_length = changeStringValueReq().RAW_decode(ChangeStringValueReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 40: {
+      RAW_Force_Omit field_force_omit(40, force_omit, ChangeChildPositionReq_descr_.raw->forceomit);
+      decoded_length = changeChildPositionReq().RAW_decode(ChangeChildPositionReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 41: {
+      RAW_Force_Omit field_force_omit(41, force_omit, ChangeObjectLabelReq_descr_.raw->forceomit);
+      decoded_length = changeObjectLabelReq().RAW_decode(ChangeObjectLabelReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 42: {
+      RAW_Force_Omit field_force_omit(42, force_omit, ChangePolygonPointReq_descr_.raw->forceomit);
+      decoded_length = changePolygonPointReq().RAW_decode(ChangePolygonPointReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 43: {
+      RAW_Force_Omit field_force_omit(43, force_omit, ChangePolygonScaleReq_descr_.raw->forceomit);
+      decoded_length = changePolygonScaleReq().RAW_decode(ChangePolygonScaleReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 44: {
+      RAW_Force_Omit field_force_omit(44, force_omit, GraphicsContextReq_descr_.raw->forceomit);
+      decoded_length = graphicsContextReq().RAW_decode(GraphicsContextReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 45: {
+      RAW_Force_Omit field_force_omit(45, force_omit, GetAttributeValueReq_descr_.raw->forceomit);
+      decoded_length = getAttributeValueReq().RAW_decode(GetAttributeValueReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 46: {
+      RAW_Force_Omit field_force_omit(46, force_omit, SelectColourMapReq_descr_.raw->forceomit);
+      decoded_length = selectColourMapReq().RAW_decode(SelectColourMapReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 47: {
+      RAW_Force_Omit field_force_omit(47, force_omit, IdentifyVTReq_descr_.raw->forceomit);
+      decoded_length = identifyVTReq().RAW_decode(IdentifyVTReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 48: {
+      RAW_Force_Omit field_force_omit(48, force_omit, ExecuteExtendedMacroReq_descr_.raw->forceomit);
+      decoded_length = executeExtendedMacroReq().RAW_decode(ExecuteExtendedMacroReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 49: {
+      RAW_Force_Omit field_force_omit(49, force_omit, LockUnlockMaskReq_descr_.raw->forceomit);
+      decoded_length = lockUnlockMaskReq().RAW_decode(LockUnlockMaskReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 50: {
+      RAW_Force_Omit field_force_omit(50, force_omit, ExecuteMacroReq_descr_.raw->forceomit);
+      decoded_length = executeMacroReq().RAW_decode(ExecuteMacroReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 51: {
+      RAW_Force_Omit field_force_omit(51, force_omit, GetMemoryReq_descr_.raw->forceomit);
+      decoded_length = getMemoryReq().RAW_decode(GetMemoryReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 52: {
+      RAW_Force_Omit field_force_omit(52, force_omit, GetNumberOfSoftKeysReq_descr_.raw->forceomit);
+      decoded_length = getNumberOfSoftKeysReq().RAW_decode(GetNumberOfSoftKeysReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 53: {
+      RAW_Force_Omit field_force_omit(53, force_omit, GetTextFontDataReq_descr_.raw->forceomit);
+      decoded_length = getTextFontDataReq().RAW_decode(GetTextFontDataReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 54: {
+      RAW_Force_Omit field_force_omit(54, force_omit, GetHardwareReq_descr_.raw->forceomit);
+      decoded_length = getHardwareReq().RAW_decode(GetHardwareReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 55: {
+      RAW_Force_Omit field_force_omit(55, force_omit, GetSupportedWidecharsReq_descr_.raw->forceomit);
+      decoded_length = getSupportedWidecharsReq().RAW_decode(GetSupportedWidecharsReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 56: {
+      RAW_Force_Omit field_force_omit(56, force_omit, GetWindowMaskDataReq_descr_.raw->forceomit);
+      decoded_length = getWindowMaskDataReq().RAW_decode(GetWindowMaskDataReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 57: {
+      RAW_Force_Omit field_force_omit(57, force_omit, GetSupportedObjectsReq_descr_.raw->forceomit);
+      decoded_length = getSupportedObjectsReq().RAW_decode(GetSupportedObjectsReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 58: {
+      RAW_Force_Omit field_force_omit(58, force_omit, StoreVersionReq_descr_.raw->forceomit);
+      decoded_length = storeVersionReq().RAW_decode(StoreVersionReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 59: {
+      RAW_Force_Omit field_force_omit(59, force_omit, LoadVersionReq_descr_.raw->forceomit);
+      decoded_length = loadVersionReq().RAW_decode(LoadVersionReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 60: {
+      RAW_Force_Omit field_force_omit(60, force_omit, DeleteVersionReq_descr_.raw->forceomit);
+      decoded_length = deleteVersionReq().RAW_decode(DeleteVersionReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 61: {
+      RAW_Force_Omit field_force_omit(61, force_omit, ExtendedGetVersionsReq_descr_.raw->forceomit);
+      decoded_length = extendedGetVersionsReq().RAW_decode(ExtendedGetVersionsReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 62: {
+      RAW_Force_Omit field_force_omit(62, force_omit, ExtendedStoreVersionReq_descr_.raw->forceomit);
+      decoded_length = extendedStoreVersionReq().RAW_decode(ExtendedStoreVersionReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 63: {
+      RAW_Force_Omit field_force_omit(63, force_omit, ExtendedLoadVersionReq_descr_.raw->forceomit);
+      decoded_length = extendedLoadVersionReq().RAW_decode(ExtendedLoadVersionReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 64: {
+      RAW_Force_Omit field_force_omit(64, force_omit, ExtendedDeleteVersionReq_descr_.raw->forceomit);
+      decoded_length = extendedDeleteVersionReq().RAW_decode(ExtendedDeleteVersionReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 65: {
+      RAW_Force_Omit field_force_omit(65, force_omit, GetVersionsReq_descr_.raw->forceomit);
+      decoded_length = getVersionsReq().RAW_decode(GetVersionsReq_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 66: {
+      RAW_Force_Omit field_force_omit(66, force_omit, UnsupportedVTFunctionInd_descr_.raw->forceomit);
+      decoded_length = unsupportedVTFunctionInd().RAW_decode(UnsupportedVTFunctionInd_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 67: {
+      RAW_Force_Omit field_force_omit(67, force_omit, WorkingSetMaintenanceReq_descr_.raw->forceomit);
+      decoded_length = workingSetMaintenanceReq().RAW_decode(WorkingSetMaintenanceReq_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 {
+    boolean already_failed = FALSE;
+    INTEGER temporal_0;
+    int decoded_0_length;
+    already_failed = FALSE;
+    if (!already_failed) {
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_0_length = temporal_0.RAW_decode(VTfunction_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 0) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(0, force_omit, SoftKeyActivationRes_descr_.raw->forceomit);
+          decoded_length = softKeyActivationRes().RAW_decode(SoftKeyActivationRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_softKeyActivationRes).vtfunction() == 0) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 1) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(1, force_omit, ButtonActivationRes_descr_.raw->forceomit);
+          decoded_length = buttonActivationRes().RAW_decode(ButtonActivationRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_buttonActivationRes).vtfunction() == 1) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 2) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(2, force_omit, PointingEventRes_descr_.raw->forceomit);
+          decoded_length = pointingEventRes().RAW_decode(PointingEventRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_pointingEventRes).vtfunction() == 2) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 3) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(3, force_omit, VTSelectInputObjectRes_descr_.raw->forceomit);
+          decoded_length = vtSelectInputObjectRes().RAW_decode(VTSelectInputObjectRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_vtSelectInputObjectRes).vtfunction() == 3) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 4) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(4, force_omit, VTESCRes_descr_.raw->forceomit);
+          decoded_length = vtESCRes().RAW_decode(VTESCRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_vtESCRes).vtfunction() == 4) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 5) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(5, force_omit, VTChangeNumericValueRes_descr_.raw->forceomit);
+          decoded_length = vtChangeNumericValueRes().RAW_decode(VTChangeNumericValueRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_vtChangeNumericValueRes).vtfunction() == 5) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 6) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(6, force_omit, VTChangeActiveMaskRes_descr_.raw->forceomit);
+          decoded_length = vtChangeActiveMaskRes().RAW_decode(VTChangeActiveMaskRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_vtChangeActiveMaskRes).vtfunction() == 6) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 7) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(7, force_omit, VTChangeSoftKeyMaskReq_descr_.raw->forceomit);
+          decoded_length = vtChangeSoftKeyMaskReq().RAW_decode(VTChangeSoftKeyMaskReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_vtChangeSoftKeyMaskReq).vtfunction() == 7) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 8) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(8, force_omit, VTChangeStringValueRes_descr_.raw->forceomit);
+          decoded_length = vtChangeStringValueRes().RAW_decode(VTChangeStringValueRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_vtChangeStringValueRes).vtfunction() == 8) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 9) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(9, force_omit, VTOnUserLayoutHideShowRes_descr_.raw->forceomit);
+          decoded_length = vtOnUserLayoutHideShowRes().RAW_decode(VTOnUserLayoutHideShowRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_vtOnUserLayoutHideShowRes).vtfunction() == 9) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 17) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(10, force_omit, ObjectPoolTransferInd_descr_.raw->forceomit);
+          decoded_length = objectPoolTransferInd().RAW_decode(ObjectPoolTransferInd_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_objectPoolTransferInd).vtfunction() == 17) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 18) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(11, force_omit, EndOfObjectPoolReq_descr_.raw->forceomit);
+          decoded_length = endOfObjectPoolReq().RAW_decode(EndOfObjectPoolReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_endOfObjectPoolReq).vtfunction() == 18) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 32) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(12, force_omit, VTfunction32ECU2VT_descr_.raw->forceomit);
+          decoded_length = vtfunction32ECU2VT().RAW_decode(VTfunction32ECU2VT_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_vtfunction32ECU2VT).vtfunction() == 32) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 33) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(13, force_omit, VTfunction33ECU2VT_descr_.raw->forceomit);
+          decoded_length = vtfunction33ECU2VT().RAW_decode(VTfunction33ECU2VT_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_vtfunction33ECU2VT).vtfunction() == 33) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 34) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(14, force_omit, VTfunction34ECU2VT_descr_.raw->forceomit);
+          decoded_length = vtfunction34ECU2VT().RAW_decode(VTfunction34ECU2VT_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_vtfunction34ECU2VT).vtfunction() == 34) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 36) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(15, force_omit, VTfunction36ECU2VT_descr_.raw->forceomit);
+          decoded_length = vtfunction36ECU2VT().RAW_decode(VTfunction36ECU2VT_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_vtfunction36ECU2VT).vtfunction() == 36) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 37) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(16, force_omit, VTfunction37ECU2VT_descr_.raw->forceomit);
+          decoded_length = vtfunction37ECU2VT().RAW_decode(VTfunction37ECU2VT_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_vtfunction37ECU2VT).vtfunction() == 37) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 38) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(17, force_omit, AuxiliaryInputType2StatusInd_descr_.raw->forceomit);
+          decoded_length = auxiliaryInputType2StatusInd().RAW_decode(AuxiliaryInputType2StatusInd_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_auxiliaryInputType2StatusInd).vtfunction() == 38) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 39) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(18, force_omit, VTfunction39ECU2VT_descr_.raw->forceomit);
+          decoded_length = vtfunction39ECU2VT().RAW_decode(VTfunction39ECU2VT_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_vtfunction39ECU2VT).vtfunction() == 39) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 146) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(19, force_omit, ESCreq_descr_.raw->forceomit);
+          decoded_length = escReq().RAW_decode(ESCreq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_escReq).vtfunction() == 146) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 160) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(20, force_omit, HideShowObjectReq_descr_.raw->forceomit);
+          decoded_length = hideShowObjectReq().RAW_decode(HideShowObjectReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_hideShowObjectReq).vtfunction() == 160) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 161) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(21, force_omit, EnableDisableObjectReq_descr_.raw->forceomit);
+          decoded_length = enableDisableObjectReq().RAW_decode(EnableDisableObjectReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_enableDisableObjectReq).vtfunction() == 161) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 162) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(22, force_omit, SelectInputObjectReq_descr_.raw->forceomit);
+          decoded_length = selectInputObjectReq().RAW_decode(SelectInputObjectReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_selectInputObjectReq).vtfunction() == 162) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 163) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(23, force_omit, ControlAudioSignalReq_descr_.raw->forceomit);
+          decoded_length = controlAudioSignalReq().RAW_decode(ControlAudioSignalReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_controlAudioSignalReq).vtfunction() == 163) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 164) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(24, force_omit, SetAudioVolumeReq_descr_.raw->forceomit);
+          decoded_length = setAudioVolumeReq().RAW_decode(SetAudioVolumeReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_setAudioVolumeReq).vtfunction() == 164) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 165) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(25, force_omit, ChangeChildLocationReq_descr_.raw->forceomit);
+          decoded_length = changeChildLocationReq().RAW_decode(ChangeChildLocationReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_changeChildLocationReq).vtfunction() == 165) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 166) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(26, force_omit, ChangeSizeReq_descr_.raw->forceomit);
+          decoded_length = changeSizeReq().RAW_decode(ChangeSizeReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_changeSizeReq).vtfunction() == 166) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 167) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(27, force_omit, ChangeBackgroundColourReq_descr_.raw->forceomit);
+          decoded_length = changeBackgroundColourReq().RAW_decode(ChangeBackgroundColourReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_changeBackgroundColourReq).vtfunction() == 167) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 168) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(28, force_omit, ChangeNumericValueReq_descr_.raw->forceomit);
+          decoded_length = changeNumericValueReq().RAW_decode(ChangeNumericValueReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_changeNumericValueReq).vtfunction() == 168) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 169) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(29, force_omit, ChangeEndPointReq_descr_.raw->forceomit);
+          decoded_length = changeEndPointReq().RAW_decode(ChangeEndPointReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_changeEndPointReq).vtfunction() == 169) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 170) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(30, force_omit, ChangeFontAttributesReq_descr_.raw->forceomit);
+          decoded_length = changeFontAttributesReq().RAW_decode(ChangeFontAttributesReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_changeFontAttributesReq).vtfunction() == 170) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 171) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(31, force_omit, ChangeLineAttributesReq_descr_.raw->forceomit);
+          decoded_length = changeLineAttributesReq().RAW_decode(ChangeLineAttributesReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_changeLineAttributesReq).vtfunction() == 171) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 172) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(32, force_omit, ChangeFillAttributesReq_descr_.raw->forceomit);
+          decoded_length = changeFillAttributesReq().RAW_decode(ChangeFillAttributesReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_changeFillAttributesReq).vtfunction() == 172) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 173) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(33, force_omit, ChangeActiveMaskReq_descr_.raw->forceomit);
+          decoded_length = changeActiveMaskReq().RAW_decode(ChangeActiveMaskReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_changeActiveMaskReq).vtfunction() == 173) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 174) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(34, force_omit, ChangeSoftKeyMaskRes_descr_.raw->forceomit);
+          decoded_length = changeSoftKeyMaskRes().RAW_decode(ChangeSoftKeyMaskRes_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_changeSoftKeyMaskRes).vtfunction() == 174) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 175) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(35, force_omit, ChangeAttributeReq_descr_.raw->forceomit);
+          decoded_length = changeAttributeReq().RAW_decode(ChangeAttributeReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_changeAttributeReq).vtfunction() == 175) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 176) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(36, force_omit, ChangePriorityReq_descr_.raw->forceomit);
+          decoded_length = changePriorityReq().RAW_decode(ChangePriorityReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_changePriorityReq).vtfunction() == 176) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 177) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(37, force_omit, ChangeListItemReq_descr_.raw->forceomit);
+          decoded_length = changeListItemReq().RAW_decode(ChangeListItemReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_changeListItemReq).vtfunction() == 177) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 178) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(38, force_omit, DeleteObjectPoolReq_descr_.raw->forceomit);
+          decoded_length = deleteObjectPoolReq().RAW_decode(DeleteObjectPoolReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_deleteObjectPoolReq).vtfunction() == 178) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 179) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(39, force_omit, ChangeStringValueReq_descr_.raw->forceomit);
+          decoded_length = changeStringValueReq().RAW_decode(ChangeStringValueReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_changeStringValueReq).vtfunction() == 179) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 180) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(40, force_omit, ChangeChildPositionReq_descr_.raw->forceomit);
+          decoded_length = changeChildPositionReq().RAW_decode(ChangeChildPositionReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_changeChildPositionReq).vtfunction() == 180) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 181) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(41, force_omit, ChangeObjectLabelReq_descr_.raw->forceomit);
+          decoded_length = changeObjectLabelReq().RAW_decode(ChangeObjectLabelReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_changeObjectLabelReq).vtfunction() == 181) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 182) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(42, force_omit, ChangePolygonPointReq_descr_.raw->forceomit);
+          decoded_length = changePolygonPointReq().RAW_decode(ChangePolygonPointReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_changePolygonPointReq).vtfunction() == 182) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 183) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(43, force_omit, ChangePolygonScaleReq_descr_.raw->forceomit);
+          decoded_length = changePolygonScaleReq().RAW_decode(ChangePolygonScaleReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_changePolygonScaleReq).vtfunction() == 183) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 184) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(44, force_omit, GraphicsContextReq_descr_.raw->forceomit);
+          decoded_length = graphicsContextReq().RAW_decode(GraphicsContextReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_graphicsContextReq).vtfunction() == 184) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 185) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(45, force_omit, GetAttributeValueReq_descr_.raw->forceomit);
+          decoded_length = getAttributeValueReq().RAW_decode(GetAttributeValueReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_getAttributeValueReq).vtfunction() == 185) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 186) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(46, force_omit, SelectColourMapReq_descr_.raw->forceomit);
+          decoded_length = selectColourMapReq().RAW_decode(SelectColourMapReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_selectColourMapReq).vtfunction() == 186) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 187) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(47, force_omit, IdentifyVTReq_descr_.raw->forceomit);
+          decoded_length = identifyVTReq().RAW_decode(IdentifyVTReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_identifyVTReq).vtfunction() == 187) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 188) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(48, force_omit, ExecuteExtendedMacroReq_descr_.raw->forceomit);
+          decoded_length = executeExtendedMacroReq().RAW_decode(ExecuteExtendedMacroReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_executeExtendedMacroReq).vtfunction() == 188) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 189) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(49, force_omit, LockUnlockMaskReq_descr_.raw->forceomit);
+          decoded_length = lockUnlockMaskReq().RAW_decode(LockUnlockMaskReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_lockUnlockMaskReq).vtfunction() == 189) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 190) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(50, force_omit, ExecuteMacroReq_descr_.raw->forceomit);
+          decoded_length = executeMacroReq().RAW_decode(ExecuteMacroReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_executeMacroReq).vtfunction() == 190) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 192) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(51, force_omit, GetMemoryReq_descr_.raw->forceomit);
+          decoded_length = getMemoryReq().RAW_decode(GetMemoryReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_getMemoryReq).vtfunction() == 192) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 194) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(52, force_omit, GetNumberOfSoftKeysReq_descr_.raw->forceomit);
+          decoded_length = getNumberOfSoftKeysReq().RAW_decode(GetNumberOfSoftKeysReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_getNumberOfSoftKeysReq).vtfunction() == 194) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 195) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(53, force_omit, GetTextFontDataReq_descr_.raw->forceomit);
+          decoded_length = getTextFontDataReq().RAW_decode(GetTextFontDataReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_getTextFontDataReq).vtfunction() == 195) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 199) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(54, force_omit, GetHardwareReq_descr_.raw->forceomit);
+          decoded_length = getHardwareReq().RAW_decode(GetHardwareReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_getHardwareReq).vtfunction() == 199) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 193) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(55, force_omit, GetSupportedWidecharsReq_descr_.raw->forceomit);
+          decoded_length = getSupportedWidecharsReq().RAW_decode(GetSupportedWidecharsReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_getSupportedWidecharsReq).vtfunction() == 193) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 196) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(56, force_omit, GetWindowMaskDataReq_descr_.raw->forceomit);
+          decoded_length = getWindowMaskDataReq().RAW_decode(GetWindowMaskDataReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_getWindowMaskDataReq).vtfunction() == 196) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 197) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(57, force_omit, GetSupportedObjectsReq_descr_.raw->forceomit);
+          decoded_length = getSupportedObjectsReq().RAW_decode(GetSupportedObjectsReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_getSupportedObjectsReq).vtfunction() == 197) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 208) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(58, force_omit, StoreVersionReq_descr_.raw->forceomit);
+          decoded_length = storeVersionReq().RAW_decode(StoreVersionReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_storeVersionReq).vtfunction() == 208) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 209) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(59, force_omit, LoadVersionReq_descr_.raw->forceomit);
+          decoded_length = loadVersionReq().RAW_decode(LoadVersionReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_loadVersionReq).vtfunction() == 209) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 210) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(60, force_omit, DeleteVersionReq_descr_.raw->forceomit);
+          decoded_length = deleteVersionReq().RAW_decode(DeleteVersionReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_deleteVersionReq).vtfunction() == 210) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 211) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(61, force_omit, ExtendedGetVersionsReq_descr_.raw->forceomit);
+          decoded_length = extendedGetVersionsReq().RAW_decode(ExtendedGetVersionsReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_extendedGetVersionsReq).vtfunction() == 211) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 212) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(62, force_omit, ExtendedStoreVersionReq_descr_.raw->forceomit);
+          decoded_length = extendedStoreVersionReq().RAW_decode(ExtendedStoreVersionReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_extendedStoreVersionReq).vtfunction() == 212) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 213) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(63, force_omit, ExtendedLoadVersionReq_descr_.raw->forceomit);
+          decoded_length = extendedLoadVersionReq().RAW_decode(ExtendedLoadVersionReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_extendedLoadVersionReq).vtfunction() == 213) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 214) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(64, force_omit, ExtendedDeleteVersionReq_descr_.raw->forceomit);
+          decoded_length = extendedDeleteVersionReq().RAW_decode(ExtendedDeleteVersionReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_extendedDeleteVersionReq).vtfunction() == 214) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 223) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(65, force_omit, GetVersionsReq_descr_.raw->forceomit);
+          decoded_length = getVersionsReq().RAW_decode(GetVersionsReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_getVersionsReq).vtfunction() == 223) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 253) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(66, force_omit, UnsupportedVTFunctionInd_descr_.raw->forceomit);
+          decoded_length = unsupportedVTFunctionInd().RAW_decode(UnsupportedVTFunctionInd_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_unsupportedVTFunctionInd).vtfunction() == 253) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      if (decoded_0_length > 0) {
+        if (temporal_0 == 255) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(67, force_omit, WorkingSetMaintenanceReq_descr_.raw->forceomit);
+          decoded_length = workingSetMaintenanceReq().RAW_decode(WorkingSetMaintenanceReq_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_workingSetMaintenanceReq).vtfunction() == 255) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+ }
+ clean_up();
+ return -1;
+}
+
+int ECU2VT::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const
+{
+  int encoded_length = 0;
+  myleaf.isleaf = FALSE;
+  myleaf.body.node.num_of_nodes = 68;  myleaf.body.node.nodes = init_nodes_of_enc_tree(68);
+  memset(myleaf.body.node.nodes, 0, 68 * sizeof(RAW_enc_tree *));
+  switch (union_selection) {
+  case ALT_softKeyActivationRes:
+    myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 0, SoftKeyActivationRes_descr_.raw);
+    encoded_length = field_softKeyActivationRes->RAW_encode(SoftKeyActivationRes_descr_, *myleaf.body.node.nodes[0]);
+    myleaf.body.node.nodes[0]->coding_descr = &SoftKeyActivationRes_descr_;
+    if ((*field_softKeyActivationRes).vtfunction() != 0) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={0,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 0;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_buttonActivationRes:
+    myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 1, ButtonActivationRes_descr_.raw);
+    encoded_length = field_buttonActivationRes->RAW_encode(ButtonActivationRes_descr_, *myleaf.body.node.nodes[1]);
+    myleaf.body.node.nodes[1]->coding_descr = &ButtonActivationRes_descr_;
+    if ((*field_buttonActivationRes).vtfunction() != 1) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={1,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 1;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_pointingEventRes:
+    myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 2, PointingEventRes_descr_.raw);
+    encoded_length = field_pointingEventRes->RAW_encode(PointingEventRes_descr_, *myleaf.body.node.nodes[2]);
+    myleaf.body.node.nodes[2]->coding_descr = &PointingEventRes_descr_;
+    if ((*field_pointingEventRes).vtfunction() != 2) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={2,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 2;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_vtSelectInputObjectRes:
+    myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 3, VTSelectInputObjectRes_descr_.raw);
+    encoded_length = field_vtSelectInputObjectRes->RAW_encode(VTSelectInputObjectRes_descr_, *myleaf.body.node.nodes[3]);
+    myleaf.body.node.nodes[3]->coding_descr = &VTSelectInputObjectRes_descr_;
+    if ((*field_vtSelectInputObjectRes).vtfunction() != 3) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={3,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 3;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_vtESCRes:
+    myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 4, VTESCRes_descr_.raw);
+    encoded_length = field_vtESCRes->RAW_encode(VTESCRes_descr_, *myleaf.body.node.nodes[4]);
+    myleaf.body.node.nodes[4]->coding_descr = &VTESCRes_descr_;
+    if ((*field_vtESCRes).vtfunction() != 4) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={4,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 4;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_vtChangeNumericValueRes:
+    myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 5, VTChangeNumericValueRes_descr_.raw);
+    encoded_length = field_vtChangeNumericValueRes->RAW_encode(VTChangeNumericValueRes_descr_, *myleaf.body.node.nodes[5]);
+    myleaf.body.node.nodes[5]->coding_descr = &VTChangeNumericValueRes_descr_;
+    if ((*field_vtChangeNumericValueRes).vtfunction() != 5) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={5,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 5;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_vtChangeActiveMaskRes:
+    myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 6, VTChangeActiveMaskRes_descr_.raw);
+    encoded_length = field_vtChangeActiveMaskRes->RAW_encode(VTChangeActiveMaskRes_descr_, *myleaf.body.node.nodes[6]);
+    myleaf.body.node.nodes[6]->coding_descr = &VTChangeActiveMaskRes_descr_;
+    if ((*field_vtChangeActiveMaskRes).vtfunction() != 6) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={6,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 6;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_vtChangeSoftKeyMaskReq:
+    myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 7, VTChangeSoftKeyMaskReq_descr_.raw);
+    encoded_length = field_vtChangeSoftKeyMaskReq->RAW_encode(VTChangeSoftKeyMaskReq_descr_, *myleaf.body.node.nodes[7]);
+    myleaf.body.node.nodes[7]->coding_descr = &VTChangeSoftKeyMaskReq_descr_;
+    if ((*field_vtChangeSoftKeyMaskReq).vtfunction() != 7) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={7,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 7;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_vtChangeStringValueRes:
+    myleaf.body.node.nodes[8] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 8, VTChangeStringValueRes_descr_.raw);
+    encoded_length = field_vtChangeStringValueRes->RAW_encode(VTChangeStringValueRes_descr_, *myleaf.body.node.nodes[8]);
+    myleaf.body.node.nodes[8]->coding_descr = &VTChangeStringValueRes_descr_;
+    if ((*field_vtChangeStringValueRes).vtfunction() != 8) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={8,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 8;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_vtOnUserLayoutHideShowRes:
+    myleaf.body.node.nodes[9] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 9, VTOnUserLayoutHideShowRes_descr_.raw);
+    encoded_length = field_vtOnUserLayoutHideShowRes->RAW_encode(VTOnUserLayoutHideShowRes_descr_, *myleaf.body.node.nodes[9]);
+    myleaf.body.node.nodes[9]->coding_descr = &VTOnUserLayoutHideShowRes_descr_;
+    if ((*field_vtOnUserLayoutHideShowRes).vtfunction() != 9) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={9,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 9;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_objectPoolTransferInd:
+    myleaf.body.node.nodes[10] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 10, ObjectPoolTransferInd_descr_.raw);
+    encoded_length = field_objectPoolTransferInd->RAW_encode(ObjectPoolTransferInd_descr_, *myleaf.body.node.nodes[10]);
+    myleaf.body.node.nodes[10]->coding_descr = &ObjectPoolTransferInd_descr_;
+    if ((*field_objectPoolTransferInd).vtfunction() != 17) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={10,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 17;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_endOfObjectPoolReq:
+    myleaf.body.node.nodes[11] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 11, EndOfObjectPoolReq_descr_.raw);
+    encoded_length = field_endOfObjectPoolReq->RAW_encode(EndOfObjectPoolReq_descr_, *myleaf.body.node.nodes[11]);
+    myleaf.body.node.nodes[11]->coding_descr = &EndOfObjectPoolReq_descr_;
+    if ((*field_endOfObjectPoolReq).vtfunction() != 18) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={11,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 18;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_vtfunction32ECU2VT:
+    myleaf.body.node.nodes[12] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 12, VTfunction32ECU2VT_descr_.raw);
+    encoded_length = field_vtfunction32ECU2VT->RAW_encode(VTfunction32ECU2VT_descr_, *myleaf.body.node.nodes[12]);
+    myleaf.body.node.nodes[12]->coding_descr = &VTfunction32ECU2VT_descr_;
+    if ((*field_vtfunction32ECU2VT).vtfunction() != 32) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={12,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 32;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_vtfunction33ECU2VT:
+    myleaf.body.node.nodes[13] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 13, VTfunction33ECU2VT_descr_.raw);
+    encoded_length = field_vtfunction33ECU2VT->RAW_encode(VTfunction33ECU2VT_descr_, *myleaf.body.node.nodes[13]);
+    myleaf.body.node.nodes[13]->coding_descr = &VTfunction33ECU2VT_descr_;
+    if ((*field_vtfunction33ECU2VT).vtfunction() != 33) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={13,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 33;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_vtfunction34ECU2VT:
+    myleaf.body.node.nodes[14] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 14, VTfunction34ECU2VT_descr_.raw);
+    encoded_length = field_vtfunction34ECU2VT->RAW_encode(VTfunction34ECU2VT_descr_, *myleaf.body.node.nodes[14]);
+    myleaf.body.node.nodes[14]->coding_descr = &VTfunction34ECU2VT_descr_;
+    if ((*field_vtfunction34ECU2VT).vtfunction() != 34) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={14,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 34;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_vtfunction36ECU2VT:
+    myleaf.body.node.nodes[15] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 15, VTfunction36ECU2VT_descr_.raw);
+    encoded_length = field_vtfunction36ECU2VT->RAW_encode(VTfunction36ECU2VT_descr_, *myleaf.body.node.nodes[15]);
+    myleaf.body.node.nodes[15]->coding_descr = &VTfunction36ECU2VT_descr_;
+    if ((*field_vtfunction36ECU2VT).vtfunction() != 36) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={15,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 36;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_vtfunction37ECU2VT:
+    myleaf.body.node.nodes[16] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 16, VTfunction37ECU2VT_descr_.raw);
+    encoded_length = field_vtfunction37ECU2VT->RAW_encode(VTfunction37ECU2VT_descr_, *myleaf.body.node.nodes[16]);
+    myleaf.body.node.nodes[16]->coding_descr = &VTfunction37ECU2VT_descr_;
+    if ((*field_vtfunction37ECU2VT).vtfunction() != 37) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={16,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 37;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_auxiliaryInputType2StatusInd:
+    myleaf.body.node.nodes[17] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 17, AuxiliaryInputType2StatusInd_descr_.raw);
+    encoded_length = field_auxiliaryInputType2StatusInd->RAW_encode(AuxiliaryInputType2StatusInd_descr_, *myleaf.body.node.nodes[17]);
+    myleaf.body.node.nodes[17]->coding_descr = &AuxiliaryInputType2StatusInd_descr_;
+    if ((*field_auxiliaryInputType2StatusInd).vtfunction() != 38) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={17,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 38;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_vtfunction39ECU2VT:
+    myleaf.body.node.nodes[18] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 18, VTfunction39ECU2VT_descr_.raw);
+    encoded_length = field_vtfunction39ECU2VT->RAW_encode(VTfunction39ECU2VT_descr_, *myleaf.body.node.nodes[18]);
+    myleaf.body.node.nodes[18]->coding_descr = &VTfunction39ECU2VT_descr_;
+    if ((*field_vtfunction39ECU2VT).vtfunction() != 39) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={18,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 39;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_escReq:
+    myleaf.body.node.nodes[19] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 19, ESCreq_descr_.raw);
+    encoded_length = field_escReq->RAW_encode(ESCreq_descr_, *myleaf.body.node.nodes[19]);
+    myleaf.body.node.nodes[19]->coding_descr = &ESCreq_descr_;
+    if ((*field_escReq).vtfunction() != 146) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={19,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 146;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_hideShowObjectReq:
+    myleaf.body.node.nodes[20] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 20, HideShowObjectReq_descr_.raw);
+    encoded_length = field_hideShowObjectReq->RAW_encode(HideShowObjectReq_descr_, *myleaf.body.node.nodes[20]);
+    myleaf.body.node.nodes[20]->coding_descr = &HideShowObjectReq_descr_;
+    if ((*field_hideShowObjectReq).vtfunction() != 160) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={20,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 160;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_enableDisableObjectReq:
+    myleaf.body.node.nodes[21] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 21, EnableDisableObjectReq_descr_.raw);
+    encoded_length = field_enableDisableObjectReq->RAW_encode(EnableDisableObjectReq_descr_, *myleaf.body.node.nodes[21]);
+    myleaf.body.node.nodes[21]->coding_descr = &EnableDisableObjectReq_descr_;
+    if ((*field_enableDisableObjectReq).vtfunction() != 161) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={21,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 161;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_selectInputObjectReq:
+    myleaf.body.node.nodes[22] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 22, SelectInputObjectReq_descr_.raw);
+    encoded_length = field_selectInputObjectReq->RAW_encode(SelectInputObjectReq_descr_, *myleaf.body.node.nodes[22]);
+    myleaf.body.node.nodes[22]->coding_descr = &SelectInputObjectReq_descr_;
+    if ((*field_selectInputObjectReq).vtfunction() != 162) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={22,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 162;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_controlAudioSignalReq:
+    myleaf.body.node.nodes[23] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 23, ControlAudioSignalReq_descr_.raw);
+    encoded_length = field_controlAudioSignalReq->RAW_encode(ControlAudioSignalReq_descr_, *myleaf.body.node.nodes[23]);
+    myleaf.body.node.nodes[23]->coding_descr = &ControlAudioSignalReq_descr_;
+    if ((*field_controlAudioSignalReq).vtfunction() != 163) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={23,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 163;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_setAudioVolumeReq:
+    myleaf.body.node.nodes[24] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 24, SetAudioVolumeReq_descr_.raw);
+    encoded_length = field_setAudioVolumeReq->RAW_encode(SetAudioVolumeReq_descr_, *myleaf.body.node.nodes[24]);
+    myleaf.body.node.nodes[24]->coding_descr = &SetAudioVolumeReq_descr_;
+    if ((*field_setAudioVolumeReq).vtfunction() != 164) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={24,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 164;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_changeChildLocationReq:
+    myleaf.body.node.nodes[25] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 25, ChangeChildLocationReq_descr_.raw);
+    encoded_length = field_changeChildLocationReq->RAW_encode(ChangeChildLocationReq_descr_, *myleaf.body.node.nodes[25]);
+    myleaf.body.node.nodes[25]->coding_descr = &ChangeChildLocationReq_descr_;
+    if ((*field_changeChildLocationReq).vtfunction() != 165) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={25,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 165;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_changeSizeReq:
+    myleaf.body.node.nodes[26] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 26, ChangeSizeReq_descr_.raw);
+    encoded_length = field_changeSizeReq->RAW_encode(ChangeSizeReq_descr_, *myleaf.body.node.nodes[26]);
+    myleaf.body.node.nodes[26]->coding_descr = &ChangeSizeReq_descr_;
+    if ((*field_changeSizeReq).vtfunction() != 166) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={26,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 166;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_changeBackgroundColourReq:
+    myleaf.body.node.nodes[27] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 27, ChangeBackgroundColourReq_descr_.raw);
+    encoded_length = field_changeBackgroundColourReq->RAW_encode(ChangeBackgroundColourReq_descr_, *myleaf.body.node.nodes[27]);
+    myleaf.body.node.nodes[27]->coding_descr = &ChangeBackgroundColourReq_descr_;
+    if ((*field_changeBackgroundColourReq).vtfunction() != 167) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={27,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 167;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_changeNumericValueReq:
+    myleaf.body.node.nodes[28] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 28, ChangeNumericValueReq_descr_.raw);
+    encoded_length = field_changeNumericValueReq->RAW_encode(ChangeNumericValueReq_descr_, *myleaf.body.node.nodes[28]);
+    myleaf.body.node.nodes[28]->coding_descr = &ChangeNumericValueReq_descr_;
+    if ((*field_changeNumericValueReq).vtfunction() != 168) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={28,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 168;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_changeEndPointReq:
+    myleaf.body.node.nodes[29] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 29, ChangeEndPointReq_descr_.raw);
+    encoded_length = field_changeEndPointReq->RAW_encode(ChangeEndPointReq_descr_, *myleaf.body.node.nodes[29]);
+    myleaf.body.node.nodes[29]->coding_descr = &ChangeEndPointReq_descr_;
+    if ((*field_changeEndPointReq).vtfunction() != 169) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={29,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 169;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_changeFontAttributesReq:
+    myleaf.body.node.nodes[30] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 30, ChangeFontAttributesReq_descr_.raw);
+    encoded_length = field_changeFontAttributesReq->RAW_encode(ChangeFontAttributesReq_descr_, *myleaf.body.node.nodes[30]);
+    myleaf.body.node.nodes[30]->coding_descr = &ChangeFontAttributesReq_descr_;
+    if ((*field_changeFontAttributesReq).vtfunction() != 170) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={30,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 170;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_changeLineAttributesReq:
+    myleaf.body.node.nodes[31] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 31, ChangeLineAttributesReq_descr_.raw);
+    encoded_length = field_changeLineAttributesReq->RAW_encode(ChangeLineAttributesReq_descr_, *myleaf.body.node.nodes[31]);
+    myleaf.body.node.nodes[31]->coding_descr = &ChangeLineAttributesReq_descr_;
+    if ((*field_changeLineAttributesReq).vtfunction() != 171) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={31,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 171;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_changeFillAttributesReq:
+    myleaf.body.node.nodes[32] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 32, ChangeFillAttributesReq_descr_.raw);
+    encoded_length = field_changeFillAttributesReq->RAW_encode(ChangeFillAttributesReq_descr_, *myleaf.body.node.nodes[32]);
+    myleaf.body.node.nodes[32]->coding_descr = &ChangeFillAttributesReq_descr_;
+    if ((*field_changeFillAttributesReq).vtfunction() != 172) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={32,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 172;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_changeActiveMaskReq:
+    myleaf.body.node.nodes[33] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 33, ChangeActiveMaskReq_descr_.raw);
+    encoded_length = field_changeActiveMaskReq->RAW_encode(ChangeActiveMaskReq_descr_, *myleaf.body.node.nodes[33]);
+    myleaf.body.node.nodes[33]->coding_descr = &ChangeActiveMaskReq_descr_;
+    if ((*field_changeActiveMaskReq).vtfunction() != 173) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={33,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 173;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_changeSoftKeyMaskRes:
+    myleaf.body.node.nodes[34] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 34, ChangeSoftKeyMaskRes_descr_.raw);
+    encoded_length = field_changeSoftKeyMaskRes->RAW_encode(ChangeSoftKeyMaskRes_descr_, *myleaf.body.node.nodes[34]);
+    myleaf.body.node.nodes[34]->coding_descr = &ChangeSoftKeyMaskRes_descr_;
+    if ((*field_changeSoftKeyMaskRes).vtfunction() != 174) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={34,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 174;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_changeAttributeReq:
+    myleaf.body.node.nodes[35] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 35, ChangeAttributeReq_descr_.raw);
+    encoded_length = field_changeAttributeReq->RAW_encode(ChangeAttributeReq_descr_, *myleaf.body.node.nodes[35]);
+    myleaf.body.node.nodes[35]->coding_descr = &ChangeAttributeReq_descr_;
+    if ((*field_changeAttributeReq).vtfunction() != 175) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={35,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 175;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_changePriorityReq:
+    myleaf.body.node.nodes[36] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 36, ChangePriorityReq_descr_.raw);
+    encoded_length = field_changePriorityReq->RAW_encode(ChangePriorityReq_descr_, *myleaf.body.node.nodes[36]);
+    myleaf.body.node.nodes[36]->coding_descr = &ChangePriorityReq_descr_;
+    if ((*field_changePriorityReq).vtfunction() != 176) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={36,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 176;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_changeListItemReq:
+    myleaf.body.node.nodes[37] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 37, ChangeListItemReq_descr_.raw);
+    encoded_length = field_changeListItemReq->RAW_encode(ChangeListItemReq_descr_, *myleaf.body.node.nodes[37]);
+    myleaf.body.node.nodes[37]->coding_descr = &ChangeListItemReq_descr_;
+    if ((*field_changeListItemReq).vtfunction() != 177) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={37,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 177;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_deleteObjectPoolReq:
+    myleaf.body.node.nodes[38] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 38, DeleteObjectPoolReq_descr_.raw);
+    encoded_length = field_deleteObjectPoolReq->RAW_encode(DeleteObjectPoolReq_descr_, *myleaf.body.node.nodes[38]);
+    myleaf.body.node.nodes[38]->coding_descr = &DeleteObjectPoolReq_descr_;
+    if ((*field_deleteObjectPoolReq).vtfunction() != 178) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={38,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 178;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_changeStringValueReq:
+    myleaf.body.node.nodes[39] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 39, ChangeStringValueReq_descr_.raw);
+    encoded_length = field_changeStringValueReq->RAW_encode(ChangeStringValueReq_descr_, *myleaf.body.node.nodes[39]);
+    myleaf.body.node.nodes[39]->coding_descr = &ChangeStringValueReq_descr_;
+    if ((*field_changeStringValueReq).vtfunction() != 179) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={39,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 179;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_changeChildPositionReq:
+    myleaf.body.node.nodes[40] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 40, ChangeChildPositionReq_descr_.raw);
+    encoded_length = field_changeChildPositionReq->RAW_encode(ChangeChildPositionReq_descr_, *myleaf.body.node.nodes[40]);
+    myleaf.body.node.nodes[40]->coding_descr = &ChangeChildPositionReq_descr_;
+    if ((*field_changeChildPositionReq).vtfunction() != 180) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={40,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 180;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_changeObjectLabelReq:
+    myleaf.body.node.nodes[41] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 41, ChangeObjectLabelReq_descr_.raw);
+    encoded_length = field_changeObjectLabelReq->RAW_encode(ChangeObjectLabelReq_descr_, *myleaf.body.node.nodes[41]);
+    myleaf.body.node.nodes[41]->coding_descr = &ChangeObjectLabelReq_descr_;
+    if ((*field_changeObjectLabelReq).vtfunction() != 181) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={41,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 181;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_changePolygonPointReq:
+    myleaf.body.node.nodes[42] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 42, ChangePolygonPointReq_descr_.raw);
+    encoded_length = field_changePolygonPointReq->RAW_encode(ChangePolygonPointReq_descr_, *myleaf.body.node.nodes[42]);
+    myleaf.body.node.nodes[42]->coding_descr = &ChangePolygonPointReq_descr_;
+    if ((*field_changePolygonPointReq).vtfunction() != 182) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={42,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 182;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_changePolygonScaleReq:
+    myleaf.body.node.nodes[43] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 43, ChangePolygonScaleReq_descr_.raw);
+    encoded_length = field_changePolygonScaleReq->RAW_encode(ChangePolygonScaleReq_descr_, *myleaf.body.node.nodes[43]);
+    myleaf.body.node.nodes[43]->coding_descr = &ChangePolygonScaleReq_descr_;
+    if ((*field_changePolygonScaleReq).vtfunction() != 183) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={43,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 183;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_graphicsContextReq:
+    myleaf.body.node.nodes[44] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 44, GraphicsContextReq_descr_.raw);
+    encoded_length = field_graphicsContextReq->RAW_encode(GraphicsContextReq_descr_, *myleaf.body.node.nodes[44]);
+    myleaf.body.node.nodes[44]->coding_descr = &GraphicsContextReq_descr_;
+    if ((*field_graphicsContextReq).vtfunction() != 184) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={44,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 184;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_getAttributeValueReq:
+    myleaf.body.node.nodes[45] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 45, GetAttributeValueReq_descr_.raw);
+    encoded_length = field_getAttributeValueReq->RAW_encode(GetAttributeValueReq_descr_, *myleaf.body.node.nodes[45]);
+    myleaf.body.node.nodes[45]->coding_descr = &GetAttributeValueReq_descr_;
+    if ((*field_getAttributeValueReq).vtfunction() != 185) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={45,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 185;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_selectColourMapReq:
+    myleaf.body.node.nodes[46] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 46, SelectColourMapReq_descr_.raw);
+    encoded_length = field_selectColourMapReq->RAW_encode(SelectColourMapReq_descr_, *myleaf.body.node.nodes[46]);
+    myleaf.body.node.nodes[46]->coding_descr = &SelectColourMapReq_descr_;
+    if ((*field_selectColourMapReq).vtfunction() != 186) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={46,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 186;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_identifyVTReq:
+    myleaf.body.node.nodes[47] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 47, IdentifyVTReq_descr_.raw);
+    encoded_length = field_identifyVTReq->RAW_encode(IdentifyVTReq_descr_, *myleaf.body.node.nodes[47]);
+    myleaf.body.node.nodes[47]->coding_descr = &IdentifyVTReq_descr_;
+    if ((*field_identifyVTReq).vtfunction() != 187) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={47,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 187;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_executeExtendedMacroReq:
+    myleaf.body.node.nodes[48] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 48, ExecuteExtendedMacroReq_descr_.raw);
+    encoded_length = field_executeExtendedMacroReq->RAW_encode(ExecuteExtendedMacroReq_descr_, *myleaf.body.node.nodes[48]);
+    myleaf.body.node.nodes[48]->coding_descr = &ExecuteExtendedMacroReq_descr_;
+    if ((*field_executeExtendedMacroReq).vtfunction() != 188) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={48,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 188;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_lockUnlockMaskReq:
+    myleaf.body.node.nodes[49] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 49, LockUnlockMaskReq_descr_.raw);
+    encoded_length = field_lockUnlockMaskReq->RAW_encode(LockUnlockMaskReq_descr_, *myleaf.body.node.nodes[49]);
+    myleaf.body.node.nodes[49]->coding_descr = &LockUnlockMaskReq_descr_;
+    if ((*field_lockUnlockMaskReq).vtfunction() != 189) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={49,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 189;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_executeMacroReq:
+    myleaf.body.node.nodes[50] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 50, ExecuteMacroReq_descr_.raw);
+    encoded_length = field_executeMacroReq->RAW_encode(ExecuteMacroReq_descr_, *myleaf.body.node.nodes[50]);
+    myleaf.body.node.nodes[50]->coding_descr = &ExecuteMacroReq_descr_;
+    if ((*field_executeMacroReq).vtfunction() != 190) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={50,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 190;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_getMemoryReq:
+    myleaf.body.node.nodes[51] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 51, GetMemoryReq_descr_.raw);
+    encoded_length = field_getMemoryReq->RAW_encode(GetMemoryReq_descr_, *myleaf.body.node.nodes[51]);
+    myleaf.body.node.nodes[51]->coding_descr = &GetMemoryReq_descr_;
+    if ((*field_getMemoryReq).vtfunction() != 192) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={51,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 192;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_getNumberOfSoftKeysReq:
+    myleaf.body.node.nodes[52] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 52, GetNumberOfSoftKeysReq_descr_.raw);
+    encoded_length = field_getNumberOfSoftKeysReq->RAW_encode(GetNumberOfSoftKeysReq_descr_, *myleaf.body.node.nodes[52]);
+    myleaf.body.node.nodes[52]->coding_descr = &GetNumberOfSoftKeysReq_descr_;
+    if ((*field_getNumberOfSoftKeysReq).vtfunction() != 194) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={52,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 194;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_getTextFontDataReq:
+    myleaf.body.node.nodes[53] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 53, GetTextFontDataReq_descr_.raw);
+    encoded_length = field_getTextFontDataReq->RAW_encode(GetTextFontDataReq_descr_, *myleaf.body.node.nodes[53]);
+    myleaf.body.node.nodes[53]->coding_descr = &GetTextFontDataReq_descr_;
+    if ((*field_getTextFontDataReq).vtfunction() != 195) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={53,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 195;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_getHardwareReq:
+    myleaf.body.node.nodes[54] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 54, GetHardwareReq_descr_.raw);
+    encoded_length = field_getHardwareReq->RAW_encode(GetHardwareReq_descr_, *myleaf.body.node.nodes[54]);
+    myleaf.body.node.nodes[54]->coding_descr = &GetHardwareReq_descr_;
+    if ((*field_getHardwareReq).vtfunction() != 199) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={54,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 199;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_getSupportedWidecharsReq:
+    myleaf.body.node.nodes[55] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 55, GetSupportedWidecharsReq_descr_.raw);
+    encoded_length = field_getSupportedWidecharsReq->RAW_encode(GetSupportedWidecharsReq_descr_, *myleaf.body.node.nodes[55]);
+    myleaf.body.node.nodes[55]->coding_descr = &GetSupportedWidecharsReq_descr_;
+    if ((*field_getSupportedWidecharsReq).vtfunction() != 193) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={55,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 193;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_getWindowMaskDataReq:
+    myleaf.body.node.nodes[56] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 56, GetWindowMaskDataReq_descr_.raw);
+    encoded_length = field_getWindowMaskDataReq->RAW_encode(GetWindowMaskDataReq_descr_, *myleaf.body.node.nodes[56]);
+    myleaf.body.node.nodes[56]->coding_descr = &GetWindowMaskDataReq_descr_;
+    if ((*field_getWindowMaskDataReq).vtfunction() != 196) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={56,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 196;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_getSupportedObjectsReq:
+    myleaf.body.node.nodes[57] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 57, GetSupportedObjectsReq_descr_.raw);
+    encoded_length = field_getSupportedObjectsReq->RAW_encode(GetSupportedObjectsReq_descr_, *myleaf.body.node.nodes[57]);
+    myleaf.body.node.nodes[57]->coding_descr = &GetSupportedObjectsReq_descr_;
+    if ((*field_getSupportedObjectsReq).vtfunction() != 197) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={57,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 197;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_storeVersionReq:
+    myleaf.body.node.nodes[58] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 58, StoreVersionReq_descr_.raw);
+    encoded_length = field_storeVersionReq->RAW_encode(StoreVersionReq_descr_, *myleaf.body.node.nodes[58]);
+    myleaf.body.node.nodes[58]->coding_descr = &StoreVersionReq_descr_;
+    if ((*field_storeVersionReq).vtfunction() != 208) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={58,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 208;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_loadVersionReq:
+    myleaf.body.node.nodes[59] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 59, LoadVersionReq_descr_.raw);
+    encoded_length = field_loadVersionReq->RAW_encode(LoadVersionReq_descr_, *myleaf.body.node.nodes[59]);
+    myleaf.body.node.nodes[59]->coding_descr = &LoadVersionReq_descr_;
+    if ((*field_loadVersionReq).vtfunction() != 209) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={59,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 209;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_deleteVersionReq:
+    myleaf.body.node.nodes[60] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 60, DeleteVersionReq_descr_.raw);
+    encoded_length = field_deleteVersionReq->RAW_encode(DeleteVersionReq_descr_, *myleaf.body.node.nodes[60]);
+    myleaf.body.node.nodes[60]->coding_descr = &DeleteVersionReq_descr_;
+    if ((*field_deleteVersionReq).vtfunction() != 210) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={60,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 210;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_extendedGetVersionsReq:
+    myleaf.body.node.nodes[61] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 61, ExtendedGetVersionsReq_descr_.raw);
+    encoded_length = field_extendedGetVersionsReq->RAW_encode(ExtendedGetVersionsReq_descr_, *myleaf.body.node.nodes[61]);
+    myleaf.body.node.nodes[61]->coding_descr = &ExtendedGetVersionsReq_descr_;
+    if ((*field_extendedGetVersionsReq).vtfunction() != 211) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={61,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 211;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_extendedStoreVersionReq:
+    myleaf.body.node.nodes[62] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 62, ExtendedStoreVersionReq_descr_.raw);
+    encoded_length = field_extendedStoreVersionReq->RAW_encode(ExtendedStoreVersionReq_descr_, *myleaf.body.node.nodes[62]);
+    myleaf.body.node.nodes[62]->coding_descr = &ExtendedStoreVersionReq_descr_;
+    if ((*field_extendedStoreVersionReq).vtfunction() != 212) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={62,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 212;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_extendedLoadVersionReq:
+    myleaf.body.node.nodes[63] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 63, ExtendedLoadVersionReq_descr_.raw);
+    encoded_length = field_extendedLoadVersionReq->RAW_encode(ExtendedLoadVersionReq_descr_, *myleaf.body.node.nodes[63]);
+    myleaf.body.node.nodes[63]->coding_descr = &ExtendedLoadVersionReq_descr_;
+    if ((*field_extendedLoadVersionReq).vtfunction() != 213) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={63,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 213;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_extendedDeleteVersionReq:
+    myleaf.body.node.nodes[64] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 64, ExtendedDeleteVersionReq_descr_.raw);
+    encoded_length = field_extendedDeleteVersionReq->RAW_encode(ExtendedDeleteVersionReq_descr_, *myleaf.body.node.nodes[64]);
+    myleaf.body.node.nodes[64]->coding_descr = &ExtendedDeleteVersionReq_descr_;
+    if ((*field_extendedDeleteVersionReq).vtfunction() != 214) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={64,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 214;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_getVersionsReq:
+    myleaf.body.node.nodes[65] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 65, GetVersionsReq_descr_.raw);
+    encoded_length = field_getVersionsReq->RAW_encode(GetVersionsReq_descr_, *myleaf.body.node.nodes[65]);
+    myleaf.body.node.nodes[65]->coding_descr = &GetVersionsReq_descr_;
+    if ((*field_getVersionsReq).vtfunction() != 223) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={65,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 223;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_unsupportedVTFunctionInd:
+    myleaf.body.node.nodes[66] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 66, UnsupportedVTFunctionInd_descr_.raw);
+    encoded_length = field_unsupportedVTFunctionInd->RAW_encode(UnsupportedVTFunctionInd_descr_, *myleaf.body.node.nodes[66]);
+    myleaf.body.node.nodes[66]->coding_descr = &UnsupportedVTFunctionInd_descr_;
+    if ((*field_unsupportedVTFunctionInd).vtfunction() != 253) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={66,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 253;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  case ALT_workingSetMaintenanceReq:
+    myleaf.body.node.nodes[67] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 67, WorkingSetMaintenanceReq_descr_.raw);
+    encoded_length = field_workingSetMaintenanceReq->RAW_encode(WorkingSetMaintenanceReq_descr_, *myleaf.body.node.nodes[67]);
+    myleaf.body.node.nodes[67]->coding_descr = &WorkingSetMaintenanceReq_descr_;
+    if ((*field_workingSetMaintenanceReq).vtfunction() != 255) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={67,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+  INTEGER new_val = 255;
+  new_val.RAW_encode(VTfunction_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);
+  }
+    }
+    break;
+  default:
+    TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
+  }
+  return encoded_length;
+}
+
+void ECU2VT_template::copy_value(const ECU2VT& other_value)
+{
+single_value.union_selection = other_value.get_selection();
+switch (single_value.union_selection) {
+case ECU2VT::ALT_softKeyActivationRes:
+single_value.field_softKeyActivationRes = new SoftKeyActivationRes_template(other_value.softKeyActivationRes());
+break;
+case ECU2VT::ALT_buttonActivationRes:
+single_value.field_buttonActivationRes = new ButtonActivationRes_template(other_value.buttonActivationRes());
+break;
+case ECU2VT::ALT_pointingEventRes:
+single_value.field_pointingEventRes = new PointingEventRes_template(other_value.pointingEventRes());
+break;
+case ECU2VT::ALT_vtSelectInputObjectRes:
+single_value.field_vtSelectInputObjectRes = new VTSelectInputObjectRes_template(other_value.vtSelectInputObjectRes());
+break;
+case ECU2VT::ALT_vtESCRes:
+single_value.field_vtESCRes = new VTESCRes_template(other_value.vtESCRes());
+break;
+case ECU2VT::ALT_vtChangeNumericValueRes:
+single_value.field_vtChangeNumericValueRes = new VTChangeNumericValueRes_template(other_value.vtChangeNumericValueRes());
+break;
+case ECU2VT::ALT_vtChangeActiveMaskRes:
+single_value.field_vtChangeActiveMaskRes = new VTChangeActiveMaskRes_template(other_value.vtChangeActiveMaskRes());
+break;
+case ECU2VT::ALT_vtChangeSoftKeyMaskReq:
+single_value.field_vtChangeSoftKeyMaskReq = new VTChangeSoftKeyMaskReq_template(other_value.vtChangeSoftKeyMaskReq());
+break;
+case ECU2VT::ALT_vtChangeStringValueRes:
+single_value.field_vtChangeStringValueRes = new VTChangeStringValueRes_template(other_value.vtChangeStringValueRes());
+break;
+case ECU2VT::ALT_vtOnUserLayoutHideShowRes:
+single_value.field_vtOnUserLayoutHideShowRes = new VTOnUserLayoutHideShowRes_template(other_value.vtOnUserLayoutHideShowRes());
+break;
+case ECU2VT::ALT_objectPoolTransferInd:
+single_value.field_objectPoolTransferInd = new ObjectPoolTransferInd_template(other_value.objectPoolTransferInd());
+break;
+case ECU2VT::ALT_endOfObjectPoolReq:
+single_value.field_endOfObjectPoolReq = new EndOfObjectPoolReq_template(other_value.endOfObjectPoolReq());
+break;
+case ECU2VT::ALT_vtfunction32ECU2VT:
+single_value.field_vtfunction32ECU2VT = new VTfunction32ECU2VT_template(other_value.vtfunction32ECU2VT());
+break;
+case ECU2VT::ALT_vtfunction33ECU2VT:
+single_value.field_vtfunction33ECU2VT = new VTfunction33ECU2VT_template(other_value.vtfunction33ECU2VT());
+break;
+case ECU2VT::ALT_vtfunction34ECU2VT:
+single_value.field_vtfunction34ECU2VT = new VTfunction34ECU2VT_template(other_value.vtfunction34ECU2VT());
+break;
+case ECU2VT::ALT_vtfunction36ECU2VT:
+single_value.field_vtfunction36ECU2VT = new VTfunction36ECU2VT_template(other_value.vtfunction36ECU2VT());
+break;
+case ECU2VT::ALT_vtfunction37ECU2VT:
+single_value.field_vtfunction37ECU2VT = new VTfunction37ECU2VT_template(other_value.vtfunction37ECU2VT());
+break;
+case ECU2VT::ALT_auxiliaryInputType2StatusInd:
+single_value.field_auxiliaryInputType2StatusInd = new AuxiliaryInputType2StatusInd_template(other_value.auxiliaryInputType2StatusInd());
+break;
+case ECU2VT::ALT_vtfunction39ECU2VT:
+single_value.field_vtfunction39ECU2VT = new VTfunction39ECU2VT_template(other_value.vtfunction39ECU2VT());
+break;
+case ECU2VT::ALT_escReq:
+single_value.field_escReq = new ESCreq_template(other_value.escReq());
+break;
+case ECU2VT::ALT_hideShowObjectReq:
+single_value.field_hideShowObjectReq = new HideShowObjectReq_template(other_value.hideShowObjectReq());
+break;
+case ECU2VT::ALT_enableDisableObjectReq:
+single_value.field_enableDisableObjectReq = new EnableDisableObjectReq_template(other_value.enableDisableObjectReq());
+break;
+case ECU2VT::ALT_selectInputObjectReq:
+single_value.field_selectInputObjectReq = new SelectInputObjectReq_template(other_value.selectInputObjectReq());
+break;
+case ECU2VT::ALT_controlAudioSignalReq:
+single_value.field_controlAudioSignalReq = new ControlAudioSignalReq_template(other_value.controlAudioSignalReq());
+break;
+case ECU2VT::ALT_setAudioVolumeReq:
+single_value.field_setAudioVolumeReq = new SetAudioVolumeReq_template(other_value.setAudioVolumeReq());
+break;
+case ECU2VT::ALT_changeChildLocationReq:
+single_value.field_changeChildLocationReq = new ChangeChildLocationReq_template(other_value.changeChildLocationReq());
+break;
+case ECU2VT::ALT_changeSizeReq:
+single_value.field_changeSizeReq = new ChangeSizeReq_template(other_value.changeSizeReq());
+break;
+case ECU2VT::ALT_changeBackgroundColourReq:
+single_value.field_changeBackgroundColourReq = new ChangeBackgroundColourReq_template(other_value.changeBackgroundColourReq());
+break;
+case ECU2VT::ALT_changeNumericValueReq:
+single_value.field_changeNumericValueReq = new ChangeNumericValueReq_template(other_value.changeNumericValueReq());
+break;
+case ECU2VT::ALT_changeEndPointReq:
+single_value.field_changeEndPointReq = new ChangeEndPointReq_template(other_value.changeEndPointReq());
+break;
+case ECU2VT::ALT_changeFontAttributesReq:
+single_value.field_changeFontAttributesReq = new ChangeFontAttributesReq_template(other_value.changeFontAttributesReq());
+break;
+case ECU2VT::ALT_changeLineAttributesReq:
+single_value.field_changeLineAttributesReq = new ChangeLineAttributesReq_template(other_value.changeLineAttributesReq());
+break;
+case ECU2VT::ALT_changeFillAttributesReq:
+single_value.field_changeFillAttributesReq = new ChangeFillAttributesReq_template(other_value.changeFillAttributesReq());
+break;
+case ECU2VT::ALT_changeActiveMaskReq:
+single_value.field_changeActiveMaskReq = new ChangeActiveMaskReq_template(other_value.changeActiveMaskReq());
+break;
+case ECU2VT::ALT_changeSoftKeyMaskRes:
+single_value.field_changeSoftKeyMaskRes = new ChangeSoftKeyMaskRes_template(other_value.changeSoftKeyMaskRes());
+break;
+case ECU2VT::ALT_changeAttributeReq:
+single_value.field_changeAttributeReq = new ChangeAttributeReq_template(other_value.changeAttributeReq());
+break;
+case ECU2VT::ALT_changePriorityReq:
+single_value.field_changePriorityReq = new ChangePriorityReq_template(other_value.changePriorityReq());
+break;
+case ECU2VT::ALT_changeListItemReq:
+single_value.field_changeListItemReq = new ChangeListItemReq_template(other_value.changeListItemReq());
+break;
+case ECU2VT::ALT_deleteObjectPoolReq:
+single_value.field_deleteObjectPoolReq = new DeleteObjectPoolReq_template(other_value.deleteObjectPoolReq());
+break;
+case ECU2VT::ALT_changeStringValueReq:
+single_value.field_changeStringValueReq = new ChangeStringValueReq_template(other_value.changeStringValueReq());
+break;
+case ECU2VT::ALT_changeChildPositionReq:
+single_value.field_changeChildPositionReq = new ChangeChildPositionReq_template(other_value.changeChildPositionReq());
+break;
+case ECU2VT::ALT_changeObjectLabelReq:
+single_value.field_changeObjectLabelReq = new ChangeObjectLabelReq_template(other_value.changeObjectLabelReq());
+break;
+case ECU2VT::ALT_changePolygonPointReq:
+single_value.field_changePolygonPointReq = new ChangePolygonPointReq_template(other_value.changePolygonPointReq());
+break;
+case ECU2VT::ALT_changePolygonScaleReq:
+single_value.field_changePolygonScaleReq = new ChangePolygonScaleReq_template(other_value.changePolygonScaleReq());
+break;
+case ECU2VT::ALT_graphicsContextReq:
+single_value.field_graphicsContextReq = new GraphicsContextReq_template(other_value.graphicsContextReq());
+break;
+case ECU2VT::ALT_getAttributeValueReq:
+single_value.field_getAttributeValueReq = new GetAttributeValueReq_template(other_value.getAttributeValueReq());
+break;
+case ECU2VT::ALT_selectColourMapReq:
+single_value.field_selectColourMapReq = new SelectColourMapReq_template(other_value.selectColourMapReq());
+break;
+case ECU2VT::ALT_identifyVTReq:
+single_value.field_identifyVTReq = new IdentifyVTReq_template(other_value.identifyVTReq());
+break;
+case ECU2VT::ALT_executeExtendedMacroReq:
+single_value.field_executeExtendedMacroReq = new ExecuteExtendedMacroReq_template(other_value.executeExtendedMacroReq());
+break;
+case ECU2VT::ALT_lockUnlockMaskReq:
+single_value.field_lockUnlockMaskReq = new LockUnlockMaskReq_template(other_value.lockUnlockMaskReq());
+break;
+case ECU2VT::ALT_executeMacroReq:
+single_value.field_executeMacroReq = new ExecuteMacroReq_template(other_value.executeMacroReq());
+break;
+case ECU2VT::ALT_getMemoryReq:
+single_value.field_getMemoryReq = new GetMemoryReq_template(other_value.getMemoryReq());
+break;
+case ECU2VT::ALT_getNumberOfSoftKeysReq:
+single_value.field_getNumberOfSoftKeysReq = new GetNumberOfSoftKeysReq_template(other_value.getNumberOfSoftKeysReq());
+break;
+case ECU2VT::ALT_getTextFontDataReq:
+single_value.field_getTextFontDataReq = new GetTextFontDataReq_template(other_value.getTextFontDataReq());
+break;
+case ECU2VT::ALT_getHardwareReq:
+single_value.field_getHardwareReq = new GetHardwareReq_template(other_value.getHardwareReq());
+break;
+case ECU2VT::ALT_getSupportedWidecharsReq:
+single_value.field_getSupportedWidecharsReq = new GetSupportedWidecharsReq_template(other_value.getSupportedWidecharsReq());
+break;
+case ECU2VT::ALT_getWindowMaskDataReq:
+single_value.field_getWindowMaskDataReq = new GetWindowMaskDataReq_template(other_value.getWindowMaskDataReq());
+break;
+case ECU2VT::ALT_getSupportedObjectsReq:
+single_value.field_getSupportedObjectsReq = new GetSupportedObjectsReq_template(other_value.getSupportedObjectsReq());
+break;
+case ECU2VT::ALT_storeVersionReq:
+single_value.field_storeVersionReq = new StoreVersionReq_template(other_value.storeVersionReq());
+break;
+case ECU2VT::ALT_loadVersionReq:
+single_value.field_loadVersionReq = new LoadVersionReq_template(other_value.loadVersionReq());
+break;
+case ECU2VT::ALT_deleteVersionReq:
+single_value.field_deleteVersionReq = new DeleteVersionReq_template(other_value.deleteVersionReq());
+break;
+case ECU2VT::ALT_extendedGetVersionsReq:
+single_value.field_extendedGetVersionsReq = new ExtendedGetVersionsReq_template(other_value.extendedGetVersionsReq());
+break;
+case ECU2VT::ALT_extendedStoreVersionReq:
+single_value.field_extendedStoreVersionReq = new ExtendedStoreVersionReq_template(other_value.extendedStoreVersionReq());
+break;
+case ECU2VT::ALT_extendedLoadVersionReq:
+single_value.field_extendedLoadVersionReq = new ExtendedLoadVersionReq_template(other_value.extendedLoadVersionReq());
+break;
+case ECU2VT::ALT_extendedDeleteVersionReq:
+single_value.field_extendedDeleteVersionReq = new ExtendedDeleteVersionReq_template(other_value.extendedDeleteVersionReq());
+break;
+case ECU2VT::ALT_getVersionsReq:
+single_value.field_getVersionsReq = new GetVersionsReq_template(other_value.getVersionsReq());
+break;
+case ECU2VT::ALT_unsupportedVTFunctionInd:
+single_value.field_unsupportedVTFunctionInd = new UnsupportedVTFunctionInd_template(other_value.unsupportedVTFunctionInd());
+break;
+case ECU2VT::ALT_workingSetMaintenanceReq:
+single_value.field_workingSetMaintenanceReq = new WorkingSetMaintenanceReq_template(other_value.workingSetMaintenanceReq());
+break;
+default:
+TTCN_error("Initializing a template with an unbound value of type @IsobusVTMessageTypes.ECU2VT.");
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ECU2VT_template::copy_template(const ECU2VT_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 ECU2VT::ALT_softKeyActivationRes:
+single_value.field_softKeyActivationRes = new SoftKeyActivationRes_template(*other_value.single_value.field_softKeyActivationRes);
+break;
+case ECU2VT::ALT_buttonActivationRes:
+single_value.field_buttonActivationRes = new ButtonActivationRes_template(*other_value.single_value.field_buttonActivationRes);
+break;
+case ECU2VT::ALT_pointingEventRes:
+single_value.field_pointingEventRes = new PointingEventRes_template(*other_value.single_value.field_pointingEventRes);
+break;
+case ECU2VT::ALT_vtSelectInputObjectRes:
+single_value.field_vtSelectInputObjectRes = new VTSelectInputObjectRes_template(*other_value.single_value.field_vtSelectInputObjectRes);
+break;
+case ECU2VT::ALT_vtESCRes:
+single_value.field_vtESCRes = new VTESCRes_template(*other_value.single_value.field_vtESCRes);
+break;
+case ECU2VT::ALT_vtChangeNumericValueRes:
+single_value.field_vtChangeNumericValueRes = new VTChangeNumericValueRes_template(*other_value.single_value.field_vtChangeNumericValueRes);
+break;
+case ECU2VT::ALT_vtChangeActiveMaskRes:
+single_value.field_vtChangeActiveMaskRes = new VTChangeActiveMaskRes_template(*other_value.single_value.field_vtChangeActiveMaskRes);
+break;
+case ECU2VT::ALT_vtChangeSoftKeyMaskReq:
+single_value.field_vtChangeSoftKeyMaskReq = new VTChangeSoftKeyMaskReq_template(*other_value.single_value.field_vtChangeSoftKeyMaskReq);
+break;
+case ECU2VT::ALT_vtChangeStringValueRes:
+single_value.field_vtChangeStringValueRes = new VTChangeStringValueRes_template(*other_value.single_value.field_vtChangeStringValueRes);
+break;
+case ECU2VT::ALT_vtOnUserLayoutHideShowRes:
+single_value.field_vtOnUserLayoutHideShowRes = new VTOnUserLayoutHideShowRes_template(*other_value.single_value.field_vtOnUserLayoutHideShowRes);
+break;
+case ECU2VT::ALT_objectPoolTransferInd:
+single_value.field_objectPoolTransferInd = new ObjectPoolTransferInd_template(*other_value.single_value.field_objectPoolTransferInd);
+break;
+case ECU2VT::ALT_endOfObjectPoolReq:
+single_value.field_endOfObjectPoolReq = new EndOfObjectPoolReq_template(*other_value.single_value.field_endOfObjectPoolReq);
+break;
+case ECU2VT::ALT_vtfunction32ECU2VT:
+single_value.field_vtfunction32ECU2VT = new VTfunction32ECU2VT_template(*other_value.single_value.field_vtfunction32ECU2VT);
+break;
+case ECU2VT::ALT_vtfunction33ECU2VT:
+single_value.field_vtfunction33ECU2VT = new VTfunction33ECU2VT_template(*other_value.single_value.field_vtfunction33ECU2VT);
+break;
+case ECU2VT::ALT_vtfunction34ECU2VT:
+single_value.field_vtfunction34ECU2VT = new VTfunction34ECU2VT_template(*other_value.single_value.field_vtfunction34ECU2VT);
+break;
+case ECU2VT::ALT_vtfunction36ECU2VT:
+single_value.field_vtfunction36ECU2VT = new VTfunction36ECU2VT_template(*other_value.single_value.field_vtfunction36ECU2VT);
+break;
+case ECU2VT::ALT_vtfunction37ECU2VT:
+single_value.field_vtfunction37ECU2VT = new VTfunction37ECU2VT_template(*other_value.single_value.field_vtfunction37ECU2VT);
+break;
+case ECU2VT::ALT_auxiliaryInputType2StatusInd:
+single_value.field_auxiliaryInputType2StatusInd = new AuxiliaryInputType2StatusInd_template(*other_value.single_value.field_auxiliaryInputType2StatusInd);
+break;
+case ECU2VT::ALT_vtfunction39ECU2VT:
+single_value.field_vtfunction39ECU2VT = new VTfunction39ECU2VT_template(*other_value.single_value.field_vtfunction39ECU2VT);
+break;
+case ECU2VT::ALT_escReq:
+single_value.field_escReq = new ESCreq_template(*other_value.single_value.field_escReq);
+break;
+case ECU2VT::ALT_hideShowObjectReq:
+single_value.field_hideShowObjectReq = new HideShowObjectReq_template(*other_value.single_value.field_hideShowObjectReq);
+break;
+case ECU2VT::ALT_enableDisableObjectReq:
+single_value.field_enableDisableObjectReq = new EnableDisableObjectReq_template(*other_value.single_value.field_enableDisableObjectReq);
+break;
+case ECU2VT::ALT_selectInputObjectReq:
+single_value.field_selectInputObjectReq = new SelectInputObjectReq_template(*other_value.single_value.field_selectInputObjectReq);
+break;
+case ECU2VT::ALT_controlAudioSignalReq:
+single_value.field_controlAudioSignalReq = new ControlAudioSignalReq_template(*other_value.single_value.field_controlAudioSignalReq);
+break;
+case ECU2VT::ALT_setAudioVolumeReq:
+single_value.field_setAudioVolumeReq = new SetAudioVolumeReq_template(*other_value.single_value.field_setAudioVolumeReq);
+break;
+case ECU2VT::ALT_changeChildLocationReq:
+single_value.field_changeChildLocationReq = new ChangeChildLocationReq_template(*other_value.single_value.field_changeChildLocationReq);
+break;
+case ECU2VT::ALT_changeSizeReq:
+single_value.field_changeSizeReq = new ChangeSizeReq_template(*other_value.single_value.field_changeSizeReq);
+break;
+case ECU2VT::ALT_changeBackgroundColourReq:
+single_value.field_changeBackgroundColourReq = new ChangeBackgroundColourReq_template(*other_value.single_value.field_changeBackgroundColourReq);
+break;
+case ECU2VT::ALT_changeNumericValueReq:
+single_value.field_changeNumericValueReq = new ChangeNumericValueReq_template(*other_value.single_value.field_changeNumericValueReq);
+break;
+case ECU2VT::ALT_changeEndPointReq:
+single_value.field_changeEndPointReq = new ChangeEndPointReq_template(*other_value.single_value.field_changeEndPointReq);
+break;
+case ECU2VT::ALT_changeFontAttributesReq:
+single_value.field_changeFontAttributesReq = new ChangeFontAttributesReq_template(*other_value.single_value.field_changeFontAttributesReq);
+break;
+case ECU2VT::ALT_changeLineAttributesReq:
+single_value.field_changeLineAttributesReq = new ChangeLineAttributesReq_template(*other_value.single_value.field_changeLineAttributesReq);
+break;
+case ECU2VT::ALT_changeFillAttributesReq:
+single_value.field_changeFillAttributesReq = new ChangeFillAttributesReq_template(*other_value.single_value.field_changeFillAttributesReq);
+break;
+case ECU2VT::ALT_changeActiveMaskReq:
+single_value.field_changeActiveMaskReq = new ChangeActiveMaskReq_template(*other_value.single_value.field_changeActiveMaskReq);
+break;
+case ECU2VT::ALT_changeSoftKeyMaskRes:
+single_value.field_changeSoftKeyMaskRes = new ChangeSoftKeyMaskRes_template(*other_value.single_value.field_changeSoftKeyMaskRes);
+break;
+case ECU2VT::ALT_changeAttributeReq:
+single_value.field_changeAttributeReq = new ChangeAttributeReq_template(*other_value.single_value.field_changeAttributeReq);
+break;
+case ECU2VT::ALT_changePriorityReq:
+single_value.field_changePriorityReq = new ChangePriorityReq_template(*other_value.single_value.field_changePriorityReq);
+break;
+case ECU2VT::ALT_changeListItemReq:
+single_value.field_changeListItemReq = new ChangeListItemReq_template(*other_value.single_value.field_changeListItemReq);
+break;
+case ECU2VT::ALT_deleteObjectPoolReq:
+single_value.field_deleteObjectPoolReq = new DeleteObjectPoolReq_template(*other_value.single_value.field_deleteObjectPoolReq);
+break;
+case ECU2VT::ALT_changeStringValueReq:
+single_value.field_changeStringValueReq = new ChangeStringValueReq_template(*other_value.single_value.field_changeStringValueReq);
+break;
+case ECU2VT::ALT_changeChildPositionReq:
+single_value.field_changeChildPositionReq = new ChangeChildPositionReq_template(*other_value.single_value.field_changeChildPositionReq);
+break;
+case ECU2VT::ALT_changeObjectLabelReq:
+single_value.field_changeObjectLabelReq = new ChangeObjectLabelReq_template(*other_value.single_value.field_changeObjectLabelReq);
+break;
+case ECU2VT::ALT_changePolygonPointReq:
+single_value.field_changePolygonPointReq = new ChangePolygonPointReq_template(*other_value.single_value.field_changePolygonPointReq);
+break;
+case ECU2VT::ALT_changePolygonScaleReq:
+single_value.field_changePolygonScaleReq = new ChangePolygonScaleReq_template(*other_value.single_value.field_changePolygonScaleReq);
+break;
+case ECU2VT::ALT_graphicsContextReq:
+single_value.field_graphicsContextReq = new GraphicsContextReq_template(*other_value.single_value.field_graphicsContextReq);
+break;
+case ECU2VT::ALT_getAttributeValueReq:
+single_value.field_getAttributeValueReq = new GetAttributeValueReq_template(*other_value.single_value.field_getAttributeValueReq);
+break;
+case ECU2VT::ALT_selectColourMapReq:
+single_value.field_selectColourMapReq = new SelectColourMapReq_template(*other_value.single_value.field_selectColourMapReq);
+break;
+case ECU2VT::ALT_identifyVTReq:
+single_value.field_identifyVTReq = new IdentifyVTReq_template(*other_value.single_value.field_identifyVTReq);
+break;
+case ECU2VT::ALT_executeExtendedMacroReq:
+single_value.field_executeExtendedMacroReq = new ExecuteExtendedMacroReq_template(*other_value.single_value.field_executeExtendedMacroReq);
+break;
+case ECU2VT::ALT_lockUnlockMaskReq:
+single_value.field_lockUnlockMaskReq = new LockUnlockMaskReq_template(*other_value.single_value.field_lockUnlockMaskReq);
+break;
+case ECU2VT::ALT_executeMacroReq:
+single_value.field_executeMacroReq = new ExecuteMacroReq_template(*other_value.single_value.field_executeMacroReq);
+break;
+case ECU2VT::ALT_getMemoryReq:
+single_value.field_getMemoryReq = new GetMemoryReq_template(*other_value.single_value.field_getMemoryReq);
+break;
+case ECU2VT::ALT_getNumberOfSoftKeysReq:
+single_value.field_getNumberOfSoftKeysReq = new GetNumberOfSoftKeysReq_template(*other_value.single_value.field_getNumberOfSoftKeysReq);
+break;
+case ECU2VT::ALT_getTextFontDataReq:
+single_value.field_getTextFontDataReq = new GetTextFontDataReq_template(*other_value.single_value.field_getTextFontDataReq);
+break;
+case ECU2VT::ALT_getHardwareReq:
+single_value.field_getHardwareReq = new GetHardwareReq_template(*other_value.single_value.field_getHardwareReq);
+break;
+case ECU2VT::ALT_getSupportedWidecharsReq:
+single_value.field_getSupportedWidecharsReq = new GetSupportedWidecharsReq_template(*other_value.single_value.field_getSupportedWidecharsReq);
+break;
+case ECU2VT::ALT_getWindowMaskDataReq:
+single_value.field_getWindowMaskDataReq = new GetWindowMaskDataReq_template(*other_value.single_value.field_getWindowMaskDataReq);
+break;
+case ECU2VT::ALT_getSupportedObjectsReq:
+single_value.field_getSupportedObjectsReq = new GetSupportedObjectsReq_template(*other_value.single_value.field_getSupportedObjectsReq);
+break;
+case ECU2VT::ALT_storeVersionReq:
+single_value.field_storeVersionReq = new StoreVersionReq_template(*other_value.single_value.field_storeVersionReq);
+break;
+case ECU2VT::ALT_loadVersionReq:
+single_value.field_loadVersionReq = new LoadVersionReq_template(*other_value.single_value.field_loadVersionReq);
+break;
+case ECU2VT::ALT_deleteVersionReq:
+single_value.field_deleteVersionReq = new DeleteVersionReq_template(*other_value.single_value.field_deleteVersionReq);
+break;
+case ECU2VT::ALT_extendedGetVersionsReq:
+single_value.field_extendedGetVersionsReq = new ExtendedGetVersionsReq_template(*other_value.single_value.field_extendedGetVersionsReq);
+break;
+case ECU2VT::ALT_extendedStoreVersionReq:
+single_value.field_extendedStoreVersionReq = new ExtendedStoreVersionReq_template(*other_value.single_value.field_extendedStoreVersionReq);
+break;
+case ECU2VT::ALT_extendedLoadVersionReq:
+single_value.field_extendedLoadVersionReq = new ExtendedLoadVersionReq_template(*other_value.single_value.field_extendedLoadVersionReq);
+break;
+case ECU2VT::ALT_extendedDeleteVersionReq:
+single_value.field_extendedDeleteVersionReq = new ExtendedDeleteVersionReq_template(*other_value.single_value.field_extendedDeleteVersionReq);
+break;
+case ECU2VT::ALT_getVersionsReq:
+single_value.field_getVersionsReq = new GetVersionsReq_template(*other_value.single_value.field_getVersionsReq);
+break;
+case ECU2VT::ALT_unsupportedVTFunctionInd:
+single_value.field_unsupportedVTFunctionInd = new UnsupportedVTFunctionInd_template(*other_value.single_value.field_unsupportedVTFunctionInd);
+break;
+case ECU2VT::ALT_workingSetMaintenanceReq:
+single_value.field_workingSetMaintenanceReq = new WorkingSetMaintenanceReq_template(*other_value.single_value.field_workingSetMaintenanceReq);
+break;
+default:
+TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @IsobusVTMessageTypes.ECU2VT.");
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ECU2VT_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;
+default:
+TTCN_error("Copying an uninitialized template of union type @IsobusVTMessageTypes.ECU2VT.");
+}
+set_selection(other_value);
+}
+
+ECU2VT_template::ECU2VT_template()
+{
+}
+
+ECU2VT_template::ECU2VT_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ECU2VT_template::ECU2VT_template(const ECU2VT& other_value)
+{
+copy_value(other_value);
+}
+
+ECU2VT_template::ECU2VT_template(const OPTIONAL<ECU2VT>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ECU2VT&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of union type @IsobusVTMessageTypes.ECU2VT from an unbound optional field.");
+}
+}
+
+ECU2VT_template::ECU2VT_template(const ECU2VT_template& other_value)
+: Base_Template(){
+copy_template(other_value);
+}
+
+ECU2VT_template::~ECU2VT_template()
+{
+clean_up();
+}
+
+void ECU2VT_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case ECU2VT::ALT_softKeyActivationRes:
+delete single_value.field_softKeyActivationRes;
+break;
+case ECU2VT::ALT_buttonActivationRes:
+delete single_value.field_buttonActivationRes;
+break;
+case ECU2VT::ALT_pointingEventRes:
+delete single_value.field_pointingEventRes;
+break;
+case ECU2VT::ALT_vtSelectInputObjectRes:
+delete single_value.field_vtSelectInputObjectRes;
+break;
+case ECU2VT::ALT_vtESCRes:
+delete single_value.field_vtESCRes;
+break;
+case ECU2VT::ALT_vtChangeNumericValueRes:
+delete single_value.field_vtChangeNumericValueRes;
+break;
+case ECU2VT::ALT_vtChangeActiveMaskRes:
+delete single_value.field_vtChangeActiveMaskRes;
+break;
+case ECU2VT::ALT_vtChangeSoftKeyMaskReq:
+delete single_value.field_vtChangeSoftKeyMaskReq;
+break;
+case ECU2VT::ALT_vtChangeStringValueRes:
+delete single_value.field_vtChangeStringValueRes;
+break;
+case ECU2VT::ALT_vtOnUserLayoutHideShowRes:
+delete single_value.field_vtOnUserLayoutHideShowRes;
+break;
+case ECU2VT::ALT_objectPoolTransferInd:
+delete single_value.field_objectPoolTransferInd;
+break;
+case ECU2VT::ALT_endOfObjectPoolReq:
+delete single_value.field_endOfObjectPoolReq;
+break;
+case ECU2VT::ALT_vtfunction32ECU2VT:
+delete single_value.field_vtfunction32ECU2VT;
+break;
+case ECU2VT::ALT_vtfunction33ECU2VT:
+delete single_value.field_vtfunction33ECU2VT;
+break;
+case ECU2VT::ALT_vtfunction34ECU2VT:
+delete single_value.field_vtfunction34ECU2VT;
+break;
+case ECU2VT::ALT_vtfunction36ECU2VT:
+delete single_value.field_vtfunction36ECU2VT;
+break;
+case ECU2VT::ALT_vtfunction37ECU2VT:
+delete single_value.field_vtfunction37ECU2VT;
+break;
+case ECU2VT::ALT_auxiliaryInputType2StatusInd:
+delete single_value.field_auxiliaryInputType2StatusInd;
+break;
+case ECU2VT::ALT_vtfunction39ECU2VT:
+delete single_value.field_vtfunction39ECU2VT;
+break;
+case ECU2VT::ALT_escReq:
+delete single_value.field_escReq;
+break;
+case ECU2VT::ALT_hideShowObjectReq:
+delete single_value.field_hideShowObjectReq;
+break;
+case ECU2VT::ALT_enableDisableObjectReq:
+delete single_value.field_enableDisableObjectReq;
+break;
+case ECU2VT::ALT_selectInputObjectReq:
+delete single_value.field_selectInputObjectReq;
+break;
+case ECU2VT::ALT_controlAudioSignalReq:
+delete single_value.field_controlAudioSignalReq;
+break;
+case ECU2VT::ALT_setAudioVolumeReq:
+delete single_value.field_setAudioVolumeReq;
+break;
+case ECU2VT::ALT_changeChildLocationReq:
+delete single_value.field_changeChildLocationReq;
+break;
+case ECU2VT::ALT_changeSizeReq:
+delete single_value.field_changeSizeReq;
+break;
+case ECU2VT::ALT_changeBackgroundColourReq:
+delete single_value.field_changeBackgroundColourReq;
+break;
+case ECU2VT::ALT_changeNumericValueReq:
+delete single_value.field_changeNumericValueReq;
+break;
+case ECU2VT::ALT_changeEndPointReq:
+delete single_value.field_changeEndPointReq;
+break;
+case ECU2VT::ALT_changeFontAttributesReq:
+delete single_value.field_changeFontAttributesReq;
+break;
+case ECU2VT::ALT_changeLineAttributesReq:
+delete single_value.field_changeLineAttributesReq;
+break;
+case ECU2VT::ALT_changeFillAttributesReq:
+delete single_value.field_changeFillAttributesReq;
+break;
+case ECU2VT::ALT_changeActiveMaskReq:
+delete single_value.field_changeActiveMaskReq;
+break;
+case ECU2VT::ALT_changeSoftKeyMaskRes:
+delete single_value.field_changeSoftKeyMaskRes;
+break;
+case ECU2VT::ALT_changeAttributeReq:
+delete single_value.field_changeAttributeReq;
+break;
+case ECU2VT::ALT_changePriorityReq:
+delete single_value.field_changePriorityReq;
+break;
+case ECU2VT::ALT_changeListItemReq:
+delete single_value.field_changeListItemReq;
+break;
+case ECU2VT::ALT_deleteObjectPoolReq:
+delete single_value.field_deleteObjectPoolReq;
+break;
+case ECU2VT::ALT_changeStringValueReq:
+delete single_value.field_changeStringValueReq;
+break;
+case ECU2VT::ALT_changeChildPositionReq:
+delete single_value.field_changeChildPositionReq;
+break;
+case ECU2VT::ALT_changeObjectLabelReq:
+delete single_value.field_changeObjectLabelReq;
+break;
+case ECU2VT::ALT_changePolygonPointReq:
+delete single_value.field_changePolygonPointReq;
+break;
+case ECU2VT::ALT_changePolygonScaleReq:
+delete single_value.field_changePolygonScaleReq;
+break;
+case ECU2VT::ALT_graphicsContextReq:
+delete single_value.field_graphicsContextReq;
+break;
+case ECU2VT::ALT_getAttributeValueReq:
+delete single_value.field_getAttributeValueReq;
+break;
+case ECU2VT::ALT_selectColourMapReq:
+delete single_value.field_selectColourMapReq;
+break;
+case ECU2VT::ALT_identifyVTReq:
+delete single_value.field_identifyVTReq;
+break;
+case ECU2VT::ALT_executeExtendedMacroReq:
+delete single_value.field_executeExtendedMacroReq;
+break;
+case ECU2VT::ALT_lockUnlockMaskReq:
+delete single_value.field_lockUnlockMaskReq;
+break;
+case ECU2VT::ALT_executeMacroReq:
+delete single_value.field_executeMacroReq;
+break;
+case ECU2VT::ALT_getMemoryReq:
+delete single_value.field_getMemoryReq;
+break;
+case ECU2VT::ALT_getNumberOfSoftKeysReq:
+delete single_value.field_getNumberOfSoftKeysReq;
+break;
+case ECU2VT::ALT_getTextFontDataReq:
+delete single_value.field_getTextFontDataReq;
+break;
+case ECU2VT::ALT_getHardwareReq:
+delete single_value.field_getHardwareReq;
+break;
+case ECU2VT::ALT_getSupportedWidecharsReq:
+delete single_value.field_getSupportedWidecharsReq;
+break;
+case ECU2VT::ALT_getWindowMaskDataReq:
+delete single_value.field_getWindowMaskDataReq;
+break;
+case ECU2VT::ALT_getSupportedObjectsReq:
+delete single_value.field_getSupportedObjectsReq;
+break;
+case ECU2VT::ALT_storeVersionReq:
+delete single_value.field_storeVersionReq;
+break;
+case ECU2VT::ALT_loadVersionReq:
+delete single_value.field_loadVersionReq;
+break;
+case ECU2VT::ALT_deleteVersionReq:
+delete single_value.field_deleteVersionReq;
+break;
+case ECU2VT::ALT_extendedGetVersionsReq:
+delete single_value.field_extendedGetVersionsReq;
+break;
+case ECU2VT::ALT_extendedStoreVersionReq:
+delete single_value.field_extendedStoreVersionReq;
+break;
+case ECU2VT::ALT_extendedLoadVersionReq:
+delete single_value.field_extendedLoadVersionReq;
+break;
+case ECU2VT::ALT_extendedDeleteVersionReq:
+delete single_value.field_extendedDeleteVersionReq;
+break;
+case ECU2VT::ALT_getVersionsReq:
+delete single_value.field_getVersionsReq;
+break;
+case ECU2VT::ALT_unsupportedVTFunctionInd:
+delete single_value.field_unsupportedVTFunctionInd;
+break;
+case ECU2VT::ALT_workingSetMaintenanceReq:
+delete single_value.field_workingSetMaintenanceReq;
+default:
+break;
+}
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ECU2VT_template& ECU2VT_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ECU2VT_template& ECU2VT_template::operator=(const ECU2VT& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ECU2VT_template& ECU2VT_template::operator=(const OPTIONAL<ECU2VT>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ECU2VT&)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 @IsobusVTMessageTypes.ECU2VT.");
+}
+return *this;
+}
+
+ECU2VT_template& ECU2VT_template::operator=(const ECU2VT_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ECU2VT_template::match(const ECU2VT& 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:
+{
+ECU2VT::union_selection_type value_selection = other_value.get_selection();
+if (value_selection == ECU2VT::UNBOUND_VALUE) return FALSE;
+if (value_selection != single_value.union_selection) return FALSE;
+switch (value_selection) {
+case ECU2VT::ALT_softKeyActivationRes:
+return single_value.field_softKeyActivationRes->match(other_value.softKeyActivationRes(), legacy);
+case ECU2VT::ALT_buttonActivationRes:
+return single_value.field_buttonActivationRes->match(other_value.buttonActivationRes(), legacy);
+case ECU2VT::ALT_pointingEventRes:
+return single_value.field_pointingEventRes->match(other_value.pointingEventRes(), legacy);
+case ECU2VT::ALT_vtSelectInputObjectRes:
+return single_value.field_vtSelectInputObjectRes->match(other_value.vtSelectInputObjectRes(), legacy);
+case ECU2VT::ALT_vtESCRes:
+return single_value.field_vtESCRes->match(other_value.vtESCRes(), legacy);
+case ECU2VT::ALT_vtChangeNumericValueRes:
+return single_value.field_vtChangeNumericValueRes->match(other_value.vtChangeNumericValueRes(), legacy);
+case ECU2VT::ALT_vtChangeActiveMaskRes:
+return single_value.field_vtChangeActiveMaskRes->match(other_value.vtChangeActiveMaskRes(), legacy);
+case ECU2VT::ALT_vtChangeSoftKeyMaskReq:
+return single_value.field_vtChangeSoftKeyMaskReq->match(other_value.vtChangeSoftKeyMaskReq(), legacy);
+case ECU2VT::ALT_vtChangeStringValueRes:
+return single_value.field_vtChangeStringValueRes->match(other_value.vtChangeStringValueRes(), legacy);
+case ECU2VT::ALT_vtOnUserLayoutHideShowRes:
+return single_value.field_vtOnUserLayoutHideShowRes->match(other_value.vtOnUserLayoutHideShowRes(), legacy);
+case ECU2VT::ALT_objectPoolTransferInd:
+return single_value.field_objectPoolTransferInd->match(other_value.objectPoolTransferInd(), legacy);
+case ECU2VT::ALT_endOfObjectPoolReq:
+return single_value.field_endOfObjectPoolReq->match(other_value.endOfObjectPoolReq(), legacy);
+case ECU2VT::ALT_vtfunction32ECU2VT:
+return single_value.field_vtfunction32ECU2VT->match(other_value.vtfunction32ECU2VT(), legacy);
+case ECU2VT::ALT_vtfunction33ECU2VT:
+return single_value.field_vtfunction33ECU2VT->match(other_value.vtfunction33ECU2VT(), legacy);
+case ECU2VT::ALT_vtfunction34ECU2VT:
+return single_value.field_vtfunction34ECU2VT->match(other_value.vtfunction34ECU2VT(), legacy);
+case ECU2VT::ALT_vtfunction36ECU2VT:
+return single_value.field_vtfunction36ECU2VT->match(other_value.vtfunction36ECU2VT(), legacy);
+case ECU2VT::ALT_vtfunction37ECU2VT:
+return single_value.field_vtfunction37ECU2VT->match(other_value.vtfunction37ECU2VT(), legacy);
+case ECU2VT::ALT_auxiliaryInputType2StatusInd:
+return single_value.field_auxiliaryInputType2StatusInd->match(other_value.auxiliaryInputType2StatusInd(), legacy);
+case ECU2VT::ALT_vtfunction39ECU2VT:
+return single_value.field_vtfunction39ECU2VT->match(other_value.vtfunction39ECU2VT(), legacy);
+case ECU2VT::ALT_escReq:
+return single_value.field_escReq->match(other_value.escReq(), legacy);
+case ECU2VT::ALT_hideShowObjectReq:
+return single_value.field_hideShowObjectReq->match(other_value.hideShowObjectReq(), legacy);
+case ECU2VT::ALT_enableDisableObjectReq:
+return single_value.field_enableDisableObjectReq->match(other_value.enableDisableObjectReq(), legacy);
+case ECU2VT::ALT_selectInputObjectReq:
+return single_value.field_selectInputObjectReq->match(other_value.selectInputObjectReq(), legacy);
+case ECU2VT::ALT_controlAudioSignalReq:
+return single_value.field_controlAudioSignalReq->match(other_value.controlAudioSignalReq(), legacy);
+case ECU2VT::ALT_setAudioVolumeReq:
+return single_value.field_setAudioVolumeReq->match(other_value.setAudioVolumeReq(), legacy);
+case ECU2VT::ALT_changeChildLocationReq:
+return single_value.field_changeChildLocationReq->match(other_value.changeChildLocationReq(), legacy);
+case ECU2VT::ALT_changeSizeReq:
+return single_value.field_changeSizeReq->match(other_value.changeSizeReq(), legacy);
+case ECU2VT::ALT_changeBackgroundColourReq:
+return single_value.field_changeBackgroundColourReq->match(other_value.changeBackgroundColourReq(), legacy);
+case ECU2VT::ALT_changeNumericValueReq:
+return single_value.field_changeNumericValueReq->match(other_value.changeNumericValueReq(), legacy);
+case ECU2VT::ALT_changeEndPointReq:
+return single_value.field_changeEndPointReq->match(other_value.changeEndPointReq(), legacy);
+case ECU2VT::ALT_changeFontAttributesReq:
+return single_value.field_changeFontAttributesReq->match(other_value.changeFontAttributesReq(), legacy);
+case ECU2VT::ALT_changeLineAttributesReq:
+return single_value.field_changeLineAttributesReq->match(other_value.changeLineAttributesReq(), legacy);
+case ECU2VT::ALT_changeFillAttributesReq:
+return single_value.field_changeFillAttributesReq->match(other_value.changeFillAttributesReq(), legacy);
+case ECU2VT::ALT_changeActiveMaskReq:
+return single_value.field_changeActiveMaskReq->match(other_value.changeActiveMaskReq(), legacy);
+case ECU2VT::ALT_changeSoftKeyMaskRes:
+return single_value.field_changeSoftKeyMaskRes->match(other_value.changeSoftKeyMaskRes(), legacy);
+case ECU2VT::ALT_changeAttributeReq:
+return single_value.field_changeAttributeReq->match(other_value.changeAttributeReq(), legacy);
+case ECU2VT::ALT_changePriorityReq:
+return single_value.field_changePriorityReq->match(other_value.changePriorityReq(), legacy);
+case ECU2VT::ALT_changeListItemReq:
+return single_value.field_changeListItemReq->match(other_value.changeListItemReq(), legacy);
+case ECU2VT::ALT_deleteObjectPoolReq:
+return single_value.field_deleteObjectPoolReq->match(other_value.deleteObjectPoolReq(), legacy);
+case ECU2VT::ALT_changeStringValueReq:
+return single_value.field_changeStringValueReq->match(other_value.changeStringValueReq(), legacy);
+case ECU2VT::ALT_changeChildPositionReq:
+return single_value.field_changeChildPositionReq->match(other_value.changeChildPositionReq(), legacy);
+case ECU2VT::ALT_changeObjectLabelReq:
+return single_value.field_changeObjectLabelReq->match(other_value.changeObjectLabelReq(), legacy);
+case ECU2VT::ALT_changePolygonPointReq:
+return single_value.field_changePolygonPointReq->match(other_value.changePolygonPointReq(), legacy);
+case ECU2VT::ALT_changePolygonScaleReq:
+return single_value.field_changePolygonScaleReq->match(other_value.changePolygonScaleReq(), legacy);
+case ECU2VT::ALT_graphicsContextReq:
+return single_value.field_graphicsContextReq->match(other_value.graphicsContextReq(), legacy);
+case ECU2VT::ALT_getAttributeValueReq:
+return single_value.field_getAttributeValueReq->match(other_value.getAttributeValueReq(), legacy);
+case ECU2VT::ALT_selectColourMapReq:
+return single_value.field_selectColourMapReq->match(other_value.selectColourMapReq(), legacy);
+case ECU2VT::ALT_identifyVTReq:
+return single_value.field_identifyVTReq->match(other_value.identifyVTReq(), legacy);
+case ECU2VT::ALT_executeExtendedMacroReq:
+return single_value.field_executeExtendedMacroReq->match(other_value.executeExtendedMacroReq(), legacy);
+case ECU2VT::ALT_lockUnlockMaskReq:
+return single_value.field_lockUnlockMaskReq->match(other_value.lockUnlockMaskReq(), legacy);
+case ECU2VT::ALT_executeMacroReq:
+return single_value.field_executeMacroReq->match(other_value.executeMacroReq(), legacy);
+case ECU2VT::ALT_getMemoryReq:
+return single_value.field_getMemoryReq->match(other_value.getMemoryReq(), legacy);
+case ECU2VT::ALT_getNumberOfSoftKeysReq:
+return single_value.field_getNumberOfSoftKeysReq->match(other_value.getNumberOfSoftKeysReq(), legacy);
+case ECU2VT::ALT_getTextFontDataReq:
+return single_value.field_getTextFontDataReq->match(other_value.getTextFontDataReq(), legacy);
+case ECU2VT::ALT_getHardwareReq:
+return single_value.field_getHardwareReq->match(other_value.getHardwareReq(), legacy);
+case ECU2VT::ALT_getSupportedWidecharsReq:
+return single_value.field_getSupportedWidecharsReq->match(other_value.getSupportedWidecharsReq(), legacy);
+case ECU2VT::ALT_getWindowMaskDataReq:
+return single_value.field_getWindowMaskDataReq->match(other_value.getWindowMaskDataReq(), legacy);
+case ECU2VT::ALT_getSupportedObjectsReq:
+return single_value.field_getSupportedObjectsReq->match(other_value.getSupportedObjectsReq(), legacy);
+case ECU2VT::ALT_storeVersionReq:
+return single_value.field_storeVersionReq->match(other_value.storeVersionReq(), legacy);
+case ECU2VT::ALT_loadVersionReq:
+return single_value.field_loadVersionReq->match(other_value.loadVersionReq(), legacy);
+case ECU2VT::ALT_deleteVersionReq:
+return single_value.field_deleteVersionReq->match(other_value.deleteVersionReq(), legacy);
+case ECU2VT::ALT_extendedGetVersionsReq:
+return single_value.field_extendedGetVersionsReq->match(other_value.extendedGetVersionsReq(), legacy);
+case ECU2VT::ALT_extendedStoreVersionReq:
+return single_value.field_extendedStoreVersionReq->match(other_value.extendedStoreVersionReq(), legacy);
+case ECU2VT::ALT_extendedLoadVersionReq:
+return single_value.field_extendedLoadVersionReq->match(other_value.extendedLoadVersionReq(), legacy);
+case ECU2VT::ALT_extendedDeleteVersionReq:
+return single_value.field_extendedDeleteVersionReq->match(other_value.extendedDeleteVersionReq(), legacy);
+case ECU2VT::ALT_getVersionsReq:
+return single_value.field_getVersionsReq->match(other_value.getVersionsReq(), legacy);
+case ECU2VT::ALT_unsupportedVTFunctionInd:
+return single_value.field_unsupportedVTFunctionInd->match(other_value.unsupportedVTFunctionInd(), legacy);
+case ECU2VT::ALT_workingSetMaintenanceReq:
+return single_value.field_workingSetMaintenanceReq->match(other_value.workingSetMaintenanceReq(), legacy);
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @IsobusVTMessageTypes.ECU2VT.");
+}
+}
+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;
+default:
+TTCN_error ("Matching an uninitialized template of union type @IsobusVTMessageTypes.ECU2VT.");
+}
+return FALSE;
+}
+
+boolean ECU2VT_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+switch (single_value.union_selection) {
+case ECU2VT::ALT_softKeyActivationRes:
+return single_value.field_softKeyActivationRes->is_value();
+case ECU2VT::ALT_buttonActivationRes:
+return single_value.field_buttonActivationRes->is_value();
+case ECU2VT::ALT_pointingEventRes:
+return single_value.field_pointingEventRes->is_value();
+case ECU2VT::ALT_vtSelectInputObjectRes:
+return single_value.field_vtSelectInputObjectRes->is_value();
+case ECU2VT::ALT_vtESCRes:
+return single_value.field_vtESCRes->is_value();
+case ECU2VT::ALT_vtChangeNumericValueRes:
+return single_value.field_vtChangeNumericValueRes->is_value();
+case ECU2VT::ALT_vtChangeActiveMaskRes:
+return single_value.field_vtChangeActiveMaskRes->is_value();
+case ECU2VT::ALT_vtChangeSoftKeyMaskReq:
+return single_value.field_vtChangeSoftKeyMaskReq->is_value();
+case ECU2VT::ALT_vtChangeStringValueRes:
+return single_value.field_vtChangeStringValueRes->is_value();
+case ECU2VT::ALT_vtOnUserLayoutHideShowRes:
+return single_value.field_vtOnUserLayoutHideShowRes->is_value();
+case ECU2VT::ALT_objectPoolTransferInd:
+return single_value.field_objectPoolTransferInd->is_value();
+case ECU2VT::ALT_endOfObjectPoolReq:
+return single_value.field_endOfObjectPoolReq->is_value();
+case ECU2VT::ALT_vtfunction32ECU2VT:
+return single_value.field_vtfunction32ECU2VT->is_value();
+case ECU2VT::ALT_vtfunction33ECU2VT:
+return single_value.field_vtfunction33ECU2VT->is_value();
+case ECU2VT::ALT_vtfunction34ECU2VT:
+return single_value.field_vtfunction34ECU2VT->is_value();
+case ECU2VT::ALT_vtfunction36ECU2VT:
+return single_value.field_vtfunction36ECU2VT->is_value();
+case ECU2VT::ALT_vtfunction37ECU2VT:
+return single_value.field_vtfunction37ECU2VT->is_value();
+case ECU2VT::ALT_auxiliaryInputType2StatusInd:
+return single_value.field_auxiliaryInputType2StatusInd->is_value();
+case ECU2VT::ALT_vtfunction39ECU2VT:
+return single_value.field_vtfunction39ECU2VT->is_value();
+case ECU2VT::ALT_escReq:
+return single_value.field_escReq->is_value();
+case ECU2VT::ALT_hideShowObjectReq:
+return single_value.field_hideShowObjectReq->is_value();
+case ECU2VT::ALT_enableDisableObjectReq:
+return single_value.field_enableDisableObjectReq->is_value();
+case ECU2VT::ALT_selectInputObjectReq:
+return single_value.field_selectInputObjectReq->is_value();
+case ECU2VT::ALT_controlAudioSignalReq:
+return single_value.field_controlAudioSignalReq->is_value();
+case ECU2VT::ALT_setAudioVolumeReq:
+return single_value.field_setAudioVolumeReq->is_value();
+case ECU2VT::ALT_changeChildLocationReq:
+return single_value.field_changeChildLocationReq->is_value();
+case ECU2VT::ALT_changeSizeReq:
+return single_value.field_changeSizeReq->is_value();
+case ECU2VT::ALT_changeBackgroundColourReq:
+return single_value.field_changeBackgroundColourReq->is_value();
+case ECU2VT::ALT_changeNumericValueReq:
+return single_value.field_changeNumericValueReq->is_value();
+case ECU2VT::ALT_changeEndPointReq:
+return single_value.field_changeEndPointReq->is_value();
+case ECU2VT::ALT_changeFontAttributesReq:
+return single_value.field_changeFontAttributesReq->is_value();
+case ECU2VT::ALT_changeLineAttributesReq:
+return single_value.field_changeLineAttributesReq->is_value();
+case ECU2VT::ALT_changeFillAttributesReq:
+return single_value.field_changeFillAttributesReq->is_value();
+case ECU2VT::ALT_changeActiveMaskReq:
+return single_value.field_changeActiveMaskReq->is_value();
+case ECU2VT::ALT_changeSoftKeyMaskRes:
+return single_value.field_changeSoftKeyMaskRes->is_value();
+case ECU2VT::ALT_changeAttributeReq:
+return single_value.field_changeAttributeReq->is_value();
+case ECU2VT::ALT_changePriorityReq:
+return single_value.field_changePriorityReq->is_value();
+case ECU2VT::ALT_changeListItemReq:
+return single_value.field_changeListItemReq->is_value();
+case ECU2VT::ALT_deleteObjectPoolReq:
+return single_value.field_deleteObjectPoolReq->is_value();
+case ECU2VT::ALT_changeStringValueReq:
+return single_value.field_changeStringValueReq->is_value();
+case ECU2VT::ALT_changeChildPositionReq:
+return single_value.field_changeChildPositionReq->is_value();
+case ECU2VT::ALT_changeObjectLabelReq:
+return single_value.field_changeObjectLabelReq->is_value();
+case ECU2VT::ALT_changePolygonPointReq:
+return single_value.field_changePolygonPointReq->is_value();
+case ECU2VT::ALT_changePolygonScaleReq:
+return single_value.field_changePolygonScaleReq->is_value();
+case ECU2VT::ALT_graphicsContextReq:
+return single_value.field_graphicsContextReq->is_value();
+case ECU2VT::ALT_getAttributeValueReq:
+return single_value.field_getAttributeValueReq->is_value();
+case ECU2VT::ALT_selectColourMapReq:
+return single_value.field_selectColourMapReq->is_value();
+case ECU2VT::ALT_identifyVTReq:
+return single_value.field_identifyVTReq->is_value();
+case ECU2VT::ALT_executeExtendedMacroReq:
+return single_value.field_executeExtendedMacroReq->is_value();
+case ECU2VT::ALT_lockUnlockMaskReq:
+return single_value.field_lockUnlockMaskReq->is_value();
+case ECU2VT::ALT_executeMacroReq:
+return single_value.field_executeMacroReq->is_value();
+case ECU2VT::ALT_getMemoryReq:
+return single_value.field_getMemoryReq->is_value();
+case ECU2VT::ALT_getNumberOfSoftKeysReq:
+return single_value.field_getNumberOfSoftKeysReq->is_value();
+case ECU2VT::ALT_getTextFontDataReq:
+return single_value.field_getTextFontDataReq->is_value();
+case ECU2VT::ALT_getHardwareReq:
+return single_value.field_getHardwareReq->is_value();
+case ECU2VT::ALT_getSupportedWidecharsReq:
+return single_value.field_getSupportedWidecharsReq->is_value();
+case ECU2VT::ALT_getWindowMaskDataReq:
+return single_value.field_getWindowMaskDataReq->is_value();
+case ECU2VT::ALT_getSupportedObjectsReq:
+return single_value.field_getSupportedObjectsReq->is_value();
+case ECU2VT::ALT_storeVersionReq:
+return single_value.field_storeVersionReq->is_value();
+case ECU2VT::ALT_loadVersionReq:
+return single_value.field_loadVersionReq->is_value();
+case ECU2VT::ALT_deleteVersionReq:
+return single_value.field_deleteVersionReq->is_value();
+case ECU2VT::ALT_extendedGetVersionsReq:
+return single_value.field_extendedGetVersionsReq->is_value();
+case ECU2VT::ALT_extendedStoreVersionReq:
+return single_value.field_extendedStoreVersionReq->is_value();
+case ECU2VT::ALT_extendedLoadVersionReq:
+return single_value.field_extendedLoadVersionReq->is_value();
+case ECU2VT::ALT_extendedDeleteVersionReq:
+return single_value.field_extendedDeleteVersionReq->is_value();
+case ECU2VT::ALT_getVersionsReq:
+return single_value.field_getVersionsReq->is_value();
+case ECU2VT::ALT_unsupportedVTFunctionInd:
+return single_value.field_unsupportedVTFunctionInd->is_value();
+case ECU2VT::ALT_workingSetMaintenanceReq:
+return single_value.field_workingSetMaintenanceReq->is_value();
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @IsobusVTMessageTypes.ECU2VT.");
+}
+}
+
+ECU2VT ECU2VT_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 @IsobusVTMessageTypes.ECU2VT.");
+ECU2VT ret_val;
+switch (single_value.union_selection) {
+case ECU2VT::ALT_softKeyActivationRes:
+ret_val.softKeyActivationRes() = single_value.field_softKeyActivationRes->valueof();
+break;
+case ECU2VT::ALT_buttonActivationRes:
+ret_val.buttonActivationRes() = single_value.field_buttonActivationRes->valueof();
+break;
+case ECU2VT::ALT_pointingEventRes:
+ret_val.pointingEventRes() = single_value.field_pointingEventRes->valueof();
+break;
+case ECU2VT::ALT_vtSelectInputObjectRes:
+ret_val.vtSelectInputObjectRes() = single_value.field_vtSelectInputObjectRes->valueof();
+break;
+case ECU2VT::ALT_vtESCRes:
+ret_val.vtESCRes() = single_value.field_vtESCRes->valueof();
+break;
+case ECU2VT::ALT_vtChangeNumericValueRes:
+ret_val.vtChangeNumericValueRes() = single_value.field_vtChangeNumericValueRes->valueof();
+break;
+case ECU2VT::ALT_vtChangeActiveMaskRes:
+ret_val.vtChangeActiveMaskRes() = single_value.field_vtChangeActiveMaskRes->valueof();
+break;
+case ECU2VT::ALT_vtChangeSoftKeyMaskReq:
+ret_val.vtChangeSoftKeyMaskReq() = single_value.field_vtChangeSoftKeyMaskReq->valueof();
+break;
+case ECU2VT::ALT_vtChangeStringValueRes:
+ret_val.vtChangeStringValueRes() = single_value.field_vtChangeStringValueRes->valueof();
+break;
+case ECU2VT::ALT_vtOnUserLayoutHideShowRes:
+ret_val.vtOnUserLayoutHideShowRes() = single_value.field_vtOnUserLayoutHideShowRes->valueof();
+break;
+case ECU2VT::ALT_objectPoolTransferInd:
+ret_val.objectPoolTransferInd() = single_value.field_objectPoolTransferInd->valueof();
+break;
+case ECU2VT::ALT_endOfObjectPoolReq:
+ret_val.endOfObjectPoolReq() = single_value.field_endOfObjectPoolReq->valueof();
+break;
+case ECU2VT::ALT_vtfunction32ECU2VT:
+ret_val.vtfunction32ECU2VT() = single_value.field_vtfunction32ECU2VT->valueof();
+break;
+case ECU2VT::ALT_vtfunction33ECU2VT:
+ret_val.vtfunction33ECU2VT() = single_value.field_vtfunction33ECU2VT->valueof();
+break;
+case ECU2VT::ALT_vtfunction34ECU2VT:
+ret_val.vtfunction34ECU2VT() = single_value.field_vtfunction34ECU2VT->valueof();
+break;
+case ECU2VT::ALT_vtfunction36ECU2VT:
+ret_val.vtfunction36ECU2VT() = single_value.field_vtfunction36ECU2VT->valueof();
+break;
+case ECU2VT::ALT_vtfunction37ECU2VT:
+ret_val.vtfunction37ECU2VT() = single_value.field_vtfunction37ECU2VT->valueof();
+break;
+case ECU2VT::ALT_auxiliaryInputType2StatusInd:
+ret_val.auxiliaryInputType2StatusInd() = single_value.field_auxiliaryInputType2StatusInd->valueof();
+break;
+case ECU2VT::ALT_vtfunction39ECU2VT:
+ret_val.vtfunction39ECU2VT() = single_value.field_vtfunction39ECU2VT->valueof();
+break;
+case ECU2VT::ALT_escReq:
+ret_val.escReq() = single_value.field_escReq->valueof();
+break;
+case ECU2VT::ALT_hideShowObjectReq:
+ret_val.hideShowObjectReq() = single_value.field_hideShowObjectReq->valueof();
+break;
+case ECU2VT::ALT_enableDisableObjectReq:
+ret_val.enableDisableObjectReq() = single_value.field_enableDisableObjectReq->valueof();
+break;
+case ECU2VT::ALT_selectInputObjectReq:
+ret_val.selectInputObjectReq() = single_value.field_selectInputObjectReq->valueof();
+break;
+case ECU2VT::ALT_controlAudioSignalReq:
+ret_val.controlAudioSignalReq() = single_value.field_controlAudioSignalReq->valueof();
+break;
+case ECU2VT::ALT_setAudioVolumeReq:
+ret_val.setAudioVolumeReq() = single_value.field_setAudioVolumeReq->valueof();
+break;
+case ECU2VT::ALT_changeChildLocationReq:
+ret_val.changeChildLocationReq() = single_value.field_changeChildLocationReq->valueof();
+break;
+case ECU2VT::ALT_changeSizeReq:
+ret_val.changeSizeReq() = single_value.field_changeSizeReq->valueof();
+break;
+case ECU2VT::ALT_changeBackgroundColourReq:
+ret_val.changeBackgroundColourReq() = single_value.field_changeBackgroundColourReq->valueof();
+break;
+case ECU2VT::ALT_changeNumericValueReq:
+ret_val.changeNumericValueReq() = single_value.field_changeNumericValueReq->valueof();
+break;
+case ECU2VT::ALT_changeEndPointReq:
+ret_val.changeEndPointReq() = single_value.field_changeEndPointReq->valueof();
+break;
+case ECU2VT::ALT_changeFontAttributesReq:
+ret_val.changeFontAttributesReq() = single_value.field_changeFontAttributesReq->valueof();
+break;
+case ECU2VT::ALT_changeLineAttributesReq:
+ret_val.changeLineAttributesReq() = single_value.field_changeLineAttributesReq->valueof();
+break;
+case ECU2VT::ALT_changeFillAttributesReq:
+ret_val.changeFillAttributesReq() = single_value.field_changeFillAttributesReq->valueof();
+break;
+case ECU2VT::ALT_changeActiveMaskReq:
+ret_val.changeActiveMaskReq() = single_value.field_changeActiveMaskReq->valueof();
+break;
+case ECU2VT::ALT_changeSoftKeyMaskRes:
+ret_val.changeSoftKeyMaskRes() = single_value.field_changeSoftKeyMaskRes->valueof();
+break;
+case ECU2VT::ALT_changeAttributeReq:
+ret_val.changeAttributeReq() = single_value.field_changeAttributeReq->valueof();
+break;
+case ECU2VT::ALT_changePriorityReq:
+ret_val.changePriorityReq() = single_value.field_changePriorityReq->valueof();
+break;
+case ECU2VT::ALT_changeListItemReq:
+ret_val.changeListItemReq() = single_value.field_changeListItemReq->valueof();
+break;
+case ECU2VT::ALT_deleteObjectPoolReq:
+ret_val.deleteObjectPoolReq() = single_value.field_deleteObjectPoolReq->valueof();
+break;
+case ECU2VT::ALT_changeStringValueReq:
+ret_val.changeStringValueReq() = single_value.field_changeStringValueReq->valueof();
+break;
+case ECU2VT::ALT_changeChildPositionReq:
+ret_val.changeChildPositionReq() = single_value.field_changeChildPositionReq->valueof();
+break;
+case ECU2VT::ALT_changeObjectLabelReq:
+ret_val.changeObjectLabelReq() = single_value.field_changeObjectLabelReq->valueof();
+break;
+case ECU2VT::ALT_changePolygonPointReq:
+ret_val.changePolygonPointReq() = single_value.field_changePolygonPointReq->valueof();
+break;
+case ECU2VT::ALT_changePolygonScaleReq:
+ret_val.changePolygonScaleReq() = single_value.field_changePolygonScaleReq->valueof();
+break;
+case ECU2VT::ALT_graphicsContextReq:
+ret_val.graphicsContextReq() = single_value.field_graphicsContextReq->valueof();
+break;
+case ECU2VT::ALT_getAttributeValueReq:
+ret_val.getAttributeValueReq() = single_value.field_getAttributeValueReq->valueof();
+break;
+case ECU2VT::ALT_selectColourMapReq:
+ret_val.selectColourMapReq() = single_value.field_selectColourMapReq->valueof();
+break;
+case ECU2VT::ALT_identifyVTReq:
+ret_val.identifyVTReq() = single_value.field_identifyVTReq->valueof();
+break;
+case ECU2VT::ALT_executeExtendedMacroReq:
+ret_val.executeExtendedMacroReq() = single_value.field_executeExtendedMacroReq->valueof();
+break;
+case ECU2VT::ALT_lockUnlockMaskReq:
+ret_val.lockUnlockMaskReq() = single_value.field_lockUnlockMaskReq->valueof();
+break;
+case ECU2VT::ALT_executeMacroReq:
+ret_val.executeMacroReq() = single_value.field_executeMacroReq->valueof();
+break;
+case ECU2VT::ALT_getMemoryReq:
+ret_val.getMemoryReq() = single_value.field_getMemoryReq->valueof();
+break;
+case ECU2VT::ALT_getNumberOfSoftKeysReq:
+ret_val.getNumberOfSoftKeysReq() = single_value.field_getNumberOfSoftKeysReq->valueof();
+break;
+case ECU2VT::ALT_getTextFontDataReq:
+ret_val.getTextFontDataReq() = single_value.field_getTextFontDataReq->valueof();
+break;
+case ECU2VT::ALT_getHardwareReq:
+ret_val.getHardwareReq() = single_value.field_getHardwareReq->valueof();
+break;
+case ECU2VT::ALT_getSupportedWidecharsReq:
+ret_val.getSupportedWidecharsReq() = single_value.field_getSupportedWidecharsReq->valueof();
+break;
+case ECU2VT::ALT_getWindowMaskDataReq:
+ret_val.getWindowMaskDataReq() = single_value.field_getWindowMaskDataReq->valueof();
+break;
+case ECU2VT::ALT_getSupportedObjectsReq:
+ret_val.getSupportedObjectsReq() = single_value.field_getSupportedObjectsReq->valueof();
+break;
+case ECU2VT::ALT_storeVersionReq:
+ret_val.storeVersionReq() = single_value.field_storeVersionReq->valueof();
+break;
+case ECU2VT::ALT_loadVersionReq:
+ret_val.loadVersionReq() = single_value.field_loadVersionReq->valueof();
+break;
+case ECU2VT::ALT_deleteVersionReq:
+ret_val.deleteVersionReq() = single_value.field_deleteVersionReq->valueof();
+break;
+case ECU2VT::ALT_extendedGetVersionsReq:
+ret_val.extendedGetVersionsReq() = single_value.field_extendedGetVersionsReq->valueof();
+break;
+case ECU2VT::ALT_extendedStoreVersionReq:
+ret_val.extendedStoreVersionReq() = single_value.field_extendedStoreVersionReq->valueof();
+break;
+case ECU2VT::ALT_extendedLoadVersionReq:
+ret_val.extendedLoadVersionReq() = single_value.field_extendedLoadVersionReq->valueof();
+break;
+case ECU2VT::ALT_extendedDeleteVersionReq:
+ret_val.extendedDeleteVersionReq() = single_value.field_extendedDeleteVersionReq->valueof();
+break;
+case ECU2VT::ALT_getVersionsReq:
+ret_val.getVersionsReq() = single_value.field_getVersionsReq->valueof();
+break;
+case ECU2VT::ALT_unsupportedVTFunctionInd:
+ret_val.unsupportedVTFunctionInd() = single_value.field_unsupportedVTFunctionInd->valueof();
+break;
+case ECU2VT::ALT_workingSetMaintenanceReq:
+ret_val.workingSetMaintenanceReq() = single_value.field_workingSetMaintenanceReq->valueof();
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @IsobusVTMessageTypes.ECU2VT.");
+}
+return ret_val;
+}
+
+ECU2VT_template& ECU2VT_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @IsobusVTMessageTypes.ECU2VT.");
+return value_list.list_value[list_index];
+}
+void ECU2VT_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error ("Internal error: Setting an invalid list for a template of union type @IsobusVTMessageTypes.ECU2VT.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ECU2VT_template[list_length];
+}
+
+SoftKeyActivationRes_template& ECU2VT_template::softKeyActivationRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_softKeyActivationRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_softKeyActivationRes = new SoftKeyActivationRes_template(ANY_VALUE);
+else single_value.field_softKeyActivationRes = new SoftKeyActivationRes_template;
+single_value.union_selection = ECU2VT::ALT_softKeyActivationRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_softKeyActivationRes;
+}
+
+const SoftKeyActivationRes_template& ECU2VT_template::softKeyActivationRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field softKeyActivationRes in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_softKeyActivationRes) TTCN_error("Accessing non-selected field softKeyActivationRes in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_softKeyActivationRes;
+}
+
+ButtonActivationRes_template& ECU2VT_template::buttonActivationRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_buttonActivationRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_buttonActivationRes = new ButtonActivationRes_template(ANY_VALUE);
+else single_value.field_buttonActivationRes = new ButtonActivationRes_template;
+single_value.union_selection = ECU2VT::ALT_buttonActivationRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_buttonActivationRes;
+}
+
+const ButtonActivationRes_template& ECU2VT_template::buttonActivationRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field buttonActivationRes in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_buttonActivationRes) TTCN_error("Accessing non-selected field buttonActivationRes in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_buttonActivationRes;
+}
+
+PointingEventRes_template& ECU2VT_template::pointingEventRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_pointingEventRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_pointingEventRes = new PointingEventRes_template(ANY_VALUE);
+else single_value.field_pointingEventRes = new PointingEventRes_template;
+single_value.union_selection = ECU2VT::ALT_pointingEventRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_pointingEventRes;
+}
+
+const PointingEventRes_template& ECU2VT_template::pointingEventRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field pointingEventRes in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_pointingEventRes) TTCN_error("Accessing non-selected field pointingEventRes in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_pointingEventRes;
+}
+
+VTSelectInputObjectRes_template& ECU2VT_template::vtSelectInputObjectRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_vtSelectInputObjectRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_vtSelectInputObjectRes = new VTSelectInputObjectRes_template(ANY_VALUE);
+else single_value.field_vtSelectInputObjectRes = new VTSelectInputObjectRes_template;
+single_value.union_selection = ECU2VT::ALT_vtSelectInputObjectRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_vtSelectInputObjectRes;
+}
+
+const VTSelectInputObjectRes_template& ECU2VT_template::vtSelectInputObjectRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field vtSelectInputObjectRes in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_vtSelectInputObjectRes) TTCN_error("Accessing non-selected field vtSelectInputObjectRes in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_vtSelectInputObjectRes;
+}
+
+VTESCRes_template& ECU2VT_template::vtESCRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_vtESCRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_vtESCRes = new VTESCRes_template(ANY_VALUE);
+else single_value.field_vtESCRes = new VTESCRes_template;
+single_value.union_selection = ECU2VT::ALT_vtESCRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_vtESCRes;
+}
+
+const VTESCRes_template& ECU2VT_template::vtESCRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field vtESCRes in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_vtESCRes) TTCN_error("Accessing non-selected field vtESCRes in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_vtESCRes;
+}
+
+VTChangeNumericValueRes_template& ECU2VT_template::vtChangeNumericValueRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_vtChangeNumericValueRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_vtChangeNumericValueRes = new VTChangeNumericValueRes_template(ANY_VALUE);
+else single_value.field_vtChangeNumericValueRes = new VTChangeNumericValueRes_template;
+single_value.union_selection = ECU2VT::ALT_vtChangeNumericValueRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_vtChangeNumericValueRes;
+}
+
+const VTChangeNumericValueRes_template& ECU2VT_template::vtChangeNumericValueRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field vtChangeNumericValueRes in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_vtChangeNumericValueRes) TTCN_error("Accessing non-selected field vtChangeNumericValueRes in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_vtChangeNumericValueRes;
+}
+
+VTChangeActiveMaskRes_template& ECU2VT_template::vtChangeActiveMaskRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_vtChangeActiveMaskRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_vtChangeActiveMaskRes = new VTChangeActiveMaskRes_template(ANY_VALUE);
+else single_value.field_vtChangeActiveMaskRes = new VTChangeActiveMaskRes_template;
+single_value.union_selection = ECU2VT::ALT_vtChangeActiveMaskRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_vtChangeActiveMaskRes;
+}
+
+const VTChangeActiveMaskRes_template& ECU2VT_template::vtChangeActiveMaskRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field vtChangeActiveMaskRes in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_vtChangeActiveMaskRes) TTCN_error("Accessing non-selected field vtChangeActiveMaskRes in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_vtChangeActiveMaskRes;
+}
+
+VTChangeSoftKeyMaskReq_template& ECU2VT_template::vtChangeSoftKeyMaskReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_vtChangeSoftKeyMaskReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_vtChangeSoftKeyMaskReq = new VTChangeSoftKeyMaskReq_template(ANY_VALUE);
+else single_value.field_vtChangeSoftKeyMaskReq = new VTChangeSoftKeyMaskReq_template;
+single_value.union_selection = ECU2VT::ALT_vtChangeSoftKeyMaskReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_vtChangeSoftKeyMaskReq;
+}
+
+const VTChangeSoftKeyMaskReq_template& ECU2VT_template::vtChangeSoftKeyMaskReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field vtChangeSoftKeyMaskReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_vtChangeSoftKeyMaskReq) TTCN_error("Accessing non-selected field vtChangeSoftKeyMaskReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_vtChangeSoftKeyMaskReq;
+}
+
+VTChangeStringValueRes_template& ECU2VT_template::vtChangeStringValueRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_vtChangeStringValueRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_vtChangeStringValueRes = new VTChangeStringValueRes_template(ANY_VALUE);
+else single_value.field_vtChangeStringValueRes = new VTChangeStringValueRes_template;
+single_value.union_selection = ECU2VT::ALT_vtChangeStringValueRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_vtChangeStringValueRes;
+}
+
+const VTChangeStringValueRes_template& ECU2VT_template::vtChangeStringValueRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field vtChangeStringValueRes in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_vtChangeStringValueRes) TTCN_error("Accessing non-selected field vtChangeStringValueRes in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_vtChangeStringValueRes;
+}
+
+VTOnUserLayoutHideShowRes_template& ECU2VT_template::vtOnUserLayoutHideShowRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_vtOnUserLayoutHideShowRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_vtOnUserLayoutHideShowRes = new VTOnUserLayoutHideShowRes_template(ANY_VALUE);
+else single_value.field_vtOnUserLayoutHideShowRes = new VTOnUserLayoutHideShowRes_template;
+single_value.union_selection = ECU2VT::ALT_vtOnUserLayoutHideShowRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_vtOnUserLayoutHideShowRes;
+}
+
+const VTOnUserLayoutHideShowRes_template& ECU2VT_template::vtOnUserLayoutHideShowRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field vtOnUserLayoutHideShowRes in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_vtOnUserLayoutHideShowRes) TTCN_error("Accessing non-selected field vtOnUserLayoutHideShowRes in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_vtOnUserLayoutHideShowRes;
+}
+
+ObjectPoolTransferInd_template& ECU2VT_template::objectPoolTransferInd()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_objectPoolTransferInd) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_objectPoolTransferInd = new ObjectPoolTransferInd_template(ANY_VALUE);
+else single_value.field_objectPoolTransferInd = new ObjectPoolTransferInd_template;
+single_value.union_selection = ECU2VT::ALT_objectPoolTransferInd;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_objectPoolTransferInd;
+}
+
+const ObjectPoolTransferInd_template& ECU2VT_template::objectPoolTransferInd() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field objectPoolTransferInd in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_objectPoolTransferInd) TTCN_error("Accessing non-selected field objectPoolTransferInd in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_objectPoolTransferInd;
+}
+
+EndOfObjectPoolReq_template& ECU2VT_template::endOfObjectPoolReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_endOfObjectPoolReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_endOfObjectPoolReq = new EndOfObjectPoolReq_template(ANY_VALUE);
+else single_value.field_endOfObjectPoolReq = new EndOfObjectPoolReq_template;
+single_value.union_selection = ECU2VT::ALT_endOfObjectPoolReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_endOfObjectPoolReq;
+}
+
+const EndOfObjectPoolReq_template& ECU2VT_template::endOfObjectPoolReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field endOfObjectPoolReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_endOfObjectPoolReq) TTCN_error("Accessing non-selected field endOfObjectPoolReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_endOfObjectPoolReq;
+}
+
+VTfunction32ECU2VT_template& ECU2VT_template::vtfunction32ECU2VT()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_vtfunction32ECU2VT) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_vtfunction32ECU2VT = new VTfunction32ECU2VT_template(ANY_VALUE);
+else single_value.field_vtfunction32ECU2VT = new VTfunction32ECU2VT_template;
+single_value.union_selection = ECU2VT::ALT_vtfunction32ECU2VT;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_vtfunction32ECU2VT;
+}
+
+const VTfunction32ECU2VT_template& ECU2VT_template::vtfunction32ECU2VT() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field vtfunction32ECU2VT in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_vtfunction32ECU2VT) TTCN_error("Accessing non-selected field vtfunction32ECU2VT in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_vtfunction32ECU2VT;
+}
+
+VTfunction33ECU2VT_template& ECU2VT_template::vtfunction33ECU2VT()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_vtfunction33ECU2VT) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_vtfunction33ECU2VT = new VTfunction33ECU2VT_template(ANY_VALUE);
+else single_value.field_vtfunction33ECU2VT = new VTfunction33ECU2VT_template;
+single_value.union_selection = ECU2VT::ALT_vtfunction33ECU2VT;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_vtfunction33ECU2VT;
+}
+
+const VTfunction33ECU2VT_template& ECU2VT_template::vtfunction33ECU2VT() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field vtfunction33ECU2VT in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_vtfunction33ECU2VT) TTCN_error("Accessing non-selected field vtfunction33ECU2VT in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_vtfunction33ECU2VT;
+}
+
+VTfunction34ECU2VT_template& ECU2VT_template::vtfunction34ECU2VT()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_vtfunction34ECU2VT) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_vtfunction34ECU2VT = new VTfunction34ECU2VT_template(ANY_VALUE);
+else single_value.field_vtfunction34ECU2VT = new VTfunction34ECU2VT_template;
+single_value.union_selection = ECU2VT::ALT_vtfunction34ECU2VT;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_vtfunction34ECU2VT;
+}
+
+const VTfunction34ECU2VT_template& ECU2VT_template::vtfunction34ECU2VT() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field vtfunction34ECU2VT in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_vtfunction34ECU2VT) TTCN_error("Accessing non-selected field vtfunction34ECU2VT in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_vtfunction34ECU2VT;
+}
+
+VTfunction36ECU2VT_template& ECU2VT_template::vtfunction36ECU2VT()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_vtfunction36ECU2VT) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_vtfunction36ECU2VT = new VTfunction36ECU2VT_template(ANY_VALUE);
+else single_value.field_vtfunction36ECU2VT = new VTfunction36ECU2VT_template;
+single_value.union_selection = ECU2VT::ALT_vtfunction36ECU2VT;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_vtfunction36ECU2VT;
+}
+
+const VTfunction36ECU2VT_template& ECU2VT_template::vtfunction36ECU2VT() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field vtfunction36ECU2VT in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_vtfunction36ECU2VT) TTCN_error("Accessing non-selected field vtfunction36ECU2VT in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_vtfunction36ECU2VT;
+}
+
+VTfunction37ECU2VT_template& ECU2VT_template::vtfunction37ECU2VT()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_vtfunction37ECU2VT) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_vtfunction37ECU2VT = new VTfunction37ECU2VT_template(ANY_VALUE);
+else single_value.field_vtfunction37ECU2VT = new VTfunction37ECU2VT_template;
+single_value.union_selection = ECU2VT::ALT_vtfunction37ECU2VT;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_vtfunction37ECU2VT;
+}
+
+const VTfunction37ECU2VT_template& ECU2VT_template::vtfunction37ECU2VT() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field vtfunction37ECU2VT in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_vtfunction37ECU2VT) TTCN_error("Accessing non-selected field vtfunction37ECU2VT in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_vtfunction37ECU2VT;
+}
+
+AuxiliaryInputType2StatusInd_template& ECU2VT_template::auxiliaryInputType2StatusInd()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_auxiliaryInputType2StatusInd) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_auxiliaryInputType2StatusInd = new AuxiliaryInputType2StatusInd_template(ANY_VALUE);
+else single_value.field_auxiliaryInputType2StatusInd = new AuxiliaryInputType2StatusInd_template;
+single_value.union_selection = ECU2VT::ALT_auxiliaryInputType2StatusInd;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_auxiliaryInputType2StatusInd;
+}
+
+const AuxiliaryInputType2StatusInd_template& ECU2VT_template::auxiliaryInputType2StatusInd() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field auxiliaryInputType2StatusInd in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_auxiliaryInputType2StatusInd) TTCN_error("Accessing non-selected field auxiliaryInputType2StatusInd in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_auxiliaryInputType2StatusInd;
+}
+
+VTfunction39ECU2VT_template& ECU2VT_template::vtfunction39ECU2VT()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_vtfunction39ECU2VT) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_vtfunction39ECU2VT = new VTfunction39ECU2VT_template(ANY_VALUE);
+else single_value.field_vtfunction39ECU2VT = new VTfunction39ECU2VT_template;
+single_value.union_selection = ECU2VT::ALT_vtfunction39ECU2VT;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_vtfunction39ECU2VT;
+}
+
+const VTfunction39ECU2VT_template& ECU2VT_template::vtfunction39ECU2VT() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field vtfunction39ECU2VT in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_vtfunction39ECU2VT) TTCN_error("Accessing non-selected field vtfunction39ECU2VT in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_vtfunction39ECU2VT;
+}
+
+ESCreq_template& ECU2VT_template::escReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_escReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_escReq = new ESCreq_template(ANY_VALUE);
+else single_value.field_escReq = new ESCreq_template;
+single_value.union_selection = ECU2VT::ALT_escReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_escReq;
+}
+
+const ESCreq_template& ECU2VT_template::escReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field escReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_escReq) TTCN_error("Accessing non-selected field escReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_escReq;
+}
+
+HideShowObjectReq_template& ECU2VT_template::hideShowObjectReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_hideShowObjectReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_hideShowObjectReq = new HideShowObjectReq_template(ANY_VALUE);
+else single_value.field_hideShowObjectReq = new HideShowObjectReq_template;
+single_value.union_selection = ECU2VT::ALT_hideShowObjectReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_hideShowObjectReq;
+}
+
+const HideShowObjectReq_template& ECU2VT_template::hideShowObjectReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field hideShowObjectReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_hideShowObjectReq) TTCN_error("Accessing non-selected field hideShowObjectReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_hideShowObjectReq;
+}
+
+EnableDisableObjectReq_template& ECU2VT_template::enableDisableObjectReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_enableDisableObjectReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_enableDisableObjectReq = new EnableDisableObjectReq_template(ANY_VALUE);
+else single_value.field_enableDisableObjectReq = new EnableDisableObjectReq_template;
+single_value.union_selection = ECU2VT::ALT_enableDisableObjectReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_enableDisableObjectReq;
+}
+
+const EnableDisableObjectReq_template& ECU2VT_template::enableDisableObjectReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field enableDisableObjectReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_enableDisableObjectReq) TTCN_error("Accessing non-selected field enableDisableObjectReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_enableDisableObjectReq;
+}
+
+SelectInputObjectReq_template& ECU2VT_template::selectInputObjectReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_selectInputObjectReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_selectInputObjectReq = new SelectInputObjectReq_template(ANY_VALUE);
+else single_value.field_selectInputObjectReq = new SelectInputObjectReq_template;
+single_value.union_selection = ECU2VT::ALT_selectInputObjectReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_selectInputObjectReq;
+}
+
+const SelectInputObjectReq_template& ECU2VT_template::selectInputObjectReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field selectInputObjectReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_selectInputObjectReq) TTCN_error("Accessing non-selected field selectInputObjectReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_selectInputObjectReq;
+}
+
+ControlAudioSignalReq_template& ECU2VT_template::controlAudioSignalReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_controlAudioSignalReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_controlAudioSignalReq = new ControlAudioSignalReq_template(ANY_VALUE);
+else single_value.field_controlAudioSignalReq = new ControlAudioSignalReq_template;
+single_value.union_selection = ECU2VT::ALT_controlAudioSignalReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_controlAudioSignalReq;
+}
+
+const ControlAudioSignalReq_template& ECU2VT_template::controlAudioSignalReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field controlAudioSignalReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_controlAudioSignalReq) TTCN_error("Accessing non-selected field controlAudioSignalReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_controlAudioSignalReq;
+}
+
+SetAudioVolumeReq_template& ECU2VT_template::setAudioVolumeReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_setAudioVolumeReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_setAudioVolumeReq = new SetAudioVolumeReq_template(ANY_VALUE);
+else single_value.field_setAudioVolumeReq = new SetAudioVolumeReq_template;
+single_value.union_selection = ECU2VT::ALT_setAudioVolumeReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_setAudioVolumeReq;
+}
+
+const SetAudioVolumeReq_template& ECU2VT_template::setAudioVolumeReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field setAudioVolumeReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_setAudioVolumeReq) TTCN_error("Accessing non-selected field setAudioVolumeReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_setAudioVolumeReq;
+}
+
+ChangeChildLocationReq_template& ECU2VT_template::changeChildLocationReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_changeChildLocationReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_changeChildLocationReq = new ChangeChildLocationReq_template(ANY_VALUE);
+else single_value.field_changeChildLocationReq = new ChangeChildLocationReq_template;
+single_value.union_selection = ECU2VT::ALT_changeChildLocationReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_changeChildLocationReq;
+}
+
+const ChangeChildLocationReq_template& ECU2VT_template::changeChildLocationReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field changeChildLocationReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_changeChildLocationReq) TTCN_error("Accessing non-selected field changeChildLocationReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_changeChildLocationReq;
+}
+
+ChangeSizeReq_template& ECU2VT_template::changeSizeReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_changeSizeReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_changeSizeReq = new ChangeSizeReq_template(ANY_VALUE);
+else single_value.field_changeSizeReq = new ChangeSizeReq_template;
+single_value.union_selection = ECU2VT::ALT_changeSizeReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_changeSizeReq;
+}
+
+const ChangeSizeReq_template& ECU2VT_template::changeSizeReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field changeSizeReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_changeSizeReq) TTCN_error("Accessing non-selected field changeSizeReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_changeSizeReq;
+}
+
+ChangeBackgroundColourReq_template& ECU2VT_template::changeBackgroundColourReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_changeBackgroundColourReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_changeBackgroundColourReq = new ChangeBackgroundColourReq_template(ANY_VALUE);
+else single_value.field_changeBackgroundColourReq = new ChangeBackgroundColourReq_template;
+single_value.union_selection = ECU2VT::ALT_changeBackgroundColourReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_changeBackgroundColourReq;
+}
+
+const ChangeBackgroundColourReq_template& ECU2VT_template::changeBackgroundColourReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field changeBackgroundColourReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_changeBackgroundColourReq) TTCN_error("Accessing non-selected field changeBackgroundColourReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_changeBackgroundColourReq;
+}
+
+ChangeNumericValueReq_template& ECU2VT_template::changeNumericValueReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_changeNumericValueReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_changeNumericValueReq = new ChangeNumericValueReq_template(ANY_VALUE);
+else single_value.field_changeNumericValueReq = new ChangeNumericValueReq_template;
+single_value.union_selection = ECU2VT::ALT_changeNumericValueReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_changeNumericValueReq;
+}
+
+const ChangeNumericValueReq_template& ECU2VT_template::changeNumericValueReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field changeNumericValueReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_changeNumericValueReq) TTCN_error("Accessing non-selected field changeNumericValueReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_changeNumericValueReq;
+}
+
+ChangeEndPointReq_template& ECU2VT_template::changeEndPointReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_changeEndPointReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_changeEndPointReq = new ChangeEndPointReq_template(ANY_VALUE);
+else single_value.field_changeEndPointReq = new ChangeEndPointReq_template;
+single_value.union_selection = ECU2VT::ALT_changeEndPointReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_changeEndPointReq;
+}
+
+const ChangeEndPointReq_template& ECU2VT_template::changeEndPointReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field changeEndPointReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_changeEndPointReq) TTCN_error("Accessing non-selected field changeEndPointReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_changeEndPointReq;
+}
+
+ChangeFontAttributesReq_template& ECU2VT_template::changeFontAttributesReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_changeFontAttributesReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_changeFontAttributesReq = new ChangeFontAttributesReq_template(ANY_VALUE);
+else single_value.field_changeFontAttributesReq = new ChangeFontAttributesReq_template;
+single_value.union_selection = ECU2VT::ALT_changeFontAttributesReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_changeFontAttributesReq;
+}
+
+const ChangeFontAttributesReq_template& ECU2VT_template::changeFontAttributesReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field changeFontAttributesReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_changeFontAttributesReq) TTCN_error("Accessing non-selected field changeFontAttributesReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_changeFontAttributesReq;
+}
+
+ChangeLineAttributesReq_template& ECU2VT_template::changeLineAttributesReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_changeLineAttributesReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_changeLineAttributesReq = new ChangeLineAttributesReq_template(ANY_VALUE);
+else single_value.field_changeLineAttributesReq = new ChangeLineAttributesReq_template;
+single_value.union_selection = ECU2VT::ALT_changeLineAttributesReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_changeLineAttributesReq;
+}
+
+const ChangeLineAttributesReq_template& ECU2VT_template::changeLineAttributesReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field changeLineAttributesReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_changeLineAttributesReq) TTCN_error("Accessing non-selected field changeLineAttributesReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_changeLineAttributesReq;
+}
+
+ChangeFillAttributesReq_template& ECU2VT_template::changeFillAttributesReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_changeFillAttributesReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_changeFillAttributesReq = new ChangeFillAttributesReq_template(ANY_VALUE);
+else single_value.field_changeFillAttributesReq = new ChangeFillAttributesReq_template;
+single_value.union_selection = ECU2VT::ALT_changeFillAttributesReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_changeFillAttributesReq;
+}
+
+const ChangeFillAttributesReq_template& ECU2VT_template::changeFillAttributesReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field changeFillAttributesReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_changeFillAttributesReq) TTCN_error("Accessing non-selected field changeFillAttributesReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_changeFillAttributesReq;
+}
+
+ChangeActiveMaskReq_template& ECU2VT_template::changeActiveMaskReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_changeActiveMaskReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_changeActiveMaskReq = new ChangeActiveMaskReq_template(ANY_VALUE);
+else single_value.field_changeActiveMaskReq = new ChangeActiveMaskReq_template;
+single_value.union_selection = ECU2VT::ALT_changeActiveMaskReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_changeActiveMaskReq;
+}
+
+const ChangeActiveMaskReq_template& ECU2VT_template::changeActiveMaskReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field changeActiveMaskReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_changeActiveMaskReq) TTCN_error("Accessing non-selected field changeActiveMaskReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_changeActiveMaskReq;
+}
+
+ChangeSoftKeyMaskRes_template& ECU2VT_template::changeSoftKeyMaskRes()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_changeSoftKeyMaskRes) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_changeSoftKeyMaskRes = new ChangeSoftKeyMaskRes_template(ANY_VALUE);
+else single_value.field_changeSoftKeyMaskRes = new ChangeSoftKeyMaskRes_template;
+single_value.union_selection = ECU2VT::ALT_changeSoftKeyMaskRes;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_changeSoftKeyMaskRes;
+}
+
+const ChangeSoftKeyMaskRes_template& ECU2VT_template::changeSoftKeyMaskRes() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field changeSoftKeyMaskRes in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_changeSoftKeyMaskRes) TTCN_error("Accessing non-selected field changeSoftKeyMaskRes in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_changeSoftKeyMaskRes;
+}
+
+ChangeAttributeReq_template& ECU2VT_template::changeAttributeReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_changeAttributeReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_changeAttributeReq = new ChangeAttributeReq_template(ANY_VALUE);
+else single_value.field_changeAttributeReq = new ChangeAttributeReq_template;
+single_value.union_selection = ECU2VT::ALT_changeAttributeReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_changeAttributeReq;
+}
+
+const ChangeAttributeReq_template& ECU2VT_template::changeAttributeReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field changeAttributeReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_changeAttributeReq) TTCN_error("Accessing non-selected field changeAttributeReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_changeAttributeReq;
+}
+
+ChangePriorityReq_template& ECU2VT_template::changePriorityReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_changePriorityReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_changePriorityReq = new ChangePriorityReq_template(ANY_VALUE);
+else single_value.field_changePriorityReq = new ChangePriorityReq_template;
+single_value.union_selection = ECU2VT::ALT_changePriorityReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_changePriorityReq;
+}
+
+const ChangePriorityReq_template& ECU2VT_template::changePriorityReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field changePriorityReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_changePriorityReq) TTCN_error("Accessing non-selected field changePriorityReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_changePriorityReq;
+}
+
+ChangeListItemReq_template& ECU2VT_template::changeListItemReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_changeListItemReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_changeListItemReq = new ChangeListItemReq_template(ANY_VALUE);
+else single_value.field_changeListItemReq = new ChangeListItemReq_template;
+single_value.union_selection = ECU2VT::ALT_changeListItemReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_changeListItemReq;
+}
+
+const ChangeListItemReq_template& ECU2VT_template::changeListItemReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field changeListItemReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_changeListItemReq) TTCN_error("Accessing non-selected field changeListItemReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_changeListItemReq;
+}
+
+DeleteObjectPoolReq_template& ECU2VT_template::deleteObjectPoolReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_deleteObjectPoolReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_deleteObjectPoolReq = new DeleteObjectPoolReq_template(ANY_VALUE);
+else single_value.field_deleteObjectPoolReq = new DeleteObjectPoolReq_template;
+single_value.union_selection = ECU2VT::ALT_deleteObjectPoolReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_deleteObjectPoolReq;
+}
+
+const DeleteObjectPoolReq_template& ECU2VT_template::deleteObjectPoolReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field deleteObjectPoolReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_deleteObjectPoolReq) TTCN_error("Accessing non-selected field deleteObjectPoolReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_deleteObjectPoolReq;
+}
+
+ChangeStringValueReq_template& ECU2VT_template::changeStringValueReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_changeStringValueReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_changeStringValueReq = new ChangeStringValueReq_template(ANY_VALUE);
+else single_value.field_changeStringValueReq = new ChangeStringValueReq_template;
+single_value.union_selection = ECU2VT::ALT_changeStringValueReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_changeStringValueReq;
+}
+
+const ChangeStringValueReq_template& ECU2VT_template::changeStringValueReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field changeStringValueReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_changeStringValueReq) TTCN_error("Accessing non-selected field changeStringValueReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_changeStringValueReq;
+}
+
+ChangeChildPositionReq_template& ECU2VT_template::changeChildPositionReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_changeChildPositionReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_changeChildPositionReq = new ChangeChildPositionReq_template(ANY_VALUE);
+else single_value.field_changeChildPositionReq = new ChangeChildPositionReq_template;
+single_value.union_selection = ECU2VT::ALT_changeChildPositionReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_changeChildPositionReq;
+}
+
+const ChangeChildPositionReq_template& ECU2VT_template::changeChildPositionReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field changeChildPositionReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_changeChildPositionReq) TTCN_error("Accessing non-selected field changeChildPositionReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_changeChildPositionReq;
+}
+
+ChangeObjectLabelReq_template& ECU2VT_template::changeObjectLabelReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_changeObjectLabelReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_changeObjectLabelReq = new ChangeObjectLabelReq_template(ANY_VALUE);
+else single_value.field_changeObjectLabelReq = new ChangeObjectLabelReq_template;
+single_value.union_selection = ECU2VT::ALT_changeObjectLabelReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_changeObjectLabelReq;
+}
+
+const ChangeObjectLabelReq_template& ECU2VT_template::changeObjectLabelReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field changeObjectLabelReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_changeObjectLabelReq) TTCN_error("Accessing non-selected field changeObjectLabelReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_changeObjectLabelReq;
+}
+
+ChangePolygonPointReq_template& ECU2VT_template::changePolygonPointReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_changePolygonPointReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_changePolygonPointReq = new ChangePolygonPointReq_template(ANY_VALUE);
+else single_value.field_changePolygonPointReq = new ChangePolygonPointReq_template;
+single_value.union_selection = ECU2VT::ALT_changePolygonPointReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_changePolygonPointReq;
+}
+
+const ChangePolygonPointReq_template& ECU2VT_template::changePolygonPointReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field changePolygonPointReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_changePolygonPointReq) TTCN_error("Accessing non-selected field changePolygonPointReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_changePolygonPointReq;
+}
+
+ChangePolygonScaleReq_template& ECU2VT_template::changePolygonScaleReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_changePolygonScaleReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_changePolygonScaleReq = new ChangePolygonScaleReq_template(ANY_VALUE);
+else single_value.field_changePolygonScaleReq = new ChangePolygonScaleReq_template;
+single_value.union_selection = ECU2VT::ALT_changePolygonScaleReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_changePolygonScaleReq;
+}
+
+const ChangePolygonScaleReq_template& ECU2VT_template::changePolygonScaleReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field changePolygonScaleReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_changePolygonScaleReq) TTCN_error("Accessing non-selected field changePolygonScaleReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_changePolygonScaleReq;
+}
+
+GraphicsContextReq_template& ECU2VT_template::graphicsContextReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_graphicsContextReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_graphicsContextReq = new GraphicsContextReq_template(ANY_VALUE);
+else single_value.field_graphicsContextReq = new GraphicsContextReq_template;
+single_value.union_selection = ECU2VT::ALT_graphicsContextReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_graphicsContextReq;
+}
+
+const GraphicsContextReq_template& ECU2VT_template::graphicsContextReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field graphicsContextReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_graphicsContextReq) TTCN_error("Accessing non-selected field graphicsContextReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_graphicsContextReq;
+}
+
+GetAttributeValueReq_template& ECU2VT_template::getAttributeValueReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_getAttributeValueReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_getAttributeValueReq = new GetAttributeValueReq_template(ANY_VALUE);
+else single_value.field_getAttributeValueReq = new GetAttributeValueReq_template;
+single_value.union_selection = ECU2VT::ALT_getAttributeValueReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_getAttributeValueReq;
+}
+
+const GetAttributeValueReq_template& ECU2VT_template::getAttributeValueReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field getAttributeValueReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_getAttributeValueReq) TTCN_error("Accessing non-selected field getAttributeValueReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_getAttributeValueReq;
+}
+
+SelectColourMapReq_template& ECU2VT_template::selectColourMapReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_selectColourMapReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_selectColourMapReq = new SelectColourMapReq_template(ANY_VALUE);
+else single_value.field_selectColourMapReq = new SelectColourMapReq_template;
+single_value.union_selection = ECU2VT::ALT_selectColourMapReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_selectColourMapReq;
+}
+
+const SelectColourMapReq_template& ECU2VT_template::selectColourMapReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field selectColourMapReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_selectColourMapReq) TTCN_error("Accessing non-selected field selectColourMapReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_selectColourMapReq;
+}
+
+IdentifyVTReq_template& ECU2VT_template::identifyVTReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_identifyVTReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_identifyVTReq = new IdentifyVTReq_template(ANY_VALUE);
+else single_value.field_identifyVTReq = new IdentifyVTReq_template;
+single_value.union_selection = ECU2VT::ALT_identifyVTReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_identifyVTReq;
+}
+
+const IdentifyVTReq_template& ECU2VT_template::identifyVTReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field identifyVTReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_identifyVTReq) TTCN_error("Accessing non-selected field identifyVTReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_identifyVTReq;
+}
+
+ExecuteExtendedMacroReq_template& ECU2VT_template::executeExtendedMacroReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_executeExtendedMacroReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_executeExtendedMacroReq = new ExecuteExtendedMacroReq_template(ANY_VALUE);
+else single_value.field_executeExtendedMacroReq = new ExecuteExtendedMacroReq_template;
+single_value.union_selection = ECU2VT::ALT_executeExtendedMacroReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_executeExtendedMacroReq;
+}
+
+const ExecuteExtendedMacroReq_template& ECU2VT_template::executeExtendedMacroReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field executeExtendedMacroReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_executeExtendedMacroReq) TTCN_error("Accessing non-selected field executeExtendedMacroReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_executeExtendedMacroReq;
+}
+
+LockUnlockMaskReq_template& ECU2VT_template::lockUnlockMaskReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_lockUnlockMaskReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_lockUnlockMaskReq = new LockUnlockMaskReq_template(ANY_VALUE);
+else single_value.field_lockUnlockMaskReq = new LockUnlockMaskReq_template;
+single_value.union_selection = ECU2VT::ALT_lockUnlockMaskReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_lockUnlockMaskReq;
+}
+
+const LockUnlockMaskReq_template& ECU2VT_template::lockUnlockMaskReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field lockUnlockMaskReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_lockUnlockMaskReq) TTCN_error("Accessing non-selected field lockUnlockMaskReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_lockUnlockMaskReq;
+}
+
+ExecuteMacroReq_template& ECU2VT_template::executeMacroReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_executeMacroReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_executeMacroReq = new ExecuteMacroReq_template(ANY_VALUE);
+else single_value.field_executeMacroReq = new ExecuteMacroReq_template;
+single_value.union_selection = ECU2VT::ALT_executeMacroReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_executeMacroReq;
+}
+
+const ExecuteMacroReq_template& ECU2VT_template::executeMacroReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field executeMacroReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_executeMacroReq) TTCN_error("Accessing non-selected field executeMacroReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_executeMacroReq;
+}
+
+GetMemoryReq_template& ECU2VT_template::getMemoryReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_getMemoryReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_getMemoryReq = new GetMemoryReq_template(ANY_VALUE);
+else single_value.field_getMemoryReq = new GetMemoryReq_template;
+single_value.union_selection = ECU2VT::ALT_getMemoryReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_getMemoryReq;
+}
+
+const GetMemoryReq_template& ECU2VT_template::getMemoryReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field getMemoryReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_getMemoryReq) TTCN_error("Accessing non-selected field getMemoryReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_getMemoryReq;
+}
+
+GetNumberOfSoftKeysReq_template& ECU2VT_template::getNumberOfSoftKeysReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_getNumberOfSoftKeysReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_getNumberOfSoftKeysReq = new GetNumberOfSoftKeysReq_template(ANY_VALUE);
+else single_value.field_getNumberOfSoftKeysReq = new GetNumberOfSoftKeysReq_template;
+single_value.union_selection = ECU2VT::ALT_getNumberOfSoftKeysReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_getNumberOfSoftKeysReq;
+}
+
+const GetNumberOfSoftKeysReq_template& ECU2VT_template::getNumberOfSoftKeysReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field getNumberOfSoftKeysReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_getNumberOfSoftKeysReq) TTCN_error("Accessing non-selected field getNumberOfSoftKeysReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_getNumberOfSoftKeysReq;
+}
+
+GetTextFontDataReq_template& ECU2VT_template::getTextFontDataReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_getTextFontDataReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_getTextFontDataReq = new GetTextFontDataReq_template(ANY_VALUE);
+else single_value.field_getTextFontDataReq = new GetTextFontDataReq_template;
+single_value.union_selection = ECU2VT::ALT_getTextFontDataReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_getTextFontDataReq;
+}
+
+const GetTextFontDataReq_template& ECU2VT_template::getTextFontDataReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field getTextFontDataReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_getTextFontDataReq) TTCN_error("Accessing non-selected field getTextFontDataReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_getTextFontDataReq;
+}
+
+GetHardwareReq_template& ECU2VT_template::getHardwareReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_getHardwareReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_getHardwareReq = new GetHardwareReq_template(ANY_VALUE);
+else single_value.field_getHardwareReq = new GetHardwareReq_template;
+single_value.union_selection = ECU2VT::ALT_getHardwareReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_getHardwareReq;
+}
+
+const GetHardwareReq_template& ECU2VT_template::getHardwareReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field getHardwareReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_getHardwareReq) TTCN_error("Accessing non-selected field getHardwareReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_getHardwareReq;
+}
+
+GetSupportedWidecharsReq_template& ECU2VT_template::getSupportedWidecharsReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_getSupportedWidecharsReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_getSupportedWidecharsReq = new GetSupportedWidecharsReq_template(ANY_VALUE);
+else single_value.field_getSupportedWidecharsReq = new GetSupportedWidecharsReq_template;
+single_value.union_selection = ECU2VT::ALT_getSupportedWidecharsReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_getSupportedWidecharsReq;
+}
+
+const GetSupportedWidecharsReq_template& ECU2VT_template::getSupportedWidecharsReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field getSupportedWidecharsReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_getSupportedWidecharsReq) TTCN_error("Accessing non-selected field getSupportedWidecharsReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_getSupportedWidecharsReq;
+}
+
+GetWindowMaskDataReq_template& ECU2VT_template::getWindowMaskDataReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_getWindowMaskDataReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_getWindowMaskDataReq = new GetWindowMaskDataReq_template(ANY_VALUE);
+else single_value.field_getWindowMaskDataReq = new GetWindowMaskDataReq_template;
+single_value.union_selection = ECU2VT::ALT_getWindowMaskDataReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_getWindowMaskDataReq;
+}
+
+const GetWindowMaskDataReq_template& ECU2VT_template::getWindowMaskDataReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field getWindowMaskDataReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_getWindowMaskDataReq) TTCN_error("Accessing non-selected field getWindowMaskDataReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_getWindowMaskDataReq;
+}
+
+GetSupportedObjectsReq_template& ECU2VT_template::getSupportedObjectsReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_getSupportedObjectsReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_getSupportedObjectsReq = new GetSupportedObjectsReq_template(ANY_VALUE);
+else single_value.field_getSupportedObjectsReq = new GetSupportedObjectsReq_template;
+single_value.union_selection = ECU2VT::ALT_getSupportedObjectsReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_getSupportedObjectsReq;
+}
+
+const GetSupportedObjectsReq_template& ECU2VT_template::getSupportedObjectsReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field getSupportedObjectsReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_getSupportedObjectsReq) TTCN_error("Accessing non-selected field getSupportedObjectsReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_getSupportedObjectsReq;
+}
+
+StoreVersionReq_template& ECU2VT_template::storeVersionReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_storeVersionReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_storeVersionReq = new StoreVersionReq_template(ANY_VALUE);
+else single_value.field_storeVersionReq = new StoreVersionReq_template;
+single_value.union_selection = ECU2VT::ALT_storeVersionReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_storeVersionReq;
+}
+
+const StoreVersionReq_template& ECU2VT_template::storeVersionReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field storeVersionReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_storeVersionReq) TTCN_error("Accessing non-selected field storeVersionReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_storeVersionReq;
+}
+
+LoadVersionReq_template& ECU2VT_template::loadVersionReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_loadVersionReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_loadVersionReq = new LoadVersionReq_template(ANY_VALUE);
+else single_value.field_loadVersionReq = new LoadVersionReq_template;
+single_value.union_selection = ECU2VT::ALT_loadVersionReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_loadVersionReq;
+}
+
+const LoadVersionReq_template& ECU2VT_template::loadVersionReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field loadVersionReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_loadVersionReq) TTCN_error("Accessing non-selected field loadVersionReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_loadVersionReq;
+}
+
+DeleteVersionReq_template& ECU2VT_template::deleteVersionReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_deleteVersionReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_deleteVersionReq = new DeleteVersionReq_template(ANY_VALUE);
+else single_value.field_deleteVersionReq = new DeleteVersionReq_template;
+single_value.union_selection = ECU2VT::ALT_deleteVersionReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_deleteVersionReq;
+}
+
+const DeleteVersionReq_template& ECU2VT_template::deleteVersionReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field deleteVersionReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_deleteVersionReq) TTCN_error("Accessing non-selected field deleteVersionReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_deleteVersionReq;
+}
+
+ExtendedGetVersionsReq_template& ECU2VT_template::extendedGetVersionsReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_extendedGetVersionsReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_extendedGetVersionsReq = new ExtendedGetVersionsReq_template(ANY_VALUE);
+else single_value.field_extendedGetVersionsReq = new ExtendedGetVersionsReq_template;
+single_value.union_selection = ECU2VT::ALT_extendedGetVersionsReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_extendedGetVersionsReq;
+}
+
+const ExtendedGetVersionsReq_template& ECU2VT_template::extendedGetVersionsReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field extendedGetVersionsReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_extendedGetVersionsReq) TTCN_error("Accessing non-selected field extendedGetVersionsReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_extendedGetVersionsReq;
+}
+
+ExtendedStoreVersionReq_template& ECU2VT_template::extendedStoreVersionReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_extendedStoreVersionReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_extendedStoreVersionReq = new ExtendedStoreVersionReq_template(ANY_VALUE);
+else single_value.field_extendedStoreVersionReq = new ExtendedStoreVersionReq_template;
+single_value.union_selection = ECU2VT::ALT_extendedStoreVersionReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_extendedStoreVersionReq;
+}
+
+const ExtendedStoreVersionReq_template& ECU2VT_template::extendedStoreVersionReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field extendedStoreVersionReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_extendedStoreVersionReq) TTCN_error("Accessing non-selected field extendedStoreVersionReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_extendedStoreVersionReq;
+}
+
+ExtendedLoadVersionReq_template& ECU2VT_template::extendedLoadVersionReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_extendedLoadVersionReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_extendedLoadVersionReq = new ExtendedLoadVersionReq_template(ANY_VALUE);
+else single_value.field_extendedLoadVersionReq = new ExtendedLoadVersionReq_template;
+single_value.union_selection = ECU2VT::ALT_extendedLoadVersionReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_extendedLoadVersionReq;
+}
+
+const ExtendedLoadVersionReq_template& ECU2VT_template::extendedLoadVersionReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field extendedLoadVersionReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_extendedLoadVersionReq) TTCN_error("Accessing non-selected field extendedLoadVersionReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_extendedLoadVersionReq;
+}
+
+ExtendedDeleteVersionReq_template& ECU2VT_template::extendedDeleteVersionReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_extendedDeleteVersionReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_extendedDeleteVersionReq = new ExtendedDeleteVersionReq_template(ANY_VALUE);
+else single_value.field_extendedDeleteVersionReq = new ExtendedDeleteVersionReq_template;
+single_value.union_selection = ECU2VT::ALT_extendedDeleteVersionReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_extendedDeleteVersionReq;
+}
+
+const ExtendedDeleteVersionReq_template& ECU2VT_template::extendedDeleteVersionReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field extendedDeleteVersionReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_extendedDeleteVersionReq) TTCN_error("Accessing non-selected field extendedDeleteVersionReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_extendedDeleteVersionReq;
+}
+
+GetVersionsReq_template& ECU2VT_template::getVersionsReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_getVersionsReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_getVersionsReq = new GetVersionsReq_template(ANY_VALUE);
+else single_value.field_getVersionsReq = new GetVersionsReq_template;
+single_value.union_selection = ECU2VT::ALT_getVersionsReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_getVersionsReq;
+}
+
+const GetVersionsReq_template& ECU2VT_template::getVersionsReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field getVersionsReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_getVersionsReq) TTCN_error("Accessing non-selected field getVersionsReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_getVersionsReq;
+}
+
+UnsupportedVTFunctionInd_template& ECU2VT_template::unsupportedVTFunctionInd()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_unsupportedVTFunctionInd) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_unsupportedVTFunctionInd = new UnsupportedVTFunctionInd_template(ANY_VALUE);
+else single_value.field_unsupportedVTFunctionInd = new UnsupportedVTFunctionInd_template;
+single_value.union_selection = ECU2VT::ALT_unsupportedVTFunctionInd;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_unsupportedVTFunctionInd;
+}
+
+const UnsupportedVTFunctionInd_template& ECU2VT_template::unsupportedVTFunctionInd() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field unsupportedVTFunctionInd in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_unsupportedVTFunctionInd) TTCN_error("Accessing non-selected field unsupportedVTFunctionInd in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_unsupportedVTFunctionInd;
+}
+
+WorkingSetMaintenanceReq_template& ECU2VT_template::workingSetMaintenanceReq()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECU2VT::ALT_workingSetMaintenanceReq) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_workingSetMaintenanceReq = new WorkingSetMaintenanceReq_template(ANY_VALUE);
+else single_value.field_workingSetMaintenanceReq = new WorkingSetMaintenanceReq_template;
+single_value.union_selection = ECU2VT::ALT_workingSetMaintenanceReq;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_workingSetMaintenanceReq;
+}
+
+const WorkingSetMaintenanceReq_template& ECU2VT_template::workingSetMaintenanceReq() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field workingSetMaintenanceReq in a non-specific template of union type @IsobusVTMessageTypes.ECU2VT.");
+if (single_value.union_selection != ECU2VT::ALT_workingSetMaintenanceReq) TTCN_error("Accessing non-selected field workingSetMaintenanceReq in a template of union type @IsobusVTMessageTypes.ECU2VT.");
+return *single_value.field_workingSetMaintenanceReq;
+}
+
+boolean ECU2VT_template::ischosen(ECU2VT::union_selection_type checked_selection) const
+{
+if (checked_selection == ECU2VT::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @IsobusVTMessageTypes.ECU2VT.");
+switch (template_selection) {
+case SPECIFIC_VALUE:
+if (single_value.union_selection == ECU2VT::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @IsobusVTMessageTypes.ECU2VT.");
+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 @IsobusVTMessageTypes.ECU2VT 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 ECU2VT_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case ECU2VT::ALT_softKeyActivationRes:
+TTCN_Logger::log_event_str("{ softKeyActivationRes := ");
+single_value.field_softKeyActivationRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_buttonActivationRes:
+TTCN_Logger::log_event_str("{ buttonActivationRes := ");
+single_value.field_buttonActivationRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_pointingEventRes:
+TTCN_Logger::log_event_str("{ pointingEventRes := ");
+single_value.field_pointingEventRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_vtSelectInputObjectRes:
+TTCN_Logger::log_event_str("{ vtSelectInputObjectRes := ");
+single_value.field_vtSelectInputObjectRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_vtESCRes:
+TTCN_Logger::log_event_str("{ vtESCRes := ");
+single_value.field_vtESCRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_vtChangeNumericValueRes:
+TTCN_Logger::log_event_str("{ vtChangeNumericValueRes := ");
+single_value.field_vtChangeNumericValueRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_vtChangeActiveMaskRes:
+TTCN_Logger::log_event_str("{ vtChangeActiveMaskRes := ");
+single_value.field_vtChangeActiveMaskRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_vtChangeSoftKeyMaskReq:
+TTCN_Logger::log_event_str("{ vtChangeSoftKeyMaskReq := ");
+single_value.field_vtChangeSoftKeyMaskReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_vtChangeStringValueRes:
+TTCN_Logger::log_event_str("{ vtChangeStringValueRes := ");
+single_value.field_vtChangeStringValueRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_vtOnUserLayoutHideShowRes:
+TTCN_Logger::log_event_str("{ vtOnUserLayoutHideShowRes := ");
+single_value.field_vtOnUserLayoutHideShowRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_objectPoolTransferInd:
+TTCN_Logger::log_event_str("{ objectPoolTransferInd := ");
+single_value.field_objectPoolTransferInd->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_endOfObjectPoolReq:
+TTCN_Logger::log_event_str("{ endOfObjectPoolReq := ");
+single_value.field_endOfObjectPoolReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_vtfunction32ECU2VT:
+TTCN_Logger::log_event_str("{ vtfunction32ECU2VT := ");
+single_value.field_vtfunction32ECU2VT->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_vtfunction33ECU2VT:
+TTCN_Logger::log_event_str("{ vtfunction33ECU2VT := ");
+single_value.field_vtfunction33ECU2VT->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_vtfunction34ECU2VT:
+TTCN_Logger::log_event_str("{ vtfunction34ECU2VT := ");
+single_value.field_vtfunction34ECU2VT->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_vtfunction36ECU2VT:
+TTCN_Logger::log_event_str("{ vtfunction36ECU2VT := ");
+single_value.field_vtfunction36ECU2VT->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_vtfunction37ECU2VT:
+TTCN_Logger::log_event_str("{ vtfunction37ECU2VT := ");
+single_value.field_vtfunction37ECU2VT->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_auxiliaryInputType2StatusInd:
+TTCN_Logger::log_event_str("{ auxiliaryInputType2StatusInd := ");
+single_value.field_auxiliaryInputType2StatusInd->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_vtfunction39ECU2VT:
+TTCN_Logger::log_event_str("{ vtfunction39ECU2VT := ");
+single_value.field_vtfunction39ECU2VT->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_escReq:
+TTCN_Logger::log_event_str("{ escReq := ");
+single_value.field_escReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_hideShowObjectReq:
+TTCN_Logger::log_event_str("{ hideShowObjectReq := ");
+single_value.field_hideShowObjectReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_enableDisableObjectReq:
+TTCN_Logger::log_event_str("{ enableDisableObjectReq := ");
+single_value.field_enableDisableObjectReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_selectInputObjectReq:
+TTCN_Logger::log_event_str("{ selectInputObjectReq := ");
+single_value.field_selectInputObjectReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_controlAudioSignalReq:
+TTCN_Logger::log_event_str("{ controlAudioSignalReq := ");
+single_value.field_controlAudioSignalReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_setAudioVolumeReq:
+TTCN_Logger::log_event_str("{ setAudioVolumeReq := ");
+single_value.field_setAudioVolumeReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_changeChildLocationReq:
+TTCN_Logger::log_event_str("{ changeChildLocationReq := ");
+single_value.field_changeChildLocationReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_changeSizeReq:
+TTCN_Logger::log_event_str("{ changeSizeReq := ");
+single_value.field_changeSizeReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_changeBackgroundColourReq:
+TTCN_Logger::log_event_str("{ changeBackgroundColourReq := ");
+single_value.field_changeBackgroundColourReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_changeNumericValueReq:
+TTCN_Logger::log_event_str("{ changeNumericValueReq := ");
+single_value.field_changeNumericValueReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_changeEndPointReq:
+TTCN_Logger::log_event_str("{ changeEndPointReq := ");
+single_value.field_changeEndPointReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_changeFontAttributesReq:
+TTCN_Logger::log_event_str("{ changeFontAttributesReq := ");
+single_value.field_changeFontAttributesReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_changeLineAttributesReq:
+TTCN_Logger::log_event_str("{ changeLineAttributesReq := ");
+single_value.field_changeLineAttributesReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_changeFillAttributesReq:
+TTCN_Logger::log_event_str("{ changeFillAttributesReq := ");
+single_value.field_changeFillAttributesReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_changeActiveMaskReq:
+TTCN_Logger::log_event_str("{ changeActiveMaskReq := ");
+single_value.field_changeActiveMaskReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_changeSoftKeyMaskRes:
+TTCN_Logger::log_event_str("{ changeSoftKeyMaskRes := ");
+single_value.field_changeSoftKeyMaskRes->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_changeAttributeReq:
+TTCN_Logger::log_event_str("{ changeAttributeReq := ");
+single_value.field_changeAttributeReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_changePriorityReq:
+TTCN_Logger::log_event_str("{ changePriorityReq := ");
+single_value.field_changePriorityReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_changeListItemReq:
+TTCN_Logger::log_event_str("{ changeListItemReq := ");
+single_value.field_changeListItemReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_deleteObjectPoolReq:
+TTCN_Logger::log_event_str("{ deleteObjectPoolReq := ");
+single_value.field_deleteObjectPoolReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_changeStringValueReq:
+TTCN_Logger::log_event_str("{ changeStringValueReq := ");
+single_value.field_changeStringValueReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_changeChildPositionReq:
+TTCN_Logger::log_event_str("{ changeChildPositionReq := ");
+single_value.field_changeChildPositionReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_changeObjectLabelReq:
+TTCN_Logger::log_event_str("{ changeObjectLabelReq := ");
+single_value.field_changeObjectLabelReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_changePolygonPointReq:
+TTCN_Logger::log_event_str("{ changePolygonPointReq := ");
+single_value.field_changePolygonPointReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_changePolygonScaleReq:
+TTCN_Logger::log_event_str("{ changePolygonScaleReq := ");
+single_value.field_changePolygonScaleReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_graphicsContextReq:
+TTCN_Logger::log_event_str("{ graphicsContextReq := ");
+single_value.field_graphicsContextReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_getAttributeValueReq:
+TTCN_Logger::log_event_str("{ getAttributeValueReq := ");
+single_value.field_getAttributeValueReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_selectColourMapReq:
+TTCN_Logger::log_event_str("{ selectColourMapReq := ");
+single_value.field_selectColourMapReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_identifyVTReq:
+TTCN_Logger::log_event_str("{ identifyVTReq := ");
+single_value.field_identifyVTReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_executeExtendedMacroReq:
+TTCN_Logger::log_event_str("{ executeExtendedMacroReq := ");
+single_value.field_executeExtendedMacroReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_lockUnlockMaskReq:
+TTCN_Logger::log_event_str("{ lockUnlockMaskReq := ");
+single_value.field_lockUnlockMaskReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_executeMacroReq:
+TTCN_Logger::log_event_str("{ executeMacroReq := ");
+single_value.field_executeMacroReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_getMemoryReq:
+TTCN_Logger::log_event_str("{ getMemoryReq := ");
+single_value.field_getMemoryReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_getNumberOfSoftKeysReq:
+TTCN_Logger::log_event_str("{ getNumberOfSoftKeysReq := ");
+single_value.field_getNumberOfSoftKeysReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_getTextFontDataReq:
+TTCN_Logger::log_event_str("{ getTextFontDataReq := ");
+single_value.field_getTextFontDataReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_getHardwareReq:
+TTCN_Logger::log_event_str("{ getHardwareReq := ");
+single_value.field_getHardwareReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_getSupportedWidecharsReq:
+TTCN_Logger::log_event_str("{ getSupportedWidecharsReq := ");
+single_value.field_getSupportedWidecharsReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_getWindowMaskDataReq:
+TTCN_Logger::log_event_str("{ getWindowMaskDataReq := ");
+single_value.field_getWindowMaskDataReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_getSupportedObjectsReq:
+TTCN_Logger::log_event_str("{ getSupportedObjectsReq := ");
+single_value.field_getSupportedObjectsReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_storeVersionReq:
+TTCN_Logger::log_event_str("{ storeVersionReq := ");
+single_value.field_storeVersionReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_loadVersionReq:
+TTCN_Logger::log_event_str("{ loadVersionReq := ");
+single_value.field_loadVersionReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_deleteVersionReq:
+TTCN_Logger::log_event_str("{ deleteVersionReq := ");
+single_value.field_deleteVersionReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_extendedGetVersionsReq:
+TTCN_Logger::log_event_str("{ extendedGetVersionsReq := ");
+single_value.field_extendedGetVersionsReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_extendedStoreVersionReq:
+TTCN_Logger::log_event_str("{ extendedStoreVersionReq := ");
+single_value.field_extendedStoreVersionReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_extendedLoadVersionReq:
+TTCN_Logger::log_event_str("{ extendedLoadVersionReq := ");
+single_value.field_extendedLoadVersionReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_extendedDeleteVersionReq:
+TTCN_Logger::log_event_str("{ extendedDeleteVersionReq := ");
+single_value.field_extendedDeleteVersionReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_getVersionsReq:
+TTCN_Logger::log_event_str("{ getVersionsReq := ");
+single_value.field_getVersionsReq->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_unsupportedVTFunctionInd:
+TTCN_Logger::log_event_str("{ unsupportedVTFunctionInd := ");
+single_value.field_unsupportedVTFunctionInd->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECU2VT::ALT_workingSetMaintenanceReq:
+TTCN_Logger::log_event_str("{ workingSetMaintenanceReq := ");
+single_value.field_workingSetMaintenanceReq->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 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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ECU2VT_template::log_match(const ECU2VT& 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()) {
+switch (single_value.union_selection) {
+case ECU2VT::ALT_softKeyActivationRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".softKeyActivationRes");
+single_value.field_softKeyActivationRes->log_match(match_value.softKeyActivationRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ softKeyActivationRes := ");
+single_value.field_softKeyActivationRes->log_match(match_value.softKeyActivationRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_buttonActivationRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".buttonActivationRes");
+single_value.field_buttonActivationRes->log_match(match_value.buttonActivationRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ buttonActivationRes := ");
+single_value.field_buttonActivationRes->log_match(match_value.buttonActivationRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_pointingEventRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".pointingEventRes");
+single_value.field_pointingEventRes->log_match(match_value.pointingEventRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ pointingEventRes := ");
+single_value.field_pointingEventRes->log_match(match_value.pointingEventRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_vtSelectInputObjectRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".vtSelectInputObjectRes");
+single_value.field_vtSelectInputObjectRes->log_match(match_value.vtSelectInputObjectRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ vtSelectInputObjectRes := ");
+single_value.field_vtSelectInputObjectRes->log_match(match_value.vtSelectInputObjectRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_vtESCRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".vtESCRes");
+single_value.field_vtESCRes->log_match(match_value.vtESCRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ vtESCRes := ");
+single_value.field_vtESCRes->log_match(match_value.vtESCRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_vtChangeNumericValueRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".vtChangeNumericValueRes");
+single_value.field_vtChangeNumericValueRes->log_match(match_value.vtChangeNumericValueRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ vtChangeNumericValueRes := ");
+single_value.field_vtChangeNumericValueRes->log_match(match_value.vtChangeNumericValueRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_vtChangeActiveMaskRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".vtChangeActiveMaskRes");
+single_value.field_vtChangeActiveMaskRes->log_match(match_value.vtChangeActiveMaskRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ vtChangeActiveMaskRes := ");
+single_value.field_vtChangeActiveMaskRes->log_match(match_value.vtChangeActiveMaskRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_vtChangeSoftKeyMaskReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".vtChangeSoftKeyMaskReq");
+single_value.field_vtChangeSoftKeyMaskReq->log_match(match_value.vtChangeSoftKeyMaskReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ vtChangeSoftKeyMaskReq := ");
+single_value.field_vtChangeSoftKeyMaskReq->log_match(match_value.vtChangeSoftKeyMaskReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_vtChangeStringValueRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".vtChangeStringValueRes");
+single_value.field_vtChangeStringValueRes->log_match(match_value.vtChangeStringValueRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ vtChangeStringValueRes := ");
+single_value.field_vtChangeStringValueRes->log_match(match_value.vtChangeStringValueRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_vtOnUserLayoutHideShowRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".vtOnUserLayoutHideShowRes");
+single_value.field_vtOnUserLayoutHideShowRes->log_match(match_value.vtOnUserLayoutHideShowRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ vtOnUserLayoutHideShowRes := ");
+single_value.field_vtOnUserLayoutHideShowRes->log_match(match_value.vtOnUserLayoutHideShowRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_objectPoolTransferInd:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".objectPoolTransferInd");
+single_value.field_objectPoolTransferInd->log_match(match_value.objectPoolTransferInd(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ objectPoolTransferInd := ");
+single_value.field_objectPoolTransferInd->log_match(match_value.objectPoolTransferInd(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_endOfObjectPoolReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".endOfObjectPoolReq");
+single_value.field_endOfObjectPoolReq->log_match(match_value.endOfObjectPoolReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ endOfObjectPoolReq := ");
+single_value.field_endOfObjectPoolReq->log_match(match_value.endOfObjectPoolReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_vtfunction32ECU2VT:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".vtfunction32ECU2VT");
+single_value.field_vtfunction32ECU2VT->log_match(match_value.vtfunction32ECU2VT(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ vtfunction32ECU2VT := ");
+single_value.field_vtfunction32ECU2VT->log_match(match_value.vtfunction32ECU2VT(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_vtfunction33ECU2VT:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".vtfunction33ECU2VT");
+single_value.field_vtfunction33ECU2VT->log_match(match_value.vtfunction33ECU2VT(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ vtfunction33ECU2VT := ");
+single_value.field_vtfunction33ECU2VT->log_match(match_value.vtfunction33ECU2VT(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_vtfunction34ECU2VT:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".vtfunction34ECU2VT");
+single_value.field_vtfunction34ECU2VT->log_match(match_value.vtfunction34ECU2VT(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ vtfunction34ECU2VT := ");
+single_value.field_vtfunction34ECU2VT->log_match(match_value.vtfunction34ECU2VT(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_vtfunction36ECU2VT:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".vtfunction36ECU2VT");
+single_value.field_vtfunction36ECU2VT->log_match(match_value.vtfunction36ECU2VT(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ vtfunction36ECU2VT := ");
+single_value.field_vtfunction36ECU2VT->log_match(match_value.vtfunction36ECU2VT(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_vtfunction37ECU2VT:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".vtfunction37ECU2VT");
+single_value.field_vtfunction37ECU2VT->log_match(match_value.vtfunction37ECU2VT(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ vtfunction37ECU2VT := ");
+single_value.field_vtfunction37ECU2VT->log_match(match_value.vtfunction37ECU2VT(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_auxiliaryInputType2StatusInd:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".auxiliaryInputType2StatusInd");
+single_value.field_auxiliaryInputType2StatusInd->log_match(match_value.auxiliaryInputType2StatusInd(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ auxiliaryInputType2StatusInd := ");
+single_value.field_auxiliaryInputType2StatusInd->log_match(match_value.auxiliaryInputType2StatusInd(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_vtfunction39ECU2VT:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".vtfunction39ECU2VT");
+single_value.field_vtfunction39ECU2VT->log_match(match_value.vtfunction39ECU2VT(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ vtfunction39ECU2VT := ");
+single_value.field_vtfunction39ECU2VT->log_match(match_value.vtfunction39ECU2VT(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_escReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".escReq");
+single_value.field_escReq->log_match(match_value.escReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ escReq := ");
+single_value.field_escReq->log_match(match_value.escReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_hideShowObjectReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".hideShowObjectReq");
+single_value.field_hideShowObjectReq->log_match(match_value.hideShowObjectReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ hideShowObjectReq := ");
+single_value.field_hideShowObjectReq->log_match(match_value.hideShowObjectReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_enableDisableObjectReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".enableDisableObjectReq");
+single_value.field_enableDisableObjectReq->log_match(match_value.enableDisableObjectReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ enableDisableObjectReq := ");
+single_value.field_enableDisableObjectReq->log_match(match_value.enableDisableObjectReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_selectInputObjectReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".selectInputObjectReq");
+single_value.field_selectInputObjectReq->log_match(match_value.selectInputObjectReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ selectInputObjectReq := ");
+single_value.field_selectInputObjectReq->log_match(match_value.selectInputObjectReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_controlAudioSignalReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".controlAudioSignalReq");
+single_value.field_controlAudioSignalReq->log_match(match_value.controlAudioSignalReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ controlAudioSignalReq := ");
+single_value.field_controlAudioSignalReq->log_match(match_value.controlAudioSignalReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_setAudioVolumeReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".setAudioVolumeReq");
+single_value.field_setAudioVolumeReq->log_match(match_value.setAudioVolumeReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ setAudioVolumeReq := ");
+single_value.field_setAudioVolumeReq->log_match(match_value.setAudioVolumeReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_changeChildLocationReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".changeChildLocationReq");
+single_value.field_changeChildLocationReq->log_match(match_value.changeChildLocationReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ changeChildLocationReq := ");
+single_value.field_changeChildLocationReq->log_match(match_value.changeChildLocationReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_changeSizeReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".changeSizeReq");
+single_value.field_changeSizeReq->log_match(match_value.changeSizeReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ changeSizeReq := ");
+single_value.field_changeSizeReq->log_match(match_value.changeSizeReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_changeBackgroundColourReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".changeBackgroundColourReq");
+single_value.field_changeBackgroundColourReq->log_match(match_value.changeBackgroundColourReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ changeBackgroundColourReq := ");
+single_value.field_changeBackgroundColourReq->log_match(match_value.changeBackgroundColourReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_changeNumericValueReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".changeNumericValueReq");
+single_value.field_changeNumericValueReq->log_match(match_value.changeNumericValueReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ changeNumericValueReq := ");
+single_value.field_changeNumericValueReq->log_match(match_value.changeNumericValueReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_changeEndPointReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".changeEndPointReq");
+single_value.field_changeEndPointReq->log_match(match_value.changeEndPointReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ changeEndPointReq := ");
+single_value.field_changeEndPointReq->log_match(match_value.changeEndPointReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_changeFontAttributesReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".changeFontAttributesReq");
+single_value.field_changeFontAttributesReq->log_match(match_value.changeFontAttributesReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ changeFontAttributesReq := ");
+single_value.field_changeFontAttributesReq->log_match(match_value.changeFontAttributesReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_changeLineAttributesReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".changeLineAttributesReq");
+single_value.field_changeLineAttributesReq->log_match(match_value.changeLineAttributesReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ changeLineAttributesReq := ");
+single_value.field_changeLineAttributesReq->log_match(match_value.changeLineAttributesReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_changeFillAttributesReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".changeFillAttributesReq");
+single_value.field_changeFillAttributesReq->log_match(match_value.changeFillAttributesReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ changeFillAttributesReq := ");
+single_value.field_changeFillAttributesReq->log_match(match_value.changeFillAttributesReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_changeActiveMaskReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".changeActiveMaskReq");
+single_value.field_changeActiveMaskReq->log_match(match_value.changeActiveMaskReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ changeActiveMaskReq := ");
+single_value.field_changeActiveMaskReq->log_match(match_value.changeActiveMaskReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_changeSoftKeyMaskRes:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".changeSoftKeyMaskRes");
+single_value.field_changeSoftKeyMaskRes->log_match(match_value.changeSoftKeyMaskRes(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ changeSoftKeyMaskRes := ");
+single_value.field_changeSoftKeyMaskRes->log_match(match_value.changeSoftKeyMaskRes(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_changeAttributeReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".changeAttributeReq");
+single_value.field_changeAttributeReq->log_match(match_value.changeAttributeReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ changeAttributeReq := ");
+single_value.field_changeAttributeReq->log_match(match_value.changeAttributeReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_changePriorityReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".changePriorityReq");
+single_value.field_changePriorityReq->log_match(match_value.changePriorityReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ changePriorityReq := ");
+single_value.field_changePriorityReq->log_match(match_value.changePriorityReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_changeListItemReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".changeListItemReq");
+single_value.field_changeListItemReq->log_match(match_value.changeListItemReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ changeListItemReq := ");
+single_value.field_changeListItemReq->log_match(match_value.changeListItemReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_deleteObjectPoolReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".deleteObjectPoolReq");
+single_value.field_deleteObjectPoolReq->log_match(match_value.deleteObjectPoolReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ deleteObjectPoolReq := ");
+single_value.field_deleteObjectPoolReq->log_match(match_value.deleteObjectPoolReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_changeStringValueReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".changeStringValueReq");
+single_value.field_changeStringValueReq->log_match(match_value.changeStringValueReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ changeStringValueReq := ");
+single_value.field_changeStringValueReq->log_match(match_value.changeStringValueReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_changeChildPositionReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".changeChildPositionReq");
+single_value.field_changeChildPositionReq->log_match(match_value.changeChildPositionReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ changeChildPositionReq := ");
+single_value.field_changeChildPositionReq->log_match(match_value.changeChildPositionReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_changeObjectLabelReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".changeObjectLabelReq");
+single_value.field_changeObjectLabelReq->log_match(match_value.changeObjectLabelReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ changeObjectLabelReq := ");
+single_value.field_changeObjectLabelReq->log_match(match_value.changeObjectLabelReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_changePolygonPointReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".changePolygonPointReq");
+single_value.field_changePolygonPointReq->log_match(match_value.changePolygonPointReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ changePolygonPointReq := ");
+single_value.field_changePolygonPointReq->log_match(match_value.changePolygonPointReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_changePolygonScaleReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".changePolygonScaleReq");
+single_value.field_changePolygonScaleReq->log_match(match_value.changePolygonScaleReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ changePolygonScaleReq := ");
+single_value.field_changePolygonScaleReq->log_match(match_value.changePolygonScaleReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_graphicsContextReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".graphicsContextReq");
+single_value.field_graphicsContextReq->log_match(match_value.graphicsContextReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ graphicsContextReq := ");
+single_value.field_graphicsContextReq->log_match(match_value.graphicsContextReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_getAttributeValueReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".getAttributeValueReq");
+single_value.field_getAttributeValueReq->log_match(match_value.getAttributeValueReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ getAttributeValueReq := ");
+single_value.field_getAttributeValueReq->log_match(match_value.getAttributeValueReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_selectColourMapReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".selectColourMapReq");
+single_value.field_selectColourMapReq->log_match(match_value.selectColourMapReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ selectColourMapReq := ");
+single_value.field_selectColourMapReq->log_match(match_value.selectColourMapReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_identifyVTReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".identifyVTReq");
+single_value.field_identifyVTReq->log_match(match_value.identifyVTReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ identifyVTReq := ");
+single_value.field_identifyVTReq->log_match(match_value.identifyVTReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_executeExtendedMacroReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".executeExtendedMacroReq");
+single_value.field_executeExtendedMacroReq->log_match(match_value.executeExtendedMacroReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ executeExtendedMacroReq := ");
+single_value.field_executeExtendedMacroReq->log_match(match_value.executeExtendedMacroReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_lockUnlockMaskReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".lockUnlockMaskReq");
+single_value.field_lockUnlockMaskReq->log_match(match_value.lockUnlockMaskReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ lockUnlockMaskReq := ");
+single_value.field_lockUnlockMaskReq->log_match(match_value.lockUnlockMaskReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_executeMacroReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".executeMacroReq");
+single_value.field_executeMacroReq->log_match(match_value.executeMacroReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ executeMacroReq := ");
+single_value.field_executeMacroReq->log_match(match_value.executeMacroReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_getMemoryReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".getMemoryReq");
+single_value.field_getMemoryReq->log_match(match_value.getMemoryReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ getMemoryReq := ");
+single_value.field_getMemoryReq->log_match(match_value.getMemoryReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_getNumberOfSoftKeysReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".getNumberOfSoftKeysReq");
+single_value.field_getNumberOfSoftKeysReq->log_match(match_value.getNumberOfSoftKeysReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ getNumberOfSoftKeysReq := ");
+single_value.field_getNumberOfSoftKeysReq->log_match(match_value.getNumberOfSoftKeysReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_getTextFontDataReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".getTextFontDataReq");
+single_value.field_getTextFontDataReq->log_match(match_value.getTextFontDataReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ getTextFontDataReq := ");
+single_value.field_getTextFontDataReq->log_match(match_value.getTextFontDataReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_getHardwareReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".getHardwareReq");
+single_value.field_getHardwareReq->log_match(match_value.getHardwareReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ getHardwareReq := ");
+single_value.field_getHardwareReq->log_match(match_value.getHardwareReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_getSupportedWidecharsReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".getSupportedWidecharsReq");
+single_value.field_getSupportedWidecharsReq->log_match(match_value.getSupportedWidecharsReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ getSupportedWidecharsReq := ");
+single_value.field_getSupportedWidecharsReq->log_match(match_value.getSupportedWidecharsReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_getWindowMaskDataReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".getWindowMaskDataReq");
+single_value.field_getWindowMaskDataReq->log_match(match_value.getWindowMaskDataReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ getWindowMaskDataReq := ");
+single_value.field_getWindowMaskDataReq->log_match(match_value.getWindowMaskDataReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_getSupportedObjectsReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".getSupportedObjectsReq");
+single_value.field_getSupportedObjectsReq->log_match(match_value.getSupportedObjectsReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ getSupportedObjectsReq := ");
+single_value.field_getSupportedObjectsReq->log_match(match_value.getSupportedObjectsReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_storeVersionReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".storeVersionReq");
+single_value.field_storeVersionReq->log_match(match_value.storeVersionReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ storeVersionReq := ");
+single_value.field_storeVersionReq->log_match(match_value.storeVersionReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_loadVersionReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".loadVersionReq");
+single_value.field_loadVersionReq->log_match(match_value.loadVersionReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ loadVersionReq := ");
+single_value.field_loadVersionReq->log_match(match_value.loadVersionReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_deleteVersionReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".deleteVersionReq");
+single_value.field_deleteVersionReq->log_match(match_value.deleteVersionReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ deleteVersionReq := ");
+single_value.field_deleteVersionReq->log_match(match_value.deleteVersionReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_extendedGetVersionsReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".extendedGetVersionsReq");
+single_value.field_extendedGetVersionsReq->log_match(match_value.extendedGetVersionsReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ extendedGetVersionsReq := ");
+single_value.field_extendedGetVersionsReq->log_match(match_value.extendedGetVersionsReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_extendedStoreVersionReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".extendedStoreVersionReq");
+single_value.field_extendedStoreVersionReq->log_match(match_value.extendedStoreVersionReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ extendedStoreVersionReq := ");
+single_value.field_extendedStoreVersionReq->log_match(match_value.extendedStoreVersionReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_extendedLoadVersionReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".extendedLoadVersionReq");
+single_value.field_extendedLoadVersionReq->log_match(match_value.extendedLoadVersionReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ extendedLoadVersionReq := ");
+single_value.field_extendedLoadVersionReq->log_match(match_value.extendedLoadVersionReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_extendedDeleteVersionReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".extendedDeleteVersionReq");
+single_value.field_extendedDeleteVersionReq->log_match(match_value.extendedDeleteVersionReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ extendedDeleteVersionReq := ");
+single_value.field_extendedDeleteVersionReq->log_match(match_value.extendedDeleteVersionReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_getVersionsReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".getVersionsReq");
+single_value.field_getVersionsReq->log_match(match_value.getVersionsReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ getVersionsReq := ");
+single_value.field_getVersionsReq->log_match(match_value.getVersionsReq(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_unsupportedVTFunctionInd:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".unsupportedVTFunctionInd");
+single_value.field_unsupportedVTFunctionInd->log_match(match_value.unsupportedVTFunctionInd(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ unsupportedVTFunctionInd := ");
+single_value.field_unsupportedVTFunctionInd->log_match(match_value.unsupportedVTFunctionInd(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECU2VT::ALT_workingSetMaintenanceReq:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".workingSetMaintenanceReq");
+single_value.field_workingSetMaintenanceReq->log_match(match_value.workingSetMaintenanceReq(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ workingSetMaintenanceReq := ");
+single_value.field_workingSetMaintenanceReq->log_match(match_value.workingSetMaintenanceReq(), 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 ECU2VT_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 ECU2VT::ALT_softKeyActivationRes:
+single_value.field_softKeyActivationRes->encode_text(text_buf);
+break;
+case ECU2VT::ALT_buttonActivationRes:
+single_value.field_buttonActivationRes->encode_text(text_buf);
+break;
+case ECU2VT::ALT_pointingEventRes:
+single_value.field_pointingEventRes->encode_text(text_buf);
+break;
+case ECU2VT::ALT_vtSelectInputObjectRes:
+single_value.field_vtSelectInputObjectRes->encode_text(text_buf);
+break;
+case ECU2VT::ALT_vtESCRes:
+single_value.field_vtESCRes->encode_text(text_buf);
+break;
+case ECU2VT::ALT_vtChangeNumericValueRes:
+single_value.field_vtChangeNumericValueRes->encode_text(text_buf);
+break;
+case ECU2VT::ALT_vtChangeActiveMaskRes:
+single_value.field_vtChangeActiveMaskRes->encode_text(text_buf);
+break;
+case ECU2VT::ALT_vtChangeSoftKeyMaskReq:
+single_value.field_vtChangeSoftKeyMaskReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_vtChangeStringValueRes:
+single_value.field_vtChangeStringValueRes->encode_text(text_buf);
+break;
+case ECU2VT::ALT_vtOnUserLayoutHideShowRes:
+single_value.field_vtOnUserLayoutHideShowRes->encode_text(text_buf);
+break;
+case ECU2VT::ALT_objectPoolTransferInd:
+single_value.field_objectPoolTransferInd->encode_text(text_buf);
+break;
+case ECU2VT::ALT_endOfObjectPoolReq:
+single_value.field_endOfObjectPoolReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_vtfunction32ECU2VT:
+single_value.field_vtfunction32ECU2VT->encode_text(text_buf);
+break;
+case ECU2VT::ALT_vtfunction33ECU2VT:
+single_value.field_vtfunction33ECU2VT->encode_text(text_buf);
+break;
+case ECU2VT::ALT_vtfunction34ECU2VT:
+single_value.field_vtfunction34ECU2VT->encode_text(text_buf);
+break;
+case ECU2VT::ALT_vtfunction36ECU2VT:
+single_value.field_vtfunction36ECU2VT->encode_text(text_buf);
+break;
+case ECU2VT::ALT_vtfunction37ECU2VT:
+single_value.field_vtfunction37ECU2VT->encode_text(text_buf);
+break;
+case ECU2VT::ALT_auxiliaryInputType2StatusInd:
+single_value.field_auxiliaryInputType2StatusInd->encode_text(text_buf);
+break;
+case ECU2VT::ALT_vtfunction39ECU2VT:
+single_value.field_vtfunction39ECU2VT->encode_text(text_buf);
+break;
+case ECU2VT::ALT_escReq:
+single_value.field_escReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_hideShowObjectReq:
+single_value.field_hideShowObjectReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_enableDisableObjectReq:
+single_value.field_enableDisableObjectReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_selectInputObjectReq:
+single_value.field_selectInputObjectReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_controlAudioSignalReq:
+single_value.field_controlAudioSignalReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_setAudioVolumeReq:
+single_value.field_setAudioVolumeReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_changeChildLocationReq:
+single_value.field_changeChildLocationReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_changeSizeReq:
+single_value.field_changeSizeReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_changeBackgroundColourReq:
+single_value.field_changeBackgroundColourReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_changeNumericValueReq:
+single_value.field_changeNumericValueReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_changeEndPointReq:
+single_value.field_changeEndPointReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_changeFontAttributesReq:
+single_value.field_changeFontAttributesReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_changeLineAttributesReq:
+single_value.field_changeLineAttributesReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_changeFillAttributesReq:
+single_value.field_changeFillAttributesReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_changeActiveMaskReq:
+single_value.field_changeActiveMaskReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_changeSoftKeyMaskRes:
+single_value.field_changeSoftKeyMaskRes->encode_text(text_buf);
+break;
+case ECU2VT::ALT_changeAttributeReq:
+single_value.field_changeAttributeReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_changePriorityReq:
+single_value.field_changePriorityReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_changeListItemReq:
+single_value.field_changeListItemReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_deleteObjectPoolReq:
+single_value.field_deleteObjectPoolReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_changeStringValueReq:
+single_value.field_changeStringValueReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_changeChildPositionReq:
+single_value.field_changeChildPositionReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_changeObjectLabelReq:
+single_value.field_changeObjectLabelReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_changePolygonPointReq:
+single_value.field_changePolygonPointReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_changePolygonScaleReq:
+single_value.field_changePolygonScaleReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_graphicsContextReq:
+single_value.field_graphicsContextReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_getAttributeValueReq:
+single_value.field_getAttributeValueReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_selectColourMapReq:
+single_value.field_selectColourMapReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_identifyVTReq:
+single_value.field_identifyVTReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_executeExtendedMacroReq:
+single_value.field_executeExtendedMacroReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_lockUnlockMaskReq:
+single_value.field_lockUnlockMaskReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_executeMacroReq:
+single_value.field_executeMacroReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_getMemoryReq:
+single_value.field_getMemoryReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_getNumberOfSoftKeysReq:
+single_value.field_getNumberOfSoftKeysReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_getTextFontDataReq:
+single_value.field_getTextFontDataReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_getHardwareReq:
+single_value.field_getHardwareReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_getSupportedWidecharsReq:
+single_value.field_getSupportedWidecharsReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_getWindowMaskDataReq:
+single_value.field_getWindowMaskDataReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_getSupportedObjectsReq:
+single_value.field_getSupportedObjectsReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_storeVersionReq:
+single_value.field_storeVersionReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_loadVersionReq:
+single_value.field_loadVersionReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_deleteVersionReq:
+single_value.field_deleteVersionReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_extendedGetVersionsReq:
+single_value.field_extendedGetVersionsReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_extendedStoreVersionReq:
+single_value.field_extendedStoreVersionReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_extendedLoadVersionReq:
+single_value.field_extendedLoadVersionReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_extendedDeleteVersionReq:
+single_value.field_extendedDeleteVersionReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_getVersionsReq:
+single_value.field_getVersionsReq->encode_text(text_buf);
+break;
+case ECU2VT::ALT_unsupportedVTFunctionInd:
+single_value.field_unsupportedVTFunctionInd->encode_text(text_buf);
+break;
+case ECU2VT::ALT_workingSetMaintenanceReq:
+single_value.field_workingSetMaintenanceReq->encode_text(text_buf);
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @IsobusVTMessageTypes.ECU2VT.");
+}
+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 @IsobusVTMessageTypes.ECU2VT.");
+}
+}
+
+void ECU2VT_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+{
+single_value.union_selection = ECU2VT::UNBOUND_VALUE;
+ECU2VT::union_selection_type new_selection = (ECU2VT::union_selection_type)text_buf.pull_int().get_val();
+switch (new_selection) {
+case ECU2VT::ALT_softKeyActivationRes:
+single_value.field_softKeyActivationRes = new SoftKeyActivationRes_template;
+single_value.field_softKeyActivationRes->decode_text(text_buf);
+break;
+case ECU2VT::ALT_buttonActivationRes:
+single_value.field_buttonActivationRes = new ButtonActivationRes_template;
+single_value.field_buttonActivationRes->decode_text(text_buf);
+break;
+case ECU2VT::ALT_pointingEventRes:
+single_value.field_pointingEventRes = new PointingEventRes_template;
+single_value.field_pointingEventRes->decode_text(text_buf);
+break;
+case ECU2VT::ALT_vtSelectInputObjectRes:
+single_value.field_vtSelectInputObjectRes = new VTSelectInputObjectRes_template;
+single_value.field_vtSelectInputObjectRes->decode_text(text_buf);
+break;
+case ECU2VT::ALT_vtESCRes:
+single_value.field_vtESCRes = new VTESCRes_template;
+single_value.field_vtESCRes->decode_text(text_buf);
+break;
+case ECU2VT::ALT_vtChangeNumericValueRes:
+single_value.field_vtChangeNumericValueRes = new VTChangeNumericValueRes_template;
+single_value.field_vtChangeNumericValueRes->decode_text(text_buf);
+break;
+case ECU2VT::ALT_vtChangeActiveMaskRes:
+single_value.field_vtChangeActiveMaskRes = new VTChangeActiveMaskRes_template;
+single_value.field_vtChangeActiveMaskRes->decode_text(text_buf);
+break;
+case ECU2VT::ALT_vtChangeSoftKeyMaskReq:
+single_value.field_vtChangeSoftKeyMaskReq = new VTChangeSoftKeyMaskReq_template;
+single_value.field_vtChangeSoftKeyMaskReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_vtChangeStringValueRes:
+single_value.field_vtChangeStringValueRes = new VTChangeStringValueRes_template;
+single_value.field_vtChangeStringValueRes->decode_text(text_buf);
+break;
+case ECU2VT::ALT_vtOnUserLayoutHideShowRes:
+single_value.field_vtOnUserLayoutHideShowRes = new VTOnUserLayoutHideShowRes_template;
+single_value.field_vtOnUserLayoutHideShowRes->decode_text(text_buf);
+break;
+case ECU2VT::ALT_objectPoolTransferInd:
+single_value.field_objectPoolTransferInd = new ObjectPoolTransferInd_template;
+single_value.field_objectPoolTransferInd->decode_text(text_buf);
+break;
+case ECU2VT::ALT_endOfObjectPoolReq:
+single_value.field_endOfObjectPoolReq = new EndOfObjectPoolReq_template;
+single_value.field_endOfObjectPoolReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_vtfunction32ECU2VT:
+single_value.field_vtfunction32ECU2VT = new VTfunction32ECU2VT_template;
+single_value.field_vtfunction32ECU2VT->decode_text(text_buf);
+break;
+case ECU2VT::ALT_vtfunction33ECU2VT:
+single_value.field_vtfunction33ECU2VT = new VTfunction33ECU2VT_template;
+single_value.field_vtfunction33ECU2VT->decode_text(text_buf);
+break;
+case ECU2VT::ALT_vtfunction34ECU2VT:
+single_value.field_vtfunction34ECU2VT = new VTfunction34ECU2VT_template;
+single_value.field_vtfunction34ECU2VT->decode_text(text_buf);
+break;
+case ECU2VT::ALT_vtfunction36ECU2VT:
+single_value.field_vtfunction36ECU2VT = new VTfunction36ECU2VT_template;
+single_value.field_vtfunction36ECU2VT->decode_text(text_buf);
+break;
+case ECU2VT::ALT_vtfunction37ECU2VT:
+single_value.field_vtfunction37ECU2VT = new VTfunction37ECU2VT_template;
+single_value.field_vtfunction37ECU2VT->decode_text(text_buf);
+break;
+case ECU2VT::ALT_auxiliaryInputType2StatusInd:
+single_value.field_auxiliaryInputType2StatusInd = new AuxiliaryInputType2StatusInd_template;
+single_value.field_auxiliaryInputType2StatusInd->decode_text(text_buf);
+break;
+case ECU2VT::ALT_vtfunction39ECU2VT:
+single_value.field_vtfunction39ECU2VT = new VTfunction39ECU2VT_template;
+single_value.field_vtfunction39ECU2VT->decode_text(text_buf);
+break;
+case ECU2VT::ALT_escReq:
+single_value.field_escReq = new ESCreq_template;
+single_value.field_escReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_hideShowObjectReq:
+single_value.field_hideShowObjectReq = new HideShowObjectReq_template;
+single_value.field_hideShowObjectReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_enableDisableObjectReq:
+single_value.field_enableDisableObjectReq = new EnableDisableObjectReq_template;
+single_value.field_enableDisableObjectReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_selectInputObjectReq:
+single_value.field_selectInputObjectReq = new SelectInputObjectReq_template;
+single_value.field_selectInputObjectReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_controlAudioSignalReq:
+single_value.field_controlAudioSignalReq = new ControlAudioSignalReq_template;
+single_value.field_controlAudioSignalReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_setAudioVolumeReq:
+single_value.field_setAudioVolumeReq = new SetAudioVolumeReq_template;
+single_value.field_setAudioVolumeReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_changeChildLocationReq:
+single_value.field_changeChildLocationReq = new ChangeChildLocationReq_template;
+single_value.field_changeChildLocationReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_changeSizeReq:
+single_value.field_changeSizeReq = new ChangeSizeReq_template;
+single_value.field_changeSizeReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_changeBackgroundColourReq:
+single_value.field_changeBackgroundColourReq = new ChangeBackgroundColourReq_template;
+single_value.field_changeBackgroundColourReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_changeNumericValueReq:
+single_value.field_changeNumericValueReq = new ChangeNumericValueReq_template;
+single_value.field_changeNumericValueReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_changeEndPointReq:
+single_value.field_changeEndPointReq = new ChangeEndPointReq_template;
+single_value.field_changeEndPointReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_changeFontAttributesReq:
+single_value.field_changeFontAttributesReq = new ChangeFontAttributesReq_template;
+single_value.field_changeFontAttributesReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_changeLineAttributesReq:
+single_value.field_changeLineAttributesReq = new ChangeLineAttributesReq_template;
+single_value.field_changeLineAttributesReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_changeFillAttributesReq:
+single_value.field_changeFillAttributesReq = new ChangeFillAttributesReq_template;
+single_value.field_changeFillAttributesReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_changeActiveMaskReq:
+single_value.field_changeActiveMaskReq = new ChangeActiveMaskReq_template;
+single_value.field_changeActiveMaskReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_changeSoftKeyMaskRes:
+single_value.field_changeSoftKeyMaskRes = new ChangeSoftKeyMaskRes_template;
+single_value.field_changeSoftKeyMaskRes->decode_text(text_buf);
+break;
+case ECU2VT::ALT_changeAttributeReq:
+single_value.field_changeAttributeReq = new ChangeAttributeReq_template;
+single_value.field_changeAttributeReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_changePriorityReq:
+single_value.field_changePriorityReq = new ChangePriorityReq_template;
+single_value.field_changePriorityReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_changeListItemReq:
+single_value.field_changeListItemReq = new ChangeListItemReq_template;
+single_value.field_changeListItemReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_deleteObjectPoolReq:
+single_value.field_deleteObjectPoolReq = new DeleteObjectPoolReq_template;
+single_value.field_deleteObjectPoolReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_changeStringValueReq:
+single_value.field_changeStringValueReq = new ChangeStringValueReq_template;
+single_value.field_changeStringValueReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_changeChildPositionReq:
+single_value.field_changeChildPositionReq = new ChangeChildPositionReq_template;
+single_value.field_changeChildPositionReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_changeObjectLabelReq:
+single_value.field_changeObjectLabelReq = new ChangeObjectLabelReq_template;
+single_value.field_changeObjectLabelReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_changePolygonPointReq:
+single_value.field_changePolygonPointReq = new ChangePolygonPointReq_template;
+single_value.field_changePolygonPointReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_changePolygonScaleReq:
+single_value.field_changePolygonScaleReq = new ChangePolygonScaleReq_template;
+single_value.field_changePolygonScaleReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_graphicsContextReq:
+single_value.field_graphicsContextReq = new GraphicsContextReq_template;
+single_value.field_graphicsContextReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_getAttributeValueReq:
+single_value.field_getAttributeValueReq = new GetAttributeValueReq_template;
+single_value.field_getAttributeValueReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_selectColourMapReq:
+single_value.field_selectColourMapReq = new SelectColourMapReq_template;
+single_value.field_selectColourMapReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_identifyVTReq:
+single_value.field_identifyVTReq = new IdentifyVTReq_template;
+single_value.field_identifyVTReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_executeExtendedMacroReq:
+single_value.field_executeExtendedMacroReq = new ExecuteExtendedMacroReq_template;
+single_value.field_executeExtendedMacroReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_lockUnlockMaskReq:
+single_value.field_lockUnlockMaskReq = new LockUnlockMaskReq_template;
+single_value.field_lockUnlockMaskReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_executeMacroReq:
+single_value.field_executeMacroReq = new ExecuteMacroReq_template;
+single_value.field_executeMacroReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_getMemoryReq:
+single_value.field_getMemoryReq = new GetMemoryReq_template;
+single_value.field_getMemoryReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_getNumberOfSoftKeysReq:
+single_value.field_getNumberOfSoftKeysReq = new GetNumberOfSoftKeysReq_template;
+single_value.field_getNumberOfSoftKeysReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_getTextFontDataReq:
+single_value.field_getTextFontDataReq = new GetTextFontDataReq_template;
+single_value.field_getTextFontDataReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_getHardwareReq:
+single_value.field_getHardwareReq = new GetHardwareReq_template;
+single_value.field_getHardwareReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_getSupportedWidecharsReq:
+single_value.field_getSupportedWidecharsReq = new GetSupportedWidecharsReq_template;
+single_value.field_getSupportedWidecharsReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_getWindowMaskDataReq:
+single_value.field_getWindowMaskDataReq = new GetWindowMaskDataReq_template;
+single_value.field_getWindowMaskDataReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_getSupportedObjectsReq:
+single_value.field_getSupportedObjectsReq = new GetSupportedObjectsReq_template;
+single_value.field_getSupportedObjectsReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_storeVersionReq:
+single_value.field_storeVersionReq = new StoreVersionReq_template;
+single_value.field_storeVersionReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_loadVersionReq:
+single_value.field_loadVersionReq = new LoadVersionReq_template;
+single_value.field_loadVersionReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_deleteVersionReq:
+single_value.field_deleteVersionReq = new DeleteVersionReq_template;
+single_value.field_deleteVersionReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_extendedGetVersionsReq:
+single_value.field_extendedGetVersionsReq = new ExtendedGetVersionsReq_template;
+single_value.field_extendedGetVersionsReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_extendedStoreVersionReq:
+single_value.field_extendedStoreVersionReq = new ExtendedStoreVersionReq_template;
+single_value.field_extendedStoreVersionReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_extendedLoadVersionReq:
+single_value.field_extendedLoadVersionReq = new ExtendedLoadVersionReq_template;
+single_value.field_extendedLoadVersionReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_extendedDeleteVersionReq:
+single_value.field_extendedDeleteVersionReq = new ExtendedDeleteVersionReq_template;
+single_value.field_extendedDeleteVersionReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_getVersionsReq:
+single_value.field_getVersionsReq = new GetVersionsReq_template;
+single_value.field_getVersionsReq->decode_text(text_buf);
+break;
+case ECU2VT::ALT_unsupportedVTFunctionInd:
+single_value.field_unsupportedVTFunctionInd = new UnsupportedVTFunctionInd_template;
+single_value.field_unsupportedVTFunctionInd->decode_text(text_buf);
+break;
+case ECU2VT::ALT_workingSetMaintenanceReq:
+single_value.field_workingSetMaintenanceReq = new WorkingSetMaintenanceReq_template;
+single_value.field_workingSetMaintenanceReq->decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @IsobusVTMessageTypes.ECU2VT.");
+}
+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 ECU2VT_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 @IsobusVTMessageTypes.ECU2VT.");
+}
+}
+
+boolean ECU2VT_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ECU2VT_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 ECU2VT_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 `@IsobusVTMessageTypes.ECU2VT'");
+    }
+    if (strcmp("softKeyActivationRes", param_field) == 0) {
+      softKeyActivationRes().set_param(param);
+      return;
+    } else if (strcmp("buttonActivationRes", param_field) == 0) {
+      buttonActivationRes().set_param(param);
+      return;
+    } else if (strcmp("pointingEventRes", param_field) == 0) {
+      pointingEventRes().set_param(param);
+      return;
+    } else if (strcmp("vtSelectInputObjectRes", param_field) == 0) {
+      vtSelectInputObjectRes().set_param(param);
+      return;
+    } else if (strcmp("vtESCRes", param_field) == 0) {
+      vtESCRes().set_param(param);
+      return;
+    } else if (strcmp("vtChangeNumericValueRes", param_field) == 0) {
+      vtChangeNumericValueRes().set_param(param);
+      return;
+    } else if (strcmp("vtChangeActiveMaskRes", param_field) == 0) {
+      vtChangeActiveMaskRes().set_param(param);
+      return;
+    } else if (strcmp("vtChangeSoftKeyMaskReq", param_field) == 0) {
+      vtChangeSoftKeyMaskReq().set_param(param);
+      return;
+    } else if (strcmp("vtChangeStringValueRes", param_field) == 0) {
+      vtChangeStringValueRes().set_param(param);
+      return;
+    } else if (strcmp("vtOnUserLayoutHideShowRes", param_field) == 0) {
+      vtOnUserLayoutHideShowRes().set_param(param);
+      return;
+    } else if (strcmp("objectPoolTransferInd", param_field) == 0) {
+      objectPoolTransferInd().set_param(param);
+      return;
+    } else if (strcmp("endOfObjectPoolReq", param_field) == 0) {
+      endOfObjectPoolReq().set_param(param);
+      return;
+    } else if (strcmp("vtfunction32ECU2VT", param_field) == 0) {
+      vtfunction32ECU2VT().set_param(param);
+      return;
+    } else if (strcmp("vtfunction33ECU2VT", param_field) == 0) {
+      vtfunction33ECU2VT().set_param(param);
+      return;
+    } else if (strcmp("vtfunction34ECU2VT", param_field) == 0) {
+      vtfunction34ECU2VT().set_param(param);
+      return;
+    } else if (strcmp("vtfunction36ECU2VT", param_field) == 0) {
+      vtfunction36ECU2VT().set_param(param);
+      return;
+    } else if (strcmp("vtfunction37ECU2VT", param_field) == 0) {
+      vtfunction37ECU2VT().set_param(param);
+      return;
+    } else if (strcmp("auxiliaryInputType2StatusInd", param_field) == 0) {
+      auxiliaryInputType2StatusInd().set_param(param);
+      return;
+    } else if (strcmp("vtfunction39ECU2VT", param_field) == 0) {
+      vtfunction39ECU2VT().set_param(param);
+      return;
+    } else if (strcmp("escReq", param_field) == 0) {
+      escReq().set_param(param);
+      return;
+    } else if (strcmp("hideShowObjectReq", param_field) == 0) {
+      hideShowObjectReq().set_param(param);
+      return;
+    } else if (strcmp("enableDisableObjectReq", param_field) == 0) {
+      enableDisableObjectReq().set_param(param);
+      return;
+    } else if (strcmp("selectInputObjectReq", param_field) == 0) {
+      selectInputObjectReq().set_param(param);
+      return;
+    } else if (strcmp("controlAudioSignalReq", param_field) == 0) {
+      controlAudioSignalReq().set_param(param);
+      return;
+    } else if (strcmp("setAudioVolumeReq", param_field) == 0) {
+      setAudioVolumeReq().set_param(param);
+      return;
+    } else if (strcmp("changeChildLocationReq", param_field) == 0) {
+      changeChildLocationReq().set_param(param);
+      return;
+    } else if (strcmp("changeSizeReq", param_field) == 0) {
+      changeSizeReq().set_param(param);
+      return;
+    } else if (strcmp("changeBackgroundColourReq", param_field) == 0) {
+      changeBackgroundColourReq().set_param(param);
+      return;
+    } else if (strcmp("changeNumericValueReq", param_field) == 0) {
+      changeNumericValueReq().set_param(param);
+      return;
+    } else if (strcmp("changeEndPointReq", param_field) == 0) {
+      changeEndPointReq().set_param(param);
+      return;
+    } else if (strcmp("changeFontAttributesReq", param_field) == 0) {
+      changeFontAttributesReq().set_param(param);
+      return;
+    } else if (strcmp("changeLineAttributesReq", param_field) == 0) {
+      changeLineAttributesReq().set_param(param);
+      return;
+    } else if (strcmp("changeFillAttributesReq", param_field) == 0) {
+      changeFillAttributesReq().set_param(param);
+      return;
+    } else if (strcmp("changeActiveMaskReq", param_field) == 0) {
+      changeActiveMaskReq().set_param(param);
+      return;
+    } else if (strcmp("changeSoftKeyMaskRes", param_field) == 0) {
+      changeSoftKeyMaskRes().set_param(param);
+      return;
+    } else if (strcmp("changeAttributeReq", param_field) == 0) {
+      changeAttributeReq().set_param(param);
+      return;
+    } else if (strcmp("changePriorityReq", param_field) == 0) {
+      changePriorityReq().set_param(param);
+      return;
+    } else if (strcmp("changeListItemReq", param_field) == 0) {
+      changeListItemReq().set_param(param);
+      return;
+    } else if (strcmp("deleteObjectPoolReq", param_field) == 0) {
+      deleteObjectPoolReq().set_param(param);
+      return;
+    } else if (strcmp("changeStringValueReq", param_field) == 0) {
+      changeStringValueReq().set_param(param);
+      return;
+    } else if (strcmp("changeChildPositionReq", param_field) == 0) {
+      changeChildPositionReq().set_param(param);
+      return;
+    } else if (strcmp("changeObjectLabelReq", param_field) == 0) {
+      changeObjectLabelReq().set_param(param);
+      return;
+    } else if (strcmp("changePolygonPointReq", param_field) == 0) {
+      changePolygonPointReq().set_param(param);
+      return;
+    } else if (strcmp("changePolygonScaleReq", param_field) == 0) {
+      changePolygonScaleReq().set_param(param);
+      return;
+    } else if (strcmp("graphicsContextReq", param_field) == 0) {
+      graphicsContextReq().set_param(param);
+      return;
+    } else if (strcmp("getAttributeValueReq", param_field) == 0) {
+      getAttributeValueReq().set_param(param);
+      return;
+    } else if (strcmp("selectColourMapReq", param_field) == 0) {
+      selectColourMapReq().set_param(param);
+      return;
+    } else if (strcmp("identifyVTReq", param_field) == 0) {
+      identifyVTReq().set_param(param);
+      return;
+    } else if (strcmp("executeExtendedMacroReq", param_field) == 0) {
+      executeExtendedMacroReq().set_param(param);
+      return;
+    } else if (strcmp("lockUnlockMaskReq", param_field) == 0) {
+      lockUnlockMaskReq().set_param(param);
+      return;
+    } else if (strcmp("executeMacroReq", param_field) == 0) {
+      executeMacroReq().set_param(param);
+      return;
+    } else if (strcmp("getMemoryReq", param_field) == 0) {
+      getMemoryReq().set_param(param);
+      return;
+    } else if (strcmp("getNumberOfSoftKeysReq", param_field) == 0) {
+      getNumberOfSoftKeysReq().set_param(param);
+      return;
+    } else if (strcmp("getTextFontDataReq", param_field) == 0) {
+      getTextFontDataReq().set_param(param);
+      return;
+    } else if (strcmp("getHardwareReq", param_field) == 0) {
+      getHardwareReq().set_param(param);
+      return;
+    } else if (strcmp("getSupportedWidecharsReq", param_field) == 0) {
+      getSupportedWidecharsReq().set_param(param);
+      return;
+    } else if (strcmp("getWindowMaskDataReq", param_field) == 0) {
+      getWindowMaskDataReq().set_param(param);
+      return;
+    } else if (strcmp("getSupportedObjectsReq", param_field) == 0) {
+      getSupportedObjectsReq().set_param(param);
+      return;
+    } else if (strcmp("storeVersionReq", param_field) == 0) {
+      storeVersionReq().set_param(param);
+      return;
+    } else if (strcmp("loadVersionReq", param_field) == 0) {
+      loadVersionReq().set_param(param);
+      return;
+    } else if (strcmp("deleteVersionReq", param_field) == 0) {
+      deleteVersionReq().set_param(param);
+      return;
+    } else if (strcmp("extendedGetVersionsReq", param_field) == 0) {
+      extendedGetVersionsReq().set_param(param);
+      return;
+    } else if (strcmp("extendedStoreVersionReq", param_field) == 0) {
+      extendedStoreVersionReq().set_param(param);
+      return;
+    } else if (strcmp("extendedLoadVersionReq", param_field) == 0) {
+      extendedLoadVersionReq().set_param(param);
+      return;
+    } else if (strcmp("extendedDeleteVersionReq", param_field) == 0) {
+      extendedDeleteVersionReq().set_param(param);
+      return;
+    } else if (strcmp("getVersionsReq", param_field) == 0) {
+      getVersionsReq().set_param(param);
+      return;
+    } else if (strcmp("unsupportedVTFunctionInd", param_field) == 0) {
+      unsupportedVTFunctionInd().set_param(param);
+      return;
+    } else if (strcmp("workingSetMaintenanceReq", param_field) == 0) {
+      workingSetMaintenanceReq().set_param(param);
+      return;
+    } else param.error("Field `%s' not found in union template type `@IsobusVTMessageTypes.ECU2VT'", 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: {
+    ECU2VT_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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", "@IsobusVTMessageTypes.ECU2VT");
+    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, "softKeyActivationRes")) {
+      softKeyActivationRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "buttonActivationRes")) {
+      buttonActivationRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "pointingEventRes")) {
+      pointingEventRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "vtSelectInputObjectRes")) {
+      vtSelectInputObjectRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "vtESCRes")) {
+      vtESCRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "vtChangeNumericValueRes")) {
+      vtChangeNumericValueRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "vtChangeActiveMaskRes")) {
+      vtChangeActiveMaskRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "vtChangeSoftKeyMaskReq")) {
+      vtChangeSoftKeyMaskReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "vtChangeStringValueRes")) {
+      vtChangeStringValueRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "vtOnUserLayoutHideShowRes")) {
+      vtOnUserLayoutHideShowRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "objectPoolTransferInd")) {
+      objectPoolTransferInd().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "endOfObjectPoolReq")) {
+      endOfObjectPoolReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "vtfunction32ECU2VT")) {
+      vtfunction32ECU2VT().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "vtfunction33ECU2VT")) {
+      vtfunction33ECU2VT().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "vtfunction34ECU2VT")) {
+      vtfunction34ECU2VT().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "vtfunction36ECU2VT")) {
+      vtfunction36ECU2VT().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "vtfunction37ECU2VT")) {
+      vtfunction37ECU2VT().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "auxiliaryInputType2StatusInd")) {
+      auxiliaryInputType2StatusInd().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "vtfunction39ECU2VT")) {
+      vtfunction39ECU2VT().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "escReq")) {
+      escReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "hideShowObjectReq")) {
+      hideShowObjectReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "enableDisableObjectReq")) {
+      enableDisableObjectReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "selectInputObjectReq")) {
+      selectInputObjectReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "controlAudioSignalReq")) {
+      controlAudioSignalReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "setAudioVolumeReq")) {
+      setAudioVolumeReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "changeChildLocationReq")) {
+      changeChildLocationReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "changeSizeReq")) {
+      changeSizeReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "changeBackgroundColourReq")) {
+      changeBackgroundColourReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "changeNumericValueReq")) {
+      changeNumericValueReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "changeEndPointReq")) {
+      changeEndPointReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "changeFontAttributesReq")) {
+      changeFontAttributesReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "changeLineAttributesReq")) {
+      changeLineAttributesReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "changeFillAttributesReq")) {
+      changeFillAttributesReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "changeActiveMaskReq")) {
+      changeActiveMaskReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "changeSoftKeyMaskRes")) {
+      changeSoftKeyMaskRes().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "changeAttributeReq")) {
+      changeAttributeReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "changePriorityReq")) {
+      changePriorityReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "changeListItemReq")) {
+      changeListItemReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "deleteObjectPoolReq")) {
+      deleteObjectPoolReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "changeStringValueReq")) {
+      changeStringValueReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "changeChildPositionReq")) {
+      changeChildPositionReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "changeObjectLabelReq")) {
+      changeObjectLabelReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "changePolygonPointReq")) {
+      changePolygonPointReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "changePolygonScaleReq")) {
+      changePolygonScaleReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "graphicsContextReq")) {
+      graphicsContextReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "getAttributeValueReq")) {
+      getAttributeValueReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "selectColourMapReq")) {
+      selectColourMapReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "identifyVTReq")) {
+      identifyVTReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "executeExtendedMacroReq")) {
+      executeExtendedMacroReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "lockUnlockMaskReq")) {
+      lockUnlockMaskReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "executeMacroReq")) {
+      executeMacroReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "getMemoryReq")) {
+      getMemoryReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "getNumberOfSoftKeysReq")) {
+      getNumberOfSoftKeysReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "getTextFontDataReq")) {
+      getTextFontDataReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "getHardwareReq")) {
+      getHardwareReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "getSupportedWidecharsReq")) {
+      getSupportedWidecharsReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "getWindowMaskDataReq")) {
+      getWindowMaskDataReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "getSupportedObjectsReq")) {
+      getSupportedObjectsReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "storeVersionReq")) {
+      storeVersionReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "loadVersionReq")) {
+      loadVersionReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "deleteVersionReq")) {
+      deleteVersionReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "extendedGetVersionsReq")) {
+      extendedGetVersionsReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "extendedStoreVersionReq")) {
+      extendedStoreVersionReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "extendedLoadVersionReq")) {
+      extendedLoadVersionReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "extendedDeleteVersionReq")) {
+      extendedDeleteVersionReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "getVersionsReq")) {
+      getVersionsReq().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "unsupportedVTFunctionInd")) {
+      unsupportedVTFunctionInd().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "workingSetMaintenanceReq")) {
+      workingSetMaintenanceReq().set_param(*mp_last);
+      break;
+    }
+    mp_last->error("Field %s does not exist in type @IsobusVTMessageTypes.ECU2VT.", last_name);
+  } break;
+  default:
+    param.type_error("union template", "@IsobusVTMessageTypes.ECU2VT");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ECU2VT_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 ECU2VT::ALT_softKeyActivationRes:
+single_value.field_softKeyActivationRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_buttonActivationRes:
+single_value.field_buttonActivationRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_pointingEventRes:
+single_value.field_pointingEventRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_vtSelectInputObjectRes:
+single_value.field_vtSelectInputObjectRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_vtESCRes:
+single_value.field_vtESCRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_vtChangeNumericValueRes:
+single_value.field_vtChangeNumericValueRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_vtChangeActiveMaskRes:
+single_value.field_vtChangeActiveMaskRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_vtChangeSoftKeyMaskReq:
+single_value.field_vtChangeSoftKeyMaskReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_vtChangeStringValueRes:
+single_value.field_vtChangeStringValueRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_vtOnUserLayoutHideShowRes:
+single_value.field_vtOnUserLayoutHideShowRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_objectPoolTransferInd:
+single_value.field_objectPoolTransferInd->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_endOfObjectPoolReq:
+single_value.field_endOfObjectPoolReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_vtfunction32ECU2VT:
+single_value.field_vtfunction32ECU2VT->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_vtfunction33ECU2VT:
+single_value.field_vtfunction33ECU2VT->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_vtfunction34ECU2VT:
+single_value.field_vtfunction34ECU2VT->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_vtfunction36ECU2VT:
+single_value.field_vtfunction36ECU2VT->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_vtfunction37ECU2VT:
+single_value.field_vtfunction37ECU2VT->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_auxiliaryInputType2StatusInd:
+single_value.field_auxiliaryInputType2StatusInd->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_vtfunction39ECU2VT:
+single_value.field_vtfunction39ECU2VT->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_escReq:
+single_value.field_escReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_hideShowObjectReq:
+single_value.field_hideShowObjectReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_enableDisableObjectReq:
+single_value.field_enableDisableObjectReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_selectInputObjectReq:
+single_value.field_selectInputObjectReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_controlAudioSignalReq:
+single_value.field_controlAudioSignalReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_setAudioVolumeReq:
+single_value.field_setAudioVolumeReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_changeChildLocationReq:
+single_value.field_changeChildLocationReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_changeSizeReq:
+single_value.field_changeSizeReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_changeBackgroundColourReq:
+single_value.field_changeBackgroundColourReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_changeNumericValueReq:
+single_value.field_changeNumericValueReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_changeEndPointReq:
+single_value.field_changeEndPointReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_changeFontAttributesReq:
+single_value.field_changeFontAttributesReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_changeLineAttributesReq:
+single_value.field_changeLineAttributesReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_changeFillAttributesReq:
+single_value.field_changeFillAttributesReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_changeActiveMaskReq:
+single_value.field_changeActiveMaskReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_changeSoftKeyMaskRes:
+single_value.field_changeSoftKeyMaskRes->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_changeAttributeReq:
+single_value.field_changeAttributeReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_changePriorityReq:
+single_value.field_changePriorityReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_changeListItemReq:
+single_value.field_changeListItemReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_deleteObjectPoolReq:
+single_value.field_deleteObjectPoolReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_changeStringValueReq:
+single_value.field_changeStringValueReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_changeChildPositionReq:
+single_value.field_changeChildPositionReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_changeObjectLabelReq:
+single_value.field_changeObjectLabelReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_changePolygonPointReq:
+single_value.field_changePolygonPointReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_changePolygonScaleReq:
+single_value.field_changePolygonScaleReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_graphicsContextReq:
+single_value.field_graphicsContextReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_getAttributeValueReq:
+single_value.field_getAttributeValueReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_selectColourMapReq:
+single_value.field_selectColourMapReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_identifyVTReq:
+single_value.field_identifyVTReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_executeExtendedMacroReq:
+single_value.field_executeExtendedMacroReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_lockUnlockMaskReq:
+single_value.field_lockUnlockMaskReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_executeMacroReq:
+single_value.field_executeMacroReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_getMemoryReq:
+single_value.field_getMemoryReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_getNumberOfSoftKeysReq:
+single_value.field_getNumberOfSoftKeysReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_getTextFontDataReq:
+single_value.field_getTextFontDataReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_getHardwareReq:
+single_value.field_getHardwareReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_getSupportedWidecharsReq:
+single_value.field_getSupportedWidecharsReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_getWindowMaskDataReq:
+single_value.field_getWindowMaskDataReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_getSupportedObjectsReq:
+single_value.field_getSupportedObjectsReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_storeVersionReq:
+single_value.field_storeVersionReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_loadVersionReq:
+single_value.field_loadVersionReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_deleteVersionReq:
+single_value.field_deleteVersionReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_extendedGetVersionsReq:
+single_value.field_extendedGetVersionsReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_extendedStoreVersionReq:
+single_value.field_extendedStoreVersionReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_extendedLoadVersionReq:
+single_value.field_extendedLoadVersionReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_extendedDeleteVersionReq:
+single_value.field_extendedDeleteVersionReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_getVersionsReq:
+single_value.field_getVersionsReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_unsupportedVTFunctionInd:
+single_value.field_unsupportedVTFunctionInd->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+case ECU2VT::ALT_workingSetMaintenanceReq:
+single_value.field_workingSetMaintenanceReq->check_restriction(t_res, t_name ? t_name : "@IsobusVTMessageTypes.ECU2VT");
+return;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @IsobusVTMessageTypes.ECU2VT.");
+}
+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 : "@IsobusVTMessageTypes.ECU2VT");
+}
+
+
+/* Bodies of functions, altsteps and testcases */
+
+boolean operator==(null_type, const PolygonPointArray& other_value)
+{
+if (other_value.val_ptr == NULL)
+TTCN_error("The right operand of comparison is an unbound value of type @IsobusVTMessageTypes.PolygonPointArray.");
+return other_value.val_ptr->n_elements == 0;
+}
+
+boolean operator==(null_type, const WideCharRangeArray& other_value)
+{
+if (other_value.val_ptr == NULL)
+TTCN_error("The right operand of comparison is an unbound value of type @IsobusVTMessageTypes.WideCharRangeArray.");
+return other_value.val_ptr->n_elements == 0;
+}
+
+
+/* Bodies of static functions */
+
+static void pre_init_module()
+{
+TTCN_Location current_location("IsobusVTMessageTypes.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "IsobusVTMessageTypes");
+General__Types::module_object.pre_init_module();
+IsobusMessageTypes::module_object.pre_init_module();
+}
+
+static void post_init_module()
+{
+TTCN_Location current_location("IsobusVTMessageTypes.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "IsobusVTMessageTypes");
+General__Types::module_object.post_init_module();
+IsobusMessageTypes::module_object.post_init_module();
+}
+
+
+} /* end of namespace */
diff --git a/demo/IsobusVTMessageTypes.d b/demo/IsobusVTMessageTypes.d
new file mode 100644
index 0000000..da82304
--- /dev/null
+++ b/demo/IsobusVTMessageTypes.d
@@ -0,0 +1,59 @@
+IsobusVTMessageTypes.o IsobusVTMessageTypes.d : IsobusVTMessageTypes.cc IsobusVTMessageTypes.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TTCN3.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/version.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/cversion.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Types.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Vector.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Error.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Basetype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Encdec.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RInt.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON_Tokenizer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Logger.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Template.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Integer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ttcn3float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Boolean.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Null.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Optional.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Param_Types.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/memory.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/BER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Textbuf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Parameters.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XmlReader.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Objid.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Verdicttype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Component.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Bitstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RAW.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/CharCoding.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Hexstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Octetstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Any.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Universal_charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Struct_of.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Array.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_CharacterString.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_External.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TEXT.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_EmbeddedPDV.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Addfunc.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Timer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Port.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Event_Handler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/TitanLoggerApiSimple.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/PreGenRecordOf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Module_list.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Snapshot.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Default.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Runtime.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/OER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Profiler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ProfilerTools.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Debugger.hh \
+ General_Types.hh IsobusMessageTypes.hh
diff --git a/demo/IsobusVTMessageTypes.hh b/demo/IsobusVTMessageTypes.hh
new file mode 100644
index 0000000..ce8230c
--- /dev/null
+++ b/demo/IsobusVTMessageTypes.hh
@@ -0,0 +1,34393 @@
+// This C++ header file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+#ifndef IsobusVTMessageTypes_HH
+#define IsobusVTMessageTypes_HH
+
+#ifdef TITAN_RUNTIME_2
+#error Generated code does not match with used runtime.\
+ Code was generated without -R option but -DTITAN_RUNTIME_2 was used.
+#endif
+
+/* Header file includes */
+
+#include <TTCN3.hh>
+#include "General_Types.hh"
+#include "IsobusMessageTypes.hh"
+
+#if TTCN3_VERSION != 60600
+#error Version mismatch detected.\
+ Please check the version of the TTCN-3 compiler and the base library.\
+ Run make clean and rebuild the project if the version of the compiler changed recently.
+#endif
+
+#ifndef LINUX
+#error This file should be compiled on LINUX
+#endif
+
+#undef IsobusVTMessageTypes_HH
+#endif
+
+namespace IsobusVTMessageTypes {
+
+/* Forward declarations of classes */
+
+class e__SoftKeyActivationReq__KeyAactivationCode;
+class e__SoftKeyActivationReq__KeyAactivationCode_template;
+class SoftKeyActivationReq;
+class SoftKeyActivationReq_template;
+class SoftKeyActivationRes;
+class SoftKeyActivationRes_template;
+class e__ButtonActivationReq__KeyAactivationCode;
+class e__ButtonActivationReq__KeyAactivationCode_template;
+class ButtonActivationReq;
+class ButtonActivationReq_template;
+class e__ButtonActivationRes__KeyAactivationCode;
+class e__ButtonActivationRes__KeyAactivationCode_template;
+class ButtonActivationRes;
+class ButtonActivationRes_template;
+class e__PointingEvent__touchState;
+class e__PointingEvent__touchState_template;
+class PointingEventReq;
+class PointingEventReq_template;
+class PointingEventRes;
+class PointingEventRes_template;
+class e__VTOnUserLayoutHideShow__state;
+class e__VTOnUserLayoutHideShow__state_template;
+class e__VTSelectInputObject__selection;
+class e__VTSelectInputObject__selection_template;
+class VTSelectInputObject__Bitmask;
+class VTSelectInputObject__Bitmask_template;
+class VTSelectInputObject__v4AndLater__Bitmask;
+class VTSelectInputObject__v4AndLater__Bitmask_template;
+class VTSelectInputObjectReq;
+class VTSelectInputObjectReq_template;
+class VTSelectInputObjectReq__v3AndPrior;
+class VTSelectInputObjectReq__v3AndPrior_template;
+class VTSelectInputObjectReq__v4AndLater;
+class VTSelectInputObjectReq__v4AndLater_template;
+class VTSelectInputObjectRes;
+class VTSelectInputObjectRes_template;
+class VTSelectInputObjectRes__v4AndPrior;
+class VTSelectInputObjectRes__v4AndPrior_template;
+class VTSelectInputObjectRes__v5AndLater;
+class VTSelectInputObjectRes__v5AndLater_template;
+class VTESC__ErrorCodes;
+class VTESC__ErrorCodes_template;
+class VTESCReq;
+class VTESCReq_template;
+class VTESCRes;
+class VTESCRes_template;
+class VTChangeNumericValueReq;
+class VTChangeNumericValueReq_template;
+class VTChangeNumericValueRes;
+class VTChangeNumericValueRes_template;
+class VTChangeActiveMasErrorcodes;
+class VTChangeActiveMasErrorcodes_template;
+class VTChangeActiveMaskReq;
+class VTChangeActiveMaskReq_template;
+class VTChangeActiveMaskRes;
+class VTChangeActiveMaskRes_template;
+class VTChangeSoftKeyMaskErrorCodes;
+class VTChangeSoftKeyMaskErrorCodes_template;
+class VTChangeSoftKeyMaskReq;
+class VTChangeSoftKeyMaskReq_template;
+class VTChangeSoftKeyMaskRes;
+class VTChangeSoftKeyMaskRes_template;
+class VTChangeStringValueReq;
+class VTChangeStringValueReq_template;
+class VTChangeStringValueRes;
+class VTChangeStringValueRes_template;
+class VTOnUserLayoutHideShowReq;
+class VTOnUserLayoutHideShowReq_template;
+class VTOnUserLayoutHideShowRes;
+class VTOnUserLayoutHideShowRes_template;
+class VTControlAudioSignalTerminationParameterTerminationCause;
+class VTControlAudioSignalTerminationParameterTerminationCause_template;
+class VTControlAudioSignalTerminationInd;
+class VTControlAudioSignalTerminationInd_template;
+class ObjectPoolTransferInd;
+class ObjectPoolTransferInd_template;
+class EndOfObjectPoolReq;
+class EndOfObjectPoolReq_template;
+class EndOfObjectPoolResErrorCodes;
+class EndOfObjectPoolResErrorCodes_template;
+class EndOfObjectPoolResObjectPoolErrorCodes;
+class EndOfObjectPoolResObjectPoolErrorCodes_template;
+class EndOfObjectPoolRes;
+class EndOfObjectPoolRes_template;
+class VTfunction32VT2ECU;
+class VTfunction32VT2ECU_template;
+class VTfunction32ECU2VT;
+class VTfunction32ECU2VT_template;
+class VTfunction33ECU2VT;
+class VTfunction33ECU2VT_template;
+class VTfunction34VT2ECU;
+class VTfunction34VT2ECU_template;
+class VTfunction34ECU2VT;
+class VTfunction34ECU2VT_template;
+class VTfunction36VT2ECU;
+class VTfunction36VT2ECU_template;
+class VTfunction36ECU2VT;
+class VTfunction36ECU2VT_template;
+class VTfunction37VT2ECU;
+class VTfunction37VT2ECU_template;
+class VTfunction37ECU2VT;
+class VTfunction37ECU2VT_template;
+class AuxiliaryInputType2StatusInd;
+class AuxiliaryInputType2StatusInd_template;
+class VTfunction39VT2ECU;
+class VTfunction39VT2ECU_template;
+class VTfunction39ECU2VT;
+class VTfunction39ECU2VT_template;
+class ESCreq;
+class ESCreq_template;
+class ESCerrorCodes;
+class ESCerrorCodes_template;
+class ESCres;
+class ESCres_template;
+class e__HideShowObject__state;
+class e__HideShowObject__state_template;
+class HideShowObjectReq;
+class HideShowObjectReq_template;
+class HideShowObjectRes__errorCodes;
+class HideShowObjectRes__errorCodes_template;
+class HideShowObjectRes;
+class HideShowObjectRes_template;
+class VTfunction161VT2ECU;
+class VTfunction161VT2ECU_template;
+class VTfunction161ECU2VT;
+class VTfunction161ECU2VT_template;
+class e__EnableDisableObject__DisableEnable;
+class e__EnableDisableObject__DisableEnable_template;
+class EnableDisableObjectReq;
+class EnableDisableObjectReq_template;
+class EnableDisableObjectRes__errorCodes;
+class EnableDisableObjectRes__errorCodes_template;
+class EnableDisableObjectRes;
+class EnableDisableObjectRes_template;
+class e__SelectInputObjectReq__Option;
+class e__SelectInputObjectReq__Option_template;
+class SelectInputObjectReq;
+class SelectInputObjectReq_template;
+class e__SelectInputObjectRes__Response;
+class e__SelectInputObjectRes__Response_template;
+class SelectInputObjectRes__errorCodes;
+class SelectInputObjectRes__errorCodes_template;
+class SelectInputObjectRes;
+class SelectInputObjectRes_template;
+class ControlAudioSignalReq;
+class ControlAudioSignalReq_template;
+class e__ControlAudioSignalRes__ErrorCodes;
+class e__ControlAudioSignalRes__ErrorCodes_template;
+class ControlAudioSignalRes__ErrorCodes;
+class ControlAudioSignalRes__ErrorCodes_template;
+class ControlAudioSignalRes;
+class ControlAudioSignalRes_template;
+class SetAudioVolumeReq;
+class SetAudioVolumeReq_template;
+class SetAudioVolumeErrorCodes;
+class SetAudioVolumeErrorCodes_template;
+class SetAudioVolumeRes;
+class SetAudioVolumeRes_template;
+class ChangeChildLocationReq;
+class ChangeChildLocationReq_template;
+class ChangeChildLocationRes__errorCodes;
+class ChangeChildLocationRes__errorCodes_template;
+class ChangeChildLocationRes;
+class ChangeChildLocationRes_template;
+class ChangeSizeReq;
+class ChangeSizeReq_template;
+class ChangeSizeRes__errorCodes;
+class ChangeSizeRes__errorCodes_template;
+class ChangeSizeRes;
+class ChangeSizeRes_template;
+class ChangeBackgroundColourReq;
+class ChangeBackgroundColourReq_template;
+class ChangeBackgroundColourRes__errorCodes;
+class ChangeBackgroundColourRes__errorCodes_template;
+class ChangeBackgroundColourRes;
+class ChangeBackgroundColourRes_template;
+class ChangeNumericValueReq;
+class ChangeNumericValueReq_template;
+class ChangeNumericValueRes__errorCodes;
+class ChangeNumericValueRes__errorCodes_template;
+class ChangeNumericValueRes;
+class ChangeNumericValueRes_template;
+class ChangeEndPointRes__errorCodes;
+class ChangeEndPointRes__errorCodes_template;
+class ChangeEndPointRes;
+class ChangeEndPointRes_template;
+class e__ChangeEndPointReq__LineDirection;
+class e__ChangeEndPointReq__LineDirection_template;
+class ChangeEndPointReq;
+class ChangeEndPointReq_template;
+class ChangeFontAttributesRes__errorCodes;
+class ChangeFontAttributesRes__errorCodes_template;
+class ChangeFontAttributesRes;
+class ChangeFontAttributesRes_template;
+class ChangeFontAttributesReq;
+class ChangeFontAttributesReq_template;
+class ChangeLineAttributesRes__errorCodes;
+class ChangeLineAttributesRes__errorCodes_template;
+class ChangeLineAttributesRes;
+class ChangeLineAttributesRes_template;
+class ChangeLineAttributesReq;
+class ChangeLineAttributesReq_template;
+class ChangeFillAttributesRes__errorCodes;
+class ChangeFillAttributesRes__errorCodes_template;
+class ChangeFillAttributesRes;
+class ChangeFillAttributesRes_template;
+class ChangeFillAttributesReq;
+class ChangeFillAttributesReq_template;
+class ChangeActiveMaskReq;
+class ChangeActiveMaskReq_template;
+class ChangeActiveMaskRes__errorCodes;
+class ChangeActiveMaskRes__errorCodes_template;
+class ChangeActiveMaskRes;
+class ChangeActiveMaskRes_template;
+class e__ChangeSoftKeyMaskReq__MaskType;
+class e__ChangeSoftKeyMaskReq__MaskType_template;
+class ChangeSoftKeyMaskReq;
+class ChangeSoftKeyMaskReq_template;
+class ChangeSoftKeyMaskRes__errorCodes;
+class ChangeSoftKeyMaskRes__errorCodes_template;
+class ChangeSoftKeyMaskRes;
+class ChangeSoftKeyMaskRes_template;
+class ChangeAttributeReq;
+class ChangeAttributeReq_template;
+class ChangeAttributeRes__errorCodes;
+class ChangeAttributeRes__errorCodes_template;
+class ChangeAttributeRes;
+class ChangeAttributeRes_template;
+class ChangePriorityRes__errorCodes;
+class ChangePriorityRes__errorCodes_template;
+class ChangePriorityRes;
+class ChangePriorityRes_template;
+class ChangePriorityReq;
+class ChangePriorityReq_template;
+class ChangeListItemRes__errorCodes;
+class ChangeListItemRes__errorCodes_template;
+class ChangeListItemRes;
+class ChangeListItemRes_template;
+class ChangeListItemReq;
+class ChangeListItemReq_template;
+class DeleteObjectPoolReq;
+class DeleteObjectPoolReq_template;
+class DeleteObjectPoolRes__ErrorCodes;
+class DeleteObjectPoolRes__ErrorCodes_template;
+class DeleteObjectPoolRes;
+class DeleteObjectPoolRes_template;
+class ChangeStringValueReq;
+class ChangeStringValueReq_template;
+class ChangeStringValueRes__ErrorCodes;
+class ChangeStringValueRes__ErrorCodes_template;
+class ChangeStringValueRes;
+class ChangeStringValueRes_template;
+class ChangeChildPositionReq;
+class ChangeChildPositionReq_template;
+class ChangeChildPositionRes__ErrorCodes;
+class ChangeChildPositionRes__ErrorCodes_template;
+class ChangeChildPositionRes;
+class ChangeChildPositionRes_template;
+class ChangeObjectLabelRes__ErrorCodes;
+class ChangeObjectLabelRes__ErrorCodes_template;
+class ChangeObjectLabelRes;
+class ChangeObjectLabelRes_template;
+class ChangeObjectLabelReq;
+class ChangeObjectLabelReq_template;
+class ChangePolygonPointRes__ErrorCodes;
+class ChangePolygonPointRes__ErrorCodes_template;
+class ChangePolygonPointRes;
+class ChangePolygonPointRes_template;
+class ChangePolygonPointReq;
+class ChangePolygonPointReq_template;
+class ChangePolygonScaleRes__ErrorCodes;
+class ChangePolygonScaleRes__ErrorCodes_template;
+class ChangePolygonScaleRes;
+class ChangePolygonScaleRes_template;
+class ChangePolygonScaleReq;
+class ChangePolygonScaleReq_template;
+class GraphicsContextRes__ErrorCodes;
+class GraphicsContextRes__ErrorCodes_template;
+class GraphicsContextRes;
+class GraphicsContextRes_template;
+class SetGraphicsCursor;
+class SetGraphicsCursor_template;
+class MoveGraphicsCursor;
+class MoveGraphicsCursor_template;
+class SetForegroundColour;
+class SetForegroundColour_template;
+class SetBackgroundColour;
+class SetBackgroundColour_template;
+class SetLineAttributesObjectID;
+class SetLineAttributesObjectID_template;
+class SetFileAttributesObjectID;
+class SetFileAttributesObjectID_template;
+class SetFontAttributesObjectID;
+class SetFontAttributesObjectID_template;
+class EraseRectangle;
+class EraseRectangle_template;
+class DrawPoint;
+class DrawPoint_template;
+class DrawLine;
+class DrawLine_template;
+class DrawRectangle;
+class DrawRectangle_template;
+class DrawClosedEllipse;
+class DrawClosedEllipse_template;
+class PolygonPoint;
+class PolygonPoint_template;
+class PolygonPointArray;
+class PolygonPointArray_template;
+class DrawPolygon;
+class DrawPolygon_template;
+class e__Tranparency;
+class e__Tranparency_template;
+class DrawText;
+class DrawText_template;
+class PanViewport;
+class PanViewport_template;
+class ZoomViewport;
+class ZoomViewport_template;
+class PanAndZoomViewport;
+class PanAndZoomViewport_template;
+class ChangeViewportSize;
+class ChangeViewportSize_template;
+class DrawVTObject;
+class DrawVTObject_template;
+class CopyCanvasToPictureGraphic;
+class CopyCanvasToPictureGraphic_template;
+class CopyViewportToPictureGraphic;
+class CopyViewportToPictureGraphic_template;
+class GraphicsContextReq__union;
+class GraphicsContextReq__union_template;
+class GraphicsContextReq;
+class GraphicsContextReq_template;
+class GetAttributeValueRes;
+class GetAttributeValueRes_template;
+class GetAttributeValueReq;
+class GetAttributeValueReq_template;
+class SelectColourMapRes__ErrorCodes;
+class SelectColourMapRes__ErrorCodes_template;
+class SelectColourMapRes;
+class SelectColourMapRes_template;
+class SelectColourMapReq;
+class SelectColourMapReq_template;
+class IdentifyVTRes;
+class IdentifyVTRes_template;
+class IdentifyVTReq;
+class IdentifyVTReq_template;
+class ExecuteExtendedMacroRes__ErrorCodes;
+class ExecuteExtendedMacroRes__ErrorCodes_template;
+class ExecuteExtendedMacroRes;
+class ExecuteExtendedMacroRes_template;
+class ExecuteExtendedMacroReq;
+class ExecuteExtendedMacroReq_template;
+class LockUnlockMaskRes__ErrorCodes;
+class LockUnlockMaskRes__ErrorCodes_template;
+class e__LockUnlockMaskReqCommand;
+class e__LockUnlockMaskReqCommand_template;
+class LockUnlockMaskRes;
+class LockUnlockMaskRes_template;
+class LockUnlockMaskReq;
+class LockUnlockMaskReq_template;
+class ExecuteMacroReq__ErrorCodes;
+class ExecuteMacroReq__ErrorCodes_template;
+class ExecuteMacroRes;
+class ExecuteMacroRes_template;
+class ExecuteMacroReq;
+class ExecuteMacroReq_template;
+class GetMemoryReq;
+class GetMemoryReq_template;
+class e__GetMemoryResVersionNumber;
+class e__GetMemoryResVersionNumber_template;
+class e__GetMemoryResStatus;
+class e__GetMemoryResStatus_template;
+class GetMemoryRes;
+class GetMemoryRes_template;
+class GetNumberOfSoftKeysReq;
+class GetNumberOfSoftKeysReq_template;
+class GetNumberOfSoftKeysRes;
+class GetNumberOfSoftKeysRes_template;
+class GetTextFontDataReq;
+class GetTextFontDataReq_template;
+class TextFontDataRes__small__font__sizes;
+class TextFontDataRes__small__font__sizes_template;
+class TextFontDataRes__large__font__sizes;
+class TextFontDataRes__large__font__sizes_template;
+class TextFontDataRes__type__attribute;
+class TextFontDataRes__type__attribute_template;
+class GetTextFontDataRes;
+class GetTextFontDataRes_template;
+class GetHardwareReq;
+class GetHardwareReq_template;
+class e__GetHardwareResGraphicType;
+class e__GetHardwareResGraphicType_template;
+class GetHardwareResHardwareType;
+class GetHardwareResHardwareType_template;
+class GetHardwareRes;
+class GetHardwareRes_template;
+class e__Codeplane;
+class e__Codeplane_template;
+class GetSupportedWidecharsReq;
+class GetSupportedWidecharsReq_template;
+class WideCharRange;
+class WideCharRange_template;
+class WideCharRangeArray;
+class WideCharRangeArray_template;
+class GetSupportedWidecharsRes;
+class GetSupportedWidecharsRes_template;
+class GetWindowMaskDataReq;
+class GetWindowMaskDataReq_template;
+class GetWindowMaskDataRes;
+class GetWindowMaskDataRes_template;
+class GetSupportedObjectsReq;
+class GetSupportedObjectsReq_template;
+class GetSupportedObjectsRes;
+class GetSupportedObjectsRes_template;
+class StoreVersionRes__errorCodesType;
+class StoreVersionRes__errorCodesType_template;
+class StoreVersionRes;
+class StoreVersionRes_template;
+class StoreVersionReq;
+class StoreVersionReq_template;
+class WorkingSetMaintenanceBitMask;
+class WorkingSetMaintenanceBitMask_template;
+class e__WorkingSetMaintenanceVersionNumber;
+class e__WorkingSetMaintenanceVersionNumber_template;
+class LoadVersionReq;
+class LoadVersionReq_template;
+class LoadVersionRes__errorCodesType;
+class LoadVersionRes__errorCodesType_template;
+class LoadVersionRes;
+class LoadVersionRes_template;
+class DeleteVersionRes__errorCodesType;
+class DeleteVersionRes__errorCodesType_template;
+class DeleteVersionRes;
+class DeleteVersionRes_template;
+class DeleteVersionReq;
+class DeleteVersionReq_template;
+class ExtendedGetVersionsRes;
+class ExtendedGetVersionsRes_template;
+class ExtendedGetVersionsReq;
+class ExtendedGetVersionsReq_template;
+class ExtendedStoreVersionRes__errorCodesType;
+class ExtendedStoreVersionRes__errorCodesType_template;
+class ExtendedStoreVersionRes;
+class ExtendedStoreVersionRes_template;
+class ExtendedStoreVersionReq;
+class ExtendedStoreVersionReq_template;
+class ExtendedLoadVersionRes__errorCodesType;
+class ExtendedLoadVersionRes__errorCodesType_template;
+class ExtendedLoadVersionRes;
+class ExtendedLoadVersionRes_template;
+class ExtendedLoadVersionReq;
+class ExtendedLoadVersionReq_template;
+class ExtendedDeleteVersionRes__errorCodesType;
+class ExtendedDeleteVersionRes__errorCodesType_template;
+class ExtendedDeleteVersionRes;
+class ExtendedDeleteVersionRes_template;
+class ExtendedDeleteVersionReq;
+class ExtendedDeleteVersionReq_template;
+class GetVersionsReq;
+class GetVersionsReq_template;
+class GetVersionsRes;
+class GetVersionsRes_template;
+class VTUnsupportedVTFunctionInd;
+class VTUnsupportedVTFunctionInd_template;
+class UnsupportedVTFunctionInd;
+class UnsupportedVTFunctionInd_template;
+class WorkingSetMaintenanceReq;
+class WorkingSetMaintenanceReq_template;
+class e__BusyCodes;
+class e__BusyCodes_template;
+class VTStatusReq;
+class VTStatusReq_template;
+class VT2ECU;
+class VT2ECU_template;
+class ECU2VT;
+class ECU2VT_template;
+
+} /* end of namespace */
+
+#ifndef IsobusVTMessageTypes_HH
+#define IsobusVTMessageTypes_HH
+
+namespace IsobusVTMessageTypes {
+
+/* Type definitions */
+
+typedef INTEGER VTfunction;
+typedef INTEGER_template VTfunction_template;
+typedef INTEGER AnyObjectID;
+typedef INTEGER_template AnyObjectID_template;
+typedef INTEGER ValidObjectID;
+typedef INTEGER_template ValidObjectID_template;
+typedef INTEGER AttributeID;
+typedef INTEGER_template AttributeID_template;
+typedef INTEGER PercentType;
+typedef INTEGER_template PercentType_template;
+typedef INTEGER DeltaPositionType;
+typedef INTEGER_template DeltaPositionType_template;
+typedef INTEGER XPositionType;
+typedef INTEGER_template XPositionType_template;
+typedef INTEGER YPositionType;
+typedef INTEGER_template YPositionType_template;
+typedef INTEGER XOffsetType;
+typedef INTEGER_template XOffsetType_template;
+typedef INTEGER YOffsetType;
+typedef INTEGER_template YOffsetType_template;
+typedef INTEGER ViewportXAttribute;
+typedef INTEGER_template ViewportXAttribute_template;
+typedef INTEGER ViewportYAttribute;
+typedef INTEGER_template ViewportYAttribute_template;
+typedef INTEGER WidthType;
+typedef INTEGER_template WidthType_template;
+typedef INTEGER HeightType;
+typedef INTEGER_template HeightType_template;
+typedef INTEGER PositionType;
+typedef INTEGER_template PositionType_template;
+typedef INTEGER KeyNumberType;
+typedef INTEGER_template KeyNumberType_template;
+typedef INTEGER FrequencyType;
+typedef INTEGER_template FrequencyType_template;
+typedef INTEGER ColorType;
+typedef INTEGER_template ColorType_template;
+typedef INTEGER FontSize;
+typedef INTEGER_template FontSize_template;
+typedef INTEGER FontType;
+typedef INTEGER_template FontType_template;
+typedef INTEGER FontStyle;
+typedef INTEGER_template FontStyle_template;
+typedef INTEGER LineWidth;
+typedef INTEGER_template LineWidth_template;
+typedef INTEGER Priority;
+typedef INTEGER_template Priority_template;
+typedef INTEGER Index;
+typedef INTEGER_template Index_template;
+typedef BITSTRING LineArt;
+typedef BITSTRING_template LineArt_template;
+typedef CHARSTRING CHR7;
+typedef CHARSTRING_template CHR7_template;
+typedef CHARSTRING VersionLabel7Char;
+typedef CHARSTRING_template VersionLabel7Char_template;
+typedef FLOAT SingleFloat;
+typedef FLOAT_template SingleFloat_template;
+typedef OCTETSTRING ObjectPoolRecords;
+typedef OCTETSTRING_template ObjectPoolRecords_template;
+typedef INTEGER AuxiliaryInputType2StatusInd__AuxiliaryInputObjectID;
+typedef INTEGER_template AuxiliaryInputType2StatusInd__AuxiliaryInputObjectID_template;
+typedef BITSTRING AuxiliaryInputType2StatusInd__OperatingStateType;
+typedef BITSTRING_template AuxiliaryInputType2StatusInd__OperatingStateType_template;
+typedef INTEGER BootTimeType;
+typedef INTEGER_template BootTimeType_template;
+
+/* Class definitions */
+
+class e__SoftKeyActivationReq__KeyAactivationCode : public Base_Type { // enum
+friend class e__SoftKeyActivationReq__KeyAactivationCode_template;
+public:
+enum enum_type { keyHasBeenReleased = 0, keyHasBeenPressed = 1, keyIsStillPressed = 2, keyPressAborted = 3, UNKNOWN_VALUE = 4, UNBOUND_VALUE = 5 };
+private:
+enum_type enum_value;
+
+public:
+e__SoftKeyActivationReq__KeyAactivationCode();
+e__SoftKeyActivationReq__KeyAactivationCode(int other_value);
+e__SoftKeyActivationReq__KeyAactivationCode(enum_type other_value);
+e__SoftKeyActivationReq__KeyAactivationCode(const e__SoftKeyActivationReq__KeyAactivationCode& other_value);
+
+e__SoftKeyActivationReq__KeyAactivationCode& operator=(int other_value);
+e__SoftKeyActivationReq__KeyAactivationCode& operator=(enum_type other_value);
+e__SoftKeyActivationReq__KeyAactivationCode& operator=(const e__SoftKeyActivationReq__KeyAactivationCode& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const e__SoftKeyActivationReq__KeyAactivationCode& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const e__SoftKeyActivationReq__KeyAactivationCode& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const e__SoftKeyActivationReq__KeyAactivationCode& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const e__SoftKeyActivationReq__KeyAactivationCode& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const e__SoftKeyActivationReq__KeyAactivationCode& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const e__SoftKeyActivationReq__KeyAactivationCode& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const e__SoftKeyActivationReq__KeyAactivationCode& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class e__SoftKeyActivationReq__KeyAactivationCode_template : public Base_Template {
+union {
+e__SoftKeyActivationReq__KeyAactivationCode::enum_type single_value;
+struct {
+unsigned int n_values;
+e__SoftKeyActivationReq__KeyAactivationCode_template *list_value;
+} value_list;
+};
+
+void copy_template(const e__SoftKeyActivationReq__KeyAactivationCode_template& other_value);
+
+public:
+e__SoftKeyActivationReq__KeyAactivationCode_template();
+e__SoftKeyActivationReq__KeyAactivationCode_template(template_sel other_value);
+e__SoftKeyActivationReq__KeyAactivationCode_template(int other_value);
+e__SoftKeyActivationReq__KeyAactivationCode_template(e__SoftKeyActivationReq__KeyAactivationCode::enum_type other_value);
+e__SoftKeyActivationReq__KeyAactivationCode_template(const e__SoftKeyActivationReq__KeyAactivationCode& other_value);
+e__SoftKeyActivationReq__KeyAactivationCode_template(const OPTIONAL<e__SoftKeyActivationReq__KeyAactivationCode>& other_value);
+e__SoftKeyActivationReq__KeyAactivationCode_template(const e__SoftKeyActivationReq__KeyAactivationCode_template& other_value);
+~e__SoftKeyActivationReq__KeyAactivationCode_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+e__SoftKeyActivationReq__KeyAactivationCode_template& operator=(template_sel other_value);
+e__SoftKeyActivationReq__KeyAactivationCode_template& operator=(int other_value);
+e__SoftKeyActivationReq__KeyAactivationCode_template& operator=(e__SoftKeyActivationReq__KeyAactivationCode::enum_type other_value);
+e__SoftKeyActivationReq__KeyAactivationCode_template& operator=(const e__SoftKeyActivationReq__KeyAactivationCode& other_value);
+e__SoftKeyActivationReq__KeyAactivationCode_template& operator=(const OPTIONAL<e__SoftKeyActivationReq__KeyAactivationCode>& other_value);
+e__SoftKeyActivationReq__KeyAactivationCode_template& operator=(const e__SoftKeyActivationReq__KeyAactivationCode_template& other_value);
+
+boolean match(e__SoftKeyActivationReq__KeyAactivationCode::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const e__SoftKeyActivationReq__KeyAactivationCode& other_value, boolean legacy = FALSE) const;
+e__SoftKeyActivationReq__KeyAactivationCode::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+e__SoftKeyActivationReq__KeyAactivationCode_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const e__SoftKeyActivationReq__KeyAactivationCode& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class SoftKeyActivationReq : public Base_Type {
+  INTEGER field_vtfunction;
+  e__SoftKeyActivationReq__KeyAactivationCode field_keyActivationCode;
+  INTEGER field_objectID;
+  INTEGER field_parentObjectID;
+  INTEGER field_keyNumber;
+  OCTETSTRING field_reserved8;
+public:
+  SoftKeyActivationReq();
+  SoftKeyActivationReq(const INTEGER& par_vtfunction,
+    const e__SoftKeyActivationReq__KeyAactivationCode& par_keyActivationCode,
+    const INTEGER& par_objectID,
+    const INTEGER& par_parentObjectID,
+    const INTEGER& par_keyNumber,
+    const OCTETSTRING& par_reserved8);
+  SoftKeyActivationReq(const SoftKeyActivationReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SoftKeyActivationReq& operator=(const SoftKeyActivationReq& other_value);
+  boolean operator==(const SoftKeyActivationReq& other_value) const;
+  inline boolean operator!=(const SoftKeyActivationReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline e__SoftKeyActivationReq__KeyAactivationCode& keyActivationCode()
+    {return field_keyActivationCode;}
+  inline const e__SoftKeyActivationReq__KeyAactivationCode& keyActivationCode() const
+    {return field_keyActivationCode;}
+  inline INTEGER& objectID()
+    {return field_objectID;}
+  inline const INTEGER& objectID() const
+    {return field_objectID;}
+  inline INTEGER& parentObjectID()
+    {return field_parentObjectID;}
+  inline const INTEGER& parentObjectID() const
+    {return field_parentObjectID;}
+  inline INTEGER& keyNumber()
+    {return field_keyNumber;}
+  inline const INTEGER& keyNumber() const
+    {return field_keyNumber;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 6;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class SoftKeyActivationReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SoftKeyActivationReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SoftKeyActivationReq& other_value);
+void copy_template(const SoftKeyActivationReq_template& other_value);
+
+public:
+SoftKeyActivationReq_template();
+SoftKeyActivationReq_template(template_sel other_value);
+SoftKeyActivationReq_template(const SoftKeyActivationReq& other_value);
+SoftKeyActivationReq_template(const OPTIONAL<SoftKeyActivationReq>& other_value);
+SoftKeyActivationReq_template(const SoftKeyActivationReq_template& other_value);
+~SoftKeyActivationReq_template();
+SoftKeyActivationReq_template& operator=(template_sel other_value);
+SoftKeyActivationReq_template& operator=(const SoftKeyActivationReq& other_value);
+SoftKeyActivationReq_template& operator=(const OPTIONAL<SoftKeyActivationReq>& other_value);
+SoftKeyActivationReq_template& operator=(const SoftKeyActivationReq_template& other_value);
+boolean match(const SoftKeyActivationReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SoftKeyActivationReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SoftKeyActivationReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+e__SoftKeyActivationReq__KeyAactivationCode_template& keyActivationCode();
+const e__SoftKeyActivationReq__KeyAactivationCode_template& keyActivationCode() const;
+INTEGER_template& objectID();
+const INTEGER_template& objectID() const;
+INTEGER_template& parentObjectID();
+const INTEGER_template& parentObjectID() const;
+INTEGER_template& keyNumber();
+const INTEGER_template& keyNumber() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const SoftKeyActivationReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SoftKeyActivationRes : public Base_Type {
+  INTEGER field_vtfunction;
+  e__SoftKeyActivationReq__KeyAactivationCode field_keyActivationCode;
+  INTEGER field_objectID;
+  INTEGER field_parentObjectID;
+  INTEGER field_keyNumber;
+  OCTETSTRING field_reserved8;
+public:
+  SoftKeyActivationRes();
+  SoftKeyActivationRes(const INTEGER& par_vtfunction,
+    const e__SoftKeyActivationReq__KeyAactivationCode& par_keyActivationCode,
+    const INTEGER& par_objectID,
+    const INTEGER& par_parentObjectID,
+    const INTEGER& par_keyNumber,
+    const OCTETSTRING& par_reserved8);
+  SoftKeyActivationRes(const SoftKeyActivationRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SoftKeyActivationRes& operator=(const SoftKeyActivationRes& other_value);
+  boolean operator==(const SoftKeyActivationRes& other_value) const;
+  inline boolean operator!=(const SoftKeyActivationRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline e__SoftKeyActivationReq__KeyAactivationCode& keyActivationCode()
+    {return field_keyActivationCode;}
+  inline const e__SoftKeyActivationReq__KeyAactivationCode& keyActivationCode() const
+    {return field_keyActivationCode;}
+  inline INTEGER& objectID()
+    {return field_objectID;}
+  inline const INTEGER& objectID() const
+    {return field_objectID;}
+  inline INTEGER& parentObjectID()
+    {return field_parentObjectID;}
+  inline const INTEGER& parentObjectID() const
+    {return field_parentObjectID;}
+  inline INTEGER& keyNumber()
+    {return field_keyNumber;}
+  inline const INTEGER& keyNumber() const
+    {return field_keyNumber;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 6;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class SoftKeyActivationRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SoftKeyActivationRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SoftKeyActivationRes& other_value);
+void copy_template(const SoftKeyActivationRes_template& other_value);
+
+public:
+SoftKeyActivationRes_template();
+SoftKeyActivationRes_template(template_sel other_value);
+SoftKeyActivationRes_template(const SoftKeyActivationRes& other_value);
+SoftKeyActivationRes_template(const OPTIONAL<SoftKeyActivationRes>& other_value);
+SoftKeyActivationRes_template(const SoftKeyActivationRes_template& other_value);
+~SoftKeyActivationRes_template();
+SoftKeyActivationRes_template& operator=(template_sel other_value);
+SoftKeyActivationRes_template& operator=(const SoftKeyActivationRes& other_value);
+SoftKeyActivationRes_template& operator=(const OPTIONAL<SoftKeyActivationRes>& other_value);
+SoftKeyActivationRes_template& operator=(const SoftKeyActivationRes_template& other_value);
+boolean match(const SoftKeyActivationRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SoftKeyActivationRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SoftKeyActivationRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+e__SoftKeyActivationReq__KeyAactivationCode_template& keyActivationCode();
+const e__SoftKeyActivationReq__KeyAactivationCode_template& keyActivationCode() const;
+INTEGER_template& objectID();
+const INTEGER_template& objectID() const;
+INTEGER_template& parentObjectID();
+const INTEGER_template& parentObjectID() const;
+INTEGER_template& keyNumber();
+const INTEGER_template& keyNumber() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const SoftKeyActivationRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class e__ButtonActivationReq__KeyAactivationCode : public Base_Type { // enum
+friend class e__ButtonActivationReq__KeyAactivationCode_template;
+public:
+enum enum_type { buttonHasBeenUnlatchedorReleased = 0, buttonHasBeenPressedOrLatched = 1, buttonIsStillHeld = 2, buttonPressAborted = 3, UNKNOWN_VALUE = 4, UNBOUND_VALUE = 5 };
+private:
+enum_type enum_value;
+
+public:
+e__ButtonActivationReq__KeyAactivationCode();
+e__ButtonActivationReq__KeyAactivationCode(int other_value);
+e__ButtonActivationReq__KeyAactivationCode(enum_type other_value);
+e__ButtonActivationReq__KeyAactivationCode(const e__ButtonActivationReq__KeyAactivationCode& other_value);
+
+e__ButtonActivationReq__KeyAactivationCode& operator=(int other_value);
+e__ButtonActivationReq__KeyAactivationCode& operator=(enum_type other_value);
+e__ButtonActivationReq__KeyAactivationCode& operator=(const e__ButtonActivationReq__KeyAactivationCode& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const e__ButtonActivationReq__KeyAactivationCode& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const e__ButtonActivationReq__KeyAactivationCode& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const e__ButtonActivationReq__KeyAactivationCode& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const e__ButtonActivationReq__KeyAactivationCode& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const e__ButtonActivationReq__KeyAactivationCode& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const e__ButtonActivationReq__KeyAactivationCode& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const e__ButtonActivationReq__KeyAactivationCode& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class e__ButtonActivationReq__KeyAactivationCode_template : public Base_Template {
+union {
+e__ButtonActivationReq__KeyAactivationCode::enum_type single_value;
+struct {
+unsigned int n_values;
+e__ButtonActivationReq__KeyAactivationCode_template *list_value;
+} value_list;
+};
+
+void copy_template(const e__ButtonActivationReq__KeyAactivationCode_template& other_value);
+
+public:
+e__ButtonActivationReq__KeyAactivationCode_template();
+e__ButtonActivationReq__KeyAactivationCode_template(template_sel other_value);
+e__ButtonActivationReq__KeyAactivationCode_template(int other_value);
+e__ButtonActivationReq__KeyAactivationCode_template(e__ButtonActivationReq__KeyAactivationCode::enum_type other_value);
+e__ButtonActivationReq__KeyAactivationCode_template(const e__ButtonActivationReq__KeyAactivationCode& other_value);
+e__ButtonActivationReq__KeyAactivationCode_template(const OPTIONAL<e__ButtonActivationReq__KeyAactivationCode>& other_value);
+e__ButtonActivationReq__KeyAactivationCode_template(const e__ButtonActivationReq__KeyAactivationCode_template& other_value);
+~e__ButtonActivationReq__KeyAactivationCode_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+e__ButtonActivationReq__KeyAactivationCode_template& operator=(template_sel other_value);
+e__ButtonActivationReq__KeyAactivationCode_template& operator=(int other_value);
+e__ButtonActivationReq__KeyAactivationCode_template& operator=(e__ButtonActivationReq__KeyAactivationCode::enum_type other_value);
+e__ButtonActivationReq__KeyAactivationCode_template& operator=(const e__ButtonActivationReq__KeyAactivationCode& other_value);
+e__ButtonActivationReq__KeyAactivationCode_template& operator=(const OPTIONAL<e__ButtonActivationReq__KeyAactivationCode>& other_value);
+e__ButtonActivationReq__KeyAactivationCode_template& operator=(const e__ButtonActivationReq__KeyAactivationCode_template& other_value);
+
+boolean match(e__ButtonActivationReq__KeyAactivationCode::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const e__ButtonActivationReq__KeyAactivationCode& other_value, boolean legacy = FALSE) const;
+e__ButtonActivationReq__KeyAactivationCode::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+e__ButtonActivationReq__KeyAactivationCode_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const e__ButtonActivationReq__KeyAactivationCode& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class ButtonActivationReq : public Base_Type {
+  INTEGER field_vtfunction;
+  e__ButtonActivationReq__KeyAactivationCode field_keyAactivationCode;
+  INTEGER field_objectID;
+  INTEGER field_parentObjectID;
+  INTEGER field_buttonKeyCode;
+  OCTETSTRING field_reserved8;
+public:
+  ButtonActivationReq();
+  ButtonActivationReq(const INTEGER& par_vtfunction,
+    const e__ButtonActivationReq__KeyAactivationCode& par_keyAactivationCode,
+    const INTEGER& par_objectID,
+    const INTEGER& par_parentObjectID,
+    const INTEGER& par_buttonKeyCode,
+    const OCTETSTRING& par_reserved8);
+  ButtonActivationReq(const ButtonActivationReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ButtonActivationReq& operator=(const ButtonActivationReq& other_value);
+  boolean operator==(const ButtonActivationReq& other_value) const;
+  inline boolean operator!=(const ButtonActivationReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline e__ButtonActivationReq__KeyAactivationCode& keyAactivationCode()
+    {return field_keyAactivationCode;}
+  inline const e__ButtonActivationReq__KeyAactivationCode& keyAactivationCode() const
+    {return field_keyAactivationCode;}
+  inline INTEGER& objectID()
+    {return field_objectID;}
+  inline const INTEGER& objectID() const
+    {return field_objectID;}
+  inline INTEGER& parentObjectID()
+    {return field_parentObjectID;}
+  inline const INTEGER& parentObjectID() const
+    {return field_parentObjectID;}
+  inline INTEGER& buttonKeyCode()
+    {return field_buttonKeyCode;}
+  inline const INTEGER& buttonKeyCode() const
+    {return field_buttonKeyCode;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 6;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ButtonActivationReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ButtonActivationReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ButtonActivationReq& other_value);
+void copy_template(const ButtonActivationReq_template& other_value);
+
+public:
+ButtonActivationReq_template();
+ButtonActivationReq_template(template_sel other_value);
+ButtonActivationReq_template(const ButtonActivationReq& other_value);
+ButtonActivationReq_template(const OPTIONAL<ButtonActivationReq>& other_value);
+ButtonActivationReq_template(const ButtonActivationReq_template& other_value);
+~ButtonActivationReq_template();
+ButtonActivationReq_template& operator=(template_sel other_value);
+ButtonActivationReq_template& operator=(const ButtonActivationReq& other_value);
+ButtonActivationReq_template& operator=(const OPTIONAL<ButtonActivationReq>& other_value);
+ButtonActivationReq_template& operator=(const ButtonActivationReq_template& other_value);
+boolean match(const ButtonActivationReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ButtonActivationReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ButtonActivationReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+e__ButtonActivationReq__KeyAactivationCode_template& keyAactivationCode();
+const e__ButtonActivationReq__KeyAactivationCode_template& keyAactivationCode() const;
+INTEGER_template& objectID();
+const INTEGER_template& objectID() const;
+INTEGER_template& parentObjectID();
+const INTEGER_template& parentObjectID() const;
+INTEGER_template& buttonKeyCode();
+const INTEGER_template& buttonKeyCode() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const ButtonActivationReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class e__ButtonActivationRes__KeyAactivationCode : public Base_Type { // enum
+friend class e__ButtonActivationRes__KeyAactivationCode_template;
+public:
+enum enum_type { buttonHasBeenUnlatchedorReleased = 0, buttonHasBeenPressedOrLatched = 1, buttonIsStillHeld = 2, buttonPressAborted = 3, UNKNOWN_VALUE = 4, UNBOUND_VALUE = 5 };
+private:
+enum_type enum_value;
+
+public:
+e__ButtonActivationRes__KeyAactivationCode();
+e__ButtonActivationRes__KeyAactivationCode(int other_value);
+e__ButtonActivationRes__KeyAactivationCode(enum_type other_value);
+e__ButtonActivationRes__KeyAactivationCode(const e__ButtonActivationRes__KeyAactivationCode& other_value);
+
+e__ButtonActivationRes__KeyAactivationCode& operator=(int other_value);
+e__ButtonActivationRes__KeyAactivationCode& operator=(enum_type other_value);
+e__ButtonActivationRes__KeyAactivationCode& operator=(const e__ButtonActivationRes__KeyAactivationCode& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const e__ButtonActivationRes__KeyAactivationCode& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const e__ButtonActivationRes__KeyAactivationCode& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const e__ButtonActivationRes__KeyAactivationCode& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const e__ButtonActivationRes__KeyAactivationCode& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const e__ButtonActivationRes__KeyAactivationCode& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const e__ButtonActivationRes__KeyAactivationCode& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const e__ButtonActivationRes__KeyAactivationCode& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class e__ButtonActivationRes__KeyAactivationCode_template : public Base_Template {
+union {
+e__ButtonActivationRes__KeyAactivationCode::enum_type single_value;
+struct {
+unsigned int n_values;
+e__ButtonActivationRes__KeyAactivationCode_template *list_value;
+} value_list;
+};
+
+void copy_template(const e__ButtonActivationRes__KeyAactivationCode_template& other_value);
+
+public:
+e__ButtonActivationRes__KeyAactivationCode_template();
+e__ButtonActivationRes__KeyAactivationCode_template(template_sel other_value);
+e__ButtonActivationRes__KeyAactivationCode_template(int other_value);
+e__ButtonActivationRes__KeyAactivationCode_template(e__ButtonActivationRes__KeyAactivationCode::enum_type other_value);
+e__ButtonActivationRes__KeyAactivationCode_template(const e__ButtonActivationRes__KeyAactivationCode& other_value);
+e__ButtonActivationRes__KeyAactivationCode_template(const OPTIONAL<e__ButtonActivationRes__KeyAactivationCode>& other_value);
+e__ButtonActivationRes__KeyAactivationCode_template(const e__ButtonActivationRes__KeyAactivationCode_template& other_value);
+~e__ButtonActivationRes__KeyAactivationCode_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+e__ButtonActivationRes__KeyAactivationCode_template& operator=(template_sel other_value);
+e__ButtonActivationRes__KeyAactivationCode_template& operator=(int other_value);
+e__ButtonActivationRes__KeyAactivationCode_template& operator=(e__ButtonActivationRes__KeyAactivationCode::enum_type other_value);
+e__ButtonActivationRes__KeyAactivationCode_template& operator=(const e__ButtonActivationRes__KeyAactivationCode& other_value);
+e__ButtonActivationRes__KeyAactivationCode_template& operator=(const OPTIONAL<e__ButtonActivationRes__KeyAactivationCode>& other_value);
+e__ButtonActivationRes__KeyAactivationCode_template& operator=(const e__ButtonActivationRes__KeyAactivationCode_template& other_value);
+
+boolean match(e__ButtonActivationRes__KeyAactivationCode::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const e__ButtonActivationRes__KeyAactivationCode& other_value, boolean legacy = FALSE) const;
+e__ButtonActivationRes__KeyAactivationCode::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+e__ButtonActivationRes__KeyAactivationCode_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const e__ButtonActivationRes__KeyAactivationCode& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class ButtonActivationRes : public Base_Type {
+  INTEGER field_vtfunction;
+  e__ButtonActivationRes__KeyAactivationCode field_keyAactivationCode;
+  INTEGER field_objectID;
+  INTEGER field_parentObjectID;
+  INTEGER field_buttonKeyCode;
+  OCTETSTRING field_reserved8;
+public:
+  ButtonActivationRes();
+  ButtonActivationRes(const INTEGER& par_vtfunction,
+    const e__ButtonActivationRes__KeyAactivationCode& par_keyAactivationCode,
+    const INTEGER& par_objectID,
+    const INTEGER& par_parentObjectID,
+    const INTEGER& par_buttonKeyCode,
+    const OCTETSTRING& par_reserved8);
+  ButtonActivationRes(const ButtonActivationRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ButtonActivationRes& operator=(const ButtonActivationRes& other_value);
+  boolean operator==(const ButtonActivationRes& other_value) const;
+  inline boolean operator!=(const ButtonActivationRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline e__ButtonActivationRes__KeyAactivationCode& keyAactivationCode()
+    {return field_keyAactivationCode;}
+  inline const e__ButtonActivationRes__KeyAactivationCode& keyAactivationCode() const
+    {return field_keyAactivationCode;}
+  inline INTEGER& objectID()
+    {return field_objectID;}
+  inline const INTEGER& objectID() const
+    {return field_objectID;}
+  inline INTEGER& parentObjectID()
+    {return field_parentObjectID;}
+  inline const INTEGER& parentObjectID() const
+    {return field_parentObjectID;}
+  inline INTEGER& buttonKeyCode()
+    {return field_buttonKeyCode;}
+  inline const INTEGER& buttonKeyCode() const
+    {return field_buttonKeyCode;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 6;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ButtonActivationRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ButtonActivationRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ButtonActivationRes& other_value);
+void copy_template(const ButtonActivationRes_template& other_value);
+
+public:
+ButtonActivationRes_template();
+ButtonActivationRes_template(template_sel other_value);
+ButtonActivationRes_template(const ButtonActivationRes& other_value);
+ButtonActivationRes_template(const OPTIONAL<ButtonActivationRes>& other_value);
+ButtonActivationRes_template(const ButtonActivationRes_template& other_value);
+~ButtonActivationRes_template();
+ButtonActivationRes_template& operator=(template_sel other_value);
+ButtonActivationRes_template& operator=(const ButtonActivationRes& other_value);
+ButtonActivationRes_template& operator=(const OPTIONAL<ButtonActivationRes>& other_value);
+ButtonActivationRes_template& operator=(const ButtonActivationRes_template& other_value);
+boolean match(const ButtonActivationRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ButtonActivationRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ButtonActivationRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+e__ButtonActivationRes__KeyAactivationCode_template& keyAactivationCode();
+const e__ButtonActivationRes__KeyAactivationCode_template& keyAactivationCode() const;
+INTEGER_template& objectID();
+const INTEGER_template& objectID() const;
+INTEGER_template& parentObjectID();
+const INTEGER_template& parentObjectID() const;
+INTEGER_template& buttonKeyCode();
+const INTEGER_template& buttonKeyCode() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const ButtonActivationRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class e__PointingEvent__touchState : public Base_Type { // enum
+friend class e__PointingEvent__touchState_template;
+public:
+enum enum_type { released = 0, pressed = 1, held = 2, reserved = 255, UNKNOWN_VALUE = 3, UNBOUND_VALUE = 4 };
+private:
+enum_type enum_value;
+
+public:
+e__PointingEvent__touchState();
+e__PointingEvent__touchState(int other_value);
+e__PointingEvent__touchState(enum_type other_value);
+e__PointingEvent__touchState(const e__PointingEvent__touchState& other_value);
+
+e__PointingEvent__touchState& operator=(int other_value);
+e__PointingEvent__touchState& operator=(enum_type other_value);
+e__PointingEvent__touchState& operator=(const e__PointingEvent__touchState& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const e__PointingEvent__touchState& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const e__PointingEvent__touchState& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const e__PointingEvent__touchState& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const e__PointingEvent__touchState& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const e__PointingEvent__touchState& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const e__PointingEvent__touchState& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const e__PointingEvent__touchState& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class e__PointingEvent__touchState_template : public Base_Template {
+union {
+e__PointingEvent__touchState::enum_type single_value;
+struct {
+unsigned int n_values;
+e__PointingEvent__touchState_template *list_value;
+} value_list;
+};
+
+void copy_template(const e__PointingEvent__touchState_template& other_value);
+
+public:
+e__PointingEvent__touchState_template();
+e__PointingEvent__touchState_template(template_sel other_value);
+e__PointingEvent__touchState_template(int other_value);
+e__PointingEvent__touchState_template(e__PointingEvent__touchState::enum_type other_value);
+e__PointingEvent__touchState_template(const e__PointingEvent__touchState& other_value);
+e__PointingEvent__touchState_template(const OPTIONAL<e__PointingEvent__touchState>& other_value);
+e__PointingEvent__touchState_template(const e__PointingEvent__touchState_template& other_value);
+~e__PointingEvent__touchState_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+e__PointingEvent__touchState_template& operator=(template_sel other_value);
+e__PointingEvent__touchState_template& operator=(int other_value);
+e__PointingEvent__touchState_template& operator=(e__PointingEvent__touchState::enum_type other_value);
+e__PointingEvent__touchState_template& operator=(const e__PointingEvent__touchState& other_value);
+e__PointingEvent__touchState_template& operator=(const OPTIONAL<e__PointingEvent__touchState>& other_value);
+e__PointingEvent__touchState_template& operator=(const e__PointingEvent__touchState_template& other_value);
+
+boolean match(e__PointingEvent__touchState::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const e__PointingEvent__touchState& other_value, boolean legacy = FALSE) const;
+e__PointingEvent__touchState::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+e__PointingEvent__touchState_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const e__PointingEvent__touchState& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class PointingEventReq : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_x__position;
+  INTEGER field_y__position;
+  e__PointingEvent__touchState field_touchState;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  PointingEventReq();
+  PointingEventReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_x__position,
+    const INTEGER& par_y__position,
+    const e__PointingEvent__touchState& par_touchState,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  PointingEventReq(const PointingEventReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  PointingEventReq& operator=(const PointingEventReq& other_value);
+  boolean operator==(const PointingEventReq& other_value) const;
+  inline boolean operator!=(const PointingEventReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& x__position()
+    {return field_x__position;}
+  inline const INTEGER& x__position() const
+    {return field_x__position;}
+  inline INTEGER& y__position()
+    {return field_y__position;}
+  inline const INTEGER& y__position() const
+    {return field_y__position;}
+  inline e__PointingEvent__touchState& touchState()
+    {return field_touchState;}
+  inline const e__PointingEvent__touchState& touchState() const
+    {return field_touchState;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 6;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class PointingEventReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+PointingEventReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const PointingEventReq& other_value);
+void copy_template(const PointingEventReq_template& other_value);
+
+public:
+PointingEventReq_template();
+PointingEventReq_template(template_sel other_value);
+PointingEventReq_template(const PointingEventReq& other_value);
+PointingEventReq_template(const OPTIONAL<PointingEventReq>& other_value);
+PointingEventReq_template(const PointingEventReq_template& other_value);
+~PointingEventReq_template();
+PointingEventReq_template& operator=(template_sel other_value);
+PointingEventReq_template& operator=(const PointingEventReq& other_value);
+PointingEventReq_template& operator=(const OPTIONAL<PointingEventReq>& other_value);
+PointingEventReq_template& operator=(const PointingEventReq_template& other_value);
+boolean match(const PointingEventReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+PointingEventReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+PointingEventReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& x__position();
+const INTEGER_template& x__position() const;
+INTEGER_template& y__position();
+const INTEGER_template& y__position() const;
+e__PointingEvent__touchState_template& touchState();
+const e__PointingEvent__touchState_template& touchState() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const PointingEventReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class PointingEventRes : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_x__position;
+  INTEGER field_y__position;
+  e__PointingEvent__touchState field_touchState;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  PointingEventRes();
+  PointingEventRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_x__position,
+    const INTEGER& par_y__position,
+    const e__PointingEvent__touchState& par_touchState,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  PointingEventRes(const PointingEventRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  PointingEventRes& operator=(const PointingEventRes& other_value);
+  boolean operator==(const PointingEventRes& other_value) const;
+  inline boolean operator!=(const PointingEventRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& x__position()
+    {return field_x__position;}
+  inline const INTEGER& x__position() const
+    {return field_x__position;}
+  inline INTEGER& y__position()
+    {return field_y__position;}
+  inline const INTEGER& y__position() const
+    {return field_y__position;}
+  inline e__PointingEvent__touchState& touchState()
+    {return field_touchState;}
+  inline const e__PointingEvent__touchState& touchState() const
+    {return field_touchState;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 6;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class PointingEventRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+PointingEventRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const PointingEventRes& other_value);
+void copy_template(const PointingEventRes_template& other_value);
+
+public:
+PointingEventRes_template();
+PointingEventRes_template(template_sel other_value);
+PointingEventRes_template(const PointingEventRes& other_value);
+PointingEventRes_template(const OPTIONAL<PointingEventRes>& other_value);
+PointingEventRes_template(const PointingEventRes_template& other_value);
+~PointingEventRes_template();
+PointingEventRes_template& operator=(template_sel other_value);
+PointingEventRes_template& operator=(const PointingEventRes& other_value);
+PointingEventRes_template& operator=(const OPTIONAL<PointingEventRes>& other_value);
+PointingEventRes_template& operator=(const PointingEventRes_template& other_value);
+boolean match(const PointingEventRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+PointingEventRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+PointingEventRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& x__position();
+const INTEGER_template& x__position() const;
+INTEGER_template& y__position();
+const INTEGER_template& y__position() const;
+e__PointingEvent__touchState_template& touchState();
+const e__PointingEvent__touchState_template& touchState() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const PointingEventRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class e__VTOnUserLayoutHideShow__state : public Base_Type { // enum
+friend class e__VTOnUserLayoutHideShow__state_template;
+public:
+enum enum_type { hidden = 0, shown = 1, UNKNOWN_VALUE = 2, UNBOUND_VALUE = 3 };
+private:
+enum_type enum_value;
+
+public:
+e__VTOnUserLayoutHideShow__state();
+e__VTOnUserLayoutHideShow__state(int other_value);
+e__VTOnUserLayoutHideShow__state(enum_type other_value);
+e__VTOnUserLayoutHideShow__state(const e__VTOnUserLayoutHideShow__state& other_value);
+
+e__VTOnUserLayoutHideShow__state& operator=(int other_value);
+e__VTOnUserLayoutHideShow__state& operator=(enum_type other_value);
+e__VTOnUserLayoutHideShow__state& operator=(const e__VTOnUserLayoutHideShow__state& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const e__VTOnUserLayoutHideShow__state& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const e__VTOnUserLayoutHideShow__state& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const e__VTOnUserLayoutHideShow__state& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const e__VTOnUserLayoutHideShow__state& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const e__VTOnUserLayoutHideShow__state& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const e__VTOnUserLayoutHideShow__state& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const e__VTOnUserLayoutHideShow__state& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class e__VTOnUserLayoutHideShow__state_template : public Base_Template {
+union {
+e__VTOnUserLayoutHideShow__state::enum_type single_value;
+struct {
+unsigned int n_values;
+e__VTOnUserLayoutHideShow__state_template *list_value;
+} value_list;
+};
+
+void copy_template(const e__VTOnUserLayoutHideShow__state_template& other_value);
+
+public:
+e__VTOnUserLayoutHideShow__state_template();
+e__VTOnUserLayoutHideShow__state_template(template_sel other_value);
+e__VTOnUserLayoutHideShow__state_template(int other_value);
+e__VTOnUserLayoutHideShow__state_template(e__VTOnUserLayoutHideShow__state::enum_type other_value);
+e__VTOnUserLayoutHideShow__state_template(const e__VTOnUserLayoutHideShow__state& other_value);
+e__VTOnUserLayoutHideShow__state_template(const OPTIONAL<e__VTOnUserLayoutHideShow__state>& other_value);
+e__VTOnUserLayoutHideShow__state_template(const e__VTOnUserLayoutHideShow__state_template& other_value);
+~e__VTOnUserLayoutHideShow__state_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+e__VTOnUserLayoutHideShow__state_template& operator=(template_sel other_value);
+e__VTOnUserLayoutHideShow__state_template& operator=(int other_value);
+e__VTOnUserLayoutHideShow__state_template& operator=(e__VTOnUserLayoutHideShow__state::enum_type other_value);
+e__VTOnUserLayoutHideShow__state_template& operator=(const e__VTOnUserLayoutHideShow__state& other_value);
+e__VTOnUserLayoutHideShow__state_template& operator=(const OPTIONAL<e__VTOnUserLayoutHideShow__state>& other_value);
+e__VTOnUserLayoutHideShow__state_template& operator=(const e__VTOnUserLayoutHideShow__state_template& other_value);
+
+boolean match(e__VTOnUserLayoutHideShow__state::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const e__VTOnUserLayoutHideShow__state& other_value, boolean legacy = FALSE) const;
+e__VTOnUserLayoutHideShow__state::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+e__VTOnUserLayoutHideShow__state_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const e__VTOnUserLayoutHideShow__state& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class e__VTSelectInputObject__selection : public Base_Type { // enum
+friend class e__VTSelectInputObject__selection_template;
+public:
+enum enum_type { objectIsDeselected = 0, objectIsSelected = 1, UNKNOWN_VALUE = 2, UNBOUND_VALUE = 3 };
+private:
+enum_type enum_value;
+
+public:
+e__VTSelectInputObject__selection();
+e__VTSelectInputObject__selection(int other_value);
+e__VTSelectInputObject__selection(enum_type other_value);
+e__VTSelectInputObject__selection(const e__VTSelectInputObject__selection& other_value);
+
+e__VTSelectInputObject__selection& operator=(int other_value);
+e__VTSelectInputObject__selection& operator=(enum_type other_value);
+e__VTSelectInputObject__selection& operator=(const e__VTSelectInputObject__selection& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const e__VTSelectInputObject__selection& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const e__VTSelectInputObject__selection& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const e__VTSelectInputObject__selection& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const e__VTSelectInputObject__selection& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const e__VTSelectInputObject__selection& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const e__VTSelectInputObject__selection& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const e__VTSelectInputObject__selection& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class e__VTSelectInputObject__selection_template : public Base_Template {
+union {
+e__VTSelectInputObject__selection::enum_type single_value;
+struct {
+unsigned int n_values;
+e__VTSelectInputObject__selection_template *list_value;
+} value_list;
+};
+
+void copy_template(const e__VTSelectInputObject__selection_template& other_value);
+
+public:
+e__VTSelectInputObject__selection_template();
+e__VTSelectInputObject__selection_template(template_sel other_value);
+e__VTSelectInputObject__selection_template(int other_value);
+e__VTSelectInputObject__selection_template(e__VTSelectInputObject__selection::enum_type other_value);
+e__VTSelectInputObject__selection_template(const e__VTSelectInputObject__selection& other_value);
+e__VTSelectInputObject__selection_template(const OPTIONAL<e__VTSelectInputObject__selection>& other_value);
+e__VTSelectInputObject__selection_template(const e__VTSelectInputObject__selection_template& other_value);
+~e__VTSelectInputObject__selection_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+e__VTSelectInputObject__selection_template& operator=(template_sel other_value);
+e__VTSelectInputObject__selection_template& operator=(int other_value);
+e__VTSelectInputObject__selection_template& operator=(e__VTSelectInputObject__selection::enum_type other_value);
+e__VTSelectInputObject__selection_template& operator=(const e__VTSelectInputObject__selection& other_value);
+e__VTSelectInputObject__selection_template& operator=(const OPTIONAL<e__VTSelectInputObject__selection>& other_value);
+e__VTSelectInputObject__selection_template& operator=(const e__VTSelectInputObject__selection_template& other_value);
+
+boolean match(e__VTSelectInputObject__selection::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const e__VTSelectInputObject__selection& other_value, boolean legacy = FALSE) const;
+e__VTSelectInputObject__selection::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+e__VTSelectInputObject__selection_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const e__VTSelectInputObject__selection& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class VTSelectInputObject__Bitmask : public Base_Type {
+  BOOLEAN field_objectIsOpenForDataInput;
+  BOOLEAN field_reserved1;
+  BOOLEAN field_reserved2;
+  BOOLEAN field_reserved3;
+  BOOLEAN field_reserved4;
+  BOOLEAN field_reserved5;
+  BOOLEAN field_reserved6;
+  BOOLEAN field_reserved7;
+public:
+  VTSelectInputObject__Bitmask();
+  VTSelectInputObject__Bitmask(const BOOLEAN& par_objectIsOpenForDataInput,
+    const BOOLEAN& par_reserved1,
+    const BOOLEAN& par_reserved2,
+    const BOOLEAN& par_reserved3,
+    const BOOLEAN& par_reserved4,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7);
+  VTSelectInputObject__Bitmask(const VTSelectInputObject__Bitmask& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  VTSelectInputObject__Bitmask& operator=(const VTSelectInputObject__Bitmask& other_value);
+  boolean operator==(const VTSelectInputObject__Bitmask& other_value) const;
+  inline boolean operator!=(const VTSelectInputObject__Bitmask& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& objectIsOpenForDataInput()
+    {return field_objectIsOpenForDataInput;}
+  inline const BOOLEAN& objectIsOpenForDataInput() const
+    {return field_objectIsOpenForDataInput;}
+  inline BOOLEAN& reserved1()
+    {return field_reserved1;}
+  inline const BOOLEAN& reserved1() const
+    {return field_reserved1;}
+  inline BOOLEAN& reserved2()
+    {return field_reserved2;}
+  inline const BOOLEAN& reserved2() const
+    {return field_reserved2;}
+  inline BOOLEAN& reserved3()
+    {return field_reserved3;}
+  inline const BOOLEAN& reserved3() const
+    {return field_reserved3;}
+  inline BOOLEAN& reserved4()
+    {return field_reserved4;}
+  inline const BOOLEAN& reserved4() const
+    {return field_reserved4;}
+  inline BOOLEAN& reserved5()
+    {return field_reserved5;}
+  inline const BOOLEAN& reserved5() const
+    {return field_reserved5;}
+  inline BOOLEAN& reserved6()
+    {return field_reserved6;}
+  inline const BOOLEAN& reserved6() const
+    {return field_reserved6;}
+  inline BOOLEAN& reserved7()
+    {return field_reserved7;}
+  inline const BOOLEAN& reserved7() const
+    {return field_reserved7;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class VTSelectInputObject__Bitmask_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+VTSelectInputObject__Bitmask_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const VTSelectInputObject__Bitmask& other_value);
+void copy_template(const VTSelectInputObject__Bitmask_template& other_value);
+
+public:
+VTSelectInputObject__Bitmask_template();
+VTSelectInputObject__Bitmask_template(template_sel other_value);
+VTSelectInputObject__Bitmask_template(const VTSelectInputObject__Bitmask& other_value);
+VTSelectInputObject__Bitmask_template(const OPTIONAL<VTSelectInputObject__Bitmask>& other_value);
+VTSelectInputObject__Bitmask_template(const VTSelectInputObject__Bitmask_template& other_value);
+~VTSelectInputObject__Bitmask_template();
+VTSelectInputObject__Bitmask_template& operator=(template_sel other_value);
+VTSelectInputObject__Bitmask_template& operator=(const VTSelectInputObject__Bitmask& other_value);
+VTSelectInputObject__Bitmask_template& operator=(const OPTIONAL<VTSelectInputObject__Bitmask>& other_value);
+VTSelectInputObject__Bitmask_template& operator=(const VTSelectInputObject__Bitmask_template& other_value);
+boolean match(const VTSelectInputObject__Bitmask& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+VTSelectInputObject__Bitmask valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+VTSelectInputObject__Bitmask_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& objectIsOpenForDataInput();
+const BOOLEAN_template& objectIsOpenForDataInput() const;
+BOOLEAN_template& reserved1();
+const BOOLEAN_template& reserved1() const;
+BOOLEAN_template& reserved2();
+const BOOLEAN_template& reserved2() const;
+BOOLEAN_template& reserved3();
+const BOOLEAN_template& reserved3() const;
+BOOLEAN_template& reserved4();
+const BOOLEAN_template& reserved4() const;
+BOOLEAN_template& reserved5();
+const BOOLEAN_template& reserved5() const;
+BOOLEAN_template& reserved6();
+const BOOLEAN_template& reserved6() const;
+BOOLEAN_template& reserved7();
+const BOOLEAN_template& reserved7() const;
+int size_of() const;
+void log() const;
+void log_match(const VTSelectInputObject__Bitmask& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class VTSelectInputObject__v4AndLater__Bitmask : public Base_Type {
+  BOOLEAN field_objectIsOpenForDataInput;
+  BOOLEAN field_reserved1;
+  BOOLEAN field_reserved2;
+  BOOLEAN field_reserved3;
+  BOOLEAN field_reserved4;
+  BOOLEAN field_reserved5;
+  BOOLEAN field_reserved6;
+  BOOLEAN field_reserved7;
+public:
+  VTSelectInputObject__v4AndLater__Bitmask();
+  VTSelectInputObject__v4AndLater__Bitmask(const BOOLEAN& par_objectIsOpenForDataInput,
+    const BOOLEAN& par_reserved1,
+    const BOOLEAN& par_reserved2,
+    const BOOLEAN& par_reserved3,
+    const BOOLEAN& par_reserved4,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7);
+  VTSelectInputObject__v4AndLater__Bitmask(const VTSelectInputObject__v4AndLater__Bitmask& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  VTSelectInputObject__v4AndLater__Bitmask& operator=(const VTSelectInputObject__v4AndLater__Bitmask& other_value);
+  boolean operator==(const VTSelectInputObject__v4AndLater__Bitmask& other_value) const;
+  inline boolean operator!=(const VTSelectInputObject__v4AndLater__Bitmask& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& objectIsOpenForDataInput()
+    {return field_objectIsOpenForDataInput;}
+  inline const BOOLEAN& objectIsOpenForDataInput() const
+    {return field_objectIsOpenForDataInput;}
+  inline BOOLEAN& reserved1()
+    {return field_reserved1;}
+  inline const BOOLEAN& reserved1() const
+    {return field_reserved1;}
+  inline BOOLEAN& reserved2()
+    {return field_reserved2;}
+  inline const BOOLEAN& reserved2() const
+    {return field_reserved2;}
+  inline BOOLEAN& reserved3()
+    {return field_reserved3;}
+  inline const BOOLEAN& reserved3() const
+    {return field_reserved3;}
+  inline BOOLEAN& reserved4()
+    {return field_reserved4;}
+  inline const BOOLEAN& reserved4() const
+    {return field_reserved4;}
+  inline BOOLEAN& reserved5()
+    {return field_reserved5;}
+  inline const BOOLEAN& reserved5() const
+    {return field_reserved5;}
+  inline BOOLEAN& reserved6()
+    {return field_reserved6;}
+  inline const BOOLEAN& reserved6() const
+    {return field_reserved6;}
+  inline BOOLEAN& reserved7()
+    {return field_reserved7;}
+  inline const BOOLEAN& reserved7() const
+    {return field_reserved7;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class VTSelectInputObject__v4AndLater__Bitmask_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+VTSelectInputObject__v4AndLater__Bitmask_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const VTSelectInputObject__v4AndLater__Bitmask& other_value);
+void copy_template(const VTSelectInputObject__v4AndLater__Bitmask_template& other_value);
+
+public:
+VTSelectInputObject__v4AndLater__Bitmask_template();
+VTSelectInputObject__v4AndLater__Bitmask_template(template_sel other_value);
+VTSelectInputObject__v4AndLater__Bitmask_template(const VTSelectInputObject__v4AndLater__Bitmask& other_value);
+VTSelectInputObject__v4AndLater__Bitmask_template(const OPTIONAL<VTSelectInputObject__v4AndLater__Bitmask>& other_value);
+VTSelectInputObject__v4AndLater__Bitmask_template(const VTSelectInputObject__v4AndLater__Bitmask_template& other_value);
+~VTSelectInputObject__v4AndLater__Bitmask_template();
+VTSelectInputObject__v4AndLater__Bitmask_template& operator=(template_sel other_value);
+VTSelectInputObject__v4AndLater__Bitmask_template& operator=(const VTSelectInputObject__v4AndLater__Bitmask& other_value);
+VTSelectInputObject__v4AndLater__Bitmask_template& operator=(const OPTIONAL<VTSelectInputObject__v4AndLater__Bitmask>& other_value);
+VTSelectInputObject__v4AndLater__Bitmask_template& operator=(const VTSelectInputObject__v4AndLater__Bitmask_template& other_value);
+boolean match(const VTSelectInputObject__v4AndLater__Bitmask& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+VTSelectInputObject__v4AndLater__Bitmask valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+VTSelectInputObject__v4AndLater__Bitmask_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& objectIsOpenForDataInput();
+const BOOLEAN_template& objectIsOpenForDataInput() const;
+BOOLEAN_template& reserved1();
+const BOOLEAN_template& reserved1() const;
+BOOLEAN_template& reserved2();
+const BOOLEAN_template& reserved2() const;
+BOOLEAN_template& reserved3();
+const BOOLEAN_template& reserved3() const;
+BOOLEAN_template& reserved4();
+const BOOLEAN_template& reserved4() const;
+BOOLEAN_template& reserved5();
+const BOOLEAN_template& reserved5() const;
+BOOLEAN_template& reserved6();
+const BOOLEAN_template& reserved6() const;
+BOOLEAN_template& reserved7();
+const BOOLEAN_template& reserved7() const;
+int size_of() const;
+void log() const;
+void log_match(const VTSelectInputObject__v4AndLater__Bitmask& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class VTSelectInputObjectReq : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectID;
+  e__VTSelectInputObject__selection field_selection;
+  VTSelectInputObject__Bitmask field_bitmask;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  VTSelectInputObjectReq();
+  VTSelectInputObjectReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const e__VTSelectInputObject__selection& par_selection,
+    const VTSelectInputObject__Bitmask& par_bitmask,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  VTSelectInputObjectReq(const VTSelectInputObjectReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  VTSelectInputObjectReq& operator=(const VTSelectInputObjectReq& other_value);
+  boolean operator==(const VTSelectInputObjectReq& other_value) const;
+  inline boolean operator!=(const VTSelectInputObjectReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectID()
+    {return field_objectID;}
+  inline const INTEGER& objectID() const
+    {return field_objectID;}
+  inline e__VTSelectInputObject__selection& selection()
+    {return field_selection;}
+  inline const e__VTSelectInputObject__selection& selection() const
+    {return field_selection;}
+  inline VTSelectInputObject__Bitmask& bitmask()
+    {return field_bitmask;}
+  inline const VTSelectInputObject__Bitmask& bitmask() const
+    {return field_bitmask;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 7;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class VTSelectInputObjectReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+VTSelectInputObjectReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const VTSelectInputObjectReq& other_value);
+void copy_template(const VTSelectInputObjectReq_template& other_value);
+
+public:
+VTSelectInputObjectReq_template();
+VTSelectInputObjectReq_template(template_sel other_value);
+VTSelectInputObjectReq_template(const VTSelectInputObjectReq& other_value);
+VTSelectInputObjectReq_template(const OPTIONAL<VTSelectInputObjectReq>& other_value);
+VTSelectInputObjectReq_template(const VTSelectInputObjectReq_template& other_value);
+~VTSelectInputObjectReq_template();
+VTSelectInputObjectReq_template& operator=(template_sel other_value);
+VTSelectInputObjectReq_template& operator=(const VTSelectInputObjectReq& other_value);
+VTSelectInputObjectReq_template& operator=(const OPTIONAL<VTSelectInputObjectReq>& other_value);
+VTSelectInputObjectReq_template& operator=(const VTSelectInputObjectReq_template& other_value);
+boolean match(const VTSelectInputObjectReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+VTSelectInputObjectReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+VTSelectInputObjectReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectID();
+const INTEGER_template& objectID() const;
+e__VTSelectInputObject__selection_template& selection();
+const e__VTSelectInputObject__selection_template& selection() const;
+VTSelectInputObject__Bitmask_template& bitmask();
+const VTSelectInputObject__Bitmask_template& bitmask() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const VTSelectInputObjectReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class VTSelectInputObjectReq__v3AndPrior : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectID;
+  e__VTSelectInputObject__selection field_selection;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  VTSelectInputObjectReq__v3AndPrior();
+  VTSelectInputObjectReq__v3AndPrior(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const e__VTSelectInputObject__selection& par_selection,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  VTSelectInputObjectReq__v3AndPrior(const VTSelectInputObjectReq__v3AndPrior& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  VTSelectInputObjectReq__v3AndPrior& operator=(const VTSelectInputObjectReq__v3AndPrior& other_value);
+  boolean operator==(const VTSelectInputObjectReq__v3AndPrior& other_value) const;
+  inline boolean operator!=(const VTSelectInputObjectReq__v3AndPrior& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectID()
+    {return field_objectID;}
+  inline const INTEGER& objectID() const
+    {return field_objectID;}
+  inline e__VTSelectInputObject__selection& selection()
+    {return field_selection;}
+  inline const e__VTSelectInputObject__selection& selection() const
+    {return field_selection;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 7;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class VTSelectInputObjectReq__v3AndPrior_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+VTSelectInputObjectReq__v3AndPrior_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const VTSelectInputObjectReq__v3AndPrior& other_value);
+void copy_template(const VTSelectInputObjectReq__v3AndPrior_template& other_value);
+
+public:
+VTSelectInputObjectReq__v3AndPrior_template();
+VTSelectInputObjectReq__v3AndPrior_template(template_sel other_value);
+VTSelectInputObjectReq__v3AndPrior_template(const VTSelectInputObjectReq__v3AndPrior& other_value);
+VTSelectInputObjectReq__v3AndPrior_template(const OPTIONAL<VTSelectInputObjectReq__v3AndPrior>& other_value);
+VTSelectInputObjectReq__v3AndPrior_template(const VTSelectInputObjectReq__v3AndPrior_template& other_value);
+~VTSelectInputObjectReq__v3AndPrior_template();
+VTSelectInputObjectReq__v3AndPrior_template& operator=(template_sel other_value);
+VTSelectInputObjectReq__v3AndPrior_template& operator=(const VTSelectInputObjectReq__v3AndPrior& other_value);
+VTSelectInputObjectReq__v3AndPrior_template& operator=(const OPTIONAL<VTSelectInputObjectReq__v3AndPrior>& other_value);
+VTSelectInputObjectReq__v3AndPrior_template& operator=(const VTSelectInputObjectReq__v3AndPrior_template& other_value);
+boolean match(const VTSelectInputObjectReq__v3AndPrior& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+VTSelectInputObjectReq__v3AndPrior valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+VTSelectInputObjectReq__v3AndPrior_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectID();
+const INTEGER_template& objectID() const;
+e__VTSelectInputObject__selection_template& selection();
+const e__VTSelectInputObject__selection_template& selection() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const VTSelectInputObjectReq__v3AndPrior& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class VTSelectInputObjectReq__v4AndLater : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectID;
+  e__VTSelectInputObject__selection field_selection;
+  VTSelectInputObject__v4AndLater__Bitmask field_bitmask;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  VTSelectInputObjectReq__v4AndLater();
+  VTSelectInputObjectReq__v4AndLater(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const e__VTSelectInputObject__selection& par_selection,
+    const VTSelectInputObject__v4AndLater__Bitmask& par_bitmask,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  VTSelectInputObjectReq__v4AndLater(const VTSelectInputObjectReq__v4AndLater& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  VTSelectInputObjectReq__v4AndLater& operator=(const VTSelectInputObjectReq__v4AndLater& other_value);
+  boolean operator==(const VTSelectInputObjectReq__v4AndLater& other_value) const;
+  inline boolean operator!=(const VTSelectInputObjectReq__v4AndLater& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectID()
+    {return field_objectID;}
+  inline const INTEGER& objectID() const
+    {return field_objectID;}
+  inline e__VTSelectInputObject__selection& selection()
+    {return field_selection;}
+  inline const e__VTSelectInputObject__selection& selection() const
+    {return field_selection;}
+  inline VTSelectInputObject__v4AndLater__Bitmask& bitmask()
+    {return field_bitmask;}
+  inline const VTSelectInputObject__v4AndLater__Bitmask& bitmask() const
+    {return field_bitmask;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 7;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class VTSelectInputObjectReq__v4AndLater_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+VTSelectInputObjectReq__v4AndLater_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const VTSelectInputObjectReq__v4AndLater& other_value);
+void copy_template(const VTSelectInputObjectReq__v4AndLater_template& other_value);
+
+public:
+VTSelectInputObjectReq__v4AndLater_template();
+VTSelectInputObjectReq__v4AndLater_template(template_sel other_value);
+VTSelectInputObjectReq__v4AndLater_template(const VTSelectInputObjectReq__v4AndLater& other_value);
+VTSelectInputObjectReq__v4AndLater_template(const OPTIONAL<VTSelectInputObjectReq__v4AndLater>& other_value);
+VTSelectInputObjectReq__v4AndLater_template(const VTSelectInputObjectReq__v4AndLater_template& other_value);
+~VTSelectInputObjectReq__v4AndLater_template();
+VTSelectInputObjectReq__v4AndLater_template& operator=(template_sel other_value);
+VTSelectInputObjectReq__v4AndLater_template& operator=(const VTSelectInputObjectReq__v4AndLater& other_value);
+VTSelectInputObjectReq__v4AndLater_template& operator=(const OPTIONAL<VTSelectInputObjectReq__v4AndLater>& other_value);
+VTSelectInputObjectReq__v4AndLater_template& operator=(const VTSelectInputObjectReq__v4AndLater_template& other_value);
+boolean match(const VTSelectInputObjectReq__v4AndLater& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+VTSelectInputObjectReq__v4AndLater valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+VTSelectInputObjectReq__v4AndLater_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectID();
+const INTEGER_template& objectID() const;
+e__VTSelectInputObject__selection_template& selection();
+const e__VTSelectInputObject__selection_template& selection() const;
+VTSelectInputObject__v4AndLater__Bitmask_template& bitmask();
+const VTSelectInputObject__v4AndLater__Bitmask_template& bitmask() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const VTSelectInputObjectReq__v4AndLater& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class VTSelectInputObjectRes : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectID;
+  e__VTSelectInputObject__selection field_selection;
+  VTSelectInputObject__Bitmask field_bitmask;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  VTSelectInputObjectRes();
+  VTSelectInputObjectRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const e__VTSelectInputObject__selection& par_selection,
+    const VTSelectInputObject__Bitmask& par_bitmask,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  VTSelectInputObjectRes(const VTSelectInputObjectRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  VTSelectInputObjectRes& operator=(const VTSelectInputObjectRes& other_value);
+  boolean operator==(const VTSelectInputObjectRes& other_value) const;
+  inline boolean operator!=(const VTSelectInputObjectRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectID()
+    {return field_objectID;}
+  inline const INTEGER& objectID() const
+    {return field_objectID;}
+  inline e__VTSelectInputObject__selection& selection()
+    {return field_selection;}
+  inline const e__VTSelectInputObject__selection& selection() const
+    {return field_selection;}
+  inline VTSelectInputObject__Bitmask& bitmask()
+    {return field_bitmask;}
+  inline const VTSelectInputObject__Bitmask& bitmask() const
+    {return field_bitmask;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 7;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class VTSelectInputObjectRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+VTSelectInputObjectRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const VTSelectInputObjectRes& other_value);
+void copy_template(const VTSelectInputObjectRes_template& other_value);
+
+public:
+VTSelectInputObjectRes_template();
+VTSelectInputObjectRes_template(template_sel other_value);
+VTSelectInputObjectRes_template(const VTSelectInputObjectRes& other_value);
+VTSelectInputObjectRes_template(const OPTIONAL<VTSelectInputObjectRes>& other_value);
+VTSelectInputObjectRes_template(const VTSelectInputObjectRes_template& other_value);
+~VTSelectInputObjectRes_template();
+VTSelectInputObjectRes_template& operator=(template_sel other_value);
+VTSelectInputObjectRes_template& operator=(const VTSelectInputObjectRes& other_value);
+VTSelectInputObjectRes_template& operator=(const OPTIONAL<VTSelectInputObjectRes>& other_value);
+VTSelectInputObjectRes_template& operator=(const VTSelectInputObjectRes_template& other_value);
+boolean match(const VTSelectInputObjectRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+VTSelectInputObjectRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+VTSelectInputObjectRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectID();
+const INTEGER_template& objectID() const;
+e__VTSelectInputObject__selection_template& selection();
+const e__VTSelectInputObject__selection_template& selection() const;
+VTSelectInputObject__Bitmask_template& bitmask();
+const VTSelectInputObject__Bitmask_template& bitmask() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const VTSelectInputObjectRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class VTSelectInputObjectRes__v4AndPrior : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectID;
+  e__VTSelectInputObject__selection field_selection;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  VTSelectInputObjectRes__v4AndPrior();
+  VTSelectInputObjectRes__v4AndPrior(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const e__VTSelectInputObject__selection& par_selection,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  VTSelectInputObjectRes__v4AndPrior(const VTSelectInputObjectRes__v4AndPrior& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  VTSelectInputObjectRes__v4AndPrior& operator=(const VTSelectInputObjectRes__v4AndPrior& other_value);
+  boolean operator==(const VTSelectInputObjectRes__v4AndPrior& other_value) const;
+  inline boolean operator!=(const VTSelectInputObjectRes__v4AndPrior& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectID()
+    {return field_objectID;}
+  inline const INTEGER& objectID() const
+    {return field_objectID;}
+  inline e__VTSelectInputObject__selection& selection()
+    {return field_selection;}
+  inline const e__VTSelectInputObject__selection& selection() const
+    {return field_selection;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 7;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class VTSelectInputObjectRes__v4AndPrior_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+VTSelectInputObjectRes__v4AndPrior_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const VTSelectInputObjectRes__v4AndPrior& other_value);
+void copy_template(const VTSelectInputObjectRes__v4AndPrior_template& other_value);
+
+public:
+VTSelectInputObjectRes__v4AndPrior_template();
+VTSelectInputObjectRes__v4AndPrior_template(template_sel other_value);
+VTSelectInputObjectRes__v4AndPrior_template(const VTSelectInputObjectRes__v4AndPrior& other_value);
+VTSelectInputObjectRes__v4AndPrior_template(const OPTIONAL<VTSelectInputObjectRes__v4AndPrior>& other_value);
+VTSelectInputObjectRes__v4AndPrior_template(const VTSelectInputObjectRes__v4AndPrior_template& other_value);
+~VTSelectInputObjectRes__v4AndPrior_template();
+VTSelectInputObjectRes__v4AndPrior_template& operator=(template_sel other_value);
+VTSelectInputObjectRes__v4AndPrior_template& operator=(const VTSelectInputObjectRes__v4AndPrior& other_value);
+VTSelectInputObjectRes__v4AndPrior_template& operator=(const OPTIONAL<VTSelectInputObjectRes__v4AndPrior>& other_value);
+VTSelectInputObjectRes__v4AndPrior_template& operator=(const VTSelectInputObjectRes__v4AndPrior_template& other_value);
+boolean match(const VTSelectInputObjectRes__v4AndPrior& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+VTSelectInputObjectRes__v4AndPrior valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+VTSelectInputObjectRes__v4AndPrior_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectID();
+const INTEGER_template& objectID() const;
+e__VTSelectInputObject__selection_template& selection();
+const e__VTSelectInputObject__selection_template& selection() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const VTSelectInputObjectRes__v4AndPrior& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class VTSelectInputObjectRes__v5AndLater : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectID;
+  e__VTSelectInputObject__selection field_selection;
+  VTSelectInputObject__v4AndLater__Bitmask field_bitmask;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  VTSelectInputObjectRes__v5AndLater();
+  VTSelectInputObjectRes__v5AndLater(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const e__VTSelectInputObject__selection& par_selection,
+    const VTSelectInputObject__v4AndLater__Bitmask& par_bitmask,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  VTSelectInputObjectRes__v5AndLater(const VTSelectInputObjectRes__v5AndLater& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  VTSelectInputObjectRes__v5AndLater& operator=(const VTSelectInputObjectRes__v5AndLater& other_value);
+  boolean operator==(const VTSelectInputObjectRes__v5AndLater& other_value) const;
+  inline boolean operator!=(const VTSelectInputObjectRes__v5AndLater& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectID()
+    {return field_objectID;}
+  inline const INTEGER& objectID() const
+    {return field_objectID;}
+  inline e__VTSelectInputObject__selection& selection()
+    {return field_selection;}
+  inline const e__VTSelectInputObject__selection& selection() const
+    {return field_selection;}
+  inline VTSelectInputObject__v4AndLater__Bitmask& bitmask()
+    {return field_bitmask;}
+  inline const VTSelectInputObject__v4AndLater__Bitmask& bitmask() const
+    {return field_bitmask;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 7;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class VTSelectInputObjectRes__v5AndLater_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+VTSelectInputObjectRes__v5AndLater_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const VTSelectInputObjectRes__v5AndLater& other_value);
+void copy_template(const VTSelectInputObjectRes__v5AndLater_template& other_value);
+
+public:
+VTSelectInputObjectRes__v5AndLater_template();
+VTSelectInputObjectRes__v5AndLater_template(template_sel other_value);
+VTSelectInputObjectRes__v5AndLater_template(const VTSelectInputObjectRes__v5AndLater& other_value);
+VTSelectInputObjectRes__v5AndLater_template(const OPTIONAL<VTSelectInputObjectRes__v5AndLater>& other_value);
+VTSelectInputObjectRes__v5AndLater_template(const VTSelectInputObjectRes__v5AndLater_template& other_value);
+~VTSelectInputObjectRes__v5AndLater_template();
+VTSelectInputObjectRes__v5AndLater_template& operator=(template_sel other_value);
+VTSelectInputObjectRes__v5AndLater_template& operator=(const VTSelectInputObjectRes__v5AndLater& other_value);
+VTSelectInputObjectRes__v5AndLater_template& operator=(const OPTIONAL<VTSelectInputObjectRes__v5AndLater>& other_value);
+VTSelectInputObjectRes__v5AndLater_template& operator=(const VTSelectInputObjectRes__v5AndLater_template& other_value);
+boolean match(const VTSelectInputObjectRes__v5AndLater& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+VTSelectInputObjectRes__v5AndLater valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+VTSelectInputObjectRes__v5AndLater_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectID();
+const INTEGER_template& objectID() const;
+e__VTSelectInputObject__selection_template& selection();
+const e__VTSelectInputObject__selection_template& selection() const;
+VTSelectInputObject__v4AndLater__Bitmask_template& bitmask();
+const VTSelectInputObject__v4AndLater__Bitmask_template& bitmask() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const VTSelectInputObjectRes__v5AndLater& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class VTESC__ErrorCodes : public Base_Type {
+  BOOLEAN field_noInputFieldIsSelected;
+  BOOLEAN field_reserved1;
+  BOOLEAN field_reserved2;
+  BOOLEAN field_reserved3;
+  BOOLEAN field_anyOtherError;
+  BOOLEAN field_reserved5;
+  BOOLEAN field_reserved6;
+  BOOLEAN field_reserved7;
+public:
+  VTESC__ErrorCodes();
+  VTESC__ErrorCodes(const BOOLEAN& par_noInputFieldIsSelected,
+    const BOOLEAN& par_reserved1,
+    const BOOLEAN& par_reserved2,
+    const BOOLEAN& par_reserved3,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7);
+  VTESC__ErrorCodes(const VTESC__ErrorCodes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  VTESC__ErrorCodes& operator=(const VTESC__ErrorCodes& other_value);
+  boolean operator==(const VTESC__ErrorCodes& other_value) const;
+  inline boolean operator!=(const VTESC__ErrorCodes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& noInputFieldIsSelected()
+    {return field_noInputFieldIsSelected;}
+  inline const BOOLEAN& noInputFieldIsSelected() const
+    {return field_noInputFieldIsSelected;}
+  inline BOOLEAN& reserved1()
+    {return field_reserved1;}
+  inline const BOOLEAN& reserved1() const
+    {return field_reserved1;}
+  inline BOOLEAN& reserved2()
+    {return field_reserved2;}
+  inline const BOOLEAN& reserved2() const
+    {return field_reserved2;}
+  inline BOOLEAN& reserved3()
+    {return field_reserved3;}
+  inline const BOOLEAN& reserved3() const
+    {return field_reserved3;}
+  inline BOOLEAN& anyOtherError()
+    {return field_anyOtherError;}
+  inline const BOOLEAN& anyOtherError() const
+    {return field_anyOtherError;}
+  inline BOOLEAN& reserved5()
+    {return field_reserved5;}
+  inline const BOOLEAN& reserved5() const
+    {return field_reserved5;}
+  inline BOOLEAN& reserved6()
+    {return field_reserved6;}
+  inline const BOOLEAN& reserved6() const
+    {return field_reserved6;}
+  inline BOOLEAN& reserved7()
+    {return field_reserved7;}
+  inline const BOOLEAN& reserved7() const
+    {return field_reserved7;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class VTESC__ErrorCodes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+VTESC__ErrorCodes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const VTESC__ErrorCodes& other_value);
+void copy_template(const VTESC__ErrorCodes_template& other_value);
+
+public:
+VTESC__ErrorCodes_template();
+VTESC__ErrorCodes_template(template_sel other_value);
+VTESC__ErrorCodes_template(const VTESC__ErrorCodes& other_value);
+VTESC__ErrorCodes_template(const OPTIONAL<VTESC__ErrorCodes>& other_value);
+VTESC__ErrorCodes_template(const VTESC__ErrorCodes_template& other_value);
+~VTESC__ErrorCodes_template();
+VTESC__ErrorCodes_template& operator=(template_sel other_value);
+VTESC__ErrorCodes_template& operator=(const VTESC__ErrorCodes& other_value);
+VTESC__ErrorCodes_template& operator=(const OPTIONAL<VTESC__ErrorCodes>& other_value);
+VTESC__ErrorCodes_template& operator=(const VTESC__ErrorCodes_template& other_value);
+boolean match(const VTESC__ErrorCodes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+VTESC__ErrorCodes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+VTESC__ErrorCodes_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& noInputFieldIsSelected();
+const BOOLEAN_template& noInputFieldIsSelected() const;
+BOOLEAN_template& reserved1();
+const BOOLEAN_template& reserved1() const;
+BOOLEAN_template& reserved2();
+const BOOLEAN_template& reserved2() const;
+BOOLEAN_template& reserved3();
+const BOOLEAN_template& reserved3() const;
+BOOLEAN_template& anyOtherError();
+const BOOLEAN_template& anyOtherError() const;
+BOOLEAN_template& reserved5();
+const BOOLEAN_template& reserved5() const;
+BOOLEAN_template& reserved6();
+const BOOLEAN_template& reserved6() const;
+BOOLEAN_template& reserved7();
+const BOOLEAN_template& reserved7() const;
+int size_of() const;
+void log() const;
+void log_match(const VTESC__ErrorCodes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class VTESCReq : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectID;
+  VTESC__ErrorCodes field_errorCodes;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  VTESCReq();
+  VTESCReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const VTESC__ErrorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  VTESCReq(const VTESCReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  VTESCReq& operator=(const VTESCReq& other_value);
+  boolean operator==(const VTESCReq& other_value) const;
+  inline boolean operator!=(const VTESCReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectID()
+    {return field_objectID;}
+  inline const INTEGER& objectID() const
+    {return field_objectID;}
+  inline VTESC__ErrorCodes& errorCodes()
+    {return field_errorCodes;}
+  inline const VTESC__ErrorCodes& errorCodes() const
+    {return field_errorCodes;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 7;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class VTESCReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+VTESCReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const VTESCReq& other_value);
+void copy_template(const VTESCReq_template& other_value);
+
+public:
+VTESCReq_template();
+VTESCReq_template(template_sel other_value);
+VTESCReq_template(const VTESCReq& other_value);
+VTESCReq_template(const OPTIONAL<VTESCReq>& other_value);
+VTESCReq_template(const VTESCReq_template& other_value);
+~VTESCReq_template();
+VTESCReq_template& operator=(template_sel other_value);
+VTESCReq_template& operator=(const VTESCReq& other_value);
+VTESCReq_template& operator=(const OPTIONAL<VTESCReq>& other_value);
+VTESCReq_template& operator=(const VTESCReq_template& other_value);
+boolean match(const VTESCReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+VTESCReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+VTESCReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectID();
+const INTEGER_template& objectID() const;
+VTESC__ErrorCodes_template& errorCodes();
+const VTESC__ErrorCodes_template& errorCodes() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const VTESCReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class VTESCRes : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectID;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  VTESCRes();
+  VTESCRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  VTESCRes(const VTESCRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  VTESCRes& operator=(const VTESCRes& other_value);
+  boolean operator==(const VTESCRes& other_value) const;
+  inline boolean operator!=(const VTESCRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectID()
+    {return field_objectID;}
+  inline const INTEGER& objectID() const
+    {return field_objectID;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 7;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class VTESCRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+VTESCRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const VTESCRes& other_value);
+void copy_template(const VTESCRes_template& other_value);
+
+public:
+VTESCRes_template();
+VTESCRes_template(template_sel other_value);
+VTESCRes_template(const VTESCRes& other_value);
+VTESCRes_template(const OPTIONAL<VTESCRes>& other_value);
+VTESCRes_template(const VTESCRes_template& other_value);
+~VTESCRes_template();
+VTESCRes_template& operator=(template_sel other_value);
+VTESCRes_template& operator=(const VTESCRes& other_value);
+VTESCRes_template& operator=(const OPTIONAL<VTESCRes>& other_value);
+VTESCRes_template& operator=(const VTESCRes_template& other_value);
+boolean match(const VTESCRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+VTESCRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+VTESCRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectID();
+const INTEGER_template& objectID() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const VTESCRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class VTChangeNumericValueReq : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectID;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_value__;
+public:
+  VTChangeNumericValueReq();
+  VTChangeNumericValueReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_value__);
+  VTChangeNumericValueReq(const VTChangeNumericValueReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  VTChangeNumericValueReq& operator=(const VTChangeNumericValueReq& other_value);
+  boolean operator==(const VTChangeNumericValueReq& other_value) const;
+  inline boolean operator!=(const VTChangeNumericValueReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectID()
+    {return field_objectID;}
+  inline const INTEGER& objectID() const
+    {return field_objectID;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& value__()
+    {return field_value__;}
+  inline const OCTETSTRING& value__() const
+    {return field_value__;}
+  inline int size_of() const
+    {return 4;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class VTChangeNumericValueReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+VTChangeNumericValueReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const VTChangeNumericValueReq& other_value);
+void copy_template(const VTChangeNumericValueReq_template& other_value);
+
+public:
+VTChangeNumericValueReq_template();
+VTChangeNumericValueReq_template(template_sel other_value);
+VTChangeNumericValueReq_template(const VTChangeNumericValueReq& other_value);
+VTChangeNumericValueReq_template(const OPTIONAL<VTChangeNumericValueReq>& other_value);
+VTChangeNumericValueReq_template(const VTChangeNumericValueReq_template& other_value);
+~VTChangeNumericValueReq_template();
+VTChangeNumericValueReq_template& operator=(template_sel other_value);
+VTChangeNumericValueReq_template& operator=(const VTChangeNumericValueReq& other_value);
+VTChangeNumericValueReq_template& operator=(const OPTIONAL<VTChangeNumericValueReq>& other_value);
+VTChangeNumericValueReq_template& operator=(const VTChangeNumericValueReq_template& other_value);
+boolean match(const VTChangeNumericValueReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+VTChangeNumericValueReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+VTChangeNumericValueReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectID();
+const INTEGER_template& objectID() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& value__();
+const OCTETSTRING_template& value__() const;
+int size_of() const;
+void log() const;
+void log_match(const VTChangeNumericValueReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class VTChangeNumericValueRes : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectID;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_value__;
+public:
+  VTChangeNumericValueRes();
+  VTChangeNumericValueRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_value__);
+  VTChangeNumericValueRes(const VTChangeNumericValueRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  VTChangeNumericValueRes& operator=(const VTChangeNumericValueRes& other_value);
+  boolean operator==(const VTChangeNumericValueRes& other_value) const;
+  inline boolean operator!=(const VTChangeNumericValueRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectID()
+    {return field_objectID;}
+  inline const INTEGER& objectID() const
+    {return field_objectID;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& value__()
+    {return field_value__;}
+  inline const OCTETSTRING& value__() const
+    {return field_value__;}
+  inline int size_of() const
+    {return 4;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class VTChangeNumericValueRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+VTChangeNumericValueRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const VTChangeNumericValueRes& other_value);
+void copy_template(const VTChangeNumericValueRes_template& other_value);
+
+public:
+VTChangeNumericValueRes_template();
+VTChangeNumericValueRes_template(template_sel other_value);
+VTChangeNumericValueRes_template(const VTChangeNumericValueRes& other_value);
+VTChangeNumericValueRes_template(const OPTIONAL<VTChangeNumericValueRes>& other_value);
+VTChangeNumericValueRes_template(const VTChangeNumericValueRes_template& other_value);
+~VTChangeNumericValueRes_template();
+VTChangeNumericValueRes_template& operator=(template_sel other_value);
+VTChangeNumericValueRes_template& operator=(const VTChangeNumericValueRes& other_value);
+VTChangeNumericValueRes_template& operator=(const OPTIONAL<VTChangeNumericValueRes>& other_value);
+VTChangeNumericValueRes_template& operator=(const VTChangeNumericValueRes_template& other_value);
+boolean match(const VTChangeNumericValueRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+VTChangeNumericValueRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+VTChangeNumericValueRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectID();
+const INTEGER_template& objectID() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& value__();
+const OCTETSTRING_template& value__() const;
+int size_of() const;
+void log() const;
+void log_match(const VTChangeNumericValueRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class VTChangeActiveMasErrorcodes : public Base_Type {
+  BOOLEAN field_reserved0;
+  BOOLEAN field_reserved1;
+  BOOLEAN field_missingObjects;
+  BOOLEAN field_maskOrChildObjectHasErrors;
+  BOOLEAN field_anyOtherError;
+  BOOLEAN field_poolBeingDeleted;
+  BOOLEAN field_reserved6;
+  BOOLEAN field_reserved7;
+public:
+  VTChangeActiveMasErrorcodes();
+  VTChangeActiveMasErrorcodes(const BOOLEAN& par_reserved0,
+    const BOOLEAN& par_reserved1,
+    const BOOLEAN& par_missingObjects,
+    const BOOLEAN& par_maskOrChildObjectHasErrors,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_poolBeingDeleted,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7);
+  VTChangeActiveMasErrorcodes(const VTChangeActiveMasErrorcodes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  VTChangeActiveMasErrorcodes& operator=(const VTChangeActiveMasErrorcodes& other_value);
+  boolean operator==(const VTChangeActiveMasErrorcodes& other_value) const;
+  inline boolean operator!=(const VTChangeActiveMasErrorcodes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& reserved0()
+    {return field_reserved0;}
+  inline const BOOLEAN& reserved0() const
+    {return field_reserved0;}
+  inline BOOLEAN& reserved1()
+    {return field_reserved1;}
+  inline const BOOLEAN& reserved1() const
+    {return field_reserved1;}
+  inline BOOLEAN& missingObjects()
+    {return field_missingObjects;}
+  inline const BOOLEAN& missingObjects() const
+    {return field_missingObjects;}
+  inline BOOLEAN& maskOrChildObjectHasErrors()
+    {return field_maskOrChildObjectHasErrors;}
+  inline const BOOLEAN& maskOrChildObjectHasErrors() const
+    {return field_maskOrChildObjectHasErrors;}
+  inline BOOLEAN& anyOtherError()
+    {return field_anyOtherError;}
+  inline const BOOLEAN& anyOtherError() const
+    {return field_anyOtherError;}
+  inline BOOLEAN& poolBeingDeleted()
+    {return field_poolBeingDeleted;}
+  inline const BOOLEAN& poolBeingDeleted() const
+    {return field_poolBeingDeleted;}
+  inline BOOLEAN& reserved6()
+    {return field_reserved6;}
+  inline const BOOLEAN& reserved6() const
+    {return field_reserved6;}
+  inline BOOLEAN& reserved7()
+    {return field_reserved7;}
+  inline const BOOLEAN& reserved7() const
+    {return field_reserved7;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class VTChangeActiveMasErrorcodes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+VTChangeActiveMasErrorcodes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const VTChangeActiveMasErrorcodes& other_value);
+void copy_template(const VTChangeActiveMasErrorcodes_template& other_value);
+
+public:
+VTChangeActiveMasErrorcodes_template();
+VTChangeActiveMasErrorcodes_template(template_sel other_value);
+VTChangeActiveMasErrorcodes_template(const VTChangeActiveMasErrorcodes& other_value);
+VTChangeActiveMasErrorcodes_template(const OPTIONAL<VTChangeActiveMasErrorcodes>& other_value);
+VTChangeActiveMasErrorcodes_template(const VTChangeActiveMasErrorcodes_template& other_value);
+~VTChangeActiveMasErrorcodes_template();
+VTChangeActiveMasErrorcodes_template& operator=(template_sel other_value);
+VTChangeActiveMasErrorcodes_template& operator=(const VTChangeActiveMasErrorcodes& other_value);
+VTChangeActiveMasErrorcodes_template& operator=(const OPTIONAL<VTChangeActiveMasErrorcodes>& other_value);
+VTChangeActiveMasErrorcodes_template& operator=(const VTChangeActiveMasErrorcodes_template& other_value);
+boolean match(const VTChangeActiveMasErrorcodes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+VTChangeActiveMasErrorcodes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+VTChangeActiveMasErrorcodes_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& reserved0();
+const BOOLEAN_template& reserved0() const;
+BOOLEAN_template& reserved1();
+const BOOLEAN_template& reserved1() const;
+BOOLEAN_template& missingObjects();
+const BOOLEAN_template& missingObjects() const;
+BOOLEAN_template& maskOrChildObjectHasErrors();
+const BOOLEAN_template& maskOrChildObjectHasErrors() const;
+BOOLEAN_template& anyOtherError();
+const BOOLEAN_template& anyOtherError() const;
+BOOLEAN_template& poolBeingDeleted();
+const BOOLEAN_template& poolBeingDeleted() const;
+BOOLEAN_template& reserved6();
+const BOOLEAN_template& reserved6() const;
+BOOLEAN_template& reserved7();
+const BOOLEAN_template& reserved7() const;
+int size_of() const;
+void log() const;
+void log_match(const VTChangeActiveMasErrorcodes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class VTChangeActiveMaskReq : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_activeMaskOrWindowMaskOrKeyGroupObjectID;
+  VTChangeActiveMasErrorcodes field_errorCodes;
+  INTEGER field_objectIDcontainingError;
+  INTEGER field_parentObjectIDofErrorObjectID;
+public:
+  VTChangeActiveMaskReq();
+  VTChangeActiveMaskReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_activeMaskOrWindowMaskOrKeyGroupObjectID,
+    const VTChangeActiveMasErrorcodes& par_errorCodes,
+    const INTEGER& par_objectIDcontainingError,
+    const INTEGER& par_parentObjectIDofErrorObjectID);
+  VTChangeActiveMaskReq(const VTChangeActiveMaskReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  VTChangeActiveMaskReq& operator=(const VTChangeActiveMaskReq& other_value);
+  boolean operator==(const VTChangeActiveMaskReq& other_value) const;
+  inline boolean operator!=(const VTChangeActiveMaskReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& activeMaskOrWindowMaskOrKeyGroupObjectID()
+    {return field_activeMaskOrWindowMaskOrKeyGroupObjectID;}
+  inline const INTEGER& activeMaskOrWindowMaskOrKeyGroupObjectID() const
+    {return field_activeMaskOrWindowMaskOrKeyGroupObjectID;}
+  inline VTChangeActiveMasErrorcodes& errorCodes()
+    {return field_errorCodes;}
+  inline const VTChangeActiveMasErrorcodes& errorCodes() const
+    {return field_errorCodes;}
+  inline INTEGER& objectIDcontainingError()
+    {return field_objectIDcontainingError;}
+  inline const INTEGER& objectIDcontainingError() const
+    {return field_objectIDcontainingError;}
+  inline INTEGER& parentObjectIDofErrorObjectID()
+    {return field_parentObjectIDofErrorObjectID;}
+  inline const INTEGER& parentObjectIDofErrorObjectID() const
+    {return field_parentObjectIDofErrorObjectID;}
+  inline int size_of() const
+    {return 5;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class VTChangeActiveMaskReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+VTChangeActiveMaskReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const VTChangeActiveMaskReq& other_value);
+void copy_template(const VTChangeActiveMaskReq_template& other_value);
+
+public:
+VTChangeActiveMaskReq_template();
+VTChangeActiveMaskReq_template(template_sel other_value);
+VTChangeActiveMaskReq_template(const VTChangeActiveMaskReq& other_value);
+VTChangeActiveMaskReq_template(const OPTIONAL<VTChangeActiveMaskReq>& other_value);
+VTChangeActiveMaskReq_template(const VTChangeActiveMaskReq_template& other_value);
+~VTChangeActiveMaskReq_template();
+VTChangeActiveMaskReq_template& operator=(template_sel other_value);
+VTChangeActiveMaskReq_template& operator=(const VTChangeActiveMaskReq& other_value);
+VTChangeActiveMaskReq_template& operator=(const OPTIONAL<VTChangeActiveMaskReq>& other_value);
+VTChangeActiveMaskReq_template& operator=(const VTChangeActiveMaskReq_template& other_value);
+boolean match(const VTChangeActiveMaskReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+VTChangeActiveMaskReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+VTChangeActiveMaskReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& activeMaskOrWindowMaskOrKeyGroupObjectID();
+const INTEGER_template& activeMaskOrWindowMaskOrKeyGroupObjectID() const;
+VTChangeActiveMasErrorcodes_template& errorCodes();
+const VTChangeActiveMasErrorcodes_template& errorCodes() const;
+INTEGER_template& objectIDcontainingError();
+const INTEGER_template& objectIDcontainingError() const;
+INTEGER_template& parentObjectIDofErrorObjectID();
+const INTEGER_template& parentObjectIDofErrorObjectID() const;
+int size_of() const;
+void log() const;
+void log_match(const VTChangeActiveMaskReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class VTChangeActiveMaskRes : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_activeMaskObjectID;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  VTChangeActiveMaskRes();
+  VTChangeActiveMaskRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_activeMaskObjectID,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  VTChangeActiveMaskRes(const VTChangeActiveMaskRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  VTChangeActiveMaskRes& operator=(const VTChangeActiveMaskRes& other_value);
+  boolean operator==(const VTChangeActiveMaskRes& other_value) const;
+  inline boolean operator!=(const VTChangeActiveMaskRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& activeMaskObjectID()
+    {return field_activeMaskObjectID;}
+  inline const INTEGER& activeMaskObjectID() const
+    {return field_activeMaskObjectID;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 7;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class VTChangeActiveMaskRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+VTChangeActiveMaskRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const VTChangeActiveMaskRes& other_value);
+void copy_template(const VTChangeActiveMaskRes_template& other_value);
+
+public:
+VTChangeActiveMaskRes_template();
+VTChangeActiveMaskRes_template(template_sel other_value);
+VTChangeActiveMaskRes_template(const VTChangeActiveMaskRes& other_value);
+VTChangeActiveMaskRes_template(const OPTIONAL<VTChangeActiveMaskRes>& other_value);
+VTChangeActiveMaskRes_template(const VTChangeActiveMaskRes_template& other_value);
+~VTChangeActiveMaskRes_template();
+VTChangeActiveMaskRes_template& operator=(template_sel other_value);
+VTChangeActiveMaskRes_template& operator=(const VTChangeActiveMaskRes& other_value);
+VTChangeActiveMaskRes_template& operator=(const OPTIONAL<VTChangeActiveMaskRes>& other_value);
+VTChangeActiveMaskRes_template& operator=(const VTChangeActiveMaskRes_template& other_value);
+boolean match(const VTChangeActiveMaskRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+VTChangeActiveMaskRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+VTChangeActiveMaskRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& activeMaskObjectID();
+const INTEGER_template& activeMaskObjectID() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const VTChangeActiveMaskRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class VTChangeSoftKeyMaskErrorCodes : public Base_Type {
+  BOOLEAN field_reserved0;
+  BOOLEAN field_reserved1;
+  BOOLEAN field_missingObjects;
+  BOOLEAN field_maskOrChildObjectHasErrors;
+  BOOLEAN field_anyOtherError;
+  BOOLEAN field_poolBeingDeleted;
+  BOOLEAN field_reserved6;
+  BOOLEAN field_reserved7;
+public:
+  VTChangeSoftKeyMaskErrorCodes();
+  VTChangeSoftKeyMaskErrorCodes(const BOOLEAN& par_reserved0,
+    const BOOLEAN& par_reserved1,
+    const BOOLEAN& par_missingObjects,
+    const BOOLEAN& par_maskOrChildObjectHasErrors,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_poolBeingDeleted,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7);
+  VTChangeSoftKeyMaskErrorCodes(const VTChangeSoftKeyMaskErrorCodes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  VTChangeSoftKeyMaskErrorCodes& operator=(const VTChangeSoftKeyMaskErrorCodes& other_value);
+  boolean operator==(const VTChangeSoftKeyMaskErrorCodes& other_value) const;
+  inline boolean operator!=(const VTChangeSoftKeyMaskErrorCodes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& reserved0()
+    {return field_reserved0;}
+  inline const BOOLEAN& reserved0() const
+    {return field_reserved0;}
+  inline BOOLEAN& reserved1()
+    {return field_reserved1;}
+  inline const BOOLEAN& reserved1() const
+    {return field_reserved1;}
+  inline BOOLEAN& missingObjects()
+    {return field_missingObjects;}
+  inline const BOOLEAN& missingObjects() const
+    {return field_missingObjects;}
+  inline BOOLEAN& maskOrChildObjectHasErrors()
+    {return field_maskOrChildObjectHasErrors;}
+  inline const BOOLEAN& maskOrChildObjectHasErrors() const
+    {return field_maskOrChildObjectHasErrors;}
+  inline BOOLEAN& anyOtherError()
+    {return field_anyOtherError;}
+  inline const BOOLEAN& anyOtherError() const
+    {return field_anyOtherError;}
+  inline BOOLEAN& poolBeingDeleted()
+    {return field_poolBeingDeleted;}
+  inline const BOOLEAN& poolBeingDeleted() const
+    {return field_poolBeingDeleted;}
+  inline BOOLEAN& reserved6()
+    {return field_reserved6;}
+  inline const BOOLEAN& reserved6() const
+    {return field_reserved6;}
+  inline BOOLEAN& reserved7()
+    {return field_reserved7;}
+  inline const BOOLEAN& reserved7() const
+    {return field_reserved7;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class VTChangeSoftKeyMaskErrorCodes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+VTChangeSoftKeyMaskErrorCodes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const VTChangeSoftKeyMaskErrorCodes& other_value);
+void copy_template(const VTChangeSoftKeyMaskErrorCodes_template& other_value);
+
+public:
+VTChangeSoftKeyMaskErrorCodes_template();
+VTChangeSoftKeyMaskErrorCodes_template(template_sel other_value);
+VTChangeSoftKeyMaskErrorCodes_template(const VTChangeSoftKeyMaskErrorCodes& other_value);
+VTChangeSoftKeyMaskErrorCodes_template(const OPTIONAL<VTChangeSoftKeyMaskErrorCodes>& other_value);
+VTChangeSoftKeyMaskErrorCodes_template(const VTChangeSoftKeyMaskErrorCodes_template& other_value);
+~VTChangeSoftKeyMaskErrorCodes_template();
+VTChangeSoftKeyMaskErrorCodes_template& operator=(template_sel other_value);
+VTChangeSoftKeyMaskErrorCodes_template& operator=(const VTChangeSoftKeyMaskErrorCodes& other_value);
+VTChangeSoftKeyMaskErrorCodes_template& operator=(const OPTIONAL<VTChangeSoftKeyMaskErrorCodes>& other_value);
+VTChangeSoftKeyMaskErrorCodes_template& operator=(const VTChangeSoftKeyMaskErrorCodes_template& other_value);
+boolean match(const VTChangeSoftKeyMaskErrorCodes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+VTChangeSoftKeyMaskErrorCodes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+VTChangeSoftKeyMaskErrorCodes_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& reserved0();
+const BOOLEAN_template& reserved0() const;
+BOOLEAN_template& reserved1();
+const BOOLEAN_template& reserved1() const;
+BOOLEAN_template& missingObjects();
+const BOOLEAN_template& missingObjects() const;
+BOOLEAN_template& maskOrChildObjectHasErrors();
+const BOOLEAN_template& maskOrChildObjectHasErrors() const;
+BOOLEAN_template& anyOtherError();
+const BOOLEAN_template& anyOtherError() const;
+BOOLEAN_template& poolBeingDeleted();
+const BOOLEAN_template& poolBeingDeleted() const;
+BOOLEAN_template& reserved6();
+const BOOLEAN_template& reserved6() const;
+BOOLEAN_template& reserved7();
+const BOOLEAN_template& reserved7() const;
+int size_of() const;
+void log() const;
+void log_match(const VTChangeSoftKeyMaskErrorCodes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class VTChangeSoftKeyMaskReq : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_dataOrAlarmMaskObjectID;
+  INTEGER field_softKeyMaskObjectID;
+  VTChangeSoftKeyMaskErrorCodes field_errorCodes;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  VTChangeSoftKeyMaskReq();
+  VTChangeSoftKeyMaskReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_dataOrAlarmMaskObjectID,
+    const INTEGER& par_softKeyMaskObjectID,
+    const VTChangeSoftKeyMaskErrorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  VTChangeSoftKeyMaskReq(const VTChangeSoftKeyMaskReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  VTChangeSoftKeyMaskReq& operator=(const VTChangeSoftKeyMaskReq& other_value);
+  boolean operator==(const VTChangeSoftKeyMaskReq& other_value) const;
+  inline boolean operator!=(const VTChangeSoftKeyMaskReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& dataOrAlarmMaskObjectID()
+    {return field_dataOrAlarmMaskObjectID;}
+  inline const INTEGER& dataOrAlarmMaskObjectID() const
+    {return field_dataOrAlarmMaskObjectID;}
+  inline INTEGER& softKeyMaskObjectID()
+    {return field_softKeyMaskObjectID;}
+  inline const INTEGER& softKeyMaskObjectID() const
+    {return field_softKeyMaskObjectID;}
+  inline VTChangeSoftKeyMaskErrorCodes& errorCodes()
+    {return field_errorCodes;}
+  inline const VTChangeSoftKeyMaskErrorCodes& errorCodes() const
+    {return field_errorCodes;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 6;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class VTChangeSoftKeyMaskReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+VTChangeSoftKeyMaskReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const VTChangeSoftKeyMaskReq& other_value);
+void copy_template(const VTChangeSoftKeyMaskReq_template& other_value);
+
+public:
+VTChangeSoftKeyMaskReq_template();
+VTChangeSoftKeyMaskReq_template(template_sel other_value);
+VTChangeSoftKeyMaskReq_template(const VTChangeSoftKeyMaskReq& other_value);
+VTChangeSoftKeyMaskReq_template(const OPTIONAL<VTChangeSoftKeyMaskReq>& other_value);
+VTChangeSoftKeyMaskReq_template(const VTChangeSoftKeyMaskReq_template& other_value);
+~VTChangeSoftKeyMaskReq_template();
+VTChangeSoftKeyMaskReq_template& operator=(template_sel other_value);
+VTChangeSoftKeyMaskReq_template& operator=(const VTChangeSoftKeyMaskReq& other_value);
+VTChangeSoftKeyMaskReq_template& operator=(const OPTIONAL<VTChangeSoftKeyMaskReq>& other_value);
+VTChangeSoftKeyMaskReq_template& operator=(const VTChangeSoftKeyMaskReq_template& other_value);
+boolean match(const VTChangeSoftKeyMaskReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+VTChangeSoftKeyMaskReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+VTChangeSoftKeyMaskReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& dataOrAlarmMaskObjectID();
+const INTEGER_template& dataOrAlarmMaskObjectID() const;
+INTEGER_template& softKeyMaskObjectID();
+const INTEGER_template& softKeyMaskObjectID() const;
+VTChangeSoftKeyMaskErrorCodes_template& errorCodes();
+const VTChangeSoftKeyMaskErrorCodes_template& errorCodes() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const VTChangeSoftKeyMaskReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class VTChangeSoftKeyMaskRes : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_dataOrAlarmMaskObjectID;
+  INTEGER field_softKeyMaskObjectID;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  VTChangeSoftKeyMaskRes();
+  VTChangeSoftKeyMaskRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_dataOrAlarmMaskObjectID,
+    const INTEGER& par_softKeyMaskObjectID,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  VTChangeSoftKeyMaskRes(const VTChangeSoftKeyMaskRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  VTChangeSoftKeyMaskRes& operator=(const VTChangeSoftKeyMaskRes& other_value);
+  boolean operator==(const VTChangeSoftKeyMaskRes& other_value) const;
+  inline boolean operator!=(const VTChangeSoftKeyMaskRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& dataOrAlarmMaskObjectID()
+    {return field_dataOrAlarmMaskObjectID;}
+  inline const INTEGER& dataOrAlarmMaskObjectID() const
+    {return field_dataOrAlarmMaskObjectID;}
+  inline INTEGER& softKeyMaskObjectID()
+    {return field_softKeyMaskObjectID;}
+  inline const INTEGER& softKeyMaskObjectID() const
+    {return field_softKeyMaskObjectID;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 6;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class VTChangeSoftKeyMaskRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+VTChangeSoftKeyMaskRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const VTChangeSoftKeyMaskRes& other_value);
+void copy_template(const VTChangeSoftKeyMaskRes_template& other_value);
+
+public:
+VTChangeSoftKeyMaskRes_template();
+VTChangeSoftKeyMaskRes_template(template_sel other_value);
+VTChangeSoftKeyMaskRes_template(const VTChangeSoftKeyMaskRes& other_value);
+VTChangeSoftKeyMaskRes_template(const OPTIONAL<VTChangeSoftKeyMaskRes>& other_value);
+VTChangeSoftKeyMaskRes_template(const VTChangeSoftKeyMaskRes_template& other_value);
+~VTChangeSoftKeyMaskRes_template();
+VTChangeSoftKeyMaskRes_template& operator=(template_sel other_value);
+VTChangeSoftKeyMaskRes_template& operator=(const VTChangeSoftKeyMaskRes& other_value);
+VTChangeSoftKeyMaskRes_template& operator=(const OPTIONAL<VTChangeSoftKeyMaskRes>& other_value);
+VTChangeSoftKeyMaskRes_template& operator=(const VTChangeSoftKeyMaskRes_template& other_value);
+boolean match(const VTChangeSoftKeyMaskRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+VTChangeSoftKeyMaskRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+VTChangeSoftKeyMaskRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& dataOrAlarmMaskObjectID();
+const INTEGER_template& dataOrAlarmMaskObjectID() const;
+INTEGER_template& softKeyMaskObjectID();
+const INTEGER_template& softKeyMaskObjectID() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const VTChangeSoftKeyMaskRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class VTChangeStringValueReq : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_inputStringOrStringVariableObjectID;
+  INTEGER field_numberOfBytes;
+  OCTETSTRING field_enteredStringValue;
+public:
+  VTChangeStringValueReq();
+  VTChangeStringValueReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_inputStringOrStringVariableObjectID,
+    const INTEGER& par_numberOfBytes,
+    const OCTETSTRING& par_enteredStringValue);
+  VTChangeStringValueReq(const VTChangeStringValueReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  VTChangeStringValueReq& operator=(const VTChangeStringValueReq& other_value);
+  boolean operator==(const VTChangeStringValueReq& other_value) const;
+  inline boolean operator!=(const VTChangeStringValueReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& inputStringOrStringVariableObjectID()
+    {return field_inputStringOrStringVariableObjectID;}
+  inline const INTEGER& inputStringOrStringVariableObjectID() const
+    {return field_inputStringOrStringVariableObjectID;}
+  inline INTEGER& numberOfBytes()
+    {return field_numberOfBytes;}
+  inline const INTEGER& numberOfBytes() const
+    {return field_numberOfBytes;}
+  inline OCTETSTRING& enteredStringValue()
+    {return field_enteredStringValue;}
+  inline const OCTETSTRING& enteredStringValue() const
+    {return field_enteredStringValue;}
+  inline int size_of() const
+    {return 4;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class VTChangeStringValueReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+VTChangeStringValueReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const VTChangeStringValueReq& other_value);
+void copy_template(const VTChangeStringValueReq_template& other_value);
+
+public:
+VTChangeStringValueReq_template();
+VTChangeStringValueReq_template(template_sel other_value);
+VTChangeStringValueReq_template(const VTChangeStringValueReq& other_value);
+VTChangeStringValueReq_template(const OPTIONAL<VTChangeStringValueReq>& other_value);
+VTChangeStringValueReq_template(const VTChangeStringValueReq_template& other_value);
+~VTChangeStringValueReq_template();
+VTChangeStringValueReq_template& operator=(template_sel other_value);
+VTChangeStringValueReq_template& operator=(const VTChangeStringValueReq& other_value);
+VTChangeStringValueReq_template& operator=(const OPTIONAL<VTChangeStringValueReq>& other_value);
+VTChangeStringValueReq_template& operator=(const VTChangeStringValueReq_template& other_value);
+boolean match(const VTChangeStringValueReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+VTChangeStringValueReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+VTChangeStringValueReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& inputStringOrStringVariableObjectID();
+const INTEGER_template& inputStringOrStringVariableObjectID() const;
+INTEGER_template& numberOfBytes();
+const INTEGER_template& numberOfBytes() const;
+OCTETSTRING_template& enteredStringValue();
+const OCTETSTRING_template& enteredStringValue() const;
+int size_of() const;
+void log() const;
+void log_match(const VTChangeStringValueReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class VTChangeStringValueRes : public Base_Type {
+  INTEGER field_vtfunction;
+  OCTETSTRING field_reserved2;
+  OCTETSTRING field_reserved3;
+  INTEGER field_inputStringOrStringVariableObjectID;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  VTChangeStringValueRes();
+  VTChangeStringValueRes(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_reserved2,
+    const OCTETSTRING& par_reserved3,
+    const INTEGER& par_inputStringOrStringVariableObjectID,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  VTChangeStringValueRes(const VTChangeStringValueRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  VTChangeStringValueRes& operator=(const VTChangeStringValueRes& other_value);
+  boolean operator==(const VTChangeStringValueRes& other_value) const;
+  inline boolean operator!=(const VTChangeStringValueRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline OCTETSTRING& reserved2()
+    {return field_reserved2;}
+  inline const OCTETSTRING& reserved2() const
+    {return field_reserved2;}
+  inline OCTETSTRING& reserved3()
+    {return field_reserved3;}
+  inline const OCTETSTRING& reserved3() const
+    {return field_reserved3;}
+  inline INTEGER& inputStringOrStringVariableObjectID()
+    {return field_inputStringOrStringVariableObjectID;}
+  inline const INTEGER& inputStringOrStringVariableObjectID() const
+    {return field_inputStringOrStringVariableObjectID;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 7;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class VTChangeStringValueRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+VTChangeStringValueRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const VTChangeStringValueRes& other_value);
+void copy_template(const VTChangeStringValueRes_template& other_value);
+
+public:
+VTChangeStringValueRes_template();
+VTChangeStringValueRes_template(template_sel other_value);
+VTChangeStringValueRes_template(const VTChangeStringValueRes& other_value);
+VTChangeStringValueRes_template(const OPTIONAL<VTChangeStringValueRes>& other_value);
+VTChangeStringValueRes_template(const VTChangeStringValueRes_template& other_value);
+~VTChangeStringValueRes_template();
+VTChangeStringValueRes_template& operator=(template_sel other_value);
+VTChangeStringValueRes_template& operator=(const VTChangeStringValueRes& other_value);
+VTChangeStringValueRes_template& operator=(const OPTIONAL<VTChangeStringValueRes>& other_value);
+VTChangeStringValueRes_template& operator=(const VTChangeStringValueRes_template& other_value);
+boolean match(const VTChangeStringValueRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+VTChangeStringValueRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+VTChangeStringValueRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+OCTETSTRING_template& reserved2();
+const OCTETSTRING_template& reserved2() const;
+OCTETSTRING_template& reserved3();
+const OCTETSTRING_template& reserved3() const;
+INTEGER_template& inputStringOrStringVariableObjectID();
+const INTEGER_template& inputStringOrStringVariableObjectID() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const VTChangeStringValueRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class VTOnUserLayoutHideShowReq : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectID1;
+  e__VTOnUserLayoutHideShow__state field_state1;
+  INTEGER field_objectID2;
+  e__VTOnUserLayoutHideShow__state field_state2;
+  OCTETSTRING field_reserved8;
+public:
+  VTOnUserLayoutHideShowReq();
+  VTOnUserLayoutHideShowReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID1,
+    const e__VTOnUserLayoutHideShow__state& par_state1,
+    const INTEGER& par_objectID2,
+    const e__VTOnUserLayoutHideShow__state& par_state2,
+    const OCTETSTRING& par_reserved8);
+  VTOnUserLayoutHideShowReq(const VTOnUserLayoutHideShowReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  VTOnUserLayoutHideShowReq& operator=(const VTOnUserLayoutHideShowReq& other_value);
+  boolean operator==(const VTOnUserLayoutHideShowReq& other_value) const;
+  inline boolean operator!=(const VTOnUserLayoutHideShowReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectID1()
+    {return field_objectID1;}
+  inline const INTEGER& objectID1() const
+    {return field_objectID1;}
+  inline e__VTOnUserLayoutHideShow__state& state1()
+    {return field_state1;}
+  inline const e__VTOnUserLayoutHideShow__state& state1() const
+    {return field_state1;}
+  inline INTEGER& objectID2()
+    {return field_objectID2;}
+  inline const INTEGER& objectID2() const
+    {return field_objectID2;}
+  inline e__VTOnUserLayoutHideShow__state& state2()
+    {return field_state2;}
+  inline const e__VTOnUserLayoutHideShow__state& state2() const
+    {return field_state2;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 6;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class VTOnUserLayoutHideShowReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+VTOnUserLayoutHideShowReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const VTOnUserLayoutHideShowReq& other_value);
+void copy_template(const VTOnUserLayoutHideShowReq_template& other_value);
+
+public:
+VTOnUserLayoutHideShowReq_template();
+VTOnUserLayoutHideShowReq_template(template_sel other_value);
+VTOnUserLayoutHideShowReq_template(const VTOnUserLayoutHideShowReq& other_value);
+VTOnUserLayoutHideShowReq_template(const OPTIONAL<VTOnUserLayoutHideShowReq>& other_value);
+VTOnUserLayoutHideShowReq_template(const VTOnUserLayoutHideShowReq_template& other_value);
+~VTOnUserLayoutHideShowReq_template();
+VTOnUserLayoutHideShowReq_template& operator=(template_sel other_value);
+VTOnUserLayoutHideShowReq_template& operator=(const VTOnUserLayoutHideShowReq& other_value);
+VTOnUserLayoutHideShowReq_template& operator=(const OPTIONAL<VTOnUserLayoutHideShowReq>& other_value);
+VTOnUserLayoutHideShowReq_template& operator=(const VTOnUserLayoutHideShowReq_template& other_value);
+boolean match(const VTOnUserLayoutHideShowReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+VTOnUserLayoutHideShowReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+VTOnUserLayoutHideShowReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectID1();
+const INTEGER_template& objectID1() const;
+e__VTOnUserLayoutHideShow__state_template& state1();
+const e__VTOnUserLayoutHideShow__state_template& state1() const;
+INTEGER_template& objectID2();
+const INTEGER_template& objectID2() const;
+e__VTOnUserLayoutHideShow__state_template& state2();
+const e__VTOnUserLayoutHideShow__state_template& state2() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const VTOnUserLayoutHideShowReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class VTOnUserLayoutHideShowRes : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectID1;
+  e__VTOnUserLayoutHideShow__state field_state1;
+  INTEGER field_objectID2;
+  e__VTOnUserLayoutHideShow__state field_state2;
+  OCTETSTRING field_reserved8;
+public:
+  VTOnUserLayoutHideShowRes();
+  VTOnUserLayoutHideShowRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID1,
+    const e__VTOnUserLayoutHideShow__state& par_state1,
+    const INTEGER& par_objectID2,
+    const e__VTOnUserLayoutHideShow__state& par_state2,
+    const OCTETSTRING& par_reserved8);
+  VTOnUserLayoutHideShowRes(const VTOnUserLayoutHideShowRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  VTOnUserLayoutHideShowRes& operator=(const VTOnUserLayoutHideShowRes& other_value);
+  boolean operator==(const VTOnUserLayoutHideShowRes& other_value) const;
+  inline boolean operator!=(const VTOnUserLayoutHideShowRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectID1()
+    {return field_objectID1;}
+  inline const INTEGER& objectID1() const
+    {return field_objectID1;}
+  inline e__VTOnUserLayoutHideShow__state& state1()
+    {return field_state1;}
+  inline const e__VTOnUserLayoutHideShow__state& state1() const
+    {return field_state1;}
+  inline INTEGER& objectID2()
+    {return field_objectID2;}
+  inline const INTEGER& objectID2() const
+    {return field_objectID2;}
+  inline e__VTOnUserLayoutHideShow__state& state2()
+    {return field_state2;}
+  inline const e__VTOnUserLayoutHideShow__state& state2() const
+    {return field_state2;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 6;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class VTOnUserLayoutHideShowRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+VTOnUserLayoutHideShowRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const VTOnUserLayoutHideShowRes& other_value);
+void copy_template(const VTOnUserLayoutHideShowRes_template& other_value);
+
+public:
+VTOnUserLayoutHideShowRes_template();
+VTOnUserLayoutHideShowRes_template(template_sel other_value);
+VTOnUserLayoutHideShowRes_template(const VTOnUserLayoutHideShowRes& other_value);
+VTOnUserLayoutHideShowRes_template(const OPTIONAL<VTOnUserLayoutHideShowRes>& other_value);
+VTOnUserLayoutHideShowRes_template(const VTOnUserLayoutHideShowRes_template& other_value);
+~VTOnUserLayoutHideShowRes_template();
+VTOnUserLayoutHideShowRes_template& operator=(template_sel other_value);
+VTOnUserLayoutHideShowRes_template& operator=(const VTOnUserLayoutHideShowRes& other_value);
+VTOnUserLayoutHideShowRes_template& operator=(const OPTIONAL<VTOnUserLayoutHideShowRes>& other_value);
+VTOnUserLayoutHideShowRes_template& operator=(const VTOnUserLayoutHideShowRes_template& other_value);
+boolean match(const VTOnUserLayoutHideShowRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+VTOnUserLayoutHideShowRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+VTOnUserLayoutHideShowRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectID1();
+const INTEGER_template& objectID1() const;
+e__VTOnUserLayoutHideShow__state_template& state1();
+const e__VTOnUserLayoutHideShow__state_template& state1() const;
+INTEGER_template& objectID2();
+const INTEGER_template& objectID2() const;
+e__VTOnUserLayoutHideShow__state_template& state2();
+const e__VTOnUserLayoutHideShow__state_template& state2() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const VTOnUserLayoutHideShowRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class VTControlAudioSignalTerminationParameterTerminationCause : public Base_Type {
+  BOOLEAN field_AudioWasTerminated;
+  BOOLEAN field_reserved1;
+  BOOLEAN field_reserved2;
+  BOOLEAN field_reserved3;
+  BOOLEAN field_reserved4;
+  BOOLEAN field_reserved5;
+  BOOLEAN field_reserved6;
+  BOOLEAN field_reserved7;
+public:
+  VTControlAudioSignalTerminationParameterTerminationCause();
+  VTControlAudioSignalTerminationParameterTerminationCause(const BOOLEAN& par_AudioWasTerminated,
+    const BOOLEAN& par_reserved1,
+    const BOOLEAN& par_reserved2,
+    const BOOLEAN& par_reserved3,
+    const BOOLEAN& par_reserved4,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7);
+  VTControlAudioSignalTerminationParameterTerminationCause(const VTControlAudioSignalTerminationParameterTerminationCause& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  VTControlAudioSignalTerminationParameterTerminationCause& operator=(const VTControlAudioSignalTerminationParameterTerminationCause& other_value);
+  boolean operator==(const VTControlAudioSignalTerminationParameterTerminationCause& other_value) const;
+  inline boolean operator!=(const VTControlAudioSignalTerminationParameterTerminationCause& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& AudioWasTerminated()
+    {return field_AudioWasTerminated;}
+  inline const BOOLEAN& AudioWasTerminated() const
+    {return field_AudioWasTerminated;}
+  inline BOOLEAN& reserved1()
+    {return field_reserved1;}
+  inline const BOOLEAN& reserved1() const
+    {return field_reserved1;}
+  inline BOOLEAN& reserved2()
+    {return field_reserved2;}
+  inline const BOOLEAN& reserved2() const
+    {return field_reserved2;}
+  inline BOOLEAN& reserved3()
+    {return field_reserved3;}
+  inline const BOOLEAN& reserved3() const
+    {return field_reserved3;}
+  inline BOOLEAN& reserved4()
+    {return field_reserved4;}
+  inline const BOOLEAN& reserved4() const
+    {return field_reserved4;}
+  inline BOOLEAN& reserved5()
+    {return field_reserved5;}
+  inline const BOOLEAN& reserved5() const
+    {return field_reserved5;}
+  inline BOOLEAN& reserved6()
+    {return field_reserved6;}
+  inline const BOOLEAN& reserved6() const
+    {return field_reserved6;}
+  inline BOOLEAN& reserved7()
+    {return field_reserved7;}
+  inline const BOOLEAN& reserved7() const
+    {return field_reserved7;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class VTControlAudioSignalTerminationParameterTerminationCause_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+VTControlAudioSignalTerminationParameterTerminationCause_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const VTControlAudioSignalTerminationParameterTerminationCause& other_value);
+void copy_template(const VTControlAudioSignalTerminationParameterTerminationCause_template& other_value);
+
+public:
+VTControlAudioSignalTerminationParameterTerminationCause_template();
+VTControlAudioSignalTerminationParameterTerminationCause_template(template_sel other_value);
+VTControlAudioSignalTerminationParameterTerminationCause_template(const VTControlAudioSignalTerminationParameterTerminationCause& other_value);
+VTControlAudioSignalTerminationParameterTerminationCause_template(const OPTIONAL<VTControlAudioSignalTerminationParameterTerminationCause>& other_value);
+VTControlAudioSignalTerminationParameterTerminationCause_template(const VTControlAudioSignalTerminationParameterTerminationCause_template& other_value);
+~VTControlAudioSignalTerminationParameterTerminationCause_template();
+VTControlAudioSignalTerminationParameterTerminationCause_template& operator=(template_sel other_value);
+VTControlAudioSignalTerminationParameterTerminationCause_template& operator=(const VTControlAudioSignalTerminationParameterTerminationCause& other_value);
+VTControlAudioSignalTerminationParameterTerminationCause_template& operator=(const OPTIONAL<VTControlAudioSignalTerminationParameterTerminationCause>& other_value);
+VTControlAudioSignalTerminationParameterTerminationCause_template& operator=(const VTControlAudioSignalTerminationParameterTerminationCause_template& other_value);
+boolean match(const VTControlAudioSignalTerminationParameterTerminationCause& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+VTControlAudioSignalTerminationParameterTerminationCause valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+VTControlAudioSignalTerminationParameterTerminationCause_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& AudioWasTerminated();
+const BOOLEAN_template& AudioWasTerminated() const;
+BOOLEAN_template& reserved1();
+const BOOLEAN_template& reserved1() const;
+BOOLEAN_template& reserved2();
+const BOOLEAN_template& reserved2() const;
+BOOLEAN_template& reserved3();
+const BOOLEAN_template& reserved3() const;
+BOOLEAN_template& reserved4();
+const BOOLEAN_template& reserved4() const;
+BOOLEAN_template& reserved5();
+const BOOLEAN_template& reserved5() const;
+BOOLEAN_template& reserved6();
+const BOOLEAN_template& reserved6() const;
+BOOLEAN_template& reserved7();
+const BOOLEAN_template& reserved7() const;
+int size_of() const;
+void log() const;
+void log_match(const VTControlAudioSignalTerminationParameterTerminationCause& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class VTControlAudioSignalTerminationInd : public Base_Type {
+  INTEGER field_vtfunction;
+  VTControlAudioSignalTerminationParameterTerminationCause field_terminationCause;
+  OCTETSTRING field_reserved3;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  VTControlAudioSignalTerminationInd();
+  VTControlAudioSignalTerminationInd(const INTEGER& par_vtfunction,
+    const VTControlAudioSignalTerminationParameterTerminationCause& par_terminationCause,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  VTControlAudioSignalTerminationInd(const VTControlAudioSignalTerminationInd& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  VTControlAudioSignalTerminationInd& operator=(const VTControlAudioSignalTerminationInd& other_value);
+  boolean operator==(const VTControlAudioSignalTerminationInd& other_value) const;
+  inline boolean operator!=(const VTControlAudioSignalTerminationInd& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline VTControlAudioSignalTerminationParameterTerminationCause& terminationCause()
+    {return field_terminationCause;}
+  inline const VTControlAudioSignalTerminationParameterTerminationCause& terminationCause() const
+    {return field_terminationCause;}
+  inline OCTETSTRING& reserved3()
+    {return field_reserved3;}
+  inline const OCTETSTRING& reserved3() const
+    {return field_reserved3;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class VTControlAudioSignalTerminationInd_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+VTControlAudioSignalTerminationInd_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const VTControlAudioSignalTerminationInd& other_value);
+void copy_template(const VTControlAudioSignalTerminationInd_template& other_value);
+
+public:
+VTControlAudioSignalTerminationInd_template();
+VTControlAudioSignalTerminationInd_template(template_sel other_value);
+VTControlAudioSignalTerminationInd_template(const VTControlAudioSignalTerminationInd& other_value);
+VTControlAudioSignalTerminationInd_template(const OPTIONAL<VTControlAudioSignalTerminationInd>& other_value);
+VTControlAudioSignalTerminationInd_template(const VTControlAudioSignalTerminationInd_template& other_value);
+~VTControlAudioSignalTerminationInd_template();
+VTControlAudioSignalTerminationInd_template& operator=(template_sel other_value);
+VTControlAudioSignalTerminationInd_template& operator=(const VTControlAudioSignalTerminationInd& other_value);
+VTControlAudioSignalTerminationInd_template& operator=(const OPTIONAL<VTControlAudioSignalTerminationInd>& other_value);
+VTControlAudioSignalTerminationInd_template& operator=(const VTControlAudioSignalTerminationInd_template& other_value);
+boolean match(const VTControlAudioSignalTerminationInd& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+VTControlAudioSignalTerminationInd valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+VTControlAudioSignalTerminationInd_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+VTControlAudioSignalTerminationParameterTerminationCause_template& terminationCause();
+const VTControlAudioSignalTerminationParameterTerminationCause_template& terminationCause() const;
+OCTETSTRING_template& reserved3();
+const OCTETSTRING_template& reserved3() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const VTControlAudioSignalTerminationInd& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ObjectPoolTransferInd : public Base_Type {
+  INTEGER field_vtfunction;
+  OCTETSTRING field_objectPoolRecords;
+public:
+  ObjectPoolTransferInd();
+  ObjectPoolTransferInd(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_objectPoolRecords);
+  ObjectPoolTransferInd(const ObjectPoolTransferInd& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ObjectPoolTransferInd& operator=(const ObjectPoolTransferInd& other_value);
+  boolean operator==(const ObjectPoolTransferInd& other_value) const;
+  inline boolean operator!=(const ObjectPoolTransferInd& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline OCTETSTRING& objectPoolRecords()
+    {return field_objectPoolRecords;}
+  inline const OCTETSTRING& objectPoolRecords() const
+    {return field_objectPoolRecords;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ObjectPoolTransferInd_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ObjectPoolTransferInd_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ObjectPoolTransferInd& other_value);
+void copy_template(const ObjectPoolTransferInd_template& other_value);
+
+public:
+ObjectPoolTransferInd_template();
+ObjectPoolTransferInd_template(template_sel other_value);
+ObjectPoolTransferInd_template(const ObjectPoolTransferInd& other_value);
+ObjectPoolTransferInd_template(const OPTIONAL<ObjectPoolTransferInd>& other_value);
+ObjectPoolTransferInd_template(const ObjectPoolTransferInd_template& other_value);
+~ObjectPoolTransferInd_template();
+ObjectPoolTransferInd_template& operator=(template_sel other_value);
+ObjectPoolTransferInd_template& operator=(const ObjectPoolTransferInd& other_value);
+ObjectPoolTransferInd_template& operator=(const OPTIONAL<ObjectPoolTransferInd>& other_value);
+ObjectPoolTransferInd_template& operator=(const ObjectPoolTransferInd_template& other_value);
+boolean match(const ObjectPoolTransferInd& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ObjectPoolTransferInd valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ObjectPoolTransferInd_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+OCTETSTRING_template& objectPoolRecords();
+const OCTETSTRING_template& objectPoolRecords() const;
+int size_of() const;
+void log() const;
+void log_match(const ObjectPoolTransferInd& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class EndOfObjectPoolReq : public Base_Type {
+  INTEGER field_vtfunction;
+  OCTETSTRING field_reserved2;
+  OCTETSTRING field_reserved3;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  EndOfObjectPoolReq();
+  EndOfObjectPoolReq(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_reserved2,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  EndOfObjectPoolReq(const EndOfObjectPoolReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  EndOfObjectPoolReq& operator=(const EndOfObjectPoolReq& other_value);
+  boolean operator==(const EndOfObjectPoolReq& other_value) const;
+  inline boolean operator!=(const EndOfObjectPoolReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline OCTETSTRING& reserved2()
+    {return field_reserved2;}
+  inline const OCTETSTRING& reserved2() const
+    {return field_reserved2;}
+  inline OCTETSTRING& reserved3()
+    {return field_reserved3;}
+  inline const OCTETSTRING& reserved3() const
+    {return field_reserved3;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class EndOfObjectPoolReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+EndOfObjectPoolReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const EndOfObjectPoolReq& other_value);
+void copy_template(const EndOfObjectPoolReq_template& other_value);
+
+public:
+EndOfObjectPoolReq_template();
+EndOfObjectPoolReq_template(template_sel other_value);
+EndOfObjectPoolReq_template(const EndOfObjectPoolReq& other_value);
+EndOfObjectPoolReq_template(const OPTIONAL<EndOfObjectPoolReq>& other_value);
+EndOfObjectPoolReq_template(const EndOfObjectPoolReq_template& other_value);
+~EndOfObjectPoolReq_template();
+EndOfObjectPoolReq_template& operator=(template_sel other_value);
+EndOfObjectPoolReq_template& operator=(const EndOfObjectPoolReq& other_value);
+EndOfObjectPoolReq_template& operator=(const OPTIONAL<EndOfObjectPoolReq>& other_value);
+EndOfObjectPoolReq_template& operator=(const EndOfObjectPoolReq_template& other_value);
+boolean match(const EndOfObjectPoolReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+EndOfObjectPoolReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+EndOfObjectPoolReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+OCTETSTRING_template& reserved2();
+const OCTETSTRING_template& reserved2() const;
+OCTETSTRING_template& reserved3();
+const OCTETSTRING_template& reserved3() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const EndOfObjectPoolReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class EndOfObjectPoolResErrorCodes : public Base_Type {
+  BOOLEAN field_thereAreErrorsInTheObjectPool;
+  BOOLEAN field_vtRanOutOfMemoryDuringTransfer;
+  BOOLEAN field_reserved2;
+  BOOLEAN field_reserved3;
+  BOOLEAN field_anyOtherError;
+  BOOLEAN field_reserved5;
+  BOOLEAN field_reserved6;
+  BOOLEAN field_reserved7;
+public:
+  EndOfObjectPoolResErrorCodes();
+  EndOfObjectPoolResErrorCodes(const BOOLEAN& par_thereAreErrorsInTheObjectPool,
+    const BOOLEAN& par_vtRanOutOfMemoryDuringTransfer,
+    const BOOLEAN& par_reserved2,
+    const BOOLEAN& par_reserved3,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7);
+  EndOfObjectPoolResErrorCodes(const EndOfObjectPoolResErrorCodes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  EndOfObjectPoolResErrorCodes& operator=(const EndOfObjectPoolResErrorCodes& other_value);
+  boolean operator==(const EndOfObjectPoolResErrorCodes& other_value) const;
+  inline boolean operator!=(const EndOfObjectPoolResErrorCodes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& thereAreErrorsInTheObjectPool()
+    {return field_thereAreErrorsInTheObjectPool;}
+  inline const BOOLEAN& thereAreErrorsInTheObjectPool() const
+    {return field_thereAreErrorsInTheObjectPool;}
+  inline BOOLEAN& vtRanOutOfMemoryDuringTransfer()
+    {return field_vtRanOutOfMemoryDuringTransfer;}
+  inline const BOOLEAN& vtRanOutOfMemoryDuringTransfer() const
+    {return field_vtRanOutOfMemoryDuringTransfer;}
+  inline BOOLEAN& reserved2()
+    {return field_reserved2;}
+  inline const BOOLEAN& reserved2() const
+    {return field_reserved2;}
+  inline BOOLEAN& reserved3()
+    {return field_reserved3;}
+  inline const BOOLEAN& reserved3() const
+    {return field_reserved3;}
+  inline BOOLEAN& anyOtherError()
+    {return field_anyOtherError;}
+  inline const BOOLEAN& anyOtherError() const
+    {return field_anyOtherError;}
+  inline BOOLEAN& reserved5()
+    {return field_reserved5;}
+  inline const BOOLEAN& reserved5() const
+    {return field_reserved5;}
+  inline BOOLEAN& reserved6()
+    {return field_reserved6;}
+  inline const BOOLEAN& reserved6() const
+    {return field_reserved6;}
+  inline BOOLEAN& reserved7()
+    {return field_reserved7;}
+  inline const BOOLEAN& reserved7() const
+    {return field_reserved7;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class EndOfObjectPoolResErrorCodes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+EndOfObjectPoolResErrorCodes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const EndOfObjectPoolResErrorCodes& other_value);
+void copy_template(const EndOfObjectPoolResErrorCodes_template& other_value);
+
+public:
+EndOfObjectPoolResErrorCodes_template();
+EndOfObjectPoolResErrorCodes_template(template_sel other_value);
+EndOfObjectPoolResErrorCodes_template(const EndOfObjectPoolResErrorCodes& other_value);
+EndOfObjectPoolResErrorCodes_template(const OPTIONAL<EndOfObjectPoolResErrorCodes>& other_value);
+EndOfObjectPoolResErrorCodes_template(const EndOfObjectPoolResErrorCodes_template& other_value);
+~EndOfObjectPoolResErrorCodes_template();
+EndOfObjectPoolResErrorCodes_template& operator=(template_sel other_value);
+EndOfObjectPoolResErrorCodes_template& operator=(const EndOfObjectPoolResErrorCodes& other_value);
+EndOfObjectPoolResErrorCodes_template& operator=(const OPTIONAL<EndOfObjectPoolResErrorCodes>& other_value);
+EndOfObjectPoolResErrorCodes_template& operator=(const EndOfObjectPoolResErrorCodes_template& other_value);
+boolean match(const EndOfObjectPoolResErrorCodes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+EndOfObjectPoolResErrorCodes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+EndOfObjectPoolResErrorCodes_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& thereAreErrorsInTheObjectPool();
+const BOOLEAN_template& thereAreErrorsInTheObjectPool() const;
+BOOLEAN_template& vtRanOutOfMemoryDuringTransfer();
+const BOOLEAN_template& vtRanOutOfMemoryDuringTransfer() const;
+BOOLEAN_template& reserved2();
+const BOOLEAN_template& reserved2() const;
+BOOLEAN_template& reserved3();
+const BOOLEAN_template& reserved3() const;
+BOOLEAN_template& anyOtherError();
+const BOOLEAN_template& anyOtherError() const;
+BOOLEAN_template& reserved5();
+const BOOLEAN_template& reserved5() const;
+BOOLEAN_template& reserved6();
+const BOOLEAN_template& reserved6() const;
+BOOLEAN_template& reserved7();
+const BOOLEAN_template& reserved7() const;
+int size_of() const;
+void log() const;
+void log_match(const EndOfObjectPoolResErrorCodes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class EndOfObjectPoolResObjectPoolErrorCodes : public Base_Type {
+  BOOLEAN field_methodOrAttributeNotSupportedByTheVT;
+  BOOLEAN field_unknownObjectReference;
+  BOOLEAN field_anyOtherError;
+  BOOLEAN field_objectPoolWasDeletedFromVolatileMemory;
+  BOOLEAN field_reserved4;
+  BOOLEAN field_reserved5;
+  BOOLEAN field_reserved6;
+  BOOLEAN field_reserved7;
+public:
+  EndOfObjectPoolResObjectPoolErrorCodes();
+  EndOfObjectPoolResObjectPoolErrorCodes(const BOOLEAN& par_methodOrAttributeNotSupportedByTheVT,
+    const BOOLEAN& par_unknownObjectReference,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_objectPoolWasDeletedFromVolatileMemory,
+    const BOOLEAN& par_reserved4,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7);
+  EndOfObjectPoolResObjectPoolErrorCodes(const EndOfObjectPoolResObjectPoolErrorCodes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  EndOfObjectPoolResObjectPoolErrorCodes& operator=(const EndOfObjectPoolResObjectPoolErrorCodes& other_value);
+  boolean operator==(const EndOfObjectPoolResObjectPoolErrorCodes& other_value) const;
+  inline boolean operator!=(const EndOfObjectPoolResObjectPoolErrorCodes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& methodOrAttributeNotSupportedByTheVT()
+    {return field_methodOrAttributeNotSupportedByTheVT;}
+  inline const BOOLEAN& methodOrAttributeNotSupportedByTheVT() const
+    {return field_methodOrAttributeNotSupportedByTheVT;}
+  inline BOOLEAN& unknownObjectReference()
+    {return field_unknownObjectReference;}
+  inline const BOOLEAN& unknownObjectReference() const
+    {return field_unknownObjectReference;}
+  inline BOOLEAN& anyOtherError()
+    {return field_anyOtherError;}
+  inline const BOOLEAN& anyOtherError() const
+    {return field_anyOtherError;}
+  inline BOOLEAN& objectPoolWasDeletedFromVolatileMemory()
+    {return field_objectPoolWasDeletedFromVolatileMemory;}
+  inline const BOOLEAN& objectPoolWasDeletedFromVolatileMemory() const
+    {return field_objectPoolWasDeletedFromVolatileMemory;}
+  inline BOOLEAN& reserved4()
+    {return field_reserved4;}
+  inline const BOOLEAN& reserved4() const
+    {return field_reserved4;}
+  inline BOOLEAN& reserved5()
+    {return field_reserved5;}
+  inline const BOOLEAN& reserved5() const
+    {return field_reserved5;}
+  inline BOOLEAN& reserved6()
+    {return field_reserved6;}
+  inline const BOOLEAN& reserved6() const
+    {return field_reserved6;}
+  inline BOOLEAN& reserved7()
+    {return field_reserved7;}
+  inline const BOOLEAN& reserved7() const
+    {return field_reserved7;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class EndOfObjectPoolResObjectPoolErrorCodes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+EndOfObjectPoolResObjectPoolErrorCodes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const EndOfObjectPoolResObjectPoolErrorCodes& other_value);
+void copy_template(const EndOfObjectPoolResObjectPoolErrorCodes_template& other_value);
+
+public:
+EndOfObjectPoolResObjectPoolErrorCodes_template();
+EndOfObjectPoolResObjectPoolErrorCodes_template(template_sel other_value);
+EndOfObjectPoolResObjectPoolErrorCodes_template(const EndOfObjectPoolResObjectPoolErrorCodes& other_value);
+EndOfObjectPoolResObjectPoolErrorCodes_template(const OPTIONAL<EndOfObjectPoolResObjectPoolErrorCodes>& other_value);
+EndOfObjectPoolResObjectPoolErrorCodes_template(const EndOfObjectPoolResObjectPoolErrorCodes_template& other_value);
+~EndOfObjectPoolResObjectPoolErrorCodes_template();
+EndOfObjectPoolResObjectPoolErrorCodes_template& operator=(template_sel other_value);
+EndOfObjectPoolResObjectPoolErrorCodes_template& operator=(const EndOfObjectPoolResObjectPoolErrorCodes& other_value);
+EndOfObjectPoolResObjectPoolErrorCodes_template& operator=(const OPTIONAL<EndOfObjectPoolResObjectPoolErrorCodes>& other_value);
+EndOfObjectPoolResObjectPoolErrorCodes_template& operator=(const EndOfObjectPoolResObjectPoolErrorCodes_template& other_value);
+boolean match(const EndOfObjectPoolResObjectPoolErrorCodes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+EndOfObjectPoolResObjectPoolErrorCodes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+EndOfObjectPoolResObjectPoolErrorCodes_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& methodOrAttributeNotSupportedByTheVT();
+const BOOLEAN_template& methodOrAttributeNotSupportedByTheVT() const;
+BOOLEAN_template& unknownObjectReference();
+const BOOLEAN_template& unknownObjectReference() const;
+BOOLEAN_template& anyOtherError();
+const BOOLEAN_template& anyOtherError() const;
+BOOLEAN_template& objectPoolWasDeletedFromVolatileMemory();
+const BOOLEAN_template& objectPoolWasDeletedFromVolatileMemory() const;
+BOOLEAN_template& reserved4();
+const BOOLEAN_template& reserved4() const;
+BOOLEAN_template& reserved5();
+const BOOLEAN_template& reserved5() const;
+BOOLEAN_template& reserved6();
+const BOOLEAN_template& reserved6() const;
+BOOLEAN_template& reserved7();
+const BOOLEAN_template& reserved7() const;
+int size_of() const;
+void log() const;
+void log_match(const EndOfObjectPoolResObjectPoolErrorCodes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class EndOfObjectPoolRes : public Base_Type {
+  INTEGER field_vtfunction;
+  EndOfObjectPoolResErrorCodes field_errorCodes;
+  INTEGER field_parentObjectIDoFaultyObject;
+  INTEGER field_objectIDofFaultyObject;
+  EndOfObjectPoolResObjectPoolErrorCodes field_objectPoolErrorCodes;
+  OCTETSTRING field_reserved8;
+public:
+  EndOfObjectPoolRes();
+  EndOfObjectPoolRes(const INTEGER& par_vtfunction,
+    const EndOfObjectPoolResErrorCodes& par_errorCodes,
+    const INTEGER& par_parentObjectIDoFaultyObject,
+    const INTEGER& par_objectIDofFaultyObject,
+    const EndOfObjectPoolResObjectPoolErrorCodes& par_objectPoolErrorCodes,
+    const OCTETSTRING& par_reserved8);
+  EndOfObjectPoolRes(const EndOfObjectPoolRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  EndOfObjectPoolRes& operator=(const EndOfObjectPoolRes& other_value);
+  boolean operator==(const EndOfObjectPoolRes& other_value) const;
+  inline boolean operator!=(const EndOfObjectPoolRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline EndOfObjectPoolResErrorCodes& errorCodes()
+    {return field_errorCodes;}
+  inline const EndOfObjectPoolResErrorCodes& errorCodes() const
+    {return field_errorCodes;}
+  inline INTEGER& parentObjectIDoFaultyObject()
+    {return field_parentObjectIDoFaultyObject;}
+  inline const INTEGER& parentObjectIDoFaultyObject() const
+    {return field_parentObjectIDoFaultyObject;}
+  inline INTEGER& objectIDofFaultyObject()
+    {return field_objectIDofFaultyObject;}
+  inline const INTEGER& objectIDofFaultyObject() const
+    {return field_objectIDofFaultyObject;}
+  inline EndOfObjectPoolResObjectPoolErrorCodes& objectPoolErrorCodes()
+    {return field_objectPoolErrorCodes;}
+  inline const EndOfObjectPoolResObjectPoolErrorCodes& objectPoolErrorCodes() const
+    {return field_objectPoolErrorCodes;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 6;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class EndOfObjectPoolRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+EndOfObjectPoolRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const EndOfObjectPoolRes& other_value);
+void copy_template(const EndOfObjectPoolRes_template& other_value);
+
+public:
+EndOfObjectPoolRes_template();
+EndOfObjectPoolRes_template(template_sel other_value);
+EndOfObjectPoolRes_template(const EndOfObjectPoolRes& other_value);
+EndOfObjectPoolRes_template(const OPTIONAL<EndOfObjectPoolRes>& other_value);
+EndOfObjectPoolRes_template(const EndOfObjectPoolRes_template& other_value);
+~EndOfObjectPoolRes_template();
+EndOfObjectPoolRes_template& operator=(template_sel other_value);
+EndOfObjectPoolRes_template& operator=(const EndOfObjectPoolRes& other_value);
+EndOfObjectPoolRes_template& operator=(const OPTIONAL<EndOfObjectPoolRes>& other_value);
+EndOfObjectPoolRes_template& operator=(const EndOfObjectPoolRes_template& other_value);
+boolean match(const EndOfObjectPoolRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+EndOfObjectPoolRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+EndOfObjectPoolRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+EndOfObjectPoolResErrorCodes_template& errorCodes();
+const EndOfObjectPoolResErrorCodes_template& errorCodes() const;
+INTEGER_template& parentObjectIDoFaultyObject();
+const INTEGER_template& parentObjectIDoFaultyObject() const;
+INTEGER_template& objectIDofFaultyObject();
+const INTEGER_template& objectIDofFaultyObject() const;
+EndOfObjectPoolResObjectPoolErrorCodes_template& objectPoolErrorCodes();
+const EndOfObjectPoolResObjectPoolErrorCodes_template& objectPoolErrorCodes() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const EndOfObjectPoolRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class VTfunction32VT2ECU : public Base_Type {
+  INTEGER field_vtfunction;
+  OCTETSTRING field_notImplementedYet;
+public:
+  VTfunction32VT2ECU();
+  VTfunction32VT2ECU(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_notImplementedYet);
+  VTfunction32VT2ECU(const VTfunction32VT2ECU& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  VTfunction32VT2ECU& operator=(const VTfunction32VT2ECU& other_value);
+  boolean operator==(const VTfunction32VT2ECU& other_value) const;
+  inline boolean operator!=(const VTfunction32VT2ECU& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline OCTETSTRING& notImplementedYet()
+    {return field_notImplementedYet;}
+  inline const OCTETSTRING& notImplementedYet() const
+    {return field_notImplementedYet;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class VTfunction32VT2ECU_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+VTfunction32VT2ECU_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const VTfunction32VT2ECU& other_value);
+void copy_template(const VTfunction32VT2ECU_template& other_value);
+
+public:
+VTfunction32VT2ECU_template();
+VTfunction32VT2ECU_template(template_sel other_value);
+VTfunction32VT2ECU_template(const VTfunction32VT2ECU& other_value);
+VTfunction32VT2ECU_template(const OPTIONAL<VTfunction32VT2ECU>& other_value);
+VTfunction32VT2ECU_template(const VTfunction32VT2ECU_template& other_value);
+~VTfunction32VT2ECU_template();
+VTfunction32VT2ECU_template& operator=(template_sel other_value);
+VTfunction32VT2ECU_template& operator=(const VTfunction32VT2ECU& other_value);
+VTfunction32VT2ECU_template& operator=(const OPTIONAL<VTfunction32VT2ECU>& other_value);
+VTfunction32VT2ECU_template& operator=(const VTfunction32VT2ECU_template& other_value);
+boolean match(const VTfunction32VT2ECU& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+VTfunction32VT2ECU valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+VTfunction32VT2ECU_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+OCTETSTRING_template& notImplementedYet();
+const OCTETSTRING_template& notImplementedYet() const;
+int size_of() const;
+void log() const;
+void log_match(const VTfunction32VT2ECU& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class VTfunction32ECU2VT : public Base_Type {
+  INTEGER field_vtfunction;
+  OCTETSTRING field_notImplementedYet;
+public:
+  VTfunction32ECU2VT();
+  VTfunction32ECU2VT(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_notImplementedYet);
+  VTfunction32ECU2VT(const VTfunction32ECU2VT& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  VTfunction32ECU2VT& operator=(const VTfunction32ECU2VT& other_value);
+  boolean operator==(const VTfunction32ECU2VT& other_value) const;
+  inline boolean operator!=(const VTfunction32ECU2VT& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline OCTETSTRING& notImplementedYet()
+    {return field_notImplementedYet;}
+  inline const OCTETSTRING& notImplementedYet() const
+    {return field_notImplementedYet;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class VTfunction32ECU2VT_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+VTfunction32ECU2VT_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const VTfunction32ECU2VT& other_value);
+void copy_template(const VTfunction32ECU2VT_template& other_value);
+
+public:
+VTfunction32ECU2VT_template();
+VTfunction32ECU2VT_template(template_sel other_value);
+VTfunction32ECU2VT_template(const VTfunction32ECU2VT& other_value);
+VTfunction32ECU2VT_template(const OPTIONAL<VTfunction32ECU2VT>& other_value);
+VTfunction32ECU2VT_template(const VTfunction32ECU2VT_template& other_value);
+~VTfunction32ECU2VT_template();
+VTfunction32ECU2VT_template& operator=(template_sel other_value);
+VTfunction32ECU2VT_template& operator=(const VTfunction32ECU2VT& other_value);
+VTfunction32ECU2VT_template& operator=(const OPTIONAL<VTfunction32ECU2VT>& other_value);
+VTfunction32ECU2VT_template& operator=(const VTfunction32ECU2VT_template& other_value);
+boolean match(const VTfunction32ECU2VT& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+VTfunction32ECU2VT valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+VTfunction32ECU2VT_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+OCTETSTRING_template& notImplementedYet();
+const OCTETSTRING_template& notImplementedYet() const;
+int size_of() const;
+void log() const;
+void log_match(const VTfunction32ECU2VT& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class VTfunction33ECU2VT : public Base_Type {
+  INTEGER field_vtfunction;
+  OCTETSTRING field_notImplementedYet;
+public:
+  VTfunction33ECU2VT();
+  VTfunction33ECU2VT(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_notImplementedYet);
+  VTfunction33ECU2VT(const VTfunction33ECU2VT& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  VTfunction33ECU2VT& operator=(const VTfunction33ECU2VT& other_value);
+  boolean operator==(const VTfunction33ECU2VT& other_value) const;
+  inline boolean operator!=(const VTfunction33ECU2VT& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline OCTETSTRING& notImplementedYet()
+    {return field_notImplementedYet;}
+  inline const OCTETSTRING& notImplementedYet() const
+    {return field_notImplementedYet;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class VTfunction33ECU2VT_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+VTfunction33ECU2VT_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const VTfunction33ECU2VT& other_value);
+void copy_template(const VTfunction33ECU2VT_template& other_value);
+
+public:
+VTfunction33ECU2VT_template();
+VTfunction33ECU2VT_template(template_sel other_value);
+VTfunction33ECU2VT_template(const VTfunction33ECU2VT& other_value);
+VTfunction33ECU2VT_template(const OPTIONAL<VTfunction33ECU2VT>& other_value);
+VTfunction33ECU2VT_template(const VTfunction33ECU2VT_template& other_value);
+~VTfunction33ECU2VT_template();
+VTfunction33ECU2VT_template& operator=(template_sel other_value);
+VTfunction33ECU2VT_template& operator=(const VTfunction33ECU2VT& other_value);
+VTfunction33ECU2VT_template& operator=(const OPTIONAL<VTfunction33ECU2VT>& other_value);
+VTfunction33ECU2VT_template& operator=(const VTfunction33ECU2VT_template& other_value);
+boolean match(const VTfunction33ECU2VT& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+VTfunction33ECU2VT valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+VTfunction33ECU2VT_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+OCTETSTRING_template& notImplementedYet();
+const OCTETSTRING_template& notImplementedYet() const;
+int size_of() const;
+void log() const;
+void log_match(const VTfunction33ECU2VT& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class VTfunction34VT2ECU : public Base_Type {
+  INTEGER field_vtfunction;
+  OCTETSTRING field_notImplementedYet;
+public:
+  VTfunction34VT2ECU();
+  VTfunction34VT2ECU(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_notImplementedYet);
+  VTfunction34VT2ECU(const VTfunction34VT2ECU& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  VTfunction34VT2ECU& operator=(const VTfunction34VT2ECU& other_value);
+  boolean operator==(const VTfunction34VT2ECU& other_value) const;
+  inline boolean operator!=(const VTfunction34VT2ECU& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline OCTETSTRING& notImplementedYet()
+    {return field_notImplementedYet;}
+  inline const OCTETSTRING& notImplementedYet() const
+    {return field_notImplementedYet;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class VTfunction34VT2ECU_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+VTfunction34VT2ECU_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const VTfunction34VT2ECU& other_value);
+void copy_template(const VTfunction34VT2ECU_template& other_value);
+
+public:
+VTfunction34VT2ECU_template();
+VTfunction34VT2ECU_template(template_sel other_value);
+VTfunction34VT2ECU_template(const VTfunction34VT2ECU& other_value);
+VTfunction34VT2ECU_template(const OPTIONAL<VTfunction34VT2ECU>& other_value);
+VTfunction34VT2ECU_template(const VTfunction34VT2ECU_template& other_value);
+~VTfunction34VT2ECU_template();
+VTfunction34VT2ECU_template& operator=(template_sel other_value);
+VTfunction34VT2ECU_template& operator=(const VTfunction34VT2ECU& other_value);
+VTfunction34VT2ECU_template& operator=(const OPTIONAL<VTfunction34VT2ECU>& other_value);
+VTfunction34VT2ECU_template& operator=(const VTfunction34VT2ECU_template& other_value);
+boolean match(const VTfunction34VT2ECU& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+VTfunction34VT2ECU valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+VTfunction34VT2ECU_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+OCTETSTRING_template& notImplementedYet();
+const OCTETSTRING_template& notImplementedYet() const;
+int size_of() const;
+void log() const;
+void log_match(const VTfunction34VT2ECU& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class VTfunction34ECU2VT : public Base_Type {
+  INTEGER field_vtfunction;
+  OCTETSTRING field_notImplementedYet;
+public:
+  VTfunction34ECU2VT();
+  VTfunction34ECU2VT(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_notImplementedYet);
+  VTfunction34ECU2VT(const VTfunction34ECU2VT& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  VTfunction34ECU2VT& operator=(const VTfunction34ECU2VT& other_value);
+  boolean operator==(const VTfunction34ECU2VT& other_value) const;
+  inline boolean operator!=(const VTfunction34ECU2VT& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline OCTETSTRING& notImplementedYet()
+    {return field_notImplementedYet;}
+  inline const OCTETSTRING& notImplementedYet() const
+    {return field_notImplementedYet;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class VTfunction34ECU2VT_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+VTfunction34ECU2VT_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const VTfunction34ECU2VT& other_value);
+void copy_template(const VTfunction34ECU2VT_template& other_value);
+
+public:
+VTfunction34ECU2VT_template();
+VTfunction34ECU2VT_template(template_sel other_value);
+VTfunction34ECU2VT_template(const VTfunction34ECU2VT& other_value);
+VTfunction34ECU2VT_template(const OPTIONAL<VTfunction34ECU2VT>& other_value);
+VTfunction34ECU2VT_template(const VTfunction34ECU2VT_template& other_value);
+~VTfunction34ECU2VT_template();
+VTfunction34ECU2VT_template& operator=(template_sel other_value);
+VTfunction34ECU2VT_template& operator=(const VTfunction34ECU2VT& other_value);
+VTfunction34ECU2VT_template& operator=(const OPTIONAL<VTfunction34ECU2VT>& other_value);
+VTfunction34ECU2VT_template& operator=(const VTfunction34ECU2VT_template& other_value);
+boolean match(const VTfunction34ECU2VT& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+VTfunction34ECU2VT valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+VTfunction34ECU2VT_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+OCTETSTRING_template& notImplementedYet();
+const OCTETSTRING_template& notImplementedYet() const;
+int size_of() const;
+void log() const;
+void log_match(const VTfunction34ECU2VT& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class VTfunction36VT2ECU : public Base_Type {
+  INTEGER field_vtfunction;
+  OCTETSTRING field_notImplementedYet;
+public:
+  VTfunction36VT2ECU();
+  VTfunction36VT2ECU(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_notImplementedYet);
+  VTfunction36VT2ECU(const VTfunction36VT2ECU& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  VTfunction36VT2ECU& operator=(const VTfunction36VT2ECU& other_value);
+  boolean operator==(const VTfunction36VT2ECU& other_value) const;
+  inline boolean operator!=(const VTfunction36VT2ECU& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline OCTETSTRING& notImplementedYet()
+    {return field_notImplementedYet;}
+  inline const OCTETSTRING& notImplementedYet() const
+    {return field_notImplementedYet;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class VTfunction36VT2ECU_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+VTfunction36VT2ECU_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const VTfunction36VT2ECU& other_value);
+void copy_template(const VTfunction36VT2ECU_template& other_value);
+
+public:
+VTfunction36VT2ECU_template();
+VTfunction36VT2ECU_template(template_sel other_value);
+VTfunction36VT2ECU_template(const VTfunction36VT2ECU& other_value);
+VTfunction36VT2ECU_template(const OPTIONAL<VTfunction36VT2ECU>& other_value);
+VTfunction36VT2ECU_template(const VTfunction36VT2ECU_template& other_value);
+~VTfunction36VT2ECU_template();
+VTfunction36VT2ECU_template& operator=(template_sel other_value);
+VTfunction36VT2ECU_template& operator=(const VTfunction36VT2ECU& other_value);
+VTfunction36VT2ECU_template& operator=(const OPTIONAL<VTfunction36VT2ECU>& other_value);
+VTfunction36VT2ECU_template& operator=(const VTfunction36VT2ECU_template& other_value);
+boolean match(const VTfunction36VT2ECU& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+VTfunction36VT2ECU valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+VTfunction36VT2ECU_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+OCTETSTRING_template& notImplementedYet();
+const OCTETSTRING_template& notImplementedYet() const;
+int size_of() const;
+void log() const;
+void log_match(const VTfunction36VT2ECU& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class VTfunction36ECU2VT : public Base_Type {
+  INTEGER field_vtfunction;
+  OCTETSTRING field_notImplementedYet;
+public:
+  VTfunction36ECU2VT();
+  VTfunction36ECU2VT(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_notImplementedYet);
+  VTfunction36ECU2VT(const VTfunction36ECU2VT& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  VTfunction36ECU2VT& operator=(const VTfunction36ECU2VT& other_value);
+  boolean operator==(const VTfunction36ECU2VT& other_value) const;
+  inline boolean operator!=(const VTfunction36ECU2VT& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline OCTETSTRING& notImplementedYet()
+    {return field_notImplementedYet;}
+  inline const OCTETSTRING& notImplementedYet() const
+    {return field_notImplementedYet;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class VTfunction36ECU2VT_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+VTfunction36ECU2VT_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const VTfunction36ECU2VT& other_value);
+void copy_template(const VTfunction36ECU2VT_template& other_value);
+
+public:
+VTfunction36ECU2VT_template();
+VTfunction36ECU2VT_template(template_sel other_value);
+VTfunction36ECU2VT_template(const VTfunction36ECU2VT& other_value);
+VTfunction36ECU2VT_template(const OPTIONAL<VTfunction36ECU2VT>& other_value);
+VTfunction36ECU2VT_template(const VTfunction36ECU2VT_template& other_value);
+~VTfunction36ECU2VT_template();
+VTfunction36ECU2VT_template& operator=(template_sel other_value);
+VTfunction36ECU2VT_template& operator=(const VTfunction36ECU2VT& other_value);
+VTfunction36ECU2VT_template& operator=(const OPTIONAL<VTfunction36ECU2VT>& other_value);
+VTfunction36ECU2VT_template& operator=(const VTfunction36ECU2VT_template& other_value);
+boolean match(const VTfunction36ECU2VT& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+VTfunction36ECU2VT valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+VTfunction36ECU2VT_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+OCTETSTRING_template& notImplementedYet();
+const OCTETSTRING_template& notImplementedYet() const;
+int size_of() const;
+void log() const;
+void log_match(const VTfunction36ECU2VT& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class VTfunction37VT2ECU : public Base_Type {
+  INTEGER field_vtfunction;
+  OCTETSTRING field_notImplementedYet;
+public:
+  VTfunction37VT2ECU();
+  VTfunction37VT2ECU(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_notImplementedYet);
+  VTfunction37VT2ECU(const VTfunction37VT2ECU& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  VTfunction37VT2ECU& operator=(const VTfunction37VT2ECU& other_value);
+  boolean operator==(const VTfunction37VT2ECU& other_value) const;
+  inline boolean operator!=(const VTfunction37VT2ECU& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline OCTETSTRING& notImplementedYet()
+    {return field_notImplementedYet;}
+  inline const OCTETSTRING& notImplementedYet() const
+    {return field_notImplementedYet;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class VTfunction37VT2ECU_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+VTfunction37VT2ECU_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const VTfunction37VT2ECU& other_value);
+void copy_template(const VTfunction37VT2ECU_template& other_value);
+
+public:
+VTfunction37VT2ECU_template();
+VTfunction37VT2ECU_template(template_sel other_value);
+VTfunction37VT2ECU_template(const VTfunction37VT2ECU& other_value);
+VTfunction37VT2ECU_template(const OPTIONAL<VTfunction37VT2ECU>& other_value);
+VTfunction37VT2ECU_template(const VTfunction37VT2ECU_template& other_value);
+~VTfunction37VT2ECU_template();
+VTfunction37VT2ECU_template& operator=(template_sel other_value);
+VTfunction37VT2ECU_template& operator=(const VTfunction37VT2ECU& other_value);
+VTfunction37VT2ECU_template& operator=(const OPTIONAL<VTfunction37VT2ECU>& other_value);
+VTfunction37VT2ECU_template& operator=(const VTfunction37VT2ECU_template& other_value);
+boolean match(const VTfunction37VT2ECU& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+VTfunction37VT2ECU valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+VTfunction37VT2ECU_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+OCTETSTRING_template& notImplementedYet();
+const OCTETSTRING_template& notImplementedYet() const;
+int size_of() const;
+void log() const;
+void log_match(const VTfunction37VT2ECU& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class VTfunction37ECU2VT : public Base_Type {
+  INTEGER field_vtfunction;
+  OCTETSTRING field_notImplementedYet;
+public:
+  VTfunction37ECU2VT();
+  VTfunction37ECU2VT(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_notImplementedYet);
+  VTfunction37ECU2VT(const VTfunction37ECU2VT& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  VTfunction37ECU2VT& operator=(const VTfunction37ECU2VT& other_value);
+  boolean operator==(const VTfunction37ECU2VT& other_value) const;
+  inline boolean operator!=(const VTfunction37ECU2VT& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline OCTETSTRING& notImplementedYet()
+    {return field_notImplementedYet;}
+  inline const OCTETSTRING& notImplementedYet() const
+    {return field_notImplementedYet;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class VTfunction37ECU2VT_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+VTfunction37ECU2VT_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const VTfunction37ECU2VT& other_value);
+void copy_template(const VTfunction37ECU2VT_template& other_value);
+
+public:
+VTfunction37ECU2VT_template();
+VTfunction37ECU2VT_template(template_sel other_value);
+VTfunction37ECU2VT_template(const VTfunction37ECU2VT& other_value);
+VTfunction37ECU2VT_template(const OPTIONAL<VTfunction37ECU2VT>& other_value);
+VTfunction37ECU2VT_template(const VTfunction37ECU2VT_template& other_value);
+~VTfunction37ECU2VT_template();
+VTfunction37ECU2VT_template& operator=(template_sel other_value);
+VTfunction37ECU2VT_template& operator=(const VTfunction37ECU2VT& other_value);
+VTfunction37ECU2VT_template& operator=(const OPTIONAL<VTfunction37ECU2VT>& other_value);
+VTfunction37ECU2VT_template& operator=(const VTfunction37ECU2VT_template& other_value);
+boolean match(const VTfunction37ECU2VT& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+VTfunction37ECU2VT valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+VTfunction37ECU2VT_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+OCTETSTRING_template& notImplementedYet();
+const OCTETSTRING_template& notImplementedYet() const;
+int size_of() const;
+void log() const;
+void log_match(const VTfunction37ECU2VT& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class AuxiliaryInputType2StatusInd : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_auxiliaryInputObjectID;
+  OCTETSTRING field_value1;
+  OCTETSTRING field_value2;
+  BITSTRING field_operationState;
+public:
+  AuxiliaryInputType2StatusInd();
+  AuxiliaryInputType2StatusInd(const INTEGER& par_vtfunction,
+    const INTEGER& par_auxiliaryInputObjectID,
+    const OCTETSTRING& par_value1,
+    const OCTETSTRING& par_value2,
+    const BITSTRING& par_operationState);
+  AuxiliaryInputType2StatusInd(const AuxiliaryInputType2StatusInd& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  AuxiliaryInputType2StatusInd& operator=(const AuxiliaryInputType2StatusInd& other_value);
+  boolean operator==(const AuxiliaryInputType2StatusInd& other_value) const;
+  inline boolean operator!=(const AuxiliaryInputType2StatusInd& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& auxiliaryInputObjectID()
+    {return field_auxiliaryInputObjectID;}
+  inline const INTEGER& auxiliaryInputObjectID() const
+    {return field_auxiliaryInputObjectID;}
+  inline OCTETSTRING& value1()
+    {return field_value1;}
+  inline const OCTETSTRING& value1() const
+    {return field_value1;}
+  inline OCTETSTRING& value2()
+    {return field_value2;}
+  inline const OCTETSTRING& value2() const
+    {return field_value2;}
+  inline BITSTRING& operationState()
+    {return field_operationState;}
+  inline const BITSTRING& operationState() const
+    {return field_operationState;}
+  inline int size_of() const
+    {return 5;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class AuxiliaryInputType2StatusInd_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+AuxiliaryInputType2StatusInd_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const AuxiliaryInputType2StatusInd& other_value);
+void copy_template(const AuxiliaryInputType2StatusInd_template& other_value);
+
+public:
+AuxiliaryInputType2StatusInd_template();
+AuxiliaryInputType2StatusInd_template(template_sel other_value);
+AuxiliaryInputType2StatusInd_template(const AuxiliaryInputType2StatusInd& other_value);
+AuxiliaryInputType2StatusInd_template(const OPTIONAL<AuxiliaryInputType2StatusInd>& other_value);
+AuxiliaryInputType2StatusInd_template(const AuxiliaryInputType2StatusInd_template& other_value);
+~AuxiliaryInputType2StatusInd_template();
+AuxiliaryInputType2StatusInd_template& operator=(template_sel other_value);
+AuxiliaryInputType2StatusInd_template& operator=(const AuxiliaryInputType2StatusInd& other_value);
+AuxiliaryInputType2StatusInd_template& operator=(const OPTIONAL<AuxiliaryInputType2StatusInd>& other_value);
+AuxiliaryInputType2StatusInd_template& operator=(const AuxiliaryInputType2StatusInd_template& other_value);
+boolean match(const AuxiliaryInputType2StatusInd& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+AuxiliaryInputType2StatusInd valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+AuxiliaryInputType2StatusInd_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& auxiliaryInputObjectID();
+const INTEGER_template& auxiliaryInputObjectID() const;
+OCTETSTRING_template& value1();
+const OCTETSTRING_template& value1() const;
+OCTETSTRING_template& value2();
+const OCTETSTRING_template& value2() const;
+BITSTRING_template& operationState();
+const BITSTRING_template& operationState() const;
+int size_of() const;
+void log() const;
+void log_match(const AuxiliaryInputType2StatusInd& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class VTfunction39VT2ECU : public Base_Type {
+  INTEGER field_vtfunction;
+  OCTETSTRING field_notImplementedYet;
+public:
+  VTfunction39VT2ECU();
+  VTfunction39VT2ECU(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_notImplementedYet);
+  VTfunction39VT2ECU(const VTfunction39VT2ECU& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  VTfunction39VT2ECU& operator=(const VTfunction39VT2ECU& other_value);
+  boolean operator==(const VTfunction39VT2ECU& other_value) const;
+  inline boolean operator!=(const VTfunction39VT2ECU& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline OCTETSTRING& notImplementedYet()
+    {return field_notImplementedYet;}
+  inline const OCTETSTRING& notImplementedYet() const
+    {return field_notImplementedYet;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class VTfunction39VT2ECU_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+VTfunction39VT2ECU_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const VTfunction39VT2ECU& other_value);
+void copy_template(const VTfunction39VT2ECU_template& other_value);
+
+public:
+VTfunction39VT2ECU_template();
+VTfunction39VT2ECU_template(template_sel other_value);
+VTfunction39VT2ECU_template(const VTfunction39VT2ECU& other_value);
+VTfunction39VT2ECU_template(const OPTIONAL<VTfunction39VT2ECU>& other_value);
+VTfunction39VT2ECU_template(const VTfunction39VT2ECU_template& other_value);
+~VTfunction39VT2ECU_template();
+VTfunction39VT2ECU_template& operator=(template_sel other_value);
+VTfunction39VT2ECU_template& operator=(const VTfunction39VT2ECU& other_value);
+VTfunction39VT2ECU_template& operator=(const OPTIONAL<VTfunction39VT2ECU>& other_value);
+VTfunction39VT2ECU_template& operator=(const VTfunction39VT2ECU_template& other_value);
+boolean match(const VTfunction39VT2ECU& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+VTfunction39VT2ECU valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+VTfunction39VT2ECU_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+OCTETSTRING_template& notImplementedYet();
+const OCTETSTRING_template& notImplementedYet() const;
+int size_of() const;
+void log() const;
+void log_match(const VTfunction39VT2ECU& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class VTfunction39ECU2VT : public Base_Type {
+  INTEGER field_vtfunction;
+  OCTETSTRING field_notImplementedYet;
+public:
+  VTfunction39ECU2VT();
+  VTfunction39ECU2VT(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_notImplementedYet);
+  VTfunction39ECU2VT(const VTfunction39ECU2VT& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  VTfunction39ECU2VT& operator=(const VTfunction39ECU2VT& other_value);
+  boolean operator==(const VTfunction39ECU2VT& other_value) const;
+  inline boolean operator!=(const VTfunction39ECU2VT& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline OCTETSTRING& notImplementedYet()
+    {return field_notImplementedYet;}
+  inline const OCTETSTRING& notImplementedYet() const
+    {return field_notImplementedYet;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class VTfunction39ECU2VT_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+VTfunction39ECU2VT_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const VTfunction39ECU2VT& other_value);
+void copy_template(const VTfunction39ECU2VT_template& other_value);
+
+public:
+VTfunction39ECU2VT_template();
+VTfunction39ECU2VT_template(template_sel other_value);
+VTfunction39ECU2VT_template(const VTfunction39ECU2VT& other_value);
+VTfunction39ECU2VT_template(const OPTIONAL<VTfunction39ECU2VT>& other_value);
+VTfunction39ECU2VT_template(const VTfunction39ECU2VT_template& other_value);
+~VTfunction39ECU2VT_template();
+VTfunction39ECU2VT_template& operator=(template_sel other_value);
+VTfunction39ECU2VT_template& operator=(const VTfunction39ECU2VT& other_value);
+VTfunction39ECU2VT_template& operator=(const OPTIONAL<VTfunction39ECU2VT>& other_value);
+VTfunction39ECU2VT_template& operator=(const VTfunction39ECU2VT_template& other_value);
+boolean match(const VTfunction39ECU2VT& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+VTfunction39ECU2VT valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+VTfunction39ECU2VT_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+OCTETSTRING_template& notImplementedYet();
+const OCTETSTRING_template& notImplementedYet() const;
+int size_of() const;
+void log() const;
+void log_match(const VTfunction39ECU2VT& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ESCreq : public Base_Type {
+  INTEGER field_vtfunction;
+  OCTETSTRING field_reserved2;
+  OCTETSTRING field_reserved3;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  ESCreq();
+  ESCreq(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_reserved2,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  ESCreq(const ESCreq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ESCreq& operator=(const ESCreq& other_value);
+  boolean operator==(const ESCreq& other_value) const;
+  inline boolean operator!=(const ESCreq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline OCTETSTRING& reserved2()
+    {return field_reserved2;}
+  inline const OCTETSTRING& reserved2() const
+    {return field_reserved2;}
+  inline OCTETSTRING& reserved3()
+    {return field_reserved3;}
+  inline const OCTETSTRING& reserved3() const
+    {return field_reserved3;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ESCreq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ESCreq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ESCreq& other_value);
+void copy_template(const ESCreq_template& other_value);
+
+public:
+ESCreq_template();
+ESCreq_template(template_sel other_value);
+ESCreq_template(const ESCreq& other_value);
+ESCreq_template(const OPTIONAL<ESCreq>& other_value);
+ESCreq_template(const ESCreq_template& other_value);
+~ESCreq_template();
+ESCreq_template& operator=(template_sel other_value);
+ESCreq_template& operator=(const ESCreq& other_value);
+ESCreq_template& operator=(const OPTIONAL<ESCreq>& other_value);
+ESCreq_template& operator=(const ESCreq_template& other_value);
+boolean match(const ESCreq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ESCreq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ESCreq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+OCTETSTRING_template& reserved2();
+const OCTETSTRING_template& reserved2() const;
+OCTETSTRING_template& reserved3();
+const OCTETSTRING_template& reserved3() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const ESCreq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ESCerrorCodes : public Base_Type {
+  BOOLEAN field_NoInputFieldIsOpenForInputESCignored;
+  BOOLEAN field_reserved1;
+  BOOLEAN field_reserved2;
+  BOOLEAN field_reserved3;
+  BOOLEAN field_anyOtherError;
+  BOOLEAN field_reserved5;
+  BOOLEAN field_reserved6;
+  BOOLEAN field_reserved7;
+public:
+  ESCerrorCodes();
+  ESCerrorCodes(const BOOLEAN& par_NoInputFieldIsOpenForInputESCignored,
+    const BOOLEAN& par_reserved1,
+    const BOOLEAN& par_reserved2,
+    const BOOLEAN& par_reserved3,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7);
+  ESCerrorCodes(const ESCerrorCodes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ESCerrorCodes& operator=(const ESCerrorCodes& other_value);
+  boolean operator==(const ESCerrorCodes& other_value) const;
+  inline boolean operator!=(const ESCerrorCodes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& NoInputFieldIsOpenForInputESCignored()
+    {return field_NoInputFieldIsOpenForInputESCignored;}
+  inline const BOOLEAN& NoInputFieldIsOpenForInputESCignored() const
+    {return field_NoInputFieldIsOpenForInputESCignored;}
+  inline BOOLEAN& reserved1()
+    {return field_reserved1;}
+  inline const BOOLEAN& reserved1() const
+    {return field_reserved1;}
+  inline BOOLEAN& reserved2()
+    {return field_reserved2;}
+  inline const BOOLEAN& reserved2() const
+    {return field_reserved2;}
+  inline BOOLEAN& reserved3()
+    {return field_reserved3;}
+  inline const BOOLEAN& reserved3() const
+    {return field_reserved3;}
+  inline BOOLEAN& anyOtherError()
+    {return field_anyOtherError;}
+  inline const BOOLEAN& anyOtherError() const
+    {return field_anyOtherError;}
+  inline BOOLEAN& reserved5()
+    {return field_reserved5;}
+  inline const BOOLEAN& reserved5() const
+    {return field_reserved5;}
+  inline BOOLEAN& reserved6()
+    {return field_reserved6;}
+  inline const BOOLEAN& reserved6() const
+    {return field_reserved6;}
+  inline BOOLEAN& reserved7()
+    {return field_reserved7;}
+  inline const BOOLEAN& reserved7() const
+    {return field_reserved7;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ESCerrorCodes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ESCerrorCodes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ESCerrorCodes& other_value);
+void copy_template(const ESCerrorCodes_template& other_value);
+
+public:
+ESCerrorCodes_template();
+ESCerrorCodes_template(template_sel other_value);
+ESCerrorCodes_template(const ESCerrorCodes& other_value);
+ESCerrorCodes_template(const OPTIONAL<ESCerrorCodes>& other_value);
+ESCerrorCodes_template(const ESCerrorCodes_template& other_value);
+~ESCerrorCodes_template();
+ESCerrorCodes_template& operator=(template_sel other_value);
+ESCerrorCodes_template& operator=(const ESCerrorCodes& other_value);
+ESCerrorCodes_template& operator=(const OPTIONAL<ESCerrorCodes>& other_value);
+ESCerrorCodes_template& operator=(const ESCerrorCodes_template& other_value);
+boolean match(const ESCerrorCodes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ESCerrorCodes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ESCerrorCodes_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& NoInputFieldIsOpenForInputESCignored();
+const BOOLEAN_template& NoInputFieldIsOpenForInputESCignored() const;
+BOOLEAN_template& reserved1();
+const BOOLEAN_template& reserved1() const;
+BOOLEAN_template& reserved2();
+const BOOLEAN_template& reserved2() const;
+BOOLEAN_template& reserved3();
+const BOOLEAN_template& reserved3() const;
+BOOLEAN_template& anyOtherError();
+const BOOLEAN_template& anyOtherError() const;
+BOOLEAN_template& reserved5();
+const BOOLEAN_template& reserved5() const;
+BOOLEAN_template& reserved6();
+const BOOLEAN_template& reserved6() const;
+BOOLEAN_template& reserved7();
+const BOOLEAN_template& reserved7() const;
+int size_of() const;
+void log() const;
+void log_match(const ESCerrorCodes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ESCres : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_ObjectIDwhereInputWasAborted;
+  ESCerrorCodes field_ErrorCodes;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  ESCres();
+  ESCres(const INTEGER& par_vtfunction,
+    const INTEGER& par_ObjectIDwhereInputWasAborted,
+    const ESCerrorCodes& par_ErrorCodes,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  ESCres(const ESCres& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ESCres& operator=(const ESCres& other_value);
+  boolean operator==(const ESCres& other_value) const;
+  inline boolean operator!=(const ESCres& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& ObjectIDwhereInputWasAborted()
+    {return field_ObjectIDwhereInputWasAborted;}
+  inline const INTEGER& ObjectIDwhereInputWasAborted() const
+    {return field_ObjectIDwhereInputWasAborted;}
+  inline ESCerrorCodes& ErrorCodes()
+    {return field_ErrorCodes;}
+  inline const ESCerrorCodes& ErrorCodes() const
+    {return field_ErrorCodes;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 7;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ESCres_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ESCres_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ESCres& other_value);
+void copy_template(const ESCres_template& other_value);
+
+public:
+ESCres_template();
+ESCres_template(template_sel other_value);
+ESCres_template(const ESCres& other_value);
+ESCres_template(const OPTIONAL<ESCres>& other_value);
+ESCres_template(const ESCres_template& other_value);
+~ESCres_template();
+ESCres_template& operator=(template_sel other_value);
+ESCres_template& operator=(const ESCres& other_value);
+ESCres_template& operator=(const OPTIONAL<ESCres>& other_value);
+ESCres_template& operator=(const ESCres_template& other_value);
+boolean match(const ESCres& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ESCres valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ESCres_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& ObjectIDwhereInputWasAborted();
+const INTEGER_template& ObjectIDwhereInputWasAborted() const;
+ESCerrorCodes_template& ErrorCodes();
+const ESCerrorCodes_template& ErrorCodes() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const ESCres& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class e__HideShowObject__state : public Base_Type { // enum
+friend class e__HideShowObject__state_template;
+public:
+enum enum_type { hide = 0, show = 1, UNKNOWN_VALUE = 2, UNBOUND_VALUE = 3 };
+private:
+enum_type enum_value;
+
+public:
+e__HideShowObject__state();
+e__HideShowObject__state(int other_value);
+e__HideShowObject__state(enum_type other_value);
+e__HideShowObject__state(const e__HideShowObject__state& other_value);
+
+e__HideShowObject__state& operator=(int other_value);
+e__HideShowObject__state& operator=(enum_type other_value);
+e__HideShowObject__state& operator=(const e__HideShowObject__state& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const e__HideShowObject__state& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const e__HideShowObject__state& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const e__HideShowObject__state& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const e__HideShowObject__state& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const e__HideShowObject__state& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const e__HideShowObject__state& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const e__HideShowObject__state& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class e__HideShowObject__state_template : public Base_Template {
+union {
+e__HideShowObject__state::enum_type single_value;
+struct {
+unsigned int n_values;
+e__HideShowObject__state_template *list_value;
+} value_list;
+};
+
+void copy_template(const e__HideShowObject__state_template& other_value);
+
+public:
+e__HideShowObject__state_template();
+e__HideShowObject__state_template(template_sel other_value);
+e__HideShowObject__state_template(int other_value);
+e__HideShowObject__state_template(e__HideShowObject__state::enum_type other_value);
+e__HideShowObject__state_template(const e__HideShowObject__state& other_value);
+e__HideShowObject__state_template(const OPTIONAL<e__HideShowObject__state>& other_value);
+e__HideShowObject__state_template(const e__HideShowObject__state_template& other_value);
+~e__HideShowObject__state_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+e__HideShowObject__state_template& operator=(template_sel other_value);
+e__HideShowObject__state_template& operator=(int other_value);
+e__HideShowObject__state_template& operator=(e__HideShowObject__state::enum_type other_value);
+e__HideShowObject__state_template& operator=(const e__HideShowObject__state& other_value);
+e__HideShowObject__state_template& operator=(const OPTIONAL<e__HideShowObject__state>& other_value);
+e__HideShowObject__state_template& operator=(const e__HideShowObject__state_template& other_value);
+
+boolean match(e__HideShowObject__state::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const e__HideShowObject__state& other_value, boolean legacy = FALSE) const;
+e__HideShowObject__state::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+e__HideShowObject__state_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const e__HideShowObject__state& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class HideShowObjectReq : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectID;
+  e__HideShowObject__state field_hideShow;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  HideShowObjectReq();
+  HideShowObjectReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const e__HideShowObject__state& par_hideShow,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  HideShowObjectReq(const HideShowObjectReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  HideShowObjectReq& operator=(const HideShowObjectReq& other_value);
+  boolean operator==(const HideShowObjectReq& other_value) const;
+  inline boolean operator!=(const HideShowObjectReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectID()
+    {return field_objectID;}
+  inline const INTEGER& objectID() const
+    {return field_objectID;}
+  inline e__HideShowObject__state& hideShow()
+    {return field_hideShow;}
+  inline const e__HideShowObject__state& hideShow() const
+    {return field_hideShow;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 7;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class HideShowObjectReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+HideShowObjectReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const HideShowObjectReq& other_value);
+void copy_template(const HideShowObjectReq_template& other_value);
+
+public:
+HideShowObjectReq_template();
+HideShowObjectReq_template(template_sel other_value);
+HideShowObjectReq_template(const HideShowObjectReq& other_value);
+HideShowObjectReq_template(const OPTIONAL<HideShowObjectReq>& other_value);
+HideShowObjectReq_template(const HideShowObjectReq_template& other_value);
+~HideShowObjectReq_template();
+HideShowObjectReq_template& operator=(template_sel other_value);
+HideShowObjectReq_template& operator=(const HideShowObjectReq& other_value);
+HideShowObjectReq_template& operator=(const OPTIONAL<HideShowObjectReq>& other_value);
+HideShowObjectReq_template& operator=(const HideShowObjectReq_template& other_value);
+boolean match(const HideShowObjectReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+HideShowObjectReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+HideShowObjectReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectID();
+const INTEGER_template& objectID() const;
+e__HideShowObject__state_template& hideShow();
+const e__HideShowObject__state_template& hideShow() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const HideShowObjectReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class HideShowObjectRes__errorCodes : public Base_Type {
+  BOOLEAN field_referencesToMissingObjects;
+  BOOLEAN field_invalidObjectID;
+  BOOLEAN field_undefined;
+  BOOLEAN field_anyOtherError;
+  BOOLEAN field_reserved4;
+  BOOLEAN field_reserved5;
+  BOOLEAN field_reserved6;
+  BOOLEAN field_reserved7;
+public:
+  HideShowObjectRes__errorCodes();
+  HideShowObjectRes__errorCodes(const BOOLEAN& par_referencesToMissingObjects,
+    const BOOLEAN& par_invalidObjectID,
+    const BOOLEAN& par_undefined,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved4,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7);
+  HideShowObjectRes__errorCodes(const HideShowObjectRes__errorCodes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  HideShowObjectRes__errorCodes& operator=(const HideShowObjectRes__errorCodes& other_value);
+  boolean operator==(const HideShowObjectRes__errorCodes& other_value) const;
+  inline boolean operator!=(const HideShowObjectRes__errorCodes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& referencesToMissingObjects()
+    {return field_referencesToMissingObjects;}
+  inline const BOOLEAN& referencesToMissingObjects() const
+    {return field_referencesToMissingObjects;}
+  inline BOOLEAN& invalidObjectID()
+    {return field_invalidObjectID;}
+  inline const BOOLEAN& invalidObjectID() const
+    {return field_invalidObjectID;}
+  inline BOOLEAN& undefined()
+    {return field_undefined;}
+  inline const BOOLEAN& undefined() const
+    {return field_undefined;}
+  inline BOOLEAN& anyOtherError()
+    {return field_anyOtherError;}
+  inline const BOOLEAN& anyOtherError() const
+    {return field_anyOtherError;}
+  inline BOOLEAN& reserved4()
+    {return field_reserved4;}
+  inline const BOOLEAN& reserved4() const
+    {return field_reserved4;}
+  inline BOOLEAN& reserved5()
+    {return field_reserved5;}
+  inline const BOOLEAN& reserved5() const
+    {return field_reserved5;}
+  inline BOOLEAN& reserved6()
+    {return field_reserved6;}
+  inline const BOOLEAN& reserved6() const
+    {return field_reserved6;}
+  inline BOOLEAN& reserved7()
+    {return field_reserved7;}
+  inline const BOOLEAN& reserved7() const
+    {return field_reserved7;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class HideShowObjectRes__errorCodes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+HideShowObjectRes__errorCodes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const HideShowObjectRes__errorCodes& other_value);
+void copy_template(const HideShowObjectRes__errorCodes_template& other_value);
+
+public:
+HideShowObjectRes__errorCodes_template();
+HideShowObjectRes__errorCodes_template(template_sel other_value);
+HideShowObjectRes__errorCodes_template(const HideShowObjectRes__errorCodes& other_value);
+HideShowObjectRes__errorCodes_template(const OPTIONAL<HideShowObjectRes__errorCodes>& other_value);
+HideShowObjectRes__errorCodes_template(const HideShowObjectRes__errorCodes_template& other_value);
+~HideShowObjectRes__errorCodes_template();
+HideShowObjectRes__errorCodes_template& operator=(template_sel other_value);
+HideShowObjectRes__errorCodes_template& operator=(const HideShowObjectRes__errorCodes& other_value);
+HideShowObjectRes__errorCodes_template& operator=(const OPTIONAL<HideShowObjectRes__errorCodes>& other_value);
+HideShowObjectRes__errorCodes_template& operator=(const HideShowObjectRes__errorCodes_template& other_value);
+boolean match(const HideShowObjectRes__errorCodes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+HideShowObjectRes__errorCodes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+HideShowObjectRes__errorCodes_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& referencesToMissingObjects();
+const BOOLEAN_template& referencesToMissingObjects() const;
+BOOLEAN_template& invalidObjectID();
+const BOOLEAN_template& invalidObjectID() const;
+BOOLEAN_template& undefined();
+const BOOLEAN_template& undefined() const;
+BOOLEAN_template& anyOtherError();
+const BOOLEAN_template& anyOtherError() const;
+BOOLEAN_template& reserved4();
+const BOOLEAN_template& reserved4() const;
+BOOLEAN_template& reserved5();
+const BOOLEAN_template& reserved5() const;
+BOOLEAN_template& reserved6();
+const BOOLEAN_template& reserved6() const;
+BOOLEAN_template& reserved7();
+const BOOLEAN_template& reserved7() const;
+int size_of() const;
+void log() const;
+void log_match(const HideShowObjectRes__errorCodes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class HideShowObjectRes : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectID;
+  e__HideShowObject__state field_hideShow;
+  HideShowObjectRes__errorCodes field_errorCodes;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  HideShowObjectRes();
+  HideShowObjectRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const e__HideShowObject__state& par_hideShow,
+    const HideShowObjectRes__errorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  HideShowObjectRes(const HideShowObjectRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  HideShowObjectRes& operator=(const HideShowObjectRes& other_value);
+  boolean operator==(const HideShowObjectRes& other_value) const;
+  inline boolean operator!=(const HideShowObjectRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectID()
+    {return field_objectID;}
+  inline const INTEGER& objectID() const
+    {return field_objectID;}
+  inline e__HideShowObject__state& hideShow()
+    {return field_hideShow;}
+  inline const e__HideShowObject__state& hideShow() const
+    {return field_hideShow;}
+  inline HideShowObjectRes__errorCodes& errorCodes()
+    {return field_errorCodes;}
+  inline const HideShowObjectRes__errorCodes& errorCodes() const
+    {return field_errorCodes;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 7;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class HideShowObjectRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+HideShowObjectRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const HideShowObjectRes& other_value);
+void copy_template(const HideShowObjectRes_template& other_value);
+
+public:
+HideShowObjectRes_template();
+HideShowObjectRes_template(template_sel other_value);
+HideShowObjectRes_template(const HideShowObjectRes& other_value);
+HideShowObjectRes_template(const OPTIONAL<HideShowObjectRes>& other_value);
+HideShowObjectRes_template(const HideShowObjectRes_template& other_value);
+~HideShowObjectRes_template();
+HideShowObjectRes_template& operator=(template_sel other_value);
+HideShowObjectRes_template& operator=(const HideShowObjectRes& other_value);
+HideShowObjectRes_template& operator=(const OPTIONAL<HideShowObjectRes>& other_value);
+HideShowObjectRes_template& operator=(const HideShowObjectRes_template& other_value);
+boolean match(const HideShowObjectRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+HideShowObjectRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+HideShowObjectRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectID();
+const INTEGER_template& objectID() const;
+e__HideShowObject__state_template& hideShow();
+const e__HideShowObject__state_template& hideShow() const;
+HideShowObjectRes__errorCodes_template& errorCodes();
+const HideShowObjectRes__errorCodes_template& errorCodes() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const HideShowObjectRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class VTfunction161VT2ECU : public Base_Type {
+  INTEGER field_vtfunction;
+  OCTETSTRING field_notImplementedYet;
+public:
+  VTfunction161VT2ECU();
+  VTfunction161VT2ECU(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_notImplementedYet);
+  VTfunction161VT2ECU(const VTfunction161VT2ECU& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  VTfunction161VT2ECU& operator=(const VTfunction161VT2ECU& other_value);
+  boolean operator==(const VTfunction161VT2ECU& other_value) const;
+  inline boolean operator!=(const VTfunction161VT2ECU& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline OCTETSTRING& notImplementedYet()
+    {return field_notImplementedYet;}
+  inline const OCTETSTRING& notImplementedYet() const
+    {return field_notImplementedYet;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class VTfunction161VT2ECU_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+VTfunction161VT2ECU_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const VTfunction161VT2ECU& other_value);
+void copy_template(const VTfunction161VT2ECU_template& other_value);
+
+public:
+VTfunction161VT2ECU_template();
+VTfunction161VT2ECU_template(template_sel other_value);
+VTfunction161VT2ECU_template(const VTfunction161VT2ECU& other_value);
+VTfunction161VT2ECU_template(const OPTIONAL<VTfunction161VT2ECU>& other_value);
+VTfunction161VT2ECU_template(const VTfunction161VT2ECU_template& other_value);
+~VTfunction161VT2ECU_template();
+VTfunction161VT2ECU_template& operator=(template_sel other_value);
+VTfunction161VT2ECU_template& operator=(const VTfunction161VT2ECU& other_value);
+VTfunction161VT2ECU_template& operator=(const OPTIONAL<VTfunction161VT2ECU>& other_value);
+VTfunction161VT2ECU_template& operator=(const VTfunction161VT2ECU_template& other_value);
+boolean match(const VTfunction161VT2ECU& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+VTfunction161VT2ECU valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+VTfunction161VT2ECU_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+OCTETSTRING_template& notImplementedYet();
+const OCTETSTRING_template& notImplementedYet() const;
+int size_of() const;
+void log() const;
+void log_match(const VTfunction161VT2ECU& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class VTfunction161ECU2VT : public Base_Type {
+  INTEGER field_vtfunction;
+  OCTETSTRING field_notImplementedYet;
+public:
+  VTfunction161ECU2VT();
+  VTfunction161ECU2VT(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_notImplementedYet);
+  VTfunction161ECU2VT(const VTfunction161ECU2VT& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  VTfunction161ECU2VT& operator=(const VTfunction161ECU2VT& other_value);
+  boolean operator==(const VTfunction161ECU2VT& other_value) const;
+  inline boolean operator!=(const VTfunction161ECU2VT& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline OCTETSTRING& notImplementedYet()
+    {return field_notImplementedYet;}
+  inline const OCTETSTRING& notImplementedYet() const
+    {return field_notImplementedYet;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class VTfunction161ECU2VT_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+VTfunction161ECU2VT_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const VTfunction161ECU2VT& other_value);
+void copy_template(const VTfunction161ECU2VT_template& other_value);
+
+public:
+VTfunction161ECU2VT_template();
+VTfunction161ECU2VT_template(template_sel other_value);
+VTfunction161ECU2VT_template(const VTfunction161ECU2VT& other_value);
+VTfunction161ECU2VT_template(const OPTIONAL<VTfunction161ECU2VT>& other_value);
+VTfunction161ECU2VT_template(const VTfunction161ECU2VT_template& other_value);
+~VTfunction161ECU2VT_template();
+VTfunction161ECU2VT_template& operator=(template_sel other_value);
+VTfunction161ECU2VT_template& operator=(const VTfunction161ECU2VT& other_value);
+VTfunction161ECU2VT_template& operator=(const OPTIONAL<VTfunction161ECU2VT>& other_value);
+VTfunction161ECU2VT_template& operator=(const VTfunction161ECU2VT_template& other_value);
+boolean match(const VTfunction161ECU2VT& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+VTfunction161ECU2VT valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+VTfunction161ECU2VT_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+OCTETSTRING_template& notImplementedYet();
+const OCTETSTRING_template& notImplementedYet() const;
+int size_of() const;
+void log() const;
+void log_match(const VTfunction161ECU2VT& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class e__EnableDisableObject__DisableEnable : public Base_Type { // enum
+friend class e__EnableDisableObject__DisableEnable_template;
+public:
+enum enum_type { disable = 0, enable = 1, UNKNOWN_VALUE = 2, UNBOUND_VALUE = 3 };
+private:
+enum_type enum_value;
+
+public:
+e__EnableDisableObject__DisableEnable();
+e__EnableDisableObject__DisableEnable(int other_value);
+e__EnableDisableObject__DisableEnable(enum_type other_value);
+e__EnableDisableObject__DisableEnable(const e__EnableDisableObject__DisableEnable& other_value);
+
+e__EnableDisableObject__DisableEnable& operator=(int other_value);
+e__EnableDisableObject__DisableEnable& operator=(enum_type other_value);
+e__EnableDisableObject__DisableEnable& operator=(const e__EnableDisableObject__DisableEnable& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const e__EnableDisableObject__DisableEnable& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const e__EnableDisableObject__DisableEnable& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const e__EnableDisableObject__DisableEnable& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const e__EnableDisableObject__DisableEnable& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const e__EnableDisableObject__DisableEnable& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const e__EnableDisableObject__DisableEnable& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const e__EnableDisableObject__DisableEnable& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class e__EnableDisableObject__DisableEnable_template : public Base_Template {
+union {
+e__EnableDisableObject__DisableEnable::enum_type single_value;
+struct {
+unsigned int n_values;
+e__EnableDisableObject__DisableEnable_template *list_value;
+} value_list;
+};
+
+void copy_template(const e__EnableDisableObject__DisableEnable_template& other_value);
+
+public:
+e__EnableDisableObject__DisableEnable_template();
+e__EnableDisableObject__DisableEnable_template(template_sel other_value);
+e__EnableDisableObject__DisableEnable_template(int other_value);
+e__EnableDisableObject__DisableEnable_template(e__EnableDisableObject__DisableEnable::enum_type other_value);
+e__EnableDisableObject__DisableEnable_template(const e__EnableDisableObject__DisableEnable& other_value);
+e__EnableDisableObject__DisableEnable_template(const OPTIONAL<e__EnableDisableObject__DisableEnable>& other_value);
+e__EnableDisableObject__DisableEnable_template(const e__EnableDisableObject__DisableEnable_template& other_value);
+~e__EnableDisableObject__DisableEnable_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+e__EnableDisableObject__DisableEnable_template& operator=(template_sel other_value);
+e__EnableDisableObject__DisableEnable_template& operator=(int other_value);
+e__EnableDisableObject__DisableEnable_template& operator=(e__EnableDisableObject__DisableEnable::enum_type other_value);
+e__EnableDisableObject__DisableEnable_template& operator=(const e__EnableDisableObject__DisableEnable& other_value);
+e__EnableDisableObject__DisableEnable_template& operator=(const OPTIONAL<e__EnableDisableObject__DisableEnable>& other_value);
+e__EnableDisableObject__DisableEnable_template& operator=(const e__EnableDisableObject__DisableEnable_template& other_value);
+
+boolean match(e__EnableDisableObject__DisableEnable::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const e__EnableDisableObject__DisableEnable& other_value, boolean legacy = FALSE) const;
+e__EnableDisableObject__DisableEnable::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+e__EnableDisableObject__DisableEnable_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const e__EnableDisableObject__DisableEnable& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class EnableDisableObjectReq : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectID;
+  e__EnableDisableObject__DisableEnable field_DisableEnable;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  EnableDisableObjectReq();
+  EnableDisableObjectReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const e__EnableDisableObject__DisableEnable& par_DisableEnable,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  EnableDisableObjectReq(const EnableDisableObjectReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  EnableDisableObjectReq& operator=(const EnableDisableObjectReq& other_value);
+  boolean operator==(const EnableDisableObjectReq& other_value) const;
+  inline boolean operator!=(const EnableDisableObjectReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectID()
+    {return field_objectID;}
+  inline const INTEGER& objectID() const
+    {return field_objectID;}
+  inline e__EnableDisableObject__DisableEnable& DisableEnable()
+    {return field_DisableEnable;}
+  inline const e__EnableDisableObject__DisableEnable& DisableEnable() const
+    {return field_DisableEnable;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 7;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class EnableDisableObjectReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+EnableDisableObjectReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const EnableDisableObjectReq& other_value);
+void copy_template(const EnableDisableObjectReq_template& other_value);
+
+public:
+EnableDisableObjectReq_template();
+EnableDisableObjectReq_template(template_sel other_value);
+EnableDisableObjectReq_template(const EnableDisableObjectReq& other_value);
+EnableDisableObjectReq_template(const OPTIONAL<EnableDisableObjectReq>& other_value);
+EnableDisableObjectReq_template(const EnableDisableObjectReq_template& other_value);
+~EnableDisableObjectReq_template();
+EnableDisableObjectReq_template& operator=(template_sel other_value);
+EnableDisableObjectReq_template& operator=(const EnableDisableObjectReq& other_value);
+EnableDisableObjectReq_template& operator=(const OPTIONAL<EnableDisableObjectReq>& other_value);
+EnableDisableObjectReq_template& operator=(const EnableDisableObjectReq_template& other_value);
+boolean match(const EnableDisableObjectReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+EnableDisableObjectReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+EnableDisableObjectReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectID();
+const INTEGER_template& objectID() const;
+e__EnableDisableObject__DisableEnable_template& DisableEnable();
+const e__EnableDisableObject__DisableEnable_template& DisableEnable() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const EnableDisableObjectReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class EnableDisableObjectRes__errorCodes : public Base_Type {
+  BOOLEAN field_reserved0;
+  BOOLEAN field_invalidObjectID;
+  BOOLEAN field_commandError;
+  BOOLEAN field_couldNotCompleteOperatorInputIsActiveOnThisObject;
+  BOOLEAN field_anyOtherError;
+  BOOLEAN field_reserved5;
+  BOOLEAN field_reserved6;
+  BOOLEAN field_reserved7;
+public:
+  EnableDisableObjectRes__errorCodes();
+  EnableDisableObjectRes__errorCodes(const BOOLEAN& par_reserved0,
+    const BOOLEAN& par_invalidObjectID,
+    const BOOLEAN& par_commandError,
+    const BOOLEAN& par_couldNotCompleteOperatorInputIsActiveOnThisObject,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7);
+  EnableDisableObjectRes__errorCodes(const EnableDisableObjectRes__errorCodes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  EnableDisableObjectRes__errorCodes& operator=(const EnableDisableObjectRes__errorCodes& other_value);
+  boolean operator==(const EnableDisableObjectRes__errorCodes& other_value) const;
+  inline boolean operator!=(const EnableDisableObjectRes__errorCodes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& reserved0()
+    {return field_reserved0;}
+  inline const BOOLEAN& reserved0() const
+    {return field_reserved0;}
+  inline BOOLEAN& invalidObjectID()
+    {return field_invalidObjectID;}
+  inline const BOOLEAN& invalidObjectID() const
+    {return field_invalidObjectID;}
+  inline BOOLEAN& commandError()
+    {return field_commandError;}
+  inline const BOOLEAN& commandError() const
+    {return field_commandError;}
+  inline BOOLEAN& couldNotCompleteOperatorInputIsActiveOnThisObject()
+    {return field_couldNotCompleteOperatorInputIsActiveOnThisObject;}
+  inline const BOOLEAN& couldNotCompleteOperatorInputIsActiveOnThisObject() const
+    {return field_couldNotCompleteOperatorInputIsActiveOnThisObject;}
+  inline BOOLEAN& anyOtherError()
+    {return field_anyOtherError;}
+  inline const BOOLEAN& anyOtherError() const
+    {return field_anyOtherError;}
+  inline BOOLEAN& reserved5()
+    {return field_reserved5;}
+  inline const BOOLEAN& reserved5() const
+    {return field_reserved5;}
+  inline BOOLEAN& reserved6()
+    {return field_reserved6;}
+  inline const BOOLEAN& reserved6() const
+    {return field_reserved6;}
+  inline BOOLEAN& reserved7()
+    {return field_reserved7;}
+  inline const BOOLEAN& reserved7() const
+    {return field_reserved7;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class EnableDisableObjectRes__errorCodes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+EnableDisableObjectRes__errorCodes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const EnableDisableObjectRes__errorCodes& other_value);
+void copy_template(const EnableDisableObjectRes__errorCodes_template& other_value);
+
+public:
+EnableDisableObjectRes__errorCodes_template();
+EnableDisableObjectRes__errorCodes_template(template_sel other_value);
+EnableDisableObjectRes__errorCodes_template(const EnableDisableObjectRes__errorCodes& other_value);
+EnableDisableObjectRes__errorCodes_template(const OPTIONAL<EnableDisableObjectRes__errorCodes>& other_value);
+EnableDisableObjectRes__errorCodes_template(const EnableDisableObjectRes__errorCodes_template& other_value);
+~EnableDisableObjectRes__errorCodes_template();
+EnableDisableObjectRes__errorCodes_template& operator=(template_sel other_value);
+EnableDisableObjectRes__errorCodes_template& operator=(const EnableDisableObjectRes__errorCodes& other_value);
+EnableDisableObjectRes__errorCodes_template& operator=(const OPTIONAL<EnableDisableObjectRes__errorCodes>& other_value);
+EnableDisableObjectRes__errorCodes_template& operator=(const EnableDisableObjectRes__errorCodes_template& other_value);
+boolean match(const EnableDisableObjectRes__errorCodes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+EnableDisableObjectRes__errorCodes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+EnableDisableObjectRes__errorCodes_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& reserved0();
+const BOOLEAN_template& reserved0() const;
+BOOLEAN_template& invalidObjectID();
+const BOOLEAN_template& invalidObjectID() const;
+BOOLEAN_template& commandError();
+const BOOLEAN_template& commandError() const;
+BOOLEAN_template& couldNotCompleteOperatorInputIsActiveOnThisObject();
+const BOOLEAN_template& couldNotCompleteOperatorInputIsActiveOnThisObject() const;
+BOOLEAN_template& anyOtherError();
+const BOOLEAN_template& anyOtherError() const;
+BOOLEAN_template& reserved5();
+const BOOLEAN_template& reserved5() const;
+BOOLEAN_template& reserved6();
+const BOOLEAN_template& reserved6() const;
+BOOLEAN_template& reserved7();
+const BOOLEAN_template& reserved7() const;
+int size_of() const;
+void log() const;
+void log_match(const EnableDisableObjectRes__errorCodes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class EnableDisableObjectRes : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectID;
+  e__EnableDisableObject__DisableEnable field_DisableEnable;
+  EnableDisableObjectRes__errorCodes field_errorCodes;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  EnableDisableObjectRes();
+  EnableDisableObjectRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const e__EnableDisableObject__DisableEnable& par_DisableEnable,
+    const EnableDisableObjectRes__errorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  EnableDisableObjectRes(const EnableDisableObjectRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  EnableDisableObjectRes& operator=(const EnableDisableObjectRes& other_value);
+  boolean operator==(const EnableDisableObjectRes& other_value) const;
+  inline boolean operator!=(const EnableDisableObjectRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectID()
+    {return field_objectID;}
+  inline const INTEGER& objectID() const
+    {return field_objectID;}
+  inline e__EnableDisableObject__DisableEnable& DisableEnable()
+    {return field_DisableEnable;}
+  inline const e__EnableDisableObject__DisableEnable& DisableEnable() const
+    {return field_DisableEnable;}
+  inline EnableDisableObjectRes__errorCodes& errorCodes()
+    {return field_errorCodes;}
+  inline const EnableDisableObjectRes__errorCodes& errorCodes() const
+    {return field_errorCodes;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 7;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class EnableDisableObjectRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+EnableDisableObjectRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const EnableDisableObjectRes& other_value);
+void copy_template(const EnableDisableObjectRes_template& other_value);
+
+public:
+EnableDisableObjectRes_template();
+EnableDisableObjectRes_template(template_sel other_value);
+EnableDisableObjectRes_template(const EnableDisableObjectRes& other_value);
+EnableDisableObjectRes_template(const OPTIONAL<EnableDisableObjectRes>& other_value);
+EnableDisableObjectRes_template(const EnableDisableObjectRes_template& other_value);
+~EnableDisableObjectRes_template();
+EnableDisableObjectRes_template& operator=(template_sel other_value);
+EnableDisableObjectRes_template& operator=(const EnableDisableObjectRes& other_value);
+EnableDisableObjectRes_template& operator=(const OPTIONAL<EnableDisableObjectRes>& other_value);
+EnableDisableObjectRes_template& operator=(const EnableDisableObjectRes_template& other_value);
+boolean match(const EnableDisableObjectRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+EnableDisableObjectRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+EnableDisableObjectRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectID();
+const INTEGER_template& objectID() const;
+e__EnableDisableObject__DisableEnable_template& DisableEnable();
+const e__EnableDisableObject__DisableEnable_template& DisableEnable() const;
+EnableDisableObjectRes__errorCodes_template& errorCodes();
+const EnableDisableObjectRes__errorCodes_template& errorCodes() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const EnableDisableObjectRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class e__SelectInputObjectReq__Option : public Base_Type { // enum
+friend class e__SelectInputObjectReq__Option_template;
+public:
+enum enum_type { activateForDataInputTheObjectReferencedByObjectID = 0, activateForDataInputTheObjectReferencedByObjectID1 = 1, setFocusToObjectReferencedByObjectID = 255, UNKNOWN_VALUE = 2, UNBOUND_VALUE = 3 };
+private:
+enum_type enum_value;
+
+public:
+e__SelectInputObjectReq__Option();
+e__SelectInputObjectReq__Option(int other_value);
+e__SelectInputObjectReq__Option(enum_type other_value);
+e__SelectInputObjectReq__Option(const e__SelectInputObjectReq__Option& other_value);
+
+e__SelectInputObjectReq__Option& operator=(int other_value);
+e__SelectInputObjectReq__Option& operator=(enum_type other_value);
+e__SelectInputObjectReq__Option& operator=(const e__SelectInputObjectReq__Option& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const e__SelectInputObjectReq__Option& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const e__SelectInputObjectReq__Option& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const e__SelectInputObjectReq__Option& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const e__SelectInputObjectReq__Option& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const e__SelectInputObjectReq__Option& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const e__SelectInputObjectReq__Option& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const e__SelectInputObjectReq__Option& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class e__SelectInputObjectReq__Option_template : public Base_Template {
+union {
+e__SelectInputObjectReq__Option::enum_type single_value;
+struct {
+unsigned int n_values;
+e__SelectInputObjectReq__Option_template *list_value;
+} value_list;
+};
+
+void copy_template(const e__SelectInputObjectReq__Option_template& other_value);
+
+public:
+e__SelectInputObjectReq__Option_template();
+e__SelectInputObjectReq__Option_template(template_sel other_value);
+e__SelectInputObjectReq__Option_template(int other_value);
+e__SelectInputObjectReq__Option_template(e__SelectInputObjectReq__Option::enum_type other_value);
+e__SelectInputObjectReq__Option_template(const e__SelectInputObjectReq__Option& other_value);
+e__SelectInputObjectReq__Option_template(const OPTIONAL<e__SelectInputObjectReq__Option>& other_value);
+e__SelectInputObjectReq__Option_template(const e__SelectInputObjectReq__Option_template& other_value);
+~e__SelectInputObjectReq__Option_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+e__SelectInputObjectReq__Option_template& operator=(template_sel other_value);
+e__SelectInputObjectReq__Option_template& operator=(int other_value);
+e__SelectInputObjectReq__Option_template& operator=(e__SelectInputObjectReq__Option::enum_type other_value);
+e__SelectInputObjectReq__Option_template& operator=(const e__SelectInputObjectReq__Option& other_value);
+e__SelectInputObjectReq__Option_template& operator=(const OPTIONAL<e__SelectInputObjectReq__Option>& other_value);
+e__SelectInputObjectReq__Option_template& operator=(const e__SelectInputObjectReq__Option_template& other_value);
+
+boolean match(e__SelectInputObjectReq__Option::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const e__SelectInputObjectReq__Option& other_value, boolean legacy = FALSE) const;
+e__SelectInputObjectReq__Option::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+e__SelectInputObjectReq__Option_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const e__SelectInputObjectReq__Option& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class SelectInputObjectReq : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectID;
+  e__SelectInputObjectReq__Option field_option;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  SelectInputObjectReq();
+  SelectInputObjectReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const e__SelectInputObjectReq__Option& par_option,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  SelectInputObjectReq(const SelectInputObjectReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SelectInputObjectReq& operator=(const SelectInputObjectReq& other_value);
+  boolean operator==(const SelectInputObjectReq& other_value) const;
+  inline boolean operator!=(const SelectInputObjectReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectID()
+    {return field_objectID;}
+  inline const INTEGER& objectID() const
+    {return field_objectID;}
+  inline e__SelectInputObjectReq__Option& option()
+    {return field_option;}
+  inline const e__SelectInputObjectReq__Option& option() const
+    {return field_option;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 7;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class SelectInputObjectReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SelectInputObjectReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SelectInputObjectReq& other_value);
+void copy_template(const SelectInputObjectReq_template& other_value);
+
+public:
+SelectInputObjectReq_template();
+SelectInputObjectReq_template(template_sel other_value);
+SelectInputObjectReq_template(const SelectInputObjectReq& other_value);
+SelectInputObjectReq_template(const OPTIONAL<SelectInputObjectReq>& other_value);
+SelectInputObjectReq_template(const SelectInputObjectReq_template& other_value);
+~SelectInputObjectReq_template();
+SelectInputObjectReq_template& operator=(template_sel other_value);
+SelectInputObjectReq_template& operator=(const SelectInputObjectReq& other_value);
+SelectInputObjectReq_template& operator=(const OPTIONAL<SelectInputObjectReq>& other_value);
+SelectInputObjectReq_template& operator=(const SelectInputObjectReq_template& other_value);
+boolean match(const SelectInputObjectReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SelectInputObjectReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SelectInputObjectReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectID();
+const INTEGER_template& objectID() const;
+e__SelectInputObjectReq__Option_template& option();
+const e__SelectInputObjectReq__Option_template& option() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const SelectInputObjectReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class e__SelectInputObjectRes__Response : public Base_Type { // enum
+friend class e__SelectInputObjectRes__Response_template;
+public:
+enum enum_type { objectReferencedByObjectIDisNotSelectedOrObjectIDisTheNULLobject = 0, objectReferencedByObjectIDisSelected = 1, objectReferencedByObjectIDisOpenedForEdit = 2, UNKNOWN_VALUE = 3, UNBOUND_VALUE = 4 };
+private:
+enum_type enum_value;
+
+public:
+e__SelectInputObjectRes__Response();
+e__SelectInputObjectRes__Response(int other_value);
+e__SelectInputObjectRes__Response(enum_type other_value);
+e__SelectInputObjectRes__Response(const e__SelectInputObjectRes__Response& other_value);
+
+e__SelectInputObjectRes__Response& operator=(int other_value);
+e__SelectInputObjectRes__Response& operator=(enum_type other_value);
+e__SelectInputObjectRes__Response& operator=(const e__SelectInputObjectRes__Response& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const e__SelectInputObjectRes__Response& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const e__SelectInputObjectRes__Response& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const e__SelectInputObjectRes__Response& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const e__SelectInputObjectRes__Response& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const e__SelectInputObjectRes__Response& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const e__SelectInputObjectRes__Response& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const e__SelectInputObjectRes__Response& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class e__SelectInputObjectRes__Response_template : public Base_Template {
+union {
+e__SelectInputObjectRes__Response::enum_type single_value;
+struct {
+unsigned int n_values;
+e__SelectInputObjectRes__Response_template *list_value;
+} value_list;
+};
+
+void copy_template(const e__SelectInputObjectRes__Response_template& other_value);
+
+public:
+e__SelectInputObjectRes__Response_template();
+e__SelectInputObjectRes__Response_template(template_sel other_value);
+e__SelectInputObjectRes__Response_template(int other_value);
+e__SelectInputObjectRes__Response_template(e__SelectInputObjectRes__Response::enum_type other_value);
+e__SelectInputObjectRes__Response_template(const e__SelectInputObjectRes__Response& other_value);
+e__SelectInputObjectRes__Response_template(const OPTIONAL<e__SelectInputObjectRes__Response>& other_value);
+e__SelectInputObjectRes__Response_template(const e__SelectInputObjectRes__Response_template& other_value);
+~e__SelectInputObjectRes__Response_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+e__SelectInputObjectRes__Response_template& operator=(template_sel other_value);
+e__SelectInputObjectRes__Response_template& operator=(int other_value);
+e__SelectInputObjectRes__Response_template& operator=(e__SelectInputObjectRes__Response::enum_type other_value);
+e__SelectInputObjectRes__Response_template& operator=(const e__SelectInputObjectRes__Response& other_value);
+e__SelectInputObjectRes__Response_template& operator=(const OPTIONAL<e__SelectInputObjectRes__Response>& other_value);
+e__SelectInputObjectRes__Response_template& operator=(const e__SelectInputObjectRes__Response_template& other_value);
+
+boolean match(e__SelectInputObjectRes__Response::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const e__SelectInputObjectRes__Response& other_value, boolean legacy = FALSE) const;
+e__SelectInputObjectRes__Response::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+e__SelectInputObjectRes__Response_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const e__SelectInputObjectRes__Response& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class SelectInputObjectRes__errorCodes : public Base_Type {
+  BOOLEAN field_objectIsDisabled;
+  BOOLEAN field_invalidObjectID;
+  BOOLEAN field_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer;
+  BOOLEAN field_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld;
+  BOOLEAN field_anyOtherError;
+  BOOLEAN field_reserved5;
+  BOOLEAN field_reserved6;
+  BOOLEAN field_reserved7;
+public:
+  SelectInputObjectRes__errorCodes();
+  SelectInputObjectRes__errorCodes(const BOOLEAN& par_objectIsDisabled,
+    const BOOLEAN& par_invalidObjectID,
+    const BOOLEAN& par_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer,
+    const BOOLEAN& par_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7);
+  SelectInputObjectRes__errorCodes(const SelectInputObjectRes__errorCodes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SelectInputObjectRes__errorCodes& operator=(const SelectInputObjectRes__errorCodes& other_value);
+  boolean operator==(const SelectInputObjectRes__errorCodes& other_value) const;
+  inline boolean operator!=(const SelectInputObjectRes__errorCodes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& objectIsDisabled()
+    {return field_objectIsDisabled;}
+  inline const BOOLEAN& objectIsDisabled() const
+    {return field_objectIsDisabled;}
+  inline BOOLEAN& invalidObjectID()
+    {return field_invalidObjectID;}
+  inline const BOOLEAN& invalidObjectID() const
+    {return field_invalidObjectID;}
+  inline BOOLEAN& objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer()
+    {return field_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer;}
+  inline const BOOLEAN& objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer() const
+    {return field_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer;}
+  inline BOOLEAN& couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld()
+    {return field_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld;}
+  inline const BOOLEAN& couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld() const
+    {return field_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld;}
+  inline BOOLEAN& anyOtherError()
+    {return field_anyOtherError;}
+  inline const BOOLEAN& anyOtherError() const
+    {return field_anyOtherError;}
+  inline BOOLEAN& reserved5()
+    {return field_reserved5;}
+  inline const BOOLEAN& reserved5() const
+    {return field_reserved5;}
+  inline BOOLEAN& reserved6()
+    {return field_reserved6;}
+  inline const BOOLEAN& reserved6() const
+    {return field_reserved6;}
+  inline BOOLEAN& reserved7()
+    {return field_reserved7;}
+  inline const BOOLEAN& reserved7() const
+    {return field_reserved7;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class SelectInputObjectRes__errorCodes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SelectInputObjectRes__errorCodes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SelectInputObjectRes__errorCodes& other_value);
+void copy_template(const SelectInputObjectRes__errorCodes_template& other_value);
+
+public:
+SelectInputObjectRes__errorCodes_template();
+SelectInputObjectRes__errorCodes_template(template_sel other_value);
+SelectInputObjectRes__errorCodes_template(const SelectInputObjectRes__errorCodes& other_value);
+SelectInputObjectRes__errorCodes_template(const OPTIONAL<SelectInputObjectRes__errorCodes>& other_value);
+SelectInputObjectRes__errorCodes_template(const SelectInputObjectRes__errorCodes_template& other_value);
+~SelectInputObjectRes__errorCodes_template();
+SelectInputObjectRes__errorCodes_template& operator=(template_sel other_value);
+SelectInputObjectRes__errorCodes_template& operator=(const SelectInputObjectRes__errorCodes& other_value);
+SelectInputObjectRes__errorCodes_template& operator=(const OPTIONAL<SelectInputObjectRes__errorCodes>& other_value);
+SelectInputObjectRes__errorCodes_template& operator=(const SelectInputObjectRes__errorCodes_template& other_value);
+boolean match(const SelectInputObjectRes__errorCodes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SelectInputObjectRes__errorCodes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SelectInputObjectRes__errorCodes_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& objectIsDisabled();
+const BOOLEAN_template& objectIsDisabled() const;
+BOOLEAN_template& invalidObjectID();
+const BOOLEAN_template& invalidObjectID() const;
+BOOLEAN_template& objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer();
+const BOOLEAN_template& objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer() const;
+BOOLEAN_template& couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld();
+const BOOLEAN_template& couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld() const;
+BOOLEAN_template& anyOtherError();
+const BOOLEAN_template& anyOtherError() const;
+BOOLEAN_template& reserved5();
+const BOOLEAN_template& reserved5() const;
+BOOLEAN_template& reserved6();
+const BOOLEAN_template& reserved6() const;
+BOOLEAN_template& reserved7();
+const BOOLEAN_template& reserved7() const;
+int size_of() const;
+void log() const;
+void log_match(const SelectInputObjectRes__errorCodes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SelectInputObjectRes : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectID;
+  e__SelectInputObjectRes__Response field_response;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  SelectInputObjectRes();
+  SelectInputObjectRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const e__SelectInputObjectRes__Response& par_response,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  SelectInputObjectRes(const SelectInputObjectRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SelectInputObjectRes& operator=(const SelectInputObjectRes& other_value);
+  boolean operator==(const SelectInputObjectRes& other_value) const;
+  inline boolean operator!=(const SelectInputObjectRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectID()
+    {return field_objectID;}
+  inline const INTEGER& objectID() const
+    {return field_objectID;}
+  inline e__SelectInputObjectRes__Response& response()
+    {return field_response;}
+  inline const e__SelectInputObjectRes__Response& response() const
+    {return field_response;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 7;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class SelectInputObjectRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SelectInputObjectRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SelectInputObjectRes& other_value);
+void copy_template(const SelectInputObjectRes_template& other_value);
+
+public:
+SelectInputObjectRes_template();
+SelectInputObjectRes_template(template_sel other_value);
+SelectInputObjectRes_template(const SelectInputObjectRes& other_value);
+SelectInputObjectRes_template(const OPTIONAL<SelectInputObjectRes>& other_value);
+SelectInputObjectRes_template(const SelectInputObjectRes_template& other_value);
+~SelectInputObjectRes_template();
+SelectInputObjectRes_template& operator=(template_sel other_value);
+SelectInputObjectRes_template& operator=(const SelectInputObjectRes& other_value);
+SelectInputObjectRes_template& operator=(const OPTIONAL<SelectInputObjectRes>& other_value);
+SelectInputObjectRes_template& operator=(const SelectInputObjectRes_template& other_value);
+boolean match(const SelectInputObjectRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SelectInputObjectRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SelectInputObjectRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectID();
+const INTEGER_template& objectID() const;
+e__SelectInputObjectRes__Response_template& response();
+const e__SelectInputObjectRes__Response_template& response() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const SelectInputObjectRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ControlAudioSignalReq : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_activations;
+  INTEGER field_frequencyInHz;
+  INTEGER field_onTimeDuration__ms;
+  INTEGER field_offTimeDuration__ms;
+public:
+  ControlAudioSignalReq();
+  ControlAudioSignalReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_activations,
+    const INTEGER& par_frequencyInHz,
+    const INTEGER& par_onTimeDuration__ms,
+    const INTEGER& par_offTimeDuration__ms);
+  ControlAudioSignalReq(const ControlAudioSignalReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ControlAudioSignalReq& operator=(const ControlAudioSignalReq& other_value);
+  boolean operator==(const ControlAudioSignalReq& other_value) const;
+  inline boolean operator!=(const ControlAudioSignalReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& activations()
+    {return field_activations;}
+  inline const INTEGER& activations() const
+    {return field_activations;}
+  inline INTEGER& frequencyInHz()
+    {return field_frequencyInHz;}
+  inline const INTEGER& frequencyInHz() const
+    {return field_frequencyInHz;}
+  inline INTEGER& onTimeDuration__ms()
+    {return field_onTimeDuration__ms;}
+  inline const INTEGER& onTimeDuration__ms() const
+    {return field_onTimeDuration__ms;}
+  inline INTEGER& offTimeDuration__ms()
+    {return field_offTimeDuration__ms;}
+  inline const INTEGER& offTimeDuration__ms() const
+    {return field_offTimeDuration__ms;}
+  inline int size_of() const
+    {return 5;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ControlAudioSignalReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ControlAudioSignalReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ControlAudioSignalReq& other_value);
+void copy_template(const ControlAudioSignalReq_template& other_value);
+
+public:
+ControlAudioSignalReq_template();
+ControlAudioSignalReq_template(template_sel other_value);
+ControlAudioSignalReq_template(const ControlAudioSignalReq& other_value);
+ControlAudioSignalReq_template(const OPTIONAL<ControlAudioSignalReq>& other_value);
+ControlAudioSignalReq_template(const ControlAudioSignalReq_template& other_value);
+~ControlAudioSignalReq_template();
+ControlAudioSignalReq_template& operator=(template_sel other_value);
+ControlAudioSignalReq_template& operator=(const ControlAudioSignalReq& other_value);
+ControlAudioSignalReq_template& operator=(const OPTIONAL<ControlAudioSignalReq>& other_value);
+ControlAudioSignalReq_template& operator=(const ControlAudioSignalReq_template& other_value);
+boolean match(const ControlAudioSignalReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ControlAudioSignalReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ControlAudioSignalReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& activations();
+const INTEGER_template& activations() const;
+INTEGER_template& frequencyInHz();
+const INTEGER_template& frequencyInHz() const;
+INTEGER_template& onTimeDuration__ms();
+const INTEGER_template& onTimeDuration__ms() const;
+INTEGER_template& offTimeDuration__ms();
+const INTEGER_template& offTimeDuration__ms() const;
+int size_of() const;
+void log() const;
+void log_match(const ControlAudioSignalReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class e__ControlAudioSignalRes__ErrorCodes : public Base_Type { // enum
+friend class e__ControlAudioSignalRes__ErrorCodes_template;
+public:
+enum enum_type { audioDeviceIsBusy = 0, undefined = 1, objectReferencedByObjectIDisOpenedForEdit = 2, UNKNOWN_VALUE = 3, UNBOUND_VALUE = 4 };
+private:
+enum_type enum_value;
+
+public:
+e__ControlAudioSignalRes__ErrorCodes();
+e__ControlAudioSignalRes__ErrorCodes(int other_value);
+e__ControlAudioSignalRes__ErrorCodes(enum_type other_value);
+e__ControlAudioSignalRes__ErrorCodes(const e__ControlAudioSignalRes__ErrorCodes& other_value);
+
+e__ControlAudioSignalRes__ErrorCodes& operator=(int other_value);
+e__ControlAudioSignalRes__ErrorCodes& operator=(enum_type other_value);
+e__ControlAudioSignalRes__ErrorCodes& operator=(const e__ControlAudioSignalRes__ErrorCodes& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const e__ControlAudioSignalRes__ErrorCodes& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const e__ControlAudioSignalRes__ErrorCodes& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const e__ControlAudioSignalRes__ErrorCodes& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const e__ControlAudioSignalRes__ErrorCodes& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const e__ControlAudioSignalRes__ErrorCodes& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const e__ControlAudioSignalRes__ErrorCodes& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const e__ControlAudioSignalRes__ErrorCodes& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class e__ControlAudioSignalRes__ErrorCodes_template : public Base_Template {
+union {
+e__ControlAudioSignalRes__ErrorCodes::enum_type single_value;
+struct {
+unsigned int n_values;
+e__ControlAudioSignalRes__ErrorCodes_template *list_value;
+} value_list;
+};
+
+void copy_template(const e__ControlAudioSignalRes__ErrorCodes_template& other_value);
+
+public:
+e__ControlAudioSignalRes__ErrorCodes_template();
+e__ControlAudioSignalRes__ErrorCodes_template(template_sel other_value);
+e__ControlAudioSignalRes__ErrorCodes_template(int other_value);
+e__ControlAudioSignalRes__ErrorCodes_template(e__ControlAudioSignalRes__ErrorCodes::enum_type other_value);
+e__ControlAudioSignalRes__ErrorCodes_template(const e__ControlAudioSignalRes__ErrorCodes& other_value);
+e__ControlAudioSignalRes__ErrorCodes_template(const OPTIONAL<e__ControlAudioSignalRes__ErrorCodes>& other_value);
+e__ControlAudioSignalRes__ErrorCodes_template(const e__ControlAudioSignalRes__ErrorCodes_template& other_value);
+~e__ControlAudioSignalRes__ErrorCodes_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+e__ControlAudioSignalRes__ErrorCodes_template& operator=(template_sel other_value);
+e__ControlAudioSignalRes__ErrorCodes_template& operator=(int other_value);
+e__ControlAudioSignalRes__ErrorCodes_template& operator=(e__ControlAudioSignalRes__ErrorCodes::enum_type other_value);
+e__ControlAudioSignalRes__ErrorCodes_template& operator=(const e__ControlAudioSignalRes__ErrorCodes& other_value);
+e__ControlAudioSignalRes__ErrorCodes_template& operator=(const OPTIONAL<e__ControlAudioSignalRes__ErrorCodes>& other_value);
+e__ControlAudioSignalRes__ErrorCodes_template& operator=(const e__ControlAudioSignalRes__ErrorCodes_template& other_value);
+
+boolean match(e__ControlAudioSignalRes__ErrorCodes::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const e__ControlAudioSignalRes__ErrorCodes& other_value, boolean legacy = FALSE) const;
+e__ControlAudioSignalRes__ErrorCodes::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+e__ControlAudioSignalRes__ErrorCodes_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const e__ControlAudioSignalRes__ErrorCodes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class ControlAudioSignalRes__ErrorCodes : public Base_Type {
+  BOOLEAN field_audioDeviceIsBusy;
+  BOOLEAN field_undefined1;
+  BOOLEAN field_undefined2;
+  BOOLEAN field_undefined3;
+  BOOLEAN field_anyOtherError;
+  BOOLEAN field_reserved5;
+  BOOLEAN field_reserved6;
+  BOOLEAN field_reserved7;
+public:
+  ControlAudioSignalRes__ErrorCodes();
+  ControlAudioSignalRes__ErrorCodes(const BOOLEAN& par_audioDeviceIsBusy,
+    const BOOLEAN& par_undefined1,
+    const BOOLEAN& par_undefined2,
+    const BOOLEAN& par_undefined3,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7);
+  ControlAudioSignalRes__ErrorCodes(const ControlAudioSignalRes__ErrorCodes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ControlAudioSignalRes__ErrorCodes& operator=(const ControlAudioSignalRes__ErrorCodes& other_value);
+  boolean operator==(const ControlAudioSignalRes__ErrorCodes& other_value) const;
+  inline boolean operator!=(const ControlAudioSignalRes__ErrorCodes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& audioDeviceIsBusy()
+    {return field_audioDeviceIsBusy;}
+  inline const BOOLEAN& audioDeviceIsBusy() const
+    {return field_audioDeviceIsBusy;}
+  inline BOOLEAN& undefined1()
+    {return field_undefined1;}
+  inline const BOOLEAN& undefined1() const
+    {return field_undefined1;}
+  inline BOOLEAN& undefined2()
+    {return field_undefined2;}
+  inline const BOOLEAN& undefined2() const
+    {return field_undefined2;}
+  inline BOOLEAN& undefined3()
+    {return field_undefined3;}
+  inline const BOOLEAN& undefined3() const
+    {return field_undefined3;}
+  inline BOOLEAN& anyOtherError()
+    {return field_anyOtherError;}
+  inline const BOOLEAN& anyOtherError() const
+    {return field_anyOtherError;}
+  inline BOOLEAN& reserved5()
+    {return field_reserved5;}
+  inline const BOOLEAN& reserved5() const
+    {return field_reserved5;}
+  inline BOOLEAN& reserved6()
+    {return field_reserved6;}
+  inline const BOOLEAN& reserved6() const
+    {return field_reserved6;}
+  inline BOOLEAN& reserved7()
+    {return field_reserved7;}
+  inline const BOOLEAN& reserved7() const
+    {return field_reserved7;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ControlAudioSignalRes__ErrorCodes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ControlAudioSignalRes__ErrorCodes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ControlAudioSignalRes__ErrorCodes& other_value);
+void copy_template(const ControlAudioSignalRes__ErrorCodes_template& other_value);
+
+public:
+ControlAudioSignalRes__ErrorCodes_template();
+ControlAudioSignalRes__ErrorCodes_template(template_sel other_value);
+ControlAudioSignalRes__ErrorCodes_template(const ControlAudioSignalRes__ErrorCodes& other_value);
+ControlAudioSignalRes__ErrorCodes_template(const OPTIONAL<ControlAudioSignalRes__ErrorCodes>& other_value);
+ControlAudioSignalRes__ErrorCodes_template(const ControlAudioSignalRes__ErrorCodes_template& other_value);
+~ControlAudioSignalRes__ErrorCodes_template();
+ControlAudioSignalRes__ErrorCodes_template& operator=(template_sel other_value);
+ControlAudioSignalRes__ErrorCodes_template& operator=(const ControlAudioSignalRes__ErrorCodes& other_value);
+ControlAudioSignalRes__ErrorCodes_template& operator=(const OPTIONAL<ControlAudioSignalRes__ErrorCodes>& other_value);
+ControlAudioSignalRes__ErrorCodes_template& operator=(const ControlAudioSignalRes__ErrorCodes_template& other_value);
+boolean match(const ControlAudioSignalRes__ErrorCodes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ControlAudioSignalRes__ErrorCodes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ControlAudioSignalRes__ErrorCodes_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& audioDeviceIsBusy();
+const BOOLEAN_template& audioDeviceIsBusy() const;
+BOOLEAN_template& undefined1();
+const BOOLEAN_template& undefined1() const;
+BOOLEAN_template& undefined2();
+const BOOLEAN_template& undefined2() const;
+BOOLEAN_template& undefined3();
+const BOOLEAN_template& undefined3() const;
+BOOLEAN_template& anyOtherError();
+const BOOLEAN_template& anyOtherError() const;
+BOOLEAN_template& reserved5();
+const BOOLEAN_template& reserved5() const;
+BOOLEAN_template& reserved6();
+const BOOLEAN_template& reserved6() const;
+BOOLEAN_template& reserved7();
+const BOOLEAN_template& reserved7() const;
+int size_of() const;
+void log() const;
+void log_match(const ControlAudioSignalRes__ErrorCodes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ControlAudioSignalRes : public Base_Type {
+  INTEGER field_vtfunction;
+  ControlAudioSignalRes__ErrorCodes field_errorCodes;
+  OCTETSTRING field_reserved3;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  ControlAudioSignalRes();
+  ControlAudioSignalRes(const INTEGER& par_vtfunction,
+    const ControlAudioSignalRes__ErrorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  ControlAudioSignalRes(const ControlAudioSignalRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ControlAudioSignalRes& operator=(const ControlAudioSignalRes& other_value);
+  boolean operator==(const ControlAudioSignalRes& other_value) const;
+  inline boolean operator!=(const ControlAudioSignalRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline ControlAudioSignalRes__ErrorCodes& errorCodes()
+    {return field_errorCodes;}
+  inline const ControlAudioSignalRes__ErrorCodes& errorCodes() const
+    {return field_errorCodes;}
+  inline OCTETSTRING& reserved3()
+    {return field_reserved3;}
+  inline const OCTETSTRING& reserved3() const
+    {return field_reserved3;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ControlAudioSignalRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ControlAudioSignalRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ControlAudioSignalRes& other_value);
+void copy_template(const ControlAudioSignalRes_template& other_value);
+
+public:
+ControlAudioSignalRes_template();
+ControlAudioSignalRes_template(template_sel other_value);
+ControlAudioSignalRes_template(const ControlAudioSignalRes& other_value);
+ControlAudioSignalRes_template(const OPTIONAL<ControlAudioSignalRes>& other_value);
+ControlAudioSignalRes_template(const ControlAudioSignalRes_template& other_value);
+~ControlAudioSignalRes_template();
+ControlAudioSignalRes_template& operator=(template_sel other_value);
+ControlAudioSignalRes_template& operator=(const ControlAudioSignalRes& other_value);
+ControlAudioSignalRes_template& operator=(const OPTIONAL<ControlAudioSignalRes>& other_value);
+ControlAudioSignalRes_template& operator=(const ControlAudioSignalRes_template& other_value);
+boolean match(const ControlAudioSignalRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ControlAudioSignalRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ControlAudioSignalRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+ControlAudioSignalRes__ErrorCodes_template& errorCodes();
+const ControlAudioSignalRes__ErrorCodes_template& errorCodes() const;
+OCTETSTRING_template& reserved3();
+const OCTETSTRING_template& reserved3() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const ControlAudioSignalRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SetAudioVolumeReq : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_volumeInPercent;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  SetAudioVolumeReq();
+  SetAudioVolumeReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_volumeInPercent,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  SetAudioVolumeReq(const SetAudioVolumeReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SetAudioVolumeReq& operator=(const SetAudioVolumeReq& other_value);
+  boolean operator==(const SetAudioVolumeReq& other_value) const;
+  inline boolean operator!=(const SetAudioVolumeReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& volumeInPercent()
+    {return field_volumeInPercent;}
+  inline const INTEGER& volumeInPercent() const
+    {return field_volumeInPercent;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 7;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class SetAudioVolumeReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SetAudioVolumeReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SetAudioVolumeReq& other_value);
+void copy_template(const SetAudioVolumeReq_template& other_value);
+
+public:
+SetAudioVolumeReq_template();
+SetAudioVolumeReq_template(template_sel other_value);
+SetAudioVolumeReq_template(const SetAudioVolumeReq& other_value);
+SetAudioVolumeReq_template(const OPTIONAL<SetAudioVolumeReq>& other_value);
+SetAudioVolumeReq_template(const SetAudioVolumeReq_template& other_value);
+~SetAudioVolumeReq_template();
+SetAudioVolumeReq_template& operator=(template_sel other_value);
+SetAudioVolumeReq_template& operator=(const SetAudioVolumeReq& other_value);
+SetAudioVolumeReq_template& operator=(const OPTIONAL<SetAudioVolumeReq>& other_value);
+SetAudioVolumeReq_template& operator=(const SetAudioVolumeReq_template& other_value);
+boolean match(const SetAudioVolumeReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SetAudioVolumeReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SetAudioVolumeReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& volumeInPercent();
+const INTEGER_template& volumeInPercent() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const SetAudioVolumeReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SetAudioVolumeErrorCodes : public Base_Type {
+  BOOLEAN field_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting;
+  BOOLEAN field_CommandIsNotSupported;
+  BOOLEAN field_reserved2;
+  BOOLEAN field_reserved3;
+  BOOLEAN field_anyOtherError;
+  BOOLEAN field_reserved5;
+  BOOLEAN field_reserved6;
+  BOOLEAN field_reserved7;
+public:
+  SetAudioVolumeErrorCodes();
+  SetAudioVolumeErrorCodes(const BOOLEAN& par_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting,
+    const BOOLEAN& par_CommandIsNotSupported,
+    const BOOLEAN& par_reserved2,
+    const BOOLEAN& par_reserved3,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7);
+  SetAudioVolumeErrorCodes(const SetAudioVolumeErrorCodes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SetAudioVolumeErrorCodes& operator=(const SetAudioVolumeErrorCodes& other_value);
+  boolean operator==(const SetAudioVolumeErrorCodes& other_value) const;
+  inline boolean operator!=(const SetAudioVolumeErrorCodes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& AudioDeviceIsBusySubsequentCommandsUseTheNewSetting()
+    {return field_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting;}
+  inline const BOOLEAN& AudioDeviceIsBusySubsequentCommandsUseTheNewSetting() const
+    {return field_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting;}
+  inline BOOLEAN& CommandIsNotSupported()
+    {return field_CommandIsNotSupported;}
+  inline const BOOLEAN& CommandIsNotSupported() const
+    {return field_CommandIsNotSupported;}
+  inline BOOLEAN& reserved2()
+    {return field_reserved2;}
+  inline const BOOLEAN& reserved2() const
+    {return field_reserved2;}
+  inline BOOLEAN& reserved3()
+    {return field_reserved3;}
+  inline const BOOLEAN& reserved3() const
+    {return field_reserved3;}
+  inline BOOLEAN& anyOtherError()
+    {return field_anyOtherError;}
+  inline const BOOLEAN& anyOtherError() const
+    {return field_anyOtherError;}
+  inline BOOLEAN& reserved5()
+    {return field_reserved5;}
+  inline const BOOLEAN& reserved5() const
+    {return field_reserved5;}
+  inline BOOLEAN& reserved6()
+    {return field_reserved6;}
+  inline const BOOLEAN& reserved6() const
+    {return field_reserved6;}
+  inline BOOLEAN& reserved7()
+    {return field_reserved7;}
+  inline const BOOLEAN& reserved7() const
+    {return field_reserved7;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class SetAudioVolumeErrorCodes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SetAudioVolumeErrorCodes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SetAudioVolumeErrorCodes& other_value);
+void copy_template(const SetAudioVolumeErrorCodes_template& other_value);
+
+public:
+SetAudioVolumeErrorCodes_template();
+SetAudioVolumeErrorCodes_template(template_sel other_value);
+SetAudioVolumeErrorCodes_template(const SetAudioVolumeErrorCodes& other_value);
+SetAudioVolumeErrorCodes_template(const OPTIONAL<SetAudioVolumeErrorCodes>& other_value);
+SetAudioVolumeErrorCodes_template(const SetAudioVolumeErrorCodes_template& other_value);
+~SetAudioVolumeErrorCodes_template();
+SetAudioVolumeErrorCodes_template& operator=(template_sel other_value);
+SetAudioVolumeErrorCodes_template& operator=(const SetAudioVolumeErrorCodes& other_value);
+SetAudioVolumeErrorCodes_template& operator=(const OPTIONAL<SetAudioVolumeErrorCodes>& other_value);
+SetAudioVolumeErrorCodes_template& operator=(const SetAudioVolumeErrorCodes_template& other_value);
+boolean match(const SetAudioVolumeErrorCodes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SetAudioVolumeErrorCodes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SetAudioVolumeErrorCodes_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& AudioDeviceIsBusySubsequentCommandsUseTheNewSetting();
+const BOOLEAN_template& AudioDeviceIsBusySubsequentCommandsUseTheNewSetting() const;
+BOOLEAN_template& CommandIsNotSupported();
+const BOOLEAN_template& CommandIsNotSupported() const;
+BOOLEAN_template& reserved2();
+const BOOLEAN_template& reserved2() const;
+BOOLEAN_template& reserved3();
+const BOOLEAN_template& reserved3() const;
+BOOLEAN_template& anyOtherError();
+const BOOLEAN_template& anyOtherError() const;
+BOOLEAN_template& reserved5();
+const BOOLEAN_template& reserved5() const;
+BOOLEAN_template& reserved6();
+const BOOLEAN_template& reserved6() const;
+BOOLEAN_template& reserved7();
+const BOOLEAN_template& reserved7() const;
+int size_of() const;
+void log() const;
+void log_match(const SetAudioVolumeErrorCodes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SetAudioVolumeRes : public Base_Type {
+  INTEGER field_vtfunction;
+  SetAudioVolumeErrorCodes field_errorCodes;
+  OCTETSTRING field_reserved3;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  SetAudioVolumeRes();
+  SetAudioVolumeRes(const INTEGER& par_vtfunction,
+    const SetAudioVolumeErrorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  SetAudioVolumeRes(const SetAudioVolumeRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SetAudioVolumeRes& operator=(const SetAudioVolumeRes& other_value);
+  boolean operator==(const SetAudioVolumeRes& other_value) const;
+  inline boolean operator!=(const SetAudioVolumeRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline SetAudioVolumeErrorCodes& errorCodes()
+    {return field_errorCodes;}
+  inline const SetAudioVolumeErrorCodes& errorCodes() const
+    {return field_errorCodes;}
+  inline OCTETSTRING& reserved3()
+    {return field_reserved3;}
+  inline const OCTETSTRING& reserved3() const
+    {return field_reserved3;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class SetAudioVolumeRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SetAudioVolumeRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SetAudioVolumeRes& other_value);
+void copy_template(const SetAudioVolumeRes_template& other_value);
+
+public:
+SetAudioVolumeRes_template();
+SetAudioVolumeRes_template(template_sel other_value);
+SetAudioVolumeRes_template(const SetAudioVolumeRes& other_value);
+SetAudioVolumeRes_template(const OPTIONAL<SetAudioVolumeRes>& other_value);
+SetAudioVolumeRes_template(const SetAudioVolumeRes_template& other_value);
+~SetAudioVolumeRes_template();
+SetAudioVolumeRes_template& operator=(template_sel other_value);
+SetAudioVolumeRes_template& operator=(const SetAudioVolumeRes& other_value);
+SetAudioVolumeRes_template& operator=(const OPTIONAL<SetAudioVolumeRes>& other_value);
+SetAudioVolumeRes_template& operator=(const SetAudioVolumeRes_template& other_value);
+boolean match(const SetAudioVolumeRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SetAudioVolumeRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SetAudioVolumeRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+SetAudioVolumeErrorCodes_template& errorCodes();
+const SetAudioVolumeErrorCodes_template& errorCodes() const;
+OCTETSTRING_template& reserved3();
+const OCTETSTRING_template& reserved3() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const SetAudioVolumeRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangeChildLocationReq : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_parentObjectID;
+  INTEGER field_objectIDofObjectToMove;
+  INTEGER field_relativeChangeInXposition;
+  INTEGER field_relativeChangeInYposition;
+  OCTETSTRING field_reserved8;
+public:
+  ChangeChildLocationReq();
+  ChangeChildLocationReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_parentObjectID,
+    const INTEGER& par_objectIDofObjectToMove,
+    const INTEGER& par_relativeChangeInXposition,
+    const INTEGER& par_relativeChangeInYposition,
+    const OCTETSTRING& par_reserved8);
+  ChangeChildLocationReq(const ChangeChildLocationReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangeChildLocationReq& operator=(const ChangeChildLocationReq& other_value);
+  boolean operator==(const ChangeChildLocationReq& other_value) const;
+  inline boolean operator!=(const ChangeChildLocationReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& parentObjectID()
+    {return field_parentObjectID;}
+  inline const INTEGER& parentObjectID() const
+    {return field_parentObjectID;}
+  inline INTEGER& objectIDofObjectToMove()
+    {return field_objectIDofObjectToMove;}
+  inline const INTEGER& objectIDofObjectToMove() const
+    {return field_objectIDofObjectToMove;}
+  inline INTEGER& relativeChangeInXposition()
+    {return field_relativeChangeInXposition;}
+  inline const INTEGER& relativeChangeInXposition() const
+    {return field_relativeChangeInXposition;}
+  inline INTEGER& relativeChangeInYposition()
+    {return field_relativeChangeInYposition;}
+  inline const INTEGER& relativeChangeInYposition() const
+    {return field_relativeChangeInYposition;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 6;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangeChildLocationReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangeChildLocationReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangeChildLocationReq& other_value);
+void copy_template(const ChangeChildLocationReq_template& other_value);
+
+public:
+ChangeChildLocationReq_template();
+ChangeChildLocationReq_template(template_sel other_value);
+ChangeChildLocationReq_template(const ChangeChildLocationReq& other_value);
+ChangeChildLocationReq_template(const OPTIONAL<ChangeChildLocationReq>& other_value);
+ChangeChildLocationReq_template(const ChangeChildLocationReq_template& other_value);
+~ChangeChildLocationReq_template();
+ChangeChildLocationReq_template& operator=(template_sel other_value);
+ChangeChildLocationReq_template& operator=(const ChangeChildLocationReq& other_value);
+ChangeChildLocationReq_template& operator=(const OPTIONAL<ChangeChildLocationReq>& other_value);
+ChangeChildLocationReq_template& operator=(const ChangeChildLocationReq_template& other_value);
+boolean match(const ChangeChildLocationReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangeChildLocationReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangeChildLocationReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& parentObjectID();
+const INTEGER_template& parentObjectID() const;
+INTEGER_template& objectIDofObjectToMove();
+const INTEGER_template& objectIDofObjectToMove() const;
+INTEGER_template& relativeChangeInXposition();
+const INTEGER_template& relativeChangeInXposition() const;
+INTEGER_template& relativeChangeInYposition();
+const INTEGER_template& relativeChangeInYposition() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangeChildLocationReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangeChildLocationRes__errorCodes : public Base_Type {
+  BOOLEAN field_invalidParentObjectID;
+  BOOLEAN field_invalidObjectID;
+  BOOLEAN field_reserved2;
+  BOOLEAN field_reserved3;
+  BOOLEAN field_anyOtherError;
+  BOOLEAN field_reserved5;
+  BOOLEAN field_reserved6;
+  BOOLEAN field_reserved7;
+public:
+  ChangeChildLocationRes__errorCodes();
+  ChangeChildLocationRes__errorCodes(const BOOLEAN& par_invalidParentObjectID,
+    const BOOLEAN& par_invalidObjectID,
+    const BOOLEAN& par_reserved2,
+    const BOOLEAN& par_reserved3,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7);
+  ChangeChildLocationRes__errorCodes(const ChangeChildLocationRes__errorCodes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangeChildLocationRes__errorCodes& operator=(const ChangeChildLocationRes__errorCodes& other_value);
+  boolean operator==(const ChangeChildLocationRes__errorCodes& other_value) const;
+  inline boolean operator!=(const ChangeChildLocationRes__errorCodes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& invalidParentObjectID()
+    {return field_invalidParentObjectID;}
+  inline const BOOLEAN& invalidParentObjectID() const
+    {return field_invalidParentObjectID;}
+  inline BOOLEAN& invalidObjectID()
+    {return field_invalidObjectID;}
+  inline const BOOLEAN& invalidObjectID() const
+    {return field_invalidObjectID;}
+  inline BOOLEAN& reserved2()
+    {return field_reserved2;}
+  inline const BOOLEAN& reserved2() const
+    {return field_reserved2;}
+  inline BOOLEAN& reserved3()
+    {return field_reserved3;}
+  inline const BOOLEAN& reserved3() const
+    {return field_reserved3;}
+  inline BOOLEAN& anyOtherError()
+    {return field_anyOtherError;}
+  inline const BOOLEAN& anyOtherError() const
+    {return field_anyOtherError;}
+  inline BOOLEAN& reserved5()
+    {return field_reserved5;}
+  inline const BOOLEAN& reserved5() const
+    {return field_reserved5;}
+  inline BOOLEAN& reserved6()
+    {return field_reserved6;}
+  inline const BOOLEAN& reserved6() const
+    {return field_reserved6;}
+  inline BOOLEAN& reserved7()
+    {return field_reserved7;}
+  inline const BOOLEAN& reserved7() const
+    {return field_reserved7;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangeChildLocationRes__errorCodes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangeChildLocationRes__errorCodes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangeChildLocationRes__errorCodes& other_value);
+void copy_template(const ChangeChildLocationRes__errorCodes_template& other_value);
+
+public:
+ChangeChildLocationRes__errorCodes_template();
+ChangeChildLocationRes__errorCodes_template(template_sel other_value);
+ChangeChildLocationRes__errorCodes_template(const ChangeChildLocationRes__errorCodes& other_value);
+ChangeChildLocationRes__errorCodes_template(const OPTIONAL<ChangeChildLocationRes__errorCodes>& other_value);
+ChangeChildLocationRes__errorCodes_template(const ChangeChildLocationRes__errorCodes_template& other_value);
+~ChangeChildLocationRes__errorCodes_template();
+ChangeChildLocationRes__errorCodes_template& operator=(template_sel other_value);
+ChangeChildLocationRes__errorCodes_template& operator=(const ChangeChildLocationRes__errorCodes& other_value);
+ChangeChildLocationRes__errorCodes_template& operator=(const OPTIONAL<ChangeChildLocationRes__errorCodes>& other_value);
+ChangeChildLocationRes__errorCodes_template& operator=(const ChangeChildLocationRes__errorCodes_template& other_value);
+boolean match(const ChangeChildLocationRes__errorCodes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangeChildLocationRes__errorCodes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangeChildLocationRes__errorCodes_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& invalidParentObjectID();
+const BOOLEAN_template& invalidParentObjectID() const;
+BOOLEAN_template& invalidObjectID();
+const BOOLEAN_template& invalidObjectID() const;
+BOOLEAN_template& reserved2();
+const BOOLEAN_template& reserved2() const;
+BOOLEAN_template& reserved3();
+const BOOLEAN_template& reserved3() const;
+BOOLEAN_template& anyOtherError();
+const BOOLEAN_template& anyOtherError() const;
+BOOLEAN_template& reserved5();
+const BOOLEAN_template& reserved5() const;
+BOOLEAN_template& reserved6();
+const BOOLEAN_template& reserved6() const;
+BOOLEAN_template& reserved7();
+const BOOLEAN_template& reserved7() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangeChildLocationRes__errorCodes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangeChildLocationRes : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_parentObjectID;
+  INTEGER field_objectIDofObjectToMove;
+  ChangeChildLocationRes__errorCodes field_errorCodes;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  ChangeChildLocationRes();
+  ChangeChildLocationRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_parentObjectID,
+    const INTEGER& par_objectIDofObjectToMove,
+    const ChangeChildLocationRes__errorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  ChangeChildLocationRes(const ChangeChildLocationRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangeChildLocationRes& operator=(const ChangeChildLocationRes& other_value);
+  boolean operator==(const ChangeChildLocationRes& other_value) const;
+  inline boolean operator!=(const ChangeChildLocationRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& parentObjectID()
+    {return field_parentObjectID;}
+  inline const INTEGER& parentObjectID() const
+    {return field_parentObjectID;}
+  inline INTEGER& objectIDofObjectToMove()
+    {return field_objectIDofObjectToMove;}
+  inline const INTEGER& objectIDofObjectToMove() const
+    {return field_objectIDofObjectToMove;}
+  inline ChangeChildLocationRes__errorCodes& errorCodes()
+    {return field_errorCodes;}
+  inline const ChangeChildLocationRes__errorCodes& errorCodes() const
+    {return field_errorCodes;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 6;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangeChildLocationRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangeChildLocationRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangeChildLocationRes& other_value);
+void copy_template(const ChangeChildLocationRes_template& other_value);
+
+public:
+ChangeChildLocationRes_template();
+ChangeChildLocationRes_template(template_sel other_value);
+ChangeChildLocationRes_template(const ChangeChildLocationRes& other_value);
+ChangeChildLocationRes_template(const OPTIONAL<ChangeChildLocationRes>& other_value);
+ChangeChildLocationRes_template(const ChangeChildLocationRes_template& other_value);
+~ChangeChildLocationRes_template();
+ChangeChildLocationRes_template& operator=(template_sel other_value);
+ChangeChildLocationRes_template& operator=(const ChangeChildLocationRes& other_value);
+ChangeChildLocationRes_template& operator=(const OPTIONAL<ChangeChildLocationRes>& other_value);
+ChangeChildLocationRes_template& operator=(const ChangeChildLocationRes_template& other_value);
+boolean match(const ChangeChildLocationRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangeChildLocationRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangeChildLocationRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& parentObjectID();
+const INTEGER_template& parentObjectID() const;
+INTEGER_template& objectIDofObjectToMove();
+const INTEGER_template& objectIDofObjectToMove() const;
+ChangeChildLocationRes__errorCodes_template& errorCodes();
+const ChangeChildLocationRes__errorCodes_template& errorCodes() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangeChildLocationRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangeSizeReq : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectIDofObjectToSize;
+  INTEGER field_newWidth;
+  INTEGER field_newHeight;
+  OCTETSTRING field_reserved8;
+public:
+  ChangeSizeReq();
+  ChangeSizeReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectIDofObjectToSize,
+    const INTEGER& par_newWidth,
+    const INTEGER& par_newHeight,
+    const OCTETSTRING& par_reserved8);
+  ChangeSizeReq(const ChangeSizeReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangeSizeReq& operator=(const ChangeSizeReq& other_value);
+  boolean operator==(const ChangeSizeReq& other_value) const;
+  inline boolean operator!=(const ChangeSizeReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectIDofObjectToSize()
+    {return field_objectIDofObjectToSize;}
+  inline const INTEGER& objectIDofObjectToSize() const
+    {return field_objectIDofObjectToSize;}
+  inline INTEGER& newWidth()
+    {return field_newWidth;}
+  inline const INTEGER& newWidth() const
+    {return field_newWidth;}
+  inline INTEGER& newHeight()
+    {return field_newHeight;}
+  inline const INTEGER& newHeight() const
+    {return field_newHeight;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 5;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangeSizeReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangeSizeReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangeSizeReq& other_value);
+void copy_template(const ChangeSizeReq_template& other_value);
+
+public:
+ChangeSizeReq_template();
+ChangeSizeReq_template(template_sel other_value);
+ChangeSizeReq_template(const ChangeSizeReq& other_value);
+ChangeSizeReq_template(const OPTIONAL<ChangeSizeReq>& other_value);
+ChangeSizeReq_template(const ChangeSizeReq_template& other_value);
+~ChangeSizeReq_template();
+ChangeSizeReq_template& operator=(template_sel other_value);
+ChangeSizeReq_template& operator=(const ChangeSizeReq& other_value);
+ChangeSizeReq_template& operator=(const OPTIONAL<ChangeSizeReq>& other_value);
+ChangeSizeReq_template& operator=(const ChangeSizeReq_template& other_value);
+boolean match(const ChangeSizeReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangeSizeReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangeSizeReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectIDofObjectToSize();
+const INTEGER_template& objectIDofObjectToSize() const;
+INTEGER_template& newWidth();
+const INTEGER_template& newWidth() const;
+INTEGER_template& newHeight();
+const INTEGER_template& newHeight() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangeSizeReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangeSizeRes__errorCodes : public Base_Type {
+  BOOLEAN field_invalidObjectID;
+  BOOLEAN field_reserved1;
+  BOOLEAN field_reserved2;
+  BOOLEAN field_reserved3;
+  BOOLEAN field_anyOtherError;
+  BOOLEAN field_reserved5;
+  BOOLEAN field_reserved6;
+  BOOLEAN field_reserved7;
+public:
+  ChangeSizeRes__errorCodes();
+  ChangeSizeRes__errorCodes(const BOOLEAN& par_invalidObjectID,
+    const BOOLEAN& par_reserved1,
+    const BOOLEAN& par_reserved2,
+    const BOOLEAN& par_reserved3,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7);
+  ChangeSizeRes__errorCodes(const ChangeSizeRes__errorCodes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangeSizeRes__errorCodes& operator=(const ChangeSizeRes__errorCodes& other_value);
+  boolean operator==(const ChangeSizeRes__errorCodes& other_value) const;
+  inline boolean operator!=(const ChangeSizeRes__errorCodes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& invalidObjectID()
+    {return field_invalidObjectID;}
+  inline const BOOLEAN& invalidObjectID() const
+    {return field_invalidObjectID;}
+  inline BOOLEAN& reserved1()
+    {return field_reserved1;}
+  inline const BOOLEAN& reserved1() const
+    {return field_reserved1;}
+  inline BOOLEAN& reserved2()
+    {return field_reserved2;}
+  inline const BOOLEAN& reserved2() const
+    {return field_reserved2;}
+  inline BOOLEAN& reserved3()
+    {return field_reserved3;}
+  inline const BOOLEAN& reserved3() const
+    {return field_reserved3;}
+  inline BOOLEAN& anyOtherError()
+    {return field_anyOtherError;}
+  inline const BOOLEAN& anyOtherError() const
+    {return field_anyOtherError;}
+  inline BOOLEAN& reserved5()
+    {return field_reserved5;}
+  inline const BOOLEAN& reserved5() const
+    {return field_reserved5;}
+  inline BOOLEAN& reserved6()
+    {return field_reserved6;}
+  inline const BOOLEAN& reserved6() const
+    {return field_reserved6;}
+  inline BOOLEAN& reserved7()
+    {return field_reserved7;}
+  inline const BOOLEAN& reserved7() const
+    {return field_reserved7;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangeSizeRes__errorCodes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangeSizeRes__errorCodes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangeSizeRes__errorCodes& other_value);
+void copy_template(const ChangeSizeRes__errorCodes_template& other_value);
+
+public:
+ChangeSizeRes__errorCodes_template();
+ChangeSizeRes__errorCodes_template(template_sel other_value);
+ChangeSizeRes__errorCodes_template(const ChangeSizeRes__errorCodes& other_value);
+ChangeSizeRes__errorCodes_template(const OPTIONAL<ChangeSizeRes__errorCodes>& other_value);
+ChangeSizeRes__errorCodes_template(const ChangeSizeRes__errorCodes_template& other_value);
+~ChangeSizeRes__errorCodes_template();
+ChangeSizeRes__errorCodes_template& operator=(template_sel other_value);
+ChangeSizeRes__errorCodes_template& operator=(const ChangeSizeRes__errorCodes& other_value);
+ChangeSizeRes__errorCodes_template& operator=(const OPTIONAL<ChangeSizeRes__errorCodes>& other_value);
+ChangeSizeRes__errorCodes_template& operator=(const ChangeSizeRes__errorCodes_template& other_value);
+boolean match(const ChangeSizeRes__errorCodes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangeSizeRes__errorCodes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangeSizeRes__errorCodes_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& invalidObjectID();
+const BOOLEAN_template& invalidObjectID() const;
+BOOLEAN_template& reserved1();
+const BOOLEAN_template& reserved1() const;
+BOOLEAN_template& reserved2();
+const BOOLEAN_template& reserved2() const;
+BOOLEAN_template& reserved3();
+const BOOLEAN_template& reserved3() const;
+BOOLEAN_template& anyOtherError();
+const BOOLEAN_template& anyOtherError() const;
+BOOLEAN_template& reserved5();
+const BOOLEAN_template& reserved5() const;
+BOOLEAN_template& reserved6();
+const BOOLEAN_template& reserved6() const;
+BOOLEAN_template& reserved7();
+const BOOLEAN_template& reserved7() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangeSizeRes__errorCodes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangeSizeRes : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectIDofObjectToSize;
+  ChangeSizeRes__errorCodes field_errorCodes;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  ChangeSizeRes();
+  ChangeSizeRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectIDofObjectToSize,
+    const ChangeSizeRes__errorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  ChangeSizeRes(const ChangeSizeRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangeSizeRes& operator=(const ChangeSizeRes& other_value);
+  boolean operator==(const ChangeSizeRes& other_value) const;
+  inline boolean operator!=(const ChangeSizeRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectIDofObjectToSize()
+    {return field_objectIDofObjectToSize;}
+  inline const INTEGER& objectIDofObjectToSize() const
+    {return field_objectIDofObjectToSize;}
+  inline ChangeSizeRes__errorCodes& errorCodes()
+    {return field_errorCodes;}
+  inline const ChangeSizeRes__errorCodes& errorCodes() const
+    {return field_errorCodes;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 7;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangeSizeRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangeSizeRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangeSizeRes& other_value);
+void copy_template(const ChangeSizeRes_template& other_value);
+
+public:
+ChangeSizeRes_template();
+ChangeSizeRes_template(template_sel other_value);
+ChangeSizeRes_template(const ChangeSizeRes& other_value);
+ChangeSizeRes_template(const OPTIONAL<ChangeSizeRes>& other_value);
+ChangeSizeRes_template(const ChangeSizeRes_template& other_value);
+~ChangeSizeRes_template();
+ChangeSizeRes_template& operator=(template_sel other_value);
+ChangeSizeRes_template& operator=(const ChangeSizeRes& other_value);
+ChangeSizeRes_template& operator=(const OPTIONAL<ChangeSizeRes>& other_value);
+ChangeSizeRes_template& operator=(const ChangeSizeRes_template& other_value);
+boolean match(const ChangeSizeRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangeSizeRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangeSizeRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectIDofObjectToSize();
+const INTEGER_template& objectIDofObjectToSize() const;
+ChangeSizeRes__errorCodes_template& errorCodes();
+const ChangeSizeRes__errorCodes_template& errorCodes() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangeSizeRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangeBackgroundColourReq : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectIDofObjectToChange;
+  INTEGER field_newBackgroundColour;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  ChangeBackgroundColourReq();
+  ChangeBackgroundColourReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectIDofObjectToChange,
+    const INTEGER& par_newBackgroundColour,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  ChangeBackgroundColourReq(const ChangeBackgroundColourReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangeBackgroundColourReq& operator=(const ChangeBackgroundColourReq& other_value);
+  boolean operator==(const ChangeBackgroundColourReq& other_value) const;
+  inline boolean operator!=(const ChangeBackgroundColourReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectIDofObjectToChange()
+    {return field_objectIDofObjectToChange;}
+  inline const INTEGER& objectIDofObjectToChange() const
+    {return field_objectIDofObjectToChange;}
+  inline INTEGER& newBackgroundColour()
+    {return field_newBackgroundColour;}
+  inline const INTEGER& newBackgroundColour() const
+    {return field_newBackgroundColour;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 7;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangeBackgroundColourReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangeBackgroundColourReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangeBackgroundColourReq& other_value);
+void copy_template(const ChangeBackgroundColourReq_template& other_value);
+
+public:
+ChangeBackgroundColourReq_template();
+ChangeBackgroundColourReq_template(template_sel other_value);
+ChangeBackgroundColourReq_template(const ChangeBackgroundColourReq& other_value);
+ChangeBackgroundColourReq_template(const OPTIONAL<ChangeBackgroundColourReq>& other_value);
+ChangeBackgroundColourReq_template(const ChangeBackgroundColourReq_template& other_value);
+~ChangeBackgroundColourReq_template();
+ChangeBackgroundColourReq_template& operator=(template_sel other_value);
+ChangeBackgroundColourReq_template& operator=(const ChangeBackgroundColourReq& other_value);
+ChangeBackgroundColourReq_template& operator=(const OPTIONAL<ChangeBackgroundColourReq>& other_value);
+ChangeBackgroundColourReq_template& operator=(const ChangeBackgroundColourReq_template& other_value);
+boolean match(const ChangeBackgroundColourReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangeBackgroundColourReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangeBackgroundColourReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectIDofObjectToChange();
+const INTEGER_template& objectIDofObjectToChange() const;
+INTEGER_template& newBackgroundColour();
+const INTEGER_template& newBackgroundColour() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangeBackgroundColourReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangeBackgroundColourRes__errorCodes : public Base_Type {
+  BOOLEAN field_invalidObjectID;
+  BOOLEAN field_invalidColourCode;
+  BOOLEAN field_reserved2;
+  BOOLEAN field_reserved3;
+  BOOLEAN field_anyOtherError;
+  BOOLEAN field_reserved5;
+  BOOLEAN field_reserved6;
+  BOOLEAN field_reserved7;
+public:
+  ChangeBackgroundColourRes__errorCodes();
+  ChangeBackgroundColourRes__errorCodes(const BOOLEAN& par_invalidObjectID,
+    const BOOLEAN& par_invalidColourCode,
+    const BOOLEAN& par_reserved2,
+    const BOOLEAN& par_reserved3,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7);
+  ChangeBackgroundColourRes__errorCodes(const ChangeBackgroundColourRes__errorCodes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangeBackgroundColourRes__errorCodes& operator=(const ChangeBackgroundColourRes__errorCodes& other_value);
+  boolean operator==(const ChangeBackgroundColourRes__errorCodes& other_value) const;
+  inline boolean operator!=(const ChangeBackgroundColourRes__errorCodes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& invalidObjectID()
+    {return field_invalidObjectID;}
+  inline const BOOLEAN& invalidObjectID() const
+    {return field_invalidObjectID;}
+  inline BOOLEAN& invalidColourCode()
+    {return field_invalidColourCode;}
+  inline const BOOLEAN& invalidColourCode() const
+    {return field_invalidColourCode;}
+  inline BOOLEAN& reserved2()
+    {return field_reserved2;}
+  inline const BOOLEAN& reserved2() const
+    {return field_reserved2;}
+  inline BOOLEAN& reserved3()
+    {return field_reserved3;}
+  inline const BOOLEAN& reserved3() const
+    {return field_reserved3;}
+  inline BOOLEAN& anyOtherError()
+    {return field_anyOtherError;}
+  inline const BOOLEAN& anyOtherError() const
+    {return field_anyOtherError;}
+  inline BOOLEAN& reserved5()
+    {return field_reserved5;}
+  inline const BOOLEAN& reserved5() const
+    {return field_reserved5;}
+  inline BOOLEAN& reserved6()
+    {return field_reserved6;}
+  inline const BOOLEAN& reserved6() const
+    {return field_reserved6;}
+  inline BOOLEAN& reserved7()
+    {return field_reserved7;}
+  inline const BOOLEAN& reserved7() const
+    {return field_reserved7;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangeBackgroundColourRes__errorCodes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangeBackgroundColourRes__errorCodes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangeBackgroundColourRes__errorCodes& other_value);
+void copy_template(const ChangeBackgroundColourRes__errorCodes_template& other_value);
+
+public:
+ChangeBackgroundColourRes__errorCodes_template();
+ChangeBackgroundColourRes__errorCodes_template(template_sel other_value);
+ChangeBackgroundColourRes__errorCodes_template(const ChangeBackgroundColourRes__errorCodes& other_value);
+ChangeBackgroundColourRes__errorCodes_template(const OPTIONAL<ChangeBackgroundColourRes__errorCodes>& other_value);
+ChangeBackgroundColourRes__errorCodes_template(const ChangeBackgroundColourRes__errorCodes_template& other_value);
+~ChangeBackgroundColourRes__errorCodes_template();
+ChangeBackgroundColourRes__errorCodes_template& operator=(template_sel other_value);
+ChangeBackgroundColourRes__errorCodes_template& operator=(const ChangeBackgroundColourRes__errorCodes& other_value);
+ChangeBackgroundColourRes__errorCodes_template& operator=(const OPTIONAL<ChangeBackgroundColourRes__errorCodes>& other_value);
+ChangeBackgroundColourRes__errorCodes_template& operator=(const ChangeBackgroundColourRes__errorCodes_template& other_value);
+boolean match(const ChangeBackgroundColourRes__errorCodes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangeBackgroundColourRes__errorCodes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangeBackgroundColourRes__errorCodes_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& invalidObjectID();
+const BOOLEAN_template& invalidObjectID() const;
+BOOLEAN_template& invalidColourCode();
+const BOOLEAN_template& invalidColourCode() const;
+BOOLEAN_template& reserved2();
+const BOOLEAN_template& reserved2() const;
+BOOLEAN_template& reserved3();
+const BOOLEAN_template& reserved3() const;
+BOOLEAN_template& anyOtherError();
+const BOOLEAN_template& anyOtherError() const;
+BOOLEAN_template& reserved5();
+const BOOLEAN_template& reserved5() const;
+BOOLEAN_template& reserved6();
+const BOOLEAN_template& reserved6() const;
+BOOLEAN_template& reserved7();
+const BOOLEAN_template& reserved7() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangeBackgroundColourRes__errorCodes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangeBackgroundColourRes : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectIDofObjectToChange;
+  INTEGER field_newBackgroundColour;
+  ChangeBackgroundColourRes__errorCodes field_errorCodes;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  ChangeBackgroundColourRes();
+  ChangeBackgroundColourRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectIDofObjectToChange,
+    const INTEGER& par_newBackgroundColour,
+    const ChangeBackgroundColourRes__errorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  ChangeBackgroundColourRes(const ChangeBackgroundColourRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangeBackgroundColourRes& operator=(const ChangeBackgroundColourRes& other_value);
+  boolean operator==(const ChangeBackgroundColourRes& other_value) const;
+  inline boolean operator!=(const ChangeBackgroundColourRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectIDofObjectToChange()
+    {return field_objectIDofObjectToChange;}
+  inline const INTEGER& objectIDofObjectToChange() const
+    {return field_objectIDofObjectToChange;}
+  inline INTEGER& newBackgroundColour()
+    {return field_newBackgroundColour;}
+  inline const INTEGER& newBackgroundColour() const
+    {return field_newBackgroundColour;}
+  inline ChangeBackgroundColourRes__errorCodes& errorCodes()
+    {return field_errorCodes;}
+  inline const ChangeBackgroundColourRes__errorCodes& errorCodes() const
+    {return field_errorCodes;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 7;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangeBackgroundColourRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangeBackgroundColourRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangeBackgroundColourRes& other_value);
+void copy_template(const ChangeBackgroundColourRes_template& other_value);
+
+public:
+ChangeBackgroundColourRes_template();
+ChangeBackgroundColourRes_template(template_sel other_value);
+ChangeBackgroundColourRes_template(const ChangeBackgroundColourRes& other_value);
+ChangeBackgroundColourRes_template(const OPTIONAL<ChangeBackgroundColourRes>& other_value);
+ChangeBackgroundColourRes_template(const ChangeBackgroundColourRes_template& other_value);
+~ChangeBackgroundColourRes_template();
+ChangeBackgroundColourRes_template& operator=(template_sel other_value);
+ChangeBackgroundColourRes_template& operator=(const ChangeBackgroundColourRes& other_value);
+ChangeBackgroundColourRes_template& operator=(const OPTIONAL<ChangeBackgroundColourRes>& other_value);
+ChangeBackgroundColourRes_template& operator=(const ChangeBackgroundColourRes_template& other_value);
+boolean match(const ChangeBackgroundColourRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangeBackgroundColourRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangeBackgroundColourRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectIDofObjectToChange();
+const INTEGER_template& objectIDofObjectToChange() const;
+INTEGER_template& newBackgroundColour();
+const INTEGER_template& newBackgroundColour() const;
+ChangeBackgroundColourRes__errorCodes_template& errorCodes();
+const ChangeBackgroundColourRes__errorCodes_template& errorCodes() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangeBackgroundColourRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangeNumericValueReq : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectID;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_newValueForValueAttribute;
+public:
+  ChangeNumericValueReq();
+  ChangeNumericValueReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_newValueForValueAttribute);
+  ChangeNumericValueReq(const ChangeNumericValueReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangeNumericValueReq& operator=(const ChangeNumericValueReq& other_value);
+  boolean operator==(const ChangeNumericValueReq& other_value) const;
+  inline boolean operator!=(const ChangeNumericValueReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectID()
+    {return field_objectID;}
+  inline const INTEGER& objectID() const
+    {return field_objectID;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& newValueForValueAttribute()
+    {return field_newValueForValueAttribute;}
+  inline const OCTETSTRING& newValueForValueAttribute() const
+    {return field_newValueForValueAttribute;}
+  inline int size_of() const
+    {return 4;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangeNumericValueReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangeNumericValueReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangeNumericValueReq& other_value);
+void copy_template(const ChangeNumericValueReq_template& other_value);
+
+public:
+ChangeNumericValueReq_template();
+ChangeNumericValueReq_template(template_sel other_value);
+ChangeNumericValueReq_template(const ChangeNumericValueReq& other_value);
+ChangeNumericValueReq_template(const OPTIONAL<ChangeNumericValueReq>& other_value);
+ChangeNumericValueReq_template(const ChangeNumericValueReq_template& other_value);
+~ChangeNumericValueReq_template();
+ChangeNumericValueReq_template& operator=(template_sel other_value);
+ChangeNumericValueReq_template& operator=(const ChangeNumericValueReq& other_value);
+ChangeNumericValueReq_template& operator=(const OPTIONAL<ChangeNumericValueReq>& other_value);
+ChangeNumericValueReq_template& operator=(const ChangeNumericValueReq_template& other_value);
+boolean match(const ChangeNumericValueReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangeNumericValueReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangeNumericValueReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectID();
+const INTEGER_template& objectID() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& newValueForValueAttribute();
+const OCTETSTRING_template& newValueForValueAttribute() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangeNumericValueReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangeNumericValueRes__errorCodes : public Base_Type {
+  BOOLEAN field_invalidObjectID;
+  BOOLEAN field_invalidValue;
+  BOOLEAN field_valueInUse;
+  BOOLEAN field_undefined;
+  BOOLEAN field_anyOtherError;
+  BOOLEAN field_reserved5;
+  BOOLEAN field_reserved6;
+  BOOLEAN field_reserved7;
+public:
+  ChangeNumericValueRes__errorCodes();
+  ChangeNumericValueRes__errorCodes(const BOOLEAN& par_invalidObjectID,
+    const BOOLEAN& par_invalidValue,
+    const BOOLEAN& par_valueInUse,
+    const BOOLEAN& par_undefined,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7);
+  ChangeNumericValueRes__errorCodes(const ChangeNumericValueRes__errorCodes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangeNumericValueRes__errorCodes& operator=(const ChangeNumericValueRes__errorCodes& other_value);
+  boolean operator==(const ChangeNumericValueRes__errorCodes& other_value) const;
+  inline boolean operator!=(const ChangeNumericValueRes__errorCodes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& invalidObjectID()
+    {return field_invalidObjectID;}
+  inline const BOOLEAN& invalidObjectID() const
+    {return field_invalidObjectID;}
+  inline BOOLEAN& invalidValue()
+    {return field_invalidValue;}
+  inline const BOOLEAN& invalidValue() const
+    {return field_invalidValue;}
+  inline BOOLEAN& valueInUse()
+    {return field_valueInUse;}
+  inline const BOOLEAN& valueInUse() const
+    {return field_valueInUse;}
+  inline BOOLEAN& undefined()
+    {return field_undefined;}
+  inline const BOOLEAN& undefined() const
+    {return field_undefined;}
+  inline BOOLEAN& anyOtherError()
+    {return field_anyOtherError;}
+  inline const BOOLEAN& anyOtherError() const
+    {return field_anyOtherError;}
+  inline BOOLEAN& reserved5()
+    {return field_reserved5;}
+  inline const BOOLEAN& reserved5() const
+    {return field_reserved5;}
+  inline BOOLEAN& reserved6()
+    {return field_reserved6;}
+  inline const BOOLEAN& reserved6() const
+    {return field_reserved6;}
+  inline BOOLEAN& reserved7()
+    {return field_reserved7;}
+  inline const BOOLEAN& reserved7() const
+    {return field_reserved7;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangeNumericValueRes__errorCodes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangeNumericValueRes__errorCodes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangeNumericValueRes__errorCodes& other_value);
+void copy_template(const ChangeNumericValueRes__errorCodes_template& other_value);
+
+public:
+ChangeNumericValueRes__errorCodes_template();
+ChangeNumericValueRes__errorCodes_template(template_sel other_value);
+ChangeNumericValueRes__errorCodes_template(const ChangeNumericValueRes__errorCodes& other_value);
+ChangeNumericValueRes__errorCodes_template(const OPTIONAL<ChangeNumericValueRes__errorCodes>& other_value);
+ChangeNumericValueRes__errorCodes_template(const ChangeNumericValueRes__errorCodes_template& other_value);
+~ChangeNumericValueRes__errorCodes_template();
+ChangeNumericValueRes__errorCodes_template& operator=(template_sel other_value);
+ChangeNumericValueRes__errorCodes_template& operator=(const ChangeNumericValueRes__errorCodes& other_value);
+ChangeNumericValueRes__errorCodes_template& operator=(const OPTIONAL<ChangeNumericValueRes__errorCodes>& other_value);
+ChangeNumericValueRes__errorCodes_template& operator=(const ChangeNumericValueRes__errorCodes_template& other_value);
+boolean match(const ChangeNumericValueRes__errorCodes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangeNumericValueRes__errorCodes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangeNumericValueRes__errorCodes_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& invalidObjectID();
+const BOOLEAN_template& invalidObjectID() const;
+BOOLEAN_template& invalidValue();
+const BOOLEAN_template& invalidValue() const;
+BOOLEAN_template& valueInUse();
+const BOOLEAN_template& valueInUse() const;
+BOOLEAN_template& undefined();
+const BOOLEAN_template& undefined() const;
+BOOLEAN_template& anyOtherError();
+const BOOLEAN_template& anyOtherError() const;
+BOOLEAN_template& reserved5();
+const BOOLEAN_template& reserved5() const;
+BOOLEAN_template& reserved6();
+const BOOLEAN_template& reserved6() const;
+BOOLEAN_template& reserved7();
+const BOOLEAN_template& reserved7() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangeNumericValueRes__errorCodes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangeNumericValueRes : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectID;
+  ChangeNumericValueRes__errorCodes field_errorCodes;
+  OCTETSTRING field_valueForValueAttribute;
+public:
+  ChangeNumericValueRes();
+  ChangeNumericValueRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const ChangeNumericValueRes__errorCodes& par_errorCodes,
+    const OCTETSTRING& par_valueForValueAttribute);
+  ChangeNumericValueRes(const ChangeNumericValueRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangeNumericValueRes& operator=(const ChangeNumericValueRes& other_value);
+  boolean operator==(const ChangeNumericValueRes& other_value) const;
+  inline boolean operator!=(const ChangeNumericValueRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectID()
+    {return field_objectID;}
+  inline const INTEGER& objectID() const
+    {return field_objectID;}
+  inline ChangeNumericValueRes__errorCodes& errorCodes()
+    {return field_errorCodes;}
+  inline const ChangeNumericValueRes__errorCodes& errorCodes() const
+    {return field_errorCodes;}
+  inline OCTETSTRING& valueForValueAttribute()
+    {return field_valueForValueAttribute;}
+  inline const OCTETSTRING& valueForValueAttribute() const
+    {return field_valueForValueAttribute;}
+  inline int size_of() const
+    {return 4;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangeNumericValueRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangeNumericValueRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangeNumericValueRes& other_value);
+void copy_template(const ChangeNumericValueRes_template& other_value);
+
+public:
+ChangeNumericValueRes_template();
+ChangeNumericValueRes_template(template_sel other_value);
+ChangeNumericValueRes_template(const ChangeNumericValueRes& other_value);
+ChangeNumericValueRes_template(const OPTIONAL<ChangeNumericValueRes>& other_value);
+ChangeNumericValueRes_template(const ChangeNumericValueRes_template& other_value);
+~ChangeNumericValueRes_template();
+ChangeNumericValueRes_template& operator=(template_sel other_value);
+ChangeNumericValueRes_template& operator=(const ChangeNumericValueRes& other_value);
+ChangeNumericValueRes_template& operator=(const OPTIONAL<ChangeNumericValueRes>& other_value);
+ChangeNumericValueRes_template& operator=(const ChangeNumericValueRes_template& other_value);
+boolean match(const ChangeNumericValueRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangeNumericValueRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangeNumericValueRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectID();
+const INTEGER_template& objectID() const;
+ChangeNumericValueRes__errorCodes_template& errorCodes();
+const ChangeNumericValueRes__errorCodes_template& errorCodes() const;
+OCTETSTRING_template& valueForValueAttribute();
+const OCTETSTRING_template& valueForValueAttribute() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangeNumericValueRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangeEndPointRes__errorCodes : public Base_Type {
+  BOOLEAN field_invalidObjectID;
+  BOOLEAN field_invalidLineDirection;
+  BOOLEAN field_reserved2;
+  BOOLEAN field_reserved3;
+  BOOLEAN field_anyOtherError;
+  BOOLEAN field_reserved5;
+  BOOLEAN field_reserved6;
+  BOOLEAN field_reserved7;
+public:
+  ChangeEndPointRes__errorCodes();
+  ChangeEndPointRes__errorCodes(const BOOLEAN& par_invalidObjectID,
+    const BOOLEAN& par_invalidLineDirection,
+    const BOOLEAN& par_reserved2,
+    const BOOLEAN& par_reserved3,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7);
+  ChangeEndPointRes__errorCodes(const ChangeEndPointRes__errorCodes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangeEndPointRes__errorCodes& operator=(const ChangeEndPointRes__errorCodes& other_value);
+  boolean operator==(const ChangeEndPointRes__errorCodes& other_value) const;
+  inline boolean operator!=(const ChangeEndPointRes__errorCodes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& invalidObjectID()
+    {return field_invalidObjectID;}
+  inline const BOOLEAN& invalidObjectID() const
+    {return field_invalidObjectID;}
+  inline BOOLEAN& invalidLineDirection()
+    {return field_invalidLineDirection;}
+  inline const BOOLEAN& invalidLineDirection() const
+    {return field_invalidLineDirection;}
+  inline BOOLEAN& reserved2()
+    {return field_reserved2;}
+  inline const BOOLEAN& reserved2() const
+    {return field_reserved2;}
+  inline BOOLEAN& reserved3()
+    {return field_reserved3;}
+  inline const BOOLEAN& reserved3() const
+    {return field_reserved3;}
+  inline BOOLEAN& anyOtherError()
+    {return field_anyOtherError;}
+  inline const BOOLEAN& anyOtherError() const
+    {return field_anyOtherError;}
+  inline BOOLEAN& reserved5()
+    {return field_reserved5;}
+  inline const BOOLEAN& reserved5() const
+    {return field_reserved5;}
+  inline BOOLEAN& reserved6()
+    {return field_reserved6;}
+  inline const BOOLEAN& reserved6() const
+    {return field_reserved6;}
+  inline BOOLEAN& reserved7()
+    {return field_reserved7;}
+  inline const BOOLEAN& reserved7() const
+    {return field_reserved7;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangeEndPointRes__errorCodes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangeEndPointRes__errorCodes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangeEndPointRes__errorCodes& other_value);
+void copy_template(const ChangeEndPointRes__errorCodes_template& other_value);
+
+public:
+ChangeEndPointRes__errorCodes_template();
+ChangeEndPointRes__errorCodes_template(template_sel other_value);
+ChangeEndPointRes__errorCodes_template(const ChangeEndPointRes__errorCodes& other_value);
+ChangeEndPointRes__errorCodes_template(const OPTIONAL<ChangeEndPointRes__errorCodes>& other_value);
+ChangeEndPointRes__errorCodes_template(const ChangeEndPointRes__errorCodes_template& other_value);
+~ChangeEndPointRes__errorCodes_template();
+ChangeEndPointRes__errorCodes_template& operator=(template_sel other_value);
+ChangeEndPointRes__errorCodes_template& operator=(const ChangeEndPointRes__errorCodes& other_value);
+ChangeEndPointRes__errorCodes_template& operator=(const OPTIONAL<ChangeEndPointRes__errorCodes>& other_value);
+ChangeEndPointRes__errorCodes_template& operator=(const ChangeEndPointRes__errorCodes_template& other_value);
+boolean match(const ChangeEndPointRes__errorCodes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangeEndPointRes__errorCodes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangeEndPointRes__errorCodes_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& invalidObjectID();
+const BOOLEAN_template& invalidObjectID() const;
+BOOLEAN_template& invalidLineDirection();
+const BOOLEAN_template& invalidLineDirection() const;
+BOOLEAN_template& reserved2();
+const BOOLEAN_template& reserved2() const;
+BOOLEAN_template& reserved3();
+const BOOLEAN_template& reserved3() const;
+BOOLEAN_template& anyOtherError();
+const BOOLEAN_template& anyOtherError() const;
+BOOLEAN_template& reserved5();
+const BOOLEAN_template& reserved5() const;
+BOOLEAN_template& reserved6();
+const BOOLEAN_template& reserved6() const;
+BOOLEAN_template& reserved7();
+const BOOLEAN_template& reserved7() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangeEndPointRes__errorCodes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangeEndPointRes : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectID;
+  ChangeEndPointRes__errorCodes field_errorCodes;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  ChangeEndPointRes();
+  ChangeEndPointRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const ChangeEndPointRes__errorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  ChangeEndPointRes(const ChangeEndPointRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangeEndPointRes& operator=(const ChangeEndPointRes& other_value);
+  boolean operator==(const ChangeEndPointRes& other_value) const;
+  inline boolean operator!=(const ChangeEndPointRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectID()
+    {return field_objectID;}
+  inline const INTEGER& objectID() const
+    {return field_objectID;}
+  inline ChangeEndPointRes__errorCodes& errorCodes()
+    {return field_errorCodes;}
+  inline const ChangeEndPointRes__errorCodes& errorCodes() const
+    {return field_errorCodes;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 7;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangeEndPointRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangeEndPointRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangeEndPointRes& other_value);
+void copy_template(const ChangeEndPointRes_template& other_value);
+
+public:
+ChangeEndPointRes_template();
+ChangeEndPointRes_template(template_sel other_value);
+ChangeEndPointRes_template(const ChangeEndPointRes& other_value);
+ChangeEndPointRes_template(const OPTIONAL<ChangeEndPointRes>& other_value);
+ChangeEndPointRes_template(const ChangeEndPointRes_template& other_value);
+~ChangeEndPointRes_template();
+ChangeEndPointRes_template& operator=(template_sel other_value);
+ChangeEndPointRes_template& operator=(const ChangeEndPointRes& other_value);
+ChangeEndPointRes_template& operator=(const OPTIONAL<ChangeEndPointRes>& other_value);
+ChangeEndPointRes_template& operator=(const ChangeEndPointRes_template& other_value);
+boolean match(const ChangeEndPointRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangeEndPointRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangeEndPointRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectID();
+const INTEGER_template& objectID() const;
+ChangeEndPointRes__errorCodes_template& errorCodes();
+const ChangeEndPointRes__errorCodes_template& errorCodes() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangeEndPointRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class e__ChangeEndPointReq__LineDirection : public Base_Type { // enum
+friend class e__ChangeEndPointReq__LineDirection_template;
+public:
+enum enum_type { lineIsDrawnFromTopLeftToBottomRightOfEnclosingVirtualRectangle = 0, lineIsDrawnFromBottomLeftToToRightOfEnclosingVirtualRectangle = 1, UNKNOWN_VALUE = 2, UNBOUND_VALUE = 3 };
+private:
+enum_type enum_value;
+
+public:
+e__ChangeEndPointReq__LineDirection();
+e__ChangeEndPointReq__LineDirection(int other_value);
+e__ChangeEndPointReq__LineDirection(enum_type other_value);
+e__ChangeEndPointReq__LineDirection(const e__ChangeEndPointReq__LineDirection& other_value);
+
+e__ChangeEndPointReq__LineDirection& operator=(int other_value);
+e__ChangeEndPointReq__LineDirection& operator=(enum_type other_value);
+e__ChangeEndPointReq__LineDirection& operator=(const e__ChangeEndPointReq__LineDirection& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const e__ChangeEndPointReq__LineDirection& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const e__ChangeEndPointReq__LineDirection& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const e__ChangeEndPointReq__LineDirection& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const e__ChangeEndPointReq__LineDirection& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const e__ChangeEndPointReq__LineDirection& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const e__ChangeEndPointReq__LineDirection& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const e__ChangeEndPointReq__LineDirection& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class e__ChangeEndPointReq__LineDirection_template : public Base_Template {
+union {
+e__ChangeEndPointReq__LineDirection::enum_type single_value;
+struct {
+unsigned int n_values;
+e__ChangeEndPointReq__LineDirection_template *list_value;
+} value_list;
+};
+
+void copy_template(const e__ChangeEndPointReq__LineDirection_template& other_value);
+
+public:
+e__ChangeEndPointReq__LineDirection_template();
+e__ChangeEndPointReq__LineDirection_template(template_sel other_value);
+e__ChangeEndPointReq__LineDirection_template(int other_value);
+e__ChangeEndPointReq__LineDirection_template(e__ChangeEndPointReq__LineDirection::enum_type other_value);
+e__ChangeEndPointReq__LineDirection_template(const e__ChangeEndPointReq__LineDirection& other_value);
+e__ChangeEndPointReq__LineDirection_template(const OPTIONAL<e__ChangeEndPointReq__LineDirection>& other_value);
+e__ChangeEndPointReq__LineDirection_template(const e__ChangeEndPointReq__LineDirection_template& other_value);
+~e__ChangeEndPointReq__LineDirection_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+e__ChangeEndPointReq__LineDirection_template& operator=(template_sel other_value);
+e__ChangeEndPointReq__LineDirection_template& operator=(int other_value);
+e__ChangeEndPointReq__LineDirection_template& operator=(e__ChangeEndPointReq__LineDirection::enum_type other_value);
+e__ChangeEndPointReq__LineDirection_template& operator=(const e__ChangeEndPointReq__LineDirection& other_value);
+e__ChangeEndPointReq__LineDirection_template& operator=(const OPTIONAL<e__ChangeEndPointReq__LineDirection>& other_value);
+e__ChangeEndPointReq__LineDirection_template& operator=(const e__ChangeEndPointReq__LineDirection_template& other_value);
+
+boolean match(e__ChangeEndPointReq__LineDirection::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const e__ChangeEndPointReq__LineDirection& other_value, boolean legacy = FALSE) const;
+e__ChangeEndPointReq__LineDirection::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+e__ChangeEndPointReq__LineDirection_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const e__ChangeEndPointReq__LineDirection& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class ChangeEndPointReq : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectIDofAnOutputLineObjectToChange;
+  INTEGER field_width;
+  INTEGER field_height;
+  e__ChangeEndPointReq__LineDirection field_lineDirection;
+public:
+  ChangeEndPointReq();
+  ChangeEndPointReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectIDofAnOutputLineObjectToChange,
+    const INTEGER& par_width,
+    const INTEGER& par_height,
+    const e__ChangeEndPointReq__LineDirection& par_lineDirection);
+  ChangeEndPointReq(const ChangeEndPointReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangeEndPointReq& operator=(const ChangeEndPointReq& other_value);
+  boolean operator==(const ChangeEndPointReq& other_value) const;
+  inline boolean operator!=(const ChangeEndPointReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectIDofAnOutputLineObjectToChange()
+    {return field_objectIDofAnOutputLineObjectToChange;}
+  inline const INTEGER& objectIDofAnOutputLineObjectToChange() const
+    {return field_objectIDofAnOutputLineObjectToChange;}
+  inline INTEGER& width()
+    {return field_width;}
+  inline const INTEGER& width() const
+    {return field_width;}
+  inline INTEGER& height()
+    {return field_height;}
+  inline const INTEGER& height() const
+    {return field_height;}
+  inline e__ChangeEndPointReq__LineDirection& lineDirection()
+    {return field_lineDirection;}
+  inline const e__ChangeEndPointReq__LineDirection& lineDirection() const
+    {return field_lineDirection;}
+  inline int size_of() const
+    {return 5;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangeEndPointReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangeEndPointReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangeEndPointReq& other_value);
+void copy_template(const ChangeEndPointReq_template& other_value);
+
+public:
+ChangeEndPointReq_template();
+ChangeEndPointReq_template(template_sel other_value);
+ChangeEndPointReq_template(const ChangeEndPointReq& other_value);
+ChangeEndPointReq_template(const OPTIONAL<ChangeEndPointReq>& other_value);
+ChangeEndPointReq_template(const ChangeEndPointReq_template& other_value);
+~ChangeEndPointReq_template();
+ChangeEndPointReq_template& operator=(template_sel other_value);
+ChangeEndPointReq_template& operator=(const ChangeEndPointReq& other_value);
+ChangeEndPointReq_template& operator=(const OPTIONAL<ChangeEndPointReq>& other_value);
+ChangeEndPointReq_template& operator=(const ChangeEndPointReq_template& other_value);
+boolean match(const ChangeEndPointReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangeEndPointReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangeEndPointReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectIDofAnOutputLineObjectToChange();
+const INTEGER_template& objectIDofAnOutputLineObjectToChange() const;
+INTEGER_template& width();
+const INTEGER_template& width() const;
+INTEGER_template& height();
+const INTEGER_template& height() const;
+e__ChangeEndPointReq__LineDirection_template& lineDirection();
+const e__ChangeEndPointReq__LineDirection_template& lineDirection() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangeEndPointReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangeFontAttributesRes__errorCodes : public Base_Type {
+  BOOLEAN field_invalidObjectID;
+  BOOLEAN field_invalidColor;
+  BOOLEAN field_invalidSize;
+  BOOLEAN field_invalidType;
+  BOOLEAN field_invalidStyle;
+  BOOLEAN field_anyOtherError;
+  BOOLEAN field_reserved6;
+  BOOLEAN field_reserved7;
+public:
+  ChangeFontAttributesRes__errorCodes();
+  ChangeFontAttributesRes__errorCodes(const BOOLEAN& par_invalidObjectID,
+    const BOOLEAN& par_invalidColor,
+    const BOOLEAN& par_invalidSize,
+    const BOOLEAN& par_invalidType,
+    const BOOLEAN& par_invalidStyle,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7);
+  ChangeFontAttributesRes__errorCodes(const ChangeFontAttributesRes__errorCodes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangeFontAttributesRes__errorCodes& operator=(const ChangeFontAttributesRes__errorCodes& other_value);
+  boolean operator==(const ChangeFontAttributesRes__errorCodes& other_value) const;
+  inline boolean operator!=(const ChangeFontAttributesRes__errorCodes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& invalidObjectID()
+    {return field_invalidObjectID;}
+  inline const BOOLEAN& invalidObjectID() const
+    {return field_invalidObjectID;}
+  inline BOOLEAN& invalidColor()
+    {return field_invalidColor;}
+  inline const BOOLEAN& invalidColor() const
+    {return field_invalidColor;}
+  inline BOOLEAN& invalidSize()
+    {return field_invalidSize;}
+  inline const BOOLEAN& invalidSize() const
+    {return field_invalidSize;}
+  inline BOOLEAN& invalidType()
+    {return field_invalidType;}
+  inline const BOOLEAN& invalidType() const
+    {return field_invalidType;}
+  inline BOOLEAN& invalidStyle()
+    {return field_invalidStyle;}
+  inline const BOOLEAN& invalidStyle() const
+    {return field_invalidStyle;}
+  inline BOOLEAN& anyOtherError()
+    {return field_anyOtherError;}
+  inline const BOOLEAN& anyOtherError() const
+    {return field_anyOtherError;}
+  inline BOOLEAN& reserved6()
+    {return field_reserved6;}
+  inline const BOOLEAN& reserved6() const
+    {return field_reserved6;}
+  inline BOOLEAN& reserved7()
+    {return field_reserved7;}
+  inline const BOOLEAN& reserved7() const
+    {return field_reserved7;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangeFontAttributesRes__errorCodes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangeFontAttributesRes__errorCodes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangeFontAttributesRes__errorCodes& other_value);
+void copy_template(const ChangeFontAttributesRes__errorCodes_template& other_value);
+
+public:
+ChangeFontAttributesRes__errorCodes_template();
+ChangeFontAttributesRes__errorCodes_template(template_sel other_value);
+ChangeFontAttributesRes__errorCodes_template(const ChangeFontAttributesRes__errorCodes& other_value);
+ChangeFontAttributesRes__errorCodes_template(const OPTIONAL<ChangeFontAttributesRes__errorCodes>& other_value);
+ChangeFontAttributesRes__errorCodes_template(const ChangeFontAttributesRes__errorCodes_template& other_value);
+~ChangeFontAttributesRes__errorCodes_template();
+ChangeFontAttributesRes__errorCodes_template& operator=(template_sel other_value);
+ChangeFontAttributesRes__errorCodes_template& operator=(const ChangeFontAttributesRes__errorCodes& other_value);
+ChangeFontAttributesRes__errorCodes_template& operator=(const OPTIONAL<ChangeFontAttributesRes__errorCodes>& other_value);
+ChangeFontAttributesRes__errorCodes_template& operator=(const ChangeFontAttributesRes__errorCodes_template& other_value);
+boolean match(const ChangeFontAttributesRes__errorCodes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangeFontAttributesRes__errorCodes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangeFontAttributesRes__errorCodes_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& invalidObjectID();
+const BOOLEAN_template& invalidObjectID() const;
+BOOLEAN_template& invalidColor();
+const BOOLEAN_template& invalidColor() const;
+BOOLEAN_template& invalidSize();
+const BOOLEAN_template& invalidSize() const;
+BOOLEAN_template& invalidType();
+const BOOLEAN_template& invalidType() const;
+BOOLEAN_template& invalidStyle();
+const BOOLEAN_template& invalidStyle() const;
+BOOLEAN_template& anyOtherError();
+const BOOLEAN_template& anyOtherError() const;
+BOOLEAN_template& reserved6();
+const BOOLEAN_template& reserved6() const;
+BOOLEAN_template& reserved7();
+const BOOLEAN_template& reserved7() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangeFontAttributesRes__errorCodes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangeFontAttributesRes : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectID;
+  ChangeFontAttributesRes__errorCodes field_errorCodes;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  ChangeFontAttributesRes();
+  ChangeFontAttributesRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const ChangeFontAttributesRes__errorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  ChangeFontAttributesRes(const ChangeFontAttributesRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangeFontAttributesRes& operator=(const ChangeFontAttributesRes& other_value);
+  boolean operator==(const ChangeFontAttributesRes& other_value) const;
+  inline boolean operator!=(const ChangeFontAttributesRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectID()
+    {return field_objectID;}
+  inline const INTEGER& objectID() const
+    {return field_objectID;}
+  inline ChangeFontAttributesRes__errorCodes& errorCodes()
+    {return field_errorCodes;}
+  inline const ChangeFontAttributesRes__errorCodes& errorCodes() const
+    {return field_errorCodes;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 7;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangeFontAttributesRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangeFontAttributesRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangeFontAttributesRes& other_value);
+void copy_template(const ChangeFontAttributesRes_template& other_value);
+
+public:
+ChangeFontAttributesRes_template();
+ChangeFontAttributesRes_template(template_sel other_value);
+ChangeFontAttributesRes_template(const ChangeFontAttributesRes& other_value);
+ChangeFontAttributesRes_template(const OPTIONAL<ChangeFontAttributesRes>& other_value);
+ChangeFontAttributesRes_template(const ChangeFontAttributesRes_template& other_value);
+~ChangeFontAttributesRes_template();
+ChangeFontAttributesRes_template& operator=(template_sel other_value);
+ChangeFontAttributesRes_template& operator=(const ChangeFontAttributesRes& other_value);
+ChangeFontAttributesRes_template& operator=(const OPTIONAL<ChangeFontAttributesRes>& other_value);
+ChangeFontAttributesRes_template& operator=(const ChangeFontAttributesRes_template& other_value);
+boolean match(const ChangeFontAttributesRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangeFontAttributesRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangeFontAttributesRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectID();
+const INTEGER_template& objectID() const;
+ChangeFontAttributesRes__errorCodes_template& errorCodes();
+const ChangeFontAttributesRes__errorCodes_template& errorCodes() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangeFontAttributesRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangeFontAttributesReq : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_ObjectIDofObjectToChange;
+  INTEGER field_fontColour;
+  INTEGER field_fontSize;
+  INTEGER field_fontType;
+  INTEGER field_fontStyle;
+  OCTETSTRING field_reserved8;
+public:
+  ChangeFontAttributesReq();
+  ChangeFontAttributesReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_ObjectIDofObjectToChange,
+    const INTEGER& par_fontColour,
+    const INTEGER& par_fontSize,
+    const INTEGER& par_fontType,
+    const INTEGER& par_fontStyle,
+    const OCTETSTRING& par_reserved8);
+  ChangeFontAttributesReq(const ChangeFontAttributesReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangeFontAttributesReq& operator=(const ChangeFontAttributesReq& other_value);
+  boolean operator==(const ChangeFontAttributesReq& other_value) const;
+  inline boolean operator!=(const ChangeFontAttributesReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& ObjectIDofObjectToChange()
+    {return field_ObjectIDofObjectToChange;}
+  inline const INTEGER& ObjectIDofObjectToChange() const
+    {return field_ObjectIDofObjectToChange;}
+  inline INTEGER& fontColour()
+    {return field_fontColour;}
+  inline const INTEGER& fontColour() const
+    {return field_fontColour;}
+  inline INTEGER& fontSize()
+    {return field_fontSize;}
+  inline const INTEGER& fontSize() const
+    {return field_fontSize;}
+  inline INTEGER& fontType()
+    {return field_fontType;}
+  inline const INTEGER& fontType() const
+    {return field_fontType;}
+  inline INTEGER& fontStyle()
+    {return field_fontStyle;}
+  inline const INTEGER& fontStyle() const
+    {return field_fontStyle;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 7;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangeFontAttributesReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangeFontAttributesReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangeFontAttributesReq& other_value);
+void copy_template(const ChangeFontAttributesReq_template& other_value);
+
+public:
+ChangeFontAttributesReq_template();
+ChangeFontAttributesReq_template(template_sel other_value);
+ChangeFontAttributesReq_template(const ChangeFontAttributesReq& other_value);
+ChangeFontAttributesReq_template(const OPTIONAL<ChangeFontAttributesReq>& other_value);
+ChangeFontAttributesReq_template(const ChangeFontAttributesReq_template& other_value);
+~ChangeFontAttributesReq_template();
+ChangeFontAttributesReq_template& operator=(template_sel other_value);
+ChangeFontAttributesReq_template& operator=(const ChangeFontAttributesReq& other_value);
+ChangeFontAttributesReq_template& operator=(const OPTIONAL<ChangeFontAttributesReq>& other_value);
+ChangeFontAttributesReq_template& operator=(const ChangeFontAttributesReq_template& other_value);
+boolean match(const ChangeFontAttributesReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangeFontAttributesReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangeFontAttributesReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& ObjectIDofObjectToChange();
+const INTEGER_template& ObjectIDofObjectToChange() const;
+INTEGER_template& fontColour();
+const INTEGER_template& fontColour() const;
+INTEGER_template& fontSize();
+const INTEGER_template& fontSize() const;
+INTEGER_template& fontType();
+const INTEGER_template& fontType() const;
+INTEGER_template& fontStyle();
+const INTEGER_template& fontStyle() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangeFontAttributesReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangeLineAttributesRes__errorCodes : public Base_Type {
+  BOOLEAN field_invalidObjectID;
+  BOOLEAN field_invalidColor;
+  BOOLEAN field_invalidWidth;
+  BOOLEAN field_reserved3;
+  BOOLEAN field_anyOtherError;
+  BOOLEAN field_reserved5;
+  BOOLEAN field_reserved6;
+  BOOLEAN field_reserved7;
+public:
+  ChangeLineAttributesRes__errorCodes();
+  ChangeLineAttributesRes__errorCodes(const BOOLEAN& par_invalidObjectID,
+    const BOOLEAN& par_invalidColor,
+    const BOOLEAN& par_invalidWidth,
+    const BOOLEAN& par_reserved3,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7);
+  ChangeLineAttributesRes__errorCodes(const ChangeLineAttributesRes__errorCodes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangeLineAttributesRes__errorCodes& operator=(const ChangeLineAttributesRes__errorCodes& other_value);
+  boolean operator==(const ChangeLineAttributesRes__errorCodes& other_value) const;
+  inline boolean operator!=(const ChangeLineAttributesRes__errorCodes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& invalidObjectID()
+    {return field_invalidObjectID;}
+  inline const BOOLEAN& invalidObjectID() const
+    {return field_invalidObjectID;}
+  inline BOOLEAN& invalidColor()
+    {return field_invalidColor;}
+  inline const BOOLEAN& invalidColor() const
+    {return field_invalidColor;}
+  inline BOOLEAN& invalidWidth()
+    {return field_invalidWidth;}
+  inline const BOOLEAN& invalidWidth() const
+    {return field_invalidWidth;}
+  inline BOOLEAN& reserved3()
+    {return field_reserved3;}
+  inline const BOOLEAN& reserved3() const
+    {return field_reserved3;}
+  inline BOOLEAN& anyOtherError()
+    {return field_anyOtherError;}
+  inline const BOOLEAN& anyOtherError() const
+    {return field_anyOtherError;}
+  inline BOOLEAN& reserved5()
+    {return field_reserved5;}
+  inline const BOOLEAN& reserved5() const
+    {return field_reserved5;}
+  inline BOOLEAN& reserved6()
+    {return field_reserved6;}
+  inline const BOOLEAN& reserved6() const
+    {return field_reserved6;}
+  inline BOOLEAN& reserved7()
+    {return field_reserved7;}
+  inline const BOOLEAN& reserved7() const
+    {return field_reserved7;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangeLineAttributesRes__errorCodes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangeLineAttributesRes__errorCodes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangeLineAttributesRes__errorCodes& other_value);
+void copy_template(const ChangeLineAttributesRes__errorCodes_template& other_value);
+
+public:
+ChangeLineAttributesRes__errorCodes_template();
+ChangeLineAttributesRes__errorCodes_template(template_sel other_value);
+ChangeLineAttributesRes__errorCodes_template(const ChangeLineAttributesRes__errorCodes& other_value);
+ChangeLineAttributesRes__errorCodes_template(const OPTIONAL<ChangeLineAttributesRes__errorCodes>& other_value);
+ChangeLineAttributesRes__errorCodes_template(const ChangeLineAttributesRes__errorCodes_template& other_value);
+~ChangeLineAttributesRes__errorCodes_template();
+ChangeLineAttributesRes__errorCodes_template& operator=(template_sel other_value);
+ChangeLineAttributesRes__errorCodes_template& operator=(const ChangeLineAttributesRes__errorCodes& other_value);
+ChangeLineAttributesRes__errorCodes_template& operator=(const OPTIONAL<ChangeLineAttributesRes__errorCodes>& other_value);
+ChangeLineAttributesRes__errorCodes_template& operator=(const ChangeLineAttributesRes__errorCodes_template& other_value);
+boolean match(const ChangeLineAttributesRes__errorCodes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangeLineAttributesRes__errorCodes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangeLineAttributesRes__errorCodes_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& invalidObjectID();
+const BOOLEAN_template& invalidObjectID() const;
+BOOLEAN_template& invalidColor();
+const BOOLEAN_template& invalidColor() const;
+BOOLEAN_template& invalidWidth();
+const BOOLEAN_template& invalidWidth() const;
+BOOLEAN_template& reserved3();
+const BOOLEAN_template& reserved3() const;
+BOOLEAN_template& anyOtherError();
+const BOOLEAN_template& anyOtherError() const;
+BOOLEAN_template& reserved5();
+const BOOLEAN_template& reserved5() const;
+BOOLEAN_template& reserved6();
+const BOOLEAN_template& reserved6() const;
+BOOLEAN_template& reserved7();
+const BOOLEAN_template& reserved7() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangeLineAttributesRes__errorCodes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangeLineAttributesRes : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectID;
+  ChangeLineAttributesRes__errorCodes field_errorCodes;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  ChangeLineAttributesRes();
+  ChangeLineAttributesRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const ChangeLineAttributesRes__errorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  ChangeLineAttributesRes(const ChangeLineAttributesRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangeLineAttributesRes& operator=(const ChangeLineAttributesRes& other_value);
+  boolean operator==(const ChangeLineAttributesRes& other_value) const;
+  inline boolean operator!=(const ChangeLineAttributesRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectID()
+    {return field_objectID;}
+  inline const INTEGER& objectID() const
+    {return field_objectID;}
+  inline ChangeLineAttributesRes__errorCodes& errorCodes()
+    {return field_errorCodes;}
+  inline const ChangeLineAttributesRes__errorCodes& errorCodes() const
+    {return field_errorCodes;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 7;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangeLineAttributesRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangeLineAttributesRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangeLineAttributesRes& other_value);
+void copy_template(const ChangeLineAttributesRes_template& other_value);
+
+public:
+ChangeLineAttributesRes_template();
+ChangeLineAttributesRes_template(template_sel other_value);
+ChangeLineAttributesRes_template(const ChangeLineAttributesRes& other_value);
+ChangeLineAttributesRes_template(const OPTIONAL<ChangeLineAttributesRes>& other_value);
+ChangeLineAttributesRes_template(const ChangeLineAttributesRes_template& other_value);
+~ChangeLineAttributesRes_template();
+ChangeLineAttributesRes_template& operator=(template_sel other_value);
+ChangeLineAttributesRes_template& operator=(const ChangeLineAttributesRes& other_value);
+ChangeLineAttributesRes_template& operator=(const OPTIONAL<ChangeLineAttributesRes>& other_value);
+ChangeLineAttributesRes_template& operator=(const ChangeLineAttributesRes_template& other_value);
+boolean match(const ChangeLineAttributesRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangeLineAttributesRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangeLineAttributesRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectID();
+const INTEGER_template& objectID() const;
+ChangeLineAttributesRes__errorCodes_template& errorCodes();
+const ChangeLineAttributesRes__errorCodes_template& errorCodes() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangeLineAttributesRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangeLineAttributesReq : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_ObjectIDofObjectToChange;
+  INTEGER field_lineColour;
+  INTEGER field_lineWidth;
+  BITSTRING field_LineArt;
+  OCTETSTRING field_reserved8;
+public:
+  ChangeLineAttributesReq();
+  ChangeLineAttributesReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_ObjectIDofObjectToChange,
+    const INTEGER& par_lineColour,
+    const INTEGER& par_lineWidth,
+    const BITSTRING& par_LineArt,
+    const OCTETSTRING& par_reserved8);
+  ChangeLineAttributesReq(const ChangeLineAttributesReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangeLineAttributesReq& operator=(const ChangeLineAttributesReq& other_value);
+  boolean operator==(const ChangeLineAttributesReq& other_value) const;
+  inline boolean operator!=(const ChangeLineAttributesReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& ObjectIDofObjectToChange()
+    {return field_ObjectIDofObjectToChange;}
+  inline const INTEGER& ObjectIDofObjectToChange() const
+    {return field_ObjectIDofObjectToChange;}
+  inline INTEGER& lineColour()
+    {return field_lineColour;}
+  inline const INTEGER& lineColour() const
+    {return field_lineColour;}
+  inline INTEGER& lineWidth()
+    {return field_lineWidth;}
+  inline const INTEGER& lineWidth() const
+    {return field_lineWidth;}
+  inline BITSTRING& LineArt()
+    {return field_LineArt;}
+  inline const BITSTRING& LineArt() const
+    {return field_LineArt;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 6;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangeLineAttributesReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangeLineAttributesReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangeLineAttributesReq& other_value);
+void copy_template(const ChangeLineAttributesReq_template& other_value);
+
+public:
+ChangeLineAttributesReq_template();
+ChangeLineAttributesReq_template(template_sel other_value);
+ChangeLineAttributesReq_template(const ChangeLineAttributesReq& other_value);
+ChangeLineAttributesReq_template(const OPTIONAL<ChangeLineAttributesReq>& other_value);
+ChangeLineAttributesReq_template(const ChangeLineAttributesReq_template& other_value);
+~ChangeLineAttributesReq_template();
+ChangeLineAttributesReq_template& operator=(template_sel other_value);
+ChangeLineAttributesReq_template& operator=(const ChangeLineAttributesReq& other_value);
+ChangeLineAttributesReq_template& operator=(const OPTIONAL<ChangeLineAttributesReq>& other_value);
+ChangeLineAttributesReq_template& operator=(const ChangeLineAttributesReq_template& other_value);
+boolean match(const ChangeLineAttributesReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangeLineAttributesReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangeLineAttributesReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& ObjectIDofObjectToChange();
+const INTEGER_template& ObjectIDofObjectToChange() const;
+INTEGER_template& lineColour();
+const INTEGER_template& lineColour() const;
+INTEGER_template& lineWidth();
+const INTEGER_template& lineWidth() const;
+BITSTRING_template& LineArt();
+const BITSTRING_template& LineArt() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangeLineAttributesReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangeFillAttributesRes__errorCodes : public Base_Type {
+  BOOLEAN field_invalidObjectID;
+  BOOLEAN field_invalidType;
+  BOOLEAN field_invalidColor;
+  BOOLEAN field_invalidPatternObjectID;
+  BOOLEAN field_anyOtherError;
+  BOOLEAN field_reserved5;
+  BOOLEAN field_reserved6;
+  BOOLEAN field_reserved7;
+public:
+  ChangeFillAttributesRes__errorCodes();
+  ChangeFillAttributesRes__errorCodes(const BOOLEAN& par_invalidObjectID,
+    const BOOLEAN& par_invalidType,
+    const BOOLEAN& par_invalidColor,
+    const BOOLEAN& par_invalidPatternObjectID,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7);
+  ChangeFillAttributesRes__errorCodes(const ChangeFillAttributesRes__errorCodes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangeFillAttributesRes__errorCodes& operator=(const ChangeFillAttributesRes__errorCodes& other_value);
+  boolean operator==(const ChangeFillAttributesRes__errorCodes& other_value) const;
+  inline boolean operator!=(const ChangeFillAttributesRes__errorCodes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& invalidObjectID()
+    {return field_invalidObjectID;}
+  inline const BOOLEAN& invalidObjectID() const
+    {return field_invalidObjectID;}
+  inline BOOLEAN& invalidType()
+    {return field_invalidType;}
+  inline const BOOLEAN& invalidType() const
+    {return field_invalidType;}
+  inline BOOLEAN& invalidColor()
+    {return field_invalidColor;}
+  inline const BOOLEAN& invalidColor() const
+    {return field_invalidColor;}
+  inline BOOLEAN& invalidPatternObjectID()
+    {return field_invalidPatternObjectID;}
+  inline const BOOLEAN& invalidPatternObjectID() const
+    {return field_invalidPatternObjectID;}
+  inline BOOLEAN& anyOtherError()
+    {return field_anyOtherError;}
+  inline const BOOLEAN& anyOtherError() const
+    {return field_anyOtherError;}
+  inline BOOLEAN& reserved5()
+    {return field_reserved5;}
+  inline const BOOLEAN& reserved5() const
+    {return field_reserved5;}
+  inline BOOLEAN& reserved6()
+    {return field_reserved6;}
+  inline const BOOLEAN& reserved6() const
+    {return field_reserved6;}
+  inline BOOLEAN& reserved7()
+    {return field_reserved7;}
+  inline const BOOLEAN& reserved7() const
+    {return field_reserved7;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangeFillAttributesRes__errorCodes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangeFillAttributesRes__errorCodes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangeFillAttributesRes__errorCodes& other_value);
+void copy_template(const ChangeFillAttributesRes__errorCodes_template& other_value);
+
+public:
+ChangeFillAttributesRes__errorCodes_template();
+ChangeFillAttributesRes__errorCodes_template(template_sel other_value);
+ChangeFillAttributesRes__errorCodes_template(const ChangeFillAttributesRes__errorCodes& other_value);
+ChangeFillAttributesRes__errorCodes_template(const OPTIONAL<ChangeFillAttributesRes__errorCodes>& other_value);
+ChangeFillAttributesRes__errorCodes_template(const ChangeFillAttributesRes__errorCodes_template& other_value);
+~ChangeFillAttributesRes__errorCodes_template();
+ChangeFillAttributesRes__errorCodes_template& operator=(template_sel other_value);
+ChangeFillAttributesRes__errorCodes_template& operator=(const ChangeFillAttributesRes__errorCodes& other_value);
+ChangeFillAttributesRes__errorCodes_template& operator=(const OPTIONAL<ChangeFillAttributesRes__errorCodes>& other_value);
+ChangeFillAttributesRes__errorCodes_template& operator=(const ChangeFillAttributesRes__errorCodes_template& other_value);
+boolean match(const ChangeFillAttributesRes__errorCodes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangeFillAttributesRes__errorCodes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangeFillAttributesRes__errorCodes_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& invalidObjectID();
+const BOOLEAN_template& invalidObjectID() const;
+BOOLEAN_template& invalidType();
+const BOOLEAN_template& invalidType() const;
+BOOLEAN_template& invalidColor();
+const BOOLEAN_template& invalidColor() const;
+BOOLEAN_template& invalidPatternObjectID();
+const BOOLEAN_template& invalidPatternObjectID() const;
+BOOLEAN_template& anyOtherError();
+const BOOLEAN_template& anyOtherError() const;
+BOOLEAN_template& reserved5();
+const BOOLEAN_template& reserved5() const;
+BOOLEAN_template& reserved6();
+const BOOLEAN_template& reserved6() const;
+BOOLEAN_template& reserved7();
+const BOOLEAN_template& reserved7() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangeFillAttributesRes__errorCodes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangeFillAttributesRes : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectID;
+  ChangeFillAttributesRes__errorCodes field_errorCodes;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  ChangeFillAttributesRes();
+  ChangeFillAttributesRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const ChangeFillAttributesRes__errorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  ChangeFillAttributesRes(const ChangeFillAttributesRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangeFillAttributesRes& operator=(const ChangeFillAttributesRes& other_value);
+  boolean operator==(const ChangeFillAttributesRes& other_value) const;
+  inline boolean operator!=(const ChangeFillAttributesRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectID()
+    {return field_objectID;}
+  inline const INTEGER& objectID() const
+    {return field_objectID;}
+  inline ChangeFillAttributesRes__errorCodes& errorCodes()
+    {return field_errorCodes;}
+  inline const ChangeFillAttributesRes__errorCodes& errorCodes() const
+    {return field_errorCodes;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 7;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangeFillAttributesRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangeFillAttributesRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangeFillAttributesRes& other_value);
+void copy_template(const ChangeFillAttributesRes_template& other_value);
+
+public:
+ChangeFillAttributesRes_template();
+ChangeFillAttributesRes_template(template_sel other_value);
+ChangeFillAttributesRes_template(const ChangeFillAttributesRes& other_value);
+ChangeFillAttributesRes_template(const OPTIONAL<ChangeFillAttributesRes>& other_value);
+ChangeFillAttributesRes_template(const ChangeFillAttributesRes_template& other_value);
+~ChangeFillAttributesRes_template();
+ChangeFillAttributesRes_template& operator=(template_sel other_value);
+ChangeFillAttributesRes_template& operator=(const ChangeFillAttributesRes& other_value);
+ChangeFillAttributesRes_template& operator=(const OPTIONAL<ChangeFillAttributesRes>& other_value);
+ChangeFillAttributesRes_template& operator=(const ChangeFillAttributesRes_template& other_value);
+boolean match(const ChangeFillAttributesRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangeFillAttributesRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangeFillAttributesRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectID();
+const INTEGER_template& objectID() const;
+ChangeFillAttributesRes__errorCodes_template& errorCodes();
+const ChangeFillAttributesRes__errorCodes_template& errorCodes() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangeFillAttributesRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangeFillAttributesReq : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_ObjectIDofObjectToChange;
+  INTEGER field_lineColour;
+  INTEGER field_lineWidth;
+  BITSTRING field_lineArt;
+  INTEGER field_fillPatternObjectID;
+  OCTETSTRING field_reserved8;
+public:
+  ChangeFillAttributesReq();
+  ChangeFillAttributesReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_ObjectIDofObjectToChange,
+    const INTEGER& par_lineColour,
+    const INTEGER& par_lineWidth,
+    const BITSTRING& par_lineArt,
+    const INTEGER& par_fillPatternObjectID,
+    const OCTETSTRING& par_reserved8);
+  ChangeFillAttributesReq(const ChangeFillAttributesReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangeFillAttributesReq& operator=(const ChangeFillAttributesReq& other_value);
+  boolean operator==(const ChangeFillAttributesReq& other_value) const;
+  inline boolean operator!=(const ChangeFillAttributesReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& ObjectIDofObjectToChange()
+    {return field_ObjectIDofObjectToChange;}
+  inline const INTEGER& ObjectIDofObjectToChange() const
+    {return field_ObjectIDofObjectToChange;}
+  inline INTEGER& lineColour()
+    {return field_lineColour;}
+  inline const INTEGER& lineColour() const
+    {return field_lineColour;}
+  inline INTEGER& lineWidth()
+    {return field_lineWidth;}
+  inline const INTEGER& lineWidth() const
+    {return field_lineWidth;}
+  inline BITSTRING& lineArt()
+    {return field_lineArt;}
+  inline const BITSTRING& lineArt() const
+    {return field_lineArt;}
+  inline INTEGER& fillPatternObjectID()
+    {return field_fillPatternObjectID;}
+  inline const INTEGER& fillPatternObjectID() const
+    {return field_fillPatternObjectID;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 7;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangeFillAttributesReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangeFillAttributesReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangeFillAttributesReq& other_value);
+void copy_template(const ChangeFillAttributesReq_template& other_value);
+
+public:
+ChangeFillAttributesReq_template();
+ChangeFillAttributesReq_template(template_sel other_value);
+ChangeFillAttributesReq_template(const ChangeFillAttributesReq& other_value);
+ChangeFillAttributesReq_template(const OPTIONAL<ChangeFillAttributesReq>& other_value);
+ChangeFillAttributesReq_template(const ChangeFillAttributesReq_template& other_value);
+~ChangeFillAttributesReq_template();
+ChangeFillAttributesReq_template& operator=(template_sel other_value);
+ChangeFillAttributesReq_template& operator=(const ChangeFillAttributesReq& other_value);
+ChangeFillAttributesReq_template& operator=(const OPTIONAL<ChangeFillAttributesReq>& other_value);
+ChangeFillAttributesReq_template& operator=(const ChangeFillAttributesReq_template& other_value);
+boolean match(const ChangeFillAttributesReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangeFillAttributesReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangeFillAttributesReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& ObjectIDofObjectToChange();
+const INTEGER_template& ObjectIDofObjectToChange() const;
+INTEGER_template& lineColour();
+const INTEGER_template& lineColour() const;
+INTEGER_template& lineWidth();
+const INTEGER_template& lineWidth() const;
+BITSTRING_template& lineArt();
+const BITSTRING_template& lineArt() const;
+INTEGER_template& fillPatternObjectID();
+const INTEGER_template& fillPatternObjectID() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangeFillAttributesReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangeActiveMaskReq : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_workingSetObjectID;
+  INTEGER field_newActiveMaskObjectID;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  ChangeActiveMaskReq();
+  ChangeActiveMaskReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_workingSetObjectID,
+    const INTEGER& par_newActiveMaskObjectID,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  ChangeActiveMaskReq(const ChangeActiveMaskReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangeActiveMaskReq& operator=(const ChangeActiveMaskReq& other_value);
+  boolean operator==(const ChangeActiveMaskReq& other_value) const;
+  inline boolean operator!=(const ChangeActiveMaskReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& workingSetObjectID()
+    {return field_workingSetObjectID;}
+  inline const INTEGER& workingSetObjectID() const
+    {return field_workingSetObjectID;}
+  inline INTEGER& newActiveMaskObjectID()
+    {return field_newActiveMaskObjectID;}
+  inline const INTEGER& newActiveMaskObjectID() const
+    {return field_newActiveMaskObjectID;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 6;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangeActiveMaskReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangeActiveMaskReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangeActiveMaskReq& other_value);
+void copy_template(const ChangeActiveMaskReq_template& other_value);
+
+public:
+ChangeActiveMaskReq_template();
+ChangeActiveMaskReq_template(template_sel other_value);
+ChangeActiveMaskReq_template(const ChangeActiveMaskReq& other_value);
+ChangeActiveMaskReq_template(const OPTIONAL<ChangeActiveMaskReq>& other_value);
+ChangeActiveMaskReq_template(const ChangeActiveMaskReq_template& other_value);
+~ChangeActiveMaskReq_template();
+ChangeActiveMaskReq_template& operator=(template_sel other_value);
+ChangeActiveMaskReq_template& operator=(const ChangeActiveMaskReq& other_value);
+ChangeActiveMaskReq_template& operator=(const OPTIONAL<ChangeActiveMaskReq>& other_value);
+ChangeActiveMaskReq_template& operator=(const ChangeActiveMaskReq_template& other_value);
+boolean match(const ChangeActiveMaskReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangeActiveMaskReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangeActiveMaskReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& workingSetObjectID();
+const INTEGER_template& workingSetObjectID() const;
+INTEGER_template& newActiveMaskObjectID();
+const INTEGER_template& newActiveMaskObjectID() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangeActiveMaskReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangeActiveMaskRes__errorCodes : public Base_Type {
+  BOOLEAN field_invalidWorkingSetObjectID;
+  BOOLEAN field_invalidMaskObjectID;
+  BOOLEAN field_undefined1;
+  BOOLEAN field_undefined2;
+  BOOLEAN field_anyOtherError;
+  BOOLEAN field_reserved5;
+  BOOLEAN field_reserved6;
+  BOOLEAN field_reserved7;
+public:
+  ChangeActiveMaskRes__errorCodes();
+  ChangeActiveMaskRes__errorCodes(const BOOLEAN& par_invalidWorkingSetObjectID,
+    const BOOLEAN& par_invalidMaskObjectID,
+    const BOOLEAN& par_undefined1,
+    const BOOLEAN& par_undefined2,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7);
+  ChangeActiveMaskRes__errorCodes(const ChangeActiveMaskRes__errorCodes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangeActiveMaskRes__errorCodes& operator=(const ChangeActiveMaskRes__errorCodes& other_value);
+  boolean operator==(const ChangeActiveMaskRes__errorCodes& other_value) const;
+  inline boolean operator!=(const ChangeActiveMaskRes__errorCodes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& invalidWorkingSetObjectID()
+    {return field_invalidWorkingSetObjectID;}
+  inline const BOOLEAN& invalidWorkingSetObjectID() const
+    {return field_invalidWorkingSetObjectID;}
+  inline BOOLEAN& invalidMaskObjectID()
+    {return field_invalidMaskObjectID;}
+  inline const BOOLEAN& invalidMaskObjectID() const
+    {return field_invalidMaskObjectID;}
+  inline BOOLEAN& undefined1()
+    {return field_undefined1;}
+  inline const BOOLEAN& undefined1() const
+    {return field_undefined1;}
+  inline BOOLEAN& undefined2()
+    {return field_undefined2;}
+  inline const BOOLEAN& undefined2() const
+    {return field_undefined2;}
+  inline BOOLEAN& anyOtherError()
+    {return field_anyOtherError;}
+  inline const BOOLEAN& anyOtherError() const
+    {return field_anyOtherError;}
+  inline BOOLEAN& reserved5()
+    {return field_reserved5;}
+  inline const BOOLEAN& reserved5() const
+    {return field_reserved5;}
+  inline BOOLEAN& reserved6()
+    {return field_reserved6;}
+  inline const BOOLEAN& reserved6() const
+    {return field_reserved6;}
+  inline BOOLEAN& reserved7()
+    {return field_reserved7;}
+  inline const BOOLEAN& reserved7() const
+    {return field_reserved7;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangeActiveMaskRes__errorCodes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangeActiveMaskRes__errorCodes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangeActiveMaskRes__errorCodes& other_value);
+void copy_template(const ChangeActiveMaskRes__errorCodes_template& other_value);
+
+public:
+ChangeActiveMaskRes__errorCodes_template();
+ChangeActiveMaskRes__errorCodes_template(template_sel other_value);
+ChangeActiveMaskRes__errorCodes_template(const ChangeActiveMaskRes__errorCodes& other_value);
+ChangeActiveMaskRes__errorCodes_template(const OPTIONAL<ChangeActiveMaskRes__errorCodes>& other_value);
+ChangeActiveMaskRes__errorCodes_template(const ChangeActiveMaskRes__errorCodes_template& other_value);
+~ChangeActiveMaskRes__errorCodes_template();
+ChangeActiveMaskRes__errorCodes_template& operator=(template_sel other_value);
+ChangeActiveMaskRes__errorCodes_template& operator=(const ChangeActiveMaskRes__errorCodes& other_value);
+ChangeActiveMaskRes__errorCodes_template& operator=(const OPTIONAL<ChangeActiveMaskRes__errorCodes>& other_value);
+ChangeActiveMaskRes__errorCodes_template& operator=(const ChangeActiveMaskRes__errorCodes_template& other_value);
+boolean match(const ChangeActiveMaskRes__errorCodes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangeActiveMaskRes__errorCodes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangeActiveMaskRes__errorCodes_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& invalidWorkingSetObjectID();
+const BOOLEAN_template& invalidWorkingSetObjectID() const;
+BOOLEAN_template& invalidMaskObjectID();
+const BOOLEAN_template& invalidMaskObjectID() const;
+BOOLEAN_template& undefined1();
+const BOOLEAN_template& undefined1() const;
+BOOLEAN_template& undefined2();
+const BOOLEAN_template& undefined2() const;
+BOOLEAN_template& anyOtherError();
+const BOOLEAN_template& anyOtherError() const;
+BOOLEAN_template& reserved5();
+const BOOLEAN_template& reserved5() const;
+BOOLEAN_template& reserved6();
+const BOOLEAN_template& reserved6() const;
+BOOLEAN_template& reserved7();
+const BOOLEAN_template& reserved7() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangeActiveMaskRes__errorCodes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangeActiveMaskRes : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_newActiveMaskObjectID;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  ChangeActiveMaskRes();
+  ChangeActiveMaskRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_newActiveMaskObjectID,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  ChangeActiveMaskRes(const ChangeActiveMaskRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangeActiveMaskRes& operator=(const ChangeActiveMaskRes& other_value);
+  boolean operator==(const ChangeActiveMaskRes& other_value) const;
+  inline boolean operator!=(const ChangeActiveMaskRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& newActiveMaskObjectID()
+    {return field_newActiveMaskObjectID;}
+  inline const INTEGER& newActiveMaskObjectID() const
+    {return field_newActiveMaskObjectID;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 6;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangeActiveMaskRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangeActiveMaskRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangeActiveMaskRes& other_value);
+void copy_template(const ChangeActiveMaskRes_template& other_value);
+
+public:
+ChangeActiveMaskRes_template();
+ChangeActiveMaskRes_template(template_sel other_value);
+ChangeActiveMaskRes_template(const ChangeActiveMaskRes& other_value);
+ChangeActiveMaskRes_template(const OPTIONAL<ChangeActiveMaskRes>& other_value);
+ChangeActiveMaskRes_template(const ChangeActiveMaskRes_template& other_value);
+~ChangeActiveMaskRes_template();
+ChangeActiveMaskRes_template& operator=(template_sel other_value);
+ChangeActiveMaskRes_template& operator=(const ChangeActiveMaskRes& other_value);
+ChangeActiveMaskRes_template& operator=(const OPTIONAL<ChangeActiveMaskRes>& other_value);
+ChangeActiveMaskRes_template& operator=(const ChangeActiveMaskRes_template& other_value);
+boolean match(const ChangeActiveMaskRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangeActiveMaskRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangeActiveMaskRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& newActiveMaskObjectID();
+const INTEGER_template& newActiveMaskObjectID() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangeActiveMaskRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class e__ChangeSoftKeyMaskReq__MaskType : public Base_Type { // enum
+friend class e__ChangeSoftKeyMaskReq__MaskType_template;
+public:
+enum enum_type { Data = 1, Alarm = 2, UNKNOWN_VALUE = 0, UNBOUND_VALUE = 3 };
+private:
+enum_type enum_value;
+
+public:
+e__ChangeSoftKeyMaskReq__MaskType();
+e__ChangeSoftKeyMaskReq__MaskType(int other_value);
+e__ChangeSoftKeyMaskReq__MaskType(enum_type other_value);
+e__ChangeSoftKeyMaskReq__MaskType(const e__ChangeSoftKeyMaskReq__MaskType& other_value);
+
+e__ChangeSoftKeyMaskReq__MaskType& operator=(int other_value);
+e__ChangeSoftKeyMaskReq__MaskType& operator=(enum_type other_value);
+e__ChangeSoftKeyMaskReq__MaskType& operator=(const e__ChangeSoftKeyMaskReq__MaskType& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const e__ChangeSoftKeyMaskReq__MaskType& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const e__ChangeSoftKeyMaskReq__MaskType& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const e__ChangeSoftKeyMaskReq__MaskType& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const e__ChangeSoftKeyMaskReq__MaskType& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const e__ChangeSoftKeyMaskReq__MaskType& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const e__ChangeSoftKeyMaskReq__MaskType& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const e__ChangeSoftKeyMaskReq__MaskType& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class e__ChangeSoftKeyMaskReq__MaskType_template : public Base_Template {
+union {
+e__ChangeSoftKeyMaskReq__MaskType::enum_type single_value;
+struct {
+unsigned int n_values;
+e__ChangeSoftKeyMaskReq__MaskType_template *list_value;
+} value_list;
+};
+
+void copy_template(const e__ChangeSoftKeyMaskReq__MaskType_template& other_value);
+
+public:
+e__ChangeSoftKeyMaskReq__MaskType_template();
+e__ChangeSoftKeyMaskReq__MaskType_template(template_sel other_value);
+e__ChangeSoftKeyMaskReq__MaskType_template(int other_value);
+e__ChangeSoftKeyMaskReq__MaskType_template(e__ChangeSoftKeyMaskReq__MaskType::enum_type other_value);
+e__ChangeSoftKeyMaskReq__MaskType_template(const e__ChangeSoftKeyMaskReq__MaskType& other_value);
+e__ChangeSoftKeyMaskReq__MaskType_template(const OPTIONAL<e__ChangeSoftKeyMaskReq__MaskType>& other_value);
+e__ChangeSoftKeyMaskReq__MaskType_template(const e__ChangeSoftKeyMaskReq__MaskType_template& other_value);
+~e__ChangeSoftKeyMaskReq__MaskType_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+e__ChangeSoftKeyMaskReq__MaskType_template& operator=(template_sel other_value);
+e__ChangeSoftKeyMaskReq__MaskType_template& operator=(int other_value);
+e__ChangeSoftKeyMaskReq__MaskType_template& operator=(e__ChangeSoftKeyMaskReq__MaskType::enum_type other_value);
+e__ChangeSoftKeyMaskReq__MaskType_template& operator=(const e__ChangeSoftKeyMaskReq__MaskType& other_value);
+e__ChangeSoftKeyMaskReq__MaskType_template& operator=(const OPTIONAL<e__ChangeSoftKeyMaskReq__MaskType>& other_value);
+e__ChangeSoftKeyMaskReq__MaskType_template& operator=(const e__ChangeSoftKeyMaskReq__MaskType_template& other_value);
+
+boolean match(e__ChangeSoftKeyMaskReq__MaskType::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const e__ChangeSoftKeyMaskReq__MaskType& other_value, boolean legacy = FALSE) const;
+e__ChangeSoftKeyMaskReq__MaskType::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+e__ChangeSoftKeyMaskReq__MaskType_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const e__ChangeSoftKeyMaskReq__MaskType& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class ChangeSoftKeyMaskReq : public Base_Type {
+  INTEGER field_vtfunction;
+  e__ChangeSoftKeyMaskReq__MaskType field_maskType;
+  INTEGER field_DataOrAlarmMaskObjectID;
+  INTEGER field_NewSoftKeyMaskObjectID;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  ChangeSoftKeyMaskReq();
+  ChangeSoftKeyMaskReq(const INTEGER& par_vtfunction,
+    const e__ChangeSoftKeyMaskReq__MaskType& par_maskType,
+    const INTEGER& par_DataOrAlarmMaskObjectID,
+    const INTEGER& par_NewSoftKeyMaskObjectID,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  ChangeSoftKeyMaskReq(const ChangeSoftKeyMaskReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangeSoftKeyMaskReq& operator=(const ChangeSoftKeyMaskReq& other_value);
+  boolean operator==(const ChangeSoftKeyMaskReq& other_value) const;
+  inline boolean operator!=(const ChangeSoftKeyMaskReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline e__ChangeSoftKeyMaskReq__MaskType& maskType()
+    {return field_maskType;}
+  inline const e__ChangeSoftKeyMaskReq__MaskType& maskType() const
+    {return field_maskType;}
+  inline INTEGER& DataOrAlarmMaskObjectID()
+    {return field_DataOrAlarmMaskObjectID;}
+  inline const INTEGER& DataOrAlarmMaskObjectID() const
+    {return field_DataOrAlarmMaskObjectID;}
+  inline INTEGER& NewSoftKeyMaskObjectID()
+    {return field_NewSoftKeyMaskObjectID;}
+  inline const INTEGER& NewSoftKeyMaskObjectID() const
+    {return field_NewSoftKeyMaskObjectID;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 6;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangeSoftKeyMaskReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangeSoftKeyMaskReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangeSoftKeyMaskReq& other_value);
+void copy_template(const ChangeSoftKeyMaskReq_template& other_value);
+
+public:
+ChangeSoftKeyMaskReq_template();
+ChangeSoftKeyMaskReq_template(template_sel other_value);
+ChangeSoftKeyMaskReq_template(const ChangeSoftKeyMaskReq& other_value);
+ChangeSoftKeyMaskReq_template(const OPTIONAL<ChangeSoftKeyMaskReq>& other_value);
+ChangeSoftKeyMaskReq_template(const ChangeSoftKeyMaskReq_template& other_value);
+~ChangeSoftKeyMaskReq_template();
+ChangeSoftKeyMaskReq_template& operator=(template_sel other_value);
+ChangeSoftKeyMaskReq_template& operator=(const ChangeSoftKeyMaskReq& other_value);
+ChangeSoftKeyMaskReq_template& operator=(const OPTIONAL<ChangeSoftKeyMaskReq>& other_value);
+ChangeSoftKeyMaskReq_template& operator=(const ChangeSoftKeyMaskReq_template& other_value);
+boolean match(const ChangeSoftKeyMaskReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangeSoftKeyMaskReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangeSoftKeyMaskReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+e__ChangeSoftKeyMaskReq__MaskType_template& maskType();
+const e__ChangeSoftKeyMaskReq__MaskType_template& maskType() const;
+INTEGER_template& DataOrAlarmMaskObjectID();
+const INTEGER_template& DataOrAlarmMaskObjectID() const;
+INTEGER_template& NewSoftKeyMaskObjectID();
+const INTEGER_template& NewSoftKeyMaskObjectID() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangeSoftKeyMaskReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangeSoftKeyMaskRes__errorCodes : public Base_Type {
+  BOOLEAN field_invalidDataOrAlarmMaskObjectID;
+  BOOLEAN field_invalidSoftKeyMaskObjectID;
+  BOOLEAN field_missingObjects;
+  BOOLEAN field_MaskOrChildObjectHasErrors;
+  BOOLEAN field_anyOtherError;
+  BOOLEAN field_reserved5;
+  BOOLEAN field_reserved6;
+  BOOLEAN field_reserved7;
+public:
+  ChangeSoftKeyMaskRes__errorCodes();
+  ChangeSoftKeyMaskRes__errorCodes(const BOOLEAN& par_invalidDataOrAlarmMaskObjectID,
+    const BOOLEAN& par_invalidSoftKeyMaskObjectID,
+    const BOOLEAN& par_missingObjects,
+    const BOOLEAN& par_MaskOrChildObjectHasErrors,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7);
+  ChangeSoftKeyMaskRes__errorCodes(const ChangeSoftKeyMaskRes__errorCodes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangeSoftKeyMaskRes__errorCodes& operator=(const ChangeSoftKeyMaskRes__errorCodes& other_value);
+  boolean operator==(const ChangeSoftKeyMaskRes__errorCodes& other_value) const;
+  inline boolean operator!=(const ChangeSoftKeyMaskRes__errorCodes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& invalidDataOrAlarmMaskObjectID()
+    {return field_invalidDataOrAlarmMaskObjectID;}
+  inline const BOOLEAN& invalidDataOrAlarmMaskObjectID() const
+    {return field_invalidDataOrAlarmMaskObjectID;}
+  inline BOOLEAN& invalidSoftKeyMaskObjectID()
+    {return field_invalidSoftKeyMaskObjectID;}
+  inline const BOOLEAN& invalidSoftKeyMaskObjectID() const
+    {return field_invalidSoftKeyMaskObjectID;}
+  inline BOOLEAN& missingObjects()
+    {return field_missingObjects;}
+  inline const BOOLEAN& missingObjects() const
+    {return field_missingObjects;}
+  inline BOOLEAN& MaskOrChildObjectHasErrors()
+    {return field_MaskOrChildObjectHasErrors;}
+  inline const BOOLEAN& MaskOrChildObjectHasErrors() const
+    {return field_MaskOrChildObjectHasErrors;}
+  inline BOOLEAN& anyOtherError()
+    {return field_anyOtherError;}
+  inline const BOOLEAN& anyOtherError() const
+    {return field_anyOtherError;}
+  inline BOOLEAN& reserved5()
+    {return field_reserved5;}
+  inline const BOOLEAN& reserved5() const
+    {return field_reserved5;}
+  inline BOOLEAN& reserved6()
+    {return field_reserved6;}
+  inline const BOOLEAN& reserved6() const
+    {return field_reserved6;}
+  inline BOOLEAN& reserved7()
+    {return field_reserved7;}
+  inline const BOOLEAN& reserved7() const
+    {return field_reserved7;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangeSoftKeyMaskRes__errorCodes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangeSoftKeyMaskRes__errorCodes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangeSoftKeyMaskRes__errorCodes& other_value);
+void copy_template(const ChangeSoftKeyMaskRes__errorCodes_template& other_value);
+
+public:
+ChangeSoftKeyMaskRes__errorCodes_template();
+ChangeSoftKeyMaskRes__errorCodes_template(template_sel other_value);
+ChangeSoftKeyMaskRes__errorCodes_template(const ChangeSoftKeyMaskRes__errorCodes& other_value);
+ChangeSoftKeyMaskRes__errorCodes_template(const OPTIONAL<ChangeSoftKeyMaskRes__errorCodes>& other_value);
+ChangeSoftKeyMaskRes__errorCodes_template(const ChangeSoftKeyMaskRes__errorCodes_template& other_value);
+~ChangeSoftKeyMaskRes__errorCodes_template();
+ChangeSoftKeyMaskRes__errorCodes_template& operator=(template_sel other_value);
+ChangeSoftKeyMaskRes__errorCodes_template& operator=(const ChangeSoftKeyMaskRes__errorCodes& other_value);
+ChangeSoftKeyMaskRes__errorCodes_template& operator=(const OPTIONAL<ChangeSoftKeyMaskRes__errorCodes>& other_value);
+ChangeSoftKeyMaskRes__errorCodes_template& operator=(const ChangeSoftKeyMaskRes__errorCodes_template& other_value);
+boolean match(const ChangeSoftKeyMaskRes__errorCodes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangeSoftKeyMaskRes__errorCodes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangeSoftKeyMaskRes__errorCodes_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& invalidDataOrAlarmMaskObjectID();
+const BOOLEAN_template& invalidDataOrAlarmMaskObjectID() const;
+BOOLEAN_template& invalidSoftKeyMaskObjectID();
+const BOOLEAN_template& invalidSoftKeyMaskObjectID() const;
+BOOLEAN_template& missingObjects();
+const BOOLEAN_template& missingObjects() const;
+BOOLEAN_template& MaskOrChildObjectHasErrors();
+const BOOLEAN_template& MaskOrChildObjectHasErrors() const;
+BOOLEAN_template& anyOtherError();
+const BOOLEAN_template& anyOtherError() const;
+BOOLEAN_template& reserved5();
+const BOOLEAN_template& reserved5() const;
+BOOLEAN_template& reserved6();
+const BOOLEAN_template& reserved6() const;
+BOOLEAN_template& reserved7();
+const BOOLEAN_template& reserved7() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangeSoftKeyMaskRes__errorCodes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangeSoftKeyMaskRes : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_DataOrAlarmMaskObjectID;
+  INTEGER field_NewSoftKeyMaskObjectID;
+  ChangeSoftKeyMaskRes__errorCodes field_errorCodes;
+  OCTETSTRING field_reserved8;
+public:
+  ChangeSoftKeyMaskRes();
+  ChangeSoftKeyMaskRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_DataOrAlarmMaskObjectID,
+    const INTEGER& par_NewSoftKeyMaskObjectID,
+    const ChangeSoftKeyMaskRes__errorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved8);
+  ChangeSoftKeyMaskRes(const ChangeSoftKeyMaskRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangeSoftKeyMaskRes& operator=(const ChangeSoftKeyMaskRes& other_value);
+  boolean operator==(const ChangeSoftKeyMaskRes& other_value) const;
+  inline boolean operator!=(const ChangeSoftKeyMaskRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& DataOrAlarmMaskObjectID()
+    {return field_DataOrAlarmMaskObjectID;}
+  inline const INTEGER& DataOrAlarmMaskObjectID() const
+    {return field_DataOrAlarmMaskObjectID;}
+  inline INTEGER& NewSoftKeyMaskObjectID()
+    {return field_NewSoftKeyMaskObjectID;}
+  inline const INTEGER& NewSoftKeyMaskObjectID() const
+    {return field_NewSoftKeyMaskObjectID;}
+  inline ChangeSoftKeyMaskRes__errorCodes& errorCodes()
+    {return field_errorCodes;}
+  inline const ChangeSoftKeyMaskRes__errorCodes& errorCodes() const
+    {return field_errorCodes;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 5;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangeSoftKeyMaskRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangeSoftKeyMaskRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangeSoftKeyMaskRes& other_value);
+void copy_template(const ChangeSoftKeyMaskRes_template& other_value);
+
+public:
+ChangeSoftKeyMaskRes_template();
+ChangeSoftKeyMaskRes_template(template_sel other_value);
+ChangeSoftKeyMaskRes_template(const ChangeSoftKeyMaskRes& other_value);
+ChangeSoftKeyMaskRes_template(const OPTIONAL<ChangeSoftKeyMaskRes>& other_value);
+ChangeSoftKeyMaskRes_template(const ChangeSoftKeyMaskRes_template& other_value);
+~ChangeSoftKeyMaskRes_template();
+ChangeSoftKeyMaskRes_template& operator=(template_sel other_value);
+ChangeSoftKeyMaskRes_template& operator=(const ChangeSoftKeyMaskRes& other_value);
+ChangeSoftKeyMaskRes_template& operator=(const OPTIONAL<ChangeSoftKeyMaskRes>& other_value);
+ChangeSoftKeyMaskRes_template& operator=(const ChangeSoftKeyMaskRes_template& other_value);
+boolean match(const ChangeSoftKeyMaskRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangeSoftKeyMaskRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangeSoftKeyMaskRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& DataOrAlarmMaskObjectID();
+const INTEGER_template& DataOrAlarmMaskObjectID() const;
+INTEGER_template& NewSoftKeyMaskObjectID();
+const INTEGER_template& NewSoftKeyMaskObjectID() const;
+ChangeSoftKeyMaskRes__errorCodes_template& errorCodes();
+const ChangeSoftKeyMaskRes__errorCodes_template& errorCodes() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangeSoftKeyMaskRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangeAttributeReq : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectID;
+  INTEGER field_attributeID;
+  OCTETSTRING field_newValueOfAttribute;
+public:
+  ChangeAttributeReq();
+  ChangeAttributeReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const INTEGER& par_attributeID,
+    const OCTETSTRING& par_newValueOfAttribute);
+  ChangeAttributeReq(const ChangeAttributeReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangeAttributeReq& operator=(const ChangeAttributeReq& other_value);
+  boolean operator==(const ChangeAttributeReq& other_value) const;
+  inline boolean operator!=(const ChangeAttributeReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectID()
+    {return field_objectID;}
+  inline const INTEGER& objectID() const
+    {return field_objectID;}
+  inline INTEGER& attributeID()
+    {return field_attributeID;}
+  inline const INTEGER& attributeID() const
+    {return field_attributeID;}
+  inline OCTETSTRING& newValueOfAttribute()
+    {return field_newValueOfAttribute;}
+  inline const OCTETSTRING& newValueOfAttribute() const
+    {return field_newValueOfAttribute;}
+  inline int size_of() const
+    {return 4;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangeAttributeReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangeAttributeReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangeAttributeReq& other_value);
+void copy_template(const ChangeAttributeReq_template& other_value);
+
+public:
+ChangeAttributeReq_template();
+ChangeAttributeReq_template(template_sel other_value);
+ChangeAttributeReq_template(const ChangeAttributeReq& other_value);
+ChangeAttributeReq_template(const OPTIONAL<ChangeAttributeReq>& other_value);
+ChangeAttributeReq_template(const ChangeAttributeReq_template& other_value);
+~ChangeAttributeReq_template();
+ChangeAttributeReq_template& operator=(template_sel other_value);
+ChangeAttributeReq_template& operator=(const ChangeAttributeReq& other_value);
+ChangeAttributeReq_template& operator=(const OPTIONAL<ChangeAttributeReq>& other_value);
+ChangeAttributeReq_template& operator=(const ChangeAttributeReq_template& other_value);
+boolean match(const ChangeAttributeReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangeAttributeReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangeAttributeReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectID();
+const INTEGER_template& objectID() const;
+INTEGER_template& attributeID();
+const INTEGER_template& attributeID() const;
+OCTETSTRING_template& newValueOfAttribute();
+const OCTETSTRING_template& newValueOfAttribute() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangeAttributeReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangeAttributeRes__errorCodes : public Base_Type {
+  BOOLEAN field_invalidWorkingSetObjectID;
+  BOOLEAN field_invalidAttributeID;
+  BOOLEAN field_invalidValue;
+  BOOLEAN field_valueInUse;
+  BOOLEAN field_anyOtherError;
+  BOOLEAN field_reserved5;
+  BOOLEAN field_reserved6;
+  BOOLEAN field_reserved7;
+public:
+  ChangeAttributeRes__errorCodes();
+  ChangeAttributeRes__errorCodes(const BOOLEAN& par_invalidWorkingSetObjectID,
+    const BOOLEAN& par_invalidAttributeID,
+    const BOOLEAN& par_invalidValue,
+    const BOOLEAN& par_valueInUse,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7);
+  ChangeAttributeRes__errorCodes(const ChangeAttributeRes__errorCodes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangeAttributeRes__errorCodes& operator=(const ChangeAttributeRes__errorCodes& other_value);
+  boolean operator==(const ChangeAttributeRes__errorCodes& other_value) const;
+  inline boolean operator!=(const ChangeAttributeRes__errorCodes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& invalidWorkingSetObjectID()
+    {return field_invalidWorkingSetObjectID;}
+  inline const BOOLEAN& invalidWorkingSetObjectID() const
+    {return field_invalidWorkingSetObjectID;}
+  inline BOOLEAN& invalidAttributeID()
+    {return field_invalidAttributeID;}
+  inline const BOOLEAN& invalidAttributeID() const
+    {return field_invalidAttributeID;}
+  inline BOOLEAN& invalidValue()
+    {return field_invalidValue;}
+  inline const BOOLEAN& invalidValue() const
+    {return field_invalidValue;}
+  inline BOOLEAN& valueInUse()
+    {return field_valueInUse;}
+  inline const BOOLEAN& valueInUse() const
+    {return field_valueInUse;}
+  inline BOOLEAN& anyOtherError()
+    {return field_anyOtherError;}
+  inline const BOOLEAN& anyOtherError() const
+    {return field_anyOtherError;}
+  inline BOOLEAN& reserved5()
+    {return field_reserved5;}
+  inline const BOOLEAN& reserved5() const
+    {return field_reserved5;}
+  inline BOOLEAN& reserved6()
+    {return field_reserved6;}
+  inline const BOOLEAN& reserved6() const
+    {return field_reserved6;}
+  inline BOOLEAN& reserved7()
+    {return field_reserved7;}
+  inline const BOOLEAN& reserved7() const
+    {return field_reserved7;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangeAttributeRes__errorCodes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangeAttributeRes__errorCodes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangeAttributeRes__errorCodes& other_value);
+void copy_template(const ChangeAttributeRes__errorCodes_template& other_value);
+
+public:
+ChangeAttributeRes__errorCodes_template();
+ChangeAttributeRes__errorCodes_template(template_sel other_value);
+ChangeAttributeRes__errorCodes_template(const ChangeAttributeRes__errorCodes& other_value);
+ChangeAttributeRes__errorCodes_template(const OPTIONAL<ChangeAttributeRes__errorCodes>& other_value);
+ChangeAttributeRes__errorCodes_template(const ChangeAttributeRes__errorCodes_template& other_value);
+~ChangeAttributeRes__errorCodes_template();
+ChangeAttributeRes__errorCodes_template& operator=(template_sel other_value);
+ChangeAttributeRes__errorCodes_template& operator=(const ChangeAttributeRes__errorCodes& other_value);
+ChangeAttributeRes__errorCodes_template& operator=(const OPTIONAL<ChangeAttributeRes__errorCodes>& other_value);
+ChangeAttributeRes__errorCodes_template& operator=(const ChangeAttributeRes__errorCodes_template& other_value);
+boolean match(const ChangeAttributeRes__errorCodes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangeAttributeRes__errorCodes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangeAttributeRes__errorCodes_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& invalidWorkingSetObjectID();
+const BOOLEAN_template& invalidWorkingSetObjectID() const;
+BOOLEAN_template& invalidAttributeID();
+const BOOLEAN_template& invalidAttributeID() const;
+BOOLEAN_template& invalidValue();
+const BOOLEAN_template& invalidValue() const;
+BOOLEAN_template& valueInUse();
+const BOOLEAN_template& valueInUse() const;
+BOOLEAN_template& anyOtherError();
+const BOOLEAN_template& anyOtherError() const;
+BOOLEAN_template& reserved5();
+const BOOLEAN_template& reserved5() const;
+BOOLEAN_template& reserved6();
+const BOOLEAN_template& reserved6() const;
+BOOLEAN_template& reserved7();
+const BOOLEAN_template& reserved7() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangeAttributeRes__errorCodes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangeAttributeRes : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectID;
+  INTEGER field_attributeID;
+  ChangeAttributeRes__errorCodes field_errorCodes;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  ChangeAttributeRes();
+  ChangeAttributeRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const INTEGER& par_attributeID,
+    const ChangeAttributeRes__errorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  ChangeAttributeRes(const ChangeAttributeRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangeAttributeRes& operator=(const ChangeAttributeRes& other_value);
+  boolean operator==(const ChangeAttributeRes& other_value) const;
+  inline boolean operator!=(const ChangeAttributeRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectID()
+    {return field_objectID;}
+  inline const INTEGER& objectID() const
+    {return field_objectID;}
+  inline INTEGER& attributeID()
+    {return field_attributeID;}
+  inline const INTEGER& attributeID() const
+    {return field_attributeID;}
+  inline ChangeAttributeRes__errorCodes& errorCodes()
+    {return field_errorCodes;}
+  inline const ChangeAttributeRes__errorCodes& errorCodes() const
+    {return field_errorCodes;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 7;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangeAttributeRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangeAttributeRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangeAttributeRes& other_value);
+void copy_template(const ChangeAttributeRes_template& other_value);
+
+public:
+ChangeAttributeRes_template();
+ChangeAttributeRes_template(template_sel other_value);
+ChangeAttributeRes_template(const ChangeAttributeRes& other_value);
+ChangeAttributeRes_template(const OPTIONAL<ChangeAttributeRes>& other_value);
+ChangeAttributeRes_template(const ChangeAttributeRes_template& other_value);
+~ChangeAttributeRes_template();
+ChangeAttributeRes_template& operator=(template_sel other_value);
+ChangeAttributeRes_template& operator=(const ChangeAttributeRes& other_value);
+ChangeAttributeRes_template& operator=(const OPTIONAL<ChangeAttributeRes>& other_value);
+ChangeAttributeRes_template& operator=(const ChangeAttributeRes_template& other_value);
+boolean match(const ChangeAttributeRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangeAttributeRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangeAttributeRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectID();
+const INTEGER_template& objectID() const;
+INTEGER_template& attributeID();
+const INTEGER_template& attributeID() const;
+ChangeAttributeRes__errorCodes_template& errorCodes();
+const ChangeAttributeRes__errorCodes_template& errorCodes() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangeAttributeRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangePriorityRes__errorCodes : public Base_Type {
+  BOOLEAN field_invalidObjectID;
+  BOOLEAN field_invalidPriority;
+  BOOLEAN field_reserved2;
+  BOOLEAN field_reserved3;
+  BOOLEAN field_anyOtherError;
+  BOOLEAN field_reserved5;
+  BOOLEAN field_reserved6;
+  BOOLEAN field_reserved7;
+public:
+  ChangePriorityRes__errorCodes();
+  ChangePriorityRes__errorCodes(const BOOLEAN& par_invalidObjectID,
+    const BOOLEAN& par_invalidPriority,
+    const BOOLEAN& par_reserved2,
+    const BOOLEAN& par_reserved3,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7);
+  ChangePriorityRes__errorCodes(const ChangePriorityRes__errorCodes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangePriorityRes__errorCodes& operator=(const ChangePriorityRes__errorCodes& other_value);
+  boolean operator==(const ChangePriorityRes__errorCodes& other_value) const;
+  inline boolean operator!=(const ChangePriorityRes__errorCodes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& invalidObjectID()
+    {return field_invalidObjectID;}
+  inline const BOOLEAN& invalidObjectID() const
+    {return field_invalidObjectID;}
+  inline BOOLEAN& invalidPriority()
+    {return field_invalidPriority;}
+  inline const BOOLEAN& invalidPriority() const
+    {return field_invalidPriority;}
+  inline BOOLEAN& reserved2()
+    {return field_reserved2;}
+  inline const BOOLEAN& reserved2() const
+    {return field_reserved2;}
+  inline BOOLEAN& reserved3()
+    {return field_reserved3;}
+  inline const BOOLEAN& reserved3() const
+    {return field_reserved3;}
+  inline BOOLEAN& anyOtherError()
+    {return field_anyOtherError;}
+  inline const BOOLEAN& anyOtherError() const
+    {return field_anyOtherError;}
+  inline BOOLEAN& reserved5()
+    {return field_reserved5;}
+  inline const BOOLEAN& reserved5() const
+    {return field_reserved5;}
+  inline BOOLEAN& reserved6()
+    {return field_reserved6;}
+  inline const BOOLEAN& reserved6() const
+    {return field_reserved6;}
+  inline BOOLEAN& reserved7()
+    {return field_reserved7;}
+  inline const BOOLEAN& reserved7() const
+    {return field_reserved7;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangePriorityRes__errorCodes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangePriorityRes__errorCodes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangePriorityRes__errorCodes& other_value);
+void copy_template(const ChangePriorityRes__errorCodes_template& other_value);
+
+public:
+ChangePriorityRes__errorCodes_template();
+ChangePriorityRes__errorCodes_template(template_sel other_value);
+ChangePriorityRes__errorCodes_template(const ChangePriorityRes__errorCodes& other_value);
+ChangePriorityRes__errorCodes_template(const OPTIONAL<ChangePriorityRes__errorCodes>& other_value);
+ChangePriorityRes__errorCodes_template(const ChangePriorityRes__errorCodes_template& other_value);
+~ChangePriorityRes__errorCodes_template();
+ChangePriorityRes__errorCodes_template& operator=(template_sel other_value);
+ChangePriorityRes__errorCodes_template& operator=(const ChangePriorityRes__errorCodes& other_value);
+ChangePriorityRes__errorCodes_template& operator=(const OPTIONAL<ChangePriorityRes__errorCodes>& other_value);
+ChangePriorityRes__errorCodes_template& operator=(const ChangePriorityRes__errorCodes_template& other_value);
+boolean match(const ChangePriorityRes__errorCodes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangePriorityRes__errorCodes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangePriorityRes__errorCodes_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& invalidObjectID();
+const BOOLEAN_template& invalidObjectID() const;
+BOOLEAN_template& invalidPriority();
+const BOOLEAN_template& invalidPriority() const;
+BOOLEAN_template& reserved2();
+const BOOLEAN_template& reserved2() const;
+BOOLEAN_template& reserved3();
+const BOOLEAN_template& reserved3() const;
+BOOLEAN_template& anyOtherError();
+const BOOLEAN_template& anyOtherError() const;
+BOOLEAN_template& reserved5();
+const BOOLEAN_template& reserved5() const;
+BOOLEAN_template& reserved6();
+const BOOLEAN_template& reserved6() const;
+BOOLEAN_template& reserved7();
+const BOOLEAN_template& reserved7() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangePriorityRes__errorCodes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangePriorityRes : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectIDofArlarmMask;
+  INTEGER field_newPriority;
+  ChangePriorityRes__errorCodes field_errorCodes;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  ChangePriorityRes();
+  ChangePriorityRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectIDofArlarmMask,
+    const INTEGER& par_newPriority,
+    const ChangePriorityRes__errorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  ChangePriorityRes(const ChangePriorityRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangePriorityRes& operator=(const ChangePriorityRes& other_value);
+  boolean operator==(const ChangePriorityRes& other_value) const;
+  inline boolean operator!=(const ChangePriorityRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectIDofArlarmMask()
+    {return field_objectIDofArlarmMask;}
+  inline const INTEGER& objectIDofArlarmMask() const
+    {return field_objectIDofArlarmMask;}
+  inline INTEGER& newPriority()
+    {return field_newPriority;}
+  inline const INTEGER& newPriority() const
+    {return field_newPriority;}
+  inline ChangePriorityRes__errorCodes& errorCodes()
+    {return field_errorCodes;}
+  inline const ChangePriorityRes__errorCodes& errorCodes() const
+    {return field_errorCodes;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 6;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangePriorityRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangePriorityRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangePriorityRes& other_value);
+void copy_template(const ChangePriorityRes_template& other_value);
+
+public:
+ChangePriorityRes_template();
+ChangePriorityRes_template(template_sel other_value);
+ChangePriorityRes_template(const ChangePriorityRes& other_value);
+ChangePriorityRes_template(const OPTIONAL<ChangePriorityRes>& other_value);
+ChangePriorityRes_template(const ChangePriorityRes_template& other_value);
+~ChangePriorityRes_template();
+ChangePriorityRes_template& operator=(template_sel other_value);
+ChangePriorityRes_template& operator=(const ChangePriorityRes& other_value);
+ChangePriorityRes_template& operator=(const OPTIONAL<ChangePriorityRes>& other_value);
+ChangePriorityRes_template& operator=(const ChangePriorityRes_template& other_value);
+boolean match(const ChangePriorityRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangePriorityRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangePriorityRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectIDofArlarmMask();
+const INTEGER_template& objectIDofArlarmMask() const;
+INTEGER_template& newPriority();
+const INTEGER_template& newPriority() const;
+ChangePriorityRes__errorCodes_template& errorCodes();
+const ChangePriorityRes__errorCodes_template& errorCodes() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangePriorityRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangePriorityReq : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectIDofArlarmMask;
+  INTEGER field_newPriority;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  ChangePriorityReq();
+  ChangePriorityReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectIDofArlarmMask,
+    const INTEGER& par_newPriority,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  ChangePriorityReq(const ChangePriorityReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangePriorityReq& operator=(const ChangePriorityReq& other_value);
+  boolean operator==(const ChangePriorityReq& other_value) const;
+  inline boolean operator!=(const ChangePriorityReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectIDofArlarmMask()
+    {return field_objectIDofArlarmMask;}
+  inline const INTEGER& objectIDofArlarmMask() const
+    {return field_objectIDofArlarmMask;}
+  inline INTEGER& newPriority()
+    {return field_newPriority;}
+  inline const INTEGER& newPriority() const
+    {return field_newPriority;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 6;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangePriorityReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangePriorityReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangePriorityReq& other_value);
+void copy_template(const ChangePriorityReq_template& other_value);
+
+public:
+ChangePriorityReq_template();
+ChangePriorityReq_template(template_sel other_value);
+ChangePriorityReq_template(const ChangePriorityReq& other_value);
+ChangePriorityReq_template(const OPTIONAL<ChangePriorityReq>& other_value);
+ChangePriorityReq_template(const ChangePriorityReq_template& other_value);
+~ChangePriorityReq_template();
+ChangePriorityReq_template& operator=(template_sel other_value);
+ChangePriorityReq_template& operator=(const ChangePriorityReq& other_value);
+ChangePriorityReq_template& operator=(const OPTIONAL<ChangePriorityReq>& other_value);
+ChangePriorityReq_template& operator=(const ChangePriorityReq_template& other_value);
+boolean match(const ChangePriorityReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangePriorityReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangePriorityReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectIDofArlarmMask();
+const INTEGER_template& objectIDofArlarmMask() const;
+INTEGER_template& newPriority();
+const INTEGER_template& newPriority() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangePriorityReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangeListItemRes__errorCodes : public Base_Type {
+  BOOLEAN field_invalidObjectID;
+  BOOLEAN field_invalidListIndex;
+  BOOLEAN field_invalidNewListItemObjectID;
+  BOOLEAN field_valueInUse;
+  BOOLEAN field_anyOtherError;
+  BOOLEAN field_reserved5;
+  BOOLEAN field_reserved6;
+  BOOLEAN field_reserved7;
+public:
+  ChangeListItemRes__errorCodes();
+  ChangeListItemRes__errorCodes(const BOOLEAN& par_invalidObjectID,
+    const BOOLEAN& par_invalidListIndex,
+    const BOOLEAN& par_invalidNewListItemObjectID,
+    const BOOLEAN& par_valueInUse,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7);
+  ChangeListItemRes__errorCodes(const ChangeListItemRes__errorCodes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangeListItemRes__errorCodes& operator=(const ChangeListItemRes__errorCodes& other_value);
+  boolean operator==(const ChangeListItemRes__errorCodes& other_value) const;
+  inline boolean operator!=(const ChangeListItemRes__errorCodes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& invalidObjectID()
+    {return field_invalidObjectID;}
+  inline const BOOLEAN& invalidObjectID() const
+    {return field_invalidObjectID;}
+  inline BOOLEAN& invalidListIndex()
+    {return field_invalidListIndex;}
+  inline const BOOLEAN& invalidListIndex() const
+    {return field_invalidListIndex;}
+  inline BOOLEAN& invalidNewListItemObjectID()
+    {return field_invalidNewListItemObjectID;}
+  inline const BOOLEAN& invalidNewListItemObjectID() const
+    {return field_invalidNewListItemObjectID;}
+  inline BOOLEAN& valueInUse()
+    {return field_valueInUse;}
+  inline const BOOLEAN& valueInUse() const
+    {return field_valueInUse;}
+  inline BOOLEAN& anyOtherError()
+    {return field_anyOtherError;}
+  inline const BOOLEAN& anyOtherError() const
+    {return field_anyOtherError;}
+  inline BOOLEAN& reserved5()
+    {return field_reserved5;}
+  inline const BOOLEAN& reserved5() const
+    {return field_reserved5;}
+  inline BOOLEAN& reserved6()
+    {return field_reserved6;}
+  inline const BOOLEAN& reserved6() const
+    {return field_reserved6;}
+  inline BOOLEAN& reserved7()
+    {return field_reserved7;}
+  inline const BOOLEAN& reserved7() const
+    {return field_reserved7;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangeListItemRes__errorCodes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangeListItemRes__errorCodes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangeListItemRes__errorCodes& other_value);
+void copy_template(const ChangeListItemRes__errorCodes_template& other_value);
+
+public:
+ChangeListItemRes__errorCodes_template();
+ChangeListItemRes__errorCodes_template(template_sel other_value);
+ChangeListItemRes__errorCodes_template(const ChangeListItemRes__errorCodes& other_value);
+ChangeListItemRes__errorCodes_template(const OPTIONAL<ChangeListItemRes__errorCodes>& other_value);
+ChangeListItemRes__errorCodes_template(const ChangeListItemRes__errorCodes_template& other_value);
+~ChangeListItemRes__errorCodes_template();
+ChangeListItemRes__errorCodes_template& operator=(template_sel other_value);
+ChangeListItemRes__errorCodes_template& operator=(const ChangeListItemRes__errorCodes& other_value);
+ChangeListItemRes__errorCodes_template& operator=(const OPTIONAL<ChangeListItemRes__errorCodes>& other_value);
+ChangeListItemRes__errorCodes_template& operator=(const ChangeListItemRes__errorCodes_template& other_value);
+boolean match(const ChangeListItemRes__errorCodes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangeListItemRes__errorCodes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangeListItemRes__errorCodes_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& invalidObjectID();
+const BOOLEAN_template& invalidObjectID() const;
+BOOLEAN_template& invalidListIndex();
+const BOOLEAN_template& invalidListIndex() const;
+BOOLEAN_template& invalidNewListItemObjectID();
+const BOOLEAN_template& invalidNewListItemObjectID() const;
+BOOLEAN_template& valueInUse();
+const BOOLEAN_template& valueInUse() const;
+BOOLEAN_template& anyOtherError();
+const BOOLEAN_template& anyOtherError() const;
+BOOLEAN_template& reserved5();
+const BOOLEAN_template& reserved5() const;
+BOOLEAN_template& reserved6();
+const BOOLEAN_template& reserved6() const;
+BOOLEAN_template& reserved7();
+const BOOLEAN_template& reserved7() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangeListItemRes__errorCodes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangeListItemRes : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectID;
+  INTEGER field_listIndex;
+  INTEGER field_newObjectID;
+  OCTETSTRING field_reserved8;
+public:
+  ChangeListItemRes();
+  ChangeListItemRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const INTEGER& par_listIndex,
+    const INTEGER& par_newObjectID,
+    const OCTETSTRING& par_reserved8);
+  ChangeListItemRes(const ChangeListItemRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangeListItemRes& operator=(const ChangeListItemRes& other_value);
+  boolean operator==(const ChangeListItemRes& other_value) const;
+  inline boolean operator!=(const ChangeListItemRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectID()
+    {return field_objectID;}
+  inline const INTEGER& objectID() const
+    {return field_objectID;}
+  inline INTEGER& listIndex()
+    {return field_listIndex;}
+  inline const INTEGER& listIndex() const
+    {return field_listIndex;}
+  inline INTEGER& newObjectID()
+    {return field_newObjectID;}
+  inline const INTEGER& newObjectID() const
+    {return field_newObjectID;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 5;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangeListItemRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangeListItemRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangeListItemRes& other_value);
+void copy_template(const ChangeListItemRes_template& other_value);
+
+public:
+ChangeListItemRes_template();
+ChangeListItemRes_template(template_sel other_value);
+ChangeListItemRes_template(const ChangeListItemRes& other_value);
+ChangeListItemRes_template(const OPTIONAL<ChangeListItemRes>& other_value);
+ChangeListItemRes_template(const ChangeListItemRes_template& other_value);
+~ChangeListItemRes_template();
+ChangeListItemRes_template& operator=(template_sel other_value);
+ChangeListItemRes_template& operator=(const ChangeListItemRes& other_value);
+ChangeListItemRes_template& operator=(const OPTIONAL<ChangeListItemRes>& other_value);
+ChangeListItemRes_template& operator=(const ChangeListItemRes_template& other_value);
+boolean match(const ChangeListItemRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangeListItemRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangeListItemRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectID();
+const INTEGER_template& objectID() const;
+INTEGER_template& listIndex();
+const INTEGER_template& listIndex() const;
+INTEGER_template& newObjectID();
+const INTEGER_template& newObjectID() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangeListItemRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangeListItemReq : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectID;
+  INTEGER field_listIndex;
+  INTEGER field_newObjectID;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  ChangeListItemReq();
+  ChangeListItemReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const INTEGER& par_listIndex,
+    const INTEGER& par_newObjectID,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  ChangeListItemReq(const ChangeListItemReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangeListItemReq& operator=(const ChangeListItemReq& other_value);
+  boolean operator==(const ChangeListItemReq& other_value) const;
+  inline boolean operator!=(const ChangeListItemReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectID()
+    {return field_objectID;}
+  inline const INTEGER& objectID() const
+    {return field_objectID;}
+  inline INTEGER& listIndex()
+    {return field_listIndex;}
+  inline const INTEGER& listIndex() const
+    {return field_listIndex;}
+  inline INTEGER& newObjectID()
+    {return field_newObjectID;}
+  inline const INTEGER& newObjectID() const
+    {return field_newObjectID;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 6;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangeListItemReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangeListItemReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangeListItemReq& other_value);
+void copy_template(const ChangeListItemReq_template& other_value);
+
+public:
+ChangeListItemReq_template();
+ChangeListItemReq_template(template_sel other_value);
+ChangeListItemReq_template(const ChangeListItemReq& other_value);
+ChangeListItemReq_template(const OPTIONAL<ChangeListItemReq>& other_value);
+ChangeListItemReq_template(const ChangeListItemReq_template& other_value);
+~ChangeListItemReq_template();
+ChangeListItemReq_template& operator=(template_sel other_value);
+ChangeListItemReq_template& operator=(const ChangeListItemReq& other_value);
+ChangeListItemReq_template& operator=(const OPTIONAL<ChangeListItemReq>& other_value);
+ChangeListItemReq_template& operator=(const ChangeListItemReq_template& other_value);
+boolean match(const ChangeListItemReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangeListItemReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangeListItemReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectID();
+const INTEGER_template& objectID() const;
+INTEGER_template& listIndex();
+const INTEGER_template& listIndex() const;
+INTEGER_template& newObjectID();
+const INTEGER_template& newObjectID() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangeListItemReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class DeleteObjectPoolReq : public Base_Type {
+  INTEGER field_vtfunction;
+  OCTETSTRING field_reserved2;
+  OCTETSTRING field_reserved3;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  DeleteObjectPoolReq();
+  DeleteObjectPoolReq(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_reserved2,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  DeleteObjectPoolReq(const DeleteObjectPoolReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  DeleteObjectPoolReq& operator=(const DeleteObjectPoolReq& other_value);
+  boolean operator==(const DeleteObjectPoolReq& other_value) const;
+  inline boolean operator!=(const DeleteObjectPoolReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline OCTETSTRING& reserved2()
+    {return field_reserved2;}
+  inline const OCTETSTRING& reserved2() const
+    {return field_reserved2;}
+  inline OCTETSTRING& reserved3()
+    {return field_reserved3;}
+  inline const OCTETSTRING& reserved3() const
+    {return field_reserved3;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class DeleteObjectPoolReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+DeleteObjectPoolReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const DeleteObjectPoolReq& other_value);
+void copy_template(const DeleteObjectPoolReq_template& other_value);
+
+public:
+DeleteObjectPoolReq_template();
+DeleteObjectPoolReq_template(template_sel other_value);
+DeleteObjectPoolReq_template(const DeleteObjectPoolReq& other_value);
+DeleteObjectPoolReq_template(const OPTIONAL<DeleteObjectPoolReq>& other_value);
+DeleteObjectPoolReq_template(const DeleteObjectPoolReq_template& other_value);
+~DeleteObjectPoolReq_template();
+DeleteObjectPoolReq_template& operator=(template_sel other_value);
+DeleteObjectPoolReq_template& operator=(const DeleteObjectPoolReq& other_value);
+DeleteObjectPoolReq_template& operator=(const OPTIONAL<DeleteObjectPoolReq>& other_value);
+DeleteObjectPoolReq_template& operator=(const DeleteObjectPoolReq_template& other_value);
+boolean match(const DeleteObjectPoolReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+DeleteObjectPoolReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+DeleteObjectPoolReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+OCTETSTRING_template& reserved2();
+const OCTETSTRING_template& reserved2() const;
+OCTETSTRING_template& reserved3();
+const OCTETSTRING_template& reserved3() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const DeleteObjectPoolReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class DeleteObjectPoolRes__ErrorCodes : public Base_Type {
+  BOOLEAN field_deletionError;
+  BOOLEAN field_undefined1;
+  BOOLEAN field_undefined2;
+  BOOLEAN field_undefined3;
+  BOOLEAN field_anyOtherError;
+  BOOLEAN field_reserved5;
+  BOOLEAN field_reserved6;
+  BOOLEAN field_reserved7;
+public:
+  DeleteObjectPoolRes__ErrorCodes();
+  DeleteObjectPoolRes__ErrorCodes(const BOOLEAN& par_deletionError,
+    const BOOLEAN& par_undefined1,
+    const BOOLEAN& par_undefined2,
+    const BOOLEAN& par_undefined3,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7);
+  DeleteObjectPoolRes__ErrorCodes(const DeleteObjectPoolRes__ErrorCodes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  DeleteObjectPoolRes__ErrorCodes& operator=(const DeleteObjectPoolRes__ErrorCodes& other_value);
+  boolean operator==(const DeleteObjectPoolRes__ErrorCodes& other_value) const;
+  inline boolean operator!=(const DeleteObjectPoolRes__ErrorCodes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& deletionError()
+    {return field_deletionError;}
+  inline const BOOLEAN& deletionError() const
+    {return field_deletionError;}
+  inline BOOLEAN& undefined1()
+    {return field_undefined1;}
+  inline const BOOLEAN& undefined1() const
+    {return field_undefined1;}
+  inline BOOLEAN& undefined2()
+    {return field_undefined2;}
+  inline const BOOLEAN& undefined2() const
+    {return field_undefined2;}
+  inline BOOLEAN& undefined3()
+    {return field_undefined3;}
+  inline const BOOLEAN& undefined3() const
+    {return field_undefined3;}
+  inline BOOLEAN& anyOtherError()
+    {return field_anyOtherError;}
+  inline const BOOLEAN& anyOtherError() const
+    {return field_anyOtherError;}
+  inline BOOLEAN& reserved5()
+    {return field_reserved5;}
+  inline const BOOLEAN& reserved5() const
+    {return field_reserved5;}
+  inline BOOLEAN& reserved6()
+    {return field_reserved6;}
+  inline const BOOLEAN& reserved6() const
+    {return field_reserved6;}
+  inline BOOLEAN& reserved7()
+    {return field_reserved7;}
+  inline const BOOLEAN& reserved7() const
+    {return field_reserved7;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class DeleteObjectPoolRes__ErrorCodes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+DeleteObjectPoolRes__ErrorCodes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const DeleteObjectPoolRes__ErrorCodes& other_value);
+void copy_template(const DeleteObjectPoolRes__ErrorCodes_template& other_value);
+
+public:
+DeleteObjectPoolRes__ErrorCodes_template();
+DeleteObjectPoolRes__ErrorCodes_template(template_sel other_value);
+DeleteObjectPoolRes__ErrorCodes_template(const DeleteObjectPoolRes__ErrorCodes& other_value);
+DeleteObjectPoolRes__ErrorCodes_template(const OPTIONAL<DeleteObjectPoolRes__ErrorCodes>& other_value);
+DeleteObjectPoolRes__ErrorCodes_template(const DeleteObjectPoolRes__ErrorCodes_template& other_value);
+~DeleteObjectPoolRes__ErrorCodes_template();
+DeleteObjectPoolRes__ErrorCodes_template& operator=(template_sel other_value);
+DeleteObjectPoolRes__ErrorCodes_template& operator=(const DeleteObjectPoolRes__ErrorCodes& other_value);
+DeleteObjectPoolRes__ErrorCodes_template& operator=(const OPTIONAL<DeleteObjectPoolRes__ErrorCodes>& other_value);
+DeleteObjectPoolRes__ErrorCodes_template& operator=(const DeleteObjectPoolRes__ErrorCodes_template& other_value);
+boolean match(const DeleteObjectPoolRes__ErrorCodes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+DeleteObjectPoolRes__ErrorCodes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+DeleteObjectPoolRes__ErrorCodes_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& deletionError();
+const BOOLEAN_template& deletionError() const;
+BOOLEAN_template& undefined1();
+const BOOLEAN_template& undefined1() const;
+BOOLEAN_template& undefined2();
+const BOOLEAN_template& undefined2() const;
+BOOLEAN_template& undefined3();
+const BOOLEAN_template& undefined3() const;
+BOOLEAN_template& anyOtherError();
+const BOOLEAN_template& anyOtherError() const;
+BOOLEAN_template& reserved5();
+const BOOLEAN_template& reserved5() const;
+BOOLEAN_template& reserved6();
+const BOOLEAN_template& reserved6() const;
+BOOLEAN_template& reserved7();
+const BOOLEAN_template& reserved7() const;
+int size_of() const;
+void log() const;
+void log_match(const DeleteObjectPoolRes__ErrorCodes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class DeleteObjectPoolRes : public Base_Type {
+  INTEGER field_vtfunction;
+  DeleteObjectPoolRes__ErrorCodes field_errorCodes;
+  OCTETSTRING field_reserved3;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  DeleteObjectPoolRes();
+  DeleteObjectPoolRes(const INTEGER& par_vtfunction,
+    const DeleteObjectPoolRes__ErrorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  DeleteObjectPoolRes(const DeleteObjectPoolRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  DeleteObjectPoolRes& operator=(const DeleteObjectPoolRes& other_value);
+  boolean operator==(const DeleteObjectPoolRes& other_value) const;
+  inline boolean operator!=(const DeleteObjectPoolRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline DeleteObjectPoolRes__ErrorCodes& errorCodes()
+    {return field_errorCodes;}
+  inline const DeleteObjectPoolRes__ErrorCodes& errorCodes() const
+    {return field_errorCodes;}
+  inline OCTETSTRING& reserved3()
+    {return field_reserved3;}
+  inline const OCTETSTRING& reserved3() const
+    {return field_reserved3;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class DeleteObjectPoolRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+DeleteObjectPoolRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const DeleteObjectPoolRes& other_value);
+void copy_template(const DeleteObjectPoolRes_template& other_value);
+
+public:
+DeleteObjectPoolRes_template();
+DeleteObjectPoolRes_template(template_sel other_value);
+DeleteObjectPoolRes_template(const DeleteObjectPoolRes& other_value);
+DeleteObjectPoolRes_template(const OPTIONAL<DeleteObjectPoolRes>& other_value);
+DeleteObjectPoolRes_template(const DeleteObjectPoolRes_template& other_value);
+~DeleteObjectPoolRes_template();
+DeleteObjectPoolRes_template& operator=(template_sel other_value);
+DeleteObjectPoolRes_template& operator=(const DeleteObjectPoolRes& other_value);
+DeleteObjectPoolRes_template& operator=(const OPTIONAL<DeleteObjectPoolRes>& other_value);
+DeleteObjectPoolRes_template& operator=(const DeleteObjectPoolRes_template& other_value);
+boolean match(const DeleteObjectPoolRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+DeleteObjectPoolRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+DeleteObjectPoolRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+DeleteObjectPoolRes__ErrorCodes_template& errorCodes();
+const DeleteObjectPoolRes__ErrorCodes_template& errorCodes() const;
+OCTETSTRING_template& reserved3();
+const OCTETSTRING_template& reserved3() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const DeleteObjectPoolRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangeStringValueReq : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectID;
+  INTEGER field_numberOfBytes;
+  OCTETSTRING field_newStringValue;
+public:
+  ChangeStringValueReq();
+  ChangeStringValueReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const INTEGER& par_numberOfBytes,
+    const OCTETSTRING& par_newStringValue);
+  ChangeStringValueReq(const ChangeStringValueReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangeStringValueReq& operator=(const ChangeStringValueReq& other_value);
+  boolean operator==(const ChangeStringValueReq& other_value) const;
+  inline boolean operator!=(const ChangeStringValueReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectID()
+    {return field_objectID;}
+  inline const INTEGER& objectID() const
+    {return field_objectID;}
+  inline INTEGER& numberOfBytes()
+    {return field_numberOfBytes;}
+  inline const INTEGER& numberOfBytes() const
+    {return field_numberOfBytes;}
+  inline OCTETSTRING& newStringValue()
+    {return field_newStringValue;}
+  inline const OCTETSTRING& newStringValue() const
+    {return field_newStringValue;}
+  inline int size_of() const
+    {return 4;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangeStringValueReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangeStringValueReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangeStringValueReq& other_value);
+void copy_template(const ChangeStringValueReq_template& other_value);
+
+public:
+ChangeStringValueReq_template();
+ChangeStringValueReq_template(template_sel other_value);
+ChangeStringValueReq_template(const ChangeStringValueReq& other_value);
+ChangeStringValueReq_template(const OPTIONAL<ChangeStringValueReq>& other_value);
+ChangeStringValueReq_template(const ChangeStringValueReq_template& other_value);
+~ChangeStringValueReq_template();
+ChangeStringValueReq_template& operator=(template_sel other_value);
+ChangeStringValueReq_template& operator=(const ChangeStringValueReq& other_value);
+ChangeStringValueReq_template& operator=(const OPTIONAL<ChangeStringValueReq>& other_value);
+ChangeStringValueReq_template& operator=(const ChangeStringValueReq_template& other_value);
+boolean match(const ChangeStringValueReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangeStringValueReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangeStringValueReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectID();
+const INTEGER_template& objectID() const;
+INTEGER_template& numberOfBytes();
+const INTEGER_template& numberOfBytes() const;
+OCTETSTRING_template& newStringValue();
+const OCTETSTRING_template& newStringValue() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangeStringValueReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangeStringValueRes__ErrorCodes : public Base_Type {
+  BOOLEAN field_undefined;
+  BOOLEAN field_invalidObjectID;
+  BOOLEAN field_stringTooLong;
+  BOOLEAN field_anyOtherError;
+  BOOLEAN field_reserved4;
+  BOOLEAN field_reserved5;
+  BOOLEAN field_reserved6;
+  BOOLEAN field_reserved7;
+public:
+  ChangeStringValueRes__ErrorCodes();
+  ChangeStringValueRes__ErrorCodes(const BOOLEAN& par_undefined,
+    const BOOLEAN& par_invalidObjectID,
+    const BOOLEAN& par_stringTooLong,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved4,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7);
+  ChangeStringValueRes__ErrorCodes(const ChangeStringValueRes__ErrorCodes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangeStringValueRes__ErrorCodes& operator=(const ChangeStringValueRes__ErrorCodes& other_value);
+  boolean operator==(const ChangeStringValueRes__ErrorCodes& other_value) const;
+  inline boolean operator!=(const ChangeStringValueRes__ErrorCodes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& undefined()
+    {return field_undefined;}
+  inline const BOOLEAN& undefined() const
+    {return field_undefined;}
+  inline BOOLEAN& invalidObjectID()
+    {return field_invalidObjectID;}
+  inline const BOOLEAN& invalidObjectID() const
+    {return field_invalidObjectID;}
+  inline BOOLEAN& stringTooLong()
+    {return field_stringTooLong;}
+  inline const BOOLEAN& stringTooLong() const
+    {return field_stringTooLong;}
+  inline BOOLEAN& anyOtherError()
+    {return field_anyOtherError;}
+  inline const BOOLEAN& anyOtherError() const
+    {return field_anyOtherError;}
+  inline BOOLEAN& reserved4()
+    {return field_reserved4;}
+  inline const BOOLEAN& reserved4() const
+    {return field_reserved4;}
+  inline BOOLEAN& reserved5()
+    {return field_reserved5;}
+  inline const BOOLEAN& reserved5() const
+    {return field_reserved5;}
+  inline BOOLEAN& reserved6()
+    {return field_reserved6;}
+  inline const BOOLEAN& reserved6() const
+    {return field_reserved6;}
+  inline BOOLEAN& reserved7()
+    {return field_reserved7;}
+  inline const BOOLEAN& reserved7() const
+    {return field_reserved7;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangeStringValueRes__ErrorCodes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangeStringValueRes__ErrorCodes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangeStringValueRes__ErrorCodes& other_value);
+void copy_template(const ChangeStringValueRes__ErrorCodes_template& other_value);
+
+public:
+ChangeStringValueRes__ErrorCodes_template();
+ChangeStringValueRes__ErrorCodes_template(template_sel other_value);
+ChangeStringValueRes__ErrorCodes_template(const ChangeStringValueRes__ErrorCodes& other_value);
+ChangeStringValueRes__ErrorCodes_template(const OPTIONAL<ChangeStringValueRes__ErrorCodes>& other_value);
+ChangeStringValueRes__ErrorCodes_template(const ChangeStringValueRes__ErrorCodes_template& other_value);
+~ChangeStringValueRes__ErrorCodes_template();
+ChangeStringValueRes__ErrorCodes_template& operator=(template_sel other_value);
+ChangeStringValueRes__ErrorCodes_template& operator=(const ChangeStringValueRes__ErrorCodes& other_value);
+ChangeStringValueRes__ErrorCodes_template& operator=(const OPTIONAL<ChangeStringValueRes__ErrorCodes>& other_value);
+ChangeStringValueRes__ErrorCodes_template& operator=(const ChangeStringValueRes__ErrorCodes_template& other_value);
+boolean match(const ChangeStringValueRes__ErrorCodes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangeStringValueRes__ErrorCodes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangeStringValueRes__ErrorCodes_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& undefined();
+const BOOLEAN_template& undefined() const;
+BOOLEAN_template& invalidObjectID();
+const BOOLEAN_template& invalidObjectID() const;
+BOOLEAN_template& stringTooLong();
+const BOOLEAN_template& stringTooLong() const;
+BOOLEAN_template& anyOtherError();
+const BOOLEAN_template& anyOtherError() const;
+BOOLEAN_template& reserved4();
+const BOOLEAN_template& reserved4() const;
+BOOLEAN_template& reserved5();
+const BOOLEAN_template& reserved5() const;
+BOOLEAN_template& reserved6();
+const BOOLEAN_template& reserved6() const;
+BOOLEAN_template& reserved7();
+const BOOLEAN_template& reserved7() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangeStringValueRes__ErrorCodes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangeStringValueRes : public Base_Type {
+  INTEGER field_vtfunction;
+  OCTETSTRING field_reserved2;
+  OCTETSTRING field_reserved3;
+  INTEGER field_objectID;
+  ChangeStringValueRes__ErrorCodes field_errorCodes;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  ChangeStringValueRes();
+  ChangeStringValueRes(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_reserved2,
+    const OCTETSTRING& par_reserved3,
+    const INTEGER& par_objectID,
+    const ChangeStringValueRes__ErrorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  ChangeStringValueRes(const ChangeStringValueRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangeStringValueRes& operator=(const ChangeStringValueRes& other_value);
+  boolean operator==(const ChangeStringValueRes& other_value) const;
+  inline boolean operator!=(const ChangeStringValueRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline OCTETSTRING& reserved2()
+    {return field_reserved2;}
+  inline const OCTETSTRING& reserved2() const
+    {return field_reserved2;}
+  inline OCTETSTRING& reserved3()
+    {return field_reserved3;}
+  inline const OCTETSTRING& reserved3() const
+    {return field_reserved3;}
+  inline INTEGER& objectID()
+    {return field_objectID;}
+  inline const INTEGER& objectID() const
+    {return field_objectID;}
+  inline ChangeStringValueRes__ErrorCodes& errorCodes()
+    {return field_errorCodes;}
+  inline const ChangeStringValueRes__ErrorCodes& errorCodes() const
+    {return field_errorCodes;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 7;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangeStringValueRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangeStringValueRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangeStringValueRes& other_value);
+void copy_template(const ChangeStringValueRes_template& other_value);
+
+public:
+ChangeStringValueRes_template();
+ChangeStringValueRes_template(template_sel other_value);
+ChangeStringValueRes_template(const ChangeStringValueRes& other_value);
+ChangeStringValueRes_template(const OPTIONAL<ChangeStringValueRes>& other_value);
+ChangeStringValueRes_template(const ChangeStringValueRes_template& other_value);
+~ChangeStringValueRes_template();
+ChangeStringValueRes_template& operator=(template_sel other_value);
+ChangeStringValueRes_template& operator=(const ChangeStringValueRes& other_value);
+ChangeStringValueRes_template& operator=(const OPTIONAL<ChangeStringValueRes>& other_value);
+ChangeStringValueRes_template& operator=(const ChangeStringValueRes_template& other_value);
+boolean match(const ChangeStringValueRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangeStringValueRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangeStringValueRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+OCTETSTRING_template& reserved2();
+const OCTETSTRING_template& reserved2() const;
+OCTETSTRING_template& reserved3();
+const OCTETSTRING_template& reserved3() const;
+INTEGER_template& objectID();
+const INTEGER_template& objectID() const;
+ChangeStringValueRes__ErrorCodes_template& errorCodes();
+const ChangeStringValueRes__ErrorCodes_template& errorCodes() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangeStringValueRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangeChildPositionReq : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_parentObjectID;
+  INTEGER field_objectID;
+  INTEGER field_pos__x__relative;
+  INTEGER field_pos__y__relative;
+public:
+  ChangeChildPositionReq();
+  ChangeChildPositionReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_parentObjectID,
+    const INTEGER& par_objectID,
+    const INTEGER& par_pos__x__relative,
+    const INTEGER& par_pos__y__relative);
+  ChangeChildPositionReq(const ChangeChildPositionReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangeChildPositionReq& operator=(const ChangeChildPositionReq& other_value);
+  boolean operator==(const ChangeChildPositionReq& other_value) const;
+  inline boolean operator!=(const ChangeChildPositionReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& parentObjectID()
+    {return field_parentObjectID;}
+  inline const INTEGER& parentObjectID() const
+    {return field_parentObjectID;}
+  inline INTEGER& objectID()
+    {return field_objectID;}
+  inline const INTEGER& objectID() const
+    {return field_objectID;}
+  inline INTEGER& pos__x__relative()
+    {return field_pos__x__relative;}
+  inline const INTEGER& pos__x__relative() const
+    {return field_pos__x__relative;}
+  inline INTEGER& pos__y__relative()
+    {return field_pos__y__relative;}
+  inline const INTEGER& pos__y__relative() const
+    {return field_pos__y__relative;}
+  inline int size_of() const
+    {return 5;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangeChildPositionReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangeChildPositionReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangeChildPositionReq& other_value);
+void copy_template(const ChangeChildPositionReq_template& other_value);
+
+public:
+ChangeChildPositionReq_template();
+ChangeChildPositionReq_template(template_sel other_value);
+ChangeChildPositionReq_template(const ChangeChildPositionReq& other_value);
+ChangeChildPositionReq_template(const OPTIONAL<ChangeChildPositionReq>& other_value);
+ChangeChildPositionReq_template(const ChangeChildPositionReq_template& other_value);
+~ChangeChildPositionReq_template();
+ChangeChildPositionReq_template& operator=(template_sel other_value);
+ChangeChildPositionReq_template& operator=(const ChangeChildPositionReq& other_value);
+ChangeChildPositionReq_template& operator=(const OPTIONAL<ChangeChildPositionReq>& other_value);
+ChangeChildPositionReq_template& operator=(const ChangeChildPositionReq_template& other_value);
+boolean match(const ChangeChildPositionReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangeChildPositionReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangeChildPositionReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& parentObjectID();
+const INTEGER_template& parentObjectID() const;
+INTEGER_template& objectID();
+const INTEGER_template& objectID() const;
+INTEGER_template& pos__x__relative();
+const INTEGER_template& pos__x__relative() const;
+INTEGER_template& pos__y__relative();
+const INTEGER_template& pos__y__relative() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangeChildPositionReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangeChildPositionRes__ErrorCodes : public Base_Type {
+  BOOLEAN field_invalidParentObjectID;
+  BOOLEAN field_invalidObjectID;
+  BOOLEAN field_undefined;
+  BOOLEAN field_anyOtherError;
+  BOOLEAN field_reserved4;
+  BOOLEAN field_reserved5;
+  BOOLEAN field_reserved6;
+  BOOLEAN field_reserved7;
+public:
+  ChangeChildPositionRes__ErrorCodes();
+  ChangeChildPositionRes__ErrorCodes(const BOOLEAN& par_invalidParentObjectID,
+    const BOOLEAN& par_invalidObjectID,
+    const BOOLEAN& par_undefined,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved4,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7);
+  ChangeChildPositionRes__ErrorCodes(const ChangeChildPositionRes__ErrorCodes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangeChildPositionRes__ErrorCodes& operator=(const ChangeChildPositionRes__ErrorCodes& other_value);
+  boolean operator==(const ChangeChildPositionRes__ErrorCodes& other_value) const;
+  inline boolean operator!=(const ChangeChildPositionRes__ErrorCodes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& invalidParentObjectID()
+    {return field_invalidParentObjectID;}
+  inline const BOOLEAN& invalidParentObjectID() const
+    {return field_invalidParentObjectID;}
+  inline BOOLEAN& invalidObjectID()
+    {return field_invalidObjectID;}
+  inline const BOOLEAN& invalidObjectID() const
+    {return field_invalidObjectID;}
+  inline BOOLEAN& undefined()
+    {return field_undefined;}
+  inline const BOOLEAN& undefined() const
+    {return field_undefined;}
+  inline BOOLEAN& anyOtherError()
+    {return field_anyOtherError;}
+  inline const BOOLEAN& anyOtherError() const
+    {return field_anyOtherError;}
+  inline BOOLEAN& reserved4()
+    {return field_reserved4;}
+  inline const BOOLEAN& reserved4() const
+    {return field_reserved4;}
+  inline BOOLEAN& reserved5()
+    {return field_reserved5;}
+  inline const BOOLEAN& reserved5() const
+    {return field_reserved5;}
+  inline BOOLEAN& reserved6()
+    {return field_reserved6;}
+  inline const BOOLEAN& reserved6() const
+    {return field_reserved6;}
+  inline BOOLEAN& reserved7()
+    {return field_reserved7;}
+  inline const BOOLEAN& reserved7() const
+    {return field_reserved7;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangeChildPositionRes__ErrorCodes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangeChildPositionRes__ErrorCodes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangeChildPositionRes__ErrorCodes& other_value);
+void copy_template(const ChangeChildPositionRes__ErrorCodes_template& other_value);
+
+public:
+ChangeChildPositionRes__ErrorCodes_template();
+ChangeChildPositionRes__ErrorCodes_template(template_sel other_value);
+ChangeChildPositionRes__ErrorCodes_template(const ChangeChildPositionRes__ErrorCodes& other_value);
+ChangeChildPositionRes__ErrorCodes_template(const OPTIONAL<ChangeChildPositionRes__ErrorCodes>& other_value);
+ChangeChildPositionRes__ErrorCodes_template(const ChangeChildPositionRes__ErrorCodes_template& other_value);
+~ChangeChildPositionRes__ErrorCodes_template();
+ChangeChildPositionRes__ErrorCodes_template& operator=(template_sel other_value);
+ChangeChildPositionRes__ErrorCodes_template& operator=(const ChangeChildPositionRes__ErrorCodes& other_value);
+ChangeChildPositionRes__ErrorCodes_template& operator=(const OPTIONAL<ChangeChildPositionRes__ErrorCodes>& other_value);
+ChangeChildPositionRes__ErrorCodes_template& operator=(const ChangeChildPositionRes__ErrorCodes_template& other_value);
+boolean match(const ChangeChildPositionRes__ErrorCodes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangeChildPositionRes__ErrorCodes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangeChildPositionRes__ErrorCodes_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& invalidParentObjectID();
+const BOOLEAN_template& invalidParentObjectID() const;
+BOOLEAN_template& invalidObjectID();
+const BOOLEAN_template& invalidObjectID() const;
+BOOLEAN_template& undefined();
+const BOOLEAN_template& undefined() const;
+BOOLEAN_template& anyOtherError();
+const BOOLEAN_template& anyOtherError() const;
+BOOLEAN_template& reserved4();
+const BOOLEAN_template& reserved4() const;
+BOOLEAN_template& reserved5();
+const BOOLEAN_template& reserved5() const;
+BOOLEAN_template& reserved6();
+const BOOLEAN_template& reserved6() const;
+BOOLEAN_template& reserved7();
+const BOOLEAN_template& reserved7() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangeChildPositionRes__ErrorCodes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangeChildPositionRes : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_parentObjectID;
+  INTEGER field_objectID;
+  ChangeChildPositionRes__ErrorCodes field_errorCodes;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  ChangeChildPositionRes();
+  ChangeChildPositionRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_parentObjectID,
+    const INTEGER& par_objectID,
+    const ChangeChildPositionRes__ErrorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  ChangeChildPositionRes(const ChangeChildPositionRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangeChildPositionRes& operator=(const ChangeChildPositionRes& other_value);
+  boolean operator==(const ChangeChildPositionRes& other_value) const;
+  inline boolean operator!=(const ChangeChildPositionRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& parentObjectID()
+    {return field_parentObjectID;}
+  inline const INTEGER& parentObjectID() const
+    {return field_parentObjectID;}
+  inline INTEGER& objectID()
+    {return field_objectID;}
+  inline const INTEGER& objectID() const
+    {return field_objectID;}
+  inline ChangeChildPositionRes__ErrorCodes& errorCodes()
+    {return field_errorCodes;}
+  inline const ChangeChildPositionRes__ErrorCodes& errorCodes() const
+    {return field_errorCodes;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 6;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangeChildPositionRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangeChildPositionRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangeChildPositionRes& other_value);
+void copy_template(const ChangeChildPositionRes_template& other_value);
+
+public:
+ChangeChildPositionRes_template();
+ChangeChildPositionRes_template(template_sel other_value);
+ChangeChildPositionRes_template(const ChangeChildPositionRes& other_value);
+ChangeChildPositionRes_template(const OPTIONAL<ChangeChildPositionRes>& other_value);
+ChangeChildPositionRes_template(const ChangeChildPositionRes_template& other_value);
+~ChangeChildPositionRes_template();
+ChangeChildPositionRes_template& operator=(template_sel other_value);
+ChangeChildPositionRes_template& operator=(const ChangeChildPositionRes& other_value);
+ChangeChildPositionRes_template& operator=(const OPTIONAL<ChangeChildPositionRes>& other_value);
+ChangeChildPositionRes_template& operator=(const ChangeChildPositionRes_template& other_value);
+boolean match(const ChangeChildPositionRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangeChildPositionRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangeChildPositionRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& parentObjectID();
+const INTEGER_template& parentObjectID() const;
+INTEGER_template& objectID();
+const INTEGER_template& objectID() const;
+ChangeChildPositionRes__ErrorCodes_template& errorCodes();
+const ChangeChildPositionRes__ErrorCodes_template& errorCodes() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangeChildPositionRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangeObjectLabelRes__ErrorCodes : public Base_Type {
+  BOOLEAN field_invalidObjectID;
+  BOOLEAN field_invalidStringVariableObjectID;
+  BOOLEAN field_invalidFontType;
+  BOOLEAN field_noObjectLabelReferenceListObjectAvailableInObjectPool;
+  BOOLEAN field_designatorReferencesInvalidObjects;
+  BOOLEAN field_anyOtherError;
+  BOOLEAN field_reserved6;
+  BOOLEAN field_reserved7;
+public:
+  ChangeObjectLabelRes__ErrorCodes();
+  ChangeObjectLabelRes__ErrorCodes(const BOOLEAN& par_invalidObjectID,
+    const BOOLEAN& par_invalidStringVariableObjectID,
+    const BOOLEAN& par_invalidFontType,
+    const BOOLEAN& par_noObjectLabelReferenceListObjectAvailableInObjectPool,
+    const BOOLEAN& par_designatorReferencesInvalidObjects,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7);
+  ChangeObjectLabelRes__ErrorCodes(const ChangeObjectLabelRes__ErrorCodes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangeObjectLabelRes__ErrorCodes& operator=(const ChangeObjectLabelRes__ErrorCodes& other_value);
+  boolean operator==(const ChangeObjectLabelRes__ErrorCodes& other_value) const;
+  inline boolean operator!=(const ChangeObjectLabelRes__ErrorCodes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& invalidObjectID()
+    {return field_invalidObjectID;}
+  inline const BOOLEAN& invalidObjectID() const
+    {return field_invalidObjectID;}
+  inline BOOLEAN& invalidStringVariableObjectID()
+    {return field_invalidStringVariableObjectID;}
+  inline const BOOLEAN& invalidStringVariableObjectID() const
+    {return field_invalidStringVariableObjectID;}
+  inline BOOLEAN& invalidFontType()
+    {return field_invalidFontType;}
+  inline const BOOLEAN& invalidFontType() const
+    {return field_invalidFontType;}
+  inline BOOLEAN& noObjectLabelReferenceListObjectAvailableInObjectPool()
+    {return field_noObjectLabelReferenceListObjectAvailableInObjectPool;}
+  inline const BOOLEAN& noObjectLabelReferenceListObjectAvailableInObjectPool() const
+    {return field_noObjectLabelReferenceListObjectAvailableInObjectPool;}
+  inline BOOLEAN& designatorReferencesInvalidObjects()
+    {return field_designatorReferencesInvalidObjects;}
+  inline const BOOLEAN& designatorReferencesInvalidObjects() const
+    {return field_designatorReferencesInvalidObjects;}
+  inline BOOLEAN& anyOtherError()
+    {return field_anyOtherError;}
+  inline const BOOLEAN& anyOtherError() const
+    {return field_anyOtherError;}
+  inline BOOLEAN& reserved6()
+    {return field_reserved6;}
+  inline const BOOLEAN& reserved6() const
+    {return field_reserved6;}
+  inline BOOLEAN& reserved7()
+    {return field_reserved7;}
+  inline const BOOLEAN& reserved7() const
+    {return field_reserved7;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangeObjectLabelRes__ErrorCodes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangeObjectLabelRes__ErrorCodes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangeObjectLabelRes__ErrorCodes& other_value);
+void copy_template(const ChangeObjectLabelRes__ErrorCodes_template& other_value);
+
+public:
+ChangeObjectLabelRes__ErrorCodes_template();
+ChangeObjectLabelRes__ErrorCodes_template(template_sel other_value);
+ChangeObjectLabelRes__ErrorCodes_template(const ChangeObjectLabelRes__ErrorCodes& other_value);
+ChangeObjectLabelRes__ErrorCodes_template(const OPTIONAL<ChangeObjectLabelRes__ErrorCodes>& other_value);
+ChangeObjectLabelRes__ErrorCodes_template(const ChangeObjectLabelRes__ErrorCodes_template& other_value);
+~ChangeObjectLabelRes__ErrorCodes_template();
+ChangeObjectLabelRes__ErrorCodes_template& operator=(template_sel other_value);
+ChangeObjectLabelRes__ErrorCodes_template& operator=(const ChangeObjectLabelRes__ErrorCodes& other_value);
+ChangeObjectLabelRes__ErrorCodes_template& operator=(const OPTIONAL<ChangeObjectLabelRes__ErrorCodes>& other_value);
+ChangeObjectLabelRes__ErrorCodes_template& operator=(const ChangeObjectLabelRes__ErrorCodes_template& other_value);
+boolean match(const ChangeObjectLabelRes__ErrorCodes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangeObjectLabelRes__ErrorCodes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangeObjectLabelRes__ErrorCodes_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& invalidObjectID();
+const BOOLEAN_template& invalidObjectID() const;
+BOOLEAN_template& invalidStringVariableObjectID();
+const BOOLEAN_template& invalidStringVariableObjectID() const;
+BOOLEAN_template& invalidFontType();
+const BOOLEAN_template& invalidFontType() const;
+BOOLEAN_template& noObjectLabelReferenceListObjectAvailableInObjectPool();
+const BOOLEAN_template& noObjectLabelReferenceListObjectAvailableInObjectPool() const;
+BOOLEAN_template& designatorReferencesInvalidObjects();
+const BOOLEAN_template& designatorReferencesInvalidObjects() const;
+BOOLEAN_template& anyOtherError();
+const BOOLEAN_template& anyOtherError() const;
+BOOLEAN_template& reserved6();
+const BOOLEAN_template& reserved6() const;
+BOOLEAN_template& reserved7();
+const BOOLEAN_template& reserved7() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangeObjectLabelRes__ErrorCodes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangeObjectLabelRes : public Base_Type {
+  INTEGER field_vtfunction;
+  ChangeObjectLabelRes__ErrorCodes field_errorCodes;
+  OCTETSTRING field_reserved3;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  ChangeObjectLabelRes();
+  ChangeObjectLabelRes(const INTEGER& par_vtfunction,
+    const ChangeObjectLabelRes__ErrorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  ChangeObjectLabelRes(const ChangeObjectLabelRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangeObjectLabelRes& operator=(const ChangeObjectLabelRes& other_value);
+  boolean operator==(const ChangeObjectLabelRes& other_value) const;
+  inline boolean operator!=(const ChangeObjectLabelRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline ChangeObjectLabelRes__ErrorCodes& errorCodes()
+    {return field_errorCodes;}
+  inline const ChangeObjectLabelRes__ErrorCodes& errorCodes() const
+    {return field_errorCodes;}
+  inline OCTETSTRING& reserved3()
+    {return field_reserved3;}
+  inline const OCTETSTRING& reserved3() const
+    {return field_reserved3;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangeObjectLabelRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangeObjectLabelRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangeObjectLabelRes& other_value);
+void copy_template(const ChangeObjectLabelRes_template& other_value);
+
+public:
+ChangeObjectLabelRes_template();
+ChangeObjectLabelRes_template(template_sel other_value);
+ChangeObjectLabelRes_template(const ChangeObjectLabelRes& other_value);
+ChangeObjectLabelRes_template(const OPTIONAL<ChangeObjectLabelRes>& other_value);
+ChangeObjectLabelRes_template(const ChangeObjectLabelRes_template& other_value);
+~ChangeObjectLabelRes_template();
+ChangeObjectLabelRes_template& operator=(template_sel other_value);
+ChangeObjectLabelRes_template& operator=(const ChangeObjectLabelRes& other_value);
+ChangeObjectLabelRes_template& operator=(const OPTIONAL<ChangeObjectLabelRes>& other_value);
+ChangeObjectLabelRes_template& operator=(const ChangeObjectLabelRes_template& other_value);
+boolean match(const ChangeObjectLabelRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangeObjectLabelRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangeObjectLabelRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+ChangeObjectLabelRes__ErrorCodes_template& errorCodes();
+const ChangeObjectLabelRes__ErrorCodes_template& errorCodes() const;
+OCTETSTRING_template& reserved3();
+const OCTETSTRING_template& reserved3() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangeObjectLabelRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangeObjectLabelReq : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectIDofObjectToAssociateLabelWith;
+  INTEGER field_objectIDofAStringVariableObjectThatContainsTheLabelString;
+  INTEGER field_fontType;
+  INTEGER field_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel;
+public:
+  ChangeObjectLabelReq();
+  ChangeObjectLabelReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectIDofObjectToAssociateLabelWith,
+    const INTEGER& par_objectIDofAStringVariableObjectThatContainsTheLabelString,
+    const INTEGER& par_fontType,
+    const INTEGER& par_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel);
+  ChangeObjectLabelReq(const ChangeObjectLabelReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangeObjectLabelReq& operator=(const ChangeObjectLabelReq& other_value);
+  boolean operator==(const ChangeObjectLabelReq& other_value) const;
+  inline boolean operator!=(const ChangeObjectLabelReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectIDofObjectToAssociateLabelWith()
+    {return field_objectIDofObjectToAssociateLabelWith;}
+  inline const INTEGER& objectIDofObjectToAssociateLabelWith() const
+    {return field_objectIDofObjectToAssociateLabelWith;}
+  inline INTEGER& objectIDofAStringVariableObjectThatContainsTheLabelString()
+    {return field_objectIDofAStringVariableObjectThatContainsTheLabelString;}
+  inline const INTEGER& objectIDofAStringVariableObjectThatContainsTheLabelString() const
+    {return field_objectIDofAStringVariableObjectThatContainsTheLabelString;}
+  inline INTEGER& fontType()
+    {return field_fontType;}
+  inline const INTEGER& fontType() const
+    {return field_fontType;}
+  inline INTEGER& objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel()
+    {return field_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel;}
+  inline const INTEGER& objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel() const
+    {return field_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel;}
+  inline int size_of() const
+    {return 5;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangeObjectLabelReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangeObjectLabelReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangeObjectLabelReq& other_value);
+void copy_template(const ChangeObjectLabelReq_template& other_value);
+
+public:
+ChangeObjectLabelReq_template();
+ChangeObjectLabelReq_template(template_sel other_value);
+ChangeObjectLabelReq_template(const ChangeObjectLabelReq& other_value);
+ChangeObjectLabelReq_template(const OPTIONAL<ChangeObjectLabelReq>& other_value);
+ChangeObjectLabelReq_template(const ChangeObjectLabelReq_template& other_value);
+~ChangeObjectLabelReq_template();
+ChangeObjectLabelReq_template& operator=(template_sel other_value);
+ChangeObjectLabelReq_template& operator=(const ChangeObjectLabelReq& other_value);
+ChangeObjectLabelReq_template& operator=(const OPTIONAL<ChangeObjectLabelReq>& other_value);
+ChangeObjectLabelReq_template& operator=(const ChangeObjectLabelReq_template& other_value);
+boolean match(const ChangeObjectLabelReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangeObjectLabelReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangeObjectLabelReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectIDofObjectToAssociateLabelWith();
+const INTEGER_template& objectIDofObjectToAssociateLabelWith() const;
+INTEGER_template& objectIDofAStringVariableObjectThatContainsTheLabelString();
+const INTEGER_template& objectIDofAStringVariableObjectThatContainsTheLabelString() const;
+INTEGER_template& fontType();
+const INTEGER_template& fontType() const;
+INTEGER_template& objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel();
+const INTEGER_template& objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangeObjectLabelReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangePolygonPointRes__ErrorCodes : public Base_Type {
+  BOOLEAN field_invalidObjectID;
+  BOOLEAN field_invalidPointIndex;
+  BOOLEAN field_anyOtherError;
+  BOOLEAN field_reserved3;
+  BOOLEAN field_reserved4;
+  BOOLEAN field_reserved5;
+  BOOLEAN field_reserved6;
+  BOOLEAN field_reserved7;
+public:
+  ChangePolygonPointRes__ErrorCodes();
+  ChangePolygonPointRes__ErrorCodes(const BOOLEAN& par_invalidObjectID,
+    const BOOLEAN& par_invalidPointIndex,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved3,
+    const BOOLEAN& par_reserved4,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7);
+  ChangePolygonPointRes__ErrorCodes(const ChangePolygonPointRes__ErrorCodes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangePolygonPointRes__ErrorCodes& operator=(const ChangePolygonPointRes__ErrorCodes& other_value);
+  boolean operator==(const ChangePolygonPointRes__ErrorCodes& other_value) const;
+  inline boolean operator!=(const ChangePolygonPointRes__ErrorCodes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& invalidObjectID()
+    {return field_invalidObjectID;}
+  inline const BOOLEAN& invalidObjectID() const
+    {return field_invalidObjectID;}
+  inline BOOLEAN& invalidPointIndex()
+    {return field_invalidPointIndex;}
+  inline const BOOLEAN& invalidPointIndex() const
+    {return field_invalidPointIndex;}
+  inline BOOLEAN& anyOtherError()
+    {return field_anyOtherError;}
+  inline const BOOLEAN& anyOtherError() const
+    {return field_anyOtherError;}
+  inline BOOLEAN& reserved3()
+    {return field_reserved3;}
+  inline const BOOLEAN& reserved3() const
+    {return field_reserved3;}
+  inline BOOLEAN& reserved4()
+    {return field_reserved4;}
+  inline const BOOLEAN& reserved4() const
+    {return field_reserved4;}
+  inline BOOLEAN& reserved5()
+    {return field_reserved5;}
+  inline const BOOLEAN& reserved5() const
+    {return field_reserved5;}
+  inline BOOLEAN& reserved6()
+    {return field_reserved6;}
+  inline const BOOLEAN& reserved6() const
+    {return field_reserved6;}
+  inline BOOLEAN& reserved7()
+    {return field_reserved7;}
+  inline const BOOLEAN& reserved7() const
+    {return field_reserved7;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangePolygonPointRes__ErrorCodes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangePolygonPointRes__ErrorCodes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangePolygonPointRes__ErrorCodes& other_value);
+void copy_template(const ChangePolygonPointRes__ErrorCodes_template& other_value);
+
+public:
+ChangePolygonPointRes__ErrorCodes_template();
+ChangePolygonPointRes__ErrorCodes_template(template_sel other_value);
+ChangePolygonPointRes__ErrorCodes_template(const ChangePolygonPointRes__ErrorCodes& other_value);
+ChangePolygonPointRes__ErrorCodes_template(const OPTIONAL<ChangePolygonPointRes__ErrorCodes>& other_value);
+ChangePolygonPointRes__ErrorCodes_template(const ChangePolygonPointRes__ErrorCodes_template& other_value);
+~ChangePolygonPointRes__ErrorCodes_template();
+ChangePolygonPointRes__ErrorCodes_template& operator=(template_sel other_value);
+ChangePolygonPointRes__ErrorCodes_template& operator=(const ChangePolygonPointRes__ErrorCodes& other_value);
+ChangePolygonPointRes__ErrorCodes_template& operator=(const OPTIONAL<ChangePolygonPointRes__ErrorCodes>& other_value);
+ChangePolygonPointRes__ErrorCodes_template& operator=(const ChangePolygonPointRes__ErrorCodes_template& other_value);
+boolean match(const ChangePolygonPointRes__ErrorCodes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangePolygonPointRes__ErrorCodes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangePolygonPointRes__ErrorCodes_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& invalidObjectID();
+const BOOLEAN_template& invalidObjectID() const;
+BOOLEAN_template& invalidPointIndex();
+const BOOLEAN_template& invalidPointIndex() const;
+BOOLEAN_template& anyOtherError();
+const BOOLEAN_template& anyOtherError() const;
+BOOLEAN_template& reserved3();
+const BOOLEAN_template& reserved3() const;
+BOOLEAN_template& reserved4();
+const BOOLEAN_template& reserved4() const;
+BOOLEAN_template& reserved5();
+const BOOLEAN_template& reserved5() const;
+BOOLEAN_template& reserved6();
+const BOOLEAN_template& reserved6() const;
+BOOLEAN_template& reserved7();
+const BOOLEAN_template& reserved7() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangePolygonPointRes__ErrorCodes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangePolygonPointRes : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectIDofTheOutputPolygonObjectToChange;
+  ChangePolygonPointRes__ErrorCodes field_errorCodes;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  ChangePolygonPointRes();
+  ChangePolygonPointRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectIDofTheOutputPolygonObjectToChange,
+    const ChangePolygonPointRes__ErrorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  ChangePolygonPointRes(const ChangePolygonPointRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangePolygonPointRes& operator=(const ChangePolygonPointRes& other_value);
+  boolean operator==(const ChangePolygonPointRes& other_value) const;
+  inline boolean operator!=(const ChangePolygonPointRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectIDofTheOutputPolygonObjectToChange()
+    {return field_objectIDofTheOutputPolygonObjectToChange;}
+  inline const INTEGER& objectIDofTheOutputPolygonObjectToChange() const
+    {return field_objectIDofTheOutputPolygonObjectToChange;}
+  inline ChangePolygonPointRes__ErrorCodes& errorCodes()
+    {return field_errorCodes;}
+  inline const ChangePolygonPointRes__ErrorCodes& errorCodes() const
+    {return field_errorCodes;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangePolygonPointRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangePolygonPointRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangePolygonPointRes& other_value);
+void copy_template(const ChangePolygonPointRes_template& other_value);
+
+public:
+ChangePolygonPointRes_template();
+ChangePolygonPointRes_template(template_sel other_value);
+ChangePolygonPointRes_template(const ChangePolygonPointRes& other_value);
+ChangePolygonPointRes_template(const OPTIONAL<ChangePolygonPointRes>& other_value);
+ChangePolygonPointRes_template(const ChangePolygonPointRes_template& other_value);
+~ChangePolygonPointRes_template();
+ChangePolygonPointRes_template& operator=(template_sel other_value);
+ChangePolygonPointRes_template& operator=(const ChangePolygonPointRes& other_value);
+ChangePolygonPointRes_template& operator=(const OPTIONAL<ChangePolygonPointRes>& other_value);
+ChangePolygonPointRes_template& operator=(const ChangePolygonPointRes_template& other_value);
+boolean match(const ChangePolygonPointRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangePolygonPointRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangePolygonPointRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectIDofTheOutputPolygonObjectToChange();
+const INTEGER_template& objectIDofTheOutputPolygonObjectToChange() const;
+ChangePolygonPointRes__ErrorCodes_template& errorCodes();
+const ChangePolygonPointRes__ErrorCodes_template& errorCodes() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangePolygonPointRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangePolygonPointReq : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectIDofTheOutputPolygonObjectToChange;
+  INTEGER field_pointIndexOfThePointToReplace;
+  INTEGER field_newXposition;
+  INTEGER field_newYposition;
+public:
+  ChangePolygonPointReq();
+  ChangePolygonPointReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectIDofTheOutputPolygonObjectToChange,
+    const INTEGER& par_pointIndexOfThePointToReplace,
+    const INTEGER& par_newXposition,
+    const INTEGER& par_newYposition);
+  ChangePolygonPointReq(const ChangePolygonPointReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangePolygonPointReq& operator=(const ChangePolygonPointReq& other_value);
+  boolean operator==(const ChangePolygonPointReq& other_value) const;
+  inline boolean operator!=(const ChangePolygonPointReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectIDofTheOutputPolygonObjectToChange()
+    {return field_objectIDofTheOutputPolygonObjectToChange;}
+  inline const INTEGER& objectIDofTheOutputPolygonObjectToChange() const
+    {return field_objectIDofTheOutputPolygonObjectToChange;}
+  inline INTEGER& pointIndexOfThePointToReplace()
+    {return field_pointIndexOfThePointToReplace;}
+  inline const INTEGER& pointIndexOfThePointToReplace() const
+    {return field_pointIndexOfThePointToReplace;}
+  inline INTEGER& newXposition()
+    {return field_newXposition;}
+  inline const INTEGER& newXposition() const
+    {return field_newXposition;}
+  inline INTEGER& newYposition()
+    {return field_newYposition;}
+  inline const INTEGER& newYposition() const
+    {return field_newYposition;}
+  inline int size_of() const
+    {return 5;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangePolygonPointReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangePolygonPointReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangePolygonPointReq& other_value);
+void copy_template(const ChangePolygonPointReq_template& other_value);
+
+public:
+ChangePolygonPointReq_template();
+ChangePolygonPointReq_template(template_sel other_value);
+ChangePolygonPointReq_template(const ChangePolygonPointReq& other_value);
+ChangePolygonPointReq_template(const OPTIONAL<ChangePolygonPointReq>& other_value);
+ChangePolygonPointReq_template(const ChangePolygonPointReq_template& other_value);
+~ChangePolygonPointReq_template();
+ChangePolygonPointReq_template& operator=(template_sel other_value);
+ChangePolygonPointReq_template& operator=(const ChangePolygonPointReq& other_value);
+ChangePolygonPointReq_template& operator=(const OPTIONAL<ChangePolygonPointReq>& other_value);
+ChangePolygonPointReq_template& operator=(const ChangePolygonPointReq_template& other_value);
+boolean match(const ChangePolygonPointReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangePolygonPointReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangePolygonPointReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectIDofTheOutputPolygonObjectToChange();
+const INTEGER_template& objectIDofTheOutputPolygonObjectToChange() const;
+INTEGER_template& pointIndexOfThePointToReplace();
+const INTEGER_template& pointIndexOfThePointToReplace() const;
+INTEGER_template& newXposition();
+const INTEGER_template& newXposition() const;
+INTEGER_template& newYposition();
+const INTEGER_template& newYposition() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangePolygonPointReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangePolygonScaleRes__ErrorCodes : public Base_Type {
+  BOOLEAN field_invalidObjectID;
+  BOOLEAN field_reserved1;
+  BOOLEAN field_reserved2;
+  BOOLEAN field_reserved3;
+  BOOLEAN field_anyOtherError;
+  BOOLEAN field_reserved5;
+  BOOLEAN field_reserved6;
+  BOOLEAN field_reserved7;
+public:
+  ChangePolygonScaleRes__ErrorCodes();
+  ChangePolygonScaleRes__ErrorCodes(const BOOLEAN& par_invalidObjectID,
+    const BOOLEAN& par_reserved1,
+    const BOOLEAN& par_reserved2,
+    const BOOLEAN& par_reserved3,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7);
+  ChangePolygonScaleRes__ErrorCodes(const ChangePolygonScaleRes__ErrorCodes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangePolygonScaleRes__ErrorCodes& operator=(const ChangePolygonScaleRes__ErrorCodes& other_value);
+  boolean operator==(const ChangePolygonScaleRes__ErrorCodes& other_value) const;
+  inline boolean operator!=(const ChangePolygonScaleRes__ErrorCodes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& invalidObjectID()
+    {return field_invalidObjectID;}
+  inline const BOOLEAN& invalidObjectID() const
+    {return field_invalidObjectID;}
+  inline BOOLEAN& reserved1()
+    {return field_reserved1;}
+  inline const BOOLEAN& reserved1() const
+    {return field_reserved1;}
+  inline BOOLEAN& reserved2()
+    {return field_reserved2;}
+  inline const BOOLEAN& reserved2() const
+    {return field_reserved2;}
+  inline BOOLEAN& reserved3()
+    {return field_reserved3;}
+  inline const BOOLEAN& reserved3() const
+    {return field_reserved3;}
+  inline BOOLEAN& anyOtherError()
+    {return field_anyOtherError;}
+  inline const BOOLEAN& anyOtherError() const
+    {return field_anyOtherError;}
+  inline BOOLEAN& reserved5()
+    {return field_reserved5;}
+  inline const BOOLEAN& reserved5() const
+    {return field_reserved5;}
+  inline BOOLEAN& reserved6()
+    {return field_reserved6;}
+  inline const BOOLEAN& reserved6() const
+    {return field_reserved6;}
+  inline BOOLEAN& reserved7()
+    {return field_reserved7;}
+  inline const BOOLEAN& reserved7() const
+    {return field_reserved7;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangePolygonScaleRes__ErrorCodes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangePolygonScaleRes__ErrorCodes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangePolygonScaleRes__ErrorCodes& other_value);
+void copy_template(const ChangePolygonScaleRes__ErrorCodes_template& other_value);
+
+public:
+ChangePolygonScaleRes__ErrorCodes_template();
+ChangePolygonScaleRes__ErrorCodes_template(template_sel other_value);
+ChangePolygonScaleRes__ErrorCodes_template(const ChangePolygonScaleRes__ErrorCodes& other_value);
+ChangePolygonScaleRes__ErrorCodes_template(const OPTIONAL<ChangePolygonScaleRes__ErrorCodes>& other_value);
+ChangePolygonScaleRes__ErrorCodes_template(const ChangePolygonScaleRes__ErrorCodes_template& other_value);
+~ChangePolygonScaleRes__ErrorCodes_template();
+ChangePolygonScaleRes__ErrorCodes_template& operator=(template_sel other_value);
+ChangePolygonScaleRes__ErrorCodes_template& operator=(const ChangePolygonScaleRes__ErrorCodes& other_value);
+ChangePolygonScaleRes__ErrorCodes_template& operator=(const OPTIONAL<ChangePolygonScaleRes__ErrorCodes>& other_value);
+ChangePolygonScaleRes__ErrorCodes_template& operator=(const ChangePolygonScaleRes__ErrorCodes_template& other_value);
+boolean match(const ChangePolygonScaleRes__ErrorCodes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangePolygonScaleRes__ErrorCodes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangePolygonScaleRes__ErrorCodes_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& invalidObjectID();
+const BOOLEAN_template& invalidObjectID() const;
+BOOLEAN_template& reserved1();
+const BOOLEAN_template& reserved1() const;
+BOOLEAN_template& reserved2();
+const BOOLEAN_template& reserved2() const;
+BOOLEAN_template& reserved3();
+const BOOLEAN_template& reserved3() const;
+BOOLEAN_template& anyOtherError();
+const BOOLEAN_template& anyOtherError() const;
+BOOLEAN_template& reserved5();
+const BOOLEAN_template& reserved5() const;
+BOOLEAN_template& reserved6();
+const BOOLEAN_template& reserved6() const;
+BOOLEAN_template& reserved7();
+const BOOLEAN_template& reserved7() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangePolygonScaleRes__ErrorCodes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangePolygonScaleRes : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectIDofaOutputPolygonObjectToScale;
+  INTEGER field_newWidthAttribute;
+  INTEGER field_newHeightAttribute;
+  ChangePolygonScaleRes__ErrorCodes field_errorCodes;
+public:
+  ChangePolygonScaleRes();
+  ChangePolygonScaleRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectIDofaOutputPolygonObjectToScale,
+    const INTEGER& par_newWidthAttribute,
+    const INTEGER& par_newHeightAttribute,
+    const ChangePolygonScaleRes__ErrorCodes& par_errorCodes);
+  ChangePolygonScaleRes(const ChangePolygonScaleRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangePolygonScaleRes& operator=(const ChangePolygonScaleRes& other_value);
+  boolean operator==(const ChangePolygonScaleRes& other_value) const;
+  inline boolean operator!=(const ChangePolygonScaleRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectIDofaOutputPolygonObjectToScale()
+    {return field_objectIDofaOutputPolygonObjectToScale;}
+  inline const INTEGER& objectIDofaOutputPolygonObjectToScale() const
+    {return field_objectIDofaOutputPolygonObjectToScale;}
+  inline INTEGER& newWidthAttribute()
+    {return field_newWidthAttribute;}
+  inline const INTEGER& newWidthAttribute() const
+    {return field_newWidthAttribute;}
+  inline INTEGER& newHeightAttribute()
+    {return field_newHeightAttribute;}
+  inline const INTEGER& newHeightAttribute() const
+    {return field_newHeightAttribute;}
+  inline ChangePolygonScaleRes__ErrorCodes& errorCodes()
+    {return field_errorCodes;}
+  inline const ChangePolygonScaleRes__ErrorCodes& errorCodes() const
+    {return field_errorCodes;}
+  inline int size_of() const
+    {return 5;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangePolygonScaleRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangePolygonScaleRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangePolygonScaleRes& other_value);
+void copy_template(const ChangePolygonScaleRes_template& other_value);
+
+public:
+ChangePolygonScaleRes_template();
+ChangePolygonScaleRes_template(template_sel other_value);
+ChangePolygonScaleRes_template(const ChangePolygonScaleRes& other_value);
+ChangePolygonScaleRes_template(const OPTIONAL<ChangePolygonScaleRes>& other_value);
+ChangePolygonScaleRes_template(const ChangePolygonScaleRes_template& other_value);
+~ChangePolygonScaleRes_template();
+ChangePolygonScaleRes_template& operator=(template_sel other_value);
+ChangePolygonScaleRes_template& operator=(const ChangePolygonScaleRes& other_value);
+ChangePolygonScaleRes_template& operator=(const OPTIONAL<ChangePolygonScaleRes>& other_value);
+ChangePolygonScaleRes_template& operator=(const ChangePolygonScaleRes_template& other_value);
+boolean match(const ChangePolygonScaleRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangePolygonScaleRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangePolygonScaleRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectIDofaOutputPolygonObjectToScale();
+const INTEGER_template& objectIDofaOutputPolygonObjectToScale() const;
+INTEGER_template& newWidthAttribute();
+const INTEGER_template& newWidthAttribute() const;
+INTEGER_template& newHeightAttribute();
+const INTEGER_template& newHeightAttribute() const;
+ChangePolygonScaleRes__ErrorCodes_template& errorCodes();
+const ChangePolygonScaleRes__ErrorCodes_template& errorCodes() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangePolygonScaleRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangePolygonScaleReq : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectIDofaOutputPolygonObjectToScale;
+  INTEGER field_newWidthAttribute;
+  INTEGER field_newHeightAttribute;
+  OCTETSTRING field_reserved8;
+public:
+  ChangePolygonScaleReq();
+  ChangePolygonScaleReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectIDofaOutputPolygonObjectToScale,
+    const INTEGER& par_newWidthAttribute,
+    const INTEGER& par_newHeightAttribute,
+    const OCTETSTRING& par_reserved8);
+  ChangePolygonScaleReq(const ChangePolygonScaleReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangePolygonScaleReq& operator=(const ChangePolygonScaleReq& other_value);
+  boolean operator==(const ChangePolygonScaleReq& other_value) const;
+  inline boolean operator!=(const ChangePolygonScaleReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectIDofaOutputPolygonObjectToScale()
+    {return field_objectIDofaOutputPolygonObjectToScale;}
+  inline const INTEGER& objectIDofaOutputPolygonObjectToScale() const
+    {return field_objectIDofaOutputPolygonObjectToScale;}
+  inline INTEGER& newWidthAttribute()
+    {return field_newWidthAttribute;}
+  inline const INTEGER& newWidthAttribute() const
+    {return field_newWidthAttribute;}
+  inline INTEGER& newHeightAttribute()
+    {return field_newHeightAttribute;}
+  inline const INTEGER& newHeightAttribute() const
+    {return field_newHeightAttribute;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 5;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangePolygonScaleReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangePolygonScaleReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangePolygonScaleReq& other_value);
+void copy_template(const ChangePolygonScaleReq_template& other_value);
+
+public:
+ChangePolygonScaleReq_template();
+ChangePolygonScaleReq_template(template_sel other_value);
+ChangePolygonScaleReq_template(const ChangePolygonScaleReq& other_value);
+ChangePolygonScaleReq_template(const OPTIONAL<ChangePolygonScaleReq>& other_value);
+ChangePolygonScaleReq_template(const ChangePolygonScaleReq_template& other_value);
+~ChangePolygonScaleReq_template();
+ChangePolygonScaleReq_template& operator=(template_sel other_value);
+ChangePolygonScaleReq_template& operator=(const ChangePolygonScaleReq& other_value);
+ChangePolygonScaleReq_template& operator=(const OPTIONAL<ChangePolygonScaleReq>& other_value);
+ChangePolygonScaleReq_template& operator=(const ChangePolygonScaleReq_template& other_value);
+boolean match(const ChangePolygonScaleReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangePolygonScaleReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangePolygonScaleReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectIDofaOutputPolygonObjectToScale();
+const INTEGER_template& objectIDofaOutputPolygonObjectToScale() const;
+INTEGER_template& newWidthAttribute();
+const INTEGER_template& newWidthAttribute() const;
+INTEGER_template& newHeightAttribute();
+const INTEGER_template& newHeightAttribute() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangePolygonScaleReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class GraphicsContextRes__ErrorCodes : public Base_Type {
+  BOOLEAN field_invalidObjectIDorObjectIsNotAGraphics;
+  BOOLEAN field_InvalidSubCommandID;
+  BOOLEAN field_InvalidParameter;
+  BOOLEAN field_SubCommandWillProduceInvalidResults;
+  BOOLEAN field_anyOtherError;
+  BOOLEAN field_reserved5;
+  BOOLEAN field_reserved6;
+  BOOLEAN field_reserved7;
+public:
+  GraphicsContextRes__ErrorCodes();
+  GraphicsContextRes__ErrorCodes(const BOOLEAN& par_invalidObjectIDorObjectIsNotAGraphics,
+    const BOOLEAN& par_InvalidSubCommandID,
+    const BOOLEAN& par_InvalidParameter,
+    const BOOLEAN& par_SubCommandWillProduceInvalidResults,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7);
+  GraphicsContextRes__ErrorCodes(const GraphicsContextRes__ErrorCodes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  GraphicsContextRes__ErrorCodes& operator=(const GraphicsContextRes__ErrorCodes& other_value);
+  boolean operator==(const GraphicsContextRes__ErrorCodes& other_value) const;
+  inline boolean operator!=(const GraphicsContextRes__ErrorCodes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& invalidObjectIDorObjectIsNotAGraphics()
+    {return field_invalidObjectIDorObjectIsNotAGraphics;}
+  inline const BOOLEAN& invalidObjectIDorObjectIsNotAGraphics() const
+    {return field_invalidObjectIDorObjectIsNotAGraphics;}
+  inline BOOLEAN& InvalidSubCommandID()
+    {return field_InvalidSubCommandID;}
+  inline const BOOLEAN& InvalidSubCommandID() const
+    {return field_InvalidSubCommandID;}
+  inline BOOLEAN& InvalidParameter()
+    {return field_InvalidParameter;}
+  inline const BOOLEAN& InvalidParameter() const
+    {return field_InvalidParameter;}
+  inline BOOLEAN& SubCommandWillProduceInvalidResults()
+    {return field_SubCommandWillProduceInvalidResults;}
+  inline const BOOLEAN& SubCommandWillProduceInvalidResults() const
+    {return field_SubCommandWillProduceInvalidResults;}
+  inline BOOLEAN& anyOtherError()
+    {return field_anyOtherError;}
+  inline const BOOLEAN& anyOtherError() const
+    {return field_anyOtherError;}
+  inline BOOLEAN& reserved5()
+    {return field_reserved5;}
+  inline const BOOLEAN& reserved5() const
+    {return field_reserved5;}
+  inline BOOLEAN& reserved6()
+    {return field_reserved6;}
+  inline const BOOLEAN& reserved6() const
+    {return field_reserved6;}
+  inline BOOLEAN& reserved7()
+    {return field_reserved7;}
+  inline const BOOLEAN& reserved7() const
+    {return field_reserved7;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class GraphicsContextRes__ErrorCodes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+GraphicsContextRes__ErrorCodes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const GraphicsContextRes__ErrorCodes& other_value);
+void copy_template(const GraphicsContextRes__ErrorCodes_template& other_value);
+
+public:
+GraphicsContextRes__ErrorCodes_template();
+GraphicsContextRes__ErrorCodes_template(template_sel other_value);
+GraphicsContextRes__ErrorCodes_template(const GraphicsContextRes__ErrorCodes& other_value);
+GraphicsContextRes__ErrorCodes_template(const OPTIONAL<GraphicsContextRes__ErrorCodes>& other_value);
+GraphicsContextRes__ErrorCodes_template(const GraphicsContextRes__ErrorCodes_template& other_value);
+~GraphicsContextRes__ErrorCodes_template();
+GraphicsContextRes__ErrorCodes_template& operator=(template_sel other_value);
+GraphicsContextRes__ErrorCodes_template& operator=(const GraphicsContextRes__ErrorCodes& other_value);
+GraphicsContextRes__ErrorCodes_template& operator=(const OPTIONAL<GraphicsContextRes__ErrorCodes>& other_value);
+GraphicsContextRes__ErrorCodes_template& operator=(const GraphicsContextRes__ErrorCodes_template& other_value);
+boolean match(const GraphicsContextRes__ErrorCodes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+GraphicsContextRes__ErrorCodes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+GraphicsContextRes__ErrorCodes_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& invalidObjectIDorObjectIsNotAGraphics();
+const BOOLEAN_template& invalidObjectIDorObjectIsNotAGraphics() const;
+BOOLEAN_template& InvalidSubCommandID();
+const BOOLEAN_template& InvalidSubCommandID() const;
+BOOLEAN_template& InvalidParameter();
+const BOOLEAN_template& InvalidParameter() const;
+BOOLEAN_template& SubCommandWillProduceInvalidResults();
+const BOOLEAN_template& SubCommandWillProduceInvalidResults() const;
+BOOLEAN_template& anyOtherError();
+const BOOLEAN_template& anyOtherError() const;
+BOOLEAN_template& reserved5();
+const BOOLEAN_template& reserved5() const;
+BOOLEAN_template& reserved6();
+const BOOLEAN_template& reserved6() const;
+BOOLEAN_template& reserved7();
+const BOOLEAN_template& reserved7() const;
+int size_of() const;
+void log() const;
+void log_match(const GraphicsContextRes__ErrorCodes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class GraphicsContextRes : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectIDofAGraphicsContextObject;
+  INTEGER field_subcommandID;
+  GraphicsContextRes__ErrorCodes field_errorCodes;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  GraphicsContextRes();
+  GraphicsContextRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectIDofAGraphicsContextObject,
+    const INTEGER& par_subcommandID,
+    const GraphicsContextRes__ErrorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  GraphicsContextRes(const GraphicsContextRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  GraphicsContextRes& operator=(const GraphicsContextRes& other_value);
+  boolean operator==(const GraphicsContextRes& other_value) const;
+  inline boolean operator!=(const GraphicsContextRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectIDofAGraphicsContextObject()
+    {return field_objectIDofAGraphicsContextObject;}
+  inline const INTEGER& objectIDofAGraphicsContextObject() const
+    {return field_objectIDofAGraphicsContextObject;}
+  inline INTEGER& subcommandID()
+    {return field_subcommandID;}
+  inline const INTEGER& subcommandID() const
+    {return field_subcommandID;}
+  inline GraphicsContextRes__ErrorCodes& errorCodes()
+    {return field_errorCodes;}
+  inline const GraphicsContextRes__ErrorCodes& errorCodes() const
+    {return field_errorCodes;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 7;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class GraphicsContextRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+GraphicsContextRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const GraphicsContextRes& other_value);
+void copy_template(const GraphicsContextRes_template& other_value);
+
+public:
+GraphicsContextRes_template();
+GraphicsContextRes_template(template_sel other_value);
+GraphicsContextRes_template(const GraphicsContextRes& other_value);
+GraphicsContextRes_template(const OPTIONAL<GraphicsContextRes>& other_value);
+GraphicsContextRes_template(const GraphicsContextRes_template& other_value);
+~GraphicsContextRes_template();
+GraphicsContextRes_template& operator=(template_sel other_value);
+GraphicsContextRes_template& operator=(const GraphicsContextRes& other_value);
+GraphicsContextRes_template& operator=(const OPTIONAL<GraphicsContextRes>& other_value);
+GraphicsContextRes_template& operator=(const GraphicsContextRes_template& other_value);
+boolean match(const GraphicsContextRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+GraphicsContextRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+GraphicsContextRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectIDofAGraphicsContextObject();
+const INTEGER_template& objectIDofAGraphicsContextObject() const;
+INTEGER_template& subcommandID();
+const INTEGER_template& subcommandID() const;
+GraphicsContextRes__ErrorCodes_template& errorCodes();
+const GraphicsContextRes__ErrorCodes_template& errorCodes() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const GraphicsContextRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SetGraphicsCursor : public Base_Type {
+  INTEGER field_xPosition;
+  INTEGER field_yPosition;
+public:
+  SetGraphicsCursor();
+  SetGraphicsCursor(const INTEGER& par_xPosition,
+    const INTEGER& par_yPosition);
+  SetGraphicsCursor(const SetGraphicsCursor& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SetGraphicsCursor& operator=(const SetGraphicsCursor& other_value);
+  boolean operator==(const SetGraphicsCursor& other_value) const;
+  inline boolean operator!=(const SetGraphicsCursor& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& xPosition()
+    {return field_xPosition;}
+  inline const INTEGER& xPosition() const
+    {return field_xPosition;}
+  inline INTEGER& yPosition()
+    {return field_yPosition;}
+  inline const INTEGER& yPosition() const
+    {return field_yPosition;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class SetGraphicsCursor_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SetGraphicsCursor_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SetGraphicsCursor& other_value);
+void copy_template(const SetGraphicsCursor_template& other_value);
+
+public:
+SetGraphicsCursor_template();
+SetGraphicsCursor_template(template_sel other_value);
+SetGraphicsCursor_template(const SetGraphicsCursor& other_value);
+SetGraphicsCursor_template(const OPTIONAL<SetGraphicsCursor>& other_value);
+SetGraphicsCursor_template(const SetGraphicsCursor_template& other_value);
+~SetGraphicsCursor_template();
+SetGraphicsCursor_template& operator=(template_sel other_value);
+SetGraphicsCursor_template& operator=(const SetGraphicsCursor& other_value);
+SetGraphicsCursor_template& operator=(const OPTIONAL<SetGraphicsCursor>& other_value);
+SetGraphicsCursor_template& operator=(const SetGraphicsCursor_template& other_value);
+boolean match(const SetGraphicsCursor& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SetGraphicsCursor valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SetGraphicsCursor_template& list_item(unsigned int list_index) const;
+INTEGER_template& xPosition();
+const INTEGER_template& xPosition() const;
+INTEGER_template& yPosition();
+const INTEGER_template& yPosition() const;
+int size_of() const;
+void log() const;
+void log_match(const SetGraphicsCursor& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class MoveGraphicsCursor : public Base_Type {
+  INTEGER field_xOffset;
+  INTEGER field_yOffset;
+public:
+  MoveGraphicsCursor();
+  MoveGraphicsCursor(const INTEGER& par_xOffset,
+    const INTEGER& par_yOffset);
+  MoveGraphicsCursor(const MoveGraphicsCursor& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  MoveGraphicsCursor& operator=(const MoveGraphicsCursor& other_value);
+  boolean operator==(const MoveGraphicsCursor& other_value) const;
+  inline boolean operator!=(const MoveGraphicsCursor& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& xOffset()
+    {return field_xOffset;}
+  inline const INTEGER& xOffset() const
+    {return field_xOffset;}
+  inline INTEGER& yOffset()
+    {return field_yOffset;}
+  inline const INTEGER& yOffset() const
+    {return field_yOffset;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class MoveGraphicsCursor_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+MoveGraphicsCursor_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const MoveGraphicsCursor& other_value);
+void copy_template(const MoveGraphicsCursor_template& other_value);
+
+public:
+MoveGraphicsCursor_template();
+MoveGraphicsCursor_template(template_sel other_value);
+MoveGraphicsCursor_template(const MoveGraphicsCursor& other_value);
+MoveGraphicsCursor_template(const OPTIONAL<MoveGraphicsCursor>& other_value);
+MoveGraphicsCursor_template(const MoveGraphicsCursor_template& other_value);
+~MoveGraphicsCursor_template();
+MoveGraphicsCursor_template& operator=(template_sel other_value);
+MoveGraphicsCursor_template& operator=(const MoveGraphicsCursor& other_value);
+MoveGraphicsCursor_template& operator=(const OPTIONAL<MoveGraphicsCursor>& other_value);
+MoveGraphicsCursor_template& operator=(const MoveGraphicsCursor_template& other_value);
+boolean match(const MoveGraphicsCursor& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+MoveGraphicsCursor valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+MoveGraphicsCursor_template& list_item(unsigned int list_index) const;
+INTEGER_template& xOffset();
+const INTEGER_template& xOffset() const;
+INTEGER_template& yOffset();
+const INTEGER_template& yOffset() const;
+int size_of() const;
+void log() const;
+void log_match(const MoveGraphicsCursor& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SetForegroundColour : public Base_Type {
+  INTEGER field_foregroundColor;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  SetForegroundColour();
+  SetForegroundColour(const INTEGER& par_foregroundColor,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  SetForegroundColour(const SetForegroundColour& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SetForegroundColour& operator=(const SetForegroundColour& other_value);
+  boolean operator==(const SetForegroundColour& other_value) const;
+  inline boolean operator!=(const SetForegroundColour& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& foregroundColor()
+    {return field_foregroundColor;}
+  inline const INTEGER& foregroundColor() const
+    {return field_foregroundColor;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 4;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class SetForegroundColour_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SetForegroundColour_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SetForegroundColour& other_value);
+void copy_template(const SetForegroundColour_template& other_value);
+
+public:
+SetForegroundColour_template();
+SetForegroundColour_template(template_sel other_value);
+SetForegroundColour_template(const SetForegroundColour& other_value);
+SetForegroundColour_template(const OPTIONAL<SetForegroundColour>& other_value);
+SetForegroundColour_template(const SetForegroundColour_template& other_value);
+~SetForegroundColour_template();
+SetForegroundColour_template& operator=(template_sel other_value);
+SetForegroundColour_template& operator=(const SetForegroundColour& other_value);
+SetForegroundColour_template& operator=(const OPTIONAL<SetForegroundColour>& other_value);
+SetForegroundColour_template& operator=(const SetForegroundColour_template& other_value);
+boolean match(const SetForegroundColour& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SetForegroundColour valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SetForegroundColour_template& list_item(unsigned int list_index) const;
+INTEGER_template& foregroundColor();
+const INTEGER_template& foregroundColor() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const SetForegroundColour& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SetBackgroundColour : public Base_Type {
+  INTEGER field_backgroundColor;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  SetBackgroundColour();
+  SetBackgroundColour(const INTEGER& par_backgroundColor,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  SetBackgroundColour(const SetBackgroundColour& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SetBackgroundColour& operator=(const SetBackgroundColour& other_value);
+  boolean operator==(const SetBackgroundColour& other_value) const;
+  inline boolean operator!=(const SetBackgroundColour& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& backgroundColor()
+    {return field_backgroundColor;}
+  inline const INTEGER& backgroundColor() const
+    {return field_backgroundColor;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 4;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class SetBackgroundColour_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SetBackgroundColour_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SetBackgroundColour& other_value);
+void copy_template(const SetBackgroundColour_template& other_value);
+
+public:
+SetBackgroundColour_template();
+SetBackgroundColour_template(template_sel other_value);
+SetBackgroundColour_template(const SetBackgroundColour& other_value);
+SetBackgroundColour_template(const OPTIONAL<SetBackgroundColour>& other_value);
+SetBackgroundColour_template(const SetBackgroundColour_template& other_value);
+~SetBackgroundColour_template();
+SetBackgroundColour_template& operator=(template_sel other_value);
+SetBackgroundColour_template& operator=(const SetBackgroundColour& other_value);
+SetBackgroundColour_template& operator=(const OPTIONAL<SetBackgroundColour>& other_value);
+SetBackgroundColour_template& operator=(const SetBackgroundColour_template& other_value);
+boolean match(const SetBackgroundColour& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SetBackgroundColour valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SetBackgroundColour_template& list_item(unsigned int list_index) const;
+INTEGER_template& backgroundColor();
+const INTEGER_template& backgroundColor() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const SetBackgroundColour& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SetLineAttributesObjectID : public Base_Type {
+  INTEGER field_objectIDofLineAttributesObject;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  SetLineAttributesObjectID();
+  SetLineAttributesObjectID(const INTEGER& par_objectIDofLineAttributesObject,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  SetLineAttributesObjectID(const SetLineAttributesObjectID& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SetLineAttributesObjectID& operator=(const SetLineAttributesObjectID& other_value);
+  boolean operator==(const SetLineAttributesObjectID& other_value) const;
+  inline boolean operator!=(const SetLineAttributesObjectID& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& objectIDofLineAttributesObject()
+    {return field_objectIDofLineAttributesObject;}
+  inline const INTEGER& objectIDofLineAttributesObject() const
+    {return field_objectIDofLineAttributesObject;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 3;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class SetLineAttributesObjectID_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SetLineAttributesObjectID_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SetLineAttributesObjectID& other_value);
+void copy_template(const SetLineAttributesObjectID_template& other_value);
+
+public:
+SetLineAttributesObjectID_template();
+SetLineAttributesObjectID_template(template_sel other_value);
+SetLineAttributesObjectID_template(const SetLineAttributesObjectID& other_value);
+SetLineAttributesObjectID_template(const OPTIONAL<SetLineAttributesObjectID>& other_value);
+SetLineAttributesObjectID_template(const SetLineAttributesObjectID_template& other_value);
+~SetLineAttributesObjectID_template();
+SetLineAttributesObjectID_template& operator=(template_sel other_value);
+SetLineAttributesObjectID_template& operator=(const SetLineAttributesObjectID& other_value);
+SetLineAttributesObjectID_template& operator=(const OPTIONAL<SetLineAttributesObjectID>& other_value);
+SetLineAttributesObjectID_template& operator=(const SetLineAttributesObjectID_template& other_value);
+boolean match(const SetLineAttributesObjectID& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SetLineAttributesObjectID valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SetLineAttributesObjectID_template& list_item(unsigned int list_index) const;
+INTEGER_template& objectIDofLineAttributesObject();
+const INTEGER_template& objectIDofLineAttributesObject() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const SetLineAttributesObjectID& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SetFileAttributesObjectID : public Base_Type {
+  INTEGER field_objectIDofFillAttributesObject;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  SetFileAttributesObjectID();
+  SetFileAttributesObjectID(const INTEGER& par_objectIDofFillAttributesObject,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  SetFileAttributesObjectID(const SetFileAttributesObjectID& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SetFileAttributesObjectID& operator=(const SetFileAttributesObjectID& other_value);
+  boolean operator==(const SetFileAttributesObjectID& other_value) const;
+  inline boolean operator!=(const SetFileAttributesObjectID& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& objectIDofFillAttributesObject()
+    {return field_objectIDofFillAttributesObject;}
+  inline const INTEGER& objectIDofFillAttributesObject() const
+    {return field_objectIDofFillAttributesObject;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 3;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class SetFileAttributesObjectID_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SetFileAttributesObjectID_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SetFileAttributesObjectID& other_value);
+void copy_template(const SetFileAttributesObjectID_template& other_value);
+
+public:
+SetFileAttributesObjectID_template();
+SetFileAttributesObjectID_template(template_sel other_value);
+SetFileAttributesObjectID_template(const SetFileAttributesObjectID& other_value);
+SetFileAttributesObjectID_template(const OPTIONAL<SetFileAttributesObjectID>& other_value);
+SetFileAttributesObjectID_template(const SetFileAttributesObjectID_template& other_value);
+~SetFileAttributesObjectID_template();
+SetFileAttributesObjectID_template& operator=(template_sel other_value);
+SetFileAttributesObjectID_template& operator=(const SetFileAttributesObjectID& other_value);
+SetFileAttributesObjectID_template& operator=(const OPTIONAL<SetFileAttributesObjectID>& other_value);
+SetFileAttributesObjectID_template& operator=(const SetFileAttributesObjectID_template& other_value);
+boolean match(const SetFileAttributesObjectID& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SetFileAttributesObjectID valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SetFileAttributesObjectID_template& list_item(unsigned int list_index) const;
+INTEGER_template& objectIDofFillAttributesObject();
+const INTEGER_template& objectIDofFillAttributesObject() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const SetFileAttributesObjectID& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SetFontAttributesObjectID : public Base_Type {
+  INTEGER field_objectIDofFontAttributesObject;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  SetFontAttributesObjectID();
+  SetFontAttributesObjectID(const INTEGER& par_objectIDofFontAttributesObject,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  SetFontAttributesObjectID(const SetFontAttributesObjectID& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SetFontAttributesObjectID& operator=(const SetFontAttributesObjectID& other_value);
+  boolean operator==(const SetFontAttributesObjectID& other_value) const;
+  inline boolean operator!=(const SetFontAttributesObjectID& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& objectIDofFontAttributesObject()
+    {return field_objectIDofFontAttributesObject;}
+  inline const INTEGER& objectIDofFontAttributesObject() const
+    {return field_objectIDofFontAttributesObject;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 3;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class SetFontAttributesObjectID_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SetFontAttributesObjectID_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SetFontAttributesObjectID& other_value);
+void copy_template(const SetFontAttributesObjectID_template& other_value);
+
+public:
+SetFontAttributesObjectID_template();
+SetFontAttributesObjectID_template(template_sel other_value);
+SetFontAttributesObjectID_template(const SetFontAttributesObjectID& other_value);
+SetFontAttributesObjectID_template(const OPTIONAL<SetFontAttributesObjectID>& other_value);
+SetFontAttributesObjectID_template(const SetFontAttributesObjectID_template& other_value);
+~SetFontAttributesObjectID_template();
+SetFontAttributesObjectID_template& operator=(template_sel other_value);
+SetFontAttributesObjectID_template& operator=(const SetFontAttributesObjectID& other_value);
+SetFontAttributesObjectID_template& operator=(const OPTIONAL<SetFontAttributesObjectID>& other_value);
+SetFontAttributesObjectID_template& operator=(const SetFontAttributesObjectID_template& other_value);
+boolean match(const SetFontAttributesObjectID& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SetFontAttributesObjectID valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SetFontAttributesObjectID_template& list_item(unsigned int list_index) const;
+INTEGER_template& objectIDofFontAttributesObject();
+const INTEGER_template& objectIDofFontAttributesObject() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const SetFontAttributesObjectID& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class EraseRectangle : public Base_Type {
+  INTEGER field_width;
+  INTEGER field_height;
+public:
+  EraseRectangle();
+  EraseRectangle(const INTEGER& par_width,
+    const INTEGER& par_height);
+  EraseRectangle(const EraseRectangle& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  EraseRectangle& operator=(const EraseRectangle& other_value);
+  boolean operator==(const EraseRectangle& other_value) const;
+  inline boolean operator!=(const EraseRectangle& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& width()
+    {return field_width;}
+  inline const INTEGER& width() const
+    {return field_width;}
+  inline INTEGER& height()
+    {return field_height;}
+  inline const INTEGER& height() const
+    {return field_height;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class EraseRectangle_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+EraseRectangle_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const EraseRectangle& other_value);
+void copy_template(const EraseRectangle_template& other_value);
+
+public:
+EraseRectangle_template();
+EraseRectangle_template(template_sel other_value);
+EraseRectangle_template(const EraseRectangle& other_value);
+EraseRectangle_template(const OPTIONAL<EraseRectangle>& other_value);
+EraseRectangle_template(const EraseRectangle_template& other_value);
+~EraseRectangle_template();
+EraseRectangle_template& operator=(template_sel other_value);
+EraseRectangle_template& operator=(const EraseRectangle& other_value);
+EraseRectangle_template& operator=(const OPTIONAL<EraseRectangle>& other_value);
+EraseRectangle_template& operator=(const EraseRectangle_template& other_value);
+boolean match(const EraseRectangle& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+EraseRectangle valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+EraseRectangle_template& list_item(unsigned int list_index) const;
+INTEGER_template& width();
+const INTEGER_template& width() const;
+INTEGER_template& height();
+const INTEGER_template& height() const;
+int size_of() const;
+void log() const;
+void log_match(const EraseRectangle& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class DrawPoint : public Base_Type {
+  INTEGER field_xOffset;
+  INTEGER field_yOffset;
+public:
+  DrawPoint();
+  DrawPoint(const INTEGER& par_xOffset,
+    const INTEGER& par_yOffset);
+  DrawPoint(const DrawPoint& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  DrawPoint& operator=(const DrawPoint& other_value);
+  boolean operator==(const DrawPoint& other_value) const;
+  inline boolean operator!=(const DrawPoint& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& xOffset()
+    {return field_xOffset;}
+  inline const INTEGER& xOffset() const
+    {return field_xOffset;}
+  inline INTEGER& yOffset()
+    {return field_yOffset;}
+  inline const INTEGER& yOffset() const
+    {return field_yOffset;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class DrawPoint_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+DrawPoint_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const DrawPoint& other_value);
+void copy_template(const DrawPoint_template& other_value);
+
+public:
+DrawPoint_template();
+DrawPoint_template(template_sel other_value);
+DrawPoint_template(const DrawPoint& other_value);
+DrawPoint_template(const OPTIONAL<DrawPoint>& other_value);
+DrawPoint_template(const DrawPoint_template& other_value);
+~DrawPoint_template();
+DrawPoint_template& operator=(template_sel other_value);
+DrawPoint_template& operator=(const DrawPoint& other_value);
+DrawPoint_template& operator=(const OPTIONAL<DrawPoint>& other_value);
+DrawPoint_template& operator=(const DrawPoint_template& other_value);
+boolean match(const DrawPoint& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+DrawPoint valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+DrawPoint_template& list_item(unsigned int list_index) const;
+INTEGER_template& xOffset();
+const INTEGER_template& xOffset() const;
+INTEGER_template& yOffset();
+const INTEGER_template& yOffset() const;
+int size_of() const;
+void log() const;
+void log_match(const DrawPoint& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class DrawLine : public Base_Type {
+  INTEGER field_xOffset;
+  INTEGER field_yOffset;
+public:
+  DrawLine();
+  DrawLine(const INTEGER& par_xOffset,
+    const INTEGER& par_yOffset);
+  DrawLine(const DrawLine& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  DrawLine& operator=(const DrawLine& other_value);
+  boolean operator==(const DrawLine& other_value) const;
+  inline boolean operator!=(const DrawLine& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& xOffset()
+    {return field_xOffset;}
+  inline const INTEGER& xOffset() const
+    {return field_xOffset;}
+  inline INTEGER& yOffset()
+    {return field_yOffset;}
+  inline const INTEGER& yOffset() const
+    {return field_yOffset;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class DrawLine_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+DrawLine_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const DrawLine& other_value);
+void copy_template(const DrawLine_template& other_value);
+
+public:
+DrawLine_template();
+DrawLine_template(template_sel other_value);
+DrawLine_template(const DrawLine& other_value);
+DrawLine_template(const OPTIONAL<DrawLine>& other_value);
+DrawLine_template(const DrawLine_template& other_value);
+~DrawLine_template();
+DrawLine_template& operator=(template_sel other_value);
+DrawLine_template& operator=(const DrawLine& other_value);
+DrawLine_template& operator=(const OPTIONAL<DrawLine>& other_value);
+DrawLine_template& operator=(const DrawLine_template& other_value);
+boolean match(const DrawLine& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+DrawLine valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+DrawLine_template& list_item(unsigned int list_index) const;
+INTEGER_template& xOffset();
+const INTEGER_template& xOffset() const;
+INTEGER_template& yOffset();
+const INTEGER_template& yOffset() const;
+int size_of() const;
+void log() const;
+void log_match(const DrawLine& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class DrawRectangle : public Base_Type {
+  INTEGER field_width;
+  INTEGER field_height;
+public:
+  DrawRectangle();
+  DrawRectangle(const INTEGER& par_width,
+    const INTEGER& par_height);
+  DrawRectangle(const DrawRectangle& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  DrawRectangle& operator=(const DrawRectangle& other_value);
+  boolean operator==(const DrawRectangle& other_value) const;
+  inline boolean operator!=(const DrawRectangle& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& width()
+    {return field_width;}
+  inline const INTEGER& width() const
+    {return field_width;}
+  inline INTEGER& height()
+    {return field_height;}
+  inline const INTEGER& height() const
+    {return field_height;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class DrawRectangle_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+DrawRectangle_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const DrawRectangle& other_value);
+void copy_template(const DrawRectangle_template& other_value);
+
+public:
+DrawRectangle_template();
+DrawRectangle_template(template_sel other_value);
+DrawRectangle_template(const DrawRectangle& other_value);
+DrawRectangle_template(const OPTIONAL<DrawRectangle>& other_value);
+DrawRectangle_template(const DrawRectangle_template& other_value);
+~DrawRectangle_template();
+DrawRectangle_template& operator=(template_sel other_value);
+DrawRectangle_template& operator=(const DrawRectangle& other_value);
+DrawRectangle_template& operator=(const OPTIONAL<DrawRectangle>& other_value);
+DrawRectangle_template& operator=(const DrawRectangle_template& other_value);
+boolean match(const DrawRectangle& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+DrawRectangle valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+DrawRectangle_template& list_item(unsigned int list_index) const;
+INTEGER_template& width();
+const INTEGER_template& width() const;
+INTEGER_template& height();
+const INTEGER_template& height() const;
+int size_of() const;
+void log() const;
+void log_match(const DrawRectangle& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class DrawClosedEllipse : public Base_Type {
+  INTEGER field_width;
+  INTEGER field_height;
+public:
+  DrawClosedEllipse();
+  DrawClosedEllipse(const INTEGER& par_width,
+    const INTEGER& par_height);
+  DrawClosedEllipse(const DrawClosedEllipse& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  DrawClosedEllipse& operator=(const DrawClosedEllipse& other_value);
+  boolean operator==(const DrawClosedEllipse& other_value) const;
+  inline boolean operator!=(const DrawClosedEllipse& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& width()
+    {return field_width;}
+  inline const INTEGER& width() const
+    {return field_width;}
+  inline INTEGER& height()
+    {return field_height;}
+  inline const INTEGER& height() const
+    {return field_height;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class DrawClosedEllipse_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+DrawClosedEllipse_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const DrawClosedEllipse& other_value);
+void copy_template(const DrawClosedEllipse_template& other_value);
+
+public:
+DrawClosedEllipse_template();
+DrawClosedEllipse_template(template_sel other_value);
+DrawClosedEllipse_template(const DrawClosedEllipse& other_value);
+DrawClosedEllipse_template(const OPTIONAL<DrawClosedEllipse>& other_value);
+DrawClosedEllipse_template(const DrawClosedEllipse_template& other_value);
+~DrawClosedEllipse_template();
+DrawClosedEllipse_template& operator=(template_sel other_value);
+DrawClosedEllipse_template& operator=(const DrawClosedEllipse& other_value);
+DrawClosedEllipse_template& operator=(const OPTIONAL<DrawClosedEllipse>& other_value);
+DrawClosedEllipse_template& operator=(const DrawClosedEllipse_template& other_value);
+boolean match(const DrawClosedEllipse& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+DrawClosedEllipse valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+DrawClosedEllipse_template& list_item(unsigned int list_index) const;
+INTEGER_template& width();
+const INTEGER_template& width() const;
+INTEGER_template& height();
+const INTEGER_template& height() const;
+int size_of() const;
+void log() const;
+void log_match(const DrawClosedEllipse& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class PolygonPoint : public Base_Type {
+  INTEGER field_xOffset;
+  INTEGER field_yOffset;
+public:
+  PolygonPoint();
+  PolygonPoint(const INTEGER& par_xOffset,
+    const INTEGER& par_yOffset);
+  PolygonPoint(const PolygonPoint& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  PolygonPoint& operator=(const PolygonPoint& other_value);
+  boolean operator==(const PolygonPoint& other_value) const;
+  inline boolean operator!=(const PolygonPoint& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& xOffset()
+    {return field_xOffset;}
+  inline const INTEGER& xOffset() const
+    {return field_xOffset;}
+  inline INTEGER& yOffset()
+    {return field_yOffset;}
+  inline const INTEGER& yOffset() const
+    {return field_yOffset;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class PolygonPoint_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+PolygonPoint_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const PolygonPoint& other_value);
+void copy_template(const PolygonPoint_template& other_value);
+
+public:
+PolygonPoint_template();
+PolygonPoint_template(template_sel other_value);
+PolygonPoint_template(const PolygonPoint& other_value);
+PolygonPoint_template(const OPTIONAL<PolygonPoint>& other_value);
+PolygonPoint_template(const PolygonPoint_template& other_value);
+~PolygonPoint_template();
+PolygonPoint_template& operator=(template_sel other_value);
+PolygonPoint_template& operator=(const PolygonPoint& other_value);
+PolygonPoint_template& operator=(const OPTIONAL<PolygonPoint>& other_value);
+PolygonPoint_template& operator=(const PolygonPoint_template& other_value);
+boolean match(const PolygonPoint& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+PolygonPoint valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+PolygonPoint_template& list_item(unsigned int list_index) const;
+INTEGER_template& xOffset();
+const INTEGER_template& xOffset() const;
+INTEGER_template& yOffset();
+const INTEGER_template& yOffset() const;
+int size_of() const;
+void log() const;
+void log_match(const PolygonPoint& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class PolygonPointArray : public Base_Type {
+struct recordof_setof_struct {
+int ref_count;
+int n_elements;
+PolygonPoint **value_elements;
+} *val_ptr;
+
+static const PolygonPoint UNBOUND_ELEM;
+private:
+friend boolean operator==(null_type null_value, const PolygonPointArray& other_value);
+
+public:
+  typedef PolygonPoint of_type;
+PolygonPointArray();
+PolygonPointArray(null_type other_value);
+PolygonPointArray(const PolygonPointArray& other_value);
+~PolygonPointArray();
+
+void clean_up();
+PolygonPointArray& operator=(null_type other_value);
+PolygonPointArray& operator=(const PolygonPointArray& other_value);
+
+boolean operator==(null_type other_value) const;
+boolean operator==(const PolygonPointArray& other_value) const;
+inline boolean operator!=(null_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const PolygonPointArray& other_value) const { return !(*this == other_value); }
+
+PolygonPoint& operator[](int index_value);
+PolygonPoint& operator[](const INTEGER& index_value);
+const PolygonPoint& operator[](int index_value) const;
+const PolygonPoint& operator[](const INTEGER& index_value) const;
+
+PolygonPointArray operator<<=(int rotate_count) const;
+PolygonPointArray operator<<=(const INTEGER& rotate_count) const;
+PolygonPointArray operator>>=(int rotate_count) const;
+PolygonPointArray operator>>=(const INTEGER& rotate_count) const;
+
+PolygonPointArray operator+(const PolygonPointArray& other_value) const;
+
+PolygonPointArray substr(int index, int returncount) const;
+
+PolygonPointArray replace(int index, int len, const PolygonPointArray& repl) const;
+
+PolygonPointArray replace(int index, int len, const PolygonPointArray_template& repl) const;
+
+void set_size(int new_size);
+inline boolean is_bound() const {return val_ptr != NULL; }
+inline boolean is_present() const { return is_bound(); }
+boolean is_value() const;
+int size_of() const;
+int n_elem() const { return size_of(); }
+int lengthof() const;
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class PolygonPointArray_template : public Record_Of_Template {
+union {
+struct {
+int n_elements;
+PolygonPoint_template **value_elements;
+} single_value;
+struct {
+unsigned int n_values;
+PolygonPointArray_template *list_value;
+} value_list;
+};
+void copy_value(const PolygonPointArray& other_value);
+void copy_template(const PolygonPointArray_template& other_value);
+static boolean match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy);
+
+public:
+PolygonPointArray_template();
+PolygonPointArray_template(template_sel other_value);
+PolygonPointArray_template(null_type other_value);
+PolygonPointArray_template(const PolygonPointArray& other_value);
+PolygonPointArray_template(const OPTIONAL<PolygonPointArray>& other_value);
+PolygonPointArray_template(const PolygonPointArray_template& other_value);
+~PolygonPointArray_template();
+
+void clean_up();
+PolygonPointArray_template& operator=(template_sel other_value);
+PolygonPointArray_template& operator=(null_type other_value);
+PolygonPointArray_template& operator=(const PolygonPointArray& other_value);
+PolygonPointArray_template& operator=(const OPTIONAL<PolygonPointArray>& other_value);
+PolygonPointArray_template& operator=(const PolygonPointArray_template& other_value);
+
+PolygonPoint_template& operator[](int index_value);
+PolygonPoint_template& operator[](const INTEGER& index_value);
+const PolygonPoint_template& operator[](int index_value) const;
+const PolygonPoint_template& operator[](const INTEGER& index_value) const;
+
+void set_size(int new_size);
+int n_elem() const;
+int size_of(boolean is_size) const;
+inline int size_of() const { return size_of(TRUE); }
+inline int lengthof() const { return size_of(FALSE); }
+boolean match(const PolygonPointArray& other_value, boolean legacy = FALSE) const;
+inline boolean is_bound() const 
+  {return template_selection != UNINITIALIZED_TEMPLATE; }
+boolean is_value() const;
+PolygonPointArray valueof() const;
+PolygonPointArray substr(int index, int returncount) const;
+
+PolygonPointArray replace(int index, int len, const PolygonPointArray_template& repl) const;
+
+PolygonPointArray replace(int index, int len, const PolygonPointArray& repl) const;
+
+void set_type(template_sel template_type, unsigned int list_length);
+PolygonPointArray_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const PolygonPointArray& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean get_istemplate_kind(const char* type) const;
+};
+
+class DrawPolygon : public Base_Type {
+  INTEGER field_numberOfPolygonPointsToFollow;
+  PolygonPointArray field_polygonPointArray;
+public:
+  DrawPolygon();
+  DrawPolygon(const INTEGER& par_numberOfPolygonPointsToFollow,
+    const PolygonPointArray& par_polygonPointArray);
+  DrawPolygon(const DrawPolygon& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  DrawPolygon& operator=(const DrawPolygon& other_value);
+  boolean operator==(const DrawPolygon& other_value) const;
+  inline boolean operator!=(const DrawPolygon& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& numberOfPolygonPointsToFollow()
+    {return field_numberOfPolygonPointsToFollow;}
+  inline const INTEGER& numberOfPolygonPointsToFollow() const
+    {return field_numberOfPolygonPointsToFollow;}
+  inline PolygonPointArray& polygonPointArray()
+    {return field_polygonPointArray;}
+  inline const PolygonPointArray& polygonPointArray() const
+    {return field_polygonPointArray;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class DrawPolygon_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+DrawPolygon_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const DrawPolygon& other_value);
+void copy_template(const DrawPolygon_template& other_value);
+
+public:
+DrawPolygon_template();
+DrawPolygon_template(template_sel other_value);
+DrawPolygon_template(const DrawPolygon& other_value);
+DrawPolygon_template(const OPTIONAL<DrawPolygon>& other_value);
+DrawPolygon_template(const DrawPolygon_template& other_value);
+~DrawPolygon_template();
+DrawPolygon_template& operator=(template_sel other_value);
+DrawPolygon_template& operator=(const DrawPolygon& other_value);
+DrawPolygon_template& operator=(const OPTIONAL<DrawPolygon>& other_value);
+DrawPolygon_template& operator=(const DrawPolygon_template& other_value);
+boolean match(const DrawPolygon& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+DrawPolygon valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+DrawPolygon_template& list_item(unsigned int list_index) const;
+INTEGER_template& numberOfPolygonPointsToFollow();
+const INTEGER_template& numberOfPolygonPointsToFollow() const;
+PolygonPointArray_template& polygonPointArray();
+const PolygonPointArray_template& polygonPointArray() const;
+int size_of() const;
+void log() const;
+void log_match(const DrawPolygon& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class e__Tranparency : public Base_Type { // enum
+friend class e__Tranparency_template;
+public:
+enum enum_type { opaque = 0, transparent = 1, UNKNOWN_VALUE = 2, UNBOUND_VALUE = 3 };
+private:
+enum_type enum_value;
+
+public:
+e__Tranparency();
+e__Tranparency(int other_value);
+e__Tranparency(enum_type other_value);
+e__Tranparency(const e__Tranparency& other_value);
+
+e__Tranparency& operator=(int other_value);
+e__Tranparency& operator=(enum_type other_value);
+e__Tranparency& operator=(const e__Tranparency& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const e__Tranparency& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const e__Tranparency& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const e__Tranparency& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const e__Tranparency& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const e__Tranparency& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const e__Tranparency& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const e__Tranparency& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class e__Tranparency_template : public Base_Template {
+union {
+e__Tranparency::enum_type single_value;
+struct {
+unsigned int n_values;
+e__Tranparency_template *list_value;
+} value_list;
+};
+
+void copy_template(const e__Tranparency_template& other_value);
+
+public:
+e__Tranparency_template();
+e__Tranparency_template(template_sel other_value);
+e__Tranparency_template(int other_value);
+e__Tranparency_template(e__Tranparency::enum_type other_value);
+e__Tranparency_template(const e__Tranparency& other_value);
+e__Tranparency_template(const OPTIONAL<e__Tranparency>& other_value);
+e__Tranparency_template(const e__Tranparency_template& other_value);
+~e__Tranparency_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+e__Tranparency_template& operator=(template_sel other_value);
+e__Tranparency_template& operator=(int other_value);
+e__Tranparency_template& operator=(e__Tranparency::enum_type other_value);
+e__Tranparency_template& operator=(const e__Tranparency& other_value);
+e__Tranparency_template& operator=(const OPTIONAL<e__Tranparency>& other_value);
+e__Tranparency_template& operator=(const e__Tranparency_template& other_value);
+
+boolean match(e__Tranparency::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const e__Tranparency& other_value, boolean legacy = FALSE) const;
+e__Tranparency::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+e__Tranparency_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const e__Tranparency& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class DrawText : public Base_Type {
+  e__Tranparency field_transparency;
+  INTEGER field_numberOfBytesToFollow;
+  OCTETSTRING field_textStringValue;
+  OPTIONAL<OCTETSTRING> field_padding1;
+  OPTIONAL<OCTETSTRING> field_padding2;
+public:
+  DrawText();
+  DrawText(const e__Tranparency& par_transparency,
+    const INTEGER& par_numberOfBytesToFollow,
+    const OCTETSTRING& par_textStringValue,
+    const OPTIONAL<OCTETSTRING>& par_padding1,
+    const OPTIONAL<OCTETSTRING>& par_padding2);
+  DrawText(const DrawText& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  DrawText& operator=(const DrawText& other_value);
+  boolean operator==(const DrawText& other_value) const;
+  inline boolean operator!=(const DrawText& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline e__Tranparency& transparency()
+    {return field_transparency;}
+  inline const e__Tranparency& transparency() const
+    {return field_transparency;}
+  inline INTEGER& numberOfBytesToFollow()
+    {return field_numberOfBytesToFollow;}
+  inline const INTEGER& numberOfBytesToFollow() const
+    {return field_numberOfBytesToFollow;}
+  inline OCTETSTRING& textStringValue()
+    {return field_textStringValue;}
+  inline const OCTETSTRING& textStringValue() const
+    {return field_textStringValue;}
+  inline OPTIONAL<OCTETSTRING>& padding1()
+    {return field_padding1;}
+  inline const OPTIONAL<OCTETSTRING>& padding1() const
+    {return field_padding1;}
+  inline OPTIONAL<OCTETSTRING>& padding2()
+    {return field_padding2;}
+  inline const OPTIONAL<OCTETSTRING>& padding2() const
+    {return field_padding2;}
+  int size_of() const;
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class DrawText_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+DrawText_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const DrawText& other_value);
+void copy_template(const DrawText_template& other_value);
+
+public:
+DrawText_template();
+DrawText_template(template_sel other_value);
+DrawText_template(const DrawText& other_value);
+DrawText_template(const OPTIONAL<DrawText>& other_value);
+DrawText_template(const DrawText_template& other_value);
+~DrawText_template();
+DrawText_template& operator=(template_sel other_value);
+DrawText_template& operator=(const DrawText& other_value);
+DrawText_template& operator=(const OPTIONAL<DrawText>& other_value);
+DrawText_template& operator=(const DrawText_template& other_value);
+boolean match(const DrawText& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+DrawText valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+DrawText_template& list_item(unsigned int list_index) const;
+e__Tranparency_template& transparency();
+const e__Tranparency_template& transparency() const;
+INTEGER_template& numberOfBytesToFollow();
+const INTEGER_template& numberOfBytesToFollow() const;
+OCTETSTRING_template& textStringValue();
+const OCTETSTRING_template& textStringValue() const;
+OCTETSTRING_template& padding1();
+const OCTETSTRING_template& padding1() const;
+OCTETSTRING_template& padding2();
+const OCTETSTRING_template& padding2() const;
+int size_of() const;
+void log() const;
+void log_match(const DrawText& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class PanViewport : public Base_Type {
+  INTEGER field_viewportXattribute;
+  INTEGER field_viewportYattribute;
+public:
+  PanViewport();
+  PanViewport(const INTEGER& par_viewportXattribute,
+    const INTEGER& par_viewportYattribute);
+  PanViewport(const PanViewport& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  PanViewport& operator=(const PanViewport& other_value);
+  boolean operator==(const PanViewport& other_value) const;
+  inline boolean operator!=(const PanViewport& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& viewportXattribute()
+    {return field_viewportXattribute;}
+  inline const INTEGER& viewportXattribute() const
+    {return field_viewportXattribute;}
+  inline INTEGER& viewportYattribute()
+    {return field_viewportYattribute;}
+  inline const INTEGER& viewportYattribute() const
+    {return field_viewportYattribute;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class PanViewport_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+PanViewport_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const PanViewport& other_value);
+void copy_template(const PanViewport_template& other_value);
+
+public:
+PanViewport_template();
+PanViewport_template(template_sel other_value);
+PanViewport_template(const PanViewport& other_value);
+PanViewport_template(const OPTIONAL<PanViewport>& other_value);
+PanViewport_template(const PanViewport_template& other_value);
+~PanViewport_template();
+PanViewport_template& operator=(template_sel other_value);
+PanViewport_template& operator=(const PanViewport& other_value);
+PanViewport_template& operator=(const OPTIONAL<PanViewport>& other_value);
+PanViewport_template& operator=(const PanViewport_template& other_value);
+boolean match(const PanViewport& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+PanViewport valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+PanViewport_template& list_item(unsigned int list_index) const;
+INTEGER_template& viewportXattribute();
+const INTEGER_template& viewportXattribute() const;
+INTEGER_template& viewportYattribute();
+const INTEGER_template& viewportYattribute() const;
+int size_of() const;
+void log() const;
+void log_match(const PanViewport& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ZoomViewport : public Base_Type {
+  FLOAT field_zoom;
+public:
+  ZoomViewport();
+  ZoomViewport(const FLOAT& par_zoom);
+  ZoomViewport(const ZoomViewport& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ZoomViewport& operator=(const ZoomViewport& other_value);
+  boolean operator==(const ZoomViewport& other_value) const;
+  inline boolean operator!=(const ZoomViewport& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline FLOAT& zoom()
+    {return field_zoom;}
+  inline const FLOAT& zoom() const
+    {return field_zoom;}
+  inline int size_of() const
+    {return 1;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ZoomViewport_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ZoomViewport_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ZoomViewport& other_value);
+void copy_template(const ZoomViewport_template& other_value);
+
+public:
+ZoomViewport_template();
+ZoomViewport_template(template_sel other_value);
+ZoomViewport_template(const ZoomViewport& other_value);
+ZoomViewport_template(const OPTIONAL<ZoomViewport>& other_value);
+ZoomViewport_template(const ZoomViewport_template& other_value);
+~ZoomViewport_template();
+ZoomViewport_template& operator=(template_sel other_value);
+ZoomViewport_template& operator=(const ZoomViewport& other_value);
+ZoomViewport_template& operator=(const OPTIONAL<ZoomViewport>& other_value);
+ZoomViewport_template& operator=(const ZoomViewport_template& other_value);
+boolean match(const ZoomViewport& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ZoomViewport valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ZoomViewport_template& list_item(unsigned int list_index) const;
+FLOAT_template& zoom();
+const FLOAT_template& zoom() const;
+int size_of() const;
+void log() const;
+void log_match(const ZoomViewport& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class PanAndZoomViewport : public Base_Type {
+  INTEGER field_viewportXattribute;
+  INTEGER field_viewportYattribute;
+  FLOAT field_zoom;
+public:
+  PanAndZoomViewport();
+  PanAndZoomViewport(const INTEGER& par_viewportXattribute,
+    const INTEGER& par_viewportYattribute,
+    const FLOAT& par_zoom);
+  PanAndZoomViewport(const PanAndZoomViewport& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  PanAndZoomViewport& operator=(const PanAndZoomViewport& other_value);
+  boolean operator==(const PanAndZoomViewport& other_value) const;
+  inline boolean operator!=(const PanAndZoomViewport& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& viewportXattribute()
+    {return field_viewportXattribute;}
+  inline const INTEGER& viewportXattribute() const
+    {return field_viewportXattribute;}
+  inline INTEGER& viewportYattribute()
+    {return field_viewportYattribute;}
+  inline const INTEGER& viewportYattribute() const
+    {return field_viewportYattribute;}
+  inline FLOAT& zoom()
+    {return field_zoom;}
+  inline const FLOAT& zoom() const
+    {return field_zoom;}
+  inline int size_of() const
+    {return 3;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class PanAndZoomViewport_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+PanAndZoomViewport_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const PanAndZoomViewport& other_value);
+void copy_template(const PanAndZoomViewport_template& other_value);
+
+public:
+PanAndZoomViewport_template();
+PanAndZoomViewport_template(template_sel other_value);
+PanAndZoomViewport_template(const PanAndZoomViewport& other_value);
+PanAndZoomViewport_template(const OPTIONAL<PanAndZoomViewport>& other_value);
+PanAndZoomViewport_template(const PanAndZoomViewport_template& other_value);
+~PanAndZoomViewport_template();
+PanAndZoomViewport_template& operator=(template_sel other_value);
+PanAndZoomViewport_template& operator=(const PanAndZoomViewport& other_value);
+PanAndZoomViewport_template& operator=(const OPTIONAL<PanAndZoomViewport>& other_value);
+PanAndZoomViewport_template& operator=(const PanAndZoomViewport_template& other_value);
+boolean match(const PanAndZoomViewport& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+PanAndZoomViewport valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+PanAndZoomViewport_template& list_item(unsigned int list_index) const;
+INTEGER_template& viewportXattribute();
+const INTEGER_template& viewportXattribute() const;
+INTEGER_template& viewportYattribute();
+const INTEGER_template& viewportYattribute() const;
+FLOAT_template& zoom();
+const FLOAT_template& zoom() const;
+int size_of() const;
+void log() const;
+void log_match(const PanAndZoomViewport& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ChangeViewportSize : public Base_Type {
+  INTEGER field_newWidth;
+  INTEGER field_newHeight;
+public:
+  ChangeViewportSize();
+  ChangeViewportSize(const INTEGER& par_newWidth,
+    const INTEGER& par_newHeight);
+  ChangeViewportSize(const ChangeViewportSize& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ChangeViewportSize& operator=(const ChangeViewportSize& other_value);
+  boolean operator==(const ChangeViewportSize& other_value) const;
+  inline boolean operator!=(const ChangeViewportSize& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& newWidth()
+    {return field_newWidth;}
+  inline const INTEGER& newWidth() const
+    {return field_newWidth;}
+  inline INTEGER& newHeight()
+    {return field_newHeight;}
+  inline const INTEGER& newHeight() const
+    {return field_newHeight;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ChangeViewportSize_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ChangeViewportSize_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ChangeViewportSize& other_value);
+void copy_template(const ChangeViewportSize_template& other_value);
+
+public:
+ChangeViewportSize_template();
+ChangeViewportSize_template(template_sel other_value);
+ChangeViewportSize_template(const ChangeViewportSize& other_value);
+ChangeViewportSize_template(const OPTIONAL<ChangeViewportSize>& other_value);
+ChangeViewportSize_template(const ChangeViewportSize_template& other_value);
+~ChangeViewportSize_template();
+ChangeViewportSize_template& operator=(template_sel other_value);
+ChangeViewportSize_template& operator=(const ChangeViewportSize& other_value);
+ChangeViewportSize_template& operator=(const OPTIONAL<ChangeViewportSize>& other_value);
+ChangeViewportSize_template& operator=(const ChangeViewportSize_template& other_value);
+boolean match(const ChangeViewportSize& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ChangeViewportSize valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ChangeViewportSize_template& list_item(unsigned int list_index) const;
+INTEGER_template& newWidth();
+const INTEGER_template& newWidth() const;
+INTEGER_template& newHeight();
+const INTEGER_template& newHeight() const;
+int size_of() const;
+void log() const;
+void log_match(const ChangeViewportSize& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class DrawVTObject : public Base_Type {
+  INTEGER field_objectIDofObjectToDraw;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  DrawVTObject();
+  DrawVTObject(const INTEGER& par_objectIDofObjectToDraw,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  DrawVTObject(const DrawVTObject& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  DrawVTObject& operator=(const DrawVTObject& other_value);
+  boolean operator==(const DrawVTObject& other_value) const;
+  inline boolean operator!=(const DrawVTObject& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& objectIDofObjectToDraw()
+    {return field_objectIDofObjectToDraw;}
+  inline const INTEGER& objectIDofObjectToDraw() const
+    {return field_objectIDofObjectToDraw;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 3;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class DrawVTObject_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+DrawVTObject_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const DrawVTObject& other_value);
+void copy_template(const DrawVTObject_template& other_value);
+
+public:
+DrawVTObject_template();
+DrawVTObject_template(template_sel other_value);
+DrawVTObject_template(const DrawVTObject& other_value);
+DrawVTObject_template(const OPTIONAL<DrawVTObject>& other_value);
+DrawVTObject_template(const DrawVTObject_template& other_value);
+~DrawVTObject_template();
+DrawVTObject_template& operator=(template_sel other_value);
+DrawVTObject_template& operator=(const DrawVTObject& other_value);
+DrawVTObject_template& operator=(const OPTIONAL<DrawVTObject>& other_value);
+DrawVTObject_template& operator=(const DrawVTObject_template& other_value);
+boolean match(const DrawVTObject& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+DrawVTObject valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+DrawVTObject_template& list_item(unsigned int list_index) const;
+INTEGER_template& objectIDofObjectToDraw();
+const INTEGER_template& objectIDofObjectToDraw() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const DrawVTObject& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class CopyCanvasToPictureGraphic : public Base_Type {
+  INTEGER field_objectIDofPictureGraphicObjectToCopyTo;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  CopyCanvasToPictureGraphic();
+  CopyCanvasToPictureGraphic(const INTEGER& par_objectIDofPictureGraphicObjectToCopyTo,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  CopyCanvasToPictureGraphic(const CopyCanvasToPictureGraphic& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  CopyCanvasToPictureGraphic& operator=(const CopyCanvasToPictureGraphic& other_value);
+  boolean operator==(const CopyCanvasToPictureGraphic& other_value) const;
+  inline boolean operator!=(const CopyCanvasToPictureGraphic& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& objectIDofPictureGraphicObjectToCopyTo()
+    {return field_objectIDofPictureGraphicObjectToCopyTo;}
+  inline const INTEGER& objectIDofPictureGraphicObjectToCopyTo() const
+    {return field_objectIDofPictureGraphicObjectToCopyTo;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 3;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class CopyCanvasToPictureGraphic_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+CopyCanvasToPictureGraphic_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const CopyCanvasToPictureGraphic& other_value);
+void copy_template(const CopyCanvasToPictureGraphic_template& other_value);
+
+public:
+CopyCanvasToPictureGraphic_template();
+CopyCanvasToPictureGraphic_template(template_sel other_value);
+CopyCanvasToPictureGraphic_template(const CopyCanvasToPictureGraphic& other_value);
+CopyCanvasToPictureGraphic_template(const OPTIONAL<CopyCanvasToPictureGraphic>& other_value);
+CopyCanvasToPictureGraphic_template(const CopyCanvasToPictureGraphic_template& other_value);
+~CopyCanvasToPictureGraphic_template();
+CopyCanvasToPictureGraphic_template& operator=(template_sel other_value);
+CopyCanvasToPictureGraphic_template& operator=(const CopyCanvasToPictureGraphic& other_value);
+CopyCanvasToPictureGraphic_template& operator=(const OPTIONAL<CopyCanvasToPictureGraphic>& other_value);
+CopyCanvasToPictureGraphic_template& operator=(const CopyCanvasToPictureGraphic_template& other_value);
+boolean match(const CopyCanvasToPictureGraphic& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+CopyCanvasToPictureGraphic valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+CopyCanvasToPictureGraphic_template& list_item(unsigned int list_index) const;
+INTEGER_template& objectIDofPictureGraphicObjectToCopyTo();
+const INTEGER_template& objectIDofPictureGraphicObjectToCopyTo() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const CopyCanvasToPictureGraphic& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class CopyViewportToPictureGraphic : public Base_Type {
+  INTEGER field_objectIDofPictureGraphicObjectToCopyTo;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  CopyViewportToPictureGraphic();
+  CopyViewportToPictureGraphic(const INTEGER& par_objectIDofPictureGraphicObjectToCopyTo,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  CopyViewportToPictureGraphic(const CopyViewportToPictureGraphic& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  CopyViewportToPictureGraphic& operator=(const CopyViewportToPictureGraphic& other_value);
+  boolean operator==(const CopyViewportToPictureGraphic& other_value) const;
+  inline boolean operator!=(const CopyViewportToPictureGraphic& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& objectIDofPictureGraphicObjectToCopyTo()
+    {return field_objectIDofPictureGraphicObjectToCopyTo;}
+  inline const INTEGER& objectIDofPictureGraphicObjectToCopyTo() const
+    {return field_objectIDofPictureGraphicObjectToCopyTo;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 3;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class CopyViewportToPictureGraphic_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+CopyViewportToPictureGraphic_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const CopyViewportToPictureGraphic& other_value);
+void copy_template(const CopyViewportToPictureGraphic_template& other_value);
+
+public:
+CopyViewportToPictureGraphic_template();
+CopyViewportToPictureGraphic_template(template_sel other_value);
+CopyViewportToPictureGraphic_template(const CopyViewportToPictureGraphic& other_value);
+CopyViewportToPictureGraphic_template(const OPTIONAL<CopyViewportToPictureGraphic>& other_value);
+CopyViewportToPictureGraphic_template(const CopyViewportToPictureGraphic_template& other_value);
+~CopyViewportToPictureGraphic_template();
+CopyViewportToPictureGraphic_template& operator=(template_sel other_value);
+CopyViewportToPictureGraphic_template& operator=(const CopyViewportToPictureGraphic& other_value);
+CopyViewportToPictureGraphic_template& operator=(const OPTIONAL<CopyViewportToPictureGraphic>& other_value);
+CopyViewportToPictureGraphic_template& operator=(const CopyViewportToPictureGraphic_template& other_value);
+boolean match(const CopyViewportToPictureGraphic& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+CopyViewportToPictureGraphic valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+CopyViewportToPictureGraphic_template& list_item(unsigned int list_index) const;
+INTEGER_template& objectIDofPictureGraphicObjectToCopyTo();
+const INTEGER_template& objectIDofPictureGraphicObjectToCopyTo() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const CopyViewportToPictureGraphic& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class GraphicsContextReq__union : public Base_Type {
+public:
+enum union_selection_type { UNBOUND_VALUE = 0, ALT_setGraphicsCursor = 1, ALT_moveGraphicsCursor = 2, ALT_setForegroundColour = 3, ALT_setBackgroundColour = 4, ALT_setLineAttributesObjectID = 5, ALT_setFileAttributesObjectID = 6, ALT_setFontAttributesObjectID = 7, ALT_eraseRectangle = 8, ALT_drawPoint = 9, ALT_drawLine = 10, ALT_drawRectangle = 11, ALT_drawClosedEllipse = 12, ALT_drawPolygon = 13, ALT_drawText = 14, ALT_panViewport = 15, ALT_zoomViewport = 16, ALT_panAndZoomViewport = 17, ALT_changeViewportSize = 18, ALT_drawVTObject = 19, ALT_copyCanvasToPictureGraphic = 20, ALT_copyViewportToPictureGraphic = 21 };
+private:
+union_selection_type union_selection;
+union {
+SetGraphicsCursor *field_setGraphicsCursor;
+MoveGraphicsCursor *field_moveGraphicsCursor;
+SetForegroundColour *field_setForegroundColour;
+SetBackgroundColour *field_setBackgroundColour;
+SetLineAttributesObjectID *field_setLineAttributesObjectID;
+SetFileAttributesObjectID *field_setFileAttributesObjectID;
+SetFontAttributesObjectID *field_setFontAttributesObjectID;
+EraseRectangle *field_eraseRectangle;
+DrawPoint *field_drawPoint;
+DrawLine *field_drawLine;
+DrawRectangle *field_drawRectangle;
+DrawClosedEllipse *field_drawClosedEllipse;
+DrawPolygon *field_drawPolygon;
+DrawText *field_drawText;
+PanViewport *field_panViewport;
+ZoomViewport *field_zoomViewport;
+PanAndZoomViewport *field_panAndZoomViewport;
+ChangeViewportSize *field_changeViewportSize;
+DrawVTObject *field_drawVTObject;
+CopyCanvasToPictureGraphic *field_copyCanvasToPictureGraphic;
+CopyViewportToPictureGraphic *field_copyViewportToPictureGraphic;
+};
+void copy_value(const GraphicsContextReq__union& other_value);
+
+public:
+GraphicsContextReq__union();
+GraphicsContextReq__union(const GraphicsContextReq__union& other_value);
+~GraphicsContextReq__union();
+GraphicsContextReq__union& operator=(const GraphicsContextReq__union& other_value);
+boolean operator==(const GraphicsContextReq__union& other_value) const;
+inline boolean operator!=(const GraphicsContextReq__union& other_value) const { return !(*this == other_value); }
+SetGraphicsCursor& setGraphicsCursor();
+const SetGraphicsCursor& setGraphicsCursor() const;
+MoveGraphicsCursor& moveGraphicsCursor();
+const MoveGraphicsCursor& moveGraphicsCursor() const;
+SetForegroundColour& setForegroundColour();
+const SetForegroundColour& setForegroundColour() const;
+SetBackgroundColour& setBackgroundColour();
+const SetBackgroundColour& setBackgroundColour() const;
+SetLineAttributesObjectID& setLineAttributesObjectID();
+const SetLineAttributesObjectID& setLineAttributesObjectID() const;
+SetFileAttributesObjectID& setFileAttributesObjectID();
+const SetFileAttributesObjectID& setFileAttributesObjectID() const;
+SetFontAttributesObjectID& setFontAttributesObjectID();
+const SetFontAttributesObjectID& setFontAttributesObjectID() const;
+EraseRectangle& eraseRectangle();
+const EraseRectangle& eraseRectangle() const;
+DrawPoint& drawPoint();
+const DrawPoint& drawPoint() const;
+DrawLine& drawLine();
+const DrawLine& drawLine() const;
+DrawRectangle& drawRectangle();
+const DrawRectangle& drawRectangle() const;
+DrawClosedEllipse& drawClosedEllipse();
+const DrawClosedEllipse& drawClosedEllipse() const;
+DrawPolygon& drawPolygon();
+const DrawPolygon& drawPolygon() const;
+DrawText& drawText();
+const DrawText& drawText() const;
+PanViewport& panViewport();
+const PanViewport& panViewport() const;
+ZoomViewport& zoomViewport();
+const ZoomViewport& zoomViewport() const;
+PanAndZoomViewport& panAndZoomViewport();
+const PanAndZoomViewport& panAndZoomViewport() const;
+ChangeViewportSize& changeViewportSize();
+const ChangeViewportSize& changeViewportSize() const;
+DrawVTObject& drawVTObject();
+const DrawVTObject& drawVTObject() const;
+CopyCanvasToPictureGraphic& copyCanvasToPictureGraphic();
+const CopyCanvasToPictureGraphic& copyCanvasToPictureGraphic() const;
+CopyViewportToPictureGraphic& copyViewportToPictureGraphic();
+const CopyViewportToPictureGraphic& copyViewportToPictureGraphic() const;
+inline union_selection_type get_selection() const { return union_selection; }
+boolean ischosen(union_selection_type checked_selection) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class GraphicsContextReq__union_template : public Base_Template {
+union {
+struct {
+GraphicsContextReq__union::union_selection_type union_selection;
+union {
+SetGraphicsCursor_template *field_setGraphicsCursor;
+MoveGraphicsCursor_template *field_moveGraphicsCursor;
+SetForegroundColour_template *field_setForegroundColour;
+SetBackgroundColour_template *field_setBackgroundColour;
+SetLineAttributesObjectID_template *field_setLineAttributesObjectID;
+SetFileAttributesObjectID_template *field_setFileAttributesObjectID;
+SetFontAttributesObjectID_template *field_setFontAttributesObjectID;
+EraseRectangle_template *field_eraseRectangle;
+DrawPoint_template *field_drawPoint;
+DrawLine_template *field_drawLine;
+DrawRectangle_template *field_drawRectangle;
+DrawClosedEllipse_template *field_drawClosedEllipse;
+DrawPolygon_template *field_drawPolygon;
+DrawText_template *field_drawText;
+PanViewport_template *field_panViewport;
+ZoomViewport_template *field_zoomViewport;
+PanAndZoomViewport_template *field_panAndZoomViewport;
+ChangeViewportSize_template *field_changeViewportSize;
+DrawVTObject_template *field_drawVTObject;
+CopyCanvasToPictureGraphic_template *field_copyCanvasToPictureGraphic;
+CopyViewportToPictureGraphic_template *field_copyViewportToPictureGraphic;
+};
+} single_value;
+struct {
+unsigned int n_values;
+GraphicsContextReq__union_template *list_value;
+} value_list;
+};
+void copy_value(const GraphicsContextReq__union& other_value);
+
+void copy_template(const GraphicsContextReq__union_template& other_value);
+
+public:
+GraphicsContextReq__union_template();
+GraphicsContextReq__union_template(template_sel other_value);
+GraphicsContextReq__union_template(const GraphicsContextReq__union& other_value);
+GraphicsContextReq__union_template(const OPTIONAL<GraphicsContextReq__union>& other_value);
+GraphicsContextReq__union_template(const GraphicsContextReq__union_template& other_value);
+~GraphicsContextReq__union_template();
+void clean_up();
+GraphicsContextReq__union_template& operator=(template_sel other_value);
+GraphicsContextReq__union_template& operator=(const GraphicsContextReq__union& other_value);
+GraphicsContextReq__union_template& operator=(const OPTIONAL<GraphicsContextReq__union>& other_value);
+GraphicsContextReq__union_template& operator=(const GraphicsContextReq__union_template& other_value);
+boolean match(const GraphicsContextReq__union& other_value, boolean legacy = FALSE) const;
+boolean is_value() const;GraphicsContextReq__union valueof() const;
+GraphicsContextReq__union_template& list_item(unsigned int list_index) const;
+void set_type(template_sel template_type, unsigned int list_length);
+SetGraphicsCursor_template& setGraphicsCursor();
+const SetGraphicsCursor_template& setGraphicsCursor() const;
+MoveGraphicsCursor_template& moveGraphicsCursor();
+const MoveGraphicsCursor_template& moveGraphicsCursor() const;
+SetForegroundColour_template& setForegroundColour();
+const SetForegroundColour_template& setForegroundColour() const;
+SetBackgroundColour_template& setBackgroundColour();
+const SetBackgroundColour_template& setBackgroundColour() const;
+SetLineAttributesObjectID_template& setLineAttributesObjectID();
+const SetLineAttributesObjectID_template& setLineAttributesObjectID() const;
+SetFileAttributesObjectID_template& setFileAttributesObjectID();
+const SetFileAttributesObjectID_template& setFileAttributesObjectID() const;
+SetFontAttributesObjectID_template& setFontAttributesObjectID();
+const SetFontAttributesObjectID_template& setFontAttributesObjectID() const;
+EraseRectangle_template& eraseRectangle();
+const EraseRectangle_template& eraseRectangle() const;
+DrawPoint_template& drawPoint();
+const DrawPoint_template& drawPoint() const;
+DrawLine_template& drawLine();
+const DrawLine_template& drawLine() const;
+DrawRectangle_template& drawRectangle();
+const DrawRectangle_template& drawRectangle() const;
+DrawClosedEllipse_template& drawClosedEllipse();
+const DrawClosedEllipse_template& drawClosedEllipse() const;
+DrawPolygon_template& drawPolygon();
+const DrawPolygon_template& drawPolygon() const;
+DrawText_template& drawText();
+const DrawText_template& drawText() const;
+PanViewport_template& panViewport();
+const PanViewport_template& panViewport() const;
+ZoomViewport_template& zoomViewport();
+const ZoomViewport_template& zoomViewport() const;
+PanAndZoomViewport_template& panAndZoomViewport();
+const PanAndZoomViewport_template& panAndZoomViewport() const;
+ChangeViewportSize_template& changeViewportSize();
+const ChangeViewportSize_template& changeViewportSize() const;
+DrawVTObject_template& drawVTObject();
+const DrawVTObject_template& drawVTObject() const;
+CopyCanvasToPictureGraphic_template& copyCanvasToPictureGraphic();
+const CopyCanvasToPictureGraphic_template& copyCanvasToPictureGraphic() const;
+CopyViewportToPictureGraphic_template& copyViewportToPictureGraphic();
+const CopyViewportToPictureGraphic_template& copyViewportToPictureGraphic() const;
+boolean ischosen(GraphicsContextReq__union::union_selection_type checked_selection) const;
+void log() const;
+void log_match(const GraphicsContextReq__union& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class GraphicsContextReq : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectIDofaGraphicsContextObject;
+  INTEGER field_subcommandID;
+  GraphicsContextReq__union field_parameters;
+public:
+  GraphicsContextReq();
+  GraphicsContextReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectIDofaGraphicsContextObject,
+    const INTEGER& par_subcommandID,
+    const GraphicsContextReq__union& par_parameters);
+  GraphicsContextReq(const GraphicsContextReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  GraphicsContextReq& operator=(const GraphicsContextReq& other_value);
+  boolean operator==(const GraphicsContextReq& other_value) const;
+  inline boolean operator!=(const GraphicsContextReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectIDofaGraphicsContextObject()
+    {return field_objectIDofaGraphicsContextObject;}
+  inline const INTEGER& objectIDofaGraphicsContextObject() const
+    {return field_objectIDofaGraphicsContextObject;}
+  inline INTEGER& subcommandID()
+    {return field_subcommandID;}
+  inline const INTEGER& subcommandID() const
+    {return field_subcommandID;}
+  inline GraphicsContextReq__union& parameters()
+    {return field_parameters;}
+  inline const GraphicsContextReq__union& parameters() const
+    {return field_parameters;}
+  inline int size_of() const
+    {return 4;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class GraphicsContextReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+GraphicsContextReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const GraphicsContextReq& other_value);
+void copy_template(const GraphicsContextReq_template& other_value);
+
+public:
+GraphicsContextReq_template();
+GraphicsContextReq_template(template_sel other_value);
+GraphicsContextReq_template(const GraphicsContextReq& other_value);
+GraphicsContextReq_template(const OPTIONAL<GraphicsContextReq>& other_value);
+GraphicsContextReq_template(const GraphicsContextReq_template& other_value);
+~GraphicsContextReq_template();
+GraphicsContextReq_template& operator=(template_sel other_value);
+GraphicsContextReq_template& operator=(const GraphicsContextReq& other_value);
+GraphicsContextReq_template& operator=(const OPTIONAL<GraphicsContextReq>& other_value);
+GraphicsContextReq_template& operator=(const GraphicsContextReq_template& other_value);
+boolean match(const GraphicsContextReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+GraphicsContextReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+GraphicsContextReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectIDofaGraphicsContextObject();
+const INTEGER_template& objectIDofaGraphicsContextObject() const;
+INTEGER_template& subcommandID();
+const INTEGER_template& subcommandID() const;
+GraphicsContextReq__union_template& parameters();
+const GraphicsContextReq__union_template& parameters() const;
+int size_of() const;
+void log() const;
+void log_match(const GraphicsContextReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class GetAttributeValueRes : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_ObjectIDorFFFFtoTndicateAnErrorResponse;
+  INTEGER field_AttributeIDofTheObject;
+  OCTETSTRING field_data1;
+  OCTETSTRING field_data2;
+  OCTETSTRING field_data3;
+  OCTETSTRING field_data4;
+public:
+  GetAttributeValueRes();
+  GetAttributeValueRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_ObjectIDorFFFFtoTndicateAnErrorResponse,
+    const INTEGER& par_AttributeIDofTheObject,
+    const OCTETSTRING& par_data1,
+    const OCTETSTRING& par_data2,
+    const OCTETSTRING& par_data3,
+    const OCTETSTRING& par_data4);
+  GetAttributeValueRes(const GetAttributeValueRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  GetAttributeValueRes& operator=(const GetAttributeValueRes& other_value);
+  boolean operator==(const GetAttributeValueRes& other_value) const;
+  inline boolean operator!=(const GetAttributeValueRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& ObjectIDorFFFFtoTndicateAnErrorResponse()
+    {return field_ObjectIDorFFFFtoTndicateAnErrorResponse;}
+  inline const INTEGER& ObjectIDorFFFFtoTndicateAnErrorResponse() const
+    {return field_ObjectIDorFFFFtoTndicateAnErrorResponse;}
+  inline INTEGER& AttributeIDofTheObject()
+    {return field_AttributeIDofTheObject;}
+  inline const INTEGER& AttributeIDofTheObject() const
+    {return field_AttributeIDofTheObject;}
+  inline OCTETSTRING& data1()
+    {return field_data1;}
+  inline const OCTETSTRING& data1() const
+    {return field_data1;}
+  inline OCTETSTRING& data2()
+    {return field_data2;}
+  inline const OCTETSTRING& data2() const
+    {return field_data2;}
+  inline OCTETSTRING& data3()
+    {return field_data3;}
+  inline const OCTETSTRING& data3() const
+    {return field_data3;}
+  inline OCTETSTRING& data4()
+    {return field_data4;}
+  inline const OCTETSTRING& data4() const
+    {return field_data4;}
+  inline int size_of() const
+    {return 7;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class GetAttributeValueRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+GetAttributeValueRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const GetAttributeValueRes& other_value);
+void copy_template(const GetAttributeValueRes_template& other_value);
+
+public:
+GetAttributeValueRes_template();
+GetAttributeValueRes_template(template_sel other_value);
+GetAttributeValueRes_template(const GetAttributeValueRes& other_value);
+GetAttributeValueRes_template(const OPTIONAL<GetAttributeValueRes>& other_value);
+GetAttributeValueRes_template(const GetAttributeValueRes_template& other_value);
+~GetAttributeValueRes_template();
+GetAttributeValueRes_template& operator=(template_sel other_value);
+GetAttributeValueRes_template& operator=(const GetAttributeValueRes& other_value);
+GetAttributeValueRes_template& operator=(const OPTIONAL<GetAttributeValueRes>& other_value);
+GetAttributeValueRes_template& operator=(const GetAttributeValueRes_template& other_value);
+boolean match(const GetAttributeValueRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+GetAttributeValueRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+GetAttributeValueRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& ObjectIDorFFFFtoTndicateAnErrorResponse();
+const INTEGER_template& ObjectIDorFFFFtoTndicateAnErrorResponse() const;
+INTEGER_template& AttributeIDofTheObject();
+const INTEGER_template& AttributeIDofTheObject() const;
+OCTETSTRING_template& data1();
+const OCTETSTRING_template& data1() const;
+OCTETSTRING_template& data2();
+const OCTETSTRING_template& data2() const;
+OCTETSTRING_template& data3();
+const OCTETSTRING_template& data3() const;
+OCTETSTRING_template& data4();
+const OCTETSTRING_template& data4() const;
+int size_of() const;
+void log() const;
+void log_match(const GetAttributeValueRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class GetAttributeValueReq : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectID;
+  INTEGER field_AttributeIDofTheObject;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  GetAttributeValueReq();
+  GetAttributeValueReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectID,
+    const INTEGER& par_AttributeIDofTheObject,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  GetAttributeValueReq(const GetAttributeValueReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  GetAttributeValueReq& operator=(const GetAttributeValueReq& other_value);
+  boolean operator==(const GetAttributeValueReq& other_value) const;
+  inline boolean operator!=(const GetAttributeValueReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectID()
+    {return field_objectID;}
+  inline const INTEGER& objectID() const
+    {return field_objectID;}
+  inline INTEGER& AttributeIDofTheObject()
+    {return field_AttributeIDofTheObject;}
+  inline const INTEGER& AttributeIDofTheObject() const
+    {return field_AttributeIDofTheObject;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 7;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class GetAttributeValueReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+GetAttributeValueReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const GetAttributeValueReq& other_value);
+void copy_template(const GetAttributeValueReq_template& other_value);
+
+public:
+GetAttributeValueReq_template();
+GetAttributeValueReq_template(template_sel other_value);
+GetAttributeValueReq_template(const GetAttributeValueReq& other_value);
+GetAttributeValueReq_template(const OPTIONAL<GetAttributeValueReq>& other_value);
+GetAttributeValueReq_template(const GetAttributeValueReq_template& other_value);
+~GetAttributeValueReq_template();
+GetAttributeValueReq_template& operator=(template_sel other_value);
+GetAttributeValueReq_template& operator=(const GetAttributeValueReq& other_value);
+GetAttributeValueReq_template& operator=(const OPTIONAL<GetAttributeValueReq>& other_value);
+GetAttributeValueReq_template& operator=(const GetAttributeValueReq_template& other_value);
+boolean match(const GetAttributeValueReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+GetAttributeValueReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+GetAttributeValueReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectID();
+const INTEGER_template& objectID() const;
+INTEGER_template& AttributeIDofTheObject();
+const INTEGER_template& AttributeIDofTheObject() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const GetAttributeValueReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SelectColourMapRes__ErrorCodes : public Base_Type {
+  BOOLEAN field_invalidObjectID;
+  BOOLEAN field_invalidColourMap;
+  BOOLEAN field_anyOtherError;
+  BOOLEAN field_reserved3;
+  BOOLEAN field_reserved4;
+  BOOLEAN field_reserved5;
+  BOOLEAN field_reserved6;
+  BOOLEAN field_reserved7;
+public:
+  SelectColourMapRes__ErrorCodes();
+  SelectColourMapRes__ErrorCodes(const BOOLEAN& par_invalidObjectID,
+    const BOOLEAN& par_invalidColourMap,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved3,
+    const BOOLEAN& par_reserved4,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7);
+  SelectColourMapRes__ErrorCodes(const SelectColourMapRes__ErrorCodes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SelectColourMapRes__ErrorCodes& operator=(const SelectColourMapRes__ErrorCodes& other_value);
+  boolean operator==(const SelectColourMapRes__ErrorCodes& other_value) const;
+  inline boolean operator!=(const SelectColourMapRes__ErrorCodes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& invalidObjectID()
+    {return field_invalidObjectID;}
+  inline const BOOLEAN& invalidObjectID() const
+    {return field_invalidObjectID;}
+  inline BOOLEAN& invalidColourMap()
+    {return field_invalidColourMap;}
+  inline const BOOLEAN& invalidColourMap() const
+    {return field_invalidColourMap;}
+  inline BOOLEAN& anyOtherError()
+    {return field_anyOtherError;}
+  inline const BOOLEAN& anyOtherError() const
+    {return field_anyOtherError;}
+  inline BOOLEAN& reserved3()
+    {return field_reserved3;}
+  inline const BOOLEAN& reserved3() const
+    {return field_reserved3;}
+  inline BOOLEAN& reserved4()
+    {return field_reserved4;}
+  inline const BOOLEAN& reserved4() const
+    {return field_reserved4;}
+  inline BOOLEAN& reserved5()
+    {return field_reserved5;}
+  inline const BOOLEAN& reserved5() const
+    {return field_reserved5;}
+  inline BOOLEAN& reserved6()
+    {return field_reserved6;}
+  inline const BOOLEAN& reserved6() const
+    {return field_reserved6;}
+  inline BOOLEAN& reserved7()
+    {return field_reserved7;}
+  inline const BOOLEAN& reserved7() const
+    {return field_reserved7;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class SelectColourMapRes__ErrorCodes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SelectColourMapRes__ErrorCodes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SelectColourMapRes__ErrorCodes& other_value);
+void copy_template(const SelectColourMapRes__ErrorCodes_template& other_value);
+
+public:
+SelectColourMapRes__ErrorCodes_template();
+SelectColourMapRes__ErrorCodes_template(template_sel other_value);
+SelectColourMapRes__ErrorCodes_template(const SelectColourMapRes__ErrorCodes& other_value);
+SelectColourMapRes__ErrorCodes_template(const OPTIONAL<SelectColourMapRes__ErrorCodes>& other_value);
+SelectColourMapRes__ErrorCodes_template(const SelectColourMapRes__ErrorCodes_template& other_value);
+~SelectColourMapRes__ErrorCodes_template();
+SelectColourMapRes__ErrorCodes_template& operator=(template_sel other_value);
+SelectColourMapRes__ErrorCodes_template& operator=(const SelectColourMapRes__ErrorCodes& other_value);
+SelectColourMapRes__ErrorCodes_template& operator=(const OPTIONAL<SelectColourMapRes__ErrorCodes>& other_value);
+SelectColourMapRes__ErrorCodes_template& operator=(const SelectColourMapRes__ErrorCodes_template& other_value);
+boolean match(const SelectColourMapRes__ErrorCodes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SelectColourMapRes__ErrorCodes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SelectColourMapRes__ErrorCodes_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& invalidObjectID();
+const BOOLEAN_template& invalidObjectID() const;
+BOOLEAN_template& invalidColourMap();
+const BOOLEAN_template& invalidColourMap() const;
+BOOLEAN_template& anyOtherError();
+const BOOLEAN_template& anyOtherError() const;
+BOOLEAN_template& reserved3();
+const BOOLEAN_template& reserved3() const;
+BOOLEAN_template& reserved4();
+const BOOLEAN_template& reserved4() const;
+BOOLEAN_template& reserved5();
+const BOOLEAN_template& reserved5() const;
+BOOLEAN_template& reserved6();
+const BOOLEAN_template& reserved6() const;
+BOOLEAN_template& reserved7();
+const BOOLEAN_template& reserved7() const;
+int size_of() const;
+void log() const;
+void log_match(const SelectColourMapRes__ErrorCodes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SelectColourMapRes : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectIDofTheColourMapObject;
+  SelectColourMapRes__ErrorCodes field_errorCodes;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  SelectColourMapRes();
+  SelectColourMapRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectIDofTheColourMapObject,
+    const SelectColourMapRes__ErrorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  SelectColourMapRes(const SelectColourMapRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SelectColourMapRes& operator=(const SelectColourMapRes& other_value);
+  boolean operator==(const SelectColourMapRes& other_value) const;
+  inline boolean operator!=(const SelectColourMapRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectIDofTheColourMapObject()
+    {return field_objectIDofTheColourMapObject;}
+  inline const INTEGER& objectIDofTheColourMapObject() const
+    {return field_objectIDofTheColourMapObject;}
+  inline SelectColourMapRes__ErrorCodes& errorCodes()
+    {return field_errorCodes;}
+  inline const SelectColourMapRes__ErrorCodes& errorCodes() const
+    {return field_errorCodes;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 7;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class SelectColourMapRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SelectColourMapRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SelectColourMapRes& other_value);
+void copy_template(const SelectColourMapRes_template& other_value);
+
+public:
+SelectColourMapRes_template();
+SelectColourMapRes_template(template_sel other_value);
+SelectColourMapRes_template(const SelectColourMapRes& other_value);
+SelectColourMapRes_template(const OPTIONAL<SelectColourMapRes>& other_value);
+SelectColourMapRes_template(const SelectColourMapRes_template& other_value);
+~SelectColourMapRes_template();
+SelectColourMapRes_template& operator=(template_sel other_value);
+SelectColourMapRes_template& operator=(const SelectColourMapRes& other_value);
+SelectColourMapRes_template& operator=(const OPTIONAL<SelectColourMapRes>& other_value);
+SelectColourMapRes_template& operator=(const SelectColourMapRes_template& other_value);
+boolean match(const SelectColourMapRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SelectColourMapRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SelectColourMapRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectIDofTheColourMapObject();
+const INTEGER_template& objectIDofTheColourMapObject() const;
+SelectColourMapRes__ErrorCodes_template& errorCodes();
+const SelectColourMapRes__ErrorCodes_template& errorCodes() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const SelectColourMapRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SelectColourMapReq : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  SelectColourMapReq();
+  SelectColourMapReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  SelectColourMapReq(const SelectColourMapReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SelectColourMapReq& operator=(const SelectColourMapReq& other_value);
+  boolean operator==(const SelectColourMapReq& other_value) const;
+  inline boolean operator!=(const SelectColourMapReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable()
+    {return field_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable;}
+  inline const INTEGER& ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable() const
+    {return field_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 7;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class SelectColourMapReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SelectColourMapReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SelectColourMapReq& other_value);
+void copy_template(const SelectColourMapReq_template& other_value);
+
+public:
+SelectColourMapReq_template();
+SelectColourMapReq_template(template_sel other_value);
+SelectColourMapReq_template(const SelectColourMapReq& other_value);
+SelectColourMapReq_template(const OPTIONAL<SelectColourMapReq>& other_value);
+SelectColourMapReq_template(const SelectColourMapReq_template& other_value);
+~SelectColourMapReq_template();
+SelectColourMapReq_template& operator=(template_sel other_value);
+SelectColourMapReq_template& operator=(const SelectColourMapReq& other_value);
+SelectColourMapReq_template& operator=(const OPTIONAL<SelectColourMapReq>& other_value);
+SelectColourMapReq_template& operator=(const SelectColourMapReq_template& other_value);
+boolean match(const SelectColourMapReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SelectColourMapReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SelectColourMapReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable();
+const INTEGER_template& ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const SelectColourMapReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class IdentifyVTRes : public Base_Type {
+  INTEGER field_vtfunction;
+  OCTETSTRING field_reserved2;
+  OCTETSTRING field_reserved3;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  IdentifyVTRes();
+  IdentifyVTRes(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_reserved2,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  IdentifyVTRes(const IdentifyVTRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  IdentifyVTRes& operator=(const IdentifyVTRes& other_value);
+  boolean operator==(const IdentifyVTRes& other_value) const;
+  inline boolean operator!=(const IdentifyVTRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline OCTETSTRING& reserved2()
+    {return field_reserved2;}
+  inline const OCTETSTRING& reserved2() const
+    {return field_reserved2;}
+  inline OCTETSTRING& reserved3()
+    {return field_reserved3;}
+  inline const OCTETSTRING& reserved3() const
+    {return field_reserved3;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class IdentifyVTRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+IdentifyVTRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const IdentifyVTRes& other_value);
+void copy_template(const IdentifyVTRes_template& other_value);
+
+public:
+IdentifyVTRes_template();
+IdentifyVTRes_template(template_sel other_value);
+IdentifyVTRes_template(const IdentifyVTRes& other_value);
+IdentifyVTRes_template(const OPTIONAL<IdentifyVTRes>& other_value);
+IdentifyVTRes_template(const IdentifyVTRes_template& other_value);
+~IdentifyVTRes_template();
+IdentifyVTRes_template& operator=(template_sel other_value);
+IdentifyVTRes_template& operator=(const IdentifyVTRes& other_value);
+IdentifyVTRes_template& operator=(const OPTIONAL<IdentifyVTRes>& other_value);
+IdentifyVTRes_template& operator=(const IdentifyVTRes_template& other_value);
+boolean match(const IdentifyVTRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+IdentifyVTRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+IdentifyVTRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+OCTETSTRING_template& reserved2();
+const OCTETSTRING_template& reserved2() const;
+OCTETSTRING_template& reserved3();
+const OCTETSTRING_template& reserved3() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const IdentifyVTRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class IdentifyVTReq : public Base_Type {
+  INTEGER field_vtfunction;
+  OCTETSTRING field_reserved2;
+  OCTETSTRING field_reserved3;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  IdentifyVTReq();
+  IdentifyVTReq(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_reserved2,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  IdentifyVTReq(const IdentifyVTReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  IdentifyVTReq& operator=(const IdentifyVTReq& other_value);
+  boolean operator==(const IdentifyVTReq& other_value) const;
+  inline boolean operator!=(const IdentifyVTReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline OCTETSTRING& reserved2()
+    {return field_reserved2;}
+  inline const OCTETSTRING& reserved2() const
+    {return field_reserved2;}
+  inline OCTETSTRING& reserved3()
+    {return field_reserved3;}
+  inline const OCTETSTRING& reserved3() const
+    {return field_reserved3;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class IdentifyVTReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+IdentifyVTReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const IdentifyVTReq& other_value);
+void copy_template(const IdentifyVTReq_template& other_value);
+
+public:
+IdentifyVTReq_template();
+IdentifyVTReq_template(template_sel other_value);
+IdentifyVTReq_template(const IdentifyVTReq& other_value);
+IdentifyVTReq_template(const OPTIONAL<IdentifyVTReq>& other_value);
+IdentifyVTReq_template(const IdentifyVTReq_template& other_value);
+~IdentifyVTReq_template();
+IdentifyVTReq_template& operator=(template_sel other_value);
+IdentifyVTReq_template& operator=(const IdentifyVTReq& other_value);
+IdentifyVTReq_template& operator=(const OPTIONAL<IdentifyVTReq>& other_value);
+IdentifyVTReq_template& operator=(const IdentifyVTReq_template& other_value);
+boolean match(const IdentifyVTReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+IdentifyVTReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+IdentifyVTReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+OCTETSTRING_template& reserved2();
+const OCTETSTRING_template& reserved2() const;
+OCTETSTRING_template& reserved3();
+const OCTETSTRING_template& reserved3() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const IdentifyVTReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ExecuteExtendedMacroRes__ErrorCodes : public Base_Type {
+  BOOLEAN field_objectIDdoesNotExist;
+  BOOLEAN field_objectIDisNotAMacroObject;
+  BOOLEAN field_anyOtherError;
+  BOOLEAN field_reserved3;
+  BOOLEAN field_reserved4;
+  BOOLEAN field_reserved5;
+  BOOLEAN field_reserved6;
+  BOOLEAN field_reserved7;
+public:
+  ExecuteExtendedMacroRes__ErrorCodes();
+  ExecuteExtendedMacroRes__ErrorCodes(const BOOLEAN& par_objectIDdoesNotExist,
+    const BOOLEAN& par_objectIDisNotAMacroObject,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved3,
+    const BOOLEAN& par_reserved4,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7);
+  ExecuteExtendedMacroRes__ErrorCodes(const ExecuteExtendedMacroRes__ErrorCodes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ExecuteExtendedMacroRes__ErrorCodes& operator=(const ExecuteExtendedMacroRes__ErrorCodes& other_value);
+  boolean operator==(const ExecuteExtendedMacroRes__ErrorCodes& other_value) const;
+  inline boolean operator!=(const ExecuteExtendedMacroRes__ErrorCodes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& objectIDdoesNotExist()
+    {return field_objectIDdoesNotExist;}
+  inline const BOOLEAN& objectIDdoesNotExist() const
+    {return field_objectIDdoesNotExist;}
+  inline BOOLEAN& objectIDisNotAMacroObject()
+    {return field_objectIDisNotAMacroObject;}
+  inline const BOOLEAN& objectIDisNotAMacroObject() const
+    {return field_objectIDisNotAMacroObject;}
+  inline BOOLEAN& anyOtherError()
+    {return field_anyOtherError;}
+  inline const BOOLEAN& anyOtherError() const
+    {return field_anyOtherError;}
+  inline BOOLEAN& reserved3()
+    {return field_reserved3;}
+  inline const BOOLEAN& reserved3() const
+    {return field_reserved3;}
+  inline BOOLEAN& reserved4()
+    {return field_reserved4;}
+  inline const BOOLEAN& reserved4() const
+    {return field_reserved4;}
+  inline BOOLEAN& reserved5()
+    {return field_reserved5;}
+  inline const BOOLEAN& reserved5() const
+    {return field_reserved5;}
+  inline BOOLEAN& reserved6()
+    {return field_reserved6;}
+  inline const BOOLEAN& reserved6() const
+    {return field_reserved6;}
+  inline BOOLEAN& reserved7()
+    {return field_reserved7;}
+  inline const BOOLEAN& reserved7() const
+    {return field_reserved7;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ExecuteExtendedMacroRes__ErrorCodes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ExecuteExtendedMacroRes__ErrorCodes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ExecuteExtendedMacroRes__ErrorCodes& other_value);
+void copy_template(const ExecuteExtendedMacroRes__ErrorCodes_template& other_value);
+
+public:
+ExecuteExtendedMacroRes__ErrorCodes_template();
+ExecuteExtendedMacroRes__ErrorCodes_template(template_sel other_value);
+ExecuteExtendedMacroRes__ErrorCodes_template(const ExecuteExtendedMacroRes__ErrorCodes& other_value);
+ExecuteExtendedMacroRes__ErrorCodes_template(const OPTIONAL<ExecuteExtendedMacroRes__ErrorCodes>& other_value);
+ExecuteExtendedMacroRes__ErrorCodes_template(const ExecuteExtendedMacroRes__ErrorCodes_template& other_value);
+~ExecuteExtendedMacroRes__ErrorCodes_template();
+ExecuteExtendedMacroRes__ErrorCodes_template& operator=(template_sel other_value);
+ExecuteExtendedMacroRes__ErrorCodes_template& operator=(const ExecuteExtendedMacroRes__ErrorCodes& other_value);
+ExecuteExtendedMacroRes__ErrorCodes_template& operator=(const OPTIONAL<ExecuteExtendedMacroRes__ErrorCodes>& other_value);
+ExecuteExtendedMacroRes__ErrorCodes_template& operator=(const ExecuteExtendedMacroRes__ErrorCodes_template& other_value);
+boolean match(const ExecuteExtendedMacroRes__ErrorCodes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ExecuteExtendedMacroRes__ErrorCodes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ExecuteExtendedMacroRes__ErrorCodes_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& objectIDdoesNotExist();
+const BOOLEAN_template& objectIDdoesNotExist() const;
+BOOLEAN_template& objectIDisNotAMacroObject();
+const BOOLEAN_template& objectIDisNotAMacroObject() const;
+BOOLEAN_template& anyOtherError();
+const BOOLEAN_template& anyOtherError() const;
+BOOLEAN_template& reserved3();
+const BOOLEAN_template& reserved3() const;
+BOOLEAN_template& reserved4();
+const BOOLEAN_template& reserved4() const;
+BOOLEAN_template& reserved5();
+const BOOLEAN_template& reserved5() const;
+BOOLEAN_template& reserved6();
+const BOOLEAN_template& reserved6() const;
+BOOLEAN_template& reserved7();
+const BOOLEAN_template& reserved7() const;
+int size_of() const;
+void log() const;
+void log_match(const ExecuteExtendedMacroRes__ErrorCodes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ExecuteExtendedMacroRes : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_ObjectIDofMacroObject;
+  ExecuteExtendedMacroRes__ErrorCodes field_errorCodes;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  ExecuteExtendedMacroRes();
+  ExecuteExtendedMacroRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_ObjectIDofMacroObject,
+    const ExecuteExtendedMacroRes__ErrorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  ExecuteExtendedMacroRes(const ExecuteExtendedMacroRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ExecuteExtendedMacroRes& operator=(const ExecuteExtendedMacroRes& other_value);
+  boolean operator==(const ExecuteExtendedMacroRes& other_value) const;
+  inline boolean operator!=(const ExecuteExtendedMacroRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& ObjectIDofMacroObject()
+    {return field_ObjectIDofMacroObject;}
+  inline const INTEGER& ObjectIDofMacroObject() const
+    {return field_ObjectIDofMacroObject;}
+  inline ExecuteExtendedMacroRes__ErrorCodes& errorCodes()
+    {return field_errorCodes;}
+  inline const ExecuteExtendedMacroRes__ErrorCodes& errorCodes() const
+    {return field_errorCodes;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 7;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ExecuteExtendedMacroRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ExecuteExtendedMacroRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ExecuteExtendedMacroRes& other_value);
+void copy_template(const ExecuteExtendedMacroRes_template& other_value);
+
+public:
+ExecuteExtendedMacroRes_template();
+ExecuteExtendedMacroRes_template(template_sel other_value);
+ExecuteExtendedMacroRes_template(const ExecuteExtendedMacroRes& other_value);
+ExecuteExtendedMacroRes_template(const OPTIONAL<ExecuteExtendedMacroRes>& other_value);
+ExecuteExtendedMacroRes_template(const ExecuteExtendedMacroRes_template& other_value);
+~ExecuteExtendedMacroRes_template();
+ExecuteExtendedMacroRes_template& operator=(template_sel other_value);
+ExecuteExtendedMacroRes_template& operator=(const ExecuteExtendedMacroRes& other_value);
+ExecuteExtendedMacroRes_template& operator=(const OPTIONAL<ExecuteExtendedMacroRes>& other_value);
+ExecuteExtendedMacroRes_template& operator=(const ExecuteExtendedMacroRes_template& other_value);
+boolean match(const ExecuteExtendedMacroRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ExecuteExtendedMacroRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ExecuteExtendedMacroRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& ObjectIDofMacroObject();
+const INTEGER_template& ObjectIDofMacroObject() const;
+ExecuteExtendedMacroRes__ErrorCodes_template& errorCodes();
+const ExecuteExtendedMacroRes__ErrorCodes_template& errorCodes() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const ExecuteExtendedMacroRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ExecuteExtendedMacroReq : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_ObjectIDofMacroObject;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  ExecuteExtendedMacroReq();
+  ExecuteExtendedMacroReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_ObjectIDofMacroObject,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  ExecuteExtendedMacroReq(const ExecuteExtendedMacroReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ExecuteExtendedMacroReq& operator=(const ExecuteExtendedMacroReq& other_value);
+  boolean operator==(const ExecuteExtendedMacroReq& other_value) const;
+  inline boolean operator!=(const ExecuteExtendedMacroReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& ObjectIDofMacroObject()
+    {return field_ObjectIDofMacroObject;}
+  inline const INTEGER& ObjectIDofMacroObject() const
+    {return field_ObjectIDofMacroObject;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 7;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ExecuteExtendedMacroReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ExecuteExtendedMacroReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ExecuteExtendedMacroReq& other_value);
+void copy_template(const ExecuteExtendedMacroReq_template& other_value);
+
+public:
+ExecuteExtendedMacroReq_template();
+ExecuteExtendedMacroReq_template(template_sel other_value);
+ExecuteExtendedMacroReq_template(const ExecuteExtendedMacroReq& other_value);
+ExecuteExtendedMacroReq_template(const OPTIONAL<ExecuteExtendedMacroReq>& other_value);
+ExecuteExtendedMacroReq_template(const ExecuteExtendedMacroReq_template& other_value);
+~ExecuteExtendedMacroReq_template();
+ExecuteExtendedMacroReq_template& operator=(template_sel other_value);
+ExecuteExtendedMacroReq_template& operator=(const ExecuteExtendedMacroReq& other_value);
+ExecuteExtendedMacroReq_template& operator=(const OPTIONAL<ExecuteExtendedMacroReq>& other_value);
+ExecuteExtendedMacroReq_template& operator=(const ExecuteExtendedMacroReq_template& other_value);
+boolean match(const ExecuteExtendedMacroReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ExecuteExtendedMacroReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ExecuteExtendedMacroReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& ObjectIDofMacroObject();
+const INTEGER_template& ObjectIDofMacroObject() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const ExecuteExtendedMacroReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class LockUnlockMaskRes__ErrorCodes : public Base_Type {
+  BOOLEAN field_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask;
+  BOOLEAN field_lockCommandIgnoredAlreadyLocked;
+  BOOLEAN field_unlockCommandIgnoredNotLocked;
+  BOOLEAN field_lockCommandIgnoredAnAlarmMaskIsActive;
+  BOOLEAN field_unsolicitedUnlockTimeoutOccurred;
+  BOOLEAN field_unsolicitedUnlockThisMaskIsHidden;
+  BOOLEAN field_unsolicitedUnlockOperatorInducedOrAnyOtherError;
+  BOOLEAN field_anyOtherError;
+public:
+  LockUnlockMaskRes__ErrorCodes();
+  LockUnlockMaskRes__ErrorCodes(const BOOLEAN& par_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask,
+    const BOOLEAN& par_lockCommandIgnoredAlreadyLocked,
+    const BOOLEAN& par_unlockCommandIgnoredNotLocked,
+    const BOOLEAN& par_lockCommandIgnoredAnAlarmMaskIsActive,
+    const BOOLEAN& par_unsolicitedUnlockTimeoutOccurred,
+    const BOOLEAN& par_unsolicitedUnlockThisMaskIsHidden,
+    const BOOLEAN& par_unsolicitedUnlockOperatorInducedOrAnyOtherError,
+    const BOOLEAN& par_anyOtherError);
+  LockUnlockMaskRes__ErrorCodes(const LockUnlockMaskRes__ErrorCodes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  LockUnlockMaskRes__ErrorCodes& operator=(const LockUnlockMaskRes__ErrorCodes& other_value);
+  boolean operator==(const LockUnlockMaskRes__ErrorCodes& other_value) const;
+  inline boolean operator!=(const LockUnlockMaskRes__ErrorCodes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask()
+    {return field_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask;}
+  inline const BOOLEAN& commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask() const
+    {return field_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask;}
+  inline BOOLEAN& lockCommandIgnoredAlreadyLocked()
+    {return field_lockCommandIgnoredAlreadyLocked;}
+  inline const BOOLEAN& lockCommandIgnoredAlreadyLocked() const
+    {return field_lockCommandIgnoredAlreadyLocked;}
+  inline BOOLEAN& unlockCommandIgnoredNotLocked()
+    {return field_unlockCommandIgnoredNotLocked;}
+  inline const BOOLEAN& unlockCommandIgnoredNotLocked() const
+    {return field_unlockCommandIgnoredNotLocked;}
+  inline BOOLEAN& lockCommandIgnoredAnAlarmMaskIsActive()
+    {return field_lockCommandIgnoredAnAlarmMaskIsActive;}
+  inline const BOOLEAN& lockCommandIgnoredAnAlarmMaskIsActive() const
+    {return field_lockCommandIgnoredAnAlarmMaskIsActive;}
+  inline BOOLEAN& unsolicitedUnlockTimeoutOccurred()
+    {return field_unsolicitedUnlockTimeoutOccurred;}
+  inline const BOOLEAN& unsolicitedUnlockTimeoutOccurred() const
+    {return field_unsolicitedUnlockTimeoutOccurred;}
+  inline BOOLEAN& unsolicitedUnlockThisMaskIsHidden()
+    {return field_unsolicitedUnlockThisMaskIsHidden;}
+  inline const BOOLEAN& unsolicitedUnlockThisMaskIsHidden() const
+    {return field_unsolicitedUnlockThisMaskIsHidden;}
+  inline BOOLEAN& unsolicitedUnlockOperatorInducedOrAnyOtherError()
+    {return field_unsolicitedUnlockOperatorInducedOrAnyOtherError;}
+  inline const BOOLEAN& unsolicitedUnlockOperatorInducedOrAnyOtherError() const
+    {return field_unsolicitedUnlockOperatorInducedOrAnyOtherError;}
+  inline BOOLEAN& anyOtherError()
+    {return field_anyOtherError;}
+  inline const BOOLEAN& anyOtherError() const
+    {return field_anyOtherError;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class LockUnlockMaskRes__ErrorCodes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+LockUnlockMaskRes__ErrorCodes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const LockUnlockMaskRes__ErrorCodes& other_value);
+void copy_template(const LockUnlockMaskRes__ErrorCodes_template& other_value);
+
+public:
+LockUnlockMaskRes__ErrorCodes_template();
+LockUnlockMaskRes__ErrorCodes_template(template_sel other_value);
+LockUnlockMaskRes__ErrorCodes_template(const LockUnlockMaskRes__ErrorCodes& other_value);
+LockUnlockMaskRes__ErrorCodes_template(const OPTIONAL<LockUnlockMaskRes__ErrorCodes>& other_value);
+LockUnlockMaskRes__ErrorCodes_template(const LockUnlockMaskRes__ErrorCodes_template& other_value);
+~LockUnlockMaskRes__ErrorCodes_template();
+LockUnlockMaskRes__ErrorCodes_template& operator=(template_sel other_value);
+LockUnlockMaskRes__ErrorCodes_template& operator=(const LockUnlockMaskRes__ErrorCodes& other_value);
+LockUnlockMaskRes__ErrorCodes_template& operator=(const OPTIONAL<LockUnlockMaskRes__ErrorCodes>& other_value);
+LockUnlockMaskRes__ErrorCodes_template& operator=(const LockUnlockMaskRes__ErrorCodes_template& other_value);
+boolean match(const LockUnlockMaskRes__ErrorCodes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+LockUnlockMaskRes__ErrorCodes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+LockUnlockMaskRes__ErrorCodes_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask();
+const BOOLEAN_template& commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask() const;
+BOOLEAN_template& lockCommandIgnoredAlreadyLocked();
+const BOOLEAN_template& lockCommandIgnoredAlreadyLocked() const;
+BOOLEAN_template& unlockCommandIgnoredNotLocked();
+const BOOLEAN_template& unlockCommandIgnoredNotLocked() const;
+BOOLEAN_template& lockCommandIgnoredAnAlarmMaskIsActive();
+const BOOLEAN_template& lockCommandIgnoredAnAlarmMaskIsActive() const;
+BOOLEAN_template& unsolicitedUnlockTimeoutOccurred();
+const BOOLEAN_template& unsolicitedUnlockTimeoutOccurred() const;
+BOOLEAN_template& unsolicitedUnlockThisMaskIsHidden();
+const BOOLEAN_template& unsolicitedUnlockThisMaskIsHidden() const;
+BOOLEAN_template& unsolicitedUnlockOperatorInducedOrAnyOtherError();
+const BOOLEAN_template& unsolicitedUnlockOperatorInducedOrAnyOtherError() const;
+BOOLEAN_template& anyOtherError();
+const BOOLEAN_template& anyOtherError() const;
+int size_of() const;
+void log() const;
+void log_match(const LockUnlockMaskRes__ErrorCodes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class e__LockUnlockMaskReqCommand : public Base_Type { // enum
+friend class e__LockUnlockMaskReqCommand_template;
+public:
+enum enum_type { unlockDataMaskOrUserLayoutDataMask = 0, lockDataMaskOrUserLayoutDataMask = 1, UNKNOWN_VALUE = 2, UNBOUND_VALUE = 3 };
+private:
+enum_type enum_value;
+
+public:
+e__LockUnlockMaskReqCommand();
+e__LockUnlockMaskReqCommand(int other_value);
+e__LockUnlockMaskReqCommand(enum_type other_value);
+e__LockUnlockMaskReqCommand(const e__LockUnlockMaskReqCommand& other_value);
+
+e__LockUnlockMaskReqCommand& operator=(int other_value);
+e__LockUnlockMaskReqCommand& operator=(enum_type other_value);
+e__LockUnlockMaskReqCommand& operator=(const e__LockUnlockMaskReqCommand& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const e__LockUnlockMaskReqCommand& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const e__LockUnlockMaskReqCommand& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const e__LockUnlockMaskReqCommand& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const e__LockUnlockMaskReqCommand& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const e__LockUnlockMaskReqCommand& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const e__LockUnlockMaskReqCommand& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const e__LockUnlockMaskReqCommand& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class e__LockUnlockMaskReqCommand_template : public Base_Template {
+union {
+e__LockUnlockMaskReqCommand::enum_type single_value;
+struct {
+unsigned int n_values;
+e__LockUnlockMaskReqCommand_template *list_value;
+} value_list;
+};
+
+void copy_template(const e__LockUnlockMaskReqCommand_template& other_value);
+
+public:
+e__LockUnlockMaskReqCommand_template();
+e__LockUnlockMaskReqCommand_template(template_sel other_value);
+e__LockUnlockMaskReqCommand_template(int other_value);
+e__LockUnlockMaskReqCommand_template(e__LockUnlockMaskReqCommand::enum_type other_value);
+e__LockUnlockMaskReqCommand_template(const e__LockUnlockMaskReqCommand& other_value);
+e__LockUnlockMaskReqCommand_template(const OPTIONAL<e__LockUnlockMaskReqCommand>& other_value);
+e__LockUnlockMaskReqCommand_template(const e__LockUnlockMaskReqCommand_template& other_value);
+~e__LockUnlockMaskReqCommand_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+e__LockUnlockMaskReqCommand_template& operator=(template_sel other_value);
+e__LockUnlockMaskReqCommand_template& operator=(int other_value);
+e__LockUnlockMaskReqCommand_template& operator=(e__LockUnlockMaskReqCommand::enum_type other_value);
+e__LockUnlockMaskReqCommand_template& operator=(const e__LockUnlockMaskReqCommand& other_value);
+e__LockUnlockMaskReqCommand_template& operator=(const OPTIONAL<e__LockUnlockMaskReqCommand>& other_value);
+e__LockUnlockMaskReqCommand_template& operator=(const e__LockUnlockMaskReqCommand_template& other_value);
+
+boolean match(e__LockUnlockMaskReqCommand::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const e__LockUnlockMaskReqCommand& other_value, boolean legacy = FALSE) const;
+e__LockUnlockMaskReqCommand::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+e__LockUnlockMaskReqCommand_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const e__LockUnlockMaskReqCommand& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class LockUnlockMaskRes : public Base_Type {
+  INTEGER field_vtfunction;
+  e__LockUnlockMaskReqCommand field_command;
+  LockUnlockMaskRes__ErrorCodes field_errorCodes;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  LockUnlockMaskRes();
+  LockUnlockMaskRes(const INTEGER& par_vtfunction,
+    const e__LockUnlockMaskReqCommand& par_command,
+    const LockUnlockMaskRes__ErrorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  LockUnlockMaskRes(const LockUnlockMaskRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  LockUnlockMaskRes& operator=(const LockUnlockMaskRes& other_value);
+  boolean operator==(const LockUnlockMaskRes& other_value) const;
+  inline boolean operator!=(const LockUnlockMaskRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline e__LockUnlockMaskReqCommand& command()
+    {return field_command;}
+  inline const e__LockUnlockMaskReqCommand& command() const
+    {return field_command;}
+  inline LockUnlockMaskRes__ErrorCodes& errorCodes()
+    {return field_errorCodes;}
+  inline const LockUnlockMaskRes__ErrorCodes& errorCodes() const
+    {return field_errorCodes;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class LockUnlockMaskRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+LockUnlockMaskRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const LockUnlockMaskRes& other_value);
+void copy_template(const LockUnlockMaskRes_template& other_value);
+
+public:
+LockUnlockMaskRes_template();
+LockUnlockMaskRes_template(template_sel other_value);
+LockUnlockMaskRes_template(const LockUnlockMaskRes& other_value);
+LockUnlockMaskRes_template(const OPTIONAL<LockUnlockMaskRes>& other_value);
+LockUnlockMaskRes_template(const LockUnlockMaskRes_template& other_value);
+~LockUnlockMaskRes_template();
+LockUnlockMaskRes_template& operator=(template_sel other_value);
+LockUnlockMaskRes_template& operator=(const LockUnlockMaskRes& other_value);
+LockUnlockMaskRes_template& operator=(const OPTIONAL<LockUnlockMaskRes>& other_value);
+LockUnlockMaskRes_template& operator=(const LockUnlockMaskRes_template& other_value);
+boolean match(const LockUnlockMaskRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+LockUnlockMaskRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+LockUnlockMaskRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+e__LockUnlockMaskReqCommand_template& command();
+const e__LockUnlockMaskReqCommand_template& command() const;
+LockUnlockMaskRes__ErrorCodes_template& errorCodes();
+const LockUnlockMaskRes__ErrorCodes_template& errorCodes() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const LockUnlockMaskRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class LockUnlockMaskReq : public Base_Type {
+  INTEGER field_vtfunction;
+  e__LockUnlockMaskReqCommand field_command;
+  INTEGER field_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock;
+  INTEGER field_lockTimeout;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  LockUnlockMaskReq();
+  LockUnlockMaskReq(const INTEGER& par_vtfunction,
+    const e__LockUnlockMaskReqCommand& par_command,
+    const INTEGER& par_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock,
+    const INTEGER& par_lockTimeout,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  LockUnlockMaskReq(const LockUnlockMaskReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  LockUnlockMaskReq& operator=(const LockUnlockMaskReq& other_value);
+  boolean operator==(const LockUnlockMaskReq& other_value) const;
+  inline boolean operator!=(const LockUnlockMaskReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline e__LockUnlockMaskReqCommand& command()
+    {return field_command;}
+  inline const e__LockUnlockMaskReqCommand& command() const
+    {return field_command;}
+  inline INTEGER& ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock()
+    {return field_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock;}
+  inline const INTEGER& ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock() const
+    {return field_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock;}
+  inline INTEGER& lockTimeout()
+    {return field_lockTimeout;}
+  inline const INTEGER& lockTimeout() const
+    {return field_lockTimeout;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 6;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class LockUnlockMaskReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+LockUnlockMaskReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const LockUnlockMaskReq& other_value);
+void copy_template(const LockUnlockMaskReq_template& other_value);
+
+public:
+LockUnlockMaskReq_template();
+LockUnlockMaskReq_template(template_sel other_value);
+LockUnlockMaskReq_template(const LockUnlockMaskReq& other_value);
+LockUnlockMaskReq_template(const OPTIONAL<LockUnlockMaskReq>& other_value);
+LockUnlockMaskReq_template(const LockUnlockMaskReq_template& other_value);
+~LockUnlockMaskReq_template();
+LockUnlockMaskReq_template& operator=(template_sel other_value);
+LockUnlockMaskReq_template& operator=(const LockUnlockMaskReq& other_value);
+LockUnlockMaskReq_template& operator=(const OPTIONAL<LockUnlockMaskReq>& other_value);
+LockUnlockMaskReq_template& operator=(const LockUnlockMaskReq_template& other_value);
+boolean match(const LockUnlockMaskReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+LockUnlockMaskReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+LockUnlockMaskReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+e__LockUnlockMaskReqCommand_template& command();
+const e__LockUnlockMaskReqCommand_template& command() const;
+INTEGER_template& ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock();
+const INTEGER_template& ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock() const;
+INTEGER_template& lockTimeout();
+const INTEGER_template& lockTimeout() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const LockUnlockMaskReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ExecuteMacroReq__ErrorCodes : public Base_Type {
+  BOOLEAN field_objectIDdoesNotExist;
+  BOOLEAN field_objectIDisNotAMacroObject;
+  BOOLEAN field_anyOtherError;
+  BOOLEAN field_reserved3;
+  BOOLEAN field_reserved4;
+  BOOLEAN field_reserved5;
+  BOOLEAN field_reserved6;
+  BOOLEAN field_reserved7;
+public:
+  ExecuteMacroReq__ErrorCodes();
+  ExecuteMacroReq__ErrorCodes(const BOOLEAN& par_objectIDdoesNotExist,
+    const BOOLEAN& par_objectIDisNotAMacroObject,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved3,
+    const BOOLEAN& par_reserved4,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7);
+  ExecuteMacroReq__ErrorCodes(const ExecuteMacroReq__ErrorCodes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ExecuteMacroReq__ErrorCodes& operator=(const ExecuteMacroReq__ErrorCodes& other_value);
+  boolean operator==(const ExecuteMacroReq__ErrorCodes& other_value) const;
+  inline boolean operator!=(const ExecuteMacroReq__ErrorCodes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& objectIDdoesNotExist()
+    {return field_objectIDdoesNotExist;}
+  inline const BOOLEAN& objectIDdoesNotExist() const
+    {return field_objectIDdoesNotExist;}
+  inline BOOLEAN& objectIDisNotAMacroObject()
+    {return field_objectIDisNotAMacroObject;}
+  inline const BOOLEAN& objectIDisNotAMacroObject() const
+    {return field_objectIDisNotAMacroObject;}
+  inline BOOLEAN& anyOtherError()
+    {return field_anyOtherError;}
+  inline const BOOLEAN& anyOtherError() const
+    {return field_anyOtherError;}
+  inline BOOLEAN& reserved3()
+    {return field_reserved3;}
+  inline const BOOLEAN& reserved3() const
+    {return field_reserved3;}
+  inline BOOLEAN& reserved4()
+    {return field_reserved4;}
+  inline const BOOLEAN& reserved4() const
+    {return field_reserved4;}
+  inline BOOLEAN& reserved5()
+    {return field_reserved5;}
+  inline const BOOLEAN& reserved5() const
+    {return field_reserved5;}
+  inline BOOLEAN& reserved6()
+    {return field_reserved6;}
+  inline const BOOLEAN& reserved6() const
+    {return field_reserved6;}
+  inline BOOLEAN& reserved7()
+    {return field_reserved7;}
+  inline const BOOLEAN& reserved7() const
+    {return field_reserved7;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ExecuteMacroReq__ErrorCodes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ExecuteMacroReq__ErrorCodes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ExecuteMacroReq__ErrorCodes& other_value);
+void copy_template(const ExecuteMacroReq__ErrorCodes_template& other_value);
+
+public:
+ExecuteMacroReq__ErrorCodes_template();
+ExecuteMacroReq__ErrorCodes_template(template_sel other_value);
+ExecuteMacroReq__ErrorCodes_template(const ExecuteMacroReq__ErrorCodes& other_value);
+ExecuteMacroReq__ErrorCodes_template(const OPTIONAL<ExecuteMacroReq__ErrorCodes>& other_value);
+ExecuteMacroReq__ErrorCodes_template(const ExecuteMacroReq__ErrorCodes_template& other_value);
+~ExecuteMacroReq__ErrorCodes_template();
+ExecuteMacroReq__ErrorCodes_template& operator=(template_sel other_value);
+ExecuteMacroReq__ErrorCodes_template& operator=(const ExecuteMacroReq__ErrorCodes& other_value);
+ExecuteMacroReq__ErrorCodes_template& operator=(const OPTIONAL<ExecuteMacroReq__ErrorCodes>& other_value);
+ExecuteMacroReq__ErrorCodes_template& operator=(const ExecuteMacroReq__ErrorCodes_template& other_value);
+boolean match(const ExecuteMacroReq__ErrorCodes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ExecuteMacroReq__ErrorCodes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ExecuteMacroReq__ErrorCodes_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& objectIDdoesNotExist();
+const BOOLEAN_template& objectIDdoesNotExist() const;
+BOOLEAN_template& objectIDisNotAMacroObject();
+const BOOLEAN_template& objectIDisNotAMacroObject() const;
+BOOLEAN_template& anyOtherError();
+const BOOLEAN_template& anyOtherError() const;
+BOOLEAN_template& reserved3();
+const BOOLEAN_template& reserved3() const;
+BOOLEAN_template& reserved4();
+const BOOLEAN_template& reserved4() const;
+BOOLEAN_template& reserved5();
+const BOOLEAN_template& reserved5() const;
+BOOLEAN_template& reserved6();
+const BOOLEAN_template& reserved6() const;
+BOOLEAN_template& reserved7();
+const BOOLEAN_template& reserved7() const;
+int size_of() const;
+void log() const;
+void log_match(const ExecuteMacroReq__ErrorCodes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ExecuteMacroRes : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectIDofMacroObject;
+  ExecuteMacroReq__ErrorCodes field_errorCodes;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  ExecuteMacroRes();
+  ExecuteMacroRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectIDofMacroObject,
+    const ExecuteMacroReq__ErrorCodes& par_errorCodes,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  ExecuteMacroRes(const ExecuteMacroRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ExecuteMacroRes& operator=(const ExecuteMacroRes& other_value);
+  boolean operator==(const ExecuteMacroRes& other_value) const;
+  inline boolean operator!=(const ExecuteMacroRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectIDofMacroObject()
+    {return field_objectIDofMacroObject;}
+  inline const INTEGER& objectIDofMacroObject() const
+    {return field_objectIDofMacroObject;}
+  inline ExecuteMacroReq__ErrorCodes& errorCodes()
+    {return field_errorCodes;}
+  inline const ExecuteMacroReq__ErrorCodes& errorCodes() const
+    {return field_errorCodes;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ExecuteMacroRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ExecuteMacroRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ExecuteMacroRes& other_value);
+void copy_template(const ExecuteMacroRes_template& other_value);
+
+public:
+ExecuteMacroRes_template();
+ExecuteMacroRes_template(template_sel other_value);
+ExecuteMacroRes_template(const ExecuteMacroRes& other_value);
+ExecuteMacroRes_template(const OPTIONAL<ExecuteMacroRes>& other_value);
+ExecuteMacroRes_template(const ExecuteMacroRes_template& other_value);
+~ExecuteMacroRes_template();
+ExecuteMacroRes_template& operator=(template_sel other_value);
+ExecuteMacroRes_template& operator=(const ExecuteMacroRes& other_value);
+ExecuteMacroRes_template& operator=(const OPTIONAL<ExecuteMacroRes>& other_value);
+ExecuteMacroRes_template& operator=(const ExecuteMacroRes_template& other_value);
+boolean match(const ExecuteMacroRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ExecuteMacroRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ExecuteMacroRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectIDofMacroObject();
+const INTEGER_template& objectIDofMacroObject() const;
+ExecuteMacroReq__ErrorCodes_template& errorCodes();
+const ExecuteMacroReq__ErrorCodes_template& errorCodes() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const ExecuteMacroRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ExecuteMacroReq : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_objectIDofMacroObject;
+  OCTETSTRING field_reserved3;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  ExecuteMacroReq();
+  ExecuteMacroReq(const INTEGER& par_vtfunction,
+    const INTEGER& par_objectIDofMacroObject,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  ExecuteMacroReq(const ExecuteMacroReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ExecuteMacroReq& operator=(const ExecuteMacroReq& other_value);
+  boolean operator==(const ExecuteMacroReq& other_value) const;
+  inline boolean operator!=(const ExecuteMacroReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& objectIDofMacroObject()
+    {return field_objectIDofMacroObject;}
+  inline const INTEGER& objectIDofMacroObject() const
+    {return field_objectIDofMacroObject;}
+  inline OCTETSTRING& reserved3()
+    {return field_reserved3;}
+  inline const OCTETSTRING& reserved3() const
+    {return field_reserved3;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ExecuteMacroReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ExecuteMacroReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ExecuteMacroReq& other_value);
+void copy_template(const ExecuteMacroReq_template& other_value);
+
+public:
+ExecuteMacroReq_template();
+ExecuteMacroReq_template(template_sel other_value);
+ExecuteMacroReq_template(const ExecuteMacroReq& other_value);
+ExecuteMacroReq_template(const OPTIONAL<ExecuteMacroReq>& other_value);
+ExecuteMacroReq_template(const ExecuteMacroReq_template& other_value);
+~ExecuteMacroReq_template();
+ExecuteMacroReq_template& operator=(template_sel other_value);
+ExecuteMacroReq_template& operator=(const ExecuteMacroReq& other_value);
+ExecuteMacroReq_template& operator=(const OPTIONAL<ExecuteMacroReq>& other_value);
+ExecuteMacroReq_template& operator=(const ExecuteMacroReq_template& other_value);
+boolean match(const ExecuteMacroReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ExecuteMacroReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ExecuteMacroReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& objectIDofMacroObject();
+const INTEGER_template& objectIDofMacroObject() const;
+OCTETSTRING_template& reserved3();
+const OCTETSTRING_template& reserved3() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const ExecuteMacroReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class GetMemoryReq : public Base_Type {
+  INTEGER field_vtfunction;
+  OCTETSTRING field_reserved2;
+  INTEGER field_memoryRequired;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  GetMemoryReq();
+  GetMemoryReq(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_reserved2,
+    const INTEGER& par_memoryRequired,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  GetMemoryReq(const GetMemoryReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  GetMemoryReq& operator=(const GetMemoryReq& other_value);
+  boolean operator==(const GetMemoryReq& other_value) const;
+  inline boolean operator!=(const GetMemoryReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline OCTETSTRING& reserved2()
+    {return field_reserved2;}
+  inline const OCTETSTRING& reserved2() const
+    {return field_reserved2;}
+  inline INTEGER& memoryRequired()
+    {return field_memoryRequired;}
+  inline const INTEGER& memoryRequired() const
+    {return field_memoryRequired;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 5;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class GetMemoryReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+GetMemoryReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const GetMemoryReq& other_value);
+void copy_template(const GetMemoryReq_template& other_value);
+
+public:
+GetMemoryReq_template();
+GetMemoryReq_template(template_sel other_value);
+GetMemoryReq_template(const GetMemoryReq& other_value);
+GetMemoryReq_template(const OPTIONAL<GetMemoryReq>& other_value);
+GetMemoryReq_template(const GetMemoryReq_template& other_value);
+~GetMemoryReq_template();
+GetMemoryReq_template& operator=(template_sel other_value);
+GetMemoryReq_template& operator=(const GetMemoryReq& other_value);
+GetMemoryReq_template& operator=(const OPTIONAL<GetMemoryReq>& other_value);
+GetMemoryReq_template& operator=(const GetMemoryReq_template& other_value);
+boolean match(const GetMemoryReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+GetMemoryReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+GetMemoryReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+OCTETSTRING_template& reserved2();
+const OCTETSTRING_template& reserved2() const;
+INTEGER_template& memoryRequired();
+const INTEGER_template& memoryRequired() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const GetMemoryReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class e__GetMemoryResVersionNumber : public Base_Type { // enum
+friend class e__GetMemoryResVersionNumber_template;
+public:
+enum enum_type { compliantWithHannoverAgritechnica__2001__limitedfeatureSet = 0, compliantWithFDISVersionISO11783__6__2002__E__Final__Draft = 1, compliantWithISVersionISO11783__6__2004__E__First__Edition = 2, compliantWithISVersionISO11783__6__2010__E__Second__Edition__version__3 = 3, compliantWithISVersionISO11783__6__2010__E__Second__Edition__version__4 = 4, compliantWithISVersionISO11783__6__2014__E__Third__Edition = 5, UNKNOWN_VALUE = 6, UNBOUND_VALUE = 7 };
+private:
+enum_type enum_value;
+
+public:
+e__GetMemoryResVersionNumber();
+e__GetMemoryResVersionNumber(int other_value);
+e__GetMemoryResVersionNumber(enum_type other_value);
+e__GetMemoryResVersionNumber(const e__GetMemoryResVersionNumber& other_value);
+
+e__GetMemoryResVersionNumber& operator=(int other_value);
+e__GetMemoryResVersionNumber& operator=(enum_type other_value);
+e__GetMemoryResVersionNumber& operator=(const e__GetMemoryResVersionNumber& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const e__GetMemoryResVersionNumber& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const e__GetMemoryResVersionNumber& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const e__GetMemoryResVersionNumber& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const e__GetMemoryResVersionNumber& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const e__GetMemoryResVersionNumber& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const e__GetMemoryResVersionNumber& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const e__GetMemoryResVersionNumber& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class e__GetMemoryResVersionNumber_template : public Base_Template {
+union {
+e__GetMemoryResVersionNumber::enum_type single_value;
+struct {
+unsigned int n_values;
+e__GetMemoryResVersionNumber_template *list_value;
+} value_list;
+};
+
+void copy_template(const e__GetMemoryResVersionNumber_template& other_value);
+
+public:
+e__GetMemoryResVersionNumber_template();
+e__GetMemoryResVersionNumber_template(template_sel other_value);
+e__GetMemoryResVersionNumber_template(int other_value);
+e__GetMemoryResVersionNumber_template(e__GetMemoryResVersionNumber::enum_type other_value);
+e__GetMemoryResVersionNumber_template(const e__GetMemoryResVersionNumber& other_value);
+e__GetMemoryResVersionNumber_template(const OPTIONAL<e__GetMemoryResVersionNumber>& other_value);
+e__GetMemoryResVersionNumber_template(const e__GetMemoryResVersionNumber_template& other_value);
+~e__GetMemoryResVersionNumber_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+e__GetMemoryResVersionNumber_template& operator=(template_sel other_value);
+e__GetMemoryResVersionNumber_template& operator=(int other_value);
+e__GetMemoryResVersionNumber_template& operator=(e__GetMemoryResVersionNumber::enum_type other_value);
+e__GetMemoryResVersionNumber_template& operator=(const e__GetMemoryResVersionNumber& other_value);
+e__GetMemoryResVersionNumber_template& operator=(const OPTIONAL<e__GetMemoryResVersionNumber>& other_value);
+e__GetMemoryResVersionNumber_template& operator=(const e__GetMemoryResVersionNumber_template& other_value);
+
+boolean match(e__GetMemoryResVersionNumber::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const e__GetMemoryResVersionNumber& other_value, boolean legacy = FALSE) const;
+e__GetMemoryResVersionNumber::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+e__GetMemoryResVersionNumber_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const e__GetMemoryResVersionNumber& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class e__GetMemoryResStatus : public Base_Type { // enum
+friend class e__GetMemoryResStatus_template;
+public:
+enum enum_type { thereCanBeEnoughMemory = 0, thereIsNotEnoughMemoryAvailable = 1, UNKNOWN_VALUE = 2, UNBOUND_VALUE = 3 };
+private:
+enum_type enum_value;
+
+public:
+e__GetMemoryResStatus();
+e__GetMemoryResStatus(int other_value);
+e__GetMemoryResStatus(enum_type other_value);
+e__GetMemoryResStatus(const e__GetMemoryResStatus& other_value);
+
+e__GetMemoryResStatus& operator=(int other_value);
+e__GetMemoryResStatus& operator=(enum_type other_value);
+e__GetMemoryResStatus& operator=(const e__GetMemoryResStatus& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const e__GetMemoryResStatus& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const e__GetMemoryResStatus& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const e__GetMemoryResStatus& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const e__GetMemoryResStatus& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const e__GetMemoryResStatus& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const e__GetMemoryResStatus& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const e__GetMemoryResStatus& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class e__GetMemoryResStatus_template : public Base_Template {
+union {
+e__GetMemoryResStatus::enum_type single_value;
+struct {
+unsigned int n_values;
+e__GetMemoryResStatus_template *list_value;
+} value_list;
+};
+
+void copy_template(const e__GetMemoryResStatus_template& other_value);
+
+public:
+e__GetMemoryResStatus_template();
+e__GetMemoryResStatus_template(template_sel other_value);
+e__GetMemoryResStatus_template(int other_value);
+e__GetMemoryResStatus_template(e__GetMemoryResStatus::enum_type other_value);
+e__GetMemoryResStatus_template(const e__GetMemoryResStatus& other_value);
+e__GetMemoryResStatus_template(const OPTIONAL<e__GetMemoryResStatus>& other_value);
+e__GetMemoryResStatus_template(const e__GetMemoryResStatus_template& other_value);
+~e__GetMemoryResStatus_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+e__GetMemoryResStatus_template& operator=(template_sel other_value);
+e__GetMemoryResStatus_template& operator=(int other_value);
+e__GetMemoryResStatus_template& operator=(e__GetMemoryResStatus::enum_type other_value);
+e__GetMemoryResStatus_template& operator=(const e__GetMemoryResStatus& other_value);
+e__GetMemoryResStatus_template& operator=(const OPTIONAL<e__GetMemoryResStatus>& other_value);
+e__GetMemoryResStatus_template& operator=(const e__GetMemoryResStatus_template& other_value);
+
+boolean match(e__GetMemoryResStatus::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const e__GetMemoryResStatus& other_value, boolean legacy = FALSE) const;
+e__GetMemoryResStatus::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+e__GetMemoryResStatus_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const e__GetMemoryResStatus& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class GetMemoryRes : public Base_Type {
+  INTEGER field_vtfunction;
+  e__GetMemoryResVersionNumber field_versionNumber;
+  e__GetMemoryResStatus field_status;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  GetMemoryRes();
+  GetMemoryRes(const INTEGER& par_vtfunction,
+    const e__GetMemoryResVersionNumber& par_versionNumber,
+    const e__GetMemoryResStatus& par_status,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  GetMemoryRes(const GetMemoryRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  GetMemoryRes& operator=(const GetMemoryRes& other_value);
+  boolean operator==(const GetMemoryRes& other_value) const;
+  inline boolean operator!=(const GetMemoryRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline e__GetMemoryResVersionNumber& versionNumber()
+    {return field_versionNumber;}
+  inline const e__GetMemoryResVersionNumber& versionNumber() const
+    {return field_versionNumber;}
+  inline e__GetMemoryResStatus& status()
+    {return field_status;}
+  inline const e__GetMemoryResStatus& status() const
+    {return field_status;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class GetMemoryRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+GetMemoryRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const GetMemoryRes& other_value);
+void copy_template(const GetMemoryRes_template& other_value);
+
+public:
+GetMemoryRes_template();
+GetMemoryRes_template(template_sel other_value);
+GetMemoryRes_template(const GetMemoryRes& other_value);
+GetMemoryRes_template(const OPTIONAL<GetMemoryRes>& other_value);
+GetMemoryRes_template(const GetMemoryRes_template& other_value);
+~GetMemoryRes_template();
+GetMemoryRes_template& operator=(template_sel other_value);
+GetMemoryRes_template& operator=(const GetMemoryRes& other_value);
+GetMemoryRes_template& operator=(const OPTIONAL<GetMemoryRes>& other_value);
+GetMemoryRes_template& operator=(const GetMemoryRes_template& other_value);
+boolean match(const GetMemoryRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+GetMemoryRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+GetMemoryRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+e__GetMemoryResVersionNumber_template& versionNumber();
+const e__GetMemoryResVersionNumber_template& versionNumber() const;
+e__GetMemoryResStatus_template& status();
+const e__GetMemoryResStatus_template& status() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const GetMemoryRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class GetNumberOfSoftKeysReq : public Base_Type {
+  INTEGER field_vtfunction;
+  OCTETSTRING field_reserved2;
+  OCTETSTRING field_reserved3;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  GetNumberOfSoftKeysReq();
+  GetNumberOfSoftKeysReq(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_reserved2,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  GetNumberOfSoftKeysReq(const GetNumberOfSoftKeysReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  GetNumberOfSoftKeysReq& operator=(const GetNumberOfSoftKeysReq& other_value);
+  boolean operator==(const GetNumberOfSoftKeysReq& other_value) const;
+  inline boolean operator!=(const GetNumberOfSoftKeysReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline OCTETSTRING& reserved2()
+    {return field_reserved2;}
+  inline const OCTETSTRING& reserved2() const
+    {return field_reserved2;}
+  inline OCTETSTRING& reserved3()
+    {return field_reserved3;}
+  inline const OCTETSTRING& reserved3() const
+    {return field_reserved3;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class GetNumberOfSoftKeysReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+GetNumberOfSoftKeysReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const GetNumberOfSoftKeysReq& other_value);
+void copy_template(const GetNumberOfSoftKeysReq_template& other_value);
+
+public:
+GetNumberOfSoftKeysReq_template();
+GetNumberOfSoftKeysReq_template(template_sel other_value);
+GetNumberOfSoftKeysReq_template(const GetNumberOfSoftKeysReq& other_value);
+GetNumberOfSoftKeysReq_template(const OPTIONAL<GetNumberOfSoftKeysReq>& other_value);
+GetNumberOfSoftKeysReq_template(const GetNumberOfSoftKeysReq_template& other_value);
+~GetNumberOfSoftKeysReq_template();
+GetNumberOfSoftKeysReq_template& operator=(template_sel other_value);
+GetNumberOfSoftKeysReq_template& operator=(const GetNumberOfSoftKeysReq& other_value);
+GetNumberOfSoftKeysReq_template& operator=(const OPTIONAL<GetNumberOfSoftKeysReq>& other_value);
+GetNumberOfSoftKeysReq_template& operator=(const GetNumberOfSoftKeysReq_template& other_value);
+boolean match(const GetNumberOfSoftKeysReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+GetNumberOfSoftKeysReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+GetNumberOfSoftKeysReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+OCTETSTRING_template& reserved2();
+const OCTETSTRING_template& reserved2() const;
+OCTETSTRING_template& reserved3();
+const OCTETSTRING_template& reserved3() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const GetNumberOfSoftKeysReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class GetNumberOfSoftKeysRes : public Base_Type {
+  INTEGER field_vtfunction;
+  OCTETSTRING field_navigationSoftKeys__;
+  OCTETSTRING field_reserved3;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_x__dots;
+  OCTETSTRING field_y__dots;
+  OCTETSTRING field_numberOfVirtualSoftKeys__;
+  OCTETSTRING field_numberOfPhysicalSoftKeys__;
+public:
+  GetNumberOfSoftKeysRes();
+  GetNumberOfSoftKeysRes(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_navigationSoftKeys__,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_x__dots,
+    const OCTETSTRING& par_y__dots,
+    const OCTETSTRING& par_numberOfVirtualSoftKeys__,
+    const OCTETSTRING& par_numberOfPhysicalSoftKeys__);
+  GetNumberOfSoftKeysRes(const GetNumberOfSoftKeysRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  GetNumberOfSoftKeysRes& operator=(const GetNumberOfSoftKeysRes& other_value);
+  boolean operator==(const GetNumberOfSoftKeysRes& other_value) const;
+  inline boolean operator!=(const GetNumberOfSoftKeysRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline OCTETSTRING& navigationSoftKeys__()
+    {return field_navigationSoftKeys__;}
+  inline const OCTETSTRING& navigationSoftKeys__() const
+    {return field_navigationSoftKeys__;}
+  inline OCTETSTRING& reserved3()
+    {return field_reserved3;}
+  inline const OCTETSTRING& reserved3() const
+    {return field_reserved3;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& x__dots()
+    {return field_x__dots;}
+  inline const OCTETSTRING& x__dots() const
+    {return field_x__dots;}
+  inline OCTETSTRING& y__dots()
+    {return field_y__dots;}
+  inline const OCTETSTRING& y__dots() const
+    {return field_y__dots;}
+  inline OCTETSTRING& numberOfVirtualSoftKeys__()
+    {return field_numberOfVirtualSoftKeys__;}
+  inline const OCTETSTRING& numberOfVirtualSoftKeys__() const
+    {return field_numberOfVirtualSoftKeys__;}
+  inline OCTETSTRING& numberOfPhysicalSoftKeys__()
+    {return field_numberOfPhysicalSoftKeys__;}
+  inline const OCTETSTRING& numberOfPhysicalSoftKeys__() const
+    {return field_numberOfPhysicalSoftKeys__;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class GetNumberOfSoftKeysRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+GetNumberOfSoftKeysRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const GetNumberOfSoftKeysRes& other_value);
+void copy_template(const GetNumberOfSoftKeysRes_template& other_value);
+
+public:
+GetNumberOfSoftKeysRes_template();
+GetNumberOfSoftKeysRes_template(template_sel other_value);
+GetNumberOfSoftKeysRes_template(const GetNumberOfSoftKeysRes& other_value);
+GetNumberOfSoftKeysRes_template(const OPTIONAL<GetNumberOfSoftKeysRes>& other_value);
+GetNumberOfSoftKeysRes_template(const GetNumberOfSoftKeysRes_template& other_value);
+~GetNumberOfSoftKeysRes_template();
+GetNumberOfSoftKeysRes_template& operator=(template_sel other_value);
+GetNumberOfSoftKeysRes_template& operator=(const GetNumberOfSoftKeysRes& other_value);
+GetNumberOfSoftKeysRes_template& operator=(const OPTIONAL<GetNumberOfSoftKeysRes>& other_value);
+GetNumberOfSoftKeysRes_template& operator=(const GetNumberOfSoftKeysRes_template& other_value);
+boolean match(const GetNumberOfSoftKeysRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+GetNumberOfSoftKeysRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+GetNumberOfSoftKeysRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+OCTETSTRING_template& navigationSoftKeys__();
+const OCTETSTRING_template& navigationSoftKeys__() const;
+OCTETSTRING_template& reserved3();
+const OCTETSTRING_template& reserved3() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& x__dots();
+const OCTETSTRING_template& x__dots() const;
+OCTETSTRING_template& y__dots();
+const OCTETSTRING_template& y__dots() const;
+OCTETSTRING_template& numberOfVirtualSoftKeys__();
+const OCTETSTRING_template& numberOfVirtualSoftKeys__() const;
+OCTETSTRING_template& numberOfPhysicalSoftKeys__();
+const OCTETSTRING_template& numberOfPhysicalSoftKeys__() const;
+int size_of() const;
+void log() const;
+void log_match(const GetNumberOfSoftKeysRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class GetTextFontDataReq : public Base_Type {
+  INTEGER field_vtfunction;
+  OCTETSTRING field_reserved2;
+  OCTETSTRING field_reserved3;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  GetTextFontDataReq();
+  GetTextFontDataReq(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_reserved2,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  GetTextFontDataReq(const GetTextFontDataReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  GetTextFontDataReq& operator=(const GetTextFontDataReq& other_value);
+  boolean operator==(const GetTextFontDataReq& other_value) const;
+  inline boolean operator!=(const GetTextFontDataReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline OCTETSTRING& reserved2()
+    {return field_reserved2;}
+  inline const OCTETSTRING& reserved2() const
+    {return field_reserved2;}
+  inline OCTETSTRING& reserved3()
+    {return field_reserved3;}
+  inline const OCTETSTRING& reserved3() const
+    {return field_reserved3;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class GetTextFontDataReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+GetTextFontDataReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const GetTextFontDataReq& other_value);
+void copy_template(const GetTextFontDataReq_template& other_value);
+
+public:
+GetTextFontDataReq_template();
+GetTextFontDataReq_template(template_sel other_value);
+GetTextFontDataReq_template(const GetTextFontDataReq& other_value);
+GetTextFontDataReq_template(const OPTIONAL<GetTextFontDataReq>& other_value);
+GetTextFontDataReq_template(const GetTextFontDataReq_template& other_value);
+~GetTextFontDataReq_template();
+GetTextFontDataReq_template& operator=(template_sel other_value);
+GetTextFontDataReq_template& operator=(const GetTextFontDataReq& other_value);
+GetTextFontDataReq_template& operator=(const OPTIONAL<GetTextFontDataReq>& other_value);
+GetTextFontDataReq_template& operator=(const GetTextFontDataReq_template& other_value);
+boolean match(const GetTextFontDataReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+GetTextFontDataReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+GetTextFontDataReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+OCTETSTRING_template& reserved2();
+const OCTETSTRING_template& reserved2() const;
+OCTETSTRING_template& reserved3();
+const OCTETSTRING_template& reserved3() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const GetTextFontDataReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class TextFontDataRes__small__font__sizes : public Base_Type {
+  BOOLEAN field_font__8x8;
+  BOOLEAN field_font__8x12;
+  BOOLEAN field_font__12x16;
+  BOOLEAN field_font__16x16;
+  BOOLEAN field_font__16x24;
+  BOOLEAN field_font__24x32;
+  BOOLEAN field_font__32x32;
+  BOOLEAN field_reserved;
+public:
+  TextFontDataRes__small__font__sizes();
+  TextFontDataRes__small__font__sizes(const BOOLEAN& par_font__8x8,
+    const BOOLEAN& par_font__8x12,
+    const BOOLEAN& par_font__12x16,
+    const BOOLEAN& par_font__16x16,
+    const BOOLEAN& par_font__16x24,
+    const BOOLEAN& par_font__24x32,
+    const BOOLEAN& par_font__32x32,
+    const BOOLEAN& par_reserved);
+  TextFontDataRes__small__font__sizes(const TextFontDataRes__small__font__sizes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  TextFontDataRes__small__font__sizes& operator=(const TextFontDataRes__small__font__sizes& other_value);
+  boolean operator==(const TextFontDataRes__small__font__sizes& other_value) const;
+  inline boolean operator!=(const TextFontDataRes__small__font__sizes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& font__8x8()
+    {return field_font__8x8;}
+  inline const BOOLEAN& font__8x8() const
+    {return field_font__8x8;}
+  inline BOOLEAN& font__8x12()
+    {return field_font__8x12;}
+  inline const BOOLEAN& font__8x12() const
+    {return field_font__8x12;}
+  inline BOOLEAN& font__12x16()
+    {return field_font__12x16;}
+  inline const BOOLEAN& font__12x16() const
+    {return field_font__12x16;}
+  inline BOOLEAN& font__16x16()
+    {return field_font__16x16;}
+  inline const BOOLEAN& font__16x16() const
+    {return field_font__16x16;}
+  inline BOOLEAN& font__16x24()
+    {return field_font__16x24;}
+  inline const BOOLEAN& font__16x24() const
+    {return field_font__16x24;}
+  inline BOOLEAN& font__24x32()
+    {return field_font__24x32;}
+  inline const BOOLEAN& font__24x32() const
+    {return field_font__24x32;}
+  inline BOOLEAN& font__32x32()
+    {return field_font__32x32;}
+  inline const BOOLEAN& font__32x32() const
+    {return field_font__32x32;}
+  inline BOOLEAN& reserved()
+    {return field_reserved;}
+  inline const BOOLEAN& reserved() const
+    {return field_reserved;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class TextFontDataRes__small__font__sizes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+TextFontDataRes__small__font__sizes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const TextFontDataRes__small__font__sizes& other_value);
+void copy_template(const TextFontDataRes__small__font__sizes_template& other_value);
+
+public:
+TextFontDataRes__small__font__sizes_template();
+TextFontDataRes__small__font__sizes_template(template_sel other_value);
+TextFontDataRes__small__font__sizes_template(const TextFontDataRes__small__font__sizes& other_value);
+TextFontDataRes__small__font__sizes_template(const OPTIONAL<TextFontDataRes__small__font__sizes>& other_value);
+TextFontDataRes__small__font__sizes_template(const TextFontDataRes__small__font__sizes_template& other_value);
+~TextFontDataRes__small__font__sizes_template();
+TextFontDataRes__small__font__sizes_template& operator=(template_sel other_value);
+TextFontDataRes__small__font__sizes_template& operator=(const TextFontDataRes__small__font__sizes& other_value);
+TextFontDataRes__small__font__sizes_template& operator=(const OPTIONAL<TextFontDataRes__small__font__sizes>& other_value);
+TextFontDataRes__small__font__sizes_template& operator=(const TextFontDataRes__small__font__sizes_template& other_value);
+boolean match(const TextFontDataRes__small__font__sizes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+TextFontDataRes__small__font__sizes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+TextFontDataRes__small__font__sizes_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& font__8x8();
+const BOOLEAN_template& font__8x8() const;
+BOOLEAN_template& font__8x12();
+const BOOLEAN_template& font__8x12() const;
+BOOLEAN_template& font__12x16();
+const BOOLEAN_template& font__12x16() const;
+BOOLEAN_template& font__16x16();
+const BOOLEAN_template& font__16x16() const;
+BOOLEAN_template& font__16x24();
+const BOOLEAN_template& font__16x24() const;
+BOOLEAN_template& font__24x32();
+const BOOLEAN_template& font__24x32() const;
+BOOLEAN_template& font__32x32();
+const BOOLEAN_template& font__32x32() const;
+BOOLEAN_template& reserved();
+const BOOLEAN_template& reserved() const;
+int size_of() const;
+void log() const;
+void log_match(const TextFontDataRes__small__font__sizes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class TextFontDataRes__large__font__sizes : public Base_Type {
+  BOOLEAN field_font__32x48;
+  BOOLEAN field_font__48x64;
+  BOOLEAN field_font__64x64;
+  BOOLEAN field_font__64x96;
+  BOOLEAN field_font__96x128;
+  BOOLEAN field_font__128x128;
+  BOOLEAN field_font__128x192;
+  BOOLEAN field_reserved;
+public:
+  TextFontDataRes__large__font__sizes();
+  TextFontDataRes__large__font__sizes(const BOOLEAN& par_font__32x48,
+    const BOOLEAN& par_font__48x64,
+    const BOOLEAN& par_font__64x64,
+    const BOOLEAN& par_font__64x96,
+    const BOOLEAN& par_font__96x128,
+    const BOOLEAN& par_font__128x128,
+    const BOOLEAN& par_font__128x192,
+    const BOOLEAN& par_reserved);
+  TextFontDataRes__large__font__sizes(const TextFontDataRes__large__font__sizes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  TextFontDataRes__large__font__sizes& operator=(const TextFontDataRes__large__font__sizes& other_value);
+  boolean operator==(const TextFontDataRes__large__font__sizes& other_value) const;
+  inline boolean operator!=(const TextFontDataRes__large__font__sizes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& font__32x48()
+    {return field_font__32x48;}
+  inline const BOOLEAN& font__32x48() const
+    {return field_font__32x48;}
+  inline BOOLEAN& font__48x64()
+    {return field_font__48x64;}
+  inline const BOOLEAN& font__48x64() const
+    {return field_font__48x64;}
+  inline BOOLEAN& font__64x64()
+    {return field_font__64x64;}
+  inline const BOOLEAN& font__64x64() const
+    {return field_font__64x64;}
+  inline BOOLEAN& font__64x96()
+    {return field_font__64x96;}
+  inline const BOOLEAN& font__64x96() const
+    {return field_font__64x96;}
+  inline BOOLEAN& font__96x128()
+    {return field_font__96x128;}
+  inline const BOOLEAN& font__96x128() const
+    {return field_font__96x128;}
+  inline BOOLEAN& font__128x128()
+    {return field_font__128x128;}
+  inline const BOOLEAN& font__128x128() const
+    {return field_font__128x128;}
+  inline BOOLEAN& font__128x192()
+    {return field_font__128x192;}
+  inline const BOOLEAN& font__128x192() const
+    {return field_font__128x192;}
+  inline BOOLEAN& reserved()
+    {return field_reserved;}
+  inline const BOOLEAN& reserved() const
+    {return field_reserved;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class TextFontDataRes__large__font__sizes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+TextFontDataRes__large__font__sizes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const TextFontDataRes__large__font__sizes& other_value);
+void copy_template(const TextFontDataRes__large__font__sizes_template& other_value);
+
+public:
+TextFontDataRes__large__font__sizes_template();
+TextFontDataRes__large__font__sizes_template(template_sel other_value);
+TextFontDataRes__large__font__sizes_template(const TextFontDataRes__large__font__sizes& other_value);
+TextFontDataRes__large__font__sizes_template(const OPTIONAL<TextFontDataRes__large__font__sizes>& other_value);
+TextFontDataRes__large__font__sizes_template(const TextFontDataRes__large__font__sizes_template& other_value);
+~TextFontDataRes__large__font__sizes_template();
+TextFontDataRes__large__font__sizes_template& operator=(template_sel other_value);
+TextFontDataRes__large__font__sizes_template& operator=(const TextFontDataRes__large__font__sizes& other_value);
+TextFontDataRes__large__font__sizes_template& operator=(const OPTIONAL<TextFontDataRes__large__font__sizes>& other_value);
+TextFontDataRes__large__font__sizes_template& operator=(const TextFontDataRes__large__font__sizes_template& other_value);
+boolean match(const TextFontDataRes__large__font__sizes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+TextFontDataRes__large__font__sizes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+TextFontDataRes__large__font__sizes_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& font__32x48();
+const BOOLEAN_template& font__32x48() const;
+BOOLEAN_template& font__48x64();
+const BOOLEAN_template& font__48x64() const;
+BOOLEAN_template& font__64x64();
+const BOOLEAN_template& font__64x64() const;
+BOOLEAN_template& font__64x96();
+const BOOLEAN_template& font__64x96() const;
+BOOLEAN_template& font__96x128();
+const BOOLEAN_template& font__96x128() const;
+BOOLEAN_template& font__128x128();
+const BOOLEAN_template& font__128x128() const;
+BOOLEAN_template& font__128x192();
+const BOOLEAN_template& font__128x192() const;
+BOOLEAN_template& reserved();
+const BOOLEAN_template& reserved() const;
+int size_of() const;
+void log() const;
+void log_match(const TextFontDataRes__large__font__sizes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class TextFontDataRes__type__attribute : public Base_Type {
+  BOOLEAN field_bold__text;
+  BOOLEAN field_crossed__out__text;
+  BOOLEAN field_underlined__text;
+  BOOLEAN field_italics__text;
+  BOOLEAN field_inverted__text;
+  BOOLEAN field_flash__inverted;
+  BOOLEAN field_flash__background__and__foreground;
+  BOOLEAN field_proportional__font__rendering;
+public:
+  TextFontDataRes__type__attribute();
+  TextFontDataRes__type__attribute(const BOOLEAN& par_bold__text,
+    const BOOLEAN& par_crossed__out__text,
+    const BOOLEAN& par_underlined__text,
+    const BOOLEAN& par_italics__text,
+    const BOOLEAN& par_inverted__text,
+    const BOOLEAN& par_flash__inverted,
+    const BOOLEAN& par_flash__background__and__foreground,
+    const BOOLEAN& par_proportional__font__rendering);
+  TextFontDataRes__type__attribute(const TextFontDataRes__type__attribute& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  TextFontDataRes__type__attribute& operator=(const TextFontDataRes__type__attribute& other_value);
+  boolean operator==(const TextFontDataRes__type__attribute& other_value) const;
+  inline boolean operator!=(const TextFontDataRes__type__attribute& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& bold__text()
+    {return field_bold__text;}
+  inline const BOOLEAN& bold__text() const
+    {return field_bold__text;}
+  inline BOOLEAN& crossed__out__text()
+    {return field_crossed__out__text;}
+  inline const BOOLEAN& crossed__out__text() const
+    {return field_crossed__out__text;}
+  inline BOOLEAN& underlined__text()
+    {return field_underlined__text;}
+  inline const BOOLEAN& underlined__text() const
+    {return field_underlined__text;}
+  inline BOOLEAN& italics__text()
+    {return field_italics__text;}
+  inline const BOOLEAN& italics__text() const
+    {return field_italics__text;}
+  inline BOOLEAN& inverted__text()
+    {return field_inverted__text;}
+  inline const BOOLEAN& inverted__text() const
+    {return field_inverted__text;}
+  inline BOOLEAN& flash__inverted()
+    {return field_flash__inverted;}
+  inline const BOOLEAN& flash__inverted() const
+    {return field_flash__inverted;}
+  inline BOOLEAN& flash__background__and__foreground()
+    {return field_flash__background__and__foreground;}
+  inline const BOOLEAN& flash__background__and__foreground() const
+    {return field_flash__background__and__foreground;}
+  inline BOOLEAN& proportional__font__rendering()
+    {return field_proportional__font__rendering;}
+  inline const BOOLEAN& proportional__font__rendering() const
+    {return field_proportional__font__rendering;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class TextFontDataRes__type__attribute_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+TextFontDataRes__type__attribute_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const TextFontDataRes__type__attribute& other_value);
+void copy_template(const TextFontDataRes__type__attribute_template& other_value);
+
+public:
+TextFontDataRes__type__attribute_template();
+TextFontDataRes__type__attribute_template(template_sel other_value);
+TextFontDataRes__type__attribute_template(const TextFontDataRes__type__attribute& other_value);
+TextFontDataRes__type__attribute_template(const OPTIONAL<TextFontDataRes__type__attribute>& other_value);
+TextFontDataRes__type__attribute_template(const TextFontDataRes__type__attribute_template& other_value);
+~TextFontDataRes__type__attribute_template();
+TextFontDataRes__type__attribute_template& operator=(template_sel other_value);
+TextFontDataRes__type__attribute_template& operator=(const TextFontDataRes__type__attribute& other_value);
+TextFontDataRes__type__attribute_template& operator=(const OPTIONAL<TextFontDataRes__type__attribute>& other_value);
+TextFontDataRes__type__attribute_template& operator=(const TextFontDataRes__type__attribute_template& other_value);
+boolean match(const TextFontDataRes__type__attribute& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+TextFontDataRes__type__attribute valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+TextFontDataRes__type__attribute_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& bold__text();
+const BOOLEAN_template& bold__text() const;
+BOOLEAN_template& crossed__out__text();
+const BOOLEAN_template& crossed__out__text() const;
+BOOLEAN_template& underlined__text();
+const BOOLEAN_template& underlined__text() const;
+BOOLEAN_template& italics__text();
+const BOOLEAN_template& italics__text() const;
+BOOLEAN_template& inverted__text();
+const BOOLEAN_template& inverted__text() const;
+BOOLEAN_template& flash__inverted();
+const BOOLEAN_template& flash__inverted() const;
+BOOLEAN_template& flash__background__and__foreground();
+const BOOLEAN_template& flash__background__and__foreground() const;
+BOOLEAN_template& proportional__font__rendering();
+const BOOLEAN_template& proportional__font__rendering() const;
+int size_of() const;
+void log() const;
+void log_match(const TextFontDataRes__type__attribute& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class GetTextFontDataRes : public Base_Type {
+  INTEGER field_vtfunction;
+  OCTETSTRING field_reserved2;
+  OCTETSTRING field_reserved3;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  TextFontDataRes__small__font__sizes field_small__font__sizes;
+  TextFontDataRes__large__font__sizes field_large__font__sizes;
+  TextFontDataRes__type__attribute field_type__attribute;
+public:
+  GetTextFontDataRes();
+  GetTextFontDataRes(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_reserved2,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const TextFontDataRes__small__font__sizes& par_small__font__sizes,
+    const TextFontDataRes__large__font__sizes& par_large__font__sizes,
+    const TextFontDataRes__type__attribute& par_type__attribute);
+  GetTextFontDataRes(const GetTextFontDataRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  GetTextFontDataRes& operator=(const GetTextFontDataRes& other_value);
+  boolean operator==(const GetTextFontDataRes& other_value) const;
+  inline boolean operator!=(const GetTextFontDataRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline OCTETSTRING& reserved2()
+    {return field_reserved2;}
+  inline const OCTETSTRING& reserved2() const
+    {return field_reserved2;}
+  inline OCTETSTRING& reserved3()
+    {return field_reserved3;}
+  inline const OCTETSTRING& reserved3() const
+    {return field_reserved3;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline TextFontDataRes__small__font__sizes& small__font__sizes()
+    {return field_small__font__sizes;}
+  inline const TextFontDataRes__small__font__sizes& small__font__sizes() const
+    {return field_small__font__sizes;}
+  inline TextFontDataRes__large__font__sizes& large__font__sizes()
+    {return field_large__font__sizes;}
+  inline const TextFontDataRes__large__font__sizes& large__font__sizes() const
+    {return field_large__font__sizes;}
+  inline TextFontDataRes__type__attribute& type__attribute()
+    {return field_type__attribute;}
+  inline const TextFontDataRes__type__attribute& type__attribute() const
+    {return field_type__attribute;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class GetTextFontDataRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+GetTextFontDataRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const GetTextFontDataRes& other_value);
+void copy_template(const GetTextFontDataRes_template& other_value);
+
+public:
+GetTextFontDataRes_template();
+GetTextFontDataRes_template(template_sel other_value);
+GetTextFontDataRes_template(const GetTextFontDataRes& other_value);
+GetTextFontDataRes_template(const OPTIONAL<GetTextFontDataRes>& other_value);
+GetTextFontDataRes_template(const GetTextFontDataRes_template& other_value);
+~GetTextFontDataRes_template();
+GetTextFontDataRes_template& operator=(template_sel other_value);
+GetTextFontDataRes_template& operator=(const GetTextFontDataRes& other_value);
+GetTextFontDataRes_template& operator=(const OPTIONAL<GetTextFontDataRes>& other_value);
+GetTextFontDataRes_template& operator=(const GetTextFontDataRes_template& other_value);
+boolean match(const GetTextFontDataRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+GetTextFontDataRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+GetTextFontDataRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+OCTETSTRING_template& reserved2();
+const OCTETSTRING_template& reserved2() const;
+OCTETSTRING_template& reserved3();
+const OCTETSTRING_template& reserved3() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+TextFontDataRes__small__font__sizes_template& small__font__sizes();
+const TextFontDataRes__small__font__sizes_template& small__font__sizes() const;
+TextFontDataRes__large__font__sizes_template& large__font__sizes();
+const TextFontDataRes__large__font__sizes_template& large__font__sizes() const;
+TextFontDataRes__type__attribute_template& type__attribute();
+const TextFontDataRes__type__attribute_template& type__attribute() const;
+int size_of() const;
+void log() const;
+void log_match(const GetTextFontDataRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class GetHardwareReq : public Base_Type {
+  INTEGER field_vtfunction;
+  OCTETSTRING field_reserved2;
+  OCTETSTRING field_reserved3;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  GetHardwareReq();
+  GetHardwareReq(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_reserved2,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  GetHardwareReq(const GetHardwareReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  GetHardwareReq& operator=(const GetHardwareReq& other_value);
+  boolean operator==(const GetHardwareReq& other_value) const;
+  inline boolean operator!=(const GetHardwareReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline OCTETSTRING& reserved2()
+    {return field_reserved2;}
+  inline const OCTETSTRING& reserved2() const
+    {return field_reserved2;}
+  inline OCTETSTRING& reserved3()
+    {return field_reserved3;}
+  inline const OCTETSTRING& reserved3() const
+    {return field_reserved3;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class GetHardwareReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+GetHardwareReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const GetHardwareReq& other_value);
+void copy_template(const GetHardwareReq_template& other_value);
+
+public:
+GetHardwareReq_template();
+GetHardwareReq_template(template_sel other_value);
+GetHardwareReq_template(const GetHardwareReq& other_value);
+GetHardwareReq_template(const OPTIONAL<GetHardwareReq>& other_value);
+GetHardwareReq_template(const GetHardwareReq_template& other_value);
+~GetHardwareReq_template();
+GetHardwareReq_template& operator=(template_sel other_value);
+GetHardwareReq_template& operator=(const GetHardwareReq& other_value);
+GetHardwareReq_template& operator=(const OPTIONAL<GetHardwareReq>& other_value);
+GetHardwareReq_template& operator=(const GetHardwareReq_template& other_value);
+boolean match(const GetHardwareReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+GetHardwareReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+GetHardwareReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+OCTETSTRING_template& reserved2();
+const OCTETSTRING_template& reserved2() const;
+OCTETSTRING_template& reserved3();
+const OCTETSTRING_template& reserved3() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const GetHardwareReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class e__GetHardwareResGraphicType : public Base_Type { // enum
+friend class e__GetHardwareResGraphicType_template;
+public:
+enum enum_type { monochrome = 0, colors16 = 1, colors256 = 2, UNKNOWN_VALUE = 3, UNBOUND_VALUE = 4 };
+private:
+enum_type enum_value;
+
+public:
+e__GetHardwareResGraphicType();
+e__GetHardwareResGraphicType(int other_value);
+e__GetHardwareResGraphicType(enum_type other_value);
+e__GetHardwareResGraphicType(const e__GetHardwareResGraphicType& other_value);
+
+e__GetHardwareResGraphicType& operator=(int other_value);
+e__GetHardwareResGraphicType& operator=(enum_type other_value);
+e__GetHardwareResGraphicType& operator=(const e__GetHardwareResGraphicType& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const e__GetHardwareResGraphicType& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const e__GetHardwareResGraphicType& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const e__GetHardwareResGraphicType& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const e__GetHardwareResGraphicType& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const e__GetHardwareResGraphicType& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const e__GetHardwareResGraphicType& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const e__GetHardwareResGraphicType& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class e__GetHardwareResGraphicType_template : public Base_Template {
+union {
+e__GetHardwareResGraphicType::enum_type single_value;
+struct {
+unsigned int n_values;
+e__GetHardwareResGraphicType_template *list_value;
+} value_list;
+};
+
+void copy_template(const e__GetHardwareResGraphicType_template& other_value);
+
+public:
+e__GetHardwareResGraphicType_template();
+e__GetHardwareResGraphicType_template(template_sel other_value);
+e__GetHardwareResGraphicType_template(int other_value);
+e__GetHardwareResGraphicType_template(e__GetHardwareResGraphicType::enum_type other_value);
+e__GetHardwareResGraphicType_template(const e__GetHardwareResGraphicType& other_value);
+e__GetHardwareResGraphicType_template(const OPTIONAL<e__GetHardwareResGraphicType>& other_value);
+e__GetHardwareResGraphicType_template(const e__GetHardwareResGraphicType_template& other_value);
+~e__GetHardwareResGraphicType_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+e__GetHardwareResGraphicType_template& operator=(template_sel other_value);
+e__GetHardwareResGraphicType_template& operator=(int other_value);
+e__GetHardwareResGraphicType_template& operator=(e__GetHardwareResGraphicType::enum_type other_value);
+e__GetHardwareResGraphicType_template& operator=(const e__GetHardwareResGraphicType& other_value);
+e__GetHardwareResGraphicType_template& operator=(const OPTIONAL<e__GetHardwareResGraphicType>& other_value);
+e__GetHardwareResGraphicType_template& operator=(const e__GetHardwareResGraphicType_template& other_value);
+
+boolean match(e__GetHardwareResGraphicType::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const e__GetHardwareResGraphicType& other_value, boolean legacy = FALSE) const;
+e__GetHardwareResGraphicType::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+e__GetHardwareResGraphicType_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const e__GetHardwareResGraphicType& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class GetHardwareResHardwareType : public Base_Type {
+  BOOLEAN field_touchScreenandPointingEvent;
+  BOOLEAN field_pointingDeviceAndPointingEvent;
+  BOOLEAN field_multipleFrequencyAudioOutput;
+  BOOLEAN field_adjustableVolumeAudioOutput;
+  BOOLEAN field_simultaneousActivationsOfPhysicalSoftKeys;
+  BOOLEAN field_simultaneousActivationsOfButtons;
+  BOOLEAN field_dragOperationViaPointingEvent;
+  BOOLEAN field_intermediateCoordinatesDuringDragOperation;
+public:
+  GetHardwareResHardwareType();
+  GetHardwareResHardwareType(const BOOLEAN& par_touchScreenandPointingEvent,
+    const BOOLEAN& par_pointingDeviceAndPointingEvent,
+    const BOOLEAN& par_multipleFrequencyAudioOutput,
+    const BOOLEAN& par_adjustableVolumeAudioOutput,
+    const BOOLEAN& par_simultaneousActivationsOfPhysicalSoftKeys,
+    const BOOLEAN& par_simultaneousActivationsOfButtons,
+    const BOOLEAN& par_dragOperationViaPointingEvent,
+    const BOOLEAN& par_intermediateCoordinatesDuringDragOperation);
+  GetHardwareResHardwareType(const GetHardwareResHardwareType& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  GetHardwareResHardwareType& operator=(const GetHardwareResHardwareType& other_value);
+  boolean operator==(const GetHardwareResHardwareType& other_value) const;
+  inline boolean operator!=(const GetHardwareResHardwareType& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& touchScreenandPointingEvent()
+    {return field_touchScreenandPointingEvent;}
+  inline const BOOLEAN& touchScreenandPointingEvent() const
+    {return field_touchScreenandPointingEvent;}
+  inline BOOLEAN& pointingDeviceAndPointingEvent()
+    {return field_pointingDeviceAndPointingEvent;}
+  inline const BOOLEAN& pointingDeviceAndPointingEvent() const
+    {return field_pointingDeviceAndPointingEvent;}
+  inline BOOLEAN& multipleFrequencyAudioOutput()
+    {return field_multipleFrequencyAudioOutput;}
+  inline const BOOLEAN& multipleFrequencyAudioOutput() const
+    {return field_multipleFrequencyAudioOutput;}
+  inline BOOLEAN& adjustableVolumeAudioOutput()
+    {return field_adjustableVolumeAudioOutput;}
+  inline const BOOLEAN& adjustableVolumeAudioOutput() const
+    {return field_adjustableVolumeAudioOutput;}
+  inline BOOLEAN& simultaneousActivationsOfPhysicalSoftKeys()
+    {return field_simultaneousActivationsOfPhysicalSoftKeys;}
+  inline const BOOLEAN& simultaneousActivationsOfPhysicalSoftKeys() const
+    {return field_simultaneousActivationsOfPhysicalSoftKeys;}
+  inline BOOLEAN& simultaneousActivationsOfButtons()
+    {return field_simultaneousActivationsOfButtons;}
+  inline const BOOLEAN& simultaneousActivationsOfButtons() const
+    {return field_simultaneousActivationsOfButtons;}
+  inline BOOLEAN& dragOperationViaPointingEvent()
+    {return field_dragOperationViaPointingEvent;}
+  inline const BOOLEAN& dragOperationViaPointingEvent() const
+    {return field_dragOperationViaPointingEvent;}
+  inline BOOLEAN& intermediateCoordinatesDuringDragOperation()
+    {return field_intermediateCoordinatesDuringDragOperation;}
+  inline const BOOLEAN& intermediateCoordinatesDuringDragOperation() const
+    {return field_intermediateCoordinatesDuringDragOperation;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class GetHardwareResHardwareType_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+GetHardwareResHardwareType_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const GetHardwareResHardwareType& other_value);
+void copy_template(const GetHardwareResHardwareType_template& other_value);
+
+public:
+GetHardwareResHardwareType_template();
+GetHardwareResHardwareType_template(template_sel other_value);
+GetHardwareResHardwareType_template(const GetHardwareResHardwareType& other_value);
+GetHardwareResHardwareType_template(const OPTIONAL<GetHardwareResHardwareType>& other_value);
+GetHardwareResHardwareType_template(const GetHardwareResHardwareType_template& other_value);
+~GetHardwareResHardwareType_template();
+GetHardwareResHardwareType_template& operator=(template_sel other_value);
+GetHardwareResHardwareType_template& operator=(const GetHardwareResHardwareType& other_value);
+GetHardwareResHardwareType_template& operator=(const OPTIONAL<GetHardwareResHardwareType>& other_value);
+GetHardwareResHardwareType_template& operator=(const GetHardwareResHardwareType_template& other_value);
+boolean match(const GetHardwareResHardwareType& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+GetHardwareResHardwareType valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+GetHardwareResHardwareType_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& touchScreenandPointingEvent();
+const BOOLEAN_template& touchScreenandPointingEvent() const;
+BOOLEAN_template& pointingDeviceAndPointingEvent();
+const BOOLEAN_template& pointingDeviceAndPointingEvent() const;
+BOOLEAN_template& multipleFrequencyAudioOutput();
+const BOOLEAN_template& multipleFrequencyAudioOutput() const;
+BOOLEAN_template& adjustableVolumeAudioOutput();
+const BOOLEAN_template& adjustableVolumeAudioOutput() const;
+BOOLEAN_template& simultaneousActivationsOfPhysicalSoftKeys();
+const BOOLEAN_template& simultaneousActivationsOfPhysicalSoftKeys() const;
+BOOLEAN_template& simultaneousActivationsOfButtons();
+const BOOLEAN_template& simultaneousActivationsOfButtons() const;
+BOOLEAN_template& dragOperationViaPointingEvent();
+const BOOLEAN_template& dragOperationViaPointingEvent() const;
+BOOLEAN_template& intermediateCoordinatesDuringDragOperation();
+const BOOLEAN_template& intermediateCoordinatesDuringDragOperation() const;
+int size_of() const;
+void log() const;
+void log_match(const GetHardwareResHardwareType& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class GetHardwareRes : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_bootTimeInSeconds;
+  e__GetHardwareResGraphicType field_graphicType;
+  GetHardwareResHardwareType field_hardware;
+  INTEGER field_xPixels;
+  INTEGER field_yPixels;
+public:
+  GetHardwareRes();
+  GetHardwareRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_bootTimeInSeconds,
+    const e__GetHardwareResGraphicType& par_graphicType,
+    const GetHardwareResHardwareType& par_hardware,
+    const INTEGER& par_xPixels,
+    const INTEGER& par_yPixels);
+  GetHardwareRes(const GetHardwareRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  GetHardwareRes& operator=(const GetHardwareRes& other_value);
+  boolean operator==(const GetHardwareRes& other_value) const;
+  inline boolean operator!=(const GetHardwareRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& bootTimeInSeconds()
+    {return field_bootTimeInSeconds;}
+  inline const INTEGER& bootTimeInSeconds() const
+    {return field_bootTimeInSeconds;}
+  inline e__GetHardwareResGraphicType& graphicType()
+    {return field_graphicType;}
+  inline const e__GetHardwareResGraphicType& graphicType() const
+    {return field_graphicType;}
+  inline GetHardwareResHardwareType& hardware()
+    {return field_hardware;}
+  inline const GetHardwareResHardwareType& hardware() const
+    {return field_hardware;}
+  inline INTEGER& xPixels()
+    {return field_xPixels;}
+  inline const INTEGER& xPixels() const
+    {return field_xPixels;}
+  inline INTEGER& yPixels()
+    {return field_yPixels;}
+  inline const INTEGER& yPixels() const
+    {return field_yPixels;}
+  inline int size_of() const
+    {return 6;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class GetHardwareRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+GetHardwareRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const GetHardwareRes& other_value);
+void copy_template(const GetHardwareRes_template& other_value);
+
+public:
+GetHardwareRes_template();
+GetHardwareRes_template(template_sel other_value);
+GetHardwareRes_template(const GetHardwareRes& other_value);
+GetHardwareRes_template(const OPTIONAL<GetHardwareRes>& other_value);
+GetHardwareRes_template(const GetHardwareRes_template& other_value);
+~GetHardwareRes_template();
+GetHardwareRes_template& operator=(template_sel other_value);
+GetHardwareRes_template& operator=(const GetHardwareRes& other_value);
+GetHardwareRes_template& operator=(const OPTIONAL<GetHardwareRes>& other_value);
+GetHardwareRes_template& operator=(const GetHardwareRes_template& other_value);
+boolean match(const GetHardwareRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+GetHardwareRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+GetHardwareRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& bootTimeInSeconds();
+const INTEGER_template& bootTimeInSeconds() const;
+e__GetHardwareResGraphicType_template& graphicType();
+const e__GetHardwareResGraphicType_template& graphicType() const;
+GetHardwareResHardwareType_template& hardware();
+const GetHardwareResHardwareType_template& hardware() const;
+INTEGER_template& xPixels();
+const INTEGER_template& xPixels() const;
+INTEGER_template& yPixels();
+const INTEGER_template& yPixels() const;
+int size_of() const;
+void log() const;
+void log_match(const GetHardwareRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class e__Codeplane : public Base_Type { // enum
+friend class e__Codeplane_template;
+public:
+enum enum_type { codeplane0 = 0, codeplane1 = 1, codeplane2 = 2, codeplane3 = 3, codeplane4 = 4, codeplane5 = 5, codeplane6 = 6, codeplane7 = 7, codeplane8 = 8, codeplane9 = 9, codeplane10 = 10, codeplane11 = 11, codeplane12 = 12, codeplane13 = 13, codeplane14 = 14, codeplane15 = 15, codeplane16 = 16, UNKNOWN_VALUE = 17, UNBOUND_VALUE = 18 };
+private:
+enum_type enum_value;
+
+public:
+e__Codeplane();
+e__Codeplane(int other_value);
+e__Codeplane(enum_type other_value);
+e__Codeplane(const e__Codeplane& other_value);
+
+e__Codeplane& operator=(int other_value);
+e__Codeplane& operator=(enum_type other_value);
+e__Codeplane& operator=(const e__Codeplane& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const e__Codeplane& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const e__Codeplane& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const e__Codeplane& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const e__Codeplane& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const e__Codeplane& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const e__Codeplane& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const e__Codeplane& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class e__Codeplane_template : public Base_Template {
+union {
+e__Codeplane::enum_type single_value;
+struct {
+unsigned int n_values;
+e__Codeplane_template *list_value;
+} value_list;
+};
+
+void copy_template(const e__Codeplane_template& other_value);
+
+public:
+e__Codeplane_template();
+e__Codeplane_template(template_sel other_value);
+e__Codeplane_template(int other_value);
+e__Codeplane_template(e__Codeplane::enum_type other_value);
+e__Codeplane_template(const e__Codeplane& other_value);
+e__Codeplane_template(const OPTIONAL<e__Codeplane>& other_value);
+e__Codeplane_template(const e__Codeplane_template& other_value);
+~e__Codeplane_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+e__Codeplane_template& operator=(template_sel other_value);
+e__Codeplane_template& operator=(int other_value);
+e__Codeplane_template& operator=(e__Codeplane::enum_type other_value);
+e__Codeplane_template& operator=(const e__Codeplane& other_value);
+e__Codeplane_template& operator=(const OPTIONAL<e__Codeplane>& other_value);
+e__Codeplane_template& operator=(const e__Codeplane_template& other_value);
+
+boolean match(e__Codeplane::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const e__Codeplane& other_value, boolean legacy = FALSE) const;
+e__Codeplane::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+e__Codeplane_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const e__Codeplane& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class GetSupportedWidecharsReq : public Base_Type {
+  INTEGER field_vtfunction;
+  e__Codeplane field_codeplane;
+  OCTETSTRING field_firstWideCharInInquiryRange;
+  OCTETSTRING field_lastWideCharInInquiryRange;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  GetSupportedWidecharsReq();
+  GetSupportedWidecharsReq(const INTEGER& par_vtfunction,
+    const e__Codeplane& par_codeplane,
+    const OCTETSTRING& par_firstWideCharInInquiryRange,
+    const OCTETSTRING& par_lastWideCharInInquiryRange,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  GetSupportedWidecharsReq(const GetSupportedWidecharsReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  GetSupportedWidecharsReq& operator=(const GetSupportedWidecharsReq& other_value);
+  boolean operator==(const GetSupportedWidecharsReq& other_value) const;
+  inline boolean operator!=(const GetSupportedWidecharsReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline e__Codeplane& codeplane()
+    {return field_codeplane;}
+  inline const e__Codeplane& codeplane() const
+    {return field_codeplane;}
+  inline OCTETSTRING& firstWideCharInInquiryRange()
+    {return field_firstWideCharInInquiryRange;}
+  inline const OCTETSTRING& firstWideCharInInquiryRange() const
+    {return field_firstWideCharInInquiryRange;}
+  inline OCTETSTRING& lastWideCharInInquiryRange()
+    {return field_lastWideCharInInquiryRange;}
+  inline const OCTETSTRING& lastWideCharInInquiryRange() const
+    {return field_lastWideCharInInquiryRange;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 6;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class GetSupportedWidecharsReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+GetSupportedWidecharsReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const GetSupportedWidecharsReq& other_value);
+void copy_template(const GetSupportedWidecharsReq_template& other_value);
+
+public:
+GetSupportedWidecharsReq_template();
+GetSupportedWidecharsReq_template(template_sel other_value);
+GetSupportedWidecharsReq_template(const GetSupportedWidecharsReq& other_value);
+GetSupportedWidecharsReq_template(const OPTIONAL<GetSupportedWidecharsReq>& other_value);
+GetSupportedWidecharsReq_template(const GetSupportedWidecharsReq_template& other_value);
+~GetSupportedWidecharsReq_template();
+GetSupportedWidecharsReq_template& operator=(template_sel other_value);
+GetSupportedWidecharsReq_template& operator=(const GetSupportedWidecharsReq& other_value);
+GetSupportedWidecharsReq_template& operator=(const OPTIONAL<GetSupportedWidecharsReq>& other_value);
+GetSupportedWidecharsReq_template& operator=(const GetSupportedWidecharsReq_template& other_value);
+boolean match(const GetSupportedWidecharsReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+GetSupportedWidecharsReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+GetSupportedWidecharsReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+e__Codeplane_template& codeplane();
+const e__Codeplane_template& codeplane() const;
+OCTETSTRING_template& firstWideCharInInquiryRange();
+const OCTETSTRING_template& firstWideCharInInquiryRange() const;
+OCTETSTRING_template& lastWideCharInInquiryRange();
+const OCTETSTRING_template& lastWideCharInInquiryRange() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const GetSupportedWidecharsReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class WideCharRange : public Base_Type {
+  OCTETSTRING field_firstWideChar;
+  OCTETSTRING field_lastWideChar;
+public:
+  WideCharRange();
+  WideCharRange(const OCTETSTRING& par_firstWideChar,
+    const OCTETSTRING& par_lastWideChar);
+  WideCharRange(const WideCharRange& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  WideCharRange& operator=(const WideCharRange& other_value);
+  boolean operator==(const WideCharRange& other_value) const;
+  inline boolean operator!=(const WideCharRange& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& firstWideChar()
+    {return field_firstWideChar;}
+  inline const OCTETSTRING& firstWideChar() const
+    {return field_firstWideChar;}
+  inline OCTETSTRING& lastWideChar()
+    {return field_lastWideChar;}
+  inline const OCTETSTRING& lastWideChar() const
+    {return field_lastWideChar;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class WideCharRange_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+WideCharRange_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const WideCharRange& other_value);
+void copy_template(const WideCharRange_template& other_value);
+
+public:
+WideCharRange_template();
+WideCharRange_template(template_sel other_value);
+WideCharRange_template(const WideCharRange& other_value);
+WideCharRange_template(const OPTIONAL<WideCharRange>& other_value);
+WideCharRange_template(const WideCharRange_template& other_value);
+~WideCharRange_template();
+WideCharRange_template& operator=(template_sel other_value);
+WideCharRange_template& operator=(const WideCharRange& other_value);
+WideCharRange_template& operator=(const OPTIONAL<WideCharRange>& other_value);
+WideCharRange_template& operator=(const WideCharRange_template& other_value);
+boolean match(const WideCharRange& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+WideCharRange valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+WideCharRange_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& firstWideChar();
+const OCTETSTRING_template& firstWideChar() const;
+OCTETSTRING_template& lastWideChar();
+const OCTETSTRING_template& lastWideChar() const;
+int size_of() const;
+void log() const;
+void log_match(const WideCharRange& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class WideCharRangeArray : public Base_Type {
+struct recordof_setof_struct {
+int ref_count;
+int n_elements;
+WideCharRange **value_elements;
+} *val_ptr;
+
+static const WideCharRange UNBOUND_ELEM;
+private:
+friend boolean operator==(null_type null_value, const WideCharRangeArray& other_value);
+
+public:
+  typedef WideCharRange of_type;
+WideCharRangeArray();
+WideCharRangeArray(null_type other_value);
+WideCharRangeArray(const WideCharRangeArray& other_value);
+~WideCharRangeArray();
+
+void clean_up();
+WideCharRangeArray& operator=(null_type other_value);
+WideCharRangeArray& operator=(const WideCharRangeArray& other_value);
+
+boolean operator==(null_type other_value) const;
+boolean operator==(const WideCharRangeArray& other_value) const;
+inline boolean operator!=(null_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const WideCharRangeArray& other_value) const { return !(*this == other_value); }
+
+WideCharRange& operator[](int index_value);
+WideCharRange& operator[](const INTEGER& index_value);
+const WideCharRange& operator[](int index_value) const;
+const WideCharRange& operator[](const INTEGER& index_value) const;
+
+WideCharRangeArray operator<<=(int rotate_count) const;
+WideCharRangeArray operator<<=(const INTEGER& rotate_count) const;
+WideCharRangeArray operator>>=(int rotate_count) const;
+WideCharRangeArray operator>>=(const INTEGER& rotate_count) const;
+
+WideCharRangeArray operator+(const WideCharRangeArray& other_value) const;
+
+WideCharRangeArray substr(int index, int returncount) const;
+
+WideCharRangeArray replace(int index, int len, const WideCharRangeArray& repl) const;
+
+WideCharRangeArray replace(int index, int len, const WideCharRangeArray_template& repl) const;
+
+void set_size(int new_size);
+inline boolean is_bound() const {return val_ptr != NULL; }
+inline boolean is_present() const { return is_bound(); }
+boolean is_value() const;
+int size_of() const;
+int n_elem() const { return size_of(); }
+int lengthof() const;
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class WideCharRangeArray_template : public Record_Of_Template {
+union {
+struct {
+int n_elements;
+WideCharRange_template **value_elements;
+} single_value;
+struct {
+unsigned int n_values;
+WideCharRangeArray_template *list_value;
+} value_list;
+};
+void copy_value(const WideCharRangeArray& other_value);
+void copy_template(const WideCharRangeArray_template& other_value);
+static boolean match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy);
+
+public:
+WideCharRangeArray_template();
+WideCharRangeArray_template(template_sel other_value);
+WideCharRangeArray_template(null_type other_value);
+WideCharRangeArray_template(const WideCharRangeArray& other_value);
+WideCharRangeArray_template(const OPTIONAL<WideCharRangeArray>& other_value);
+WideCharRangeArray_template(const WideCharRangeArray_template& other_value);
+~WideCharRangeArray_template();
+
+void clean_up();
+WideCharRangeArray_template& operator=(template_sel other_value);
+WideCharRangeArray_template& operator=(null_type other_value);
+WideCharRangeArray_template& operator=(const WideCharRangeArray& other_value);
+WideCharRangeArray_template& operator=(const OPTIONAL<WideCharRangeArray>& other_value);
+WideCharRangeArray_template& operator=(const WideCharRangeArray_template& other_value);
+
+WideCharRange_template& operator[](int index_value);
+WideCharRange_template& operator[](const INTEGER& index_value);
+const WideCharRange_template& operator[](int index_value) const;
+const WideCharRange_template& operator[](const INTEGER& index_value) const;
+
+void set_size(int new_size);
+int n_elem() const;
+int size_of(boolean is_size) const;
+inline int size_of() const { return size_of(TRUE); }
+inline int lengthof() const { return size_of(FALSE); }
+boolean match(const WideCharRangeArray& other_value, boolean legacy = FALSE) const;
+inline boolean is_bound() const 
+  {return template_selection != UNINITIALIZED_TEMPLATE; }
+boolean is_value() const;
+WideCharRangeArray valueof() const;
+WideCharRangeArray substr(int index, int returncount) const;
+
+WideCharRangeArray replace(int index, int len, const WideCharRangeArray_template& repl) const;
+
+WideCharRangeArray replace(int index, int len, const WideCharRangeArray& repl) const;
+
+void set_type(template_sel template_type, unsigned int list_length);
+WideCharRangeArray_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const WideCharRangeArray& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean get_istemplate_kind(const char* type) const;
+};
+
+class GetSupportedWidecharsRes : public Base_Type {
+  INTEGER field_vtfunction;
+  e__Codeplane field_codeplane;
+  OCTETSTRING field_firstWideCharInInquiryRange;
+  OCTETSTRING field_lastWideCharInInquiryRange;
+  INTEGER field_numberOfRanges;
+  WideCharRangeArray field_wideCharRangeArray;
+public:
+  GetSupportedWidecharsRes();
+  GetSupportedWidecharsRes(const INTEGER& par_vtfunction,
+    const e__Codeplane& par_codeplane,
+    const OCTETSTRING& par_firstWideCharInInquiryRange,
+    const OCTETSTRING& par_lastWideCharInInquiryRange,
+    const INTEGER& par_numberOfRanges,
+    const WideCharRangeArray& par_wideCharRangeArray);
+  GetSupportedWidecharsRes(const GetSupportedWidecharsRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  GetSupportedWidecharsRes& operator=(const GetSupportedWidecharsRes& other_value);
+  boolean operator==(const GetSupportedWidecharsRes& other_value) const;
+  inline boolean operator!=(const GetSupportedWidecharsRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline e__Codeplane& codeplane()
+    {return field_codeplane;}
+  inline const e__Codeplane& codeplane() const
+    {return field_codeplane;}
+  inline OCTETSTRING& firstWideCharInInquiryRange()
+    {return field_firstWideCharInInquiryRange;}
+  inline const OCTETSTRING& firstWideCharInInquiryRange() const
+    {return field_firstWideCharInInquiryRange;}
+  inline OCTETSTRING& lastWideCharInInquiryRange()
+    {return field_lastWideCharInInquiryRange;}
+  inline const OCTETSTRING& lastWideCharInInquiryRange() const
+    {return field_lastWideCharInInquiryRange;}
+  inline INTEGER& numberOfRanges()
+    {return field_numberOfRanges;}
+  inline const INTEGER& numberOfRanges() const
+    {return field_numberOfRanges;}
+  inline WideCharRangeArray& wideCharRangeArray()
+    {return field_wideCharRangeArray;}
+  inline const WideCharRangeArray& wideCharRangeArray() const
+    {return field_wideCharRangeArray;}
+  inline int size_of() const
+    {return 6;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class GetSupportedWidecharsRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+GetSupportedWidecharsRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const GetSupportedWidecharsRes& other_value);
+void copy_template(const GetSupportedWidecharsRes_template& other_value);
+
+public:
+GetSupportedWidecharsRes_template();
+GetSupportedWidecharsRes_template(template_sel other_value);
+GetSupportedWidecharsRes_template(const GetSupportedWidecharsRes& other_value);
+GetSupportedWidecharsRes_template(const OPTIONAL<GetSupportedWidecharsRes>& other_value);
+GetSupportedWidecharsRes_template(const GetSupportedWidecharsRes_template& other_value);
+~GetSupportedWidecharsRes_template();
+GetSupportedWidecharsRes_template& operator=(template_sel other_value);
+GetSupportedWidecharsRes_template& operator=(const GetSupportedWidecharsRes& other_value);
+GetSupportedWidecharsRes_template& operator=(const OPTIONAL<GetSupportedWidecharsRes>& other_value);
+GetSupportedWidecharsRes_template& operator=(const GetSupportedWidecharsRes_template& other_value);
+boolean match(const GetSupportedWidecharsRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+GetSupportedWidecharsRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+GetSupportedWidecharsRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+e__Codeplane_template& codeplane();
+const e__Codeplane_template& codeplane() const;
+OCTETSTRING_template& firstWideCharInInquiryRange();
+const OCTETSTRING_template& firstWideCharInInquiryRange() const;
+OCTETSTRING_template& lastWideCharInInquiryRange();
+const OCTETSTRING_template& lastWideCharInInquiryRange() const;
+INTEGER_template& numberOfRanges();
+const INTEGER_template& numberOfRanges() const;
+WideCharRangeArray_template& wideCharRangeArray();
+const WideCharRangeArray_template& wideCharRangeArray() const;
+int size_of() const;
+void log() const;
+void log_match(const GetSupportedWidecharsRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class GetWindowMaskDataReq : public Base_Type {
+  INTEGER field_vtfunction;
+  OCTETSTRING field_reserved2;
+  OCTETSTRING field_reserved3;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  GetWindowMaskDataReq();
+  GetWindowMaskDataReq(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_reserved2,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  GetWindowMaskDataReq(const GetWindowMaskDataReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  GetWindowMaskDataReq& operator=(const GetWindowMaskDataReq& other_value);
+  boolean operator==(const GetWindowMaskDataReq& other_value) const;
+  inline boolean operator!=(const GetWindowMaskDataReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline OCTETSTRING& reserved2()
+    {return field_reserved2;}
+  inline const OCTETSTRING& reserved2() const
+    {return field_reserved2;}
+  inline OCTETSTRING& reserved3()
+    {return field_reserved3;}
+  inline const OCTETSTRING& reserved3() const
+    {return field_reserved3;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class GetWindowMaskDataReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+GetWindowMaskDataReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const GetWindowMaskDataReq& other_value);
+void copy_template(const GetWindowMaskDataReq_template& other_value);
+
+public:
+GetWindowMaskDataReq_template();
+GetWindowMaskDataReq_template(template_sel other_value);
+GetWindowMaskDataReq_template(const GetWindowMaskDataReq& other_value);
+GetWindowMaskDataReq_template(const OPTIONAL<GetWindowMaskDataReq>& other_value);
+GetWindowMaskDataReq_template(const GetWindowMaskDataReq_template& other_value);
+~GetWindowMaskDataReq_template();
+GetWindowMaskDataReq_template& operator=(template_sel other_value);
+GetWindowMaskDataReq_template& operator=(const GetWindowMaskDataReq& other_value);
+GetWindowMaskDataReq_template& operator=(const OPTIONAL<GetWindowMaskDataReq>& other_value);
+GetWindowMaskDataReq_template& operator=(const GetWindowMaskDataReq_template& other_value);
+boolean match(const GetWindowMaskDataReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+GetWindowMaskDataReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+GetWindowMaskDataReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+OCTETSTRING_template& reserved2();
+const OCTETSTRING_template& reserved2() const;
+OCTETSTRING_template& reserved3();
+const OCTETSTRING_template& reserved3() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const GetWindowMaskDataReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class GetWindowMaskDataRes : public Base_Type {
+  INTEGER field_vtfunction;
+  OCTETSTRING field_BackgroundColourVTUserLayoutDataMasks;
+  OCTETSTRING field_BackgroundColourVTKeyCells;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  GetWindowMaskDataRes();
+  GetWindowMaskDataRes(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_BackgroundColourVTUserLayoutDataMasks,
+    const OCTETSTRING& par_BackgroundColourVTKeyCells,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  GetWindowMaskDataRes(const GetWindowMaskDataRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  GetWindowMaskDataRes& operator=(const GetWindowMaskDataRes& other_value);
+  boolean operator==(const GetWindowMaskDataRes& other_value) const;
+  inline boolean operator!=(const GetWindowMaskDataRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline OCTETSTRING& BackgroundColourVTUserLayoutDataMasks()
+    {return field_BackgroundColourVTUserLayoutDataMasks;}
+  inline const OCTETSTRING& BackgroundColourVTUserLayoutDataMasks() const
+    {return field_BackgroundColourVTUserLayoutDataMasks;}
+  inline OCTETSTRING& BackgroundColourVTKeyCells()
+    {return field_BackgroundColourVTKeyCells;}
+  inline const OCTETSTRING& BackgroundColourVTKeyCells() const
+    {return field_BackgroundColourVTKeyCells;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class GetWindowMaskDataRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+GetWindowMaskDataRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const GetWindowMaskDataRes& other_value);
+void copy_template(const GetWindowMaskDataRes_template& other_value);
+
+public:
+GetWindowMaskDataRes_template();
+GetWindowMaskDataRes_template(template_sel other_value);
+GetWindowMaskDataRes_template(const GetWindowMaskDataRes& other_value);
+GetWindowMaskDataRes_template(const OPTIONAL<GetWindowMaskDataRes>& other_value);
+GetWindowMaskDataRes_template(const GetWindowMaskDataRes_template& other_value);
+~GetWindowMaskDataRes_template();
+GetWindowMaskDataRes_template& operator=(template_sel other_value);
+GetWindowMaskDataRes_template& operator=(const GetWindowMaskDataRes& other_value);
+GetWindowMaskDataRes_template& operator=(const OPTIONAL<GetWindowMaskDataRes>& other_value);
+GetWindowMaskDataRes_template& operator=(const GetWindowMaskDataRes_template& other_value);
+boolean match(const GetWindowMaskDataRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+GetWindowMaskDataRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+GetWindowMaskDataRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+OCTETSTRING_template& BackgroundColourVTUserLayoutDataMasks();
+const OCTETSTRING_template& BackgroundColourVTUserLayoutDataMasks() const;
+OCTETSTRING_template& BackgroundColourVTKeyCells();
+const OCTETSTRING_template& BackgroundColourVTKeyCells() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const GetWindowMaskDataRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class GetSupportedObjectsReq : public Base_Type {
+  INTEGER field_vtfunction;
+  OCTETSTRING field_reserved2;
+  OCTETSTRING field_reserved3;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  GetSupportedObjectsReq();
+  GetSupportedObjectsReq(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_reserved2,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  GetSupportedObjectsReq(const GetSupportedObjectsReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  GetSupportedObjectsReq& operator=(const GetSupportedObjectsReq& other_value);
+  boolean operator==(const GetSupportedObjectsReq& other_value) const;
+  inline boolean operator!=(const GetSupportedObjectsReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline OCTETSTRING& reserved2()
+    {return field_reserved2;}
+  inline const OCTETSTRING& reserved2() const
+    {return field_reserved2;}
+  inline OCTETSTRING& reserved3()
+    {return field_reserved3;}
+  inline const OCTETSTRING& reserved3() const
+    {return field_reserved3;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class GetSupportedObjectsReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+GetSupportedObjectsReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const GetSupportedObjectsReq& other_value);
+void copy_template(const GetSupportedObjectsReq_template& other_value);
+
+public:
+GetSupportedObjectsReq_template();
+GetSupportedObjectsReq_template(template_sel other_value);
+GetSupportedObjectsReq_template(const GetSupportedObjectsReq& other_value);
+GetSupportedObjectsReq_template(const OPTIONAL<GetSupportedObjectsReq>& other_value);
+GetSupportedObjectsReq_template(const GetSupportedObjectsReq_template& other_value);
+~GetSupportedObjectsReq_template();
+GetSupportedObjectsReq_template& operator=(template_sel other_value);
+GetSupportedObjectsReq_template& operator=(const GetSupportedObjectsReq& other_value);
+GetSupportedObjectsReq_template& operator=(const OPTIONAL<GetSupportedObjectsReq>& other_value);
+GetSupportedObjectsReq_template& operator=(const GetSupportedObjectsReq_template& other_value);
+boolean match(const GetSupportedObjectsReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+GetSupportedObjectsReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+GetSupportedObjectsReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+OCTETSTRING_template& reserved2();
+const OCTETSTRING_template& reserved2() const;
+OCTETSTRING_template& reserved3();
+const OCTETSTRING_template& reserved3() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const GetSupportedObjectsReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class GetSupportedObjectsRes : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_numberOfBytesToFollow;
+  OCTETSTRING field_supportedObjectTypes;
+public:
+  GetSupportedObjectsRes();
+  GetSupportedObjectsRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_numberOfBytesToFollow,
+    const OCTETSTRING& par_supportedObjectTypes);
+  GetSupportedObjectsRes(const GetSupportedObjectsRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  GetSupportedObjectsRes& operator=(const GetSupportedObjectsRes& other_value);
+  boolean operator==(const GetSupportedObjectsRes& other_value) const;
+  inline boolean operator!=(const GetSupportedObjectsRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& numberOfBytesToFollow()
+    {return field_numberOfBytesToFollow;}
+  inline const INTEGER& numberOfBytesToFollow() const
+    {return field_numberOfBytesToFollow;}
+  inline OCTETSTRING& supportedObjectTypes()
+    {return field_supportedObjectTypes;}
+  inline const OCTETSTRING& supportedObjectTypes() const
+    {return field_supportedObjectTypes;}
+  inline int size_of() const
+    {return 3;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class GetSupportedObjectsRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+GetSupportedObjectsRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const GetSupportedObjectsRes& other_value);
+void copy_template(const GetSupportedObjectsRes_template& other_value);
+
+public:
+GetSupportedObjectsRes_template();
+GetSupportedObjectsRes_template(template_sel other_value);
+GetSupportedObjectsRes_template(const GetSupportedObjectsRes& other_value);
+GetSupportedObjectsRes_template(const OPTIONAL<GetSupportedObjectsRes>& other_value);
+GetSupportedObjectsRes_template(const GetSupportedObjectsRes_template& other_value);
+~GetSupportedObjectsRes_template();
+GetSupportedObjectsRes_template& operator=(template_sel other_value);
+GetSupportedObjectsRes_template& operator=(const GetSupportedObjectsRes& other_value);
+GetSupportedObjectsRes_template& operator=(const OPTIONAL<GetSupportedObjectsRes>& other_value);
+GetSupportedObjectsRes_template& operator=(const GetSupportedObjectsRes_template& other_value);
+boolean match(const GetSupportedObjectsRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+GetSupportedObjectsRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+GetSupportedObjectsRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& numberOfBytesToFollow();
+const INTEGER_template& numberOfBytesToFollow() const;
+OCTETSTRING_template& supportedObjectTypes();
+const OCTETSTRING_template& supportedObjectTypes() const;
+int size_of() const;
+void log() const;
+void log_match(const GetSupportedObjectsRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class StoreVersionRes__errorCodesType : public Base_Type {
+  BOOLEAN field_reserved0;
+  BOOLEAN field_versionLabelIsNotCorrect;
+  BOOLEAN field_insufficientMemoryAvailable;
+  BOOLEAN field_anyOtherError;
+  BOOLEAN field_reserved4;
+  BOOLEAN field_reserved5;
+  BOOLEAN field_reserved6;
+  BOOLEAN field_reserved7;
+public:
+  StoreVersionRes__errorCodesType();
+  StoreVersionRes__errorCodesType(const BOOLEAN& par_reserved0,
+    const BOOLEAN& par_versionLabelIsNotCorrect,
+    const BOOLEAN& par_insufficientMemoryAvailable,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved4,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7);
+  StoreVersionRes__errorCodesType(const StoreVersionRes__errorCodesType& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  StoreVersionRes__errorCodesType& operator=(const StoreVersionRes__errorCodesType& other_value);
+  boolean operator==(const StoreVersionRes__errorCodesType& other_value) const;
+  inline boolean operator!=(const StoreVersionRes__errorCodesType& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& reserved0()
+    {return field_reserved0;}
+  inline const BOOLEAN& reserved0() const
+    {return field_reserved0;}
+  inline BOOLEAN& versionLabelIsNotCorrect()
+    {return field_versionLabelIsNotCorrect;}
+  inline const BOOLEAN& versionLabelIsNotCorrect() const
+    {return field_versionLabelIsNotCorrect;}
+  inline BOOLEAN& insufficientMemoryAvailable()
+    {return field_insufficientMemoryAvailable;}
+  inline const BOOLEAN& insufficientMemoryAvailable() const
+    {return field_insufficientMemoryAvailable;}
+  inline BOOLEAN& anyOtherError()
+    {return field_anyOtherError;}
+  inline const BOOLEAN& anyOtherError() const
+    {return field_anyOtherError;}
+  inline BOOLEAN& reserved4()
+    {return field_reserved4;}
+  inline const BOOLEAN& reserved4() const
+    {return field_reserved4;}
+  inline BOOLEAN& reserved5()
+    {return field_reserved5;}
+  inline const BOOLEAN& reserved5() const
+    {return field_reserved5;}
+  inline BOOLEAN& reserved6()
+    {return field_reserved6;}
+  inline const BOOLEAN& reserved6() const
+    {return field_reserved6;}
+  inline BOOLEAN& reserved7()
+    {return field_reserved7;}
+  inline const BOOLEAN& reserved7() const
+    {return field_reserved7;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class StoreVersionRes__errorCodesType_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+StoreVersionRes__errorCodesType_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const StoreVersionRes__errorCodesType& other_value);
+void copy_template(const StoreVersionRes__errorCodesType_template& other_value);
+
+public:
+StoreVersionRes__errorCodesType_template();
+StoreVersionRes__errorCodesType_template(template_sel other_value);
+StoreVersionRes__errorCodesType_template(const StoreVersionRes__errorCodesType& other_value);
+StoreVersionRes__errorCodesType_template(const OPTIONAL<StoreVersionRes__errorCodesType>& other_value);
+StoreVersionRes__errorCodesType_template(const StoreVersionRes__errorCodesType_template& other_value);
+~StoreVersionRes__errorCodesType_template();
+StoreVersionRes__errorCodesType_template& operator=(template_sel other_value);
+StoreVersionRes__errorCodesType_template& operator=(const StoreVersionRes__errorCodesType& other_value);
+StoreVersionRes__errorCodesType_template& operator=(const OPTIONAL<StoreVersionRes__errorCodesType>& other_value);
+StoreVersionRes__errorCodesType_template& operator=(const StoreVersionRes__errorCodesType_template& other_value);
+boolean match(const StoreVersionRes__errorCodesType& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+StoreVersionRes__errorCodesType valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+StoreVersionRes__errorCodesType_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& reserved0();
+const BOOLEAN_template& reserved0() const;
+BOOLEAN_template& versionLabelIsNotCorrect();
+const BOOLEAN_template& versionLabelIsNotCorrect() const;
+BOOLEAN_template& insufficientMemoryAvailable();
+const BOOLEAN_template& insufficientMemoryAvailable() const;
+BOOLEAN_template& anyOtherError();
+const BOOLEAN_template& anyOtherError() const;
+BOOLEAN_template& reserved4();
+const BOOLEAN_template& reserved4() const;
+BOOLEAN_template& reserved5();
+const BOOLEAN_template& reserved5() const;
+BOOLEAN_template& reserved6();
+const BOOLEAN_template& reserved6() const;
+BOOLEAN_template& reserved7();
+const BOOLEAN_template& reserved7() const;
+int size_of() const;
+void log() const;
+void log_match(const StoreVersionRes__errorCodesType& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class StoreVersionRes : public Base_Type {
+  INTEGER field_vtfunction;
+  OCTETSTRING field_reserved2;
+  OCTETSTRING field_reserved3;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  StoreVersionRes__errorCodesType field_errorCodes;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  StoreVersionRes();
+  StoreVersionRes(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_reserved2,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const StoreVersionRes__errorCodesType& par_errorCodes,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  StoreVersionRes(const StoreVersionRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  StoreVersionRes& operator=(const StoreVersionRes& other_value);
+  boolean operator==(const StoreVersionRes& other_value) const;
+  inline boolean operator!=(const StoreVersionRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline OCTETSTRING& reserved2()
+    {return field_reserved2;}
+  inline const OCTETSTRING& reserved2() const
+    {return field_reserved2;}
+  inline OCTETSTRING& reserved3()
+    {return field_reserved3;}
+  inline const OCTETSTRING& reserved3() const
+    {return field_reserved3;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline StoreVersionRes__errorCodesType& errorCodes()
+    {return field_errorCodes;}
+  inline const StoreVersionRes__errorCodesType& errorCodes() const
+    {return field_errorCodes;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class StoreVersionRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+StoreVersionRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const StoreVersionRes& other_value);
+void copy_template(const StoreVersionRes_template& other_value);
+
+public:
+StoreVersionRes_template();
+StoreVersionRes_template(template_sel other_value);
+StoreVersionRes_template(const StoreVersionRes& other_value);
+StoreVersionRes_template(const OPTIONAL<StoreVersionRes>& other_value);
+StoreVersionRes_template(const StoreVersionRes_template& other_value);
+~StoreVersionRes_template();
+StoreVersionRes_template& operator=(template_sel other_value);
+StoreVersionRes_template& operator=(const StoreVersionRes& other_value);
+StoreVersionRes_template& operator=(const OPTIONAL<StoreVersionRes>& other_value);
+StoreVersionRes_template& operator=(const StoreVersionRes_template& other_value);
+boolean match(const StoreVersionRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+StoreVersionRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+StoreVersionRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+OCTETSTRING_template& reserved2();
+const OCTETSTRING_template& reserved2() const;
+OCTETSTRING_template& reserved3();
+const OCTETSTRING_template& reserved3() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+StoreVersionRes__errorCodesType_template& errorCodes();
+const StoreVersionRes__errorCodesType_template& errorCodes() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const StoreVersionRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class StoreVersionReq : public Base_Type {
+  INTEGER field_vtfunction;
+  CHARSTRING field_versionLabel;
+public:
+  StoreVersionReq();
+  StoreVersionReq(const INTEGER& par_vtfunction,
+    const CHARSTRING& par_versionLabel);
+  StoreVersionReq(const StoreVersionReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  StoreVersionReq& operator=(const StoreVersionReq& other_value);
+  boolean operator==(const StoreVersionReq& other_value) const;
+  inline boolean operator!=(const StoreVersionReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline CHARSTRING& versionLabel()
+    {return field_versionLabel;}
+  inline const CHARSTRING& versionLabel() const
+    {return field_versionLabel;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class StoreVersionReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+StoreVersionReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const StoreVersionReq& other_value);
+void copy_template(const StoreVersionReq_template& other_value);
+
+public:
+StoreVersionReq_template();
+StoreVersionReq_template(template_sel other_value);
+StoreVersionReq_template(const StoreVersionReq& other_value);
+StoreVersionReq_template(const OPTIONAL<StoreVersionReq>& other_value);
+StoreVersionReq_template(const StoreVersionReq_template& other_value);
+~StoreVersionReq_template();
+StoreVersionReq_template& operator=(template_sel other_value);
+StoreVersionReq_template& operator=(const StoreVersionReq& other_value);
+StoreVersionReq_template& operator=(const OPTIONAL<StoreVersionReq>& other_value);
+StoreVersionReq_template& operator=(const StoreVersionReq_template& other_value);
+boolean match(const StoreVersionReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+StoreVersionReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+StoreVersionReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+CHARSTRING_template& versionLabel();
+const CHARSTRING_template& versionLabel() const;
+int size_of() const;
+void log() const;
+void log_match(const StoreVersionReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class WorkingSetMaintenanceBitMask : public Base_Type {
+  BOOLEAN field_initiatingWorkingSetMaintenance;
+  BOOLEAN field_reserved1;
+  BOOLEAN field_reserved2;
+  BOOLEAN field_reserved3;
+  BOOLEAN field_reserved4;
+  BOOLEAN field_reserved5;
+  BOOLEAN field_reserved6;
+  BOOLEAN field_reserved7;
+public:
+  WorkingSetMaintenanceBitMask();
+  WorkingSetMaintenanceBitMask(const BOOLEAN& par_initiatingWorkingSetMaintenance,
+    const BOOLEAN& par_reserved1,
+    const BOOLEAN& par_reserved2,
+    const BOOLEAN& par_reserved3,
+    const BOOLEAN& par_reserved4,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7);
+  WorkingSetMaintenanceBitMask(const WorkingSetMaintenanceBitMask& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  WorkingSetMaintenanceBitMask& operator=(const WorkingSetMaintenanceBitMask& other_value);
+  boolean operator==(const WorkingSetMaintenanceBitMask& other_value) const;
+  inline boolean operator!=(const WorkingSetMaintenanceBitMask& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& initiatingWorkingSetMaintenance()
+    {return field_initiatingWorkingSetMaintenance;}
+  inline const BOOLEAN& initiatingWorkingSetMaintenance() const
+    {return field_initiatingWorkingSetMaintenance;}
+  inline BOOLEAN& reserved1()
+    {return field_reserved1;}
+  inline const BOOLEAN& reserved1() const
+    {return field_reserved1;}
+  inline BOOLEAN& reserved2()
+    {return field_reserved2;}
+  inline const BOOLEAN& reserved2() const
+    {return field_reserved2;}
+  inline BOOLEAN& reserved3()
+    {return field_reserved3;}
+  inline const BOOLEAN& reserved3() const
+    {return field_reserved3;}
+  inline BOOLEAN& reserved4()
+    {return field_reserved4;}
+  inline const BOOLEAN& reserved4() const
+    {return field_reserved4;}
+  inline BOOLEAN& reserved5()
+    {return field_reserved5;}
+  inline const BOOLEAN& reserved5() const
+    {return field_reserved5;}
+  inline BOOLEAN& reserved6()
+    {return field_reserved6;}
+  inline const BOOLEAN& reserved6() const
+    {return field_reserved6;}
+  inline BOOLEAN& reserved7()
+    {return field_reserved7;}
+  inline const BOOLEAN& reserved7() const
+    {return field_reserved7;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class WorkingSetMaintenanceBitMask_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+WorkingSetMaintenanceBitMask_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const WorkingSetMaintenanceBitMask& other_value);
+void copy_template(const WorkingSetMaintenanceBitMask_template& other_value);
+
+public:
+WorkingSetMaintenanceBitMask_template();
+WorkingSetMaintenanceBitMask_template(template_sel other_value);
+WorkingSetMaintenanceBitMask_template(const WorkingSetMaintenanceBitMask& other_value);
+WorkingSetMaintenanceBitMask_template(const OPTIONAL<WorkingSetMaintenanceBitMask>& other_value);
+WorkingSetMaintenanceBitMask_template(const WorkingSetMaintenanceBitMask_template& other_value);
+~WorkingSetMaintenanceBitMask_template();
+WorkingSetMaintenanceBitMask_template& operator=(template_sel other_value);
+WorkingSetMaintenanceBitMask_template& operator=(const WorkingSetMaintenanceBitMask& other_value);
+WorkingSetMaintenanceBitMask_template& operator=(const OPTIONAL<WorkingSetMaintenanceBitMask>& other_value);
+WorkingSetMaintenanceBitMask_template& operator=(const WorkingSetMaintenanceBitMask_template& other_value);
+boolean match(const WorkingSetMaintenanceBitMask& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+WorkingSetMaintenanceBitMask valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+WorkingSetMaintenanceBitMask_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& initiatingWorkingSetMaintenance();
+const BOOLEAN_template& initiatingWorkingSetMaintenance() const;
+BOOLEAN_template& reserved1();
+const BOOLEAN_template& reserved1() const;
+BOOLEAN_template& reserved2();
+const BOOLEAN_template& reserved2() const;
+BOOLEAN_template& reserved3();
+const BOOLEAN_template& reserved3() const;
+BOOLEAN_template& reserved4();
+const BOOLEAN_template& reserved4() const;
+BOOLEAN_template& reserved5();
+const BOOLEAN_template& reserved5() const;
+BOOLEAN_template& reserved6();
+const BOOLEAN_template& reserved6() const;
+BOOLEAN_template& reserved7();
+const BOOLEAN_template& reserved7() const;
+int size_of() const;
+void log() const;
+void log_match(const WorkingSetMaintenanceBitMask& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class e__WorkingSetMaintenanceVersionNumber : public Base_Type { // enum
+friend class e__WorkingSetMaintenanceVersionNumber_template;
+public:
+enum enum_type { reserved0 = 0, reserved1 = 1, reserved2 = 2, compliantWithVTVersion3 = 3, compliantWithVTVersion4 = 4, compliantWithVTVersion5 = 5, compliantWithVTVersion2 = 255, UNKNOWN_VALUE = 6, UNBOUND_VALUE = 7 };
+private:
+enum_type enum_value;
+
+public:
+e__WorkingSetMaintenanceVersionNumber();
+e__WorkingSetMaintenanceVersionNumber(int other_value);
+e__WorkingSetMaintenanceVersionNumber(enum_type other_value);
+e__WorkingSetMaintenanceVersionNumber(const e__WorkingSetMaintenanceVersionNumber& other_value);
+
+e__WorkingSetMaintenanceVersionNumber& operator=(int other_value);
+e__WorkingSetMaintenanceVersionNumber& operator=(enum_type other_value);
+e__WorkingSetMaintenanceVersionNumber& operator=(const e__WorkingSetMaintenanceVersionNumber& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const e__WorkingSetMaintenanceVersionNumber& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const e__WorkingSetMaintenanceVersionNumber& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const e__WorkingSetMaintenanceVersionNumber& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const e__WorkingSetMaintenanceVersionNumber& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const e__WorkingSetMaintenanceVersionNumber& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const e__WorkingSetMaintenanceVersionNumber& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const e__WorkingSetMaintenanceVersionNumber& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class e__WorkingSetMaintenanceVersionNumber_template : public Base_Template {
+union {
+e__WorkingSetMaintenanceVersionNumber::enum_type single_value;
+struct {
+unsigned int n_values;
+e__WorkingSetMaintenanceVersionNumber_template *list_value;
+} value_list;
+};
+
+void copy_template(const e__WorkingSetMaintenanceVersionNumber_template& other_value);
+
+public:
+e__WorkingSetMaintenanceVersionNumber_template();
+e__WorkingSetMaintenanceVersionNumber_template(template_sel other_value);
+e__WorkingSetMaintenanceVersionNumber_template(int other_value);
+e__WorkingSetMaintenanceVersionNumber_template(e__WorkingSetMaintenanceVersionNumber::enum_type other_value);
+e__WorkingSetMaintenanceVersionNumber_template(const e__WorkingSetMaintenanceVersionNumber& other_value);
+e__WorkingSetMaintenanceVersionNumber_template(const OPTIONAL<e__WorkingSetMaintenanceVersionNumber>& other_value);
+e__WorkingSetMaintenanceVersionNumber_template(const e__WorkingSetMaintenanceVersionNumber_template& other_value);
+~e__WorkingSetMaintenanceVersionNumber_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+e__WorkingSetMaintenanceVersionNumber_template& operator=(template_sel other_value);
+e__WorkingSetMaintenanceVersionNumber_template& operator=(int other_value);
+e__WorkingSetMaintenanceVersionNumber_template& operator=(e__WorkingSetMaintenanceVersionNumber::enum_type other_value);
+e__WorkingSetMaintenanceVersionNumber_template& operator=(const e__WorkingSetMaintenanceVersionNumber& other_value);
+e__WorkingSetMaintenanceVersionNumber_template& operator=(const OPTIONAL<e__WorkingSetMaintenanceVersionNumber>& other_value);
+e__WorkingSetMaintenanceVersionNumber_template& operator=(const e__WorkingSetMaintenanceVersionNumber_template& other_value);
+
+boolean match(e__WorkingSetMaintenanceVersionNumber::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const e__WorkingSetMaintenanceVersionNumber& other_value, boolean legacy = FALSE) const;
+e__WorkingSetMaintenanceVersionNumber::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+e__WorkingSetMaintenanceVersionNumber_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const e__WorkingSetMaintenanceVersionNumber& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class LoadVersionReq : public Base_Type {
+  INTEGER field_vtfunction;
+  CHARSTRING field_versionLabel;
+public:
+  LoadVersionReq();
+  LoadVersionReq(const INTEGER& par_vtfunction,
+    const CHARSTRING& par_versionLabel);
+  LoadVersionReq(const LoadVersionReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  LoadVersionReq& operator=(const LoadVersionReq& other_value);
+  boolean operator==(const LoadVersionReq& other_value) const;
+  inline boolean operator!=(const LoadVersionReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline CHARSTRING& versionLabel()
+    {return field_versionLabel;}
+  inline const CHARSTRING& versionLabel() const
+    {return field_versionLabel;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class LoadVersionReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+LoadVersionReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const LoadVersionReq& other_value);
+void copy_template(const LoadVersionReq_template& other_value);
+
+public:
+LoadVersionReq_template();
+LoadVersionReq_template(template_sel other_value);
+LoadVersionReq_template(const LoadVersionReq& other_value);
+LoadVersionReq_template(const OPTIONAL<LoadVersionReq>& other_value);
+LoadVersionReq_template(const LoadVersionReq_template& other_value);
+~LoadVersionReq_template();
+LoadVersionReq_template& operator=(template_sel other_value);
+LoadVersionReq_template& operator=(const LoadVersionReq& other_value);
+LoadVersionReq_template& operator=(const OPTIONAL<LoadVersionReq>& other_value);
+LoadVersionReq_template& operator=(const LoadVersionReq_template& other_value);
+boolean match(const LoadVersionReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+LoadVersionReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+LoadVersionReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+CHARSTRING_template& versionLabel();
+const CHARSTRING_template& versionLabel() const;
+int size_of() const;
+void log() const;
+void log_match(const LoadVersionReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class LoadVersionRes__errorCodesType : public Base_Type {
+  BOOLEAN field_fileSystemErrorOrPoolDataCorruption;
+  BOOLEAN field_versionLabelIsNotCorrectOrVersionLabeUnknown;
+  BOOLEAN field_insufficientMemoryAvailable;
+  BOOLEAN field_anyOtherError;
+  BOOLEAN field_reserved5;
+  BOOLEAN field_reserved6;
+  BOOLEAN field_reserved7;
+  BOOLEAN field_reserved8;
+public:
+  LoadVersionRes__errorCodesType();
+  LoadVersionRes__errorCodesType(const BOOLEAN& par_fileSystemErrorOrPoolDataCorruption,
+    const BOOLEAN& par_versionLabelIsNotCorrectOrVersionLabeUnknown,
+    const BOOLEAN& par_insufficientMemoryAvailable,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7,
+    const BOOLEAN& par_reserved8);
+  LoadVersionRes__errorCodesType(const LoadVersionRes__errorCodesType& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  LoadVersionRes__errorCodesType& operator=(const LoadVersionRes__errorCodesType& other_value);
+  boolean operator==(const LoadVersionRes__errorCodesType& other_value) const;
+  inline boolean operator!=(const LoadVersionRes__errorCodesType& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& fileSystemErrorOrPoolDataCorruption()
+    {return field_fileSystemErrorOrPoolDataCorruption;}
+  inline const BOOLEAN& fileSystemErrorOrPoolDataCorruption() const
+    {return field_fileSystemErrorOrPoolDataCorruption;}
+  inline BOOLEAN& versionLabelIsNotCorrectOrVersionLabeUnknown()
+    {return field_versionLabelIsNotCorrectOrVersionLabeUnknown;}
+  inline const BOOLEAN& versionLabelIsNotCorrectOrVersionLabeUnknown() const
+    {return field_versionLabelIsNotCorrectOrVersionLabeUnknown;}
+  inline BOOLEAN& insufficientMemoryAvailable()
+    {return field_insufficientMemoryAvailable;}
+  inline const BOOLEAN& insufficientMemoryAvailable() const
+    {return field_insufficientMemoryAvailable;}
+  inline BOOLEAN& anyOtherError()
+    {return field_anyOtherError;}
+  inline const BOOLEAN& anyOtherError() const
+    {return field_anyOtherError;}
+  inline BOOLEAN& reserved5()
+    {return field_reserved5;}
+  inline const BOOLEAN& reserved5() const
+    {return field_reserved5;}
+  inline BOOLEAN& reserved6()
+    {return field_reserved6;}
+  inline const BOOLEAN& reserved6() const
+    {return field_reserved6;}
+  inline BOOLEAN& reserved7()
+    {return field_reserved7;}
+  inline const BOOLEAN& reserved7() const
+    {return field_reserved7;}
+  inline BOOLEAN& reserved8()
+    {return field_reserved8;}
+  inline const BOOLEAN& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class LoadVersionRes__errorCodesType_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+LoadVersionRes__errorCodesType_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const LoadVersionRes__errorCodesType& other_value);
+void copy_template(const LoadVersionRes__errorCodesType_template& other_value);
+
+public:
+LoadVersionRes__errorCodesType_template();
+LoadVersionRes__errorCodesType_template(template_sel other_value);
+LoadVersionRes__errorCodesType_template(const LoadVersionRes__errorCodesType& other_value);
+LoadVersionRes__errorCodesType_template(const OPTIONAL<LoadVersionRes__errorCodesType>& other_value);
+LoadVersionRes__errorCodesType_template(const LoadVersionRes__errorCodesType_template& other_value);
+~LoadVersionRes__errorCodesType_template();
+LoadVersionRes__errorCodesType_template& operator=(template_sel other_value);
+LoadVersionRes__errorCodesType_template& operator=(const LoadVersionRes__errorCodesType& other_value);
+LoadVersionRes__errorCodesType_template& operator=(const OPTIONAL<LoadVersionRes__errorCodesType>& other_value);
+LoadVersionRes__errorCodesType_template& operator=(const LoadVersionRes__errorCodesType_template& other_value);
+boolean match(const LoadVersionRes__errorCodesType& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+LoadVersionRes__errorCodesType valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+LoadVersionRes__errorCodesType_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& fileSystemErrorOrPoolDataCorruption();
+const BOOLEAN_template& fileSystemErrorOrPoolDataCorruption() const;
+BOOLEAN_template& versionLabelIsNotCorrectOrVersionLabeUnknown();
+const BOOLEAN_template& versionLabelIsNotCorrectOrVersionLabeUnknown() const;
+BOOLEAN_template& insufficientMemoryAvailable();
+const BOOLEAN_template& insufficientMemoryAvailable() const;
+BOOLEAN_template& anyOtherError();
+const BOOLEAN_template& anyOtherError() const;
+BOOLEAN_template& reserved5();
+const BOOLEAN_template& reserved5() const;
+BOOLEAN_template& reserved6();
+const BOOLEAN_template& reserved6() const;
+BOOLEAN_template& reserved7();
+const BOOLEAN_template& reserved7() const;
+BOOLEAN_template& reserved8();
+const BOOLEAN_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const LoadVersionRes__errorCodesType& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class LoadVersionRes : public Base_Type {
+  INTEGER field_vtfunction;
+  OCTETSTRING field_reserved2;
+  OCTETSTRING field_reserved3;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  LoadVersionRes__errorCodesType field_errorCodes;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  LoadVersionRes();
+  LoadVersionRes(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_reserved2,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const LoadVersionRes__errorCodesType& par_errorCodes,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  LoadVersionRes(const LoadVersionRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  LoadVersionRes& operator=(const LoadVersionRes& other_value);
+  boolean operator==(const LoadVersionRes& other_value) const;
+  inline boolean operator!=(const LoadVersionRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline OCTETSTRING& reserved2()
+    {return field_reserved2;}
+  inline const OCTETSTRING& reserved2() const
+    {return field_reserved2;}
+  inline OCTETSTRING& reserved3()
+    {return field_reserved3;}
+  inline const OCTETSTRING& reserved3() const
+    {return field_reserved3;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline LoadVersionRes__errorCodesType& errorCodes()
+    {return field_errorCodes;}
+  inline const LoadVersionRes__errorCodesType& errorCodes() const
+    {return field_errorCodes;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class LoadVersionRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+LoadVersionRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const LoadVersionRes& other_value);
+void copy_template(const LoadVersionRes_template& other_value);
+
+public:
+LoadVersionRes_template();
+LoadVersionRes_template(template_sel other_value);
+LoadVersionRes_template(const LoadVersionRes& other_value);
+LoadVersionRes_template(const OPTIONAL<LoadVersionRes>& other_value);
+LoadVersionRes_template(const LoadVersionRes_template& other_value);
+~LoadVersionRes_template();
+LoadVersionRes_template& operator=(template_sel other_value);
+LoadVersionRes_template& operator=(const LoadVersionRes& other_value);
+LoadVersionRes_template& operator=(const OPTIONAL<LoadVersionRes>& other_value);
+LoadVersionRes_template& operator=(const LoadVersionRes_template& other_value);
+boolean match(const LoadVersionRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+LoadVersionRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+LoadVersionRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+OCTETSTRING_template& reserved2();
+const OCTETSTRING_template& reserved2() const;
+OCTETSTRING_template& reserved3();
+const OCTETSTRING_template& reserved3() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+LoadVersionRes__errorCodesType_template& errorCodes();
+const LoadVersionRes__errorCodesType_template& errorCodes() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const LoadVersionRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class DeleteVersionRes__errorCodesType : public Base_Type {
+  BOOLEAN field_reserved0;
+  BOOLEAN field_versionLabelIsNotCorrectOrVersionLabelUnknown;
+  BOOLEAN field_reserved2;
+  BOOLEAN field_anyOtherError;
+  BOOLEAN field_reserved4;
+  BOOLEAN field_reserved5;
+  BOOLEAN field_reserved6;
+  BOOLEAN field_reserved7;
+public:
+  DeleteVersionRes__errorCodesType();
+  DeleteVersionRes__errorCodesType(const BOOLEAN& par_reserved0,
+    const BOOLEAN& par_versionLabelIsNotCorrectOrVersionLabelUnknown,
+    const BOOLEAN& par_reserved2,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved4,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7);
+  DeleteVersionRes__errorCodesType(const DeleteVersionRes__errorCodesType& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  DeleteVersionRes__errorCodesType& operator=(const DeleteVersionRes__errorCodesType& other_value);
+  boolean operator==(const DeleteVersionRes__errorCodesType& other_value) const;
+  inline boolean operator!=(const DeleteVersionRes__errorCodesType& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& reserved0()
+    {return field_reserved0;}
+  inline const BOOLEAN& reserved0() const
+    {return field_reserved0;}
+  inline BOOLEAN& versionLabelIsNotCorrectOrVersionLabelUnknown()
+    {return field_versionLabelIsNotCorrectOrVersionLabelUnknown;}
+  inline const BOOLEAN& versionLabelIsNotCorrectOrVersionLabelUnknown() const
+    {return field_versionLabelIsNotCorrectOrVersionLabelUnknown;}
+  inline BOOLEAN& reserved2()
+    {return field_reserved2;}
+  inline const BOOLEAN& reserved2() const
+    {return field_reserved2;}
+  inline BOOLEAN& anyOtherError()
+    {return field_anyOtherError;}
+  inline const BOOLEAN& anyOtherError() const
+    {return field_anyOtherError;}
+  inline BOOLEAN& reserved4()
+    {return field_reserved4;}
+  inline const BOOLEAN& reserved4() const
+    {return field_reserved4;}
+  inline BOOLEAN& reserved5()
+    {return field_reserved5;}
+  inline const BOOLEAN& reserved5() const
+    {return field_reserved5;}
+  inline BOOLEAN& reserved6()
+    {return field_reserved6;}
+  inline const BOOLEAN& reserved6() const
+    {return field_reserved6;}
+  inline BOOLEAN& reserved7()
+    {return field_reserved7;}
+  inline const BOOLEAN& reserved7() const
+    {return field_reserved7;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class DeleteVersionRes__errorCodesType_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+DeleteVersionRes__errorCodesType_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const DeleteVersionRes__errorCodesType& other_value);
+void copy_template(const DeleteVersionRes__errorCodesType_template& other_value);
+
+public:
+DeleteVersionRes__errorCodesType_template();
+DeleteVersionRes__errorCodesType_template(template_sel other_value);
+DeleteVersionRes__errorCodesType_template(const DeleteVersionRes__errorCodesType& other_value);
+DeleteVersionRes__errorCodesType_template(const OPTIONAL<DeleteVersionRes__errorCodesType>& other_value);
+DeleteVersionRes__errorCodesType_template(const DeleteVersionRes__errorCodesType_template& other_value);
+~DeleteVersionRes__errorCodesType_template();
+DeleteVersionRes__errorCodesType_template& operator=(template_sel other_value);
+DeleteVersionRes__errorCodesType_template& operator=(const DeleteVersionRes__errorCodesType& other_value);
+DeleteVersionRes__errorCodesType_template& operator=(const OPTIONAL<DeleteVersionRes__errorCodesType>& other_value);
+DeleteVersionRes__errorCodesType_template& operator=(const DeleteVersionRes__errorCodesType_template& other_value);
+boolean match(const DeleteVersionRes__errorCodesType& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+DeleteVersionRes__errorCodesType valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+DeleteVersionRes__errorCodesType_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& reserved0();
+const BOOLEAN_template& reserved0() const;
+BOOLEAN_template& versionLabelIsNotCorrectOrVersionLabelUnknown();
+const BOOLEAN_template& versionLabelIsNotCorrectOrVersionLabelUnknown() const;
+BOOLEAN_template& reserved2();
+const BOOLEAN_template& reserved2() const;
+BOOLEAN_template& anyOtherError();
+const BOOLEAN_template& anyOtherError() const;
+BOOLEAN_template& reserved4();
+const BOOLEAN_template& reserved4() const;
+BOOLEAN_template& reserved5();
+const BOOLEAN_template& reserved5() const;
+BOOLEAN_template& reserved6();
+const BOOLEAN_template& reserved6() const;
+BOOLEAN_template& reserved7();
+const BOOLEAN_template& reserved7() const;
+int size_of() const;
+void log() const;
+void log_match(const DeleteVersionRes__errorCodesType& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class DeleteVersionRes : public Base_Type {
+  INTEGER field_vtfunction;
+  OCTETSTRING field_reserved2;
+  OCTETSTRING field_reserved3;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  DeleteVersionRes__errorCodesType field_errorCodes;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  DeleteVersionRes();
+  DeleteVersionRes(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_reserved2,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const DeleteVersionRes__errorCodesType& par_errorCodes,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  DeleteVersionRes(const DeleteVersionRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  DeleteVersionRes& operator=(const DeleteVersionRes& other_value);
+  boolean operator==(const DeleteVersionRes& other_value) const;
+  inline boolean operator!=(const DeleteVersionRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline OCTETSTRING& reserved2()
+    {return field_reserved2;}
+  inline const OCTETSTRING& reserved2() const
+    {return field_reserved2;}
+  inline OCTETSTRING& reserved3()
+    {return field_reserved3;}
+  inline const OCTETSTRING& reserved3() const
+    {return field_reserved3;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline DeleteVersionRes__errorCodesType& errorCodes()
+    {return field_errorCodes;}
+  inline const DeleteVersionRes__errorCodesType& errorCodes() const
+    {return field_errorCodes;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class DeleteVersionRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+DeleteVersionRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const DeleteVersionRes& other_value);
+void copy_template(const DeleteVersionRes_template& other_value);
+
+public:
+DeleteVersionRes_template();
+DeleteVersionRes_template(template_sel other_value);
+DeleteVersionRes_template(const DeleteVersionRes& other_value);
+DeleteVersionRes_template(const OPTIONAL<DeleteVersionRes>& other_value);
+DeleteVersionRes_template(const DeleteVersionRes_template& other_value);
+~DeleteVersionRes_template();
+DeleteVersionRes_template& operator=(template_sel other_value);
+DeleteVersionRes_template& operator=(const DeleteVersionRes& other_value);
+DeleteVersionRes_template& operator=(const OPTIONAL<DeleteVersionRes>& other_value);
+DeleteVersionRes_template& operator=(const DeleteVersionRes_template& other_value);
+boolean match(const DeleteVersionRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+DeleteVersionRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+DeleteVersionRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+OCTETSTRING_template& reserved2();
+const OCTETSTRING_template& reserved2() const;
+OCTETSTRING_template& reserved3();
+const OCTETSTRING_template& reserved3() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+DeleteVersionRes__errorCodesType_template& errorCodes();
+const DeleteVersionRes__errorCodesType_template& errorCodes() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const DeleteVersionRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class DeleteVersionReq : public Base_Type {
+  INTEGER field_vtfunction;
+  CHARSTRING field_versionLabel;
+public:
+  DeleteVersionReq();
+  DeleteVersionReq(const INTEGER& par_vtfunction,
+    const CHARSTRING& par_versionLabel);
+  DeleteVersionReq(const DeleteVersionReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  DeleteVersionReq& operator=(const DeleteVersionReq& other_value);
+  boolean operator==(const DeleteVersionReq& other_value) const;
+  inline boolean operator!=(const DeleteVersionReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline CHARSTRING& versionLabel()
+    {return field_versionLabel;}
+  inline const CHARSTRING& versionLabel() const
+    {return field_versionLabel;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class DeleteVersionReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+DeleteVersionReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const DeleteVersionReq& other_value);
+void copy_template(const DeleteVersionReq_template& other_value);
+
+public:
+DeleteVersionReq_template();
+DeleteVersionReq_template(template_sel other_value);
+DeleteVersionReq_template(const DeleteVersionReq& other_value);
+DeleteVersionReq_template(const OPTIONAL<DeleteVersionReq>& other_value);
+DeleteVersionReq_template(const DeleteVersionReq_template& other_value);
+~DeleteVersionReq_template();
+DeleteVersionReq_template& operator=(template_sel other_value);
+DeleteVersionReq_template& operator=(const DeleteVersionReq& other_value);
+DeleteVersionReq_template& operator=(const OPTIONAL<DeleteVersionReq>& other_value);
+DeleteVersionReq_template& operator=(const DeleteVersionReq_template& other_value);
+boolean match(const DeleteVersionReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+DeleteVersionReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+DeleteVersionReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+CHARSTRING_template& versionLabel();
+const CHARSTRING_template& versionLabel() const;
+int size_of() const;
+void log() const;
+void log_match(const DeleteVersionReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ExtendedGetVersionsRes : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_numberOfVersionStrings;
+  OCTETSTRING field_versionLabels;
+  OPTIONAL<OCTETSTRING> field_padding;
+public:
+  ExtendedGetVersionsRes();
+  ExtendedGetVersionsRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_numberOfVersionStrings,
+    const OCTETSTRING& par_versionLabels,
+    const OPTIONAL<OCTETSTRING>& par_padding);
+  ExtendedGetVersionsRes(const ExtendedGetVersionsRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ExtendedGetVersionsRes& operator=(const ExtendedGetVersionsRes& other_value);
+  boolean operator==(const ExtendedGetVersionsRes& other_value) const;
+  inline boolean operator!=(const ExtendedGetVersionsRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& numberOfVersionStrings()
+    {return field_numberOfVersionStrings;}
+  inline const INTEGER& numberOfVersionStrings() const
+    {return field_numberOfVersionStrings;}
+  inline OCTETSTRING& versionLabels()
+    {return field_versionLabels;}
+  inline const OCTETSTRING& versionLabels() const
+    {return field_versionLabels;}
+  inline OPTIONAL<OCTETSTRING>& padding()
+    {return field_padding;}
+  inline const OPTIONAL<OCTETSTRING>& padding() const
+    {return field_padding;}
+  int size_of() const;
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ExtendedGetVersionsRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ExtendedGetVersionsRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ExtendedGetVersionsRes& other_value);
+void copy_template(const ExtendedGetVersionsRes_template& other_value);
+
+public:
+ExtendedGetVersionsRes_template();
+ExtendedGetVersionsRes_template(template_sel other_value);
+ExtendedGetVersionsRes_template(const ExtendedGetVersionsRes& other_value);
+ExtendedGetVersionsRes_template(const OPTIONAL<ExtendedGetVersionsRes>& other_value);
+ExtendedGetVersionsRes_template(const ExtendedGetVersionsRes_template& other_value);
+~ExtendedGetVersionsRes_template();
+ExtendedGetVersionsRes_template& operator=(template_sel other_value);
+ExtendedGetVersionsRes_template& operator=(const ExtendedGetVersionsRes& other_value);
+ExtendedGetVersionsRes_template& operator=(const OPTIONAL<ExtendedGetVersionsRes>& other_value);
+ExtendedGetVersionsRes_template& operator=(const ExtendedGetVersionsRes_template& other_value);
+boolean match(const ExtendedGetVersionsRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ExtendedGetVersionsRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ExtendedGetVersionsRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& numberOfVersionStrings();
+const INTEGER_template& numberOfVersionStrings() const;
+OCTETSTRING_template& versionLabels();
+const OCTETSTRING_template& versionLabels() const;
+OCTETSTRING_template& padding();
+const OCTETSTRING_template& padding() const;
+int size_of() const;
+void log() const;
+void log_match(const ExtendedGetVersionsRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ExtendedGetVersionsReq : public Base_Type {
+  INTEGER field_vtfunction;
+  OCTETSTRING field_reserved2;
+  OCTETSTRING field_reserved3;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  ExtendedGetVersionsReq();
+  ExtendedGetVersionsReq(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_reserved2,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  ExtendedGetVersionsReq(const ExtendedGetVersionsReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ExtendedGetVersionsReq& operator=(const ExtendedGetVersionsReq& other_value);
+  boolean operator==(const ExtendedGetVersionsReq& other_value) const;
+  inline boolean operator!=(const ExtendedGetVersionsReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline OCTETSTRING& reserved2()
+    {return field_reserved2;}
+  inline const OCTETSTRING& reserved2() const
+    {return field_reserved2;}
+  inline OCTETSTRING& reserved3()
+    {return field_reserved3;}
+  inline const OCTETSTRING& reserved3() const
+    {return field_reserved3;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ExtendedGetVersionsReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ExtendedGetVersionsReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ExtendedGetVersionsReq& other_value);
+void copy_template(const ExtendedGetVersionsReq_template& other_value);
+
+public:
+ExtendedGetVersionsReq_template();
+ExtendedGetVersionsReq_template(template_sel other_value);
+ExtendedGetVersionsReq_template(const ExtendedGetVersionsReq& other_value);
+ExtendedGetVersionsReq_template(const OPTIONAL<ExtendedGetVersionsReq>& other_value);
+ExtendedGetVersionsReq_template(const ExtendedGetVersionsReq_template& other_value);
+~ExtendedGetVersionsReq_template();
+ExtendedGetVersionsReq_template& operator=(template_sel other_value);
+ExtendedGetVersionsReq_template& operator=(const ExtendedGetVersionsReq& other_value);
+ExtendedGetVersionsReq_template& operator=(const OPTIONAL<ExtendedGetVersionsReq>& other_value);
+ExtendedGetVersionsReq_template& operator=(const ExtendedGetVersionsReq_template& other_value);
+boolean match(const ExtendedGetVersionsReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ExtendedGetVersionsReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ExtendedGetVersionsReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+OCTETSTRING_template& reserved2();
+const OCTETSTRING_template& reserved2() const;
+OCTETSTRING_template& reserved3();
+const OCTETSTRING_template& reserved3() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const ExtendedGetVersionsReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ExtendedStoreVersionRes__errorCodesType : public Base_Type {
+  BOOLEAN field_reserved0;
+  BOOLEAN field_versionLabelIsNotCorrect;
+  BOOLEAN field_insufficientMemoryAvailable;
+  BOOLEAN field_anyOtherError;
+  BOOLEAN field_reserved4;
+  BOOLEAN field_reserved5;
+  BOOLEAN field_reserved6;
+  BOOLEAN field_reserved7;
+public:
+  ExtendedStoreVersionRes__errorCodesType();
+  ExtendedStoreVersionRes__errorCodesType(const BOOLEAN& par_reserved0,
+    const BOOLEAN& par_versionLabelIsNotCorrect,
+    const BOOLEAN& par_insufficientMemoryAvailable,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved4,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7);
+  ExtendedStoreVersionRes__errorCodesType(const ExtendedStoreVersionRes__errorCodesType& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ExtendedStoreVersionRes__errorCodesType& operator=(const ExtendedStoreVersionRes__errorCodesType& other_value);
+  boolean operator==(const ExtendedStoreVersionRes__errorCodesType& other_value) const;
+  inline boolean operator!=(const ExtendedStoreVersionRes__errorCodesType& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& reserved0()
+    {return field_reserved0;}
+  inline const BOOLEAN& reserved0() const
+    {return field_reserved0;}
+  inline BOOLEAN& versionLabelIsNotCorrect()
+    {return field_versionLabelIsNotCorrect;}
+  inline const BOOLEAN& versionLabelIsNotCorrect() const
+    {return field_versionLabelIsNotCorrect;}
+  inline BOOLEAN& insufficientMemoryAvailable()
+    {return field_insufficientMemoryAvailable;}
+  inline const BOOLEAN& insufficientMemoryAvailable() const
+    {return field_insufficientMemoryAvailable;}
+  inline BOOLEAN& anyOtherError()
+    {return field_anyOtherError;}
+  inline const BOOLEAN& anyOtherError() const
+    {return field_anyOtherError;}
+  inline BOOLEAN& reserved4()
+    {return field_reserved4;}
+  inline const BOOLEAN& reserved4() const
+    {return field_reserved4;}
+  inline BOOLEAN& reserved5()
+    {return field_reserved5;}
+  inline const BOOLEAN& reserved5() const
+    {return field_reserved5;}
+  inline BOOLEAN& reserved6()
+    {return field_reserved6;}
+  inline const BOOLEAN& reserved6() const
+    {return field_reserved6;}
+  inline BOOLEAN& reserved7()
+    {return field_reserved7;}
+  inline const BOOLEAN& reserved7() const
+    {return field_reserved7;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ExtendedStoreVersionRes__errorCodesType_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ExtendedStoreVersionRes__errorCodesType_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ExtendedStoreVersionRes__errorCodesType& other_value);
+void copy_template(const ExtendedStoreVersionRes__errorCodesType_template& other_value);
+
+public:
+ExtendedStoreVersionRes__errorCodesType_template();
+ExtendedStoreVersionRes__errorCodesType_template(template_sel other_value);
+ExtendedStoreVersionRes__errorCodesType_template(const ExtendedStoreVersionRes__errorCodesType& other_value);
+ExtendedStoreVersionRes__errorCodesType_template(const OPTIONAL<ExtendedStoreVersionRes__errorCodesType>& other_value);
+ExtendedStoreVersionRes__errorCodesType_template(const ExtendedStoreVersionRes__errorCodesType_template& other_value);
+~ExtendedStoreVersionRes__errorCodesType_template();
+ExtendedStoreVersionRes__errorCodesType_template& operator=(template_sel other_value);
+ExtendedStoreVersionRes__errorCodesType_template& operator=(const ExtendedStoreVersionRes__errorCodesType& other_value);
+ExtendedStoreVersionRes__errorCodesType_template& operator=(const OPTIONAL<ExtendedStoreVersionRes__errorCodesType>& other_value);
+ExtendedStoreVersionRes__errorCodesType_template& operator=(const ExtendedStoreVersionRes__errorCodesType_template& other_value);
+boolean match(const ExtendedStoreVersionRes__errorCodesType& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ExtendedStoreVersionRes__errorCodesType valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ExtendedStoreVersionRes__errorCodesType_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& reserved0();
+const BOOLEAN_template& reserved0() const;
+BOOLEAN_template& versionLabelIsNotCorrect();
+const BOOLEAN_template& versionLabelIsNotCorrect() const;
+BOOLEAN_template& insufficientMemoryAvailable();
+const BOOLEAN_template& insufficientMemoryAvailable() const;
+BOOLEAN_template& anyOtherError();
+const BOOLEAN_template& anyOtherError() const;
+BOOLEAN_template& reserved4();
+const BOOLEAN_template& reserved4() const;
+BOOLEAN_template& reserved5();
+const BOOLEAN_template& reserved5() const;
+BOOLEAN_template& reserved6();
+const BOOLEAN_template& reserved6() const;
+BOOLEAN_template& reserved7();
+const BOOLEAN_template& reserved7() const;
+int size_of() const;
+void log() const;
+void log_match(const ExtendedStoreVersionRes__errorCodesType& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ExtendedStoreVersionRes : public Base_Type {
+  INTEGER field_vtfunction;
+  OCTETSTRING field_reserved2;
+  OCTETSTRING field_reserved3;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  ExtendedStoreVersionRes__errorCodesType field_errorCodes;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  ExtendedStoreVersionRes();
+  ExtendedStoreVersionRes(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_reserved2,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const ExtendedStoreVersionRes__errorCodesType& par_errorCodes,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  ExtendedStoreVersionRes(const ExtendedStoreVersionRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ExtendedStoreVersionRes& operator=(const ExtendedStoreVersionRes& other_value);
+  boolean operator==(const ExtendedStoreVersionRes& other_value) const;
+  inline boolean operator!=(const ExtendedStoreVersionRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline OCTETSTRING& reserved2()
+    {return field_reserved2;}
+  inline const OCTETSTRING& reserved2() const
+    {return field_reserved2;}
+  inline OCTETSTRING& reserved3()
+    {return field_reserved3;}
+  inline const OCTETSTRING& reserved3() const
+    {return field_reserved3;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline ExtendedStoreVersionRes__errorCodesType& errorCodes()
+    {return field_errorCodes;}
+  inline const ExtendedStoreVersionRes__errorCodesType& errorCodes() const
+    {return field_errorCodes;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ExtendedStoreVersionRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ExtendedStoreVersionRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ExtendedStoreVersionRes& other_value);
+void copy_template(const ExtendedStoreVersionRes_template& other_value);
+
+public:
+ExtendedStoreVersionRes_template();
+ExtendedStoreVersionRes_template(template_sel other_value);
+ExtendedStoreVersionRes_template(const ExtendedStoreVersionRes& other_value);
+ExtendedStoreVersionRes_template(const OPTIONAL<ExtendedStoreVersionRes>& other_value);
+ExtendedStoreVersionRes_template(const ExtendedStoreVersionRes_template& other_value);
+~ExtendedStoreVersionRes_template();
+ExtendedStoreVersionRes_template& operator=(template_sel other_value);
+ExtendedStoreVersionRes_template& operator=(const ExtendedStoreVersionRes& other_value);
+ExtendedStoreVersionRes_template& operator=(const OPTIONAL<ExtendedStoreVersionRes>& other_value);
+ExtendedStoreVersionRes_template& operator=(const ExtendedStoreVersionRes_template& other_value);
+boolean match(const ExtendedStoreVersionRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ExtendedStoreVersionRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ExtendedStoreVersionRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+OCTETSTRING_template& reserved2();
+const OCTETSTRING_template& reserved2() const;
+OCTETSTRING_template& reserved3();
+const OCTETSTRING_template& reserved3() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+ExtendedStoreVersionRes__errorCodesType_template& errorCodes();
+const ExtendedStoreVersionRes__errorCodesType_template& errorCodes() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const ExtendedStoreVersionRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ExtendedStoreVersionReq : public Base_Type {
+  INTEGER field_vtfunction;
+  OCTETSTRING field_versionLabel;
+public:
+  ExtendedStoreVersionReq();
+  ExtendedStoreVersionReq(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_versionLabel);
+  ExtendedStoreVersionReq(const ExtendedStoreVersionReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ExtendedStoreVersionReq& operator=(const ExtendedStoreVersionReq& other_value);
+  boolean operator==(const ExtendedStoreVersionReq& other_value) const;
+  inline boolean operator!=(const ExtendedStoreVersionReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline OCTETSTRING& versionLabel()
+    {return field_versionLabel;}
+  inline const OCTETSTRING& versionLabel() const
+    {return field_versionLabel;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ExtendedStoreVersionReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ExtendedStoreVersionReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ExtendedStoreVersionReq& other_value);
+void copy_template(const ExtendedStoreVersionReq_template& other_value);
+
+public:
+ExtendedStoreVersionReq_template();
+ExtendedStoreVersionReq_template(template_sel other_value);
+ExtendedStoreVersionReq_template(const ExtendedStoreVersionReq& other_value);
+ExtendedStoreVersionReq_template(const OPTIONAL<ExtendedStoreVersionReq>& other_value);
+ExtendedStoreVersionReq_template(const ExtendedStoreVersionReq_template& other_value);
+~ExtendedStoreVersionReq_template();
+ExtendedStoreVersionReq_template& operator=(template_sel other_value);
+ExtendedStoreVersionReq_template& operator=(const ExtendedStoreVersionReq& other_value);
+ExtendedStoreVersionReq_template& operator=(const OPTIONAL<ExtendedStoreVersionReq>& other_value);
+ExtendedStoreVersionReq_template& operator=(const ExtendedStoreVersionReq_template& other_value);
+boolean match(const ExtendedStoreVersionReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ExtendedStoreVersionReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ExtendedStoreVersionReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+OCTETSTRING_template& versionLabel();
+const OCTETSTRING_template& versionLabel() const;
+int size_of() const;
+void log() const;
+void log_match(const ExtendedStoreVersionReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ExtendedLoadVersionRes__errorCodesType : public Base_Type {
+  BOOLEAN field_fileSystemErrorOrPoolDataCorruption;
+  BOOLEAN field_versionLabelIsNotCorrectOrVersionLabelUnknown;
+  BOOLEAN field_insufficientMemoryAvailable;
+  BOOLEAN field_anyOtherError;
+  BOOLEAN field_reserved4;
+  BOOLEAN field_reserved5;
+  BOOLEAN field_reserved6;
+  BOOLEAN field_reserved7;
+public:
+  ExtendedLoadVersionRes__errorCodesType();
+  ExtendedLoadVersionRes__errorCodesType(const BOOLEAN& par_fileSystemErrorOrPoolDataCorruption,
+    const BOOLEAN& par_versionLabelIsNotCorrectOrVersionLabelUnknown,
+    const BOOLEAN& par_insufficientMemoryAvailable,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved4,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7);
+  ExtendedLoadVersionRes__errorCodesType(const ExtendedLoadVersionRes__errorCodesType& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ExtendedLoadVersionRes__errorCodesType& operator=(const ExtendedLoadVersionRes__errorCodesType& other_value);
+  boolean operator==(const ExtendedLoadVersionRes__errorCodesType& other_value) const;
+  inline boolean operator!=(const ExtendedLoadVersionRes__errorCodesType& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& fileSystemErrorOrPoolDataCorruption()
+    {return field_fileSystemErrorOrPoolDataCorruption;}
+  inline const BOOLEAN& fileSystemErrorOrPoolDataCorruption() const
+    {return field_fileSystemErrorOrPoolDataCorruption;}
+  inline BOOLEAN& versionLabelIsNotCorrectOrVersionLabelUnknown()
+    {return field_versionLabelIsNotCorrectOrVersionLabelUnknown;}
+  inline const BOOLEAN& versionLabelIsNotCorrectOrVersionLabelUnknown() const
+    {return field_versionLabelIsNotCorrectOrVersionLabelUnknown;}
+  inline BOOLEAN& insufficientMemoryAvailable()
+    {return field_insufficientMemoryAvailable;}
+  inline const BOOLEAN& insufficientMemoryAvailable() const
+    {return field_insufficientMemoryAvailable;}
+  inline BOOLEAN& anyOtherError()
+    {return field_anyOtherError;}
+  inline const BOOLEAN& anyOtherError() const
+    {return field_anyOtherError;}
+  inline BOOLEAN& reserved4()
+    {return field_reserved4;}
+  inline const BOOLEAN& reserved4() const
+    {return field_reserved4;}
+  inline BOOLEAN& reserved5()
+    {return field_reserved5;}
+  inline const BOOLEAN& reserved5() const
+    {return field_reserved5;}
+  inline BOOLEAN& reserved6()
+    {return field_reserved6;}
+  inline const BOOLEAN& reserved6() const
+    {return field_reserved6;}
+  inline BOOLEAN& reserved7()
+    {return field_reserved7;}
+  inline const BOOLEAN& reserved7() const
+    {return field_reserved7;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ExtendedLoadVersionRes__errorCodesType_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ExtendedLoadVersionRes__errorCodesType_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ExtendedLoadVersionRes__errorCodesType& other_value);
+void copy_template(const ExtendedLoadVersionRes__errorCodesType_template& other_value);
+
+public:
+ExtendedLoadVersionRes__errorCodesType_template();
+ExtendedLoadVersionRes__errorCodesType_template(template_sel other_value);
+ExtendedLoadVersionRes__errorCodesType_template(const ExtendedLoadVersionRes__errorCodesType& other_value);
+ExtendedLoadVersionRes__errorCodesType_template(const OPTIONAL<ExtendedLoadVersionRes__errorCodesType>& other_value);
+ExtendedLoadVersionRes__errorCodesType_template(const ExtendedLoadVersionRes__errorCodesType_template& other_value);
+~ExtendedLoadVersionRes__errorCodesType_template();
+ExtendedLoadVersionRes__errorCodesType_template& operator=(template_sel other_value);
+ExtendedLoadVersionRes__errorCodesType_template& operator=(const ExtendedLoadVersionRes__errorCodesType& other_value);
+ExtendedLoadVersionRes__errorCodesType_template& operator=(const OPTIONAL<ExtendedLoadVersionRes__errorCodesType>& other_value);
+ExtendedLoadVersionRes__errorCodesType_template& operator=(const ExtendedLoadVersionRes__errorCodesType_template& other_value);
+boolean match(const ExtendedLoadVersionRes__errorCodesType& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ExtendedLoadVersionRes__errorCodesType valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ExtendedLoadVersionRes__errorCodesType_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& fileSystemErrorOrPoolDataCorruption();
+const BOOLEAN_template& fileSystemErrorOrPoolDataCorruption() const;
+BOOLEAN_template& versionLabelIsNotCorrectOrVersionLabelUnknown();
+const BOOLEAN_template& versionLabelIsNotCorrectOrVersionLabelUnknown() const;
+BOOLEAN_template& insufficientMemoryAvailable();
+const BOOLEAN_template& insufficientMemoryAvailable() const;
+BOOLEAN_template& anyOtherError();
+const BOOLEAN_template& anyOtherError() const;
+BOOLEAN_template& reserved4();
+const BOOLEAN_template& reserved4() const;
+BOOLEAN_template& reserved5();
+const BOOLEAN_template& reserved5() const;
+BOOLEAN_template& reserved6();
+const BOOLEAN_template& reserved6() const;
+BOOLEAN_template& reserved7();
+const BOOLEAN_template& reserved7() const;
+int size_of() const;
+void log() const;
+void log_match(const ExtendedLoadVersionRes__errorCodesType& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ExtendedLoadVersionRes : public Base_Type {
+  INTEGER field_vtfunction;
+  OCTETSTRING field_reserved2;
+  OCTETSTRING field_reserved3;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  ExtendedLoadVersionRes__errorCodesType field_errorCodes;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  ExtendedLoadVersionRes();
+  ExtendedLoadVersionRes(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_reserved2,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const ExtendedLoadVersionRes__errorCodesType& par_errorCodes,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  ExtendedLoadVersionRes(const ExtendedLoadVersionRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ExtendedLoadVersionRes& operator=(const ExtendedLoadVersionRes& other_value);
+  boolean operator==(const ExtendedLoadVersionRes& other_value) const;
+  inline boolean operator!=(const ExtendedLoadVersionRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline OCTETSTRING& reserved2()
+    {return field_reserved2;}
+  inline const OCTETSTRING& reserved2() const
+    {return field_reserved2;}
+  inline OCTETSTRING& reserved3()
+    {return field_reserved3;}
+  inline const OCTETSTRING& reserved3() const
+    {return field_reserved3;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline ExtendedLoadVersionRes__errorCodesType& errorCodes()
+    {return field_errorCodes;}
+  inline const ExtendedLoadVersionRes__errorCodesType& errorCodes() const
+    {return field_errorCodes;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ExtendedLoadVersionRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ExtendedLoadVersionRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ExtendedLoadVersionRes& other_value);
+void copy_template(const ExtendedLoadVersionRes_template& other_value);
+
+public:
+ExtendedLoadVersionRes_template();
+ExtendedLoadVersionRes_template(template_sel other_value);
+ExtendedLoadVersionRes_template(const ExtendedLoadVersionRes& other_value);
+ExtendedLoadVersionRes_template(const OPTIONAL<ExtendedLoadVersionRes>& other_value);
+ExtendedLoadVersionRes_template(const ExtendedLoadVersionRes_template& other_value);
+~ExtendedLoadVersionRes_template();
+ExtendedLoadVersionRes_template& operator=(template_sel other_value);
+ExtendedLoadVersionRes_template& operator=(const ExtendedLoadVersionRes& other_value);
+ExtendedLoadVersionRes_template& operator=(const OPTIONAL<ExtendedLoadVersionRes>& other_value);
+ExtendedLoadVersionRes_template& operator=(const ExtendedLoadVersionRes_template& other_value);
+boolean match(const ExtendedLoadVersionRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ExtendedLoadVersionRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ExtendedLoadVersionRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+OCTETSTRING_template& reserved2();
+const OCTETSTRING_template& reserved2() const;
+OCTETSTRING_template& reserved3();
+const OCTETSTRING_template& reserved3() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+ExtendedLoadVersionRes__errorCodesType_template& errorCodes();
+const ExtendedLoadVersionRes__errorCodesType_template& errorCodes() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const ExtendedLoadVersionRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ExtendedLoadVersionReq : public Base_Type {
+  INTEGER field_vtfunction;
+  OCTETSTRING field_versionLabel;
+public:
+  ExtendedLoadVersionReq();
+  ExtendedLoadVersionReq(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_versionLabel);
+  ExtendedLoadVersionReq(const ExtendedLoadVersionReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ExtendedLoadVersionReq& operator=(const ExtendedLoadVersionReq& other_value);
+  boolean operator==(const ExtendedLoadVersionReq& other_value) const;
+  inline boolean operator!=(const ExtendedLoadVersionReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline OCTETSTRING& versionLabel()
+    {return field_versionLabel;}
+  inline const OCTETSTRING& versionLabel() const
+    {return field_versionLabel;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ExtendedLoadVersionReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ExtendedLoadVersionReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ExtendedLoadVersionReq& other_value);
+void copy_template(const ExtendedLoadVersionReq_template& other_value);
+
+public:
+ExtendedLoadVersionReq_template();
+ExtendedLoadVersionReq_template(template_sel other_value);
+ExtendedLoadVersionReq_template(const ExtendedLoadVersionReq& other_value);
+ExtendedLoadVersionReq_template(const OPTIONAL<ExtendedLoadVersionReq>& other_value);
+ExtendedLoadVersionReq_template(const ExtendedLoadVersionReq_template& other_value);
+~ExtendedLoadVersionReq_template();
+ExtendedLoadVersionReq_template& operator=(template_sel other_value);
+ExtendedLoadVersionReq_template& operator=(const ExtendedLoadVersionReq& other_value);
+ExtendedLoadVersionReq_template& operator=(const OPTIONAL<ExtendedLoadVersionReq>& other_value);
+ExtendedLoadVersionReq_template& operator=(const ExtendedLoadVersionReq_template& other_value);
+boolean match(const ExtendedLoadVersionReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ExtendedLoadVersionReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ExtendedLoadVersionReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+OCTETSTRING_template& versionLabel();
+const OCTETSTRING_template& versionLabel() const;
+int size_of() const;
+void log() const;
+void log_match(const ExtendedLoadVersionReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ExtendedDeleteVersionRes__errorCodesType : public Base_Type {
+  BOOLEAN field_reserved0;
+  BOOLEAN field_versionLabelIsNotCorrectOrVersionLabelUnknown;
+  BOOLEAN field_reserved2;
+  BOOLEAN field_anyOtherError;
+  BOOLEAN field_reserved4;
+  BOOLEAN field_reserved5;
+  BOOLEAN field_reserved6;
+  BOOLEAN field_reserved7;
+public:
+  ExtendedDeleteVersionRes__errorCodesType();
+  ExtendedDeleteVersionRes__errorCodesType(const BOOLEAN& par_reserved0,
+    const BOOLEAN& par_versionLabelIsNotCorrectOrVersionLabelUnknown,
+    const BOOLEAN& par_reserved2,
+    const BOOLEAN& par_anyOtherError,
+    const BOOLEAN& par_reserved4,
+    const BOOLEAN& par_reserved5,
+    const BOOLEAN& par_reserved6,
+    const BOOLEAN& par_reserved7);
+  ExtendedDeleteVersionRes__errorCodesType(const ExtendedDeleteVersionRes__errorCodesType& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ExtendedDeleteVersionRes__errorCodesType& operator=(const ExtendedDeleteVersionRes__errorCodesType& other_value);
+  boolean operator==(const ExtendedDeleteVersionRes__errorCodesType& other_value) const;
+  inline boolean operator!=(const ExtendedDeleteVersionRes__errorCodesType& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BOOLEAN& reserved0()
+    {return field_reserved0;}
+  inline const BOOLEAN& reserved0() const
+    {return field_reserved0;}
+  inline BOOLEAN& versionLabelIsNotCorrectOrVersionLabelUnknown()
+    {return field_versionLabelIsNotCorrectOrVersionLabelUnknown;}
+  inline const BOOLEAN& versionLabelIsNotCorrectOrVersionLabelUnknown() const
+    {return field_versionLabelIsNotCorrectOrVersionLabelUnknown;}
+  inline BOOLEAN& reserved2()
+    {return field_reserved2;}
+  inline const BOOLEAN& reserved2() const
+    {return field_reserved2;}
+  inline BOOLEAN& anyOtherError()
+    {return field_anyOtherError;}
+  inline const BOOLEAN& anyOtherError() const
+    {return field_anyOtherError;}
+  inline BOOLEAN& reserved4()
+    {return field_reserved4;}
+  inline const BOOLEAN& reserved4() const
+    {return field_reserved4;}
+  inline BOOLEAN& reserved5()
+    {return field_reserved5;}
+  inline const BOOLEAN& reserved5() const
+    {return field_reserved5;}
+  inline BOOLEAN& reserved6()
+    {return field_reserved6;}
+  inline const BOOLEAN& reserved6() const
+    {return field_reserved6;}
+  inline BOOLEAN& reserved7()
+    {return field_reserved7;}
+  inline const BOOLEAN& reserved7() const
+    {return field_reserved7;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ExtendedDeleteVersionRes__errorCodesType_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ExtendedDeleteVersionRes__errorCodesType_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ExtendedDeleteVersionRes__errorCodesType& other_value);
+void copy_template(const ExtendedDeleteVersionRes__errorCodesType_template& other_value);
+
+public:
+ExtendedDeleteVersionRes__errorCodesType_template();
+ExtendedDeleteVersionRes__errorCodesType_template(template_sel other_value);
+ExtendedDeleteVersionRes__errorCodesType_template(const ExtendedDeleteVersionRes__errorCodesType& other_value);
+ExtendedDeleteVersionRes__errorCodesType_template(const OPTIONAL<ExtendedDeleteVersionRes__errorCodesType>& other_value);
+ExtendedDeleteVersionRes__errorCodesType_template(const ExtendedDeleteVersionRes__errorCodesType_template& other_value);
+~ExtendedDeleteVersionRes__errorCodesType_template();
+ExtendedDeleteVersionRes__errorCodesType_template& operator=(template_sel other_value);
+ExtendedDeleteVersionRes__errorCodesType_template& operator=(const ExtendedDeleteVersionRes__errorCodesType& other_value);
+ExtendedDeleteVersionRes__errorCodesType_template& operator=(const OPTIONAL<ExtendedDeleteVersionRes__errorCodesType>& other_value);
+ExtendedDeleteVersionRes__errorCodesType_template& operator=(const ExtendedDeleteVersionRes__errorCodesType_template& other_value);
+boolean match(const ExtendedDeleteVersionRes__errorCodesType& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ExtendedDeleteVersionRes__errorCodesType valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ExtendedDeleteVersionRes__errorCodesType_template& list_item(unsigned int list_index) const;
+BOOLEAN_template& reserved0();
+const BOOLEAN_template& reserved0() const;
+BOOLEAN_template& versionLabelIsNotCorrectOrVersionLabelUnknown();
+const BOOLEAN_template& versionLabelIsNotCorrectOrVersionLabelUnknown() const;
+BOOLEAN_template& reserved2();
+const BOOLEAN_template& reserved2() const;
+BOOLEAN_template& anyOtherError();
+const BOOLEAN_template& anyOtherError() const;
+BOOLEAN_template& reserved4();
+const BOOLEAN_template& reserved4() const;
+BOOLEAN_template& reserved5();
+const BOOLEAN_template& reserved5() const;
+BOOLEAN_template& reserved6();
+const BOOLEAN_template& reserved6() const;
+BOOLEAN_template& reserved7();
+const BOOLEAN_template& reserved7() const;
+int size_of() const;
+void log() const;
+void log_match(const ExtendedDeleteVersionRes__errorCodesType& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ExtendedDeleteVersionRes : public Base_Type {
+  INTEGER field_vtfunction;
+  OCTETSTRING field_reserved2;
+  OCTETSTRING field_reserved3;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  ExtendedDeleteVersionRes__errorCodesType field_errorCodes;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  ExtendedDeleteVersionRes();
+  ExtendedDeleteVersionRes(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_reserved2,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const ExtendedDeleteVersionRes__errorCodesType& par_errorCodes,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  ExtendedDeleteVersionRes(const ExtendedDeleteVersionRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ExtendedDeleteVersionRes& operator=(const ExtendedDeleteVersionRes& other_value);
+  boolean operator==(const ExtendedDeleteVersionRes& other_value) const;
+  inline boolean operator!=(const ExtendedDeleteVersionRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline OCTETSTRING& reserved2()
+    {return field_reserved2;}
+  inline const OCTETSTRING& reserved2() const
+    {return field_reserved2;}
+  inline OCTETSTRING& reserved3()
+    {return field_reserved3;}
+  inline const OCTETSTRING& reserved3() const
+    {return field_reserved3;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline ExtendedDeleteVersionRes__errorCodesType& errorCodes()
+    {return field_errorCodes;}
+  inline const ExtendedDeleteVersionRes__errorCodesType& errorCodes() const
+    {return field_errorCodes;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ExtendedDeleteVersionRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ExtendedDeleteVersionRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ExtendedDeleteVersionRes& other_value);
+void copy_template(const ExtendedDeleteVersionRes_template& other_value);
+
+public:
+ExtendedDeleteVersionRes_template();
+ExtendedDeleteVersionRes_template(template_sel other_value);
+ExtendedDeleteVersionRes_template(const ExtendedDeleteVersionRes& other_value);
+ExtendedDeleteVersionRes_template(const OPTIONAL<ExtendedDeleteVersionRes>& other_value);
+ExtendedDeleteVersionRes_template(const ExtendedDeleteVersionRes_template& other_value);
+~ExtendedDeleteVersionRes_template();
+ExtendedDeleteVersionRes_template& operator=(template_sel other_value);
+ExtendedDeleteVersionRes_template& operator=(const ExtendedDeleteVersionRes& other_value);
+ExtendedDeleteVersionRes_template& operator=(const OPTIONAL<ExtendedDeleteVersionRes>& other_value);
+ExtendedDeleteVersionRes_template& operator=(const ExtendedDeleteVersionRes_template& other_value);
+boolean match(const ExtendedDeleteVersionRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ExtendedDeleteVersionRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ExtendedDeleteVersionRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+OCTETSTRING_template& reserved2();
+const OCTETSTRING_template& reserved2() const;
+OCTETSTRING_template& reserved3();
+const OCTETSTRING_template& reserved3() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+ExtendedDeleteVersionRes__errorCodesType_template& errorCodes();
+const ExtendedDeleteVersionRes__errorCodesType_template& errorCodes() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const ExtendedDeleteVersionRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ExtendedDeleteVersionReq : public Base_Type {
+  INTEGER field_vtfunction;
+  OCTETSTRING field_versionLabel;
+public:
+  ExtendedDeleteVersionReq();
+  ExtendedDeleteVersionReq(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_versionLabel);
+  ExtendedDeleteVersionReq(const ExtendedDeleteVersionReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ExtendedDeleteVersionReq& operator=(const ExtendedDeleteVersionReq& other_value);
+  boolean operator==(const ExtendedDeleteVersionReq& other_value) const;
+  inline boolean operator!=(const ExtendedDeleteVersionReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline OCTETSTRING& versionLabel()
+    {return field_versionLabel;}
+  inline const OCTETSTRING& versionLabel() const
+    {return field_versionLabel;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ExtendedDeleteVersionReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ExtendedDeleteVersionReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ExtendedDeleteVersionReq& other_value);
+void copy_template(const ExtendedDeleteVersionReq_template& other_value);
+
+public:
+ExtendedDeleteVersionReq_template();
+ExtendedDeleteVersionReq_template(template_sel other_value);
+ExtendedDeleteVersionReq_template(const ExtendedDeleteVersionReq& other_value);
+ExtendedDeleteVersionReq_template(const OPTIONAL<ExtendedDeleteVersionReq>& other_value);
+ExtendedDeleteVersionReq_template(const ExtendedDeleteVersionReq_template& other_value);
+~ExtendedDeleteVersionReq_template();
+ExtendedDeleteVersionReq_template& operator=(template_sel other_value);
+ExtendedDeleteVersionReq_template& operator=(const ExtendedDeleteVersionReq& other_value);
+ExtendedDeleteVersionReq_template& operator=(const OPTIONAL<ExtendedDeleteVersionReq>& other_value);
+ExtendedDeleteVersionReq_template& operator=(const ExtendedDeleteVersionReq_template& other_value);
+boolean match(const ExtendedDeleteVersionReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ExtendedDeleteVersionReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ExtendedDeleteVersionReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+OCTETSTRING_template& versionLabel();
+const OCTETSTRING_template& versionLabel() const;
+int size_of() const;
+void log() const;
+void log_match(const ExtendedDeleteVersionReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class GetVersionsReq : public Base_Type {
+  INTEGER field_vtfunction;
+  OCTETSTRING field_reserved2;
+  OCTETSTRING field_reserved3;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  GetVersionsReq();
+  GetVersionsReq(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_reserved2,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  GetVersionsReq(const GetVersionsReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  GetVersionsReq& operator=(const GetVersionsReq& other_value);
+  boolean operator==(const GetVersionsReq& other_value) const;
+  inline boolean operator!=(const GetVersionsReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline OCTETSTRING& reserved2()
+    {return field_reserved2;}
+  inline const OCTETSTRING& reserved2() const
+    {return field_reserved2;}
+  inline OCTETSTRING& reserved3()
+    {return field_reserved3;}
+  inline const OCTETSTRING& reserved3() const
+    {return field_reserved3;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class GetVersionsReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+GetVersionsReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const GetVersionsReq& other_value);
+void copy_template(const GetVersionsReq_template& other_value);
+
+public:
+GetVersionsReq_template();
+GetVersionsReq_template(template_sel other_value);
+GetVersionsReq_template(const GetVersionsReq& other_value);
+GetVersionsReq_template(const OPTIONAL<GetVersionsReq>& other_value);
+GetVersionsReq_template(const GetVersionsReq_template& other_value);
+~GetVersionsReq_template();
+GetVersionsReq_template& operator=(template_sel other_value);
+GetVersionsReq_template& operator=(const GetVersionsReq& other_value);
+GetVersionsReq_template& operator=(const OPTIONAL<GetVersionsReq>& other_value);
+GetVersionsReq_template& operator=(const GetVersionsReq_template& other_value);
+boolean match(const GetVersionsReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+GetVersionsReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+GetVersionsReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+OCTETSTRING_template& reserved2();
+const OCTETSTRING_template& reserved2() const;
+OCTETSTRING_template& reserved3();
+const OCTETSTRING_template& reserved3() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const GetVersionsReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class GetVersionsRes : public Base_Type {
+  INTEGER field_vtfunction;
+  INTEGER field_numberOfVersionStrings;
+  CHARSTRING field_versionStrings;
+public:
+  GetVersionsRes();
+  GetVersionsRes(const INTEGER& par_vtfunction,
+    const INTEGER& par_numberOfVersionStrings,
+    const CHARSTRING& par_versionStrings);
+  GetVersionsRes(const GetVersionsRes& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  GetVersionsRes& operator=(const GetVersionsRes& other_value);
+  boolean operator==(const GetVersionsRes& other_value) const;
+  inline boolean operator!=(const GetVersionsRes& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline INTEGER& numberOfVersionStrings()
+    {return field_numberOfVersionStrings;}
+  inline const INTEGER& numberOfVersionStrings() const
+    {return field_numberOfVersionStrings;}
+  inline CHARSTRING& versionStrings()
+    {return field_versionStrings;}
+  inline const CHARSTRING& versionStrings() const
+    {return field_versionStrings;}
+  inline int size_of() const
+    {return 3;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class GetVersionsRes_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+GetVersionsRes_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const GetVersionsRes& other_value);
+void copy_template(const GetVersionsRes_template& other_value);
+
+public:
+GetVersionsRes_template();
+GetVersionsRes_template(template_sel other_value);
+GetVersionsRes_template(const GetVersionsRes& other_value);
+GetVersionsRes_template(const OPTIONAL<GetVersionsRes>& other_value);
+GetVersionsRes_template(const GetVersionsRes_template& other_value);
+~GetVersionsRes_template();
+GetVersionsRes_template& operator=(template_sel other_value);
+GetVersionsRes_template& operator=(const GetVersionsRes& other_value);
+GetVersionsRes_template& operator=(const OPTIONAL<GetVersionsRes>& other_value);
+GetVersionsRes_template& operator=(const GetVersionsRes_template& other_value);
+boolean match(const GetVersionsRes& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+GetVersionsRes valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+GetVersionsRes_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+INTEGER_template& numberOfVersionStrings();
+const INTEGER_template& numberOfVersionStrings() const;
+CHARSTRING_template& versionStrings();
+const CHARSTRING_template& versionStrings() const;
+int size_of() const;
+void log() const;
+void log_match(const GetVersionsRes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class VTUnsupportedVTFunctionInd : public Base_Type {
+  INTEGER field_vtfunction;
+  OCTETSTRING field_unsupportedVTfunction;
+  OCTETSTRING field_reserved3;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  VTUnsupportedVTFunctionInd();
+  VTUnsupportedVTFunctionInd(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_unsupportedVTfunction,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  VTUnsupportedVTFunctionInd(const VTUnsupportedVTFunctionInd& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  VTUnsupportedVTFunctionInd& operator=(const VTUnsupportedVTFunctionInd& other_value);
+  boolean operator==(const VTUnsupportedVTFunctionInd& other_value) const;
+  inline boolean operator!=(const VTUnsupportedVTFunctionInd& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline OCTETSTRING& unsupportedVTfunction()
+    {return field_unsupportedVTfunction;}
+  inline const OCTETSTRING& unsupportedVTfunction() const
+    {return field_unsupportedVTfunction;}
+  inline OCTETSTRING& reserved3()
+    {return field_reserved3;}
+  inline const OCTETSTRING& reserved3() const
+    {return field_reserved3;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class VTUnsupportedVTFunctionInd_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+VTUnsupportedVTFunctionInd_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const VTUnsupportedVTFunctionInd& other_value);
+void copy_template(const VTUnsupportedVTFunctionInd_template& other_value);
+
+public:
+VTUnsupportedVTFunctionInd_template();
+VTUnsupportedVTFunctionInd_template(template_sel other_value);
+VTUnsupportedVTFunctionInd_template(const VTUnsupportedVTFunctionInd& other_value);
+VTUnsupportedVTFunctionInd_template(const OPTIONAL<VTUnsupportedVTFunctionInd>& other_value);
+VTUnsupportedVTFunctionInd_template(const VTUnsupportedVTFunctionInd_template& other_value);
+~VTUnsupportedVTFunctionInd_template();
+VTUnsupportedVTFunctionInd_template& operator=(template_sel other_value);
+VTUnsupportedVTFunctionInd_template& operator=(const VTUnsupportedVTFunctionInd& other_value);
+VTUnsupportedVTFunctionInd_template& operator=(const OPTIONAL<VTUnsupportedVTFunctionInd>& other_value);
+VTUnsupportedVTFunctionInd_template& operator=(const VTUnsupportedVTFunctionInd_template& other_value);
+boolean match(const VTUnsupportedVTFunctionInd& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+VTUnsupportedVTFunctionInd valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+VTUnsupportedVTFunctionInd_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+OCTETSTRING_template& unsupportedVTfunction();
+const OCTETSTRING_template& unsupportedVTfunction() const;
+OCTETSTRING_template& reserved3();
+const OCTETSTRING_template& reserved3() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const VTUnsupportedVTFunctionInd& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class UnsupportedVTFunctionInd : public Base_Type {
+  INTEGER field_vtfunction;
+  OCTETSTRING field_unsupportedVTfunction;
+  OCTETSTRING field_reserved3;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  UnsupportedVTFunctionInd();
+  UnsupportedVTFunctionInd(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_unsupportedVTfunction,
+    const OCTETSTRING& par_reserved3,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  UnsupportedVTFunctionInd(const UnsupportedVTFunctionInd& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  UnsupportedVTFunctionInd& operator=(const UnsupportedVTFunctionInd& other_value);
+  boolean operator==(const UnsupportedVTFunctionInd& other_value) const;
+  inline boolean operator!=(const UnsupportedVTFunctionInd& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline OCTETSTRING& unsupportedVTfunction()
+    {return field_unsupportedVTfunction;}
+  inline const OCTETSTRING& unsupportedVTfunction() const
+    {return field_unsupportedVTfunction;}
+  inline OCTETSTRING& reserved3()
+    {return field_reserved3;}
+  inline const OCTETSTRING& reserved3() const
+    {return field_reserved3;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class UnsupportedVTFunctionInd_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+UnsupportedVTFunctionInd_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const UnsupportedVTFunctionInd& other_value);
+void copy_template(const UnsupportedVTFunctionInd_template& other_value);
+
+public:
+UnsupportedVTFunctionInd_template();
+UnsupportedVTFunctionInd_template(template_sel other_value);
+UnsupportedVTFunctionInd_template(const UnsupportedVTFunctionInd& other_value);
+UnsupportedVTFunctionInd_template(const OPTIONAL<UnsupportedVTFunctionInd>& other_value);
+UnsupportedVTFunctionInd_template(const UnsupportedVTFunctionInd_template& other_value);
+~UnsupportedVTFunctionInd_template();
+UnsupportedVTFunctionInd_template& operator=(template_sel other_value);
+UnsupportedVTFunctionInd_template& operator=(const UnsupportedVTFunctionInd& other_value);
+UnsupportedVTFunctionInd_template& operator=(const OPTIONAL<UnsupportedVTFunctionInd>& other_value);
+UnsupportedVTFunctionInd_template& operator=(const UnsupportedVTFunctionInd_template& other_value);
+boolean match(const UnsupportedVTFunctionInd& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+UnsupportedVTFunctionInd valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+UnsupportedVTFunctionInd_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+OCTETSTRING_template& unsupportedVTfunction();
+const OCTETSTRING_template& unsupportedVTfunction() const;
+OCTETSTRING_template& reserved3();
+const OCTETSTRING_template& reserved3() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const UnsupportedVTFunctionInd& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class WorkingSetMaintenanceReq : public Base_Type {
+  INTEGER field_vtfunction;
+  WorkingSetMaintenanceBitMask field_bitMask;
+  e__WorkingSetMaintenanceVersionNumber field_versionNumber;
+  OCTETSTRING field_reserved4;
+  OCTETSTRING field_reserved5;
+  OCTETSTRING field_reserved6;
+  OCTETSTRING field_reserved7;
+  OCTETSTRING field_reserved8;
+public:
+  WorkingSetMaintenanceReq();
+  WorkingSetMaintenanceReq(const INTEGER& par_vtfunction,
+    const WorkingSetMaintenanceBitMask& par_bitMask,
+    const e__WorkingSetMaintenanceVersionNumber& par_versionNumber,
+    const OCTETSTRING& par_reserved4,
+    const OCTETSTRING& par_reserved5,
+    const OCTETSTRING& par_reserved6,
+    const OCTETSTRING& par_reserved7,
+    const OCTETSTRING& par_reserved8);
+  WorkingSetMaintenanceReq(const WorkingSetMaintenanceReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  WorkingSetMaintenanceReq& operator=(const WorkingSetMaintenanceReq& other_value);
+  boolean operator==(const WorkingSetMaintenanceReq& other_value) const;
+  inline boolean operator!=(const WorkingSetMaintenanceReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline WorkingSetMaintenanceBitMask& bitMask()
+    {return field_bitMask;}
+  inline const WorkingSetMaintenanceBitMask& bitMask() const
+    {return field_bitMask;}
+  inline e__WorkingSetMaintenanceVersionNumber& versionNumber()
+    {return field_versionNumber;}
+  inline const e__WorkingSetMaintenanceVersionNumber& versionNumber() const
+    {return field_versionNumber;}
+  inline OCTETSTRING& reserved4()
+    {return field_reserved4;}
+  inline const OCTETSTRING& reserved4() const
+    {return field_reserved4;}
+  inline OCTETSTRING& reserved5()
+    {return field_reserved5;}
+  inline const OCTETSTRING& reserved5() const
+    {return field_reserved5;}
+  inline OCTETSTRING& reserved6()
+    {return field_reserved6;}
+  inline const OCTETSTRING& reserved6() const
+    {return field_reserved6;}
+  inline OCTETSTRING& reserved7()
+    {return field_reserved7;}
+  inline const OCTETSTRING& reserved7() const
+    {return field_reserved7;}
+  inline OCTETSTRING& reserved8()
+    {return field_reserved8;}
+  inline const OCTETSTRING& reserved8() const
+    {return field_reserved8;}
+  inline int size_of() const
+    {return 8;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class WorkingSetMaintenanceReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+WorkingSetMaintenanceReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const WorkingSetMaintenanceReq& other_value);
+void copy_template(const WorkingSetMaintenanceReq_template& other_value);
+
+public:
+WorkingSetMaintenanceReq_template();
+WorkingSetMaintenanceReq_template(template_sel other_value);
+WorkingSetMaintenanceReq_template(const WorkingSetMaintenanceReq& other_value);
+WorkingSetMaintenanceReq_template(const OPTIONAL<WorkingSetMaintenanceReq>& other_value);
+WorkingSetMaintenanceReq_template(const WorkingSetMaintenanceReq_template& other_value);
+~WorkingSetMaintenanceReq_template();
+WorkingSetMaintenanceReq_template& operator=(template_sel other_value);
+WorkingSetMaintenanceReq_template& operator=(const WorkingSetMaintenanceReq& other_value);
+WorkingSetMaintenanceReq_template& operator=(const OPTIONAL<WorkingSetMaintenanceReq>& other_value);
+WorkingSetMaintenanceReq_template& operator=(const WorkingSetMaintenanceReq_template& other_value);
+boolean match(const WorkingSetMaintenanceReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+WorkingSetMaintenanceReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+WorkingSetMaintenanceReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+WorkingSetMaintenanceBitMask_template& bitMask();
+const WorkingSetMaintenanceBitMask_template& bitMask() const;
+e__WorkingSetMaintenanceVersionNumber_template& versionNumber();
+const e__WorkingSetMaintenanceVersionNumber_template& versionNumber() const;
+OCTETSTRING_template& reserved4();
+const OCTETSTRING_template& reserved4() const;
+OCTETSTRING_template& reserved5();
+const OCTETSTRING_template& reserved5() const;
+OCTETSTRING_template& reserved6();
+const OCTETSTRING_template& reserved6() const;
+OCTETSTRING_template& reserved7();
+const OCTETSTRING_template& reserved7() const;
+OCTETSTRING_template& reserved8();
+const OCTETSTRING_template& reserved8() const;
+int size_of() const;
+void log() const;
+void log_match(const WorkingSetMaintenanceReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class e__BusyCodes : public Base_Type { // enum
+friend class e__BusyCodes_template;
+public:
+enum enum_type { vtIsBusyUpdatingVisibleMask = 0, vtIsBusySavingDataToNonVolatileMemory = 1, vtIsBusyExecutingACommand = 2, vtIsBusyExecutingAMacro = 3, vtIsBusyParsingAnObjectPool = 4, reserved = 5, auxiliaryControlsLearnModeActive = 6, vtIsOutOfMemory = 7, UNKNOWN_VALUE = 8, UNBOUND_VALUE = 9 };
+private:
+enum_type enum_value;
+
+public:
+e__BusyCodes();
+e__BusyCodes(int other_value);
+e__BusyCodes(enum_type other_value);
+e__BusyCodes(const e__BusyCodes& other_value);
+
+e__BusyCodes& operator=(int other_value);
+e__BusyCodes& operator=(enum_type other_value);
+e__BusyCodes& operator=(const e__BusyCodes& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const e__BusyCodes& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const e__BusyCodes& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const e__BusyCodes& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const e__BusyCodes& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const e__BusyCodes& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const e__BusyCodes& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const e__BusyCodes& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class e__BusyCodes_template : public Base_Template {
+union {
+e__BusyCodes::enum_type single_value;
+struct {
+unsigned int n_values;
+e__BusyCodes_template *list_value;
+} value_list;
+};
+
+void copy_template(const e__BusyCodes_template& other_value);
+
+public:
+e__BusyCodes_template();
+e__BusyCodes_template(template_sel other_value);
+e__BusyCodes_template(int other_value);
+e__BusyCodes_template(e__BusyCodes::enum_type other_value);
+e__BusyCodes_template(const e__BusyCodes& other_value);
+e__BusyCodes_template(const OPTIONAL<e__BusyCodes>& other_value);
+e__BusyCodes_template(const e__BusyCodes_template& other_value);
+~e__BusyCodes_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+e__BusyCodes_template& operator=(template_sel other_value);
+e__BusyCodes_template& operator=(int other_value);
+e__BusyCodes_template& operator=(e__BusyCodes::enum_type other_value);
+e__BusyCodes_template& operator=(const e__BusyCodes& other_value);
+e__BusyCodes_template& operator=(const OPTIONAL<e__BusyCodes>& other_value);
+e__BusyCodes_template& operator=(const e__BusyCodes_template& other_value);
+
+boolean match(e__BusyCodes::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const e__BusyCodes& other_value, boolean legacy = FALSE) const;
+e__BusyCodes::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+e__BusyCodes_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const e__BusyCodes& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class VTStatusReq : public Base_Type {
+  INTEGER field_vtfunction;
+  OCTETSTRING field_sourceAddressOfActiveWorkingSetMaster;
+  OCTETSTRING field_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet;
+  OCTETSTRING field_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet;
+  e__BusyCodes field_vtBusyCodes;
+  OCTETSTRING field_vtFunctionCode;
+public:
+  VTStatusReq();
+  VTStatusReq(const INTEGER& par_vtfunction,
+    const OCTETSTRING& par_sourceAddressOfActiveWorkingSetMaster,
+    const OCTETSTRING& par_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet,
+    const OCTETSTRING& par_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet,
+    const e__BusyCodes& par_vtBusyCodes,
+    const OCTETSTRING& par_vtFunctionCode);
+  VTStatusReq(const VTStatusReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  VTStatusReq& operator=(const VTStatusReq& other_value);
+  boolean operator==(const VTStatusReq& other_value) const;
+  inline boolean operator!=(const VTStatusReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& vtfunction()
+    {return field_vtfunction;}
+  inline const INTEGER& vtfunction() const
+    {return field_vtfunction;}
+  inline OCTETSTRING& sourceAddressOfActiveWorkingSetMaster()
+    {return field_sourceAddressOfActiveWorkingSetMaster;}
+  inline const OCTETSTRING& sourceAddressOfActiveWorkingSetMaster() const
+    {return field_sourceAddressOfActiveWorkingSetMaster;}
+  inline OCTETSTRING& objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet()
+    {return field_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet;}
+  inline const OCTETSTRING& objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet() const
+    {return field_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet;}
+  inline OCTETSTRING& objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet()
+    {return field_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet;}
+  inline const OCTETSTRING& objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet() const
+    {return field_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet;}
+  inline e__BusyCodes& vtBusyCodes()
+    {return field_vtBusyCodes;}
+  inline const e__BusyCodes& vtBusyCodes() const
+    {return field_vtBusyCodes;}
+  inline OCTETSTRING& vtFunctionCode()
+    {return field_vtFunctionCode;}
+  inline const OCTETSTRING& vtFunctionCode() const
+    {return field_vtFunctionCode;}
+  inline int size_of() const
+    {return 6;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class VTStatusReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+VTStatusReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const VTStatusReq& other_value);
+void copy_template(const VTStatusReq_template& other_value);
+
+public:
+VTStatusReq_template();
+VTStatusReq_template(template_sel other_value);
+VTStatusReq_template(const VTStatusReq& other_value);
+VTStatusReq_template(const OPTIONAL<VTStatusReq>& other_value);
+VTStatusReq_template(const VTStatusReq_template& other_value);
+~VTStatusReq_template();
+VTStatusReq_template& operator=(template_sel other_value);
+VTStatusReq_template& operator=(const VTStatusReq& other_value);
+VTStatusReq_template& operator=(const OPTIONAL<VTStatusReq>& other_value);
+VTStatusReq_template& operator=(const VTStatusReq_template& other_value);
+boolean match(const VTStatusReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+VTStatusReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+VTStatusReq_template& list_item(unsigned int list_index) const;
+INTEGER_template& vtfunction();
+const INTEGER_template& vtfunction() const;
+OCTETSTRING_template& sourceAddressOfActiveWorkingSetMaster();
+const OCTETSTRING_template& sourceAddressOfActiveWorkingSetMaster() const;
+OCTETSTRING_template& objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet();
+const OCTETSTRING_template& objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet() const;
+OCTETSTRING_template& objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet();
+const OCTETSTRING_template& objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet() const;
+e__BusyCodes_template& vtBusyCodes();
+const e__BusyCodes_template& vtBusyCodes() const;
+OCTETSTRING_template& vtFunctionCode();
+const OCTETSTRING_template& vtFunctionCode() const;
+int size_of() const;
+void log() const;
+void log_match(const VTStatusReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class VT2ECU : public Base_Type {
+public:
+enum union_selection_type { UNBOUND_VALUE = 0, ALT_softKeyActivationReq = 1, ALT_buttonActivationReq = 2, ALT_pointingEventReq = 3, ALT_vtSelectInputObjectReq = 4, ALT_vtESCReq = 5, ALT_vtChangeNumericValueReq = 6, ALT_vtChangeActiveMaskReq = 7, ALT_vtChangeSoftKeyMaskReq = 8, ALT_vtChangeStringValueReq = 9, ALT_vtOnUserLayoutHideShowReq = 10, ALT_vtControlAudioSignalTerminationInd = 11, ALT_endOfObjectPoolRes = 12, ALT_vtfunction32VT2ECU = 13, ALT_vtfunction34VT2ECU = 14, ALT_vtfunction36VT2ECU = 15, ALT_vtfunction37VT2ECU = 16, ALT_vtfunction39VT2ECU = 17, ALT_escRes = 18, ALT_hideShowObjectRes = 19, ALT_enableDisableObjectRes = 20, ALT_selectInputObjectRes = 21, ALT_controlAudioSignalRes = 22, ALT_setAudioVolumeRes = 23, ALT_changeChildLocationRes = 24, ALT_changeSizeRes = 25, ALT_changeBackgroundColourRes = 26, ALT_changeNumericValueRes = 27, ALT_changeEndPointRes = 28, ALT_changeFontAttributesRes = 29, ALT_changeLineAttributesRes = 30, ALT_changeFillAttributesRes = 31, ALT_changeActiveMaskRes = 32, ALT_changeSoftKeyMaskRes = 33, ALT_changeAttributeRes = 34, ALT_changePriorityRes = 35, ALT_changeListItemRes = 36, ALT_deleteObjectPoolRes = 37, ALT_changeStringValueRes = 38, ALT_changeChildPositionRes = 39, ALT_changeObjectLabelRes = 40, ALT_changePolygonPointRes = 41, ALT_changePolygonScaleRes = 42, ALT_graphicsContextRes = 43, ALT_getAttributeValueRes = 44, ALT_selectColourMapRes = 45, ALT_identifyVTRes = 46, ALT_executeExtendedMacroRes = 47, ALT_lockUnlockMaskRes = 48, ALT_executeMacroRes = 49, ALT_getMemoryRes = 50, ALT_getNumberOfSoftKeysRes = 51, ALT_getTextFontDataRes = 52, ALT_getHardwareRes = 53, ALT_getSupportedWidecharsRes = 54, ALT_getWindowMaskDataRes = 55, ALT_getSupportedObjectsRes = 56, ALT_storeVersionRes = 57, ALT_loadVersionRes = 58, ALT_deleteVersionRes = 59, ALT_extendedGetVersionsRes = 60, ALT_extendedStoreVersionRes = 61, ALT_extendedLoadVersionRes = 62, ALT_extendedDeleteVersionRes = 63, ALT_getVersionsRes = 64, ALT_vtUnsupportedVTFunctionInd = 65, ALT_vtStatusReq = 66 };
+private:
+union_selection_type union_selection;
+union {
+SoftKeyActivationReq *field_softKeyActivationReq;
+ButtonActivationReq *field_buttonActivationReq;
+PointingEventReq *field_pointingEventReq;
+VTSelectInputObjectReq *field_vtSelectInputObjectReq;
+VTESCReq *field_vtESCReq;
+VTChangeNumericValueReq *field_vtChangeNumericValueReq;
+VTChangeActiveMaskReq *field_vtChangeActiveMaskReq;
+VTChangeSoftKeyMaskReq *field_vtChangeSoftKeyMaskReq;
+VTChangeStringValueReq *field_vtChangeStringValueReq;
+VTOnUserLayoutHideShowReq *field_vtOnUserLayoutHideShowReq;
+VTControlAudioSignalTerminationInd *field_vtControlAudioSignalTerminationInd;
+EndOfObjectPoolRes *field_endOfObjectPoolRes;
+VTfunction32VT2ECU *field_vtfunction32VT2ECU;
+VTfunction34VT2ECU *field_vtfunction34VT2ECU;
+VTfunction36VT2ECU *field_vtfunction36VT2ECU;
+VTfunction37VT2ECU *field_vtfunction37VT2ECU;
+VTfunction39VT2ECU *field_vtfunction39VT2ECU;
+ESCres *field_escRes;
+HideShowObjectRes *field_hideShowObjectRes;
+EnableDisableObjectRes *field_enableDisableObjectRes;
+SelectInputObjectRes *field_selectInputObjectRes;
+ControlAudioSignalRes *field_controlAudioSignalRes;
+SetAudioVolumeRes *field_setAudioVolumeRes;
+ChangeChildLocationRes *field_changeChildLocationRes;
+ChangeSizeRes *field_changeSizeRes;
+ChangeBackgroundColourRes *field_changeBackgroundColourRes;
+ChangeNumericValueRes *field_changeNumericValueRes;
+ChangeEndPointRes *field_changeEndPointRes;
+ChangeFontAttributesRes *field_changeFontAttributesRes;
+ChangeLineAttributesRes *field_changeLineAttributesRes;
+ChangeFillAttributesRes *field_changeFillAttributesRes;
+ChangeActiveMaskRes *field_changeActiveMaskRes;
+ChangeSoftKeyMaskRes *field_changeSoftKeyMaskRes;
+ChangeAttributeRes *field_changeAttributeRes;
+ChangePriorityRes *field_changePriorityRes;
+ChangeListItemRes *field_changeListItemRes;
+DeleteObjectPoolRes *field_deleteObjectPoolRes;
+ChangeStringValueRes *field_changeStringValueRes;
+ChangeChildPositionRes *field_changeChildPositionRes;
+ChangeObjectLabelRes *field_changeObjectLabelRes;
+ChangePolygonPointRes *field_changePolygonPointRes;
+ChangePolygonScaleRes *field_changePolygonScaleRes;
+GraphicsContextRes *field_graphicsContextRes;
+GetAttributeValueRes *field_getAttributeValueRes;
+SelectColourMapRes *field_selectColourMapRes;
+IdentifyVTRes *field_identifyVTRes;
+ExecuteExtendedMacroRes *field_executeExtendedMacroRes;
+LockUnlockMaskRes *field_lockUnlockMaskRes;
+ExecuteMacroRes *field_executeMacroRes;
+GetMemoryRes *field_getMemoryRes;
+GetNumberOfSoftKeysRes *field_getNumberOfSoftKeysRes;
+GetTextFontDataRes *field_getTextFontDataRes;
+GetHardwareRes *field_getHardwareRes;
+GetSupportedWidecharsRes *field_getSupportedWidecharsRes;
+GetWindowMaskDataRes *field_getWindowMaskDataRes;
+GetSupportedObjectsRes *field_getSupportedObjectsRes;
+StoreVersionRes *field_storeVersionRes;
+LoadVersionRes *field_loadVersionRes;
+DeleteVersionRes *field_deleteVersionRes;
+ExtendedGetVersionsRes *field_extendedGetVersionsRes;
+ExtendedStoreVersionRes *field_extendedStoreVersionRes;
+ExtendedLoadVersionRes *field_extendedLoadVersionRes;
+ExtendedDeleteVersionRes *field_extendedDeleteVersionRes;
+GetVersionsRes *field_getVersionsRes;
+VTUnsupportedVTFunctionInd *field_vtUnsupportedVTFunctionInd;
+VTStatusReq *field_vtStatusReq;
+};
+void copy_value(const VT2ECU& other_value);
+
+public:
+VT2ECU();
+VT2ECU(const VT2ECU& other_value);
+~VT2ECU();
+VT2ECU& operator=(const VT2ECU& other_value);
+boolean operator==(const VT2ECU& other_value) const;
+inline boolean operator!=(const VT2ECU& other_value) const { return !(*this == other_value); }
+SoftKeyActivationReq& softKeyActivationReq();
+const SoftKeyActivationReq& softKeyActivationReq() const;
+ButtonActivationReq& buttonActivationReq();
+const ButtonActivationReq& buttonActivationReq() const;
+PointingEventReq& pointingEventReq();
+const PointingEventReq& pointingEventReq() const;
+VTSelectInputObjectReq& vtSelectInputObjectReq();
+const VTSelectInputObjectReq& vtSelectInputObjectReq() const;
+VTESCReq& vtESCReq();
+const VTESCReq& vtESCReq() const;
+VTChangeNumericValueReq& vtChangeNumericValueReq();
+const VTChangeNumericValueReq& vtChangeNumericValueReq() const;
+VTChangeActiveMaskReq& vtChangeActiveMaskReq();
+const VTChangeActiveMaskReq& vtChangeActiveMaskReq() const;
+VTChangeSoftKeyMaskReq& vtChangeSoftKeyMaskReq();
+const VTChangeSoftKeyMaskReq& vtChangeSoftKeyMaskReq() const;
+VTChangeStringValueReq& vtChangeStringValueReq();
+const VTChangeStringValueReq& vtChangeStringValueReq() const;
+VTOnUserLayoutHideShowReq& vtOnUserLayoutHideShowReq();
+const VTOnUserLayoutHideShowReq& vtOnUserLayoutHideShowReq() const;
+VTControlAudioSignalTerminationInd& vtControlAudioSignalTerminationInd();
+const VTControlAudioSignalTerminationInd& vtControlAudioSignalTerminationInd() const;
+EndOfObjectPoolRes& endOfObjectPoolRes();
+const EndOfObjectPoolRes& endOfObjectPoolRes() const;
+VTfunction32VT2ECU& vtfunction32VT2ECU();
+const VTfunction32VT2ECU& vtfunction32VT2ECU() const;
+VTfunction34VT2ECU& vtfunction34VT2ECU();
+const VTfunction34VT2ECU& vtfunction34VT2ECU() const;
+VTfunction36VT2ECU& vtfunction36VT2ECU();
+const VTfunction36VT2ECU& vtfunction36VT2ECU() const;
+VTfunction37VT2ECU& vtfunction37VT2ECU();
+const VTfunction37VT2ECU& vtfunction37VT2ECU() const;
+VTfunction39VT2ECU& vtfunction39VT2ECU();
+const VTfunction39VT2ECU& vtfunction39VT2ECU() const;
+ESCres& escRes();
+const ESCres& escRes() const;
+HideShowObjectRes& hideShowObjectRes();
+const HideShowObjectRes& hideShowObjectRes() const;
+EnableDisableObjectRes& enableDisableObjectRes();
+const EnableDisableObjectRes& enableDisableObjectRes() const;
+SelectInputObjectRes& selectInputObjectRes();
+const SelectInputObjectRes& selectInputObjectRes() const;
+ControlAudioSignalRes& controlAudioSignalRes();
+const ControlAudioSignalRes& controlAudioSignalRes() const;
+SetAudioVolumeRes& setAudioVolumeRes();
+const SetAudioVolumeRes& setAudioVolumeRes() const;
+ChangeChildLocationRes& changeChildLocationRes();
+const ChangeChildLocationRes& changeChildLocationRes() const;
+ChangeSizeRes& changeSizeRes();
+const ChangeSizeRes& changeSizeRes() const;
+ChangeBackgroundColourRes& changeBackgroundColourRes();
+const ChangeBackgroundColourRes& changeBackgroundColourRes() const;
+ChangeNumericValueRes& changeNumericValueRes();
+const ChangeNumericValueRes& changeNumericValueRes() const;
+ChangeEndPointRes& changeEndPointRes();
+const ChangeEndPointRes& changeEndPointRes() const;
+ChangeFontAttributesRes& changeFontAttributesRes();
+const ChangeFontAttributesRes& changeFontAttributesRes() const;
+ChangeLineAttributesRes& changeLineAttributesRes();
+const ChangeLineAttributesRes& changeLineAttributesRes() const;
+ChangeFillAttributesRes& changeFillAttributesRes();
+const ChangeFillAttributesRes& changeFillAttributesRes() const;
+ChangeActiveMaskRes& changeActiveMaskRes();
+const ChangeActiveMaskRes& changeActiveMaskRes() const;
+ChangeSoftKeyMaskRes& changeSoftKeyMaskRes();
+const ChangeSoftKeyMaskRes& changeSoftKeyMaskRes() const;
+ChangeAttributeRes& changeAttributeRes();
+const ChangeAttributeRes& changeAttributeRes() const;
+ChangePriorityRes& changePriorityRes();
+const ChangePriorityRes& changePriorityRes() const;
+ChangeListItemRes& changeListItemRes();
+const ChangeListItemRes& changeListItemRes() const;
+DeleteObjectPoolRes& deleteObjectPoolRes();
+const DeleteObjectPoolRes& deleteObjectPoolRes() const;
+ChangeStringValueRes& changeStringValueRes();
+const ChangeStringValueRes& changeStringValueRes() const;
+ChangeChildPositionRes& changeChildPositionRes();
+const ChangeChildPositionRes& changeChildPositionRes() const;
+ChangeObjectLabelRes& changeObjectLabelRes();
+const ChangeObjectLabelRes& changeObjectLabelRes() const;
+ChangePolygonPointRes& changePolygonPointRes();
+const ChangePolygonPointRes& changePolygonPointRes() const;
+ChangePolygonScaleRes& changePolygonScaleRes();
+const ChangePolygonScaleRes& changePolygonScaleRes() const;
+GraphicsContextRes& graphicsContextRes();
+const GraphicsContextRes& graphicsContextRes() const;
+GetAttributeValueRes& getAttributeValueRes();
+const GetAttributeValueRes& getAttributeValueRes() const;
+SelectColourMapRes& selectColourMapRes();
+const SelectColourMapRes& selectColourMapRes() const;
+IdentifyVTRes& identifyVTRes();
+const IdentifyVTRes& identifyVTRes() const;
+ExecuteExtendedMacroRes& executeExtendedMacroRes();
+const ExecuteExtendedMacroRes& executeExtendedMacroRes() const;
+LockUnlockMaskRes& lockUnlockMaskRes();
+const LockUnlockMaskRes& lockUnlockMaskRes() const;
+ExecuteMacroRes& executeMacroRes();
+const ExecuteMacroRes& executeMacroRes() const;
+GetMemoryRes& getMemoryRes();
+const GetMemoryRes& getMemoryRes() const;
+GetNumberOfSoftKeysRes& getNumberOfSoftKeysRes();
+const GetNumberOfSoftKeysRes& getNumberOfSoftKeysRes() const;
+GetTextFontDataRes& getTextFontDataRes();
+const GetTextFontDataRes& getTextFontDataRes() const;
+GetHardwareRes& getHardwareRes();
+const GetHardwareRes& getHardwareRes() const;
+GetSupportedWidecharsRes& getSupportedWidecharsRes();
+const GetSupportedWidecharsRes& getSupportedWidecharsRes() const;
+GetWindowMaskDataRes& getWindowMaskDataRes();
+const GetWindowMaskDataRes& getWindowMaskDataRes() const;
+GetSupportedObjectsRes& getSupportedObjectsRes();
+const GetSupportedObjectsRes& getSupportedObjectsRes() const;
+StoreVersionRes& storeVersionRes();
+const StoreVersionRes& storeVersionRes() const;
+LoadVersionRes& loadVersionRes();
+const LoadVersionRes& loadVersionRes() const;
+DeleteVersionRes& deleteVersionRes();
+const DeleteVersionRes& deleteVersionRes() const;
+ExtendedGetVersionsRes& extendedGetVersionsRes();
+const ExtendedGetVersionsRes& extendedGetVersionsRes() const;
+ExtendedStoreVersionRes& extendedStoreVersionRes();
+const ExtendedStoreVersionRes& extendedStoreVersionRes() const;
+ExtendedLoadVersionRes& extendedLoadVersionRes();
+const ExtendedLoadVersionRes& extendedLoadVersionRes() const;
+ExtendedDeleteVersionRes& extendedDeleteVersionRes();
+const ExtendedDeleteVersionRes& extendedDeleteVersionRes() const;
+GetVersionsRes& getVersionsRes();
+const GetVersionsRes& getVersionsRes() const;
+VTUnsupportedVTFunctionInd& vtUnsupportedVTFunctionInd();
+const VTUnsupportedVTFunctionInd& vtUnsupportedVTFunctionInd() const;
+VTStatusReq& vtStatusReq();
+const VTStatusReq& vtStatusReq() const;
+inline union_selection_type get_selection() const { return union_selection; }
+boolean ischosen(union_selection_type checked_selection) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class VT2ECU_template : public Base_Template {
+union {
+struct {
+VT2ECU::union_selection_type union_selection;
+union {
+SoftKeyActivationReq_template *field_softKeyActivationReq;
+ButtonActivationReq_template *field_buttonActivationReq;
+PointingEventReq_template *field_pointingEventReq;
+VTSelectInputObjectReq_template *field_vtSelectInputObjectReq;
+VTESCReq_template *field_vtESCReq;
+VTChangeNumericValueReq_template *field_vtChangeNumericValueReq;
+VTChangeActiveMaskReq_template *field_vtChangeActiveMaskReq;
+VTChangeSoftKeyMaskReq_template *field_vtChangeSoftKeyMaskReq;
+VTChangeStringValueReq_template *field_vtChangeStringValueReq;
+VTOnUserLayoutHideShowReq_template *field_vtOnUserLayoutHideShowReq;
+VTControlAudioSignalTerminationInd_template *field_vtControlAudioSignalTerminationInd;
+EndOfObjectPoolRes_template *field_endOfObjectPoolRes;
+VTfunction32VT2ECU_template *field_vtfunction32VT2ECU;
+VTfunction34VT2ECU_template *field_vtfunction34VT2ECU;
+VTfunction36VT2ECU_template *field_vtfunction36VT2ECU;
+VTfunction37VT2ECU_template *field_vtfunction37VT2ECU;
+VTfunction39VT2ECU_template *field_vtfunction39VT2ECU;
+ESCres_template *field_escRes;
+HideShowObjectRes_template *field_hideShowObjectRes;
+EnableDisableObjectRes_template *field_enableDisableObjectRes;
+SelectInputObjectRes_template *field_selectInputObjectRes;
+ControlAudioSignalRes_template *field_controlAudioSignalRes;
+SetAudioVolumeRes_template *field_setAudioVolumeRes;
+ChangeChildLocationRes_template *field_changeChildLocationRes;
+ChangeSizeRes_template *field_changeSizeRes;
+ChangeBackgroundColourRes_template *field_changeBackgroundColourRes;
+ChangeNumericValueRes_template *field_changeNumericValueRes;
+ChangeEndPointRes_template *field_changeEndPointRes;
+ChangeFontAttributesRes_template *field_changeFontAttributesRes;
+ChangeLineAttributesRes_template *field_changeLineAttributesRes;
+ChangeFillAttributesRes_template *field_changeFillAttributesRes;
+ChangeActiveMaskRes_template *field_changeActiveMaskRes;
+ChangeSoftKeyMaskRes_template *field_changeSoftKeyMaskRes;
+ChangeAttributeRes_template *field_changeAttributeRes;
+ChangePriorityRes_template *field_changePriorityRes;
+ChangeListItemRes_template *field_changeListItemRes;
+DeleteObjectPoolRes_template *field_deleteObjectPoolRes;
+ChangeStringValueRes_template *field_changeStringValueRes;
+ChangeChildPositionRes_template *field_changeChildPositionRes;
+ChangeObjectLabelRes_template *field_changeObjectLabelRes;
+ChangePolygonPointRes_template *field_changePolygonPointRes;
+ChangePolygonScaleRes_template *field_changePolygonScaleRes;
+GraphicsContextRes_template *field_graphicsContextRes;
+GetAttributeValueRes_template *field_getAttributeValueRes;
+SelectColourMapRes_template *field_selectColourMapRes;
+IdentifyVTRes_template *field_identifyVTRes;
+ExecuteExtendedMacroRes_template *field_executeExtendedMacroRes;
+LockUnlockMaskRes_template *field_lockUnlockMaskRes;
+ExecuteMacroRes_template *field_executeMacroRes;
+GetMemoryRes_template *field_getMemoryRes;
+GetNumberOfSoftKeysRes_template *field_getNumberOfSoftKeysRes;
+GetTextFontDataRes_template *field_getTextFontDataRes;
+GetHardwareRes_template *field_getHardwareRes;
+GetSupportedWidecharsRes_template *field_getSupportedWidecharsRes;
+GetWindowMaskDataRes_template *field_getWindowMaskDataRes;
+GetSupportedObjectsRes_template *field_getSupportedObjectsRes;
+StoreVersionRes_template *field_storeVersionRes;
+LoadVersionRes_template *field_loadVersionRes;
+DeleteVersionRes_template *field_deleteVersionRes;
+ExtendedGetVersionsRes_template *field_extendedGetVersionsRes;
+ExtendedStoreVersionRes_template *field_extendedStoreVersionRes;
+ExtendedLoadVersionRes_template *field_extendedLoadVersionRes;
+ExtendedDeleteVersionRes_template *field_extendedDeleteVersionRes;
+GetVersionsRes_template *field_getVersionsRes;
+VTUnsupportedVTFunctionInd_template *field_vtUnsupportedVTFunctionInd;
+VTStatusReq_template *field_vtStatusReq;
+};
+} single_value;
+struct {
+unsigned int n_values;
+VT2ECU_template *list_value;
+} value_list;
+};
+void copy_value(const VT2ECU& other_value);
+
+void copy_template(const VT2ECU_template& other_value);
+
+public:
+VT2ECU_template();
+VT2ECU_template(template_sel other_value);
+VT2ECU_template(const VT2ECU& other_value);
+VT2ECU_template(const OPTIONAL<VT2ECU>& other_value);
+VT2ECU_template(const VT2ECU_template& other_value);
+~VT2ECU_template();
+void clean_up();
+VT2ECU_template& operator=(template_sel other_value);
+VT2ECU_template& operator=(const VT2ECU& other_value);
+VT2ECU_template& operator=(const OPTIONAL<VT2ECU>& other_value);
+VT2ECU_template& operator=(const VT2ECU_template& other_value);
+boolean match(const VT2ECU& other_value, boolean legacy = FALSE) const;
+boolean is_value() const;VT2ECU valueof() const;
+VT2ECU_template& list_item(unsigned int list_index) const;
+void set_type(template_sel template_type, unsigned int list_length);
+SoftKeyActivationReq_template& softKeyActivationReq();
+const SoftKeyActivationReq_template& softKeyActivationReq() const;
+ButtonActivationReq_template& buttonActivationReq();
+const ButtonActivationReq_template& buttonActivationReq() const;
+PointingEventReq_template& pointingEventReq();
+const PointingEventReq_template& pointingEventReq() const;
+VTSelectInputObjectReq_template& vtSelectInputObjectReq();
+const VTSelectInputObjectReq_template& vtSelectInputObjectReq() const;
+VTESCReq_template& vtESCReq();
+const VTESCReq_template& vtESCReq() const;
+VTChangeNumericValueReq_template& vtChangeNumericValueReq();
+const VTChangeNumericValueReq_template& vtChangeNumericValueReq() const;
+VTChangeActiveMaskReq_template& vtChangeActiveMaskReq();
+const VTChangeActiveMaskReq_template& vtChangeActiveMaskReq() const;
+VTChangeSoftKeyMaskReq_template& vtChangeSoftKeyMaskReq();
+const VTChangeSoftKeyMaskReq_template& vtChangeSoftKeyMaskReq() const;
+VTChangeStringValueReq_template& vtChangeStringValueReq();
+const VTChangeStringValueReq_template& vtChangeStringValueReq() const;
+VTOnUserLayoutHideShowReq_template& vtOnUserLayoutHideShowReq();
+const VTOnUserLayoutHideShowReq_template& vtOnUserLayoutHideShowReq() const;
+VTControlAudioSignalTerminationInd_template& vtControlAudioSignalTerminationInd();
+const VTControlAudioSignalTerminationInd_template& vtControlAudioSignalTerminationInd() const;
+EndOfObjectPoolRes_template& endOfObjectPoolRes();
+const EndOfObjectPoolRes_template& endOfObjectPoolRes() const;
+VTfunction32VT2ECU_template& vtfunction32VT2ECU();
+const VTfunction32VT2ECU_template& vtfunction32VT2ECU() const;
+VTfunction34VT2ECU_template& vtfunction34VT2ECU();
+const VTfunction34VT2ECU_template& vtfunction34VT2ECU() const;
+VTfunction36VT2ECU_template& vtfunction36VT2ECU();
+const VTfunction36VT2ECU_template& vtfunction36VT2ECU() const;
+VTfunction37VT2ECU_template& vtfunction37VT2ECU();
+const VTfunction37VT2ECU_template& vtfunction37VT2ECU() const;
+VTfunction39VT2ECU_template& vtfunction39VT2ECU();
+const VTfunction39VT2ECU_template& vtfunction39VT2ECU() const;
+ESCres_template& escRes();
+const ESCres_template& escRes() const;
+HideShowObjectRes_template& hideShowObjectRes();
+const HideShowObjectRes_template& hideShowObjectRes() const;
+EnableDisableObjectRes_template& enableDisableObjectRes();
+const EnableDisableObjectRes_template& enableDisableObjectRes() const;
+SelectInputObjectRes_template& selectInputObjectRes();
+const SelectInputObjectRes_template& selectInputObjectRes() const;
+ControlAudioSignalRes_template& controlAudioSignalRes();
+const ControlAudioSignalRes_template& controlAudioSignalRes() const;
+SetAudioVolumeRes_template& setAudioVolumeRes();
+const SetAudioVolumeRes_template& setAudioVolumeRes() const;
+ChangeChildLocationRes_template& changeChildLocationRes();
+const ChangeChildLocationRes_template& changeChildLocationRes() const;
+ChangeSizeRes_template& changeSizeRes();
+const ChangeSizeRes_template& changeSizeRes() const;
+ChangeBackgroundColourRes_template& changeBackgroundColourRes();
+const ChangeBackgroundColourRes_template& changeBackgroundColourRes() const;
+ChangeNumericValueRes_template& changeNumericValueRes();
+const ChangeNumericValueRes_template& changeNumericValueRes() const;
+ChangeEndPointRes_template& changeEndPointRes();
+const ChangeEndPointRes_template& changeEndPointRes() const;
+ChangeFontAttributesRes_template& changeFontAttributesRes();
+const ChangeFontAttributesRes_template& changeFontAttributesRes() const;
+ChangeLineAttributesRes_template& changeLineAttributesRes();
+const ChangeLineAttributesRes_template& changeLineAttributesRes() const;
+ChangeFillAttributesRes_template& changeFillAttributesRes();
+const ChangeFillAttributesRes_template& changeFillAttributesRes() const;
+ChangeActiveMaskRes_template& changeActiveMaskRes();
+const ChangeActiveMaskRes_template& changeActiveMaskRes() const;
+ChangeSoftKeyMaskRes_template& changeSoftKeyMaskRes();
+const ChangeSoftKeyMaskRes_template& changeSoftKeyMaskRes() const;
+ChangeAttributeRes_template& changeAttributeRes();
+const ChangeAttributeRes_template& changeAttributeRes() const;
+ChangePriorityRes_template& changePriorityRes();
+const ChangePriorityRes_template& changePriorityRes() const;
+ChangeListItemRes_template& changeListItemRes();
+const ChangeListItemRes_template& changeListItemRes() const;
+DeleteObjectPoolRes_template& deleteObjectPoolRes();
+const DeleteObjectPoolRes_template& deleteObjectPoolRes() const;
+ChangeStringValueRes_template& changeStringValueRes();
+const ChangeStringValueRes_template& changeStringValueRes() const;
+ChangeChildPositionRes_template& changeChildPositionRes();
+const ChangeChildPositionRes_template& changeChildPositionRes() const;
+ChangeObjectLabelRes_template& changeObjectLabelRes();
+const ChangeObjectLabelRes_template& changeObjectLabelRes() const;
+ChangePolygonPointRes_template& changePolygonPointRes();
+const ChangePolygonPointRes_template& changePolygonPointRes() const;
+ChangePolygonScaleRes_template& changePolygonScaleRes();
+const ChangePolygonScaleRes_template& changePolygonScaleRes() const;
+GraphicsContextRes_template& graphicsContextRes();
+const GraphicsContextRes_template& graphicsContextRes() const;
+GetAttributeValueRes_template& getAttributeValueRes();
+const GetAttributeValueRes_template& getAttributeValueRes() const;
+SelectColourMapRes_template& selectColourMapRes();
+const SelectColourMapRes_template& selectColourMapRes() const;
+IdentifyVTRes_template& identifyVTRes();
+const IdentifyVTRes_template& identifyVTRes() const;
+ExecuteExtendedMacroRes_template& executeExtendedMacroRes();
+const ExecuteExtendedMacroRes_template& executeExtendedMacroRes() const;
+LockUnlockMaskRes_template& lockUnlockMaskRes();
+const LockUnlockMaskRes_template& lockUnlockMaskRes() const;
+ExecuteMacroRes_template& executeMacroRes();
+const ExecuteMacroRes_template& executeMacroRes() const;
+GetMemoryRes_template& getMemoryRes();
+const GetMemoryRes_template& getMemoryRes() const;
+GetNumberOfSoftKeysRes_template& getNumberOfSoftKeysRes();
+const GetNumberOfSoftKeysRes_template& getNumberOfSoftKeysRes() const;
+GetTextFontDataRes_template& getTextFontDataRes();
+const GetTextFontDataRes_template& getTextFontDataRes() const;
+GetHardwareRes_template& getHardwareRes();
+const GetHardwareRes_template& getHardwareRes() const;
+GetSupportedWidecharsRes_template& getSupportedWidecharsRes();
+const GetSupportedWidecharsRes_template& getSupportedWidecharsRes() const;
+GetWindowMaskDataRes_template& getWindowMaskDataRes();
+const GetWindowMaskDataRes_template& getWindowMaskDataRes() const;
+GetSupportedObjectsRes_template& getSupportedObjectsRes();
+const GetSupportedObjectsRes_template& getSupportedObjectsRes() const;
+StoreVersionRes_template& storeVersionRes();
+const StoreVersionRes_template& storeVersionRes() const;
+LoadVersionRes_template& loadVersionRes();
+const LoadVersionRes_template& loadVersionRes() const;
+DeleteVersionRes_template& deleteVersionRes();
+const DeleteVersionRes_template& deleteVersionRes() const;
+ExtendedGetVersionsRes_template& extendedGetVersionsRes();
+const ExtendedGetVersionsRes_template& extendedGetVersionsRes() const;
+ExtendedStoreVersionRes_template& extendedStoreVersionRes();
+const ExtendedStoreVersionRes_template& extendedStoreVersionRes() const;
+ExtendedLoadVersionRes_template& extendedLoadVersionRes();
+const ExtendedLoadVersionRes_template& extendedLoadVersionRes() const;
+ExtendedDeleteVersionRes_template& extendedDeleteVersionRes();
+const ExtendedDeleteVersionRes_template& extendedDeleteVersionRes() const;
+GetVersionsRes_template& getVersionsRes();
+const GetVersionsRes_template& getVersionsRes() const;
+VTUnsupportedVTFunctionInd_template& vtUnsupportedVTFunctionInd();
+const VTUnsupportedVTFunctionInd_template& vtUnsupportedVTFunctionInd() const;
+VTStatusReq_template& vtStatusReq();
+const VTStatusReq_template& vtStatusReq() const;
+boolean ischosen(VT2ECU::union_selection_type checked_selection) const;
+void log() const;
+void log_match(const VT2ECU& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class ECU2VT : public Base_Type {
+public:
+enum union_selection_type { UNBOUND_VALUE = 0, ALT_softKeyActivationRes = 1, ALT_buttonActivationRes = 2, ALT_pointingEventRes = 3, ALT_vtSelectInputObjectRes = 4, ALT_vtESCRes = 5, ALT_vtChangeNumericValueRes = 6, ALT_vtChangeActiveMaskRes = 7, ALT_vtChangeSoftKeyMaskReq = 8, ALT_vtChangeStringValueRes = 9, ALT_vtOnUserLayoutHideShowRes = 10, ALT_objectPoolTransferInd = 11, ALT_endOfObjectPoolReq = 12, ALT_vtfunction32ECU2VT = 13, ALT_vtfunction33ECU2VT = 14, ALT_vtfunction34ECU2VT = 15, ALT_vtfunction36ECU2VT = 16, ALT_vtfunction37ECU2VT = 17, ALT_auxiliaryInputType2StatusInd = 18, ALT_vtfunction39ECU2VT = 19, ALT_escReq = 20, ALT_hideShowObjectReq = 21, ALT_enableDisableObjectReq = 22, ALT_selectInputObjectReq = 23, ALT_controlAudioSignalReq = 24, ALT_setAudioVolumeReq = 25, ALT_changeChildLocationReq = 26, ALT_changeSizeReq = 27, ALT_changeBackgroundColourReq = 28, ALT_changeNumericValueReq = 29, ALT_changeEndPointReq = 30, ALT_changeFontAttributesReq = 31, ALT_changeLineAttributesReq = 32, ALT_changeFillAttributesReq = 33, ALT_changeActiveMaskReq = 34, ALT_changeSoftKeyMaskRes = 35, ALT_changeAttributeReq = 36, ALT_changePriorityReq = 37, ALT_changeListItemReq = 38, ALT_deleteObjectPoolReq = 39, ALT_changeStringValueReq = 40, ALT_changeChildPositionReq = 41, ALT_changeObjectLabelReq = 42, ALT_changePolygonPointReq = 43, ALT_changePolygonScaleReq = 44, ALT_graphicsContextReq = 45, ALT_getAttributeValueReq = 46, ALT_selectColourMapReq = 47, ALT_identifyVTReq = 48, ALT_executeExtendedMacroReq = 49, ALT_lockUnlockMaskReq = 50, ALT_executeMacroReq = 51, ALT_getMemoryReq = 52, ALT_getNumberOfSoftKeysReq = 53, ALT_getTextFontDataReq = 54, ALT_getHardwareReq = 55, ALT_getSupportedWidecharsReq = 56, ALT_getWindowMaskDataReq = 57, ALT_getSupportedObjectsReq = 58, ALT_storeVersionReq = 59, ALT_loadVersionReq = 60, ALT_deleteVersionReq = 61, ALT_extendedGetVersionsReq = 62, ALT_extendedStoreVersionReq = 63, ALT_extendedLoadVersionReq = 64, ALT_extendedDeleteVersionReq = 65, ALT_getVersionsReq = 66, ALT_unsupportedVTFunctionInd = 67, ALT_workingSetMaintenanceReq = 68 };
+private:
+union_selection_type union_selection;
+union {
+SoftKeyActivationRes *field_softKeyActivationRes;
+ButtonActivationRes *field_buttonActivationRes;
+PointingEventRes *field_pointingEventRes;
+VTSelectInputObjectRes *field_vtSelectInputObjectRes;
+VTESCRes *field_vtESCRes;
+VTChangeNumericValueRes *field_vtChangeNumericValueRes;
+VTChangeActiveMaskRes *field_vtChangeActiveMaskRes;
+VTChangeSoftKeyMaskReq *field_vtChangeSoftKeyMaskReq;
+VTChangeStringValueRes *field_vtChangeStringValueRes;
+VTOnUserLayoutHideShowRes *field_vtOnUserLayoutHideShowRes;
+ObjectPoolTransferInd *field_objectPoolTransferInd;
+EndOfObjectPoolReq *field_endOfObjectPoolReq;
+VTfunction32ECU2VT *field_vtfunction32ECU2VT;
+VTfunction33ECU2VT *field_vtfunction33ECU2VT;
+VTfunction34ECU2VT *field_vtfunction34ECU2VT;
+VTfunction36ECU2VT *field_vtfunction36ECU2VT;
+VTfunction37ECU2VT *field_vtfunction37ECU2VT;
+AuxiliaryInputType2StatusInd *field_auxiliaryInputType2StatusInd;
+VTfunction39ECU2VT *field_vtfunction39ECU2VT;
+ESCreq *field_escReq;
+HideShowObjectReq *field_hideShowObjectReq;
+EnableDisableObjectReq *field_enableDisableObjectReq;
+SelectInputObjectReq *field_selectInputObjectReq;
+ControlAudioSignalReq *field_controlAudioSignalReq;
+SetAudioVolumeReq *field_setAudioVolumeReq;
+ChangeChildLocationReq *field_changeChildLocationReq;
+ChangeSizeReq *field_changeSizeReq;
+ChangeBackgroundColourReq *field_changeBackgroundColourReq;
+ChangeNumericValueReq *field_changeNumericValueReq;
+ChangeEndPointReq *field_changeEndPointReq;
+ChangeFontAttributesReq *field_changeFontAttributesReq;
+ChangeLineAttributesReq *field_changeLineAttributesReq;
+ChangeFillAttributesReq *field_changeFillAttributesReq;
+ChangeActiveMaskReq *field_changeActiveMaskReq;
+ChangeSoftKeyMaskRes *field_changeSoftKeyMaskRes;
+ChangeAttributeReq *field_changeAttributeReq;
+ChangePriorityReq *field_changePriorityReq;
+ChangeListItemReq *field_changeListItemReq;
+DeleteObjectPoolReq *field_deleteObjectPoolReq;
+ChangeStringValueReq *field_changeStringValueReq;
+ChangeChildPositionReq *field_changeChildPositionReq;
+ChangeObjectLabelReq *field_changeObjectLabelReq;
+ChangePolygonPointReq *field_changePolygonPointReq;
+ChangePolygonScaleReq *field_changePolygonScaleReq;
+GraphicsContextReq *field_graphicsContextReq;
+GetAttributeValueReq *field_getAttributeValueReq;
+SelectColourMapReq *field_selectColourMapReq;
+IdentifyVTReq *field_identifyVTReq;
+ExecuteExtendedMacroReq *field_executeExtendedMacroReq;
+LockUnlockMaskReq *field_lockUnlockMaskReq;
+ExecuteMacroReq *field_executeMacroReq;
+GetMemoryReq *field_getMemoryReq;
+GetNumberOfSoftKeysReq *field_getNumberOfSoftKeysReq;
+GetTextFontDataReq *field_getTextFontDataReq;
+GetHardwareReq *field_getHardwareReq;
+GetSupportedWidecharsReq *field_getSupportedWidecharsReq;
+GetWindowMaskDataReq *field_getWindowMaskDataReq;
+GetSupportedObjectsReq *field_getSupportedObjectsReq;
+StoreVersionReq *field_storeVersionReq;
+LoadVersionReq *field_loadVersionReq;
+DeleteVersionReq *field_deleteVersionReq;
+ExtendedGetVersionsReq *field_extendedGetVersionsReq;
+ExtendedStoreVersionReq *field_extendedStoreVersionReq;
+ExtendedLoadVersionReq *field_extendedLoadVersionReq;
+ExtendedDeleteVersionReq *field_extendedDeleteVersionReq;
+GetVersionsReq *field_getVersionsReq;
+UnsupportedVTFunctionInd *field_unsupportedVTFunctionInd;
+WorkingSetMaintenanceReq *field_workingSetMaintenanceReq;
+};
+void copy_value(const ECU2VT& other_value);
+
+public:
+ECU2VT();
+ECU2VT(const ECU2VT& other_value);
+~ECU2VT();
+ECU2VT& operator=(const ECU2VT& other_value);
+boolean operator==(const ECU2VT& other_value) const;
+inline boolean operator!=(const ECU2VT& other_value) const { return !(*this == other_value); }
+SoftKeyActivationRes& softKeyActivationRes();
+const SoftKeyActivationRes& softKeyActivationRes() const;
+ButtonActivationRes& buttonActivationRes();
+const ButtonActivationRes& buttonActivationRes() const;
+PointingEventRes& pointingEventRes();
+const PointingEventRes& pointingEventRes() const;
+VTSelectInputObjectRes& vtSelectInputObjectRes();
+const VTSelectInputObjectRes& vtSelectInputObjectRes() const;
+VTESCRes& vtESCRes();
+const VTESCRes& vtESCRes() const;
+VTChangeNumericValueRes& vtChangeNumericValueRes();
+const VTChangeNumericValueRes& vtChangeNumericValueRes() const;
+VTChangeActiveMaskRes& vtChangeActiveMaskRes();
+const VTChangeActiveMaskRes& vtChangeActiveMaskRes() const;
+VTChangeSoftKeyMaskReq& vtChangeSoftKeyMaskReq();
+const VTChangeSoftKeyMaskReq& vtChangeSoftKeyMaskReq() const;
+VTChangeStringValueRes& vtChangeStringValueRes();
+const VTChangeStringValueRes& vtChangeStringValueRes() const;
+VTOnUserLayoutHideShowRes& vtOnUserLayoutHideShowRes();
+const VTOnUserLayoutHideShowRes& vtOnUserLayoutHideShowRes() const;
+ObjectPoolTransferInd& objectPoolTransferInd();
+const ObjectPoolTransferInd& objectPoolTransferInd() const;
+EndOfObjectPoolReq& endOfObjectPoolReq();
+const EndOfObjectPoolReq& endOfObjectPoolReq() const;
+VTfunction32ECU2VT& vtfunction32ECU2VT();
+const VTfunction32ECU2VT& vtfunction32ECU2VT() const;
+VTfunction33ECU2VT& vtfunction33ECU2VT();
+const VTfunction33ECU2VT& vtfunction33ECU2VT() const;
+VTfunction34ECU2VT& vtfunction34ECU2VT();
+const VTfunction34ECU2VT& vtfunction34ECU2VT() const;
+VTfunction36ECU2VT& vtfunction36ECU2VT();
+const VTfunction36ECU2VT& vtfunction36ECU2VT() const;
+VTfunction37ECU2VT& vtfunction37ECU2VT();
+const VTfunction37ECU2VT& vtfunction37ECU2VT() const;
+AuxiliaryInputType2StatusInd& auxiliaryInputType2StatusInd();
+const AuxiliaryInputType2StatusInd& auxiliaryInputType2StatusInd() const;
+VTfunction39ECU2VT& vtfunction39ECU2VT();
+const VTfunction39ECU2VT& vtfunction39ECU2VT() const;
+ESCreq& escReq();
+const ESCreq& escReq() const;
+HideShowObjectReq& hideShowObjectReq();
+const HideShowObjectReq& hideShowObjectReq() const;
+EnableDisableObjectReq& enableDisableObjectReq();
+const EnableDisableObjectReq& enableDisableObjectReq() const;
+SelectInputObjectReq& selectInputObjectReq();
+const SelectInputObjectReq& selectInputObjectReq() const;
+ControlAudioSignalReq& controlAudioSignalReq();
+const ControlAudioSignalReq& controlAudioSignalReq() const;
+SetAudioVolumeReq& setAudioVolumeReq();
+const SetAudioVolumeReq& setAudioVolumeReq() const;
+ChangeChildLocationReq& changeChildLocationReq();
+const ChangeChildLocationReq& changeChildLocationReq() const;
+ChangeSizeReq& changeSizeReq();
+const ChangeSizeReq& changeSizeReq() const;
+ChangeBackgroundColourReq& changeBackgroundColourReq();
+const ChangeBackgroundColourReq& changeBackgroundColourReq() const;
+ChangeNumericValueReq& changeNumericValueReq();
+const ChangeNumericValueReq& changeNumericValueReq() const;
+ChangeEndPointReq& changeEndPointReq();
+const ChangeEndPointReq& changeEndPointReq() const;
+ChangeFontAttributesReq& changeFontAttributesReq();
+const ChangeFontAttributesReq& changeFontAttributesReq() const;
+ChangeLineAttributesReq& changeLineAttributesReq();
+const ChangeLineAttributesReq& changeLineAttributesReq() const;
+ChangeFillAttributesReq& changeFillAttributesReq();
+const ChangeFillAttributesReq& changeFillAttributesReq() const;
+ChangeActiveMaskReq& changeActiveMaskReq();
+const ChangeActiveMaskReq& changeActiveMaskReq() const;
+ChangeSoftKeyMaskRes& changeSoftKeyMaskRes();
+const ChangeSoftKeyMaskRes& changeSoftKeyMaskRes() const;
+ChangeAttributeReq& changeAttributeReq();
+const ChangeAttributeReq& changeAttributeReq() const;
+ChangePriorityReq& changePriorityReq();
+const ChangePriorityReq& changePriorityReq() const;
+ChangeListItemReq& changeListItemReq();
+const ChangeListItemReq& changeListItemReq() const;
+DeleteObjectPoolReq& deleteObjectPoolReq();
+const DeleteObjectPoolReq& deleteObjectPoolReq() const;
+ChangeStringValueReq& changeStringValueReq();
+const ChangeStringValueReq& changeStringValueReq() const;
+ChangeChildPositionReq& changeChildPositionReq();
+const ChangeChildPositionReq& changeChildPositionReq() const;
+ChangeObjectLabelReq& changeObjectLabelReq();
+const ChangeObjectLabelReq& changeObjectLabelReq() const;
+ChangePolygonPointReq& changePolygonPointReq();
+const ChangePolygonPointReq& changePolygonPointReq() const;
+ChangePolygonScaleReq& changePolygonScaleReq();
+const ChangePolygonScaleReq& changePolygonScaleReq() const;
+GraphicsContextReq& graphicsContextReq();
+const GraphicsContextReq& graphicsContextReq() const;
+GetAttributeValueReq& getAttributeValueReq();
+const GetAttributeValueReq& getAttributeValueReq() const;
+SelectColourMapReq& selectColourMapReq();
+const SelectColourMapReq& selectColourMapReq() const;
+IdentifyVTReq& identifyVTReq();
+const IdentifyVTReq& identifyVTReq() const;
+ExecuteExtendedMacroReq& executeExtendedMacroReq();
+const ExecuteExtendedMacroReq& executeExtendedMacroReq() const;
+LockUnlockMaskReq& lockUnlockMaskReq();
+const LockUnlockMaskReq& lockUnlockMaskReq() const;
+ExecuteMacroReq& executeMacroReq();
+const ExecuteMacroReq& executeMacroReq() const;
+GetMemoryReq& getMemoryReq();
+const GetMemoryReq& getMemoryReq() const;
+GetNumberOfSoftKeysReq& getNumberOfSoftKeysReq();
+const GetNumberOfSoftKeysReq& getNumberOfSoftKeysReq() const;
+GetTextFontDataReq& getTextFontDataReq();
+const GetTextFontDataReq& getTextFontDataReq() const;
+GetHardwareReq& getHardwareReq();
+const GetHardwareReq& getHardwareReq() const;
+GetSupportedWidecharsReq& getSupportedWidecharsReq();
+const GetSupportedWidecharsReq& getSupportedWidecharsReq() const;
+GetWindowMaskDataReq& getWindowMaskDataReq();
+const GetWindowMaskDataReq& getWindowMaskDataReq() const;
+GetSupportedObjectsReq& getSupportedObjectsReq();
+const GetSupportedObjectsReq& getSupportedObjectsReq() const;
+StoreVersionReq& storeVersionReq();
+const StoreVersionReq& storeVersionReq() const;
+LoadVersionReq& loadVersionReq();
+const LoadVersionReq& loadVersionReq() const;
+DeleteVersionReq& deleteVersionReq();
+const DeleteVersionReq& deleteVersionReq() const;
+ExtendedGetVersionsReq& extendedGetVersionsReq();
+const ExtendedGetVersionsReq& extendedGetVersionsReq() const;
+ExtendedStoreVersionReq& extendedStoreVersionReq();
+const ExtendedStoreVersionReq& extendedStoreVersionReq() const;
+ExtendedLoadVersionReq& extendedLoadVersionReq();
+const ExtendedLoadVersionReq& extendedLoadVersionReq() const;
+ExtendedDeleteVersionReq& extendedDeleteVersionReq();
+const ExtendedDeleteVersionReq& extendedDeleteVersionReq() const;
+GetVersionsReq& getVersionsReq();
+const GetVersionsReq& getVersionsReq() const;
+UnsupportedVTFunctionInd& unsupportedVTFunctionInd();
+const UnsupportedVTFunctionInd& unsupportedVTFunctionInd() const;
+WorkingSetMaintenanceReq& workingSetMaintenanceReq();
+const WorkingSetMaintenanceReq& workingSetMaintenanceReq() const;
+inline union_selection_type get_selection() const { return union_selection; }
+boolean ischosen(union_selection_type checked_selection) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ECU2VT_template : public Base_Template {
+union {
+struct {
+ECU2VT::union_selection_type union_selection;
+union {
+SoftKeyActivationRes_template *field_softKeyActivationRes;
+ButtonActivationRes_template *field_buttonActivationRes;
+PointingEventRes_template *field_pointingEventRes;
+VTSelectInputObjectRes_template *field_vtSelectInputObjectRes;
+VTESCRes_template *field_vtESCRes;
+VTChangeNumericValueRes_template *field_vtChangeNumericValueRes;
+VTChangeActiveMaskRes_template *field_vtChangeActiveMaskRes;
+VTChangeSoftKeyMaskReq_template *field_vtChangeSoftKeyMaskReq;
+VTChangeStringValueRes_template *field_vtChangeStringValueRes;
+VTOnUserLayoutHideShowRes_template *field_vtOnUserLayoutHideShowRes;
+ObjectPoolTransferInd_template *field_objectPoolTransferInd;
+EndOfObjectPoolReq_template *field_endOfObjectPoolReq;
+VTfunction32ECU2VT_template *field_vtfunction32ECU2VT;
+VTfunction33ECU2VT_template *field_vtfunction33ECU2VT;
+VTfunction34ECU2VT_template *field_vtfunction34ECU2VT;
+VTfunction36ECU2VT_template *field_vtfunction36ECU2VT;
+VTfunction37ECU2VT_template *field_vtfunction37ECU2VT;
+AuxiliaryInputType2StatusInd_template *field_auxiliaryInputType2StatusInd;
+VTfunction39ECU2VT_template *field_vtfunction39ECU2VT;
+ESCreq_template *field_escReq;
+HideShowObjectReq_template *field_hideShowObjectReq;
+EnableDisableObjectReq_template *field_enableDisableObjectReq;
+SelectInputObjectReq_template *field_selectInputObjectReq;
+ControlAudioSignalReq_template *field_controlAudioSignalReq;
+SetAudioVolumeReq_template *field_setAudioVolumeReq;
+ChangeChildLocationReq_template *field_changeChildLocationReq;
+ChangeSizeReq_template *field_changeSizeReq;
+ChangeBackgroundColourReq_template *field_changeBackgroundColourReq;
+ChangeNumericValueReq_template *field_changeNumericValueReq;
+ChangeEndPointReq_template *field_changeEndPointReq;
+ChangeFontAttributesReq_template *field_changeFontAttributesReq;
+ChangeLineAttributesReq_template *field_changeLineAttributesReq;
+ChangeFillAttributesReq_template *field_changeFillAttributesReq;
+ChangeActiveMaskReq_template *field_changeActiveMaskReq;
+ChangeSoftKeyMaskRes_template *field_changeSoftKeyMaskRes;
+ChangeAttributeReq_template *field_changeAttributeReq;
+ChangePriorityReq_template *field_changePriorityReq;
+ChangeListItemReq_template *field_changeListItemReq;
+DeleteObjectPoolReq_template *field_deleteObjectPoolReq;
+ChangeStringValueReq_template *field_changeStringValueReq;
+ChangeChildPositionReq_template *field_changeChildPositionReq;
+ChangeObjectLabelReq_template *field_changeObjectLabelReq;
+ChangePolygonPointReq_template *field_changePolygonPointReq;
+ChangePolygonScaleReq_template *field_changePolygonScaleReq;
+GraphicsContextReq_template *field_graphicsContextReq;
+GetAttributeValueReq_template *field_getAttributeValueReq;
+SelectColourMapReq_template *field_selectColourMapReq;
+IdentifyVTReq_template *field_identifyVTReq;
+ExecuteExtendedMacroReq_template *field_executeExtendedMacroReq;
+LockUnlockMaskReq_template *field_lockUnlockMaskReq;
+ExecuteMacroReq_template *field_executeMacroReq;
+GetMemoryReq_template *field_getMemoryReq;
+GetNumberOfSoftKeysReq_template *field_getNumberOfSoftKeysReq;
+GetTextFontDataReq_template *field_getTextFontDataReq;
+GetHardwareReq_template *field_getHardwareReq;
+GetSupportedWidecharsReq_template *field_getSupportedWidecharsReq;
+GetWindowMaskDataReq_template *field_getWindowMaskDataReq;
+GetSupportedObjectsReq_template *field_getSupportedObjectsReq;
+StoreVersionReq_template *field_storeVersionReq;
+LoadVersionReq_template *field_loadVersionReq;
+DeleteVersionReq_template *field_deleteVersionReq;
+ExtendedGetVersionsReq_template *field_extendedGetVersionsReq;
+ExtendedStoreVersionReq_template *field_extendedStoreVersionReq;
+ExtendedLoadVersionReq_template *field_extendedLoadVersionReq;
+ExtendedDeleteVersionReq_template *field_extendedDeleteVersionReq;
+GetVersionsReq_template *field_getVersionsReq;
+UnsupportedVTFunctionInd_template *field_unsupportedVTFunctionInd;
+WorkingSetMaintenanceReq_template *field_workingSetMaintenanceReq;
+};
+} single_value;
+struct {
+unsigned int n_values;
+ECU2VT_template *list_value;
+} value_list;
+};
+void copy_value(const ECU2VT& other_value);
+
+void copy_template(const ECU2VT_template& other_value);
+
+public:
+ECU2VT_template();
+ECU2VT_template(template_sel other_value);
+ECU2VT_template(const ECU2VT& other_value);
+ECU2VT_template(const OPTIONAL<ECU2VT>& other_value);
+ECU2VT_template(const ECU2VT_template& other_value);
+~ECU2VT_template();
+void clean_up();
+ECU2VT_template& operator=(template_sel other_value);
+ECU2VT_template& operator=(const ECU2VT& other_value);
+ECU2VT_template& operator=(const OPTIONAL<ECU2VT>& other_value);
+ECU2VT_template& operator=(const ECU2VT_template& other_value);
+boolean match(const ECU2VT& other_value, boolean legacy = FALSE) const;
+boolean is_value() const;ECU2VT valueof() const;
+ECU2VT_template& list_item(unsigned int list_index) const;
+void set_type(template_sel template_type, unsigned int list_length);
+SoftKeyActivationRes_template& softKeyActivationRes();
+const SoftKeyActivationRes_template& softKeyActivationRes() const;
+ButtonActivationRes_template& buttonActivationRes();
+const ButtonActivationRes_template& buttonActivationRes() const;
+PointingEventRes_template& pointingEventRes();
+const PointingEventRes_template& pointingEventRes() const;
+VTSelectInputObjectRes_template& vtSelectInputObjectRes();
+const VTSelectInputObjectRes_template& vtSelectInputObjectRes() const;
+VTESCRes_template& vtESCRes();
+const VTESCRes_template& vtESCRes() const;
+VTChangeNumericValueRes_template& vtChangeNumericValueRes();
+const VTChangeNumericValueRes_template& vtChangeNumericValueRes() const;
+VTChangeActiveMaskRes_template& vtChangeActiveMaskRes();
+const VTChangeActiveMaskRes_template& vtChangeActiveMaskRes() const;
+VTChangeSoftKeyMaskReq_template& vtChangeSoftKeyMaskReq();
+const VTChangeSoftKeyMaskReq_template& vtChangeSoftKeyMaskReq() const;
+VTChangeStringValueRes_template& vtChangeStringValueRes();
+const VTChangeStringValueRes_template& vtChangeStringValueRes() const;
+VTOnUserLayoutHideShowRes_template& vtOnUserLayoutHideShowRes();
+const VTOnUserLayoutHideShowRes_template& vtOnUserLayoutHideShowRes() const;
+ObjectPoolTransferInd_template& objectPoolTransferInd();
+const ObjectPoolTransferInd_template& objectPoolTransferInd() const;
+EndOfObjectPoolReq_template& endOfObjectPoolReq();
+const EndOfObjectPoolReq_template& endOfObjectPoolReq() const;
+VTfunction32ECU2VT_template& vtfunction32ECU2VT();
+const VTfunction32ECU2VT_template& vtfunction32ECU2VT() const;
+VTfunction33ECU2VT_template& vtfunction33ECU2VT();
+const VTfunction33ECU2VT_template& vtfunction33ECU2VT() const;
+VTfunction34ECU2VT_template& vtfunction34ECU2VT();
+const VTfunction34ECU2VT_template& vtfunction34ECU2VT() const;
+VTfunction36ECU2VT_template& vtfunction36ECU2VT();
+const VTfunction36ECU2VT_template& vtfunction36ECU2VT() const;
+VTfunction37ECU2VT_template& vtfunction37ECU2VT();
+const VTfunction37ECU2VT_template& vtfunction37ECU2VT() const;
+AuxiliaryInputType2StatusInd_template& auxiliaryInputType2StatusInd();
+const AuxiliaryInputType2StatusInd_template& auxiliaryInputType2StatusInd() const;
+VTfunction39ECU2VT_template& vtfunction39ECU2VT();
+const VTfunction39ECU2VT_template& vtfunction39ECU2VT() const;
+ESCreq_template& escReq();
+const ESCreq_template& escReq() const;
+HideShowObjectReq_template& hideShowObjectReq();
+const HideShowObjectReq_template& hideShowObjectReq() const;
+EnableDisableObjectReq_template& enableDisableObjectReq();
+const EnableDisableObjectReq_template& enableDisableObjectReq() const;
+SelectInputObjectReq_template& selectInputObjectReq();
+const SelectInputObjectReq_template& selectInputObjectReq() const;
+ControlAudioSignalReq_template& controlAudioSignalReq();
+const ControlAudioSignalReq_template& controlAudioSignalReq() const;
+SetAudioVolumeReq_template& setAudioVolumeReq();
+const SetAudioVolumeReq_template& setAudioVolumeReq() const;
+ChangeChildLocationReq_template& changeChildLocationReq();
+const ChangeChildLocationReq_template& changeChildLocationReq() const;
+ChangeSizeReq_template& changeSizeReq();
+const ChangeSizeReq_template& changeSizeReq() const;
+ChangeBackgroundColourReq_template& changeBackgroundColourReq();
+const ChangeBackgroundColourReq_template& changeBackgroundColourReq() const;
+ChangeNumericValueReq_template& changeNumericValueReq();
+const ChangeNumericValueReq_template& changeNumericValueReq() const;
+ChangeEndPointReq_template& changeEndPointReq();
+const ChangeEndPointReq_template& changeEndPointReq() const;
+ChangeFontAttributesReq_template& changeFontAttributesReq();
+const ChangeFontAttributesReq_template& changeFontAttributesReq() const;
+ChangeLineAttributesReq_template& changeLineAttributesReq();
+const ChangeLineAttributesReq_template& changeLineAttributesReq() const;
+ChangeFillAttributesReq_template& changeFillAttributesReq();
+const ChangeFillAttributesReq_template& changeFillAttributesReq() const;
+ChangeActiveMaskReq_template& changeActiveMaskReq();
+const ChangeActiveMaskReq_template& changeActiveMaskReq() const;
+ChangeSoftKeyMaskRes_template& changeSoftKeyMaskRes();
+const ChangeSoftKeyMaskRes_template& changeSoftKeyMaskRes() const;
+ChangeAttributeReq_template& changeAttributeReq();
+const ChangeAttributeReq_template& changeAttributeReq() const;
+ChangePriorityReq_template& changePriorityReq();
+const ChangePriorityReq_template& changePriorityReq() const;
+ChangeListItemReq_template& changeListItemReq();
+const ChangeListItemReq_template& changeListItemReq() const;
+DeleteObjectPoolReq_template& deleteObjectPoolReq();
+const DeleteObjectPoolReq_template& deleteObjectPoolReq() const;
+ChangeStringValueReq_template& changeStringValueReq();
+const ChangeStringValueReq_template& changeStringValueReq() const;
+ChangeChildPositionReq_template& changeChildPositionReq();
+const ChangeChildPositionReq_template& changeChildPositionReq() const;
+ChangeObjectLabelReq_template& changeObjectLabelReq();
+const ChangeObjectLabelReq_template& changeObjectLabelReq() const;
+ChangePolygonPointReq_template& changePolygonPointReq();
+const ChangePolygonPointReq_template& changePolygonPointReq() const;
+ChangePolygonScaleReq_template& changePolygonScaleReq();
+const ChangePolygonScaleReq_template& changePolygonScaleReq() const;
+GraphicsContextReq_template& graphicsContextReq();
+const GraphicsContextReq_template& graphicsContextReq() const;
+GetAttributeValueReq_template& getAttributeValueReq();
+const GetAttributeValueReq_template& getAttributeValueReq() const;
+SelectColourMapReq_template& selectColourMapReq();
+const SelectColourMapReq_template& selectColourMapReq() const;
+IdentifyVTReq_template& identifyVTReq();
+const IdentifyVTReq_template& identifyVTReq() const;
+ExecuteExtendedMacroReq_template& executeExtendedMacroReq();
+const ExecuteExtendedMacroReq_template& executeExtendedMacroReq() const;
+LockUnlockMaskReq_template& lockUnlockMaskReq();
+const LockUnlockMaskReq_template& lockUnlockMaskReq() const;
+ExecuteMacroReq_template& executeMacroReq();
+const ExecuteMacroReq_template& executeMacroReq() const;
+GetMemoryReq_template& getMemoryReq();
+const GetMemoryReq_template& getMemoryReq() const;
+GetNumberOfSoftKeysReq_template& getNumberOfSoftKeysReq();
+const GetNumberOfSoftKeysReq_template& getNumberOfSoftKeysReq() const;
+GetTextFontDataReq_template& getTextFontDataReq();
+const GetTextFontDataReq_template& getTextFontDataReq() const;
+GetHardwareReq_template& getHardwareReq();
+const GetHardwareReq_template& getHardwareReq() const;
+GetSupportedWidecharsReq_template& getSupportedWidecharsReq();
+const GetSupportedWidecharsReq_template& getSupportedWidecharsReq() const;
+GetWindowMaskDataReq_template& getWindowMaskDataReq();
+const GetWindowMaskDataReq_template& getWindowMaskDataReq() const;
+GetSupportedObjectsReq_template& getSupportedObjectsReq();
+const GetSupportedObjectsReq_template& getSupportedObjectsReq() const;
+StoreVersionReq_template& storeVersionReq();
+const StoreVersionReq_template& storeVersionReq() const;
+LoadVersionReq_template& loadVersionReq();
+const LoadVersionReq_template& loadVersionReq() const;
+DeleteVersionReq_template& deleteVersionReq();
+const DeleteVersionReq_template& deleteVersionReq() const;
+ExtendedGetVersionsReq_template& extendedGetVersionsReq();
+const ExtendedGetVersionsReq_template& extendedGetVersionsReq() const;
+ExtendedStoreVersionReq_template& extendedStoreVersionReq();
+const ExtendedStoreVersionReq_template& extendedStoreVersionReq() const;
+ExtendedLoadVersionReq_template& extendedLoadVersionReq();
+const ExtendedLoadVersionReq_template& extendedLoadVersionReq() const;
+ExtendedDeleteVersionReq_template& extendedDeleteVersionReq();
+const ExtendedDeleteVersionReq_template& extendedDeleteVersionReq() const;
+GetVersionsReq_template& getVersionsReq();
+const GetVersionsReq_template& getVersionsReq() const;
+UnsupportedVTFunctionInd_template& unsupportedVTFunctionInd();
+const UnsupportedVTFunctionInd_template& unsupportedVTFunctionInd() const;
+WorkingSetMaintenanceReq_template& workingSetMaintenanceReq();
+const WorkingSetMaintenanceReq_template& workingSetMaintenanceReq() const;
+boolean ischosen(ECU2VT::union_selection_type checked_selection) const;
+void log() const;
+void log_match(const ECU2VT& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+
+/* Function prototypes */
+
+extern boolean operator==(null_type null_value, const PolygonPointArray& other_value);
+inline boolean operator!=(null_type null_value, const PolygonPointArray& other_value) { return !(null_value == other_value); }
+extern boolean operator==(null_type null_value, const WideCharRangeArray& other_value);
+inline boolean operator!=(null_type null_value, const WideCharRangeArray& other_value) { return !(null_value == other_value); }
+
+/* Global variable declarations */
+
+extern const XERdescriptor_t VTfunction_xer_;
+extern const TTCN_OERdescriptor_t VTfunction_oer_;
+extern const TTCN_Typedescriptor_t VTfunction_descr_;
+extern const TTCN_RAWdescriptor_t AnyObjectID_raw_;
+extern const XERdescriptor_t AnyObjectID_xer_;
+extern const TTCN_OERdescriptor_t AnyObjectID_oer_;
+extern const TTCN_Typedescriptor_t AnyObjectID_descr_;
+extern const TTCN_RAWdescriptor_t ValidObjectID_raw_;
+extern const XERdescriptor_t ValidObjectID_xer_;
+extern const TTCN_OERdescriptor_t ValidObjectID_oer_;
+extern const TTCN_Typedescriptor_t ValidObjectID_descr_;
+extern const TTCN_RAWdescriptor_t AttributeID_raw_;
+extern const XERdescriptor_t AttributeID_xer_;
+extern const TTCN_OERdescriptor_t AttributeID_oer_;
+extern const TTCN_Typedescriptor_t AttributeID_descr_;
+extern const TTCN_RAWdescriptor_t PercentType_raw_;
+extern const XERdescriptor_t PercentType_xer_;
+extern const TTCN_OERdescriptor_t PercentType_oer_;
+extern const TTCN_Typedescriptor_t PercentType_descr_;
+extern const TTCN_RAWdescriptor_t DeltaPositionType_raw_;
+extern const XERdescriptor_t DeltaPositionType_xer_;
+extern const TTCN_OERdescriptor_t DeltaPositionType_oer_;
+extern const TTCN_Typedescriptor_t DeltaPositionType_descr_;
+extern const TTCN_RAWdescriptor_t XPositionType_raw_;
+extern const XERdescriptor_t XPositionType_xer_;
+extern const TTCN_OERdescriptor_t XPositionType_oer_;
+extern const TTCN_Typedescriptor_t XPositionType_descr_;
+extern const TTCN_RAWdescriptor_t YPositionType_raw_;
+extern const XERdescriptor_t YPositionType_xer_;
+extern const TTCN_OERdescriptor_t YPositionType_oer_;
+extern const TTCN_Typedescriptor_t YPositionType_descr_;
+extern const TTCN_RAWdescriptor_t XOffsetType_raw_;
+extern const XERdescriptor_t XOffsetType_xer_;
+extern const TTCN_OERdescriptor_t XOffsetType_oer_;
+extern const TTCN_Typedescriptor_t XOffsetType_descr_;
+extern const TTCN_RAWdescriptor_t YOffsetType_raw_;
+extern const XERdescriptor_t YOffsetType_xer_;
+extern const TTCN_OERdescriptor_t YOffsetType_oer_;
+extern const TTCN_Typedescriptor_t YOffsetType_descr_;
+extern const TTCN_RAWdescriptor_t ViewportXAttribute_raw_;
+extern const XERdescriptor_t ViewportXAttribute_xer_;
+extern const TTCN_OERdescriptor_t ViewportXAttribute_oer_;
+extern const TTCN_Typedescriptor_t ViewportXAttribute_descr_;
+extern const TTCN_RAWdescriptor_t ViewportYAttribute_raw_;
+extern const XERdescriptor_t ViewportYAttribute_xer_;
+extern const TTCN_OERdescriptor_t ViewportYAttribute_oer_;
+extern const TTCN_Typedescriptor_t ViewportYAttribute_descr_;
+extern const XERdescriptor_t WidthType_xer_;
+extern const TTCN_OERdescriptor_t WidthType_oer_;
+extern const TTCN_Typedescriptor_t WidthType_descr_;
+extern const XERdescriptor_t HeightType_xer_;
+extern const TTCN_OERdescriptor_t HeightType_oer_;
+extern const TTCN_Typedescriptor_t HeightType_descr_;
+extern const XERdescriptor_t PositionType_xer_;
+extern const TTCN_OERdescriptor_t PositionType_oer_;
+extern const TTCN_Typedescriptor_t PositionType_descr_;
+extern const XERdescriptor_t KeyNumberType_xer_;
+extern const TTCN_OERdescriptor_t KeyNumberType_oer_;
+extern const TTCN_Typedescriptor_t KeyNumberType_descr_;
+extern const XERdescriptor_t FrequencyType_xer_;
+extern const TTCN_OERdescriptor_t FrequencyType_oer_;
+extern const TTCN_Typedescriptor_t FrequencyType_descr_;
+extern const XERdescriptor_t ColorType_xer_;
+extern const TTCN_OERdescriptor_t ColorType_oer_;
+extern const TTCN_Typedescriptor_t ColorType_descr_;
+extern const XERdescriptor_t FontSize_xer_;
+extern const TTCN_OERdescriptor_t FontSize_oer_;
+extern const TTCN_Typedescriptor_t FontSize_descr_;
+extern const XERdescriptor_t FontType_xer_;
+extern const TTCN_OERdescriptor_t FontType_oer_;
+extern const TTCN_Typedescriptor_t FontType_descr_;
+extern const XERdescriptor_t FontStyle_xer_;
+extern const TTCN_OERdescriptor_t FontStyle_oer_;
+extern const TTCN_Typedescriptor_t FontStyle_descr_;
+extern const XERdescriptor_t LineWidth_xer_;
+extern const TTCN_OERdescriptor_t LineWidth_oer_;
+extern const TTCN_Typedescriptor_t LineWidth_descr_;
+extern const XERdescriptor_t Priority_xer_;
+extern const TTCN_OERdescriptor_t Priority_oer_;
+extern const TTCN_Typedescriptor_t Priority_descr_;
+extern const XERdescriptor_t Index_xer_;
+extern const TTCN_OERdescriptor_t Index_oer_;
+extern const TTCN_Typedescriptor_t Index_descr_;
+extern const XERdescriptor_t LineArt_xer_;
+extern const TTCN_OERdescriptor_t LineArt_oer_;
+extern const TTCN_Typedescriptor_t LineArt_descr_;
+extern const TTCN_RAWdescriptor_t CHR7_raw_;
+extern const XERdescriptor_t CHR7_xer_;
+extern const TTCN_Typedescriptor_t CHR7_descr_;
+extern const XERdescriptor_t VersionLabel7Char_xer_;
+extern const TTCN_Typedescriptor_t VersionLabel7Char_descr_;
+extern const TTCN_RAWdescriptor_t SingleFloat_raw_;
+extern const XERdescriptor_t SingleFloat_xer_;
+extern const TTCN_OERdescriptor_t SingleFloat_oer_;
+extern const TTCN_Typedescriptor_t SingleFloat_descr_;
+extern const TTCN_RAWdescriptor_t e__SoftKeyActivationReq__KeyAactivationCode_raw_;
+extern const TTCN_Typedescriptor_t e__SoftKeyActivationReq__KeyAactivationCode_descr_;
+extern const XERdescriptor_t SoftKeyActivationReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t SoftKeyActivationReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t SoftKeyActivationReq_vtfunction_descr_;
+extern const XERdescriptor_t SoftKeyActivationReq_objectID_xer_;
+extern const TTCN_OERdescriptor_t SoftKeyActivationReq_objectID_oer_;
+extern const TTCN_Typedescriptor_t SoftKeyActivationReq_objectID_descr_;
+extern const XERdescriptor_t SoftKeyActivationReq_parentObjectID_xer_;
+extern const TTCN_OERdescriptor_t SoftKeyActivationReq_parentObjectID_oer_;
+extern const TTCN_Typedescriptor_t SoftKeyActivationReq_parentObjectID_descr_;
+extern const XERdescriptor_t SoftKeyActivationReq_keyNumber_xer_;
+extern const TTCN_OERdescriptor_t SoftKeyActivationReq_keyNumber_oer_;
+extern const TTCN_Typedescriptor_t SoftKeyActivationReq_keyNumber_descr_;
+extern const TTCN_RAWdescriptor_t SoftKeyActivationReq_reserved8_raw_;
+extern const XERdescriptor_t SoftKeyActivationReq_reserved8_xer_;
+extern const TTCN_OERdescriptor_t SoftKeyActivationReq_reserved8_oer_;
+extern const TTCN_Typedescriptor_t SoftKeyActivationReq_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t SoftKeyActivationReq_raw_;
+extern const TTCN_Typedescriptor_t SoftKeyActivationReq_descr_;
+extern const XERdescriptor_t SoftKeyActivationRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t SoftKeyActivationRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t SoftKeyActivationRes_vtfunction_descr_;
+extern const XERdescriptor_t SoftKeyActivationRes_objectID_xer_;
+extern const TTCN_OERdescriptor_t SoftKeyActivationRes_objectID_oer_;
+extern const TTCN_Typedescriptor_t SoftKeyActivationRes_objectID_descr_;
+extern const XERdescriptor_t SoftKeyActivationRes_parentObjectID_xer_;
+extern const TTCN_OERdescriptor_t SoftKeyActivationRes_parentObjectID_oer_;
+extern const TTCN_Typedescriptor_t SoftKeyActivationRes_parentObjectID_descr_;
+extern const XERdescriptor_t SoftKeyActivationRes_keyNumber_xer_;
+extern const TTCN_OERdescriptor_t SoftKeyActivationRes_keyNumber_oer_;
+extern const TTCN_Typedescriptor_t SoftKeyActivationRes_keyNumber_descr_;
+extern const TTCN_RAWdescriptor_t SoftKeyActivationRes_reserved8_raw_;
+extern const XERdescriptor_t SoftKeyActivationRes_reserved8_xer_;
+extern const TTCN_OERdescriptor_t SoftKeyActivationRes_reserved8_oer_;
+extern const TTCN_Typedescriptor_t SoftKeyActivationRes_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t SoftKeyActivationRes_raw_;
+extern const TTCN_Typedescriptor_t SoftKeyActivationRes_descr_;
+extern const TTCN_RAWdescriptor_t e__ButtonActivationReq__KeyAactivationCode_raw_;
+extern const TTCN_Typedescriptor_t e__ButtonActivationReq__KeyAactivationCode_descr_;
+extern const XERdescriptor_t ButtonActivationReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ButtonActivationReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ButtonActivationReq_vtfunction_descr_;
+extern const XERdescriptor_t ButtonActivationReq_objectID_xer_;
+extern const TTCN_OERdescriptor_t ButtonActivationReq_objectID_oer_;
+extern const TTCN_Typedescriptor_t ButtonActivationReq_objectID_descr_;
+extern const XERdescriptor_t ButtonActivationReq_parentObjectID_xer_;
+extern const TTCN_OERdescriptor_t ButtonActivationReq_parentObjectID_oer_;
+extern const TTCN_Typedescriptor_t ButtonActivationReq_parentObjectID_descr_;
+extern const XERdescriptor_t ButtonActivationReq_buttonKeyCode_xer_;
+extern const TTCN_OERdescriptor_t ButtonActivationReq_buttonKeyCode_oer_;
+extern const TTCN_Typedescriptor_t ButtonActivationReq_buttonKeyCode_descr_;
+extern const TTCN_RAWdescriptor_t ButtonActivationReq_reserved8_raw_;
+extern const XERdescriptor_t ButtonActivationReq_reserved8_xer_;
+extern const TTCN_OERdescriptor_t ButtonActivationReq_reserved8_oer_;
+extern const TTCN_Typedescriptor_t ButtonActivationReq_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t ButtonActivationReq_raw_;
+extern const TTCN_Typedescriptor_t ButtonActivationReq_descr_;
+extern const TTCN_RAWdescriptor_t e__ButtonActivationRes__KeyAactivationCode_raw_;
+extern const TTCN_Typedescriptor_t e__ButtonActivationRes__KeyAactivationCode_descr_;
+extern const XERdescriptor_t ButtonActivationRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ButtonActivationRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ButtonActivationRes_vtfunction_descr_;
+extern const XERdescriptor_t ButtonActivationRes_objectID_xer_;
+extern const TTCN_OERdescriptor_t ButtonActivationRes_objectID_oer_;
+extern const TTCN_Typedescriptor_t ButtonActivationRes_objectID_descr_;
+extern const XERdescriptor_t ButtonActivationRes_parentObjectID_xer_;
+extern const TTCN_OERdescriptor_t ButtonActivationRes_parentObjectID_oer_;
+extern const TTCN_Typedescriptor_t ButtonActivationRes_parentObjectID_descr_;
+extern const XERdescriptor_t ButtonActivationRes_buttonKeyCode_xer_;
+extern const TTCN_OERdescriptor_t ButtonActivationRes_buttonKeyCode_oer_;
+extern const TTCN_Typedescriptor_t ButtonActivationRes_buttonKeyCode_descr_;
+extern const TTCN_RAWdescriptor_t ButtonActivationRes_reserved8_raw_;
+extern const XERdescriptor_t ButtonActivationRes_reserved8_xer_;
+extern const TTCN_OERdescriptor_t ButtonActivationRes_reserved8_oer_;
+extern const TTCN_Typedescriptor_t ButtonActivationRes_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t ButtonActivationRes_raw_;
+extern const TTCN_Typedescriptor_t ButtonActivationRes_descr_;
+extern const TTCN_RAWdescriptor_t e__PointingEvent__touchState_raw_;
+extern const TTCN_Typedescriptor_t e__PointingEvent__touchState_descr_;
+extern const XERdescriptor_t PointingEventReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t PointingEventReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t PointingEventReq_vtfunction_descr_;
+extern const XERdescriptor_t PointingEventReq_x__position_xer_;
+extern const TTCN_OERdescriptor_t PointingEventReq_x__position_oer_;
+extern const TTCN_Typedescriptor_t PointingEventReq_x__position_descr_;
+extern const XERdescriptor_t PointingEventReq_y__position_xer_;
+extern const TTCN_OERdescriptor_t PointingEventReq_y__position_oer_;
+extern const TTCN_Typedescriptor_t PointingEventReq_y__position_descr_;
+extern const TTCN_RAWdescriptor_t PointingEventReq_reserved7_raw_;
+extern const XERdescriptor_t PointingEventReq_reserved7_xer_;
+extern const TTCN_OERdescriptor_t PointingEventReq_reserved7_oer_;
+extern const TTCN_Typedescriptor_t PointingEventReq_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t PointingEventReq_reserved8_raw_;
+extern const XERdescriptor_t PointingEventReq_reserved8_xer_;
+extern const TTCN_OERdescriptor_t PointingEventReq_reserved8_oer_;
+extern const TTCN_Typedescriptor_t PointingEventReq_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t PointingEventReq_raw_;
+extern const TTCN_Typedescriptor_t PointingEventReq_descr_;
+extern const XERdescriptor_t PointingEventRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t PointingEventRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t PointingEventRes_vtfunction_descr_;
+extern const XERdescriptor_t PointingEventRes_x__position_xer_;
+extern const TTCN_OERdescriptor_t PointingEventRes_x__position_oer_;
+extern const TTCN_Typedescriptor_t PointingEventRes_x__position_descr_;
+extern const XERdescriptor_t PointingEventRes_y__position_xer_;
+extern const TTCN_OERdescriptor_t PointingEventRes_y__position_oer_;
+extern const TTCN_Typedescriptor_t PointingEventRes_y__position_descr_;
+extern const TTCN_RAWdescriptor_t PointingEventRes_reserved7_raw_;
+extern const XERdescriptor_t PointingEventRes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t PointingEventRes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t PointingEventRes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t PointingEventRes_reserved8_raw_;
+extern const XERdescriptor_t PointingEventRes_reserved8_xer_;
+extern const TTCN_OERdescriptor_t PointingEventRes_reserved8_oer_;
+extern const TTCN_Typedescriptor_t PointingEventRes_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t PointingEventRes_raw_;
+extern const TTCN_Typedescriptor_t PointingEventRes_descr_;
+extern const TTCN_RAWdescriptor_t e__VTOnUserLayoutHideShow__state_raw_;
+extern const TTCN_Typedescriptor_t e__VTOnUserLayoutHideShow__state_descr_;
+extern const TTCN_RAWdescriptor_t e__VTSelectInputObject__selection_raw_;
+extern const TTCN_Typedescriptor_t e__VTSelectInputObject__selection_descr_;
+extern const XERdescriptor_t VTSelectInputObject__Bitmask_objectIsOpenForDataInput_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObject__Bitmask_objectIsOpenForDataInput_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObject__Bitmask_objectIsOpenForDataInput_descr_;
+extern const XERdescriptor_t VTSelectInputObject__Bitmask_reserved1_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObject__Bitmask_reserved1_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObject__Bitmask_reserved1_descr_;
+extern const XERdescriptor_t VTSelectInputObject__Bitmask_reserved2_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObject__Bitmask_reserved2_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObject__Bitmask_reserved2_descr_;
+extern const XERdescriptor_t VTSelectInputObject__Bitmask_reserved3_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObject__Bitmask_reserved3_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObject__Bitmask_reserved3_descr_;
+extern const XERdescriptor_t VTSelectInputObject__Bitmask_reserved4_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObject__Bitmask_reserved4_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObject__Bitmask_reserved4_descr_;
+extern const XERdescriptor_t VTSelectInputObject__Bitmask_reserved5_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObject__Bitmask_reserved5_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObject__Bitmask_reserved5_descr_;
+extern const XERdescriptor_t VTSelectInputObject__Bitmask_reserved6_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObject__Bitmask_reserved6_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObject__Bitmask_reserved6_descr_;
+extern const XERdescriptor_t VTSelectInputObject__Bitmask_reserved7_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObject__Bitmask_reserved7_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObject__Bitmask_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t VTSelectInputObject__Bitmask_raw_;
+extern const TTCN_Typedescriptor_t VTSelectInputObject__Bitmask_descr_;
+extern const XERdescriptor_t VTSelectInputObject__v4AndLater__Bitmask_objectIsOpenForDataInput_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObject__v4AndLater__Bitmask_objectIsOpenForDataInput_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObject__v4AndLater__Bitmask_objectIsOpenForDataInput_descr_;
+extern const XERdescriptor_t VTSelectInputObject__v4AndLater__Bitmask_reserved1_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObject__v4AndLater__Bitmask_reserved1_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObject__v4AndLater__Bitmask_reserved1_descr_;
+extern const XERdescriptor_t VTSelectInputObject__v4AndLater__Bitmask_reserved2_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObject__v4AndLater__Bitmask_reserved2_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObject__v4AndLater__Bitmask_reserved2_descr_;
+extern const XERdescriptor_t VTSelectInputObject__v4AndLater__Bitmask_reserved3_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObject__v4AndLater__Bitmask_reserved3_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObject__v4AndLater__Bitmask_reserved3_descr_;
+extern const XERdescriptor_t VTSelectInputObject__v4AndLater__Bitmask_reserved4_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObject__v4AndLater__Bitmask_reserved4_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObject__v4AndLater__Bitmask_reserved4_descr_;
+extern const XERdescriptor_t VTSelectInputObject__v4AndLater__Bitmask_reserved5_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObject__v4AndLater__Bitmask_reserved5_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObject__v4AndLater__Bitmask_reserved5_descr_;
+extern const XERdescriptor_t VTSelectInputObject__v4AndLater__Bitmask_reserved6_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObject__v4AndLater__Bitmask_reserved6_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObject__v4AndLater__Bitmask_reserved6_descr_;
+extern const XERdescriptor_t VTSelectInputObject__v4AndLater__Bitmask_reserved7_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObject__v4AndLater__Bitmask_reserved7_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObject__v4AndLater__Bitmask_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t VTSelectInputObject__v4AndLater__Bitmask_raw_;
+extern const TTCN_Typedescriptor_t VTSelectInputObject__v4AndLater__Bitmask_descr_;
+extern const XERdescriptor_t VTSelectInputObjectReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObjectReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObjectReq_vtfunction_descr_;
+extern const XERdescriptor_t VTSelectInputObjectReq_objectID_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObjectReq_objectID_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObjectReq_objectID_descr_;
+extern const TTCN_RAWdescriptor_t VTSelectInputObjectReq_reserved6_raw_;
+extern const XERdescriptor_t VTSelectInputObjectReq_reserved6_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObjectReq_reserved6_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObjectReq_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t VTSelectInputObjectReq_reserved7_raw_;
+extern const XERdescriptor_t VTSelectInputObjectReq_reserved7_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObjectReq_reserved7_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObjectReq_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t VTSelectInputObjectReq_reserved8_raw_;
+extern const XERdescriptor_t VTSelectInputObjectReq_reserved8_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObjectReq_reserved8_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObjectReq_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t VTSelectInputObjectReq_raw_;
+extern const TTCN_Typedescriptor_t VTSelectInputObjectReq_descr_;
+extern const XERdescriptor_t VTSelectInputObjectReq__v3AndPrior_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObjectReq__v3AndPrior_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObjectReq__v3AndPrior_vtfunction_descr_;
+extern const XERdescriptor_t VTSelectInputObjectReq__v3AndPrior_objectID_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObjectReq__v3AndPrior_objectID_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObjectReq__v3AndPrior_objectID_descr_;
+extern const TTCN_RAWdescriptor_t VTSelectInputObjectReq__v3AndPrior_reserved5_raw_;
+extern const XERdescriptor_t VTSelectInputObjectReq__v3AndPrior_reserved5_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObjectReq__v3AndPrior_reserved5_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObjectReq__v3AndPrior_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t VTSelectInputObjectReq__v3AndPrior_reserved6_raw_;
+extern const XERdescriptor_t VTSelectInputObjectReq__v3AndPrior_reserved6_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObjectReq__v3AndPrior_reserved6_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObjectReq__v3AndPrior_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t VTSelectInputObjectReq__v3AndPrior_reserved7_raw_;
+extern const XERdescriptor_t VTSelectInputObjectReq__v3AndPrior_reserved7_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObjectReq__v3AndPrior_reserved7_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObjectReq__v3AndPrior_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t VTSelectInputObjectReq__v3AndPrior_reserved8_raw_;
+extern const XERdescriptor_t VTSelectInputObjectReq__v3AndPrior_reserved8_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObjectReq__v3AndPrior_reserved8_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObjectReq__v3AndPrior_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t VTSelectInputObjectReq__v3AndPrior_raw_;
+extern const TTCN_Typedescriptor_t VTSelectInputObjectReq__v3AndPrior_descr_;
+extern const XERdescriptor_t VTSelectInputObjectReq__v4AndLater_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObjectReq__v4AndLater_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObjectReq__v4AndLater_vtfunction_descr_;
+extern const XERdescriptor_t VTSelectInputObjectReq__v4AndLater_objectID_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObjectReq__v4AndLater_objectID_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObjectReq__v4AndLater_objectID_descr_;
+extern const TTCN_RAWdescriptor_t VTSelectInputObjectReq__v4AndLater_reserved6_raw_;
+extern const XERdescriptor_t VTSelectInputObjectReq__v4AndLater_reserved6_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObjectReq__v4AndLater_reserved6_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObjectReq__v4AndLater_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t VTSelectInputObjectReq__v4AndLater_reserved7_raw_;
+extern const XERdescriptor_t VTSelectInputObjectReq__v4AndLater_reserved7_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObjectReq__v4AndLater_reserved7_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObjectReq__v4AndLater_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t VTSelectInputObjectReq__v4AndLater_reserved8_raw_;
+extern const XERdescriptor_t VTSelectInputObjectReq__v4AndLater_reserved8_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObjectReq__v4AndLater_reserved8_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObjectReq__v4AndLater_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t VTSelectInputObjectReq__v4AndLater_raw_;
+extern const TTCN_Typedescriptor_t VTSelectInputObjectReq__v4AndLater_descr_;
+extern const XERdescriptor_t VTSelectInputObjectRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObjectRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObjectRes_vtfunction_descr_;
+extern const XERdescriptor_t VTSelectInputObjectRes_objectID_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObjectRes_objectID_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObjectRes_objectID_descr_;
+extern const TTCN_RAWdescriptor_t VTSelectInputObjectRes_reserved6_raw_;
+extern const XERdescriptor_t VTSelectInputObjectRes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObjectRes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObjectRes_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t VTSelectInputObjectRes_reserved7_raw_;
+extern const XERdescriptor_t VTSelectInputObjectRes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObjectRes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObjectRes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t VTSelectInputObjectRes_reserved8_raw_;
+extern const XERdescriptor_t VTSelectInputObjectRes_reserved8_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObjectRes_reserved8_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObjectRes_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t VTSelectInputObjectRes_raw_;
+extern const TTCN_Typedescriptor_t VTSelectInputObjectRes_descr_;
+extern const XERdescriptor_t VTSelectInputObjectRes__v4AndPrior_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObjectRes__v4AndPrior_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObjectRes__v4AndPrior_vtfunction_descr_;
+extern const XERdescriptor_t VTSelectInputObjectRes__v4AndPrior_objectID_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObjectRes__v4AndPrior_objectID_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObjectRes__v4AndPrior_objectID_descr_;
+extern const TTCN_RAWdescriptor_t VTSelectInputObjectRes__v4AndPrior_reserved5_raw_;
+extern const XERdescriptor_t VTSelectInputObjectRes__v4AndPrior_reserved5_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObjectRes__v4AndPrior_reserved5_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObjectRes__v4AndPrior_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t VTSelectInputObjectRes__v4AndPrior_reserved6_raw_;
+extern const XERdescriptor_t VTSelectInputObjectRes__v4AndPrior_reserved6_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObjectRes__v4AndPrior_reserved6_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObjectRes__v4AndPrior_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t VTSelectInputObjectRes__v4AndPrior_reserved7_raw_;
+extern const XERdescriptor_t VTSelectInputObjectRes__v4AndPrior_reserved7_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObjectRes__v4AndPrior_reserved7_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObjectRes__v4AndPrior_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t VTSelectInputObjectRes__v4AndPrior_reserved8_raw_;
+extern const XERdescriptor_t VTSelectInputObjectRes__v4AndPrior_reserved8_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObjectRes__v4AndPrior_reserved8_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObjectRes__v4AndPrior_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t VTSelectInputObjectRes__v4AndPrior_raw_;
+extern const TTCN_Typedescriptor_t VTSelectInputObjectRes__v4AndPrior_descr_;
+extern const XERdescriptor_t VTSelectInputObjectRes__v5AndLater_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObjectRes__v5AndLater_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObjectRes__v5AndLater_vtfunction_descr_;
+extern const XERdescriptor_t VTSelectInputObjectRes__v5AndLater_objectID_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObjectRes__v5AndLater_objectID_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObjectRes__v5AndLater_objectID_descr_;
+extern const TTCN_RAWdescriptor_t VTSelectInputObjectRes__v5AndLater_reserved6_raw_;
+extern const XERdescriptor_t VTSelectInputObjectRes__v5AndLater_reserved6_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObjectRes__v5AndLater_reserved6_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObjectRes__v5AndLater_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t VTSelectInputObjectRes__v5AndLater_reserved7_raw_;
+extern const XERdescriptor_t VTSelectInputObjectRes__v5AndLater_reserved7_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObjectRes__v5AndLater_reserved7_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObjectRes__v5AndLater_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t VTSelectInputObjectRes__v5AndLater_reserved8_raw_;
+extern const XERdescriptor_t VTSelectInputObjectRes__v5AndLater_reserved8_xer_;
+extern const TTCN_OERdescriptor_t VTSelectInputObjectRes__v5AndLater_reserved8_oer_;
+extern const TTCN_Typedescriptor_t VTSelectInputObjectRes__v5AndLater_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t VTSelectInputObjectRes__v5AndLater_raw_;
+extern const TTCN_Typedescriptor_t VTSelectInputObjectRes__v5AndLater_descr_;
+extern const XERdescriptor_t VTESC__ErrorCodes_noInputFieldIsSelected_xer_;
+extern const TTCN_OERdescriptor_t VTESC__ErrorCodes_noInputFieldIsSelected_oer_;
+extern const TTCN_Typedescriptor_t VTESC__ErrorCodes_noInputFieldIsSelected_descr_;
+extern const XERdescriptor_t VTESC__ErrorCodes_reserved1_xer_;
+extern const TTCN_OERdescriptor_t VTESC__ErrorCodes_reserved1_oer_;
+extern const TTCN_Typedescriptor_t VTESC__ErrorCodes_reserved1_descr_;
+extern const XERdescriptor_t VTESC__ErrorCodes_reserved2_xer_;
+extern const TTCN_OERdescriptor_t VTESC__ErrorCodes_reserved2_oer_;
+extern const TTCN_Typedescriptor_t VTESC__ErrorCodes_reserved2_descr_;
+extern const XERdescriptor_t VTESC__ErrorCodes_reserved3_xer_;
+extern const TTCN_OERdescriptor_t VTESC__ErrorCodes_reserved3_oer_;
+extern const TTCN_Typedescriptor_t VTESC__ErrorCodes_reserved3_descr_;
+extern const XERdescriptor_t VTESC__ErrorCodes_anyOtherError_xer_;
+extern const TTCN_OERdescriptor_t VTESC__ErrorCodes_anyOtherError_oer_;
+extern const TTCN_Typedescriptor_t VTESC__ErrorCodes_anyOtherError_descr_;
+extern const XERdescriptor_t VTESC__ErrorCodes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t VTESC__ErrorCodes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t VTESC__ErrorCodes_reserved5_descr_;
+extern const XERdescriptor_t VTESC__ErrorCodes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t VTESC__ErrorCodes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t VTESC__ErrorCodes_reserved6_descr_;
+extern const XERdescriptor_t VTESC__ErrorCodes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t VTESC__ErrorCodes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t VTESC__ErrorCodes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t VTESC__ErrorCodes_raw_;
+extern const TTCN_Typedescriptor_t VTESC__ErrorCodes_descr_;
+extern const XERdescriptor_t VTESCReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t VTESCReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t VTESCReq_vtfunction_descr_;
+extern const XERdescriptor_t VTESCReq_objectID_xer_;
+extern const TTCN_OERdescriptor_t VTESCReq_objectID_oer_;
+extern const TTCN_Typedescriptor_t VTESCReq_objectID_descr_;
+extern const TTCN_RAWdescriptor_t VTESCReq_reserved5_raw_;
+extern const XERdescriptor_t VTESCReq_reserved5_xer_;
+extern const TTCN_OERdescriptor_t VTESCReq_reserved5_oer_;
+extern const TTCN_Typedescriptor_t VTESCReq_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t VTESCReq_reserved6_raw_;
+extern const XERdescriptor_t VTESCReq_reserved6_xer_;
+extern const TTCN_OERdescriptor_t VTESCReq_reserved6_oer_;
+extern const TTCN_Typedescriptor_t VTESCReq_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t VTESCReq_reserved7_raw_;
+extern const XERdescriptor_t VTESCReq_reserved7_xer_;
+extern const TTCN_OERdescriptor_t VTESCReq_reserved7_oer_;
+extern const TTCN_Typedescriptor_t VTESCReq_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t VTESCReq_reserved8_raw_;
+extern const XERdescriptor_t VTESCReq_reserved8_xer_;
+extern const TTCN_OERdescriptor_t VTESCReq_reserved8_oer_;
+extern const TTCN_Typedescriptor_t VTESCReq_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t VTESCReq_raw_;
+extern const TTCN_Typedescriptor_t VTESCReq_descr_;
+extern const XERdescriptor_t VTESCRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t VTESCRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t VTESCRes_vtfunction_descr_;
+extern const XERdescriptor_t VTESCRes_objectID_xer_;
+extern const TTCN_OERdescriptor_t VTESCRes_objectID_oer_;
+extern const TTCN_Typedescriptor_t VTESCRes_objectID_descr_;
+extern const TTCN_RAWdescriptor_t VTESCRes_reserved4_raw_;
+extern const XERdescriptor_t VTESCRes_reserved4_xer_;
+extern const TTCN_OERdescriptor_t VTESCRes_reserved4_oer_;
+extern const TTCN_Typedescriptor_t VTESCRes_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t VTESCRes_reserved5_raw_;
+extern const XERdescriptor_t VTESCRes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t VTESCRes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t VTESCRes_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t VTESCRes_reserved6_raw_;
+extern const XERdescriptor_t VTESCRes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t VTESCRes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t VTESCRes_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t VTESCRes_reserved7_raw_;
+extern const XERdescriptor_t VTESCRes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t VTESCRes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t VTESCRes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t VTESCRes_reserved8_raw_;
+extern const XERdescriptor_t VTESCRes_reserved8_xer_;
+extern const TTCN_OERdescriptor_t VTESCRes_reserved8_oer_;
+extern const TTCN_Typedescriptor_t VTESCRes_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t VTESCRes_raw_;
+extern const TTCN_Typedescriptor_t VTESCRes_descr_;
+extern const XERdescriptor_t VTChangeNumericValueReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t VTChangeNumericValueReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t VTChangeNumericValueReq_vtfunction_descr_;
+extern const XERdescriptor_t VTChangeNumericValueReq_objectID_xer_;
+extern const TTCN_OERdescriptor_t VTChangeNumericValueReq_objectID_oer_;
+extern const TTCN_Typedescriptor_t VTChangeNumericValueReq_objectID_descr_;
+extern const TTCN_RAWdescriptor_t VTChangeNumericValueReq_reserved4_raw_;
+extern const XERdescriptor_t VTChangeNumericValueReq_reserved4_xer_;
+extern const TTCN_OERdescriptor_t VTChangeNumericValueReq_reserved4_oer_;
+extern const TTCN_Typedescriptor_t VTChangeNumericValueReq_reserved4_descr_;
+extern const XERdescriptor_t VTChangeNumericValueReq_value___xer_;
+extern const TTCN_OERdescriptor_t VTChangeNumericValueReq_value___oer_;
+extern const TTCN_Typedescriptor_t VTChangeNumericValueReq_value___descr_;
+extern const TTCN_RAWdescriptor_t VTChangeNumericValueReq_raw_;
+extern const TTCN_Typedescriptor_t VTChangeNumericValueReq_descr_;
+extern const XERdescriptor_t VTChangeNumericValueRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t VTChangeNumericValueRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t VTChangeNumericValueRes_vtfunction_descr_;
+extern const XERdescriptor_t VTChangeNumericValueRes_objectID_xer_;
+extern const TTCN_OERdescriptor_t VTChangeNumericValueRes_objectID_oer_;
+extern const TTCN_Typedescriptor_t VTChangeNumericValueRes_objectID_descr_;
+extern const TTCN_RAWdescriptor_t VTChangeNumericValueRes_reserved4_raw_;
+extern const XERdescriptor_t VTChangeNumericValueRes_reserved4_xer_;
+extern const TTCN_OERdescriptor_t VTChangeNumericValueRes_reserved4_oer_;
+extern const TTCN_Typedescriptor_t VTChangeNumericValueRes_reserved4_descr_;
+extern const XERdescriptor_t VTChangeNumericValueRes_value___xer_;
+extern const TTCN_OERdescriptor_t VTChangeNumericValueRes_value___oer_;
+extern const TTCN_Typedescriptor_t VTChangeNumericValueRes_value___descr_;
+extern const TTCN_RAWdescriptor_t VTChangeNumericValueRes_raw_;
+extern const TTCN_Typedescriptor_t VTChangeNumericValueRes_descr_;
+extern const XERdescriptor_t VTChangeActiveMasErrorcodes_reserved0_xer_;
+extern const TTCN_OERdescriptor_t VTChangeActiveMasErrorcodes_reserved0_oer_;
+extern const TTCN_Typedescriptor_t VTChangeActiveMasErrorcodes_reserved0_descr_;
+extern const XERdescriptor_t VTChangeActiveMasErrorcodes_reserved1_xer_;
+extern const TTCN_OERdescriptor_t VTChangeActiveMasErrorcodes_reserved1_oer_;
+extern const TTCN_Typedescriptor_t VTChangeActiveMasErrorcodes_reserved1_descr_;
+extern const XERdescriptor_t VTChangeActiveMasErrorcodes_missingObjects_xer_;
+extern const TTCN_OERdescriptor_t VTChangeActiveMasErrorcodes_missingObjects_oer_;
+extern const TTCN_Typedescriptor_t VTChangeActiveMasErrorcodes_missingObjects_descr_;
+extern const XERdescriptor_t VTChangeActiveMasErrorcodes_maskOrChildObjectHasErrors_xer_;
+extern const TTCN_OERdescriptor_t VTChangeActiveMasErrorcodes_maskOrChildObjectHasErrors_oer_;
+extern const TTCN_Typedescriptor_t VTChangeActiveMasErrorcodes_maskOrChildObjectHasErrors_descr_;
+extern const XERdescriptor_t VTChangeActiveMasErrorcodes_anyOtherError_xer_;
+extern const TTCN_OERdescriptor_t VTChangeActiveMasErrorcodes_anyOtherError_oer_;
+extern const TTCN_Typedescriptor_t VTChangeActiveMasErrorcodes_anyOtherError_descr_;
+extern const XERdescriptor_t VTChangeActiveMasErrorcodes_poolBeingDeleted_xer_;
+extern const TTCN_OERdescriptor_t VTChangeActiveMasErrorcodes_poolBeingDeleted_oer_;
+extern const TTCN_Typedescriptor_t VTChangeActiveMasErrorcodes_poolBeingDeleted_descr_;
+extern const XERdescriptor_t VTChangeActiveMasErrorcodes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t VTChangeActiveMasErrorcodes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t VTChangeActiveMasErrorcodes_reserved6_descr_;
+extern const XERdescriptor_t VTChangeActiveMasErrorcodes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t VTChangeActiveMasErrorcodes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t VTChangeActiveMasErrorcodes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t VTChangeActiveMasErrorcodes_raw_;
+extern const TTCN_Typedescriptor_t VTChangeActiveMasErrorcodes_descr_;
+extern const XERdescriptor_t VTChangeActiveMaskReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t VTChangeActiveMaskReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t VTChangeActiveMaskReq_vtfunction_descr_;
+extern const XERdescriptor_t VTChangeActiveMaskReq_activeMaskOrWindowMaskOrKeyGroupObjectID_xer_;
+extern const TTCN_OERdescriptor_t VTChangeActiveMaskReq_activeMaskOrWindowMaskOrKeyGroupObjectID_oer_;
+extern const TTCN_Typedescriptor_t VTChangeActiveMaskReq_activeMaskOrWindowMaskOrKeyGroupObjectID_descr_;
+extern const XERdescriptor_t VTChangeActiveMaskReq_objectIDcontainingError_xer_;
+extern const TTCN_OERdescriptor_t VTChangeActiveMaskReq_objectIDcontainingError_oer_;
+extern const TTCN_Typedescriptor_t VTChangeActiveMaskReq_objectIDcontainingError_descr_;
+extern const XERdescriptor_t VTChangeActiveMaskReq_parentObjectIDofErrorObjectID_xer_;
+extern const TTCN_OERdescriptor_t VTChangeActiveMaskReq_parentObjectIDofErrorObjectID_oer_;
+extern const TTCN_Typedescriptor_t VTChangeActiveMaskReq_parentObjectIDofErrorObjectID_descr_;
+extern const TTCN_RAWdescriptor_t VTChangeActiveMaskReq_raw_;
+extern const TTCN_Typedescriptor_t VTChangeActiveMaskReq_descr_;
+extern const XERdescriptor_t VTChangeActiveMaskRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t VTChangeActiveMaskRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t VTChangeActiveMaskRes_vtfunction_descr_;
+extern const XERdescriptor_t VTChangeActiveMaskRes_activeMaskObjectID_xer_;
+extern const TTCN_OERdescriptor_t VTChangeActiveMaskRes_activeMaskObjectID_oer_;
+extern const TTCN_Typedescriptor_t VTChangeActiveMaskRes_activeMaskObjectID_descr_;
+extern const TTCN_RAWdescriptor_t VTChangeActiveMaskRes_reserved4_raw_;
+extern const XERdescriptor_t VTChangeActiveMaskRes_reserved4_xer_;
+extern const TTCN_OERdescriptor_t VTChangeActiveMaskRes_reserved4_oer_;
+extern const TTCN_Typedescriptor_t VTChangeActiveMaskRes_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t VTChangeActiveMaskRes_reserved5_raw_;
+extern const XERdescriptor_t VTChangeActiveMaskRes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t VTChangeActiveMaskRes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t VTChangeActiveMaskRes_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t VTChangeActiveMaskRes_reserved6_raw_;
+extern const XERdescriptor_t VTChangeActiveMaskRes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t VTChangeActiveMaskRes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t VTChangeActiveMaskRes_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t VTChangeActiveMaskRes_reserved7_raw_;
+extern const XERdescriptor_t VTChangeActiveMaskRes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t VTChangeActiveMaskRes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t VTChangeActiveMaskRes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t VTChangeActiveMaskRes_reserved8_raw_;
+extern const XERdescriptor_t VTChangeActiveMaskRes_reserved8_xer_;
+extern const TTCN_OERdescriptor_t VTChangeActiveMaskRes_reserved8_oer_;
+extern const TTCN_Typedescriptor_t VTChangeActiveMaskRes_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t VTChangeActiveMaskRes_raw_;
+extern const TTCN_Typedescriptor_t VTChangeActiveMaskRes_descr_;
+extern const XERdescriptor_t VTChangeSoftKeyMaskErrorCodes_reserved0_xer_;
+extern const TTCN_OERdescriptor_t VTChangeSoftKeyMaskErrorCodes_reserved0_oer_;
+extern const TTCN_Typedescriptor_t VTChangeSoftKeyMaskErrorCodes_reserved0_descr_;
+extern const XERdescriptor_t VTChangeSoftKeyMaskErrorCodes_reserved1_xer_;
+extern const TTCN_OERdescriptor_t VTChangeSoftKeyMaskErrorCodes_reserved1_oer_;
+extern const TTCN_Typedescriptor_t VTChangeSoftKeyMaskErrorCodes_reserved1_descr_;
+extern const XERdescriptor_t VTChangeSoftKeyMaskErrorCodes_missingObjects_xer_;
+extern const TTCN_OERdescriptor_t VTChangeSoftKeyMaskErrorCodes_missingObjects_oer_;
+extern const TTCN_Typedescriptor_t VTChangeSoftKeyMaskErrorCodes_missingObjects_descr_;
+extern const XERdescriptor_t VTChangeSoftKeyMaskErrorCodes_maskOrChildObjectHasErrors_xer_;
+extern const TTCN_OERdescriptor_t VTChangeSoftKeyMaskErrorCodes_maskOrChildObjectHasErrors_oer_;
+extern const TTCN_Typedescriptor_t VTChangeSoftKeyMaskErrorCodes_maskOrChildObjectHasErrors_descr_;
+extern const XERdescriptor_t VTChangeSoftKeyMaskErrorCodes_anyOtherError_xer_;
+extern const TTCN_OERdescriptor_t VTChangeSoftKeyMaskErrorCodes_anyOtherError_oer_;
+extern const TTCN_Typedescriptor_t VTChangeSoftKeyMaskErrorCodes_anyOtherError_descr_;
+extern const XERdescriptor_t VTChangeSoftKeyMaskErrorCodes_poolBeingDeleted_xer_;
+extern const TTCN_OERdescriptor_t VTChangeSoftKeyMaskErrorCodes_poolBeingDeleted_oer_;
+extern const TTCN_Typedescriptor_t VTChangeSoftKeyMaskErrorCodes_poolBeingDeleted_descr_;
+extern const XERdescriptor_t VTChangeSoftKeyMaskErrorCodes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t VTChangeSoftKeyMaskErrorCodes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t VTChangeSoftKeyMaskErrorCodes_reserved6_descr_;
+extern const XERdescriptor_t VTChangeSoftKeyMaskErrorCodes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t VTChangeSoftKeyMaskErrorCodes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t VTChangeSoftKeyMaskErrorCodes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t VTChangeSoftKeyMaskErrorCodes_raw_;
+extern const TTCN_Typedescriptor_t VTChangeSoftKeyMaskErrorCodes_descr_;
+extern const XERdescriptor_t VTChangeSoftKeyMaskReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t VTChangeSoftKeyMaskReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t VTChangeSoftKeyMaskReq_vtfunction_descr_;
+extern const XERdescriptor_t VTChangeSoftKeyMaskReq_dataOrAlarmMaskObjectID_xer_;
+extern const TTCN_OERdescriptor_t VTChangeSoftKeyMaskReq_dataOrAlarmMaskObjectID_oer_;
+extern const TTCN_Typedescriptor_t VTChangeSoftKeyMaskReq_dataOrAlarmMaskObjectID_descr_;
+extern const XERdescriptor_t VTChangeSoftKeyMaskReq_softKeyMaskObjectID_xer_;
+extern const TTCN_OERdescriptor_t VTChangeSoftKeyMaskReq_softKeyMaskObjectID_oer_;
+extern const TTCN_Typedescriptor_t VTChangeSoftKeyMaskReq_softKeyMaskObjectID_descr_;
+extern const TTCN_RAWdescriptor_t VTChangeSoftKeyMaskReq_reserved7_raw_;
+extern const XERdescriptor_t VTChangeSoftKeyMaskReq_reserved7_xer_;
+extern const TTCN_OERdescriptor_t VTChangeSoftKeyMaskReq_reserved7_oer_;
+extern const TTCN_Typedescriptor_t VTChangeSoftKeyMaskReq_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t VTChangeSoftKeyMaskReq_reserved8_raw_;
+extern const XERdescriptor_t VTChangeSoftKeyMaskReq_reserved8_xer_;
+extern const TTCN_OERdescriptor_t VTChangeSoftKeyMaskReq_reserved8_oer_;
+extern const TTCN_Typedescriptor_t VTChangeSoftKeyMaskReq_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t VTChangeSoftKeyMaskReq_raw_;
+extern const TTCN_Typedescriptor_t VTChangeSoftKeyMaskReq_descr_;
+extern const XERdescriptor_t VTChangeSoftKeyMaskRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t VTChangeSoftKeyMaskRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t VTChangeSoftKeyMaskRes_vtfunction_descr_;
+extern const XERdescriptor_t VTChangeSoftKeyMaskRes_dataOrAlarmMaskObjectID_xer_;
+extern const TTCN_OERdescriptor_t VTChangeSoftKeyMaskRes_dataOrAlarmMaskObjectID_oer_;
+extern const TTCN_Typedescriptor_t VTChangeSoftKeyMaskRes_dataOrAlarmMaskObjectID_descr_;
+extern const XERdescriptor_t VTChangeSoftKeyMaskRes_softKeyMaskObjectID_xer_;
+extern const TTCN_OERdescriptor_t VTChangeSoftKeyMaskRes_softKeyMaskObjectID_oer_;
+extern const TTCN_Typedescriptor_t VTChangeSoftKeyMaskRes_softKeyMaskObjectID_descr_;
+extern const TTCN_RAWdescriptor_t VTChangeSoftKeyMaskRes_reserved6_raw_;
+extern const XERdescriptor_t VTChangeSoftKeyMaskRes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t VTChangeSoftKeyMaskRes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t VTChangeSoftKeyMaskRes_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t VTChangeSoftKeyMaskRes_reserved7_raw_;
+extern const XERdescriptor_t VTChangeSoftKeyMaskRes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t VTChangeSoftKeyMaskRes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t VTChangeSoftKeyMaskRes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t VTChangeSoftKeyMaskRes_reserved8_raw_;
+extern const XERdescriptor_t VTChangeSoftKeyMaskRes_reserved8_xer_;
+extern const TTCN_OERdescriptor_t VTChangeSoftKeyMaskRes_reserved8_oer_;
+extern const TTCN_Typedescriptor_t VTChangeSoftKeyMaskRes_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t VTChangeSoftKeyMaskRes_raw_;
+extern const TTCN_Typedescriptor_t VTChangeSoftKeyMaskRes_descr_;
+extern const XERdescriptor_t VTChangeStringValueReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t VTChangeStringValueReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t VTChangeStringValueReq_vtfunction_descr_;
+extern const XERdescriptor_t VTChangeStringValueReq_inputStringOrStringVariableObjectID_xer_;
+extern const TTCN_OERdescriptor_t VTChangeStringValueReq_inputStringOrStringVariableObjectID_oer_;
+extern const TTCN_Typedescriptor_t VTChangeStringValueReq_inputStringOrStringVariableObjectID_descr_;
+extern const TTCN_RAWdescriptor_t VTChangeStringValueReq_numberOfBytes_raw_;
+extern const XERdescriptor_t VTChangeStringValueReq_numberOfBytes_xer_;
+extern const TTCN_OERdescriptor_t VTChangeStringValueReq_numberOfBytes_oer_;
+extern const TTCN_Typedescriptor_t VTChangeStringValueReq_numberOfBytes_descr_;
+extern const XERdescriptor_t VTChangeStringValueReq_enteredStringValue_xer_;
+extern const TTCN_OERdescriptor_t VTChangeStringValueReq_enteredStringValue_oer_;
+extern const TTCN_Typedescriptor_t VTChangeStringValueReq_enteredStringValue_descr_;
+extern const TTCN_RAWdescriptor_t VTChangeStringValueReq_raw_;
+extern const TTCN_Typedescriptor_t VTChangeStringValueReq_descr_;
+extern const XERdescriptor_t VTChangeStringValueRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t VTChangeStringValueRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t VTChangeStringValueRes_vtfunction_descr_;
+extern const TTCN_RAWdescriptor_t VTChangeStringValueRes_reserved2_raw_;
+extern const XERdescriptor_t VTChangeStringValueRes_reserved2_xer_;
+extern const TTCN_OERdescriptor_t VTChangeStringValueRes_reserved2_oer_;
+extern const TTCN_Typedescriptor_t VTChangeStringValueRes_reserved2_descr_;
+extern const TTCN_RAWdescriptor_t VTChangeStringValueRes_reserved3_raw_;
+extern const XERdescriptor_t VTChangeStringValueRes_reserved3_xer_;
+extern const TTCN_OERdescriptor_t VTChangeStringValueRes_reserved3_oer_;
+extern const TTCN_Typedescriptor_t VTChangeStringValueRes_reserved3_descr_;
+extern const XERdescriptor_t VTChangeStringValueRes_inputStringOrStringVariableObjectID_xer_;
+extern const TTCN_OERdescriptor_t VTChangeStringValueRes_inputStringOrStringVariableObjectID_oer_;
+extern const TTCN_Typedescriptor_t VTChangeStringValueRes_inputStringOrStringVariableObjectID_descr_;
+extern const TTCN_RAWdescriptor_t VTChangeStringValueRes_reserved6_raw_;
+extern const XERdescriptor_t VTChangeStringValueRes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t VTChangeStringValueRes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t VTChangeStringValueRes_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t VTChangeStringValueRes_reserved7_raw_;
+extern const XERdescriptor_t VTChangeStringValueRes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t VTChangeStringValueRes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t VTChangeStringValueRes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t VTChangeStringValueRes_reserved8_raw_;
+extern const XERdescriptor_t VTChangeStringValueRes_reserved8_xer_;
+extern const TTCN_OERdescriptor_t VTChangeStringValueRes_reserved8_oer_;
+extern const TTCN_Typedescriptor_t VTChangeStringValueRes_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t VTChangeStringValueRes_raw_;
+extern const TTCN_Typedescriptor_t VTChangeStringValueRes_descr_;
+extern const XERdescriptor_t VTOnUserLayoutHideShowReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t VTOnUserLayoutHideShowReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t VTOnUserLayoutHideShowReq_vtfunction_descr_;
+extern const XERdescriptor_t VTOnUserLayoutHideShowReq_objectID1_xer_;
+extern const TTCN_OERdescriptor_t VTOnUserLayoutHideShowReq_objectID1_oer_;
+extern const TTCN_Typedescriptor_t VTOnUserLayoutHideShowReq_objectID1_descr_;
+extern const XERdescriptor_t VTOnUserLayoutHideShowReq_objectID2_xer_;
+extern const TTCN_OERdescriptor_t VTOnUserLayoutHideShowReq_objectID2_oer_;
+extern const TTCN_Typedescriptor_t VTOnUserLayoutHideShowReq_objectID2_descr_;
+extern const TTCN_RAWdescriptor_t VTOnUserLayoutHideShowReq_reserved8_raw_;
+extern const XERdescriptor_t VTOnUserLayoutHideShowReq_reserved8_xer_;
+extern const TTCN_OERdescriptor_t VTOnUserLayoutHideShowReq_reserved8_oer_;
+extern const TTCN_Typedescriptor_t VTOnUserLayoutHideShowReq_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t VTOnUserLayoutHideShowReq_raw_;
+extern const TTCN_Typedescriptor_t VTOnUserLayoutHideShowReq_descr_;
+extern const XERdescriptor_t VTOnUserLayoutHideShowRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t VTOnUserLayoutHideShowRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t VTOnUserLayoutHideShowRes_vtfunction_descr_;
+extern const XERdescriptor_t VTOnUserLayoutHideShowRes_objectID1_xer_;
+extern const TTCN_OERdescriptor_t VTOnUserLayoutHideShowRes_objectID1_oer_;
+extern const TTCN_Typedescriptor_t VTOnUserLayoutHideShowRes_objectID1_descr_;
+extern const XERdescriptor_t VTOnUserLayoutHideShowRes_objectID2_xer_;
+extern const TTCN_OERdescriptor_t VTOnUserLayoutHideShowRes_objectID2_oer_;
+extern const TTCN_Typedescriptor_t VTOnUserLayoutHideShowRes_objectID2_descr_;
+extern const TTCN_RAWdescriptor_t VTOnUserLayoutHideShowRes_reserved8_raw_;
+extern const XERdescriptor_t VTOnUserLayoutHideShowRes_reserved8_xer_;
+extern const TTCN_OERdescriptor_t VTOnUserLayoutHideShowRes_reserved8_oer_;
+extern const TTCN_Typedescriptor_t VTOnUserLayoutHideShowRes_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t VTOnUserLayoutHideShowRes_raw_;
+extern const TTCN_Typedescriptor_t VTOnUserLayoutHideShowRes_descr_;
+extern const XERdescriptor_t VTControlAudioSignalTerminationParameterTerminationCause_AudioWasTerminated_xer_;
+extern const TTCN_OERdescriptor_t VTControlAudioSignalTerminationParameterTerminationCause_AudioWasTerminated_oer_;
+extern const TTCN_Typedescriptor_t VTControlAudioSignalTerminationParameterTerminationCause_AudioWasTerminated_descr_;
+extern const XERdescriptor_t VTControlAudioSignalTerminationParameterTerminationCause_reserved1_xer_;
+extern const TTCN_OERdescriptor_t VTControlAudioSignalTerminationParameterTerminationCause_reserved1_oer_;
+extern const TTCN_Typedescriptor_t VTControlAudioSignalTerminationParameterTerminationCause_reserved1_descr_;
+extern const XERdescriptor_t VTControlAudioSignalTerminationParameterTerminationCause_reserved2_xer_;
+extern const TTCN_OERdescriptor_t VTControlAudioSignalTerminationParameterTerminationCause_reserved2_oer_;
+extern const TTCN_Typedescriptor_t VTControlAudioSignalTerminationParameterTerminationCause_reserved2_descr_;
+extern const XERdescriptor_t VTControlAudioSignalTerminationParameterTerminationCause_reserved3_xer_;
+extern const TTCN_OERdescriptor_t VTControlAudioSignalTerminationParameterTerminationCause_reserved3_oer_;
+extern const TTCN_Typedescriptor_t VTControlAudioSignalTerminationParameterTerminationCause_reserved3_descr_;
+extern const XERdescriptor_t VTControlAudioSignalTerminationParameterTerminationCause_reserved4_xer_;
+extern const TTCN_OERdescriptor_t VTControlAudioSignalTerminationParameterTerminationCause_reserved4_oer_;
+extern const TTCN_Typedescriptor_t VTControlAudioSignalTerminationParameterTerminationCause_reserved4_descr_;
+extern const XERdescriptor_t VTControlAudioSignalTerminationParameterTerminationCause_reserved5_xer_;
+extern const TTCN_OERdescriptor_t VTControlAudioSignalTerminationParameterTerminationCause_reserved5_oer_;
+extern const TTCN_Typedescriptor_t VTControlAudioSignalTerminationParameterTerminationCause_reserved5_descr_;
+extern const XERdescriptor_t VTControlAudioSignalTerminationParameterTerminationCause_reserved6_xer_;
+extern const TTCN_OERdescriptor_t VTControlAudioSignalTerminationParameterTerminationCause_reserved6_oer_;
+extern const TTCN_Typedescriptor_t VTControlAudioSignalTerminationParameterTerminationCause_reserved6_descr_;
+extern const XERdescriptor_t VTControlAudioSignalTerminationParameterTerminationCause_reserved7_xer_;
+extern const TTCN_OERdescriptor_t VTControlAudioSignalTerminationParameterTerminationCause_reserved7_oer_;
+extern const TTCN_Typedescriptor_t VTControlAudioSignalTerminationParameterTerminationCause_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t VTControlAudioSignalTerminationParameterTerminationCause_raw_;
+extern const TTCN_Typedescriptor_t VTControlAudioSignalTerminationParameterTerminationCause_descr_;
+extern const XERdescriptor_t VTControlAudioSignalTerminationInd_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t VTControlAudioSignalTerminationInd_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t VTControlAudioSignalTerminationInd_vtfunction_descr_;
+extern const TTCN_RAWdescriptor_t VTControlAudioSignalTerminationInd_reserved3_raw_;
+extern const XERdescriptor_t VTControlAudioSignalTerminationInd_reserved3_xer_;
+extern const TTCN_OERdescriptor_t VTControlAudioSignalTerminationInd_reserved3_oer_;
+extern const TTCN_Typedescriptor_t VTControlAudioSignalTerminationInd_reserved3_descr_;
+extern const TTCN_RAWdescriptor_t VTControlAudioSignalTerminationInd_reserved4_raw_;
+extern const XERdescriptor_t VTControlAudioSignalTerminationInd_reserved4_xer_;
+extern const TTCN_OERdescriptor_t VTControlAudioSignalTerminationInd_reserved4_oer_;
+extern const TTCN_Typedescriptor_t VTControlAudioSignalTerminationInd_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t VTControlAudioSignalTerminationInd_reserved5_raw_;
+extern const XERdescriptor_t VTControlAudioSignalTerminationInd_reserved5_xer_;
+extern const TTCN_OERdescriptor_t VTControlAudioSignalTerminationInd_reserved5_oer_;
+extern const TTCN_Typedescriptor_t VTControlAudioSignalTerminationInd_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t VTControlAudioSignalTerminationInd_reserved6_raw_;
+extern const XERdescriptor_t VTControlAudioSignalTerminationInd_reserved6_xer_;
+extern const TTCN_OERdescriptor_t VTControlAudioSignalTerminationInd_reserved6_oer_;
+extern const TTCN_Typedescriptor_t VTControlAudioSignalTerminationInd_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t VTControlAudioSignalTerminationInd_reserved7_raw_;
+extern const XERdescriptor_t VTControlAudioSignalTerminationInd_reserved7_xer_;
+extern const TTCN_OERdescriptor_t VTControlAudioSignalTerminationInd_reserved7_oer_;
+extern const TTCN_Typedescriptor_t VTControlAudioSignalTerminationInd_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t VTControlAudioSignalTerminationInd_reserved8_raw_;
+extern const XERdescriptor_t VTControlAudioSignalTerminationInd_reserved8_xer_;
+extern const TTCN_OERdescriptor_t VTControlAudioSignalTerminationInd_reserved8_oer_;
+extern const TTCN_Typedescriptor_t VTControlAudioSignalTerminationInd_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t VTControlAudioSignalTerminationInd_raw_;
+extern const TTCN_Typedescriptor_t VTControlAudioSignalTerminationInd_descr_;
+extern const TTCN_RAWdescriptor_t ObjectPoolRecords_raw_;
+extern const XERdescriptor_t ObjectPoolRecords_xer_;
+extern const TTCN_OERdescriptor_t ObjectPoolRecords_oer_;
+extern const TTCN_Typedescriptor_t ObjectPoolRecords_descr_;
+extern const XERdescriptor_t ObjectPoolTransferInd_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ObjectPoolTransferInd_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ObjectPoolTransferInd_vtfunction_descr_;
+extern const XERdescriptor_t ObjectPoolTransferInd_objectPoolRecords_xer_;
+extern const TTCN_OERdescriptor_t ObjectPoolTransferInd_objectPoolRecords_oer_;
+extern const TTCN_Typedescriptor_t ObjectPoolTransferInd_objectPoolRecords_descr_;
+extern const TTCN_RAWdescriptor_t ObjectPoolTransferInd_raw_;
+extern const TTCN_Typedescriptor_t ObjectPoolTransferInd_descr_;
+extern const XERdescriptor_t EndOfObjectPoolReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t EndOfObjectPoolReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t EndOfObjectPoolReq_vtfunction_descr_;
+extern const TTCN_RAWdescriptor_t EndOfObjectPoolReq_reserved2_raw_;
+extern const XERdescriptor_t EndOfObjectPoolReq_reserved2_xer_;
+extern const TTCN_OERdescriptor_t EndOfObjectPoolReq_reserved2_oer_;
+extern const TTCN_Typedescriptor_t EndOfObjectPoolReq_reserved2_descr_;
+extern const TTCN_RAWdescriptor_t EndOfObjectPoolReq_reserved3_raw_;
+extern const XERdescriptor_t EndOfObjectPoolReq_reserved3_xer_;
+extern const TTCN_OERdescriptor_t EndOfObjectPoolReq_reserved3_oer_;
+extern const TTCN_Typedescriptor_t EndOfObjectPoolReq_reserved3_descr_;
+extern const TTCN_RAWdescriptor_t EndOfObjectPoolReq_reserved4_raw_;
+extern const XERdescriptor_t EndOfObjectPoolReq_reserved4_xer_;
+extern const TTCN_OERdescriptor_t EndOfObjectPoolReq_reserved4_oer_;
+extern const TTCN_Typedescriptor_t EndOfObjectPoolReq_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t EndOfObjectPoolReq_reserved5_raw_;
+extern const XERdescriptor_t EndOfObjectPoolReq_reserved5_xer_;
+extern const TTCN_OERdescriptor_t EndOfObjectPoolReq_reserved5_oer_;
+extern const TTCN_Typedescriptor_t EndOfObjectPoolReq_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t EndOfObjectPoolReq_reserved6_raw_;
+extern const XERdescriptor_t EndOfObjectPoolReq_reserved6_xer_;
+extern const TTCN_OERdescriptor_t EndOfObjectPoolReq_reserved6_oer_;
+extern const TTCN_Typedescriptor_t EndOfObjectPoolReq_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t EndOfObjectPoolReq_reserved7_raw_;
+extern const XERdescriptor_t EndOfObjectPoolReq_reserved7_xer_;
+extern const TTCN_OERdescriptor_t EndOfObjectPoolReq_reserved7_oer_;
+extern const TTCN_Typedescriptor_t EndOfObjectPoolReq_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t EndOfObjectPoolReq_reserved8_raw_;
+extern const XERdescriptor_t EndOfObjectPoolReq_reserved8_xer_;
+extern const TTCN_OERdescriptor_t EndOfObjectPoolReq_reserved8_oer_;
+extern const TTCN_Typedescriptor_t EndOfObjectPoolReq_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t EndOfObjectPoolReq_raw_;
+extern const TTCN_Typedescriptor_t EndOfObjectPoolReq_descr_;
+extern const XERdescriptor_t EndOfObjectPoolResErrorCodes_thereAreErrorsInTheObjectPool_xer_;
+extern const TTCN_OERdescriptor_t EndOfObjectPoolResErrorCodes_thereAreErrorsInTheObjectPool_oer_;
+extern const TTCN_Typedescriptor_t EndOfObjectPoolResErrorCodes_thereAreErrorsInTheObjectPool_descr_;
+extern const XERdescriptor_t EndOfObjectPoolResErrorCodes_vtRanOutOfMemoryDuringTransfer_xer_;
+extern const TTCN_OERdescriptor_t EndOfObjectPoolResErrorCodes_vtRanOutOfMemoryDuringTransfer_oer_;
+extern const TTCN_Typedescriptor_t EndOfObjectPoolResErrorCodes_vtRanOutOfMemoryDuringTransfer_descr_;
+extern const XERdescriptor_t EndOfObjectPoolResErrorCodes_reserved2_xer_;
+extern const TTCN_OERdescriptor_t EndOfObjectPoolResErrorCodes_reserved2_oer_;
+extern const TTCN_Typedescriptor_t EndOfObjectPoolResErrorCodes_reserved2_descr_;
+extern const XERdescriptor_t EndOfObjectPoolResErrorCodes_reserved3_xer_;
+extern const TTCN_OERdescriptor_t EndOfObjectPoolResErrorCodes_reserved3_oer_;
+extern const TTCN_Typedescriptor_t EndOfObjectPoolResErrorCodes_reserved3_descr_;
+extern const XERdescriptor_t EndOfObjectPoolResErrorCodes_anyOtherError_xer_;
+extern const TTCN_OERdescriptor_t EndOfObjectPoolResErrorCodes_anyOtherError_oer_;
+extern const TTCN_Typedescriptor_t EndOfObjectPoolResErrorCodes_anyOtherError_descr_;
+extern const XERdescriptor_t EndOfObjectPoolResErrorCodes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t EndOfObjectPoolResErrorCodes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t EndOfObjectPoolResErrorCodes_reserved5_descr_;
+extern const XERdescriptor_t EndOfObjectPoolResErrorCodes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t EndOfObjectPoolResErrorCodes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t EndOfObjectPoolResErrorCodes_reserved6_descr_;
+extern const XERdescriptor_t EndOfObjectPoolResErrorCodes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t EndOfObjectPoolResErrorCodes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t EndOfObjectPoolResErrorCodes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t EndOfObjectPoolResErrorCodes_raw_;
+extern const TTCN_Typedescriptor_t EndOfObjectPoolResErrorCodes_descr_;
+extern const XERdescriptor_t EndOfObjectPoolResObjectPoolErrorCodes_methodOrAttributeNotSupportedByTheVT_xer_;
+extern const TTCN_OERdescriptor_t EndOfObjectPoolResObjectPoolErrorCodes_methodOrAttributeNotSupportedByTheVT_oer_;
+extern const TTCN_Typedescriptor_t EndOfObjectPoolResObjectPoolErrorCodes_methodOrAttributeNotSupportedByTheVT_descr_;
+extern const XERdescriptor_t EndOfObjectPoolResObjectPoolErrorCodes_unknownObjectReference_xer_;
+extern const TTCN_OERdescriptor_t EndOfObjectPoolResObjectPoolErrorCodes_unknownObjectReference_oer_;
+extern const TTCN_Typedescriptor_t EndOfObjectPoolResObjectPoolErrorCodes_unknownObjectReference_descr_;
+extern const XERdescriptor_t EndOfObjectPoolResObjectPoolErrorCodes_anyOtherError_xer_;
+extern const TTCN_OERdescriptor_t EndOfObjectPoolResObjectPoolErrorCodes_anyOtherError_oer_;
+extern const TTCN_Typedescriptor_t EndOfObjectPoolResObjectPoolErrorCodes_anyOtherError_descr_;
+extern const XERdescriptor_t EndOfObjectPoolResObjectPoolErrorCodes_objectPoolWasDeletedFromVolatileMemory_xer_;
+extern const TTCN_OERdescriptor_t EndOfObjectPoolResObjectPoolErrorCodes_objectPoolWasDeletedFromVolatileMemory_oer_;
+extern const TTCN_Typedescriptor_t EndOfObjectPoolResObjectPoolErrorCodes_objectPoolWasDeletedFromVolatileMemory_descr_;
+extern const XERdescriptor_t EndOfObjectPoolResObjectPoolErrorCodes_reserved4_xer_;
+extern const TTCN_OERdescriptor_t EndOfObjectPoolResObjectPoolErrorCodes_reserved4_oer_;
+extern const TTCN_Typedescriptor_t EndOfObjectPoolResObjectPoolErrorCodes_reserved4_descr_;
+extern const XERdescriptor_t EndOfObjectPoolResObjectPoolErrorCodes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t EndOfObjectPoolResObjectPoolErrorCodes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t EndOfObjectPoolResObjectPoolErrorCodes_reserved5_descr_;
+extern const XERdescriptor_t EndOfObjectPoolResObjectPoolErrorCodes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t EndOfObjectPoolResObjectPoolErrorCodes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t EndOfObjectPoolResObjectPoolErrorCodes_reserved6_descr_;
+extern const XERdescriptor_t EndOfObjectPoolResObjectPoolErrorCodes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t EndOfObjectPoolResObjectPoolErrorCodes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t EndOfObjectPoolResObjectPoolErrorCodes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t EndOfObjectPoolResObjectPoolErrorCodes_raw_;
+extern const TTCN_Typedescriptor_t EndOfObjectPoolResObjectPoolErrorCodes_descr_;
+extern const XERdescriptor_t EndOfObjectPoolRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t EndOfObjectPoolRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t EndOfObjectPoolRes_vtfunction_descr_;
+extern const XERdescriptor_t EndOfObjectPoolRes_parentObjectIDoFaultyObject_xer_;
+extern const TTCN_OERdescriptor_t EndOfObjectPoolRes_parentObjectIDoFaultyObject_oer_;
+extern const TTCN_Typedescriptor_t EndOfObjectPoolRes_parentObjectIDoFaultyObject_descr_;
+extern const XERdescriptor_t EndOfObjectPoolRes_objectIDofFaultyObject_xer_;
+extern const TTCN_OERdescriptor_t EndOfObjectPoolRes_objectIDofFaultyObject_oer_;
+extern const TTCN_Typedescriptor_t EndOfObjectPoolRes_objectIDofFaultyObject_descr_;
+extern const TTCN_RAWdescriptor_t EndOfObjectPoolRes_reserved8_raw_;
+extern const XERdescriptor_t EndOfObjectPoolRes_reserved8_xer_;
+extern const TTCN_OERdescriptor_t EndOfObjectPoolRes_reserved8_oer_;
+extern const TTCN_Typedescriptor_t EndOfObjectPoolRes_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t EndOfObjectPoolRes_raw_;
+extern const TTCN_Typedescriptor_t EndOfObjectPoolRes_descr_;
+extern const XERdescriptor_t VTfunction32VT2ECU_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t VTfunction32VT2ECU_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t VTfunction32VT2ECU_vtfunction_descr_;
+extern const XERdescriptor_t VTfunction32VT2ECU_notImplementedYet_xer_;
+extern const TTCN_OERdescriptor_t VTfunction32VT2ECU_notImplementedYet_oer_;
+extern const TTCN_Typedescriptor_t VTfunction32VT2ECU_notImplementedYet_descr_;
+extern const TTCN_RAWdescriptor_t VTfunction32VT2ECU_raw_;
+extern const TTCN_Typedescriptor_t VTfunction32VT2ECU_descr_;
+extern const XERdescriptor_t VTfunction32ECU2VT_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t VTfunction32ECU2VT_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t VTfunction32ECU2VT_vtfunction_descr_;
+extern const XERdescriptor_t VTfunction32ECU2VT_notImplementedYet_xer_;
+extern const TTCN_OERdescriptor_t VTfunction32ECU2VT_notImplementedYet_oer_;
+extern const TTCN_Typedescriptor_t VTfunction32ECU2VT_notImplementedYet_descr_;
+extern const TTCN_RAWdescriptor_t VTfunction32ECU2VT_raw_;
+extern const TTCN_Typedescriptor_t VTfunction32ECU2VT_descr_;
+extern const XERdescriptor_t VTfunction33ECU2VT_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t VTfunction33ECU2VT_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t VTfunction33ECU2VT_vtfunction_descr_;
+extern const XERdescriptor_t VTfunction33ECU2VT_notImplementedYet_xer_;
+extern const TTCN_OERdescriptor_t VTfunction33ECU2VT_notImplementedYet_oer_;
+extern const TTCN_Typedescriptor_t VTfunction33ECU2VT_notImplementedYet_descr_;
+extern const TTCN_RAWdescriptor_t VTfunction33ECU2VT_raw_;
+extern const TTCN_Typedescriptor_t VTfunction33ECU2VT_descr_;
+extern const XERdescriptor_t VTfunction34VT2ECU_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t VTfunction34VT2ECU_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t VTfunction34VT2ECU_vtfunction_descr_;
+extern const XERdescriptor_t VTfunction34VT2ECU_notImplementedYet_xer_;
+extern const TTCN_OERdescriptor_t VTfunction34VT2ECU_notImplementedYet_oer_;
+extern const TTCN_Typedescriptor_t VTfunction34VT2ECU_notImplementedYet_descr_;
+extern const TTCN_RAWdescriptor_t VTfunction34VT2ECU_raw_;
+extern const TTCN_Typedescriptor_t VTfunction34VT2ECU_descr_;
+extern const XERdescriptor_t VTfunction34ECU2VT_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t VTfunction34ECU2VT_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t VTfunction34ECU2VT_vtfunction_descr_;
+extern const XERdescriptor_t VTfunction34ECU2VT_notImplementedYet_xer_;
+extern const TTCN_OERdescriptor_t VTfunction34ECU2VT_notImplementedYet_oer_;
+extern const TTCN_Typedescriptor_t VTfunction34ECU2VT_notImplementedYet_descr_;
+extern const TTCN_RAWdescriptor_t VTfunction34ECU2VT_raw_;
+extern const TTCN_Typedescriptor_t VTfunction34ECU2VT_descr_;
+extern const XERdescriptor_t VTfunction36VT2ECU_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t VTfunction36VT2ECU_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t VTfunction36VT2ECU_vtfunction_descr_;
+extern const XERdescriptor_t VTfunction36VT2ECU_notImplementedYet_xer_;
+extern const TTCN_OERdescriptor_t VTfunction36VT2ECU_notImplementedYet_oer_;
+extern const TTCN_Typedescriptor_t VTfunction36VT2ECU_notImplementedYet_descr_;
+extern const TTCN_RAWdescriptor_t VTfunction36VT2ECU_raw_;
+extern const TTCN_Typedescriptor_t VTfunction36VT2ECU_descr_;
+extern const XERdescriptor_t VTfunction36ECU2VT_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t VTfunction36ECU2VT_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t VTfunction36ECU2VT_vtfunction_descr_;
+extern const XERdescriptor_t VTfunction36ECU2VT_notImplementedYet_xer_;
+extern const TTCN_OERdescriptor_t VTfunction36ECU2VT_notImplementedYet_oer_;
+extern const TTCN_Typedescriptor_t VTfunction36ECU2VT_notImplementedYet_descr_;
+extern const TTCN_RAWdescriptor_t VTfunction36ECU2VT_raw_;
+extern const TTCN_Typedescriptor_t VTfunction36ECU2VT_descr_;
+extern const XERdescriptor_t VTfunction37VT2ECU_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t VTfunction37VT2ECU_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t VTfunction37VT2ECU_vtfunction_descr_;
+extern const XERdescriptor_t VTfunction37VT2ECU_notImplementedYet_xer_;
+extern const TTCN_OERdescriptor_t VTfunction37VT2ECU_notImplementedYet_oer_;
+extern const TTCN_Typedescriptor_t VTfunction37VT2ECU_notImplementedYet_descr_;
+extern const TTCN_RAWdescriptor_t VTfunction37VT2ECU_raw_;
+extern const TTCN_Typedescriptor_t VTfunction37VT2ECU_descr_;
+extern const XERdescriptor_t VTfunction37ECU2VT_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t VTfunction37ECU2VT_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t VTfunction37ECU2VT_vtfunction_descr_;
+extern const XERdescriptor_t VTfunction37ECU2VT_notImplementedYet_xer_;
+extern const TTCN_OERdescriptor_t VTfunction37ECU2VT_notImplementedYet_oer_;
+extern const TTCN_Typedescriptor_t VTfunction37ECU2VT_notImplementedYet_descr_;
+extern const TTCN_RAWdescriptor_t VTfunction37ECU2VT_raw_;
+extern const TTCN_Typedescriptor_t VTfunction37ECU2VT_descr_;
+extern const XERdescriptor_t AuxiliaryInputType2StatusInd__AuxiliaryInputObjectID_xer_;
+extern const TTCN_OERdescriptor_t AuxiliaryInputType2StatusInd__AuxiliaryInputObjectID_oer_;
+extern const TTCN_Typedescriptor_t AuxiliaryInputType2StatusInd__AuxiliaryInputObjectID_descr_;
+extern const XERdescriptor_t AuxiliaryInputType2StatusInd__OperatingStateType_xer_;
+extern const TTCN_OERdescriptor_t AuxiliaryInputType2StatusInd__OperatingStateType_oer_;
+extern const TTCN_Typedescriptor_t AuxiliaryInputType2StatusInd__OperatingStateType_descr_;
+extern const XERdescriptor_t AuxiliaryInputType2StatusInd_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t AuxiliaryInputType2StatusInd_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t AuxiliaryInputType2StatusInd_vtfunction_descr_;
+extern const XERdescriptor_t AuxiliaryInputType2StatusInd_auxiliaryInputObjectID_xer_;
+extern const TTCN_OERdescriptor_t AuxiliaryInputType2StatusInd_auxiliaryInputObjectID_oer_;
+extern const TTCN_Typedescriptor_t AuxiliaryInputType2StatusInd_auxiliaryInputObjectID_descr_;
+extern const XERdescriptor_t AuxiliaryInputType2StatusInd_value1_xer_;
+extern const TTCN_OERdescriptor_t AuxiliaryInputType2StatusInd_value1_oer_;
+extern const TTCN_Typedescriptor_t AuxiliaryInputType2StatusInd_value1_descr_;
+extern const XERdescriptor_t AuxiliaryInputType2StatusInd_value2_xer_;
+extern const TTCN_OERdescriptor_t AuxiliaryInputType2StatusInd_value2_oer_;
+extern const TTCN_Typedescriptor_t AuxiliaryInputType2StatusInd_value2_descr_;
+extern const XERdescriptor_t AuxiliaryInputType2StatusInd_operationState_xer_;
+extern const TTCN_OERdescriptor_t AuxiliaryInputType2StatusInd_operationState_oer_;
+extern const TTCN_Typedescriptor_t AuxiliaryInputType2StatusInd_operationState_descr_;
+extern const TTCN_RAWdescriptor_t AuxiliaryInputType2StatusInd_raw_;
+extern const TTCN_Typedescriptor_t AuxiliaryInputType2StatusInd_descr_;
+extern const XERdescriptor_t VTfunction39VT2ECU_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t VTfunction39VT2ECU_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t VTfunction39VT2ECU_vtfunction_descr_;
+extern const XERdescriptor_t VTfunction39VT2ECU_notImplementedYet_xer_;
+extern const TTCN_OERdescriptor_t VTfunction39VT2ECU_notImplementedYet_oer_;
+extern const TTCN_Typedescriptor_t VTfunction39VT2ECU_notImplementedYet_descr_;
+extern const TTCN_RAWdescriptor_t VTfunction39VT2ECU_raw_;
+extern const TTCN_Typedescriptor_t VTfunction39VT2ECU_descr_;
+extern const XERdescriptor_t VTfunction39ECU2VT_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t VTfunction39ECU2VT_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t VTfunction39ECU2VT_vtfunction_descr_;
+extern const XERdescriptor_t VTfunction39ECU2VT_notImplementedYet_xer_;
+extern const TTCN_OERdescriptor_t VTfunction39ECU2VT_notImplementedYet_oer_;
+extern const TTCN_Typedescriptor_t VTfunction39ECU2VT_notImplementedYet_descr_;
+extern const TTCN_RAWdescriptor_t VTfunction39ECU2VT_raw_;
+extern const TTCN_Typedescriptor_t VTfunction39ECU2VT_descr_;
+extern const XERdescriptor_t ESCreq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ESCreq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ESCreq_vtfunction_descr_;
+extern const TTCN_RAWdescriptor_t ESCreq_reserved2_raw_;
+extern const XERdescriptor_t ESCreq_reserved2_xer_;
+extern const TTCN_OERdescriptor_t ESCreq_reserved2_oer_;
+extern const TTCN_Typedescriptor_t ESCreq_reserved2_descr_;
+extern const TTCN_RAWdescriptor_t ESCreq_reserved3_raw_;
+extern const XERdescriptor_t ESCreq_reserved3_xer_;
+extern const TTCN_OERdescriptor_t ESCreq_reserved3_oer_;
+extern const TTCN_Typedescriptor_t ESCreq_reserved3_descr_;
+extern const TTCN_RAWdescriptor_t ESCreq_reserved4_raw_;
+extern const XERdescriptor_t ESCreq_reserved4_xer_;
+extern const TTCN_OERdescriptor_t ESCreq_reserved4_oer_;
+extern const TTCN_Typedescriptor_t ESCreq_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t ESCreq_reserved5_raw_;
+extern const XERdescriptor_t ESCreq_reserved5_xer_;
+extern const TTCN_OERdescriptor_t ESCreq_reserved5_oer_;
+extern const TTCN_Typedescriptor_t ESCreq_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t ESCreq_reserved6_raw_;
+extern const XERdescriptor_t ESCreq_reserved6_xer_;
+extern const TTCN_OERdescriptor_t ESCreq_reserved6_oer_;
+extern const TTCN_Typedescriptor_t ESCreq_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t ESCreq_reserved7_raw_;
+extern const XERdescriptor_t ESCreq_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ESCreq_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ESCreq_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ESCreq_reserved8_raw_;
+extern const XERdescriptor_t ESCreq_reserved8_xer_;
+extern const TTCN_OERdescriptor_t ESCreq_reserved8_oer_;
+extern const TTCN_Typedescriptor_t ESCreq_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t ESCreq_raw_;
+extern const TTCN_Typedescriptor_t ESCreq_descr_;
+extern const XERdescriptor_t ESCerrorCodes_NoInputFieldIsOpenForInputESCignored_xer_;
+extern const TTCN_OERdescriptor_t ESCerrorCodes_NoInputFieldIsOpenForInputESCignored_oer_;
+extern const TTCN_Typedescriptor_t ESCerrorCodes_NoInputFieldIsOpenForInputESCignored_descr_;
+extern const XERdescriptor_t ESCerrorCodes_reserved1_xer_;
+extern const TTCN_OERdescriptor_t ESCerrorCodes_reserved1_oer_;
+extern const TTCN_Typedescriptor_t ESCerrorCodes_reserved1_descr_;
+extern const XERdescriptor_t ESCerrorCodes_reserved2_xer_;
+extern const TTCN_OERdescriptor_t ESCerrorCodes_reserved2_oer_;
+extern const TTCN_Typedescriptor_t ESCerrorCodes_reserved2_descr_;
+extern const XERdescriptor_t ESCerrorCodes_reserved3_xer_;
+extern const TTCN_OERdescriptor_t ESCerrorCodes_reserved3_oer_;
+extern const TTCN_Typedescriptor_t ESCerrorCodes_reserved3_descr_;
+extern const XERdescriptor_t ESCerrorCodes_anyOtherError_xer_;
+extern const TTCN_OERdescriptor_t ESCerrorCodes_anyOtherError_oer_;
+extern const TTCN_Typedescriptor_t ESCerrorCodes_anyOtherError_descr_;
+extern const XERdescriptor_t ESCerrorCodes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t ESCerrorCodes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t ESCerrorCodes_reserved5_descr_;
+extern const XERdescriptor_t ESCerrorCodes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t ESCerrorCodes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t ESCerrorCodes_reserved6_descr_;
+extern const XERdescriptor_t ESCerrorCodes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ESCerrorCodes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ESCerrorCodes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ESCerrorCodes_raw_;
+extern const TTCN_Typedescriptor_t ESCerrorCodes_descr_;
+extern const XERdescriptor_t ESCres_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ESCres_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ESCres_vtfunction_descr_;
+extern const XERdescriptor_t ESCres_ObjectIDwhereInputWasAborted_xer_;
+extern const TTCN_OERdescriptor_t ESCres_ObjectIDwhereInputWasAborted_oer_;
+extern const TTCN_Typedescriptor_t ESCres_ObjectIDwhereInputWasAborted_descr_;
+extern const TTCN_RAWdescriptor_t ESCres_reserved5_raw_;
+extern const XERdescriptor_t ESCres_reserved5_xer_;
+extern const TTCN_OERdescriptor_t ESCres_reserved5_oer_;
+extern const TTCN_Typedescriptor_t ESCres_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t ESCres_reserved6_raw_;
+extern const XERdescriptor_t ESCres_reserved6_xer_;
+extern const TTCN_OERdescriptor_t ESCres_reserved6_oer_;
+extern const TTCN_Typedescriptor_t ESCres_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t ESCres_reserved7_raw_;
+extern const XERdescriptor_t ESCres_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ESCres_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ESCres_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ESCres_reserved8_raw_;
+extern const XERdescriptor_t ESCres_reserved8_xer_;
+extern const TTCN_OERdescriptor_t ESCres_reserved8_oer_;
+extern const TTCN_Typedescriptor_t ESCres_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t ESCres_raw_;
+extern const TTCN_Typedescriptor_t ESCres_descr_;
+extern const TTCN_RAWdescriptor_t e__HideShowObject__state_raw_;
+extern const TTCN_Typedescriptor_t e__HideShowObject__state_descr_;
+extern const XERdescriptor_t HideShowObjectReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t HideShowObjectReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t HideShowObjectReq_vtfunction_descr_;
+extern const XERdescriptor_t HideShowObjectReq_objectID_xer_;
+extern const TTCN_OERdescriptor_t HideShowObjectReq_objectID_oer_;
+extern const TTCN_Typedescriptor_t HideShowObjectReq_objectID_descr_;
+extern const TTCN_RAWdescriptor_t HideShowObjectReq_reserved5_raw_;
+extern const XERdescriptor_t HideShowObjectReq_reserved5_xer_;
+extern const TTCN_OERdescriptor_t HideShowObjectReq_reserved5_oer_;
+extern const TTCN_Typedescriptor_t HideShowObjectReq_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t HideShowObjectReq_reserved6_raw_;
+extern const XERdescriptor_t HideShowObjectReq_reserved6_xer_;
+extern const TTCN_OERdescriptor_t HideShowObjectReq_reserved6_oer_;
+extern const TTCN_Typedescriptor_t HideShowObjectReq_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t HideShowObjectReq_reserved7_raw_;
+extern const XERdescriptor_t HideShowObjectReq_reserved7_xer_;
+extern const TTCN_OERdescriptor_t HideShowObjectReq_reserved7_oer_;
+extern const TTCN_Typedescriptor_t HideShowObjectReq_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t HideShowObjectReq_reserved8_raw_;
+extern const XERdescriptor_t HideShowObjectReq_reserved8_xer_;
+extern const TTCN_OERdescriptor_t HideShowObjectReq_reserved8_oer_;
+extern const TTCN_Typedescriptor_t HideShowObjectReq_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t HideShowObjectReq_raw_;
+extern const TTCN_Typedescriptor_t HideShowObjectReq_descr_;
+extern const XERdescriptor_t HideShowObjectRes__errorCodes_referencesToMissingObjects_xer_;
+extern const TTCN_OERdescriptor_t HideShowObjectRes__errorCodes_referencesToMissingObjects_oer_;
+extern const TTCN_Typedescriptor_t HideShowObjectRes__errorCodes_referencesToMissingObjects_descr_;
+extern const XERdescriptor_t HideShowObjectRes__errorCodes_invalidObjectID_xer_;
+extern const TTCN_OERdescriptor_t HideShowObjectRes__errorCodes_invalidObjectID_oer_;
+extern const TTCN_Typedescriptor_t HideShowObjectRes__errorCodes_invalidObjectID_descr_;
+extern const XERdescriptor_t HideShowObjectRes__errorCodes_undefined_xer_;
+extern const TTCN_OERdescriptor_t HideShowObjectRes__errorCodes_undefined_oer_;
+extern const TTCN_Typedescriptor_t HideShowObjectRes__errorCodes_undefined_descr_;
+extern const XERdescriptor_t HideShowObjectRes__errorCodes_anyOtherError_xer_;
+extern const TTCN_OERdescriptor_t HideShowObjectRes__errorCodes_anyOtherError_oer_;
+extern const TTCN_Typedescriptor_t HideShowObjectRes__errorCodes_anyOtherError_descr_;
+extern const XERdescriptor_t HideShowObjectRes__errorCodes_reserved4_xer_;
+extern const TTCN_OERdescriptor_t HideShowObjectRes__errorCodes_reserved4_oer_;
+extern const TTCN_Typedescriptor_t HideShowObjectRes__errorCodes_reserved4_descr_;
+extern const XERdescriptor_t HideShowObjectRes__errorCodes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t HideShowObjectRes__errorCodes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t HideShowObjectRes__errorCodes_reserved5_descr_;
+extern const XERdescriptor_t HideShowObjectRes__errorCodes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t HideShowObjectRes__errorCodes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t HideShowObjectRes__errorCodes_reserved6_descr_;
+extern const XERdescriptor_t HideShowObjectRes__errorCodes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t HideShowObjectRes__errorCodes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t HideShowObjectRes__errorCodes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t HideShowObjectRes__errorCodes_raw_;
+extern const TTCN_Typedescriptor_t HideShowObjectRes__errorCodes_descr_;
+extern const XERdescriptor_t HideShowObjectRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t HideShowObjectRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t HideShowObjectRes_vtfunction_descr_;
+extern const XERdescriptor_t HideShowObjectRes_objectID_xer_;
+extern const TTCN_OERdescriptor_t HideShowObjectRes_objectID_oer_;
+extern const TTCN_Typedescriptor_t HideShowObjectRes_objectID_descr_;
+extern const TTCN_RAWdescriptor_t HideShowObjectRes_reserved6_raw_;
+extern const XERdescriptor_t HideShowObjectRes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t HideShowObjectRes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t HideShowObjectRes_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t HideShowObjectRes_reserved7_raw_;
+extern const XERdescriptor_t HideShowObjectRes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t HideShowObjectRes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t HideShowObjectRes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t HideShowObjectRes_reserved8_raw_;
+extern const XERdescriptor_t HideShowObjectRes_reserved8_xer_;
+extern const TTCN_OERdescriptor_t HideShowObjectRes_reserved8_oer_;
+extern const TTCN_Typedescriptor_t HideShowObjectRes_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t HideShowObjectRes_raw_;
+extern const TTCN_Typedescriptor_t HideShowObjectRes_descr_;
+extern const XERdescriptor_t VTfunction161VT2ECU_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t VTfunction161VT2ECU_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t VTfunction161VT2ECU_vtfunction_descr_;
+extern const XERdescriptor_t VTfunction161VT2ECU_notImplementedYet_xer_;
+extern const TTCN_OERdescriptor_t VTfunction161VT2ECU_notImplementedYet_oer_;
+extern const TTCN_Typedescriptor_t VTfunction161VT2ECU_notImplementedYet_descr_;
+extern const TTCN_RAWdescriptor_t VTfunction161VT2ECU_raw_;
+extern const TTCN_Typedescriptor_t VTfunction161VT2ECU_descr_;
+extern const XERdescriptor_t VTfunction161ECU2VT_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t VTfunction161ECU2VT_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t VTfunction161ECU2VT_vtfunction_descr_;
+extern const XERdescriptor_t VTfunction161ECU2VT_notImplementedYet_xer_;
+extern const TTCN_OERdescriptor_t VTfunction161ECU2VT_notImplementedYet_oer_;
+extern const TTCN_Typedescriptor_t VTfunction161ECU2VT_notImplementedYet_descr_;
+extern const TTCN_RAWdescriptor_t VTfunction161ECU2VT_raw_;
+extern const TTCN_Typedescriptor_t VTfunction161ECU2VT_descr_;
+extern const TTCN_RAWdescriptor_t e__EnableDisableObject__DisableEnable_raw_;
+extern const TTCN_Typedescriptor_t e__EnableDisableObject__DisableEnable_descr_;
+extern const XERdescriptor_t EnableDisableObjectReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t EnableDisableObjectReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t EnableDisableObjectReq_vtfunction_descr_;
+extern const XERdescriptor_t EnableDisableObjectReq_objectID_xer_;
+extern const TTCN_OERdescriptor_t EnableDisableObjectReq_objectID_oer_;
+extern const TTCN_Typedescriptor_t EnableDisableObjectReq_objectID_descr_;
+extern const TTCN_RAWdescriptor_t EnableDisableObjectReq_reserved5_raw_;
+extern const XERdescriptor_t EnableDisableObjectReq_reserved5_xer_;
+extern const TTCN_OERdescriptor_t EnableDisableObjectReq_reserved5_oer_;
+extern const TTCN_Typedescriptor_t EnableDisableObjectReq_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t EnableDisableObjectReq_reserved6_raw_;
+extern const XERdescriptor_t EnableDisableObjectReq_reserved6_xer_;
+extern const TTCN_OERdescriptor_t EnableDisableObjectReq_reserved6_oer_;
+extern const TTCN_Typedescriptor_t EnableDisableObjectReq_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t EnableDisableObjectReq_reserved7_raw_;
+extern const XERdescriptor_t EnableDisableObjectReq_reserved7_xer_;
+extern const TTCN_OERdescriptor_t EnableDisableObjectReq_reserved7_oer_;
+extern const TTCN_Typedescriptor_t EnableDisableObjectReq_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t EnableDisableObjectReq_reserved8_raw_;
+extern const XERdescriptor_t EnableDisableObjectReq_reserved8_xer_;
+extern const TTCN_OERdescriptor_t EnableDisableObjectReq_reserved8_oer_;
+extern const TTCN_Typedescriptor_t EnableDisableObjectReq_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t EnableDisableObjectReq_raw_;
+extern const TTCN_Typedescriptor_t EnableDisableObjectReq_descr_;
+extern const XERdescriptor_t EnableDisableObjectRes__errorCodes_reserved0_xer_;
+extern const TTCN_OERdescriptor_t EnableDisableObjectRes__errorCodes_reserved0_oer_;
+extern const TTCN_Typedescriptor_t EnableDisableObjectRes__errorCodes_reserved0_descr_;
+extern const XERdescriptor_t EnableDisableObjectRes__errorCodes_invalidObjectID_xer_;
+extern const TTCN_OERdescriptor_t EnableDisableObjectRes__errorCodes_invalidObjectID_oer_;
+extern const TTCN_Typedescriptor_t EnableDisableObjectRes__errorCodes_invalidObjectID_descr_;
+extern const XERdescriptor_t EnableDisableObjectRes__errorCodes_commandError_xer_;
+extern const TTCN_OERdescriptor_t EnableDisableObjectRes__errorCodes_commandError_oer_;
+extern const TTCN_Typedescriptor_t EnableDisableObjectRes__errorCodes_commandError_descr_;
+extern const XERdescriptor_t EnableDisableObjectRes__errorCodes_couldNotCompleteOperatorInputIsActiveOnThisObject_xer_;
+extern const TTCN_OERdescriptor_t EnableDisableObjectRes__errorCodes_couldNotCompleteOperatorInputIsActiveOnThisObject_oer_;
+extern const TTCN_Typedescriptor_t EnableDisableObjectRes__errorCodes_couldNotCompleteOperatorInputIsActiveOnThisObject_descr_;
+extern const XERdescriptor_t EnableDisableObjectRes__errorCodes_anyOtherError_xer_;
+extern const TTCN_OERdescriptor_t EnableDisableObjectRes__errorCodes_anyOtherError_oer_;
+extern const TTCN_Typedescriptor_t EnableDisableObjectRes__errorCodes_anyOtherError_descr_;
+extern const XERdescriptor_t EnableDisableObjectRes__errorCodes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t EnableDisableObjectRes__errorCodes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t EnableDisableObjectRes__errorCodes_reserved5_descr_;
+extern const XERdescriptor_t EnableDisableObjectRes__errorCodes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t EnableDisableObjectRes__errorCodes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t EnableDisableObjectRes__errorCodes_reserved6_descr_;
+extern const XERdescriptor_t EnableDisableObjectRes__errorCodes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t EnableDisableObjectRes__errorCodes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t EnableDisableObjectRes__errorCodes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t EnableDisableObjectRes__errorCodes_raw_;
+extern const TTCN_Typedescriptor_t EnableDisableObjectRes__errorCodes_descr_;
+extern const XERdescriptor_t EnableDisableObjectRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t EnableDisableObjectRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t EnableDisableObjectRes_vtfunction_descr_;
+extern const XERdescriptor_t EnableDisableObjectRes_objectID_xer_;
+extern const TTCN_OERdescriptor_t EnableDisableObjectRes_objectID_oer_;
+extern const TTCN_Typedescriptor_t EnableDisableObjectRes_objectID_descr_;
+extern const TTCN_RAWdescriptor_t EnableDisableObjectRes_reserved6_raw_;
+extern const XERdescriptor_t EnableDisableObjectRes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t EnableDisableObjectRes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t EnableDisableObjectRes_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t EnableDisableObjectRes_reserved7_raw_;
+extern const XERdescriptor_t EnableDisableObjectRes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t EnableDisableObjectRes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t EnableDisableObjectRes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t EnableDisableObjectRes_reserved8_raw_;
+extern const XERdescriptor_t EnableDisableObjectRes_reserved8_xer_;
+extern const TTCN_OERdescriptor_t EnableDisableObjectRes_reserved8_oer_;
+extern const TTCN_Typedescriptor_t EnableDisableObjectRes_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t EnableDisableObjectRes_raw_;
+extern const TTCN_Typedescriptor_t EnableDisableObjectRes_descr_;
+extern const TTCN_RAWdescriptor_t e__SelectInputObjectReq__Option_raw_;
+extern const TTCN_Typedescriptor_t e__SelectInputObjectReq__Option_descr_;
+extern const XERdescriptor_t SelectInputObjectReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t SelectInputObjectReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t SelectInputObjectReq_vtfunction_descr_;
+extern const XERdescriptor_t SelectInputObjectReq_objectID_xer_;
+extern const TTCN_OERdescriptor_t SelectInputObjectReq_objectID_oer_;
+extern const TTCN_Typedescriptor_t SelectInputObjectReq_objectID_descr_;
+extern const TTCN_RAWdescriptor_t SelectInputObjectReq_reserved5_raw_;
+extern const XERdescriptor_t SelectInputObjectReq_reserved5_xer_;
+extern const TTCN_OERdescriptor_t SelectInputObjectReq_reserved5_oer_;
+extern const TTCN_Typedescriptor_t SelectInputObjectReq_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t SelectInputObjectReq_reserved6_raw_;
+extern const XERdescriptor_t SelectInputObjectReq_reserved6_xer_;
+extern const TTCN_OERdescriptor_t SelectInputObjectReq_reserved6_oer_;
+extern const TTCN_Typedescriptor_t SelectInputObjectReq_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t SelectInputObjectReq_reserved7_raw_;
+extern const XERdescriptor_t SelectInputObjectReq_reserved7_xer_;
+extern const TTCN_OERdescriptor_t SelectInputObjectReq_reserved7_oer_;
+extern const TTCN_Typedescriptor_t SelectInputObjectReq_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t SelectInputObjectReq_reserved8_raw_;
+extern const XERdescriptor_t SelectInputObjectReq_reserved8_xer_;
+extern const TTCN_OERdescriptor_t SelectInputObjectReq_reserved8_oer_;
+extern const TTCN_Typedescriptor_t SelectInputObjectReq_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t SelectInputObjectReq_raw_;
+extern const TTCN_Typedescriptor_t SelectInputObjectReq_descr_;
+extern const TTCN_RAWdescriptor_t e__SelectInputObjectRes__Response_raw_;
+extern const TTCN_Typedescriptor_t e__SelectInputObjectRes__Response_descr_;
+extern const XERdescriptor_t SelectInputObjectRes__errorCodes_objectIsDisabled_xer_;
+extern const TTCN_OERdescriptor_t SelectInputObjectRes__errorCodes_objectIsDisabled_oer_;
+extern const TTCN_Typedescriptor_t SelectInputObjectRes__errorCodes_objectIsDisabled_descr_;
+extern const XERdescriptor_t SelectInputObjectRes__errorCodes_invalidObjectID_xer_;
+extern const TTCN_OERdescriptor_t SelectInputObjectRes__errorCodes_invalidObjectID_oer_;
+extern const TTCN_Typedescriptor_t SelectInputObjectRes__errorCodes_invalidObjectID_descr_;
+extern const XERdescriptor_t SelectInputObjectRes__errorCodes_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer_xer_;
+extern const TTCN_OERdescriptor_t SelectInputObjectRes__errorCodes_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer_oer_;
+extern const TTCN_Typedescriptor_t SelectInputObjectRes__errorCodes_objectIsNotOnTheActiveMaskOrObjectIsInAHiddenContainer_descr_;
+extern const XERdescriptor_t SelectInputObjectRes__errorCodes_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld_xer_;
+extern const TTCN_OERdescriptor_t SelectInputObjectRes__errorCodes_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld_oer_;
+extern const TTCN_Typedescriptor_t SelectInputObjectRes__errorCodes_couldNotCompleteAnotherInputFieldIsCurrentlyBeingModifiedOrAButtonOrSoftKeyisCurrentlyBeingHeld_descr_;
+extern const XERdescriptor_t SelectInputObjectRes__errorCodes_anyOtherError_xer_;
+extern const TTCN_OERdescriptor_t SelectInputObjectRes__errorCodes_anyOtherError_oer_;
+extern const TTCN_Typedescriptor_t SelectInputObjectRes__errorCodes_anyOtherError_descr_;
+extern const XERdescriptor_t SelectInputObjectRes__errorCodes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t SelectInputObjectRes__errorCodes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t SelectInputObjectRes__errorCodes_reserved5_descr_;
+extern const XERdescriptor_t SelectInputObjectRes__errorCodes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t SelectInputObjectRes__errorCodes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t SelectInputObjectRes__errorCodes_reserved6_descr_;
+extern const XERdescriptor_t SelectInputObjectRes__errorCodes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t SelectInputObjectRes__errorCodes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t SelectInputObjectRes__errorCodes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t SelectInputObjectRes__errorCodes_raw_;
+extern const TTCN_Typedescriptor_t SelectInputObjectRes__errorCodes_descr_;
+extern const XERdescriptor_t SelectInputObjectRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t SelectInputObjectRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t SelectInputObjectRes_vtfunction_descr_;
+extern const XERdescriptor_t SelectInputObjectRes_objectID_xer_;
+extern const TTCN_OERdescriptor_t SelectInputObjectRes_objectID_oer_;
+extern const TTCN_Typedescriptor_t SelectInputObjectRes_objectID_descr_;
+extern const TTCN_RAWdescriptor_t SelectInputObjectRes_reserved5_raw_;
+extern const XERdescriptor_t SelectInputObjectRes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t SelectInputObjectRes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t SelectInputObjectRes_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t SelectInputObjectRes_reserved6_raw_;
+extern const XERdescriptor_t SelectInputObjectRes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t SelectInputObjectRes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t SelectInputObjectRes_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t SelectInputObjectRes_reserved7_raw_;
+extern const XERdescriptor_t SelectInputObjectRes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t SelectInputObjectRes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t SelectInputObjectRes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t SelectInputObjectRes_reserved8_raw_;
+extern const XERdescriptor_t SelectInputObjectRes_reserved8_xer_;
+extern const TTCN_OERdescriptor_t SelectInputObjectRes_reserved8_oer_;
+extern const TTCN_Typedescriptor_t SelectInputObjectRes_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t SelectInputObjectRes_raw_;
+extern const TTCN_Typedescriptor_t SelectInputObjectRes_descr_;
+extern const XERdescriptor_t ControlAudioSignalReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ControlAudioSignalReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ControlAudioSignalReq_vtfunction_descr_;
+extern const XERdescriptor_t ControlAudioSignalReq_activations_xer_;
+extern const TTCN_OERdescriptor_t ControlAudioSignalReq_activations_oer_;
+extern const TTCN_Typedescriptor_t ControlAudioSignalReq_activations_descr_;
+extern const XERdescriptor_t ControlAudioSignalReq_frequencyInHz_xer_;
+extern const TTCN_OERdescriptor_t ControlAudioSignalReq_frequencyInHz_oer_;
+extern const TTCN_Typedescriptor_t ControlAudioSignalReq_frequencyInHz_descr_;
+extern const XERdescriptor_t ControlAudioSignalReq_onTimeDuration__ms_xer_;
+extern const TTCN_OERdescriptor_t ControlAudioSignalReq_onTimeDuration__ms_oer_;
+extern const TTCN_Typedescriptor_t ControlAudioSignalReq_onTimeDuration__ms_descr_;
+extern const XERdescriptor_t ControlAudioSignalReq_offTimeDuration__ms_xer_;
+extern const TTCN_OERdescriptor_t ControlAudioSignalReq_offTimeDuration__ms_oer_;
+extern const TTCN_Typedescriptor_t ControlAudioSignalReq_offTimeDuration__ms_descr_;
+extern const TTCN_RAWdescriptor_t ControlAudioSignalReq_raw_;
+extern const TTCN_Typedescriptor_t ControlAudioSignalReq_descr_;
+extern const TTCN_RAWdescriptor_t e__ControlAudioSignalRes__ErrorCodes_raw_;
+extern const TTCN_Typedescriptor_t e__ControlAudioSignalRes__ErrorCodes_descr_;
+extern const XERdescriptor_t ControlAudioSignalRes__ErrorCodes_audioDeviceIsBusy_xer_;
+extern const TTCN_OERdescriptor_t ControlAudioSignalRes__ErrorCodes_audioDeviceIsBusy_oer_;
+extern const TTCN_Typedescriptor_t ControlAudioSignalRes__ErrorCodes_audioDeviceIsBusy_descr_;
+extern const XERdescriptor_t ControlAudioSignalRes__ErrorCodes_undefined1_xer_;
+extern const TTCN_OERdescriptor_t ControlAudioSignalRes__ErrorCodes_undefined1_oer_;
+extern const TTCN_Typedescriptor_t ControlAudioSignalRes__ErrorCodes_undefined1_descr_;
+extern const XERdescriptor_t ControlAudioSignalRes__ErrorCodes_undefined2_xer_;
+extern const TTCN_OERdescriptor_t ControlAudioSignalRes__ErrorCodes_undefined2_oer_;
+extern const TTCN_Typedescriptor_t ControlAudioSignalRes__ErrorCodes_undefined2_descr_;
+extern const XERdescriptor_t ControlAudioSignalRes__ErrorCodes_undefined3_xer_;
+extern const TTCN_OERdescriptor_t ControlAudioSignalRes__ErrorCodes_undefined3_oer_;
+extern const TTCN_Typedescriptor_t ControlAudioSignalRes__ErrorCodes_undefined3_descr_;
+extern const XERdescriptor_t ControlAudioSignalRes__ErrorCodes_anyOtherError_xer_;
+extern const TTCN_OERdescriptor_t ControlAudioSignalRes__ErrorCodes_anyOtherError_oer_;
+extern const TTCN_Typedescriptor_t ControlAudioSignalRes__ErrorCodes_anyOtherError_descr_;
+extern const XERdescriptor_t ControlAudioSignalRes__ErrorCodes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t ControlAudioSignalRes__ErrorCodes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t ControlAudioSignalRes__ErrorCodes_reserved5_descr_;
+extern const XERdescriptor_t ControlAudioSignalRes__ErrorCodes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t ControlAudioSignalRes__ErrorCodes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t ControlAudioSignalRes__ErrorCodes_reserved6_descr_;
+extern const XERdescriptor_t ControlAudioSignalRes__ErrorCodes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ControlAudioSignalRes__ErrorCodes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ControlAudioSignalRes__ErrorCodes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ControlAudioSignalRes__ErrorCodes_raw_;
+extern const TTCN_Typedescriptor_t ControlAudioSignalRes__ErrorCodes_descr_;
+extern const XERdescriptor_t ControlAudioSignalRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ControlAudioSignalRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ControlAudioSignalRes_vtfunction_descr_;
+extern const TTCN_RAWdescriptor_t ControlAudioSignalRes_reserved3_raw_;
+extern const XERdescriptor_t ControlAudioSignalRes_reserved3_xer_;
+extern const TTCN_OERdescriptor_t ControlAudioSignalRes_reserved3_oer_;
+extern const TTCN_Typedescriptor_t ControlAudioSignalRes_reserved3_descr_;
+extern const TTCN_RAWdescriptor_t ControlAudioSignalRes_reserved4_raw_;
+extern const XERdescriptor_t ControlAudioSignalRes_reserved4_xer_;
+extern const TTCN_OERdescriptor_t ControlAudioSignalRes_reserved4_oer_;
+extern const TTCN_Typedescriptor_t ControlAudioSignalRes_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t ControlAudioSignalRes_reserved5_raw_;
+extern const XERdescriptor_t ControlAudioSignalRes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t ControlAudioSignalRes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t ControlAudioSignalRes_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t ControlAudioSignalRes_reserved6_raw_;
+extern const XERdescriptor_t ControlAudioSignalRes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t ControlAudioSignalRes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t ControlAudioSignalRes_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t ControlAudioSignalRes_reserved7_raw_;
+extern const XERdescriptor_t ControlAudioSignalRes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ControlAudioSignalRes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ControlAudioSignalRes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ControlAudioSignalRes_reserved8_raw_;
+extern const XERdescriptor_t ControlAudioSignalRes_reserved8_xer_;
+extern const TTCN_OERdescriptor_t ControlAudioSignalRes_reserved8_oer_;
+extern const TTCN_Typedescriptor_t ControlAudioSignalRes_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t ControlAudioSignalRes_raw_;
+extern const TTCN_Typedescriptor_t ControlAudioSignalRes_descr_;
+extern const XERdescriptor_t SetAudioVolumeReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t SetAudioVolumeReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t SetAudioVolumeReq_vtfunction_descr_;
+extern const XERdescriptor_t SetAudioVolumeReq_volumeInPercent_xer_;
+extern const TTCN_OERdescriptor_t SetAudioVolumeReq_volumeInPercent_oer_;
+extern const TTCN_Typedescriptor_t SetAudioVolumeReq_volumeInPercent_descr_;
+extern const TTCN_RAWdescriptor_t SetAudioVolumeReq_reserved4_raw_;
+extern const XERdescriptor_t SetAudioVolumeReq_reserved4_xer_;
+extern const TTCN_OERdescriptor_t SetAudioVolumeReq_reserved4_oer_;
+extern const TTCN_Typedescriptor_t SetAudioVolumeReq_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t SetAudioVolumeReq_reserved5_raw_;
+extern const XERdescriptor_t SetAudioVolumeReq_reserved5_xer_;
+extern const TTCN_OERdescriptor_t SetAudioVolumeReq_reserved5_oer_;
+extern const TTCN_Typedescriptor_t SetAudioVolumeReq_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t SetAudioVolumeReq_reserved6_raw_;
+extern const XERdescriptor_t SetAudioVolumeReq_reserved6_xer_;
+extern const TTCN_OERdescriptor_t SetAudioVolumeReq_reserved6_oer_;
+extern const TTCN_Typedescriptor_t SetAudioVolumeReq_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t SetAudioVolumeReq_reserved7_raw_;
+extern const XERdescriptor_t SetAudioVolumeReq_reserved7_xer_;
+extern const TTCN_OERdescriptor_t SetAudioVolumeReq_reserved7_oer_;
+extern const TTCN_Typedescriptor_t SetAudioVolumeReq_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t SetAudioVolumeReq_reserved8_raw_;
+extern const XERdescriptor_t SetAudioVolumeReq_reserved8_xer_;
+extern const TTCN_OERdescriptor_t SetAudioVolumeReq_reserved8_oer_;
+extern const TTCN_Typedescriptor_t SetAudioVolumeReq_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t SetAudioVolumeReq_raw_;
+extern const TTCN_Typedescriptor_t SetAudioVolumeReq_descr_;
+extern const XERdescriptor_t SetAudioVolumeErrorCodes_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting_xer_;
+extern const TTCN_OERdescriptor_t SetAudioVolumeErrorCodes_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting_oer_;
+extern const TTCN_Typedescriptor_t SetAudioVolumeErrorCodes_AudioDeviceIsBusySubsequentCommandsUseTheNewSetting_descr_;
+extern const XERdescriptor_t SetAudioVolumeErrorCodes_CommandIsNotSupported_xer_;
+extern const TTCN_OERdescriptor_t SetAudioVolumeErrorCodes_CommandIsNotSupported_oer_;
+extern const TTCN_Typedescriptor_t SetAudioVolumeErrorCodes_CommandIsNotSupported_descr_;
+extern const XERdescriptor_t SetAudioVolumeErrorCodes_reserved2_xer_;
+extern const TTCN_OERdescriptor_t SetAudioVolumeErrorCodes_reserved2_oer_;
+extern const TTCN_Typedescriptor_t SetAudioVolumeErrorCodes_reserved2_descr_;
+extern const XERdescriptor_t SetAudioVolumeErrorCodes_reserved3_xer_;
+extern const TTCN_OERdescriptor_t SetAudioVolumeErrorCodes_reserved3_oer_;
+extern const TTCN_Typedescriptor_t SetAudioVolumeErrorCodes_reserved3_descr_;
+extern const XERdescriptor_t SetAudioVolumeErrorCodes_anyOtherError_xer_;
+extern const TTCN_OERdescriptor_t SetAudioVolumeErrorCodes_anyOtherError_oer_;
+extern const TTCN_Typedescriptor_t SetAudioVolumeErrorCodes_anyOtherError_descr_;
+extern const XERdescriptor_t SetAudioVolumeErrorCodes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t SetAudioVolumeErrorCodes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t SetAudioVolumeErrorCodes_reserved5_descr_;
+extern const XERdescriptor_t SetAudioVolumeErrorCodes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t SetAudioVolumeErrorCodes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t SetAudioVolumeErrorCodes_reserved6_descr_;
+extern const XERdescriptor_t SetAudioVolumeErrorCodes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t SetAudioVolumeErrorCodes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t SetAudioVolumeErrorCodes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t SetAudioVolumeErrorCodes_raw_;
+extern const TTCN_Typedescriptor_t SetAudioVolumeErrorCodes_descr_;
+extern const XERdescriptor_t SetAudioVolumeRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t SetAudioVolumeRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t SetAudioVolumeRes_vtfunction_descr_;
+extern const TTCN_RAWdescriptor_t SetAudioVolumeRes_reserved3_raw_;
+extern const XERdescriptor_t SetAudioVolumeRes_reserved3_xer_;
+extern const TTCN_OERdescriptor_t SetAudioVolumeRes_reserved3_oer_;
+extern const TTCN_Typedescriptor_t SetAudioVolumeRes_reserved3_descr_;
+extern const TTCN_RAWdescriptor_t SetAudioVolumeRes_reserved4_raw_;
+extern const XERdescriptor_t SetAudioVolumeRes_reserved4_xer_;
+extern const TTCN_OERdescriptor_t SetAudioVolumeRes_reserved4_oer_;
+extern const TTCN_Typedescriptor_t SetAudioVolumeRes_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t SetAudioVolumeRes_reserved5_raw_;
+extern const XERdescriptor_t SetAudioVolumeRes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t SetAudioVolumeRes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t SetAudioVolumeRes_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t SetAudioVolumeRes_reserved6_raw_;
+extern const XERdescriptor_t SetAudioVolumeRes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t SetAudioVolumeRes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t SetAudioVolumeRes_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t SetAudioVolumeRes_reserved7_raw_;
+extern const XERdescriptor_t SetAudioVolumeRes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t SetAudioVolumeRes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t SetAudioVolumeRes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t SetAudioVolumeRes_reserved8_raw_;
+extern const XERdescriptor_t SetAudioVolumeRes_reserved8_xer_;
+extern const TTCN_OERdescriptor_t SetAudioVolumeRes_reserved8_oer_;
+extern const TTCN_Typedescriptor_t SetAudioVolumeRes_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t SetAudioVolumeRes_raw_;
+extern const TTCN_Typedescriptor_t SetAudioVolumeRes_descr_;
+extern const XERdescriptor_t ChangeChildLocationReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ChangeChildLocationReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ChangeChildLocationReq_vtfunction_descr_;
+extern const XERdescriptor_t ChangeChildLocationReq_parentObjectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeChildLocationReq_parentObjectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeChildLocationReq_parentObjectID_descr_;
+extern const XERdescriptor_t ChangeChildLocationReq_objectIDofObjectToMove_xer_;
+extern const TTCN_OERdescriptor_t ChangeChildLocationReq_objectIDofObjectToMove_oer_;
+extern const TTCN_Typedescriptor_t ChangeChildLocationReq_objectIDofObjectToMove_descr_;
+extern const XERdescriptor_t ChangeChildLocationReq_relativeChangeInXposition_xer_;
+extern const TTCN_OERdescriptor_t ChangeChildLocationReq_relativeChangeInXposition_oer_;
+extern const TTCN_Typedescriptor_t ChangeChildLocationReq_relativeChangeInXposition_descr_;
+extern const XERdescriptor_t ChangeChildLocationReq_relativeChangeInYposition_xer_;
+extern const TTCN_OERdescriptor_t ChangeChildLocationReq_relativeChangeInYposition_oer_;
+extern const TTCN_Typedescriptor_t ChangeChildLocationReq_relativeChangeInYposition_descr_;
+extern const TTCN_RAWdescriptor_t ChangeChildLocationReq_reserved8_raw_;
+extern const XERdescriptor_t ChangeChildLocationReq_reserved8_xer_;
+extern const TTCN_OERdescriptor_t ChangeChildLocationReq_reserved8_oer_;
+extern const TTCN_Typedescriptor_t ChangeChildLocationReq_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t ChangeChildLocationReq_raw_;
+extern const TTCN_Typedescriptor_t ChangeChildLocationReq_descr_;
+extern const XERdescriptor_t ChangeChildLocationRes__errorCodes_invalidParentObjectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeChildLocationRes__errorCodes_invalidParentObjectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeChildLocationRes__errorCodes_invalidParentObjectID_descr_;
+extern const XERdescriptor_t ChangeChildLocationRes__errorCodes_invalidObjectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeChildLocationRes__errorCodes_invalidObjectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeChildLocationRes__errorCodes_invalidObjectID_descr_;
+extern const XERdescriptor_t ChangeChildLocationRes__errorCodes_reserved2_xer_;
+extern const TTCN_OERdescriptor_t ChangeChildLocationRes__errorCodes_reserved2_oer_;
+extern const TTCN_Typedescriptor_t ChangeChildLocationRes__errorCodes_reserved2_descr_;
+extern const XERdescriptor_t ChangeChildLocationRes__errorCodes_reserved3_xer_;
+extern const TTCN_OERdescriptor_t ChangeChildLocationRes__errorCodes_reserved3_oer_;
+extern const TTCN_Typedescriptor_t ChangeChildLocationRes__errorCodes_reserved3_descr_;
+extern const XERdescriptor_t ChangeChildLocationRes__errorCodes_anyOtherError_xer_;
+extern const TTCN_OERdescriptor_t ChangeChildLocationRes__errorCodes_anyOtherError_oer_;
+extern const TTCN_Typedescriptor_t ChangeChildLocationRes__errorCodes_anyOtherError_descr_;
+extern const XERdescriptor_t ChangeChildLocationRes__errorCodes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t ChangeChildLocationRes__errorCodes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t ChangeChildLocationRes__errorCodes_reserved5_descr_;
+extern const XERdescriptor_t ChangeChildLocationRes__errorCodes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t ChangeChildLocationRes__errorCodes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t ChangeChildLocationRes__errorCodes_reserved6_descr_;
+extern const XERdescriptor_t ChangeChildLocationRes__errorCodes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ChangeChildLocationRes__errorCodes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ChangeChildLocationRes__errorCodes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ChangeChildLocationRes__errorCodes_raw_;
+extern const TTCN_Typedescriptor_t ChangeChildLocationRes__errorCodes_descr_;
+extern const XERdescriptor_t ChangeChildLocationRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ChangeChildLocationRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ChangeChildLocationRes_vtfunction_descr_;
+extern const XERdescriptor_t ChangeChildLocationRes_parentObjectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeChildLocationRes_parentObjectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeChildLocationRes_parentObjectID_descr_;
+extern const XERdescriptor_t ChangeChildLocationRes_objectIDofObjectToMove_xer_;
+extern const TTCN_OERdescriptor_t ChangeChildLocationRes_objectIDofObjectToMove_oer_;
+extern const TTCN_Typedescriptor_t ChangeChildLocationRes_objectIDofObjectToMove_descr_;
+extern const TTCN_RAWdescriptor_t ChangeChildLocationRes_reserved7_raw_;
+extern const XERdescriptor_t ChangeChildLocationRes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ChangeChildLocationRes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ChangeChildLocationRes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ChangeChildLocationRes_reserved8_raw_;
+extern const XERdescriptor_t ChangeChildLocationRes_reserved8_xer_;
+extern const TTCN_OERdescriptor_t ChangeChildLocationRes_reserved8_oer_;
+extern const TTCN_Typedescriptor_t ChangeChildLocationRes_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t ChangeChildLocationRes_raw_;
+extern const TTCN_Typedescriptor_t ChangeChildLocationRes_descr_;
+extern const XERdescriptor_t ChangeSizeReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ChangeSizeReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ChangeSizeReq_vtfunction_descr_;
+extern const XERdescriptor_t ChangeSizeReq_objectIDofObjectToSize_xer_;
+extern const TTCN_OERdescriptor_t ChangeSizeReq_objectIDofObjectToSize_oer_;
+extern const TTCN_Typedescriptor_t ChangeSizeReq_objectIDofObjectToSize_descr_;
+extern const XERdescriptor_t ChangeSizeReq_newWidth_xer_;
+extern const TTCN_OERdescriptor_t ChangeSizeReq_newWidth_oer_;
+extern const TTCN_Typedescriptor_t ChangeSizeReq_newWidth_descr_;
+extern const XERdescriptor_t ChangeSizeReq_newHeight_xer_;
+extern const TTCN_OERdescriptor_t ChangeSizeReq_newHeight_oer_;
+extern const TTCN_Typedescriptor_t ChangeSizeReq_newHeight_descr_;
+extern const TTCN_RAWdescriptor_t ChangeSizeReq_reserved8_raw_;
+extern const XERdescriptor_t ChangeSizeReq_reserved8_xer_;
+extern const TTCN_OERdescriptor_t ChangeSizeReq_reserved8_oer_;
+extern const TTCN_Typedescriptor_t ChangeSizeReq_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t ChangeSizeReq_raw_;
+extern const TTCN_Typedescriptor_t ChangeSizeReq_descr_;
+extern const XERdescriptor_t ChangeSizeRes__errorCodes_invalidObjectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeSizeRes__errorCodes_invalidObjectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeSizeRes__errorCodes_invalidObjectID_descr_;
+extern const XERdescriptor_t ChangeSizeRes__errorCodes_reserved1_xer_;
+extern const TTCN_OERdescriptor_t ChangeSizeRes__errorCodes_reserved1_oer_;
+extern const TTCN_Typedescriptor_t ChangeSizeRes__errorCodes_reserved1_descr_;
+extern const XERdescriptor_t ChangeSizeRes__errorCodes_reserved2_xer_;
+extern const TTCN_OERdescriptor_t ChangeSizeRes__errorCodes_reserved2_oer_;
+extern const TTCN_Typedescriptor_t ChangeSizeRes__errorCodes_reserved2_descr_;
+extern const XERdescriptor_t ChangeSizeRes__errorCodes_reserved3_xer_;
+extern const TTCN_OERdescriptor_t ChangeSizeRes__errorCodes_reserved3_oer_;
+extern const TTCN_Typedescriptor_t ChangeSizeRes__errorCodes_reserved3_descr_;
+extern const XERdescriptor_t ChangeSizeRes__errorCodes_anyOtherError_xer_;
+extern const TTCN_OERdescriptor_t ChangeSizeRes__errorCodes_anyOtherError_oer_;
+extern const TTCN_Typedescriptor_t ChangeSizeRes__errorCodes_anyOtherError_descr_;
+extern const XERdescriptor_t ChangeSizeRes__errorCodes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t ChangeSizeRes__errorCodes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t ChangeSizeRes__errorCodes_reserved5_descr_;
+extern const XERdescriptor_t ChangeSizeRes__errorCodes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t ChangeSizeRes__errorCodes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t ChangeSizeRes__errorCodes_reserved6_descr_;
+extern const XERdescriptor_t ChangeSizeRes__errorCodes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ChangeSizeRes__errorCodes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ChangeSizeRes__errorCodes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ChangeSizeRes__errorCodes_raw_;
+extern const TTCN_Typedescriptor_t ChangeSizeRes__errorCodes_descr_;
+extern const XERdescriptor_t ChangeSizeRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ChangeSizeRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ChangeSizeRes_vtfunction_descr_;
+extern const XERdescriptor_t ChangeSizeRes_objectIDofObjectToSize_xer_;
+extern const TTCN_OERdescriptor_t ChangeSizeRes_objectIDofObjectToSize_oer_;
+extern const TTCN_Typedescriptor_t ChangeSizeRes_objectIDofObjectToSize_descr_;
+extern const TTCN_RAWdescriptor_t ChangeSizeRes_reserved5_raw_;
+extern const XERdescriptor_t ChangeSizeRes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t ChangeSizeRes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t ChangeSizeRes_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t ChangeSizeRes_reserved6_raw_;
+extern const XERdescriptor_t ChangeSizeRes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t ChangeSizeRes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t ChangeSizeRes_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t ChangeSizeRes_reserved7_raw_;
+extern const XERdescriptor_t ChangeSizeRes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ChangeSizeRes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ChangeSizeRes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ChangeSizeRes_reserved8_raw_;
+extern const XERdescriptor_t ChangeSizeRes_reserved8_xer_;
+extern const TTCN_OERdescriptor_t ChangeSizeRes_reserved8_oer_;
+extern const TTCN_Typedescriptor_t ChangeSizeRes_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t ChangeSizeRes_raw_;
+extern const TTCN_Typedescriptor_t ChangeSizeRes_descr_;
+extern const XERdescriptor_t ChangeBackgroundColourReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ChangeBackgroundColourReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ChangeBackgroundColourReq_vtfunction_descr_;
+extern const XERdescriptor_t ChangeBackgroundColourReq_objectIDofObjectToChange_xer_;
+extern const TTCN_OERdescriptor_t ChangeBackgroundColourReq_objectIDofObjectToChange_oer_;
+extern const TTCN_Typedescriptor_t ChangeBackgroundColourReq_objectIDofObjectToChange_descr_;
+extern const XERdescriptor_t ChangeBackgroundColourReq_newBackgroundColour_xer_;
+extern const TTCN_OERdescriptor_t ChangeBackgroundColourReq_newBackgroundColour_oer_;
+extern const TTCN_Typedescriptor_t ChangeBackgroundColourReq_newBackgroundColour_descr_;
+extern const TTCN_RAWdescriptor_t ChangeBackgroundColourReq_reserved5_raw_;
+extern const XERdescriptor_t ChangeBackgroundColourReq_reserved5_xer_;
+extern const TTCN_OERdescriptor_t ChangeBackgroundColourReq_reserved5_oer_;
+extern const TTCN_Typedescriptor_t ChangeBackgroundColourReq_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t ChangeBackgroundColourReq_reserved6_raw_;
+extern const XERdescriptor_t ChangeBackgroundColourReq_reserved6_xer_;
+extern const TTCN_OERdescriptor_t ChangeBackgroundColourReq_reserved6_oer_;
+extern const TTCN_Typedescriptor_t ChangeBackgroundColourReq_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t ChangeBackgroundColourReq_reserved7_raw_;
+extern const XERdescriptor_t ChangeBackgroundColourReq_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ChangeBackgroundColourReq_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ChangeBackgroundColourReq_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ChangeBackgroundColourReq_reserved8_raw_;
+extern const XERdescriptor_t ChangeBackgroundColourReq_reserved8_xer_;
+extern const TTCN_OERdescriptor_t ChangeBackgroundColourReq_reserved8_oer_;
+extern const TTCN_Typedescriptor_t ChangeBackgroundColourReq_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t ChangeBackgroundColourReq_raw_;
+extern const TTCN_Typedescriptor_t ChangeBackgroundColourReq_descr_;
+extern const XERdescriptor_t ChangeBackgroundColourRes__errorCodes_invalidObjectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeBackgroundColourRes__errorCodes_invalidObjectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeBackgroundColourRes__errorCodes_invalidObjectID_descr_;
+extern const XERdescriptor_t ChangeBackgroundColourRes__errorCodes_invalidColourCode_xer_;
+extern const TTCN_OERdescriptor_t ChangeBackgroundColourRes__errorCodes_invalidColourCode_oer_;
+extern const TTCN_Typedescriptor_t ChangeBackgroundColourRes__errorCodes_invalidColourCode_descr_;
+extern const XERdescriptor_t ChangeBackgroundColourRes__errorCodes_reserved2_xer_;
+extern const TTCN_OERdescriptor_t ChangeBackgroundColourRes__errorCodes_reserved2_oer_;
+extern const TTCN_Typedescriptor_t ChangeBackgroundColourRes__errorCodes_reserved2_descr_;
+extern const XERdescriptor_t ChangeBackgroundColourRes__errorCodes_reserved3_xer_;
+extern const TTCN_OERdescriptor_t ChangeBackgroundColourRes__errorCodes_reserved3_oer_;
+extern const TTCN_Typedescriptor_t ChangeBackgroundColourRes__errorCodes_reserved3_descr_;
+extern const XERdescriptor_t ChangeBackgroundColourRes__errorCodes_anyOtherError_xer_;
+extern const TTCN_OERdescriptor_t ChangeBackgroundColourRes__errorCodes_anyOtherError_oer_;
+extern const TTCN_Typedescriptor_t ChangeBackgroundColourRes__errorCodes_anyOtherError_descr_;
+extern const XERdescriptor_t ChangeBackgroundColourRes__errorCodes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t ChangeBackgroundColourRes__errorCodes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t ChangeBackgroundColourRes__errorCodes_reserved5_descr_;
+extern const XERdescriptor_t ChangeBackgroundColourRes__errorCodes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t ChangeBackgroundColourRes__errorCodes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t ChangeBackgroundColourRes__errorCodes_reserved6_descr_;
+extern const XERdescriptor_t ChangeBackgroundColourRes__errorCodes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ChangeBackgroundColourRes__errorCodes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ChangeBackgroundColourRes__errorCodes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ChangeBackgroundColourRes__errorCodes_raw_;
+extern const TTCN_Typedescriptor_t ChangeBackgroundColourRes__errorCodes_descr_;
+extern const XERdescriptor_t ChangeBackgroundColourRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ChangeBackgroundColourRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ChangeBackgroundColourRes_vtfunction_descr_;
+extern const XERdescriptor_t ChangeBackgroundColourRes_objectIDofObjectToChange_xer_;
+extern const TTCN_OERdescriptor_t ChangeBackgroundColourRes_objectIDofObjectToChange_oer_;
+extern const TTCN_Typedescriptor_t ChangeBackgroundColourRes_objectIDofObjectToChange_descr_;
+extern const XERdescriptor_t ChangeBackgroundColourRes_newBackgroundColour_xer_;
+extern const TTCN_OERdescriptor_t ChangeBackgroundColourRes_newBackgroundColour_oer_;
+extern const TTCN_Typedescriptor_t ChangeBackgroundColourRes_newBackgroundColour_descr_;
+extern const TTCN_RAWdescriptor_t ChangeBackgroundColourRes_reserved6_raw_;
+extern const XERdescriptor_t ChangeBackgroundColourRes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t ChangeBackgroundColourRes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t ChangeBackgroundColourRes_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t ChangeBackgroundColourRes_reserved7_raw_;
+extern const XERdescriptor_t ChangeBackgroundColourRes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ChangeBackgroundColourRes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ChangeBackgroundColourRes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ChangeBackgroundColourRes_reserved8_raw_;
+extern const XERdescriptor_t ChangeBackgroundColourRes_reserved8_xer_;
+extern const TTCN_OERdescriptor_t ChangeBackgroundColourRes_reserved8_oer_;
+extern const TTCN_Typedescriptor_t ChangeBackgroundColourRes_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t ChangeBackgroundColourRes_raw_;
+extern const TTCN_Typedescriptor_t ChangeBackgroundColourRes_descr_;
+extern const XERdescriptor_t ChangeNumericValueReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ChangeNumericValueReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ChangeNumericValueReq_vtfunction_descr_;
+extern const XERdescriptor_t ChangeNumericValueReq_objectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeNumericValueReq_objectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeNumericValueReq_objectID_descr_;
+extern const TTCN_RAWdescriptor_t ChangeNumericValueReq_reserved4_raw_;
+extern const XERdescriptor_t ChangeNumericValueReq_reserved4_xer_;
+extern const TTCN_OERdescriptor_t ChangeNumericValueReq_reserved4_oer_;
+extern const TTCN_Typedescriptor_t ChangeNumericValueReq_reserved4_descr_;
+extern const XERdescriptor_t ChangeNumericValueReq_newValueForValueAttribute_xer_;
+extern const TTCN_OERdescriptor_t ChangeNumericValueReq_newValueForValueAttribute_oer_;
+extern const TTCN_Typedescriptor_t ChangeNumericValueReq_newValueForValueAttribute_descr_;
+extern const TTCN_RAWdescriptor_t ChangeNumericValueReq_raw_;
+extern const TTCN_Typedescriptor_t ChangeNumericValueReq_descr_;
+extern const XERdescriptor_t ChangeNumericValueRes__errorCodes_invalidObjectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeNumericValueRes__errorCodes_invalidObjectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeNumericValueRes__errorCodes_invalidObjectID_descr_;
+extern const XERdescriptor_t ChangeNumericValueRes__errorCodes_invalidValue_xer_;
+extern const TTCN_OERdescriptor_t ChangeNumericValueRes__errorCodes_invalidValue_oer_;
+extern const TTCN_Typedescriptor_t ChangeNumericValueRes__errorCodes_invalidValue_descr_;
+extern const XERdescriptor_t ChangeNumericValueRes__errorCodes_valueInUse_xer_;
+extern const TTCN_OERdescriptor_t ChangeNumericValueRes__errorCodes_valueInUse_oer_;
+extern const TTCN_Typedescriptor_t ChangeNumericValueRes__errorCodes_valueInUse_descr_;
+extern const XERdescriptor_t ChangeNumericValueRes__errorCodes_undefined_xer_;
+extern const TTCN_OERdescriptor_t ChangeNumericValueRes__errorCodes_undefined_oer_;
+extern const TTCN_Typedescriptor_t ChangeNumericValueRes__errorCodes_undefined_descr_;
+extern const XERdescriptor_t ChangeNumericValueRes__errorCodes_anyOtherError_xer_;
+extern const TTCN_OERdescriptor_t ChangeNumericValueRes__errorCodes_anyOtherError_oer_;
+extern const TTCN_Typedescriptor_t ChangeNumericValueRes__errorCodes_anyOtherError_descr_;
+extern const XERdescriptor_t ChangeNumericValueRes__errorCodes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t ChangeNumericValueRes__errorCodes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t ChangeNumericValueRes__errorCodes_reserved5_descr_;
+extern const XERdescriptor_t ChangeNumericValueRes__errorCodes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t ChangeNumericValueRes__errorCodes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t ChangeNumericValueRes__errorCodes_reserved6_descr_;
+extern const XERdescriptor_t ChangeNumericValueRes__errorCodes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ChangeNumericValueRes__errorCodes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ChangeNumericValueRes__errorCodes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ChangeNumericValueRes__errorCodes_raw_;
+extern const TTCN_Typedescriptor_t ChangeNumericValueRes__errorCodes_descr_;
+extern const XERdescriptor_t ChangeNumericValueRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ChangeNumericValueRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ChangeNumericValueRes_vtfunction_descr_;
+extern const XERdescriptor_t ChangeNumericValueRes_objectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeNumericValueRes_objectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeNumericValueRes_objectID_descr_;
+extern const XERdescriptor_t ChangeNumericValueRes_valueForValueAttribute_xer_;
+extern const TTCN_OERdescriptor_t ChangeNumericValueRes_valueForValueAttribute_oer_;
+extern const TTCN_Typedescriptor_t ChangeNumericValueRes_valueForValueAttribute_descr_;
+extern const TTCN_RAWdescriptor_t ChangeNumericValueRes_raw_;
+extern const TTCN_Typedescriptor_t ChangeNumericValueRes_descr_;
+extern const XERdescriptor_t ChangeEndPointRes__errorCodes_invalidObjectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeEndPointRes__errorCodes_invalidObjectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeEndPointRes__errorCodes_invalidObjectID_descr_;
+extern const XERdescriptor_t ChangeEndPointRes__errorCodes_invalidLineDirection_xer_;
+extern const TTCN_OERdescriptor_t ChangeEndPointRes__errorCodes_invalidLineDirection_oer_;
+extern const TTCN_Typedescriptor_t ChangeEndPointRes__errorCodes_invalidLineDirection_descr_;
+extern const XERdescriptor_t ChangeEndPointRes__errorCodes_reserved2_xer_;
+extern const TTCN_OERdescriptor_t ChangeEndPointRes__errorCodes_reserved2_oer_;
+extern const TTCN_Typedescriptor_t ChangeEndPointRes__errorCodes_reserved2_descr_;
+extern const XERdescriptor_t ChangeEndPointRes__errorCodes_reserved3_xer_;
+extern const TTCN_OERdescriptor_t ChangeEndPointRes__errorCodes_reserved3_oer_;
+extern const TTCN_Typedescriptor_t ChangeEndPointRes__errorCodes_reserved3_descr_;
+extern const XERdescriptor_t ChangeEndPointRes__errorCodes_anyOtherError_xer_;
+extern const TTCN_OERdescriptor_t ChangeEndPointRes__errorCodes_anyOtherError_oer_;
+extern const TTCN_Typedescriptor_t ChangeEndPointRes__errorCodes_anyOtherError_descr_;
+extern const XERdescriptor_t ChangeEndPointRes__errorCodes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t ChangeEndPointRes__errorCodes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t ChangeEndPointRes__errorCodes_reserved5_descr_;
+extern const XERdescriptor_t ChangeEndPointRes__errorCodes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t ChangeEndPointRes__errorCodes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t ChangeEndPointRes__errorCodes_reserved6_descr_;
+extern const XERdescriptor_t ChangeEndPointRes__errorCodes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ChangeEndPointRes__errorCodes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ChangeEndPointRes__errorCodes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ChangeEndPointRes__errorCodes_raw_;
+extern const TTCN_Typedescriptor_t ChangeEndPointRes__errorCodes_descr_;
+extern const XERdescriptor_t ChangeEndPointRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ChangeEndPointRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ChangeEndPointRes_vtfunction_descr_;
+extern const XERdescriptor_t ChangeEndPointRes_objectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeEndPointRes_objectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeEndPointRes_objectID_descr_;
+extern const TTCN_RAWdescriptor_t ChangeEndPointRes_reserved5_raw_;
+extern const XERdescriptor_t ChangeEndPointRes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t ChangeEndPointRes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t ChangeEndPointRes_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t ChangeEndPointRes_reserved6_raw_;
+extern const XERdescriptor_t ChangeEndPointRes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t ChangeEndPointRes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t ChangeEndPointRes_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t ChangeEndPointRes_reserved7_raw_;
+extern const XERdescriptor_t ChangeEndPointRes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ChangeEndPointRes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ChangeEndPointRes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ChangeEndPointRes_reserved8_raw_;
+extern const XERdescriptor_t ChangeEndPointRes_reserved8_xer_;
+extern const TTCN_OERdescriptor_t ChangeEndPointRes_reserved8_oer_;
+extern const TTCN_Typedescriptor_t ChangeEndPointRes_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t ChangeEndPointRes_raw_;
+extern const TTCN_Typedescriptor_t ChangeEndPointRes_descr_;
+extern const TTCN_RAWdescriptor_t e__ChangeEndPointReq__LineDirection_raw_;
+extern const TTCN_Typedescriptor_t e__ChangeEndPointReq__LineDirection_descr_;
+extern const XERdescriptor_t ChangeEndPointReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ChangeEndPointReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ChangeEndPointReq_vtfunction_descr_;
+extern const XERdescriptor_t ChangeEndPointReq_objectIDofAnOutputLineObjectToChange_xer_;
+extern const TTCN_OERdescriptor_t ChangeEndPointReq_objectIDofAnOutputLineObjectToChange_oer_;
+extern const TTCN_Typedescriptor_t ChangeEndPointReq_objectIDofAnOutputLineObjectToChange_descr_;
+extern const XERdescriptor_t ChangeEndPointReq_width_xer_;
+extern const TTCN_OERdescriptor_t ChangeEndPointReq_width_oer_;
+extern const TTCN_Typedescriptor_t ChangeEndPointReq_width_descr_;
+extern const XERdescriptor_t ChangeEndPointReq_height_xer_;
+extern const TTCN_OERdescriptor_t ChangeEndPointReq_height_oer_;
+extern const TTCN_Typedescriptor_t ChangeEndPointReq_height_descr_;
+extern const TTCN_RAWdescriptor_t ChangeEndPointReq_raw_;
+extern const TTCN_Typedescriptor_t ChangeEndPointReq_descr_;
+extern const XERdescriptor_t ChangeFontAttributesRes__errorCodes_invalidObjectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeFontAttributesRes__errorCodes_invalidObjectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeFontAttributesRes__errorCodes_invalidObjectID_descr_;
+extern const XERdescriptor_t ChangeFontAttributesRes__errorCodes_invalidColor_xer_;
+extern const TTCN_OERdescriptor_t ChangeFontAttributesRes__errorCodes_invalidColor_oer_;
+extern const TTCN_Typedescriptor_t ChangeFontAttributesRes__errorCodes_invalidColor_descr_;
+extern const XERdescriptor_t ChangeFontAttributesRes__errorCodes_invalidSize_xer_;
+extern const TTCN_OERdescriptor_t ChangeFontAttributesRes__errorCodes_invalidSize_oer_;
+extern const TTCN_Typedescriptor_t ChangeFontAttributesRes__errorCodes_invalidSize_descr_;
+extern const XERdescriptor_t ChangeFontAttributesRes__errorCodes_invalidType_xer_;
+extern const TTCN_OERdescriptor_t ChangeFontAttributesRes__errorCodes_invalidType_oer_;
+extern const TTCN_Typedescriptor_t ChangeFontAttributesRes__errorCodes_invalidType_descr_;
+extern const XERdescriptor_t ChangeFontAttributesRes__errorCodes_invalidStyle_xer_;
+extern const TTCN_OERdescriptor_t ChangeFontAttributesRes__errorCodes_invalidStyle_oer_;
+extern const TTCN_Typedescriptor_t ChangeFontAttributesRes__errorCodes_invalidStyle_descr_;
+extern const XERdescriptor_t ChangeFontAttributesRes__errorCodes_anyOtherError_xer_;
+extern const TTCN_OERdescriptor_t ChangeFontAttributesRes__errorCodes_anyOtherError_oer_;
+extern const TTCN_Typedescriptor_t ChangeFontAttributesRes__errorCodes_anyOtherError_descr_;
+extern const XERdescriptor_t ChangeFontAttributesRes__errorCodes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t ChangeFontAttributesRes__errorCodes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t ChangeFontAttributesRes__errorCodes_reserved6_descr_;
+extern const XERdescriptor_t ChangeFontAttributesRes__errorCodes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ChangeFontAttributesRes__errorCodes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ChangeFontAttributesRes__errorCodes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ChangeFontAttributesRes__errorCodes_raw_;
+extern const TTCN_Typedescriptor_t ChangeFontAttributesRes__errorCodes_descr_;
+extern const XERdescriptor_t ChangeFontAttributesRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ChangeFontAttributesRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ChangeFontAttributesRes_vtfunction_descr_;
+extern const XERdescriptor_t ChangeFontAttributesRes_objectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeFontAttributesRes_objectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeFontAttributesRes_objectID_descr_;
+extern const TTCN_RAWdescriptor_t ChangeFontAttributesRes_reserved5_raw_;
+extern const XERdescriptor_t ChangeFontAttributesRes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t ChangeFontAttributesRes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t ChangeFontAttributesRes_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t ChangeFontAttributesRes_reserved6_raw_;
+extern const XERdescriptor_t ChangeFontAttributesRes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t ChangeFontAttributesRes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t ChangeFontAttributesRes_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t ChangeFontAttributesRes_reserved7_raw_;
+extern const XERdescriptor_t ChangeFontAttributesRes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ChangeFontAttributesRes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ChangeFontAttributesRes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ChangeFontAttributesRes_reserved8_raw_;
+extern const XERdescriptor_t ChangeFontAttributesRes_reserved8_xer_;
+extern const TTCN_OERdescriptor_t ChangeFontAttributesRes_reserved8_oer_;
+extern const TTCN_Typedescriptor_t ChangeFontAttributesRes_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t ChangeFontAttributesRes_raw_;
+extern const TTCN_Typedescriptor_t ChangeFontAttributesRes_descr_;
+extern const XERdescriptor_t ChangeFontAttributesReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ChangeFontAttributesReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ChangeFontAttributesReq_vtfunction_descr_;
+extern const XERdescriptor_t ChangeFontAttributesReq_ObjectIDofObjectToChange_xer_;
+extern const TTCN_OERdescriptor_t ChangeFontAttributesReq_ObjectIDofObjectToChange_oer_;
+extern const TTCN_Typedescriptor_t ChangeFontAttributesReq_ObjectIDofObjectToChange_descr_;
+extern const XERdescriptor_t ChangeFontAttributesReq_fontColour_xer_;
+extern const TTCN_OERdescriptor_t ChangeFontAttributesReq_fontColour_oer_;
+extern const TTCN_Typedescriptor_t ChangeFontAttributesReq_fontColour_descr_;
+extern const XERdescriptor_t ChangeFontAttributesReq_fontSize_xer_;
+extern const TTCN_OERdescriptor_t ChangeFontAttributesReq_fontSize_oer_;
+extern const TTCN_Typedescriptor_t ChangeFontAttributesReq_fontSize_descr_;
+extern const XERdescriptor_t ChangeFontAttributesReq_fontType_xer_;
+extern const TTCN_OERdescriptor_t ChangeFontAttributesReq_fontType_oer_;
+extern const TTCN_Typedescriptor_t ChangeFontAttributesReq_fontType_descr_;
+extern const XERdescriptor_t ChangeFontAttributesReq_fontStyle_xer_;
+extern const TTCN_OERdescriptor_t ChangeFontAttributesReq_fontStyle_oer_;
+extern const TTCN_Typedescriptor_t ChangeFontAttributesReq_fontStyle_descr_;
+extern const TTCN_RAWdescriptor_t ChangeFontAttributesReq_reserved8_raw_;
+extern const XERdescriptor_t ChangeFontAttributesReq_reserved8_xer_;
+extern const TTCN_OERdescriptor_t ChangeFontAttributesReq_reserved8_oer_;
+extern const TTCN_Typedescriptor_t ChangeFontAttributesReq_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t ChangeFontAttributesReq_raw_;
+extern const TTCN_Typedescriptor_t ChangeFontAttributesReq_descr_;
+extern const XERdescriptor_t ChangeLineAttributesRes__errorCodes_invalidObjectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeLineAttributesRes__errorCodes_invalidObjectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeLineAttributesRes__errorCodes_invalidObjectID_descr_;
+extern const XERdescriptor_t ChangeLineAttributesRes__errorCodes_invalidColor_xer_;
+extern const TTCN_OERdescriptor_t ChangeLineAttributesRes__errorCodes_invalidColor_oer_;
+extern const TTCN_Typedescriptor_t ChangeLineAttributesRes__errorCodes_invalidColor_descr_;
+extern const XERdescriptor_t ChangeLineAttributesRes__errorCodes_invalidWidth_xer_;
+extern const TTCN_OERdescriptor_t ChangeLineAttributesRes__errorCodes_invalidWidth_oer_;
+extern const TTCN_Typedescriptor_t ChangeLineAttributesRes__errorCodes_invalidWidth_descr_;
+extern const XERdescriptor_t ChangeLineAttributesRes__errorCodes_reserved3_xer_;
+extern const TTCN_OERdescriptor_t ChangeLineAttributesRes__errorCodes_reserved3_oer_;
+extern const TTCN_Typedescriptor_t ChangeLineAttributesRes__errorCodes_reserved3_descr_;
+extern const XERdescriptor_t ChangeLineAttributesRes__errorCodes_anyOtherError_xer_;
+extern const TTCN_OERdescriptor_t ChangeLineAttributesRes__errorCodes_anyOtherError_oer_;
+extern const TTCN_Typedescriptor_t ChangeLineAttributesRes__errorCodes_anyOtherError_descr_;
+extern const XERdescriptor_t ChangeLineAttributesRes__errorCodes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t ChangeLineAttributesRes__errorCodes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t ChangeLineAttributesRes__errorCodes_reserved5_descr_;
+extern const XERdescriptor_t ChangeLineAttributesRes__errorCodes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t ChangeLineAttributesRes__errorCodes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t ChangeLineAttributesRes__errorCodes_reserved6_descr_;
+extern const XERdescriptor_t ChangeLineAttributesRes__errorCodes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ChangeLineAttributesRes__errorCodes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ChangeLineAttributesRes__errorCodes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ChangeLineAttributesRes__errorCodes_raw_;
+extern const TTCN_Typedescriptor_t ChangeLineAttributesRes__errorCodes_descr_;
+extern const XERdescriptor_t ChangeLineAttributesRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ChangeLineAttributesRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ChangeLineAttributesRes_vtfunction_descr_;
+extern const XERdescriptor_t ChangeLineAttributesRes_objectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeLineAttributesRes_objectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeLineAttributesRes_objectID_descr_;
+extern const TTCN_RAWdescriptor_t ChangeLineAttributesRes_reserved5_raw_;
+extern const XERdescriptor_t ChangeLineAttributesRes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t ChangeLineAttributesRes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t ChangeLineAttributesRes_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t ChangeLineAttributesRes_reserved6_raw_;
+extern const XERdescriptor_t ChangeLineAttributesRes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t ChangeLineAttributesRes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t ChangeLineAttributesRes_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t ChangeLineAttributesRes_reserved7_raw_;
+extern const XERdescriptor_t ChangeLineAttributesRes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ChangeLineAttributesRes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ChangeLineAttributesRes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ChangeLineAttributesRes_reserved8_raw_;
+extern const XERdescriptor_t ChangeLineAttributesRes_reserved8_xer_;
+extern const TTCN_OERdescriptor_t ChangeLineAttributesRes_reserved8_oer_;
+extern const TTCN_Typedescriptor_t ChangeLineAttributesRes_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t ChangeLineAttributesRes_raw_;
+extern const TTCN_Typedescriptor_t ChangeLineAttributesRes_descr_;
+extern const XERdescriptor_t ChangeLineAttributesReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ChangeLineAttributesReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ChangeLineAttributesReq_vtfunction_descr_;
+extern const XERdescriptor_t ChangeLineAttributesReq_ObjectIDofObjectToChange_xer_;
+extern const TTCN_OERdescriptor_t ChangeLineAttributesReq_ObjectIDofObjectToChange_oer_;
+extern const TTCN_Typedescriptor_t ChangeLineAttributesReq_ObjectIDofObjectToChange_descr_;
+extern const XERdescriptor_t ChangeLineAttributesReq_lineColour_xer_;
+extern const TTCN_OERdescriptor_t ChangeLineAttributesReq_lineColour_oer_;
+extern const TTCN_Typedescriptor_t ChangeLineAttributesReq_lineColour_descr_;
+extern const XERdescriptor_t ChangeLineAttributesReq_lineWidth_xer_;
+extern const TTCN_OERdescriptor_t ChangeLineAttributesReq_lineWidth_oer_;
+extern const TTCN_Typedescriptor_t ChangeLineAttributesReq_lineWidth_descr_;
+extern const XERdescriptor_t ChangeLineAttributesReq_LineArt_xer_;
+extern const TTCN_OERdescriptor_t ChangeLineAttributesReq_LineArt_oer_;
+extern const TTCN_Typedescriptor_t ChangeLineAttributesReq_LineArt_descr_;
+extern const TTCN_RAWdescriptor_t ChangeLineAttributesReq_reserved8_raw_;
+extern const XERdescriptor_t ChangeLineAttributesReq_reserved8_xer_;
+extern const TTCN_OERdescriptor_t ChangeLineAttributesReq_reserved8_oer_;
+extern const TTCN_Typedescriptor_t ChangeLineAttributesReq_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t ChangeLineAttributesReq_raw_;
+extern const TTCN_Typedescriptor_t ChangeLineAttributesReq_descr_;
+extern const XERdescriptor_t ChangeFillAttributesRes__errorCodes_invalidObjectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeFillAttributesRes__errorCodes_invalidObjectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeFillAttributesRes__errorCodes_invalidObjectID_descr_;
+extern const XERdescriptor_t ChangeFillAttributesRes__errorCodes_invalidType_xer_;
+extern const TTCN_OERdescriptor_t ChangeFillAttributesRes__errorCodes_invalidType_oer_;
+extern const TTCN_Typedescriptor_t ChangeFillAttributesRes__errorCodes_invalidType_descr_;
+extern const XERdescriptor_t ChangeFillAttributesRes__errorCodes_invalidColor_xer_;
+extern const TTCN_OERdescriptor_t ChangeFillAttributesRes__errorCodes_invalidColor_oer_;
+extern const TTCN_Typedescriptor_t ChangeFillAttributesRes__errorCodes_invalidColor_descr_;
+extern const XERdescriptor_t ChangeFillAttributesRes__errorCodes_invalidPatternObjectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeFillAttributesRes__errorCodes_invalidPatternObjectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeFillAttributesRes__errorCodes_invalidPatternObjectID_descr_;
+extern const XERdescriptor_t ChangeFillAttributesRes__errorCodes_anyOtherError_xer_;
+extern const TTCN_OERdescriptor_t ChangeFillAttributesRes__errorCodes_anyOtherError_oer_;
+extern const TTCN_Typedescriptor_t ChangeFillAttributesRes__errorCodes_anyOtherError_descr_;
+extern const XERdescriptor_t ChangeFillAttributesRes__errorCodes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t ChangeFillAttributesRes__errorCodes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t ChangeFillAttributesRes__errorCodes_reserved5_descr_;
+extern const XERdescriptor_t ChangeFillAttributesRes__errorCodes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t ChangeFillAttributesRes__errorCodes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t ChangeFillAttributesRes__errorCodes_reserved6_descr_;
+extern const XERdescriptor_t ChangeFillAttributesRes__errorCodes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ChangeFillAttributesRes__errorCodes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ChangeFillAttributesRes__errorCodes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ChangeFillAttributesRes__errorCodes_raw_;
+extern const TTCN_Typedescriptor_t ChangeFillAttributesRes__errorCodes_descr_;
+extern const XERdescriptor_t ChangeFillAttributesRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ChangeFillAttributesRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ChangeFillAttributesRes_vtfunction_descr_;
+extern const XERdescriptor_t ChangeFillAttributesRes_objectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeFillAttributesRes_objectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeFillAttributesRes_objectID_descr_;
+extern const TTCN_RAWdescriptor_t ChangeFillAttributesRes_reserved5_raw_;
+extern const XERdescriptor_t ChangeFillAttributesRes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t ChangeFillAttributesRes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t ChangeFillAttributesRes_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t ChangeFillAttributesRes_reserved6_raw_;
+extern const XERdescriptor_t ChangeFillAttributesRes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t ChangeFillAttributesRes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t ChangeFillAttributesRes_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t ChangeFillAttributesRes_reserved7_raw_;
+extern const XERdescriptor_t ChangeFillAttributesRes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ChangeFillAttributesRes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ChangeFillAttributesRes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ChangeFillAttributesRes_reserved8_raw_;
+extern const XERdescriptor_t ChangeFillAttributesRes_reserved8_xer_;
+extern const TTCN_OERdescriptor_t ChangeFillAttributesRes_reserved8_oer_;
+extern const TTCN_Typedescriptor_t ChangeFillAttributesRes_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t ChangeFillAttributesRes_raw_;
+extern const TTCN_Typedescriptor_t ChangeFillAttributesRes_descr_;
+extern const XERdescriptor_t ChangeFillAttributesReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ChangeFillAttributesReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ChangeFillAttributesReq_vtfunction_descr_;
+extern const XERdescriptor_t ChangeFillAttributesReq_ObjectIDofObjectToChange_xer_;
+extern const TTCN_OERdescriptor_t ChangeFillAttributesReq_ObjectIDofObjectToChange_oer_;
+extern const TTCN_Typedescriptor_t ChangeFillAttributesReq_ObjectIDofObjectToChange_descr_;
+extern const XERdescriptor_t ChangeFillAttributesReq_lineColour_xer_;
+extern const TTCN_OERdescriptor_t ChangeFillAttributesReq_lineColour_oer_;
+extern const TTCN_Typedescriptor_t ChangeFillAttributesReq_lineColour_descr_;
+extern const XERdescriptor_t ChangeFillAttributesReq_lineWidth_xer_;
+extern const TTCN_OERdescriptor_t ChangeFillAttributesReq_lineWidth_oer_;
+extern const TTCN_Typedescriptor_t ChangeFillAttributesReq_lineWidth_descr_;
+extern const XERdescriptor_t ChangeFillAttributesReq_lineArt_xer_;
+extern const TTCN_OERdescriptor_t ChangeFillAttributesReq_lineArt_oer_;
+extern const TTCN_Typedescriptor_t ChangeFillAttributesReq_lineArt_descr_;
+extern const XERdescriptor_t ChangeFillAttributesReq_fillPatternObjectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeFillAttributesReq_fillPatternObjectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeFillAttributesReq_fillPatternObjectID_descr_;
+extern const TTCN_RAWdescriptor_t ChangeFillAttributesReq_reserved8_raw_;
+extern const XERdescriptor_t ChangeFillAttributesReq_reserved8_xer_;
+extern const TTCN_OERdescriptor_t ChangeFillAttributesReq_reserved8_oer_;
+extern const TTCN_Typedescriptor_t ChangeFillAttributesReq_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t ChangeFillAttributesReq_raw_;
+extern const TTCN_Typedescriptor_t ChangeFillAttributesReq_descr_;
+extern const XERdescriptor_t ChangeActiveMaskReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ChangeActiveMaskReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ChangeActiveMaskReq_vtfunction_descr_;
+extern const XERdescriptor_t ChangeActiveMaskReq_workingSetObjectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeActiveMaskReq_workingSetObjectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeActiveMaskReq_workingSetObjectID_descr_;
+extern const XERdescriptor_t ChangeActiveMaskReq_newActiveMaskObjectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeActiveMaskReq_newActiveMaskObjectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeActiveMaskReq_newActiveMaskObjectID_descr_;
+extern const TTCN_RAWdescriptor_t ChangeActiveMaskReq_reserved6_raw_;
+extern const XERdescriptor_t ChangeActiveMaskReq_reserved6_xer_;
+extern const TTCN_OERdescriptor_t ChangeActiveMaskReq_reserved6_oer_;
+extern const TTCN_Typedescriptor_t ChangeActiveMaskReq_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t ChangeActiveMaskReq_reserved7_raw_;
+extern const XERdescriptor_t ChangeActiveMaskReq_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ChangeActiveMaskReq_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ChangeActiveMaskReq_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ChangeActiveMaskReq_reserved8_raw_;
+extern const XERdescriptor_t ChangeActiveMaskReq_reserved8_xer_;
+extern const TTCN_OERdescriptor_t ChangeActiveMaskReq_reserved8_oer_;
+extern const TTCN_Typedescriptor_t ChangeActiveMaskReq_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t ChangeActiveMaskReq_raw_;
+extern const TTCN_Typedescriptor_t ChangeActiveMaskReq_descr_;
+extern const XERdescriptor_t ChangeActiveMaskRes__errorCodes_invalidWorkingSetObjectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeActiveMaskRes__errorCodes_invalidWorkingSetObjectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeActiveMaskRes__errorCodes_invalidWorkingSetObjectID_descr_;
+extern const XERdescriptor_t ChangeActiveMaskRes__errorCodes_invalidMaskObjectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeActiveMaskRes__errorCodes_invalidMaskObjectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeActiveMaskRes__errorCodes_invalidMaskObjectID_descr_;
+extern const XERdescriptor_t ChangeActiveMaskRes__errorCodes_undefined1_xer_;
+extern const TTCN_OERdescriptor_t ChangeActiveMaskRes__errorCodes_undefined1_oer_;
+extern const TTCN_Typedescriptor_t ChangeActiveMaskRes__errorCodes_undefined1_descr_;
+extern const XERdescriptor_t ChangeActiveMaskRes__errorCodes_undefined2_xer_;
+extern const TTCN_OERdescriptor_t ChangeActiveMaskRes__errorCodes_undefined2_oer_;
+extern const TTCN_Typedescriptor_t ChangeActiveMaskRes__errorCodes_undefined2_descr_;
+extern const XERdescriptor_t ChangeActiveMaskRes__errorCodes_anyOtherError_xer_;
+extern const TTCN_OERdescriptor_t ChangeActiveMaskRes__errorCodes_anyOtherError_oer_;
+extern const TTCN_Typedescriptor_t ChangeActiveMaskRes__errorCodes_anyOtherError_descr_;
+extern const XERdescriptor_t ChangeActiveMaskRes__errorCodes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t ChangeActiveMaskRes__errorCodes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t ChangeActiveMaskRes__errorCodes_reserved5_descr_;
+extern const XERdescriptor_t ChangeActiveMaskRes__errorCodes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t ChangeActiveMaskRes__errorCodes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t ChangeActiveMaskRes__errorCodes_reserved6_descr_;
+extern const XERdescriptor_t ChangeActiveMaskRes__errorCodes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ChangeActiveMaskRes__errorCodes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ChangeActiveMaskRes__errorCodes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ChangeActiveMaskRes__errorCodes_raw_;
+extern const TTCN_Typedescriptor_t ChangeActiveMaskRes__errorCodes_descr_;
+extern const XERdescriptor_t ChangeActiveMaskRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ChangeActiveMaskRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ChangeActiveMaskRes_vtfunction_descr_;
+extern const XERdescriptor_t ChangeActiveMaskRes_newActiveMaskObjectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeActiveMaskRes_newActiveMaskObjectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeActiveMaskRes_newActiveMaskObjectID_descr_;
+extern const TTCN_RAWdescriptor_t ChangeActiveMaskRes_reserved5_raw_;
+extern const XERdescriptor_t ChangeActiveMaskRes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t ChangeActiveMaskRes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t ChangeActiveMaskRes_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t ChangeActiveMaskRes_reserved6_raw_;
+extern const XERdescriptor_t ChangeActiveMaskRes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t ChangeActiveMaskRes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t ChangeActiveMaskRes_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t ChangeActiveMaskRes_reserved7_raw_;
+extern const XERdescriptor_t ChangeActiveMaskRes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ChangeActiveMaskRes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ChangeActiveMaskRes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ChangeActiveMaskRes_reserved8_raw_;
+extern const XERdescriptor_t ChangeActiveMaskRes_reserved8_xer_;
+extern const TTCN_OERdescriptor_t ChangeActiveMaskRes_reserved8_oer_;
+extern const TTCN_Typedescriptor_t ChangeActiveMaskRes_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t ChangeActiveMaskRes_raw_;
+extern const TTCN_Typedescriptor_t ChangeActiveMaskRes_descr_;
+extern const TTCN_RAWdescriptor_t e__ChangeSoftKeyMaskReq__MaskType_raw_;
+extern const TTCN_Typedescriptor_t e__ChangeSoftKeyMaskReq__MaskType_descr_;
+extern const XERdescriptor_t ChangeSoftKeyMaskReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ChangeSoftKeyMaskReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ChangeSoftKeyMaskReq_vtfunction_descr_;
+extern const XERdescriptor_t ChangeSoftKeyMaskReq_DataOrAlarmMaskObjectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeSoftKeyMaskReq_DataOrAlarmMaskObjectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeSoftKeyMaskReq_DataOrAlarmMaskObjectID_descr_;
+extern const XERdescriptor_t ChangeSoftKeyMaskReq_NewSoftKeyMaskObjectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeSoftKeyMaskReq_NewSoftKeyMaskObjectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeSoftKeyMaskReq_NewSoftKeyMaskObjectID_descr_;
+extern const TTCN_RAWdescriptor_t ChangeSoftKeyMaskReq_reserved7_raw_;
+extern const XERdescriptor_t ChangeSoftKeyMaskReq_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ChangeSoftKeyMaskReq_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ChangeSoftKeyMaskReq_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ChangeSoftKeyMaskReq_reserved8_raw_;
+extern const XERdescriptor_t ChangeSoftKeyMaskReq_reserved8_xer_;
+extern const TTCN_OERdescriptor_t ChangeSoftKeyMaskReq_reserved8_oer_;
+extern const TTCN_Typedescriptor_t ChangeSoftKeyMaskReq_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t ChangeSoftKeyMaskReq_raw_;
+extern const TTCN_Typedescriptor_t ChangeSoftKeyMaskReq_descr_;
+extern const XERdescriptor_t ChangeSoftKeyMaskRes__errorCodes_invalidDataOrAlarmMaskObjectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeSoftKeyMaskRes__errorCodes_invalidDataOrAlarmMaskObjectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeSoftKeyMaskRes__errorCodes_invalidDataOrAlarmMaskObjectID_descr_;
+extern const XERdescriptor_t ChangeSoftKeyMaskRes__errorCodes_invalidSoftKeyMaskObjectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeSoftKeyMaskRes__errorCodes_invalidSoftKeyMaskObjectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeSoftKeyMaskRes__errorCodes_invalidSoftKeyMaskObjectID_descr_;
+extern const XERdescriptor_t ChangeSoftKeyMaskRes__errorCodes_missingObjects_xer_;
+extern const TTCN_OERdescriptor_t ChangeSoftKeyMaskRes__errorCodes_missingObjects_oer_;
+extern const TTCN_Typedescriptor_t ChangeSoftKeyMaskRes__errorCodes_missingObjects_descr_;
+extern const XERdescriptor_t ChangeSoftKeyMaskRes__errorCodes_MaskOrChildObjectHasErrors_xer_;
+extern const TTCN_OERdescriptor_t ChangeSoftKeyMaskRes__errorCodes_MaskOrChildObjectHasErrors_oer_;
+extern const TTCN_Typedescriptor_t ChangeSoftKeyMaskRes__errorCodes_MaskOrChildObjectHasErrors_descr_;
+extern const XERdescriptor_t ChangeSoftKeyMaskRes__errorCodes_anyOtherError_xer_;
+extern const TTCN_OERdescriptor_t ChangeSoftKeyMaskRes__errorCodes_anyOtherError_oer_;
+extern const TTCN_Typedescriptor_t ChangeSoftKeyMaskRes__errorCodes_anyOtherError_descr_;
+extern const XERdescriptor_t ChangeSoftKeyMaskRes__errorCodes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t ChangeSoftKeyMaskRes__errorCodes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t ChangeSoftKeyMaskRes__errorCodes_reserved5_descr_;
+extern const XERdescriptor_t ChangeSoftKeyMaskRes__errorCodes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t ChangeSoftKeyMaskRes__errorCodes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t ChangeSoftKeyMaskRes__errorCodes_reserved6_descr_;
+extern const XERdescriptor_t ChangeSoftKeyMaskRes__errorCodes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ChangeSoftKeyMaskRes__errorCodes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ChangeSoftKeyMaskRes__errorCodes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ChangeSoftKeyMaskRes__errorCodes_raw_;
+extern const TTCN_Typedescriptor_t ChangeSoftKeyMaskRes__errorCodes_descr_;
+extern const XERdescriptor_t ChangeSoftKeyMaskRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ChangeSoftKeyMaskRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ChangeSoftKeyMaskRes_vtfunction_descr_;
+extern const XERdescriptor_t ChangeSoftKeyMaskRes_DataOrAlarmMaskObjectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeSoftKeyMaskRes_DataOrAlarmMaskObjectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeSoftKeyMaskRes_DataOrAlarmMaskObjectID_descr_;
+extern const XERdescriptor_t ChangeSoftKeyMaskRes_NewSoftKeyMaskObjectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeSoftKeyMaskRes_NewSoftKeyMaskObjectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeSoftKeyMaskRes_NewSoftKeyMaskObjectID_descr_;
+extern const TTCN_RAWdescriptor_t ChangeSoftKeyMaskRes_reserved8_raw_;
+extern const XERdescriptor_t ChangeSoftKeyMaskRes_reserved8_xer_;
+extern const TTCN_OERdescriptor_t ChangeSoftKeyMaskRes_reserved8_oer_;
+extern const TTCN_Typedescriptor_t ChangeSoftKeyMaskRes_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t ChangeSoftKeyMaskRes_raw_;
+extern const TTCN_Typedescriptor_t ChangeSoftKeyMaskRes_descr_;
+extern const XERdescriptor_t ChangeAttributeReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ChangeAttributeReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ChangeAttributeReq_vtfunction_descr_;
+extern const XERdescriptor_t ChangeAttributeReq_objectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeAttributeReq_objectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeAttributeReq_objectID_descr_;
+extern const XERdescriptor_t ChangeAttributeReq_attributeID_xer_;
+extern const TTCN_OERdescriptor_t ChangeAttributeReq_attributeID_oer_;
+extern const TTCN_Typedescriptor_t ChangeAttributeReq_attributeID_descr_;
+extern const XERdescriptor_t ChangeAttributeReq_newValueOfAttribute_xer_;
+extern const TTCN_OERdescriptor_t ChangeAttributeReq_newValueOfAttribute_oer_;
+extern const TTCN_Typedescriptor_t ChangeAttributeReq_newValueOfAttribute_descr_;
+extern const TTCN_RAWdescriptor_t ChangeAttributeReq_raw_;
+extern const TTCN_Typedescriptor_t ChangeAttributeReq_descr_;
+extern const XERdescriptor_t ChangeAttributeRes__errorCodes_invalidWorkingSetObjectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeAttributeRes__errorCodes_invalidWorkingSetObjectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeAttributeRes__errorCodes_invalidWorkingSetObjectID_descr_;
+extern const XERdescriptor_t ChangeAttributeRes__errorCodes_invalidAttributeID_xer_;
+extern const TTCN_OERdescriptor_t ChangeAttributeRes__errorCodes_invalidAttributeID_oer_;
+extern const TTCN_Typedescriptor_t ChangeAttributeRes__errorCodes_invalidAttributeID_descr_;
+extern const XERdescriptor_t ChangeAttributeRes__errorCodes_invalidValue_xer_;
+extern const TTCN_OERdescriptor_t ChangeAttributeRes__errorCodes_invalidValue_oer_;
+extern const TTCN_Typedescriptor_t ChangeAttributeRes__errorCodes_invalidValue_descr_;
+extern const XERdescriptor_t ChangeAttributeRes__errorCodes_valueInUse_xer_;
+extern const TTCN_OERdescriptor_t ChangeAttributeRes__errorCodes_valueInUse_oer_;
+extern const TTCN_Typedescriptor_t ChangeAttributeRes__errorCodes_valueInUse_descr_;
+extern const XERdescriptor_t ChangeAttributeRes__errorCodes_anyOtherError_xer_;
+extern const TTCN_OERdescriptor_t ChangeAttributeRes__errorCodes_anyOtherError_oer_;
+extern const TTCN_Typedescriptor_t ChangeAttributeRes__errorCodes_anyOtherError_descr_;
+extern const XERdescriptor_t ChangeAttributeRes__errorCodes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t ChangeAttributeRes__errorCodes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t ChangeAttributeRes__errorCodes_reserved5_descr_;
+extern const XERdescriptor_t ChangeAttributeRes__errorCodes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t ChangeAttributeRes__errorCodes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t ChangeAttributeRes__errorCodes_reserved6_descr_;
+extern const XERdescriptor_t ChangeAttributeRes__errorCodes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ChangeAttributeRes__errorCodes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ChangeAttributeRes__errorCodes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ChangeAttributeRes__errorCodes_raw_;
+extern const TTCN_Typedescriptor_t ChangeAttributeRes__errorCodes_descr_;
+extern const XERdescriptor_t ChangeAttributeRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ChangeAttributeRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ChangeAttributeRes_vtfunction_descr_;
+extern const XERdescriptor_t ChangeAttributeRes_objectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeAttributeRes_objectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeAttributeRes_objectID_descr_;
+extern const XERdescriptor_t ChangeAttributeRes_attributeID_xer_;
+extern const TTCN_OERdescriptor_t ChangeAttributeRes_attributeID_oer_;
+extern const TTCN_Typedescriptor_t ChangeAttributeRes_attributeID_descr_;
+extern const TTCN_RAWdescriptor_t ChangeAttributeRes_reserved6_raw_;
+extern const XERdescriptor_t ChangeAttributeRes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t ChangeAttributeRes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t ChangeAttributeRes_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t ChangeAttributeRes_reserved7_raw_;
+extern const XERdescriptor_t ChangeAttributeRes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ChangeAttributeRes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ChangeAttributeRes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ChangeAttributeRes_reserved8_raw_;
+extern const XERdescriptor_t ChangeAttributeRes_reserved8_xer_;
+extern const TTCN_OERdescriptor_t ChangeAttributeRes_reserved8_oer_;
+extern const TTCN_Typedescriptor_t ChangeAttributeRes_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t ChangeAttributeRes_raw_;
+extern const TTCN_Typedescriptor_t ChangeAttributeRes_descr_;
+extern const XERdescriptor_t ChangePriorityRes__errorCodes_invalidObjectID_xer_;
+extern const TTCN_OERdescriptor_t ChangePriorityRes__errorCodes_invalidObjectID_oer_;
+extern const TTCN_Typedescriptor_t ChangePriorityRes__errorCodes_invalidObjectID_descr_;
+extern const XERdescriptor_t ChangePriorityRes__errorCodes_invalidPriority_xer_;
+extern const TTCN_OERdescriptor_t ChangePriorityRes__errorCodes_invalidPriority_oer_;
+extern const TTCN_Typedescriptor_t ChangePriorityRes__errorCodes_invalidPriority_descr_;
+extern const XERdescriptor_t ChangePriorityRes__errorCodes_reserved2_xer_;
+extern const TTCN_OERdescriptor_t ChangePriorityRes__errorCodes_reserved2_oer_;
+extern const TTCN_Typedescriptor_t ChangePriorityRes__errorCodes_reserved2_descr_;
+extern const XERdescriptor_t ChangePriorityRes__errorCodes_reserved3_xer_;
+extern const TTCN_OERdescriptor_t ChangePriorityRes__errorCodes_reserved3_oer_;
+extern const TTCN_Typedescriptor_t ChangePriorityRes__errorCodes_reserved3_descr_;
+extern const XERdescriptor_t ChangePriorityRes__errorCodes_anyOtherError_xer_;
+extern const TTCN_OERdescriptor_t ChangePriorityRes__errorCodes_anyOtherError_oer_;
+extern const TTCN_Typedescriptor_t ChangePriorityRes__errorCodes_anyOtherError_descr_;
+extern const XERdescriptor_t ChangePriorityRes__errorCodes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t ChangePriorityRes__errorCodes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t ChangePriorityRes__errorCodes_reserved5_descr_;
+extern const XERdescriptor_t ChangePriorityRes__errorCodes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t ChangePriorityRes__errorCodes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t ChangePriorityRes__errorCodes_reserved6_descr_;
+extern const XERdescriptor_t ChangePriorityRes__errorCodes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ChangePriorityRes__errorCodes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ChangePriorityRes__errorCodes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ChangePriorityRes__errorCodes_raw_;
+extern const TTCN_Typedescriptor_t ChangePriorityRes__errorCodes_descr_;
+extern const XERdescriptor_t ChangePriorityRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ChangePriorityRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ChangePriorityRes_vtfunction_descr_;
+extern const XERdescriptor_t ChangePriorityRes_objectIDofArlarmMask_xer_;
+extern const TTCN_OERdescriptor_t ChangePriorityRes_objectIDofArlarmMask_oer_;
+extern const TTCN_Typedescriptor_t ChangePriorityRes_objectIDofArlarmMask_descr_;
+extern const XERdescriptor_t ChangePriorityRes_newPriority_xer_;
+extern const TTCN_OERdescriptor_t ChangePriorityRes_newPriority_oer_;
+extern const TTCN_Typedescriptor_t ChangePriorityRes_newPriority_descr_;
+extern const TTCN_RAWdescriptor_t ChangePriorityRes_reserved7_raw_;
+extern const XERdescriptor_t ChangePriorityRes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ChangePriorityRes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ChangePriorityRes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ChangePriorityRes_reserved8_raw_;
+extern const XERdescriptor_t ChangePriorityRes_reserved8_xer_;
+extern const TTCN_OERdescriptor_t ChangePriorityRes_reserved8_oer_;
+extern const TTCN_Typedescriptor_t ChangePriorityRes_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t ChangePriorityRes_raw_;
+extern const TTCN_Typedescriptor_t ChangePriorityRes_descr_;
+extern const XERdescriptor_t ChangePriorityReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ChangePriorityReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ChangePriorityReq_vtfunction_descr_;
+extern const XERdescriptor_t ChangePriorityReq_objectIDofArlarmMask_xer_;
+extern const TTCN_OERdescriptor_t ChangePriorityReq_objectIDofArlarmMask_oer_;
+extern const TTCN_Typedescriptor_t ChangePriorityReq_objectIDofArlarmMask_descr_;
+extern const XERdescriptor_t ChangePriorityReq_newPriority_xer_;
+extern const TTCN_OERdescriptor_t ChangePriorityReq_newPriority_oer_;
+extern const TTCN_Typedescriptor_t ChangePriorityReq_newPriority_descr_;
+extern const TTCN_RAWdescriptor_t ChangePriorityReq_reserved6_raw_;
+extern const XERdescriptor_t ChangePriorityReq_reserved6_xer_;
+extern const TTCN_OERdescriptor_t ChangePriorityReq_reserved6_oer_;
+extern const TTCN_Typedescriptor_t ChangePriorityReq_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t ChangePriorityReq_reserved7_raw_;
+extern const XERdescriptor_t ChangePriorityReq_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ChangePriorityReq_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ChangePriorityReq_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ChangePriorityReq_reserved8_raw_;
+extern const XERdescriptor_t ChangePriorityReq_reserved8_xer_;
+extern const TTCN_OERdescriptor_t ChangePriorityReq_reserved8_oer_;
+extern const TTCN_Typedescriptor_t ChangePriorityReq_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t ChangePriorityReq_raw_;
+extern const TTCN_Typedescriptor_t ChangePriorityReq_descr_;
+extern const XERdescriptor_t ChangeListItemRes__errorCodes_invalidObjectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeListItemRes__errorCodes_invalidObjectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeListItemRes__errorCodes_invalidObjectID_descr_;
+extern const XERdescriptor_t ChangeListItemRes__errorCodes_invalidListIndex_xer_;
+extern const TTCN_OERdescriptor_t ChangeListItemRes__errorCodes_invalidListIndex_oer_;
+extern const TTCN_Typedescriptor_t ChangeListItemRes__errorCodes_invalidListIndex_descr_;
+extern const XERdescriptor_t ChangeListItemRes__errorCodes_invalidNewListItemObjectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeListItemRes__errorCodes_invalidNewListItemObjectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeListItemRes__errorCodes_invalidNewListItemObjectID_descr_;
+extern const XERdescriptor_t ChangeListItemRes__errorCodes_valueInUse_xer_;
+extern const TTCN_OERdescriptor_t ChangeListItemRes__errorCodes_valueInUse_oer_;
+extern const TTCN_Typedescriptor_t ChangeListItemRes__errorCodes_valueInUse_descr_;
+extern const XERdescriptor_t ChangeListItemRes__errorCodes_anyOtherError_xer_;
+extern const TTCN_OERdescriptor_t ChangeListItemRes__errorCodes_anyOtherError_oer_;
+extern const TTCN_Typedescriptor_t ChangeListItemRes__errorCodes_anyOtherError_descr_;
+extern const XERdescriptor_t ChangeListItemRes__errorCodes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t ChangeListItemRes__errorCodes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t ChangeListItemRes__errorCodes_reserved5_descr_;
+extern const XERdescriptor_t ChangeListItemRes__errorCodes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t ChangeListItemRes__errorCodes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t ChangeListItemRes__errorCodes_reserved6_descr_;
+extern const XERdescriptor_t ChangeListItemRes__errorCodes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ChangeListItemRes__errorCodes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ChangeListItemRes__errorCodes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ChangeListItemRes__errorCodes_raw_;
+extern const TTCN_Typedescriptor_t ChangeListItemRes__errorCodes_descr_;
+extern const XERdescriptor_t ChangeListItemRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ChangeListItemRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ChangeListItemRes_vtfunction_descr_;
+extern const XERdescriptor_t ChangeListItemRes_objectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeListItemRes_objectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeListItemRes_objectID_descr_;
+extern const XERdescriptor_t ChangeListItemRes_listIndex_xer_;
+extern const TTCN_OERdescriptor_t ChangeListItemRes_listIndex_oer_;
+extern const TTCN_Typedescriptor_t ChangeListItemRes_listIndex_descr_;
+extern const XERdescriptor_t ChangeListItemRes_newObjectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeListItemRes_newObjectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeListItemRes_newObjectID_descr_;
+extern const TTCN_RAWdescriptor_t ChangeListItemRes_reserved8_raw_;
+extern const XERdescriptor_t ChangeListItemRes_reserved8_xer_;
+extern const TTCN_OERdescriptor_t ChangeListItemRes_reserved8_oer_;
+extern const TTCN_Typedescriptor_t ChangeListItemRes_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t ChangeListItemRes_raw_;
+extern const TTCN_Typedescriptor_t ChangeListItemRes_descr_;
+extern const XERdescriptor_t ChangeListItemReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ChangeListItemReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ChangeListItemReq_vtfunction_descr_;
+extern const XERdescriptor_t ChangeListItemReq_objectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeListItemReq_objectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeListItemReq_objectID_descr_;
+extern const XERdescriptor_t ChangeListItemReq_listIndex_xer_;
+extern const TTCN_OERdescriptor_t ChangeListItemReq_listIndex_oer_;
+extern const TTCN_Typedescriptor_t ChangeListItemReq_listIndex_descr_;
+extern const XERdescriptor_t ChangeListItemReq_newObjectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeListItemReq_newObjectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeListItemReq_newObjectID_descr_;
+extern const TTCN_RAWdescriptor_t ChangeListItemReq_reserved7_raw_;
+extern const XERdescriptor_t ChangeListItemReq_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ChangeListItemReq_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ChangeListItemReq_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ChangeListItemReq_reserved8_raw_;
+extern const XERdescriptor_t ChangeListItemReq_reserved8_xer_;
+extern const TTCN_OERdescriptor_t ChangeListItemReq_reserved8_oer_;
+extern const TTCN_Typedescriptor_t ChangeListItemReq_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t ChangeListItemReq_raw_;
+extern const TTCN_Typedescriptor_t ChangeListItemReq_descr_;
+extern const XERdescriptor_t DeleteObjectPoolReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t DeleteObjectPoolReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t DeleteObjectPoolReq_vtfunction_descr_;
+extern const TTCN_RAWdescriptor_t DeleteObjectPoolReq_reserved2_raw_;
+extern const XERdescriptor_t DeleteObjectPoolReq_reserved2_xer_;
+extern const TTCN_OERdescriptor_t DeleteObjectPoolReq_reserved2_oer_;
+extern const TTCN_Typedescriptor_t DeleteObjectPoolReq_reserved2_descr_;
+extern const TTCN_RAWdescriptor_t DeleteObjectPoolReq_reserved3_raw_;
+extern const XERdescriptor_t DeleteObjectPoolReq_reserved3_xer_;
+extern const TTCN_OERdescriptor_t DeleteObjectPoolReq_reserved3_oer_;
+extern const TTCN_Typedescriptor_t DeleteObjectPoolReq_reserved3_descr_;
+extern const TTCN_RAWdescriptor_t DeleteObjectPoolReq_reserved4_raw_;
+extern const XERdescriptor_t DeleteObjectPoolReq_reserved4_xer_;
+extern const TTCN_OERdescriptor_t DeleteObjectPoolReq_reserved4_oer_;
+extern const TTCN_Typedescriptor_t DeleteObjectPoolReq_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t DeleteObjectPoolReq_reserved5_raw_;
+extern const XERdescriptor_t DeleteObjectPoolReq_reserved5_xer_;
+extern const TTCN_OERdescriptor_t DeleteObjectPoolReq_reserved5_oer_;
+extern const TTCN_Typedescriptor_t DeleteObjectPoolReq_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t DeleteObjectPoolReq_reserved6_raw_;
+extern const XERdescriptor_t DeleteObjectPoolReq_reserved6_xer_;
+extern const TTCN_OERdescriptor_t DeleteObjectPoolReq_reserved6_oer_;
+extern const TTCN_Typedescriptor_t DeleteObjectPoolReq_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t DeleteObjectPoolReq_reserved7_raw_;
+extern const XERdescriptor_t DeleteObjectPoolReq_reserved7_xer_;
+extern const TTCN_OERdescriptor_t DeleteObjectPoolReq_reserved7_oer_;
+extern const TTCN_Typedescriptor_t DeleteObjectPoolReq_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t DeleteObjectPoolReq_reserved8_raw_;
+extern const XERdescriptor_t DeleteObjectPoolReq_reserved8_xer_;
+extern const TTCN_OERdescriptor_t DeleteObjectPoolReq_reserved8_oer_;
+extern const TTCN_Typedescriptor_t DeleteObjectPoolReq_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t DeleteObjectPoolReq_raw_;
+extern const TTCN_Typedescriptor_t DeleteObjectPoolReq_descr_;
+extern const XERdescriptor_t DeleteObjectPoolRes__ErrorCodes_deletionError_xer_;
+extern const TTCN_OERdescriptor_t DeleteObjectPoolRes__ErrorCodes_deletionError_oer_;
+extern const TTCN_Typedescriptor_t DeleteObjectPoolRes__ErrorCodes_deletionError_descr_;
+extern const XERdescriptor_t DeleteObjectPoolRes__ErrorCodes_undefined1_xer_;
+extern const TTCN_OERdescriptor_t DeleteObjectPoolRes__ErrorCodes_undefined1_oer_;
+extern const TTCN_Typedescriptor_t DeleteObjectPoolRes__ErrorCodes_undefined1_descr_;
+extern const XERdescriptor_t DeleteObjectPoolRes__ErrorCodes_undefined2_xer_;
+extern const TTCN_OERdescriptor_t DeleteObjectPoolRes__ErrorCodes_undefined2_oer_;
+extern const TTCN_Typedescriptor_t DeleteObjectPoolRes__ErrorCodes_undefined2_descr_;
+extern const XERdescriptor_t DeleteObjectPoolRes__ErrorCodes_undefined3_xer_;
+extern const TTCN_OERdescriptor_t DeleteObjectPoolRes__ErrorCodes_undefined3_oer_;
+extern const TTCN_Typedescriptor_t DeleteObjectPoolRes__ErrorCodes_undefined3_descr_;
+extern const XERdescriptor_t DeleteObjectPoolRes__ErrorCodes_anyOtherError_xer_;
+extern const TTCN_OERdescriptor_t DeleteObjectPoolRes__ErrorCodes_anyOtherError_oer_;
+extern const TTCN_Typedescriptor_t DeleteObjectPoolRes__ErrorCodes_anyOtherError_descr_;
+extern const XERdescriptor_t DeleteObjectPoolRes__ErrorCodes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t DeleteObjectPoolRes__ErrorCodes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t DeleteObjectPoolRes__ErrorCodes_reserved5_descr_;
+extern const XERdescriptor_t DeleteObjectPoolRes__ErrorCodes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t DeleteObjectPoolRes__ErrorCodes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t DeleteObjectPoolRes__ErrorCodes_reserved6_descr_;
+extern const XERdescriptor_t DeleteObjectPoolRes__ErrorCodes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t DeleteObjectPoolRes__ErrorCodes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t DeleteObjectPoolRes__ErrorCodes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t DeleteObjectPoolRes__ErrorCodes_raw_;
+extern const TTCN_Typedescriptor_t DeleteObjectPoolRes__ErrorCodes_descr_;
+extern const XERdescriptor_t DeleteObjectPoolRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t DeleteObjectPoolRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t DeleteObjectPoolRes_vtfunction_descr_;
+extern const TTCN_RAWdescriptor_t DeleteObjectPoolRes_reserved3_raw_;
+extern const XERdescriptor_t DeleteObjectPoolRes_reserved3_xer_;
+extern const TTCN_OERdescriptor_t DeleteObjectPoolRes_reserved3_oer_;
+extern const TTCN_Typedescriptor_t DeleteObjectPoolRes_reserved3_descr_;
+extern const TTCN_RAWdescriptor_t DeleteObjectPoolRes_reserved4_raw_;
+extern const XERdescriptor_t DeleteObjectPoolRes_reserved4_xer_;
+extern const TTCN_OERdescriptor_t DeleteObjectPoolRes_reserved4_oer_;
+extern const TTCN_Typedescriptor_t DeleteObjectPoolRes_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t DeleteObjectPoolRes_reserved5_raw_;
+extern const XERdescriptor_t DeleteObjectPoolRes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t DeleteObjectPoolRes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t DeleteObjectPoolRes_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t DeleteObjectPoolRes_reserved6_raw_;
+extern const XERdescriptor_t DeleteObjectPoolRes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t DeleteObjectPoolRes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t DeleteObjectPoolRes_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t DeleteObjectPoolRes_reserved7_raw_;
+extern const XERdescriptor_t DeleteObjectPoolRes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t DeleteObjectPoolRes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t DeleteObjectPoolRes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t DeleteObjectPoolRes_reserved8_raw_;
+extern const XERdescriptor_t DeleteObjectPoolRes_reserved8_xer_;
+extern const TTCN_OERdescriptor_t DeleteObjectPoolRes_reserved8_oer_;
+extern const TTCN_Typedescriptor_t DeleteObjectPoolRes_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t DeleteObjectPoolRes_raw_;
+extern const TTCN_Typedescriptor_t DeleteObjectPoolRes_descr_;
+extern const XERdescriptor_t ChangeStringValueReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ChangeStringValueReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ChangeStringValueReq_vtfunction_descr_;
+extern const XERdescriptor_t ChangeStringValueReq_objectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeStringValueReq_objectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeStringValueReq_objectID_descr_;
+extern const TTCN_RAWdescriptor_t ChangeStringValueReq_numberOfBytes_raw_;
+extern const XERdescriptor_t ChangeStringValueReq_numberOfBytes_xer_;
+extern const TTCN_OERdescriptor_t ChangeStringValueReq_numberOfBytes_oer_;
+extern const TTCN_Typedescriptor_t ChangeStringValueReq_numberOfBytes_descr_;
+extern const XERdescriptor_t ChangeStringValueReq_newStringValue_xer_;
+extern const TTCN_OERdescriptor_t ChangeStringValueReq_newStringValue_oer_;
+extern const TTCN_Typedescriptor_t ChangeStringValueReq_newStringValue_descr_;
+extern const TTCN_RAWdescriptor_t ChangeStringValueReq_raw_;
+extern const TTCN_Typedescriptor_t ChangeStringValueReq_descr_;
+extern const XERdescriptor_t ChangeStringValueRes__ErrorCodes_undefined_xer_;
+extern const TTCN_OERdescriptor_t ChangeStringValueRes__ErrorCodes_undefined_oer_;
+extern const TTCN_Typedescriptor_t ChangeStringValueRes__ErrorCodes_undefined_descr_;
+extern const XERdescriptor_t ChangeStringValueRes__ErrorCodes_invalidObjectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeStringValueRes__ErrorCodes_invalidObjectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeStringValueRes__ErrorCodes_invalidObjectID_descr_;
+extern const XERdescriptor_t ChangeStringValueRes__ErrorCodes_stringTooLong_xer_;
+extern const TTCN_OERdescriptor_t ChangeStringValueRes__ErrorCodes_stringTooLong_oer_;
+extern const TTCN_Typedescriptor_t ChangeStringValueRes__ErrorCodes_stringTooLong_descr_;
+extern const XERdescriptor_t ChangeStringValueRes__ErrorCodes_anyOtherError_xer_;
+extern const TTCN_OERdescriptor_t ChangeStringValueRes__ErrorCodes_anyOtherError_oer_;
+extern const TTCN_Typedescriptor_t ChangeStringValueRes__ErrorCodes_anyOtherError_descr_;
+extern const XERdescriptor_t ChangeStringValueRes__ErrorCodes_reserved4_xer_;
+extern const TTCN_OERdescriptor_t ChangeStringValueRes__ErrorCodes_reserved4_oer_;
+extern const TTCN_Typedescriptor_t ChangeStringValueRes__ErrorCodes_reserved4_descr_;
+extern const XERdescriptor_t ChangeStringValueRes__ErrorCodes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t ChangeStringValueRes__ErrorCodes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t ChangeStringValueRes__ErrorCodes_reserved5_descr_;
+extern const XERdescriptor_t ChangeStringValueRes__ErrorCodes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t ChangeStringValueRes__ErrorCodes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t ChangeStringValueRes__ErrorCodes_reserved6_descr_;
+extern const XERdescriptor_t ChangeStringValueRes__ErrorCodes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ChangeStringValueRes__ErrorCodes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ChangeStringValueRes__ErrorCodes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ChangeStringValueRes__ErrorCodes_raw_;
+extern const TTCN_Typedescriptor_t ChangeStringValueRes__ErrorCodes_descr_;
+extern const XERdescriptor_t ChangeStringValueRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ChangeStringValueRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ChangeStringValueRes_vtfunction_descr_;
+extern const TTCN_RAWdescriptor_t ChangeStringValueRes_reserved2_raw_;
+extern const XERdescriptor_t ChangeStringValueRes_reserved2_xer_;
+extern const TTCN_OERdescriptor_t ChangeStringValueRes_reserved2_oer_;
+extern const TTCN_Typedescriptor_t ChangeStringValueRes_reserved2_descr_;
+extern const TTCN_RAWdescriptor_t ChangeStringValueRes_reserved3_raw_;
+extern const XERdescriptor_t ChangeStringValueRes_reserved3_xer_;
+extern const TTCN_OERdescriptor_t ChangeStringValueRes_reserved3_oer_;
+extern const TTCN_Typedescriptor_t ChangeStringValueRes_reserved3_descr_;
+extern const XERdescriptor_t ChangeStringValueRes_objectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeStringValueRes_objectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeStringValueRes_objectID_descr_;
+extern const TTCN_RAWdescriptor_t ChangeStringValueRes_reserved7_raw_;
+extern const XERdescriptor_t ChangeStringValueRes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ChangeStringValueRes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ChangeStringValueRes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ChangeStringValueRes_reserved8_raw_;
+extern const XERdescriptor_t ChangeStringValueRes_reserved8_xer_;
+extern const TTCN_OERdescriptor_t ChangeStringValueRes_reserved8_oer_;
+extern const TTCN_Typedescriptor_t ChangeStringValueRes_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t ChangeStringValueRes_raw_;
+extern const TTCN_Typedescriptor_t ChangeStringValueRes_descr_;
+extern const XERdescriptor_t ChangeChildPositionReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ChangeChildPositionReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ChangeChildPositionReq_vtfunction_descr_;
+extern const XERdescriptor_t ChangeChildPositionReq_parentObjectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeChildPositionReq_parentObjectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeChildPositionReq_parentObjectID_descr_;
+extern const XERdescriptor_t ChangeChildPositionReq_objectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeChildPositionReq_objectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeChildPositionReq_objectID_descr_;
+extern const XERdescriptor_t ChangeChildPositionReq_pos__x__relative_xer_;
+extern const TTCN_OERdescriptor_t ChangeChildPositionReq_pos__x__relative_oer_;
+extern const TTCN_Typedescriptor_t ChangeChildPositionReq_pos__x__relative_descr_;
+extern const XERdescriptor_t ChangeChildPositionReq_pos__y__relative_xer_;
+extern const TTCN_OERdescriptor_t ChangeChildPositionReq_pos__y__relative_oer_;
+extern const TTCN_Typedescriptor_t ChangeChildPositionReq_pos__y__relative_descr_;
+extern const TTCN_RAWdescriptor_t ChangeChildPositionReq_raw_;
+extern const TTCN_Typedescriptor_t ChangeChildPositionReq_descr_;
+extern const XERdescriptor_t ChangeChildPositionRes__ErrorCodes_invalidParentObjectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeChildPositionRes__ErrorCodes_invalidParentObjectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeChildPositionRes__ErrorCodes_invalidParentObjectID_descr_;
+extern const XERdescriptor_t ChangeChildPositionRes__ErrorCodes_invalidObjectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeChildPositionRes__ErrorCodes_invalidObjectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeChildPositionRes__ErrorCodes_invalidObjectID_descr_;
+extern const XERdescriptor_t ChangeChildPositionRes__ErrorCodes_undefined_xer_;
+extern const TTCN_OERdescriptor_t ChangeChildPositionRes__ErrorCodes_undefined_oer_;
+extern const TTCN_Typedescriptor_t ChangeChildPositionRes__ErrorCodes_undefined_descr_;
+extern const XERdescriptor_t ChangeChildPositionRes__ErrorCodes_anyOtherError_xer_;
+extern const TTCN_OERdescriptor_t ChangeChildPositionRes__ErrorCodes_anyOtherError_oer_;
+extern const TTCN_Typedescriptor_t ChangeChildPositionRes__ErrorCodes_anyOtherError_descr_;
+extern const XERdescriptor_t ChangeChildPositionRes__ErrorCodes_reserved4_xer_;
+extern const TTCN_OERdescriptor_t ChangeChildPositionRes__ErrorCodes_reserved4_oer_;
+extern const TTCN_Typedescriptor_t ChangeChildPositionRes__ErrorCodes_reserved4_descr_;
+extern const XERdescriptor_t ChangeChildPositionRes__ErrorCodes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t ChangeChildPositionRes__ErrorCodes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t ChangeChildPositionRes__ErrorCodes_reserved5_descr_;
+extern const XERdescriptor_t ChangeChildPositionRes__ErrorCodes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t ChangeChildPositionRes__ErrorCodes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t ChangeChildPositionRes__ErrorCodes_reserved6_descr_;
+extern const XERdescriptor_t ChangeChildPositionRes__ErrorCodes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ChangeChildPositionRes__ErrorCodes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ChangeChildPositionRes__ErrorCodes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ChangeChildPositionRes__ErrorCodes_raw_;
+extern const TTCN_Typedescriptor_t ChangeChildPositionRes__ErrorCodes_descr_;
+extern const XERdescriptor_t ChangeChildPositionRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ChangeChildPositionRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ChangeChildPositionRes_vtfunction_descr_;
+extern const XERdescriptor_t ChangeChildPositionRes_parentObjectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeChildPositionRes_parentObjectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeChildPositionRes_parentObjectID_descr_;
+extern const XERdescriptor_t ChangeChildPositionRes_objectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeChildPositionRes_objectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeChildPositionRes_objectID_descr_;
+extern const TTCN_RAWdescriptor_t ChangeChildPositionRes_reserved7_raw_;
+extern const XERdescriptor_t ChangeChildPositionRes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ChangeChildPositionRes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ChangeChildPositionRes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ChangeChildPositionRes_reserved8_raw_;
+extern const XERdescriptor_t ChangeChildPositionRes_reserved8_xer_;
+extern const TTCN_OERdescriptor_t ChangeChildPositionRes_reserved8_oer_;
+extern const TTCN_Typedescriptor_t ChangeChildPositionRes_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t ChangeChildPositionRes_raw_;
+extern const TTCN_Typedescriptor_t ChangeChildPositionRes_descr_;
+extern const XERdescriptor_t ChangeObjectLabelRes__ErrorCodes_invalidObjectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeObjectLabelRes__ErrorCodes_invalidObjectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeObjectLabelRes__ErrorCodes_invalidObjectID_descr_;
+extern const XERdescriptor_t ChangeObjectLabelRes__ErrorCodes_invalidStringVariableObjectID_xer_;
+extern const TTCN_OERdescriptor_t ChangeObjectLabelRes__ErrorCodes_invalidStringVariableObjectID_oer_;
+extern const TTCN_Typedescriptor_t ChangeObjectLabelRes__ErrorCodes_invalidStringVariableObjectID_descr_;
+extern const XERdescriptor_t ChangeObjectLabelRes__ErrorCodes_invalidFontType_xer_;
+extern const TTCN_OERdescriptor_t ChangeObjectLabelRes__ErrorCodes_invalidFontType_oer_;
+extern const TTCN_Typedescriptor_t ChangeObjectLabelRes__ErrorCodes_invalidFontType_descr_;
+extern const XERdescriptor_t ChangeObjectLabelRes__ErrorCodes_noObjectLabelReferenceListObjectAvailableInObjectPool_xer_;
+extern const TTCN_OERdescriptor_t ChangeObjectLabelRes__ErrorCodes_noObjectLabelReferenceListObjectAvailableInObjectPool_oer_;
+extern const TTCN_Typedescriptor_t ChangeObjectLabelRes__ErrorCodes_noObjectLabelReferenceListObjectAvailableInObjectPool_descr_;
+extern const XERdescriptor_t ChangeObjectLabelRes__ErrorCodes_designatorReferencesInvalidObjects_xer_;
+extern const TTCN_OERdescriptor_t ChangeObjectLabelRes__ErrorCodes_designatorReferencesInvalidObjects_oer_;
+extern const TTCN_Typedescriptor_t ChangeObjectLabelRes__ErrorCodes_designatorReferencesInvalidObjects_descr_;
+extern const XERdescriptor_t ChangeObjectLabelRes__ErrorCodes_anyOtherError_xer_;
+extern const TTCN_OERdescriptor_t ChangeObjectLabelRes__ErrorCodes_anyOtherError_oer_;
+extern const TTCN_Typedescriptor_t ChangeObjectLabelRes__ErrorCodes_anyOtherError_descr_;
+extern const XERdescriptor_t ChangeObjectLabelRes__ErrorCodes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t ChangeObjectLabelRes__ErrorCodes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t ChangeObjectLabelRes__ErrorCodes_reserved6_descr_;
+extern const XERdescriptor_t ChangeObjectLabelRes__ErrorCodes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ChangeObjectLabelRes__ErrorCodes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ChangeObjectLabelRes__ErrorCodes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ChangeObjectLabelRes__ErrorCodes_raw_;
+extern const TTCN_Typedescriptor_t ChangeObjectLabelRes__ErrorCodes_descr_;
+extern const XERdescriptor_t ChangeObjectLabelRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ChangeObjectLabelRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ChangeObjectLabelRes_vtfunction_descr_;
+extern const TTCN_RAWdescriptor_t ChangeObjectLabelRes_reserved3_raw_;
+extern const XERdescriptor_t ChangeObjectLabelRes_reserved3_xer_;
+extern const TTCN_OERdescriptor_t ChangeObjectLabelRes_reserved3_oer_;
+extern const TTCN_Typedescriptor_t ChangeObjectLabelRes_reserved3_descr_;
+extern const TTCN_RAWdescriptor_t ChangeObjectLabelRes_reserved4_raw_;
+extern const XERdescriptor_t ChangeObjectLabelRes_reserved4_xer_;
+extern const TTCN_OERdescriptor_t ChangeObjectLabelRes_reserved4_oer_;
+extern const TTCN_Typedescriptor_t ChangeObjectLabelRes_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t ChangeObjectLabelRes_reserved5_raw_;
+extern const XERdescriptor_t ChangeObjectLabelRes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t ChangeObjectLabelRes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t ChangeObjectLabelRes_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t ChangeObjectLabelRes_reserved6_raw_;
+extern const XERdescriptor_t ChangeObjectLabelRes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t ChangeObjectLabelRes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t ChangeObjectLabelRes_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t ChangeObjectLabelRes_reserved7_raw_;
+extern const XERdescriptor_t ChangeObjectLabelRes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ChangeObjectLabelRes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ChangeObjectLabelRes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ChangeObjectLabelRes_reserved8_raw_;
+extern const XERdescriptor_t ChangeObjectLabelRes_reserved8_xer_;
+extern const TTCN_OERdescriptor_t ChangeObjectLabelRes_reserved8_oer_;
+extern const TTCN_Typedescriptor_t ChangeObjectLabelRes_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t ChangeObjectLabelRes_raw_;
+extern const TTCN_Typedescriptor_t ChangeObjectLabelRes_descr_;
+extern const XERdescriptor_t ChangeObjectLabelReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ChangeObjectLabelReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ChangeObjectLabelReq_vtfunction_descr_;
+extern const XERdescriptor_t ChangeObjectLabelReq_objectIDofObjectToAssociateLabelWith_xer_;
+extern const TTCN_OERdescriptor_t ChangeObjectLabelReq_objectIDofObjectToAssociateLabelWith_oer_;
+extern const TTCN_Typedescriptor_t ChangeObjectLabelReq_objectIDofObjectToAssociateLabelWith_descr_;
+extern const XERdescriptor_t ChangeObjectLabelReq_objectIDofAStringVariableObjectThatContainsTheLabelString_xer_;
+extern const TTCN_OERdescriptor_t ChangeObjectLabelReq_objectIDofAStringVariableObjectThatContainsTheLabelString_oer_;
+extern const TTCN_Typedescriptor_t ChangeObjectLabelReq_objectIDofAStringVariableObjectThatContainsTheLabelString_descr_;
+extern const XERdescriptor_t ChangeObjectLabelReq_fontType_xer_;
+extern const TTCN_OERdescriptor_t ChangeObjectLabelReq_fontType_oer_;
+extern const TTCN_Typedescriptor_t ChangeObjectLabelReq_fontType_descr_;
+extern const XERdescriptor_t ChangeObjectLabelReq_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel_xer_;
+extern const TTCN_OERdescriptor_t ChangeObjectLabelReq_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel_oer_;
+extern const TTCN_Typedescriptor_t ChangeObjectLabelReq_objectIDofAnObjectToBeUsedAsAGraphicRepresentationOfTheObjectLabel_descr_;
+extern const TTCN_RAWdescriptor_t ChangeObjectLabelReq_raw_;
+extern const TTCN_Typedescriptor_t ChangeObjectLabelReq_descr_;
+extern const XERdescriptor_t ChangePolygonPointRes__ErrorCodes_invalidObjectID_xer_;
+extern const TTCN_OERdescriptor_t ChangePolygonPointRes__ErrorCodes_invalidObjectID_oer_;
+extern const TTCN_Typedescriptor_t ChangePolygonPointRes__ErrorCodes_invalidObjectID_descr_;
+extern const XERdescriptor_t ChangePolygonPointRes__ErrorCodes_invalidPointIndex_xer_;
+extern const TTCN_OERdescriptor_t ChangePolygonPointRes__ErrorCodes_invalidPointIndex_oer_;
+extern const TTCN_Typedescriptor_t ChangePolygonPointRes__ErrorCodes_invalidPointIndex_descr_;
+extern const XERdescriptor_t ChangePolygonPointRes__ErrorCodes_anyOtherError_xer_;
+extern const TTCN_OERdescriptor_t ChangePolygonPointRes__ErrorCodes_anyOtherError_oer_;
+extern const TTCN_Typedescriptor_t ChangePolygonPointRes__ErrorCodes_anyOtherError_descr_;
+extern const XERdescriptor_t ChangePolygonPointRes__ErrorCodes_reserved3_xer_;
+extern const TTCN_OERdescriptor_t ChangePolygonPointRes__ErrorCodes_reserved3_oer_;
+extern const TTCN_Typedescriptor_t ChangePolygonPointRes__ErrorCodes_reserved3_descr_;
+extern const XERdescriptor_t ChangePolygonPointRes__ErrorCodes_reserved4_xer_;
+extern const TTCN_OERdescriptor_t ChangePolygonPointRes__ErrorCodes_reserved4_oer_;
+extern const TTCN_Typedescriptor_t ChangePolygonPointRes__ErrorCodes_reserved4_descr_;
+extern const XERdescriptor_t ChangePolygonPointRes__ErrorCodes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t ChangePolygonPointRes__ErrorCodes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t ChangePolygonPointRes__ErrorCodes_reserved5_descr_;
+extern const XERdescriptor_t ChangePolygonPointRes__ErrorCodes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t ChangePolygonPointRes__ErrorCodes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t ChangePolygonPointRes__ErrorCodes_reserved6_descr_;
+extern const XERdescriptor_t ChangePolygonPointRes__ErrorCodes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ChangePolygonPointRes__ErrorCodes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ChangePolygonPointRes__ErrorCodes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ChangePolygonPointRes__ErrorCodes_raw_;
+extern const TTCN_Typedescriptor_t ChangePolygonPointRes__ErrorCodes_descr_;
+extern const XERdescriptor_t ChangePolygonPointRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ChangePolygonPointRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ChangePolygonPointRes_vtfunction_descr_;
+extern const XERdescriptor_t ChangePolygonPointRes_objectIDofTheOutputPolygonObjectToChange_xer_;
+extern const TTCN_OERdescriptor_t ChangePolygonPointRes_objectIDofTheOutputPolygonObjectToChange_oer_;
+extern const TTCN_Typedescriptor_t ChangePolygonPointRes_objectIDofTheOutputPolygonObjectToChange_descr_;
+extern const TTCN_RAWdescriptor_t ChangePolygonPointRes_reserved4_raw_;
+extern const XERdescriptor_t ChangePolygonPointRes_reserved4_xer_;
+extern const TTCN_OERdescriptor_t ChangePolygonPointRes_reserved4_oer_;
+extern const TTCN_Typedescriptor_t ChangePolygonPointRes_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t ChangePolygonPointRes_reserved5_raw_;
+extern const XERdescriptor_t ChangePolygonPointRes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t ChangePolygonPointRes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t ChangePolygonPointRes_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t ChangePolygonPointRes_reserved6_raw_;
+extern const XERdescriptor_t ChangePolygonPointRes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t ChangePolygonPointRes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t ChangePolygonPointRes_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t ChangePolygonPointRes_reserved7_raw_;
+extern const XERdescriptor_t ChangePolygonPointRes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ChangePolygonPointRes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ChangePolygonPointRes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ChangePolygonPointRes_reserved8_raw_;
+extern const XERdescriptor_t ChangePolygonPointRes_reserved8_xer_;
+extern const TTCN_OERdescriptor_t ChangePolygonPointRes_reserved8_oer_;
+extern const TTCN_Typedescriptor_t ChangePolygonPointRes_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t ChangePolygonPointRes_raw_;
+extern const TTCN_Typedescriptor_t ChangePolygonPointRes_descr_;
+extern const XERdescriptor_t ChangePolygonPointReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ChangePolygonPointReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ChangePolygonPointReq_vtfunction_descr_;
+extern const XERdescriptor_t ChangePolygonPointReq_objectIDofTheOutputPolygonObjectToChange_xer_;
+extern const TTCN_OERdescriptor_t ChangePolygonPointReq_objectIDofTheOutputPolygonObjectToChange_oer_;
+extern const TTCN_Typedescriptor_t ChangePolygonPointReq_objectIDofTheOutputPolygonObjectToChange_descr_;
+extern const XERdescriptor_t ChangePolygonPointReq_pointIndexOfThePointToReplace_xer_;
+extern const TTCN_OERdescriptor_t ChangePolygonPointReq_pointIndexOfThePointToReplace_oer_;
+extern const TTCN_Typedescriptor_t ChangePolygonPointReq_pointIndexOfThePointToReplace_descr_;
+extern const XERdescriptor_t ChangePolygonPointReq_newXposition_xer_;
+extern const TTCN_OERdescriptor_t ChangePolygonPointReq_newXposition_oer_;
+extern const TTCN_Typedescriptor_t ChangePolygonPointReq_newXposition_descr_;
+extern const XERdescriptor_t ChangePolygonPointReq_newYposition_xer_;
+extern const TTCN_OERdescriptor_t ChangePolygonPointReq_newYposition_oer_;
+extern const TTCN_Typedescriptor_t ChangePolygonPointReq_newYposition_descr_;
+extern const TTCN_RAWdescriptor_t ChangePolygonPointReq_raw_;
+extern const TTCN_Typedescriptor_t ChangePolygonPointReq_descr_;
+extern const XERdescriptor_t ChangePolygonScaleRes__ErrorCodes_invalidObjectID_xer_;
+extern const TTCN_OERdescriptor_t ChangePolygonScaleRes__ErrorCodes_invalidObjectID_oer_;
+extern const TTCN_Typedescriptor_t ChangePolygonScaleRes__ErrorCodes_invalidObjectID_descr_;
+extern const XERdescriptor_t ChangePolygonScaleRes__ErrorCodes_reserved1_xer_;
+extern const TTCN_OERdescriptor_t ChangePolygonScaleRes__ErrorCodes_reserved1_oer_;
+extern const TTCN_Typedescriptor_t ChangePolygonScaleRes__ErrorCodes_reserved1_descr_;
+extern const XERdescriptor_t ChangePolygonScaleRes__ErrorCodes_reserved2_xer_;
+extern const TTCN_OERdescriptor_t ChangePolygonScaleRes__ErrorCodes_reserved2_oer_;
+extern const TTCN_Typedescriptor_t ChangePolygonScaleRes__ErrorCodes_reserved2_descr_;
+extern const XERdescriptor_t ChangePolygonScaleRes__ErrorCodes_reserved3_xer_;
+extern const TTCN_OERdescriptor_t ChangePolygonScaleRes__ErrorCodes_reserved3_oer_;
+extern const TTCN_Typedescriptor_t ChangePolygonScaleRes__ErrorCodes_reserved3_descr_;
+extern const XERdescriptor_t ChangePolygonScaleRes__ErrorCodes_anyOtherError_xer_;
+extern const TTCN_OERdescriptor_t ChangePolygonScaleRes__ErrorCodes_anyOtherError_oer_;
+extern const TTCN_Typedescriptor_t ChangePolygonScaleRes__ErrorCodes_anyOtherError_descr_;
+extern const XERdescriptor_t ChangePolygonScaleRes__ErrorCodes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t ChangePolygonScaleRes__ErrorCodes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t ChangePolygonScaleRes__ErrorCodes_reserved5_descr_;
+extern const XERdescriptor_t ChangePolygonScaleRes__ErrorCodes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t ChangePolygonScaleRes__ErrorCodes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t ChangePolygonScaleRes__ErrorCodes_reserved6_descr_;
+extern const XERdescriptor_t ChangePolygonScaleRes__ErrorCodes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ChangePolygonScaleRes__ErrorCodes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ChangePolygonScaleRes__ErrorCodes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ChangePolygonScaleRes__ErrorCodes_raw_;
+extern const TTCN_Typedescriptor_t ChangePolygonScaleRes__ErrorCodes_descr_;
+extern const XERdescriptor_t ChangePolygonScaleRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ChangePolygonScaleRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ChangePolygonScaleRes_vtfunction_descr_;
+extern const XERdescriptor_t ChangePolygonScaleRes_objectIDofaOutputPolygonObjectToScale_xer_;
+extern const TTCN_OERdescriptor_t ChangePolygonScaleRes_objectIDofaOutputPolygonObjectToScale_oer_;
+extern const TTCN_Typedescriptor_t ChangePolygonScaleRes_objectIDofaOutputPolygonObjectToScale_descr_;
+extern const XERdescriptor_t ChangePolygonScaleRes_newWidthAttribute_xer_;
+extern const TTCN_OERdescriptor_t ChangePolygonScaleRes_newWidthAttribute_oer_;
+extern const TTCN_Typedescriptor_t ChangePolygonScaleRes_newWidthAttribute_descr_;
+extern const XERdescriptor_t ChangePolygonScaleRes_newHeightAttribute_xer_;
+extern const TTCN_OERdescriptor_t ChangePolygonScaleRes_newHeightAttribute_oer_;
+extern const TTCN_Typedescriptor_t ChangePolygonScaleRes_newHeightAttribute_descr_;
+extern const TTCN_RAWdescriptor_t ChangePolygonScaleRes_raw_;
+extern const TTCN_Typedescriptor_t ChangePolygonScaleRes_descr_;
+extern const XERdescriptor_t ChangePolygonScaleReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ChangePolygonScaleReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ChangePolygonScaleReq_vtfunction_descr_;
+extern const XERdescriptor_t ChangePolygonScaleReq_objectIDofaOutputPolygonObjectToScale_xer_;
+extern const TTCN_OERdescriptor_t ChangePolygonScaleReq_objectIDofaOutputPolygonObjectToScale_oer_;
+extern const TTCN_Typedescriptor_t ChangePolygonScaleReq_objectIDofaOutputPolygonObjectToScale_descr_;
+extern const XERdescriptor_t ChangePolygonScaleReq_newWidthAttribute_xer_;
+extern const TTCN_OERdescriptor_t ChangePolygonScaleReq_newWidthAttribute_oer_;
+extern const TTCN_Typedescriptor_t ChangePolygonScaleReq_newWidthAttribute_descr_;
+extern const XERdescriptor_t ChangePolygonScaleReq_newHeightAttribute_xer_;
+extern const TTCN_OERdescriptor_t ChangePolygonScaleReq_newHeightAttribute_oer_;
+extern const TTCN_Typedescriptor_t ChangePolygonScaleReq_newHeightAttribute_descr_;
+extern const TTCN_RAWdescriptor_t ChangePolygonScaleReq_reserved8_raw_;
+extern const XERdescriptor_t ChangePolygonScaleReq_reserved8_xer_;
+extern const TTCN_OERdescriptor_t ChangePolygonScaleReq_reserved8_oer_;
+extern const TTCN_Typedescriptor_t ChangePolygonScaleReq_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t ChangePolygonScaleReq_raw_;
+extern const TTCN_Typedescriptor_t ChangePolygonScaleReq_descr_;
+extern const XERdescriptor_t GraphicsContextRes__ErrorCodes_invalidObjectIDorObjectIsNotAGraphics_xer_;
+extern const TTCN_OERdescriptor_t GraphicsContextRes__ErrorCodes_invalidObjectIDorObjectIsNotAGraphics_oer_;
+extern const TTCN_Typedescriptor_t GraphicsContextRes__ErrorCodes_invalidObjectIDorObjectIsNotAGraphics_descr_;
+extern const XERdescriptor_t GraphicsContextRes__ErrorCodes_InvalidSubCommandID_xer_;
+extern const TTCN_OERdescriptor_t GraphicsContextRes__ErrorCodes_InvalidSubCommandID_oer_;
+extern const TTCN_Typedescriptor_t GraphicsContextRes__ErrorCodes_InvalidSubCommandID_descr_;
+extern const XERdescriptor_t GraphicsContextRes__ErrorCodes_InvalidParameter_xer_;
+extern const TTCN_OERdescriptor_t GraphicsContextRes__ErrorCodes_InvalidParameter_oer_;
+extern const TTCN_Typedescriptor_t GraphicsContextRes__ErrorCodes_InvalidParameter_descr_;
+extern const XERdescriptor_t GraphicsContextRes__ErrorCodes_SubCommandWillProduceInvalidResults_xer_;
+extern const TTCN_OERdescriptor_t GraphicsContextRes__ErrorCodes_SubCommandWillProduceInvalidResults_oer_;
+extern const TTCN_Typedescriptor_t GraphicsContextRes__ErrorCodes_SubCommandWillProduceInvalidResults_descr_;
+extern const XERdescriptor_t GraphicsContextRes__ErrorCodes_anyOtherError_xer_;
+extern const TTCN_OERdescriptor_t GraphicsContextRes__ErrorCodes_anyOtherError_oer_;
+extern const TTCN_Typedescriptor_t GraphicsContextRes__ErrorCodes_anyOtherError_descr_;
+extern const XERdescriptor_t GraphicsContextRes__ErrorCodes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t GraphicsContextRes__ErrorCodes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t GraphicsContextRes__ErrorCodes_reserved5_descr_;
+extern const XERdescriptor_t GraphicsContextRes__ErrorCodes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t GraphicsContextRes__ErrorCodes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t GraphicsContextRes__ErrorCodes_reserved6_descr_;
+extern const XERdescriptor_t GraphicsContextRes__ErrorCodes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t GraphicsContextRes__ErrorCodes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t GraphicsContextRes__ErrorCodes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t GraphicsContextRes__ErrorCodes_raw_;
+extern const TTCN_Typedescriptor_t GraphicsContextRes__ErrorCodes_descr_;
+extern const XERdescriptor_t GraphicsContextRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t GraphicsContextRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t GraphicsContextRes_vtfunction_descr_;
+extern const XERdescriptor_t GraphicsContextRes_objectIDofAGraphicsContextObject_xer_;
+extern const TTCN_OERdescriptor_t GraphicsContextRes_objectIDofAGraphicsContextObject_oer_;
+extern const TTCN_Typedescriptor_t GraphicsContextRes_objectIDofAGraphicsContextObject_descr_;
+extern const XERdescriptor_t GraphicsContextRes_subcommandID_xer_;
+extern const TTCN_OERdescriptor_t GraphicsContextRes_subcommandID_oer_;
+extern const TTCN_Typedescriptor_t GraphicsContextRes_subcommandID_descr_;
+extern const TTCN_RAWdescriptor_t GraphicsContextRes_reserved6_raw_;
+extern const XERdescriptor_t GraphicsContextRes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t GraphicsContextRes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t GraphicsContextRes_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t GraphicsContextRes_reserved7_raw_;
+extern const XERdescriptor_t GraphicsContextRes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t GraphicsContextRes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t GraphicsContextRes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t GraphicsContextRes_reserved8_raw_;
+extern const XERdescriptor_t GraphicsContextRes_reserved8_xer_;
+extern const TTCN_OERdescriptor_t GraphicsContextRes_reserved8_oer_;
+extern const TTCN_Typedescriptor_t GraphicsContextRes_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t GraphicsContextRes_raw_;
+extern const TTCN_Typedescriptor_t GraphicsContextRes_descr_;
+extern const XERdescriptor_t SetGraphicsCursor_xPosition_xer_;
+extern const TTCN_OERdescriptor_t SetGraphicsCursor_xPosition_oer_;
+extern const TTCN_Typedescriptor_t SetGraphicsCursor_xPosition_descr_;
+extern const XERdescriptor_t SetGraphicsCursor_yPosition_xer_;
+extern const TTCN_OERdescriptor_t SetGraphicsCursor_yPosition_oer_;
+extern const TTCN_Typedescriptor_t SetGraphicsCursor_yPosition_descr_;
+extern const TTCN_RAWdescriptor_t SetGraphicsCursor_raw_;
+extern const TTCN_Typedescriptor_t SetGraphicsCursor_descr_;
+extern const XERdescriptor_t MoveGraphicsCursor_xOffset_xer_;
+extern const TTCN_OERdescriptor_t MoveGraphicsCursor_xOffset_oer_;
+extern const TTCN_Typedescriptor_t MoveGraphicsCursor_xOffset_descr_;
+extern const XERdescriptor_t MoveGraphicsCursor_yOffset_xer_;
+extern const TTCN_OERdescriptor_t MoveGraphicsCursor_yOffset_oer_;
+extern const TTCN_Typedescriptor_t MoveGraphicsCursor_yOffset_descr_;
+extern const TTCN_RAWdescriptor_t MoveGraphicsCursor_raw_;
+extern const TTCN_Typedescriptor_t MoveGraphicsCursor_descr_;
+extern const XERdescriptor_t SetForegroundColour_foregroundColor_xer_;
+extern const TTCN_OERdescriptor_t SetForegroundColour_foregroundColor_oer_;
+extern const TTCN_Typedescriptor_t SetForegroundColour_foregroundColor_descr_;
+extern const TTCN_RAWdescriptor_t SetForegroundColour_reserved6_raw_;
+extern const XERdescriptor_t SetForegroundColour_reserved6_xer_;
+extern const TTCN_OERdescriptor_t SetForegroundColour_reserved6_oer_;
+extern const TTCN_Typedescriptor_t SetForegroundColour_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t SetForegroundColour_reserved7_raw_;
+extern const XERdescriptor_t SetForegroundColour_reserved7_xer_;
+extern const TTCN_OERdescriptor_t SetForegroundColour_reserved7_oer_;
+extern const TTCN_Typedescriptor_t SetForegroundColour_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t SetForegroundColour_reserved8_raw_;
+extern const XERdescriptor_t SetForegroundColour_reserved8_xer_;
+extern const TTCN_OERdescriptor_t SetForegroundColour_reserved8_oer_;
+extern const TTCN_Typedescriptor_t SetForegroundColour_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t SetForegroundColour_raw_;
+extern const TTCN_Typedescriptor_t SetForegroundColour_descr_;
+extern const XERdescriptor_t SetBackgroundColour_backgroundColor_xer_;
+extern const TTCN_OERdescriptor_t SetBackgroundColour_backgroundColor_oer_;
+extern const TTCN_Typedescriptor_t SetBackgroundColour_backgroundColor_descr_;
+extern const TTCN_RAWdescriptor_t SetBackgroundColour_reserved6_raw_;
+extern const XERdescriptor_t SetBackgroundColour_reserved6_xer_;
+extern const TTCN_OERdescriptor_t SetBackgroundColour_reserved6_oer_;
+extern const TTCN_Typedescriptor_t SetBackgroundColour_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t SetBackgroundColour_reserved7_raw_;
+extern const XERdescriptor_t SetBackgroundColour_reserved7_xer_;
+extern const TTCN_OERdescriptor_t SetBackgroundColour_reserved7_oer_;
+extern const TTCN_Typedescriptor_t SetBackgroundColour_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t SetBackgroundColour_reserved8_raw_;
+extern const XERdescriptor_t SetBackgroundColour_reserved8_xer_;
+extern const TTCN_OERdescriptor_t SetBackgroundColour_reserved8_oer_;
+extern const TTCN_Typedescriptor_t SetBackgroundColour_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t SetBackgroundColour_raw_;
+extern const TTCN_Typedescriptor_t SetBackgroundColour_descr_;
+extern const XERdescriptor_t SetLineAttributesObjectID_objectIDofLineAttributesObject_xer_;
+extern const TTCN_OERdescriptor_t SetLineAttributesObjectID_objectIDofLineAttributesObject_oer_;
+extern const TTCN_Typedescriptor_t SetLineAttributesObjectID_objectIDofLineAttributesObject_descr_;
+extern const TTCN_RAWdescriptor_t SetLineAttributesObjectID_reserved7_raw_;
+extern const XERdescriptor_t SetLineAttributesObjectID_reserved7_xer_;
+extern const TTCN_OERdescriptor_t SetLineAttributesObjectID_reserved7_oer_;
+extern const TTCN_Typedescriptor_t SetLineAttributesObjectID_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t SetLineAttributesObjectID_reserved8_raw_;
+extern const XERdescriptor_t SetLineAttributesObjectID_reserved8_xer_;
+extern const TTCN_OERdescriptor_t SetLineAttributesObjectID_reserved8_oer_;
+extern const TTCN_Typedescriptor_t SetLineAttributesObjectID_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t SetLineAttributesObjectID_raw_;
+extern const TTCN_Typedescriptor_t SetLineAttributesObjectID_descr_;
+extern const XERdescriptor_t SetFileAttributesObjectID_objectIDofFillAttributesObject_xer_;
+extern const TTCN_OERdescriptor_t SetFileAttributesObjectID_objectIDofFillAttributesObject_oer_;
+extern const TTCN_Typedescriptor_t SetFileAttributesObjectID_objectIDofFillAttributesObject_descr_;
+extern const TTCN_RAWdescriptor_t SetFileAttributesObjectID_reserved7_raw_;
+extern const XERdescriptor_t SetFileAttributesObjectID_reserved7_xer_;
+extern const TTCN_OERdescriptor_t SetFileAttributesObjectID_reserved7_oer_;
+extern const TTCN_Typedescriptor_t SetFileAttributesObjectID_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t SetFileAttributesObjectID_reserved8_raw_;
+extern const XERdescriptor_t SetFileAttributesObjectID_reserved8_xer_;
+extern const TTCN_OERdescriptor_t SetFileAttributesObjectID_reserved8_oer_;
+extern const TTCN_Typedescriptor_t SetFileAttributesObjectID_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t SetFileAttributesObjectID_raw_;
+extern const TTCN_Typedescriptor_t SetFileAttributesObjectID_descr_;
+extern const XERdescriptor_t SetFontAttributesObjectID_objectIDofFontAttributesObject_xer_;
+extern const TTCN_OERdescriptor_t SetFontAttributesObjectID_objectIDofFontAttributesObject_oer_;
+extern const TTCN_Typedescriptor_t SetFontAttributesObjectID_objectIDofFontAttributesObject_descr_;
+extern const TTCN_RAWdescriptor_t SetFontAttributesObjectID_reserved7_raw_;
+extern const XERdescriptor_t SetFontAttributesObjectID_reserved7_xer_;
+extern const TTCN_OERdescriptor_t SetFontAttributesObjectID_reserved7_oer_;
+extern const TTCN_Typedescriptor_t SetFontAttributesObjectID_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t SetFontAttributesObjectID_reserved8_raw_;
+extern const XERdescriptor_t SetFontAttributesObjectID_reserved8_xer_;
+extern const TTCN_OERdescriptor_t SetFontAttributesObjectID_reserved8_oer_;
+extern const TTCN_Typedescriptor_t SetFontAttributesObjectID_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t SetFontAttributesObjectID_raw_;
+extern const TTCN_Typedescriptor_t SetFontAttributesObjectID_descr_;
+extern const XERdescriptor_t EraseRectangle_width_xer_;
+extern const TTCN_OERdescriptor_t EraseRectangle_width_oer_;
+extern const TTCN_Typedescriptor_t EraseRectangle_width_descr_;
+extern const XERdescriptor_t EraseRectangle_height_xer_;
+extern const TTCN_OERdescriptor_t EraseRectangle_height_oer_;
+extern const TTCN_Typedescriptor_t EraseRectangle_height_descr_;
+extern const TTCN_RAWdescriptor_t EraseRectangle_raw_;
+extern const TTCN_Typedescriptor_t EraseRectangle_descr_;
+extern const XERdescriptor_t DrawPoint_xOffset_xer_;
+extern const TTCN_OERdescriptor_t DrawPoint_xOffset_oer_;
+extern const TTCN_Typedescriptor_t DrawPoint_xOffset_descr_;
+extern const XERdescriptor_t DrawPoint_yOffset_xer_;
+extern const TTCN_OERdescriptor_t DrawPoint_yOffset_oer_;
+extern const TTCN_Typedescriptor_t DrawPoint_yOffset_descr_;
+extern const TTCN_RAWdescriptor_t DrawPoint_raw_;
+extern const TTCN_Typedescriptor_t DrawPoint_descr_;
+extern const XERdescriptor_t DrawLine_xOffset_xer_;
+extern const TTCN_OERdescriptor_t DrawLine_xOffset_oer_;
+extern const TTCN_Typedescriptor_t DrawLine_xOffset_descr_;
+extern const XERdescriptor_t DrawLine_yOffset_xer_;
+extern const TTCN_OERdescriptor_t DrawLine_yOffset_oer_;
+extern const TTCN_Typedescriptor_t DrawLine_yOffset_descr_;
+extern const TTCN_RAWdescriptor_t DrawLine_raw_;
+extern const TTCN_Typedescriptor_t DrawLine_descr_;
+extern const XERdescriptor_t DrawRectangle_width_xer_;
+extern const TTCN_OERdescriptor_t DrawRectangle_width_oer_;
+extern const TTCN_Typedescriptor_t DrawRectangle_width_descr_;
+extern const XERdescriptor_t DrawRectangle_height_xer_;
+extern const TTCN_OERdescriptor_t DrawRectangle_height_oer_;
+extern const TTCN_Typedescriptor_t DrawRectangle_height_descr_;
+extern const TTCN_RAWdescriptor_t DrawRectangle_raw_;
+extern const TTCN_Typedescriptor_t DrawRectangle_descr_;
+extern const XERdescriptor_t DrawClosedEllipse_width_xer_;
+extern const TTCN_OERdescriptor_t DrawClosedEllipse_width_oer_;
+extern const TTCN_Typedescriptor_t DrawClosedEllipse_width_descr_;
+extern const XERdescriptor_t DrawClosedEllipse_height_xer_;
+extern const TTCN_OERdescriptor_t DrawClosedEllipse_height_oer_;
+extern const TTCN_Typedescriptor_t DrawClosedEllipse_height_descr_;
+extern const TTCN_RAWdescriptor_t DrawClosedEllipse_raw_;
+extern const TTCN_Typedescriptor_t DrawClosedEllipse_descr_;
+extern const XERdescriptor_t PolygonPoint_xOffset_xer_;
+extern const TTCN_OERdescriptor_t PolygonPoint_xOffset_oer_;
+extern const TTCN_Typedescriptor_t PolygonPoint_xOffset_descr_;
+extern const XERdescriptor_t PolygonPoint_yOffset_xer_;
+extern const TTCN_OERdescriptor_t PolygonPoint_yOffset_oer_;
+extern const TTCN_Typedescriptor_t PolygonPoint_yOffset_descr_;
+extern const TTCN_RAWdescriptor_t PolygonPoint_raw_;
+extern const TTCN_Typedescriptor_t PolygonPoint_descr_;
+extern const TTCN_RAWdescriptor_t PolygonPointArray_raw_;
+extern const TTCN_Typedescriptor_t PolygonPointArray_descr_;
+extern const TTCN_RAWdescriptor_t DrawPolygon_numberOfPolygonPointsToFollow_raw_;
+extern const XERdescriptor_t DrawPolygon_numberOfPolygonPointsToFollow_xer_;
+extern const TTCN_OERdescriptor_t DrawPolygon_numberOfPolygonPointsToFollow_oer_;
+extern const TTCN_Typedescriptor_t DrawPolygon_numberOfPolygonPointsToFollow_descr_;
+extern const TTCN_RAWdescriptor_t DrawPolygon_raw_;
+extern const TTCN_Typedescriptor_t DrawPolygon_descr_;
+extern const TTCN_RAWdescriptor_t e__Tranparency_raw_;
+extern const TTCN_Typedescriptor_t e__Tranparency_descr_;
+extern const TTCN_RAWdescriptor_t DrawText_numberOfBytesToFollow_raw_;
+extern const XERdescriptor_t DrawText_numberOfBytesToFollow_xer_;
+extern const TTCN_OERdescriptor_t DrawText_numberOfBytesToFollow_oer_;
+extern const TTCN_Typedescriptor_t DrawText_numberOfBytesToFollow_descr_;
+extern const XERdescriptor_t DrawText_textStringValue_xer_;
+extern const TTCN_OERdescriptor_t DrawText_textStringValue_oer_;
+extern const TTCN_Typedescriptor_t DrawText_textStringValue_descr_;
+extern const TTCN_RAWdescriptor_t DrawText_raw_;
+extern const TTCN_Typedescriptor_t DrawText_descr_;
+extern const XERdescriptor_t DrawText_padding1_xer_;
+extern const TTCN_OERdescriptor_t DrawText_padding1_oer_;
+extern const TTCN_Typedescriptor_t DrawText_padding1_descr_;
+extern const XERdescriptor_t DrawText_padding2_xer_;
+extern const TTCN_OERdescriptor_t DrawText_padding2_oer_;
+extern const TTCN_Typedescriptor_t DrawText_padding2_descr_;
+extern const XERdescriptor_t PanViewport_viewportXattribute_xer_;
+extern const TTCN_OERdescriptor_t PanViewport_viewportXattribute_oer_;
+extern const TTCN_Typedescriptor_t PanViewport_viewportXattribute_descr_;
+extern const XERdescriptor_t PanViewport_viewportYattribute_xer_;
+extern const TTCN_OERdescriptor_t PanViewport_viewportYattribute_oer_;
+extern const TTCN_Typedescriptor_t PanViewport_viewportYattribute_descr_;
+extern const TTCN_RAWdescriptor_t PanViewport_raw_;
+extern const TTCN_Typedescriptor_t PanViewport_descr_;
+extern const XERdescriptor_t ZoomViewport_zoom_xer_;
+extern const TTCN_OERdescriptor_t ZoomViewport_zoom_oer_;
+extern const TTCN_Typedescriptor_t ZoomViewport_zoom_descr_;
+extern const TTCN_RAWdescriptor_t ZoomViewport_raw_;
+extern const TTCN_Typedescriptor_t ZoomViewport_descr_;
+extern const XERdescriptor_t PanAndZoomViewport_viewportXattribute_xer_;
+extern const TTCN_OERdescriptor_t PanAndZoomViewport_viewportXattribute_oer_;
+extern const TTCN_Typedescriptor_t PanAndZoomViewport_viewportXattribute_descr_;
+extern const XERdescriptor_t PanAndZoomViewport_viewportYattribute_xer_;
+extern const TTCN_OERdescriptor_t PanAndZoomViewport_viewportYattribute_oer_;
+extern const TTCN_Typedescriptor_t PanAndZoomViewport_viewportYattribute_descr_;
+extern const XERdescriptor_t PanAndZoomViewport_zoom_xer_;
+extern const TTCN_OERdescriptor_t PanAndZoomViewport_zoom_oer_;
+extern const TTCN_Typedescriptor_t PanAndZoomViewport_zoom_descr_;
+extern const TTCN_RAWdescriptor_t PanAndZoomViewport_raw_;
+extern const TTCN_Typedescriptor_t PanAndZoomViewport_descr_;
+extern const XERdescriptor_t ChangeViewportSize_newWidth_xer_;
+extern const TTCN_OERdescriptor_t ChangeViewportSize_newWidth_oer_;
+extern const TTCN_Typedescriptor_t ChangeViewportSize_newWidth_descr_;
+extern const XERdescriptor_t ChangeViewportSize_newHeight_xer_;
+extern const TTCN_OERdescriptor_t ChangeViewportSize_newHeight_oer_;
+extern const TTCN_Typedescriptor_t ChangeViewportSize_newHeight_descr_;
+extern const TTCN_RAWdescriptor_t ChangeViewportSize_raw_;
+extern const TTCN_Typedescriptor_t ChangeViewportSize_descr_;
+extern const XERdescriptor_t DrawVTObject_objectIDofObjectToDraw_xer_;
+extern const TTCN_OERdescriptor_t DrawVTObject_objectIDofObjectToDraw_oer_;
+extern const TTCN_Typedescriptor_t DrawVTObject_objectIDofObjectToDraw_descr_;
+extern const TTCN_RAWdescriptor_t DrawVTObject_reserved7_raw_;
+extern const XERdescriptor_t DrawVTObject_reserved7_xer_;
+extern const TTCN_OERdescriptor_t DrawVTObject_reserved7_oer_;
+extern const TTCN_Typedescriptor_t DrawVTObject_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t DrawVTObject_reserved8_raw_;
+extern const XERdescriptor_t DrawVTObject_reserved8_xer_;
+extern const TTCN_OERdescriptor_t DrawVTObject_reserved8_oer_;
+extern const TTCN_Typedescriptor_t DrawVTObject_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t DrawVTObject_raw_;
+extern const TTCN_Typedescriptor_t DrawVTObject_descr_;
+extern const XERdescriptor_t CopyCanvasToPictureGraphic_objectIDofPictureGraphicObjectToCopyTo_xer_;
+extern const TTCN_OERdescriptor_t CopyCanvasToPictureGraphic_objectIDofPictureGraphicObjectToCopyTo_oer_;
+extern const TTCN_Typedescriptor_t CopyCanvasToPictureGraphic_objectIDofPictureGraphicObjectToCopyTo_descr_;
+extern const TTCN_RAWdescriptor_t CopyCanvasToPictureGraphic_reserved7_raw_;
+extern const XERdescriptor_t CopyCanvasToPictureGraphic_reserved7_xer_;
+extern const TTCN_OERdescriptor_t CopyCanvasToPictureGraphic_reserved7_oer_;
+extern const TTCN_Typedescriptor_t CopyCanvasToPictureGraphic_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t CopyCanvasToPictureGraphic_reserved8_raw_;
+extern const XERdescriptor_t CopyCanvasToPictureGraphic_reserved8_xer_;
+extern const TTCN_OERdescriptor_t CopyCanvasToPictureGraphic_reserved8_oer_;
+extern const TTCN_Typedescriptor_t CopyCanvasToPictureGraphic_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t CopyCanvasToPictureGraphic_raw_;
+extern const TTCN_Typedescriptor_t CopyCanvasToPictureGraphic_descr_;
+extern const XERdescriptor_t CopyViewportToPictureGraphic_objectIDofPictureGraphicObjectToCopyTo_xer_;
+extern const TTCN_OERdescriptor_t CopyViewportToPictureGraphic_objectIDofPictureGraphicObjectToCopyTo_oer_;
+extern const TTCN_Typedescriptor_t CopyViewportToPictureGraphic_objectIDofPictureGraphicObjectToCopyTo_descr_;
+extern const TTCN_RAWdescriptor_t CopyViewportToPictureGraphic_reserved7_raw_;
+extern const XERdescriptor_t CopyViewportToPictureGraphic_reserved7_xer_;
+extern const TTCN_OERdescriptor_t CopyViewportToPictureGraphic_reserved7_oer_;
+extern const TTCN_Typedescriptor_t CopyViewportToPictureGraphic_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t CopyViewportToPictureGraphic_reserved8_raw_;
+extern const XERdescriptor_t CopyViewportToPictureGraphic_reserved8_xer_;
+extern const TTCN_OERdescriptor_t CopyViewportToPictureGraphic_reserved8_oer_;
+extern const TTCN_Typedescriptor_t CopyViewportToPictureGraphic_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t CopyViewportToPictureGraphic_raw_;
+extern const TTCN_Typedescriptor_t CopyViewportToPictureGraphic_descr_;
+extern const TTCN_RAWdescriptor_t GraphicsContextReq__union_raw_;
+extern const TTCN_Typedescriptor_t GraphicsContextReq__union_descr_;
+extern const XERdescriptor_t GraphicsContextReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t GraphicsContextReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t GraphicsContextReq_vtfunction_descr_;
+extern const XERdescriptor_t GraphicsContextReq_objectIDofaGraphicsContextObject_xer_;
+extern const TTCN_OERdescriptor_t GraphicsContextReq_objectIDofaGraphicsContextObject_oer_;
+extern const TTCN_Typedescriptor_t GraphicsContextReq_objectIDofaGraphicsContextObject_descr_;
+extern const XERdescriptor_t GraphicsContextReq_subcommandID_xer_;
+extern const TTCN_OERdescriptor_t GraphicsContextReq_subcommandID_oer_;
+extern const TTCN_Typedescriptor_t GraphicsContextReq_subcommandID_descr_;
+extern const TTCN_RAWdescriptor_t GraphicsContextReq_parameters_raw_;
+extern const TTCN_Typedescriptor_t GraphicsContextReq_parameters_descr_;
+extern const TTCN_RAWdescriptor_t GraphicsContextReq_raw_;
+extern const TTCN_Typedescriptor_t GraphicsContextReq_descr_;
+extern const XERdescriptor_t GetAttributeValueRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t GetAttributeValueRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t GetAttributeValueRes_vtfunction_descr_;
+extern const XERdescriptor_t GetAttributeValueRes_ObjectIDorFFFFtoTndicateAnErrorResponse_xer_;
+extern const TTCN_OERdescriptor_t GetAttributeValueRes_ObjectIDorFFFFtoTndicateAnErrorResponse_oer_;
+extern const TTCN_Typedescriptor_t GetAttributeValueRes_ObjectIDorFFFFtoTndicateAnErrorResponse_descr_;
+extern const XERdescriptor_t GetAttributeValueRes_AttributeIDofTheObject_xer_;
+extern const TTCN_OERdescriptor_t GetAttributeValueRes_AttributeIDofTheObject_oer_;
+extern const TTCN_Typedescriptor_t GetAttributeValueRes_AttributeIDofTheObject_descr_;
+extern const XERdescriptor_t GetAttributeValueRes_data1_xer_;
+extern const TTCN_OERdescriptor_t GetAttributeValueRes_data1_oer_;
+extern const TTCN_Typedescriptor_t GetAttributeValueRes_data1_descr_;
+extern const XERdescriptor_t GetAttributeValueRes_data2_xer_;
+extern const TTCN_OERdescriptor_t GetAttributeValueRes_data2_oer_;
+extern const TTCN_Typedescriptor_t GetAttributeValueRes_data2_descr_;
+extern const XERdescriptor_t GetAttributeValueRes_data3_xer_;
+extern const TTCN_OERdescriptor_t GetAttributeValueRes_data3_oer_;
+extern const TTCN_Typedescriptor_t GetAttributeValueRes_data3_descr_;
+extern const XERdescriptor_t GetAttributeValueRes_data4_xer_;
+extern const TTCN_OERdescriptor_t GetAttributeValueRes_data4_oer_;
+extern const TTCN_Typedescriptor_t GetAttributeValueRes_data4_descr_;
+extern const TTCN_RAWdescriptor_t GetAttributeValueRes_raw_;
+extern const TTCN_Typedescriptor_t GetAttributeValueRes_descr_;
+extern const XERdescriptor_t GetAttributeValueReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t GetAttributeValueReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t GetAttributeValueReq_vtfunction_descr_;
+extern const XERdescriptor_t GetAttributeValueReq_objectID_xer_;
+extern const TTCN_OERdescriptor_t GetAttributeValueReq_objectID_oer_;
+extern const TTCN_Typedescriptor_t GetAttributeValueReq_objectID_descr_;
+extern const XERdescriptor_t GetAttributeValueReq_AttributeIDofTheObject_xer_;
+extern const TTCN_OERdescriptor_t GetAttributeValueReq_AttributeIDofTheObject_oer_;
+extern const TTCN_Typedescriptor_t GetAttributeValueReq_AttributeIDofTheObject_descr_;
+extern const TTCN_RAWdescriptor_t GetAttributeValueReq_reserved5_raw_;
+extern const XERdescriptor_t GetAttributeValueReq_reserved5_xer_;
+extern const TTCN_OERdescriptor_t GetAttributeValueReq_reserved5_oer_;
+extern const TTCN_Typedescriptor_t GetAttributeValueReq_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t GetAttributeValueReq_reserved6_raw_;
+extern const XERdescriptor_t GetAttributeValueReq_reserved6_xer_;
+extern const TTCN_OERdescriptor_t GetAttributeValueReq_reserved6_oer_;
+extern const TTCN_Typedescriptor_t GetAttributeValueReq_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t GetAttributeValueReq_reserved7_raw_;
+extern const XERdescriptor_t GetAttributeValueReq_reserved7_xer_;
+extern const TTCN_OERdescriptor_t GetAttributeValueReq_reserved7_oer_;
+extern const TTCN_Typedescriptor_t GetAttributeValueReq_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t GetAttributeValueReq_reserved8_raw_;
+extern const XERdescriptor_t GetAttributeValueReq_reserved8_xer_;
+extern const TTCN_OERdescriptor_t GetAttributeValueReq_reserved8_oer_;
+extern const TTCN_Typedescriptor_t GetAttributeValueReq_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t GetAttributeValueReq_raw_;
+extern const TTCN_Typedescriptor_t GetAttributeValueReq_descr_;
+extern const XERdescriptor_t SelectColourMapRes__ErrorCodes_invalidObjectID_xer_;
+extern const TTCN_OERdescriptor_t SelectColourMapRes__ErrorCodes_invalidObjectID_oer_;
+extern const TTCN_Typedescriptor_t SelectColourMapRes__ErrorCodes_invalidObjectID_descr_;
+extern const XERdescriptor_t SelectColourMapRes__ErrorCodes_invalidColourMap_xer_;
+extern const TTCN_OERdescriptor_t SelectColourMapRes__ErrorCodes_invalidColourMap_oer_;
+extern const TTCN_Typedescriptor_t SelectColourMapRes__ErrorCodes_invalidColourMap_descr_;
+extern const XERdescriptor_t SelectColourMapRes__ErrorCodes_anyOtherError_xer_;
+extern const TTCN_OERdescriptor_t SelectColourMapRes__ErrorCodes_anyOtherError_oer_;
+extern const TTCN_Typedescriptor_t SelectColourMapRes__ErrorCodes_anyOtherError_descr_;
+extern const XERdescriptor_t SelectColourMapRes__ErrorCodes_reserved3_xer_;
+extern const TTCN_OERdescriptor_t SelectColourMapRes__ErrorCodes_reserved3_oer_;
+extern const TTCN_Typedescriptor_t SelectColourMapRes__ErrorCodes_reserved3_descr_;
+extern const XERdescriptor_t SelectColourMapRes__ErrorCodes_reserved4_xer_;
+extern const TTCN_OERdescriptor_t SelectColourMapRes__ErrorCodes_reserved4_oer_;
+extern const TTCN_Typedescriptor_t SelectColourMapRes__ErrorCodes_reserved4_descr_;
+extern const XERdescriptor_t SelectColourMapRes__ErrorCodes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t SelectColourMapRes__ErrorCodes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t SelectColourMapRes__ErrorCodes_reserved5_descr_;
+extern const XERdescriptor_t SelectColourMapRes__ErrorCodes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t SelectColourMapRes__ErrorCodes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t SelectColourMapRes__ErrorCodes_reserved6_descr_;
+extern const XERdescriptor_t SelectColourMapRes__ErrorCodes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t SelectColourMapRes__ErrorCodes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t SelectColourMapRes__ErrorCodes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t SelectColourMapRes__ErrorCodes_raw_;
+extern const TTCN_Typedescriptor_t SelectColourMapRes__ErrorCodes_descr_;
+extern const XERdescriptor_t SelectColourMapRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t SelectColourMapRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t SelectColourMapRes_vtfunction_descr_;
+extern const XERdescriptor_t SelectColourMapRes_objectIDofTheColourMapObject_xer_;
+extern const TTCN_OERdescriptor_t SelectColourMapRes_objectIDofTheColourMapObject_oer_;
+extern const TTCN_Typedescriptor_t SelectColourMapRes_objectIDofTheColourMapObject_descr_;
+extern const TTCN_RAWdescriptor_t SelectColourMapRes_reserved5_raw_;
+extern const XERdescriptor_t SelectColourMapRes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t SelectColourMapRes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t SelectColourMapRes_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t SelectColourMapRes_reserved6_raw_;
+extern const XERdescriptor_t SelectColourMapRes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t SelectColourMapRes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t SelectColourMapRes_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t SelectColourMapRes_reserved7_raw_;
+extern const XERdescriptor_t SelectColourMapRes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t SelectColourMapRes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t SelectColourMapRes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t SelectColourMapRes_reserved8_raw_;
+extern const XERdescriptor_t SelectColourMapRes_reserved8_xer_;
+extern const TTCN_OERdescriptor_t SelectColourMapRes_reserved8_oer_;
+extern const TTCN_Typedescriptor_t SelectColourMapRes_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t SelectColourMapRes_raw_;
+extern const TTCN_Typedescriptor_t SelectColourMapRes_descr_;
+extern const XERdescriptor_t SelectColourMapReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t SelectColourMapReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t SelectColourMapReq_vtfunction_descr_;
+extern const XERdescriptor_t SelectColourMapReq_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable_xer_;
+extern const TTCN_OERdescriptor_t SelectColourMapReq_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable_oer_;
+extern const TTCN_Typedescriptor_t SelectColourMapReq_ObjectIDofTheColourMapObjectOrFFFFtoRestoreTheDefaultColourTable_descr_;
+extern const TTCN_RAWdescriptor_t SelectColourMapReq_reserved4_raw_;
+extern const XERdescriptor_t SelectColourMapReq_reserved4_xer_;
+extern const TTCN_OERdescriptor_t SelectColourMapReq_reserved4_oer_;
+extern const TTCN_Typedescriptor_t SelectColourMapReq_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t SelectColourMapReq_reserved5_raw_;
+extern const XERdescriptor_t SelectColourMapReq_reserved5_xer_;
+extern const TTCN_OERdescriptor_t SelectColourMapReq_reserved5_oer_;
+extern const TTCN_Typedescriptor_t SelectColourMapReq_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t SelectColourMapReq_reserved6_raw_;
+extern const XERdescriptor_t SelectColourMapReq_reserved6_xer_;
+extern const TTCN_OERdescriptor_t SelectColourMapReq_reserved6_oer_;
+extern const TTCN_Typedescriptor_t SelectColourMapReq_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t SelectColourMapReq_reserved7_raw_;
+extern const XERdescriptor_t SelectColourMapReq_reserved7_xer_;
+extern const TTCN_OERdescriptor_t SelectColourMapReq_reserved7_oer_;
+extern const TTCN_Typedescriptor_t SelectColourMapReq_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t SelectColourMapReq_reserved8_raw_;
+extern const XERdescriptor_t SelectColourMapReq_reserved8_xer_;
+extern const TTCN_OERdescriptor_t SelectColourMapReq_reserved8_oer_;
+extern const TTCN_Typedescriptor_t SelectColourMapReq_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t SelectColourMapReq_raw_;
+extern const TTCN_Typedescriptor_t SelectColourMapReq_descr_;
+extern const XERdescriptor_t IdentifyVTRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t IdentifyVTRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t IdentifyVTRes_vtfunction_descr_;
+extern const TTCN_RAWdescriptor_t IdentifyVTRes_reserved2_raw_;
+extern const XERdescriptor_t IdentifyVTRes_reserved2_xer_;
+extern const TTCN_OERdescriptor_t IdentifyVTRes_reserved2_oer_;
+extern const TTCN_Typedescriptor_t IdentifyVTRes_reserved2_descr_;
+extern const TTCN_RAWdescriptor_t IdentifyVTRes_reserved3_raw_;
+extern const XERdescriptor_t IdentifyVTRes_reserved3_xer_;
+extern const TTCN_OERdescriptor_t IdentifyVTRes_reserved3_oer_;
+extern const TTCN_Typedescriptor_t IdentifyVTRes_reserved3_descr_;
+extern const TTCN_RAWdescriptor_t IdentifyVTRes_reserved4_raw_;
+extern const XERdescriptor_t IdentifyVTRes_reserved4_xer_;
+extern const TTCN_OERdescriptor_t IdentifyVTRes_reserved4_oer_;
+extern const TTCN_Typedescriptor_t IdentifyVTRes_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t IdentifyVTRes_reserved5_raw_;
+extern const XERdescriptor_t IdentifyVTRes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t IdentifyVTRes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t IdentifyVTRes_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t IdentifyVTRes_reserved6_raw_;
+extern const XERdescriptor_t IdentifyVTRes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t IdentifyVTRes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t IdentifyVTRes_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t IdentifyVTRes_reserved7_raw_;
+extern const XERdescriptor_t IdentifyVTRes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t IdentifyVTRes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t IdentifyVTRes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t IdentifyVTRes_reserved8_raw_;
+extern const XERdescriptor_t IdentifyVTRes_reserved8_xer_;
+extern const TTCN_OERdescriptor_t IdentifyVTRes_reserved8_oer_;
+extern const TTCN_Typedescriptor_t IdentifyVTRes_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t IdentifyVTRes_raw_;
+extern const TTCN_Typedescriptor_t IdentifyVTRes_descr_;
+extern const XERdescriptor_t IdentifyVTReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t IdentifyVTReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t IdentifyVTReq_vtfunction_descr_;
+extern const TTCN_RAWdescriptor_t IdentifyVTReq_reserved2_raw_;
+extern const XERdescriptor_t IdentifyVTReq_reserved2_xer_;
+extern const TTCN_OERdescriptor_t IdentifyVTReq_reserved2_oer_;
+extern const TTCN_Typedescriptor_t IdentifyVTReq_reserved2_descr_;
+extern const TTCN_RAWdescriptor_t IdentifyVTReq_reserved3_raw_;
+extern const XERdescriptor_t IdentifyVTReq_reserved3_xer_;
+extern const TTCN_OERdescriptor_t IdentifyVTReq_reserved3_oer_;
+extern const TTCN_Typedescriptor_t IdentifyVTReq_reserved3_descr_;
+extern const TTCN_RAWdescriptor_t IdentifyVTReq_reserved4_raw_;
+extern const XERdescriptor_t IdentifyVTReq_reserved4_xer_;
+extern const TTCN_OERdescriptor_t IdentifyVTReq_reserved4_oer_;
+extern const TTCN_Typedescriptor_t IdentifyVTReq_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t IdentifyVTReq_reserved5_raw_;
+extern const XERdescriptor_t IdentifyVTReq_reserved5_xer_;
+extern const TTCN_OERdescriptor_t IdentifyVTReq_reserved5_oer_;
+extern const TTCN_Typedescriptor_t IdentifyVTReq_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t IdentifyVTReq_reserved6_raw_;
+extern const XERdescriptor_t IdentifyVTReq_reserved6_xer_;
+extern const TTCN_OERdescriptor_t IdentifyVTReq_reserved6_oer_;
+extern const TTCN_Typedescriptor_t IdentifyVTReq_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t IdentifyVTReq_reserved7_raw_;
+extern const XERdescriptor_t IdentifyVTReq_reserved7_xer_;
+extern const TTCN_OERdescriptor_t IdentifyVTReq_reserved7_oer_;
+extern const TTCN_Typedescriptor_t IdentifyVTReq_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t IdentifyVTReq_reserved8_raw_;
+extern const XERdescriptor_t IdentifyVTReq_reserved8_xer_;
+extern const TTCN_OERdescriptor_t IdentifyVTReq_reserved8_oer_;
+extern const TTCN_Typedescriptor_t IdentifyVTReq_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t IdentifyVTReq_raw_;
+extern const TTCN_Typedescriptor_t IdentifyVTReq_descr_;
+extern const XERdescriptor_t ExecuteExtendedMacroRes__ErrorCodes_objectIDdoesNotExist_xer_;
+extern const TTCN_OERdescriptor_t ExecuteExtendedMacroRes__ErrorCodes_objectIDdoesNotExist_oer_;
+extern const TTCN_Typedescriptor_t ExecuteExtendedMacroRes__ErrorCodes_objectIDdoesNotExist_descr_;
+extern const XERdescriptor_t ExecuteExtendedMacroRes__ErrorCodes_objectIDisNotAMacroObject_xer_;
+extern const TTCN_OERdescriptor_t ExecuteExtendedMacroRes__ErrorCodes_objectIDisNotAMacroObject_oer_;
+extern const TTCN_Typedescriptor_t ExecuteExtendedMacroRes__ErrorCodes_objectIDisNotAMacroObject_descr_;
+extern const XERdescriptor_t ExecuteExtendedMacroRes__ErrorCodes_anyOtherError_xer_;
+extern const TTCN_OERdescriptor_t ExecuteExtendedMacroRes__ErrorCodes_anyOtherError_oer_;
+extern const TTCN_Typedescriptor_t ExecuteExtendedMacroRes__ErrorCodes_anyOtherError_descr_;
+extern const XERdescriptor_t ExecuteExtendedMacroRes__ErrorCodes_reserved3_xer_;
+extern const TTCN_OERdescriptor_t ExecuteExtendedMacroRes__ErrorCodes_reserved3_oer_;
+extern const TTCN_Typedescriptor_t ExecuteExtendedMacroRes__ErrorCodes_reserved3_descr_;
+extern const XERdescriptor_t ExecuteExtendedMacroRes__ErrorCodes_reserved4_xer_;
+extern const TTCN_OERdescriptor_t ExecuteExtendedMacroRes__ErrorCodes_reserved4_oer_;
+extern const TTCN_Typedescriptor_t ExecuteExtendedMacroRes__ErrorCodes_reserved4_descr_;
+extern const XERdescriptor_t ExecuteExtendedMacroRes__ErrorCodes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t ExecuteExtendedMacroRes__ErrorCodes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t ExecuteExtendedMacroRes__ErrorCodes_reserved5_descr_;
+extern const XERdescriptor_t ExecuteExtendedMacroRes__ErrorCodes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t ExecuteExtendedMacroRes__ErrorCodes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t ExecuteExtendedMacroRes__ErrorCodes_reserved6_descr_;
+extern const XERdescriptor_t ExecuteExtendedMacroRes__ErrorCodes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ExecuteExtendedMacroRes__ErrorCodes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ExecuteExtendedMacroRes__ErrorCodes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ExecuteExtendedMacroRes__ErrorCodes_raw_;
+extern const TTCN_Typedescriptor_t ExecuteExtendedMacroRes__ErrorCodes_descr_;
+extern const XERdescriptor_t ExecuteExtendedMacroRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ExecuteExtendedMacroRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ExecuteExtendedMacroRes_vtfunction_descr_;
+extern const XERdescriptor_t ExecuteExtendedMacroRes_ObjectIDofMacroObject_xer_;
+extern const TTCN_OERdescriptor_t ExecuteExtendedMacroRes_ObjectIDofMacroObject_oer_;
+extern const TTCN_Typedescriptor_t ExecuteExtendedMacroRes_ObjectIDofMacroObject_descr_;
+extern const TTCN_RAWdescriptor_t ExecuteExtendedMacroRes_reserved5_raw_;
+extern const XERdescriptor_t ExecuteExtendedMacroRes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t ExecuteExtendedMacroRes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t ExecuteExtendedMacroRes_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t ExecuteExtendedMacroRes_reserved6_raw_;
+extern const XERdescriptor_t ExecuteExtendedMacroRes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t ExecuteExtendedMacroRes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t ExecuteExtendedMacroRes_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t ExecuteExtendedMacroRes_reserved7_raw_;
+extern const XERdescriptor_t ExecuteExtendedMacroRes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ExecuteExtendedMacroRes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ExecuteExtendedMacroRes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ExecuteExtendedMacroRes_reserved8_raw_;
+extern const XERdescriptor_t ExecuteExtendedMacroRes_reserved8_xer_;
+extern const TTCN_OERdescriptor_t ExecuteExtendedMacroRes_reserved8_oer_;
+extern const TTCN_Typedescriptor_t ExecuteExtendedMacroRes_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t ExecuteExtendedMacroRes_raw_;
+extern const TTCN_Typedescriptor_t ExecuteExtendedMacroRes_descr_;
+extern const XERdescriptor_t ExecuteExtendedMacroReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ExecuteExtendedMacroReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ExecuteExtendedMacroReq_vtfunction_descr_;
+extern const XERdescriptor_t ExecuteExtendedMacroReq_ObjectIDofMacroObject_xer_;
+extern const TTCN_OERdescriptor_t ExecuteExtendedMacroReq_ObjectIDofMacroObject_oer_;
+extern const TTCN_Typedescriptor_t ExecuteExtendedMacroReq_ObjectIDofMacroObject_descr_;
+extern const TTCN_RAWdescriptor_t ExecuteExtendedMacroReq_reserved4_raw_;
+extern const XERdescriptor_t ExecuteExtendedMacroReq_reserved4_xer_;
+extern const TTCN_OERdescriptor_t ExecuteExtendedMacroReq_reserved4_oer_;
+extern const TTCN_Typedescriptor_t ExecuteExtendedMacroReq_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t ExecuteExtendedMacroReq_reserved5_raw_;
+extern const XERdescriptor_t ExecuteExtendedMacroReq_reserved5_xer_;
+extern const TTCN_OERdescriptor_t ExecuteExtendedMacroReq_reserved5_oer_;
+extern const TTCN_Typedescriptor_t ExecuteExtendedMacroReq_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t ExecuteExtendedMacroReq_reserved6_raw_;
+extern const XERdescriptor_t ExecuteExtendedMacroReq_reserved6_xer_;
+extern const TTCN_OERdescriptor_t ExecuteExtendedMacroReq_reserved6_oer_;
+extern const TTCN_Typedescriptor_t ExecuteExtendedMacroReq_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t ExecuteExtendedMacroReq_reserved7_raw_;
+extern const XERdescriptor_t ExecuteExtendedMacroReq_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ExecuteExtendedMacroReq_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ExecuteExtendedMacroReq_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ExecuteExtendedMacroReq_reserved8_raw_;
+extern const XERdescriptor_t ExecuteExtendedMacroReq_reserved8_xer_;
+extern const TTCN_OERdescriptor_t ExecuteExtendedMacroReq_reserved8_oer_;
+extern const TTCN_Typedescriptor_t ExecuteExtendedMacroReq_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t ExecuteExtendedMacroReq_raw_;
+extern const TTCN_Typedescriptor_t ExecuteExtendedMacroReq_descr_;
+extern const XERdescriptor_t LockUnlockMaskRes__ErrorCodes_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask_xer_;
+extern const TTCN_OERdescriptor_t LockUnlockMaskRes__ErrorCodes_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask_oer_;
+extern const TTCN_Typedescriptor_t LockUnlockMaskRes__ErrorCodes_commandIgnoredNoMaskIsVisibleOrGivenObjectIDdoesNotMatchTheVisibleMask_descr_;
+extern const XERdescriptor_t LockUnlockMaskRes__ErrorCodes_lockCommandIgnoredAlreadyLocked_xer_;
+extern const TTCN_OERdescriptor_t LockUnlockMaskRes__ErrorCodes_lockCommandIgnoredAlreadyLocked_oer_;
+extern const TTCN_Typedescriptor_t LockUnlockMaskRes__ErrorCodes_lockCommandIgnoredAlreadyLocked_descr_;
+extern const XERdescriptor_t LockUnlockMaskRes__ErrorCodes_unlockCommandIgnoredNotLocked_xer_;
+extern const TTCN_OERdescriptor_t LockUnlockMaskRes__ErrorCodes_unlockCommandIgnoredNotLocked_oer_;
+extern const TTCN_Typedescriptor_t LockUnlockMaskRes__ErrorCodes_unlockCommandIgnoredNotLocked_descr_;
+extern const XERdescriptor_t LockUnlockMaskRes__ErrorCodes_lockCommandIgnoredAnAlarmMaskIsActive_xer_;
+extern const TTCN_OERdescriptor_t LockUnlockMaskRes__ErrorCodes_lockCommandIgnoredAnAlarmMaskIsActive_oer_;
+extern const TTCN_Typedescriptor_t LockUnlockMaskRes__ErrorCodes_lockCommandIgnoredAnAlarmMaskIsActive_descr_;
+extern const XERdescriptor_t LockUnlockMaskRes__ErrorCodes_unsolicitedUnlockTimeoutOccurred_xer_;
+extern const TTCN_OERdescriptor_t LockUnlockMaskRes__ErrorCodes_unsolicitedUnlockTimeoutOccurred_oer_;
+extern const TTCN_Typedescriptor_t LockUnlockMaskRes__ErrorCodes_unsolicitedUnlockTimeoutOccurred_descr_;
+extern const XERdescriptor_t LockUnlockMaskRes__ErrorCodes_unsolicitedUnlockThisMaskIsHidden_xer_;
+extern const TTCN_OERdescriptor_t LockUnlockMaskRes__ErrorCodes_unsolicitedUnlockThisMaskIsHidden_oer_;
+extern const TTCN_Typedescriptor_t LockUnlockMaskRes__ErrorCodes_unsolicitedUnlockThisMaskIsHidden_descr_;
+extern const XERdescriptor_t LockUnlockMaskRes__ErrorCodes_unsolicitedUnlockOperatorInducedOrAnyOtherError_xer_;
+extern const TTCN_OERdescriptor_t LockUnlockMaskRes__ErrorCodes_unsolicitedUnlockOperatorInducedOrAnyOtherError_oer_;
+extern const TTCN_Typedescriptor_t LockUnlockMaskRes__ErrorCodes_unsolicitedUnlockOperatorInducedOrAnyOtherError_descr_;
+extern const XERdescriptor_t LockUnlockMaskRes__ErrorCodes_anyOtherError_xer_;
+extern const TTCN_OERdescriptor_t LockUnlockMaskRes__ErrorCodes_anyOtherError_oer_;
+extern const TTCN_Typedescriptor_t LockUnlockMaskRes__ErrorCodes_anyOtherError_descr_;
+extern const TTCN_RAWdescriptor_t LockUnlockMaskRes__ErrorCodes_raw_;
+extern const TTCN_Typedescriptor_t LockUnlockMaskRes__ErrorCodes_descr_;
+extern const XERdescriptor_t LockUnlockMaskRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t LockUnlockMaskRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t LockUnlockMaskRes_vtfunction_descr_;
+extern const TTCN_RAWdescriptor_t e__LockUnlockMaskReqCommand_raw_;
+extern const TTCN_Typedescriptor_t e__LockUnlockMaskReqCommand_descr_;
+extern const TTCN_RAWdescriptor_t LockUnlockMaskRes_reserved4_raw_;
+extern const XERdescriptor_t LockUnlockMaskRes_reserved4_xer_;
+extern const TTCN_OERdescriptor_t LockUnlockMaskRes_reserved4_oer_;
+extern const TTCN_Typedescriptor_t LockUnlockMaskRes_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t LockUnlockMaskRes_reserved5_raw_;
+extern const XERdescriptor_t LockUnlockMaskRes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t LockUnlockMaskRes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t LockUnlockMaskRes_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t LockUnlockMaskRes_reserved6_raw_;
+extern const XERdescriptor_t LockUnlockMaskRes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t LockUnlockMaskRes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t LockUnlockMaskRes_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t LockUnlockMaskRes_reserved7_raw_;
+extern const XERdescriptor_t LockUnlockMaskRes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t LockUnlockMaskRes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t LockUnlockMaskRes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t LockUnlockMaskRes_reserved8_raw_;
+extern const XERdescriptor_t LockUnlockMaskRes_reserved8_xer_;
+extern const TTCN_OERdescriptor_t LockUnlockMaskRes_reserved8_oer_;
+extern const TTCN_Typedescriptor_t LockUnlockMaskRes_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t LockUnlockMaskRes_raw_;
+extern const TTCN_Typedescriptor_t LockUnlockMaskRes_descr_;
+extern const XERdescriptor_t LockUnlockMaskReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t LockUnlockMaskReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t LockUnlockMaskReq_vtfunction_descr_;
+extern const XERdescriptor_t LockUnlockMaskReq_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock_xer_;
+extern const TTCN_OERdescriptor_t LockUnlockMaskReq_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock_oer_;
+extern const TTCN_Typedescriptor_t LockUnlockMaskReq_ObjectIDofTheDataMaskOrUserLayoutDataMaskToLockOrUnlock_descr_;
+extern const XERdescriptor_t LockUnlockMaskReq_lockTimeout_xer_;
+extern const TTCN_OERdescriptor_t LockUnlockMaskReq_lockTimeout_oer_;
+extern const TTCN_Typedescriptor_t LockUnlockMaskReq_lockTimeout_descr_;
+extern const TTCN_RAWdescriptor_t LockUnlockMaskReq_reserved7_raw_;
+extern const XERdescriptor_t LockUnlockMaskReq_reserved7_xer_;
+extern const TTCN_OERdescriptor_t LockUnlockMaskReq_reserved7_oer_;
+extern const TTCN_Typedescriptor_t LockUnlockMaskReq_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t LockUnlockMaskReq_reserved8_raw_;
+extern const XERdescriptor_t LockUnlockMaskReq_reserved8_xer_;
+extern const TTCN_OERdescriptor_t LockUnlockMaskReq_reserved8_oer_;
+extern const TTCN_Typedescriptor_t LockUnlockMaskReq_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t LockUnlockMaskReq_raw_;
+extern const TTCN_Typedescriptor_t LockUnlockMaskReq_descr_;
+extern const XERdescriptor_t ExecuteMacroReq__ErrorCodes_objectIDdoesNotExist_xer_;
+extern const TTCN_OERdescriptor_t ExecuteMacroReq__ErrorCodes_objectIDdoesNotExist_oer_;
+extern const TTCN_Typedescriptor_t ExecuteMacroReq__ErrorCodes_objectIDdoesNotExist_descr_;
+extern const XERdescriptor_t ExecuteMacroReq__ErrorCodes_objectIDisNotAMacroObject_xer_;
+extern const TTCN_OERdescriptor_t ExecuteMacroReq__ErrorCodes_objectIDisNotAMacroObject_oer_;
+extern const TTCN_Typedescriptor_t ExecuteMacroReq__ErrorCodes_objectIDisNotAMacroObject_descr_;
+extern const XERdescriptor_t ExecuteMacroReq__ErrorCodes_anyOtherError_xer_;
+extern const TTCN_OERdescriptor_t ExecuteMacroReq__ErrorCodes_anyOtherError_oer_;
+extern const TTCN_Typedescriptor_t ExecuteMacroReq__ErrorCodes_anyOtherError_descr_;
+extern const XERdescriptor_t ExecuteMacroReq__ErrorCodes_reserved3_xer_;
+extern const TTCN_OERdescriptor_t ExecuteMacroReq__ErrorCodes_reserved3_oer_;
+extern const TTCN_Typedescriptor_t ExecuteMacroReq__ErrorCodes_reserved3_descr_;
+extern const XERdescriptor_t ExecuteMacroReq__ErrorCodes_reserved4_xer_;
+extern const TTCN_OERdescriptor_t ExecuteMacroReq__ErrorCodes_reserved4_oer_;
+extern const TTCN_Typedescriptor_t ExecuteMacroReq__ErrorCodes_reserved4_descr_;
+extern const XERdescriptor_t ExecuteMacroReq__ErrorCodes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t ExecuteMacroReq__ErrorCodes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t ExecuteMacroReq__ErrorCodes_reserved5_descr_;
+extern const XERdescriptor_t ExecuteMacroReq__ErrorCodes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t ExecuteMacroReq__ErrorCodes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t ExecuteMacroReq__ErrorCodes_reserved6_descr_;
+extern const XERdescriptor_t ExecuteMacroReq__ErrorCodes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ExecuteMacroReq__ErrorCodes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ExecuteMacroReq__ErrorCodes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ExecuteMacroReq__ErrorCodes_raw_;
+extern const TTCN_Typedescriptor_t ExecuteMacroReq__ErrorCodes_descr_;
+extern const XERdescriptor_t ExecuteMacroRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ExecuteMacroRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ExecuteMacroRes_vtfunction_descr_;
+extern const XERdescriptor_t ExecuteMacroRes_objectIDofMacroObject_xer_;
+extern const TTCN_OERdescriptor_t ExecuteMacroRes_objectIDofMacroObject_oer_;
+extern const TTCN_Typedescriptor_t ExecuteMacroRes_objectIDofMacroObject_descr_;
+extern const TTCN_RAWdescriptor_t ExecuteMacroRes_reserved4_raw_;
+extern const XERdescriptor_t ExecuteMacroRes_reserved4_xer_;
+extern const TTCN_OERdescriptor_t ExecuteMacroRes_reserved4_oer_;
+extern const TTCN_Typedescriptor_t ExecuteMacroRes_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t ExecuteMacroRes_reserved5_raw_;
+extern const XERdescriptor_t ExecuteMacroRes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t ExecuteMacroRes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t ExecuteMacroRes_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t ExecuteMacroRes_reserved6_raw_;
+extern const XERdescriptor_t ExecuteMacroRes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t ExecuteMacroRes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t ExecuteMacroRes_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t ExecuteMacroRes_reserved7_raw_;
+extern const XERdescriptor_t ExecuteMacroRes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ExecuteMacroRes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ExecuteMacroRes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ExecuteMacroRes_reserved8_raw_;
+extern const XERdescriptor_t ExecuteMacroRes_reserved8_xer_;
+extern const TTCN_OERdescriptor_t ExecuteMacroRes_reserved8_oer_;
+extern const TTCN_Typedescriptor_t ExecuteMacroRes_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t ExecuteMacroRes_raw_;
+extern const TTCN_Typedescriptor_t ExecuteMacroRes_descr_;
+extern const XERdescriptor_t ExecuteMacroReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ExecuteMacroReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ExecuteMacroReq_vtfunction_descr_;
+extern const XERdescriptor_t ExecuteMacroReq_objectIDofMacroObject_xer_;
+extern const TTCN_OERdescriptor_t ExecuteMacroReq_objectIDofMacroObject_oer_;
+extern const TTCN_Typedescriptor_t ExecuteMacroReq_objectIDofMacroObject_descr_;
+extern const TTCN_RAWdescriptor_t ExecuteMacroReq_reserved3_raw_;
+extern const XERdescriptor_t ExecuteMacroReq_reserved3_xer_;
+extern const TTCN_OERdescriptor_t ExecuteMacroReq_reserved3_oer_;
+extern const TTCN_Typedescriptor_t ExecuteMacroReq_reserved3_descr_;
+extern const TTCN_RAWdescriptor_t ExecuteMacroReq_reserved4_raw_;
+extern const XERdescriptor_t ExecuteMacroReq_reserved4_xer_;
+extern const TTCN_OERdescriptor_t ExecuteMacroReq_reserved4_oer_;
+extern const TTCN_Typedescriptor_t ExecuteMacroReq_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t ExecuteMacroReq_reserved5_raw_;
+extern const XERdescriptor_t ExecuteMacroReq_reserved5_xer_;
+extern const TTCN_OERdescriptor_t ExecuteMacroReq_reserved5_oer_;
+extern const TTCN_Typedescriptor_t ExecuteMacroReq_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t ExecuteMacroReq_reserved6_raw_;
+extern const XERdescriptor_t ExecuteMacroReq_reserved6_xer_;
+extern const TTCN_OERdescriptor_t ExecuteMacroReq_reserved6_oer_;
+extern const TTCN_Typedescriptor_t ExecuteMacroReq_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t ExecuteMacroReq_reserved7_raw_;
+extern const XERdescriptor_t ExecuteMacroReq_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ExecuteMacroReq_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ExecuteMacroReq_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ExecuteMacroReq_reserved8_raw_;
+extern const XERdescriptor_t ExecuteMacroReq_reserved8_xer_;
+extern const TTCN_OERdescriptor_t ExecuteMacroReq_reserved8_oer_;
+extern const TTCN_Typedescriptor_t ExecuteMacroReq_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t ExecuteMacroReq_raw_;
+extern const TTCN_Typedescriptor_t ExecuteMacroReq_descr_;
+extern const XERdescriptor_t GetMemoryReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t GetMemoryReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t GetMemoryReq_vtfunction_descr_;
+extern const TTCN_RAWdescriptor_t GetMemoryReq_reserved2_raw_;
+extern const XERdescriptor_t GetMemoryReq_reserved2_xer_;
+extern const TTCN_OERdescriptor_t GetMemoryReq_reserved2_oer_;
+extern const TTCN_Typedescriptor_t GetMemoryReq_reserved2_descr_;
+extern const XERdescriptor_t GetMemoryReq_memoryRequired_xer_;
+extern const TTCN_OERdescriptor_t GetMemoryReq_memoryRequired_oer_;
+extern const TTCN_Typedescriptor_t GetMemoryReq_memoryRequired_descr_;
+extern const TTCN_RAWdescriptor_t GetMemoryReq_reserved7_raw_;
+extern const XERdescriptor_t GetMemoryReq_reserved7_xer_;
+extern const TTCN_OERdescriptor_t GetMemoryReq_reserved7_oer_;
+extern const TTCN_Typedescriptor_t GetMemoryReq_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t GetMemoryReq_reserved8_raw_;
+extern const XERdescriptor_t GetMemoryReq_reserved8_xer_;
+extern const TTCN_OERdescriptor_t GetMemoryReq_reserved8_oer_;
+extern const TTCN_Typedescriptor_t GetMemoryReq_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t GetMemoryReq_raw_;
+extern const TTCN_Typedescriptor_t GetMemoryReq_descr_;
+extern const TTCN_RAWdescriptor_t e__GetMemoryResVersionNumber_raw_;
+extern const TTCN_Typedescriptor_t e__GetMemoryResVersionNumber_descr_;
+extern const TTCN_RAWdescriptor_t e__GetMemoryResStatus_raw_;
+extern const TTCN_Typedescriptor_t e__GetMemoryResStatus_descr_;
+extern const XERdescriptor_t GetMemoryRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t GetMemoryRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t GetMemoryRes_vtfunction_descr_;
+extern const TTCN_RAWdescriptor_t GetMemoryRes_reserved4_raw_;
+extern const XERdescriptor_t GetMemoryRes_reserved4_xer_;
+extern const TTCN_OERdescriptor_t GetMemoryRes_reserved4_oer_;
+extern const TTCN_Typedescriptor_t GetMemoryRes_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t GetMemoryRes_reserved5_raw_;
+extern const XERdescriptor_t GetMemoryRes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t GetMemoryRes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t GetMemoryRes_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t GetMemoryRes_reserved6_raw_;
+extern const XERdescriptor_t GetMemoryRes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t GetMemoryRes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t GetMemoryRes_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t GetMemoryRes_reserved7_raw_;
+extern const XERdescriptor_t GetMemoryRes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t GetMemoryRes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t GetMemoryRes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t GetMemoryRes_reserved8_raw_;
+extern const XERdescriptor_t GetMemoryRes_reserved8_xer_;
+extern const TTCN_OERdescriptor_t GetMemoryRes_reserved8_oer_;
+extern const TTCN_Typedescriptor_t GetMemoryRes_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t GetMemoryRes_raw_;
+extern const TTCN_Typedescriptor_t GetMemoryRes_descr_;
+extern const XERdescriptor_t GetNumberOfSoftKeysReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t GetNumberOfSoftKeysReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t GetNumberOfSoftKeysReq_vtfunction_descr_;
+extern const TTCN_RAWdescriptor_t GetNumberOfSoftKeysReq_reserved2_raw_;
+extern const XERdescriptor_t GetNumberOfSoftKeysReq_reserved2_xer_;
+extern const TTCN_OERdescriptor_t GetNumberOfSoftKeysReq_reserved2_oer_;
+extern const TTCN_Typedescriptor_t GetNumberOfSoftKeysReq_reserved2_descr_;
+extern const TTCN_RAWdescriptor_t GetNumberOfSoftKeysReq_reserved3_raw_;
+extern const XERdescriptor_t GetNumberOfSoftKeysReq_reserved3_xer_;
+extern const TTCN_OERdescriptor_t GetNumberOfSoftKeysReq_reserved3_oer_;
+extern const TTCN_Typedescriptor_t GetNumberOfSoftKeysReq_reserved3_descr_;
+extern const TTCN_RAWdescriptor_t GetNumberOfSoftKeysReq_reserved4_raw_;
+extern const XERdescriptor_t GetNumberOfSoftKeysReq_reserved4_xer_;
+extern const TTCN_OERdescriptor_t GetNumberOfSoftKeysReq_reserved4_oer_;
+extern const TTCN_Typedescriptor_t GetNumberOfSoftKeysReq_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t GetNumberOfSoftKeysReq_reserved5_raw_;
+extern const XERdescriptor_t GetNumberOfSoftKeysReq_reserved5_xer_;
+extern const TTCN_OERdescriptor_t GetNumberOfSoftKeysReq_reserved5_oer_;
+extern const TTCN_Typedescriptor_t GetNumberOfSoftKeysReq_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t GetNumberOfSoftKeysReq_reserved6_raw_;
+extern const XERdescriptor_t GetNumberOfSoftKeysReq_reserved6_xer_;
+extern const TTCN_OERdescriptor_t GetNumberOfSoftKeysReq_reserved6_oer_;
+extern const TTCN_Typedescriptor_t GetNumberOfSoftKeysReq_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t GetNumberOfSoftKeysReq_reserved7_raw_;
+extern const XERdescriptor_t GetNumberOfSoftKeysReq_reserved7_xer_;
+extern const TTCN_OERdescriptor_t GetNumberOfSoftKeysReq_reserved7_oer_;
+extern const TTCN_Typedescriptor_t GetNumberOfSoftKeysReq_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t GetNumberOfSoftKeysReq_reserved8_raw_;
+extern const XERdescriptor_t GetNumberOfSoftKeysReq_reserved8_xer_;
+extern const TTCN_OERdescriptor_t GetNumberOfSoftKeysReq_reserved8_oer_;
+extern const TTCN_Typedescriptor_t GetNumberOfSoftKeysReq_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t GetNumberOfSoftKeysReq_raw_;
+extern const TTCN_Typedescriptor_t GetNumberOfSoftKeysReq_descr_;
+extern const XERdescriptor_t GetNumberOfSoftKeysRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t GetNumberOfSoftKeysRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t GetNumberOfSoftKeysRes_vtfunction_descr_;
+extern const XERdescriptor_t GetNumberOfSoftKeysRes_navigationSoftKeys___xer_;
+extern const TTCN_OERdescriptor_t GetNumberOfSoftKeysRes_navigationSoftKeys___oer_;
+extern const TTCN_Typedescriptor_t GetNumberOfSoftKeysRes_navigationSoftKeys___descr_;
+extern const TTCN_RAWdescriptor_t GetNumberOfSoftKeysRes_reserved3_raw_;
+extern const XERdescriptor_t GetNumberOfSoftKeysRes_reserved3_xer_;
+extern const TTCN_OERdescriptor_t GetNumberOfSoftKeysRes_reserved3_oer_;
+extern const TTCN_Typedescriptor_t GetNumberOfSoftKeysRes_reserved3_descr_;
+extern const TTCN_RAWdescriptor_t GetNumberOfSoftKeysRes_reserved4_raw_;
+extern const XERdescriptor_t GetNumberOfSoftKeysRes_reserved4_xer_;
+extern const TTCN_OERdescriptor_t GetNumberOfSoftKeysRes_reserved4_oer_;
+extern const TTCN_Typedescriptor_t GetNumberOfSoftKeysRes_reserved4_descr_;
+extern const XERdescriptor_t GetNumberOfSoftKeysRes_x__dots_xer_;
+extern const TTCN_OERdescriptor_t GetNumberOfSoftKeysRes_x__dots_oer_;
+extern const TTCN_Typedescriptor_t GetNumberOfSoftKeysRes_x__dots_descr_;
+extern const XERdescriptor_t GetNumberOfSoftKeysRes_y__dots_xer_;
+extern const TTCN_OERdescriptor_t GetNumberOfSoftKeysRes_y__dots_oer_;
+extern const TTCN_Typedescriptor_t GetNumberOfSoftKeysRes_y__dots_descr_;
+extern const XERdescriptor_t GetNumberOfSoftKeysRes_numberOfVirtualSoftKeys___xer_;
+extern const TTCN_OERdescriptor_t GetNumberOfSoftKeysRes_numberOfVirtualSoftKeys___oer_;
+extern const TTCN_Typedescriptor_t GetNumberOfSoftKeysRes_numberOfVirtualSoftKeys___descr_;
+extern const XERdescriptor_t GetNumberOfSoftKeysRes_numberOfPhysicalSoftKeys___xer_;
+extern const TTCN_OERdescriptor_t GetNumberOfSoftKeysRes_numberOfPhysicalSoftKeys___oer_;
+extern const TTCN_Typedescriptor_t GetNumberOfSoftKeysRes_numberOfPhysicalSoftKeys___descr_;
+extern const TTCN_RAWdescriptor_t GetNumberOfSoftKeysRes_raw_;
+extern const TTCN_Typedescriptor_t GetNumberOfSoftKeysRes_descr_;
+extern const XERdescriptor_t GetTextFontDataReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t GetTextFontDataReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t GetTextFontDataReq_vtfunction_descr_;
+extern const TTCN_RAWdescriptor_t GetTextFontDataReq_reserved2_raw_;
+extern const XERdescriptor_t GetTextFontDataReq_reserved2_xer_;
+extern const TTCN_OERdescriptor_t GetTextFontDataReq_reserved2_oer_;
+extern const TTCN_Typedescriptor_t GetTextFontDataReq_reserved2_descr_;
+extern const TTCN_RAWdescriptor_t GetTextFontDataReq_reserved3_raw_;
+extern const XERdescriptor_t GetTextFontDataReq_reserved3_xer_;
+extern const TTCN_OERdescriptor_t GetTextFontDataReq_reserved3_oer_;
+extern const TTCN_Typedescriptor_t GetTextFontDataReq_reserved3_descr_;
+extern const TTCN_RAWdescriptor_t GetTextFontDataReq_reserved4_raw_;
+extern const XERdescriptor_t GetTextFontDataReq_reserved4_xer_;
+extern const TTCN_OERdescriptor_t GetTextFontDataReq_reserved4_oer_;
+extern const TTCN_Typedescriptor_t GetTextFontDataReq_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t GetTextFontDataReq_reserved5_raw_;
+extern const XERdescriptor_t GetTextFontDataReq_reserved5_xer_;
+extern const TTCN_OERdescriptor_t GetTextFontDataReq_reserved5_oer_;
+extern const TTCN_Typedescriptor_t GetTextFontDataReq_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t GetTextFontDataReq_reserved6_raw_;
+extern const XERdescriptor_t GetTextFontDataReq_reserved6_xer_;
+extern const TTCN_OERdescriptor_t GetTextFontDataReq_reserved6_oer_;
+extern const TTCN_Typedescriptor_t GetTextFontDataReq_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t GetTextFontDataReq_reserved7_raw_;
+extern const XERdescriptor_t GetTextFontDataReq_reserved7_xer_;
+extern const TTCN_OERdescriptor_t GetTextFontDataReq_reserved7_oer_;
+extern const TTCN_Typedescriptor_t GetTextFontDataReq_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t GetTextFontDataReq_reserved8_raw_;
+extern const XERdescriptor_t GetTextFontDataReq_reserved8_xer_;
+extern const TTCN_OERdescriptor_t GetTextFontDataReq_reserved8_oer_;
+extern const TTCN_Typedescriptor_t GetTextFontDataReq_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t GetTextFontDataReq_raw_;
+extern const TTCN_Typedescriptor_t GetTextFontDataReq_descr_;
+extern const XERdescriptor_t TextFontDataRes__small__font__sizes_font__8x8_xer_;
+extern const TTCN_OERdescriptor_t TextFontDataRes__small__font__sizes_font__8x8_oer_;
+extern const TTCN_Typedescriptor_t TextFontDataRes__small__font__sizes_font__8x8_descr_;
+extern const XERdescriptor_t TextFontDataRes__small__font__sizes_font__8x12_xer_;
+extern const TTCN_OERdescriptor_t TextFontDataRes__small__font__sizes_font__8x12_oer_;
+extern const TTCN_Typedescriptor_t TextFontDataRes__small__font__sizes_font__8x12_descr_;
+extern const XERdescriptor_t TextFontDataRes__small__font__sizes_font__12x16_xer_;
+extern const TTCN_OERdescriptor_t TextFontDataRes__small__font__sizes_font__12x16_oer_;
+extern const TTCN_Typedescriptor_t TextFontDataRes__small__font__sizes_font__12x16_descr_;
+extern const XERdescriptor_t TextFontDataRes__small__font__sizes_font__16x16_xer_;
+extern const TTCN_OERdescriptor_t TextFontDataRes__small__font__sizes_font__16x16_oer_;
+extern const TTCN_Typedescriptor_t TextFontDataRes__small__font__sizes_font__16x16_descr_;
+extern const XERdescriptor_t TextFontDataRes__small__font__sizes_font__16x24_xer_;
+extern const TTCN_OERdescriptor_t TextFontDataRes__small__font__sizes_font__16x24_oer_;
+extern const TTCN_Typedescriptor_t TextFontDataRes__small__font__sizes_font__16x24_descr_;
+extern const XERdescriptor_t TextFontDataRes__small__font__sizes_font__24x32_xer_;
+extern const TTCN_OERdescriptor_t TextFontDataRes__small__font__sizes_font__24x32_oer_;
+extern const TTCN_Typedescriptor_t TextFontDataRes__small__font__sizes_font__24x32_descr_;
+extern const XERdescriptor_t TextFontDataRes__small__font__sizes_font__32x32_xer_;
+extern const TTCN_OERdescriptor_t TextFontDataRes__small__font__sizes_font__32x32_oer_;
+extern const TTCN_Typedescriptor_t TextFontDataRes__small__font__sizes_font__32x32_descr_;
+extern const XERdescriptor_t TextFontDataRes__small__font__sizes_reserved_xer_;
+extern const TTCN_OERdescriptor_t TextFontDataRes__small__font__sizes_reserved_oer_;
+extern const TTCN_Typedescriptor_t TextFontDataRes__small__font__sizes_reserved_descr_;
+extern const TTCN_RAWdescriptor_t TextFontDataRes__small__font__sizes_raw_;
+extern const TTCN_Typedescriptor_t TextFontDataRes__small__font__sizes_descr_;
+extern const XERdescriptor_t TextFontDataRes__large__font__sizes_font__32x48_xer_;
+extern const TTCN_OERdescriptor_t TextFontDataRes__large__font__sizes_font__32x48_oer_;
+extern const TTCN_Typedescriptor_t TextFontDataRes__large__font__sizes_font__32x48_descr_;
+extern const XERdescriptor_t TextFontDataRes__large__font__sizes_font__48x64_xer_;
+extern const TTCN_OERdescriptor_t TextFontDataRes__large__font__sizes_font__48x64_oer_;
+extern const TTCN_Typedescriptor_t TextFontDataRes__large__font__sizes_font__48x64_descr_;
+extern const XERdescriptor_t TextFontDataRes__large__font__sizes_font__64x64_xer_;
+extern const TTCN_OERdescriptor_t TextFontDataRes__large__font__sizes_font__64x64_oer_;
+extern const TTCN_Typedescriptor_t TextFontDataRes__large__font__sizes_font__64x64_descr_;
+extern const XERdescriptor_t TextFontDataRes__large__font__sizes_font__64x96_xer_;
+extern const TTCN_OERdescriptor_t TextFontDataRes__large__font__sizes_font__64x96_oer_;
+extern const TTCN_Typedescriptor_t TextFontDataRes__large__font__sizes_font__64x96_descr_;
+extern const XERdescriptor_t TextFontDataRes__large__font__sizes_font__96x128_xer_;
+extern const TTCN_OERdescriptor_t TextFontDataRes__large__font__sizes_font__96x128_oer_;
+extern const TTCN_Typedescriptor_t TextFontDataRes__large__font__sizes_font__96x128_descr_;
+extern const XERdescriptor_t TextFontDataRes__large__font__sizes_font__128x128_xer_;
+extern const TTCN_OERdescriptor_t TextFontDataRes__large__font__sizes_font__128x128_oer_;
+extern const TTCN_Typedescriptor_t TextFontDataRes__large__font__sizes_font__128x128_descr_;
+extern const XERdescriptor_t TextFontDataRes__large__font__sizes_font__128x192_xer_;
+extern const TTCN_OERdescriptor_t TextFontDataRes__large__font__sizes_font__128x192_oer_;
+extern const TTCN_Typedescriptor_t TextFontDataRes__large__font__sizes_font__128x192_descr_;
+extern const XERdescriptor_t TextFontDataRes__large__font__sizes_reserved_xer_;
+extern const TTCN_OERdescriptor_t TextFontDataRes__large__font__sizes_reserved_oer_;
+extern const TTCN_Typedescriptor_t TextFontDataRes__large__font__sizes_reserved_descr_;
+extern const TTCN_RAWdescriptor_t TextFontDataRes__large__font__sizes_raw_;
+extern const TTCN_Typedescriptor_t TextFontDataRes__large__font__sizes_descr_;
+extern const XERdescriptor_t TextFontDataRes__type__attribute_bold__text_xer_;
+extern const TTCN_OERdescriptor_t TextFontDataRes__type__attribute_bold__text_oer_;
+extern const TTCN_Typedescriptor_t TextFontDataRes__type__attribute_bold__text_descr_;
+extern const XERdescriptor_t TextFontDataRes__type__attribute_crossed__out__text_xer_;
+extern const TTCN_OERdescriptor_t TextFontDataRes__type__attribute_crossed__out__text_oer_;
+extern const TTCN_Typedescriptor_t TextFontDataRes__type__attribute_crossed__out__text_descr_;
+extern const XERdescriptor_t TextFontDataRes__type__attribute_underlined__text_xer_;
+extern const TTCN_OERdescriptor_t TextFontDataRes__type__attribute_underlined__text_oer_;
+extern const TTCN_Typedescriptor_t TextFontDataRes__type__attribute_underlined__text_descr_;
+extern const XERdescriptor_t TextFontDataRes__type__attribute_italics__text_xer_;
+extern const TTCN_OERdescriptor_t TextFontDataRes__type__attribute_italics__text_oer_;
+extern const TTCN_Typedescriptor_t TextFontDataRes__type__attribute_italics__text_descr_;
+extern const XERdescriptor_t TextFontDataRes__type__attribute_inverted__text_xer_;
+extern const TTCN_OERdescriptor_t TextFontDataRes__type__attribute_inverted__text_oer_;
+extern const TTCN_Typedescriptor_t TextFontDataRes__type__attribute_inverted__text_descr_;
+extern const XERdescriptor_t TextFontDataRes__type__attribute_flash__inverted_xer_;
+extern const TTCN_OERdescriptor_t TextFontDataRes__type__attribute_flash__inverted_oer_;
+extern const TTCN_Typedescriptor_t TextFontDataRes__type__attribute_flash__inverted_descr_;
+extern const XERdescriptor_t TextFontDataRes__type__attribute_flash__background__and__foreground_xer_;
+extern const TTCN_OERdescriptor_t TextFontDataRes__type__attribute_flash__background__and__foreground_oer_;
+extern const TTCN_Typedescriptor_t TextFontDataRes__type__attribute_flash__background__and__foreground_descr_;
+extern const XERdescriptor_t TextFontDataRes__type__attribute_proportional__font__rendering_xer_;
+extern const TTCN_OERdescriptor_t TextFontDataRes__type__attribute_proportional__font__rendering_oer_;
+extern const TTCN_Typedescriptor_t TextFontDataRes__type__attribute_proportional__font__rendering_descr_;
+extern const TTCN_RAWdescriptor_t TextFontDataRes__type__attribute_raw_;
+extern const TTCN_Typedescriptor_t TextFontDataRes__type__attribute_descr_;
+extern const XERdescriptor_t GetTextFontDataRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t GetTextFontDataRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t GetTextFontDataRes_vtfunction_descr_;
+extern const TTCN_RAWdescriptor_t GetTextFontDataRes_reserved2_raw_;
+extern const XERdescriptor_t GetTextFontDataRes_reserved2_xer_;
+extern const TTCN_OERdescriptor_t GetTextFontDataRes_reserved2_oer_;
+extern const TTCN_Typedescriptor_t GetTextFontDataRes_reserved2_descr_;
+extern const TTCN_RAWdescriptor_t GetTextFontDataRes_reserved3_raw_;
+extern const XERdescriptor_t GetTextFontDataRes_reserved3_xer_;
+extern const TTCN_OERdescriptor_t GetTextFontDataRes_reserved3_oer_;
+extern const TTCN_Typedescriptor_t GetTextFontDataRes_reserved3_descr_;
+extern const TTCN_RAWdescriptor_t GetTextFontDataRes_reserved4_raw_;
+extern const XERdescriptor_t GetTextFontDataRes_reserved4_xer_;
+extern const TTCN_OERdescriptor_t GetTextFontDataRes_reserved4_oer_;
+extern const TTCN_Typedescriptor_t GetTextFontDataRes_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t GetTextFontDataRes_reserved5_raw_;
+extern const XERdescriptor_t GetTextFontDataRes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t GetTextFontDataRes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t GetTextFontDataRes_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t GetTextFontDataRes_raw_;
+extern const TTCN_Typedescriptor_t GetTextFontDataRes_descr_;
+extern const XERdescriptor_t GetHardwareReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t GetHardwareReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t GetHardwareReq_vtfunction_descr_;
+extern const TTCN_RAWdescriptor_t GetHardwareReq_reserved2_raw_;
+extern const XERdescriptor_t GetHardwareReq_reserved2_xer_;
+extern const TTCN_OERdescriptor_t GetHardwareReq_reserved2_oer_;
+extern const TTCN_Typedescriptor_t GetHardwareReq_reserved2_descr_;
+extern const TTCN_RAWdescriptor_t GetHardwareReq_reserved3_raw_;
+extern const XERdescriptor_t GetHardwareReq_reserved3_xer_;
+extern const TTCN_OERdescriptor_t GetHardwareReq_reserved3_oer_;
+extern const TTCN_Typedescriptor_t GetHardwareReq_reserved3_descr_;
+extern const TTCN_RAWdescriptor_t GetHardwareReq_reserved4_raw_;
+extern const XERdescriptor_t GetHardwareReq_reserved4_xer_;
+extern const TTCN_OERdescriptor_t GetHardwareReq_reserved4_oer_;
+extern const TTCN_Typedescriptor_t GetHardwareReq_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t GetHardwareReq_reserved5_raw_;
+extern const XERdescriptor_t GetHardwareReq_reserved5_xer_;
+extern const TTCN_OERdescriptor_t GetHardwareReq_reserved5_oer_;
+extern const TTCN_Typedescriptor_t GetHardwareReq_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t GetHardwareReq_reserved6_raw_;
+extern const XERdescriptor_t GetHardwareReq_reserved6_xer_;
+extern const TTCN_OERdescriptor_t GetHardwareReq_reserved6_oer_;
+extern const TTCN_Typedescriptor_t GetHardwareReq_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t GetHardwareReq_reserved7_raw_;
+extern const XERdescriptor_t GetHardwareReq_reserved7_xer_;
+extern const TTCN_OERdescriptor_t GetHardwareReq_reserved7_oer_;
+extern const TTCN_Typedescriptor_t GetHardwareReq_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t GetHardwareReq_reserved8_raw_;
+extern const XERdescriptor_t GetHardwareReq_reserved8_xer_;
+extern const TTCN_OERdescriptor_t GetHardwareReq_reserved8_oer_;
+extern const TTCN_Typedescriptor_t GetHardwareReq_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t GetHardwareReq_raw_;
+extern const TTCN_Typedescriptor_t GetHardwareReq_descr_;
+extern const TTCN_RAWdescriptor_t e__GetHardwareResGraphicType_raw_;
+extern const TTCN_Typedescriptor_t e__GetHardwareResGraphicType_descr_;
+extern const XERdescriptor_t GetHardwareResHardwareType_touchScreenandPointingEvent_xer_;
+extern const TTCN_OERdescriptor_t GetHardwareResHardwareType_touchScreenandPointingEvent_oer_;
+extern const TTCN_Typedescriptor_t GetHardwareResHardwareType_touchScreenandPointingEvent_descr_;
+extern const XERdescriptor_t GetHardwareResHardwareType_pointingDeviceAndPointingEvent_xer_;
+extern const TTCN_OERdescriptor_t GetHardwareResHardwareType_pointingDeviceAndPointingEvent_oer_;
+extern const TTCN_Typedescriptor_t GetHardwareResHardwareType_pointingDeviceAndPointingEvent_descr_;
+extern const XERdescriptor_t GetHardwareResHardwareType_multipleFrequencyAudioOutput_xer_;
+extern const TTCN_OERdescriptor_t GetHardwareResHardwareType_multipleFrequencyAudioOutput_oer_;
+extern const TTCN_Typedescriptor_t GetHardwareResHardwareType_multipleFrequencyAudioOutput_descr_;
+extern const XERdescriptor_t GetHardwareResHardwareType_adjustableVolumeAudioOutput_xer_;
+extern const TTCN_OERdescriptor_t GetHardwareResHardwareType_adjustableVolumeAudioOutput_oer_;
+extern const TTCN_Typedescriptor_t GetHardwareResHardwareType_adjustableVolumeAudioOutput_descr_;
+extern const XERdescriptor_t GetHardwareResHardwareType_simultaneousActivationsOfPhysicalSoftKeys_xer_;
+extern const TTCN_OERdescriptor_t GetHardwareResHardwareType_simultaneousActivationsOfPhysicalSoftKeys_oer_;
+extern const TTCN_Typedescriptor_t GetHardwareResHardwareType_simultaneousActivationsOfPhysicalSoftKeys_descr_;
+extern const XERdescriptor_t GetHardwareResHardwareType_simultaneousActivationsOfButtons_xer_;
+extern const TTCN_OERdescriptor_t GetHardwareResHardwareType_simultaneousActivationsOfButtons_oer_;
+extern const TTCN_Typedescriptor_t GetHardwareResHardwareType_simultaneousActivationsOfButtons_descr_;
+extern const XERdescriptor_t GetHardwareResHardwareType_dragOperationViaPointingEvent_xer_;
+extern const TTCN_OERdescriptor_t GetHardwareResHardwareType_dragOperationViaPointingEvent_oer_;
+extern const TTCN_Typedescriptor_t GetHardwareResHardwareType_dragOperationViaPointingEvent_descr_;
+extern const XERdescriptor_t GetHardwareResHardwareType_intermediateCoordinatesDuringDragOperation_xer_;
+extern const TTCN_OERdescriptor_t GetHardwareResHardwareType_intermediateCoordinatesDuringDragOperation_oer_;
+extern const TTCN_Typedescriptor_t GetHardwareResHardwareType_intermediateCoordinatesDuringDragOperation_descr_;
+extern const TTCN_RAWdescriptor_t GetHardwareResHardwareType_raw_;
+extern const TTCN_Typedescriptor_t GetHardwareResHardwareType_descr_;
+extern const XERdescriptor_t BootTimeType_xer_;
+extern const TTCN_OERdescriptor_t BootTimeType_oer_;
+extern const TTCN_Typedescriptor_t BootTimeType_descr_;
+extern const XERdescriptor_t GetHardwareRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t GetHardwareRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t GetHardwareRes_vtfunction_descr_;
+extern const XERdescriptor_t GetHardwareRes_bootTimeInSeconds_xer_;
+extern const TTCN_OERdescriptor_t GetHardwareRes_bootTimeInSeconds_oer_;
+extern const TTCN_Typedescriptor_t GetHardwareRes_bootTimeInSeconds_descr_;
+extern const XERdescriptor_t GetHardwareRes_xPixels_xer_;
+extern const TTCN_OERdescriptor_t GetHardwareRes_xPixels_oer_;
+extern const TTCN_Typedescriptor_t GetHardwareRes_xPixels_descr_;
+extern const XERdescriptor_t GetHardwareRes_yPixels_xer_;
+extern const TTCN_OERdescriptor_t GetHardwareRes_yPixels_oer_;
+extern const TTCN_Typedescriptor_t GetHardwareRes_yPixels_descr_;
+extern const TTCN_RAWdescriptor_t GetHardwareRes_raw_;
+extern const TTCN_Typedescriptor_t GetHardwareRes_descr_;
+extern const TTCN_RAWdescriptor_t e__Codeplane_raw_;
+extern const TTCN_Typedescriptor_t e__Codeplane_descr_;
+extern const XERdescriptor_t GetSupportedWidecharsReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t GetSupportedWidecharsReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t GetSupportedWidecharsReq_vtfunction_descr_;
+extern const XERdescriptor_t GetSupportedWidecharsReq_firstWideCharInInquiryRange_xer_;
+extern const TTCN_OERdescriptor_t GetSupportedWidecharsReq_firstWideCharInInquiryRange_oer_;
+extern const TTCN_Typedescriptor_t GetSupportedWidecharsReq_firstWideCharInInquiryRange_descr_;
+extern const XERdescriptor_t GetSupportedWidecharsReq_lastWideCharInInquiryRange_xer_;
+extern const TTCN_OERdescriptor_t GetSupportedWidecharsReq_lastWideCharInInquiryRange_oer_;
+extern const TTCN_Typedescriptor_t GetSupportedWidecharsReq_lastWideCharInInquiryRange_descr_;
+extern const TTCN_RAWdescriptor_t GetSupportedWidecharsReq_reserved7_raw_;
+extern const XERdescriptor_t GetSupportedWidecharsReq_reserved7_xer_;
+extern const TTCN_OERdescriptor_t GetSupportedWidecharsReq_reserved7_oer_;
+extern const TTCN_Typedescriptor_t GetSupportedWidecharsReq_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t GetSupportedWidecharsReq_reserved8_raw_;
+extern const XERdescriptor_t GetSupportedWidecharsReq_reserved8_xer_;
+extern const TTCN_OERdescriptor_t GetSupportedWidecharsReq_reserved8_oer_;
+extern const TTCN_Typedescriptor_t GetSupportedWidecharsReq_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t GetSupportedWidecharsReq_raw_;
+extern const TTCN_Typedescriptor_t GetSupportedWidecharsReq_descr_;
+extern const XERdescriptor_t WideCharRange_firstWideChar_xer_;
+extern const TTCN_OERdescriptor_t WideCharRange_firstWideChar_oer_;
+extern const TTCN_Typedescriptor_t WideCharRange_firstWideChar_descr_;
+extern const XERdescriptor_t WideCharRange_lastWideChar_xer_;
+extern const TTCN_OERdescriptor_t WideCharRange_lastWideChar_oer_;
+extern const TTCN_Typedescriptor_t WideCharRange_lastWideChar_descr_;
+extern const TTCN_RAWdescriptor_t WideCharRange_raw_;
+extern const TTCN_Typedescriptor_t WideCharRange_descr_;
+extern const TTCN_RAWdescriptor_t WideCharRangeArray_raw_;
+extern const TTCN_Typedescriptor_t WideCharRangeArray_descr_;
+extern const XERdescriptor_t GetSupportedWidecharsRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t GetSupportedWidecharsRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t GetSupportedWidecharsRes_vtfunction_descr_;
+extern const XERdescriptor_t GetSupportedWidecharsRes_firstWideCharInInquiryRange_xer_;
+extern const TTCN_OERdescriptor_t GetSupportedWidecharsRes_firstWideCharInInquiryRange_oer_;
+extern const TTCN_Typedescriptor_t GetSupportedWidecharsRes_firstWideCharInInquiryRange_descr_;
+extern const XERdescriptor_t GetSupportedWidecharsRes_lastWideCharInInquiryRange_xer_;
+extern const TTCN_OERdescriptor_t GetSupportedWidecharsRes_lastWideCharInInquiryRange_oer_;
+extern const TTCN_Typedescriptor_t GetSupportedWidecharsRes_lastWideCharInInquiryRange_descr_;
+extern const TTCN_RAWdescriptor_t GetSupportedWidecharsRes_numberOfRanges_raw_;
+extern const XERdescriptor_t GetSupportedWidecharsRes_numberOfRanges_xer_;
+extern const TTCN_OERdescriptor_t GetSupportedWidecharsRes_numberOfRanges_oer_;
+extern const TTCN_Typedescriptor_t GetSupportedWidecharsRes_numberOfRanges_descr_;
+extern const TTCN_RAWdescriptor_t GetSupportedWidecharsRes_raw_;
+extern const TTCN_Typedescriptor_t GetSupportedWidecharsRes_descr_;
+extern const XERdescriptor_t GetWindowMaskDataReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t GetWindowMaskDataReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t GetWindowMaskDataReq_vtfunction_descr_;
+extern const TTCN_RAWdescriptor_t GetWindowMaskDataReq_reserved2_raw_;
+extern const XERdescriptor_t GetWindowMaskDataReq_reserved2_xer_;
+extern const TTCN_OERdescriptor_t GetWindowMaskDataReq_reserved2_oer_;
+extern const TTCN_Typedescriptor_t GetWindowMaskDataReq_reserved2_descr_;
+extern const TTCN_RAWdescriptor_t GetWindowMaskDataReq_reserved3_raw_;
+extern const XERdescriptor_t GetWindowMaskDataReq_reserved3_xer_;
+extern const TTCN_OERdescriptor_t GetWindowMaskDataReq_reserved3_oer_;
+extern const TTCN_Typedescriptor_t GetWindowMaskDataReq_reserved3_descr_;
+extern const TTCN_RAWdescriptor_t GetWindowMaskDataReq_reserved4_raw_;
+extern const XERdescriptor_t GetWindowMaskDataReq_reserved4_xer_;
+extern const TTCN_OERdescriptor_t GetWindowMaskDataReq_reserved4_oer_;
+extern const TTCN_Typedescriptor_t GetWindowMaskDataReq_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t GetWindowMaskDataReq_reserved5_raw_;
+extern const XERdescriptor_t GetWindowMaskDataReq_reserved5_xer_;
+extern const TTCN_OERdescriptor_t GetWindowMaskDataReq_reserved5_oer_;
+extern const TTCN_Typedescriptor_t GetWindowMaskDataReq_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t GetWindowMaskDataReq_reserved6_raw_;
+extern const XERdescriptor_t GetWindowMaskDataReq_reserved6_xer_;
+extern const TTCN_OERdescriptor_t GetWindowMaskDataReq_reserved6_oer_;
+extern const TTCN_Typedescriptor_t GetWindowMaskDataReq_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t GetWindowMaskDataReq_reserved7_raw_;
+extern const XERdescriptor_t GetWindowMaskDataReq_reserved7_xer_;
+extern const TTCN_OERdescriptor_t GetWindowMaskDataReq_reserved7_oer_;
+extern const TTCN_Typedescriptor_t GetWindowMaskDataReq_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t GetWindowMaskDataReq_reserved8_raw_;
+extern const XERdescriptor_t GetWindowMaskDataReq_reserved8_xer_;
+extern const TTCN_OERdescriptor_t GetWindowMaskDataReq_reserved8_oer_;
+extern const TTCN_Typedescriptor_t GetWindowMaskDataReq_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t GetWindowMaskDataReq_raw_;
+extern const TTCN_Typedescriptor_t GetWindowMaskDataReq_descr_;
+extern const XERdescriptor_t GetWindowMaskDataRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t GetWindowMaskDataRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t GetWindowMaskDataRes_vtfunction_descr_;
+extern const XERdescriptor_t GetWindowMaskDataRes_BackgroundColourVTUserLayoutDataMasks_xer_;
+extern const TTCN_OERdescriptor_t GetWindowMaskDataRes_BackgroundColourVTUserLayoutDataMasks_oer_;
+extern const TTCN_Typedescriptor_t GetWindowMaskDataRes_BackgroundColourVTUserLayoutDataMasks_descr_;
+extern const XERdescriptor_t GetWindowMaskDataRes_BackgroundColourVTKeyCells_xer_;
+extern const TTCN_OERdescriptor_t GetWindowMaskDataRes_BackgroundColourVTKeyCells_oer_;
+extern const TTCN_Typedescriptor_t GetWindowMaskDataRes_BackgroundColourVTKeyCells_descr_;
+extern const TTCN_RAWdescriptor_t GetWindowMaskDataRes_reserved4_raw_;
+extern const XERdescriptor_t GetWindowMaskDataRes_reserved4_xer_;
+extern const TTCN_OERdescriptor_t GetWindowMaskDataRes_reserved4_oer_;
+extern const TTCN_Typedescriptor_t GetWindowMaskDataRes_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t GetWindowMaskDataRes_reserved5_raw_;
+extern const XERdescriptor_t GetWindowMaskDataRes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t GetWindowMaskDataRes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t GetWindowMaskDataRes_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t GetWindowMaskDataRes_reserved6_raw_;
+extern const XERdescriptor_t GetWindowMaskDataRes_reserved6_xer_;
+extern const TTCN_OERdescriptor_t GetWindowMaskDataRes_reserved6_oer_;
+extern const TTCN_Typedescriptor_t GetWindowMaskDataRes_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t GetWindowMaskDataRes_reserved7_raw_;
+extern const XERdescriptor_t GetWindowMaskDataRes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t GetWindowMaskDataRes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t GetWindowMaskDataRes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t GetWindowMaskDataRes_reserved8_raw_;
+extern const XERdescriptor_t GetWindowMaskDataRes_reserved8_xer_;
+extern const TTCN_OERdescriptor_t GetWindowMaskDataRes_reserved8_oer_;
+extern const TTCN_Typedescriptor_t GetWindowMaskDataRes_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t GetWindowMaskDataRes_raw_;
+extern const TTCN_Typedescriptor_t GetWindowMaskDataRes_descr_;
+extern const XERdescriptor_t GetSupportedObjectsReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t GetSupportedObjectsReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t GetSupportedObjectsReq_vtfunction_descr_;
+extern const TTCN_RAWdescriptor_t GetSupportedObjectsReq_reserved2_raw_;
+extern const XERdescriptor_t GetSupportedObjectsReq_reserved2_xer_;
+extern const TTCN_OERdescriptor_t GetSupportedObjectsReq_reserved2_oer_;
+extern const TTCN_Typedescriptor_t GetSupportedObjectsReq_reserved2_descr_;
+extern const TTCN_RAWdescriptor_t GetSupportedObjectsReq_reserved3_raw_;
+extern const XERdescriptor_t GetSupportedObjectsReq_reserved3_xer_;
+extern const TTCN_OERdescriptor_t GetSupportedObjectsReq_reserved3_oer_;
+extern const TTCN_Typedescriptor_t GetSupportedObjectsReq_reserved3_descr_;
+extern const TTCN_RAWdescriptor_t GetSupportedObjectsReq_reserved4_raw_;
+extern const XERdescriptor_t GetSupportedObjectsReq_reserved4_xer_;
+extern const TTCN_OERdescriptor_t GetSupportedObjectsReq_reserved4_oer_;
+extern const TTCN_Typedescriptor_t GetSupportedObjectsReq_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t GetSupportedObjectsReq_reserved5_raw_;
+extern const XERdescriptor_t GetSupportedObjectsReq_reserved5_xer_;
+extern const TTCN_OERdescriptor_t GetSupportedObjectsReq_reserved5_oer_;
+extern const TTCN_Typedescriptor_t GetSupportedObjectsReq_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t GetSupportedObjectsReq_reserved6_raw_;
+extern const XERdescriptor_t GetSupportedObjectsReq_reserved6_xer_;
+extern const TTCN_OERdescriptor_t GetSupportedObjectsReq_reserved6_oer_;
+extern const TTCN_Typedescriptor_t GetSupportedObjectsReq_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t GetSupportedObjectsReq_reserved7_raw_;
+extern const XERdescriptor_t GetSupportedObjectsReq_reserved7_xer_;
+extern const TTCN_OERdescriptor_t GetSupportedObjectsReq_reserved7_oer_;
+extern const TTCN_Typedescriptor_t GetSupportedObjectsReq_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t GetSupportedObjectsReq_reserved8_raw_;
+extern const XERdescriptor_t GetSupportedObjectsReq_reserved8_xer_;
+extern const TTCN_OERdescriptor_t GetSupportedObjectsReq_reserved8_oer_;
+extern const TTCN_Typedescriptor_t GetSupportedObjectsReq_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t GetSupportedObjectsReq_raw_;
+extern const TTCN_Typedescriptor_t GetSupportedObjectsReq_descr_;
+extern const XERdescriptor_t GetSupportedObjectsRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t GetSupportedObjectsRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t GetSupportedObjectsRes_vtfunction_descr_;
+extern const TTCN_RAWdescriptor_t GetSupportedObjectsRes_numberOfBytesToFollow_raw_;
+extern const XERdescriptor_t GetSupportedObjectsRes_numberOfBytesToFollow_xer_;
+extern const TTCN_OERdescriptor_t GetSupportedObjectsRes_numberOfBytesToFollow_oer_;
+extern const TTCN_Typedescriptor_t GetSupportedObjectsRes_numberOfBytesToFollow_descr_;
+extern const XERdescriptor_t GetSupportedObjectsRes_supportedObjectTypes_xer_;
+extern const TTCN_OERdescriptor_t GetSupportedObjectsRes_supportedObjectTypes_oer_;
+extern const TTCN_Typedescriptor_t GetSupportedObjectsRes_supportedObjectTypes_descr_;
+extern const TTCN_RAWdescriptor_t GetSupportedObjectsRes_raw_;
+extern const TTCN_Typedescriptor_t GetSupportedObjectsRes_descr_;
+extern const XERdescriptor_t StoreVersionRes__errorCodesType_reserved0_xer_;
+extern const TTCN_OERdescriptor_t StoreVersionRes__errorCodesType_reserved0_oer_;
+extern const TTCN_Typedescriptor_t StoreVersionRes__errorCodesType_reserved0_descr_;
+extern const XERdescriptor_t StoreVersionRes__errorCodesType_versionLabelIsNotCorrect_xer_;
+extern const TTCN_OERdescriptor_t StoreVersionRes__errorCodesType_versionLabelIsNotCorrect_oer_;
+extern const TTCN_Typedescriptor_t StoreVersionRes__errorCodesType_versionLabelIsNotCorrect_descr_;
+extern const XERdescriptor_t StoreVersionRes__errorCodesType_insufficientMemoryAvailable_xer_;
+extern const TTCN_OERdescriptor_t StoreVersionRes__errorCodesType_insufficientMemoryAvailable_oer_;
+extern const TTCN_Typedescriptor_t StoreVersionRes__errorCodesType_insufficientMemoryAvailable_descr_;
+extern const XERdescriptor_t StoreVersionRes__errorCodesType_anyOtherError_xer_;
+extern const TTCN_OERdescriptor_t StoreVersionRes__errorCodesType_anyOtherError_oer_;
+extern const TTCN_Typedescriptor_t StoreVersionRes__errorCodesType_anyOtherError_descr_;
+extern const XERdescriptor_t StoreVersionRes__errorCodesType_reserved4_xer_;
+extern const TTCN_OERdescriptor_t StoreVersionRes__errorCodesType_reserved4_oer_;
+extern const TTCN_Typedescriptor_t StoreVersionRes__errorCodesType_reserved4_descr_;
+extern const XERdescriptor_t StoreVersionRes__errorCodesType_reserved5_xer_;
+extern const TTCN_OERdescriptor_t StoreVersionRes__errorCodesType_reserved5_oer_;
+extern const TTCN_Typedescriptor_t StoreVersionRes__errorCodesType_reserved5_descr_;
+extern const XERdescriptor_t StoreVersionRes__errorCodesType_reserved6_xer_;
+extern const TTCN_OERdescriptor_t StoreVersionRes__errorCodesType_reserved6_oer_;
+extern const TTCN_Typedescriptor_t StoreVersionRes__errorCodesType_reserved6_descr_;
+extern const XERdescriptor_t StoreVersionRes__errorCodesType_reserved7_xer_;
+extern const TTCN_OERdescriptor_t StoreVersionRes__errorCodesType_reserved7_oer_;
+extern const TTCN_Typedescriptor_t StoreVersionRes__errorCodesType_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t StoreVersionRes__errorCodesType_raw_;
+extern const TTCN_Typedescriptor_t StoreVersionRes__errorCodesType_descr_;
+extern const XERdescriptor_t StoreVersionRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t StoreVersionRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t StoreVersionRes_vtfunction_descr_;
+extern const TTCN_RAWdescriptor_t StoreVersionRes_reserved2_raw_;
+extern const XERdescriptor_t StoreVersionRes_reserved2_xer_;
+extern const TTCN_OERdescriptor_t StoreVersionRes_reserved2_oer_;
+extern const TTCN_Typedescriptor_t StoreVersionRes_reserved2_descr_;
+extern const TTCN_RAWdescriptor_t StoreVersionRes_reserved3_raw_;
+extern const XERdescriptor_t StoreVersionRes_reserved3_xer_;
+extern const TTCN_OERdescriptor_t StoreVersionRes_reserved3_oer_;
+extern const TTCN_Typedescriptor_t StoreVersionRes_reserved3_descr_;
+extern const TTCN_RAWdescriptor_t StoreVersionRes_reserved4_raw_;
+extern const XERdescriptor_t StoreVersionRes_reserved4_xer_;
+extern const TTCN_OERdescriptor_t StoreVersionRes_reserved4_oer_;
+extern const TTCN_Typedescriptor_t StoreVersionRes_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t StoreVersionRes_reserved5_raw_;
+extern const XERdescriptor_t StoreVersionRes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t StoreVersionRes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t StoreVersionRes_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t StoreVersionRes_reserved7_raw_;
+extern const XERdescriptor_t StoreVersionRes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t StoreVersionRes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t StoreVersionRes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t StoreVersionRes_reserved8_raw_;
+extern const XERdescriptor_t StoreVersionRes_reserved8_xer_;
+extern const TTCN_OERdescriptor_t StoreVersionRes_reserved8_oer_;
+extern const TTCN_Typedescriptor_t StoreVersionRes_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t StoreVersionRes_raw_;
+extern const TTCN_Typedescriptor_t StoreVersionRes_descr_;
+extern const XERdescriptor_t StoreVersionReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t StoreVersionReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t StoreVersionReq_vtfunction_descr_;
+extern const XERdescriptor_t StoreVersionReq_versionLabel_xer_;
+extern const TTCN_Typedescriptor_t StoreVersionReq_versionLabel_descr_;
+extern const TTCN_RAWdescriptor_t StoreVersionReq_raw_;
+extern const TTCN_Typedescriptor_t StoreVersionReq_descr_;
+extern const XERdescriptor_t WorkingSetMaintenanceBitMask_initiatingWorkingSetMaintenance_xer_;
+extern const TTCN_OERdescriptor_t WorkingSetMaintenanceBitMask_initiatingWorkingSetMaintenance_oer_;
+extern const TTCN_Typedescriptor_t WorkingSetMaintenanceBitMask_initiatingWorkingSetMaintenance_descr_;
+extern const XERdescriptor_t WorkingSetMaintenanceBitMask_reserved1_xer_;
+extern const TTCN_OERdescriptor_t WorkingSetMaintenanceBitMask_reserved1_oer_;
+extern const TTCN_Typedescriptor_t WorkingSetMaintenanceBitMask_reserved1_descr_;
+extern const XERdescriptor_t WorkingSetMaintenanceBitMask_reserved2_xer_;
+extern const TTCN_OERdescriptor_t WorkingSetMaintenanceBitMask_reserved2_oer_;
+extern const TTCN_Typedescriptor_t WorkingSetMaintenanceBitMask_reserved2_descr_;
+extern const XERdescriptor_t WorkingSetMaintenanceBitMask_reserved3_xer_;
+extern const TTCN_OERdescriptor_t WorkingSetMaintenanceBitMask_reserved3_oer_;
+extern const TTCN_Typedescriptor_t WorkingSetMaintenanceBitMask_reserved3_descr_;
+extern const XERdescriptor_t WorkingSetMaintenanceBitMask_reserved4_xer_;
+extern const TTCN_OERdescriptor_t WorkingSetMaintenanceBitMask_reserved4_oer_;
+extern const TTCN_Typedescriptor_t WorkingSetMaintenanceBitMask_reserved4_descr_;
+extern const XERdescriptor_t WorkingSetMaintenanceBitMask_reserved5_xer_;
+extern const TTCN_OERdescriptor_t WorkingSetMaintenanceBitMask_reserved5_oer_;
+extern const TTCN_Typedescriptor_t WorkingSetMaintenanceBitMask_reserved5_descr_;
+extern const XERdescriptor_t WorkingSetMaintenanceBitMask_reserved6_xer_;
+extern const TTCN_OERdescriptor_t WorkingSetMaintenanceBitMask_reserved6_oer_;
+extern const TTCN_Typedescriptor_t WorkingSetMaintenanceBitMask_reserved6_descr_;
+extern const XERdescriptor_t WorkingSetMaintenanceBitMask_reserved7_xer_;
+extern const TTCN_OERdescriptor_t WorkingSetMaintenanceBitMask_reserved7_oer_;
+extern const TTCN_Typedescriptor_t WorkingSetMaintenanceBitMask_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t WorkingSetMaintenanceBitMask_raw_;
+extern const TTCN_Typedescriptor_t WorkingSetMaintenanceBitMask_descr_;
+extern const TTCN_RAWdescriptor_t e__WorkingSetMaintenanceVersionNumber_raw_;
+extern const TTCN_Typedescriptor_t e__WorkingSetMaintenanceVersionNumber_descr_;
+extern const XERdescriptor_t LoadVersionReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t LoadVersionReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t LoadVersionReq_vtfunction_descr_;
+extern const XERdescriptor_t LoadVersionReq_versionLabel_xer_;
+extern const TTCN_Typedescriptor_t LoadVersionReq_versionLabel_descr_;
+extern const TTCN_RAWdescriptor_t LoadVersionReq_raw_;
+extern const TTCN_Typedescriptor_t LoadVersionReq_descr_;
+extern const XERdescriptor_t LoadVersionRes__errorCodesType_fileSystemErrorOrPoolDataCorruption_xer_;
+extern const TTCN_OERdescriptor_t LoadVersionRes__errorCodesType_fileSystemErrorOrPoolDataCorruption_oer_;
+extern const TTCN_Typedescriptor_t LoadVersionRes__errorCodesType_fileSystemErrorOrPoolDataCorruption_descr_;
+extern const XERdescriptor_t LoadVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabeUnknown_xer_;
+extern const TTCN_OERdescriptor_t LoadVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabeUnknown_oer_;
+extern const TTCN_Typedescriptor_t LoadVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabeUnknown_descr_;
+extern const XERdescriptor_t LoadVersionRes__errorCodesType_insufficientMemoryAvailable_xer_;
+extern const TTCN_OERdescriptor_t LoadVersionRes__errorCodesType_insufficientMemoryAvailable_oer_;
+extern const TTCN_Typedescriptor_t LoadVersionRes__errorCodesType_insufficientMemoryAvailable_descr_;
+extern const XERdescriptor_t LoadVersionRes__errorCodesType_anyOtherError_xer_;
+extern const TTCN_OERdescriptor_t LoadVersionRes__errorCodesType_anyOtherError_oer_;
+extern const TTCN_Typedescriptor_t LoadVersionRes__errorCodesType_anyOtherError_descr_;
+extern const XERdescriptor_t LoadVersionRes__errorCodesType_reserved5_xer_;
+extern const TTCN_OERdescriptor_t LoadVersionRes__errorCodesType_reserved5_oer_;
+extern const TTCN_Typedescriptor_t LoadVersionRes__errorCodesType_reserved5_descr_;
+extern const XERdescriptor_t LoadVersionRes__errorCodesType_reserved6_xer_;
+extern const TTCN_OERdescriptor_t LoadVersionRes__errorCodesType_reserved6_oer_;
+extern const TTCN_Typedescriptor_t LoadVersionRes__errorCodesType_reserved6_descr_;
+extern const XERdescriptor_t LoadVersionRes__errorCodesType_reserved7_xer_;
+extern const TTCN_OERdescriptor_t LoadVersionRes__errorCodesType_reserved7_oer_;
+extern const TTCN_Typedescriptor_t LoadVersionRes__errorCodesType_reserved7_descr_;
+extern const XERdescriptor_t LoadVersionRes__errorCodesType_reserved8_xer_;
+extern const TTCN_OERdescriptor_t LoadVersionRes__errorCodesType_reserved8_oer_;
+extern const TTCN_Typedescriptor_t LoadVersionRes__errorCodesType_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t LoadVersionRes__errorCodesType_raw_;
+extern const TTCN_Typedescriptor_t LoadVersionRes__errorCodesType_descr_;
+extern const XERdescriptor_t LoadVersionRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t LoadVersionRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t LoadVersionRes_vtfunction_descr_;
+extern const TTCN_RAWdescriptor_t LoadVersionRes_reserved2_raw_;
+extern const XERdescriptor_t LoadVersionRes_reserved2_xer_;
+extern const TTCN_OERdescriptor_t LoadVersionRes_reserved2_oer_;
+extern const TTCN_Typedescriptor_t LoadVersionRes_reserved2_descr_;
+extern const TTCN_RAWdescriptor_t LoadVersionRes_reserved3_raw_;
+extern const XERdescriptor_t LoadVersionRes_reserved3_xer_;
+extern const TTCN_OERdescriptor_t LoadVersionRes_reserved3_oer_;
+extern const TTCN_Typedescriptor_t LoadVersionRes_reserved3_descr_;
+extern const TTCN_RAWdescriptor_t LoadVersionRes_reserved4_raw_;
+extern const XERdescriptor_t LoadVersionRes_reserved4_xer_;
+extern const TTCN_OERdescriptor_t LoadVersionRes_reserved4_oer_;
+extern const TTCN_Typedescriptor_t LoadVersionRes_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t LoadVersionRes_reserved5_raw_;
+extern const XERdescriptor_t LoadVersionRes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t LoadVersionRes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t LoadVersionRes_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t LoadVersionRes_reserved7_raw_;
+extern const XERdescriptor_t LoadVersionRes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t LoadVersionRes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t LoadVersionRes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t LoadVersionRes_reserved8_raw_;
+extern const XERdescriptor_t LoadVersionRes_reserved8_xer_;
+extern const TTCN_OERdescriptor_t LoadVersionRes_reserved8_oer_;
+extern const TTCN_Typedescriptor_t LoadVersionRes_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t LoadVersionRes_raw_;
+extern const TTCN_Typedescriptor_t LoadVersionRes_descr_;
+extern const XERdescriptor_t DeleteVersionRes__errorCodesType_reserved0_xer_;
+extern const TTCN_OERdescriptor_t DeleteVersionRes__errorCodesType_reserved0_oer_;
+extern const TTCN_Typedescriptor_t DeleteVersionRes__errorCodesType_reserved0_descr_;
+extern const XERdescriptor_t DeleteVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabelUnknown_xer_;
+extern const TTCN_OERdescriptor_t DeleteVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabelUnknown_oer_;
+extern const TTCN_Typedescriptor_t DeleteVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabelUnknown_descr_;
+extern const XERdescriptor_t DeleteVersionRes__errorCodesType_reserved2_xer_;
+extern const TTCN_OERdescriptor_t DeleteVersionRes__errorCodesType_reserved2_oer_;
+extern const TTCN_Typedescriptor_t DeleteVersionRes__errorCodesType_reserved2_descr_;
+extern const XERdescriptor_t DeleteVersionRes__errorCodesType_anyOtherError_xer_;
+extern const TTCN_OERdescriptor_t DeleteVersionRes__errorCodesType_anyOtherError_oer_;
+extern const TTCN_Typedescriptor_t DeleteVersionRes__errorCodesType_anyOtherError_descr_;
+extern const XERdescriptor_t DeleteVersionRes__errorCodesType_reserved4_xer_;
+extern const TTCN_OERdescriptor_t DeleteVersionRes__errorCodesType_reserved4_oer_;
+extern const TTCN_Typedescriptor_t DeleteVersionRes__errorCodesType_reserved4_descr_;
+extern const XERdescriptor_t DeleteVersionRes__errorCodesType_reserved5_xer_;
+extern const TTCN_OERdescriptor_t DeleteVersionRes__errorCodesType_reserved5_oer_;
+extern const TTCN_Typedescriptor_t DeleteVersionRes__errorCodesType_reserved5_descr_;
+extern const XERdescriptor_t DeleteVersionRes__errorCodesType_reserved6_xer_;
+extern const TTCN_OERdescriptor_t DeleteVersionRes__errorCodesType_reserved6_oer_;
+extern const TTCN_Typedescriptor_t DeleteVersionRes__errorCodesType_reserved6_descr_;
+extern const XERdescriptor_t DeleteVersionRes__errorCodesType_reserved7_xer_;
+extern const TTCN_OERdescriptor_t DeleteVersionRes__errorCodesType_reserved7_oer_;
+extern const TTCN_Typedescriptor_t DeleteVersionRes__errorCodesType_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t DeleteVersionRes__errorCodesType_raw_;
+extern const TTCN_Typedescriptor_t DeleteVersionRes__errorCodesType_descr_;
+extern const XERdescriptor_t DeleteVersionRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t DeleteVersionRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t DeleteVersionRes_vtfunction_descr_;
+extern const TTCN_RAWdescriptor_t DeleteVersionRes_reserved2_raw_;
+extern const XERdescriptor_t DeleteVersionRes_reserved2_xer_;
+extern const TTCN_OERdescriptor_t DeleteVersionRes_reserved2_oer_;
+extern const TTCN_Typedescriptor_t DeleteVersionRes_reserved2_descr_;
+extern const TTCN_RAWdescriptor_t DeleteVersionRes_reserved3_raw_;
+extern const XERdescriptor_t DeleteVersionRes_reserved3_xer_;
+extern const TTCN_OERdescriptor_t DeleteVersionRes_reserved3_oer_;
+extern const TTCN_Typedescriptor_t DeleteVersionRes_reserved3_descr_;
+extern const TTCN_RAWdescriptor_t DeleteVersionRes_reserved4_raw_;
+extern const XERdescriptor_t DeleteVersionRes_reserved4_xer_;
+extern const TTCN_OERdescriptor_t DeleteVersionRes_reserved4_oer_;
+extern const TTCN_Typedescriptor_t DeleteVersionRes_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t DeleteVersionRes_reserved5_raw_;
+extern const XERdescriptor_t DeleteVersionRes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t DeleteVersionRes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t DeleteVersionRes_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t DeleteVersionRes_reserved7_raw_;
+extern const XERdescriptor_t DeleteVersionRes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t DeleteVersionRes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t DeleteVersionRes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t DeleteVersionRes_reserved8_raw_;
+extern const XERdescriptor_t DeleteVersionRes_reserved8_xer_;
+extern const TTCN_OERdescriptor_t DeleteVersionRes_reserved8_oer_;
+extern const TTCN_Typedescriptor_t DeleteVersionRes_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t DeleteVersionRes_raw_;
+extern const TTCN_Typedescriptor_t DeleteVersionRes_descr_;
+extern const XERdescriptor_t DeleteVersionReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t DeleteVersionReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t DeleteVersionReq_vtfunction_descr_;
+extern const XERdescriptor_t DeleteVersionReq_versionLabel_xer_;
+extern const TTCN_Typedescriptor_t DeleteVersionReq_versionLabel_descr_;
+extern const TTCN_RAWdescriptor_t DeleteVersionReq_raw_;
+extern const TTCN_Typedescriptor_t DeleteVersionReq_descr_;
+extern const XERdescriptor_t ExtendedGetVersionsRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ExtendedGetVersionsRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ExtendedGetVersionsRes_vtfunction_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedGetVersionsRes_numberOfVersionStrings_raw_;
+extern const XERdescriptor_t ExtendedGetVersionsRes_numberOfVersionStrings_xer_;
+extern const TTCN_OERdescriptor_t ExtendedGetVersionsRes_numberOfVersionStrings_oer_;
+extern const TTCN_Typedescriptor_t ExtendedGetVersionsRes_numberOfVersionStrings_descr_;
+extern const XERdescriptor_t ExtendedGetVersionsRes_versionLabels_xer_;
+extern const TTCN_OERdescriptor_t ExtendedGetVersionsRes_versionLabels_oer_;
+extern const TTCN_Typedescriptor_t ExtendedGetVersionsRes_versionLabels_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedGetVersionsRes_raw_;
+extern const TTCN_Typedescriptor_t ExtendedGetVersionsRes_descr_;
+extern const XERdescriptor_t ExtendedGetVersionsRes_padding_xer_;
+extern const TTCN_OERdescriptor_t ExtendedGetVersionsRes_padding_oer_;
+extern const TTCN_Typedescriptor_t ExtendedGetVersionsRes_padding_descr_;
+extern const XERdescriptor_t ExtendedGetVersionsReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ExtendedGetVersionsReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ExtendedGetVersionsReq_vtfunction_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedGetVersionsReq_reserved2_raw_;
+extern const XERdescriptor_t ExtendedGetVersionsReq_reserved2_xer_;
+extern const TTCN_OERdescriptor_t ExtendedGetVersionsReq_reserved2_oer_;
+extern const TTCN_Typedescriptor_t ExtendedGetVersionsReq_reserved2_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedGetVersionsReq_reserved3_raw_;
+extern const XERdescriptor_t ExtendedGetVersionsReq_reserved3_xer_;
+extern const TTCN_OERdescriptor_t ExtendedGetVersionsReq_reserved3_oer_;
+extern const TTCN_Typedescriptor_t ExtendedGetVersionsReq_reserved3_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedGetVersionsReq_reserved4_raw_;
+extern const XERdescriptor_t ExtendedGetVersionsReq_reserved4_xer_;
+extern const TTCN_OERdescriptor_t ExtendedGetVersionsReq_reserved4_oer_;
+extern const TTCN_Typedescriptor_t ExtendedGetVersionsReq_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedGetVersionsReq_reserved5_raw_;
+extern const XERdescriptor_t ExtendedGetVersionsReq_reserved5_xer_;
+extern const TTCN_OERdescriptor_t ExtendedGetVersionsReq_reserved5_oer_;
+extern const TTCN_Typedescriptor_t ExtendedGetVersionsReq_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedGetVersionsReq_reserved6_raw_;
+extern const XERdescriptor_t ExtendedGetVersionsReq_reserved6_xer_;
+extern const TTCN_OERdescriptor_t ExtendedGetVersionsReq_reserved6_oer_;
+extern const TTCN_Typedescriptor_t ExtendedGetVersionsReq_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedGetVersionsReq_reserved7_raw_;
+extern const XERdescriptor_t ExtendedGetVersionsReq_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ExtendedGetVersionsReq_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ExtendedGetVersionsReq_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedGetVersionsReq_reserved8_raw_;
+extern const XERdescriptor_t ExtendedGetVersionsReq_reserved8_xer_;
+extern const TTCN_OERdescriptor_t ExtendedGetVersionsReq_reserved8_oer_;
+extern const TTCN_Typedescriptor_t ExtendedGetVersionsReq_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedGetVersionsReq_raw_;
+extern const TTCN_Typedescriptor_t ExtendedGetVersionsReq_descr_;
+extern const XERdescriptor_t ExtendedStoreVersionRes__errorCodesType_reserved0_xer_;
+extern const TTCN_OERdescriptor_t ExtendedStoreVersionRes__errorCodesType_reserved0_oer_;
+extern const TTCN_Typedescriptor_t ExtendedStoreVersionRes__errorCodesType_reserved0_descr_;
+extern const XERdescriptor_t ExtendedStoreVersionRes__errorCodesType_versionLabelIsNotCorrect_xer_;
+extern const TTCN_OERdescriptor_t ExtendedStoreVersionRes__errorCodesType_versionLabelIsNotCorrect_oer_;
+extern const TTCN_Typedescriptor_t ExtendedStoreVersionRes__errorCodesType_versionLabelIsNotCorrect_descr_;
+extern const XERdescriptor_t ExtendedStoreVersionRes__errorCodesType_insufficientMemoryAvailable_xer_;
+extern const TTCN_OERdescriptor_t ExtendedStoreVersionRes__errorCodesType_insufficientMemoryAvailable_oer_;
+extern const TTCN_Typedescriptor_t ExtendedStoreVersionRes__errorCodesType_insufficientMemoryAvailable_descr_;
+extern const XERdescriptor_t ExtendedStoreVersionRes__errorCodesType_anyOtherError_xer_;
+extern const TTCN_OERdescriptor_t ExtendedStoreVersionRes__errorCodesType_anyOtherError_oer_;
+extern const TTCN_Typedescriptor_t ExtendedStoreVersionRes__errorCodesType_anyOtherError_descr_;
+extern const XERdescriptor_t ExtendedStoreVersionRes__errorCodesType_reserved4_xer_;
+extern const TTCN_OERdescriptor_t ExtendedStoreVersionRes__errorCodesType_reserved4_oer_;
+extern const TTCN_Typedescriptor_t ExtendedStoreVersionRes__errorCodesType_reserved4_descr_;
+extern const XERdescriptor_t ExtendedStoreVersionRes__errorCodesType_reserved5_xer_;
+extern const TTCN_OERdescriptor_t ExtendedStoreVersionRes__errorCodesType_reserved5_oer_;
+extern const TTCN_Typedescriptor_t ExtendedStoreVersionRes__errorCodesType_reserved5_descr_;
+extern const XERdescriptor_t ExtendedStoreVersionRes__errorCodesType_reserved6_xer_;
+extern const TTCN_OERdescriptor_t ExtendedStoreVersionRes__errorCodesType_reserved6_oer_;
+extern const TTCN_Typedescriptor_t ExtendedStoreVersionRes__errorCodesType_reserved6_descr_;
+extern const XERdescriptor_t ExtendedStoreVersionRes__errorCodesType_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ExtendedStoreVersionRes__errorCodesType_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ExtendedStoreVersionRes__errorCodesType_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedStoreVersionRes__errorCodesType_raw_;
+extern const TTCN_Typedescriptor_t ExtendedStoreVersionRes__errorCodesType_descr_;
+extern const XERdescriptor_t ExtendedStoreVersionRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ExtendedStoreVersionRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ExtendedStoreVersionRes_vtfunction_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedStoreVersionRes_reserved2_raw_;
+extern const XERdescriptor_t ExtendedStoreVersionRes_reserved2_xer_;
+extern const TTCN_OERdescriptor_t ExtendedStoreVersionRes_reserved2_oer_;
+extern const TTCN_Typedescriptor_t ExtendedStoreVersionRes_reserved2_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedStoreVersionRes_reserved3_raw_;
+extern const XERdescriptor_t ExtendedStoreVersionRes_reserved3_xer_;
+extern const TTCN_OERdescriptor_t ExtendedStoreVersionRes_reserved3_oer_;
+extern const TTCN_Typedescriptor_t ExtendedStoreVersionRes_reserved3_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedStoreVersionRes_reserved4_raw_;
+extern const XERdescriptor_t ExtendedStoreVersionRes_reserved4_xer_;
+extern const TTCN_OERdescriptor_t ExtendedStoreVersionRes_reserved4_oer_;
+extern const TTCN_Typedescriptor_t ExtendedStoreVersionRes_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedStoreVersionRes_reserved5_raw_;
+extern const XERdescriptor_t ExtendedStoreVersionRes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t ExtendedStoreVersionRes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t ExtendedStoreVersionRes_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedStoreVersionRes_reserved7_raw_;
+extern const XERdescriptor_t ExtendedStoreVersionRes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ExtendedStoreVersionRes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ExtendedStoreVersionRes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedStoreVersionRes_reserved8_raw_;
+extern const XERdescriptor_t ExtendedStoreVersionRes_reserved8_xer_;
+extern const TTCN_OERdescriptor_t ExtendedStoreVersionRes_reserved8_oer_;
+extern const TTCN_Typedescriptor_t ExtendedStoreVersionRes_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedStoreVersionRes_raw_;
+extern const TTCN_Typedescriptor_t ExtendedStoreVersionRes_descr_;
+extern const XERdescriptor_t ExtendedStoreVersionReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ExtendedStoreVersionReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ExtendedStoreVersionReq_vtfunction_descr_;
+extern const XERdescriptor_t ExtendedStoreVersionReq_versionLabel_xer_;
+extern const TTCN_OERdescriptor_t ExtendedStoreVersionReq_versionLabel_oer_;
+extern const TTCN_Typedescriptor_t ExtendedStoreVersionReq_versionLabel_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedStoreVersionReq_raw_;
+extern const TTCN_Typedescriptor_t ExtendedStoreVersionReq_descr_;
+extern const XERdescriptor_t ExtendedLoadVersionRes__errorCodesType_fileSystemErrorOrPoolDataCorruption_xer_;
+extern const TTCN_OERdescriptor_t ExtendedLoadVersionRes__errorCodesType_fileSystemErrorOrPoolDataCorruption_oer_;
+extern const TTCN_Typedescriptor_t ExtendedLoadVersionRes__errorCodesType_fileSystemErrorOrPoolDataCorruption_descr_;
+extern const XERdescriptor_t ExtendedLoadVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabelUnknown_xer_;
+extern const TTCN_OERdescriptor_t ExtendedLoadVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabelUnknown_oer_;
+extern const TTCN_Typedescriptor_t ExtendedLoadVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabelUnknown_descr_;
+extern const XERdescriptor_t ExtendedLoadVersionRes__errorCodesType_insufficientMemoryAvailable_xer_;
+extern const TTCN_OERdescriptor_t ExtendedLoadVersionRes__errorCodesType_insufficientMemoryAvailable_oer_;
+extern const TTCN_Typedescriptor_t ExtendedLoadVersionRes__errorCodesType_insufficientMemoryAvailable_descr_;
+extern const XERdescriptor_t ExtendedLoadVersionRes__errorCodesType_anyOtherError_xer_;
+extern const TTCN_OERdescriptor_t ExtendedLoadVersionRes__errorCodesType_anyOtherError_oer_;
+extern const TTCN_Typedescriptor_t ExtendedLoadVersionRes__errorCodesType_anyOtherError_descr_;
+extern const XERdescriptor_t ExtendedLoadVersionRes__errorCodesType_reserved4_xer_;
+extern const TTCN_OERdescriptor_t ExtendedLoadVersionRes__errorCodesType_reserved4_oer_;
+extern const TTCN_Typedescriptor_t ExtendedLoadVersionRes__errorCodesType_reserved4_descr_;
+extern const XERdescriptor_t ExtendedLoadVersionRes__errorCodesType_reserved5_xer_;
+extern const TTCN_OERdescriptor_t ExtendedLoadVersionRes__errorCodesType_reserved5_oer_;
+extern const TTCN_Typedescriptor_t ExtendedLoadVersionRes__errorCodesType_reserved5_descr_;
+extern const XERdescriptor_t ExtendedLoadVersionRes__errorCodesType_reserved6_xer_;
+extern const TTCN_OERdescriptor_t ExtendedLoadVersionRes__errorCodesType_reserved6_oer_;
+extern const TTCN_Typedescriptor_t ExtendedLoadVersionRes__errorCodesType_reserved6_descr_;
+extern const XERdescriptor_t ExtendedLoadVersionRes__errorCodesType_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ExtendedLoadVersionRes__errorCodesType_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ExtendedLoadVersionRes__errorCodesType_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedLoadVersionRes__errorCodesType_raw_;
+extern const TTCN_Typedescriptor_t ExtendedLoadVersionRes__errorCodesType_descr_;
+extern const XERdescriptor_t ExtendedLoadVersionRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ExtendedLoadVersionRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ExtendedLoadVersionRes_vtfunction_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedLoadVersionRes_reserved2_raw_;
+extern const XERdescriptor_t ExtendedLoadVersionRes_reserved2_xer_;
+extern const TTCN_OERdescriptor_t ExtendedLoadVersionRes_reserved2_oer_;
+extern const TTCN_Typedescriptor_t ExtendedLoadVersionRes_reserved2_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedLoadVersionRes_reserved3_raw_;
+extern const XERdescriptor_t ExtendedLoadVersionRes_reserved3_xer_;
+extern const TTCN_OERdescriptor_t ExtendedLoadVersionRes_reserved3_oer_;
+extern const TTCN_Typedescriptor_t ExtendedLoadVersionRes_reserved3_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedLoadVersionRes_reserved4_raw_;
+extern const XERdescriptor_t ExtendedLoadVersionRes_reserved4_xer_;
+extern const TTCN_OERdescriptor_t ExtendedLoadVersionRes_reserved4_oer_;
+extern const TTCN_Typedescriptor_t ExtendedLoadVersionRes_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedLoadVersionRes_reserved5_raw_;
+extern const XERdescriptor_t ExtendedLoadVersionRes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t ExtendedLoadVersionRes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t ExtendedLoadVersionRes_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedLoadVersionRes_reserved7_raw_;
+extern const XERdescriptor_t ExtendedLoadVersionRes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ExtendedLoadVersionRes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ExtendedLoadVersionRes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedLoadVersionRes_reserved8_raw_;
+extern const XERdescriptor_t ExtendedLoadVersionRes_reserved8_xer_;
+extern const TTCN_OERdescriptor_t ExtendedLoadVersionRes_reserved8_oer_;
+extern const TTCN_Typedescriptor_t ExtendedLoadVersionRes_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedLoadVersionRes_raw_;
+extern const TTCN_Typedescriptor_t ExtendedLoadVersionRes_descr_;
+extern const XERdescriptor_t ExtendedLoadVersionReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ExtendedLoadVersionReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ExtendedLoadVersionReq_vtfunction_descr_;
+extern const XERdescriptor_t ExtendedLoadVersionReq_versionLabel_xer_;
+extern const TTCN_OERdescriptor_t ExtendedLoadVersionReq_versionLabel_oer_;
+extern const TTCN_Typedescriptor_t ExtendedLoadVersionReq_versionLabel_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedLoadVersionReq_raw_;
+extern const TTCN_Typedescriptor_t ExtendedLoadVersionReq_descr_;
+extern const XERdescriptor_t ExtendedDeleteVersionRes__errorCodesType_reserved0_xer_;
+extern const TTCN_OERdescriptor_t ExtendedDeleteVersionRes__errorCodesType_reserved0_oer_;
+extern const TTCN_Typedescriptor_t ExtendedDeleteVersionRes__errorCodesType_reserved0_descr_;
+extern const XERdescriptor_t ExtendedDeleteVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabelUnknown_xer_;
+extern const TTCN_OERdescriptor_t ExtendedDeleteVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabelUnknown_oer_;
+extern const TTCN_Typedescriptor_t ExtendedDeleteVersionRes__errorCodesType_versionLabelIsNotCorrectOrVersionLabelUnknown_descr_;
+extern const XERdescriptor_t ExtendedDeleteVersionRes__errorCodesType_reserved2_xer_;
+extern const TTCN_OERdescriptor_t ExtendedDeleteVersionRes__errorCodesType_reserved2_oer_;
+extern const TTCN_Typedescriptor_t ExtendedDeleteVersionRes__errorCodesType_reserved2_descr_;
+extern const XERdescriptor_t ExtendedDeleteVersionRes__errorCodesType_anyOtherError_xer_;
+extern const TTCN_OERdescriptor_t ExtendedDeleteVersionRes__errorCodesType_anyOtherError_oer_;
+extern const TTCN_Typedescriptor_t ExtendedDeleteVersionRes__errorCodesType_anyOtherError_descr_;
+extern const XERdescriptor_t ExtendedDeleteVersionRes__errorCodesType_reserved4_xer_;
+extern const TTCN_OERdescriptor_t ExtendedDeleteVersionRes__errorCodesType_reserved4_oer_;
+extern const TTCN_Typedescriptor_t ExtendedDeleteVersionRes__errorCodesType_reserved4_descr_;
+extern const XERdescriptor_t ExtendedDeleteVersionRes__errorCodesType_reserved5_xer_;
+extern const TTCN_OERdescriptor_t ExtendedDeleteVersionRes__errorCodesType_reserved5_oer_;
+extern const TTCN_Typedescriptor_t ExtendedDeleteVersionRes__errorCodesType_reserved5_descr_;
+extern const XERdescriptor_t ExtendedDeleteVersionRes__errorCodesType_reserved6_xer_;
+extern const TTCN_OERdescriptor_t ExtendedDeleteVersionRes__errorCodesType_reserved6_oer_;
+extern const TTCN_Typedescriptor_t ExtendedDeleteVersionRes__errorCodesType_reserved6_descr_;
+extern const XERdescriptor_t ExtendedDeleteVersionRes__errorCodesType_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ExtendedDeleteVersionRes__errorCodesType_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ExtendedDeleteVersionRes__errorCodesType_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedDeleteVersionRes__errorCodesType_raw_;
+extern const TTCN_Typedescriptor_t ExtendedDeleteVersionRes__errorCodesType_descr_;
+extern const XERdescriptor_t ExtendedDeleteVersionRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ExtendedDeleteVersionRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ExtendedDeleteVersionRes_vtfunction_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedDeleteVersionRes_reserved2_raw_;
+extern const XERdescriptor_t ExtendedDeleteVersionRes_reserved2_xer_;
+extern const TTCN_OERdescriptor_t ExtendedDeleteVersionRes_reserved2_oer_;
+extern const TTCN_Typedescriptor_t ExtendedDeleteVersionRes_reserved2_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedDeleteVersionRes_reserved3_raw_;
+extern const XERdescriptor_t ExtendedDeleteVersionRes_reserved3_xer_;
+extern const TTCN_OERdescriptor_t ExtendedDeleteVersionRes_reserved3_oer_;
+extern const TTCN_Typedescriptor_t ExtendedDeleteVersionRes_reserved3_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedDeleteVersionRes_reserved4_raw_;
+extern const XERdescriptor_t ExtendedDeleteVersionRes_reserved4_xer_;
+extern const TTCN_OERdescriptor_t ExtendedDeleteVersionRes_reserved4_oer_;
+extern const TTCN_Typedescriptor_t ExtendedDeleteVersionRes_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedDeleteVersionRes_reserved5_raw_;
+extern const XERdescriptor_t ExtendedDeleteVersionRes_reserved5_xer_;
+extern const TTCN_OERdescriptor_t ExtendedDeleteVersionRes_reserved5_oer_;
+extern const TTCN_Typedescriptor_t ExtendedDeleteVersionRes_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedDeleteVersionRes_reserved7_raw_;
+extern const XERdescriptor_t ExtendedDeleteVersionRes_reserved7_xer_;
+extern const TTCN_OERdescriptor_t ExtendedDeleteVersionRes_reserved7_oer_;
+extern const TTCN_Typedescriptor_t ExtendedDeleteVersionRes_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedDeleteVersionRes_reserved8_raw_;
+extern const XERdescriptor_t ExtendedDeleteVersionRes_reserved8_xer_;
+extern const TTCN_OERdescriptor_t ExtendedDeleteVersionRes_reserved8_oer_;
+extern const TTCN_Typedescriptor_t ExtendedDeleteVersionRes_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedDeleteVersionRes_raw_;
+extern const TTCN_Typedescriptor_t ExtendedDeleteVersionRes_descr_;
+extern const XERdescriptor_t ExtendedDeleteVersionReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t ExtendedDeleteVersionReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t ExtendedDeleteVersionReq_vtfunction_descr_;
+extern const XERdescriptor_t ExtendedDeleteVersionReq_versionLabel_xer_;
+extern const TTCN_OERdescriptor_t ExtendedDeleteVersionReq_versionLabel_oer_;
+extern const TTCN_Typedescriptor_t ExtendedDeleteVersionReq_versionLabel_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedDeleteVersionReq_raw_;
+extern const TTCN_Typedescriptor_t ExtendedDeleteVersionReq_descr_;
+extern const XERdescriptor_t GetVersionsReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t GetVersionsReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t GetVersionsReq_vtfunction_descr_;
+extern const TTCN_RAWdescriptor_t GetVersionsReq_reserved2_raw_;
+extern const XERdescriptor_t GetVersionsReq_reserved2_xer_;
+extern const TTCN_OERdescriptor_t GetVersionsReq_reserved2_oer_;
+extern const TTCN_Typedescriptor_t GetVersionsReq_reserved2_descr_;
+extern const TTCN_RAWdescriptor_t GetVersionsReq_reserved3_raw_;
+extern const XERdescriptor_t GetVersionsReq_reserved3_xer_;
+extern const TTCN_OERdescriptor_t GetVersionsReq_reserved3_oer_;
+extern const TTCN_Typedescriptor_t GetVersionsReq_reserved3_descr_;
+extern const TTCN_RAWdescriptor_t GetVersionsReq_reserved4_raw_;
+extern const XERdescriptor_t GetVersionsReq_reserved4_xer_;
+extern const TTCN_OERdescriptor_t GetVersionsReq_reserved4_oer_;
+extern const TTCN_Typedescriptor_t GetVersionsReq_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t GetVersionsReq_reserved5_raw_;
+extern const XERdescriptor_t GetVersionsReq_reserved5_xer_;
+extern const TTCN_OERdescriptor_t GetVersionsReq_reserved5_oer_;
+extern const TTCN_Typedescriptor_t GetVersionsReq_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t GetVersionsReq_reserved6_raw_;
+extern const XERdescriptor_t GetVersionsReq_reserved6_xer_;
+extern const TTCN_OERdescriptor_t GetVersionsReq_reserved6_oer_;
+extern const TTCN_Typedescriptor_t GetVersionsReq_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t GetVersionsReq_reserved7_raw_;
+extern const XERdescriptor_t GetVersionsReq_reserved7_xer_;
+extern const TTCN_OERdescriptor_t GetVersionsReq_reserved7_oer_;
+extern const TTCN_Typedescriptor_t GetVersionsReq_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t GetVersionsReq_reserved8_raw_;
+extern const XERdescriptor_t GetVersionsReq_reserved8_xer_;
+extern const TTCN_OERdescriptor_t GetVersionsReq_reserved8_oer_;
+extern const TTCN_Typedescriptor_t GetVersionsReq_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t GetVersionsReq_raw_;
+extern const TTCN_Typedescriptor_t GetVersionsReq_descr_;
+extern const XERdescriptor_t GetVersionsRes_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t GetVersionsRes_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t GetVersionsRes_vtfunction_descr_;
+extern const TTCN_RAWdescriptor_t GetVersionsRes_numberOfVersionStrings_raw_;
+extern const XERdescriptor_t GetVersionsRes_numberOfVersionStrings_xer_;
+extern const TTCN_OERdescriptor_t GetVersionsRes_numberOfVersionStrings_oer_;
+extern const TTCN_Typedescriptor_t GetVersionsRes_numberOfVersionStrings_descr_;
+extern const XERdescriptor_t GetVersionsRes_versionStrings_xer_;
+extern const TTCN_Typedescriptor_t GetVersionsRes_versionStrings_descr_;
+extern const TTCN_RAWdescriptor_t GetVersionsRes_raw_;
+extern const TTCN_Typedescriptor_t GetVersionsRes_descr_;
+extern const XERdescriptor_t VTUnsupportedVTFunctionInd_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t VTUnsupportedVTFunctionInd_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t VTUnsupportedVTFunctionInd_vtfunction_descr_;
+extern const XERdescriptor_t VTUnsupportedVTFunctionInd_unsupportedVTfunction_xer_;
+extern const TTCN_OERdescriptor_t VTUnsupportedVTFunctionInd_unsupportedVTfunction_oer_;
+extern const TTCN_Typedescriptor_t VTUnsupportedVTFunctionInd_unsupportedVTfunction_descr_;
+extern const TTCN_RAWdescriptor_t VTUnsupportedVTFunctionInd_reserved3_raw_;
+extern const XERdescriptor_t VTUnsupportedVTFunctionInd_reserved3_xer_;
+extern const TTCN_OERdescriptor_t VTUnsupportedVTFunctionInd_reserved3_oer_;
+extern const TTCN_Typedescriptor_t VTUnsupportedVTFunctionInd_reserved3_descr_;
+extern const TTCN_RAWdescriptor_t VTUnsupportedVTFunctionInd_reserved4_raw_;
+extern const XERdescriptor_t VTUnsupportedVTFunctionInd_reserved4_xer_;
+extern const TTCN_OERdescriptor_t VTUnsupportedVTFunctionInd_reserved4_oer_;
+extern const TTCN_Typedescriptor_t VTUnsupportedVTFunctionInd_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t VTUnsupportedVTFunctionInd_reserved5_raw_;
+extern const XERdescriptor_t VTUnsupportedVTFunctionInd_reserved5_xer_;
+extern const TTCN_OERdescriptor_t VTUnsupportedVTFunctionInd_reserved5_oer_;
+extern const TTCN_Typedescriptor_t VTUnsupportedVTFunctionInd_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t VTUnsupportedVTFunctionInd_reserved6_raw_;
+extern const XERdescriptor_t VTUnsupportedVTFunctionInd_reserved6_xer_;
+extern const TTCN_OERdescriptor_t VTUnsupportedVTFunctionInd_reserved6_oer_;
+extern const TTCN_Typedescriptor_t VTUnsupportedVTFunctionInd_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t VTUnsupportedVTFunctionInd_reserved7_raw_;
+extern const XERdescriptor_t VTUnsupportedVTFunctionInd_reserved7_xer_;
+extern const TTCN_OERdescriptor_t VTUnsupportedVTFunctionInd_reserved7_oer_;
+extern const TTCN_Typedescriptor_t VTUnsupportedVTFunctionInd_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t VTUnsupportedVTFunctionInd_reserved8_raw_;
+extern const XERdescriptor_t VTUnsupportedVTFunctionInd_reserved8_xer_;
+extern const TTCN_OERdescriptor_t VTUnsupportedVTFunctionInd_reserved8_oer_;
+extern const TTCN_Typedescriptor_t VTUnsupportedVTFunctionInd_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t VTUnsupportedVTFunctionInd_raw_;
+extern const TTCN_Typedescriptor_t VTUnsupportedVTFunctionInd_descr_;
+extern const XERdescriptor_t UnsupportedVTFunctionInd_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t UnsupportedVTFunctionInd_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t UnsupportedVTFunctionInd_vtfunction_descr_;
+extern const XERdescriptor_t UnsupportedVTFunctionInd_unsupportedVTfunction_xer_;
+extern const TTCN_OERdescriptor_t UnsupportedVTFunctionInd_unsupportedVTfunction_oer_;
+extern const TTCN_Typedescriptor_t UnsupportedVTFunctionInd_unsupportedVTfunction_descr_;
+extern const TTCN_RAWdescriptor_t UnsupportedVTFunctionInd_reserved3_raw_;
+extern const XERdescriptor_t UnsupportedVTFunctionInd_reserved3_xer_;
+extern const TTCN_OERdescriptor_t UnsupportedVTFunctionInd_reserved3_oer_;
+extern const TTCN_Typedescriptor_t UnsupportedVTFunctionInd_reserved3_descr_;
+extern const TTCN_RAWdescriptor_t UnsupportedVTFunctionInd_reserved4_raw_;
+extern const XERdescriptor_t UnsupportedVTFunctionInd_reserved4_xer_;
+extern const TTCN_OERdescriptor_t UnsupportedVTFunctionInd_reserved4_oer_;
+extern const TTCN_Typedescriptor_t UnsupportedVTFunctionInd_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t UnsupportedVTFunctionInd_reserved5_raw_;
+extern const XERdescriptor_t UnsupportedVTFunctionInd_reserved5_xer_;
+extern const TTCN_OERdescriptor_t UnsupportedVTFunctionInd_reserved5_oer_;
+extern const TTCN_Typedescriptor_t UnsupportedVTFunctionInd_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t UnsupportedVTFunctionInd_reserved6_raw_;
+extern const XERdescriptor_t UnsupportedVTFunctionInd_reserved6_xer_;
+extern const TTCN_OERdescriptor_t UnsupportedVTFunctionInd_reserved6_oer_;
+extern const TTCN_Typedescriptor_t UnsupportedVTFunctionInd_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t UnsupportedVTFunctionInd_reserved7_raw_;
+extern const XERdescriptor_t UnsupportedVTFunctionInd_reserved7_xer_;
+extern const TTCN_OERdescriptor_t UnsupportedVTFunctionInd_reserved7_oer_;
+extern const TTCN_Typedescriptor_t UnsupportedVTFunctionInd_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t UnsupportedVTFunctionInd_reserved8_raw_;
+extern const XERdescriptor_t UnsupportedVTFunctionInd_reserved8_xer_;
+extern const TTCN_OERdescriptor_t UnsupportedVTFunctionInd_reserved8_oer_;
+extern const TTCN_Typedescriptor_t UnsupportedVTFunctionInd_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t UnsupportedVTFunctionInd_raw_;
+extern const TTCN_Typedescriptor_t UnsupportedVTFunctionInd_descr_;
+extern const XERdescriptor_t WorkingSetMaintenanceReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t WorkingSetMaintenanceReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t WorkingSetMaintenanceReq_vtfunction_descr_;
+extern const TTCN_RAWdescriptor_t WorkingSetMaintenanceReq_reserved4_raw_;
+extern const XERdescriptor_t WorkingSetMaintenanceReq_reserved4_xer_;
+extern const TTCN_OERdescriptor_t WorkingSetMaintenanceReq_reserved4_oer_;
+extern const TTCN_Typedescriptor_t WorkingSetMaintenanceReq_reserved4_descr_;
+extern const TTCN_RAWdescriptor_t WorkingSetMaintenanceReq_reserved5_raw_;
+extern const XERdescriptor_t WorkingSetMaintenanceReq_reserved5_xer_;
+extern const TTCN_OERdescriptor_t WorkingSetMaintenanceReq_reserved5_oer_;
+extern const TTCN_Typedescriptor_t WorkingSetMaintenanceReq_reserved5_descr_;
+extern const TTCN_RAWdescriptor_t WorkingSetMaintenanceReq_reserved6_raw_;
+extern const XERdescriptor_t WorkingSetMaintenanceReq_reserved6_xer_;
+extern const TTCN_OERdescriptor_t WorkingSetMaintenanceReq_reserved6_oer_;
+extern const TTCN_Typedescriptor_t WorkingSetMaintenanceReq_reserved6_descr_;
+extern const TTCN_RAWdescriptor_t WorkingSetMaintenanceReq_reserved7_raw_;
+extern const XERdescriptor_t WorkingSetMaintenanceReq_reserved7_xer_;
+extern const TTCN_OERdescriptor_t WorkingSetMaintenanceReq_reserved7_oer_;
+extern const TTCN_Typedescriptor_t WorkingSetMaintenanceReq_reserved7_descr_;
+extern const TTCN_RAWdescriptor_t WorkingSetMaintenanceReq_reserved8_raw_;
+extern const XERdescriptor_t WorkingSetMaintenanceReq_reserved8_xer_;
+extern const TTCN_OERdescriptor_t WorkingSetMaintenanceReq_reserved8_oer_;
+extern const TTCN_Typedescriptor_t WorkingSetMaintenanceReq_reserved8_descr_;
+extern const TTCN_RAWdescriptor_t WorkingSetMaintenanceReq_raw_;
+extern const TTCN_Typedescriptor_t WorkingSetMaintenanceReq_descr_;
+extern const TTCN_RAWdescriptor_t e__BusyCodes_raw_;
+extern const TTCN_Typedescriptor_t e__BusyCodes_descr_;
+extern const XERdescriptor_t VTStatusReq_vtfunction_xer_;
+extern const TTCN_OERdescriptor_t VTStatusReq_vtfunction_oer_;
+extern const TTCN_Typedescriptor_t VTStatusReq_vtfunction_descr_;
+extern const XERdescriptor_t VTStatusReq_sourceAddressOfActiveWorkingSetMaster_xer_;
+extern const TTCN_OERdescriptor_t VTStatusReq_sourceAddressOfActiveWorkingSetMaster_oer_;
+extern const TTCN_Typedescriptor_t VTStatusReq_sourceAddressOfActiveWorkingSetMaster_descr_;
+extern const XERdescriptor_t VTStatusReq_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet_xer_;
+extern const TTCN_OERdescriptor_t VTStatusReq_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet_oer_;
+extern const TTCN_Typedescriptor_t VTStatusReq_objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet_descr_;
+extern const XERdescriptor_t VTStatusReq_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet_xer_;
+extern const TTCN_OERdescriptor_t VTStatusReq_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet_oer_;
+extern const TTCN_Typedescriptor_t VTStatusReq_objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet_descr_;
+extern const XERdescriptor_t VTStatusReq_vtFunctionCode_xer_;
+extern const TTCN_OERdescriptor_t VTStatusReq_vtFunctionCode_oer_;
+extern const TTCN_Typedescriptor_t VTStatusReq_vtFunctionCode_descr_;
+extern const TTCN_RAWdescriptor_t VTStatusReq_raw_;
+extern const TTCN_Typedescriptor_t VTStatusReq_descr_;
+extern const TTCN_RAWdescriptor_t VT2ECU_raw_;
+extern const TTCN_Typedescriptor_t VT2ECU_descr_;
+extern const TTCN_RAWdescriptor_t ECU2VT_raw_;
+extern const TTCN_Typedescriptor_t ECU2VT_descr_;
+extern TTCN_Module module_object;
+
+} /* end of namespace */
+
+#endif
diff --git a/demo/IsobusVTMessageTypes.o b/demo/IsobusVTMessageTypes.o
new file mode 100644
index 0000000..67078ad
--- /dev/null
+++ b/demo/IsobusVTMessageTypes.o
Binary files differ
diff --git a/demo/Isobus_Templates.cc b/demo/Isobus_Templates.cc
new file mode 100644
index 0000000..c3497eb
--- /dev/null
+++ b/demo/Isobus_Templates.cc
@@ -0,0 +1,506 @@
+// This C++ source file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+/* Including header files */
+
+#include "Isobus_Templates.hh"
+
+namespace Isobus__Templates {
+
+/* Prototypes of static functions */
+
+static void pre_init_module();
+static void post_init_module();
+
+/* Literal string constants */
+
+static const unsigned char os_0_octets[] = { 255 };
+static const OCTETSTRING os_0(1, os_0_octets);
+static const unsigned char module_checksum[] = { 0xf6, 0xc6, 0x13, 0x4e, 0x7a, 0x8d, 0x0e, 0x01, 0x3e, 0x61, 0xab, 0xd4, 0xb7, 0x99, 0xf2, 0xe9 };
+
+/* Global variable definitions */
+
+TTCN_Module module_object("Isobus_Templates", __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);
+
+static const RuntimeVersionChecker ver_checker(  current_runtime_version.requires_major_version_6,
+  current_runtime_version.requires_minor_version_6,
+  current_runtime_version.requires_patch_level_0,  current_runtime_version.requires_runtime_1);
+
+/* Bodies of functions, altsteps and testcases */
+
+Isobus::CAN__frame__j1939_template t__message(const BITSTRING& prio__param, const BITSTRING& res__param, const BITSTRING& dp__param, const OCTETSTRING& pf__param, const OCTETSTRING& ps__param, const OCTETSTRING& sa__param, const Isobus::AnyIsoBusPdu_template& t__can__pdu)
+{
+TTCN_Location current_location("Isobus_Templates.ttcn", 10, TTCN_Location::LOCATION_TEMPLATE, "t_message");
+Isobus::CAN__frame__j1939_template ret_val;
+{
+Isobus::J1939_template& tmp_0 = ret_val.can__j1939();
+tmp_0.prio() = prio__param;
+tmp_0.res() = res__param;
+tmp_0.dp() = dp__param;
+tmp_0.pf() = pf__param;
+tmp_0.ps() = ps__param;
+tmp_0.sa() = sa__param;
+}
+ret_val.can__pdu() = t__can__pdu;
+return ret_val;
+}
+
+Isobus::CAN__frame__j1939_template t__network__message(const BITSTRING& prio__param, const BITSTRING& res__param, const BITSTRING& dp__param, const OCTETSTRING& pf__param, const OCTETSTRING& ps__param, const OCTETSTRING& sa__param, const IsobusNMMessageTypes::NetworkMessage_template& t__networkMessage)
+{
+TTCN_Location current_location("Isobus_Templates.ttcn", 22, TTCN_Location::LOCATION_TEMPLATE, "t_network_message");
+Isobus::CAN__frame__j1939_template ret_val;
+{
+Isobus::J1939_template& tmp_1 = ret_val.can__j1939();
+tmp_1.prio() = prio__param;
+tmp_1.res() = res__param;
+tmp_1.dp() = dp__param;
+tmp_1.pf() = pf__param;
+tmp_1.ps() = ps__param;
+tmp_1.sa() = sa__param;
+}
+ret_val.can__pdu().networkMessage() = t__networkMessage;
+return ret_val;
+}
+
+IsobusVTMessageTypes::ECU2VT_template t__GetMemoryReqX(const INTEGER& p__memoryRequired)
+{
+TTCN_Location current_location("Isobus_Templates.ttcn", 34, TTCN_Location::LOCATION_TEMPLATE, "t_GetMemoryReqX");
+IsobusVTMessageTypes::ECU2VT_template ret_val;
+{
+IsobusVTMessageTypes::GetMemoryReq_template& tmp_2 = ret_val.getMemoryReq();
+tmp_2.vtfunction() = 194;
+tmp_2.reserved2() = os_0;
+tmp_2.memoryRequired() = p__memoryRequired;
+tmp_2.reserved7() = os_0;
+tmp_2.reserved8() = os_0;
+}
+return ret_val;
+}
+
+Isobus::AnyIsoBusPdu_template t__ecu2vt(const IsobusVTMessageTypes::ECU2VT_template& t__Message)
+{
+TTCN_Location current_location("Isobus_Templates.ttcn", 44, TTCN_Location::LOCATION_TEMPLATE, "t_ecu2vt");
+Isobus::AnyIsoBusPdu_template ret_val;
+ret_val.ecu2vt() = t__Message;
+return ret_val;
+}
+
+Isobus::AnyIsoBusPdu_template t__vt2ecu(const IsobusVTMessageTypes::VT2ECU_template& t__Message)
+{
+TTCN_Location current_location("Isobus_Templates.ttcn", 48, TTCN_Location::LOCATION_TEMPLATE, "t_vt2ecu");
+Isobus::AnyIsoBusPdu_template ret_val;
+ret_val.vt2ecu() = t__Message;
+return ret_val;
+}
+
+Isobus::AnyIsoBusPdu_template t__GetMemoryReq__pdu(const INTEGER& p__memoryRequired)
+{
+TTCN_Location current_location("Isobus_Templates.ttcn", 52, TTCN_Location::LOCATION_TEMPLATE, "t_GetMemoryReq_pdu");
+Isobus::AnyIsoBusPdu_template ret_val;
+ret_val.ecu2vt().getMemoryReq() = t__GetMemoryReq(p__memoryRequired);
+return ret_val;
+}
+
+IsobusVTMessageTypes::ButtonActivationReq_template t__ButtonActivationReq(const IsobusVTMessageTypes::e__ButtonActivationReq__KeyAactivationCode_template& p__keyAactivationCode, const INTEGER_template& p__objectID, const INTEGER_template& p__parentObjectID, const INTEGER_template& p__buttonKeyCode)
+{
+TTCN_Location current_location("Isobus_Templates.ttcn", 57, TTCN_Location::LOCATION_TEMPLATE, "t_ButtonActivationReq");
+IsobusVTMessageTypes::ButtonActivationReq_template ret_val;
+ret_val.vtfunction() = 1;
+ret_val.keyAactivationCode() = p__keyAactivationCode;
+ret_val.objectID() = p__objectID;
+ret_val.parentObjectID() = p__parentObjectID;
+ret_val.buttonKeyCode() = p__buttonKeyCode;
+ret_val.reserved8() = os_0;
+return ret_val;
+}
+
+IsobusVTMessageTypes::ButtonActivationRes_template t__ButtonActivationRes(const IsobusVTMessageTypes::e__ButtonActivationRes__KeyAactivationCode_template& p__keyAactivationCode, const INTEGER_template& p__objectID, const INTEGER_template& p__parentObjectID, const INTEGER_template& p__buttonKeyCode)
+{
+TTCN_Location current_location("Isobus_Templates.ttcn", 70, TTCN_Location::LOCATION_TEMPLATE, "t_ButtonActivationRes");
+IsobusVTMessageTypes::ButtonActivationRes_template ret_val;
+ret_val.vtfunction() = 1;
+ret_val.keyAactivationCode() = p__keyAactivationCode;
+ret_val.objectID() = p__objectID;
+ret_val.parentObjectID() = p__parentObjectID;
+ret_val.buttonKeyCode() = p__buttonKeyCode;
+ret_val.reserved8() = os_0;
+return ret_val;
+}
+
+IsobusVTMessageTypes::PointingEventReq_template t__PointingEventReq(const INTEGER_template& p__x__position, const INTEGER_template& p__y__position, const IsobusVTMessageTypes::e__PointingEvent__touchState_template& p__touchState)
+{
+TTCN_Location current_location("Isobus_Templates.ttcn", 84, TTCN_Location::LOCATION_TEMPLATE, "t_PointingEventReq");
+IsobusVTMessageTypes::PointingEventReq_template ret_val;
+ret_val.vtfunction() = 2;
+ret_val.x__position() = p__x__position;
+ret_val.y__position() = p__y__position;
+ret_val.touchState() = p__touchState;
+ret_val.reserved7() = os_0;
+ret_val.reserved8() = os_0;
+return ret_val;
+}
+
+IsobusVTMessageTypes::PointingEventRes_template t__PointingEventRes(const INTEGER_template& p__x__position, const INTEGER_template& p__y__position, const IsobusVTMessageTypes::e__PointingEvent__touchState_template& p__touchState)
+{
+TTCN_Location current_location("Isobus_Templates.ttcn", 96, TTCN_Location::LOCATION_TEMPLATE, "t_PointingEventRes");
+IsobusVTMessageTypes::PointingEventRes_template ret_val;
+ret_val.vtfunction() = 2;
+ret_val.x__position() = p__x__position;
+ret_val.y__position() = p__y__position;
+ret_val.touchState() = p__touchState;
+ret_val.reserved7() = os_0;
+ret_val.reserved8() = os_0;
+return ret_val;
+}
+
+IsobusVTMessageTypes::VTSelectInputObjectReq_template t__VTSelectInputObjectReq(const INTEGER_template& p__objectID, const IsobusVTMessageTypes::e__VTSelectInputObject__selection_template& p__selection, const BOOLEAN_template& p__objectIsOpenForDataInput, const BOOLEAN_template& p__reserved)
+{
+TTCN_Location current_location("Isobus_Templates.ttcn", 108, TTCN_Location::LOCATION_TEMPLATE, "t_VTSelectInputObjectReq");
+IsobusVTMessageTypes::VTSelectInputObjectReq_template ret_val;
+ret_val.vtfunction() = 3;
+ret_val.objectID() = p__objectID;
+ret_val.selection() = p__selection;
+{
+IsobusVTMessageTypes::VTSelectInputObject__Bitmask_template& tmp_3 = ret_val.bitmask();
+tmp_3.objectIsOpenForDataInput() = p__objectIsOpenForDataInput;
+tmp_3.reserved1() = p__reserved;
+tmp_3.reserved2() = p__reserved;
+tmp_3.reserved3() = p__reserved;
+tmp_3.reserved4() = p__reserved;
+tmp_3.reserved5() = p__reserved;
+tmp_3.reserved6() = p__reserved;
+tmp_3.reserved7() = p__reserved;
+}
+ret_val.reserved6() = os_0;
+ret_val.reserved7() = os_0;
+ret_val.reserved8() = os_0;
+return ret_val;
+}
+
+IsobusVTMessageTypes::VTSelectInputObjectReq__v3AndPrior_template t__VTSelectInputObjectReq__v3AndPrior(const INTEGER_template& p__objectID, const IsobusVTMessageTypes::e__VTSelectInputObject__selection_template& p__selection)
+{
+TTCN_Location current_location("Isobus_Templates.ttcn", 132, TTCN_Location::LOCATION_TEMPLATE, "t_VTSelectInputObjectReq_v3AndPrior");
+IsobusVTMessageTypes::VTSelectInputObjectReq__v3AndPrior_template ret_val;
+ret_val.vtfunction() = 3;
+ret_val.objectID() = p__objectID;
+ret_val.selection() = p__selection;
+ret_val.reserved5() = os_0;
+ret_val.reserved6() = os_0;
+ret_val.reserved7() = os_0;
+ret_val.reserved8() = os_0;
+return ret_val;
+}
+
+IsobusVTMessageTypes::VTSelectInputObjectReq__v4AndLater_template t__VTSelectInputObjectReq__v4AndLater(const INTEGER_template& p__objectID, const IsobusVTMessageTypes::e__VTSelectInputObject__selection_template& p__selection, const IsobusVTMessageTypes::VTSelectInputObject__v4AndLater__Bitmask_template& p__bitmask)
+{
+TTCN_Location current_location("Isobus_Templates.ttcn", 144, TTCN_Location::LOCATION_TEMPLATE, "t_VTSelectInputObjectReq_v4AndLater");
+IsobusVTMessageTypes::VTSelectInputObjectReq__v4AndLater_template ret_val;
+ret_val.vtfunction() = 3;
+ret_val.objectID() = p__objectID;
+ret_val.selection() = p__selection;
+ret_val.bitmask() = p__bitmask;
+ret_val.reserved6() = os_0;
+ret_val.reserved7() = os_0;
+ret_val.reserved8() = os_0;
+return ret_val;
+}
+
+IsobusVTMessageTypes::VTSelectInputObjectRes_template t__VTSelectInputObjectRes(const INTEGER_template& p__objectID, const IsobusVTMessageTypes::e__VTSelectInputObject__selection_template& p__selection, const BOOLEAN_template& p__objectIsOpenForDataInput, const BOOLEAN_template& p__reserved)
+{
+TTCN_Location current_location("Isobus_Templates.ttcn", 157, TTCN_Location::LOCATION_TEMPLATE, "t_VTSelectInputObjectRes");
+IsobusVTMessageTypes::VTSelectInputObjectRes_template ret_val;
+ret_val.vtfunction() = 3;
+ret_val.objectID() = p__objectID;
+ret_val.selection() = p__selection;
+{
+IsobusVTMessageTypes::VTSelectInputObject__Bitmask_template& tmp_4 = ret_val.bitmask();
+tmp_4.objectIsOpenForDataInput() = p__objectIsOpenForDataInput;
+tmp_4.reserved1() = p__reserved;
+tmp_4.reserved2() = p__reserved;
+tmp_4.reserved3() = p__reserved;
+tmp_4.reserved4() = p__reserved;
+tmp_4.reserved5() = p__reserved;
+tmp_4.reserved6() = p__reserved;
+tmp_4.reserved7() = p__reserved;
+}
+ret_val.reserved6() = os_0;
+ret_val.reserved7() = os_0;
+ret_val.reserved8() = os_0;
+return ret_val;
+}
+
+IsobusVTMessageTypes::VTSelectInputObjectRes__v4AndPrior_template t__VTSelectInputObjectRes__v4AndPrior(const INTEGER_template& p__objectID, const IsobusVTMessageTypes::e__VTSelectInputObject__selection_template& p__selection)
+{
+TTCN_Location current_location("Isobus_Templates.ttcn", 181, TTCN_Location::LOCATION_TEMPLATE, "t_VTSelectInputObjectRes_v4AndPrior");
+IsobusVTMessageTypes::VTSelectInputObjectRes__v4AndPrior_template ret_val;
+ret_val.vtfunction() = 3;
+ret_val.objectID() = p__objectID;
+ret_val.selection() = p__selection;
+ret_val.reserved5() = os_0;
+ret_val.reserved6() = os_0;
+ret_val.reserved7() = os_0;
+ret_val.reserved8() = os_0;
+return ret_val;
+}
+
+IsobusVTMessageTypes::VTSelectInputObjectRes__v5AndLater_template t__VTSelectInputObjectRes__v5AndLater(const INTEGER_template& p__objectID, const IsobusVTMessageTypes::e__VTSelectInputObject__selection_template& p__selection, const IsobusVTMessageTypes::VTSelectInputObject__v4AndLater__Bitmask_template& p__bitmask)
+{
+TTCN_Location current_location("Isobus_Templates.ttcn", 193, TTCN_Location::LOCATION_TEMPLATE, "t_VTSelectInputObjectRes_v5AndLater");
+IsobusVTMessageTypes::VTSelectInputObjectRes__v5AndLater_template ret_val;
+ret_val.vtfunction() = 3;
+ret_val.objectID() = p__objectID;
+ret_val.selection() = p__selection;
+ret_val.bitmask() = p__bitmask;
+ret_val.reserved6() = os_0;
+ret_val.reserved7() = os_0;
+ret_val.reserved8() = os_0;
+return ret_val;
+}
+
+IsobusVTMessageTypes::VTESCReq_template t__VTESCReq(const INTEGER_template& p__objectID, const IsobusVTMessageTypes::VTESC__ErrorCodes_template& p__errorCodes)
+{
+TTCN_Location current_location("Isobus_Templates.ttcn", 206, TTCN_Location::LOCATION_TEMPLATE, "t_VTESCReq");
+IsobusVTMessageTypes::VTESCReq_template ret_val;
+ret_val.vtfunction() = 4;
+ret_val.objectID() = p__objectID;
+ret_val.errorCodes() = p__errorCodes;
+ret_val.reserved5() = os_0;
+ret_val.reserved6() = os_0;
+ret_val.reserved7() = os_0;
+ret_val.reserved8() = os_0;
+return ret_val;
+}
+
+IsobusVTMessageTypes::VTESCRes_template t__VTESCRes(const INTEGER_template& p__objectID)
+{
+TTCN_Location current_location("Isobus_Templates.ttcn", 218, TTCN_Location::LOCATION_TEMPLATE, "t_VTESCRes");
+IsobusVTMessageTypes::VTESCRes_template ret_val;
+ret_val.vtfunction() = 4;
+ret_val.objectID() = p__objectID;
+ret_val.reserved4() = os_0;
+ret_val.reserved5() = os_0;
+ret_val.reserved6() = os_0;
+ret_val.reserved7() = os_0;
+ret_val.reserved8() = os_0;
+return ret_val;
+}
+
+IsobusVTMessageTypes::VTChangeNumericValueReq_template t__VTChangeNumericValueReq(const INTEGER_template& p__objectID, const OCTETSTRING_template& p__value)
+{
+TTCN_Location current_location("Isobus_Templates.ttcn", 229, TTCN_Location::LOCATION_TEMPLATE, "t_VTChangeNumericValueReq");
+IsobusVTMessageTypes::VTChangeNumericValueReq_template ret_val;
+ret_val.vtfunction() = 5;
+ret_val.objectID() = p__objectID;
+ret_val.reserved4() = os_0;
+ret_val.value__() = p__value;
+return ret_val;
+}
+
+IsobusVTMessageTypes::VTChangeNumericValueRes_template t__VTChangeNumericValueRes(const INTEGER_template& p__objectID, const OCTETSTRING_template& p__value)
+{
+TTCN_Location current_location("Isobus_Templates.ttcn", 238, TTCN_Location::LOCATION_TEMPLATE, "t_VTChangeNumericValueRes");
+IsobusVTMessageTypes::VTChangeNumericValueRes_template ret_val;
+ret_val.vtfunction() = 5;
+ret_val.objectID() = p__objectID;
+ret_val.reserved4() = os_0;
+ret_val.value__() = p__value;
+return ret_val;
+}
+
+IsobusVTMessageTypes::VTChangeActiveMaskReq_template t__VTChangeActiveMaskReq(const INTEGER_template& p__activeMaskOrWindowMaskOrKeyGroupObjectID, const IsobusVTMessageTypes::VTChangeActiveMasErrorcodes_template& p__errorCodes, const INTEGER_template& p__objectIDcontainingError, const INTEGER_template& p__parentObjectIDofErrorObjectID)
+{
+TTCN_Location current_location("Isobus_Templates.ttcn", 247, TTCN_Location::LOCATION_TEMPLATE, "t_VTChangeActiveMaskReq");
+IsobusVTMessageTypes::VTChangeActiveMaskReq_template ret_val;
+ret_val.vtfunction() = 6;
+ret_val.activeMaskOrWindowMaskOrKeyGroupObjectID() = p__activeMaskOrWindowMaskOrKeyGroupObjectID;
+ret_val.errorCodes() = p__errorCodes;
+ret_val.objectIDcontainingError() = p__objectIDcontainingError;
+ret_val.parentObjectIDofErrorObjectID() = p__parentObjectIDofErrorObjectID;
+return ret_val;
+}
+
+IsobusVTMessageTypes::VTChangeActiveMaskRes_template t__VTChangeActiveMaskRes(const INTEGER_template& p__activeMaskObjectID)
+{
+TTCN_Location current_location("Isobus_Templates.ttcn", 260, TTCN_Location::LOCATION_TEMPLATE, "t_VTChangeActiveMaskRes");
+IsobusVTMessageTypes::VTChangeActiveMaskRes_template ret_val;
+ret_val.vtfunction() = 6;
+ret_val.activeMaskObjectID() = p__activeMaskObjectID;
+ret_val.reserved4() = os_0;
+ret_val.reserved5() = os_0;
+ret_val.reserved6() = os_0;
+ret_val.reserved7() = os_0;
+ret_val.reserved8() = os_0;
+return ret_val;
+}
+
+IsobusVTMessageTypes::VTChangeSoftKeyMaskReq_template t__VTChangeSoftKeyMaskReq(const INTEGER_template& p__dataOrAlarmMaskObjectID, const INTEGER_template& p__softKeyMaskObjectID, const IsobusVTMessageTypes::VTChangeSoftKeyMaskErrorCodes_template& p__errorCodes)
+{
+TTCN_Location current_location("Isobus_Templates.ttcn", 271, TTCN_Location::LOCATION_TEMPLATE, "t_VTChangeSoftKeyMaskReq");
+IsobusVTMessageTypes::VTChangeSoftKeyMaskReq_template ret_val;
+ret_val.vtfunction() = 7;
+ret_val.dataOrAlarmMaskObjectID() = p__dataOrAlarmMaskObjectID;
+ret_val.softKeyMaskObjectID() = p__softKeyMaskObjectID;
+ret_val.errorCodes() = p__errorCodes;
+ret_val.reserved7() = os_0;
+ret_val.reserved8() = os_0;
+return ret_val;
+}
+
+IsobusVTMessageTypes::VTChangeSoftKeyMaskRes_template t__VTChangeSoftKeyMaskRes(const INTEGER_template& p__dataOrAlarmMaskObjectID, const INTEGER_template& p__softKeyMaskObjectID)
+{
+TTCN_Location current_location("Isobus_Templates.ttcn", 284, TTCN_Location::LOCATION_TEMPLATE, "t_VTChangeSoftKeyMaskRes");
+IsobusVTMessageTypes::VTChangeSoftKeyMaskRes_template ret_val;
+ret_val.vtfunction() = 7;
+ret_val.dataOrAlarmMaskObjectID() = p__dataOrAlarmMaskObjectID;
+ret_val.softKeyMaskObjectID() = p__softKeyMaskObjectID;
+ret_val.reserved6() = os_0;
+ret_val.reserved7() = os_0;
+ret_val.reserved8() = os_0;
+return ret_val;
+}
+
+IsobusVTMessageTypes::VTChangeStringValueReq_template t__VTChangeStringValueReq(const INTEGER_template& p__inputStringOrStringVariableObjectID, const OCTETSTRING_template& p__enteredStringValue)
+{
+TTCN_Location current_location("Isobus_Templates.ttcn", 296, TTCN_Location::LOCATION_TEMPLATE, "t_VTChangeStringValueReq");
+IsobusVTMessageTypes::VTChangeStringValueReq_template ret_val;
+ret_val.vtfunction() = 8;
+ret_val.inputStringOrStringVariableObjectID() = p__inputStringOrStringVariableObjectID;
+ret_val.numberOfBytes() = p__enteredStringValue.lengthof();
+ret_val.enteredStringValue() = p__enteredStringValue;
+return ret_val;
+}
+
+IsobusVTMessageTypes::VTChangeStringValueRes_template t__VTChangeStringValueRes(const INTEGER_template& p__inputStringOrStringVariableObjectID)
+{
+TTCN_Location current_location("Isobus_Templates.ttcn", 306, TTCN_Location::LOCATION_TEMPLATE, "t_VTChangeStringValueRes");
+IsobusVTMessageTypes::VTChangeStringValueRes_template ret_val;
+ret_val.vtfunction() = 8;
+ret_val.reserved2() = os_0;
+ret_val.reserved3() = os_0;
+ret_val.inputStringOrStringVariableObjectID() = p__inputStringOrStringVariableObjectID;
+ret_val.reserved6() = os_0;
+ret_val.reserved7() = os_0;
+ret_val.reserved8() = os_0;
+return ret_val;
+}
+
+IsobusVTMessageTypes::GetSupportedWidecharsReq_template t__GetSupportedWidecharsReq(const IsobusVTMessageTypes::e__Codeplane& p__codeplane, const OCTETSTRING& p__firstWideCharInInquiryRange, const OCTETSTRING& p__lastWideCharInInquiryRange)
+{
+TTCN_Location current_location("Isobus_Templates.ttcn", 318, TTCN_Location::LOCATION_TEMPLATE, "t_GetSupportedWidecharsReq");
+IsobusVTMessageTypes::GetSupportedWidecharsReq_template ret_val;
+ret_val.vtfunction() = 193;
+ret_val.codeplane() = p__codeplane;
+ret_val.firstWideCharInInquiryRange() = p__firstWideCharInInquiryRange;
+ret_val.lastWideCharInInquiryRange() = p__lastWideCharInInquiryRange;
+ret_val.reserved7() = os_0;
+ret_val.reserved8() = os_0;
+return ret_val;
+}
+
+IsobusVTMessageTypes::GetSupportedWidecharsRes_template t__GetSupportedWidecharsRes(const IsobusVTMessageTypes::e__Codeplane& p__codeplane, const OCTETSTRING& p__firstWideCharInInquiryRange, const OCTETSTRING& p__lastWideCharInInquiryRange, const INTEGER& p__numberOfRanges, const IsobusVTMessageTypes::WideCharRangeArray& p__wideCharRangeArray)
+{
+TTCN_Location current_location("Isobus_Templates.ttcn", 327, TTCN_Location::LOCATION_TEMPLATE, "t_GetSupportedWidecharsRes");
+IsobusVTMessageTypes::GetSupportedWidecharsRes_template ret_val;
+ret_val.vtfunction() = 193;
+ret_val.codeplane() = p__codeplane;
+ret_val.firstWideCharInInquiryRange() = p__firstWideCharInInquiryRange;
+ret_val.lastWideCharInInquiryRange() = p__lastWideCharInInquiryRange;
+ret_val.numberOfRanges() = p__numberOfRanges;
+ret_val.wideCharRangeArray() = p__wideCharRangeArray;
+return ret_val;
+}
+
+IsobusVTMessageTypes::GetMemoryReq_template t__GetMemoryReq(const INTEGER& p__memoryRequired)
+{
+TTCN_Location current_location("Isobus_Templates.ttcn", 340, TTCN_Location::LOCATION_TEMPLATE, "t_GetMemoryReq");
+IsobusVTMessageTypes::GetMemoryReq_template ret_val;
+ret_val.vtfunction() = 194;
+ret_val.reserved2() = os_0;
+ret_val.memoryRequired() = p__memoryRequired;
+ret_val.reserved7() = os_0;
+ret_val.reserved8() = os_0;
+return ret_val;
+}
+
+IsobusVTMessageTypes::GetMemoryRes_template t__GetMemoryRes(const IsobusVTMessageTypes::e__GetMemoryResVersionNumber& p__versionNumber, const IsobusVTMessageTypes::e__GetMemoryResStatus& p__status)
+{
+TTCN_Location current_location("Isobus_Templates.ttcn", 348, TTCN_Location::LOCATION_TEMPLATE, "t_GetMemoryRes");
+IsobusVTMessageTypes::GetMemoryRes_template ret_val;
+ret_val.vtfunction() = 194;
+ret_val.versionNumber() = p__versionNumber;
+ret_val.status() = p__status;
+ret_val.reserved4() = os_0;
+ret_val.reserved5() = os_0;
+ret_val.reserved6() = os_0;
+ret_val.reserved7() = os_0;
+ret_val.reserved8() = os_0;
+return ret_val;
+}
+
+Isobus::AnyIsoBusPdu_template t__WorkingSetMaintenanceReq__pdu(const IsobusVTMessageTypes::WorkingSetMaintenanceBitMask& p__bitMask, const IsobusVTMessageTypes::e__WorkingSetMaintenanceVersionNumber& p__versionNumber)
+{
+TTCN_Location current_location("Isobus_Templates.ttcn", 359, TTCN_Location::LOCATION_TEMPLATE, "t_WorkingSetMaintenanceReq_pdu");
+Isobus::AnyIsoBusPdu_template ret_val;
+ret_val.ecu2vt().workingSetMaintenanceReq() = t__WorkingSetMaintenanceReq(p__bitMask, p__versionNumber);
+return ret_val;
+}
+
+IsobusVTMessageTypes::WorkingSetMaintenanceReq_template t__WorkingSetMaintenanceReq(const IsobusVTMessageTypes::WorkingSetMaintenanceBitMask& p__bitMask, const IsobusVTMessageTypes::e__WorkingSetMaintenanceVersionNumber& p__versionNumber)
+{
+TTCN_Location current_location("Isobus_Templates.ttcn", 365, TTCN_Location::LOCATION_TEMPLATE, "t_WorkingSetMaintenanceReq");
+IsobusVTMessageTypes::WorkingSetMaintenanceReq_template ret_val;
+ret_val.vtfunction() = 255;
+ret_val.bitMask() = p__bitMask;
+ret_val.versionNumber() = p__versionNumber;
+ret_val.reserved4() = os_0;
+ret_val.reserved5() = os_0;
+ret_val.reserved6() = os_0;
+ret_val.reserved7() = os_0;
+ret_val.reserved8() = os_0;
+return ret_val;
+}
+
+IsobusNMMessageTypes::N__SP__Response_template t__N__SP__Response(const IsobusNMMessageTypes::e__PortNumber_template& t__fromPort, const IsobusNMMessageTypes::e__PortNumber_template& t__toPort, const IsobusNMMessageTypes::N__SP__Response_requestedParametrics_template& requestedParametrics__param)
+{
+TTCN_Location current_location("Isobus_Templates.ttcn", 378, TTCN_Location::LOCATION_TEMPLATE, "t_N_SP_Response");
+IsobusNMMessageTypes::N__SP__Response_template ret_val;
+ret_val.msgFunction() = 132;
+{
+IsobusNMMessageTypes::PortPair_template& tmp_5 = ret_val.portPair();
+tmp_5.fromPort() = t__fromPort;
+tmp_5.toPort() = t__toPort;
+}
+ret_val.requestedParametrics() = requestedParametrics__param;
+return ret_val;
+}
+
+Isobus::AnyIsoBusPdu_template t__N__SP__Response__pdu(const IsobusNMMessageTypes::e__PortNumber_template& t__fromPort, const IsobusNMMessageTypes::e__PortNumber_template& t__toPort, const IsobusNMMessageTypes::N__SP__Response_requestedParametrics_template& t__requestedParametrics__param)
+{
+TTCN_Location current_location("Isobus_Templates.ttcn", 386, TTCN_Location::LOCATION_TEMPLATE, "t_N_SP_Response_pdu");
+Isobus::AnyIsoBusPdu_template ret_val;
+ret_val.networkMessage().n__SP__Response() = t__N__SP__Response(t__fromPort, t__toPort, t__requestedParametrics__param);
+return ret_val;
+}
+
+
+/* Bodies of static functions */
+
+static void pre_init_module()
+{
+TTCN_Location current_location("Isobus_Templates.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "Isobus_Templates");
+Isobus::module_object.pre_init_module();
+}
+
+static void post_init_module()
+{
+TTCN_Location current_location("Isobus_Templates.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "Isobus_Templates");
+Isobus::module_object.post_init_module();
+}
+
+
+} /* end of namespace */
diff --git a/demo/Isobus_Templates.d b/demo/Isobus_Templates.d
new file mode 100644
index 0000000..c9c6c73
--- /dev/null
+++ b/demo/Isobus_Templates.d
@@ -0,0 +1,60 @@
+Isobus_Templates.o Isobus_Templates.d : Isobus_Templates.cc Isobus_Templates.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TTCN3.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/version.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/cversion.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Types.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Vector.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Error.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Basetype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Encdec.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RInt.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON_Tokenizer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Logger.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Template.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Integer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ttcn3float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Boolean.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Null.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Optional.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Param_Types.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/memory.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/BER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Textbuf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Parameters.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XmlReader.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Objid.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Verdicttype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Component.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Bitstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RAW.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/CharCoding.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Hexstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Octetstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Any.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Universal_charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Struct_of.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Array.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_CharacterString.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_External.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TEXT.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_EmbeddedPDV.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Addfunc.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Timer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Port.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Event_Handler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/TitanLoggerApiSimple.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/PreGenRecordOf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Module_list.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Snapshot.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Default.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Runtime.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/OER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Profiler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ProfilerTools.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Debugger.hh \
+ Isobus.hh Can.hh General_Types.hh IsobusCMMessageTypes.hh \
+ IsobusMessageTypes.hh IsobusNMMessageTypes.hh IsobusVTMessageTypes.hh
diff --git a/demo/Isobus_Templates.hh b/demo/Isobus_Templates.hh
new file mode 100644
index 0000000..0f8b635
--- /dev/null
+++ b/demo/Isobus_Templates.hh
@@ -0,0 +1,77 @@
+// This C++ header file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+#ifndef Isobus__Templates_HH
+#define Isobus__Templates_HH
+
+#ifdef TITAN_RUNTIME_2
+#error Generated code does not match with used runtime.\
+ Code was generated without -R option but -DTITAN_RUNTIME_2 was used.
+#endif
+
+/* Header file includes */
+
+#include <TTCN3.hh>
+#include "Isobus.hh"
+
+#if TTCN3_VERSION != 60600
+#error Version mismatch detected.\
+ Please check the version of the TTCN-3 compiler and the base library.\
+ Run make clean and rebuild the project if the version of the compiler changed recently.
+#endif
+
+#ifndef LINUX
+#error This file should be compiled on LINUX
+#endif
+
+namespace Isobus__Templates {
+
+/* Function prototypes */
+
+extern Isobus::CAN__frame__j1939_template t__message(const BITSTRING& prio__param, const BITSTRING& res__param, const BITSTRING& dp__param, const OCTETSTRING& pf__param, const OCTETSTRING& ps__param, const OCTETSTRING& sa__param, const Isobus::AnyIsoBusPdu_template& t__can__pdu);
+extern Isobus::CAN__frame__j1939_template t__network__message(const BITSTRING& prio__param, const BITSTRING& res__param, const BITSTRING& dp__param, const OCTETSTRING& pf__param, const OCTETSTRING& ps__param, const OCTETSTRING& sa__param, const IsobusNMMessageTypes::NetworkMessage_template& t__networkMessage);
+extern IsobusVTMessageTypes::ECU2VT_template t__GetMemoryReqX(const INTEGER& p__memoryRequired);
+extern Isobus::AnyIsoBusPdu_template t__ecu2vt(const IsobusVTMessageTypes::ECU2VT_template& t__Message);
+extern Isobus::AnyIsoBusPdu_template t__vt2ecu(const IsobusVTMessageTypes::VT2ECU_template& t__Message);
+extern Isobus::AnyIsoBusPdu_template t__GetMemoryReq__pdu(const INTEGER& p__memoryRequired);
+extern IsobusVTMessageTypes::ButtonActivationReq_template t__ButtonActivationReq(const IsobusVTMessageTypes::e__ButtonActivationReq__KeyAactivationCode_template& p__keyAactivationCode, const INTEGER_template& p__objectID, const INTEGER_template& p__parentObjectID, const INTEGER_template& p__buttonKeyCode);
+extern IsobusVTMessageTypes::ButtonActivationRes_template t__ButtonActivationRes(const IsobusVTMessageTypes::e__ButtonActivationRes__KeyAactivationCode_template& p__keyAactivationCode, const INTEGER_template& p__objectID, const INTEGER_template& p__parentObjectID, const INTEGER_template& p__buttonKeyCode);
+extern IsobusVTMessageTypes::PointingEventReq_template t__PointingEventReq(const INTEGER_template& p__x__position, const INTEGER_template& p__y__position, const IsobusVTMessageTypes::e__PointingEvent__touchState_template& p__touchState);
+extern IsobusVTMessageTypes::PointingEventRes_template t__PointingEventRes(const INTEGER_template& p__x__position, const INTEGER_template& p__y__position, const IsobusVTMessageTypes::e__PointingEvent__touchState_template& p__touchState);
+extern IsobusVTMessageTypes::VTSelectInputObjectReq_template t__VTSelectInputObjectReq(const INTEGER_template& p__objectID, const IsobusVTMessageTypes::e__VTSelectInputObject__selection_template& p__selection, const BOOLEAN_template& p__objectIsOpenForDataInput, const BOOLEAN_template& p__reserved);
+extern IsobusVTMessageTypes::VTSelectInputObjectReq__v3AndPrior_template t__VTSelectInputObjectReq__v3AndPrior(const INTEGER_template& p__objectID, const IsobusVTMessageTypes::e__VTSelectInputObject__selection_template& p__selection);
+extern IsobusVTMessageTypes::VTSelectInputObjectReq__v4AndLater_template t__VTSelectInputObjectReq__v4AndLater(const INTEGER_template& p__objectID, const IsobusVTMessageTypes::e__VTSelectInputObject__selection_template& p__selection, const IsobusVTMessageTypes::VTSelectInputObject__v4AndLater__Bitmask_template& p__bitmask);
+extern IsobusVTMessageTypes::VTSelectInputObjectRes_template t__VTSelectInputObjectRes(const INTEGER_template& p__objectID, const IsobusVTMessageTypes::e__VTSelectInputObject__selection_template& p__selection, const BOOLEAN_template& p__objectIsOpenForDataInput, const BOOLEAN_template& p__reserved);
+extern IsobusVTMessageTypes::VTSelectInputObjectRes__v4AndPrior_template t__VTSelectInputObjectRes__v4AndPrior(const INTEGER_template& p__objectID, const IsobusVTMessageTypes::e__VTSelectInputObject__selection_template& p__selection);
+extern IsobusVTMessageTypes::VTSelectInputObjectRes__v5AndLater_template t__VTSelectInputObjectRes__v5AndLater(const INTEGER_template& p__objectID, const IsobusVTMessageTypes::e__VTSelectInputObject__selection_template& p__selection, const IsobusVTMessageTypes::VTSelectInputObject__v4AndLater__Bitmask_template& p__bitmask);
+extern IsobusVTMessageTypes::VTESCReq_template t__VTESCReq(const INTEGER_template& p__objectID, const IsobusVTMessageTypes::VTESC__ErrorCodes_template& p__errorCodes);
+extern IsobusVTMessageTypes::VTESCRes_template t__VTESCRes(const INTEGER_template& p__objectID);
+extern IsobusVTMessageTypes::VTChangeNumericValueReq_template t__VTChangeNumericValueReq(const INTEGER_template& p__objectID, const OCTETSTRING_template& p__value);
+extern IsobusVTMessageTypes::VTChangeNumericValueRes_template t__VTChangeNumericValueRes(const INTEGER_template& p__objectID, const OCTETSTRING_template& p__value);
+extern IsobusVTMessageTypes::VTChangeActiveMaskReq_template t__VTChangeActiveMaskReq(const INTEGER_template& p__activeMaskOrWindowMaskOrKeyGroupObjectID, const IsobusVTMessageTypes::VTChangeActiveMasErrorcodes_template& p__errorCodes, const INTEGER_template& p__objectIDcontainingError, const INTEGER_template& p__parentObjectIDofErrorObjectID);
+extern IsobusVTMessageTypes::VTChangeActiveMaskRes_template t__VTChangeActiveMaskRes(const INTEGER_template& p__activeMaskObjectID);
+extern IsobusVTMessageTypes::VTChangeSoftKeyMaskReq_template t__VTChangeSoftKeyMaskReq(const INTEGER_template& p__dataOrAlarmMaskObjectID, const INTEGER_template& p__softKeyMaskObjectID, const IsobusVTMessageTypes::VTChangeSoftKeyMaskErrorCodes_template& p__errorCodes);
+extern IsobusVTMessageTypes::VTChangeSoftKeyMaskRes_template t__VTChangeSoftKeyMaskRes(const INTEGER_template& p__dataOrAlarmMaskObjectID, const INTEGER_template& p__softKeyMaskObjectID);
+extern IsobusVTMessageTypes::VTChangeStringValueReq_template t__VTChangeStringValueReq(const INTEGER_template& p__inputStringOrStringVariableObjectID, const OCTETSTRING_template& p__enteredStringValue);
+extern IsobusVTMessageTypes::VTChangeStringValueRes_template t__VTChangeStringValueRes(const INTEGER_template& p__inputStringOrStringVariableObjectID);
+extern IsobusVTMessageTypes::GetSupportedWidecharsReq_template t__GetSupportedWidecharsReq(const IsobusVTMessageTypes::e__Codeplane& p__codeplane, const OCTETSTRING& p__firstWideCharInInquiryRange, const OCTETSTRING& p__lastWideCharInInquiryRange);
+extern IsobusVTMessageTypes::GetSupportedWidecharsRes_template t__GetSupportedWidecharsRes(const IsobusVTMessageTypes::e__Codeplane& p__codeplane, const OCTETSTRING& p__firstWideCharInInquiryRange, const OCTETSTRING& p__lastWideCharInInquiryRange, const INTEGER& p__numberOfRanges, const IsobusVTMessageTypes::WideCharRangeArray& p__wideCharRangeArray);
+extern IsobusVTMessageTypes::GetMemoryReq_template t__GetMemoryReq(const INTEGER& p__memoryRequired);
+extern IsobusVTMessageTypes::GetMemoryRes_template t__GetMemoryRes(const IsobusVTMessageTypes::e__GetMemoryResVersionNumber& p__versionNumber, const IsobusVTMessageTypes::e__GetMemoryResStatus& p__status);
+extern Isobus::AnyIsoBusPdu_template t__WorkingSetMaintenanceReq__pdu(const IsobusVTMessageTypes::WorkingSetMaintenanceBitMask& p__bitMask, const IsobusVTMessageTypes::e__WorkingSetMaintenanceVersionNumber& p__versionNumber);
+extern IsobusVTMessageTypes::WorkingSetMaintenanceReq_template t__WorkingSetMaintenanceReq(const IsobusVTMessageTypes::WorkingSetMaintenanceBitMask& p__bitMask, const IsobusVTMessageTypes::e__WorkingSetMaintenanceVersionNumber& p__versionNumber);
+extern IsobusNMMessageTypes::N__SP__Response_template t__N__SP__Response(const IsobusNMMessageTypes::e__PortNumber_template& t__fromPort, const IsobusNMMessageTypes::e__PortNumber_template& t__toPort, const IsobusNMMessageTypes::N__SP__Response_requestedParametrics_template& requestedParametrics__param);
+extern Isobus::AnyIsoBusPdu_template t__N__SP__Response__pdu(const IsobusNMMessageTypes::e__PortNumber_template& t__fromPort, const IsobusNMMessageTypes::e__PortNumber_template& t__toPort, const IsobusNMMessageTypes::N__SP__Response_requestedParametrics_template& t__requestedParametrics__param);
+
+/* Global variable declarations */
+
+extern TTCN_Module module_object;
+
+} /* end of namespace */
+
+#endif
diff --git a/demo/Isobus_Templates.o b/demo/Isobus_Templates.o
new file mode 100644
index 0000000..a4719a0
--- /dev/null
+++ b/demo/Isobus_Templates.o
Binary files differ
diff --git a/demo/Isobustest.cc b/demo/Isobustest.cc
new file mode 100644
index 0000000..f5f04d4
--- /dev/null
+++ b/demo/Isobustest.cc
@@ -0,0 +1,9806 @@
+// This C++ source file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+/* Including header files */
+
+#include "Isobustest.hh"
+
+namespace Isobustest {
+
+/* Prototypes of static functions */
+
+static void pre_init_module();
+static void post_init_module();
+static boolean init_comp_type(const char *component_type, boolean init_base_comps);
+static boolean init_system_port(const char* component_type, const char* port_name);
+static boolean start_ptc_function(const char *function_name, Text_Buf& function_arguments);
+static void module_control_part();
+
+/* Literal string constants */
+
+static const unsigned char bs_1_bits[] = { 0 },
+bs_11_bits[] = { 0 },
+bs_5_bits[] = { 64 },
+bs_6_bits[] = { 192 },
+bs_12_bits[] = { 32 },
+bs_4_bits[] = { 8 },
+bs_0_bits[] = { 24 },
+bs_7_bits[] = { 20 },
+bs_3_bits[] = { 6 },
+bs_2_bits[] = { 1 },
+bs_9_bits[] = { 1, 0 },
+bs_10_bits[] = { 133, 80, 0 },
+bs_8_bits[] = { 3 };
+static const BITSTRING bs_1(1, bs_1_bits),
+bs_11(6, bs_11_bits),
+bs_5(7, bs_5_bits),
+bs_6(8, bs_6_bits),
+bs_12(6, bs_12_bits),
+bs_4(4, bs_4_bits),
+bs_0(6, bs_0_bits),
+bs_7(5, bs_7_bits),
+bs_3(3, bs_3_bits),
+bs_2(1, bs_2_bits),
+bs_9(11, bs_9_bits),
+bs_10(21, bs_10_bits),
+bs_8(3, bs_8_bits);
+static const unsigned char os_7_octets[] = { 0 },
+os_2_octets[] = { 0, 255, 0 },
+os_17_octets[] = { 1 },
+os_18_octets[] = { 2 },
+os_19_octets[] = { 3 },
+os_3_octets[] = { 3, 255, 255 },
+os_20_octets[] = { 4 },
+os_21_octets[] = { 5 },
+os_22_octets[] = { 6 },
+os_23_octets[] = { 7 },
+os_14_octets[] = { 10 },
+os_15_octets[] = { 11 },
+os_16_octets[] = { 12 },
+os_1_octets[] = { 17 },
+os_28_octets[] = { 24, 236, 248, 248, 16, 22, 0, 4, 255, 235, 254, 0 },
+os_10_octets[] = { 34, 51 },
+os_11_octets[] = { 68, 85 },
+os_12_octets[] = { 102 },
+os_26_octets[] = { 108, 101, 32, 115, 101, 114, 118 },
+os_27_octets[] = { 152, 234, 255, 254, 0, 238, 0 },
+os_9_octets[] = { 170 },
+os_8_octets[] = { 192 },
+os_6_octets[] = { 230 },
+os_4_octets[] = { 233 },
+os_25_octets[] = { 248 },
+os_5_octets[] = { 253 },
+os_24_octets[] = { 254 },
+os_13_octets[] = { 255 };
+static const OCTETSTRING os_0(0, NULL),
+os_7(1, os_7_octets),
+os_2(3, os_2_octets),
+os_17(1, os_17_octets),
+os_18(1, os_18_octets),
+os_19(1, os_19_octets),
+os_3(3, os_3_octets),
+os_20(1, os_20_octets),
+os_21(1, os_21_octets),
+os_22(1, os_22_octets),
+os_23(1, os_23_octets),
+os_14(1, os_14_octets),
+os_15(1, os_15_octets),
+os_16(1, os_16_octets),
+os_1(1, os_1_octets),
+os_28(12, os_28_octets),
+os_10(2, os_10_octets),
+os_11(2, os_11_octets),
+os_12(1, os_12_octets),
+os_26(7, os_26_octets),
+os_27(7, os_27_octets),
+os_9(1, os_9_octets),
+os_8(1, os_8_octets),
+os_6(1, os_6_octets),
+os_4(1, os_4_octets),
+os_25(1, os_25_octets),
+os_5(1, os_5_octets),
+os_24(1, os_24_octets),
+os_13(1, os_13_octets);
+static const unsigned char module_checksum[] = { 0x05, 0x4a, 0xb3, 0x61, 0xd4, 0x66, 0xd1, 0x06, 0xe1, 0x15, 0x44, 0x5f, 0x26, 0xc8, 0x14, 0x9d };
+
+/* Global variable definitions */
+
+// No XER for CAN__ID
+const TTCN_Typedescriptor_t CAN__ID_descr_ = { "@Isobustest.CAN_ID", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       CAN__ID_can__eff_xer_ = { {"can_eff>\n", "can_eff>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int CAN__ID_can__eff_oer_ext_arr_[0] = {};
+const int CAN__ID_can__eff_oer_p_[0] = {};
+const TTCN_OERdescriptor_t CAN__ID_can__eff_oer_ = { -1, TRUE, 4, FALSE, 0, 0, CAN__ID_can__eff_oer_ext_arr_, 0, CAN__ID_can__eff_oer_p_};
+const TTCN_Typedescriptor_t CAN__ID_can__eff_descr_ = { "@Isobustest.CAN_ID.can_eff", &OCTETSTRING_ber_, &General__Types::OCT4_raw_, &OCTETSTRING_text_, &CAN__ID_can__eff_xer_, &OCTETSTRING_json_, &CAN__ID_can__eff_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       CAN__ID_can__sff_xer_ = { {"can_sff>\n", "can_sff>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int CAN__ID_can__sff_oer_ext_arr_[0] = {};
+const int CAN__ID_can__sff_oer_p_[0] = {};
+const TTCN_OERdescriptor_t CAN__ID_can__sff_oer_ = { -1, TRUE, 2, FALSE, 0, 0, CAN__ID_can__sff_oer_ext_arr_, 0, CAN__ID_can__sff_oer_p_};
+const TTCN_Typedescriptor_t CAN__ID_can__sff_descr_ = { "@Isobustest.CAN_ID.can_sff", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &CAN__ID_can__sff_xer_, &OCTETSTRING_json_, &CAN__ID_can__sff_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t RTR_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for RTR
+const TTCN_Typedescriptor_t RTR_descr_ = { "@Isobustest.RTR", NULL, &RTR_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t BIT29_raw_ = {29,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       BIT29_xer_ = { {"BIT29>\n", "BIT29>\n"}, {7, 7}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t BIT29_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t BIT29_descr_ = { "@Isobustest.BIT29", &BITSTRING_ber_, &BIT29_raw_, NULL, &BIT29_xer_, &BITSTRING_json_, &BIT29_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       CAN__ID_can__err_xer_ = { {"can_err>\n", "can_err>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t CAN__ID_can__err_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t CAN__ID_can__err_descr_ = { "@Isobustest.CAN_ID.can_err", &BITSTRING_ber_, &BIT29_raw_, NULL, &CAN__ID_can__err_xer_, &BITSTRING_json_, &CAN__ID_can__err_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t Can__IDs_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for Can__IDs
+const TTCN_Typedescriptor_t Can__IDs_descr_ = { "@Isobustest.Can_IDs", NULL, &Can__IDs_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       Can__IDs_can__eff_xer_ = { {"can_eff>\n", "can_eff>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t Can__IDs_can__eff_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t Can__IDs_can__eff_descr_ = { "@Isobustest.Can_IDs.can_eff", &BITSTRING_ber_, &BIT29_raw_, NULL, &Can__IDs_can__eff_xer_, &BITSTRING_json_, &Can__IDs_can__eff_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       Can__IDs_can__sff_xer_ = { {"can_sff>\n", "can_sff>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t Can__IDs_can__sff_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t Can__IDs_can__sff_descr_ = { "@Isobustest.Can_IDs.can_sff", &BITSTRING_ber_, &General__Types::BIT11_raw_, NULL, &Can__IDs_can__sff_xer_, &BITSTRING_json_, &Can__IDs_can__sff_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       Can__IDs_can__err_xer_ = { {"can_err>\n", "can_err>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t Can__IDs_can__err_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t Can__IDs_can__err_descr_ = { "@Isobustest.Can_IDs.can_err", &BITSTRING_ber_, &BIT29_raw_, NULL, &Can__IDs_can__err_xer_, &BITSTRING_json_, &Can__IDs_can__err_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       Can__IDwithType_cantype_xer_ = { {"cantype>\n", "cantype>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t Can__IDwithType_cantype_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t Can__IDwithType_cantype_descr_ = { "@Isobustest.Can_IDwithType.cantype", &INTEGER_ber_, &General__Types::INT1_raw_, &INTEGER_text_, &Can__IDwithType_cantype_xer_, &INTEGER_json_, &Can__IDwithType_cantype_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t Can__IDwithType_can__ids_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for Can__IDwithType_can__ids
+const TTCN_Typedescriptor_t Can__IDwithType_can__ids_descr_ = { "@Isobustest.Can_IDwithType.can_ids", NULL, &Can__IDwithType_can__ids_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t Can__IDwithType_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for Can__IDwithType
+const TTCN_Typedescriptor_t Can__IDwithType_descr_ = { "@Isobustest.Can_IDwithType", NULL, &Can__IDwithType_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_Typedescriptor_t& MTC__CT_descr_ = COMPONENT_descr_;
+const TTCN_Typedescriptor_t& PTC__isobus__CT_descr_ = COMPONENT_descr_;
+SocketCAN__PortType::SocketCAN__PT PTC__isobus__CT_component_pt__socketCAN("pt_socketCAN");
+Isobus__PT PTC__isobus__CT_component_pt__isobus("pt_isobus");
+TIMER PTC__isobus__CT_component_T0("T0", 2.0e-1);
+static INTEGER const_MAX__CONNECTIONS;
+const INTEGER& MAX__CONNECTIONS = const_MAX__CONNECTIONS;
+// No XER for OpenConnections
+const TTCN_Typedescriptor_t OpenConnections_descr_ = { "@Isobustest.OpenConnections", NULL, NULL, NULL, NULL, NULL, NULL, &COMPONENT_descr_, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_Typedescriptor_t& PTC2__CT_descr_ = COMPONENT_descr_;
+// No XER for OpenConnectionsFlags
+const TTCN_Typedescriptor_t OpenConnectionsFlags_descr_ = { "@Isobustest.OpenConnectionsFlags", NULL, NULL, NULL, NULL, NULL, NULL, &BOOLEAN_descr_, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       OpenConnectionsFlags_0_xer_ = { {"BOOLEAN>\n", "BOOLEAN>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int OpenConnectionsFlags_0_oer_ext_arr_[0] = {};
+const int OpenConnectionsFlags_0_oer_p_[0] = {};
+const TTCN_OERdescriptor_t OpenConnectionsFlags_0_oer_ = { -1, TRUE, -1, FALSE, 0, 0, OpenConnectionsFlags_0_oer_ext_arr_, 0, OpenConnectionsFlags_0_oer_p_};
+const TTCN_Typedescriptor_t OpenConnectionsFlags_0_descr_ = { "@Isobustest.OpenConnectionsFlags.BOOLEAN", &BOOLEAN_ber_, &BOOLEAN_raw_, &BOOLEAN_text_, &OpenConnectionsFlags_0_xer_, &BOOLEAN_json_, &OpenConnectionsFlags_0_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_Typedescriptor_t& PTC1__CT_descr_ = COMPONENT_descr_;
+Isobus__PT PTC1__CT_component_pt__isobus("pt_isobus");
+OpenConnections PTC1__CT_component_openConnections;
+OpenConnectionsFlags PTC1__CT_component_openConnectionsFlags;
+TIMER PTC1__CT_component_T1("T1", 2.0e-1);
+Isobus__PT PTC2__CT_component_pt__isobus("pt_isobus");
+OCTETSTRING PTC2__CT_component_receivedUnacknowledgedData;
+INTEGER PTC2__CT_component_msgSizeInBytes;
+INTEGER PTC2__CT_component_receivedUnacknowledgedMsgSizeInBytes;
+INTEGER PTC2__CT_component_nextExpectedPacketNumber;
+INTEGER PTC2__CT_component_pgnOfMultiPacketMessage;
+const XERdescriptor_t       _T_PTC2__CT_component_ps_xer_ = { {"OCT1>\n", "OCT1>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int _T_PTC2__CT_component_ps_oer_ext_arr_[0] = {};
+const int _T_PTC2__CT_component_ps_oer_p_[0] = {};
+const TTCN_OERdescriptor_t _T_PTC2__CT_component_ps_oer_ = { -1, TRUE, 1, FALSE, 0, 0, _T_PTC2__CT_component_ps_oer_ext_arr_, 0, _T_PTC2__CT_component_ps_oer_p_};
+const TTCN_Typedescriptor_t _T_PTC2__CT_component_ps_descr_ = { "@Isobustest.PTC2_CT.ps.<type>", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &_T_PTC2__CT_component_ps_xer_, &OCTETSTRING_json_, &_T_PTC2__CT_component_ps_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+OCTETSTRING PTC2__CT_component_ps;
+OCTETSTRING PTC2__CT_component_sa;
+OCTETSTRING PTC2__CT_component_tp__dt__can__id;
+TIMER PTC2__CT_component_T2("T2", 2.0e-1);
+// No XER for PTCSet
+const TTCN_Typedescriptor_t PTCSet_descr_ = { "@Isobustest.PTCSet", NULL, NULL, NULL, NULL, NULL, NULL, &COMPONENT_descr_, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_Typedescriptor_t& PTC_descr_ = COMPONENT_descr_;
+SyncSlavePort PTC_component_pt__sync("pt_sync");
+SocketCAN__PortType::SocketCAN__PT PTC_component_pt__socketCAN("pt_socketCAN");
+SocketCANtest::e__Phase PTC_component_v__phase;
+TTCN_Module module_object("Isobustest", __DATE__, __TIME__, module_checksum, pre_init_module, NULL, 0U, 4294967295U, 4294967295U, 4294967295U, NULL, 0LU, 0, post_init_module, NULL, NULL, NULL, init_comp_type, init_system_port, start_ptc_function, module_control_part);
+
+static const RuntimeVersionChecker ver_checker(  current_runtime_version.requires_major_version_6,
+  current_runtime_version.requires_minor_version_6,
+  current_runtime_version.requires_patch_level_0,  current_runtime_version.requires_runtime_1);
+
+/* Member functions of C++ classes */
+
+void CAN__ID::copy_value(const CAN__ID& other_value)
+{
+switch (other_value.union_selection) {
+case ALT_can__eff:
+field_can__eff = new OCTETSTRING(*other_value.field_can__eff);
+break;
+case ALT_can__sff:
+field_can__sff = new OCTETSTRING(*other_value.field_can__sff);
+break;
+case ALT_can__rtr:
+field_can__rtr = new RTR(*other_value.field_can__rtr);
+break;
+case ALT_can__err:
+field_can__err = new BITSTRING(*other_value.field_can__err);
+break;
+default:
+TTCN_error("Assignment of an unbound union value of type @Isobustest.CAN_ID.");
+}
+union_selection = other_value.union_selection;
+}
+
+CAN__ID::CAN__ID()
+{
+union_selection = UNBOUND_VALUE;
+}
+
+CAN__ID::CAN__ID(const CAN__ID& other_value)
+: Base_Type(){
+copy_value(other_value);
+}
+
+CAN__ID::~CAN__ID()
+{
+clean_up();
+}
+
+CAN__ID& CAN__ID::operator=(const CAN__ID& other_value)
+{
+if (this != &other_value) {
+clean_up();
+copy_value(other_value);
+}
+return *this;
+}
+
+boolean CAN__ID::operator==(const CAN__ID& other_value) const
+{
+if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @Isobustest.CAN_ID.");
+if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @Isobustest.CAN_ID.");
+if (union_selection != other_value.union_selection) return FALSE;
+switch (union_selection) {
+case ALT_can__eff:
+return *field_can__eff == *other_value.field_can__eff;
+case ALT_can__sff:
+return *field_can__sff == *other_value.field_can__sff;
+case ALT_can__rtr:
+return *field_can__rtr == *other_value.field_can__rtr;
+case ALT_can__err:
+return *field_can__err == *other_value.field_can__err;
+default:
+return FALSE;
+}
+}
+
+OCTETSTRING& CAN__ID::can__eff()
+{
+if (union_selection != ALT_can__eff) {
+clean_up();
+field_can__eff = new OCTETSTRING;
+union_selection = ALT_can__eff;
+}
+return *field_can__eff;
+}
+
+const OCTETSTRING& CAN__ID::can__eff() const
+{
+if (union_selection != ALT_can__eff) TTCN_error("Using non-selected field can_eff in a value of union type @Isobustest.CAN_ID.");
+return *field_can__eff;
+}
+
+OCTETSTRING& CAN__ID::can__sff()
+{
+if (union_selection != ALT_can__sff) {
+clean_up();
+field_can__sff = new OCTETSTRING;
+union_selection = ALT_can__sff;
+}
+return *field_can__sff;
+}
+
+const OCTETSTRING& CAN__ID::can__sff() const
+{
+if (union_selection != ALT_can__sff) TTCN_error("Using non-selected field can_sff in a value of union type @Isobustest.CAN_ID.");
+return *field_can__sff;
+}
+
+RTR& CAN__ID::can__rtr()
+{
+if (union_selection != ALT_can__rtr) {
+clean_up();
+field_can__rtr = new RTR;
+union_selection = ALT_can__rtr;
+}
+return *field_can__rtr;
+}
+
+const RTR& CAN__ID::can__rtr() const
+{
+if (union_selection != ALT_can__rtr) TTCN_error("Using non-selected field can_rtr in a value of union type @Isobustest.CAN_ID.");
+return *field_can__rtr;
+}
+
+BITSTRING& CAN__ID::can__err()
+{
+if (union_selection != ALT_can__err) {
+clean_up();
+field_can__err = new BITSTRING;
+union_selection = ALT_can__err;
+}
+return *field_can__err;
+}
+
+const BITSTRING& CAN__ID::can__err() const
+{
+if (union_selection != ALT_can__err) TTCN_error("Using non-selected field can_err in a value of union type @Isobustest.CAN_ID.");
+return *field_can__err;
+}
+
+boolean CAN__ID::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 @Isobustest.CAN_ID.");
+return union_selection == checked_selection;
+}
+
+boolean CAN__ID::is_bound() const
+{
+  return union_selection != UNBOUND_VALUE;
+}
+
+boolean CAN__ID::is_value() const
+{
+switch (union_selection) {
+case UNBOUND_VALUE: return FALSE;
+case ALT_can__eff: return field_can__eff->is_value();
+case ALT_can__sff: return field_can__sff->is_value();
+case ALT_can__rtr: return field_can__rtr->is_value();
+case ALT_can__err: return field_can__err->is_value();
+default: TTCN_error("Invalid selection in union is_bound");}
+}
+
+void CAN__ID::clean_up()
+{
+switch (union_selection) {
+case ALT_can__eff:
+  delete field_can__eff;
+  break;
+case ALT_can__sff:
+  delete field_can__sff;
+  break;
+case ALT_can__rtr:
+  delete field_can__rtr;
+  break;
+case ALT_can__err:
+  delete field_can__err;
+  break;
+default:
+  break;
+}
+union_selection = UNBOUND_VALUE;
+}
+
+void CAN__ID::log() const
+{
+switch (union_selection) {
+case ALT_can__eff:
+TTCN_Logger::log_event_str("{ can_eff := ");
+field_can__eff->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_can__sff:
+TTCN_Logger::log_event_str("{ can_sff := ");
+field_can__sff->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_can__rtr:
+TTCN_Logger::log_event_str("{ can_rtr := ");
+field_can__rtr->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_can__err:
+TTCN_Logger::log_event_str("{ can_err := ");
+field_can__err->log();
+TTCN_Logger::log_event_str(" }");
+break;
+default:
+TTCN_Logger::log_event_unbound();
+}
+}
+
+void CAN__ID::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, "can_eff")) {
+    can__eff().set_param(*mp_last);
+    if (!can__eff().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "can_sff")) {
+    can__sff().set_param(*mp_last);
+    if (!can__sff().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "can_rtr")) {
+    can__rtr().set_param(*mp_last);
+    if (!can__rtr().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "can_err")) {
+    can__err().set_param(*mp_last);
+    if (!can__err().is_bound()) clean_up();
+    return;
+  }
+  mp_last->error("Field %s does not exist in type @Isobustest.CAN_ID.", last_name);
+}
+
+void CAN__ID::set_implicit_omit()
+{
+switch (union_selection) {
+case ALT_can__eff:
+field_can__eff->set_implicit_omit(); break;
+case ALT_can__sff:
+field_can__sff->set_implicit_omit(); break;
+case ALT_can__rtr:
+field_can__rtr->set_implicit_omit(); break;
+case ALT_can__err:
+field_can__err->set_implicit_omit(); break;
+default: break;
+}
+}
+
+void CAN__ID::encode_text(Text_Buf& text_buf) const
+{
+text_buf.push_int(union_selection);
+switch (union_selection) {
+case ALT_can__eff:
+field_can__eff->encode_text(text_buf);
+break;
+case ALT_can__sff:
+field_can__sff->encode_text(text_buf);
+break;
+case ALT_can__rtr:
+field_can__rtr->encode_text(text_buf);
+break;
+case ALT_can__err:
+field_can__err->encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an unbound value of union type @Isobustest.CAN_ID.");
+}
+}
+
+void CAN__ID::decode_text(Text_Buf& text_buf)
+{
+switch ((union_selection_type)text_buf.pull_int().get_val()) {
+case ALT_can__eff:
+can__eff().decode_text(text_buf);
+break;
+case ALT_can__sff:
+can__sff().decode_text(text_buf);
+break;
+case ALT_can__rtr:
+can__rtr().decode_text(text_buf);
+break;
+case ALT_can__err:
+can__err().decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for type @Isobustest.CAN_ID.");
+}
+}
+
+void CAN__ID_template::copy_value(const CAN__ID& other_value)
+{
+single_value.union_selection = other_value.get_selection();
+switch (single_value.union_selection) {
+case CAN__ID::ALT_can__eff:
+single_value.field_can__eff = new OCTETSTRING_template(other_value.can__eff());
+break;
+case CAN__ID::ALT_can__sff:
+single_value.field_can__sff = new OCTETSTRING_template(other_value.can__sff());
+break;
+case CAN__ID::ALT_can__rtr:
+single_value.field_can__rtr = new RTR_template(other_value.can__rtr());
+break;
+case CAN__ID::ALT_can__err:
+single_value.field_can__err = new BITSTRING_template(other_value.can__err());
+break;
+default:
+TTCN_error("Initializing a template with an unbound value of type @Isobustest.CAN_ID.");
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void CAN__ID_template::copy_template(const CAN__ID_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 CAN__ID::ALT_can__eff:
+single_value.field_can__eff = new OCTETSTRING_template(*other_value.single_value.field_can__eff);
+break;
+case CAN__ID::ALT_can__sff:
+single_value.field_can__sff = new OCTETSTRING_template(*other_value.single_value.field_can__sff);
+break;
+case CAN__ID::ALT_can__rtr:
+single_value.field_can__rtr = new RTR_template(*other_value.single_value.field_can__rtr);
+break;
+case CAN__ID::ALT_can__err:
+single_value.field_can__err = new BITSTRING_template(*other_value.single_value.field_can__err);
+break;
+default:
+TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @Isobustest.CAN_ID.");
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new CAN__ID_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;
+default:
+TTCN_error("Copying an uninitialized template of union type @Isobustest.CAN_ID.");
+}
+set_selection(other_value);
+}
+
+CAN__ID_template::CAN__ID_template()
+{
+}
+
+CAN__ID_template::CAN__ID_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+CAN__ID_template::CAN__ID_template(const CAN__ID& other_value)
+{
+copy_value(other_value);
+}
+
+CAN__ID_template::CAN__ID_template(const OPTIONAL<CAN__ID>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CAN__ID&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of union type @Isobustest.CAN_ID from an unbound optional field.");
+}
+}
+
+CAN__ID_template::CAN__ID_template(const CAN__ID_template& other_value)
+: Base_Template(){
+copy_template(other_value);
+}
+
+CAN__ID_template::~CAN__ID_template()
+{
+clean_up();
+}
+
+void CAN__ID_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case CAN__ID::ALT_can__eff:
+delete single_value.field_can__eff;
+break;
+case CAN__ID::ALT_can__sff:
+delete single_value.field_can__sff;
+break;
+case CAN__ID::ALT_can__rtr:
+delete single_value.field_can__rtr;
+break;
+case CAN__ID::ALT_can__err:
+delete single_value.field_can__err;
+default:
+break;
+}
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+CAN__ID_template& CAN__ID_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+CAN__ID_template& CAN__ID_template::operator=(const CAN__ID& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+CAN__ID_template& CAN__ID_template::operator=(const OPTIONAL<CAN__ID>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CAN__ID&)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 @Isobustest.CAN_ID.");
+}
+return *this;
+}
+
+CAN__ID_template& CAN__ID_template::operator=(const CAN__ID_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean CAN__ID_template::match(const CAN__ID& 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:
+{
+CAN__ID::union_selection_type value_selection = other_value.get_selection();
+if (value_selection == CAN__ID::UNBOUND_VALUE) return FALSE;
+if (value_selection != single_value.union_selection) return FALSE;
+switch (value_selection) {
+case CAN__ID::ALT_can__eff:
+return single_value.field_can__eff->match(other_value.can__eff(), legacy);
+case CAN__ID::ALT_can__sff:
+return single_value.field_can__sff->match(other_value.can__sff(), legacy);
+case CAN__ID::ALT_can__rtr:
+return single_value.field_can__rtr->match(other_value.can__rtr(), legacy);
+case CAN__ID::ALT_can__err:
+return single_value.field_can__err->match(other_value.can__err(), legacy);
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @Isobustest.CAN_ID.");
+}
+}
+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;
+default:
+TTCN_error ("Matching an uninitialized template of union type @Isobustest.CAN_ID.");
+}
+return FALSE;
+}
+
+boolean CAN__ID_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+switch (single_value.union_selection) {
+case CAN__ID::ALT_can__eff:
+return single_value.field_can__eff->is_value();
+case CAN__ID::ALT_can__sff:
+return single_value.field_can__sff->is_value();
+case CAN__ID::ALT_can__rtr:
+return single_value.field_can__rtr->is_value();
+case CAN__ID::ALT_can__err:
+return single_value.field_can__err->is_value();
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @Isobustest.CAN_ID.");
+}
+}
+
+CAN__ID CAN__ID_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 @Isobustest.CAN_ID.");
+CAN__ID ret_val;
+switch (single_value.union_selection) {
+case CAN__ID::ALT_can__eff:
+ret_val.can__eff() = single_value.field_can__eff->valueof();
+break;
+case CAN__ID::ALT_can__sff:
+ret_val.can__sff() = single_value.field_can__sff->valueof();
+break;
+case CAN__ID::ALT_can__rtr:
+ret_val.can__rtr() = single_value.field_can__rtr->valueof();
+break;
+case CAN__ID::ALT_can__err:
+ret_val.can__err() = single_value.field_can__err->valueof();
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @Isobustest.CAN_ID.");
+}
+return ret_val;
+}
+
+CAN__ID_template& CAN__ID_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @Isobustest.CAN_ID.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @Isobustest.CAN_ID.");
+return value_list.list_value[list_index];
+}
+void CAN__ID_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error ("Internal error: Setting an invalid list for a template of union type @Isobustest.CAN_ID.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new CAN__ID_template[list_length];
+}
+
+OCTETSTRING_template& CAN__ID_template::can__eff()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != CAN__ID::ALT_can__eff) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_can__eff = new OCTETSTRING_template(ANY_VALUE);
+else single_value.field_can__eff = new OCTETSTRING_template;
+single_value.union_selection = CAN__ID::ALT_can__eff;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_can__eff;
+}
+
+const OCTETSTRING_template& CAN__ID_template::can__eff() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field can_eff in a non-specific template of union type @Isobustest.CAN_ID.");
+if (single_value.union_selection != CAN__ID::ALT_can__eff) TTCN_error("Accessing non-selected field can_eff in a template of union type @Isobustest.CAN_ID.");
+return *single_value.field_can__eff;
+}
+
+OCTETSTRING_template& CAN__ID_template::can__sff()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != CAN__ID::ALT_can__sff) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_can__sff = new OCTETSTRING_template(ANY_VALUE);
+else single_value.field_can__sff = new OCTETSTRING_template;
+single_value.union_selection = CAN__ID::ALT_can__sff;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_can__sff;
+}
+
+const OCTETSTRING_template& CAN__ID_template::can__sff() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field can_sff in a non-specific template of union type @Isobustest.CAN_ID.");
+if (single_value.union_selection != CAN__ID::ALT_can__sff) TTCN_error("Accessing non-selected field can_sff in a template of union type @Isobustest.CAN_ID.");
+return *single_value.field_can__sff;
+}
+
+RTR_template& CAN__ID_template::can__rtr()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != CAN__ID::ALT_can__rtr) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_can__rtr = new RTR_template(ANY_VALUE);
+else single_value.field_can__rtr = new RTR_template;
+single_value.union_selection = CAN__ID::ALT_can__rtr;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_can__rtr;
+}
+
+const RTR_template& CAN__ID_template::can__rtr() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field can_rtr in a non-specific template of union type @Isobustest.CAN_ID.");
+if (single_value.union_selection != CAN__ID::ALT_can__rtr) TTCN_error("Accessing non-selected field can_rtr in a template of union type @Isobustest.CAN_ID.");
+return *single_value.field_can__rtr;
+}
+
+BITSTRING_template& CAN__ID_template::can__err()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != CAN__ID::ALT_can__err) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_can__err = new BITSTRING_template(ANY_VALUE);
+else single_value.field_can__err = new BITSTRING_template;
+single_value.union_selection = CAN__ID::ALT_can__err;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_can__err;
+}
+
+const BITSTRING_template& CAN__ID_template::can__err() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field can_err in a non-specific template of union type @Isobustest.CAN_ID.");
+if (single_value.union_selection != CAN__ID::ALT_can__err) TTCN_error("Accessing non-selected field can_err in a template of union type @Isobustest.CAN_ID.");
+return *single_value.field_can__err;
+}
+
+boolean CAN__ID_template::ischosen(CAN__ID::union_selection_type checked_selection) const
+{
+if (checked_selection == CAN__ID::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @Isobustest.CAN_ID.");
+switch (template_selection) {
+case SPECIFIC_VALUE:
+if (single_value.union_selection == CAN__ID::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @Isobustest.CAN_ID.");
+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 @Isobustest.CAN_ID 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 CAN__ID_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case CAN__ID::ALT_can__eff:
+TTCN_Logger::log_event_str("{ can_eff := ");
+single_value.field_can__eff->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case CAN__ID::ALT_can__sff:
+TTCN_Logger::log_event_str("{ can_sff := ");
+single_value.field_can__sff->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case CAN__ID::ALT_can__rtr:
+TTCN_Logger::log_event_str("{ can_rtr := ");
+single_value.field_can__rtr->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case CAN__ID::ALT_can__err:
+TTCN_Logger::log_event_str("{ can_err := ");
+single_value.field_can__err->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 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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void CAN__ID_template::log_match(const CAN__ID& 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()) {
+switch (single_value.union_selection) {
+case CAN__ID::ALT_can__eff:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".can_eff");
+single_value.field_can__eff->log_match(match_value.can__eff(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ can_eff := ");
+single_value.field_can__eff->log_match(match_value.can__eff(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case CAN__ID::ALT_can__sff:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".can_sff");
+single_value.field_can__sff->log_match(match_value.can__sff(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ can_sff := ");
+single_value.field_can__sff->log_match(match_value.can__sff(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case CAN__ID::ALT_can__rtr:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".can_rtr");
+single_value.field_can__rtr->log_match(match_value.can__rtr(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ can_rtr := ");
+single_value.field_can__rtr->log_match(match_value.can__rtr(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case CAN__ID::ALT_can__err:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".can_err");
+single_value.field_can__err->log_match(match_value.can__err(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ can_err := ");
+single_value.field_can__err->log_match(match_value.can__err(), 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 CAN__ID_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 CAN__ID::ALT_can__eff:
+single_value.field_can__eff->encode_text(text_buf);
+break;
+case CAN__ID::ALT_can__sff:
+single_value.field_can__sff->encode_text(text_buf);
+break;
+case CAN__ID::ALT_can__rtr:
+single_value.field_can__rtr->encode_text(text_buf);
+break;
+case CAN__ID::ALT_can__err:
+single_value.field_can__err->encode_text(text_buf);
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @Isobustest.CAN_ID.");
+}
+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 @Isobustest.CAN_ID.");
+}
+}
+
+void CAN__ID_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+{
+single_value.union_selection = CAN__ID::UNBOUND_VALUE;
+CAN__ID::union_selection_type new_selection = (CAN__ID::union_selection_type)text_buf.pull_int().get_val();
+switch (new_selection) {
+case CAN__ID::ALT_can__eff:
+single_value.field_can__eff = new OCTETSTRING_template;
+single_value.field_can__eff->decode_text(text_buf);
+break;
+case CAN__ID::ALT_can__sff:
+single_value.field_can__sff = new OCTETSTRING_template;
+single_value.field_can__sff->decode_text(text_buf);
+break;
+case CAN__ID::ALT_can__rtr:
+single_value.field_can__rtr = new RTR_template;
+single_value.field_can__rtr->decode_text(text_buf);
+break;
+case CAN__ID::ALT_can__err:
+single_value.field_can__err = new BITSTRING_template;
+single_value.field_can__err->decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @Isobustest.CAN_ID.");
+}
+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 CAN__ID_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 @Isobustest.CAN_ID.");
+}
+}
+
+boolean CAN__ID_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean CAN__ID_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 CAN__ID_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 `@Isobustest.CAN_ID'");
+    }
+    if (strcmp("can_eff", param_field) == 0) {
+      can__eff().set_param(param);
+      return;
+    } else if (strcmp("can_sff", param_field) == 0) {
+      can__sff().set_param(param);
+      return;
+    } else if (strcmp("can_rtr", param_field) == 0) {
+      can__rtr().set_param(param);
+      return;
+    } else if (strcmp("can_err", param_field) == 0) {
+      can__err().set_param(param);
+      return;
+    } else param.error("Field `%s' not found in union template type `@Isobustest.CAN_ID'", 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: {
+    CAN__ID_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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", "@Isobustest.CAN_ID");
+    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, "can_eff")) {
+      can__eff().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "can_sff")) {
+      can__sff().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "can_rtr")) {
+      can__rtr().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "can_err")) {
+      can__err().set_param(*mp_last);
+      break;
+    }
+    mp_last->error("Field %s does not exist in type @Isobustest.CAN_ID.", last_name);
+  } break;
+  default:
+    param.type_error("union template", "@Isobustest.CAN_ID");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void CAN__ID_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 CAN__ID::ALT_can__eff:
+single_value.field_can__eff->check_restriction(t_res, t_name ? t_name : "@Isobustest.CAN_ID");
+return;
+case CAN__ID::ALT_can__sff:
+single_value.field_can__sff->check_restriction(t_res, t_name ? t_name : "@Isobustest.CAN_ID");
+return;
+case CAN__ID::ALT_can__rtr:
+single_value.field_can__rtr->check_restriction(t_res, t_name ? t_name : "@Isobustest.CAN_ID");
+return;
+case CAN__ID::ALT_can__err:
+single_value.field_can__err->check_restriction(t_res, t_name ? t_name : "@Isobustest.CAN_ID");
+return;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @Isobustest.CAN_ID.");
+}
+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 : "@Isobustest.CAN_ID");
+}
+
+RTR::RTR()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+RTR::RTR(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @Isobustest.RTR with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+RTR::RTR(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+RTR::RTR(const RTR& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @Isobustest.RTR.");
+enum_value = other_value.enum_value;
+}
+
+RTR& RTR::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @Isobustest.RTR.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+RTR& RTR::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+RTR& RTR::operator=(const RTR& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @Isobustest.RTR.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean RTR::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Isobustest.RTR.");
+return enum_value == other_value;
+}
+
+boolean RTR::operator==(const RTR& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Isobustest.RTR.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @Isobustest.RTR.");
+return enum_value == other_value.enum_value;
+}
+
+boolean RTR::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Isobustest.RTR.");
+return enum_value < other_value;
+}
+
+boolean RTR::operator<(const RTR& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Isobustest.RTR.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @Isobustest.RTR.");
+return enum_value < other_value.enum_value;
+}
+
+boolean RTR::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Isobustest.RTR.");
+return enum_value > other_value;
+}
+
+boolean RTR::operator>(const RTR& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Isobustest.RTR.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @Isobustest.RTR.");
+return enum_value > other_value.enum_value;
+}
+
+const char *RTR::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case RTRNULL: return "RTRNULL";
+default: return "<unknown>";
+}
+}
+
+RTR::enum_type RTR::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "RTRNULL")) return RTRNULL;
+else return UNKNOWN_VALUE;
+}
+
+boolean RTR::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 0:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int RTR::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @Isobustest.RTR.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int RTR::enum2int(const RTR& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @Isobustest.RTR.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void RTR::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @Isobustest.RTR.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+RTR::operator RTR::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @Isobustest.RTR.");
+return enum_value;
+}
+
+void RTR::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void RTR::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@Isobustest.RTR");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @Isobustest.RTR.");
+  }
+}
+
+void RTR::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @Isobustest.RTR.");
+text_buf.push_int(enum_value);
+}
+
+void RTR::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @Isobustest.RTR.", enum_value);
+}
+
+void RTR::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void RTR::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int RTR::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*)
+{
+  int decoded_value = 0;
+  int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 1, no_err);
+  if (decoded_length < 0) return decoded_length;
+  if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value;
+  else {
+    if(no_err){
+     return -1;
+    } else {
+    TTCN_EncDec_ErrorContext::error
+      (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name);
+    enum_value = UNKNOWN_VALUE;
+    }
+  }
+  return decoded_length;
+}
+
+int RTR::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const
+{
+  return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 1);
+}
+
+void RTR_template::copy_template(const RTR_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new RTR_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @Isobustest.RTR.");
+}
+}
+
+RTR_template::RTR_template()
+{
+}
+
+RTR_template::RTR_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+RTR_template::RTR_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!RTR::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @Isobustest.RTR with unknown numeric value %d.", other_value);
+single_value = (RTR::enum_type)other_value;
+}
+
+RTR_template::RTR_template(RTR::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+RTR_template::RTR_template(const RTR& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == RTR::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @Isobustest.RTR.");
+single_value = other_value.enum_value;
+}
+
+RTR_template::RTR_template(const OPTIONAL<RTR>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (RTR::enum_type)(const RTR&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @Isobustest.RTR from an unbound optional field.");
+}
+}
+
+RTR_template::RTR_template(const RTR_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+RTR_template::~RTR_template()
+{
+clean_up();
+}
+
+boolean RTR_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean RTR_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != RTR::UNBOUND_VALUE;
+}
+
+void RTR_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+RTR_template& RTR_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+RTR_template& RTR_template::operator=(int other_value)
+{
+if (!RTR::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @Isobustest.RTR.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (RTR::enum_type)other_value;
+return *this;
+}
+
+RTR_template& RTR_template::operator=(RTR::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+RTR_template& RTR_template::operator=(const RTR& other_value)
+{
+if (other_value.enum_value == RTR::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @Isobustest.RTR to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+RTR_template& RTR_template::operator=(const OPTIONAL<RTR>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (RTR::enum_type)(const RTR&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @Isobustest.RTR.");
+}
+return *this;
+}
+
+RTR_template& RTR_template::operator=(const RTR_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean RTR_template::match(RTR::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @Isobustest.RTR.");
+}
+return FALSE;
+}
+
+boolean RTR_template::match(const RTR& other_value, boolean) const
+{
+if (other_value.enum_value == RTR::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @Isobustest.RTR with an unbound value.");
+return match(other_value.enum_value);
+}
+
+RTR::enum_type RTR_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @Isobustest.RTR.");
+return single_value;
+}
+
+void RTR_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @Isobustest.RTR.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new RTR_template[list_length];
+}
+
+RTR_template& RTR_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @Isobustest.RTR.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @Isobustest.RTR.");
+return value_list.list_value[list_index];
+}
+
+void RTR_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(RTR::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void RTR_template::log_match(const RTR& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void RTR_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @Isobustest.RTR.");
+}
+}
+
+void RTR_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (RTR::enum_type)text_buf.pull_int().get_val();
+if (!RTR::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @Isobustest.RTR.", single_value);
+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 RTR_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @Isobustest.RTR.");
+}
+}
+
+boolean RTR_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean RTR_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 RTR_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    RTR_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    RTR::enum_type enum_val = RTR::str_to_enum(m_p->get_enumerated());
+    if (!RTR::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @Isobustest.RTR.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@Isobustest.RTR");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void RTR_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@Isobustest.RTR");
+}
+
+void Can__IDs::copy_value(const Can__IDs& other_value)
+{
+switch (other_value.union_selection) {
+case ALT_can__eff:
+field_can__eff = new BITSTRING(*other_value.field_can__eff);
+break;
+case ALT_can__sff:
+field_can__sff = new BITSTRING(*other_value.field_can__sff);
+break;
+case ALT_can__rtr:
+field_can__rtr = new RTR(*other_value.field_can__rtr);
+break;
+case ALT_can__err:
+field_can__err = new BITSTRING(*other_value.field_can__err);
+break;
+default:
+TTCN_error("Assignment of an unbound union value of type @Isobustest.Can_IDs.");
+}
+union_selection = other_value.union_selection;
+}
+
+Can__IDs::Can__IDs()
+{
+union_selection = UNBOUND_VALUE;
+}
+
+Can__IDs::Can__IDs(const Can__IDs& other_value)
+: Base_Type(){
+copy_value(other_value);
+}
+
+Can__IDs::~Can__IDs()
+{
+clean_up();
+}
+
+Can__IDs& Can__IDs::operator=(const Can__IDs& other_value)
+{
+if (this != &other_value) {
+clean_up();
+copy_value(other_value);
+}
+return *this;
+}
+
+boolean Can__IDs::operator==(const Can__IDs& other_value) const
+{
+if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @Isobustest.Can_IDs.");
+if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @Isobustest.Can_IDs.");
+if (union_selection != other_value.union_selection) return FALSE;
+switch (union_selection) {
+case ALT_can__eff:
+return *field_can__eff == *other_value.field_can__eff;
+case ALT_can__sff:
+return *field_can__sff == *other_value.field_can__sff;
+case ALT_can__rtr:
+return *field_can__rtr == *other_value.field_can__rtr;
+case ALT_can__err:
+return *field_can__err == *other_value.field_can__err;
+default:
+return FALSE;
+}
+}
+
+BITSTRING& Can__IDs::can__eff()
+{
+if (union_selection != ALT_can__eff) {
+clean_up();
+field_can__eff = new BITSTRING;
+union_selection = ALT_can__eff;
+}
+return *field_can__eff;
+}
+
+const BITSTRING& Can__IDs::can__eff() const
+{
+if (union_selection != ALT_can__eff) TTCN_error("Using non-selected field can_eff in a value of union type @Isobustest.Can_IDs.");
+return *field_can__eff;
+}
+
+BITSTRING& Can__IDs::can__sff()
+{
+if (union_selection != ALT_can__sff) {
+clean_up();
+field_can__sff = new BITSTRING;
+union_selection = ALT_can__sff;
+}
+return *field_can__sff;
+}
+
+const BITSTRING& Can__IDs::can__sff() const
+{
+if (union_selection != ALT_can__sff) TTCN_error("Using non-selected field can_sff in a value of union type @Isobustest.Can_IDs.");
+return *field_can__sff;
+}
+
+RTR& Can__IDs::can__rtr()
+{
+if (union_selection != ALT_can__rtr) {
+clean_up();
+field_can__rtr = new RTR;
+union_selection = ALT_can__rtr;
+}
+return *field_can__rtr;
+}
+
+const RTR& Can__IDs::can__rtr() const
+{
+if (union_selection != ALT_can__rtr) TTCN_error("Using non-selected field can_rtr in a value of union type @Isobustest.Can_IDs.");
+return *field_can__rtr;
+}
+
+BITSTRING& Can__IDs::can__err()
+{
+if (union_selection != ALT_can__err) {
+clean_up();
+field_can__err = new BITSTRING;
+union_selection = ALT_can__err;
+}
+return *field_can__err;
+}
+
+const BITSTRING& Can__IDs::can__err() const
+{
+if (union_selection != ALT_can__err) TTCN_error("Using non-selected field can_err in a value of union type @Isobustest.Can_IDs.");
+return *field_can__err;
+}
+
+boolean Can__IDs::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 @Isobustest.Can_IDs.");
+return union_selection == checked_selection;
+}
+
+boolean Can__IDs::is_bound() const
+{
+  return union_selection != UNBOUND_VALUE;
+}
+
+boolean Can__IDs::is_value() const
+{
+switch (union_selection) {
+case UNBOUND_VALUE: return FALSE;
+case ALT_can__eff: return field_can__eff->is_value();
+case ALT_can__sff: return field_can__sff->is_value();
+case ALT_can__rtr: return field_can__rtr->is_value();
+case ALT_can__err: return field_can__err->is_value();
+default: TTCN_error("Invalid selection in union is_bound");}
+}
+
+void Can__IDs::clean_up()
+{
+switch (union_selection) {
+case ALT_can__eff:
+  delete field_can__eff;
+  break;
+case ALT_can__sff:
+  delete field_can__sff;
+  break;
+case ALT_can__rtr:
+  delete field_can__rtr;
+  break;
+case ALT_can__err:
+  delete field_can__err;
+  break;
+default:
+  break;
+}
+union_selection = UNBOUND_VALUE;
+}
+
+void Can__IDs::log() const
+{
+switch (union_selection) {
+case ALT_can__eff:
+TTCN_Logger::log_event_str("{ can_eff := ");
+field_can__eff->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_can__sff:
+TTCN_Logger::log_event_str("{ can_sff := ");
+field_can__sff->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_can__rtr:
+TTCN_Logger::log_event_str("{ can_rtr := ");
+field_can__rtr->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_can__err:
+TTCN_Logger::log_event_str("{ can_err := ");
+field_can__err->log();
+TTCN_Logger::log_event_str(" }");
+break;
+default:
+TTCN_Logger::log_event_unbound();
+}
+}
+
+void Can__IDs::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, "can_eff")) {
+    can__eff().set_param(*mp_last);
+    if (!can__eff().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "can_sff")) {
+    can__sff().set_param(*mp_last);
+    if (!can__sff().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "can_rtr")) {
+    can__rtr().set_param(*mp_last);
+    if (!can__rtr().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "can_err")) {
+    can__err().set_param(*mp_last);
+    if (!can__err().is_bound()) clean_up();
+    return;
+  }
+  mp_last->error("Field %s does not exist in type @Isobustest.Can_IDs.", last_name);
+}
+
+void Can__IDs::set_implicit_omit()
+{
+switch (union_selection) {
+case ALT_can__eff:
+field_can__eff->set_implicit_omit(); break;
+case ALT_can__sff:
+field_can__sff->set_implicit_omit(); break;
+case ALT_can__rtr:
+field_can__rtr->set_implicit_omit(); break;
+case ALT_can__err:
+field_can__err->set_implicit_omit(); break;
+default: break;
+}
+}
+
+void Can__IDs::encode_text(Text_Buf& text_buf) const
+{
+text_buf.push_int(union_selection);
+switch (union_selection) {
+case ALT_can__eff:
+field_can__eff->encode_text(text_buf);
+break;
+case ALT_can__sff:
+field_can__sff->encode_text(text_buf);
+break;
+case ALT_can__rtr:
+field_can__rtr->encode_text(text_buf);
+break;
+case ALT_can__err:
+field_can__err->encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an unbound value of union type @Isobustest.Can_IDs.");
+}
+}
+
+void Can__IDs::decode_text(Text_Buf& text_buf)
+{
+switch ((union_selection_type)text_buf.pull_int().get_val()) {
+case ALT_can__eff:
+can__eff().decode_text(text_buf);
+break;
+case ALT_can__sff:
+can__sff().decode_text(text_buf);
+break;
+case ALT_can__rtr:
+can__rtr().decode_text(text_buf);
+break;
+case ALT_can__err:
+can__err().decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for type @Isobustest.Can_IDs.");
+}
+}
+
+void Can__IDs::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void Can__IDs::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int Can__IDs::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, BIT29_descr_.raw->forceomit);
+      decoded_length = can__eff().RAW_decode(BIT29_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, General__Types::BIT11_descr_.raw->forceomit);
+      decoded_length = can__sff().RAW_decode(General__Types::BIT11_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, RTR_descr_.raw->forceomit);
+      decoded_length = can__rtr().RAW_decode(RTR_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 3: {
+      RAW_Force_Omit field_force_omit(3, force_omit, BIT29_descr_.raw->forceomit);
+      decoded_length = can__err().RAW_decode(BIT29_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, BIT29_descr_.raw->forceomit);
+      decoded_length = can__eff().RAW_decode(BIT29_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, General__Types::BIT11_descr_.raw->forceomit);
+      decoded_length = can__sff().RAW_decode(General__Types::BIT11_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, RTR_descr_.raw->forceomit);
+      decoded_length = can__rtr().RAW_decode(RTR_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;
+       }
+      p_buf.set_pos_bit(starting_pos);
+      RAW_Force_Omit field_3_force_omit(3, force_omit, BIT29_descr_.raw->forceomit);
+      decoded_length = can__err().RAW_decode(BIT29_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_3_force_omit);
+      if (decoded_length >= 0) {
+         return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+       }
+ }
+ clean_up();
+ return -1;
+}
+
+int Can__IDs::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const
+{
+  int encoded_length = 0;
+  myleaf.isleaf = FALSE;
+  myleaf.body.node.num_of_nodes = 4;  myleaf.body.node.nodes = init_nodes_of_enc_tree(4);
+  memset(myleaf.body.node.nodes, 0, 4 * sizeof(RAW_enc_tree *));
+  switch (union_selection) {
+  case ALT_can__eff:
+    myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 0, BIT29_descr_.raw);
+    encoded_length = field_can__eff->RAW_encode(BIT29_descr_, *myleaf.body.node.nodes[0]);
+    myleaf.body.node.nodes[0]->coding_descr = &BIT29_descr_;
+    break;
+  case ALT_can__sff:
+    myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 1, General__Types::BIT11_descr_.raw);
+    encoded_length = field_can__sff->RAW_encode(General__Types::BIT11_descr_, *myleaf.body.node.nodes[1]);
+    myleaf.body.node.nodes[1]->coding_descr = &General__Types::BIT11_descr_;
+    break;
+  case ALT_can__rtr:
+    myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 2, RTR_descr_.raw);
+    encoded_length = field_can__rtr->RAW_encode(RTR_descr_, *myleaf.body.node.nodes[2]);
+    myleaf.body.node.nodes[2]->coding_descr = &RTR_descr_;
+    break;
+  case ALT_can__err:
+    myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 3, BIT29_descr_.raw);
+    encoded_length = field_can__err->RAW_encode(BIT29_descr_, *myleaf.body.node.nodes[3]);
+    myleaf.body.node.nodes[3]->coding_descr = &BIT29_descr_;
+    break;
+  default:
+    TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
+  }
+  return encoded_length;
+}
+
+void Can__IDs_template::copy_value(const Can__IDs& other_value)
+{
+single_value.union_selection = other_value.get_selection();
+switch (single_value.union_selection) {
+case Can__IDs::ALT_can__eff:
+single_value.field_can__eff = new BITSTRING_template(other_value.can__eff());
+break;
+case Can__IDs::ALT_can__sff:
+single_value.field_can__sff = new BITSTRING_template(other_value.can__sff());
+break;
+case Can__IDs::ALT_can__rtr:
+single_value.field_can__rtr = new RTR_template(other_value.can__rtr());
+break;
+case Can__IDs::ALT_can__err:
+single_value.field_can__err = new BITSTRING_template(other_value.can__err());
+break;
+default:
+TTCN_error("Initializing a template with an unbound value of type @Isobustest.Can_IDs.");
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void Can__IDs_template::copy_template(const Can__IDs_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 Can__IDs::ALT_can__eff:
+single_value.field_can__eff = new BITSTRING_template(*other_value.single_value.field_can__eff);
+break;
+case Can__IDs::ALT_can__sff:
+single_value.field_can__sff = new BITSTRING_template(*other_value.single_value.field_can__sff);
+break;
+case Can__IDs::ALT_can__rtr:
+single_value.field_can__rtr = new RTR_template(*other_value.single_value.field_can__rtr);
+break;
+case Can__IDs::ALT_can__err:
+single_value.field_can__err = new BITSTRING_template(*other_value.single_value.field_can__err);
+break;
+default:
+TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @Isobustest.Can_IDs.");
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new Can__IDs_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;
+default:
+TTCN_error("Copying an uninitialized template of union type @Isobustest.Can_IDs.");
+}
+set_selection(other_value);
+}
+
+Can__IDs_template::Can__IDs_template()
+{
+}
+
+Can__IDs_template::Can__IDs_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+Can__IDs_template::Can__IDs_template(const Can__IDs& other_value)
+{
+copy_value(other_value);
+}
+
+Can__IDs_template::Can__IDs_template(const OPTIONAL<Can__IDs>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const Can__IDs&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of union type @Isobustest.Can_IDs from an unbound optional field.");
+}
+}
+
+Can__IDs_template::Can__IDs_template(const Can__IDs_template& other_value)
+: Base_Template(){
+copy_template(other_value);
+}
+
+Can__IDs_template::~Can__IDs_template()
+{
+clean_up();
+}
+
+void Can__IDs_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case Can__IDs::ALT_can__eff:
+delete single_value.field_can__eff;
+break;
+case Can__IDs::ALT_can__sff:
+delete single_value.field_can__sff;
+break;
+case Can__IDs::ALT_can__rtr:
+delete single_value.field_can__rtr;
+break;
+case Can__IDs::ALT_can__err:
+delete single_value.field_can__err;
+default:
+break;
+}
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+Can__IDs_template& Can__IDs_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+Can__IDs_template& Can__IDs_template::operator=(const Can__IDs& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+Can__IDs_template& Can__IDs_template::operator=(const OPTIONAL<Can__IDs>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const Can__IDs&)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 @Isobustest.Can_IDs.");
+}
+return *this;
+}
+
+Can__IDs_template& Can__IDs_template::operator=(const Can__IDs_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean Can__IDs_template::match(const Can__IDs& 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:
+{
+Can__IDs::union_selection_type value_selection = other_value.get_selection();
+if (value_selection == Can__IDs::UNBOUND_VALUE) return FALSE;
+if (value_selection != single_value.union_selection) return FALSE;
+switch (value_selection) {
+case Can__IDs::ALT_can__eff:
+return single_value.field_can__eff->match(other_value.can__eff(), legacy);
+case Can__IDs::ALT_can__sff:
+return single_value.field_can__sff->match(other_value.can__sff(), legacy);
+case Can__IDs::ALT_can__rtr:
+return single_value.field_can__rtr->match(other_value.can__rtr(), legacy);
+case Can__IDs::ALT_can__err:
+return single_value.field_can__err->match(other_value.can__err(), legacy);
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @Isobustest.Can_IDs.");
+}
+}
+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;
+default:
+TTCN_error ("Matching an uninitialized template of union type @Isobustest.Can_IDs.");
+}
+return FALSE;
+}
+
+boolean Can__IDs_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+switch (single_value.union_selection) {
+case Can__IDs::ALT_can__eff:
+return single_value.field_can__eff->is_value();
+case Can__IDs::ALT_can__sff:
+return single_value.field_can__sff->is_value();
+case Can__IDs::ALT_can__rtr:
+return single_value.field_can__rtr->is_value();
+case Can__IDs::ALT_can__err:
+return single_value.field_can__err->is_value();
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @Isobustest.Can_IDs.");
+}
+}
+
+Can__IDs Can__IDs_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 @Isobustest.Can_IDs.");
+Can__IDs ret_val;
+switch (single_value.union_selection) {
+case Can__IDs::ALT_can__eff:
+ret_val.can__eff() = single_value.field_can__eff->valueof();
+break;
+case Can__IDs::ALT_can__sff:
+ret_val.can__sff() = single_value.field_can__sff->valueof();
+break;
+case Can__IDs::ALT_can__rtr:
+ret_val.can__rtr() = single_value.field_can__rtr->valueof();
+break;
+case Can__IDs::ALT_can__err:
+ret_val.can__err() = single_value.field_can__err->valueof();
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @Isobustest.Can_IDs.");
+}
+return ret_val;
+}
+
+Can__IDs_template& Can__IDs_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @Isobustest.Can_IDs.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @Isobustest.Can_IDs.");
+return value_list.list_value[list_index];
+}
+void Can__IDs_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error ("Internal error: Setting an invalid list for a template of union type @Isobustest.Can_IDs.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new Can__IDs_template[list_length];
+}
+
+BITSTRING_template& Can__IDs_template::can__eff()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != Can__IDs::ALT_can__eff) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_can__eff = new BITSTRING_template(ANY_VALUE);
+else single_value.field_can__eff = new BITSTRING_template;
+single_value.union_selection = Can__IDs::ALT_can__eff;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_can__eff;
+}
+
+const BITSTRING_template& Can__IDs_template::can__eff() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field can_eff in a non-specific template of union type @Isobustest.Can_IDs.");
+if (single_value.union_selection != Can__IDs::ALT_can__eff) TTCN_error("Accessing non-selected field can_eff in a template of union type @Isobustest.Can_IDs.");
+return *single_value.field_can__eff;
+}
+
+BITSTRING_template& Can__IDs_template::can__sff()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != Can__IDs::ALT_can__sff) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_can__sff = new BITSTRING_template(ANY_VALUE);
+else single_value.field_can__sff = new BITSTRING_template;
+single_value.union_selection = Can__IDs::ALT_can__sff;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_can__sff;
+}
+
+const BITSTRING_template& Can__IDs_template::can__sff() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field can_sff in a non-specific template of union type @Isobustest.Can_IDs.");
+if (single_value.union_selection != Can__IDs::ALT_can__sff) TTCN_error("Accessing non-selected field can_sff in a template of union type @Isobustest.Can_IDs.");
+return *single_value.field_can__sff;
+}
+
+RTR_template& Can__IDs_template::can__rtr()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != Can__IDs::ALT_can__rtr) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_can__rtr = new RTR_template(ANY_VALUE);
+else single_value.field_can__rtr = new RTR_template;
+single_value.union_selection = Can__IDs::ALT_can__rtr;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_can__rtr;
+}
+
+const RTR_template& Can__IDs_template::can__rtr() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field can_rtr in a non-specific template of union type @Isobustest.Can_IDs.");
+if (single_value.union_selection != Can__IDs::ALT_can__rtr) TTCN_error("Accessing non-selected field can_rtr in a template of union type @Isobustest.Can_IDs.");
+return *single_value.field_can__rtr;
+}
+
+BITSTRING_template& Can__IDs_template::can__err()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != Can__IDs::ALT_can__err) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_can__err = new BITSTRING_template(ANY_VALUE);
+else single_value.field_can__err = new BITSTRING_template;
+single_value.union_selection = Can__IDs::ALT_can__err;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_can__err;
+}
+
+const BITSTRING_template& Can__IDs_template::can__err() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field can_err in a non-specific template of union type @Isobustest.Can_IDs.");
+if (single_value.union_selection != Can__IDs::ALT_can__err) TTCN_error("Accessing non-selected field can_err in a template of union type @Isobustest.Can_IDs.");
+return *single_value.field_can__err;
+}
+
+boolean Can__IDs_template::ischosen(Can__IDs::union_selection_type checked_selection) const
+{
+if (checked_selection == Can__IDs::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @Isobustest.Can_IDs.");
+switch (template_selection) {
+case SPECIFIC_VALUE:
+if (single_value.union_selection == Can__IDs::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @Isobustest.Can_IDs.");
+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 @Isobustest.Can_IDs 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 Can__IDs_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case Can__IDs::ALT_can__eff:
+TTCN_Logger::log_event_str("{ can_eff := ");
+single_value.field_can__eff->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case Can__IDs::ALT_can__sff:
+TTCN_Logger::log_event_str("{ can_sff := ");
+single_value.field_can__sff->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case Can__IDs::ALT_can__rtr:
+TTCN_Logger::log_event_str("{ can_rtr := ");
+single_value.field_can__rtr->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case Can__IDs::ALT_can__err:
+TTCN_Logger::log_event_str("{ can_err := ");
+single_value.field_can__err->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 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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void Can__IDs_template::log_match(const Can__IDs& 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()) {
+switch (single_value.union_selection) {
+case Can__IDs::ALT_can__eff:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".can_eff");
+single_value.field_can__eff->log_match(match_value.can__eff(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ can_eff := ");
+single_value.field_can__eff->log_match(match_value.can__eff(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case Can__IDs::ALT_can__sff:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".can_sff");
+single_value.field_can__sff->log_match(match_value.can__sff(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ can_sff := ");
+single_value.field_can__sff->log_match(match_value.can__sff(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case Can__IDs::ALT_can__rtr:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".can_rtr");
+single_value.field_can__rtr->log_match(match_value.can__rtr(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ can_rtr := ");
+single_value.field_can__rtr->log_match(match_value.can__rtr(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case Can__IDs::ALT_can__err:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".can_err");
+single_value.field_can__err->log_match(match_value.can__err(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ can_err := ");
+single_value.field_can__err->log_match(match_value.can__err(), 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 Can__IDs_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 Can__IDs::ALT_can__eff:
+single_value.field_can__eff->encode_text(text_buf);
+break;
+case Can__IDs::ALT_can__sff:
+single_value.field_can__sff->encode_text(text_buf);
+break;
+case Can__IDs::ALT_can__rtr:
+single_value.field_can__rtr->encode_text(text_buf);
+break;
+case Can__IDs::ALT_can__err:
+single_value.field_can__err->encode_text(text_buf);
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @Isobustest.Can_IDs.");
+}
+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 @Isobustest.Can_IDs.");
+}
+}
+
+void Can__IDs_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+{
+single_value.union_selection = Can__IDs::UNBOUND_VALUE;
+Can__IDs::union_selection_type new_selection = (Can__IDs::union_selection_type)text_buf.pull_int().get_val();
+switch (new_selection) {
+case Can__IDs::ALT_can__eff:
+single_value.field_can__eff = new BITSTRING_template;
+single_value.field_can__eff->decode_text(text_buf);
+break;
+case Can__IDs::ALT_can__sff:
+single_value.field_can__sff = new BITSTRING_template;
+single_value.field_can__sff->decode_text(text_buf);
+break;
+case Can__IDs::ALT_can__rtr:
+single_value.field_can__rtr = new RTR_template;
+single_value.field_can__rtr->decode_text(text_buf);
+break;
+case Can__IDs::ALT_can__err:
+single_value.field_can__err = new BITSTRING_template;
+single_value.field_can__err->decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @Isobustest.Can_IDs.");
+}
+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 Can__IDs_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 @Isobustest.Can_IDs.");
+}
+}
+
+boolean Can__IDs_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean Can__IDs_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 Can__IDs_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 `@Isobustest.Can_IDs'");
+    }
+    if (strcmp("can_eff", param_field) == 0) {
+      can__eff().set_param(param);
+      return;
+    } else if (strcmp("can_sff", param_field) == 0) {
+      can__sff().set_param(param);
+      return;
+    } else if (strcmp("can_rtr", param_field) == 0) {
+      can__rtr().set_param(param);
+      return;
+    } else if (strcmp("can_err", param_field) == 0) {
+      can__err().set_param(param);
+      return;
+    } else param.error("Field `%s' not found in union template type `@Isobustest.Can_IDs'", 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: {
+    Can__IDs_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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", "@Isobustest.Can_IDs");
+    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, "can_eff")) {
+      can__eff().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "can_sff")) {
+      can__sff().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "can_rtr")) {
+      can__rtr().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "can_err")) {
+      can__err().set_param(*mp_last);
+      break;
+    }
+    mp_last->error("Field %s does not exist in type @Isobustest.Can_IDs.", last_name);
+  } break;
+  default:
+    param.type_error("union template", "@Isobustest.Can_IDs");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void Can__IDs_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 Can__IDs::ALT_can__eff:
+single_value.field_can__eff->check_restriction(t_res, t_name ? t_name : "@Isobustest.Can_IDs");
+return;
+case Can__IDs::ALT_can__sff:
+single_value.field_can__sff->check_restriction(t_res, t_name ? t_name : "@Isobustest.Can_IDs");
+return;
+case Can__IDs::ALT_can__rtr:
+single_value.field_can__rtr->check_restriction(t_res, t_name ? t_name : "@Isobustest.Can_IDs");
+return;
+case Can__IDs::ALT_can__err:
+single_value.field_can__err->check_restriction(t_res, t_name ? t_name : "@Isobustest.Can_IDs");
+return;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @Isobustest.Can_IDs.");
+}
+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 : "@Isobustest.Can_IDs");
+}
+
+Can__IDwithType::Can__IDwithType()
+{
+}
+
+Can__IDwithType::Can__IDwithType(const INTEGER& par_cantype,
+    const Can__IDs& par_can__ids)
+  :   field_cantype(par_cantype),
+  field_can__ids(par_can__ids)
+{
+}
+
+Can__IDwithType::Can__IDwithType(const Can__IDwithType& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @Isobustest.Can_IDwithType.");
+if (other_value.cantype().is_bound()) field_cantype = other_value.cantype();
+else field_cantype.clean_up();
+if (other_value.can__ids().is_bound()) field_can__ids = other_value.can__ids();
+else field_can__ids.clean_up();
+}
+
+void Can__IDwithType::clean_up()
+{
+field_cantype.clean_up();
+field_can__ids.clean_up();
+}
+
+const TTCN_Typedescriptor_t* Can__IDwithType::get_descriptor() const { return &Can__IDwithType_descr_; }
+Can__IDwithType& Can__IDwithType::operator=(const Can__IDwithType& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @Isobustest.Can_IDwithType.");
+  if (other_value.cantype().is_bound()) field_cantype = other_value.cantype();
+  else field_cantype.clean_up();
+  if (other_value.can__ids().is_bound()) field_can__ids = other_value.can__ids();
+  else field_can__ids.clean_up();
+}
+return *this;
+}
+
+boolean Can__IDwithType::operator==(const Can__IDwithType& other_value) const
+{
+return field_cantype==other_value.field_cantype
+  && field_can__ids==other_value.field_can__ids;
+}
+
+boolean Can__IDwithType::is_bound() const
+{
+return (field_cantype.is_bound())
+  || (field_can__ids.is_bound());
+}
+boolean Can__IDwithType::is_value() const
+{
+return field_cantype.is_value()
+  && field_can__ids.is_value();
+}
+void Can__IDwithType::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ cantype := ");
+field_cantype.log();
+TTCN_Logger::log_event_str(", can_ids := ");
+field_can__ids.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void Can__IDwithType::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 @Isobustest.Can_IDwithType 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) cantype().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) can__ids().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(), "cantype")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          cantype().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(), "can_ids")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          can__ids().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 @Isobustest.Can_IDwithType: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@Isobustest.Can_IDwithType");
+  }
+}
+
+void Can__IDwithType::set_implicit_omit()
+{
+if (cantype().is_bound()) cantype().set_implicit_omit();
+if (can__ids().is_bound()) can__ids().set_implicit_omit();
+}
+
+void Can__IDwithType::encode_text(Text_Buf& text_buf) const
+{
+field_cantype.encode_text(text_buf);
+field_can__ids.encode_text(text_buf);
+}
+
+void Can__IDwithType::decode_text(Text_Buf& text_buf)
+{
+field_cantype.decode_text(text_buf);
+field_can__ids.decode_text(text_buf);
+}
+
+void Can__IDwithType::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void Can__IDwithType::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int Can__IDwithType::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::INT1_descr_.raw->forceomit);
+  decoded_field_length = field_cantype.RAW_decode(General__Types::INT1_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_cantype == 4) selected_field = 0;
+  else if (field_cantype == 2) selected_field = 2;
+  else if (field_cantype == 1) selected_field = 3;
+  else if (field_cantype == 0) selected_field = 1;
+  else selected_field = -1;
+  RAW_Force_Omit field_1_force_omit(1, force_omit, Can__IDwithType_can__ids_descr_.raw->forceomit);
+  decoded_field_length = field_can__ids.RAW_decode(Can__IDwithType_can__ids_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 Can__IDwithType::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::INT1_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, Can__IDwithType_can__ids_descr_.raw);
+  encoded_length += field_cantype.RAW_encode(General__Types::INT1_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_can__ids.RAW_encode(Can__IDwithType_can__ids_descr_, *myleaf.body.node.nodes[1]);
+  switch (field_can__ids.get_selection()) {
+  case Can__IDs::ALT_can__eff:
+  if (field_cantype != 4) {
+  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);
+  INTEGER new_val(4);
+  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
+  if (temp_leaf != NULL)
+    new_val.RAW_encode(General__Types::INT1_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 Can__IDs::ALT_can__rtr:
+  if (field_cantype != 2) {
+  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);
+  INTEGER new_val(2);
+  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
+  if (temp_leaf != NULL)
+    new_val.RAW_encode(General__Types::INT1_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 Can__IDs::ALT_can__err:
+  if (field_cantype != 1) {
+  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);
+  INTEGER new_val(1);
+  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
+  if (temp_leaf != NULL)
+    new_val.RAW_encode(General__Types::INT1_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 Can__IDs::ALT_can__sff:
+  if (field_cantype != 0) {
+  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);
+  INTEGER new_val(0);
+  RAW_enc_tree* temp_leaf = myleaf.get_node(pr_pos);
+  if (temp_leaf != NULL)
+    new_val.RAW_encode(General__Types::INT1_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 Can__IDwithType_template::single_value_struct {
+INTEGER_template field_cantype;
+Can__IDs_template field_can__ids;
+};
+
+void Can__IDwithType_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_cantype = ANY_VALUE;
+single_value->field_can__ids = ANY_VALUE;
+}
+}
+}
+
+void Can__IDwithType_template::copy_value(const Can__IDwithType& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.cantype().is_bound()) {
+  single_value->field_cantype = other_value.cantype();
+} else {
+  single_value->field_cantype.clean_up();
+}
+if (other_value.can__ids().is_bound()) {
+  single_value->field_can__ids = other_value.can__ids();
+} else {
+  single_value->field_can__ids.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void Can__IDwithType_template::copy_template(const Can__IDwithType_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.cantype().get_selection()) {
+single_value->field_cantype = other_value.cantype();
+} else {
+single_value->field_cantype.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.can__ids().get_selection()) {
+single_value->field_can__ids = other_value.can__ids();
+} else {
+single_value->field_can__ids.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new Can__IDwithType_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @Isobustest.Can_IDwithType.");
+break;
+}
+set_selection(other_value);
+}
+
+Can__IDwithType_template::Can__IDwithType_template()
+{
+}
+
+Can__IDwithType_template::Can__IDwithType_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+Can__IDwithType_template::Can__IDwithType_template(const Can__IDwithType& other_value)
+{
+copy_value(other_value);
+}
+
+Can__IDwithType_template::Can__IDwithType_template(const OPTIONAL<Can__IDwithType>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const Can__IDwithType&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @Isobustest.Can_IDwithType from an unbound optional field.");
+}
+}
+
+Can__IDwithType_template::Can__IDwithType_template(const Can__IDwithType_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+Can__IDwithType_template::~Can__IDwithType_template()
+{
+clean_up();
+}
+
+Can__IDwithType_template& Can__IDwithType_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+Can__IDwithType_template& Can__IDwithType_template::operator=(const Can__IDwithType& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+Can__IDwithType_template& Can__IDwithType_template::operator=(const OPTIONAL<Can__IDwithType>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const Can__IDwithType&)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 @Isobustest.Can_IDwithType.");
+}
+return *this;
+}
+
+Can__IDwithType_template& Can__IDwithType_template::operator=(const Can__IDwithType_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean Can__IDwithType_template::match(const Can__IDwithType& 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.cantype().is_bound()) return FALSE;
+if(!single_value->field_cantype.match(other_value.cantype(), legacy))return FALSE;
+if(!other_value.can__ids().is_bound()) return FALSE;
+if(!single_value->field_can__ids.match(other_value.can__ids(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @Isobustest.Can_IDwithType.");
+}
+return FALSE;
+}
+
+boolean Can__IDwithType_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_cantype.is_bound()
+
+ ||single_value->field_can__ids.is_bound()
+;
+}
+
+boolean Can__IDwithType_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_cantype.is_value()
+ &&single_value->field_can__ids.is_value();
+}
+
+void Can__IDwithType_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+Can__IDwithType Can__IDwithType_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 @Isobustest.Can_IDwithType.");
+Can__IDwithType ret_val;
+if (single_value->field_cantype.is_bound()) {
+ret_val.cantype() = single_value->field_cantype.valueof();
+}
+if (single_value->field_can__ids.is_bound()) {
+ret_val.can__ids() = single_value->field_can__ids.valueof();
+}
+return ret_val;
+}
+
+void Can__IDwithType_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @Isobustest.Can_IDwithType.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new Can__IDwithType_template[list_length];
+}
+
+Can__IDwithType_template& Can__IDwithType_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @Isobustest.Can_IDwithType.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @Isobustest.Can_IDwithType.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& Can__IDwithType_template::cantype()
+{
+set_specific();
+return single_value->field_cantype;
+}
+
+const INTEGER_template& Can__IDwithType_template::cantype() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field cantype of a non-specific template of type @Isobustest.Can_IDwithType.");
+return single_value->field_cantype;
+}
+
+Can__IDs_template& Can__IDwithType_template::can__ids()
+{
+set_specific();
+return single_value->field_can__ids;
+}
+
+const Can__IDs_template& Can__IDwithType_template::can__ids() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field can_ids of a non-specific template of type @Isobustest.Can_IDwithType.");
+return single_value->field_can__ids;
+}
+
+int Can__IDwithType_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @Isobustest.Can_IDwithType 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 @Isobustest.Can_IDwithType 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 @Isobustest.Can_IDwithType containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @Isobustest.Can_IDwithType containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @Isobustest.Can_IDwithType containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @Isobustest.Can_IDwithType containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @Isobustest.Can_IDwithType.");
+  }
+  return 0;
+}
+
+void Can__IDwithType_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ cantype := ");
+single_value->field_cantype.log();
+TTCN_Logger::log_event_str(", can_ids := ");
+single_value->field_can__ids.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void Can__IDwithType_template::log_match(const Can__IDwithType& 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_cantype.match(match_value.cantype(), legacy)){
+TTCN_Logger::log_logmatch_info(".cantype");
+single_value->field_cantype.log_match(match_value.cantype(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_can__ids.match(match_value.can__ids(), legacy)){
+TTCN_Logger::log_logmatch_info(".can_ids");
+single_value->field_can__ids.log_match(match_value.can__ids(), 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("{ cantype := ");
+single_value->field_cantype.log_match(match_value.cantype(), legacy);
+TTCN_Logger::log_event_str(", can_ids := ");
+single_value->field_can__ids.log_match(match_value.can__ids(), 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 Can__IDwithType_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_cantype.encode_text(text_buf);
+single_value->field_can__ids.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 @Isobustest.Can_IDwithType.");
+}
+}
+
+void Can__IDwithType_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_cantype.decode_text(text_buf);
+single_value->field_can__ids.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 Can__IDwithType_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 @Isobustest.Can_IDwithType.");
+}
+}
+
+void Can__IDwithType_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: {
+    Can__IDwithType_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @Isobustest.Can_IDwithType 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) cantype().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) can__ids().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(), "cantype")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          cantype().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(), "can_ids")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          can__ids().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 @Isobustest.Can_IDwithType: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@Isobustest.Can_IDwithType");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void Can__IDwithType_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_cantype.check_restriction(t_res, t_name ? t_name : "@Isobustest.Can_IDwithType");
+single_value->field_can__ids.check_restriction(t_res, t_name ? t_name : "@Isobustest.Can_IDwithType");
+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 : "@Isobustest.Can_IDwithType");
+}
+
+boolean Can__IDwithType_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean Can__IDwithType_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 COMPONENT OpenConnections::UNBOUND_ELEM;
+OpenConnections::OpenConnections()
+{
+val_ptr = NULL;
+}
+
+OpenConnections::OpenConnections(null_type)
+{
+val_ptr = new recordof_setof_struct;
+val_ptr->ref_count = 1;
+val_ptr->n_elements = 0;
+val_ptr->value_elements = NULL;
+}
+
+OpenConnections::OpenConnections(const OpenConnections& other_value)
+{
+if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @Isobustest.OpenConnections.");
+val_ptr = other_value.val_ptr;
+val_ptr->ref_count++;
+}
+
+OpenConnections::~OpenConnections()
+{
+clean_up();
+if (val_ptr != NULL) val_ptr = NULL;
+}
+
+void OpenConnections::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.");
+}
+}
+
+OpenConnections& OpenConnections::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;
+}
+
+OpenConnections& OpenConnections::operator=(const OpenConnections& other_value)
+{
+if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @Isobustest.OpenConnections.");
+if (this != &other_value) {
+clean_up();
+val_ptr = other_value.val_ptr;
+val_ptr->ref_count++;
+}
+return *this;
+}
+
+boolean OpenConnections::operator==(null_type) const
+{
+if (val_ptr == NULL)
+TTCN_error("The left operand of comparison is an unbound value of type @Isobustest.OpenConnections.");
+return val_ptr->n_elements == 0 ;
+}
+
+boolean OpenConnections::operator==(const OpenConnections& other_value) const
+{
+if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @Isobustest.OpenConnections.");
+if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @Isobustest.OpenConnections.");
+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;
+}
+
+COMPONENT& OpenConnections::operator[](int index_value)
+{
+if (index_value < 0) TTCN_error("Accessing an element of type @Isobustest.OpenConnections 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 = (COMPONENT**)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 COMPONENT(*(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 COMPONENT;
+}
+return *val_ptr->value_elements[index_value];
+}
+
+COMPONENT& OpenConnections::operator[](const INTEGER& index_value)
+{
+index_value.must_bound("Using an unbound integer value for indexing a value of type @Isobustest.OpenConnections.");
+return (*this)[(int)index_value];
+}
+
+const COMPONENT& OpenConnections::operator[](int index_value) const
+{
+if (val_ptr == NULL)
+TTCN_error("Accessing an element in an unbound value of type @Isobustest.OpenConnections.");
+if (index_value < 0) TTCN_error("Accessing an element of type @Isobustest.OpenConnections using a negative index: %d.", index_value);
+if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @Isobustest.OpenConnections: 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 COMPONENT& OpenConnections::operator[](const INTEGER& index_value) const
+{
+index_value.must_bound("Using an unbound integer value for indexing a value of type @Isobustest.OpenConnections.");
+return (*this)[(int)index_value];
+}
+
+OpenConnections OpenConnections::operator<<=(int rotate_count) const
+{
+return *this >>= (-rotate_count);
+}
+
+OpenConnections OpenConnections::operator<<=(const INTEGER& rotate_count) const
+{
+rotate_count.must_bound("Unbound integer operand of rotate left operator.");
+return *this >>= (int)(-rotate_count);
+}
+
+OpenConnections OpenConnections::operator>>=(const INTEGER& rotate_count) const
+{
+rotate_count.must_bound("Unbound integer operand of rotate right operator.");
+return *this >>= (int)rotate_count;
+}
+
+OpenConnections OpenConnections::operator>>=(int rotate_count) const
+{
+if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @Isobustest.OpenConnections.");
+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;
+OpenConnections 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 COMPONENT(*val_ptr->value_elements[i]);
+}
+}
+return ret_val;
+}
+
+OpenConnections OpenConnections::operator+(const OpenConnections& other_value) const
+{
+if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @Isobustest.OpenConnections concatenation.");
+if (val_ptr->n_elements == 0) return other_value;
+if (other_value.val_ptr->n_elements == 0) return *this;
+OpenConnections 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 COMPONENT(*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 COMPONENT(*other_value.val_ptr->value_elements[i]);
+}
+}
+return ret_val;
+}
+
+OpenConnections OpenConnections::substr(int index, int returncount) const
+{
+if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @Isobustest.OpenConnections.");
+check_substr_arguments(val_ptr->n_elements, index, returncount, "@Isobustest.OpenConnections","element");
+OpenConnections 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 COMPONENT(*val_ptr->value_elements[i+index]);
+}
+}
+return ret_val;
+}
+
+OpenConnections OpenConnections::replace(int index, int len, const OpenConnections& repl) const
+{
+if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @Isobustest.OpenConnections.");
+if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @Isobustest.OpenConnections.");
+check_replace_arguments(val_ptr->n_elements, index, len, "@Isobustest.OpenConnections","element");
+OpenConnections 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 COMPONENT(*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 COMPONENT(*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 COMPONENT(*val_ptr->value_elements[index+i+len]);
+}
+}
+return ret_val;
+}
+
+OpenConnections OpenConnections::replace(int index, int len, const OpenConnections_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 OpenConnections::set_size(int new_size)
+{
+if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @Isobustest.OpenConnections.");
+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 = (COMPONENT**)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 COMPONENT(*(val_ptr->value_elements[elem_count]));
+}
+}
+clean_up();
+val_ptr = new_val_ptr;
+}
+if (new_size > val_ptr->n_elements) {
+val_ptr->value_elements = (COMPONENT**)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 @Isobustest.OpenConnections: %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 = (COMPONENT**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size);
+val_ptr->n_elements = new_size;
+}
+}
+
+boolean OpenConnections::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 OpenConnections::size_of() const
+{
+if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @Isobustest.OpenConnections.");
+return val_ptr->n_elements;
+}
+
+int OpenConnections::lengthof() const
+{
+if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @Isobustest.OpenConnections.");
+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 OpenConnections::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 OpenConnections::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", "@Isobustest.OpenConnections");
+    }
+    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", "@Isobustest.OpenConnections");
+    }
+    break;
+  default:
+    TTCN_error("Internal error: Unknown operation type.");
+  }
+}
+
+void OpenConnections::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 OpenConnections::encode_text(Text_Buf& text_buf) const
+{
+if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @Isobustest.OpenConnections.");
+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 OpenConnections::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 @Isobustest.OpenConnections.");
+val_ptr->value_elements = (COMPONENT**)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 COMPONENT;
+val_ptr->value_elements[elem_count]->decode_text(text_buf);
+}
+}
+
+void OpenConnections_template::copy_value(const OpenConnections& other_value)
+{
+if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @Isobustest.OpenConnections with an unbound value.");
+single_value.n_elements = other_value.size_of();
+single_value.value_elements = (COMPONENT_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 COMPONENT_template(other_value[elem_count]);
+} else {
+single_value.value_elements[elem_count] = new COMPONENT_template;
+}
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void OpenConnections_template::copy_template(const OpenConnections_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 = (COMPONENT_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 COMPONENT_template(*other_value.single_value.value_elements[elem_count]);
+} else {
+single_value.value_elements[elem_count] = new COMPONENT_template;
+}
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new OpenConnections_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @Isobustest.OpenConnections.");
+break;
+}
+set_selection(other_value);
+}
+
+boolean OpenConnections_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 OpenConnections_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const OpenConnections*)value_ptr)[value_index], legacy);
+else return ((const OpenConnections_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit();
+}
+
+OpenConnections_template::OpenConnections_template()
+{
+}
+
+OpenConnections_template::OpenConnections_template(template_sel other_value)
+ : Record_Of_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+OpenConnections_template::OpenConnections_template(null_type)
+ : Record_Of_Template(SPECIFIC_VALUE)
+{
+single_value.n_elements = 0;
+single_value.value_elements = NULL;
+}
+
+OpenConnections_template::OpenConnections_template(const OpenConnections& other_value)
+{
+copy_value(other_value);
+}
+
+OpenConnections_template::OpenConnections_template(const OPTIONAL<OpenConnections>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const OpenConnections&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @Isobustest.OpenConnections from an unbound optional field.");
+}
+}
+
+OpenConnections_template::OpenConnections_template(const OpenConnections_template& other_value)
+ : Record_Of_Template()
+{
+copy_template(other_value);
+}
+
+OpenConnections_template::~OpenConnections_template()
+{
+clean_up();
+}
+
+void OpenConnections_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:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+OpenConnections_template& OpenConnections_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+OpenConnections_template& OpenConnections_template::operator=(null_type)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value.n_elements = 0;
+single_value.value_elements = NULL;
+return *this;
+}
+
+OpenConnections_template& OpenConnections_template::operator=(const OpenConnections& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+OpenConnections_template& OpenConnections_template::operator=(const OPTIONAL<OpenConnections>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const OpenConnections&)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 @Isobustest.OpenConnections.");
+}
+return *this;
+}
+
+OpenConnections_template& OpenConnections_template::operator=(const OpenConnections_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+COMPONENT_template& OpenConnections_template::operator[](int index_value)
+{
+if (index_value < 0) TTCN_error("Accessing an element of a template for type @Isobustest.OpenConnections 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 @Isobustest.OpenConnections.");
+    break;
+}
+return *single_value.value_elements[index_value];
+}
+
+COMPONENT_template& OpenConnections_template::operator[](const INTEGER& index_value)
+{
+index_value.must_bound("Using an unbound integer value for indexing a template of type @Isobustest.OpenConnections.");
+return (*this)[(int)index_value];
+}
+
+const COMPONENT_template& OpenConnections_template::operator[](int index_value) const
+{
+if (index_value < 0) TTCN_error("Accessing an element of a template for type @Isobustest.OpenConnections using a negative index: %d.", index_value);
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @Isobustest.OpenConnections.");
+if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @Isobustest.OpenConnections: 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 COMPONENT_template& OpenConnections_template::operator[](const INTEGER& index_value) const
+{
+index_value.must_bound("Using an unbound integer value for indexing a template of type @Isobustest.OpenConnections.");
+return (*this)[(int)index_value];
+}
+
+void OpenConnections_template::set_size(int new_size)
+{
+if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @Isobustest.OpenConnections.");
+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 = (COMPONENT_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 COMPONENT_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 COMPONENT_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 = (COMPONENT_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size);
+single_value.n_elements = new_size;
+}
+}
+
+int OpenConnections_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 OpenConnections_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 @Isobustest.OpenConnections 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 @Isobustest.OpenConnections 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 @Isobustest.OpenConnections 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 @Isobustest.OpenConnections 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 @Isobustest.OpenConnections 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 @Isobustest.OpenConnections containing complemented list.", op_name);
+default:
+  TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @Isobustest.OpenConnections.", op_name);
+}
+return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @Isobustest.OpenConnections");
+}
+
+boolean OpenConnections_template::match(const OpenConnections& 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;
+default:
+TTCN_error("Matching with an uninitialized/unsupported template of type @Isobustest.OpenConnections.");
+}
+return FALSE;
+}
+
+boolean OpenConnections_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;
+}
+
+OpenConnections OpenConnections_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 @Isobustest.OpenConnections.");
+OpenConnections 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;
+}
+
+OpenConnections OpenConnections_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);
+}
+
+OpenConnections OpenConnections_template::replace(int index, int len, const OpenConnections_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());
+}
+
+OpenConnections OpenConnections_template::replace(int index, int len, const OpenConnections& 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 OpenConnections_template::set_type(template_sel template_type, unsigned int list_length)
+{
+clean_up();
+switch (template_type) {
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = list_length;
+value_list.list_value = new OpenConnections_template[list_length];
+break;
+default:
+TTCN_error("Internal error: Setting an invalid type for a template of type @Isobustest.OpenConnections.");
+}
+set_selection(template_type);
+}
+
+OpenConnections_template& OpenConnections_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of type @Isobustest.OpenConnections.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @Isobustest.OpenConnections.");
+return value_list.list_value[list_index];
+}
+
+void OpenConnections_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 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;
+default:
+log_generic();
+}
+log_restricted();
+log_ifpresent();
+}
+
+void OpenConnections_template::log_match(const OpenConnections& 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 OpenConnections_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 @Isobustest.OpenConnections.");
+}
+}
+
+void OpenConnections_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 @Isobustest.OpenConnections.");
+single_value.value_elements = (COMPONENT_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 COMPONENT_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 OpenConnections_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 @Isobustest.OpenConnections.");
+}
+}
+
+boolean OpenConnections_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean OpenConnections_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 OpenConnections_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: {
+    OpenConnections_template temp;
+    temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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;
+  default:
+    param.type_error("record of template", "@Isobustest.OpenConnections");
+  }
+  is_ifpresent = param.get_ifpresent();
+  set_length_range(param);
+}
+
+void OpenConnections_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 : "@Isobustest.OpenConnections");
+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 : "@Isobustest.OpenConnections");
+}
+
+boolean OpenConnections_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);
+}
+}
+void Isobus__PT::remove_msg_queue_head()
+{
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+switch (my_head->item_selection) {
+case MESSAGE_0:
+delete (my_head)->message_0;
+break;
+default:
+TTCN_error("Internal error: Invalid message selector in the queue of port %s.", port_name);
+}
+msg_queue_item_base *next_item = msg_queue_head->next_item;
+delete (msg_queue_item*)msg_queue_head;
+msg_queue_head = next_item;
+if (next_item == NULL) msg_queue_tail = NULL;
+TTCN_Logger::log_port_queue(TitanLoggerApiSimple::Port__Queue_operation::extract__msg, port_name, 0, ++msg_head_count, CHARSTRING(0,NULL), CHARSTRING(0,NULL));}
+
+void Isobus__PT::clear_queue()
+{
+while (msg_queue_head != NULL) remove_msg_queue_head();
+}
+
+Isobus__PT::Isobus__PT(const char *par_port_name)
+ : PORT(par_port_name)
+{
+msg_queue_head = NULL;
+msg_queue_tail = NULL;
+}
+
+Isobus__PT::~Isobus__PT()
+{
+clear_queue();
+}
+
+void Isobus__PT::send(const Isobus::CAN__frame__j1939& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect)
+{
+if (!is_started) TTCN_error("Sending a message on port %s, which is not started.", port_name);
+if (!destination_component.is_bound()) TTCN_error("Unbound component reference in the to clause of send operation.");
+const TTCN_Logger::Severity log_sev = destination_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMSEND:TTCN_Logger::PORTEVENT_MCSEND;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_send(port_name, destination_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), TTCN_Logger::log_event_str(" @Isobus.CAN_frame_j1939 : "),
+send_par.log(), TTCN_Logger::end_event_log2str()));
+}
+if (destination_component == SYSTEM_COMPREF) TTCN_error("Message cannot be sent to system on internal port %s.", port_name);
+else {
+Text_Buf text_buf;
+prepare_message(text_buf, "@Isobus.CAN_frame_j1939");
+send_par.encode_text(text_buf);
+send_data(text_buf, destination_component);
+}
+}
+
+void Isobus__PT::send(const Isobus::CAN__frame__j1939& send_par, FLOAT* timestamp_redirect)
+{
+send(send_par, COMPONENT(get_default_destination()), timestamp_redirect);
+}
+
+void Isobus__PT::send(const Isobus::CAN__frame__j1939_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect)
+{
+const Isobus::CAN__frame__j1939& send_par_value = Isobus::CAN__frame__j1939(send_par.valueof());
+send(send_par_value, destination_component, timestamp_redirect);
+}
+
+void Isobus__PT::send(const Isobus::CAN__frame__j1939_template& send_par, FLOAT* timestamp_redirect)
+{
+const Isobus::CAN__frame__j1939& send_par_value = Isobus::CAN__frame__j1939(send_par.valueof());
+send(send_par_value, COMPONENT(get_default_destination()), timestamp_redirect);
+}
+
+alt_status Isobus__PT::receive(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s failed: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+return ALT_NO;
+} else {
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS, "Matching on port %s succeeded.", port_name);
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+switch (my_head->item_selection) {
+case MESSAGE_0:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @Isobus.CAN_frame_j1939: "),
+my_head->message_0->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+default:
+TTCN_error("Internal error: unknown message");
+}
+}
+remove_msg_queue_head();
+return ALT_YES;
+}
+}
+
+alt_status Isobus__PT::check_receive(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s failed: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+return ALT_NO;
+} else {
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS, "Matching on port %s succeeded.", port_name);
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+switch (my_head->item_selection) {
+case MESSAGE_0:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::check__receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @Isobus.CAN_frame_j1939: "),
+my_head->message_0->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+default:
+TTCN_error("Internal error: unknown message");
+}
+}
+return ALT_YES;
+}
+}
+
+alt_status Isobus__PT::trigger(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s will drop a message: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else {
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS, "Matching on port %s succeeded.", port_name);
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+switch (my_head->item_selection) {
+case MESSAGE_0:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::trigger__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @Isobus.CAN_frame_j1939: "),
+my_head->message_0->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+default:
+TTCN_error("Internal error: unknown message");
+}
+}
+remove_msg_queue_head();
+return ALT_YES;
+}
+}
+
+alt_status Isobus__PT::receive(const Isobus::CAN__frame__j1939_template& value_template, Isobus::CAN__frame__j1939 *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Receive operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s failed: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+return ALT_NO;
+} else if (my_head->item_selection != MESSAGE_0) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s failed: Type of the first message in the queue is not @Isobus.CAN_frame_j1939.", port_name);
+return ALT_NO;
+} else if (!value_template.match(*my_head->message_0)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_0),
+ TTCN_Logger::end_event_log2str()));
+}
+return ALT_NO;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_0;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_0),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @Isobus.CAN_frame_j1939 : "),
+my_head->message_0->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+remove_msg_queue_head();
+return ALT_YES;
+}
+}
+
+alt_status Isobus__PT::check_receive(const Isobus::CAN__frame__j1939_template& value_template, Isobus::CAN__frame__j1939 *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Check-receive operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s failed: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+return ALT_NO;
+} else if (my_head->item_selection != MESSAGE_0) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s failed: Type of the first message in the queue is not @Isobus.CAN_frame_j1939.", port_name);
+return ALT_NO;
+} else if (!value_template.match(*my_head->message_0)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_0),
+ TTCN_Logger::end_event_log2str()));
+}
+return ALT_NO;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_0;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_0),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::check__receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @Isobus.CAN_frame_j1939 : "),
+my_head->message_0->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+return ALT_YES;
+}
+}
+
+alt_status Isobus__PT::trigger(const Isobus::CAN__frame__j1939_template& value_template, Isobus::CAN__frame__j1939 *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Trigger operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s will drop a message: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else if (my_head->item_selection != MESSAGE_0) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s will drop a message: Type of the first message in the queue is not @Isobus.CAN_frame_j1939.", port_name);
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else if (!value_template.match(*my_head->message_0)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_0),
+ TTCN_Logger::end_event_log2str()));
+}
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_0;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_0),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::trigger__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @Isobus.CAN_frame_j1939 : "),
+my_head->message_0->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+remove_msg_queue_head();
+return ALT_YES;
+}
+}
+
+void Isobus__PT::incoming_message(const Isobus::CAN__frame__j1939& incoming_par, component sender_component)
+{
+if (!is_started) TTCN_error("Port %s is not started but a message has arrived on it.", port_name);
+msg_tail_count++;
+if (TTCN_Logger::log_this_event(TTCN_Logger::PORTEVENT_MQUEUE)) {
+TTCN_Logger::log_port_queue(TitanLoggerApiSimple::Port__Queue_operation::enqueue__msg, port_name, sender_component, msg_tail_count,
+CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(TTCN_Logger::PORTEVENT_MQUEUE, TRUE), TTCN_Logger::log_event_str(" @Isobus.CAN_frame_j1939 : "), incoming_par.log(), TTCN_Logger::end_event_log2str()));
+}
+msg_queue_item *new_item = new msg_queue_item;
+new_item->item_selection = MESSAGE_0;
+new_item->message_0 = new Isobus::CAN__frame__j1939(incoming_par);
+new_item->sender_component = sender_component;
+append_to_msg_queue(new_item);
+}
+
+boolean Isobus__PT::process_message(const char *message_type, Text_Buf& incoming_buf, component sender_component, OCTETSTRING&)
+{
+if (!strcmp(message_type, "@Isobus.CAN_frame_j1939")) {
+Isobus::CAN__frame__j1939 incoming_par;
+incoming_par.decode_text(incoming_buf);
+incoming_message(incoming_par, sender_component);
+return TRUE;
+} else return FALSE;
+}
+
+void SyncMasterPort::remove_msg_queue_head()
+{
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+switch (my_head->item_selection) {
+case MESSAGE_0:
+delete (my_head)->message_0;
+break;
+default:
+TTCN_error("Internal error: Invalid message selector in the queue of port %s.", port_name);
+}
+msg_queue_item_base *next_item = msg_queue_head->next_item;
+delete (msg_queue_item*)msg_queue_head;
+msg_queue_head = next_item;
+if (next_item == NULL) msg_queue_tail = NULL;
+TTCN_Logger::log_port_queue(TitanLoggerApiSimple::Port__Queue_operation::extract__msg, port_name, 0, ++msg_head_count, CHARSTRING(0,NULL), CHARSTRING(0,NULL));}
+
+void SyncMasterPort::clear_queue()
+{
+while (msg_queue_head != NULL) remove_msg_queue_head();
+}
+
+SyncMasterPort::SyncMasterPort(const char *par_port_name)
+ : PORT(par_port_name)
+{
+msg_queue_head = NULL;
+msg_queue_tail = NULL;
+}
+
+SyncMasterPort::~SyncMasterPort()
+{
+clear_queue();
+}
+
+void SyncMasterPort::send(const SocketCANtest::PhaseStartReq& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect)
+{
+if (!is_started) TTCN_error("Sending a message on port %s, which is not started.", port_name);
+if (!destination_component.is_bound()) TTCN_error("Unbound component reference in the to clause of send operation.");
+const TTCN_Logger::Severity log_sev = destination_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMSEND:TTCN_Logger::PORTEVENT_MCSEND;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_send(port_name, destination_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), TTCN_Logger::log_event_str(" @SocketCANtest.PhaseStartReq : "),
+send_par.log(), TTCN_Logger::end_event_log2str()));
+}
+if (destination_component == SYSTEM_COMPREF) TTCN_error("Message cannot be sent to system on internal port %s.", port_name);
+else {
+Text_Buf text_buf;
+prepare_message(text_buf, "@SocketCANtest.PhaseStartReq");
+send_par.encode_text(text_buf);
+send_data(text_buf, destination_component);
+}
+}
+
+void SyncMasterPort::send(const SocketCANtest::PhaseStartReq& send_par, FLOAT* timestamp_redirect)
+{
+send(send_par, COMPONENT(get_default_destination()), timestamp_redirect);
+}
+
+void SyncMasterPort::send(const SocketCANtest::PhaseStartReq_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect)
+{
+const SocketCANtest::PhaseStartReq& send_par_value = SocketCANtest::PhaseStartReq(send_par.valueof());
+send(send_par_value, destination_component, timestamp_redirect);
+}
+
+void SyncMasterPort::send(const SocketCANtest::PhaseStartReq_template& send_par, FLOAT* timestamp_redirect)
+{
+const SocketCANtest::PhaseStartReq& send_par_value = SocketCANtest::PhaseStartReq(send_par.valueof());
+send(send_par_value, COMPONENT(get_default_destination()), timestamp_redirect);
+}
+
+alt_status SyncMasterPort::receive(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s failed: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+return ALT_NO;
+} else {
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS, "Matching on port %s succeeded.", port_name);
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+switch (my_head->item_selection) {
+case MESSAGE_0:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCANtest.PhaseEndInd: "),
+my_head->message_0->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+default:
+TTCN_error("Internal error: unknown message");
+}
+}
+remove_msg_queue_head();
+return ALT_YES;
+}
+}
+
+alt_status SyncMasterPort::check_receive(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s failed: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+return ALT_NO;
+} else {
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS, "Matching on port %s succeeded.", port_name);
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+switch (my_head->item_selection) {
+case MESSAGE_0:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::check__receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCANtest.PhaseEndInd: "),
+my_head->message_0->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+default:
+TTCN_error("Internal error: unknown message");
+}
+}
+return ALT_YES;
+}
+}
+
+alt_status SyncMasterPort::trigger(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s will drop a message: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else {
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS, "Matching on port %s succeeded.", port_name);
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+switch (my_head->item_selection) {
+case MESSAGE_0:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::trigger__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCANtest.PhaseEndInd: "),
+my_head->message_0->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+default:
+TTCN_error("Internal error: unknown message");
+}
+}
+remove_msg_queue_head();
+return ALT_YES;
+}
+}
+
+alt_status SyncMasterPort::receive(const SocketCANtest::PhaseEndInd_template& value_template, SocketCANtest::PhaseEndInd *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Receive operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s failed: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+return ALT_NO;
+} else if (my_head->item_selection != MESSAGE_0) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s failed: Type of the first message in the queue is not @SocketCANtest.PhaseEndInd.", port_name);
+return ALT_NO;
+} else if (!value_template.match(*my_head->message_0)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_0),
+ TTCN_Logger::end_event_log2str()));
+}
+return ALT_NO;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_0;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_0),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCANtest.PhaseEndInd : "),
+my_head->message_0->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+remove_msg_queue_head();
+return ALT_YES;
+}
+}
+
+alt_status SyncMasterPort::check_receive(const SocketCANtest::PhaseEndInd_template& value_template, SocketCANtest::PhaseEndInd *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Check-receive operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s failed: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+return ALT_NO;
+} else if (my_head->item_selection != MESSAGE_0) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s failed: Type of the first message in the queue is not @SocketCANtest.PhaseEndInd.", port_name);
+return ALT_NO;
+} else if (!value_template.match(*my_head->message_0)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_0),
+ TTCN_Logger::end_event_log2str()));
+}
+return ALT_NO;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_0;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_0),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::check__receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCANtest.PhaseEndInd : "),
+my_head->message_0->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+return ALT_YES;
+}
+}
+
+alt_status SyncMasterPort::trigger(const SocketCANtest::PhaseEndInd_template& value_template, SocketCANtest::PhaseEndInd *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Trigger operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s will drop a message: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else if (my_head->item_selection != MESSAGE_0) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s will drop a message: Type of the first message in the queue is not @SocketCANtest.PhaseEndInd.", port_name);
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else if (!value_template.match(*my_head->message_0)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_0),
+ TTCN_Logger::end_event_log2str()));
+}
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_0;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_0),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::trigger__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCANtest.PhaseEndInd : "),
+my_head->message_0->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+remove_msg_queue_head();
+return ALT_YES;
+}
+}
+
+void SyncMasterPort::incoming_message(const SocketCANtest::PhaseEndInd& incoming_par, component sender_component)
+{
+if (!is_started) TTCN_error("Port %s is not started but a message has arrived on it.", port_name);
+msg_tail_count++;
+if (TTCN_Logger::log_this_event(TTCN_Logger::PORTEVENT_MQUEUE)) {
+TTCN_Logger::log_port_queue(TitanLoggerApiSimple::Port__Queue_operation::enqueue__msg, port_name, sender_component, msg_tail_count,
+CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(TTCN_Logger::PORTEVENT_MQUEUE, TRUE), TTCN_Logger::log_event_str(" @SocketCANtest.PhaseEndInd : "), incoming_par.log(), TTCN_Logger::end_event_log2str()));
+}
+msg_queue_item *new_item = new msg_queue_item;
+new_item->item_selection = MESSAGE_0;
+new_item->message_0 = new SocketCANtest::PhaseEndInd(incoming_par);
+new_item->sender_component = sender_component;
+append_to_msg_queue(new_item);
+}
+
+boolean SyncMasterPort::process_message(const char *message_type, Text_Buf& incoming_buf, component sender_component, OCTETSTRING&)
+{
+if (!strcmp(message_type, "@SocketCANtest.PhaseEndInd")) {
+SocketCANtest::PhaseEndInd incoming_par;
+incoming_par.decode_text(incoming_buf);
+incoming_message(incoming_par, sender_component);
+return TRUE;
+} else return FALSE;
+}
+
+void SyncSlavePort::remove_msg_queue_head()
+{
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+switch (my_head->item_selection) {
+case MESSAGE_0:
+delete (my_head)->message_0;
+break;
+default:
+TTCN_error("Internal error: Invalid message selector in the queue of port %s.", port_name);
+}
+msg_queue_item_base *next_item = msg_queue_head->next_item;
+delete (msg_queue_item*)msg_queue_head;
+msg_queue_head = next_item;
+if (next_item == NULL) msg_queue_tail = NULL;
+TTCN_Logger::log_port_queue(TitanLoggerApiSimple::Port__Queue_operation::extract__msg, port_name, 0, ++msg_head_count, CHARSTRING(0,NULL), CHARSTRING(0,NULL));}
+
+void SyncSlavePort::clear_queue()
+{
+while (msg_queue_head != NULL) remove_msg_queue_head();
+}
+
+SyncSlavePort::SyncSlavePort(const char *par_port_name)
+ : PORT(par_port_name)
+{
+msg_queue_head = NULL;
+msg_queue_tail = NULL;
+}
+
+SyncSlavePort::~SyncSlavePort()
+{
+clear_queue();
+}
+
+void SyncSlavePort::send(const SocketCANtest::PhaseEndInd& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect)
+{
+if (!is_started) TTCN_error("Sending a message on port %s, which is not started.", port_name);
+if (!destination_component.is_bound()) TTCN_error("Unbound component reference in the to clause of send operation.");
+const TTCN_Logger::Severity log_sev = destination_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMSEND:TTCN_Logger::PORTEVENT_MCSEND;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_send(port_name, destination_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), TTCN_Logger::log_event_str(" @SocketCANtest.PhaseEndInd : "),
+send_par.log(), TTCN_Logger::end_event_log2str()));
+}
+if (destination_component == SYSTEM_COMPREF) TTCN_error("Message cannot be sent to system on internal port %s.", port_name);
+else {
+Text_Buf text_buf;
+prepare_message(text_buf, "@SocketCANtest.PhaseEndInd");
+send_par.encode_text(text_buf);
+send_data(text_buf, destination_component);
+}
+}
+
+void SyncSlavePort::send(const SocketCANtest::PhaseEndInd& send_par, FLOAT* timestamp_redirect)
+{
+send(send_par, COMPONENT(get_default_destination()), timestamp_redirect);
+}
+
+void SyncSlavePort::send(const SocketCANtest::PhaseEndInd_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect)
+{
+const SocketCANtest::PhaseEndInd& send_par_value = SocketCANtest::PhaseEndInd(send_par.valueof());
+send(send_par_value, destination_component, timestamp_redirect);
+}
+
+void SyncSlavePort::send(const SocketCANtest::PhaseEndInd_template& send_par, FLOAT* timestamp_redirect)
+{
+const SocketCANtest::PhaseEndInd& send_par_value = SocketCANtest::PhaseEndInd(send_par.valueof());
+send(send_par_value, COMPONENT(get_default_destination()), timestamp_redirect);
+}
+
+alt_status SyncSlavePort::receive(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s failed: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+return ALT_NO;
+} else {
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS, "Matching on port %s succeeded.", port_name);
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+switch (my_head->item_selection) {
+case MESSAGE_0:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCANtest.PhaseStartReq: "),
+my_head->message_0->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+default:
+TTCN_error("Internal error: unknown message");
+}
+}
+remove_msg_queue_head();
+return ALT_YES;
+}
+}
+
+alt_status SyncSlavePort::check_receive(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s failed: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+return ALT_NO;
+} else {
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS, "Matching on port %s succeeded.", port_name);
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+switch (my_head->item_selection) {
+case MESSAGE_0:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::check__receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCANtest.PhaseStartReq: "),
+my_head->message_0->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+default:
+TTCN_error("Internal error: unknown message");
+}
+}
+return ALT_YES;
+}
+}
+
+alt_status SyncSlavePort::trigger(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s will drop a message: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else {
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS, "Matching on port %s succeeded.", port_name);
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+switch (my_head->item_selection) {
+case MESSAGE_0:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::trigger__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCANtest.PhaseStartReq: "),
+my_head->message_0->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+default:
+TTCN_error("Internal error: unknown message");
+}
+}
+remove_msg_queue_head();
+return ALT_YES;
+}
+}
+
+alt_status SyncSlavePort::receive(const SocketCANtest::PhaseStartReq_template& value_template, SocketCANtest::PhaseStartReq *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Receive operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s failed: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+return ALT_NO;
+} else if (my_head->item_selection != MESSAGE_0) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s failed: Type of the first message in the queue is not @SocketCANtest.PhaseStartReq.", port_name);
+return ALT_NO;
+} else if (!value_template.match(*my_head->message_0)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_0),
+ TTCN_Logger::end_event_log2str()));
+}
+return ALT_NO;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_0;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_0),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCANtest.PhaseStartReq : "),
+my_head->message_0->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+remove_msg_queue_head();
+return ALT_YES;
+}
+}
+
+alt_status SyncSlavePort::check_receive(const SocketCANtest::PhaseStartReq_template& value_template, SocketCANtest::PhaseStartReq *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Check-receive operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s failed: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+return ALT_NO;
+} else if (my_head->item_selection != MESSAGE_0) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s failed: Type of the first message in the queue is not @SocketCANtest.PhaseStartReq.", port_name);
+return ALT_NO;
+} else if (!value_template.match(*my_head->message_0)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_0),
+ TTCN_Logger::end_event_log2str()));
+}
+return ALT_NO;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_0;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_0),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::check__receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCANtest.PhaseStartReq : "),
+my_head->message_0->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+return ALT_YES;
+}
+}
+
+alt_status SyncSlavePort::trigger(const SocketCANtest::PhaseStartReq_template& value_template, SocketCANtest::PhaseStartReq *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Trigger operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s will drop a message: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else if (my_head->item_selection != MESSAGE_0) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s will drop a message: Type of the first message in the queue is not @SocketCANtest.PhaseStartReq.", port_name);
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else if (!value_template.match(*my_head->message_0)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_0),
+ TTCN_Logger::end_event_log2str()));
+}
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_0;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_0),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::trigger__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCANtest.PhaseStartReq : "),
+my_head->message_0->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+remove_msg_queue_head();
+return ALT_YES;
+}
+}
+
+void SyncSlavePort::incoming_message(const SocketCANtest::PhaseStartReq& incoming_par, component sender_component)
+{
+if (!is_started) TTCN_error("Port %s is not started but a message has arrived on it.", port_name);
+msg_tail_count++;
+if (TTCN_Logger::log_this_event(TTCN_Logger::PORTEVENT_MQUEUE)) {
+TTCN_Logger::log_port_queue(TitanLoggerApiSimple::Port__Queue_operation::enqueue__msg, port_name, sender_component, msg_tail_count,
+CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(TTCN_Logger::PORTEVENT_MQUEUE, TRUE), TTCN_Logger::log_event_str(" @SocketCANtest.PhaseStartReq : "), incoming_par.log(), TTCN_Logger::end_event_log2str()));
+}
+msg_queue_item *new_item = new msg_queue_item;
+new_item->item_selection = MESSAGE_0;
+new_item->message_0 = new SocketCANtest::PhaseStartReq(incoming_par);
+new_item->sender_component = sender_component;
+append_to_msg_queue(new_item);
+}
+
+boolean SyncSlavePort::process_message(const char *message_type, Text_Buf& incoming_buf, component sender_component, OCTETSTRING&)
+{
+if (!strcmp(message_type, "@SocketCANtest.PhaseStartReq")) {
+SocketCANtest::PhaseStartReq incoming_par;
+incoming_par.decode_text(incoming_buf);
+incoming_message(incoming_par, sender_component);
+return TRUE;
+} else return FALSE;
+}
+
+
+const COMPONENT PTCSet::UNBOUND_ELEM;
+PTCSet::PTCSet()
+{
+val_ptr = NULL;
+}
+
+PTCSet::PTCSet(null_type)
+{
+val_ptr = new recordof_setof_struct;
+val_ptr->ref_count = 1;
+val_ptr->n_elements = 0;
+val_ptr->value_elements = NULL;
+}
+
+PTCSet::PTCSet(const PTCSet& other_value)
+{
+if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @Isobustest.PTCSet.");
+val_ptr = other_value.val_ptr;
+val_ptr->ref_count++;
+}
+
+PTCSet::~PTCSet()
+{
+clean_up();
+if (val_ptr != NULL) val_ptr = NULL;
+}
+
+void PTCSet::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.");
+}
+}
+
+PTCSet& PTCSet::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;
+}
+
+PTCSet& PTCSet::operator=(const PTCSet& other_value)
+{
+if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @Isobustest.PTCSet.");
+if (this != &other_value) {
+clean_up();
+val_ptr = other_value.val_ptr;
+val_ptr->ref_count++;
+}
+return *this;
+}
+
+boolean PTCSet::operator==(null_type) const
+{
+if (val_ptr == NULL)
+TTCN_error("The left operand of comparison is an unbound value of type @Isobustest.PTCSet.");
+return val_ptr->n_elements == 0 ;
+}
+
+boolean PTCSet::operator==(const PTCSet& other_value) const
+{
+if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @Isobustest.PTCSet.");
+if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @Isobustest.PTCSet.");
+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;
+}
+
+COMPONENT& PTCSet::operator[](int index_value)
+{
+if (index_value < 0) TTCN_error("Accessing an element of type @Isobustest.PTCSet 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 = (COMPONENT**)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 COMPONENT(*(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 COMPONENT;
+}
+return *val_ptr->value_elements[index_value];
+}
+
+COMPONENT& PTCSet::operator[](const INTEGER& index_value)
+{
+index_value.must_bound("Using an unbound integer value for indexing a value of type @Isobustest.PTCSet.");
+return (*this)[(int)index_value];
+}
+
+const COMPONENT& PTCSet::operator[](int index_value) const
+{
+if (val_ptr == NULL)
+TTCN_error("Accessing an element in an unbound value of type @Isobustest.PTCSet.");
+if (index_value < 0) TTCN_error("Accessing an element of type @Isobustest.PTCSet using a negative index: %d.", index_value);
+if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @Isobustest.PTCSet: 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 COMPONENT& PTCSet::operator[](const INTEGER& index_value) const
+{
+index_value.must_bound("Using an unbound integer value for indexing a value of type @Isobustest.PTCSet.");
+return (*this)[(int)index_value];
+}
+
+PTCSet PTCSet::operator<<=(int rotate_count) const
+{
+return *this >>= (-rotate_count);
+}
+
+PTCSet PTCSet::operator<<=(const INTEGER& rotate_count) const
+{
+rotate_count.must_bound("Unbound integer operand of rotate left operator.");
+return *this >>= (int)(-rotate_count);
+}
+
+PTCSet PTCSet::operator>>=(const INTEGER& rotate_count) const
+{
+rotate_count.must_bound("Unbound integer operand of rotate right operator.");
+return *this >>= (int)rotate_count;
+}
+
+PTCSet PTCSet::operator>>=(int rotate_count) const
+{
+if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @Isobustest.PTCSet.");
+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;
+PTCSet 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 COMPONENT(*val_ptr->value_elements[i]);
+}
+}
+return ret_val;
+}
+
+PTCSet PTCSet::operator+(const PTCSet& other_value) const
+{
+if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @Isobustest.PTCSet concatenation.");
+if (val_ptr->n_elements == 0) return other_value;
+if (other_value.val_ptr->n_elements == 0) return *this;
+PTCSet 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 COMPONENT(*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 COMPONENT(*other_value.val_ptr->value_elements[i]);
+}
+}
+return ret_val;
+}
+
+PTCSet PTCSet::substr(int index, int returncount) const
+{
+if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @Isobustest.PTCSet.");
+check_substr_arguments(val_ptr->n_elements, index, returncount, "@Isobustest.PTCSet","element");
+PTCSet 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 COMPONENT(*val_ptr->value_elements[i+index]);
+}
+}
+return ret_val;
+}
+
+PTCSet PTCSet::replace(int index, int len, const PTCSet& repl) const
+{
+if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @Isobustest.PTCSet.");
+if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @Isobustest.PTCSet.");
+check_replace_arguments(val_ptr->n_elements, index, len, "@Isobustest.PTCSet","element");
+PTCSet 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 COMPONENT(*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 COMPONENT(*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 COMPONENT(*val_ptr->value_elements[index+i+len]);
+}
+}
+return ret_val;
+}
+
+PTCSet PTCSet::replace(int index, int len, const PTCSet_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 PTCSet::set_size(int new_size)
+{
+if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @Isobustest.PTCSet.");
+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 = (COMPONENT**)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 COMPONENT(*(val_ptr->value_elements[elem_count]));
+}
+}
+clean_up();
+val_ptr = new_val_ptr;
+}
+if (new_size > val_ptr->n_elements) {
+val_ptr->value_elements = (COMPONENT**)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 @Isobustest.PTCSet: %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 = (COMPONENT**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size);
+val_ptr->n_elements = new_size;
+}
+}
+
+boolean PTCSet::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 PTCSet::size_of() const
+{
+if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @Isobustest.PTCSet.");
+return val_ptr->n_elements;
+}
+
+int PTCSet::lengthof() const
+{
+if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @Isobustest.PTCSet.");
+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 PTCSet::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 PTCSet::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", "@Isobustest.PTCSet");
+    }
+    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", "@Isobustest.PTCSet");
+    }
+    break;
+  default:
+    TTCN_error("Internal error: Unknown operation type.");
+  }
+}
+
+void PTCSet::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 PTCSet::encode_text(Text_Buf& text_buf) const
+{
+if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @Isobustest.PTCSet.");
+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 PTCSet::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 @Isobustest.PTCSet.");
+val_ptr->value_elements = (COMPONENT**)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 COMPONENT;
+val_ptr->value_elements[elem_count]->decode_text(text_buf);
+}
+}
+
+void PTCSet_template::copy_value(const PTCSet& other_value)
+{
+if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @Isobustest.PTCSet with an unbound value.");
+single_value.n_elements = other_value.size_of();
+single_value.value_elements = (COMPONENT_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 COMPONENT_template(other_value[elem_count]);
+} else {
+single_value.value_elements[elem_count] = new COMPONENT_template;
+}
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void PTCSet_template::copy_template(const PTCSet_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 = (COMPONENT_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 COMPONENT_template(*other_value.single_value.value_elements[elem_count]);
+} else {
+single_value.value_elements[elem_count] = new COMPONENT_template;
+}
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new PTCSet_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @Isobustest.PTCSet.");
+break;
+}
+set_selection(other_value);
+}
+
+boolean PTCSet_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 PTCSet_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const PTCSet*)value_ptr)[value_index], legacy);
+else return ((const PTCSet_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit();
+}
+
+PTCSet_template::PTCSet_template()
+{
+}
+
+PTCSet_template::PTCSet_template(template_sel other_value)
+ : Record_Of_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+PTCSet_template::PTCSet_template(null_type)
+ : Record_Of_Template(SPECIFIC_VALUE)
+{
+single_value.n_elements = 0;
+single_value.value_elements = NULL;
+}
+
+PTCSet_template::PTCSet_template(const PTCSet& other_value)
+{
+copy_value(other_value);
+}
+
+PTCSet_template::PTCSet_template(const OPTIONAL<PTCSet>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const PTCSet&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @Isobustest.PTCSet from an unbound optional field.");
+}
+}
+
+PTCSet_template::PTCSet_template(const PTCSet_template& other_value)
+ : Record_Of_Template()
+{
+copy_template(other_value);
+}
+
+PTCSet_template::~PTCSet_template()
+{
+clean_up();
+}
+
+void PTCSet_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:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+PTCSet_template& PTCSet_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+PTCSet_template& PTCSet_template::operator=(null_type)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value.n_elements = 0;
+single_value.value_elements = NULL;
+return *this;
+}
+
+PTCSet_template& PTCSet_template::operator=(const PTCSet& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+PTCSet_template& PTCSet_template::operator=(const OPTIONAL<PTCSet>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const PTCSet&)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 @Isobustest.PTCSet.");
+}
+return *this;
+}
+
+PTCSet_template& PTCSet_template::operator=(const PTCSet_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+COMPONENT_template& PTCSet_template::operator[](int index_value)
+{
+if (index_value < 0) TTCN_error("Accessing an element of a template for type @Isobustest.PTCSet 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 @Isobustest.PTCSet.");
+    break;
+}
+return *single_value.value_elements[index_value];
+}
+
+COMPONENT_template& PTCSet_template::operator[](const INTEGER& index_value)
+{
+index_value.must_bound("Using an unbound integer value for indexing a template of type @Isobustest.PTCSet.");
+return (*this)[(int)index_value];
+}
+
+const COMPONENT_template& PTCSet_template::operator[](int index_value) const
+{
+if (index_value < 0) TTCN_error("Accessing an element of a template for type @Isobustest.PTCSet using a negative index: %d.", index_value);
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @Isobustest.PTCSet.");
+if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @Isobustest.PTCSet: 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 COMPONENT_template& PTCSet_template::operator[](const INTEGER& index_value) const
+{
+index_value.must_bound("Using an unbound integer value for indexing a template of type @Isobustest.PTCSet.");
+return (*this)[(int)index_value];
+}
+
+void PTCSet_template::set_size(int new_size)
+{
+if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @Isobustest.PTCSet.");
+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 = (COMPONENT_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 COMPONENT_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 COMPONENT_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 = (COMPONENT_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size);
+single_value.n_elements = new_size;
+}
+}
+
+int PTCSet_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 PTCSet_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 @Isobustest.PTCSet 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 @Isobustest.PTCSet 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 @Isobustest.PTCSet 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 @Isobustest.PTCSet 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 @Isobustest.PTCSet 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 @Isobustest.PTCSet containing complemented list.", op_name);
+default:
+  TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @Isobustest.PTCSet.", op_name);
+}
+return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @Isobustest.PTCSet");
+}
+
+boolean PTCSet_template::match(const PTCSet& 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;
+default:
+TTCN_error("Matching with an uninitialized/unsupported template of type @Isobustest.PTCSet.");
+}
+return FALSE;
+}
+
+boolean PTCSet_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;
+}
+
+PTCSet PTCSet_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 @Isobustest.PTCSet.");
+PTCSet 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;
+}
+
+PTCSet PTCSet_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);
+}
+
+PTCSet PTCSet_template::replace(int index, int len, const PTCSet_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());
+}
+
+PTCSet PTCSet_template::replace(int index, int len, const PTCSet& 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 PTCSet_template::set_type(template_sel template_type, unsigned int list_length)
+{
+clean_up();
+switch (template_type) {
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = list_length;
+value_list.list_value = new PTCSet_template[list_length];
+break;
+default:
+TTCN_error("Internal error: Setting an invalid type for a template of type @Isobustest.PTCSet.");
+}
+set_selection(template_type);
+}
+
+PTCSet_template& PTCSet_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of type @Isobustest.PTCSet.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @Isobustest.PTCSet.");
+return value_list.list_value[list_index];
+}
+
+void PTCSet_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 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;
+default:
+log_generic();
+}
+log_restricted();
+log_ifpresent();
+}
+
+void PTCSet_template::log_match(const PTCSet& 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 PTCSet_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 @Isobustest.PTCSet.");
+}
+}
+
+void PTCSet_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 @Isobustest.PTCSet.");
+single_value.value_elements = (COMPONENT_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 COMPONENT_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 PTCSet_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 @Isobustest.PTCSet.");
+}
+}
+
+boolean PTCSet_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean PTCSet_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 PTCSet_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: {
+    PTCSet_template temp;
+    temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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;
+  default:
+    param.type_error("record of template", "@Isobustest.PTCSet");
+  }
+  is_ifpresent = param.get_ifpresent();
+  set_length_range(param);
+}
+
+void PTCSet_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 : "@Isobustest.PTCSet");
+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 : "@Isobustest.PTCSet");
+}
+
+boolean PTCSet_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);
+}
+}
+
+/* Bodies of functions, altsteps and testcases */
+
+boolean operator==(null_type, const OpenConnections& other_value)
+{
+if (other_value.val_ptr == NULL)
+TTCN_error("The right operand of comparison is an unbound value of type @Isobustest.OpenConnections.");
+return other_value.val_ptr->n_elements == 0;
+}
+
+boolean operator==(null_type, const PTCSet& other_value)
+{
+if (other_value.val_ptr == NULL)
+TTCN_error("The right operand of comparison is an unbound value of type @Isobustest.PTCSet.");
+return other_value.val_ptr->n_elements == 0;
+}
+
+SocketCAN__Types::SocketCAN__socket__result f__open__socket2(const SocketCANtest::SocketCAN__open__socket__type& v__socket__type)
+{
+TTCN_Location current_location("Isobustest.ttcn", 130, TTCN_Location::LOCATION_FUNCTION, "f_open_socket2");
+current_location.update_lineno(134);
+#line 134 "Isobustest.ttcn"
+SocketCAN__Types::SocketCAN__socket__result v__result;
+current_location.update_lineno(135);
+#line 135 "Isobustest.ttcn"
+TIMER t__guard("t_guard");
+current_location.update_lineno(136);
+#line 136 "Isobustest.ttcn"
+t__guard.start(SocketCANtest::c__guard);
+current_location.update_lineno(138);
+#line 138 "Isobustest.ttcn"
+SocketCAN__Types::SocketCAN__socket socket;
+current_location.update_lineno(140);
+#line 140 "Isobustest.ttcn"
+if ((v__socket__type == SocketCANtest::SocketCAN__open__socket__type::OPEN__CAN__RAW)) {
+current_location.update_lineno(141);
+#line 141 "Isobustest.ttcn"
+socket.domain() = Can::AdresseFamily__enum::PF__CAN;
+socket.ptype() = Can::ProtocolFamily__enum::SOCK__RAW;
+socket.protocol() = Can::PF__CAN__protocols__enum::CAN__RAW;
+}
+else {
+current_location.update_lineno(142);
+#line 142 "Isobustest.ttcn"
+if ((v__socket__type == SocketCANtest::SocketCAN__open__socket__type::OPEN__CAN__BCM)) {
+current_location.update_lineno(143);
+#line 143 "Isobustest.ttcn"
+socket.domain() = Can::AdresseFamily__enum::PF__CAN;
+socket.ptype() = Can::ProtocolFamily__enum::SOCK__DGRAM;
+socket.protocol() = Can::PF__CAN__protocols__enum::CAN__BCM;
+}
+}
+current_location.update_lineno(145);
+#line 145 "Isobustest.ttcn"
+PTC__isobus__CT_component_pt__socketCAN.send(socket, NULL);
+current_location.update_lineno(148);
+#line 148 "Isobustest.ttcn"
+{
+tmp_2:
+alt_status tmp_2_alt_flag_0 = ALT_MAYBE;
+alt_status tmp_2_alt_flag_1 = ALT_MAYBE;
+alt_status tmp_2_alt_flag_2 = ALT_MAYBE;
+alt_status tmp_2_alt_flag_3 = ALT_MAYBE;
+alt_status tmp_2_default_flag = ALT_MAYBE;
+TTCN_Snapshot::take_new(FALSE);
+for ( ; ; ) {
+if (tmp_2_alt_flag_0 == ALT_MAYBE) {
+current_location.update_lineno(149);
+#line 149 "Isobustest.ttcn"
+tmp_2_alt_flag_0 = PTC__isobus__CT_component_pt__socketCAN.receive(SocketCAN__Templates::a__SocketCAN__socket__result(SocketCAN__Templates::a__result(SocketCAN__Types::SocketCAN__Result__code::SocketCAN__SUCCESS)), &(v__result), any_compref, NULL, NULL, NULL);
+if (tmp_2_alt_flag_0 == ALT_YES) {
+current_location.update_lineno(151);
+#line 151 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("SocketCan:Socket opened: ");
+const_cast< const SocketCAN__Types::SocketCAN__socket__result&>(v__result).id().log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+break;
+}
+}
+if (tmp_2_alt_flag_1 == ALT_MAYBE) {
+current_location.update_lineno(152);
+#line 152 "Isobustest.ttcn"
+tmp_2_alt_flag_1 = PTC__isobus__CT_component_pt__socketCAN.receive(SocketCAN__Templates::a__SocketCAN__socket__result(SocketCAN__Templates::a__result(SocketCAN__Types::SocketCAN__Result__code::SocketCAN__ERROR)), NULL, any_compref, NULL, NULL, NULL);
+if (tmp_2_alt_flag_1 == ALT_YES) {
+current_location.update_lineno(153);
+#line 153 "Isobustest.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "Received Opening Socket failed");
+current_location.update_lineno(153);
+#line 153 "Isobustest.ttcn"
+TTCN_Runtime::setverdict(FAIL);
+break;
+}
+}
+if (tmp_2_alt_flag_2 == ALT_MAYBE) {
+current_location.update_lineno(154);
+#line 154 "Isobustest.ttcn"
+tmp_2_alt_flag_2 = t__guard.timeout(NULL);
+if (tmp_2_alt_flag_2 == ALT_YES) {
+current_location.update_lineno(155);
+#line 155 "Isobustest.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "timeout!");
+current_location.update_lineno(156);
+#line 156 "Isobustest.ttcn"
+TTCN_Runtime::setverdict(FAIL);
+break;
+}
+}
+if (tmp_2_alt_flag_3 == ALT_MAYBE) {
+current_location.update_lineno(157);
+#line 157 "Isobustest.ttcn"
+tmp_2_alt_flag_3 = t__guard.timeout(NULL);
+if (tmp_2_alt_flag_3 == ALT_YES) {
+current_location.update_lineno(158);
+#line 158 "Isobustest.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "timeout!");
+current_location.update_lineno(159);
+#line 159 "Isobustest.ttcn"
+TTCN_Runtime::setverdict(FAIL);
+break;
+}
+}
+if (tmp_2_default_flag == ALT_MAYBE) {
+tmp_2_default_flag = TTCN_Default::try_altsteps();
+if (tmp_2_default_flag == ALT_YES || tmp_2_default_flag == ALT_BREAK) break;
+else if (tmp_2_default_flag == ALT_REPEAT) goto tmp_2;
+}
+current_location.update_lineno(148);
+#line 148 "Isobustest.ttcn"
+if (tmp_2_alt_flag_0 == ALT_NO && tmp_2_alt_flag_1 == ALT_NO && tmp_2_alt_flag_2 == ALT_NO && tmp_2_alt_flag_3 == ALT_NO && tmp_2_default_flag == ALT_NO) TTCN_error("None of the branches can be chosen in the alt statement in file Isobustest.ttcn between lines 148 and 160.");
+TTCN_Snapshot::take_new(TRUE);
+}
+}
+current_location.update_lineno(161);
+#line 161 "Isobustest.ttcn"
+t__guard.stop();
+current_location.update_lineno(162);
+#line 162 "Isobustest.ttcn"
+return v__result;
+}
+
+void start_f__open__socket2(const COMPONENT& component_reference, const SocketCANtest::SocketCAN__open__socket__type& v__socket__type)
+{
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_open_socket2(");
+v__socket__type.log();
+TTCN_Logger::log_event_str(") on component ");
+component_reference.log();
+TTCN_Logger::log_char('.');
+TTCN_Logger::end_event();
+Text_Buf text_buf;
+TTCN_Runtime::prepare_start_component(component_reference, "Isobustest", "f_open_socket2", text_buf);
+v__socket__type.encode_text(text_buf);
+TTCN_Runtime::send_start_component(text_buf);
+}
+
+SocketCANtest::SocketCAN__open__raw__result f__open__raw2()
+{
+TTCN_Location current_location("Isobustest.ttcn", 165, TTCN_Location::LOCATION_FUNCTION, "f_open_raw2");
+current_location.update_lineno(168);
+#line 168 "Isobustest.ttcn"
+INTEGER v__socket__id;
+current_location.update_lineno(169);
+#line 169 "Isobustest.ttcn"
+v__socket__id = f__open__socket2(SocketCANtest::SocketCAN__open__socket__type::OPEN__CAN__RAW).id();
+current_location.update_lineno(170);
+#line 170 "Isobustest.ttcn"
+SocketCAN__Types::SocketCAN__ifr v__ifr;
+current_location.update_lineno(171);
+#line 171 "Isobustest.ttcn"
+v__ifr = f__ioctl__get__if__index2(v__socket__id).ifr();
+current_location.update_lineno(172);
+#line 172 "Isobustest.ttcn"
+SocketCAN__Types::SocketCAN__bind__result v__bind__result;
+current_location.update_lineno(173);
+#line 173 "Isobustest.ttcn"
+v__bind__result = f__bind2(v__socket__id, const_cast< const SocketCAN__Types::SocketCAN__ifr&>(v__ifr).if__index());
+current_location.update_lineno(175);
+#line 175 "Isobustest.ttcn"
+SocketCANtest::SocketCAN__open__raw__result v__result;
+current_location.update_lineno(176);
+#line 176 "Isobustest.ttcn"
+v__result.ifr() = v__ifr;
+v__result.socket__id() = v__socket__id;
+current_location.update_lineno(178);
+#line 178 "Isobustest.ttcn"
+return v__result;
+}
+
+void start_f__open__raw2(const COMPONENT& component_reference)
+{
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_open_raw2(");
+TTCN_Logger::log_event_str(") on component ");
+component_reference.log();
+TTCN_Logger::log_char('.');
+TTCN_Logger::end_event();
+Text_Buf text_buf;
+TTCN_Runtime::prepare_start_component(component_reference, "Isobustest", "f_open_raw2", text_buf);
+TTCN_Runtime::send_start_component(text_buf);
+}
+
+SocketCAN__Types::SocketCAN__ioctl__result f__ioctl__get__if__index2(const INTEGER& p__socket__id)
+{
+TTCN_Location current_location("Isobustest.ttcn", 181, TTCN_Location::LOCATION_FUNCTION, "f_ioctl_get_if_index2");
+current_location.update_lineno(184);
+#line 184 "Isobustest.ttcn"
+SocketCAN__Types::SocketCAN__ioctl__result v__result;
+current_location.update_lineno(185);
+#line 185 "Isobustest.ttcn"
+TIMER t__guard("t_guard");
+current_location.update_lineno(186);
+#line 186 "Isobustest.ttcn"
+t__guard.start(SocketCANtest::c__guard);
+current_location.update_lineno(188);
+#line 188 "Isobustest.ttcn"
+{
+SocketCAN__Types::SocketCAN__ioctl_template tmp_7;
+tmp_7.id() = p__socket__id;
+tmp_7.ifu() = OMIT_VALUE;
+PTC__isobus__CT_component_pt__socketCAN.send(tmp_7, NULL);
+}
+current_location.update_lineno(190);
+#line 190 "Isobustest.ttcn"
+{
+tmp_8:
+alt_status tmp_8_alt_flag_0 = ALT_MAYBE;
+alt_status tmp_8_alt_flag_1 = ALT_MAYBE;
+alt_status tmp_8_alt_flag_2 = ALT_MAYBE;
+alt_status tmp_8_default_flag = ALT_MAYBE;
+TTCN_Snapshot::take_new(FALSE);
+for ( ; ; ) {
+if (tmp_8_alt_flag_0 == ALT_MAYBE) {
+current_location.update_lineno(191);
+#line 191 "Isobustest.ttcn"
+tmp_8_alt_flag_0 = PTC__isobus__CT_component_pt__socketCAN.receive(SocketCAN__Templates::a__SocketCAN__ioctl__result(SocketCAN__Templates::a__result(SocketCAN__Types::SocketCAN__Result__code::SocketCAN__SUCCESS)), &(v__result), any_compref, NULL, NULL, NULL);
+if (tmp_8_alt_flag_0 == ALT_YES) {
+current_location.update_lineno(192);
+#line 192 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("Retrieved interface index");
+const_cast< const SocketCAN__Types::SocketCAN__ioctl__result&>(v__result).ifr().if__index().log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+break;
+}
+}
+if (tmp_8_alt_flag_1 == ALT_MAYBE) {
+current_location.update_lineno(193);
+#line 193 "Isobustest.ttcn"
+tmp_8_alt_flag_1 = PTC__isobus__CT_component_pt__socketCAN.receive(SocketCAN__Templates::a__SocketCAN__ioctl__result(SocketCAN__Templates::a__result(SocketCAN__Types::SocketCAN__Result__code::SocketCAN__ERROR)), NULL, any_compref, NULL, NULL, NULL);
+if (tmp_8_alt_flag_1 == ALT_YES) {
+current_location.update_lineno(194);
+#line 194 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("Retrieving interface index failed");
+p__socket__id.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(194);
+#line 194 "Isobustest.ttcn"
+TTCN_Runtime::setverdict(FAIL);
+break;
+}
+}
+if (tmp_8_alt_flag_2 == ALT_MAYBE) {
+current_location.update_lineno(195);
+#line 195 "Isobustest.ttcn"
+tmp_8_alt_flag_2 = t__guard.timeout(NULL);
+if (tmp_8_alt_flag_2 == ALT_YES) {
+current_location.update_lineno(196);
+#line 196 "Isobustest.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "timeout!");
+current_location.update_lineno(197);
+#line 197 "Isobustest.ttcn"
+TTCN_Runtime::setverdict(FAIL);
+break;
+}
+}
+if (tmp_8_default_flag == ALT_MAYBE) {
+tmp_8_default_flag = TTCN_Default::try_altsteps();
+if (tmp_8_default_flag == ALT_YES || tmp_8_default_flag == ALT_BREAK) break;
+else if (tmp_8_default_flag == ALT_REPEAT) goto tmp_8;
+}
+current_location.update_lineno(190);
+#line 190 "Isobustest.ttcn"
+if (tmp_8_alt_flag_0 == ALT_NO && tmp_8_alt_flag_1 == ALT_NO && tmp_8_alt_flag_2 == ALT_NO && tmp_8_default_flag == ALT_NO) TTCN_error("None of the branches can be chosen in the alt statement in file Isobustest.ttcn between lines 190 and 199.");
+TTCN_Snapshot::take_new(TRUE);
+}
+}
+current_location.update_lineno(200);
+#line 200 "Isobustest.ttcn"
+return v__result;
+}
+
+void start_f__ioctl__get__if__index2(const COMPONENT& component_reference, const INTEGER& p__socket__id)
+{
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_ioctl_get_if_index2(");
+p__socket__id.log();
+TTCN_Logger::log_event_str(") on component ");
+component_reference.log();
+TTCN_Logger::log_char('.');
+TTCN_Logger::end_event();
+Text_Buf text_buf;
+TTCN_Runtime::prepare_start_component(component_reference, "Isobustest", "f_ioctl_get_if_index2", text_buf);
+p__socket__id.encode_text(text_buf);
+TTCN_Runtime::send_start_component(text_buf);
+}
+
+SocketCAN__Types::SocketCAN__bind__result f__bind2(const INTEGER& p__socket__id, const INTEGER& p__if__index)
+{
+TTCN_Location current_location("Isobustest.ttcn", 203, TTCN_Location::LOCATION_FUNCTION, "f_bind2");
+current_location.update_lineno(207);
+#line 207 "Isobustest.ttcn"
+SocketCAN__Types::SocketCAN__bind__result v__result;
+current_location.update_lineno(208);
+#line 208 "Isobustest.ttcn"
+TIMER t__guard("t_guard");
+current_location.update_lineno(209);
+#line 209 "Isobustest.ttcn"
+t__guard.start(SocketCANtest::c__guard);
+current_location.update_lineno(211);
+#line 211 "Isobustest.ttcn"
+{
+SocketCAN__Types::SocketCAN__bind_template tmp_9;
+tmp_9.id() = p__socket__id;
+tmp_9.bindu().raw().if__index() = p__if__index;
+PTC__isobus__CT_component_pt__socketCAN.send(tmp_9, NULL);
+}
+current_location.update_lineno(212);
+#line 212 "Isobustest.ttcn"
+{
+tmp_10:
+alt_status tmp_10_alt_flag_0 = ALT_MAYBE;
+alt_status tmp_10_alt_flag_1 = ALT_MAYBE;
+alt_status tmp_10_alt_flag_2 = ALT_MAYBE;
+alt_status tmp_10_default_flag = ALT_MAYBE;
+TTCN_Snapshot::take_new(FALSE);
+for ( ; ; ) {
+if (tmp_10_alt_flag_0 == ALT_MAYBE) {
+current_location.update_lineno(213);
+#line 213 "Isobustest.ttcn"
+tmp_10_alt_flag_0 = PTC__isobus__CT_component_pt__socketCAN.receive(SocketCAN__Templates::a__SocketCAN__bind__result(SocketCAN__Templates::a__result(SocketCAN__Types::SocketCAN__Result__code::SocketCAN__SUCCESS)), &(v__result), any_compref, NULL, NULL, NULL);
+if (tmp_10_alt_flag_0 == ALT_YES) {
+current_location.update_lineno(214);
+#line 214 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("Binding socket");
+p__socket__id.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+break;
+}
+}
+if (tmp_10_alt_flag_1 == ALT_MAYBE) {
+current_location.update_lineno(215);
+#line 215 "Isobustest.ttcn"
+tmp_10_alt_flag_1 = PTC__isobus__CT_component_pt__socketCAN.receive(SocketCAN__Templates::a__SocketCAN__bind__result(SocketCAN__Templates::a__result(SocketCAN__Types::SocketCAN__Result__code::SocketCAN__ERROR)), NULL, any_compref, NULL, NULL, NULL);
+if (tmp_10_alt_flag_1 == ALT_YES) break;
+}
+if (tmp_10_alt_flag_2 == ALT_MAYBE) {
+current_location.update_lineno(216);
+#line 216 "Isobustest.ttcn"
+tmp_10_alt_flag_2 = t__guard.timeout(NULL);
+if (tmp_10_alt_flag_2 == ALT_YES) {
+current_location.update_lineno(217);
+#line 217 "Isobustest.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "timeout!");
+current_location.update_lineno(218);
+#line 218 "Isobustest.ttcn"
+TTCN_Runtime::setverdict(FAIL);
+break;
+}
+}
+if (tmp_10_default_flag == ALT_MAYBE) {
+tmp_10_default_flag = TTCN_Default::try_altsteps();
+if (tmp_10_default_flag == ALT_YES || tmp_10_default_flag == ALT_BREAK) break;
+else if (tmp_10_default_flag == ALT_REPEAT) goto tmp_10;
+}
+current_location.update_lineno(212);
+#line 212 "Isobustest.ttcn"
+if (tmp_10_alt_flag_0 == ALT_NO && tmp_10_alt_flag_1 == ALT_NO && tmp_10_alt_flag_2 == ALT_NO && tmp_10_default_flag == ALT_NO) TTCN_error("None of the branches can be chosen in the alt statement in file Isobustest.ttcn between lines 212 and 220.");
+TTCN_Snapshot::take_new(TRUE);
+}
+}
+current_location.update_lineno(221);
+#line 221 "Isobustest.ttcn"
+return v__result;
+}
+
+void start_f__bind2(const COMPONENT& component_reference, const INTEGER& p__socket__id, const INTEGER& p__if__index)
+{
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_bind2(");
+p__socket__id.log();
+TTCN_Logger::log_event_str(", ");
+p__if__index.log();
+TTCN_Logger::log_event_str(") on component ");
+component_reference.log();
+TTCN_Logger::log_char('.');
+TTCN_Logger::end_event();
+Text_Buf text_buf;
+TTCN_Runtime::prepare_start_component(component_reference, "Isobustest", "f_bind2", text_buf);
+p__socket__id.encode_text(text_buf);
+p__if__index.encode_text(text_buf);
+TTCN_Runtime::send_start_component(text_buf);
+}
+
+void f__close__socket2(const INTEGER& p__socket__id)
+{
+TTCN_Location current_location("Isobustest.ttcn", 224, TTCN_Location::LOCATION_FUNCTION, "f_close_socket2");
+current_location.update_lineno(226);
+#line 226 "Isobustest.ttcn"
+{
+SocketCAN__Types::SocketCAN__close_template tmp_11;
+tmp_11.id() = p__socket__id;
+PTC__isobus__CT_component_pt__socketCAN.send(tmp_11, NULL);
+}
+}
+
+void start_f__close__socket2(const COMPONENT& component_reference, const INTEGER& p__socket__id)
+{
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_close_socket2(");
+p__socket__id.log();
+TTCN_Logger::log_event_str(") on component ");
+component_reference.log();
+TTCN_Logger::log_char('.');
+TTCN_Logger::end_event();
+Text_Buf text_buf;
+TTCN_Runtime::prepare_start_component(component_reference, "Isobustest", "f_close_socket2", text_buf);
+p__socket__id.encode_text(text_buf);
+TTCN_Runtime::send_start_component(text_buf);
+}
+
+void f__behaviour__isobus(const COMPONENT& v__ptc1)
+{
+TTCN_Location current_location("Isobustest.ttcn", 229, TTCN_Location::LOCATION_FUNCTION, "f_behaviour_isobus");
+current_location.update_lineno(232);
+#line 232 "Isobustest.ttcn"
+{
+Map_Params tmp_12(0);
+TTCN_Runtime::map_port(self, PTC__isobus__CT_component_pt__socketCAN.get_name(), SYSTEM_COMPREF, "pt_socketCAN", tmp_12);
+}
+current_location.update_lineno(233);
+#line 233 "Isobustest.ttcn"
+TTCN_Runtime::connect_port(v__ptc1, PTC1__CT_component_pt__isobus.get_name(), self, PTC__isobus__CT_component_pt__isobus.get_name());
+current_location.update_lineno(235);
+#line 235 "Isobustest.ttcn"
+INTEGER v__socket__id;
+current_location.update_lineno(236);
+#line 236 "Isobustest.ttcn"
+SocketCAN__Types::SocketCAN__ifr v__ifr;
+current_location.update_lineno(237);
+#line 237 "Isobustest.ttcn"
+SocketCAN__Types::SocketCAN__send__data__ifu v__ifu;
+current_location.update_lineno(239);
+#line 239 "Isobustest.ttcn"
+SocketCANtest::SocketCAN__open__raw__result res;
+current_location.update_lineno(240);
+#line 240 "Isobustest.ttcn"
+res = f__open__raw2();
+current_location.update_lineno(241);
+#line 241 "Isobustest.ttcn"
+v__socket__id = const_cast< const SocketCANtest::SocketCAN__open__raw__result&>(res).socket__id();
+current_location.update_lineno(242);
+#line 242 "Isobustest.ttcn"
+v__ifr = const_cast< const SocketCANtest::SocketCAN__open__raw__result&>(res).ifr();
+current_location.update_lineno(243);
+#line 243 "Isobustest.ttcn"
+v__ifu.if__name() = const_cast< const SocketCAN__Types::SocketCAN__ifr&>(v__ifr).if__name();
+current_location.update_lineno(245);
+#line 245 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("socket open(): ");
+res.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(247);
+#line 247 "Isobustest.ttcn"
+BOOLEAN condition3(TRUE);
+for ( ; ; ) {
+current_location.update_lineno(250);
+#line 250 "Isobustest.ttcn"
+if (!condition3) break;
+current_location.update_lineno(253);
+#line 253 "Isobustest.ttcn"
+SocketCAN__Types::SocketCAN__receive__CAN__or__CAN__FD__frame v__result__socketcan;
+current_location.update_lineno(256);
+#line 256 "Isobustest.ttcn"
+{
+tmp_17:
+alt_status tmp_17_alt_flag_0 = ALT_MAYBE;
+alt_status tmp_17_default_flag = ALT_MAYBE;
+TTCN_Snapshot::take_new(FALSE);
+for ( ; ; ) {
+if (tmp_17_alt_flag_0 == ALT_MAYBE) {
+current_location.update_lineno(258);
+#line 258 "Isobustest.ttcn"
+tmp_17_alt_flag_0 = PTC__isobus__CT_component_pt__socketCAN.receive(SocketCAN__Templates::a__SocketCAN__receive__CAN__frame(INTEGER_template(v__socket__id), Can::t__CAN__EFF__FLAG, OCTETSTRING_template(ANY_VALUE)), &(v__result__socketcan), any_compref, NULL, NULL, NULL);
+if (tmp_17_alt_flag_0 == ALT_YES) {
+current_location.update_lineno(262);
+#line 262 "Isobustest.ttcn"
+{
+boolean tmp_21;
+{
+boolean tmp_18 = v__result__socketcan.is_bound();
+if(tmp_18) {
+const SocketCAN__Types::SocketCAN__receive__CAN__or__CAN__FD__frame& tmp_19 = v__result__socketcan;
+const SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame& tmp_20 = tmp_19.frame();
+tmp_18 = tmp_20.is_bound();
+if (tmp_18) {
+tmp_18 = tmp_20.ischosen(SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame::ALT_can__frame);
+}
+}
+tmp_21 = tmp_18;
+}
+if (tmp_21) {
+current_location.update_lineno(263);
+#line 263 "Isobustest.ttcn"
+Isobus::CAN__frame__j1939 v__CAN__frame__j1939(Isobus::can2j1939frame(const_cast< const SocketCAN__Types::SocketCAN__receive__CAN__or__CAN__FD__frame&>(v__result__socketcan).frame().can__frame()));
+current_location.update_lineno(264);
+#line 264 "Isobustest.ttcn"
+PTC__isobus__CT_component_pt__isobus.send(v__CAN__frame__j1939, v__ptc1, NULL);
+}
+else {
+current_location.update_lineno(266);
+#line 266 "Isobustest.ttcn"
+TTCN_Runtime::setverdict(INCONC,(TTCN_Logger::begin_event_log2str(),TTCN_Logger::log_event_str("reception of canfd frame not expected"),TTCN_Logger::end_event_log2str()));
+}
+}
+break;
+}
+}
+if (tmp_17_default_flag == ALT_MAYBE) {
+tmp_17_default_flag = TTCN_Default::try_altsteps();
+if (tmp_17_default_flag == ALT_YES || tmp_17_default_flag == ALT_BREAK) break;
+else if (tmp_17_default_flag == ALT_REPEAT) goto tmp_17;
+}
+current_location.update_lineno(256);
+#line 256 "Isobustest.ttcn"
+if (tmp_17_alt_flag_0 == ALT_NO && tmp_17_default_flag == ALT_NO) TTCN_error("None of the branches can be chosen in the alt statement in file Isobustest.ttcn between lines 256 and 269.");
+TTCN_Snapshot::take_new(TRUE);
+}
+}
+}
+current_location.update_lineno(271);
+#line 271 "Isobustest.ttcn"
+f__close__socket2(v__socket__id);
+current_location.update_lineno(272);
+#line 272 "Isobustest.ttcn"
+TTCN_Runtime::disconnect_port(self, PTC__isobus__CT_component_pt__isobus.get_name(), v__ptc1, PTC1__CT_component_pt__isobus.get_name());
+current_location.update_lineno(273);
+#line 273 "Isobustest.ttcn"
+{
+Map_Params tmp_22(0);
+TTCN_Runtime::unmap_port(self, PTC__isobus__CT_component_pt__socketCAN.get_name(), SYSTEM_COMPREF, "pt_socketCAN", tmp_22);
+}
+current_location.update_lineno(274);
+#line 274 "Isobustest.ttcn"
+TTCN_Runtime::setverdict(PASS);
+}
+
+void start_f__behaviour__isobus(const COMPONENT& component_reference, const COMPONENT& v__ptc1)
+{
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_behaviour_isobus(");
+v__ptc1.log();
+TTCN_Logger::log_event_str(") on component ");
+component_reference.log();
+TTCN_Logger::log_char('.');
+TTCN_Logger::end_event();
+Text_Buf text_buf;
+TTCN_Runtime::prepare_start_component(component_reference, "Isobustest", "f_behaviour_isobus", text_buf);
+v__ptc1.encode_text(text_buf);
+TTCN_Runtime::send_start_component(text_buf);
+}
+
+void f__behaviour1__sync()
+{
+TTCN_Location current_location("Isobustest.ttcn", 278, TTCN_Location::LOCATION_FUNCTION, "f_behaviour1_sync");
+current_location.update_lineno(281);
+#line 281 "Isobustest.ttcn"
+BOOLEAN condition1(TRUE);
+current_location.update_lineno(282);
+#line 282 "Isobustest.ttcn"
+Isobus::CAN__frame__j1939 v__can__frame__j1939;
+for ( ; ; ) {
+current_location.update_lineno(285);
+#line 285 "Isobustest.ttcn"
+if (!condition1) break;
+current_location.update_lineno(289);
+#line 289 "Isobustest.ttcn"
+{
+tmp_23:
+alt_status tmp_23_alt_flag_0 = ALT_MAYBE;
+alt_status tmp_23_default_flag = ALT_MAYBE;
+TTCN_Snapshot::take_new(FALSE);
+for ( ; ; ) {
+if (tmp_23_alt_flag_0 == ALT_MAYBE) {
+current_location.update_lineno(295);
+#line 295 "Isobustest.ttcn"
+tmp_23_alt_flag_0 = PTC1__CT_component_pt__isobus.receive(Isobus::CAN__frame__j1939_template(ANY_VALUE), &(v__can__frame__j1939), any_compref, NULL, NULL, NULL);
+if (tmp_23_alt_flag_0 == ALT_YES) break;
+}
+if (tmp_23_default_flag == ALT_MAYBE) {
+tmp_23_default_flag = TTCN_Default::try_altsteps();
+if (tmp_23_default_flag == ALT_YES || tmp_23_default_flag == ALT_BREAK) break;
+else if (tmp_23_default_flag == ALT_REPEAT) goto tmp_23;
+}
+current_location.update_lineno(289);
+#line 289 "Isobustest.ttcn"
+if (tmp_23_alt_flag_0 == ALT_NO && tmp_23_default_flag == ALT_NO) TTCN_error("None of the branches can be chosen in the alt statement in file Isobustest.ttcn between lines 289 and 303.");
+TTCN_Snapshot::take_new(TRUE);
+}
+}
+}
+}
+
+void start_f__behaviour1__sync(const COMPONENT& component_reference)
+{
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_behaviour1_sync(");
+TTCN_Logger::log_event_str(") on component ");
+component_reference.log();
+TTCN_Logger::log_char('.');
+TTCN_Logger::end_event();
+Text_Buf text_buf;
+TTCN_Runtime::prepare_start_component(component_reference, "Isobustest", "f_behaviour1_sync", text_buf);
+TTCN_Runtime::send_start_component(text_buf);
+}
+
+COMPONENT f__get__component(const OCTETSTRING& connectioninitiator, const OCTETSTRING& connectionresponder)
+{
+TTCN_Location current_location("Isobustest.ttcn", 307, TTCN_Location::LOCATION_FUNCTION, "f_get_component");
+current_location.update_lineno(309);
+#line 309 "Isobustest.ttcn"
+COMPONENT v__PTC2;
+current_location.update_lineno(311);
+#line 311 "Isobustest.ttcn"
+INTEGER index;
+current_location.update_lineno(312);
+#line 312 "Isobustest.ttcn"
+index = (oct2int(connectioninitiator) + (256 * oct2int(connectionresponder)));
+current_location.update_lineno(314);
+#line 314 "Isobustest.ttcn"
+if ((const_cast< const OpenConnectionsFlags&>(PTC1__CT_component_openConnectionsFlags)[index] == FALSE)) {
+current_location.update_lineno(316);
+#line 316 "Isobustest.ttcn"
+v__PTC2 = TTCN_Runtime::create_component("Isobustest", "PTC2_CT", NULL, NULL, FALSE);
+current_location.update_lineno(317);
+#line 317 "Isobustest.ttcn"
+start_f__behaviour__connections(v__PTC2);
+current_location.update_lineno(318);
+#line 318 "Isobustest.ttcn"
+PTC1__CT_component_openConnectionsFlags[index] = TRUE;
+current_location.update_lineno(319);
+#line 319 "Isobustest.ttcn"
+PTC1__CT_component_openConnections[index] = v__PTC2;
+current_location.update_lineno(320);
+#line 320 "Isobustest.ttcn"
+TTCN_Runtime::connect_port(v__PTC2, PTC2__CT_component_pt__isobus.get_name(), self, PTC1__CT_component_pt__isobus.get_name());
+}
+else {
+current_location.update_lineno(322);
+#line 322 "Isobustest.ttcn"
+v__PTC2 = const_cast< const OpenConnections&>(PTC1__CT_component_openConnections)[index];
+}
+current_location.update_lineno(324);
+#line 324 "Isobustest.ttcn"
+return v__PTC2;
+}
+
+void start_f__get__component(const COMPONENT& component_reference, const OCTETSTRING& connectioninitiator, const OCTETSTRING& connectionresponder)
+{
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_get_component(");
+connectioninitiator.log();
+TTCN_Logger::log_event_str(", ");
+connectionresponder.log();
+TTCN_Logger::log_event_str(") on component ");
+component_reference.log();
+TTCN_Logger::log_char('.');
+TTCN_Logger::end_event();
+Text_Buf text_buf;
+TTCN_Runtime::prepare_start_component(component_reference, "Isobustest", "f_get_component", text_buf);
+connectioninitiator.encode_text(text_buf);
+connectionresponder.encode_text(text_buf);
+TTCN_Runtime::send_start_component(text_buf);
+}
+
+void f__behaviour2__sync()
+{
+TTCN_Location current_location("Isobustest.ttcn", 329, TTCN_Location::LOCATION_FUNCTION, "f_behaviour2_sync");
+current_location.update_lineno(332);
+#line 332 "Isobustest.ttcn"
+BOOLEAN condition1(TRUE);
+current_location.update_lineno(333);
+#line 333 "Isobustest.ttcn"
+Isobus::CAN__frame__j1939 v__can__frame__j1939;
+current_location.update_lineno(337);
+#line 337 "Isobustest.ttcn"
+INTEGER i;
+current_location.update_lineno(338);
+#line 338 "Isobustest.ttcn"
+i = 1;
+current_location.update_lineno(338);
+#line 338 "Isobustest.ttcn"
+for ( ; ; ) {
+current_location.update_lineno(338);
+#line 338 "Isobustest.ttcn"
+if (!(i <= 65535)) break;
+current_location.update_lineno(339);
+#line 339 "Isobustest.ttcn"
+PTC1__CT_component_openConnectionsFlags[i] = FALSE;
+current_location.update_lineno(338);
+#line 338 "Isobustest.ttcn"
+{
+INTEGER tmp_31;
+++i;
+}
+}
+for ( ; ; ) {
+current_location.update_lineno(347);
+#line 347 "Isobustest.ttcn"
+if (!condition1) break;
+current_location.update_lineno(351);
+#line 351 "Isobustest.ttcn"
+{
+tmp_32:
+alt_status tmp_32_alt_flag_0 = ALT_MAYBE;
+alt_status tmp_32_alt_flag_1 = ALT_MAYBE;
+alt_status tmp_32_alt_flag_2 = ALT_MAYBE;
+alt_status tmp_32_alt_flag_3 = ALT_MAYBE;
+alt_status tmp_32_alt_flag_4 = ALT_MAYBE;
+alt_status tmp_32_alt_flag_5 = ALT_MAYBE;
+alt_status tmp_32_alt_flag_6 = ALT_MAYBE;
+alt_status tmp_32_default_flag = ALT_MAYBE;
+TTCN_Snapshot::take_new(FALSE);
+for ( ; ; ) {
+if (tmp_32_alt_flag_0 == ALT_MAYBE) {
+current_location.update_lineno(356);
+#line 356 "Isobustest.ttcn"
+{
+Isobus::CAN__frame__j1939_template tmp_33;
+tmp_33.can__j1939() = ANY_VALUE;
+tmp_33.can__pdu().tp__cm().requestToSend() = ANY_VALUE;
+tmp_32_alt_flag_0 = PTC1__CT_component_pt__isobus.receive(tmp_33, &(v__can__frame__j1939), any_compref, NULL, NULL, NULL);
+}
+if (tmp_32_alt_flag_0 == ALT_YES) {
+current_location.update_lineno(361);
+#line 361 "Isobustest.ttcn"
+COMPONENT v__PTC2;
+current_location.update_lineno(362);
+#line 362 "Isobustest.ttcn"
+v__PTC2 = f__get__component(const_cast< const Isobus::CAN__frame__j1939&>(v__can__frame__j1939).can__j1939().sa(), const_cast< const Isobus::CAN__frame__j1939&>(v__can__frame__j1939).can__j1939().ps());
+current_location.update_lineno(363);
+#line 363 "Isobustest.ttcn"
+PTC1__CT_component_pt__isobus.send(v__can__frame__j1939, v__PTC2, NULL);
+break;
+}
+}
+if (tmp_32_alt_flag_1 == ALT_MAYBE) {
+current_location.update_lineno(365);
+#line 365 "Isobustest.ttcn"
+{
+Isobus::CAN__frame__j1939_template tmp_35;
+tmp_35.can__j1939() = ANY_VALUE;
+tmp_35.can__pdu().tp__cm().clearToSend() = ANY_VALUE;
+tmp_32_alt_flag_1 = PTC1__CT_component_pt__isobus.receive(tmp_35, &(v__can__frame__j1939), any_compref, NULL, NULL, NULL);
+}
+if (tmp_32_alt_flag_1 == ALT_YES) {
+current_location.update_lineno(370);
+#line 370 "Isobustest.ttcn"
+COMPONENT v__PTC2;
+current_location.update_lineno(371);
+#line 371 "Isobustest.ttcn"
+v__PTC2 = f__get__component(const_cast< const Isobus::CAN__frame__j1939&>(v__can__frame__j1939).can__j1939().ps(), const_cast< const Isobus::CAN__frame__j1939&>(v__can__frame__j1939).can__j1939().sa());
+current_location.update_lineno(372);
+#line 372 "Isobustest.ttcn"
+PTC1__CT_component_pt__isobus.send(v__can__frame__j1939, v__PTC2, NULL);
+break;
+}
+}
+if (tmp_32_alt_flag_2 == ALT_MAYBE) {
+current_location.update_lineno(374);
+#line 374 "Isobustest.ttcn"
+{
+Isobus::CAN__frame__j1939_template tmp_37;
+tmp_37.can__j1939() = ANY_VALUE;
+tmp_37.can__pdu().tp__cm().endOfMessageAcknowledgement() = ANY_VALUE;
+tmp_32_alt_flag_2 = PTC1__CT_component_pt__isobus.receive(tmp_37, &(v__can__frame__j1939), any_compref, NULL, NULL, NULL);
+}
+if (tmp_32_alt_flag_2 == ALT_YES) {
+current_location.update_lineno(379);
+#line 379 "Isobustest.ttcn"
+COMPONENT v__PTC2;
+current_location.update_lineno(380);
+#line 380 "Isobustest.ttcn"
+v__PTC2 = f__get__component(const_cast< const Isobus::CAN__frame__j1939&>(v__can__frame__j1939).can__j1939().ps(), const_cast< const Isobus::CAN__frame__j1939&>(v__can__frame__j1939).can__j1939().sa());
+current_location.update_lineno(381);
+#line 381 "Isobustest.ttcn"
+PTC1__CT_component_pt__isobus.send(v__can__frame__j1939, v__PTC2, NULL);
+break;
+}
+}
+if (tmp_32_alt_flag_3 == ALT_MAYBE) {
+current_location.update_lineno(383);
+#line 383 "Isobustest.ttcn"
+{
+Isobus::CAN__frame__j1939_template tmp_39;
+tmp_39.can__j1939() = ANY_VALUE;
+tmp_39.can__pdu().tp__cm().connectionAbort() = ANY_VALUE;
+tmp_32_alt_flag_3 = PTC1__CT_component_pt__isobus.receive(tmp_39, &(v__can__frame__j1939), any_compref, NULL, NULL, NULL);
+}
+if (tmp_32_alt_flag_3 == ALT_YES) {
+current_location.update_lineno(388);
+#line 388 "Isobustest.ttcn"
+COMPONENT v__PTC2;
+current_location.update_lineno(389);
+#line 389 "Isobustest.ttcn"
+v__PTC2 = f__get__component(const_cast< const Isobus::CAN__frame__j1939&>(v__can__frame__j1939).can__j1939().ps(), const_cast< const Isobus::CAN__frame__j1939&>(v__can__frame__j1939).can__j1939().sa());
+current_location.update_lineno(390);
+#line 390 "Isobustest.ttcn"
+PTC1__CT_component_pt__isobus.send(v__can__frame__j1939, v__PTC2, NULL);
+break;
+}
+}
+if (tmp_32_alt_flag_4 == ALT_MAYBE) {
+current_location.update_lineno(392);
+#line 392 "Isobustest.ttcn"
+{
+Isobus::CAN__frame__j1939_template tmp_41;
+tmp_41.can__j1939() = ANY_VALUE;
+tmp_41.can__pdu().tp__cm().broadcastAnnounce() = ANY_VALUE;
+tmp_32_alt_flag_4 = PTC1__CT_component_pt__isobus.receive(tmp_41, &(v__can__frame__j1939), any_compref, NULL, NULL, NULL);
+}
+if (tmp_32_alt_flag_4 == ALT_YES) {
+current_location.update_lineno(397);
+#line 397 "Isobustest.ttcn"
+COMPONENT v__PTC2;
+current_location.update_lineno(398);
+#line 398 "Isobustest.ttcn"
+v__PTC2 = f__get__component(const_cast< const Isobus::CAN__frame__j1939&>(v__can__frame__j1939).can__j1939().sa(), const_cast< const Isobus::CAN__frame__j1939&>(v__can__frame__j1939).can__j1939().ps());
+current_location.update_lineno(399);
+#line 399 "Isobustest.ttcn"
+PTC1__CT_component_pt__isobus.send(v__can__frame__j1939, v__PTC2, NULL);
+break;
+}
+}
+if (tmp_32_alt_flag_5 == ALT_MAYBE) {
+current_location.update_lineno(401);
+#line 401 "Isobustest.ttcn"
+{
+Isobus::CAN__frame__j1939_template tmp_43;
+tmp_43.can__j1939() = ANY_VALUE;
+tmp_43.can__pdu().tp__dt() = ANY_VALUE;
+tmp_32_alt_flag_5 = PTC1__CT_component_pt__isobus.receive(tmp_43, &(v__can__frame__j1939), any_compref, NULL, NULL, NULL);
+}
+if (tmp_32_alt_flag_5 == ALT_YES) {
+current_location.update_lineno(406);
+#line 406 "Isobustest.ttcn"
+COMPONENT v__PTC2;
+current_location.update_lineno(407);
+#line 407 "Isobustest.ttcn"
+v__PTC2 = f__get__component(const_cast< const Isobus::CAN__frame__j1939&>(v__can__frame__j1939).can__j1939().sa(), const_cast< const Isobus::CAN__frame__j1939&>(v__can__frame__j1939).can__j1939().ps());
+current_location.update_lineno(408);
+#line 408 "Isobustest.ttcn"
+PTC1__CT_component_pt__isobus.send(v__can__frame__j1939, v__PTC2, NULL);
+break;
+}
+}
+if (tmp_32_alt_flag_6 == ALT_MAYBE) {
+current_location.update_lineno(410);
+#line 410 "Isobustest.ttcn"
+tmp_32_alt_flag_6 = PTC1__CT_component_pt__isobus.receive(Isobus::CAN__frame__j1939_template(ANY_VALUE), &(v__can__frame__j1939), any_compref, NULL, NULL, NULL);
+if (tmp_32_alt_flag_6 == ALT_YES) break;
+}
+if (tmp_32_default_flag == ALT_MAYBE) {
+tmp_32_default_flag = TTCN_Default::try_altsteps();
+if (tmp_32_default_flag == ALT_YES || tmp_32_default_flag == ALT_BREAK) break;
+else if (tmp_32_default_flag == ALT_REPEAT) goto tmp_32;
+}
+current_location.update_lineno(351);
+#line 351 "Isobustest.ttcn"
+if (tmp_32_alt_flag_0 == ALT_NO && tmp_32_alt_flag_1 == ALT_NO && tmp_32_alt_flag_2 == ALT_NO && tmp_32_alt_flag_3 == ALT_NO && tmp_32_alt_flag_4 == ALT_NO && tmp_32_alt_flag_5 == ALT_NO && tmp_32_alt_flag_6 == ALT_NO && tmp_32_default_flag == ALT_NO) TTCN_error("None of the branches can be chosen in the alt statement in file Isobustest.ttcn between lines 351 and 418.");
+TTCN_Snapshot::take_new(TRUE);
+}
+}
+}
+}
+
+void start_f__behaviour2__sync(const COMPONENT& component_reference)
+{
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_behaviour2_sync(");
+TTCN_Logger::log_event_str(") on component ");
+component_reference.log();
+TTCN_Logger::log_char('.');
+TTCN_Logger::end_event();
+Text_Buf text_buf;
+TTCN_Runtime::prepare_start_component(component_reference, "Isobustest", "f_behaviour2_sync", text_buf);
+TTCN_Runtime::send_start_component(text_buf);
+}
+
+void f__behaviour__connections()
+{
+TTCN_Location current_location("Isobustest.ttcn", 421, TTCN_Location::LOCATION_FUNCTION, "f_behaviour_connections");
+current_location.update_lineno(424);
+#line 424 "Isobustest.ttcn"
+BOOLEAN condition1(TRUE);
+current_location.update_lineno(425);
+#line 425 "Isobustest.ttcn"
+Isobus::CAN__frame__j1939 v__can__frame__j1939;
+for ( ; ; ) {
+current_location.update_lineno(434);
+#line 434 "Isobustest.ttcn"
+if (!condition1) break;
+current_location.update_lineno(438);
+#line 438 "Isobustest.ttcn"
+{
+tmp_45:
+alt_status tmp_45_alt_flag_0 = ALT_MAYBE;
+alt_status tmp_45_alt_flag_1 = ALT_MAYBE;
+alt_status tmp_45_default_flag = ALT_MAYBE;
+TTCN_Snapshot::take_new(FALSE);
+for ( ; ; ) {
+if (tmp_45_alt_flag_0 == ALT_MAYBE) {
+current_location.update_lineno(443);
+#line 443 "Isobustest.ttcn"
+{
+Isobus::CAN__frame__j1939_template tmp_46;
+tmp_46.can__j1939() = ANY_VALUE;
+tmp_46.can__pdu().tp__cm().requestToSend() = ANY_VALUE;
+tmp_45_alt_flag_0 = PTC2__CT_component_pt__isobus.receive(tmp_46, &(v__can__frame__j1939), any_compref, NULL, NULL, NULL);
+}
+if (tmp_45_alt_flag_0 == ALT_YES) {
+current_location.update_lineno(445);
+#line 445 "Isobustest.ttcn"
+PTC2__CT_component_msgSizeInBytes = const_cast< const Isobus::CAN__frame__j1939&>(v__can__frame__j1939).can__pdu().tp__cm().requestToSend().msgSizeInBytes();
+current_location.update_lineno(446);
+#line 446 "Isobustest.ttcn"
+PTC2__CT_component_receivedUnacknowledgedData = os_0;
+current_location.update_lineno(447);
+#line 447 "Isobustest.ttcn"
+PTC2__CT_component_receivedUnacknowledgedMsgSizeInBytes = 0;
+current_location.update_lineno(448);
+#line 448 "Isobustest.ttcn"
+PTC2__CT_component_pgnOfMultiPacketMessage = const_cast< const Isobus::CAN__frame__j1939&>(v__can__frame__j1939).can__pdu().tp__cm().requestToSend().pgnOfMultiPacketMessage();
+current_location.update_lineno(449);
+#line 449 "Isobustest.ttcn"
+PTC2__CT_component_ps = const_cast< const Isobus::CAN__frame__j1939&>(v__can__frame__j1939).can__j1939().ps();
+current_location.update_lineno(450);
+#line 450 "Isobustest.ttcn"
+PTC2__CT_component_sa = const_cast< const Isobus::CAN__frame__j1939&>(v__can__frame__j1939).can__j1939().sa();
+current_location.update_lineno(452);
+#line 452 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("received requestToSend: ");
+v__can__frame__j1939.log();
+const_cast< const Isobus::CAN__frame__j1939&>(v__can__frame__j1939).can__j1939().sa().log();
+const_cast< const Isobus::CAN__frame__j1939&>(v__can__frame__j1939).can__j1939().ps().log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(453);
+#line 453 "Isobustest.ttcn"
+{
+tmp_53:
+alt_status tmp_53_alt_flag_0 = ALT_MAYBE;
+alt_status tmp_53_alt_flag_1 = ALT_MAYBE;
+alt_status tmp_53_default_flag = ALT_MAYBE;
+TTCN_Snapshot::take_new(FALSE);
+for ( ; ; ) {
+if (tmp_53_alt_flag_0 == ALT_MAYBE) {
+current_location.update_lineno(455);
+#line 455 "Isobustest.ttcn"
+{
+Isobus::CAN__frame__j1939_template tmp_54;
+tmp_54.can__j1939() = ANY_VALUE;
+{
+IsobusCMMessageTypes::ClearToSend_template& tmp_55 = tmp_54.can__pdu().tp__cm().clearToSend();
+tmp_55.ctrl() = os_1;
+tmp_55.totalNumberOfPackets() = ANY_VALUE;
+tmp_55.nextPacketNumber() = 1;
+tmp_55.reserved4() = ANY_VALUE;
+tmp_55.reserved5() = ANY_VALUE;
+tmp_55.pgnOfMultiPacketMessage() = ANY_VALUE;
+}
+tmp_53_alt_flag_0 = PTC2__CT_component_pt__isobus.receive(tmp_54, &(v__can__frame__j1939), any_compref, NULL, NULL, NULL);
+}
+if (tmp_53_alt_flag_0 == ALT_YES) {
+current_location.update_lineno(462);
+#line 462 "Isobustest.ttcn"
+PTC2__CT_component_nextExpectedPacketNumber = const_cast< const Isobus::CAN__frame__j1939&>(v__can__frame__j1939).can__pdu().tp__cm().clearToSend().nextPacketNumber();
+current_location.update_lineno(464);
+#line 464 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("received clearToSend: ");
+v__can__frame__j1939.log();
+const_cast< const Isobus::CAN__frame__j1939&>(v__can__frame__j1939).can__j1939().sa().log();
+const_cast< const Isobus::CAN__frame__j1939&>(v__can__frame__j1939).can__j1939().ps().log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(465);
+#line 465 "Isobustest.ttcn"
+{
+tmp_57:
+alt_status tmp_57_alt_flag_0 = ALT_MAYBE;
+alt_status tmp_57_alt_flag_1 = ALT_MAYBE;
+alt_status tmp_57_alt_flag_2 = ALT_MAYBE;
+alt_status tmp_57_default_flag = ALT_MAYBE;
+TTCN_Snapshot::take_new(FALSE);
+for ( ; ; ) {
+if (tmp_57_alt_flag_0 == ALT_MAYBE) {
+current_location.update_lineno(467);
+#line 467 "Isobustest.ttcn"
+{
+Isobus::CAN__frame__j1939_template tmp_58;
+tmp_58.can__j1939() = ANY_VALUE;
+tmp_58.can__pdu().tp__dt() = ANY_VALUE;
+tmp_57_alt_flag_0 = PTC2__CT_component_pt__isobus.receive(tmp_58, &(v__can__frame__j1939), any_compref, NULL, NULL, NULL);
+}
+if (tmp_57_alt_flag_0 == ALT_YES) {
+current_location.update_lineno(469);
+#line 469 "Isobustest.ttcn"
+if (((PTC2__CT_component_msgSizeInBytes - PTC2__CT_component_receivedUnacknowledgedMsgSizeInBytes) > 7)) {
+current_location.update_lineno(470);
+#line 470 "Isobustest.ttcn"
+PTC2__CT_component_tp__dt__can__id = Isobus::j1939id2canid(const_cast< const Isobus::CAN__frame__j1939&>(v__can__frame__j1939).can__j1939());
+current_location.update_lineno(471);
+#line 471 "Isobustest.ttcn"
+{
+OCTETSTRING tmp_60;
+tmp_60 = (PTC2__CT_component_receivedUnacknowledgedData + const_cast< const Isobus::CAN__frame__j1939&>(v__can__frame__j1939).can__pdu().tp__dt().data());
+PTC2__CT_component_receivedUnacknowledgedData = tmp_60;
+}
+current_location.update_lineno(472);
+#line 472 "Isobustest.ttcn"
+{
+INTEGER tmp_61;
+tmp_61 = (PTC2__CT_component_receivedUnacknowledgedMsgSizeInBytes + 7);
+PTC2__CT_component_receivedUnacknowledgedMsgSizeInBytes = tmp_61;
+}
+current_location.update_lineno(473);
+#line 473 "Isobustest.ttcn"
+{
+INTEGER tmp_62;
+++PTC2__CT_component_nextExpectedPacketNumber;
+}
+}
+else {
+current_location.update_lineno(475);
+#line 475 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("v_can_frame_j1939.can_j1939: ");
+const_cast< const Isobus::CAN__frame__j1939&>(v__can__frame__j1939).can__j1939().log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(476);
+#line 476 "Isobustest.ttcn"
+PTC2__CT_component_tp__dt__can__id = Isobus::j1939id2canid(const_cast< const Isobus::CAN__frame__j1939&>(v__can__frame__j1939).can__j1939());
+current_location.update_lineno(477);
+#line 477 "Isobustest.ttcn"
+{
+OCTETSTRING tmp_64;
+tmp_64 = (PTC2__CT_component_receivedUnacknowledgedData + substr(const_cast< const Isobus::CAN__frame__j1939&>(v__can__frame__j1939).can__pdu().tp__dt().data(), 0, (PTC2__CT_component_msgSizeInBytes - PTC2__CT_component_receivedUnacknowledgedMsgSizeInBytes)));
+PTC2__CT_component_receivedUnacknowledgedData = tmp_64;
+}
+current_location.update_lineno(479);
+#line 479 "Isobustest.ttcn"
+PTC2__CT_component_nextExpectedPacketNumber = 0;
+current_location.update_lineno(480);
+#line 480 "Isobustest.ttcn"
+PTC2__CT_component_receivedUnacknowledgedMsgSizeInBytes = PTC2__CT_component_msgSizeInBytes;
+}
+current_location.update_lineno(483);
+#line 483 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("received tp_dt: ");
+v__can__frame__j1939.log();
+const_cast< const Isobus::CAN__frame__j1939&>(v__can__frame__j1939).can__j1939().sa().log();
+const_cast< const Isobus::CAN__frame__j1939&>(v__can__frame__j1939).can__j1939().ps().log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(484);
+#line 484 "Isobustest.ttcn"
+goto tmp_57;
+}
+}
+if (tmp_57_alt_flag_1 == ALT_MAYBE) {
+current_location.update_lineno(486);
+#line 486 "Isobustest.ttcn"
+{
+Isobus::CAN__frame__j1939_template tmp_67;
+tmp_67.can__j1939() = ANY_VALUE;
+tmp_67.can__pdu().tp__cm().clearToSend() = ANY_VALUE;
+tmp_57_alt_flag_1 = PTC2__CT_component_pt__isobus.receive(tmp_67, &(v__can__frame__j1939), any_compref, NULL, NULL, NULL);
+}
+if (tmp_57_alt_flag_1 == ALT_YES) {
+current_location.update_lineno(489);
+#line 489 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("received clearToSend: ");
+v__can__frame__j1939.log();
+const_cast< const Isobus::CAN__frame__j1939&>(v__can__frame__j1939).can__j1939().sa().log();
+const_cast< const Isobus::CAN__frame__j1939&>(v__can__frame__j1939).can__j1939().ps().log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(490);
+#line 490 "Isobustest.ttcn"
+goto tmp_57;
+}
+}
+if (tmp_57_alt_flag_2 == ALT_MAYBE) {
+current_location.update_lineno(492);
+#line 492 "Isobustest.ttcn"
+{
+Isobus::CAN__frame__j1939_template tmp_68;
+tmp_68.can__j1939() = ANY_VALUE;
+tmp_68.can__pdu().tp__cm().endOfMessageAcknowledgement() = ANY_VALUE;
+tmp_57_alt_flag_2 = PTC2__CT_component_pt__isobus.receive(tmp_68, &(v__can__frame__j1939), any_compref, NULL, NULL, NULL);
+}
+if (tmp_57_alt_flag_2 == ALT_YES) {
+current_location.update_lineno(495);
+#line 495 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("received endOfMessageAcknowledgement: ");
+v__can__frame__j1939.log();
+const_cast< const Isobus::CAN__frame__j1939&>(v__can__frame__j1939).can__j1939().sa().log();
+const_cast< const Isobus::CAN__frame__j1939&>(v__can__frame__j1939).can__j1939().ps().log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(496);
+#line 496 "Isobustest.ttcn"
+if ((PTC2__CT_component_receivedUnacknowledgedMsgSizeInBytes == PTC2__CT_component_msgSizeInBytes)) {
+current_location.update_lineno(497);
+#line 497 "Isobustest.ttcn"
+OCTETSTRING receivedData;
+current_location.update_lineno(499);
+#line 499 "Isobustest.ttcn"
+if ((oct2int(((int2oct(PTC2__CT_component_pgnOfMultiPacketMessage, 3) & os_2) >> 1)) < 240)) {
+current_location.update_lineno(500);
+#line 500 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("pgnOfMultiPacketMessage: ");
+PTC2__CT_component_pgnOfMultiPacketMessage.log();
+TTCN_Logger::log_event_str(", ");
+int2oct(PTC2__CT_component_pgnOfMultiPacketMessage, 3).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(501);
+#line 501 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("ps: ");
+PTC2__CT_component_ps.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(502);
+#line 502 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("sa: ");
+PTC2__CT_component_sa.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(503);
+#line 503 "Isobustest.ttcn"
+receivedData = (((int2oct(oct2int(((int2oct(PTC2__CT_component_pgnOfMultiPacketMessage, 3) & os_3) >> 1)), 2) + PTC2__CT_component_ps) + PTC2__CT_component_sa) + PTC2__CT_component_receivedUnacknowledgedData);
+}
+else {
+current_location.update_lineno(507);
+#line 507 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("pgnOfMultiPacketMessage: ");
+PTC2__CT_component_pgnOfMultiPacketMessage.log();
+TTCN_Logger::log_event_str(", ");
+int2oct(PTC2__CT_component_pgnOfMultiPacketMessage, 3).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(508);
+#line 508 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("sa: ");
+PTC2__CT_component_sa.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(509);
+#line 509 "Isobustest.ttcn"
+receivedData = (((int2oct(PTC2__CT_component_pgnOfMultiPacketMessage, 3) & os_3) + PTC2__CT_component_sa) + PTC2__CT_component_receivedUnacknowledgedData);
+}
+current_location.update_lineno(512);
+#line 512 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("tp_dt_can_id: ");
+PTC2__CT_component_tp__dt__can__id.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(519);
+#line 519 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("received multipart frame");
+receivedData.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(520);
+#line 520 "Isobustest.ttcn"
+v__can__frame__j1939 = Isobus::f__decode__CAN__frame__j1939(receivedData);
+current_location.update_lineno(521);
+#line 521 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("received tp_dt frame j1939: ");
+v__can__frame__j1939.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+}
+else {
+current_location.update_lineno(524);
+#line 524 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("received incomplete message frame: ");
+PTC2__CT_component_receivedUnacknowledgedData.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+}
+break;
+}
+}
+if (tmp_57_default_flag == ALT_MAYBE) {
+tmp_57_default_flag = TTCN_Default::try_altsteps();
+if (tmp_57_default_flag == ALT_YES || tmp_57_default_flag == ALT_BREAK) break;
+else if (tmp_57_default_flag == ALT_REPEAT) goto tmp_57;
+}
+current_location.update_lineno(465);
+#line 465 "Isobustest.ttcn"
+if (tmp_57_alt_flag_0 == ALT_NO && tmp_57_alt_flag_1 == ALT_NO && tmp_57_alt_flag_2 == ALT_NO && tmp_57_default_flag == ALT_NO) TTCN_error("None of the branches can be chosen in the alt statement in file Isobustest.ttcn between lines 465 and 527.");
+TTCN_Snapshot::take_new(TRUE);
+}
+}
+break;
+}
+}
+if (tmp_53_alt_flag_1 == ALT_MAYBE) {
+current_location.update_lineno(529);
+#line 529 "Isobustest.ttcn"
+{
+Isobus::CAN__frame__j1939_template tmp_72;
+tmp_72.can__j1939() = ANY_VALUE;
+tmp_72.can__pdu().tp__cm().connectionAbort() = ANY_VALUE;
+tmp_53_alt_flag_1 = PTC2__CT_component_pt__isobus.receive(tmp_72, &(v__can__frame__j1939), any_compref, NULL, NULL, NULL);
+}
+if (tmp_53_alt_flag_1 == ALT_YES) {
+current_location.update_lineno(532);
+#line 532 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("received connectionAbort: ");
+v__can__frame__j1939.log();
+const_cast< const Isobus::CAN__frame__j1939&>(v__can__frame__j1939).can__j1939().sa().log();
+const_cast< const Isobus::CAN__frame__j1939&>(v__can__frame__j1939).can__j1939().ps().log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+break;
+}
+}
+if (tmp_53_default_flag == ALT_MAYBE) {
+tmp_53_default_flag = TTCN_Default::try_altsteps();
+if (tmp_53_default_flag == ALT_YES || tmp_53_default_flag == ALT_BREAK) break;
+else if (tmp_53_default_flag == ALT_REPEAT) goto tmp_53;
+}
+current_location.update_lineno(453);
+#line 453 "Isobustest.ttcn"
+if (tmp_53_alt_flag_0 == ALT_NO && tmp_53_alt_flag_1 == ALT_NO && tmp_53_default_flag == ALT_NO) TTCN_error("None of the branches can be chosen in the alt statement in file Isobustest.ttcn between lines 453 and 534.");
+TTCN_Snapshot::take_new(TRUE);
+}
+}
+break;
+}
+}
+if (tmp_45_alt_flag_1 == ALT_MAYBE) {
+current_location.update_lineno(538);
+#line 538 "Isobustest.ttcn"
+tmp_45_alt_flag_1 = PTC2__CT_component_pt__isobus.receive(Isobus::CAN__frame__j1939_template(ANY_VALUE), &(v__can__frame__j1939), any_compref, NULL, NULL, NULL);
+if (tmp_45_alt_flag_1 == ALT_YES) break;
+}
+if (tmp_45_default_flag == ALT_MAYBE) {
+tmp_45_default_flag = TTCN_Default::try_altsteps();
+if (tmp_45_default_flag == ALT_YES || tmp_45_default_flag == ALT_BREAK) break;
+else if (tmp_45_default_flag == ALT_REPEAT) goto tmp_45;
+}
+current_location.update_lineno(438);
+#line 438 "Isobustest.ttcn"
+if (tmp_45_alt_flag_0 == ALT_NO && tmp_45_alt_flag_1 == ALT_NO && tmp_45_default_flag == ALT_NO) TTCN_error("None of the branches can be chosen in the alt statement in file Isobustest.ttcn between lines 438 and 546.");
+TTCN_Snapshot::take_new(TRUE);
+}
+}
+}
+}
+
+void start_f__behaviour__connections(const COMPONENT& component_reference)
+{
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_behaviour_connections(");
+TTCN_Logger::log_event_str(") on component ");
+component_reference.log();
+TTCN_Logger::log_char('.');
+TTCN_Logger::end_event();
+Text_Buf text_buf;
+TTCN_Runtime::prepare_start_component(component_reference, "Isobustest", "f_behaviour_connections", text_buf);
+TTCN_Runtime::send_start_component(text_buf);
+}
+
+verdicttype testcase_tc__encdec(boolean has_timer, double timer_value)
+{
+TTCN_Runtime::check_begin_testcase(has_timer, timer_value);
+TTCN_Location current_location("Isobustest.ttcn", 551, TTCN_Location::LOCATION_TESTCASE, "tc_encdec");
+try {
+TTCN_Runtime::begin_testcase("Isobustest", "tc_encdec", "Isobustest", "MTC_CT", "Isobustest", "MTC_CT", has_timer, timer_value);
+current_location.update_lineno(555);
+#line 555 "Isobustest.ttcn"
+Isobus::CAN__frame__j1939_template t__CAN__frame__j1939;
+{
+Isobus::J1939_template& tmp_73 = t__CAN__frame__j1939.can__j1939();
+tmp_73.prio() = bs_0;
+tmp_73.res() = bs_1;
+tmp_73.dp() = bs_2;
+tmp_73.pf() = os_4;
+tmp_73.ps() = os_5;
+tmp_73.sa() = os_6;
+}
+{
+IsobusNMMessageTypes::NAME_template& tmp_74 = t__CAN__frame__j1939.can__pdu().addressClaimed().name();
+tmp_74.selfConfigurableAddressValue() = bs_1;
+tmp_74.industryGroupValue() = bs_3;
+tmp_74.deviceClassInstanceValue() = bs_4;
+tmp_74.deviceClassValue() = bs_5;
+tmp_74.reserveValued() = bs_1;
+tmp_74.functionValue() = bs_6;
+tmp_74.functionInstanceValue() = bs_7;
+tmp_74.ecuInstancceValue() = bs_8;
+tmp_74.manufacturerCodeValue() = bs_9;
+tmp_74.identityNumberBits() = bs_10;
+}
+current_location.update_lineno(557);
+#line 557 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+Isobus::f__encode__CAN__frame__j1939(t__CAN__frame__j1939.valueof()).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(558);
+#line 558 "Isobustest.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "--------------------------------------------");
+current_location.update_lineno(559);
+#line 559 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+Isobus::f__decode__CAN__frame__j1939(Isobus::f__encode__CAN__frame__j1939(t__CAN__frame__j1939.valueof())).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(560);
+#line 560 "Isobustest.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "--------------------------------------------");
+current_location.update_lineno(562);
+#line 562 "Isobustest.ttcn"
+Isobus::CAN__frame__j1939_template t__CAN__frame__j1939__2;
+{
+Isobus::J1939_template& tmp_75 = t__CAN__frame__j1939__2.can__j1939();
+tmp_75.prio() = bs_11;
+tmp_75.res() = bs_1;
+tmp_75.dp() = bs_1;
+tmp_75.pf() = os_7;
+tmp_75.ps() = os_5;
+tmp_75.sa() = os_8;
+}
+t__CAN__frame__j1939__2.can__pdu().requestForAddressClaimed().pgn() = 123;
+current_location.update_lineno(563);
+#line 563 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+Isobus::f__encode__CAN__frame__j1939(t__CAN__frame__j1939__2.valueof()).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(564);
+#line 564 "Isobustest.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "--------------------------------------------");
+current_location.update_lineno(565);
+#line 565 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+Isobus::f__decode__CAN__frame__j1939(Isobus::f__encode__CAN__frame__j1939(t__CAN__frame__j1939__2.valueof())).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(566);
+#line 566 "Isobustest.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "--------------------------------------------");
+current_location.update_lineno(568);
+#line 568 "Isobustest.ttcn"
+Isobus::CAN__frame__j1939_template t__CAN__frame__j1939__3;
+{
+Isobus::J1939_template& tmp_76 = t__CAN__frame__j1939__3.can__j1939();
+tmp_76.prio() = bs_11;
+tmp_76.res() = bs_1;
+tmp_76.dp() = bs_1;
+tmp_76.pf() = os_7;
+tmp_76.ps() = os_5;
+tmp_76.sa() = os_8;
+}
+{
+IsobusNMMessageTypes::NAME_template& tmp_77 = t__CAN__frame__j1939__3.can__pdu().cannotClaimSourceAddress().name();
+tmp_77.selfConfigurableAddressValue() = bs_1;
+tmp_77.industryGroupValue() = bs_3;
+tmp_77.deviceClassInstanceValue() = bs_4;
+tmp_77.deviceClassValue() = bs_5;
+tmp_77.reserveValued() = bs_1;
+tmp_77.functionValue() = bs_6;
+tmp_77.functionInstanceValue() = bs_7;
+tmp_77.ecuInstancceValue() = bs_8;
+tmp_77.manufacturerCodeValue() = bs_9;
+tmp_77.identityNumberBits() = bs_10;
+}
+current_location.update_lineno(569);
+#line 569 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+Isobus::f__encode__CAN__frame__j1939(t__CAN__frame__j1939__3.valueof()).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(570);
+#line 570 "Isobustest.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "--------------------------------------------");
+current_location.update_lineno(571);
+#line 571 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+Isobus::f__decode__CAN__frame__j1939(Isobus::f__encode__CAN__frame__j1939(t__CAN__frame__j1939__3.valueof())).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(572);
+#line 572 "Isobustest.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "--------------------------------------------");
+current_location.update_lineno(574);
+#line 574 "Isobustest.ttcn"
+Isobus::CAN__frame__j1939_template t__CAN__frame__j1939__6;
+{
+Isobus::J1939_template& tmp_78 = t__CAN__frame__j1939__6.can__j1939();
+tmp_78.prio() = bs_0;
+tmp_78.res() = bs_1;
+tmp_78.dp() = bs_2;
+tmp_78.pf() = os_6;
+tmp_78.ps() = os_5;
+tmp_78.sa() = os_7;
+}
+{
+IsobusNMMessageTypes::CommandedAddress_template& tmp_79 = t__CAN__frame__j1939__6.can__pdu().commandedAddress();
+{
+IsobusNMMessageTypes::NAME_template& tmp_80 = tmp_79.name();
+tmp_80.selfConfigurableAddressValue() = bs_1;
+tmp_80.industryGroupValue() = bs_3;
+tmp_80.deviceClassInstanceValue() = bs_4;
+tmp_80.deviceClassValue() = bs_5;
+tmp_80.reserveValued() = bs_1;
+tmp_80.functionValue() = bs_6;
+tmp_80.functionInstanceValue() = bs_7;
+tmp_80.ecuInstancceValue() = bs_8;
+tmp_80.manufacturerCodeValue() = bs_9;
+tmp_80.identityNumberBits() = bs_10;
+}
+tmp_79.newSourceAddress() = os_9;
+}
+current_location.update_lineno(578);
+#line 578 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+Isobus::f__encode__CAN__frame__j1939(t__CAN__frame__j1939__6.valueof()).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(579);
+#line 579 "Isobustest.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "--------------------------------------------");
+current_location.update_lineno(580);
+#line 580 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+Isobus::f__decode__CAN__frame__j1939(Isobus::f__encode__CAN__frame__j1939(t__CAN__frame__j1939__6.valueof())).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(581);
+#line 581 "Isobustest.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "--------------------------------------------");
+} catch (const TC_Error& tc_error) {
+} catch (const TC_End& tc_end) {
+TTCN_Logger::log_str(TTCN_FUNCTION, "Test case tc_encdec was stopped.");
+}
+return TTCN_Runtime::end_testcase();
+}
+
+verdicttype testcase_tc__encdec__vt2ecu__vtStatusReq(boolean has_timer, double timer_value)
+{
+TTCN_Runtime::check_begin_testcase(has_timer, timer_value);
+TTCN_Location current_location("Isobustest.ttcn", 584, TTCN_Location::LOCATION_TESTCASE, "tc_encdec_vt2ecu_vtStatusReq");
+try {
+TTCN_Runtime::begin_testcase("Isobustest", "tc_encdec_vt2ecu_vtStatusReq", "Isobustest", "MTC_CT", "Isobustest", "MTC_CT", has_timer, timer_value);
+current_location.update_lineno(586);
+#line 586 "Isobustest.ttcn"
+Isobus::CAN__frame__j1939_template t__CAN__frame__j1939;
+{
+Isobus::J1939_template& tmp_81 = t__CAN__frame__j1939.can__j1939();
+tmp_81.prio() = bs_11;
+tmp_81.res() = bs_1;
+tmp_81.dp() = bs_1;
+tmp_81.pf() = os_7;
+tmp_81.ps() = os_7;
+tmp_81.sa() = os_7;
+}
+{
+IsobusVTMessageTypes::VTStatusReq_template& tmp_82 = t__CAN__frame__j1939.can__pdu().vt2ecu().vtStatusReq();
+tmp_82.vtfunction() = 254;
+tmp_82.sourceAddressOfActiveWorkingSetMaster() = os_1;
+tmp_82.objectIDOfTheVisibleDataAlarmMaskOfTheActiveWorkingSet() = os_10;
+tmp_82.objectIDOfTheVisibleSoftKeyMaskOfTheActiveWorkingSet() = os_11;
+tmp_82.vtBusyCodes() = IsobusVTMessageTypes::e__BusyCodes::vtIsBusyExecutingACommand;
+tmp_82.vtFunctionCode() = os_12;
+}
+current_location.update_lineno(594);
+#line 594 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+Isobus::f__encode__CAN__frame__j1939(t__CAN__frame__j1939.valueof()).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(595);
+#line 595 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+Isobus::f__decode__CAN__frame__j1939(Isobus::f__encode__CAN__frame__j1939(t__CAN__frame__j1939.valueof())).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+} catch (const TC_Error& tc_error) {
+} catch (const TC_End& tc_end) {
+TTCN_Logger::log_str(TTCN_FUNCTION, "Test case tc_encdec_vt2ecu_vtStatusReq was stopped.");
+}
+return TTCN_Runtime::end_testcase();
+}
+
+verdicttype testcase_tc__encdec__ecu2vt__getMemoryReq(boolean has_timer, double timer_value)
+{
+TTCN_Runtime::check_begin_testcase(has_timer, timer_value);
+TTCN_Location current_location("Isobustest.ttcn", 598, TTCN_Location::LOCATION_TESTCASE, "tc_encdec_ecu2vt_getMemoryReq");
+try {
+TTCN_Runtime::begin_testcase("Isobustest", "tc_encdec_ecu2vt_getMemoryReq", "Isobustest", "MTC_CT", "Isobustest", "MTC_CT", has_timer, timer_value);
+current_location.update_lineno(600);
+#line 600 "Isobustest.ttcn"
+Isobus::CAN__frame__j1939_template t__CAN__frame__j1939;
+{
+Isobus::J1939_template& tmp_83 = t__CAN__frame__j1939.can__j1939();
+tmp_83.prio() = bs_11;
+tmp_83.res() = bs_1;
+tmp_83.dp() = bs_1;
+tmp_83.pf() = os_7;
+tmp_83.ps() = os_7;
+tmp_83.sa() = os_7;
+}
+{
+IsobusVTMessageTypes::GetMemoryReq_template& tmp_84 = t__CAN__frame__j1939.can__pdu().ecu2vt().getMemoryReq();
+tmp_84.vtfunction() = 194;
+tmp_84.reserved2() = os_13;
+tmp_84.memoryRequired() = 1234567;
+tmp_84.reserved7() = os_13;
+tmp_84.reserved8() = os_13;
+}
+current_location.update_lineno(607);
+#line 607 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+Isobus::f__encode__CAN__frame__j1939(t__CAN__frame__j1939.valueof()).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(608);
+#line 608 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+Isobus::f__decode__CAN__frame__j1939(Isobus::f__encode__CAN__frame__j1939(t__CAN__frame__j1939.valueof())).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+} catch (const TC_Error& tc_error) {
+} catch (const TC_End& tc_end) {
+TTCN_Logger::log_str(TTCN_FUNCTION, "Test case tc_encdec_ecu2vt_getMemoryReq was stopped.");
+}
+return TTCN_Runtime::end_testcase();
+}
+
+verdicttype testcase_tc__encdec__ecu2vt__getMemoryReq__with__templateI(boolean has_timer, double timer_value)
+{
+TTCN_Runtime::check_begin_testcase(has_timer, timer_value);
+TTCN_Location current_location("Isobustest.ttcn", 611, TTCN_Location::LOCATION_TESTCASE, "tc_encdec_ecu2vt_getMemoryReq_with_templateI");
+try {
+TTCN_Runtime::begin_testcase("Isobustest", "tc_encdec_ecu2vt_getMemoryReq_with_templateI", "Isobustest", "MTC_CT", "Isobustest", "MTC_CT", has_timer, timer_value);
+current_location.update_lineno(613);
+#line 613 "Isobustest.ttcn"
+Isobus::CAN__frame__j1939_template t__CAN__frame__j1939;
+{
+Isobus::J1939_template& tmp_85 = t__CAN__frame__j1939.can__j1939();
+tmp_85.prio() = bs_11;
+tmp_85.res() = bs_1;
+tmp_85.dp() = bs_1;
+tmp_85.pf() = os_7;
+tmp_85.ps() = os_7;
+tmp_85.sa() = os_7;
+}
+t__CAN__frame__j1939.can__pdu().ecu2vt().getMemoryReq() = Isobus__Templates::t__GetMemoryReq(1234567);
+current_location.update_lineno(615);
+#line 615 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+Isobus::f__encode__CAN__frame__j1939(t__CAN__frame__j1939.valueof()).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(616);
+#line 616 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+Isobus::f__decode__CAN__frame__j1939(Isobus::f__encode__CAN__frame__j1939(t__CAN__frame__j1939.valueof())).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+} catch (const TC_Error& tc_error) {
+} catch (const TC_End& tc_end) {
+TTCN_Logger::log_str(TTCN_FUNCTION, "Test case tc_encdec_ecu2vt_getMemoryReq_with_templateI was stopped.");
+}
+return TTCN_Runtime::end_testcase();
+}
+
+verdicttype testcase_tc__encdec__ecu2vt__getMemoryReq__with__template__II(boolean has_timer, double timer_value)
+{
+TTCN_Runtime::check_begin_testcase(has_timer, timer_value);
+TTCN_Location current_location("Isobustest.ttcn", 619, TTCN_Location::LOCATION_TESTCASE, "tc_encdec_ecu2vt_getMemoryReq_with_template_II");
+try {
+TTCN_Runtime::begin_testcase("Isobustest", "tc_encdec_ecu2vt_getMemoryReq_with_template_II", "Isobustest", "MTC_CT", "Isobustest", "MTC_CT", has_timer, timer_value);
+current_location.update_lineno(621);
+#line 621 "Isobustest.ttcn"
+Isobus::CAN__frame__j1939_template t__CAN__frame__j1939;
+{
+Isobus::J1939_template& tmp_86 = t__CAN__frame__j1939.can__j1939();
+tmp_86.prio() = bs_11;
+tmp_86.res() = bs_1;
+tmp_86.dp() = bs_1;
+tmp_86.pf() = os_7;
+tmp_86.ps() = os_7;
+tmp_86.sa() = os_7;
+}
+t__CAN__frame__j1939.can__pdu() = Isobus__Templates::t__GetMemoryReq__pdu(1234567);
+current_location.update_lineno(623);
+#line 623 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+Isobus::f__encode__CAN__frame__j1939(t__CAN__frame__j1939.valueof()).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(624);
+#line 624 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+Isobus::f__decode__CAN__frame__j1939(Isobus::f__encode__CAN__frame__j1939(t__CAN__frame__j1939.valueof())).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+} catch (const TC_Error& tc_error) {
+} catch (const TC_End& tc_end) {
+TTCN_Logger::log_str(TTCN_FUNCTION, "Test case tc_encdec_ecu2vt_getMemoryReq_with_template_II was stopped.");
+}
+return TTCN_Runtime::end_testcase();
+}
+
+verdicttype testcase_tc__encdec__networkMessage__N__SP__Response__pdu__with__template(boolean has_timer, double timer_value)
+{
+TTCN_Runtime::check_begin_testcase(has_timer, timer_value);
+TTCN_Location current_location("Isobustest.ttcn", 627, TTCN_Location::LOCATION_TESTCASE, "tc_encdec_networkMessage_N_SP_Response_pdu_with_template");
+try {
+TTCN_Runtime::begin_testcase("Isobustest", "tc_encdec_networkMessage_N_SP_Response_pdu_with_template", "Isobustest", "MTC_CT", "Isobustest", "MTC_CT", has_timer, timer_value);
+current_location.update_lineno(629);
+#line 629 "Isobustest.ttcn"
+Isobus::CAN__frame__j1939_template t__CAN__frame__j1939;
+{
+IsobusNMMessageTypes::N__SP__Response_requestedParametrics_template tmp_87;
+tmp_87.set_size(7);
+tmp_87[0] = os_17;
+tmp_87[1] = os_18;
+tmp_87[2] = os_19;
+tmp_87[3] = os_20;
+tmp_87[4] = os_21;
+tmp_87[5] = os_22;
+tmp_87[6] = os_23;
+t__CAN__frame__j1939 = Isobus__Templates::t__message(bs_12, bs_2, bs_1, os_14, os_15, os_16, Isobus__Templates::t__N__SP__Response__pdu(IsobusNMMessageTypes::e__PortNumber_template(IsobusNMMessageTypes::e__PortNumber::port__3), IsobusNMMessageTypes::e__PortNumber_template(IsobusNMMessageTypes::e__PortNumber::port__4), tmp_87));
+}
+current_location.update_lineno(631);
+#line 631 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+Isobus::f__encode__CAN__frame__j1939(t__CAN__frame__j1939.valueof()).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(632);
+#line 632 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+Isobus::f__decode__CAN__frame__j1939(Isobus::f__encode__CAN__frame__j1939(t__CAN__frame__j1939.valueof())).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+} catch (const TC_Error& tc_error) {
+} catch (const TC_End& tc_end) {
+TTCN_Logger::log_str(TTCN_FUNCTION, "Test case tc_encdec_networkMessage_N_SP_Response_pdu_with_template was stopped.");
+}
+return TTCN_Runtime::end_testcase();
+}
+
+verdicttype testcase_tc__encdec__networkMessage__N__SP__Response__with__template(boolean has_timer, double timer_value)
+{
+TTCN_Runtime::check_begin_testcase(has_timer, timer_value);
+TTCN_Location current_location("Isobustest.ttcn", 635, TTCN_Location::LOCATION_TESTCASE, "tc_encdec_networkMessage_N_SP_Response_with_template");
+try {
+TTCN_Runtime::begin_testcase("Isobustest", "tc_encdec_networkMessage_N_SP_Response_with_template", "Isobustest", "MTC_CT", "Isobustest", "MTC_CT", has_timer, timer_value);
+current_location.update_lineno(637);
+#line 637 "Isobustest.ttcn"
+Isobus::CAN__frame__j1939_template t__CAN__frame__j1939;
+{
+IsobusNMMessageTypes::NetworkMessage_template tmp_88;
+{
+IsobusNMMessageTypes::N__SP__Response_requestedParametrics_template tmp_89;
+tmp_89.set_size(7);
+tmp_89[0] = os_17;
+tmp_89[1] = os_18;
+tmp_89[2] = os_19;
+tmp_89[3] = os_20;
+tmp_89[4] = os_21;
+tmp_89[5] = os_22;
+tmp_89[6] = os_23;
+tmp_88.n__SP__Response() = Isobus__Templates::t__N__SP__Response(IsobusNMMessageTypes::e__PortNumber_template(IsobusNMMessageTypes::e__PortNumber::port__3), IsobusNMMessageTypes::e__PortNumber_template(IsobusNMMessageTypes::e__PortNumber::port__4), tmp_89);
+}
+t__CAN__frame__j1939 = Isobus__Templates::t__network__message(bs_12, bs_2, bs_1, os_14, os_15, os_16, tmp_88);
+}
+current_location.update_lineno(639);
+#line 639 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+Isobus::f__encode__CAN__frame__j1939(t__CAN__frame__j1939.valueof()).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(640);
+#line 640 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+Isobus::f__decode__CAN__frame__j1939(Isobus::f__encode__CAN__frame__j1939(t__CAN__frame__j1939.valueof())).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+} catch (const TC_Error& tc_error) {
+} catch (const TC_End& tc_end) {
+TTCN_Logger::log_str(TTCN_FUNCTION, "Test case tc_encdec_networkMessage_N_SP_Response_with_template was stopped.");
+}
+return TTCN_Runtime::end_testcase();
+}
+
+verdicttype testcase_tc__encdec__N__SP__Response__with__template(boolean has_timer, double timer_value)
+{
+TTCN_Runtime::check_begin_testcase(has_timer, timer_value);
+TTCN_Location current_location("Isobustest.ttcn", 643, TTCN_Location::LOCATION_TESTCASE, "tc_encdec_N_SP_Response_with_template");
+try {
+TTCN_Runtime::begin_testcase("Isobustest", "tc_encdec_N_SP_Response_with_template", "Isobustest", "MTC_CT", "Isobustest", "MTC_CT", has_timer, timer_value);
+current_location.update_lineno(645);
+#line 645 "Isobustest.ttcn"
+Isobus::CAN__frame__j1939_template t__CAN__frame__j1939;
+{
+Isobus::AnyIsoBusPdu_template tmp_90;
+{
+IsobusNMMessageTypes::N__SP__Response_requestedParametrics_template tmp_91;
+tmp_91.set_size(7);
+tmp_91[0] = os_17;
+tmp_91[1] = os_18;
+tmp_91[2] = os_19;
+tmp_91[3] = os_20;
+tmp_91[4] = os_21;
+tmp_91[5] = os_22;
+tmp_91[6] = os_23;
+tmp_90.networkMessage().n__SP__Response() = Isobus__Templates::t__N__SP__Response(IsobusNMMessageTypes::e__PortNumber_template(IsobusNMMessageTypes::e__PortNumber::port__3), IsobusNMMessageTypes::e__PortNumber_template(IsobusNMMessageTypes::e__PortNumber::port__4), tmp_91);
+}
+t__CAN__frame__j1939 = Isobus__Templates::t__message(bs_12, bs_2, bs_1, os_14, os_15, os_16, tmp_90);
+}
+current_location.update_lineno(647);
+#line 647 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+Isobus::f__encode__CAN__frame__j1939(t__CAN__frame__j1939.valueof()).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(648);
+#line 648 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+Isobus::f__decode__CAN__frame__j1939(Isobus::f__encode__CAN__frame__j1939(t__CAN__frame__j1939.valueof())).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+} catch (const TC_Error& tc_error) {
+} catch (const TC_End& tc_end) {
+TTCN_Logger::log_str(TTCN_FUNCTION, "Test case tc_encdec_N_SP_Response_with_template was stopped.");
+}
+return TTCN_Runtime::end_testcase();
+}
+
+verdicttype testcase_tc__encdec__ecu2vt__workingSetMaintenanceReq(boolean has_timer, double timer_value)
+{
+TTCN_Runtime::check_begin_testcase(has_timer, timer_value);
+TTCN_Location current_location("Isobustest.ttcn", 651, TTCN_Location::LOCATION_TESTCASE, "tc_encdec_ecu2vt_workingSetMaintenanceReq");
+try {
+TTCN_Runtime::begin_testcase("Isobustest", "tc_encdec_ecu2vt_workingSetMaintenanceReq", "Isobustest", "MTC_CT", "Isobustest", "MTC_CT", has_timer, timer_value);
+current_location.update_lineno(653);
+#line 653 "Isobustest.ttcn"
+Isobus::CAN__frame__j1939_template t__CAN__frame__j1939;
+{
+Isobus::J1939_template& tmp_92 = t__CAN__frame__j1939.can__j1939();
+tmp_92.prio() = bs_11;
+tmp_92.res() = bs_1;
+tmp_92.dp() = bs_1;
+tmp_92.pf() = os_7;
+tmp_92.ps() = os_7;
+tmp_92.sa() = os_7;
+}
+{
+IsobusVTMessageTypes::WorkingSetMaintenanceBitMask tmp_93;
+tmp_93.initiatingWorkingSetMaintenance() = TRUE;
+tmp_93.reserved1() = FALSE;
+tmp_93.reserved2() = FALSE;
+tmp_93.reserved3() = FALSE;
+tmp_93.reserved4() = FALSE;
+tmp_93.reserved5() = FALSE;
+tmp_93.reserved6() = FALSE;
+tmp_93.reserved7() = FALSE;
+t__CAN__frame__j1939.can__pdu() = Isobus__Templates::t__WorkingSetMaintenanceReq__pdu(tmp_93, IsobusVTMessageTypes::e__WorkingSetMaintenanceVersionNumber::compliantWithVTVersion4);
+}
+current_location.update_lineno(663);
+#line 663 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+Isobus::f__encode__CAN__frame__j1939(t__CAN__frame__j1939.valueof()).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(664);
+#line 664 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+Isobus::f__decode__CAN__frame__j1939(Isobus::f__encode__CAN__frame__j1939(t__CAN__frame__j1939.valueof())).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+} catch (const TC_Error& tc_error) {
+} catch (const TC_End& tc_end) {
+TTCN_Logger::log_str(TTCN_FUNCTION, "Test case tc_encdec_ecu2vt_workingSetMaintenanceReq was stopped.");
+}
+return TTCN_Runtime::end_testcase();
+}
+
+verdicttype testcase_tc__encdec__etp__dt(boolean has_timer, double timer_value)
+{
+TTCN_Runtime::check_begin_testcase(has_timer, timer_value);
+TTCN_Location current_location("Isobustest.ttcn", 668, TTCN_Location::LOCATION_TESTCASE, "tc_encdec_etp_dt");
+try {
+TTCN_Runtime::begin_testcase("Isobustest", "tc_encdec_etp_dt", "Isobustest", "MTC_CT", "Isobustest", "MTC_CT", has_timer, timer_value);
+current_location.update_lineno(670);
+#line 670 "Isobustest.ttcn"
+Isobus::CAN__frame__j1939_template t__CAN__frame__j1939;
+{
+Isobus::J1939_template& tmp_94 = t__CAN__frame__j1939.can__j1939();
+tmp_94.prio() = bs_11;
+tmp_94.res() = bs_2;
+tmp_94.dp() = bs_2;
+tmp_94.pf() = os_24;
+tmp_94.ps() = os_7;
+tmp_94.sa() = os_25;
+}
+{
+IsobusCMMessageTypes::ETP__DT_template& tmp_95 = t__CAN__frame__j1939.can__pdu().etp__dt();
+tmp_95.seq__no() = 105;
+tmp_95.data() = os_26;
+}
+current_location.update_lineno(672);
+#line 672 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+Isobus::f__encode__CAN__frame__j1939(t__CAN__frame__j1939.valueof()).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(673);
+#line 673 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+Isobus::f__decode__CAN__frame__j1939(Isobus::f__encode__CAN__frame__j1939(t__CAN__frame__j1939.valueof())).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+} catch (const TC_Error& tc_error) {
+} catch (const TC_End& tc_end) {
+TTCN_Logger::log_str(TTCN_FUNCTION, "Test case tc_encdec_etp_dt was stopped.");
+}
+return TTCN_Runtime::end_testcase();
+}
+
+verdicttype testcase_tc__dec__requestForAddressClaimed(boolean has_timer, double timer_value)
+{
+TTCN_Runtime::check_begin_testcase(has_timer, timer_value);
+TTCN_Location current_location("Isobustest.ttcn", 677, TTCN_Location::LOCATION_TESTCASE, "tc_dec_requestForAddressClaimed");
+try {
+TTCN_Runtime::begin_testcase("Isobustest", "tc_dec_requestForAddressClaimed", "Isobustest", "MTC_CT", "Isobustest", "MTC_CT", has_timer, timer_value);
+current_location.update_lineno(680);
+#line 680 "Isobustest.ttcn"
+OCTETSTRING j1939__pdu;
+current_location.update_lineno(681);
+#line 681 "Isobustest.ttcn"
+j1939__pdu = os_27;
+current_location.update_lineno(683);
+#line 683 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+j1939__pdu.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(684);
+#line 684 "Isobustest.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "--------------------------------------------");
+current_location.update_lineno(685);
+#line 685 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+Isobus::f__decode__CAN__frame__j1939(j1939__pdu).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(686);
+#line 686 "Isobustest.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "--------------------------------------------");
+} catch (const TC_Error& tc_error) {
+} catch (const TC_End& tc_end) {
+TTCN_Logger::log_str(TTCN_FUNCTION, "Test case tc_dec_requestForAddressClaimed was stopped.");
+}
+return TTCN_Runtime::end_testcase();
+}
+
+verdicttype testcase_tc__dec__largemessage(boolean has_timer, double timer_value)
+{
+TTCN_Runtime::check_begin_testcase(has_timer, timer_value);
+TTCN_Location current_location("Isobustest.ttcn", 691, TTCN_Location::LOCATION_TESTCASE, "tc_dec_largemessage");
+try {
+TTCN_Runtime::begin_testcase("Isobustest", "tc_dec_largemessage", "Isobustest", "MTC_CT", "Isobustest", "MTC_CT", has_timer, timer_value);
+current_location.update_lineno(694);
+#line 694 "Isobustest.ttcn"
+OCTETSTRING j1939__pdu;
+current_location.update_lineno(699);
+#line 699 "Isobustest.ttcn"
+j1939__pdu = os_28;
+current_location.update_lineno(717);
+#line 717 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+j1939__pdu.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(718);
+#line 718 "Isobustest.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "--------------------------------------------");
+current_location.update_lineno(719);
+#line 719 "Isobustest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+Isobus::f__decode__CAN__frame__j1939(j1939__pdu).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(720);
+#line 720 "Isobustest.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "--------------------------------------------");
+} catch (const TC_Error& tc_error) {
+} catch (const TC_End& tc_end) {
+TTCN_Logger::log_str(TTCN_FUNCTION, "Test case tc_dec_largemessage was stopped.");
+}
+return TTCN_Runtime::end_testcase();
+}
+
+verdicttype testcase_tc__Example001(boolean has_timer, double timer_value)
+{
+TTCN_Runtime::check_begin_testcase(has_timer, timer_value);
+TTCN_Location current_location("Isobustest.ttcn", 724, TTCN_Location::LOCATION_TESTCASE, "tc_Example001");
+try {
+TTCN_Runtime::begin_testcase("Isobustest", "tc_Example001", "Isobustest", "MTC_CT", "Isobustest", "MTC_CT", has_timer, timer_value);
+current_location.update_lineno(727);
+#line 727 "Isobustest.ttcn"
+COMPONENT v__PTC__isobus;
+current_location.update_lineno(728);
+#line 728 "Isobustest.ttcn"
+COMPONENT v__PTC1;
+current_location.update_lineno(731);
+#line 731 "Isobustest.ttcn"
+v__PTC__isobus = TTCN_Runtime::create_component("Isobustest", "PTC_isobus_CT", NULL, NULL, FALSE);
+current_location.update_lineno(732);
+#line 732 "Isobustest.ttcn"
+v__PTC1 = TTCN_Runtime::create_component("Isobustest", "PTC1_CT", NULL, NULL, FALSE);
+current_location.update_lineno(739);
+#line 739 "Isobustest.ttcn"
+start_f__behaviour1__sync(v__PTC1);
+current_location.update_lineno(740);
+#line 740 "Isobustest.ttcn"
+start_f__behaviour__isobus(v__PTC__isobus, v__PTC1);
+current_location.update_lineno(743);
+#line 743 "Isobustest.ttcn"
+{
+tmp_100:
+alt_status alt_flag = ALT_UNCHECKED, default_flag = ALT_UNCHECKED;
+TTCN_Snapshot::take_new(FALSE);
+for ( ; ; ) {
+if (alt_flag != ALT_NO) {
+alt_flag = TTCN_Runtime::component_done(ALL_COMPREF);
+if (alt_flag == ALT_YES) break;
+else if (alt_flag == ALT_REPEAT) goto tmp_100;
+}
+if (default_flag != ALT_NO) {
+default_flag = TTCN_Default::try_altsteps();
+if (default_flag == ALT_YES || default_flag == ALT_BREAK) break;
+else if (default_flag == ALT_REPEAT) goto tmp_100;
+}
+current_location.update_lineno(743);
+#line 743 "Isobustest.ttcn"
+if (alt_flag == ALT_NO && default_flag == ALT_NO) TTCN_error("Stand-alone done statement failed in file Isobustest.ttcn, line 743.");
+TTCN_Snapshot::take_new(TRUE);
+}
+}
+current_location.update_lineno(749);
+#line 749 "Isobustest.ttcn"
+TTCN_Runtime::kill_component(ALL_COMPREF);
+} catch (const TC_Error& tc_error) {
+} catch (const TC_End& tc_end) {
+TTCN_Logger::log_str(TTCN_FUNCTION, "Test case tc_Example001 was stopped.");
+}
+return TTCN_Runtime::end_testcase();
+}
+
+verdicttype testcase_tc__Example002(boolean has_timer, double timer_value)
+{
+TTCN_Runtime::check_begin_testcase(has_timer, timer_value);
+TTCN_Location current_location("Isobustest.ttcn", 756, TTCN_Location::LOCATION_TESTCASE, "tc_Example002");
+try {
+TTCN_Runtime::begin_testcase("Isobustest", "tc_Example002", "Isobustest", "MTC_CT", "Isobustest", "MTC_CT", has_timer, timer_value);
+current_location.update_lineno(759);
+#line 759 "Isobustest.ttcn"
+COMPONENT v__PTC__isobus;
+current_location.update_lineno(760);
+#line 760 "Isobustest.ttcn"
+COMPONENT v__PTC1;
+current_location.update_lineno(763);
+#line 763 "Isobustest.ttcn"
+v__PTC__isobus = TTCN_Runtime::create_component("Isobustest", "PTC_isobus_CT", NULL, NULL, FALSE);
+current_location.update_lineno(764);
+#line 764 "Isobustest.ttcn"
+v__PTC1 = TTCN_Runtime::create_component("Isobustest", "PTC1_CT", NULL, NULL, FALSE);
+current_location.update_lineno(771);
+#line 771 "Isobustest.ttcn"
+start_f__behaviour2__sync(v__PTC1);
+current_location.update_lineno(772);
+#line 772 "Isobustest.ttcn"
+start_f__behaviour__isobus(v__PTC__isobus, v__PTC1);
+current_location.update_lineno(775);
+#line 775 "Isobustest.ttcn"
+{
+tmp_103:
+alt_status alt_flag = ALT_UNCHECKED, default_flag = ALT_UNCHECKED;
+TTCN_Snapshot::take_new(FALSE);
+for ( ; ; ) {
+if (alt_flag != ALT_NO) {
+alt_flag = TTCN_Runtime::component_done(ALL_COMPREF);
+if (alt_flag == ALT_YES) break;
+else if (alt_flag == ALT_REPEAT) goto tmp_103;
+}
+if (default_flag != ALT_NO) {
+default_flag = TTCN_Default::try_altsteps();
+if (default_flag == ALT_YES || default_flag == ALT_BREAK) break;
+else if (default_flag == ALT_REPEAT) goto tmp_103;
+}
+current_location.update_lineno(775);
+#line 775 "Isobustest.ttcn"
+if (alt_flag == ALT_NO && default_flag == ALT_NO) TTCN_error("Stand-alone done statement failed in file Isobustest.ttcn, line 775.");
+TTCN_Snapshot::take_new(TRUE);
+}
+}
+current_location.update_lineno(781);
+#line 781 "Isobustest.ttcn"
+TTCN_Runtime::kill_component(ALL_COMPREF);
+} catch (const TC_Error& tc_error) {
+} catch (const TC_End& tc_end) {
+TTCN_Logger::log_str(TTCN_FUNCTION, "Test case tc_Example002 was stopped.");
+}
+return TTCN_Runtime::end_testcase();
+}
+
+
+/* Bodies of static functions */
+
+static void pre_init_module()
+{
+TTCN_Location current_location("Isobustest.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "Isobustest");
+CanError::module_object.pre_init_module();
+SocketCANtest::module_object.pre_init_module();
+Isobus__Templates::module_object.pre_init_module();
+current_location.update_lineno(75);
+#line 75 "Isobustest.ttcn"
+const_MAX__CONNECTIONS = 65535;
+module_object.add_function("f_open_socket2", (genericfunc_t)&f__open__socket2, (genericfunc_t)&start_f__open__socket2);
+module_object.add_function("f_open_raw2", (genericfunc_t)&f__open__raw2, (genericfunc_t)&start_f__open__raw2);
+module_object.add_function("f_ioctl_get_if_index2", (genericfunc_t)&f__ioctl__get__if__index2, (genericfunc_t)&start_f__ioctl__get__if__index2);
+module_object.add_function("f_bind2", (genericfunc_t)&f__bind2, (genericfunc_t)&start_f__bind2);
+module_object.add_function("f_close_socket2", (genericfunc_t)&f__close__socket2, (genericfunc_t)&start_f__close__socket2);
+module_object.add_function("f_behaviour_isobus", (genericfunc_t)&f__behaviour__isobus, (genericfunc_t)&start_f__behaviour__isobus);
+module_object.add_function("f_behaviour1_sync", (genericfunc_t)&f__behaviour1__sync, (genericfunc_t)&start_f__behaviour1__sync);
+module_object.add_function("f_get_component", (genericfunc_t)&f__get__component, (genericfunc_t)&start_f__get__component);
+module_object.add_function("f_behaviour2_sync", (genericfunc_t)&f__behaviour2__sync, (genericfunc_t)&start_f__behaviour2__sync);
+module_object.add_function("f_behaviour_connections", (genericfunc_t)&f__behaviour__connections, (genericfunc_t)&start_f__behaviour__connections);
+module_object.add_testcase_nonpard("tc_encdec", testcase_tc__encdec);
+module_object.add_testcase_nonpard("tc_encdec_vt2ecu_vtStatusReq", testcase_tc__encdec__vt2ecu__vtStatusReq);
+module_object.add_testcase_nonpard("tc_encdec_ecu2vt_getMemoryReq", testcase_tc__encdec__ecu2vt__getMemoryReq);
+module_object.add_testcase_nonpard("tc_encdec_ecu2vt_getMemoryReq_with_templateI", testcase_tc__encdec__ecu2vt__getMemoryReq__with__templateI);
+module_object.add_testcase_nonpard("tc_encdec_ecu2vt_getMemoryReq_with_template_II", testcase_tc__encdec__ecu2vt__getMemoryReq__with__template__II);
+module_object.add_testcase_nonpard("tc_encdec_networkMessage_N_SP_Response_pdu_with_template", testcase_tc__encdec__networkMessage__N__SP__Response__pdu__with__template);
+module_object.add_testcase_nonpard("tc_encdec_networkMessage_N_SP_Response_with_template", testcase_tc__encdec__networkMessage__N__SP__Response__with__template);
+module_object.add_testcase_nonpard("tc_encdec_N_SP_Response_with_template", testcase_tc__encdec__N__SP__Response__with__template);
+module_object.add_testcase_nonpard("tc_encdec_ecu2vt_workingSetMaintenanceReq", testcase_tc__encdec__ecu2vt__workingSetMaintenanceReq);
+module_object.add_testcase_nonpard("tc_encdec_etp_dt", testcase_tc__encdec__etp__dt);
+module_object.add_testcase_nonpard("tc_dec_requestForAddressClaimed", testcase_tc__dec__requestForAddressClaimed);
+module_object.add_testcase_nonpard("tc_dec_largemessage", testcase_tc__dec__largemessage);
+module_object.add_testcase_nonpard("tc_Example001", testcase_tc__Example001);
+module_object.add_testcase_nonpard("tc_Example002", testcase_tc__Example002);
+}
+
+static void post_init_module()
+{
+TTCN_Location current_location("Isobustest.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "Isobustest");
+CanError::module_object.post_init_module();
+SocketCANtest::module_object.post_init_module();
+Isobus__Templates::module_object.post_init_module();
+}
+
+static boolean init_comp_type(const char *component_type, boolean init_base_comps)
+{
+(void)init_base_comps;
+if (!strcmp(component_type, "MTC_CT")) {
+return TRUE;
+} else if (!strcmp(component_type, "PTC_isobus_CT")) {
+PTC__isobus__CT_component_pt__socketCAN.activate_port();
+PTC__isobus__CT_component_pt__isobus.activate_port();
+return TRUE;
+} else if (!strcmp(component_type, "PTC1_CT")) {
+PTC1__CT_component_pt__isobus.activate_port();
+PTC1__CT_component_openConnections.clean_up();
+PTC1__CT_component_openConnectionsFlags.clean_up();
+return TRUE;
+} else if (!strcmp(component_type, "PTC2_CT")) {
+PTC2__CT_component_pt__isobus.activate_port();
+PTC2__CT_component_receivedUnacknowledgedData.clean_up();
+PTC2__CT_component_msgSizeInBytes.clean_up();
+PTC2__CT_component_receivedUnacknowledgedMsgSizeInBytes.clean_up();
+PTC2__CT_component_nextExpectedPacketNumber.clean_up();
+PTC2__CT_component_pgnOfMultiPacketMessage.clean_up();
+PTC2__CT_component_ps.clean_up();
+PTC2__CT_component_sa.clean_up();
+PTC2__CT_component_tp__dt__can__id.clean_up();
+return TRUE;
+} else if (!strcmp(component_type, "PTC")) {
+PTC_component_pt__sync.activate_port();
+PTC_component_pt__socketCAN.activate_port();
+PTC_component_v__phase = SocketCANtest::c__firstPhase;
+return TRUE;
+} else return FALSE;
+}
+
+static boolean init_system_port(const char* component_type, const char* port_name)
+{
+if (!strcmp(component_type, "PTC_isobus_CT")) {
+if (!strcmp(port_name, "pt_isobus")) {
+PTC__isobus__CT_component_pt__isobus.safe_start();
+return TRUE;
+}
+if (!strcmp(port_name, "pt_socketCAN")) {
+PTC__isobus__CT_component_pt__socketCAN.safe_start();
+return TRUE;
+}
+}
+else if (!strcmp(component_type, "PTC1_CT")) {
+if (!strcmp(port_name, "pt_isobus")) {
+PTC1__CT_component_pt__isobus.safe_start();
+return TRUE;
+}
+}
+else if (!strcmp(component_type, "PTC2_CT")) {
+if (!strcmp(port_name, "pt_isobus")) {
+PTC2__CT_component_pt__isobus.safe_start();
+return TRUE;
+}
+}
+else if (!strcmp(component_type, "PTC")) {
+if (!strcmp(port_name, "pt_socketCAN")) {
+PTC_component_pt__socketCAN.safe_start();
+return TRUE;
+}
+if (!strcmp(port_name, "pt_sync")) {
+PTC_component_pt__sync.safe_start();
+return TRUE;
+}
+}
+return FALSE;
+}
+
+static boolean start_ptc_function(const char *function_name, Text_Buf& function_arguments)
+{
+if (!strcmp(function_name, "f_open_socket2")) {
+SocketCANtest::SocketCAN__open__socket__type v__socket__type;
+v__socket__type.decode_text(function_arguments);
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_open_socket2(");
+v__socket__type.log();
+TTCN_Logger::log_event_str(").");
+TTCN_Logger::end_event();
+TTCN_Runtime::function_started(function_arguments);
+f__open__socket2(v__socket__type);
+TTCN_Runtime::function_finished("f_open_socket2");
+return TRUE;
+} else if (!strcmp(function_name, "f_open_raw2")) {
+TTCN_Logger::log_str(TTCN_Logger::PARALLEL_PTC, "Starting function f_open_raw2().");
+TTCN_Runtime::function_started(function_arguments);
+f__open__raw2();
+TTCN_Runtime::function_finished("f_open_raw2");
+return TRUE;
+} else if (!strcmp(function_name, "f_ioctl_get_if_index2")) {
+INTEGER p__socket__id;
+p__socket__id.decode_text(function_arguments);
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_ioctl_get_if_index2(");
+p__socket__id.log();
+TTCN_Logger::log_event_str(").");
+TTCN_Logger::end_event();
+TTCN_Runtime::function_started(function_arguments);
+f__ioctl__get__if__index2(p__socket__id);
+TTCN_Runtime::function_finished("f_ioctl_get_if_index2");
+return TRUE;
+} else if (!strcmp(function_name, "f_bind2")) {
+INTEGER p__socket__id;
+INTEGER p__if__index;
+p__socket__id.decode_text(function_arguments);
+p__if__index.decode_text(function_arguments);
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_bind2(");
+p__socket__id.log();
+TTCN_Logger::log_event_str(", ");
+p__if__index.log();
+TTCN_Logger::log_event_str(").");
+TTCN_Logger::end_event();
+TTCN_Runtime::function_started(function_arguments);
+f__bind2(p__socket__id, p__if__index);
+TTCN_Runtime::function_finished("f_bind2");
+return TRUE;
+} else if (!strcmp(function_name, "f_close_socket2")) {
+INTEGER p__socket__id;
+p__socket__id.decode_text(function_arguments);
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_close_socket2(");
+p__socket__id.log();
+TTCN_Logger::log_event_str(").");
+TTCN_Logger::end_event();
+TTCN_Runtime::function_started(function_arguments);
+f__close__socket2(p__socket__id);
+TTCN_Runtime::function_finished("f_close_socket2");
+return TRUE;
+} else if (!strcmp(function_name, "f_behaviour_isobus")) {
+COMPONENT v__ptc1;
+v__ptc1.decode_text(function_arguments);
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_behaviour_isobus(");
+v__ptc1.log();
+TTCN_Logger::log_event_str(").");
+TTCN_Logger::end_event();
+TTCN_Runtime::function_started(function_arguments);
+f__behaviour__isobus(v__ptc1);
+TTCN_Runtime::function_finished("f_behaviour_isobus");
+return TRUE;
+} else if (!strcmp(function_name, "f_behaviour1_sync")) {
+TTCN_Logger::log_str(TTCN_Logger::PARALLEL_PTC, "Starting function f_behaviour1_sync().");
+TTCN_Runtime::function_started(function_arguments);
+f__behaviour1__sync();
+TTCN_Runtime::function_finished("f_behaviour1_sync");
+return TRUE;
+} else if (!strcmp(function_name, "f_get_component")) {
+OCTETSTRING connectioninitiator;
+OCTETSTRING connectionresponder;
+connectioninitiator.decode_text(function_arguments);
+connectionresponder.decode_text(function_arguments);
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_get_component(");
+connectioninitiator.log();
+TTCN_Logger::log_event_str(", ");
+connectionresponder.log();
+TTCN_Logger::log_event_str(").");
+TTCN_Logger::end_event();
+TTCN_Runtime::function_started(function_arguments);
+f__get__component(connectioninitiator, connectionresponder);
+TTCN_Runtime::function_finished("f_get_component");
+return TRUE;
+} else if (!strcmp(function_name, "f_behaviour2_sync")) {
+TTCN_Logger::log_str(TTCN_Logger::PARALLEL_PTC, "Starting function f_behaviour2_sync().");
+TTCN_Runtime::function_started(function_arguments);
+f__behaviour2__sync();
+TTCN_Runtime::function_finished("f_behaviour2_sync");
+return TRUE;
+} else if (!strcmp(function_name, "f_behaviour_connections")) {
+TTCN_Logger::log_str(TTCN_Logger::PARALLEL_PTC, "Starting function f_behaviour_connections().");
+TTCN_Runtime::function_started(function_arguments);
+f__behaviour__connections();
+TTCN_Runtime::function_finished("f_behaviour_connections");
+return TRUE;
+} else return FALSE;
+}
+
+static void module_control_part()
+{
+TTCN_Location current_location("Isobustest.ttcn", 788, TTCN_Location::LOCATION_CONTROLPART, "Isobustest");
+TTCN_Runtime::begin_controlpart("Isobustest");
+current_location.update_lineno(792);
+#line 792 "Isobustest.ttcn"
+testcase_tc__Example001(FALSE, 0.0);
+TTCN_Runtime::end_controlpart();
+}
+
+
+} /* end of namespace */
diff --git a/demo/Isobustest.d b/demo/Isobustest.d
new file mode 100644
index 0000000..7173a63
--- /dev/null
+++ b/demo/Isobustest.d
@@ -0,0 +1,63 @@
+Isobustest.o Isobustest.d : Isobustest.cc Isobustest.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TTCN3.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/version.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/cversion.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Types.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Vector.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Error.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Basetype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Encdec.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RInt.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON_Tokenizer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Logger.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Template.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Integer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ttcn3float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Boolean.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Null.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Optional.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Param_Types.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/memory.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/BER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Textbuf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Parameters.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XmlReader.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Objid.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Verdicttype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Component.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Bitstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RAW.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/CharCoding.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Hexstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Octetstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Any.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Universal_charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Struct_of.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Array.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_CharacterString.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_External.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TEXT.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_EmbeddedPDV.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Addfunc.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Timer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Port.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Event_Handler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/TitanLoggerApiSimple.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/PreGenRecordOf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Module_list.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Snapshot.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Default.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Runtime.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/OER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Profiler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ProfilerTools.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Debugger.hh \
+ CanError.hh SocketCANtest.hh SocketCAN_PortType.hh SocketCAN_Types.hh \
+ Bcm.hh Can.hh General_Types.hh Raw.hh ../src/SocketCAN_PT.hh \
+ SocketCAN_Types.hh SocketCAN_Templates.hh Isobus_Templates.hh Isobus.hh \
+ IsobusCMMessageTypes.hh IsobusMessageTypes.hh IsobusNMMessageTypes.hh \
+ IsobusVTMessageTypes.hh
diff --git a/demo/Isobustest.hh b/demo/Isobustest.hh
new file mode 100644
index 0000000..78eb682
--- /dev/null
+++ b/demo/Isobustest.hh
@@ -0,0 +1,932 @@
+// This C++ header file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+#ifndef Isobustest_HH
+#define Isobustest_HH
+
+#ifdef TITAN_RUNTIME_2
+#error Generated code does not match with used runtime.\
+ Code was generated without -R option but -DTITAN_RUNTIME_2 was used.
+#endif
+
+/* Header file includes */
+
+#include <TTCN3.hh>
+#include "CanError.hh"
+#include "SocketCANtest.hh"
+#include "Isobus_Templates.hh"
+
+#if TTCN3_VERSION != 60600
+#error Version mismatch detected.\
+ Please check the version of the TTCN-3 compiler and the base library.\
+ Run make clean and rebuild the project if the version of the compiler changed recently.
+#endif
+
+#ifndef LINUX
+#error This file should be compiled on LINUX
+#endif
+
+#undef Isobustest_HH
+#endif
+
+namespace Isobustest {
+
+/* Forward declarations of classes */
+
+class CAN__ID;
+class CAN__ID_template;
+class RTR;
+class RTR_template;
+class Can__IDs;
+class Can__IDs_template;
+class Can__IDwithType;
+class Can__IDwithType_template;
+class OpenConnections;
+class OpenConnections_template;
+typedef PreGenRecordOf::PREGEN__RECORD__OF__BOOLEAN OpenConnectionsFlags;
+typedef PreGenRecordOf::PREGEN__RECORD__OF__BOOLEAN_template OpenConnectionsFlags_template;
+class Isobus__PT;
+class SyncMasterPort;
+class SyncSlavePort;
+class PTCSet;
+class PTCSet_template;
+
+} /* end of namespace */
+
+#ifndef Isobustest_HH
+#define Isobustest_HH
+
+namespace Isobustest {
+
+/* Type definitions */
+
+typedef BITSTRING BIT29;
+typedef BITSTRING_template BIT29_template;
+typedef COMPONENT MTC__CT;
+typedef COMPONENT_template MTC__CT_template;
+typedef COMPONENT PTC__isobus__CT;
+typedef COMPONENT_template PTC__isobus__CT_template;
+typedef COMPONENT PTC2__CT;
+typedef COMPONENT_template PTC2__CT_template;
+typedef COMPONENT PTC1__CT;
+typedef COMPONENT_template PTC1__CT_template;
+typedef COMPONENT PTC;
+typedef COMPONENT_template PTC_template;
+
+/* Class definitions */
+
+class CAN__ID : public Base_Type {
+public:
+enum union_selection_type { UNBOUND_VALUE = 0, ALT_can__eff = 1, ALT_can__sff = 2, ALT_can__rtr = 3, ALT_can__err = 4 };
+private:
+union_selection_type union_selection;
+union {
+OCTETSTRING *field_can__eff;
+OCTETSTRING *field_can__sff;
+RTR *field_can__rtr;
+BITSTRING *field_can__err;
+};
+void copy_value(const CAN__ID& other_value);
+
+public:
+CAN__ID();
+CAN__ID(const CAN__ID& other_value);
+~CAN__ID();
+CAN__ID& operator=(const CAN__ID& other_value);
+boolean operator==(const CAN__ID& other_value) const;
+inline boolean operator!=(const CAN__ID& other_value) const { return !(*this == other_value); }
+OCTETSTRING& can__eff();
+const OCTETSTRING& can__eff() const;
+OCTETSTRING& can__sff();
+const OCTETSTRING& can__sff() const;
+RTR& can__rtr();
+const RTR& can__rtr() const;
+BITSTRING& can__err();
+const BITSTRING& can__err() const;
+inline union_selection_type get_selection() const { return union_selection; }
+boolean ischosen(union_selection_type checked_selection) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+};
+
+class CAN__ID_template : public Base_Template {
+union {
+struct {
+CAN__ID::union_selection_type union_selection;
+union {
+OCTETSTRING_template *field_can__eff;
+OCTETSTRING_template *field_can__sff;
+RTR_template *field_can__rtr;
+BITSTRING_template *field_can__err;
+};
+} single_value;
+struct {
+unsigned int n_values;
+CAN__ID_template *list_value;
+} value_list;
+};
+void copy_value(const CAN__ID& other_value);
+
+void copy_template(const CAN__ID_template& other_value);
+
+public:
+CAN__ID_template();
+CAN__ID_template(template_sel other_value);
+CAN__ID_template(const CAN__ID& other_value);
+CAN__ID_template(const OPTIONAL<CAN__ID>& other_value);
+CAN__ID_template(const CAN__ID_template& other_value);
+~CAN__ID_template();
+void clean_up();
+CAN__ID_template& operator=(template_sel other_value);
+CAN__ID_template& operator=(const CAN__ID& other_value);
+CAN__ID_template& operator=(const OPTIONAL<CAN__ID>& other_value);
+CAN__ID_template& operator=(const CAN__ID_template& other_value);
+boolean match(const CAN__ID& other_value, boolean legacy = FALSE) const;
+boolean is_value() const;CAN__ID valueof() const;
+CAN__ID_template& list_item(unsigned int list_index) const;
+void set_type(template_sel template_type, unsigned int list_length);
+OCTETSTRING_template& can__eff();
+const OCTETSTRING_template& can__eff() const;
+OCTETSTRING_template& can__sff();
+const OCTETSTRING_template& can__sff() const;
+RTR_template& can__rtr();
+const RTR_template& can__rtr() const;
+BITSTRING_template& can__err();
+const BITSTRING_template& can__err() const;
+boolean ischosen(CAN__ID::union_selection_type checked_selection) const;
+void log() const;
+void log_match(const CAN__ID& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class RTR : public Base_Type { // enum
+friend class RTR_template;
+public:
+enum enum_type { RTRNULL = 0, UNKNOWN_VALUE = 1, UNBOUND_VALUE = 2 };
+private:
+enum_type enum_value;
+
+public:
+RTR();
+RTR(int other_value);
+RTR(enum_type other_value);
+RTR(const RTR& other_value);
+
+RTR& operator=(int other_value);
+RTR& operator=(enum_type other_value);
+RTR& operator=(const RTR& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const RTR& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const RTR& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const RTR& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const RTR& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const RTR& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const RTR& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const RTR& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class RTR_template : public Base_Template {
+union {
+RTR::enum_type single_value;
+struct {
+unsigned int n_values;
+RTR_template *list_value;
+} value_list;
+};
+
+void copy_template(const RTR_template& other_value);
+
+public:
+RTR_template();
+RTR_template(template_sel other_value);
+RTR_template(int other_value);
+RTR_template(RTR::enum_type other_value);
+RTR_template(const RTR& other_value);
+RTR_template(const OPTIONAL<RTR>& other_value);
+RTR_template(const RTR_template& other_value);
+~RTR_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+RTR_template& operator=(template_sel other_value);
+RTR_template& operator=(int other_value);
+RTR_template& operator=(RTR::enum_type other_value);
+RTR_template& operator=(const RTR& other_value);
+RTR_template& operator=(const OPTIONAL<RTR>& other_value);
+RTR_template& operator=(const RTR_template& other_value);
+
+boolean match(RTR::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const RTR& other_value, boolean legacy = FALSE) const;
+RTR::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+RTR_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const RTR& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class Can__IDs : public Base_Type {
+public:
+enum union_selection_type { UNBOUND_VALUE = 0, ALT_can__eff = 1, ALT_can__sff = 2, ALT_can__rtr = 3, ALT_can__err = 4 };
+private:
+union_selection_type union_selection;
+union {
+BITSTRING *field_can__eff;
+BITSTRING *field_can__sff;
+RTR *field_can__rtr;
+BITSTRING *field_can__err;
+};
+void copy_value(const Can__IDs& other_value);
+
+public:
+Can__IDs();
+Can__IDs(const Can__IDs& other_value);
+~Can__IDs();
+Can__IDs& operator=(const Can__IDs& other_value);
+boolean operator==(const Can__IDs& other_value) const;
+inline boolean operator!=(const Can__IDs& other_value) const { return !(*this == other_value); }
+BITSTRING& can__eff();
+const BITSTRING& can__eff() const;
+BITSTRING& can__sff();
+const BITSTRING& can__sff() const;
+RTR& can__rtr();
+const RTR& can__rtr() const;
+BITSTRING& can__err();
+const BITSTRING& can__err() const;
+inline union_selection_type get_selection() const { return union_selection; }
+boolean ischosen(union_selection_type checked_selection) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class Can__IDs_template : public Base_Template {
+union {
+struct {
+Can__IDs::union_selection_type union_selection;
+union {
+BITSTRING_template *field_can__eff;
+BITSTRING_template *field_can__sff;
+RTR_template *field_can__rtr;
+BITSTRING_template *field_can__err;
+};
+} single_value;
+struct {
+unsigned int n_values;
+Can__IDs_template *list_value;
+} value_list;
+};
+void copy_value(const Can__IDs& other_value);
+
+void copy_template(const Can__IDs_template& other_value);
+
+public:
+Can__IDs_template();
+Can__IDs_template(template_sel other_value);
+Can__IDs_template(const Can__IDs& other_value);
+Can__IDs_template(const OPTIONAL<Can__IDs>& other_value);
+Can__IDs_template(const Can__IDs_template& other_value);
+~Can__IDs_template();
+void clean_up();
+Can__IDs_template& operator=(template_sel other_value);
+Can__IDs_template& operator=(const Can__IDs& other_value);
+Can__IDs_template& operator=(const OPTIONAL<Can__IDs>& other_value);
+Can__IDs_template& operator=(const Can__IDs_template& other_value);
+boolean match(const Can__IDs& other_value, boolean legacy = FALSE) const;
+boolean is_value() const;Can__IDs valueof() const;
+Can__IDs_template& list_item(unsigned int list_index) const;
+void set_type(template_sel template_type, unsigned int list_length);
+BITSTRING_template& can__eff();
+const BITSTRING_template& can__eff() const;
+BITSTRING_template& can__sff();
+const BITSTRING_template& can__sff() const;
+RTR_template& can__rtr();
+const RTR_template& can__rtr() const;
+BITSTRING_template& can__err();
+const BITSTRING_template& can__err() const;
+boolean ischosen(Can__IDs::union_selection_type checked_selection) const;
+void log() const;
+void log_match(const Can__IDs& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class Can__IDwithType : public Base_Type {
+  INTEGER field_cantype;
+  Can__IDs field_can__ids;
+public:
+  Can__IDwithType();
+  Can__IDwithType(const INTEGER& par_cantype,
+    const Can__IDs& par_can__ids);
+  Can__IDwithType(const Can__IDwithType& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  Can__IDwithType& operator=(const Can__IDwithType& other_value);
+  boolean operator==(const Can__IDwithType& other_value) const;
+  inline boolean operator!=(const Can__IDwithType& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& cantype()
+    {return field_cantype;}
+  inline const INTEGER& cantype() const
+    {return field_cantype;}
+  inline Can__IDs& can__ids()
+    {return field_can__ids;}
+  inline const Can__IDs& can__ids() const
+    {return field_can__ids;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class Can__IDwithType_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+Can__IDwithType_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const Can__IDwithType& other_value);
+void copy_template(const Can__IDwithType_template& other_value);
+
+public:
+Can__IDwithType_template();
+Can__IDwithType_template(template_sel other_value);
+Can__IDwithType_template(const Can__IDwithType& other_value);
+Can__IDwithType_template(const OPTIONAL<Can__IDwithType>& other_value);
+Can__IDwithType_template(const Can__IDwithType_template& other_value);
+~Can__IDwithType_template();
+Can__IDwithType_template& operator=(template_sel other_value);
+Can__IDwithType_template& operator=(const Can__IDwithType& other_value);
+Can__IDwithType_template& operator=(const OPTIONAL<Can__IDwithType>& other_value);
+Can__IDwithType_template& operator=(const Can__IDwithType_template& other_value);
+boolean match(const Can__IDwithType& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+Can__IDwithType valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+Can__IDwithType_template& list_item(unsigned int list_index) const;
+INTEGER_template& cantype();
+const INTEGER_template& cantype() const;
+Can__IDs_template& can__ids();
+const Can__IDs_template& can__ids() const;
+int size_of() const;
+void log() const;
+void log_match(const Can__IDwithType& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class OpenConnections : public Base_Type {
+struct recordof_setof_struct {
+int ref_count;
+int n_elements;
+COMPONENT **value_elements;
+} *val_ptr;
+
+static const COMPONENT UNBOUND_ELEM;
+private:
+friend boolean operator==(null_type null_value, const OpenConnections& other_value);
+
+public:
+  typedef COMPONENT of_type;
+OpenConnections();
+OpenConnections(null_type other_value);
+OpenConnections(const OpenConnections& other_value);
+~OpenConnections();
+
+void clean_up();
+OpenConnections& operator=(null_type other_value);
+OpenConnections& operator=(const OpenConnections& other_value);
+
+boolean operator==(null_type other_value) const;
+boolean operator==(const OpenConnections& other_value) const;
+inline boolean operator!=(null_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const OpenConnections& other_value) const { return !(*this == other_value); }
+
+COMPONENT& operator[](int index_value);
+COMPONENT& operator[](const INTEGER& index_value);
+const COMPONENT& operator[](int index_value) const;
+const COMPONENT& operator[](const INTEGER& index_value) const;
+
+OpenConnections operator<<=(int rotate_count) const;
+OpenConnections operator<<=(const INTEGER& rotate_count) const;
+OpenConnections operator>>=(int rotate_count) const;
+OpenConnections operator>>=(const INTEGER& rotate_count) const;
+
+OpenConnections operator+(const OpenConnections& other_value) const;
+
+OpenConnections substr(int index, int returncount) const;
+
+OpenConnections replace(int index, int len, const OpenConnections& repl) const;
+
+OpenConnections replace(int index, int len, const OpenConnections_template& repl) const;
+
+void set_size(int new_size);
+inline boolean is_bound() const {return val_ptr != NULL; }
+inline boolean is_present() const { return is_bound(); }
+boolean is_value() const;
+int size_of() const;
+int n_elem() const { return size_of(); }
+int lengthof() const;
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+};
+
+class OpenConnections_template : public Record_Of_Template {
+union {
+struct {
+int n_elements;
+COMPONENT_template **value_elements;
+} single_value;
+struct {
+unsigned int n_values;
+OpenConnections_template *list_value;
+} value_list;
+};
+void copy_value(const OpenConnections& other_value);
+void copy_template(const OpenConnections_template& other_value);
+static boolean match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy);
+
+public:
+OpenConnections_template();
+OpenConnections_template(template_sel other_value);
+OpenConnections_template(null_type other_value);
+OpenConnections_template(const OpenConnections& other_value);
+OpenConnections_template(const OPTIONAL<OpenConnections>& other_value);
+OpenConnections_template(const OpenConnections_template& other_value);
+~OpenConnections_template();
+
+void clean_up();
+OpenConnections_template& operator=(template_sel other_value);
+OpenConnections_template& operator=(null_type other_value);
+OpenConnections_template& operator=(const OpenConnections& other_value);
+OpenConnections_template& operator=(const OPTIONAL<OpenConnections>& other_value);
+OpenConnections_template& operator=(const OpenConnections_template& other_value);
+
+COMPONENT_template& operator[](int index_value);
+COMPONENT_template& operator[](const INTEGER& index_value);
+const COMPONENT_template& operator[](int index_value) const;
+const COMPONENT_template& operator[](const INTEGER& index_value) const;
+
+void set_size(int new_size);
+int n_elem() const;
+int size_of(boolean is_size) const;
+inline int size_of() const { return size_of(TRUE); }
+inline int lengthof() const { return size_of(FALSE); }
+boolean match(const OpenConnections& other_value, boolean legacy = FALSE) const;
+inline boolean is_bound() const 
+  {return template_selection != UNINITIALIZED_TEMPLATE; }
+boolean is_value() const;
+OpenConnections valueof() const;
+OpenConnections substr(int index, int returncount) const;
+
+OpenConnections replace(int index, int len, const OpenConnections_template& repl) const;
+
+OpenConnections replace(int index, int len, const OpenConnections& repl) const;
+
+void set_type(template_sel template_type, unsigned int list_length);
+OpenConnections_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const OpenConnections& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean get_istemplate_kind(const char* type) const;
+};
+
+class Isobus__PT : public PORT {
+enum msg_selection { MESSAGE_0 };
+struct msg_queue_item : public msg_queue_item_base {
+msg_selection item_selection;
+union {
+Isobus::CAN__frame__j1939 *message_0;
+};
+component sender_component;
+};
+
+void remove_msg_queue_head();
+protected:
+void clear_queue();
+public:
+Isobus__PT(const char *par_port_name = NULL);
+~Isobus__PT();
+void send(const Isobus::CAN__frame__j1939& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
+void send(const Isobus::CAN__frame__j1939& send_par, FLOAT* timestamp_redirect = NULL);
+void send(const Isobus::CAN__frame__j1939_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
+void send(const Isobus::CAN__frame__j1939_template& send_par, FLOAT* timestamp_redirect = NULL);
+public:
+alt_status receive(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status check_receive(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status trigger(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status receive(const Isobus::CAN__frame__j1939_template& value_template, Isobus::CAN__frame__j1939 *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status check_receive(const Isobus::CAN__frame__j1939_template& value_template, Isobus::CAN__frame__j1939 *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status trigger(const Isobus::CAN__frame__j1939_template& value_template, Isobus::CAN__frame__j1939 *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+private:
+void incoming_message(const Isobus::CAN__frame__j1939& incoming_par, component sender_component);
+protected:
+boolean process_message(const char *message_type, Text_Buf& incoming_buf, component sender_component, OCTETSTRING& slider);
+};
+
+class SyncMasterPort : public PORT {
+enum msg_selection { MESSAGE_0 };
+struct msg_queue_item : public msg_queue_item_base {
+msg_selection item_selection;
+union {
+SocketCANtest::PhaseEndInd *message_0;
+};
+component sender_component;
+};
+
+void remove_msg_queue_head();
+protected:
+void clear_queue();
+public:
+SyncMasterPort(const char *par_port_name = NULL);
+~SyncMasterPort();
+void send(const SocketCANtest::PhaseStartReq& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
+void send(const SocketCANtest::PhaseStartReq& send_par, FLOAT* timestamp_redirect = NULL);
+void send(const SocketCANtest::PhaseStartReq_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
+void send(const SocketCANtest::PhaseStartReq_template& send_par, FLOAT* timestamp_redirect = NULL);
+public:
+alt_status receive(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status check_receive(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status trigger(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status receive(const SocketCANtest::PhaseEndInd_template& value_template, SocketCANtest::PhaseEndInd *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status check_receive(const SocketCANtest::PhaseEndInd_template& value_template, SocketCANtest::PhaseEndInd *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status trigger(const SocketCANtest::PhaseEndInd_template& value_template, SocketCANtest::PhaseEndInd *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+private:
+void incoming_message(const SocketCANtest::PhaseEndInd& incoming_par, component sender_component);
+protected:
+boolean process_message(const char *message_type, Text_Buf& incoming_buf, component sender_component, OCTETSTRING& slider);
+};
+
+class SyncSlavePort : public PORT {
+enum msg_selection { MESSAGE_0 };
+struct msg_queue_item : public msg_queue_item_base {
+msg_selection item_selection;
+union {
+SocketCANtest::PhaseStartReq *message_0;
+};
+component sender_component;
+};
+
+void remove_msg_queue_head();
+protected:
+void clear_queue();
+public:
+SyncSlavePort(const char *par_port_name = NULL);
+~SyncSlavePort();
+void send(const SocketCANtest::PhaseEndInd& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
+void send(const SocketCANtest::PhaseEndInd& send_par, FLOAT* timestamp_redirect = NULL);
+void send(const SocketCANtest::PhaseEndInd_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
+void send(const SocketCANtest::PhaseEndInd_template& send_par, FLOAT* timestamp_redirect = NULL);
+public:
+alt_status receive(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status check_receive(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status trigger(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status receive(const SocketCANtest::PhaseStartReq_template& value_template, SocketCANtest::PhaseStartReq *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status check_receive(const SocketCANtest::PhaseStartReq_template& value_template, SocketCANtest::PhaseStartReq *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status trigger(const SocketCANtest::PhaseStartReq_template& value_template, SocketCANtest::PhaseStartReq *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+private:
+void incoming_message(const SocketCANtest::PhaseStartReq& incoming_par, component sender_component);
+protected:
+boolean process_message(const char *message_type, Text_Buf& incoming_buf, component sender_component, OCTETSTRING& slider);
+};
+
+class PTCSet : public Base_Type {
+struct recordof_setof_struct {
+int ref_count;
+int n_elements;
+COMPONENT **value_elements;
+} *val_ptr;
+
+static const COMPONENT UNBOUND_ELEM;
+private:
+friend boolean operator==(null_type null_value, const PTCSet& other_value);
+
+public:
+  typedef COMPONENT of_type;
+PTCSet();
+PTCSet(null_type other_value);
+PTCSet(const PTCSet& other_value);
+~PTCSet();
+
+void clean_up();
+PTCSet& operator=(null_type other_value);
+PTCSet& operator=(const PTCSet& other_value);
+
+boolean operator==(null_type other_value) const;
+boolean operator==(const PTCSet& other_value) const;
+inline boolean operator!=(null_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const PTCSet& other_value) const { return !(*this == other_value); }
+
+COMPONENT& operator[](int index_value);
+COMPONENT& operator[](const INTEGER& index_value);
+const COMPONENT& operator[](int index_value) const;
+const COMPONENT& operator[](const INTEGER& index_value) const;
+
+PTCSet operator<<=(int rotate_count) const;
+PTCSet operator<<=(const INTEGER& rotate_count) const;
+PTCSet operator>>=(int rotate_count) const;
+PTCSet operator>>=(const INTEGER& rotate_count) const;
+
+PTCSet operator+(const PTCSet& other_value) const;
+
+PTCSet substr(int index, int returncount) const;
+
+PTCSet replace(int index, int len, const PTCSet& repl) const;
+
+PTCSet replace(int index, int len, const PTCSet_template& repl) const;
+
+void set_size(int new_size);
+inline boolean is_bound() const {return val_ptr != NULL; }
+inline boolean is_present() const { return is_bound(); }
+boolean is_value() const;
+int size_of() const;
+int n_elem() const { return size_of(); }
+int lengthof() const;
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+};
+
+class PTCSet_template : public Record_Of_Template {
+union {
+struct {
+int n_elements;
+COMPONENT_template **value_elements;
+} single_value;
+struct {
+unsigned int n_values;
+PTCSet_template *list_value;
+} value_list;
+};
+void copy_value(const PTCSet& other_value);
+void copy_template(const PTCSet_template& other_value);
+static boolean match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy);
+
+public:
+PTCSet_template();
+PTCSet_template(template_sel other_value);
+PTCSet_template(null_type other_value);
+PTCSet_template(const PTCSet& other_value);
+PTCSet_template(const OPTIONAL<PTCSet>& other_value);
+PTCSet_template(const PTCSet_template& other_value);
+~PTCSet_template();
+
+void clean_up();
+PTCSet_template& operator=(template_sel other_value);
+PTCSet_template& operator=(null_type other_value);
+PTCSet_template& operator=(const PTCSet& other_value);
+PTCSet_template& operator=(const OPTIONAL<PTCSet>& other_value);
+PTCSet_template& operator=(const PTCSet_template& other_value);
+
+COMPONENT_template& operator[](int index_value);
+COMPONENT_template& operator[](const INTEGER& index_value);
+const COMPONENT_template& operator[](int index_value) const;
+const COMPONENT_template& operator[](const INTEGER& index_value) const;
+
+void set_size(int new_size);
+int n_elem() const;
+int size_of(boolean is_size) const;
+inline int size_of() const { return size_of(TRUE); }
+inline int lengthof() const { return size_of(FALSE); }
+boolean match(const PTCSet& other_value, boolean legacy = FALSE) const;
+inline boolean is_bound() const 
+  {return template_selection != UNINITIALIZED_TEMPLATE; }
+boolean is_value() const;
+PTCSet valueof() const;
+PTCSet substr(int index, int returncount) const;
+
+PTCSet replace(int index, int len, const PTCSet_template& repl) const;
+
+PTCSet replace(int index, int len, const PTCSet& repl) const;
+
+void set_type(template_sel template_type, unsigned int list_length);
+PTCSet_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const PTCSet& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean get_istemplate_kind(const char* type) const;
+};
+
+
+/* Function prototypes */
+
+extern boolean operator==(null_type null_value, const OpenConnections& other_value);
+inline boolean operator!=(null_type null_value, const OpenConnections& other_value) { return !(null_value == other_value); }
+extern boolean operator==(null_type null_value, const PTCSet& other_value);
+inline boolean operator!=(null_type null_value, const PTCSet& other_value) { return !(null_value == other_value); }
+extern SocketCAN__Types::SocketCAN__socket__result f__open__socket2(const SocketCANtest::SocketCAN__open__socket__type& v__socket__type);
+extern void start_f__open__socket2(const COMPONENT& component_reference, const SocketCANtest::SocketCAN__open__socket__type& v__socket__type);
+extern SocketCANtest::SocketCAN__open__raw__result f__open__raw2();
+extern void start_f__open__raw2(const COMPONENT& component_reference);
+extern SocketCAN__Types::SocketCAN__ioctl__result f__ioctl__get__if__index2(const INTEGER& p__socket__id);
+extern void start_f__ioctl__get__if__index2(const COMPONENT& component_reference, const INTEGER& p__socket__id);
+extern SocketCAN__Types::SocketCAN__bind__result f__bind2(const INTEGER& p__socket__id, const INTEGER& p__if__index);
+extern void start_f__bind2(const COMPONENT& component_reference, const INTEGER& p__socket__id, const INTEGER& p__if__index);
+extern void f__close__socket2(const INTEGER& p__socket__id);
+extern void start_f__close__socket2(const COMPONENT& component_reference, const INTEGER& p__socket__id);
+extern void f__behaviour__isobus(const COMPONENT& v__ptc1);
+extern void start_f__behaviour__isobus(const COMPONENT& component_reference, const COMPONENT& v__ptc1);
+extern void f__behaviour1__sync();
+extern void start_f__behaviour1__sync(const COMPONENT& component_reference);
+extern COMPONENT f__get__component(const OCTETSTRING& connectioninitiator, const OCTETSTRING& connectionresponder);
+extern void start_f__get__component(const COMPONENT& component_reference, const OCTETSTRING& connectioninitiator, const OCTETSTRING& connectionresponder);
+extern void f__behaviour2__sync();
+extern void start_f__behaviour2__sync(const COMPONENT& component_reference);
+extern void f__behaviour__connections();
+extern void start_f__behaviour__connections(const COMPONENT& component_reference);
+extern verdicttype testcase_tc__encdec(boolean has_timer, double timer_value);
+extern verdicttype testcase_tc__encdec__vt2ecu__vtStatusReq(boolean has_timer, double timer_value);
+extern verdicttype testcase_tc__encdec__ecu2vt__getMemoryReq(boolean has_timer, double timer_value);
+extern verdicttype testcase_tc__encdec__ecu2vt__getMemoryReq__with__templateI(boolean has_timer, double timer_value);
+extern verdicttype testcase_tc__encdec__ecu2vt__getMemoryReq__with__template__II(boolean has_timer, double timer_value);
+extern verdicttype testcase_tc__encdec__networkMessage__N__SP__Response__pdu__with__template(boolean has_timer, double timer_value);
+extern verdicttype testcase_tc__encdec__networkMessage__N__SP__Response__with__template(boolean has_timer, double timer_value);
+extern verdicttype testcase_tc__encdec__N__SP__Response__with__template(boolean has_timer, double timer_value);
+extern verdicttype testcase_tc__encdec__ecu2vt__workingSetMaintenanceReq(boolean has_timer, double timer_value);
+extern verdicttype testcase_tc__encdec__etp__dt(boolean has_timer, double timer_value);
+extern verdicttype testcase_tc__dec__requestForAddressClaimed(boolean has_timer, double timer_value);
+extern verdicttype testcase_tc__dec__largemessage(boolean has_timer, double timer_value);
+extern verdicttype testcase_tc__Example001(boolean has_timer, double timer_value);
+extern verdicttype testcase_tc__Example002(boolean has_timer, double timer_value);
+
+/* Global variable declarations */
+
+extern const TTCN_Typedescriptor_t CAN__ID_descr_;
+extern const XERdescriptor_t CAN__ID_can__eff_xer_;
+extern const TTCN_OERdescriptor_t CAN__ID_can__eff_oer_;
+extern const TTCN_Typedescriptor_t CAN__ID_can__eff_descr_;
+extern const XERdescriptor_t CAN__ID_can__sff_xer_;
+extern const TTCN_OERdescriptor_t CAN__ID_can__sff_oer_;
+extern const TTCN_Typedescriptor_t CAN__ID_can__sff_descr_;
+extern const TTCN_RAWdescriptor_t RTR_raw_;
+extern const TTCN_Typedescriptor_t RTR_descr_;
+extern const TTCN_RAWdescriptor_t BIT29_raw_;
+extern const XERdescriptor_t BIT29_xer_;
+extern const TTCN_OERdescriptor_t BIT29_oer_;
+extern const TTCN_Typedescriptor_t BIT29_descr_;
+extern const XERdescriptor_t CAN__ID_can__err_xer_;
+extern const TTCN_OERdescriptor_t CAN__ID_can__err_oer_;
+extern const TTCN_Typedescriptor_t CAN__ID_can__err_descr_;
+extern const TTCN_RAWdescriptor_t Can__IDs_raw_;
+extern const TTCN_Typedescriptor_t Can__IDs_descr_;
+extern const XERdescriptor_t Can__IDs_can__eff_xer_;
+extern const TTCN_OERdescriptor_t Can__IDs_can__eff_oer_;
+extern const TTCN_Typedescriptor_t Can__IDs_can__eff_descr_;
+extern const XERdescriptor_t Can__IDs_can__sff_xer_;
+extern const TTCN_OERdescriptor_t Can__IDs_can__sff_oer_;
+extern const TTCN_Typedescriptor_t Can__IDs_can__sff_descr_;
+extern const XERdescriptor_t Can__IDs_can__err_xer_;
+extern const TTCN_OERdescriptor_t Can__IDs_can__err_oer_;
+extern const TTCN_Typedescriptor_t Can__IDs_can__err_descr_;
+extern const XERdescriptor_t Can__IDwithType_cantype_xer_;
+extern const TTCN_OERdescriptor_t Can__IDwithType_cantype_oer_;
+extern const TTCN_Typedescriptor_t Can__IDwithType_cantype_descr_;
+extern const TTCN_RAWdescriptor_t Can__IDwithType_can__ids_raw_;
+extern const TTCN_Typedescriptor_t Can__IDwithType_can__ids_descr_;
+extern const TTCN_RAWdescriptor_t Can__IDwithType_raw_;
+extern const TTCN_Typedescriptor_t Can__IDwithType_descr_;
+extern const TTCN_Typedescriptor_t& MTC__CT_descr_;
+extern const TTCN_Typedescriptor_t& PTC__isobus__CT_descr_;
+extern SocketCAN__PortType::SocketCAN__PT PTC__isobus__CT_component_pt__socketCAN;
+extern Isobus__PT PTC__isobus__CT_component_pt__isobus;
+extern TIMER PTC__isobus__CT_component_T0;
+extern const INTEGER& MAX__CONNECTIONS;
+extern const TTCN_Typedescriptor_t OpenConnections_descr_;
+extern const TTCN_Typedescriptor_t& PTC2__CT_descr_;
+extern const TTCN_Typedescriptor_t OpenConnectionsFlags_descr_;
+extern const XERdescriptor_t OpenConnectionsFlags_0_xer_;
+extern const TTCN_OERdescriptor_t OpenConnectionsFlags_0_oer_;
+extern const TTCN_Typedescriptor_t OpenConnectionsFlags_0_descr_;
+extern const TTCN_Typedescriptor_t& PTC1__CT_descr_;
+extern Isobus__PT PTC1__CT_component_pt__isobus;
+extern OpenConnections PTC1__CT_component_openConnections;
+extern OpenConnectionsFlags PTC1__CT_component_openConnectionsFlags;
+extern TIMER PTC1__CT_component_T1;
+extern Isobus__PT PTC2__CT_component_pt__isobus;
+extern OCTETSTRING PTC2__CT_component_receivedUnacknowledgedData;
+extern INTEGER PTC2__CT_component_msgSizeInBytes;
+extern INTEGER PTC2__CT_component_receivedUnacknowledgedMsgSizeInBytes;
+extern INTEGER PTC2__CT_component_nextExpectedPacketNumber;
+extern INTEGER PTC2__CT_component_pgnOfMultiPacketMessage;
+extern const XERdescriptor_t _T_PTC2__CT_component_ps_xer_;
+extern const TTCN_OERdescriptor_t _T_PTC2__CT_component_ps_oer_;
+extern const TTCN_Typedescriptor_t _T_PTC2__CT_component_ps_descr_;
+extern OCTETSTRING PTC2__CT_component_ps;
+extern OCTETSTRING PTC2__CT_component_sa;
+extern OCTETSTRING PTC2__CT_component_tp__dt__can__id;
+extern TIMER PTC2__CT_component_T2;
+extern const TTCN_Typedescriptor_t PTCSet_descr_;
+extern const TTCN_Typedescriptor_t& PTC_descr_;
+extern SyncSlavePort PTC_component_pt__sync;
+extern SocketCAN__PortType::SocketCAN__PT PTC_component_pt__socketCAN;
+extern SocketCANtest::e__Phase PTC_component_v__phase;
+extern TTCN_Module module_object;
+
+} /* end of namespace */
+
+#endif
diff --git a/demo/Isobustest.o b/demo/Isobustest.o
new file mode 100644
index 0000000..3506919
--- /dev/null
+++ b/demo/Isobustest.o
Binary files differ
diff --git a/demo/Isotp.cc b/demo/Isotp.cc
new file mode 100644
index 0000000..9ea61d2
--- /dev/null
+++ b/demo/Isotp.cc
@@ -0,0 +1,68 @@
+// This C++ source file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+/* Including header files */
+
+#include "Isotp.hh"
+
+namespace Isotp {
+
+/* Prototypes of static functions */
+
+static void pre_init_module();
+static void post_init_module();
+
+/* Literal string constants */
+
+static const unsigned char module_checksum[] = { 0x42, 0x28, 0x33, 0xe2, 0x7b, 0x11, 0xa0, 0xad, 0x1e, 0x99, 0x72, 0x44, 0x09, 0x2a, 0xac, 0x60 };
+
+/* Global variable definitions */
+
+TTCN_Module module_object("Isotp", __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);
+
+static const RuntimeVersionChecker ver_checker(  current_runtime_version.requires_major_version_6,
+  current_runtime_version.requires_minor_version_6,
+  current_runtime_version.requires_patch_level_0,  current_runtime_version.requires_runtime_1);
+
+/* Bodies of functions, altsteps and testcases */
+
+SocketCAN__Types::SocketCAN__write__isotp__result_template a__SocketCAN__write__isotp__result(const SocketCAN__Types::SocketCAN__Result_template& p__result)
+{
+TTCN_Location current_location("Isotp.ttcn", 26, TTCN_Location::LOCATION_TEMPLATE, "a_SocketCAN_write_isotp_result");
+SocketCAN__Types::SocketCAN__write__isotp__result_template ret_val;
+ret_val.result() = p__result;
+return ret_val;
+}
+
+SocketCAN__Types::SocketCAN__receive__isotp__pdu_template a__SocketCAN__receive__isotp__pdu(const INTEGER_template& p__id, const OCTETSTRING_template& , const OCTETSTRING_template& p__isotp__pdu)
+{
+TTCN_Location current_location("Isotp.ttcn", 32, TTCN_Location::LOCATION_TEMPLATE, "a_SocketCAN_receive_isotp_pdu");
+SocketCAN__Types::SocketCAN__receive__isotp__pdu_template ret_val;
+ret_val.id() = p__id;
+ret_val.ifr() = ANY_VALUE;
+ret_val.pdu() = p__isotp__pdu;
+return ret_val;
+}
+
+
+/* Bodies of static functions */
+
+static void pre_init_module()
+{
+TTCN_Location current_location("Isotp.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "Isotp");
+SocketCAN__Types::module_object.pre_init_module();
+}
+
+static void post_init_module()
+{
+TTCN_Location current_location("Isotp.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "Isotp");
+SocketCAN__Types::module_object.post_init_module();
+}
+
+
+} /* end of namespace */
diff --git a/demo/Isotp.d b/demo/Isotp.d
new file mode 100644
index 0000000..c055289
--- /dev/null
+++ b/demo/Isotp.d
@@ -0,0 +1,59 @@
+Isotp.o Isotp.d : Isotp.cc Isotp.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TTCN3.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/version.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/cversion.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Types.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Vector.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Error.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Basetype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Encdec.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RInt.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON_Tokenizer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Logger.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Template.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Integer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ttcn3float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Boolean.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Null.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Optional.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Param_Types.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/memory.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/BER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Textbuf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Parameters.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XmlReader.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Objid.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Verdicttype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Component.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Bitstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RAW.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/CharCoding.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Hexstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Octetstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Any.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Universal_charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Struct_of.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Array.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_CharacterString.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_External.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TEXT.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_EmbeddedPDV.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Addfunc.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Timer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Port.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Event_Handler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/TitanLoggerApiSimple.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/PreGenRecordOf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Module_list.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Snapshot.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Default.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Runtime.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/OER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Profiler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ProfilerTools.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Debugger.hh \
+ SocketCAN_Types.hh Bcm.hh Can.hh General_Types.hh Raw.hh
diff --git a/demo/Isotp.hh b/demo/Isotp.hh
new file mode 100644
index 0000000..6f346ab
--- /dev/null
+++ b/demo/Isotp.hh
@@ -0,0 +1,45 @@
+// This C++ header file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+#ifndef Isotp_HH
+#define Isotp_HH
+
+#ifdef TITAN_RUNTIME_2
+#error Generated code does not match with used runtime.\
+ Code was generated without -R option but -DTITAN_RUNTIME_2 was used.
+#endif
+
+/* Header file includes */
+
+#include <TTCN3.hh>
+#include "SocketCAN_Types.hh"
+
+#if TTCN3_VERSION != 60600
+#error Version mismatch detected.\
+ Please check the version of the TTCN-3 compiler and the base library.\
+ Run make clean and rebuild the project if the version of the compiler changed recently.
+#endif
+
+#ifndef LINUX
+#error This file should be compiled on LINUX
+#endif
+
+namespace Isotp {
+
+/* Function prototypes */
+
+extern SocketCAN__Types::SocketCAN__write__isotp__result_template a__SocketCAN__write__isotp__result(const SocketCAN__Types::SocketCAN__Result_template& p__result);
+extern SocketCAN__Types::SocketCAN__receive__isotp__pdu_template a__SocketCAN__receive__isotp__pdu(const INTEGER_template& p__id, const OCTETSTRING_template& , const OCTETSTRING_template& p__isotp__pdu);
+
+/* Global variable declarations */
+
+extern TTCN_Module module_object;
+
+} /* end of namespace */
+
+#endif
diff --git a/demo/Isotp.o b/demo/Isotp.o
new file mode 100644
index 0000000..17a1cac
--- /dev/null
+++ b/demo/Isotp.o
Binary files differ
diff --git a/demo/Isotptest.cc b/demo/Isotptest.cc
new file mode 100644
index 0000000..547df04
--- /dev/null
+++ b/demo/Isotptest.cc
@@ -0,0 +1,2171 @@
+// This C++ source file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+/* Including header files */
+
+#include "Isotptest.hh"
+
+namespace Isotptest {
+
+/* Prototypes of static functions */
+
+static void pre_init_module();
+static void post_init_module();
+static boolean init_comp_type(const char *component_type, boolean init_base_comps);
+static boolean init_system_port(const char* component_type, const char* port_name);
+static boolean start_ptc_function(const char *function_name, Text_Buf& function_arguments);
+static void module_control_part();
+
+/* Literal string constants */
+
+static const unsigned char os_2_octets[] = { 0, 0, 0, 35 },
+os_1_octets[] = { 0, 0, 0, 50 },
+os_0_octets[] = { 0, 17, 34, 51, 68, 85, 102, 119, 136, 153 };
+static const OCTETSTRING os_2(4, os_2_octets),
+os_1(4, os_1_octets),
+os_0(10, os_0_octets);
+static const unsigned char module_checksum[] = { 0x67, 0xa6, 0x54, 0x50, 0xd9, 0x71, 0xec, 0xb2, 0x7e, 0x4d, 0x8e, 0xd0, 0x71, 0x0a, 0xa7, 0xff };
+
+/* Global variable definitions */
+
+static FLOAT const_c__guard;
+const FLOAT& c__guard = const_c__guard;
+// No XER for SocketCAN__open__socket__type
+const TTCN_Typedescriptor_t SocketCAN__open__socket__type_descr_ = { "@Isotptest.SocketCAN_open_socket_type", NULL, NULL, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SocketCAN__open__isotp__result_socket__id_xer_ = { {"socket_id>\n", "socket_id>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SocketCAN__open__isotp__result_socket__id_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SocketCAN__open__isotp__result_socket__id_descr_ = { "@Isotptest.SocketCAN_open_isotp_result.socket_id", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &SocketCAN__open__isotp__result_socket__id_xer_, &INTEGER_json_, &SocketCAN__open__isotp__result_socket__id_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for SocketCAN__open__isotp__result
+const TTCN_Typedescriptor_t SocketCAN__open__isotp__result_descr_ = { "@Isotptest.SocketCAN_open_isotp_result", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_Typedescriptor_t& MTC__CT_descr_ = COMPONENT_descr_;
+const TTCN_Typedescriptor_t& PTC__isotp__CT_descr_ = COMPONENT_descr_;
+SocketCAN__PortType::SocketCAN__PT PTC__isotp__CT_component_pt__socketCAN("pt_socketCAN");
+TIMER PTC__isotp__CT_component_T0("T0", 2.0e-1);
+TTCN_Module module_object("Isotptest", __DATE__, __TIME__, module_checksum, pre_init_module, NULL, 0U, 4294967295U, 4294967295U, 4294967295U, NULL, 0LU, 0, post_init_module, NULL, NULL, NULL, init_comp_type, init_system_port, start_ptc_function, module_control_part);
+
+static const RuntimeVersionChecker ver_checker(  current_runtime_version.requires_major_version_6,
+  current_runtime_version.requires_minor_version_6,
+  current_runtime_version.requires_patch_level_0,  current_runtime_version.requires_runtime_1);
+
+/* Member functions of C++ classes */
+
+SocketCAN__open__socket__type::SocketCAN__open__socket__type()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+SocketCAN__open__socket__type::SocketCAN__open__socket__type(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @Isotptest.SocketCAN_open_socket_type with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+SocketCAN__open__socket__type::SocketCAN__open__socket__type(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+SocketCAN__open__socket__type::SocketCAN__open__socket__type(const SocketCAN__open__socket__type& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @Isotptest.SocketCAN_open_socket_type.");
+enum_value = other_value.enum_value;
+}
+
+SocketCAN__open__socket__type& SocketCAN__open__socket__type::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @Isotptest.SocketCAN_open_socket_type.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+SocketCAN__open__socket__type& SocketCAN__open__socket__type::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+SocketCAN__open__socket__type& SocketCAN__open__socket__type::operator=(const SocketCAN__open__socket__type& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @Isotptest.SocketCAN_open_socket_type.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean SocketCAN__open__socket__type::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Isotptest.SocketCAN_open_socket_type.");
+return enum_value == other_value;
+}
+
+boolean SocketCAN__open__socket__type::operator==(const SocketCAN__open__socket__type& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Isotptest.SocketCAN_open_socket_type.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @Isotptest.SocketCAN_open_socket_type.");
+return enum_value == other_value.enum_value;
+}
+
+boolean SocketCAN__open__socket__type::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Isotptest.SocketCAN_open_socket_type.");
+return enum_value < other_value;
+}
+
+boolean SocketCAN__open__socket__type::operator<(const SocketCAN__open__socket__type& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Isotptest.SocketCAN_open_socket_type.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @Isotptest.SocketCAN_open_socket_type.");
+return enum_value < other_value.enum_value;
+}
+
+boolean SocketCAN__open__socket__type::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Isotptest.SocketCAN_open_socket_type.");
+return enum_value > other_value;
+}
+
+boolean SocketCAN__open__socket__type::operator>(const SocketCAN__open__socket__type& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Isotptest.SocketCAN_open_socket_type.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @Isotptest.SocketCAN_open_socket_type.");
+return enum_value > other_value.enum_value;
+}
+
+const char *SocketCAN__open__socket__type::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case OPEN__CAN__RAW: return "OPEN_CAN_RAW";
+case OPEN__CAN__BCM: return "OPEN_CAN_BCM";
+case OPEN__CAN__ISOTP: return "OPEN_CAN_ISOTP";
+default: return "<unknown>";
+}
+}
+
+SocketCAN__open__socket__type::enum_type SocketCAN__open__socket__type::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "OPEN_CAN_RAW")) return OPEN__CAN__RAW;
+else if (!strcmp(str_par, "OPEN_CAN_BCM")) return OPEN__CAN__BCM;
+else if (!strcmp(str_par, "OPEN_CAN_ISOTP")) return OPEN__CAN__ISOTP;
+else return UNKNOWN_VALUE;
+}
+
+boolean SocketCAN__open__socket__type::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 0:
+case 1:
+case 2:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int SocketCAN__open__socket__type::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @Isotptest.SocketCAN_open_socket_type.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int SocketCAN__open__socket__type::enum2int(const SocketCAN__open__socket__type& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @Isotptest.SocketCAN_open_socket_type.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void SocketCAN__open__socket__type::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @Isotptest.SocketCAN_open_socket_type.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+SocketCAN__open__socket__type::operator SocketCAN__open__socket__type::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @Isotptest.SocketCAN_open_socket_type.");
+return enum_value;
+}
+
+void SocketCAN__open__socket__type::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void SocketCAN__open__socket__type::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@Isotptest.SocketCAN_open_socket_type");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @Isotptest.SocketCAN_open_socket_type.");
+  }
+}
+
+void SocketCAN__open__socket__type::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @Isotptest.SocketCAN_open_socket_type.");
+text_buf.push_int(enum_value);
+}
+
+void SocketCAN__open__socket__type::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @Isotptest.SocketCAN_open_socket_type.", enum_value);
+}
+
+void SocketCAN__open__socket__type_template::copy_template(const SocketCAN__open__socket__type_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SocketCAN__open__socket__type_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @Isotptest.SocketCAN_open_socket_type.");
+}
+}
+
+SocketCAN__open__socket__type_template::SocketCAN__open__socket__type_template()
+{
+}
+
+SocketCAN__open__socket__type_template::SocketCAN__open__socket__type_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SocketCAN__open__socket__type_template::SocketCAN__open__socket__type_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!SocketCAN__open__socket__type::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @Isotptest.SocketCAN_open_socket_type with unknown numeric value %d.", other_value);
+single_value = (SocketCAN__open__socket__type::enum_type)other_value;
+}
+
+SocketCAN__open__socket__type_template::SocketCAN__open__socket__type_template(SocketCAN__open__socket__type::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+SocketCAN__open__socket__type_template::SocketCAN__open__socket__type_template(const SocketCAN__open__socket__type& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == SocketCAN__open__socket__type::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @Isotptest.SocketCAN_open_socket_type.");
+single_value = other_value.enum_value;
+}
+
+SocketCAN__open__socket__type_template::SocketCAN__open__socket__type_template(const OPTIONAL<SocketCAN__open__socket__type>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (SocketCAN__open__socket__type::enum_type)(const SocketCAN__open__socket__type&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @Isotptest.SocketCAN_open_socket_type from an unbound optional field.");
+}
+}
+
+SocketCAN__open__socket__type_template::SocketCAN__open__socket__type_template(const SocketCAN__open__socket__type_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+SocketCAN__open__socket__type_template::~SocketCAN__open__socket__type_template()
+{
+clean_up();
+}
+
+boolean SocketCAN__open__socket__type_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean SocketCAN__open__socket__type_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != SocketCAN__open__socket__type::UNBOUND_VALUE;
+}
+
+void SocketCAN__open__socket__type_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SocketCAN__open__socket__type_template& SocketCAN__open__socket__type_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SocketCAN__open__socket__type_template& SocketCAN__open__socket__type_template::operator=(int other_value)
+{
+if (!SocketCAN__open__socket__type::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @Isotptest.SocketCAN_open_socket_type.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (SocketCAN__open__socket__type::enum_type)other_value;
+return *this;
+}
+
+SocketCAN__open__socket__type_template& SocketCAN__open__socket__type_template::operator=(SocketCAN__open__socket__type::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+SocketCAN__open__socket__type_template& SocketCAN__open__socket__type_template::operator=(const SocketCAN__open__socket__type& other_value)
+{
+if (other_value.enum_value == SocketCAN__open__socket__type::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @Isotptest.SocketCAN_open_socket_type to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+SocketCAN__open__socket__type_template& SocketCAN__open__socket__type_template::operator=(const OPTIONAL<SocketCAN__open__socket__type>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (SocketCAN__open__socket__type::enum_type)(const SocketCAN__open__socket__type&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @Isotptest.SocketCAN_open_socket_type.");
+}
+return *this;
+}
+
+SocketCAN__open__socket__type_template& SocketCAN__open__socket__type_template::operator=(const SocketCAN__open__socket__type_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__open__socket__type_template::match(SocketCAN__open__socket__type::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @Isotptest.SocketCAN_open_socket_type.");
+}
+return FALSE;
+}
+
+boolean SocketCAN__open__socket__type_template::match(const SocketCAN__open__socket__type& other_value, boolean) const
+{
+if (other_value.enum_value == SocketCAN__open__socket__type::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @Isotptest.SocketCAN_open_socket_type with an unbound value.");
+return match(other_value.enum_value);
+}
+
+SocketCAN__open__socket__type::enum_type SocketCAN__open__socket__type_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @Isotptest.SocketCAN_open_socket_type.");
+return single_value;
+}
+
+void SocketCAN__open__socket__type_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @Isotptest.SocketCAN_open_socket_type.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SocketCAN__open__socket__type_template[list_length];
+}
+
+SocketCAN__open__socket__type_template& SocketCAN__open__socket__type_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @Isotptest.SocketCAN_open_socket_type.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @Isotptest.SocketCAN_open_socket_type.");
+return value_list.list_value[list_index];
+}
+
+void SocketCAN__open__socket__type_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(SocketCAN__open__socket__type::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SocketCAN__open__socket__type_template::log_match(const SocketCAN__open__socket__type& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void SocketCAN__open__socket__type_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @Isotptest.SocketCAN_open_socket_type.");
+}
+}
+
+void SocketCAN__open__socket__type_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (SocketCAN__open__socket__type::enum_type)text_buf.pull_int().get_val();
+if (!SocketCAN__open__socket__type::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @Isotptest.SocketCAN_open_socket_type.", single_value);
+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 SocketCAN__open__socket__type_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @Isotptest.SocketCAN_open_socket_type.");
+}
+}
+
+boolean SocketCAN__open__socket__type_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SocketCAN__open__socket__type_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 SocketCAN__open__socket__type_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    SocketCAN__open__socket__type_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    SocketCAN__open__socket__type::enum_type enum_val = SocketCAN__open__socket__type::str_to_enum(m_p->get_enumerated());
+    if (!SocketCAN__open__socket__type::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @Isotptest.SocketCAN_open_socket_type.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@Isotptest.SocketCAN_open_socket_type");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SocketCAN__open__socket__type_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@Isotptest.SocketCAN_open_socket_type");
+}
+
+SocketCAN__open__isotp__result::SocketCAN__open__isotp__result()
+{
+}
+
+SocketCAN__open__isotp__result::SocketCAN__open__isotp__result(const SocketCAN__Types::SocketCAN__ifr& par_ifr,
+    const INTEGER& par_socket__id)
+  :   field_ifr(par_ifr),
+  field_socket__id(par_socket__id)
+{
+}
+
+SocketCAN__open__isotp__result::SocketCAN__open__isotp__result(const SocketCAN__open__isotp__result& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @Isotptest.SocketCAN_open_isotp_result.");
+if (other_value.ifr().is_bound()) field_ifr = other_value.ifr();
+else field_ifr.clean_up();
+if (other_value.socket__id().is_bound()) field_socket__id = other_value.socket__id();
+else field_socket__id.clean_up();
+}
+
+void SocketCAN__open__isotp__result::clean_up()
+{
+field_ifr.clean_up();
+field_socket__id.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SocketCAN__open__isotp__result::get_descriptor() const { return &SocketCAN__open__isotp__result_descr_; }
+SocketCAN__open__isotp__result& SocketCAN__open__isotp__result::operator=(const SocketCAN__open__isotp__result& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @Isotptest.SocketCAN_open_isotp_result.");
+  if (other_value.ifr().is_bound()) field_ifr = other_value.ifr();
+  else field_ifr.clean_up();
+  if (other_value.socket__id().is_bound()) field_socket__id = other_value.socket__id();
+  else field_socket__id.clean_up();
+}
+return *this;
+}
+
+boolean SocketCAN__open__isotp__result::operator==(const SocketCAN__open__isotp__result& other_value) const
+{
+return field_ifr==other_value.field_ifr
+  && field_socket__id==other_value.field_socket__id;
+}
+
+boolean SocketCAN__open__isotp__result::is_bound() const
+{
+return (field_ifr.is_bound())
+  || (field_socket__id.is_bound());
+}
+boolean SocketCAN__open__isotp__result::is_value() const
+{
+return field_ifr.is_value()
+  && field_socket__id.is_value();
+}
+void SocketCAN__open__isotp__result::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ ifr := ");
+field_ifr.log();
+TTCN_Logger::log_event_str(", socket_id := ");
+field_socket__id.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SocketCAN__open__isotp__result::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 @Isotptest.SocketCAN_open_isotp_result 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) ifr().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) socket__id().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(), "ifr")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ifr().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(), "socket_id")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          socket__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 @Isotptest.SocketCAN_open_isotp_result: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@Isotptest.SocketCAN_open_isotp_result");
+  }
+}
+
+void SocketCAN__open__isotp__result::set_implicit_omit()
+{
+if (ifr().is_bound()) ifr().set_implicit_omit();
+if (socket__id().is_bound()) socket__id().set_implicit_omit();
+}
+
+void SocketCAN__open__isotp__result::encode_text(Text_Buf& text_buf) const
+{
+field_ifr.encode_text(text_buf);
+field_socket__id.encode_text(text_buf);
+}
+
+void SocketCAN__open__isotp__result::decode_text(Text_Buf& text_buf)
+{
+field_ifr.decode_text(text_buf);
+field_socket__id.decode_text(text_buf);
+}
+
+struct SocketCAN__open__isotp__result_template::single_value_struct {
+SocketCAN__Types::SocketCAN__ifr_template field_ifr;
+INTEGER_template field_socket__id;
+};
+
+void SocketCAN__open__isotp__result_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_ifr = ANY_VALUE;
+single_value->field_socket__id = ANY_VALUE;
+}
+}
+}
+
+void SocketCAN__open__isotp__result_template::copy_value(const SocketCAN__open__isotp__result& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.ifr().is_bound()) {
+  single_value->field_ifr = other_value.ifr();
+} else {
+  single_value->field_ifr.clean_up();
+}
+if (other_value.socket__id().is_bound()) {
+  single_value->field_socket__id = other_value.socket__id();
+} else {
+  single_value->field_socket__id.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SocketCAN__open__isotp__result_template::copy_template(const SocketCAN__open__isotp__result_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.ifr().get_selection()) {
+single_value->field_ifr = other_value.ifr();
+} else {
+single_value->field_ifr.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.socket__id().get_selection()) {
+single_value->field_socket__id = other_value.socket__id();
+} else {
+single_value->field_socket__id.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SocketCAN__open__isotp__result_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @Isotptest.SocketCAN_open_isotp_result.");
+break;
+}
+set_selection(other_value);
+}
+
+SocketCAN__open__isotp__result_template::SocketCAN__open__isotp__result_template()
+{
+}
+
+SocketCAN__open__isotp__result_template::SocketCAN__open__isotp__result_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SocketCAN__open__isotp__result_template::SocketCAN__open__isotp__result_template(const SocketCAN__open__isotp__result& other_value)
+{
+copy_value(other_value);
+}
+
+SocketCAN__open__isotp__result_template::SocketCAN__open__isotp__result_template(const OPTIONAL<SocketCAN__open__isotp__result>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__open__isotp__result&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @Isotptest.SocketCAN_open_isotp_result from an unbound optional field.");
+}
+}
+
+SocketCAN__open__isotp__result_template::SocketCAN__open__isotp__result_template(const SocketCAN__open__isotp__result_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SocketCAN__open__isotp__result_template::~SocketCAN__open__isotp__result_template()
+{
+clean_up();
+}
+
+SocketCAN__open__isotp__result_template& SocketCAN__open__isotp__result_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SocketCAN__open__isotp__result_template& SocketCAN__open__isotp__result_template::operator=(const SocketCAN__open__isotp__result& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SocketCAN__open__isotp__result_template& SocketCAN__open__isotp__result_template::operator=(const OPTIONAL<SocketCAN__open__isotp__result>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__open__isotp__result&)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 @Isotptest.SocketCAN_open_isotp_result.");
+}
+return *this;
+}
+
+SocketCAN__open__isotp__result_template& SocketCAN__open__isotp__result_template::operator=(const SocketCAN__open__isotp__result_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__open__isotp__result_template::match(const SocketCAN__open__isotp__result& 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.ifr().is_bound()) return FALSE;
+if(!single_value->field_ifr.match(other_value.ifr(), legacy))return FALSE;
+if(!other_value.socket__id().is_bound()) return FALSE;
+if(!single_value->field_socket__id.match(other_value.socket__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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @Isotptest.SocketCAN_open_isotp_result.");
+}
+return FALSE;
+}
+
+boolean SocketCAN__open__isotp__result_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_ifr.is_bound()
+
+ ||single_value->field_socket__id.is_bound()
+;
+}
+
+boolean SocketCAN__open__isotp__result_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_ifr.is_value()
+ &&single_value->field_socket__id.is_value();
+}
+
+void SocketCAN__open__isotp__result_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SocketCAN__open__isotp__result SocketCAN__open__isotp__result_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 @Isotptest.SocketCAN_open_isotp_result.");
+SocketCAN__open__isotp__result ret_val;
+if (single_value->field_ifr.is_bound()) {
+ret_val.ifr() = single_value->field_ifr.valueof();
+}
+if (single_value->field_socket__id.is_bound()) {
+ret_val.socket__id() = single_value->field_socket__id.valueof();
+}
+return ret_val;
+}
+
+void SocketCAN__open__isotp__result_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @Isotptest.SocketCAN_open_isotp_result.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SocketCAN__open__isotp__result_template[list_length];
+}
+
+SocketCAN__open__isotp__result_template& SocketCAN__open__isotp__result_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @Isotptest.SocketCAN_open_isotp_result.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @Isotptest.SocketCAN_open_isotp_result.");
+return value_list.list_value[list_index];
+}
+
+SocketCAN__Types::SocketCAN__ifr_template& SocketCAN__open__isotp__result_template::ifr()
+{
+set_specific();
+return single_value->field_ifr;
+}
+
+const SocketCAN__Types::SocketCAN__ifr_template& SocketCAN__open__isotp__result_template::ifr() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field ifr of a non-specific template of type @Isotptest.SocketCAN_open_isotp_result.");
+return single_value->field_ifr;
+}
+
+INTEGER_template& SocketCAN__open__isotp__result_template::socket__id()
+{
+set_specific();
+return single_value->field_socket__id;
+}
+
+const INTEGER_template& SocketCAN__open__isotp__result_template::socket__id() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field socket_id of a non-specific template of type @Isotptest.SocketCAN_open_isotp_result.");
+return single_value->field_socket__id;
+}
+
+int SocketCAN__open__isotp__result_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @Isotptest.SocketCAN_open_isotp_result 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 @Isotptest.SocketCAN_open_isotp_result 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 @Isotptest.SocketCAN_open_isotp_result containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @Isotptest.SocketCAN_open_isotp_result containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @Isotptest.SocketCAN_open_isotp_result containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @Isotptest.SocketCAN_open_isotp_result containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @Isotptest.SocketCAN_open_isotp_result.");
+  }
+  return 0;
+}
+
+void SocketCAN__open__isotp__result_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ ifr := ");
+single_value->field_ifr.log();
+TTCN_Logger::log_event_str(", socket_id := ");
+single_value->field_socket__id.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SocketCAN__open__isotp__result_template::log_match(const SocketCAN__open__isotp__result& 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_ifr.match(match_value.ifr(), legacy)){
+TTCN_Logger::log_logmatch_info(".ifr");
+single_value->field_ifr.log_match(match_value.ifr(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_socket__id.match(match_value.socket__id(), legacy)){
+TTCN_Logger::log_logmatch_info(".socket_id");
+single_value->field_socket__id.log_match(match_value.socket__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("{ ifr := ");
+single_value->field_ifr.log_match(match_value.ifr(), legacy);
+TTCN_Logger::log_event_str(", socket_id := ");
+single_value->field_socket__id.log_match(match_value.socket__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 SocketCAN__open__isotp__result_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_ifr.encode_text(text_buf);
+single_value->field_socket__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 @Isotptest.SocketCAN_open_isotp_result.");
+}
+}
+
+void SocketCAN__open__isotp__result_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_ifr.decode_text(text_buf);
+single_value->field_socket__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 SocketCAN__open__isotp__result_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 @Isotptest.SocketCAN_open_isotp_result.");
+}
+}
+
+void SocketCAN__open__isotp__result_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: {
+    SocketCAN__open__isotp__result_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @Isotptest.SocketCAN_open_isotp_result 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) ifr().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) socket__id().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(), "ifr")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ifr().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(), "socket_id")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          socket__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 @Isotptest.SocketCAN_open_isotp_result: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@Isotptest.SocketCAN_open_isotp_result");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SocketCAN__open__isotp__result_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_ifr.check_restriction(t_res, t_name ? t_name : "@Isotptest.SocketCAN_open_isotp_result");
+single_value->field_socket__id.check_restriction(t_res, t_name ? t_name : "@Isotptest.SocketCAN_open_isotp_result");
+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 : "@Isotptest.SocketCAN_open_isotp_result");
+}
+
+boolean SocketCAN__open__isotp__result_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SocketCAN__open__isotp__result_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+
+/* Bodies of functions, altsteps and testcases */
+
+SocketCAN__Types::SocketCAN__socket__result f__open__socket(const SocketCAN__open__socket__type& v__socket__type)
+{
+TTCN_Location current_location("Isotptest.ttcn", 68, TTCN_Location::LOCATION_FUNCTION, "f_open_socket");
+current_location.update_lineno(72);
+#line 72 "Isotptest.ttcn"
+SocketCAN__Types::SocketCAN__socket__result v__result;
+current_location.update_lineno(73);
+#line 73 "Isotptest.ttcn"
+TIMER t__guard("t_guard");
+current_location.update_lineno(74);
+#line 74 "Isotptest.ttcn"
+t__guard.start(1.0e1);
+current_location.update_lineno(76);
+#line 76 "Isotptest.ttcn"
+SocketCAN__Types::SocketCAN__socket socket;
+current_location.update_lineno(78);
+#line 78 "Isotptest.ttcn"
+if ((v__socket__type == SocketCAN__open__socket__type::OPEN__CAN__RAW)) {
+current_location.update_lineno(79);
+#line 79 "Isotptest.ttcn"
+socket.domain() = Can::AdresseFamily__enum::PF__CAN;
+socket.ptype() = Can::ProtocolFamily__enum::SOCK__RAW;
+socket.protocol() = Can::PF__CAN__protocols__enum::CAN__RAW;
+}
+else {
+current_location.update_lineno(80);
+#line 80 "Isotptest.ttcn"
+if ((v__socket__type == SocketCAN__open__socket__type::OPEN__CAN__BCM)) {
+current_location.update_lineno(81);
+#line 81 "Isotptest.ttcn"
+socket.domain() = Can::AdresseFamily__enum::PF__CAN;
+socket.ptype() = Can::ProtocolFamily__enum::SOCK__DGRAM;
+socket.protocol() = Can::PF__CAN__protocols__enum::CAN__BCM;
+}
+else {
+current_location.update_lineno(82);
+#line 82 "Isotptest.ttcn"
+if ((v__socket__type == SocketCAN__open__socket__type::OPEN__CAN__ISOTP)) {
+current_location.update_lineno(83);
+#line 83 "Isotptest.ttcn"
+socket.domain() = Can::AdresseFamily__enum::PF__CAN;
+socket.ptype() = Can::ProtocolFamily__enum::SOCK__DGRAM;
+socket.protocol() = Can::PF__CAN__protocols__enum::CAN__ISOTP;
+}
+}
+}
+current_location.update_lineno(86);
+#line 86 "Isotptest.ttcn"
+PTC__isotp__CT_component_pt__socketCAN.send(socket, NULL);
+current_location.update_lineno(89);
+#line 89 "Isotptest.ttcn"
+{
+tmp_3:
+alt_status tmp_3_alt_flag_0 = ALT_MAYBE;
+alt_status tmp_3_alt_flag_1 = ALT_MAYBE;
+alt_status tmp_3_alt_flag_2 = ALT_MAYBE;
+alt_status tmp_3_alt_flag_3 = ALT_MAYBE;
+alt_status tmp_3_default_flag = ALT_MAYBE;
+TTCN_Snapshot::take_new(FALSE);
+for ( ; ; ) {
+if (tmp_3_alt_flag_0 == ALT_MAYBE) {
+current_location.update_lineno(90);
+#line 90 "Isotptest.ttcn"
+tmp_3_alt_flag_0 = PTC__isotp__CT_component_pt__socketCAN.receive(SocketCAN__Templates::a__SocketCAN__socket__result(SocketCAN__Templates::a__result(SocketCAN__Types::SocketCAN__Result__code::SocketCAN__SUCCESS)), &(v__result), any_compref, NULL, NULL, NULL);
+if (tmp_3_alt_flag_0 == ALT_YES) {
+current_location.update_lineno(92);
+#line 92 "Isotptest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("SocketCan:Socket opened: ");
+const_cast< const SocketCAN__Types::SocketCAN__socket__result&>(v__result).id().log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+break;
+}
+}
+if (tmp_3_alt_flag_1 == ALT_MAYBE) {
+current_location.update_lineno(93);
+#line 93 "Isotptest.ttcn"
+tmp_3_alt_flag_1 = PTC__isotp__CT_component_pt__socketCAN.receive(SocketCAN__Templates::a__SocketCAN__socket__result(SocketCAN__Templates::a__result(SocketCAN__Types::SocketCAN__Result__code::SocketCAN__ERROR)), NULL, any_compref, NULL, NULL, NULL);
+if (tmp_3_alt_flag_1 == ALT_YES) {
+current_location.update_lineno(94);
+#line 94 "Isotptest.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "Received Opening Socket failed");
+current_location.update_lineno(94);
+#line 94 "Isotptest.ttcn"
+TTCN_Runtime::setverdict(FAIL);
+break;
+}
+}
+if (tmp_3_alt_flag_2 == ALT_MAYBE) {
+current_location.update_lineno(95);
+#line 95 "Isotptest.ttcn"
+tmp_3_alt_flag_2 = t__guard.timeout(NULL);
+if (tmp_3_alt_flag_2 == ALT_YES) {
+current_location.update_lineno(96);
+#line 96 "Isotptest.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "timeout!");
+current_location.update_lineno(97);
+#line 97 "Isotptest.ttcn"
+TTCN_Runtime::setverdict(FAIL);
+break;
+}
+}
+if (tmp_3_alt_flag_3 == ALT_MAYBE) {
+current_location.update_lineno(98);
+#line 98 "Isotptest.ttcn"
+tmp_3_alt_flag_3 = t__guard.timeout(NULL);
+if (tmp_3_alt_flag_3 == ALT_YES) {
+current_location.update_lineno(99);
+#line 99 "Isotptest.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "timeout!");
+current_location.update_lineno(100);
+#line 100 "Isotptest.ttcn"
+TTCN_Runtime::setverdict(FAIL);
+break;
+}
+}
+if (tmp_3_default_flag == ALT_MAYBE) {
+tmp_3_default_flag = TTCN_Default::try_altsteps();
+if (tmp_3_default_flag == ALT_YES || tmp_3_default_flag == ALT_BREAK) break;
+else if (tmp_3_default_flag == ALT_REPEAT) goto tmp_3;
+}
+current_location.update_lineno(89);
+#line 89 "Isotptest.ttcn"
+if (tmp_3_alt_flag_0 == ALT_NO && tmp_3_alt_flag_1 == ALT_NO && tmp_3_alt_flag_2 == ALT_NO && tmp_3_alt_flag_3 == ALT_NO && tmp_3_default_flag == ALT_NO) TTCN_error("None of the branches can be chosen in the alt statement in file Isotptest.ttcn between lines 89 and 101.");
+TTCN_Snapshot::take_new(TRUE);
+}
+}
+current_location.update_lineno(102);
+#line 102 "Isotptest.ttcn"
+t__guard.stop();
+current_location.update_lineno(103);
+#line 103 "Isotptest.ttcn"
+return v__result;
+}
+
+void start_f__open__socket(const COMPONENT& component_reference, const SocketCAN__open__socket__type& v__socket__type)
+{
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_open_socket(");
+v__socket__type.log();
+TTCN_Logger::log_event_str(") on component ");
+component_reference.log();
+TTCN_Logger::log_char('.');
+TTCN_Logger::end_event();
+Text_Buf text_buf;
+TTCN_Runtime::prepare_start_component(component_reference, "Isotptest", "f_open_socket", text_buf);
+v__socket__type.encode_text(text_buf);
+TTCN_Runtime::send_start_component(text_buf);
+}
+
+SocketCAN__open__isotp__result f__open__isotp(const OCTETSTRING& p__rx__can__id, const OCTETSTRING& p__tx__can__id)
+{
+TTCN_Location current_location("Isotptest.ttcn", 106, TTCN_Location::LOCATION_FUNCTION, "f_open_isotp");
+current_location.update_lineno(110);
+#line 110 "Isotptest.ttcn"
+INTEGER v__socket__id;
+current_location.update_lineno(111);
+#line 111 "Isotptest.ttcn"
+v__socket__id = f__open__socket(SocketCAN__open__socket__type::OPEN__CAN__ISOTP).id();
+current_location.update_lineno(112);
+#line 112 "Isotptest.ttcn"
+SocketCAN__Types::SocketCAN__ifr v__ifr;
+current_location.update_lineno(113);
+#line 113 "Isotptest.ttcn"
+v__ifr = f__ioctl__get__if__index(v__socket__id).ifr();
+current_location.update_lineno(114);
+#line 114 "Isotptest.ttcn"
+SocketCAN__Types::SocketCAN__bind__result v__bind__result;
+current_location.update_lineno(115);
+#line 115 "Isotptest.ttcn"
+v__bind__result = f__bind(v__socket__id, const_cast< const SocketCAN__Types::SocketCAN__ifr&>(v__ifr).if__index(), p__rx__can__id, p__tx__can__id);
+current_location.update_lineno(117);
+#line 117 "Isotptest.ttcn"
+SocketCAN__open__isotp__result v__result;
+current_location.update_lineno(118);
+#line 118 "Isotptest.ttcn"
+v__result.ifr() = v__ifr;
+v__result.socket__id() = v__socket__id;
+current_location.update_lineno(120);
+#line 120 "Isotptest.ttcn"
+return v__result;
+}
+
+void start_f__open__isotp(const COMPONENT& component_reference, const OCTETSTRING& p__rx__can__id, const OCTETSTRING& p__tx__can__id)
+{
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_open_isotp(");
+p__rx__can__id.log();
+TTCN_Logger::log_event_str(", ");
+p__tx__can__id.log();
+TTCN_Logger::log_event_str(") on component ");
+component_reference.log();
+TTCN_Logger::log_char('.');
+TTCN_Logger::end_event();
+Text_Buf text_buf;
+TTCN_Runtime::prepare_start_component(component_reference, "Isotptest", "f_open_isotp", text_buf);
+p__rx__can__id.encode_text(text_buf);
+p__tx__can__id.encode_text(text_buf);
+TTCN_Runtime::send_start_component(text_buf);
+}
+
+SocketCAN__Types::SocketCAN__ioctl__result f__ioctl__get__if__index(const INTEGER& p__socket__id)
+{
+TTCN_Location current_location("Isotptest.ttcn", 123, TTCN_Location::LOCATION_FUNCTION, "f_ioctl_get_if_index");
+current_location.update_lineno(126);
+#line 126 "Isotptest.ttcn"
+SocketCAN__Types::SocketCAN__ioctl__result v__result;
+current_location.update_lineno(127);
+#line 127 "Isotptest.ttcn"
+TIMER t__guard("t_guard");
+current_location.update_lineno(128);
+#line 128 "Isotptest.ttcn"
+t__guard.start(1.0e1);
+current_location.update_lineno(130);
+#line 130 "Isotptest.ttcn"
+{
+SocketCAN__Types::SocketCAN__ioctl_template tmp_8;
+tmp_8.id() = p__socket__id;
+tmp_8.ifu() = OMIT_VALUE;
+PTC__isotp__CT_component_pt__socketCAN.send(tmp_8, NULL);
+}
+current_location.update_lineno(132);
+#line 132 "Isotptest.ttcn"
+{
+tmp_9:
+alt_status tmp_9_alt_flag_0 = ALT_MAYBE;
+alt_status tmp_9_alt_flag_1 = ALT_MAYBE;
+alt_status tmp_9_alt_flag_2 = ALT_MAYBE;
+alt_status tmp_9_default_flag = ALT_MAYBE;
+TTCN_Snapshot::take_new(FALSE);
+for ( ; ; ) {
+if (tmp_9_alt_flag_0 == ALT_MAYBE) {
+current_location.update_lineno(133);
+#line 133 "Isotptest.ttcn"
+tmp_9_alt_flag_0 = PTC__isotp__CT_component_pt__socketCAN.receive(SocketCAN__Templates::a__SocketCAN__ioctl__result(SocketCAN__Templates::a__result(SocketCAN__Types::SocketCAN__Result__code::SocketCAN__SUCCESS)), &(v__result), any_compref, NULL, NULL, NULL);
+if (tmp_9_alt_flag_0 == ALT_YES) {
+current_location.update_lineno(134);
+#line 134 "Isotptest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("Retrieved interface index");
+const_cast< const SocketCAN__Types::SocketCAN__ioctl__result&>(v__result).ifr().if__index().log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+break;
+}
+}
+if (tmp_9_alt_flag_1 == ALT_MAYBE) {
+current_location.update_lineno(135);
+#line 135 "Isotptest.ttcn"
+tmp_9_alt_flag_1 = PTC__isotp__CT_component_pt__socketCAN.receive(SocketCAN__Templates::a__SocketCAN__ioctl__result(SocketCAN__Templates::a__result(SocketCAN__Types::SocketCAN__Result__code::SocketCAN__ERROR)), NULL, any_compref, NULL, NULL, NULL);
+if (tmp_9_alt_flag_1 == ALT_YES) {
+current_location.update_lineno(136);
+#line 136 "Isotptest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("Retrieving interface index failed");
+p__socket__id.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(136);
+#line 136 "Isotptest.ttcn"
+TTCN_Runtime::setverdict(FAIL);
+break;
+}
+}
+if (tmp_9_alt_flag_2 == ALT_MAYBE) {
+current_location.update_lineno(137);
+#line 137 "Isotptest.ttcn"
+tmp_9_alt_flag_2 = t__guard.timeout(NULL);
+if (tmp_9_alt_flag_2 == ALT_YES) {
+current_location.update_lineno(138);
+#line 138 "Isotptest.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "timeout!");
+current_location.update_lineno(139);
+#line 139 "Isotptest.ttcn"
+TTCN_Runtime::setverdict(FAIL);
+break;
+}
+}
+if (tmp_9_default_flag == ALT_MAYBE) {
+tmp_9_default_flag = TTCN_Default::try_altsteps();
+if (tmp_9_default_flag == ALT_YES || tmp_9_default_flag == ALT_BREAK) break;
+else if (tmp_9_default_flag == ALT_REPEAT) goto tmp_9;
+}
+current_location.update_lineno(132);
+#line 132 "Isotptest.ttcn"
+if (tmp_9_alt_flag_0 == ALT_NO && tmp_9_alt_flag_1 == ALT_NO && tmp_9_alt_flag_2 == ALT_NO && tmp_9_default_flag == ALT_NO) TTCN_error("None of the branches can be chosen in the alt statement in file Isotptest.ttcn between lines 132 and 141.");
+TTCN_Snapshot::take_new(TRUE);
+}
+}
+current_location.update_lineno(142);
+#line 142 "Isotptest.ttcn"
+return v__result;
+}
+
+void start_f__ioctl__get__if__index(const COMPONENT& component_reference, const INTEGER& p__socket__id)
+{
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_ioctl_get_if_index(");
+p__socket__id.log();
+TTCN_Logger::log_event_str(") on component ");
+component_reference.log();
+TTCN_Logger::log_char('.');
+TTCN_Logger::end_event();
+Text_Buf text_buf;
+TTCN_Runtime::prepare_start_component(component_reference, "Isotptest", "f_ioctl_get_if_index", text_buf);
+p__socket__id.encode_text(text_buf);
+TTCN_Runtime::send_start_component(text_buf);
+}
+
+SocketCAN__Types::SocketCAN__bind__result f__bind(const INTEGER& p__socket__id, const INTEGER& p__if__index, const OCTETSTRING& p__rx__can__id, const OCTETSTRING& p__tx__can__id)
+{
+TTCN_Location current_location("Isotptest.ttcn", 145, TTCN_Location::LOCATION_FUNCTION, "f_bind");
+current_location.update_lineno(151);
+#line 151 "Isotptest.ttcn"
+SocketCAN__Types::SocketCAN__bind__result v__result;
+current_location.update_lineno(152);
+#line 152 "Isotptest.ttcn"
+TIMER t__guard("t_guard");
+current_location.update_lineno(153);
+#line 153 "Isotptest.ttcn"
+t__guard.start(1.0e1);
+current_location.update_lineno(155);
+#line 155 "Isotptest.ttcn"
+{
+SocketCAN__Types::SocketCAN__bind_template tmp_10;
+tmp_10.id() = p__socket__id;
+{
+SocketCAN__Types::SocketCAN__bind__isotp_template& tmp_11 = tmp_10.bindu().isotp();
+tmp_11.if__index() = p__if__index;
+tmp_11.rx__can__id() = p__rx__can__id;
+tmp_11.tx__can__id() = p__tx__can__id;
+}
+PTC__isotp__CT_component_pt__socketCAN.send(tmp_10, NULL);
+}
+current_location.update_lineno(158);
+#line 158 "Isotptest.ttcn"
+{
+tmp_12:
+alt_status tmp_12_alt_flag_0 = ALT_MAYBE;
+alt_status tmp_12_alt_flag_1 = ALT_MAYBE;
+alt_status tmp_12_alt_flag_2 = ALT_MAYBE;
+alt_status tmp_12_default_flag = ALT_MAYBE;
+TTCN_Snapshot::take_new(FALSE);
+for ( ; ; ) {
+if (tmp_12_alt_flag_0 == ALT_MAYBE) {
+current_location.update_lineno(159);
+#line 159 "Isotptest.ttcn"
+tmp_12_alt_flag_0 = PTC__isotp__CT_component_pt__socketCAN.receive(SocketCAN__Templates::a__SocketCAN__bind__result(SocketCAN__Templates::a__result(SocketCAN__Types::SocketCAN__Result__code::SocketCAN__SUCCESS)), &(v__result), any_compref, NULL, NULL, NULL);
+if (tmp_12_alt_flag_0 == ALT_YES) {
+current_location.update_lineno(160);
+#line 160 "Isotptest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("Binding socket");
+p__socket__id.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+break;
+}
+}
+if (tmp_12_alt_flag_1 == ALT_MAYBE) {
+current_location.update_lineno(161);
+#line 161 "Isotptest.ttcn"
+tmp_12_alt_flag_1 = PTC__isotp__CT_component_pt__socketCAN.receive(SocketCAN__Templates::a__SocketCAN__bind__result(SocketCAN__Templates::a__result(SocketCAN__Types::SocketCAN__Result__code::SocketCAN__ERROR)), NULL, any_compref, NULL, NULL, NULL);
+if (tmp_12_alt_flag_1 == ALT_YES) break;
+}
+if (tmp_12_alt_flag_2 == ALT_MAYBE) {
+current_location.update_lineno(162);
+#line 162 "Isotptest.ttcn"
+tmp_12_alt_flag_2 = t__guard.timeout(NULL);
+if (tmp_12_alt_flag_2 == ALT_YES) {
+current_location.update_lineno(163);
+#line 163 "Isotptest.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "timeout!");
+current_location.update_lineno(164);
+#line 164 "Isotptest.ttcn"
+TTCN_Runtime::setverdict(FAIL);
+break;
+}
+}
+if (tmp_12_default_flag == ALT_MAYBE) {
+tmp_12_default_flag = TTCN_Default::try_altsteps();
+if (tmp_12_default_flag == ALT_YES || tmp_12_default_flag == ALT_BREAK) break;
+else if (tmp_12_default_flag == ALT_REPEAT) goto tmp_12;
+}
+current_location.update_lineno(158);
+#line 158 "Isotptest.ttcn"
+if (tmp_12_alt_flag_0 == ALT_NO && tmp_12_alt_flag_1 == ALT_NO && tmp_12_alt_flag_2 == ALT_NO && tmp_12_default_flag == ALT_NO) TTCN_error("None of the branches can be chosen in the alt statement in file Isotptest.ttcn between lines 158 and 166.");
+TTCN_Snapshot::take_new(TRUE);
+}
+}
+current_location.update_lineno(167);
+#line 167 "Isotptest.ttcn"
+return v__result;
+}
+
+void start_f__bind(const COMPONENT& component_reference, const INTEGER& p__socket__id, const INTEGER& p__if__index, const OCTETSTRING& p__rx__can__id, const OCTETSTRING& p__tx__can__id)
+{
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_bind(");
+p__socket__id.log();
+TTCN_Logger::log_event_str(", ");
+p__if__index.log();
+TTCN_Logger::log_event_str(", ");
+p__rx__can__id.log();
+TTCN_Logger::log_event_str(", ");
+p__tx__can__id.log();
+TTCN_Logger::log_event_str(") on component ");
+component_reference.log();
+TTCN_Logger::log_char('.');
+TTCN_Logger::end_event();
+Text_Buf text_buf;
+TTCN_Runtime::prepare_start_component(component_reference, "Isotptest", "f_bind", text_buf);
+p__socket__id.encode_text(text_buf);
+p__if__index.encode_text(text_buf);
+p__rx__can__id.encode_text(text_buf);
+p__tx__can__id.encode_text(text_buf);
+TTCN_Runtime::send_start_component(text_buf);
+}
+
+void f__close__socket(const INTEGER& p__socket__id)
+{
+TTCN_Location current_location("Isotptest.ttcn", 170, TTCN_Location::LOCATION_FUNCTION, "f_close_socket");
+current_location.update_lineno(172);
+#line 172 "Isotptest.ttcn"
+{
+SocketCAN__Types::SocketCAN__close_template tmp_13;
+tmp_13.id() = p__socket__id;
+PTC__isotp__CT_component_pt__socketCAN.send(tmp_13, NULL);
+}
+}
+
+void start_f__close__socket(const COMPONENT& component_reference, const INTEGER& p__socket__id)
+{
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_close_socket(");
+p__socket__id.log();
+TTCN_Logger::log_event_str(") on component ");
+component_reference.log();
+TTCN_Logger::log_char('.');
+TTCN_Logger::end_event();
+Text_Buf text_buf;
+TTCN_Runtime::prepare_start_component(component_reference, "Isotptest", "f_close_socket", text_buf);
+p__socket__id.encode_text(text_buf);
+TTCN_Runtime::send_start_component(text_buf);
+}
+
+void f__send__isotp__message(const INTEGER& p__socket__id, const OCTETSTRING& p__pdu)
+{
+TTCN_Location current_location("Isotptest.ttcn", 174, TTCN_Location::LOCATION_FUNCTION, "f_send_isotp_message");
+current_location.update_lineno(177);
+#line 177 "Isotptest.ttcn"
+{
+SocketCAN__Types::SocketCAN__write__isotp_template tmp_14;
+tmp_14.id() = p__socket__id;
+tmp_14.pdu() = p__pdu;
+PTC__isotp__CT_component_pt__socketCAN.send(tmp_14, NULL);
+}
+current_location.update_lineno(178);
+#line 178 "Isotptest.ttcn"
+{
+tmp_15:
+alt_status tmp_15_alt_flag_0 = ALT_MAYBE;
+alt_status tmp_15_default_flag = ALT_MAYBE;
+TTCN_Snapshot::take_new(FALSE);
+for ( ; ; ) {
+if (tmp_15_alt_flag_0 == ALT_MAYBE) {
+current_location.update_lineno(179);
+#line 179 "Isotptest.ttcn"
+tmp_15_alt_flag_0 = PTC__isotp__CT_component_pt__socketCAN.receive(Isotp::a__SocketCAN__write__isotp__result(SocketCAN__Templates::a__result(SocketCAN__Types::SocketCAN__Result__code::SocketCAN__SUCCESS)), NULL, any_compref, NULL, NULL, NULL);
+if (tmp_15_alt_flag_0 == ALT_YES) {
+current_location.update_lineno(180);
+#line 180 "Isotptest.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "Sent ISOTP Message \n");
+break;
+}
+}
+if (tmp_15_default_flag == ALT_MAYBE) {
+tmp_15_default_flag = TTCN_Default::try_altsteps();
+if (tmp_15_default_flag == ALT_YES || tmp_15_default_flag == ALT_BREAK) break;
+else if (tmp_15_default_flag == ALT_REPEAT) goto tmp_15;
+}
+current_location.update_lineno(178);
+#line 178 "Isotptest.ttcn"
+if (tmp_15_alt_flag_0 == ALT_NO && tmp_15_default_flag == ALT_NO) TTCN_error("None of the branches can be chosen in the alt statement in file Isotptest.ttcn between lines 178 and 182.");
+TTCN_Snapshot::take_new(TRUE);
+}
+}
+}
+
+void start_f__send__isotp__message(const COMPONENT& component_reference, const INTEGER& p__socket__id, const OCTETSTRING& p__pdu)
+{
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_send_isotp_message(");
+p__socket__id.log();
+TTCN_Logger::log_event_str(", ");
+p__pdu.log();
+TTCN_Logger::log_event_str(") on component ");
+component_reference.log();
+TTCN_Logger::log_char('.');
+TTCN_Logger::end_event();
+Text_Buf text_buf;
+TTCN_Runtime::prepare_start_component(component_reference, "Isotptest", "f_send_isotp_message", text_buf);
+p__socket__id.encode_text(text_buf);
+p__pdu.encode_text(text_buf);
+TTCN_Runtime::send_start_component(text_buf);
+}
+
+void f__behaviour__isotp(const BOOLEAN& p__initiator, const OCTETSTRING& p__rx__can__id, const OCTETSTRING& p__tx__can__id)
+{
+TTCN_Location current_location("Isotptest.ttcn", 186, TTCN_Location::LOCATION_FUNCTION, "f_behaviour_isotp");
+current_location.update_lineno(191);
+#line 191 "Isotptest.ttcn"
+{
+Map_Params tmp_16(0);
+TTCN_Runtime::map_port(self, PTC__isotp__CT_component_pt__socketCAN.get_name(), SYSTEM_COMPREF, "pt_socketCAN", tmp_16);
+}
+current_location.update_lineno(192);
+#line 192 "Isotptest.ttcn"
+INTEGER v__socket__id;
+current_location.update_lineno(193);
+#line 193 "Isotptest.ttcn"
+SocketCAN__Types::SocketCAN__ifr v__ifr;
+current_location.update_lineno(194);
+#line 194 "Isotptest.ttcn"
+SocketCAN__Types::SocketCAN__send__data__ifu v__ifu;
+current_location.update_lineno(196);
+#line 196 "Isotptest.ttcn"
+SocketCAN__open__isotp__result res;
+current_location.update_lineno(197);
+#line 197 "Isotptest.ttcn"
+res = f__open__isotp(p__rx__can__id, p__tx__can__id);
+current_location.update_lineno(198);
+#line 198 "Isotptest.ttcn"
+v__socket__id = const_cast< const SocketCAN__open__isotp__result&>(res).socket__id();
+current_location.update_lineno(199);
+#line 199 "Isotptest.ttcn"
+v__ifr = const_cast< const SocketCAN__open__isotp__result&>(res).ifr();
+current_location.update_lineno(200);
+#line 200 "Isotptest.ttcn"
+v__ifu.if__name() = const_cast< const SocketCAN__Types::SocketCAN__ifr&>(v__ifr).if__name();
+current_location.update_lineno(202);
+#line 202 "Isotptest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("socket open(): ");
+res.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(204);
+#line 204 "Isotptest.ttcn"
+BOOLEAN condition3(TRUE);
+current_location.update_lineno(207);
+#line 207 "Isotptest.ttcn"
+if ((p__initiator == TRUE)) {
+current_location.update_lineno(208);
+#line 208 "Isotptest.ttcn"
+OCTETSTRING v__pdu(os_0);
+current_location.update_lineno(209);
+#line 209 "Isotptest.ttcn"
+f__send__isotp__message(v__socket__id, v__pdu);
+}
+for ( ; ; ) {
+current_location.update_lineno(211);
+#line 211 "Isotptest.ttcn"
+if (!condition3) break;
+current_location.update_lineno(214);
+#line 214 "Isotptest.ttcn"
+SocketCAN__Types::SocketCAN__receive__CAN__or__CAN__FD__frame v__result__socketcan;
+current_location.update_lineno(215);
+#line 215 "Isotptest.ttcn"
+SocketCAN__Types::SocketCAN__receive__isotp__pdu v__result__isotp__pdu;
+current_location.update_lineno(218);
+#line 218 "Isotptest.ttcn"
+{
+tmp_21:
+alt_status tmp_21_alt_flag_0 = ALT_MAYBE;
+alt_status tmp_21_alt_flag_1 = ALT_MAYBE;
+alt_status tmp_21_default_flag = ALT_MAYBE;
+TTCN_Snapshot::take_new(FALSE);
+for ( ; ; ) {
+if (tmp_21_alt_flag_0 == ALT_MAYBE) {
+current_location.update_lineno(220);
+#line 220 "Isotptest.ttcn"
+tmp_21_alt_flag_0 = PTC__isotp__CT_component_pt__socketCAN.receive(Isotp::a__SocketCAN__receive__isotp__pdu(INTEGER_template(v__socket__id), OCTETSTRING_template(ANY_VALUE), OCTETSTRING_template(ANY_VALUE)), &(v__result__isotp__pdu), any_compref, NULL, NULL, NULL);
+if (tmp_21_alt_flag_0 == ALT_YES) {
+current_location.update_lineno(221);
+#line 221 "Isotptest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("SocketCan:Isotp pdu received");
+v__result__isotp__pdu.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(222);
+#line 222 "Isotptest.ttcn"
+f__send__isotp__message(v__socket__id, const_cast< const SocketCAN__Types::SocketCAN__receive__isotp__pdu&>(v__result__isotp__pdu).pdu());
+break;
+}
+}
+if (tmp_21_alt_flag_1 == ALT_MAYBE) {
+current_location.update_lineno(224);
+#line 224 "Isotptest.ttcn"
+tmp_21_alt_flag_1 = PTC__isotp__CT_component_pt__socketCAN.receive(Isotp::a__SocketCAN__receive__isotp__pdu(INTEGER_template(ANY_VALUE), OCTETSTRING_template(ANY_VALUE), OCTETSTRING_template(ANY_VALUE)), &(v__result__isotp__pdu), any_compref, NULL, NULL, NULL);
+if (tmp_21_alt_flag_1 == ALT_YES) {
+current_location.update_lineno(225);
+#line 225 "Isotptest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("SocketCan:Isotp pdu received from unexpected port");
+v__result__isotp__pdu.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(226);
+#line 226 "Isotptest.ttcn"
+TTCN_Runtime::setverdict(INCONC);
+break;
+}
+}
+if (tmp_21_default_flag == ALT_MAYBE) {
+tmp_21_default_flag = TTCN_Default::try_altsteps();
+if (tmp_21_default_flag == ALT_YES || tmp_21_default_flag == ALT_BREAK) break;
+else if (tmp_21_default_flag == ALT_REPEAT) goto tmp_21;
+}
+current_location.update_lineno(218);
+#line 218 "Isotptest.ttcn"
+if (tmp_21_alt_flag_0 == ALT_NO && tmp_21_alt_flag_1 == ALT_NO && tmp_21_default_flag == ALT_NO) TTCN_error("None of the branches can be chosen in the alt statement in file Isotptest.ttcn between lines 218 and 228.");
+TTCN_Snapshot::take_new(TRUE);
+}
+}
+}
+current_location.update_lineno(230);
+#line 230 "Isotptest.ttcn"
+f__close__socket(v__socket__id);
+current_location.update_lineno(231);
+#line 231 "Isotptest.ttcn"
+{
+Map_Params tmp_22(0);
+TTCN_Runtime::unmap_port(self, PTC__isotp__CT_component_pt__socketCAN.get_name(), SYSTEM_COMPREF, "pt_socketCAN", tmp_22);
+}
+current_location.update_lineno(232);
+#line 232 "Isotptest.ttcn"
+TTCN_Runtime::setverdict(PASS);
+}
+
+void start_f__behaviour__isotp(const COMPONENT& component_reference, const BOOLEAN& p__initiator, const OCTETSTRING& p__rx__can__id, const OCTETSTRING& p__tx__can__id)
+{
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_behaviour_isotp(");
+p__initiator.log();
+TTCN_Logger::log_event_str(", ");
+p__rx__can__id.log();
+TTCN_Logger::log_event_str(", ");
+p__tx__can__id.log();
+TTCN_Logger::log_event_str(") on component ");
+component_reference.log();
+TTCN_Logger::log_char('.');
+TTCN_Logger::end_event();
+Text_Buf text_buf;
+TTCN_Runtime::prepare_start_component(component_reference, "Isotptest", "f_behaviour_isotp", text_buf);
+p__initiator.encode_text(text_buf);
+p__rx__can__id.encode_text(text_buf);
+p__tx__can__id.encode_text(text_buf);
+TTCN_Runtime::send_start_component(text_buf);
+}
+
+verdicttype testcase_tc__Isotp__Example001(boolean has_timer, double timer_value)
+{
+TTCN_Runtime::check_begin_testcase(has_timer, timer_value);
+TTCN_Location current_location("Isotptest.ttcn", 237, TTCN_Location::LOCATION_TESTCASE, "tc_Isotp_Example001");
+try {
+TTCN_Runtime::begin_testcase("Isotptest", "tc_Isotp_Example001", "Isotptest", "MTC_CT", "Isotptest", "MTC_CT", has_timer, timer_value);
+current_location.update_lineno(240);
+#line 240 "Isotptest.ttcn"
+COMPONENT v__PTC__isotp1;
+current_location.update_lineno(240);
+#line 240 "Isotptest.ttcn"
+COMPONENT v__PTC__isotp2;
+current_location.update_lineno(243);
+#line 243 "Isotptest.ttcn"
+v__PTC__isotp1 = TTCN_Runtime::create_component("Isotptest", "PTC_isotp_CT", NULL, NULL, FALSE);
+current_location.update_lineno(244);
+#line 244 "Isotptest.ttcn"
+v__PTC__isotp2 = TTCN_Runtime::create_component("Isotptest", "PTC_isotp_CT", NULL, NULL, FALSE);
+current_location.update_lineno(252);
+#line 252 "Isotptest.ttcn"
+start_f__behaviour__isotp(v__PTC__isotp1, TRUE, os_1, os_2);
+current_location.update_lineno(253);
+#line 253 "Isotptest.ttcn"
+start_f__behaviour__isotp(v__PTC__isotp2, TRUE, os_2, os_1);
+current_location.update_lineno(256);
+#line 256 "Isotptest.ttcn"
+{
+tmp_25:
+alt_status alt_flag = ALT_UNCHECKED, default_flag = ALT_UNCHECKED;
+TTCN_Snapshot::take_new(FALSE);
+for ( ; ; ) {
+if (alt_flag != ALT_NO) {
+alt_flag = TTCN_Runtime::component_done(ALL_COMPREF);
+if (alt_flag == ALT_YES) break;
+else if (alt_flag == ALT_REPEAT) goto tmp_25;
+}
+if (default_flag != ALT_NO) {
+default_flag = TTCN_Default::try_altsteps();
+if (default_flag == ALT_YES || default_flag == ALT_BREAK) break;
+else if (default_flag == ALT_REPEAT) goto tmp_25;
+}
+current_location.update_lineno(256);
+#line 256 "Isotptest.ttcn"
+if (alt_flag == ALT_NO && default_flag == ALT_NO) TTCN_error("Stand-alone done statement failed in file Isotptest.ttcn, line 256.");
+TTCN_Snapshot::take_new(TRUE);
+}
+}
+current_location.update_lineno(262);
+#line 262 "Isotptest.ttcn"
+TTCN_Runtime::kill_component(ALL_COMPREF);
+} catch (const TC_Error& tc_error) {
+} catch (const TC_End& tc_end) {
+TTCN_Logger::log_str(TTCN_FUNCTION, "Test case tc_Isotp_Example001 was stopped.");
+}
+return TTCN_Runtime::end_testcase();
+}
+
+
+/* Bodies of static functions */
+
+static void pre_init_module()
+{
+TTCN_Location current_location("Isotptest.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "Isotptest");
+CanError::module_object.pre_init_module();
+SocketCAN__PortType::module_object.pre_init_module();
+SocketCAN__Templates::module_object.pre_init_module();
+Isotp::module_object.pre_init_module();
+current_location.update_lineno(21);
+#line 21 "Isotptest.ttcn"
+const_c__guard = 1.0e1;
+module_object.add_function("f_open_socket", (genericfunc_t)&f__open__socket, (genericfunc_t)&start_f__open__socket);
+module_object.add_function("f_open_isotp", (genericfunc_t)&f__open__isotp, (genericfunc_t)&start_f__open__isotp);
+module_object.add_function("f_ioctl_get_if_index", (genericfunc_t)&f__ioctl__get__if__index, (genericfunc_t)&start_f__ioctl__get__if__index);
+module_object.add_function("f_bind", (genericfunc_t)&f__bind, (genericfunc_t)&start_f__bind);
+module_object.add_function("f_close_socket", (genericfunc_t)&f__close__socket, (genericfunc_t)&start_f__close__socket);
+module_object.add_function("f_send_isotp_message", (genericfunc_t)&f__send__isotp__message, (genericfunc_t)&start_f__send__isotp__message);
+module_object.add_function("f_behaviour_isotp", (genericfunc_t)&f__behaviour__isotp, (genericfunc_t)&start_f__behaviour__isotp);
+module_object.add_testcase_nonpard("tc_Isotp_Example001", testcase_tc__Isotp__Example001);
+}
+
+static void post_init_module()
+{
+TTCN_Location current_location("Isotptest.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "Isotptest");
+CanError::module_object.post_init_module();
+SocketCAN__PortType::module_object.post_init_module();
+SocketCAN__Templates::module_object.post_init_module();
+Isotp::module_object.post_init_module();
+}
+
+static boolean init_comp_type(const char *component_type, boolean init_base_comps)
+{
+(void)init_base_comps;
+if (!strcmp(component_type, "MTC_CT")) {
+return TRUE;
+} else if (!strcmp(component_type, "PTC_isotp_CT")) {
+PTC__isotp__CT_component_pt__socketCAN.activate_port();
+return TRUE;
+} else return FALSE;
+}
+
+static boolean init_system_port(const char* component_type, const char* port_name)
+{
+if (!strcmp(component_type, "PTC_isotp_CT")) {
+if (!strcmp(port_name, "pt_socketCAN")) {
+PTC__isotp__CT_component_pt__socketCAN.safe_start();
+return TRUE;
+}
+}
+return FALSE;
+}
+
+static boolean start_ptc_function(const char *function_name, Text_Buf& function_arguments)
+{
+if (!strcmp(function_name, "f_open_socket")) {
+SocketCAN__open__socket__type v__socket__type;
+v__socket__type.decode_text(function_arguments);
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_open_socket(");
+v__socket__type.log();
+TTCN_Logger::log_event_str(").");
+TTCN_Logger::end_event();
+TTCN_Runtime::function_started(function_arguments);
+f__open__socket(v__socket__type);
+TTCN_Runtime::function_finished("f_open_socket");
+return TRUE;
+} else if (!strcmp(function_name, "f_open_isotp")) {
+OCTETSTRING p__rx__can__id;
+OCTETSTRING p__tx__can__id;
+p__rx__can__id.decode_text(function_arguments);
+p__tx__can__id.decode_text(function_arguments);
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_open_isotp(");
+p__rx__can__id.log();
+TTCN_Logger::log_event_str(", ");
+p__tx__can__id.log();
+TTCN_Logger::log_event_str(").");
+TTCN_Logger::end_event();
+TTCN_Runtime::function_started(function_arguments);
+f__open__isotp(p__rx__can__id, p__tx__can__id);
+TTCN_Runtime::function_finished("f_open_isotp");
+return TRUE;
+} else if (!strcmp(function_name, "f_ioctl_get_if_index")) {
+INTEGER p__socket__id;
+p__socket__id.decode_text(function_arguments);
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_ioctl_get_if_index(");
+p__socket__id.log();
+TTCN_Logger::log_event_str(").");
+TTCN_Logger::end_event();
+TTCN_Runtime::function_started(function_arguments);
+f__ioctl__get__if__index(p__socket__id);
+TTCN_Runtime::function_finished("f_ioctl_get_if_index");
+return TRUE;
+} else if (!strcmp(function_name, "f_bind")) {
+INTEGER p__socket__id;
+INTEGER p__if__index;
+OCTETSTRING p__rx__can__id;
+OCTETSTRING p__tx__can__id;
+p__socket__id.decode_text(function_arguments);
+p__if__index.decode_text(function_arguments);
+p__rx__can__id.decode_text(function_arguments);
+p__tx__can__id.decode_text(function_arguments);
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_bind(");
+p__socket__id.log();
+TTCN_Logger::log_event_str(", ");
+p__if__index.log();
+TTCN_Logger::log_event_str(", ");
+p__rx__can__id.log();
+TTCN_Logger::log_event_str(", ");
+p__tx__can__id.log();
+TTCN_Logger::log_event_str(").");
+TTCN_Logger::end_event();
+TTCN_Runtime::function_started(function_arguments);
+f__bind(p__socket__id, p__if__index, p__rx__can__id, p__tx__can__id);
+TTCN_Runtime::function_finished("f_bind");
+return TRUE;
+} else if (!strcmp(function_name, "f_close_socket")) {
+INTEGER p__socket__id;
+p__socket__id.decode_text(function_arguments);
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_close_socket(");
+p__socket__id.log();
+TTCN_Logger::log_event_str(").");
+TTCN_Logger::end_event();
+TTCN_Runtime::function_started(function_arguments);
+f__close__socket(p__socket__id);
+TTCN_Runtime::function_finished("f_close_socket");
+return TRUE;
+} else if (!strcmp(function_name, "f_send_isotp_message")) {
+INTEGER p__socket__id;
+OCTETSTRING p__pdu;
+p__socket__id.decode_text(function_arguments);
+p__pdu.decode_text(function_arguments);
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_send_isotp_message(");
+p__socket__id.log();
+TTCN_Logger::log_event_str(", ");
+p__pdu.log();
+TTCN_Logger::log_event_str(").");
+TTCN_Logger::end_event();
+TTCN_Runtime::function_started(function_arguments);
+f__send__isotp__message(p__socket__id, p__pdu);
+TTCN_Runtime::function_finished("f_send_isotp_message");
+return TRUE;
+} else if (!strcmp(function_name, "f_behaviour_isotp")) {
+BOOLEAN p__initiator;
+OCTETSTRING p__rx__can__id;
+OCTETSTRING p__tx__can__id;
+p__initiator.decode_text(function_arguments);
+p__rx__can__id.decode_text(function_arguments);
+p__tx__can__id.decode_text(function_arguments);
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_behaviour_isotp(");
+p__initiator.log();
+TTCN_Logger::log_event_str(", ");
+p__rx__can__id.log();
+TTCN_Logger::log_event_str(", ");
+p__tx__can__id.log();
+TTCN_Logger::log_event_str(").");
+TTCN_Logger::end_event();
+TTCN_Runtime::function_started(function_arguments);
+f__behaviour__isotp(p__initiator, p__rx__can__id, p__tx__can__id);
+TTCN_Runtime::function_finished("f_behaviour_isotp");
+return TRUE;
+} else return FALSE;
+}
+
+static void module_control_part()
+{
+TTCN_Location current_location("Isotptest.ttcn", 268, TTCN_Location::LOCATION_CONTROLPART, "Isotptest");
+TTCN_Runtime::begin_controlpart("Isotptest");
+current_location.update_lineno(272);
+#line 272 "Isotptest.ttcn"
+testcase_tc__Isotp__Example001(FALSE, 0.0);
+TTCN_Runtime::end_controlpart();
+}
+
+
+} /* end of namespace */
diff --git a/demo/Isotptest.d b/demo/Isotptest.d
new file mode 100644
index 0000000..2016d8f
--- /dev/null
+++ b/demo/Isotptest.d
@@ -0,0 +1,61 @@
+Isotptest.o Isotptest.d : Isotptest.cc Isotptest.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TTCN3.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/version.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/cversion.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Types.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Vector.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Error.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Basetype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Encdec.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RInt.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON_Tokenizer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Logger.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Template.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Integer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ttcn3float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Boolean.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Null.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Optional.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Param_Types.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/memory.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/BER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Textbuf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Parameters.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XmlReader.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Objid.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Verdicttype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Component.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Bitstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RAW.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/CharCoding.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Hexstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Octetstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Any.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Universal_charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Struct_of.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Array.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_CharacterString.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_External.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TEXT.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_EmbeddedPDV.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Addfunc.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Timer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Port.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Event_Handler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/TitanLoggerApiSimple.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/PreGenRecordOf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Module_list.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Snapshot.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Default.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Runtime.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/OER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Profiler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ProfilerTools.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Debugger.hh \
+ CanError.hh SocketCAN_PortType.hh SocketCAN_Types.hh Bcm.hh Can.hh \
+ General_Types.hh Raw.hh ../src/SocketCAN_PT.hh SocketCAN_Types.hh \
+ SocketCAN_Templates.hh Isotp.hh
diff --git a/demo/Isotptest.hh b/demo/Isotptest.hh
new file mode 100644
index 0000000..1f5afb9
--- /dev/null
+++ b/demo/Isotptest.hh
@@ -0,0 +1,279 @@
+// This C++ header file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+#ifndef Isotptest_HH
+#define Isotptest_HH
+
+#ifdef TITAN_RUNTIME_2
+#error Generated code does not match with used runtime.\
+ Code was generated without -R option but -DTITAN_RUNTIME_2 was used.
+#endif
+
+/* Header file includes */
+
+#include <TTCN3.hh>
+#include "CanError.hh"
+#include "SocketCAN_PortType.hh"
+#include "SocketCAN_Templates.hh"
+#include "Isotp.hh"
+
+#if TTCN3_VERSION != 60600
+#error Version mismatch detected.\
+ Please check the version of the TTCN-3 compiler and the base library.\
+ Run make clean and rebuild the project if the version of the compiler changed recently.
+#endif
+
+#ifndef LINUX
+#error This file should be compiled on LINUX
+#endif
+
+#undef Isotptest_HH
+#endif
+
+namespace Isotptest {
+
+/* Forward declarations of classes */
+
+class SocketCAN__open__socket__type;
+class SocketCAN__open__socket__type_template;
+class SocketCAN__open__isotp__result;
+class SocketCAN__open__isotp__result_template;
+
+} /* end of namespace */
+
+#ifndef Isotptest_HH
+#define Isotptest_HH
+
+namespace Isotptest {
+
+/* Type definitions */
+
+typedef COMPONENT MTC__CT;
+typedef COMPONENT_template MTC__CT_template;
+typedef COMPONENT PTC__isotp__CT;
+typedef COMPONENT_template PTC__isotp__CT_template;
+
+/* Class definitions */
+
+class SocketCAN__open__socket__type : public Base_Type { // enum
+friend class SocketCAN__open__socket__type_template;
+public:
+enum enum_type { OPEN__CAN__RAW = 0, OPEN__CAN__BCM = 1, OPEN__CAN__ISOTP = 2, UNKNOWN_VALUE = 3, UNBOUND_VALUE = 4 };
+private:
+enum_type enum_value;
+
+public:
+SocketCAN__open__socket__type();
+SocketCAN__open__socket__type(int other_value);
+SocketCAN__open__socket__type(enum_type other_value);
+SocketCAN__open__socket__type(const SocketCAN__open__socket__type& other_value);
+
+SocketCAN__open__socket__type& operator=(int other_value);
+SocketCAN__open__socket__type& operator=(enum_type other_value);
+SocketCAN__open__socket__type& operator=(const SocketCAN__open__socket__type& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const SocketCAN__open__socket__type& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const SocketCAN__open__socket__type& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const SocketCAN__open__socket__type& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const SocketCAN__open__socket__type& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const SocketCAN__open__socket__type& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const SocketCAN__open__socket__type& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const SocketCAN__open__socket__type& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+};
+
+class SocketCAN__open__socket__type_template : public Base_Template {
+union {
+SocketCAN__open__socket__type::enum_type single_value;
+struct {
+unsigned int n_values;
+SocketCAN__open__socket__type_template *list_value;
+} value_list;
+};
+
+void copy_template(const SocketCAN__open__socket__type_template& other_value);
+
+public:
+SocketCAN__open__socket__type_template();
+SocketCAN__open__socket__type_template(template_sel other_value);
+SocketCAN__open__socket__type_template(int other_value);
+SocketCAN__open__socket__type_template(SocketCAN__open__socket__type::enum_type other_value);
+SocketCAN__open__socket__type_template(const SocketCAN__open__socket__type& other_value);
+SocketCAN__open__socket__type_template(const OPTIONAL<SocketCAN__open__socket__type>& other_value);
+SocketCAN__open__socket__type_template(const SocketCAN__open__socket__type_template& other_value);
+~SocketCAN__open__socket__type_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SocketCAN__open__socket__type_template& operator=(template_sel other_value);
+SocketCAN__open__socket__type_template& operator=(int other_value);
+SocketCAN__open__socket__type_template& operator=(SocketCAN__open__socket__type::enum_type other_value);
+SocketCAN__open__socket__type_template& operator=(const SocketCAN__open__socket__type& other_value);
+SocketCAN__open__socket__type_template& operator=(const OPTIONAL<SocketCAN__open__socket__type>& other_value);
+SocketCAN__open__socket__type_template& operator=(const SocketCAN__open__socket__type_template& other_value);
+
+boolean match(SocketCAN__open__socket__type::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const SocketCAN__open__socket__type& other_value, boolean legacy = FALSE) const;
+SocketCAN__open__socket__type::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SocketCAN__open__socket__type_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const SocketCAN__open__socket__type& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class SocketCAN__open__isotp__result {
+  SocketCAN__Types::SocketCAN__ifr field_ifr;
+  INTEGER field_socket__id;
+public:
+  SocketCAN__open__isotp__result();
+  SocketCAN__open__isotp__result(const SocketCAN__Types::SocketCAN__ifr& par_ifr,
+    const INTEGER& par_socket__id);
+  SocketCAN__open__isotp__result(const SocketCAN__open__isotp__result& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SocketCAN__open__isotp__result& operator=(const SocketCAN__open__isotp__result& other_value);
+  boolean operator==(const SocketCAN__open__isotp__result& other_value) const;
+  inline boolean operator!=(const SocketCAN__open__isotp__result& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline SocketCAN__Types::SocketCAN__ifr& ifr()
+    {return field_ifr;}
+  inline const SocketCAN__Types::SocketCAN__ifr& ifr() const
+    {return field_ifr;}
+  inline INTEGER& socket__id()
+    {return field_socket__id;}
+  inline const INTEGER& socket__id() const
+    {return field_socket__id;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+};
+
+class SocketCAN__open__isotp__result_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SocketCAN__open__isotp__result_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SocketCAN__open__isotp__result& other_value);
+void copy_template(const SocketCAN__open__isotp__result_template& other_value);
+
+public:
+SocketCAN__open__isotp__result_template();
+SocketCAN__open__isotp__result_template(template_sel other_value);
+SocketCAN__open__isotp__result_template(const SocketCAN__open__isotp__result& other_value);
+SocketCAN__open__isotp__result_template(const OPTIONAL<SocketCAN__open__isotp__result>& other_value);
+SocketCAN__open__isotp__result_template(const SocketCAN__open__isotp__result_template& other_value);
+~SocketCAN__open__isotp__result_template();
+SocketCAN__open__isotp__result_template& operator=(template_sel other_value);
+SocketCAN__open__isotp__result_template& operator=(const SocketCAN__open__isotp__result& other_value);
+SocketCAN__open__isotp__result_template& operator=(const OPTIONAL<SocketCAN__open__isotp__result>& other_value);
+SocketCAN__open__isotp__result_template& operator=(const SocketCAN__open__isotp__result_template& other_value);
+boolean match(const SocketCAN__open__isotp__result& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SocketCAN__open__isotp__result valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SocketCAN__open__isotp__result_template& list_item(unsigned int list_index) const;
+SocketCAN__Types::SocketCAN__ifr_template& ifr();
+const SocketCAN__Types::SocketCAN__ifr_template& ifr() const;
+INTEGER_template& socket__id();
+const INTEGER_template& socket__id() const;
+int size_of() const;
+void log() const;
+void log_match(const SocketCAN__open__isotp__result& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+
+/* Function prototypes */
+
+extern SocketCAN__Types::SocketCAN__socket__result f__open__socket(const SocketCAN__open__socket__type& v__socket__type);
+extern void start_f__open__socket(const COMPONENT& component_reference, const SocketCAN__open__socket__type& v__socket__type);
+extern SocketCAN__open__isotp__result f__open__isotp(const OCTETSTRING& p__rx__can__id, const OCTETSTRING& p__tx__can__id);
+extern void start_f__open__isotp(const COMPONENT& component_reference, const OCTETSTRING& p__rx__can__id, const OCTETSTRING& p__tx__can__id);
+extern SocketCAN__Types::SocketCAN__ioctl__result f__ioctl__get__if__index(const INTEGER& p__socket__id);
+extern void start_f__ioctl__get__if__index(const COMPONENT& component_reference, const INTEGER& p__socket__id);
+extern SocketCAN__Types::SocketCAN__bind__result f__bind(const INTEGER& p__socket__id, const INTEGER& p__if__index, const OCTETSTRING& p__rx__can__id, const OCTETSTRING& p__tx__can__id);
+extern void start_f__bind(const COMPONENT& component_reference, const INTEGER& p__socket__id, const INTEGER& p__if__index, const OCTETSTRING& p__rx__can__id, const OCTETSTRING& p__tx__can__id);
+extern void f__close__socket(const INTEGER& p__socket__id);
+extern void start_f__close__socket(const COMPONENT& component_reference, const INTEGER& p__socket__id);
+extern void f__send__isotp__message(const INTEGER& p__socket__id, const OCTETSTRING& p__pdu);
+extern void start_f__send__isotp__message(const COMPONENT& component_reference, const INTEGER& p__socket__id, const OCTETSTRING& p__pdu);
+extern void f__behaviour__isotp(const BOOLEAN& p__initiator, const OCTETSTRING& p__rx__can__id, const OCTETSTRING& p__tx__can__id);
+extern void start_f__behaviour__isotp(const COMPONENT& component_reference, const BOOLEAN& p__initiator, const OCTETSTRING& p__rx__can__id, const OCTETSTRING& p__tx__can__id);
+extern verdicttype testcase_tc__Isotp__Example001(boolean has_timer, double timer_value);
+
+/* Global variable declarations */
+
+extern const FLOAT& c__guard;
+extern const TTCN_Typedescriptor_t SocketCAN__open__socket__type_descr_;
+extern const XERdescriptor_t SocketCAN__open__isotp__result_socket__id_xer_;
+extern const TTCN_OERdescriptor_t SocketCAN__open__isotp__result_socket__id_oer_;
+extern const TTCN_Typedescriptor_t SocketCAN__open__isotp__result_socket__id_descr_;
+extern const TTCN_Typedescriptor_t SocketCAN__open__isotp__result_descr_;
+extern const TTCN_Typedescriptor_t& MTC__CT_descr_;
+extern const TTCN_Typedescriptor_t& PTC__isotp__CT_descr_;
+extern SocketCAN__PortType::SocketCAN__PT PTC__isotp__CT_component_pt__socketCAN;
+extern TIMER PTC__isotp__CT_component_T0;
+extern TTCN_Module module_object;
+
+} /* end of namespace */
+
+#endif
diff --git a/demo/Isotptest.o b/demo/Isotptest.o
new file mode 100644
index 0000000..1fa97c8
--- /dev/null
+++ b/demo/Isotptest.o
Binary files differ
diff --git a/demo/Raw.cc b/demo/Raw.cc
new file mode 100644
index 0000000..0daaeb7
--- /dev/null
+++ b/demo/Raw.cc
@@ -0,0 +1,1257 @@
+// This C++ source file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+/* Including header files */
+
+#include "Raw.hh"
+
+namespace Raw {
+
+/* Prototypes of static functions */
+
+static void pre_init_module();
+static void post_init_module();
+
+/* Literal string constants */
+
+static const unsigned char os_0_octets[] = { 32, 0, 0, 0 };
+static const OCTETSTRING os_0(4, os_0_octets);
+static const unsigned char module_checksum[] = { 0x03, 0xf7, 0xb6, 0x54, 0xea, 0x47, 0x9a, 0x6b, 0x0d, 0x8c, 0x1e, 0x8a, 0xf3, 0x5f, 0x6c, 0x35 };
+
+/* Global variable definitions */
+
+const XERdescriptor_t       CAN__RAW__filter_can__id_xer_ = { {"can_id>\n", "can_id>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int CAN__RAW__filter_can__id_oer_ext_arr_[0] = {};
+const int CAN__RAW__filter_can__id_oer_p_[0] = {};
+const TTCN_OERdescriptor_t CAN__RAW__filter_can__id_oer_ = { -1, TRUE, 4, FALSE, 0, 0, CAN__RAW__filter_can__id_oer_ext_arr_, 0, CAN__RAW__filter_can__id_oer_p_};
+const TTCN_Typedescriptor_t CAN__RAW__filter_can__id_descr_ = { "@Raw.CAN_RAW_filter.can_id", &OCTETSTRING_ber_, &Can::CAN__id_raw_, &OCTETSTRING_text_, &CAN__RAW__filter_can__id_xer_, &OCTETSTRING_json_, &CAN__RAW__filter_can__id_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       CAN__RAW__filter_can__mask_xer_ = { {"can_mask>\n", "can_mask>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int CAN__RAW__filter_can__mask_oer_ext_arr_[0] = {};
+const int CAN__RAW__filter_can__mask_oer_p_[0] = {};
+const TTCN_OERdescriptor_t CAN__RAW__filter_can__mask_oer_ = { -1, TRUE, 4, FALSE, 0, 0, CAN__RAW__filter_can__mask_oer_ext_arr_, 0, CAN__RAW__filter_can__mask_oer_p_};
+const TTCN_Typedescriptor_t CAN__RAW__filter_can__mask_descr_ = { "@Raw.CAN_RAW_filter.can_mask", &OCTETSTRING_ber_, &Can::CAN__id_raw_, &OCTETSTRING_text_, &CAN__RAW__filter_can__mask_xer_, &OCTETSTRING_json_, &CAN__RAW__filter_can__mask_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for CAN__RAW__filter
+const TTCN_Typedescriptor_t CAN__RAW__filter_descr_ = { "@Raw.CAN_RAW_filter", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+static OCTETSTRING const_CAN__INV__FILTER;
+const OCTETSTRING& CAN__INV__FILTER = const_CAN__INV__FILTER;
+const TTCN_RAWdescriptor_t CAN__RAW__err__mask_raw_ = {32,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       CAN__RAW__err__mask_xer_ = { {"CAN_RAW_err_mask>\n", "CAN_RAW_err_mask>\n"}, {18, 18}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t CAN__RAW__err__mask_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t CAN__RAW__err__mask_descr_ = { "@Raw.CAN_RAW_err_mask", &BITSTRING_ber_, &CAN__RAW__err__mask_raw_, NULL, &CAN__RAW__err__mask_xer_, &BITSTRING_json_, &CAN__RAW__err__mask_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for DisableEnable__enum
+const TTCN_Typedescriptor_t DisableEnable__enum_descr_ = { "@Raw.DisableEnable_enum", NULL, NULL, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_Typedescriptor_t& CAN__RAW__loopback__enum_descr_ = DisableEnable__enum_descr_;
+const TTCN_Typedescriptor_t& CAN__RAW__recv__own__msgs__enum_descr_ = DisableEnable__enum_descr_;
+const TTCN_Typedescriptor_t& CAN__RAW__fd__frames__enum_descr_ = DisableEnable__enum_descr_;
+const TTCN_Typedescriptor_t& CAN__RAW__join__filters__enum_descr_ = DisableEnable__enum_descr_;
+TTCN_Module module_object("Raw", __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);
+
+static const RuntimeVersionChecker ver_checker(  current_runtime_version.requires_major_version_6,
+  current_runtime_version.requires_minor_version_6,
+  current_runtime_version.requires_patch_level_0,  current_runtime_version.requires_runtime_1);
+
+/* Member functions of C++ classes */
+
+CAN__RAW__filter::CAN__RAW__filter()
+{
+}
+
+CAN__RAW__filter::CAN__RAW__filter(const OCTETSTRING& par_can__id,
+    const OCTETSTRING& par_can__mask)
+  :   field_can__id(par_can__id),
+  field_can__mask(par_can__mask)
+{
+}
+
+CAN__RAW__filter::CAN__RAW__filter(const CAN__RAW__filter& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @Raw.CAN_RAW_filter.");
+if (other_value.can__id().is_bound()) field_can__id = other_value.can__id();
+else field_can__id.clean_up();
+if (other_value.can__mask().is_bound()) field_can__mask = other_value.can__mask();
+else field_can__mask.clean_up();
+}
+
+void CAN__RAW__filter::clean_up()
+{
+field_can__id.clean_up();
+field_can__mask.clean_up();
+}
+
+const TTCN_Typedescriptor_t* CAN__RAW__filter::get_descriptor() const { return &CAN__RAW__filter_descr_; }
+CAN__RAW__filter& CAN__RAW__filter::operator=(const CAN__RAW__filter& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @Raw.CAN_RAW_filter.");
+  if (other_value.can__id().is_bound()) field_can__id = other_value.can__id();
+  else field_can__id.clean_up();
+  if (other_value.can__mask().is_bound()) field_can__mask = other_value.can__mask();
+  else field_can__mask.clean_up();
+}
+return *this;
+}
+
+boolean CAN__RAW__filter::operator==(const CAN__RAW__filter& other_value) const
+{
+return field_can__id==other_value.field_can__id
+  && field_can__mask==other_value.field_can__mask;
+}
+
+boolean CAN__RAW__filter::is_bound() const
+{
+return (field_can__id.is_bound())
+  || (field_can__mask.is_bound());
+}
+boolean CAN__RAW__filter::is_value() const
+{
+return field_can__id.is_value()
+  && field_can__mask.is_value();
+}
+void CAN__RAW__filter::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ can_id := ");
+field_can__id.log();
+TTCN_Logger::log_event_str(", can_mask := ");
+field_can__mask.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void CAN__RAW__filter::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 @Raw.CAN_RAW_filter 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) can__id().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) can__mask().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(), "can_id")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          can__id().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(), "can_mask")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          can__mask().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 @Raw.CAN_RAW_filter: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@Raw.CAN_RAW_filter");
+  }
+}
+
+void CAN__RAW__filter::set_implicit_omit()
+{
+if (can__id().is_bound()) can__id().set_implicit_omit();
+if (can__mask().is_bound()) can__mask().set_implicit_omit();
+}
+
+void CAN__RAW__filter::encode_text(Text_Buf& text_buf) const
+{
+field_can__id.encode_text(text_buf);
+field_can__mask.encode_text(text_buf);
+}
+
+void CAN__RAW__filter::decode_text(Text_Buf& text_buf)
+{
+field_can__id.decode_text(text_buf);
+field_can__mask.decode_text(text_buf);
+}
+
+struct CAN__RAW__filter_template::single_value_struct {
+OCTETSTRING_template field_can__id;
+OCTETSTRING_template field_can__mask;
+};
+
+void CAN__RAW__filter_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_can__id = ANY_VALUE;
+single_value->field_can__mask = ANY_VALUE;
+}
+}
+}
+
+void CAN__RAW__filter_template::copy_value(const CAN__RAW__filter& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.can__id().is_bound()) {
+  single_value->field_can__id = other_value.can__id();
+} else {
+  single_value->field_can__id.clean_up();
+}
+if (other_value.can__mask().is_bound()) {
+  single_value->field_can__mask = other_value.can__mask();
+} else {
+  single_value->field_can__mask.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void CAN__RAW__filter_template::copy_template(const CAN__RAW__filter_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.can__id().get_selection()) {
+single_value->field_can__id = other_value.can__id();
+} else {
+single_value->field_can__id.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.can__mask().get_selection()) {
+single_value->field_can__mask = other_value.can__mask();
+} else {
+single_value->field_can__mask.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new CAN__RAW__filter_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @Raw.CAN_RAW_filter.");
+break;
+}
+set_selection(other_value);
+}
+
+CAN__RAW__filter_template::CAN__RAW__filter_template()
+{
+}
+
+CAN__RAW__filter_template::CAN__RAW__filter_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+CAN__RAW__filter_template::CAN__RAW__filter_template(const CAN__RAW__filter& other_value)
+{
+copy_value(other_value);
+}
+
+CAN__RAW__filter_template::CAN__RAW__filter_template(const OPTIONAL<CAN__RAW__filter>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CAN__RAW__filter&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @Raw.CAN_RAW_filter from an unbound optional field.");
+}
+}
+
+CAN__RAW__filter_template::CAN__RAW__filter_template(const CAN__RAW__filter_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+CAN__RAW__filter_template::~CAN__RAW__filter_template()
+{
+clean_up();
+}
+
+CAN__RAW__filter_template& CAN__RAW__filter_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+CAN__RAW__filter_template& CAN__RAW__filter_template::operator=(const CAN__RAW__filter& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+CAN__RAW__filter_template& CAN__RAW__filter_template::operator=(const OPTIONAL<CAN__RAW__filter>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CAN__RAW__filter&)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 @Raw.CAN_RAW_filter.");
+}
+return *this;
+}
+
+CAN__RAW__filter_template& CAN__RAW__filter_template::operator=(const CAN__RAW__filter_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean CAN__RAW__filter_template::match(const CAN__RAW__filter& 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.can__id().is_bound()) return FALSE;
+if(!single_value->field_can__id.match(other_value.can__id(), legacy))return FALSE;
+if(!other_value.can__mask().is_bound()) return FALSE;
+if(!single_value->field_can__mask.match(other_value.can__mask(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @Raw.CAN_RAW_filter.");
+}
+return FALSE;
+}
+
+boolean CAN__RAW__filter_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_can__id.is_bound()
+
+ ||single_value->field_can__mask.is_bound()
+;
+}
+
+boolean CAN__RAW__filter_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_can__id.is_value()
+ &&single_value->field_can__mask.is_value();
+}
+
+void CAN__RAW__filter_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+CAN__RAW__filter CAN__RAW__filter_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 @Raw.CAN_RAW_filter.");
+CAN__RAW__filter ret_val;
+if (single_value->field_can__id.is_bound()) {
+ret_val.can__id() = single_value->field_can__id.valueof();
+}
+if (single_value->field_can__mask.is_bound()) {
+ret_val.can__mask() = single_value->field_can__mask.valueof();
+}
+return ret_val;
+}
+
+void CAN__RAW__filter_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @Raw.CAN_RAW_filter.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new CAN__RAW__filter_template[list_length];
+}
+
+CAN__RAW__filter_template& CAN__RAW__filter_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @Raw.CAN_RAW_filter.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @Raw.CAN_RAW_filter.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& CAN__RAW__filter_template::can__id()
+{
+set_specific();
+return single_value->field_can__id;
+}
+
+const OCTETSTRING_template& CAN__RAW__filter_template::can__id() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field can_id of a non-specific template of type @Raw.CAN_RAW_filter.");
+return single_value->field_can__id;
+}
+
+OCTETSTRING_template& CAN__RAW__filter_template::can__mask()
+{
+set_specific();
+return single_value->field_can__mask;
+}
+
+const OCTETSTRING_template& CAN__RAW__filter_template::can__mask() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field can_mask of a non-specific template of type @Raw.CAN_RAW_filter.");
+return single_value->field_can__mask;
+}
+
+int CAN__RAW__filter_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @Raw.CAN_RAW_filter 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 @Raw.CAN_RAW_filter 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 @Raw.CAN_RAW_filter containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @Raw.CAN_RAW_filter containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @Raw.CAN_RAW_filter containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @Raw.CAN_RAW_filter containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @Raw.CAN_RAW_filter.");
+  }
+  return 0;
+}
+
+void CAN__RAW__filter_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ can_id := ");
+single_value->field_can__id.log();
+TTCN_Logger::log_event_str(", can_mask := ");
+single_value->field_can__mask.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void CAN__RAW__filter_template::log_match(const CAN__RAW__filter& 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_can__id.match(match_value.can__id(), legacy)){
+TTCN_Logger::log_logmatch_info(".can_id");
+single_value->field_can__id.log_match(match_value.can__id(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_can__mask.match(match_value.can__mask(), legacy)){
+TTCN_Logger::log_logmatch_info(".can_mask");
+single_value->field_can__mask.log_match(match_value.can__mask(), 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("{ can_id := ");
+single_value->field_can__id.log_match(match_value.can__id(), legacy);
+TTCN_Logger::log_event_str(", can_mask := ");
+single_value->field_can__mask.log_match(match_value.can__mask(), 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 CAN__RAW__filter_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_can__id.encode_text(text_buf);
+single_value->field_can__mask.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 @Raw.CAN_RAW_filter.");
+}
+}
+
+void CAN__RAW__filter_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_can__id.decode_text(text_buf);
+single_value->field_can__mask.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 CAN__RAW__filter_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 @Raw.CAN_RAW_filter.");
+}
+}
+
+void CAN__RAW__filter_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: {
+    CAN__RAW__filter_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @Raw.CAN_RAW_filter 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) can__id().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) can__mask().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(), "can_id")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          can__id().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(), "can_mask")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          can__mask().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 @Raw.CAN_RAW_filter: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@Raw.CAN_RAW_filter");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void CAN__RAW__filter_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_can__id.check_restriction(t_res, t_name ? t_name : "@Raw.CAN_RAW_filter");
+single_value->field_can__mask.check_restriction(t_res, t_name ? t_name : "@Raw.CAN_RAW_filter");
+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 : "@Raw.CAN_RAW_filter");
+}
+
+boolean CAN__RAW__filter_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean CAN__RAW__filter_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+DisableEnable__enum::DisableEnable__enum()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+DisableEnable__enum::DisableEnable__enum(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @Raw.DisableEnable_enum with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+DisableEnable__enum::DisableEnable__enum(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+DisableEnable__enum::DisableEnable__enum(const DisableEnable__enum& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @Raw.DisableEnable_enum.");
+enum_value = other_value.enum_value;
+}
+
+DisableEnable__enum& DisableEnable__enum::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @Raw.DisableEnable_enum.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+DisableEnable__enum& DisableEnable__enum::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+DisableEnable__enum& DisableEnable__enum::operator=(const DisableEnable__enum& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @Raw.DisableEnable_enum.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean DisableEnable__enum::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Raw.DisableEnable_enum.");
+return enum_value == other_value;
+}
+
+boolean DisableEnable__enum::operator==(const DisableEnable__enum& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Raw.DisableEnable_enum.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @Raw.DisableEnable_enum.");
+return enum_value == other_value.enum_value;
+}
+
+boolean DisableEnable__enum::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Raw.DisableEnable_enum.");
+return enum_value < other_value;
+}
+
+boolean DisableEnable__enum::operator<(const DisableEnable__enum& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Raw.DisableEnable_enum.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @Raw.DisableEnable_enum.");
+return enum_value < other_value.enum_value;
+}
+
+boolean DisableEnable__enum::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Raw.DisableEnable_enum.");
+return enum_value > other_value;
+}
+
+boolean DisableEnable__enum::operator>(const DisableEnable__enum& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @Raw.DisableEnable_enum.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @Raw.DisableEnable_enum.");
+return enum_value > other_value.enum_value;
+}
+
+const char *DisableEnable__enum::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case Disable: return "Disable";
+case Enable: return "Enable";
+default: return "<unknown>";
+}
+}
+
+DisableEnable__enum::enum_type DisableEnable__enum::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "Disable")) return Disable;
+else if (!strcmp(str_par, "Enable")) return Enable;
+else return UNKNOWN_VALUE;
+}
+
+boolean DisableEnable__enum::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 0:
+case 1:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int DisableEnable__enum::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @Raw.DisableEnable_enum.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int DisableEnable__enum::enum2int(const DisableEnable__enum& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @Raw.DisableEnable_enum.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void DisableEnable__enum::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @Raw.DisableEnable_enum.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+DisableEnable__enum::operator DisableEnable__enum::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @Raw.DisableEnable_enum.");
+return enum_value;
+}
+
+void DisableEnable__enum::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void DisableEnable__enum::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@Raw.DisableEnable_enum");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @Raw.DisableEnable_enum.");
+  }
+}
+
+void DisableEnable__enum::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @Raw.DisableEnable_enum.");
+text_buf.push_int(enum_value);
+}
+
+void DisableEnable__enum::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @Raw.DisableEnable_enum.", enum_value);
+}
+
+void DisableEnable__enum_template::copy_template(const DisableEnable__enum_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new DisableEnable__enum_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @Raw.DisableEnable_enum.");
+}
+}
+
+DisableEnable__enum_template::DisableEnable__enum_template()
+{
+}
+
+DisableEnable__enum_template::DisableEnable__enum_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+DisableEnable__enum_template::DisableEnable__enum_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!DisableEnable__enum::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @Raw.DisableEnable_enum with unknown numeric value %d.", other_value);
+single_value = (DisableEnable__enum::enum_type)other_value;
+}
+
+DisableEnable__enum_template::DisableEnable__enum_template(DisableEnable__enum::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+DisableEnable__enum_template::DisableEnable__enum_template(const DisableEnable__enum& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == DisableEnable__enum::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @Raw.DisableEnable_enum.");
+single_value = other_value.enum_value;
+}
+
+DisableEnable__enum_template::DisableEnable__enum_template(const OPTIONAL<DisableEnable__enum>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (DisableEnable__enum::enum_type)(const DisableEnable__enum&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @Raw.DisableEnable_enum from an unbound optional field.");
+}
+}
+
+DisableEnable__enum_template::DisableEnable__enum_template(const DisableEnable__enum_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+DisableEnable__enum_template::~DisableEnable__enum_template()
+{
+clean_up();
+}
+
+boolean DisableEnable__enum_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean DisableEnable__enum_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != DisableEnable__enum::UNBOUND_VALUE;
+}
+
+void DisableEnable__enum_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+DisableEnable__enum_template& DisableEnable__enum_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+DisableEnable__enum_template& DisableEnable__enum_template::operator=(int other_value)
+{
+if (!DisableEnable__enum::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @Raw.DisableEnable_enum.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (DisableEnable__enum::enum_type)other_value;
+return *this;
+}
+
+DisableEnable__enum_template& DisableEnable__enum_template::operator=(DisableEnable__enum::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+DisableEnable__enum_template& DisableEnable__enum_template::operator=(const DisableEnable__enum& other_value)
+{
+if (other_value.enum_value == DisableEnable__enum::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @Raw.DisableEnable_enum to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+DisableEnable__enum_template& DisableEnable__enum_template::operator=(const OPTIONAL<DisableEnable__enum>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (DisableEnable__enum::enum_type)(const DisableEnable__enum&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @Raw.DisableEnable_enum.");
+}
+return *this;
+}
+
+DisableEnable__enum_template& DisableEnable__enum_template::operator=(const DisableEnable__enum_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean DisableEnable__enum_template::match(DisableEnable__enum::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @Raw.DisableEnable_enum.");
+}
+return FALSE;
+}
+
+boolean DisableEnable__enum_template::match(const DisableEnable__enum& other_value, boolean) const
+{
+if (other_value.enum_value == DisableEnable__enum::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @Raw.DisableEnable_enum with an unbound value.");
+return match(other_value.enum_value);
+}
+
+DisableEnable__enum::enum_type DisableEnable__enum_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @Raw.DisableEnable_enum.");
+return single_value;
+}
+
+void DisableEnable__enum_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @Raw.DisableEnable_enum.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new DisableEnable__enum_template[list_length];
+}
+
+DisableEnable__enum_template& DisableEnable__enum_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @Raw.DisableEnable_enum.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @Raw.DisableEnable_enum.");
+return value_list.list_value[list_index];
+}
+
+void DisableEnable__enum_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(DisableEnable__enum::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void DisableEnable__enum_template::log_match(const DisableEnable__enum& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void DisableEnable__enum_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @Raw.DisableEnable_enum.");
+}
+}
+
+void DisableEnable__enum_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (DisableEnable__enum::enum_type)text_buf.pull_int().get_val();
+if (!DisableEnable__enum::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @Raw.DisableEnable_enum.", single_value);
+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 DisableEnable__enum_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @Raw.DisableEnable_enum.");
+}
+}
+
+boolean DisableEnable__enum_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean DisableEnable__enum_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 DisableEnable__enum_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    DisableEnable__enum_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    DisableEnable__enum::enum_type enum_val = DisableEnable__enum::str_to_enum(m_p->get_enumerated());
+    if (!DisableEnable__enum::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @Raw.DisableEnable_enum.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@Raw.DisableEnable_enum");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void DisableEnable__enum_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@Raw.DisableEnable_enum");
+}
+
+
+/* Bodies of static functions */
+
+static void pre_init_module()
+{
+TTCN_Location current_location("../src/Raw.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "Raw");
+Can::module_object.pre_init_module();
+current_location.update_lineno(33);
+#line 33 "../src/Raw.ttcn"
+const_CAN__INV__FILTER = os_0;
+}
+
+static void post_init_module()
+{
+TTCN_Location current_location("../src/Raw.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "Raw");
+Can::module_object.post_init_module();
+}
+
+
+} /* end of namespace */
diff --git a/demo/Raw.d b/demo/Raw.d
new file mode 100644
index 0000000..1fac635
--- /dev/null
+++ b/demo/Raw.d
@@ -0,0 +1,59 @@
+Raw.o Raw.d : Raw.cc Raw.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TTCN3.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/version.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/cversion.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Types.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Vector.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Error.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Basetype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Encdec.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RInt.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON_Tokenizer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Logger.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Template.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Integer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ttcn3float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Boolean.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Null.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Optional.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Param_Types.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/memory.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/BER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Textbuf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Parameters.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XmlReader.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Objid.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Verdicttype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Component.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Bitstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RAW.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/CharCoding.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Hexstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Octetstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Any.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Universal_charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Struct_of.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Array.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_CharacterString.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_External.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TEXT.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_EmbeddedPDV.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Addfunc.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Timer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Port.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Event_Handler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/TitanLoggerApiSimple.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/PreGenRecordOf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Module_list.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Snapshot.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Default.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Runtime.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/OER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Profiler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ProfilerTools.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Debugger.hh Can.hh \
+ General_Types.hh
diff --git a/demo/Raw.hh b/demo/Raw.hh
new file mode 100644
index 0000000..2a7d531
--- /dev/null
+++ b/demo/Raw.hh
@@ -0,0 +1,271 @@
+// This C++ header file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+#ifndef Raw_HH
+#define Raw_HH
+
+#ifdef TITAN_RUNTIME_2
+#error Generated code does not match with used runtime.\
+ Code was generated without -R option but -DTITAN_RUNTIME_2 was used.
+#endif
+
+/* Header file includes */
+
+#include <TTCN3.hh>
+#include "Can.hh"
+
+#if TTCN3_VERSION != 60600
+#error Version mismatch detected.\
+ Please check the version of the TTCN-3 compiler and the base library.\
+ Run make clean and rebuild the project if the version of the compiler changed recently.
+#endif
+
+#ifndef LINUX
+#error This file should be compiled on LINUX
+#endif
+
+#undef Raw_HH
+#endif
+
+namespace Raw {
+
+/* Forward declarations of classes */
+
+class CAN__RAW__filter;
+class CAN__RAW__filter_template;
+class DisableEnable__enum;
+class DisableEnable__enum_template;
+
+} /* end of namespace */
+
+#ifndef Raw_HH
+#define Raw_HH
+
+namespace Raw {
+
+/* Type definitions */
+
+typedef BITSTRING CAN__RAW__err__mask;
+typedef BITSTRING_template CAN__RAW__err__mask_template;
+typedef DisableEnable__enum CAN__RAW__loopback__enum;
+typedef DisableEnable__enum_template CAN__RAW__loopback__enum_template;
+typedef DisableEnable__enum CAN__RAW__recv__own__msgs__enum;
+typedef DisableEnable__enum_template CAN__RAW__recv__own__msgs__enum_template;
+typedef DisableEnable__enum CAN__RAW__fd__frames__enum;
+typedef DisableEnable__enum_template CAN__RAW__fd__frames__enum_template;
+typedef DisableEnable__enum CAN__RAW__join__filters__enum;
+typedef DisableEnable__enum_template CAN__RAW__join__filters__enum_template;
+
+/* Class definitions */
+
+class CAN__RAW__filter {
+  OCTETSTRING field_can__id;
+  OCTETSTRING field_can__mask;
+public:
+  CAN__RAW__filter();
+  CAN__RAW__filter(const OCTETSTRING& par_can__id,
+    const OCTETSTRING& par_can__mask);
+  CAN__RAW__filter(const CAN__RAW__filter& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  CAN__RAW__filter& operator=(const CAN__RAW__filter& other_value);
+  boolean operator==(const CAN__RAW__filter& other_value) const;
+  inline boolean operator!=(const CAN__RAW__filter& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& can__id()
+    {return field_can__id;}
+  inline const OCTETSTRING& can__id() const
+    {return field_can__id;}
+  inline OCTETSTRING& can__mask()
+    {return field_can__mask;}
+  inline const OCTETSTRING& can__mask() const
+    {return field_can__mask;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+};
+
+class CAN__RAW__filter_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+CAN__RAW__filter_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const CAN__RAW__filter& other_value);
+void copy_template(const CAN__RAW__filter_template& other_value);
+
+public:
+CAN__RAW__filter_template();
+CAN__RAW__filter_template(template_sel other_value);
+CAN__RAW__filter_template(const CAN__RAW__filter& other_value);
+CAN__RAW__filter_template(const OPTIONAL<CAN__RAW__filter>& other_value);
+CAN__RAW__filter_template(const CAN__RAW__filter_template& other_value);
+~CAN__RAW__filter_template();
+CAN__RAW__filter_template& operator=(template_sel other_value);
+CAN__RAW__filter_template& operator=(const CAN__RAW__filter& other_value);
+CAN__RAW__filter_template& operator=(const OPTIONAL<CAN__RAW__filter>& other_value);
+CAN__RAW__filter_template& operator=(const CAN__RAW__filter_template& other_value);
+boolean match(const CAN__RAW__filter& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+CAN__RAW__filter valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+CAN__RAW__filter_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& can__id();
+const OCTETSTRING_template& can__id() const;
+OCTETSTRING_template& can__mask();
+const OCTETSTRING_template& can__mask() const;
+int size_of() const;
+void log() const;
+void log_match(const CAN__RAW__filter& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class DisableEnable__enum : public Base_Type { // enum
+friend class DisableEnable__enum_template;
+public:
+enum enum_type { Disable = 0, Enable = 1, UNKNOWN_VALUE = 2, UNBOUND_VALUE = 3 };
+private:
+enum_type enum_value;
+
+public:
+DisableEnable__enum();
+DisableEnable__enum(int other_value);
+DisableEnable__enum(enum_type other_value);
+DisableEnable__enum(const DisableEnable__enum& other_value);
+
+DisableEnable__enum& operator=(int other_value);
+DisableEnable__enum& operator=(enum_type other_value);
+DisableEnable__enum& operator=(const DisableEnable__enum& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const DisableEnable__enum& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const DisableEnable__enum& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const DisableEnable__enum& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const DisableEnable__enum& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const DisableEnable__enum& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const DisableEnable__enum& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const DisableEnable__enum& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+};
+
+class DisableEnable__enum_template : public Base_Template {
+union {
+DisableEnable__enum::enum_type single_value;
+struct {
+unsigned int n_values;
+DisableEnable__enum_template *list_value;
+} value_list;
+};
+
+void copy_template(const DisableEnable__enum_template& other_value);
+
+public:
+DisableEnable__enum_template();
+DisableEnable__enum_template(template_sel other_value);
+DisableEnable__enum_template(int other_value);
+DisableEnable__enum_template(DisableEnable__enum::enum_type other_value);
+DisableEnable__enum_template(const DisableEnable__enum& other_value);
+DisableEnable__enum_template(const OPTIONAL<DisableEnable__enum>& other_value);
+DisableEnable__enum_template(const DisableEnable__enum_template& other_value);
+~DisableEnable__enum_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+DisableEnable__enum_template& operator=(template_sel other_value);
+DisableEnable__enum_template& operator=(int other_value);
+DisableEnable__enum_template& operator=(DisableEnable__enum::enum_type other_value);
+DisableEnable__enum_template& operator=(const DisableEnable__enum& other_value);
+DisableEnable__enum_template& operator=(const OPTIONAL<DisableEnable__enum>& other_value);
+DisableEnable__enum_template& operator=(const DisableEnable__enum_template& other_value);
+
+boolean match(DisableEnable__enum::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const DisableEnable__enum& other_value, boolean legacy = FALSE) const;
+DisableEnable__enum::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+DisableEnable__enum_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const DisableEnable__enum& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+
+/* Global variable declarations */
+
+extern const XERdescriptor_t CAN__RAW__filter_can__id_xer_;
+extern const TTCN_OERdescriptor_t CAN__RAW__filter_can__id_oer_;
+extern const TTCN_Typedescriptor_t CAN__RAW__filter_can__id_descr_;
+extern const XERdescriptor_t CAN__RAW__filter_can__mask_xer_;
+extern const TTCN_OERdescriptor_t CAN__RAW__filter_can__mask_oer_;
+extern const TTCN_Typedescriptor_t CAN__RAW__filter_can__mask_descr_;
+extern const TTCN_Typedescriptor_t CAN__RAW__filter_descr_;
+extern const OCTETSTRING& CAN__INV__FILTER;
+extern const TTCN_RAWdescriptor_t CAN__RAW__err__mask_raw_;
+extern const XERdescriptor_t CAN__RAW__err__mask_xer_;
+extern const TTCN_OERdescriptor_t CAN__RAW__err__mask_oer_;
+extern const TTCN_Typedescriptor_t CAN__RAW__err__mask_descr_;
+extern const TTCN_Typedescriptor_t DisableEnable__enum_descr_;
+extern const TTCN_Typedescriptor_t& CAN__RAW__loopback__enum_descr_;
+extern const TTCN_Typedescriptor_t& CAN__RAW__recv__own__msgs__enum_descr_;
+extern const TTCN_Typedescriptor_t& CAN__RAW__fd__frames__enum_descr_;
+extern const TTCN_Typedescriptor_t& CAN__RAW__join__filters__enum_descr_;
+extern TTCN_Module module_object;
+
+} /* end of namespace */
+
+#endif
diff --git a/demo/Raw.o b/demo/Raw.o
new file mode 100644
index 0000000..53e1701
--- /dev/null
+++ b/demo/Raw.o
Binary files differ
diff --git a/demo/SocketCAN b/demo/SocketCAN
new file mode 100755
index 0000000..2a9d911
--- /dev/null
+++ b/demo/SocketCAN
Binary files differ
diff --git a/demo/SocketCAN_BCM_test.cc b/demo/SocketCAN_BCM_test.cc
new file mode 100644
index 0000000..eade0a8
--- /dev/null
+++ b/demo/SocketCAN_BCM_test.cc
@@ -0,0 +1,810 @@
+// This C++ source file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+/* Including header files */
+
+#include "SocketCAN_BCM_test.hh"
+
+namespace SocketCAN__BCM__test {
+
+/* Prototypes of static functions */
+
+static void pre_init_module();
+static void post_init_module();
+
+/* Literal string constants */
+
+static const unsigned char bs_1_bits[] = { 0, 0, 0, 0 },
+bs_0_bits[] = { 0, 0, 0, 192 },
+bs_5_bits[] = { 0, 0, 0, 200 },
+bs_4_bits[] = { 16, 0, 0, 0 },
+bs_3_bits[] = { 170 },
+bs_2_bits[] = { 85 };
+static const BITSTRING bs_1(32, bs_1_bits),
+bs_0(32, bs_0_bits),
+bs_5(32, bs_5_bits),
+bs_4(32, bs_4_bits),
+bs_3(8, bs_3_bits),
+bs_2(8, bs_2_bits);
+static const unsigned char os_0_octets[] = { 0, 0, 0, 1 },
+os_2_octets[] = { 0, 0, 0, 2 },
+os_4_octets[] = { 0, 0, 0, 3 },
+os_6_octets[] = { 0, 0, 0, 4 },
+os_8_octets[] = { 0, 0, 0, 5 },
+os_11_octets[] = { 0, 0, 0, 17 },
+os_12_octets[] = { 0, 0, 0, 18 },
+os_14_octets[] = { 0, 0, 0, 19 },
+os_16_octets[] = { 0, 0, 0, 20 },
+os_18_octets[] = { 0, 0, 0, 21 },
+os_10_octets[] = { 0, 0, 0, 66 },
+os_19_octets[] = { 1, 35 },
+os_1_octets[] = { 17, 17, 17, 17, 17, 17, 17, 17 },
+os_3_octets[] = { 34, 34, 34, 34, 34, 34, 34, 34 },
+os_13_octets[] = { 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34 },
+os_5_octets[] = { 51, 51, 51, 51, 51, 51, 51, 51 },
+os_7_octets[] = { 68, 68, 68, 68, 68, 68, 68, 68 },
+os_15_octets[] = { 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68, 68 },
+os_9_octets[] = { 85, 85, 85, 85, 85, 85, 85, 85 },
+os_17_octets[] = { 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85, 85 };
+static const OCTETSTRING os_0(4, os_0_octets),
+os_2(4, os_2_octets),
+os_4(4, os_4_octets),
+os_6(4, os_6_octets),
+os_8(4, os_8_octets),
+os_11(4, os_11_octets),
+os_12(4, os_12_octets),
+os_14(4, os_14_octets),
+os_16(4, os_16_octets),
+os_18(4, os_18_octets),
+os_10(4, os_10_octets),
+os_19(2, os_19_octets),
+os_1(8, os_1_octets),
+os_3(8, os_3_octets),
+os_13(16, os_13_octets),
+os_5(8, os_5_octets),
+os_7(8, os_7_octets),
+os_15(32, os_15_octets),
+os_9(8, os_9_octets),
+os_17(64, os_17_octets);
+static const unsigned char module_checksum[] = { 0xd5, 0x0d, 0xc3, 0xa4, 0x67, 0xdf, 0xba, 0xf8, 0xbe, 0x94, 0xb3, 0xbb, 0xb5, 0x01, 0x4e, 0x58 };
+
+/* Global variable definitions */
+
+TTCN_Module module_object("SocketCAN_BCM_test", __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);
+
+static const RuntimeVersionChecker ver_checker(  current_runtime_version.requires_major_version_6,
+  current_runtime_version.requires_minor_version_6,
+  current_runtime_version.requires_patch_level_0,  current_runtime_version.requires_runtime_1);
+
+/* Bodies of functions, altsteps and testcases */
+
+SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame_template a__CAN__frame(const Can::CAN__frame_template& p__can__frame)
+{
+TTCN_Location current_location("SocketCAN_BCM_test.ttcn", 22, TTCN_Location::LOCATION_TEMPLATE, "a_CAN_frame");
+SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame_template ret_val;
+ret_val.can__frame() = p__can__frame;
+return ret_val;
+}
+
+verdicttype testcase_tc__can__bcm__TX__SETUP__TX__DELETE__can__frame(boolean has_timer, double timer_value)
+{
+TTCN_Runtime::check_begin_testcase(has_timer, timer_value);
+TTCN_Location current_location("SocketCAN_BCM_test.ttcn", 24, TTCN_Location::LOCATION_TESTCASE, "tc_can_bcm_TX_SETUP_TX_DELETE_can_frame");
+try {
+TTCN_Runtime::begin_testcase("SocketCAN_BCM_test", "tc_can_bcm_TX_SETUP_TX_DELETE_can_frame", "SocketCANtest", "MTC", "SocketCANtest", "MTC", has_timer, timer_value);
+current_location.update_lineno(28);
+#line 28 "SocketCAN_BCM_test.ttcn"
+COMPONENT v__ptc__bcmConfigurator(TTCN_Runtime::create_component("SocketCANtest", "PTC", "PTC1_ptc_bcmConfigurator", NULL, TRUE));
+current_location.update_lineno(29);
+#line 29 "SocketCAN_BCM_test.ttcn"
+COMPONENT v__ptc__rawFrameReceiver1(TTCN_Runtime::create_component("SocketCANtest", "PTC", "PTC2_ptc_rawFrameReceiver1", NULL, TRUE));
+current_location.update_lineno(30);
+#line 30 "SocketCAN_BCM_test.ttcn"
+COMPONENT v__ptc__rawFrameReceiver2(TTCN_Runtime::create_component("SocketCANtest", "PTC", "PTC2_ptc_rawFrameReceiver2", NULL, TRUE));
+current_location.update_lineno(32);
+#line 32 "SocketCAN_BCM_test.ttcn"
+SocketCANtest::f__addSyncSlaveSet(v__ptc__bcmConfigurator, SocketCANtest::MTC_component_v__PTCSet);
+current_location.update_lineno(33);
+#line 33 "SocketCAN_BCM_test.ttcn"
+SocketCANtest::f__addSyncSlaveSet(v__ptc__rawFrameReceiver1, SocketCANtest::MTC_component_v__PTCSet);
+current_location.update_lineno(34);
+#line 34 "SocketCAN_BCM_test.ttcn"
+SocketCANtest::f__addSyncSlaveSet(v__ptc__rawFrameReceiver2, SocketCANtest::MTC_component_v__PTCSet);
+current_location.update_lineno(35);
+#line 35 "SocketCAN_BCM_test.ttcn"
+TTCN_Runtime::connect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__bcmConfigurator, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(36);
+#line 36 "SocketCAN_BCM_test.ttcn"
+TTCN_Runtime::connect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawFrameReceiver1, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(37);
+#line 37 "SocketCAN_BCM_test.ttcn"
+TTCN_Runtime::connect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawFrameReceiver2, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(39);
+#line 39 "SocketCAN_BCM_test.ttcn"
+Can::CAN__frame v__can__frame1;
+current_location.update_lineno(39);
+#line 39 "SocketCAN_BCM_test.ttcn"
+Can::CAN__frame v__can__frame2;
+current_location.update_lineno(39);
+#line 39 "SocketCAN_BCM_test.ttcn"
+Can::CAN__frame v__can__frame3;
+current_location.update_lineno(39);
+#line 39 "SocketCAN_BCM_test.ttcn"
+Can::CAN__frame v__can__frame4;
+current_location.update_lineno(39);
+#line 39 "SocketCAN_BCM_test.ttcn"
+Can::CAN__frame v__can__frame5;
+current_location.update_lineno(40);
+#line 40 "SocketCAN_BCM_test.ttcn"
+Can::CANFD__frame v__canfd__frame1;
+current_location.update_lineno(42);
+#line 42 "SocketCAN_BCM_test.ttcn"
+Bcm::SocketCAN__bcm__frame v__bcm__activation__frame;
+current_location.update_lineno(42);
+#line 42 "SocketCAN_BCM_test.ttcn"
+Bcm::SocketCAN__bcm__frame v__bcm__deactivation__frame;
+current_location.update_lineno(44);
+#line 44 "SocketCAN_BCM_test.ttcn"
+v__can__frame1.can__id() = os_0;
+v__can__frame1.can__pdu() = os_1;
+current_location.update_lineno(45);
+#line 45 "SocketCAN_BCM_test.ttcn"
+v__can__frame2.can__id() = os_2;
+v__can__frame2.can__pdu() = os_3;
+current_location.update_lineno(46);
+#line 46 "SocketCAN_BCM_test.ttcn"
+v__can__frame3.can__id() = os_4;
+v__can__frame3.can__pdu() = os_5;
+current_location.update_lineno(47);
+#line 47 "SocketCAN_BCM_test.ttcn"
+v__can__frame4.can__id() = os_6;
+v__can__frame4.can__pdu() = os_7;
+current_location.update_lineno(48);
+#line 48 "SocketCAN_BCM_test.ttcn"
+v__can__frame5.can__id() = os_8;
+v__can__frame5.can__pdu() = os_9;
+current_location.update_lineno(50);
+#line 50 "SocketCAN_BCM_test.ttcn"
+SocketCANtest::SocketCAN__CAN__or__CAN__FD__frames_template a__expected__can__frames;
+a__expected__can__frames.set_size(10);
+a__expected__can__frames[0].can__frame() = v__can__frame1;
+a__expected__can__frames[1].can__frame() = v__can__frame2;
+a__expected__can__frames[2].can__frame() = v__can__frame3;
+a__expected__can__frames[3].can__frame() = v__can__frame4;
+a__expected__can__frames[4].can__frame() = v__can__frame5;
+a__expected__can__frames[5].can__frame() = v__can__frame1;
+a__expected__can__frames[6].can__frame() = v__can__frame2;
+a__expected__can__frames[7].can__frame() = v__can__frame3;
+a__expected__can__frames[8].can__frame() = v__can__frame4;
+a__expected__can__frames[9].can__frame() = v__can__frame5;
+current_location.update_lineno(63);
+#line 63 "SocketCAN_BCM_test.ttcn"
+v__bcm__activation__frame.opcode() = os_0;
+v__bcm__activation__frame.flags() = bs_0;
+v__bcm__activation__frame.count() = 0;
+{
+Bcm::Bcm__timeval& tmp_6 = v__bcm__activation__frame.ival1();
+tmp_6.tv__sec() = 0;
+tmp_6.tv__usec() = 0;
+}
+{
+Bcm::Bcm__timeval& tmp_7 = v__bcm__activation__frame.ival2();
+tmp_7.tv__sec() = 0;
+tmp_7.tv__usec() = 100000;
+}
+v__bcm__activation__frame.can__id() = os_10;
+{
+Bcm::SocketCAN__bcm__frame_frames_can__frame& tmp_8 = v__bcm__activation__frame.frames().can__frame();
+tmp_8.set_size(5);
+tmp_8[0] = v__can__frame1;
+tmp_8[1] = v__can__frame2;
+tmp_8[2] = v__can__frame3;
+tmp_8[3] = v__can__frame4;
+tmp_8[4] = v__can__frame5;
+}
+current_location.update_lineno(78);
+#line 78 "SocketCAN_BCM_test.ttcn"
+v__bcm__deactivation__frame.opcode() = os_2;
+v__bcm__deactivation__frame.flags() = bs_1;
+v__bcm__deactivation__frame.count() = 0;
+{
+Bcm::Bcm__timeval& tmp_10 = v__bcm__deactivation__frame.ival1();
+tmp_10.tv__sec() = 0;
+tmp_10.tv__usec() = 0;
+}
+{
+Bcm::Bcm__timeval& tmp_11 = v__bcm__deactivation__frame.ival2();
+tmp_11.tv__sec() = 0;
+tmp_11.tv__usec() = 0;
+}
+v__bcm__deactivation__frame.can__id() = os_10;
+v__bcm__deactivation__frame.frames().can__frame() = NULL_VALUE;
+current_location.update_lineno(88);
+#line 88 "SocketCAN_BCM_test.ttcn"
+SocketCANtest::BCM__cmds v__cmds;
+v__cmds.set_size(2);
+{
+SocketCANtest::BCM__cmd& tmp_12 = v__cmds[0];
+tmp_12.phase() = SocketCANtest::e__Phase::e__testbody2;
+tmp_12.bcm__frame() = v__bcm__activation__frame;
+}
+{
+SocketCANtest::BCM__cmd& tmp_13 = v__cmds[1];
+tmp_13.phase() = SocketCANtest::e__Phase::e__testbody5;
+tmp_13.bcm__frame() = v__bcm__deactivation__frame;
+}
+current_location.update_lineno(94);
+#line 94 "SocketCAN_BCM_test.ttcn"
+SocketCANtest::start_f__ptc__bcmComandSendInitiator(v__ptc__bcmConfigurator, v__cmds);
+current_location.update_lineno(96);
+#line 96 "SocketCAN_BCM_test.ttcn"
+SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame v__frame__to__receive1;
+current_location.update_lineno(96);
+#line 96 "SocketCAN_BCM_test.ttcn"
+SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame v__frame__to__receive5;
+current_location.update_lineno(97);
+#line 97 "SocketCAN_BCM_test.ttcn"
+v__frame__to__receive1.can__frame() = v__can__frame1;
+current_location.update_lineno(98);
+#line 98 "SocketCAN_BCM_test.ttcn"
+v__frame__to__receive5.can__frame() = v__can__frame5;
+current_location.update_lineno(101);
+#line 101 "SocketCAN_BCM_test.ttcn"
+SocketCANtest::start_f__ptc__RawFrameReceiver(v__ptc__rawFrameReceiver1, SocketCANtest::e__Phase::e__testbody3, SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame_template(v__frame__to__receive1));
+current_location.update_lineno(104);
+#line 104 "SocketCAN_BCM_test.ttcn"
+SocketCANtest::start_f__ptc__RawFrameSequenceReceiver(v__ptc__rawFrameReceiver2, SocketCANtest::e__Phase::e__testbody4, a__expected__can__frames, SocketCANtest::e__Phase::e__testbody5, 2.0);
+current_location.update_lineno(106);
+#line 106 "SocketCAN_BCM_test.ttcn"
+SocketCANtest::e__Phase v__phase;
+current_location.update_lineno(108);
+#line 108 "SocketCAN_BCM_test.ttcn"
+v__phase = SocketCANtest::c__firstPhase;
+current_location.update_lineno(108);
+#line 108 "SocketCAN_BCM_test.ttcn"
+for ( ; ; ) {
+current_location.update_lineno(108);
+#line 108 "SocketCAN_BCM_test.ttcn"
+if (!(v__phase < SocketCANtest::e__Phase::e__testcase__complete)) break;
+current_location.update_lineno(109);
+#line 109 "SocketCAN_BCM_test.ttcn"
+SocketCANtest::f__startPhase(v__phase);
+current_location.update_lineno(110);
+#line 110 "SocketCAN_BCM_test.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("MTC: ");
+v__phase.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(111);
+#line 111 "SocketCAN_BCM_test.ttcn"
+SocketCANtest::f__awaitEndPhase(v__phase);
+current_location.update_lineno(108);
+#line 108 "SocketCAN_BCM_test.ttcn"
+v__phase = SocketCANtest::f__incMTCPhase(v__phase);
+}
+current_location.update_lineno(115);
+#line 115 "SocketCAN_BCM_test.ttcn"
+{
+tmp_18:
+alt_status alt_flag = ALT_UNCHECKED, default_flag = ALT_UNCHECKED;
+TTCN_Snapshot::take_new(FALSE);
+for ( ; ; ) {
+if (alt_flag != ALT_NO) {
+alt_flag = TTCN_Runtime::component_done(ALL_COMPREF);
+if (alt_flag == ALT_YES) break;
+else if (alt_flag == ALT_REPEAT) goto tmp_18;
+}
+if (default_flag != ALT_NO) {
+default_flag = TTCN_Default::try_altsteps();
+if (default_flag == ALT_YES || default_flag == ALT_BREAK) break;
+else if (default_flag == ALT_REPEAT) goto tmp_18;
+}
+current_location.update_lineno(115);
+#line 115 "SocketCAN_BCM_test.ttcn"
+if (alt_flag == ALT_NO && default_flag == ALT_NO) TTCN_error("Stand-alone done statement failed in file SocketCAN_BCM_test.ttcn, line 115.");
+TTCN_Snapshot::take_new(TRUE);
+}
+}
+current_location.update_lineno(116);
+#line 116 "SocketCAN_BCM_test.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "MTC done");
+current_location.update_lineno(118);
+#line 118 "SocketCAN_BCM_test.ttcn"
+TTCN_Runtime::disconnect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__bcmConfigurator, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(119);
+#line 119 "SocketCAN_BCM_test.ttcn"
+TTCN_Runtime::disconnect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawFrameReceiver1, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(120);
+#line 120 "SocketCAN_BCM_test.ttcn"
+TTCN_Runtime::disconnect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawFrameReceiver2, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(122);
+#line 122 "SocketCAN_BCM_test.ttcn"
+TTCN_Runtime::kill_component(ALL_COMPREF);
+} catch (const TC_Error& tc_error) {
+} catch (const TC_End& tc_end) {
+TTCN_Logger::log_str(TTCN_FUNCTION, "Test case tc_can_bcm_TX_SETUP_TX_DELETE_can_frame was stopped.");
+}
+return TTCN_Runtime::end_testcase();
+}
+
+verdicttype testcase_tc__can__bcm__TX__SETUP__TX__DELETE__canfd__frame(boolean has_timer, double timer_value)
+{
+TTCN_Runtime::check_begin_testcase(has_timer, timer_value);
+TTCN_Location current_location("SocketCAN_BCM_test.ttcn", 125, TTCN_Location::LOCATION_TESTCASE, "tc_can_bcm_TX_SETUP_TX_DELETE_canfd_frame");
+try {
+TTCN_Runtime::begin_testcase("SocketCAN_BCM_test", "tc_can_bcm_TX_SETUP_TX_DELETE_canfd_frame", "SocketCANtest", "MTC", "SocketCANtest", "MTC", has_timer, timer_value);
+current_location.update_lineno(129);
+#line 129 "SocketCAN_BCM_test.ttcn"
+COMPONENT v__ptc__bcmConfigurator(TTCN_Runtime::create_component("SocketCANtest", "PTC", "PTC1_ptc_bcmConfigurator", NULL, TRUE));
+current_location.update_lineno(130);
+#line 130 "SocketCAN_BCM_test.ttcn"
+COMPONENT v__ptc__rawFrameReceiver1(TTCN_Runtime::create_component("SocketCANtest", "PTC", "PTC2_ptc_rawFrameReceiver1", NULL, TRUE));
+current_location.update_lineno(131);
+#line 131 "SocketCAN_BCM_test.ttcn"
+COMPONENT v__ptc__rawFrameReceiver2(TTCN_Runtime::create_component("SocketCANtest", "PTC", "PTC2_ptc_rawFrameReceiver2", NULL, TRUE));
+current_location.update_lineno(133);
+#line 133 "SocketCAN_BCM_test.ttcn"
+SocketCANtest::f__addSyncSlaveSet(v__ptc__bcmConfigurator, SocketCANtest::MTC_component_v__PTCSet);
+current_location.update_lineno(134);
+#line 134 "SocketCAN_BCM_test.ttcn"
+SocketCANtest::f__addSyncSlaveSet(v__ptc__rawFrameReceiver1, SocketCANtest::MTC_component_v__PTCSet);
+current_location.update_lineno(135);
+#line 135 "SocketCAN_BCM_test.ttcn"
+SocketCANtest::f__addSyncSlaveSet(v__ptc__rawFrameReceiver2, SocketCANtest::MTC_component_v__PTCSet);
+current_location.update_lineno(136);
+#line 136 "SocketCAN_BCM_test.ttcn"
+TTCN_Runtime::connect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__bcmConfigurator, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(137);
+#line 137 "SocketCAN_BCM_test.ttcn"
+TTCN_Runtime::connect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawFrameReceiver1, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(138);
+#line 138 "SocketCAN_BCM_test.ttcn"
+TTCN_Runtime::connect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawFrameReceiver2, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(140);
+#line 140 "SocketCAN_BCM_test.ttcn"
+Can::CANFD__frame v__canfd__frame1;
+current_location.update_lineno(140);
+#line 140 "SocketCAN_BCM_test.ttcn"
+Can::CANFD__frame v__canfd__frame2;
+current_location.update_lineno(140);
+#line 140 "SocketCAN_BCM_test.ttcn"
+Can::CANFD__frame v__canfd__frame3;
+current_location.update_lineno(140);
+#line 140 "SocketCAN_BCM_test.ttcn"
+Can::CANFD__frame v__canfd__frame4;
+current_location.update_lineno(140);
+#line 140 "SocketCAN_BCM_test.ttcn"
+Can::CANFD__frame v__canfd__frame5;
+current_location.update_lineno(142);
+#line 142 "SocketCAN_BCM_test.ttcn"
+Bcm::SocketCAN__bcm__frame v__bcm__activation__frame;
+current_location.update_lineno(142);
+#line 142 "SocketCAN_BCM_test.ttcn"
+Bcm::SocketCAN__bcm__frame v__bcm__deactivation__frame;
+current_location.update_lineno(144);
+#line 144 "SocketCAN_BCM_test.ttcn"
+v__canfd__frame1.can__id() = os_11;
+v__canfd__frame1.can__flags() = bs_2;
+v__canfd__frame1.can__pdu() = os_1;
+current_location.update_lineno(150);
+#line 150 "SocketCAN_BCM_test.ttcn"
+v__canfd__frame2.can__id() = os_12;
+v__canfd__frame2.can__flags() = bs_2;
+v__canfd__frame2.can__pdu() = os_13;
+current_location.update_lineno(156);
+#line 156 "SocketCAN_BCM_test.ttcn"
+v__canfd__frame3.can__id() = os_14;
+v__canfd__frame3.can__flags() = bs_2;
+v__canfd__frame3.can__pdu() = os_15;
+current_location.update_lineno(162);
+#line 162 "SocketCAN_BCM_test.ttcn"
+v__canfd__frame4.can__id() = os_16;
+v__canfd__frame4.can__flags() = bs_2;
+v__canfd__frame4.can__pdu() = os_17;
+current_location.update_lineno(168);
+#line 168 "SocketCAN_BCM_test.ttcn"
+v__canfd__frame5.can__id() = os_18;
+v__canfd__frame5.can__flags() = bs_3;
+v__canfd__frame5.can__pdu() = os_19;
+current_location.update_lineno(174);
+#line 174 "SocketCAN_BCM_test.ttcn"
+SocketCANtest::SocketCAN__CAN__or__CAN__FD__frames_template a__expected__can__frames;
+a__expected__can__frames.set_size(5);
+a__expected__can__frames[0].canfd__frame() = v__canfd__frame1;
+a__expected__can__frames[1].canfd__frame() = v__canfd__frame2;
+a__expected__can__frames[2].canfd__frame() = v__canfd__frame3;
+a__expected__can__frames[3].canfd__frame() = v__canfd__frame4;
+a__expected__can__frames[4].canfd__frame() = v__canfd__frame5;
+current_location.update_lineno(182);
+#line 182 "SocketCAN_BCM_test.ttcn"
+v__bcm__activation__frame.opcode() = os_0;
+v__bcm__activation__frame.flags() = bs_0;
+v__bcm__activation__frame.count() = 0;
+{
+Bcm::Bcm__timeval& tmp_25 = v__bcm__activation__frame.ival1();
+tmp_25.tv__sec() = 0;
+tmp_25.tv__usec() = 0;
+}
+{
+Bcm::Bcm__timeval& tmp_26 = v__bcm__activation__frame.ival2();
+tmp_26.tv__sec() = 0;
+tmp_26.tv__usec() = 100000;
+}
+v__bcm__activation__frame.can__id() = os_10;
+{
+Bcm::SocketCAN__bcm__frame_frames_canfd__frame& tmp_27 = v__bcm__activation__frame.frames().canfd__frame();
+tmp_27.set_size(5);
+tmp_27[0] = v__canfd__frame1;
+tmp_27[1] = v__canfd__frame2;
+tmp_27[2] = v__canfd__frame3;
+tmp_27[3] = v__canfd__frame4;
+tmp_27[4] = v__canfd__frame5;
+}
+current_location.update_lineno(199);
+#line 199 "SocketCAN_BCM_test.ttcn"
+v__bcm__deactivation__frame.opcode() = os_2;
+v__bcm__deactivation__frame.flags() = bs_4;
+v__bcm__deactivation__frame.count() = 0;
+{
+Bcm::Bcm__timeval& tmp_29 = v__bcm__deactivation__frame.ival1();
+tmp_29.tv__sec() = 0;
+tmp_29.tv__usec() = 0;
+}
+{
+Bcm::Bcm__timeval& tmp_30 = v__bcm__deactivation__frame.ival2();
+tmp_30.tv__sec() = 0;
+tmp_30.tv__usec() = 0;
+}
+v__bcm__deactivation__frame.can__id() = os_10;
+v__bcm__deactivation__frame.frames().canfd__frame() = NULL_VALUE;
+current_location.update_lineno(211);
+#line 211 "SocketCAN_BCM_test.ttcn"
+SocketCANtest::BCM__cmds v__cmds;
+v__cmds.set_size(2);
+{
+SocketCANtest::BCM__cmd& tmp_31 = v__cmds[0];
+tmp_31.phase() = SocketCANtest::e__Phase::e__testbody2;
+tmp_31.bcm__frame() = v__bcm__activation__frame;
+}
+{
+SocketCANtest::BCM__cmd& tmp_32 = v__cmds[1];
+tmp_32.phase() = SocketCANtest::e__Phase::e__testbody5;
+tmp_32.bcm__frame() = v__bcm__deactivation__frame;
+}
+current_location.update_lineno(217);
+#line 217 "SocketCAN_BCM_test.ttcn"
+SocketCANtest::start_f__ptc__bcmComandSendInitiator(v__ptc__bcmConfigurator, v__cmds);
+current_location.update_lineno(219);
+#line 219 "SocketCAN_BCM_test.ttcn"
+SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame v__frame__to__receive1;
+current_location.update_lineno(221);
+#line 221 "SocketCAN_BCM_test.ttcn"
+v__frame__to__receive1.canfd__frame() = v__canfd__frame1;
+current_location.update_lineno(225);
+#line 225 "SocketCAN_BCM_test.ttcn"
+SocketCANtest::start_f__ptc__RawFrameReceiver(v__ptc__rawFrameReceiver1, SocketCANtest::e__Phase::e__testbody3, SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame_template(v__frame__to__receive1));
+current_location.update_lineno(228);
+#line 228 "SocketCAN_BCM_test.ttcn"
+SocketCANtest::start_f__ptc__RawFrameSequenceReceiver(v__ptc__rawFrameReceiver2, SocketCANtest::e__Phase::e__testbody4, a__expected__can__frames, SocketCANtest::e__Phase::e__testbody5, 2.0);
+current_location.update_lineno(230);
+#line 230 "SocketCAN_BCM_test.ttcn"
+SocketCANtest::e__Phase v__phase;
+current_location.update_lineno(232);
+#line 232 "SocketCAN_BCM_test.ttcn"
+v__phase = SocketCANtest::c__firstPhase;
+current_location.update_lineno(232);
+#line 232 "SocketCAN_BCM_test.ttcn"
+for ( ; ; ) {
+current_location.update_lineno(232);
+#line 232 "SocketCAN_BCM_test.ttcn"
+if (!(v__phase < SocketCANtest::e__Phase::e__testcase__complete)) break;
+current_location.update_lineno(233);
+#line 233 "SocketCAN_BCM_test.ttcn"
+SocketCANtest::f__startPhase(v__phase);
+current_location.update_lineno(234);
+#line 234 "SocketCAN_BCM_test.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("MTC: ");
+v__phase.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(235);
+#line 235 "SocketCAN_BCM_test.ttcn"
+SocketCANtest::f__awaitEndPhase(v__phase);
+current_location.update_lineno(232);
+#line 232 "SocketCAN_BCM_test.ttcn"
+v__phase = SocketCANtest::f__incMTCPhase(v__phase);
+}
+current_location.update_lineno(239);
+#line 239 "SocketCAN_BCM_test.ttcn"
+{
+tmp_36:
+alt_status alt_flag = ALT_UNCHECKED, default_flag = ALT_UNCHECKED;
+TTCN_Snapshot::take_new(FALSE);
+for ( ; ; ) {
+if (alt_flag != ALT_NO) {
+alt_flag = TTCN_Runtime::component_done(ALL_COMPREF);
+if (alt_flag == ALT_YES) break;
+else if (alt_flag == ALT_REPEAT) goto tmp_36;
+}
+if (default_flag != ALT_NO) {
+default_flag = TTCN_Default::try_altsteps();
+if (default_flag == ALT_YES || default_flag == ALT_BREAK) break;
+else if (default_flag == ALT_REPEAT) goto tmp_36;
+}
+current_location.update_lineno(239);
+#line 239 "SocketCAN_BCM_test.ttcn"
+if (alt_flag == ALT_NO && default_flag == ALT_NO) TTCN_error("Stand-alone done statement failed in file SocketCAN_BCM_test.ttcn, line 239.");
+TTCN_Snapshot::take_new(TRUE);
+}
+}
+current_location.update_lineno(240);
+#line 240 "SocketCAN_BCM_test.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "MTC done");
+current_location.update_lineno(242);
+#line 242 "SocketCAN_BCM_test.ttcn"
+TTCN_Runtime::disconnect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__bcmConfigurator, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(243);
+#line 243 "SocketCAN_BCM_test.ttcn"
+TTCN_Runtime::disconnect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawFrameReceiver1, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(244);
+#line 244 "SocketCAN_BCM_test.ttcn"
+TTCN_Runtime::disconnect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawFrameReceiver2, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(246);
+#line 246 "SocketCAN_BCM_test.ttcn"
+TTCN_Runtime::kill_component(ALL_COMPREF);
+} catch (const TC_Error& tc_error) {
+} catch (const TC_End& tc_end) {
+TTCN_Logger::log_str(TTCN_FUNCTION, "Test case tc_can_bcm_TX_SETUP_TX_DELETE_canfd_frame was stopped.");
+}
+return TTCN_Runtime::end_testcase();
+}
+
+verdicttype testcase_tc__can__bcm__TX__SETUP__TX__READ(boolean has_timer, double timer_value)
+{
+TTCN_Runtime::check_begin_testcase(has_timer, timer_value);
+TTCN_Location current_location("SocketCAN_BCM_test.ttcn", 250, TTCN_Location::LOCATION_TESTCASE, "tc_can_bcm_TX_SETUP_TX_READ");
+try {
+TTCN_Runtime::begin_testcase("SocketCAN_BCM_test", "tc_can_bcm_TX_SETUP_TX_READ", "SocketCANtest", "MTC", "SocketCANtest", "MTC", has_timer, timer_value);
+current_location.update_lineno(253);
+#line 253 "SocketCAN_BCM_test.ttcn"
+COMPONENT v__ptc__bcmConfigurator(TTCN_Runtime::create_component("SocketCANtest", "PTC", "PTC1_ptc_bcmConfigurator", NULL, TRUE));
+current_location.update_lineno(254);
+#line 254 "SocketCAN_BCM_test.ttcn"
+COMPONENT v__ptc__rawFrameReceiver1(TTCN_Runtime::create_component("SocketCANtest", "PTC", "PTC2_ptc_rawFrameReceiver1", NULL, TRUE));
+current_location.update_lineno(256);
+#line 256 "SocketCAN_BCM_test.ttcn"
+SocketCANtest::f__addSyncSlaveSet(v__ptc__bcmConfigurator, SocketCANtest::MTC_component_v__PTCSet);
+current_location.update_lineno(257);
+#line 257 "SocketCAN_BCM_test.ttcn"
+SocketCANtest::f__addSyncSlaveSet(v__ptc__rawFrameReceiver1, SocketCANtest::MTC_component_v__PTCSet);
+current_location.update_lineno(259);
+#line 259 "SocketCAN_BCM_test.ttcn"
+TTCN_Runtime::connect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__bcmConfigurator, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(260);
+#line 260 "SocketCAN_BCM_test.ttcn"
+TTCN_Runtime::connect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawFrameReceiver1, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(263);
+#line 263 "SocketCAN_BCM_test.ttcn"
+Can::CAN__frame v__can__frame1;
+current_location.update_lineno(263);
+#line 263 "SocketCAN_BCM_test.ttcn"
+Can::CAN__frame v__can__frame2;
+current_location.update_lineno(263);
+#line 263 "SocketCAN_BCM_test.ttcn"
+Can::CAN__frame v__can__frame3;
+current_location.update_lineno(263);
+#line 263 "SocketCAN_BCM_test.ttcn"
+Can::CAN__frame v__can__frame4;
+current_location.update_lineno(263);
+#line 263 "SocketCAN_BCM_test.ttcn"
+Can::CAN__frame v__can__frame5;
+current_location.update_lineno(264);
+#line 264 "SocketCAN_BCM_test.ttcn"
+Can::CANFD__frame v__canfd__frame1;
+current_location.update_lineno(265);
+#line 265 "SocketCAN_BCM_test.ttcn"
+Bcm::SocketCAN__bcm__frame v__bcm__activation__frame;
+current_location.update_lineno(265);
+#line 265 "SocketCAN_BCM_test.ttcn"
+Bcm::SocketCAN__bcm__frame v__bcm__deactivation__frame;
+current_location.update_lineno(265);
+#line 265 "SocketCAN_BCM_test.ttcn"
+Bcm::SocketCAN__bcm__frame v__bcm__read__status__frame;
+current_location.update_lineno(267);
+#line 267 "SocketCAN_BCM_test.ttcn"
+v__can__frame1.can__id() = os_0;
+v__can__frame1.can__pdu() = os_1;
+current_location.update_lineno(268);
+#line 268 "SocketCAN_BCM_test.ttcn"
+v__can__frame2.can__id() = os_2;
+v__can__frame2.can__pdu() = os_3;
+current_location.update_lineno(269);
+#line 269 "SocketCAN_BCM_test.ttcn"
+v__can__frame3.can__id() = os_4;
+v__can__frame3.can__pdu() = os_5;
+current_location.update_lineno(270);
+#line 270 "SocketCAN_BCM_test.ttcn"
+v__can__frame4.can__id() = os_6;
+v__can__frame4.can__pdu() = os_7;
+current_location.update_lineno(271);
+#line 271 "SocketCAN_BCM_test.ttcn"
+v__can__frame5.can__id() = os_8;
+v__can__frame5.can__pdu() = os_9;
+current_location.update_lineno(273);
+#line 273 "SocketCAN_BCM_test.ttcn"
+v__bcm__activation__frame.opcode() = os_0;
+v__bcm__activation__frame.flags() = bs_0;
+v__bcm__activation__frame.count() = 0;
+{
+Bcm::Bcm__timeval& tmp_43 = v__bcm__activation__frame.ival1();
+tmp_43.tv__sec() = 0;
+tmp_43.tv__usec() = 0;
+}
+{
+Bcm::Bcm__timeval& tmp_44 = v__bcm__activation__frame.ival2();
+tmp_44.tv__sec() = 0;
+tmp_44.tv__usec() = 100000;
+}
+v__bcm__activation__frame.can__id() = os_10;
+{
+Bcm::SocketCAN__bcm__frame_frames_can__frame& tmp_45 = v__bcm__activation__frame.frames().can__frame();
+tmp_45.set_size(5);
+tmp_45[0] = v__can__frame1;
+tmp_45[1] = v__can__frame2;
+tmp_45[2] = v__can__frame3;
+tmp_45[3] = v__can__frame4;
+tmp_45[4] = v__can__frame5;
+}
+current_location.update_lineno(288);
+#line 288 "SocketCAN_BCM_test.ttcn"
+v__bcm__read__status__frame.opcode() = os_4;
+v__bcm__read__status__frame.flags() = bs_5;
+v__bcm__read__status__frame.count() = 0;
+{
+Bcm::Bcm__timeval& tmp_47 = v__bcm__read__status__frame.ival1();
+tmp_47.tv__sec() = 0;
+tmp_47.tv__usec() = 0;
+}
+{
+Bcm::Bcm__timeval& tmp_48 = v__bcm__read__status__frame.ival2();
+tmp_48.tv__sec() = 0;
+tmp_48.tv__usec() = 0;
+}
+v__bcm__read__status__frame.can__id() = os_10;
+v__bcm__read__status__frame.frames().can__frame() = NULL_VALUE;
+current_location.update_lineno(303);
+#line 303 "SocketCAN_BCM_test.ttcn"
+SocketCANtest::BCM__cmds v__cmds;
+v__cmds.set_size(2);
+{
+SocketCANtest::BCM__cmd& tmp_49 = v__cmds[0];
+tmp_49.phase() = SocketCANtest::e__Phase::e__testbody1;
+tmp_49.bcm__frame() = v__bcm__activation__frame;
+}
+{
+SocketCANtest::BCM__cmd& tmp_50 = v__cmds[1];
+tmp_50.phase() = SocketCANtest::e__Phase::e__testbody3;
+tmp_50.bcm__frame() = v__bcm__read__status__frame;
+}
+current_location.update_lineno(309);
+#line 309 "SocketCAN_BCM_test.ttcn"
+SocketCANtest::start_f__ptc__bcmComandSendReceiveInitiator(v__ptc__bcmConfigurator, v__cmds);
+current_location.update_lineno(311);
+#line 311 "SocketCAN_BCM_test.ttcn"
+SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame v__frame__to__receive1;
+current_location.update_lineno(312);
+#line 312 "SocketCAN_BCM_test.ttcn"
+v__frame__to__receive1.can__frame() = v__can__frame1;
+current_location.update_lineno(315);
+#line 315 "SocketCAN_BCM_test.ttcn"
+SocketCANtest::start_f__ptc__RawFrameReceiver(v__ptc__rawFrameReceiver1, SocketCANtest::e__Phase::e__testbody1, SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame_template(v__frame__to__receive1));
+current_location.update_lineno(317);
+#line 317 "SocketCAN_BCM_test.ttcn"
+SocketCANtest::e__Phase v__phase;
+current_location.update_lineno(319);
+#line 319 "SocketCAN_BCM_test.ttcn"
+v__phase = SocketCANtest::c__firstPhase;
+current_location.update_lineno(319);
+#line 319 "SocketCAN_BCM_test.ttcn"
+for ( ; ; ) {
+current_location.update_lineno(319);
+#line 319 "SocketCAN_BCM_test.ttcn"
+if (!(v__phase < SocketCANtest::e__Phase::e__testcase__complete)) break;
+current_location.update_lineno(320);
+#line 320 "SocketCAN_BCM_test.ttcn"
+SocketCANtest::f__startPhase(v__phase);
+current_location.update_lineno(321);
+#line 321 "SocketCAN_BCM_test.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("MTC: ");
+v__phase.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(322);
+#line 322 "SocketCAN_BCM_test.ttcn"
+SocketCANtest::f__awaitEndPhase(v__phase);
+current_location.update_lineno(319);
+#line 319 "SocketCAN_BCM_test.ttcn"
+v__phase = SocketCANtest::f__incMTCPhase(v__phase);
+}
+current_location.update_lineno(326);
+#line 326 "SocketCAN_BCM_test.ttcn"
+{
+tmp_54:
+alt_status alt_flag = ALT_UNCHECKED, default_flag = ALT_UNCHECKED;
+TTCN_Snapshot::take_new(FALSE);
+for ( ; ; ) {
+if (alt_flag != ALT_NO) {
+alt_flag = TTCN_Runtime::component_done(ALL_COMPREF);
+if (alt_flag == ALT_YES) break;
+else if (alt_flag == ALT_REPEAT) goto tmp_54;
+}
+if (default_flag != ALT_NO) {
+default_flag = TTCN_Default::try_altsteps();
+if (default_flag == ALT_YES || default_flag == ALT_BREAK) break;
+else if (default_flag == ALT_REPEAT) goto tmp_54;
+}
+current_location.update_lineno(326);
+#line 326 "SocketCAN_BCM_test.ttcn"
+if (alt_flag == ALT_NO && default_flag == ALT_NO) TTCN_error("Stand-alone done statement failed in file SocketCAN_BCM_test.ttcn, line 326.");
+TTCN_Snapshot::take_new(TRUE);
+}
+}
+current_location.update_lineno(327);
+#line 327 "SocketCAN_BCM_test.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "MTC done");
+current_location.update_lineno(329);
+#line 329 "SocketCAN_BCM_test.ttcn"
+TTCN_Runtime::disconnect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__bcmConfigurator, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(330);
+#line 330 "SocketCAN_BCM_test.ttcn"
+TTCN_Runtime::disconnect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawFrameReceiver1, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(332);
+#line 332 "SocketCAN_BCM_test.ttcn"
+TTCN_Runtime::kill_component(ALL_COMPREF);
+} catch (const TC_Error& tc_error) {
+} catch (const TC_End& tc_end) {
+TTCN_Logger::log_str(TTCN_FUNCTION, "Test case tc_can_bcm_TX_SETUP_TX_READ was stopped.");
+}
+return TTCN_Runtime::end_testcase();
+}
+
+
+/* Bodies of static functions */
+
+static void pre_init_module()
+{
+TTCN_Location current_location("SocketCAN_BCM_test.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "SocketCAN_BCM_test");
+SocketCANtest::module_object.pre_init_module();
+module_object.add_testcase_nonpard("tc_can_bcm_TX_SETUP_TX_DELETE_can_frame", testcase_tc__can__bcm__TX__SETUP__TX__DELETE__can__frame);
+module_object.add_testcase_nonpard("tc_can_bcm_TX_SETUP_TX_DELETE_canfd_frame", testcase_tc__can__bcm__TX__SETUP__TX__DELETE__canfd__frame);
+module_object.add_testcase_nonpard("tc_can_bcm_TX_SETUP_TX_READ", testcase_tc__can__bcm__TX__SETUP__TX__READ);
+}
+
+static void post_init_module()
+{
+TTCN_Location current_location("SocketCAN_BCM_test.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "SocketCAN_BCM_test");
+SocketCANtest::module_object.post_init_module();
+}
+
+
+} /* end of namespace */
diff --git a/demo/SocketCAN_BCM_test.d b/demo/SocketCAN_BCM_test.d
new file mode 100644
index 0000000..37109f1
--- /dev/null
+++ b/demo/SocketCAN_BCM_test.d
@@ -0,0 +1,61 @@
+SocketCAN_BCM_test.o SocketCAN_BCM_test.d : SocketCAN_BCM_test.cc SocketCAN_BCM_test.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TTCN3.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/version.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/cversion.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Types.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Vector.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Error.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Basetype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Encdec.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RInt.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON_Tokenizer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Logger.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Template.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Integer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ttcn3float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Boolean.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Null.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Optional.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Param_Types.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/memory.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/BER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Textbuf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Parameters.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XmlReader.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Objid.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Verdicttype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Component.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Bitstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RAW.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/CharCoding.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Hexstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Octetstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Any.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Universal_charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Struct_of.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Array.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_CharacterString.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_External.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TEXT.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_EmbeddedPDV.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Addfunc.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Timer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Port.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Event_Handler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/TitanLoggerApiSimple.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/PreGenRecordOf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Module_list.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Snapshot.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Default.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Runtime.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/OER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Profiler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ProfilerTools.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Debugger.hh \
+ SocketCANtest.hh SocketCAN_PortType.hh SocketCAN_Types.hh Bcm.hh Can.hh \
+ General_Types.hh Raw.hh ../src/SocketCAN_PT.hh SocketCAN_Types.hh \
+ SocketCAN_Templates.hh
diff --git a/demo/SocketCAN_BCM_test.hh b/demo/SocketCAN_BCM_test.hh
new file mode 100644
index 0000000..cc31d06
--- /dev/null
+++ b/demo/SocketCAN_BCM_test.hh
@@ -0,0 +1,47 @@
+// This C++ header file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+#ifndef SocketCAN__BCM__test_HH
+#define SocketCAN__BCM__test_HH
+
+#ifdef TITAN_RUNTIME_2
+#error Generated code does not match with used runtime.\
+ Code was generated without -R option but -DTITAN_RUNTIME_2 was used.
+#endif
+
+/* Header file includes */
+
+#include <TTCN3.hh>
+#include "SocketCANtest.hh"
+
+#if TTCN3_VERSION != 60600
+#error Version mismatch detected.\
+ Please check the version of the TTCN-3 compiler and the base library.\
+ Run make clean and rebuild the project if the version of the compiler changed recently.
+#endif
+
+#ifndef LINUX
+#error This file should be compiled on LINUX
+#endif
+
+namespace SocketCAN__BCM__test {
+
+/* Function prototypes */
+
+extern SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame_template a__CAN__frame(const Can::CAN__frame_template& p__can__frame);
+extern verdicttype testcase_tc__can__bcm__TX__SETUP__TX__DELETE__can__frame(boolean has_timer, double timer_value);
+extern verdicttype testcase_tc__can__bcm__TX__SETUP__TX__DELETE__canfd__frame(boolean has_timer, double timer_value);
+extern verdicttype testcase_tc__can__bcm__TX__SETUP__TX__READ(boolean has_timer, double timer_value);
+
+/* Global variable declarations */
+
+extern TTCN_Module module_object;
+
+} /* end of namespace */
+
+#endif
diff --git a/demo/SocketCAN_BCM_test.o b/demo/SocketCAN_BCM_test.o
new file mode 100644
index 0000000..43b4dd4
--- /dev/null
+++ b/demo/SocketCAN_BCM_test.o
Binary files differ
diff --git a/demo/SocketCAN_PT.d b/demo/SocketCAN_PT.d
new file mode 100644
index 0000000..6e75680
--- /dev/null
+++ b/demo/SocketCAN_PT.d
@@ -0,0 +1,72 @@
+SocketCAN_PT.o SocketCAN_PT.d : ../src/SocketCAN_PT.cc ../src/SocketCAN_PT.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TTCN3.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/version.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/cversion.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Types.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Vector.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Error.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Basetype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Encdec.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RInt.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON_Tokenizer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Logger.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Template.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Integer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ttcn3float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Boolean.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Null.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Optional.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Param_Types.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/memory.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/BER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Textbuf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Parameters.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XmlReader.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Objid.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Verdicttype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Component.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Bitstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RAW.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/CharCoding.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Hexstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Octetstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Any.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Universal_charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Struct_of.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Array.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_CharacterString.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_External.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TEXT.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_EmbeddedPDV.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Addfunc.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Timer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Port.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Event_Handler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/TitanLoggerApiSimple.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/PreGenRecordOf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Module_list.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Snapshot.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Default.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Runtime.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/OER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Profiler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ProfilerTools.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Debugger.hh \
+ SocketCAN_Types.hh Bcm.hh Can.hh General_Types.hh Raw.hh \
+ SocketCAN_PortType.hh SocketCAN_Types.hh ../src/SocketCAN_PT.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Addfunc.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Bitstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Error.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Hexstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Integer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Logger.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/memory.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Octetstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Optional.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Port.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Template.hh
diff --git a/demo/SocketCAN_PT.o b/demo/SocketCAN_PT.o
new file mode 100644
index 0000000..d512bb1
--- /dev/null
+++ b/demo/SocketCAN_PT.o
Binary files differ
diff --git a/demo/SocketCAN_PortType.cc b/demo/SocketCAN_PortType.cc
new file mode 100644
index 0000000..37c42de
--- /dev/null
+++ b/demo/SocketCAN_PortType.cc
@@ -0,0 +1,3085 @@
+// This C++ source file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+/* Including header files */
+
+#include "SocketCAN_PortType.hh"
+
+namespace SocketCAN__PortType {
+
+/* Prototypes of static functions */
+
+static void pre_init_module();
+static void post_init_module();
+
+/* Literal string constants */
+
+static const unsigned char module_checksum[] = { 0x38, 0x6e, 0x12, 0x9b, 0x78, 0x43, 0xf9, 0x47, 0xd1, 0x55, 0x30, 0x58, 0xa4, 0x99, 0x8f, 0x8f };
+
+/* Global variable definitions */
+
+TTCN_Module module_object("SocketCAN_PortType", __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);
+
+static const RuntimeVersionChecker ver_checker(  current_runtime_version.requires_major_version_6,
+  current_runtime_version.requires_minor_version_6,
+  current_runtime_version.requires_patch_level_0,  current_runtime_version.requires_runtime_1);
+
+/* Member functions of C++ classes */
+
+void SocketCAN__PT::remove_msg_queue_head()
+{
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+switch (my_head->item_selection) {
+case MESSAGE_0:
+delete (my_head)->message_0;
+break;
+case MESSAGE_1:
+delete (my_head)->message_1;
+break;
+case MESSAGE_2:
+delete (my_head)->message_2;
+break;
+case MESSAGE_3:
+delete (my_head)->message_3;
+break;
+case MESSAGE_4:
+delete (my_head)->message_4;
+break;
+case MESSAGE_5:
+delete (my_head)->message_5;
+break;
+case MESSAGE_6:
+delete (my_head)->message_6;
+break;
+case MESSAGE_7:
+delete (my_head)->message_7;
+break;
+case MESSAGE_8:
+delete (my_head)->message_8;
+break;
+case MESSAGE_9:
+delete (my_head)->message_9;
+break;
+case MESSAGE_10:
+delete (my_head)->message_10;
+break;
+default:
+TTCN_error("Internal error: Invalid message selector in the queue of port %s.", port_name);
+}
+msg_queue_item_base *next_item = msg_queue_head->next_item;
+delete (msg_queue_item*)msg_queue_head;
+msg_queue_head = next_item;
+if (next_item == NULL) msg_queue_tail = NULL;
+TTCN_Logger::log_port_queue(TitanLoggerApiSimple::Port__Queue_operation::extract__msg, port_name, 0, ++msg_head_count, CHARSTRING(0,NULL), CHARSTRING(0,NULL));}
+
+void SocketCAN__PT::clear_queue()
+{
+while (msg_queue_head != NULL) remove_msg_queue_head();
+}
+
+SocketCAN__PT::SocketCAN__PT(const char *par_port_name)
+ : SocketCAN__PT_PROVIDER(par_port_name)
+{
+msg_queue_head = NULL;
+msg_queue_tail = NULL;
+mapped_ports = NULL;
+n_mapped_ports = 0;
+}
+
+SocketCAN__PT::~SocketCAN__PT()
+{
+clear_queue();
+}
+
+void SocketCAN__PT::send(const SocketCAN__Types::SocketCAN__socket& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect)
+{
+if (!is_started) TTCN_error("Sending a message on port %s, which is not started.", port_name);
+if (!destination_component.is_bound()) TTCN_error("Unbound component reference in the to clause of send operation.");
+const TTCN_Logger::Severity log_sev = destination_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMSEND:TTCN_Logger::PORTEVENT_MCSEND;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_send(port_name, destination_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), TTCN_Logger::log_event_str(" @SocketCAN_Types.SocketCAN_socket : "),
+send_par.log(), TTCN_Logger::end_event_log2str()));
+}
+if (destination_component == SYSTEM_COMPREF) {
+(void)get_default_destination();
+outgoing_send(send_par);
+}
+else {
+Text_Buf text_buf;
+prepare_message(text_buf, "@SocketCAN_Types.SocketCAN_socket");
+send_par.encode_text(text_buf);
+send_data(text_buf, destination_component);
+}
+}
+
+void SocketCAN__PT::send(const SocketCAN__Types::SocketCAN__socket& send_par, FLOAT* timestamp_redirect)
+{
+send(send_par, COMPONENT(get_default_destination()), timestamp_redirect);
+}
+
+void SocketCAN__PT::send(const SocketCAN__Types::SocketCAN__socket_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect)
+{
+const SocketCAN__Types::SocketCAN__socket& send_par_value = SocketCAN__Types::SocketCAN__socket(send_par.valueof());
+send(send_par_value, destination_component, timestamp_redirect);
+}
+
+void SocketCAN__PT::send(const SocketCAN__Types::SocketCAN__socket_template& send_par, FLOAT* timestamp_redirect)
+{
+const SocketCAN__Types::SocketCAN__socket& send_par_value = SocketCAN__Types::SocketCAN__socket(send_par.valueof());
+send(send_par_value, COMPONENT(get_default_destination()), timestamp_redirect);
+}
+
+void SocketCAN__PT::send(const SocketCAN__Types::SocketCAN__ioctl& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect)
+{
+if (!is_started) TTCN_error("Sending a message on port %s, which is not started.", port_name);
+if (!destination_component.is_bound()) TTCN_error("Unbound component reference in the to clause of send operation.");
+const TTCN_Logger::Severity log_sev = destination_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMSEND:TTCN_Logger::PORTEVENT_MCSEND;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_send(port_name, destination_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), TTCN_Logger::log_event_str(" @SocketCAN_Types.SocketCAN_ioctl : "),
+send_par.log(), TTCN_Logger::end_event_log2str()));
+}
+if (destination_component == SYSTEM_COMPREF) {
+(void)get_default_destination();
+outgoing_send(send_par);
+}
+else {
+Text_Buf text_buf;
+prepare_message(text_buf, "@SocketCAN_Types.SocketCAN_ioctl");
+send_par.encode_text(text_buf);
+send_data(text_buf, destination_component);
+}
+}
+
+void SocketCAN__PT::send(const SocketCAN__Types::SocketCAN__ioctl& send_par, FLOAT* timestamp_redirect)
+{
+send(send_par, COMPONENT(get_default_destination()), timestamp_redirect);
+}
+
+void SocketCAN__PT::send(const SocketCAN__Types::SocketCAN__ioctl_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect)
+{
+const SocketCAN__Types::SocketCAN__ioctl& send_par_value = SocketCAN__Types::SocketCAN__ioctl(send_par.valueof());
+send(send_par_value, destination_component, timestamp_redirect);
+}
+
+void SocketCAN__PT::send(const SocketCAN__Types::SocketCAN__ioctl_template& send_par, FLOAT* timestamp_redirect)
+{
+const SocketCAN__Types::SocketCAN__ioctl& send_par_value = SocketCAN__Types::SocketCAN__ioctl(send_par.valueof());
+send(send_par_value, COMPONENT(get_default_destination()), timestamp_redirect);
+}
+
+void SocketCAN__PT::send(const SocketCAN__Types::SocketCAN__connect& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect)
+{
+if (!is_started) TTCN_error("Sending a message on port %s, which is not started.", port_name);
+if (!destination_component.is_bound()) TTCN_error("Unbound component reference in the to clause of send operation.");
+const TTCN_Logger::Severity log_sev = destination_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMSEND:TTCN_Logger::PORTEVENT_MCSEND;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_send(port_name, destination_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), TTCN_Logger::log_event_str(" @SocketCAN_Types.SocketCAN_connect : "),
+send_par.log(), TTCN_Logger::end_event_log2str()));
+}
+if (destination_component == SYSTEM_COMPREF) {
+(void)get_default_destination();
+outgoing_send(send_par);
+}
+else {
+Text_Buf text_buf;
+prepare_message(text_buf, "@SocketCAN_Types.SocketCAN_connect");
+send_par.encode_text(text_buf);
+send_data(text_buf, destination_component);
+}
+}
+
+void SocketCAN__PT::send(const SocketCAN__Types::SocketCAN__connect& send_par, FLOAT* timestamp_redirect)
+{
+send(send_par, COMPONENT(get_default_destination()), timestamp_redirect);
+}
+
+void SocketCAN__PT::send(const SocketCAN__Types::SocketCAN__connect_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect)
+{
+const SocketCAN__Types::SocketCAN__connect& send_par_value = SocketCAN__Types::SocketCAN__connect(send_par.valueof());
+send(send_par_value, destination_component, timestamp_redirect);
+}
+
+void SocketCAN__PT::send(const SocketCAN__Types::SocketCAN__connect_template& send_par, FLOAT* timestamp_redirect)
+{
+const SocketCAN__Types::SocketCAN__connect& send_par_value = SocketCAN__Types::SocketCAN__connect(send_par.valueof());
+send(send_par_value, COMPONENT(get_default_destination()), timestamp_redirect);
+}
+
+void SocketCAN__PT::send(const SocketCAN__Types::SocketCAN__bind& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect)
+{
+if (!is_started) TTCN_error("Sending a message on port %s, which is not started.", port_name);
+if (!destination_component.is_bound()) TTCN_error("Unbound component reference in the to clause of send operation.");
+const TTCN_Logger::Severity log_sev = destination_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMSEND:TTCN_Logger::PORTEVENT_MCSEND;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_send(port_name, destination_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), TTCN_Logger::log_event_str(" @SocketCAN_Types.SocketCAN_bind : "),
+send_par.log(), TTCN_Logger::end_event_log2str()));
+}
+if (destination_component == SYSTEM_COMPREF) {
+(void)get_default_destination();
+outgoing_send(send_par);
+}
+else {
+Text_Buf text_buf;
+prepare_message(text_buf, "@SocketCAN_Types.SocketCAN_bind");
+send_par.encode_text(text_buf);
+send_data(text_buf, destination_component);
+}
+}
+
+void SocketCAN__PT::send(const SocketCAN__Types::SocketCAN__bind& send_par, FLOAT* timestamp_redirect)
+{
+send(send_par, COMPONENT(get_default_destination()), timestamp_redirect);
+}
+
+void SocketCAN__PT::send(const SocketCAN__Types::SocketCAN__bind_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect)
+{
+const SocketCAN__Types::SocketCAN__bind& send_par_value = SocketCAN__Types::SocketCAN__bind(send_par.valueof());
+send(send_par_value, destination_component, timestamp_redirect);
+}
+
+void SocketCAN__PT::send(const SocketCAN__Types::SocketCAN__bind_template& send_par, FLOAT* timestamp_redirect)
+{
+const SocketCAN__Types::SocketCAN__bind& send_par_value = SocketCAN__Types::SocketCAN__bind(send_par.valueof());
+send(send_par_value, COMPONENT(get_default_destination()), timestamp_redirect);
+}
+
+void SocketCAN__PT::send(const SocketCAN__Types::SocketCAN__send__data& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect)
+{
+if (!is_started) TTCN_error("Sending a message on port %s, which is not started.", port_name);
+if (!destination_component.is_bound()) TTCN_error("Unbound component reference in the to clause of send operation.");
+const TTCN_Logger::Severity log_sev = destination_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMSEND:TTCN_Logger::PORTEVENT_MCSEND;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_send(port_name, destination_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), TTCN_Logger::log_event_str(" @SocketCAN_Types.SocketCAN_send_data : "),
+send_par.log(), TTCN_Logger::end_event_log2str()));
+}
+if (destination_component == SYSTEM_COMPREF) {
+(void)get_default_destination();
+outgoing_send(send_par);
+}
+else {
+Text_Buf text_buf;
+prepare_message(text_buf, "@SocketCAN_Types.SocketCAN_send_data");
+send_par.encode_text(text_buf);
+send_data(text_buf, destination_component);
+}
+}
+
+void SocketCAN__PT::send(const SocketCAN__Types::SocketCAN__send__data& send_par, FLOAT* timestamp_redirect)
+{
+send(send_par, COMPONENT(get_default_destination()), timestamp_redirect);
+}
+
+void SocketCAN__PT::send(const SocketCAN__Types::SocketCAN__send__data_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect)
+{
+const SocketCAN__Types::SocketCAN__send__data& send_par_value = SocketCAN__Types::SocketCAN__send__data(send_par.valueof());
+send(send_par_value, destination_component, timestamp_redirect);
+}
+
+void SocketCAN__PT::send(const SocketCAN__Types::SocketCAN__send__data_template& send_par, FLOAT* timestamp_redirect)
+{
+const SocketCAN__Types::SocketCAN__send__data& send_par_value = SocketCAN__Types::SocketCAN__send__data(send_par.valueof());
+send(send_par_value, COMPONENT(get_default_destination()), timestamp_redirect);
+}
+
+void SocketCAN__PT::send(const SocketCAN__Types::SocketCAN__write__data& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect)
+{
+if (!is_started) TTCN_error("Sending a message on port %s, which is not started.", port_name);
+if (!destination_component.is_bound()) TTCN_error("Unbound component reference in the to clause of send operation.");
+const TTCN_Logger::Severity log_sev = destination_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMSEND:TTCN_Logger::PORTEVENT_MCSEND;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_send(port_name, destination_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), TTCN_Logger::log_event_str(" @SocketCAN_Types.SocketCAN_write_data : "),
+send_par.log(), TTCN_Logger::end_event_log2str()));
+}
+if (destination_component == SYSTEM_COMPREF) {
+(void)get_default_destination();
+outgoing_send(send_par);
+}
+else {
+Text_Buf text_buf;
+prepare_message(text_buf, "@SocketCAN_Types.SocketCAN_write_data");
+send_par.encode_text(text_buf);
+send_data(text_buf, destination_component);
+}
+}
+
+void SocketCAN__PT::send(const SocketCAN__Types::SocketCAN__write__data& send_par, FLOAT* timestamp_redirect)
+{
+send(send_par, COMPONENT(get_default_destination()), timestamp_redirect);
+}
+
+void SocketCAN__PT::send(const SocketCAN__Types::SocketCAN__write__data_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect)
+{
+const SocketCAN__Types::SocketCAN__write__data& send_par_value = SocketCAN__Types::SocketCAN__write__data(send_par.valueof());
+send(send_par_value, destination_component, timestamp_redirect);
+}
+
+void SocketCAN__PT::send(const SocketCAN__Types::SocketCAN__write__data_template& send_par, FLOAT* timestamp_redirect)
+{
+const SocketCAN__Types::SocketCAN__write__data& send_par_value = SocketCAN__Types::SocketCAN__write__data(send_par.valueof());
+send(send_par_value, COMPONENT(get_default_destination()), timestamp_redirect);
+}
+
+void SocketCAN__PT::send(const SocketCAN__Types::SocketCAN__write__isotp& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect)
+{
+if (!is_started) TTCN_error("Sending a message on port %s, which is not started.", port_name);
+if (!destination_component.is_bound()) TTCN_error("Unbound component reference in the to clause of send operation.");
+const TTCN_Logger::Severity log_sev = destination_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMSEND:TTCN_Logger::PORTEVENT_MCSEND;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_send(port_name, destination_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), TTCN_Logger::log_event_str(" @SocketCAN_Types.SocketCAN_write_isotp : "),
+send_par.log(), TTCN_Logger::end_event_log2str()));
+}
+if (destination_component == SYSTEM_COMPREF) {
+(void)get_default_destination();
+outgoing_send(send_par);
+}
+else {
+Text_Buf text_buf;
+prepare_message(text_buf, "@SocketCAN_Types.SocketCAN_write_isotp");
+send_par.encode_text(text_buf);
+send_data(text_buf, destination_component);
+}
+}
+
+void SocketCAN__PT::send(const SocketCAN__Types::SocketCAN__write__isotp& send_par, FLOAT* timestamp_redirect)
+{
+send(send_par, COMPONENT(get_default_destination()), timestamp_redirect);
+}
+
+void SocketCAN__PT::send(const SocketCAN__Types::SocketCAN__write__isotp_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect)
+{
+const SocketCAN__Types::SocketCAN__write__isotp& send_par_value = SocketCAN__Types::SocketCAN__write__isotp(send_par.valueof());
+send(send_par_value, destination_component, timestamp_redirect);
+}
+
+void SocketCAN__PT::send(const SocketCAN__Types::SocketCAN__write__isotp_template& send_par, FLOAT* timestamp_redirect)
+{
+const SocketCAN__Types::SocketCAN__write__isotp& send_par_value = SocketCAN__Types::SocketCAN__write__isotp(send_par.valueof());
+send(send_par_value, COMPONENT(get_default_destination()), timestamp_redirect);
+}
+
+void SocketCAN__PT::send(const SocketCAN__Types::SocketCAN__setsockopt& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect)
+{
+if (!is_started) TTCN_error("Sending a message on port %s, which is not started.", port_name);
+if (!destination_component.is_bound()) TTCN_error("Unbound component reference in the to clause of send operation.");
+const TTCN_Logger::Severity log_sev = destination_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMSEND:TTCN_Logger::PORTEVENT_MCSEND;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_send(port_name, destination_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), TTCN_Logger::log_event_str(" @SocketCAN_Types.SocketCAN_setsockopt : "),
+send_par.log(), TTCN_Logger::end_event_log2str()));
+}
+if (destination_component == SYSTEM_COMPREF) {
+(void)get_default_destination();
+outgoing_send(send_par);
+}
+else {
+Text_Buf text_buf;
+prepare_message(text_buf, "@SocketCAN_Types.SocketCAN_setsockopt");
+send_par.encode_text(text_buf);
+send_data(text_buf, destination_component);
+}
+}
+
+void SocketCAN__PT::send(const SocketCAN__Types::SocketCAN__setsockopt& send_par, FLOAT* timestamp_redirect)
+{
+send(send_par, COMPONENT(get_default_destination()), timestamp_redirect);
+}
+
+void SocketCAN__PT::send(const SocketCAN__Types::SocketCAN__setsockopt_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect)
+{
+const SocketCAN__Types::SocketCAN__setsockopt& send_par_value = SocketCAN__Types::SocketCAN__setsockopt(send_par.valueof());
+send(send_par_value, destination_component, timestamp_redirect);
+}
+
+void SocketCAN__PT::send(const SocketCAN__Types::SocketCAN__setsockopt_template& send_par, FLOAT* timestamp_redirect)
+{
+const SocketCAN__Types::SocketCAN__setsockopt& send_par_value = SocketCAN__Types::SocketCAN__setsockopt(send_par.valueof());
+send(send_par_value, COMPONENT(get_default_destination()), timestamp_redirect);
+}
+
+void SocketCAN__PT::send(const SocketCAN__Types::SocketCAN__close& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect)
+{
+if (!is_started) TTCN_error("Sending a message on port %s, which is not started.", port_name);
+if (!destination_component.is_bound()) TTCN_error("Unbound component reference in the to clause of send operation.");
+const TTCN_Logger::Severity log_sev = destination_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMSEND:TTCN_Logger::PORTEVENT_MCSEND;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_send(port_name, destination_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), TTCN_Logger::log_event_str(" @SocketCAN_Types.SocketCAN_close : "),
+send_par.log(), TTCN_Logger::end_event_log2str()));
+}
+if (destination_component == SYSTEM_COMPREF) {
+(void)get_default_destination();
+outgoing_send(send_par);
+}
+else {
+Text_Buf text_buf;
+prepare_message(text_buf, "@SocketCAN_Types.SocketCAN_close");
+send_par.encode_text(text_buf);
+send_data(text_buf, destination_component);
+}
+}
+
+void SocketCAN__PT::send(const SocketCAN__Types::SocketCAN__close& send_par, FLOAT* timestamp_redirect)
+{
+send(send_par, COMPONENT(get_default_destination()), timestamp_redirect);
+}
+
+void SocketCAN__PT::send(const SocketCAN__Types::SocketCAN__close_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect)
+{
+const SocketCAN__Types::SocketCAN__close& send_par_value = SocketCAN__Types::SocketCAN__close(send_par.valueof());
+send(send_par_value, destination_component, timestamp_redirect);
+}
+
+void SocketCAN__PT::send(const SocketCAN__Types::SocketCAN__close_template& send_par, FLOAT* timestamp_redirect)
+{
+const SocketCAN__Types::SocketCAN__close& send_par_value = SocketCAN__Types::SocketCAN__close(send_par.valueof());
+send(send_par_value, COMPONENT(get_default_destination()), timestamp_redirect);
+}
+
+void SocketCAN__PT::add_port(PORT* p)
+{
+++n_mapped_ports;
+mapped_ports = static_cast<PORT**>(Realloc(mapped_ports, n_mapped_ports * sizeof(PORT*)));
+mapped_ports[n_mapped_ports - 1] = p;
+}
+
+void SocketCAN__PT::remove_port(PORT* p)
+{
+size_t new_size = n_mapped_ports;
+for (size_t i = 0; i < n_mapped_ports; ++i) {
+if (mapped_ports[i] == p) {
+mapped_ports[i] = NULL;
+--new_size;
+}
+}
+if (new_size != n_mapped_ports) {
+PORT** new_list = static_cast<PORT**>(Malloc(new_size * sizeof(PORT*)));
+for (size_t i = 0, j = 0; i < n_mapped_ports; ++i) {
+if (mapped_ports[i] != NULL) {
+new_list[j] = mapped_ports[i];
+++j;
+}
+}
+Free(mapped_ports);
+mapped_ports = new_list;
+n_mapped_ports = new_size;
+}
+}
+
+void SocketCAN__PT::reset_port_variables()
+{
+Free(mapped_ports);
+mapped_ports = NULL;
+n_mapped_ports = 0;
+}
+
+void SocketCAN__PT::outgoing_public_send(const SocketCAN__Types::SocketCAN__socket& send_par) {
+outgoing_send(send_par);
+}
+
+void SocketCAN__PT::outgoing_public_send(const SocketCAN__Types::SocketCAN__ioctl& send_par) {
+outgoing_send(send_par);
+}
+
+void SocketCAN__PT::outgoing_public_send(const SocketCAN__Types::SocketCAN__connect& send_par) {
+outgoing_send(send_par);
+}
+
+void SocketCAN__PT::outgoing_public_send(const SocketCAN__Types::SocketCAN__bind& send_par) {
+outgoing_send(send_par);
+}
+
+void SocketCAN__PT::outgoing_public_send(const SocketCAN__Types::SocketCAN__send__data& send_par) {
+outgoing_send(send_par);
+}
+
+void SocketCAN__PT::outgoing_public_send(const SocketCAN__Types::SocketCAN__write__data& send_par) {
+outgoing_send(send_par);
+}
+
+void SocketCAN__PT::outgoing_public_send(const SocketCAN__Types::SocketCAN__write__isotp& send_par) {
+outgoing_send(send_par);
+}
+
+void SocketCAN__PT::outgoing_public_send(const SocketCAN__Types::SocketCAN__setsockopt& send_par) {
+outgoing_send(send_par);
+}
+
+void SocketCAN__PT::outgoing_public_send(const SocketCAN__Types::SocketCAN__close& send_par) {
+outgoing_send(send_par);
+}
+
+alt_status SocketCAN__PT::receive(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s failed: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+return ALT_NO;
+} else {
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS, "Matching on port %s succeeded.", port_name);
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+switch (my_head->item_selection) {
+case MESSAGE_0:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_socket_result: "),
+my_head->message_0->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+case MESSAGE_1:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_ioctl_result: "),
+my_head->message_1->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+case MESSAGE_2:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_connect_result: "),
+my_head->message_2->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+case MESSAGE_3:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_bind_result: "),
+my_head->message_3->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+case MESSAGE_4:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_send_data_result: "),
+my_head->message_4->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+case MESSAGE_5:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_write_data_result: "),
+my_head->message_5->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+case MESSAGE_6:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_write_isotp_result: "),
+my_head->message_6->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+case MESSAGE_7:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame: "),
+my_head->message_7->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+case MESSAGE_8:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_receive_BCM_message: "),
+my_head->message_8->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+case MESSAGE_9:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_receive_isotp_pdu: "),
+my_head->message_9->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+case MESSAGE_10:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_setsockopt_result: "),
+my_head->message_10->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+default:
+TTCN_error("Internal error: unknown message");
+}
+}
+remove_msg_queue_head();
+return ALT_YES;
+}
+}
+
+alt_status SocketCAN__PT::check_receive(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s failed: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+return ALT_NO;
+} else {
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS, "Matching on port %s succeeded.", port_name);
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+switch (my_head->item_selection) {
+case MESSAGE_0:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::check__receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_socket_result: "),
+my_head->message_0->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+case MESSAGE_1:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::check__receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_ioctl_result: "),
+my_head->message_1->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+case MESSAGE_2:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::check__receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_connect_result: "),
+my_head->message_2->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+case MESSAGE_3:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::check__receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_bind_result: "),
+my_head->message_3->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+case MESSAGE_4:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::check__receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_send_data_result: "),
+my_head->message_4->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+case MESSAGE_5:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::check__receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_write_data_result: "),
+my_head->message_5->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+case MESSAGE_6:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::check__receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_write_isotp_result: "),
+my_head->message_6->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+case MESSAGE_7:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::check__receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame: "),
+my_head->message_7->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+case MESSAGE_8:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::check__receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_receive_BCM_message: "),
+my_head->message_8->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+case MESSAGE_9:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::check__receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_receive_isotp_pdu: "),
+my_head->message_9->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+case MESSAGE_10:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::check__receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_setsockopt_result: "),
+my_head->message_10->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+default:
+TTCN_error("Internal error: unknown message");
+}
+}
+return ALT_YES;
+}
+}
+
+alt_status SocketCAN__PT::trigger(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s will drop a message: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else {
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS, "Matching on port %s succeeded.", port_name);
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+switch (my_head->item_selection) {
+case MESSAGE_0:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::trigger__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_socket_result: "),
+my_head->message_0->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+case MESSAGE_1:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::trigger__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_ioctl_result: "),
+my_head->message_1->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+case MESSAGE_2:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::trigger__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_connect_result: "),
+my_head->message_2->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+case MESSAGE_3:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::trigger__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_bind_result: "),
+my_head->message_3->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+case MESSAGE_4:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::trigger__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_send_data_result: "),
+my_head->message_4->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+case MESSAGE_5:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::trigger__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_write_data_result: "),
+my_head->message_5->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+case MESSAGE_6:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::trigger__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_write_isotp_result: "),
+my_head->message_6->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+case MESSAGE_7:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::trigger__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame: "),
+my_head->message_7->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+case MESSAGE_8:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::trigger__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_receive_BCM_message: "),
+my_head->message_8->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+case MESSAGE_9:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::trigger__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_receive_isotp_pdu: "),
+my_head->message_9->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+case MESSAGE_10:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::trigger__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_setsockopt_result: "),
+my_head->message_10->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+default:
+TTCN_error("Internal error: unknown message");
+}
+}
+remove_msg_queue_head();
+return ALT_YES;
+}
+}
+
+alt_status SocketCAN__PT::receive(const SocketCAN__Types::SocketCAN__socket__result_template& value_template, SocketCAN__Types::SocketCAN__socket__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Receive operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s failed: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+return ALT_NO;
+} else if (my_head->item_selection != MESSAGE_0) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s failed: Type of the first message in the queue is not @SocketCAN_Types.SocketCAN_socket_result.", port_name);
+return ALT_NO;
+} else if (!value_template.match(*my_head->message_0)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_0),
+ TTCN_Logger::end_event_log2str()));
+}
+return ALT_NO;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_0;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_0),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_socket_result : "),
+my_head->message_0->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+remove_msg_queue_head();
+return ALT_YES;
+}
+}
+
+alt_status SocketCAN__PT::check_receive(const SocketCAN__Types::SocketCAN__socket__result_template& value_template, SocketCAN__Types::SocketCAN__socket__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Check-receive operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s failed: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+return ALT_NO;
+} else if (my_head->item_selection != MESSAGE_0) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s failed: Type of the first message in the queue is not @SocketCAN_Types.SocketCAN_socket_result.", port_name);
+return ALT_NO;
+} else if (!value_template.match(*my_head->message_0)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_0),
+ TTCN_Logger::end_event_log2str()));
+}
+return ALT_NO;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_0;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_0),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::check__receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_socket_result : "),
+my_head->message_0->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+return ALT_YES;
+}
+}
+
+alt_status SocketCAN__PT::trigger(const SocketCAN__Types::SocketCAN__socket__result_template& value_template, SocketCAN__Types::SocketCAN__socket__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Trigger operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s will drop a message: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else if (my_head->item_selection != MESSAGE_0) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s will drop a message: Type of the first message in the queue is not @SocketCAN_Types.SocketCAN_socket_result.", port_name);
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else if (!value_template.match(*my_head->message_0)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_0),
+ TTCN_Logger::end_event_log2str()));
+}
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_0;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_0),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::trigger__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_socket_result : "),
+my_head->message_0->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+remove_msg_queue_head();
+return ALT_YES;
+}
+}
+
+alt_status SocketCAN__PT::receive(const SocketCAN__Types::SocketCAN__ioctl__result_template& value_template, SocketCAN__Types::SocketCAN__ioctl__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Receive operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s failed: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+return ALT_NO;
+} else if (my_head->item_selection != MESSAGE_1) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s failed: Type of the first message in the queue is not @SocketCAN_Types.SocketCAN_ioctl_result.", port_name);
+return ALT_NO;
+} else if (!value_template.match(*my_head->message_1)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_1),
+ TTCN_Logger::end_event_log2str()));
+}
+return ALT_NO;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_1;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_1),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_ioctl_result : "),
+my_head->message_1->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+remove_msg_queue_head();
+return ALT_YES;
+}
+}
+
+alt_status SocketCAN__PT::check_receive(const SocketCAN__Types::SocketCAN__ioctl__result_template& value_template, SocketCAN__Types::SocketCAN__ioctl__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Check-receive operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s failed: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+return ALT_NO;
+} else if (my_head->item_selection != MESSAGE_1) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s failed: Type of the first message in the queue is not @SocketCAN_Types.SocketCAN_ioctl_result.", port_name);
+return ALT_NO;
+} else if (!value_template.match(*my_head->message_1)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_1),
+ TTCN_Logger::end_event_log2str()));
+}
+return ALT_NO;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_1;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_1),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::check__receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_ioctl_result : "),
+my_head->message_1->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+return ALT_YES;
+}
+}
+
+alt_status SocketCAN__PT::trigger(const SocketCAN__Types::SocketCAN__ioctl__result_template& value_template, SocketCAN__Types::SocketCAN__ioctl__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Trigger operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s will drop a message: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else if (my_head->item_selection != MESSAGE_1) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s will drop a message: Type of the first message in the queue is not @SocketCAN_Types.SocketCAN_ioctl_result.", port_name);
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else if (!value_template.match(*my_head->message_1)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_1),
+ TTCN_Logger::end_event_log2str()));
+}
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_1;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_1),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::trigger__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_ioctl_result : "),
+my_head->message_1->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+remove_msg_queue_head();
+return ALT_YES;
+}
+}
+
+alt_status SocketCAN__PT::receive(const SocketCAN__Types::SocketCAN__connect__result_template& value_template, SocketCAN__Types::SocketCAN__connect__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Receive operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s failed: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+return ALT_NO;
+} else if (my_head->item_selection != MESSAGE_2) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s failed: Type of the first message in the queue is not @SocketCAN_Types.SocketCAN_connect_result.", port_name);
+return ALT_NO;
+} else if (!value_template.match(*my_head->message_2)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_2),
+ TTCN_Logger::end_event_log2str()));
+}
+return ALT_NO;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_2;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_2),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_connect_result : "),
+my_head->message_2->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+remove_msg_queue_head();
+return ALT_YES;
+}
+}
+
+alt_status SocketCAN__PT::check_receive(const SocketCAN__Types::SocketCAN__connect__result_template& value_template, SocketCAN__Types::SocketCAN__connect__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Check-receive operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s failed: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+return ALT_NO;
+} else if (my_head->item_selection != MESSAGE_2) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s failed: Type of the first message in the queue is not @SocketCAN_Types.SocketCAN_connect_result.", port_name);
+return ALT_NO;
+} else if (!value_template.match(*my_head->message_2)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_2),
+ TTCN_Logger::end_event_log2str()));
+}
+return ALT_NO;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_2;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_2),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::check__receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_connect_result : "),
+my_head->message_2->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+return ALT_YES;
+}
+}
+
+alt_status SocketCAN__PT::trigger(const SocketCAN__Types::SocketCAN__connect__result_template& value_template, SocketCAN__Types::SocketCAN__connect__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Trigger operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s will drop a message: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else if (my_head->item_selection != MESSAGE_2) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s will drop a message: Type of the first message in the queue is not @SocketCAN_Types.SocketCAN_connect_result.", port_name);
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else if (!value_template.match(*my_head->message_2)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_2),
+ TTCN_Logger::end_event_log2str()));
+}
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_2;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_2),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::trigger__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_connect_result : "),
+my_head->message_2->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+remove_msg_queue_head();
+return ALT_YES;
+}
+}
+
+alt_status SocketCAN__PT::receive(const SocketCAN__Types::SocketCAN__bind__result_template& value_template, SocketCAN__Types::SocketCAN__bind__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Receive operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s failed: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+return ALT_NO;
+} else if (my_head->item_selection != MESSAGE_3) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s failed: Type of the first message in the queue is not @SocketCAN_Types.SocketCAN_bind_result.", port_name);
+return ALT_NO;
+} else if (!value_template.match(*my_head->message_3)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_3),
+ TTCN_Logger::end_event_log2str()));
+}
+return ALT_NO;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_3;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_3),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_bind_result : "),
+my_head->message_3->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+remove_msg_queue_head();
+return ALT_YES;
+}
+}
+
+alt_status SocketCAN__PT::check_receive(const SocketCAN__Types::SocketCAN__bind__result_template& value_template, SocketCAN__Types::SocketCAN__bind__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Check-receive operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s failed: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+return ALT_NO;
+} else if (my_head->item_selection != MESSAGE_3) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s failed: Type of the first message in the queue is not @SocketCAN_Types.SocketCAN_bind_result.", port_name);
+return ALT_NO;
+} else if (!value_template.match(*my_head->message_3)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_3),
+ TTCN_Logger::end_event_log2str()));
+}
+return ALT_NO;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_3;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_3),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::check__receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_bind_result : "),
+my_head->message_3->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+return ALT_YES;
+}
+}
+
+alt_status SocketCAN__PT::trigger(const SocketCAN__Types::SocketCAN__bind__result_template& value_template, SocketCAN__Types::SocketCAN__bind__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Trigger operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s will drop a message: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else if (my_head->item_selection != MESSAGE_3) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s will drop a message: Type of the first message in the queue is not @SocketCAN_Types.SocketCAN_bind_result.", port_name);
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else if (!value_template.match(*my_head->message_3)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_3),
+ TTCN_Logger::end_event_log2str()));
+}
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_3;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_3),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::trigger__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_bind_result : "),
+my_head->message_3->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+remove_msg_queue_head();
+return ALT_YES;
+}
+}
+
+alt_status SocketCAN__PT::receive(const SocketCAN__Types::SocketCAN__send__data__result_template& value_template, SocketCAN__Types::SocketCAN__send__data__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Receive operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s failed: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+return ALT_NO;
+} else if (my_head->item_selection != MESSAGE_4) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s failed: Type of the first message in the queue is not @SocketCAN_Types.SocketCAN_send_data_result.", port_name);
+return ALT_NO;
+} else if (!value_template.match(*my_head->message_4)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_4),
+ TTCN_Logger::end_event_log2str()));
+}
+return ALT_NO;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_4;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_4),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_send_data_result : "),
+my_head->message_4->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+remove_msg_queue_head();
+return ALT_YES;
+}
+}
+
+alt_status SocketCAN__PT::check_receive(const SocketCAN__Types::SocketCAN__send__data__result_template& value_template, SocketCAN__Types::SocketCAN__send__data__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Check-receive operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s failed: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+return ALT_NO;
+} else if (my_head->item_selection != MESSAGE_4) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s failed: Type of the first message in the queue is not @SocketCAN_Types.SocketCAN_send_data_result.", port_name);
+return ALT_NO;
+} else if (!value_template.match(*my_head->message_4)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_4),
+ TTCN_Logger::end_event_log2str()));
+}
+return ALT_NO;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_4;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_4),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::check__receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_send_data_result : "),
+my_head->message_4->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+return ALT_YES;
+}
+}
+
+alt_status SocketCAN__PT::trigger(const SocketCAN__Types::SocketCAN__send__data__result_template& value_template, SocketCAN__Types::SocketCAN__send__data__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Trigger operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s will drop a message: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else if (my_head->item_selection != MESSAGE_4) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s will drop a message: Type of the first message in the queue is not @SocketCAN_Types.SocketCAN_send_data_result.", port_name);
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else if (!value_template.match(*my_head->message_4)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_4),
+ TTCN_Logger::end_event_log2str()));
+}
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_4;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_4),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::trigger__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_send_data_result : "),
+my_head->message_4->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+remove_msg_queue_head();
+return ALT_YES;
+}
+}
+
+alt_status SocketCAN__PT::receive(const SocketCAN__Types::SocketCAN__write__data__result_template& value_template, SocketCAN__Types::SocketCAN__write__data__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Receive operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s failed: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+return ALT_NO;
+} else if (my_head->item_selection != MESSAGE_5) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s failed: Type of the first message in the queue is not @SocketCAN_Types.SocketCAN_write_data_result.", port_name);
+return ALT_NO;
+} else if (!value_template.match(*my_head->message_5)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_5),
+ TTCN_Logger::end_event_log2str()));
+}
+return ALT_NO;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_5;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_5),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_write_data_result : "),
+my_head->message_5->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+remove_msg_queue_head();
+return ALT_YES;
+}
+}
+
+alt_status SocketCAN__PT::check_receive(const SocketCAN__Types::SocketCAN__write__data__result_template& value_template, SocketCAN__Types::SocketCAN__write__data__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Check-receive operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s failed: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+return ALT_NO;
+} else if (my_head->item_selection != MESSAGE_5) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s failed: Type of the first message in the queue is not @SocketCAN_Types.SocketCAN_write_data_result.", port_name);
+return ALT_NO;
+} else if (!value_template.match(*my_head->message_5)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_5),
+ TTCN_Logger::end_event_log2str()));
+}
+return ALT_NO;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_5;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_5),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::check__receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_write_data_result : "),
+my_head->message_5->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+return ALT_YES;
+}
+}
+
+alt_status SocketCAN__PT::trigger(const SocketCAN__Types::SocketCAN__write__data__result_template& value_template, SocketCAN__Types::SocketCAN__write__data__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Trigger operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s will drop a message: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else if (my_head->item_selection != MESSAGE_5) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s will drop a message: Type of the first message in the queue is not @SocketCAN_Types.SocketCAN_write_data_result.", port_name);
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else if (!value_template.match(*my_head->message_5)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_5),
+ TTCN_Logger::end_event_log2str()));
+}
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_5;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_5),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::trigger__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_write_data_result : "),
+my_head->message_5->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+remove_msg_queue_head();
+return ALT_YES;
+}
+}
+
+alt_status SocketCAN__PT::receive(const SocketCAN__Types::SocketCAN__write__isotp__result_template& value_template, SocketCAN__Types::SocketCAN__write__isotp__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Receive operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s failed: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+return ALT_NO;
+} else if (my_head->item_selection != MESSAGE_6) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s failed: Type of the first message in the queue is not @SocketCAN_Types.SocketCAN_write_isotp_result.", port_name);
+return ALT_NO;
+} else if (!value_template.match(*my_head->message_6)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_6),
+ TTCN_Logger::end_event_log2str()));
+}
+return ALT_NO;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_6;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_6),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_write_isotp_result : "),
+my_head->message_6->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+remove_msg_queue_head();
+return ALT_YES;
+}
+}
+
+alt_status SocketCAN__PT::check_receive(const SocketCAN__Types::SocketCAN__write__isotp__result_template& value_template, SocketCAN__Types::SocketCAN__write__isotp__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Check-receive operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s failed: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+return ALT_NO;
+} else if (my_head->item_selection != MESSAGE_6) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s failed: Type of the first message in the queue is not @SocketCAN_Types.SocketCAN_write_isotp_result.", port_name);
+return ALT_NO;
+} else if (!value_template.match(*my_head->message_6)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_6),
+ TTCN_Logger::end_event_log2str()));
+}
+return ALT_NO;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_6;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_6),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::check__receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_write_isotp_result : "),
+my_head->message_6->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+return ALT_YES;
+}
+}
+
+alt_status SocketCAN__PT::trigger(const SocketCAN__Types::SocketCAN__write__isotp__result_template& value_template, SocketCAN__Types::SocketCAN__write__isotp__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Trigger operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s will drop a message: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else if (my_head->item_selection != MESSAGE_6) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s will drop a message: Type of the first message in the queue is not @SocketCAN_Types.SocketCAN_write_isotp_result.", port_name);
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else if (!value_template.match(*my_head->message_6)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_6),
+ TTCN_Logger::end_event_log2str()));
+}
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_6;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_6),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::trigger__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_write_isotp_result : "),
+my_head->message_6->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+remove_msg_queue_head();
+return ALT_YES;
+}
+}
+
+alt_status SocketCAN__PT::receive(const SocketCAN__Types::SocketCAN__receive__CAN__or__CAN__FD__frame_template& value_template, SocketCAN__Types::SocketCAN__receive__CAN__or__CAN__FD__frame *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Receive operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s failed: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+return ALT_NO;
+} else if (my_head->item_selection != MESSAGE_7) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s failed: Type of the first message in the queue is not @SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame.", port_name);
+return ALT_NO;
+} else if (!value_template.match(*my_head->message_7)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_7),
+ TTCN_Logger::end_event_log2str()));
+}
+return ALT_NO;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_7;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_7),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame : "),
+my_head->message_7->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+remove_msg_queue_head();
+return ALT_YES;
+}
+}
+
+alt_status SocketCAN__PT::check_receive(const SocketCAN__Types::SocketCAN__receive__CAN__or__CAN__FD__frame_template& value_template, SocketCAN__Types::SocketCAN__receive__CAN__or__CAN__FD__frame *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Check-receive operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s failed: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+return ALT_NO;
+} else if (my_head->item_selection != MESSAGE_7) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s failed: Type of the first message in the queue is not @SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame.", port_name);
+return ALT_NO;
+} else if (!value_template.match(*my_head->message_7)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_7),
+ TTCN_Logger::end_event_log2str()));
+}
+return ALT_NO;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_7;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_7),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::check__receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame : "),
+my_head->message_7->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+return ALT_YES;
+}
+}
+
+alt_status SocketCAN__PT::trigger(const SocketCAN__Types::SocketCAN__receive__CAN__or__CAN__FD__frame_template& value_template, SocketCAN__Types::SocketCAN__receive__CAN__or__CAN__FD__frame *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Trigger operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s will drop a message: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else if (my_head->item_selection != MESSAGE_7) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s will drop a message: Type of the first message in the queue is not @SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame.", port_name);
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else if (!value_template.match(*my_head->message_7)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_7),
+ TTCN_Logger::end_event_log2str()));
+}
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_7;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_7),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::trigger__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame : "),
+my_head->message_7->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+remove_msg_queue_head();
+return ALT_YES;
+}
+}
+
+alt_status SocketCAN__PT::receive(const SocketCAN__Types::SocketCAN__receive__BCM__message_template& value_template, SocketCAN__Types::SocketCAN__receive__BCM__message *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Receive operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s failed: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+return ALT_NO;
+} else if (my_head->item_selection != MESSAGE_8) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s failed: Type of the first message in the queue is not @SocketCAN_Types.SocketCAN_receive_BCM_message.", port_name);
+return ALT_NO;
+} else if (!value_template.match(*my_head->message_8)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_8),
+ TTCN_Logger::end_event_log2str()));
+}
+return ALT_NO;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_8;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_8),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_receive_BCM_message : "),
+my_head->message_8->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+remove_msg_queue_head();
+return ALT_YES;
+}
+}
+
+alt_status SocketCAN__PT::check_receive(const SocketCAN__Types::SocketCAN__receive__BCM__message_template& value_template, SocketCAN__Types::SocketCAN__receive__BCM__message *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Check-receive operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s failed: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+return ALT_NO;
+} else if (my_head->item_selection != MESSAGE_8) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s failed: Type of the first message in the queue is not @SocketCAN_Types.SocketCAN_receive_BCM_message.", port_name);
+return ALT_NO;
+} else if (!value_template.match(*my_head->message_8)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_8),
+ TTCN_Logger::end_event_log2str()));
+}
+return ALT_NO;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_8;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_8),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::check__receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_receive_BCM_message : "),
+my_head->message_8->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+return ALT_YES;
+}
+}
+
+alt_status SocketCAN__PT::trigger(const SocketCAN__Types::SocketCAN__receive__BCM__message_template& value_template, SocketCAN__Types::SocketCAN__receive__BCM__message *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Trigger operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s will drop a message: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else if (my_head->item_selection != MESSAGE_8) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s will drop a message: Type of the first message in the queue is not @SocketCAN_Types.SocketCAN_receive_BCM_message.", port_name);
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else if (!value_template.match(*my_head->message_8)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_8),
+ TTCN_Logger::end_event_log2str()));
+}
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_8;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_8),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::trigger__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_receive_BCM_message : "),
+my_head->message_8->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+remove_msg_queue_head();
+return ALT_YES;
+}
+}
+
+alt_status SocketCAN__PT::receive(const SocketCAN__Types::SocketCAN__receive__isotp__pdu_template& value_template, SocketCAN__Types::SocketCAN__receive__isotp__pdu *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Receive operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s failed: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+return ALT_NO;
+} else if (my_head->item_selection != MESSAGE_9) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s failed: Type of the first message in the queue is not @SocketCAN_Types.SocketCAN_receive_isotp_pdu.", port_name);
+return ALT_NO;
+} else if (!value_template.match(*my_head->message_9)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_9),
+ TTCN_Logger::end_event_log2str()));
+}
+return ALT_NO;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_9;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_9),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_receive_isotp_pdu : "),
+my_head->message_9->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+remove_msg_queue_head();
+return ALT_YES;
+}
+}
+
+alt_status SocketCAN__PT::check_receive(const SocketCAN__Types::SocketCAN__receive__isotp__pdu_template& value_template, SocketCAN__Types::SocketCAN__receive__isotp__pdu *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Check-receive operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s failed: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+return ALT_NO;
+} else if (my_head->item_selection != MESSAGE_9) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s failed: Type of the first message in the queue is not @SocketCAN_Types.SocketCAN_receive_isotp_pdu.", port_name);
+return ALT_NO;
+} else if (!value_template.match(*my_head->message_9)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_9),
+ TTCN_Logger::end_event_log2str()));
+}
+return ALT_NO;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_9;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_9),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::check__receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_receive_isotp_pdu : "),
+my_head->message_9->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+return ALT_YES;
+}
+}
+
+alt_status SocketCAN__PT::trigger(const SocketCAN__Types::SocketCAN__receive__isotp__pdu_template& value_template, SocketCAN__Types::SocketCAN__receive__isotp__pdu *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Trigger operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s will drop a message: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else if (my_head->item_selection != MESSAGE_9) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s will drop a message: Type of the first message in the queue is not @SocketCAN_Types.SocketCAN_receive_isotp_pdu.", port_name);
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else if (!value_template.match(*my_head->message_9)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_9),
+ TTCN_Logger::end_event_log2str()));
+}
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_9;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_9),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::trigger__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_receive_isotp_pdu : "),
+my_head->message_9->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+remove_msg_queue_head();
+return ALT_YES;
+}
+}
+
+alt_status SocketCAN__PT::receive(const SocketCAN__Types::SocketCAN__setsockopt__result_template& value_template, SocketCAN__Types::SocketCAN__setsockopt__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Receive operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s failed: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+return ALT_NO;
+} else if (my_head->item_selection != MESSAGE_10) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s failed: Type of the first message in the queue is not @SocketCAN_Types.SocketCAN_setsockopt_result.", port_name);
+return ALT_NO;
+} else if (!value_template.match(*my_head->message_10)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_10),
+ TTCN_Logger::end_event_log2str()));
+}
+return ALT_NO;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_10;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_10),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_setsockopt_result : "),
+my_head->message_10->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+remove_msg_queue_head();
+return ALT_YES;
+}
+}
+
+alt_status SocketCAN__PT::check_receive(const SocketCAN__Types::SocketCAN__setsockopt__result_template& value_template, SocketCAN__Types::SocketCAN__setsockopt__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Check-receive operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s failed: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+return ALT_NO;
+} else if (my_head->item_selection != MESSAGE_10) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s failed: Type of the first message in the queue is not @SocketCAN_Types.SocketCAN_setsockopt_result.", port_name);
+return ALT_NO;
+} else if (!value_template.match(*my_head->message_10)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_10),
+ TTCN_Logger::end_event_log2str()));
+}
+return ALT_NO;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_10;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_10),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::check__receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_setsockopt_result : "),
+my_head->message_10->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+return ALT_YES;
+}
+}
+
+alt_status SocketCAN__PT::trigger(const SocketCAN__Types::SocketCAN__setsockopt__result_template& value_template, SocketCAN__Types::SocketCAN__setsockopt__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Trigger operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s will drop a message: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else if (my_head->item_selection != MESSAGE_10) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s will drop a message: Type of the first message in the queue is not @SocketCAN_Types.SocketCAN_setsockopt_result.", port_name);
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else if (!value_template.match(*my_head->message_10)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_10),
+ TTCN_Logger::end_event_log2str()));
+}
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_10;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_10),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::trigger__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCAN_Types.SocketCAN_setsockopt_result : "),
+my_head->message_10->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+remove_msg_queue_head();
+return ALT_YES;
+}
+}
+
+void SocketCAN__PT::incoming_message(const SocketCAN__Types::SocketCAN__socket__result& incoming_par, component sender_component)
+{
+for (size_t i = 0; i < n_mapped_ports; i++) {
+if (mapped_ports[i] != NULL && mapped_ports[i]->incoming_message_handler(&incoming_par, "@SocketCAN_Types.SocketCAN_socket_result", sender_component, FLOAT())) {
+return;
+}
+}
+if (!is_started) TTCN_error("Port %s is not started but a message has arrived on it.", port_name);
+msg_tail_count++;
+if (TTCN_Logger::log_this_event(TTCN_Logger::PORTEVENT_MQUEUE)) {
+TTCN_Logger::log_port_queue(TitanLoggerApiSimple::Port__Queue_operation::enqueue__msg, port_name, sender_component, msg_tail_count,
+CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(TTCN_Logger::PORTEVENT_MQUEUE, TRUE), TTCN_Logger::log_event_str(" @SocketCAN_Types.SocketCAN_socket_result : "), incoming_par.log(), TTCN_Logger::end_event_log2str()));
+}
+msg_queue_item *new_item = new msg_queue_item;
+new_item->item_selection = MESSAGE_0;
+new_item->message_0 = new SocketCAN__Types::SocketCAN__socket__result(incoming_par);
+new_item->sender_component = sender_component;
+append_to_msg_queue(new_item);
+}
+
+void SocketCAN__PT::incoming_message(const SocketCAN__Types::SocketCAN__ioctl__result& incoming_par, component sender_component)
+{
+for (size_t i = 0; i < n_mapped_ports; i++) {
+if (mapped_ports[i] != NULL && mapped_ports[i]->incoming_message_handler(&incoming_par, "@SocketCAN_Types.SocketCAN_ioctl_result", sender_component, FLOAT())) {
+return;
+}
+}
+if (!is_started) TTCN_error("Port %s is not started but a message has arrived on it.", port_name);
+msg_tail_count++;
+if (TTCN_Logger::log_this_event(TTCN_Logger::PORTEVENT_MQUEUE)) {
+TTCN_Logger::log_port_queue(TitanLoggerApiSimple::Port__Queue_operation::enqueue__msg, port_name, sender_component, msg_tail_count,
+CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(TTCN_Logger::PORTEVENT_MQUEUE, TRUE), TTCN_Logger::log_event_str(" @SocketCAN_Types.SocketCAN_ioctl_result : "), incoming_par.log(), TTCN_Logger::end_event_log2str()));
+}
+msg_queue_item *new_item = new msg_queue_item;
+new_item->item_selection = MESSAGE_1;
+new_item->message_1 = new SocketCAN__Types::SocketCAN__ioctl__result(incoming_par);
+new_item->sender_component = sender_component;
+append_to_msg_queue(new_item);
+}
+
+void SocketCAN__PT::incoming_message(const SocketCAN__Types::SocketCAN__connect__result& incoming_par, component sender_component)
+{
+for (size_t i = 0; i < n_mapped_ports; i++) {
+if (mapped_ports[i] != NULL && mapped_ports[i]->incoming_message_handler(&incoming_par, "@SocketCAN_Types.SocketCAN_connect_result", sender_component, FLOAT())) {
+return;
+}
+}
+if (!is_started) TTCN_error("Port %s is not started but a message has arrived on it.", port_name);
+msg_tail_count++;
+if (TTCN_Logger::log_this_event(TTCN_Logger::PORTEVENT_MQUEUE)) {
+TTCN_Logger::log_port_queue(TitanLoggerApiSimple::Port__Queue_operation::enqueue__msg, port_name, sender_component, msg_tail_count,
+CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(TTCN_Logger::PORTEVENT_MQUEUE, TRUE), TTCN_Logger::log_event_str(" @SocketCAN_Types.SocketCAN_connect_result : "), incoming_par.log(), TTCN_Logger::end_event_log2str()));
+}
+msg_queue_item *new_item = new msg_queue_item;
+new_item->item_selection = MESSAGE_2;
+new_item->message_2 = new SocketCAN__Types::SocketCAN__connect__result(incoming_par);
+new_item->sender_component = sender_component;
+append_to_msg_queue(new_item);
+}
+
+void SocketCAN__PT::incoming_message(const SocketCAN__Types::SocketCAN__bind__result& incoming_par, component sender_component)
+{
+for (size_t i = 0; i < n_mapped_ports; i++) {
+if (mapped_ports[i] != NULL && mapped_ports[i]->incoming_message_handler(&incoming_par, "@SocketCAN_Types.SocketCAN_bind_result", sender_component, FLOAT())) {
+return;
+}
+}
+if (!is_started) TTCN_error("Port %s is not started but a message has arrived on it.", port_name);
+msg_tail_count++;
+if (TTCN_Logger::log_this_event(TTCN_Logger::PORTEVENT_MQUEUE)) {
+TTCN_Logger::log_port_queue(TitanLoggerApiSimple::Port__Queue_operation::enqueue__msg, port_name, sender_component, msg_tail_count,
+CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(TTCN_Logger::PORTEVENT_MQUEUE, TRUE), TTCN_Logger::log_event_str(" @SocketCAN_Types.SocketCAN_bind_result : "), incoming_par.log(), TTCN_Logger::end_event_log2str()));
+}
+msg_queue_item *new_item = new msg_queue_item;
+new_item->item_selection = MESSAGE_3;
+new_item->message_3 = new SocketCAN__Types::SocketCAN__bind__result(incoming_par);
+new_item->sender_component = sender_component;
+append_to_msg_queue(new_item);
+}
+
+void SocketCAN__PT::incoming_message(const SocketCAN__Types::SocketCAN__send__data__result& incoming_par, component sender_component)
+{
+for (size_t i = 0; i < n_mapped_ports; i++) {
+if (mapped_ports[i] != NULL && mapped_ports[i]->incoming_message_handler(&incoming_par, "@SocketCAN_Types.SocketCAN_send_data_result", sender_component, FLOAT())) {
+return;
+}
+}
+if (!is_started) TTCN_error("Port %s is not started but a message has arrived on it.", port_name);
+msg_tail_count++;
+if (TTCN_Logger::log_this_event(TTCN_Logger::PORTEVENT_MQUEUE)) {
+TTCN_Logger::log_port_queue(TitanLoggerApiSimple::Port__Queue_operation::enqueue__msg, port_name, sender_component, msg_tail_count,
+CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(TTCN_Logger::PORTEVENT_MQUEUE, TRUE), TTCN_Logger::log_event_str(" @SocketCAN_Types.SocketCAN_send_data_result : "), incoming_par.log(), TTCN_Logger::end_event_log2str()));
+}
+msg_queue_item *new_item = new msg_queue_item;
+new_item->item_selection = MESSAGE_4;
+new_item->message_4 = new SocketCAN__Types::SocketCAN__send__data__result(incoming_par);
+new_item->sender_component = sender_component;
+append_to_msg_queue(new_item);
+}
+
+void SocketCAN__PT::incoming_message(const SocketCAN__Types::SocketCAN__write__data__result& incoming_par, component sender_component)
+{
+for (size_t i = 0; i < n_mapped_ports; i++) {
+if (mapped_ports[i] != NULL && mapped_ports[i]->incoming_message_handler(&incoming_par, "@SocketCAN_Types.SocketCAN_write_data_result", sender_component, FLOAT())) {
+return;
+}
+}
+if (!is_started) TTCN_error("Port %s is not started but a message has arrived on it.", port_name);
+msg_tail_count++;
+if (TTCN_Logger::log_this_event(TTCN_Logger::PORTEVENT_MQUEUE)) {
+TTCN_Logger::log_port_queue(TitanLoggerApiSimple::Port__Queue_operation::enqueue__msg, port_name, sender_component, msg_tail_count,
+CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(TTCN_Logger::PORTEVENT_MQUEUE, TRUE), TTCN_Logger::log_event_str(" @SocketCAN_Types.SocketCAN_write_data_result : "), incoming_par.log(), TTCN_Logger::end_event_log2str()));
+}
+msg_queue_item *new_item = new msg_queue_item;
+new_item->item_selection = MESSAGE_5;
+new_item->message_5 = new SocketCAN__Types::SocketCAN__write__data__result(incoming_par);
+new_item->sender_component = sender_component;
+append_to_msg_queue(new_item);
+}
+
+void SocketCAN__PT::incoming_message(const SocketCAN__Types::SocketCAN__write__isotp__result& incoming_par, component sender_component)
+{
+for (size_t i = 0; i < n_mapped_ports; i++) {
+if (mapped_ports[i] != NULL && mapped_ports[i]->incoming_message_handler(&incoming_par, "@SocketCAN_Types.SocketCAN_write_isotp_result", sender_component, FLOAT())) {
+return;
+}
+}
+if (!is_started) TTCN_error("Port %s is not started but a message has arrived on it.", port_name);
+msg_tail_count++;
+if (TTCN_Logger::log_this_event(TTCN_Logger::PORTEVENT_MQUEUE)) {
+TTCN_Logger::log_port_queue(TitanLoggerApiSimple::Port__Queue_operation::enqueue__msg, port_name, sender_component, msg_tail_count,
+CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(TTCN_Logger::PORTEVENT_MQUEUE, TRUE), TTCN_Logger::log_event_str(" @SocketCAN_Types.SocketCAN_write_isotp_result : "), incoming_par.log(), TTCN_Logger::end_event_log2str()));
+}
+msg_queue_item *new_item = new msg_queue_item;
+new_item->item_selection = MESSAGE_6;
+new_item->message_6 = new SocketCAN__Types::SocketCAN__write__isotp__result(incoming_par);
+new_item->sender_component = sender_component;
+append_to_msg_queue(new_item);
+}
+
+void SocketCAN__PT::incoming_message(const SocketCAN__Types::SocketCAN__receive__CAN__or__CAN__FD__frame& incoming_par, component sender_component)
+{
+for (size_t i = 0; i < n_mapped_ports; i++) {
+if (mapped_ports[i] != NULL && mapped_ports[i]->incoming_message_handler(&incoming_par, "@SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame", sender_component, FLOAT())) {
+return;
+}
+}
+if (!is_started) TTCN_error("Port %s is not started but a message has arrived on it.", port_name);
+msg_tail_count++;
+if (TTCN_Logger::log_this_event(TTCN_Logger::PORTEVENT_MQUEUE)) {
+TTCN_Logger::log_port_queue(TitanLoggerApiSimple::Port__Queue_operation::enqueue__msg, port_name, sender_component, msg_tail_count,
+CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(TTCN_Logger::PORTEVENT_MQUEUE, TRUE), TTCN_Logger::log_event_str(" @SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame : "), incoming_par.log(), TTCN_Logger::end_event_log2str()));
+}
+msg_queue_item *new_item = new msg_queue_item;
+new_item->item_selection = MESSAGE_7;
+new_item->message_7 = new SocketCAN__Types::SocketCAN__receive__CAN__or__CAN__FD__frame(incoming_par);
+new_item->sender_component = sender_component;
+append_to_msg_queue(new_item);
+}
+
+void SocketCAN__PT::incoming_message(const SocketCAN__Types::SocketCAN__receive__BCM__message& incoming_par, component sender_component)
+{
+for (size_t i = 0; i < n_mapped_ports; i++) {
+if (mapped_ports[i] != NULL && mapped_ports[i]->incoming_message_handler(&incoming_par, "@SocketCAN_Types.SocketCAN_receive_BCM_message", sender_component, FLOAT())) {
+return;
+}
+}
+if (!is_started) TTCN_error("Port %s is not started but a message has arrived on it.", port_name);
+msg_tail_count++;
+if (TTCN_Logger::log_this_event(TTCN_Logger::PORTEVENT_MQUEUE)) {
+TTCN_Logger::log_port_queue(TitanLoggerApiSimple::Port__Queue_operation::enqueue__msg, port_name, sender_component, msg_tail_count,
+CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(TTCN_Logger::PORTEVENT_MQUEUE, TRUE), TTCN_Logger::log_event_str(" @SocketCAN_Types.SocketCAN_receive_BCM_message : "), incoming_par.log(), TTCN_Logger::end_event_log2str()));
+}
+msg_queue_item *new_item = new msg_queue_item;
+new_item->item_selection = MESSAGE_8;
+new_item->message_8 = new SocketCAN__Types::SocketCAN__receive__BCM__message(incoming_par);
+new_item->sender_component = sender_component;
+append_to_msg_queue(new_item);
+}
+
+void SocketCAN__PT::incoming_message(const SocketCAN__Types::SocketCAN__receive__isotp__pdu& incoming_par, component sender_component)
+{
+for (size_t i = 0; i < n_mapped_ports; i++) {
+if (mapped_ports[i] != NULL && mapped_ports[i]->incoming_message_handler(&incoming_par, "@SocketCAN_Types.SocketCAN_receive_isotp_pdu", sender_component, FLOAT())) {
+return;
+}
+}
+if (!is_started) TTCN_error("Port %s is not started but a message has arrived on it.", port_name);
+msg_tail_count++;
+if (TTCN_Logger::log_this_event(TTCN_Logger::PORTEVENT_MQUEUE)) {
+TTCN_Logger::log_port_queue(TitanLoggerApiSimple::Port__Queue_operation::enqueue__msg, port_name, sender_component, msg_tail_count,
+CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(TTCN_Logger::PORTEVENT_MQUEUE, TRUE), TTCN_Logger::log_event_str(" @SocketCAN_Types.SocketCAN_receive_isotp_pdu : "), incoming_par.log(), TTCN_Logger::end_event_log2str()));
+}
+msg_queue_item *new_item = new msg_queue_item;
+new_item->item_selection = MESSAGE_9;
+new_item->message_9 = new SocketCAN__Types::SocketCAN__receive__isotp__pdu(incoming_par);
+new_item->sender_component = sender_component;
+append_to_msg_queue(new_item);
+}
+
+void SocketCAN__PT::incoming_message(const SocketCAN__Types::SocketCAN__setsockopt__result& incoming_par, component sender_component)
+{
+for (size_t i = 0; i < n_mapped_ports; i++) {
+if (mapped_ports[i] != NULL && mapped_ports[i]->incoming_message_handler(&incoming_par, "@SocketCAN_Types.SocketCAN_setsockopt_result", sender_component, FLOAT())) {
+return;
+}
+}
+if (!is_started) TTCN_error("Port %s is not started but a message has arrived on it.", port_name);
+msg_tail_count++;
+if (TTCN_Logger::log_this_event(TTCN_Logger::PORTEVENT_MQUEUE)) {
+TTCN_Logger::log_port_queue(TitanLoggerApiSimple::Port__Queue_operation::enqueue__msg, port_name, sender_component, msg_tail_count,
+CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(TTCN_Logger::PORTEVENT_MQUEUE, TRUE), TTCN_Logger::log_event_str(" @SocketCAN_Types.SocketCAN_setsockopt_result : "), incoming_par.log(), TTCN_Logger::end_event_log2str()));
+}
+msg_queue_item *new_item = new msg_queue_item;
+new_item->item_selection = MESSAGE_10;
+new_item->message_10 = new SocketCAN__Types::SocketCAN__setsockopt__result(incoming_par);
+new_item->sender_component = sender_component;
+append_to_msg_queue(new_item);
+}
+
+void SocketCAN__PT::incoming_message(const SocketCAN__Types::SocketCAN__socket__result& incoming_par)
+{
+incoming_message(incoming_par, SYSTEM_COMPREF);
+}
+
+void SocketCAN__PT::incoming_message(const SocketCAN__Types::SocketCAN__ioctl__result& incoming_par)
+{
+incoming_message(incoming_par, SYSTEM_COMPREF);
+}
+
+void SocketCAN__PT::incoming_message(const SocketCAN__Types::SocketCAN__connect__result& incoming_par)
+{
+incoming_message(incoming_par, SYSTEM_COMPREF);
+}
+
+void SocketCAN__PT::incoming_message(const SocketCAN__Types::SocketCAN__bind__result& incoming_par)
+{
+incoming_message(incoming_par, SYSTEM_COMPREF);
+}
+
+void SocketCAN__PT::incoming_message(const SocketCAN__Types::SocketCAN__send__data__result& incoming_par)
+{
+incoming_message(incoming_par, SYSTEM_COMPREF);
+}
+
+void SocketCAN__PT::incoming_message(const SocketCAN__Types::SocketCAN__write__data__result& incoming_par)
+{
+incoming_message(incoming_par, SYSTEM_COMPREF);
+}
+
+void SocketCAN__PT::incoming_message(const SocketCAN__Types::SocketCAN__write__isotp__result& incoming_par)
+{
+incoming_message(incoming_par, SYSTEM_COMPREF);
+}
+
+void SocketCAN__PT::incoming_message(const SocketCAN__Types::SocketCAN__receive__CAN__or__CAN__FD__frame& incoming_par)
+{
+incoming_message(incoming_par, SYSTEM_COMPREF);
+}
+
+void SocketCAN__PT::incoming_message(const SocketCAN__Types::SocketCAN__receive__BCM__message& incoming_par)
+{
+incoming_message(incoming_par, SYSTEM_COMPREF);
+}
+
+void SocketCAN__PT::incoming_message(const SocketCAN__Types::SocketCAN__receive__isotp__pdu& incoming_par)
+{
+incoming_message(incoming_par, SYSTEM_COMPREF);
+}
+
+void SocketCAN__PT::incoming_message(const SocketCAN__Types::SocketCAN__setsockopt__result& incoming_par)
+{
+incoming_message(incoming_par, SYSTEM_COMPREF);
+}
+
+boolean SocketCAN__PT::process_message(const char *message_type, Text_Buf& incoming_buf, component sender_component, OCTETSTRING&)
+{
+if (!strcmp(message_type, "@SocketCAN_Types.SocketCAN_socket_result")) {
+SocketCAN__Types::SocketCAN__socket__result incoming_par;
+incoming_par.decode_text(incoming_buf);
+incoming_message(incoming_par, sender_component);
+return TRUE;
+} else if (!strcmp(message_type, "@SocketCAN_Types.SocketCAN_ioctl_result")) {
+SocketCAN__Types::SocketCAN__ioctl__result incoming_par;
+incoming_par.decode_text(incoming_buf);
+incoming_message(incoming_par, sender_component);
+return TRUE;
+} else if (!strcmp(message_type, "@SocketCAN_Types.SocketCAN_connect_result")) {
+SocketCAN__Types::SocketCAN__connect__result incoming_par;
+incoming_par.decode_text(incoming_buf);
+incoming_message(incoming_par, sender_component);
+return TRUE;
+} else if (!strcmp(message_type, "@SocketCAN_Types.SocketCAN_bind_result")) {
+SocketCAN__Types::SocketCAN__bind__result incoming_par;
+incoming_par.decode_text(incoming_buf);
+incoming_message(incoming_par, sender_component);
+return TRUE;
+} else if (!strcmp(message_type, "@SocketCAN_Types.SocketCAN_send_data_result")) {
+SocketCAN__Types::SocketCAN__send__data__result incoming_par;
+incoming_par.decode_text(incoming_buf);
+incoming_message(incoming_par, sender_component);
+return TRUE;
+} else if (!strcmp(message_type, "@SocketCAN_Types.SocketCAN_write_data_result")) {
+SocketCAN__Types::SocketCAN__write__data__result incoming_par;
+incoming_par.decode_text(incoming_buf);
+incoming_message(incoming_par, sender_component);
+return TRUE;
+} else if (!strcmp(message_type, "@SocketCAN_Types.SocketCAN_write_isotp_result")) {
+SocketCAN__Types::SocketCAN__write__isotp__result incoming_par;
+incoming_par.decode_text(incoming_buf);
+incoming_message(incoming_par, sender_component);
+return TRUE;
+} else if (!strcmp(message_type, "@SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame")) {
+SocketCAN__Types::SocketCAN__receive__CAN__or__CAN__FD__frame incoming_par;
+incoming_par.decode_text(incoming_buf);
+incoming_message(incoming_par, sender_component);
+return TRUE;
+} else if (!strcmp(message_type, "@SocketCAN_Types.SocketCAN_receive_BCM_message")) {
+SocketCAN__Types::SocketCAN__receive__BCM__message incoming_par;
+incoming_par.decode_text(incoming_buf);
+incoming_message(incoming_par, sender_component);
+return TRUE;
+} else if (!strcmp(message_type, "@SocketCAN_Types.SocketCAN_receive_isotp_pdu")) {
+SocketCAN__Types::SocketCAN__receive__isotp__pdu incoming_par;
+incoming_par.decode_text(incoming_buf);
+incoming_message(incoming_par, sender_component);
+return TRUE;
+} else if (!strcmp(message_type, "@SocketCAN_Types.SocketCAN_setsockopt_result")) {
+SocketCAN__Types::SocketCAN__setsockopt__result incoming_par;
+incoming_par.decode_text(incoming_buf);
+incoming_message(incoming_par, sender_component);
+return TRUE;
+} else return FALSE;
+}
+
+
+/* Bodies of static functions */
+
+static void pre_init_module()
+{
+TTCN_Location current_location("../src/SocketCAN_PortType.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "SocketCAN_PortType");
+SocketCAN__Types::module_object.pre_init_module();
+}
+
+static void post_init_module()
+{
+TTCN_Location current_location("../src/SocketCAN_PortType.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "SocketCAN_PortType");
+SocketCAN__Types::module_object.post_init_module();
+}
+
+
+} /* end of namespace */
diff --git a/demo/SocketCAN_PortType.d b/demo/SocketCAN_PortType.d
new file mode 100644
index 0000000..fd84dd3
--- /dev/null
+++ b/demo/SocketCAN_PortType.d
@@ -0,0 +1,60 @@
+SocketCAN_PortType.o SocketCAN_PortType.d : SocketCAN_PortType.cc SocketCAN_PortType.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TTCN3.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/version.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/cversion.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Types.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Vector.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Error.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Basetype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Encdec.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RInt.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON_Tokenizer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Logger.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Template.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Integer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ttcn3float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Boolean.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Null.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Optional.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Param_Types.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/memory.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/BER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Textbuf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Parameters.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XmlReader.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Objid.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Verdicttype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Component.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Bitstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RAW.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/CharCoding.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Hexstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Octetstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Any.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Universal_charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Struct_of.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Array.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_CharacterString.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_External.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TEXT.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_EmbeddedPDV.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Addfunc.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Timer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Port.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Event_Handler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/TitanLoggerApiSimple.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/PreGenRecordOf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Module_list.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Snapshot.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Default.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Runtime.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/OER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Profiler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ProfilerTools.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Debugger.hh \
+ SocketCAN_Types.hh Bcm.hh Can.hh General_Types.hh Raw.hh \
+ ../src/SocketCAN_PT.hh SocketCAN_Types.hh
diff --git a/demo/SocketCAN_PortType.hh b/demo/SocketCAN_PortType.hh
new file mode 100644
index 0000000..528adac
--- /dev/null
+++ b/demo/SocketCAN_PortType.hh
@@ -0,0 +1,202 @@
+// This C++ header file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+#ifndef SocketCAN__PortType_HH
+#define SocketCAN__PortType_HH
+
+#ifdef TITAN_RUNTIME_2
+#error Generated code does not match with used runtime.\
+ Code was generated without -R option but -DTITAN_RUNTIME_2 was used.
+#endif
+
+/* Header file includes */
+
+#include <TTCN3.hh>
+#include "SocketCAN_Types.hh"
+#include "SocketCAN_PT.hh"
+
+#if TTCN3_VERSION != 60600
+#error Version mismatch detected.\
+ Please check the version of the TTCN-3 compiler and the base library.\
+ Run make clean and rebuild the project if the version of the compiler changed recently.
+#endif
+
+#ifndef LINUX
+#error This file should be compiled on LINUX
+#endif
+
+#undef SocketCAN__PortType_HH
+#endif
+
+namespace SocketCAN__PortType {
+
+/* Forward declarations of classes */
+
+class SocketCAN__PT;
+
+} /* end of namespace */
+
+#ifndef SocketCAN__PortType_HH
+#define SocketCAN__PortType_HH
+
+namespace SocketCAN__PortType {
+
+/* Class definitions */
+
+class SocketCAN__PT : public SocketCAN__PT_PROVIDER {
+enum msg_selection { MESSAGE_0, MESSAGE_1, MESSAGE_2, MESSAGE_3, MESSAGE_4, MESSAGE_5, MESSAGE_6, MESSAGE_7, MESSAGE_8, MESSAGE_9, MESSAGE_10 };
+struct msg_queue_item : public msg_queue_item_base {
+msg_selection item_selection;
+union {
+SocketCAN__Types::SocketCAN__socket__result *message_0;
+SocketCAN__Types::SocketCAN__ioctl__result *message_1;
+SocketCAN__Types::SocketCAN__connect__result *message_2;
+SocketCAN__Types::SocketCAN__bind__result *message_3;
+SocketCAN__Types::SocketCAN__send__data__result *message_4;
+SocketCAN__Types::SocketCAN__write__data__result *message_5;
+SocketCAN__Types::SocketCAN__write__isotp__result *message_6;
+SocketCAN__Types::SocketCAN__receive__CAN__or__CAN__FD__frame *message_7;
+SocketCAN__Types::SocketCAN__receive__BCM__message *message_8;
+SocketCAN__Types::SocketCAN__receive__isotp__pdu *message_9;
+SocketCAN__Types::SocketCAN__setsockopt__result *message_10;
+};
+component sender_component;
+};
+
+void remove_msg_queue_head();
+protected:
+void clear_queue();
+private:
+PORT** mapped_ports;
+size_t n_mapped_ports;
+public:
+SocketCAN__PT(const char *par_port_name = NULL);
+~SocketCAN__PT();
+void send(const SocketCAN__Types::SocketCAN__socket& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
+void send(const SocketCAN__Types::SocketCAN__socket& send_par, FLOAT* timestamp_redirect = NULL);
+void send(const SocketCAN__Types::SocketCAN__socket_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
+void send(const SocketCAN__Types::SocketCAN__socket_template& send_par, FLOAT* timestamp_redirect = NULL);
+void send(const SocketCAN__Types::SocketCAN__ioctl& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
+void send(const SocketCAN__Types::SocketCAN__ioctl& send_par, FLOAT* timestamp_redirect = NULL);
+void send(const SocketCAN__Types::SocketCAN__ioctl_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
+void send(const SocketCAN__Types::SocketCAN__ioctl_template& send_par, FLOAT* timestamp_redirect = NULL);
+void send(const SocketCAN__Types::SocketCAN__connect& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
+void send(const SocketCAN__Types::SocketCAN__connect& send_par, FLOAT* timestamp_redirect = NULL);
+void send(const SocketCAN__Types::SocketCAN__connect_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
+void send(const SocketCAN__Types::SocketCAN__connect_template& send_par, FLOAT* timestamp_redirect = NULL);
+void send(const SocketCAN__Types::SocketCAN__bind& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
+void send(const SocketCAN__Types::SocketCAN__bind& send_par, FLOAT* timestamp_redirect = NULL);
+void send(const SocketCAN__Types::SocketCAN__bind_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
+void send(const SocketCAN__Types::SocketCAN__bind_template& send_par, FLOAT* timestamp_redirect = NULL);
+void send(const SocketCAN__Types::SocketCAN__send__data& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
+void send(const SocketCAN__Types::SocketCAN__send__data& send_par, FLOAT* timestamp_redirect = NULL);
+void send(const SocketCAN__Types::SocketCAN__send__data_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
+void send(const SocketCAN__Types::SocketCAN__send__data_template& send_par, FLOAT* timestamp_redirect = NULL);
+void send(const SocketCAN__Types::SocketCAN__write__data& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
+void send(const SocketCAN__Types::SocketCAN__write__data& send_par, FLOAT* timestamp_redirect = NULL);
+void send(const SocketCAN__Types::SocketCAN__write__data_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
+void send(const SocketCAN__Types::SocketCAN__write__data_template& send_par, FLOAT* timestamp_redirect = NULL);
+void send(const SocketCAN__Types::SocketCAN__write__isotp& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
+void send(const SocketCAN__Types::SocketCAN__write__isotp& send_par, FLOAT* timestamp_redirect = NULL);
+void send(const SocketCAN__Types::SocketCAN__write__isotp_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
+void send(const SocketCAN__Types::SocketCAN__write__isotp_template& send_par, FLOAT* timestamp_redirect = NULL);
+void send(const SocketCAN__Types::SocketCAN__setsockopt& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
+void send(const SocketCAN__Types::SocketCAN__setsockopt& send_par, FLOAT* timestamp_redirect = NULL);
+void send(const SocketCAN__Types::SocketCAN__setsockopt_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
+void send(const SocketCAN__Types::SocketCAN__setsockopt_template& send_par, FLOAT* timestamp_redirect = NULL);
+void send(const SocketCAN__Types::SocketCAN__close& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
+void send(const SocketCAN__Types::SocketCAN__close& send_par, FLOAT* timestamp_redirect = NULL);
+void send(const SocketCAN__Types::SocketCAN__close_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
+void send(const SocketCAN__Types::SocketCAN__close_template& send_par, FLOAT* timestamp_redirect = NULL);
+public:
+void add_port(PORT* p);
+void remove_port(PORT* p);
+private:
+void reset_port_variables();
+public:
+void outgoing_public_send(const SocketCAN__Types::SocketCAN__socket& send_par);
+void outgoing_public_send(const SocketCAN__Types::SocketCAN__ioctl& send_par);
+void outgoing_public_send(const SocketCAN__Types::SocketCAN__connect& send_par);
+void outgoing_public_send(const SocketCAN__Types::SocketCAN__bind& send_par);
+void outgoing_public_send(const SocketCAN__Types::SocketCAN__send__data& send_par);
+void outgoing_public_send(const SocketCAN__Types::SocketCAN__write__data& send_par);
+void outgoing_public_send(const SocketCAN__Types::SocketCAN__write__isotp& send_par);
+void outgoing_public_send(const SocketCAN__Types::SocketCAN__setsockopt& send_par);
+void outgoing_public_send(const SocketCAN__Types::SocketCAN__close& send_par);
+alt_status receive(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status check_receive(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status trigger(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status receive(const SocketCAN__Types::SocketCAN__socket__result_template& value_template, SocketCAN__Types::SocketCAN__socket__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status check_receive(const SocketCAN__Types::SocketCAN__socket__result_template& value_template, SocketCAN__Types::SocketCAN__socket__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status trigger(const SocketCAN__Types::SocketCAN__socket__result_template& value_template, SocketCAN__Types::SocketCAN__socket__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status receive(const SocketCAN__Types::SocketCAN__ioctl__result_template& value_template, SocketCAN__Types::SocketCAN__ioctl__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status check_receive(const SocketCAN__Types::SocketCAN__ioctl__result_template& value_template, SocketCAN__Types::SocketCAN__ioctl__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status trigger(const SocketCAN__Types::SocketCAN__ioctl__result_template& value_template, SocketCAN__Types::SocketCAN__ioctl__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status receive(const SocketCAN__Types::SocketCAN__connect__result_template& value_template, SocketCAN__Types::SocketCAN__connect__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status check_receive(const SocketCAN__Types::SocketCAN__connect__result_template& value_template, SocketCAN__Types::SocketCAN__connect__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status trigger(const SocketCAN__Types::SocketCAN__connect__result_template& value_template, SocketCAN__Types::SocketCAN__connect__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status receive(const SocketCAN__Types::SocketCAN__bind__result_template& value_template, SocketCAN__Types::SocketCAN__bind__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status check_receive(const SocketCAN__Types::SocketCAN__bind__result_template& value_template, SocketCAN__Types::SocketCAN__bind__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status trigger(const SocketCAN__Types::SocketCAN__bind__result_template& value_template, SocketCAN__Types::SocketCAN__bind__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status receive(const SocketCAN__Types::SocketCAN__send__data__result_template& value_template, SocketCAN__Types::SocketCAN__send__data__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status check_receive(const SocketCAN__Types::SocketCAN__send__data__result_template& value_template, SocketCAN__Types::SocketCAN__send__data__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status trigger(const SocketCAN__Types::SocketCAN__send__data__result_template& value_template, SocketCAN__Types::SocketCAN__send__data__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status receive(const SocketCAN__Types::SocketCAN__write__data__result_template& value_template, SocketCAN__Types::SocketCAN__write__data__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status check_receive(const SocketCAN__Types::SocketCAN__write__data__result_template& value_template, SocketCAN__Types::SocketCAN__write__data__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status trigger(const SocketCAN__Types::SocketCAN__write__data__result_template& value_template, SocketCAN__Types::SocketCAN__write__data__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status receive(const SocketCAN__Types::SocketCAN__write__isotp__result_template& value_template, SocketCAN__Types::SocketCAN__write__isotp__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status check_receive(const SocketCAN__Types::SocketCAN__write__isotp__result_template& value_template, SocketCAN__Types::SocketCAN__write__isotp__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status trigger(const SocketCAN__Types::SocketCAN__write__isotp__result_template& value_template, SocketCAN__Types::SocketCAN__write__isotp__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status receive(const SocketCAN__Types::SocketCAN__receive__CAN__or__CAN__FD__frame_template& value_template, SocketCAN__Types::SocketCAN__receive__CAN__or__CAN__FD__frame *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status check_receive(const SocketCAN__Types::SocketCAN__receive__CAN__or__CAN__FD__frame_template& value_template, SocketCAN__Types::SocketCAN__receive__CAN__or__CAN__FD__frame *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status trigger(const SocketCAN__Types::SocketCAN__receive__CAN__or__CAN__FD__frame_template& value_template, SocketCAN__Types::SocketCAN__receive__CAN__or__CAN__FD__frame *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status receive(const SocketCAN__Types::SocketCAN__receive__BCM__message_template& value_template, SocketCAN__Types::SocketCAN__receive__BCM__message *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status check_receive(const SocketCAN__Types::SocketCAN__receive__BCM__message_template& value_template, SocketCAN__Types::SocketCAN__receive__BCM__message *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status trigger(const SocketCAN__Types::SocketCAN__receive__BCM__message_template& value_template, SocketCAN__Types::SocketCAN__receive__BCM__message *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status receive(const SocketCAN__Types::SocketCAN__receive__isotp__pdu_template& value_template, SocketCAN__Types::SocketCAN__receive__isotp__pdu *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status check_receive(const SocketCAN__Types::SocketCAN__receive__isotp__pdu_template& value_template, SocketCAN__Types::SocketCAN__receive__isotp__pdu *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status trigger(const SocketCAN__Types::SocketCAN__receive__isotp__pdu_template& value_template, SocketCAN__Types::SocketCAN__receive__isotp__pdu *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status receive(const SocketCAN__Types::SocketCAN__setsockopt__result_template& value_template, SocketCAN__Types::SocketCAN__setsockopt__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status check_receive(const SocketCAN__Types::SocketCAN__setsockopt__result_template& value_template, SocketCAN__Types::SocketCAN__setsockopt__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status trigger(const SocketCAN__Types::SocketCAN__setsockopt__result_template& value_template, SocketCAN__Types::SocketCAN__setsockopt__result *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+private:
+void incoming_message(const SocketCAN__Types::SocketCAN__socket__result& incoming_par, component sender_component);
+void incoming_message(const SocketCAN__Types::SocketCAN__ioctl__result& incoming_par, component sender_component);
+void incoming_message(const SocketCAN__Types::SocketCAN__connect__result& incoming_par, component sender_component);
+void incoming_message(const SocketCAN__Types::SocketCAN__bind__result& incoming_par, component sender_component);
+void incoming_message(const SocketCAN__Types::SocketCAN__send__data__result& incoming_par, component sender_component);
+void incoming_message(const SocketCAN__Types::SocketCAN__write__data__result& incoming_par, component sender_component);
+void incoming_message(const SocketCAN__Types::SocketCAN__write__isotp__result& incoming_par, component sender_component);
+void incoming_message(const SocketCAN__Types::SocketCAN__receive__CAN__or__CAN__FD__frame& incoming_par, component sender_component);
+void incoming_message(const SocketCAN__Types::SocketCAN__receive__BCM__message& incoming_par, component sender_component);
+void incoming_message(const SocketCAN__Types::SocketCAN__receive__isotp__pdu& incoming_par, component sender_component);
+void incoming_message(const SocketCAN__Types::SocketCAN__setsockopt__result& incoming_par, component sender_component);
+private:
+protected:
+void incoming_message(const SocketCAN__Types::SocketCAN__socket__result& incoming_par);
+void incoming_message(const SocketCAN__Types::SocketCAN__ioctl__result& incoming_par);
+void incoming_message(const SocketCAN__Types::SocketCAN__connect__result& incoming_par);
+void incoming_message(const SocketCAN__Types::SocketCAN__bind__result& incoming_par);
+void incoming_message(const SocketCAN__Types::SocketCAN__send__data__result& incoming_par);
+void incoming_message(const SocketCAN__Types::SocketCAN__write__data__result& incoming_par);
+void incoming_message(const SocketCAN__Types::SocketCAN__write__isotp__result& incoming_par);
+void incoming_message(const SocketCAN__Types::SocketCAN__receive__CAN__or__CAN__FD__frame& incoming_par);
+void incoming_message(const SocketCAN__Types::SocketCAN__receive__BCM__message& incoming_par);
+void incoming_message(const SocketCAN__Types::SocketCAN__receive__isotp__pdu& incoming_par);
+void incoming_message(const SocketCAN__Types::SocketCAN__setsockopt__result& incoming_par);
+boolean process_message(const char *message_type, Text_Buf& incoming_buf, component sender_component, OCTETSTRING& slider);
+};
+
+
+/* Global variable declarations */
+
+extern TTCN_Module module_object;
+
+} /* end of namespace */
+
+#endif
diff --git a/demo/SocketCAN_PortType.o b/demo/SocketCAN_PortType.o
new file mode 100644
index 0000000..f711fc0
--- /dev/null
+++ b/demo/SocketCAN_PortType.o
Binary files differ
diff --git a/demo/SocketCAN_RAW_test.cc b/demo/SocketCAN_RAW_test.cc
new file mode 100644
index 0000000..282c719
--- /dev/null
+++ b/demo/SocketCAN_RAW_test.cc
@@ -0,0 +1,1014 @@
+// This C++ source file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+/* Including header files */
+
+#include "SocketCAN_RAW_test.hh"
+
+namespace SocketCAN__RAW__test {
+
+/* Prototypes of static functions */
+
+static void pre_init_module();
+static void post_init_module();
+
+/* Literal string constants */
+
+static const unsigned char bs_2_bits[] = { 0, 0, 0, 0 },
+bs_1_bits[] = { 0, 0, 0, 130 },
+bs_0_bits[] = { 85 };
+static const BITSTRING bs_2(32, bs_2_bits),
+bs_1(32, bs_1_bits),
+bs_0(8, bs_0_bits);
+static const unsigned char os_0_octets[] = { 0, 0, 0, 21 },
+os_3_octets[] = { 0, 0, 1, 35 },
+os_5_octets[] = { 0, 0, 2, 0 },
+os_6_octets[] = { 0, 0, 7, 0 },
+os_1_octets[] = { 1, 35, 69, 103, 137, 171, 205, 239 },
+os_2_octets[] = { 1, 35, 69, 103, 137, 171, 205, 239, 1, 35, 69, 103, 137, 171, 205, 239, 1, 35, 69, 103, 137, 171, 205, 239, 1, 35, 69, 103, 137, 171, 205, 239, 1, 35, 69, 103, 137, 171, 205, 239, 1, 35, 69, 103, 137, 171, 205, 239, 1, 35, 69, 103, 137, 171, 205, 239, 1, 35, 69, 103, 137, 171, 205, 239 },
+os_7_octets[] = { 146, 52, 86, 120 },
+os_4_octets[] = { 192, 0, 7, 255 },
+os_8_octets[] = { 223, 255, 255, 255 };
+static const OCTETSTRING os_0(4, os_0_octets),
+os_3(4, os_3_octets),
+os_5(4, os_5_octets),
+os_6(4, os_6_octets),
+os_1(8, os_1_octets),
+os_2(64, os_2_octets),
+os_7(4, os_7_octets),
+os_4(4, os_4_octets),
+os_8(4, os_8_octets);
+static const unsigned char module_checksum[] = { 0x08, 0x1f, 0xf2, 0x31, 0x93, 0x24, 0x77, 0x53, 0x50, 0x24, 0x7d, 0xf1, 0x61, 0x86, 0x2d, 0xe5 };
+
+/* Global variable definitions */
+
+TTCN_Module module_object("SocketCAN_RAW_test", __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);
+
+static const RuntimeVersionChecker ver_checker(  current_runtime_version.requires_major_version_6,
+  current_runtime_version.requires_minor_version_6,
+  current_runtime_version.requires_patch_level_0,  current_runtime_version.requires_runtime_1);
+
+/* Bodies of functions, altsteps and testcases */
+
+verdicttype testcase_tc__can__raw__send__and__receive__can__frame(boolean has_timer, double timer_value)
+{
+TTCN_Runtime::check_begin_testcase(has_timer, timer_value);
+TTCN_Location current_location("SocketCAN_RAW_test.ttcn", 25, TTCN_Location::LOCATION_TESTCASE, "tc_can_raw_send_and_receive_can_frame");
+try {
+TTCN_Runtime::begin_testcase("SocketCAN_RAW_test", "tc_can_raw_send_and_receive_can_frame", "SocketCANtest", "MTC", "SocketCANtest", "MTC", has_timer, timer_value);
+current_location.update_lineno(26);
+#line 26 "SocketCAN_RAW_test.ttcn"
+COMPONENT v__ptc__rawSendInitiator(TTCN_Runtime::create_component("SocketCANtest", "PTC", "PTC1_ptc_rawSendInitiator", NULL, TRUE));
+current_location.update_lineno(27);
+#line 27 "SocketCAN_RAW_test.ttcn"
+COMPONENT v__ptc__rawFrameReceiver(TTCN_Runtime::create_component("SocketCANtest", "PTC", "PTC2_ptc_rawFrameReceiver", NULL, TRUE));
+current_location.update_lineno(29);
+#line 29 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::f__addSyncSlaveSet(v__ptc__rawSendInitiator, SocketCANtest::MTC_component_v__PTCSet);
+current_location.update_lineno(30);
+#line 30 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::f__addSyncSlaveSet(v__ptc__rawFrameReceiver, SocketCANtest::MTC_component_v__PTCSet);
+current_location.update_lineno(31);
+#line 31 "SocketCAN_RAW_test.ttcn"
+TTCN_Runtime::connect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawSendInitiator, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(32);
+#line 32 "SocketCAN_RAW_test.ttcn"
+TTCN_Runtime::connect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawFrameReceiver, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(34);
+#line 34 "SocketCAN_RAW_test.ttcn"
+SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame v__frame__to__send;
+current_location.update_lineno(35);
+#line 35 "SocketCAN_RAW_test.ttcn"
+{
+Can::CAN__frame& tmp_1 = v__frame__to__send.can__frame();
+tmp_1.can__id() = os_0;
+tmp_1.can__pdu() = os_1;
+}
+current_location.update_lineno(40);
+#line 40 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::start_f__ptc__RawSendInitiator(v__ptc__rawSendInitiator, SocketCANtest::e__Phase::e__testbody1, v__frame__to__send);
+current_location.update_lineno(41);
+#line 41 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::start_f__ptc__RawFrameReceiver(v__ptc__rawFrameReceiver, SocketCANtest::e__Phase::e__testbody3, SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame_template(v__frame__to__send));
+current_location.update_lineno(43);
+#line 43 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::e__Phase v__phase;
+current_location.update_lineno(45);
+#line 45 "SocketCAN_RAW_test.ttcn"
+v__phase = SocketCANtest::c__firstPhase;
+current_location.update_lineno(45);
+#line 45 "SocketCAN_RAW_test.ttcn"
+for ( ; ; ) {
+current_location.update_lineno(45);
+#line 45 "SocketCAN_RAW_test.ttcn"
+if (!(v__phase < SocketCANtest::e__Phase::e__testcase__complete)) break;
+current_location.update_lineno(46);
+#line 46 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::f__startPhase(v__phase);
+current_location.update_lineno(47);
+#line 47 "SocketCAN_RAW_test.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("MTC: ");
+v__phase.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(48);
+#line 48 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::f__awaitEndPhase(v__phase);
+current_location.update_lineno(45);
+#line 45 "SocketCAN_RAW_test.ttcn"
+v__phase = SocketCANtest::f__incMTCPhase(v__phase);
+}
+current_location.update_lineno(51);
+#line 51 "SocketCAN_RAW_test.ttcn"
+{
+tmp_4:
+alt_status alt_flag = ALT_UNCHECKED, default_flag = ALT_UNCHECKED;
+TTCN_Snapshot::take_new(FALSE);
+for ( ; ; ) {
+if (alt_flag != ALT_NO) {
+alt_flag = TTCN_Runtime::component_done(ALL_COMPREF);
+if (alt_flag == ALT_YES) break;
+else if (alt_flag == ALT_REPEAT) goto tmp_4;
+}
+if (default_flag != ALT_NO) {
+default_flag = TTCN_Default::try_altsteps();
+if (default_flag == ALT_YES || default_flag == ALT_BREAK) break;
+else if (default_flag == ALT_REPEAT) goto tmp_4;
+}
+current_location.update_lineno(51);
+#line 51 "SocketCAN_RAW_test.ttcn"
+if (alt_flag == ALT_NO && default_flag == ALT_NO) TTCN_error("Stand-alone done statement failed in file SocketCAN_RAW_test.ttcn, line 51.");
+TTCN_Snapshot::take_new(TRUE);
+}
+}
+current_location.update_lineno(52);
+#line 52 "SocketCAN_RAW_test.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "MTC done");
+current_location.update_lineno(54);
+#line 54 "SocketCAN_RAW_test.ttcn"
+TTCN_Runtime::disconnect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawSendInitiator, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(55);
+#line 55 "SocketCAN_RAW_test.ttcn"
+TTCN_Runtime::disconnect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawFrameReceiver, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(57);
+#line 57 "SocketCAN_RAW_test.ttcn"
+TTCN_Runtime::kill_component(ALL_COMPREF);
+} catch (const TC_Error& tc_error) {
+} catch (const TC_End& tc_end) {
+TTCN_Logger::log_str(TTCN_FUNCTION, "Test case tc_can_raw_send_and_receive_can_frame was stopped.");
+}
+return TTCN_Runtime::end_testcase();
+}
+
+verdicttype testcase_tc__can__raw__send__and__receive__canfd__frame(boolean has_timer, double timer_value)
+{
+TTCN_Runtime::check_begin_testcase(has_timer, timer_value);
+TTCN_Location current_location("SocketCAN_RAW_test.ttcn", 60, TTCN_Location::LOCATION_TESTCASE, "tc_can_raw_send_and_receive_canfd_frame");
+try {
+TTCN_Runtime::begin_testcase("SocketCAN_RAW_test", "tc_can_raw_send_and_receive_canfd_frame", "SocketCANtest", "MTC", "SocketCANtest", "MTC", has_timer, timer_value);
+current_location.update_lineno(61);
+#line 61 "SocketCAN_RAW_test.ttcn"
+COMPONENT v__ptc__rawSendInitiator(TTCN_Runtime::create_component("SocketCANtest", "PTC", "PTC1_ptc_rawSendInitiator", NULL, TRUE));
+current_location.update_lineno(62);
+#line 62 "SocketCAN_RAW_test.ttcn"
+COMPONENT v__ptc__rawFrameReceiver(TTCN_Runtime::create_component("SocketCANtest", "PTC", "PTC2_ptc_rawFrameReceiver", NULL, TRUE));
+current_location.update_lineno(65);
+#line 65 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::f__addSyncSlaveSet(v__ptc__rawSendInitiator, SocketCANtest::MTC_component_v__PTCSet);
+current_location.update_lineno(66);
+#line 66 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::f__addSyncSlaveSet(v__ptc__rawFrameReceiver, SocketCANtest::MTC_component_v__PTCSet);
+current_location.update_lineno(68);
+#line 68 "SocketCAN_RAW_test.ttcn"
+TTCN_Runtime::connect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawSendInitiator, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(69);
+#line 69 "SocketCAN_RAW_test.ttcn"
+TTCN_Runtime::connect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawFrameReceiver, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(71);
+#line 71 "SocketCAN_RAW_test.ttcn"
+SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame v__canfd__frame__to__send;
+current_location.update_lineno(72);
+#line 72 "SocketCAN_RAW_test.ttcn"
+{
+Can::CANFD__frame& tmp_6 = v__canfd__frame__to__send.canfd__frame();
+tmp_6.can__id() = os_0;
+tmp_6.can__flags() = bs_0;
+tmp_6.can__pdu() = os_2;
+}
+current_location.update_lineno(78);
+#line 78 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::start_f__ptc__RawSendInitiator(v__ptc__rawSendInitiator, SocketCANtest::e__Phase::e__testbody2, v__canfd__frame__to__send);
+current_location.update_lineno(79);
+#line 79 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::start_f__ptc__RawFrameReceiver(v__ptc__rawFrameReceiver, SocketCANtest::e__Phase::e__testbody3, SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame_template(v__canfd__frame__to__send));
+current_location.update_lineno(81);
+#line 81 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::e__Phase v__phase;
+current_location.update_lineno(83);
+#line 83 "SocketCAN_RAW_test.ttcn"
+v__phase = SocketCANtest::c__firstPhase;
+current_location.update_lineno(83);
+#line 83 "SocketCAN_RAW_test.ttcn"
+for ( ; ; ) {
+current_location.update_lineno(83);
+#line 83 "SocketCAN_RAW_test.ttcn"
+if (!(v__phase < SocketCANtest::e__Phase::e__testcase__complete)) break;
+current_location.update_lineno(84);
+#line 84 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::f__startPhase(v__phase);
+current_location.update_lineno(85);
+#line 85 "SocketCAN_RAW_test.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("MTC: ");
+v__phase.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(86);
+#line 86 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::f__awaitEndPhase(v__phase);
+current_location.update_lineno(83);
+#line 83 "SocketCAN_RAW_test.ttcn"
+v__phase = SocketCANtest::f__incMTCPhase(v__phase);
+}
+current_location.update_lineno(89);
+#line 89 "SocketCAN_RAW_test.ttcn"
+{
+tmp_9:
+alt_status alt_flag = ALT_UNCHECKED, default_flag = ALT_UNCHECKED;
+TTCN_Snapshot::take_new(FALSE);
+for ( ; ; ) {
+if (alt_flag != ALT_NO) {
+alt_flag = TTCN_Runtime::component_done(ALL_COMPREF);
+if (alt_flag == ALT_YES) break;
+else if (alt_flag == ALT_REPEAT) goto tmp_9;
+}
+if (default_flag != ALT_NO) {
+default_flag = TTCN_Default::try_altsteps();
+if (default_flag == ALT_YES || default_flag == ALT_BREAK) break;
+else if (default_flag == ALT_REPEAT) goto tmp_9;
+}
+current_location.update_lineno(89);
+#line 89 "SocketCAN_RAW_test.ttcn"
+if (alt_flag == ALT_NO && default_flag == ALT_NO) TTCN_error("Stand-alone done statement failed in file SocketCAN_RAW_test.ttcn, line 89.");
+TTCN_Snapshot::take_new(TRUE);
+}
+}
+current_location.update_lineno(90);
+#line 90 "SocketCAN_RAW_test.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "MTC done");
+current_location.update_lineno(93);
+#line 93 "SocketCAN_RAW_test.ttcn"
+TTCN_Runtime::disconnect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawSendInitiator, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(94);
+#line 94 "SocketCAN_RAW_test.ttcn"
+TTCN_Runtime::disconnect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawFrameReceiver, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(96);
+#line 96 "SocketCAN_RAW_test.ttcn"
+TTCN_Runtime::kill_component(ALL_COMPREF);
+} catch (const TC_Error& tc_error) {
+} catch (const TC_End& tc_end) {
+TTCN_Logger::log_str(TTCN_FUNCTION, "Test case tc_can_raw_send_and_receive_canfd_frame was stopped.");
+}
+return TTCN_Runtime::end_testcase();
+}
+
+verdicttype testcase_tc__can__raw__setsockopt__CAN__RAW__FILTER(boolean has_timer, double timer_value)
+{
+TTCN_Runtime::check_begin_testcase(has_timer, timer_value);
+TTCN_Location current_location("SocketCAN_RAW_test.ttcn", 99, TTCN_Location::LOCATION_TESTCASE, "tc_can_raw_setsockopt_CAN_RAW_FILTER");
+try {
+TTCN_Runtime::begin_testcase("SocketCAN_RAW_test", "tc_can_raw_setsockopt_CAN_RAW_FILTER", "SocketCANtest", "MTC", "SocketCANtest", "MTC", has_timer, timer_value);
+current_location.update_lineno(101);
+#line 101 "SocketCAN_RAW_test.ttcn"
+COMPONENT v__ptc__rawSetFilters(TTCN_Runtime::create_component("SocketCANtest", "PTC", "PTC1_ptc_rawSetFilters", NULL, TRUE));
+current_location.update_lineno(102);
+#line 102 "SocketCAN_RAW_test.ttcn"
+COMPONENT v__ptc__rawDeactivateFilters(TTCN_Runtime::create_component("SocketCANtest", "PTC", "PTC1_ptc_rawDeactivateFilters", NULL, TRUE));
+current_location.update_lineno(104);
+#line 104 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::f__addSyncSlaveSet(v__ptc__rawSetFilters, SocketCANtest::MTC_component_v__PTCSet);
+current_location.update_lineno(105);
+#line 105 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::f__addSyncSlaveSet(v__ptc__rawDeactivateFilters, SocketCANtest::MTC_component_v__PTCSet);
+current_location.update_lineno(106);
+#line 106 "SocketCAN_RAW_test.ttcn"
+TTCN_Runtime::connect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawSetFilters, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(107);
+#line 107 "SocketCAN_RAW_test.ttcn"
+TTCN_Runtime::connect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawDeactivateFilters, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(110);
+#line 110 "SocketCAN_RAW_test.ttcn"
+Raw::CAN__RAW__filter c__rfilter0;
+c__rfilter0.can__id() = os_3;
+c__rfilter0.can__mask() = os_4;
+current_location.update_lineno(113);
+#line 113 "SocketCAN_RAW_test.ttcn"
+Raw::CAN__RAW__filter c__rfilter1;
+c__rfilter1.can__id() = os_5;
+c__rfilter1.can__mask() = os_6;
+current_location.update_lineno(116);
+#line 116 "SocketCAN_RAW_test.ttcn"
+Raw::CAN__RAW__filter c__rfilter2;
+c__rfilter2.can__id() = os_7;
+c__rfilter2.can__mask() = os_8;
+current_location.update_lineno(119);
+#line 119 "SocketCAN_RAW_test.ttcn"
+SocketCAN__Types::SocketCAN__setsockopt__commandu c__commandu__activate__filters;
+{
+SocketCAN__Types::CAN__RAW__filters& tmp_10 = c__commandu__activate__filters.rfilter();
+tmp_10.set_size(3);
+tmp_10[0] = c__rfilter0;
+tmp_10[1] = c__rfilter1;
+tmp_10[2] = c__rfilter2;
+}
+current_location.update_lineno(120);
+#line 120 "SocketCAN_RAW_test.ttcn"
+SocketCAN__Types::SocketCAN__setsockopt__commandu c__commandu__deactivate__filters;
+c__commandu__deactivate__filters.rfilter() = NULL_VALUE;
+current_location.update_lineno(123);
+#line 123 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::start_f__raw__setsockopt(v__ptc__rawSetFilters, SocketCANtest::e__Phase::e__testbody1, c__commandu__activate__filters);
+current_location.update_lineno(126);
+#line 126 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::start_f__raw__setsockopt(v__ptc__rawDeactivateFilters, SocketCANtest::e__Phase::e__testbody3, c__commandu__deactivate__filters);
+current_location.update_lineno(128);
+#line 128 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::e__Phase v__phase;
+current_location.update_lineno(130);
+#line 130 "SocketCAN_RAW_test.ttcn"
+v__phase = SocketCANtest::c__firstPhase;
+current_location.update_lineno(130);
+#line 130 "SocketCAN_RAW_test.ttcn"
+for ( ; ; ) {
+current_location.update_lineno(130);
+#line 130 "SocketCAN_RAW_test.ttcn"
+if (!(v__phase < SocketCANtest::e__Phase::e__testcase__complete)) break;
+current_location.update_lineno(131);
+#line 131 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::f__startPhase(v__phase);
+current_location.update_lineno(132);
+#line 132 "SocketCAN_RAW_test.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("MTC: ");
+v__phase.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(133);
+#line 133 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::f__awaitEndPhase(v__phase);
+current_location.update_lineno(130);
+#line 130 "SocketCAN_RAW_test.ttcn"
+v__phase = SocketCANtest::f__incMTCPhase(v__phase);
+}
+current_location.update_lineno(136);
+#line 136 "SocketCAN_RAW_test.ttcn"
+{
+tmp_13:
+alt_status alt_flag = ALT_UNCHECKED, default_flag = ALT_UNCHECKED;
+TTCN_Snapshot::take_new(FALSE);
+for ( ; ; ) {
+if (alt_flag != ALT_NO) {
+alt_flag = TTCN_Runtime::component_done(ALL_COMPREF);
+if (alt_flag == ALT_YES) break;
+else if (alt_flag == ALT_REPEAT) goto tmp_13;
+}
+if (default_flag != ALT_NO) {
+default_flag = TTCN_Default::try_altsteps();
+if (default_flag == ALT_YES || default_flag == ALT_BREAK) break;
+else if (default_flag == ALT_REPEAT) goto tmp_13;
+}
+current_location.update_lineno(136);
+#line 136 "SocketCAN_RAW_test.ttcn"
+if (alt_flag == ALT_NO && default_flag == ALT_NO) TTCN_error("Stand-alone done statement failed in file SocketCAN_RAW_test.ttcn, line 136.");
+TTCN_Snapshot::take_new(TRUE);
+}
+}
+current_location.update_lineno(137);
+#line 137 "SocketCAN_RAW_test.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "MTC done");
+current_location.update_lineno(139);
+#line 139 "SocketCAN_RAW_test.ttcn"
+TTCN_Runtime::disconnect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawSetFilters, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(140);
+#line 140 "SocketCAN_RAW_test.ttcn"
+TTCN_Runtime::disconnect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawDeactivateFilters, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(142);
+#line 142 "SocketCAN_RAW_test.ttcn"
+TTCN_Runtime::kill_component(ALL_COMPREF);
+} catch (const TC_Error& tc_error) {
+} catch (const TC_End& tc_end) {
+TTCN_Logger::log_str(TTCN_FUNCTION, "Test case tc_can_raw_setsockopt_CAN_RAW_FILTER was stopped.");
+}
+return TTCN_Runtime::end_testcase();
+}
+
+verdicttype testcase_tc__can__raw__setsockopt__CAN__RAW__ERR__FILTER(boolean has_timer, double timer_value)
+{
+TTCN_Runtime::check_begin_testcase(has_timer, timer_value);
+TTCN_Location current_location("SocketCAN_RAW_test.ttcn", 145, TTCN_Location::LOCATION_TESTCASE, "tc_can_raw_setsockopt_CAN_RAW_ERR_FILTER");
+try {
+TTCN_Runtime::begin_testcase("SocketCAN_RAW_test", "tc_can_raw_setsockopt_CAN_RAW_ERR_FILTER", "SocketCANtest", "MTC", "SocketCANtest", "MTC", has_timer, timer_value);
+current_location.update_lineno(147);
+#line 147 "SocketCAN_RAW_test.ttcn"
+COMPONENT v__ptc__rawActivateErrorMask(TTCN_Runtime::create_component("SocketCANtest", "PTC", "PTC1_ptc_rawActivateErrorMask", NULL, TRUE));
+current_location.update_lineno(148);
+#line 148 "SocketCAN_RAW_test.ttcn"
+COMPONENT v__ptc__rawDeactivateErrorMask(TTCN_Runtime::create_component("SocketCANtest", "PTC", "PTC1_ptc_rawDeactivateErrorMask", NULL, TRUE));
+current_location.update_lineno(150);
+#line 150 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::f__addSyncSlaveSet(v__ptc__rawActivateErrorMask, SocketCANtest::MTC_component_v__PTCSet);
+current_location.update_lineno(151);
+#line 151 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::f__addSyncSlaveSet(v__ptc__rawDeactivateErrorMask, SocketCANtest::MTC_component_v__PTCSet);
+current_location.update_lineno(152);
+#line 152 "SocketCAN_RAW_test.ttcn"
+TTCN_Runtime::connect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawActivateErrorMask, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(153);
+#line 153 "SocketCAN_RAW_test.ttcn"
+TTCN_Runtime::connect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawDeactivateErrorMask, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(155);
+#line 155 "SocketCAN_RAW_test.ttcn"
+SocketCAN__Types::SocketCAN__setsockopt__commandu c__commandu__activate__err__mask;
+c__commandu__activate__err__mask.err__mask() = bs_1;
+current_location.update_lineno(156);
+#line 156 "SocketCAN_RAW_test.ttcn"
+SocketCAN__Types::SocketCAN__setsockopt__commandu c__commandu__deactivate__err__mask;
+c__commandu__deactivate__err__mask.err__mask() = bs_2;
+current_location.update_lineno(159);
+#line 159 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::start_f__raw__setsockopt(v__ptc__rawActivateErrorMask, SocketCANtest::e__Phase::e__testbody1, c__commandu__activate__err__mask);
+current_location.update_lineno(162);
+#line 162 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::start_f__raw__setsockopt(v__ptc__rawDeactivateErrorMask, SocketCANtest::e__Phase::e__testbody3, c__commandu__deactivate__err__mask);
+current_location.update_lineno(164);
+#line 164 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::e__Phase v__phase;
+current_location.update_lineno(166);
+#line 166 "SocketCAN_RAW_test.ttcn"
+v__phase = SocketCANtest::c__firstPhase;
+current_location.update_lineno(166);
+#line 166 "SocketCAN_RAW_test.ttcn"
+for ( ; ; ) {
+current_location.update_lineno(166);
+#line 166 "SocketCAN_RAW_test.ttcn"
+if (!(v__phase < SocketCANtest::e__Phase::e__testcase__complete)) break;
+current_location.update_lineno(167);
+#line 167 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::f__startPhase(v__phase);
+current_location.update_lineno(168);
+#line 168 "SocketCAN_RAW_test.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("MTC: ");
+v__phase.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(169);
+#line 169 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::f__awaitEndPhase(v__phase);
+current_location.update_lineno(166);
+#line 166 "SocketCAN_RAW_test.ttcn"
+v__phase = SocketCANtest::f__incMTCPhase(v__phase);
+}
+current_location.update_lineno(172);
+#line 172 "SocketCAN_RAW_test.ttcn"
+{
+tmp_16:
+alt_status alt_flag = ALT_UNCHECKED, default_flag = ALT_UNCHECKED;
+TTCN_Snapshot::take_new(FALSE);
+for ( ; ; ) {
+if (alt_flag != ALT_NO) {
+alt_flag = TTCN_Runtime::component_done(ALL_COMPREF);
+if (alt_flag == ALT_YES) break;
+else if (alt_flag == ALT_REPEAT) goto tmp_16;
+}
+if (default_flag != ALT_NO) {
+default_flag = TTCN_Default::try_altsteps();
+if (default_flag == ALT_YES || default_flag == ALT_BREAK) break;
+else if (default_flag == ALT_REPEAT) goto tmp_16;
+}
+current_location.update_lineno(172);
+#line 172 "SocketCAN_RAW_test.ttcn"
+if (alt_flag == ALT_NO && default_flag == ALT_NO) TTCN_error("Stand-alone done statement failed in file SocketCAN_RAW_test.ttcn, line 172.");
+TTCN_Snapshot::take_new(TRUE);
+}
+}
+current_location.update_lineno(173);
+#line 173 "SocketCAN_RAW_test.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "MTC done");
+current_location.update_lineno(175);
+#line 175 "SocketCAN_RAW_test.ttcn"
+TTCN_Runtime::disconnect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawActivateErrorMask, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(176);
+#line 176 "SocketCAN_RAW_test.ttcn"
+TTCN_Runtime::disconnect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawDeactivateErrorMask, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(178);
+#line 178 "SocketCAN_RAW_test.ttcn"
+TTCN_Runtime::kill_component(ALL_COMPREF);
+} catch (const TC_Error& tc_error) {
+} catch (const TC_End& tc_end) {
+TTCN_Logger::log_str(TTCN_FUNCTION, "Test case tc_can_raw_setsockopt_CAN_RAW_ERR_FILTER was stopped.");
+}
+return TTCN_Runtime::end_testcase();
+}
+
+verdicttype testcase_tc__can__raw__setsockopt__CAN__RAW__LOOPBACK(boolean has_timer, double timer_value)
+{
+TTCN_Runtime::check_begin_testcase(has_timer, timer_value);
+TTCN_Location current_location("SocketCAN_RAW_test.ttcn", 181, TTCN_Location::LOCATION_TESTCASE, "tc_can_raw_setsockopt_CAN_RAW_LOOPBACK");
+try {
+TTCN_Runtime::begin_testcase("SocketCAN_RAW_test", "tc_can_raw_setsockopt_CAN_RAW_LOOPBACK", "SocketCANtest", "MTC", "SocketCANtest", "MTC", has_timer, timer_value);
+current_location.update_lineno(183);
+#line 183 "SocketCAN_RAW_test.ttcn"
+COMPONENT v__ptc__rawActivateLoopback(TTCN_Runtime::create_component("SocketCANtest", "PTC", "PTC1_ptc_rawActivateLoopback", NULL, TRUE));
+current_location.update_lineno(184);
+#line 184 "SocketCAN_RAW_test.ttcn"
+COMPONENT v__ptc__rawDeactivateLoopback(TTCN_Runtime::create_component("SocketCANtest", "PTC", "PTC1_ptc_rawDeactivateLoopback", NULL, TRUE));
+current_location.update_lineno(186);
+#line 186 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::f__addSyncSlaveSet(v__ptc__rawActivateLoopback, SocketCANtest::MTC_component_v__PTCSet);
+current_location.update_lineno(187);
+#line 187 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::f__addSyncSlaveSet(v__ptc__rawDeactivateLoopback, SocketCANtest::MTC_component_v__PTCSet);
+current_location.update_lineno(188);
+#line 188 "SocketCAN_RAW_test.ttcn"
+TTCN_Runtime::connect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawActivateLoopback, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(189);
+#line 189 "SocketCAN_RAW_test.ttcn"
+TTCN_Runtime::connect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawDeactivateLoopback, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(191);
+#line 191 "SocketCAN_RAW_test.ttcn"
+SocketCAN__Types::SocketCAN__setsockopt__commandu c__commandu__activate__loopback;
+c__commandu__activate__loopback.loopback() = Raw::DisableEnable__enum::Enable;
+current_location.update_lineno(192);
+#line 192 "SocketCAN_RAW_test.ttcn"
+SocketCAN__Types::SocketCAN__setsockopt__commandu c__commandu__deactivate__loopback;
+c__commandu__deactivate__loopback.loopback() = Raw::DisableEnable__enum::Disable;
+current_location.update_lineno(195);
+#line 195 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::start_f__raw__setsockopt(v__ptc__rawActivateLoopback, SocketCANtest::e__Phase::e__testbody1, c__commandu__activate__loopback);
+current_location.update_lineno(198);
+#line 198 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::start_f__raw__setsockopt(v__ptc__rawDeactivateLoopback, SocketCANtest::e__Phase::e__testbody3, c__commandu__deactivate__loopback);
+current_location.update_lineno(200);
+#line 200 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::e__Phase v__phase;
+current_location.update_lineno(202);
+#line 202 "SocketCAN_RAW_test.ttcn"
+v__phase = SocketCANtest::c__firstPhase;
+current_location.update_lineno(202);
+#line 202 "SocketCAN_RAW_test.ttcn"
+for ( ; ; ) {
+current_location.update_lineno(202);
+#line 202 "SocketCAN_RAW_test.ttcn"
+if (!(v__phase < SocketCANtest::e__Phase::e__testcase__complete)) break;
+current_location.update_lineno(203);
+#line 203 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::f__startPhase(v__phase);
+current_location.update_lineno(204);
+#line 204 "SocketCAN_RAW_test.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("MTC: ");
+v__phase.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(205);
+#line 205 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::f__awaitEndPhase(v__phase);
+current_location.update_lineno(202);
+#line 202 "SocketCAN_RAW_test.ttcn"
+v__phase = SocketCANtest::f__incMTCPhase(v__phase);
+}
+current_location.update_lineno(208);
+#line 208 "SocketCAN_RAW_test.ttcn"
+{
+tmp_19:
+alt_status alt_flag = ALT_UNCHECKED, default_flag = ALT_UNCHECKED;
+TTCN_Snapshot::take_new(FALSE);
+for ( ; ; ) {
+if (alt_flag != ALT_NO) {
+alt_flag = TTCN_Runtime::component_done(ALL_COMPREF);
+if (alt_flag == ALT_YES) break;
+else if (alt_flag == ALT_REPEAT) goto tmp_19;
+}
+if (default_flag != ALT_NO) {
+default_flag = TTCN_Default::try_altsteps();
+if (default_flag == ALT_YES || default_flag == ALT_BREAK) break;
+else if (default_flag == ALT_REPEAT) goto tmp_19;
+}
+current_location.update_lineno(208);
+#line 208 "SocketCAN_RAW_test.ttcn"
+if (alt_flag == ALT_NO && default_flag == ALT_NO) TTCN_error("Stand-alone done statement failed in file SocketCAN_RAW_test.ttcn, line 208.");
+TTCN_Snapshot::take_new(TRUE);
+}
+}
+current_location.update_lineno(209);
+#line 209 "SocketCAN_RAW_test.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "MTC done");
+current_location.update_lineno(211);
+#line 211 "SocketCAN_RAW_test.ttcn"
+TTCN_Runtime::disconnect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawActivateLoopback, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(212);
+#line 212 "SocketCAN_RAW_test.ttcn"
+TTCN_Runtime::disconnect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawDeactivateLoopback, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(214);
+#line 214 "SocketCAN_RAW_test.ttcn"
+TTCN_Runtime::kill_component(ALL_COMPREF);
+} catch (const TC_Error& tc_error) {
+} catch (const TC_End& tc_end) {
+TTCN_Logger::log_str(TTCN_FUNCTION, "Test case tc_can_raw_setsockopt_CAN_RAW_LOOPBACK was stopped.");
+}
+return TTCN_Runtime::end_testcase();
+}
+
+verdicttype testcase_tc__can__raw__setsockopt__CAN__RAW__RECV__OWN__MSGS(boolean has_timer, double timer_value)
+{
+TTCN_Runtime::check_begin_testcase(has_timer, timer_value);
+TTCN_Location current_location("SocketCAN_RAW_test.ttcn", 217, TTCN_Location::LOCATION_TESTCASE, "tc_can_raw_setsockopt_CAN_RAW_RECV_OWN_MSGS");
+try {
+TTCN_Runtime::begin_testcase("SocketCAN_RAW_test", "tc_can_raw_setsockopt_CAN_RAW_RECV_OWN_MSGS", "SocketCANtest", "MTC", "SocketCANtest", "MTC", has_timer, timer_value);
+current_location.update_lineno(219);
+#line 219 "SocketCAN_RAW_test.ttcn"
+COMPONENT v__ptc__rawActivateReceiveOwnMessages(TTCN_Runtime::create_component("SocketCANtest", "PTC", "PTC1_ptc_rawActivateReceiveOwnMessages", NULL, TRUE));
+current_location.update_lineno(220);
+#line 220 "SocketCAN_RAW_test.ttcn"
+COMPONENT v__ptc__rawDeactivateReceiveOwnMessages(TTCN_Runtime::create_component("SocketCANtest", "PTC", "PTC1_ptc_rawDeactivateReceiveOwnMessages", NULL, TRUE));
+current_location.update_lineno(222);
+#line 222 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::f__addSyncSlaveSet(v__ptc__rawActivateReceiveOwnMessages, SocketCANtest::MTC_component_v__PTCSet);
+current_location.update_lineno(223);
+#line 223 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::f__addSyncSlaveSet(v__ptc__rawDeactivateReceiveOwnMessages, SocketCANtest::MTC_component_v__PTCSet);
+current_location.update_lineno(224);
+#line 224 "SocketCAN_RAW_test.ttcn"
+TTCN_Runtime::connect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawActivateReceiveOwnMessages, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(225);
+#line 225 "SocketCAN_RAW_test.ttcn"
+TTCN_Runtime::connect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawDeactivateReceiveOwnMessages, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(227);
+#line 227 "SocketCAN_RAW_test.ttcn"
+SocketCAN__Types::SocketCAN__setsockopt__commandu c__commandu__activate__ReceiveOwnMessages;
+c__commandu__activate__ReceiveOwnMessages.recv__own__msgs() = Raw::DisableEnable__enum::Enable;
+current_location.update_lineno(228);
+#line 228 "SocketCAN_RAW_test.ttcn"
+SocketCAN__Types::SocketCAN__setsockopt__commandu c__commandu__deactivate__ReceiveOwnMessages;
+c__commandu__deactivate__ReceiveOwnMessages.recv__own__msgs() = Raw::DisableEnable__enum::Disable;
+current_location.update_lineno(231);
+#line 231 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::start_f__raw__setsockopt(v__ptc__rawActivateReceiveOwnMessages, SocketCANtest::e__Phase::e__testbody1, c__commandu__activate__ReceiveOwnMessages);
+current_location.update_lineno(234);
+#line 234 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::start_f__raw__setsockopt(v__ptc__rawDeactivateReceiveOwnMessages, SocketCANtest::e__Phase::e__testbody3, c__commandu__deactivate__ReceiveOwnMessages);
+current_location.update_lineno(236);
+#line 236 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::e__Phase v__phase;
+current_location.update_lineno(238);
+#line 238 "SocketCAN_RAW_test.ttcn"
+v__phase = SocketCANtest::c__firstPhase;
+current_location.update_lineno(238);
+#line 238 "SocketCAN_RAW_test.ttcn"
+for ( ; ; ) {
+current_location.update_lineno(238);
+#line 238 "SocketCAN_RAW_test.ttcn"
+if (!(v__phase < SocketCANtest::e__Phase::e__testcase__complete)) break;
+current_location.update_lineno(239);
+#line 239 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::f__startPhase(v__phase);
+current_location.update_lineno(240);
+#line 240 "SocketCAN_RAW_test.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("MTC: ");
+v__phase.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(241);
+#line 241 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::f__awaitEndPhase(v__phase);
+current_location.update_lineno(238);
+#line 238 "SocketCAN_RAW_test.ttcn"
+v__phase = SocketCANtest::f__incMTCPhase(v__phase);
+}
+current_location.update_lineno(244);
+#line 244 "SocketCAN_RAW_test.ttcn"
+{
+tmp_22:
+alt_status alt_flag = ALT_UNCHECKED, default_flag = ALT_UNCHECKED;
+TTCN_Snapshot::take_new(FALSE);
+for ( ; ; ) {
+if (alt_flag != ALT_NO) {
+alt_flag = TTCN_Runtime::component_done(ALL_COMPREF);
+if (alt_flag == ALT_YES) break;
+else if (alt_flag == ALT_REPEAT) goto tmp_22;
+}
+if (default_flag != ALT_NO) {
+default_flag = TTCN_Default::try_altsteps();
+if (default_flag == ALT_YES || default_flag == ALT_BREAK) break;
+else if (default_flag == ALT_REPEAT) goto tmp_22;
+}
+current_location.update_lineno(244);
+#line 244 "SocketCAN_RAW_test.ttcn"
+if (alt_flag == ALT_NO && default_flag == ALT_NO) TTCN_error("Stand-alone done statement failed in file SocketCAN_RAW_test.ttcn, line 244.");
+TTCN_Snapshot::take_new(TRUE);
+}
+}
+current_location.update_lineno(245);
+#line 245 "SocketCAN_RAW_test.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "MTC done");
+current_location.update_lineno(247);
+#line 247 "SocketCAN_RAW_test.ttcn"
+TTCN_Runtime::disconnect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawActivateReceiveOwnMessages, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(248);
+#line 248 "SocketCAN_RAW_test.ttcn"
+TTCN_Runtime::disconnect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawDeactivateReceiveOwnMessages, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(250);
+#line 250 "SocketCAN_RAW_test.ttcn"
+TTCN_Runtime::kill_component(ALL_COMPREF);
+} catch (const TC_Error& tc_error) {
+} catch (const TC_End& tc_end) {
+TTCN_Logger::log_str(TTCN_FUNCTION, "Test case tc_can_raw_setsockopt_CAN_RAW_RECV_OWN_MSGS was stopped.");
+}
+return TTCN_Runtime::end_testcase();
+}
+
+verdicttype testcase_tc__can__raw__setsockopt__CAN__RAW__FD__FRAMES(boolean has_timer, double timer_value)
+{
+TTCN_Runtime::check_begin_testcase(has_timer, timer_value);
+TTCN_Location current_location("SocketCAN_RAW_test.ttcn", 253, TTCN_Location::LOCATION_TESTCASE, "tc_can_raw_setsockopt_CAN_RAW_FD_FRAMES");
+try {
+TTCN_Runtime::begin_testcase("SocketCAN_RAW_test", "tc_can_raw_setsockopt_CAN_RAW_FD_FRAMES", "SocketCANtest", "MTC", "SocketCANtest", "MTC", has_timer, timer_value);
+current_location.update_lineno(255);
+#line 255 "SocketCAN_RAW_test.ttcn"
+COMPONENT v__ptc__rawActivateFD__Frames(TTCN_Runtime::create_component("SocketCANtest", "PTC", "PTC1_ptc_rawActivateFD_Frames", NULL, TRUE));
+current_location.update_lineno(256);
+#line 256 "SocketCAN_RAW_test.ttcn"
+COMPONENT v__ptc__rawDeactivateFD__Frames(TTCN_Runtime::create_component("SocketCANtest", "PTC", "PTC1_ptc_rawDeactivateFD_Frames", NULL, TRUE));
+current_location.update_lineno(258);
+#line 258 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::f__addSyncSlaveSet(v__ptc__rawActivateFD__Frames, SocketCANtest::MTC_component_v__PTCSet);
+current_location.update_lineno(259);
+#line 259 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::f__addSyncSlaveSet(v__ptc__rawDeactivateFD__Frames, SocketCANtest::MTC_component_v__PTCSet);
+current_location.update_lineno(260);
+#line 260 "SocketCAN_RAW_test.ttcn"
+TTCN_Runtime::connect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawActivateFD__Frames, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(261);
+#line 261 "SocketCAN_RAW_test.ttcn"
+TTCN_Runtime::connect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawDeactivateFD__Frames, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(263);
+#line 263 "SocketCAN_RAW_test.ttcn"
+SocketCAN__Types::SocketCAN__setsockopt__commandu c__commandu__activate__FD__Frames;
+c__commandu__activate__FD__Frames.fd__frames() = Raw::DisableEnable__enum::Enable;
+current_location.update_lineno(264);
+#line 264 "SocketCAN_RAW_test.ttcn"
+SocketCAN__Types::SocketCAN__setsockopt__commandu c__commandu__deactivate__FD__Frames;
+c__commandu__deactivate__FD__Frames.fd__frames() = Raw::DisableEnable__enum::Disable;
+current_location.update_lineno(267);
+#line 267 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::start_f__raw__setsockopt(v__ptc__rawActivateFD__Frames, SocketCANtest::e__Phase::e__testbody1, c__commandu__activate__FD__Frames);
+current_location.update_lineno(270);
+#line 270 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::start_f__raw__setsockopt(v__ptc__rawDeactivateFD__Frames, SocketCANtest::e__Phase::e__testbody3, c__commandu__deactivate__FD__Frames);
+current_location.update_lineno(272);
+#line 272 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::e__Phase v__phase;
+current_location.update_lineno(274);
+#line 274 "SocketCAN_RAW_test.ttcn"
+v__phase = SocketCANtest::c__firstPhase;
+current_location.update_lineno(274);
+#line 274 "SocketCAN_RAW_test.ttcn"
+for ( ; ; ) {
+current_location.update_lineno(274);
+#line 274 "SocketCAN_RAW_test.ttcn"
+if (!(v__phase < SocketCANtest::e__Phase::e__testcase__complete)) break;
+current_location.update_lineno(275);
+#line 275 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::f__startPhase(v__phase);
+current_location.update_lineno(276);
+#line 276 "SocketCAN_RAW_test.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("MTC: ");
+v__phase.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(277);
+#line 277 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::f__awaitEndPhase(v__phase);
+current_location.update_lineno(274);
+#line 274 "SocketCAN_RAW_test.ttcn"
+v__phase = SocketCANtest::f__incMTCPhase(v__phase);
+}
+current_location.update_lineno(280);
+#line 280 "SocketCAN_RAW_test.ttcn"
+{
+tmp_25:
+alt_status alt_flag = ALT_UNCHECKED, default_flag = ALT_UNCHECKED;
+TTCN_Snapshot::take_new(FALSE);
+for ( ; ; ) {
+if (alt_flag != ALT_NO) {
+alt_flag = TTCN_Runtime::component_done(ALL_COMPREF);
+if (alt_flag == ALT_YES) break;
+else if (alt_flag == ALT_REPEAT) goto tmp_25;
+}
+if (default_flag != ALT_NO) {
+default_flag = TTCN_Default::try_altsteps();
+if (default_flag == ALT_YES || default_flag == ALT_BREAK) break;
+else if (default_flag == ALT_REPEAT) goto tmp_25;
+}
+current_location.update_lineno(280);
+#line 280 "SocketCAN_RAW_test.ttcn"
+if (alt_flag == ALT_NO && default_flag == ALT_NO) TTCN_error("Stand-alone done statement failed in file SocketCAN_RAW_test.ttcn, line 280.");
+TTCN_Snapshot::take_new(TRUE);
+}
+}
+current_location.update_lineno(281);
+#line 281 "SocketCAN_RAW_test.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "MTC done");
+current_location.update_lineno(283);
+#line 283 "SocketCAN_RAW_test.ttcn"
+TTCN_Runtime::disconnect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawActivateFD__Frames, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(284);
+#line 284 "SocketCAN_RAW_test.ttcn"
+TTCN_Runtime::disconnect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawDeactivateFD__Frames, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(286);
+#line 286 "SocketCAN_RAW_test.ttcn"
+TTCN_Runtime::kill_component(ALL_COMPREF);
+} catch (const TC_Error& tc_error) {
+} catch (const TC_End& tc_end) {
+TTCN_Logger::log_str(TTCN_FUNCTION, "Test case tc_can_raw_setsockopt_CAN_RAW_FD_FRAMES was stopped.");
+}
+return TTCN_Runtime::end_testcase();
+}
+
+verdicttype testcase_tc__can__raw__setsockopt__CAN__RAW__JOIN__FILTERS(boolean has_timer, double timer_value)
+{
+TTCN_Runtime::check_begin_testcase(has_timer, timer_value);
+TTCN_Location current_location("SocketCAN_RAW_test.ttcn", 289, TTCN_Location::LOCATION_TESTCASE, "tc_can_raw_setsockopt_CAN_RAW_JOIN_FILTERS");
+try {
+TTCN_Runtime::begin_testcase("SocketCAN_RAW_test", "tc_can_raw_setsockopt_CAN_RAW_JOIN_FILTERS", "SocketCANtest", "MTC", "SocketCANtest", "MTC", has_timer, timer_value);
+current_location.update_lineno(291);
+#line 291 "SocketCAN_RAW_test.ttcn"
+COMPONENT v__ptc__rawActivateJoinFilters(TTCN_Runtime::create_component("SocketCANtest", "PTC", "PTC1_ptc_rawActivateJoinFilters", NULL, TRUE));
+current_location.update_lineno(292);
+#line 292 "SocketCAN_RAW_test.ttcn"
+COMPONENT v__ptc__rawDeactivateJoinFilters(TTCN_Runtime::create_component("SocketCANtest", "PTC", "PTC1_ptc_rawDeactivateJoinFilters", NULL, TRUE));
+current_location.update_lineno(294);
+#line 294 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::f__addSyncSlaveSet(v__ptc__rawActivateJoinFilters, SocketCANtest::MTC_component_v__PTCSet);
+current_location.update_lineno(295);
+#line 295 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::f__addSyncSlaveSet(v__ptc__rawDeactivateJoinFilters, SocketCANtest::MTC_component_v__PTCSet);
+current_location.update_lineno(296);
+#line 296 "SocketCAN_RAW_test.ttcn"
+TTCN_Runtime::connect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawActivateJoinFilters, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(297);
+#line 297 "SocketCAN_RAW_test.ttcn"
+TTCN_Runtime::connect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawDeactivateJoinFilters, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(299);
+#line 299 "SocketCAN_RAW_test.ttcn"
+SocketCAN__Types::SocketCAN__setsockopt__commandu c__commandu__activate__JoinFilters;
+c__commandu__activate__JoinFilters.join__filters() = Raw::DisableEnable__enum::Enable;
+current_location.update_lineno(300);
+#line 300 "SocketCAN_RAW_test.ttcn"
+SocketCAN__Types::SocketCAN__setsockopt__commandu c__commandu__deactivate__JoinFilters;
+c__commandu__deactivate__JoinFilters.join__filters() = Raw::DisableEnable__enum::Disable;
+current_location.update_lineno(303);
+#line 303 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::start_f__raw__setsockopt(v__ptc__rawActivateJoinFilters, SocketCANtest::e__Phase::e__testbody1, c__commandu__activate__JoinFilters);
+current_location.update_lineno(306);
+#line 306 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::start_f__raw__setsockopt(v__ptc__rawDeactivateJoinFilters, SocketCANtest::e__Phase::e__testbody3, c__commandu__deactivate__JoinFilters);
+current_location.update_lineno(308);
+#line 308 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::e__Phase v__phase;
+current_location.update_lineno(310);
+#line 310 "SocketCAN_RAW_test.ttcn"
+v__phase = SocketCANtest::c__firstPhase;
+current_location.update_lineno(310);
+#line 310 "SocketCAN_RAW_test.ttcn"
+for ( ; ; ) {
+current_location.update_lineno(310);
+#line 310 "SocketCAN_RAW_test.ttcn"
+if (!(v__phase < SocketCANtest::e__Phase::e__testcase__complete)) break;
+current_location.update_lineno(311);
+#line 311 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::f__startPhase(v__phase);
+current_location.update_lineno(312);
+#line 312 "SocketCAN_RAW_test.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("MTC: ");
+v__phase.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(313);
+#line 313 "SocketCAN_RAW_test.ttcn"
+SocketCANtest::f__awaitEndPhase(v__phase);
+current_location.update_lineno(310);
+#line 310 "SocketCAN_RAW_test.ttcn"
+v__phase = SocketCANtest::f__incMTCPhase(v__phase);
+}
+current_location.update_lineno(316);
+#line 316 "SocketCAN_RAW_test.ttcn"
+{
+tmp_28:
+alt_status alt_flag = ALT_UNCHECKED, default_flag = ALT_UNCHECKED;
+TTCN_Snapshot::take_new(FALSE);
+for ( ; ; ) {
+if (alt_flag != ALT_NO) {
+alt_flag = TTCN_Runtime::component_done(ALL_COMPREF);
+if (alt_flag == ALT_YES) break;
+else if (alt_flag == ALT_REPEAT) goto tmp_28;
+}
+if (default_flag != ALT_NO) {
+default_flag = TTCN_Default::try_altsteps();
+if (default_flag == ALT_YES || default_flag == ALT_BREAK) break;
+else if (default_flag == ALT_REPEAT) goto tmp_28;
+}
+current_location.update_lineno(316);
+#line 316 "SocketCAN_RAW_test.ttcn"
+if (alt_flag == ALT_NO && default_flag == ALT_NO) TTCN_error("Stand-alone done statement failed in file SocketCAN_RAW_test.ttcn, line 316.");
+TTCN_Snapshot::take_new(TRUE);
+}
+}
+current_location.update_lineno(317);
+#line 317 "SocketCAN_RAW_test.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "MTC done");
+current_location.update_lineno(319);
+#line 319 "SocketCAN_RAW_test.ttcn"
+TTCN_Runtime::disconnect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawActivateJoinFilters, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(320);
+#line 320 "SocketCAN_RAW_test.ttcn"
+TTCN_Runtime::disconnect_port(MTC_COMPREF, SocketCANtest::MTC_component_pt__sync.get_name(), v__ptc__rawDeactivateJoinFilters, SocketCANtest::PTC_component_pt__sync.get_name());
+current_location.update_lineno(322);
+#line 322 "SocketCAN_RAW_test.ttcn"
+TTCN_Runtime::kill_component(ALL_COMPREF);
+} catch (const TC_Error& tc_error) {
+} catch (const TC_End& tc_end) {
+TTCN_Logger::log_str(TTCN_FUNCTION, "Test case tc_can_raw_setsockopt_CAN_RAW_JOIN_FILTERS was stopped.");
+}
+return TTCN_Runtime::end_testcase();
+}
+
+
+/* Bodies of static functions */
+
+static void pre_init_module()
+{
+TTCN_Location current_location("SocketCAN_RAW_test.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "SocketCAN_RAW_test");
+SocketCANtest::module_object.pre_init_module();
+CanError::module_object.pre_init_module();
+module_object.add_testcase_nonpard("tc_can_raw_send_and_receive_can_frame", testcase_tc__can__raw__send__and__receive__can__frame);
+module_object.add_testcase_nonpard("tc_can_raw_send_and_receive_canfd_frame", testcase_tc__can__raw__send__and__receive__canfd__frame);
+module_object.add_testcase_nonpard("tc_can_raw_setsockopt_CAN_RAW_FILTER", testcase_tc__can__raw__setsockopt__CAN__RAW__FILTER);
+module_object.add_testcase_nonpard("tc_can_raw_setsockopt_CAN_RAW_ERR_FILTER", testcase_tc__can__raw__setsockopt__CAN__RAW__ERR__FILTER);
+module_object.add_testcase_nonpard("tc_can_raw_setsockopt_CAN_RAW_LOOPBACK", testcase_tc__can__raw__setsockopt__CAN__RAW__LOOPBACK);
+module_object.add_testcase_nonpard("tc_can_raw_setsockopt_CAN_RAW_RECV_OWN_MSGS", testcase_tc__can__raw__setsockopt__CAN__RAW__RECV__OWN__MSGS);
+module_object.add_testcase_nonpard("tc_can_raw_setsockopt_CAN_RAW_FD_FRAMES", testcase_tc__can__raw__setsockopt__CAN__RAW__FD__FRAMES);
+module_object.add_testcase_nonpard("tc_can_raw_setsockopt_CAN_RAW_JOIN_FILTERS", testcase_tc__can__raw__setsockopt__CAN__RAW__JOIN__FILTERS);
+}
+
+static void post_init_module()
+{
+TTCN_Location current_location("SocketCAN_RAW_test.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "SocketCAN_RAW_test");
+SocketCANtest::module_object.post_init_module();
+CanError::module_object.post_init_module();
+}
+
+
+} /* end of namespace */
diff --git a/demo/SocketCAN_RAW_test.d b/demo/SocketCAN_RAW_test.d
new file mode 100644
index 0000000..a15e392
--- /dev/null
+++ b/demo/SocketCAN_RAW_test.d
@@ -0,0 +1,61 @@
+SocketCAN_RAW_test.o SocketCAN_RAW_test.d : SocketCAN_RAW_test.cc SocketCAN_RAW_test.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TTCN3.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/version.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/cversion.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Types.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Vector.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Error.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Basetype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Encdec.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RInt.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON_Tokenizer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Logger.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Template.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Integer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ttcn3float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Boolean.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Null.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Optional.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Param_Types.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/memory.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/BER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Textbuf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Parameters.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XmlReader.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Objid.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Verdicttype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Component.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Bitstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RAW.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/CharCoding.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Hexstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Octetstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Any.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Universal_charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Struct_of.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Array.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_CharacterString.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_External.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TEXT.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_EmbeddedPDV.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Addfunc.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Timer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Port.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Event_Handler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/TitanLoggerApiSimple.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/PreGenRecordOf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Module_list.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Snapshot.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Default.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Runtime.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/OER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Profiler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ProfilerTools.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Debugger.hh \
+ SocketCANtest.hh SocketCAN_PortType.hh SocketCAN_Types.hh Bcm.hh Can.hh \
+ General_Types.hh Raw.hh ../src/SocketCAN_PT.hh SocketCAN_Types.hh \
+ SocketCAN_Templates.hh CanError.hh
diff --git a/demo/SocketCAN_RAW_test.hh b/demo/SocketCAN_RAW_test.hh
new file mode 100644
index 0000000..639df66
--- /dev/null
+++ b/demo/SocketCAN_RAW_test.hh
@@ -0,0 +1,52 @@
+// This C++ header file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+#ifndef SocketCAN__RAW__test_HH
+#define SocketCAN__RAW__test_HH
+
+#ifdef TITAN_RUNTIME_2
+#error Generated code does not match with used runtime.\
+ Code was generated without -R option but -DTITAN_RUNTIME_2 was used.
+#endif
+
+/* Header file includes */
+
+#include <TTCN3.hh>
+#include "SocketCANtest.hh"
+#include "CanError.hh"
+
+#if TTCN3_VERSION != 60600
+#error Version mismatch detected.\
+ Please check the version of the TTCN-3 compiler and the base library.\
+ Run make clean and rebuild the project if the version of the compiler changed recently.
+#endif
+
+#ifndef LINUX
+#error This file should be compiled on LINUX
+#endif
+
+namespace SocketCAN__RAW__test {
+
+/* Function prototypes */
+
+extern verdicttype testcase_tc__can__raw__send__and__receive__can__frame(boolean has_timer, double timer_value);
+extern verdicttype testcase_tc__can__raw__send__and__receive__canfd__frame(boolean has_timer, double timer_value);
+extern verdicttype testcase_tc__can__raw__setsockopt__CAN__RAW__FILTER(boolean has_timer, double timer_value);
+extern verdicttype testcase_tc__can__raw__setsockopt__CAN__RAW__ERR__FILTER(boolean has_timer, double timer_value);
+extern verdicttype testcase_tc__can__raw__setsockopt__CAN__RAW__LOOPBACK(boolean has_timer, double timer_value);
+extern verdicttype testcase_tc__can__raw__setsockopt__CAN__RAW__RECV__OWN__MSGS(boolean has_timer, double timer_value);
+extern verdicttype testcase_tc__can__raw__setsockopt__CAN__RAW__FD__FRAMES(boolean has_timer, double timer_value);
+extern verdicttype testcase_tc__can__raw__setsockopt__CAN__RAW__JOIN__FILTERS(boolean has_timer, double timer_value);
+
+/* Global variable declarations */
+
+extern TTCN_Module module_object;
+
+} /* end of namespace */
+
+#endif
diff --git a/demo/SocketCAN_RAW_test.o b/demo/SocketCAN_RAW_test.o
new file mode 100644
index 0000000..b11546f
--- /dev/null
+++ b/demo/SocketCAN_RAW_test.o
Binary files differ
diff --git a/demo/SocketCAN_Templates.cc b/demo/SocketCAN_Templates.cc
new file mode 100644
index 0000000..3b5401a
--- /dev/null
+++ b/demo/SocketCAN_Templates.cc
@@ -0,0 +1,170 @@
+// This C++ source file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+/* Including header files */
+
+#include "SocketCAN_Templates.hh"
+
+namespace SocketCAN__Templates {
+
+/* Prototypes of static functions */
+
+static void pre_init_module();
+static void post_init_module();
+
+/* Literal string constants */
+
+static const unsigned char module_checksum[] = { 0x1d, 0x05, 0xef, 0xf1, 0xa5, 0xb8, 0x02, 0x2c, 0x96, 0x81, 0xbf, 0x16, 0x06, 0xef, 0xdf, 0x37 };
+
+/* Global variable definitions */
+
+TTCN_Module module_object("SocketCAN_Templates", __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);
+
+static const RuntimeVersionChecker ver_checker(  current_runtime_version.requires_major_version_6,
+  current_runtime_version.requires_minor_version_6,
+  current_runtime_version.requires_patch_level_0,  current_runtime_version.requires_runtime_1);
+
+/* Bodies of functions, altsteps and testcases */
+
+SocketCAN__Types::SocketCAN__Result_template a__result(const SocketCAN__Types::SocketCAN__Result__code& v__result__code)
+{
+TTCN_Location current_location("../src/SocketCAN_Templates.ttcn", 22, TTCN_Location::LOCATION_TEMPLATE, "a_result");
+SocketCAN__Types::SocketCAN__Result_template ret_val;
+ret_val.result__code() = v__result__code;
+ret_val.err() = ANY_OR_OMIT;
+ret_val.err__text() = ANY_OR_OMIT;
+return ret_val;
+}
+
+SocketCAN__Types::SocketCAN__socket__result_template a__SocketCAN__socket__result(const SocketCAN__Types::SocketCAN__Result_template& p__result)
+{
+TTCN_Location current_location("../src/SocketCAN_Templates.ttcn", 28, TTCN_Location::LOCATION_TEMPLATE, "a_SocketCAN_socket_result");
+SocketCAN__Types::SocketCAN__socket__result_template ret_val;
+ret_val.id() = ANY_VALUE;
+ret_val.result() = p__result;
+return ret_val;
+}
+
+SocketCAN__Types::SocketCAN__ioctl__result_template a__SocketCAN__ioctl__result(const SocketCAN__Types::SocketCAN__Result_template& p__result)
+{
+TTCN_Location current_location("../src/SocketCAN_Templates.ttcn", 34, TTCN_Location::LOCATION_TEMPLATE, "a_SocketCAN_ioctl_result");
+SocketCAN__Types::SocketCAN__ioctl__result_template ret_val;
+ret_val.ifr() = ANY_VALUE;
+ret_val.result() = p__result;
+return ret_val;
+}
+
+SocketCAN__Types::SocketCAN__connect__result_template a__SocketCAN__connect__result(const SocketCAN__Types::SocketCAN__Result_template& p__result)
+{
+TTCN_Location current_location("../src/SocketCAN_Templates.ttcn", 40, TTCN_Location::LOCATION_TEMPLATE, "a_SocketCAN_connect_result");
+SocketCAN__Types::SocketCAN__connect__result_template ret_val;
+ret_val.result() = p__result;
+return ret_val;
+}
+
+SocketCAN__Types::SocketCAN__bind__result_template a__SocketCAN__bind__result(const SocketCAN__Types::SocketCAN__Result_template& p__result)
+{
+TTCN_Location current_location("../src/SocketCAN_Templates.ttcn", 45, TTCN_Location::LOCATION_TEMPLATE, "a_SocketCAN_bind_result");
+SocketCAN__Types::SocketCAN__bind__result_template ret_val;
+ret_val.result() = p__result;
+return ret_val;
+}
+
+SocketCAN__Types::SocketCAN__send__data__result_template a__SocketCAN__send__data__result(const SocketCAN__Types::SocketCAN__Result_template& p__result)
+{
+TTCN_Location current_location("../src/SocketCAN_Templates.ttcn", 50, TTCN_Location::LOCATION_TEMPLATE, "a_SocketCAN_send_data_result");
+SocketCAN__Types::SocketCAN__send__data__result_template ret_val;
+ret_val.result() = p__result;
+return ret_val;
+}
+
+SocketCAN__Types::SocketCAN__write__data__result_template a__SocketCAN__write__data__result(const SocketCAN__Types::SocketCAN__Result_template& p__result)
+{
+TTCN_Location current_location("../src/SocketCAN_Templates.ttcn", 55, TTCN_Location::LOCATION_TEMPLATE, "a_SocketCAN_write_data_result");
+SocketCAN__Types::SocketCAN__write__data__result_template ret_val;
+ret_val.result() = p__result;
+return ret_val;
+}
+
+SocketCAN__Types::SocketCAN__receive__CAN__or__CAN__FD__frame_template a__SocketCAN__receive__CAN__frame(const INTEGER_template& p__id, const OCTETSTRING_template& p__can__id, const OCTETSTRING_template& p__can__pdu)
+{
+TTCN_Location current_location("../src/SocketCAN_Templates.ttcn", 60, TTCN_Location::LOCATION_TEMPLATE, "a_SocketCAN_receive_CAN_frame");
+SocketCAN__Types::SocketCAN__receive__CAN__or__CAN__FD__frame_template ret_val;
+ret_val.id() = p__id;
+ret_val.ifr() = ANY_VALUE;
+{
+Can::CAN__frame_template& tmp_0 = ret_val.frame().can__frame();
+tmp_0.can__id() = p__can__id;
+tmp_0.can__pdu() = p__can__pdu;
+}
+ret_val.timestamp() = ANY_VALUE;
+return ret_val;
+}
+
+SocketCAN__Types::SocketCAN__receive__CAN__or__CAN__FD__frame_template a__SocketCAN__receive__CAN__FD__frame(const INTEGER_template& p__id, const OCTETSTRING_template& p__can__id, const BITSTRING_template& p__can__flags, const OCTETSTRING_template& p__can__pdu)
+{
+TTCN_Location current_location("../src/SocketCAN_Templates.ttcn", 72, TTCN_Location::LOCATION_TEMPLATE, "a_SocketCAN_receive_CAN_FD_frame");
+SocketCAN__Types::SocketCAN__receive__CAN__or__CAN__FD__frame_template ret_val;
+ret_val.id() = p__id;
+ret_val.ifr() = ANY_VALUE;
+{
+Can::CANFD__frame_template& tmp_1 = ret_val.frame().canfd__frame();
+tmp_1.can__id() = p__can__id;
+tmp_1.can__flags() = p__can__flags;
+tmp_1.can__pdu() = p__can__pdu;
+}
+ret_val.timestamp() = ANY_VALUE;
+return ret_val;
+}
+
+SocketCAN__Types::SocketCAN__receive__CAN__or__CAN__FD__frame_template a__SocketCAN__receive__CAN__or__CAN__FD__frame(const INTEGER_template& p__id, const SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame_template& p__frame)
+{
+TTCN_Location current_location("../src/SocketCAN_Templates.ttcn", 88, TTCN_Location::LOCATION_TEMPLATE, "a_SocketCAN_receive_CAN_or_CAN_FD_frame");
+SocketCAN__Types::SocketCAN__receive__CAN__or__CAN__FD__frame_template ret_val;
+ret_val.id() = p__id;
+ret_val.ifr() = ANY_VALUE;
+ret_val.frame() = p__frame;
+ret_val.timestamp() = ANY_VALUE;
+return ret_val;
+}
+
+SocketCAN__Types::SocketCAN__receive__BCM__message_template a__SocketCAN__receive__BCM__message(const INTEGER_template& p__id, const Bcm::SocketCAN__bcm__frame_template& p__frame)
+{
+TTCN_Location current_location("../src/SocketCAN_Templates.ttcn", 98, TTCN_Location::LOCATION_TEMPLATE, "a_SocketCAN_receive_BCM_message");
+SocketCAN__Types::SocketCAN__receive__BCM__message_template ret_val;
+ret_val.id() = p__id;
+ret_val.ifr() = ANY_VALUE;
+ret_val.frame() = p__frame;
+return ret_val;
+}
+
+SocketCAN__Types::SocketCAN__setsockopt__result_template a__SocketCAN__setsockopt__result(const SocketCAN__Types::SocketCAN__Result_template& p__result)
+{
+TTCN_Location current_location("../src/SocketCAN_Templates.ttcn", 107, TTCN_Location::LOCATION_TEMPLATE, "a_SocketCAN_setsockopt_result");
+SocketCAN__Types::SocketCAN__setsockopt__result_template ret_val;
+ret_val.result() = p__result;
+return ret_val;
+}
+
+
+/* Bodies of static functions */
+
+static void pre_init_module()
+{
+TTCN_Location current_location("../src/SocketCAN_Templates.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "SocketCAN_Templates");
+SocketCAN__Types::module_object.pre_init_module();
+}
+
+static void post_init_module()
+{
+TTCN_Location current_location("../src/SocketCAN_Templates.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "SocketCAN_Templates");
+SocketCAN__Types::module_object.post_init_module();
+}
+
+
+} /* end of namespace */
diff --git a/demo/SocketCAN_Templates.d b/demo/SocketCAN_Templates.d
new file mode 100644
index 0000000..69c05e9
--- /dev/null
+++ b/demo/SocketCAN_Templates.d
@@ -0,0 +1,59 @@
+SocketCAN_Templates.o SocketCAN_Templates.d : SocketCAN_Templates.cc SocketCAN_Templates.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TTCN3.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/version.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/cversion.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Types.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Vector.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Error.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Basetype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Encdec.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RInt.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON_Tokenizer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Logger.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Template.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Integer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ttcn3float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Boolean.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Null.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Optional.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Param_Types.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/memory.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/BER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Textbuf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Parameters.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XmlReader.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Objid.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Verdicttype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Component.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Bitstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RAW.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/CharCoding.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Hexstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Octetstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Any.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Universal_charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Struct_of.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Array.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_CharacterString.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_External.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TEXT.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_EmbeddedPDV.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Addfunc.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Timer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Port.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Event_Handler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/TitanLoggerApiSimple.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/PreGenRecordOf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Module_list.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Snapshot.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Default.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Runtime.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/OER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Profiler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ProfilerTools.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Debugger.hh \
+ SocketCAN_Types.hh Bcm.hh Can.hh General_Types.hh Raw.hh
diff --git a/demo/SocketCAN_Templates.hh b/demo/SocketCAN_Templates.hh
new file mode 100644
index 0000000..74ea39d
--- /dev/null
+++ b/demo/SocketCAN_Templates.hh
@@ -0,0 +1,55 @@
+// This C++ header file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+#ifndef SocketCAN__Templates_HH
+#define SocketCAN__Templates_HH
+
+#ifdef TITAN_RUNTIME_2
+#error Generated code does not match with used runtime.\
+ Code was generated without -R option but -DTITAN_RUNTIME_2 was used.
+#endif
+
+/* Header file includes */
+
+#include <TTCN3.hh>
+#include "SocketCAN_Types.hh"
+
+#if TTCN3_VERSION != 60600
+#error Version mismatch detected.\
+ Please check the version of the TTCN-3 compiler and the base library.\
+ Run make clean and rebuild the project if the version of the compiler changed recently.
+#endif
+
+#ifndef LINUX
+#error This file should be compiled on LINUX
+#endif
+
+namespace SocketCAN__Templates {
+
+/* Function prototypes */
+
+extern SocketCAN__Types::SocketCAN__Result_template a__result(const SocketCAN__Types::SocketCAN__Result__code& v__result__code);
+extern SocketCAN__Types::SocketCAN__socket__result_template a__SocketCAN__socket__result(const SocketCAN__Types::SocketCAN__Result_template& p__result);
+extern SocketCAN__Types::SocketCAN__ioctl__result_template a__SocketCAN__ioctl__result(const SocketCAN__Types::SocketCAN__Result_template& p__result);
+extern SocketCAN__Types::SocketCAN__connect__result_template a__SocketCAN__connect__result(const SocketCAN__Types::SocketCAN__Result_template& p__result);
+extern SocketCAN__Types::SocketCAN__bind__result_template a__SocketCAN__bind__result(const SocketCAN__Types::SocketCAN__Result_template& p__result);
+extern SocketCAN__Types::SocketCAN__send__data__result_template a__SocketCAN__send__data__result(const SocketCAN__Types::SocketCAN__Result_template& p__result);
+extern SocketCAN__Types::SocketCAN__write__data__result_template a__SocketCAN__write__data__result(const SocketCAN__Types::SocketCAN__Result_template& p__result);
+extern SocketCAN__Types::SocketCAN__receive__CAN__or__CAN__FD__frame_template a__SocketCAN__receive__CAN__frame(const INTEGER_template& p__id, const OCTETSTRING_template& p__can__id, const OCTETSTRING_template& p__can__pdu);
+extern SocketCAN__Types::SocketCAN__receive__CAN__or__CAN__FD__frame_template a__SocketCAN__receive__CAN__FD__frame(const INTEGER_template& p__id, const OCTETSTRING_template& p__can__id, const BITSTRING_template& p__can__flags, const OCTETSTRING_template& p__can__pdu);
+extern SocketCAN__Types::SocketCAN__receive__CAN__or__CAN__FD__frame_template a__SocketCAN__receive__CAN__or__CAN__FD__frame(const INTEGER_template& p__id, const SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame_template& p__frame);
+extern SocketCAN__Types::SocketCAN__receive__BCM__message_template a__SocketCAN__receive__BCM__message(const INTEGER_template& p__id, const Bcm::SocketCAN__bcm__frame_template& p__frame);
+extern SocketCAN__Types::SocketCAN__setsockopt__result_template a__SocketCAN__setsockopt__result(const SocketCAN__Types::SocketCAN__Result_template& p__result);
+
+/* Global variable declarations */
+
+extern TTCN_Module module_object;
+
+} /* end of namespace */
+
+#endif
diff --git a/demo/SocketCAN_Templates.o b/demo/SocketCAN_Templates.o
new file mode 100644
index 0000000..a87c658
--- /dev/null
+++ b/demo/SocketCAN_Templates.o
Binary files differ
diff --git a/demo/SocketCAN_Types.cc b/demo/SocketCAN_Types.cc
new file mode 100644
index 0000000..5313084
--- /dev/null
+++ b/demo/SocketCAN_Types.cc
@@ -0,0 +1,24484 @@
+// This C++ source file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+/* Including header files */
+
+#include "SocketCAN_Types.hh"
+
+namespace SocketCAN__Types {
+
+/* Prototypes of static functions */
+
+static void pre_init_module();
+static void post_init_module();
+
+/* Literal string constants */
+
+static const unsigned char module_checksum[] = { 0x17, 0xa2, 0xfc, 0xbb, 0xb1, 0x49, 0x47, 0xfa, 0x84, 0xf5, 0x7a, 0x2b, 0x20, 0x15, 0x8e, 0x7d };
+
+/* Global variable definitions */
+
+const XERdescriptor_t       SocketCAN__socketid_xer_ = { {"SocketCAN_socketid>\n", "SocketCAN_socketid>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SocketCAN__socketid_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SocketCAN__socketid_descr_ = { "@SocketCAN_Types.SocketCAN_socketid", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &SocketCAN__socketid_xer_, &INTEGER_json_, &SocketCAN__socketid_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SocketCAN__if__name_xer_ = { {"SocketCAN_if_name>\n", "SocketCAN_if_name>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_Typedescriptor_t SocketCAN__if__name_descr_ = { "@SocketCAN_Types.SocketCAN_if_name", NULL, &CHARSTRING_raw_, &CHARSTRING_text_, &SocketCAN__if__name_xer_, &CHARSTRING_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SocketCAN__if__index_xer_ = { {"SocketCAN_if_index>\n", "SocketCAN_if_index>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SocketCAN__if__index_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SocketCAN__if__index_descr_ = { "@SocketCAN_Types.SocketCAN_if_index", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &SocketCAN__if__index_xer_, &INTEGER_json_, &SocketCAN__if__index_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SocketCAN__Isotp__PDU_xer_ = { {"SocketCAN_Isotp_PDU>\n", "SocketCAN_Isotp_PDU>\n"}, {21, 21}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SocketCAN__Isotp__PDU_oer_ext_arr_[0] = {};
+const int SocketCAN__Isotp__PDU_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SocketCAN__Isotp__PDU_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SocketCAN__Isotp__PDU_oer_ext_arr_, 0, SocketCAN__Isotp__PDU_oer_p_};
+const TTCN_Typedescriptor_t SocketCAN__Isotp__PDU_descr_ = { "@SocketCAN_Types.SocketCAN_Isotp_PDU", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &SocketCAN__Isotp__PDU_xer_, &OCTETSTRING_json_, &SocketCAN__Isotp__PDU_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SocketCAN__timeval_tv__sec_xer_ = { {"tv_sec>\n", "tv_sec>\n"}, {8, 8}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SocketCAN__timeval_tv__sec_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SocketCAN__timeval_tv__sec_descr_ = { "@SocketCAN_Types.SocketCAN_timeval.tv_sec", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &SocketCAN__timeval_tv__sec_xer_, &INTEGER_json_, &SocketCAN__timeval_tv__sec_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SocketCAN__timeval_tv__usec_xer_ = { {"tv_usec>\n", "tv_usec>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SocketCAN__timeval_tv__usec_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SocketCAN__timeval_tv__usec_descr_ = { "@SocketCAN_Types.SocketCAN_timeval.tv_usec", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &SocketCAN__timeval_tv__usec_xer_, &INTEGER_json_, &SocketCAN__timeval_tv__usec_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for SocketCAN__timeval
+const TTCN_Typedescriptor_t SocketCAN__timeval_descr_ = { "@SocketCAN_Types.SocketCAN_timeval", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for SocketCAN__CAN__or__CAN__FD__frame
+const TTCN_Typedescriptor_t SocketCAN__CAN__or__CAN__FD__frame_descr_ = { "@SocketCAN_Types.SocketCAN_CAN_or_CAN_FD_frame", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for SocketCAN__ifr
+const TTCN_Typedescriptor_t SocketCAN__ifr_descr_ = { "@SocketCAN_Types.SocketCAN_ifr", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SocketCAN__ifr_if__name_xer_ = { {"if_name>\n", "if_name>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_Typedescriptor_t SocketCAN__ifr_if__name_descr_ = { "@SocketCAN_Types.SocketCAN_ifr.if_name", NULL, &CHARSTRING_raw_, &CHARSTRING_text_, &SocketCAN__ifr_if__name_xer_, &CHARSTRING_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SocketCAN__ifr_if__index_xer_ = { {"if_index>\n", "if_index>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SocketCAN__ifr_if__index_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SocketCAN__ifr_if__index_descr_ = { "@SocketCAN_Types.SocketCAN_ifr.if_index", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &SocketCAN__ifr_if__index_xer_, &INTEGER_json_, &SocketCAN__ifr_if__index_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for SocketCAN__if__any
+const TTCN_Typedescriptor_t SocketCAN__if__any_descr_ = { "@SocketCAN_Types.SocketCAN_if_any", NULL, NULL, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for SocketCAN__send__data__ifu
+const TTCN_Typedescriptor_t SocketCAN__send__data__ifu_descr_ = { "@SocketCAN_Types.SocketCAN_send_data_ifu", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SocketCAN__send__data__ifu_if__name_xer_ = { {"if_name>\n", "if_name>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_Typedescriptor_t SocketCAN__send__data__ifu_if__name_descr_ = { "@SocketCAN_Types.SocketCAN_send_data_ifu.if_name", NULL, &CHARSTRING_raw_, &CHARSTRING_text_, &SocketCAN__send__data__ifu_if__name_xer_, &CHARSTRING_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SocketCAN__send__data__ifu_if__index_xer_ = { {"if_index>\n", "if_index>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SocketCAN__send__data__ifu_if__index_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SocketCAN__send__data__ifu_if__index_descr_ = { "@SocketCAN_Types.SocketCAN_send_data_ifu.if_index", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &SocketCAN__send__data__ifu_if__index_xer_, &INTEGER_json_, &SocketCAN__send__data__ifu_if__index_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for SocketCAN__ioctl__ifu
+const TTCN_Typedescriptor_t SocketCAN__ioctl__ifu_descr_ = { "@SocketCAN_Types.SocketCAN_ioctl_ifu", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SocketCAN__ioctl__ifu_if__name_xer_ = { {"if_name>\n", "if_name>\n"}, {9, 9}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_Typedescriptor_t SocketCAN__ioctl__ifu_if__name_descr_ = { "@SocketCAN_Types.SocketCAN_ioctl_ifu.if_name", NULL, &CHARSTRING_raw_, &CHARSTRING_text_, &SocketCAN__ioctl__ifu_if__name_xer_, &CHARSTRING_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SocketCAN__ioctl__ifu_if__index_xer_ = { {"if_index>\n", "if_index>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SocketCAN__ioctl__ifu_if__index_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SocketCAN__ioctl__ifu_if__index_descr_ = { "@SocketCAN_Types.SocketCAN_ioctl_ifu.if_index", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &SocketCAN__ioctl__ifu_if__index_xer_, &INTEGER_json_, &SocketCAN__ioctl__ifu_if__index_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for SocketCAN__Result__code
+const TTCN_Typedescriptor_t SocketCAN__Result__code_descr_ = { "@SocketCAN_Types.SocketCAN_Result_code", NULL, NULL, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for SocketCAN__Result
+const TTCN_Typedescriptor_t SocketCAN__Result_descr_ = { "@SocketCAN_Types.SocketCAN_Result", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SocketCAN__Result_err_xer_ = { {"err>\n", "err>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SocketCAN__Result_err_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SocketCAN__Result_err_descr_ = { "@SocketCAN_Types.SocketCAN_Result.err", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &SocketCAN__Result_err_xer_, &INTEGER_json_, &SocketCAN__Result_err_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SocketCAN__Result_err__text_xer_ = { {"err_text>\n", "err_text>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED |XER_OPTIONAL, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_Typedescriptor_t SocketCAN__Result_err__text_descr_ = { "@SocketCAN_Types.SocketCAN_Result.err_text", NULL, &CHARSTRING_raw_, &CHARSTRING_text_, &SocketCAN__Result_err__text_xer_, &CHARSTRING_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for SocketCAN__socket
+const TTCN_Typedescriptor_t SocketCAN__socket_descr_ = { "@SocketCAN_Types.SocketCAN_socket", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SocketCAN__socket__result_id_xer_ = { {"id>\n", "id>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SocketCAN__socket__result_id_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SocketCAN__socket__result_id_descr_ = { "@SocketCAN_Types.SocketCAN_socket_result.id", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &SocketCAN__socket__result_id_xer_, &INTEGER_json_, &SocketCAN__socket__result_id_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for SocketCAN__socket__result
+const TTCN_Typedescriptor_t SocketCAN__socket__result_descr_ = { "@SocketCAN_Types.SocketCAN_socket_result", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SocketCAN__ioctl_id_xer_ = { {"id>\n", "id>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SocketCAN__ioctl_id_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SocketCAN__ioctl_id_descr_ = { "@SocketCAN_Types.SocketCAN_ioctl.id", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &SocketCAN__ioctl_id_xer_, &INTEGER_json_, &SocketCAN__ioctl_id_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for SocketCAN__ioctl
+const TTCN_Typedescriptor_t SocketCAN__ioctl_descr_ = { "@SocketCAN_Types.SocketCAN_ioctl", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for SocketCAN__ioctl__result
+const TTCN_Typedescriptor_t SocketCAN__ioctl__result_descr_ = { "@SocketCAN_Types.SocketCAN_ioctl_result", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for SocketCAN__connectu
+const TTCN_Typedescriptor_t SocketCAN__connectu_descr_ = { "@SocketCAN_Types.SocketCAN_connectu", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SocketCAN__connect__bcm_if__index_xer_ = { {"if_index>\n", "if_index>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SocketCAN__connect__bcm_if__index_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SocketCAN__connect__bcm_if__index_descr_ = { "@SocketCAN_Types.SocketCAN_connect_bcm.if_index", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &SocketCAN__connect__bcm_if__index_xer_, &INTEGER_json_, &SocketCAN__connect__bcm_if__index_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for SocketCAN__connect__bcm
+const TTCN_Typedescriptor_t SocketCAN__connect__bcm_descr_ = { "@SocketCAN_Types.SocketCAN_connect_bcm", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SocketCAN__connect_id_xer_ = { {"id>\n", "id>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SocketCAN__connect_id_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SocketCAN__connect_id_descr_ = { "@SocketCAN_Types.SocketCAN_connect.id", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &SocketCAN__connect_id_xer_, &INTEGER_json_, &SocketCAN__connect_id_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for SocketCAN__connect
+const TTCN_Typedescriptor_t SocketCAN__connect_descr_ = { "@SocketCAN_Types.SocketCAN_connect", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for SocketCAN__connect__result
+const TTCN_Typedescriptor_t SocketCAN__connect__result_descr_ = { "@SocketCAN_Types.SocketCAN_connect_result", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SocketCAN__bind__raw_if__index_xer_ = { {"if_index>\n", "if_index>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SocketCAN__bind__raw_if__index_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SocketCAN__bind__raw_if__index_descr_ = { "@SocketCAN_Types.SocketCAN_bind_raw.if_index", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &SocketCAN__bind__raw_if__index_xer_, &INTEGER_json_, &SocketCAN__bind__raw_if__index_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for SocketCAN__bind__raw
+const TTCN_Typedescriptor_t SocketCAN__bind__raw_descr_ = { "@SocketCAN_Types.SocketCAN_bind_raw", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SocketCAN__bind__isotp_if__index_xer_ = { {"if_index>\n", "if_index>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SocketCAN__bind__isotp_if__index_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SocketCAN__bind__isotp_if__index_descr_ = { "@SocketCAN_Types.SocketCAN_bind_isotp.if_index", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &SocketCAN__bind__isotp_if__index_xer_, &INTEGER_json_, &SocketCAN__bind__isotp_if__index_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SocketCAN__bind__isotp_rx__can__id_xer_ = { {"rx_can_id>\n", "rx_can_id>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SocketCAN__bind__isotp_rx__can__id_oer_ext_arr_[0] = {};
+const int SocketCAN__bind__isotp_rx__can__id_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SocketCAN__bind__isotp_rx__can__id_oer_ = { -1, TRUE, 4, FALSE, 0, 0, SocketCAN__bind__isotp_rx__can__id_oer_ext_arr_, 0, SocketCAN__bind__isotp_rx__can__id_oer_p_};
+const TTCN_Typedescriptor_t SocketCAN__bind__isotp_rx__can__id_descr_ = { "@SocketCAN_Types.SocketCAN_bind_isotp.rx_can_id", &OCTETSTRING_ber_, &Can::CAN__id_raw_, &OCTETSTRING_text_, &SocketCAN__bind__isotp_rx__can__id_xer_, &OCTETSTRING_json_, &SocketCAN__bind__isotp_rx__can__id_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SocketCAN__bind__isotp_tx__can__id_xer_ = { {"tx_can_id>\n", "tx_can_id>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SocketCAN__bind__isotp_tx__can__id_oer_ext_arr_[0] = {};
+const int SocketCAN__bind__isotp_tx__can__id_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SocketCAN__bind__isotp_tx__can__id_oer_ = { -1, TRUE, 4, FALSE, 0, 0, SocketCAN__bind__isotp_tx__can__id_oer_ext_arr_, 0, SocketCAN__bind__isotp_tx__can__id_oer_p_};
+const TTCN_Typedescriptor_t SocketCAN__bind__isotp_tx__can__id_descr_ = { "@SocketCAN_Types.SocketCAN_bind_isotp.tx_can_id", &OCTETSTRING_ber_, &Can::CAN__id_raw_, &OCTETSTRING_text_, &SocketCAN__bind__isotp_tx__can__id_xer_, &OCTETSTRING_json_, &SocketCAN__bind__isotp_tx__can__id_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for SocketCAN__bind__isotp
+const TTCN_Typedescriptor_t SocketCAN__bind__isotp_descr_ = { "@SocketCAN_Types.SocketCAN_bind_isotp", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for SocketCAN__bindu
+const TTCN_Typedescriptor_t SocketCAN__bindu_descr_ = { "@SocketCAN_Types.SocketCAN_bindu", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SocketCAN__bind_id_xer_ = { {"id>\n", "id>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SocketCAN__bind_id_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SocketCAN__bind_id_descr_ = { "@SocketCAN_Types.SocketCAN_bind.id", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &SocketCAN__bind_id_xer_, &INTEGER_json_, &SocketCAN__bind_id_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for SocketCAN__bind
+const TTCN_Typedescriptor_t SocketCAN__bind_descr_ = { "@SocketCAN_Types.SocketCAN_bind", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for SocketCAN__bind__result
+const TTCN_Typedescriptor_t SocketCAN__bind__result_descr_ = { "@SocketCAN_Types.SocketCAN_bind_result", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SocketCAN__send__data_id_xer_ = { {"id>\n", "id>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SocketCAN__send__data_id_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SocketCAN__send__data_id_descr_ = { "@SocketCAN_Types.SocketCAN_send_data.id", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &SocketCAN__send__data_id_xer_, &INTEGER_json_, &SocketCAN__send__data_id_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for SocketCAN__send__data
+const TTCN_Typedescriptor_t SocketCAN__send__data_descr_ = { "@SocketCAN_Types.SocketCAN_send_data", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for SocketCAN__send__data__result
+const TTCN_Typedescriptor_t SocketCAN__send__data__result_descr_ = { "@SocketCAN_Types.SocketCAN_send_data_result", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SocketCAN__write__data_id_xer_ = { {"id>\n", "id>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SocketCAN__write__data_id_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SocketCAN__write__data_id_descr_ = { "@SocketCAN_Types.SocketCAN_write_data.id", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &SocketCAN__write__data_id_xer_, &INTEGER_json_, &SocketCAN__write__data_id_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for SocketCAN__write__data
+const TTCN_Typedescriptor_t SocketCAN__write__data_descr_ = { "@SocketCAN_Types.SocketCAN_write_data", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for SocketCAN__write__data__result
+const TTCN_Typedescriptor_t SocketCAN__write__data__result_descr_ = { "@SocketCAN_Types.SocketCAN_write_data_result", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SocketCAN__write__isotp_id_xer_ = { {"id>\n", "id>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SocketCAN__write__isotp_id_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SocketCAN__write__isotp_id_descr_ = { "@SocketCAN_Types.SocketCAN_write_isotp.id", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &SocketCAN__write__isotp_id_xer_, &INTEGER_json_, &SocketCAN__write__isotp_id_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SocketCAN__write__isotp_pdu_xer_ = { {"pdu>\n", "pdu>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SocketCAN__write__isotp_pdu_oer_ext_arr_[0] = {};
+const int SocketCAN__write__isotp_pdu_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SocketCAN__write__isotp_pdu_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SocketCAN__write__isotp_pdu_oer_ext_arr_, 0, SocketCAN__write__isotp_pdu_oer_p_};
+const TTCN_Typedescriptor_t SocketCAN__write__isotp_pdu_descr_ = { "@SocketCAN_Types.SocketCAN_write_isotp.pdu", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &SocketCAN__write__isotp_pdu_xer_, &OCTETSTRING_json_, &SocketCAN__write__isotp_pdu_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for SocketCAN__write__isotp
+const TTCN_Typedescriptor_t SocketCAN__write__isotp_descr_ = { "@SocketCAN_Types.SocketCAN_write_isotp", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for SocketCAN__write__isotp__result
+const TTCN_Typedescriptor_t SocketCAN__write__isotp__result_descr_ = { "@SocketCAN_Types.SocketCAN_write_isotp_result", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SocketCAN__receive__CAN__or__CAN__FD__frame_id_xer_ = { {"id>\n", "id>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SocketCAN__receive__CAN__or__CAN__FD__frame_id_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SocketCAN__receive__CAN__or__CAN__FD__frame_id_descr_ = { "@SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame.id", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &SocketCAN__receive__CAN__or__CAN__FD__frame_id_xer_, &INTEGER_json_, &SocketCAN__receive__CAN__or__CAN__FD__frame_id_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for SocketCAN__receive__CAN__or__CAN__FD__frame
+const TTCN_Typedescriptor_t SocketCAN__receive__CAN__or__CAN__FD__frame_descr_ = { "@SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SocketCAN__receive__BCM__message_id_xer_ = { {"id>\n", "id>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SocketCAN__receive__BCM__message_id_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SocketCAN__receive__BCM__message_id_descr_ = { "@SocketCAN_Types.SocketCAN_receive_BCM_message.id", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &SocketCAN__receive__BCM__message_id_xer_, &INTEGER_json_, &SocketCAN__receive__BCM__message_id_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for SocketCAN__receive__BCM__message
+const TTCN_Typedescriptor_t SocketCAN__receive__BCM__message_descr_ = { "@SocketCAN_Types.SocketCAN_receive_BCM_message", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SocketCAN__receive__isotp__pdu_id_xer_ = { {"id>\n", "id>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SocketCAN__receive__isotp__pdu_id_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SocketCAN__receive__isotp__pdu_id_descr_ = { "@SocketCAN_Types.SocketCAN_receive_isotp_pdu.id", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &SocketCAN__receive__isotp__pdu_id_xer_, &INTEGER_json_, &SocketCAN__receive__isotp__pdu_id_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SocketCAN__receive__isotp__pdu_pdu_xer_ = { {"pdu>\n", "pdu>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SocketCAN__receive__isotp__pdu_pdu_oer_ext_arr_[0] = {};
+const int SocketCAN__receive__isotp__pdu_pdu_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SocketCAN__receive__isotp__pdu_pdu_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SocketCAN__receive__isotp__pdu_pdu_oer_ext_arr_, 0, SocketCAN__receive__isotp__pdu_pdu_oer_p_};
+const TTCN_Typedescriptor_t SocketCAN__receive__isotp__pdu_pdu_descr_ = { "@SocketCAN_Types.SocketCAN_receive_isotp_pdu.pdu", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &SocketCAN__receive__isotp__pdu_pdu_xer_, &OCTETSTRING_json_, &SocketCAN__receive__isotp__pdu_pdu_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for SocketCAN__receive__isotp__pdu
+const TTCN_Typedescriptor_t SocketCAN__receive__isotp__pdu_descr_ = { "@SocketCAN_Types.SocketCAN_receive_isotp_pdu", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for CAN__RAW__filters
+const TTCN_Typedescriptor_t CAN__RAW__filters_descr_ = { "@SocketCAN_Types.CAN_RAW_filters", NULL, NULL, NULL, NULL, NULL, NULL, &Raw::CAN__RAW__filter_descr_, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for SocketCAN__setsockopt__commandu
+const TTCN_Typedescriptor_t SocketCAN__setsockopt__commandu_descr_ = { "@SocketCAN_Types.SocketCAN_setsockopt_commandu", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SocketCAN__setsockopt__commandu_err__mask_xer_ = { {"err_mask>\n", "err_mask>\n"}, {10, 10}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SocketCAN__setsockopt__commandu_err__mask_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SocketCAN__setsockopt__commandu_err__mask_descr_ = { "@SocketCAN_Types.SocketCAN_setsockopt_commandu.err_mask", &BITSTRING_ber_, &Raw::CAN__RAW__err__mask_raw_, NULL, &SocketCAN__setsockopt__commandu_err__mask_xer_, &BITSTRING_json_, &SocketCAN__setsockopt__commandu_err__mask_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SocketCAN__setsockopt_id_xer_ = { {"id>\n", "id>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SocketCAN__setsockopt_id_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SocketCAN__setsockopt_id_descr_ = { "@SocketCAN_Types.SocketCAN_setsockopt.id", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &SocketCAN__setsockopt_id_xer_, &INTEGER_json_, &SocketCAN__setsockopt_id_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for SocketCAN__setsockopt
+const TTCN_Typedescriptor_t SocketCAN__setsockopt_descr_ = { "@SocketCAN_Types.SocketCAN_setsockopt", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for SocketCAN__setsockopt__result
+const TTCN_Typedescriptor_t SocketCAN__setsockopt__result_descr_ = { "@SocketCAN_Types.SocketCAN_setsockopt_result", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SocketCAN__close_id_xer_ = { {"id>\n", "id>\n"}, {4, 4}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SocketCAN__close_id_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SocketCAN__close_id_descr_ = { "@SocketCAN_Types.SocketCAN_close.id", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &SocketCAN__close_id_xer_, &INTEGER_json_, &SocketCAN__close_id_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for SocketCAN__close
+const TTCN_Typedescriptor_t SocketCAN__close_descr_ = { "@SocketCAN_Types.SocketCAN_close", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+TTCN_Module module_object("SocketCAN_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);
+
+static const RuntimeVersionChecker ver_checker(  current_runtime_version.requires_major_version_6,
+  current_runtime_version.requires_minor_version_6,
+  current_runtime_version.requires_patch_level_0,  current_runtime_version.requires_runtime_1);
+
+/* Member functions of C++ classes */
+
+SocketCAN__timeval::SocketCAN__timeval()
+{
+}
+
+SocketCAN__timeval::SocketCAN__timeval(const INTEGER& par_tv__sec,
+    const INTEGER& par_tv__usec)
+  :   field_tv__sec(par_tv__sec),
+  field_tv__usec(par_tv__usec)
+{
+}
+
+SocketCAN__timeval::SocketCAN__timeval(const SocketCAN__timeval& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @SocketCAN_Types.SocketCAN_timeval.");
+if (other_value.tv__sec().is_bound()) field_tv__sec = other_value.tv__sec();
+else field_tv__sec.clean_up();
+if (other_value.tv__usec().is_bound()) field_tv__usec = other_value.tv__usec();
+else field_tv__usec.clean_up();
+}
+
+void SocketCAN__timeval::clean_up()
+{
+field_tv__sec.clean_up();
+field_tv__usec.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SocketCAN__timeval::get_descriptor() const { return &SocketCAN__timeval_descr_; }
+SocketCAN__timeval& SocketCAN__timeval::operator=(const SocketCAN__timeval& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @SocketCAN_Types.SocketCAN_timeval.");
+  if (other_value.tv__sec().is_bound()) field_tv__sec = other_value.tv__sec();
+  else field_tv__sec.clean_up();
+  if (other_value.tv__usec().is_bound()) field_tv__usec = other_value.tv__usec();
+  else field_tv__usec.clean_up();
+}
+return *this;
+}
+
+boolean SocketCAN__timeval::operator==(const SocketCAN__timeval& other_value) const
+{
+return field_tv__sec==other_value.field_tv__sec
+  && field_tv__usec==other_value.field_tv__usec;
+}
+
+boolean SocketCAN__timeval::is_bound() const
+{
+return (field_tv__sec.is_bound())
+  || (field_tv__usec.is_bound());
+}
+boolean SocketCAN__timeval::is_value() const
+{
+return field_tv__sec.is_value()
+  && field_tv__usec.is_value();
+}
+void SocketCAN__timeval::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ tv_sec := ");
+field_tv__sec.log();
+TTCN_Logger::log_event_str(", tv_usec := ");
+field_tv__usec.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SocketCAN__timeval::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 @SocketCAN_Types.SocketCAN_timeval 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) tv__sec().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) tv__usec().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(), "tv_sec")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          tv__sec().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(), "tv_usec")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          tv__usec().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 @SocketCAN_Types.SocketCAN_timeval: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@SocketCAN_Types.SocketCAN_timeval");
+  }
+}
+
+void SocketCAN__timeval::set_implicit_omit()
+{
+if (tv__sec().is_bound()) tv__sec().set_implicit_omit();
+if (tv__usec().is_bound()) tv__usec().set_implicit_omit();
+}
+
+void SocketCAN__timeval::encode_text(Text_Buf& text_buf) const
+{
+field_tv__sec.encode_text(text_buf);
+field_tv__usec.encode_text(text_buf);
+}
+
+void SocketCAN__timeval::decode_text(Text_Buf& text_buf)
+{
+field_tv__sec.decode_text(text_buf);
+field_tv__usec.decode_text(text_buf);
+}
+
+struct SocketCAN__timeval_template::single_value_struct {
+INTEGER_template field_tv__sec;
+INTEGER_template field_tv__usec;
+};
+
+void SocketCAN__timeval_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_tv__sec = ANY_VALUE;
+single_value->field_tv__usec = ANY_VALUE;
+}
+}
+}
+
+void SocketCAN__timeval_template::copy_value(const SocketCAN__timeval& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.tv__sec().is_bound()) {
+  single_value->field_tv__sec = other_value.tv__sec();
+} else {
+  single_value->field_tv__sec.clean_up();
+}
+if (other_value.tv__usec().is_bound()) {
+  single_value->field_tv__usec = other_value.tv__usec();
+} else {
+  single_value->field_tv__usec.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SocketCAN__timeval_template::copy_template(const SocketCAN__timeval_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.tv__sec().get_selection()) {
+single_value->field_tv__sec = other_value.tv__sec();
+} else {
+single_value->field_tv__sec.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.tv__usec().get_selection()) {
+single_value->field_tv__usec = other_value.tv__usec();
+} else {
+single_value->field_tv__usec.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SocketCAN__timeval_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_timeval.");
+break;
+}
+set_selection(other_value);
+}
+
+SocketCAN__timeval_template::SocketCAN__timeval_template()
+{
+}
+
+SocketCAN__timeval_template::SocketCAN__timeval_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SocketCAN__timeval_template::SocketCAN__timeval_template(const SocketCAN__timeval& other_value)
+{
+copy_value(other_value);
+}
+
+SocketCAN__timeval_template::SocketCAN__timeval_template(const OPTIONAL<SocketCAN__timeval>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__timeval&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @SocketCAN_Types.SocketCAN_timeval from an unbound optional field.");
+}
+}
+
+SocketCAN__timeval_template::SocketCAN__timeval_template(const SocketCAN__timeval_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SocketCAN__timeval_template::~SocketCAN__timeval_template()
+{
+clean_up();
+}
+
+SocketCAN__timeval_template& SocketCAN__timeval_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SocketCAN__timeval_template& SocketCAN__timeval_template::operator=(const SocketCAN__timeval& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SocketCAN__timeval_template& SocketCAN__timeval_template::operator=(const OPTIONAL<SocketCAN__timeval>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__timeval&)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 @SocketCAN_Types.SocketCAN_timeval.");
+}
+return *this;
+}
+
+SocketCAN__timeval_template& SocketCAN__timeval_template::operator=(const SocketCAN__timeval_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__timeval_template::match(const SocketCAN__timeval& 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.tv__sec().is_bound()) return FALSE;
+if(!single_value->field_tv__sec.match(other_value.tv__sec(), legacy))return FALSE;
+if(!other_value.tv__usec().is_bound()) return FALSE;
+if(!single_value->field_tv__usec.match(other_value.tv__usec(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_timeval.");
+}
+return FALSE;
+}
+
+boolean SocketCAN__timeval_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_tv__sec.is_bound()
+
+ ||single_value->field_tv__usec.is_bound()
+;
+}
+
+boolean SocketCAN__timeval_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_tv__sec.is_value()
+ &&single_value->field_tv__usec.is_value();
+}
+
+void SocketCAN__timeval_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SocketCAN__timeval SocketCAN__timeval_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 @SocketCAN_Types.SocketCAN_timeval.");
+SocketCAN__timeval ret_val;
+if (single_value->field_tv__sec.is_bound()) {
+ret_val.tv__sec() = single_value->field_tv__sec.valueof();
+}
+if (single_value->field_tv__usec.is_bound()) {
+ret_val.tv__usec() = single_value->field_tv__usec.valueof();
+}
+return ret_val;
+}
+
+void SocketCAN__timeval_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @SocketCAN_Types.SocketCAN_timeval.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SocketCAN__timeval_template[list_length];
+}
+
+SocketCAN__timeval_template& SocketCAN__timeval_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @SocketCAN_Types.SocketCAN_timeval.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @SocketCAN_Types.SocketCAN_timeval.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& SocketCAN__timeval_template::tv__sec()
+{
+set_specific();
+return single_value->field_tv__sec;
+}
+
+const INTEGER_template& SocketCAN__timeval_template::tv__sec() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field tv_sec of a non-specific template of type @SocketCAN_Types.SocketCAN_timeval.");
+return single_value->field_tv__sec;
+}
+
+INTEGER_template& SocketCAN__timeval_template::tv__usec()
+{
+set_specific();
+return single_value->field_tv__usec;
+}
+
+const INTEGER_template& SocketCAN__timeval_template::tv__usec() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field tv_usec of a non-specific template of type @SocketCAN_Types.SocketCAN_timeval.");
+return single_value->field_tv__usec;
+}
+
+int SocketCAN__timeval_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_timeval 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 @SocketCAN_Types.SocketCAN_timeval 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 @SocketCAN_Types.SocketCAN_timeval containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_timeval containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_timeval containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_timeval containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_timeval.");
+  }
+  return 0;
+}
+
+void SocketCAN__timeval_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ tv_sec := ");
+single_value->field_tv__sec.log();
+TTCN_Logger::log_event_str(", tv_usec := ");
+single_value->field_tv__usec.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SocketCAN__timeval_template::log_match(const SocketCAN__timeval& 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_tv__sec.match(match_value.tv__sec(), legacy)){
+TTCN_Logger::log_logmatch_info(".tv_sec");
+single_value->field_tv__sec.log_match(match_value.tv__sec(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_tv__usec.match(match_value.tv__usec(), legacy)){
+TTCN_Logger::log_logmatch_info(".tv_usec");
+single_value->field_tv__usec.log_match(match_value.tv__usec(), 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("{ tv_sec := ");
+single_value->field_tv__sec.log_match(match_value.tv__sec(), legacy);
+TTCN_Logger::log_event_str(", tv_usec := ");
+single_value->field_tv__usec.log_match(match_value.tv__usec(), 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 SocketCAN__timeval_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_tv__sec.encode_text(text_buf);
+single_value->field_tv__usec.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 @SocketCAN_Types.SocketCAN_timeval.");
+}
+}
+
+void SocketCAN__timeval_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_tv__sec.decode_text(text_buf);
+single_value->field_tv__usec.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 SocketCAN__timeval_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 @SocketCAN_Types.SocketCAN_timeval.");
+}
+}
+
+void SocketCAN__timeval_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: {
+    SocketCAN__timeval_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @SocketCAN_Types.SocketCAN_timeval 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) tv__sec().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) tv__usec().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(), "tv_sec")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          tv__sec().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(), "tv_usec")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          tv__usec().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 @SocketCAN_Types.SocketCAN_timeval: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@SocketCAN_Types.SocketCAN_timeval");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SocketCAN__timeval_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_tv__sec.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_timeval");
+single_value->field_tv__usec.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_timeval");
+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 : "@SocketCAN_Types.SocketCAN_timeval");
+}
+
+boolean SocketCAN__timeval_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SocketCAN__timeval_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 SocketCAN__CAN__or__CAN__FD__frame::copy_value(const SocketCAN__CAN__or__CAN__FD__frame& other_value)
+{
+switch (other_value.union_selection) {
+case ALT_can__frame:
+field_can__frame = new Can::CAN__frame(*other_value.field_can__frame);
+break;
+case ALT_canfd__frame:
+field_canfd__frame = new Can::CANFD__frame(*other_value.field_canfd__frame);
+break;
+default:
+TTCN_error("Assignment of an unbound union value of type @SocketCAN_Types.SocketCAN_CAN_or_CAN_FD_frame.");
+}
+union_selection = other_value.union_selection;
+}
+
+SocketCAN__CAN__or__CAN__FD__frame::SocketCAN__CAN__or__CAN__FD__frame()
+{
+union_selection = UNBOUND_VALUE;
+}
+
+SocketCAN__CAN__or__CAN__FD__frame::SocketCAN__CAN__or__CAN__FD__frame(const SocketCAN__CAN__or__CAN__FD__frame& other_value)
+: Base_Type(){
+copy_value(other_value);
+}
+
+SocketCAN__CAN__or__CAN__FD__frame::~SocketCAN__CAN__or__CAN__FD__frame()
+{
+clean_up();
+}
+
+SocketCAN__CAN__or__CAN__FD__frame& SocketCAN__CAN__or__CAN__FD__frame::operator=(const SocketCAN__CAN__or__CAN__FD__frame& other_value)
+{
+if (this != &other_value) {
+clean_up();
+copy_value(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__CAN__or__CAN__FD__frame::operator==(const SocketCAN__CAN__or__CAN__FD__frame& other_value) const
+{
+if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @SocketCAN_Types.SocketCAN_CAN_or_CAN_FD_frame.");
+if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @SocketCAN_Types.SocketCAN_CAN_or_CAN_FD_frame.");
+if (union_selection != other_value.union_selection) return FALSE;
+switch (union_selection) {
+case ALT_can__frame:
+return *field_can__frame == *other_value.field_can__frame;
+case ALT_canfd__frame:
+return *field_canfd__frame == *other_value.field_canfd__frame;
+default:
+return FALSE;
+}
+}
+
+Can::CAN__frame& SocketCAN__CAN__or__CAN__FD__frame::can__frame()
+{
+if (union_selection != ALT_can__frame) {
+clean_up();
+field_can__frame = new Can::CAN__frame;
+union_selection = ALT_can__frame;
+}
+return *field_can__frame;
+}
+
+const Can::CAN__frame& SocketCAN__CAN__or__CAN__FD__frame::can__frame() const
+{
+if (union_selection != ALT_can__frame) TTCN_error("Using non-selected field can_frame in a value of union type @SocketCAN_Types.SocketCAN_CAN_or_CAN_FD_frame.");
+return *field_can__frame;
+}
+
+Can::CANFD__frame& SocketCAN__CAN__or__CAN__FD__frame::canfd__frame()
+{
+if (union_selection != ALT_canfd__frame) {
+clean_up();
+field_canfd__frame = new Can::CANFD__frame;
+union_selection = ALT_canfd__frame;
+}
+return *field_canfd__frame;
+}
+
+const Can::CANFD__frame& SocketCAN__CAN__or__CAN__FD__frame::canfd__frame() const
+{
+if (union_selection != ALT_canfd__frame) TTCN_error("Using non-selected field canfd_frame in a value of union type @SocketCAN_Types.SocketCAN_CAN_or_CAN_FD_frame.");
+return *field_canfd__frame;
+}
+
+boolean SocketCAN__CAN__or__CAN__FD__frame::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 @SocketCAN_Types.SocketCAN_CAN_or_CAN_FD_frame.");
+return union_selection == checked_selection;
+}
+
+boolean SocketCAN__CAN__or__CAN__FD__frame::is_bound() const
+{
+  return union_selection != UNBOUND_VALUE;
+}
+
+boolean SocketCAN__CAN__or__CAN__FD__frame::is_value() const
+{
+switch (union_selection) {
+case UNBOUND_VALUE: return FALSE;
+case ALT_can__frame: return field_can__frame->is_value();
+case ALT_canfd__frame: return field_canfd__frame->is_value();
+default: TTCN_error("Invalid selection in union is_bound");}
+}
+
+void SocketCAN__CAN__or__CAN__FD__frame::clean_up()
+{
+switch (union_selection) {
+case ALT_can__frame:
+  delete field_can__frame;
+  break;
+case ALT_canfd__frame:
+  delete field_canfd__frame;
+  break;
+default:
+  break;
+}
+union_selection = UNBOUND_VALUE;
+}
+
+void SocketCAN__CAN__or__CAN__FD__frame::log() const
+{
+switch (union_selection) {
+case ALT_can__frame:
+TTCN_Logger::log_event_str("{ can_frame := ");
+field_can__frame->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_canfd__frame:
+TTCN_Logger::log_event_str("{ canfd_frame := ");
+field_canfd__frame->log();
+TTCN_Logger::log_event_str(" }");
+break;
+default:
+TTCN_Logger::log_event_unbound();
+}
+}
+
+void SocketCAN__CAN__or__CAN__FD__frame::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, "can_frame")) {
+    can__frame().set_param(*mp_last);
+    if (!can__frame().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "canfd_frame")) {
+    canfd__frame().set_param(*mp_last);
+    if (!canfd__frame().is_bound()) clean_up();
+    return;
+  }
+  mp_last->error("Field %s does not exist in type @SocketCAN_Types.SocketCAN_CAN_or_CAN_FD_frame.", last_name);
+}
+
+void SocketCAN__CAN__or__CAN__FD__frame::set_implicit_omit()
+{
+switch (union_selection) {
+case ALT_can__frame:
+field_can__frame->set_implicit_omit(); break;
+case ALT_canfd__frame:
+field_canfd__frame->set_implicit_omit(); break;
+default: break;
+}
+}
+
+void SocketCAN__CAN__or__CAN__FD__frame::encode_text(Text_Buf& text_buf) const
+{
+text_buf.push_int(union_selection);
+switch (union_selection) {
+case ALT_can__frame:
+field_can__frame->encode_text(text_buf);
+break;
+case ALT_canfd__frame:
+field_canfd__frame->encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an unbound value of union type @SocketCAN_Types.SocketCAN_CAN_or_CAN_FD_frame.");
+}
+}
+
+void SocketCAN__CAN__or__CAN__FD__frame::decode_text(Text_Buf& text_buf)
+{
+switch ((union_selection_type)text_buf.pull_int().get_val()) {
+case ALT_can__frame:
+can__frame().decode_text(text_buf);
+break;
+case ALT_canfd__frame:
+canfd__frame().decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for type @SocketCAN_Types.SocketCAN_CAN_or_CAN_FD_frame.");
+}
+}
+
+void SocketCAN__CAN__or__CAN__FD__frame_template::copy_value(const SocketCAN__CAN__or__CAN__FD__frame& other_value)
+{
+single_value.union_selection = other_value.get_selection();
+switch (single_value.union_selection) {
+case SocketCAN__CAN__or__CAN__FD__frame::ALT_can__frame:
+single_value.field_can__frame = new Can::CAN__frame_template(other_value.can__frame());
+break;
+case SocketCAN__CAN__or__CAN__FD__frame::ALT_canfd__frame:
+single_value.field_canfd__frame = new Can::CANFD__frame_template(other_value.canfd__frame());
+break;
+default:
+TTCN_error("Initializing a template with an unbound value of type @SocketCAN_Types.SocketCAN_CAN_or_CAN_FD_frame.");
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SocketCAN__CAN__or__CAN__FD__frame_template::copy_template(const SocketCAN__CAN__or__CAN__FD__frame_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 SocketCAN__CAN__or__CAN__FD__frame::ALT_can__frame:
+single_value.field_can__frame = new Can::CAN__frame_template(*other_value.single_value.field_can__frame);
+break;
+case SocketCAN__CAN__or__CAN__FD__frame::ALT_canfd__frame:
+single_value.field_canfd__frame = new Can::CANFD__frame_template(*other_value.single_value.field_canfd__frame);
+break;
+default:
+TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @SocketCAN_Types.SocketCAN_CAN_or_CAN_FD_frame.");
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SocketCAN__CAN__or__CAN__FD__frame_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;
+default:
+TTCN_error("Copying an uninitialized template of union type @SocketCAN_Types.SocketCAN_CAN_or_CAN_FD_frame.");
+}
+set_selection(other_value);
+}
+
+SocketCAN__CAN__or__CAN__FD__frame_template::SocketCAN__CAN__or__CAN__FD__frame_template()
+{
+}
+
+SocketCAN__CAN__or__CAN__FD__frame_template::SocketCAN__CAN__or__CAN__FD__frame_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SocketCAN__CAN__or__CAN__FD__frame_template::SocketCAN__CAN__or__CAN__FD__frame_template(const SocketCAN__CAN__or__CAN__FD__frame& other_value)
+{
+copy_value(other_value);
+}
+
+SocketCAN__CAN__or__CAN__FD__frame_template::SocketCAN__CAN__or__CAN__FD__frame_template(const OPTIONAL<SocketCAN__CAN__or__CAN__FD__frame>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__CAN__or__CAN__FD__frame&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of union type @SocketCAN_Types.SocketCAN_CAN_or_CAN_FD_frame from an unbound optional field.");
+}
+}
+
+SocketCAN__CAN__or__CAN__FD__frame_template::SocketCAN__CAN__or__CAN__FD__frame_template(const SocketCAN__CAN__or__CAN__FD__frame_template& other_value)
+: Base_Template(){
+copy_template(other_value);
+}
+
+SocketCAN__CAN__or__CAN__FD__frame_template::~SocketCAN__CAN__or__CAN__FD__frame_template()
+{
+clean_up();
+}
+
+void SocketCAN__CAN__or__CAN__FD__frame_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case SocketCAN__CAN__or__CAN__FD__frame::ALT_can__frame:
+delete single_value.field_can__frame;
+break;
+case SocketCAN__CAN__or__CAN__FD__frame::ALT_canfd__frame:
+delete single_value.field_canfd__frame;
+default:
+break;
+}
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SocketCAN__CAN__or__CAN__FD__frame_template& SocketCAN__CAN__or__CAN__FD__frame_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SocketCAN__CAN__or__CAN__FD__frame_template& SocketCAN__CAN__or__CAN__FD__frame_template::operator=(const SocketCAN__CAN__or__CAN__FD__frame& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SocketCAN__CAN__or__CAN__FD__frame_template& SocketCAN__CAN__or__CAN__FD__frame_template::operator=(const OPTIONAL<SocketCAN__CAN__or__CAN__FD__frame>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__CAN__or__CAN__FD__frame&)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 @SocketCAN_Types.SocketCAN_CAN_or_CAN_FD_frame.");
+}
+return *this;
+}
+
+SocketCAN__CAN__or__CAN__FD__frame_template& SocketCAN__CAN__or__CAN__FD__frame_template::operator=(const SocketCAN__CAN__or__CAN__FD__frame_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__CAN__or__CAN__FD__frame_template::match(const SocketCAN__CAN__or__CAN__FD__frame& 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:
+{
+SocketCAN__CAN__or__CAN__FD__frame::union_selection_type value_selection = other_value.get_selection();
+if (value_selection == SocketCAN__CAN__or__CAN__FD__frame::UNBOUND_VALUE) return FALSE;
+if (value_selection != single_value.union_selection) return FALSE;
+switch (value_selection) {
+case SocketCAN__CAN__or__CAN__FD__frame::ALT_can__frame:
+return single_value.field_can__frame->match(other_value.can__frame(), legacy);
+case SocketCAN__CAN__or__CAN__FD__frame::ALT_canfd__frame:
+return single_value.field_canfd__frame->match(other_value.canfd__frame(), legacy);
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @SocketCAN_Types.SocketCAN_CAN_or_CAN_FD_frame.");
+}
+}
+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;
+default:
+TTCN_error ("Matching an uninitialized template of union type @SocketCAN_Types.SocketCAN_CAN_or_CAN_FD_frame.");
+}
+return FALSE;
+}
+
+boolean SocketCAN__CAN__or__CAN__FD__frame_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+switch (single_value.union_selection) {
+case SocketCAN__CAN__or__CAN__FD__frame::ALT_can__frame:
+return single_value.field_can__frame->is_value();
+case SocketCAN__CAN__or__CAN__FD__frame::ALT_canfd__frame:
+return single_value.field_canfd__frame->is_value();
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @SocketCAN_Types.SocketCAN_CAN_or_CAN_FD_frame.");
+}
+}
+
+SocketCAN__CAN__or__CAN__FD__frame SocketCAN__CAN__or__CAN__FD__frame_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 @SocketCAN_Types.SocketCAN_CAN_or_CAN_FD_frame.");
+SocketCAN__CAN__or__CAN__FD__frame ret_val;
+switch (single_value.union_selection) {
+case SocketCAN__CAN__or__CAN__FD__frame::ALT_can__frame:
+ret_val.can__frame() = single_value.field_can__frame->valueof();
+break;
+case SocketCAN__CAN__or__CAN__FD__frame::ALT_canfd__frame:
+ret_val.canfd__frame() = single_value.field_canfd__frame->valueof();
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @SocketCAN_Types.SocketCAN_CAN_or_CAN_FD_frame.");
+}
+return ret_val;
+}
+
+SocketCAN__CAN__or__CAN__FD__frame_template& SocketCAN__CAN__or__CAN__FD__frame_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @SocketCAN_Types.SocketCAN_CAN_or_CAN_FD_frame.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @SocketCAN_Types.SocketCAN_CAN_or_CAN_FD_frame.");
+return value_list.list_value[list_index];
+}
+void SocketCAN__CAN__or__CAN__FD__frame_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error ("Internal error: Setting an invalid list for a template of union type @SocketCAN_Types.SocketCAN_CAN_or_CAN_FD_frame.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SocketCAN__CAN__or__CAN__FD__frame_template[list_length];
+}
+
+Can::CAN__frame_template& SocketCAN__CAN__or__CAN__FD__frame_template::can__frame()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != SocketCAN__CAN__or__CAN__FD__frame::ALT_can__frame) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_can__frame = new Can::CAN__frame_template(ANY_VALUE);
+else single_value.field_can__frame = new Can::CAN__frame_template;
+single_value.union_selection = SocketCAN__CAN__or__CAN__FD__frame::ALT_can__frame;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_can__frame;
+}
+
+const Can::CAN__frame_template& SocketCAN__CAN__or__CAN__FD__frame_template::can__frame() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field can_frame in a non-specific template of union type @SocketCAN_Types.SocketCAN_CAN_or_CAN_FD_frame.");
+if (single_value.union_selection != SocketCAN__CAN__or__CAN__FD__frame::ALT_can__frame) TTCN_error("Accessing non-selected field can_frame in a template of union type @SocketCAN_Types.SocketCAN_CAN_or_CAN_FD_frame.");
+return *single_value.field_can__frame;
+}
+
+Can::CANFD__frame_template& SocketCAN__CAN__or__CAN__FD__frame_template::canfd__frame()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != SocketCAN__CAN__or__CAN__FD__frame::ALT_canfd__frame) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_canfd__frame = new Can::CANFD__frame_template(ANY_VALUE);
+else single_value.field_canfd__frame = new Can::CANFD__frame_template;
+single_value.union_selection = SocketCAN__CAN__or__CAN__FD__frame::ALT_canfd__frame;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_canfd__frame;
+}
+
+const Can::CANFD__frame_template& SocketCAN__CAN__or__CAN__FD__frame_template::canfd__frame() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field canfd_frame in a non-specific template of union type @SocketCAN_Types.SocketCAN_CAN_or_CAN_FD_frame.");
+if (single_value.union_selection != SocketCAN__CAN__or__CAN__FD__frame::ALT_canfd__frame) TTCN_error("Accessing non-selected field canfd_frame in a template of union type @SocketCAN_Types.SocketCAN_CAN_or_CAN_FD_frame.");
+return *single_value.field_canfd__frame;
+}
+
+boolean SocketCAN__CAN__or__CAN__FD__frame_template::ischosen(SocketCAN__CAN__or__CAN__FD__frame::union_selection_type checked_selection) const
+{
+if (checked_selection == SocketCAN__CAN__or__CAN__FD__frame::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @SocketCAN_Types.SocketCAN_CAN_or_CAN_FD_frame.");
+switch (template_selection) {
+case SPECIFIC_VALUE:
+if (single_value.union_selection == SocketCAN__CAN__or__CAN__FD__frame::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @SocketCAN_Types.SocketCAN_CAN_or_CAN_FD_frame.");
+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 @SocketCAN_Types.SocketCAN_CAN_or_CAN_FD_frame 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 SocketCAN__CAN__or__CAN__FD__frame_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case SocketCAN__CAN__or__CAN__FD__frame::ALT_can__frame:
+TTCN_Logger::log_event_str("{ can_frame := ");
+single_value.field_can__frame->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case SocketCAN__CAN__or__CAN__FD__frame::ALT_canfd__frame:
+TTCN_Logger::log_event_str("{ canfd_frame := ");
+single_value.field_canfd__frame->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 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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SocketCAN__CAN__or__CAN__FD__frame_template::log_match(const SocketCAN__CAN__or__CAN__FD__frame& 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()) {
+switch (single_value.union_selection) {
+case SocketCAN__CAN__or__CAN__FD__frame::ALT_can__frame:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".can_frame");
+single_value.field_can__frame->log_match(match_value.can__frame(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ can_frame := ");
+single_value.field_can__frame->log_match(match_value.can__frame(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case SocketCAN__CAN__or__CAN__FD__frame::ALT_canfd__frame:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".canfd_frame");
+single_value.field_canfd__frame->log_match(match_value.canfd__frame(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ canfd_frame := ");
+single_value.field_canfd__frame->log_match(match_value.canfd__frame(), 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 SocketCAN__CAN__or__CAN__FD__frame_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 SocketCAN__CAN__or__CAN__FD__frame::ALT_can__frame:
+single_value.field_can__frame->encode_text(text_buf);
+break;
+case SocketCAN__CAN__or__CAN__FD__frame::ALT_canfd__frame:
+single_value.field_canfd__frame->encode_text(text_buf);
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @SocketCAN_Types.SocketCAN_CAN_or_CAN_FD_frame.");
+}
+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 @SocketCAN_Types.SocketCAN_CAN_or_CAN_FD_frame.");
+}
+}
+
+void SocketCAN__CAN__or__CAN__FD__frame_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+{
+single_value.union_selection = SocketCAN__CAN__or__CAN__FD__frame::UNBOUND_VALUE;
+SocketCAN__CAN__or__CAN__FD__frame::union_selection_type new_selection = (SocketCAN__CAN__or__CAN__FD__frame::union_selection_type)text_buf.pull_int().get_val();
+switch (new_selection) {
+case SocketCAN__CAN__or__CAN__FD__frame::ALT_can__frame:
+single_value.field_can__frame = new Can::CAN__frame_template;
+single_value.field_can__frame->decode_text(text_buf);
+break;
+case SocketCAN__CAN__or__CAN__FD__frame::ALT_canfd__frame:
+single_value.field_canfd__frame = new Can::CANFD__frame_template;
+single_value.field_canfd__frame->decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @SocketCAN_Types.SocketCAN_CAN_or_CAN_FD_frame.");
+}
+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 SocketCAN__CAN__or__CAN__FD__frame_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 @SocketCAN_Types.SocketCAN_CAN_or_CAN_FD_frame.");
+}
+}
+
+boolean SocketCAN__CAN__or__CAN__FD__frame_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SocketCAN__CAN__or__CAN__FD__frame_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 SocketCAN__CAN__or__CAN__FD__frame_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 `@SocketCAN_Types.SocketCAN_CAN_or_CAN_FD_frame'");
+    }
+    if (strcmp("can_frame", param_field) == 0) {
+      can__frame().set_param(param);
+      return;
+    } else if (strcmp("canfd_frame", param_field) == 0) {
+      canfd__frame().set_param(param);
+      return;
+    } else param.error("Field `%s' not found in union template type `@SocketCAN_Types.SocketCAN_CAN_or_CAN_FD_frame'", 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: {
+    SocketCAN__CAN__or__CAN__FD__frame_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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", "@SocketCAN_Types.SocketCAN_CAN_or_CAN_FD_frame");
+    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, "can_frame")) {
+      can__frame().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "canfd_frame")) {
+      canfd__frame().set_param(*mp_last);
+      break;
+    }
+    mp_last->error("Field %s does not exist in type @SocketCAN_Types.SocketCAN_CAN_or_CAN_FD_frame.", last_name);
+  } break;
+  default:
+    param.type_error("union template", "@SocketCAN_Types.SocketCAN_CAN_or_CAN_FD_frame");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SocketCAN__CAN__or__CAN__FD__frame_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 SocketCAN__CAN__or__CAN__FD__frame::ALT_can__frame:
+single_value.field_can__frame->check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_CAN_or_CAN_FD_frame");
+return;
+case SocketCAN__CAN__or__CAN__FD__frame::ALT_canfd__frame:
+single_value.field_canfd__frame->check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_CAN_or_CAN_FD_frame");
+return;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @SocketCAN_Types.SocketCAN_CAN_or_CAN_FD_frame.");
+}
+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 : "@SocketCAN_Types.SocketCAN_CAN_or_CAN_FD_frame");
+}
+
+SocketCAN__ifr::SocketCAN__ifr()
+{
+}
+
+SocketCAN__ifr::SocketCAN__ifr(const OPTIONAL<CHARSTRING>& par_if__name,
+    const OPTIONAL<INTEGER>& par_if__index)
+  :   field_if__name(par_if__name),
+  field_if__index(par_if__index)
+{
+}
+
+SocketCAN__ifr::SocketCAN__ifr(const SocketCAN__ifr& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @SocketCAN_Types.SocketCAN_ifr.");
+if (other_value.if__name().is_bound()) field_if__name = other_value.if__name();
+else field_if__name.clean_up();
+if (other_value.if__index().is_bound()) field_if__index = other_value.if__index();
+else field_if__index.clean_up();
+}
+
+void SocketCAN__ifr::clean_up()
+{
+field_if__name.clean_up();
+field_if__index.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SocketCAN__ifr::get_descriptor() const { return &SocketCAN__ifr_descr_; }
+SocketCAN__ifr& SocketCAN__ifr::operator=(const SocketCAN__ifr& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @SocketCAN_Types.SocketCAN_ifr.");
+  if (other_value.if__name().is_bound()) field_if__name = other_value.if__name();
+  else field_if__name.clean_up();
+  if (other_value.if__index().is_bound()) field_if__index = other_value.if__index();
+  else field_if__index.clean_up();
+}
+return *this;
+}
+
+boolean SocketCAN__ifr::operator==(const SocketCAN__ifr& other_value) const
+{
+return field_if__name==other_value.field_if__name
+  && field_if__index==other_value.field_if__index;
+}
+
+boolean SocketCAN__ifr::is_bound() const
+{
+return (OPTIONAL_OMIT == field_if__name.get_selection() || field_if__name.is_bound())
+  || (OPTIONAL_OMIT == field_if__index.get_selection() || field_if__index.is_bound());
+}
+boolean SocketCAN__ifr::is_value() const
+{
+return (OPTIONAL_OMIT == field_if__name.get_selection() || field_if__name.is_value())
+  && (OPTIONAL_OMIT == field_if__index.get_selection() || field_if__index.is_value());
+}
+int SocketCAN__ifr::size_of() const
+{
+  int ret_val = 0;
+  if (field_if__name.ispresent()) ret_val++;
+  if (field_if__index.ispresent()) ret_val++;
+  return ret_val;
+}
+
+void SocketCAN__ifr::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ if_name := ");
+field_if__name.log();
+TTCN_Logger::log_event_str(", if_index := ");
+field_if__index.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SocketCAN__ifr::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 @SocketCAN_Types.SocketCAN_ifr 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) if__name().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) if__index().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(), "if_name")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          if__name().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(), "if_index")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          if__index().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 @SocketCAN_Types.SocketCAN_ifr: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@SocketCAN_Types.SocketCAN_ifr");
+  }
+}
+
+void SocketCAN__ifr::set_implicit_omit()
+{
+if (!if__name().is_bound()) if__name() = OMIT_VALUE;
+else if__name().set_implicit_omit();
+if (!if__index().is_bound()) if__index() = OMIT_VALUE;
+else if__index().set_implicit_omit();
+}
+
+void SocketCAN__ifr::encode_text(Text_Buf& text_buf) const
+{
+field_if__name.encode_text(text_buf);
+field_if__index.encode_text(text_buf);
+}
+
+void SocketCAN__ifr::decode_text(Text_Buf& text_buf)
+{
+field_if__name.decode_text(text_buf);
+field_if__index.decode_text(text_buf);
+}
+
+struct SocketCAN__ifr_template::single_value_struct {
+CHARSTRING_template field_if__name;
+INTEGER_template field_if__index;
+};
+
+void SocketCAN__ifr_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_if__name = ANY_OR_OMIT;
+single_value->field_if__index = ANY_OR_OMIT;
+}
+}
+}
+
+void SocketCAN__ifr_template::copy_value(const SocketCAN__ifr& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.if__name().is_bound()) {
+  if (other_value.if__name().ispresent()) single_value->field_if__name = other_value.if__name()();
+  else single_value->field_if__name = OMIT_VALUE;
+} else {
+  single_value->field_if__name.clean_up();
+}
+if (other_value.if__index().is_bound()) {
+  if (other_value.if__index().ispresent()) single_value->field_if__index = other_value.if__index()();
+  else single_value->field_if__index = OMIT_VALUE;
+} else {
+  single_value->field_if__index.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SocketCAN__ifr_template::copy_template(const SocketCAN__ifr_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.if__name().get_selection()) {
+single_value->field_if__name = other_value.if__name();
+} else {
+single_value->field_if__name.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.if__index().get_selection()) {
+single_value->field_if__index = other_value.if__index();
+} else {
+single_value->field_if__index.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SocketCAN__ifr_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_ifr.");
+break;
+}
+set_selection(other_value);
+}
+
+SocketCAN__ifr_template::SocketCAN__ifr_template()
+{
+}
+
+SocketCAN__ifr_template::SocketCAN__ifr_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SocketCAN__ifr_template::SocketCAN__ifr_template(const SocketCAN__ifr& other_value)
+{
+copy_value(other_value);
+}
+
+SocketCAN__ifr_template::SocketCAN__ifr_template(const OPTIONAL<SocketCAN__ifr>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__ifr&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @SocketCAN_Types.SocketCAN_ifr from an unbound optional field.");
+}
+}
+
+SocketCAN__ifr_template::SocketCAN__ifr_template(const SocketCAN__ifr_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SocketCAN__ifr_template::~SocketCAN__ifr_template()
+{
+clean_up();
+}
+
+SocketCAN__ifr_template& SocketCAN__ifr_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SocketCAN__ifr_template& SocketCAN__ifr_template::operator=(const SocketCAN__ifr& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SocketCAN__ifr_template& SocketCAN__ifr_template::operator=(const OPTIONAL<SocketCAN__ifr>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__ifr&)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 @SocketCAN_Types.SocketCAN_ifr.");
+}
+return *this;
+}
+
+SocketCAN__ifr_template& SocketCAN__ifr_template::operator=(const SocketCAN__ifr_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__ifr_template::match(const SocketCAN__ifr& 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.if__name().is_bound()) return FALSE;
+if((other_value.if__name().ispresent() ? !single_value->field_if__name.match((const CHARSTRING&)other_value.if__name(), legacy) : !single_value->field_if__name.match_omit(legacy)))return FALSE;
+if(!other_value.if__index().is_bound()) return FALSE;
+if((other_value.if__index().ispresent() ? !single_value->field_if__index.match((const INTEGER&)other_value.if__index(), legacy) : !single_value->field_if__index.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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_ifr.");
+}
+return FALSE;
+}
+
+boolean SocketCAN__ifr_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return (single_value->field_if__name.is_omit() || single_value->field_if__name.is_bound())
+
+ ||(single_value->field_if__index.is_omit() || single_value->field_if__index.is_bound())
+;
+}
+
+boolean SocketCAN__ifr_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return (single_value->field_if__name.is_omit() || single_value->field_if__name.is_value())
+ &&(single_value->field_if__index.is_omit() || single_value->field_if__index.is_value());
+}
+
+void SocketCAN__ifr_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SocketCAN__ifr SocketCAN__ifr_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 @SocketCAN_Types.SocketCAN_ifr.");
+SocketCAN__ifr ret_val;
+if (single_value->field_if__name.is_omit()) ret_val.if__name() = OMIT_VALUE;
+else if (single_value->field_if__name.is_bound()) {
+ret_val.if__name() = single_value->field_if__name.valueof();
+}
+if (single_value->field_if__index.is_omit()) ret_val.if__index() = OMIT_VALUE;
+else if (single_value->field_if__index.is_bound()) {
+ret_val.if__index() = single_value->field_if__index.valueof();
+}
+return ret_val;
+}
+
+void SocketCAN__ifr_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @SocketCAN_Types.SocketCAN_ifr.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SocketCAN__ifr_template[list_length];
+}
+
+SocketCAN__ifr_template& SocketCAN__ifr_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @SocketCAN_Types.SocketCAN_ifr.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @SocketCAN_Types.SocketCAN_ifr.");
+return value_list.list_value[list_index];
+}
+
+CHARSTRING_template& SocketCAN__ifr_template::if__name()
+{
+set_specific();
+return single_value->field_if__name;
+}
+
+const CHARSTRING_template& SocketCAN__ifr_template::if__name() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field if_name of a non-specific template of type @SocketCAN_Types.SocketCAN_ifr.");
+return single_value->field_if__name;
+}
+
+INTEGER_template& SocketCAN__ifr_template::if__index()
+{
+set_specific();
+return single_value->field_if__index;
+}
+
+const INTEGER_template& SocketCAN__ifr_template::if__index() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field if_index of a non-specific template of type @SocketCAN_Types.SocketCAN_ifr.");
+return single_value->field_if__index;
+}
+
+int SocketCAN__ifr_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_ifr which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+  {    int ret_val = 0;
+      if (single_value->field_if__name.is_present()) ret_val++;
+      if (single_value->field_if__index.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 @SocketCAN_Types.SocketCAN_ifr 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 @SocketCAN_Types.SocketCAN_ifr containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_ifr containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_ifr containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_ifr containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_ifr.");
+  }
+  return 0;
+}
+
+void SocketCAN__ifr_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ if_name := ");
+single_value->field_if__name.log();
+TTCN_Logger::log_event_str(", if_index := ");
+single_value->field_if__index.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SocketCAN__ifr_template::log_match(const SocketCAN__ifr& 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 (match_value.if__name().ispresent()){
+if(!single_value->field_if__name.match(match_value.if__name(), legacy)){
+TTCN_Logger::log_logmatch_info(".if_name");
+single_value->field_if__name.log_match(match_value.if__name(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+} else {
+if (!single_value->field_if__name.match_omit(legacy)){
+ TTCN_Logger::log_logmatch_info(".if_name := omit with ");
+TTCN_Logger::print_logmatch_buffer();
+single_value->field_if__name.log();
+TTCN_Logger::log_event_str(" unmatched");
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+}
+if (match_value.if__index().ispresent()){
+if(!single_value->field_if__index.match(match_value.if__index(), legacy)){
+TTCN_Logger::log_logmatch_info(".if_index");
+single_value->field_if__index.log_match(match_value.if__index(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+} else {
+if (!single_value->field_if__index.match_omit(legacy)){
+ TTCN_Logger::log_logmatch_info(".if_index := omit with ");
+TTCN_Logger::print_logmatch_buffer();
+single_value->field_if__index.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("{ if_name := ");
+if (match_value.if__name().ispresent()) single_value->field_if__name.log_match(match_value.if__name(), legacy);
+else {
+TTCN_Logger::log_event_str("omit with ");
+single_value->field_if__name.log();
+if (single_value->field_if__name.match_omit(legacy)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+TTCN_Logger::log_event_str(", if_index := ");
+if (match_value.if__index().ispresent()) single_value->field_if__index.log_match(match_value.if__index(), legacy);
+else {
+TTCN_Logger::log_event_str("omit with ");
+single_value->field_if__index.log();
+if (single_value->field_if__index.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 SocketCAN__ifr_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_if__name.encode_text(text_buf);
+single_value->field_if__index.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 @SocketCAN_Types.SocketCAN_ifr.");
+}
+}
+
+void SocketCAN__ifr_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_if__name.decode_text(text_buf);
+single_value->field_if__index.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 SocketCAN__ifr_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 @SocketCAN_Types.SocketCAN_ifr.");
+}
+}
+
+void SocketCAN__ifr_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: {
+    SocketCAN__ifr_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @SocketCAN_Types.SocketCAN_ifr 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) if__name().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) if__index().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(), "if_name")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          if__name().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(), "if_index")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          if__index().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 @SocketCAN_Types.SocketCAN_ifr: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@SocketCAN_Types.SocketCAN_ifr");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SocketCAN__ifr_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_if__name.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_ifr");
+single_value->field_if__index.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_ifr");
+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 : "@SocketCAN_Types.SocketCAN_ifr");
+}
+
+boolean SocketCAN__ifr_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SocketCAN__ifr_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+SocketCAN__if__any::SocketCAN__if__any()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+SocketCAN__if__any::SocketCAN__if__any(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @SocketCAN_Types.SocketCAN_if_any with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+SocketCAN__if__any::SocketCAN__if__any(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+SocketCAN__if__any::SocketCAN__if__any(const SocketCAN__if__any& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @SocketCAN_Types.SocketCAN_if_any.");
+enum_value = other_value.enum_value;
+}
+
+SocketCAN__if__any& SocketCAN__if__any::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @SocketCAN_Types.SocketCAN_if_any.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+SocketCAN__if__any& SocketCAN__if__any::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+SocketCAN__if__any& SocketCAN__if__any::operator=(const SocketCAN__if__any& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @SocketCAN_Types.SocketCAN_if_any.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean SocketCAN__if__any::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @SocketCAN_Types.SocketCAN_if_any.");
+return enum_value == other_value;
+}
+
+boolean SocketCAN__if__any::operator==(const SocketCAN__if__any& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @SocketCAN_Types.SocketCAN_if_any.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @SocketCAN_Types.SocketCAN_if_any.");
+return enum_value == other_value.enum_value;
+}
+
+boolean SocketCAN__if__any::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @SocketCAN_Types.SocketCAN_if_any.");
+return enum_value < other_value;
+}
+
+boolean SocketCAN__if__any::operator<(const SocketCAN__if__any& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @SocketCAN_Types.SocketCAN_if_any.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @SocketCAN_Types.SocketCAN_if_any.");
+return enum_value < other_value.enum_value;
+}
+
+boolean SocketCAN__if__any::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @SocketCAN_Types.SocketCAN_if_any.");
+return enum_value > other_value;
+}
+
+boolean SocketCAN__if__any::operator>(const SocketCAN__if__any& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @SocketCAN_Types.SocketCAN_if_any.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @SocketCAN_Types.SocketCAN_if_any.");
+return enum_value > other_value.enum_value;
+}
+
+const char *SocketCAN__if__any::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case ANY__INTERFACE: return "ANY_INTERFACE";
+default: return "<unknown>";
+}
+}
+
+SocketCAN__if__any::enum_type SocketCAN__if__any::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "ANY_INTERFACE")) return ANY__INTERFACE;
+else return UNKNOWN_VALUE;
+}
+
+boolean SocketCAN__if__any::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 0:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int SocketCAN__if__any::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @SocketCAN_Types.SocketCAN_if_any.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int SocketCAN__if__any::enum2int(const SocketCAN__if__any& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @SocketCAN_Types.SocketCAN_if_any.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void SocketCAN__if__any::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @SocketCAN_Types.SocketCAN_if_any.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+SocketCAN__if__any::operator SocketCAN__if__any::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @SocketCAN_Types.SocketCAN_if_any.");
+return enum_value;
+}
+
+void SocketCAN__if__any::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void SocketCAN__if__any::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@SocketCAN_Types.SocketCAN_if_any");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @SocketCAN_Types.SocketCAN_if_any.");
+  }
+}
+
+void SocketCAN__if__any::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @SocketCAN_Types.SocketCAN_if_any.");
+text_buf.push_int(enum_value);
+}
+
+void SocketCAN__if__any::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @SocketCAN_Types.SocketCAN_if_any.", enum_value);
+}
+
+void SocketCAN__if__any_template::copy_template(const SocketCAN__if__any_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SocketCAN__if__any_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @SocketCAN_Types.SocketCAN_if_any.");
+}
+}
+
+SocketCAN__if__any_template::SocketCAN__if__any_template()
+{
+}
+
+SocketCAN__if__any_template::SocketCAN__if__any_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SocketCAN__if__any_template::SocketCAN__if__any_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!SocketCAN__if__any::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @SocketCAN_Types.SocketCAN_if_any with unknown numeric value %d.", other_value);
+single_value = (SocketCAN__if__any::enum_type)other_value;
+}
+
+SocketCAN__if__any_template::SocketCAN__if__any_template(SocketCAN__if__any::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+SocketCAN__if__any_template::SocketCAN__if__any_template(const SocketCAN__if__any& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == SocketCAN__if__any::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @SocketCAN_Types.SocketCAN_if_any.");
+single_value = other_value.enum_value;
+}
+
+SocketCAN__if__any_template::SocketCAN__if__any_template(const OPTIONAL<SocketCAN__if__any>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (SocketCAN__if__any::enum_type)(const SocketCAN__if__any&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @SocketCAN_Types.SocketCAN_if_any from an unbound optional field.");
+}
+}
+
+SocketCAN__if__any_template::SocketCAN__if__any_template(const SocketCAN__if__any_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+SocketCAN__if__any_template::~SocketCAN__if__any_template()
+{
+clean_up();
+}
+
+boolean SocketCAN__if__any_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean SocketCAN__if__any_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != SocketCAN__if__any::UNBOUND_VALUE;
+}
+
+void SocketCAN__if__any_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SocketCAN__if__any_template& SocketCAN__if__any_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SocketCAN__if__any_template& SocketCAN__if__any_template::operator=(int other_value)
+{
+if (!SocketCAN__if__any::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @SocketCAN_Types.SocketCAN_if_any.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (SocketCAN__if__any::enum_type)other_value;
+return *this;
+}
+
+SocketCAN__if__any_template& SocketCAN__if__any_template::operator=(SocketCAN__if__any::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+SocketCAN__if__any_template& SocketCAN__if__any_template::operator=(const SocketCAN__if__any& other_value)
+{
+if (other_value.enum_value == SocketCAN__if__any::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @SocketCAN_Types.SocketCAN_if_any to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+SocketCAN__if__any_template& SocketCAN__if__any_template::operator=(const OPTIONAL<SocketCAN__if__any>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (SocketCAN__if__any::enum_type)(const SocketCAN__if__any&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @SocketCAN_Types.SocketCAN_if_any.");
+}
+return *this;
+}
+
+SocketCAN__if__any_template& SocketCAN__if__any_template::operator=(const SocketCAN__if__any_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__if__any_template::match(SocketCAN__if__any::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @SocketCAN_Types.SocketCAN_if_any.");
+}
+return FALSE;
+}
+
+boolean SocketCAN__if__any_template::match(const SocketCAN__if__any& other_value, boolean) const
+{
+if (other_value.enum_value == SocketCAN__if__any::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @SocketCAN_Types.SocketCAN_if_any with an unbound value.");
+return match(other_value.enum_value);
+}
+
+SocketCAN__if__any::enum_type SocketCAN__if__any_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @SocketCAN_Types.SocketCAN_if_any.");
+return single_value;
+}
+
+void SocketCAN__if__any_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @SocketCAN_Types.SocketCAN_if_any.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SocketCAN__if__any_template[list_length];
+}
+
+SocketCAN__if__any_template& SocketCAN__if__any_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @SocketCAN_Types.SocketCAN_if_any.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @SocketCAN_Types.SocketCAN_if_any.");
+return value_list.list_value[list_index];
+}
+
+void SocketCAN__if__any_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(SocketCAN__if__any::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SocketCAN__if__any_template::log_match(const SocketCAN__if__any& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void SocketCAN__if__any_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @SocketCAN_Types.SocketCAN_if_any.");
+}
+}
+
+void SocketCAN__if__any_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (SocketCAN__if__any::enum_type)text_buf.pull_int().get_val();
+if (!SocketCAN__if__any::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @SocketCAN_Types.SocketCAN_if_any.", single_value);
+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 SocketCAN__if__any_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @SocketCAN_Types.SocketCAN_if_any.");
+}
+}
+
+boolean SocketCAN__if__any_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SocketCAN__if__any_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 SocketCAN__if__any_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    SocketCAN__if__any_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    SocketCAN__if__any::enum_type enum_val = SocketCAN__if__any::str_to_enum(m_p->get_enumerated());
+    if (!SocketCAN__if__any::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @SocketCAN_Types.SocketCAN_if_any.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@SocketCAN_Types.SocketCAN_if_any");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SocketCAN__if__any_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@SocketCAN_Types.SocketCAN_if_any");
+}
+
+void SocketCAN__send__data__ifu::copy_value(const SocketCAN__send__data__ifu& other_value)
+{
+switch (other_value.union_selection) {
+case ALT_if__name:
+field_if__name = new CHARSTRING(*other_value.field_if__name);
+break;
+case ALT_if__index:
+field_if__index = new INTEGER(*other_value.field_if__index);
+break;
+case ALT_if__any:
+field_if__any = new SocketCAN__if__any(*other_value.field_if__any);
+break;
+default:
+TTCN_error("Assignment of an unbound union value of type @SocketCAN_Types.SocketCAN_send_data_ifu.");
+}
+union_selection = other_value.union_selection;
+}
+
+SocketCAN__send__data__ifu::SocketCAN__send__data__ifu()
+{
+union_selection = UNBOUND_VALUE;
+}
+
+SocketCAN__send__data__ifu::SocketCAN__send__data__ifu(const SocketCAN__send__data__ifu& other_value)
+: Base_Type(){
+copy_value(other_value);
+}
+
+SocketCAN__send__data__ifu::~SocketCAN__send__data__ifu()
+{
+clean_up();
+}
+
+SocketCAN__send__data__ifu& SocketCAN__send__data__ifu::operator=(const SocketCAN__send__data__ifu& other_value)
+{
+if (this != &other_value) {
+clean_up();
+copy_value(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__send__data__ifu::operator==(const SocketCAN__send__data__ifu& other_value) const
+{
+if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @SocketCAN_Types.SocketCAN_send_data_ifu.");
+if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @SocketCAN_Types.SocketCAN_send_data_ifu.");
+if (union_selection != other_value.union_selection) return FALSE;
+switch (union_selection) {
+case ALT_if__name:
+return *field_if__name == *other_value.field_if__name;
+case ALT_if__index:
+return *field_if__index == *other_value.field_if__index;
+case ALT_if__any:
+return *field_if__any == *other_value.field_if__any;
+default:
+return FALSE;
+}
+}
+
+CHARSTRING& SocketCAN__send__data__ifu::if__name()
+{
+if (union_selection != ALT_if__name) {
+clean_up();
+field_if__name = new CHARSTRING;
+union_selection = ALT_if__name;
+}
+return *field_if__name;
+}
+
+const CHARSTRING& SocketCAN__send__data__ifu::if__name() const
+{
+if (union_selection != ALT_if__name) TTCN_error("Using non-selected field if_name in a value of union type @SocketCAN_Types.SocketCAN_send_data_ifu.");
+return *field_if__name;
+}
+
+INTEGER& SocketCAN__send__data__ifu::if__index()
+{
+if (union_selection != ALT_if__index) {
+clean_up();
+field_if__index = new INTEGER;
+union_selection = ALT_if__index;
+}
+return *field_if__index;
+}
+
+const INTEGER& SocketCAN__send__data__ifu::if__index() const
+{
+if (union_selection != ALT_if__index) TTCN_error("Using non-selected field if_index in a value of union type @SocketCAN_Types.SocketCAN_send_data_ifu.");
+return *field_if__index;
+}
+
+SocketCAN__if__any& SocketCAN__send__data__ifu::if__any()
+{
+if (union_selection != ALT_if__any) {
+clean_up();
+field_if__any = new SocketCAN__if__any;
+union_selection = ALT_if__any;
+}
+return *field_if__any;
+}
+
+const SocketCAN__if__any& SocketCAN__send__data__ifu::if__any() const
+{
+if (union_selection != ALT_if__any) TTCN_error("Using non-selected field if_any in a value of union type @SocketCAN_Types.SocketCAN_send_data_ifu.");
+return *field_if__any;
+}
+
+boolean SocketCAN__send__data__ifu::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 @SocketCAN_Types.SocketCAN_send_data_ifu.");
+return union_selection == checked_selection;
+}
+
+boolean SocketCAN__send__data__ifu::is_bound() const
+{
+  return union_selection != UNBOUND_VALUE;
+}
+
+boolean SocketCAN__send__data__ifu::is_value() const
+{
+switch (union_selection) {
+case UNBOUND_VALUE: return FALSE;
+case ALT_if__name: return field_if__name->is_value();
+case ALT_if__index: return field_if__index->is_value();
+case ALT_if__any: return field_if__any->is_value();
+default: TTCN_error("Invalid selection in union is_bound");}
+}
+
+void SocketCAN__send__data__ifu::clean_up()
+{
+switch (union_selection) {
+case ALT_if__name:
+  delete field_if__name;
+  break;
+case ALT_if__index:
+  delete field_if__index;
+  break;
+case ALT_if__any:
+  delete field_if__any;
+  break;
+default:
+  break;
+}
+union_selection = UNBOUND_VALUE;
+}
+
+void SocketCAN__send__data__ifu::log() const
+{
+switch (union_selection) {
+case ALT_if__name:
+TTCN_Logger::log_event_str("{ if_name := ");
+field_if__name->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_if__index:
+TTCN_Logger::log_event_str("{ if_index := ");
+field_if__index->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_if__any:
+TTCN_Logger::log_event_str("{ if_any := ");
+field_if__any->log();
+TTCN_Logger::log_event_str(" }");
+break;
+default:
+TTCN_Logger::log_event_unbound();
+}
+}
+
+void SocketCAN__send__data__ifu::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, "if_name")) {
+    if__name().set_param(*mp_last);
+    if (!if__name().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "if_index")) {
+    if__index().set_param(*mp_last);
+    if (!if__index().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "if_any")) {
+    if__any().set_param(*mp_last);
+    if (!if__any().is_bound()) clean_up();
+    return;
+  }
+  mp_last->error("Field %s does not exist in type @SocketCAN_Types.SocketCAN_send_data_ifu.", last_name);
+}
+
+void SocketCAN__send__data__ifu::set_implicit_omit()
+{
+switch (union_selection) {
+case ALT_if__name:
+field_if__name->set_implicit_omit(); break;
+case ALT_if__index:
+field_if__index->set_implicit_omit(); break;
+case ALT_if__any:
+field_if__any->set_implicit_omit(); break;
+default: break;
+}
+}
+
+void SocketCAN__send__data__ifu::encode_text(Text_Buf& text_buf) const
+{
+text_buf.push_int(union_selection);
+switch (union_selection) {
+case ALT_if__name:
+field_if__name->encode_text(text_buf);
+break;
+case ALT_if__index:
+field_if__index->encode_text(text_buf);
+break;
+case ALT_if__any:
+field_if__any->encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an unbound value of union type @SocketCAN_Types.SocketCAN_send_data_ifu.");
+}
+}
+
+void SocketCAN__send__data__ifu::decode_text(Text_Buf& text_buf)
+{
+switch ((union_selection_type)text_buf.pull_int().get_val()) {
+case ALT_if__name:
+if__name().decode_text(text_buf);
+break;
+case ALT_if__index:
+if__index().decode_text(text_buf);
+break;
+case ALT_if__any:
+if__any().decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for type @SocketCAN_Types.SocketCAN_send_data_ifu.");
+}
+}
+
+void SocketCAN__send__data__ifu_template::copy_value(const SocketCAN__send__data__ifu& other_value)
+{
+single_value.union_selection = other_value.get_selection();
+switch (single_value.union_selection) {
+case SocketCAN__send__data__ifu::ALT_if__name:
+single_value.field_if__name = new CHARSTRING_template(other_value.if__name());
+break;
+case SocketCAN__send__data__ifu::ALT_if__index:
+single_value.field_if__index = new INTEGER_template(other_value.if__index());
+break;
+case SocketCAN__send__data__ifu::ALT_if__any:
+single_value.field_if__any = new SocketCAN__if__any_template(other_value.if__any());
+break;
+default:
+TTCN_error("Initializing a template with an unbound value of type @SocketCAN_Types.SocketCAN_send_data_ifu.");
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SocketCAN__send__data__ifu_template::copy_template(const SocketCAN__send__data__ifu_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 SocketCAN__send__data__ifu::ALT_if__name:
+single_value.field_if__name = new CHARSTRING_template(*other_value.single_value.field_if__name);
+break;
+case SocketCAN__send__data__ifu::ALT_if__index:
+single_value.field_if__index = new INTEGER_template(*other_value.single_value.field_if__index);
+break;
+case SocketCAN__send__data__ifu::ALT_if__any:
+single_value.field_if__any = new SocketCAN__if__any_template(*other_value.single_value.field_if__any);
+break;
+default:
+TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @SocketCAN_Types.SocketCAN_send_data_ifu.");
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SocketCAN__send__data__ifu_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;
+default:
+TTCN_error("Copying an uninitialized template of union type @SocketCAN_Types.SocketCAN_send_data_ifu.");
+}
+set_selection(other_value);
+}
+
+SocketCAN__send__data__ifu_template::SocketCAN__send__data__ifu_template()
+{
+}
+
+SocketCAN__send__data__ifu_template::SocketCAN__send__data__ifu_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SocketCAN__send__data__ifu_template::SocketCAN__send__data__ifu_template(const SocketCAN__send__data__ifu& other_value)
+{
+copy_value(other_value);
+}
+
+SocketCAN__send__data__ifu_template::SocketCAN__send__data__ifu_template(const OPTIONAL<SocketCAN__send__data__ifu>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__send__data__ifu&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of union type @SocketCAN_Types.SocketCAN_send_data_ifu from an unbound optional field.");
+}
+}
+
+SocketCAN__send__data__ifu_template::SocketCAN__send__data__ifu_template(const SocketCAN__send__data__ifu_template& other_value)
+: Base_Template(){
+copy_template(other_value);
+}
+
+SocketCAN__send__data__ifu_template::~SocketCAN__send__data__ifu_template()
+{
+clean_up();
+}
+
+void SocketCAN__send__data__ifu_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case SocketCAN__send__data__ifu::ALT_if__name:
+delete single_value.field_if__name;
+break;
+case SocketCAN__send__data__ifu::ALT_if__index:
+delete single_value.field_if__index;
+break;
+case SocketCAN__send__data__ifu::ALT_if__any:
+delete single_value.field_if__any;
+default:
+break;
+}
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SocketCAN__send__data__ifu_template& SocketCAN__send__data__ifu_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SocketCAN__send__data__ifu_template& SocketCAN__send__data__ifu_template::operator=(const SocketCAN__send__data__ifu& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SocketCAN__send__data__ifu_template& SocketCAN__send__data__ifu_template::operator=(const OPTIONAL<SocketCAN__send__data__ifu>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__send__data__ifu&)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 @SocketCAN_Types.SocketCAN_send_data_ifu.");
+}
+return *this;
+}
+
+SocketCAN__send__data__ifu_template& SocketCAN__send__data__ifu_template::operator=(const SocketCAN__send__data__ifu_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__send__data__ifu_template::match(const SocketCAN__send__data__ifu& 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:
+{
+SocketCAN__send__data__ifu::union_selection_type value_selection = other_value.get_selection();
+if (value_selection == SocketCAN__send__data__ifu::UNBOUND_VALUE) return FALSE;
+if (value_selection != single_value.union_selection) return FALSE;
+switch (value_selection) {
+case SocketCAN__send__data__ifu::ALT_if__name:
+return single_value.field_if__name->match(other_value.if__name(), legacy);
+case SocketCAN__send__data__ifu::ALT_if__index:
+return single_value.field_if__index->match(other_value.if__index(), legacy);
+case SocketCAN__send__data__ifu::ALT_if__any:
+return single_value.field_if__any->match(other_value.if__any(), legacy);
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @SocketCAN_Types.SocketCAN_send_data_ifu.");
+}
+}
+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;
+default:
+TTCN_error ("Matching an uninitialized template of union type @SocketCAN_Types.SocketCAN_send_data_ifu.");
+}
+return FALSE;
+}
+
+boolean SocketCAN__send__data__ifu_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+switch (single_value.union_selection) {
+case SocketCAN__send__data__ifu::ALT_if__name:
+return single_value.field_if__name->is_value();
+case SocketCAN__send__data__ifu::ALT_if__index:
+return single_value.field_if__index->is_value();
+case SocketCAN__send__data__ifu::ALT_if__any:
+return single_value.field_if__any->is_value();
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @SocketCAN_Types.SocketCAN_send_data_ifu.");
+}
+}
+
+SocketCAN__send__data__ifu SocketCAN__send__data__ifu_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 @SocketCAN_Types.SocketCAN_send_data_ifu.");
+SocketCAN__send__data__ifu ret_val;
+switch (single_value.union_selection) {
+case SocketCAN__send__data__ifu::ALT_if__name:
+ret_val.if__name() = single_value.field_if__name->valueof();
+break;
+case SocketCAN__send__data__ifu::ALT_if__index:
+ret_val.if__index() = single_value.field_if__index->valueof();
+break;
+case SocketCAN__send__data__ifu::ALT_if__any:
+ret_val.if__any() = single_value.field_if__any->valueof();
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @SocketCAN_Types.SocketCAN_send_data_ifu.");
+}
+return ret_val;
+}
+
+SocketCAN__send__data__ifu_template& SocketCAN__send__data__ifu_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @SocketCAN_Types.SocketCAN_send_data_ifu.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @SocketCAN_Types.SocketCAN_send_data_ifu.");
+return value_list.list_value[list_index];
+}
+void SocketCAN__send__data__ifu_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error ("Internal error: Setting an invalid list for a template of union type @SocketCAN_Types.SocketCAN_send_data_ifu.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SocketCAN__send__data__ifu_template[list_length];
+}
+
+CHARSTRING_template& SocketCAN__send__data__ifu_template::if__name()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != SocketCAN__send__data__ifu::ALT_if__name) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_if__name = new CHARSTRING_template(ANY_VALUE);
+else single_value.field_if__name = new CHARSTRING_template;
+single_value.union_selection = SocketCAN__send__data__ifu::ALT_if__name;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_if__name;
+}
+
+const CHARSTRING_template& SocketCAN__send__data__ifu_template::if__name() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field if_name in a non-specific template of union type @SocketCAN_Types.SocketCAN_send_data_ifu.");
+if (single_value.union_selection != SocketCAN__send__data__ifu::ALT_if__name) TTCN_error("Accessing non-selected field if_name in a template of union type @SocketCAN_Types.SocketCAN_send_data_ifu.");
+return *single_value.field_if__name;
+}
+
+INTEGER_template& SocketCAN__send__data__ifu_template::if__index()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != SocketCAN__send__data__ifu::ALT_if__index) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_if__index = new INTEGER_template(ANY_VALUE);
+else single_value.field_if__index = new INTEGER_template;
+single_value.union_selection = SocketCAN__send__data__ifu::ALT_if__index;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_if__index;
+}
+
+const INTEGER_template& SocketCAN__send__data__ifu_template::if__index() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field if_index in a non-specific template of union type @SocketCAN_Types.SocketCAN_send_data_ifu.");
+if (single_value.union_selection != SocketCAN__send__data__ifu::ALT_if__index) TTCN_error("Accessing non-selected field if_index in a template of union type @SocketCAN_Types.SocketCAN_send_data_ifu.");
+return *single_value.field_if__index;
+}
+
+SocketCAN__if__any_template& SocketCAN__send__data__ifu_template::if__any()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != SocketCAN__send__data__ifu::ALT_if__any) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_if__any = new SocketCAN__if__any_template(ANY_VALUE);
+else single_value.field_if__any = new SocketCAN__if__any_template;
+single_value.union_selection = SocketCAN__send__data__ifu::ALT_if__any;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_if__any;
+}
+
+const SocketCAN__if__any_template& SocketCAN__send__data__ifu_template::if__any() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field if_any in a non-specific template of union type @SocketCAN_Types.SocketCAN_send_data_ifu.");
+if (single_value.union_selection != SocketCAN__send__data__ifu::ALT_if__any) TTCN_error("Accessing non-selected field if_any in a template of union type @SocketCAN_Types.SocketCAN_send_data_ifu.");
+return *single_value.field_if__any;
+}
+
+boolean SocketCAN__send__data__ifu_template::ischosen(SocketCAN__send__data__ifu::union_selection_type checked_selection) const
+{
+if (checked_selection == SocketCAN__send__data__ifu::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @SocketCAN_Types.SocketCAN_send_data_ifu.");
+switch (template_selection) {
+case SPECIFIC_VALUE:
+if (single_value.union_selection == SocketCAN__send__data__ifu::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @SocketCAN_Types.SocketCAN_send_data_ifu.");
+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 @SocketCAN_Types.SocketCAN_send_data_ifu 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 SocketCAN__send__data__ifu_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case SocketCAN__send__data__ifu::ALT_if__name:
+TTCN_Logger::log_event_str("{ if_name := ");
+single_value.field_if__name->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case SocketCAN__send__data__ifu::ALT_if__index:
+TTCN_Logger::log_event_str("{ if_index := ");
+single_value.field_if__index->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case SocketCAN__send__data__ifu::ALT_if__any:
+TTCN_Logger::log_event_str("{ if_any := ");
+single_value.field_if__any->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 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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SocketCAN__send__data__ifu_template::log_match(const SocketCAN__send__data__ifu& 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()) {
+switch (single_value.union_selection) {
+case SocketCAN__send__data__ifu::ALT_if__name:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".if_name");
+single_value.field_if__name->log_match(match_value.if__name(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ if_name := ");
+single_value.field_if__name->log_match(match_value.if__name(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case SocketCAN__send__data__ifu::ALT_if__index:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".if_index");
+single_value.field_if__index->log_match(match_value.if__index(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ if_index := ");
+single_value.field_if__index->log_match(match_value.if__index(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case SocketCAN__send__data__ifu::ALT_if__any:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".if_any");
+single_value.field_if__any->log_match(match_value.if__any(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ if_any := ");
+single_value.field_if__any->log_match(match_value.if__any(), 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 SocketCAN__send__data__ifu_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 SocketCAN__send__data__ifu::ALT_if__name:
+single_value.field_if__name->encode_text(text_buf);
+break;
+case SocketCAN__send__data__ifu::ALT_if__index:
+single_value.field_if__index->encode_text(text_buf);
+break;
+case SocketCAN__send__data__ifu::ALT_if__any:
+single_value.field_if__any->encode_text(text_buf);
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @SocketCAN_Types.SocketCAN_send_data_ifu.");
+}
+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 @SocketCAN_Types.SocketCAN_send_data_ifu.");
+}
+}
+
+void SocketCAN__send__data__ifu_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+{
+single_value.union_selection = SocketCAN__send__data__ifu::UNBOUND_VALUE;
+SocketCAN__send__data__ifu::union_selection_type new_selection = (SocketCAN__send__data__ifu::union_selection_type)text_buf.pull_int().get_val();
+switch (new_selection) {
+case SocketCAN__send__data__ifu::ALT_if__name:
+single_value.field_if__name = new CHARSTRING_template;
+single_value.field_if__name->decode_text(text_buf);
+break;
+case SocketCAN__send__data__ifu::ALT_if__index:
+single_value.field_if__index = new INTEGER_template;
+single_value.field_if__index->decode_text(text_buf);
+break;
+case SocketCAN__send__data__ifu::ALT_if__any:
+single_value.field_if__any = new SocketCAN__if__any_template;
+single_value.field_if__any->decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @SocketCAN_Types.SocketCAN_send_data_ifu.");
+}
+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 SocketCAN__send__data__ifu_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 @SocketCAN_Types.SocketCAN_send_data_ifu.");
+}
+}
+
+boolean SocketCAN__send__data__ifu_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SocketCAN__send__data__ifu_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 SocketCAN__send__data__ifu_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 `@SocketCAN_Types.SocketCAN_send_data_ifu'");
+    }
+    if (strcmp("if_name", param_field) == 0) {
+      if__name().set_param(param);
+      return;
+    } else if (strcmp("if_index", param_field) == 0) {
+      if__index().set_param(param);
+      return;
+    } else if (strcmp("if_any", param_field) == 0) {
+      if__any().set_param(param);
+      return;
+    } else param.error("Field `%s' not found in union template type `@SocketCAN_Types.SocketCAN_send_data_ifu'", 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: {
+    SocketCAN__send__data__ifu_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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", "@SocketCAN_Types.SocketCAN_send_data_ifu");
+    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, "if_name")) {
+      if__name().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "if_index")) {
+      if__index().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "if_any")) {
+      if__any().set_param(*mp_last);
+      break;
+    }
+    mp_last->error("Field %s does not exist in type @SocketCAN_Types.SocketCAN_send_data_ifu.", last_name);
+  } break;
+  default:
+    param.type_error("union template", "@SocketCAN_Types.SocketCAN_send_data_ifu");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SocketCAN__send__data__ifu_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 SocketCAN__send__data__ifu::ALT_if__name:
+single_value.field_if__name->check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_send_data_ifu");
+return;
+case SocketCAN__send__data__ifu::ALT_if__index:
+single_value.field_if__index->check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_send_data_ifu");
+return;
+case SocketCAN__send__data__ifu::ALT_if__any:
+single_value.field_if__any->check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_send_data_ifu");
+return;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @SocketCAN_Types.SocketCAN_send_data_ifu.");
+}
+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 : "@SocketCAN_Types.SocketCAN_send_data_ifu");
+}
+
+void SocketCAN__ioctl__ifu::copy_value(const SocketCAN__ioctl__ifu& other_value)
+{
+switch (other_value.union_selection) {
+case ALT_if__name:
+field_if__name = new CHARSTRING(*other_value.field_if__name);
+break;
+case ALT_if__index:
+field_if__index = new INTEGER(*other_value.field_if__index);
+break;
+case ALT_if__any:
+field_if__any = new SocketCAN__if__any(*other_value.field_if__any);
+break;
+default:
+TTCN_error("Assignment of an unbound union value of type @SocketCAN_Types.SocketCAN_ioctl_ifu.");
+}
+union_selection = other_value.union_selection;
+}
+
+SocketCAN__ioctl__ifu::SocketCAN__ioctl__ifu()
+{
+union_selection = UNBOUND_VALUE;
+}
+
+SocketCAN__ioctl__ifu::SocketCAN__ioctl__ifu(const SocketCAN__ioctl__ifu& other_value)
+: Base_Type(){
+copy_value(other_value);
+}
+
+SocketCAN__ioctl__ifu::~SocketCAN__ioctl__ifu()
+{
+clean_up();
+}
+
+SocketCAN__ioctl__ifu& SocketCAN__ioctl__ifu::operator=(const SocketCAN__ioctl__ifu& other_value)
+{
+if (this != &other_value) {
+clean_up();
+copy_value(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__ioctl__ifu::operator==(const SocketCAN__ioctl__ifu& other_value) const
+{
+if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @SocketCAN_Types.SocketCAN_ioctl_ifu.");
+if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @SocketCAN_Types.SocketCAN_ioctl_ifu.");
+if (union_selection != other_value.union_selection) return FALSE;
+switch (union_selection) {
+case ALT_if__name:
+return *field_if__name == *other_value.field_if__name;
+case ALT_if__index:
+return *field_if__index == *other_value.field_if__index;
+case ALT_if__any:
+return *field_if__any == *other_value.field_if__any;
+default:
+return FALSE;
+}
+}
+
+CHARSTRING& SocketCAN__ioctl__ifu::if__name()
+{
+if (union_selection != ALT_if__name) {
+clean_up();
+field_if__name = new CHARSTRING;
+union_selection = ALT_if__name;
+}
+return *field_if__name;
+}
+
+const CHARSTRING& SocketCAN__ioctl__ifu::if__name() const
+{
+if (union_selection != ALT_if__name) TTCN_error("Using non-selected field if_name in a value of union type @SocketCAN_Types.SocketCAN_ioctl_ifu.");
+return *field_if__name;
+}
+
+INTEGER& SocketCAN__ioctl__ifu::if__index()
+{
+if (union_selection != ALT_if__index) {
+clean_up();
+field_if__index = new INTEGER;
+union_selection = ALT_if__index;
+}
+return *field_if__index;
+}
+
+const INTEGER& SocketCAN__ioctl__ifu::if__index() const
+{
+if (union_selection != ALT_if__index) TTCN_error("Using non-selected field if_index in a value of union type @SocketCAN_Types.SocketCAN_ioctl_ifu.");
+return *field_if__index;
+}
+
+SocketCAN__if__any& SocketCAN__ioctl__ifu::if__any()
+{
+if (union_selection != ALT_if__any) {
+clean_up();
+field_if__any = new SocketCAN__if__any;
+union_selection = ALT_if__any;
+}
+return *field_if__any;
+}
+
+const SocketCAN__if__any& SocketCAN__ioctl__ifu::if__any() const
+{
+if (union_selection != ALT_if__any) TTCN_error("Using non-selected field if_any in a value of union type @SocketCAN_Types.SocketCAN_ioctl_ifu.");
+return *field_if__any;
+}
+
+boolean SocketCAN__ioctl__ifu::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 @SocketCAN_Types.SocketCAN_ioctl_ifu.");
+return union_selection == checked_selection;
+}
+
+boolean SocketCAN__ioctl__ifu::is_bound() const
+{
+  return union_selection != UNBOUND_VALUE;
+}
+
+boolean SocketCAN__ioctl__ifu::is_value() const
+{
+switch (union_selection) {
+case UNBOUND_VALUE: return FALSE;
+case ALT_if__name: return field_if__name->is_value();
+case ALT_if__index: return field_if__index->is_value();
+case ALT_if__any: return field_if__any->is_value();
+default: TTCN_error("Invalid selection in union is_bound");}
+}
+
+void SocketCAN__ioctl__ifu::clean_up()
+{
+switch (union_selection) {
+case ALT_if__name:
+  delete field_if__name;
+  break;
+case ALT_if__index:
+  delete field_if__index;
+  break;
+case ALT_if__any:
+  delete field_if__any;
+  break;
+default:
+  break;
+}
+union_selection = UNBOUND_VALUE;
+}
+
+void SocketCAN__ioctl__ifu::log() const
+{
+switch (union_selection) {
+case ALT_if__name:
+TTCN_Logger::log_event_str("{ if_name := ");
+field_if__name->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_if__index:
+TTCN_Logger::log_event_str("{ if_index := ");
+field_if__index->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_if__any:
+TTCN_Logger::log_event_str("{ if_any := ");
+field_if__any->log();
+TTCN_Logger::log_event_str(" }");
+break;
+default:
+TTCN_Logger::log_event_unbound();
+}
+}
+
+void SocketCAN__ioctl__ifu::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, "if_name")) {
+    if__name().set_param(*mp_last);
+    if (!if__name().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "if_index")) {
+    if__index().set_param(*mp_last);
+    if (!if__index().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "if_any")) {
+    if__any().set_param(*mp_last);
+    if (!if__any().is_bound()) clean_up();
+    return;
+  }
+  mp_last->error("Field %s does not exist in type @SocketCAN_Types.SocketCAN_ioctl_ifu.", last_name);
+}
+
+void SocketCAN__ioctl__ifu::set_implicit_omit()
+{
+switch (union_selection) {
+case ALT_if__name:
+field_if__name->set_implicit_omit(); break;
+case ALT_if__index:
+field_if__index->set_implicit_omit(); break;
+case ALT_if__any:
+field_if__any->set_implicit_omit(); break;
+default: break;
+}
+}
+
+void SocketCAN__ioctl__ifu::encode_text(Text_Buf& text_buf) const
+{
+text_buf.push_int(union_selection);
+switch (union_selection) {
+case ALT_if__name:
+field_if__name->encode_text(text_buf);
+break;
+case ALT_if__index:
+field_if__index->encode_text(text_buf);
+break;
+case ALT_if__any:
+field_if__any->encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an unbound value of union type @SocketCAN_Types.SocketCAN_ioctl_ifu.");
+}
+}
+
+void SocketCAN__ioctl__ifu::decode_text(Text_Buf& text_buf)
+{
+switch ((union_selection_type)text_buf.pull_int().get_val()) {
+case ALT_if__name:
+if__name().decode_text(text_buf);
+break;
+case ALT_if__index:
+if__index().decode_text(text_buf);
+break;
+case ALT_if__any:
+if__any().decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for type @SocketCAN_Types.SocketCAN_ioctl_ifu.");
+}
+}
+
+void SocketCAN__ioctl__ifu_template::copy_value(const SocketCAN__ioctl__ifu& other_value)
+{
+single_value.union_selection = other_value.get_selection();
+switch (single_value.union_selection) {
+case SocketCAN__ioctl__ifu::ALT_if__name:
+single_value.field_if__name = new CHARSTRING_template(other_value.if__name());
+break;
+case SocketCAN__ioctl__ifu::ALT_if__index:
+single_value.field_if__index = new INTEGER_template(other_value.if__index());
+break;
+case SocketCAN__ioctl__ifu::ALT_if__any:
+single_value.field_if__any = new SocketCAN__if__any_template(other_value.if__any());
+break;
+default:
+TTCN_error("Initializing a template with an unbound value of type @SocketCAN_Types.SocketCAN_ioctl_ifu.");
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SocketCAN__ioctl__ifu_template::copy_template(const SocketCAN__ioctl__ifu_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 SocketCAN__ioctl__ifu::ALT_if__name:
+single_value.field_if__name = new CHARSTRING_template(*other_value.single_value.field_if__name);
+break;
+case SocketCAN__ioctl__ifu::ALT_if__index:
+single_value.field_if__index = new INTEGER_template(*other_value.single_value.field_if__index);
+break;
+case SocketCAN__ioctl__ifu::ALT_if__any:
+single_value.field_if__any = new SocketCAN__if__any_template(*other_value.single_value.field_if__any);
+break;
+default:
+TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @SocketCAN_Types.SocketCAN_ioctl_ifu.");
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SocketCAN__ioctl__ifu_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;
+default:
+TTCN_error("Copying an uninitialized template of union type @SocketCAN_Types.SocketCAN_ioctl_ifu.");
+}
+set_selection(other_value);
+}
+
+SocketCAN__ioctl__ifu_template::SocketCAN__ioctl__ifu_template()
+{
+}
+
+SocketCAN__ioctl__ifu_template::SocketCAN__ioctl__ifu_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SocketCAN__ioctl__ifu_template::SocketCAN__ioctl__ifu_template(const SocketCAN__ioctl__ifu& other_value)
+{
+copy_value(other_value);
+}
+
+SocketCAN__ioctl__ifu_template::SocketCAN__ioctl__ifu_template(const OPTIONAL<SocketCAN__ioctl__ifu>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__ioctl__ifu&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of union type @SocketCAN_Types.SocketCAN_ioctl_ifu from an unbound optional field.");
+}
+}
+
+SocketCAN__ioctl__ifu_template::SocketCAN__ioctl__ifu_template(const SocketCAN__ioctl__ifu_template& other_value)
+: Base_Template(){
+copy_template(other_value);
+}
+
+SocketCAN__ioctl__ifu_template::~SocketCAN__ioctl__ifu_template()
+{
+clean_up();
+}
+
+void SocketCAN__ioctl__ifu_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case SocketCAN__ioctl__ifu::ALT_if__name:
+delete single_value.field_if__name;
+break;
+case SocketCAN__ioctl__ifu::ALT_if__index:
+delete single_value.field_if__index;
+break;
+case SocketCAN__ioctl__ifu::ALT_if__any:
+delete single_value.field_if__any;
+default:
+break;
+}
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SocketCAN__ioctl__ifu_template& SocketCAN__ioctl__ifu_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SocketCAN__ioctl__ifu_template& SocketCAN__ioctl__ifu_template::operator=(const SocketCAN__ioctl__ifu& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SocketCAN__ioctl__ifu_template& SocketCAN__ioctl__ifu_template::operator=(const OPTIONAL<SocketCAN__ioctl__ifu>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__ioctl__ifu&)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 @SocketCAN_Types.SocketCAN_ioctl_ifu.");
+}
+return *this;
+}
+
+SocketCAN__ioctl__ifu_template& SocketCAN__ioctl__ifu_template::operator=(const SocketCAN__ioctl__ifu_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__ioctl__ifu_template::match(const SocketCAN__ioctl__ifu& 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:
+{
+SocketCAN__ioctl__ifu::union_selection_type value_selection = other_value.get_selection();
+if (value_selection == SocketCAN__ioctl__ifu::UNBOUND_VALUE) return FALSE;
+if (value_selection != single_value.union_selection) return FALSE;
+switch (value_selection) {
+case SocketCAN__ioctl__ifu::ALT_if__name:
+return single_value.field_if__name->match(other_value.if__name(), legacy);
+case SocketCAN__ioctl__ifu::ALT_if__index:
+return single_value.field_if__index->match(other_value.if__index(), legacy);
+case SocketCAN__ioctl__ifu::ALT_if__any:
+return single_value.field_if__any->match(other_value.if__any(), legacy);
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @SocketCAN_Types.SocketCAN_ioctl_ifu.");
+}
+}
+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;
+default:
+TTCN_error ("Matching an uninitialized template of union type @SocketCAN_Types.SocketCAN_ioctl_ifu.");
+}
+return FALSE;
+}
+
+boolean SocketCAN__ioctl__ifu_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+switch (single_value.union_selection) {
+case SocketCAN__ioctl__ifu::ALT_if__name:
+return single_value.field_if__name->is_value();
+case SocketCAN__ioctl__ifu::ALT_if__index:
+return single_value.field_if__index->is_value();
+case SocketCAN__ioctl__ifu::ALT_if__any:
+return single_value.field_if__any->is_value();
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @SocketCAN_Types.SocketCAN_ioctl_ifu.");
+}
+}
+
+SocketCAN__ioctl__ifu SocketCAN__ioctl__ifu_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 @SocketCAN_Types.SocketCAN_ioctl_ifu.");
+SocketCAN__ioctl__ifu ret_val;
+switch (single_value.union_selection) {
+case SocketCAN__ioctl__ifu::ALT_if__name:
+ret_val.if__name() = single_value.field_if__name->valueof();
+break;
+case SocketCAN__ioctl__ifu::ALT_if__index:
+ret_val.if__index() = single_value.field_if__index->valueof();
+break;
+case SocketCAN__ioctl__ifu::ALT_if__any:
+ret_val.if__any() = single_value.field_if__any->valueof();
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @SocketCAN_Types.SocketCAN_ioctl_ifu.");
+}
+return ret_val;
+}
+
+SocketCAN__ioctl__ifu_template& SocketCAN__ioctl__ifu_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @SocketCAN_Types.SocketCAN_ioctl_ifu.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @SocketCAN_Types.SocketCAN_ioctl_ifu.");
+return value_list.list_value[list_index];
+}
+void SocketCAN__ioctl__ifu_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error ("Internal error: Setting an invalid list for a template of union type @SocketCAN_Types.SocketCAN_ioctl_ifu.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SocketCAN__ioctl__ifu_template[list_length];
+}
+
+CHARSTRING_template& SocketCAN__ioctl__ifu_template::if__name()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != SocketCAN__ioctl__ifu::ALT_if__name) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_if__name = new CHARSTRING_template(ANY_VALUE);
+else single_value.field_if__name = new CHARSTRING_template;
+single_value.union_selection = SocketCAN__ioctl__ifu::ALT_if__name;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_if__name;
+}
+
+const CHARSTRING_template& SocketCAN__ioctl__ifu_template::if__name() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field if_name in a non-specific template of union type @SocketCAN_Types.SocketCAN_ioctl_ifu.");
+if (single_value.union_selection != SocketCAN__ioctl__ifu::ALT_if__name) TTCN_error("Accessing non-selected field if_name in a template of union type @SocketCAN_Types.SocketCAN_ioctl_ifu.");
+return *single_value.field_if__name;
+}
+
+INTEGER_template& SocketCAN__ioctl__ifu_template::if__index()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != SocketCAN__ioctl__ifu::ALT_if__index) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_if__index = new INTEGER_template(ANY_VALUE);
+else single_value.field_if__index = new INTEGER_template;
+single_value.union_selection = SocketCAN__ioctl__ifu::ALT_if__index;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_if__index;
+}
+
+const INTEGER_template& SocketCAN__ioctl__ifu_template::if__index() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field if_index in a non-specific template of union type @SocketCAN_Types.SocketCAN_ioctl_ifu.");
+if (single_value.union_selection != SocketCAN__ioctl__ifu::ALT_if__index) TTCN_error("Accessing non-selected field if_index in a template of union type @SocketCAN_Types.SocketCAN_ioctl_ifu.");
+return *single_value.field_if__index;
+}
+
+SocketCAN__if__any_template& SocketCAN__ioctl__ifu_template::if__any()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != SocketCAN__ioctl__ifu::ALT_if__any) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_if__any = new SocketCAN__if__any_template(ANY_VALUE);
+else single_value.field_if__any = new SocketCAN__if__any_template;
+single_value.union_selection = SocketCAN__ioctl__ifu::ALT_if__any;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_if__any;
+}
+
+const SocketCAN__if__any_template& SocketCAN__ioctl__ifu_template::if__any() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field if_any in a non-specific template of union type @SocketCAN_Types.SocketCAN_ioctl_ifu.");
+if (single_value.union_selection != SocketCAN__ioctl__ifu::ALT_if__any) TTCN_error("Accessing non-selected field if_any in a template of union type @SocketCAN_Types.SocketCAN_ioctl_ifu.");
+return *single_value.field_if__any;
+}
+
+boolean SocketCAN__ioctl__ifu_template::ischosen(SocketCAN__ioctl__ifu::union_selection_type checked_selection) const
+{
+if (checked_selection == SocketCAN__ioctl__ifu::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @SocketCAN_Types.SocketCAN_ioctl_ifu.");
+switch (template_selection) {
+case SPECIFIC_VALUE:
+if (single_value.union_selection == SocketCAN__ioctl__ifu::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @SocketCAN_Types.SocketCAN_ioctl_ifu.");
+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 @SocketCAN_Types.SocketCAN_ioctl_ifu 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 SocketCAN__ioctl__ifu_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case SocketCAN__ioctl__ifu::ALT_if__name:
+TTCN_Logger::log_event_str("{ if_name := ");
+single_value.field_if__name->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case SocketCAN__ioctl__ifu::ALT_if__index:
+TTCN_Logger::log_event_str("{ if_index := ");
+single_value.field_if__index->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case SocketCAN__ioctl__ifu::ALT_if__any:
+TTCN_Logger::log_event_str("{ if_any := ");
+single_value.field_if__any->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 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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SocketCAN__ioctl__ifu_template::log_match(const SocketCAN__ioctl__ifu& 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()) {
+switch (single_value.union_selection) {
+case SocketCAN__ioctl__ifu::ALT_if__name:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".if_name");
+single_value.field_if__name->log_match(match_value.if__name(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ if_name := ");
+single_value.field_if__name->log_match(match_value.if__name(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case SocketCAN__ioctl__ifu::ALT_if__index:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".if_index");
+single_value.field_if__index->log_match(match_value.if__index(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ if_index := ");
+single_value.field_if__index->log_match(match_value.if__index(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case SocketCAN__ioctl__ifu::ALT_if__any:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".if_any");
+single_value.field_if__any->log_match(match_value.if__any(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ if_any := ");
+single_value.field_if__any->log_match(match_value.if__any(), 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 SocketCAN__ioctl__ifu_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 SocketCAN__ioctl__ifu::ALT_if__name:
+single_value.field_if__name->encode_text(text_buf);
+break;
+case SocketCAN__ioctl__ifu::ALT_if__index:
+single_value.field_if__index->encode_text(text_buf);
+break;
+case SocketCAN__ioctl__ifu::ALT_if__any:
+single_value.field_if__any->encode_text(text_buf);
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @SocketCAN_Types.SocketCAN_ioctl_ifu.");
+}
+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 @SocketCAN_Types.SocketCAN_ioctl_ifu.");
+}
+}
+
+void SocketCAN__ioctl__ifu_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+{
+single_value.union_selection = SocketCAN__ioctl__ifu::UNBOUND_VALUE;
+SocketCAN__ioctl__ifu::union_selection_type new_selection = (SocketCAN__ioctl__ifu::union_selection_type)text_buf.pull_int().get_val();
+switch (new_selection) {
+case SocketCAN__ioctl__ifu::ALT_if__name:
+single_value.field_if__name = new CHARSTRING_template;
+single_value.field_if__name->decode_text(text_buf);
+break;
+case SocketCAN__ioctl__ifu::ALT_if__index:
+single_value.field_if__index = new INTEGER_template;
+single_value.field_if__index->decode_text(text_buf);
+break;
+case SocketCAN__ioctl__ifu::ALT_if__any:
+single_value.field_if__any = new SocketCAN__if__any_template;
+single_value.field_if__any->decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @SocketCAN_Types.SocketCAN_ioctl_ifu.");
+}
+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 SocketCAN__ioctl__ifu_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 @SocketCAN_Types.SocketCAN_ioctl_ifu.");
+}
+}
+
+boolean SocketCAN__ioctl__ifu_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SocketCAN__ioctl__ifu_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 SocketCAN__ioctl__ifu_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 `@SocketCAN_Types.SocketCAN_ioctl_ifu'");
+    }
+    if (strcmp("if_name", param_field) == 0) {
+      if__name().set_param(param);
+      return;
+    } else if (strcmp("if_index", param_field) == 0) {
+      if__index().set_param(param);
+      return;
+    } else if (strcmp("if_any", param_field) == 0) {
+      if__any().set_param(param);
+      return;
+    } else param.error("Field `%s' not found in union template type `@SocketCAN_Types.SocketCAN_ioctl_ifu'", 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: {
+    SocketCAN__ioctl__ifu_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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", "@SocketCAN_Types.SocketCAN_ioctl_ifu");
+    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, "if_name")) {
+      if__name().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "if_index")) {
+      if__index().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "if_any")) {
+      if__any().set_param(*mp_last);
+      break;
+    }
+    mp_last->error("Field %s does not exist in type @SocketCAN_Types.SocketCAN_ioctl_ifu.", last_name);
+  } break;
+  default:
+    param.type_error("union template", "@SocketCAN_Types.SocketCAN_ioctl_ifu");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SocketCAN__ioctl__ifu_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 SocketCAN__ioctl__ifu::ALT_if__name:
+single_value.field_if__name->check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_ioctl_ifu");
+return;
+case SocketCAN__ioctl__ifu::ALT_if__index:
+single_value.field_if__index->check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_ioctl_ifu");
+return;
+case SocketCAN__ioctl__ifu::ALT_if__any:
+single_value.field_if__any->check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_ioctl_ifu");
+return;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @SocketCAN_Types.SocketCAN_ioctl_ifu.");
+}
+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 : "@SocketCAN_Types.SocketCAN_ioctl_ifu");
+}
+
+SocketCAN__Result__code::SocketCAN__Result__code()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+SocketCAN__Result__code::SocketCAN__Result__code(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @SocketCAN_Types.SocketCAN_Result_code with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+SocketCAN__Result__code::SocketCAN__Result__code(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+SocketCAN__Result__code::SocketCAN__Result__code(const SocketCAN__Result__code& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @SocketCAN_Types.SocketCAN_Result_code.");
+enum_value = other_value.enum_value;
+}
+
+SocketCAN__Result__code& SocketCAN__Result__code::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @SocketCAN_Types.SocketCAN_Result_code.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+SocketCAN__Result__code& SocketCAN__Result__code::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+SocketCAN__Result__code& SocketCAN__Result__code::operator=(const SocketCAN__Result__code& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @SocketCAN_Types.SocketCAN_Result_code.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean SocketCAN__Result__code::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @SocketCAN_Types.SocketCAN_Result_code.");
+return enum_value == other_value;
+}
+
+boolean SocketCAN__Result__code::operator==(const SocketCAN__Result__code& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @SocketCAN_Types.SocketCAN_Result_code.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @SocketCAN_Types.SocketCAN_Result_code.");
+return enum_value == other_value.enum_value;
+}
+
+boolean SocketCAN__Result__code::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @SocketCAN_Types.SocketCAN_Result_code.");
+return enum_value < other_value;
+}
+
+boolean SocketCAN__Result__code::operator<(const SocketCAN__Result__code& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @SocketCAN_Types.SocketCAN_Result_code.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @SocketCAN_Types.SocketCAN_Result_code.");
+return enum_value < other_value.enum_value;
+}
+
+boolean SocketCAN__Result__code::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @SocketCAN_Types.SocketCAN_Result_code.");
+return enum_value > other_value;
+}
+
+boolean SocketCAN__Result__code::operator>(const SocketCAN__Result__code& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @SocketCAN_Types.SocketCAN_Result_code.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @SocketCAN_Types.SocketCAN_Result_code.");
+return enum_value > other_value.enum_value;
+}
+
+const char *SocketCAN__Result__code::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case SocketCAN__ERROR: return "SocketCAN_ERROR";
+case SocketCAN__SUCCESS: return "SocketCAN_SUCCESS";
+default: return "<unknown>";
+}
+}
+
+SocketCAN__Result__code::enum_type SocketCAN__Result__code::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "SocketCAN_ERROR")) return SocketCAN__ERROR;
+else if (!strcmp(str_par, "SocketCAN_SUCCESS")) return SocketCAN__SUCCESS;
+else return UNKNOWN_VALUE;
+}
+
+boolean SocketCAN__Result__code::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 0:
+case 1:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int SocketCAN__Result__code::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @SocketCAN_Types.SocketCAN_Result_code.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int SocketCAN__Result__code::enum2int(const SocketCAN__Result__code& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @SocketCAN_Types.SocketCAN_Result_code.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void SocketCAN__Result__code::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @SocketCAN_Types.SocketCAN_Result_code.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+SocketCAN__Result__code::operator SocketCAN__Result__code::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @SocketCAN_Types.SocketCAN_Result_code.");
+return enum_value;
+}
+
+void SocketCAN__Result__code::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void SocketCAN__Result__code::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@SocketCAN_Types.SocketCAN_Result_code");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @SocketCAN_Types.SocketCAN_Result_code.");
+  }
+}
+
+void SocketCAN__Result__code::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @SocketCAN_Types.SocketCAN_Result_code.");
+text_buf.push_int(enum_value);
+}
+
+void SocketCAN__Result__code::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @SocketCAN_Types.SocketCAN_Result_code.", enum_value);
+}
+
+void SocketCAN__Result__code_template::copy_template(const SocketCAN__Result__code_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SocketCAN__Result__code_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @SocketCAN_Types.SocketCAN_Result_code.");
+}
+}
+
+SocketCAN__Result__code_template::SocketCAN__Result__code_template()
+{
+}
+
+SocketCAN__Result__code_template::SocketCAN__Result__code_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SocketCAN__Result__code_template::SocketCAN__Result__code_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!SocketCAN__Result__code::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @SocketCAN_Types.SocketCAN_Result_code with unknown numeric value %d.", other_value);
+single_value = (SocketCAN__Result__code::enum_type)other_value;
+}
+
+SocketCAN__Result__code_template::SocketCAN__Result__code_template(SocketCAN__Result__code::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+SocketCAN__Result__code_template::SocketCAN__Result__code_template(const SocketCAN__Result__code& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == SocketCAN__Result__code::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @SocketCAN_Types.SocketCAN_Result_code.");
+single_value = other_value.enum_value;
+}
+
+SocketCAN__Result__code_template::SocketCAN__Result__code_template(const OPTIONAL<SocketCAN__Result__code>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (SocketCAN__Result__code::enum_type)(const SocketCAN__Result__code&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @SocketCAN_Types.SocketCAN_Result_code from an unbound optional field.");
+}
+}
+
+SocketCAN__Result__code_template::SocketCAN__Result__code_template(const SocketCAN__Result__code_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+SocketCAN__Result__code_template::~SocketCAN__Result__code_template()
+{
+clean_up();
+}
+
+boolean SocketCAN__Result__code_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean SocketCAN__Result__code_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != SocketCAN__Result__code::UNBOUND_VALUE;
+}
+
+void SocketCAN__Result__code_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SocketCAN__Result__code_template& SocketCAN__Result__code_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SocketCAN__Result__code_template& SocketCAN__Result__code_template::operator=(int other_value)
+{
+if (!SocketCAN__Result__code::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @SocketCAN_Types.SocketCAN_Result_code.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (SocketCAN__Result__code::enum_type)other_value;
+return *this;
+}
+
+SocketCAN__Result__code_template& SocketCAN__Result__code_template::operator=(SocketCAN__Result__code::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+SocketCAN__Result__code_template& SocketCAN__Result__code_template::operator=(const SocketCAN__Result__code& other_value)
+{
+if (other_value.enum_value == SocketCAN__Result__code::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @SocketCAN_Types.SocketCAN_Result_code to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+SocketCAN__Result__code_template& SocketCAN__Result__code_template::operator=(const OPTIONAL<SocketCAN__Result__code>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (SocketCAN__Result__code::enum_type)(const SocketCAN__Result__code&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @SocketCAN_Types.SocketCAN_Result_code.");
+}
+return *this;
+}
+
+SocketCAN__Result__code_template& SocketCAN__Result__code_template::operator=(const SocketCAN__Result__code_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__Result__code_template::match(SocketCAN__Result__code::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @SocketCAN_Types.SocketCAN_Result_code.");
+}
+return FALSE;
+}
+
+boolean SocketCAN__Result__code_template::match(const SocketCAN__Result__code& other_value, boolean) const
+{
+if (other_value.enum_value == SocketCAN__Result__code::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @SocketCAN_Types.SocketCAN_Result_code with an unbound value.");
+return match(other_value.enum_value);
+}
+
+SocketCAN__Result__code::enum_type SocketCAN__Result__code_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @SocketCAN_Types.SocketCAN_Result_code.");
+return single_value;
+}
+
+void SocketCAN__Result__code_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @SocketCAN_Types.SocketCAN_Result_code.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SocketCAN__Result__code_template[list_length];
+}
+
+SocketCAN__Result__code_template& SocketCAN__Result__code_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @SocketCAN_Types.SocketCAN_Result_code.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @SocketCAN_Types.SocketCAN_Result_code.");
+return value_list.list_value[list_index];
+}
+
+void SocketCAN__Result__code_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(SocketCAN__Result__code::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SocketCAN__Result__code_template::log_match(const SocketCAN__Result__code& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void SocketCAN__Result__code_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @SocketCAN_Types.SocketCAN_Result_code.");
+}
+}
+
+void SocketCAN__Result__code_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (SocketCAN__Result__code::enum_type)text_buf.pull_int().get_val();
+if (!SocketCAN__Result__code::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @SocketCAN_Types.SocketCAN_Result_code.", single_value);
+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 SocketCAN__Result__code_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @SocketCAN_Types.SocketCAN_Result_code.");
+}
+}
+
+boolean SocketCAN__Result__code_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SocketCAN__Result__code_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 SocketCAN__Result__code_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    SocketCAN__Result__code_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    SocketCAN__Result__code::enum_type enum_val = SocketCAN__Result__code::str_to_enum(m_p->get_enumerated());
+    if (!SocketCAN__Result__code::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @SocketCAN_Types.SocketCAN_Result_code.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@SocketCAN_Types.SocketCAN_Result_code");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SocketCAN__Result__code_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@SocketCAN_Types.SocketCAN_Result_code");
+}
+
+SocketCAN__Result::SocketCAN__Result()
+{
+}
+
+SocketCAN__Result::SocketCAN__Result(const SocketCAN__Result__code& par_result__code,
+    const OPTIONAL<INTEGER>& par_err,
+    const OPTIONAL<CHARSTRING>& par_err__text)
+  :   field_result__code(par_result__code),
+  field_err(par_err),
+  field_err__text(par_err__text)
+{
+}
+
+SocketCAN__Result::SocketCAN__Result(const SocketCAN__Result& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @SocketCAN_Types.SocketCAN_Result.");
+if (other_value.result__code().is_bound()) field_result__code = other_value.result__code();
+else field_result__code.clean_up();
+if (other_value.err().is_bound()) field_err = other_value.err();
+else field_err.clean_up();
+if (other_value.err__text().is_bound()) field_err__text = other_value.err__text();
+else field_err__text.clean_up();
+}
+
+void SocketCAN__Result::clean_up()
+{
+field_result__code.clean_up();
+field_err.clean_up();
+field_err__text.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SocketCAN__Result::get_descriptor() const { return &SocketCAN__Result_descr_; }
+SocketCAN__Result& SocketCAN__Result::operator=(const SocketCAN__Result& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @SocketCAN_Types.SocketCAN_Result.");
+  if (other_value.result__code().is_bound()) field_result__code = other_value.result__code();
+  else field_result__code.clean_up();
+  if (other_value.err().is_bound()) field_err = other_value.err();
+  else field_err.clean_up();
+  if (other_value.err__text().is_bound()) field_err__text = other_value.err__text();
+  else field_err__text.clean_up();
+}
+return *this;
+}
+
+boolean SocketCAN__Result::operator==(const SocketCAN__Result& other_value) const
+{
+return field_result__code==other_value.field_result__code
+  && field_err==other_value.field_err
+  && field_err__text==other_value.field_err__text;
+}
+
+boolean SocketCAN__Result::is_bound() const
+{
+return (field_result__code.is_bound())
+  || (OPTIONAL_OMIT == field_err.get_selection() || field_err.is_bound())
+  || (OPTIONAL_OMIT == field_err__text.get_selection() || field_err__text.is_bound());
+}
+boolean SocketCAN__Result::is_value() const
+{
+return field_result__code.is_value()
+  && (OPTIONAL_OMIT == field_err.get_selection() || field_err.is_value())
+  && (OPTIONAL_OMIT == field_err__text.get_selection() || field_err__text.is_value());
+}
+int SocketCAN__Result::size_of() const
+{
+  int ret_val = 1;
+  if (field_err.ispresent()) ret_val++;
+  if (field_err__text.ispresent()) ret_val++;
+  return ret_val;
+}
+
+void SocketCAN__Result::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ result_code := ");
+field_result__code.log();
+TTCN_Logger::log_event_str(", err := ");
+field_err.log();
+TTCN_Logger::log_event_str(", err_text := ");
+field_err__text.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SocketCAN__Result::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 @SocketCAN_Types.SocketCAN_Result 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) result__code().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) err().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) err__text().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(), "result_code")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          result__code().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(), "err")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          err().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(), "err_text")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          err__text().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 @SocketCAN_Types.SocketCAN_Result: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@SocketCAN_Types.SocketCAN_Result");
+  }
+}
+
+void SocketCAN__Result::set_implicit_omit()
+{
+if (result__code().is_bound()) result__code().set_implicit_omit();
+if (!err().is_bound()) err() = OMIT_VALUE;
+else err().set_implicit_omit();
+if (!err__text().is_bound()) err__text() = OMIT_VALUE;
+else err__text().set_implicit_omit();
+}
+
+void SocketCAN__Result::encode_text(Text_Buf& text_buf) const
+{
+field_result__code.encode_text(text_buf);
+field_err.encode_text(text_buf);
+field_err__text.encode_text(text_buf);
+}
+
+void SocketCAN__Result::decode_text(Text_Buf& text_buf)
+{
+field_result__code.decode_text(text_buf);
+field_err.decode_text(text_buf);
+field_err__text.decode_text(text_buf);
+}
+
+struct SocketCAN__Result_template::single_value_struct {
+SocketCAN__Result__code_template field_result__code;
+INTEGER_template field_err;
+CHARSTRING_template field_err__text;
+};
+
+void SocketCAN__Result_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_result__code = ANY_VALUE;
+single_value->field_err = ANY_OR_OMIT;
+single_value->field_err__text = ANY_OR_OMIT;
+}
+}
+}
+
+void SocketCAN__Result_template::copy_value(const SocketCAN__Result& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.result__code().is_bound()) {
+  single_value->field_result__code = other_value.result__code();
+} else {
+  single_value->field_result__code.clean_up();
+}
+if (other_value.err().is_bound()) {
+  if (other_value.err().ispresent()) single_value->field_err = other_value.err()();
+  else single_value->field_err = OMIT_VALUE;
+} else {
+  single_value->field_err.clean_up();
+}
+if (other_value.err__text().is_bound()) {
+  if (other_value.err__text().ispresent()) single_value->field_err__text = other_value.err__text()();
+  else single_value->field_err__text = OMIT_VALUE;
+} else {
+  single_value->field_err__text.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SocketCAN__Result_template::copy_template(const SocketCAN__Result_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.result__code().get_selection()) {
+single_value->field_result__code = other_value.result__code();
+} else {
+single_value->field_result__code.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.err().get_selection()) {
+single_value->field_err = other_value.err();
+} else {
+single_value->field_err.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.err__text().get_selection()) {
+single_value->field_err__text = other_value.err__text();
+} else {
+single_value->field_err__text.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SocketCAN__Result_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_Result.");
+break;
+}
+set_selection(other_value);
+}
+
+SocketCAN__Result_template::SocketCAN__Result_template()
+{
+}
+
+SocketCAN__Result_template::SocketCAN__Result_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SocketCAN__Result_template::SocketCAN__Result_template(const SocketCAN__Result& other_value)
+{
+copy_value(other_value);
+}
+
+SocketCAN__Result_template::SocketCAN__Result_template(const OPTIONAL<SocketCAN__Result>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__Result&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @SocketCAN_Types.SocketCAN_Result from an unbound optional field.");
+}
+}
+
+SocketCAN__Result_template::SocketCAN__Result_template(const SocketCAN__Result_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SocketCAN__Result_template::~SocketCAN__Result_template()
+{
+clean_up();
+}
+
+SocketCAN__Result_template& SocketCAN__Result_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SocketCAN__Result_template& SocketCAN__Result_template::operator=(const SocketCAN__Result& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SocketCAN__Result_template& SocketCAN__Result_template::operator=(const OPTIONAL<SocketCAN__Result>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__Result&)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 @SocketCAN_Types.SocketCAN_Result.");
+}
+return *this;
+}
+
+SocketCAN__Result_template& SocketCAN__Result_template::operator=(const SocketCAN__Result_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__Result_template::match(const SocketCAN__Result& 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.result__code().is_bound()) return FALSE;
+if(!single_value->field_result__code.match(other_value.result__code(), legacy))return FALSE;
+if(!other_value.err().is_bound()) return FALSE;
+if((other_value.err().ispresent() ? !single_value->field_err.match((const INTEGER&)other_value.err(), legacy) : !single_value->field_err.match_omit(legacy)))return FALSE;
+if(!other_value.err__text().is_bound()) return FALSE;
+if((other_value.err__text().ispresent() ? !single_value->field_err__text.match((const CHARSTRING&)other_value.err__text(), legacy) : !single_value->field_err__text.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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_Result.");
+}
+return FALSE;
+}
+
+boolean SocketCAN__Result_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_result__code.is_bound()
+
+ ||(single_value->field_err.is_omit() || single_value->field_err.is_bound())
+
+ ||(single_value->field_err__text.is_omit() || single_value->field_err__text.is_bound())
+;
+}
+
+boolean SocketCAN__Result_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_result__code.is_value()
+ &&(single_value->field_err.is_omit() || single_value->field_err.is_value())
+ &&(single_value->field_err__text.is_omit() || single_value->field_err__text.is_value());
+}
+
+void SocketCAN__Result_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SocketCAN__Result SocketCAN__Result_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 @SocketCAN_Types.SocketCAN_Result.");
+SocketCAN__Result ret_val;
+if (single_value->field_result__code.is_bound()) {
+ret_val.result__code() = single_value->field_result__code.valueof();
+}
+if (single_value->field_err.is_omit()) ret_val.err() = OMIT_VALUE;
+else if (single_value->field_err.is_bound()) {
+ret_val.err() = single_value->field_err.valueof();
+}
+if (single_value->field_err__text.is_omit()) ret_val.err__text() = OMIT_VALUE;
+else if (single_value->field_err__text.is_bound()) {
+ret_val.err__text() = single_value->field_err__text.valueof();
+}
+return ret_val;
+}
+
+void SocketCAN__Result_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @SocketCAN_Types.SocketCAN_Result.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SocketCAN__Result_template[list_length];
+}
+
+SocketCAN__Result_template& SocketCAN__Result_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @SocketCAN_Types.SocketCAN_Result.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @SocketCAN_Types.SocketCAN_Result.");
+return value_list.list_value[list_index];
+}
+
+SocketCAN__Result__code_template& SocketCAN__Result_template::result__code()
+{
+set_specific();
+return single_value->field_result__code;
+}
+
+const SocketCAN__Result__code_template& SocketCAN__Result_template::result__code() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field result_code of a non-specific template of type @SocketCAN_Types.SocketCAN_Result.");
+return single_value->field_result__code;
+}
+
+INTEGER_template& SocketCAN__Result_template::err()
+{
+set_specific();
+return single_value->field_err;
+}
+
+const INTEGER_template& SocketCAN__Result_template::err() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field err of a non-specific template of type @SocketCAN_Types.SocketCAN_Result.");
+return single_value->field_err;
+}
+
+CHARSTRING_template& SocketCAN__Result_template::err__text()
+{
+set_specific();
+return single_value->field_err__text;
+}
+
+const CHARSTRING_template& SocketCAN__Result_template::err__text() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field err_text of a non-specific template of type @SocketCAN_Types.SocketCAN_Result.");
+return single_value->field_err__text;
+}
+
+int SocketCAN__Result_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_Result which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+  {    int ret_val = 1;
+      if (single_value->field_err.is_present()) ret_val++;
+      if (single_value->field_err__text.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 @SocketCAN_Types.SocketCAN_Result 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 @SocketCAN_Types.SocketCAN_Result containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_Result containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_Result containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_Result containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_Result.");
+  }
+  return 0;
+}
+
+void SocketCAN__Result_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ result_code := ");
+single_value->field_result__code.log();
+TTCN_Logger::log_event_str(", err := ");
+single_value->field_err.log();
+TTCN_Logger::log_event_str(", err_text := ");
+single_value->field_err__text.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SocketCAN__Result_template::log_match(const SocketCAN__Result& 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_result__code.match(match_value.result__code(), legacy)){
+TTCN_Logger::log_logmatch_info(".result_code");
+single_value->field_result__code.log_match(match_value.result__code(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if (match_value.err().ispresent()){
+if(!single_value->field_err.match(match_value.err(), legacy)){
+TTCN_Logger::log_logmatch_info(".err");
+single_value->field_err.log_match(match_value.err(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+} else {
+if (!single_value->field_err.match_omit(legacy)){
+ TTCN_Logger::log_logmatch_info(".err := omit with ");
+TTCN_Logger::print_logmatch_buffer();
+single_value->field_err.log();
+TTCN_Logger::log_event_str(" unmatched");
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+}
+if (match_value.err__text().ispresent()){
+if(!single_value->field_err__text.match(match_value.err__text(), legacy)){
+TTCN_Logger::log_logmatch_info(".err_text");
+single_value->field_err__text.log_match(match_value.err__text(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+} else {
+if (!single_value->field_err__text.match_omit(legacy)){
+ TTCN_Logger::log_logmatch_info(".err_text := omit with ");
+TTCN_Logger::print_logmatch_buffer();
+single_value->field_err__text.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("{ result_code := ");
+single_value->field_result__code.log_match(match_value.result__code(), legacy);
+TTCN_Logger::log_event_str(", err := ");
+if (match_value.err().ispresent()) single_value->field_err.log_match(match_value.err(), legacy);
+else {
+TTCN_Logger::log_event_str("omit with ");
+single_value->field_err.log();
+if (single_value->field_err.match_omit(legacy)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+TTCN_Logger::log_event_str(", err_text := ");
+if (match_value.err__text().ispresent()) single_value->field_err__text.log_match(match_value.err__text(), legacy);
+else {
+TTCN_Logger::log_event_str("omit with ");
+single_value->field_err__text.log();
+if (single_value->field_err__text.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 SocketCAN__Result_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_result__code.encode_text(text_buf);
+single_value->field_err.encode_text(text_buf);
+single_value->field_err__text.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 @SocketCAN_Types.SocketCAN_Result.");
+}
+}
+
+void SocketCAN__Result_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_result__code.decode_text(text_buf);
+single_value->field_err.decode_text(text_buf);
+single_value->field_err__text.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 SocketCAN__Result_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 @SocketCAN_Types.SocketCAN_Result.");
+}
+}
+
+void SocketCAN__Result_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: {
+    SocketCAN__Result_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @SocketCAN_Types.SocketCAN_Result 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) result__code().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) err().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) err__text().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(), "result_code")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          result__code().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(), "err")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          err().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(), "err_text")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          err__text().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 @SocketCAN_Types.SocketCAN_Result: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@SocketCAN_Types.SocketCAN_Result");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SocketCAN__Result_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_result__code.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_Result");
+single_value->field_err.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_Result");
+single_value->field_err__text.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_Result");
+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 : "@SocketCAN_Types.SocketCAN_Result");
+}
+
+boolean SocketCAN__Result_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SocketCAN__Result_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+SocketCAN__socket::SocketCAN__socket()
+{
+}
+
+SocketCAN__socket::SocketCAN__socket(const Can::AdresseFamily__enum& par_domain,
+    const Can::ProtocolFamily__enum& par_ptype,
+    const Can::PF__CAN__protocols__enum& par_protocol)
+  :   field_domain(par_domain),
+  field_ptype(par_ptype),
+  field_protocol(par_protocol)
+{
+}
+
+SocketCAN__socket::SocketCAN__socket(const SocketCAN__socket& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @SocketCAN_Types.SocketCAN_socket.");
+if (other_value.domain().is_bound()) field_domain = other_value.domain();
+else field_domain.clean_up();
+if (other_value.ptype().is_bound()) field_ptype = other_value.ptype();
+else field_ptype.clean_up();
+if (other_value.protocol().is_bound()) field_protocol = other_value.protocol();
+else field_protocol.clean_up();
+}
+
+void SocketCAN__socket::clean_up()
+{
+field_domain.clean_up();
+field_ptype.clean_up();
+field_protocol.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SocketCAN__socket::get_descriptor() const { return &SocketCAN__socket_descr_; }
+SocketCAN__socket& SocketCAN__socket::operator=(const SocketCAN__socket& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @SocketCAN_Types.SocketCAN_socket.");
+  if (other_value.domain().is_bound()) field_domain = other_value.domain();
+  else field_domain.clean_up();
+  if (other_value.ptype().is_bound()) field_ptype = other_value.ptype();
+  else field_ptype.clean_up();
+  if (other_value.protocol().is_bound()) field_protocol = other_value.protocol();
+  else field_protocol.clean_up();
+}
+return *this;
+}
+
+boolean SocketCAN__socket::operator==(const SocketCAN__socket& other_value) const
+{
+return field_domain==other_value.field_domain
+  && field_ptype==other_value.field_ptype
+  && field_protocol==other_value.field_protocol;
+}
+
+boolean SocketCAN__socket::is_bound() const
+{
+return (field_domain.is_bound())
+  || (field_ptype.is_bound())
+  || (field_protocol.is_bound());
+}
+boolean SocketCAN__socket::is_value() const
+{
+return field_domain.is_value()
+  && field_ptype.is_value()
+  && field_protocol.is_value();
+}
+void SocketCAN__socket::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ domain := ");
+field_domain.log();
+TTCN_Logger::log_event_str(", ptype := ");
+field_ptype.log();
+TTCN_Logger::log_event_str(", protocol := ");
+field_protocol.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SocketCAN__socket::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 @SocketCAN_Types.SocketCAN_socket 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) domain().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ptype().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) protocol().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(), "domain")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          domain().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(), "ptype")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ptype().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(), "protocol")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          protocol().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 @SocketCAN_Types.SocketCAN_socket: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@SocketCAN_Types.SocketCAN_socket");
+  }
+}
+
+void SocketCAN__socket::set_implicit_omit()
+{
+if (domain().is_bound()) domain().set_implicit_omit();
+if (ptype().is_bound()) ptype().set_implicit_omit();
+if (protocol().is_bound()) protocol().set_implicit_omit();
+}
+
+void SocketCAN__socket::encode_text(Text_Buf& text_buf) const
+{
+field_domain.encode_text(text_buf);
+field_ptype.encode_text(text_buf);
+field_protocol.encode_text(text_buf);
+}
+
+void SocketCAN__socket::decode_text(Text_Buf& text_buf)
+{
+field_domain.decode_text(text_buf);
+field_ptype.decode_text(text_buf);
+field_protocol.decode_text(text_buf);
+}
+
+struct SocketCAN__socket_template::single_value_struct {
+Can::AdresseFamily__enum_template field_domain;
+Can::ProtocolFamily__enum_template field_ptype;
+Can::PF__CAN__protocols__enum_template field_protocol;
+};
+
+void SocketCAN__socket_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_domain = ANY_VALUE;
+single_value->field_ptype = ANY_VALUE;
+single_value->field_protocol = ANY_VALUE;
+}
+}
+}
+
+void SocketCAN__socket_template::copy_value(const SocketCAN__socket& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.domain().is_bound()) {
+  single_value->field_domain = other_value.domain();
+} else {
+  single_value->field_domain.clean_up();
+}
+if (other_value.ptype().is_bound()) {
+  single_value->field_ptype = other_value.ptype();
+} else {
+  single_value->field_ptype.clean_up();
+}
+if (other_value.protocol().is_bound()) {
+  single_value->field_protocol = other_value.protocol();
+} else {
+  single_value->field_protocol.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SocketCAN__socket_template::copy_template(const SocketCAN__socket_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.domain().get_selection()) {
+single_value->field_domain = other_value.domain();
+} else {
+single_value->field_domain.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.ptype().get_selection()) {
+single_value->field_ptype = other_value.ptype();
+} else {
+single_value->field_ptype.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.protocol().get_selection()) {
+single_value->field_protocol = other_value.protocol();
+} else {
+single_value->field_protocol.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SocketCAN__socket_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_socket.");
+break;
+}
+set_selection(other_value);
+}
+
+SocketCAN__socket_template::SocketCAN__socket_template()
+{
+}
+
+SocketCAN__socket_template::SocketCAN__socket_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SocketCAN__socket_template::SocketCAN__socket_template(const SocketCAN__socket& other_value)
+{
+copy_value(other_value);
+}
+
+SocketCAN__socket_template::SocketCAN__socket_template(const OPTIONAL<SocketCAN__socket>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__socket&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @SocketCAN_Types.SocketCAN_socket from an unbound optional field.");
+}
+}
+
+SocketCAN__socket_template::SocketCAN__socket_template(const SocketCAN__socket_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SocketCAN__socket_template::~SocketCAN__socket_template()
+{
+clean_up();
+}
+
+SocketCAN__socket_template& SocketCAN__socket_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SocketCAN__socket_template& SocketCAN__socket_template::operator=(const SocketCAN__socket& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SocketCAN__socket_template& SocketCAN__socket_template::operator=(const OPTIONAL<SocketCAN__socket>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__socket&)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 @SocketCAN_Types.SocketCAN_socket.");
+}
+return *this;
+}
+
+SocketCAN__socket_template& SocketCAN__socket_template::operator=(const SocketCAN__socket_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__socket_template::match(const SocketCAN__socket& 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.domain().is_bound()) return FALSE;
+if(!single_value->field_domain.match(other_value.domain(), legacy))return FALSE;
+if(!other_value.ptype().is_bound()) return FALSE;
+if(!single_value->field_ptype.match(other_value.ptype(), legacy))return FALSE;
+if(!other_value.protocol().is_bound()) return FALSE;
+if(!single_value->field_protocol.match(other_value.protocol(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_socket.");
+}
+return FALSE;
+}
+
+boolean SocketCAN__socket_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_domain.is_bound()
+
+ ||single_value->field_ptype.is_bound()
+
+ ||single_value->field_protocol.is_bound()
+;
+}
+
+boolean SocketCAN__socket_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_domain.is_value()
+ &&single_value->field_ptype.is_value()
+ &&single_value->field_protocol.is_value();
+}
+
+void SocketCAN__socket_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SocketCAN__socket SocketCAN__socket_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 @SocketCAN_Types.SocketCAN_socket.");
+SocketCAN__socket ret_val;
+if (single_value->field_domain.is_bound()) {
+ret_val.domain() = single_value->field_domain.valueof();
+}
+if (single_value->field_ptype.is_bound()) {
+ret_val.ptype() = single_value->field_ptype.valueof();
+}
+if (single_value->field_protocol.is_bound()) {
+ret_val.protocol() = single_value->field_protocol.valueof();
+}
+return ret_val;
+}
+
+void SocketCAN__socket_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @SocketCAN_Types.SocketCAN_socket.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SocketCAN__socket_template[list_length];
+}
+
+SocketCAN__socket_template& SocketCAN__socket_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @SocketCAN_Types.SocketCAN_socket.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @SocketCAN_Types.SocketCAN_socket.");
+return value_list.list_value[list_index];
+}
+
+Can::AdresseFamily__enum_template& SocketCAN__socket_template::domain()
+{
+set_specific();
+return single_value->field_domain;
+}
+
+const Can::AdresseFamily__enum_template& SocketCAN__socket_template::domain() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field domain of a non-specific template of type @SocketCAN_Types.SocketCAN_socket.");
+return single_value->field_domain;
+}
+
+Can::ProtocolFamily__enum_template& SocketCAN__socket_template::ptype()
+{
+set_specific();
+return single_value->field_ptype;
+}
+
+const Can::ProtocolFamily__enum_template& SocketCAN__socket_template::ptype() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field ptype of a non-specific template of type @SocketCAN_Types.SocketCAN_socket.");
+return single_value->field_ptype;
+}
+
+Can::PF__CAN__protocols__enum_template& SocketCAN__socket_template::protocol()
+{
+set_specific();
+return single_value->field_protocol;
+}
+
+const Can::PF__CAN__protocols__enum_template& SocketCAN__socket_template::protocol() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field protocol of a non-specific template of type @SocketCAN_Types.SocketCAN_socket.");
+return single_value->field_protocol;
+}
+
+int SocketCAN__socket_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_socket 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 @SocketCAN_Types.SocketCAN_socket 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 @SocketCAN_Types.SocketCAN_socket containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_socket containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_socket containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_socket containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_socket.");
+  }
+  return 0;
+}
+
+void SocketCAN__socket_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ domain := ");
+single_value->field_domain.log();
+TTCN_Logger::log_event_str(", ptype := ");
+single_value->field_ptype.log();
+TTCN_Logger::log_event_str(", protocol := ");
+single_value->field_protocol.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SocketCAN__socket_template::log_match(const SocketCAN__socket& 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_domain.match(match_value.domain(), legacy)){
+TTCN_Logger::log_logmatch_info(".domain");
+single_value->field_domain.log_match(match_value.domain(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_ptype.match(match_value.ptype(), legacy)){
+TTCN_Logger::log_logmatch_info(".ptype");
+single_value->field_ptype.log_match(match_value.ptype(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_protocol.match(match_value.protocol(), legacy)){
+TTCN_Logger::log_logmatch_info(".protocol");
+single_value->field_protocol.log_match(match_value.protocol(), 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("{ domain := ");
+single_value->field_domain.log_match(match_value.domain(), legacy);
+TTCN_Logger::log_event_str(", ptype := ");
+single_value->field_ptype.log_match(match_value.ptype(), legacy);
+TTCN_Logger::log_event_str(", protocol := ");
+single_value->field_protocol.log_match(match_value.protocol(), 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 SocketCAN__socket_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_domain.encode_text(text_buf);
+single_value->field_ptype.encode_text(text_buf);
+single_value->field_protocol.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 @SocketCAN_Types.SocketCAN_socket.");
+}
+}
+
+void SocketCAN__socket_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_domain.decode_text(text_buf);
+single_value->field_ptype.decode_text(text_buf);
+single_value->field_protocol.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 SocketCAN__socket_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 @SocketCAN_Types.SocketCAN_socket.");
+}
+}
+
+void SocketCAN__socket_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: {
+    SocketCAN__socket_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @SocketCAN_Types.SocketCAN_socket 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) domain().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ptype().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) protocol().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(), "domain")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          domain().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(), "ptype")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ptype().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(), "protocol")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          protocol().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 @SocketCAN_Types.SocketCAN_socket: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@SocketCAN_Types.SocketCAN_socket");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SocketCAN__socket_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_domain.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_socket");
+single_value->field_ptype.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_socket");
+single_value->field_protocol.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_socket");
+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 : "@SocketCAN_Types.SocketCAN_socket");
+}
+
+boolean SocketCAN__socket_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SocketCAN__socket_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+SocketCAN__socket__result::SocketCAN__socket__result()
+{
+}
+
+SocketCAN__socket__result::SocketCAN__socket__result(const INTEGER& par_id,
+    const SocketCAN__Result& par_result)
+  :   field_id(par_id),
+  field_result(par_result)
+{
+}
+
+SocketCAN__socket__result::SocketCAN__socket__result(const SocketCAN__socket__result& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @SocketCAN_Types.SocketCAN_socket_result.");
+if (other_value.id().is_bound()) field_id = other_value.id();
+else field_id.clean_up();
+if (other_value.result().is_bound()) field_result = other_value.result();
+else field_result.clean_up();
+}
+
+void SocketCAN__socket__result::clean_up()
+{
+field_id.clean_up();
+field_result.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SocketCAN__socket__result::get_descriptor() const { return &SocketCAN__socket__result_descr_; }
+SocketCAN__socket__result& SocketCAN__socket__result::operator=(const SocketCAN__socket__result& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @SocketCAN_Types.SocketCAN_socket_result.");
+  if (other_value.id().is_bound()) field_id = other_value.id();
+  else field_id.clean_up();
+  if (other_value.result().is_bound()) field_result = other_value.result();
+  else field_result.clean_up();
+}
+return *this;
+}
+
+boolean SocketCAN__socket__result::operator==(const SocketCAN__socket__result& other_value) const
+{
+return field_id==other_value.field_id
+  && field_result==other_value.field_result;
+}
+
+boolean SocketCAN__socket__result::is_bound() const
+{
+return (field_id.is_bound())
+  || (field_result.is_bound());
+}
+boolean SocketCAN__socket__result::is_value() const
+{
+return field_id.is_value()
+  && field_result.is_value();
+}
+void SocketCAN__socket__result::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ id := ");
+field_id.log();
+TTCN_Logger::log_event_str(", result := ");
+field_result.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SocketCAN__socket__result::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 @SocketCAN_Types.SocketCAN_socket_result 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) id().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) result().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(), "id")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          id().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(), "result")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          result().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 @SocketCAN_Types.SocketCAN_socket_result: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@SocketCAN_Types.SocketCAN_socket_result");
+  }
+}
+
+void SocketCAN__socket__result::set_implicit_omit()
+{
+if (id().is_bound()) id().set_implicit_omit();
+if (result().is_bound()) result().set_implicit_omit();
+}
+
+void SocketCAN__socket__result::encode_text(Text_Buf& text_buf) const
+{
+field_id.encode_text(text_buf);
+field_result.encode_text(text_buf);
+}
+
+void SocketCAN__socket__result::decode_text(Text_Buf& text_buf)
+{
+field_id.decode_text(text_buf);
+field_result.decode_text(text_buf);
+}
+
+struct SocketCAN__socket__result_template::single_value_struct {
+INTEGER_template field_id;
+SocketCAN__Result_template field_result;
+};
+
+void SocketCAN__socket__result_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_id = ANY_VALUE;
+single_value->field_result = ANY_VALUE;
+}
+}
+}
+
+void SocketCAN__socket__result_template::copy_value(const SocketCAN__socket__result& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.id().is_bound()) {
+  single_value->field_id = other_value.id();
+} else {
+  single_value->field_id.clean_up();
+}
+if (other_value.result().is_bound()) {
+  single_value->field_result = other_value.result();
+} else {
+  single_value->field_result.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SocketCAN__socket__result_template::copy_template(const SocketCAN__socket__result_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.id().get_selection()) {
+single_value->field_id = other_value.id();
+} else {
+single_value->field_id.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.result().get_selection()) {
+single_value->field_result = other_value.result();
+} else {
+single_value->field_result.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SocketCAN__socket__result_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_socket_result.");
+break;
+}
+set_selection(other_value);
+}
+
+SocketCAN__socket__result_template::SocketCAN__socket__result_template()
+{
+}
+
+SocketCAN__socket__result_template::SocketCAN__socket__result_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SocketCAN__socket__result_template::SocketCAN__socket__result_template(const SocketCAN__socket__result& other_value)
+{
+copy_value(other_value);
+}
+
+SocketCAN__socket__result_template::SocketCAN__socket__result_template(const OPTIONAL<SocketCAN__socket__result>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__socket__result&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @SocketCAN_Types.SocketCAN_socket_result from an unbound optional field.");
+}
+}
+
+SocketCAN__socket__result_template::SocketCAN__socket__result_template(const SocketCAN__socket__result_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SocketCAN__socket__result_template::~SocketCAN__socket__result_template()
+{
+clean_up();
+}
+
+SocketCAN__socket__result_template& SocketCAN__socket__result_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SocketCAN__socket__result_template& SocketCAN__socket__result_template::operator=(const SocketCAN__socket__result& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SocketCAN__socket__result_template& SocketCAN__socket__result_template::operator=(const OPTIONAL<SocketCAN__socket__result>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__socket__result&)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 @SocketCAN_Types.SocketCAN_socket_result.");
+}
+return *this;
+}
+
+SocketCAN__socket__result_template& SocketCAN__socket__result_template::operator=(const SocketCAN__socket__result_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__socket__result_template::match(const SocketCAN__socket__result& 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.id().is_bound()) return FALSE;
+if(!single_value->field_id.match(other_value.id(), legacy))return FALSE;
+if(!other_value.result().is_bound()) return FALSE;
+if(!single_value->field_result.match(other_value.result(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_socket_result.");
+}
+return FALSE;
+}
+
+boolean SocketCAN__socket__result_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_id.is_bound()
+
+ ||single_value->field_result.is_bound()
+;
+}
+
+boolean SocketCAN__socket__result_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_id.is_value()
+ &&single_value->field_result.is_value();
+}
+
+void SocketCAN__socket__result_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SocketCAN__socket__result SocketCAN__socket__result_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 @SocketCAN_Types.SocketCAN_socket_result.");
+SocketCAN__socket__result ret_val;
+if (single_value->field_id.is_bound()) {
+ret_val.id() = single_value->field_id.valueof();
+}
+if (single_value->field_result.is_bound()) {
+ret_val.result() = single_value->field_result.valueof();
+}
+return ret_val;
+}
+
+void SocketCAN__socket__result_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @SocketCAN_Types.SocketCAN_socket_result.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SocketCAN__socket__result_template[list_length];
+}
+
+SocketCAN__socket__result_template& SocketCAN__socket__result_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @SocketCAN_Types.SocketCAN_socket_result.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @SocketCAN_Types.SocketCAN_socket_result.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& SocketCAN__socket__result_template::id()
+{
+set_specific();
+return single_value->field_id;
+}
+
+const INTEGER_template& SocketCAN__socket__result_template::id() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field id of a non-specific template of type @SocketCAN_Types.SocketCAN_socket_result.");
+return single_value->field_id;
+}
+
+SocketCAN__Result_template& SocketCAN__socket__result_template::result()
+{
+set_specific();
+return single_value->field_result;
+}
+
+const SocketCAN__Result_template& SocketCAN__socket__result_template::result() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field result of a non-specific template of type @SocketCAN_Types.SocketCAN_socket_result.");
+return single_value->field_result;
+}
+
+int SocketCAN__socket__result_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_socket_result 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 @SocketCAN_Types.SocketCAN_socket_result 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 @SocketCAN_Types.SocketCAN_socket_result containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_socket_result containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_socket_result containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_socket_result containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_socket_result.");
+  }
+  return 0;
+}
+
+void SocketCAN__socket__result_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ id := ");
+single_value->field_id.log();
+TTCN_Logger::log_event_str(", result := ");
+single_value->field_result.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SocketCAN__socket__result_template::log_match(const SocketCAN__socket__result& 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_id.match(match_value.id(), legacy)){
+TTCN_Logger::log_logmatch_info(".id");
+single_value->field_id.log_match(match_value.id(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_result.match(match_value.result(), legacy)){
+TTCN_Logger::log_logmatch_info(".result");
+single_value->field_result.log_match(match_value.result(), 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("{ id := ");
+single_value->field_id.log_match(match_value.id(), legacy);
+TTCN_Logger::log_event_str(", result := ");
+single_value->field_result.log_match(match_value.result(), 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 SocketCAN__socket__result_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_id.encode_text(text_buf);
+single_value->field_result.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 @SocketCAN_Types.SocketCAN_socket_result.");
+}
+}
+
+void SocketCAN__socket__result_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_id.decode_text(text_buf);
+single_value->field_result.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 SocketCAN__socket__result_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 @SocketCAN_Types.SocketCAN_socket_result.");
+}
+}
+
+void SocketCAN__socket__result_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: {
+    SocketCAN__socket__result_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @SocketCAN_Types.SocketCAN_socket_result 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) id().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) result().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(), "id")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          id().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(), "result")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          result().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 @SocketCAN_Types.SocketCAN_socket_result: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@SocketCAN_Types.SocketCAN_socket_result");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SocketCAN__socket__result_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_id.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_socket_result");
+single_value->field_result.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_socket_result");
+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 : "@SocketCAN_Types.SocketCAN_socket_result");
+}
+
+boolean SocketCAN__socket__result_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SocketCAN__socket__result_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+SocketCAN__ioctl::SocketCAN__ioctl()
+{
+}
+
+SocketCAN__ioctl::SocketCAN__ioctl(const INTEGER& par_id,
+    const OPTIONAL<SocketCAN__ioctl__ifu>& par_ifu)
+  :   field_id(par_id),
+  field_ifu(par_ifu)
+{
+}
+
+SocketCAN__ioctl::SocketCAN__ioctl(const SocketCAN__ioctl& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @SocketCAN_Types.SocketCAN_ioctl.");
+if (other_value.id().is_bound()) field_id = other_value.id();
+else field_id.clean_up();
+if (other_value.ifu().is_bound()) field_ifu = other_value.ifu();
+else field_ifu.clean_up();
+}
+
+void SocketCAN__ioctl::clean_up()
+{
+field_id.clean_up();
+field_ifu.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SocketCAN__ioctl::get_descriptor() const { return &SocketCAN__ioctl_descr_; }
+SocketCAN__ioctl& SocketCAN__ioctl::operator=(const SocketCAN__ioctl& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @SocketCAN_Types.SocketCAN_ioctl.");
+  if (other_value.id().is_bound()) field_id = other_value.id();
+  else field_id.clean_up();
+  if (other_value.ifu().is_bound()) field_ifu = other_value.ifu();
+  else field_ifu.clean_up();
+}
+return *this;
+}
+
+boolean SocketCAN__ioctl::operator==(const SocketCAN__ioctl& other_value) const
+{
+return field_id==other_value.field_id
+  && field_ifu==other_value.field_ifu;
+}
+
+boolean SocketCAN__ioctl::is_bound() const
+{
+return (field_id.is_bound())
+  || (OPTIONAL_OMIT == field_ifu.get_selection() || field_ifu.is_bound());
+}
+boolean SocketCAN__ioctl::is_value() const
+{
+return field_id.is_value()
+  && (OPTIONAL_OMIT == field_ifu.get_selection() || field_ifu.is_value());
+}
+int SocketCAN__ioctl::size_of() const
+{
+  int ret_val = 1;
+  if (field_ifu.ispresent()) ret_val++;
+  return ret_val;
+}
+
+void SocketCAN__ioctl::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ id := ");
+field_id.log();
+TTCN_Logger::log_event_str(", ifu := ");
+field_ifu.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SocketCAN__ioctl::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 @SocketCAN_Types.SocketCAN_ioctl 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) id().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ifu().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(), "id")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          id().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(), "ifu")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ifu().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 @SocketCAN_Types.SocketCAN_ioctl: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@SocketCAN_Types.SocketCAN_ioctl");
+  }
+}
+
+void SocketCAN__ioctl::set_implicit_omit()
+{
+if (id().is_bound()) id().set_implicit_omit();
+if (!ifu().is_bound()) ifu() = OMIT_VALUE;
+else ifu().set_implicit_omit();
+}
+
+void SocketCAN__ioctl::encode_text(Text_Buf& text_buf) const
+{
+field_id.encode_text(text_buf);
+field_ifu.encode_text(text_buf);
+}
+
+void SocketCAN__ioctl::decode_text(Text_Buf& text_buf)
+{
+field_id.decode_text(text_buf);
+field_ifu.decode_text(text_buf);
+}
+
+struct SocketCAN__ioctl_template::single_value_struct {
+INTEGER_template field_id;
+SocketCAN__ioctl__ifu_template field_ifu;
+};
+
+void SocketCAN__ioctl_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_id = ANY_VALUE;
+single_value->field_ifu = ANY_OR_OMIT;
+}
+}
+}
+
+void SocketCAN__ioctl_template::copy_value(const SocketCAN__ioctl& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.id().is_bound()) {
+  single_value->field_id = other_value.id();
+} else {
+  single_value->field_id.clean_up();
+}
+if (other_value.ifu().is_bound()) {
+  if (other_value.ifu().ispresent()) single_value->field_ifu = other_value.ifu()();
+  else single_value->field_ifu = OMIT_VALUE;
+} else {
+  single_value->field_ifu.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SocketCAN__ioctl_template::copy_template(const SocketCAN__ioctl_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.id().get_selection()) {
+single_value->field_id = other_value.id();
+} else {
+single_value->field_id.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.ifu().get_selection()) {
+single_value->field_ifu = other_value.ifu();
+} else {
+single_value->field_ifu.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SocketCAN__ioctl_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_ioctl.");
+break;
+}
+set_selection(other_value);
+}
+
+SocketCAN__ioctl_template::SocketCAN__ioctl_template()
+{
+}
+
+SocketCAN__ioctl_template::SocketCAN__ioctl_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SocketCAN__ioctl_template::SocketCAN__ioctl_template(const SocketCAN__ioctl& other_value)
+{
+copy_value(other_value);
+}
+
+SocketCAN__ioctl_template::SocketCAN__ioctl_template(const OPTIONAL<SocketCAN__ioctl>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__ioctl&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @SocketCAN_Types.SocketCAN_ioctl from an unbound optional field.");
+}
+}
+
+SocketCAN__ioctl_template::SocketCAN__ioctl_template(const SocketCAN__ioctl_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SocketCAN__ioctl_template::~SocketCAN__ioctl_template()
+{
+clean_up();
+}
+
+SocketCAN__ioctl_template& SocketCAN__ioctl_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SocketCAN__ioctl_template& SocketCAN__ioctl_template::operator=(const SocketCAN__ioctl& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SocketCAN__ioctl_template& SocketCAN__ioctl_template::operator=(const OPTIONAL<SocketCAN__ioctl>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__ioctl&)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 @SocketCAN_Types.SocketCAN_ioctl.");
+}
+return *this;
+}
+
+SocketCAN__ioctl_template& SocketCAN__ioctl_template::operator=(const SocketCAN__ioctl_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__ioctl_template::match(const SocketCAN__ioctl& 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.id().is_bound()) return FALSE;
+if(!single_value->field_id.match(other_value.id(), legacy))return FALSE;
+if(!other_value.ifu().is_bound()) return FALSE;
+if((other_value.ifu().ispresent() ? !single_value->field_ifu.match((const SocketCAN__ioctl__ifu&)other_value.ifu(), legacy) : !single_value->field_ifu.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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_ioctl.");
+}
+return FALSE;
+}
+
+boolean SocketCAN__ioctl_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_id.is_bound()
+
+ ||(single_value->field_ifu.is_omit() || single_value->field_ifu.is_bound())
+;
+}
+
+boolean SocketCAN__ioctl_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_id.is_value()
+ &&(single_value->field_ifu.is_omit() || single_value->field_ifu.is_value());
+}
+
+void SocketCAN__ioctl_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SocketCAN__ioctl SocketCAN__ioctl_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 @SocketCAN_Types.SocketCAN_ioctl.");
+SocketCAN__ioctl ret_val;
+if (single_value->field_id.is_bound()) {
+ret_val.id() = single_value->field_id.valueof();
+}
+if (single_value->field_ifu.is_omit()) ret_val.ifu() = OMIT_VALUE;
+else if (single_value->field_ifu.is_bound()) {
+ret_val.ifu() = single_value->field_ifu.valueof();
+}
+return ret_val;
+}
+
+void SocketCAN__ioctl_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @SocketCAN_Types.SocketCAN_ioctl.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SocketCAN__ioctl_template[list_length];
+}
+
+SocketCAN__ioctl_template& SocketCAN__ioctl_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @SocketCAN_Types.SocketCAN_ioctl.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @SocketCAN_Types.SocketCAN_ioctl.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& SocketCAN__ioctl_template::id()
+{
+set_specific();
+return single_value->field_id;
+}
+
+const INTEGER_template& SocketCAN__ioctl_template::id() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field id of a non-specific template of type @SocketCAN_Types.SocketCAN_ioctl.");
+return single_value->field_id;
+}
+
+SocketCAN__ioctl__ifu_template& SocketCAN__ioctl_template::ifu()
+{
+set_specific();
+return single_value->field_ifu;
+}
+
+const SocketCAN__ioctl__ifu_template& SocketCAN__ioctl_template::ifu() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field ifu of a non-specific template of type @SocketCAN_Types.SocketCAN_ioctl.");
+return single_value->field_ifu;
+}
+
+int SocketCAN__ioctl_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_ioctl which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+  {    int ret_val = 1;
+      if (single_value->field_ifu.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 @SocketCAN_Types.SocketCAN_ioctl 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 @SocketCAN_Types.SocketCAN_ioctl containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_ioctl containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_ioctl containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_ioctl containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_ioctl.");
+  }
+  return 0;
+}
+
+void SocketCAN__ioctl_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ id := ");
+single_value->field_id.log();
+TTCN_Logger::log_event_str(", ifu := ");
+single_value->field_ifu.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SocketCAN__ioctl_template::log_match(const SocketCAN__ioctl& 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_id.match(match_value.id(), legacy)){
+TTCN_Logger::log_logmatch_info(".id");
+single_value->field_id.log_match(match_value.id(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if (match_value.ifu().ispresent()){
+if(!single_value->field_ifu.match(match_value.ifu(), legacy)){
+TTCN_Logger::log_logmatch_info(".ifu");
+single_value->field_ifu.log_match(match_value.ifu(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+} else {
+if (!single_value->field_ifu.match_omit(legacy)){
+ TTCN_Logger::log_logmatch_info(".ifu := omit with ");
+TTCN_Logger::print_logmatch_buffer();
+single_value->field_ifu.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("{ id := ");
+single_value->field_id.log_match(match_value.id(), legacy);
+TTCN_Logger::log_event_str(", ifu := ");
+if (match_value.ifu().ispresent()) single_value->field_ifu.log_match(match_value.ifu(), legacy);
+else {
+TTCN_Logger::log_event_str("omit with ");
+single_value->field_ifu.log();
+if (single_value->field_ifu.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 SocketCAN__ioctl_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_id.encode_text(text_buf);
+single_value->field_ifu.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 @SocketCAN_Types.SocketCAN_ioctl.");
+}
+}
+
+void SocketCAN__ioctl_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_id.decode_text(text_buf);
+single_value->field_ifu.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 SocketCAN__ioctl_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 @SocketCAN_Types.SocketCAN_ioctl.");
+}
+}
+
+void SocketCAN__ioctl_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: {
+    SocketCAN__ioctl_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @SocketCAN_Types.SocketCAN_ioctl 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) id().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ifu().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(), "id")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          id().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(), "ifu")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ifu().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 @SocketCAN_Types.SocketCAN_ioctl: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@SocketCAN_Types.SocketCAN_ioctl");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SocketCAN__ioctl_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_id.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_ioctl");
+single_value->field_ifu.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_ioctl");
+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 : "@SocketCAN_Types.SocketCAN_ioctl");
+}
+
+boolean SocketCAN__ioctl_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SocketCAN__ioctl_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+SocketCAN__ioctl__result::SocketCAN__ioctl__result()
+{
+}
+
+SocketCAN__ioctl__result::SocketCAN__ioctl__result(const SocketCAN__ifr& par_ifr,
+    const SocketCAN__Result& par_result)
+  :   field_ifr(par_ifr),
+  field_result(par_result)
+{
+}
+
+SocketCAN__ioctl__result::SocketCAN__ioctl__result(const SocketCAN__ioctl__result& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @SocketCAN_Types.SocketCAN_ioctl_result.");
+if (other_value.ifr().is_bound()) field_ifr = other_value.ifr();
+else field_ifr.clean_up();
+if (other_value.result().is_bound()) field_result = other_value.result();
+else field_result.clean_up();
+}
+
+void SocketCAN__ioctl__result::clean_up()
+{
+field_ifr.clean_up();
+field_result.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SocketCAN__ioctl__result::get_descriptor() const { return &SocketCAN__ioctl__result_descr_; }
+SocketCAN__ioctl__result& SocketCAN__ioctl__result::operator=(const SocketCAN__ioctl__result& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @SocketCAN_Types.SocketCAN_ioctl_result.");
+  if (other_value.ifr().is_bound()) field_ifr = other_value.ifr();
+  else field_ifr.clean_up();
+  if (other_value.result().is_bound()) field_result = other_value.result();
+  else field_result.clean_up();
+}
+return *this;
+}
+
+boolean SocketCAN__ioctl__result::operator==(const SocketCAN__ioctl__result& other_value) const
+{
+return field_ifr==other_value.field_ifr
+  && field_result==other_value.field_result;
+}
+
+boolean SocketCAN__ioctl__result::is_bound() const
+{
+return (field_ifr.is_bound())
+  || (field_result.is_bound());
+}
+boolean SocketCAN__ioctl__result::is_value() const
+{
+return field_ifr.is_value()
+  && field_result.is_value();
+}
+void SocketCAN__ioctl__result::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ ifr := ");
+field_ifr.log();
+TTCN_Logger::log_event_str(", result := ");
+field_result.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SocketCAN__ioctl__result::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 @SocketCAN_Types.SocketCAN_ioctl_result 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) ifr().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) result().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(), "ifr")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ifr().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(), "result")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          result().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 @SocketCAN_Types.SocketCAN_ioctl_result: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@SocketCAN_Types.SocketCAN_ioctl_result");
+  }
+}
+
+void SocketCAN__ioctl__result::set_implicit_omit()
+{
+if (ifr().is_bound()) ifr().set_implicit_omit();
+if (result().is_bound()) result().set_implicit_omit();
+}
+
+void SocketCAN__ioctl__result::encode_text(Text_Buf& text_buf) const
+{
+field_ifr.encode_text(text_buf);
+field_result.encode_text(text_buf);
+}
+
+void SocketCAN__ioctl__result::decode_text(Text_Buf& text_buf)
+{
+field_ifr.decode_text(text_buf);
+field_result.decode_text(text_buf);
+}
+
+struct SocketCAN__ioctl__result_template::single_value_struct {
+SocketCAN__ifr_template field_ifr;
+SocketCAN__Result_template field_result;
+};
+
+void SocketCAN__ioctl__result_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_ifr = ANY_VALUE;
+single_value->field_result = ANY_VALUE;
+}
+}
+}
+
+void SocketCAN__ioctl__result_template::copy_value(const SocketCAN__ioctl__result& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.ifr().is_bound()) {
+  single_value->field_ifr = other_value.ifr();
+} else {
+  single_value->field_ifr.clean_up();
+}
+if (other_value.result().is_bound()) {
+  single_value->field_result = other_value.result();
+} else {
+  single_value->field_result.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SocketCAN__ioctl__result_template::copy_template(const SocketCAN__ioctl__result_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.ifr().get_selection()) {
+single_value->field_ifr = other_value.ifr();
+} else {
+single_value->field_ifr.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.result().get_selection()) {
+single_value->field_result = other_value.result();
+} else {
+single_value->field_result.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SocketCAN__ioctl__result_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_ioctl_result.");
+break;
+}
+set_selection(other_value);
+}
+
+SocketCAN__ioctl__result_template::SocketCAN__ioctl__result_template()
+{
+}
+
+SocketCAN__ioctl__result_template::SocketCAN__ioctl__result_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SocketCAN__ioctl__result_template::SocketCAN__ioctl__result_template(const SocketCAN__ioctl__result& other_value)
+{
+copy_value(other_value);
+}
+
+SocketCAN__ioctl__result_template::SocketCAN__ioctl__result_template(const OPTIONAL<SocketCAN__ioctl__result>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__ioctl__result&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @SocketCAN_Types.SocketCAN_ioctl_result from an unbound optional field.");
+}
+}
+
+SocketCAN__ioctl__result_template::SocketCAN__ioctl__result_template(const SocketCAN__ioctl__result_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SocketCAN__ioctl__result_template::~SocketCAN__ioctl__result_template()
+{
+clean_up();
+}
+
+SocketCAN__ioctl__result_template& SocketCAN__ioctl__result_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SocketCAN__ioctl__result_template& SocketCAN__ioctl__result_template::operator=(const SocketCAN__ioctl__result& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SocketCAN__ioctl__result_template& SocketCAN__ioctl__result_template::operator=(const OPTIONAL<SocketCAN__ioctl__result>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__ioctl__result&)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 @SocketCAN_Types.SocketCAN_ioctl_result.");
+}
+return *this;
+}
+
+SocketCAN__ioctl__result_template& SocketCAN__ioctl__result_template::operator=(const SocketCAN__ioctl__result_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__ioctl__result_template::match(const SocketCAN__ioctl__result& 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.ifr().is_bound()) return FALSE;
+if(!single_value->field_ifr.match(other_value.ifr(), legacy))return FALSE;
+if(!other_value.result().is_bound()) return FALSE;
+if(!single_value->field_result.match(other_value.result(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_ioctl_result.");
+}
+return FALSE;
+}
+
+boolean SocketCAN__ioctl__result_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_ifr.is_bound()
+
+ ||single_value->field_result.is_bound()
+;
+}
+
+boolean SocketCAN__ioctl__result_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_ifr.is_value()
+ &&single_value->field_result.is_value();
+}
+
+void SocketCAN__ioctl__result_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SocketCAN__ioctl__result SocketCAN__ioctl__result_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 @SocketCAN_Types.SocketCAN_ioctl_result.");
+SocketCAN__ioctl__result ret_val;
+if (single_value->field_ifr.is_bound()) {
+ret_val.ifr() = single_value->field_ifr.valueof();
+}
+if (single_value->field_result.is_bound()) {
+ret_val.result() = single_value->field_result.valueof();
+}
+return ret_val;
+}
+
+void SocketCAN__ioctl__result_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @SocketCAN_Types.SocketCAN_ioctl_result.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SocketCAN__ioctl__result_template[list_length];
+}
+
+SocketCAN__ioctl__result_template& SocketCAN__ioctl__result_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @SocketCAN_Types.SocketCAN_ioctl_result.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @SocketCAN_Types.SocketCAN_ioctl_result.");
+return value_list.list_value[list_index];
+}
+
+SocketCAN__ifr_template& SocketCAN__ioctl__result_template::ifr()
+{
+set_specific();
+return single_value->field_ifr;
+}
+
+const SocketCAN__ifr_template& SocketCAN__ioctl__result_template::ifr() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field ifr of a non-specific template of type @SocketCAN_Types.SocketCAN_ioctl_result.");
+return single_value->field_ifr;
+}
+
+SocketCAN__Result_template& SocketCAN__ioctl__result_template::result()
+{
+set_specific();
+return single_value->field_result;
+}
+
+const SocketCAN__Result_template& SocketCAN__ioctl__result_template::result() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field result of a non-specific template of type @SocketCAN_Types.SocketCAN_ioctl_result.");
+return single_value->field_result;
+}
+
+int SocketCAN__ioctl__result_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_ioctl_result 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 @SocketCAN_Types.SocketCAN_ioctl_result 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 @SocketCAN_Types.SocketCAN_ioctl_result containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_ioctl_result containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_ioctl_result containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_ioctl_result containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_ioctl_result.");
+  }
+  return 0;
+}
+
+void SocketCAN__ioctl__result_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ ifr := ");
+single_value->field_ifr.log();
+TTCN_Logger::log_event_str(", result := ");
+single_value->field_result.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SocketCAN__ioctl__result_template::log_match(const SocketCAN__ioctl__result& 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_ifr.match(match_value.ifr(), legacy)){
+TTCN_Logger::log_logmatch_info(".ifr");
+single_value->field_ifr.log_match(match_value.ifr(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_result.match(match_value.result(), legacy)){
+TTCN_Logger::log_logmatch_info(".result");
+single_value->field_result.log_match(match_value.result(), 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("{ ifr := ");
+single_value->field_ifr.log_match(match_value.ifr(), legacy);
+TTCN_Logger::log_event_str(", result := ");
+single_value->field_result.log_match(match_value.result(), 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 SocketCAN__ioctl__result_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_ifr.encode_text(text_buf);
+single_value->field_result.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 @SocketCAN_Types.SocketCAN_ioctl_result.");
+}
+}
+
+void SocketCAN__ioctl__result_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_ifr.decode_text(text_buf);
+single_value->field_result.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 SocketCAN__ioctl__result_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 @SocketCAN_Types.SocketCAN_ioctl_result.");
+}
+}
+
+void SocketCAN__ioctl__result_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: {
+    SocketCAN__ioctl__result_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @SocketCAN_Types.SocketCAN_ioctl_result 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) ifr().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) result().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(), "ifr")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ifr().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(), "result")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          result().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 @SocketCAN_Types.SocketCAN_ioctl_result: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@SocketCAN_Types.SocketCAN_ioctl_result");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SocketCAN__ioctl__result_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_ifr.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_ioctl_result");
+single_value->field_result.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_ioctl_result");
+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 : "@SocketCAN_Types.SocketCAN_ioctl_result");
+}
+
+boolean SocketCAN__ioctl__result_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SocketCAN__ioctl__result_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 SocketCAN__connectu::copy_value(const SocketCAN__connectu& other_value)
+{
+switch (other_value.union_selection) {
+case ALT_bcm:
+field_bcm = new SocketCAN__connect__bcm(*other_value.field_bcm);
+break;
+default:
+TTCN_error("Assignment of an unbound union value of type @SocketCAN_Types.SocketCAN_connectu.");
+}
+union_selection = other_value.union_selection;
+}
+
+SocketCAN__connectu::SocketCAN__connectu()
+{
+union_selection = UNBOUND_VALUE;
+}
+
+SocketCAN__connectu::SocketCAN__connectu(const SocketCAN__connectu& other_value)
+: Base_Type(){
+copy_value(other_value);
+}
+
+SocketCAN__connectu::~SocketCAN__connectu()
+{
+clean_up();
+}
+
+SocketCAN__connectu& SocketCAN__connectu::operator=(const SocketCAN__connectu& other_value)
+{
+if (this != &other_value) {
+clean_up();
+copy_value(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__connectu::operator==(const SocketCAN__connectu& other_value) const
+{
+if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @SocketCAN_Types.SocketCAN_connectu.");
+if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @SocketCAN_Types.SocketCAN_connectu.");
+if (union_selection != other_value.union_selection) return FALSE;
+switch (union_selection) {
+case ALT_bcm:
+return *field_bcm == *other_value.field_bcm;
+default:
+return FALSE;
+}
+}
+
+SocketCAN__connect__bcm& SocketCAN__connectu::bcm()
+{
+if (union_selection != ALT_bcm) {
+clean_up();
+field_bcm = new SocketCAN__connect__bcm;
+union_selection = ALT_bcm;
+}
+return *field_bcm;
+}
+
+const SocketCAN__connect__bcm& SocketCAN__connectu::bcm() const
+{
+if (union_selection != ALT_bcm) TTCN_error("Using non-selected field bcm in a value of union type @SocketCAN_Types.SocketCAN_connectu.");
+return *field_bcm;
+}
+
+boolean SocketCAN__connectu::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 @SocketCAN_Types.SocketCAN_connectu.");
+return union_selection == checked_selection;
+}
+
+boolean SocketCAN__connectu::is_bound() const
+{
+  return union_selection != UNBOUND_VALUE;
+}
+
+boolean SocketCAN__connectu::is_value() const
+{
+switch (union_selection) {
+case UNBOUND_VALUE: return FALSE;
+case ALT_bcm: return field_bcm->is_value();
+default: TTCN_error("Invalid selection in union is_bound");}
+}
+
+void SocketCAN__connectu::clean_up()
+{
+switch (union_selection) {
+case ALT_bcm:
+  delete field_bcm;
+  break;
+default:
+  break;
+}
+union_selection = UNBOUND_VALUE;
+}
+
+void SocketCAN__connectu::log() const
+{
+switch (union_selection) {
+case ALT_bcm:
+TTCN_Logger::log_event_str("{ bcm := ");
+field_bcm->log();
+TTCN_Logger::log_event_str(" }");
+break;
+default:
+TTCN_Logger::log_event_unbound();
+}
+}
+
+void SocketCAN__connectu::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, "bcm")) {
+    bcm().set_param(*mp_last);
+    if (!bcm().is_bound()) clean_up();
+    return;
+  }
+  mp_last->error("Field %s does not exist in type @SocketCAN_Types.SocketCAN_connectu.", last_name);
+}
+
+void SocketCAN__connectu::set_implicit_omit()
+{
+switch (union_selection) {
+case ALT_bcm:
+field_bcm->set_implicit_omit(); break;
+default: break;
+}
+}
+
+void SocketCAN__connectu::encode_text(Text_Buf& text_buf) const
+{
+text_buf.push_int(union_selection);
+switch (union_selection) {
+case ALT_bcm:
+field_bcm->encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an unbound value of union type @SocketCAN_Types.SocketCAN_connectu.");
+}
+}
+
+void SocketCAN__connectu::decode_text(Text_Buf& text_buf)
+{
+switch ((union_selection_type)text_buf.pull_int().get_val()) {
+case ALT_bcm:
+bcm().decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for type @SocketCAN_Types.SocketCAN_connectu.");
+}
+}
+
+void SocketCAN__connectu_template::copy_value(const SocketCAN__connectu& other_value)
+{
+single_value.union_selection = other_value.get_selection();
+switch (single_value.union_selection) {
+case SocketCAN__connectu::ALT_bcm:
+single_value.field_bcm = new SocketCAN__connect__bcm_template(other_value.bcm());
+break;
+default:
+TTCN_error("Initializing a template with an unbound value of type @SocketCAN_Types.SocketCAN_connectu.");
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SocketCAN__connectu_template::copy_template(const SocketCAN__connectu_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 SocketCAN__connectu::ALT_bcm:
+single_value.field_bcm = new SocketCAN__connect__bcm_template(*other_value.single_value.field_bcm);
+break;
+default:
+TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @SocketCAN_Types.SocketCAN_connectu.");
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SocketCAN__connectu_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;
+default:
+TTCN_error("Copying an uninitialized template of union type @SocketCAN_Types.SocketCAN_connectu.");
+}
+set_selection(other_value);
+}
+
+SocketCAN__connectu_template::SocketCAN__connectu_template()
+{
+}
+
+SocketCAN__connectu_template::SocketCAN__connectu_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SocketCAN__connectu_template::SocketCAN__connectu_template(const SocketCAN__connectu& other_value)
+{
+copy_value(other_value);
+}
+
+SocketCAN__connectu_template::SocketCAN__connectu_template(const OPTIONAL<SocketCAN__connectu>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__connectu&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of union type @SocketCAN_Types.SocketCAN_connectu from an unbound optional field.");
+}
+}
+
+SocketCAN__connectu_template::SocketCAN__connectu_template(const SocketCAN__connectu_template& other_value)
+: Base_Template(){
+copy_template(other_value);
+}
+
+SocketCAN__connectu_template::~SocketCAN__connectu_template()
+{
+clean_up();
+}
+
+void SocketCAN__connectu_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case SocketCAN__connectu::ALT_bcm:
+delete single_value.field_bcm;
+default:
+break;
+}
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SocketCAN__connectu_template& SocketCAN__connectu_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SocketCAN__connectu_template& SocketCAN__connectu_template::operator=(const SocketCAN__connectu& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SocketCAN__connectu_template& SocketCAN__connectu_template::operator=(const OPTIONAL<SocketCAN__connectu>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__connectu&)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 @SocketCAN_Types.SocketCAN_connectu.");
+}
+return *this;
+}
+
+SocketCAN__connectu_template& SocketCAN__connectu_template::operator=(const SocketCAN__connectu_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__connectu_template::match(const SocketCAN__connectu& 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:
+{
+SocketCAN__connectu::union_selection_type value_selection = other_value.get_selection();
+if (value_selection == SocketCAN__connectu::UNBOUND_VALUE) return FALSE;
+if (value_selection != single_value.union_selection) return FALSE;
+switch (value_selection) {
+case SocketCAN__connectu::ALT_bcm:
+return single_value.field_bcm->match(other_value.bcm(), legacy);
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @SocketCAN_Types.SocketCAN_connectu.");
+}
+}
+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;
+default:
+TTCN_error ("Matching an uninitialized template of union type @SocketCAN_Types.SocketCAN_connectu.");
+}
+return FALSE;
+}
+
+boolean SocketCAN__connectu_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+switch (single_value.union_selection) {
+case SocketCAN__connectu::ALT_bcm:
+return single_value.field_bcm->is_value();
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @SocketCAN_Types.SocketCAN_connectu.");
+}
+}
+
+SocketCAN__connectu SocketCAN__connectu_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 @SocketCAN_Types.SocketCAN_connectu.");
+SocketCAN__connectu ret_val;
+switch (single_value.union_selection) {
+case SocketCAN__connectu::ALT_bcm:
+ret_val.bcm() = single_value.field_bcm->valueof();
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @SocketCAN_Types.SocketCAN_connectu.");
+}
+return ret_val;
+}
+
+SocketCAN__connectu_template& SocketCAN__connectu_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @SocketCAN_Types.SocketCAN_connectu.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @SocketCAN_Types.SocketCAN_connectu.");
+return value_list.list_value[list_index];
+}
+void SocketCAN__connectu_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error ("Internal error: Setting an invalid list for a template of union type @SocketCAN_Types.SocketCAN_connectu.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SocketCAN__connectu_template[list_length];
+}
+
+SocketCAN__connect__bcm_template& SocketCAN__connectu_template::bcm()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != SocketCAN__connectu::ALT_bcm) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_bcm = new SocketCAN__connect__bcm_template(ANY_VALUE);
+else single_value.field_bcm = new SocketCAN__connect__bcm_template;
+single_value.union_selection = SocketCAN__connectu::ALT_bcm;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_bcm;
+}
+
+const SocketCAN__connect__bcm_template& SocketCAN__connectu_template::bcm() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field bcm in a non-specific template of union type @SocketCAN_Types.SocketCAN_connectu.");
+if (single_value.union_selection != SocketCAN__connectu::ALT_bcm) TTCN_error("Accessing non-selected field bcm in a template of union type @SocketCAN_Types.SocketCAN_connectu.");
+return *single_value.field_bcm;
+}
+
+boolean SocketCAN__connectu_template::ischosen(SocketCAN__connectu::union_selection_type checked_selection) const
+{
+if (checked_selection == SocketCAN__connectu::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @SocketCAN_Types.SocketCAN_connectu.");
+switch (template_selection) {
+case SPECIFIC_VALUE:
+if (single_value.union_selection == SocketCAN__connectu::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @SocketCAN_Types.SocketCAN_connectu.");
+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 @SocketCAN_Types.SocketCAN_connectu 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 SocketCAN__connectu_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case SocketCAN__connectu::ALT_bcm:
+TTCN_Logger::log_event_str("{ bcm := ");
+single_value.field_bcm->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 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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SocketCAN__connectu_template::log_match(const SocketCAN__connectu& 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()) {
+switch (single_value.union_selection) {
+case SocketCAN__connectu::ALT_bcm:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".bcm");
+single_value.field_bcm->log_match(match_value.bcm(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ bcm := ");
+single_value.field_bcm->log_match(match_value.bcm(), 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 SocketCAN__connectu_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 SocketCAN__connectu::ALT_bcm:
+single_value.field_bcm->encode_text(text_buf);
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @SocketCAN_Types.SocketCAN_connectu.");
+}
+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 @SocketCAN_Types.SocketCAN_connectu.");
+}
+}
+
+void SocketCAN__connectu_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+{
+single_value.union_selection = SocketCAN__connectu::UNBOUND_VALUE;
+SocketCAN__connectu::union_selection_type new_selection = (SocketCAN__connectu::union_selection_type)text_buf.pull_int().get_val();
+switch (new_selection) {
+case SocketCAN__connectu::ALT_bcm:
+single_value.field_bcm = new SocketCAN__connect__bcm_template;
+single_value.field_bcm->decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @SocketCAN_Types.SocketCAN_connectu.");
+}
+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 SocketCAN__connectu_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 @SocketCAN_Types.SocketCAN_connectu.");
+}
+}
+
+boolean SocketCAN__connectu_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SocketCAN__connectu_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 SocketCAN__connectu_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 `@SocketCAN_Types.SocketCAN_connectu'");
+    }
+    if (strcmp("bcm", param_field) == 0) {
+      bcm().set_param(param);
+      return;
+    } else param.error("Field `%s' not found in union template type `@SocketCAN_Types.SocketCAN_connectu'", 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: {
+    SocketCAN__connectu_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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", "@SocketCAN_Types.SocketCAN_connectu");
+    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, "bcm")) {
+      bcm().set_param(*mp_last);
+      break;
+    }
+    mp_last->error("Field %s does not exist in type @SocketCAN_Types.SocketCAN_connectu.", last_name);
+  } break;
+  default:
+    param.type_error("union template", "@SocketCAN_Types.SocketCAN_connectu");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SocketCAN__connectu_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 SocketCAN__connectu::ALT_bcm:
+single_value.field_bcm->check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_connectu");
+return;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @SocketCAN_Types.SocketCAN_connectu.");
+}
+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 : "@SocketCAN_Types.SocketCAN_connectu");
+}
+
+SocketCAN__connect__bcm::SocketCAN__connect__bcm()
+{
+}
+
+SocketCAN__connect__bcm::SocketCAN__connect__bcm(const INTEGER& par_if__index)
+  :   field_if__index(par_if__index)
+{
+}
+
+SocketCAN__connect__bcm::SocketCAN__connect__bcm(const SocketCAN__connect__bcm& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @SocketCAN_Types.SocketCAN_connect_bcm.");
+if (other_value.if__index().is_bound()) field_if__index = other_value.if__index();
+else field_if__index.clean_up();
+}
+
+void SocketCAN__connect__bcm::clean_up()
+{
+field_if__index.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SocketCAN__connect__bcm::get_descriptor() const { return &SocketCAN__connect__bcm_descr_; }
+SocketCAN__connect__bcm& SocketCAN__connect__bcm::operator=(const SocketCAN__connect__bcm& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @SocketCAN_Types.SocketCAN_connect_bcm.");
+  if (other_value.if__index().is_bound()) field_if__index = other_value.if__index();
+  else field_if__index.clean_up();
+}
+return *this;
+}
+
+boolean SocketCAN__connect__bcm::operator==(const SocketCAN__connect__bcm& other_value) const
+{
+return field_if__index==other_value.field_if__index;
+}
+
+boolean SocketCAN__connect__bcm::is_bound() const
+{
+return (field_if__index.is_bound());
+}
+boolean SocketCAN__connect__bcm::is_value() const
+{
+return field_if__index.is_value();
+}
+void SocketCAN__connect__bcm::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ if_index := ");
+field_if__index.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SocketCAN__connect__bcm::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 (1<param.get_size()) {
+      param.error("record value of type @SocketCAN_Types.SocketCAN_connect_bcm has 1 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) if__index().set_param(*param.get_elem(0));
+    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(), "if_index")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          if__index().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 @SocketCAN_Types.SocketCAN_connect_bcm: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@SocketCAN_Types.SocketCAN_connect_bcm");
+  }
+}
+
+void SocketCAN__connect__bcm::set_implicit_omit()
+{
+if (if__index().is_bound()) if__index().set_implicit_omit();
+}
+
+void SocketCAN__connect__bcm::encode_text(Text_Buf& text_buf) const
+{
+field_if__index.encode_text(text_buf);
+}
+
+void SocketCAN__connect__bcm::decode_text(Text_Buf& text_buf)
+{
+field_if__index.decode_text(text_buf);
+}
+
+struct SocketCAN__connect__bcm_template::single_value_struct {
+INTEGER_template field_if__index;
+};
+
+void SocketCAN__connect__bcm_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_if__index = ANY_VALUE;
+}
+}
+}
+
+void SocketCAN__connect__bcm_template::copy_value(const SocketCAN__connect__bcm& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.if__index().is_bound()) {
+  single_value->field_if__index = other_value.if__index();
+} else {
+  single_value->field_if__index.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SocketCAN__connect__bcm_template::copy_template(const SocketCAN__connect__bcm_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.if__index().get_selection()) {
+single_value->field_if__index = other_value.if__index();
+} else {
+single_value->field_if__index.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SocketCAN__connect__bcm_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_connect_bcm.");
+break;
+}
+set_selection(other_value);
+}
+
+SocketCAN__connect__bcm_template::SocketCAN__connect__bcm_template()
+{
+}
+
+SocketCAN__connect__bcm_template::SocketCAN__connect__bcm_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SocketCAN__connect__bcm_template::SocketCAN__connect__bcm_template(const SocketCAN__connect__bcm& other_value)
+{
+copy_value(other_value);
+}
+
+SocketCAN__connect__bcm_template::SocketCAN__connect__bcm_template(const OPTIONAL<SocketCAN__connect__bcm>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__connect__bcm&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @SocketCAN_Types.SocketCAN_connect_bcm from an unbound optional field.");
+}
+}
+
+SocketCAN__connect__bcm_template::SocketCAN__connect__bcm_template(const SocketCAN__connect__bcm_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SocketCAN__connect__bcm_template::~SocketCAN__connect__bcm_template()
+{
+clean_up();
+}
+
+SocketCAN__connect__bcm_template& SocketCAN__connect__bcm_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SocketCAN__connect__bcm_template& SocketCAN__connect__bcm_template::operator=(const SocketCAN__connect__bcm& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SocketCAN__connect__bcm_template& SocketCAN__connect__bcm_template::operator=(const OPTIONAL<SocketCAN__connect__bcm>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__connect__bcm&)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 @SocketCAN_Types.SocketCAN_connect_bcm.");
+}
+return *this;
+}
+
+SocketCAN__connect__bcm_template& SocketCAN__connect__bcm_template::operator=(const SocketCAN__connect__bcm_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__connect__bcm_template::match(const SocketCAN__connect__bcm& 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.if__index().is_bound()) return FALSE;
+if(!single_value->field_if__index.match(other_value.if__index(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_connect_bcm.");
+}
+return FALSE;
+}
+
+boolean SocketCAN__connect__bcm_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_if__index.is_bound()
+;
+}
+
+boolean SocketCAN__connect__bcm_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_if__index.is_value();
+}
+
+void SocketCAN__connect__bcm_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SocketCAN__connect__bcm SocketCAN__connect__bcm_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 @SocketCAN_Types.SocketCAN_connect_bcm.");
+SocketCAN__connect__bcm ret_val;
+if (single_value->field_if__index.is_bound()) {
+ret_val.if__index() = single_value->field_if__index.valueof();
+}
+return ret_val;
+}
+
+void SocketCAN__connect__bcm_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @SocketCAN_Types.SocketCAN_connect_bcm.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SocketCAN__connect__bcm_template[list_length];
+}
+
+SocketCAN__connect__bcm_template& SocketCAN__connect__bcm_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @SocketCAN_Types.SocketCAN_connect_bcm.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @SocketCAN_Types.SocketCAN_connect_bcm.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& SocketCAN__connect__bcm_template::if__index()
+{
+set_specific();
+return single_value->field_if__index;
+}
+
+const INTEGER_template& SocketCAN__connect__bcm_template::if__index() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field if_index of a non-specific template of type @SocketCAN_Types.SocketCAN_connect_bcm.");
+return single_value->field_if__index;
+}
+
+int SocketCAN__connect__bcm_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_connect_bcm which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 1;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_connect_bcm 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 @SocketCAN_Types.SocketCAN_connect_bcm containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_connect_bcm containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_connect_bcm containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_connect_bcm containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_connect_bcm.");
+  }
+  return 0;
+}
+
+void SocketCAN__connect__bcm_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ if_index := ");
+single_value->field_if__index.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SocketCAN__connect__bcm_template::log_match(const SocketCAN__connect__bcm& 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_if__index.match(match_value.if__index(), legacy)){
+TTCN_Logger::log_logmatch_info(".if_index");
+single_value->field_if__index.log_match(match_value.if__index(), 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("{ if_index := ");
+single_value->field_if__index.log_match(match_value.if__index(), 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 SocketCAN__connect__bcm_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_if__index.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 @SocketCAN_Types.SocketCAN_connect_bcm.");
+}
+}
+
+void SocketCAN__connect__bcm_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_if__index.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 SocketCAN__connect__bcm_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 @SocketCAN_Types.SocketCAN_connect_bcm.");
+}
+}
+
+void SocketCAN__connect__bcm_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: {
+    SocketCAN__connect__bcm_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (1<param.get_size()) {
+      param.error("record template of type @SocketCAN_Types.SocketCAN_connect_bcm has 1 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) if__index().set_param(*param.get_elem(0));
+    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(), "if_index")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          if__index().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 @SocketCAN_Types.SocketCAN_connect_bcm: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@SocketCAN_Types.SocketCAN_connect_bcm");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SocketCAN__connect__bcm_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_if__index.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_connect_bcm");
+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 : "@SocketCAN_Types.SocketCAN_connect_bcm");
+}
+
+boolean SocketCAN__connect__bcm_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SocketCAN__connect__bcm_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+SocketCAN__connect::SocketCAN__connect()
+{
+}
+
+SocketCAN__connect::SocketCAN__connect(const INTEGER& par_id,
+    const SocketCAN__connectu& par_connectu)
+  :   field_id(par_id),
+  field_connectu(par_connectu)
+{
+}
+
+SocketCAN__connect::SocketCAN__connect(const SocketCAN__connect& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @SocketCAN_Types.SocketCAN_connect.");
+if (other_value.id().is_bound()) field_id = other_value.id();
+else field_id.clean_up();
+if (other_value.connectu().is_bound()) field_connectu = other_value.connectu();
+else field_connectu.clean_up();
+}
+
+void SocketCAN__connect::clean_up()
+{
+field_id.clean_up();
+field_connectu.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SocketCAN__connect::get_descriptor() const { return &SocketCAN__connect_descr_; }
+SocketCAN__connect& SocketCAN__connect::operator=(const SocketCAN__connect& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @SocketCAN_Types.SocketCAN_connect.");
+  if (other_value.id().is_bound()) field_id = other_value.id();
+  else field_id.clean_up();
+  if (other_value.connectu().is_bound()) field_connectu = other_value.connectu();
+  else field_connectu.clean_up();
+}
+return *this;
+}
+
+boolean SocketCAN__connect::operator==(const SocketCAN__connect& other_value) const
+{
+return field_id==other_value.field_id
+  && field_connectu==other_value.field_connectu;
+}
+
+boolean SocketCAN__connect::is_bound() const
+{
+return (field_id.is_bound())
+  || (field_connectu.is_bound());
+}
+boolean SocketCAN__connect::is_value() const
+{
+return field_id.is_value()
+  && field_connectu.is_value();
+}
+void SocketCAN__connect::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ id := ");
+field_id.log();
+TTCN_Logger::log_event_str(", connectu := ");
+field_connectu.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SocketCAN__connect::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 @SocketCAN_Types.SocketCAN_connect 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) id().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) connectu().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(), "id")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          id().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(), "connectu")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          connectu().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 @SocketCAN_Types.SocketCAN_connect: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@SocketCAN_Types.SocketCAN_connect");
+  }
+}
+
+void SocketCAN__connect::set_implicit_omit()
+{
+if (id().is_bound()) id().set_implicit_omit();
+if (connectu().is_bound()) connectu().set_implicit_omit();
+}
+
+void SocketCAN__connect::encode_text(Text_Buf& text_buf) const
+{
+field_id.encode_text(text_buf);
+field_connectu.encode_text(text_buf);
+}
+
+void SocketCAN__connect::decode_text(Text_Buf& text_buf)
+{
+field_id.decode_text(text_buf);
+field_connectu.decode_text(text_buf);
+}
+
+struct SocketCAN__connect_template::single_value_struct {
+INTEGER_template field_id;
+SocketCAN__connectu_template field_connectu;
+};
+
+void SocketCAN__connect_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_id = ANY_VALUE;
+single_value->field_connectu = ANY_VALUE;
+}
+}
+}
+
+void SocketCAN__connect_template::copy_value(const SocketCAN__connect& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.id().is_bound()) {
+  single_value->field_id = other_value.id();
+} else {
+  single_value->field_id.clean_up();
+}
+if (other_value.connectu().is_bound()) {
+  single_value->field_connectu = other_value.connectu();
+} else {
+  single_value->field_connectu.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SocketCAN__connect_template::copy_template(const SocketCAN__connect_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.id().get_selection()) {
+single_value->field_id = other_value.id();
+} else {
+single_value->field_id.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.connectu().get_selection()) {
+single_value->field_connectu = other_value.connectu();
+} else {
+single_value->field_connectu.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SocketCAN__connect_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_connect.");
+break;
+}
+set_selection(other_value);
+}
+
+SocketCAN__connect_template::SocketCAN__connect_template()
+{
+}
+
+SocketCAN__connect_template::SocketCAN__connect_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SocketCAN__connect_template::SocketCAN__connect_template(const SocketCAN__connect& other_value)
+{
+copy_value(other_value);
+}
+
+SocketCAN__connect_template::SocketCAN__connect_template(const OPTIONAL<SocketCAN__connect>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__connect&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @SocketCAN_Types.SocketCAN_connect from an unbound optional field.");
+}
+}
+
+SocketCAN__connect_template::SocketCAN__connect_template(const SocketCAN__connect_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SocketCAN__connect_template::~SocketCAN__connect_template()
+{
+clean_up();
+}
+
+SocketCAN__connect_template& SocketCAN__connect_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SocketCAN__connect_template& SocketCAN__connect_template::operator=(const SocketCAN__connect& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SocketCAN__connect_template& SocketCAN__connect_template::operator=(const OPTIONAL<SocketCAN__connect>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__connect&)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 @SocketCAN_Types.SocketCAN_connect.");
+}
+return *this;
+}
+
+SocketCAN__connect_template& SocketCAN__connect_template::operator=(const SocketCAN__connect_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__connect_template::match(const SocketCAN__connect& 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.id().is_bound()) return FALSE;
+if(!single_value->field_id.match(other_value.id(), legacy))return FALSE;
+if(!other_value.connectu().is_bound()) return FALSE;
+if(!single_value->field_connectu.match(other_value.connectu(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_connect.");
+}
+return FALSE;
+}
+
+boolean SocketCAN__connect_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_id.is_bound()
+
+ ||single_value->field_connectu.is_bound()
+;
+}
+
+boolean SocketCAN__connect_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_id.is_value()
+ &&single_value->field_connectu.is_value();
+}
+
+void SocketCAN__connect_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SocketCAN__connect SocketCAN__connect_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 @SocketCAN_Types.SocketCAN_connect.");
+SocketCAN__connect ret_val;
+if (single_value->field_id.is_bound()) {
+ret_val.id() = single_value->field_id.valueof();
+}
+if (single_value->field_connectu.is_bound()) {
+ret_val.connectu() = single_value->field_connectu.valueof();
+}
+return ret_val;
+}
+
+void SocketCAN__connect_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @SocketCAN_Types.SocketCAN_connect.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SocketCAN__connect_template[list_length];
+}
+
+SocketCAN__connect_template& SocketCAN__connect_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @SocketCAN_Types.SocketCAN_connect.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @SocketCAN_Types.SocketCAN_connect.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& SocketCAN__connect_template::id()
+{
+set_specific();
+return single_value->field_id;
+}
+
+const INTEGER_template& SocketCAN__connect_template::id() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field id of a non-specific template of type @SocketCAN_Types.SocketCAN_connect.");
+return single_value->field_id;
+}
+
+SocketCAN__connectu_template& SocketCAN__connect_template::connectu()
+{
+set_specific();
+return single_value->field_connectu;
+}
+
+const SocketCAN__connectu_template& SocketCAN__connect_template::connectu() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field connectu of a non-specific template of type @SocketCAN_Types.SocketCAN_connect.");
+return single_value->field_connectu;
+}
+
+int SocketCAN__connect_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_connect 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 @SocketCAN_Types.SocketCAN_connect 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 @SocketCAN_Types.SocketCAN_connect containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_connect containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_connect containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_connect containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_connect.");
+  }
+  return 0;
+}
+
+void SocketCAN__connect_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ id := ");
+single_value->field_id.log();
+TTCN_Logger::log_event_str(", connectu := ");
+single_value->field_connectu.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SocketCAN__connect_template::log_match(const SocketCAN__connect& 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_id.match(match_value.id(), legacy)){
+TTCN_Logger::log_logmatch_info(".id");
+single_value->field_id.log_match(match_value.id(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_connectu.match(match_value.connectu(), legacy)){
+TTCN_Logger::log_logmatch_info(".connectu");
+single_value->field_connectu.log_match(match_value.connectu(), 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("{ id := ");
+single_value->field_id.log_match(match_value.id(), legacy);
+TTCN_Logger::log_event_str(", connectu := ");
+single_value->field_connectu.log_match(match_value.connectu(), 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 SocketCAN__connect_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_id.encode_text(text_buf);
+single_value->field_connectu.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 @SocketCAN_Types.SocketCAN_connect.");
+}
+}
+
+void SocketCAN__connect_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_id.decode_text(text_buf);
+single_value->field_connectu.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 SocketCAN__connect_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 @SocketCAN_Types.SocketCAN_connect.");
+}
+}
+
+void SocketCAN__connect_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: {
+    SocketCAN__connect_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @SocketCAN_Types.SocketCAN_connect 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) id().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) connectu().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(), "id")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          id().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(), "connectu")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          connectu().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 @SocketCAN_Types.SocketCAN_connect: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@SocketCAN_Types.SocketCAN_connect");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SocketCAN__connect_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_id.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_connect");
+single_value->field_connectu.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_connect");
+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 : "@SocketCAN_Types.SocketCAN_connect");
+}
+
+boolean SocketCAN__connect_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SocketCAN__connect_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+SocketCAN__connect__result::SocketCAN__connect__result()
+{
+}
+
+SocketCAN__connect__result::SocketCAN__connect__result(const SocketCAN__Result& par_result)
+  :   field_result(par_result)
+{
+}
+
+SocketCAN__connect__result::SocketCAN__connect__result(const SocketCAN__connect__result& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @SocketCAN_Types.SocketCAN_connect_result.");
+if (other_value.result().is_bound()) field_result = other_value.result();
+else field_result.clean_up();
+}
+
+void SocketCAN__connect__result::clean_up()
+{
+field_result.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SocketCAN__connect__result::get_descriptor() const { return &SocketCAN__connect__result_descr_; }
+SocketCAN__connect__result& SocketCAN__connect__result::operator=(const SocketCAN__connect__result& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @SocketCAN_Types.SocketCAN_connect_result.");
+  if (other_value.result().is_bound()) field_result = other_value.result();
+  else field_result.clean_up();
+}
+return *this;
+}
+
+boolean SocketCAN__connect__result::operator==(const SocketCAN__connect__result& other_value) const
+{
+return field_result==other_value.field_result;
+}
+
+boolean SocketCAN__connect__result::is_bound() const
+{
+return (field_result.is_bound());
+}
+boolean SocketCAN__connect__result::is_value() const
+{
+return field_result.is_value();
+}
+void SocketCAN__connect__result::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ result := ");
+field_result.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SocketCAN__connect__result::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 (1<param.get_size()) {
+      param.error("record value of type @SocketCAN_Types.SocketCAN_connect_result has 1 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) result().set_param(*param.get_elem(0));
+    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(), "result")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          result().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 @SocketCAN_Types.SocketCAN_connect_result: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@SocketCAN_Types.SocketCAN_connect_result");
+  }
+}
+
+void SocketCAN__connect__result::set_implicit_omit()
+{
+if (result().is_bound()) result().set_implicit_omit();
+}
+
+void SocketCAN__connect__result::encode_text(Text_Buf& text_buf) const
+{
+field_result.encode_text(text_buf);
+}
+
+void SocketCAN__connect__result::decode_text(Text_Buf& text_buf)
+{
+field_result.decode_text(text_buf);
+}
+
+struct SocketCAN__connect__result_template::single_value_struct {
+SocketCAN__Result_template field_result;
+};
+
+void SocketCAN__connect__result_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_result = ANY_VALUE;
+}
+}
+}
+
+void SocketCAN__connect__result_template::copy_value(const SocketCAN__connect__result& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.result().is_bound()) {
+  single_value->field_result = other_value.result();
+} else {
+  single_value->field_result.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SocketCAN__connect__result_template::copy_template(const SocketCAN__connect__result_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.result().get_selection()) {
+single_value->field_result = other_value.result();
+} else {
+single_value->field_result.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SocketCAN__connect__result_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_connect_result.");
+break;
+}
+set_selection(other_value);
+}
+
+SocketCAN__connect__result_template::SocketCAN__connect__result_template()
+{
+}
+
+SocketCAN__connect__result_template::SocketCAN__connect__result_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SocketCAN__connect__result_template::SocketCAN__connect__result_template(const SocketCAN__connect__result& other_value)
+{
+copy_value(other_value);
+}
+
+SocketCAN__connect__result_template::SocketCAN__connect__result_template(const OPTIONAL<SocketCAN__connect__result>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__connect__result&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @SocketCAN_Types.SocketCAN_connect_result from an unbound optional field.");
+}
+}
+
+SocketCAN__connect__result_template::SocketCAN__connect__result_template(const SocketCAN__connect__result_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SocketCAN__connect__result_template::~SocketCAN__connect__result_template()
+{
+clean_up();
+}
+
+SocketCAN__connect__result_template& SocketCAN__connect__result_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SocketCAN__connect__result_template& SocketCAN__connect__result_template::operator=(const SocketCAN__connect__result& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SocketCAN__connect__result_template& SocketCAN__connect__result_template::operator=(const OPTIONAL<SocketCAN__connect__result>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__connect__result&)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 @SocketCAN_Types.SocketCAN_connect_result.");
+}
+return *this;
+}
+
+SocketCAN__connect__result_template& SocketCAN__connect__result_template::operator=(const SocketCAN__connect__result_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__connect__result_template::match(const SocketCAN__connect__result& 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.result().is_bound()) return FALSE;
+if(!single_value->field_result.match(other_value.result(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_connect_result.");
+}
+return FALSE;
+}
+
+boolean SocketCAN__connect__result_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_result.is_bound()
+;
+}
+
+boolean SocketCAN__connect__result_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_result.is_value();
+}
+
+void SocketCAN__connect__result_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SocketCAN__connect__result SocketCAN__connect__result_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 @SocketCAN_Types.SocketCAN_connect_result.");
+SocketCAN__connect__result ret_val;
+if (single_value->field_result.is_bound()) {
+ret_val.result() = single_value->field_result.valueof();
+}
+return ret_val;
+}
+
+void SocketCAN__connect__result_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @SocketCAN_Types.SocketCAN_connect_result.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SocketCAN__connect__result_template[list_length];
+}
+
+SocketCAN__connect__result_template& SocketCAN__connect__result_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @SocketCAN_Types.SocketCAN_connect_result.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @SocketCAN_Types.SocketCAN_connect_result.");
+return value_list.list_value[list_index];
+}
+
+SocketCAN__Result_template& SocketCAN__connect__result_template::result()
+{
+set_specific();
+return single_value->field_result;
+}
+
+const SocketCAN__Result_template& SocketCAN__connect__result_template::result() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field result of a non-specific template of type @SocketCAN_Types.SocketCAN_connect_result.");
+return single_value->field_result;
+}
+
+int SocketCAN__connect__result_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_connect_result which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 1;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_connect_result 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 @SocketCAN_Types.SocketCAN_connect_result containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_connect_result containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_connect_result containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_connect_result containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_connect_result.");
+  }
+  return 0;
+}
+
+void SocketCAN__connect__result_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ result := ");
+single_value->field_result.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SocketCAN__connect__result_template::log_match(const SocketCAN__connect__result& 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_result.match(match_value.result(), legacy)){
+TTCN_Logger::log_logmatch_info(".result");
+single_value->field_result.log_match(match_value.result(), 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("{ result := ");
+single_value->field_result.log_match(match_value.result(), 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 SocketCAN__connect__result_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_result.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 @SocketCAN_Types.SocketCAN_connect_result.");
+}
+}
+
+void SocketCAN__connect__result_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_result.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 SocketCAN__connect__result_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 @SocketCAN_Types.SocketCAN_connect_result.");
+}
+}
+
+void SocketCAN__connect__result_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: {
+    SocketCAN__connect__result_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (1<param.get_size()) {
+      param.error("record template of type @SocketCAN_Types.SocketCAN_connect_result has 1 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) result().set_param(*param.get_elem(0));
+    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(), "result")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          result().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 @SocketCAN_Types.SocketCAN_connect_result: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@SocketCAN_Types.SocketCAN_connect_result");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SocketCAN__connect__result_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_result.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_connect_result");
+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 : "@SocketCAN_Types.SocketCAN_connect_result");
+}
+
+boolean SocketCAN__connect__result_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SocketCAN__connect__result_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+SocketCAN__bind__raw::SocketCAN__bind__raw()
+{
+}
+
+SocketCAN__bind__raw::SocketCAN__bind__raw(const INTEGER& par_if__index)
+  :   field_if__index(par_if__index)
+{
+}
+
+SocketCAN__bind__raw::SocketCAN__bind__raw(const SocketCAN__bind__raw& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @SocketCAN_Types.SocketCAN_bind_raw.");
+if (other_value.if__index().is_bound()) field_if__index = other_value.if__index();
+else field_if__index.clean_up();
+}
+
+void SocketCAN__bind__raw::clean_up()
+{
+field_if__index.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SocketCAN__bind__raw::get_descriptor() const { return &SocketCAN__bind__raw_descr_; }
+SocketCAN__bind__raw& SocketCAN__bind__raw::operator=(const SocketCAN__bind__raw& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @SocketCAN_Types.SocketCAN_bind_raw.");
+  if (other_value.if__index().is_bound()) field_if__index = other_value.if__index();
+  else field_if__index.clean_up();
+}
+return *this;
+}
+
+boolean SocketCAN__bind__raw::operator==(const SocketCAN__bind__raw& other_value) const
+{
+return field_if__index==other_value.field_if__index;
+}
+
+boolean SocketCAN__bind__raw::is_bound() const
+{
+return (field_if__index.is_bound());
+}
+boolean SocketCAN__bind__raw::is_value() const
+{
+return field_if__index.is_value();
+}
+void SocketCAN__bind__raw::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ if_index := ");
+field_if__index.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SocketCAN__bind__raw::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 (1<param.get_size()) {
+      param.error("record value of type @SocketCAN_Types.SocketCAN_bind_raw has 1 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) if__index().set_param(*param.get_elem(0));
+    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(), "if_index")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          if__index().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 @SocketCAN_Types.SocketCAN_bind_raw: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@SocketCAN_Types.SocketCAN_bind_raw");
+  }
+}
+
+void SocketCAN__bind__raw::set_implicit_omit()
+{
+if (if__index().is_bound()) if__index().set_implicit_omit();
+}
+
+void SocketCAN__bind__raw::encode_text(Text_Buf& text_buf) const
+{
+field_if__index.encode_text(text_buf);
+}
+
+void SocketCAN__bind__raw::decode_text(Text_Buf& text_buf)
+{
+field_if__index.decode_text(text_buf);
+}
+
+struct SocketCAN__bind__raw_template::single_value_struct {
+INTEGER_template field_if__index;
+};
+
+void SocketCAN__bind__raw_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_if__index = ANY_VALUE;
+}
+}
+}
+
+void SocketCAN__bind__raw_template::copy_value(const SocketCAN__bind__raw& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.if__index().is_bound()) {
+  single_value->field_if__index = other_value.if__index();
+} else {
+  single_value->field_if__index.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SocketCAN__bind__raw_template::copy_template(const SocketCAN__bind__raw_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.if__index().get_selection()) {
+single_value->field_if__index = other_value.if__index();
+} else {
+single_value->field_if__index.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SocketCAN__bind__raw_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_bind_raw.");
+break;
+}
+set_selection(other_value);
+}
+
+SocketCAN__bind__raw_template::SocketCAN__bind__raw_template()
+{
+}
+
+SocketCAN__bind__raw_template::SocketCAN__bind__raw_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SocketCAN__bind__raw_template::SocketCAN__bind__raw_template(const SocketCAN__bind__raw& other_value)
+{
+copy_value(other_value);
+}
+
+SocketCAN__bind__raw_template::SocketCAN__bind__raw_template(const OPTIONAL<SocketCAN__bind__raw>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__bind__raw&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @SocketCAN_Types.SocketCAN_bind_raw from an unbound optional field.");
+}
+}
+
+SocketCAN__bind__raw_template::SocketCAN__bind__raw_template(const SocketCAN__bind__raw_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SocketCAN__bind__raw_template::~SocketCAN__bind__raw_template()
+{
+clean_up();
+}
+
+SocketCAN__bind__raw_template& SocketCAN__bind__raw_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SocketCAN__bind__raw_template& SocketCAN__bind__raw_template::operator=(const SocketCAN__bind__raw& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SocketCAN__bind__raw_template& SocketCAN__bind__raw_template::operator=(const OPTIONAL<SocketCAN__bind__raw>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__bind__raw&)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 @SocketCAN_Types.SocketCAN_bind_raw.");
+}
+return *this;
+}
+
+SocketCAN__bind__raw_template& SocketCAN__bind__raw_template::operator=(const SocketCAN__bind__raw_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__bind__raw_template::match(const SocketCAN__bind__raw& 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.if__index().is_bound()) return FALSE;
+if(!single_value->field_if__index.match(other_value.if__index(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_bind_raw.");
+}
+return FALSE;
+}
+
+boolean SocketCAN__bind__raw_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_if__index.is_bound()
+;
+}
+
+boolean SocketCAN__bind__raw_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_if__index.is_value();
+}
+
+void SocketCAN__bind__raw_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SocketCAN__bind__raw SocketCAN__bind__raw_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 @SocketCAN_Types.SocketCAN_bind_raw.");
+SocketCAN__bind__raw ret_val;
+if (single_value->field_if__index.is_bound()) {
+ret_val.if__index() = single_value->field_if__index.valueof();
+}
+return ret_val;
+}
+
+void SocketCAN__bind__raw_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @SocketCAN_Types.SocketCAN_bind_raw.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SocketCAN__bind__raw_template[list_length];
+}
+
+SocketCAN__bind__raw_template& SocketCAN__bind__raw_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @SocketCAN_Types.SocketCAN_bind_raw.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @SocketCAN_Types.SocketCAN_bind_raw.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& SocketCAN__bind__raw_template::if__index()
+{
+set_specific();
+return single_value->field_if__index;
+}
+
+const INTEGER_template& SocketCAN__bind__raw_template::if__index() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field if_index of a non-specific template of type @SocketCAN_Types.SocketCAN_bind_raw.");
+return single_value->field_if__index;
+}
+
+int SocketCAN__bind__raw_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_bind_raw which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 1;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_bind_raw 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 @SocketCAN_Types.SocketCAN_bind_raw containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_bind_raw containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_bind_raw containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_bind_raw containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_bind_raw.");
+  }
+  return 0;
+}
+
+void SocketCAN__bind__raw_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ if_index := ");
+single_value->field_if__index.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SocketCAN__bind__raw_template::log_match(const SocketCAN__bind__raw& 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_if__index.match(match_value.if__index(), legacy)){
+TTCN_Logger::log_logmatch_info(".if_index");
+single_value->field_if__index.log_match(match_value.if__index(), 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("{ if_index := ");
+single_value->field_if__index.log_match(match_value.if__index(), 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 SocketCAN__bind__raw_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_if__index.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 @SocketCAN_Types.SocketCAN_bind_raw.");
+}
+}
+
+void SocketCAN__bind__raw_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_if__index.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 SocketCAN__bind__raw_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 @SocketCAN_Types.SocketCAN_bind_raw.");
+}
+}
+
+void SocketCAN__bind__raw_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: {
+    SocketCAN__bind__raw_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (1<param.get_size()) {
+      param.error("record template of type @SocketCAN_Types.SocketCAN_bind_raw has 1 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) if__index().set_param(*param.get_elem(0));
+    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(), "if_index")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          if__index().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 @SocketCAN_Types.SocketCAN_bind_raw: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@SocketCAN_Types.SocketCAN_bind_raw");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SocketCAN__bind__raw_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_if__index.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_bind_raw");
+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 : "@SocketCAN_Types.SocketCAN_bind_raw");
+}
+
+boolean SocketCAN__bind__raw_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SocketCAN__bind__raw_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+SocketCAN__bind__isotp::SocketCAN__bind__isotp()
+{
+}
+
+SocketCAN__bind__isotp::SocketCAN__bind__isotp(const INTEGER& par_if__index,
+    const OCTETSTRING& par_rx__can__id,
+    const OCTETSTRING& par_tx__can__id)
+  :   field_if__index(par_if__index),
+  field_rx__can__id(par_rx__can__id),
+  field_tx__can__id(par_tx__can__id)
+{
+}
+
+SocketCAN__bind__isotp::SocketCAN__bind__isotp(const SocketCAN__bind__isotp& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @SocketCAN_Types.SocketCAN_bind_isotp.");
+if (other_value.if__index().is_bound()) field_if__index = other_value.if__index();
+else field_if__index.clean_up();
+if (other_value.rx__can__id().is_bound()) field_rx__can__id = other_value.rx__can__id();
+else field_rx__can__id.clean_up();
+if (other_value.tx__can__id().is_bound()) field_tx__can__id = other_value.tx__can__id();
+else field_tx__can__id.clean_up();
+}
+
+void SocketCAN__bind__isotp::clean_up()
+{
+field_if__index.clean_up();
+field_rx__can__id.clean_up();
+field_tx__can__id.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SocketCAN__bind__isotp::get_descriptor() const { return &SocketCAN__bind__isotp_descr_; }
+SocketCAN__bind__isotp& SocketCAN__bind__isotp::operator=(const SocketCAN__bind__isotp& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @SocketCAN_Types.SocketCAN_bind_isotp.");
+  if (other_value.if__index().is_bound()) field_if__index = other_value.if__index();
+  else field_if__index.clean_up();
+  if (other_value.rx__can__id().is_bound()) field_rx__can__id = other_value.rx__can__id();
+  else field_rx__can__id.clean_up();
+  if (other_value.tx__can__id().is_bound()) field_tx__can__id = other_value.tx__can__id();
+  else field_tx__can__id.clean_up();
+}
+return *this;
+}
+
+boolean SocketCAN__bind__isotp::operator==(const SocketCAN__bind__isotp& other_value) const
+{
+return field_if__index==other_value.field_if__index
+  && field_rx__can__id==other_value.field_rx__can__id
+  && field_tx__can__id==other_value.field_tx__can__id;
+}
+
+boolean SocketCAN__bind__isotp::is_bound() const
+{
+return (field_if__index.is_bound())
+  || (field_rx__can__id.is_bound())
+  || (field_tx__can__id.is_bound());
+}
+boolean SocketCAN__bind__isotp::is_value() const
+{
+return field_if__index.is_value()
+  && field_rx__can__id.is_value()
+  && field_tx__can__id.is_value();
+}
+void SocketCAN__bind__isotp::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ if_index := ");
+field_if__index.log();
+TTCN_Logger::log_event_str(", rx_can_id := ");
+field_rx__can__id.log();
+TTCN_Logger::log_event_str(", tx_can_id := ");
+field_tx__can__id.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SocketCAN__bind__isotp::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 @SocketCAN_Types.SocketCAN_bind_isotp 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) if__index().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) rx__can__id().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) tx__can__id().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(), "if_index")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          if__index().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(), "rx_can_id")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          rx__can__id().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(), "tx_can_id")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          tx__can__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 @SocketCAN_Types.SocketCAN_bind_isotp: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@SocketCAN_Types.SocketCAN_bind_isotp");
+  }
+}
+
+void SocketCAN__bind__isotp::set_implicit_omit()
+{
+if (if__index().is_bound()) if__index().set_implicit_omit();
+if (rx__can__id().is_bound()) rx__can__id().set_implicit_omit();
+if (tx__can__id().is_bound()) tx__can__id().set_implicit_omit();
+}
+
+void SocketCAN__bind__isotp::encode_text(Text_Buf& text_buf) const
+{
+field_if__index.encode_text(text_buf);
+field_rx__can__id.encode_text(text_buf);
+field_tx__can__id.encode_text(text_buf);
+}
+
+void SocketCAN__bind__isotp::decode_text(Text_Buf& text_buf)
+{
+field_if__index.decode_text(text_buf);
+field_rx__can__id.decode_text(text_buf);
+field_tx__can__id.decode_text(text_buf);
+}
+
+struct SocketCAN__bind__isotp_template::single_value_struct {
+INTEGER_template field_if__index;
+OCTETSTRING_template field_rx__can__id;
+OCTETSTRING_template field_tx__can__id;
+};
+
+void SocketCAN__bind__isotp_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_if__index = ANY_VALUE;
+single_value->field_rx__can__id = ANY_VALUE;
+single_value->field_tx__can__id = ANY_VALUE;
+}
+}
+}
+
+void SocketCAN__bind__isotp_template::copy_value(const SocketCAN__bind__isotp& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.if__index().is_bound()) {
+  single_value->field_if__index = other_value.if__index();
+} else {
+  single_value->field_if__index.clean_up();
+}
+if (other_value.rx__can__id().is_bound()) {
+  single_value->field_rx__can__id = other_value.rx__can__id();
+} else {
+  single_value->field_rx__can__id.clean_up();
+}
+if (other_value.tx__can__id().is_bound()) {
+  single_value->field_tx__can__id = other_value.tx__can__id();
+} else {
+  single_value->field_tx__can__id.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SocketCAN__bind__isotp_template::copy_template(const SocketCAN__bind__isotp_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.if__index().get_selection()) {
+single_value->field_if__index = other_value.if__index();
+} else {
+single_value->field_if__index.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.rx__can__id().get_selection()) {
+single_value->field_rx__can__id = other_value.rx__can__id();
+} else {
+single_value->field_rx__can__id.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.tx__can__id().get_selection()) {
+single_value->field_tx__can__id = other_value.tx__can__id();
+} else {
+single_value->field_tx__can__id.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SocketCAN__bind__isotp_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_bind_isotp.");
+break;
+}
+set_selection(other_value);
+}
+
+SocketCAN__bind__isotp_template::SocketCAN__bind__isotp_template()
+{
+}
+
+SocketCAN__bind__isotp_template::SocketCAN__bind__isotp_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SocketCAN__bind__isotp_template::SocketCAN__bind__isotp_template(const SocketCAN__bind__isotp& other_value)
+{
+copy_value(other_value);
+}
+
+SocketCAN__bind__isotp_template::SocketCAN__bind__isotp_template(const OPTIONAL<SocketCAN__bind__isotp>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__bind__isotp&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @SocketCAN_Types.SocketCAN_bind_isotp from an unbound optional field.");
+}
+}
+
+SocketCAN__bind__isotp_template::SocketCAN__bind__isotp_template(const SocketCAN__bind__isotp_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SocketCAN__bind__isotp_template::~SocketCAN__bind__isotp_template()
+{
+clean_up();
+}
+
+SocketCAN__bind__isotp_template& SocketCAN__bind__isotp_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SocketCAN__bind__isotp_template& SocketCAN__bind__isotp_template::operator=(const SocketCAN__bind__isotp& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SocketCAN__bind__isotp_template& SocketCAN__bind__isotp_template::operator=(const OPTIONAL<SocketCAN__bind__isotp>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__bind__isotp&)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 @SocketCAN_Types.SocketCAN_bind_isotp.");
+}
+return *this;
+}
+
+SocketCAN__bind__isotp_template& SocketCAN__bind__isotp_template::operator=(const SocketCAN__bind__isotp_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__bind__isotp_template::match(const SocketCAN__bind__isotp& 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.if__index().is_bound()) return FALSE;
+if(!single_value->field_if__index.match(other_value.if__index(), legacy))return FALSE;
+if(!other_value.rx__can__id().is_bound()) return FALSE;
+if(!single_value->field_rx__can__id.match(other_value.rx__can__id(), legacy))return FALSE;
+if(!other_value.tx__can__id().is_bound()) return FALSE;
+if(!single_value->field_tx__can__id.match(other_value.tx__can__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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_bind_isotp.");
+}
+return FALSE;
+}
+
+boolean SocketCAN__bind__isotp_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_if__index.is_bound()
+
+ ||single_value->field_rx__can__id.is_bound()
+
+ ||single_value->field_tx__can__id.is_bound()
+;
+}
+
+boolean SocketCAN__bind__isotp_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_if__index.is_value()
+ &&single_value->field_rx__can__id.is_value()
+ &&single_value->field_tx__can__id.is_value();
+}
+
+void SocketCAN__bind__isotp_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SocketCAN__bind__isotp SocketCAN__bind__isotp_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 @SocketCAN_Types.SocketCAN_bind_isotp.");
+SocketCAN__bind__isotp ret_val;
+if (single_value->field_if__index.is_bound()) {
+ret_val.if__index() = single_value->field_if__index.valueof();
+}
+if (single_value->field_rx__can__id.is_bound()) {
+ret_val.rx__can__id() = single_value->field_rx__can__id.valueof();
+}
+if (single_value->field_tx__can__id.is_bound()) {
+ret_val.tx__can__id() = single_value->field_tx__can__id.valueof();
+}
+return ret_val;
+}
+
+void SocketCAN__bind__isotp_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @SocketCAN_Types.SocketCAN_bind_isotp.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SocketCAN__bind__isotp_template[list_length];
+}
+
+SocketCAN__bind__isotp_template& SocketCAN__bind__isotp_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @SocketCAN_Types.SocketCAN_bind_isotp.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @SocketCAN_Types.SocketCAN_bind_isotp.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& SocketCAN__bind__isotp_template::if__index()
+{
+set_specific();
+return single_value->field_if__index;
+}
+
+const INTEGER_template& SocketCAN__bind__isotp_template::if__index() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field if_index of a non-specific template of type @SocketCAN_Types.SocketCAN_bind_isotp.");
+return single_value->field_if__index;
+}
+
+OCTETSTRING_template& SocketCAN__bind__isotp_template::rx__can__id()
+{
+set_specific();
+return single_value->field_rx__can__id;
+}
+
+const OCTETSTRING_template& SocketCAN__bind__isotp_template::rx__can__id() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field rx_can_id of a non-specific template of type @SocketCAN_Types.SocketCAN_bind_isotp.");
+return single_value->field_rx__can__id;
+}
+
+OCTETSTRING_template& SocketCAN__bind__isotp_template::tx__can__id()
+{
+set_specific();
+return single_value->field_tx__can__id;
+}
+
+const OCTETSTRING_template& SocketCAN__bind__isotp_template::tx__can__id() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field tx_can_id of a non-specific template of type @SocketCAN_Types.SocketCAN_bind_isotp.");
+return single_value->field_tx__can__id;
+}
+
+int SocketCAN__bind__isotp_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_bind_isotp 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 @SocketCAN_Types.SocketCAN_bind_isotp 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 @SocketCAN_Types.SocketCAN_bind_isotp containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_bind_isotp containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_bind_isotp containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_bind_isotp containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_bind_isotp.");
+  }
+  return 0;
+}
+
+void SocketCAN__bind__isotp_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ if_index := ");
+single_value->field_if__index.log();
+TTCN_Logger::log_event_str(", rx_can_id := ");
+single_value->field_rx__can__id.log();
+TTCN_Logger::log_event_str(", tx_can_id := ");
+single_value->field_tx__can__id.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SocketCAN__bind__isotp_template::log_match(const SocketCAN__bind__isotp& 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_if__index.match(match_value.if__index(), legacy)){
+TTCN_Logger::log_logmatch_info(".if_index");
+single_value->field_if__index.log_match(match_value.if__index(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_rx__can__id.match(match_value.rx__can__id(), legacy)){
+TTCN_Logger::log_logmatch_info(".rx_can_id");
+single_value->field_rx__can__id.log_match(match_value.rx__can__id(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_tx__can__id.match(match_value.tx__can__id(), legacy)){
+TTCN_Logger::log_logmatch_info(".tx_can_id");
+single_value->field_tx__can__id.log_match(match_value.tx__can__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("{ if_index := ");
+single_value->field_if__index.log_match(match_value.if__index(), legacy);
+TTCN_Logger::log_event_str(", rx_can_id := ");
+single_value->field_rx__can__id.log_match(match_value.rx__can__id(), legacy);
+TTCN_Logger::log_event_str(", tx_can_id := ");
+single_value->field_tx__can__id.log_match(match_value.tx__can__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 SocketCAN__bind__isotp_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_if__index.encode_text(text_buf);
+single_value->field_rx__can__id.encode_text(text_buf);
+single_value->field_tx__can__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 @SocketCAN_Types.SocketCAN_bind_isotp.");
+}
+}
+
+void SocketCAN__bind__isotp_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_if__index.decode_text(text_buf);
+single_value->field_rx__can__id.decode_text(text_buf);
+single_value->field_tx__can__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 SocketCAN__bind__isotp_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 @SocketCAN_Types.SocketCAN_bind_isotp.");
+}
+}
+
+void SocketCAN__bind__isotp_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: {
+    SocketCAN__bind__isotp_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @SocketCAN_Types.SocketCAN_bind_isotp 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) if__index().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) rx__can__id().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) tx__can__id().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(), "if_index")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          if__index().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(), "rx_can_id")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          rx__can__id().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(), "tx_can_id")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          tx__can__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 @SocketCAN_Types.SocketCAN_bind_isotp: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@SocketCAN_Types.SocketCAN_bind_isotp");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SocketCAN__bind__isotp_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_if__index.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_bind_isotp");
+single_value->field_rx__can__id.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_bind_isotp");
+single_value->field_tx__can__id.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_bind_isotp");
+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 : "@SocketCAN_Types.SocketCAN_bind_isotp");
+}
+
+boolean SocketCAN__bind__isotp_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SocketCAN__bind__isotp_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 SocketCAN__bindu::copy_value(const SocketCAN__bindu& other_value)
+{
+switch (other_value.union_selection) {
+case ALT_raw:
+field_raw = new SocketCAN__bind__raw(*other_value.field_raw);
+break;
+case ALT_isotp:
+field_isotp = new SocketCAN__bind__isotp(*other_value.field_isotp);
+break;
+default:
+TTCN_error("Assignment of an unbound union value of type @SocketCAN_Types.SocketCAN_bindu.");
+}
+union_selection = other_value.union_selection;
+}
+
+SocketCAN__bindu::SocketCAN__bindu()
+{
+union_selection = UNBOUND_VALUE;
+}
+
+SocketCAN__bindu::SocketCAN__bindu(const SocketCAN__bindu& other_value)
+: Base_Type(){
+copy_value(other_value);
+}
+
+SocketCAN__bindu::~SocketCAN__bindu()
+{
+clean_up();
+}
+
+SocketCAN__bindu& SocketCAN__bindu::operator=(const SocketCAN__bindu& other_value)
+{
+if (this != &other_value) {
+clean_up();
+copy_value(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__bindu::operator==(const SocketCAN__bindu& other_value) const
+{
+if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @SocketCAN_Types.SocketCAN_bindu.");
+if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @SocketCAN_Types.SocketCAN_bindu.");
+if (union_selection != other_value.union_selection) return FALSE;
+switch (union_selection) {
+case ALT_raw:
+return *field_raw == *other_value.field_raw;
+case ALT_isotp:
+return *field_isotp == *other_value.field_isotp;
+default:
+return FALSE;
+}
+}
+
+SocketCAN__bind__raw& SocketCAN__bindu::raw()
+{
+if (union_selection != ALT_raw) {
+clean_up();
+field_raw = new SocketCAN__bind__raw;
+union_selection = ALT_raw;
+}
+return *field_raw;
+}
+
+const SocketCAN__bind__raw& SocketCAN__bindu::raw() const
+{
+if (union_selection != ALT_raw) TTCN_error("Using non-selected field raw in a value of union type @SocketCAN_Types.SocketCAN_bindu.");
+return *field_raw;
+}
+
+SocketCAN__bind__isotp& SocketCAN__bindu::isotp()
+{
+if (union_selection != ALT_isotp) {
+clean_up();
+field_isotp = new SocketCAN__bind__isotp;
+union_selection = ALT_isotp;
+}
+return *field_isotp;
+}
+
+const SocketCAN__bind__isotp& SocketCAN__bindu::isotp() const
+{
+if (union_selection != ALT_isotp) TTCN_error("Using non-selected field isotp in a value of union type @SocketCAN_Types.SocketCAN_bindu.");
+return *field_isotp;
+}
+
+boolean SocketCAN__bindu::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 @SocketCAN_Types.SocketCAN_bindu.");
+return union_selection == checked_selection;
+}
+
+boolean SocketCAN__bindu::is_bound() const
+{
+  return union_selection != UNBOUND_VALUE;
+}
+
+boolean SocketCAN__bindu::is_value() const
+{
+switch (union_selection) {
+case UNBOUND_VALUE: return FALSE;
+case ALT_raw: return field_raw->is_value();
+case ALT_isotp: return field_isotp->is_value();
+default: TTCN_error("Invalid selection in union is_bound");}
+}
+
+void SocketCAN__bindu::clean_up()
+{
+switch (union_selection) {
+case ALT_raw:
+  delete field_raw;
+  break;
+case ALT_isotp:
+  delete field_isotp;
+  break;
+default:
+  break;
+}
+union_selection = UNBOUND_VALUE;
+}
+
+void SocketCAN__bindu::log() const
+{
+switch (union_selection) {
+case ALT_raw:
+TTCN_Logger::log_event_str("{ raw := ");
+field_raw->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_isotp:
+TTCN_Logger::log_event_str("{ isotp := ");
+field_isotp->log();
+TTCN_Logger::log_event_str(" }");
+break;
+default:
+TTCN_Logger::log_event_unbound();
+}
+}
+
+void SocketCAN__bindu::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, "raw")) {
+    raw().set_param(*mp_last);
+    if (!raw().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "isotp")) {
+    isotp().set_param(*mp_last);
+    if (!isotp().is_bound()) clean_up();
+    return;
+  }
+  mp_last->error("Field %s does not exist in type @SocketCAN_Types.SocketCAN_bindu.", last_name);
+}
+
+void SocketCAN__bindu::set_implicit_omit()
+{
+switch (union_selection) {
+case ALT_raw:
+field_raw->set_implicit_omit(); break;
+case ALT_isotp:
+field_isotp->set_implicit_omit(); break;
+default: break;
+}
+}
+
+void SocketCAN__bindu::encode_text(Text_Buf& text_buf) const
+{
+text_buf.push_int(union_selection);
+switch (union_selection) {
+case ALT_raw:
+field_raw->encode_text(text_buf);
+break;
+case ALT_isotp:
+field_isotp->encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an unbound value of union type @SocketCAN_Types.SocketCAN_bindu.");
+}
+}
+
+void SocketCAN__bindu::decode_text(Text_Buf& text_buf)
+{
+switch ((union_selection_type)text_buf.pull_int().get_val()) {
+case ALT_raw:
+raw().decode_text(text_buf);
+break;
+case ALT_isotp:
+isotp().decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for type @SocketCAN_Types.SocketCAN_bindu.");
+}
+}
+
+void SocketCAN__bindu_template::copy_value(const SocketCAN__bindu& other_value)
+{
+single_value.union_selection = other_value.get_selection();
+switch (single_value.union_selection) {
+case SocketCAN__bindu::ALT_raw:
+single_value.field_raw = new SocketCAN__bind__raw_template(other_value.raw());
+break;
+case SocketCAN__bindu::ALT_isotp:
+single_value.field_isotp = new SocketCAN__bind__isotp_template(other_value.isotp());
+break;
+default:
+TTCN_error("Initializing a template with an unbound value of type @SocketCAN_Types.SocketCAN_bindu.");
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SocketCAN__bindu_template::copy_template(const SocketCAN__bindu_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 SocketCAN__bindu::ALT_raw:
+single_value.field_raw = new SocketCAN__bind__raw_template(*other_value.single_value.field_raw);
+break;
+case SocketCAN__bindu::ALT_isotp:
+single_value.field_isotp = new SocketCAN__bind__isotp_template(*other_value.single_value.field_isotp);
+break;
+default:
+TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @SocketCAN_Types.SocketCAN_bindu.");
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SocketCAN__bindu_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;
+default:
+TTCN_error("Copying an uninitialized template of union type @SocketCAN_Types.SocketCAN_bindu.");
+}
+set_selection(other_value);
+}
+
+SocketCAN__bindu_template::SocketCAN__bindu_template()
+{
+}
+
+SocketCAN__bindu_template::SocketCAN__bindu_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SocketCAN__bindu_template::SocketCAN__bindu_template(const SocketCAN__bindu& other_value)
+{
+copy_value(other_value);
+}
+
+SocketCAN__bindu_template::SocketCAN__bindu_template(const OPTIONAL<SocketCAN__bindu>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__bindu&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of union type @SocketCAN_Types.SocketCAN_bindu from an unbound optional field.");
+}
+}
+
+SocketCAN__bindu_template::SocketCAN__bindu_template(const SocketCAN__bindu_template& other_value)
+: Base_Template(){
+copy_template(other_value);
+}
+
+SocketCAN__bindu_template::~SocketCAN__bindu_template()
+{
+clean_up();
+}
+
+void SocketCAN__bindu_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case SocketCAN__bindu::ALT_raw:
+delete single_value.field_raw;
+break;
+case SocketCAN__bindu::ALT_isotp:
+delete single_value.field_isotp;
+default:
+break;
+}
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SocketCAN__bindu_template& SocketCAN__bindu_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SocketCAN__bindu_template& SocketCAN__bindu_template::operator=(const SocketCAN__bindu& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SocketCAN__bindu_template& SocketCAN__bindu_template::operator=(const OPTIONAL<SocketCAN__bindu>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__bindu&)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 @SocketCAN_Types.SocketCAN_bindu.");
+}
+return *this;
+}
+
+SocketCAN__bindu_template& SocketCAN__bindu_template::operator=(const SocketCAN__bindu_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__bindu_template::match(const SocketCAN__bindu& 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:
+{
+SocketCAN__bindu::union_selection_type value_selection = other_value.get_selection();
+if (value_selection == SocketCAN__bindu::UNBOUND_VALUE) return FALSE;
+if (value_selection != single_value.union_selection) return FALSE;
+switch (value_selection) {
+case SocketCAN__bindu::ALT_raw:
+return single_value.field_raw->match(other_value.raw(), legacy);
+case SocketCAN__bindu::ALT_isotp:
+return single_value.field_isotp->match(other_value.isotp(), legacy);
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @SocketCAN_Types.SocketCAN_bindu.");
+}
+}
+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;
+default:
+TTCN_error ("Matching an uninitialized template of union type @SocketCAN_Types.SocketCAN_bindu.");
+}
+return FALSE;
+}
+
+boolean SocketCAN__bindu_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+switch (single_value.union_selection) {
+case SocketCAN__bindu::ALT_raw:
+return single_value.field_raw->is_value();
+case SocketCAN__bindu::ALT_isotp:
+return single_value.field_isotp->is_value();
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @SocketCAN_Types.SocketCAN_bindu.");
+}
+}
+
+SocketCAN__bindu SocketCAN__bindu_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 @SocketCAN_Types.SocketCAN_bindu.");
+SocketCAN__bindu ret_val;
+switch (single_value.union_selection) {
+case SocketCAN__bindu::ALT_raw:
+ret_val.raw() = single_value.field_raw->valueof();
+break;
+case SocketCAN__bindu::ALT_isotp:
+ret_val.isotp() = single_value.field_isotp->valueof();
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @SocketCAN_Types.SocketCAN_bindu.");
+}
+return ret_val;
+}
+
+SocketCAN__bindu_template& SocketCAN__bindu_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @SocketCAN_Types.SocketCAN_bindu.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @SocketCAN_Types.SocketCAN_bindu.");
+return value_list.list_value[list_index];
+}
+void SocketCAN__bindu_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error ("Internal error: Setting an invalid list for a template of union type @SocketCAN_Types.SocketCAN_bindu.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SocketCAN__bindu_template[list_length];
+}
+
+SocketCAN__bind__raw_template& SocketCAN__bindu_template::raw()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != SocketCAN__bindu::ALT_raw) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_raw = new SocketCAN__bind__raw_template(ANY_VALUE);
+else single_value.field_raw = new SocketCAN__bind__raw_template;
+single_value.union_selection = SocketCAN__bindu::ALT_raw;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_raw;
+}
+
+const SocketCAN__bind__raw_template& SocketCAN__bindu_template::raw() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field raw in a non-specific template of union type @SocketCAN_Types.SocketCAN_bindu.");
+if (single_value.union_selection != SocketCAN__bindu::ALT_raw) TTCN_error("Accessing non-selected field raw in a template of union type @SocketCAN_Types.SocketCAN_bindu.");
+return *single_value.field_raw;
+}
+
+SocketCAN__bind__isotp_template& SocketCAN__bindu_template::isotp()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != SocketCAN__bindu::ALT_isotp) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_isotp = new SocketCAN__bind__isotp_template(ANY_VALUE);
+else single_value.field_isotp = new SocketCAN__bind__isotp_template;
+single_value.union_selection = SocketCAN__bindu::ALT_isotp;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_isotp;
+}
+
+const SocketCAN__bind__isotp_template& SocketCAN__bindu_template::isotp() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field isotp in a non-specific template of union type @SocketCAN_Types.SocketCAN_bindu.");
+if (single_value.union_selection != SocketCAN__bindu::ALT_isotp) TTCN_error("Accessing non-selected field isotp in a template of union type @SocketCAN_Types.SocketCAN_bindu.");
+return *single_value.field_isotp;
+}
+
+boolean SocketCAN__bindu_template::ischosen(SocketCAN__bindu::union_selection_type checked_selection) const
+{
+if (checked_selection == SocketCAN__bindu::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @SocketCAN_Types.SocketCAN_bindu.");
+switch (template_selection) {
+case SPECIFIC_VALUE:
+if (single_value.union_selection == SocketCAN__bindu::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @SocketCAN_Types.SocketCAN_bindu.");
+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 @SocketCAN_Types.SocketCAN_bindu 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 SocketCAN__bindu_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case SocketCAN__bindu::ALT_raw:
+TTCN_Logger::log_event_str("{ raw := ");
+single_value.field_raw->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case SocketCAN__bindu::ALT_isotp:
+TTCN_Logger::log_event_str("{ isotp := ");
+single_value.field_isotp->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 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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SocketCAN__bindu_template::log_match(const SocketCAN__bindu& 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()) {
+switch (single_value.union_selection) {
+case SocketCAN__bindu::ALT_raw:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".raw");
+single_value.field_raw->log_match(match_value.raw(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ raw := ");
+single_value.field_raw->log_match(match_value.raw(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case SocketCAN__bindu::ALT_isotp:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".isotp");
+single_value.field_isotp->log_match(match_value.isotp(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ isotp := ");
+single_value.field_isotp->log_match(match_value.isotp(), 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 SocketCAN__bindu_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 SocketCAN__bindu::ALT_raw:
+single_value.field_raw->encode_text(text_buf);
+break;
+case SocketCAN__bindu::ALT_isotp:
+single_value.field_isotp->encode_text(text_buf);
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @SocketCAN_Types.SocketCAN_bindu.");
+}
+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 @SocketCAN_Types.SocketCAN_bindu.");
+}
+}
+
+void SocketCAN__bindu_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+{
+single_value.union_selection = SocketCAN__bindu::UNBOUND_VALUE;
+SocketCAN__bindu::union_selection_type new_selection = (SocketCAN__bindu::union_selection_type)text_buf.pull_int().get_val();
+switch (new_selection) {
+case SocketCAN__bindu::ALT_raw:
+single_value.field_raw = new SocketCAN__bind__raw_template;
+single_value.field_raw->decode_text(text_buf);
+break;
+case SocketCAN__bindu::ALT_isotp:
+single_value.field_isotp = new SocketCAN__bind__isotp_template;
+single_value.field_isotp->decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @SocketCAN_Types.SocketCAN_bindu.");
+}
+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 SocketCAN__bindu_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 @SocketCAN_Types.SocketCAN_bindu.");
+}
+}
+
+boolean SocketCAN__bindu_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SocketCAN__bindu_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 SocketCAN__bindu_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 `@SocketCAN_Types.SocketCAN_bindu'");
+    }
+    if (strcmp("raw", param_field) == 0) {
+      raw().set_param(param);
+      return;
+    } else if (strcmp("isotp", param_field) == 0) {
+      isotp().set_param(param);
+      return;
+    } else param.error("Field `%s' not found in union template type `@SocketCAN_Types.SocketCAN_bindu'", 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: {
+    SocketCAN__bindu_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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", "@SocketCAN_Types.SocketCAN_bindu");
+    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, "raw")) {
+      raw().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "isotp")) {
+      isotp().set_param(*mp_last);
+      break;
+    }
+    mp_last->error("Field %s does not exist in type @SocketCAN_Types.SocketCAN_bindu.", last_name);
+  } break;
+  default:
+    param.type_error("union template", "@SocketCAN_Types.SocketCAN_bindu");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SocketCAN__bindu_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 SocketCAN__bindu::ALT_raw:
+single_value.field_raw->check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_bindu");
+return;
+case SocketCAN__bindu::ALT_isotp:
+single_value.field_isotp->check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_bindu");
+return;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @SocketCAN_Types.SocketCAN_bindu.");
+}
+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 : "@SocketCAN_Types.SocketCAN_bindu");
+}
+
+SocketCAN__bind::SocketCAN__bind()
+{
+}
+
+SocketCAN__bind::SocketCAN__bind(const INTEGER& par_id,
+    const SocketCAN__bindu& par_bindu)
+  :   field_id(par_id),
+  field_bindu(par_bindu)
+{
+}
+
+SocketCAN__bind::SocketCAN__bind(const SocketCAN__bind& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @SocketCAN_Types.SocketCAN_bind.");
+if (other_value.id().is_bound()) field_id = other_value.id();
+else field_id.clean_up();
+if (other_value.bindu().is_bound()) field_bindu = other_value.bindu();
+else field_bindu.clean_up();
+}
+
+void SocketCAN__bind::clean_up()
+{
+field_id.clean_up();
+field_bindu.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SocketCAN__bind::get_descriptor() const { return &SocketCAN__bind_descr_; }
+SocketCAN__bind& SocketCAN__bind::operator=(const SocketCAN__bind& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @SocketCAN_Types.SocketCAN_bind.");
+  if (other_value.id().is_bound()) field_id = other_value.id();
+  else field_id.clean_up();
+  if (other_value.bindu().is_bound()) field_bindu = other_value.bindu();
+  else field_bindu.clean_up();
+}
+return *this;
+}
+
+boolean SocketCAN__bind::operator==(const SocketCAN__bind& other_value) const
+{
+return field_id==other_value.field_id
+  && field_bindu==other_value.field_bindu;
+}
+
+boolean SocketCAN__bind::is_bound() const
+{
+return (field_id.is_bound())
+  || (field_bindu.is_bound());
+}
+boolean SocketCAN__bind::is_value() const
+{
+return field_id.is_value()
+  && field_bindu.is_value();
+}
+void SocketCAN__bind::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ id := ");
+field_id.log();
+TTCN_Logger::log_event_str(", bindu := ");
+field_bindu.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SocketCAN__bind::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 @SocketCAN_Types.SocketCAN_bind 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) id().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) bindu().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(), "id")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          id().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(), "bindu")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          bindu().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 @SocketCAN_Types.SocketCAN_bind: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@SocketCAN_Types.SocketCAN_bind");
+  }
+}
+
+void SocketCAN__bind::set_implicit_omit()
+{
+if (id().is_bound()) id().set_implicit_omit();
+if (bindu().is_bound()) bindu().set_implicit_omit();
+}
+
+void SocketCAN__bind::encode_text(Text_Buf& text_buf) const
+{
+field_id.encode_text(text_buf);
+field_bindu.encode_text(text_buf);
+}
+
+void SocketCAN__bind::decode_text(Text_Buf& text_buf)
+{
+field_id.decode_text(text_buf);
+field_bindu.decode_text(text_buf);
+}
+
+struct SocketCAN__bind_template::single_value_struct {
+INTEGER_template field_id;
+SocketCAN__bindu_template field_bindu;
+};
+
+void SocketCAN__bind_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_id = ANY_VALUE;
+single_value->field_bindu = ANY_VALUE;
+}
+}
+}
+
+void SocketCAN__bind_template::copy_value(const SocketCAN__bind& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.id().is_bound()) {
+  single_value->field_id = other_value.id();
+} else {
+  single_value->field_id.clean_up();
+}
+if (other_value.bindu().is_bound()) {
+  single_value->field_bindu = other_value.bindu();
+} else {
+  single_value->field_bindu.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SocketCAN__bind_template::copy_template(const SocketCAN__bind_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.id().get_selection()) {
+single_value->field_id = other_value.id();
+} else {
+single_value->field_id.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.bindu().get_selection()) {
+single_value->field_bindu = other_value.bindu();
+} else {
+single_value->field_bindu.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SocketCAN__bind_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_bind.");
+break;
+}
+set_selection(other_value);
+}
+
+SocketCAN__bind_template::SocketCAN__bind_template()
+{
+}
+
+SocketCAN__bind_template::SocketCAN__bind_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SocketCAN__bind_template::SocketCAN__bind_template(const SocketCAN__bind& other_value)
+{
+copy_value(other_value);
+}
+
+SocketCAN__bind_template::SocketCAN__bind_template(const OPTIONAL<SocketCAN__bind>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__bind&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @SocketCAN_Types.SocketCAN_bind from an unbound optional field.");
+}
+}
+
+SocketCAN__bind_template::SocketCAN__bind_template(const SocketCAN__bind_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SocketCAN__bind_template::~SocketCAN__bind_template()
+{
+clean_up();
+}
+
+SocketCAN__bind_template& SocketCAN__bind_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SocketCAN__bind_template& SocketCAN__bind_template::operator=(const SocketCAN__bind& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SocketCAN__bind_template& SocketCAN__bind_template::operator=(const OPTIONAL<SocketCAN__bind>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__bind&)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 @SocketCAN_Types.SocketCAN_bind.");
+}
+return *this;
+}
+
+SocketCAN__bind_template& SocketCAN__bind_template::operator=(const SocketCAN__bind_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__bind_template::match(const SocketCAN__bind& 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.id().is_bound()) return FALSE;
+if(!single_value->field_id.match(other_value.id(), legacy))return FALSE;
+if(!other_value.bindu().is_bound()) return FALSE;
+if(!single_value->field_bindu.match(other_value.bindu(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_bind.");
+}
+return FALSE;
+}
+
+boolean SocketCAN__bind_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_id.is_bound()
+
+ ||single_value->field_bindu.is_bound()
+;
+}
+
+boolean SocketCAN__bind_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_id.is_value()
+ &&single_value->field_bindu.is_value();
+}
+
+void SocketCAN__bind_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SocketCAN__bind SocketCAN__bind_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 @SocketCAN_Types.SocketCAN_bind.");
+SocketCAN__bind ret_val;
+if (single_value->field_id.is_bound()) {
+ret_val.id() = single_value->field_id.valueof();
+}
+if (single_value->field_bindu.is_bound()) {
+ret_val.bindu() = single_value->field_bindu.valueof();
+}
+return ret_val;
+}
+
+void SocketCAN__bind_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @SocketCAN_Types.SocketCAN_bind.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SocketCAN__bind_template[list_length];
+}
+
+SocketCAN__bind_template& SocketCAN__bind_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @SocketCAN_Types.SocketCAN_bind.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @SocketCAN_Types.SocketCAN_bind.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& SocketCAN__bind_template::id()
+{
+set_specific();
+return single_value->field_id;
+}
+
+const INTEGER_template& SocketCAN__bind_template::id() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field id of a non-specific template of type @SocketCAN_Types.SocketCAN_bind.");
+return single_value->field_id;
+}
+
+SocketCAN__bindu_template& SocketCAN__bind_template::bindu()
+{
+set_specific();
+return single_value->field_bindu;
+}
+
+const SocketCAN__bindu_template& SocketCAN__bind_template::bindu() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field bindu of a non-specific template of type @SocketCAN_Types.SocketCAN_bind.");
+return single_value->field_bindu;
+}
+
+int SocketCAN__bind_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_bind 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 @SocketCAN_Types.SocketCAN_bind 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 @SocketCAN_Types.SocketCAN_bind containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_bind containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_bind containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_bind containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_bind.");
+  }
+  return 0;
+}
+
+void SocketCAN__bind_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ id := ");
+single_value->field_id.log();
+TTCN_Logger::log_event_str(", bindu := ");
+single_value->field_bindu.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SocketCAN__bind_template::log_match(const SocketCAN__bind& 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_id.match(match_value.id(), legacy)){
+TTCN_Logger::log_logmatch_info(".id");
+single_value->field_id.log_match(match_value.id(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_bindu.match(match_value.bindu(), legacy)){
+TTCN_Logger::log_logmatch_info(".bindu");
+single_value->field_bindu.log_match(match_value.bindu(), 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("{ id := ");
+single_value->field_id.log_match(match_value.id(), legacy);
+TTCN_Logger::log_event_str(", bindu := ");
+single_value->field_bindu.log_match(match_value.bindu(), 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 SocketCAN__bind_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_id.encode_text(text_buf);
+single_value->field_bindu.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 @SocketCAN_Types.SocketCAN_bind.");
+}
+}
+
+void SocketCAN__bind_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_id.decode_text(text_buf);
+single_value->field_bindu.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 SocketCAN__bind_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 @SocketCAN_Types.SocketCAN_bind.");
+}
+}
+
+void SocketCAN__bind_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: {
+    SocketCAN__bind_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @SocketCAN_Types.SocketCAN_bind 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) id().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) bindu().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(), "id")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          id().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(), "bindu")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          bindu().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 @SocketCAN_Types.SocketCAN_bind: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@SocketCAN_Types.SocketCAN_bind");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SocketCAN__bind_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_id.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_bind");
+single_value->field_bindu.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_bind");
+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 : "@SocketCAN_Types.SocketCAN_bind");
+}
+
+boolean SocketCAN__bind_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SocketCAN__bind_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+SocketCAN__bind__result::SocketCAN__bind__result()
+{
+}
+
+SocketCAN__bind__result::SocketCAN__bind__result(const SocketCAN__Result& par_result)
+  :   field_result(par_result)
+{
+}
+
+SocketCAN__bind__result::SocketCAN__bind__result(const SocketCAN__bind__result& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @SocketCAN_Types.SocketCAN_bind_result.");
+if (other_value.result().is_bound()) field_result = other_value.result();
+else field_result.clean_up();
+}
+
+void SocketCAN__bind__result::clean_up()
+{
+field_result.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SocketCAN__bind__result::get_descriptor() const { return &SocketCAN__bind__result_descr_; }
+SocketCAN__bind__result& SocketCAN__bind__result::operator=(const SocketCAN__bind__result& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @SocketCAN_Types.SocketCAN_bind_result.");
+  if (other_value.result().is_bound()) field_result = other_value.result();
+  else field_result.clean_up();
+}
+return *this;
+}
+
+boolean SocketCAN__bind__result::operator==(const SocketCAN__bind__result& other_value) const
+{
+return field_result==other_value.field_result;
+}
+
+boolean SocketCAN__bind__result::is_bound() const
+{
+return (field_result.is_bound());
+}
+boolean SocketCAN__bind__result::is_value() const
+{
+return field_result.is_value();
+}
+void SocketCAN__bind__result::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ result := ");
+field_result.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SocketCAN__bind__result::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 (1<param.get_size()) {
+      param.error("record value of type @SocketCAN_Types.SocketCAN_bind_result has 1 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) result().set_param(*param.get_elem(0));
+    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(), "result")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          result().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 @SocketCAN_Types.SocketCAN_bind_result: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@SocketCAN_Types.SocketCAN_bind_result");
+  }
+}
+
+void SocketCAN__bind__result::set_implicit_omit()
+{
+if (result().is_bound()) result().set_implicit_omit();
+}
+
+void SocketCAN__bind__result::encode_text(Text_Buf& text_buf) const
+{
+field_result.encode_text(text_buf);
+}
+
+void SocketCAN__bind__result::decode_text(Text_Buf& text_buf)
+{
+field_result.decode_text(text_buf);
+}
+
+struct SocketCAN__bind__result_template::single_value_struct {
+SocketCAN__Result_template field_result;
+};
+
+void SocketCAN__bind__result_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_result = ANY_VALUE;
+}
+}
+}
+
+void SocketCAN__bind__result_template::copy_value(const SocketCAN__bind__result& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.result().is_bound()) {
+  single_value->field_result = other_value.result();
+} else {
+  single_value->field_result.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SocketCAN__bind__result_template::copy_template(const SocketCAN__bind__result_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.result().get_selection()) {
+single_value->field_result = other_value.result();
+} else {
+single_value->field_result.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SocketCAN__bind__result_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_bind_result.");
+break;
+}
+set_selection(other_value);
+}
+
+SocketCAN__bind__result_template::SocketCAN__bind__result_template()
+{
+}
+
+SocketCAN__bind__result_template::SocketCAN__bind__result_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SocketCAN__bind__result_template::SocketCAN__bind__result_template(const SocketCAN__bind__result& other_value)
+{
+copy_value(other_value);
+}
+
+SocketCAN__bind__result_template::SocketCAN__bind__result_template(const OPTIONAL<SocketCAN__bind__result>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__bind__result&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @SocketCAN_Types.SocketCAN_bind_result from an unbound optional field.");
+}
+}
+
+SocketCAN__bind__result_template::SocketCAN__bind__result_template(const SocketCAN__bind__result_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SocketCAN__bind__result_template::~SocketCAN__bind__result_template()
+{
+clean_up();
+}
+
+SocketCAN__bind__result_template& SocketCAN__bind__result_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SocketCAN__bind__result_template& SocketCAN__bind__result_template::operator=(const SocketCAN__bind__result& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SocketCAN__bind__result_template& SocketCAN__bind__result_template::operator=(const OPTIONAL<SocketCAN__bind__result>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__bind__result&)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 @SocketCAN_Types.SocketCAN_bind_result.");
+}
+return *this;
+}
+
+SocketCAN__bind__result_template& SocketCAN__bind__result_template::operator=(const SocketCAN__bind__result_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__bind__result_template::match(const SocketCAN__bind__result& 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.result().is_bound()) return FALSE;
+if(!single_value->field_result.match(other_value.result(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_bind_result.");
+}
+return FALSE;
+}
+
+boolean SocketCAN__bind__result_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_result.is_bound()
+;
+}
+
+boolean SocketCAN__bind__result_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_result.is_value();
+}
+
+void SocketCAN__bind__result_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SocketCAN__bind__result SocketCAN__bind__result_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 @SocketCAN_Types.SocketCAN_bind_result.");
+SocketCAN__bind__result ret_val;
+if (single_value->field_result.is_bound()) {
+ret_val.result() = single_value->field_result.valueof();
+}
+return ret_val;
+}
+
+void SocketCAN__bind__result_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @SocketCAN_Types.SocketCAN_bind_result.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SocketCAN__bind__result_template[list_length];
+}
+
+SocketCAN__bind__result_template& SocketCAN__bind__result_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @SocketCAN_Types.SocketCAN_bind_result.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @SocketCAN_Types.SocketCAN_bind_result.");
+return value_list.list_value[list_index];
+}
+
+SocketCAN__Result_template& SocketCAN__bind__result_template::result()
+{
+set_specific();
+return single_value->field_result;
+}
+
+const SocketCAN__Result_template& SocketCAN__bind__result_template::result() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field result of a non-specific template of type @SocketCAN_Types.SocketCAN_bind_result.");
+return single_value->field_result;
+}
+
+int SocketCAN__bind__result_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_bind_result which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 1;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_bind_result 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 @SocketCAN_Types.SocketCAN_bind_result containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_bind_result containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_bind_result containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_bind_result containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_bind_result.");
+  }
+  return 0;
+}
+
+void SocketCAN__bind__result_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ result := ");
+single_value->field_result.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SocketCAN__bind__result_template::log_match(const SocketCAN__bind__result& 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_result.match(match_value.result(), legacy)){
+TTCN_Logger::log_logmatch_info(".result");
+single_value->field_result.log_match(match_value.result(), 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("{ result := ");
+single_value->field_result.log_match(match_value.result(), 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 SocketCAN__bind__result_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_result.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 @SocketCAN_Types.SocketCAN_bind_result.");
+}
+}
+
+void SocketCAN__bind__result_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_result.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 SocketCAN__bind__result_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 @SocketCAN_Types.SocketCAN_bind_result.");
+}
+}
+
+void SocketCAN__bind__result_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: {
+    SocketCAN__bind__result_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (1<param.get_size()) {
+      param.error("record template of type @SocketCAN_Types.SocketCAN_bind_result has 1 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) result().set_param(*param.get_elem(0));
+    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(), "result")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          result().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 @SocketCAN_Types.SocketCAN_bind_result: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@SocketCAN_Types.SocketCAN_bind_result");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SocketCAN__bind__result_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_result.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_bind_result");
+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 : "@SocketCAN_Types.SocketCAN_bind_result");
+}
+
+boolean SocketCAN__bind__result_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SocketCAN__bind__result_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+SocketCAN__send__data::SocketCAN__send__data()
+{
+}
+
+SocketCAN__send__data::SocketCAN__send__data(const INTEGER& par_id,
+    const OPTIONAL<SocketCAN__send__data__ifu>& par_ifu,
+    const SocketCAN__CAN__or__CAN__FD__frame& par_frame)
+  :   field_id(par_id),
+  field_ifu(par_ifu),
+  field_frame(par_frame)
+{
+}
+
+SocketCAN__send__data::SocketCAN__send__data(const SocketCAN__send__data& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @SocketCAN_Types.SocketCAN_send_data.");
+if (other_value.id().is_bound()) field_id = other_value.id();
+else field_id.clean_up();
+if (other_value.ifu().is_bound()) field_ifu = other_value.ifu();
+else field_ifu.clean_up();
+if (other_value.frame().is_bound()) field_frame = other_value.frame();
+else field_frame.clean_up();
+}
+
+void SocketCAN__send__data::clean_up()
+{
+field_id.clean_up();
+field_ifu.clean_up();
+field_frame.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SocketCAN__send__data::get_descriptor() const { return &SocketCAN__send__data_descr_; }
+SocketCAN__send__data& SocketCAN__send__data::operator=(const SocketCAN__send__data& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @SocketCAN_Types.SocketCAN_send_data.");
+  if (other_value.id().is_bound()) field_id = other_value.id();
+  else field_id.clean_up();
+  if (other_value.ifu().is_bound()) field_ifu = other_value.ifu();
+  else field_ifu.clean_up();
+  if (other_value.frame().is_bound()) field_frame = other_value.frame();
+  else field_frame.clean_up();
+}
+return *this;
+}
+
+boolean SocketCAN__send__data::operator==(const SocketCAN__send__data& other_value) const
+{
+return field_id==other_value.field_id
+  && field_ifu==other_value.field_ifu
+  && field_frame==other_value.field_frame;
+}
+
+boolean SocketCAN__send__data::is_bound() const
+{
+return (field_id.is_bound())
+  || (OPTIONAL_OMIT == field_ifu.get_selection() || field_ifu.is_bound())
+  || (field_frame.is_bound());
+}
+boolean SocketCAN__send__data::is_value() const
+{
+return field_id.is_value()
+  && (OPTIONAL_OMIT == field_ifu.get_selection() || field_ifu.is_value())
+  && field_frame.is_value();
+}
+int SocketCAN__send__data::size_of() const
+{
+  int ret_val = 2;
+  if (field_ifu.ispresent()) ret_val++;
+  return ret_val;
+}
+
+void SocketCAN__send__data::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ id := ");
+field_id.log();
+TTCN_Logger::log_event_str(", ifu := ");
+field_ifu.log();
+TTCN_Logger::log_event_str(", frame := ");
+field_frame.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SocketCAN__send__data::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 @SocketCAN_Types.SocketCAN_send_data 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) id().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ifu().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) frame().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(), "id")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          id().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(), "ifu")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ifu().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(), "frame")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          frame().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 @SocketCAN_Types.SocketCAN_send_data: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@SocketCAN_Types.SocketCAN_send_data");
+  }
+}
+
+void SocketCAN__send__data::set_implicit_omit()
+{
+if (id().is_bound()) id().set_implicit_omit();
+if (!ifu().is_bound()) ifu() = OMIT_VALUE;
+else ifu().set_implicit_omit();
+if (frame().is_bound()) frame().set_implicit_omit();
+}
+
+void SocketCAN__send__data::encode_text(Text_Buf& text_buf) const
+{
+field_id.encode_text(text_buf);
+field_ifu.encode_text(text_buf);
+field_frame.encode_text(text_buf);
+}
+
+void SocketCAN__send__data::decode_text(Text_Buf& text_buf)
+{
+field_id.decode_text(text_buf);
+field_ifu.decode_text(text_buf);
+field_frame.decode_text(text_buf);
+}
+
+struct SocketCAN__send__data_template::single_value_struct {
+INTEGER_template field_id;
+SocketCAN__send__data__ifu_template field_ifu;
+SocketCAN__CAN__or__CAN__FD__frame_template field_frame;
+};
+
+void SocketCAN__send__data_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_id = ANY_VALUE;
+single_value->field_ifu = ANY_OR_OMIT;
+single_value->field_frame = ANY_VALUE;
+}
+}
+}
+
+void SocketCAN__send__data_template::copy_value(const SocketCAN__send__data& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.id().is_bound()) {
+  single_value->field_id = other_value.id();
+} else {
+  single_value->field_id.clean_up();
+}
+if (other_value.ifu().is_bound()) {
+  if (other_value.ifu().ispresent()) single_value->field_ifu = other_value.ifu()();
+  else single_value->field_ifu = OMIT_VALUE;
+} else {
+  single_value->field_ifu.clean_up();
+}
+if (other_value.frame().is_bound()) {
+  single_value->field_frame = other_value.frame();
+} else {
+  single_value->field_frame.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SocketCAN__send__data_template::copy_template(const SocketCAN__send__data_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.id().get_selection()) {
+single_value->field_id = other_value.id();
+} else {
+single_value->field_id.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.ifu().get_selection()) {
+single_value->field_ifu = other_value.ifu();
+} else {
+single_value->field_ifu.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.frame().get_selection()) {
+single_value->field_frame = other_value.frame();
+} else {
+single_value->field_frame.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SocketCAN__send__data_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_send_data.");
+break;
+}
+set_selection(other_value);
+}
+
+SocketCAN__send__data_template::SocketCAN__send__data_template()
+{
+}
+
+SocketCAN__send__data_template::SocketCAN__send__data_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SocketCAN__send__data_template::SocketCAN__send__data_template(const SocketCAN__send__data& other_value)
+{
+copy_value(other_value);
+}
+
+SocketCAN__send__data_template::SocketCAN__send__data_template(const OPTIONAL<SocketCAN__send__data>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__send__data&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @SocketCAN_Types.SocketCAN_send_data from an unbound optional field.");
+}
+}
+
+SocketCAN__send__data_template::SocketCAN__send__data_template(const SocketCAN__send__data_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SocketCAN__send__data_template::~SocketCAN__send__data_template()
+{
+clean_up();
+}
+
+SocketCAN__send__data_template& SocketCAN__send__data_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SocketCAN__send__data_template& SocketCAN__send__data_template::operator=(const SocketCAN__send__data& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SocketCAN__send__data_template& SocketCAN__send__data_template::operator=(const OPTIONAL<SocketCAN__send__data>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__send__data&)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 @SocketCAN_Types.SocketCAN_send_data.");
+}
+return *this;
+}
+
+SocketCAN__send__data_template& SocketCAN__send__data_template::operator=(const SocketCAN__send__data_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__send__data_template::match(const SocketCAN__send__data& 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.id().is_bound()) return FALSE;
+if(!single_value->field_id.match(other_value.id(), legacy))return FALSE;
+if(!other_value.ifu().is_bound()) return FALSE;
+if((other_value.ifu().ispresent() ? !single_value->field_ifu.match((const SocketCAN__send__data__ifu&)other_value.ifu(), legacy) : !single_value->field_ifu.match_omit(legacy)))return FALSE;
+if(!other_value.frame().is_bound()) return FALSE;
+if(!single_value->field_frame.match(other_value.frame(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_send_data.");
+}
+return FALSE;
+}
+
+boolean SocketCAN__send__data_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_id.is_bound()
+
+ ||(single_value->field_ifu.is_omit() || single_value->field_ifu.is_bound())
+
+ ||single_value->field_frame.is_bound()
+;
+}
+
+boolean SocketCAN__send__data_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_id.is_value()
+ &&(single_value->field_ifu.is_omit() || single_value->field_ifu.is_value())
+ &&single_value->field_frame.is_value();
+}
+
+void SocketCAN__send__data_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SocketCAN__send__data SocketCAN__send__data_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 @SocketCAN_Types.SocketCAN_send_data.");
+SocketCAN__send__data ret_val;
+if (single_value->field_id.is_bound()) {
+ret_val.id() = single_value->field_id.valueof();
+}
+if (single_value->field_ifu.is_omit()) ret_val.ifu() = OMIT_VALUE;
+else if (single_value->field_ifu.is_bound()) {
+ret_val.ifu() = single_value->field_ifu.valueof();
+}
+if (single_value->field_frame.is_bound()) {
+ret_val.frame() = single_value->field_frame.valueof();
+}
+return ret_val;
+}
+
+void SocketCAN__send__data_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @SocketCAN_Types.SocketCAN_send_data.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SocketCAN__send__data_template[list_length];
+}
+
+SocketCAN__send__data_template& SocketCAN__send__data_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @SocketCAN_Types.SocketCAN_send_data.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @SocketCAN_Types.SocketCAN_send_data.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& SocketCAN__send__data_template::id()
+{
+set_specific();
+return single_value->field_id;
+}
+
+const INTEGER_template& SocketCAN__send__data_template::id() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field id of a non-specific template of type @SocketCAN_Types.SocketCAN_send_data.");
+return single_value->field_id;
+}
+
+SocketCAN__send__data__ifu_template& SocketCAN__send__data_template::ifu()
+{
+set_specific();
+return single_value->field_ifu;
+}
+
+const SocketCAN__send__data__ifu_template& SocketCAN__send__data_template::ifu() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field ifu of a non-specific template of type @SocketCAN_Types.SocketCAN_send_data.");
+return single_value->field_ifu;
+}
+
+SocketCAN__CAN__or__CAN__FD__frame_template& SocketCAN__send__data_template::frame()
+{
+set_specific();
+return single_value->field_frame;
+}
+
+const SocketCAN__CAN__or__CAN__FD__frame_template& SocketCAN__send__data_template::frame() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field frame of a non-specific template of type @SocketCAN_Types.SocketCAN_send_data.");
+return single_value->field_frame;
+}
+
+int SocketCAN__send__data_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_send_data which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+  {    int ret_val = 2;
+      if (single_value->field_ifu.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 @SocketCAN_Types.SocketCAN_send_data 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 @SocketCAN_Types.SocketCAN_send_data containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_send_data containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_send_data containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_send_data containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_send_data.");
+  }
+  return 0;
+}
+
+void SocketCAN__send__data_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ id := ");
+single_value->field_id.log();
+TTCN_Logger::log_event_str(", ifu := ");
+single_value->field_ifu.log();
+TTCN_Logger::log_event_str(", frame := ");
+single_value->field_frame.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SocketCAN__send__data_template::log_match(const SocketCAN__send__data& 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_id.match(match_value.id(), legacy)){
+TTCN_Logger::log_logmatch_info(".id");
+single_value->field_id.log_match(match_value.id(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if (match_value.ifu().ispresent()){
+if(!single_value->field_ifu.match(match_value.ifu(), legacy)){
+TTCN_Logger::log_logmatch_info(".ifu");
+single_value->field_ifu.log_match(match_value.ifu(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+} else {
+if (!single_value->field_ifu.match_omit(legacy)){
+ TTCN_Logger::log_logmatch_info(".ifu := omit with ");
+TTCN_Logger::print_logmatch_buffer();
+single_value->field_ifu.log();
+TTCN_Logger::log_event_str(" unmatched");
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+}
+if(!single_value->field_frame.match(match_value.frame(), legacy)){
+TTCN_Logger::log_logmatch_info(".frame");
+single_value->field_frame.log_match(match_value.frame(), 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("{ id := ");
+single_value->field_id.log_match(match_value.id(), legacy);
+TTCN_Logger::log_event_str(", ifu := ");
+if (match_value.ifu().ispresent()) single_value->field_ifu.log_match(match_value.ifu(), legacy);
+else {
+TTCN_Logger::log_event_str("omit with ");
+single_value->field_ifu.log();
+if (single_value->field_ifu.match_omit(legacy)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+TTCN_Logger::log_event_str(", frame := ");
+single_value->field_frame.log_match(match_value.frame(), 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 SocketCAN__send__data_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_id.encode_text(text_buf);
+single_value->field_ifu.encode_text(text_buf);
+single_value->field_frame.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 @SocketCAN_Types.SocketCAN_send_data.");
+}
+}
+
+void SocketCAN__send__data_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_id.decode_text(text_buf);
+single_value->field_ifu.decode_text(text_buf);
+single_value->field_frame.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 SocketCAN__send__data_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 @SocketCAN_Types.SocketCAN_send_data.");
+}
+}
+
+void SocketCAN__send__data_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: {
+    SocketCAN__send__data_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @SocketCAN_Types.SocketCAN_send_data 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) id().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ifu().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) frame().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(), "id")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          id().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(), "ifu")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ifu().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(), "frame")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          frame().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 @SocketCAN_Types.SocketCAN_send_data: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@SocketCAN_Types.SocketCAN_send_data");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SocketCAN__send__data_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_id.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_send_data");
+single_value->field_ifu.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_send_data");
+single_value->field_frame.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_send_data");
+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 : "@SocketCAN_Types.SocketCAN_send_data");
+}
+
+boolean SocketCAN__send__data_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SocketCAN__send__data_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+SocketCAN__send__data__result::SocketCAN__send__data__result()
+{
+}
+
+SocketCAN__send__data__result::SocketCAN__send__data__result(const SocketCAN__Result& par_result)
+  :   field_result(par_result)
+{
+}
+
+SocketCAN__send__data__result::SocketCAN__send__data__result(const SocketCAN__send__data__result& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @SocketCAN_Types.SocketCAN_send_data_result.");
+if (other_value.result().is_bound()) field_result = other_value.result();
+else field_result.clean_up();
+}
+
+void SocketCAN__send__data__result::clean_up()
+{
+field_result.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SocketCAN__send__data__result::get_descriptor() const { return &SocketCAN__send__data__result_descr_; }
+SocketCAN__send__data__result& SocketCAN__send__data__result::operator=(const SocketCAN__send__data__result& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @SocketCAN_Types.SocketCAN_send_data_result.");
+  if (other_value.result().is_bound()) field_result = other_value.result();
+  else field_result.clean_up();
+}
+return *this;
+}
+
+boolean SocketCAN__send__data__result::operator==(const SocketCAN__send__data__result& other_value) const
+{
+return field_result==other_value.field_result;
+}
+
+boolean SocketCAN__send__data__result::is_bound() const
+{
+return (field_result.is_bound());
+}
+boolean SocketCAN__send__data__result::is_value() const
+{
+return field_result.is_value();
+}
+void SocketCAN__send__data__result::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ result := ");
+field_result.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SocketCAN__send__data__result::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 (1<param.get_size()) {
+      param.error("record value of type @SocketCAN_Types.SocketCAN_send_data_result has 1 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) result().set_param(*param.get_elem(0));
+    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(), "result")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          result().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 @SocketCAN_Types.SocketCAN_send_data_result: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@SocketCAN_Types.SocketCAN_send_data_result");
+  }
+}
+
+void SocketCAN__send__data__result::set_implicit_omit()
+{
+if (result().is_bound()) result().set_implicit_omit();
+}
+
+void SocketCAN__send__data__result::encode_text(Text_Buf& text_buf) const
+{
+field_result.encode_text(text_buf);
+}
+
+void SocketCAN__send__data__result::decode_text(Text_Buf& text_buf)
+{
+field_result.decode_text(text_buf);
+}
+
+struct SocketCAN__send__data__result_template::single_value_struct {
+SocketCAN__Result_template field_result;
+};
+
+void SocketCAN__send__data__result_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_result = ANY_VALUE;
+}
+}
+}
+
+void SocketCAN__send__data__result_template::copy_value(const SocketCAN__send__data__result& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.result().is_bound()) {
+  single_value->field_result = other_value.result();
+} else {
+  single_value->field_result.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SocketCAN__send__data__result_template::copy_template(const SocketCAN__send__data__result_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.result().get_selection()) {
+single_value->field_result = other_value.result();
+} else {
+single_value->field_result.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SocketCAN__send__data__result_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_send_data_result.");
+break;
+}
+set_selection(other_value);
+}
+
+SocketCAN__send__data__result_template::SocketCAN__send__data__result_template()
+{
+}
+
+SocketCAN__send__data__result_template::SocketCAN__send__data__result_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SocketCAN__send__data__result_template::SocketCAN__send__data__result_template(const SocketCAN__send__data__result& other_value)
+{
+copy_value(other_value);
+}
+
+SocketCAN__send__data__result_template::SocketCAN__send__data__result_template(const OPTIONAL<SocketCAN__send__data__result>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__send__data__result&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @SocketCAN_Types.SocketCAN_send_data_result from an unbound optional field.");
+}
+}
+
+SocketCAN__send__data__result_template::SocketCAN__send__data__result_template(const SocketCAN__send__data__result_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SocketCAN__send__data__result_template::~SocketCAN__send__data__result_template()
+{
+clean_up();
+}
+
+SocketCAN__send__data__result_template& SocketCAN__send__data__result_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SocketCAN__send__data__result_template& SocketCAN__send__data__result_template::operator=(const SocketCAN__send__data__result& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SocketCAN__send__data__result_template& SocketCAN__send__data__result_template::operator=(const OPTIONAL<SocketCAN__send__data__result>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__send__data__result&)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 @SocketCAN_Types.SocketCAN_send_data_result.");
+}
+return *this;
+}
+
+SocketCAN__send__data__result_template& SocketCAN__send__data__result_template::operator=(const SocketCAN__send__data__result_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__send__data__result_template::match(const SocketCAN__send__data__result& 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.result().is_bound()) return FALSE;
+if(!single_value->field_result.match(other_value.result(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_send_data_result.");
+}
+return FALSE;
+}
+
+boolean SocketCAN__send__data__result_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_result.is_bound()
+;
+}
+
+boolean SocketCAN__send__data__result_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_result.is_value();
+}
+
+void SocketCAN__send__data__result_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SocketCAN__send__data__result SocketCAN__send__data__result_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 @SocketCAN_Types.SocketCAN_send_data_result.");
+SocketCAN__send__data__result ret_val;
+if (single_value->field_result.is_bound()) {
+ret_val.result() = single_value->field_result.valueof();
+}
+return ret_val;
+}
+
+void SocketCAN__send__data__result_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @SocketCAN_Types.SocketCAN_send_data_result.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SocketCAN__send__data__result_template[list_length];
+}
+
+SocketCAN__send__data__result_template& SocketCAN__send__data__result_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @SocketCAN_Types.SocketCAN_send_data_result.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @SocketCAN_Types.SocketCAN_send_data_result.");
+return value_list.list_value[list_index];
+}
+
+SocketCAN__Result_template& SocketCAN__send__data__result_template::result()
+{
+set_specific();
+return single_value->field_result;
+}
+
+const SocketCAN__Result_template& SocketCAN__send__data__result_template::result() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field result of a non-specific template of type @SocketCAN_Types.SocketCAN_send_data_result.");
+return single_value->field_result;
+}
+
+int SocketCAN__send__data__result_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_send_data_result which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 1;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_send_data_result 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 @SocketCAN_Types.SocketCAN_send_data_result containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_send_data_result containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_send_data_result containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_send_data_result containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_send_data_result.");
+  }
+  return 0;
+}
+
+void SocketCAN__send__data__result_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ result := ");
+single_value->field_result.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SocketCAN__send__data__result_template::log_match(const SocketCAN__send__data__result& 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_result.match(match_value.result(), legacy)){
+TTCN_Logger::log_logmatch_info(".result");
+single_value->field_result.log_match(match_value.result(), 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("{ result := ");
+single_value->field_result.log_match(match_value.result(), 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 SocketCAN__send__data__result_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_result.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 @SocketCAN_Types.SocketCAN_send_data_result.");
+}
+}
+
+void SocketCAN__send__data__result_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_result.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 SocketCAN__send__data__result_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 @SocketCAN_Types.SocketCAN_send_data_result.");
+}
+}
+
+void SocketCAN__send__data__result_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: {
+    SocketCAN__send__data__result_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (1<param.get_size()) {
+      param.error("record template of type @SocketCAN_Types.SocketCAN_send_data_result has 1 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) result().set_param(*param.get_elem(0));
+    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(), "result")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          result().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 @SocketCAN_Types.SocketCAN_send_data_result: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@SocketCAN_Types.SocketCAN_send_data_result");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SocketCAN__send__data__result_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_result.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_send_data_result");
+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 : "@SocketCAN_Types.SocketCAN_send_data_result");
+}
+
+boolean SocketCAN__send__data__result_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SocketCAN__send__data__result_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+SocketCAN__write__data::SocketCAN__write__data()
+{
+}
+
+SocketCAN__write__data::SocketCAN__write__data(const INTEGER& par_id,
+    const Bcm::SocketCAN__bcm__frame& par_bcm__tx__msg)
+  :   field_id(par_id),
+  field_bcm__tx__msg(par_bcm__tx__msg)
+{
+}
+
+SocketCAN__write__data::SocketCAN__write__data(const SocketCAN__write__data& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @SocketCAN_Types.SocketCAN_write_data.");
+if (other_value.id().is_bound()) field_id = other_value.id();
+else field_id.clean_up();
+if (other_value.bcm__tx__msg().is_bound()) field_bcm__tx__msg = other_value.bcm__tx__msg();
+else field_bcm__tx__msg.clean_up();
+}
+
+void SocketCAN__write__data::clean_up()
+{
+field_id.clean_up();
+field_bcm__tx__msg.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SocketCAN__write__data::get_descriptor() const { return &SocketCAN__write__data_descr_; }
+SocketCAN__write__data& SocketCAN__write__data::operator=(const SocketCAN__write__data& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @SocketCAN_Types.SocketCAN_write_data.");
+  if (other_value.id().is_bound()) field_id = other_value.id();
+  else field_id.clean_up();
+  if (other_value.bcm__tx__msg().is_bound()) field_bcm__tx__msg = other_value.bcm__tx__msg();
+  else field_bcm__tx__msg.clean_up();
+}
+return *this;
+}
+
+boolean SocketCAN__write__data::operator==(const SocketCAN__write__data& other_value) const
+{
+return field_id==other_value.field_id
+  && field_bcm__tx__msg==other_value.field_bcm__tx__msg;
+}
+
+boolean SocketCAN__write__data::is_bound() const
+{
+return (field_id.is_bound())
+  || (field_bcm__tx__msg.is_bound());
+}
+boolean SocketCAN__write__data::is_value() const
+{
+return field_id.is_value()
+  && field_bcm__tx__msg.is_value();
+}
+void SocketCAN__write__data::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ id := ");
+field_id.log();
+TTCN_Logger::log_event_str(", bcm_tx_msg := ");
+field_bcm__tx__msg.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SocketCAN__write__data::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 @SocketCAN_Types.SocketCAN_write_data 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) id().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) bcm__tx__msg().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(), "id")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          id().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(), "bcm_tx_msg")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          bcm__tx__msg().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 @SocketCAN_Types.SocketCAN_write_data: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@SocketCAN_Types.SocketCAN_write_data");
+  }
+}
+
+void SocketCAN__write__data::set_implicit_omit()
+{
+if (id().is_bound()) id().set_implicit_omit();
+if (bcm__tx__msg().is_bound()) bcm__tx__msg().set_implicit_omit();
+}
+
+void SocketCAN__write__data::encode_text(Text_Buf& text_buf) const
+{
+field_id.encode_text(text_buf);
+field_bcm__tx__msg.encode_text(text_buf);
+}
+
+void SocketCAN__write__data::decode_text(Text_Buf& text_buf)
+{
+field_id.decode_text(text_buf);
+field_bcm__tx__msg.decode_text(text_buf);
+}
+
+struct SocketCAN__write__data_template::single_value_struct {
+INTEGER_template field_id;
+Bcm::SocketCAN__bcm__frame_template field_bcm__tx__msg;
+};
+
+void SocketCAN__write__data_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_id = ANY_VALUE;
+single_value->field_bcm__tx__msg = ANY_VALUE;
+}
+}
+}
+
+void SocketCAN__write__data_template::copy_value(const SocketCAN__write__data& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.id().is_bound()) {
+  single_value->field_id = other_value.id();
+} else {
+  single_value->field_id.clean_up();
+}
+if (other_value.bcm__tx__msg().is_bound()) {
+  single_value->field_bcm__tx__msg = other_value.bcm__tx__msg();
+} else {
+  single_value->field_bcm__tx__msg.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SocketCAN__write__data_template::copy_template(const SocketCAN__write__data_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.id().get_selection()) {
+single_value->field_id = other_value.id();
+} else {
+single_value->field_id.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.bcm__tx__msg().get_selection()) {
+single_value->field_bcm__tx__msg = other_value.bcm__tx__msg();
+} else {
+single_value->field_bcm__tx__msg.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SocketCAN__write__data_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_write_data.");
+break;
+}
+set_selection(other_value);
+}
+
+SocketCAN__write__data_template::SocketCAN__write__data_template()
+{
+}
+
+SocketCAN__write__data_template::SocketCAN__write__data_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SocketCAN__write__data_template::SocketCAN__write__data_template(const SocketCAN__write__data& other_value)
+{
+copy_value(other_value);
+}
+
+SocketCAN__write__data_template::SocketCAN__write__data_template(const OPTIONAL<SocketCAN__write__data>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__write__data&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @SocketCAN_Types.SocketCAN_write_data from an unbound optional field.");
+}
+}
+
+SocketCAN__write__data_template::SocketCAN__write__data_template(const SocketCAN__write__data_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SocketCAN__write__data_template::~SocketCAN__write__data_template()
+{
+clean_up();
+}
+
+SocketCAN__write__data_template& SocketCAN__write__data_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SocketCAN__write__data_template& SocketCAN__write__data_template::operator=(const SocketCAN__write__data& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SocketCAN__write__data_template& SocketCAN__write__data_template::operator=(const OPTIONAL<SocketCAN__write__data>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__write__data&)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 @SocketCAN_Types.SocketCAN_write_data.");
+}
+return *this;
+}
+
+SocketCAN__write__data_template& SocketCAN__write__data_template::operator=(const SocketCAN__write__data_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__write__data_template::match(const SocketCAN__write__data& 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.id().is_bound()) return FALSE;
+if(!single_value->field_id.match(other_value.id(), legacy))return FALSE;
+if(!other_value.bcm__tx__msg().is_bound()) return FALSE;
+if(!single_value->field_bcm__tx__msg.match(other_value.bcm__tx__msg(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_write_data.");
+}
+return FALSE;
+}
+
+boolean SocketCAN__write__data_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_id.is_bound()
+
+ ||single_value->field_bcm__tx__msg.is_bound()
+;
+}
+
+boolean SocketCAN__write__data_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_id.is_value()
+ &&single_value->field_bcm__tx__msg.is_value();
+}
+
+void SocketCAN__write__data_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SocketCAN__write__data SocketCAN__write__data_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 @SocketCAN_Types.SocketCAN_write_data.");
+SocketCAN__write__data ret_val;
+if (single_value->field_id.is_bound()) {
+ret_val.id() = single_value->field_id.valueof();
+}
+if (single_value->field_bcm__tx__msg.is_bound()) {
+ret_val.bcm__tx__msg() = single_value->field_bcm__tx__msg.valueof();
+}
+return ret_val;
+}
+
+void SocketCAN__write__data_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @SocketCAN_Types.SocketCAN_write_data.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SocketCAN__write__data_template[list_length];
+}
+
+SocketCAN__write__data_template& SocketCAN__write__data_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @SocketCAN_Types.SocketCAN_write_data.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @SocketCAN_Types.SocketCAN_write_data.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& SocketCAN__write__data_template::id()
+{
+set_specific();
+return single_value->field_id;
+}
+
+const INTEGER_template& SocketCAN__write__data_template::id() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field id of a non-specific template of type @SocketCAN_Types.SocketCAN_write_data.");
+return single_value->field_id;
+}
+
+Bcm::SocketCAN__bcm__frame_template& SocketCAN__write__data_template::bcm__tx__msg()
+{
+set_specific();
+return single_value->field_bcm__tx__msg;
+}
+
+const Bcm::SocketCAN__bcm__frame_template& SocketCAN__write__data_template::bcm__tx__msg() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field bcm_tx_msg of a non-specific template of type @SocketCAN_Types.SocketCAN_write_data.");
+return single_value->field_bcm__tx__msg;
+}
+
+int SocketCAN__write__data_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_write_data 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 @SocketCAN_Types.SocketCAN_write_data 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 @SocketCAN_Types.SocketCAN_write_data containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_write_data containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_write_data containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_write_data containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_write_data.");
+  }
+  return 0;
+}
+
+void SocketCAN__write__data_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ id := ");
+single_value->field_id.log();
+TTCN_Logger::log_event_str(", bcm_tx_msg := ");
+single_value->field_bcm__tx__msg.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SocketCAN__write__data_template::log_match(const SocketCAN__write__data& 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_id.match(match_value.id(), legacy)){
+TTCN_Logger::log_logmatch_info(".id");
+single_value->field_id.log_match(match_value.id(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_bcm__tx__msg.match(match_value.bcm__tx__msg(), legacy)){
+TTCN_Logger::log_logmatch_info(".bcm_tx_msg");
+single_value->field_bcm__tx__msg.log_match(match_value.bcm__tx__msg(), 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("{ id := ");
+single_value->field_id.log_match(match_value.id(), legacy);
+TTCN_Logger::log_event_str(", bcm_tx_msg := ");
+single_value->field_bcm__tx__msg.log_match(match_value.bcm__tx__msg(), 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 SocketCAN__write__data_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_id.encode_text(text_buf);
+single_value->field_bcm__tx__msg.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 @SocketCAN_Types.SocketCAN_write_data.");
+}
+}
+
+void SocketCAN__write__data_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_id.decode_text(text_buf);
+single_value->field_bcm__tx__msg.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 SocketCAN__write__data_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 @SocketCAN_Types.SocketCAN_write_data.");
+}
+}
+
+void SocketCAN__write__data_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: {
+    SocketCAN__write__data_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @SocketCAN_Types.SocketCAN_write_data 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) id().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) bcm__tx__msg().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(), "id")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          id().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(), "bcm_tx_msg")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          bcm__tx__msg().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 @SocketCAN_Types.SocketCAN_write_data: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@SocketCAN_Types.SocketCAN_write_data");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SocketCAN__write__data_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_id.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_write_data");
+single_value->field_bcm__tx__msg.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_write_data");
+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 : "@SocketCAN_Types.SocketCAN_write_data");
+}
+
+boolean SocketCAN__write__data_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SocketCAN__write__data_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+SocketCAN__write__data__result::SocketCAN__write__data__result()
+{
+}
+
+SocketCAN__write__data__result::SocketCAN__write__data__result(const SocketCAN__Result& par_result)
+  :   field_result(par_result)
+{
+}
+
+SocketCAN__write__data__result::SocketCAN__write__data__result(const SocketCAN__write__data__result& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @SocketCAN_Types.SocketCAN_write_data_result.");
+if (other_value.result().is_bound()) field_result = other_value.result();
+else field_result.clean_up();
+}
+
+void SocketCAN__write__data__result::clean_up()
+{
+field_result.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SocketCAN__write__data__result::get_descriptor() const { return &SocketCAN__write__data__result_descr_; }
+SocketCAN__write__data__result& SocketCAN__write__data__result::operator=(const SocketCAN__write__data__result& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @SocketCAN_Types.SocketCAN_write_data_result.");
+  if (other_value.result().is_bound()) field_result = other_value.result();
+  else field_result.clean_up();
+}
+return *this;
+}
+
+boolean SocketCAN__write__data__result::operator==(const SocketCAN__write__data__result& other_value) const
+{
+return field_result==other_value.field_result;
+}
+
+boolean SocketCAN__write__data__result::is_bound() const
+{
+return (field_result.is_bound());
+}
+boolean SocketCAN__write__data__result::is_value() const
+{
+return field_result.is_value();
+}
+void SocketCAN__write__data__result::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ result := ");
+field_result.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SocketCAN__write__data__result::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 (1<param.get_size()) {
+      param.error("record value of type @SocketCAN_Types.SocketCAN_write_data_result has 1 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) result().set_param(*param.get_elem(0));
+    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(), "result")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          result().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 @SocketCAN_Types.SocketCAN_write_data_result: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@SocketCAN_Types.SocketCAN_write_data_result");
+  }
+}
+
+void SocketCAN__write__data__result::set_implicit_omit()
+{
+if (result().is_bound()) result().set_implicit_omit();
+}
+
+void SocketCAN__write__data__result::encode_text(Text_Buf& text_buf) const
+{
+field_result.encode_text(text_buf);
+}
+
+void SocketCAN__write__data__result::decode_text(Text_Buf& text_buf)
+{
+field_result.decode_text(text_buf);
+}
+
+struct SocketCAN__write__data__result_template::single_value_struct {
+SocketCAN__Result_template field_result;
+};
+
+void SocketCAN__write__data__result_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_result = ANY_VALUE;
+}
+}
+}
+
+void SocketCAN__write__data__result_template::copy_value(const SocketCAN__write__data__result& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.result().is_bound()) {
+  single_value->field_result = other_value.result();
+} else {
+  single_value->field_result.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SocketCAN__write__data__result_template::copy_template(const SocketCAN__write__data__result_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.result().get_selection()) {
+single_value->field_result = other_value.result();
+} else {
+single_value->field_result.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SocketCAN__write__data__result_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_write_data_result.");
+break;
+}
+set_selection(other_value);
+}
+
+SocketCAN__write__data__result_template::SocketCAN__write__data__result_template()
+{
+}
+
+SocketCAN__write__data__result_template::SocketCAN__write__data__result_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SocketCAN__write__data__result_template::SocketCAN__write__data__result_template(const SocketCAN__write__data__result& other_value)
+{
+copy_value(other_value);
+}
+
+SocketCAN__write__data__result_template::SocketCAN__write__data__result_template(const OPTIONAL<SocketCAN__write__data__result>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__write__data__result&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @SocketCAN_Types.SocketCAN_write_data_result from an unbound optional field.");
+}
+}
+
+SocketCAN__write__data__result_template::SocketCAN__write__data__result_template(const SocketCAN__write__data__result_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SocketCAN__write__data__result_template::~SocketCAN__write__data__result_template()
+{
+clean_up();
+}
+
+SocketCAN__write__data__result_template& SocketCAN__write__data__result_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SocketCAN__write__data__result_template& SocketCAN__write__data__result_template::operator=(const SocketCAN__write__data__result& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SocketCAN__write__data__result_template& SocketCAN__write__data__result_template::operator=(const OPTIONAL<SocketCAN__write__data__result>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__write__data__result&)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 @SocketCAN_Types.SocketCAN_write_data_result.");
+}
+return *this;
+}
+
+SocketCAN__write__data__result_template& SocketCAN__write__data__result_template::operator=(const SocketCAN__write__data__result_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__write__data__result_template::match(const SocketCAN__write__data__result& 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.result().is_bound()) return FALSE;
+if(!single_value->field_result.match(other_value.result(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_write_data_result.");
+}
+return FALSE;
+}
+
+boolean SocketCAN__write__data__result_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_result.is_bound()
+;
+}
+
+boolean SocketCAN__write__data__result_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_result.is_value();
+}
+
+void SocketCAN__write__data__result_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SocketCAN__write__data__result SocketCAN__write__data__result_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 @SocketCAN_Types.SocketCAN_write_data_result.");
+SocketCAN__write__data__result ret_val;
+if (single_value->field_result.is_bound()) {
+ret_val.result() = single_value->field_result.valueof();
+}
+return ret_val;
+}
+
+void SocketCAN__write__data__result_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @SocketCAN_Types.SocketCAN_write_data_result.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SocketCAN__write__data__result_template[list_length];
+}
+
+SocketCAN__write__data__result_template& SocketCAN__write__data__result_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @SocketCAN_Types.SocketCAN_write_data_result.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @SocketCAN_Types.SocketCAN_write_data_result.");
+return value_list.list_value[list_index];
+}
+
+SocketCAN__Result_template& SocketCAN__write__data__result_template::result()
+{
+set_specific();
+return single_value->field_result;
+}
+
+const SocketCAN__Result_template& SocketCAN__write__data__result_template::result() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field result of a non-specific template of type @SocketCAN_Types.SocketCAN_write_data_result.");
+return single_value->field_result;
+}
+
+int SocketCAN__write__data__result_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_write_data_result which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 1;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_write_data_result 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 @SocketCAN_Types.SocketCAN_write_data_result containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_write_data_result containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_write_data_result containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_write_data_result containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_write_data_result.");
+  }
+  return 0;
+}
+
+void SocketCAN__write__data__result_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ result := ");
+single_value->field_result.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SocketCAN__write__data__result_template::log_match(const SocketCAN__write__data__result& 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_result.match(match_value.result(), legacy)){
+TTCN_Logger::log_logmatch_info(".result");
+single_value->field_result.log_match(match_value.result(), 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("{ result := ");
+single_value->field_result.log_match(match_value.result(), 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 SocketCAN__write__data__result_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_result.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 @SocketCAN_Types.SocketCAN_write_data_result.");
+}
+}
+
+void SocketCAN__write__data__result_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_result.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 SocketCAN__write__data__result_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 @SocketCAN_Types.SocketCAN_write_data_result.");
+}
+}
+
+void SocketCAN__write__data__result_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: {
+    SocketCAN__write__data__result_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (1<param.get_size()) {
+      param.error("record template of type @SocketCAN_Types.SocketCAN_write_data_result has 1 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) result().set_param(*param.get_elem(0));
+    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(), "result")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          result().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 @SocketCAN_Types.SocketCAN_write_data_result: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@SocketCAN_Types.SocketCAN_write_data_result");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SocketCAN__write__data__result_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_result.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_write_data_result");
+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 : "@SocketCAN_Types.SocketCAN_write_data_result");
+}
+
+boolean SocketCAN__write__data__result_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SocketCAN__write__data__result_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+SocketCAN__write__isotp::SocketCAN__write__isotp()
+{
+}
+
+SocketCAN__write__isotp::SocketCAN__write__isotp(const INTEGER& par_id,
+    const OCTETSTRING& par_pdu)
+  :   field_id(par_id),
+  field_pdu(par_pdu)
+{
+}
+
+SocketCAN__write__isotp::SocketCAN__write__isotp(const SocketCAN__write__isotp& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @SocketCAN_Types.SocketCAN_write_isotp.");
+if (other_value.id().is_bound()) field_id = other_value.id();
+else field_id.clean_up();
+if (other_value.pdu().is_bound()) field_pdu = other_value.pdu();
+else field_pdu.clean_up();
+}
+
+void SocketCAN__write__isotp::clean_up()
+{
+field_id.clean_up();
+field_pdu.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SocketCAN__write__isotp::get_descriptor() const { return &SocketCAN__write__isotp_descr_; }
+SocketCAN__write__isotp& SocketCAN__write__isotp::operator=(const SocketCAN__write__isotp& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @SocketCAN_Types.SocketCAN_write_isotp.");
+  if (other_value.id().is_bound()) field_id = other_value.id();
+  else field_id.clean_up();
+  if (other_value.pdu().is_bound()) field_pdu = other_value.pdu();
+  else field_pdu.clean_up();
+}
+return *this;
+}
+
+boolean SocketCAN__write__isotp::operator==(const SocketCAN__write__isotp& other_value) const
+{
+return field_id==other_value.field_id
+  && field_pdu==other_value.field_pdu;
+}
+
+boolean SocketCAN__write__isotp::is_bound() const
+{
+return (field_id.is_bound())
+  || (field_pdu.is_bound());
+}
+boolean SocketCAN__write__isotp::is_value() const
+{
+return field_id.is_value()
+  && field_pdu.is_value();
+}
+void SocketCAN__write__isotp::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ id := ");
+field_id.log();
+TTCN_Logger::log_event_str(", pdu := ");
+field_pdu.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SocketCAN__write__isotp::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 @SocketCAN_Types.SocketCAN_write_isotp 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) id().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) pdu().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(), "id")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          id().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(), "pdu")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          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 @SocketCAN_Types.SocketCAN_write_isotp: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@SocketCAN_Types.SocketCAN_write_isotp");
+  }
+}
+
+void SocketCAN__write__isotp::set_implicit_omit()
+{
+if (id().is_bound()) id().set_implicit_omit();
+if (pdu().is_bound()) pdu().set_implicit_omit();
+}
+
+void SocketCAN__write__isotp::encode_text(Text_Buf& text_buf) const
+{
+field_id.encode_text(text_buf);
+field_pdu.encode_text(text_buf);
+}
+
+void SocketCAN__write__isotp::decode_text(Text_Buf& text_buf)
+{
+field_id.decode_text(text_buf);
+field_pdu.decode_text(text_buf);
+}
+
+struct SocketCAN__write__isotp_template::single_value_struct {
+INTEGER_template field_id;
+OCTETSTRING_template field_pdu;
+};
+
+void SocketCAN__write__isotp_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_id = ANY_VALUE;
+single_value->field_pdu = ANY_VALUE;
+}
+}
+}
+
+void SocketCAN__write__isotp_template::copy_value(const SocketCAN__write__isotp& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.id().is_bound()) {
+  single_value->field_id = other_value.id();
+} else {
+  single_value->field_id.clean_up();
+}
+if (other_value.pdu().is_bound()) {
+  single_value->field_pdu = other_value.pdu();
+} else {
+  single_value->field_pdu.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SocketCAN__write__isotp_template::copy_template(const SocketCAN__write__isotp_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.id().get_selection()) {
+single_value->field_id = other_value.id();
+} else {
+single_value->field_id.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.pdu().get_selection()) {
+single_value->field_pdu = other_value.pdu();
+} else {
+single_value->field_pdu.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SocketCAN__write__isotp_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_write_isotp.");
+break;
+}
+set_selection(other_value);
+}
+
+SocketCAN__write__isotp_template::SocketCAN__write__isotp_template()
+{
+}
+
+SocketCAN__write__isotp_template::SocketCAN__write__isotp_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SocketCAN__write__isotp_template::SocketCAN__write__isotp_template(const SocketCAN__write__isotp& other_value)
+{
+copy_value(other_value);
+}
+
+SocketCAN__write__isotp_template::SocketCAN__write__isotp_template(const OPTIONAL<SocketCAN__write__isotp>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__write__isotp&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @SocketCAN_Types.SocketCAN_write_isotp from an unbound optional field.");
+}
+}
+
+SocketCAN__write__isotp_template::SocketCAN__write__isotp_template(const SocketCAN__write__isotp_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SocketCAN__write__isotp_template::~SocketCAN__write__isotp_template()
+{
+clean_up();
+}
+
+SocketCAN__write__isotp_template& SocketCAN__write__isotp_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SocketCAN__write__isotp_template& SocketCAN__write__isotp_template::operator=(const SocketCAN__write__isotp& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SocketCAN__write__isotp_template& SocketCAN__write__isotp_template::operator=(const OPTIONAL<SocketCAN__write__isotp>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__write__isotp&)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 @SocketCAN_Types.SocketCAN_write_isotp.");
+}
+return *this;
+}
+
+SocketCAN__write__isotp_template& SocketCAN__write__isotp_template::operator=(const SocketCAN__write__isotp_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__write__isotp_template::match(const SocketCAN__write__isotp& 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.id().is_bound()) return FALSE;
+if(!single_value->field_id.match(other_value.id(), legacy))return FALSE;
+if(!other_value.pdu().is_bound()) return FALSE;
+if(!single_value->field_pdu.match(other_value.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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_write_isotp.");
+}
+return FALSE;
+}
+
+boolean SocketCAN__write__isotp_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_id.is_bound()
+
+ ||single_value->field_pdu.is_bound()
+;
+}
+
+boolean SocketCAN__write__isotp_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_id.is_value()
+ &&single_value->field_pdu.is_value();
+}
+
+void SocketCAN__write__isotp_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SocketCAN__write__isotp SocketCAN__write__isotp_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 @SocketCAN_Types.SocketCAN_write_isotp.");
+SocketCAN__write__isotp ret_val;
+if (single_value->field_id.is_bound()) {
+ret_val.id() = single_value->field_id.valueof();
+}
+if (single_value->field_pdu.is_bound()) {
+ret_val.pdu() = single_value->field_pdu.valueof();
+}
+return ret_val;
+}
+
+void SocketCAN__write__isotp_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @SocketCAN_Types.SocketCAN_write_isotp.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SocketCAN__write__isotp_template[list_length];
+}
+
+SocketCAN__write__isotp_template& SocketCAN__write__isotp_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @SocketCAN_Types.SocketCAN_write_isotp.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @SocketCAN_Types.SocketCAN_write_isotp.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& SocketCAN__write__isotp_template::id()
+{
+set_specific();
+return single_value->field_id;
+}
+
+const INTEGER_template& SocketCAN__write__isotp_template::id() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field id of a non-specific template of type @SocketCAN_Types.SocketCAN_write_isotp.");
+return single_value->field_id;
+}
+
+OCTETSTRING_template& SocketCAN__write__isotp_template::pdu()
+{
+set_specific();
+return single_value->field_pdu;
+}
+
+const OCTETSTRING_template& SocketCAN__write__isotp_template::pdu() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field pdu of a non-specific template of type @SocketCAN_Types.SocketCAN_write_isotp.");
+return single_value->field_pdu;
+}
+
+int SocketCAN__write__isotp_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_write_isotp 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 @SocketCAN_Types.SocketCAN_write_isotp 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 @SocketCAN_Types.SocketCAN_write_isotp containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_write_isotp containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_write_isotp containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_write_isotp containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_write_isotp.");
+  }
+  return 0;
+}
+
+void SocketCAN__write__isotp_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ id := ");
+single_value->field_id.log();
+TTCN_Logger::log_event_str(", pdu := ");
+single_value->field_pdu.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SocketCAN__write__isotp_template::log_match(const SocketCAN__write__isotp& 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_id.match(match_value.id(), legacy)){
+TTCN_Logger::log_logmatch_info(".id");
+single_value->field_id.log_match(match_value.id(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_pdu.match(match_value.pdu(), legacy)){
+TTCN_Logger::log_logmatch_info(".pdu");
+single_value->field_pdu.log_match(match_value.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("{ id := ");
+single_value->field_id.log_match(match_value.id(), legacy);
+TTCN_Logger::log_event_str(", pdu := ");
+single_value->field_pdu.log_match(match_value.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 SocketCAN__write__isotp_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_id.encode_text(text_buf);
+single_value->field_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 @SocketCAN_Types.SocketCAN_write_isotp.");
+}
+}
+
+void SocketCAN__write__isotp_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_id.decode_text(text_buf);
+single_value->field_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 SocketCAN__write__isotp_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 @SocketCAN_Types.SocketCAN_write_isotp.");
+}
+}
+
+void SocketCAN__write__isotp_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: {
+    SocketCAN__write__isotp_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @SocketCAN_Types.SocketCAN_write_isotp 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) id().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) pdu().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(), "id")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          id().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(), "pdu")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          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 @SocketCAN_Types.SocketCAN_write_isotp: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@SocketCAN_Types.SocketCAN_write_isotp");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SocketCAN__write__isotp_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_id.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_write_isotp");
+single_value->field_pdu.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_write_isotp");
+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 : "@SocketCAN_Types.SocketCAN_write_isotp");
+}
+
+boolean SocketCAN__write__isotp_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SocketCAN__write__isotp_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+SocketCAN__write__isotp__result::SocketCAN__write__isotp__result()
+{
+}
+
+SocketCAN__write__isotp__result::SocketCAN__write__isotp__result(const SocketCAN__Result& par_result)
+  :   field_result(par_result)
+{
+}
+
+SocketCAN__write__isotp__result::SocketCAN__write__isotp__result(const SocketCAN__write__isotp__result& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @SocketCAN_Types.SocketCAN_write_isotp_result.");
+if (other_value.result().is_bound()) field_result = other_value.result();
+else field_result.clean_up();
+}
+
+void SocketCAN__write__isotp__result::clean_up()
+{
+field_result.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SocketCAN__write__isotp__result::get_descriptor() const { return &SocketCAN__write__isotp__result_descr_; }
+SocketCAN__write__isotp__result& SocketCAN__write__isotp__result::operator=(const SocketCAN__write__isotp__result& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @SocketCAN_Types.SocketCAN_write_isotp_result.");
+  if (other_value.result().is_bound()) field_result = other_value.result();
+  else field_result.clean_up();
+}
+return *this;
+}
+
+boolean SocketCAN__write__isotp__result::operator==(const SocketCAN__write__isotp__result& other_value) const
+{
+return field_result==other_value.field_result;
+}
+
+boolean SocketCAN__write__isotp__result::is_bound() const
+{
+return (field_result.is_bound());
+}
+boolean SocketCAN__write__isotp__result::is_value() const
+{
+return field_result.is_value();
+}
+void SocketCAN__write__isotp__result::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ result := ");
+field_result.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SocketCAN__write__isotp__result::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 (1<param.get_size()) {
+      param.error("record value of type @SocketCAN_Types.SocketCAN_write_isotp_result has 1 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) result().set_param(*param.get_elem(0));
+    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(), "result")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          result().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 @SocketCAN_Types.SocketCAN_write_isotp_result: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@SocketCAN_Types.SocketCAN_write_isotp_result");
+  }
+}
+
+void SocketCAN__write__isotp__result::set_implicit_omit()
+{
+if (result().is_bound()) result().set_implicit_omit();
+}
+
+void SocketCAN__write__isotp__result::encode_text(Text_Buf& text_buf) const
+{
+field_result.encode_text(text_buf);
+}
+
+void SocketCAN__write__isotp__result::decode_text(Text_Buf& text_buf)
+{
+field_result.decode_text(text_buf);
+}
+
+struct SocketCAN__write__isotp__result_template::single_value_struct {
+SocketCAN__Result_template field_result;
+};
+
+void SocketCAN__write__isotp__result_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_result = ANY_VALUE;
+}
+}
+}
+
+void SocketCAN__write__isotp__result_template::copy_value(const SocketCAN__write__isotp__result& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.result().is_bound()) {
+  single_value->field_result = other_value.result();
+} else {
+  single_value->field_result.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SocketCAN__write__isotp__result_template::copy_template(const SocketCAN__write__isotp__result_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.result().get_selection()) {
+single_value->field_result = other_value.result();
+} else {
+single_value->field_result.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SocketCAN__write__isotp__result_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_write_isotp_result.");
+break;
+}
+set_selection(other_value);
+}
+
+SocketCAN__write__isotp__result_template::SocketCAN__write__isotp__result_template()
+{
+}
+
+SocketCAN__write__isotp__result_template::SocketCAN__write__isotp__result_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SocketCAN__write__isotp__result_template::SocketCAN__write__isotp__result_template(const SocketCAN__write__isotp__result& other_value)
+{
+copy_value(other_value);
+}
+
+SocketCAN__write__isotp__result_template::SocketCAN__write__isotp__result_template(const OPTIONAL<SocketCAN__write__isotp__result>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__write__isotp__result&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @SocketCAN_Types.SocketCAN_write_isotp_result from an unbound optional field.");
+}
+}
+
+SocketCAN__write__isotp__result_template::SocketCAN__write__isotp__result_template(const SocketCAN__write__isotp__result_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SocketCAN__write__isotp__result_template::~SocketCAN__write__isotp__result_template()
+{
+clean_up();
+}
+
+SocketCAN__write__isotp__result_template& SocketCAN__write__isotp__result_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SocketCAN__write__isotp__result_template& SocketCAN__write__isotp__result_template::operator=(const SocketCAN__write__isotp__result& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SocketCAN__write__isotp__result_template& SocketCAN__write__isotp__result_template::operator=(const OPTIONAL<SocketCAN__write__isotp__result>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__write__isotp__result&)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 @SocketCAN_Types.SocketCAN_write_isotp_result.");
+}
+return *this;
+}
+
+SocketCAN__write__isotp__result_template& SocketCAN__write__isotp__result_template::operator=(const SocketCAN__write__isotp__result_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__write__isotp__result_template::match(const SocketCAN__write__isotp__result& 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.result().is_bound()) return FALSE;
+if(!single_value->field_result.match(other_value.result(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_write_isotp_result.");
+}
+return FALSE;
+}
+
+boolean SocketCAN__write__isotp__result_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_result.is_bound()
+;
+}
+
+boolean SocketCAN__write__isotp__result_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_result.is_value();
+}
+
+void SocketCAN__write__isotp__result_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SocketCAN__write__isotp__result SocketCAN__write__isotp__result_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 @SocketCAN_Types.SocketCAN_write_isotp_result.");
+SocketCAN__write__isotp__result ret_val;
+if (single_value->field_result.is_bound()) {
+ret_val.result() = single_value->field_result.valueof();
+}
+return ret_val;
+}
+
+void SocketCAN__write__isotp__result_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @SocketCAN_Types.SocketCAN_write_isotp_result.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SocketCAN__write__isotp__result_template[list_length];
+}
+
+SocketCAN__write__isotp__result_template& SocketCAN__write__isotp__result_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @SocketCAN_Types.SocketCAN_write_isotp_result.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @SocketCAN_Types.SocketCAN_write_isotp_result.");
+return value_list.list_value[list_index];
+}
+
+SocketCAN__Result_template& SocketCAN__write__isotp__result_template::result()
+{
+set_specific();
+return single_value->field_result;
+}
+
+const SocketCAN__Result_template& SocketCAN__write__isotp__result_template::result() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field result of a non-specific template of type @SocketCAN_Types.SocketCAN_write_isotp_result.");
+return single_value->field_result;
+}
+
+int SocketCAN__write__isotp__result_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_write_isotp_result which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 1;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_write_isotp_result 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 @SocketCAN_Types.SocketCAN_write_isotp_result containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_write_isotp_result containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_write_isotp_result containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_write_isotp_result containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_write_isotp_result.");
+  }
+  return 0;
+}
+
+void SocketCAN__write__isotp__result_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ result := ");
+single_value->field_result.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SocketCAN__write__isotp__result_template::log_match(const SocketCAN__write__isotp__result& 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_result.match(match_value.result(), legacy)){
+TTCN_Logger::log_logmatch_info(".result");
+single_value->field_result.log_match(match_value.result(), 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("{ result := ");
+single_value->field_result.log_match(match_value.result(), 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 SocketCAN__write__isotp__result_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_result.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 @SocketCAN_Types.SocketCAN_write_isotp_result.");
+}
+}
+
+void SocketCAN__write__isotp__result_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_result.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 SocketCAN__write__isotp__result_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 @SocketCAN_Types.SocketCAN_write_isotp_result.");
+}
+}
+
+void SocketCAN__write__isotp__result_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: {
+    SocketCAN__write__isotp__result_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (1<param.get_size()) {
+      param.error("record template of type @SocketCAN_Types.SocketCAN_write_isotp_result has 1 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) result().set_param(*param.get_elem(0));
+    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(), "result")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          result().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 @SocketCAN_Types.SocketCAN_write_isotp_result: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@SocketCAN_Types.SocketCAN_write_isotp_result");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SocketCAN__write__isotp__result_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_result.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_write_isotp_result");
+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 : "@SocketCAN_Types.SocketCAN_write_isotp_result");
+}
+
+boolean SocketCAN__write__isotp__result_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SocketCAN__write__isotp__result_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+SocketCAN__receive__CAN__or__CAN__FD__frame::SocketCAN__receive__CAN__or__CAN__FD__frame()
+{
+}
+
+SocketCAN__receive__CAN__or__CAN__FD__frame::SocketCAN__receive__CAN__or__CAN__FD__frame(const INTEGER& par_id,
+    const SocketCAN__ifr& par_ifr,
+    const SocketCAN__CAN__or__CAN__FD__frame& par_frame,
+    const SocketCAN__timeval& par_timestamp)
+  :   field_id(par_id),
+  field_ifr(par_ifr),
+  field_frame(par_frame),
+  field_timestamp(par_timestamp)
+{
+}
+
+SocketCAN__receive__CAN__or__CAN__FD__frame::SocketCAN__receive__CAN__or__CAN__FD__frame(const SocketCAN__receive__CAN__or__CAN__FD__frame& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame.");
+if (other_value.id().is_bound()) field_id = other_value.id();
+else field_id.clean_up();
+if (other_value.ifr().is_bound()) field_ifr = other_value.ifr();
+else field_ifr.clean_up();
+if (other_value.frame().is_bound()) field_frame = other_value.frame();
+else field_frame.clean_up();
+if (other_value.timestamp().is_bound()) field_timestamp = other_value.timestamp();
+else field_timestamp.clean_up();
+}
+
+void SocketCAN__receive__CAN__or__CAN__FD__frame::clean_up()
+{
+field_id.clean_up();
+field_ifr.clean_up();
+field_frame.clean_up();
+field_timestamp.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SocketCAN__receive__CAN__or__CAN__FD__frame::get_descriptor() const { return &SocketCAN__receive__CAN__or__CAN__FD__frame_descr_; }
+SocketCAN__receive__CAN__or__CAN__FD__frame& SocketCAN__receive__CAN__or__CAN__FD__frame::operator=(const SocketCAN__receive__CAN__or__CAN__FD__frame& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame.");
+  if (other_value.id().is_bound()) field_id = other_value.id();
+  else field_id.clean_up();
+  if (other_value.ifr().is_bound()) field_ifr = other_value.ifr();
+  else field_ifr.clean_up();
+  if (other_value.frame().is_bound()) field_frame = other_value.frame();
+  else field_frame.clean_up();
+  if (other_value.timestamp().is_bound()) field_timestamp = other_value.timestamp();
+  else field_timestamp.clean_up();
+}
+return *this;
+}
+
+boolean SocketCAN__receive__CAN__or__CAN__FD__frame::operator==(const SocketCAN__receive__CAN__or__CAN__FD__frame& other_value) const
+{
+return field_id==other_value.field_id
+  && field_ifr==other_value.field_ifr
+  && field_frame==other_value.field_frame
+  && field_timestamp==other_value.field_timestamp;
+}
+
+boolean SocketCAN__receive__CAN__or__CAN__FD__frame::is_bound() const
+{
+return (field_id.is_bound())
+  || (field_ifr.is_bound())
+  || (field_frame.is_bound())
+  || (field_timestamp.is_bound());
+}
+boolean SocketCAN__receive__CAN__or__CAN__FD__frame::is_value() const
+{
+return field_id.is_value()
+  && field_ifr.is_value()
+  && field_frame.is_value()
+  && field_timestamp.is_value();
+}
+void SocketCAN__receive__CAN__or__CAN__FD__frame::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ id := ");
+field_id.log();
+TTCN_Logger::log_event_str(", ifr := ");
+field_ifr.log();
+TTCN_Logger::log_event_str(", frame := ");
+field_frame.log();
+TTCN_Logger::log_event_str(", timestamp := ");
+field_timestamp.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SocketCAN__receive__CAN__or__CAN__FD__frame::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 @SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame 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) id().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ifr().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) frame().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) timestamp().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(), "id")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          id().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(), "ifr")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ifr().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(), "frame")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          frame().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(), "timestamp")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          timestamp().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 @SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame");
+  }
+}
+
+void SocketCAN__receive__CAN__or__CAN__FD__frame::set_implicit_omit()
+{
+if (id().is_bound()) id().set_implicit_omit();
+if (ifr().is_bound()) ifr().set_implicit_omit();
+if (frame().is_bound()) frame().set_implicit_omit();
+if (timestamp().is_bound()) timestamp().set_implicit_omit();
+}
+
+void SocketCAN__receive__CAN__or__CAN__FD__frame::encode_text(Text_Buf& text_buf) const
+{
+field_id.encode_text(text_buf);
+field_ifr.encode_text(text_buf);
+field_frame.encode_text(text_buf);
+field_timestamp.encode_text(text_buf);
+}
+
+void SocketCAN__receive__CAN__or__CAN__FD__frame::decode_text(Text_Buf& text_buf)
+{
+field_id.decode_text(text_buf);
+field_ifr.decode_text(text_buf);
+field_frame.decode_text(text_buf);
+field_timestamp.decode_text(text_buf);
+}
+
+struct SocketCAN__receive__CAN__or__CAN__FD__frame_template::single_value_struct {
+INTEGER_template field_id;
+SocketCAN__ifr_template field_ifr;
+SocketCAN__CAN__or__CAN__FD__frame_template field_frame;
+SocketCAN__timeval_template field_timestamp;
+};
+
+void SocketCAN__receive__CAN__or__CAN__FD__frame_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_id = ANY_VALUE;
+single_value->field_ifr = ANY_VALUE;
+single_value->field_frame = ANY_VALUE;
+single_value->field_timestamp = ANY_VALUE;
+}
+}
+}
+
+void SocketCAN__receive__CAN__or__CAN__FD__frame_template::copy_value(const SocketCAN__receive__CAN__or__CAN__FD__frame& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.id().is_bound()) {
+  single_value->field_id = other_value.id();
+} else {
+  single_value->field_id.clean_up();
+}
+if (other_value.ifr().is_bound()) {
+  single_value->field_ifr = other_value.ifr();
+} else {
+  single_value->field_ifr.clean_up();
+}
+if (other_value.frame().is_bound()) {
+  single_value->field_frame = other_value.frame();
+} else {
+  single_value->field_frame.clean_up();
+}
+if (other_value.timestamp().is_bound()) {
+  single_value->field_timestamp = other_value.timestamp();
+} else {
+  single_value->field_timestamp.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SocketCAN__receive__CAN__or__CAN__FD__frame_template::copy_template(const SocketCAN__receive__CAN__or__CAN__FD__frame_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.id().get_selection()) {
+single_value->field_id = other_value.id();
+} else {
+single_value->field_id.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.ifr().get_selection()) {
+single_value->field_ifr = other_value.ifr();
+} else {
+single_value->field_ifr.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.frame().get_selection()) {
+single_value->field_frame = other_value.frame();
+} else {
+single_value->field_frame.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.timestamp().get_selection()) {
+single_value->field_timestamp = other_value.timestamp();
+} else {
+single_value->field_timestamp.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SocketCAN__receive__CAN__or__CAN__FD__frame_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame.");
+break;
+}
+set_selection(other_value);
+}
+
+SocketCAN__receive__CAN__or__CAN__FD__frame_template::SocketCAN__receive__CAN__or__CAN__FD__frame_template()
+{
+}
+
+SocketCAN__receive__CAN__or__CAN__FD__frame_template::SocketCAN__receive__CAN__or__CAN__FD__frame_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SocketCAN__receive__CAN__or__CAN__FD__frame_template::SocketCAN__receive__CAN__or__CAN__FD__frame_template(const SocketCAN__receive__CAN__or__CAN__FD__frame& other_value)
+{
+copy_value(other_value);
+}
+
+SocketCAN__receive__CAN__or__CAN__FD__frame_template::SocketCAN__receive__CAN__or__CAN__FD__frame_template(const OPTIONAL<SocketCAN__receive__CAN__or__CAN__FD__frame>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__receive__CAN__or__CAN__FD__frame&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame from an unbound optional field.");
+}
+}
+
+SocketCAN__receive__CAN__or__CAN__FD__frame_template::SocketCAN__receive__CAN__or__CAN__FD__frame_template(const SocketCAN__receive__CAN__or__CAN__FD__frame_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SocketCAN__receive__CAN__or__CAN__FD__frame_template::~SocketCAN__receive__CAN__or__CAN__FD__frame_template()
+{
+clean_up();
+}
+
+SocketCAN__receive__CAN__or__CAN__FD__frame_template& SocketCAN__receive__CAN__or__CAN__FD__frame_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SocketCAN__receive__CAN__or__CAN__FD__frame_template& SocketCAN__receive__CAN__or__CAN__FD__frame_template::operator=(const SocketCAN__receive__CAN__or__CAN__FD__frame& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SocketCAN__receive__CAN__or__CAN__FD__frame_template& SocketCAN__receive__CAN__or__CAN__FD__frame_template::operator=(const OPTIONAL<SocketCAN__receive__CAN__or__CAN__FD__frame>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__receive__CAN__or__CAN__FD__frame&)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 @SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame.");
+}
+return *this;
+}
+
+SocketCAN__receive__CAN__or__CAN__FD__frame_template& SocketCAN__receive__CAN__or__CAN__FD__frame_template::operator=(const SocketCAN__receive__CAN__or__CAN__FD__frame_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__receive__CAN__or__CAN__FD__frame_template::match(const SocketCAN__receive__CAN__or__CAN__FD__frame& 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.id().is_bound()) return FALSE;
+if(!single_value->field_id.match(other_value.id(), legacy))return FALSE;
+if(!other_value.ifr().is_bound()) return FALSE;
+if(!single_value->field_ifr.match(other_value.ifr(), legacy))return FALSE;
+if(!other_value.frame().is_bound()) return FALSE;
+if(!single_value->field_frame.match(other_value.frame(), legacy))return FALSE;
+if(!other_value.timestamp().is_bound()) return FALSE;
+if(!single_value->field_timestamp.match(other_value.timestamp(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame.");
+}
+return FALSE;
+}
+
+boolean SocketCAN__receive__CAN__or__CAN__FD__frame_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_id.is_bound()
+
+ ||single_value->field_ifr.is_bound()
+
+ ||single_value->field_frame.is_bound()
+
+ ||single_value->field_timestamp.is_bound()
+;
+}
+
+boolean SocketCAN__receive__CAN__or__CAN__FD__frame_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_id.is_value()
+ &&single_value->field_ifr.is_value()
+ &&single_value->field_frame.is_value()
+ &&single_value->field_timestamp.is_value();
+}
+
+void SocketCAN__receive__CAN__or__CAN__FD__frame_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SocketCAN__receive__CAN__or__CAN__FD__frame SocketCAN__receive__CAN__or__CAN__FD__frame_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 @SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame.");
+SocketCAN__receive__CAN__or__CAN__FD__frame ret_val;
+if (single_value->field_id.is_bound()) {
+ret_val.id() = single_value->field_id.valueof();
+}
+if (single_value->field_ifr.is_bound()) {
+ret_val.ifr() = single_value->field_ifr.valueof();
+}
+if (single_value->field_frame.is_bound()) {
+ret_val.frame() = single_value->field_frame.valueof();
+}
+if (single_value->field_timestamp.is_bound()) {
+ret_val.timestamp() = single_value->field_timestamp.valueof();
+}
+return ret_val;
+}
+
+void SocketCAN__receive__CAN__or__CAN__FD__frame_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SocketCAN__receive__CAN__or__CAN__FD__frame_template[list_length];
+}
+
+SocketCAN__receive__CAN__or__CAN__FD__frame_template& SocketCAN__receive__CAN__or__CAN__FD__frame_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& SocketCAN__receive__CAN__or__CAN__FD__frame_template::id()
+{
+set_specific();
+return single_value->field_id;
+}
+
+const INTEGER_template& SocketCAN__receive__CAN__or__CAN__FD__frame_template::id() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field id of a non-specific template of type @SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame.");
+return single_value->field_id;
+}
+
+SocketCAN__ifr_template& SocketCAN__receive__CAN__or__CAN__FD__frame_template::ifr()
+{
+set_specific();
+return single_value->field_ifr;
+}
+
+const SocketCAN__ifr_template& SocketCAN__receive__CAN__or__CAN__FD__frame_template::ifr() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field ifr of a non-specific template of type @SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame.");
+return single_value->field_ifr;
+}
+
+SocketCAN__CAN__or__CAN__FD__frame_template& SocketCAN__receive__CAN__or__CAN__FD__frame_template::frame()
+{
+set_specific();
+return single_value->field_frame;
+}
+
+const SocketCAN__CAN__or__CAN__FD__frame_template& SocketCAN__receive__CAN__or__CAN__FD__frame_template::frame() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field frame of a non-specific template of type @SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame.");
+return single_value->field_frame;
+}
+
+SocketCAN__timeval_template& SocketCAN__receive__CAN__or__CAN__FD__frame_template::timestamp()
+{
+set_specific();
+return single_value->field_timestamp;
+}
+
+const SocketCAN__timeval_template& SocketCAN__receive__CAN__or__CAN__FD__frame_template::timestamp() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field timestamp of a non-specific template of type @SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame.");
+return single_value->field_timestamp;
+}
+
+int SocketCAN__receive__CAN__or__CAN__FD__frame_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame 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 @SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame 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 @SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame.");
+  }
+  return 0;
+}
+
+void SocketCAN__receive__CAN__or__CAN__FD__frame_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ id := ");
+single_value->field_id.log();
+TTCN_Logger::log_event_str(", ifr := ");
+single_value->field_ifr.log();
+TTCN_Logger::log_event_str(", frame := ");
+single_value->field_frame.log();
+TTCN_Logger::log_event_str(", timestamp := ");
+single_value->field_timestamp.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SocketCAN__receive__CAN__or__CAN__FD__frame_template::log_match(const SocketCAN__receive__CAN__or__CAN__FD__frame& 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_id.match(match_value.id(), legacy)){
+TTCN_Logger::log_logmatch_info(".id");
+single_value->field_id.log_match(match_value.id(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_ifr.match(match_value.ifr(), legacy)){
+TTCN_Logger::log_logmatch_info(".ifr");
+single_value->field_ifr.log_match(match_value.ifr(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_frame.match(match_value.frame(), legacy)){
+TTCN_Logger::log_logmatch_info(".frame");
+single_value->field_frame.log_match(match_value.frame(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_timestamp.match(match_value.timestamp(), legacy)){
+TTCN_Logger::log_logmatch_info(".timestamp");
+single_value->field_timestamp.log_match(match_value.timestamp(), 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("{ id := ");
+single_value->field_id.log_match(match_value.id(), legacy);
+TTCN_Logger::log_event_str(", ifr := ");
+single_value->field_ifr.log_match(match_value.ifr(), legacy);
+TTCN_Logger::log_event_str(", frame := ");
+single_value->field_frame.log_match(match_value.frame(), legacy);
+TTCN_Logger::log_event_str(", timestamp := ");
+single_value->field_timestamp.log_match(match_value.timestamp(), 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 SocketCAN__receive__CAN__or__CAN__FD__frame_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_id.encode_text(text_buf);
+single_value->field_ifr.encode_text(text_buf);
+single_value->field_frame.encode_text(text_buf);
+single_value->field_timestamp.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 @SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame.");
+}
+}
+
+void SocketCAN__receive__CAN__or__CAN__FD__frame_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_id.decode_text(text_buf);
+single_value->field_ifr.decode_text(text_buf);
+single_value->field_frame.decode_text(text_buf);
+single_value->field_timestamp.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 SocketCAN__receive__CAN__or__CAN__FD__frame_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 @SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame.");
+}
+}
+
+void SocketCAN__receive__CAN__or__CAN__FD__frame_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: {
+    SocketCAN__receive__CAN__or__CAN__FD__frame_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame 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) id().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ifr().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) frame().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) timestamp().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(), "id")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          id().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(), "ifr")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ifr().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(), "frame")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          frame().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(), "timestamp")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          timestamp().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 @SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SocketCAN__receive__CAN__or__CAN__FD__frame_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_id.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame");
+single_value->field_ifr.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame");
+single_value->field_frame.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame");
+single_value->field_timestamp.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame");
+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 : "@SocketCAN_Types.SocketCAN_receive_CAN_or_CAN_FD_frame");
+}
+
+boolean SocketCAN__receive__CAN__or__CAN__FD__frame_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SocketCAN__receive__CAN__or__CAN__FD__frame_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+SocketCAN__receive__BCM__message::SocketCAN__receive__BCM__message()
+{
+}
+
+SocketCAN__receive__BCM__message::SocketCAN__receive__BCM__message(const INTEGER& par_id,
+    const SocketCAN__ifr& par_ifr,
+    const Bcm::SocketCAN__bcm__frame& par_frame)
+  :   field_id(par_id),
+  field_ifr(par_ifr),
+  field_frame(par_frame)
+{
+}
+
+SocketCAN__receive__BCM__message::SocketCAN__receive__BCM__message(const SocketCAN__receive__BCM__message& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @SocketCAN_Types.SocketCAN_receive_BCM_message.");
+if (other_value.id().is_bound()) field_id = other_value.id();
+else field_id.clean_up();
+if (other_value.ifr().is_bound()) field_ifr = other_value.ifr();
+else field_ifr.clean_up();
+if (other_value.frame().is_bound()) field_frame = other_value.frame();
+else field_frame.clean_up();
+}
+
+void SocketCAN__receive__BCM__message::clean_up()
+{
+field_id.clean_up();
+field_ifr.clean_up();
+field_frame.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SocketCAN__receive__BCM__message::get_descriptor() const { return &SocketCAN__receive__BCM__message_descr_; }
+SocketCAN__receive__BCM__message& SocketCAN__receive__BCM__message::operator=(const SocketCAN__receive__BCM__message& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @SocketCAN_Types.SocketCAN_receive_BCM_message.");
+  if (other_value.id().is_bound()) field_id = other_value.id();
+  else field_id.clean_up();
+  if (other_value.ifr().is_bound()) field_ifr = other_value.ifr();
+  else field_ifr.clean_up();
+  if (other_value.frame().is_bound()) field_frame = other_value.frame();
+  else field_frame.clean_up();
+}
+return *this;
+}
+
+boolean SocketCAN__receive__BCM__message::operator==(const SocketCAN__receive__BCM__message& other_value) const
+{
+return field_id==other_value.field_id
+  && field_ifr==other_value.field_ifr
+  && field_frame==other_value.field_frame;
+}
+
+boolean SocketCAN__receive__BCM__message::is_bound() const
+{
+return (field_id.is_bound())
+  || (field_ifr.is_bound())
+  || (field_frame.is_bound());
+}
+boolean SocketCAN__receive__BCM__message::is_value() const
+{
+return field_id.is_value()
+  && field_ifr.is_value()
+  && field_frame.is_value();
+}
+void SocketCAN__receive__BCM__message::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ id := ");
+field_id.log();
+TTCN_Logger::log_event_str(", ifr := ");
+field_ifr.log();
+TTCN_Logger::log_event_str(", frame := ");
+field_frame.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SocketCAN__receive__BCM__message::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 @SocketCAN_Types.SocketCAN_receive_BCM_message 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) id().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ifr().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) frame().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(), "id")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          id().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(), "ifr")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ifr().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(), "frame")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          frame().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 @SocketCAN_Types.SocketCAN_receive_BCM_message: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@SocketCAN_Types.SocketCAN_receive_BCM_message");
+  }
+}
+
+void SocketCAN__receive__BCM__message::set_implicit_omit()
+{
+if (id().is_bound()) id().set_implicit_omit();
+if (ifr().is_bound()) ifr().set_implicit_omit();
+if (frame().is_bound()) frame().set_implicit_omit();
+}
+
+void SocketCAN__receive__BCM__message::encode_text(Text_Buf& text_buf) const
+{
+field_id.encode_text(text_buf);
+field_ifr.encode_text(text_buf);
+field_frame.encode_text(text_buf);
+}
+
+void SocketCAN__receive__BCM__message::decode_text(Text_Buf& text_buf)
+{
+field_id.decode_text(text_buf);
+field_ifr.decode_text(text_buf);
+field_frame.decode_text(text_buf);
+}
+
+struct SocketCAN__receive__BCM__message_template::single_value_struct {
+INTEGER_template field_id;
+SocketCAN__ifr_template field_ifr;
+Bcm::SocketCAN__bcm__frame_template field_frame;
+};
+
+void SocketCAN__receive__BCM__message_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_id = ANY_VALUE;
+single_value->field_ifr = ANY_VALUE;
+single_value->field_frame = ANY_VALUE;
+}
+}
+}
+
+void SocketCAN__receive__BCM__message_template::copy_value(const SocketCAN__receive__BCM__message& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.id().is_bound()) {
+  single_value->field_id = other_value.id();
+} else {
+  single_value->field_id.clean_up();
+}
+if (other_value.ifr().is_bound()) {
+  single_value->field_ifr = other_value.ifr();
+} else {
+  single_value->field_ifr.clean_up();
+}
+if (other_value.frame().is_bound()) {
+  single_value->field_frame = other_value.frame();
+} else {
+  single_value->field_frame.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SocketCAN__receive__BCM__message_template::copy_template(const SocketCAN__receive__BCM__message_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.id().get_selection()) {
+single_value->field_id = other_value.id();
+} else {
+single_value->field_id.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.ifr().get_selection()) {
+single_value->field_ifr = other_value.ifr();
+} else {
+single_value->field_ifr.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.frame().get_selection()) {
+single_value->field_frame = other_value.frame();
+} else {
+single_value->field_frame.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SocketCAN__receive__BCM__message_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_receive_BCM_message.");
+break;
+}
+set_selection(other_value);
+}
+
+SocketCAN__receive__BCM__message_template::SocketCAN__receive__BCM__message_template()
+{
+}
+
+SocketCAN__receive__BCM__message_template::SocketCAN__receive__BCM__message_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SocketCAN__receive__BCM__message_template::SocketCAN__receive__BCM__message_template(const SocketCAN__receive__BCM__message& other_value)
+{
+copy_value(other_value);
+}
+
+SocketCAN__receive__BCM__message_template::SocketCAN__receive__BCM__message_template(const OPTIONAL<SocketCAN__receive__BCM__message>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__receive__BCM__message&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @SocketCAN_Types.SocketCAN_receive_BCM_message from an unbound optional field.");
+}
+}
+
+SocketCAN__receive__BCM__message_template::SocketCAN__receive__BCM__message_template(const SocketCAN__receive__BCM__message_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SocketCAN__receive__BCM__message_template::~SocketCAN__receive__BCM__message_template()
+{
+clean_up();
+}
+
+SocketCAN__receive__BCM__message_template& SocketCAN__receive__BCM__message_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SocketCAN__receive__BCM__message_template& SocketCAN__receive__BCM__message_template::operator=(const SocketCAN__receive__BCM__message& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SocketCAN__receive__BCM__message_template& SocketCAN__receive__BCM__message_template::operator=(const OPTIONAL<SocketCAN__receive__BCM__message>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__receive__BCM__message&)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 @SocketCAN_Types.SocketCAN_receive_BCM_message.");
+}
+return *this;
+}
+
+SocketCAN__receive__BCM__message_template& SocketCAN__receive__BCM__message_template::operator=(const SocketCAN__receive__BCM__message_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__receive__BCM__message_template::match(const SocketCAN__receive__BCM__message& 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.id().is_bound()) return FALSE;
+if(!single_value->field_id.match(other_value.id(), legacy))return FALSE;
+if(!other_value.ifr().is_bound()) return FALSE;
+if(!single_value->field_ifr.match(other_value.ifr(), legacy))return FALSE;
+if(!other_value.frame().is_bound()) return FALSE;
+if(!single_value->field_frame.match(other_value.frame(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_receive_BCM_message.");
+}
+return FALSE;
+}
+
+boolean SocketCAN__receive__BCM__message_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_id.is_bound()
+
+ ||single_value->field_ifr.is_bound()
+
+ ||single_value->field_frame.is_bound()
+;
+}
+
+boolean SocketCAN__receive__BCM__message_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_id.is_value()
+ &&single_value->field_ifr.is_value()
+ &&single_value->field_frame.is_value();
+}
+
+void SocketCAN__receive__BCM__message_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SocketCAN__receive__BCM__message SocketCAN__receive__BCM__message_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 @SocketCAN_Types.SocketCAN_receive_BCM_message.");
+SocketCAN__receive__BCM__message ret_val;
+if (single_value->field_id.is_bound()) {
+ret_val.id() = single_value->field_id.valueof();
+}
+if (single_value->field_ifr.is_bound()) {
+ret_val.ifr() = single_value->field_ifr.valueof();
+}
+if (single_value->field_frame.is_bound()) {
+ret_val.frame() = single_value->field_frame.valueof();
+}
+return ret_val;
+}
+
+void SocketCAN__receive__BCM__message_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @SocketCAN_Types.SocketCAN_receive_BCM_message.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SocketCAN__receive__BCM__message_template[list_length];
+}
+
+SocketCAN__receive__BCM__message_template& SocketCAN__receive__BCM__message_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @SocketCAN_Types.SocketCAN_receive_BCM_message.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @SocketCAN_Types.SocketCAN_receive_BCM_message.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& SocketCAN__receive__BCM__message_template::id()
+{
+set_specific();
+return single_value->field_id;
+}
+
+const INTEGER_template& SocketCAN__receive__BCM__message_template::id() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field id of a non-specific template of type @SocketCAN_Types.SocketCAN_receive_BCM_message.");
+return single_value->field_id;
+}
+
+SocketCAN__ifr_template& SocketCAN__receive__BCM__message_template::ifr()
+{
+set_specific();
+return single_value->field_ifr;
+}
+
+const SocketCAN__ifr_template& SocketCAN__receive__BCM__message_template::ifr() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field ifr of a non-specific template of type @SocketCAN_Types.SocketCAN_receive_BCM_message.");
+return single_value->field_ifr;
+}
+
+Bcm::SocketCAN__bcm__frame_template& SocketCAN__receive__BCM__message_template::frame()
+{
+set_specific();
+return single_value->field_frame;
+}
+
+const Bcm::SocketCAN__bcm__frame_template& SocketCAN__receive__BCM__message_template::frame() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field frame of a non-specific template of type @SocketCAN_Types.SocketCAN_receive_BCM_message.");
+return single_value->field_frame;
+}
+
+int SocketCAN__receive__BCM__message_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_receive_BCM_message 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 @SocketCAN_Types.SocketCAN_receive_BCM_message 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 @SocketCAN_Types.SocketCAN_receive_BCM_message containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_receive_BCM_message containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_receive_BCM_message containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_receive_BCM_message containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_receive_BCM_message.");
+  }
+  return 0;
+}
+
+void SocketCAN__receive__BCM__message_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ id := ");
+single_value->field_id.log();
+TTCN_Logger::log_event_str(", ifr := ");
+single_value->field_ifr.log();
+TTCN_Logger::log_event_str(", frame := ");
+single_value->field_frame.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SocketCAN__receive__BCM__message_template::log_match(const SocketCAN__receive__BCM__message& 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_id.match(match_value.id(), legacy)){
+TTCN_Logger::log_logmatch_info(".id");
+single_value->field_id.log_match(match_value.id(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_ifr.match(match_value.ifr(), legacy)){
+TTCN_Logger::log_logmatch_info(".ifr");
+single_value->field_ifr.log_match(match_value.ifr(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_frame.match(match_value.frame(), legacy)){
+TTCN_Logger::log_logmatch_info(".frame");
+single_value->field_frame.log_match(match_value.frame(), 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("{ id := ");
+single_value->field_id.log_match(match_value.id(), legacy);
+TTCN_Logger::log_event_str(", ifr := ");
+single_value->field_ifr.log_match(match_value.ifr(), legacy);
+TTCN_Logger::log_event_str(", frame := ");
+single_value->field_frame.log_match(match_value.frame(), 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 SocketCAN__receive__BCM__message_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_id.encode_text(text_buf);
+single_value->field_ifr.encode_text(text_buf);
+single_value->field_frame.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 @SocketCAN_Types.SocketCAN_receive_BCM_message.");
+}
+}
+
+void SocketCAN__receive__BCM__message_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_id.decode_text(text_buf);
+single_value->field_ifr.decode_text(text_buf);
+single_value->field_frame.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 SocketCAN__receive__BCM__message_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 @SocketCAN_Types.SocketCAN_receive_BCM_message.");
+}
+}
+
+void SocketCAN__receive__BCM__message_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: {
+    SocketCAN__receive__BCM__message_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @SocketCAN_Types.SocketCAN_receive_BCM_message 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) id().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ifr().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) frame().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(), "id")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          id().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(), "ifr")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ifr().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(), "frame")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          frame().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 @SocketCAN_Types.SocketCAN_receive_BCM_message: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@SocketCAN_Types.SocketCAN_receive_BCM_message");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SocketCAN__receive__BCM__message_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_id.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_receive_BCM_message");
+single_value->field_ifr.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_receive_BCM_message");
+single_value->field_frame.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_receive_BCM_message");
+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 : "@SocketCAN_Types.SocketCAN_receive_BCM_message");
+}
+
+boolean SocketCAN__receive__BCM__message_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SocketCAN__receive__BCM__message_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+SocketCAN__receive__isotp__pdu::SocketCAN__receive__isotp__pdu()
+{
+}
+
+SocketCAN__receive__isotp__pdu::SocketCAN__receive__isotp__pdu(const INTEGER& par_id,
+    const SocketCAN__ifr& par_ifr,
+    const OCTETSTRING& par_pdu)
+  :   field_id(par_id),
+  field_ifr(par_ifr),
+  field_pdu(par_pdu)
+{
+}
+
+SocketCAN__receive__isotp__pdu::SocketCAN__receive__isotp__pdu(const SocketCAN__receive__isotp__pdu& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @SocketCAN_Types.SocketCAN_receive_isotp_pdu.");
+if (other_value.id().is_bound()) field_id = other_value.id();
+else field_id.clean_up();
+if (other_value.ifr().is_bound()) field_ifr = other_value.ifr();
+else field_ifr.clean_up();
+if (other_value.pdu().is_bound()) field_pdu = other_value.pdu();
+else field_pdu.clean_up();
+}
+
+void SocketCAN__receive__isotp__pdu::clean_up()
+{
+field_id.clean_up();
+field_ifr.clean_up();
+field_pdu.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SocketCAN__receive__isotp__pdu::get_descriptor() const { return &SocketCAN__receive__isotp__pdu_descr_; }
+SocketCAN__receive__isotp__pdu& SocketCAN__receive__isotp__pdu::operator=(const SocketCAN__receive__isotp__pdu& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @SocketCAN_Types.SocketCAN_receive_isotp_pdu.");
+  if (other_value.id().is_bound()) field_id = other_value.id();
+  else field_id.clean_up();
+  if (other_value.ifr().is_bound()) field_ifr = other_value.ifr();
+  else field_ifr.clean_up();
+  if (other_value.pdu().is_bound()) field_pdu = other_value.pdu();
+  else field_pdu.clean_up();
+}
+return *this;
+}
+
+boolean SocketCAN__receive__isotp__pdu::operator==(const SocketCAN__receive__isotp__pdu& other_value) const
+{
+return field_id==other_value.field_id
+  && field_ifr==other_value.field_ifr
+  && field_pdu==other_value.field_pdu;
+}
+
+boolean SocketCAN__receive__isotp__pdu::is_bound() const
+{
+return (field_id.is_bound())
+  || (field_ifr.is_bound())
+  || (field_pdu.is_bound());
+}
+boolean SocketCAN__receive__isotp__pdu::is_value() const
+{
+return field_id.is_value()
+  && field_ifr.is_value()
+  && field_pdu.is_value();
+}
+void SocketCAN__receive__isotp__pdu::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ id := ");
+field_id.log();
+TTCN_Logger::log_event_str(", ifr := ");
+field_ifr.log();
+TTCN_Logger::log_event_str(", pdu := ");
+field_pdu.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SocketCAN__receive__isotp__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 (3<param.get_size()) {
+      param.error("record value of type @SocketCAN_Types.SocketCAN_receive_isotp_pdu 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) id().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ifr().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) pdu().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(), "id")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          id().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(), "ifr")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ifr().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(), "pdu")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          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 @SocketCAN_Types.SocketCAN_receive_isotp_pdu: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@SocketCAN_Types.SocketCAN_receive_isotp_pdu");
+  }
+}
+
+void SocketCAN__receive__isotp__pdu::set_implicit_omit()
+{
+if (id().is_bound()) id().set_implicit_omit();
+if (ifr().is_bound()) ifr().set_implicit_omit();
+if (pdu().is_bound()) pdu().set_implicit_omit();
+}
+
+void SocketCAN__receive__isotp__pdu::encode_text(Text_Buf& text_buf) const
+{
+field_id.encode_text(text_buf);
+field_ifr.encode_text(text_buf);
+field_pdu.encode_text(text_buf);
+}
+
+void SocketCAN__receive__isotp__pdu::decode_text(Text_Buf& text_buf)
+{
+field_id.decode_text(text_buf);
+field_ifr.decode_text(text_buf);
+field_pdu.decode_text(text_buf);
+}
+
+struct SocketCAN__receive__isotp__pdu_template::single_value_struct {
+INTEGER_template field_id;
+SocketCAN__ifr_template field_ifr;
+OCTETSTRING_template field_pdu;
+};
+
+void SocketCAN__receive__isotp__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_id = ANY_VALUE;
+single_value->field_ifr = ANY_VALUE;
+single_value->field_pdu = ANY_VALUE;
+}
+}
+}
+
+void SocketCAN__receive__isotp__pdu_template::copy_value(const SocketCAN__receive__isotp__pdu& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.id().is_bound()) {
+  single_value->field_id = other_value.id();
+} else {
+  single_value->field_id.clean_up();
+}
+if (other_value.ifr().is_bound()) {
+  single_value->field_ifr = other_value.ifr();
+} else {
+  single_value->field_ifr.clean_up();
+}
+if (other_value.pdu().is_bound()) {
+  single_value->field_pdu = other_value.pdu();
+} else {
+  single_value->field_pdu.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SocketCAN__receive__isotp__pdu_template::copy_template(const SocketCAN__receive__isotp__pdu_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.id().get_selection()) {
+single_value->field_id = other_value.id();
+} else {
+single_value->field_id.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.ifr().get_selection()) {
+single_value->field_ifr = other_value.ifr();
+} else {
+single_value->field_ifr.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.pdu().get_selection()) {
+single_value->field_pdu = other_value.pdu();
+} else {
+single_value->field_pdu.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SocketCAN__receive__isotp__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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_receive_isotp_pdu.");
+break;
+}
+set_selection(other_value);
+}
+
+SocketCAN__receive__isotp__pdu_template::SocketCAN__receive__isotp__pdu_template()
+{
+}
+
+SocketCAN__receive__isotp__pdu_template::SocketCAN__receive__isotp__pdu_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SocketCAN__receive__isotp__pdu_template::SocketCAN__receive__isotp__pdu_template(const SocketCAN__receive__isotp__pdu& other_value)
+{
+copy_value(other_value);
+}
+
+SocketCAN__receive__isotp__pdu_template::SocketCAN__receive__isotp__pdu_template(const OPTIONAL<SocketCAN__receive__isotp__pdu>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__receive__isotp__pdu&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @SocketCAN_Types.SocketCAN_receive_isotp_pdu from an unbound optional field.");
+}
+}
+
+SocketCAN__receive__isotp__pdu_template::SocketCAN__receive__isotp__pdu_template(const SocketCAN__receive__isotp__pdu_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SocketCAN__receive__isotp__pdu_template::~SocketCAN__receive__isotp__pdu_template()
+{
+clean_up();
+}
+
+SocketCAN__receive__isotp__pdu_template& SocketCAN__receive__isotp__pdu_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SocketCAN__receive__isotp__pdu_template& SocketCAN__receive__isotp__pdu_template::operator=(const SocketCAN__receive__isotp__pdu& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SocketCAN__receive__isotp__pdu_template& SocketCAN__receive__isotp__pdu_template::operator=(const OPTIONAL<SocketCAN__receive__isotp__pdu>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__receive__isotp__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 @SocketCAN_Types.SocketCAN_receive_isotp_pdu.");
+}
+return *this;
+}
+
+SocketCAN__receive__isotp__pdu_template& SocketCAN__receive__isotp__pdu_template::operator=(const SocketCAN__receive__isotp__pdu_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__receive__isotp__pdu_template::match(const SocketCAN__receive__isotp__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.id().is_bound()) return FALSE;
+if(!single_value->field_id.match(other_value.id(), legacy))return FALSE;
+if(!other_value.ifr().is_bound()) return FALSE;
+if(!single_value->field_ifr.match(other_value.ifr(), legacy))return FALSE;
+if(!other_value.pdu().is_bound()) return FALSE;
+if(!single_value->field_pdu.match(other_value.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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_receive_isotp_pdu.");
+}
+return FALSE;
+}
+
+boolean SocketCAN__receive__isotp__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_id.is_bound()
+
+ ||single_value->field_ifr.is_bound()
+
+ ||single_value->field_pdu.is_bound()
+;
+}
+
+boolean SocketCAN__receive__isotp__pdu_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_id.is_value()
+ &&single_value->field_ifr.is_value()
+ &&single_value->field_pdu.is_value();
+}
+
+void SocketCAN__receive__isotp__pdu_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SocketCAN__receive__isotp__pdu SocketCAN__receive__isotp__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 @SocketCAN_Types.SocketCAN_receive_isotp_pdu.");
+SocketCAN__receive__isotp__pdu ret_val;
+if (single_value->field_id.is_bound()) {
+ret_val.id() = single_value->field_id.valueof();
+}
+if (single_value->field_ifr.is_bound()) {
+ret_val.ifr() = single_value->field_ifr.valueof();
+}
+if (single_value->field_pdu.is_bound()) {
+ret_val.pdu() = single_value->field_pdu.valueof();
+}
+return ret_val;
+}
+
+void SocketCAN__receive__isotp__pdu_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @SocketCAN_Types.SocketCAN_receive_isotp_pdu.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SocketCAN__receive__isotp__pdu_template[list_length];
+}
+
+SocketCAN__receive__isotp__pdu_template& SocketCAN__receive__isotp__pdu_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @SocketCAN_Types.SocketCAN_receive_isotp_pdu.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @SocketCAN_Types.SocketCAN_receive_isotp_pdu.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& SocketCAN__receive__isotp__pdu_template::id()
+{
+set_specific();
+return single_value->field_id;
+}
+
+const INTEGER_template& SocketCAN__receive__isotp__pdu_template::id() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field id of a non-specific template of type @SocketCAN_Types.SocketCAN_receive_isotp_pdu.");
+return single_value->field_id;
+}
+
+SocketCAN__ifr_template& SocketCAN__receive__isotp__pdu_template::ifr()
+{
+set_specific();
+return single_value->field_ifr;
+}
+
+const SocketCAN__ifr_template& SocketCAN__receive__isotp__pdu_template::ifr() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field ifr of a non-specific template of type @SocketCAN_Types.SocketCAN_receive_isotp_pdu.");
+return single_value->field_ifr;
+}
+
+OCTETSTRING_template& SocketCAN__receive__isotp__pdu_template::pdu()
+{
+set_specific();
+return single_value->field_pdu;
+}
+
+const OCTETSTRING_template& SocketCAN__receive__isotp__pdu_template::pdu() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field pdu of a non-specific template of type @SocketCAN_Types.SocketCAN_receive_isotp_pdu.");
+return single_value->field_pdu;
+}
+
+int SocketCAN__receive__isotp__pdu_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_receive_isotp_pdu 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 @SocketCAN_Types.SocketCAN_receive_isotp_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 @SocketCAN_Types.SocketCAN_receive_isotp_pdu containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_receive_isotp_pdu containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_receive_isotp_pdu containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_receive_isotp_pdu containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_receive_isotp_pdu.");
+  }
+  return 0;
+}
+
+void SocketCAN__receive__isotp__pdu_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ id := ");
+single_value->field_id.log();
+TTCN_Logger::log_event_str(", ifr := ");
+single_value->field_ifr.log();
+TTCN_Logger::log_event_str(", pdu := ");
+single_value->field_pdu.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SocketCAN__receive__isotp__pdu_template::log_match(const SocketCAN__receive__isotp__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_id.match(match_value.id(), legacy)){
+TTCN_Logger::log_logmatch_info(".id");
+single_value->field_id.log_match(match_value.id(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_ifr.match(match_value.ifr(), legacy)){
+TTCN_Logger::log_logmatch_info(".ifr");
+single_value->field_ifr.log_match(match_value.ifr(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_pdu.match(match_value.pdu(), legacy)){
+TTCN_Logger::log_logmatch_info(".pdu");
+single_value->field_pdu.log_match(match_value.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("{ id := ");
+single_value->field_id.log_match(match_value.id(), legacy);
+TTCN_Logger::log_event_str(", ifr := ");
+single_value->field_ifr.log_match(match_value.ifr(), legacy);
+TTCN_Logger::log_event_str(", pdu := ");
+single_value->field_pdu.log_match(match_value.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 SocketCAN__receive__isotp__pdu_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_id.encode_text(text_buf);
+single_value->field_ifr.encode_text(text_buf);
+single_value->field_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 @SocketCAN_Types.SocketCAN_receive_isotp_pdu.");
+}
+}
+
+void SocketCAN__receive__isotp__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_id.decode_text(text_buf);
+single_value->field_ifr.decode_text(text_buf);
+single_value->field_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 SocketCAN__receive__isotp__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 @SocketCAN_Types.SocketCAN_receive_isotp_pdu.");
+}
+}
+
+void SocketCAN__receive__isotp__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: {
+    SocketCAN__receive__isotp__pdu_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @SocketCAN_Types.SocketCAN_receive_isotp_pdu 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) id().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) ifr().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) pdu().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(), "id")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          id().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(), "ifr")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ifr().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(), "pdu")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          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 @SocketCAN_Types.SocketCAN_receive_isotp_pdu: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@SocketCAN_Types.SocketCAN_receive_isotp_pdu");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SocketCAN__receive__isotp__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_id.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_receive_isotp_pdu");
+single_value->field_ifr.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_receive_isotp_pdu");
+single_value->field_pdu.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_receive_isotp_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 : "@SocketCAN_Types.SocketCAN_receive_isotp_pdu");
+}
+
+boolean SocketCAN__receive__isotp__pdu_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SocketCAN__receive__isotp__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 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 Raw::CAN__RAW__filter CAN__RAW__filters::UNBOUND_ELEM;
+CAN__RAW__filters::CAN__RAW__filters()
+{
+val_ptr = NULL;
+}
+
+CAN__RAW__filters::CAN__RAW__filters(null_type)
+{
+val_ptr = new recordof_setof_struct;
+val_ptr->ref_count = 1;
+val_ptr->n_elements = 0;
+val_ptr->value_elements = NULL;
+}
+
+CAN__RAW__filters::CAN__RAW__filters(const CAN__RAW__filters& other_value)
+{
+if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @SocketCAN_Types.CAN_RAW_filters.");
+val_ptr = other_value.val_ptr;
+val_ptr->ref_count++;
+}
+
+CAN__RAW__filters::~CAN__RAW__filters()
+{
+clean_up();
+if (val_ptr != NULL) val_ptr = NULL;
+}
+
+void CAN__RAW__filters::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.");
+}
+}
+
+CAN__RAW__filters& CAN__RAW__filters::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;
+}
+
+CAN__RAW__filters& CAN__RAW__filters::operator=(const CAN__RAW__filters& other_value)
+{
+if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @SocketCAN_Types.CAN_RAW_filters.");
+if (this != &other_value) {
+clean_up();
+val_ptr = other_value.val_ptr;
+val_ptr->ref_count++;
+}
+return *this;
+}
+
+boolean CAN__RAW__filters::operator==(null_type) const
+{
+if (val_ptr == NULL)
+TTCN_error("The left operand of comparison is an unbound value of type @SocketCAN_Types.CAN_RAW_filters.");
+return val_ptr->n_elements == 0 ;
+}
+
+boolean CAN__RAW__filters::operator==(const CAN__RAW__filters& other_value) const
+{
+if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @SocketCAN_Types.CAN_RAW_filters.");
+if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @SocketCAN_Types.CAN_RAW_filters.");
+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;
+}
+
+Raw::CAN__RAW__filter& CAN__RAW__filters::operator[](int index_value)
+{
+if (index_value < 0) TTCN_error("Accessing an element of type @SocketCAN_Types.CAN_RAW_filters 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 = (Raw::CAN__RAW__filter**)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 Raw::CAN__RAW__filter(*(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 Raw::CAN__RAW__filter;
+}
+return *val_ptr->value_elements[index_value];
+}
+
+Raw::CAN__RAW__filter& CAN__RAW__filters::operator[](const INTEGER& index_value)
+{
+index_value.must_bound("Using an unbound integer value for indexing a value of type @SocketCAN_Types.CAN_RAW_filters.");
+return (*this)[(int)index_value];
+}
+
+const Raw::CAN__RAW__filter& CAN__RAW__filters::operator[](int index_value) const
+{
+if (val_ptr == NULL)
+TTCN_error("Accessing an element in an unbound value of type @SocketCAN_Types.CAN_RAW_filters.");
+if (index_value < 0) TTCN_error("Accessing an element of type @SocketCAN_Types.CAN_RAW_filters using a negative index: %d.", index_value);
+if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @SocketCAN_Types.CAN_RAW_filters: 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 Raw::CAN__RAW__filter& CAN__RAW__filters::operator[](const INTEGER& index_value) const
+{
+index_value.must_bound("Using an unbound integer value for indexing a value of type @SocketCAN_Types.CAN_RAW_filters.");
+return (*this)[(int)index_value];
+}
+
+CAN__RAW__filters CAN__RAW__filters::operator<<=(int rotate_count) const
+{
+return *this >>= (-rotate_count);
+}
+
+CAN__RAW__filters CAN__RAW__filters::operator<<=(const INTEGER& rotate_count) const
+{
+rotate_count.must_bound("Unbound integer operand of rotate left operator.");
+return *this >>= (int)(-rotate_count);
+}
+
+CAN__RAW__filters CAN__RAW__filters::operator>>=(const INTEGER& rotate_count) const
+{
+rotate_count.must_bound("Unbound integer operand of rotate right operator.");
+return *this >>= (int)rotate_count;
+}
+
+CAN__RAW__filters CAN__RAW__filters::operator>>=(int rotate_count) const
+{
+if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @SocketCAN_Types.CAN_RAW_filters.");
+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;
+CAN__RAW__filters 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 Raw::CAN__RAW__filter(*val_ptr->value_elements[i]);
+}
+}
+return ret_val;
+}
+
+CAN__RAW__filters CAN__RAW__filters::operator+(const CAN__RAW__filters& other_value) const
+{
+if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @SocketCAN_Types.CAN_RAW_filters concatenation.");
+if (val_ptr->n_elements == 0) return other_value;
+if (other_value.val_ptr->n_elements == 0) return *this;
+CAN__RAW__filters 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 Raw::CAN__RAW__filter(*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 Raw::CAN__RAW__filter(*other_value.val_ptr->value_elements[i]);
+}
+}
+return ret_val;
+}
+
+CAN__RAW__filters CAN__RAW__filters::substr(int index, int returncount) const
+{
+if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @SocketCAN_Types.CAN_RAW_filters.");
+check_substr_arguments(val_ptr->n_elements, index, returncount, "@SocketCAN_Types.CAN_RAW_filters","element");
+CAN__RAW__filters 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 Raw::CAN__RAW__filter(*val_ptr->value_elements[i+index]);
+}
+}
+return ret_val;
+}
+
+CAN__RAW__filters CAN__RAW__filters::replace(int index, int len, const CAN__RAW__filters& repl) const
+{
+if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @SocketCAN_Types.CAN_RAW_filters.");
+if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @SocketCAN_Types.CAN_RAW_filters.");
+check_replace_arguments(val_ptr->n_elements, index, len, "@SocketCAN_Types.CAN_RAW_filters","element");
+CAN__RAW__filters 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 Raw::CAN__RAW__filter(*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 Raw::CAN__RAW__filter(*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 Raw::CAN__RAW__filter(*val_ptr->value_elements[index+i+len]);
+}
+}
+return ret_val;
+}
+
+CAN__RAW__filters CAN__RAW__filters::replace(int index, int len, const CAN__RAW__filters_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 CAN__RAW__filters::set_size(int new_size)
+{
+if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @SocketCAN_Types.CAN_RAW_filters.");
+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 = (Raw::CAN__RAW__filter**)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 Raw::CAN__RAW__filter(*(val_ptr->value_elements[elem_count]));
+}
+}
+clean_up();
+val_ptr = new_val_ptr;
+}
+if (new_size > val_ptr->n_elements) {
+val_ptr->value_elements = (Raw::CAN__RAW__filter**)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 @SocketCAN_Types.CAN_RAW_filters: %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 = (Raw::CAN__RAW__filter**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size);
+val_ptr->n_elements = new_size;
+}
+}
+
+boolean CAN__RAW__filters::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 CAN__RAW__filters::size_of() const
+{
+if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @SocketCAN_Types.CAN_RAW_filters.");
+return val_ptr->n_elements;
+}
+
+int CAN__RAW__filters::lengthof() const
+{
+if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @SocketCAN_Types.CAN_RAW_filters.");
+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 CAN__RAW__filters::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 CAN__RAW__filters::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", "@SocketCAN_Types.CAN_RAW_filters");
+    }
+    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", "@SocketCAN_Types.CAN_RAW_filters");
+    }
+    break;
+  default:
+    TTCN_error("Internal error: Unknown operation type.");
+  }
+}
+
+void CAN__RAW__filters::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 CAN__RAW__filters::encode_text(Text_Buf& text_buf) const
+{
+if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @SocketCAN_Types.CAN_RAW_filters.");
+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 CAN__RAW__filters::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 @SocketCAN_Types.CAN_RAW_filters.");
+val_ptr->value_elements = (Raw::CAN__RAW__filter**)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 Raw::CAN__RAW__filter;
+val_ptr->value_elements[elem_count]->decode_text(text_buf);
+}
+}
+
+void CAN__RAW__filters_template::copy_value(const CAN__RAW__filters& other_value)
+{
+if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @SocketCAN_Types.CAN_RAW_filters with an unbound value.");
+single_value.n_elements = other_value.size_of();
+single_value.value_elements = (Raw::CAN__RAW__filter_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 Raw::CAN__RAW__filter_template(other_value[elem_count]);
+} else {
+single_value.value_elements[elem_count] = new Raw::CAN__RAW__filter_template;
+}
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void CAN__RAW__filters_template::copy_template(const CAN__RAW__filters_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 = (Raw::CAN__RAW__filter_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 Raw::CAN__RAW__filter_template(*other_value.single_value.value_elements[elem_count]);
+} else {
+single_value.value_elements[elem_count] = new Raw::CAN__RAW__filter_template;
+}
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new CAN__RAW__filters_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @SocketCAN_Types.CAN_RAW_filters.");
+break;
+}
+set_selection(other_value);
+}
+
+boolean CAN__RAW__filters_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 CAN__RAW__filters_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const CAN__RAW__filters*)value_ptr)[value_index], legacy);
+else return ((const CAN__RAW__filters_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit();
+}
+
+CAN__RAW__filters_template::CAN__RAW__filters_template()
+{
+}
+
+CAN__RAW__filters_template::CAN__RAW__filters_template(template_sel other_value)
+ : Record_Of_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+CAN__RAW__filters_template::CAN__RAW__filters_template(null_type)
+ : Record_Of_Template(SPECIFIC_VALUE)
+{
+single_value.n_elements = 0;
+single_value.value_elements = NULL;
+}
+
+CAN__RAW__filters_template::CAN__RAW__filters_template(const CAN__RAW__filters& other_value)
+{
+copy_value(other_value);
+}
+
+CAN__RAW__filters_template::CAN__RAW__filters_template(const OPTIONAL<CAN__RAW__filters>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CAN__RAW__filters&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @SocketCAN_Types.CAN_RAW_filters from an unbound optional field.");
+}
+}
+
+CAN__RAW__filters_template::CAN__RAW__filters_template(const CAN__RAW__filters_template& other_value)
+ : Record_Of_Template()
+{
+copy_template(other_value);
+}
+
+CAN__RAW__filters_template::~CAN__RAW__filters_template()
+{
+clean_up();
+}
+
+void CAN__RAW__filters_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:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+CAN__RAW__filters_template& CAN__RAW__filters_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+CAN__RAW__filters_template& CAN__RAW__filters_template::operator=(null_type)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value.n_elements = 0;
+single_value.value_elements = NULL;
+return *this;
+}
+
+CAN__RAW__filters_template& CAN__RAW__filters_template::operator=(const CAN__RAW__filters& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+CAN__RAW__filters_template& CAN__RAW__filters_template::operator=(const OPTIONAL<CAN__RAW__filters>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CAN__RAW__filters&)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 @SocketCAN_Types.CAN_RAW_filters.");
+}
+return *this;
+}
+
+CAN__RAW__filters_template& CAN__RAW__filters_template::operator=(const CAN__RAW__filters_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+Raw::CAN__RAW__filter_template& CAN__RAW__filters_template::operator[](int index_value)
+{
+if (index_value < 0) TTCN_error("Accessing an element of a template for type @SocketCAN_Types.CAN_RAW_filters 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 @SocketCAN_Types.CAN_RAW_filters.");
+    break;
+}
+return *single_value.value_elements[index_value];
+}
+
+Raw::CAN__RAW__filter_template& CAN__RAW__filters_template::operator[](const INTEGER& index_value)
+{
+index_value.must_bound("Using an unbound integer value for indexing a template of type @SocketCAN_Types.CAN_RAW_filters.");
+return (*this)[(int)index_value];
+}
+
+const Raw::CAN__RAW__filter_template& CAN__RAW__filters_template::operator[](int index_value) const
+{
+if (index_value < 0) TTCN_error("Accessing an element of a template for type @SocketCAN_Types.CAN_RAW_filters using a negative index: %d.", index_value);
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @SocketCAN_Types.CAN_RAW_filters.");
+if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @SocketCAN_Types.CAN_RAW_filters: 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 Raw::CAN__RAW__filter_template& CAN__RAW__filters_template::operator[](const INTEGER& index_value) const
+{
+index_value.must_bound("Using an unbound integer value for indexing a template of type @SocketCAN_Types.CAN_RAW_filters.");
+return (*this)[(int)index_value];
+}
+
+void CAN__RAW__filters_template::set_size(int new_size)
+{
+if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @SocketCAN_Types.CAN_RAW_filters.");
+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 = (Raw::CAN__RAW__filter_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 Raw::CAN__RAW__filter_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 Raw::CAN__RAW__filter_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 = (Raw::CAN__RAW__filter_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size);
+single_value.n_elements = new_size;
+}
+}
+
+int CAN__RAW__filters_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 CAN__RAW__filters_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 @SocketCAN_Types.CAN_RAW_filters 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 @SocketCAN_Types.CAN_RAW_filters 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 @SocketCAN_Types.CAN_RAW_filters 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 @SocketCAN_Types.CAN_RAW_filters 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 @SocketCAN_Types.CAN_RAW_filters 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 @SocketCAN_Types.CAN_RAW_filters containing complemented list.", op_name);
+default:
+  TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @SocketCAN_Types.CAN_RAW_filters.", op_name);
+}
+return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @SocketCAN_Types.CAN_RAW_filters");
+}
+
+boolean CAN__RAW__filters_template::match(const CAN__RAW__filters& 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;
+default:
+TTCN_error("Matching with an uninitialized/unsupported template of type @SocketCAN_Types.CAN_RAW_filters.");
+}
+return FALSE;
+}
+
+boolean CAN__RAW__filters_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;
+}
+
+CAN__RAW__filters CAN__RAW__filters_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 @SocketCAN_Types.CAN_RAW_filters.");
+CAN__RAW__filters 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;
+}
+
+CAN__RAW__filters CAN__RAW__filters_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);
+}
+
+CAN__RAW__filters CAN__RAW__filters_template::replace(int index, int len, const CAN__RAW__filters_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());
+}
+
+CAN__RAW__filters CAN__RAW__filters_template::replace(int index, int len, const CAN__RAW__filters& 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 CAN__RAW__filters_template::set_type(template_sel template_type, unsigned int list_length)
+{
+clean_up();
+switch (template_type) {
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = list_length;
+value_list.list_value = new CAN__RAW__filters_template[list_length];
+break;
+default:
+TTCN_error("Internal error: Setting an invalid type for a template of type @SocketCAN_Types.CAN_RAW_filters.");
+}
+set_selection(template_type);
+}
+
+CAN__RAW__filters_template& CAN__RAW__filters_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of type @SocketCAN_Types.CAN_RAW_filters.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @SocketCAN_Types.CAN_RAW_filters.");
+return value_list.list_value[list_index];
+}
+
+void CAN__RAW__filters_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 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;
+default:
+log_generic();
+}
+log_restricted();
+log_ifpresent();
+}
+
+void CAN__RAW__filters_template::log_match(const CAN__RAW__filters& 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 CAN__RAW__filters_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 @SocketCAN_Types.CAN_RAW_filters.");
+}
+}
+
+void CAN__RAW__filters_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 @SocketCAN_Types.CAN_RAW_filters.");
+single_value.value_elements = (Raw::CAN__RAW__filter_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 Raw::CAN__RAW__filter_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 CAN__RAW__filters_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 @SocketCAN_Types.CAN_RAW_filters.");
+}
+}
+
+boolean CAN__RAW__filters_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean CAN__RAW__filters_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 CAN__RAW__filters_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: {
+    CAN__RAW__filters_template temp;
+    temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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;
+  default:
+    param.type_error("record of template", "@SocketCAN_Types.CAN_RAW_filters");
+  }
+  is_ifpresent = param.get_ifpresent();
+  set_length_range(param);
+}
+
+void CAN__RAW__filters_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 : "@SocketCAN_Types.CAN_RAW_filters");
+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 : "@SocketCAN_Types.CAN_RAW_filters");
+}
+
+boolean CAN__RAW__filters_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);
+}
+}
+void SocketCAN__setsockopt__commandu::copy_value(const SocketCAN__setsockopt__commandu& other_value)
+{
+switch (other_value.union_selection) {
+case ALT_rfilter:
+field_rfilter = new CAN__RAW__filters(*other_value.field_rfilter);
+break;
+case ALT_err__mask:
+field_err__mask = new BITSTRING(*other_value.field_err__mask);
+break;
+case ALT_loopback:
+field_loopback = new Raw::DisableEnable__enum(*other_value.field_loopback);
+break;
+case ALT_recv__own__msgs:
+field_recv__own__msgs = new Raw::DisableEnable__enum(*other_value.field_recv__own__msgs);
+break;
+case ALT_fd__frames:
+field_fd__frames = new Raw::DisableEnable__enum(*other_value.field_fd__frames);
+break;
+case ALT_join__filters:
+field_join__filters = new Raw::DisableEnable__enum(*other_value.field_join__filters);
+break;
+default:
+TTCN_error("Assignment of an unbound union value of type @SocketCAN_Types.SocketCAN_setsockopt_commandu.");
+}
+union_selection = other_value.union_selection;
+}
+
+SocketCAN__setsockopt__commandu::SocketCAN__setsockopt__commandu()
+{
+union_selection = UNBOUND_VALUE;
+}
+
+SocketCAN__setsockopt__commandu::SocketCAN__setsockopt__commandu(const SocketCAN__setsockopt__commandu& other_value)
+: Base_Type(){
+copy_value(other_value);
+}
+
+SocketCAN__setsockopt__commandu::~SocketCAN__setsockopt__commandu()
+{
+clean_up();
+}
+
+SocketCAN__setsockopt__commandu& SocketCAN__setsockopt__commandu::operator=(const SocketCAN__setsockopt__commandu& other_value)
+{
+if (this != &other_value) {
+clean_up();
+copy_value(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__setsockopt__commandu::operator==(const SocketCAN__setsockopt__commandu& other_value) const
+{
+if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @SocketCAN_Types.SocketCAN_setsockopt_commandu.");
+if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @SocketCAN_Types.SocketCAN_setsockopt_commandu.");
+if (union_selection != other_value.union_selection) return FALSE;
+switch (union_selection) {
+case ALT_rfilter:
+return *field_rfilter == *other_value.field_rfilter;
+case ALT_err__mask:
+return *field_err__mask == *other_value.field_err__mask;
+case ALT_loopback:
+return *field_loopback == *other_value.field_loopback;
+case ALT_recv__own__msgs:
+return *field_recv__own__msgs == *other_value.field_recv__own__msgs;
+case ALT_fd__frames:
+return *field_fd__frames == *other_value.field_fd__frames;
+case ALT_join__filters:
+return *field_join__filters == *other_value.field_join__filters;
+default:
+return FALSE;
+}
+}
+
+CAN__RAW__filters& SocketCAN__setsockopt__commandu::rfilter()
+{
+if (union_selection != ALT_rfilter) {
+clean_up();
+field_rfilter = new CAN__RAW__filters;
+union_selection = ALT_rfilter;
+}
+return *field_rfilter;
+}
+
+const CAN__RAW__filters& SocketCAN__setsockopt__commandu::rfilter() const
+{
+if (union_selection != ALT_rfilter) TTCN_error("Using non-selected field rfilter in a value of union type @SocketCAN_Types.SocketCAN_setsockopt_commandu.");
+return *field_rfilter;
+}
+
+BITSTRING& SocketCAN__setsockopt__commandu::err__mask()
+{
+if (union_selection != ALT_err__mask) {
+clean_up();
+field_err__mask = new BITSTRING;
+union_selection = ALT_err__mask;
+}
+return *field_err__mask;
+}
+
+const BITSTRING& SocketCAN__setsockopt__commandu::err__mask() const
+{
+if (union_selection != ALT_err__mask) TTCN_error("Using non-selected field err_mask in a value of union type @SocketCAN_Types.SocketCAN_setsockopt_commandu.");
+return *field_err__mask;
+}
+
+Raw::DisableEnable__enum& SocketCAN__setsockopt__commandu::loopback()
+{
+if (union_selection != ALT_loopback) {
+clean_up();
+field_loopback = new Raw::DisableEnable__enum;
+union_selection = ALT_loopback;
+}
+return *field_loopback;
+}
+
+const Raw::DisableEnable__enum& SocketCAN__setsockopt__commandu::loopback() const
+{
+if (union_selection != ALT_loopback) TTCN_error("Using non-selected field loopback in a value of union type @SocketCAN_Types.SocketCAN_setsockopt_commandu.");
+return *field_loopback;
+}
+
+Raw::DisableEnable__enum& SocketCAN__setsockopt__commandu::recv__own__msgs()
+{
+if (union_selection != ALT_recv__own__msgs) {
+clean_up();
+field_recv__own__msgs = new Raw::DisableEnable__enum;
+union_selection = ALT_recv__own__msgs;
+}
+return *field_recv__own__msgs;
+}
+
+const Raw::DisableEnable__enum& SocketCAN__setsockopt__commandu::recv__own__msgs() const
+{
+if (union_selection != ALT_recv__own__msgs) TTCN_error("Using non-selected field recv_own_msgs in a value of union type @SocketCAN_Types.SocketCAN_setsockopt_commandu.");
+return *field_recv__own__msgs;
+}
+
+Raw::DisableEnable__enum& SocketCAN__setsockopt__commandu::fd__frames()
+{
+if (union_selection != ALT_fd__frames) {
+clean_up();
+field_fd__frames = new Raw::DisableEnable__enum;
+union_selection = ALT_fd__frames;
+}
+return *field_fd__frames;
+}
+
+const Raw::DisableEnable__enum& SocketCAN__setsockopt__commandu::fd__frames() const
+{
+if (union_selection != ALT_fd__frames) TTCN_error("Using non-selected field fd_frames in a value of union type @SocketCAN_Types.SocketCAN_setsockopt_commandu.");
+return *field_fd__frames;
+}
+
+Raw::DisableEnable__enum& SocketCAN__setsockopt__commandu::join__filters()
+{
+if (union_selection != ALT_join__filters) {
+clean_up();
+field_join__filters = new Raw::DisableEnable__enum;
+union_selection = ALT_join__filters;
+}
+return *field_join__filters;
+}
+
+const Raw::DisableEnable__enum& SocketCAN__setsockopt__commandu::join__filters() const
+{
+if (union_selection != ALT_join__filters) TTCN_error("Using non-selected field join_filters in a value of union type @SocketCAN_Types.SocketCAN_setsockopt_commandu.");
+return *field_join__filters;
+}
+
+boolean SocketCAN__setsockopt__commandu::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 @SocketCAN_Types.SocketCAN_setsockopt_commandu.");
+return union_selection == checked_selection;
+}
+
+boolean SocketCAN__setsockopt__commandu::is_bound() const
+{
+  return union_selection != UNBOUND_VALUE;
+}
+
+boolean SocketCAN__setsockopt__commandu::is_value() const
+{
+switch (union_selection) {
+case UNBOUND_VALUE: return FALSE;
+case ALT_rfilter: return field_rfilter->is_value();
+case ALT_err__mask: return field_err__mask->is_value();
+case ALT_loopback: return field_loopback->is_value();
+case ALT_recv__own__msgs: return field_recv__own__msgs->is_value();
+case ALT_fd__frames: return field_fd__frames->is_value();
+case ALT_join__filters: return field_join__filters->is_value();
+default: TTCN_error("Invalid selection in union is_bound");}
+}
+
+void SocketCAN__setsockopt__commandu::clean_up()
+{
+switch (union_selection) {
+case ALT_rfilter:
+  delete field_rfilter;
+  break;
+case ALT_err__mask:
+  delete field_err__mask;
+  break;
+case ALT_loopback:
+  delete field_loopback;
+  break;
+case ALT_recv__own__msgs:
+  delete field_recv__own__msgs;
+  break;
+case ALT_fd__frames:
+  delete field_fd__frames;
+  break;
+case ALT_join__filters:
+  delete field_join__filters;
+  break;
+default:
+  break;
+}
+union_selection = UNBOUND_VALUE;
+}
+
+void SocketCAN__setsockopt__commandu::log() const
+{
+switch (union_selection) {
+case ALT_rfilter:
+TTCN_Logger::log_event_str("{ rfilter := ");
+field_rfilter->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_err__mask:
+TTCN_Logger::log_event_str("{ err_mask := ");
+field_err__mask->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_loopback:
+TTCN_Logger::log_event_str("{ loopback := ");
+field_loopback->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_recv__own__msgs:
+TTCN_Logger::log_event_str("{ recv_own_msgs := ");
+field_recv__own__msgs->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_fd__frames:
+TTCN_Logger::log_event_str("{ fd_frames := ");
+field_fd__frames->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_join__filters:
+TTCN_Logger::log_event_str("{ join_filters := ");
+field_join__filters->log();
+TTCN_Logger::log_event_str(" }");
+break;
+default:
+TTCN_Logger::log_event_unbound();
+}
+}
+
+void SocketCAN__setsockopt__commandu::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, "rfilter")) {
+    rfilter().set_param(*mp_last);
+    if (!rfilter().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "err_mask")) {
+    err__mask().set_param(*mp_last);
+    if (!err__mask().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "loopback")) {
+    loopback().set_param(*mp_last);
+    if (!loopback().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "recv_own_msgs")) {
+    recv__own__msgs().set_param(*mp_last);
+    if (!recv__own__msgs().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "fd_frames")) {
+    fd__frames().set_param(*mp_last);
+    if (!fd__frames().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "join_filters")) {
+    join__filters().set_param(*mp_last);
+    if (!join__filters().is_bound()) clean_up();
+    return;
+  }
+  mp_last->error("Field %s does not exist in type @SocketCAN_Types.SocketCAN_setsockopt_commandu.", last_name);
+}
+
+void SocketCAN__setsockopt__commandu::set_implicit_omit()
+{
+switch (union_selection) {
+case ALT_rfilter:
+field_rfilter->set_implicit_omit(); break;
+case ALT_err__mask:
+field_err__mask->set_implicit_omit(); break;
+case ALT_loopback:
+field_loopback->set_implicit_omit(); break;
+case ALT_recv__own__msgs:
+field_recv__own__msgs->set_implicit_omit(); break;
+case ALT_fd__frames:
+field_fd__frames->set_implicit_omit(); break;
+case ALT_join__filters:
+field_join__filters->set_implicit_omit(); break;
+default: break;
+}
+}
+
+void SocketCAN__setsockopt__commandu::encode_text(Text_Buf& text_buf) const
+{
+text_buf.push_int(union_selection);
+switch (union_selection) {
+case ALT_rfilter:
+field_rfilter->encode_text(text_buf);
+break;
+case ALT_err__mask:
+field_err__mask->encode_text(text_buf);
+break;
+case ALT_loopback:
+field_loopback->encode_text(text_buf);
+break;
+case ALT_recv__own__msgs:
+field_recv__own__msgs->encode_text(text_buf);
+break;
+case ALT_fd__frames:
+field_fd__frames->encode_text(text_buf);
+break;
+case ALT_join__filters:
+field_join__filters->encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an unbound value of union type @SocketCAN_Types.SocketCAN_setsockopt_commandu.");
+}
+}
+
+void SocketCAN__setsockopt__commandu::decode_text(Text_Buf& text_buf)
+{
+switch ((union_selection_type)text_buf.pull_int().get_val()) {
+case ALT_rfilter:
+rfilter().decode_text(text_buf);
+break;
+case ALT_err__mask:
+err__mask().decode_text(text_buf);
+break;
+case ALT_loopback:
+loopback().decode_text(text_buf);
+break;
+case ALT_recv__own__msgs:
+recv__own__msgs().decode_text(text_buf);
+break;
+case ALT_fd__frames:
+fd__frames().decode_text(text_buf);
+break;
+case ALT_join__filters:
+join__filters().decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for type @SocketCAN_Types.SocketCAN_setsockopt_commandu.");
+}
+}
+
+void SocketCAN__setsockopt__commandu_template::copy_value(const SocketCAN__setsockopt__commandu& other_value)
+{
+single_value.union_selection = other_value.get_selection();
+switch (single_value.union_selection) {
+case SocketCAN__setsockopt__commandu::ALT_rfilter:
+single_value.field_rfilter = new CAN__RAW__filters_template(other_value.rfilter());
+break;
+case SocketCAN__setsockopt__commandu::ALT_err__mask:
+single_value.field_err__mask = new BITSTRING_template(other_value.err__mask());
+break;
+case SocketCAN__setsockopt__commandu::ALT_loopback:
+single_value.field_loopback = new Raw::DisableEnable__enum_template(other_value.loopback());
+break;
+case SocketCAN__setsockopt__commandu::ALT_recv__own__msgs:
+single_value.field_recv__own__msgs = new Raw::DisableEnable__enum_template(other_value.recv__own__msgs());
+break;
+case SocketCAN__setsockopt__commandu::ALT_fd__frames:
+single_value.field_fd__frames = new Raw::DisableEnable__enum_template(other_value.fd__frames());
+break;
+case SocketCAN__setsockopt__commandu::ALT_join__filters:
+single_value.field_join__filters = new Raw::DisableEnable__enum_template(other_value.join__filters());
+break;
+default:
+TTCN_error("Initializing a template with an unbound value of type @SocketCAN_Types.SocketCAN_setsockopt_commandu.");
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SocketCAN__setsockopt__commandu_template::copy_template(const SocketCAN__setsockopt__commandu_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 SocketCAN__setsockopt__commandu::ALT_rfilter:
+single_value.field_rfilter = new CAN__RAW__filters_template(*other_value.single_value.field_rfilter);
+break;
+case SocketCAN__setsockopt__commandu::ALT_err__mask:
+single_value.field_err__mask = new BITSTRING_template(*other_value.single_value.field_err__mask);
+break;
+case SocketCAN__setsockopt__commandu::ALT_loopback:
+single_value.field_loopback = new Raw::DisableEnable__enum_template(*other_value.single_value.field_loopback);
+break;
+case SocketCAN__setsockopt__commandu::ALT_recv__own__msgs:
+single_value.field_recv__own__msgs = new Raw::DisableEnable__enum_template(*other_value.single_value.field_recv__own__msgs);
+break;
+case SocketCAN__setsockopt__commandu::ALT_fd__frames:
+single_value.field_fd__frames = new Raw::DisableEnable__enum_template(*other_value.single_value.field_fd__frames);
+break;
+case SocketCAN__setsockopt__commandu::ALT_join__filters:
+single_value.field_join__filters = new Raw::DisableEnable__enum_template(*other_value.single_value.field_join__filters);
+break;
+default:
+TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @SocketCAN_Types.SocketCAN_setsockopt_commandu.");
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SocketCAN__setsockopt__commandu_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;
+default:
+TTCN_error("Copying an uninitialized template of union type @SocketCAN_Types.SocketCAN_setsockopt_commandu.");
+}
+set_selection(other_value);
+}
+
+SocketCAN__setsockopt__commandu_template::SocketCAN__setsockopt__commandu_template()
+{
+}
+
+SocketCAN__setsockopt__commandu_template::SocketCAN__setsockopt__commandu_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SocketCAN__setsockopt__commandu_template::SocketCAN__setsockopt__commandu_template(const SocketCAN__setsockopt__commandu& other_value)
+{
+copy_value(other_value);
+}
+
+SocketCAN__setsockopt__commandu_template::SocketCAN__setsockopt__commandu_template(const OPTIONAL<SocketCAN__setsockopt__commandu>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__setsockopt__commandu&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of union type @SocketCAN_Types.SocketCAN_setsockopt_commandu from an unbound optional field.");
+}
+}
+
+SocketCAN__setsockopt__commandu_template::SocketCAN__setsockopt__commandu_template(const SocketCAN__setsockopt__commandu_template& other_value)
+: Base_Template(){
+copy_template(other_value);
+}
+
+SocketCAN__setsockopt__commandu_template::~SocketCAN__setsockopt__commandu_template()
+{
+clean_up();
+}
+
+void SocketCAN__setsockopt__commandu_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case SocketCAN__setsockopt__commandu::ALT_rfilter:
+delete single_value.field_rfilter;
+break;
+case SocketCAN__setsockopt__commandu::ALT_err__mask:
+delete single_value.field_err__mask;
+break;
+case SocketCAN__setsockopt__commandu::ALT_loopback:
+delete single_value.field_loopback;
+break;
+case SocketCAN__setsockopt__commandu::ALT_recv__own__msgs:
+delete single_value.field_recv__own__msgs;
+break;
+case SocketCAN__setsockopt__commandu::ALT_fd__frames:
+delete single_value.field_fd__frames;
+break;
+case SocketCAN__setsockopt__commandu::ALT_join__filters:
+delete single_value.field_join__filters;
+default:
+break;
+}
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SocketCAN__setsockopt__commandu_template& SocketCAN__setsockopt__commandu_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SocketCAN__setsockopt__commandu_template& SocketCAN__setsockopt__commandu_template::operator=(const SocketCAN__setsockopt__commandu& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SocketCAN__setsockopt__commandu_template& SocketCAN__setsockopt__commandu_template::operator=(const OPTIONAL<SocketCAN__setsockopt__commandu>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__setsockopt__commandu&)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 @SocketCAN_Types.SocketCAN_setsockopt_commandu.");
+}
+return *this;
+}
+
+SocketCAN__setsockopt__commandu_template& SocketCAN__setsockopt__commandu_template::operator=(const SocketCAN__setsockopt__commandu_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__setsockopt__commandu_template::match(const SocketCAN__setsockopt__commandu& 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:
+{
+SocketCAN__setsockopt__commandu::union_selection_type value_selection = other_value.get_selection();
+if (value_selection == SocketCAN__setsockopt__commandu::UNBOUND_VALUE) return FALSE;
+if (value_selection != single_value.union_selection) return FALSE;
+switch (value_selection) {
+case SocketCAN__setsockopt__commandu::ALT_rfilter:
+return single_value.field_rfilter->match(other_value.rfilter(), legacy);
+case SocketCAN__setsockopt__commandu::ALT_err__mask:
+return single_value.field_err__mask->match(other_value.err__mask(), legacy);
+case SocketCAN__setsockopt__commandu::ALT_loopback:
+return single_value.field_loopback->match(other_value.loopback(), legacy);
+case SocketCAN__setsockopt__commandu::ALT_recv__own__msgs:
+return single_value.field_recv__own__msgs->match(other_value.recv__own__msgs(), legacy);
+case SocketCAN__setsockopt__commandu::ALT_fd__frames:
+return single_value.field_fd__frames->match(other_value.fd__frames(), legacy);
+case SocketCAN__setsockopt__commandu::ALT_join__filters:
+return single_value.field_join__filters->match(other_value.join__filters(), legacy);
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @SocketCAN_Types.SocketCAN_setsockopt_commandu.");
+}
+}
+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;
+default:
+TTCN_error ("Matching an uninitialized template of union type @SocketCAN_Types.SocketCAN_setsockopt_commandu.");
+}
+return FALSE;
+}
+
+boolean SocketCAN__setsockopt__commandu_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+switch (single_value.union_selection) {
+case SocketCAN__setsockopt__commandu::ALT_rfilter:
+return single_value.field_rfilter->is_value();
+case SocketCAN__setsockopt__commandu::ALT_err__mask:
+return single_value.field_err__mask->is_value();
+case SocketCAN__setsockopt__commandu::ALT_loopback:
+return single_value.field_loopback->is_value();
+case SocketCAN__setsockopt__commandu::ALT_recv__own__msgs:
+return single_value.field_recv__own__msgs->is_value();
+case SocketCAN__setsockopt__commandu::ALT_fd__frames:
+return single_value.field_fd__frames->is_value();
+case SocketCAN__setsockopt__commandu::ALT_join__filters:
+return single_value.field_join__filters->is_value();
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @SocketCAN_Types.SocketCAN_setsockopt_commandu.");
+}
+}
+
+SocketCAN__setsockopt__commandu SocketCAN__setsockopt__commandu_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 @SocketCAN_Types.SocketCAN_setsockopt_commandu.");
+SocketCAN__setsockopt__commandu ret_val;
+switch (single_value.union_selection) {
+case SocketCAN__setsockopt__commandu::ALT_rfilter:
+ret_val.rfilter() = single_value.field_rfilter->valueof();
+break;
+case SocketCAN__setsockopt__commandu::ALT_err__mask:
+ret_val.err__mask() = single_value.field_err__mask->valueof();
+break;
+case SocketCAN__setsockopt__commandu::ALT_loopback:
+ret_val.loopback() = single_value.field_loopback->valueof();
+break;
+case SocketCAN__setsockopt__commandu::ALT_recv__own__msgs:
+ret_val.recv__own__msgs() = single_value.field_recv__own__msgs->valueof();
+break;
+case SocketCAN__setsockopt__commandu::ALT_fd__frames:
+ret_val.fd__frames() = single_value.field_fd__frames->valueof();
+break;
+case SocketCAN__setsockopt__commandu::ALT_join__filters:
+ret_val.join__filters() = single_value.field_join__filters->valueof();
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @SocketCAN_Types.SocketCAN_setsockopt_commandu.");
+}
+return ret_val;
+}
+
+SocketCAN__setsockopt__commandu_template& SocketCAN__setsockopt__commandu_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @SocketCAN_Types.SocketCAN_setsockopt_commandu.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @SocketCAN_Types.SocketCAN_setsockopt_commandu.");
+return value_list.list_value[list_index];
+}
+void SocketCAN__setsockopt__commandu_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error ("Internal error: Setting an invalid list for a template of union type @SocketCAN_Types.SocketCAN_setsockopt_commandu.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SocketCAN__setsockopt__commandu_template[list_length];
+}
+
+CAN__RAW__filters_template& SocketCAN__setsockopt__commandu_template::rfilter()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != SocketCAN__setsockopt__commandu::ALT_rfilter) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_rfilter = new CAN__RAW__filters_template(ANY_VALUE);
+else single_value.field_rfilter = new CAN__RAW__filters_template;
+single_value.union_selection = SocketCAN__setsockopt__commandu::ALT_rfilter;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_rfilter;
+}
+
+const CAN__RAW__filters_template& SocketCAN__setsockopt__commandu_template::rfilter() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field rfilter in a non-specific template of union type @SocketCAN_Types.SocketCAN_setsockopt_commandu.");
+if (single_value.union_selection != SocketCAN__setsockopt__commandu::ALT_rfilter) TTCN_error("Accessing non-selected field rfilter in a template of union type @SocketCAN_Types.SocketCAN_setsockopt_commandu.");
+return *single_value.field_rfilter;
+}
+
+BITSTRING_template& SocketCAN__setsockopt__commandu_template::err__mask()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != SocketCAN__setsockopt__commandu::ALT_err__mask) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_err__mask = new BITSTRING_template(ANY_VALUE);
+else single_value.field_err__mask = new BITSTRING_template;
+single_value.union_selection = SocketCAN__setsockopt__commandu::ALT_err__mask;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_err__mask;
+}
+
+const BITSTRING_template& SocketCAN__setsockopt__commandu_template::err__mask() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field err_mask in a non-specific template of union type @SocketCAN_Types.SocketCAN_setsockopt_commandu.");
+if (single_value.union_selection != SocketCAN__setsockopt__commandu::ALT_err__mask) TTCN_error("Accessing non-selected field err_mask in a template of union type @SocketCAN_Types.SocketCAN_setsockopt_commandu.");
+return *single_value.field_err__mask;
+}
+
+Raw::DisableEnable__enum_template& SocketCAN__setsockopt__commandu_template::loopback()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != SocketCAN__setsockopt__commandu::ALT_loopback) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_loopback = new Raw::DisableEnable__enum_template(ANY_VALUE);
+else single_value.field_loopback = new Raw::DisableEnable__enum_template;
+single_value.union_selection = SocketCAN__setsockopt__commandu::ALT_loopback;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_loopback;
+}
+
+const Raw::DisableEnable__enum_template& SocketCAN__setsockopt__commandu_template::loopback() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field loopback in a non-specific template of union type @SocketCAN_Types.SocketCAN_setsockopt_commandu.");
+if (single_value.union_selection != SocketCAN__setsockopt__commandu::ALT_loopback) TTCN_error("Accessing non-selected field loopback in a template of union type @SocketCAN_Types.SocketCAN_setsockopt_commandu.");
+return *single_value.field_loopback;
+}
+
+Raw::DisableEnable__enum_template& SocketCAN__setsockopt__commandu_template::recv__own__msgs()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != SocketCAN__setsockopt__commandu::ALT_recv__own__msgs) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_recv__own__msgs = new Raw::DisableEnable__enum_template(ANY_VALUE);
+else single_value.field_recv__own__msgs = new Raw::DisableEnable__enum_template;
+single_value.union_selection = SocketCAN__setsockopt__commandu::ALT_recv__own__msgs;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_recv__own__msgs;
+}
+
+const Raw::DisableEnable__enum_template& SocketCAN__setsockopt__commandu_template::recv__own__msgs() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field recv_own_msgs in a non-specific template of union type @SocketCAN_Types.SocketCAN_setsockopt_commandu.");
+if (single_value.union_selection != SocketCAN__setsockopt__commandu::ALT_recv__own__msgs) TTCN_error("Accessing non-selected field recv_own_msgs in a template of union type @SocketCAN_Types.SocketCAN_setsockopt_commandu.");
+return *single_value.field_recv__own__msgs;
+}
+
+Raw::DisableEnable__enum_template& SocketCAN__setsockopt__commandu_template::fd__frames()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != SocketCAN__setsockopt__commandu::ALT_fd__frames) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_fd__frames = new Raw::DisableEnable__enum_template(ANY_VALUE);
+else single_value.field_fd__frames = new Raw::DisableEnable__enum_template;
+single_value.union_selection = SocketCAN__setsockopt__commandu::ALT_fd__frames;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_fd__frames;
+}
+
+const Raw::DisableEnable__enum_template& SocketCAN__setsockopt__commandu_template::fd__frames() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field fd_frames in a non-specific template of union type @SocketCAN_Types.SocketCAN_setsockopt_commandu.");
+if (single_value.union_selection != SocketCAN__setsockopt__commandu::ALT_fd__frames) TTCN_error("Accessing non-selected field fd_frames in a template of union type @SocketCAN_Types.SocketCAN_setsockopt_commandu.");
+return *single_value.field_fd__frames;
+}
+
+Raw::DisableEnable__enum_template& SocketCAN__setsockopt__commandu_template::join__filters()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != SocketCAN__setsockopt__commandu::ALT_join__filters) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_join__filters = new Raw::DisableEnable__enum_template(ANY_VALUE);
+else single_value.field_join__filters = new Raw::DisableEnable__enum_template;
+single_value.union_selection = SocketCAN__setsockopt__commandu::ALT_join__filters;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_join__filters;
+}
+
+const Raw::DisableEnable__enum_template& SocketCAN__setsockopt__commandu_template::join__filters() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field join_filters in a non-specific template of union type @SocketCAN_Types.SocketCAN_setsockopt_commandu.");
+if (single_value.union_selection != SocketCAN__setsockopt__commandu::ALT_join__filters) TTCN_error("Accessing non-selected field join_filters in a template of union type @SocketCAN_Types.SocketCAN_setsockopt_commandu.");
+return *single_value.field_join__filters;
+}
+
+boolean SocketCAN__setsockopt__commandu_template::ischosen(SocketCAN__setsockopt__commandu::union_selection_type checked_selection) const
+{
+if (checked_selection == SocketCAN__setsockopt__commandu::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @SocketCAN_Types.SocketCAN_setsockopt_commandu.");
+switch (template_selection) {
+case SPECIFIC_VALUE:
+if (single_value.union_selection == SocketCAN__setsockopt__commandu::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @SocketCAN_Types.SocketCAN_setsockopt_commandu.");
+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 @SocketCAN_Types.SocketCAN_setsockopt_commandu 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 SocketCAN__setsockopt__commandu_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case SocketCAN__setsockopt__commandu::ALT_rfilter:
+TTCN_Logger::log_event_str("{ rfilter := ");
+single_value.field_rfilter->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case SocketCAN__setsockopt__commandu::ALT_err__mask:
+TTCN_Logger::log_event_str("{ err_mask := ");
+single_value.field_err__mask->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case SocketCAN__setsockopt__commandu::ALT_loopback:
+TTCN_Logger::log_event_str("{ loopback := ");
+single_value.field_loopback->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case SocketCAN__setsockopt__commandu::ALT_recv__own__msgs:
+TTCN_Logger::log_event_str("{ recv_own_msgs := ");
+single_value.field_recv__own__msgs->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case SocketCAN__setsockopt__commandu::ALT_fd__frames:
+TTCN_Logger::log_event_str("{ fd_frames := ");
+single_value.field_fd__frames->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case SocketCAN__setsockopt__commandu::ALT_join__filters:
+TTCN_Logger::log_event_str("{ join_filters := ");
+single_value.field_join__filters->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 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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SocketCAN__setsockopt__commandu_template::log_match(const SocketCAN__setsockopt__commandu& 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()) {
+switch (single_value.union_selection) {
+case SocketCAN__setsockopt__commandu::ALT_rfilter:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".rfilter");
+single_value.field_rfilter->log_match(match_value.rfilter(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ rfilter := ");
+single_value.field_rfilter->log_match(match_value.rfilter(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case SocketCAN__setsockopt__commandu::ALT_err__mask:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".err_mask");
+single_value.field_err__mask->log_match(match_value.err__mask(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ err_mask := ");
+single_value.field_err__mask->log_match(match_value.err__mask(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case SocketCAN__setsockopt__commandu::ALT_loopback:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".loopback");
+single_value.field_loopback->log_match(match_value.loopback(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ loopback := ");
+single_value.field_loopback->log_match(match_value.loopback(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case SocketCAN__setsockopt__commandu::ALT_recv__own__msgs:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".recv_own_msgs");
+single_value.field_recv__own__msgs->log_match(match_value.recv__own__msgs(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ recv_own_msgs := ");
+single_value.field_recv__own__msgs->log_match(match_value.recv__own__msgs(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case SocketCAN__setsockopt__commandu::ALT_fd__frames:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".fd_frames");
+single_value.field_fd__frames->log_match(match_value.fd__frames(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ fd_frames := ");
+single_value.field_fd__frames->log_match(match_value.fd__frames(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case SocketCAN__setsockopt__commandu::ALT_join__filters:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".join_filters");
+single_value.field_join__filters->log_match(match_value.join__filters(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ join_filters := ");
+single_value.field_join__filters->log_match(match_value.join__filters(), 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 SocketCAN__setsockopt__commandu_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 SocketCAN__setsockopt__commandu::ALT_rfilter:
+single_value.field_rfilter->encode_text(text_buf);
+break;
+case SocketCAN__setsockopt__commandu::ALT_err__mask:
+single_value.field_err__mask->encode_text(text_buf);
+break;
+case SocketCAN__setsockopt__commandu::ALT_loopback:
+single_value.field_loopback->encode_text(text_buf);
+break;
+case SocketCAN__setsockopt__commandu::ALT_recv__own__msgs:
+single_value.field_recv__own__msgs->encode_text(text_buf);
+break;
+case SocketCAN__setsockopt__commandu::ALT_fd__frames:
+single_value.field_fd__frames->encode_text(text_buf);
+break;
+case SocketCAN__setsockopt__commandu::ALT_join__filters:
+single_value.field_join__filters->encode_text(text_buf);
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @SocketCAN_Types.SocketCAN_setsockopt_commandu.");
+}
+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 @SocketCAN_Types.SocketCAN_setsockopt_commandu.");
+}
+}
+
+void SocketCAN__setsockopt__commandu_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+{
+single_value.union_selection = SocketCAN__setsockopt__commandu::UNBOUND_VALUE;
+SocketCAN__setsockopt__commandu::union_selection_type new_selection = (SocketCAN__setsockopt__commandu::union_selection_type)text_buf.pull_int().get_val();
+switch (new_selection) {
+case SocketCAN__setsockopt__commandu::ALT_rfilter:
+single_value.field_rfilter = new CAN__RAW__filters_template;
+single_value.field_rfilter->decode_text(text_buf);
+break;
+case SocketCAN__setsockopt__commandu::ALT_err__mask:
+single_value.field_err__mask = new BITSTRING_template;
+single_value.field_err__mask->decode_text(text_buf);
+break;
+case SocketCAN__setsockopt__commandu::ALT_loopback:
+single_value.field_loopback = new Raw::DisableEnable__enum_template;
+single_value.field_loopback->decode_text(text_buf);
+break;
+case SocketCAN__setsockopt__commandu::ALT_recv__own__msgs:
+single_value.field_recv__own__msgs = new Raw::DisableEnable__enum_template;
+single_value.field_recv__own__msgs->decode_text(text_buf);
+break;
+case SocketCAN__setsockopt__commandu::ALT_fd__frames:
+single_value.field_fd__frames = new Raw::DisableEnable__enum_template;
+single_value.field_fd__frames->decode_text(text_buf);
+break;
+case SocketCAN__setsockopt__commandu::ALT_join__filters:
+single_value.field_join__filters = new Raw::DisableEnable__enum_template;
+single_value.field_join__filters->decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @SocketCAN_Types.SocketCAN_setsockopt_commandu.");
+}
+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 SocketCAN__setsockopt__commandu_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 @SocketCAN_Types.SocketCAN_setsockopt_commandu.");
+}
+}
+
+boolean SocketCAN__setsockopt__commandu_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SocketCAN__setsockopt__commandu_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 SocketCAN__setsockopt__commandu_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 `@SocketCAN_Types.SocketCAN_setsockopt_commandu'");
+    }
+    if (strcmp("rfilter", param_field) == 0) {
+      rfilter().set_param(param);
+      return;
+    } else if (strcmp("err_mask", param_field) == 0) {
+      err__mask().set_param(param);
+      return;
+    } else if (strcmp("loopback", param_field) == 0) {
+      loopback().set_param(param);
+      return;
+    } else if (strcmp("recv_own_msgs", param_field) == 0) {
+      recv__own__msgs().set_param(param);
+      return;
+    } else if (strcmp("fd_frames", param_field) == 0) {
+      fd__frames().set_param(param);
+      return;
+    } else if (strcmp("join_filters", param_field) == 0) {
+      join__filters().set_param(param);
+      return;
+    } else param.error("Field `%s' not found in union template type `@SocketCAN_Types.SocketCAN_setsockopt_commandu'", 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: {
+    SocketCAN__setsockopt__commandu_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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", "@SocketCAN_Types.SocketCAN_setsockopt_commandu");
+    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, "rfilter")) {
+      rfilter().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "err_mask")) {
+      err__mask().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "loopback")) {
+      loopback().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "recv_own_msgs")) {
+      recv__own__msgs().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "fd_frames")) {
+      fd__frames().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "join_filters")) {
+      join__filters().set_param(*mp_last);
+      break;
+    }
+    mp_last->error("Field %s does not exist in type @SocketCAN_Types.SocketCAN_setsockopt_commandu.", last_name);
+  } break;
+  default:
+    param.type_error("union template", "@SocketCAN_Types.SocketCAN_setsockopt_commandu");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SocketCAN__setsockopt__commandu_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 SocketCAN__setsockopt__commandu::ALT_rfilter:
+single_value.field_rfilter->check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_setsockopt_commandu");
+return;
+case SocketCAN__setsockopt__commandu::ALT_err__mask:
+single_value.field_err__mask->check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_setsockopt_commandu");
+return;
+case SocketCAN__setsockopt__commandu::ALT_loopback:
+single_value.field_loopback->check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_setsockopt_commandu");
+return;
+case SocketCAN__setsockopt__commandu::ALT_recv__own__msgs:
+single_value.field_recv__own__msgs->check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_setsockopt_commandu");
+return;
+case SocketCAN__setsockopt__commandu::ALT_fd__frames:
+single_value.field_fd__frames->check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_setsockopt_commandu");
+return;
+case SocketCAN__setsockopt__commandu::ALT_join__filters:
+single_value.field_join__filters->check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_setsockopt_commandu");
+return;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @SocketCAN_Types.SocketCAN_setsockopt_commandu.");
+}
+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 : "@SocketCAN_Types.SocketCAN_setsockopt_commandu");
+}
+
+SocketCAN__setsockopt::SocketCAN__setsockopt()
+{
+}
+
+SocketCAN__setsockopt::SocketCAN__setsockopt(const INTEGER& par_id,
+    const SocketCAN__setsockopt__commandu& par_command)
+  :   field_id(par_id),
+  field_command(par_command)
+{
+}
+
+SocketCAN__setsockopt::SocketCAN__setsockopt(const SocketCAN__setsockopt& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @SocketCAN_Types.SocketCAN_setsockopt.");
+if (other_value.id().is_bound()) field_id = other_value.id();
+else field_id.clean_up();
+if (other_value.command().is_bound()) field_command = other_value.command();
+else field_command.clean_up();
+}
+
+void SocketCAN__setsockopt::clean_up()
+{
+field_id.clean_up();
+field_command.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SocketCAN__setsockopt::get_descriptor() const { return &SocketCAN__setsockopt_descr_; }
+SocketCAN__setsockopt& SocketCAN__setsockopt::operator=(const SocketCAN__setsockopt& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @SocketCAN_Types.SocketCAN_setsockopt.");
+  if (other_value.id().is_bound()) field_id = other_value.id();
+  else field_id.clean_up();
+  if (other_value.command().is_bound()) field_command = other_value.command();
+  else field_command.clean_up();
+}
+return *this;
+}
+
+boolean SocketCAN__setsockopt::operator==(const SocketCAN__setsockopt& other_value) const
+{
+return field_id==other_value.field_id
+  && field_command==other_value.field_command;
+}
+
+boolean SocketCAN__setsockopt::is_bound() const
+{
+return (field_id.is_bound())
+  || (field_command.is_bound());
+}
+boolean SocketCAN__setsockopt::is_value() const
+{
+return field_id.is_value()
+  && field_command.is_value();
+}
+void SocketCAN__setsockopt::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ id := ");
+field_id.log();
+TTCN_Logger::log_event_str(", command := ");
+field_command.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SocketCAN__setsockopt::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 @SocketCAN_Types.SocketCAN_setsockopt 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) id().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) command().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(), "id")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          id().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(), "command")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          command().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 @SocketCAN_Types.SocketCAN_setsockopt: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@SocketCAN_Types.SocketCAN_setsockopt");
+  }
+}
+
+void SocketCAN__setsockopt::set_implicit_omit()
+{
+if (id().is_bound()) id().set_implicit_omit();
+if (command().is_bound()) command().set_implicit_omit();
+}
+
+void SocketCAN__setsockopt::encode_text(Text_Buf& text_buf) const
+{
+field_id.encode_text(text_buf);
+field_command.encode_text(text_buf);
+}
+
+void SocketCAN__setsockopt::decode_text(Text_Buf& text_buf)
+{
+field_id.decode_text(text_buf);
+field_command.decode_text(text_buf);
+}
+
+struct SocketCAN__setsockopt_template::single_value_struct {
+INTEGER_template field_id;
+SocketCAN__setsockopt__commandu_template field_command;
+};
+
+void SocketCAN__setsockopt_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_id = ANY_VALUE;
+single_value->field_command = ANY_VALUE;
+}
+}
+}
+
+void SocketCAN__setsockopt_template::copy_value(const SocketCAN__setsockopt& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.id().is_bound()) {
+  single_value->field_id = other_value.id();
+} else {
+  single_value->field_id.clean_up();
+}
+if (other_value.command().is_bound()) {
+  single_value->field_command = other_value.command();
+} else {
+  single_value->field_command.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SocketCAN__setsockopt_template::copy_template(const SocketCAN__setsockopt_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.id().get_selection()) {
+single_value->field_id = other_value.id();
+} else {
+single_value->field_id.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.command().get_selection()) {
+single_value->field_command = other_value.command();
+} else {
+single_value->field_command.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SocketCAN__setsockopt_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_setsockopt.");
+break;
+}
+set_selection(other_value);
+}
+
+SocketCAN__setsockopt_template::SocketCAN__setsockopt_template()
+{
+}
+
+SocketCAN__setsockopt_template::SocketCAN__setsockopt_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SocketCAN__setsockopt_template::SocketCAN__setsockopt_template(const SocketCAN__setsockopt& other_value)
+{
+copy_value(other_value);
+}
+
+SocketCAN__setsockopt_template::SocketCAN__setsockopt_template(const OPTIONAL<SocketCAN__setsockopt>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__setsockopt&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @SocketCAN_Types.SocketCAN_setsockopt from an unbound optional field.");
+}
+}
+
+SocketCAN__setsockopt_template::SocketCAN__setsockopt_template(const SocketCAN__setsockopt_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SocketCAN__setsockopt_template::~SocketCAN__setsockopt_template()
+{
+clean_up();
+}
+
+SocketCAN__setsockopt_template& SocketCAN__setsockopt_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SocketCAN__setsockopt_template& SocketCAN__setsockopt_template::operator=(const SocketCAN__setsockopt& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SocketCAN__setsockopt_template& SocketCAN__setsockopt_template::operator=(const OPTIONAL<SocketCAN__setsockopt>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__setsockopt&)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 @SocketCAN_Types.SocketCAN_setsockopt.");
+}
+return *this;
+}
+
+SocketCAN__setsockopt_template& SocketCAN__setsockopt_template::operator=(const SocketCAN__setsockopt_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__setsockopt_template::match(const SocketCAN__setsockopt& 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.id().is_bound()) return FALSE;
+if(!single_value->field_id.match(other_value.id(), legacy))return FALSE;
+if(!other_value.command().is_bound()) return FALSE;
+if(!single_value->field_command.match(other_value.command(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_setsockopt.");
+}
+return FALSE;
+}
+
+boolean SocketCAN__setsockopt_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_id.is_bound()
+
+ ||single_value->field_command.is_bound()
+;
+}
+
+boolean SocketCAN__setsockopt_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_id.is_value()
+ &&single_value->field_command.is_value();
+}
+
+void SocketCAN__setsockopt_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SocketCAN__setsockopt SocketCAN__setsockopt_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 @SocketCAN_Types.SocketCAN_setsockopt.");
+SocketCAN__setsockopt ret_val;
+if (single_value->field_id.is_bound()) {
+ret_val.id() = single_value->field_id.valueof();
+}
+if (single_value->field_command.is_bound()) {
+ret_val.command() = single_value->field_command.valueof();
+}
+return ret_val;
+}
+
+void SocketCAN__setsockopt_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @SocketCAN_Types.SocketCAN_setsockopt.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SocketCAN__setsockopt_template[list_length];
+}
+
+SocketCAN__setsockopt_template& SocketCAN__setsockopt_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @SocketCAN_Types.SocketCAN_setsockopt.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @SocketCAN_Types.SocketCAN_setsockopt.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& SocketCAN__setsockopt_template::id()
+{
+set_specific();
+return single_value->field_id;
+}
+
+const INTEGER_template& SocketCAN__setsockopt_template::id() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field id of a non-specific template of type @SocketCAN_Types.SocketCAN_setsockopt.");
+return single_value->field_id;
+}
+
+SocketCAN__setsockopt__commandu_template& SocketCAN__setsockopt_template::command()
+{
+set_specific();
+return single_value->field_command;
+}
+
+const SocketCAN__setsockopt__commandu_template& SocketCAN__setsockopt_template::command() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field command of a non-specific template of type @SocketCAN_Types.SocketCAN_setsockopt.");
+return single_value->field_command;
+}
+
+int SocketCAN__setsockopt_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_setsockopt 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 @SocketCAN_Types.SocketCAN_setsockopt 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 @SocketCAN_Types.SocketCAN_setsockopt containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_setsockopt containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_setsockopt containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_setsockopt containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_setsockopt.");
+  }
+  return 0;
+}
+
+void SocketCAN__setsockopt_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ id := ");
+single_value->field_id.log();
+TTCN_Logger::log_event_str(", command := ");
+single_value->field_command.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SocketCAN__setsockopt_template::log_match(const SocketCAN__setsockopt& 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_id.match(match_value.id(), legacy)){
+TTCN_Logger::log_logmatch_info(".id");
+single_value->field_id.log_match(match_value.id(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_command.match(match_value.command(), legacy)){
+TTCN_Logger::log_logmatch_info(".command");
+single_value->field_command.log_match(match_value.command(), 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("{ id := ");
+single_value->field_id.log_match(match_value.id(), legacy);
+TTCN_Logger::log_event_str(", command := ");
+single_value->field_command.log_match(match_value.command(), 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 SocketCAN__setsockopt_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_id.encode_text(text_buf);
+single_value->field_command.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 @SocketCAN_Types.SocketCAN_setsockopt.");
+}
+}
+
+void SocketCAN__setsockopt_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_id.decode_text(text_buf);
+single_value->field_command.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 SocketCAN__setsockopt_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 @SocketCAN_Types.SocketCAN_setsockopt.");
+}
+}
+
+void SocketCAN__setsockopt_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: {
+    SocketCAN__setsockopt_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @SocketCAN_Types.SocketCAN_setsockopt 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) id().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) command().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(), "id")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          id().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(), "command")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          command().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 @SocketCAN_Types.SocketCAN_setsockopt: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@SocketCAN_Types.SocketCAN_setsockopt");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SocketCAN__setsockopt_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_id.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_setsockopt");
+single_value->field_command.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_setsockopt");
+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 : "@SocketCAN_Types.SocketCAN_setsockopt");
+}
+
+boolean SocketCAN__setsockopt_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SocketCAN__setsockopt_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+SocketCAN__setsockopt__result::SocketCAN__setsockopt__result()
+{
+}
+
+SocketCAN__setsockopt__result::SocketCAN__setsockopt__result(const SocketCAN__Result& par_result)
+  :   field_result(par_result)
+{
+}
+
+SocketCAN__setsockopt__result::SocketCAN__setsockopt__result(const SocketCAN__setsockopt__result& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @SocketCAN_Types.SocketCAN_setsockopt_result.");
+if (other_value.result().is_bound()) field_result = other_value.result();
+else field_result.clean_up();
+}
+
+void SocketCAN__setsockopt__result::clean_up()
+{
+field_result.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SocketCAN__setsockopt__result::get_descriptor() const { return &SocketCAN__setsockopt__result_descr_; }
+SocketCAN__setsockopt__result& SocketCAN__setsockopt__result::operator=(const SocketCAN__setsockopt__result& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @SocketCAN_Types.SocketCAN_setsockopt_result.");
+  if (other_value.result().is_bound()) field_result = other_value.result();
+  else field_result.clean_up();
+}
+return *this;
+}
+
+boolean SocketCAN__setsockopt__result::operator==(const SocketCAN__setsockopt__result& other_value) const
+{
+return field_result==other_value.field_result;
+}
+
+boolean SocketCAN__setsockopt__result::is_bound() const
+{
+return (field_result.is_bound());
+}
+boolean SocketCAN__setsockopt__result::is_value() const
+{
+return field_result.is_value();
+}
+void SocketCAN__setsockopt__result::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ result := ");
+field_result.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SocketCAN__setsockopt__result::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 (1<param.get_size()) {
+      param.error("record value of type @SocketCAN_Types.SocketCAN_setsockopt_result has 1 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) result().set_param(*param.get_elem(0));
+    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(), "result")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          result().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 @SocketCAN_Types.SocketCAN_setsockopt_result: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@SocketCAN_Types.SocketCAN_setsockopt_result");
+  }
+}
+
+void SocketCAN__setsockopt__result::set_implicit_omit()
+{
+if (result().is_bound()) result().set_implicit_omit();
+}
+
+void SocketCAN__setsockopt__result::encode_text(Text_Buf& text_buf) const
+{
+field_result.encode_text(text_buf);
+}
+
+void SocketCAN__setsockopt__result::decode_text(Text_Buf& text_buf)
+{
+field_result.decode_text(text_buf);
+}
+
+struct SocketCAN__setsockopt__result_template::single_value_struct {
+SocketCAN__Result_template field_result;
+};
+
+void SocketCAN__setsockopt__result_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_result = ANY_VALUE;
+}
+}
+}
+
+void SocketCAN__setsockopt__result_template::copy_value(const SocketCAN__setsockopt__result& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.result().is_bound()) {
+  single_value->field_result = other_value.result();
+} else {
+  single_value->field_result.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SocketCAN__setsockopt__result_template::copy_template(const SocketCAN__setsockopt__result_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.result().get_selection()) {
+single_value->field_result = other_value.result();
+} else {
+single_value->field_result.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SocketCAN__setsockopt__result_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_setsockopt_result.");
+break;
+}
+set_selection(other_value);
+}
+
+SocketCAN__setsockopt__result_template::SocketCAN__setsockopt__result_template()
+{
+}
+
+SocketCAN__setsockopt__result_template::SocketCAN__setsockopt__result_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SocketCAN__setsockopt__result_template::SocketCAN__setsockopt__result_template(const SocketCAN__setsockopt__result& other_value)
+{
+copy_value(other_value);
+}
+
+SocketCAN__setsockopt__result_template::SocketCAN__setsockopt__result_template(const OPTIONAL<SocketCAN__setsockopt__result>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__setsockopt__result&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @SocketCAN_Types.SocketCAN_setsockopt_result from an unbound optional field.");
+}
+}
+
+SocketCAN__setsockopt__result_template::SocketCAN__setsockopt__result_template(const SocketCAN__setsockopt__result_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SocketCAN__setsockopt__result_template::~SocketCAN__setsockopt__result_template()
+{
+clean_up();
+}
+
+SocketCAN__setsockopt__result_template& SocketCAN__setsockopt__result_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SocketCAN__setsockopt__result_template& SocketCAN__setsockopt__result_template::operator=(const SocketCAN__setsockopt__result& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SocketCAN__setsockopt__result_template& SocketCAN__setsockopt__result_template::operator=(const OPTIONAL<SocketCAN__setsockopt__result>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__setsockopt__result&)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 @SocketCAN_Types.SocketCAN_setsockopt_result.");
+}
+return *this;
+}
+
+SocketCAN__setsockopt__result_template& SocketCAN__setsockopt__result_template::operator=(const SocketCAN__setsockopt__result_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__setsockopt__result_template::match(const SocketCAN__setsockopt__result& 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.result().is_bound()) return FALSE;
+if(!single_value->field_result.match(other_value.result(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_setsockopt_result.");
+}
+return FALSE;
+}
+
+boolean SocketCAN__setsockopt__result_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_result.is_bound()
+;
+}
+
+boolean SocketCAN__setsockopt__result_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_result.is_value();
+}
+
+void SocketCAN__setsockopt__result_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SocketCAN__setsockopt__result SocketCAN__setsockopt__result_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 @SocketCAN_Types.SocketCAN_setsockopt_result.");
+SocketCAN__setsockopt__result ret_val;
+if (single_value->field_result.is_bound()) {
+ret_val.result() = single_value->field_result.valueof();
+}
+return ret_val;
+}
+
+void SocketCAN__setsockopt__result_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @SocketCAN_Types.SocketCAN_setsockopt_result.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SocketCAN__setsockopt__result_template[list_length];
+}
+
+SocketCAN__setsockopt__result_template& SocketCAN__setsockopt__result_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @SocketCAN_Types.SocketCAN_setsockopt_result.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @SocketCAN_Types.SocketCAN_setsockopt_result.");
+return value_list.list_value[list_index];
+}
+
+SocketCAN__Result_template& SocketCAN__setsockopt__result_template::result()
+{
+set_specific();
+return single_value->field_result;
+}
+
+const SocketCAN__Result_template& SocketCAN__setsockopt__result_template::result() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field result of a non-specific template of type @SocketCAN_Types.SocketCAN_setsockopt_result.");
+return single_value->field_result;
+}
+
+int SocketCAN__setsockopt__result_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_setsockopt_result which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 1;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_setsockopt_result 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 @SocketCAN_Types.SocketCAN_setsockopt_result containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_setsockopt_result containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_setsockopt_result containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_setsockopt_result containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_setsockopt_result.");
+  }
+  return 0;
+}
+
+void SocketCAN__setsockopt__result_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ result := ");
+single_value->field_result.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SocketCAN__setsockopt__result_template::log_match(const SocketCAN__setsockopt__result& 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_result.match(match_value.result(), legacy)){
+TTCN_Logger::log_logmatch_info(".result");
+single_value->field_result.log_match(match_value.result(), 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("{ result := ");
+single_value->field_result.log_match(match_value.result(), 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 SocketCAN__setsockopt__result_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_result.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 @SocketCAN_Types.SocketCAN_setsockopt_result.");
+}
+}
+
+void SocketCAN__setsockopt__result_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_result.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 SocketCAN__setsockopt__result_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 @SocketCAN_Types.SocketCAN_setsockopt_result.");
+}
+}
+
+void SocketCAN__setsockopt__result_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: {
+    SocketCAN__setsockopt__result_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (1<param.get_size()) {
+      param.error("record template of type @SocketCAN_Types.SocketCAN_setsockopt_result has 1 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) result().set_param(*param.get_elem(0));
+    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(), "result")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          result().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 @SocketCAN_Types.SocketCAN_setsockopt_result: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@SocketCAN_Types.SocketCAN_setsockopt_result");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SocketCAN__setsockopt__result_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_result.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_setsockopt_result");
+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 : "@SocketCAN_Types.SocketCAN_setsockopt_result");
+}
+
+boolean SocketCAN__setsockopt__result_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SocketCAN__setsockopt__result_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+SocketCAN__close::SocketCAN__close()
+{
+}
+
+SocketCAN__close::SocketCAN__close(const INTEGER& par_id)
+  :   field_id(par_id)
+{
+}
+
+SocketCAN__close::SocketCAN__close(const SocketCAN__close& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @SocketCAN_Types.SocketCAN_close.");
+if (other_value.id().is_bound()) field_id = other_value.id();
+else field_id.clean_up();
+}
+
+void SocketCAN__close::clean_up()
+{
+field_id.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SocketCAN__close::get_descriptor() const { return &SocketCAN__close_descr_; }
+SocketCAN__close& SocketCAN__close::operator=(const SocketCAN__close& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @SocketCAN_Types.SocketCAN_close.");
+  if (other_value.id().is_bound()) field_id = other_value.id();
+  else field_id.clean_up();
+}
+return *this;
+}
+
+boolean SocketCAN__close::operator==(const SocketCAN__close& other_value) const
+{
+return field_id==other_value.field_id;
+}
+
+boolean SocketCAN__close::is_bound() const
+{
+return (field_id.is_bound());
+}
+boolean SocketCAN__close::is_value() const
+{
+return field_id.is_value();
+}
+void SocketCAN__close::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ id := ");
+field_id.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SocketCAN__close::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 (1<param.get_size()) {
+      param.error("record value of type @SocketCAN_Types.SocketCAN_close has 1 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) id().set_param(*param.get_elem(0));
+    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(), "id")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          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 @SocketCAN_Types.SocketCAN_close: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@SocketCAN_Types.SocketCAN_close");
+  }
+}
+
+void SocketCAN__close::set_implicit_omit()
+{
+if (id().is_bound()) id().set_implicit_omit();
+}
+
+void SocketCAN__close::encode_text(Text_Buf& text_buf) const
+{
+field_id.encode_text(text_buf);
+}
+
+void SocketCAN__close::decode_text(Text_Buf& text_buf)
+{
+field_id.decode_text(text_buf);
+}
+
+struct SocketCAN__close_template::single_value_struct {
+INTEGER_template field_id;
+};
+
+void SocketCAN__close_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_id = ANY_VALUE;
+}
+}
+}
+
+void SocketCAN__close_template::copy_value(const SocketCAN__close& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.id().is_bound()) {
+  single_value->field_id = other_value.id();
+} else {
+  single_value->field_id.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SocketCAN__close_template::copy_template(const SocketCAN__close_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.id().get_selection()) {
+single_value->field_id = other_value.id();
+} else {
+single_value->field_id.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SocketCAN__close_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_close.");
+break;
+}
+set_selection(other_value);
+}
+
+SocketCAN__close_template::SocketCAN__close_template()
+{
+}
+
+SocketCAN__close_template::SocketCAN__close_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SocketCAN__close_template::SocketCAN__close_template(const SocketCAN__close& other_value)
+{
+copy_value(other_value);
+}
+
+SocketCAN__close_template::SocketCAN__close_template(const OPTIONAL<SocketCAN__close>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__close&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @SocketCAN_Types.SocketCAN_close from an unbound optional field.");
+}
+}
+
+SocketCAN__close_template::SocketCAN__close_template(const SocketCAN__close_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SocketCAN__close_template::~SocketCAN__close_template()
+{
+clean_up();
+}
+
+SocketCAN__close_template& SocketCAN__close_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SocketCAN__close_template& SocketCAN__close_template::operator=(const SocketCAN__close& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SocketCAN__close_template& SocketCAN__close_template::operator=(const OPTIONAL<SocketCAN__close>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__close&)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 @SocketCAN_Types.SocketCAN_close.");
+}
+return *this;
+}
+
+SocketCAN__close_template& SocketCAN__close_template::operator=(const SocketCAN__close_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__close_template::match(const SocketCAN__close& 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.id().is_bound()) return FALSE;
+if(!single_value->field_id.match(other_value.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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_close.");
+}
+return FALSE;
+}
+
+boolean SocketCAN__close_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_id.is_bound()
+;
+}
+
+boolean SocketCAN__close_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_id.is_value();
+}
+
+void SocketCAN__close_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SocketCAN__close SocketCAN__close_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 @SocketCAN_Types.SocketCAN_close.");
+SocketCAN__close ret_val;
+if (single_value->field_id.is_bound()) {
+ret_val.id() = single_value->field_id.valueof();
+}
+return ret_val;
+}
+
+void SocketCAN__close_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @SocketCAN_Types.SocketCAN_close.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SocketCAN__close_template[list_length];
+}
+
+SocketCAN__close_template& SocketCAN__close_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @SocketCAN_Types.SocketCAN_close.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @SocketCAN_Types.SocketCAN_close.");
+return value_list.list_value[list_index];
+}
+
+INTEGER_template& SocketCAN__close_template::id()
+{
+set_specific();
+return single_value->field_id;
+}
+
+const INTEGER_template& SocketCAN__close_template::id() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field id of a non-specific template of type @SocketCAN_Types.SocketCAN_close.");
+return single_value->field_id;
+}
+
+int SocketCAN__close_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_close which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 1;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_close 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 @SocketCAN_Types.SocketCAN_close containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_close containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_close containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCAN_Types.SocketCAN_close containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @SocketCAN_Types.SocketCAN_close.");
+  }
+  return 0;
+}
+
+void SocketCAN__close_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ id := ");
+single_value->field_id.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SocketCAN__close_template::log_match(const SocketCAN__close& 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_id.match(match_value.id(), legacy)){
+TTCN_Logger::log_logmatch_info(".id");
+single_value->field_id.log_match(match_value.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("{ id := ");
+single_value->field_id.log_match(match_value.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 SocketCAN__close_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_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 @SocketCAN_Types.SocketCAN_close.");
+}
+}
+
+void SocketCAN__close_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_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 SocketCAN__close_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 @SocketCAN_Types.SocketCAN_close.");
+}
+}
+
+void SocketCAN__close_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: {
+    SocketCAN__close_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (1<param.get_size()) {
+      param.error("record template of type @SocketCAN_Types.SocketCAN_close has 1 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) id().set_param(*param.get_elem(0));
+    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(), "id")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          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 @SocketCAN_Types.SocketCAN_close: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@SocketCAN_Types.SocketCAN_close");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SocketCAN__close_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_id.check_restriction(t_res, t_name ? t_name : "@SocketCAN_Types.SocketCAN_close");
+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 : "@SocketCAN_Types.SocketCAN_close");
+}
+
+boolean SocketCAN__close_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SocketCAN__close_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+
+/* Bodies of functions, altsteps and testcases */
+
+boolean operator==(null_type, const CAN__RAW__filters& other_value)
+{
+if (other_value.val_ptr == NULL)
+TTCN_error("The right operand of comparison is an unbound value of type @SocketCAN_Types.CAN_RAW_filters.");
+return other_value.val_ptr->n_elements == 0;
+}
+
+
+/* Bodies of static functions */
+
+static void pre_init_module()
+{
+TTCN_Location current_location("../src/SocketCAN_Types.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "SocketCAN_Types");
+Bcm::module_object.pre_init_module();
+Raw::module_object.pre_init_module();
+}
+
+static void post_init_module()
+{
+TTCN_Location current_location("../src/SocketCAN_Types.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "SocketCAN_Types");
+Bcm::module_object.post_init_module();
+Raw::module_object.post_init_module();
+}
+
+
+} /* end of namespace */
diff --git a/demo/SocketCAN_Types.d b/demo/SocketCAN_Types.d
new file mode 100644
index 0000000..2e9c0f9
--- /dev/null
+++ b/demo/SocketCAN_Types.d
@@ -0,0 +1,59 @@
+SocketCAN_Types.o SocketCAN_Types.d : SocketCAN_Types.cc SocketCAN_Types.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TTCN3.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/version.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/cversion.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Types.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Vector.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Error.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Basetype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Encdec.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RInt.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON_Tokenizer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Logger.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Template.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Integer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ttcn3float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Boolean.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Null.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Optional.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Param_Types.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/memory.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/BER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Textbuf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Parameters.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XmlReader.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Objid.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Verdicttype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Component.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Bitstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RAW.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/CharCoding.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Hexstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Octetstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Any.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Universal_charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Struct_of.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Array.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_CharacterString.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_External.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TEXT.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_EmbeddedPDV.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Addfunc.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Timer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Port.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Event_Handler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/TitanLoggerApiSimple.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/PreGenRecordOf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Module_list.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Snapshot.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Default.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Runtime.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/OER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Profiler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ProfilerTools.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Debugger.hh Bcm.hh \
+ Can.hh General_Types.hh Raw.hh
diff --git a/demo/SocketCAN_Types.hh b/demo/SocketCAN_Types.hh
new file mode 100644
index 0000000..bdaa905
--- /dev/null
+++ b/demo/SocketCAN_Types.hh
@@ -0,0 +1,3323 @@
+// This C++ header file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+#ifndef SocketCAN__Types_HH
+#define SocketCAN__Types_HH
+
+#ifdef TITAN_RUNTIME_2
+#error Generated code does not match with used runtime.\
+ Code was generated without -R option but -DTITAN_RUNTIME_2 was used.
+#endif
+
+/* Header file includes */
+
+#include <TTCN3.hh>
+#include "Bcm.hh"
+#include "Raw.hh"
+
+#if TTCN3_VERSION != 60600
+#error Version mismatch detected.\
+ Please check the version of the TTCN-3 compiler and the base library.\
+ Run make clean and rebuild the project if the version of the compiler changed recently.
+#endif
+
+#ifndef LINUX
+#error This file should be compiled on LINUX
+#endif
+
+#undef SocketCAN__Types_HH
+#endif
+
+namespace SocketCAN__Types {
+
+/* Forward declarations of classes */
+
+class SocketCAN__timeval;
+class SocketCAN__timeval_template;
+class SocketCAN__CAN__or__CAN__FD__frame;
+class SocketCAN__CAN__or__CAN__FD__frame_template;
+class SocketCAN__ifr;
+class SocketCAN__ifr_template;
+class SocketCAN__if__any;
+class SocketCAN__if__any_template;
+class SocketCAN__send__data__ifu;
+class SocketCAN__send__data__ifu_template;
+class SocketCAN__ioctl__ifu;
+class SocketCAN__ioctl__ifu_template;
+class SocketCAN__Result__code;
+class SocketCAN__Result__code_template;
+class SocketCAN__Result;
+class SocketCAN__Result_template;
+class SocketCAN__socket;
+class SocketCAN__socket_template;
+class SocketCAN__socket__result;
+class SocketCAN__socket__result_template;
+class SocketCAN__ioctl;
+class SocketCAN__ioctl_template;
+class SocketCAN__ioctl__result;
+class SocketCAN__ioctl__result_template;
+class SocketCAN__connectu;
+class SocketCAN__connectu_template;
+class SocketCAN__connect__bcm;
+class SocketCAN__connect__bcm_template;
+class SocketCAN__connect;
+class SocketCAN__connect_template;
+class SocketCAN__connect__result;
+class SocketCAN__connect__result_template;
+class SocketCAN__bind__raw;
+class SocketCAN__bind__raw_template;
+class SocketCAN__bind__isotp;
+class SocketCAN__bind__isotp_template;
+class SocketCAN__bindu;
+class SocketCAN__bindu_template;
+class SocketCAN__bind;
+class SocketCAN__bind_template;
+class SocketCAN__bind__result;
+class SocketCAN__bind__result_template;
+class SocketCAN__send__data;
+class SocketCAN__send__data_template;
+class SocketCAN__send__data__result;
+class SocketCAN__send__data__result_template;
+class SocketCAN__write__data;
+class SocketCAN__write__data_template;
+class SocketCAN__write__data__result;
+class SocketCAN__write__data__result_template;
+class SocketCAN__write__isotp;
+class SocketCAN__write__isotp_template;
+class SocketCAN__write__isotp__result;
+class SocketCAN__write__isotp__result_template;
+class SocketCAN__receive__CAN__or__CAN__FD__frame;
+class SocketCAN__receive__CAN__or__CAN__FD__frame_template;
+class SocketCAN__receive__BCM__message;
+class SocketCAN__receive__BCM__message_template;
+class SocketCAN__receive__isotp__pdu;
+class SocketCAN__receive__isotp__pdu_template;
+class CAN__RAW__filters;
+class CAN__RAW__filters_template;
+class SocketCAN__setsockopt__commandu;
+class SocketCAN__setsockopt__commandu_template;
+class SocketCAN__setsockopt;
+class SocketCAN__setsockopt_template;
+class SocketCAN__setsockopt__result;
+class SocketCAN__setsockopt__result_template;
+class SocketCAN__close;
+class SocketCAN__close_template;
+
+} /* end of namespace */
+
+#ifndef SocketCAN__Types_HH
+#define SocketCAN__Types_HH
+
+namespace SocketCAN__Types {
+
+/* Type definitions */
+
+typedef INTEGER SocketCAN__socketid;
+typedef INTEGER_template SocketCAN__socketid_template;
+typedef CHARSTRING SocketCAN__if__name;
+typedef CHARSTRING_template SocketCAN__if__name_template;
+typedef INTEGER SocketCAN__if__index;
+typedef INTEGER_template SocketCAN__if__index_template;
+typedef OCTETSTRING SocketCAN__Isotp__PDU;
+typedef OCTETSTRING_template SocketCAN__Isotp__PDU_template;
+
+/* Class definitions */
+
+class SocketCAN__timeval {
+  INTEGER field_tv__sec;
+  INTEGER field_tv__usec;
+public:
+  SocketCAN__timeval();
+  SocketCAN__timeval(const INTEGER& par_tv__sec,
+    const INTEGER& par_tv__usec);
+  SocketCAN__timeval(const SocketCAN__timeval& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SocketCAN__timeval& operator=(const SocketCAN__timeval& other_value);
+  boolean operator==(const SocketCAN__timeval& other_value) const;
+  inline boolean operator!=(const SocketCAN__timeval& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& tv__sec()
+    {return field_tv__sec;}
+  inline const INTEGER& tv__sec() const
+    {return field_tv__sec;}
+  inline INTEGER& tv__usec()
+    {return field_tv__usec;}
+  inline const INTEGER& tv__usec() const
+    {return field_tv__usec;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+};
+
+class SocketCAN__timeval_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SocketCAN__timeval_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SocketCAN__timeval& other_value);
+void copy_template(const SocketCAN__timeval_template& other_value);
+
+public:
+SocketCAN__timeval_template();
+SocketCAN__timeval_template(template_sel other_value);
+SocketCAN__timeval_template(const SocketCAN__timeval& other_value);
+SocketCAN__timeval_template(const OPTIONAL<SocketCAN__timeval>& other_value);
+SocketCAN__timeval_template(const SocketCAN__timeval_template& other_value);
+~SocketCAN__timeval_template();
+SocketCAN__timeval_template& operator=(template_sel other_value);
+SocketCAN__timeval_template& operator=(const SocketCAN__timeval& other_value);
+SocketCAN__timeval_template& operator=(const OPTIONAL<SocketCAN__timeval>& other_value);
+SocketCAN__timeval_template& operator=(const SocketCAN__timeval_template& other_value);
+boolean match(const SocketCAN__timeval& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SocketCAN__timeval valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SocketCAN__timeval_template& list_item(unsigned int list_index) const;
+INTEGER_template& tv__sec();
+const INTEGER_template& tv__sec() const;
+INTEGER_template& tv__usec();
+const INTEGER_template& tv__usec() const;
+int size_of() const;
+void log() const;
+void log_match(const SocketCAN__timeval& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SocketCAN__CAN__or__CAN__FD__frame : public Base_Type {
+public:
+enum union_selection_type { UNBOUND_VALUE = 0, ALT_can__frame = 1, ALT_canfd__frame = 2 };
+private:
+union_selection_type union_selection;
+union {
+Can::CAN__frame *field_can__frame;
+Can::CANFD__frame *field_canfd__frame;
+};
+void copy_value(const SocketCAN__CAN__or__CAN__FD__frame& other_value);
+
+public:
+SocketCAN__CAN__or__CAN__FD__frame();
+SocketCAN__CAN__or__CAN__FD__frame(const SocketCAN__CAN__or__CAN__FD__frame& other_value);
+~SocketCAN__CAN__or__CAN__FD__frame();
+SocketCAN__CAN__or__CAN__FD__frame& operator=(const SocketCAN__CAN__or__CAN__FD__frame& other_value);
+boolean operator==(const SocketCAN__CAN__or__CAN__FD__frame& other_value) const;
+inline boolean operator!=(const SocketCAN__CAN__or__CAN__FD__frame& other_value) const { return !(*this == other_value); }
+Can::CAN__frame& can__frame();
+const Can::CAN__frame& can__frame() const;
+Can::CANFD__frame& canfd__frame();
+const Can::CANFD__frame& canfd__frame() const;
+inline union_selection_type get_selection() const { return union_selection; }
+boolean ischosen(union_selection_type checked_selection) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+};
+
+class SocketCAN__CAN__or__CAN__FD__frame_template : public Base_Template {
+union {
+struct {
+SocketCAN__CAN__or__CAN__FD__frame::union_selection_type union_selection;
+union {
+Can::CAN__frame_template *field_can__frame;
+Can::CANFD__frame_template *field_canfd__frame;
+};
+} single_value;
+struct {
+unsigned int n_values;
+SocketCAN__CAN__or__CAN__FD__frame_template *list_value;
+} value_list;
+};
+void copy_value(const SocketCAN__CAN__or__CAN__FD__frame& other_value);
+
+void copy_template(const SocketCAN__CAN__or__CAN__FD__frame_template& other_value);
+
+public:
+SocketCAN__CAN__or__CAN__FD__frame_template();
+SocketCAN__CAN__or__CAN__FD__frame_template(template_sel other_value);
+SocketCAN__CAN__or__CAN__FD__frame_template(const SocketCAN__CAN__or__CAN__FD__frame& other_value);
+SocketCAN__CAN__or__CAN__FD__frame_template(const OPTIONAL<SocketCAN__CAN__or__CAN__FD__frame>& other_value);
+SocketCAN__CAN__or__CAN__FD__frame_template(const SocketCAN__CAN__or__CAN__FD__frame_template& other_value);
+~SocketCAN__CAN__or__CAN__FD__frame_template();
+void clean_up();
+SocketCAN__CAN__or__CAN__FD__frame_template& operator=(template_sel other_value);
+SocketCAN__CAN__or__CAN__FD__frame_template& operator=(const SocketCAN__CAN__or__CAN__FD__frame& other_value);
+SocketCAN__CAN__or__CAN__FD__frame_template& operator=(const OPTIONAL<SocketCAN__CAN__or__CAN__FD__frame>& other_value);
+SocketCAN__CAN__or__CAN__FD__frame_template& operator=(const SocketCAN__CAN__or__CAN__FD__frame_template& other_value);
+boolean match(const SocketCAN__CAN__or__CAN__FD__frame& other_value, boolean legacy = FALSE) const;
+boolean is_value() const;SocketCAN__CAN__or__CAN__FD__frame valueof() const;
+SocketCAN__CAN__or__CAN__FD__frame_template& list_item(unsigned int list_index) const;
+void set_type(template_sel template_type, unsigned int list_length);
+Can::CAN__frame_template& can__frame();
+const Can::CAN__frame_template& can__frame() const;
+Can::CANFD__frame_template& canfd__frame();
+const Can::CANFD__frame_template& canfd__frame() const;
+boolean ischosen(SocketCAN__CAN__or__CAN__FD__frame::union_selection_type checked_selection) const;
+void log() const;
+void log_match(const SocketCAN__CAN__or__CAN__FD__frame& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class SocketCAN__ifr {
+  OPTIONAL<CHARSTRING> field_if__name;
+  OPTIONAL<INTEGER> field_if__index;
+public:
+  SocketCAN__ifr();
+  SocketCAN__ifr(const OPTIONAL<CHARSTRING>& par_if__name,
+    const OPTIONAL<INTEGER>& par_if__index);
+  SocketCAN__ifr(const SocketCAN__ifr& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SocketCAN__ifr& operator=(const SocketCAN__ifr& other_value);
+  boolean operator==(const SocketCAN__ifr& other_value) const;
+  inline boolean operator!=(const SocketCAN__ifr& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OPTIONAL<CHARSTRING>& if__name()
+    {return field_if__name;}
+  inline const OPTIONAL<CHARSTRING>& if__name() const
+    {return field_if__name;}
+  inline OPTIONAL<INTEGER>& if__index()
+    {return field_if__index;}
+  inline const OPTIONAL<INTEGER>& if__index() const
+    {return field_if__index;}
+  int size_of() const;
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+};
+
+class SocketCAN__ifr_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SocketCAN__ifr_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SocketCAN__ifr& other_value);
+void copy_template(const SocketCAN__ifr_template& other_value);
+
+public:
+SocketCAN__ifr_template();
+SocketCAN__ifr_template(template_sel other_value);
+SocketCAN__ifr_template(const SocketCAN__ifr& other_value);
+SocketCAN__ifr_template(const OPTIONAL<SocketCAN__ifr>& other_value);
+SocketCAN__ifr_template(const SocketCAN__ifr_template& other_value);
+~SocketCAN__ifr_template();
+SocketCAN__ifr_template& operator=(template_sel other_value);
+SocketCAN__ifr_template& operator=(const SocketCAN__ifr& other_value);
+SocketCAN__ifr_template& operator=(const OPTIONAL<SocketCAN__ifr>& other_value);
+SocketCAN__ifr_template& operator=(const SocketCAN__ifr_template& other_value);
+boolean match(const SocketCAN__ifr& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SocketCAN__ifr valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SocketCAN__ifr_template& list_item(unsigned int list_index) const;
+CHARSTRING_template& if__name();
+const CHARSTRING_template& if__name() const;
+INTEGER_template& if__index();
+const INTEGER_template& if__index() const;
+int size_of() const;
+void log() const;
+void log_match(const SocketCAN__ifr& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SocketCAN__if__any : public Base_Type { // enum
+friend class SocketCAN__if__any_template;
+public:
+enum enum_type { ANY__INTERFACE = 0, UNKNOWN_VALUE = 1, UNBOUND_VALUE = 2 };
+private:
+enum_type enum_value;
+
+public:
+SocketCAN__if__any();
+SocketCAN__if__any(int other_value);
+SocketCAN__if__any(enum_type other_value);
+SocketCAN__if__any(const SocketCAN__if__any& other_value);
+
+SocketCAN__if__any& operator=(int other_value);
+SocketCAN__if__any& operator=(enum_type other_value);
+SocketCAN__if__any& operator=(const SocketCAN__if__any& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const SocketCAN__if__any& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const SocketCAN__if__any& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const SocketCAN__if__any& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const SocketCAN__if__any& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const SocketCAN__if__any& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const SocketCAN__if__any& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const SocketCAN__if__any& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+};
+
+class SocketCAN__if__any_template : public Base_Template {
+union {
+SocketCAN__if__any::enum_type single_value;
+struct {
+unsigned int n_values;
+SocketCAN__if__any_template *list_value;
+} value_list;
+};
+
+void copy_template(const SocketCAN__if__any_template& other_value);
+
+public:
+SocketCAN__if__any_template();
+SocketCAN__if__any_template(template_sel other_value);
+SocketCAN__if__any_template(int other_value);
+SocketCAN__if__any_template(SocketCAN__if__any::enum_type other_value);
+SocketCAN__if__any_template(const SocketCAN__if__any& other_value);
+SocketCAN__if__any_template(const OPTIONAL<SocketCAN__if__any>& other_value);
+SocketCAN__if__any_template(const SocketCAN__if__any_template& other_value);
+~SocketCAN__if__any_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SocketCAN__if__any_template& operator=(template_sel other_value);
+SocketCAN__if__any_template& operator=(int other_value);
+SocketCAN__if__any_template& operator=(SocketCAN__if__any::enum_type other_value);
+SocketCAN__if__any_template& operator=(const SocketCAN__if__any& other_value);
+SocketCAN__if__any_template& operator=(const OPTIONAL<SocketCAN__if__any>& other_value);
+SocketCAN__if__any_template& operator=(const SocketCAN__if__any_template& other_value);
+
+boolean match(SocketCAN__if__any::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const SocketCAN__if__any& other_value, boolean legacy = FALSE) const;
+SocketCAN__if__any::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SocketCAN__if__any_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const SocketCAN__if__any& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class SocketCAN__send__data__ifu : public Base_Type {
+public:
+enum union_selection_type { UNBOUND_VALUE = 0, ALT_if__name = 1, ALT_if__index = 2, ALT_if__any = 3 };
+private:
+union_selection_type union_selection;
+union {
+CHARSTRING *field_if__name;
+INTEGER *field_if__index;
+SocketCAN__if__any *field_if__any;
+};
+void copy_value(const SocketCAN__send__data__ifu& other_value);
+
+public:
+SocketCAN__send__data__ifu();
+SocketCAN__send__data__ifu(const SocketCAN__send__data__ifu& other_value);
+~SocketCAN__send__data__ifu();
+SocketCAN__send__data__ifu& operator=(const SocketCAN__send__data__ifu& other_value);
+boolean operator==(const SocketCAN__send__data__ifu& other_value) const;
+inline boolean operator!=(const SocketCAN__send__data__ifu& other_value) const { return !(*this == other_value); }
+CHARSTRING& if__name();
+const CHARSTRING& if__name() const;
+INTEGER& if__index();
+const INTEGER& if__index() const;
+SocketCAN__if__any& if__any();
+const SocketCAN__if__any& if__any() const;
+inline union_selection_type get_selection() const { return union_selection; }
+boolean ischosen(union_selection_type checked_selection) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+};
+
+class SocketCAN__send__data__ifu_template : public Base_Template {
+union {
+struct {
+SocketCAN__send__data__ifu::union_selection_type union_selection;
+union {
+CHARSTRING_template *field_if__name;
+INTEGER_template *field_if__index;
+SocketCAN__if__any_template *field_if__any;
+};
+} single_value;
+struct {
+unsigned int n_values;
+SocketCAN__send__data__ifu_template *list_value;
+} value_list;
+};
+void copy_value(const SocketCAN__send__data__ifu& other_value);
+
+void copy_template(const SocketCAN__send__data__ifu_template& other_value);
+
+public:
+SocketCAN__send__data__ifu_template();
+SocketCAN__send__data__ifu_template(template_sel other_value);
+SocketCAN__send__data__ifu_template(const SocketCAN__send__data__ifu& other_value);
+SocketCAN__send__data__ifu_template(const OPTIONAL<SocketCAN__send__data__ifu>& other_value);
+SocketCAN__send__data__ifu_template(const SocketCAN__send__data__ifu_template& other_value);
+~SocketCAN__send__data__ifu_template();
+void clean_up();
+SocketCAN__send__data__ifu_template& operator=(template_sel other_value);
+SocketCAN__send__data__ifu_template& operator=(const SocketCAN__send__data__ifu& other_value);
+SocketCAN__send__data__ifu_template& operator=(const OPTIONAL<SocketCAN__send__data__ifu>& other_value);
+SocketCAN__send__data__ifu_template& operator=(const SocketCAN__send__data__ifu_template& other_value);
+boolean match(const SocketCAN__send__data__ifu& other_value, boolean legacy = FALSE) const;
+boolean is_value() const;SocketCAN__send__data__ifu valueof() const;
+SocketCAN__send__data__ifu_template& list_item(unsigned int list_index) const;
+void set_type(template_sel template_type, unsigned int list_length);
+CHARSTRING_template& if__name();
+const CHARSTRING_template& if__name() const;
+INTEGER_template& if__index();
+const INTEGER_template& if__index() const;
+SocketCAN__if__any_template& if__any();
+const SocketCAN__if__any_template& if__any() const;
+boolean ischosen(SocketCAN__send__data__ifu::union_selection_type checked_selection) const;
+void log() const;
+void log_match(const SocketCAN__send__data__ifu& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class SocketCAN__ioctl__ifu : public Base_Type {
+public:
+enum union_selection_type { UNBOUND_VALUE = 0, ALT_if__name = 1, ALT_if__index = 2, ALT_if__any = 3 };
+private:
+union_selection_type union_selection;
+union {
+CHARSTRING *field_if__name;
+INTEGER *field_if__index;
+SocketCAN__if__any *field_if__any;
+};
+void copy_value(const SocketCAN__ioctl__ifu& other_value);
+
+public:
+SocketCAN__ioctl__ifu();
+SocketCAN__ioctl__ifu(const SocketCAN__ioctl__ifu& other_value);
+~SocketCAN__ioctl__ifu();
+SocketCAN__ioctl__ifu& operator=(const SocketCAN__ioctl__ifu& other_value);
+boolean operator==(const SocketCAN__ioctl__ifu& other_value) const;
+inline boolean operator!=(const SocketCAN__ioctl__ifu& other_value) const { return !(*this == other_value); }
+CHARSTRING& if__name();
+const CHARSTRING& if__name() const;
+INTEGER& if__index();
+const INTEGER& if__index() const;
+SocketCAN__if__any& if__any();
+const SocketCAN__if__any& if__any() const;
+inline union_selection_type get_selection() const { return union_selection; }
+boolean ischosen(union_selection_type checked_selection) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+};
+
+class SocketCAN__ioctl__ifu_template : public Base_Template {
+union {
+struct {
+SocketCAN__ioctl__ifu::union_selection_type union_selection;
+union {
+CHARSTRING_template *field_if__name;
+INTEGER_template *field_if__index;
+SocketCAN__if__any_template *field_if__any;
+};
+} single_value;
+struct {
+unsigned int n_values;
+SocketCAN__ioctl__ifu_template *list_value;
+} value_list;
+};
+void copy_value(const SocketCAN__ioctl__ifu& other_value);
+
+void copy_template(const SocketCAN__ioctl__ifu_template& other_value);
+
+public:
+SocketCAN__ioctl__ifu_template();
+SocketCAN__ioctl__ifu_template(template_sel other_value);
+SocketCAN__ioctl__ifu_template(const SocketCAN__ioctl__ifu& other_value);
+SocketCAN__ioctl__ifu_template(const OPTIONAL<SocketCAN__ioctl__ifu>& other_value);
+SocketCAN__ioctl__ifu_template(const SocketCAN__ioctl__ifu_template& other_value);
+~SocketCAN__ioctl__ifu_template();
+void clean_up();
+SocketCAN__ioctl__ifu_template& operator=(template_sel other_value);
+SocketCAN__ioctl__ifu_template& operator=(const SocketCAN__ioctl__ifu& other_value);
+SocketCAN__ioctl__ifu_template& operator=(const OPTIONAL<SocketCAN__ioctl__ifu>& other_value);
+SocketCAN__ioctl__ifu_template& operator=(const SocketCAN__ioctl__ifu_template& other_value);
+boolean match(const SocketCAN__ioctl__ifu& other_value, boolean legacy = FALSE) const;
+boolean is_value() const;SocketCAN__ioctl__ifu valueof() const;
+SocketCAN__ioctl__ifu_template& list_item(unsigned int list_index) const;
+void set_type(template_sel template_type, unsigned int list_length);
+CHARSTRING_template& if__name();
+const CHARSTRING_template& if__name() const;
+INTEGER_template& if__index();
+const INTEGER_template& if__index() const;
+SocketCAN__if__any_template& if__any();
+const SocketCAN__if__any_template& if__any() const;
+boolean ischosen(SocketCAN__ioctl__ifu::union_selection_type checked_selection) const;
+void log() const;
+void log_match(const SocketCAN__ioctl__ifu& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class SocketCAN__Result__code : public Base_Type { // enum
+friend class SocketCAN__Result__code_template;
+public:
+enum enum_type { SocketCAN__ERROR = 0, SocketCAN__SUCCESS = 1, UNKNOWN_VALUE = 2, UNBOUND_VALUE = 3 };
+private:
+enum_type enum_value;
+
+public:
+SocketCAN__Result__code();
+SocketCAN__Result__code(int other_value);
+SocketCAN__Result__code(enum_type other_value);
+SocketCAN__Result__code(const SocketCAN__Result__code& other_value);
+
+SocketCAN__Result__code& operator=(int other_value);
+SocketCAN__Result__code& operator=(enum_type other_value);
+SocketCAN__Result__code& operator=(const SocketCAN__Result__code& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const SocketCAN__Result__code& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const SocketCAN__Result__code& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const SocketCAN__Result__code& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const SocketCAN__Result__code& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const SocketCAN__Result__code& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const SocketCAN__Result__code& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const SocketCAN__Result__code& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+};
+
+class SocketCAN__Result__code_template : public Base_Template {
+union {
+SocketCAN__Result__code::enum_type single_value;
+struct {
+unsigned int n_values;
+SocketCAN__Result__code_template *list_value;
+} value_list;
+};
+
+void copy_template(const SocketCAN__Result__code_template& other_value);
+
+public:
+SocketCAN__Result__code_template();
+SocketCAN__Result__code_template(template_sel other_value);
+SocketCAN__Result__code_template(int other_value);
+SocketCAN__Result__code_template(SocketCAN__Result__code::enum_type other_value);
+SocketCAN__Result__code_template(const SocketCAN__Result__code& other_value);
+SocketCAN__Result__code_template(const OPTIONAL<SocketCAN__Result__code>& other_value);
+SocketCAN__Result__code_template(const SocketCAN__Result__code_template& other_value);
+~SocketCAN__Result__code_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SocketCAN__Result__code_template& operator=(template_sel other_value);
+SocketCAN__Result__code_template& operator=(int other_value);
+SocketCAN__Result__code_template& operator=(SocketCAN__Result__code::enum_type other_value);
+SocketCAN__Result__code_template& operator=(const SocketCAN__Result__code& other_value);
+SocketCAN__Result__code_template& operator=(const OPTIONAL<SocketCAN__Result__code>& other_value);
+SocketCAN__Result__code_template& operator=(const SocketCAN__Result__code_template& other_value);
+
+boolean match(SocketCAN__Result__code::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const SocketCAN__Result__code& other_value, boolean legacy = FALSE) const;
+SocketCAN__Result__code::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SocketCAN__Result__code_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const SocketCAN__Result__code& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class SocketCAN__Result {
+  SocketCAN__Result__code field_result__code;
+  OPTIONAL<INTEGER> field_err;
+  OPTIONAL<CHARSTRING> field_err__text;
+public:
+  SocketCAN__Result();
+  SocketCAN__Result(const SocketCAN__Result__code& par_result__code,
+    const OPTIONAL<INTEGER>& par_err,
+    const OPTIONAL<CHARSTRING>& par_err__text);
+  SocketCAN__Result(const SocketCAN__Result& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SocketCAN__Result& operator=(const SocketCAN__Result& other_value);
+  boolean operator==(const SocketCAN__Result& other_value) const;
+  inline boolean operator!=(const SocketCAN__Result& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline SocketCAN__Result__code& result__code()
+    {return field_result__code;}
+  inline const SocketCAN__Result__code& result__code() const
+    {return field_result__code;}
+  inline OPTIONAL<INTEGER>& err()
+    {return field_err;}
+  inline const OPTIONAL<INTEGER>& err() const
+    {return field_err;}
+  inline OPTIONAL<CHARSTRING>& err__text()
+    {return field_err__text;}
+  inline const OPTIONAL<CHARSTRING>& err__text() const
+    {return field_err__text;}
+  int size_of() const;
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+};
+
+class SocketCAN__Result_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SocketCAN__Result_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SocketCAN__Result& other_value);
+void copy_template(const SocketCAN__Result_template& other_value);
+
+public:
+SocketCAN__Result_template();
+SocketCAN__Result_template(template_sel other_value);
+SocketCAN__Result_template(const SocketCAN__Result& other_value);
+SocketCAN__Result_template(const OPTIONAL<SocketCAN__Result>& other_value);
+SocketCAN__Result_template(const SocketCAN__Result_template& other_value);
+~SocketCAN__Result_template();
+SocketCAN__Result_template& operator=(template_sel other_value);
+SocketCAN__Result_template& operator=(const SocketCAN__Result& other_value);
+SocketCAN__Result_template& operator=(const OPTIONAL<SocketCAN__Result>& other_value);
+SocketCAN__Result_template& operator=(const SocketCAN__Result_template& other_value);
+boolean match(const SocketCAN__Result& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SocketCAN__Result valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SocketCAN__Result_template& list_item(unsigned int list_index) const;
+SocketCAN__Result__code_template& result__code();
+const SocketCAN__Result__code_template& result__code() const;
+INTEGER_template& err();
+const INTEGER_template& err() const;
+CHARSTRING_template& err__text();
+const CHARSTRING_template& err__text() const;
+int size_of() const;
+void log() const;
+void log_match(const SocketCAN__Result& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SocketCAN__socket {
+  Can::AdresseFamily__enum field_domain;
+  Can::ProtocolFamily__enum field_ptype;
+  Can::PF__CAN__protocols__enum field_protocol;
+public:
+  SocketCAN__socket();
+  SocketCAN__socket(const Can::AdresseFamily__enum& par_domain,
+    const Can::ProtocolFamily__enum& par_ptype,
+    const Can::PF__CAN__protocols__enum& par_protocol);
+  SocketCAN__socket(const SocketCAN__socket& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SocketCAN__socket& operator=(const SocketCAN__socket& other_value);
+  boolean operator==(const SocketCAN__socket& other_value) const;
+  inline boolean operator!=(const SocketCAN__socket& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline Can::AdresseFamily__enum& domain()
+    {return field_domain;}
+  inline const Can::AdresseFamily__enum& domain() const
+    {return field_domain;}
+  inline Can::ProtocolFamily__enum& ptype()
+    {return field_ptype;}
+  inline const Can::ProtocolFamily__enum& ptype() const
+    {return field_ptype;}
+  inline Can::PF__CAN__protocols__enum& protocol()
+    {return field_protocol;}
+  inline const Can::PF__CAN__protocols__enum& protocol() const
+    {return field_protocol;}
+  inline int size_of() const
+    {return 3;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+};
+
+class SocketCAN__socket_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SocketCAN__socket_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SocketCAN__socket& other_value);
+void copy_template(const SocketCAN__socket_template& other_value);
+
+public:
+SocketCAN__socket_template();
+SocketCAN__socket_template(template_sel other_value);
+SocketCAN__socket_template(const SocketCAN__socket& other_value);
+SocketCAN__socket_template(const OPTIONAL<SocketCAN__socket>& other_value);
+SocketCAN__socket_template(const SocketCAN__socket_template& other_value);
+~SocketCAN__socket_template();
+SocketCAN__socket_template& operator=(template_sel other_value);
+SocketCAN__socket_template& operator=(const SocketCAN__socket& other_value);
+SocketCAN__socket_template& operator=(const OPTIONAL<SocketCAN__socket>& other_value);
+SocketCAN__socket_template& operator=(const SocketCAN__socket_template& other_value);
+boolean match(const SocketCAN__socket& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SocketCAN__socket valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SocketCAN__socket_template& list_item(unsigned int list_index) const;
+Can::AdresseFamily__enum_template& domain();
+const Can::AdresseFamily__enum_template& domain() const;
+Can::ProtocolFamily__enum_template& ptype();
+const Can::ProtocolFamily__enum_template& ptype() const;
+Can::PF__CAN__protocols__enum_template& protocol();
+const Can::PF__CAN__protocols__enum_template& protocol() const;
+int size_of() const;
+void log() const;
+void log_match(const SocketCAN__socket& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SocketCAN__socket__result {
+  INTEGER field_id;
+  SocketCAN__Result field_result;
+public:
+  SocketCAN__socket__result();
+  SocketCAN__socket__result(const INTEGER& par_id,
+    const SocketCAN__Result& par_result);
+  SocketCAN__socket__result(const SocketCAN__socket__result& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SocketCAN__socket__result& operator=(const SocketCAN__socket__result& other_value);
+  boolean operator==(const SocketCAN__socket__result& other_value) const;
+  inline boolean operator!=(const SocketCAN__socket__result& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& id()
+    {return field_id;}
+  inline const INTEGER& id() const
+    {return field_id;}
+  inline SocketCAN__Result& result()
+    {return field_result;}
+  inline const SocketCAN__Result& result() const
+    {return field_result;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+};
+
+class SocketCAN__socket__result_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SocketCAN__socket__result_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SocketCAN__socket__result& other_value);
+void copy_template(const SocketCAN__socket__result_template& other_value);
+
+public:
+SocketCAN__socket__result_template();
+SocketCAN__socket__result_template(template_sel other_value);
+SocketCAN__socket__result_template(const SocketCAN__socket__result& other_value);
+SocketCAN__socket__result_template(const OPTIONAL<SocketCAN__socket__result>& other_value);
+SocketCAN__socket__result_template(const SocketCAN__socket__result_template& other_value);
+~SocketCAN__socket__result_template();
+SocketCAN__socket__result_template& operator=(template_sel other_value);
+SocketCAN__socket__result_template& operator=(const SocketCAN__socket__result& other_value);
+SocketCAN__socket__result_template& operator=(const OPTIONAL<SocketCAN__socket__result>& other_value);
+SocketCAN__socket__result_template& operator=(const SocketCAN__socket__result_template& other_value);
+boolean match(const SocketCAN__socket__result& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SocketCAN__socket__result valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SocketCAN__socket__result_template& list_item(unsigned int list_index) const;
+INTEGER_template& id();
+const INTEGER_template& id() const;
+SocketCAN__Result_template& result();
+const SocketCAN__Result_template& result() const;
+int size_of() const;
+void log() const;
+void log_match(const SocketCAN__socket__result& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SocketCAN__ioctl {
+  INTEGER field_id;
+  OPTIONAL<SocketCAN__ioctl__ifu> field_ifu;
+public:
+  SocketCAN__ioctl();
+  SocketCAN__ioctl(const INTEGER& par_id,
+    const OPTIONAL<SocketCAN__ioctl__ifu>& par_ifu);
+  SocketCAN__ioctl(const SocketCAN__ioctl& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SocketCAN__ioctl& operator=(const SocketCAN__ioctl& other_value);
+  boolean operator==(const SocketCAN__ioctl& other_value) const;
+  inline boolean operator!=(const SocketCAN__ioctl& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& id()
+    {return field_id;}
+  inline const INTEGER& id() const
+    {return field_id;}
+  inline OPTIONAL<SocketCAN__ioctl__ifu>& ifu()
+    {return field_ifu;}
+  inline const OPTIONAL<SocketCAN__ioctl__ifu>& ifu() const
+    {return field_ifu;}
+  int size_of() const;
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+};
+
+class SocketCAN__ioctl_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SocketCAN__ioctl_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SocketCAN__ioctl& other_value);
+void copy_template(const SocketCAN__ioctl_template& other_value);
+
+public:
+SocketCAN__ioctl_template();
+SocketCAN__ioctl_template(template_sel other_value);
+SocketCAN__ioctl_template(const SocketCAN__ioctl& other_value);
+SocketCAN__ioctl_template(const OPTIONAL<SocketCAN__ioctl>& other_value);
+SocketCAN__ioctl_template(const SocketCAN__ioctl_template& other_value);
+~SocketCAN__ioctl_template();
+SocketCAN__ioctl_template& operator=(template_sel other_value);
+SocketCAN__ioctl_template& operator=(const SocketCAN__ioctl& other_value);
+SocketCAN__ioctl_template& operator=(const OPTIONAL<SocketCAN__ioctl>& other_value);
+SocketCAN__ioctl_template& operator=(const SocketCAN__ioctl_template& other_value);
+boolean match(const SocketCAN__ioctl& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SocketCAN__ioctl valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SocketCAN__ioctl_template& list_item(unsigned int list_index) const;
+INTEGER_template& id();
+const INTEGER_template& id() const;
+SocketCAN__ioctl__ifu_template& ifu();
+const SocketCAN__ioctl__ifu_template& ifu() const;
+int size_of() const;
+void log() const;
+void log_match(const SocketCAN__ioctl& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SocketCAN__ioctl__result {
+  SocketCAN__ifr field_ifr;
+  SocketCAN__Result field_result;
+public:
+  SocketCAN__ioctl__result();
+  SocketCAN__ioctl__result(const SocketCAN__ifr& par_ifr,
+    const SocketCAN__Result& par_result);
+  SocketCAN__ioctl__result(const SocketCAN__ioctl__result& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SocketCAN__ioctl__result& operator=(const SocketCAN__ioctl__result& other_value);
+  boolean operator==(const SocketCAN__ioctl__result& other_value) const;
+  inline boolean operator!=(const SocketCAN__ioctl__result& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline SocketCAN__ifr& ifr()
+    {return field_ifr;}
+  inline const SocketCAN__ifr& ifr() const
+    {return field_ifr;}
+  inline SocketCAN__Result& result()
+    {return field_result;}
+  inline const SocketCAN__Result& result() const
+    {return field_result;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+};
+
+class SocketCAN__ioctl__result_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SocketCAN__ioctl__result_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SocketCAN__ioctl__result& other_value);
+void copy_template(const SocketCAN__ioctl__result_template& other_value);
+
+public:
+SocketCAN__ioctl__result_template();
+SocketCAN__ioctl__result_template(template_sel other_value);
+SocketCAN__ioctl__result_template(const SocketCAN__ioctl__result& other_value);
+SocketCAN__ioctl__result_template(const OPTIONAL<SocketCAN__ioctl__result>& other_value);
+SocketCAN__ioctl__result_template(const SocketCAN__ioctl__result_template& other_value);
+~SocketCAN__ioctl__result_template();
+SocketCAN__ioctl__result_template& operator=(template_sel other_value);
+SocketCAN__ioctl__result_template& operator=(const SocketCAN__ioctl__result& other_value);
+SocketCAN__ioctl__result_template& operator=(const OPTIONAL<SocketCAN__ioctl__result>& other_value);
+SocketCAN__ioctl__result_template& operator=(const SocketCAN__ioctl__result_template& other_value);
+boolean match(const SocketCAN__ioctl__result& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SocketCAN__ioctl__result valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SocketCAN__ioctl__result_template& list_item(unsigned int list_index) const;
+SocketCAN__ifr_template& ifr();
+const SocketCAN__ifr_template& ifr() const;
+SocketCAN__Result_template& result();
+const SocketCAN__Result_template& result() const;
+int size_of() const;
+void log() const;
+void log_match(const SocketCAN__ioctl__result& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SocketCAN__connectu : public Base_Type {
+public:
+enum union_selection_type { UNBOUND_VALUE = 0, ALT_bcm = 1 };
+private:
+union_selection_type union_selection;
+union {
+SocketCAN__connect__bcm *field_bcm;
+};
+void copy_value(const SocketCAN__connectu& other_value);
+
+public:
+SocketCAN__connectu();
+SocketCAN__connectu(const SocketCAN__connectu& other_value);
+~SocketCAN__connectu();
+SocketCAN__connectu& operator=(const SocketCAN__connectu& other_value);
+boolean operator==(const SocketCAN__connectu& other_value) const;
+inline boolean operator!=(const SocketCAN__connectu& other_value) const { return !(*this == other_value); }
+SocketCAN__connect__bcm& bcm();
+const SocketCAN__connect__bcm& bcm() const;
+inline union_selection_type get_selection() const { return union_selection; }
+boolean ischosen(union_selection_type checked_selection) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+};
+
+class SocketCAN__connectu_template : public Base_Template {
+union {
+struct {
+SocketCAN__connectu::union_selection_type union_selection;
+union {
+SocketCAN__connect__bcm_template *field_bcm;
+};
+} single_value;
+struct {
+unsigned int n_values;
+SocketCAN__connectu_template *list_value;
+} value_list;
+};
+void copy_value(const SocketCAN__connectu& other_value);
+
+void copy_template(const SocketCAN__connectu_template& other_value);
+
+public:
+SocketCAN__connectu_template();
+SocketCAN__connectu_template(template_sel other_value);
+SocketCAN__connectu_template(const SocketCAN__connectu& other_value);
+SocketCAN__connectu_template(const OPTIONAL<SocketCAN__connectu>& other_value);
+SocketCAN__connectu_template(const SocketCAN__connectu_template& other_value);
+~SocketCAN__connectu_template();
+void clean_up();
+SocketCAN__connectu_template& operator=(template_sel other_value);
+SocketCAN__connectu_template& operator=(const SocketCAN__connectu& other_value);
+SocketCAN__connectu_template& operator=(const OPTIONAL<SocketCAN__connectu>& other_value);
+SocketCAN__connectu_template& operator=(const SocketCAN__connectu_template& other_value);
+boolean match(const SocketCAN__connectu& other_value, boolean legacy = FALSE) const;
+boolean is_value() const;SocketCAN__connectu valueof() const;
+SocketCAN__connectu_template& list_item(unsigned int list_index) const;
+void set_type(template_sel template_type, unsigned int list_length);
+SocketCAN__connect__bcm_template& bcm();
+const SocketCAN__connect__bcm_template& bcm() const;
+boolean ischosen(SocketCAN__connectu::union_selection_type checked_selection) const;
+void log() const;
+void log_match(const SocketCAN__connectu& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class SocketCAN__connect__bcm {
+  INTEGER field_if__index;
+public:
+  SocketCAN__connect__bcm();
+  SocketCAN__connect__bcm(const INTEGER& par_if__index);
+  SocketCAN__connect__bcm(const SocketCAN__connect__bcm& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SocketCAN__connect__bcm& operator=(const SocketCAN__connect__bcm& other_value);
+  boolean operator==(const SocketCAN__connect__bcm& other_value) const;
+  inline boolean operator!=(const SocketCAN__connect__bcm& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& if__index()
+    {return field_if__index;}
+  inline const INTEGER& if__index() const
+    {return field_if__index;}
+  inline int size_of() const
+    {return 1;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+};
+
+class SocketCAN__connect__bcm_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SocketCAN__connect__bcm_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SocketCAN__connect__bcm& other_value);
+void copy_template(const SocketCAN__connect__bcm_template& other_value);
+
+public:
+SocketCAN__connect__bcm_template();
+SocketCAN__connect__bcm_template(template_sel other_value);
+SocketCAN__connect__bcm_template(const SocketCAN__connect__bcm& other_value);
+SocketCAN__connect__bcm_template(const OPTIONAL<SocketCAN__connect__bcm>& other_value);
+SocketCAN__connect__bcm_template(const SocketCAN__connect__bcm_template& other_value);
+~SocketCAN__connect__bcm_template();
+SocketCAN__connect__bcm_template& operator=(template_sel other_value);
+SocketCAN__connect__bcm_template& operator=(const SocketCAN__connect__bcm& other_value);
+SocketCAN__connect__bcm_template& operator=(const OPTIONAL<SocketCAN__connect__bcm>& other_value);
+SocketCAN__connect__bcm_template& operator=(const SocketCAN__connect__bcm_template& other_value);
+boolean match(const SocketCAN__connect__bcm& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SocketCAN__connect__bcm valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SocketCAN__connect__bcm_template& list_item(unsigned int list_index) const;
+INTEGER_template& if__index();
+const INTEGER_template& if__index() const;
+int size_of() const;
+void log() const;
+void log_match(const SocketCAN__connect__bcm& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SocketCAN__connect {
+  INTEGER field_id;
+  SocketCAN__connectu field_connectu;
+public:
+  SocketCAN__connect();
+  SocketCAN__connect(const INTEGER& par_id,
+    const SocketCAN__connectu& par_connectu);
+  SocketCAN__connect(const SocketCAN__connect& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SocketCAN__connect& operator=(const SocketCAN__connect& other_value);
+  boolean operator==(const SocketCAN__connect& other_value) const;
+  inline boolean operator!=(const SocketCAN__connect& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& id()
+    {return field_id;}
+  inline const INTEGER& id() const
+    {return field_id;}
+  inline SocketCAN__connectu& connectu()
+    {return field_connectu;}
+  inline const SocketCAN__connectu& connectu() const
+    {return field_connectu;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+};
+
+class SocketCAN__connect_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SocketCAN__connect_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SocketCAN__connect& other_value);
+void copy_template(const SocketCAN__connect_template& other_value);
+
+public:
+SocketCAN__connect_template();
+SocketCAN__connect_template(template_sel other_value);
+SocketCAN__connect_template(const SocketCAN__connect& other_value);
+SocketCAN__connect_template(const OPTIONAL<SocketCAN__connect>& other_value);
+SocketCAN__connect_template(const SocketCAN__connect_template& other_value);
+~SocketCAN__connect_template();
+SocketCAN__connect_template& operator=(template_sel other_value);
+SocketCAN__connect_template& operator=(const SocketCAN__connect& other_value);
+SocketCAN__connect_template& operator=(const OPTIONAL<SocketCAN__connect>& other_value);
+SocketCAN__connect_template& operator=(const SocketCAN__connect_template& other_value);
+boolean match(const SocketCAN__connect& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SocketCAN__connect valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SocketCAN__connect_template& list_item(unsigned int list_index) const;
+INTEGER_template& id();
+const INTEGER_template& id() const;
+SocketCAN__connectu_template& connectu();
+const SocketCAN__connectu_template& connectu() const;
+int size_of() const;
+void log() const;
+void log_match(const SocketCAN__connect& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SocketCAN__connect__result {
+  SocketCAN__Result field_result;
+public:
+  SocketCAN__connect__result();
+  SocketCAN__connect__result(const SocketCAN__Result& par_result);
+  SocketCAN__connect__result(const SocketCAN__connect__result& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SocketCAN__connect__result& operator=(const SocketCAN__connect__result& other_value);
+  boolean operator==(const SocketCAN__connect__result& other_value) const;
+  inline boolean operator!=(const SocketCAN__connect__result& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline SocketCAN__Result& result()
+    {return field_result;}
+  inline const SocketCAN__Result& result() const
+    {return field_result;}
+  inline int size_of() const
+    {return 1;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+};
+
+class SocketCAN__connect__result_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SocketCAN__connect__result_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SocketCAN__connect__result& other_value);
+void copy_template(const SocketCAN__connect__result_template& other_value);
+
+public:
+SocketCAN__connect__result_template();
+SocketCAN__connect__result_template(template_sel other_value);
+SocketCAN__connect__result_template(const SocketCAN__connect__result& other_value);
+SocketCAN__connect__result_template(const OPTIONAL<SocketCAN__connect__result>& other_value);
+SocketCAN__connect__result_template(const SocketCAN__connect__result_template& other_value);
+~SocketCAN__connect__result_template();
+SocketCAN__connect__result_template& operator=(template_sel other_value);
+SocketCAN__connect__result_template& operator=(const SocketCAN__connect__result& other_value);
+SocketCAN__connect__result_template& operator=(const OPTIONAL<SocketCAN__connect__result>& other_value);
+SocketCAN__connect__result_template& operator=(const SocketCAN__connect__result_template& other_value);
+boolean match(const SocketCAN__connect__result& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SocketCAN__connect__result valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SocketCAN__connect__result_template& list_item(unsigned int list_index) const;
+SocketCAN__Result_template& result();
+const SocketCAN__Result_template& result() const;
+int size_of() const;
+void log() const;
+void log_match(const SocketCAN__connect__result& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SocketCAN__bind__raw {
+  INTEGER field_if__index;
+public:
+  SocketCAN__bind__raw();
+  SocketCAN__bind__raw(const INTEGER& par_if__index);
+  SocketCAN__bind__raw(const SocketCAN__bind__raw& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SocketCAN__bind__raw& operator=(const SocketCAN__bind__raw& other_value);
+  boolean operator==(const SocketCAN__bind__raw& other_value) const;
+  inline boolean operator!=(const SocketCAN__bind__raw& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& if__index()
+    {return field_if__index;}
+  inline const INTEGER& if__index() const
+    {return field_if__index;}
+  inline int size_of() const
+    {return 1;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+};
+
+class SocketCAN__bind__raw_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SocketCAN__bind__raw_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SocketCAN__bind__raw& other_value);
+void copy_template(const SocketCAN__bind__raw_template& other_value);
+
+public:
+SocketCAN__bind__raw_template();
+SocketCAN__bind__raw_template(template_sel other_value);
+SocketCAN__bind__raw_template(const SocketCAN__bind__raw& other_value);
+SocketCAN__bind__raw_template(const OPTIONAL<SocketCAN__bind__raw>& other_value);
+SocketCAN__bind__raw_template(const SocketCAN__bind__raw_template& other_value);
+~SocketCAN__bind__raw_template();
+SocketCAN__bind__raw_template& operator=(template_sel other_value);
+SocketCAN__bind__raw_template& operator=(const SocketCAN__bind__raw& other_value);
+SocketCAN__bind__raw_template& operator=(const OPTIONAL<SocketCAN__bind__raw>& other_value);
+SocketCAN__bind__raw_template& operator=(const SocketCAN__bind__raw_template& other_value);
+boolean match(const SocketCAN__bind__raw& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SocketCAN__bind__raw valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SocketCAN__bind__raw_template& list_item(unsigned int list_index) const;
+INTEGER_template& if__index();
+const INTEGER_template& if__index() const;
+int size_of() const;
+void log() const;
+void log_match(const SocketCAN__bind__raw& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SocketCAN__bind__isotp {
+  INTEGER field_if__index;
+  OCTETSTRING field_rx__can__id;
+  OCTETSTRING field_tx__can__id;
+public:
+  SocketCAN__bind__isotp();
+  SocketCAN__bind__isotp(const INTEGER& par_if__index,
+    const OCTETSTRING& par_rx__can__id,
+    const OCTETSTRING& par_tx__can__id);
+  SocketCAN__bind__isotp(const SocketCAN__bind__isotp& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SocketCAN__bind__isotp& operator=(const SocketCAN__bind__isotp& other_value);
+  boolean operator==(const SocketCAN__bind__isotp& other_value) const;
+  inline boolean operator!=(const SocketCAN__bind__isotp& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& if__index()
+    {return field_if__index;}
+  inline const INTEGER& if__index() const
+    {return field_if__index;}
+  inline OCTETSTRING& rx__can__id()
+    {return field_rx__can__id;}
+  inline const OCTETSTRING& rx__can__id() const
+    {return field_rx__can__id;}
+  inline OCTETSTRING& tx__can__id()
+    {return field_tx__can__id;}
+  inline const OCTETSTRING& tx__can__id() const
+    {return field_tx__can__id;}
+  inline int size_of() const
+    {return 3;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+};
+
+class SocketCAN__bind__isotp_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SocketCAN__bind__isotp_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SocketCAN__bind__isotp& other_value);
+void copy_template(const SocketCAN__bind__isotp_template& other_value);
+
+public:
+SocketCAN__bind__isotp_template();
+SocketCAN__bind__isotp_template(template_sel other_value);
+SocketCAN__bind__isotp_template(const SocketCAN__bind__isotp& other_value);
+SocketCAN__bind__isotp_template(const OPTIONAL<SocketCAN__bind__isotp>& other_value);
+SocketCAN__bind__isotp_template(const SocketCAN__bind__isotp_template& other_value);
+~SocketCAN__bind__isotp_template();
+SocketCAN__bind__isotp_template& operator=(template_sel other_value);
+SocketCAN__bind__isotp_template& operator=(const SocketCAN__bind__isotp& other_value);
+SocketCAN__bind__isotp_template& operator=(const OPTIONAL<SocketCAN__bind__isotp>& other_value);
+SocketCAN__bind__isotp_template& operator=(const SocketCAN__bind__isotp_template& other_value);
+boolean match(const SocketCAN__bind__isotp& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SocketCAN__bind__isotp valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SocketCAN__bind__isotp_template& list_item(unsigned int list_index) const;
+INTEGER_template& if__index();
+const INTEGER_template& if__index() const;
+OCTETSTRING_template& rx__can__id();
+const OCTETSTRING_template& rx__can__id() const;
+OCTETSTRING_template& tx__can__id();
+const OCTETSTRING_template& tx__can__id() const;
+int size_of() const;
+void log() const;
+void log_match(const SocketCAN__bind__isotp& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SocketCAN__bindu : public Base_Type {
+public:
+enum union_selection_type { UNBOUND_VALUE = 0, ALT_raw = 1, ALT_isotp = 2 };
+private:
+union_selection_type union_selection;
+union {
+SocketCAN__bind__raw *field_raw;
+SocketCAN__bind__isotp *field_isotp;
+};
+void copy_value(const SocketCAN__bindu& other_value);
+
+public:
+SocketCAN__bindu();
+SocketCAN__bindu(const SocketCAN__bindu& other_value);
+~SocketCAN__bindu();
+SocketCAN__bindu& operator=(const SocketCAN__bindu& other_value);
+boolean operator==(const SocketCAN__bindu& other_value) const;
+inline boolean operator!=(const SocketCAN__bindu& other_value) const { return !(*this == other_value); }
+SocketCAN__bind__raw& raw();
+const SocketCAN__bind__raw& raw() const;
+SocketCAN__bind__isotp& isotp();
+const SocketCAN__bind__isotp& isotp() const;
+inline union_selection_type get_selection() const { return union_selection; }
+boolean ischosen(union_selection_type checked_selection) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+};
+
+class SocketCAN__bindu_template : public Base_Template {
+union {
+struct {
+SocketCAN__bindu::union_selection_type union_selection;
+union {
+SocketCAN__bind__raw_template *field_raw;
+SocketCAN__bind__isotp_template *field_isotp;
+};
+} single_value;
+struct {
+unsigned int n_values;
+SocketCAN__bindu_template *list_value;
+} value_list;
+};
+void copy_value(const SocketCAN__bindu& other_value);
+
+void copy_template(const SocketCAN__bindu_template& other_value);
+
+public:
+SocketCAN__bindu_template();
+SocketCAN__bindu_template(template_sel other_value);
+SocketCAN__bindu_template(const SocketCAN__bindu& other_value);
+SocketCAN__bindu_template(const OPTIONAL<SocketCAN__bindu>& other_value);
+SocketCAN__bindu_template(const SocketCAN__bindu_template& other_value);
+~SocketCAN__bindu_template();
+void clean_up();
+SocketCAN__bindu_template& operator=(template_sel other_value);
+SocketCAN__bindu_template& operator=(const SocketCAN__bindu& other_value);
+SocketCAN__bindu_template& operator=(const OPTIONAL<SocketCAN__bindu>& other_value);
+SocketCAN__bindu_template& operator=(const SocketCAN__bindu_template& other_value);
+boolean match(const SocketCAN__bindu& other_value, boolean legacy = FALSE) const;
+boolean is_value() const;SocketCAN__bindu valueof() const;
+SocketCAN__bindu_template& list_item(unsigned int list_index) const;
+void set_type(template_sel template_type, unsigned int list_length);
+SocketCAN__bind__raw_template& raw();
+const SocketCAN__bind__raw_template& raw() const;
+SocketCAN__bind__isotp_template& isotp();
+const SocketCAN__bind__isotp_template& isotp() const;
+boolean ischosen(SocketCAN__bindu::union_selection_type checked_selection) const;
+void log() const;
+void log_match(const SocketCAN__bindu& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class SocketCAN__bind {
+  INTEGER field_id;
+  SocketCAN__bindu field_bindu;
+public:
+  SocketCAN__bind();
+  SocketCAN__bind(const INTEGER& par_id,
+    const SocketCAN__bindu& par_bindu);
+  SocketCAN__bind(const SocketCAN__bind& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SocketCAN__bind& operator=(const SocketCAN__bind& other_value);
+  boolean operator==(const SocketCAN__bind& other_value) const;
+  inline boolean operator!=(const SocketCAN__bind& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& id()
+    {return field_id;}
+  inline const INTEGER& id() const
+    {return field_id;}
+  inline SocketCAN__bindu& bindu()
+    {return field_bindu;}
+  inline const SocketCAN__bindu& bindu() const
+    {return field_bindu;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+};
+
+class SocketCAN__bind_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SocketCAN__bind_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SocketCAN__bind& other_value);
+void copy_template(const SocketCAN__bind_template& other_value);
+
+public:
+SocketCAN__bind_template();
+SocketCAN__bind_template(template_sel other_value);
+SocketCAN__bind_template(const SocketCAN__bind& other_value);
+SocketCAN__bind_template(const OPTIONAL<SocketCAN__bind>& other_value);
+SocketCAN__bind_template(const SocketCAN__bind_template& other_value);
+~SocketCAN__bind_template();
+SocketCAN__bind_template& operator=(template_sel other_value);
+SocketCAN__bind_template& operator=(const SocketCAN__bind& other_value);
+SocketCAN__bind_template& operator=(const OPTIONAL<SocketCAN__bind>& other_value);
+SocketCAN__bind_template& operator=(const SocketCAN__bind_template& other_value);
+boolean match(const SocketCAN__bind& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SocketCAN__bind valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SocketCAN__bind_template& list_item(unsigned int list_index) const;
+INTEGER_template& id();
+const INTEGER_template& id() const;
+SocketCAN__bindu_template& bindu();
+const SocketCAN__bindu_template& bindu() const;
+int size_of() const;
+void log() const;
+void log_match(const SocketCAN__bind& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SocketCAN__bind__result {
+  SocketCAN__Result field_result;
+public:
+  SocketCAN__bind__result();
+  SocketCAN__bind__result(const SocketCAN__Result& par_result);
+  SocketCAN__bind__result(const SocketCAN__bind__result& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SocketCAN__bind__result& operator=(const SocketCAN__bind__result& other_value);
+  boolean operator==(const SocketCAN__bind__result& other_value) const;
+  inline boolean operator!=(const SocketCAN__bind__result& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline SocketCAN__Result& result()
+    {return field_result;}
+  inline const SocketCAN__Result& result() const
+    {return field_result;}
+  inline int size_of() const
+    {return 1;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+};
+
+class SocketCAN__bind__result_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SocketCAN__bind__result_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SocketCAN__bind__result& other_value);
+void copy_template(const SocketCAN__bind__result_template& other_value);
+
+public:
+SocketCAN__bind__result_template();
+SocketCAN__bind__result_template(template_sel other_value);
+SocketCAN__bind__result_template(const SocketCAN__bind__result& other_value);
+SocketCAN__bind__result_template(const OPTIONAL<SocketCAN__bind__result>& other_value);
+SocketCAN__bind__result_template(const SocketCAN__bind__result_template& other_value);
+~SocketCAN__bind__result_template();
+SocketCAN__bind__result_template& operator=(template_sel other_value);
+SocketCAN__bind__result_template& operator=(const SocketCAN__bind__result& other_value);
+SocketCAN__bind__result_template& operator=(const OPTIONAL<SocketCAN__bind__result>& other_value);
+SocketCAN__bind__result_template& operator=(const SocketCAN__bind__result_template& other_value);
+boolean match(const SocketCAN__bind__result& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SocketCAN__bind__result valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SocketCAN__bind__result_template& list_item(unsigned int list_index) const;
+SocketCAN__Result_template& result();
+const SocketCAN__Result_template& result() const;
+int size_of() const;
+void log() const;
+void log_match(const SocketCAN__bind__result& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SocketCAN__send__data {
+  INTEGER field_id;
+  OPTIONAL<SocketCAN__send__data__ifu> field_ifu;
+  SocketCAN__CAN__or__CAN__FD__frame field_frame;
+public:
+  SocketCAN__send__data();
+  SocketCAN__send__data(const INTEGER& par_id,
+    const OPTIONAL<SocketCAN__send__data__ifu>& par_ifu,
+    const SocketCAN__CAN__or__CAN__FD__frame& par_frame);
+  SocketCAN__send__data(const SocketCAN__send__data& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SocketCAN__send__data& operator=(const SocketCAN__send__data& other_value);
+  boolean operator==(const SocketCAN__send__data& other_value) const;
+  inline boolean operator!=(const SocketCAN__send__data& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& id()
+    {return field_id;}
+  inline const INTEGER& id() const
+    {return field_id;}
+  inline OPTIONAL<SocketCAN__send__data__ifu>& ifu()
+    {return field_ifu;}
+  inline const OPTIONAL<SocketCAN__send__data__ifu>& ifu() const
+    {return field_ifu;}
+  inline SocketCAN__CAN__or__CAN__FD__frame& frame()
+    {return field_frame;}
+  inline const SocketCAN__CAN__or__CAN__FD__frame& frame() const
+    {return field_frame;}
+  int size_of() const;
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+};
+
+class SocketCAN__send__data_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SocketCAN__send__data_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SocketCAN__send__data& other_value);
+void copy_template(const SocketCAN__send__data_template& other_value);
+
+public:
+SocketCAN__send__data_template();
+SocketCAN__send__data_template(template_sel other_value);
+SocketCAN__send__data_template(const SocketCAN__send__data& other_value);
+SocketCAN__send__data_template(const OPTIONAL<SocketCAN__send__data>& other_value);
+SocketCAN__send__data_template(const SocketCAN__send__data_template& other_value);
+~SocketCAN__send__data_template();
+SocketCAN__send__data_template& operator=(template_sel other_value);
+SocketCAN__send__data_template& operator=(const SocketCAN__send__data& other_value);
+SocketCAN__send__data_template& operator=(const OPTIONAL<SocketCAN__send__data>& other_value);
+SocketCAN__send__data_template& operator=(const SocketCAN__send__data_template& other_value);
+boolean match(const SocketCAN__send__data& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SocketCAN__send__data valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SocketCAN__send__data_template& list_item(unsigned int list_index) const;
+INTEGER_template& id();
+const INTEGER_template& id() const;
+SocketCAN__send__data__ifu_template& ifu();
+const SocketCAN__send__data__ifu_template& ifu() const;
+SocketCAN__CAN__or__CAN__FD__frame_template& frame();
+const SocketCAN__CAN__or__CAN__FD__frame_template& frame() const;
+int size_of() const;
+void log() const;
+void log_match(const SocketCAN__send__data& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SocketCAN__send__data__result {
+  SocketCAN__Result field_result;
+public:
+  SocketCAN__send__data__result();
+  SocketCAN__send__data__result(const SocketCAN__Result& par_result);
+  SocketCAN__send__data__result(const SocketCAN__send__data__result& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SocketCAN__send__data__result& operator=(const SocketCAN__send__data__result& other_value);
+  boolean operator==(const SocketCAN__send__data__result& other_value) const;
+  inline boolean operator!=(const SocketCAN__send__data__result& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline SocketCAN__Result& result()
+    {return field_result;}
+  inline const SocketCAN__Result& result() const
+    {return field_result;}
+  inline int size_of() const
+    {return 1;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+};
+
+class SocketCAN__send__data__result_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SocketCAN__send__data__result_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SocketCAN__send__data__result& other_value);
+void copy_template(const SocketCAN__send__data__result_template& other_value);
+
+public:
+SocketCAN__send__data__result_template();
+SocketCAN__send__data__result_template(template_sel other_value);
+SocketCAN__send__data__result_template(const SocketCAN__send__data__result& other_value);
+SocketCAN__send__data__result_template(const OPTIONAL<SocketCAN__send__data__result>& other_value);
+SocketCAN__send__data__result_template(const SocketCAN__send__data__result_template& other_value);
+~SocketCAN__send__data__result_template();
+SocketCAN__send__data__result_template& operator=(template_sel other_value);
+SocketCAN__send__data__result_template& operator=(const SocketCAN__send__data__result& other_value);
+SocketCAN__send__data__result_template& operator=(const OPTIONAL<SocketCAN__send__data__result>& other_value);
+SocketCAN__send__data__result_template& operator=(const SocketCAN__send__data__result_template& other_value);
+boolean match(const SocketCAN__send__data__result& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SocketCAN__send__data__result valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SocketCAN__send__data__result_template& list_item(unsigned int list_index) const;
+SocketCAN__Result_template& result();
+const SocketCAN__Result_template& result() const;
+int size_of() const;
+void log() const;
+void log_match(const SocketCAN__send__data__result& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SocketCAN__write__data {
+  INTEGER field_id;
+  Bcm::SocketCAN__bcm__frame field_bcm__tx__msg;
+public:
+  SocketCAN__write__data();
+  SocketCAN__write__data(const INTEGER& par_id,
+    const Bcm::SocketCAN__bcm__frame& par_bcm__tx__msg);
+  SocketCAN__write__data(const SocketCAN__write__data& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SocketCAN__write__data& operator=(const SocketCAN__write__data& other_value);
+  boolean operator==(const SocketCAN__write__data& other_value) const;
+  inline boolean operator!=(const SocketCAN__write__data& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& id()
+    {return field_id;}
+  inline const INTEGER& id() const
+    {return field_id;}
+  inline Bcm::SocketCAN__bcm__frame& bcm__tx__msg()
+    {return field_bcm__tx__msg;}
+  inline const Bcm::SocketCAN__bcm__frame& bcm__tx__msg() const
+    {return field_bcm__tx__msg;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+};
+
+class SocketCAN__write__data_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SocketCAN__write__data_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SocketCAN__write__data& other_value);
+void copy_template(const SocketCAN__write__data_template& other_value);
+
+public:
+SocketCAN__write__data_template();
+SocketCAN__write__data_template(template_sel other_value);
+SocketCAN__write__data_template(const SocketCAN__write__data& other_value);
+SocketCAN__write__data_template(const OPTIONAL<SocketCAN__write__data>& other_value);
+SocketCAN__write__data_template(const SocketCAN__write__data_template& other_value);
+~SocketCAN__write__data_template();
+SocketCAN__write__data_template& operator=(template_sel other_value);
+SocketCAN__write__data_template& operator=(const SocketCAN__write__data& other_value);
+SocketCAN__write__data_template& operator=(const OPTIONAL<SocketCAN__write__data>& other_value);
+SocketCAN__write__data_template& operator=(const SocketCAN__write__data_template& other_value);
+boolean match(const SocketCAN__write__data& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SocketCAN__write__data valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SocketCAN__write__data_template& list_item(unsigned int list_index) const;
+INTEGER_template& id();
+const INTEGER_template& id() const;
+Bcm::SocketCAN__bcm__frame_template& bcm__tx__msg();
+const Bcm::SocketCAN__bcm__frame_template& bcm__tx__msg() const;
+int size_of() const;
+void log() const;
+void log_match(const SocketCAN__write__data& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SocketCAN__write__data__result {
+  SocketCAN__Result field_result;
+public:
+  SocketCAN__write__data__result();
+  SocketCAN__write__data__result(const SocketCAN__Result& par_result);
+  SocketCAN__write__data__result(const SocketCAN__write__data__result& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SocketCAN__write__data__result& operator=(const SocketCAN__write__data__result& other_value);
+  boolean operator==(const SocketCAN__write__data__result& other_value) const;
+  inline boolean operator!=(const SocketCAN__write__data__result& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline SocketCAN__Result& result()
+    {return field_result;}
+  inline const SocketCAN__Result& result() const
+    {return field_result;}
+  inline int size_of() const
+    {return 1;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+};
+
+class SocketCAN__write__data__result_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SocketCAN__write__data__result_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SocketCAN__write__data__result& other_value);
+void copy_template(const SocketCAN__write__data__result_template& other_value);
+
+public:
+SocketCAN__write__data__result_template();
+SocketCAN__write__data__result_template(template_sel other_value);
+SocketCAN__write__data__result_template(const SocketCAN__write__data__result& other_value);
+SocketCAN__write__data__result_template(const OPTIONAL<SocketCAN__write__data__result>& other_value);
+SocketCAN__write__data__result_template(const SocketCAN__write__data__result_template& other_value);
+~SocketCAN__write__data__result_template();
+SocketCAN__write__data__result_template& operator=(template_sel other_value);
+SocketCAN__write__data__result_template& operator=(const SocketCAN__write__data__result& other_value);
+SocketCAN__write__data__result_template& operator=(const OPTIONAL<SocketCAN__write__data__result>& other_value);
+SocketCAN__write__data__result_template& operator=(const SocketCAN__write__data__result_template& other_value);
+boolean match(const SocketCAN__write__data__result& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SocketCAN__write__data__result valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SocketCAN__write__data__result_template& list_item(unsigned int list_index) const;
+SocketCAN__Result_template& result();
+const SocketCAN__Result_template& result() const;
+int size_of() const;
+void log() const;
+void log_match(const SocketCAN__write__data__result& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SocketCAN__write__isotp {
+  INTEGER field_id;
+  OCTETSTRING field_pdu;
+public:
+  SocketCAN__write__isotp();
+  SocketCAN__write__isotp(const INTEGER& par_id,
+    const OCTETSTRING& par_pdu);
+  SocketCAN__write__isotp(const SocketCAN__write__isotp& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SocketCAN__write__isotp& operator=(const SocketCAN__write__isotp& other_value);
+  boolean operator==(const SocketCAN__write__isotp& other_value) const;
+  inline boolean operator!=(const SocketCAN__write__isotp& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& id()
+    {return field_id;}
+  inline const INTEGER& id() const
+    {return field_id;}
+  inline OCTETSTRING& pdu()
+    {return field_pdu;}
+  inline const OCTETSTRING& pdu() const
+    {return field_pdu;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+};
+
+class SocketCAN__write__isotp_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SocketCAN__write__isotp_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SocketCAN__write__isotp& other_value);
+void copy_template(const SocketCAN__write__isotp_template& other_value);
+
+public:
+SocketCAN__write__isotp_template();
+SocketCAN__write__isotp_template(template_sel other_value);
+SocketCAN__write__isotp_template(const SocketCAN__write__isotp& other_value);
+SocketCAN__write__isotp_template(const OPTIONAL<SocketCAN__write__isotp>& other_value);
+SocketCAN__write__isotp_template(const SocketCAN__write__isotp_template& other_value);
+~SocketCAN__write__isotp_template();
+SocketCAN__write__isotp_template& operator=(template_sel other_value);
+SocketCAN__write__isotp_template& operator=(const SocketCAN__write__isotp& other_value);
+SocketCAN__write__isotp_template& operator=(const OPTIONAL<SocketCAN__write__isotp>& other_value);
+SocketCAN__write__isotp_template& operator=(const SocketCAN__write__isotp_template& other_value);
+boolean match(const SocketCAN__write__isotp& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SocketCAN__write__isotp valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SocketCAN__write__isotp_template& list_item(unsigned int list_index) const;
+INTEGER_template& id();
+const INTEGER_template& id() const;
+OCTETSTRING_template& pdu();
+const OCTETSTRING_template& pdu() const;
+int size_of() const;
+void log() const;
+void log_match(const SocketCAN__write__isotp& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SocketCAN__write__isotp__result {
+  SocketCAN__Result field_result;
+public:
+  SocketCAN__write__isotp__result();
+  SocketCAN__write__isotp__result(const SocketCAN__Result& par_result);
+  SocketCAN__write__isotp__result(const SocketCAN__write__isotp__result& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SocketCAN__write__isotp__result& operator=(const SocketCAN__write__isotp__result& other_value);
+  boolean operator==(const SocketCAN__write__isotp__result& other_value) const;
+  inline boolean operator!=(const SocketCAN__write__isotp__result& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline SocketCAN__Result& result()
+    {return field_result;}
+  inline const SocketCAN__Result& result() const
+    {return field_result;}
+  inline int size_of() const
+    {return 1;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+};
+
+class SocketCAN__write__isotp__result_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SocketCAN__write__isotp__result_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SocketCAN__write__isotp__result& other_value);
+void copy_template(const SocketCAN__write__isotp__result_template& other_value);
+
+public:
+SocketCAN__write__isotp__result_template();
+SocketCAN__write__isotp__result_template(template_sel other_value);
+SocketCAN__write__isotp__result_template(const SocketCAN__write__isotp__result& other_value);
+SocketCAN__write__isotp__result_template(const OPTIONAL<SocketCAN__write__isotp__result>& other_value);
+SocketCAN__write__isotp__result_template(const SocketCAN__write__isotp__result_template& other_value);
+~SocketCAN__write__isotp__result_template();
+SocketCAN__write__isotp__result_template& operator=(template_sel other_value);
+SocketCAN__write__isotp__result_template& operator=(const SocketCAN__write__isotp__result& other_value);
+SocketCAN__write__isotp__result_template& operator=(const OPTIONAL<SocketCAN__write__isotp__result>& other_value);
+SocketCAN__write__isotp__result_template& operator=(const SocketCAN__write__isotp__result_template& other_value);
+boolean match(const SocketCAN__write__isotp__result& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SocketCAN__write__isotp__result valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SocketCAN__write__isotp__result_template& list_item(unsigned int list_index) const;
+SocketCAN__Result_template& result();
+const SocketCAN__Result_template& result() const;
+int size_of() const;
+void log() const;
+void log_match(const SocketCAN__write__isotp__result& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SocketCAN__receive__CAN__or__CAN__FD__frame {
+  INTEGER field_id;
+  SocketCAN__ifr field_ifr;
+  SocketCAN__CAN__or__CAN__FD__frame field_frame;
+  SocketCAN__timeval field_timestamp;
+public:
+  SocketCAN__receive__CAN__or__CAN__FD__frame();
+  SocketCAN__receive__CAN__or__CAN__FD__frame(const INTEGER& par_id,
+    const SocketCAN__ifr& par_ifr,
+    const SocketCAN__CAN__or__CAN__FD__frame& par_frame,
+    const SocketCAN__timeval& par_timestamp);
+  SocketCAN__receive__CAN__or__CAN__FD__frame(const SocketCAN__receive__CAN__or__CAN__FD__frame& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SocketCAN__receive__CAN__or__CAN__FD__frame& operator=(const SocketCAN__receive__CAN__or__CAN__FD__frame& other_value);
+  boolean operator==(const SocketCAN__receive__CAN__or__CAN__FD__frame& other_value) const;
+  inline boolean operator!=(const SocketCAN__receive__CAN__or__CAN__FD__frame& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& id()
+    {return field_id;}
+  inline const INTEGER& id() const
+    {return field_id;}
+  inline SocketCAN__ifr& ifr()
+    {return field_ifr;}
+  inline const SocketCAN__ifr& ifr() const
+    {return field_ifr;}
+  inline SocketCAN__CAN__or__CAN__FD__frame& frame()
+    {return field_frame;}
+  inline const SocketCAN__CAN__or__CAN__FD__frame& frame() const
+    {return field_frame;}
+  inline SocketCAN__timeval& timestamp()
+    {return field_timestamp;}
+  inline const SocketCAN__timeval& timestamp() const
+    {return field_timestamp;}
+  inline int size_of() const
+    {return 4;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+};
+
+class SocketCAN__receive__CAN__or__CAN__FD__frame_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SocketCAN__receive__CAN__or__CAN__FD__frame_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SocketCAN__receive__CAN__or__CAN__FD__frame& other_value);
+void copy_template(const SocketCAN__receive__CAN__or__CAN__FD__frame_template& other_value);
+
+public:
+SocketCAN__receive__CAN__or__CAN__FD__frame_template();
+SocketCAN__receive__CAN__or__CAN__FD__frame_template(template_sel other_value);
+SocketCAN__receive__CAN__or__CAN__FD__frame_template(const SocketCAN__receive__CAN__or__CAN__FD__frame& other_value);
+SocketCAN__receive__CAN__or__CAN__FD__frame_template(const OPTIONAL<SocketCAN__receive__CAN__or__CAN__FD__frame>& other_value);
+SocketCAN__receive__CAN__or__CAN__FD__frame_template(const SocketCAN__receive__CAN__or__CAN__FD__frame_template& other_value);
+~SocketCAN__receive__CAN__or__CAN__FD__frame_template();
+SocketCAN__receive__CAN__or__CAN__FD__frame_template& operator=(template_sel other_value);
+SocketCAN__receive__CAN__or__CAN__FD__frame_template& operator=(const SocketCAN__receive__CAN__or__CAN__FD__frame& other_value);
+SocketCAN__receive__CAN__or__CAN__FD__frame_template& operator=(const OPTIONAL<SocketCAN__receive__CAN__or__CAN__FD__frame>& other_value);
+SocketCAN__receive__CAN__or__CAN__FD__frame_template& operator=(const SocketCAN__receive__CAN__or__CAN__FD__frame_template& other_value);
+boolean match(const SocketCAN__receive__CAN__or__CAN__FD__frame& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SocketCAN__receive__CAN__or__CAN__FD__frame valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SocketCAN__receive__CAN__or__CAN__FD__frame_template& list_item(unsigned int list_index) const;
+INTEGER_template& id();
+const INTEGER_template& id() const;
+SocketCAN__ifr_template& ifr();
+const SocketCAN__ifr_template& ifr() const;
+SocketCAN__CAN__or__CAN__FD__frame_template& frame();
+const SocketCAN__CAN__or__CAN__FD__frame_template& frame() const;
+SocketCAN__timeval_template& timestamp();
+const SocketCAN__timeval_template& timestamp() const;
+int size_of() const;
+void log() const;
+void log_match(const SocketCAN__receive__CAN__or__CAN__FD__frame& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SocketCAN__receive__BCM__message {
+  INTEGER field_id;
+  SocketCAN__ifr field_ifr;
+  Bcm::SocketCAN__bcm__frame field_frame;
+public:
+  SocketCAN__receive__BCM__message();
+  SocketCAN__receive__BCM__message(const INTEGER& par_id,
+    const SocketCAN__ifr& par_ifr,
+    const Bcm::SocketCAN__bcm__frame& par_frame);
+  SocketCAN__receive__BCM__message(const SocketCAN__receive__BCM__message& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SocketCAN__receive__BCM__message& operator=(const SocketCAN__receive__BCM__message& other_value);
+  boolean operator==(const SocketCAN__receive__BCM__message& other_value) const;
+  inline boolean operator!=(const SocketCAN__receive__BCM__message& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& id()
+    {return field_id;}
+  inline const INTEGER& id() const
+    {return field_id;}
+  inline SocketCAN__ifr& ifr()
+    {return field_ifr;}
+  inline const SocketCAN__ifr& ifr() const
+    {return field_ifr;}
+  inline Bcm::SocketCAN__bcm__frame& frame()
+    {return field_frame;}
+  inline const Bcm::SocketCAN__bcm__frame& frame() const
+    {return field_frame;}
+  inline int size_of() const
+    {return 3;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+};
+
+class SocketCAN__receive__BCM__message_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SocketCAN__receive__BCM__message_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SocketCAN__receive__BCM__message& other_value);
+void copy_template(const SocketCAN__receive__BCM__message_template& other_value);
+
+public:
+SocketCAN__receive__BCM__message_template();
+SocketCAN__receive__BCM__message_template(template_sel other_value);
+SocketCAN__receive__BCM__message_template(const SocketCAN__receive__BCM__message& other_value);
+SocketCAN__receive__BCM__message_template(const OPTIONAL<SocketCAN__receive__BCM__message>& other_value);
+SocketCAN__receive__BCM__message_template(const SocketCAN__receive__BCM__message_template& other_value);
+~SocketCAN__receive__BCM__message_template();
+SocketCAN__receive__BCM__message_template& operator=(template_sel other_value);
+SocketCAN__receive__BCM__message_template& operator=(const SocketCAN__receive__BCM__message& other_value);
+SocketCAN__receive__BCM__message_template& operator=(const OPTIONAL<SocketCAN__receive__BCM__message>& other_value);
+SocketCAN__receive__BCM__message_template& operator=(const SocketCAN__receive__BCM__message_template& other_value);
+boolean match(const SocketCAN__receive__BCM__message& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SocketCAN__receive__BCM__message valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SocketCAN__receive__BCM__message_template& list_item(unsigned int list_index) const;
+INTEGER_template& id();
+const INTEGER_template& id() const;
+SocketCAN__ifr_template& ifr();
+const SocketCAN__ifr_template& ifr() const;
+Bcm::SocketCAN__bcm__frame_template& frame();
+const Bcm::SocketCAN__bcm__frame_template& frame() const;
+int size_of() const;
+void log() const;
+void log_match(const SocketCAN__receive__BCM__message& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SocketCAN__receive__isotp__pdu {
+  INTEGER field_id;
+  SocketCAN__ifr field_ifr;
+  OCTETSTRING field_pdu;
+public:
+  SocketCAN__receive__isotp__pdu();
+  SocketCAN__receive__isotp__pdu(const INTEGER& par_id,
+    const SocketCAN__ifr& par_ifr,
+    const OCTETSTRING& par_pdu);
+  SocketCAN__receive__isotp__pdu(const SocketCAN__receive__isotp__pdu& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SocketCAN__receive__isotp__pdu& operator=(const SocketCAN__receive__isotp__pdu& other_value);
+  boolean operator==(const SocketCAN__receive__isotp__pdu& other_value) const;
+  inline boolean operator!=(const SocketCAN__receive__isotp__pdu& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& id()
+    {return field_id;}
+  inline const INTEGER& id() const
+    {return field_id;}
+  inline SocketCAN__ifr& ifr()
+    {return field_ifr;}
+  inline const SocketCAN__ifr& ifr() const
+    {return field_ifr;}
+  inline OCTETSTRING& pdu()
+    {return field_pdu;}
+  inline const OCTETSTRING& pdu() const
+    {return field_pdu;}
+  inline int size_of() const
+    {return 3;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+};
+
+class SocketCAN__receive__isotp__pdu_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SocketCAN__receive__isotp__pdu_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SocketCAN__receive__isotp__pdu& other_value);
+void copy_template(const SocketCAN__receive__isotp__pdu_template& other_value);
+
+public:
+SocketCAN__receive__isotp__pdu_template();
+SocketCAN__receive__isotp__pdu_template(template_sel other_value);
+SocketCAN__receive__isotp__pdu_template(const SocketCAN__receive__isotp__pdu& other_value);
+SocketCAN__receive__isotp__pdu_template(const OPTIONAL<SocketCAN__receive__isotp__pdu>& other_value);
+SocketCAN__receive__isotp__pdu_template(const SocketCAN__receive__isotp__pdu_template& other_value);
+~SocketCAN__receive__isotp__pdu_template();
+SocketCAN__receive__isotp__pdu_template& operator=(template_sel other_value);
+SocketCAN__receive__isotp__pdu_template& operator=(const SocketCAN__receive__isotp__pdu& other_value);
+SocketCAN__receive__isotp__pdu_template& operator=(const OPTIONAL<SocketCAN__receive__isotp__pdu>& other_value);
+SocketCAN__receive__isotp__pdu_template& operator=(const SocketCAN__receive__isotp__pdu_template& other_value);
+boolean match(const SocketCAN__receive__isotp__pdu& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SocketCAN__receive__isotp__pdu valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SocketCAN__receive__isotp__pdu_template& list_item(unsigned int list_index) const;
+INTEGER_template& id();
+const INTEGER_template& id() const;
+SocketCAN__ifr_template& ifr();
+const SocketCAN__ifr_template& ifr() const;
+OCTETSTRING_template& pdu();
+const OCTETSTRING_template& pdu() const;
+int size_of() const;
+void log() const;
+void log_match(const SocketCAN__receive__isotp__pdu& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class CAN__RAW__filters : public Base_Type {
+struct recordof_setof_struct {
+int ref_count;
+int n_elements;
+Raw::CAN__RAW__filter **value_elements;
+} *val_ptr;
+
+static const Raw::CAN__RAW__filter UNBOUND_ELEM;
+private:
+friend boolean operator==(null_type null_value, const CAN__RAW__filters& other_value);
+
+public:
+  typedef Raw::CAN__RAW__filter of_type;
+CAN__RAW__filters();
+CAN__RAW__filters(null_type other_value);
+CAN__RAW__filters(const CAN__RAW__filters& other_value);
+~CAN__RAW__filters();
+
+void clean_up();
+CAN__RAW__filters& operator=(null_type other_value);
+CAN__RAW__filters& operator=(const CAN__RAW__filters& other_value);
+
+boolean operator==(null_type other_value) const;
+boolean operator==(const CAN__RAW__filters& other_value) const;
+inline boolean operator!=(null_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const CAN__RAW__filters& other_value) const { return !(*this == other_value); }
+
+Raw::CAN__RAW__filter& operator[](int index_value);
+Raw::CAN__RAW__filter& operator[](const INTEGER& index_value);
+const Raw::CAN__RAW__filter& operator[](int index_value) const;
+const Raw::CAN__RAW__filter& operator[](const INTEGER& index_value) const;
+
+CAN__RAW__filters operator<<=(int rotate_count) const;
+CAN__RAW__filters operator<<=(const INTEGER& rotate_count) const;
+CAN__RAW__filters operator>>=(int rotate_count) const;
+CAN__RAW__filters operator>>=(const INTEGER& rotate_count) const;
+
+CAN__RAW__filters operator+(const CAN__RAW__filters& other_value) const;
+
+CAN__RAW__filters substr(int index, int returncount) const;
+
+CAN__RAW__filters replace(int index, int len, const CAN__RAW__filters& repl) const;
+
+CAN__RAW__filters replace(int index, int len, const CAN__RAW__filters_template& repl) const;
+
+void set_size(int new_size);
+inline boolean is_bound() const {return val_ptr != NULL; }
+inline boolean is_present() const { return is_bound(); }
+boolean is_value() const;
+int size_of() const;
+int n_elem() const { return size_of(); }
+int lengthof() const;
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+};
+
+class CAN__RAW__filters_template : public Record_Of_Template {
+union {
+struct {
+int n_elements;
+Raw::CAN__RAW__filter_template **value_elements;
+} single_value;
+struct {
+unsigned int n_values;
+CAN__RAW__filters_template *list_value;
+} value_list;
+};
+void copy_value(const CAN__RAW__filters& other_value);
+void copy_template(const CAN__RAW__filters_template& other_value);
+static boolean match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy);
+
+public:
+CAN__RAW__filters_template();
+CAN__RAW__filters_template(template_sel other_value);
+CAN__RAW__filters_template(null_type other_value);
+CAN__RAW__filters_template(const CAN__RAW__filters& other_value);
+CAN__RAW__filters_template(const OPTIONAL<CAN__RAW__filters>& other_value);
+CAN__RAW__filters_template(const CAN__RAW__filters_template& other_value);
+~CAN__RAW__filters_template();
+
+void clean_up();
+CAN__RAW__filters_template& operator=(template_sel other_value);
+CAN__RAW__filters_template& operator=(null_type other_value);
+CAN__RAW__filters_template& operator=(const CAN__RAW__filters& other_value);
+CAN__RAW__filters_template& operator=(const OPTIONAL<CAN__RAW__filters>& other_value);
+CAN__RAW__filters_template& operator=(const CAN__RAW__filters_template& other_value);
+
+Raw::CAN__RAW__filter_template& operator[](int index_value);
+Raw::CAN__RAW__filter_template& operator[](const INTEGER& index_value);
+const Raw::CAN__RAW__filter_template& operator[](int index_value) const;
+const Raw::CAN__RAW__filter_template& operator[](const INTEGER& index_value) const;
+
+void set_size(int new_size);
+int n_elem() const;
+int size_of(boolean is_size) const;
+inline int size_of() const { return size_of(TRUE); }
+inline int lengthof() const { return size_of(FALSE); }
+boolean match(const CAN__RAW__filters& other_value, boolean legacy = FALSE) const;
+inline boolean is_bound() const 
+  {return template_selection != UNINITIALIZED_TEMPLATE; }
+boolean is_value() const;
+CAN__RAW__filters valueof() const;
+CAN__RAW__filters substr(int index, int returncount) const;
+
+CAN__RAW__filters replace(int index, int len, const CAN__RAW__filters_template& repl) const;
+
+CAN__RAW__filters replace(int index, int len, const CAN__RAW__filters& repl) const;
+
+void set_type(template_sel template_type, unsigned int list_length);
+CAN__RAW__filters_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const CAN__RAW__filters& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean get_istemplate_kind(const char* type) const;
+};
+
+class SocketCAN__setsockopt__commandu : public Base_Type {
+public:
+enum union_selection_type { UNBOUND_VALUE = 0, ALT_rfilter = 1, ALT_err__mask = 2, ALT_loopback = 3, ALT_recv__own__msgs = 4, ALT_fd__frames = 5, ALT_join__filters = 6 };
+private:
+union_selection_type union_selection;
+union {
+CAN__RAW__filters *field_rfilter;
+BITSTRING *field_err__mask;
+Raw::DisableEnable__enum *field_loopback;
+Raw::DisableEnable__enum *field_recv__own__msgs;
+Raw::DisableEnable__enum *field_fd__frames;
+Raw::DisableEnable__enum *field_join__filters;
+};
+void copy_value(const SocketCAN__setsockopt__commandu& other_value);
+
+public:
+SocketCAN__setsockopt__commandu();
+SocketCAN__setsockopt__commandu(const SocketCAN__setsockopt__commandu& other_value);
+~SocketCAN__setsockopt__commandu();
+SocketCAN__setsockopt__commandu& operator=(const SocketCAN__setsockopt__commandu& other_value);
+boolean operator==(const SocketCAN__setsockopt__commandu& other_value) const;
+inline boolean operator!=(const SocketCAN__setsockopt__commandu& other_value) const { return !(*this == other_value); }
+CAN__RAW__filters& rfilter();
+const CAN__RAW__filters& rfilter() const;
+BITSTRING& err__mask();
+const BITSTRING& err__mask() const;
+Raw::DisableEnable__enum& loopback();
+const Raw::DisableEnable__enum& loopback() const;
+Raw::DisableEnable__enum& recv__own__msgs();
+const Raw::DisableEnable__enum& recv__own__msgs() const;
+Raw::DisableEnable__enum& fd__frames();
+const Raw::DisableEnable__enum& fd__frames() const;
+Raw::DisableEnable__enum& join__filters();
+const Raw::DisableEnable__enum& join__filters() const;
+inline union_selection_type get_selection() const { return union_selection; }
+boolean ischosen(union_selection_type checked_selection) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+};
+
+class SocketCAN__setsockopt__commandu_template : public Base_Template {
+union {
+struct {
+SocketCAN__setsockopt__commandu::union_selection_type union_selection;
+union {
+CAN__RAW__filters_template *field_rfilter;
+BITSTRING_template *field_err__mask;
+Raw::DisableEnable__enum_template *field_loopback;
+Raw::DisableEnable__enum_template *field_recv__own__msgs;
+Raw::DisableEnable__enum_template *field_fd__frames;
+Raw::DisableEnable__enum_template *field_join__filters;
+};
+} single_value;
+struct {
+unsigned int n_values;
+SocketCAN__setsockopt__commandu_template *list_value;
+} value_list;
+};
+void copy_value(const SocketCAN__setsockopt__commandu& other_value);
+
+void copy_template(const SocketCAN__setsockopt__commandu_template& other_value);
+
+public:
+SocketCAN__setsockopt__commandu_template();
+SocketCAN__setsockopt__commandu_template(template_sel other_value);
+SocketCAN__setsockopt__commandu_template(const SocketCAN__setsockopt__commandu& other_value);
+SocketCAN__setsockopt__commandu_template(const OPTIONAL<SocketCAN__setsockopt__commandu>& other_value);
+SocketCAN__setsockopt__commandu_template(const SocketCAN__setsockopt__commandu_template& other_value);
+~SocketCAN__setsockopt__commandu_template();
+void clean_up();
+SocketCAN__setsockopt__commandu_template& operator=(template_sel other_value);
+SocketCAN__setsockopt__commandu_template& operator=(const SocketCAN__setsockopt__commandu& other_value);
+SocketCAN__setsockopt__commandu_template& operator=(const OPTIONAL<SocketCAN__setsockopt__commandu>& other_value);
+SocketCAN__setsockopt__commandu_template& operator=(const SocketCAN__setsockopt__commandu_template& other_value);
+boolean match(const SocketCAN__setsockopt__commandu& other_value, boolean legacy = FALSE) const;
+boolean is_value() const;SocketCAN__setsockopt__commandu valueof() const;
+SocketCAN__setsockopt__commandu_template& list_item(unsigned int list_index) const;
+void set_type(template_sel template_type, unsigned int list_length);
+CAN__RAW__filters_template& rfilter();
+const CAN__RAW__filters_template& rfilter() const;
+BITSTRING_template& err__mask();
+const BITSTRING_template& err__mask() const;
+Raw::DisableEnable__enum_template& loopback();
+const Raw::DisableEnable__enum_template& loopback() const;
+Raw::DisableEnable__enum_template& recv__own__msgs();
+const Raw::DisableEnable__enum_template& recv__own__msgs() const;
+Raw::DisableEnable__enum_template& fd__frames();
+const Raw::DisableEnable__enum_template& fd__frames() const;
+Raw::DisableEnable__enum_template& join__filters();
+const Raw::DisableEnable__enum_template& join__filters() const;
+boolean ischosen(SocketCAN__setsockopt__commandu::union_selection_type checked_selection) const;
+void log() const;
+void log_match(const SocketCAN__setsockopt__commandu& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class SocketCAN__setsockopt {
+  INTEGER field_id;
+  SocketCAN__setsockopt__commandu field_command;
+public:
+  SocketCAN__setsockopt();
+  SocketCAN__setsockopt(const INTEGER& par_id,
+    const SocketCAN__setsockopt__commandu& par_command);
+  SocketCAN__setsockopt(const SocketCAN__setsockopt& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SocketCAN__setsockopt& operator=(const SocketCAN__setsockopt& other_value);
+  boolean operator==(const SocketCAN__setsockopt& other_value) const;
+  inline boolean operator!=(const SocketCAN__setsockopt& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& id()
+    {return field_id;}
+  inline const INTEGER& id() const
+    {return field_id;}
+  inline SocketCAN__setsockopt__commandu& command()
+    {return field_command;}
+  inline const SocketCAN__setsockopt__commandu& command() const
+    {return field_command;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+};
+
+class SocketCAN__setsockopt_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SocketCAN__setsockopt_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SocketCAN__setsockopt& other_value);
+void copy_template(const SocketCAN__setsockopt_template& other_value);
+
+public:
+SocketCAN__setsockopt_template();
+SocketCAN__setsockopt_template(template_sel other_value);
+SocketCAN__setsockopt_template(const SocketCAN__setsockopt& other_value);
+SocketCAN__setsockopt_template(const OPTIONAL<SocketCAN__setsockopt>& other_value);
+SocketCAN__setsockopt_template(const SocketCAN__setsockopt_template& other_value);
+~SocketCAN__setsockopt_template();
+SocketCAN__setsockopt_template& operator=(template_sel other_value);
+SocketCAN__setsockopt_template& operator=(const SocketCAN__setsockopt& other_value);
+SocketCAN__setsockopt_template& operator=(const OPTIONAL<SocketCAN__setsockopt>& other_value);
+SocketCAN__setsockopt_template& operator=(const SocketCAN__setsockopt_template& other_value);
+boolean match(const SocketCAN__setsockopt& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SocketCAN__setsockopt valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SocketCAN__setsockopt_template& list_item(unsigned int list_index) const;
+INTEGER_template& id();
+const INTEGER_template& id() const;
+SocketCAN__setsockopt__commandu_template& command();
+const SocketCAN__setsockopt__commandu_template& command() const;
+int size_of() const;
+void log() const;
+void log_match(const SocketCAN__setsockopt& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SocketCAN__setsockopt__result {
+  SocketCAN__Result field_result;
+public:
+  SocketCAN__setsockopt__result();
+  SocketCAN__setsockopt__result(const SocketCAN__Result& par_result);
+  SocketCAN__setsockopt__result(const SocketCAN__setsockopt__result& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SocketCAN__setsockopt__result& operator=(const SocketCAN__setsockopt__result& other_value);
+  boolean operator==(const SocketCAN__setsockopt__result& other_value) const;
+  inline boolean operator!=(const SocketCAN__setsockopt__result& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline SocketCAN__Result& result()
+    {return field_result;}
+  inline const SocketCAN__Result& result() const
+    {return field_result;}
+  inline int size_of() const
+    {return 1;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+};
+
+class SocketCAN__setsockopt__result_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SocketCAN__setsockopt__result_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SocketCAN__setsockopt__result& other_value);
+void copy_template(const SocketCAN__setsockopt__result_template& other_value);
+
+public:
+SocketCAN__setsockopt__result_template();
+SocketCAN__setsockopt__result_template(template_sel other_value);
+SocketCAN__setsockopt__result_template(const SocketCAN__setsockopt__result& other_value);
+SocketCAN__setsockopt__result_template(const OPTIONAL<SocketCAN__setsockopt__result>& other_value);
+SocketCAN__setsockopt__result_template(const SocketCAN__setsockopt__result_template& other_value);
+~SocketCAN__setsockopt__result_template();
+SocketCAN__setsockopt__result_template& operator=(template_sel other_value);
+SocketCAN__setsockopt__result_template& operator=(const SocketCAN__setsockopt__result& other_value);
+SocketCAN__setsockopt__result_template& operator=(const OPTIONAL<SocketCAN__setsockopt__result>& other_value);
+SocketCAN__setsockopt__result_template& operator=(const SocketCAN__setsockopt__result_template& other_value);
+boolean match(const SocketCAN__setsockopt__result& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SocketCAN__setsockopt__result valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SocketCAN__setsockopt__result_template& list_item(unsigned int list_index) const;
+SocketCAN__Result_template& result();
+const SocketCAN__Result_template& result() const;
+int size_of() const;
+void log() const;
+void log_match(const SocketCAN__setsockopt__result& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SocketCAN__close {
+  INTEGER field_id;
+public:
+  SocketCAN__close();
+  SocketCAN__close(const INTEGER& par_id);
+  SocketCAN__close(const SocketCAN__close& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SocketCAN__close& operator=(const SocketCAN__close& other_value);
+  boolean operator==(const SocketCAN__close& other_value) const;
+  inline boolean operator!=(const SocketCAN__close& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline INTEGER& id()
+    {return field_id;}
+  inline const INTEGER& id() const
+    {return field_id;}
+  inline int size_of() const
+    {return 1;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+};
+
+class SocketCAN__close_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SocketCAN__close_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SocketCAN__close& other_value);
+void copy_template(const SocketCAN__close_template& other_value);
+
+public:
+SocketCAN__close_template();
+SocketCAN__close_template(template_sel other_value);
+SocketCAN__close_template(const SocketCAN__close& other_value);
+SocketCAN__close_template(const OPTIONAL<SocketCAN__close>& other_value);
+SocketCAN__close_template(const SocketCAN__close_template& other_value);
+~SocketCAN__close_template();
+SocketCAN__close_template& operator=(template_sel other_value);
+SocketCAN__close_template& operator=(const SocketCAN__close& other_value);
+SocketCAN__close_template& operator=(const OPTIONAL<SocketCAN__close>& other_value);
+SocketCAN__close_template& operator=(const SocketCAN__close_template& other_value);
+boolean match(const SocketCAN__close& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SocketCAN__close valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SocketCAN__close_template& list_item(unsigned int list_index) const;
+INTEGER_template& id();
+const INTEGER_template& id() const;
+int size_of() const;
+void log() const;
+void log_match(const SocketCAN__close& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+
+/* Function prototypes */
+
+extern boolean operator==(null_type null_value, const CAN__RAW__filters& other_value);
+inline boolean operator!=(null_type null_value, const CAN__RAW__filters& other_value) { return !(null_value == other_value); }
+
+/* Global variable declarations */
+
+extern const XERdescriptor_t SocketCAN__socketid_xer_;
+extern const TTCN_OERdescriptor_t SocketCAN__socketid_oer_;
+extern const TTCN_Typedescriptor_t SocketCAN__socketid_descr_;
+extern const XERdescriptor_t SocketCAN__if__name_xer_;
+extern const TTCN_Typedescriptor_t SocketCAN__if__name_descr_;
+extern const XERdescriptor_t SocketCAN__if__index_xer_;
+extern const TTCN_OERdescriptor_t SocketCAN__if__index_oer_;
+extern const TTCN_Typedescriptor_t SocketCAN__if__index_descr_;
+extern const XERdescriptor_t SocketCAN__Isotp__PDU_xer_;
+extern const TTCN_OERdescriptor_t SocketCAN__Isotp__PDU_oer_;
+extern const TTCN_Typedescriptor_t SocketCAN__Isotp__PDU_descr_;
+extern const XERdescriptor_t SocketCAN__timeval_tv__sec_xer_;
+extern const TTCN_OERdescriptor_t SocketCAN__timeval_tv__sec_oer_;
+extern const TTCN_Typedescriptor_t SocketCAN__timeval_tv__sec_descr_;
+extern const XERdescriptor_t SocketCAN__timeval_tv__usec_xer_;
+extern const TTCN_OERdescriptor_t SocketCAN__timeval_tv__usec_oer_;
+extern const TTCN_Typedescriptor_t SocketCAN__timeval_tv__usec_descr_;
+extern const TTCN_Typedescriptor_t SocketCAN__timeval_descr_;
+extern const TTCN_Typedescriptor_t SocketCAN__CAN__or__CAN__FD__frame_descr_;
+extern const TTCN_Typedescriptor_t SocketCAN__ifr_descr_;
+extern const XERdescriptor_t SocketCAN__ifr_if__name_xer_;
+extern const TTCN_Typedescriptor_t SocketCAN__ifr_if__name_descr_;
+extern const XERdescriptor_t SocketCAN__ifr_if__index_xer_;
+extern const TTCN_OERdescriptor_t SocketCAN__ifr_if__index_oer_;
+extern const TTCN_Typedescriptor_t SocketCAN__ifr_if__index_descr_;
+extern const TTCN_Typedescriptor_t SocketCAN__if__any_descr_;
+extern const TTCN_Typedescriptor_t SocketCAN__send__data__ifu_descr_;
+extern const XERdescriptor_t SocketCAN__send__data__ifu_if__name_xer_;
+extern const TTCN_Typedescriptor_t SocketCAN__send__data__ifu_if__name_descr_;
+extern const XERdescriptor_t SocketCAN__send__data__ifu_if__index_xer_;
+extern const TTCN_OERdescriptor_t SocketCAN__send__data__ifu_if__index_oer_;
+extern const TTCN_Typedescriptor_t SocketCAN__send__data__ifu_if__index_descr_;
+extern const TTCN_Typedescriptor_t SocketCAN__ioctl__ifu_descr_;
+extern const XERdescriptor_t SocketCAN__ioctl__ifu_if__name_xer_;
+extern const TTCN_Typedescriptor_t SocketCAN__ioctl__ifu_if__name_descr_;
+extern const XERdescriptor_t SocketCAN__ioctl__ifu_if__index_xer_;
+extern const TTCN_OERdescriptor_t SocketCAN__ioctl__ifu_if__index_oer_;
+extern const TTCN_Typedescriptor_t SocketCAN__ioctl__ifu_if__index_descr_;
+extern const TTCN_Typedescriptor_t SocketCAN__Result__code_descr_;
+extern const TTCN_Typedescriptor_t SocketCAN__Result_descr_;
+extern const XERdescriptor_t SocketCAN__Result_err_xer_;
+extern const TTCN_OERdescriptor_t SocketCAN__Result_err_oer_;
+extern const TTCN_Typedescriptor_t SocketCAN__Result_err_descr_;
+extern const XERdescriptor_t SocketCAN__Result_err__text_xer_;
+extern const TTCN_Typedescriptor_t SocketCAN__Result_err__text_descr_;
+extern const TTCN_Typedescriptor_t SocketCAN__socket_descr_;
+extern const XERdescriptor_t SocketCAN__socket__result_id_xer_;
+extern const TTCN_OERdescriptor_t SocketCAN__socket__result_id_oer_;
+extern const TTCN_Typedescriptor_t SocketCAN__socket__result_id_descr_;
+extern const TTCN_Typedescriptor_t SocketCAN__socket__result_descr_;
+extern const XERdescriptor_t SocketCAN__ioctl_id_xer_;
+extern const TTCN_OERdescriptor_t SocketCAN__ioctl_id_oer_;
+extern const TTCN_Typedescriptor_t SocketCAN__ioctl_id_descr_;
+extern const TTCN_Typedescriptor_t SocketCAN__ioctl_descr_;
+extern const TTCN_Typedescriptor_t SocketCAN__ioctl__result_descr_;
+extern const TTCN_Typedescriptor_t SocketCAN__connectu_descr_;
+extern const XERdescriptor_t SocketCAN__connect__bcm_if__index_xer_;
+extern const TTCN_OERdescriptor_t SocketCAN__connect__bcm_if__index_oer_;
+extern const TTCN_Typedescriptor_t SocketCAN__connect__bcm_if__index_descr_;
+extern const TTCN_Typedescriptor_t SocketCAN__connect__bcm_descr_;
+extern const XERdescriptor_t SocketCAN__connect_id_xer_;
+extern const TTCN_OERdescriptor_t SocketCAN__connect_id_oer_;
+extern const TTCN_Typedescriptor_t SocketCAN__connect_id_descr_;
+extern const TTCN_Typedescriptor_t SocketCAN__connect_descr_;
+extern const TTCN_Typedescriptor_t SocketCAN__connect__result_descr_;
+extern const XERdescriptor_t SocketCAN__bind__raw_if__index_xer_;
+extern const TTCN_OERdescriptor_t SocketCAN__bind__raw_if__index_oer_;
+extern const TTCN_Typedescriptor_t SocketCAN__bind__raw_if__index_descr_;
+extern const TTCN_Typedescriptor_t SocketCAN__bind__raw_descr_;
+extern const XERdescriptor_t SocketCAN__bind__isotp_if__index_xer_;
+extern const TTCN_OERdescriptor_t SocketCAN__bind__isotp_if__index_oer_;
+extern const TTCN_Typedescriptor_t SocketCAN__bind__isotp_if__index_descr_;
+extern const XERdescriptor_t SocketCAN__bind__isotp_rx__can__id_xer_;
+extern const TTCN_OERdescriptor_t SocketCAN__bind__isotp_rx__can__id_oer_;
+extern const TTCN_Typedescriptor_t SocketCAN__bind__isotp_rx__can__id_descr_;
+extern const XERdescriptor_t SocketCAN__bind__isotp_tx__can__id_xer_;
+extern const TTCN_OERdescriptor_t SocketCAN__bind__isotp_tx__can__id_oer_;
+extern const TTCN_Typedescriptor_t SocketCAN__bind__isotp_tx__can__id_descr_;
+extern const TTCN_Typedescriptor_t SocketCAN__bind__isotp_descr_;
+extern const TTCN_Typedescriptor_t SocketCAN__bindu_descr_;
+extern const XERdescriptor_t SocketCAN__bind_id_xer_;
+extern const TTCN_OERdescriptor_t SocketCAN__bind_id_oer_;
+extern const TTCN_Typedescriptor_t SocketCAN__bind_id_descr_;
+extern const TTCN_Typedescriptor_t SocketCAN__bind_descr_;
+extern const TTCN_Typedescriptor_t SocketCAN__bind__result_descr_;
+extern const XERdescriptor_t SocketCAN__send__data_id_xer_;
+extern const TTCN_OERdescriptor_t SocketCAN__send__data_id_oer_;
+extern const TTCN_Typedescriptor_t SocketCAN__send__data_id_descr_;
+extern const TTCN_Typedescriptor_t SocketCAN__send__data_descr_;
+extern const TTCN_Typedescriptor_t SocketCAN__send__data__result_descr_;
+extern const XERdescriptor_t SocketCAN__write__data_id_xer_;
+extern const TTCN_OERdescriptor_t SocketCAN__write__data_id_oer_;
+extern const TTCN_Typedescriptor_t SocketCAN__write__data_id_descr_;
+extern const TTCN_Typedescriptor_t SocketCAN__write__data_descr_;
+extern const TTCN_Typedescriptor_t SocketCAN__write__data__result_descr_;
+extern const XERdescriptor_t SocketCAN__write__isotp_id_xer_;
+extern const TTCN_OERdescriptor_t SocketCAN__write__isotp_id_oer_;
+extern const TTCN_Typedescriptor_t SocketCAN__write__isotp_id_descr_;
+extern const XERdescriptor_t SocketCAN__write__isotp_pdu_xer_;
+extern const TTCN_OERdescriptor_t SocketCAN__write__isotp_pdu_oer_;
+extern const TTCN_Typedescriptor_t SocketCAN__write__isotp_pdu_descr_;
+extern const TTCN_Typedescriptor_t SocketCAN__write__isotp_descr_;
+extern const TTCN_Typedescriptor_t SocketCAN__write__isotp__result_descr_;
+extern const XERdescriptor_t SocketCAN__receive__CAN__or__CAN__FD__frame_id_xer_;
+extern const TTCN_OERdescriptor_t SocketCAN__receive__CAN__or__CAN__FD__frame_id_oer_;
+extern const TTCN_Typedescriptor_t SocketCAN__receive__CAN__or__CAN__FD__frame_id_descr_;
+extern const TTCN_Typedescriptor_t SocketCAN__receive__CAN__or__CAN__FD__frame_descr_;
+extern const XERdescriptor_t SocketCAN__receive__BCM__message_id_xer_;
+extern const TTCN_OERdescriptor_t SocketCAN__receive__BCM__message_id_oer_;
+extern const TTCN_Typedescriptor_t SocketCAN__receive__BCM__message_id_descr_;
+extern const TTCN_Typedescriptor_t SocketCAN__receive__BCM__message_descr_;
+extern const XERdescriptor_t SocketCAN__receive__isotp__pdu_id_xer_;
+extern const TTCN_OERdescriptor_t SocketCAN__receive__isotp__pdu_id_oer_;
+extern const TTCN_Typedescriptor_t SocketCAN__receive__isotp__pdu_id_descr_;
+extern const XERdescriptor_t SocketCAN__receive__isotp__pdu_pdu_xer_;
+extern const TTCN_OERdescriptor_t SocketCAN__receive__isotp__pdu_pdu_oer_;
+extern const TTCN_Typedescriptor_t SocketCAN__receive__isotp__pdu_pdu_descr_;
+extern const TTCN_Typedescriptor_t SocketCAN__receive__isotp__pdu_descr_;
+extern const TTCN_Typedescriptor_t CAN__RAW__filters_descr_;
+extern const TTCN_Typedescriptor_t SocketCAN__setsockopt__commandu_descr_;
+extern const XERdescriptor_t SocketCAN__setsockopt__commandu_err__mask_xer_;
+extern const TTCN_OERdescriptor_t SocketCAN__setsockopt__commandu_err__mask_oer_;
+extern const TTCN_Typedescriptor_t SocketCAN__setsockopt__commandu_err__mask_descr_;
+extern const XERdescriptor_t SocketCAN__setsockopt_id_xer_;
+extern const TTCN_OERdescriptor_t SocketCAN__setsockopt_id_oer_;
+extern const TTCN_Typedescriptor_t SocketCAN__setsockopt_id_descr_;
+extern const TTCN_Typedescriptor_t SocketCAN__setsockopt_descr_;
+extern const TTCN_Typedescriptor_t SocketCAN__setsockopt__result_descr_;
+extern const XERdescriptor_t SocketCAN__close_id_xer_;
+extern const TTCN_OERdescriptor_t SocketCAN__close_id_oer_;
+extern const TTCN_Typedescriptor_t SocketCAN__close_id_descr_;
+extern const TTCN_Typedescriptor_t SocketCAN__close_descr_;
+extern TTCN_Module module_object;
+
+} /* end of namespace */
+
+#endif
diff --git a/demo/SocketCAN_Types.o b/demo/SocketCAN_Types.o
new file mode 100644
index 0000000..4e605b9
--- /dev/null
+++ b/demo/SocketCAN_Types.o
Binary files differ
diff --git a/demo/SocketCANtest.cc b/demo/SocketCANtest.cc
new file mode 100644
index 0000000..125aa5c
--- /dev/null
+++ b/demo/SocketCANtest.cc
@@ -0,0 +1,10758 @@
+// This C++ source file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+/* Including header files */
+
+#include "SocketCANtest.hh"
+
+namespace SocketCANtest {
+
+/* Prototypes of static functions */
+
+static void pre_init_module();
+static void post_init_module();
+static boolean init_comp_type(const char *component_type, boolean init_base_comps);
+static boolean init_system_port(const char* component_type, const char* port_name);
+static boolean start_ptc_function(const char *function_name, Text_Buf& function_arguments);
+
+/* Literal string constants */
+
+static const unsigned char module_checksum[] = { 0xb6, 0x43, 0x20, 0x73, 0x85, 0xdb, 0x97, 0xc0, 0xb3, 0x10, 0xa7, 0xb6, 0xb5, 0x9d, 0x7e, 0x65 };
+
+/* Class definitions for internal use */
+
+class alt__awaitPhaseStartReq_Default : public Default_Base {
+e__Phase par_p__phase;
+public:
+alt__awaitPhaseStartReq_Default(const e__Phase& p__phase);
+alt_status call_altstep();
+};
+
+
+/* Global variable definitions */
+
+static FLOAT const_c__guard;
+const FLOAT& c__guard = const_c__guard;
+// No XER for SocketCAN__open__socket__type
+const TTCN_Typedescriptor_t SocketCAN__open__socket__type_descr_ = { "@SocketCANtest.SocketCAN_open_socket_type", NULL, NULL, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for e__Phase
+const TTCN_Typedescriptor_t e__Phase_descr_ = { "@SocketCANtest.e_Phase", NULL, NULL, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SocketCAN__open__raw__result_socket__id_xer_ = { {"socket_id>\n", "socket_id>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SocketCAN__open__raw__result_socket__id_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SocketCAN__open__raw__result_socket__id_descr_ = { "@SocketCANtest.SocketCAN_open_raw_result.socket_id", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &SocketCAN__open__raw__result_socket__id_xer_, &INTEGER_json_, &SocketCAN__open__raw__result_socket__id_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for SocketCAN__open__raw__result
+const TTCN_Typedescriptor_t SocketCAN__open__raw__result_descr_ = { "@SocketCANtest.SocketCAN_open_raw_result", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for BCM__cmd
+const TTCN_Typedescriptor_t BCM__cmd_descr_ = { "@SocketCANtest.BCM_cmd", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for BCM__cmds
+const TTCN_Typedescriptor_t BCM__cmds_descr_ = { "@SocketCANtest.BCM_cmds", NULL, NULL, NULL, NULL, NULL, NULL, &BCM__cmd_descr_, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for SocketCAN__CAN__or__CAN__FD__frames
+const TTCN_Typedescriptor_t SocketCAN__CAN__or__CAN__FD__frames_descr_ = { "@SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames", NULL, NULL, NULL, NULL, NULL, NULL, &SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame_descr_, TTCN_Typedescriptor_t::DONTCARE };
+static e__Phase const_c__firstPhase;
+const e__Phase& c__firstPhase = const_c__firstPhase;
+static e__Phase const_c__testcase__complete;
+const e__Phase& c__testcase__complete = const_c__testcase__complete;
+const XERdescriptor_t       PhaseStartReq_phase__int_xer_ = { {"phase_int>\n", "phase_int>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t PhaseStartReq_phase__int_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t PhaseStartReq_phase__int_descr_ = { "@SocketCANtest.PhaseStartReq.phase_int", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &PhaseStartReq_phase__int_xer_, &INTEGER_json_, &PhaseStartReq_phase__int_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for PhaseStartReq
+const TTCN_Typedescriptor_t PhaseStartReq_descr_ = { "@SocketCANtest.PhaseStartReq", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       PhaseEndInd_phase__int_xer_ = { {"phase_int>\n", "phase_int>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t PhaseEndInd_phase__int_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t PhaseEndInd_phase__int_descr_ = { "@SocketCANtest.PhaseEndInd.phase_int", &INTEGER_ber_, &INTEGER_raw_, &INTEGER_text_, &PhaseEndInd_phase__int_xer_, &INTEGER_json_, &PhaseEndInd_phase__int_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for PhaseEndInd
+const TTCN_Typedescriptor_t PhaseEndInd_descr_ = { "@SocketCANtest.PhaseEndInd", NULL, NULL, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+// No XER for PTCSet
+const TTCN_Typedescriptor_t PTCSet_descr_ = { "@SocketCANtest.PTCSet", NULL, NULL, NULL, NULL, NULL, NULL, &COMPONENT_descr_, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_Typedescriptor_t& PTC_descr_ = COMPONENT_descr_;
+SyncSlavePort PTC_component_pt__sync("pt_sync");
+SocketCAN__PortType::SocketCAN__PT PTC_component_pt__socketCAN("pt_socketCAN");
+e__Phase PTC_component_v__phase;
+const TTCN_Typedescriptor_t& MTC_descr_ = COMPONENT_descr_;
+TIMER MTC_component_t__guard("t_guard");
+SyncMasterPort MTC_component_pt__sync("pt_sync");
+PTCSet MTC_component_v__PTCSet;
+TTCN_Module module_object("SocketCANtest", __DATE__, __TIME__, module_checksum, pre_init_module, NULL, 0U, 4294967295U, 4294967295U, 4294967295U, NULL, 0LU, 0, post_init_module, NULL, NULL, NULL, init_comp_type, init_system_port, start_ptc_function, NULL);
+
+static const RuntimeVersionChecker ver_checker(  current_runtime_version.requires_major_version_6,
+  current_runtime_version.requires_minor_version_6,
+  current_runtime_version.requires_patch_level_0,  current_runtime_version.requires_runtime_1);
+
+/* Member functions of C++ classes */
+
+SocketCAN__open__socket__type::SocketCAN__open__socket__type()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+SocketCAN__open__socket__type::SocketCAN__open__socket__type(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @SocketCANtest.SocketCAN_open_socket_type with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+SocketCAN__open__socket__type::SocketCAN__open__socket__type(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+SocketCAN__open__socket__type::SocketCAN__open__socket__type(const SocketCAN__open__socket__type& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @SocketCANtest.SocketCAN_open_socket_type.");
+enum_value = other_value.enum_value;
+}
+
+SocketCAN__open__socket__type& SocketCAN__open__socket__type::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @SocketCANtest.SocketCAN_open_socket_type.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+SocketCAN__open__socket__type& SocketCAN__open__socket__type::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+SocketCAN__open__socket__type& SocketCAN__open__socket__type::operator=(const SocketCAN__open__socket__type& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @SocketCANtest.SocketCAN_open_socket_type.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean SocketCAN__open__socket__type::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @SocketCANtest.SocketCAN_open_socket_type.");
+return enum_value == other_value;
+}
+
+boolean SocketCAN__open__socket__type::operator==(const SocketCAN__open__socket__type& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @SocketCANtest.SocketCAN_open_socket_type.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @SocketCANtest.SocketCAN_open_socket_type.");
+return enum_value == other_value.enum_value;
+}
+
+boolean SocketCAN__open__socket__type::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @SocketCANtest.SocketCAN_open_socket_type.");
+return enum_value < other_value;
+}
+
+boolean SocketCAN__open__socket__type::operator<(const SocketCAN__open__socket__type& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @SocketCANtest.SocketCAN_open_socket_type.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @SocketCANtest.SocketCAN_open_socket_type.");
+return enum_value < other_value.enum_value;
+}
+
+boolean SocketCAN__open__socket__type::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @SocketCANtest.SocketCAN_open_socket_type.");
+return enum_value > other_value;
+}
+
+boolean SocketCAN__open__socket__type::operator>(const SocketCAN__open__socket__type& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @SocketCANtest.SocketCAN_open_socket_type.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @SocketCANtest.SocketCAN_open_socket_type.");
+return enum_value > other_value.enum_value;
+}
+
+const char *SocketCAN__open__socket__type::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case OPEN__CAN__RAW: return "OPEN_CAN_RAW";
+case OPEN__CAN__BCM: return "OPEN_CAN_BCM";
+case OPEN__CAN__ISOTP: return "OPEN_CAN_ISOTP";
+default: return "<unknown>";
+}
+}
+
+SocketCAN__open__socket__type::enum_type SocketCAN__open__socket__type::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "OPEN_CAN_RAW")) return OPEN__CAN__RAW;
+else if (!strcmp(str_par, "OPEN_CAN_BCM")) return OPEN__CAN__BCM;
+else if (!strcmp(str_par, "OPEN_CAN_ISOTP")) return OPEN__CAN__ISOTP;
+else return UNKNOWN_VALUE;
+}
+
+boolean SocketCAN__open__socket__type::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 0:
+case 1:
+case 2:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int SocketCAN__open__socket__type::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @SocketCANtest.SocketCAN_open_socket_type.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int SocketCAN__open__socket__type::enum2int(const SocketCAN__open__socket__type& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @SocketCANtest.SocketCAN_open_socket_type.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void SocketCAN__open__socket__type::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @SocketCANtest.SocketCAN_open_socket_type.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+SocketCAN__open__socket__type::operator SocketCAN__open__socket__type::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @SocketCANtest.SocketCAN_open_socket_type.");
+return enum_value;
+}
+
+void SocketCAN__open__socket__type::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void SocketCAN__open__socket__type::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@SocketCANtest.SocketCAN_open_socket_type");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @SocketCANtest.SocketCAN_open_socket_type.");
+  }
+}
+
+void SocketCAN__open__socket__type::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @SocketCANtest.SocketCAN_open_socket_type.");
+text_buf.push_int(enum_value);
+}
+
+void SocketCAN__open__socket__type::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @SocketCANtest.SocketCAN_open_socket_type.", enum_value);
+}
+
+void SocketCAN__open__socket__type_template::copy_template(const SocketCAN__open__socket__type_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SocketCAN__open__socket__type_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @SocketCANtest.SocketCAN_open_socket_type.");
+}
+}
+
+SocketCAN__open__socket__type_template::SocketCAN__open__socket__type_template()
+{
+}
+
+SocketCAN__open__socket__type_template::SocketCAN__open__socket__type_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SocketCAN__open__socket__type_template::SocketCAN__open__socket__type_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!SocketCAN__open__socket__type::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @SocketCANtest.SocketCAN_open_socket_type with unknown numeric value %d.", other_value);
+single_value = (SocketCAN__open__socket__type::enum_type)other_value;
+}
+
+SocketCAN__open__socket__type_template::SocketCAN__open__socket__type_template(SocketCAN__open__socket__type::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+SocketCAN__open__socket__type_template::SocketCAN__open__socket__type_template(const SocketCAN__open__socket__type& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == SocketCAN__open__socket__type::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @SocketCANtest.SocketCAN_open_socket_type.");
+single_value = other_value.enum_value;
+}
+
+SocketCAN__open__socket__type_template::SocketCAN__open__socket__type_template(const OPTIONAL<SocketCAN__open__socket__type>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (SocketCAN__open__socket__type::enum_type)(const SocketCAN__open__socket__type&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @SocketCANtest.SocketCAN_open_socket_type from an unbound optional field.");
+}
+}
+
+SocketCAN__open__socket__type_template::SocketCAN__open__socket__type_template(const SocketCAN__open__socket__type_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+SocketCAN__open__socket__type_template::~SocketCAN__open__socket__type_template()
+{
+clean_up();
+}
+
+boolean SocketCAN__open__socket__type_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean SocketCAN__open__socket__type_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != SocketCAN__open__socket__type::UNBOUND_VALUE;
+}
+
+void SocketCAN__open__socket__type_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SocketCAN__open__socket__type_template& SocketCAN__open__socket__type_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SocketCAN__open__socket__type_template& SocketCAN__open__socket__type_template::operator=(int other_value)
+{
+if (!SocketCAN__open__socket__type::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @SocketCANtest.SocketCAN_open_socket_type.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (SocketCAN__open__socket__type::enum_type)other_value;
+return *this;
+}
+
+SocketCAN__open__socket__type_template& SocketCAN__open__socket__type_template::operator=(SocketCAN__open__socket__type::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+SocketCAN__open__socket__type_template& SocketCAN__open__socket__type_template::operator=(const SocketCAN__open__socket__type& other_value)
+{
+if (other_value.enum_value == SocketCAN__open__socket__type::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @SocketCANtest.SocketCAN_open_socket_type to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+SocketCAN__open__socket__type_template& SocketCAN__open__socket__type_template::operator=(const OPTIONAL<SocketCAN__open__socket__type>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (SocketCAN__open__socket__type::enum_type)(const SocketCAN__open__socket__type&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @SocketCANtest.SocketCAN_open_socket_type.");
+}
+return *this;
+}
+
+SocketCAN__open__socket__type_template& SocketCAN__open__socket__type_template::operator=(const SocketCAN__open__socket__type_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__open__socket__type_template::match(SocketCAN__open__socket__type::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @SocketCANtest.SocketCAN_open_socket_type.");
+}
+return FALSE;
+}
+
+boolean SocketCAN__open__socket__type_template::match(const SocketCAN__open__socket__type& other_value, boolean) const
+{
+if (other_value.enum_value == SocketCAN__open__socket__type::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @SocketCANtest.SocketCAN_open_socket_type with an unbound value.");
+return match(other_value.enum_value);
+}
+
+SocketCAN__open__socket__type::enum_type SocketCAN__open__socket__type_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @SocketCANtest.SocketCAN_open_socket_type.");
+return single_value;
+}
+
+void SocketCAN__open__socket__type_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @SocketCANtest.SocketCAN_open_socket_type.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SocketCAN__open__socket__type_template[list_length];
+}
+
+SocketCAN__open__socket__type_template& SocketCAN__open__socket__type_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @SocketCANtest.SocketCAN_open_socket_type.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @SocketCANtest.SocketCAN_open_socket_type.");
+return value_list.list_value[list_index];
+}
+
+void SocketCAN__open__socket__type_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(SocketCAN__open__socket__type::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SocketCAN__open__socket__type_template::log_match(const SocketCAN__open__socket__type& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void SocketCAN__open__socket__type_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @SocketCANtest.SocketCAN_open_socket_type.");
+}
+}
+
+void SocketCAN__open__socket__type_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (SocketCAN__open__socket__type::enum_type)text_buf.pull_int().get_val();
+if (!SocketCAN__open__socket__type::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @SocketCANtest.SocketCAN_open_socket_type.", single_value);
+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 SocketCAN__open__socket__type_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @SocketCANtest.SocketCAN_open_socket_type.");
+}
+}
+
+boolean SocketCAN__open__socket__type_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SocketCAN__open__socket__type_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 SocketCAN__open__socket__type_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    SocketCAN__open__socket__type_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    SocketCAN__open__socket__type::enum_type enum_val = SocketCAN__open__socket__type::str_to_enum(m_p->get_enumerated());
+    if (!SocketCAN__open__socket__type::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @SocketCANtest.SocketCAN_open_socket_type.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@SocketCANtest.SocketCAN_open_socket_type");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SocketCAN__open__socket__type_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@SocketCANtest.SocketCAN_open_socket_type");
+}
+
+e__Phase::e__Phase()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+e__Phase::e__Phase(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @SocketCANtest.e_Phase with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+e__Phase::e__Phase(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+e__Phase::e__Phase(const e__Phase& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @SocketCANtest.e_Phase.");
+enum_value = other_value.enum_value;
+}
+
+e__Phase& e__Phase::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @SocketCANtest.e_Phase.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+e__Phase& e__Phase::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+e__Phase& e__Phase::operator=(const e__Phase& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @SocketCANtest.e_Phase.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean e__Phase::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @SocketCANtest.e_Phase.");
+return enum_value == other_value;
+}
+
+boolean e__Phase::operator==(const e__Phase& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @SocketCANtest.e_Phase.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @SocketCANtest.e_Phase.");
+return enum_value == other_value.enum_value;
+}
+
+boolean e__Phase::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @SocketCANtest.e_Phase.");
+return enum_value < other_value;
+}
+
+boolean e__Phase::operator<(const e__Phase& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @SocketCANtest.e_Phase.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @SocketCANtest.e_Phase.");
+return enum_value < other_value.enum_value;
+}
+
+boolean e__Phase::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @SocketCANtest.e_Phase.");
+return enum_value > other_value;
+}
+
+boolean e__Phase::operator>(const e__Phase& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @SocketCANtest.e_Phase.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @SocketCANtest.e_Phase.");
+return enum_value > other_value.enum_value;
+}
+
+const char *e__Phase::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case e__open__socket: return "e_open_socket";
+case e__testbody1: return "e_testbody1";
+case e__testbody2: return "e_testbody2";
+case e__testbody3: return "e_testbody3";
+case e__testbody4: return "e_testbody4";
+case e__testbody5: return "e_testbody5";
+case e__testbody6: return "e_testbody6";
+case e__testbody7: return "e_testbody7";
+case e__testbodyEnd: return "e_testbodyEnd";
+case e__close__socket: return "e_close_socket";
+case e__testcase__complete: return "e_testcase_complete";
+default: return "<unknown>";
+}
+}
+
+e__Phase::enum_type e__Phase::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "e_open_socket")) return e__open__socket;
+else if (!strcmp(str_par, "e_testbody1")) return e__testbody1;
+else if (!strcmp(str_par, "e_testbody2")) return e__testbody2;
+else if (!strcmp(str_par, "e_testbody3")) return e__testbody3;
+else if (!strcmp(str_par, "e_testbody4")) return e__testbody4;
+else if (!strcmp(str_par, "e_testbody5")) return e__testbody5;
+else if (!strcmp(str_par, "e_testbody6")) return e__testbody6;
+else if (!strcmp(str_par, "e_testbody7")) return e__testbody7;
+else if (!strcmp(str_par, "e_testbodyEnd")) return e__testbodyEnd;
+else if (!strcmp(str_par, "e_close_socket")) return e__close__socket;
+else if (!strcmp(str_par, "e_testcase_complete")) return e__testcase__complete;
+else return UNKNOWN_VALUE;
+}
+
+boolean e__Phase::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 0:
+case 1:
+case 2:
+case 3:
+case 4:
+case 5:
+case 6:
+case 7:
+case 8:
+case 9:
+case 10:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int e__Phase::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @SocketCANtest.e_Phase.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int e__Phase::enum2int(const e__Phase& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @SocketCANtest.e_Phase.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void e__Phase::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @SocketCANtest.e_Phase.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+e__Phase::operator e__Phase::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @SocketCANtest.e_Phase.");
+return enum_value;
+}
+
+void e__Phase::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void e__Phase::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@SocketCANtest.e_Phase");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @SocketCANtest.e_Phase.");
+  }
+}
+
+void e__Phase::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @SocketCANtest.e_Phase.");
+text_buf.push_int(enum_value);
+}
+
+void e__Phase::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @SocketCANtest.e_Phase.", enum_value);
+}
+
+void e__Phase_template::copy_template(const e__Phase_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new e__Phase_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @SocketCANtest.e_Phase.");
+}
+}
+
+e__Phase_template::e__Phase_template()
+{
+}
+
+e__Phase_template::e__Phase_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+e__Phase_template::e__Phase_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!e__Phase::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @SocketCANtest.e_Phase with unknown numeric value %d.", other_value);
+single_value = (e__Phase::enum_type)other_value;
+}
+
+e__Phase_template::e__Phase_template(e__Phase::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+e__Phase_template::e__Phase_template(const e__Phase& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == e__Phase::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @SocketCANtest.e_Phase.");
+single_value = other_value.enum_value;
+}
+
+e__Phase_template::e__Phase_template(const OPTIONAL<e__Phase>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__Phase::enum_type)(const e__Phase&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @SocketCANtest.e_Phase from an unbound optional field.");
+}
+}
+
+e__Phase_template::e__Phase_template(const e__Phase_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+e__Phase_template::~e__Phase_template()
+{
+clean_up();
+}
+
+boolean e__Phase_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean e__Phase_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != e__Phase::UNBOUND_VALUE;
+}
+
+void e__Phase_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+e__Phase_template& e__Phase_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+e__Phase_template& e__Phase_template::operator=(int other_value)
+{
+if (!e__Phase::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @SocketCANtest.e_Phase.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (e__Phase::enum_type)other_value;
+return *this;
+}
+
+e__Phase_template& e__Phase_template::operator=(e__Phase::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+e__Phase_template& e__Phase_template::operator=(const e__Phase& other_value)
+{
+if (other_value.enum_value == e__Phase::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @SocketCANtest.e_Phase to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+e__Phase_template& e__Phase_template::operator=(const OPTIONAL<e__Phase>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__Phase::enum_type)(const e__Phase&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @SocketCANtest.e_Phase.");
+}
+return *this;
+}
+
+e__Phase_template& e__Phase_template::operator=(const e__Phase_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean e__Phase_template::match(e__Phase::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @SocketCANtest.e_Phase.");
+}
+return FALSE;
+}
+
+boolean e__Phase_template::match(const e__Phase& other_value, boolean) const
+{
+if (other_value.enum_value == e__Phase::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @SocketCANtest.e_Phase with an unbound value.");
+return match(other_value.enum_value);
+}
+
+e__Phase::enum_type e__Phase_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @SocketCANtest.e_Phase.");
+return single_value;
+}
+
+void e__Phase_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @SocketCANtest.e_Phase.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new e__Phase_template[list_length];
+}
+
+e__Phase_template& e__Phase_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @SocketCANtest.e_Phase.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @SocketCANtest.e_Phase.");
+return value_list.list_value[list_index];
+}
+
+void e__Phase_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(e__Phase::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void e__Phase_template::log_match(const e__Phase& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void e__Phase_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @SocketCANtest.e_Phase.");
+}
+}
+
+void e__Phase_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (e__Phase::enum_type)text_buf.pull_int().get_val();
+if (!e__Phase::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @SocketCANtest.e_Phase.", single_value);
+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 e__Phase_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @SocketCANtest.e_Phase.");
+}
+}
+
+boolean e__Phase_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean e__Phase_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 e__Phase_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    e__Phase_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    e__Phase::enum_type enum_val = e__Phase::str_to_enum(m_p->get_enumerated());
+    if (!e__Phase::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @SocketCANtest.e_Phase.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@SocketCANtest.e_Phase");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void e__Phase_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@SocketCANtest.e_Phase");
+}
+
+SocketCAN__open__raw__result::SocketCAN__open__raw__result()
+{
+}
+
+SocketCAN__open__raw__result::SocketCAN__open__raw__result(const SocketCAN__Types::SocketCAN__ifr& par_ifr,
+    const INTEGER& par_socket__id)
+  :   field_ifr(par_ifr),
+  field_socket__id(par_socket__id)
+{
+}
+
+SocketCAN__open__raw__result::SocketCAN__open__raw__result(const SocketCAN__open__raw__result& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @SocketCANtest.SocketCAN_open_raw_result.");
+if (other_value.ifr().is_bound()) field_ifr = other_value.ifr();
+else field_ifr.clean_up();
+if (other_value.socket__id().is_bound()) field_socket__id = other_value.socket__id();
+else field_socket__id.clean_up();
+}
+
+void SocketCAN__open__raw__result::clean_up()
+{
+field_ifr.clean_up();
+field_socket__id.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SocketCAN__open__raw__result::get_descriptor() const { return &SocketCAN__open__raw__result_descr_; }
+SocketCAN__open__raw__result& SocketCAN__open__raw__result::operator=(const SocketCAN__open__raw__result& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @SocketCANtest.SocketCAN_open_raw_result.");
+  if (other_value.ifr().is_bound()) field_ifr = other_value.ifr();
+  else field_ifr.clean_up();
+  if (other_value.socket__id().is_bound()) field_socket__id = other_value.socket__id();
+  else field_socket__id.clean_up();
+}
+return *this;
+}
+
+boolean SocketCAN__open__raw__result::operator==(const SocketCAN__open__raw__result& other_value) const
+{
+return field_ifr==other_value.field_ifr
+  && field_socket__id==other_value.field_socket__id;
+}
+
+boolean SocketCAN__open__raw__result::is_bound() const
+{
+return (field_ifr.is_bound())
+  || (field_socket__id.is_bound());
+}
+boolean SocketCAN__open__raw__result::is_value() const
+{
+return field_ifr.is_value()
+  && field_socket__id.is_value();
+}
+void SocketCAN__open__raw__result::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ ifr := ");
+field_ifr.log();
+TTCN_Logger::log_event_str(", socket_id := ");
+field_socket__id.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SocketCAN__open__raw__result::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 @SocketCANtest.SocketCAN_open_raw_result 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) ifr().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) socket__id().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(), "ifr")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ifr().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(), "socket_id")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          socket__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 @SocketCANtest.SocketCAN_open_raw_result: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@SocketCANtest.SocketCAN_open_raw_result");
+  }
+}
+
+void SocketCAN__open__raw__result::set_implicit_omit()
+{
+if (ifr().is_bound()) ifr().set_implicit_omit();
+if (socket__id().is_bound()) socket__id().set_implicit_omit();
+}
+
+void SocketCAN__open__raw__result::encode_text(Text_Buf& text_buf) const
+{
+field_ifr.encode_text(text_buf);
+field_socket__id.encode_text(text_buf);
+}
+
+void SocketCAN__open__raw__result::decode_text(Text_Buf& text_buf)
+{
+field_ifr.decode_text(text_buf);
+field_socket__id.decode_text(text_buf);
+}
+
+struct SocketCAN__open__raw__result_template::single_value_struct {
+SocketCAN__Types::SocketCAN__ifr_template field_ifr;
+INTEGER_template field_socket__id;
+};
+
+void SocketCAN__open__raw__result_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_ifr = ANY_VALUE;
+single_value->field_socket__id = ANY_VALUE;
+}
+}
+}
+
+void SocketCAN__open__raw__result_template::copy_value(const SocketCAN__open__raw__result& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.ifr().is_bound()) {
+  single_value->field_ifr = other_value.ifr();
+} else {
+  single_value->field_ifr.clean_up();
+}
+if (other_value.socket__id().is_bound()) {
+  single_value->field_socket__id = other_value.socket__id();
+} else {
+  single_value->field_socket__id.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SocketCAN__open__raw__result_template::copy_template(const SocketCAN__open__raw__result_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.ifr().get_selection()) {
+single_value->field_ifr = other_value.ifr();
+} else {
+single_value->field_ifr.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.socket__id().get_selection()) {
+single_value->field_socket__id = other_value.socket__id();
+} else {
+single_value->field_socket__id.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SocketCAN__open__raw__result_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @SocketCANtest.SocketCAN_open_raw_result.");
+break;
+}
+set_selection(other_value);
+}
+
+SocketCAN__open__raw__result_template::SocketCAN__open__raw__result_template()
+{
+}
+
+SocketCAN__open__raw__result_template::SocketCAN__open__raw__result_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SocketCAN__open__raw__result_template::SocketCAN__open__raw__result_template(const SocketCAN__open__raw__result& other_value)
+{
+copy_value(other_value);
+}
+
+SocketCAN__open__raw__result_template::SocketCAN__open__raw__result_template(const OPTIONAL<SocketCAN__open__raw__result>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__open__raw__result&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @SocketCANtest.SocketCAN_open_raw_result from an unbound optional field.");
+}
+}
+
+SocketCAN__open__raw__result_template::SocketCAN__open__raw__result_template(const SocketCAN__open__raw__result_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SocketCAN__open__raw__result_template::~SocketCAN__open__raw__result_template()
+{
+clean_up();
+}
+
+SocketCAN__open__raw__result_template& SocketCAN__open__raw__result_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SocketCAN__open__raw__result_template& SocketCAN__open__raw__result_template::operator=(const SocketCAN__open__raw__result& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SocketCAN__open__raw__result_template& SocketCAN__open__raw__result_template::operator=(const OPTIONAL<SocketCAN__open__raw__result>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__open__raw__result&)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 @SocketCANtest.SocketCAN_open_raw_result.");
+}
+return *this;
+}
+
+SocketCAN__open__raw__result_template& SocketCAN__open__raw__result_template::operator=(const SocketCAN__open__raw__result_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SocketCAN__open__raw__result_template::match(const SocketCAN__open__raw__result& 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.ifr().is_bound()) return FALSE;
+if(!single_value->field_ifr.match(other_value.ifr(), legacy))return FALSE;
+if(!other_value.socket__id().is_bound()) return FALSE;
+if(!single_value->field_socket__id.match(other_value.socket__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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @SocketCANtest.SocketCAN_open_raw_result.");
+}
+return FALSE;
+}
+
+boolean SocketCAN__open__raw__result_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_ifr.is_bound()
+
+ ||single_value->field_socket__id.is_bound()
+;
+}
+
+boolean SocketCAN__open__raw__result_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_ifr.is_value()
+ &&single_value->field_socket__id.is_value();
+}
+
+void SocketCAN__open__raw__result_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SocketCAN__open__raw__result SocketCAN__open__raw__result_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 @SocketCANtest.SocketCAN_open_raw_result.");
+SocketCAN__open__raw__result ret_val;
+if (single_value->field_ifr.is_bound()) {
+ret_val.ifr() = single_value->field_ifr.valueof();
+}
+if (single_value->field_socket__id.is_bound()) {
+ret_val.socket__id() = single_value->field_socket__id.valueof();
+}
+return ret_val;
+}
+
+void SocketCAN__open__raw__result_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @SocketCANtest.SocketCAN_open_raw_result.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SocketCAN__open__raw__result_template[list_length];
+}
+
+SocketCAN__open__raw__result_template& SocketCAN__open__raw__result_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @SocketCANtest.SocketCAN_open_raw_result.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @SocketCANtest.SocketCAN_open_raw_result.");
+return value_list.list_value[list_index];
+}
+
+SocketCAN__Types::SocketCAN__ifr_template& SocketCAN__open__raw__result_template::ifr()
+{
+set_specific();
+return single_value->field_ifr;
+}
+
+const SocketCAN__Types::SocketCAN__ifr_template& SocketCAN__open__raw__result_template::ifr() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field ifr of a non-specific template of type @SocketCANtest.SocketCAN_open_raw_result.");
+return single_value->field_ifr;
+}
+
+INTEGER_template& SocketCAN__open__raw__result_template::socket__id()
+{
+set_specific();
+return single_value->field_socket__id;
+}
+
+const INTEGER_template& SocketCAN__open__raw__result_template::socket__id() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field socket_id of a non-specific template of type @SocketCANtest.SocketCAN_open_raw_result.");
+return single_value->field_socket__id;
+}
+
+int SocketCAN__open__raw__result_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @SocketCANtest.SocketCAN_open_raw_result 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 @SocketCANtest.SocketCAN_open_raw_result 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 @SocketCANtest.SocketCAN_open_raw_result containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCANtest.SocketCAN_open_raw_result containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCANtest.SocketCAN_open_raw_result containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCANtest.SocketCAN_open_raw_result containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @SocketCANtest.SocketCAN_open_raw_result.");
+  }
+  return 0;
+}
+
+void SocketCAN__open__raw__result_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ ifr := ");
+single_value->field_ifr.log();
+TTCN_Logger::log_event_str(", socket_id := ");
+single_value->field_socket__id.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SocketCAN__open__raw__result_template::log_match(const SocketCAN__open__raw__result& 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_ifr.match(match_value.ifr(), legacy)){
+TTCN_Logger::log_logmatch_info(".ifr");
+single_value->field_ifr.log_match(match_value.ifr(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_socket__id.match(match_value.socket__id(), legacy)){
+TTCN_Logger::log_logmatch_info(".socket_id");
+single_value->field_socket__id.log_match(match_value.socket__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("{ ifr := ");
+single_value->field_ifr.log_match(match_value.ifr(), legacy);
+TTCN_Logger::log_event_str(", socket_id := ");
+single_value->field_socket__id.log_match(match_value.socket__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 SocketCAN__open__raw__result_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_ifr.encode_text(text_buf);
+single_value->field_socket__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 @SocketCANtest.SocketCAN_open_raw_result.");
+}
+}
+
+void SocketCAN__open__raw__result_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_ifr.decode_text(text_buf);
+single_value->field_socket__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 SocketCAN__open__raw__result_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 @SocketCANtest.SocketCAN_open_raw_result.");
+}
+}
+
+void SocketCAN__open__raw__result_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: {
+    SocketCAN__open__raw__result_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @SocketCANtest.SocketCAN_open_raw_result 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) ifr().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) socket__id().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(), "ifr")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          ifr().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(), "socket_id")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          socket__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 @SocketCANtest.SocketCAN_open_raw_result: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@SocketCANtest.SocketCAN_open_raw_result");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SocketCAN__open__raw__result_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_ifr.check_restriction(t_res, t_name ? t_name : "@SocketCANtest.SocketCAN_open_raw_result");
+single_value->field_socket__id.check_restriction(t_res, t_name ? t_name : "@SocketCANtest.SocketCAN_open_raw_result");
+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 : "@SocketCANtest.SocketCAN_open_raw_result");
+}
+
+boolean SocketCAN__open__raw__result_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SocketCAN__open__raw__result_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+BCM__cmd::BCM__cmd()
+{
+}
+
+BCM__cmd::BCM__cmd(const e__Phase& par_phase,
+    const Bcm::SocketCAN__bcm__frame& par_bcm__frame)
+  :   field_phase(par_phase),
+  field_bcm__frame(par_bcm__frame)
+{
+}
+
+BCM__cmd::BCM__cmd(const BCM__cmd& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @SocketCANtest.BCM_cmd.");
+if (other_value.phase().is_bound()) field_phase = other_value.phase();
+else field_phase.clean_up();
+if (other_value.bcm__frame().is_bound()) field_bcm__frame = other_value.bcm__frame();
+else field_bcm__frame.clean_up();
+}
+
+void BCM__cmd::clean_up()
+{
+field_phase.clean_up();
+field_bcm__frame.clean_up();
+}
+
+const TTCN_Typedescriptor_t* BCM__cmd::get_descriptor() const { return &BCM__cmd_descr_; }
+BCM__cmd& BCM__cmd::operator=(const BCM__cmd& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @SocketCANtest.BCM_cmd.");
+  if (other_value.phase().is_bound()) field_phase = other_value.phase();
+  else field_phase.clean_up();
+  if (other_value.bcm__frame().is_bound()) field_bcm__frame = other_value.bcm__frame();
+  else field_bcm__frame.clean_up();
+}
+return *this;
+}
+
+boolean BCM__cmd::operator==(const BCM__cmd& other_value) const
+{
+return field_phase==other_value.field_phase
+  && field_bcm__frame==other_value.field_bcm__frame;
+}
+
+boolean BCM__cmd::is_bound() const
+{
+return (field_phase.is_bound())
+  || (field_bcm__frame.is_bound());
+}
+boolean BCM__cmd::is_value() const
+{
+return field_phase.is_value()
+  && field_bcm__frame.is_value();
+}
+void BCM__cmd::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ phase := ");
+field_phase.log();
+TTCN_Logger::log_event_str(", bcm_frame := ");
+field_bcm__frame.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void BCM__cmd::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 @SocketCANtest.BCM_cmd 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) phase().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) bcm__frame().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(), "phase")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          phase().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(), "bcm_frame")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          bcm__frame().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 @SocketCANtest.BCM_cmd: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@SocketCANtest.BCM_cmd");
+  }
+}
+
+void BCM__cmd::set_implicit_omit()
+{
+if (phase().is_bound()) phase().set_implicit_omit();
+if (bcm__frame().is_bound()) bcm__frame().set_implicit_omit();
+}
+
+void BCM__cmd::encode_text(Text_Buf& text_buf) const
+{
+field_phase.encode_text(text_buf);
+field_bcm__frame.encode_text(text_buf);
+}
+
+void BCM__cmd::decode_text(Text_Buf& text_buf)
+{
+field_phase.decode_text(text_buf);
+field_bcm__frame.decode_text(text_buf);
+}
+
+struct BCM__cmd_template::single_value_struct {
+e__Phase_template field_phase;
+Bcm::SocketCAN__bcm__frame_template field_bcm__frame;
+};
+
+void BCM__cmd_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_phase = ANY_VALUE;
+single_value->field_bcm__frame = ANY_VALUE;
+}
+}
+}
+
+void BCM__cmd_template::copy_value(const BCM__cmd& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.phase().is_bound()) {
+  single_value->field_phase = other_value.phase();
+} else {
+  single_value->field_phase.clean_up();
+}
+if (other_value.bcm__frame().is_bound()) {
+  single_value->field_bcm__frame = other_value.bcm__frame();
+} else {
+  single_value->field_bcm__frame.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void BCM__cmd_template::copy_template(const BCM__cmd_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.phase().get_selection()) {
+single_value->field_phase = other_value.phase();
+} else {
+single_value->field_phase.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.bcm__frame().get_selection()) {
+single_value->field_bcm__frame = other_value.bcm__frame();
+} else {
+single_value->field_bcm__frame.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new BCM__cmd_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @SocketCANtest.BCM_cmd.");
+break;
+}
+set_selection(other_value);
+}
+
+BCM__cmd_template::BCM__cmd_template()
+{
+}
+
+BCM__cmd_template::BCM__cmd_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+BCM__cmd_template::BCM__cmd_template(const BCM__cmd& other_value)
+{
+copy_value(other_value);
+}
+
+BCM__cmd_template::BCM__cmd_template(const OPTIONAL<BCM__cmd>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const BCM__cmd&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @SocketCANtest.BCM_cmd from an unbound optional field.");
+}
+}
+
+BCM__cmd_template::BCM__cmd_template(const BCM__cmd_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+BCM__cmd_template::~BCM__cmd_template()
+{
+clean_up();
+}
+
+BCM__cmd_template& BCM__cmd_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+BCM__cmd_template& BCM__cmd_template::operator=(const BCM__cmd& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+BCM__cmd_template& BCM__cmd_template::operator=(const OPTIONAL<BCM__cmd>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const BCM__cmd&)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 @SocketCANtest.BCM_cmd.");
+}
+return *this;
+}
+
+BCM__cmd_template& BCM__cmd_template::operator=(const BCM__cmd_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean BCM__cmd_template::match(const BCM__cmd& 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.phase().is_bound()) return FALSE;
+if(!single_value->field_phase.match(other_value.phase(), legacy))return FALSE;
+if(!other_value.bcm__frame().is_bound()) return FALSE;
+if(!single_value->field_bcm__frame.match(other_value.bcm__frame(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @SocketCANtest.BCM_cmd.");
+}
+return FALSE;
+}
+
+boolean BCM__cmd_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_phase.is_bound()
+
+ ||single_value->field_bcm__frame.is_bound()
+;
+}
+
+boolean BCM__cmd_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_phase.is_value()
+ &&single_value->field_bcm__frame.is_value();
+}
+
+void BCM__cmd_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+BCM__cmd BCM__cmd_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 @SocketCANtest.BCM_cmd.");
+BCM__cmd ret_val;
+if (single_value->field_phase.is_bound()) {
+ret_val.phase() = single_value->field_phase.valueof();
+}
+if (single_value->field_bcm__frame.is_bound()) {
+ret_val.bcm__frame() = single_value->field_bcm__frame.valueof();
+}
+return ret_val;
+}
+
+void BCM__cmd_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @SocketCANtest.BCM_cmd.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new BCM__cmd_template[list_length];
+}
+
+BCM__cmd_template& BCM__cmd_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @SocketCANtest.BCM_cmd.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @SocketCANtest.BCM_cmd.");
+return value_list.list_value[list_index];
+}
+
+e__Phase_template& BCM__cmd_template::phase()
+{
+set_specific();
+return single_value->field_phase;
+}
+
+const e__Phase_template& BCM__cmd_template::phase() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field phase of a non-specific template of type @SocketCANtest.BCM_cmd.");
+return single_value->field_phase;
+}
+
+Bcm::SocketCAN__bcm__frame_template& BCM__cmd_template::bcm__frame()
+{
+set_specific();
+return single_value->field_bcm__frame;
+}
+
+const Bcm::SocketCAN__bcm__frame_template& BCM__cmd_template::bcm__frame() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field bcm_frame of a non-specific template of type @SocketCANtest.BCM_cmd.");
+return single_value->field_bcm__frame;
+}
+
+int BCM__cmd_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @SocketCANtest.BCM_cmd 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 @SocketCANtest.BCM_cmd 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 @SocketCANtest.BCM_cmd containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCANtest.BCM_cmd containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCANtest.BCM_cmd containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCANtest.BCM_cmd containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @SocketCANtest.BCM_cmd.");
+  }
+  return 0;
+}
+
+void BCM__cmd_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ phase := ");
+single_value->field_phase.log();
+TTCN_Logger::log_event_str(", bcm_frame := ");
+single_value->field_bcm__frame.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void BCM__cmd_template::log_match(const BCM__cmd& 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_phase.match(match_value.phase(), legacy)){
+TTCN_Logger::log_logmatch_info(".phase");
+single_value->field_phase.log_match(match_value.phase(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_bcm__frame.match(match_value.bcm__frame(), legacy)){
+TTCN_Logger::log_logmatch_info(".bcm_frame");
+single_value->field_bcm__frame.log_match(match_value.bcm__frame(), 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("{ phase := ");
+single_value->field_phase.log_match(match_value.phase(), legacy);
+TTCN_Logger::log_event_str(", bcm_frame := ");
+single_value->field_bcm__frame.log_match(match_value.bcm__frame(), 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 BCM__cmd_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_phase.encode_text(text_buf);
+single_value->field_bcm__frame.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 @SocketCANtest.BCM_cmd.");
+}
+}
+
+void BCM__cmd_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_phase.decode_text(text_buf);
+single_value->field_bcm__frame.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 BCM__cmd_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 @SocketCANtest.BCM_cmd.");
+}
+}
+
+void BCM__cmd_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: {
+    BCM__cmd_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @SocketCANtest.BCM_cmd 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) phase().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) bcm__frame().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(), "phase")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          phase().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(), "bcm_frame")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          bcm__frame().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 @SocketCANtest.BCM_cmd: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@SocketCANtest.BCM_cmd");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void BCM__cmd_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_phase.check_restriction(t_res, t_name ? t_name : "@SocketCANtest.BCM_cmd");
+single_value->field_bcm__frame.check_restriction(t_res, t_name ? t_name : "@SocketCANtest.BCM_cmd");
+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 : "@SocketCANtest.BCM_cmd");
+}
+
+boolean BCM__cmd_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean BCM__cmd_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 BCM__cmd BCM__cmds::UNBOUND_ELEM;
+BCM__cmds::BCM__cmds()
+{
+val_ptr = NULL;
+}
+
+BCM__cmds::BCM__cmds(null_type)
+{
+val_ptr = new recordof_setof_struct;
+val_ptr->ref_count = 1;
+val_ptr->n_elements = 0;
+val_ptr->value_elements = NULL;
+}
+
+BCM__cmds::BCM__cmds(const BCM__cmds& other_value)
+{
+if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @SocketCANtest.BCM_cmds.");
+val_ptr = other_value.val_ptr;
+val_ptr->ref_count++;
+}
+
+BCM__cmds::~BCM__cmds()
+{
+clean_up();
+if (val_ptr != NULL) val_ptr = NULL;
+}
+
+void BCM__cmds::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.");
+}
+}
+
+BCM__cmds& BCM__cmds::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;
+}
+
+BCM__cmds& BCM__cmds::operator=(const BCM__cmds& other_value)
+{
+if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @SocketCANtest.BCM_cmds.");
+if (this != &other_value) {
+clean_up();
+val_ptr = other_value.val_ptr;
+val_ptr->ref_count++;
+}
+return *this;
+}
+
+boolean BCM__cmds::operator==(null_type) const
+{
+if (val_ptr == NULL)
+TTCN_error("The left operand of comparison is an unbound value of type @SocketCANtest.BCM_cmds.");
+return val_ptr->n_elements == 0 ;
+}
+
+boolean BCM__cmds::operator==(const BCM__cmds& other_value) const
+{
+if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @SocketCANtest.BCM_cmds.");
+if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @SocketCANtest.BCM_cmds.");
+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;
+}
+
+BCM__cmd& BCM__cmds::operator[](int index_value)
+{
+if (index_value < 0) TTCN_error("Accessing an element of type @SocketCANtest.BCM_cmds 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 = (BCM__cmd**)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 BCM__cmd(*(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 BCM__cmd;
+}
+return *val_ptr->value_elements[index_value];
+}
+
+BCM__cmd& BCM__cmds::operator[](const INTEGER& index_value)
+{
+index_value.must_bound("Using an unbound integer value for indexing a value of type @SocketCANtest.BCM_cmds.");
+return (*this)[(int)index_value];
+}
+
+const BCM__cmd& BCM__cmds::operator[](int index_value) const
+{
+if (val_ptr == NULL)
+TTCN_error("Accessing an element in an unbound value of type @SocketCANtest.BCM_cmds.");
+if (index_value < 0) TTCN_error("Accessing an element of type @SocketCANtest.BCM_cmds using a negative index: %d.", index_value);
+if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @SocketCANtest.BCM_cmds: 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 BCM__cmd& BCM__cmds::operator[](const INTEGER& index_value) const
+{
+index_value.must_bound("Using an unbound integer value for indexing a value of type @SocketCANtest.BCM_cmds.");
+return (*this)[(int)index_value];
+}
+
+BCM__cmds BCM__cmds::operator<<=(int rotate_count) const
+{
+return *this >>= (-rotate_count);
+}
+
+BCM__cmds BCM__cmds::operator<<=(const INTEGER& rotate_count) const
+{
+rotate_count.must_bound("Unbound integer operand of rotate left operator.");
+return *this >>= (int)(-rotate_count);
+}
+
+BCM__cmds BCM__cmds::operator>>=(const INTEGER& rotate_count) const
+{
+rotate_count.must_bound("Unbound integer operand of rotate right operator.");
+return *this >>= (int)rotate_count;
+}
+
+BCM__cmds BCM__cmds::operator>>=(int rotate_count) const
+{
+if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @SocketCANtest.BCM_cmds.");
+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;
+BCM__cmds 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 BCM__cmd(*val_ptr->value_elements[i]);
+}
+}
+return ret_val;
+}
+
+BCM__cmds BCM__cmds::operator+(const BCM__cmds& other_value) const
+{
+if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @SocketCANtest.BCM_cmds concatenation.");
+if (val_ptr->n_elements == 0) return other_value;
+if (other_value.val_ptr->n_elements == 0) return *this;
+BCM__cmds 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 BCM__cmd(*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 BCM__cmd(*other_value.val_ptr->value_elements[i]);
+}
+}
+return ret_val;
+}
+
+BCM__cmds BCM__cmds::substr(int index, int returncount) const
+{
+if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @SocketCANtest.BCM_cmds.");
+check_substr_arguments(val_ptr->n_elements, index, returncount, "@SocketCANtest.BCM_cmds","element");
+BCM__cmds 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 BCM__cmd(*val_ptr->value_elements[i+index]);
+}
+}
+return ret_val;
+}
+
+BCM__cmds BCM__cmds::replace(int index, int len, const BCM__cmds& repl) const
+{
+if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @SocketCANtest.BCM_cmds.");
+if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @SocketCANtest.BCM_cmds.");
+check_replace_arguments(val_ptr->n_elements, index, len, "@SocketCANtest.BCM_cmds","element");
+BCM__cmds 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 BCM__cmd(*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 BCM__cmd(*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 BCM__cmd(*val_ptr->value_elements[index+i+len]);
+}
+}
+return ret_val;
+}
+
+BCM__cmds BCM__cmds::replace(int index, int len, const BCM__cmds_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 BCM__cmds::set_size(int new_size)
+{
+if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @SocketCANtest.BCM_cmds.");
+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 = (BCM__cmd**)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 BCM__cmd(*(val_ptr->value_elements[elem_count]));
+}
+}
+clean_up();
+val_ptr = new_val_ptr;
+}
+if (new_size > val_ptr->n_elements) {
+val_ptr->value_elements = (BCM__cmd**)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 @SocketCANtest.BCM_cmds: %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 = (BCM__cmd**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size);
+val_ptr->n_elements = new_size;
+}
+}
+
+boolean BCM__cmds::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 BCM__cmds::size_of() const
+{
+if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @SocketCANtest.BCM_cmds.");
+return val_ptr->n_elements;
+}
+
+int BCM__cmds::lengthof() const
+{
+if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @SocketCANtest.BCM_cmds.");
+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 BCM__cmds::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 BCM__cmds::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", "@SocketCANtest.BCM_cmds");
+    }
+    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", "@SocketCANtest.BCM_cmds");
+    }
+    break;
+  default:
+    TTCN_error("Internal error: Unknown operation type.");
+  }
+}
+
+void BCM__cmds::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 BCM__cmds::encode_text(Text_Buf& text_buf) const
+{
+if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @SocketCANtest.BCM_cmds.");
+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 BCM__cmds::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 @SocketCANtest.BCM_cmds.");
+val_ptr->value_elements = (BCM__cmd**)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 BCM__cmd;
+val_ptr->value_elements[elem_count]->decode_text(text_buf);
+}
+}
+
+void BCM__cmds_template::copy_value(const BCM__cmds& other_value)
+{
+if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @SocketCANtest.BCM_cmds with an unbound value.");
+single_value.n_elements = other_value.size_of();
+single_value.value_elements = (BCM__cmd_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 BCM__cmd_template(other_value[elem_count]);
+} else {
+single_value.value_elements[elem_count] = new BCM__cmd_template;
+}
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void BCM__cmds_template::copy_template(const BCM__cmds_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 = (BCM__cmd_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 BCM__cmd_template(*other_value.single_value.value_elements[elem_count]);
+} else {
+single_value.value_elements[elem_count] = new BCM__cmd_template;
+}
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new BCM__cmds_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @SocketCANtest.BCM_cmds.");
+break;
+}
+set_selection(other_value);
+}
+
+boolean BCM__cmds_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 BCM__cmds_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const BCM__cmds*)value_ptr)[value_index], legacy);
+else return ((const BCM__cmds_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit();
+}
+
+BCM__cmds_template::BCM__cmds_template()
+{
+}
+
+BCM__cmds_template::BCM__cmds_template(template_sel other_value)
+ : Record_Of_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+BCM__cmds_template::BCM__cmds_template(null_type)
+ : Record_Of_Template(SPECIFIC_VALUE)
+{
+single_value.n_elements = 0;
+single_value.value_elements = NULL;
+}
+
+BCM__cmds_template::BCM__cmds_template(const BCM__cmds& other_value)
+{
+copy_value(other_value);
+}
+
+BCM__cmds_template::BCM__cmds_template(const OPTIONAL<BCM__cmds>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const BCM__cmds&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @SocketCANtest.BCM_cmds from an unbound optional field.");
+}
+}
+
+BCM__cmds_template::BCM__cmds_template(const BCM__cmds_template& other_value)
+ : Record_Of_Template()
+{
+copy_template(other_value);
+}
+
+BCM__cmds_template::~BCM__cmds_template()
+{
+clean_up();
+}
+
+void BCM__cmds_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:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+BCM__cmds_template& BCM__cmds_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+BCM__cmds_template& BCM__cmds_template::operator=(null_type)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value.n_elements = 0;
+single_value.value_elements = NULL;
+return *this;
+}
+
+BCM__cmds_template& BCM__cmds_template::operator=(const BCM__cmds& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+BCM__cmds_template& BCM__cmds_template::operator=(const OPTIONAL<BCM__cmds>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const BCM__cmds&)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 @SocketCANtest.BCM_cmds.");
+}
+return *this;
+}
+
+BCM__cmds_template& BCM__cmds_template::operator=(const BCM__cmds_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+BCM__cmd_template& BCM__cmds_template::operator[](int index_value)
+{
+if (index_value < 0) TTCN_error("Accessing an element of a template for type @SocketCANtest.BCM_cmds 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 @SocketCANtest.BCM_cmds.");
+    break;
+}
+return *single_value.value_elements[index_value];
+}
+
+BCM__cmd_template& BCM__cmds_template::operator[](const INTEGER& index_value)
+{
+index_value.must_bound("Using an unbound integer value for indexing a template of type @SocketCANtest.BCM_cmds.");
+return (*this)[(int)index_value];
+}
+
+const BCM__cmd_template& BCM__cmds_template::operator[](int index_value) const
+{
+if (index_value < 0) TTCN_error("Accessing an element of a template for type @SocketCANtest.BCM_cmds using a negative index: %d.", index_value);
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @SocketCANtest.BCM_cmds.");
+if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @SocketCANtest.BCM_cmds: 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 BCM__cmd_template& BCM__cmds_template::operator[](const INTEGER& index_value) const
+{
+index_value.must_bound("Using an unbound integer value for indexing a template of type @SocketCANtest.BCM_cmds.");
+return (*this)[(int)index_value];
+}
+
+void BCM__cmds_template::set_size(int new_size)
+{
+if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @SocketCANtest.BCM_cmds.");
+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 = (BCM__cmd_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 BCM__cmd_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 BCM__cmd_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 = (BCM__cmd_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size);
+single_value.n_elements = new_size;
+}
+}
+
+int BCM__cmds_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 BCM__cmds_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 @SocketCANtest.BCM_cmds 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 @SocketCANtest.BCM_cmds 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 @SocketCANtest.BCM_cmds 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 @SocketCANtest.BCM_cmds 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 @SocketCANtest.BCM_cmds 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 @SocketCANtest.BCM_cmds containing complemented list.", op_name);
+default:
+  TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @SocketCANtest.BCM_cmds.", op_name);
+}
+return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @SocketCANtest.BCM_cmds");
+}
+
+boolean BCM__cmds_template::match(const BCM__cmds& 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;
+default:
+TTCN_error("Matching with an uninitialized/unsupported template of type @SocketCANtest.BCM_cmds.");
+}
+return FALSE;
+}
+
+boolean BCM__cmds_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;
+}
+
+BCM__cmds BCM__cmds_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 @SocketCANtest.BCM_cmds.");
+BCM__cmds 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;
+}
+
+BCM__cmds BCM__cmds_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);
+}
+
+BCM__cmds BCM__cmds_template::replace(int index, int len, const BCM__cmds_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());
+}
+
+BCM__cmds BCM__cmds_template::replace(int index, int len, const BCM__cmds& 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 BCM__cmds_template::set_type(template_sel template_type, unsigned int list_length)
+{
+clean_up();
+switch (template_type) {
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = list_length;
+value_list.list_value = new BCM__cmds_template[list_length];
+break;
+default:
+TTCN_error("Internal error: Setting an invalid type for a template of type @SocketCANtest.BCM_cmds.");
+}
+set_selection(template_type);
+}
+
+BCM__cmds_template& BCM__cmds_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of type @SocketCANtest.BCM_cmds.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @SocketCANtest.BCM_cmds.");
+return value_list.list_value[list_index];
+}
+
+void BCM__cmds_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 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;
+default:
+log_generic();
+}
+log_restricted();
+log_ifpresent();
+}
+
+void BCM__cmds_template::log_match(const BCM__cmds& 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 BCM__cmds_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 @SocketCANtest.BCM_cmds.");
+}
+}
+
+void BCM__cmds_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 @SocketCANtest.BCM_cmds.");
+single_value.value_elements = (BCM__cmd_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 BCM__cmd_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 BCM__cmds_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 @SocketCANtest.BCM_cmds.");
+}
+}
+
+boolean BCM__cmds_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean BCM__cmds_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 BCM__cmds_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: {
+    BCM__cmds_template temp;
+    temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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;
+  default:
+    param.type_error("record of template", "@SocketCANtest.BCM_cmds");
+  }
+  is_ifpresent = param.get_ifpresent();
+  set_length_range(param);
+}
+
+void BCM__cmds_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 : "@SocketCANtest.BCM_cmds");
+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 : "@SocketCANtest.BCM_cmds");
+}
+
+boolean BCM__cmds_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);
+}
+}
+
+const SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame SocketCAN__CAN__or__CAN__FD__frames::UNBOUND_ELEM;
+SocketCAN__CAN__or__CAN__FD__frames::SocketCAN__CAN__or__CAN__FD__frames()
+{
+val_ptr = NULL;
+}
+
+SocketCAN__CAN__or__CAN__FD__frames::SocketCAN__CAN__or__CAN__FD__frames(null_type)
+{
+val_ptr = new recordof_setof_struct;
+val_ptr->ref_count = 1;
+val_ptr->n_elements = 0;
+val_ptr->value_elements = NULL;
+}
+
+SocketCAN__CAN__or__CAN__FD__frames::SocketCAN__CAN__or__CAN__FD__frames(const SocketCAN__CAN__or__CAN__FD__frames& other_value)
+{
+if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames.");
+val_ptr = other_value.val_ptr;
+val_ptr->ref_count++;
+}
+
+SocketCAN__CAN__or__CAN__FD__frames::~SocketCAN__CAN__or__CAN__FD__frames()
+{
+clean_up();
+if (val_ptr != NULL) val_ptr = NULL;
+}
+
+void SocketCAN__CAN__or__CAN__FD__frames::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.");
+}
+}
+
+SocketCAN__CAN__or__CAN__FD__frames& SocketCAN__CAN__or__CAN__FD__frames::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;
+}
+
+SocketCAN__CAN__or__CAN__FD__frames& SocketCAN__CAN__or__CAN__FD__frames::operator=(const SocketCAN__CAN__or__CAN__FD__frames& other_value)
+{
+if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames.");
+if (this != &other_value) {
+clean_up();
+val_ptr = other_value.val_ptr;
+val_ptr->ref_count++;
+}
+return *this;
+}
+
+boolean SocketCAN__CAN__or__CAN__FD__frames::operator==(null_type) const
+{
+if (val_ptr == NULL)
+TTCN_error("The left operand of comparison is an unbound value of type @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames.");
+return val_ptr->n_elements == 0 ;
+}
+
+boolean SocketCAN__CAN__or__CAN__FD__frames::operator==(const SocketCAN__CAN__or__CAN__FD__frames& other_value) const
+{
+if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames.");
+if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames.");
+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;
+}
+
+SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame& SocketCAN__CAN__or__CAN__FD__frames::operator[](int index_value)
+{
+if (index_value < 0) TTCN_error("Accessing an element of type @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames 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 = (SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame**)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 SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame(*(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 SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame;
+}
+return *val_ptr->value_elements[index_value];
+}
+
+SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame& SocketCAN__CAN__or__CAN__FD__frames::operator[](const INTEGER& index_value)
+{
+index_value.must_bound("Using an unbound integer value for indexing a value of type @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames.");
+return (*this)[(int)index_value];
+}
+
+const SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame& SocketCAN__CAN__or__CAN__FD__frames::operator[](int index_value) const
+{
+if (val_ptr == NULL)
+TTCN_error("Accessing an element in an unbound value of type @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames.");
+if (index_value < 0) TTCN_error("Accessing an element of type @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames using a negative index: %d.", index_value);
+if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames: 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 SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame& SocketCAN__CAN__or__CAN__FD__frames::operator[](const INTEGER& index_value) const
+{
+index_value.must_bound("Using an unbound integer value for indexing a value of type @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames.");
+return (*this)[(int)index_value];
+}
+
+SocketCAN__CAN__or__CAN__FD__frames SocketCAN__CAN__or__CAN__FD__frames::operator<<=(int rotate_count) const
+{
+return *this >>= (-rotate_count);
+}
+
+SocketCAN__CAN__or__CAN__FD__frames SocketCAN__CAN__or__CAN__FD__frames::operator<<=(const INTEGER& rotate_count) const
+{
+rotate_count.must_bound("Unbound integer operand of rotate left operator.");
+return *this >>= (int)(-rotate_count);
+}
+
+SocketCAN__CAN__or__CAN__FD__frames SocketCAN__CAN__or__CAN__FD__frames::operator>>=(const INTEGER& rotate_count) const
+{
+rotate_count.must_bound("Unbound integer operand of rotate right operator.");
+return *this >>= (int)rotate_count;
+}
+
+SocketCAN__CAN__or__CAN__FD__frames SocketCAN__CAN__or__CAN__FD__frames::operator>>=(int rotate_count) const
+{
+if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames.");
+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;
+SocketCAN__CAN__or__CAN__FD__frames 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 SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame(*val_ptr->value_elements[i]);
+}
+}
+return ret_val;
+}
+
+SocketCAN__CAN__or__CAN__FD__frames SocketCAN__CAN__or__CAN__FD__frames::operator+(const SocketCAN__CAN__or__CAN__FD__frames& other_value) const
+{
+if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames concatenation.");
+if (val_ptr->n_elements == 0) return other_value;
+if (other_value.val_ptr->n_elements == 0) return *this;
+SocketCAN__CAN__or__CAN__FD__frames 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 SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame(*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 SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame(*other_value.val_ptr->value_elements[i]);
+}
+}
+return ret_val;
+}
+
+SocketCAN__CAN__or__CAN__FD__frames SocketCAN__CAN__or__CAN__FD__frames::substr(int index, int returncount) const
+{
+if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames.");
+check_substr_arguments(val_ptr->n_elements, index, returncount, "@SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames","element");
+SocketCAN__CAN__or__CAN__FD__frames 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 SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame(*val_ptr->value_elements[i+index]);
+}
+}
+return ret_val;
+}
+
+SocketCAN__CAN__or__CAN__FD__frames SocketCAN__CAN__or__CAN__FD__frames::replace(int index, int len, const SocketCAN__CAN__or__CAN__FD__frames& repl) const
+{
+if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames.");
+if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames.");
+check_replace_arguments(val_ptr->n_elements, index, len, "@SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames","element");
+SocketCAN__CAN__or__CAN__FD__frames 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 SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame(*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 SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame(*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 SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame(*val_ptr->value_elements[index+i+len]);
+}
+}
+return ret_val;
+}
+
+SocketCAN__CAN__or__CAN__FD__frames SocketCAN__CAN__or__CAN__FD__frames::replace(int index, int len, const SocketCAN__CAN__or__CAN__FD__frames_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 SocketCAN__CAN__or__CAN__FD__frames::set_size(int new_size)
+{
+if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames.");
+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 = (SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame**)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 SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame(*(val_ptr->value_elements[elem_count]));
+}
+}
+clean_up();
+val_ptr = new_val_ptr;
+}
+if (new_size > val_ptr->n_elements) {
+val_ptr->value_elements = (SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame**)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 @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames: %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 = (SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size);
+val_ptr->n_elements = new_size;
+}
+}
+
+boolean SocketCAN__CAN__or__CAN__FD__frames::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 SocketCAN__CAN__or__CAN__FD__frames::size_of() const
+{
+if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames.");
+return val_ptr->n_elements;
+}
+
+int SocketCAN__CAN__or__CAN__FD__frames::lengthof() const
+{
+if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames.");
+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 SocketCAN__CAN__or__CAN__FD__frames::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 SocketCAN__CAN__or__CAN__FD__frames::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", "@SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames");
+    }
+    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", "@SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames");
+    }
+    break;
+  default:
+    TTCN_error("Internal error: Unknown operation type.");
+  }
+}
+
+void SocketCAN__CAN__or__CAN__FD__frames::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 SocketCAN__CAN__or__CAN__FD__frames::encode_text(Text_Buf& text_buf) const
+{
+if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames.");
+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 SocketCAN__CAN__or__CAN__FD__frames::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 @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames.");
+val_ptr->value_elements = (SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame**)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 SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame;
+val_ptr->value_elements[elem_count]->decode_text(text_buf);
+}
+}
+
+void SocketCAN__CAN__or__CAN__FD__frames_template::copy_value(const SocketCAN__CAN__or__CAN__FD__frames& other_value)
+{
+if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames with an unbound value.");
+single_value.n_elements = other_value.size_of();
+single_value.value_elements = (SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame_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 SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame_template(other_value[elem_count]);
+} else {
+single_value.value_elements[elem_count] = new SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame_template;
+}
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SocketCAN__CAN__or__CAN__FD__frames_template::copy_template(const SocketCAN__CAN__or__CAN__FD__frames_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 = (SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame_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 SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame_template(*other_value.single_value.value_elements[elem_count]);
+} else {
+single_value.value_elements[elem_count] = new SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame_template;
+}
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SocketCAN__CAN__or__CAN__FD__frames_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames.");
+break;
+}
+set_selection(other_value);
+}
+
+boolean SocketCAN__CAN__or__CAN__FD__frames_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 SocketCAN__CAN__or__CAN__FD__frames_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const SocketCAN__CAN__or__CAN__FD__frames*)value_ptr)[value_index], legacy);
+else return ((const SocketCAN__CAN__or__CAN__FD__frames_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit();
+}
+
+SocketCAN__CAN__or__CAN__FD__frames_template::SocketCAN__CAN__or__CAN__FD__frames_template()
+{
+}
+
+SocketCAN__CAN__or__CAN__FD__frames_template::SocketCAN__CAN__or__CAN__FD__frames_template(template_sel other_value)
+ : Record_Of_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SocketCAN__CAN__or__CAN__FD__frames_template::SocketCAN__CAN__or__CAN__FD__frames_template(null_type)
+ : Record_Of_Template(SPECIFIC_VALUE)
+{
+single_value.n_elements = 0;
+single_value.value_elements = NULL;
+}
+
+SocketCAN__CAN__or__CAN__FD__frames_template::SocketCAN__CAN__or__CAN__FD__frames_template(const SocketCAN__CAN__or__CAN__FD__frames& other_value)
+{
+copy_value(other_value);
+}
+
+SocketCAN__CAN__or__CAN__FD__frames_template::SocketCAN__CAN__or__CAN__FD__frames_template(const OPTIONAL<SocketCAN__CAN__or__CAN__FD__frames>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__CAN__or__CAN__FD__frames&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames from an unbound optional field.");
+}
+}
+
+SocketCAN__CAN__or__CAN__FD__frames_template::SocketCAN__CAN__or__CAN__FD__frames_template(const SocketCAN__CAN__or__CAN__FD__frames_template& other_value)
+ : Record_Of_Template()
+{
+copy_template(other_value);
+}
+
+SocketCAN__CAN__or__CAN__FD__frames_template::~SocketCAN__CAN__or__CAN__FD__frames_template()
+{
+clean_up();
+}
+
+void SocketCAN__CAN__or__CAN__FD__frames_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:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SocketCAN__CAN__or__CAN__FD__frames_template& SocketCAN__CAN__or__CAN__FD__frames_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SocketCAN__CAN__or__CAN__FD__frames_template& SocketCAN__CAN__or__CAN__FD__frames_template::operator=(null_type)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value.n_elements = 0;
+single_value.value_elements = NULL;
+return *this;
+}
+
+SocketCAN__CAN__or__CAN__FD__frames_template& SocketCAN__CAN__or__CAN__FD__frames_template::operator=(const SocketCAN__CAN__or__CAN__FD__frames& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SocketCAN__CAN__or__CAN__FD__frames_template& SocketCAN__CAN__or__CAN__FD__frames_template::operator=(const OPTIONAL<SocketCAN__CAN__or__CAN__FD__frames>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SocketCAN__CAN__or__CAN__FD__frames&)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 @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames.");
+}
+return *this;
+}
+
+SocketCAN__CAN__or__CAN__FD__frames_template& SocketCAN__CAN__or__CAN__FD__frames_template::operator=(const SocketCAN__CAN__or__CAN__FD__frames_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame_template& SocketCAN__CAN__or__CAN__FD__frames_template::operator[](int index_value)
+{
+if (index_value < 0) TTCN_error("Accessing an element of a template for type @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames 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 @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames.");
+    break;
+}
+return *single_value.value_elements[index_value];
+}
+
+SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame_template& SocketCAN__CAN__or__CAN__FD__frames_template::operator[](const INTEGER& index_value)
+{
+index_value.must_bound("Using an unbound integer value for indexing a template of type @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames.");
+return (*this)[(int)index_value];
+}
+
+const SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame_template& SocketCAN__CAN__or__CAN__FD__frames_template::operator[](int index_value) const
+{
+if (index_value < 0) TTCN_error("Accessing an element of a template for type @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames using a negative index: %d.", index_value);
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames.");
+if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames: 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 SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame_template& SocketCAN__CAN__or__CAN__FD__frames_template::operator[](const INTEGER& index_value) const
+{
+index_value.must_bound("Using an unbound integer value for indexing a template of type @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames.");
+return (*this)[(int)index_value];
+}
+
+void SocketCAN__CAN__or__CAN__FD__frames_template::set_size(int new_size)
+{
+if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames.");
+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 = (SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame_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 SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame_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 SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame_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 = (SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size);
+single_value.n_elements = new_size;
+}
+}
+
+int SocketCAN__CAN__or__CAN__FD__frames_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 SocketCAN__CAN__or__CAN__FD__frames_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 @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames 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 @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames 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 @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames 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 @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames 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 @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames 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 @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames containing complemented list.", op_name);
+default:
+  TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames.", op_name);
+}
+return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames");
+}
+
+boolean SocketCAN__CAN__or__CAN__FD__frames_template::match(const SocketCAN__CAN__or__CAN__FD__frames& 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;
+default:
+TTCN_error("Matching with an uninitialized/unsupported template of type @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames.");
+}
+return FALSE;
+}
+
+boolean SocketCAN__CAN__or__CAN__FD__frames_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;
+}
+
+SocketCAN__CAN__or__CAN__FD__frames SocketCAN__CAN__or__CAN__FD__frames_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 @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames.");
+SocketCAN__CAN__or__CAN__FD__frames 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;
+}
+
+SocketCAN__CAN__or__CAN__FD__frames SocketCAN__CAN__or__CAN__FD__frames_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);
+}
+
+SocketCAN__CAN__or__CAN__FD__frames SocketCAN__CAN__or__CAN__FD__frames_template::replace(int index, int len, const SocketCAN__CAN__or__CAN__FD__frames_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());
+}
+
+SocketCAN__CAN__or__CAN__FD__frames SocketCAN__CAN__or__CAN__FD__frames_template::replace(int index, int len, const SocketCAN__CAN__or__CAN__FD__frames& 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 SocketCAN__CAN__or__CAN__FD__frames_template::set_type(template_sel template_type, unsigned int list_length)
+{
+clean_up();
+switch (template_type) {
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = list_length;
+value_list.list_value = new SocketCAN__CAN__or__CAN__FD__frames_template[list_length];
+break;
+default:
+TTCN_error("Internal error: Setting an invalid type for a template of type @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames.");
+}
+set_selection(template_type);
+}
+
+SocketCAN__CAN__or__CAN__FD__frames_template& SocketCAN__CAN__or__CAN__FD__frames_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of type @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames.");
+return value_list.list_value[list_index];
+}
+
+void SocketCAN__CAN__or__CAN__FD__frames_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 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;
+default:
+log_generic();
+}
+log_restricted();
+log_ifpresent();
+}
+
+void SocketCAN__CAN__or__CAN__FD__frames_template::log_match(const SocketCAN__CAN__or__CAN__FD__frames& 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 SocketCAN__CAN__or__CAN__FD__frames_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 @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames.");
+}
+}
+
+void SocketCAN__CAN__or__CAN__FD__frames_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 @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames.");
+single_value.value_elements = (SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame_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 SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame_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 SocketCAN__CAN__or__CAN__FD__frames_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 @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames.");
+}
+}
+
+boolean SocketCAN__CAN__or__CAN__FD__frames_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SocketCAN__CAN__or__CAN__FD__frames_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 SocketCAN__CAN__or__CAN__FD__frames_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: {
+    SocketCAN__CAN__or__CAN__FD__frames_template temp;
+    temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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;
+  default:
+    param.type_error("record of template", "@SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames");
+  }
+  is_ifpresent = param.get_ifpresent();
+  set_length_range(param);
+}
+
+void SocketCAN__CAN__or__CAN__FD__frames_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 : "@SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames");
+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 : "@SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames");
+}
+
+boolean SocketCAN__CAN__or__CAN__FD__frames_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);
+}
+}
+PhaseStartReq::PhaseStartReq()
+{
+}
+
+PhaseStartReq::PhaseStartReq(const e__Phase& par_phase,
+    const INTEGER& par_phase__int)
+  :   field_phase(par_phase),
+  field_phase__int(par_phase__int)
+{
+}
+
+PhaseStartReq::PhaseStartReq(const PhaseStartReq& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @SocketCANtest.PhaseStartReq.");
+if (other_value.phase().is_bound()) field_phase = other_value.phase();
+else field_phase.clean_up();
+if (other_value.phase__int().is_bound()) field_phase__int = other_value.phase__int();
+else field_phase__int.clean_up();
+}
+
+void PhaseStartReq::clean_up()
+{
+field_phase.clean_up();
+field_phase__int.clean_up();
+}
+
+const TTCN_Typedescriptor_t* PhaseStartReq::get_descriptor() const { return &PhaseStartReq_descr_; }
+PhaseStartReq& PhaseStartReq::operator=(const PhaseStartReq& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @SocketCANtest.PhaseStartReq.");
+  if (other_value.phase().is_bound()) field_phase = other_value.phase();
+  else field_phase.clean_up();
+  if (other_value.phase__int().is_bound()) field_phase__int = other_value.phase__int();
+  else field_phase__int.clean_up();
+}
+return *this;
+}
+
+boolean PhaseStartReq::operator==(const PhaseStartReq& other_value) const
+{
+return field_phase==other_value.field_phase
+  && field_phase__int==other_value.field_phase__int;
+}
+
+boolean PhaseStartReq::is_bound() const
+{
+return (field_phase.is_bound())
+  || (field_phase__int.is_bound());
+}
+boolean PhaseStartReq::is_value() const
+{
+return field_phase.is_value()
+  && field_phase__int.is_value();
+}
+void PhaseStartReq::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ phase := ");
+field_phase.log();
+TTCN_Logger::log_event_str(", phase_int := ");
+field_phase__int.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void PhaseStartReq::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 @SocketCANtest.PhaseStartReq 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) phase().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) phase__int().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(), "phase")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          phase().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(), "phase_int")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          phase__int().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 @SocketCANtest.PhaseStartReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@SocketCANtest.PhaseStartReq");
+  }
+}
+
+void PhaseStartReq::set_implicit_omit()
+{
+if (phase().is_bound()) phase().set_implicit_omit();
+if (phase__int().is_bound()) phase__int().set_implicit_omit();
+}
+
+void PhaseStartReq::encode_text(Text_Buf& text_buf) const
+{
+field_phase.encode_text(text_buf);
+field_phase__int.encode_text(text_buf);
+}
+
+void PhaseStartReq::decode_text(Text_Buf& text_buf)
+{
+field_phase.decode_text(text_buf);
+field_phase__int.decode_text(text_buf);
+}
+
+struct PhaseStartReq_template::single_value_struct {
+e__Phase_template field_phase;
+INTEGER_template field_phase__int;
+};
+
+void PhaseStartReq_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_phase = ANY_VALUE;
+single_value->field_phase__int = ANY_VALUE;
+}
+}
+}
+
+void PhaseStartReq_template::copy_value(const PhaseStartReq& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.phase().is_bound()) {
+  single_value->field_phase = other_value.phase();
+} else {
+  single_value->field_phase.clean_up();
+}
+if (other_value.phase__int().is_bound()) {
+  single_value->field_phase__int = other_value.phase__int();
+} else {
+  single_value->field_phase__int.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void PhaseStartReq_template::copy_template(const PhaseStartReq_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.phase().get_selection()) {
+single_value->field_phase = other_value.phase();
+} else {
+single_value->field_phase.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.phase__int().get_selection()) {
+single_value->field_phase__int = other_value.phase__int();
+} else {
+single_value->field_phase__int.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new PhaseStartReq_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @SocketCANtest.PhaseStartReq.");
+break;
+}
+set_selection(other_value);
+}
+
+PhaseStartReq_template::PhaseStartReq_template()
+{
+}
+
+PhaseStartReq_template::PhaseStartReq_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+PhaseStartReq_template::PhaseStartReq_template(const PhaseStartReq& other_value)
+{
+copy_value(other_value);
+}
+
+PhaseStartReq_template::PhaseStartReq_template(const OPTIONAL<PhaseStartReq>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const PhaseStartReq&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @SocketCANtest.PhaseStartReq from an unbound optional field.");
+}
+}
+
+PhaseStartReq_template::PhaseStartReq_template(const PhaseStartReq_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+PhaseStartReq_template::~PhaseStartReq_template()
+{
+clean_up();
+}
+
+PhaseStartReq_template& PhaseStartReq_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+PhaseStartReq_template& PhaseStartReq_template::operator=(const PhaseStartReq& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+PhaseStartReq_template& PhaseStartReq_template::operator=(const OPTIONAL<PhaseStartReq>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const PhaseStartReq&)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 @SocketCANtest.PhaseStartReq.");
+}
+return *this;
+}
+
+PhaseStartReq_template& PhaseStartReq_template::operator=(const PhaseStartReq_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean PhaseStartReq_template::match(const PhaseStartReq& 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.phase().is_bound()) return FALSE;
+if(!single_value->field_phase.match(other_value.phase(), legacy))return FALSE;
+if(!other_value.phase__int().is_bound()) return FALSE;
+if(!single_value->field_phase__int.match(other_value.phase__int(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @SocketCANtest.PhaseStartReq.");
+}
+return FALSE;
+}
+
+boolean PhaseStartReq_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_phase.is_bound()
+
+ ||single_value->field_phase__int.is_bound()
+;
+}
+
+boolean PhaseStartReq_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_phase.is_value()
+ &&single_value->field_phase__int.is_value();
+}
+
+void PhaseStartReq_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+PhaseStartReq PhaseStartReq_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 @SocketCANtest.PhaseStartReq.");
+PhaseStartReq ret_val;
+if (single_value->field_phase.is_bound()) {
+ret_val.phase() = single_value->field_phase.valueof();
+}
+if (single_value->field_phase__int.is_bound()) {
+ret_val.phase__int() = single_value->field_phase__int.valueof();
+}
+return ret_val;
+}
+
+void PhaseStartReq_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @SocketCANtest.PhaseStartReq.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new PhaseStartReq_template[list_length];
+}
+
+PhaseStartReq_template& PhaseStartReq_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @SocketCANtest.PhaseStartReq.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @SocketCANtest.PhaseStartReq.");
+return value_list.list_value[list_index];
+}
+
+e__Phase_template& PhaseStartReq_template::phase()
+{
+set_specific();
+return single_value->field_phase;
+}
+
+const e__Phase_template& PhaseStartReq_template::phase() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field phase of a non-specific template of type @SocketCANtest.PhaseStartReq.");
+return single_value->field_phase;
+}
+
+INTEGER_template& PhaseStartReq_template::phase__int()
+{
+set_specific();
+return single_value->field_phase__int;
+}
+
+const INTEGER_template& PhaseStartReq_template::phase__int() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field phase_int of a non-specific template of type @SocketCANtest.PhaseStartReq.");
+return single_value->field_phase__int;
+}
+
+int PhaseStartReq_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @SocketCANtest.PhaseStartReq 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 @SocketCANtest.PhaseStartReq 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 @SocketCANtest.PhaseStartReq containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCANtest.PhaseStartReq containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCANtest.PhaseStartReq containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCANtest.PhaseStartReq containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @SocketCANtest.PhaseStartReq.");
+  }
+  return 0;
+}
+
+void PhaseStartReq_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ phase := ");
+single_value->field_phase.log();
+TTCN_Logger::log_event_str(", phase_int := ");
+single_value->field_phase__int.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void PhaseStartReq_template::log_match(const PhaseStartReq& 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_phase.match(match_value.phase(), legacy)){
+TTCN_Logger::log_logmatch_info(".phase");
+single_value->field_phase.log_match(match_value.phase(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_phase__int.match(match_value.phase__int(), legacy)){
+TTCN_Logger::log_logmatch_info(".phase_int");
+single_value->field_phase__int.log_match(match_value.phase__int(), 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("{ phase := ");
+single_value->field_phase.log_match(match_value.phase(), legacy);
+TTCN_Logger::log_event_str(", phase_int := ");
+single_value->field_phase__int.log_match(match_value.phase__int(), 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 PhaseStartReq_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_phase.encode_text(text_buf);
+single_value->field_phase__int.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 @SocketCANtest.PhaseStartReq.");
+}
+}
+
+void PhaseStartReq_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_phase.decode_text(text_buf);
+single_value->field_phase__int.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 PhaseStartReq_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 @SocketCANtest.PhaseStartReq.");
+}
+}
+
+void PhaseStartReq_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: {
+    PhaseStartReq_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @SocketCANtest.PhaseStartReq 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) phase().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) phase__int().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(), "phase")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          phase().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(), "phase_int")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          phase__int().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 @SocketCANtest.PhaseStartReq: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@SocketCANtest.PhaseStartReq");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void PhaseStartReq_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_phase.check_restriction(t_res, t_name ? t_name : "@SocketCANtest.PhaseStartReq");
+single_value->field_phase__int.check_restriction(t_res, t_name ? t_name : "@SocketCANtest.PhaseStartReq");
+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 : "@SocketCANtest.PhaseStartReq");
+}
+
+boolean PhaseStartReq_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean PhaseStartReq_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+PhaseEndInd::PhaseEndInd()
+{
+}
+
+PhaseEndInd::PhaseEndInd(const e__Phase& par_phase,
+    const INTEGER& par_phase__int)
+  :   field_phase(par_phase),
+  field_phase__int(par_phase__int)
+{
+}
+
+PhaseEndInd::PhaseEndInd(const PhaseEndInd& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @SocketCANtest.PhaseEndInd.");
+if (other_value.phase().is_bound()) field_phase = other_value.phase();
+else field_phase.clean_up();
+if (other_value.phase__int().is_bound()) field_phase__int = other_value.phase__int();
+else field_phase__int.clean_up();
+}
+
+void PhaseEndInd::clean_up()
+{
+field_phase.clean_up();
+field_phase__int.clean_up();
+}
+
+const TTCN_Typedescriptor_t* PhaseEndInd::get_descriptor() const { return &PhaseEndInd_descr_; }
+PhaseEndInd& PhaseEndInd::operator=(const PhaseEndInd& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @SocketCANtest.PhaseEndInd.");
+  if (other_value.phase().is_bound()) field_phase = other_value.phase();
+  else field_phase.clean_up();
+  if (other_value.phase__int().is_bound()) field_phase__int = other_value.phase__int();
+  else field_phase__int.clean_up();
+}
+return *this;
+}
+
+boolean PhaseEndInd::operator==(const PhaseEndInd& other_value) const
+{
+return field_phase==other_value.field_phase
+  && field_phase__int==other_value.field_phase__int;
+}
+
+boolean PhaseEndInd::is_bound() const
+{
+return (field_phase.is_bound())
+  || (field_phase__int.is_bound());
+}
+boolean PhaseEndInd::is_value() const
+{
+return field_phase.is_value()
+  && field_phase__int.is_value();
+}
+void PhaseEndInd::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ phase := ");
+field_phase.log();
+TTCN_Logger::log_event_str(", phase_int := ");
+field_phase__int.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void PhaseEndInd::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 @SocketCANtest.PhaseEndInd 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) phase().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) phase__int().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(), "phase")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          phase().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(), "phase_int")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          phase__int().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 @SocketCANtest.PhaseEndInd: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@SocketCANtest.PhaseEndInd");
+  }
+}
+
+void PhaseEndInd::set_implicit_omit()
+{
+if (phase().is_bound()) phase().set_implicit_omit();
+if (phase__int().is_bound()) phase__int().set_implicit_omit();
+}
+
+void PhaseEndInd::encode_text(Text_Buf& text_buf) const
+{
+field_phase.encode_text(text_buf);
+field_phase__int.encode_text(text_buf);
+}
+
+void PhaseEndInd::decode_text(Text_Buf& text_buf)
+{
+field_phase.decode_text(text_buf);
+field_phase__int.decode_text(text_buf);
+}
+
+struct PhaseEndInd_template::single_value_struct {
+e__Phase_template field_phase;
+INTEGER_template field_phase__int;
+};
+
+void PhaseEndInd_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_phase = ANY_VALUE;
+single_value->field_phase__int = ANY_VALUE;
+}
+}
+}
+
+void PhaseEndInd_template::copy_value(const PhaseEndInd& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.phase().is_bound()) {
+  single_value->field_phase = other_value.phase();
+} else {
+  single_value->field_phase.clean_up();
+}
+if (other_value.phase__int().is_bound()) {
+  single_value->field_phase__int = other_value.phase__int();
+} else {
+  single_value->field_phase__int.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void PhaseEndInd_template::copy_template(const PhaseEndInd_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.phase().get_selection()) {
+single_value->field_phase = other_value.phase();
+} else {
+single_value->field_phase.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.phase__int().get_selection()) {
+single_value->field_phase__int = other_value.phase__int();
+} else {
+single_value->field_phase__int.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new PhaseEndInd_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @SocketCANtest.PhaseEndInd.");
+break;
+}
+set_selection(other_value);
+}
+
+PhaseEndInd_template::PhaseEndInd_template()
+{
+}
+
+PhaseEndInd_template::PhaseEndInd_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+PhaseEndInd_template::PhaseEndInd_template(const PhaseEndInd& other_value)
+{
+copy_value(other_value);
+}
+
+PhaseEndInd_template::PhaseEndInd_template(const OPTIONAL<PhaseEndInd>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const PhaseEndInd&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @SocketCANtest.PhaseEndInd from an unbound optional field.");
+}
+}
+
+PhaseEndInd_template::PhaseEndInd_template(const PhaseEndInd_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+PhaseEndInd_template::~PhaseEndInd_template()
+{
+clean_up();
+}
+
+PhaseEndInd_template& PhaseEndInd_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+PhaseEndInd_template& PhaseEndInd_template::operator=(const PhaseEndInd& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+PhaseEndInd_template& PhaseEndInd_template::operator=(const OPTIONAL<PhaseEndInd>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const PhaseEndInd&)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 @SocketCANtest.PhaseEndInd.");
+}
+return *this;
+}
+
+PhaseEndInd_template& PhaseEndInd_template::operator=(const PhaseEndInd_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean PhaseEndInd_template::match(const PhaseEndInd& 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.phase().is_bound()) return FALSE;
+if(!single_value->field_phase.match(other_value.phase(), legacy))return FALSE;
+if(!other_value.phase__int().is_bound()) return FALSE;
+if(!single_value->field_phase__int.match(other_value.phase__int(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @SocketCANtest.PhaseEndInd.");
+}
+return FALSE;
+}
+
+boolean PhaseEndInd_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_phase.is_bound()
+
+ ||single_value->field_phase__int.is_bound()
+;
+}
+
+boolean PhaseEndInd_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_phase.is_value()
+ &&single_value->field_phase__int.is_value();
+}
+
+void PhaseEndInd_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+PhaseEndInd PhaseEndInd_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 @SocketCANtest.PhaseEndInd.");
+PhaseEndInd ret_val;
+if (single_value->field_phase.is_bound()) {
+ret_val.phase() = single_value->field_phase.valueof();
+}
+if (single_value->field_phase__int.is_bound()) {
+ret_val.phase__int() = single_value->field_phase__int.valueof();
+}
+return ret_val;
+}
+
+void PhaseEndInd_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @SocketCANtest.PhaseEndInd.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new PhaseEndInd_template[list_length];
+}
+
+PhaseEndInd_template& PhaseEndInd_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @SocketCANtest.PhaseEndInd.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @SocketCANtest.PhaseEndInd.");
+return value_list.list_value[list_index];
+}
+
+e__Phase_template& PhaseEndInd_template::phase()
+{
+set_specific();
+return single_value->field_phase;
+}
+
+const e__Phase_template& PhaseEndInd_template::phase() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field phase of a non-specific template of type @SocketCANtest.PhaseEndInd.");
+return single_value->field_phase;
+}
+
+INTEGER_template& PhaseEndInd_template::phase__int()
+{
+set_specific();
+return single_value->field_phase__int;
+}
+
+const INTEGER_template& PhaseEndInd_template::phase__int() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field phase_int of a non-specific template of type @SocketCANtest.PhaseEndInd.");
+return single_value->field_phase__int;
+}
+
+int PhaseEndInd_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @SocketCANtest.PhaseEndInd 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 @SocketCANtest.PhaseEndInd 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 @SocketCANtest.PhaseEndInd containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCANtest.PhaseEndInd containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCANtest.PhaseEndInd containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @SocketCANtest.PhaseEndInd containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @SocketCANtest.PhaseEndInd.");
+  }
+  return 0;
+}
+
+void PhaseEndInd_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ phase := ");
+single_value->field_phase.log();
+TTCN_Logger::log_event_str(", phase_int := ");
+single_value->field_phase__int.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void PhaseEndInd_template::log_match(const PhaseEndInd& 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_phase.match(match_value.phase(), legacy)){
+TTCN_Logger::log_logmatch_info(".phase");
+single_value->field_phase.log_match(match_value.phase(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_phase__int.match(match_value.phase__int(), legacy)){
+TTCN_Logger::log_logmatch_info(".phase_int");
+single_value->field_phase__int.log_match(match_value.phase__int(), 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("{ phase := ");
+single_value->field_phase.log_match(match_value.phase(), legacy);
+TTCN_Logger::log_event_str(", phase_int := ");
+single_value->field_phase__int.log_match(match_value.phase__int(), 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 PhaseEndInd_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_phase.encode_text(text_buf);
+single_value->field_phase__int.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 @SocketCANtest.PhaseEndInd.");
+}
+}
+
+void PhaseEndInd_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_phase.decode_text(text_buf);
+single_value->field_phase__int.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 PhaseEndInd_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 @SocketCANtest.PhaseEndInd.");
+}
+}
+
+void PhaseEndInd_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: {
+    PhaseEndInd_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @SocketCANtest.PhaseEndInd 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) phase().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) phase__int().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(), "phase")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          phase().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(), "phase_int")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          phase__int().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 @SocketCANtest.PhaseEndInd: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@SocketCANtest.PhaseEndInd");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void PhaseEndInd_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_phase.check_restriction(t_res, t_name ? t_name : "@SocketCANtest.PhaseEndInd");
+single_value->field_phase__int.check_restriction(t_res, t_name ? t_name : "@SocketCANtest.PhaseEndInd");
+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 : "@SocketCANtest.PhaseEndInd");
+}
+
+boolean PhaseEndInd_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean PhaseEndInd_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 SyncMasterPort::remove_msg_queue_head()
+{
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+switch (my_head->item_selection) {
+case MESSAGE_0:
+delete (my_head)->message_0;
+break;
+default:
+TTCN_error("Internal error: Invalid message selector in the queue of port %s.", port_name);
+}
+msg_queue_item_base *next_item = msg_queue_head->next_item;
+delete (msg_queue_item*)msg_queue_head;
+msg_queue_head = next_item;
+if (next_item == NULL) msg_queue_tail = NULL;
+TTCN_Logger::log_port_queue(TitanLoggerApiSimple::Port__Queue_operation::extract__msg, port_name, 0, ++msg_head_count, CHARSTRING(0,NULL), CHARSTRING(0,NULL));}
+
+void SyncMasterPort::clear_queue()
+{
+while (msg_queue_head != NULL) remove_msg_queue_head();
+}
+
+SyncMasterPort::SyncMasterPort(const char *par_port_name)
+ : PORT(par_port_name)
+{
+msg_queue_head = NULL;
+msg_queue_tail = NULL;
+}
+
+SyncMasterPort::~SyncMasterPort()
+{
+clear_queue();
+}
+
+void SyncMasterPort::send(const PhaseStartReq& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect)
+{
+if (!is_started) TTCN_error("Sending a message on port %s, which is not started.", port_name);
+if (!destination_component.is_bound()) TTCN_error("Unbound component reference in the to clause of send operation.");
+const TTCN_Logger::Severity log_sev = destination_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMSEND:TTCN_Logger::PORTEVENT_MCSEND;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_send(port_name, destination_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), TTCN_Logger::log_event_str(" @SocketCANtest.PhaseStartReq : "),
+send_par.log(), TTCN_Logger::end_event_log2str()));
+}
+if (destination_component == SYSTEM_COMPREF) TTCN_error("Message cannot be sent to system on internal port %s.", port_name);
+else {
+Text_Buf text_buf;
+prepare_message(text_buf, "@SocketCANtest.PhaseStartReq");
+send_par.encode_text(text_buf);
+send_data(text_buf, destination_component);
+}
+}
+
+void SyncMasterPort::send(const PhaseStartReq& send_par, FLOAT* timestamp_redirect)
+{
+send(send_par, COMPONENT(get_default_destination()), timestamp_redirect);
+}
+
+void SyncMasterPort::send(const PhaseStartReq_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect)
+{
+const PhaseStartReq& send_par_value = PhaseStartReq(send_par.valueof());
+send(send_par_value, destination_component, timestamp_redirect);
+}
+
+void SyncMasterPort::send(const PhaseStartReq_template& send_par, FLOAT* timestamp_redirect)
+{
+const PhaseStartReq& send_par_value = PhaseStartReq(send_par.valueof());
+send(send_par_value, COMPONENT(get_default_destination()), timestamp_redirect);
+}
+
+alt_status SyncMasterPort::receive(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s failed: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+return ALT_NO;
+} else {
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS, "Matching on port %s succeeded.", port_name);
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+switch (my_head->item_selection) {
+case MESSAGE_0:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCANtest.PhaseEndInd: "),
+my_head->message_0->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+default:
+TTCN_error("Internal error: unknown message");
+}
+}
+remove_msg_queue_head();
+return ALT_YES;
+}
+}
+
+alt_status SyncMasterPort::check_receive(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s failed: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+return ALT_NO;
+} else {
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS, "Matching on port %s succeeded.", port_name);
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+switch (my_head->item_selection) {
+case MESSAGE_0:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::check__receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCANtest.PhaseEndInd: "),
+my_head->message_0->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+default:
+TTCN_error("Internal error: unknown message");
+}
+}
+return ALT_YES;
+}
+}
+
+alt_status SyncMasterPort::trigger(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s will drop a message: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else {
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS, "Matching on port %s succeeded.", port_name);
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+switch (my_head->item_selection) {
+case MESSAGE_0:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::trigger__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCANtest.PhaseEndInd: "),
+my_head->message_0->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+default:
+TTCN_error("Internal error: unknown message");
+}
+}
+remove_msg_queue_head();
+return ALT_YES;
+}
+}
+
+alt_status SyncMasterPort::receive(const PhaseEndInd_template& value_template, PhaseEndInd *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Receive operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s failed: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+return ALT_NO;
+} else if (my_head->item_selection != MESSAGE_0) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s failed: Type of the first message in the queue is not @SocketCANtest.PhaseEndInd.", port_name);
+return ALT_NO;
+} else if (!value_template.match(*my_head->message_0)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_0),
+ TTCN_Logger::end_event_log2str()));
+}
+return ALT_NO;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_0;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_0),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCANtest.PhaseEndInd : "),
+my_head->message_0->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+remove_msg_queue_head();
+return ALT_YES;
+}
+}
+
+alt_status SyncMasterPort::check_receive(const PhaseEndInd_template& value_template, PhaseEndInd *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Check-receive operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s failed: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+return ALT_NO;
+} else if (my_head->item_selection != MESSAGE_0) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s failed: Type of the first message in the queue is not @SocketCANtest.PhaseEndInd.", port_name);
+return ALT_NO;
+} else if (!value_template.match(*my_head->message_0)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_0),
+ TTCN_Logger::end_event_log2str()));
+}
+return ALT_NO;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_0;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_0),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::check__receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCANtest.PhaseEndInd : "),
+my_head->message_0->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+return ALT_YES;
+}
+}
+
+alt_status SyncMasterPort::trigger(const PhaseEndInd_template& value_template, PhaseEndInd *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Trigger operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s will drop a message: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else if (my_head->item_selection != MESSAGE_0) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s will drop a message: Type of the first message in the queue is not @SocketCANtest.PhaseEndInd.", port_name);
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else if (!value_template.match(*my_head->message_0)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_0),
+ TTCN_Logger::end_event_log2str()));
+}
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_0;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_0),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::trigger__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCANtest.PhaseEndInd : "),
+my_head->message_0->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+remove_msg_queue_head();
+return ALT_YES;
+}
+}
+
+void SyncMasterPort::incoming_message(const PhaseEndInd& incoming_par, component sender_component)
+{
+if (!is_started) TTCN_error("Port %s is not started but a message has arrived on it.", port_name);
+msg_tail_count++;
+if (TTCN_Logger::log_this_event(TTCN_Logger::PORTEVENT_MQUEUE)) {
+TTCN_Logger::log_port_queue(TitanLoggerApiSimple::Port__Queue_operation::enqueue__msg, port_name, sender_component, msg_tail_count,
+CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(TTCN_Logger::PORTEVENT_MQUEUE, TRUE), TTCN_Logger::log_event_str(" @SocketCANtest.PhaseEndInd : "), incoming_par.log(), TTCN_Logger::end_event_log2str()));
+}
+msg_queue_item *new_item = new msg_queue_item;
+new_item->item_selection = MESSAGE_0;
+new_item->message_0 = new PhaseEndInd(incoming_par);
+new_item->sender_component = sender_component;
+append_to_msg_queue(new_item);
+}
+
+boolean SyncMasterPort::process_message(const char *message_type, Text_Buf& incoming_buf, component sender_component, OCTETSTRING&)
+{
+if (!strcmp(message_type, "@SocketCANtest.PhaseEndInd")) {
+PhaseEndInd incoming_par;
+incoming_par.decode_text(incoming_buf);
+incoming_message(incoming_par, sender_component);
+return TRUE;
+} else return FALSE;
+}
+
+void SyncSlavePort::remove_msg_queue_head()
+{
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+switch (my_head->item_selection) {
+case MESSAGE_0:
+delete (my_head)->message_0;
+break;
+default:
+TTCN_error("Internal error: Invalid message selector in the queue of port %s.", port_name);
+}
+msg_queue_item_base *next_item = msg_queue_head->next_item;
+delete (msg_queue_item*)msg_queue_head;
+msg_queue_head = next_item;
+if (next_item == NULL) msg_queue_tail = NULL;
+TTCN_Logger::log_port_queue(TitanLoggerApiSimple::Port__Queue_operation::extract__msg, port_name, 0, ++msg_head_count, CHARSTRING(0,NULL), CHARSTRING(0,NULL));}
+
+void SyncSlavePort::clear_queue()
+{
+while (msg_queue_head != NULL) remove_msg_queue_head();
+}
+
+SyncSlavePort::SyncSlavePort(const char *par_port_name)
+ : PORT(par_port_name)
+{
+msg_queue_head = NULL;
+msg_queue_tail = NULL;
+}
+
+SyncSlavePort::~SyncSlavePort()
+{
+clear_queue();
+}
+
+void SyncSlavePort::send(const PhaseEndInd& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect)
+{
+if (!is_started) TTCN_error("Sending a message on port %s, which is not started.", port_name);
+if (!destination_component.is_bound()) TTCN_error("Unbound component reference in the to clause of send operation.");
+const TTCN_Logger::Severity log_sev = destination_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMSEND:TTCN_Logger::PORTEVENT_MCSEND;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_send(port_name, destination_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), TTCN_Logger::log_event_str(" @SocketCANtest.PhaseEndInd : "),
+send_par.log(), TTCN_Logger::end_event_log2str()));
+}
+if (destination_component == SYSTEM_COMPREF) TTCN_error("Message cannot be sent to system on internal port %s.", port_name);
+else {
+Text_Buf text_buf;
+prepare_message(text_buf, "@SocketCANtest.PhaseEndInd");
+send_par.encode_text(text_buf);
+send_data(text_buf, destination_component);
+}
+}
+
+void SyncSlavePort::send(const PhaseEndInd& send_par, FLOAT* timestamp_redirect)
+{
+send(send_par, COMPONENT(get_default_destination()), timestamp_redirect);
+}
+
+void SyncSlavePort::send(const PhaseEndInd_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect)
+{
+const PhaseEndInd& send_par_value = PhaseEndInd(send_par.valueof());
+send(send_par_value, destination_component, timestamp_redirect);
+}
+
+void SyncSlavePort::send(const PhaseEndInd_template& send_par, FLOAT* timestamp_redirect)
+{
+const PhaseEndInd& send_par_value = PhaseEndInd(send_par.valueof());
+send(send_par_value, COMPONENT(get_default_destination()), timestamp_redirect);
+}
+
+alt_status SyncSlavePort::receive(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s failed: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+return ALT_NO;
+} else {
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS, "Matching on port %s succeeded.", port_name);
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+switch (my_head->item_selection) {
+case MESSAGE_0:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCANtest.PhaseStartReq: "),
+my_head->message_0->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+default:
+TTCN_error("Internal error: unknown message");
+}
+}
+remove_msg_queue_head();
+return ALT_YES;
+}
+}
+
+alt_status SyncSlavePort::check_receive(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s failed: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+return ALT_NO;
+} else {
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS, "Matching on port %s succeeded.", port_name);
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+switch (my_head->item_selection) {
+case MESSAGE_0:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::check__receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCANtest.PhaseStartReq: "),
+my_head->message_0->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+default:
+TTCN_error("Internal error: unknown message");
+}
+}
+return ALT_YES;
+}
+}
+
+alt_status SyncSlavePort::trigger(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s will drop a message: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else {
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS, "Matching on port %s succeeded.", port_name);
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+switch (my_head->item_selection) {
+case MESSAGE_0:
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::trigger__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCANtest.PhaseStartReq: "),
+my_head->message_0->log(), TTCN_Logger::end_event_log2str()), msg_head_count+1);
+break;
+default:
+TTCN_error("Internal error: unknown message");
+}
+}
+remove_msg_queue_head();
+return ALT_YES;
+}
+}
+
+alt_status SyncSlavePort::receive(const PhaseStartReq_template& value_template, PhaseStartReq *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Receive operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s failed: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+return ALT_NO;
+} else if (my_head->item_selection != MESSAGE_0) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s failed: Type of the first message in the queue is not @SocketCANtest.PhaseStartReq.", port_name);
+return ALT_NO;
+} else if (!value_template.match(*my_head->message_0)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_0),
+ TTCN_Logger::end_event_log2str()));
+}
+return ALT_NO;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_0;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_0),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCANtest.PhaseStartReq : "),
+my_head->message_0->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+remove_msg_queue_head();
+return ALT_YES;
+}
+}
+
+alt_status SyncSlavePort::check_receive(const PhaseStartReq_template& value_template, PhaseStartReq *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Check-receive operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s failed: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+return ALT_NO;
+} else if (my_head->item_selection != MESSAGE_0) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s failed: Type of the first message in the queue is not @SocketCANtest.PhaseStartReq.", port_name);
+return ALT_NO;
+} else if (!value_template.match(*my_head->message_0)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_0),
+ TTCN_Logger::end_event_log2str()));
+}
+return ALT_NO;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_0;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_0),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::check__receive__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCANtest.PhaseStartReq : "),
+my_head->message_0->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+return ALT_YES;
+}
+}
+
+alt_status SyncSlavePort::trigger(const PhaseStartReq_template& value_template, PhaseStartReq *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*)
+{
+if (value_template.get_selection() == ANY_OR_OMIT) TTCN_error("Trigger operation using '*' as matching template");
+msg_queue_item *my_head = (msg_queue_item*)msg_queue_head;
+if (msg_queue_head == NULL) {
+if (is_started) return ALT_MAYBE;
+else {
+TTCN_Logger::log(TTCN_Logger::MATCHING_PROBLEM, "Matching on port %s failed: Port is not started and the queue is empty.", port_name);
+return ALT_NO;
+}
+} else if (!sender_template.match(my_head->sender_component)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::begin_event(log_sev);
+TTCN_Logger::log_event("Matching on port %s will drop a message: Sender of the first message in the queue does not match the from clause: ", port_name);
+sender_template.log_match(my_head->sender_component);
+TTCN_Logger::end_event();
+}
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else if (my_head->item_selection != MESSAGE_0) {
+TTCN_Logger::log(my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMUNSUCC:TTCN_Logger::MATCHING_MCUNSUCC, "Matching on port %s will drop a message: Type of the first message in the queue is not @SocketCANtest.PhaseStartReq.", port_name);
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else if (!value_template.match(*my_head->message_0)) {
+const TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF ? TTCN_Logger::MATCHING_MMUNSUCC : TTCN_Logger::MATCHING_MCUNSUCC;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_failure(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+TitanLoggerApiSimple::MatchingFailureType_reason::message__does__not__match__template,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_0),
+ TTCN_Logger::end_event_log2str()));
+}
+remove_msg_queue_head();
+return ALT_REPEAT;
+} else {
+if (value_redirect != NULL) {
+*value_redirect = *my_head->message_0;
+}
+if (sender_ptr != NULL) *sender_ptr = my_head->sender_component;
+TTCN_Logger::Severity log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::MATCHING_MMSUCCESS:TTCN_Logger::MATCHING_MCSUCCESS;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_matching_success(TitanLoggerApiSimple::PortType::message__,
+port_name, my_head->sender_component,
+(TTCN_Logger::begin_event(log_sev, TRUE), value_template.log_match(*my_head->message_0),
+ TTCN_Logger::end_event_log2str()));
+}
+log_sev = my_head->sender_component==SYSTEM_COMPREF?TTCN_Logger::PORTEVENT_MMRECV:TTCN_Logger::PORTEVENT_MCRECV;
+if (TTCN_Logger::log_this_event(log_sev)) {
+TTCN_Logger::log_msgport_recv(port_name, TitanLoggerApiSimple::Msg__port__recv_operation::trigger__op,
+my_head->sender_component, CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(log_sev,TRUE), TTCN_Logger::log_event_str(": @SocketCANtest.PhaseStartReq : "),
+my_head->message_0->log(), TTCN_Logger::end_event_log2str()),
+msg_head_count+1);
+}
+remove_msg_queue_head();
+return ALT_YES;
+}
+}
+
+void SyncSlavePort::incoming_message(const PhaseStartReq& incoming_par, component sender_component)
+{
+if (!is_started) TTCN_error("Port %s is not started but a message has arrived on it.", port_name);
+msg_tail_count++;
+if (TTCN_Logger::log_this_event(TTCN_Logger::PORTEVENT_MQUEUE)) {
+TTCN_Logger::log_port_queue(TitanLoggerApiSimple::Port__Queue_operation::enqueue__msg, port_name, sender_component, msg_tail_count,
+CHARSTRING(0, NULL),
+(TTCN_Logger::begin_event(TTCN_Logger::PORTEVENT_MQUEUE, TRUE), TTCN_Logger::log_event_str(" @SocketCANtest.PhaseStartReq : "), incoming_par.log(), TTCN_Logger::end_event_log2str()));
+}
+msg_queue_item *new_item = new msg_queue_item;
+new_item->item_selection = MESSAGE_0;
+new_item->message_0 = new PhaseStartReq(incoming_par);
+new_item->sender_component = sender_component;
+append_to_msg_queue(new_item);
+}
+
+boolean SyncSlavePort::process_message(const char *message_type, Text_Buf& incoming_buf, component sender_component, OCTETSTRING&)
+{
+if (!strcmp(message_type, "@SocketCANtest.PhaseStartReq")) {
+PhaseStartReq incoming_par;
+incoming_par.decode_text(incoming_buf);
+incoming_message(incoming_par, sender_component);
+return TRUE;
+} else return FALSE;
+}
+
+
+const COMPONENT PTCSet::UNBOUND_ELEM;
+PTCSet::PTCSet()
+{
+val_ptr = NULL;
+}
+
+PTCSet::PTCSet(null_type)
+{
+val_ptr = new recordof_setof_struct;
+val_ptr->ref_count = 1;
+val_ptr->n_elements = 0;
+val_ptr->value_elements = NULL;
+}
+
+PTCSet::PTCSet(const PTCSet& other_value)
+{
+if (!other_value.is_bound()) TTCN_error("Copying an unbound value of type @SocketCANtest.PTCSet.");
+val_ptr = other_value.val_ptr;
+val_ptr->ref_count++;
+}
+
+PTCSet::~PTCSet()
+{
+clean_up();
+if (val_ptr != NULL) val_ptr = NULL;
+}
+
+void PTCSet::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.");
+}
+}
+
+PTCSet& PTCSet::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;
+}
+
+PTCSet& PTCSet::operator=(const PTCSet& other_value)
+{
+if (other_value.val_ptr == NULL) TTCN_error("Assigning an unbound value of type @SocketCANtest.PTCSet.");
+if (this != &other_value) {
+clean_up();
+val_ptr = other_value.val_ptr;
+val_ptr->ref_count++;
+}
+return *this;
+}
+
+boolean PTCSet::operator==(null_type) const
+{
+if (val_ptr == NULL)
+TTCN_error("The left operand of comparison is an unbound value of type @SocketCANtest.PTCSet.");
+return val_ptr->n_elements == 0 ;
+}
+
+boolean PTCSet::operator==(const PTCSet& other_value) const
+{
+if (val_ptr == NULL) TTCN_error("The left operand of comparison is an unbound value of type @SocketCANtest.PTCSet.");
+if (other_value.val_ptr == NULL) TTCN_error("The right operand of comparison is an unbound value of type @SocketCANtest.PTCSet.");
+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;
+}
+
+COMPONENT& PTCSet::operator[](int index_value)
+{
+if (index_value < 0) TTCN_error("Accessing an element of type @SocketCANtest.PTCSet 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 = (COMPONENT**)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 COMPONENT(*(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 COMPONENT;
+}
+return *val_ptr->value_elements[index_value];
+}
+
+COMPONENT& PTCSet::operator[](const INTEGER& index_value)
+{
+index_value.must_bound("Using an unbound integer value for indexing a value of type @SocketCANtest.PTCSet.");
+return (*this)[(int)index_value];
+}
+
+const COMPONENT& PTCSet::operator[](int index_value) const
+{
+if (val_ptr == NULL)
+TTCN_error("Accessing an element in an unbound value of type @SocketCANtest.PTCSet.");
+if (index_value < 0) TTCN_error("Accessing an element of type @SocketCANtest.PTCSet using a negative index: %d.", index_value);
+if (index_value >= val_ptr->n_elements) TTCN_error("Index overflow in a value of type @SocketCANtest.PTCSet: 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 COMPONENT& PTCSet::operator[](const INTEGER& index_value) const
+{
+index_value.must_bound("Using an unbound integer value for indexing a value of type @SocketCANtest.PTCSet.");
+return (*this)[(int)index_value];
+}
+
+PTCSet PTCSet::operator<<=(int rotate_count) const
+{
+return *this >>= (-rotate_count);
+}
+
+PTCSet PTCSet::operator<<=(const INTEGER& rotate_count) const
+{
+rotate_count.must_bound("Unbound integer operand of rotate left operator.");
+return *this >>= (int)(-rotate_count);
+}
+
+PTCSet PTCSet::operator>>=(const INTEGER& rotate_count) const
+{
+rotate_count.must_bound("Unbound integer operand of rotate right operator.");
+return *this >>= (int)rotate_count;
+}
+
+PTCSet PTCSet::operator>>=(int rotate_count) const
+{
+if (val_ptr == NULL) TTCN_error("Performing rotation operation on an unbound value of type @SocketCANtest.PTCSet.");
+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;
+PTCSet 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 COMPONENT(*val_ptr->value_elements[i]);
+}
+}
+return ret_val;
+}
+
+PTCSet PTCSet::operator+(const PTCSet& other_value) const
+{
+if (val_ptr == NULL || other_value.val_ptr == NULL) TTCN_error("Unbound operand of @SocketCANtest.PTCSet concatenation.");
+if (val_ptr->n_elements == 0) return other_value;
+if (other_value.val_ptr->n_elements == 0) return *this;
+PTCSet 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 COMPONENT(*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 COMPONENT(*other_value.val_ptr->value_elements[i]);
+}
+}
+return ret_val;
+}
+
+PTCSet PTCSet::substr(int index, int returncount) const
+{
+if (val_ptr == NULL) TTCN_error("The first argument of substr() is an unbound value of type @SocketCANtest.PTCSet.");
+check_substr_arguments(val_ptr->n_elements, index, returncount, "@SocketCANtest.PTCSet","element");
+PTCSet 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 COMPONENT(*val_ptr->value_elements[i+index]);
+}
+}
+return ret_val;
+}
+
+PTCSet PTCSet::replace(int index, int len, const PTCSet& repl) const
+{
+if (val_ptr == NULL) TTCN_error("The first argument of replace() is an unbound value of type @SocketCANtest.PTCSet.");
+if (repl.val_ptr == NULL) TTCN_error("The fourth argument of replace() is an unbound value of type @SocketCANtest.PTCSet.");
+check_replace_arguments(val_ptr->n_elements, index, len, "@SocketCANtest.PTCSet","element");
+PTCSet 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 COMPONENT(*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 COMPONENT(*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 COMPONENT(*val_ptr->value_elements[index+i+len]);
+}
+}
+return ret_val;
+}
+
+PTCSet PTCSet::replace(int index, int len, const PTCSet_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 PTCSet::set_size(int new_size)
+{
+if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a value of type @SocketCANtest.PTCSet.");
+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 = (COMPONENT**)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 COMPONENT(*(val_ptr->value_elements[elem_count]));
+}
+}
+clean_up();
+val_ptr = new_val_ptr;
+}
+if (new_size > val_ptr->n_elements) {
+val_ptr->value_elements = (COMPONENT**)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 @SocketCANtest.PTCSet: %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 = (COMPONENT**)reallocate_pointers((void**)val_ptr->value_elements, val_ptr->n_elements, new_size);
+val_ptr->n_elements = new_size;
+}
+}
+
+boolean PTCSet::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 PTCSet::size_of() const
+{
+if (val_ptr == NULL) TTCN_error("Performing sizeof operation on an unbound value of type @SocketCANtest.PTCSet.");
+return val_ptr->n_elements;
+}
+
+int PTCSet::lengthof() const
+{
+if (val_ptr == NULL) TTCN_error("Performing lengthof operation on an unbound value of type @SocketCANtest.PTCSet.");
+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 PTCSet::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 PTCSet::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", "@SocketCANtest.PTCSet");
+    }
+    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", "@SocketCANtest.PTCSet");
+    }
+    break;
+  default:
+    TTCN_error("Internal error: Unknown operation type.");
+  }
+}
+
+void PTCSet::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 PTCSet::encode_text(Text_Buf& text_buf) const
+{
+if (val_ptr == NULL) TTCN_error("Text encoder: Encoding an unbound value of type @SocketCANtest.PTCSet.");
+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 PTCSet::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 @SocketCANtest.PTCSet.");
+val_ptr->value_elements = (COMPONENT**)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 COMPONENT;
+val_ptr->value_elements[elem_count]->decode_text(text_buf);
+}
+}
+
+void PTCSet_template::copy_value(const PTCSet& other_value)
+{
+if (!other_value.is_bound()) TTCN_error("Initialization of a template of type @SocketCANtest.PTCSet with an unbound value.");
+single_value.n_elements = other_value.size_of();
+single_value.value_elements = (COMPONENT_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 COMPONENT_template(other_value[elem_count]);
+} else {
+single_value.value_elements[elem_count] = new COMPONENT_template;
+}
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void PTCSet_template::copy_template(const PTCSet_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 = (COMPONENT_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 COMPONENT_template(*other_value.single_value.value_elements[elem_count]);
+} else {
+single_value.value_elements[elem_count] = new COMPONENT_template;
+}
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new PTCSet_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @SocketCANtest.PTCSet.");
+break;
+}
+set_selection(other_value);
+}
+
+boolean PTCSet_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 PTCSet_template*)template_ptr)->single_value.value_elements[template_index]->match((*(const PTCSet*)value_ptr)[value_index], legacy);
+else return ((const PTCSet_template*)template_ptr)->single_value.value_elements[template_index]->is_any_or_omit();
+}
+
+PTCSet_template::PTCSet_template()
+{
+}
+
+PTCSet_template::PTCSet_template(template_sel other_value)
+ : Record_Of_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+PTCSet_template::PTCSet_template(null_type)
+ : Record_Of_Template(SPECIFIC_VALUE)
+{
+single_value.n_elements = 0;
+single_value.value_elements = NULL;
+}
+
+PTCSet_template::PTCSet_template(const PTCSet& other_value)
+{
+copy_value(other_value);
+}
+
+PTCSet_template::PTCSet_template(const OPTIONAL<PTCSet>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const PTCSet&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @SocketCANtest.PTCSet from an unbound optional field.");
+}
+}
+
+PTCSet_template::PTCSet_template(const PTCSet_template& other_value)
+ : Record_Of_Template()
+{
+copy_template(other_value);
+}
+
+PTCSet_template::~PTCSet_template()
+{
+clean_up();
+}
+
+void PTCSet_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:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+PTCSet_template& PTCSet_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+PTCSet_template& PTCSet_template::operator=(null_type)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value.n_elements = 0;
+single_value.value_elements = NULL;
+return *this;
+}
+
+PTCSet_template& PTCSet_template::operator=(const PTCSet& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+PTCSet_template& PTCSet_template::operator=(const OPTIONAL<PTCSet>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const PTCSet&)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 @SocketCANtest.PTCSet.");
+}
+return *this;
+}
+
+PTCSet_template& PTCSet_template::operator=(const PTCSet_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+COMPONENT_template& PTCSet_template::operator[](int index_value)
+{
+if (index_value < 0) TTCN_error("Accessing an element of a template for type @SocketCANtest.PTCSet 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 @SocketCANtest.PTCSet.");
+    break;
+}
+return *single_value.value_elements[index_value];
+}
+
+COMPONENT_template& PTCSet_template::operator[](const INTEGER& index_value)
+{
+index_value.must_bound("Using an unbound integer value for indexing a template of type @SocketCANtest.PTCSet.");
+return (*this)[(int)index_value];
+}
+
+const COMPONENT_template& PTCSet_template::operator[](int index_value) const
+{
+if (index_value < 0) TTCN_error("Accessing an element of a template for type @SocketCANtest.PTCSet using a negative index: %d.", index_value);
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing an element of a non-specific template for type @SocketCANtest.PTCSet.");
+if (index_value >= single_value.n_elements) TTCN_error("Index overflow in a template of type @SocketCANtest.PTCSet: 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 COMPONENT_template& PTCSet_template::operator[](const INTEGER& index_value) const
+{
+index_value.must_bound("Using an unbound integer value for indexing a template of type @SocketCANtest.PTCSet.");
+return (*this)[(int)index_value];
+}
+
+void PTCSet_template::set_size(int new_size)
+{
+if (new_size < 0) TTCN_error("Internal error: Setting a negative size for a template of type @SocketCANtest.PTCSet.");
+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 = (COMPONENT_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 COMPONENT_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 COMPONENT_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 = (COMPONENT_template**)reallocate_pointers((void**)single_value.value_elements, single_value.n_elements, new_size);
+single_value.n_elements = new_size;
+}
+}
+
+int PTCSet_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 PTCSet_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 @SocketCANtest.PTCSet 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 @SocketCANtest.PTCSet 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 @SocketCANtest.PTCSet 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 @SocketCANtest.PTCSet 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 @SocketCANtest.PTCSet 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 @SocketCANtest.PTCSet containing complemented list.", op_name);
+default:
+  TTCN_error("Performing %sof() operation on an uninitialized/unsupported template of type @SocketCANtest.PTCSet.", op_name);
+}
+return check_section_is_single(min_size, has_any_or_none, op_name, "a", "template of type @SocketCANtest.PTCSet");
+}
+
+boolean PTCSet_template::match(const PTCSet& 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;
+default:
+TTCN_error("Matching with an uninitialized/unsupported template of type @SocketCANtest.PTCSet.");
+}
+return FALSE;
+}
+
+boolean PTCSet_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;
+}
+
+PTCSet PTCSet_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 @SocketCANtest.PTCSet.");
+PTCSet 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;
+}
+
+PTCSet PTCSet_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);
+}
+
+PTCSet PTCSet_template::replace(int index, int len, const PTCSet_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());
+}
+
+PTCSet PTCSet_template::replace(int index, int len, const PTCSet& 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 PTCSet_template::set_type(template_sel template_type, unsigned int list_length)
+{
+clean_up();
+switch (template_type) {
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = list_length;
+value_list.list_value = new PTCSet_template[list_length];
+break;
+default:
+TTCN_error("Internal error: Setting an invalid type for a template of type @SocketCANtest.PTCSet.");
+}
+set_selection(template_type);
+}
+
+PTCSet_template& PTCSet_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of type @SocketCANtest.PTCSet.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of type @SocketCANtest.PTCSet.");
+return value_list.list_value[list_index];
+}
+
+void PTCSet_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 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;
+default:
+log_generic();
+}
+log_restricted();
+log_ifpresent();
+}
+
+void PTCSet_template::log_match(const PTCSet& 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 PTCSet_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 @SocketCANtest.PTCSet.");
+}
+}
+
+void PTCSet_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 @SocketCANtest.PTCSet.");
+single_value.value_elements = (COMPONENT_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 COMPONENT_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 PTCSet_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 @SocketCANtest.PTCSet.");
+}
+}
+
+boolean PTCSet_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean PTCSet_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 PTCSet_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: {
+    PTCSet_template temp;
+    temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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;
+  default:
+    param.type_error("record of template", "@SocketCANtest.PTCSet");
+  }
+  is_ifpresent = param.get_ifpresent();
+  set_length_range(param);
+}
+
+void PTCSet_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 : "@SocketCANtest.PTCSet");
+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 : "@SocketCANtest.PTCSet");
+}
+
+boolean PTCSet_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);
+}
+}
+alt__awaitPhaseStartReq_Default::alt__awaitPhaseStartReq_Default(const e__Phase& p__phase)
+ : Default_Base("alt_awaitPhaseStartReq"), par_p__phase(p__phase)
+{
+}
+
+alt_status alt__awaitPhaseStartReq_Default::call_altstep()
+{
+return alt__awaitPhaseStartReq_instance(par_p__phase);
+}
+
+
+/* Bodies of functions, altsteps and testcases */
+
+boolean operator==(null_type, const BCM__cmds& other_value)
+{
+if (other_value.val_ptr == NULL)
+TTCN_error("The right operand of comparison is an unbound value of type @SocketCANtest.BCM_cmds.");
+return other_value.val_ptr->n_elements == 0;
+}
+
+boolean operator==(null_type, const SocketCAN__CAN__or__CAN__FD__frames& other_value)
+{
+if (other_value.val_ptr == NULL)
+TTCN_error("The right operand of comparison is an unbound value of type @SocketCANtest.SocketCAN_CAN_or_CAN_FD_frames.");
+return other_value.val_ptr->n_elements == 0;
+}
+
+boolean operator==(null_type, const PTCSet& other_value)
+{
+if (other_value.val_ptr == NULL)
+TTCN_error("The right operand of comparison is an unbound value of type @SocketCANtest.PTCSet.");
+return other_value.val_ptr->n_elements == 0;
+}
+
+alt_status alt__awaitPhaseStartReq_instance(const e__Phase& p__phase)
+{
+TTCN_Location current_location("SocketCANtest.ttcn", 99, TTCN_Location::LOCATION_ALTSTEP, "alt_awaitPhaseStartReq");
+current_location.update_lineno(100);
+#line 100 "SocketCANtest.ttcn"
+PhaseStartReq v__PhaseStartReq;
+alt_status ret_val = ALT_NO;
+current_location.update_lineno(101);
+#line 101 "SocketCANtest.ttcn"
+{
+alt_status tmp_1;
+{
+PhaseStartReq_template tmp_0;
+tmp_0.phase() = p__phase;
+tmp_0.phase__int() = ANY_VALUE;
+tmp_1 = PTC_component_pt__sync.receive(tmp_0, NULL, any_compref, NULL, NULL, NULL);
+}
+switch (tmp_1) {
+case ALT_YES:
+{
+current_location.update_lineno(102);
+#line 102 "SocketCANtest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("PTC name: ");
+{
+COMPONENT tmp_2(self);
+tmp_2.log();
+}
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(103);
+#line 103 "SocketCANtest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("Waits for start of phase: ");
+p__phase.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+}
+return ALT_YES;
+case ALT_MAYBE:
+ret_val = ALT_MAYBE;
+default:
+break;
+}
+}
+current_location.update_lineno(106);
+#line 106 "SocketCANtest.ttcn"
+{
+alt_status tmp_5;
+{
+PhaseStartReq_template tmp_3;
+tmp_3.phase() = ANY_VALUE;
+{
+INTEGER_template& tmp_4 = tmp_3.phase__int();
+tmp_4.set_type(VALUE_RANGE);
+tmp_4.set_min(0);
+tmp_4.set_max(e__Phase::enum2int(PTC_component_v__phase));
+}
+tmp_5 = PTC_component_pt__sync.receive(tmp_3, &(v__PhaseStartReq), any_compref, NULL, NULL, NULL);
+}
+switch (tmp_5) {
+case ALT_YES:
+{
+current_location.update_lineno(109);
+#line 109 "SocketCANtest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("PTC name: ");
+{
+COMPONENT tmp_6(self);
+tmp_6.log();
+}
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(110);
+#line 110 "SocketCANtest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("Waits for start of phase: ");
+p__phase.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(111);
+#line 111 "SocketCANtest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("Received completion of phase: ");
+p__phase.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(112);
+#line 112 "SocketCANtest.ttcn"
+f__sendPhaseEndInd();
+current_location.update_lineno(113);
+#line 113 "SocketCANtest.ttcn"
+return ALT_REPEAT;
+}
+case ALT_MAYBE:
+ret_val = ALT_MAYBE;
+default:
+break;
+}
+}
+current_location.update_lineno(115);
+#line 115 "SocketCANtest.ttcn"
+{
+alt_status tmp_8;
+{
+PhaseStartReq_template tmp_7;
+tmp_7.phase() = ANY_VALUE;
+tmp_7.phase__int() = ANY_VALUE;
+tmp_8 = PTC_component_pt__sync.receive(tmp_7, &(v__PhaseStartReq), any_compref, NULL, NULL, NULL);
+}
+switch (tmp_8) {
+case ALT_YES:
+{
+current_location.update_lineno(116);
+#line 116 "SocketCANtest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("Received unexpected message:");
+v__PhaseStartReq.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(116);
+#line 116 "SocketCANtest.ttcn"
+TTCN_Runtime::setverdict(INCONC);
+}
+return ALT_YES;
+case ALT_MAYBE:
+ret_val = ALT_MAYBE;
+default:
+break;
+}
+}
+return ret_val;
+}
+
+void alt__awaitPhaseStartReq(const e__Phase& p__phase)
+{
+altstep_begin:
+boolean block_flag = FALSE;
+alt_status altstep_flag = ALT_UNCHECKED, default_flag = ALT_UNCHECKED;
+for ( ; ; ) {
+TTCN_Snapshot::take_new(block_flag);
+if (altstep_flag != ALT_NO) {
+altstep_flag = alt__awaitPhaseStartReq_instance(p__phase);
+if (altstep_flag == ALT_YES || altstep_flag == ALT_BREAK) return;
+else if (altstep_flag == ALT_REPEAT) goto altstep_begin;
+}
+if (default_flag != ALT_NO) {
+default_flag = TTCN_Default::try_altsteps();
+if (default_flag == ALT_YES || default_flag == ALT_BREAK) return;
+else if (default_flag == ALT_REPEAT) goto altstep_begin;
+}
+if (altstep_flag == ALT_NO && default_flag == ALT_NO) TTCN_error("None of the branches can be chosen in altstep alt_awaitPhaseStartReq.");
+else block_flag = TRUE;
+}
+}
+
+Default_Base *activate_alt__awaitPhaseStartReq(const e__Phase& p__phase)
+{
+return new alt__awaitPhaseStartReq_Default(p__phase);
+}
+
+void f__startPhase(const e__Phase& p__phase)
+{
+TTCN_Location current_location("SocketCANtest.ttcn", 119, TTCN_Location::LOCATION_FUNCTION, "f_startPhase");
+current_location.update_lineno(120);
+#line 120 "SocketCANtest.ttcn"
+INTEGER v__i;
+current_location.update_lineno(121);
+#line 121 "SocketCANtest.ttcn"
+INTEGER v__amount(MTC_component_v__PTCSet.size_of());
+current_location.update_lineno(122);
+#line 122 "SocketCANtest.ttcn"
+PhaseStartReq v__phaseStartReq;
+v__phaseStartReq.phase() = p__phase;
+v__phaseStartReq.phase__int() = e__Phase::enum2int(p__phase);
+current_location.update_lineno(124);
+#line 124 "SocketCANtest.ttcn"
+v__i = 0;
+current_location.update_lineno(124);
+#line 124 "SocketCANtest.ttcn"
+for ( ; ; ) {
+current_location.update_lineno(124);
+#line 124 "SocketCANtest.ttcn"
+if (!(v__i < v__amount)) break;
+current_location.update_lineno(125);
+#line 125 "SocketCANtest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("MTC instance: ");
+{
+COMPONENT tmp_10(self);
+tmp_10.log();
+}
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(126);
+#line 126 "SocketCANtest.ttcn"
+MTC_component_pt__sync.send(v__phaseStartReq, const_cast< const PTCSet&>(MTC_component_v__PTCSet)[v__i], NULL);
+current_location.update_lineno(124);
+#line 124 "SocketCANtest.ttcn"
+{
+INTEGER tmp_11;
+++v__i;
+}
+}
+}
+
+void start_f__startPhase(const COMPONENT& component_reference, const e__Phase& p__phase)
+{
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_startPhase(");
+p__phase.log();
+TTCN_Logger::log_event_str(") on component ");
+component_reference.log();
+TTCN_Logger::log_char('.');
+TTCN_Logger::end_event();
+Text_Buf text_buf;
+TTCN_Runtime::prepare_start_component(component_reference, "SocketCANtest", "f_startPhase", text_buf);
+p__phase.encode_text(text_buf);
+TTCN_Runtime::send_start_component(text_buf);
+}
+
+e__Phase f__incPTCPhase(const e__Phase& p__currentPhase)
+{
+TTCN_Location current_location("SocketCANtest.ttcn", 130, TTCN_Location::LOCATION_FUNCTION, "f_incPTCPhase");
+current_location.update_lineno(131);
+#line 131 "SocketCANtest.ttcn"
+e__Phase v__nextPhase;
+current_location.update_lineno(132);
+#line 132 "SocketCANtest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("PTC: ");
+{
+COMPONENT tmp_12(self);
+tmp_12.log();
+}
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(133);
+#line 133 "SocketCANtest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("PTC instance: ");
+{
+COMPONENT tmp_13(self);
+tmp_13.log();
+}
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(134);
+#line 134 "SocketCANtest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("Current PTC phase: ");
+p__currentPhase.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(135);
+#line 135 "SocketCANtest.ttcn"
+v__nextPhase.int2enum((e__Phase::enum2int(p__currentPhase) + 1));
+current_location.update_lineno(136);
+#line 136 "SocketCANtest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("Next PTC phase:");
+v__nextPhase.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(137);
+#line 137 "SocketCANtest.ttcn"
+return v__nextPhase;
+}
+
+void start_f__incPTCPhase(const COMPONENT& component_reference, const e__Phase& p__currentPhase)
+{
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_incPTCPhase(");
+p__currentPhase.log();
+TTCN_Logger::log_event_str(") on component ");
+component_reference.log();
+TTCN_Logger::log_char('.');
+TTCN_Logger::end_event();
+Text_Buf text_buf;
+TTCN_Runtime::prepare_start_component(component_reference, "SocketCANtest", "f_incPTCPhase", text_buf);
+p__currentPhase.encode_text(text_buf);
+TTCN_Runtime::send_start_component(text_buf);
+}
+
+void f__sendPhaseEndInd()
+{
+TTCN_Location current_location("SocketCANtest.ttcn", 140, TTCN_Location::LOCATION_FUNCTION, "f_sendPhaseEndInd");
+current_location.update_lineno(142);
+#line 142 "SocketCANtest.ttcn"
+PhaseEndInd v__PhaseEndInd;
+v__PhaseEndInd.phase() = PTC_component_v__phase;
+v__PhaseEndInd.phase__int() = e__Phase::enum2int(PTC_component_v__phase);
+current_location.update_lineno(143);
+#line 143 "SocketCANtest.ttcn"
+PTC_component_pt__sync.send(v__PhaseEndInd, NULL);
+current_location.update_lineno(144);
+#line 144 "SocketCANtest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("PTC: PhaseEndInd to MTC with content: ");
+v__PhaseEndInd.log();
+{
+COMPONENT tmp_14(self);
+tmp_14.log();
+}
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(145);
+#line 145 "SocketCANtest.ttcn"
+PTC_component_v__phase = f__incPTCPhase(e__Phase(PTC_component_v__phase));
+}
+
+void start_f__sendPhaseEndInd(const COMPONENT& component_reference)
+{
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_sendPhaseEndInd(");
+TTCN_Logger::log_event_str(") on component ");
+component_reference.log();
+TTCN_Logger::log_char('.');
+TTCN_Logger::end_event();
+Text_Buf text_buf;
+TTCN_Runtime::prepare_start_component(component_reference, "SocketCANtest", "f_sendPhaseEndInd", text_buf);
+TTCN_Runtime::send_start_component(text_buf);
+}
+
+void f__addSyncSlaveSet(const COMPONENT& p__slave, PTCSet& p__set)
+{
+TTCN_Location current_location("SocketCANtest.ttcn", 148, TTCN_Location::LOCATION_FUNCTION, "f_addSyncSlaveSet");
+current_location.update_lineno(150);
+#line 150 "SocketCANtest.ttcn"
+p__set[p__set.size_of()] = p__slave;
+current_location.update_lineno(151);
+#line 151 "SocketCANtest.ttcn"
+return;
+}
+
+e__Phase f__incMTCPhase(const e__Phase& p__currentPhase)
+{
+TTCN_Location current_location("SocketCANtest.ttcn", 154, TTCN_Location::LOCATION_FUNCTION, "f_incMTCPhase");
+current_location.update_lineno(155);
+#line 155 "SocketCANtest.ttcn"
+e__Phase v__nextPhase;
+current_location.update_lineno(156);
+#line 156 "SocketCANtest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("MTC: ");
+{
+COMPONENT tmp_17(self);
+tmp_17.log();
+}
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(157);
+#line 157 "SocketCANtest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("Current phase: ");
+p__currentPhase.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(158);
+#line 158 "SocketCANtest.ttcn"
+v__nextPhase.int2enum((e__Phase::enum2int(p__currentPhase) + 1));
+current_location.update_lineno(159);
+#line 159 "SocketCANtest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("Next phase:");
+v__nextPhase.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(160);
+#line 160 "SocketCANtest.ttcn"
+return v__nextPhase;
+}
+
+void start_f__incMTCPhase(const COMPONENT& component_reference, const e__Phase& p__currentPhase)
+{
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_incMTCPhase(");
+p__currentPhase.log();
+TTCN_Logger::log_event_str(") on component ");
+component_reference.log();
+TTCN_Logger::log_char('.');
+TTCN_Logger::end_event();
+Text_Buf text_buf;
+TTCN_Runtime::prepare_start_component(component_reference, "SocketCANtest", "f_incMTCPhase", text_buf);
+p__currentPhase.encode_text(text_buf);
+TTCN_Runtime::send_start_component(text_buf);
+}
+
+void f__awaitEndPhase(const e__Phase& p__phase)
+{
+TTCN_Location current_location("SocketCANtest.ttcn", 163, TTCN_Location::LOCATION_FUNCTION, "f_awaitEndPhase");
+current_location.update_lineno(164);
+#line 164 "SocketCANtest.ttcn"
+INTEGER v__amount(MTC_component_v__PTCSet.size_of());
+current_location.update_lineno(165);
+#line 165 "SocketCANtest.ttcn"
+INTEGER v__i;
+current_location.update_lineno(166);
+#line 166 "SocketCANtest.ttcn"
+MTC_component_t__guard.start(1.0e1);
+current_location.update_lineno(167);
+#line 167 "SocketCANtest.ttcn"
+PhaseEndInd v__PhaseEndInd;
+current_location.update_lineno(169);
+#line 169 "SocketCANtest.ttcn"
+v__i = 0;
+current_location.update_lineno(169);
+#line 169 "SocketCANtest.ttcn"
+for ( ; ; ) {
+current_location.update_lineno(169);
+#line 169 "SocketCANtest.ttcn"
+if (!(v__i < v__amount)) break;
+current_location.update_lineno(170);
+#line 170 "SocketCANtest.ttcn"
+{
+tmp_19:
+alt_status tmp_19_alt_flag_0 = ALT_MAYBE;
+alt_status tmp_19_alt_flag_1 = ALT_MAYBE;
+alt_status tmp_19_alt_flag_2 = ALT_MAYBE;
+alt_status tmp_19_alt_flag_3 = ALT_MAYBE;
+alt_status tmp_19_alt_flag_4 = ALT_MAYBE;
+alt_status tmp_19_default_flag = ALT_MAYBE;
+TTCN_Snapshot::take_new(FALSE);
+for ( ; ; ) {
+if (tmp_19_alt_flag_0 == ALT_MAYBE) {
+current_location.update_lineno(171);
+#line 171 "SocketCANtest.ttcn"
+{
+PhaseEndInd_template tmp_20;
+tmp_20.phase() = p__phase;
+tmp_20.phase__int() = ANY_VALUE;
+tmp_19_alt_flag_0 = MTC_component_pt__sync.receive(tmp_20, NULL, any_compref, NULL, NULL, NULL);
+}
+if (tmp_19_alt_flag_0 == ALT_YES) break;
+}
+if (tmp_19_alt_flag_1 == ALT_MAYBE) {
+current_location.update_lineno(173);
+#line 173 "SocketCANtest.ttcn"
+{
+PhaseEndInd_template tmp_21;
+tmp_21.phase() = ANY_VALUE;
+{
+INTEGER_template& tmp_22 = tmp_21.phase__int();
+tmp_22.set_type(VALUE_RANGE);
+tmp_22.set_min(e__Phase::enum2int(p__phase));
+tmp_22.set_max(10);
+}
+tmp_19_alt_flag_1 = MTC_component_pt__sync.receive(tmp_21, NULL, any_compref, NULL, NULL, NULL);
+}
+if (tmp_19_alt_flag_1 == ALT_YES) break;
+}
+if (tmp_19_alt_flag_2 == ALT_MAYBE) {
+current_location.update_lineno(174);
+#line 174 "SocketCANtest.ttcn"
+tmp_19_alt_flag_2 = MTC_component_t__guard.timeout(NULL);
+if (tmp_19_alt_flag_2 == ALT_YES) {
+current_location.update_lineno(175);
+#line 175 "SocketCANtest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("Timeout in MTC phase:");
+p__phase.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(176);
+#line 176 "SocketCANtest.ttcn"
+TTCN_Runtime::setverdict(INCONC);
+break;
+}
+}
+if (tmp_19_alt_flag_3 == ALT_MAYBE) {
+current_location.update_lineno(178);
+#line 178 "SocketCANtest.ttcn"
+tmp_19_alt_flag_3 = MTC_component_pt__sync.receive(PhaseEndInd_template(ANY_VALUE), &(v__PhaseEndInd), any_compref, NULL, NULL, NULL);
+if (tmp_19_alt_flag_3 == ALT_YES) {
+current_location.update_lineno(179);
+#line 179 "SocketCANtest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("Unexpected phase recieved: ");
+v__PhaseEndInd.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(180);
+#line 180 "SocketCANtest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("Expected phase range: ");
+p__phase.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(181);
+#line 181 "SocketCANtest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str(" to ");
+c__testcase__complete.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(182);
+#line 182 "SocketCANtest.ttcn"
+TTCN_Runtime::setverdict(INCONC);
+break;
+}
+}
+if (tmp_19_alt_flag_4 == ALT_MAYBE) {
+current_location.update_lineno(184);
+#line 184 "SocketCANtest.ttcn"
+tmp_19_alt_flag_4 = PORT::any_receive(any_compref, NULL, NULL);
+if (tmp_19_alt_flag_4 == ALT_YES) {
+current_location.update_lineno(185);
+#line 185 "SocketCANtest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("Expected phase:");
+p__phase.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(186);
+#line 186 "SocketCANtest.ttcn"
+TTCN_Runtime::setverdict(INCONC);
+break;
+}
+}
+if (tmp_19_default_flag == ALT_MAYBE) {
+tmp_19_default_flag = TTCN_Default::try_altsteps();
+if (tmp_19_default_flag == ALT_YES || tmp_19_default_flag == ALT_BREAK) break;
+else if (tmp_19_default_flag == ALT_REPEAT) goto tmp_19;
+}
+current_location.update_lineno(170);
+#line 170 "SocketCANtest.ttcn"
+if (tmp_19_alt_flag_0 == ALT_NO && tmp_19_alt_flag_1 == ALT_NO && tmp_19_alt_flag_2 == ALT_NO && tmp_19_alt_flag_3 == ALT_NO && tmp_19_alt_flag_4 == ALT_NO && tmp_19_default_flag == ALT_NO) TTCN_error("None of the branches can be chosen in the alt statement in file SocketCANtest.ttcn between lines 170 and 188.");
+TTCN_Snapshot::take_new(TRUE);
+}
+}
+current_location.update_lineno(169);
+#line 169 "SocketCANtest.ttcn"
+{
+INTEGER tmp_23;
+++v__i;
+}
+}
+current_location.update_lineno(190);
+#line 190 "SocketCANtest.ttcn"
+MTC_component_t__guard.stop();
+}
+
+void start_f__awaitEndPhase(const COMPONENT& component_reference, const e__Phase& p__phase)
+{
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_awaitEndPhase(");
+p__phase.log();
+TTCN_Logger::log_event_str(") on component ");
+component_reference.log();
+TTCN_Logger::log_char('.');
+TTCN_Logger::end_event();
+Text_Buf text_buf;
+TTCN_Runtime::prepare_start_component(component_reference, "SocketCANtest", "f_awaitEndPhase", text_buf);
+p__phase.encode_text(text_buf);
+TTCN_Runtime::send_start_component(text_buf);
+}
+
+SocketCAN__Types::SocketCAN__socket__result f__open__socket(const SocketCAN__open__socket__type& v__socket__type)
+{
+TTCN_Location current_location("SocketCANtest.ttcn", 193, TTCN_Location::LOCATION_FUNCTION, "f_open_socket");
+current_location.update_lineno(197);
+#line 197 "SocketCANtest.ttcn"
+SocketCAN__Types::SocketCAN__socket__result v__result;
+current_location.update_lineno(198);
+#line 198 "SocketCANtest.ttcn"
+TIMER t__guard("t_guard");
+current_location.update_lineno(199);
+#line 199 "SocketCANtest.ttcn"
+t__guard.start(1.0e1);
+current_location.update_lineno(201);
+#line 201 "SocketCANtest.ttcn"
+SocketCAN__Types::SocketCAN__socket socket;
+current_location.update_lineno(203);
+#line 203 "SocketCANtest.ttcn"
+if ((v__socket__type == SocketCAN__open__socket__type::OPEN__CAN__RAW)) {
+current_location.update_lineno(204);
+#line 204 "SocketCANtest.ttcn"
+socket.domain() = Can::AdresseFamily__enum::PF__CAN;
+socket.ptype() = Can::ProtocolFamily__enum::SOCK__RAW;
+socket.protocol() = Can::PF__CAN__protocols__enum::CAN__RAW;
+}
+else {
+current_location.update_lineno(205);
+#line 205 "SocketCANtest.ttcn"
+if ((v__socket__type == SocketCAN__open__socket__type::OPEN__CAN__BCM)) {
+current_location.update_lineno(206);
+#line 206 "SocketCANtest.ttcn"
+socket.domain() = Can::AdresseFamily__enum::PF__CAN;
+socket.ptype() = Can::ProtocolFamily__enum::SOCK__DGRAM;
+socket.protocol() = Can::PF__CAN__protocols__enum::CAN__BCM;
+}
+}
+current_location.update_lineno(208);
+#line 208 "SocketCANtest.ttcn"
+PTC_component_pt__socketCAN.send(socket, NULL);
+current_location.update_lineno(211);
+#line 211 "SocketCANtest.ttcn"
+{
+tmp_26:
+alt_status tmp_26_alt_flag_0 = ALT_MAYBE;
+alt_status tmp_26_alt_flag_1 = ALT_MAYBE;
+alt_status tmp_26_alt_flag_2 = ALT_MAYBE;
+alt_status tmp_26_alt_flag_3 = ALT_MAYBE;
+alt_status tmp_26_default_flag = ALT_MAYBE;
+TTCN_Snapshot::take_new(FALSE);
+for ( ; ; ) {
+if (tmp_26_alt_flag_0 == ALT_MAYBE) {
+current_location.update_lineno(212);
+#line 212 "SocketCANtest.ttcn"
+tmp_26_alt_flag_0 = PTC_component_pt__socketCAN.receive(SocketCAN__Templates::a__SocketCAN__socket__result(SocketCAN__Templates::a__result(SocketCAN__Types::SocketCAN__Result__code::SocketCAN__SUCCESS)), &(v__result), any_compref, NULL, NULL, NULL);
+if (tmp_26_alt_flag_0 == ALT_YES) {
+current_location.update_lineno(214);
+#line 214 "SocketCANtest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("SocketCan:Socket opened: ");
+const_cast< const SocketCAN__Types::SocketCAN__socket__result&>(v__result).id().log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+break;
+}
+}
+if (tmp_26_alt_flag_1 == ALT_MAYBE) {
+current_location.update_lineno(215);
+#line 215 "SocketCANtest.ttcn"
+tmp_26_alt_flag_1 = PTC_component_pt__socketCAN.receive(SocketCAN__Templates::a__SocketCAN__socket__result(SocketCAN__Templates::a__result(SocketCAN__Types::SocketCAN__Result__code::SocketCAN__ERROR)), NULL, any_compref, NULL, NULL, NULL);
+if (tmp_26_alt_flag_1 == ALT_YES) {
+current_location.update_lineno(216);
+#line 216 "SocketCANtest.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "Received Opening Socket failed");
+current_location.update_lineno(216);
+#line 216 "SocketCANtest.ttcn"
+TTCN_Runtime::setverdict(FAIL);
+break;
+}
+}
+if (tmp_26_alt_flag_2 == ALT_MAYBE) {
+current_location.update_lineno(217);
+#line 217 "SocketCANtest.ttcn"
+tmp_26_alt_flag_2 = t__guard.timeout(NULL);
+if (tmp_26_alt_flag_2 == ALT_YES) {
+current_location.update_lineno(218);
+#line 218 "SocketCANtest.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "timeout!");
+current_location.update_lineno(219);
+#line 219 "SocketCANtest.ttcn"
+TTCN_Runtime::setverdict(FAIL);
+break;
+}
+}
+if (tmp_26_alt_flag_3 == ALT_MAYBE) {
+current_location.update_lineno(220);
+#line 220 "SocketCANtest.ttcn"
+tmp_26_alt_flag_3 = t__guard.timeout(NULL);
+if (tmp_26_alt_flag_3 == ALT_YES) {
+current_location.update_lineno(221);
+#line 221 "SocketCANtest.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "timeout!");
+current_location.update_lineno(222);
+#line 222 "SocketCANtest.ttcn"
+TTCN_Runtime::setverdict(FAIL);
+break;
+}
+}
+if (tmp_26_default_flag == ALT_MAYBE) {
+tmp_26_default_flag = TTCN_Default::try_altsteps();
+if (tmp_26_default_flag == ALT_YES || tmp_26_default_flag == ALT_BREAK) break;
+else if (tmp_26_default_flag == ALT_REPEAT) goto tmp_26;
+}
+current_location.update_lineno(211);
+#line 211 "SocketCANtest.ttcn"
+if (tmp_26_alt_flag_0 == ALT_NO && tmp_26_alt_flag_1 == ALT_NO && tmp_26_alt_flag_2 == ALT_NO && tmp_26_alt_flag_3 == ALT_NO && tmp_26_default_flag == ALT_NO) TTCN_error("None of the branches can be chosen in the alt statement in file SocketCANtest.ttcn between lines 211 and 223.");
+TTCN_Snapshot::take_new(TRUE);
+}
+}
+current_location.update_lineno(224);
+#line 224 "SocketCANtest.ttcn"
+t__guard.stop();
+current_location.update_lineno(225);
+#line 225 "SocketCANtest.ttcn"
+return v__result;
+}
+
+void start_f__open__socket(const COMPONENT& component_reference, const SocketCAN__open__socket__type& v__socket__type)
+{
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_open_socket(");
+v__socket__type.log();
+TTCN_Logger::log_event_str(") on component ");
+component_reference.log();
+TTCN_Logger::log_char('.');
+TTCN_Logger::end_event();
+Text_Buf text_buf;
+TTCN_Runtime::prepare_start_component(component_reference, "SocketCANtest", "f_open_socket", text_buf);
+v__socket__type.encode_text(text_buf);
+TTCN_Runtime::send_start_component(text_buf);
+}
+
+SocketCAN__Types::SocketCAN__ioctl__result f__ioctl__get__if__index(const INTEGER& p__socket__id)
+{
+TTCN_Location current_location("SocketCANtest.ttcn", 228, TTCN_Location::LOCATION_FUNCTION, "f_ioctl_get_if_index");
+current_location.update_lineno(231);
+#line 231 "SocketCANtest.ttcn"
+SocketCAN__Types::SocketCAN__ioctl__result v__result;
+current_location.update_lineno(232);
+#line 232 "SocketCANtest.ttcn"
+TIMER t__guard("t_guard");
+current_location.update_lineno(233);
+#line 233 "SocketCANtest.ttcn"
+t__guard.start(1.0e1);
+current_location.update_lineno(235);
+#line 235 "SocketCANtest.ttcn"
+{
+SocketCAN__Types::SocketCAN__ioctl_template tmp_27;
+tmp_27.id() = p__socket__id;
+tmp_27.ifu() = OMIT_VALUE;
+PTC_component_pt__socketCAN.send(tmp_27, NULL);
+}
+current_location.update_lineno(237);
+#line 237 "SocketCANtest.ttcn"
+{
+tmp_28:
+alt_status tmp_28_alt_flag_0 = ALT_MAYBE;
+alt_status tmp_28_alt_flag_1 = ALT_MAYBE;
+alt_status tmp_28_alt_flag_2 = ALT_MAYBE;
+alt_status tmp_28_default_flag = ALT_MAYBE;
+TTCN_Snapshot::take_new(FALSE);
+for ( ; ; ) {
+if (tmp_28_alt_flag_0 == ALT_MAYBE) {
+current_location.update_lineno(238);
+#line 238 "SocketCANtest.ttcn"
+tmp_28_alt_flag_0 = PTC_component_pt__socketCAN.receive(SocketCAN__Templates::a__SocketCAN__ioctl__result(SocketCAN__Templates::a__result(SocketCAN__Types::SocketCAN__Result__code::SocketCAN__SUCCESS)), &(v__result), any_compref, NULL, NULL, NULL);
+if (tmp_28_alt_flag_0 == ALT_YES) {
+current_location.update_lineno(239);
+#line 239 "SocketCANtest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("Retrieved interface index");
+const_cast< const SocketCAN__Types::SocketCAN__ioctl__result&>(v__result).ifr().if__index().log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+break;
+}
+}
+if (tmp_28_alt_flag_1 == ALT_MAYBE) {
+current_location.update_lineno(240);
+#line 240 "SocketCANtest.ttcn"
+tmp_28_alt_flag_1 = PTC_component_pt__socketCAN.receive(SocketCAN__Templates::a__SocketCAN__ioctl__result(SocketCAN__Templates::a__result(SocketCAN__Types::SocketCAN__Result__code::SocketCAN__ERROR)), NULL, any_compref, NULL, NULL, NULL);
+if (tmp_28_alt_flag_1 == ALT_YES) {
+current_location.update_lineno(241);
+#line 241 "SocketCANtest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("Retrieving interface index failed");
+p__socket__id.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(241);
+#line 241 "SocketCANtest.ttcn"
+TTCN_Runtime::setverdict(FAIL);
+break;
+}
+}
+if (tmp_28_alt_flag_2 == ALT_MAYBE) {
+current_location.update_lineno(242);
+#line 242 "SocketCANtest.ttcn"
+tmp_28_alt_flag_2 = t__guard.timeout(NULL);
+if (tmp_28_alt_flag_2 == ALT_YES) {
+current_location.update_lineno(243);
+#line 243 "SocketCANtest.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "timeout!");
+current_location.update_lineno(244);
+#line 244 "SocketCANtest.ttcn"
+TTCN_Runtime::setverdict(FAIL);
+break;
+}
+}
+if (tmp_28_default_flag == ALT_MAYBE) {
+tmp_28_default_flag = TTCN_Default::try_altsteps();
+if (tmp_28_default_flag == ALT_YES || tmp_28_default_flag == ALT_BREAK) break;
+else if (tmp_28_default_flag == ALT_REPEAT) goto tmp_28;
+}
+current_location.update_lineno(237);
+#line 237 "SocketCANtest.ttcn"
+if (tmp_28_alt_flag_0 == ALT_NO && tmp_28_alt_flag_1 == ALT_NO && tmp_28_alt_flag_2 == ALT_NO && tmp_28_default_flag == ALT_NO) TTCN_error("None of the branches can be chosen in the alt statement in file SocketCANtest.ttcn between lines 237 and 246.");
+TTCN_Snapshot::take_new(TRUE);
+}
+}
+current_location.update_lineno(247);
+#line 247 "SocketCANtest.ttcn"
+return v__result;
+}
+
+void start_f__ioctl__get__if__index(const COMPONENT& component_reference, const INTEGER& p__socket__id)
+{
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_ioctl_get_if_index(");
+p__socket__id.log();
+TTCN_Logger::log_event_str(") on component ");
+component_reference.log();
+TTCN_Logger::log_char('.');
+TTCN_Logger::end_event();
+Text_Buf text_buf;
+TTCN_Runtime::prepare_start_component(component_reference, "SocketCANtest", "f_ioctl_get_if_index", text_buf);
+p__socket__id.encode_text(text_buf);
+TTCN_Runtime::send_start_component(text_buf);
+}
+
+SocketCAN__Types::SocketCAN__connect__result f__connect(const INTEGER& p__socket__id, const INTEGER& p__if__index)
+{
+TTCN_Location current_location("SocketCANtest.ttcn", 250, TTCN_Location::LOCATION_FUNCTION, "f_connect");
+current_location.update_lineno(254);
+#line 254 "SocketCANtest.ttcn"
+SocketCAN__Types::SocketCAN__connect__result v__result;
+current_location.update_lineno(255);
+#line 255 "SocketCANtest.ttcn"
+TIMER t__guard("t_guard");
+current_location.update_lineno(256);
+#line 256 "SocketCANtest.ttcn"
+t__guard.start(1.0e1);
+current_location.update_lineno(258);
+#line 258 "SocketCANtest.ttcn"
+{
+SocketCAN__Types::SocketCAN__connect_template tmp_29;
+tmp_29.id() = p__socket__id;
+tmp_29.connectu().bcm().if__index() = p__if__index;
+PTC_component_pt__socketCAN.send(tmp_29, NULL);
+}
+current_location.update_lineno(260);
+#line 260 "SocketCANtest.ttcn"
+{
+tmp_30:
+alt_status tmp_30_alt_flag_0 = ALT_MAYBE;
+alt_status tmp_30_alt_flag_1 = ALT_MAYBE;
+alt_status tmp_30_alt_flag_2 = ALT_MAYBE;
+alt_status tmp_30_default_flag = ALT_MAYBE;
+TTCN_Snapshot::take_new(FALSE);
+for ( ; ; ) {
+if (tmp_30_alt_flag_0 == ALT_MAYBE) {
+current_location.update_lineno(261);
+#line 261 "SocketCANtest.ttcn"
+tmp_30_alt_flag_0 = PTC_component_pt__socketCAN.receive(SocketCAN__Templates::a__SocketCAN__connect__result(SocketCAN__Templates::a__result(SocketCAN__Types::SocketCAN__Result__code::SocketCAN__SUCCESS)), &(v__result), any_compref, NULL, NULL, NULL);
+if (tmp_30_alt_flag_0 == ALT_YES) {
+current_location.update_lineno(262);
+#line 262 "SocketCANtest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("Connecting socket");
+p__socket__id.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+break;
+}
+}
+if (tmp_30_alt_flag_1 == ALT_MAYBE) {
+current_location.update_lineno(263);
+#line 263 "SocketCANtest.ttcn"
+tmp_30_alt_flag_1 = PTC_component_pt__socketCAN.receive(SocketCAN__Templates::a__SocketCAN__connect__result(SocketCAN__Templates::a__result(SocketCAN__Types::SocketCAN__Result__code::SocketCAN__ERROR)), NULL, any_compref, NULL, NULL, NULL);
+if (tmp_30_alt_flag_1 == ALT_YES) {
+current_location.update_lineno(264);
+#line 264 "SocketCANtest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("Connecting socket failed.");
+p__socket__id.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(264);
+#line 264 "SocketCANtest.ttcn"
+TTCN_Runtime::setverdict(FAIL);
+break;
+}
+}
+if (tmp_30_alt_flag_2 == ALT_MAYBE) {
+current_location.update_lineno(265);
+#line 265 "SocketCANtest.ttcn"
+tmp_30_alt_flag_2 = t__guard.timeout(NULL);
+if (tmp_30_alt_flag_2 == ALT_YES) {
+current_location.update_lineno(266);
+#line 266 "SocketCANtest.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "timeout!");
+current_location.update_lineno(267);
+#line 267 "SocketCANtest.ttcn"
+TTCN_Runtime::setverdict(FAIL);
+break;
+}
+}
+if (tmp_30_default_flag == ALT_MAYBE) {
+tmp_30_default_flag = TTCN_Default::try_altsteps();
+if (tmp_30_default_flag == ALT_YES || tmp_30_default_flag == ALT_BREAK) break;
+else if (tmp_30_default_flag == ALT_REPEAT) goto tmp_30;
+}
+current_location.update_lineno(260);
+#line 260 "SocketCANtest.ttcn"
+if (tmp_30_alt_flag_0 == ALT_NO && tmp_30_alt_flag_1 == ALT_NO && tmp_30_alt_flag_2 == ALT_NO && tmp_30_default_flag == ALT_NO) TTCN_error("None of the branches can be chosen in the alt statement in file SocketCANtest.ttcn between lines 260 and 268.");
+TTCN_Snapshot::take_new(TRUE);
+}
+}
+current_location.update_lineno(269);
+#line 269 "SocketCANtest.ttcn"
+return v__result;
+}
+
+void start_f__connect(const COMPONENT& component_reference, const INTEGER& p__socket__id, const INTEGER& p__if__index)
+{
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_connect(");
+p__socket__id.log();
+TTCN_Logger::log_event_str(", ");
+p__if__index.log();
+TTCN_Logger::log_event_str(") on component ");
+component_reference.log();
+TTCN_Logger::log_char('.');
+TTCN_Logger::end_event();
+Text_Buf text_buf;
+TTCN_Runtime::prepare_start_component(component_reference, "SocketCANtest", "f_connect", text_buf);
+p__socket__id.encode_text(text_buf);
+p__if__index.encode_text(text_buf);
+TTCN_Runtime::send_start_component(text_buf);
+}
+
+SocketCAN__Types::SocketCAN__bind__result f__bind(const INTEGER& p__socket__id, const INTEGER& p__if__index)
+{
+TTCN_Location current_location("SocketCANtest.ttcn", 272, TTCN_Location::LOCATION_FUNCTION, "f_bind");
+current_location.update_lineno(276);
+#line 276 "SocketCANtest.ttcn"
+SocketCAN__Types::SocketCAN__bind__result v__result;
+current_location.update_lineno(277);
+#line 277 "SocketCANtest.ttcn"
+TIMER t__guard("t_guard");
+current_location.update_lineno(278);
+#line 278 "SocketCANtest.ttcn"
+t__guard.start(1.0e1);
+current_location.update_lineno(279);
+#line 279 "SocketCANtest.ttcn"
+{
+SocketCAN__Types::SocketCAN__bind_template tmp_31;
+tmp_31.id() = p__socket__id;
+tmp_31.bindu().raw().if__index() = p__if__index;
+PTC_component_pt__socketCAN.send(tmp_31, NULL);
+}
+current_location.update_lineno(280);
+#line 280 "SocketCANtest.ttcn"
+{
+tmp_32:
+alt_status tmp_32_alt_flag_0 = ALT_MAYBE;
+alt_status tmp_32_alt_flag_1 = ALT_MAYBE;
+alt_status tmp_32_alt_flag_2 = ALT_MAYBE;
+alt_status tmp_32_default_flag = ALT_MAYBE;
+TTCN_Snapshot::take_new(FALSE);
+for ( ; ; ) {
+if (tmp_32_alt_flag_0 == ALT_MAYBE) {
+current_location.update_lineno(281);
+#line 281 "SocketCANtest.ttcn"
+tmp_32_alt_flag_0 = PTC_component_pt__socketCAN.receive(SocketCAN__Templates::a__SocketCAN__bind__result(SocketCAN__Templates::a__result(SocketCAN__Types::SocketCAN__Result__code::SocketCAN__SUCCESS)), &(v__result), any_compref, NULL, NULL, NULL);
+if (tmp_32_alt_flag_0 == ALT_YES) {
+current_location.update_lineno(282);
+#line 282 "SocketCANtest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("Binding socket");
+p__socket__id.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+break;
+}
+}
+if (tmp_32_alt_flag_1 == ALT_MAYBE) {
+current_location.update_lineno(283);
+#line 283 "SocketCANtest.ttcn"
+tmp_32_alt_flag_1 = PTC_component_pt__socketCAN.receive(SocketCAN__Templates::a__SocketCAN__bind__result(SocketCAN__Templates::a__result(SocketCAN__Types::SocketCAN__Result__code::SocketCAN__ERROR)), NULL, any_compref, NULL, NULL, NULL);
+if (tmp_32_alt_flag_1 == ALT_YES) break;
+}
+if (tmp_32_alt_flag_2 == ALT_MAYBE) {
+current_location.update_lineno(284);
+#line 284 "SocketCANtest.ttcn"
+tmp_32_alt_flag_2 = t__guard.timeout(NULL);
+if (tmp_32_alt_flag_2 == ALT_YES) {
+current_location.update_lineno(285);
+#line 285 "SocketCANtest.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "timeout!");
+current_location.update_lineno(286);
+#line 286 "SocketCANtest.ttcn"
+TTCN_Runtime::setverdict(FAIL);
+break;
+}
+}
+if (tmp_32_default_flag == ALT_MAYBE) {
+tmp_32_default_flag = TTCN_Default::try_altsteps();
+if (tmp_32_default_flag == ALT_YES || tmp_32_default_flag == ALT_BREAK) break;
+else if (tmp_32_default_flag == ALT_REPEAT) goto tmp_32;
+}
+current_location.update_lineno(280);
+#line 280 "SocketCANtest.ttcn"
+if (tmp_32_alt_flag_0 == ALT_NO && tmp_32_alt_flag_1 == ALT_NO && tmp_32_alt_flag_2 == ALT_NO && tmp_32_default_flag == ALT_NO) TTCN_error("None of the branches can be chosen in the alt statement in file SocketCANtest.ttcn between lines 280 and 288.");
+TTCN_Snapshot::take_new(TRUE);
+}
+}
+current_location.update_lineno(289);
+#line 289 "SocketCANtest.ttcn"
+return v__result;
+}
+
+void start_f__bind(const COMPONENT& component_reference, const INTEGER& p__socket__id, const INTEGER& p__if__index)
+{
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_bind(");
+p__socket__id.log();
+TTCN_Logger::log_event_str(", ");
+p__if__index.log();
+TTCN_Logger::log_event_str(") on component ");
+component_reference.log();
+TTCN_Logger::log_char('.');
+TTCN_Logger::end_event();
+Text_Buf text_buf;
+TTCN_Runtime::prepare_start_component(component_reference, "SocketCANtest", "f_bind", text_buf);
+p__socket__id.encode_text(text_buf);
+p__if__index.encode_text(text_buf);
+TTCN_Runtime::send_start_component(text_buf);
+}
+
+SocketCAN__Types::SocketCAN__send__data__result f__send__data(const INTEGER& p__socket__id, const SocketCAN__Types::SocketCAN__send__data__ifu& p__ifu, const SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame& p__CAN__or__CAN__FD__frame)
+{
+TTCN_Location current_location("SocketCANtest.ttcn", 292, TTCN_Location::LOCATION_FUNCTION, "f_send_data");
+current_location.update_lineno(297);
+#line 297 "SocketCANtest.ttcn"
+SocketCAN__Types::SocketCAN__send__data__result v__result;
+current_location.update_lineno(299);
+#line 299 "SocketCANtest.ttcn"
+TIMER t__guard("t_guard");
+current_location.update_lineno(300);
+#line 300 "SocketCANtest.ttcn"
+t__guard.start(1.0e1);
+current_location.update_lineno(303);
+#line 303 "SocketCANtest.ttcn"
+{
+SocketCAN__Types::SocketCAN__send__data_template tmp_33;
+tmp_33.id() = p__socket__id;
+tmp_33.ifu() = p__ifu;
+tmp_33.frame() = p__CAN__or__CAN__FD__frame;
+PTC_component_pt__socketCAN.send(tmp_33, NULL);
+}
+current_location.update_lineno(305);
+#line 305 "SocketCANtest.ttcn"
+{
+tmp_34:
+alt_status tmp_34_alt_flag_0 = ALT_MAYBE;
+alt_status tmp_34_alt_flag_1 = ALT_MAYBE;
+alt_status tmp_34_alt_flag_2 = ALT_MAYBE;
+alt_status tmp_34_default_flag = ALT_MAYBE;
+TTCN_Snapshot::take_new(FALSE);
+for ( ; ; ) {
+if (tmp_34_alt_flag_0 == ALT_MAYBE) {
+current_location.update_lineno(306);
+#line 306 "SocketCANtest.ttcn"
+tmp_34_alt_flag_0 = PTC_component_pt__socketCAN.receive(SocketCAN__Templates::a__SocketCAN__send__data__result(SocketCAN__Templates::a__result(SocketCAN__Types::SocketCAN__Result__code::SocketCAN__SUCCESS)), &(v__result), any_compref, NULL, NULL, NULL);
+if (tmp_34_alt_flag_0 == ALT_YES) {
+current_location.update_lineno(307);
+#line 307 "SocketCANtest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("Sending data");
+p__socket__id.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+break;
+}
+}
+if (tmp_34_alt_flag_1 == ALT_MAYBE) {
+current_location.update_lineno(308);
+#line 308 "SocketCANtest.ttcn"
+tmp_34_alt_flag_1 = PTC_component_pt__socketCAN.receive(SocketCAN__Templates::a__SocketCAN__send__data__result(SocketCAN__Templates::a__result(SocketCAN__Types::SocketCAN__Result__code::SocketCAN__ERROR)), NULL, any_compref, NULL, NULL, NULL);
+if (tmp_34_alt_flag_1 == ALT_YES) {
+current_location.update_lineno(309);
+#line 309 "SocketCANtest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("Sending data failed");
+p__socket__id.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(309);
+#line 309 "SocketCANtest.ttcn"
+TTCN_Runtime::setverdict(FAIL);
+break;
+}
+}
+if (tmp_34_alt_flag_2 == ALT_MAYBE) {
+current_location.update_lineno(310);
+#line 310 "SocketCANtest.ttcn"
+tmp_34_alt_flag_2 = t__guard.timeout(NULL);
+if (tmp_34_alt_flag_2 == ALT_YES) {
+current_location.update_lineno(311);
+#line 311 "SocketCANtest.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "timeout!");
+current_location.update_lineno(312);
+#line 312 "SocketCANtest.ttcn"
+TTCN_Runtime::setverdict(FAIL);
+break;
+}
+}
+if (tmp_34_default_flag == ALT_MAYBE) {
+tmp_34_default_flag = TTCN_Default::try_altsteps();
+if (tmp_34_default_flag == ALT_YES || tmp_34_default_flag == ALT_BREAK) break;
+else if (tmp_34_default_flag == ALT_REPEAT) goto tmp_34;
+}
+current_location.update_lineno(305);
+#line 305 "SocketCANtest.ttcn"
+if (tmp_34_alt_flag_0 == ALT_NO && tmp_34_alt_flag_1 == ALT_NO && tmp_34_alt_flag_2 == ALT_NO && tmp_34_default_flag == ALT_NO) TTCN_error("None of the branches can be chosen in the alt statement in file SocketCANtest.ttcn between lines 305 and 314.");
+TTCN_Snapshot::take_new(TRUE);
+}
+}
+current_location.update_lineno(315);
+#line 315 "SocketCANtest.ttcn"
+return v__result;
+}
+
+void start_f__send__data(const COMPONENT& component_reference, const INTEGER& p__socket__id, const SocketCAN__Types::SocketCAN__send__data__ifu& p__ifu, const SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame& p__CAN__or__CAN__FD__frame)
+{
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_send_data(");
+p__socket__id.log();
+TTCN_Logger::log_event_str(", ");
+p__ifu.log();
+TTCN_Logger::log_event_str(", ");
+p__CAN__or__CAN__FD__frame.log();
+TTCN_Logger::log_event_str(") on component ");
+component_reference.log();
+TTCN_Logger::log_char('.');
+TTCN_Logger::end_event();
+Text_Buf text_buf;
+TTCN_Runtime::prepare_start_component(component_reference, "SocketCANtest", "f_send_data", text_buf);
+p__socket__id.encode_text(text_buf);
+p__ifu.encode_text(text_buf);
+p__CAN__or__CAN__FD__frame.encode_text(text_buf);
+TTCN_Runtime::send_start_component(text_buf);
+}
+
+void f__receive__data(const INTEGER& p__socket__id, const SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame_template& p__frame__expected)
+{
+TTCN_Location current_location("SocketCANtest.ttcn", 319, TTCN_Location::LOCATION_FUNCTION, "f_receive_data");
+current_location.update_lineno(321);
+#line 321 "SocketCANtest.ttcn"
+SocketCAN__Types::SocketCAN__receive__CAN__or__CAN__FD__frame v__result;
+current_location.update_lineno(323);
+#line 323 "SocketCANtest.ttcn"
+TIMER t__guard("t_guard");
+current_location.update_lineno(324);
+#line 324 "SocketCANtest.ttcn"
+t__guard.start(1.0e1);
+current_location.update_lineno(327);
+#line 327 "SocketCANtest.ttcn"
+{
+tmp_35:
+alt_status tmp_35_alt_flag_0 = ALT_MAYBE;
+alt_status tmp_35_alt_flag_1 = ALT_MAYBE;
+alt_status tmp_35_alt_flag_2 = ALT_MAYBE;
+alt_status tmp_35_default_flag = ALT_MAYBE;
+TTCN_Snapshot::take_new(FALSE);
+for ( ; ; ) {
+if (tmp_35_alt_flag_0 == ALT_MAYBE) {
+current_location.update_lineno(329);
+#line 329 "SocketCANtest.ttcn"
+tmp_35_alt_flag_0 = PTC_component_pt__socketCAN.receive(SocketCAN__Templates::a__SocketCAN__receive__CAN__or__CAN__FD__frame(INTEGER_template(p__socket__id), p__frame__expected), &(v__result), any_compref, NULL, NULL, NULL);
+if (tmp_35_alt_flag_0 == ALT_YES) {
+current_location.update_lineno(330);
+#line 330 "SocketCANtest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("SocketCan:Expected frame received");
+v__result.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+break;
+}
+}
+if (tmp_35_alt_flag_1 == ALT_MAYBE) {
+current_location.update_lineno(331);
+#line 331 "SocketCANtest.ttcn"
+tmp_35_alt_flag_1 = PTC_component_pt__socketCAN.receive(SocketCAN__Types::SocketCAN__receive__CAN__or__CAN__FD__frame_template(ANY_VALUE), &(v__result), any_compref, NULL, NULL, NULL);
+if (tmp_35_alt_flag_1 == ALT_YES) {
+current_location.update_lineno(332);
+#line 332 "SocketCANtest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("SocketCan:Unexpected frame received!");
+v__result.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(333);
+#line 333 "SocketCANtest.ttcn"
+TTCN_Runtime::setverdict(FAIL);
+break;
+}
+}
+if (tmp_35_alt_flag_2 == ALT_MAYBE) {
+current_location.update_lineno(334);
+#line 334 "SocketCANtest.ttcn"
+tmp_35_alt_flag_2 = t__guard.timeout(NULL);
+if (tmp_35_alt_flag_2 == ALT_YES) {
+current_location.update_lineno(335);
+#line 335 "SocketCANtest.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "timeout!");
+current_location.update_lineno(336);
+#line 336 "SocketCANtest.ttcn"
+TTCN_Runtime::setverdict(FAIL);
+break;
+}
+}
+if (tmp_35_default_flag == ALT_MAYBE) {
+tmp_35_default_flag = TTCN_Default::try_altsteps();
+if (tmp_35_default_flag == ALT_YES || tmp_35_default_flag == ALT_BREAK) break;
+else if (tmp_35_default_flag == ALT_REPEAT) goto tmp_35;
+}
+current_location.update_lineno(327);
+#line 327 "SocketCANtest.ttcn"
+if (tmp_35_alt_flag_0 == ALT_NO && tmp_35_alt_flag_1 == ALT_NO && tmp_35_alt_flag_2 == ALT_NO && tmp_35_default_flag == ALT_NO) TTCN_error("None of the branches can be chosen in the alt statement in file SocketCANtest.ttcn between lines 327 and 337.");
+TTCN_Snapshot::take_new(TRUE);
+}
+}
+}
+
+void start_f__receive__data(const COMPONENT& component_reference, const INTEGER& p__socket__id, const SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame_template& p__frame__expected)
+{
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_receive_data(");
+p__socket__id.log();
+TTCN_Logger::log_event_str(", ");
+p__frame__expected.log();
+TTCN_Logger::log_event_str(") on component ");
+component_reference.log();
+TTCN_Logger::log_char('.');
+TTCN_Logger::end_event();
+Text_Buf text_buf;
+TTCN_Runtime::prepare_start_component(component_reference, "SocketCANtest", "f_receive_data", text_buf);
+p__socket__id.encode_text(text_buf);
+p__frame__expected.encode_text(text_buf);
+TTCN_Runtime::send_start_component(text_buf);
+}
+
+void f__receive__no__data__but__timeout(const INTEGER& p__socket__id, const FLOAT& p__timeout__period)
+{
+TTCN_Location current_location("SocketCANtest.ttcn", 340, TTCN_Location::LOCATION_FUNCTION, "f_receive_no_data_but_timeout");
+current_location.update_lineno(342);
+#line 342 "SocketCANtest.ttcn"
+SocketCAN__Types::SocketCAN__receive__CAN__or__CAN__FD__frame v__result;
+current_location.update_lineno(344);
+#line 344 "SocketCANtest.ttcn"
+TIMER t__guard("t_guard");
+current_location.update_lineno(345);
+#line 345 "SocketCANtest.ttcn"
+t__guard.start(p__timeout__period);
+current_location.update_lineno(348);
+#line 348 "SocketCANtest.ttcn"
+{
+tmp_36:
+alt_status tmp_36_alt_flag_0 = ALT_MAYBE;
+alt_status tmp_36_alt_flag_1 = ALT_MAYBE;
+alt_status tmp_36_default_flag = ALT_MAYBE;
+TTCN_Snapshot::take_new(FALSE);
+for ( ; ; ) {
+if (tmp_36_alt_flag_0 == ALT_MAYBE) {
+current_location.update_lineno(349);
+#line 349 "SocketCANtest.ttcn"
+tmp_36_alt_flag_0 = PTC_component_pt__socketCAN.receive(SocketCAN__Templates::a__SocketCAN__receive__CAN__or__CAN__FD__frame(INTEGER_template(p__socket__id), SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame_template(ANY_VALUE)), &(v__result), any_compref, NULL, NULL, NULL);
+if (tmp_36_alt_flag_0 == ALT_YES) {
+current_location.update_lineno(350);
+#line 350 "SocketCANtest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("SocketCan:Unexpected frame received!");
+v__result.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(351);
+#line 351 "SocketCANtest.ttcn"
+TTCN_Runtime::setverdict(FAIL);
+break;
+}
+}
+if (tmp_36_alt_flag_1 == ALT_MAYBE) {
+current_location.update_lineno(353);
+#line 353 "SocketCANtest.ttcn"
+tmp_36_alt_flag_1 = t__guard.timeout(NULL);
+if (tmp_36_alt_flag_1 == ALT_YES) {
+current_location.update_lineno(354);
+#line 354 "SocketCANtest.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "Expected timeout!");
+break;
+}
+}
+if (tmp_36_default_flag == ALT_MAYBE) {
+tmp_36_default_flag = TTCN_Default::try_altsteps();
+if (tmp_36_default_flag == ALT_YES || tmp_36_default_flag == ALT_BREAK) break;
+else if (tmp_36_default_flag == ALT_REPEAT) goto tmp_36;
+}
+current_location.update_lineno(348);
+#line 348 "SocketCANtest.ttcn"
+if (tmp_36_alt_flag_0 == ALT_NO && tmp_36_alt_flag_1 == ALT_NO && tmp_36_default_flag == ALT_NO) TTCN_error("None of the branches can be chosen in the alt statement in file SocketCANtest.ttcn between lines 348 and 355.");
+TTCN_Snapshot::take_new(TRUE);
+}
+}
+}
+
+void start_f__receive__no__data__but__timeout(const COMPONENT& component_reference, const INTEGER& p__socket__id, const FLOAT& p__timeout__period)
+{
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_receive_no_data_but_timeout(");
+p__socket__id.log();
+TTCN_Logger::log_event_str(", ");
+p__timeout__period.log();
+TTCN_Logger::log_event_str(") on component ");
+component_reference.log();
+TTCN_Logger::log_char('.');
+TTCN_Logger::end_event();
+Text_Buf text_buf;
+TTCN_Runtime::prepare_start_component(component_reference, "SocketCANtest", "f_receive_no_data_but_timeout", text_buf);
+p__socket__id.encode_text(text_buf);
+p__timeout__period.encode_text(text_buf);
+TTCN_Runtime::send_start_component(text_buf);
+}
+
+void f__write__data(const INTEGER& p__socket__id, const Bcm::SocketCAN__bcm__frame& p__bcm__frame)
+{
+TTCN_Location current_location("SocketCANtest.ttcn", 358, TTCN_Location::LOCATION_FUNCTION, "f_write_data");
+current_location.update_lineno(362);
+#line 362 "SocketCANtest.ttcn"
+SocketCAN__Types::SocketCAN__write__data__result v__result;
+current_location.update_lineno(364);
+#line 364 "SocketCANtest.ttcn"
+TIMER t__guard("t_guard");
+current_location.update_lineno(365);
+#line 365 "SocketCANtest.ttcn"
+t__guard.start(1.0e1);
+current_location.update_lineno(366);
+#line 366 "SocketCANtest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("BCM frame: SocketCAN_write_data:{id}:");
+p__socket__id.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(367);
+#line 367 "SocketCANtest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("BCM frame: SocketCAN_write_data:{bcm_tx_msg}:");
+p__bcm__frame.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(369);
+#line 369 "SocketCANtest.ttcn"
+{
+SocketCAN__Types::SocketCAN__write__data_template tmp_37;
+tmp_37.id() = p__socket__id;
+tmp_37.bcm__tx__msg() = p__bcm__frame;
+PTC_component_pt__socketCAN.send(tmp_37, NULL);
+}
+current_location.update_lineno(370);
+#line 370 "SocketCANtest.ttcn"
+{
+tmp_38:
+alt_status tmp_38_alt_flag_0 = ALT_MAYBE;
+alt_status tmp_38_alt_flag_1 = ALT_MAYBE;
+alt_status tmp_38_alt_flag_2 = ALT_MAYBE;
+alt_status tmp_38_default_flag = ALT_MAYBE;
+TTCN_Snapshot::take_new(FALSE);
+for ( ; ; ) {
+if (tmp_38_alt_flag_0 == ALT_MAYBE) {
+current_location.update_lineno(371);
+#line 371 "SocketCANtest.ttcn"
+tmp_38_alt_flag_0 = PTC_component_pt__socketCAN.receive(SocketCAN__Templates::a__SocketCAN__write__data__result(SocketCAN__Templates::a__result(SocketCAN__Types::SocketCAN__Result__code::SocketCAN__SUCCESS)), &(v__result), any_compref, NULL, NULL, NULL);
+if (tmp_38_alt_flag_0 == ALT_YES) {
+current_location.update_lineno(372);
+#line 372 "SocketCANtest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("Writing data on BCM socket: ");
+p__socket__id.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+break;
+}
+}
+if (tmp_38_alt_flag_1 == ALT_MAYBE) {
+current_location.update_lineno(373);
+#line 373 "SocketCANtest.ttcn"
+tmp_38_alt_flag_1 = PTC_component_pt__socketCAN.receive(SocketCAN__Templates::a__SocketCAN__write__data__result(SocketCAN__Templates::a__result(SocketCAN__Types::SocketCAN__Result__code::SocketCAN__ERROR)), NULL, any_compref, NULL, NULL, NULL);
+if (tmp_38_alt_flag_1 == ALT_YES) {
+current_location.update_lineno(374);
+#line 374 "SocketCANtest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("Writing data on BCM socket failed");
+p__socket__id.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(375);
+#line 375 "SocketCANtest.ttcn"
+TTCN_Runtime::setverdict(FAIL);
+break;
+}
+}
+if (tmp_38_alt_flag_2 == ALT_MAYBE) {
+current_location.update_lineno(376);
+#line 376 "SocketCANtest.ttcn"
+tmp_38_alt_flag_2 = t__guard.timeout(NULL);
+if (tmp_38_alt_flag_2 == ALT_YES) {
+current_location.update_lineno(377);
+#line 377 "SocketCANtest.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "timeout!");
+current_location.update_lineno(378);
+#line 378 "SocketCANtest.ttcn"
+TTCN_Runtime::setverdict(FAIL);
+break;
+}
+}
+if (tmp_38_default_flag == ALT_MAYBE) {
+tmp_38_default_flag = TTCN_Default::try_altsteps();
+if (tmp_38_default_flag == ALT_YES || tmp_38_default_flag == ALT_BREAK) break;
+else if (tmp_38_default_flag == ALT_REPEAT) goto tmp_38;
+}
+current_location.update_lineno(370);
+#line 370 "SocketCANtest.ttcn"
+if (tmp_38_alt_flag_0 == ALT_NO && tmp_38_alt_flag_1 == ALT_NO && tmp_38_alt_flag_2 == ALT_NO && tmp_38_default_flag == ALT_NO) TTCN_error("None of the branches can be chosen in the alt statement in file SocketCANtest.ttcn between lines 370 and 379.");
+TTCN_Snapshot::take_new(TRUE);
+}
+}
+}
+
+void start_f__write__data(const COMPONENT& component_reference, const INTEGER& p__socket__id, const Bcm::SocketCAN__bcm__frame& p__bcm__frame)
+{
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_write_data(");
+p__socket__id.log();
+TTCN_Logger::log_event_str(", ");
+p__bcm__frame.log();
+TTCN_Logger::log_event_str(") on component ");
+component_reference.log();
+TTCN_Logger::log_char('.');
+TTCN_Logger::end_event();
+Text_Buf text_buf;
+TTCN_Runtime::prepare_start_component(component_reference, "SocketCANtest", "f_write_data", text_buf);
+p__socket__id.encode_text(text_buf);
+p__bcm__frame.encode_text(text_buf);
+TTCN_Runtime::send_start_component(text_buf);
+}
+
+void f__receive__BCM__message(const INTEGER_template& p__socket__id, const Bcm::SocketCAN__bcm__frame_template& p__BCM__message__expected)
+{
+TTCN_Location current_location("SocketCANtest.ttcn", 382, TTCN_Location::LOCATION_FUNCTION, "f_receive_BCM_message");
+current_location.update_lineno(384);
+#line 384 "SocketCANtest.ttcn"
+SocketCAN__Types::SocketCAN__receive__BCM__message v__result;
+current_location.update_lineno(386);
+#line 386 "SocketCANtest.ttcn"
+TIMER t__guard("t_guard");
+current_location.update_lineno(387);
+#line 387 "SocketCANtest.ttcn"
+t__guard.start(1.0e1);
+current_location.update_lineno(390);
+#line 390 "SocketCANtest.ttcn"
+{
+tmp_39:
+alt_status tmp_39_alt_flag_0 = ALT_MAYBE;
+alt_status tmp_39_alt_flag_1 = ALT_MAYBE;
+alt_status tmp_39_alt_flag_2 = ALT_MAYBE;
+alt_status tmp_39_default_flag = ALT_MAYBE;
+TTCN_Snapshot::take_new(FALSE);
+for ( ; ; ) {
+if (tmp_39_alt_flag_0 == ALT_MAYBE) {
+current_location.update_lineno(391);
+#line 391 "SocketCANtest.ttcn"
+tmp_39_alt_flag_0 = PTC_component_pt__socketCAN.receive(SocketCAN__Templates::a__SocketCAN__receive__BCM__message(p__socket__id, p__BCM__message__expected), &(v__result), any_compref, NULL, NULL, NULL);
+if (tmp_39_alt_flag_0 == ALT_YES) {
+current_location.update_lineno(392);
+#line 392 "SocketCANtest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("SocketCan:Expected frame received");
+v__result.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+break;
+}
+}
+if (tmp_39_alt_flag_1 == ALT_MAYBE) {
+current_location.update_lineno(393);
+#line 393 "SocketCANtest.ttcn"
+tmp_39_alt_flag_1 = PTC_component_pt__socketCAN.receive(SocketCAN__Types::SocketCAN__receive__BCM__message_template(ANY_VALUE), &(v__result), any_compref, NULL, NULL, NULL);
+if (tmp_39_alt_flag_1 == ALT_YES) {
+current_location.update_lineno(394);
+#line 394 "SocketCANtest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("SocketCan:Unexpected frame received!");
+v__result.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(395);
+#line 395 "SocketCANtest.ttcn"
+TTCN_Runtime::setverdict(FAIL);
+break;
+}
+}
+if (tmp_39_alt_flag_2 == ALT_MAYBE) {
+current_location.update_lineno(396);
+#line 396 "SocketCANtest.ttcn"
+tmp_39_alt_flag_2 = t__guard.timeout(NULL);
+if (tmp_39_alt_flag_2 == ALT_YES) {
+current_location.update_lineno(397);
+#line 397 "SocketCANtest.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "timeout!");
+current_location.update_lineno(398);
+#line 398 "SocketCANtest.ttcn"
+TTCN_Runtime::setverdict(FAIL);
+break;
+}
+}
+if (tmp_39_default_flag == ALT_MAYBE) {
+tmp_39_default_flag = TTCN_Default::try_altsteps();
+if (tmp_39_default_flag == ALT_YES || tmp_39_default_flag == ALT_BREAK) break;
+else if (tmp_39_default_flag == ALT_REPEAT) goto tmp_39;
+}
+current_location.update_lineno(390);
+#line 390 "SocketCANtest.ttcn"
+if (tmp_39_alt_flag_0 == ALT_NO && tmp_39_alt_flag_1 == ALT_NO && tmp_39_alt_flag_2 == ALT_NO && tmp_39_default_flag == ALT_NO) TTCN_error("None of the branches can be chosen in the alt statement in file SocketCANtest.ttcn between lines 390 and 399.");
+TTCN_Snapshot::take_new(TRUE);
+}
+}
+}
+
+void start_f__receive__BCM__message(const COMPONENT& component_reference, const INTEGER_template& p__socket__id, const Bcm::SocketCAN__bcm__frame_template& p__BCM__message__expected)
+{
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_receive_BCM_message(");
+p__socket__id.log();
+TTCN_Logger::log_event_str(", ");
+p__BCM__message__expected.log();
+TTCN_Logger::log_event_str(") on component ");
+component_reference.log();
+TTCN_Logger::log_char('.');
+TTCN_Logger::end_event();
+Text_Buf text_buf;
+TTCN_Runtime::prepare_start_component(component_reference, "SocketCANtest", "f_receive_BCM_message", text_buf);
+p__socket__id.encode_text(text_buf);
+p__BCM__message__expected.encode_text(text_buf);
+TTCN_Runtime::send_start_component(text_buf);
+}
+
+SocketCAN__Types::SocketCAN__setsockopt__result f__setsockopt(const INTEGER& p__socket__id, const SocketCAN__Types::SocketCAN__setsockopt__commandu& p__command)
+{
+TTCN_Location current_location("SocketCANtest.ttcn", 402, TTCN_Location::LOCATION_FUNCTION, "f_setsockopt");
+current_location.update_lineno(406);
+#line 406 "SocketCANtest.ttcn"
+SocketCAN__Types::SocketCAN__setsockopt__result v__result;
+current_location.update_lineno(408);
+#line 408 "SocketCANtest.ttcn"
+TIMER t__guard("t_guard");
+current_location.update_lineno(409);
+#line 409 "SocketCANtest.ttcn"
+t__guard.start(1.0e1);
+current_location.update_lineno(411);
+#line 411 "SocketCANtest.ttcn"
+{
+SocketCAN__Types::SocketCAN__setsockopt_template tmp_40;
+tmp_40.id() = p__socket__id;
+tmp_40.command() = p__command;
+PTC_component_pt__socketCAN.send(tmp_40, NULL);
+}
+current_location.update_lineno(412);
+#line 412 "SocketCANtest.ttcn"
+{
+tmp_41:
+alt_status tmp_41_alt_flag_0 = ALT_MAYBE;
+alt_status tmp_41_alt_flag_1 = ALT_MAYBE;
+alt_status tmp_41_alt_flag_2 = ALT_MAYBE;
+alt_status tmp_41_default_flag = ALT_MAYBE;
+TTCN_Snapshot::take_new(FALSE);
+for ( ; ; ) {
+if (tmp_41_alt_flag_0 == ALT_MAYBE) {
+current_location.update_lineno(413);
+#line 413 "SocketCANtest.ttcn"
+tmp_41_alt_flag_0 = PTC_component_pt__socketCAN.receive(SocketCAN__Templates::a__SocketCAN__setsockopt__result(SocketCAN__Templates::a__result(SocketCAN__Types::SocketCAN__Result__code::SocketCAN__SUCCESS)), &(v__result), any_compref, NULL, NULL, NULL);
+if (tmp_41_alt_flag_0 == ALT_YES) {
+current_location.update_lineno(414);
+#line 414 "SocketCANtest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("Writing data");
+p__socket__id.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+break;
+}
+}
+if (tmp_41_alt_flag_1 == ALT_MAYBE) {
+current_location.update_lineno(415);
+#line 415 "SocketCANtest.ttcn"
+tmp_41_alt_flag_1 = PTC_component_pt__socketCAN.receive(SocketCAN__Templates::a__SocketCAN__setsockopt__result(SocketCAN__Templates::a__result(SocketCAN__Types::SocketCAN__Result__code::SocketCAN__ERROR)), NULL, any_compref, NULL, NULL, NULL);
+if (tmp_41_alt_flag_1 == ALT_YES) {
+current_location.update_lineno(416);
+#line 416 "SocketCANtest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("Writing data failed");
+p__socket__id.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(416);
+#line 416 "SocketCANtest.ttcn"
+TTCN_Runtime::setverdict(FAIL);
+break;
+}
+}
+if (tmp_41_alt_flag_2 == ALT_MAYBE) {
+current_location.update_lineno(417);
+#line 417 "SocketCANtest.ttcn"
+tmp_41_alt_flag_2 = t__guard.timeout(NULL);
+if (tmp_41_alt_flag_2 == ALT_YES) {
+current_location.update_lineno(418);
+#line 418 "SocketCANtest.ttcn"
+TTCN_Logger::log_str(TTCN_USER, "timeout!");
+current_location.update_lineno(419);
+#line 419 "SocketCANtest.ttcn"
+TTCN_Runtime::setverdict(FAIL);
+break;
+}
+}
+if (tmp_41_default_flag == ALT_MAYBE) {
+tmp_41_default_flag = TTCN_Default::try_altsteps();
+if (tmp_41_default_flag == ALT_YES || tmp_41_default_flag == ALT_BREAK) break;
+else if (tmp_41_default_flag == ALT_REPEAT) goto tmp_41;
+}
+current_location.update_lineno(412);
+#line 412 "SocketCANtest.ttcn"
+if (tmp_41_alt_flag_0 == ALT_NO && tmp_41_alt_flag_1 == ALT_NO && tmp_41_alt_flag_2 == ALT_NO && tmp_41_default_flag == ALT_NO) TTCN_error("None of the branches can be chosen in the alt statement in file SocketCANtest.ttcn between lines 412 and 421.");
+TTCN_Snapshot::take_new(TRUE);
+}
+}
+current_location.update_lineno(422);
+#line 422 "SocketCANtest.ttcn"
+return v__result;
+}
+
+void start_f__setsockopt(const COMPONENT& component_reference, const INTEGER& p__socket__id, const SocketCAN__Types::SocketCAN__setsockopt__commandu& p__command)
+{
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_setsockopt(");
+p__socket__id.log();
+TTCN_Logger::log_event_str(", ");
+p__command.log();
+TTCN_Logger::log_event_str(") on component ");
+component_reference.log();
+TTCN_Logger::log_char('.');
+TTCN_Logger::end_event();
+Text_Buf text_buf;
+TTCN_Runtime::prepare_start_component(component_reference, "SocketCANtest", "f_setsockopt", text_buf);
+p__socket__id.encode_text(text_buf);
+p__command.encode_text(text_buf);
+TTCN_Runtime::send_start_component(text_buf);
+}
+
+void f__close__socket(const INTEGER& p__socket__id)
+{
+TTCN_Location current_location("SocketCANtest.ttcn", 425, TTCN_Location::LOCATION_FUNCTION, "f_close_socket");
+current_location.update_lineno(427);
+#line 427 "SocketCANtest.ttcn"
+{
+SocketCAN__Types::SocketCAN__close_template tmp_42;
+tmp_42.id() = p__socket__id;
+PTC_component_pt__socketCAN.send(tmp_42, NULL);
+}
+}
+
+void start_f__close__socket(const COMPONENT& component_reference, const INTEGER& p__socket__id)
+{
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_close_socket(");
+p__socket__id.log();
+TTCN_Logger::log_event_str(") on component ");
+component_reference.log();
+TTCN_Logger::log_char('.');
+TTCN_Logger::end_event();
+Text_Buf text_buf;
+TTCN_Runtime::prepare_start_component(component_reference, "SocketCANtest", "f_close_socket", text_buf);
+p__socket__id.encode_text(text_buf);
+TTCN_Runtime::send_start_component(text_buf);
+}
+
+SocketCAN__open__raw__result f__open__raw()
+{
+TTCN_Location current_location("SocketCANtest.ttcn", 430, TTCN_Location::LOCATION_FUNCTION, "f_open_raw");
+current_location.update_lineno(433);
+#line 433 "SocketCANtest.ttcn"
+INTEGER v__socket__id;
+current_location.update_lineno(434);
+#line 434 "SocketCANtest.ttcn"
+v__socket__id = f__open__socket(SocketCAN__open__socket__type::OPEN__CAN__RAW).id();
+current_location.update_lineno(435);
+#line 435 "SocketCANtest.ttcn"
+SocketCAN__Types::SocketCAN__ifr v__ifr;
+current_location.update_lineno(436);
+#line 436 "SocketCANtest.ttcn"
+v__ifr = f__ioctl__get__if__index(v__socket__id).ifr();
+current_location.update_lineno(437);
+#line 437 "SocketCANtest.ttcn"
+SocketCAN__Types::SocketCAN__bind__result v__bind__result;
+current_location.update_lineno(438);
+#line 438 "SocketCANtest.ttcn"
+v__bind__result = f__bind(v__socket__id, const_cast< const SocketCAN__Types::SocketCAN__ifr&>(v__ifr).if__index());
+current_location.update_lineno(440);
+#line 440 "SocketCANtest.ttcn"
+SocketCAN__open__raw__result v__result;
+current_location.update_lineno(441);
+#line 441 "SocketCANtest.ttcn"
+v__result.ifr() = v__ifr;
+v__result.socket__id() = v__socket__id;
+current_location.update_lineno(443);
+#line 443 "SocketCANtest.ttcn"
+return v__result;
+}
+
+void start_f__open__raw(const COMPONENT& component_reference)
+{
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_open_raw(");
+TTCN_Logger::log_event_str(") on component ");
+component_reference.log();
+TTCN_Logger::log_char('.');
+TTCN_Logger::end_event();
+Text_Buf text_buf;
+TTCN_Runtime::prepare_start_component(component_reference, "SocketCANtest", "f_open_raw", text_buf);
+TTCN_Runtime::send_start_component(text_buf);
+}
+
+INTEGER f__open__bcm()
+{
+TTCN_Location current_location("SocketCANtest.ttcn", 446, TTCN_Location::LOCATION_FUNCTION, "f_open_bcm");
+current_location.update_lineno(449);
+#line 449 "SocketCANtest.ttcn"
+INTEGER v__socket__id;
+current_location.update_lineno(450);
+#line 450 "SocketCANtest.ttcn"
+v__socket__id = f__open__socket(SocketCAN__open__socket__type::OPEN__CAN__BCM).id();
+current_location.update_lineno(451);
+#line 451 "SocketCANtest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+TTCN_Logger::log_event_str("Opening BCM socket_id");
+v__socket__id.log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(452);
+#line 452 "SocketCANtest.ttcn"
+SocketCAN__Types::SocketCAN__ifr v__ifr;
+current_location.update_lineno(453);
+#line 453 "SocketCANtest.ttcn"
+v__ifr = f__ioctl__get__if__index(v__socket__id).ifr();
+current_location.update_lineno(454);
+#line 454 "SocketCANtest.ttcn"
+SocketCAN__Types::SocketCAN__connect__result v__connect__result;
+current_location.update_lineno(455);
+#line 455 "SocketCANtest.ttcn"
+v__connect__result = f__connect(v__socket__id, const_cast< const SocketCAN__Types::SocketCAN__ifr&>(v__ifr).if__index());
+current_location.update_lineno(457);
+#line 457 "SocketCANtest.ttcn"
+return v__socket__id;
+}
+
+void start_f__open__bcm(const COMPONENT& component_reference)
+{
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_open_bcm(");
+TTCN_Logger::log_event_str(") on component ");
+component_reference.log();
+TTCN_Logger::log_char('.');
+TTCN_Logger::end_event();
+Text_Buf text_buf;
+TTCN_Runtime::prepare_start_component(component_reference, "SocketCANtest", "f_open_bcm", text_buf);
+TTCN_Runtime::send_start_component(text_buf);
+}
+
+void f__ptc__RawSendInitiator(const e__Phase& p__phase, const SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame& v__frame__send)
+{
+TTCN_Location current_location("SocketCANtest.ttcn", 460, TTCN_Location::LOCATION_FUNCTION, "f_ptc_RawSendInitiator");
+current_location.update_lineno(462);
+#line 462 "SocketCANtest.ttcn"
+{
+Map_Params tmp_50(0);
+TTCN_Runtime::map_port(self, PTC_component_pt__socketCAN.get_name(), SYSTEM_COMPREF, "pt_socketCAN", tmp_50);
+}
+current_location.update_lineno(463);
+#line 463 "SocketCANtest.ttcn"
+INTEGER v__socket__id;
+current_location.update_lineno(464);
+#line 464 "SocketCANtest.ttcn"
+SocketCAN__Types::SocketCAN__ifr v__ifr;
+current_location.update_lineno(465);
+#line 465 "SocketCANtest.ttcn"
+SocketCAN__Types::SocketCAN__send__data__ifu v__ifu;
+current_location.update_lineno(467);
+#line 467 "SocketCANtest.ttcn"
+alt__awaitPhaseStartReq(e__Phase::e__open__socket);
+current_location.update_lineno(468);
+#line 468 "SocketCANtest.ttcn"
+SocketCAN__open__raw__result res;
+current_location.update_lineno(469);
+#line 469 "SocketCANtest.ttcn"
+res = f__open__raw();
+current_location.update_lineno(470);
+#line 470 "SocketCANtest.ttcn"
+v__socket__id = const_cast< const SocketCAN__open__raw__result&>(res).socket__id();
+current_location.update_lineno(471);
+#line 471 "SocketCANtest.ttcn"
+v__ifr = const_cast< const SocketCAN__open__raw__result&>(res).ifr();
+current_location.update_lineno(472);
+#line 472 "SocketCANtest.ttcn"
+v__ifu.if__name() = const_cast< const SocketCAN__Types::SocketCAN__ifr&>(v__ifr).if__name();
+current_location.update_lineno(473);
+#line 473 "SocketCANtest.ttcn"
+f__sendPhaseEndInd();
+current_location.update_lineno(475);
+#line 475 "SocketCANtest.ttcn"
+alt__awaitPhaseStartReq(p__phase);
+current_location.update_lineno(476);
+#line 476 "SocketCANtest.ttcn"
+SocketCAN__Types::SocketCAN__send__data__result send__data__result;
+current_location.update_lineno(477);
+#line 477 "SocketCANtest.ttcn"
+send__data__result = f__send__data(v__socket__id, v__ifu, v__frame__send);
+current_location.update_lineno(480);
+#line 480 "SocketCANtest.ttcn"
+f__sendPhaseEndInd();
+current_location.update_lineno(482);
+#line 482 "SocketCANtest.ttcn"
+alt__awaitPhaseStartReq(e__Phase::e__close__socket);
+current_location.update_lineno(483);
+#line 483 "SocketCANtest.ttcn"
+f__close__socket(v__socket__id);
+current_location.update_lineno(484);
+#line 484 "SocketCANtest.ttcn"
+{
+Map_Params tmp_56(0);
+TTCN_Runtime::unmap_port(self, PTC_component_pt__socketCAN.get_name(), SYSTEM_COMPREF, "pt_socketCAN", tmp_56);
+}
+current_location.update_lineno(485);
+#line 485 "SocketCANtest.ttcn"
+TTCN_Runtime::setverdict(PASS);
+current_location.update_lineno(486);
+#line 486 "SocketCANtest.ttcn"
+f__sendPhaseEndInd();
+}
+
+void start_f__ptc__RawSendInitiator(const COMPONENT& component_reference, const e__Phase& p__phase, const SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame& v__frame__send)
+{
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_ptc_RawSendInitiator(");
+p__phase.log();
+TTCN_Logger::log_event_str(", ");
+v__frame__send.log();
+TTCN_Logger::log_event_str(") on component ");
+component_reference.log();
+TTCN_Logger::log_char('.');
+TTCN_Logger::end_event();
+Text_Buf text_buf;
+TTCN_Runtime::prepare_start_component(component_reference, "SocketCANtest", "f_ptc_RawSendInitiator", text_buf);
+p__phase.encode_text(text_buf);
+v__frame__send.encode_text(text_buf);
+TTCN_Runtime::send_start_component(text_buf);
+}
+
+void f__ptc__RawFrameReceiver(const e__Phase& p__phase, const SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame_template& p__frame__expected)
+{
+TTCN_Location current_location("SocketCANtest.ttcn", 489, TTCN_Location::LOCATION_FUNCTION, "f_ptc_RawFrameReceiver");
+current_location.update_lineno(491);
+#line 491 "SocketCANtest.ttcn"
+{
+Map_Params tmp_57(0);
+TTCN_Runtime::map_port(self, PTC_component_pt__socketCAN.get_name(), SYSTEM_COMPREF, "pt_socketCAN", tmp_57);
+}
+current_location.update_lineno(492);
+#line 492 "SocketCANtest.ttcn"
+INTEGER v__socket__raw__id;
+current_location.update_lineno(493);
+#line 493 "SocketCANtest.ttcn"
+SocketCAN__Types::SocketCAN__ifr v__ifr;
+current_location.update_lineno(494);
+#line 494 "SocketCANtest.ttcn"
+SocketCAN__Types::SocketCAN__send__data__ifu v__ifu;
+current_location.update_lineno(496);
+#line 496 "SocketCANtest.ttcn"
+alt__awaitPhaseStartReq(e__Phase::e__open__socket);
+current_location.update_lineno(497);
+#line 497 "SocketCANtest.ttcn"
+SocketCAN__open__raw__result res;
+current_location.update_lineno(498);
+#line 498 "SocketCANtest.ttcn"
+res = f__open__raw();
+current_location.update_lineno(499);
+#line 499 "SocketCANtest.ttcn"
+v__socket__raw__id = const_cast< const SocketCAN__open__raw__result&>(res).socket__id();
+current_location.update_lineno(500);
+#line 500 "SocketCANtest.ttcn"
+v__ifr = const_cast< const SocketCAN__open__raw__result&>(res).ifr();
+current_location.update_lineno(501);
+#line 501 "SocketCANtest.ttcn"
+v__ifu.if__name() = const_cast< const SocketCAN__Types::SocketCAN__ifr&>(v__ifr).if__name();
+current_location.update_lineno(502);
+#line 502 "SocketCANtest.ttcn"
+f__sendPhaseEndInd();
+current_location.update_lineno(504);
+#line 504 "SocketCANtest.ttcn"
+alt__awaitPhaseStartReq(p__phase);
+current_location.update_lineno(505);
+#line 505 "SocketCANtest.ttcn"
+f__receive__data(v__socket__raw__id, p__frame__expected);
+current_location.update_lineno(506);
+#line 506 "SocketCANtest.ttcn"
+f__sendPhaseEndInd();
+current_location.update_lineno(508);
+#line 508 "SocketCANtest.ttcn"
+alt__awaitPhaseStartReq(e__Phase::e__close__socket);
+current_location.update_lineno(509);
+#line 509 "SocketCANtest.ttcn"
+f__close__socket(v__socket__raw__id);
+current_location.update_lineno(510);
+#line 510 "SocketCANtest.ttcn"
+{
+Map_Params tmp_62(0);
+TTCN_Runtime::unmap_port(self, PTC_component_pt__socketCAN.get_name(), SYSTEM_COMPREF, "pt_socketCAN", tmp_62);
+}
+current_location.update_lineno(511);
+#line 511 "SocketCANtest.ttcn"
+TTCN_Runtime::setverdict(PASS);
+current_location.update_lineno(512);
+#line 512 "SocketCANtest.ttcn"
+f__sendPhaseEndInd();
+}
+
+void start_f__ptc__RawFrameReceiver(const COMPONENT& component_reference, const e__Phase& p__phase, const SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame_template& p__frame__expected)
+{
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_ptc_RawFrameReceiver(");
+p__phase.log();
+TTCN_Logger::log_event_str(", ");
+p__frame__expected.log();
+TTCN_Logger::log_event_str(") on component ");
+component_reference.log();
+TTCN_Logger::log_char('.');
+TTCN_Logger::end_event();
+Text_Buf text_buf;
+TTCN_Runtime::prepare_start_component(component_reference, "SocketCANtest", "f_ptc_RawFrameReceiver", text_buf);
+p__phase.encode_text(text_buf);
+p__frame__expected.encode_text(text_buf);
+TTCN_Runtime::send_start_component(text_buf);
+}
+
+void f__ptc__RawFrameSequenceReceiver(const e__Phase& p__sequence__expected__phase, const SocketCAN__CAN__or__CAN__FD__frames_template& p__frame__sequence__expected, const e__Phase& p__no__further__frames__expected__phase, const FLOAT& p__timeout__period)
+{
+TTCN_Location current_location("SocketCANtest.ttcn", 515, TTCN_Location::LOCATION_FUNCTION, "f_ptc_RawFrameSequenceReceiver");
+current_location.update_lineno(520);
+#line 520 "SocketCANtest.ttcn"
+{
+Map_Params tmp_63(0);
+TTCN_Runtime::map_port(self, PTC_component_pt__socketCAN.get_name(), SYSTEM_COMPREF, "pt_socketCAN", tmp_63);
+}
+current_location.update_lineno(521);
+#line 521 "SocketCANtest.ttcn"
+INTEGER v__socket__raw__id;
+current_location.update_lineno(522);
+#line 522 "SocketCANtest.ttcn"
+SocketCAN__Types::SocketCAN__ifr v__ifr;
+current_location.update_lineno(523);
+#line 523 "SocketCANtest.ttcn"
+SocketCAN__Types::SocketCAN__send__data__ifu v__ifu;
+current_location.update_lineno(525);
+#line 525 "SocketCANtest.ttcn"
+alt__awaitPhaseStartReq(e__Phase::e__open__socket);
+current_location.update_lineno(526);
+#line 526 "SocketCANtest.ttcn"
+SocketCAN__open__raw__result res;
+current_location.update_lineno(527);
+#line 527 "SocketCANtest.ttcn"
+res = f__open__raw();
+current_location.update_lineno(528);
+#line 528 "SocketCANtest.ttcn"
+v__socket__raw__id = const_cast< const SocketCAN__open__raw__result&>(res).socket__id();
+current_location.update_lineno(529);
+#line 529 "SocketCANtest.ttcn"
+v__ifr = const_cast< const SocketCAN__open__raw__result&>(res).ifr();
+current_location.update_lineno(530);
+#line 530 "SocketCANtest.ttcn"
+v__ifu.if__name() = const_cast< const SocketCAN__Types::SocketCAN__ifr&>(v__ifr).if__name();
+current_location.update_lineno(531);
+#line 531 "SocketCANtest.ttcn"
+f__sendPhaseEndInd();
+current_location.update_lineno(533);
+#line 533 "SocketCANtest.ttcn"
+alt__awaitPhaseStartReq(p__sequence__expected__phase);
+current_location.update_lineno(534);
+#line 534 "SocketCANtest.ttcn"
+INTEGER v__i;
+current_location.update_lineno(535);
+#line 535 "SocketCANtest.ttcn"
+v__i = 0;
+current_location.update_lineno(535);
+#line 535 "SocketCANtest.ttcn"
+for ( ; ; ) {
+current_location.update_lineno(535);
+#line 535 "SocketCANtest.ttcn"
+if (!(v__i < p__frame__sequence__expected.lengthof())) break;
+current_location.update_lineno(536);
+#line 536 "SocketCANtest.ttcn"
+f__receive__data(v__socket__raw__id, p__frame__sequence__expected[v__i]);
+current_location.update_lineno(535);
+#line 535 "SocketCANtest.ttcn"
+{
+INTEGER tmp_69;
+++v__i;
+}
+}
+current_location.update_lineno(538);
+#line 538 "SocketCANtest.ttcn"
+f__sendPhaseEndInd();
+current_location.update_lineno(540);
+#line 540 "SocketCANtest.ttcn"
+alt__awaitPhaseStartReq(p__no__further__frames__expected__phase);
+current_location.update_lineno(541);
+#line 541 "SocketCANtest.ttcn"
+f__receive__no__data__but__timeout(v__socket__raw__id, p__timeout__period);
+current_location.update_lineno(542);
+#line 542 "SocketCANtest.ttcn"
+f__sendPhaseEndInd();
+current_location.update_lineno(544);
+#line 544 "SocketCANtest.ttcn"
+alt__awaitPhaseStartReq(e__Phase::e__close__socket);
+current_location.update_lineno(545);
+#line 545 "SocketCANtest.ttcn"
+f__close__socket(v__socket__raw__id);
+current_location.update_lineno(546);
+#line 546 "SocketCANtest.ttcn"
+{
+Map_Params tmp_70(0);
+TTCN_Runtime::unmap_port(self, PTC_component_pt__socketCAN.get_name(), SYSTEM_COMPREF, "pt_socketCAN", tmp_70);
+}
+current_location.update_lineno(547);
+#line 547 "SocketCANtest.ttcn"
+TTCN_Runtime::setverdict(PASS);
+current_location.update_lineno(548);
+#line 548 "SocketCANtest.ttcn"
+f__sendPhaseEndInd();
+}
+
+void start_f__ptc__RawFrameSequenceReceiver(const COMPONENT& component_reference, const e__Phase& p__sequence__expected__phase, const SocketCAN__CAN__or__CAN__FD__frames_template& p__frame__sequence__expected, const e__Phase& p__no__further__frames__expected__phase, const FLOAT& p__timeout__period)
+{
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_ptc_RawFrameSequenceReceiver(");
+p__sequence__expected__phase.log();
+TTCN_Logger::log_event_str(", ");
+p__frame__sequence__expected.log();
+TTCN_Logger::log_event_str(", ");
+p__no__further__frames__expected__phase.log();
+TTCN_Logger::log_event_str(", ");
+p__timeout__period.log();
+TTCN_Logger::log_event_str(") on component ");
+component_reference.log();
+TTCN_Logger::log_char('.');
+TTCN_Logger::end_event();
+Text_Buf text_buf;
+TTCN_Runtime::prepare_start_component(component_reference, "SocketCANtest", "f_ptc_RawFrameSequenceReceiver", text_buf);
+p__sequence__expected__phase.encode_text(text_buf);
+p__frame__sequence__expected.encode_text(text_buf);
+p__no__further__frames__expected__phase.encode_text(text_buf);
+p__timeout__period.encode_text(text_buf);
+TTCN_Runtime::send_start_component(text_buf);
+}
+
+void f__ptc__bcmComandSendInitiator(const BCM__cmds& p__cmd__list)
+{
+TTCN_Location current_location("SocketCANtest.ttcn", 551, TTCN_Location::LOCATION_FUNCTION, "f_ptc_bcmComandSendInitiator");
+current_location.update_lineno(552);
+#line 552 "SocketCANtest.ttcn"
+{
+Map_Params tmp_71(0);
+TTCN_Runtime::map_port(self, PTC_component_pt__socketCAN.get_name(), SYSTEM_COMPREF, "pt_socketCAN", tmp_71);
+}
+current_location.update_lineno(553);
+#line 553 "SocketCANtest.ttcn"
+INTEGER v__socket__bcm__id;
+current_location.update_lineno(555);
+#line 555 "SocketCANtest.ttcn"
+alt__awaitPhaseStartReq(e__Phase::e__open__socket);
+current_location.update_lineno(556);
+#line 556 "SocketCANtest.ttcn"
+v__socket__bcm__id = f__open__bcm();
+current_location.update_lineno(557);
+#line 557 "SocketCANtest.ttcn"
+f__sendPhaseEndInd();
+current_location.update_lineno(558);
+#line 558 "SocketCANtest.ttcn"
+INTEGER v__i;
+current_location.update_lineno(559);
+#line 559 "SocketCANtest.ttcn"
+v__i = 0;
+current_location.update_lineno(559);
+#line 559 "SocketCANtest.ttcn"
+for ( ; ; ) {
+current_location.update_lineno(559);
+#line 559 "SocketCANtest.ttcn"
+if (!(v__i < p__cmd__list.lengthof())) break;
+current_location.update_lineno(560);
+#line 560 "SocketCANtest.ttcn"
+alt__awaitPhaseStartReq(const_cast< const BCM__cmds&>(p__cmd__list)[v__i].phase());
+current_location.update_lineno(562);
+#line 562 "SocketCANtest.ttcn"
+f__write__data(v__socket__bcm__id, const_cast< const BCM__cmds&>(p__cmd__list)[v__i].bcm__frame());
+current_location.update_lineno(563);
+#line 563 "SocketCANtest.ttcn"
+f__sendPhaseEndInd();
+current_location.update_lineno(559);
+#line 559 "SocketCANtest.ttcn"
+{
+INTEGER tmp_74;
+++v__i;
+}
+}
+current_location.update_lineno(566);
+#line 566 "SocketCANtest.ttcn"
+alt__awaitPhaseStartReq(e__Phase::e__close__socket);
+current_location.update_lineno(567);
+#line 567 "SocketCANtest.ttcn"
+f__close__socket(v__socket__bcm__id);
+current_location.update_lineno(568);
+#line 568 "SocketCANtest.ttcn"
+{
+Map_Params tmp_75(0);
+TTCN_Runtime::unmap_port(self, PTC_component_pt__socketCAN.get_name(), SYSTEM_COMPREF, "pt_socketCAN", tmp_75);
+}
+current_location.update_lineno(569);
+#line 569 "SocketCANtest.ttcn"
+TTCN_Runtime::setverdict(PASS);
+current_location.update_lineno(570);
+#line 570 "SocketCANtest.ttcn"
+f__sendPhaseEndInd();
+}
+
+void start_f__ptc__bcmComandSendInitiator(const COMPONENT& component_reference, const BCM__cmds& p__cmd__list)
+{
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_ptc_bcmComandSendInitiator(");
+p__cmd__list.log();
+TTCN_Logger::log_event_str(") on component ");
+component_reference.log();
+TTCN_Logger::log_char('.');
+TTCN_Logger::end_event();
+Text_Buf text_buf;
+TTCN_Runtime::prepare_start_component(component_reference, "SocketCANtest", "f_ptc_bcmComandSendInitiator", text_buf);
+p__cmd__list.encode_text(text_buf);
+TTCN_Runtime::send_start_component(text_buf);
+}
+
+void f__ptc__bcmComandSendReceiveInitiator(const BCM__cmds& p__cmd__list)
+{
+TTCN_Location current_location("SocketCANtest.ttcn", 574, TTCN_Location::LOCATION_FUNCTION, "f_ptc_bcmComandSendReceiveInitiator");
+current_location.update_lineno(575);
+#line 575 "SocketCANtest.ttcn"
+{
+Map_Params tmp_76(0);
+TTCN_Runtime::map_port(self, PTC_component_pt__socketCAN.get_name(), SYSTEM_COMPREF, "pt_socketCAN", tmp_76);
+}
+current_location.update_lineno(576);
+#line 576 "SocketCANtest.ttcn"
+INTEGER v__socket__bcm__id;
+current_location.update_lineno(578);
+#line 578 "SocketCANtest.ttcn"
+alt__awaitPhaseStartReq(e__Phase::e__open__socket);
+current_location.update_lineno(579);
+#line 579 "SocketCANtest.ttcn"
+v__socket__bcm__id = f__open__bcm();
+current_location.update_lineno(580);
+#line 580 "SocketCANtest.ttcn"
+f__sendPhaseEndInd();
+current_location.update_lineno(581);
+#line 581 "SocketCANtest.ttcn"
+INTEGER v__i;
+current_location.update_lineno(582);
+#line 582 "SocketCANtest.ttcn"
+v__i = 0;
+current_location.update_lineno(582);
+#line 582 "SocketCANtest.ttcn"
+for ( ; ; ) {
+current_location.update_lineno(582);
+#line 582 "SocketCANtest.ttcn"
+if (!(v__i < p__cmd__list.lengthof())) break;
+current_location.update_lineno(583);
+#line 583 "SocketCANtest.ttcn"
+alt__awaitPhaseStartReq(const_cast< const BCM__cmds&>(p__cmd__list)[v__i].phase());
+current_location.update_lineno(585);
+#line 585 "SocketCANtest.ttcn"
+f__write__data(v__socket__bcm__id, const_cast< const BCM__cmds&>(p__cmd__list)[v__i].bcm__frame());
+current_location.update_lineno(586);
+#line 586 "SocketCANtest.ttcn"
+f__receive__BCM__message(INTEGER_template(v__socket__bcm__id), Bcm::SocketCAN__bcm__frame_template(ANY_VALUE));
+current_location.update_lineno(587);
+#line 587 "SocketCANtest.ttcn"
+f__sendPhaseEndInd();
+current_location.update_lineno(582);
+#line 582 "SocketCANtest.ttcn"
+{
+INTEGER tmp_79;
+++v__i;
+}
+}
+current_location.update_lineno(590);
+#line 590 "SocketCANtest.ttcn"
+alt__awaitPhaseStartReq(e__Phase::e__close__socket);
+current_location.update_lineno(591);
+#line 591 "SocketCANtest.ttcn"
+f__close__socket(v__socket__bcm__id);
+current_location.update_lineno(592);
+#line 592 "SocketCANtest.ttcn"
+{
+Map_Params tmp_80(0);
+TTCN_Runtime::unmap_port(self, PTC_component_pt__socketCAN.get_name(), SYSTEM_COMPREF, "pt_socketCAN", tmp_80);
+}
+current_location.update_lineno(593);
+#line 593 "SocketCANtest.ttcn"
+TTCN_Runtime::setverdict(PASS);
+current_location.update_lineno(594);
+#line 594 "SocketCANtest.ttcn"
+f__sendPhaseEndInd();
+}
+
+void start_f__ptc__bcmComandSendReceiveInitiator(const COMPONENT& component_reference, const BCM__cmds& p__cmd__list)
+{
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_ptc_bcmComandSendReceiveInitiator(");
+p__cmd__list.log();
+TTCN_Logger::log_event_str(") on component ");
+component_reference.log();
+TTCN_Logger::log_char('.');
+TTCN_Logger::end_event();
+Text_Buf text_buf;
+TTCN_Runtime::prepare_start_component(component_reference, "SocketCANtest", "f_ptc_bcmComandSendReceiveInitiator", text_buf);
+p__cmd__list.encode_text(text_buf);
+TTCN_Runtime::send_start_component(text_buf);
+}
+
+void f__ptc__bcmSendInitiator(const e__Phase& p__phase, const Bcm::SocketCAN__bcm__frame& p__bcm__frame)
+{
+TTCN_Location current_location("SocketCANtest.ttcn", 597, TTCN_Location::LOCATION_FUNCTION, "f_ptc_bcmSendInitiator");
+current_location.update_lineno(599);
+#line 599 "SocketCANtest.ttcn"
+{
+Map_Params tmp_81(0);
+TTCN_Runtime::map_port(self, PTC_component_pt__socketCAN.get_name(), SYSTEM_COMPREF, "pt_socketCAN", tmp_81);
+}
+current_location.update_lineno(600);
+#line 600 "SocketCANtest.ttcn"
+INTEGER v__socket__bcm__id;
+current_location.update_lineno(602);
+#line 602 "SocketCANtest.ttcn"
+alt__awaitPhaseStartReq(e__Phase::e__open__socket);
+current_location.update_lineno(603);
+#line 603 "SocketCANtest.ttcn"
+v__socket__bcm__id = f__open__bcm();
+current_location.update_lineno(604);
+#line 604 "SocketCANtest.ttcn"
+f__sendPhaseEndInd();
+current_location.update_lineno(606);
+#line 606 "SocketCANtest.ttcn"
+alt__awaitPhaseStartReq(p__phase);
+current_location.update_lineno(608);
+#line 608 "SocketCANtest.ttcn"
+f__write__data(v__socket__bcm__id, p__bcm__frame);
+current_location.update_lineno(609);
+#line 609 "SocketCANtest.ttcn"
+f__sendPhaseEndInd();
+current_location.update_lineno(611);
+#line 611 "SocketCANtest.ttcn"
+alt__awaitPhaseStartReq(e__Phase::e__close__socket);
+current_location.update_lineno(612);
+#line 612 "SocketCANtest.ttcn"
+f__close__socket(v__socket__bcm__id);
+current_location.update_lineno(613);
+#line 613 "SocketCANtest.ttcn"
+{
+Map_Params tmp_83(0);
+TTCN_Runtime::unmap_port(self, PTC_component_pt__socketCAN.get_name(), SYSTEM_COMPREF, "pt_socketCAN", tmp_83);
+}
+current_location.update_lineno(614);
+#line 614 "SocketCANtest.ttcn"
+TTCN_Runtime::setverdict(PASS);
+current_location.update_lineno(615);
+#line 615 "SocketCANtest.ttcn"
+f__sendPhaseEndInd();
+}
+
+void start_f__ptc__bcmSendInitiator(const COMPONENT& component_reference, const e__Phase& p__phase, const Bcm::SocketCAN__bcm__frame& p__bcm__frame)
+{
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_ptc_bcmSendInitiator(");
+p__phase.log();
+TTCN_Logger::log_event_str(", ");
+p__bcm__frame.log();
+TTCN_Logger::log_event_str(") on component ");
+component_reference.log();
+TTCN_Logger::log_char('.');
+TTCN_Logger::end_event();
+Text_Buf text_buf;
+TTCN_Runtime::prepare_start_component(component_reference, "SocketCANtest", "f_ptc_bcmSendInitiator", text_buf);
+p__phase.encode_text(text_buf);
+p__bcm__frame.encode_text(text_buf);
+TTCN_Runtime::send_start_component(text_buf);
+}
+
+void f__raw__setsockopt(const e__Phase& p__phase, const SocketCAN__Types::SocketCAN__setsockopt__commandu& p__setsockopt__command)
+{
+TTCN_Location current_location("SocketCANtest.ttcn", 618, TTCN_Location::LOCATION_FUNCTION, "f_raw_setsockopt");
+current_location.update_lineno(620);
+#line 620 "SocketCANtest.ttcn"
+{
+Map_Params tmp_84(0);
+TTCN_Runtime::map_port(self, PTC_component_pt__socketCAN.get_name(), SYSTEM_COMPREF, "pt_socketCAN", tmp_84);
+}
+current_location.update_lineno(621);
+#line 621 "SocketCANtest.ttcn"
+INTEGER v__socket__id;
+current_location.update_lineno(622);
+#line 622 "SocketCANtest.ttcn"
+SocketCAN__Types::SocketCAN__ifr v__ifr;
+current_location.update_lineno(623);
+#line 623 "SocketCANtest.ttcn"
+SocketCAN__Types::SocketCAN__send__data__ifu v__ifu;
+current_location.update_lineno(625);
+#line 625 "SocketCANtest.ttcn"
+alt__awaitPhaseStartReq(e__Phase::e__open__socket);
+current_location.update_lineno(626);
+#line 626 "SocketCANtest.ttcn"
+SocketCAN__open__raw__result res;
+current_location.update_lineno(627);
+#line 627 "SocketCANtest.ttcn"
+res = f__open__raw();
+current_location.update_lineno(628);
+#line 628 "SocketCANtest.ttcn"
+v__socket__id = const_cast< const SocketCAN__open__raw__result&>(res).socket__id();
+current_location.update_lineno(629);
+#line 629 "SocketCANtest.ttcn"
+v__ifr = const_cast< const SocketCAN__open__raw__result&>(res).ifr();
+current_location.update_lineno(630);
+#line 630 "SocketCANtest.ttcn"
+v__ifu.if__name() = const_cast< const SocketCAN__Types::SocketCAN__ifr&>(v__ifr).if__name();
+current_location.update_lineno(631);
+#line 631 "SocketCANtest.ttcn"
+f__sendPhaseEndInd();
+current_location.update_lineno(633);
+#line 633 "SocketCANtest.ttcn"
+alt__awaitPhaseStartReq(p__phase);
+current_location.update_lineno(635);
+#line 635 "SocketCANtest.ttcn"
+SocketCAN__Types::SocketCAN__setsockopt__result v__setsockopt__result;
+current_location.update_lineno(638);
+#line 638 "SocketCANtest.ttcn"
+v__setsockopt__result = f__setsockopt(v__socket__id, p__setsockopt__command);
+current_location.update_lineno(639);
+#line 639 "SocketCANtest.ttcn"
+f__sendPhaseEndInd();
+current_location.update_lineno(641);
+#line 641 "SocketCANtest.ttcn"
+alt__awaitPhaseStartReq(e__Phase::e__close__socket);
+current_location.update_lineno(642);
+#line 642 "SocketCANtest.ttcn"
+f__close__socket(v__socket__id);
+current_location.update_lineno(643);
+#line 643 "SocketCANtest.ttcn"
+{
+Map_Params tmp_90(0);
+TTCN_Runtime::unmap_port(self, PTC_component_pt__socketCAN.get_name(), SYSTEM_COMPREF, "pt_socketCAN", tmp_90);
+}
+current_location.update_lineno(644);
+#line 644 "SocketCANtest.ttcn"
+TTCN_Runtime::setverdict(PASS);
+current_location.update_lineno(645);
+#line 645 "SocketCANtest.ttcn"
+f__sendPhaseEndInd();
+}
+
+void start_f__raw__setsockopt(const COMPONENT& component_reference, const e__Phase& p__phase, const SocketCAN__Types::SocketCAN__setsockopt__commandu& p__setsockopt__command)
+{
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_raw_setsockopt(");
+p__phase.log();
+TTCN_Logger::log_event_str(", ");
+p__setsockopt__command.log();
+TTCN_Logger::log_event_str(") on component ");
+component_reference.log();
+TTCN_Logger::log_char('.');
+TTCN_Logger::end_event();
+Text_Buf text_buf;
+TTCN_Runtime::prepare_start_component(component_reference, "SocketCANtest", "f_raw_setsockopt", text_buf);
+p__phase.encode_text(text_buf);
+p__setsockopt__command.encode_text(text_buf);
+TTCN_Runtime::send_start_component(text_buf);
+}
+
+
+/* Bodies of static functions */
+
+static void pre_init_module()
+{
+TTCN_Location current_location("SocketCANtest.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "SocketCANtest");
+SocketCAN__PortType::module_object.pre_init_module();
+SocketCAN__Templates::module_object.pre_init_module();
+current_location.update_lineno(23);
+#line 23 "SocketCANtest.ttcn"
+const_c__guard = 1.0e1;
+current_location.update_lineno(61);
+#line 61 "SocketCANtest.ttcn"
+const_c__firstPhase = e__Phase::e__open__socket;
+current_location.update_lineno(62);
+#line 62 "SocketCANtest.ttcn"
+const_c__testcase__complete = e__Phase::e__testcase__complete;
+module_object.add_altstep("alt_awaitPhaseStartReq", (genericfunc_t)&alt__awaitPhaseStartReq_instance, (genericfunc_t )&activate_alt__awaitPhaseStartReq, (genericfunc_t )&alt__awaitPhaseStartReq);
+module_object.add_function("f_startPhase", (genericfunc_t)&f__startPhase, (genericfunc_t)&start_f__startPhase);
+module_object.add_function("f_incPTCPhase", (genericfunc_t)&f__incPTCPhase, (genericfunc_t)&start_f__incPTCPhase);
+module_object.add_function("f_sendPhaseEndInd", (genericfunc_t)&f__sendPhaseEndInd, (genericfunc_t)&start_f__sendPhaseEndInd);
+module_object.add_function("f_addSyncSlaveSet", (genericfunc_t)&f__addSyncSlaveSet, NULL);
+module_object.add_function("f_incMTCPhase", (genericfunc_t)&f__incMTCPhase, (genericfunc_t)&start_f__incMTCPhase);
+module_object.add_function("f_awaitEndPhase", (genericfunc_t)&f__awaitEndPhase, (genericfunc_t)&start_f__awaitEndPhase);
+module_object.add_function("f_open_socket", (genericfunc_t)&f__open__socket, (genericfunc_t)&start_f__open__socket);
+module_object.add_function("f_ioctl_get_if_index", (genericfunc_t)&f__ioctl__get__if__index, (genericfunc_t)&start_f__ioctl__get__if__index);
+module_object.add_function("f_connect", (genericfunc_t)&f__connect, (genericfunc_t)&start_f__connect);
+module_object.add_function("f_bind", (genericfunc_t)&f__bind, (genericfunc_t)&start_f__bind);
+module_object.add_function("f_send_data", (genericfunc_t)&f__send__data, (genericfunc_t)&start_f__send__data);
+module_object.add_function("f_receive_data", (genericfunc_t)&f__receive__data, (genericfunc_t)&start_f__receive__data);
+module_object.add_function("f_receive_no_data_but_timeout", (genericfunc_t)&f__receive__no__data__but__timeout, (genericfunc_t)&start_f__receive__no__data__but__timeout);
+module_object.add_function("f_write_data", (genericfunc_t)&f__write__data, (genericfunc_t)&start_f__write__data);
+module_object.add_function("f_receive_BCM_message", (genericfunc_t)&f__receive__BCM__message, (genericfunc_t)&start_f__receive__BCM__message);
+module_object.add_function("f_setsockopt", (genericfunc_t)&f__setsockopt, (genericfunc_t)&start_f__setsockopt);
+module_object.add_function("f_close_socket", (genericfunc_t)&f__close__socket, (genericfunc_t)&start_f__close__socket);
+module_object.add_function("f_open_raw", (genericfunc_t)&f__open__raw, (genericfunc_t)&start_f__open__raw);
+module_object.add_function("f_open_bcm", (genericfunc_t)&f__open__bcm, (genericfunc_t)&start_f__open__bcm);
+module_object.add_function("f_ptc_RawSendInitiator", (genericfunc_t)&f__ptc__RawSendInitiator, (genericfunc_t)&start_f__ptc__RawSendInitiator);
+module_object.add_function("f_ptc_RawFrameReceiver", (genericfunc_t)&f__ptc__RawFrameReceiver, (genericfunc_t)&start_f__ptc__RawFrameReceiver);
+module_object.add_function("f_ptc_RawFrameSequenceReceiver", (genericfunc_t)&f__ptc__RawFrameSequenceReceiver, (genericfunc_t)&start_f__ptc__RawFrameSequenceReceiver);
+module_object.add_function("f_ptc_bcmComandSendInitiator", (genericfunc_t)&f__ptc__bcmComandSendInitiator, (genericfunc_t)&start_f__ptc__bcmComandSendInitiator);
+module_object.add_function("f_ptc_bcmComandSendReceiveInitiator", (genericfunc_t)&f__ptc__bcmComandSendReceiveInitiator, (genericfunc_t)&start_f__ptc__bcmComandSendReceiveInitiator);
+module_object.add_function("f_ptc_bcmSendInitiator", (genericfunc_t)&f__ptc__bcmSendInitiator, (genericfunc_t)&start_f__ptc__bcmSendInitiator);
+module_object.add_function("f_raw_setsockopt", (genericfunc_t)&f__raw__setsockopt, (genericfunc_t)&start_f__raw__setsockopt);
+}
+
+static void post_init_module()
+{
+TTCN_Location current_location("SocketCANtest.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "SocketCANtest");
+SocketCAN__PortType::module_object.post_init_module();
+SocketCAN__Templates::module_object.post_init_module();
+}
+
+static boolean init_comp_type(const char *component_type, boolean init_base_comps)
+{
+(void)init_base_comps;
+if (!strcmp(component_type, "PTC")) {
+PTC_component_pt__sync.activate_port();
+PTC_component_pt__socketCAN.activate_port();
+PTC_component_v__phase = e__Phase::e__open__socket;
+return TRUE;
+} else if (!strcmp(component_type, "MTC")) {
+MTC_component_pt__sync.activate_port();
+MTC_component_v__PTCSet = NULL_VALUE;
+return TRUE;
+} else return FALSE;
+}
+
+static boolean init_system_port(const char* component_type, const char* port_name)
+{
+if (!strcmp(component_type, "PTC")) {
+if (!strcmp(port_name, "pt_socketCAN")) {
+PTC_component_pt__socketCAN.safe_start();
+return TRUE;
+}
+if (!strcmp(port_name, "pt_sync")) {
+PTC_component_pt__sync.safe_start();
+return TRUE;
+}
+}
+else if (!strcmp(component_type, "MTC")) {
+if (!strcmp(port_name, "pt_sync")) {
+MTC_component_pt__sync.safe_start();
+return TRUE;
+}
+}
+return FALSE;
+}
+
+static boolean start_ptc_function(const char *function_name, Text_Buf& function_arguments)
+{
+if (!strcmp(function_name, "f_startPhase")) {
+e__Phase p__phase;
+p__phase.decode_text(function_arguments);
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_startPhase(");
+p__phase.log();
+TTCN_Logger::log_event_str(").");
+TTCN_Logger::end_event();
+TTCN_Runtime::function_started(function_arguments);
+f__startPhase(p__phase);
+TTCN_Runtime::function_finished("f_startPhase");
+return TRUE;
+} else if (!strcmp(function_name, "f_incPTCPhase")) {
+e__Phase p__currentPhase;
+p__currentPhase.decode_text(function_arguments);
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_incPTCPhase(");
+p__currentPhase.log();
+TTCN_Logger::log_event_str(").");
+TTCN_Logger::end_event();
+TTCN_Runtime::function_started(function_arguments);
+f__incPTCPhase(p__currentPhase);
+TTCN_Runtime::function_finished("f_incPTCPhase");
+return TRUE;
+} else if (!strcmp(function_name, "f_sendPhaseEndInd")) {
+TTCN_Logger::log_str(TTCN_Logger::PARALLEL_PTC, "Starting function f_sendPhaseEndInd().");
+TTCN_Runtime::function_started(function_arguments);
+f__sendPhaseEndInd();
+TTCN_Runtime::function_finished("f_sendPhaseEndInd");
+return TRUE;
+} else if (!strcmp(function_name, "f_incMTCPhase")) {
+e__Phase p__currentPhase;
+p__currentPhase.decode_text(function_arguments);
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_incMTCPhase(");
+p__currentPhase.log();
+TTCN_Logger::log_event_str(").");
+TTCN_Logger::end_event();
+TTCN_Runtime::function_started(function_arguments);
+f__incMTCPhase(p__currentPhase);
+TTCN_Runtime::function_finished("f_incMTCPhase");
+return TRUE;
+} else if (!strcmp(function_name, "f_awaitEndPhase")) {
+e__Phase p__phase;
+p__phase.decode_text(function_arguments);
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_awaitEndPhase(");
+p__phase.log();
+TTCN_Logger::log_event_str(").");
+TTCN_Logger::end_event();
+TTCN_Runtime::function_started(function_arguments);
+f__awaitEndPhase(p__phase);
+TTCN_Runtime::function_finished("f_awaitEndPhase");
+return TRUE;
+} else if (!strcmp(function_name, "f_open_socket")) {
+SocketCAN__open__socket__type v__socket__type;
+v__socket__type.decode_text(function_arguments);
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_open_socket(");
+v__socket__type.log();
+TTCN_Logger::log_event_str(").");
+TTCN_Logger::end_event();
+TTCN_Runtime::function_started(function_arguments);
+f__open__socket(v__socket__type);
+TTCN_Runtime::function_finished("f_open_socket");
+return TRUE;
+} else if (!strcmp(function_name, "f_ioctl_get_if_index")) {
+INTEGER p__socket__id;
+p__socket__id.decode_text(function_arguments);
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_ioctl_get_if_index(");
+p__socket__id.log();
+TTCN_Logger::log_event_str(").");
+TTCN_Logger::end_event();
+TTCN_Runtime::function_started(function_arguments);
+f__ioctl__get__if__index(p__socket__id);
+TTCN_Runtime::function_finished("f_ioctl_get_if_index");
+return TRUE;
+} else if (!strcmp(function_name, "f_connect")) {
+INTEGER p__socket__id;
+INTEGER p__if__index;
+p__socket__id.decode_text(function_arguments);
+p__if__index.decode_text(function_arguments);
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_connect(");
+p__socket__id.log();
+TTCN_Logger::log_event_str(", ");
+p__if__index.log();
+TTCN_Logger::log_event_str(").");
+TTCN_Logger::end_event();
+TTCN_Runtime::function_started(function_arguments);
+f__connect(p__socket__id, p__if__index);
+TTCN_Runtime::function_finished("f_connect");
+return TRUE;
+} else if (!strcmp(function_name, "f_bind")) {
+INTEGER p__socket__id;
+INTEGER p__if__index;
+p__socket__id.decode_text(function_arguments);
+p__if__index.decode_text(function_arguments);
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_bind(");
+p__socket__id.log();
+TTCN_Logger::log_event_str(", ");
+p__if__index.log();
+TTCN_Logger::log_event_str(").");
+TTCN_Logger::end_event();
+TTCN_Runtime::function_started(function_arguments);
+f__bind(p__socket__id, p__if__index);
+TTCN_Runtime::function_finished("f_bind");
+return TRUE;
+} else if (!strcmp(function_name, "f_send_data")) {
+INTEGER p__socket__id;
+SocketCAN__Types::SocketCAN__send__data__ifu p__ifu;
+SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame p__CAN__or__CAN__FD__frame;
+p__socket__id.decode_text(function_arguments);
+p__ifu.decode_text(function_arguments);
+p__CAN__or__CAN__FD__frame.decode_text(function_arguments);
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_send_data(");
+p__socket__id.log();
+TTCN_Logger::log_event_str(", ");
+p__ifu.log();
+TTCN_Logger::log_event_str(", ");
+p__CAN__or__CAN__FD__frame.log();
+TTCN_Logger::log_event_str(").");
+TTCN_Logger::end_event();
+TTCN_Runtime::function_started(function_arguments);
+f__send__data(p__socket__id, p__ifu, p__CAN__or__CAN__FD__frame);
+TTCN_Runtime::function_finished("f_send_data");
+return TRUE;
+} else if (!strcmp(function_name, "f_receive_data")) {
+INTEGER p__socket__id;
+SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame_template p__frame__expected;
+p__socket__id.decode_text(function_arguments);
+p__frame__expected.decode_text(function_arguments);
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_receive_data(");
+p__socket__id.log();
+TTCN_Logger::log_event_str(", ");
+p__frame__expected.log();
+TTCN_Logger::log_event_str(").");
+TTCN_Logger::end_event();
+TTCN_Runtime::function_started(function_arguments);
+f__receive__data(p__socket__id, p__frame__expected);
+TTCN_Runtime::function_finished("f_receive_data");
+return TRUE;
+} else if (!strcmp(function_name, "f_receive_no_data_but_timeout")) {
+INTEGER p__socket__id;
+FLOAT p__timeout__period;
+p__socket__id.decode_text(function_arguments);
+p__timeout__period.decode_text(function_arguments);
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_receive_no_data_but_timeout(");
+p__socket__id.log();
+TTCN_Logger::log_event_str(", ");
+p__timeout__period.log();
+TTCN_Logger::log_event_str(").");
+TTCN_Logger::end_event();
+TTCN_Runtime::function_started(function_arguments);
+f__receive__no__data__but__timeout(p__socket__id, p__timeout__period);
+TTCN_Runtime::function_finished("f_receive_no_data_but_timeout");
+return TRUE;
+} else if (!strcmp(function_name, "f_write_data")) {
+INTEGER p__socket__id;
+Bcm::SocketCAN__bcm__frame p__bcm__frame;
+p__socket__id.decode_text(function_arguments);
+p__bcm__frame.decode_text(function_arguments);
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_write_data(");
+p__socket__id.log();
+TTCN_Logger::log_event_str(", ");
+p__bcm__frame.log();
+TTCN_Logger::log_event_str(").");
+TTCN_Logger::end_event();
+TTCN_Runtime::function_started(function_arguments);
+f__write__data(p__socket__id, p__bcm__frame);
+TTCN_Runtime::function_finished("f_write_data");
+return TRUE;
+} else if (!strcmp(function_name, "f_receive_BCM_message")) {
+INTEGER_template p__socket__id;
+Bcm::SocketCAN__bcm__frame_template p__BCM__message__expected;
+p__socket__id.decode_text(function_arguments);
+p__BCM__message__expected.decode_text(function_arguments);
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_receive_BCM_message(");
+p__socket__id.log();
+TTCN_Logger::log_event_str(", ");
+p__BCM__message__expected.log();
+TTCN_Logger::log_event_str(").");
+TTCN_Logger::end_event();
+TTCN_Runtime::function_started(function_arguments);
+f__receive__BCM__message(p__socket__id, p__BCM__message__expected);
+TTCN_Runtime::function_finished("f_receive_BCM_message");
+return TRUE;
+} else if (!strcmp(function_name, "f_setsockopt")) {
+INTEGER p__socket__id;
+SocketCAN__Types::SocketCAN__setsockopt__commandu p__command;
+p__socket__id.decode_text(function_arguments);
+p__command.decode_text(function_arguments);
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_setsockopt(");
+p__socket__id.log();
+TTCN_Logger::log_event_str(", ");
+p__command.log();
+TTCN_Logger::log_event_str(").");
+TTCN_Logger::end_event();
+TTCN_Runtime::function_started(function_arguments);
+f__setsockopt(p__socket__id, p__command);
+TTCN_Runtime::function_finished("f_setsockopt");
+return TRUE;
+} else if (!strcmp(function_name, "f_close_socket")) {
+INTEGER p__socket__id;
+p__socket__id.decode_text(function_arguments);
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_close_socket(");
+p__socket__id.log();
+TTCN_Logger::log_event_str(").");
+TTCN_Logger::end_event();
+TTCN_Runtime::function_started(function_arguments);
+f__close__socket(p__socket__id);
+TTCN_Runtime::function_finished("f_close_socket");
+return TRUE;
+} else if (!strcmp(function_name, "f_open_raw")) {
+TTCN_Logger::log_str(TTCN_Logger::PARALLEL_PTC, "Starting function f_open_raw().");
+TTCN_Runtime::function_started(function_arguments);
+f__open__raw();
+TTCN_Runtime::function_finished("f_open_raw");
+return TRUE;
+} else if (!strcmp(function_name, "f_open_bcm")) {
+TTCN_Logger::log_str(TTCN_Logger::PARALLEL_PTC, "Starting function f_open_bcm().");
+TTCN_Runtime::function_started(function_arguments);
+f__open__bcm();
+TTCN_Runtime::function_finished("f_open_bcm");
+return TRUE;
+} else if (!strcmp(function_name, "f_ptc_RawSendInitiator")) {
+e__Phase p__phase;
+SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame v__frame__send;
+p__phase.decode_text(function_arguments);
+v__frame__send.decode_text(function_arguments);
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_ptc_RawSendInitiator(");
+p__phase.log();
+TTCN_Logger::log_event_str(", ");
+v__frame__send.log();
+TTCN_Logger::log_event_str(").");
+TTCN_Logger::end_event();
+TTCN_Runtime::function_started(function_arguments);
+f__ptc__RawSendInitiator(p__phase, v__frame__send);
+TTCN_Runtime::function_finished("f_ptc_RawSendInitiator");
+return TRUE;
+} else if (!strcmp(function_name, "f_ptc_RawFrameReceiver")) {
+e__Phase p__phase;
+SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame_template p__frame__expected;
+p__phase.decode_text(function_arguments);
+p__frame__expected.decode_text(function_arguments);
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_ptc_RawFrameReceiver(");
+p__phase.log();
+TTCN_Logger::log_event_str(", ");
+p__frame__expected.log();
+TTCN_Logger::log_event_str(").");
+TTCN_Logger::end_event();
+TTCN_Runtime::function_started(function_arguments);
+f__ptc__RawFrameReceiver(p__phase, p__frame__expected);
+TTCN_Runtime::function_finished("f_ptc_RawFrameReceiver");
+return TRUE;
+} else if (!strcmp(function_name, "f_ptc_RawFrameSequenceReceiver")) {
+e__Phase p__sequence__expected__phase;
+SocketCAN__CAN__or__CAN__FD__frames_template p__frame__sequence__expected;
+e__Phase p__no__further__frames__expected__phase;
+FLOAT p__timeout__period;
+p__sequence__expected__phase.decode_text(function_arguments);
+p__frame__sequence__expected.decode_text(function_arguments);
+p__no__further__frames__expected__phase.decode_text(function_arguments);
+p__timeout__period.decode_text(function_arguments);
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_ptc_RawFrameSequenceReceiver(");
+p__sequence__expected__phase.log();
+TTCN_Logger::log_event_str(", ");
+p__frame__sequence__expected.log();
+TTCN_Logger::log_event_str(", ");
+p__no__further__frames__expected__phase.log();
+TTCN_Logger::log_event_str(", ");
+p__timeout__period.log();
+TTCN_Logger::log_event_str(").");
+TTCN_Logger::end_event();
+TTCN_Runtime::function_started(function_arguments);
+f__ptc__RawFrameSequenceReceiver(p__sequence__expected__phase, p__frame__sequence__expected, p__no__further__frames__expected__phase, p__timeout__period);
+TTCN_Runtime::function_finished("f_ptc_RawFrameSequenceReceiver");
+return TRUE;
+} else if (!strcmp(function_name, "f_ptc_bcmComandSendInitiator")) {
+BCM__cmds p__cmd__list;
+p__cmd__list.decode_text(function_arguments);
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_ptc_bcmComandSendInitiator(");
+p__cmd__list.log();
+TTCN_Logger::log_event_str(").");
+TTCN_Logger::end_event();
+TTCN_Runtime::function_started(function_arguments);
+f__ptc__bcmComandSendInitiator(p__cmd__list);
+TTCN_Runtime::function_finished("f_ptc_bcmComandSendInitiator");
+return TRUE;
+} else if (!strcmp(function_name, "f_ptc_bcmComandSendReceiveInitiator")) {
+BCM__cmds p__cmd__list;
+p__cmd__list.decode_text(function_arguments);
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_ptc_bcmComandSendReceiveInitiator(");
+p__cmd__list.log();
+TTCN_Logger::log_event_str(").");
+TTCN_Logger::end_event();
+TTCN_Runtime::function_started(function_arguments);
+f__ptc__bcmComandSendReceiveInitiator(p__cmd__list);
+TTCN_Runtime::function_finished("f_ptc_bcmComandSendReceiveInitiator");
+return TRUE;
+} else if (!strcmp(function_name, "f_ptc_bcmSendInitiator")) {
+e__Phase p__phase;
+Bcm::SocketCAN__bcm__frame p__bcm__frame;
+p__phase.decode_text(function_arguments);
+p__bcm__frame.decode_text(function_arguments);
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_ptc_bcmSendInitiator(");
+p__phase.log();
+TTCN_Logger::log_event_str(", ");
+p__bcm__frame.log();
+TTCN_Logger::log_event_str(").");
+TTCN_Logger::end_event();
+TTCN_Runtime::function_started(function_arguments);
+f__ptc__bcmSendInitiator(p__phase, p__bcm__frame);
+TTCN_Runtime::function_finished("f_ptc_bcmSendInitiator");
+return TRUE;
+} else if (!strcmp(function_name, "f_raw_setsockopt")) {
+e__Phase p__phase;
+SocketCAN__Types::SocketCAN__setsockopt__commandu p__setsockopt__command;
+p__phase.decode_text(function_arguments);
+p__setsockopt__command.decode_text(function_arguments);
+TTCN_Logger::begin_event(TTCN_Logger::PARALLEL_PTC);
+TTCN_Logger::log_event_str("Starting function f_raw_setsockopt(");
+p__phase.log();
+TTCN_Logger::log_event_str(", ");
+p__setsockopt__command.log();
+TTCN_Logger::log_event_str(").");
+TTCN_Logger::end_event();
+TTCN_Runtime::function_started(function_arguments);
+f__raw__setsockopt(p__phase, p__setsockopt__command);
+TTCN_Runtime::function_finished("f_raw_setsockopt");
+return TRUE;
+} else return FALSE;
+}
+
+
+} /* end of namespace */
diff --git a/demo/SocketCANtest.d b/demo/SocketCANtest.d
new file mode 100644
index 0000000..4a4ddde
--- /dev/null
+++ b/demo/SocketCANtest.d
@@ -0,0 +1,60 @@
+SocketCANtest.o SocketCANtest.d : SocketCANtest.cc SocketCANtest.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TTCN3.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/version.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/cversion.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Types.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Vector.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Error.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Basetype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Encdec.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RInt.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON_Tokenizer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Logger.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Template.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Integer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ttcn3float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Boolean.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Null.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Optional.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Param_Types.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/memory.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/BER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Textbuf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Parameters.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XmlReader.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Objid.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Verdicttype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Component.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Bitstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RAW.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/CharCoding.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Hexstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Octetstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Any.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Universal_charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Struct_of.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Array.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_CharacterString.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_External.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TEXT.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_EmbeddedPDV.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Addfunc.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Timer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Port.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Event_Handler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/TitanLoggerApiSimple.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/PreGenRecordOf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Module_list.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Snapshot.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Default.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Runtime.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/OER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Profiler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ProfilerTools.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Debugger.hh \
+ SocketCAN_PortType.hh SocketCAN_Types.hh Bcm.hh Can.hh General_Types.hh \
+ Raw.hh ../src/SocketCAN_PT.hh SocketCAN_Types.hh SocketCAN_Templates.hh
diff --git a/demo/SocketCANtest.hh b/demo/SocketCANtest.hh
new file mode 100644
index 0000000..9922cea
--- /dev/null
+++ b/demo/SocketCANtest.hh
@@ -0,0 +1,1146 @@
+// This C++ header file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+#ifndef SocketCANtest_HH
+#define SocketCANtest_HH
+
+#ifdef TITAN_RUNTIME_2
+#error Generated code does not match with used runtime.\
+ Code was generated without -R option but -DTITAN_RUNTIME_2 was used.
+#endif
+
+/* Header file includes */
+
+#include <TTCN3.hh>
+#include "SocketCAN_PortType.hh"
+#include "SocketCAN_Templates.hh"
+
+#if TTCN3_VERSION != 60600
+#error Version mismatch detected.\
+ Please check the version of the TTCN-3 compiler and the base library.\
+ Run make clean and rebuild the project if the version of the compiler changed recently.
+#endif
+
+#ifndef LINUX
+#error This file should be compiled on LINUX
+#endif
+
+#undef SocketCANtest_HH
+#endif
+
+namespace SocketCANtest {
+
+/* Forward declarations of classes */
+
+class SocketCAN__open__socket__type;
+class SocketCAN__open__socket__type_template;
+class e__Phase;
+class e__Phase_template;
+class SocketCAN__open__raw__result;
+class SocketCAN__open__raw__result_template;
+class BCM__cmd;
+class BCM__cmd_template;
+class BCM__cmds;
+class BCM__cmds_template;
+class SocketCAN__CAN__or__CAN__FD__frames;
+class SocketCAN__CAN__or__CAN__FD__frames_template;
+class PhaseStartReq;
+class PhaseStartReq_template;
+class PhaseEndInd;
+class PhaseEndInd_template;
+class SyncMasterPort;
+class SyncSlavePort;
+class PTCSet;
+class PTCSet_template;
+
+} /* end of namespace */
+
+#ifndef SocketCANtest_HH
+#define SocketCANtest_HH
+
+namespace SocketCANtest {
+
+/* Type definitions */
+
+typedef COMPONENT PTC;
+typedef COMPONENT_template PTC_template;
+typedef COMPONENT MTC;
+typedef COMPONENT_template MTC_template;
+
+/* Class definitions */
+
+class SocketCAN__open__socket__type : public Base_Type { // enum
+friend class SocketCAN__open__socket__type_template;
+public:
+enum enum_type { OPEN__CAN__RAW = 0, OPEN__CAN__BCM = 1, OPEN__CAN__ISOTP = 2, UNKNOWN_VALUE = 3, UNBOUND_VALUE = 4 };
+private:
+enum_type enum_value;
+
+public:
+SocketCAN__open__socket__type();
+SocketCAN__open__socket__type(int other_value);
+SocketCAN__open__socket__type(enum_type other_value);
+SocketCAN__open__socket__type(const SocketCAN__open__socket__type& other_value);
+
+SocketCAN__open__socket__type& operator=(int other_value);
+SocketCAN__open__socket__type& operator=(enum_type other_value);
+SocketCAN__open__socket__type& operator=(const SocketCAN__open__socket__type& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const SocketCAN__open__socket__type& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const SocketCAN__open__socket__type& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const SocketCAN__open__socket__type& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const SocketCAN__open__socket__type& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const SocketCAN__open__socket__type& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const SocketCAN__open__socket__type& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const SocketCAN__open__socket__type& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+};
+
+class SocketCAN__open__socket__type_template : public Base_Template {
+union {
+SocketCAN__open__socket__type::enum_type single_value;
+struct {
+unsigned int n_values;
+SocketCAN__open__socket__type_template *list_value;
+} value_list;
+};
+
+void copy_template(const SocketCAN__open__socket__type_template& other_value);
+
+public:
+SocketCAN__open__socket__type_template();
+SocketCAN__open__socket__type_template(template_sel other_value);
+SocketCAN__open__socket__type_template(int other_value);
+SocketCAN__open__socket__type_template(SocketCAN__open__socket__type::enum_type other_value);
+SocketCAN__open__socket__type_template(const SocketCAN__open__socket__type& other_value);
+SocketCAN__open__socket__type_template(const OPTIONAL<SocketCAN__open__socket__type>& other_value);
+SocketCAN__open__socket__type_template(const SocketCAN__open__socket__type_template& other_value);
+~SocketCAN__open__socket__type_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SocketCAN__open__socket__type_template& operator=(template_sel other_value);
+SocketCAN__open__socket__type_template& operator=(int other_value);
+SocketCAN__open__socket__type_template& operator=(SocketCAN__open__socket__type::enum_type other_value);
+SocketCAN__open__socket__type_template& operator=(const SocketCAN__open__socket__type& other_value);
+SocketCAN__open__socket__type_template& operator=(const OPTIONAL<SocketCAN__open__socket__type>& other_value);
+SocketCAN__open__socket__type_template& operator=(const SocketCAN__open__socket__type_template& other_value);
+
+boolean match(SocketCAN__open__socket__type::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const SocketCAN__open__socket__type& other_value, boolean legacy = FALSE) const;
+SocketCAN__open__socket__type::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SocketCAN__open__socket__type_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const SocketCAN__open__socket__type& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class e__Phase : public Base_Type { // enum
+friend class e__Phase_template;
+public:
+enum enum_type { e__open__socket = 0, e__testbody1 = 1, e__testbody2 = 2, e__testbody3 = 3, e__testbody4 = 4, e__testbody5 = 5, e__testbody6 = 6, e__testbody7 = 7, e__testbodyEnd = 8, e__close__socket = 9, e__testcase__complete = 10, UNKNOWN_VALUE = 11, UNBOUND_VALUE = 12 };
+private:
+enum_type enum_value;
+
+public:
+e__Phase();
+e__Phase(int other_value);
+e__Phase(enum_type other_value);
+e__Phase(const e__Phase& other_value);
+
+e__Phase& operator=(int other_value);
+e__Phase& operator=(enum_type other_value);
+e__Phase& operator=(const e__Phase& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const e__Phase& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const e__Phase& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const e__Phase& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const e__Phase& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const e__Phase& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const e__Phase& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const e__Phase& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+};
+
+class e__Phase_template : public Base_Template {
+union {
+e__Phase::enum_type single_value;
+struct {
+unsigned int n_values;
+e__Phase_template *list_value;
+} value_list;
+};
+
+void copy_template(const e__Phase_template& other_value);
+
+public:
+e__Phase_template();
+e__Phase_template(template_sel other_value);
+e__Phase_template(int other_value);
+e__Phase_template(e__Phase::enum_type other_value);
+e__Phase_template(const e__Phase& other_value);
+e__Phase_template(const OPTIONAL<e__Phase>& other_value);
+e__Phase_template(const e__Phase_template& other_value);
+~e__Phase_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+e__Phase_template& operator=(template_sel other_value);
+e__Phase_template& operator=(int other_value);
+e__Phase_template& operator=(e__Phase::enum_type other_value);
+e__Phase_template& operator=(const e__Phase& other_value);
+e__Phase_template& operator=(const OPTIONAL<e__Phase>& other_value);
+e__Phase_template& operator=(const e__Phase_template& other_value);
+
+boolean match(e__Phase::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const e__Phase& other_value, boolean legacy = FALSE) const;
+e__Phase::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+e__Phase_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const e__Phase& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class SocketCAN__open__raw__result {
+  SocketCAN__Types::SocketCAN__ifr field_ifr;
+  INTEGER field_socket__id;
+public:
+  SocketCAN__open__raw__result();
+  SocketCAN__open__raw__result(const SocketCAN__Types::SocketCAN__ifr& par_ifr,
+    const INTEGER& par_socket__id);
+  SocketCAN__open__raw__result(const SocketCAN__open__raw__result& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SocketCAN__open__raw__result& operator=(const SocketCAN__open__raw__result& other_value);
+  boolean operator==(const SocketCAN__open__raw__result& other_value) const;
+  inline boolean operator!=(const SocketCAN__open__raw__result& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline SocketCAN__Types::SocketCAN__ifr& ifr()
+    {return field_ifr;}
+  inline const SocketCAN__Types::SocketCAN__ifr& ifr() const
+    {return field_ifr;}
+  inline INTEGER& socket__id()
+    {return field_socket__id;}
+  inline const INTEGER& socket__id() const
+    {return field_socket__id;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+};
+
+class SocketCAN__open__raw__result_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SocketCAN__open__raw__result_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SocketCAN__open__raw__result& other_value);
+void copy_template(const SocketCAN__open__raw__result_template& other_value);
+
+public:
+SocketCAN__open__raw__result_template();
+SocketCAN__open__raw__result_template(template_sel other_value);
+SocketCAN__open__raw__result_template(const SocketCAN__open__raw__result& other_value);
+SocketCAN__open__raw__result_template(const OPTIONAL<SocketCAN__open__raw__result>& other_value);
+SocketCAN__open__raw__result_template(const SocketCAN__open__raw__result_template& other_value);
+~SocketCAN__open__raw__result_template();
+SocketCAN__open__raw__result_template& operator=(template_sel other_value);
+SocketCAN__open__raw__result_template& operator=(const SocketCAN__open__raw__result& other_value);
+SocketCAN__open__raw__result_template& operator=(const OPTIONAL<SocketCAN__open__raw__result>& other_value);
+SocketCAN__open__raw__result_template& operator=(const SocketCAN__open__raw__result_template& other_value);
+boolean match(const SocketCAN__open__raw__result& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SocketCAN__open__raw__result valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SocketCAN__open__raw__result_template& list_item(unsigned int list_index) const;
+SocketCAN__Types::SocketCAN__ifr_template& ifr();
+const SocketCAN__Types::SocketCAN__ifr_template& ifr() const;
+INTEGER_template& socket__id();
+const INTEGER_template& socket__id() const;
+int size_of() const;
+void log() const;
+void log_match(const SocketCAN__open__raw__result& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class BCM__cmd {
+  e__Phase field_phase;
+  Bcm::SocketCAN__bcm__frame field_bcm__frame;
+public:
+  BCM__cmd();
+  BCM__cmd(const e__Phase& par_phase,
+    const Bcm::SocketCAN__bcm__frame& par_bcm__frame);
+  BCM__cmd(const BCM__cmd& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  BCM__cmd& operator=(const BCM__cmd& other_value);
+  boolean operator==(const BCM__cmd& other_value) const;
+  inline boolean operator!=(const BCM__cmd& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline e__Phase& phase()
+    {return field_phase;}
+  inline const e__Phase& phase() const
+    {return field_phase;}
+  inline Bcm::SocketCAN__bcm__frame& bcm__frame()
+    {return field_bcm__frame;}
+  inline const Bcm::SocketCAN__bcm__frame& bcm__frame() const
+    {return field_bcm__frame;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+};
+
+class BCM__cmd_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+BCM__cmd_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const BCM__cmd& other_value);
+void copy_template(const BCM__cmd_template& other_value);
+
+public:
+BCM__cmd_template();
+BCM__cmd_template(template_sel other_value);
+BCM__cmd_template(const BCM__cmd& other_value);
+BCM__cmd_template(const OPTIONAL<BCM__cmd>& other_value);
+BCM__cmd_template(const BCM__cmd_template& other_value);
+~BCM__cmd_template();
+BCM__cmd_template& operator=(template_sel other_value);
+BCM__cmd_template& operator=(const BCM__cmd& other_value);
+BCM__cmd_template& operator=(const OPTIONAL<BCM__cmd>& other_value);
+BCM__cmd_template& operator=(const BCM__cmd_template& other_value);
+boolean match(const BCM__cmd& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+BCM__cmd valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+BCM__cmd_template& list_item(unsigned int list_index) const;
+e__Phase_template& phase();
+const e__Phase_template& phase() const;
+Bcm::SocketCAN__bcm__frame_template& bcm__frame();
+const Bcm::SocketCAN__bcm__frame_template& bcm__frame() const;
+int size_of() const;
+void log() const;
+void log_match(const BCM__cmd& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class BCM__cmds : public Base_Type {
+struct recordof_setof_struct {
+int ref_count;
+int n_elements;
+BCM__cmd **value_elements;
+} *val_ptr;
+
+static const BCM__cmd UNBOUND_ELEM;
+private:
+friend boolean operator==(null_type null_value, const BCM__cmds& other_value);
+
+public:
+  typedef BCM__cmd of_type;
+BCM__cmds();
+BCM__cmds(null_type other_value);
+BCM__cmds(const BCM__cmds& other_value);
+~BCM__cmds();
+
+void clean_up();
+BCM__cmds& operator=(null_type other_value);
+BCM__cmds& operator=(const BCM__cmds& other_value);
+
+boolean operator==(null_type other_value) const;
+boolean operator==(const BCM__cmds& other_value) const;
+inline boolean operator!=(null_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const BCM__cmds& other_value) const { return !(*this == other_value); }
+
+BCM__cmd& operator[](int index_value);
+BCM__cmd& operator[](const INTEGER& index_value);
+const BCM__cmd& operator[](int index_value) const;
+const BCM__cmd& operator[](const INTEGER& index_value) const;
+
+BCM__cmds operator<<=(int rotate_count) const;
+BCM__cmds operator<<=(const INTEGER& rotate_count) const;
+BCM__cmds operator>>=(int rotate_count) const;
+BCM__cmds operator>>=(const INTEGER& rotate_count) const;
+
+BCM__cmds operator+(const BCM__cmds& other_value) const;
+
+BCM__cmds substr(int index, int returncount) const;
+
+BCM__cmds replace(int index, int len, const BCM__cmds& repl) const;
+
+BCM__cmds replace(int index, int len, const BCM__cmds_template& repl) const;
+
+void set_size(int new_size);
+inline boolean is_bound() const {return val_ptr != NULL; }
+inline boolean is_present() const { return is_bound(); }
+boolean is_value() const;
+int size_of() const;
+int n_elem() const { return size_of(); }
+int lengthof() const;
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+};
+
+class BCM__cmds_template : public Record_Of_Template {
+union {
+struct {
+int n_elements;
+BCM__cmd_template **value_elements;
+} single_value;
+struct {
+unsigned int n_values;
+BCM__cmds_template *list_value;
+} value_list;
+};
+void copy_value(const BCM__cmds& other_value);
+void copy_template(const BCM__cmds_template& other_value);
+static boolean match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy);
+
+public:
+BCM__cmds_template();
+BCM__cmds_template(template_sel other_value);
+BCM__cmds_template(null_type other_value);
+BCM__cmds_template(const BCM__cmds& other_value);
+BCM__cmds_template(const OPTIONAL<BCM__cmds>& other_value);
+BCM__cmds_template(const BCM__cmds_template& other_value);
+~BCM__cmds_template();
+
+void clean_up();
+BCM__cmds_template& operator=(template_sel other_value);
+BCM__cmds_template& operator=(null_type other_value);
+BCM__cmds_template& operator=(const BCM__cmds& other_value);
+BCM__cmds_template& operator=(const OPTIONAL<BCM__cmds>& other_value);
+BCM__cmds_template& operator=(const BCM__cmds_template& other_value);
+
+BCM__cmd_template& operator[](int index_value);
+BCM__cmd_template& operator[](const INTEGER& index_value);
+const BCM__cmd_template& operator[](int index_value) const;
+const BCM__cmd_template& operator[](const INTEGER& index_value) const;
+
+void set_size(int new_size);
+int n_elem() const;
+int size_of(boolean is_size) const;
+inline int size_of() const { return size_of(TRUE); }
+inline int lengthof() const { return size_of(FALSE); }
+boolean match(const BCM__cmds& other_value, boolean legacy = FALSE) const;
+inline boolean is_bound() const 
+  {return template_selection != UNINITIALIZED_TEMPLATE; }
+boolean is_value() const;
+BCM__cmds valueof() const;
+BCM__cmds substr(int index, int returncount) const;
+
+BCM__cmds replace(int index, int len, const BCM__cmds_template& repl) const;
+
+BCM__cmds replace(int index, int len, const BCM__cmds& repl) const;
+
+void set_type(template_sel template_type, unsigned int list_length);
+BCM__cmds_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const BCM__cmds& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean get_istemplate_kind(const char* type) const;
+};
+
+class SocketCAN__CAN__or__CAN__FD__frames : public Base_Type {
+struct recordof_setof_struct {
+int ref_count;
+int n_elements;
+SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame **value_elements;
+} *val_ptr;
+
+static const SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame UNBOUND_ELEM;
+private:
+friend boolean operator==(null_type null_value, const SocketCAN__CAN__or__CAN__FD__frames& other_value);
+
+public:
+  typedef SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame of_type;
+SocketCAN__CAN__or__CAN__FD__frames();
+SocketCAN__CAN__or__CAN__FD__frames(null_type other_value);
+SocketCAN__CAN__or__CAN__FD__frames(const SocketCAN__CAN__or__CAN__FD__frames& other_value);
+~SocketCAN__CAN__or__CAN__FD__frames();
+
+void clean_up();
+SocketCAN__CAN__or__CAN__FD__frames& operator=(null_type other_value);
+SocketCAN__CAN__or__CAN__FD__frames& operator=(const SocketCAN__CAN__or__CAN__FD__frames& other_value);
+
+boolean operator==(null_type other_value) const;
+boolean operator==(const SocketCAN__CAN__or__CAN__FD__frames& other_value) const;
+inline boolean operator!=(null_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const SocketCAN__CAN__or__CAN__FD__frames& other_value) const { return !(*this == other_value); }
+
+SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame& operator[](int index_value);
+SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame& operator[](const INTEGER& index_value);
+const SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame& operator[](int index_value) const;
+const SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame& operator[](const INTEGER& index_value) const;
+
+SocketCAN__CAN__or__CAN__FD__frames operator<<=(int rotate_count) const;
+SocketCAN__CAN__or__CAN__FD__frames operator<<=(const INTEGER& rotate_count) const;
+SocketCAN__CAN__or__CAN__FD__frames operator>>=(int rotate_count) const;
+SocketCAN__CAN__or__CAN__FD__frames operator>>=(const INTEGER& rotate_count) const;
+
+SocketCAN__CAN__or__CAN__FD__frames operator+(const SocketCAN__CAN__or__CAN__FD__frames& other_value) const;
+
+SocketCAN__CAN__or__CAN__FD__frames substr(int index, int returncount) const;
+
+SocketCAN__CAN__or__CAN__FD__frames replace(int index, int len, const SocketCAN__CAN__or__CAN__FD__frames& repl) const;
+
+SocketCAN__CAN__or__CAN__FD__frames replace(int index, int len, const SocketCAN__CAN__or__CAN__FD__frames_template& repl) const;
+
+void set_size(int new_size);
+inline boolean is_bound() const {return val_ptr != NULL; }
+inline boolean is_present() const { return is_bound(); }
+boolean is_value() const;
+int size_of() const;
+int n_elem() const { return size_of(); }
+int lengthof() const;
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+};
+
+class SocketCAN__CAN__or__CAN__FD__frames_template : public Record_Of_Template {
+union {
+struct {
+int n_elements;
+SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame_template **value_elements;
+} single_value;
+struct {
+unsigned int n_values;
+SocketCAN__CAN__or__CAN__FD__frames_template *list_value;
+} value_list;
+};
+void copy_value(const SocketCAN__CAN__or__CAN__FD__frames& other_value);
+void copy_template(const SocketCAN__CAN__or__CAN__FD__frames_template& other_value);
+static boolean match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy);
+
+public:
+SocketCAN__CAN__or__CAN__FD__frames_template();
+SocketCAN__CAN__or__CAN__FD__frames_template(template_sel other_value);
+SocketCAN__CAN__or__CAN__FD__frames_template(null_type other_value);
+SocketCAN__CAN__or__CAN__FD__frames_template(const SocketCAN__CAN__or__CAN__FD__frames& other_value);
+SocketCAN__CAN__or__CAN__FD__frames_template(const OPTIONAL<SocketCAN__CAN__or__CAN__FD__frames>& other_value);
+SocketCAN__CAN__or__CAN__FD__frames_template(const SocketCAN__CAN__or__CAN__FD__frames_template& other_value);
+~SocketCAN__CAN__or__CAN__FD__frames_template();
+
+void clean_up();
+SocketCAN__CAN__or__CAN__FD__frames_template& operator=(template_sel other_value);
+SocketCAN__CAN__or__CAN__FD__frames_template& operator=(null_type other_value);
+SocketCAN__CAN__or__CAN__FD__frames_template& operator=(const SocketCAN__CAN__or__CAN__FD__frames& other_value);
+SocketCAN__CAN__or__CAN__FD__frames_template& operator=(const OPTIONAL<SocketCAN__CAN__or__CAN__FD__frames>& other_value);
+SocketCAN__CAN__or__CAN__FD__frames_template& operator=(const SocketCAN__CAN__or__CAN__FD__frames_template& other_value);
+
+SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame_template& operator[](int index_value);
+SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame_template& operator[](const INTEGER& index_value);
+const SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame_template& operator[](int index_value) const;
+const SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame_template& operator[](const INTEGER& index_value) const;
+
+void set_size(int new_size);
+int n_elem() const;
+int size_of(boolean is_size) const;
+inline int size_of() const { return size_of(TRUE); }
+inline int lengthof() const { return size_of(FALSE); }
+boolean match(const SocketCAN__CAN__or__CAN__FD__frames& other_value, boolean legacy = FALSE) const;
+inline boolean is_bound() const 
+  {return template_selection != UNINITIALIZED_TEMPLATE; }
+boolean is_value() const;
+SocketCAN__CAN__or__CAN__FD__frames valueof() const;
+SocketCAN__CAN__or__CAN__FD__frames substr(int index, int returncount) const;
+
+SocketCAN__CAN__or__CAN__FD__frames replace(int index, int len, const SocketCAN__CAN__or__CAN__FD__frames_template& repl) const;
+
+SocketCAN__CAN__or__CAN__FD__frames replace(int index, int len, const SocketCAN__CAN__or__CAN__FD__frames& repl) const;
+
+void set_type(template_sel template_type, unsigned int list_length);
+SocketCAN__CAN__or__CAN__FD__frames_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const SocketCAN__CAN__or__CAN__FD__frames& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean get_istemplate_kind(const char* type) const;
+};
+
+class PhaseStartReq {
+  e__Phase field_phase;
+  INTEGER field_phase__int;
+public:
+  PhaseStartReq();
+  PhaseStartReq(const e__Phase& par_phase,
+    const INTEGER& par_phase__int);
+  PhaseStartReq(const PhaseStartReq& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  PhaseStartReq& operator=(const PhaseStartReq& other_value);
+  boolean operator==(const PhaseStartReq& other_value) const;
+  inline boolean operator!=(const PhaseStartReq& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline e__Phase& phase()
+    {return field_phase;}
+  inline const e__Phase& phase() const
+    {return field_phase;}
+  inline INTEGER& phase__int()
+    {return field_phase__int;}
+  inline const INTEGER& phase__int() const
+    {return field_phase__int;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+};
+
+class PhaseStartReq_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+PhaseStartReq_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const PhaseStartReq& other_value);
+void copy_template(const PhaseStartReq_template& other_value);
+
+public:
+PhaseStartReq_template();
+PhaseStartReq_template(template_sel other_value);
+PhaseStartReq_template(const PhaseStartReq& other_value);
+PhaseStartReq_template(const OPTIONAL<PhaseStartReq>& other_value);
+PhaseStartReq_template(const PhaseStartReq_template& other_value);
+~PhaseStartReq_template();
+PhaseStartReq_template& operator=(template_sel other_value);
+PhaseStartReq_template& operator=(const PhaseStartReq& other_value);
+PhaseStartReq_template& operator=(const OPTIONAL<PhaseStartReq>& other_value);
+PhaseStartReq_template& operator=(const PhaseStartReq_template& other_value);
+boolean match(const PhaseStartReq& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+PhaseStartReq valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+PhaseStartReq_template& list_item(unsigned int list_index) const;
+e__Phase_template& phase();
+const e__Phase_template& phase() const;
+INTEGER_template& phase__int();
+const INTEGER_template& phase__int() const;
+int size_of() const;
+void log() const;
+void log_match(const PhaseStartReq& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class PhaseEndInd {
+  e__Phase field_phase;
+  INTEGER field_phase__int;
+public:
+  PhaseEndInd();
+  PhaseEndInd(const e__Phase& par_phase,
+    const INTEGER& par_phase__int);
+  PhaseEndInd(const PhaseEndInd& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  PhaseEndInd& operator=(const PhaseEndInd& other_value);
+  boolean operator==(const PhaseEndInd& other_value) const;
+  inline boolean operator!=(const PhaseEndInd& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline e__Phase& phase()
+    {return field_phase;}
+  inline const e__Phase& phase() const
+    {return field_phase;}
+  inline INTEGER& phase__int()
+    {return field_phase__int;}
+  inline const INTEGER& phase__int() const
+    {return field_phase__int;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+};
+
+class PhaseEndInd_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+PhaseEndInd_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const PhaseEndInd& other_value);
+void copy_template(const PhaseEndInd_template& other_value);
+
+public:
+PhaseEndInd_template();
+PhaseEndInd_template(template_sel other_value);
+PhaseEndInd_template(const PhaseEndInd& other_value);
+PhaseEndInd_template(const OPTIONAL<PhaseEndInd>& other_value);
+PhaseEndInd_template(const PhaseEndInd_template& other_value);
+~PhaseEndInd_template();
+PhaseEndInd_template& operator=(template_sel other_value);
+PhaseEndInd_template& operator=(const PhaseEndInd& other_value);
+PhaseEndInd_template& operator=(const OPTIONAL<PhaseEndInd>& other_value);
+PhaseEndInd_template& operator=(const PhaseEndInd_template& other_value);
+boolean match(const PhaseEndInd& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+PhaseEndInd valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+PhaseEndInd_template& list_item(unsigned int list_index) const;
+e__Phase_template& phase();
+const e__Phase_template& phase() const;
+INTEGER_template& phase__int();
+const INTEGER_template& phase__int() const;
+int size_of() const;
+void log() const;
+void log_match(const PhaseEndInd& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SyncMasterPort : public PORT {
+enum msg_selection { MESSAGE_0 };
+struct msg_queue_item : public msg_queue_item_base {
+msg_selection item_selection;
+union {
+PhaseEndInd *message_0;
+};
+component sender_component;
+};
+
+void remove_msg_queue_head();
+protected:
+void clear_queue();
+public:
+SyncMasterPort(const char *par_port_name = NULL);
+~SyncMasterPort();
+void send(const PhaseStartReq& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
+void send(const PhaseStartReq& send_par, FLOAT* timestamp_redirect = NULL);
+void send(const PhaseStartReq_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
+void send(const PhaseStartReq_template& send_par, FLOAT* timestamp_redirect = NULL);
+public:
+alt_status receive(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status check_receive(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status trigger(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status receive(const PhaseEndInd_template& value_template, PhaseEndInd *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status check_receive(const PhaseEndInd_template& value_template, PhaseEndInd *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status trigger(const PhaseEndInd_template& value_template, PhaseEndInd *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+private:
+void incoming_message(const PhaseEndInd& incoming_par, component sender_component);
+protected:
+boolean process_message(const char *message_type, Text_Buf& incoming_buf, component sender_component, OCTETSTRING& slider);
+};
+
+class SyncSlavePort : public PORT {
+enum msg_selection { MESSAGE_0 };
+struct msg_queue_item : public msg_queue_item_base {
+msg_selection item_selection;
+union {
+PhaseStartReq *message_0;
+};
+component sender_component;
+};
+
+void remove_msg_queue_head();
+protected:
+void clear_queue();
+public:
+SyncSlavePort(const char *par_port_name = NULL);
+~SyncSlavePort();
+void send(const PhaseEndInd& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
+void send(const PhaseEndInd& send_par, FLOAT* timestamp_redirect = NULL);
+void send(const PhaseEndInd_template& send_par, const COMPONENT& destination_component, FLOAT* timestamp_redirect = NULL);
+void send(const PhaseEndInd_template& send_par, FLOAT* timestamp_redirect = NULL);
+public:
+alt_status receive(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status check_receive(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status trigger(const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status receive(const PhaseStartReq_template& value_template, PhaseStartReq *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status check_receive(const PhaseStartReq_template& value_template, PhaseStartReq *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+alt_status trigger(const PhaseStartReq_template& value_template, PhaseStartReq *value_redirect, const COMPONENT_template& sender_template, COMPONENT *sender_ptr, FLOAT* timestamp_redirect, Index_Redirect*);
+private:
+void incoming_message(const PhaseStartReq& incoming_par, component sender_component);
+protected:
+boolean process_message(const char *message_type, Text_Buf& incoming_buf, component sender_component, OCTETSTRING& slider);
+};
+
+class PTCSet : public Base_Type {
+struct recordof_setof_struct {
+int ref_count;
+int n_elements;
+COMPONENT **value_elements;
+} *val_ptr;
+
+static const COMPONENT UNBOUND_ELEM;
+private:
+friend boolean operator==(null_type null_value, const PTCSet& other_value);
+
+public:
+  typedef COMPONENT of_type;
+PTCSet();
+PTCSet(null_type other_value);
+PTCSet(const PTCSet& other_value);
+~PTCSet();
+
+void clean_up();
+PTCSet& operator=(null_type other_value);
+PTCSet& operator=(const PTCSet& other_value);
+
+boolean operator==(null_type other_value) const;
+boolean operator==(const PTCSet& other_value) const;
+inline boolean operator!=(null_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const PTCSet& other_value) const { return !(*this == other_value); }
+
+COMPONENT& operator[](int index_value);
+COMPONENT& operator[](const INTEGER& index_value);
+const COMPONENT& operator[](int index_value) const;
+const COMPONENT& operator[](const INTEGER& index_value) const;
+
+PTCSet operator<<=(int rotate_count) const;
+PTCSet operator<<=(const INTEGER& rotate_count) const;
+PTCSet operator>>=(int rotate_count) const;
+PTCSet operator>>=(const INTEGER& rotate_count) const;
+
+PTCSet operator+(const PTCSet& other_value) const;
+
+PTCSet substr(int index, int returncount) const;
+
+PTCSet replace(int index, int len, const PTCSet& repl) const;
+
+PTCSet replace(int index, int len, const PTCSet_template& repl) const;
+
+void set_size(int new_size);
+inline boolean is_bound() const {return val_ptr != NULL; }
+inline boolean is_present() const { return is_bound(); }
+boolean is_value() const;
+int size_of() const;
+int n_elem() const { return size_of(); }
+int lengthof() const;
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+};
+
+class PTCSet_template : public Record_Of_Template {
+union {
+struct {
+int n_elements;
+COMPONENT_template **value_elements;
+} single_value;
+struct {
+unsigned int n_values;
+PTCSet_template *list_value;
+} value_list;
+};
+void copy_value(const PTCSet& other_value);
+void copy_template(const PTCSet_template& other_value);
+static boolean match_function_specific(const Base_Type *value_ptr, int value_index, const Restricted_Length_Template *template_ptr, int template_index, boolean legacy);
+
+public:
+PTCSet_template();
+PTCSet_template(template_sel other_value);
+PTCSet_template(null_type other_value);
+PTCSet_template(const PTCSet& other_value);
+PTCSet_template(const OPTIONAL<PTCSet>& other_value);
+PTCSet_template(const PTCSet_template& other_value);
+~PTCSet_template();
+
+void clean_up();
+PTCSet_template& operator=(template_sel other_value);
+PTCSet_template& operator=(null_type other_value);
+PTCSet_template& operator=(const PTCSet& other_value);
+PTCSet_template& operator=(const OPTIONAL<PTCSet>& other_value);
+PTCSet_template& operator=(const PTCSet_template& other_value);
+
+COMPONENT_template& operator[](int index_value);
+COMPONENT_template& operator[](const INTEGER& index_value);
+const COMPONENT_template& operator[](int index_value) const;
+const COMPONENT_template& operator[](const INTEGER& index_value) const;
+
+void set_size(int new_size);
+int n_elem() const;
+int size_of(boolean is_size) const;
+inline int size_of() const { return size_of(TRUE); }
+inline int lengthof() const { return size_of(FALSE); }
+boolean match(const PTCSet& other_value, boolean legacy = FALSE) const;
+inline boolean is_bound() const 
+  {return template_selection != UNINITIALIZED_TEMPLATE; }
+boolean is_value() const;
+PTCSet valueof() const;
+PTCSet substr(int index, int returncount) const;
+
+PTCSet replace(int index, int len, const PTCSet_template& repl) const;
+
+PTCSet replace(int index, int len, const PTCSet& repl) const;
+
+void set_type(template_sel template_type, unsigned int list_length);
+PTCSet_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const PTCSet& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean get_istemplate_kind(const char* type) const;
+};
+
+
+/* Function prototypes */
+
+extern boolean operator==(null_type null_value, const BCM__cmds& other_value);
+inline boolean operator!=(null_type null_value, const BCM__cmds& other_value) { return !(null_value == other_value); }
+extern boolean operator==(null_type null_value, const SocketCAN__CAN__or__CAN__FD__frames& other_value);
+inline boolean operator!=(null_type null_value, const SocketCAN__CAN__or__CAN__FD__frames& other_value) { return !(null_value == other_value); }
+extern boolean operator==(null_type null_value, const PTCSet& other_value);
+inline boolean operator!=(null_type null_value, const PTCSet& other_value) { return !(null_value == other_value); }
+extern alt_status alt__awaitPhaseStartReq_instance(const e__Phase& p__phase);
+extern void alt__awaitPhaseStartReq(const e__Phase& p__phase);
+extern Default_Base *activate_alt__awaitPhaseStartReq(const e__Phase& p__phase);
+extern void f__startPhase(const e__Phase& p__phase);
+extern void start_f__startPhase(const COMPONENT& component_reference, const e__Phase& p__phase);
+extern e__Phase f__incPTCPhase(const e__Phase& p__currentPhase);
+extern void start_f__incPTCPhase(const COMPONENT& component_reference, const e__Phase& p__currentPhase);
+extern void f__sendPhaseEndInd();
+extern void start_f__sendPhaseEndInd(const COMPONENT& component_reference);
+extern void f__addSyncSlaveSet(const COMPONENT& p__slave, PTCSet& p__set);
+extern e__Phase f__incMTCPhase(const e__Phase& p__currentPhase);
+extern void start_f__incMTCPhase(const COMPONENT& component_reference, const e__Phase& p__currentPhase);
+extern void f__awaitEndPhase(const e__Phase& p__phase);
+extern void start_f__awaitEndPhase(const COMPONENT& component_reference, const e__Phase& p__phase);
+extern SocketCAN__Types::SocketCAN__socket__result f__open__socket(const SocketCAN__open__socket__type& v__socket__type);
+extern void start_f__open__socket(const COMPONENT& component_reference, const SocketCAN__open__socket__type& v__socket__type);
+extern SocketCAN__Types::SocketCAN__ioctl__result f__ioctl__get__if__index(const INTEGER& p__socket__id);
+extern void start_f__ioctl__get__if__index(const COMPONENT& component_reference, const INTEGER& p__socket__id);
+extern SocketCAN__Types::SocketCAN__connect__result f__connect(const INTEGER& p__socket__id, const INTEGER& p__if__index);
+extern void start_f__connect(const COMPONENT& component_reference, const INTEGER& p__socket__id, const INTEGER& p__if__index);
+extern SocketCAN__Types::SocketCAN__bind__result f__bind(const INTEGER& p__socket__id, const INTEGER& p__if__index);
+extern void start_f__bind(const COMPONENT& component_reference, const INTEGER& p__socket__id, const INTEGER& p__if__index);
+extern SocketCAN__Types::SocketCAN__send__data__result f__send__data(const INTEGER& p__socket__id, const SocketCAN__Types::SocketCAN__send__data__ifu& p__ifu, const SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame& p__CAN__or__CAN__FD__frame);
+extern void start_f__send__data(const COMPONENT& component_reference, const INTEGER& p__socket__id, const SocketCAN__Types::SocketCAN__send__data__ifu& p__ifu, const SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame& p__CAN__or__CAN__FD__frame);
+extern void f__receive__data(const INTEGER& p__socket__id, const SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame_template& p__frame__expected);
+extern void start_f__receive__data(const COMPONENT& component_reference, const INTEGER& p__socket__id, const SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame_template& p__frame__expected);
+extern void f__receive__no__data__but__timeout(const INTEGER& p__socket__id, const FLOAT& p__timeout__period);
+extern void start_f__receive__no__data__but__timeout(const COMPONENT& component_reference, const INTEGER& p__socket__id, const FLOAT& p__timeout__period);
+extern void f__write__data(const INTEGER& p__socket__id, const Bcm::SocketCAN__bcm__frame& p__bcm__frame);
+extern void start_f__write__data(const COMPONENT& component_reference, const INTEGER& p__socket__id, const Bcm::SocketCAN__bcm__frame& p__bcm__frame);
+extern void f__receive__BCM__message(const INTEGER_template& p__socket__id, const Bcm::SocketCAN__bcm__frame_template& p__BCM__message__expected);
+extern void start_f__receive__BCM__message(const COMPONENT& component_reference, const INTEGER_template& p__socket__id, const Bcm::SocketCAN__bcm__frame_template& p__BCM__message__expected);
+extern SocketCAN__Types::SocketCAN__setsockopt__result f__setsockopt(const INTEGER& p__socket__id, const SocketCAN__Types::SocketCAN__setsockopt__commandu& p__command);
+extern void start_f__setsockopt(const COMPONENT& component_reference, const INTEGER& p__socket__id, const SocketCAN__Types::SocketCAN__setsockopt__commandu& p__command);
+extern void f__close__socket(const INTEGER& p__socket__id);
+extern void start_f__close__socket(const COMPONENT& component_reference, const INTEGER& p__socket__id);
+extern SocketCAN__open__raw__result f__open__raw();
+extern void start_f__open__raw(const COMPONENT& component_reference);
+extern INTEGER f__open__bcm();
+extern void start_f__open__bcm(const COMPONENT& component_reference);
+extern void f__ptc__RawSendInitiator(const e__Phase& p__phase, const SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame& v__frame__send);
+extern void start_f__ptc__RawSendInitiator(const COMPONENT& component_reference, const e__Phase& p__phase, const SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame& v__frame__send);
+extern void f__ptc__RawFrameReceiver(const e__Phase& p__phase, const SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame_template& p__frame__expected);
+extern void start_f__ptc__RawFrameReceiver(const COMPONENT& component_reference, const e__Phase& p__phase, const SocketCAN__Types::SocketCAN__CAN__or__CAN__FD__frame_template& p__frame__expected);
+extern void f__ptc__RawFrameSequenceReceiver(const e__Phase& p__sequence__expected__phase, const SocketCAN__CAN__or__CAN__FD__frames_template& p__frame__sequence__expected, const e__Phase& p__no__further__frames__expected__phase, const FLOAT& p__timeout__period);
+extern void start_f__ptc__RawFrameSequenceReceiver(const COMPONENT& component_reference, const e__Phase& p__sequence__expected__phase, const SocketCAN__CAN__or__CAN__FD__frames_template& p__frame__sequence__expected, const e__Phase& p__no__further__frames__expected__phase, const FLOAT& p__timeout__period);
+extern void f__ptc__bcmComandSendInitiator(const BCM__cmds& p__cmd__list);
+extern void start_f__ptc__bcmComandSendInitiator(const COMPONENT& component_reference, const BCM__cmds& p__cmd__list);
+extern void f__ptc__bcmComandSendReceiveInitiator(const BCM__cmds& p__cmd__list);
+extern void start_f__ptc__bcmComandSendReceiveInitiator(const COMPONENT& component_reference, const BCM__cmds& p__cmd__list);
+extern void f__ptc__bcmSendInitiator(const e__Phase& p__phase, const Bcm::SocketCAN__bcm__frame& p__bcm__frame);
+extern void start_f__ptc__bcmSendInitiator(const COMPONENT& component_reference, const e__Phase& p__phase, const Bcm::SocketCAN__bcm__frame& p__bcm__frame);
+extern void f__raw__setsockopt(const e__Phase& p__phase, const SocketCAN__Types::SocketCAN__setsockopt__commandu& p__setsockopt__command);
+extern void start_f__raw__setsockopt(const COMPONENT& component_reference, const e__Phase& p__phase, const SocketCAN__Types::SocketCAN__setsockopt__commandu& p__setsockopt__command);
+
+/* Global variable declarations */
+
+extern const FLOAT& c__guard;
+extern const TTCN_Typedescriptor_t SocketCAN__open__socket__type_descr_;
+extern const TTCN_Typedescriptor_t e__Phase_descr_;
+extern const XERdescriptor_t SocketCAN__open__raw__result_socket__id_xer_;
+extern const TTCN_OERdescriptor_t SocketCAN__open__raw__result_socket__id_oer_;
+extern const TTCN_Typedescriptor_t SocketCAN__open__raw__result_socket__id_descr_;
+extern const TTCN_Typedescriptor_t SocketCAN__open__raw__result_descr_;
+extern const TTCN_Typedescriptor_t BCM__cmd_descr_;
+extern const TTCN_Typedescriptor_t BCM__cmds_descr_;
+extern const TTCN_Typedescriptor_t SocketCAN__CAN__or__CAN__FD__frames_descr_;
+extern const e__Phase& c__firstPhase;
+extern const e__Phase& c__testcase__complete;
+extern const XERdescriptor_t PhaseStartReq_phase__int_xer_;
+extern const TTCN_OERdescriptor_t PhaseStartReq_phase__int_oer_;
+extern const TTCN_Typedescriptor_t PhaseStartReq_phase__int_descr_;
+extern const TTCN_Typedescriptor_t PhaseStartReq_descr_;
+extern const XERdescriptor_t PhaseEndInd_phase__int_xer_;
+extern const TTCN_OERdescriptor_t PhaseEndInd_phase__int_oer_;
+extern const TTCN_Typedescriptor_t PhaseEndInd_phase__int_descr_;
+extern const TTCN_Typedescriptor_t PhaseEndInd_descr_;
+extern const TTCN_Typedescriptor_t PTCSet_descr_;
+extern const TTCN_Typedescriptor_t& PTC_descr_;
+extern SyncSlavePort PTC_component_pt__sync;
+extern SocketCAN__PortType::SocketCAN__PT PTC_component_pt__socketCAN;
+extern e__Phase PTC_component_v__phase;
+extern const TTCN_Typedescriptor_t& MTC_descr_;
+extern TIMER MTC_component_t__guard;
+extern SyncMasterPort MTC_component_pt__sync;
+extern PTCSet MTC_component_v__PTCSet;
+extern TTCN_Module module_object;
+
+} /* end of namespace */
+
+#endif
diff --git a/demo/SocketCANtest.o b/demo/SocketCANtest.o
new file mode 100644
index 0000000..3604d9f
--- /dev/null
+++ b/demo/SocketCANtest.o
Binary files differ
diff --git a/demo/UnifiedDiagnosticServices.cc b/demo/UnifiedDiagnosticServices.cc
new file mode 100644
index 0000000..36de785
--- /dev/null
+++ b/demo/UnifiedDiagnosticServices.cc
@@ -0,0 +1,74836 @@
+// This C++ source file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+/* Including header files */
+
+#include "UnifiedDiagnosticServices.hh"
+
+namespace UnifiedDiagnosticServices {
+
+/* Prototypes of static functions */
+
+static void pre_init_module();
+static void post_init_module();
+
+/* Literal string constants */
+
+static const unsigned char bs_5_bits[] = { 0 },
+bs_0_bits[] = { 64 },
+bs_1_bits[] = { 32 },
+bs_2_bits[] = { 96 },
+bs_3_bits[] = { 16 },
+bs_4_bits[] = { 80 };
+static const BITSTRING bs_5(7, bs_5_bits),
+bs_0(7, bs_0_bits),
+bs_1(7, bs_1_bits),
+bs_2(7, bs_2_bits),
+bs_3(7, bs_3_bits),
+bs_4(7, bs_4_bits);
+static const unsigned char os_0_octets[] = { 16 },
+os_1_octets[] = { 17 },
+os_5_octets[] = { 34 },
+os_2_octets[] = { 39 },
+os_3_octets[] = { 40 },
+os_6_octets[] = { 46 },
+os_4_octets[] = { 62 },
+os_10_octets[] = { 80 },
+os_11_octets[] = { 81 },
+os_15_octets[] = { 98 },
+os_12_octets[] = { 103 },
+os_13_octets[] = { 104 },
+os_16_octets[] = { 110 },
+os_14_octets[] = { 126 },
+os_17_octets[] = { 127 },
+os_7_octets[] = { 128, 0 },
+os_8_octets[] = { 128, 1 },
+os_9_octets[] = { 128, 2 };
+static const OCTETSTRING os_0(1, os_0_octets),
+os_1(1, os_1_octets),
+os_5(1, os_5_octets),
+os_2(1, os_2_octets),
+os_3(1, os_3_octets),
+os_6(1, os_6_octets),
+os_4(1, os_4_octets),
+os_10(1, os_10_octets),
+os_11(1, os_11_octets),
+os_15(1, os_15_octets),
+os_12(1, os_12_octets),
+os_13(1, os_13_octets),
+os_16(1, os_16_octets),
+os_14(1, os_14_octets),
+os_17(1, os_17_octets),
+os_7(2, os_7_octets),
+os_8(2, os_8_octets),
+os_9(2, os_9_octets);
+static const unsigned char module_checksum[] = { 0x52, 0xba, 0x20, 0x43, 0x42, 0xda, 0x23, 0xb8, 0x50, 0x6f, 0xd6, 0x36, 0x10, 0xde, 0x72, 0xf7 };
+
+/* Global variable definitions */
+
+const XERdescriptor_t       SID_xer_ = { {"SID>\n", "SID>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SID_oer_ext_arr_[0] = {};
+const int SID_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SID_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SID_oer_ext_arr_, 0, SID_oer_p_};
+const TTCN_Typedescriptor_t SID_descr_ = { "@UnifiedDiagnosticServices.SID", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &SID_xer_, &OCTETSTRING_json_, &SID_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SuppressPosRspMsgIndicationBitType_raw_ = {1,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for SuppressPosRspMsgIndicationBitType
+const TTCN_Typedescriptor_t SuppressPosRspMsgIndicationBitType_descr_ = { "@UnifiedDiagnosticServices.SuppressPosRspMsgIndicationBitType", NULL, &SuppressPosRspMsgIndicationBitType_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       DiagnosticSessionType_xer_ = { {"DiagnosticSessionType>\n", "DiagnosticSessionType>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t DiagnosticSessionType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t DiagnosticSessionType_descr_ = { "@UnifiedDiagnosticServices.DiagnosticSessionType", &BITSTRING_ber_, &General__Types::BIT7_raw_, NULL, &DiagnosticSessionType_xer_, &BITSTRING_json_, &DiagnosticSessionType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DefaultSessionRequest_diagnosticSessionType_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,NULL,false};
+const XERdescriptor_t       DefaultSessionRequest_diagnosticSessionType_xer_ = { {"diagnosticSessionType>\n", "diagnosticSessionType>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t DefaultSessionRequest_diagnosticSessionType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t DefaultSessionRequest_diagnosticSessionType_descr_ = { "@UnifiedDiagnosticServices.DefaultSessionRequest.diagnosticSessionType", &BITSTRING_ber_, &DefaultSessionRequest_diagnosticSessionType_raw_, NULL, &DefaultSessionRequest_diagnosticSessionType_xer_, &BITSTRING_json_, &DefaultSessionRequest_diagnosticSessionType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DefaultSessionRequest_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,NULL,false};
+// No XER for DefaultSessionRequest
+const TTCN_Typedescriptor_t DefaultSessionRequest_descr_ = { "@UnifiedDiagnosticServices.DefaultSessionRequest", NULL, &DefaultSessionRequest_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ProgrammingSessionRequest_diagnosticSessionType_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,NULL,false};
+const XERdescriptor_t       ProgrammingSessionRequest_diagnosticSessionType_xer_ = { {"diagnosticSessionType>\n", "diagnosticSessionType>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ProgrammingSessionRequest_diagnosticSessionType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ProgrammingSessionRequest_diagnosticSessionType_descr_ = { "@UnifiedDiagnosticServices.ProgrammingSessionRequest.diagnosticSessionType", &BITSTRING_ber_, &ProgrammingSessionRequest_diagnosticSessionType_raw_, NULL, &ProgrammingSessionRequest_diagnosticSessionType_xer_, &BITSTRING_json_, &ProgrammingSessionRequest_diagnosticSessionType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ProgrammingSessionRequest_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,NULL,false};
+// No XER for ProgrammingSessionRequest
+const TTCN_Typedescriptor_t ProgrammingSessionRequest_descr_ = { "@UnifiedDiagnosticServices.ProgrammingSessionRequest", NULL, &ProgrammingSessionRequest_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedDiagnosticSessionRequest_diagnosticSessionType_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,NULL,false};
+const XERdescriptor_t       ExtendedDiagnosticSessionRequest_diagnosticSessionType_xer_ = { {"diagnosticSessionType>\n", "diagnosticSessionType>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ExtendedDiagnosticSessionRequest_diagnosticSessionType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ExtendedDiagnosticSessionRequest_diagnosticSessionType_descr_ = { "@UnifiedDiagnosticServices.ExtendedDiagnosticSessionRequest.diagnosticSessionType", &BITSTRING_ber_, &ExtendedDiagnosticSessionRequest_diagnosticSessionType_raw_, NULL, &ExtendedDiagnosticSessionRequest_diagnosticSessionType_xer_, &BITSTRING_json_, &ExtendedDiagnosticSessionRequest_diagnosticSessionType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedDiagnosticSessionRequest_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,NULL,false};
+// No XER for ExtendedDiagnosticSessionRequest
+const TTCN_Typedescriptor_t ExtendedDiagnosticSessionRequest_descr_ = { "@UnifiedDiagnosticServices.ExtendedDiagnosticSessionRequest", NULL, &ExtendedDiagnosticSessionRequest_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SafetySystemDiagnosticSessionRequest_diagnosticSessionType_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,NULL,false};
+const XERdescriptor_t       SafetySystemDiagnosticSessionRequest_diagnosticSessionType_xer_ = { {"diagnosticSessionType>\n", "diagnosticSessionType>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SafetySystemDiagnosticSessionRequest_diagnosticSessionType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SafetySystemDiagnosticSessionRequest_diagnosticSessionType_descr_ = { "@UnifiedDiagnosticServices.SafetySystemDiagnosticSessionRequest.diagnosticSessionType", &BITSTRING_ber_, &SafetySystemDiagnosticSessionRequest_diagnosticSessionType_raw_, NULL, &SafetySystemDiagnosticSessionRequest_diagnosticSessionType_xer_, &BITSTRING_json_, &SafetySystemDiagnosticSessionRequest_diagnosticSessionType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SafetySystemDiagnosticSessionRequest_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,NULL,false};
+// No XER for SafetySystemDiagnosticSessionRequest
+const TTCN_Typedescriptor_t SafetySystemDiagnosticSessionRequest_descr_ = { "@UnifiedDiagnosticServices.SafetySystemDiagnosticSessionRequest", NULL, &SafetySystemDiagnosticSessionRequest_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DiagnosticSessionRequestType_raw_ = {7,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for DiagnosticSessionRequestType
+const TTCN_Typedescriptor_t DiagnosticSessionRequestType_descr_ = { "@UnifiedDiagnosticServices.DiagnosticSessionRequestType", NULL, &DiagnosticSessionRequestType_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DiagnosticSessionControlRequestSID_sid_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,NULL,false};
+const XERdescriptor_t       DiagnosticSessionControlRequestSID_sid_xer_ = { {"sid>\n", "sid>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int DiagnosticSessionControlRequestSID_sid_oer_ext_arr_[0] = {};
+const int DiagnosticSessionControlRequestSID_sid_oer_p_[0] = {};
+const TTCN_OERdescriptor_t DiagnosticSessionControlRequestSID_sid_oer_ = { -1, TRUE, 1, FALSE, 0, 0, DiagnosticSessionControlRequestSID_sid_oer_ext_arr_, 0, DiagnosticSessionControlRequestSID_sid_oer_p_};
+const TTCN_Typedescriptor_t DiagnosticSessionControlRequestSID_sid_descr_ = { "@UnifiedDiagnosticServices.DiagnosticSessionControlRequestSID.sid", &OCTETSTRING_ber_, &DiagnosticSessionControlRequestSID_sid_raw_, &OCTETSTRING_text_, &DiagnosticSessionControlRequestSID_sid_xer_, &OCTETSTRING_json_, &DiagnosticSessionControlRequestSID_sid_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DiagnosticSessionControlRequestSID_suppressPosRspMsgIndicationBit_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,NULL,false};
+// No XER for DiagnosticSessionControlRequestSID_suppressPosRspMsgIndicationBit
+const TTCN_Typedescriptor_t DiagnosticSessionControlRequestSID_suppressPosRspMsgIndicationBit_descr_ = { "@UnifiedDiagnosticServices.DiagnosticSessionControlRequestSID.suppressPosRspMsgIndicationBit", NULL, &DiagnosticSessionControlRequestSID_suppressPosRspMsgIndicationBit_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DiagnosticSessionControlRequestSID_diagnosticSessionType_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,NULL,false};
+// No XER for DiagnosticSessionControlRequestSID_diagnosticSessionType
+const TTCN_Typedescriptor_t DiagnosticSessionControlRequestSID_diagnosticSessionType_descr_ = { "@UnifiedDiagnosticServices.DiagnosticSessionControlRequestSID.diagnosticSessionType", NULL, &DiagnosticSessionControlRequestSID_diagnosticSessionType_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DiagnosticSessionControlRequestSID_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,NULL,false};
+// No XER for DiagnosticSessionControlRequestSID
+const TTCN_Typedescriptor_t DiagnosticSessionControlRequestSID_descr_ = { "@UnifiedDiagnosticServices.DiagnosticSessionControlRequestSID", NULL, &DiagnosticSessionControlRequestSID_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DiagnosticSessionControlResponseSID_sid_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,NULL,false};
+const XERdescriptor_t       DiagnosticSessionControlResponseSID_sid_xer_ = { {"sid>\n", "sid>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int DiagnosticSessionControlResponseSID_sid_oer_ext_arr_[0] = {};
+const int DiagnosticSessionControlResponseSID_sid_oer_p_[0] = {};
+const TTCN_OERdescriptor_t DiagnosticSessionControlResponseSID_sid_oer_ = { -1, TRUE, 1, FALSE, 0, 0, DiagnosticSessionControlResponseSID_sid_oer_ext_arr_, 0, DiagnosticSessionControlResponseSID_sid_oer_p_};
+const TTCN_Typedescriptor_t DiagnosticSessionControlResponseSID_sid_descr_ = { "@UnifiedDiagnosticServices.DiagnosticSessionControlResponseSID.sid", &OCTETSTRING_ber_, &DiagnosticSessionControlResponseSID_sid_raw_, &OCTETSTRING_text_, &DiagnosticSessionControlResponseSID_sid_xer_, &OCTETSTRING_json_, &DiagnosticSessionControlResponseSID_sid_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DiagnosticSessionControlResponseSID_reserved_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,NULL,false};
+const XERdescriptor_t       DiagnosticSessionControlResponseSID_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 DiagnosticSessionControlResponseSID_reserved_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t DiagnosticSessionControlResponseSID_reserved_descr_ = { "@UnifiedDiagnosticServices.DiagnosticSessionControlResponseSID.reserved", &BITSTRING_ber_, &DiagnosticSessionControlResponseSID_reserved_raw_, NULL, &DiagnosticSessionControlResponseSID_reserved_xer_, &BITSTRING_json_, &DiagnosticSessionControlResponseSID_reserved_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DiagnosticSessionResponseType_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for DiagnosticSessionResponseType
+const TTCN_Typedescriptor_t DiagnosticSessionResponseType_descr_ = { "@UnifiedDiagnosticServices.DiagnosticSessionResponseType", NULL, &DiagnosticSessionResponseType_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DefaultSessionResponse_diagnosticSessionType_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,NULL,false};
+const XERdescriptor_t       DefaultSessionResponse_diagnosticSessionType_xer_ = { {"diagnosticSessionType>\n", "diagnosticSessionType>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t DefaultSessionResponse_diagnosticSessionType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t DefaultSessionResponse_diagnosticSessionType_descr_ = { "@UnifiedDiagnosticServices.DefaultSessionResponse.diagnosticSessionType", &BITSTRING_ber_, &DefaultSessionResponse_diagnosticSessionType_raw_, NULL, &DefaultSessionResponse_diagnosticSessionType_xer_, &BITSTRING_json_, &DefaultSessionResponse_diagnosticSessionType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DefaultSessionResponse_p2ServerMax_raw_ = {16,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,2,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       DefaultSessionResponse_p2ServerMax_xer_ = { {"p2ServerMax>\n", "p2ServerMax>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int DefaultSessionResponse_p2ServerMax_oer_ext_arr_[0] = {};
+const int DefaultSessionResponse_p2ServerMax_oer_p_[0] = {};
+const TTCN_OERdescriptor_t DefaultSessionResponse_p2ServerMax_oer_ = { -1, TRUE, 2, FALSE, 0, 0, DefaultSessionResponse_p2ServerMax_oer_ext_arr_, 0, DefaultSessionResponse_p2ServerMax_oer_p_};
+const TTCN_Typedescriptor_t DefaultSessionResponse_p2ServerMax_descr_ = { "@UnifiedDiagnosticServices.DefaultSessionResponse.p2ServerMax", &OCTETSTRING_ber_, &DefaultSessionResponse_p2ServerMax_raw_, &OCTETSTRING_text_, &DefaultSessionResponse_p2ServerMax_xer_, &OCTETSTRING_json_, &DefaultSessionResponse_p2ServerMax_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DefaultSessionResponse_p2StarServerMax_raw_ = {16,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,2,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       DefaultSessionResponse_p2StarServerMax_xer_ = { {"p2StarServerMax>\n", "p2StarServerMax>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int DefaultSessionResponse_p2StarServerMax_oer_ext_arr_[0] = {};
+const int DefaultSessionResponse_p2StarServerMax_oer_p_[0] = {};
+const TTCN_OERdescriptor_t DefaultSessionResponse_p2StarServerMax_oer_ = { -1, TRUE, 2, FALSE, 0, 0, DefaultSessionResponse_p2StarServerMax_oer_ext_arr_, 0, DefaultSessionResponse_p2StarServerMax_oer_p_};
+const TTCN_Typedescriptor_t DefaultSessionResponse_p2StarServerMax_descr_ = { "@UnifiedDiagnosticServices.DefaultSessionResponse.p2StarServerMax", &OCTETSTRING_ber_, &DefaultSessionResponse_p2StarServerMax_raw_, &OCTETSTRING_text_, &DefaultSessionResponse_p2StarServerMax_xer_, &OCTETSTRING_json_, &DefaultSessionResponse_p2StarServerMax_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DefaultSessionResponse_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,NULL,false};
+// No XER for DefaultSessionResponse
+const TTCN_Typedescriptor_t DefaultSessionResponse_descr_ = { "@UnifiedDiagnosticServices.DefaultSessionResponse", NULL, &DefaultSessionResponse_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ProgrammingSessionResponse_diagnosticSessionType_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,NULL,false};
+const XERdescriptor_t       ProgrammingSessionResponse_diagnosticSessionType_xer_ = { {"diagnosticSessionType>\n", "diagnosticSessionType>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ProgrammingSessionResponse_diagnosticSessionType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ProgrammingSessionResponse_diagnosticSessionType_descr_ = { "@UnifiedDiagnosticServices.ProgrammingSessionResponse.diagnosticSessionType", &BITSTRING_ber_, &ProgrammingSessionResponse_diagnosticSessionType_raw_, NULL, &ProgrammingSessionResponse_diagnosticSessionType_xer_, &BITSTRING_json_, &ProgrammingSessionResponse_diagnosticSessionType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ProgrammingSessionResponse_p2ServerMax_raw_ = {16,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,2,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       ProgrammingSessionResponse_p2ServerMax_xer_ = { {"p2ServerMax>\n", "p2ServerMax>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ProgrammingSessionResponse_p2ServerMax_oer_ext_arr_[0] = {};
+const int ProgrammingSessionResponse_p2ServerMax_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ProgrammingSessionResponse_p2ServerMax_oer_ = { -1, TRUE, 2, FALSE, 0, 0, ProgrammingSessionResponse_p2ServerMax_oer_ext_arr_, 0, ProgrammingSessionResponse_p2ServerMax_oer_p_};
+const TTCN_Typedescriptor_t ProgrammingSessionResponse_p2ServerMax_descr_ = { "@UnifiedDiagnosticServices.ProgrammingSessionResponse.p2ServerMax", &OCTETSTRING_ber_, &ProgrammingSessionResponse_p2ServerMax_raw_, &OCTETSTRING_text_, &ProgrammingSessionResponse_p2ServerMax_xer_, &OCTETSTRING_json_, &ProgrammingSessionResponse_p2ServerMax_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ProgrammingSessionResponse_p2StarServerMax_raw_ = {16,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,2,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       ProgrammingSessionResponse_p2StarServerMax_xer_ = { {"p2StarServerMax>\n", "p2StarServerMax>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ProgrammingSessionResponse_p2StarServerMax_oer_ext_arr_[0] = {};
+const int ProgrammingSessionResponse_p2StarServerMax_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ProgrammingSessionResponse_p2StarServerMax_oer_ = { -1, TRUE, 2, FALSE, 0, 0, ProgrammingSessionResponse_p2StarServerMax_oer_ext_arr_, 0, ProgrammingSessionResponse_p2StarServerMax_oer_p_};
+const TTCN_Typedescriptor_t ProgrammingSessionResponse_p2StarServerMax_descr_ = { "@UnifiedDiagnosticServices.ProgrammingSessionResponse.p2StarServerMax", &OCTETSTRING_ber_, &ProgrammingSessionResponse_p2StarServerMax_raw_, &OCTETSTRING_text_, &ProgrammingSessionResponse_p2StarServerMax_xer_, &OCTETSTRING_json_, &ProgrammingSessionResponse_p2StarServerMax_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ProgrammingSessionResponse_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,NULL,false};
+// No XER for ProgrammingSessionResponse
+const TTCN_Typedescriptor_t ProgrammingSessionResponse_descr_ = { "@UnifiedDiagnosticServices.ProgrammingSessionResponse", NULL, &ProgrammingSessionResponse_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedDiagnosticSessionResponse_diagnosticSessionType_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,NULL,false};
+const XERdescriptor_t       ExtendedDiagnosticSessionResponse_diagnosticSessionType_xer_ = { {"diagnosticSessionType>\n", "diagnosticSessionType>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ExtendedDiagnosticSessionResponse_diagnosticSessionType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ExtendedDiagnosticSessionResponse_diagnosticSessionType_descr_ = { "@UnifiedDiagnosticServices.ExtendedDiagnosticSessionResponse.diagnosticSessionType", &BITSTRING_ber_, &ExtendedDiagnosticSessionResponse_diagnosticSessionType_raw_, NULL, &ExtendedDiagnosticSessionResponse_diagnosticSessionType_xer_, &BITSTRING_json_, &ExtendedDiagnosticSessionResponse_diagnosticSessionType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedDiagnosticSessionResponse_p2ServerMax_raw_ = {16,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,2,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       ExtendedDiagnosticSessionResponse_p2ServerMax_xer_ = { {"p2ServerMax>\n", "p2ServerMax>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedDiagnosticSessionResponse_p2ServerMax_oer_ext_arr_[0] = {};
+const int ExtendedDiagnosticSessionResponse_p2ServerMax_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedDiagnosticSessionResponse_p2ServerMax_oer_ = { -1, TRUE, 2, FALSE, 0, 0, ExtendedDiagnosticSessionResponse_p2ServerMax_oer_ext_arr_, 0, ExtendedDiagnosticSessionResponse_p2ServerMax_oer_p_};
+const TTCN_Typedescriptor_t ExtendedDiagnosticSessionResponse_p2ServerMax_descr_ = { "@UnifiedDiagnosticServices.ExtendedDiagnosticSessionResponse.p2ServerMax", &OCTETSTRING_ber_, &ExtendedDiagnosticSessionResponse_p2ServerMax_raw_, &OCTETSTRING_text_, &ExtendedDiagnosticSessionResponse_p2ServerMax_xer_, &OCTETSTRING_json_, &ExtendedDiagnosticSessionResponse_p2ServerMax_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedDiagnosticSessionResponse_p2StarServerMax_raw_ = {16,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,2,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       ExtendedDiagnosticSessionResponse_p2StarServerMax_xer_ = { {"p2StarServerMax>\n", "p2StarServerMax>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ExtendedDiagnosticSessionResponse_p2StarServerMax_oer_ext_arr_[0] = {};
+const int ExtendedDiagnosticSessionResponse_p2StarServerMax_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ExtendedDiagnosticSessionResponse_p2StarServerMax_oer_ = { -1, TRUE, 2, FALSE, 0, 0, ExtendedDiagnosticSessionResponse_p2StarServerMax_oer_ext_arr_, 0, ExtendedDiagnosticSessionResponse_p2StarServerMax_oer_p_};
+const TTCN_Typedescriptor_t ExtendedDiagnosticSessionResponse_p2StarServerMax_descr_ = { "@UnifiedDiagnosticServices.ExtendedDiagnosticSessionResponse.p2StarServerMax", &OCTETSTRING_ber_, &ExtendedDiagnosticSessionResponse_p2StarServerMax_raw_, &OCTETSTRING_text_, &ExtendedDiagnosticSessionResponse_p2StarServerMax_xer_, &OCTETSTRING_json_, &ExtendedDiagnosticSessionResponse_p2StarServerMax_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ExtendedDiagnosticSessionResponse_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,NULL,false};
+// No XER for ExtendedDiagnosticSessionResponse
+const TTCN_Typedescriptor_t ExtendedDiagnosticSessionResponse_descr_ = { "@UnifiedDiagnosticServices.ExtendedDiagnosticSessionResponse", NULL, &ExtendedDiagnosticSessionResponse_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SafetySystemDiagnosticSessionResponse_diagnosticSessionType_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,NULL,false};
+const XERdescriptor_t       SafetySystemDiagnosticSessionResponse_diagnosticSessionType_xer_ = { {"diagnosticSessionType>\n", "diagnosticSessionType>\n"}, {23, 23}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SafetySystemDiagnosticSessionResponse_diagnosticSessionType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SafetySystemDiagnosticSessionResponse_diagnosticSessionType_descr_ = { "@UnifiedDiagnosticServices.SafetySystemDiagnosticSessionResponse.diagnosticSessionType", &BITSTRING_ber_, &SafetySystemDiagnosticSessionResponse_diagnosticSessionType_raw_, NULL, &SafetySystemDiagnosticSessionResponse_diagnosticSessionType_xer_, &BITSTRING_json_, &SafetySystemDiagnosticSessionResponse_diagnosticSessionType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SafetySystemDiagnosticSessionResponse_p2ServerMax_raw_ = {16,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,2,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       SafetySystemDiagnosticSessionResponse_p2ServerMax_xer_ = { {"p2ServerMax>\n", "p2ServerMax>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SafetySystemDiagnosticSessionResponse_p2ServerMax_oer_ext_arr_[0] = {};
+const int SafetySystemDiagnosticSessionResponse_p2ServerMax_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SafetySystemDiagnosticSessionResponse_p2ServerMax_oer_ = { -1, TRUE, 2, FALSE, 0, 0, SafetySystemDiagnosticSessionResponse_p2ServerMax_oer_ext_arr_, 0, SafetySystemDiagnosticSessionResponse_p2ServerMax_oer_p_};
+const TTCN_Typedescriptor_t SafetySystemDiagnosticSessionResponse_p2ServerMax_descr_ = { "@UnifiedDiagnosticServices.SafetySystemDiagnosticSessionResponse.p2ServerMax", &OCTETSTRING_ber_, &SafetySystemDiagnosticSessionResponse_p2ServerMax_raw_, &OCTETSTRING_text_, &SafetySystemDiagnosticSessionResponse_p2ServerMax_xer_, &OCTETSTRING_json_, &SafetySystemDiagnosticSessionResponse_p2ServerMax_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SafetySystemDiagnosticSessionResponse_p2StarServerMax_raw_ = {16,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,2,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       SafetySystemDiagnosticSessionResponse_p2StarServerMax_xer_ = { {"p2StarServerMax>\n", "p2StarServerMax>\n"}, {17, 17}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SafetySystemDiagnosticSessionResponse_p2StarServerMax_oer_ext_arr_[0] = {};
+const int SafetySystemDiagnosticSessionResponse_p2StarServerMax_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SafetySystemDiagnosticSessionResponse_p2StarServerMax_oer_ = { -1, TRUE, 2, FALSE, 0, 0, SafetySystemDiagnosticSessionResponse_p2StarServerMax_oer_ext_arr_, 0, SafetySystemDiagnosticSessionResponse_p2StarServerMax_oer_p_};
+const TTCN_Typedescriptor_t SafetySystemDiagnosticSessionResponse_p2StarServerMax_descr_ = { "@UnifiedDiagnosticServices.SafetySystemDiagnosticSessionResponse.p2StarServerMax", &OCTETSTRING_ber_, &SafetySystemDiagnosticSessionResponse_p2StarServerMax_raw_, &OCTETSTRING_text_, &SafetySystemDiagnosticSessionResponse_p2StarServerMax_xer_, &OCTETSTRING_json_, &SafetySystemDiagnosticSessionResponse_p2StarServerMax_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SafetySystemDiagnosticSessionResponse_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,NULL,false};
+// No XER for SafetySystemDiagnosticSessionResponse
+const TTCN_Typedescriptor_t SafetySystemDiagnosticSessionResponse_descr_ = { "@UnifiedDiagnosticServices.SafetySystemDiagnosticSessionResponse", NULL, &SafetySystemDiagnosticSessionResponse_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DiagnosticSessionControlResponseSID_diagnosticSessionType_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,NULL,false};
+// No XER for DiagnosticSessionControlResponseSID_diagnosticSessionType
+const TTCN_Typedescriptor_t DiagnosticSessionControlResponseSID_diagnosticSessionType_descr_ = { "@UnifiedDiagnosticServices.DiagnosticSessionControlResponseSID.diagnosticSessionType", NULL, &DiagnosticSessionControlResponseSID_diagnosticSessionType_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DiagnosticSessionControlResponseSID_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,NULL,false};
+// No XER for DiagnosticSessionControlResponseSID
+const TTCN_Typedescriptor_t DiagnosticSessionControlResponseSID_descr_ = { "@UnifiedDiagnosticServices.DiagnosticSessionControlResponseSID", NULL, &DiagnosticSessionControlResponseSID_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ResetType_xer_ = { {"ResetType>\n", "ResetType>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ResetType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ResetType_descr_ = { "@UnifiedDiagnosticServices.ResetType", &BITSTRING_ber_, &General__Types::BIT7_raw_, NULL, &ResetType_xer_, &BITSTRING_json_, &ResetType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t HardResetRequest_resetType_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,NULL,false};
+const XERdescriptor_t       HardResetRequest_resetType_xer_ = { {"resetType>\n", "resetType>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t HardResetRequest_resetType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t HardResetRequest_resetType_descr_ = { "@UnifiedDiagnosticServices.HardResetRequest.resetType", &BITSTRING_ber_, &HardResetRequest_resetType_raw_, NULL, &HardResetRequest_resetType_xer_, &BITSTRING_json_, &HardResetRequest_resetType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t HardResetRequest_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,NULL,false};
+// No XER for HardResetRequest
+const TTCN_Typedescriptor_t HardResetRequest_descr_ = { "@UnifiedDiagnosticServices.HardResetRequest", NULL, &HardResetRequest_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t KeyOffOnResetRequest_resetType_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,NULL,false};
+const XERdescriptor_t       KeyOffOnResetRequest_resetType_xer_ = { {"resetType>\n", "resetType>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t KeyOffOnResetRequest_resetType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t KeyOffOnResetRequest_resetType_descr_ = { "@UnifiedDiagnosticServices.KeyOffOnResetRequest.resetType", &BITSTRING_ber_, &KeyOffOnResetRequest_resetType_raw_, NULL, &KeyOffOnResetRequest_resetType_xer_, &BITSTRING_json_, &KeyOffOnResetRequest_resetType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t KeyOffOnResetRequest_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,NULL,false};
+// No XER for KeyOffOnResetRequest
+const TTCN_Typedescriptor_t KeyOffOnResetRequest_descr_ = { "@UnifiedDiagnosticServices.KeyOffOnResetRequest", NULL, &KeyOffOnResetRequest_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SoftResetRequest_resetType_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,NULL,false};
+const XERdescriptor_t       SoftResetRequest_resetType_xer_ = { {"resetType>\n", "resetType>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SoftResetRequest_resetType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SoftResetRequest_resetType_descr_ = { "@UnifiedDiagnosticServices.SoftResetRequest.resetType", &BITSTRING_ber_, &SoftResetRequest_resetType_raw_, NULL, &SoftResetRequest_resetType_xer_, &BITSTRING_json_, &SoftResetRequest_resetType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SoftResetRequest_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,NULL,false};
+// No XER for SoftResetRequest
+const TTCN_Typedescriptor_t SoftResetRequest_descr_ = { "@UnifiedDiagnosticServices.SoftResetRequest", NULL, &SoftResetRequest_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EnableRapidPowerShutDownRequest_resetType_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,NULL,false};
+const XERdescriptor_t       EnableRapidPowerShutDownRequest_resetType_xer_ = { {"resetType>\n", "resetType>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t EnableRapidPowerShutDownRequest_resetType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t EnableRapidPowerShutDownRequest_resetType_descr_ = { "@UnifiedDiagnosticServices.EnableRapidPowerShutDownRequest.resetType", &BITSTRING_ber_, &EnableRapidPowerShutDownRequest_resetType_raw_, NULL, &EnableRapidPowerShutDownRequest_resetType_xer_, &BITSTRING_json_, &EnableRapidPowerShutDownRequest_resetType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EnableRapidPowerShutDownRequest_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,NULL,false};
+// No XER for EnableRapidPowerShutDownRequest
+const TTCN_Typedescriptor_t EnableRapidPowerShutDownRequest_descr_ = { "@UnifiedDiagnosticServices.EnableRapidPowerShutDownRequest", NULL, &EnableRapidPowerShutDownRequest_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DisableRapidPowerShutDownRequest_resetType_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,NULL,false};
+const XERdescriptor_t       DisableRapidPowerShutDownRequest_resetType_xer_ = { {"resetType>\n", "resetType>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t DisableRapidPowerShutDownRequest_resetType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t DisableRapidPowerShutDownRequest_resetType_descr_ = { "@UnifiedDiagnosticServices.DisableRapidPowerShutDownRequest.resetType", &BITSTRING_ber_, &DisableRapidPowerShutDownRequest_resetType_raw_, NULL, &DisableRapidPowerShutDownRequest_resetType_xer_, &BITSTRING_json_, &DisableRapidPowerShutDownRequest_resetType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DisableRapidPowerShutDownRequest_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,NULL,false};
+// No XER for DisableRapidPowerShutDownRequest
+const TTCN_Typedescriptor_t DisableRapidPowerShutDownRequest_descr_ = { "@UnifiedDiagnosticServices.DisableRapidPowerShutDownRequest", NULL, &DisableRapidPowerShutDownRequest_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ECUResetRequestType_raw_ = {7,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ECUResetRequestType
+const TTCN_Typedescriptor_t ECUResetRequestType_descr_ = { "@UnifiedDiagnosticServices.ECUResetRequestType", NULL, &ECUResetRequestType_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t HardResetResponse_resetType_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,NULL,false};
+const XERdescriptor_t       HardResetResponse_resetType_xer_ = { {"resetType>\n", "resetType>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t HardResetResponse_resetType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t HardResetResponse_resetType_descr_ = { "@UnifiedDiagnosticServices.HardResetResponse.resetType", &BITSTRING_ber_, &HardResetResponse_resetType_raw_, NULL, &HardResetResponse_resetType_xer_, &BITSTRING_json_, &HardResetResponse_resetType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t HardResetResponse_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,NULL,false};
+// No XER for HardResetResponse
+const TTCN_Typedescriptor_t HardResetResponse_descr_ = { "@UnifiedDiagnosticServices.HardResetResponse", NULL, &HardResetResponse_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t KeyOffOnResetResponse_resetType_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,NULL,false};
+const XERdescriptor_t       KeyOffOnResetResponse_resetType_xer_ = { {"resetType>\n", "resetType>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t KeyOffOnResetResponse_resetType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t KeyOffOnResetResponse_resetType_descr_ = { "@UnifiedDiagnosticServices.KeyOffOnResetResponse.resetType", &BITSTRING_ber_, &KeyOffOnResetResponse_resetType_raw_, NULL, &KeyOffOnResetResponse_resetType_xer_, &BITSTRING_json_, &KeyOffOnResetResponse_resetType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t KeyOffOnResetResponse_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,NULL,false};
+// No XER for KeyOffOnResetResponse
+const TTCN_Typedescriptor_t KeyOffOnResetResponse_descr_ = { "@UnifiedDiagnosticServices.KeyOffOnResetResponse", NULL, &KeyOffOnResetResponse_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SoftResetResponse_resetType_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,NULL,false};
+const XERdescriptor_t       SoftResetResponse_resetType_xer_ = { {"resetType>\n", "resetType>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SoftResetResponse_resetType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SoftResetResponse_resetType_descr_ = { "@UnifiedDiagnosticServices.SoftResetResponse.resetType", &BITSTRING_ber_, &SoftResetResponse_resetType_raw_, NULL, &SoftResetResponse_resetType_xer_, &BITSTRING_json_, &SoftResetResponse_resetType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SoftResetResponse_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,NULL,false};
+// No XER for SoftResetResponse
+const TTCN_Typedescriptor_t SoftResetResponse_descr_ = { "@UnifiedDiagnosticServices.SoftResetResponse", NULL, &SoftResetResponse_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       PowerDownTime_xer_ = { {"PowerDownTime>\n", "PowerDownTime>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int PowerDownTime_oer_ext_arr_[0] = {};
+const int PowerDownTime_oer_p_[0] = {};
+const TTCN_OERdescriptor_t PowerDownTime_oer_ = { -1, TRUE, 1, FALSE, 0, 0, PowerDownTime_oer_ext_arr_, 0, PowerDownTime_oer_p_};
+const TTCN_Typedescriptor_t PowerDownTime_descr_ = { "@UnifiedDiagnosticServices.PowerDownTime", &OCTETSTRING_ber_, &General__Types::OCT1_raw_, &OCTETSTRING_text_, &PowerDownTime_xer_, &OCTETSTRING_json_, &PowerDownTime_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EnableRapidPowerShutDownResponse_resetType_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,NULL,false};
+const XERdescriptor_t       EnableRapidPowerShutDownResponse_resetType_xer_ = { {"resetType>\n", "resetType>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t EnableRapidPowerShutDownResponse_resetType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t EnableRapidPowerShutDownResponse_resetType_descr_ = { "@UnifiedDiagnosticServices.EnableRapidPowerShutDownResponse.resetType", &BITSTRING_ber_, &EnableRapidPowerShutDownResponse_resetType_raw_, NULL, &EnableRapidPowerShutDownResponse_resetType_xer_, &BITSTRING_json_, &EnableRapidPowerShutDownResponse_resetType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EnableRapidPowerShutDownResponse_powerDownTime_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,NULL,false};
+const XERdescriptor_t       EnableRapidPowerShutDownResponse_powerDownTime_xer_ = { {"powerDownTime>\n", "powerDownTime>\n"}, {15, 15}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int EnableRapidPowerShutDownResponse_powerDownTime_oer_ext_arr_[0] = {};
+const int EnableRapidPowerShutDownResponse_powerDownTime_oer_p_[0] = {};
+const TTCN_OERdescriptor_t EnableRapidPowerShutDownResponse_powerDownTime_oer_ = { -1, TRUE, 1, FALSE, 0, 0, EnableRapidPowerShutDownResponse_powerDownTime_oer_ext_arr_, 0, EnableRapidPowerShutDownResponse_powerDownTime_oer_p_};
+const TTCN_Typedescriptor_t EnableRapidPowerShutDownResponse_powerDownTime_descr_ = { "@UnifiedDiagnosticServices.EnableRapidPowerShutDownResponse.powerDownTime", &OCTETSTRING_ber_, &EnableRapidPowerShutDownResponse_powerDownTime_raw_, &OCTETSTRING_text_, &EnableRapidPowerShutDownResponse_powerDownTime_xer_, &OCTETSTRING_json_, &EnableRapidPowerShutDownResponse_powerDownTime_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EnableRapidPowerShutDownResponse_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,NULL,false};
+// No XER for EnableRapidPowerShutDownResponse
+const TTCN_Typedescriptor_t EnableRapidPowerShutDownResponse_descr_ = { "@UnifiedDiagnosticServices.EnableRapidPowerShutDownResponse", NULL, &EnableRapidPowerShutDownResponse_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DisableRapidPowerShutDownResponse_resetType_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,NULL,false};
+const XERdescriptor_t       DisableRapidPowerShutDownResponse_resetType_xer_ = { {"resetType>\n", "resetType>\n"}, {11, 11}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t DisableRapidPowerShutDownResponse_resetType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t DisableRapidPowerShutDownResponse_resetType_descr_ = { "@UnifiedDiagnosticServices.DisableRapidPowerShutDownResponse.resetType", &BITSTRING_ber_, &DisableRapidPowerShutDownResponse_resetType_raw_, NULL, &DisableRapidPowerShutDownResponse_resetType_xer_, &BITSTRING_json_, &DisableRapidPowerShutDownResponse_resetType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DisableRapidPowerShutDownResponse_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,NULL,false};
+// No XER for DisableRapidPowerShutDownResponse
+const TTCN_Typedescriptor_t DisableRapidPowerShutDownResponse_descr_ = { "@UnifiedDiagnosticServices.DisableRapidPowerShutDownResponse", NULL, &DisableRapidPowerShutDownResponse_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ECUResetResponseType_raw_ = {7,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ECUResetResponseType
+const TTCN_Typedescriptor_t ECUResetResponseType_descr_ = { "@UnifiedDiagnosticServices.ECUResetResponseType", NULL, &ECUResetResponseType_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ECUResetRequestSID_sid_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,NULL,false};
+const XERdescriptor_t       ECUResetRequestSID_sid_xer_ = { {"sid>\n", "sid>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ECUResetRequestSID_sid_oer_ext_arr_[0] = {};
+const int ECUResetRequestSID_sid_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ECUResetRequestSID_sid_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ECUResetRequestSID_sid_oer_ext_arr_, 0, ECUResetRequestSID_sid_oer_p_};
+const TTCN_Typedescriptor_t ECUResetRequestSID_sid_descr_ = { "@UnifiedDiagnosticServices.ECUResetRequestSID.sid", &OCTETSTRING_ber_, &ECUResetRequestSID_sid_raw_, &OCTETSTRING_text_, &ECUResetRequestSID_sid_xer_, &OCTETSTRING_json_, &ECUResetRequestSID_sid_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ECUResetRequestSID_suppressPosRspMsgIndicationBit_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,NULL,false};
+// No XER for ECUResetRequestSID_suppressPosRspMsgIndicationBit
+const TTCN_Typedescriptor_t ECUResetRequestSID_suppressPosRspMsgIndicationBit_descr_ = { "@UnifiedDiagnosticServices.ECUResetRequestSID.suppressPosRspMsgIndicationBit", NULL, &ECUResetRequestSID_suppressPosRspMsgIndicationBit_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ECUResetRequestSID_resetType_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,NULL,false};
+// No XER for ECUResetRequestSID_resetType
+const TTCN_Typedescriptor_t ECUResetRequestSID_resetType_descr_ = { "@UnifiedDiagnosticServices.ECUResetRequestSID.resetType", NULL, &ECUResetRequestSID_resetType_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ECUResetRequestSID_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,NULL,false};
+// No XER for ECUResetRequestSID
+const TTCN_Typedescriptor_t ECUResetRequestSID_descr_ = { "@UnifiedDiagnosticServices.ECUResetRequestSID", NULL, &ECUResetRequestSID_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ECUResetResponseSID_sid_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,NULL,false};
+const XERdescriptor_t       ECUResetResponseSID_sid_xer_ = { {"sid>\n", "sid>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ECUResetResponseSID_sid_oer_ext_arr_[0] = {};
+const int ECUResetResponseSID_sid_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ECUResetResponseSID_sid_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ECUResetResponseSID_sid_oer_ext_arr_, 0, ECUResetResponseSID_sid_oer_p_};
+const TTCN_Typedescriptor_t ECUResetResponseSID_sid_descr_ = { "@UnifiedDiagnosticServices.ECUResetResponseSID.sid", &OCTETSTRING_ber_, &ECUResetResponseSID_sid_raw_, &OCTETSTRING_text_, &ECUResetResponseSID_sid_xer_, &OCTETSTRING_json_, &ECUResetResponseSID_sid_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ECUResetResponseSID_reserved_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,NULL,false};
+const XERdescriptor_t       ECUResetResponseSID_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 ECUResetResponseSID_reserved_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ECUResetResponseSID_reserved_descr_ = { "@UnifiedDiagnosticServices.ECUResetResponseSID.reserved", &BITSTRING_ber_, &ECUResetResponseSID_reserved_raw_, NULL, &ECUResetResponseSID_reserved_xer_, &BITSTRING_json_, &ECUResetResponseSID_reserved_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ECUResetResponseSID_resetType_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,NULL,false};
+// No XER for ECUResetResponseSID_resetType
+const TTCN_Typedescriptor_t ECUResetResponseSID_resetType_descr_ = { "@UnifiedDiagnosticServices.ECUResetResponseSID.resetType", NULL, &ECUResetResponseSID_resetType_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ECUResetResponseSID_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,NULL,false};
+// No XER for ECUResetResponseSID
+const TTCN_Typedescriptor_t ECUResetResponseSID_descr_ = { "@UnifiedDiagnosticServices.ECUResetResponseSID", NULL, &ECUResetResponseSID_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       SecurityAccessType_xer_ = { {"SecurityAccessType>\n", "SecurityAccessType>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SecurityAccessType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SecurityAccessType_descr_ = { "@UnifiedDiagnosticServices.SecurityAccessType", &BITSTRING_ber_, &General__Types::BIT7_raw_, NULL, &SecurityAccessType_xer_, &BITSTRING_json_, &SecurityAccessType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t RequestSeedRequest0_securityAccessType_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,NULL,false};
+const XERdescriptor_t       RequestSeedRequest0_securityAccessType_xer_ = { {"securityAccessType>\n", "securityAccessType>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t RequestSeedRequest0_securityAccessType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t RequestSeedRequest0_securityAccessType_descr_ = { "@UnifiedDiagnosticServices.RequestSeedRequest0.securityAccessType", &BITSTRING_ber_, &RequestSeedRequest0_securityAccessType_raw_, NULL, &RequestSeedRequest0_securityAccessType_xer_, &BITSTRING_json_, &RequestSeedRequest0_securityAccessType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t RequestSeedRequest0_securityAccessDataRecord_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,NULL,false};
+const XERdescriptor_t       RequestSeedRequest0_securityAccessDataRecord_xer_ = { {"securityAccessDataRecord>\n", "securityAccessDataRecord>\n"}, {26, 26}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int RequestSeedRequest0_securityAccessDataRecord_oer_ext_arr_[0] = {};
+const int RequestSeedRequest0_securityAccessDataRecord_oer_p_[0] = {};
+const TTCN_OERdescriptor_t RequestSeedRequest0_securityAccessDataRecord_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RequestSeedRequest0_securityAccessDataRecord_oer_ext_arr_, 0, RequestSeedRequest0_securityAccessDataRecord_oer_p_};
+const TTCN_Typedescriptor_t RequestSeedRequest0_securityAccessDataRecord_descr_ = { "@UnifiedDiagnosticServices.RequestSeedRequest0.securityAccessDataRecord", &OCTETSTRING_ber_, &RequestSeedRequest0_securityAccessDataRecord_raw_, &OCTETSTRING_text_, &RequestSeedRequest0_securityAccessDataRecord_xer_, &OCTETSTRING_json_, &RequestSeedRequest0_securityAccessDataRecord_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t RequestSeedRequest0_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,NULL,false};
+// No XER for RequestSeedRequest0
+const TTCN_Typedescriptor_t RequestSeedRequest0_descr_ = { "@UnifiedDiagnosticServices.RequestSeedRequest0", NULL, &RequestSeedRequest0_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SendKeyRequest0_securityAccessType_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,NULL,false};
+const XERdescriptor_t       SendKeyRequest0_securityAccessType_xer_ = { {"securityAccessType>\n", "securityAccessType>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SendKeyRequest0_securityAccessType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SendKeyRequest0_securityAccessType_descr_ = { "@UnifiedDiagnosticServices.SendKeyRequest0.securityAccessType", &BITSTRING_ber_, &SendKeyRequest0_securityAccessType_raw_, NULL, &SendKeyRequest0_securityAccessType_xer_, &BITSTRING_json_, &SendKeyRequest0_securityAccessType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SendKeyRequest0_securityKey_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,NULL,false};
+const XERdescriptor_t       SendKeyRequest0_securityKey_xer_ = { {"securityKey>\n", "securityKey>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SendKeyRequest0_securityKey_oer_ext_arr_[0] = {};
+const int SendKeyRequest0_securityKey_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SendKeyRequest0_securityKey_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SendKeyRequest0_securityKey_oer_ext_arr_, 0, SendKeyRequest0_securityKey_oer_p_};
+const TTCN_Typedescriptor_t SendKeyRequest0_securityKey_descr_ = { "@UnifiedDiagnosticServices.SendKeyRequest0.securityKey", &OCTETSTRING_ber_, &SendKeyRequest0_securityKey_raw_, &OCTETSTRING_text_, &SendKeyRequest0_securityKey_xer_, &OCTETSTRING_json_, &SendKeyRequest0_securityKey_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SendKeyRequest0_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,NULL,false};
+// No XER for SendKeyRequest0
+const TTCN_Typedescriptor_t SendKeyRequest0_descr_ = { "@UnifiedDiagnosticServices.SendKeyRequest0", NULL, &SendKeyRequest0_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t RequestSeedRequest1_securityAccessType_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,NULL,false};
+const XERdescriptor_t       RequestSeedRequest1_securityAccessType_xer_ = { {"securityAccessType>\n", "securityAccessType>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t RequestSeedRequest1_securityAccessType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t RequestSeedRequest1_securityAccessType_descr_ = { "@UnifiedDiagnosticServices.RequestSeedRequest1.securityAccessType", &BITSTRING_ber_, &RequestSeedRequest1_securityAccessType_raw_, NULL, &RequestSeedRequest1_securityAccessType_xer_, &BITSTRING_json_, &RequestSeedRequest1_securityAccessType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t RequestSeedRequest1_securityAccessDataRecord_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,NULL,false};
+const XERdescriptor_t       RequestSeedRequest1_securityAccessDataRecord_xer_ = { {"securityAccessDataRecord>\n", "securityAccessDataRecord>\n"}, {26, 26}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int RequestSeedRequest1_securityAccessDataRecord_oer_ext_arr_[0] = {};
+const int RequestSeedRequest1_securityAccessDataRecord_oer_p_[0] = {};
+const TTCN_OERdescriptor_t RequestSeedRequest1_securityAccessDataRecord_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RequestSeedRequest1_securityAccessDataRecord_oer_ext_arr_, 0, RequestSeedRequest1_securityAccessDataRecord_oer_p_};
+const TTCN_Typedescriptor_t RequestSeedRequest1_securityAccessDataRecord_descr_ = { "@UnifiedDiagnosticServices.RequestSeedRequest1.securityAccessDataRecord", &OCTETSTRING_ber_, &RequestSeedRequest1_securityAccessDataRecord_raw_, &OCTETSTRING_text_, &RequestSeedRequest1_securityAccessDataRecord_xer_, &OCTETSTRING_json_, &RequestSeedRequest1_securityAccessDataRecord_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t RequestSeedRequest1_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,NULL,false};
+// No XER for RequestSeedRequest1
+const TTCN_Typedescriptor_t RequestSeedRequest1_descr_ = { "@UnifiedDiagnosticServices.RequestSeedRequest1", NULL, &RequestSeedRequest1_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SendKeyRequest1_securityAccessType_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,NULL,false};
+const XERdescriptor_t       SendKeyRequest1_securityAccessType_xer_ = { {"securityAccessType>\n", "securityAccessType>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SendKeyRequest1_securityAccessType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SendKeyRequest1_securityAccessType_descr_ = { "@UnifiedDiagnosticServices.SendKeyRequest1.securityAccessType", &BITSTRING_ber_, &SendKeyRequest1_securityAccessType_raw_, NULL, &SendKeyRequest1_securityAccessType_xer_, &BITSTRING_json_, &SendKeyRequest1_securityAccessType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SendKeyRequest1_securityKey_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,NULL,false};
+const XERdescriptor_t       SendKeyRequest1_securityKey_xer_ = { {"securityKey>\n", "securityKey>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SendKeyRequest1_securityKey_oer_ext_arr_[0] = {};
+const int SendKeyRequest1_securityKey_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SendKeyRequest1_securityKey_oer_ = { -1, TRUE, -1, FALSE, 0, 0, SendKeyRequest1_securityKey_oer_ext_arr_, 0, SendKeyRequest1_securityKey_oer_p_};
+const TTCN_Typedescriptor_t SendKeyRequest1_securityKey_descr_ = { "@UnifiedDiagnosticServices.SendKeyRequest1.securityKey", &OCTETSTRING_ber_, &SendKeyRequest1_securityKey_raw_, &OCTETSTRING_text_, &SendKeyRequest1_securityKey_xer_, &OCTETSTRING_json_, &SendKeyRequest1_securityKey_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SendKeyRequest1_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,NULL,false};
+// No XER for SendKeyRequest1
+const TTCN_Typedescriptor_t SendKeyRequest1_descr_ = { "@UnifiedDiagnosticServices.SendKeyRequest1", NULL, &SendKeyRequest1_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SecurityAccessRequestType_raw_ = {7,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for SecurityAccessRequestType
+const TTCN_Typedescriptor_t SecurityAccessRequestType_descr_ = { "@UnifiedDiagnosticServices.SecurityAccessRequestType", NULL, &SecurityAccessRequestType_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SecurityAccessRequestSID_sid_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,NULL,false};
+const XERdescriptor_t       SecurityAccessRequestSID_sid_xer_ = { {"sid>\n", "sid>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SecurityAccessRequestSID_sid_oer_ext_arr_[0] = {};
+const int SecurityAccessRequestSID_sid_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SecurityAccessRequestSID_sid_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SecurityAccessRequestSID_sid_oer_ext_arr_, 0, SecurityAccessRequestSID_sid_oer_p_};
+const TTCN_Typedescriptor_t SecurityAccessRequestSID_sid_descr_ = { "@UnifiedDiagnosticServices.SecurityAccessRequestSID.sid", &OCTETSTRING_ber_, &SecurityAccessRequestSID_sid_raw_, &OCTETSTRING_text_, &SecurityAccessRequestSID_sid_xer_, &OCTETSTRING_json_, &SecurityAccessRequestSID_sid_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SecurityAccessRequestSID_suppressPosRspMsgIndicationBit_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,NULL,false};
+// No XER for SecurityAccessRequestSID_suppressPosRspMsgIndicationBit
+const TTCN_Typedescriptor_t SecurityAccessRequestSID_suppressPosRspMsgIndicationBit_descr_ = { "@UnifiedDiagnosticServices.SecurityAccessRequestSID.suppressPosRspMsgIndicationBit", NULL, &SecurityAccessRequestSID_suppressPosRspMsgIndicationBit_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SecurityAccessRequestSID_securityAccessType_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,NULL,false};
+// No XER for SecurityAccessRequestSID_securityAccessType
+const TTCN_Typedescriptor_t SecurityAccessRequestSID_securityAccessType_descr_ = { "@UnifiedDiagnosticServices.SecurityAccessRequestSID.securityAccessType", NULL, &SecurityAccessRequestSID_securityAccessType_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SecurityAccessRequestSID_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,NULL,false};
+// No XER for SecurityAccessRequestSID
+const TTCN_Typedescriptor_t SecurityAccessRequestSID_descr_ = { "@UnifiedDiagnosticServices.SecurityAccessRequestSID", NULL, &SecurityAccessRequestSID_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t RequestSeedResponse0_securityAccessType_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,NULL,false};
+const XERdescriptor_t       RequestSeedResponse0_securityAccessType_xer_ = { {"securityAccessType>\n", "securityAccessType>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t RequestSeedResponse0_securityAccessType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t RequestSeedResponse0_securityAccessType_descr_ = { "@UnifiedDiagnosticServices.RequestSeedResponse0.securityAccessType", &BITSTRING_ber_, &RequestSeedResponse0_securityAccessType_raw_, NULL, &RequestSeedResponse0_securityAccessType_xer_, &BITSTRING_json_, &RequestSeedResponse0_securityAccessType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t RequestSeedResponse0_securitySeed_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,NULL,false};
+const XERdescriptor_t       RequestSeedResponse0_securitySeed_xer_ = { {"securitySeed>\n", "securitySeed>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int RequestSeedResponse0_securitySeed_oer_ext_arr_[0] = {};
+const int RequestSeedResponse0_securitySeed_oer_p_[0] = {};
+const TTCN_OERdescriptor_t RequestSeedResponse0_securitySeed_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RequestSeedResponse0_securitySeed_oer_ext_arr_, 0, RequestSeedResponse0_securitySeed_oer_p_};
+const TTCN_Typedescriptor_t RequestSeedResponse0_securitySeed_descr_ = { "@UnifiedDiagnosticServices.RequestSeedResponse0.securitySeed", &OCTETSTRING_ber_, &RequestSeedResponse0_securitySeed_raw_, &OCTETSTRING_text_, &RequestSeedResponse0_securitySeed_xer_, &OCTETSTRING_json_, &RequestSeedResponse0_securitySeed_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t RequestSeedResponse0_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,NULL,false};
+// No XER for RequestSeedResponse0
+const TTCN_Typedescriptor_t RequestSeedResponse0_descr_ = { "@UnifiedDiagnosticServices.RequestSeedResponse0", NULL, &RequestSeedResponse0_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SendKeyResponse0_securityAccessType_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,NULL,false};
+const XERdescriptor_t       SendKeyResponse0_securityAccessType_xer_ = { {"securityAccessType>\n", "securityAccessType>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SendKeyResponse0_securityAccessType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SendKeyResponse0_securityAccessType_descr_ = { "@UnifiedDiagnosticServices.SendKeyResponse0.securityAccessType", &BITSTRING_ber_, &SendKeyResponse0_securityAccessType_raw_, NULL, &SendKeyResponse0_securityAccessType_xer_, &BITSTRING_json_, &SendKeyResponse0_securityAccessType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SendKeyResponse0_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,NULL,false};
+// No XER for SendKeyResponse0
+const TTCN_Typedescriptor_t SendKeyResponse0_descr_ = { "@UnifiedDiagnosticServices.SendKeyResponse0", NULL, &SendKeyResponse0_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t RequestSeedResponse1_securityAccessType_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,NULL,false};
+const XERdescriptor_t       RequestSeedResponse1_securityAccessType_xer_ = { {"securityAccessType>\n", "securityAccessType>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t RequestSeedResponse1_securityAccessType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t RequestSeedResponse1_securityAccessType_descr_ = { "@UnifiedDiagnosticServices.RequestSeedResponse1.securityAccessType", &BITSTRING_ber_, &RequestSeedResponse1_securityAccessType_raw_, NULL, &RequestSeedResponse1_securityAccessType_xer_, &BITSTRING_json_, &RequestSeedResponse1_securityAccessType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t RequestSeedResponse1_securitySeed_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,NULL,false};
+const XERdescriptor_t       RequestSeedResponse1_securitySeed_xer_ = { {"securitySeed>\n", "securitySeed>\n"}, {14, 14}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int RequestSeedResponse1_securitySeed_oer_ext_arr_[0] = {};
+const int RequestSeedResponse1_securitySeed_oer_p_[0] = {};
+const TTCN_OERdescriptor_t RequestSeedResponse1_securitySeed_oer_ = { -1, TRUE, -1, FALSE, 0, 0, RequestSeedResponse1_securitySeed_oer_ext_arr_, 0, RequestSeedResponse1_securitySeed_oer_p_};
+const TTCN_Typedescriptor_t RequestSeedResponse1_securitySeed_descr_ = { "@UnifiedDiagnosticServices.RequestSeedResponse1.securitySeed", &OCTETSTRING_ber_, &RequestSeedResponse1_securitySeed_raw_, &OCTETSTRING_text_, &RequestSeedResponse1_securitySeed_xer_, &OCTETSTRING_json_, &RequestSeedResponse1_securitySeed_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t RequestSeedResponse1_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,NULL,false};
+// No XER for RequestSeedResponse1
+const TTCN_Typedescriptor_t RequestSeedResponse1_descr_ = { "@UnifiedDiagnosticServices.RequestSeedResponse1", NULL, &RequestSeedResponse1_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SendKeyResponse1_securityAccessType_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,NULL,false};
+const XERdescriptor_t       SendKeyResponse1_securityAccessType_xer_ = { {"securityAccessType>\n", "securityAccessType>\n"}, {20, 20}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t SendKeyResponse1_securityAccessType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SendKeyResponse1_securityAccessType_descr_ = { "@UnifiedDiagnosticServices.SendKeyResponse1.securityAccessType", &BITSTRING_ber_, &SendKeyResponse1_securityAccessType_raw_, NULL, &SendKeyResponse1_securityAccessType_xer_, &BITSTRING_json_, &SendKeyResponse1_securityAccessType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SendKeyResponse1_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,NULL,false};
+// No XER for SendKeyResponse1
+const TTCN_Typedescriptor_t SendKeyResponse1_descr_ = { "@UnifiedDiagnosticServices.SendKeyResponse1", NULL, &SendKeyResponse1_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SecurityAccessResponseType_raw_ = {7,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for SecurityAccessResponseType
+const TTCN_Typedescriptor_t SecurityAccessResponseType_descr_ = { "@UnifiedDiagnosticServices.SecurityAccessResponseType", NULL, &SecurityAccessResponseType_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SecurityAccessResponseSID_sid_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,NULL,false};
+const XERdescriptor_t       SecurityAccessResponseSID_sid_xer_ = { {"sid>\n", "sid>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int SecurityAccessResponseSID_sid_oer_ext_arr_[0] = {};
+const int SecurityAccessResponseSID_sid_oer_p_[0] = {};
+const TTCN_OERdescriptor_t SecurityAccessResponseSID_sid_oer_ = { -1, TRUE, 1, FALSE, 0, 0, SecurityAccessResponseSID_sid_oer_ext_arr_, 0, SecurityAccessResponseSID_sid_oer_p_};
+const TTCN_Typedescriptor_t SecurityAccessResponseSID_sid_descr_ = { "@UnifiedDiagnosticServices.SecurityAccessResponseSID.sid", &OCTETSTRING_ber_, &SecurityAccessResponseSID_sid_raw_, &OCTETSTRING_text_, &SecurityAccessResponseSID_sid_xer_, &OCTETSTRING_json_, &SecurityAccessResponseSID_sid_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SecurityAccessResponseSID_reserved_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,NULL,false};
+const XERdescriptor_t       SecurityAccessResponseSID_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 SecurityAccessResponseSID_reserved_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t SecurityAccessResponseSID_reserved_descr_ = { "@UnifiedDiagnosticServices.SecurityAccessResponseSID.reserved", &BITSTRING_ber_, &SecurityAccessResponseSID_reserved_raw_, NULL, &SecurityAccessResponseSID_reserved_xer_, &BITSTRING_json_, &SecurityAccessResponseSID_reserved_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SecurityAccessResponseSID_securityAccessType_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,NULL,false};
+// No XER for SecurityAccessResponseSID_securityAccessType
+const TTCN_Typedescriptor_t SecurityAccessResponseSID_securityAccessType_descr_ = { "@UnifiedDiagnosticServices.SecurityAccessResponseSID.securityAccessType", NULL, &SecurityAccessResponseSID_securityAccessType_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t SecurityAccessResponseSID_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,NULL,false};
+// No XER for SecurityAccessResponseSID
+const TTCN_Typedescriptor_t SecurityAccessResponseSID_descr_ = { "@UnifiedDiagnosticServices.SecurityAccessResponseSID", NULL, &SecurityAccessResponseSID_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ControlType_xer_ = { {"ControlType>\n", "ControlType>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t ControlType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t ControlType_descr_ = { "@UnifiedDiagnosticServices.ControlType", &BITSTRING_ber_, &General__Types::BIT7_raw_, NULL, &ControlType_xer_, &BITSTRING_json_, &ControlType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t e__ControlType_raw_ = {7,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for e__ControlType
+const TTCN_Typedescriptor_t e__ControlType_descr_ = { "@UnifiedDiagnosticServices.e_ControlType", NULL, &e__ControlType_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t e__DisableEnable_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,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for e__DisableEnable
+const TTCN_Typedescriptor_t e__DisableEnable_descr_ = { "@UnifiedDiagnosticServices.e_DisableEnable", NULL, &e__DisableEnable_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t e__CommunicationMessages_raw_ = {2,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for e__CommunicationMessages
+const TTCN_Typedescriptor_t e__CommunicationMessages_descr_ = { "@UnifiedDiagnosticServices.e_CommunicationMessages", NULL, &e__CommunicationMessages_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CommunicationType_disableEnable_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,NULL,false};
+// No XER for CommunicationType_disableEnable
+const TTCN_Typedescriptor_t CommunicationType_disableEnable_descr_ = { "@UnifiedDiagnosticServices.CommunicationType.disableEnable", NULL, &CommunicationType_disableEnable_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CommunicationType_reserved_raw_ = {2,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       CommunicationType_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 CommunicationType_reserved_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t CommunicationType_reserved_descr_ = { "@UnifiedDiagnosticServices.CommunicationType.reserved", &BITSTRING_ber_, &CommunicationType_reserved_raw_, NULL, &CommunicationType_reserved_xer_, &BITSTRING_json_, &CommunicationType_reserved_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CommunicationType_communicationMessages_raw_ = {2,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_MSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for CommunicationType_communicationMessages
+const TTCN_Typedescriptor_t CommunicationType_communicationMessages_descr_ = { "@UnifiedDiagnosticServices.CommunicationType.communicationMessages", NULL, &CommunicationType_communicationMessages_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CommunicationType_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,NULL,false};
+// No XER for CommunicationType
+const TTCN_Typedescriptor_t CommunicationType_descr_ = { "@UnifiedDiagnosticServices.CommunicationType", NULL, &CommunicationType_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EnableRxAndTxRequest_suppressPosRspMsgIndicationBit_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,NULL,false};
+// No XER for EnableRxAndTxRequest_suppressPosRspMsgIndicationBit
+const TTCN_Typedescriptor_t EnableRxAndTxRequest_suppressPosRspMsgIndicationBit_descr_ = { "@UnifiedDiagnosticServices.EnableRxAndTxRequest.suppressPosRspMsgIndicationBit", NULL, &EnableRxAndTxRequest_suppressPosRspMsgIndicationBit_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EnableRxAndTxRequest_controlType_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,NULL,false};
+const XERdescriptor_t       EnableRxAndTxRequest_controlType_xer_ = { {"controlType>\n", "controlType>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t EnableRxAndTxRequest_controlType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t EnableRxAndTxRequest_controlType_descr_ = { "@UnifiedDiagnosticServices.EnableRxAndTxRequest.controlType", &BITSTRING_ber_, &EnableRxAndTxRequest_controlType_raw_, NULL, &EnableRxAndTxRequest_controlType_xer_, &BITSTRING_json_, &EnableRxAndTxRequest_controlType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EnableRxAndTxRequest_communicationType_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,NULL,false};
+// No XER for EnableRxAndTxRequest_communicationType
+const TTCN_Typedescriptor_t EnableRxAndTxRequest_communicationType_descr_ = { "@UnifiedDiagnosticServices.EnableRxAndTxRequest.communicationType", NULL, &EnableRxAndTxRequest_communicationType_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EnableRxAndTxRequest_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,NULL,false};
+// No XER for EnableRxAndTxRequest
+const TTCN_Typedescriptor_t EnableRxAndTxRequest_descr_ = { "@UnifiedDiagnosticServices.EnableRxAndTxRequest", NULL, &EnableRxAndTxRequest_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EnableRxAndDisableTxRequest_suppressPosRspMsgIndicationBit_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,NULL,false};
+// No XER for EnableRxAndDisableTxRequest_suppressPosRspMsgIndicationBit
+const TTCN_Typedescriptor_t EnableRxAndDisableTxRequest_suppressPosRspMsgIndicationBit_descr_ = { "@UnifiedDiagnosticServices.EnableRxAndDisableTxRequest.suppressPosRspMsgIndicationBit", NULL, &EnableRxAndDisableTxRequest_suppressPosRspMsgIndicationBit_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EnableRxAndDisableTxRequest_controlType_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,NULL,false};
+const XERdescriptor_t       EnableRxAndDisableTxRequest_controlType_xer_ = { {"controlType>\n", "controlType>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t EnableRxAndDisableTxRequest_controlType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t EnableRxAndDisableTxRequest_controlType_descr_ = { "@UnifiedDiagnosticServices.EnableRxAndDisableTxRequest.controlType", &BITSTRING_ber_, &EnableRxAndDisableTxRequest_controlType_raw_, NULL, &EnableRxAndDisableTxRequest_controlType_xer_, &BITSTRING_json_, &EnableRxAndDisableTxRequest_controlType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EnableRxAndDisableTxRequest_communicationType_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,NULL,false};
+// No XER for EnableRxAndDisableTxRequest_communicationType
+const TTCN_Typedescriptor_t EnableRxAndDisableTxRequest_communicationType_descr_ = { "@UnifiedDiagnosticServices.EnableRxAndDisableTxRequest.communicationType", NULL, &EnableRxAndDisableTxRequest_communicationType_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EnableRxAndDisableTxRequest_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,NULL,false};
+// No XER for EnableRxAndDisableTxRequest
+const TTCN_Typedescriptor_t EnableRxAndDisableTxRequest_descr_ = { "@UnifiedDiagnosticServices.EnableRxAndDisableTxRequest", NULL, &EnableRxAndDisableTxRequest_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DisableRxAndEnableTxRequest_suppressPosRspMsgIndicationBit_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,NULL,false};
+// No XER for DisableRxAndEnableTxRequest_suppressPosRspMsgIndicationBit
+const TTCN_Typedescriptor_t DisableRxAndEnableTxRequest_suppressPosRspMsgIndicationBit_descr_ = { "@UnifiedDiagnosticServices.DisableRxAndEnableTxRequest.suppressPosRspMsgIndicationBit", NULL, &DisableRxAndEnableTxRequest_suppressPosRspMsgIndicationBit_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DisableRxAndEnableTxRequest_controlType_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,NULL,false};
+const XERdescriptor_t       DisableRxAndEnableTxRequest_controlType_xer_ = { {"controlType>\n", "controlType>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t DisableRxAndEnableTxRequest_controlType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t DisableRxAndEnableTxRequest_controlType_descr_ = { "@UnifiedDiagnosticServices.DisableRxAndEnableTxRequest.controlType", &BITSTRING_ber_, &DisableRxAndEnableTxRequest_controlType_raw_, NULL, &DisableRxAndEnableTxRequest_controlType_xer_, &BITSTRING_json_, &DisableRxAndEnableTxRequest_controlType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DisableRxAndEnableTxRequest_communicationType_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,NULL,false};
+// No XER for DisableRxAndEnableTxRequest_communicationType
+const TTCN_Typedescriptor_t DisableRxAndEnableTxRequest_communicationType_descr_ = { "@UnifiedDiagnosticServices.DisableRxAndEnableTxRequest.communicationType", NULL, &DisableRxAndEnableTxRequest_communicationType_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DisableRxAndEnableTxRequest_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,NULL,false};
+// No XER for DisableRxAndEnableTxRequest
+const TTCN_Typedescriptor_t DisableRxAndEnableTxRequest_descr_ = { "@UnifiedDiagnosticServices.DisableRxAndEnableTxRequest", NULL, &DisableRxAndEnableTxRequest_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DisableRxAndTxRequest_suppressPosRspMsgIndicationBit_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,NULL,false};
+// No XER for DisableRxAndTxRequest_suppressPosRspMsgIndicationBit
+const TTCN_Typedescriptor_t DisableRxAndTxRequest_suppressPosRspMsgIndicationBit_descr_ = { "@UnifiedDiagnosticServices.DisableRxAndTxRequest.suppressPosRspMsgIndicationBit", NULL, &DisableRxAndTxRequest_suppressPosRspMsgIndicationBit_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DisableRxAndTxRequest_controlType_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,NULL,false};
+const XERdescriptor_t       DisableRxAndTxRequest_controlType_xer_ = { {"controlType>\n", "controlType>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t DisableRxAndTxRequest_controlType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t DisableRxAndTxRequest_controlType_descr_ = { "@UnifiedDiagnosticServices.DisableRxAndTxRequest.controlType", &BITSTRING_ber_, &DisableRxAndTxRequest_controlType_raw_, NULL, &DisableRxAndTxRequest_controlType_xer_, &BITSTRING_json_, &DisableRxAndTxRequest_controlType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DisableRxAndTxRequest_communicationType_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,NULL,false};
+// No XER for DisableRxAndTxRequest_communicationType
+const TTCN_Typedescriptor_t DisableRxAndTxRequest_communicationType_descr_ = { "@UnifiedDiagnosticServices.DisableRxAndTxRequest.communicationType", NULL, &DisableRxAndTxRequest_communicationType_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t DisableRxAndTxRequest_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,NULL,false};
+// No XER for DisableRxAndTxRequest
+const TTCN_Typedescriptor_t DisableRxAndTxRequest_descr_ = { "@UnifiedDiagnosticServices.DisableRxAndTxRequest", NULL, &DisableRxAndTxRequest_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       NodeIdentificationNumber_xer_ = { {"NodeIdentificationNumber>\n", "NodeIdentificationNumber>\n"}, {26, 26}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int NodeIdentificationNumber_oer_ext_arr_[0] = {};
+const int NodeIdentificationNumber_oer_p_[0] = {};
+const TTCN_OERdescriptor_t NodeIdentificationNumber_oer_ = { -1, TRUE, 2, FALSE, 0, 0, NodeIdentificationNumber_oer_ext_arr_, 0, NodeIdentificationNumber_oer_p_};
+const TTCN_Typedescriptor_t NodeIdentificationNumber_descr_ = { "@UnifiedDiagnosticServices.NodeIdentificationNumber", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &NodeIdentificationNumber_xer_, &OCTETSTRING_json_, &NodeIdentificationNumber_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EnableRxAndDisableTxWithEnhancedAddressInformationRequest_suppressPosRspMsgIndicationBit_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,NULL,false};
+// No XER for EnableRxAndDisableTxWithEnhancedAddressInformationRequest_suppressPosRspMsgIndicationBit
+const TTCN_Typedescriptor_t EnableRxAndDisableTxWithEnhancedAddressInformationRequest_suppressPosRspMsgIndicationBit_descr_ = { "@UnifiedDiagnosticServices.EnableRxAndDisableTxWithEnhancedAddressInformationRequest.suppressPosRspMsgIndicationBit", NULL, &EnableRxAndDisableTxWithEnhancedAddressInformationRequest_suppressPosRspMsgIndicationBit_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EnableRxAndDisableTxWithEnhancedAddressInformationRequest_controlType_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,NULL,false};
+const XERdescriptor_t       EnableRxAndDisableTxWithEnhancedAddressInformationRequest_controlType_xer_ = { {"controlType>\n", "controlType>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t EnableRxAndDisableTxWithEnhancedAddressInformationRequest_controlType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t EnableRxAndDisableTxWithEnhancedAddressInformationRequest_controlType_descr_ = { "@UnifiedDiagnosticServices.EnableRxAndDisableTxWithEnhancedAddressInformationRequest.controlType", &BITSTRING_ber_, &EnableRxAndDisableTxWithEnhancedAddressInformationRequest_controlType_raw_, NULL, &EnableRxAndDisableTxWithEnhancedAddressInformationRequest_controlType_xer_, &BITSTRING_json_, &EnableRxAndDisableTxWithEnhancedAddressInformationRequest_controlType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EnableRxAndDisableTxWithEnhancedAddressInformationRequest_communicationType_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,NULL,false};
+// No XER for EnableRxAndDisableTxWithEnhancedAddressInformationRequest_communicationType
+const TTCN_Typedescriptor_t EnableRxAndDisableTxWithEnhancedAddressInformationRequest_communicationType_descr_ = { "@UnifiedDiagnosticServices.EnableRxAndDisableTxWithEnhancedAddressInformationRequest.communicationType", NULL, &EnableRxAndDisableTxWithEnhancedAddressInformationRequest_communicationType_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EnableRxAndDisableTxWithEnhancedAddressInformationRequest_nodeIdentificationNumber_raw_ = {16,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,2,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       EnableRxAndDisableTxWithEnhancedAddressInformationRequest_nodeIdentificationNumber_xer_ = { {"nodeIdentificationNumber>\n", "nodeIdentificationNumber>\n"}, {26, 26}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int EnableRxAndDisableTxWithEnhancedAddressInformationRequest_nodeIdentificationNumber_oer_ext_arr_[0] = {};
+const int EnableRxAndDisableTxWithEnhancedAddressInformationRequest_nodeIdentificationNumber_oer_p_[0] = {};
+const TTCN_OERdescriptor_t EnableRxAndDisableTxWithEnhancedAddressInformationRequest_nodeIdentificationNumber_oer_ = { -1, TRUE, 2, FALSE, 0, 0, EnableRxAndDisableTxWithEnhancedAddressInformationRequest_nodeIdentificationNumber_oer_ext_arr_, 0, EnableRxAndDisableTxWithEnhancedAddressInformationRequest_nodeIdentificationNumber_oer_p_};
+const TTCN_Typedescriptor_t EnableRxAndDisableTxWithEnhancedAddressInformationRequest_nodeIdentificationNumber_descr_ = { "@UnifiedDiagnosticServices.EnableRxAndDisableTxWithEnhancedAddressInformationRequest.nodeIdentificationNumber", &OCTETSTRING_ber_, &EnableRxAndDisableTxWithEnhancedAddressInformationRequest_nodeIdentificationNumber_raw_, &OCTETSTRING_text_, &EnableRxAndDisableTxWithEnhancedAddressInformationRequest_nodeIdentificationNumber_xer_, &OCTETSTRING_json_, &EnableRxAndDisableTxWithEnhancedAddressInformationRequest_nodeIdentificationNumber_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EnableRxAndDisableTxWithEnhancedAddressInformationRequest_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,NULL,false};
+// No XER for EnableRxAndDisableTxWithEnhancedAddressInformationRequest
+const TTCN_Typedescriptor_t EnableRxAndDisableTxWithEnhancedAddressInformationRequest_descr_ = { "@UnifiedDiagnosticServices.EnableRxAndDisableTxWithEnhancedAddressInformationRequest", NULL, &EnableRxAndDisableTxWithEnhancedAddressInformationRequest_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EnableRxAndTxWithEnhancedAddressInformationRequest_suppressPosRspMsgIndicationBit_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,NULL,false};
+// No XER for EnableRxAndTxWithEnhancedAddressInformationRequest_suppressPosRspMsgIndicationBit
+const TTCN_Typedescriptor_t EnableRxAndTxWithEnhancedAddressInformationRequest_suppressPosRspMsgIndicationBit_descr_ = { "@UnifiedDiagnosticServices.EnableRxAndTxWithEnhancedAddressInformationRequest.suppressPosRspMsgIndicationBit", NULL, &EnableRxAndTxWithEnhancedAddressInformationRequest_suppressPosRspMsgIndicationBit_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EnableRxAndTxWithEnhancedAddressInformationRequest_controlType_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,NULL,false};
+const XERdescriptor_t       EnableRxAndTxWithEnhancedAddressInformationRequest_controlType_xer_ = { {"controlType>\n", "controlType>\n"}, {13, 13}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t EnableRxAndTxWithEnhancedAddressInformationRequest_controlType_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t EnableRxAndTxWithEnhancedAddressInformationRequest_controlType_descr_ = { "@UnifiedDiagnosticServices.EnableRxAndTxWithEnhancedAddressInformationRequest.controlType", &BITSTRING_ber_, &EnableRxAndTxWithEnhancedAddressInformationRequest_controlType_raw_, NULL, &EnableRxAndTxWithEnhancedAddressInformationRequest_controlType_xer_, &BITSTRING_json_, &EnableRxAndTxWithEnhancedAddressInformationRequest_controlType_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EnableRxAndTxWithEnhancedAddressInformationRequest_communicationType_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,NULL,false};
+// No XER for EnableRxAndTxWithEnhancedAddressInformationRequest_communicationType
+const TTCN_Typedescriptor_t EnableRxAndTxWithEnhancedAddressInformationRequest_communicationType_descr_ = { "@UnifiedDiagnosticServices.EnableRxAndTxWithEnhancedAddressInformationRequest.communicationType", NULL, &EnableRxAndTxWithEnhancedAddressInformationRequest_communicationType_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EnableRxAndTxWithEnhancedAddressInformationRequest_nodeIdentificationNumber_raw_ = {16,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,2,CharCoding::UNKNOWN,NULL,false};
+const XERdescriptor_t       EnableRxAndTxWithEnhancedAddressInformationRequest_nodeIdentificationNumber_xer_ = { {"nodeIdentificationNumber>\n", "nodeIdentificationNumber>\n"}, {26, 26}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int EnableRxAndTxWithEnhancedAddressInformationRequest_nodeIdentificationNumber_oer_ext_arr_[0] = {};
+const int EnableRxAndTxWithEnhancedAddressInformationRequest_nodeIdentificationNumber_oer_p_[0] = {};
+const TTCN_OERdescriptor_t EnableRxAndTxWithEnhancedAddressInformationRequest_nodeIdentificationNumber_oer_ = { -1, TRUE, 2, FALSE, 0, 0, EnableRxAndTxWithEnhancedAddressInformationRequest_nodeIdentificationNumber_oer_ext_arr_, 0, EnableRxAndTxWithEnhancedAddressInformationRequest_nodeIdentificationNumber_oer_p_};
+const TTCN_Typedescriptor_t EnableRxAndTxWithEnhancedAddressInformationRequest_nodeIdentificationNumber_descr_ = { "@UnifiedDiagnosticServices.EnableRxAndTxWithEnhancedAddressInformationRequest.nodeIdentificationNumber", &OCTETSTRING_ber_, &EnableRxAndTxWithEnhancedAddressInformationRequest_nodeIdentificationNumber_raw_, &OCTETSTRING_text_, &EnableRxAndTxWithEnhancedAddressInformationRequest_nodeIdentificationNumber_xer_, &OCTETSTRING_json_, &EnableRxAndTxWithEnhancedAddressInformationRequest_nodeIdentificationNumber_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t EnableRxAndTxWithEnhancedAddressInformationRequest_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,NULL,false};
+// No XER for EnableRxAndTxWithEnhancedAddressInformationRequest
+const TTCN_Typedescriptor_t EnableRxAndTxWithEnhancedAddressInformationRequest_descr_ = { "@UnifiedDiagnosticServices.EnableRxAndTxWithEnhancedAddressInformationRequest", NULL, &EnableRxAndTxWithEnhancedAddressInformationRequest_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CommunicationControlRequestType_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for CommunicationControlRequestType
+const TTCN_Typedescriptor_t CommunicationControlRequestType_descr_ = { "@UnifiedDiagnosticServices.CommunicationControlRequestType", NULL, &CommunicationControlRequestType_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CommunicationControlRequestSID_sid_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,NULL,false};
+const XERdescriptor_t       CommunicationControlRequestSID_sid_xer_ = { {"sid>\n", "sid>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int CommunicationControlRequestSID_sid_oer_ext_arr_[0] = {};
+const int CommunicationControlRequestSID_sid_oer_p_[0] = {};
+const TTCN_OERdescriptor_t CommunicationControlRequestSID_sid_oer_ = { -1, TRUE, 1, FALSE, 0, 0, CommunicationControlRequestSID_sid_oer_ext_arr_, 0, CommunicationControlRequestSID_sid_oer_p_};
+const TTCN_Typedescriptor_t CommunicationControlRequestSID_sid_descr_ = { "@UnifiedDiagnosticServices.CommunicationControlRequestSID.sid", &OCTETSTRING_ber_, &CommunicationControlRequestSID_sid_raw_, &OCTETSTRING_text_, &CommunicationControlRequestSID_sid_xer_, &OCTETSTRING_json_, &CommunicationControlRequestSID_sid_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CommunicationControlRequestSID_communicationControlRequestType_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,NULL,false};
+// No XER for CommunicationControlRequestSID_communicationControlRequestType
+const TTCN_Typedescriptor_t CommunicationControlRequestSID_communicationControlRequestType_descr_ = { "@UnifiedDiagnosticServices.CommunicationControlRequestSID.communicationControlRequestType", NULL, &CommunicationControlRequestSID_communicationControlRequestType_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CommunicationControlRequestSID_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,NULL,false};
+// No XER for CommunicationControlRequestSID
+const TTCN_Typedescriptor_t CommunicationControlRequestSID_descr_ = { "@UnifiedDiagnosticServices.CommunicationControlRequestSID", NULL, &CommunicationControlRequestSID_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CommunicationControlResponseSID_sid_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,NULL,false};
+const XERdescriptor_t       CommunicationControlResponseSID_sid_xer_ = { {"sid>\n", "sid>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int CommunicationControlResponseSID_sid_oer_ext_arr_[0] = {};
+const int CommunicationControlResponseSID_sid_oer_p_[0] = {};
+const TTCN_OERdescriptor_t CommunicationControlResponseSID_sid_oer_ = { -1, TRUE, 1, FALSE, 0, 0, CommunicationControlResponseSID_sid_oer_ext_arr_, 0, CommunicationControlResponseSID_sid_oer_p_};
+const TTCN_Typedescriptor_t CommunicationControlResponseSID_sid_descr_ = { "@UnifiedDiagnosticServices.CommunicationControlResponseSID.sid", &OCTETSTRING_ber_, &CommunicationControlResponseSID_sid_raw_, &OCTETSTRING_text_, &CommunicationControlResponseSID_sid_xer_, &OCTETSTRING_json_, &CommunicationControlResponseSID_sid_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CommunicationControlResponseSID_reserved_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,NULL,false};
+const XERdescriptor_t       CommunicationControlResponseSID_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 CommunicationControlResponseSID_reserved_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t CommunicationControlResponseSID_reserved_descr_ = { "@UnifiedDiagnosticServices.CommunicationControlResponseSID.reserved", &BITSTRING_ber_, &CommunicationControlResponseSID_reserved_raw_, NULL, &CommunicationControlResponseSID_reserved_xer_, &BITSTRING_json_, &CommunicationControlResponseSID_reserved_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CommunicationControlResponseSID_controlType_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,NULL,false};
+// No XER for CommunicationControlResponseSID_controlType
+const TTCN_Typedescriptor_t CommunicationControlResponseSID_controlType_descr_ = { "@UnifiedDiagnosticServices.CommunicationControlResponseSID.controlType", NULL, &CommunicationControlResponseSID_controlType_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t CommunicationControlResponseSID_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,NULL,false};
+// No XER for CommunicationControlResponseSID
+const TTCN_Typedescriptor_t CommunicationControlResponseSID_descr_ = { "@UnifiedDiagnosticServices.CommunicationControlResponseSID", NULL, &CommunicationControlResponseSID_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t TesterPresentRequestSID_sid_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,NULL,false};
+const XERdescriptor_t       TesterPresentRequestSID_sid_xer_ = { {"sid>\n", "sid>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int TesterPresentRequestSID_sid_oer_ext_arr_[0] = {};
+const int TesterPresentRequestSID_sid_oer_p_[0] = {};
+const TTCN_OERdescriptor_t TesterPresentRequestSID_sid_oer_ = { -1, TRUE, 1, FALSE, 0, 0, TesterPresentRequestSID_sid_oer_ext_arr_, 0, TesterPresentRequestSID_sid_oer_p_};
+const TTCN_Typedescriptor_t TesterPresentRequestSID_sid_descr_ = { "@UnifiedDiagnosticServices.TesterPresentRequestSID.sid", &OCTETSTRING_ber_, &TesterPresentRequestSID_sid_raw_, &OCTETSTRING_text_, &TesterPresentRequestSID_sid_xer_, &OCTETSTRING_json_, &TesterPresentRequestSID_sid_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t TesterPresentRequestSID_suppressPosRspMsgIndicationBit_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,NULL,false};
+// No XER for TesterPresentRequestSID_suppressPosRspMsgIndicationBit
+const TTCN_Typedescriptor_t TesterPresentRequestSID_suppressPosRspMsgIndicationBit_descr_ = { "@UnifiedDiagnosticServices.TesterPresentRequestSID.suppressPosRspMsgIndicationBit", NULL, &TesterPresentRequestSID_suppressPosRspMsgIndicationBit_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t TesterPresentRequestSID_zero_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,NULL,false};
+const XERdescriptor_t       TesterPresentRequestSID_zero_xer_ = { {"zero>\n", "zero>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t TesterPresentRequestSID_zero_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t TesterPresentRequestSID_zero_descr_ = { "@UnifiedDiagnosticServices.TesterPresentRequestSID.zero", &BITSTRING_ber_, &TesterPresentRequestSID_zero_raw_, NULL, &TesterPresentRequestSID_zero_xer_, &BITSTRING_json_, &TesterPresentRequestSID_zero_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t TesterPresentRequestSID_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,NULL,false};
+// No XER for TesterPresentRequestSID
+const TTCN_Typedescriptor_t TesterPresentRequestSID_descr_ = { "@UnifiedDiagnosticServices.TesterPresentRequestSID", NULL, &TesterPresentRequestSID_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t TesterPresentResponseSID_sid_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,NULL,false};
+const XERdescriptor_t       TesterPresentResponseSID_sid_xer_ = { {"sid>\n", "sid>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int TesterPresentResponseSID_sid_oer_ext_arr_[0] = {};
+const int TesterPresentResponseSID_sid_oer_p_[0] = {};
+const TTCN_OERdescriptor_t TesterPresentResponseSID_sid_oer_ = { -1, TRUE, 1, FALSE, 0, 0, TesterPresentResponseSID_sid_oer_ext_arr_, 0, TesterPresentResponseSID_sid_oer_p_};
+const TTCN_Typedescriptor_t TesterPresentResponseSID_sid_descr_ = { "@UnifiedDiagnosticServices.TesterPresentResponseSID.sid", &OCTETSTRING_ber_, &TesterPresentResponseSID_sid_raw_, &OCTETSTRING_text_, &TesterPresentResponseSID_sid_xer_, &OCTETSTRING_json_, &TesterPresentResponseSID_sid_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t TesterPresentResponseSID_reserved_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,NULL,false};
+const XERdescriptor_t       TesterPresentResponseSID_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 TesterPresentResponseSID_reserved_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t TesterPresentResponseSID_reserved_descr_ = { "@UnifiedDiagnosticServices.TesterPresentResponseSID.reserved", &BITSTRING_ber_, &TesterPresentResponseSID_reserved_raw_, NULL, &TesterPresentResponseSID_reserved_xer_, &BITSTRING_json_, &TesterPresentResponseSID_reserved_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t TesterPresentResponseSID_zero_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,NULL,false};
+const XERdescriptor_t       TesterPresentResponseSID_zero_xer_ = { {"zero>\n", "zero>\n"}, {6, 6}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const TTCN_OERdescriptor_t TesterPresentResponseSID_zero_oer_ = { -1, FALSE, -1, FALSE, 0, 0, NULL, 0, NULL };
+const TTCN_Typedescriptor_t TesterPresentResponseSID_zero_descr_ = { "@UnifiedDiagnosticServices.TesterPresentResponseSID.zero", &BITSTRING_ber_, &TesterPresentResponseSID_zero_raw_, NULL, &TesterPresentResponseSID_zero_xer_, &BITSTRING_json_, &TesterPresentResponseSID_zero_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t TesterPresentResponseSID_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,NULL,false};
+// No XER for TesterPresentResponseSID
+const TTCN_Typedescriptor_t TesterPresentResponseSID_descr_ = { "@UnifiedDiagnosticServices.TesterPresentResponseSID", NULL, &TesterPresentResponseSID_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ServiceIdentifier_xer_ = { {"ServiceIdentifier>\n", "ServiceIdentifier>\n"}, {19, 19}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ServiceIdentifier_oer_ext_arr_[0] = {};
+const int ServiceIdentifier_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ServiceIdentifier_oer_ = { -1, TRUE, 2, FALSE, 0, 0, ServiceIdentifier_oer_ext_arr_, 0, ServiceIdentifier_oer_p_};
+const TTCN_Typedescriptor_t ServiceIdentifier_descr_ = { "@UnifiedDiagnosticServices.ServiceIdentifier", &OCTETSTRING_ber_, &General__Types::OCT2_raw_, &OCTETSTRING_text_, &ServiceIdentifier_xer_, &OCTETSTRING_json_, &ServiceIdentifier_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ReadDataByIdentifierRequest1_identifier_raw_ = {16,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,NULL,false};
+const XERdescriptor_t       ReadDataByIdentifierRequest1_identifier_xer_ = { {"identifier>\n", "identifier>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ReadDataByIdentifierRequest1_identifier_oer_ext_arr_[0] = {};
+const int ReadDataByIdentifierRequest1_identifier_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ReadDataByIdentifierRequest1_identifier_oer_ = { -1, TRUE, 2, FALSE, 0, 0, ReadDataByIdentifierRequest1_identifier_oer_ext_arr_, 0, ReadDataByIdentifierRequest1_identifier_oer_p_};
+const TTCN_Typedescriptor_t ReadDataByIdentifierRequest1_identifier_descr_ = { "@UnifiedDiagnosticServices.ReadDataByIdentifierRequest1.identifier", &OCTETSTRING_ber_, &ReadDataByIdentifierRequest1_identifier_raw_, &OCTETSTRING_text_, &ReadDataByIdentifierRequest1_identifier_xer_, &OCTETSTRING_json_, &ReadDataByIdentifierRequest1_identifier_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ReadDataByIdentifierRequest1_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ReadDataByIdentifierRequest1
+const TTCN_Typedescriptor_t ReadDataByIdentifierRequest1_descr_ = { "@UnifiedDiagnosticServices.ReadDataByIdentifierRequest1", NULL, &ReadDataByIdentifierRequest1_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ReadDataByIdentifierRequest2_identifier_raw_ = {16,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,NULL,false};
+const XERdescriptor_t       ReadDataByIdentifierRequest2_identifier_xer_ = { {"identifier>\n", "identifier>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ReadDataByIdentifierRequest2_identifier_oer_ext_arr_[0] = {};
+const int ReadDataByIdentifierRequest2_identifier_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ReadDataByIdentifierRequest2_identifier_oer_ = { -1, TRUE, 2, FALSE, 0, 0, ReadDataByIdentifierRequest2_identifier_oer_ext_arr_, 0, ReadDataByIdentifierRequest2_identifier_oer_p_};
+const TTCN_Typedescriptor_t ReadDataByIdentifierRequest2_identifier_descr_ = { "@UnifiedDiagnosticServices.ReadDataByIdentifierRequest2.identifier", &OCTETSTRING_ber_, &ReadDataByIdentifierRequest2_identifier_raw_, &OCTETSTRING_text_, &ReadDataByIdentifierRequest2_identifier_xer_, &OCTETSTRING_json_, &ReadDataByIdentifierRequest2_identifier_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ReadDataByIdentifierRequest2_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ReadDataByIdentifierRequest2
+const TTCN_Typedescriptor_t ReadDataByIdentifierRequest2_descr_ = { "@UnifiedDiagnosticServices.ReadDataByIdentifierRequest2", NULL, &ReadDataByIdentifierRequest2_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ReadDataByIdentifierRequest3_identifier_raw_ = {16,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,NULL,false};
+const XERdescriptor_t       ReadDataByIdentifierRequest3_identifier_xer_ = { {"identifier>\n", "identifier>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ReadDataByIdentifierRequest3_identifier_oer_ext_arr_[0] = {};
+const int ReadDataByIdentifierRequest3_identifier_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ReadDataByIdentifierRequest3_identifier_oer_ = { -1, TRUE, 2, FALSE, 0, 0, ReadDataByIdentifierRequest3_identifier_oer_ext_arr_, 0, ReadDataByIdentifierRequest3_identifier_oer_p_};
+const TTCN_Typedescriptor_t ReadDataByIdentifierRequest3_identifier_descr_ = { "@UnifiedDiagnosticServices.ReadDataByIdentifierRequest3.identifier", &OCTETSTRING_ber_, &ReadDataByIdentifierRequest3_identifier_raw_, &OCTETSTRING_text_, &ReadDataByIdentifierRequest3_identifier_xer_, &OCTETSTRING_json_, &ReadDataByIdentifierRequest3_identifier_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ReadDataByIdentifierRequest3_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ReadDataByIdentifierRequest3
+const TTCN_Typedescriptor_t ReadDataByIdentifierRequest3_descr_ = { "@UnifiedDiagnosticServices.ReadDataByIdentifierRequest3", NULL, &ReadDataByIdentifierRequest3_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ReadDataByIdentifierRequestSID_sid_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ReadDataByIdentifierRequestSID_sid_xer_ = { {"sid>\n", "sid>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ReadDataByIdentifierRequestSID_sid_oer_ext_arr_[0] = {};
+const int ReadDataByIdentifierRequestSID_sid_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ReadDataByIdentifierRequestSID_sid_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ReadDataByIdentifierRequestSID_sid_oer_ext_arr_, 0, ReadDataByIdentifierRequestSID_sid_oer_p_};
+const TTCN_Typedescriptor_t ReadDataByIdentifierRequestSID_sid_descr_ = { "@UnifiedDiagnosticServices.ReadDataByIdentifierRequestSID.sid", &OCTETSTRING_ber_, &ReadDataByIdentifierRequestSID_sid_raw_, &OCTETSTRING_text_, &ReadDataByIdentifierRequestSID_sid_xer_, &OCTETSTRING_json_, &ReadDataByIdentifierRequestSID_sid_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ReadDataByIdentifierRequest_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ReadDataByIdentifierRequest
+const TTCN_Typedescriptor_t ReadDataByIdentifierRequest_descr_ = { "@UnifiedDiagnosticServices.ReadDataByIdentifierRequest", NULL, &ReadDataByIdentifierRequest_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ReadDataByIdentifierRequestSID_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ReadDataByIdentifierRequestSID
+const TTCN_Typedescriptor_t ReadDataByIdentifierRequestSID_descr_ = { "@UnifiedDiagnosticServices.ReadDataByIdentifierRequestSID", NULL, &ReadDataByIdentifierRequestSID_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ReadDataByIdentifierResponse1_identifier_raw_ = {16,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,NULL,false};
+const XERdescriptor_t       ReadDataByIdentifierResponse1_identifier_xer_ = { {"identifier>\n", "identifier>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ReadDataByIdentifierResponse1_identifier_oer_ext_arr_[0] = {};
+const int ReadDataByIdentifierResponse1_identifier_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ReadDataByIdentifierResponse1_identifier_oer_ = { -1, TRUE, 2, FALSE, 0, 0, ReadDataByIdentifierResponse1_identifier_oer_ext_arr_, 0, ReadDataByIdentifierResponse1_identifier_oer_p_};
+const TTCN_Typedescriptor_t ReadDataByIdentifierResponse1_identifier_descr_ = { "@UnifiedDiagnosticServices.ReadDataByIdentifierResponse1.identifier", &OCTETSTRING_ber_, &ReadDataByIdentifierResponse1_identifier_raw_, &OCTETSTRING_text_, &ReadDataByIdentifierResponse1_identifier_xer_, &OCTETSTRING_json_, &ReadDataByIdentifierResponse1_identifier_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ReadDataByIdentifierResponse1_readDataByIdentifierResponse_xer_ = { {"readDataByIdentifierResponse>\n", "readDataByIdentifierResponse>\n"}, {30, 30}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ReadDataByIdentifierResponse1_readDataByIdentifierResponse_oer_ext_arr_[0] = {};
+const int ReadDataByIdentifierResponse1_readDataByIdentifierResponse_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ReadDataByIdentifierResponse1_readDataByIdentifierResponse_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ReadDataByIdentifierResponse1_readDataByIdentifierResponse_oer_ext_arr_, 0, ReadDataByIdentifierResponse1_readDataByIdentifierResponse_oer_p_};
+const TTCN_Typedescriptor_t ReadDataByIdentifierResponse1_readDataByIdentifierResponse_descr_ = { "@UnifiedDiagnosticServices.ReadDataByIdentifierResponse1.readDataByIdentifierResponse", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &ReadDataByIdentifierResponse1_readDataByIdentifierResponse_xer_, &OCTETSTRING_json_, &ReadDataByIdentifierResponse1_readDataByIdentifierResponse_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ReadDataByIdentifierResponse1_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ReadDataByIdentifierResponse1
+const TTCN_Typedescriptor_t ReadDataByIdentifierResponse1_descr_ = { "@UnifiedDiagnosticServices.ReadDataByIdentifierResponse1", NULL, &ReadDataByIdentifierResponse1_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ReadDataByIdentifierResponse2_identifier_raw_ = {16,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,NULL,false};
+const XERdescriptor_t       ReadDataByIdentifierResponse2_identifier_xer_ = { {"identifier>\n", "identifier>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ReadDataByIdentifierResponse2_identifier_oer_ext_arr_[0] = {};
+const int ReadDataByIdentifierResponse2_identifier_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ReadDataByIdentifierResponse2_identifier_oer_ = { -1, TRUE, 2, FALSE, 0, 0, ReadDataByIdentifierResponse2_identifier_oer_ext_arr_, 0, ReadDataByIdentifierResponse2_identifier_oer_p_};
+const TTCN_Typedescriptor_t ReadDataByIdentifierResponse2_identifier_descr_ = { "@UnifiedDiagnosticServices.ReadDataByIdentifierResponse2.identifier", &OCTETSTRING_ber_, &ReadDataByIdentifierResponse2_identifier_raw_, &OCTETSTRING_text_, &ReadDataByIdentifierResponse2_identifier_xer_, &OCTETSTRING_json_, &ReadDataByIdentifierResponse2_identifier_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ReadDataByIdentifierResponse2_readDataByIdentifierResponse_xer_ = { {"readDataByIdentifierResponse>\n", "readDataByIdentifierResponse>\n"}, {30, 30}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ReadDataByIdentifierResponse2_readDataByIdentifierResponse_oer_ext_arr_[0] = {};
+const int ReadDataByIdentifierResponse2_readDataByIdentifierResponse_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ReadDataByIdentifierResponse2_readDataByIdentifierResponse_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ReadDataByIdentifierResponse2_readDataByIdentifierResponse_oer_ext_arr_, 0, ReadDataByIdentifierResponse2_readDataByIdentifierResponse_oer_p_};
+const TTCN_Typedescriptor_t ReadDataByIdentifierResponse2_readDataByIdentifierResponse_descr_ = { "@UnifiedDiagnosticServices.ReadDataByIdentifierResponse2.readDataByIdentifierResponse", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &ReadDataByIdentifierResponse2_readDataByIdentifierResponse_xer_, &OCTETSTRING_json_, &ReadDataByIdentifierResponse2_readDataByIdentifierResponse_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ReadDataByIdentifierResponse2_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ReadDataByIdentifierResponse2
+const TTCN_Typedescriptor_t ReadDataByIdentifierResponse2_descr_ = { "@UnifiedDiagnosticServices.ReadDataByIdentifierResponse2", NULL, &ReadDataByIdentifierResponse2_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ReadDataByIdentifierResponse3_identifier_raw_ = {16,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,NULL,false};
+const XERdescriptor_t       ReadDataByIdentifierResponse3_identifier_xer_ = { {"identifier>\n", "identifier>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ReadDataByIdentifierResponse3_identifier_oer_ext_arr_[0] = {};
+const int ReadDataByIdentifierResponse3_identifier_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ReadDataByIdentifierResponse3_identifier_oer_ = { -1, TRUE, 2, FALSE, 0, 0, ReadDataByIdentifierResponse3_identifier_oer_ext_arr_, 0, ReadDataByIdentifierResponse3_identifier_oer_p_};
+const TTCN_Typedescriptor_t ReadDataByIdentifierResponse3_identifier_descr_ = { "@UnifiedDiagnosticServices.ReadDataByIdentifierResponse3.identifier", &OCTETSTRING_ber_, &ReadDataByIdentifierResponse3_identifier_raw_, &OCTETSTRING_text_, &ReadDataByIdentifierResponse3_identifier_xer_, &OCTETSTRING_json_, &ReadDataByIdentifierResponse3_identifier_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       ReadDataByIdentifierResponse3_readDataByIdentifierResponse_xer_ = { {"readDataByIdentifierResponse>\n", "readDataByIdentifierResponse>\n"}, {30, 30}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ReadDataByIdentifierResponse3_readDataByIdentifierResponse_oer_ext_arr_[0] = {};
+const int ReadDataByIdentifierResponse3_readDataByIdentifierResponse_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ReadDataByIdentifierResponse3_readDataByIdentifierResponse_oer_ = { -1, TRUE, -1, FALSE, 0, 0, ReadDataByIdentifierResponse3_readDataByIdentifierResponse_oer_ext_arr_, 0, ReadDataByIdentifierResponse3_readDataByIdentifierResponse_oer_p_};
+const TTCN_Typedescriptor_t ReadDataByIdentifierResponse3_readDataByIdentifierResponse_descr_ = { "@UnifiedDiagnosticServices.ReadDataByIdentifierResponse3.readDataByIdentifierResponse", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &ReadDataByIdentifierResponse3_readDataByIdentifierResponse_xer_, &OCTETSTRING_json_, &ReadDataByIdentifierResponse3_readDataByIdentifierResponse_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ReadDataByIdentifierResponse3_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ReadDataByIdentifierResponse3
+const TTCN_Typedescriptor_t ReadDataByIdentifierResponse3_descr_ = { "@UnifiedDiagnosticServices.ReadDataByIdentifierResponse3", NULL, &ReadDataByIdentifierResponse3_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ReadDataByIdentifierResponseSID_sid_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       ReadDataByIdentifierResponseSID_sid_xer_ = { {"sid>\n", "sid>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int ReadDataByIdentifierResponseSID_sid_oer_ext_arr_[0] = {};
+const int ReadDataByIdentifierResponseSID_sid_oer_p_[0] = {};
+const TTCN_OERdescriptor_t ReadDataByIdentifierResponseSID_sid_oer_ = { -1, TRUE, 1, FALSE, 0, 0, ReadDataByIdentifierResponseSID_sid_oer_ext_arr_, 0, ReadDataByIdentifierResponseSID_sid_oer_p_};
+const TTCN_Typedescriptor_t ReadDataByIdentifierResponseSID_sid_descr_ = { "@UnifiedDiagnosticServices.ReadDataByIdentifierResponseSID.sid", &OCTETSTRING_ber_, &ReadDataByIdentifierResponseSID_sid_raw_, &OCTETSTRING_text_, &ReadDataByIdentifierResponseSID_sid_xer_, &OCTETSTRING_json_, &ReadDataByIdentifierResponseSID_sid_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ReadDataByIdentifierResponse_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ReadDataByIdentifierResponse
+const TTCN_Typedescriptor_t ReadDataByIdentifierResponse_descr_ = { "@UnifiedDiagnosticServices.ReadDataByIdentifierResponse", NULL, &ReadDataByIdentifierResponse_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t ReadDataByIdentifierResponseSID_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for ReadDataByIdentifierResponseSID
+const TTCN_Typedescriptor_t ReadDataByIdentifierResponseSID_descr_ = { "@UnifiedDiagnosticServices.ReadDataByIdentifierResponseSID", NULL, &ReadDataByIdentifierResponseSID_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t WriteDataByIdentifierRequest1_identifier_raw_ = {16,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,NULL,false};
+const XERdescriptor_t       WriteDataByIdentifierRequest1_identifier_xer_ = { {"identifier>\n", "identifier>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int WriteDataByIdentifierRequest1_identifier_oer_ext_arr_[0] = {};
+const int WriteDataByIdentifierRequest1_identifier_oer_p_[0] = {};
+const TTCN_OERdescriptor_t WriteDataByIdentifierRequest1_identifier_oer_ = { -1, TRUE, 2, FALSE, 0, 0, WriteDataByIdentifierRequest1_identifier_oer_ext_arr_, 0, WriteDataByIdentifierRequest1_identifier_oer_p_};
+const TTCN_Typedescriptor_t WriteDataByIdentifierRequest1_identifier_descr_ = { "@UnifiedDiagnosticServices.WriteDataByIdentifierRequest1.identifier", &OCTETSTRING_ber_, &WriteDataByIdentifierRequest1_identifier_raw_, &OCTETSTRING_text_, &WriteDataByIdentifierRequest1_identifier_xer_, &OCTETSTRING_json_, &WriteDataByIdentifierRequest1_identifier_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       WriteDataByIdentifierRequest1_dataRecord_xer_ = { {"dataRecord>\n", "dataRecord>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int WriteDataByIdentifierRequest1_dataRecord_oer_ext_arr_[0] = {};
+const int WriteDataByIdentifierRequest1_dataRecord_oer_p_[0] = {};
+const TTCN_OERdescriptor_t WriteDataByIdentifierRequest1_dataRecord_oer_ = { -1, TRUE, -1, FALSE, 0, 0, WriteDataByIdentifierRequest1_dataRecord_oer_ext_arr_, 0, WriteDataByIdentifierRequest1_dataRecord_oer_p_};
+const TTCN_Typedescriptor_t WriteDataByIdentifierRequest1_dataRecord_descr_ = { "@UnifiedDiagnosticServices.WriteDataByIdentifierRequest1.dataRecord", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &WriteDataByIdentifierRequest1_dataRecord_xer_, &OCTETSTRING_json_, &WriteDataByIdentifierRequest1_dataRecord_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t WriteDataByIdentifierRequest1_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for WriteDataByIdentifierRequest1
+const TTCN_Typedescriptor_t WriteDataByIdentifierRequest1_descr_ = { "@UnifiedDiagnosticServices.WriteDataByIdentifierRequest1", NULL, &WriteDataByIdentifierRequest1_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t WriteDataByIdentifierRequest2_identifier_raw_ = {16,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,NULL,false};
+const XERdescriptor_t       WriteDataByIdentifierRequest2_identifier_xer_ = { {"identifier>\n", "identifier>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int WriteDataByIdentifierRequest2_identifier_oer_ext_arr_[0] = {};
+const int WriteDataByIdentifierRequest2_identifier_oer_p_[0] = {};
+const TTCN_OERdescriptor_t WriteDataByIdentifierRequest2_identifier_oer_ = { -1, TRUE, 2, FALSE, 0, 0, WriteDataByIdentifierRequest2_identifier_oer_ext_arr_, 0, WriteDataByIdentifierRequest2_identifier_oer_p_};
+const TTCN_Typedescriptor_t WriteDataByIdentifierRequest2_identifier_descr_ = { "@UnifiedDiagnosticServices.WriteDataByIdentifierRequest2.identifier", &OCTETSTRING_ber_, &WriteDataByIdentifierRequest2_identifier_raw_, &OCTETSTRING_text_, &WriteDataByIdentifierRequest2_identifier_xer_, &OCTETSTRING_json_, &WriteDataByIdentifierRequest2_identifier_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       WriteDataByIdentifierRequest2_dataRecord_xer_ = { {"dataRecord>\n", "dataRecord>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int WriteDataByIdentifierRequest2_dataRecord_oer_ext_arr_[0] = {};
+const int WriteDataByIdentifierRequest2_dataRecord_oer_p_[0] = {};
+const TTCN_OERdescriptor_t WriteDataByIdentifierRequest2_dataRecord_oer_ = { -1, TRUE, -1, FALSE, 0, 0, WriteDataByIdentifierRequest2_dataRecord_oer_ext_arr_, 0, WriteDataByIdentifierRequest2_dataRecord_oer_p_};
+const TTCN_Typedescriptor_t WriteDataByIdentifierRequest2_dataRecord_descr_ = { "@UnifiedDiagnosticServices.WriteDataByIdentifierRequest2.dataRecord", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &WriteDataByIdentifierRequest2_dataRecord_xer_, &OCTETSTRING_json_, &WriteDataByIdentifierRequest2_dataRecord_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t WriteDataByIdentifierRequest2_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for WriteDataByIdentifierRequest2
+const TTCN_Typedescriptor_t WriteDataByIdentifierRequest2_descr_ = { "@UnifiedDiagnosticServices.WriteDataByIdentifierRequest2", NULL, &WriteDataByIdentifierRequest2_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t WriteDataByIdentifierRequest3_identifier_raw_ = {16,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,NULL,false};
+const XERdescriptor_t       WriteDataByIdentifierRequest3_identifier_xer_ = { {"identifier>\n", "identifier>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int WriteDataByIdentifierRequest3_identifier_oer_ext_arr_[0] = {};
+const int WriteDataByIdentifierRequest3_identifier_oer_p_[0] = {};
+const TTCN_OERdescriptor_t WriteDataByIdentifierRequest3_identifier_oer_ = { -1, TRUE, 2, FALSE, 0, 0, WriteDataByIdentifierRequest3_identifier_oer_ext_arr_, 0, WriteDataByIdentifierRequest3_identifier_oer_p_};
+const TTCN_Typedescriptor_t WriteDataByIdentifierRequest3_identifier_descr_ = { "@UnifiedDiagnosticServices.WriteDataByIdentifierRequest3.identifier", &OCTETSTRING_ber_, &WriteDataByIdentifierRequest3_identifier_raw_, &OCTETSTRING_text_, &WriteDataByIdentifierRequest3_identifier_xer_, &OCTETSTRING_json_, &WriteDataByIdentifierRequest3_identifier_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const XERdescriptor_t       WriteDataByIdentifierRequest3_dataRecord_xer_ = { {"dataRecord>\n", "dataRecord>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int WriteDataByIdentifierRequest3_dataRecord_oer_ext_arr_[0] = {};
+const int WriteDataByIdentifierRequest3_dataRecord_oer_p_[0] = {};
+const TTCN_OERdescriptor_t WriteDataByIdentifierRequest3_dataRecord_oer_ = { -1, TRUE, -1, FALSE, 0, 0, WriteDataByIdentifierRequest3_dataRecord_oer_ext_arr_, 0, WriteDataByIdentifierRequest3_dataRecord_oer_p_};
+const TTCN_Typedescriptor_t WriteDataByIdentifierRequest3_dataRecord_descr_ = { "@UnifiedDiagnosticServices.WriteDataByIdentifierRequest3.dataRecord", &OCTETSTRING_ber_, &OCTETSTRING_raw_, &OCTETSTRING_text_, &WriteDataByIdentifierRequest3_dataRecord_xer_, &OCTETSTRING_json_, &WriteDataByIdentifierRequest3_dataRecord_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t WriteDataByIdentifierRequest3_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for WriteDataByIdentifierRequest3
+const TTCN_Typedescriptor_t WriteDataByIdentifierRequest3_descr_ = { "@UnifiedDiagnosticServices.WriteDataByIdentifierRequest3", NULL, &WriteDataByIdentifierRequest3_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t WriteDataByIdentifierRequest_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for WriteDataByIdentifierRequest
+const TTCN_Typedescriptor_t WriteDataByIdentifierRequest_descr_ = { "@UnifiedDiagnosticServices.WriteDataByIdentifierRequest", NULL, &WriteDataByIdentifierRequest_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t WriteDataByIdentifierRequestSID_sid_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       WriteDataByIdentifierRequestSID_sid_xer_ = { {"sid>\n", "sid>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int WriteDataByIdentifierRequestSID_sid_oer_ext_arr_[0] = {};
+const int WriteDataByIdentifierRequestSID_sid_oer_p_[0] = {};
+const TTCN_OERdescriptor_t WriteDataByIdentifierRequestSID_sid_oer_ = { -1, TRUE, 1, FALSE, 0, 0, WriteDataByIdentifierRequestSID_sid_oer_ext_arr_, 0, WriteDataByIdentifierRequestSID_sid_oer_p_};
+const TTCN_Typedescriptor_t WriteDataByIdentifierRequestSID_sid_descr_ = { "@UnifiedDiagnosticServices.WriteDataByIdentifierRequestSID.sid", &OCTETSTRING_ber_, &WriteDataByIdentifierRequestSID_sid_raw_, &OCTETSTRING_text_, &WriteDataByIdentifierRequestSID_sid_xer_, &OCTETSTRING_json_, &WriteDataByIdentifierRequestSID_sid_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t WriteDataByIdentifierRequestSID_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for WriteDataByIdentifierRequestSID
+const TTCN_Typedescriptor_t WriteDataByIdentifierRequestSID_descr_ = { "@UnifiedDiagnosticServices.WriteDataByIdentifierRequestSID", NULL, &WriteDataByIdentifierRequestSID_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t WriteDataByIdentifierResponse1_identifier_raw_ = {16,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,NULL,false};
+const XERdescriptor_t       WriteDataByIdentifierResponse1_identifier_xer_ = { {"identifier>\n", "identifier>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int WriteDataByIdentifierResponse1_identifier_oer_ext_arr_[0] = {};
+const int WriteDataByIdentifierResponse1_identifier_oer_p_[0] = {};
+const TTCN_OERdescriptor_t WriteDataByIdentifierResponse1_identifier_oer_ = { -1, TRUE, 2, FALSE, 0, 0, WriteDataByIdentifierResponse1_identifier_oer_ext_arr_, 0, WriteDataByIdentifierResponse1_identifier_oer_p_};
+const TTCN_Typedescriptor_t WriteDataByIdentifierResponse1_identifier_descr_ = { "@UnifiedDiagnosticServices.WriteDataByIdentifierResponse1.identifier", &OCTETSTRING_ber_, &WriteDataByIdentifierResponse1_identifier_raw_, &OCTETSTRING_text_, &WriteDataByIdentifierResponse1_identifier_xer_, &OCTETSTRING_json_, &WriteDataByIdentifierResponse1_identifier_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t WriteDataByIdentifierResponse1_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for WriteDataByIdentifierResponse1
+const TTCN_Typedescriptor_t WriteDataByIdentifierResponse1_descr_ = { "@UnifiedDiagnosticServices.WriteDataByIdentifierResponse1", NULL, &WriteDataByIdentifierResponse1_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t WriteDataByIdentifierResponse2_identifier_raw_ = {16,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,NULL,false};
+const XERdescriptor_t       WriteDataByIdentifierResponse2_identifier_xer_ = { {"identifier>\n", "identifier>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int WriteDataByIdentifierResponse2_identifier_oer_ext_arr_[0] = {};
+const int WriteDataByIdentifierResponse2_identifier_oer_p_[0] = {};
+const TTCN_OERdescriptor_t WriteDataByIdentifierResponse2_identifier_oer_ = { -1, TRUE, 2, FALSE, 0, 0, WriteDataByIdentifierResponse2_identifier_oer_ext_arr_, 0, WriteDataByIdentifierResponse2_identifier_oer_p_};
+const TTCN_Typedescriptor_t WriteDataByIdentifierResponse2_identifier_descr_ = { "@UnifiedDiagnosticServices.WriteDataByIdentifierResponse2.identifier", &OCTETSTRING_ber_, &WriteDataByIdentifierResponse2_identifier_raw_, &OCTETSTRING_text_, &WriteDataByIdentifierResponse2_identifier_xer_, &OCTETSTRING_json_, &WriteDataByIdentifierResponse2_identifier_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t WriteDataByIdentifierResponse2_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for WriteDataByIdentifierResponse2
+const TTCN_Typedescriptor_t WriteDataByIdentifierResponse2_descr_ = { "@UnifiedDiagnosticServices.WriteDataByIdentifierResponse2", NULL, &WriteDataByIdentifierResponse2_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t WriteDataByIdentifierResponse3_identifier_raw_ = {16,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,NULL,false};
+const XERdescriptor_t       WriteDataByIdentifierResponse3_identifier_xer_ = { {"identifier>\n", "identifier>\n"}, {12, 12}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int WriteDataByIdentifierResponse3_identifier_oer_ext_arr_[0] = {};
+const int WriteDataByIdentifierResponse3_identifier_oer_p_[0] = {};
+const TTCN_OERdescriptor_t WriteDataByIdentifierResponse3_identifier_oer_ = { -1, TRUE, 2, FALSE, 0, 0, WriteDataByIdentifierResponse3_identifier_oer_ext_arr_, 0, WriteDataByIdentifierResponse3_identifier_oer_p_};
+const TTCN_Typedescriptor_t WriteDataByIdentifierResponse3_identifier_descr_ = { "@UnifiedDiagnosticServices.WriteDataByIdentifierResponse3.identifier", &OCTETSTRING_ber_, &WriteDataByIdentifierResponse3_identifier_raw_, &OCTETSTRING_text_, &WriteDataByIdentifierResponse3_identifier_xer_, &OCTETSTRING_json_, &WriteDataByIdentifierResponse3_identifier_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t WriteDataByIdentifierResponse3_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for WriteDataByIdentifierResponse3
+const TTCN_Typedescriptor_t WriteDataByIdentifierResponse3_descr_ = { "@UnifiedDiagnosticServices.WriteDataByIdentifierResponse3", NULL, &WriteDataByIdentifierResponse3_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t WriteDataByIdentifierResponseSID_sid_raw_ = {8,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,NULL,false};
+const XERdescriptor_t       WriteDataByIdentifierResponseSID_sid_xer_ = { {"sid>\n", "sid>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int WriteDataByIdentifierResponseSID_sid_oer_ext_arr_[0] = {};
+const int WriteDataByIdentifierResponseSID_sid_oer_p_[0] = {};
+const TTCN_OERdescriptor_t WriteDataByIdentifierResponseSID_sid_oer_ = { -1, TRUE, 1, FALSE, 0, 0, WriteDataByIdentifierResponseSID_sid_oer_ext_arr_, 0, WriteDataByIdentifierResponseSID_sid_oer_p_};
+const TTCN_Typedescriptor_t WriteDataByIdentifierResponseSID_sid_descr_ = { "@UnifiedDiagnosticServices.WriteDataByIdentifierResponseSID.sid", &OCTETSTRING_ber_, &WriteDataByIdentifierResponseSID_sid_raw_, &OCTETSTRING_text_, &WriteDataByIdentifierResponseSID_sid_xer_, &OCTETSTRING_json_, &WriteDataByIdentifierResponseSID_sid_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t WriteDataByIdentifierResponse_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for WriteDataByIdentifierResponse
+const TTCN_Typedescriptor_t WriteDataByIdentifierResponse_descr_ = { "@UnifiedDiagnosticServices.WriteDataByIdentifierResponse", NULL, &WriteDataByIdentifierResponse_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t WriteDataByIdentifierResponseSID_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for WriteDataByIdentifierResponseSID
+const TTCN_Typedescriptor_t WriteDataByIdentifierResponseSID_descr_ = { "@UnifiedDiagnosticServices.WriteDataByIdentifierResponseSID", NULL, &WriteDataByIdentifierResponseSID_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t e__RequestSID_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,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for e__RequestSID
+const TTCN_Typedescriptor_t e__RequestSID_descr_ = { "@UnifiedDiagnosticServices.e_RequestSID", NULL, &e__RequestSID_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t e__ResponseCode_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,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for e__ResponseCode
+const TTCN_Typedescriptor_t e__ResponseCode_descr_ = { "@UnifiedDiagnosticServices.e_ResponseCode", NULL, &e__ResponseCode_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t NegativeResponseCodeSID_sid_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,NULL,false};
+const XERdescriptor_t       NegativeResponseCodeSID_sid_xer_ = { {"sid>\n", "sid>\n"}, {5, 5}, 0 |FORM_UNQUALIFIED, WHITESPACE_PRESERVE,  NULL, &module_object, -1, 0, NULL, NULL, -1, XSD_NONE };
+const int NegativeResponseCodeSID_sid_oer_ext_arr_[0] = {};
+const int NegativeResponseCodeSID_sid_oer_p_[0] = {};
+const TTCN_OERdescriptor_t NegativeResponseCodeSID_sid_oer_ = { -1, TRUE, 1, FALSE, 0, 0, NegativeResponseCodeSID_sid_oer_ext_arr_, 0, NegativeResponseCodeSID_sid_oer_p_};
+const TTCN_Typedescriptor_t NegativeResponseCodeSID_sid_descr_ = { "@UnifiedDiagnosticServices.NegativeResponseCodeSID.sid", &OCTETSTRING_ber_, &NegativeResponseCodeSID_sid_raw_, &OCTETSTRING_text_, &NegativeResponseCodeSID_sid_xer_, &OCTETSTRING_json_, &NegativeResponseCodeSID_sid_oer_, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t NegativeResponseCodeSID_requestSID_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,NULL,false};
+// No XER for NegativeResponseCodeSID_requestSID
+const TTCN_Typedescriptor_t NegativeResponseCodeSID_requestSID_descr_ = { "@UnifiedDiagnosticServices.NegativeResponseCodeSID.requestSID", NULL, &NegativeResponseCodeSID_requestSID_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t NegativeResponseCodeSID_responseCode_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,NULL,false};
+// No XER for NegativeResponseCodeSID_responseCode
+const TTCN_Typedescriptor_t NegativeResponseCodeSID_responseCode_descr_ = { "@UnifiedDiagnosticServices.NegativeResponseCodeSID.responseCode", NULL, &NegativeResponseCodeSID_responseCode_raw_, NULL, NULL, &ENUMERATED_json_, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t NegativeResponseCodeSID_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,NULL,false};
+// No XER for NegativeResponseCodeSID
+const TTCN_Typedescriptor_t NegativeResponseCodeSID_descr_ = { "@UnifiedDiagnosticServices.NegativeResponseCodeSID", NULL, &NegativeResponseCodeSID_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t TopLevelMessage__UDS__requests_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for TopLevelMessage__UDS__requests
+const TTCN_Typedescriptor_t TopLevelMessage__UDS__requests_descr_ = { "@UnifiedDiagnosticServices.TopLevelMessage_UDS_requests", NULL, &TopLevelMessage__UDS__requests_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+const TTCN_RAWdescriptor_t TopLevelMessage__UDS__responses_raw_ = {0,SG_NO,ORDER_LSB,ORDER_LSB,ORDER_LSB,ORDER_LSB,EXT_BIT_NO,ORDER_LSB,ORDER_LSB,TOP_BIT_INHERITED,0,0,0,8,0,NULL,-1,CharCoding::UNKNOWN,NULL,false};
+// No XER for TopLevelMessage__UDS__responses
+const TTCN_Typedescriptor_t TopLevelMessage__UDS__responses_descr_ = { "@UnifiedDiagnosticServices.TopLevelMessage_UDS_responses", NULL, &TopLevelMessage__UDS__responses_raw_, NULL, NULL, NULL, NULL, NULL, TTCN_Typedescriptor_t::DONTCARE };
+TTCN_Module module_object("UnifiedDiagnosticServices", __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);
+
+static const RuntimeVersionChecker ver_checker(  current_runtime_version.requires_major_version_6,
+  current_runtime_version.requires_minor_version_6,
+  current_runtime_version.requires_patch_level_0,  current_runtime_version.requires_runtime_1);
+
+/* Member functions of C++ classes */
+
+SuppressPosRspMsgIndicationBitType::SuppressPosRspMsgIndicationBitType()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+SuppressPosRspMsgIndicationBitType::SuppressPosRspMsgIndicationBitType(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @UnifiedDiagnosticServices.SuppressPosRspMsgIndicationBitType with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+SuppressPosRspMsgIndicationBitType::SuppressPosRspMsgIndicationBitType(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+SuppressPosRspMsgIndicationBitType::SuppressPosRspMsgIndicationBitType(const SuppressPosRspMsgIndicationBitType& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @UnifiedDiagnosticServices.SuppressPosRspMsgIndicationBitType.");
+enum_value = other_value.enum_value;
+}
+
+SuppressPosRspMsgIndicationBitType& SuppressPosRspMsgIndicationBitType::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @UnifiedDiagnosticServices.SuppressPosRspMsgIndicationBitType.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+SuppressPosRspMsgIndicationBitType& SuppressPosRspMsgIndicationBitType::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+SuppressPosRspMsgIndicationBitType& SuppressPosRspMsgIndicationBitType::operator=(const SuppressPosRspMsgIndicationBitType& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @UnifiedDiagnosticServices.SuppressPosRspMsgIndicationBitType.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean SuppressPosRspMsgIndicationBitType::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.SuppressPosRspMsgIndicationBitType.");
+return enum_value == other_value;
+}
+
+boolean SuppressPosRspMsgIndicationBitType::operator==(const SuppressPosRspMsgIndicationBitType& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.SuppressPosRspMsgIndicationBitType.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.SuppressPosRspMsgIndicationBitType.");
+return enum_value == other_value.enum_value;
+}
+
+boolean SuppressPosRspMsgIndicationBitType::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.SuppressPosRspMsgIndicationBitType.");
+return enum_value < other_value;
+}
+
+boolean SuppressPosRspMsgIndicationBitType::operator<(const SuppressPosRspMsgIndicationBitType& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.SuppressPosRspMsgIndicationBitType.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.SuppressPosRspMsgIndicationBitType.");
+return enum_value < other_value.enum_value;
+}
+
+boolean SuppressPosRspMsgIndicationBitType::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.SuppressPosRspMsgIndicationBitType.");
+return enum_value > other_value;
+}
+
+boolean SuppressPosRspMsgIndicationBitType::operator>(const SuppressPosRspMsgIndicationBitType& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.SuppressPosRspMsgIndicationBitType.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.SuppressPosRspMsgIndicationBitType.");
+return enum_value > other_value.enum_value;
+}
+
+const char *SuppressPosRspMsgIndicationBitType::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case doNotsuppresssPos: return "doNotsuppresssPos";
+case suppresssPos: return "suppresssPos";
+default: return "<unknown>";
+}
+}
+
+SuppressPosRspMsgIndicationBitType::enum_type SuppressPosRspMsgIndicationBitType::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "doNotsuppresssPos")) return doNotsuppresssPos;
+else if (!strcmp(str_par, "suppresssPos")) return suppresssPos;
+else return UNKNOWN_VALUE;
+}
+
+boolean SuppressPosRspMsgIndicationBitType::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 0:
+case 1:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int SuppressPosRspMsgIndicationBitType::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @UnifiedDiagnosticServices.SuppressPosRspMsgIndicationBitType.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int SuppressPosRspMsgIndicationBitType::enum2int(const SuppressPosRspMsgIndicationBitType& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @UnifiedDiagnosticServices.SuppressPosRspMsgIndicationBitType.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void SuppressPosRspMsgIndicationBitType::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @UnifiedDiagnosticServices.SuppressPosRspMsgIndicationBitType.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+SuppressPosRspMsgIndicationBitType::operator SuppressPosRspMsgIndicationBitType::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @UnifiedDiagnosticServices.SuppressPosRspMsgIndicationBitType.");
+return enum_value;
+}
+
+void SuppressPosRspMsgIndicationBitType::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void SuppressPosRspMsgIndicationBitType::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@UnifiedDiagnosticServices.SuppressPosRspMsgIndicationBitType");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @UnifiedDiagnosticServices.SuppressPosRspMsgIndicationBitType.");
+  }
+}
+
+void SuppressPosRspMsgIndicationBitType::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @UnifiedDiagnosticServices.SuppressPosRspMsgIndicationBitType.");
+text_buf.push_int(enum_value);
+}
+
+void SuppressPosRspMsgIndicationBitType::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @UnifiedDiagnosticServices.SuppressPosRspMsgIndicationBitType.", enum_value);
+}
+
+void SuppressPosRspMsgIndicationBitType::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void SuppressPosRspMsgIndicationBitType::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int SuppressPosRspMsgIndicationBitType::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*)
+{
+  int decoded_value = 0;
+  int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 2, no_err);
+  if (decoded_length < 0) return decoded_length;
+  if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value;
+  else {
+    if(no_err){
+     return -1;
+    } else {
+    TTCN_EncDec_ErrorContext::error
+      (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name);
+    enum_value = UNKNOWN_VALUE;
+    }
+  }
+  return decoded_length;
+}
+
+int SuppressPosRspMsgIndicationBitType::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const
+{
+  return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 2);
+}
+
+void SuppressPosRspMsgIndicationBitType_template::copy_template(const SuppressPosRspMsgIndicationBitType_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SuppressPosRspMsgIndicationBitType_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @UnifiedDiagnosticServices.SuppressPosRspMsgIndicationBitType.");
+}
+}
+
+SuppressPosRspMsgIndicationBitType_template::SuppressPosRspMsgIndicationBitType_template()
+{
+}
+
+SuppressPosRspMsgIndicationBitType_template::SuppressPosRspMsgIndicationBitType_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SuppressPosRspMsgIndicationBitType_template::SuppressPosRspMsgIndicationBitType_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!SuppressPosRspMsgIndicationBitType::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @UnifiedDiagnosticServices.SuppressPosRspMsgIndicationBitType with unknown numeric value %d.", other_value);
+single_value = (SuppressPosRspMsgIndicationBitType::enum_type)other_value;
+}
+
+SuppressPosRspMsgIndicationBitType_template::SuppressPosRspMsgIndicationBitType_template(SuppressPosRspMsgIndicationBitType::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+SuppressPosRspMsgIndicationBitType_template::SuppressPosRspMsgIndicationBitType_template(const SuppressPosRspMsgIndicationBitType& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == SuppressPosRspMsgIndicationBitType::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @UnifiedDiagnosticServices.SuppressPosRspMsgIndicationBitType.");
+single_value = other_value.enum_value;
+}
+
+SuppressPosRspMsgIndicationBitType_template::SuppressPosRspMsgIndicationBitType_template(const OPTIONAL<SuppressPosRspMsgIndicationBitType>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (SuppressPosRspMsgIndicationBitType::enum_type)(const SuppressPosRspMsgIndicationBitType&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @UnifiedDiagnosticServices.SuppressPosRspMsgIndicationBitType from an unbound optional field.");
+}
+}
+
+SuppressPosRspMsgIndicationBitType_template::SuppressPosRspMsgIndicationBitType_template(const SuppressPosRspMsgIndicationBitType_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+SuppressPosRspMsgIndicationBitType_template::~SuppressPosRspMsgIndicationBitType_template()
+{
+clean_up();
+}
+
+boolean SuppressPosRspMsgIndicationBitType_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean SuppressPosRspMsgIndicationBitType_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != SuppressPosRspMsgIndicationBitType::UNBOUND_VALUE;
+}
+
+void SuppressPosRspMsgIndicationBitType_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SuppressPosRspMsgIndicationBitType_template& SuppressPosRspMsgIndicationBitType_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SuppressPosRspMsgIndicationBitType_template& SuppressPosRspMsgIndicationBitType_template::operator=(int other_value)
+{
+if (!SuppressPosRspMsgIndicationBitType::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @UnifiedDiagnosticServices.SuppressPosRspMsgIndicationBitType.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (SuppressPosRspMsgIndicationBitType::enum_type)other_value;
+return *this;
+}
+
+SuppressPosRspMsgIndicationBitType_template& SuppressPosRspMsgIndicationBitType_template::operator=(SuppressPosRspMsgIndicationBitType::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+SuppressPosRspMsgIndicationBitType_template& SuppressPosRspMsgIndicationBitType_template::operator=(const SuppressPosRspMsgIndicationBitType& other_value)
+{
+if (other_value.enum_value == SuppressPosRspMsgIndicationBitType::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @UnifiedDiagnosticServices.SuppressPosRspMsgIndicationBitType to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+SuppressPosRspMsgIndicationBitType_template& SuppressPosRspMsgIndicationBitType_template::operator=(const OPTIONAL<SuppressPosRspMsgIndicationBitType>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (SuppressPosRspMsgIndicationBitType::enum_type)(const SuppressPosRspMsgIndicationBitType&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @UnifiedDiagnosticServices.SuppressPosRspMsgIndicationBitType.");
+}
+return *this;
+}
+
+SuppressPosRspMsgIndicationBitType_template& SuppressPosRspMsgIndicationBitType_template::operator=(const SuppressPosRspMsgIndicationBitType_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SuppressPosRspMsgIndicationBitType_template::match(SuppressPosRspMsgIndicationBitType::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @UnifiedDiagnosticServices.SuppressPosRspMsgIndicationBitType.");
+}
+return FALSE;
+}
+
+boolean SuppressPosRspMsgIndicationBitType_template::match(const SuppressPosRspMsgIndicationBitType& other_value, boolean) const
+{
+if (other_value.enum_value == SuppressPosRspMsgIndicationBitType::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @UnifiedDiagnosticServices.SuppressPosRspMsgIndicationBitType with an unbound value.");
+return match(other_value.enum_value);
+}
+
+SuppressPosRspMsgIndicationBitType::enum_type SuppressPosRspMsgIndicationBitType_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @UnifiedDiagnosticServices.SuppressPosRspMsgIndicationBitType.");
+return single_value;
+}
+
+void SuppressPosRspMsgIndicationBitType_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @UnifiedDiagnosticServices.SuppressPosRspMsgIndicationBitType.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SuppressPosRspMsgIndicationBitType_template[list_length];
+}
+
+SuppressPosRspMsgIndicationBitType_template& SuppressPosRspMsgIndicationBitType_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @UnifiedDiagnosticServices.SuppressPosRspMsgIndicationBitType.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @UnifiedDiagnosticServices.SuppressPosRspMsgIndicationBitType.");
+return value_list.list_value[list_index];
+}
+
+void SuppressPosRspMsgIndicationBitType_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(SuppressPosRspMsgIndicationBitType::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SuppressPosRspMsgIndicationBitType_template::log_match(const SuppressPosRspMsgIndicationBitType& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void SuppressPosRspMsgIndicationBitType_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @UnifiedDiagnosticServices.SuppressPosRspMsgIndicationBitType.");
+}
+}
+
+void SuppressPosRspMsgIndicationBitType_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (SuppressPosRspMsgIndicationBitType::enum_type)text_buf.pull_int().get_val();
+if (!SuppressPosRspMsgIndicationBitType::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @UnifiedDiagnosticServices.SuppressPosRspMsgIndicationBitType.", single_value);
+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 SuppressPosRspMsgIndicationBitType_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @UnifiedDiagnosticServices.SuppressPosRspMsgIndicationBitType.");
+}
+}
+
+boolean SuppressPosRspMsgIndicationBitType_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SuppressPosRspMsgIndicationBitType_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 SuppressPosRspMsgIndicationBitType_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    SuppressPosRspMsgIndicationBitType_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    SuppressPosRspMsgIndicationBitType::enum_type enum_val = SuppressPosRspMsgIndicationBitType::str_to_enum(m_p->get_enumerated());
+    if (!SuppressPosRspMsgIndicationBitType::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @UnifiedDiagnosticServices.SuppressPosRspMsgIndicationBitType.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@UnifiedDiagnosticServices.SuppressPosRspMsgIndicationBitType");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SuppressPosRspMsgIndicationBitType_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@UnifiedDiagnosticServices.SuppressPosRspMsgIndicationBitType");
+}
+
+DefaultSessionRequest::DefaultSessionRequest()
+{
+}
+
+DefaultSessionRequest::DefaultSessionRequest(const BITSTRING& par_diagnosticSessionType)
+  :   field_diagnosticSessionType(par_diagnosticSessionType)
+{
+}
+
+DefaultSessionRequest::DefaultSessionRequest(const DefaultSessionRequest& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.DefaultSessionRequest.");
+if (other_value.diagnosticSessionType().is_bound()) field_diagnosticSessionType = other_value.diagnosticSessionType();
+else field_diagnosticSessionType.clean_up();
+}
+
+void DefaultSessionRequest::clean_up()
+{
+field_diagnosticSessionType.clean_up();
+}
+
+const TTCN_Typedescriptor_t* DefaultSessionRequest::get_descriptor() const { return &DefaultSessionRequest_descr_; }
+DefaultSessionRequest& DefaultSessionRequest::operator=(const DefaultSessionRequest& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.DefaultSessionRequest.");
+  if (other_value.diagnosticSessionType().is_bound()) field_diagnosticSessionType = other_value.diagnosticSessionType();
+  else field_diagnosticSessionType.clean_up();
+}
+return *this;
+}
+
+boolean DefaultSessionRequest::operator==(const DefaultSessionRequest& other_value) const
+{
+return field_diagnosticSessionType==other_value.field_diagnosticSessionType;
+}
+
+boolean DefaultSessionRequest::is_bound() const
+{
+return (field_diagnosticSessionType.is_bound());
+}
+boolean DefaultSessionRequest::is_value() const
+{
+return field_diagnosticSessionType.is_value();
+}
+void DefaultSessionRequest::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ diagnosticSessionType := ");
+field_diagnosticSessionType.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void DefaultSessionRequest::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 (1<param.get_size()) {
+      param.error("record value of type @UnifiedDiagnosticServices.DefaultSessionRequest has 1 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) diagnosticSessionType().set_param(*param.get_elem(0));
+    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(), "diagnosticSessionType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          diagnosticSessionType().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 @UnifiedDiagnosticServices.DefaultSessionRequest: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.DefaultSessionRequest");
+  }
+}
+
+void DefaultSessionRequest::set_implicit_omit()
+{
+if (diagnosticSessionType().is_bound()) diagnosticSessionType().set_implicit_omit();
+}
+
+void DefaultSessionRequest::encode_text(Text_Buf& text_buf) const
+{
+field_diagnosticSessionType.encode_text(text_buf);
+}
+
+void DefaultSessionRequest::decode_text(Text_Buf& text_buf)
+{
+field_diagnosticSessionType.decode_text(text_buf);
+}
+
+void DefaultSessionRequest::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void DefaultSessionRequest::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int DefaultSessionRequest::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, DefaultSessionRequest_diagnosticSessionType_descr_.raw->forceomit);
+  decoded_field_length = field_diagnosticSessionType.RAW_decode(DefaultSessionRequest_diagnosticSessionType_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int DefaultSessionRequest::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 = 1;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(1);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, DefaultSessionRequest_diagnosticSessionType_descr_.raw);
+  encoded_length += field_diagnosticSessionType.RAW_encode(DefaultSessionRequest_diagnosticSessionType_descr_, *myleaf.body.node.nodes[0]);
+  return myleaf.length = encoded_length;
+}
+
+struct DefaultSessionRequest_template::single_value_struct {
+BITSTRING_template field_diagnosticSessionType;
+};
+
+void DefaultSessionRequest_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_diagnosticSessionType = ANY_VALUE;
+}
+}
+}
+
+void DefaultSessionRequest_template::copy_value(const DefaultSessionRequest& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.diagnosticSessionType().is_bound()) {
+  single_value->field_diagnosticSessionType = other_value.diagnosticSessionType();
+} else {
+  single_value->field_diagnosticSessionType.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void DefaultSessionRequest_template::copy_template(const DefaultSessionRequest_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.diagnosticSessionType().get_selection()) {
+single_value->field_diagnosticSessionType = other_value.diagnosticSessionType();
+} else {
+single_value->field_diagnosticSessionType.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new DefaultSessionRequest_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.DefaultSessionRequest.");
+break;
+}
+set_selection(other_value);
+}
+
+DefaultSessionRequest_template::DefaultSessionRequest_template()
+{
+}
+
+DefaultSessionRequest_template::DefaultSessionRequest_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+DefaultSessionRequest_template::DefaultSessionRequest_template(const DefaultSessionRequest& other_value)
+{
+copy_value(other_value);
+}
+
+DefaultSessionRequest_template::DefaultSessionRequest_template(const OPTIONAL<DefaultSessionRequest>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const DefaultSessionRequest&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.DefaultSessionRequest from an unbound optional field.");
+}
+}
+
+DefaultSessionRequest_template::DefaultSessionRequest_template(const DefaultSessionRequest_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+DefaultSessionRequest_template::~DefaultSessionRequest_template()
+{
+clean_up();
+}
+
+DefaultSessionRequest_template& DefaultSessionRequest_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+DefaultSessionRequest_template& DefaultSessionRequest_template::operator=(const DefaultSessionRequest& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+DefaultSessionRequest_template& DefaultSessionRequest_template::operator=(const OPTIONAL<DefaultSessionRequest>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const DefaultSessionRequest&)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 @UnifiedDiagnosticServices.DefaultSessionRequest.");
+}
+return *this;
+}
+
+DefaultSessionRequest_template& DefaultSessionRequest_template::operator=(const DefaultSessionRequest_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean DefaultSessionRequest_template::match(const DefaultSessionRequest& 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.diagnosticSessionType().is_bound()) return FALSE;
+if(!single_value->field_diagnosticSessionType.match(other_value.diagnosticSessionType(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.DefaultSessionRequest.");
+}
+return FALSE;
+}
+
+boolean DefaultSessionRequest_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_diagnosticSessionType.is_bound()
+;
+}
+
+boolean DefaultSessionRequest_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_diagnosticSessionType.is_value();
+}
+
+void DefaultSessionRequest_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+DefaultSessionRequest DefaultSessionRequest_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 @UnifiedDiagnosticServices.DefaultSessionRequest.");
+DefaultSessionRequest ret_val;
+if (single_value->field_diagnosticSessionType.is_bound()) {
+ret_val.diagnosticSessionType() = single_value->field_diagnosticSessionType.valueof();
+}
+return ret_val;
+}
+
+void DefaultSessionRequest_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.DefaultSessionRequest.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new DefaultSessionRequest_template[list_length];
+}
+
+DefaultSessionRequest_template& DefaultSessionRequest_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.DefaultSessionRequest.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.DefaultSessionRequest.");
+return value_list.list_value[list_index];
+}
+
+BITSTRING_template& DefaultSessionRequest_template::diagnosticSessionType()
+{
+set_specific();
+return single_value->field_diagnosticSessionType;
+}
+
+const BITSTRING_template& DefaultSessionRequest_template::diagnosticSessionType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field diagnosticSessionType of a non-specific template of type @UnifiedDiagnosticServices.DefaultSessionRequest.");
+return single_value->field_diagnosticSessionType;
+}
+
+int DefaultSessionRequest_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.DefaultSessionRequest which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 1;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.DefaultSessionRequest 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 @UnifiedDiagnosticServices.DefaultSessionRequest containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.DefaultSessionRequest containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.DefaultSessionRequest containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.DefaultSessionRequest containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.DefaultSessionRequest.");
+  }
+  return 0;
+}
+
+void DefaultSessionRequest_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ diagnosticSessionType := ");
+single_value->field_diagnosticSessionType.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void DefaultSessionRequest_template::log_match(const DefaultSessionRequest& 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_diagnosticSessionType.match(match_value.diagnosticSessionType(), legacy)){
+TTCN_Logger::log_logmatch_info(".diagnosticSessionType");
+single_value->field_diagnosticSessionType.log_match(match_value.diagnosticSessionType(), 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("{ diagnosticSessionType := ");
+single_value->field_diagnosticSessionType.log_match(match_value.diagnosticSessionType(), 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 DefaultSessionRequest_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_diagnosticSessionType.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 @UnifiedDiagnosticServices.DefaultSessionRequest.");
+}
+}
+
+void DefaultSessionRequest_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_diagnosticSessionType.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 DefaultSessionRequest_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 @UnifiedDiagnosticServices.DefaultSessionRequest.");
+}
+}
+
+void DefaultSessionRequest_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: {
+    DefaultSessionRequest_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (1<param.get_size()) {
+      param.error("record template of type @UnifiedDiagnosticServices.DefaultSessionRequest has 1 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) diagnosticSessionType().set_param(*param.get_elem(0));
+    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(), "diagnosticSessionType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          diagnosticSessionType().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 @UnifiedDiagnosticServices.DefaultSessionRequest: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.DefaultSessionRequest");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void DefaultSessionRequest_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_diagnosticSessionType.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.DefaultSessionRequest");
+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 : "@UnifiedDiagnosticServices.DefaultSessionRequest");
+}
+
+boolean DefaultSessionRequest_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean DefaultSessionRequest_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ProgrammingSessionRequest::ProgrammingSessionRequest()
+{
+}
+
+ProgrammingSessionRequest::ProgrammingSessionRequest(const BITSTRING& par_diagnosticSessionType)
+  :   field_diagnosticSessionType(par_diagnosticSessionType)
+{
+}
+
+ProgrammingSessionRequest::ProgrammingSessionRequest(const ProgrammingSessionRequest& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.ProgrammingSessionRequest.");
+if (other_value.diagnosticSessionType().is_bound()) field_diagnosticSessionType = other_value.diagnosticSessionType();
+else field_diagnosticSessionType.clean_up();
+}
+
+void ProgrammingSessionRequest::clean_up()
+{
+field_diagnosticSessionType.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ProgrammingSessionRequest::get_descriptor() const { return &ProgrammingSessionRequest_descr_; }
+ProgrammingSessionRequest& ProgrammingSessionRequest::operator=(const ProgrammingSessionRequest& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.ProgrammingSessionRequest.");
+  if (other_value.diagnosticSessionType().is_bound()) field_diagnosticSessionType = other_value.diagnosticSessionType();
+  else field_diagnosticSessionType.clean_up();
+}
+return *this;
+}
+
+boolean ProgrammingSessionRequest::operator==(const ProgrammingSessionRequest& other_value) const
+{
+return field_diagnosticSessionType==other_value.field_diagnosticSessionType;
+}
+
+boolean ProgrammingSessionRequest::is_bound() const
+{
+return (field_diagnosticSessionType.is_bound());
+}
+boolean ProgrammingSessionRequest::is_value() const
+{
+return field_diagnosticSessionType.is_value();
+}
+void ProgrammingSessionRequest::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ diagnosticSessionType := ");
+field_diagnosticSessionType.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ProgrammingSessionRequest::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 (1<param.get_size()) {
+      param.error("record value of type @UnifiedDiagnosticServices.ProgrammingSessionRequest has 1 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) diagnosticSessionType().set_param(*param.get_elem(0));
+    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(), "diagnosticSessionType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          diagnosticSessionType().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 @UnifiedDiagnosticServices.ProgrammingSessionRequest: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.ProgrammingSessionRequest");
+  }
+}
+
+void ProgrammingSessionRequest::set_implicit_omit()
+{
+if (diagnosticSessionType().is_bound()) diagnosticSessionType().set_implicit_omit();
+}
+
+void ProgrammingSessionRequest::encode_text(Text_Buf& text_buf) const
+{
+field_diagnosticSessionType.encode_text(text_buf);
+}
+
+void ProgrammingSessionRequest::decode_text(Text_Buf& text_buf)
+{
+field_diagnosticSessionType.decode_text(text_buf);
+}
+
+void ProgrammingSessionRequest::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ProgrammingSessionRequest::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ProgrammingSessionRequest::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, ProgrammingSessionRequest_diagnosticSessionType_descr_.raw->forceomit);
+  decoded_field_length = field_diagnosticSessionType.RAW_decode(ProgrammingSessionRequest_diagnosticSessionType_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ProgrammingSessionRequest::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 = 1;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(1);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, ProgrammingSessionRequest_diagnosticSessionType_descr_.raw);
+  encoded_length += field_diagnosticSessionType.RAW_encode(ProgrammingSessionRequest_diagnosticSessionType_descr_, *myleaf.body.node.nodes[0]);
+  return myleaf.length = encoded_length;
+}
+
+struct ProgrammingSessionRequest_template::single_value_struct {
+BITSTRING_template field_diagnosticSessionType;
+};
+
+void ProgrammingSessionRequest_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_diagnosticSessionType = ANY_VALUE;
+}
+}
+}
+
+void ProgrammingSessionRequest_template::copy_value(const ProgrammingSessionRequest& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.diagnosticSessionType().is_bound()) {
+  single_value->field_diagnosticSessionType = other_value.diagnosticSessionType();
+} else {
+  single_value->field_diagnosticSessionType.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ProgrammingSessionRequest_template::copy_template(const ProgrammingSessionRequest_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.diagnosticSessionType().get_selection()) {
+single_value->field_diagnosticSessionType = other_value.diagnosticSessionType();
+} else {
+single_value->field_diagnosticSessionType.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ProgrammingSessionRequest_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.ProgrammingSessionRequest.");
+break;
+}
+set_selection(other_value);
+}
+
+ProgrammingSessionRequest_template::ProgrammingSessionRequest_template()
+{
+}
+
+ProgrammingSessionRequest_template::ProgrammingSessionRequest_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ProgrammingSessionRequest_template::ProgrammingSessionRequest_template(const ProgrammingSessionRequest& other_value)
+{
+copy_value(other_value);
+}
+
+ProgrammingSessionRequest_template::ProgrammingSessionRequest_template(const OPTIONAL<ProgrammingSessionRequest>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ProgrammingSessionRequest&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.ProgrammingSessionRequest from an unbound optional field.");
+}
+}
+
+ProgrammingSessionRequest_template::ProgrammingSessionRequest_template(const ProgrammingSessionRequest_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ProgrammingSessionRequest_template::~ProgrammingSessionRequest_template()
+{
+clean_up();
+}
+
+ProgrammingSessionRequest_template& ProgrammingSessionRequest_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ProgrammingSessionRequest_template& ProgrammingSessionRequest_template::operator=(const ProgrammingSessionRequest& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ProgrammingSessionRequest_template& ProgrammingSessionRequest_template::operator=(const OPTIONAL<ProgrammingSessionRequest>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ProgrammingSessionRequest&)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 @UnifiedDiagnosticServices.ProgrammingSessionRequest.");
+}
+return *this;
+}
+
+ProgrammingSessionRequest_template& ProgrammingSessionRequest_template::operator=(const ProgrammingSessionRequest_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ProgrammingSessionRequest_template::match(const ProgrammingSessionRequest& 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.diagnosticSessionType().is_bound()) return FALSE;
+if(!single_value->field_diagnosticSessionType.match(other_value.diagnosticSessionType(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.ProgrammingSessionRequest.");
+}
+return FALSE;
+}
+
+boolean ProgrammingSessionRequest_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_diagnosticSessionType.is_bound()
+;
+}
+
+boolean ProgrammingSessionRequest_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_diagnosticSessionType.is_value();
+}
+
+void ProgrammingSessionRequest_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ProgrammingSessionRequest ProgrammingSessionRequest_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 @UnifiedDiagnosticServices.ProgrammingSessionRequest.");
+ProgrammingSessionRequest ret_val;
+if (single_value->field_diagnosticSessionType.is_bound()) {
+ret_val.diagnosticSessionType() = single_value->field_diagnosticSessionType.valueof();
+}
+return ret_val;
+}
+
+void ProgrammingSessionRequest_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.ProgrammingSessionRequest.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ProgrammingSessionRequest_template[list_length];
+}
+
+ProgrammingSessionRequest_template& ProgrammingSessionRequest_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.ProgrammingSessionRequest.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.ProgrammingSessionRequest.");
+return value_list.list_value[list_index];
+}
+
+BITSTRING_template& ProgrammingSessionRequest_template::diagnosticSessionType()
+{
+set_specific();
+return single_value->field_diagnosticSessionType;
+}
+
+const BITSTRING_template& ProgrammingSessionRequest_template::diagnosticSessionType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field diagnosticSessionType of a non-specific template of type @UnifiedDiagnosticServices.ProgrammingSessionRequest.");
+return single_value->field_diagnosticSessionType;
+}
+
+int ProgrammingSessionRequest_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ProgrammingSessionRequest which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 1;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ProgrammingSessionRequest 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 @UnifiedDiagnosticServices.ProgrammingSessionRequest containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ProgrammingSessionRequest containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ProgrammingSessionRequest containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ProgrammingSessionRequest containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.ProgrammingSessionRequest.");
+  }
+  return 0;
+}
+
+void ProgrammingSessionRequest_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ diagnosticSessionType := ");
+single_value->field_diagnosticSessionType.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ProgrammingSessionRequest_template::log_match(const ProgrammingSessionRequest& 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_diagnosticSessionType.match(match_value.diagnosticSessionType(), legacy)){
+TTCN_Logger::log_logmatch_info(".diagnosticSessionType");
+single_value->field_diagnosticSessionType.log_match(match_value.diagnosticSessionType(), 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("{ diagnosticSessionType := ");
+single_value->field_diagnosticSessionType.log_match(match_value.diagnosticSessionType(), 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 ProgrammingSessionRequest_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_diagnosticSessionType.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 @UnifiedDiagnosticServices.ProgrammingSessionRequest.");
+}
+}
+
+void ProgrammingSessionRequest_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_diagnosticSessionType.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 ProgrammingSessionRequest_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 @UnifiedDiagnosticServices.ProgrammingSessionRequest.");
+}
+}
+
+void ProgrammingSessionRequest_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: {
+    ProgrammingSessionRequest_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (1<param.get_size()) {
+      param.error("record template of type @UnifiedDiagnosticServices.ProgrammingSessionRequest has 1 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) diagnosticSessionType().set_param(*param.get_elem(0));
+    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(), "diagnosticSessionType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          diagnosticSessionType().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 @UnifiedDiagnosticServices.ProgrammingSessionRequest: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.ProgrammingSessionRequest");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ProgrammingSessionRequest_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_diagnosticSessionType.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.ProgrammingSessionRequest");
+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 : "@UnifiedDiagnosticServices.ProgrammingSessionRequest");
+}
+
+boolean ProgrammingSessionRequest_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ProgrammingSessionRequest_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ExtendedDiagnosticSessionRequest::ExtendedDiagnosticSessionRequest()
+{
+}
+
+ExtendedDiagnosticSessionRequest::ExtendedDiagnosticSessionRequest(const BITSTRING& par_diagnosticSessionType)
+  :   field_diagnosticSessionType(par_diagnosticSessionType)
+{
+}
+
+ExtendedDiagnosticSessionRequest::ExtendedDiagnosticSessionRequest(const ExtendedDiagnosticSessionRequest& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.ExtendedDiagnosticSessionRequest.");
+if (other_value.diagnosticSessionType().is_bound()) field_diagnosticSessionType = other_value.diagnosticSessionType();
+else field_diagnosticSessionType.clean_up();
+}
+
+void ExtendedDiagnosticSessionRequest::clean_up()
+{
+field_diagnosticSessionType.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ExtendedDiagnosticSessionRequest::get_descriptor() const { return &ExtendedDiagnosticSessionRequest_descr_; }
+ExtendedDiagnosticSessionRequest& ExtendedDiagnosticSessionRequest::operator=(const ExtendedDiagnosticSessionRequest& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.ExtendedDiagnosticSessionRequest.");
+  if (other_value.diagnosticSessionType().is_bound()) field_diagnosticSessionType = other_value.diagnosticSessionType();
+  else field_diagnosticSessionType.clean_up();
+}
+return *this;
+}
+
+boolean ExtendedDiagnosticSessionRequest::operator==(const ExtendedDiagnosticSessionRequest& other_value) const
+{
+return field_diagnosticSessionType==other_value.field_diagnosticSessionType;
+}
+
+boolean ExtendedDiagnosticSessionRequest::is_bound() const
+{
+return (field_diagnosticSessionType.is_bound());
+}
+boolean ExtendedDiagnosticSessionRequest::is_value() const
+{
+return field_diagnosticSessionType.is_value();
+}
+void ExtendedDiagnosticSessionRequest::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ diagnosticSessionType := ");
+field_diagnosticSessionType.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ExtendedDiagnosticSessionRequest::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 (1<param.get_size()) {
+      param.error("record value of type @UnifiedDiagnosticServices.ExtendedDiagnosticSessionRequest has 1 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) diagnosticSessionType().set_param(*param.get_elem(0));
+    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(), "diagnosticSessionType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          diagnosticSessionType().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 @UnifiedDiagnosticServices.ExtendedDiagnosticSessionRequest: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.ExtendedDiagnosticSessionRequest");
+  }
+}
+
+void ExtendedDiagnosticSessionRequest::set_implicit_omit()
+{
+if (diagnosticSessionType().is_bound()) diagnosticSessionType().set_implicit_omit();
+}
+
+void ExtendedDiagnosticSessionRequest::encode_text(Text_Buf& text_buf) const
+{
+field_diagnosticSessionType.encode_text(text_buf);
+}
+
+void ExtendedDiagnosticSessionRequest::decode_text(Text_Buf& text_buf)
+{
+field_diagnosticSessionType.decode_text(text_buf);
+}
+
+void ExtendedDiagnosticSessionRequest::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ExtendedDiagnosticSessionRequest::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ExtendedDiagnosticSessionRequest::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, ExtendedDiagnosticSessionRequest_diagnosticSessionType_descr_.raw->forceomit);
+  decoded_field_length = field_diagnosticSessionType.RAW_decode(ExtendedDiagnosticSessionRequest_diagnosticSessionType_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ExtendedDiagnosticSessionRequest::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 = 1;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(1);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, ExtendedDiagnosticSessionRequest_diagnosticSessionType_descr_.raw);
+  encoded_length += field_diagnosticSessionType.RAW_encode(ExtendedDiagnosticSessionRequest_diagnosticSessionType_descr_, *myleaf.body.node.nodes[0]);
+  return myleaf.length = encoded_length;
+}
+
+struct ExtendedDiagnosticSessionRequest_template::single_value_struct {
+BITSTRING_template field_diagnosticSessionType;
+};
+
+void ExtendedDiagnosticSessionRequest_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_diagnosticSessionType = ANY_VALUE;
+}
+}
+}
+
+void ExtendedDiagnosticSessionRequest_template::copy_value(const ExtendedDiagnosticSessionRequest& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.diagnosticSessionType().is_bound()) {
+  single_value->field_diagnosticSessionType = other_value.diagnosticSessionType();
+} else {
+  single_value->field_diagnosticSessionType.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ExtendedDiagnosticSessionRequest_template::copy_template(const ExtendedDiagnosticSessionRequest_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.diagnosticSessionType().get_selection()) {
+single_value->field_diagnosticSessionType = other_value.diagnosticSessionType();
+} else {
+single_value->field_diagnosticSessionType.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ExtendedDiagnosticSessionRequest_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.ExtendedDiagnosticSessionRequest.");
+break;
+}
+set_selection(other_value);
+}
+
+ExtendedDiagnosticSessionRequest_template::ExtendedDiagnosticSessionRequest_template()
+{
+}
+
+ExtendedDiagnosticSessionRequest_template::ExtendedDiagnosticSessionRequest_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ExtendedDiagnosticSessionRequest_template::ExtendedDiagnosticSessionRequest_template(const ExtendedDiagnosticSessionRequest& other_value)
+{
+copy_value(other_value);
+}
+
+ExtendedDiagnosticSessionRequest_template::ExtendedDiagnosticSessionRequest_template(const OPTIONAL<ExtendedDiagnosticSessionRequest>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExtendedDiagnosticSessionRequest&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.ExtendedDiagnosticSessionRequest from an unbound optional field.");
+}
+}
+
+ExtendedDiagnosticSessionRequest_template::ExtendedDiagnosticSessionRequest_template(const ExtendedDiagnosticSessionRequest_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ExtendedDiagnosticSessionRequest_template::~ExtendedDiagnosticSessionRequest_template()
+{
+clean_up();
+}
+
+ExtendedDiagnosticSessionRequest_template& ExtendedDiagnosticSessionRequest_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ExtendedDiagnosticSessionRequest_template& ExtendedDiagnosticSessionRequest_template::operator=(const ExtendedDiagnosticSessionRequest& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ExtendedDiagnosticSessionRequest_template& ExtendedDiagnosticSessionRequest_template::operator=(const OPTIONAL<ExtendedDiagnosticSessionRequest>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExtendedDiagnosticSessionRequest&)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 @UnifiedDiagnosticServices.ExtendedDiagnosticSessionRequest.");
+}
+return *this;
+}
+
+ExtendedDiagnosticSessionRequest_template& ExtendedDiagnosticSessionRequest_template::operator=(const ExtendedDiagnosticSessionRequest_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ExtendedDiagnosticSessionRequest_template::match(const ExtendedDiagnosticSessionRequest& 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.diagnosticSessionType().is_bound()) return FALSE;
+if(!single_value->field_diagnosticSessionType.match(other_value.diagnosticSessionType(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.ExtendedDiagnosticSessionRequest.");
+}
+return FALSE;
+}
+
+boolean ExtendedDiagnosticSessionRequest_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_diagnosticSessionType.is_bound()
+;
+}
+
+boolean ExtendedDiagnosticSessionRequest_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_diagnosticSessionType.is_value();
+}
+
+void ExtendedDiagnosticSessionRequest_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ExtendedDiagnosticSessionRequest ExtendedDiagnosticSessionRequest_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 @UnifiedDiagnosticServices.ExtendedDiagnosticSessionRequest.");
+ExtendedDiagnosticSessionRequest ret_val;
+if (single_value->field_diagnosticSessionType.is_bound()) {
+ret_val.diagnosticSessionType() = single_value->field_diagnosticSessionType.valueof();
+}
+return ret_val;
+}
+
+void ExtendedDiagnosticSessionRequest_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.ExtendedDiagnosticSessionRequest.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ExtendedDiagnosticSessionRequest_template[list_length];
+}
+
+ExtendedDiagnosticSessionRequest_template& ExtendedDiagnosticSessionRequest_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.ExtendedDiagnosticSessionRequest.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.ExtendedDiagnosticSessionRequest.");
+return value_list.list_value[list_index];
+}
+
+BITSTRING_template& ExtendedDiagnosticSessionRequest_template::diagnosticSessionType()
+{
+set_specific();
+return single_value->field_diagnosticSessionType;
+}
+
+const BITSTRING_template& ExtendedDiagnosticSessionRequest_template::diagnosticSessionType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field diagnosticSessionType of a non-specific template of type @UnifiedDiagnosticServices.ExtendedDiagnosticSessionRequest.");
+return single_value->field_diagnosticSessionType;
+}
+
+int ExtendedDiagnosticSessionRequest_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ExtendedDiagnosticSessionRequest which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 1;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ExtendedDiagnosticSessionRequest 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 @UnifiedDiagnosticServices.ExtendedDiagnosticSessionRequest containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ExtendedDiagnosticSessionRequest containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ExtendedDiagnosticSessionRequest containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ExtendedDiagnosticSessionRequest containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.ExtendedDiagnosticSessionRequest.");
+  }
+  return 0;
+}
+
+void ExtendedDiagnosticSessionRequest_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ diagnosticSessionType := ");
+single_value->field_diagnosticSessionType.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ExtendedDiagnosticSessionRequest_template::log_match(const ExtendedDiagnosticSessionRequest& 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_diagnosticSessionType.match(match_value.diagnosticSessionType(), legacy)){
+TTCN_Logger::log_logmatch_info(".diagnosticSessionType");
+single_value->field_diagnosticSessionType.log_match(match_value.diagnosticSessionType(), 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("{ diagnosticSessionType := ");
+single_value->field_diagnosticSessionType.log_match(match_value.diagnosticSessionType(), 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 ExtendedDiagnosticSessionRequest_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_diagnosticSessionType.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 @UnifiedDiagnosticServices.ExtendedDiagnosticSessionRequest.");
+}
+}
+
+void ExtendedDiagnosticSessionRequest_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_diagnosticSessionType.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 ExtendedDiagnosticSessionRequest_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 @UnifiedDiagnosticServices.ExtendedDiagnosticSessionRequest.");
+}
+}
+
+void ExtendedDiagnosticSessionRequest_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: {
+    ExtendedDiagnosticSessionRequest_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (1<param.get_size()) {
+      param.error("record template of type @UnifiedDiagnosticServices.ExtendedDiagnosticSessionRequest has 1 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) diagnosticSessionType().set_param(*param.get_elem(0));
+    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(), "diagnosticSessionType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          diagnosticSessionType().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 @UnifiedDiagnosticServices.ExtendedDiagnosticSessionRequest: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.ExtendedDiagnosticSessionRequest");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ExtendedDiagnosticSessionRequest_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_diagnosticSessionType.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.ExtendedDiagnosticSessionRequest");
+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 : "@UnifiedDiagnosticServices.ExtendedDiagnosticSessionRequest");
+}
+
+boolean ExtendedDiagnosticSessionRequest_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ExtendedDiagnosticSessionRequest_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+SafetySystemDiagnosticSessionRequest::SafetySystemDiagnosticSessionRequest()
+{
+}
+
+SafetySystemDiagnosticSessionRequest::SafetySystemDiagnosticSessionRequest(const BITSTRING& par_diagnosticSessionType)
+  :   field_diagnosticSessionType(par_diagnosticSessionType)
+{
+}
+
+SafetySystemDiagnosticSessionRequest::SafetySystemDiagnosticSessionRequest(const SafetySystemDiagnosticSessionRequest& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionRequest.");
+if (other_value.diagnosticSessionType().is_bound()) field_diagnosticSessionType = other_value.diagnosticSessionType();
+else field_diagnosticSessionType.clean_up();
+}
+
+void SafetySystemDiagnosticSessionRequest::clean_up()
+{
+field_diagnosticSessionType.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SafetySystemDiagnosticSessionRequest::get_descriptor() const { return &SafetySystemDiagnosticSessionRequest_descr_; }
+SafetySystemDiagnosticSessionRequest& SafetySystemDiagnosticSessionRequest::operator=(const SafetySystemDiagnosticSessionRequest& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionRequest.");
+  if (other_value.diagnosticSessionType().is_bound()) field_diagnosticSessionType = other_value.diagnosticSessionType();
+  else field_diagnosticSessionType.clean_up();
+}
+return *this;
+}
+
+boolean SafetySystemDiagnosticSessionRequest::operator==(const SafetySystemDiagnosticSessionRequest& other_value) const
+{
+return field_diagnosticSessionType==other_value.field_diagnosticSessionType;
+}
+
+boolean SafetySystemDiagnosticSessionRequest::is_bound() const
+{
+return (field_diagnosticSessionType.is_bound());
+}
+boolean SafetySystemDiagnosticSessionRequest::is_value() const
+{
+return field_diagnosticSessionType.is_value();
+}
+void SafetySystemDiagnosticSessionRequest::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ diagnosticSessionType := ");
+field_diagnosticSessionType.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SafetySystemDiagnosticSessionRequest::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 (1<param.get_size()) {
+      param.error("record value of type @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionRequest has 1 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) diagnosticSessionType().set_param(*param.get_elem(0));
+    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(), "diagnosticSessionType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          diagnosticSessionType().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 @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionRequest: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.SafetySystemDiagnosticSessionRequest");
+  }
+}
+
+void SafetySystemDiagnosticSessionRequest::set_implicit_omit()
+{
+if (diagnosticSessionType().is_bound()) diagnosticSessionType().set_implicit_omit();
+}
+
+void SafetySystemDiagnosticSessionRequest::encode_text(Text_Buf& text_buf) const
+{
+field_diagnosticSessionType.encode_text(text_buf);
+}
+
+void SafetySystemDiagnosticSessionRequest::decode_text(Text_Buf& text_buf)
+{
+field_diagnosticSessionType.decode_text(text_buf);
+}
+
+void SafetySystemDiagnosticSessionRequest::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void SafetySystemDiagnosticSessionRequest::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int SafetySystemDiagnosticSessionRequest::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, SafetySystemDiagnosticSessionRequest_diagnosticSessionType_descr_.raw->forceomit);
+  decoded_field_length = field_diagnosticSessionType.RAW_decode(SafetySystemDiagnosticSessionRequest_diagnosticSessionType_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int SafetySystemDiagnosticSessionRequest::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 = 1;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(1);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, SafetySystemDiagnosticSessionRequest_diagnosticSessionType_descr_.raw);
+  encoded_length += field_diagnosticSessionType.RAW_encode(SafetySystemDiagnosticSessionRequest_diagnosticSessionType_descr_, *myleaf.body.node.nodes[0]);
+  return myleaf.length = encoded_length;
+}
+
+struct SafetySystemDiagnosticSessionRequest_template::single_value_struct {
+BITSTRING_template field_diagnosticSessionType;
+};
+
+void SafetySystemDiagnosticSessionRequest_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_diagnosticSessionType = ANY_VALUE;
+}
+}
+}
+
+void SafetySystemDiagnosticSessionRequest_template::copy_value(const SafetySystemDiagnosticSessionRequest& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.diagnosticSessionType().is_bound()) {
+  single_value->field_diagnosticSessionType = other_value.diagnosticSessionType();
+} else {
+  single_value->field_diagnosticSessionType.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SafetySystemDiagnosticSessionRequest_template::copy_template(const SafetySystemDiagnosticSessionRequest_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.diagnosticSessionType().get_selection()) {
+single_value->field_diagnosticSessionType = other_value.diagnosticSessionType();
+} else {
+single_value->field_diagnosticSessionType.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SafetySystemDiagnosticSessionRequest_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionRequest.");
+break;
+}
+set_selection(other_value);
+}
+
+SafetySystemDiagnosticSessionRequest_template::SafetySystemDiagnosticSessionRequest_template()
+{
+}
+
+SafetySystemDiagnosticSessionRequest_template::SafetySystemDiagnosticSessionRequest_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SafetySystemDiagnosticSessionRequest_template::SafetySystemDiagnosticSessionRequest_template(const SafetySystemDiagnosticSessionRequest& other_value)
+{
+copy_value(other_value);
+}
+
+SafetySystemDiagnosticSessionRequest_template::SafetySystemDiagnosticSessionRequest_template(const OPTIONAL<SafetySystemDiagnosticSessionRequest>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SafetySystemDiagnosticSessionRequest&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionRequest from an unbound optional field.");
+}
+}
+
+SafetySystemDiagnosticSessionRequest_template::SafetySystemDiagnosticSessionRequest_template(const SafetySystemDiagnosticSessionRequest_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SafetySystemDiagnosticSessionRequest_template::~SafetySystemDiagnosticSessionRequest_template()
+{
+clean_up();
+}
+
+SafetySystemDiagnosticSessionRequest_template& SafetySystemDiagnosticSessionRequest_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SafetySystemDiagnosticSessionRequest_template& SafetySystemDiagnosticSessionRequest_template::operator=(const SafetySystemDiagnosticSessionRequest& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SafetySystemDiagnosticSessionRequest_template& SafetySystemDiagnosticSessionRequest_template::operator=(const OPTIONAL<SafetySystemDiagnosticSessionRequest>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SafetySystemDiagnosticSessionRequest&)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 @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionRequest.");
+}
+return *this;
+}
+
+SafetySystemDiagnosticSessionRequest_template& SafetySystemDiagnosticSessionRequest_template::operator=(const SafetySystemDiagnosticSessionRequest_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SafetySystemDiagnosticSessionRequest_template::match(const SafetySystemDiagnosticSessionRequest& 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.diagnosticSessionType().is_bound()) return FALSE;
+if(!single_value->field_diagnosticSessionType.match(other_value.diagnosticSessionType(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionRequest.");
+}
+return FALSE;
+}
+
+boolean SafetySystemDiagnosticSessionRequest_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_diagnosticSessionType.is_bound()
+;
+}
+
+boolean SafetySystemDiagnosticSessionRequest_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_diagnosticSessionType.is_value();
+}
+
+void SafetySystemDiagnosticSessionRequest_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SafetySystemDiagnosticSessionRequest SafetySystemDiagnosticSessionRequest_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 @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionRequest.");
+SafetySystemDiagnosticSessionRequest ret_val;
+if (single_value->field_diagnosticSessionType.is_bound()) {
+ret_val.diagnosticSessionType() = single_value->field_diagnosticSessionType.valueof();
+}
+return ret_val;
+}
+
+void SafetySystemDiagnosticSessionRequest_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionRequest.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SafetySystemDiagnosticSessionRequest_template[list_length];
+}
+
+SafetySystemDiagnosticSessionRequest_template& SafetySystemDiagnosticSessionRequest_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionRequest.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionRequest.");
+return value_list.list_value[list_index];
+}
+
+BITSTRING_template& SafetySystemDiagnosticSessionRequest_template::diagnosticSessionType()
+{
+set_specific();
+return single_value->field_diagnosticSessionType;
+}
+
+const BITSTRING_template& SafetySystemDiagnosticSessionRequest_template::diagnosticSessionType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field diagnosticSessionType of a non-specific template of type @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionRequest.");
+return single_value->field_diagnosticSessionType;
+}
+
+int SafetySystemDiagnosticSessionRequest_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionRequest which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 1;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionRequest 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 @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionRequest containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionRequest containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionRequest containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionRequest containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionRequest.");
+  }
+  return 0;
+}
+
+void SafetySystemDiagnosticSessionRequest_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ diagnosticSessionType := ");
+single_value->field_diagnosticSessionType.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SafetySystemDiagnosticSessionRequest_template::log_match(const SafetySystemDiagnosticSessionRequest& 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_diagnosticSessionType.match(match_value.diagnosticSessionType(), legacy)){
+TTCN_Logger::log_logmatch_info(".diagnosticSessionType");
+single_value->field_diagnosticSessionType.log_match(match_value.diagnosticSessionType(), 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("{ diagnosticSessionType := ");
+single_value->field_diagnosticSessionType.log_match(match_value.diagnosticSessionType(), 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 SafetySystemDiagnosticSessionRequest_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_diagnosticSessionType.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 @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionRequest.");
+}
+}
+
+void SafetySystemDiagnosticSessionRequest_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_diagnosticSessionType.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 SafetySystemDiagnosticSessionRequest_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 @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionRequest.");
+}
+}
+
+void SafetySystemDiagnosticSessionRequest_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: {
+    SafetySystemDiagnosticSessionRequest_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (1<param.get_size()) {
+      param.error("record template of type @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionRequest has 1 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) diagnosticSessionType().set_param(*param.get_elem(0));
+    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(), "diagnosticSessionType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          diagnosticSessionType().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 @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionRequest: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.SafetySystemDiagnosticSessionRequest");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SafetySystemDiagnosticSessionRequest_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_diagnosticSessionType.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.SafetySystemDiagnosticSessionRequest");
+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 : "@UnifiedDiagnosticServices.SafetySystemDiagnosticSessionRequest");
+}
+
+boolean SafetySystemDiagnosticSessionRequest_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SafetySystemDiagnosticSessionRequest_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 DiagnosticSessionRequestType::copy_value(const DiagnosticSessionRequestType& other_value)
+{
+switch (other_value.union_selection) {
+case ALT_defaultSession:
+field_defaultSession = new DefaultSessionRequest(*other_value.field_defaultSession);
+break;
+case ALT_programmingSession:
+field_programmingSession = new ProgrammingSessionRequest(*other_value.field_programmingSession);
+break;
+case ALT_extendedDiagnosticSession:
+field_extendedDiagnosticSession = new ExtendedDiagnosticSessionRequest(*other_value.field_extendedDiagnosticSession);
+break;
+case ALT_safetySystemDiagnosticSession:
+field_safetySystemDiagnosticSession = new SafetySystemDiagnosticSessionRequest(*other_value.field_safetySystemDiagnosticSession);
+break;
+default:
+TTCN_error("Assignment of an unbound union value of type @UnifiedDiagnosticServices.DiagnosticSessionRequestType.");
+}
+union_selection = other_value.union_selection;
+}
+
+DiagnosticSessionRequestType::DiagnosticSessionRequestType()
+{
+union_selection = UNBOUND_VALUE;
+}
+
+DiagnosticSessionRequestType::DiagnosticSessionRequestType(const DiagnosticSessionRequestType& other_value)
+: Base_Type(){
+copy_value(other_value);
+}
+
+DiagnosticSessionRequestType::~DiagnosticSessionRequestType()
+{
+clean_up();
+}
+
+DiagnosticSessionRequestType& DiagnosticSessionRequestType::operator=(const DiagnosticSessionRequestType& other_value)
+{
+if (this != &other_value) {
+clean_up();
+copy_value(other_value);
+}
+return *this;
+}
+
+boolean DiagnosticSessionRequestType::operator==(const DiagnosticSessionRequestType& other_value) const
+{
+if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @UnifiedDiagnosticServices.DiagnosticSessionRequestType.");
+if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @UnifiedDiagnosticServices.DiagnosticSessionRequestType.");
+if (union_selection != other_value.union_selection) return FALSE;
+switch (union_selection) {
+case ALT_defaultSession:
+return *field_defaultSession == *other_value.field_defaultSession;
+case ALT_programmingSession:
+return *field_programmingSession == *other_value.field_programmingSession;
+case ALT_extendedDiagnosticSession:
+return *field_extendedDiagnosticSession == *other_value.field_extendedDiagnosticSession;
+case ALT_safetySystemDiagnosticSession:
+return *field_safetySystemDiagnosticSession == *other_value.field_safetySystemDiagnosticSession;
+default:
+return FALSE;
+}
+}
+
+DefaultSessionRequest& DiagnosticSessionRequestType::defaultSession()
+{
+if (union_selection != ALT_defaultSession) {
+clean_up();
+field_defaultSession = new DefaultSessionRequest;
+union_selection = ALT_defaultSession;
+}
+return *field_defaultSession;
+}
+
+const DefaultSessionRequest& DiagnosticSessionRequestType::defaultSession() const
+{
+if (union_selection != ALT_defaultSession) TTCN_error("Using non-selected field defaultSession in a value of union type @UnifiedDiagnosticServices.DiagnosticSessionRequestType.");
+return *field_defaultSession;
+}
+
+ProgrammingSessionRequest& DiagnosticSessionRequestType::programmingSession()
+{
+if (union_selection != ALT_programmingSession) {
+clean_up();
+field_programmingSession = new ProgrammingSessionRequest;
+union_selection = ALT_programmingSession;
+}
+return *field_programmingSession;
+}
+
+const ProgrammingSessionRequest& DiagnosticSessionRequestType::programmingSession() const
+{
+if (union_selection != ALT_programmingSession) TTCN_error("Using non-selected field programmingSession in a value of union type @UnifiedDiagnosticServices.DiagnosticSessionRequestType.");
+return *field_programmingSession;
+}
+
+ExtendedDiagnosticSessionRequest& DiagnosticSessionRequestType::extendedDiagnosticSession()
+{
+if (union_selection != ALT_extendedDiagnosticSession) {
+clean_up();
+field_extendedDiagnosticSession = new ExtendedDiagnosticSessionRequest;
+union_selection = ALT_extendedDiagnosticSession;
+}
+return *field_extendedDiagnosticSession;
+}
+
+const ExtendedDiagnosticSessionRequest& DiagnosticSessionRequestType::extendedDiagnosticSession() const
+{
+if (union_selection != ALT_extendedDiagnosticSession) TTCN_error("Using non-selected field extendedDiagnosticSession in a value of union type @UnifiedDiagnosticServices.DiagnosticSessionRequestType.");
+return *field_extendedDiagnosticSession;
+}
+
+SafetySystemDiagnosticSessionRequest& DiagnosticSessionRequestType::safetySystemDiagnosticSession()
+{
+if (union_selection != ALT_safetySystemDiagnosticSession) {
+clean_up();
+field_safetySystemDiagnosticSession = new SafetySystemDiagnosticSessionRequest;
+union_selection = ALT_safetySystemDiagnosticSession;
+}
+return *field_safetySystemDiagnosticSession;
+}
+
+const SafetySystemDiagnosticSessionRequest& DiagnosticSessionRequestType::safetySystemDiagnosticSession() const
+{
+if (union_selection != ALT_safetySystemDiagnosticSession) TTCN_error("Using non-selected field safetySystemDiagnosticSession in a value of union type @UnifiedDiagnosticServices.DiagnosticSessionRequestType.");
+return *field_safetySystemDiagnosticSession;
+}
+
+boolean DiagnosticSessionRequestType::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 @UnifiedDiagnosticServices.DiagnosticSessionRequestType.");
+return union_selection == checked_selection;
+}
+
+boolean DiagnosticSessionRequestType::is_bound() const
+{
+  return union_selection != UNBOUND_VALUE;
+}
+
+boolean DiagnosticSessionRequestType::is_value() const
+{
+switch (union_selection) {
+case UNBOUND_VALUE: return FALSE;
+case ALT_defaultSession: return field_defaultSession->is_value();
+case ALT_programmingSession: return field_programmingSession->is_value();
+case ALT_extendedDiagnosticSession: return field_extendedDiagnosticSession->is_value();
+case ALT_safetySystemDiagnosticSession: return field_safetySystemDiagnosticSession->is_value();
+default: TTCN_error("Invalid selection in union is_bound");}
+}
+
+void DiagnosticSessionRequestType::clean_up()
+{
+switch (union_selection) {
+case ALT_defaultSession:
+  delete field_defaultSession;
+  break;
+case ALT_programmingSession:
+  delete field_programmingSession;
+  break;
+case ALT_extendedDiagnosticSession:
+  delete field_extendedDiagnosticSession;
+  break;
+case ALT_safetySystemDiagnosticSession:
+  delete field_safetySystemDiagnosticSession;
+  break;
+default:
+  break;
+}
+union_selection = UNBOUND_VALUE;
+}
+
+void DiagnosticSessionRequestType::log() const
+{
+switch (union_selection) {
+case ALT_defaultSession:
+TTCN_Logger::log_event_str("{ defaultSession := ");
+field_defaultSession->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_programmingSession:
+TTCN_Logger::log_event_str("{ programmingSession := ");
+field_programmingSession->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_extendedDiagnosticSession:
+TTCN_Logger::log_event_str("{ extendedDiagnosticSession := ");
+field_extendedDiagnosticSession->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_safetySystemDiagnosticSession:
+TTCN_Logger::log_event_str("{ safetySystemDiagnosticSession := ");
+field_safetySystemDiagnosticSession->log();
+TTCN_Logger::log_event_str(" }");
+break;
+default:
+TTCN_Logger::log_event_unbound();
+}
+}
+
+void DiagnosticSessionRequestType::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, "defaultSession")) {
+    defaultSession().set_param(*mp_last);
+    if (!defaultSession().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "programmingSession")) {
+    programmingSession().set_param(*mp_last);
+    if (!programmingSession().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "extendedDiagnosticSession")) {
+    extendedDiagnosticSession().set_param(*mp_last);
+    if (!extendedDiagnosticSession().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "safetySystemDiagnosticSession")) {
+    safetySystemDiagnosticSession().set_param(*mp_last);
+    if (!safetySystemDiagnosticSession().is_bound()) clean_up();
+    return;
+  }
+  mp_last->error("Field %s does not exist in type @UnifiedDiagnosticServices.DiagnosticSessionRequestType.", last_name);
+}
+
+void DiagnosticSessionRequestType::set_implicit_omit()
+{
+switch (union_selection) {
+case ALT_defaultSession:
+field_defaultSession->set_implicit_omit(); break;
+case ALT_programmingSession:
+field_programmingSession->set_implicit_omit(); break;
+case ALT_extendedDiagnosticSession:
+field_extendedDiagnosticSession->set_implicit_omit(); break;
+case ALT_safetySystemDiagnosticSession:
+field_safetySystemDiagnosticSession->set_implicit_omit(); break;
+default: break;
+}
+}
+
+void DiagnosticSessionRequestType::encode_text(Text_Buf& text_buf) const
+{
+text_buf.push_int(union_selection);
+switch (union_selection) {
+case ALT_defaultSession:
+field_defaultSession->encode_text(text_buf);
+break;
+case ALT_programmingSession:
+field_programmingSession->encode_text(text_buf);
+break;
+case ALT_extendedDiagnosticSession:
+field_extendedDiagnosticSession->encode_text(text_buf);
+break;
+case ALT_safetySystemDiagnosticSession:
+field_safetySystemDiagnosticSession->encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an unbound value of union type @UnifiedDiagnosticServices.DiagnosticSessionRequestType.");
+}
+}
+
+void DiagnosticSessionRequestType::decode_text(Text_Buf& text_buf)
+{
+switch ((union_selection_type)text_buf.pull_int().get_val()) {
+case ALT_defaultSession:
+defaultSession().decode_text(text_buf);
+break;
+case ALT_programmingSession:
+programmingSession().decode_text(text_buf);
+break;
+case ALT_extendedDiagnosticSession:
+extendedDiagnosticSession().decode_text(text_buf);
+break;
+case ALT_safetySystemDiagnosticSession:
+safetySystemDiagnosticSession().decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for type @UnifiedDiagnosticServices.DiagnosticSessionRequestType.");
+}
+}
+
+void DiagnosticSessionRequestType::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void DiagnosticSessionRequestType::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int DiagnosticSessionRequestType::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, DefaultSessionRequest_descr_.raw->forceomit);
+      decoded_length = defaultSession().RAW_decode(DefaultSessionRequest_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, ProgrammingSessionRequest_descr_.raw->forceomit);
+      decoded_length = programmingSession().RAW_decode(ProgrammingSessionRequest_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, ExtendedDiagnosticSessionRequest_descr_.raw->forceomit);
+      decoded_length = extendedDiagnosticSession().RAW_decode(ExtendedDiagnosticSessionRequest_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 3: {
+      RAW_Force_Omit field_force_omit(3, force_omit, SafetySystemDiagnosticSessionRequest_descr_.raw->forceomit);
+      decoded_length = safetySystemDiagnosticSession().RAW_decode(SafetySystemDiagnosticSessionRequest_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 {
+    boolean already_failed = FALSE;
+    already_failed = FALSE;
+    if (!already_failed) {
+      BITSTRING temporal_0;
+      int decoded_0_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_0_length = temporal_0.RAW_decode(DefaultSessionRequest_diagnosticSessionType_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_0_length > 0) {
+        if (temporal_0 ==  bs_0) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(0, force_omit, DefaultSessionRequest_descr_.raw->forceomit);
+          decoded_length = defaultSession().RAW_decode(DefaultSessionRequest_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_defaultSession).diagnosticSessionType() ==  bs_0) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      BITSTRING temporal_1;
+      int decoded_1_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_1_length = temporal_1.RAW_decode(ProgrammingSessionRequest_diagnosticSessionType_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_1_length > 0) {
+        if (temporal_1 ==  bs_1) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(1, force_omit, ProgrammingSessionRequest_descr_.raw->forceomit);
+          decoded_length = programmingSession().RAW_decode(ProgrammingSessionRequest_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_programmingSession).diagnosticSessionType() ==  bs_1) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      BITSTRING temporal_2;
+      int decoded_2_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_2_length = temporal_2.RAW_decode(ExtendedDiagnosticSessionRequest_diagnosticSessionType_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_2_length > 0) {
+        if (temporal_2 ==  bs_2) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(2, force_omit, ExtendedDiagnosticSessionRequest_descr_.raw->forceomit);
+          decoded_length = extendedDiagnosticSession().RAW_decode(ExtendedDiagnosticSessionRequest_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_extendedDiagnosticSession).diagnosticSessionType() ==  bs_2) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      BITSTRING temporal_3;
+      int decoded_3_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_3_length = temporal_3.RAW_decode(SafetySystemDiagnosticSessionRequest_diagnosticSessionType_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_3_length > 0) {
+        if (temporal_3 ==  bs_3) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(3, force_omit, SafetySystemDiagnosticSessionRequest_descr_.raw->forceomit);
+          decoded_length = safetySystemDiagnosticSession().RAW_decode(SafetySystemDiagnosticSessionRequest_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_safetySystemDiagnosticSession).diagnosticSessionType() ==  bs_3) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+ }
+ clean_up();
+ return -1;
+}
+
+int DiagnosticSessionRequestType::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const
+{
+  int encoded_length = 0;
+  myleaf.isleaf = FALSE;
+  myleaf.body.node.num_of_nodes = 4;  myleaf.body.node.nodes = init_nodes_of_enc_tree(4);
+  memset(myleaf.body.node.nodes, 0, 4 * sizeof(RAW_enc_tree *));
+  switch (union_selection) {
+  case ALT_defaultSession:
+    myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 0, DefaultSessionRequest_descr_.raw);
+    encoded_length = field_defaultSession->RAW_encode(DefaultSessionRequest_descr_, *myleaf.body.node.nodes[0]);
+    myleaf.body.node.nodes[0]->coding_descr = &DefaultSessionRequest_descr_;
+    if ((*field_defaultSession).diagnosticSessionType() !=  bs_0) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={0,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   bs_0.RAW_encode(DefaultSessionRequest_diagnosticSessionType_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);
+  }
+    }
+    break;
+  case ALT_programmingSession:
+    myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 1, ProgrammingSessionRequest_descr_.raw);
+    encoded_length = field_programmingSession->RAW_encode(ProgrammingSessionRequest_descr_, *myleaf.body.node.nodes[1]);
+    myleaf.body.node.nodes[1]->coding_descr = &ProgrammingSessionRequest_descr_;
+    if ((*field_programmingSession).diagnosticSessionType() !=  bs_1) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={1,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   bs_1.RAW_encode(ProgrammingSessionRequest_diagnosticSessionType_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);
+  }
+    }
+    break;
+  case ALT_extendedDiagnosticSession:
+    myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 2, ExtendedDiagnosticSessionRequest_descr_.raw);
+    encoded_length = field_extendedDiagnosticSession->RAW_encode(ExtendedDiagnosticSessionRequest_descr_, *myleaf.body.node.nodes[2]);
+    myleaf.body.node.nodes[2]->coding_descr = &ExtendedDiagnosticSessionRequest_descr_;
+    if ((*field_extendedDiagnosticSession).diagnosticSessionType() !=  bs_2) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={2,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   bs_2.RAW_encode(ExtendedDiagnosticSessionRequest_diagnosticSessionType_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);
+  }
+    }
+    break;
+  case ALT_safetySystemDiagnosticSession:
+    myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 3, SafetySystemDiagnosticSessionRequest_descr_.raw);
+    encoded_length = field_safetySystemDiagnosticSession->RAW_encode(SafetySystemDiagnosticSessionRequest_descr_, *myleaf.body.node.nodes[3]);
+    myleaf.body.node.nodes[3]->coding_descr = &SafetySystemDiagnosticSessionRequest_descr_;
+    if ((*field_safetySystemDiagnosticSession).diagnosticSessionType() !=  bs_3) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={3,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   bs_3.RAW_encode(SafetySystemDiagnosticSessionRequest_diagnosticSessionType_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);
+  }
+    }
+    break;
+  default:
+    TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
+  }
+  return encoded_length;
+}
+
+void DiagnosticSessionRequestType_template::copy_value(const DiagnosticSessionRequestType& other_value)
+{
+single_value.union_selection = other_value.get_selection();
+switch (single_value.union_selection) {
+case DiagnosticSessionRequestType::ALT_defaultSession:
+single_value.field_defaultSession = new DefaultSessionRequest_template(other_value.defaultSession());
+break;
+case DiagnosticSessionRequestType::ALT_programmingSession:
+single_value.field_programmingSession = new ProgrammingSessionRequest_template(other_value.programmingSession());
+break;
+case DiagnosticSessionRequestType::ALT_extendedDiagnosticSession:
+single_value.field_extendedDiagnosticSession = new ExtendedDiagnosticSessionRequest_template(other_value.extendedDiagnosticSession());
+break;
+case DiagnosticSessionRequestType::ALT_safetySystemDiagnosticSession:
+single_value.field_safetySystemDiagnosticSession = new SafetySystemDiagnosticSessionRequest_template(other_value.safetySystemDiagnosticSession());
+break;
+default:
+TTCN_error("Initializing a template with an unbound value of type @UnifiedDiagnosticServices.DiagnosticSessionRequestType.");
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void DiagnosticSessionRequestType_template::copy_template(const DiagnosticSessionRequestType_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 DiagnosticSessionRequestType::ALT_defaultSession:
+single_value.field_defaultSession = new DefaultSessionRequest_template(*other_value.single_value.field_defaultSession);
+break;
+case DiagnosticSessionRequestType::ALT_programmingSession:
+single_value.field_programmingSession = new ProgrammingSessionRequest_template(*other_value.single_value.field_programmingSession);
+break;
+case DiagnosticSessionRequestType::ALT_extendedDiagnosticSession:
+single_value.field_extendedDiagnosticSession = new ExtendedDiagnosticSessionRequest_template(*other_value.single_value.field_extendedDiagnosticSession);
+break;
+case DiagnosticSessionRequestType::ALT_safetySystemDiagnosticSession:
+single_value.field_safetySystemDiagnosticSession = new SafetySystemDiagnosticSessionRequest_template(*other_value.single_value.field_safetySystemDiagnosticSession);
+break;
+default:
+TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @UnifiedDiagnosticServices.DiagnosticSessionRequestType.");
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new DiagnosticSessionRequestType_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;
+default:
+TTCN_error("Copying an uninitialized template of union type @UnifiedDiagnosticServices.DiagnosticSessionRequestType.");
+}
+set_selection(other_value);
+}
+
+DiagnosticSessionRequestType_template::DiagnosticSessionRequestType_template()
+{
+}
+
+DiagnosticSessionRequestType_template::DiagnosticSessionRequestType_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+DiagnosticSessionRequestType_template::DiagnosticSessionRequestType_template(const DiagnosticSessionRequestType& other_value)
+{
+copy_value(other_value);
+}
+
+DiagnosticSessionRequestType_template::DiagnosticSessionRequestType_template(const OPTIONAL<DiagnosticSessionRequestType>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const DiagnosticSessionRequestType&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of union type @UnifiedDiagnosticServices.DiagnosticSessionRequestType from an unbound optional field.");
+}
+}
+
+DiagnosticSessionRequestType_template::DiagnosticSessionRequestType_template(const DiagnosticSessionRequestType_template& other_value)
+: Base_Template(){
+copy_template(other_value);
+}
+
+DiagnosticSessionRequestType_template::~DiagnosticSessionRequestType_template()
+{
+clean_up();
+}
+
+void DiagnosticSessionRequestType_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case DiagnosticSessionRequestType::ALT_defaultSession:
+delete single_value.field_defaultSession;
+break;
+case DiagnosticSessionRequestType::ALT_programmingSession:
+delete single_value.field_programmingSession;
+break;
+case DiagnosticSessionRequestType::ALT_extendedDiagnosticSession:
+delete single_value.field_extendedDiagnosticSession;
+break;
+case DiagnosticSessionRequestType::ALT_safetySystemDiagnosticSession:
+delete single_value.field_safetySystemDiagnosticSession;
+default:
+break;
+}
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+DiagnosticSessionRequestType_template& DiagnosticSessionRequestType_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+DiagnosticSessionRequestType_template& DiagnosticSessionRequestType_template::operator=(const DiagnosticSessionRequestType& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+DiagnosticSessionRequestType_template& DiagnosticSessionRequestType_template::operator=(const OPTIONAL<DiagnosticSessionRequestType>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const DiagnosticSessionRequestType&)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 @UnifiedDiagnosticServices.DiagnosticSessionRequestType.");
+}
+return *this;
+}
+
+DiagnosticSessionRequestType_template& DiagnosticSessionRequestType_template::operator=(const DiagnosticSessionRequestType_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean DiagnosticSessionRequestType_template::match(const DiagnosticSessionRequestType& 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:
+{
+DiagnosticSessionRequestType::union_selection_type value_selection = other_value.get_selection();
+if (value_selection == DiagnosticSessionRequestType::UNBOUND_VALUE) return FALSE;
+if (value_selection != single_value.union_selection) return FALSE;
+switch (value_selection) {
+case DiagnosticSessionRequestType::ALT_defaultSession:
+return single_value.field_defaultSession->match(other_value.defaultSession(), legacy);
+case DiagnosticSessionRequestType::ALT_programmingSession:
+return single_value.field_programmingSession->match(other_value.programmingSession(), legacy);
+case DiagnosticSessionRequestType::ALT_extendedDiagnosticSession:
+return single_value.field_extendedDiagnosticSession->match(other_value.extendedDiagnosticSession(), legacy);
+case DiagnosticSessionRequestType::ALT_safetySystemDiagnosticSession:
+return single_value.field_safetySystemDiagnosticSession->match(other_value.safetySystemDiagnosticSession(), legacy);
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @UnifiedDiagnosticServices.DiagnosticSessionRequestType.");
+}
+}
+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;
+default:
+TTCN_error ("Matching an uninitialized template of union type @UnifiedDiagnosticServices.DiagnosticSessionRequestType.");
+}
+return FALSE;
+}
+
+boolean DiagnosticSessionRequestType_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+switch (single_value.union_selection) {
+case DiagnosticSessionRequestType::ALT_defaultSession:
+return single_value.field_defaultSession->is_value();
+case DiagnosticSessionRequestType::ALT_programmingSession:
+return single_value.field_programmingSession->is_value();
+case DiagnosticSessionRequestType::ALT_extendedDiagnosticSession:
+return single_value.field_extendedDiagnosticSession->is_value();
+case DiagnosticSessionRequestType::ALT_safetySystemDiagnosticSession:
+return single_value.field_safetySystemDiagnosticSession->is_value();
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @UnifiedDiagnosticServices.DiagnosticSessionRequestType.");
+}
+}
+
+DiagnosticSessionRequestType DiagnosticSessionRequestType_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 @UnifiedDiagnosticServices.DiagnosticSessionRequestType.");
+DiagnosticSessionRequestType ret_val;
+switch (single_value.union_selection) {
+case DiagnosticSessionRequestType::ALT_defaultSession:
+ret_val.defaultSession() = single_value.field_defaultSession->valueof();
+break;
+case DiagnosticSessionRequestType::ALT_programmingSession:
+ret_val.programmingSession() = single_value.field_programmingSession->valueof();
+break;
+case DiagnosticSessionRequestType::ALT_extendedDiagnosticSession:
+ret_val.extendedDiagnosticSession() = single_value.field_extendedDiagnosticSession->valueof();
+break;
+case DiagnosticSessionRequestType::ALT_safetySystemDiagnosticSession:
+ret_val.safetySystemDiagnosticSession() = single_value.field_safetySystemDiagnosticSession->valueof();
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @UnifiedDiagnosticServices.DiagnosticSessionRequestType.");
+}
+return ret_val;
+}
+
+DiagnosticSessionRequestType_template& DiagnosticSessionRequestType_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @UnifiedDiagnosticServices.DiagnosticSessionRequestType.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @UnifiedDiagnosticServices.DiagnosticSessionRequestType.");
+return value_list.list_value[list_index];
+}
+void DiagnosticSessionRequestType_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error ("Internal error: Setting an invalid list for a template of union type @UnifiedDiagnosticServices.DiagnosticSessionRequestType.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new DiagnosticSessionRequestType_template[list_length];
+}
+
+DefaultSessionRequest_template& DiagnosticSessionRequestType_template::defaultSession()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != DiagnosticSessionRequestType::ALT_defaultSession) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_defaultSession = new DefaultSessionRequest_template(ANY_VALUE);
+else single_value.field_defaultSession = new DefaultSessionRequest_template;
+single_value.union_selection = DiagnosticSessionRequestType::ALT_defaultSession;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_defaultSession;
+}
+
+const DefaultSessionRequest_template& DiagnosticSessionRequestType_template::defaultSession() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field defaultSession in a non-specific template of union type @UnifiedDiagnosticServices.DiagnosticSessionRequestType.");
+if (single_value.union_selection != DiagnosticSessionRequestType::ALT_defaultSession) TTCN_error("Accessing non-selected field defaultSession in a template of union type @UnifiedDiagnosticServices.DiagnosticSessionRequestType.");
+return *single_value.field_defaultSession;
+}
+
+ProgrammingSessionRequest_template& DiagnosticSessionRequestType_template::programmingSession()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != DiagnosticSessionRequestType::ALT_programmingSession) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_programmingSession = new ProgrammingSessionRequest_template(ANY_VALUE);
+else single_value.field_programmingSession = new ProgrammingSessionRequest_template;
+single_value.union_selection = DiagnosticSessionRequestType::ALT_programmingSession;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_programmingSession;
+}
+
+const ProgrammingSessionRequest_template& DiagnosticSessionRequestType_template::programmingSession() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field programmingSession in a non-specific template of union type @UnifiedDiagnosticServices.DiagnosticSessionRequestType.");
+if (single_value.union_selection != DiagnosticSessionRequestType::ALT_programmingSession) TTCN_error("Accessing non-selected field programmingSession in a template of union type @UnifiedDiagnosticServices.DiagnosticSessionRequestType.");
+return *single_value.field_programmingSession;
+}
+
+ExtendedDiagnosticSessionRequest_template& DiagnosticSessionRequestType_template::extendedDiagnosticSession()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != DiagnosticSessionRequestType::ALT_extendedDiagnosticSession) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_extendedDiagnosticSession = new ExtendedDiagnosticSessionRequest_template(ANY_VALUE);
+else single_value.field_extendedDiagnosticSession = new ExtendedDiagnosticSessionRequest_template;
+single_value.union_selection = DiagnosticSessionRequestType::ALT_extendedDiagnosticSession;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_extendedDiagnosticSession;
+}
+
+const ExtendedDiagnosticSessionRequest_template& DiagnosticSessionRequestType_template::extendedDiagnosticSession() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field extendedDiagnosticSession in a non-specific template of union type @UnifiedDiagnosticServices.DiagnosticSessionRequestType.");
+if (single_value.union_selection != DiagnosticSessionRequestType::ALT_extendedDiagnosticSession) TTCN_error("Accessing non-selected field extendedDiagnosticSession in a template of union type @UnifiedDiagnosticServices.DiagnosticSessionRequestType.");
+return *single_value.field_extendedDiagnosticSession;
+}
+
+SafetySystemDiagnosticSessionRequest_template& DiagnosticSessionRequestType_template::safetySystemDiagnosticSession()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != DiagnosticSessionRequestType::ALT_safetySystemDiagnosticSession) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_safetySystemDiagnosticSession = new SafetySystemDiagnosticSessionRequest_template(ANY_VALUE);
+else single_value.field_safetySystemDiagnosticSession = new SafetySystemDiagnosticSessionRequest_template;
+single_value.union_selection = DiagnosticSessionRequestType::ALT_safetySystemDiagnosticSession;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_safetySystemDiagnosticSession;
+}
+
+const SafetySystemDiagnosticSessionRequest_template& DiagnosticSessionRequestType_template::safetySystemDiagnosticSession() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field safetySystemDiagnosticSession in a non-specific template of union type @UnifiedDiagnosticServices.DiagnosticSessionRequestType.");
+if (single_value.union_selection != DiagnosticSessionRequestType::ALT_safetySystemDiagnosticSession) TTCN_error("Accessing non-selected field safetySystemDiagnosticSession in a template of union type @UnifiedDiagnosticServices.DiagnosticSessionRequestType.");
+return *single_value.field_safetySystemDiagnosticSession;
+}
+
+boolean DiagnosticSessionRequestType_template::ischosen(DiagnosticSessionRequestType::union_selection_type checked_selection) const
+{
+if (checked_selection == DiagnosticSessionRequestType::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @UnifiedDiagnosticServices.DiagnosticSessionRequestType.");
+switch (template_selection) {
+case SPECIFIC_VALUE:
+if (single_value.union_selection == DiagnosticSessionRequestType::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @UnifiedDiagnosticServices.DiagnosticSessionRequestType.");
+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 @UnifiedDiagnosticServices.DiagnosticSessionRequestType 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 DiagnosticSessionRequestType_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case DiagnosticSessionRequestType::ALT_defaultSession:
+TTCN_Logger::log_event_str("{ defaultSession := ");
+single_value.field_defaultSession->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case DiagnosticSessionRequestType::ALT_programmingSession:
+TTCN_Logger::log_event_str("{ programmingSession := ");
+single_value.field_programmingSession->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case DiagnosticSessionRequestType::ALT_extendedDiagnosticSession:
+TTCN_Logger::log_event_str("{ extendedDiagnosticSession := ");
+single_value.field_extendedDiagnosticSession->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case DiagnosticSessionRequestType::ALT_safetySystemDiagnosticSession:
+TTCN_Logger::log_event_str("{ safetySystemDiagnosticSession := ");
+single_value.field_safetySystemDiagnosticSession->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 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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void DiagnosticSessionRequestType_template::log_match(const DiagnosticSessionRequestType& 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()) {
+switch (single_value.union_selection) {
+case DiagnosticSessionRequestType::ALT_defaultSession:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".defaultSession");
+single_value.field_defaultSession->log_match(match_value.defaultSession(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ defaultSession := ");
+single_value.field_defaultSession->log_match(match_value.defaultSession(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case DiagnosticSessionRequestType::ALT_programmingSession:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".programmingSession");
+single_value.field_programmingSession->log_match(match_value.programmingSession(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ programmingSession := ");
+single_value.field_programmingSession->log_match(match_value.programmingSession(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case DiagnosticSessionRequestType::ALT_extendedDiagnosticSession:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".extendedDiagnosticSession");
+single_value.field_extendedDiagnosticSession->log_match(match_value.extendedDiagnosticSession(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ extendedDiagnosticSession := ");
+single_value.field_extendedDiagnosticSession->log_match(match_value.extendedDiagnosticSession(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case DiagnosticSessionRequestType::ALT_safetySystemDiagnosticSession:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".safetySystemDiagnosticSession");
+single_value.field_safetySystemDiagnosticSession->log_match(match_value.safetySystemDiagnosticSession(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ safetySystemDiagnosticSession := ");
+single_value.field_safetySystemDiagnosticSession->log_match(match_value.safetySystemDiagnosticSession(), 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 DiagnosticSessionRequestType_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 DiagnosticSessionRequestType::ALT_defaultSession:
+single_value.field_defaultSession->encode_text(text_buf);
+break;
+case DiagnosticSessionRequestType::ALT_programmingSession:
+single_value.field_programmingSession->encode_text(text_buf);
+break;
+case DiagnosticSessionRequestType::ALT_extendedDiagnosticSession:
+single_value.field_extendedDiagnosticSession->encode_text(text_buf);
+break;
+case DiagnosticSessionRequestType::ALT_safetySystemDiagnosticSession:
+single_value.field_safetySystemDiagnosticSession->encode_text(text_buf);
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @UnifiedDiagnosticServices.DiagnosticSessionRequestType.");
+}
+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 @UnifiedDiagnosticServices.DiagnosticSessionRequestType.");
+}
+}
+
+void DiagnosticSessionRequestType_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+{
+single_value.union_selection = DiagnosticSessionRequestType::UNBOUND_VALUE;
+DiagnosticSessionRequestType::union_selection_type new_selection = (DiagnosticSessionRequestType::union_selection_type)text_buf.pull_int().get_val();
+switch (new_selection) {
+case DiagnosticSessionRequestType::ALT_defaultSession:
+single_value.field_defaultSession = new DefaultSessionRequest_template;
+single_value.field_defaultSession->decode_text(text_buf);
+break;
+case DiagnosticSessionRequestType::ALT_programmingSession:
+single_value.field_programmingSession = new ProgrammingSessionRequest_template;
+single_value.field_programmingSession->decode_text(text_buf);
+break;
+case DiagnosticSessionRequestType::ALT_extendedDiagnosticSession:
+single_value.field_extendedDiagnosticSession = new ExtendedDiagnosticSessionRequest_template;
+single_value.field_extendedDiagnosticSession->decode_text(text_buf);
+break;
+case DiagnosticSessionRequestType::ALT_safetySystemDiagnosticSession:
+single_value.field_safetySystemDiagnosticSession = new SafetySystemDiagnosticSessionRequest_template;
+single_value.field_safetySystemDiagnosticSession->decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @UnifiedDiagnosticServices.DiagnosticSessionRequestType.");
+}
+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 DiagnosticSessionRequestType_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 @UnifiedDiagnosticServices.DiagnosticSessionRequestType.");
+}
+}
+
+boolean DiagnosticSessionRequestType_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean DiagnosticSessionRequestType_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 DiagnosticSessionRequestType_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 `@UnifiedDiagnosticServices.DiagnosticSessionRequestType'");
+    }
+    if (strcmp("defaultSession", param_field) == 0) {
+      defaultSession().set_param(param);
+      return;
+    } else if (strcmp("programmingSession", param_field) == 0) {
+      programmingSession().set_param(param);
+      return;
+    } else if (strcmp("extendedDiagnosticSession", param_field) == 0) {
+      extendedDiagnosticSession().set_param(param);
+      return;
+    } else if (strcmp("safetySystemDiagnosticSession", param_field) == 0) {
+      safetySystemDiagnosticSession().set_param(param);
+      return;
+    } else param.error("Field `%s' not found in union template type `@UnifiedDiagnosticServices.DiagnosticSessionRequestType'", 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: {
+    DiagnosticSessionRequestType_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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", "@UnifiedDiagnosticServices.DiagnosticSessionRequestType");
+    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, "defaultSession")) {
+      defaultSession().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "programmingSession")) {
+      programmingSession().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "extendedDiagnosticSession")) {
+      extendedDiagnosticSession().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "safetySystemDiagnosticSession")) {
+      safetySystemDiagnosticSession().set_param(*mp_last);
+      break;
+    }
+    mp_last->error("Field %s does not exist in type @UnifiedDiagnosticServices.DiagnosticSessionRequestType.", last_name);
+  } break;
+  default:
+    param.type_error("union template", "@UnifiedDiagnosticServices.DiagnosticSessionRequestType");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void DiagnosticSessionRequestType_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 DiagnosticSessionRequestType::ALT_defaultSession:
+single_value.field_defaultSession->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.DiagnosticSessionRequestType");
+return;
+case DiagnosticSessionRequestType::ALT_programmingSession:
+single_value.field_programmingSession->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.DiagnosticSessionRequestType");
+return;
+case DiagnosticSessionRequestType::ALT_extendedDiagnosticSession:
+single_value.field_extendedDiagnosticSession->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.DiagnosticSessionRequestType");
+return;
+case DiagnosticSessionRequestType::ALT_safetySystemDiagnosticSession:
+single_value.field_safetySystemDiagnosticSession->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.DiagnosticSessionRequestType");
+return;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @UnifiedDiagnosticServices.DiagnosticSessionRequestType.");
+}
+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 : "@UnifiedDiagnosticServices.DiagnosticSessionRequestType");
+}
+
+DiagnosticSessionControlRequestSID::DiagnosticSessionControlRequestSID()
+{
+}
+
+DiagnosticSessionControlRequestSID::DiagnosticSessionControlRequestSID(const OCTETSTRING& par_sid,
+    const SuppressPosRspMsgIndicationBitType& par_suppressPosRspMsgIndicationBit,
+    const DiagnosticSessionRequestType& par_diagnosticSessionType)
+  :   field_sid(par_sid),
+  field_suppressPosRspMsgIndicationBit(par_suppressPosRspMsgIndicationBit),
+  field_diagnosticSessionType(par_diagnosticSessionType)
+{
+}
+
+DiagnosticSessionControlRequestSID::DiagnosticSessionControlRequestSID(const DiagnosticSessionControlRequestSID& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.DiagnosticSessionControlRequestSID.");
+if (other_value.sid().is_bound()) field_sid = other_value.sid();
+else field_sid.clean_up();
+if (other_value.suppressPosRspMsgIndicationBit().is_bound()) field_suppressPosRspMsgIndicationBit = other_value.suppressPosRspMsgIndicationBit();
+else field_suppressPosRspMsgIndicationBit.clean_up();
+if (other_value.diagnosticSessionType().is_bound()) field_diagnosticSessionType = other_value.diagnosticSessionType();
+else field_diagnosticSessionType.clean_up();
+}
+
+void DiagnosticSessionControlRequestSID::clean_up()
+{
+field_sid.clean_up();
+field_suppressPosRspMsgIndicationBit.clean_up();
+field_diagnosticSessionType.clean_up();
+}
+
+const TTCN_Typedescriptor_t* DiagnosticSessionControlRequestSID::get_descriptor() const { return &DiagnosticSessionControlRequestSID_descr_; }
+DiagnosticSessionControlRequestSID& DiagnosticSessionControlRequestSID::operator=(const DiagnosticSessionControlRequestSID& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.DiagnosticSessionControlRequestSID.");
+  if (other_value.sid().is_bound()) field_sid = other_value.sid();
+  else field_sid.clean_up();
+  if (other_value.suppressPosRspMsgIndicationBit().is_bound()) field_suppressPosRspMsgIndicationBit = other_value.suppressPosRspMsgIndicationBit();
+  else field_suppressPosRspMsgIndicationBit.clean_up();
+  if (other_value.diagnosticSessionType().is_bound()) field_diagnosticSessionType = other_value.diagnosticSessionType();
+  else field_diagnosticSessionType.clean_up();
+}
+return *this;
+}
+
+boolean DiagnosticSessionControlRequestSID::operator==(const DiagnosticSessionControlRequestSID& other_value) const
+{
+return field_sid==other_value.field_sid
+  && field_suppressPosRspMsgIndicationBit==other_value.field_suppressPosRspMsgIndicationBit
+  && field_diagnosticSessionType==other_value.field_diagnosticSessionType;
+}
+
+boolean DiagnosticSessionControlRequestSID::is_bound() const
+{
+return (field_sid.is_bound())
+  || (field_suppressPosRspMsgIndicationBit.is_bound())
+  || (field_diagnosticSessionType.is_bound());
+}
+boolean DiagnosticSessionControlRequestSID::is_value() const
+{
+return field_sid.is_value()
+  && field_suppressPosRspMsgIndicationBit.is_value()
+  && field_diagnosticSessionType.is_value();
+}
+void DiagnosticSessionControlRequestSID::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ sid := ");
+field_sid.log();
+TTCN_Logger::log_event_str(", suppressPosRspMsgIndicationBit := ");
+field_suppressPosRspMsgIndicationBit.log();
+TTCN_Logger::log_event_str(", diagnosticSessionType := ");
+field_diagnosticSessionType.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void DiagnosticSessionControlRequestSID::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 @UnifiedDiagnosticServices.DiagnosticSessionControlRequestSID 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) sid().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) suppressPosRspMsgIndicationBit().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) diagnosticSessionType().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(), "sid")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          sid().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(), "suppressPosRspMsgIndicationBit")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          suppressPosRspMsgIndicationBit().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(), "diagnosticSessionType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          diagnosticSessionType().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 @UnifiedDiagnosticServices.DiagnosticSessionControlRequestSID: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.DiagnosticSessionControlRequestSID");
+  }
+}
+
+void DiagnosticSessionControlRequestSID::set_implicit_omit()
+{
+if (sid().is_bound()) sid().set_implicit_omit();
+if (suppressPosRspMsgIndicationBit().is_bound()) suppressPosRspMsgIndicationBit().set_implicit_omit();
+if (diagnosticSessionType().is_bound()) diagnosticSessionType().set_implicit_omit();
+}
+
+void DiagnosticSessionControlRequestSID::encode_text(Text_Buf& text_buf) const
+{
+field_sid.encode_text(text_buf);
+field_suppressPosRspMsgIndicationBit.encode_text(text_buf);
+field_diagnosticSessionType.encode_text(text_buf);
+}
+
+void DiagnosticSessionControlRequestSID::decode_text(Text_Buf& text_buf)
+{
+field_sid.decode_text(text_buf);
+field_suppressPosRspMsgIndicationBit.decode_text(text_buf);
+field_diagnosticSessionType.decode_text(text_buf);
+}
+
+void DiagnosticSessionControlRequestSID::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void DiagnosticSessionControlRequestSID::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int DiagnosticSessionControlRequestSID::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, DiagnosticSessionControlRequestSID_sid_descr_.raw->forceomit);
+  decoded_field_length = field_sid.RAW_decode(DiagnosticSessionControlRequestSID_sid_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, DiagnosticSessionControlRequestSID_suppressPosRspMsgIndicationBit_descr_.raw->forceomit);
+  decoded_field_length = field_suppressPosRspMsgIndicationBit.RAW_decode(DiagnosticSessionControlRequestSID_suppressPosRspMsgIndicationBit_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, DiagnosticSessionControlRequestSID_diagnosticSessionType_descr_.raw->forceomit);
+  decoded_field_length = field_diagnosticSessionType.RAW_decode(DiagnosticSessionControlRequestSID_diagnosticSessionType_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 DiagnosticSessionControlRequestSID::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, DiagnosticSessionControlRequestSID_sid_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, DiagnosticSessionControlRequestSID_suppressPosRspMsgIndicationBit_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, DiagnosticSessionControlRequestSID_diagnosticSessionType_descr_.raw);
+  encoded_length += field_sid.RAW_encode(DiagnosticSessionControlRequestSID_sid_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_suppressPosRspMsgIndicationBit.RAW_encode(DiagnosticSessionControlRequestSID_suppressPosRspMsgIndicationBit_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_diagnosticSessionType.RAW_encode(DiagnosticSessionControlRequestSID_diagnosticSessionType_descr_, *myleaf.body.node.nodes[2]);
+  return myleaf.length = encoded_length;
+}
+
+struct DiagnosticSessionControlRequestSID_template::single_value_struct {
+OCTETSTRING_template field_sid;
+SuppressPosRspMsgIndicationBitType_template field_suppressPosRspMsgIndicationBit;
+DiagnosticSessionRequestType_template field_diagnosticSessionType;
+};
+
+void DiagnosticSessionControlRequestSID_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_sid = ANY_VALUE;
+single_value->field_suppressPosRspMsgIndicationBit = ANY_VALUE;
+single_value->field_diagnosticSessionType = ANY_VALUE;
+}
+}
+}
+
+void DiagnosticSessionControlRequestSID_template::copy_value(const DiagnosticSessionControlRequestSID& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.sid().is_bound()) {
+  single_value->field_sid = other_value.sid();
+} else {
+  single_value->field_sid.clean_up();
+}
+if (other_value.suppressPosRspMsgIndicationBit().is_bound()) {
+  single_value->field_suppressPosRspMsgIndicationBit = other_value.suppressPosRspMsgIndicationBit();
+} else {
+  single_value->field_suppressPosRspMsgIndicationBit.clean_up();
+}
+if (other_value.diagnosticSessionType().is_bound()) {
+  single_value->field_diagnosticSessionType = other_value.diagnosticSessionType();
+} else {
+  single_value->field_diagnosticSessionType.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void DiagnosticSessionControlRequestSID_template::copy_template(const DiagnosticSessionControlRequestSID_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.sid().get_selection()) {
+single_value->field_sid = other_value.sid();
+} else {
+single_value->field_sid.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.suppressPosRspMsgIndicationBit().get_selection()) {
+single_value->field_suppressPosRspMsgIndicationBit = other_value.suppressPosRspMsgIndicationBit();
+} else {
+single_value->field_suppressPosRspMsgIndicationBit.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.diagnosticSessionType().get_selection()) {
+single_value->field_diagnosticSessionType = other_value.diagnosticSessionType();
+} else {
+single_value->field_diagnosticSessionType.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new DiagnosticSessionControlRequestSID_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.DiagnosticSessionControlRequestSID.");
+break;
+}
+set_selection(other_value);
+}
+
+DiagnosticSessionControlRequestSID_template::DiagnosticSessionControlRequestSID_template()
+{
+}
+
+DiagnosticSessionControlRequestSID_template::DiagnosticSessionControlRequestSID_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+DiagnosticSessionControlRequestSID_template::DiagnosticSessionControlRequestSID_template(const DiagnosticSessionControlRequestSID& other_value)
+{
+copy_value(other_value);
+}
+
+DiagnosticSessionControlRequestSID_template::DiagnosticSessionControlRequestSID_template(const OPTIONAL<DiagnosticSessionControlRequestSID>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const DiagnosticSessionControlRequestSID&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.DiagnosticSessionControlRequestSID from an unbound optional field.");
+}
+}
+
+DiagnosticSessionControlRequestSID_template::DiagnosticSessionControlRequestSID_template(const DiagnosticSessionControlRequestSID_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+DiagnosticSessionControlRequestSID_template::~DiagnosticSessionControlRequestSID_template()
+{
+clean_up();
+}
+
+DiagnosticSessionControlRequestSID_template& DiagnosticSessionControlRequestSID_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+DiagnosticSessionControlRequestSID_template& DiagnosticSessionControlRequestSID_template::operator=(const DiagnosticSessionControlRequestSID& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+DiagnosticSessionControlRequestSID_template& DiagnosticSessionControlRequestSID_template::operator=(const OPTIONAL<DiagnosticSessionControlRequestSID>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const DiagnosticSessionControlRequestSID&)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 @UnifiedDiagnosticServices.DiagnosticSessionControlRequestSID.");
+}
+return *this;
+}
+
+DiagnosticSessionControlRequestSID_template& DiagnosticSessionControlRequestSID_template::operator=(const DiagnosticSessionControlRequestSID_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean DiagnosticSessionControlRequestSID_template::match(const DiagnosticSessionControlRequestSID& 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.sid().is_bound()) return FALSE;
+if(!single_value->field_sid.match(other_value.sid(), legacy))return FALSE;
+if(!other_value.suppressPosRspMsgIndicationBit().is_bound()) return FALSE;
+if(!single_value->field_suppressPosRspMsgIndicationBit.match(other_value.suppressPosRspMsgIndicationBit(), legacy))return FALSE;
+if(!other_value.diagnosticSessionType().is_bound()) return FALSE;
+if(!single_value->field_diagnosticSessionType.match(other_value.diagnosticSessionType(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.DiagnosticSessionControlRequestSID.");
+}
+return FALSE;
+}
+
+boolean DiagnosticSessionControlRequestSID_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_sid.is_bound()
+
+ ||single_value->field_suppressPosRspMsgIndicationBit.is_bound()
+
+ ||single_value->field_diagnosticSessionType.is_bound()
+;
+}
+
+boolean DiagnosticSessionControlRequestSID_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_sid.is_value()
+ &&single_value->field_suppressPosRspMsgIndicationBit.is_value()
+ &&single_value->field_diagnosticSessionType.is_value();
+}
+
+void DiagnosticSessionControlRequestSID_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+DiagnosticSessionControlRequestSID DiagnosticSessionControlRequestSID_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 @UnifiedDiagnosticServices.DiagnosticSessionControlRequestSID.");
+DiagnosticSessionControlRequestSID ret_val;
+if (single_value->field_sid.is_bound()) {
+ret_val.sid() = single_value->field_sid.valueof();
+}
+if (single_value->field_suppressPosRspMsgIndicationBit.is_bound()) {
+ret_val.suppressPosRspMsgIndicationBit() = single_value->field_suppressPosRspMsgIndicationBit.valueof();
+}
+if (single_value->field_diagnosticSessionType.is_bound()) {
+ret_val.diagnosticSessionType() = single_value->field_diagnosticSessionType.valueof();
+}
+return ret_val;
+}
+
+void DiagnosticSessionControlRequestSID_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.DiagnosticSessionControlRequestSID.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new DiagnosticSessionControlRequestSID_template[list_length];
+}
+
+DiagnosticSessionControlRequestSID_template& DiagnosticSessionControlRequestSID_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.DiagnosticSessionControlRequestSID.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.DiagnosticSessionControlRequestSID.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& DiagnosticSessionControlRequestSID_template::sid()
+{
+set_specific();
+return single_value->field_sid;
+}
+
+const OCTETSTRING_template& DiagnosticSessionControlRequestSID_template::sid() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field sid of a non-specific template of type @UnifiedDiagnosticServices.DiagnosticSessionControlRequestSID.");
+return single_value->field_sid;
+}
+
+SuppressPosRspMsgIndicationBitType_template& DiagnosticSessionControlRequestSID_template::suppressPosRspMsgIndicationBit()
+{
+set_specific();
+return single_value->field_suppressPosRspMsgIndicationBit;
+}
+
+const SuppressPosRspMsgIndicationBitType_template& DiagnosticSessionControlRequestSID_template::suppressPosRspMsgIndicationBit() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field suppressPosRspMsgIndicationBit of a non-specific template of type @UnifiedDiagnosticServices.DiagnosticSessionControlRequestSID.");
+return single_value->field_suppressPosRspMsgIndicationBit;
+}
+
+DiagnosticSessionRequestType_template& DiagnosticSessionControlRequestSID_template::diagnosticSessionType()
+{
+set_specific();
+return single_value->field_diagnosticSessionType;
+}
+
+const DiagnosticSessionRequestType_template& DiagnosticSessionControlRequestSID_template::diagnosticSessionType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field diagnosticSessionType of a non-specific template of type @UnifiedDiagnosticServices.DiagnosticSessionControlRequestSID.");
+return single_value->field_diagnosticSessionType;
+}
+
+int DiagnosticSessionControlRequestSID_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.DiagnosticSessionControlRequestSID 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 @UnifiedDiagnosticServices.DiagnosticSessionControlRequestSID 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 @UnifiedDiagnosticServices.DiagnosticSessionControlRequestSID containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.DiagnosticSessionControlRequestSID containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.DiagnosticSessionControlRequestSID containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.DiagnosticSessionControlRequestSID containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.DiagnosticSessionControlRequestSID.");
+  }
+  return 0;
+}
+
+void DiagnosticSessionControlRequestSID_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ sid := ");
+single_value->field_sid.log();
+TTCN_Logger::log_event_str(", suppressPosRspMsgIndicationBit := ");
+single_value->field_suppressPosRspMsgIndicationBit.log();
+TTCN_Logger::log_event_str(", diagnosticSessionType := ");
+single_value->field_diagnosticSessionType.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void DiagnosticSessionControlRequestSID_template::log_match(const DiagnosticSessionControlRequestSID& 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_sid.match(match_value.sid(), legacy)){
+TTCN_Logger::log_logmatch_info(".sid");
+single_value->field_sid.log_match(match_value.sid(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_suppressPosRspMsgIndicationBit.match(match_value.suppressPosRspMsgIndicationBit(), legacy)){
+TTCN_Logger::log_logmatch_info(".suppressPosRspMsgIndicationBit");
+single_value->field_suppressPosRspMsgIndicationBit.log_match(match_value.suppressPosRspMsgIndicationBit(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_diagnosticSessionType.match(match_value.diagnosticSessionType(), legacy)){
+TTCN_Logger::log_logmatch_info(".diagnosticSessionType");
+single_value->field_diagnosticSessionType.log_match(match_value.diagnosticSessionType(), 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("{ sid := ");
+single_value->field_sid.log_match(match_value.sid(), legacy);
+TTCN_Logger::log_event_str(", suppressPosRspMsgIndicationBit := ");
+single_value->field_suppressPosRspMsgIndicationBit.log_match(match_value.suppressPosRspMsgIndicationBit(), legacy);
+TTCN_Logger::log_event_str(", diagnosticSessionType := ");
+single_value->field_diagnosticSessionType.log_match(match_value.diagnosticSessionType(), 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 DiagnosticSessionControlRequestSID_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_sid.encode_text(text_buf);
+single_value->field_suppressPosRspMsgIndicationBit.encode_text(text_buf);
+single_value->field_diagnosticSessionType.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 @UnifiedDiagnosticServices.DiagnosticSessionControlRequestSID.");
+}
+}
+
+void DiagnosticSessionControlRequestSID_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_sid.decode_text(text_buf);
+single_value->field_suppressPosRspMsgIndicationBit.decode_text(text_buf);
+single_value->field_diagnosticSessionType.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 DiagnosticSessionControlRequestSID_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 @UnifiedDiagnosticServices.DiagnosticSessionControlRequestSID.");
+}
+}
+
+void DiagnosticSessionControlRequestSID_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: {
+    DiagnosticSessionControlRequestSID_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @UnifiedDiagnosticServices.DiagnosticSessionControlRequestSID 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) sid().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) suppressPosRspMsgIndicationBit().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) diagnosticSessionType().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(), "sid")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          sid().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(), "suppressPosRspMsgIndicationBit")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          suppressPosRspMsgIndicationBit().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(), "diagnosticSessionType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          diagnosticSessionType().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 @UnifiedDiagnosticServices.DiagnosticSessionControlRequestSID: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.DiagnosticSessionControlRequestSID");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void DiagnosticSessionControlRequestSID_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_sid.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.DiagnosticSessionControlRequestSID");
+single_value->field_suppressPosRspMsgIndicationBit.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.DiagnosticSessionControlRequestSID");
+single_value->field_diagnosticSessionType.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.DiagnosticSessionControlRequestSID");
+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 : "@UnifiedDiagnosticServices.DiagnosticSessionControlRequestSID");
+}
+
+boolean DiagnosticSessionControlRequestSID_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean DiagnosticSessionControlRequestSID_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 DiagnosticSessionResponseType::copy_value(const DiagnosticSessionResponseType& other_value)
+{
+switch (other_value.union_selection) {
+case ALT_defaultSession:
+field_defaultSession = new DefaultSessionResponse(*other_value.field_defaultSession);
+break;
+case ALT_programmingSession:
+field_programmingSession = new ProgrammingSessionResponse(*other_value.field_programmingSession);
+break;
+case ALT_extendedDiagnosticSession:
+field_extendedDiagnosticSession = new ExtendedDiagnosticSessionResponse(*other_value.field_extendedDiagnosticSession);
+break;
+case ALT_safetySystemDiagnosticSession:
+field_safetySystemDiagnosticSession = new SafetySystemDiagnosticSessionResponse(*other_value.field_safetySystemDiagnosticSession);
+break;
+default:
+TTCN_error("Assignment of an unbound union value of type @UnifiedDiagnosticServices.DiagnosticSessionResponseType.");
+}
+union_selection = other_value.union_selection;
+}
+
+DiagnosticSessionResponseType::DiagnosticSessionResponseType()
+{
+union_selection = UNBOUND_VALUE;
+}
+
+DiagnosticSessionResponseType::DiagnosticSessionResponseType(const DiagnosticSessionResponseType& other_value)
+: Base_Type(){
+copy_value(other_value);
+}
+
+DiagnosticSessionResponseType::~DiagnosticSessionResponseType()
+{
+clean_up();
+}
+
+DiagnosticSessionResponseType& DiagnosticSessionResponseType::operator=(const DiagnosticSessionResponseType& other_value)
+{
+if (this != &other_value) {
+clean_up();
+copy_value(other_value);
+}
+return *this;
+}
+
+boolean DiagnosticSessionResponseType::operator==(const DiagnosticSessionResponseType& other_value) const
+{
+if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @UnifiedDiagnosticServices.DiagnosticSessionResponseType.");
+if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @UnifiedDiagnosticServices.DiagnosticSessionResponseType.");
+if (union_selection != other_value.union_selection) return FALSE;
+switch (union_selection) {
+case ALT_defaultSession:
+return *field_defaultSession == *other_value.field_defaultSession;
+case ALT_programmingSession:
+return *field_programmingSession == *other_value.field_programmingSession;
+case ALT_extendedDiagnosticSession:
+return *field_extendedDiagnosticSession == *other_value.field_extendedDiagnosticSession;
+case ALT_safetySystemDiagnosticSession:
+return *field_safetySystemDiagnosticSession == *other_value.field_safetySystemDiagnosticSession;
+default:
+return FALSE;
+}
+}
+
+DefaultSessionResponse& DiagnosticSessionResponseType::defaultSession()
+{
+if (union_selection != ALT_defaultSession) {
+clean_up();
+field_defaultSession = new DefaultSessionResponse;
+union_selection = ALT_defaultSession;
+}
+return *field_defaultSession;
+}
+
+const DefaultSessionResponse& DiagnosticSessionResponseType::defaultSession() const
+{
+if (union_selection != ALT_defaultSession) TTCN_error("Using non-selected field defaultSession in a value of union type @UnifiedDiagnosticServices.DiagnosticSessionResponseType.");
+return *field_defaultSession;
+}
+
+ProgrammingSessionResponse& DiagnosticSessionResponseType::programmingSession()
+{
+if (union_selection != ALT_programmingSession) {
+clean_up();
+field_programmingSession = new ProgrammingSessionResponse;
+union_selection = ALT_programmingSession;
+}
+return *field_programmingSession;
+}
+
+const ProgrammingSessionResponse& DiagnosticSessionResponseType::programmingSession() const
+{
+if (union_selection != ALT_programmingSession) TTCN_error("Using non-selected field programmingSession in a value of union type @UnifiedDiagnosticServices.DiagnosticSessionResponseType.");
+return *field_programmingSession;
+}
+
+ExtendedDiagnosticSessionResponse& DiagnosticSessionResponseType::extendedDiagnosticSession()
+{
+if (union_selection != ALT_extendedDiagnosticSession) {
+clean_up();
+field_extendedDiagnosticSession = new ExtendedDiagnosticSessionResponse;
+union_selection = ALT_extendedDiagnosticSession;
+}
+return *field_extendedDiagnosticSession;
+}
+
+const ExtendedDiagnosticSessionResponse& DiagnosticSessionResponseType::extendedDiagnosticSession() const
+{
+if (union_selection != ALT_extendedDiagnosticSession) TTCN_error("Using non-selected field extendedDiagnosticSession in a value of union type @UnifiedDiagnosticServices.DiagnosticSessionResponseType.");
+return *field_extendedDiagnosticSession;
+}
+
+SafetySystemDiagnosticSessionResponse& DiagnosticSessionResponseType::safetySystemDiagnosticSession()
+{
+if (union_selection != ALT_safetySystemDiagnosticSession) {
+clean_up();
+field_safetySystemDiagnosticSession = new SafetySystemDiagnosticSessionResponse;
+union_selection = ALT_safetySystemDiagnosticSession;
+}
+return *field_safetySystemDiagnosticSession;
+}
+
+const SafetySystemDiagnosticSessionResponse& DiagnosticSessionResponseType::safetySystemDiagnosticSession() const
+{
+if (union_selection != ALT_safetySystemDiagnosticSession) TTCN_error("Using non-selected field safetySystemDiagnosticSession in a value of union type @UnifiedDiagnosticServices.DiagnosticSessionResponseType.");
+return *field_safetySystemDiagnosticSession;
+}
+
+boolean DiagnosticSessionResponseType::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 @UnifiedDiagnosticServices.DiagnosticSessionResponseType.");
+return union_selection == checked_selection;
+}
+
+boolean DiagnosticSessionResponseType::is_bound() const
+{
+  return union_selection != UNBOUND_VALUE;
+}
+
+boolean DiagnosticSessionResponseType::is_value() const
+{
+switch (union_selection) {
+case UNBOUND_VALUE: return FALSE;
+case ALT_defaultSession: return field_defaultSession->is_value();
+case ALT_programmingSession: return field_programmingSession->is_value();
+case ALT_extendedDiagnosticSession: return field_extendedDiagnosticSession->is_value();
+case ALT_safetySystemDiagnosticSession: return field_safetySystemDiagnosticSession->is_value();
+default: TTCN_error("Invalid selection in union is_bound");}
+}
+
+void DiagnosticSessionResponseType::clean_up()
+{
+switch (union_selection) {
+case ALT_defaultSession:
+  delete field_defaultSession;
+  break;
+case ALT_programmingSession:
+  delete field_programmingSession;
+  break;
+case ALT_extendedDiagnosticSession:
+  delete field_extendedDiagnosticSession;
+  break;
+case ALT_safetySystemDiagnosticSession:
+  delete field_safetySystemDiagnosticSession;
+  break;
+default:
+  break;
+}
+union_selection = UNBOUND_VALUE;
+}
+
+void DiagnosticSessionResponseType::log() const
+{
+switch (union_selection) {
+case ALT_defaultSession:
+TTCN_Logger::log_event_str("{ defaultSession := ");
+field_defaultSession->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_programmingSession:
+TTCN_Logger::log_event_str("{ programmingSession := ");
+field_programmingSession->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_extendedDiagnosticSession:
+TTCN_Logger::log_event_str("{ extendedDiagnosticSession := ");
+field_extendedDiagnosticSession->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_safetySystemDiagnosticSession:
+TTCN_Logger::log_event_str("{ safetySystemDiagnosticSession := ");
+field_safetySystemDiagnosticSession->log();
+TTCN_Logger::log_event_str(" }");
+break;
+default:
+TTCN_Logger::log_event_unbound();
+}
+}
+
+void DiagnosticSessionResponseType::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, "defaultSession")) {
+    defaultSession().set_param(*mp_last);
+    if (!defaultSession().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "programmingSession")) {
+    programmingSession().set_param(*mp_last);
+    if (!programmingSession().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "extendedDiagnosticSession")) {
+    extendedDiagnosticSession().set_param(*mp_last);
+    if (!extendedDiagnosticSession().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "safetySystemDiagnosticSession")) {
+    safetySystemDiagnosticSession().set_param(*mp_last);
+    if (!safetySystemDiagnosticSession().is_bound()) clean_up();
+    return;
+  }
+  mp_last->error("Field %s does not exist in type @UnifiedDiagnosticServices.DiagnosticSessionResponseType.", last_name);
+}
+
+void DiagnosticSessionResponseType::set_implicit_omit()
+{
+switch (union_selection) {
+case ALT_defaultSession:
+field_defaultSession->set_implicit_omit(); break;
+case ALT_programmingSession:
+field_programmingSession->set_implicit_omit(); break;
+case ALT_extendedDiagnosticSession:
+field_extendedDiagnosticSession->set_implicit_omit(); break;
+case ALT_safetySystemDiagnosticSession:
+field_safetySystemDiagnosticSession->set_implicit_omit(); break;
+default: break;
+}
+}
+
+void DiagnosticSessionResponseType::encode_text(Text_Buf& text_buf) const
+{
+text_buf.push_int(union_selection);
+switch (union_selection) {
+case ALT_defaultSession:
+field_defaultSession->encode_text(text_buf);
+break;
+case ALT_programmingSession:
+field_programmingSession->encode_text(text_buf);
+break;
+case ALT_extendedDiagnosticSession:
+field_extendedDiagnosticSession->encode_text(text_buf);
+break;
+case ALT_safetySystemDiagnosticSession:
+field_safetySystemDiagnosticSession->encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an unbound value of union type @UnifiedDiagnosticServices.DiagnosticSessionResponseType.");
+}
+}
+
+void DiagnosticSessionResponseType::decode_text(Text_Buf& text_buf)
+{
+switch ((union_selection_type)text_buf.pull_int().get_val()) {
+case ALT_defaultSession:
+defaultSession().decode_text(text_buf);
+break;
+case ALT_programmingSession:
+programmingSession().decode_text(text_buf);
+break;
+case ALT_extendedDiagnosticSession:
+extendedDiagnosticSession().decode_text(text_buf);
+break;
+case ALT_safetySystemDiagnosticSession:
+safetySystemDiagnosticSession().decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for type @UnifiedDiagnosticServices.DiagnosticSessionResponseType.");
+}
+}
+
+void DiagnosticSessionResponseType::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void DiagnosticSessionResponseType::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int DiagnosticSessionResponseType::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, DefaultSessionResponse_descr_.raw->forceomit);
+      decoded_length = defaultSession().RAW_decode(DefaultSessionResponse_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, ProgrammingSessionResponse_descr_.raw->forceomit);
+      decoded_length = programmingSession().RAW_decode(ProgrammingSessionResponse_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, ExtendedDiagnosticSessionResponse_descr_.raw->forceomit);
+      decoded_length = extendedDiagnosticSession().RAW_decode(ExtendedDiagnosticSessionResponse_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 3: {
+      RAW_Force_Omit field_force_omit(3, force_omit, SafetySystemDiagnosticSessionResponse_descr_.raw->forceomit);
+      decoded_length = safetySystemDiagnosticSession().RAW_decode(SafetySystemDiagnosticSessionResponse_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 {
+    boolean already_failed = FALSE;
+    already_failed = FALSE;
+    if (!already_failed) {
+      BITSTRING temporal_0;
+      int decoded_0_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_0_length = temporal_0.RAW_decode(DefaultSessionResponse_diagnosticSessionType_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_0_length > 0) {
+        if (temporal_0 ==  bs_0) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(0, force_omit, DefaultSessionResponse_descr_.raw->forceomit);
+          decoded_length = defaultSession().RAW_decode(DefaultSessionResponse_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_defaultSession).diagnosticSessionType() ==  bs_0) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      BITSTRING temporal_1;
+      int decoded_1_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_1_length = temporal_1.RAW_decode(ProgrammingSessionResponse_diagnosticSessionType_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_1_length > 0) {
+        if (temporal_1 ==  bs_1) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(1, force_omit, ProgrammingSessionResponse_descr_.raw->forceomit);
+          decoded_length = programmingSession().RAW_decode(ProgrammingSessionResponse_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_programmingSession).diagnosticSessionType() ==  bs_1) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      BITSTRING temporal_2;
+      int decoded_2_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_2_length = temporal_2.RAW_decode(ExtendedDiagnosticSessionResponse_diagnosticSessionType_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_2_length > 0) {
+        if (temporal_2 ==  bs_2) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(2, force_omit, ExtendedDiagnosticSessionResponse_descr_.raw->forceomit);
+          decoded_length = extendedDiagnosticSession().RAW_decode(ExtendedDiagnosticSessionResponse_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_extendedDiagnosticSession).diagnosticSessionType() ==  bs_2) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      BITSTRING temporal_3;
+      int decoded_3_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_3_length = temporal_3.RAW_decode(SafetySystemDiagnosticSessionResponse_diagnosticSessionType_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_3_length > 0) {
+        if (temporal_3 ==  bs_3) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(3, force_omit, SafetySystemDiagnosticSessionResponse_descr_.raw->forceomit);
+          decoded_length = safetySystemDiagnosticSession().RAW_decode(SafetySystemDiagnosticSessionResponse_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_safetySystemDiagnosticSession).diagnosticSessionType() ==  bs_3) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+ }
+ clean_up();
+ return -1;
+}
+
+int DiagnosticSessionResponseType::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const
+{
+  int encoded_length = 0;
+  myleaf.isleaf = FALSE;
+  myleaf.body.node.num_of_nodes = 4;  myleaf.body.node.nodes = init_nodes_of_enc_tree(4);
+  memset(myleaf.body.node.nodes, 0, 4 * sizeof(RAW_enc_tree *));
+  switch (union_selection) {
+  case ALT_defaultSession:
+    myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 0, DefaultSessionResponse_descr_.raw);
+    encoded_length = field_defaultSession->RAW_encode(DefaultSessionResponse_descr_, *myleaf.body.node.nodes[0]);
+    myleaf.body.node.nodes[0]->coding_descr = &DefaultSessionResponse_descr_;
+    if ((*field_defaultSession).diagnosticSessionType() !=  bs_0) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={0,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   bs_0.RAW_encode(DefaultSessionResponse_diagnosticSessionType_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);
+  }
+    }
+    break;
+  case ALT_programmingSession:
+    myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 1, ProgrammingSessionResponse_descr_.raw);
+    encoded_length = field_programmingSession->RAW_encode(ProgrammingSessionResponse_descr_, *myleaf.body.node.nodes[1]);
+    myleaf.body.node.nodes[1]->coding_descr = &ProgrammingSessionResponse_descr_;
+    if ((*field_programmingSession).diagnosticSessionType() !=  bs_1) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={1,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   bs_1.RAW_encode(ProgrammingSessionResponse_diagnosticSessionType_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);
+  }
+    }
+    break;
+  case ALT_extendedDiagnosticSession:
+    myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 2, ExtendedDiagnosticSessionResponse_descr_.raw);
+    encoded_length = field_extendedDiagnosticSession->RAW_encode(ExtendedDiagnosticSessionResponse_descr_, *myleaf.body.node.nodes[2]);
+    myleaf.body.node.nodes[2]->coding_descr = &ExtendedDiagnosticSessionResponse_descr_;
+    if ((*field_extendedDiagnosticSession).diagnosticSessionType() !=  bs_2) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={2,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   bs_2.RAW_encode(ExtendedDiagnosticSessionResponse_diagnosticSessionType_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);
+  }
+    }
+    break;
+  case ALT_safetySystemDiagnosticSession:
+    myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 3, SafetySystemDiagnosticSessionResponse_descr_.raw);
+    encoded_length = field_safetySystemDiagnosticSession->RAW_encode(SafetySystemDiagnosticSessionResponse_descr_, *myleaf.body.node.nodes[3]);
+    myleaf.body.node.nodes[3]->coding_descr = &SafetySystemDiagnosticSessionResponse_descr_;
+    if ((*field_safetySystemDiagnosticSession).diagnosticSessionType() !=  bs_3) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={3,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   bs_3.RAW_encode(SafetySystemDiagnosticSessionResponse_diagnosticSessionType_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);
+  }
+    }
+    break;
+  default:
+    TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
+  }
+  return encoded_length;
+}
+
+void DiagnosticSessionResponseType_template::copy_value(const DiagnosticSessionResponseType& other_value)
+{
+single_value.union_selection = other_value.get_selection();
+switch (single_value.union_selection) {
+case DiagnosticSessionResponseType::ALT_defaultSession:
+single_value.field_defaultSession = new DefaultSessionResponse_template(other_value.defaultSession());
+break;
+case DiagnosticSessionResponseType::ALT_programmingSession:
+single_value.field_programmingSession = new ProgrammingSessionResponse_template(other_value.programmingSession());
+break;
+case DiagnosticSessionResponseType::ALT_extendedDiagnosticSession:
+single_value.field_extendedDiagnosticSession = new ExtendedDiagnosticSessionResponse_template(other_value.extendedDiagnosticSession());
+break;
+case DiagnosticSessionResponseType::ALT_safetySystemDiagnosticSession:
+single_value.field_safetySystemDiagnosticSession = new SafetySystemDiagnosticSessionResponse_template(other_value.safetySystemDiagnosticSession());
+break;
+default:
+TTCN_error("Initializing a template with an unbound value of type @UnifiedDiagnosticServices.DiagnosticSessionResponseType.");
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void DiagnosticSessionResponseType_template::copy_template(const DiagnosticSessionResponseType_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 DiagnosticSessionResponseType::ALT_defaultSession:
+single_value.field_defaultSession = new DefaultSessionResponse_template(*other_value.single_value.field_defaultSession);
+break;
+case DiagnosticSessionResponseType::ALT_programmingSession:
+single_value.field_programmingSession = new ProgrammingSessionResponse_template(*other_value.single_value.field_programmingSession);
+break;
+case DiagnosticSessionResponseType::ALT_extendedDiagnosticSession:
+single_value.field_extendedDiagnosticSession = new ExtendedDiagnosticSessionResponse_template(*other_value.single_value.field_extendedDiagnosticSession);
+break;
+case DiagnosticSessionResponseType::ALT_safetySystemDiagnosticSession:
+single_value.field_safetySystemDiagnosticSession = new SafetySystemDiagnosticSessionResponse_template(*other_value.single_value.field_safetySystemDiagnosticSession);
+break;
+default:
+TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @UnifiedDiagnosticServices.DiagnosticSessionResponseType.");
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new DiagnosticSessionResponseType_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;
+default:
+TTCN_error("Copying an uninitialized template of union type @UnifiedDiagnosticServices.DiagnosticSessionResponseType.");
+}
+set_selection(other_value);
+}
+
+DiagnosticSessionResponseType_template::DiagnosticSessionResponseType_template()
+{
+}
+
+DiagnosticSessionResponseType_template::DiagnosticSessionResponseType_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+DiagnosticSessionResponseType_template::DiagnosticSessionResponseType_template(const DiagnosticSessionResponseType& other_value)
+{
+copy_value(other_value);
+}
+
+DiagnosticSessionResponseType_template::DiagnosticSessionResponseType_template(const OPTIONAL<DiagnosticSessionResponseType>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const DiagnosticSessionResponseType&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of union type @UnifiedDiagnosticServices.DiagnosticSessionResponseType from an unbound optional field.");
+}
+}
+
+DiagnosticSessionResponseType_template::DiagnosticSessionResponseType_template(const DiagnosticSessionResponseType_template& other_value)
+: Base_Template(){
+copy_template(other_value);
+}
+
+DiagnosticSessionResponseType_template::~DiagnosticSessionResponseType_template()
+{
+clean_up();
+}
+
+void DiagnosticSessionResponseType_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case DiagnosticSessionResponseType::ALT_defaultSession:
+delete single_value.field_defaultSession;
+break;
+case DiagnosticSessionResponseType::ALT_programmingSession:
+delete single_value.field_programmingSession;
+break;
+case DiagnosticSessionResponseType::ALT_extendedDiagnosticSession:
+delete single_value.field_extendedDiagnosticSession;
+break;
+case DiagnosticSessionResponseType::ALT_safetySystemDiagnosticSession:
+delete single_value.field_safetySystemDiagnosticSession;
+default:
+break;
+}
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+DiagnosticSessionResponseType_template& DiagnosticSessionResponseType_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+DiagnosticSessionResponseType_template& DiagnosticSessionResponseType_template::operator=(const DiagnosticSessionResponseType& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+DiagnosticSessionResponseType_template& DiagnosticSessionResponseType_template::operator=(const OPTIONAL<DiagnosticSessionResponseType>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const DiagnosticSessionResponseType&)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 @UnifiedDiagnosticServices.DiagnosticSessionResponseType.");
+}
+return *this;
+}
+
+DiagnosticSessionResponseType_template& DiagnosticSessionResponseType_template::operator=(const DiagnosticSessionResponseType_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean DiagnosticSessionResponseType_template::match(const DiagnosticSessionResponseType& 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:
+{
+DiagnosticSessionResponseType::union_selection_type value_selection = other_value.get_selection();
+if (value_selection == DiagnosticSessionResponseType::UNBOUND_VALUE) return FALSE;
+if (value_selection != single_value.union_selection) return FALSE;
+switch (value_selection) {
+case DiagnosticSessionResponseType::ALT_defaultSession:
+return single_value.field_defaultSession->match(other_value.defaultSession(), legacy);
+case DiagnosticSessionResponseType::ALT_programmingSession:
+return single_value.field_programmingSession->match(other_value.programmingSession(), legacy);
+case DiagnosticSessionResponseType::ALT_extendedDiagnosticSession:
+return single_value.field_extendedDiagnosticSession->match(other_value.extendedDiagnosticSession(), legacy);
+case DiagnosticSessionResponseType::ALT_safetySystemDiagnosticSession:
+return single_value.field_safetySystemDiagnosticSession->match(other_value.safetySystemDiagnosticSession(), legacy);
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @UnifiedDiagnosticServices.DiagnosticSessionResponseType.");
+}
+}
+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;
+default:
+TTCN_error ("Matching an uninitialized template of union type @UnifiedDiagnosticServices.DiagnosticSessionResponseType.");
+}
+return FALSE;
+}
+
+boolean DiagnosticSessionResponseType_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+switch (single_value.union_selection) {
+case DiagnosticSessionResponseType::ALT_defaultSession:
+return single_value.field_defaultSession->is_value();
+case DiagnosticSessionResponseType::ALT_programmingSession:
+return single_value.field_programmingSession->is_value();
+case DiagnosticSessionResponseType::ALT_extendedDiagnosticSession:
+return single_value.field_extendedDiagnosticSession->is_value();
+case DiagnosticSessionResponseType::ALT_safetySystemDiagnosticSession:
+return single_value.field_safetySystemDiagnosticSession->is_value();
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @UnifiedDiagnosticServices.DiagnosticSessionResponseType.");
+}
+}
+
+DiagnosticSessionResponseType DiagnosticSessionResponseType_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 @UnifiedDiagnosticServices.DiagnosticSessionResponseType.");
+DiagnosticSessionResponseType ret_val;
+switch (single_value.union_selection) {
+case DiagnosticSessionResponseType::ALT_defaultSession:
+ret_val.defaultSession() = single_value.field_defaultSession->valueof();
+break;
+case DiagnosticSessionResponseType::ALT_programmingSession:
+ret_val.programmingSession() = single_value.field_programmingSession->valueof();
+break;
+case DiagnosticSessionResponseType::ALT_extendedDiagnosticSession:
+ret_val.extendedDiagnosticSession() = single_value.field_extendedDiagnosticSession->valueof();
+break;
+case DiagnosticSessionResponseType::ALT_safetySystemDiagnosticSession:
+ret_val.safetySystemDiagnosticSession() = single_value.field_safetySystemDiagnosticSession->valueof();
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @UnifiedDiagnosticServices.DiagnosticSessionResponseType.");
+}
+return ret_val;
+}
+
+DiagnosticSessionResponseType_template& DiagnosticSessionResponseType_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @UnifiedDiagnosticServices.DiagnosticSessionResponseType.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @UnifiedDiagnosticServices.DiagnosticSessionResponseType.");
+return value_list.list_value[list_index];
+}
+void DiagnosticSessionResponseType_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error ("Internal error: Setting an invalid list for a template of union type @UnifiedDiagnosticServices.DiagnosticSessionResponseType.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new DiagnosticSessionResponseType_template[list_length];
+}
+
+DefaultSessionResponse_template& DiagnosticSessionResponseType_template::defaultSession()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != DiagnosticSessionResponseType::ALT_defaultSession) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_defaultSession = new DefaultSessionResponse_template(ANY_VALUE);
+else single_value.field_defaultSession = new DefaultSessionResponse_template;
+single_value.union_selection = DiagnosticSessionResponseType::ALT_defaultSession;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_defaultSession;
+}
+
+const DefaultSessionResponse_template& DiagnosticSessionResponseType_template::defaultSession() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field defaultSession in a non-specific template of union type @UnifiedDiagnosticServices.DiagnosticSessionResponseType.");
+if (single_value.union_selection != DiagnosticSessionResponseType::ALT_defaultSession) TTCN_error("Accessing non-selected field defaultSession in a template of union type @UnifiedDiagnosticServices.DiagnosticSessionResponseType.");
+return *single_value.field_defaultSession;
+}
+
+ProgrammingSessionResponse_template& DiagnosticSessionResponseType_template::programmingSession()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != DiagnosticSessionResponseType::ALT_programmingSession) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_programmingSession = new ProgrammingSessionResponse_template(ANY_VALUE);
+else single_value.field_programmingSession = new ProgrammingSessionResponse_template;
+single_value.union_selection = DiagnosticSessionResponseType::ALT_programmingSession;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_programmingSession;
+}
+
+const ProgrammingSessionResponse_template& DiagnosticSessionResponseType_template::programmingSession() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field programmingSession in a non-specific template of union type @UnifiedDiagnosticServices.DiagnosticSessionResponseType.");
+if (single_value.union_selection != DiagnosticSessionResponseType::ALT_programmingSession) TTCN_error("Accessing non-selected field programmingSession in a template of union type @UnifiedDiagnosticServices.DiagnosticSessionResponseType.");
+return *single_value.field_programmingSession;
+}
+
+ExtendedDiagnosticSessionResponse_template& DiagnosticSessionResponseType_template::extendedDiagnosticSession()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != DiagnosticSessionResponseType::ALT_extendedDiagnosticSession) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_extendedDiagnosticSession = new ExtendedDiagnosticSessionResponse_template(ANY_VALUE);
+else single_value.field_extendedDiagnosticSession = new ExtendedDiagnosticSessionResponse_template;
+single_value.union_selection = DiagnosticSessionResponseType::ALT_extendedDiagnosticSession;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_extendedDiagnosticSession;
+}
+
+const ExtendedDiagnosticSessionResponse_template& DiagnosticSessionResponseType_template::extendedDiagnosticSession() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field extendedDiagnosticSession in a non-specific template of union type @UnifiedDiagnosticServices.DiagnosticSessionResponseType.");
+if (single_value.union_selection != DiagnosticSessionResponseType::ALT_extendedDiagnosticSession) TTCN_error("Accessing non-selected field extendedDiagnosticSession in a template of union type @UnifiedDiagnosticServices.DiagnosticSessionResponseType.");
+return *single_value.field_extendedDiagnosticSession;
+}
+
+SafetySystemDiagnosticSessionResponse_template& DiagnosticSessionResponseType_template::safetySystemDiagnosticSession()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != DiagnosticSessionResponseType::ALT_safetySystemDiagnosticSession) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_safetySystemDiagnosticSession = new SafetySystemDiagnosticSessionResponse_template(ANY_VALUE);
+else single_value.field_safetySystemDiagnosticSession = new SafetySystemDiagnosticSessionResponse_template;
+single_value.union_selection = DiagnosticSessionResponseType::ALT_safetySystemDiagnosticSession;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_safetySystemDiagnosticSession;
+}
+
+const SafetySystemDiagnosticSessionResponse_template& DiagnosticSessionResponseType_template::safetySystemDiagnosticSession() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field safetySystemDiagnosticSession in a non-specific template of union type @UnifiedDiagnosticServices.DiagnosticSessionResponseType.");
+if (single_value.union_selection != DiagnosticSessionResponseType::ALT_safetySystemDiagnosticSession) TTCN_error("Accessing non-selected field safetySystemDiagnosticSession in a template of union type @UnifiedDiagnosticServices.DiagnosticSessionResponseType.");
+return *single_value.field_safetySystemDiagnosticSession;
+}
+
+boolean DiagnosticSessionResponseType_template::ischosen(DiagnosticSessionResponseType::union_selection_type checked_selection) const
+{
+if (checked_selection == DiagnosticSessionResponseType::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @UnifiedDiagnosticServices.DiagnosticSessionResponseType.");
+switch (template_selection) {
+case SPECIFIC_VALUE:
+if (single_value.union_selection == DiagnosticSessionResponseType::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @UnifiedDiagnosticServices.DiagnosticSessionResponseType.");
+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 @UnifiedDiagnosticServices.DiagnosticSessionResponseType 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 DiagnosticSessionResponseType_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case DiagnosticSessionResponseType::ALT_defaultSession:
+TTCN_Logger::log_event_str("{ defaultSession := ");
+single_value.field_defaultSession->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case DiagnosticSessionResponseType::ALT_programmingSession:
+TTCN_Logger::log_event_str("{ programmingSession := ");
+single_value.field_programmingSession->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case DiagnosticSessionResponseType::ALT_extendedDiagnosticSession:
+TTCN_Logger::log_event_str("{ extendedDiagnosticSession := ");
+single_value.field_extendedDiagnosticSession->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case DiagnosticSessionResponseType::ALT_safetySystemDiagnosticSession:
+TTCN_Logger::log_event_str("{ safetySystemDiagnosticSession := ");
+single_value.field_safetySystemDiagnosticSession->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 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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void DiagnosticSessionResponseType_template::log_match(const DiagnosticSessionResponseType& 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()) {
+switch (single_value.union_selection) {
+case DiagnosticSessionResponseType::ALT_defaultSession:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".defaultSession");
+single_value.field_defaultSession->log_match(match_value.defaultSession(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ defaultSession := ");
+single_value.field_defaultSession->log_match(match_value.defaultSession(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case DiagnosticSessionResponseType::ALT_programmingSession:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".programmingSession");
+single_value.field_programmingSession->log_match(match_value.programmingSession(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ programmingSession := ");
+single_value.field_programmingSession->log_match(match_value.programmingSession(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case DiagnosticSessionResponseType::ALT_extendedDiagnosticSession:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".extendedDiagnosticSession");
+single_value.field_extendedDiagnosticSession->log_match(match_value.extendedDiagnosticSession(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ extendedDiagnosticSession := ");
+single_value.field_extendedDiagnosticSession->log_match(match_value.extendedDiagnosticSession(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case DiagnosticSessionResponseType::ALT_safetySystemDiagnosticSession:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".safetySystemDiagnosticSession");
+single_value.field_safetySystemDiagnosticSession->log_match(match_value.safetySystemDiagnosticSession(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ safetySystemDiagnosticSession := ");
+single_value.field_safetySystemDiagnosticSession->log_match(match_value.safetySystemDiagnosticSession(), 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 DiagnosticSessionResponseType_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 DiagnosticSessionResponseType::ALT_defaultSession:
+single_value.field_defaultSession->encode_text(text_buf);
+break;
+case DiagnosticSessionResponseType::ALT_programmingSession:
+single_value.field_programmingSession->encode_text(text_buf);
+break;
+case DiagnosticSessionResponseType::ALT_extendedDiagnosticSession:
+single_value.field_extendedDiagnosticSession->encode_text(text_buf);
+break;
+case DiagnosticSessionResponseType::ALT_safetySystemDiagnosticSession:
+single_value.field_safetySystemDiagnosticSession->encode_text(text_buf);
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @UnifiedDiagnosticServices.DiagnosticSessionResponseType.");
+}
+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 @UnifiedDiagnosticServices.DiagnosticSessionResponseType.");
+}
+}
+
+void DiagnosticSessionResponseType_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+{
+single_value.union_selection = DiagnosticSessionResponseType::UNBOUND_VALUE;
+DiagnosticSessionResponseType::union_selection_type new_selection = (DiagnosticSessionResponseType::union_selection_type)text_buf.pull_int().get_val();
+switch (new_selection) {
+case DiagnosticSessionResponseType::ALT_defaultSession:
+single_value.field_defaultSession = new DefaultSessionResponse_template;
+single_value.field_defaultSession->decode_text(text_buf);
+break;
+case DiagnosticSessionResponseType::ALT_programmingSession:
+single_value.field_programmingSession = new ProgrammingSessionResponse_template;
+single_value.field_programmingSession->decode_text(text_buf);
+break;
+case DiagnosticSessionResponseType::ALT_extendedDiagnosticSession:
+single_value.field_extendedDiagnosticSession = new ExtendedDiagnosticSessionResponse_template;
+single_value.field_extendedDiagnosticSession->decode_text(text_buf);
+break;
+case DiagnosticSessionResponseType::ALT_safetySystemDiagnosticSession:
+single_value.field_safetySystemDiagnosticSession = new SafetySystemDiagnosticSessionResponse_template;
+single_value.field_safetySystemDiagnosticSession->decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @UnifiedDiagnosticServices.DiagnosticSessionResponseType.");
+}
+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 DiagnosticSessionResponseType_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 @UnifiedDiagnosticServices.DiagnosticSessionResponseType.");
+}
+}
+
+boolean DiagnosticSessionResponseType_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean DiagnosticSessionResponseType_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 DiagnosticSessionResponseType_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 `@UnifiedDiagnosticServices.DiagnosticSessionResponseType'");
+    }
+    if (strcmp("defaultSession", param_field) == 0) {
+      defaultSession().set_param(param);
+      return;
+    } else if (strcmp("programmingSession", param_field) == 0) {
+      programmingSession().set_param(param);
+      return;
+    } else if (strcmp("extendedDiagnosticSession", param_field) == 0) {
+      extendedDiagnosticSession().set_param(param);
+      return;
+    } else if (strcmp("safetySystemDiagnosticSession", param_field) == 0) {
+      safetySystemDiagnosticSession().set_param(param);
+      return;
+    } else param.error("Field `%s' not found in union template type `@UnifiedDiagnosticServices.DiagnosticSessionResponseType'", 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: {
+    DiagnosticSessionResponseType_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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", "@UnifiedDiagnosticServices.DiagnosticSessionResponseType");
+    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, "defaultSession")) {
+      defaultSession().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "programmingSession")) {
+      programmingSession().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "extendedDiagnosticSession")) {
+      extendedDiagnosticSession().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "safetySystemDiagnosticSession")) {
+      safetySystemDiagnosticSession().set_param(*mp_last);
+      break;
+    }
+    mp_last->error("Field %s does not exist in type @UnifiedDiagnosticServices.DiagnosticSessionResponseType.", last_name);
+  } break;
+  default:
+    param.type_error("union template", "@UnifiedDiagnosticServices.DiagnosticSessionResponseType");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void DiagnosticSessionResponseType_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 DiagnosticSessionResponseType::ALT_defaultSession:
+single_value.field_defaultSession->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.DiagnosticSessionResponseType");
+return;
+case DiagnosticSessionResponseType::ALT_programmingSession:
+single_value.field_programmingSession->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.DiagnosticSessionResponseType");
+return;
+case DiagnosticSessionResponseType::ALT_extendedDiagnosticSession:
+single_value.field_extendedDiagnosticSession->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.DiagnosticSessionResponseType");
+return;
+case DiagnosticSessionResponseType::ALT_safetySystemDiagnosticSession:
+single_value.field_safetySystemDiagnosticSession->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.DiagnosticSessionResponseType");
+return;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @UnifiedDiagnosticServices.DiagnosticSessionResponseType.");
+}
+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 : "@UnifiedDiagnosticServices.DiagnosticSessionResponseType");
+}
+
+DefaultSessionResponse::DefaultSessionResponse()
+{
+}
+
+DefaultSessionResponse::DefaultSessionResponse(const BITSTRING& par_diagnosticSessionType,
+    const OCTETSTRING& par_p2ServerMax,
+    const OCTETSTRING& par_p2StarServerMax)
+  :   field_diagnosticSessionType(par_diagnosticSessionType),
+  field_p2ServerMax(par_p2ServerMax),
+  field_p2StarServerMax(par_p2StarServerMax)
+{
+}
+
+DefaultSessionResponse::DefaultSessionResponse(const DefaultSessionResponse& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.DefaultSessionResponse.");
+if (other_value.diagnosticSessionType().is_bound()) field_diagnosticSessionType = other_value.diagnosticSessionType();
+else field_diagnosticSessionType.clean_up();
+if (other_value.p2ServerMax().is_bound()) field_p2ServerMax = other_value.p2ServerMax();
+else field_p2ServerMax.clean_up();
+if (other_value.p2StarServerMax().is_bound()) field_p2StarServerMax = other_value.p2StarServerMax();
+else field_p2StarServerMax.clean_up();
+}
+
+void DefaultSessionResponse::clean_up()
+{
+field_diagnosticSessionType.clean_up();
+field_p2ServerMax.clean_up();
+field_p2StarServerMax.clean_up();
+}
+
+const TTCN_Typedescriptor_t* DefaultSessionResponse::get_descriptor() const { return &DefaultSessionResponse_descr_; }
+DefaultSessionResponse& DefaultSessionResponse::operator=(const DefaultSessionResponse& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.DefaultSessionResponse.");
+  if (other_value.diagnosticSessionType().is_bound()) field_diagnosticSessionType = other_value.diagnosticSessionType();
+  else field_diagnosticSessionType.clean_up();
+  if (other_value.p2ServerMax().is_bound()) field_p2ServerMax = other_value.p2ServerMax();
+  else field_p2ServerMax.clean_up();
+  if (other_value.p2StarServerMax().is_bound()) field_p2StarServerMax = other_value.p2StarServerMax();
+  else field_p2StarServerMax.clean_up();
+}
+return *this;
+}
+
+boolean DefaultSessionResponse::operator==(const DefaultSessionResponse& other_value) const
+{
+return field_diagnosticSessionType==other_value.field_diagnosticSessionType
+  && field_p2ServerMax==other_value.field_p2ServerMax
+  && field_p2StarServerMax==other_value.field_p2StarServerMax;
+}
+
+boolean DefaultSessionResponse::is_bound() const
+{
+return (field_diagnosticSessionType.is_bound())
+  || (field_p2ServerMax.is_bound())
+  || (field_p2StarServerMax.is_bound());
+}
+boolean DefaultSessionResponse::is_value() const
+{
+return field_diagnosticSessionType.is_value()
+  && field_p2ServerMax.is_value()
+  && field_p2StarServerMax.is_value();
+}
+void DefaultSessionResponse::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ diagnosticSessionType := ");
+field_diagnosticSessionType.log();
+TTCN_Logger::log_event_str(", p2ServerMax := ");
+field_p2ServerMax.log();
+TTCN_Logger::log_event_str(", p2StarServerMax := ");
+field_p2StarServerMax.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void DefaultSessionResponse::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 @UnifiedDiagnosticServices.DefaultSessionResponse 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) diagnosticSessionType().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) p2ServerMax().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) p2StarServerMax().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(), "diagnosticSessionType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          diagnosticSessionType().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(), "p2ServerMax")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          p2ServerMax().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(), "p2StarServerMax")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          p2StarServerMax().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 @UnifiedDiagnosticServices.DefaultSessionResponse: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.DefaultSessionResponse");
+  }
+}
+
+void DefaultSessionResponse::set_implicit_omit()
+{
+if (diagnosticSessionType().is_bound()) diagnosticSessionType().set_implicit_omit();
+if (p2ServerMax().is_bound()) p2ServerMax().set_implicit_omit();
+if (p2StarServerMax().is_bound()) p2StarServerMax().set_implicit_omit();
+}
+
+void DefaultSessionResponse::encode_text(Text_Buf& text_buf) const
+{
+field_diagnosticSessionType.encode_text(text_buf);
+field_p2ServerMax.encode_text(text_buf);
+field_p2StarServerMax.encode_text(text_buf);
+}
+
+void DefaultSessionResponse::decode_text(Text_Buf& text_buf)
+{
+field_diagnosticSessionType.decode_text(text_buf);
+field_p2ServerMax.decode_text(text_buf);
+field_p2StarServerMax.decode_text(text_buf);
+}
+
+void DefaultSessionResponse::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void DefaultSessionResponse::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int DefaultSessionResponse::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, DefaultSessionResponse_diagnosticSessionType_descr_.raw->forceomit);
+  decoded_field_length = field_diagnosticSessionType.RAW_decode(DefaultSessionResponse_diagnosticSessionType_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, DefaultSessionResponse_p2ServerMax_descr_.raw->forceomit);
+  decoded_field_length = field_p2ServerMax.RAW_decode(DefaultSessionResponse_p2ServerMax_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, DefaultSessionResponse_p2StarServerMax_descr_.raw->forceomit);
+  decoded_field_length = field_p2StarServerMax.RAW_decode(DefaultSessionResponse_p2StarServerMax_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 DefaultSessionResponse::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, DefaultSessionResponse_diagnosticSessionType_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, DefaultSessionResponse_p2ServerMax_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, DefaultSessionResponse_p2StarServerMax_descr_.raw);
+  encoded_length += field_diagnosticSessionType.RAW_encode(DefaultSessionResponse_diagnosticSessionType_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_p2ServerMax.RAW_encode(DefaultSessionResponse_p2ServerMax_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_p2StarServerMax.RAW_encode(DefaultSessionResponse_p2StarServerMax_descr_, *myleaf.body.node.nodes[2]);
+  return myleaf.length = encoded_length;
+}
+
+struct DefaultSessionResponse_template::single_value_struct {
+BITSTRING_template field_diagnosticSessionType;
+OCTETSTRING_template field_p2ServerMax;
+OCTETSTRING_template field_p2StarServerMax;
+};
+
+void DefaultSessionResponse_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_diagnosticSessionType = ANY_VALUE;
+single_value->field_p2ServerMax = ANY_VALUE;
+single_value->field_p2StarServerMax = ANY_VALUE;
+}
+}
+}
+
+void DefaultSessionResponse_template::copy_value(const DefaultSessionResponse& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.diagnosticSessionType().is_bound()) {
+  single_value->field_diagnosticSessionType = other_value.diagnosticSessionType();
+} else {
+  single_value->field_diagnosticSessionType.clean_up();
+}
+if (other_value.p2ServerMax().is_bound()) {
+  single_value->field_p2ServerMax = other_value.p2ServerMax();
+} else {
+  single_value->field_p2ServerMax.clean_up();
+}
+if (other_value.p2StarServerMax().is_bound()) {
+  single_value->field_p2StarServerMax = other_value.p2StarServerMax();
+} else {
+  single_value->field_p2StarServerMax.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void DefaultSessionResponse_template::copy_template(const DefaultSessionResponse_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.diagnosticSessionType().get_selection()) {
+single_value->field_diagnosticSessionType = other_value.diagnosticSessionType();
+} else {
+single_value->field_diagnosticSessionType.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.p2ServerMax().get_selection()) {
+single_value->field_p2ServerMax = other_value.p2ServerMax();
+} else {
+single_value->field_p2ServerMax.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.p2StarServerMax().get_selection()) {
+single_value->field_p2StarServerMax = other_value.p2StarServerMax();
+} else {
+single_value->field_p2StarServerMax.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new DefaultSessionResponse_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.DefaultSessionResponse.");
+break;
+}
+set_selection(other_value);
+}
+
+DefaultSessionResponse_template::DefaultSessionResponse_template()
+{
+}
+
+DefaultSessionResponse_template::DefaultSessionResponse_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+DefaultSessionResponse_template::DefaultSessionResponse_template(const DefaultSessionResponse& other_value)
+{
+copy_value(other_value);
+}
+
+DefaultSessionResponse_template::DefaultSessionResponse_template(const OPTIONAL<DefaultSessionResponse>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const DefaultSessionResponse&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.DefaultSessionResponse from an unbound optional field.");
+}
+}
+
+DefaultSessionResponse_template::DefaultSessionResponse_template(const DefaultSessionResponse_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+DefaultSessionResponse_template::~DefaultSessionResponse_template()
+{
+clean_up();
+}
+
+DefaultSessionResponse_template& DefaultSessionResponse_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+DefaultSessionResponse_template& DefaultSessionResponse_template::operator=(const DefaultSessionResponse& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+DefaultSessionResponse_template& DefaultSessionResponse_template::operator=(const OPTIONAL<DefaultSessionResponse>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const DefaultSessionResponse&)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 @UnifiedDiagnosticServices.DefaultSessionResponse.");
+}
+return *this;
+}
+
+DefaultSessionResponse_template& DefaultSessionResponse_template::operator=(const DefaultSessionResponse_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean DefaultSessionResponse_template::match(const DefaultSessionResponse& 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.diagnosticSessionType().is_bound()) return FALSE;
+if(!single_value->field_diagnosticSessionType.match(other_value.diagnosticSessionType(), legacy))return FALSE;
+if(!other_value.p2ServerMax().is_bound()) return FALSE;
+if(!single_value->field_p2ServerMax.match(other_value.p2ServerMax(), legacy))return FALSE;
+if(!other_value.p2StarServerMax().is_bound()) return FALSE;
+if(!single_value->field_p2StarServerMax.match(other_value.p2StarServerMax(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.DefaultSessionResponse.");
+}
+return FALSE;
+}
+
+boolean DefaultSessionResponse_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_diagnosticSessionType.is_bound()
+
+ ||single_value->field_p2ServerMax.is_bound()
+
+ ||single_value->field_p2StarServerMax.is_bound()
+;
+}
+
+boolean DefaultSessionResponse_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_diagnosticSessionType.is_value()
+ &&single_value->field_p2ServerMax.is_value()
+ &&single_value->field_p2StarServerMax.is_value();
+}
+
+void DefaultSessionResponse_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+DefaultSessionResponse DefaultSessionResponse_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 @UnifiedDiagnosticServices.DefaultSessionResponse.");
+DefaultSessionResponse ret_val;
+if (single_value->field_diagnosticSessionType.is_bound()) {
+ret_val.diagnosticSessionType() = single_value->field_diagnosticSessionType.valueof();
+}
+if (single_value->field_p2ServerMax.is_bound()) {
+ret_val.p2ServerMax() = single_value->field_p2ServerMax.valueof();
+}
+if (single_value->field_p2StarServerMax.is_bound()) {
+ret_val.p2StarServerMax() = single_value->field_p2StarServerMax.valueof();
+}
+return ret_val;
+}
+
+void DefaultSessionResponse_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.DefaultSessionResponse.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new DefaultSessionResponse_template[list_length];
+}
+
+DefaultSessionResponse_template& DefaultSessionResponse_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.DefaultSessionResponse.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.DefaultSessionResponse.");
+return value_list.list_value[list_index];
+}
+
+BITSTRING_template& DefaultSessionResponse_template::diagnosticSessionType()
+{
+set_specific();
+return single_value->field_diagnosticSessionType;
+}
+
+const BITSTRING_template& DefaultSessionResponse_template::diagnosticSessionType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field diagnosticSessionType of a non-specific template of type @UnifiedDiagnosticServices.DefaultSessionResponse.");
+return single_value->field_diagnosticSessionType;
+}
+
+OCTETSTRING_template& DefaultSessionResponse_template::p2ServerMax()
+{
+set_specific();
+return single_value->field_p2ServerMax;
+}
+
+const OCTETSTRING_template& DefaultSessionResponse_template::p2ServerMax() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field p2ServerMax of a non-specific template of type @UnifiedDiagnosticServices.DefaultSessionResponse.");
+return single_value->field_p2ServerMax;
+}
+
+OCTETSTRING_template& DefaultSessionResponse_template::p2StarServerMax()
+{
+set_specific();
+return single_value->field_p2StarServerMax;
+}
+
+const OCTETSTRING_template& DefaultSessionResponse_template::p2StarServerMax() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field p2StarServerMax of a non-specific template of type @UnifiedDiagnosticServices.DefaultSessionResponse.");
+return single_value->field_p2StarServerMax;
+}
+
+int DefaultSessionResponse_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.DefaultSessionResponse 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 @UnifiedDiagnosticServices.DefaultSessionResponse 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 @UnifiedDiagnosticServices.DefaultSessionResponse containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.DefaultSessionResponse containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.DefaultSessionResponse containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.DefaultSessionResponse containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.DefaultSessionResponse.");
+  }
+  return 0;
+}
+
+void DefaultSessionResponse_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ diagnosticSessionType := ");
+single_value->field_diagnosticSessionType.log();
+TTCN_Logger::log_event_str(", p2ServerMax := ");
+single_value->field_p2ServerMax.log();
+TTCN_Logger::log_event_str(", p2StarServerMax := ");
+single_value->field_p2StarServerMax.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void DefaultSessionResponse_template::log_match(const DefaultSessionResponse& 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_diagnosticSessionType.match(match_value.diagnosticSessionType(), legacy)){
+TTCN_Logger::log_logmatch_info(".diagnosticSessionType");
+single_value->field_diagnosticSessionType.log_match(match_value.diagnosticSessionType(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_p2ServerMax.match(match_value.p2ServerMax(), legacy)){
+TTCN_Logger::log_logmatch_info(".p2ServerMax");
+single_value->field_p2ServerMax.log_match(match_value.p2ServerMax(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_p2StarServerMax.match(match_value.p2StarServerMax(), legacy)){
+TTCN_Logger::log_logmatch_info(".p2StarServerMax");
+single_value->field_p2StarServerMax.log_match(match_value.p2StarServerMax(), 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("{ diagnosticSessionType := ");
+single_value->field_diagnosticSessionType.log_match(match_value.diagnosticSessionType(), legacy);
+TTCN_Logger::log_event_str(", p2ServerMax := ");
+single_value->field_p2ServerMax.log_match(match_value.p2ServerMax(), legacy);
+TTCN_Logger::log_event_str(", p2StarServerMax := ");
+single_value->field_p2StarServerMax.log_match(match_value.p2StarServerMax(), 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 DefaultSessionResponse_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_diagnosticSessionType.encode_text(text_buf);
+single_value->field_p2ServerMax.encode_text(text_buf);
+single_value->field_p2StarServerMax.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 @UnifiedDiagnosticServices.DefaultSessionResponse.");
+}
+}
+
+void DefaultSessionResponse_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_diagnosticSessionType.decode_text(text_buf);
+single_value->field_p2ServerMax.decode_text(text_buf);
+single_value->field_p2StarServerMax.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 DefaultSessionResponse_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 @UnifiedDiagnosticServices.DefaultSessionResponse.");
+}
+}
+
+void DefaultSessionResponse_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: {
+    DefaultSessionResponse_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @UnifiedDiagnosticServices.DefaultSessionResponse 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) diagnosticSessionType().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) p2ServerMax().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) p2StarServerMax().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(), "diagnosticSessionType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          diagnosticSessionType().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(), "p2ServerMax")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          p2ServerMax().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(), "p2StarServerMax")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          p2StarServerMax().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 @UnifiedDiagnosticServices.DefaultSessionResponse: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.DefaultSessionResponse");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void DefaultSessionResponse_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_diagnosticSessionType.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.DefaultSessionResponse");
+single_value->field_p2ServerMax.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.DefaultSessionResponse");
+single_value->field_p2StarServerMax.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.DefaultSessionResponse");
+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 : "@UnifiedDiagnosticServices.DefaultSessionResponse");
+}
+
+boolean DefaultSessionResponse_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean DefaultSessionResponse_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ProgrammingSessionResponse::ProgrammingSessionResponse()
+{
+}
+
+ProgrammingSessionResponse::ProgrammingSessionResponse(const BITSTRING& par_diagnosticSessionType,
+    const OCTETSTRING& par_p2ServerMax,
+    const OCTETSTRING& par_p2StarServerMax)
+  :   field_diagnosticSessionType(par_diagnosticSessionType),
+  field_p2ServerMax(par_p2ServerMax),
+  field_p2StarServerMax(par_p2StarServerMax)
+{
+}
+
+ProgrammingSessionResponse::ProgrammingSessionResponse(const ProgrammingSessionResponse& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.ProgrammingSessionResponse.");
+if (other_value.diagnosticSessionType().is_bound()) field_diagnosticSessionType = other_value.diagnosticSessionType();
+else field_diagnosticSessionType.clean_up();
+if (other_value.p2ServerMax().is_bound()) field_p2ServerMax = other_value.p2ServerMax();
+else field_p2ServerMax.clean_up();
+if (other_value.p2StarServerMax().is_bound()) field_p2StarServerMax = other_value.p2StarServerMax();
+else field_p2StarServerMax.clean_up();
+}
+
+void ProgrammingSessionResponse::clean_up()
+{
+field_diagnosticSessionType.clean_up();
+field_p2ServerMax.clean_up();
+field_p2StarServerMax.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ProgrammingSessionResponse::get_descriptor() const { return &ProgrammingSessionResponse_descr_; }
+ProgrammingSessionResponse& ProgrammingSessionResponse::operator=(const ProgrammingSessionResponse& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.ProgrammingSessionResponse.");
+  if (other_value.diagnosticSessionType().is_bound()) field_diagnosticSessionType = other_value.diagnosticSessionType();
+  else field_diagnosticSessionType.clean_up();
+  if (other_value.p2ServerMax().is_bound()) field_p2ServerMax = other_value.p2ServerMax();
+  else field_p2ServerMax.clean_up();
+  if (other_value.p2StarServerMax().is_bound()) field_p2StarServerMax = other_value.p2StarServerMax();
+  else field_p2StarServerMax.clean_up();
+}
+return *this;
+}
+
+boolean ProgrammingSessionResponse::operator==(const ProgrammingSessionResponse& other_value) const
+{
+return field_diagnosticSessionType==other_value.field_diagnosticSessionType
+  && field_p2ServerMax==other_value.field_p2ServerMax
+  && field_p2StarServerMax==other_value.field_p2StarServerMax;
+}
+
+boolean ProgrammingSessionResponse::is_bound() const
+{
+return (field_diagnosticSessionType.is_bound())
+  || (field_p2ServerMax.is_bound())
+  || (field_p2StarServerMax.is_bound());
+}
+boolean ProgrammingSessionResponse::is_value() const
+{
+return field_diagnosticSessionType.is_value()
+  && field_p2ServerMax.is_value()
+  && field_p2StarServerMax.is_value();
+}
+void ProgrammingSessionResponse::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ diagnosticSessionType := ");
+field_diagnosticSessionType.log();
+TTCN_Logger::log_event_str(", p2ServerMax := ");
+field_p2ServerMax.log();
+TTCN_Logger::log_event_str(", p2StarServerMax := ");
+field_p2StarServerMax.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ProgrammingSessionResponse::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 @UnifiedDiagnosticServices.ProgrammingSessionResponse 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) diagnosticSessionType().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) p2ServerMax().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) p2StarServerMax().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(), "diagnosticSessionType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          diagnosticSessionType().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(), "p2ServerMax")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          p2ServerMax().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(), "p2StarServerMax")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          p2StarServerMax().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 @UnifiedDiagnosticServices.ProgrammingSessionResponse: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.ProgrammingSessionResponse");
+  }
+}
+
+void ProgrammingSessionResponse::set_implicit_omit()
+{
+if (diagnosticSessionType().is_bound()) diagnosticSessionType().set_implicit_omit();
+if (p2ServerMax().is_bound()) p2ServerMax().set_implicit_omit();
+if (p2StarServerMax().is_bound()) p2StarServerMax().set_implicit_omit();
+}
+
+void ProgrammingSessionResponse::encode_text(Text_Buf& text_buf) const
+{
+field_diagnosticSessionType.encode_text(text_buf);
+field_p2ServerMax.encode_text(text_buf);
+field_p2StarServerMax.encode_text(text_buf);
+}
+
+void ProgrammingSessionResponse::decode_text(Text_Buf& text_buf)
+{
+field_diagnosticSessionType.decode_text(text_buf);
+field_p2ServerMax.decode_text(text_buf);
+field_p2StarServerMax.decode_text(text_buf);
+}
+
+void ProgrammingSessionResponse::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ProgrammingSessionResponse::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ProgrammingSessionResponse::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, ProgrammingSessionResponse_diagnosticSessionType_descr_.raw->forceomit);
+  decoded_field_length = field_diagnosticSessionType.RAW_decode(ProgrammingSessionResponse_diagnosticSessionType_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, ProgrammingSessionResponse_p2ServerMax_descr_.raw->forceomit);
+  decoded_field_length = field_p2ServerMax.RAW_decode(ProgrammingSessionResponse_p2ServerMax_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, ProgrammingSessionResponse_p2StarServerMax_descr_.raw->forceomit);
+  decoded_field_length = field_p2StarServerMax.RAW_decode(ProgrammingSessionResponse_p2StarServerMax_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 ProgrammingSessionResponse::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, ProgrammingSessionResponse_diagnosticSessionType_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ProgrammingSessionResponse_p2ServerMax_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ProgrammingSessionResponse_p2StarServerMax_descr_.raw);
+  encoded_length += field_diagnosticSessionType.RAW_encode(ProgrammingSessionResponse_diagnosticSessionType_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_p2ServerMax.RAW_encode(ProgrammingSessionResponse_p2ServerMax_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_p2StarServerMax.RAW_encode(ProgrammingSessionResponse_p2StarServerMax_descr_, *myleaf.body.node.nodes[2]);
+  return myleaf.length = encoded_length;
+}
+
+struct ProgrammingSessionResponse_template::single_value_struct {
+BITSTRING_template field_diagnosticSessionType;
+OCTETSTRING_template field_p2ServerMax;
+OCTETSTRING_template field_p2StarServerMax;
+};
+
+void ProgrammingSessionResponse_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_diagnosticSessionType = ANY_VALUE;
+single_value->field_p2ServerMax = ANY_VALUE;
+single_value->field_p2StarServerMax = ANY_VALUE;
+}
+}
+}
+
+void ProgrammingSessionResponse_template::copy_value(const ProgrammingSessionResponse& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.diagnosticSessionType().is_bound()) {
+  single_value->field_diagnosticSessionType = other_value.diagnosticSessionType();
+} else {
+  single_value->field_diagnosticSessionType.clean_up();
+}
+if (other_value.p2ServerMax().is_bound()) {
+  single_value->field_p2ServerMax = other_value.p2ServerMax();
+} else {
+  single_value->field_p2ServerMax.clean_up();
+}
+if (other_value.p2StarServerMax().is_bound()) {
+  single_value->field_p2StarServerMax = other_value.p2StarServerMax();
+} else {
+  single_value->field_p2StarServerMax.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ProgrammingSessionResponse_template::copy_template(const ProgrammingSessionResponse_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.diagnosticSessionType().get_selection()) {
+single_value->field_diagnosticSessionType = other_value.diagnosticSessionType();
+} else {
+single_value->field_diagnosticSessionType.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.p2ServerMax().get_selection()) {
+single_value->field_p2ServerMax = other_value.p2ServerMax();
+} else {
+single_value->field_p2ServerMax.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.p2StarServerMax().get_selection()) {
+single_value->field_p2StarServerMax = other_value.p2StarServerMax();
+} else {
+single_value->field_p2StarServerMax.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ProgrammingSessionResponse_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.ProgrammingSessionResponse.");
+break;
+}
+set_selection(other_value);
+}
+
+ProgrammingSessionResponse_template::ProgrammingSessionResponse_template()
+{
+}
+
+ProgrammingSessionResponse_template::ProgrammingSessionResponse_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ProgrammingSessionResponse_template::ProgrammingSessionResponse_template(const ProgrammingSessionResponse& other_value)
+{
+copy_value(other_value);
+}
+
+ProgrammingSessionResponse_template::ProgrammingSessionResponse_template(const OPTIONAL<ProgrammingSessionResponse>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ProgrammingSessionResponse&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.ProgrammingSessionResponse from an unbound optional field.");
+}
+}
+
+ProgrammingSessionResponse_template::ProgrammingSessionResponse_template(const ProgrammingSessionResponse_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ProgrammingSessionResponse_template::~ProgrammingSessionResponse_template()
+{
+clean_up();
+}
+
+ProgrammingSessionResponse_template& ProgrammingSessionResponse_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ProgrammingSessionResponse_template& ProgrammingSessionResponse_template::operator=(const ProgrammingSessionResponse& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ProgrammingSessionResponse_template& ProgrammingSessionResponse_template::operator=(const OPTIONAL<ProgrammingSessionResponse>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ProgrammingSessionResponse&)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 @UnifiedDiagnosticServices.ProgrammingSessionResponse.");
+}
+return *this;
+}
+
+ProgrammingSessionResponse_template& ProgrammingSessionResponse_template::operator=(const ProgrammingSessionResponse_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ProgrammingSessionResponse_template::match(const ProgrammingSessionResponse& 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.diagnosticSessionType().is_bound()) return FALSE;
+if(!single_value->field_diagnosticSessionType.match(other_value.diagnosticSessionType(), legacy))return FALSE;
+if(!other_value.p2ServerMax().is_bound()) return FALSE;
+if(!single_value->field_p2ServerMax.match(other_value.p2ServerMax(), legacy))return FALSE;
+if(!other_value.p2StarServerMax().is_bound()) return FALSE;
+if(!single_value->field_p2StarServerMax.match(other_value.p2StarServerMax(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.ProgrammingSessionResponse.");
+}
+return FALSE;
+}
+
+boolean ProgrammingSessionResponse_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_diagnosticSessionType.is_bound()
+
+ ||single_value->field_p2ServerMax.is_bound()
+
+ ||single_value->field_p2StarServerMax.is_bound()
+;
+}
+
+boolean ProgrammingSessionResponse_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_diagnosticSessionType.is_value()
+ &&single_value->field_p2ServerMax.is_value()
+ &&single_value->field_p2StarServerMax.is_value();
+}
+
+void ProgrammingSessionResponse_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ProgrammingSessionResponse ProgrammingSessionResponse_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 @UnifiedDiagnosticServices.ProgrammingSessionResponse.");
+ProgrammingSessionResponse ret_val;
+if (single_value->field_diagnosticSessionType.is_bound()) {
+ret_val.diagnosticSessionType() = single_value->field_diagnosticSessionType.valueof();
+}
+if (single_value->field_p2ServerMax.is_bound()) {
+ret_val.p2ServerMax() = single_value->field_p2ServerMax.valueof();
+}
+if (single_value->field_p2StarServerMax.is_bound()) {
+ret_val.p2StarServerMax() = single_value->field_p2StarServerMax.valueof();
+}
+return ret_val;
+}
+
+void ProgrammingSessionResponse_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.ProgrammingSessionResponse.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ProgrammingSessionResponse_template[list_length];
+}
+
+ProgrammingSessionResponse_template& ProgrammingSessionResponse_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.ProgrammingSessionResponse.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.ProgrammingSessionResponse.");
+return value_list.list_value[list_index];
+}
+
+BITSTRING_template& ProgrammingSessionResponse_template::diagnosticSessionType()
+{
+set_specific();
+return single_value->field_diagnosticSessionType;
+}
+
+const BITSTRING_template& ProgrammingSessionResponse_template::diagnosticSessionType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field diagnosticSessionType of a non-specific template of type @UnifiedDiagnosticServices.ProgrammingSessionResponse.");
+return single_value->field_diagnosticSessionType;
+}
+
+OCTETSTRING_template& ProgrammingSessionResponse_template::p2ServerMax()
+{
+set_specific();
+return single_value->field_p2ServerMax;
+}
+
+const OCTETSTRING_template& ProgrammingSessionResponse_template::p2ServerMax() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field p2ServerMax of a non-specific template of type @UnifiedDiagnosticServices.ProgrammingSessionResponse.");
+return single_value->field_p2ServerMax;
+}
+
+OCTETSTRING_template& ProgrammingSessionResponse_template::p2StarServerMax()
+{
+set_specific();
+return single_value->field_p2StarServerMax;
+}
+
+const OCTETSTRING_template& ProgrammingSessionResponse_template::p2StarServerMax() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field p2StarServerMax of a non-specific template of type @UnifiedDiagnosticServices.ProgrammingSessionResponse.");
+return single_value->field_p2StarServerMax;
+}
+
+int ProgrammingSessionResponse_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ProgrammingSessionResponse 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 @UnifiedDiagnosticServices.ProgrammingSessionResponse 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 @UnifiedDiagnosticServices.ProgrammingSessionResponse containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ProgrammingSessionResponse containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ProgrammingSessionResponse containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ProgrammingSessionResponse containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.ProgrammingSessionResponse.");
+  }
+  return 0;
+}
+
+void ProgrammingSessionResponse_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ diagnosticSessionType := ");
+single_value->field_diagnosticSessionType.log();
+TTCN_Logger::log_event_str(", p2ServerMax := ");
+single_value->field_p2ServerMax.log();
+TTCN_Logger::log_event_str(", p2StarServerMax := ");
+single_value->field_p2StarServerMax.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ProgrammingSessionResponse_template::log_match(const ProgrammingSessionResponse& 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_diagnosticSessionType.match(match_value.diagnosticSessionType(), legacy)){
+TTCN_Logger::log_logmatch_info(".diagnosticSessionType");
+single_value->field_diagnosticSessionType.log_match(match_value.diagnosticSessionType(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_p2ServerMax.match(match_value.p2ServerMax(), legacy)){
+TTCN_Logger::log_logmatch_info(".p2ServerMax");
+single_value->field_p2ServerMax.log_match(match_value.p2ServerMax(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_p2StarServerMax.match(match_value.p2StarServerMax(), legacy)){
+TTCN_Logger::log_logmatch_info(".p2StarServerMax");
+single_value->field_p2StarServerMax.log_match(match_value.p2StarServerMax(), 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("{ diagnosticSessionType := ");
+single_value->field_diagnosticSessionType.log_match(match_value.diagnosticSessionType(), legacy);
+TTCN_Logger::log_event_str(", p2ServerMax := ");
+single_value->field_p2ServerMax.log_match(match_value.p2ServerMax(), legacy);
+TTCN_Logger::log_event_str(", p2StarServerMax := ");
+single_value->field_p2StarServerMax.log_match(match_value.p2StarServerMax(), 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 ProgrammingSessionResponse_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_diagnosticSessionType.encode_text(text_buf);
+single_value->field_p2ServerMax.encode_text(text_buf);
+single_value->field_p2StarServerMax.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 @UnifiedDiagnosticServices.ProgrammingSessionResponse.");
+}
+}
+
+void ProgrammingSessionResponse_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_diagnosticSessionType.decode_text(text_buf);
+single_value->field_p2ServerMax.decode_text(text_buf);
+single_value->field_p2StarServerMax.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 ProgrammingSessionResponse_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 @UnifiedDiagnosticServices.ProgrammingSessionResponse.");
+}
+}
+
+void ProgrammingSessionResponse_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: {
+    ProgrammingSessionResponse_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @UnifiedDiagnosticServices.ProgrammingSessionResponse 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) diagnosticSessionType().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) p2ServerMax().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) p2StarServerMax().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(), "diagnosticSessionType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          diagnosticSessionType().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(), "p2ServerMax")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          p2ServerMax().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(), "p2StarServerMax")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          p2StarServerMax().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 @UnifiedDiagnosticServices.ProgrammingSessionResponse: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.ProgrammingSessionResponse");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ProgrammingSessionResponse_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_diagnosticSessionType.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.ProgrammingSessionResponse");
+single_value->field_p2ServerMax.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.ProgrammingSessionResponse");
+single_value->field_p2StarServerMax.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.ProgrammingSessionResponse");
+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 : "@UnifiedDiagnosticServices.ProgrammingSessionResponse");
+}
+
+boolean ProgrammingSessionResponse_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ProgrammingSessionResponse_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ExtendedDiagnosticSessionResponse::ExtendedDiagnosticSessionResponse()
+{
+}
+
+ExtendedDiagnosticSessionResponse::ExtendedDiagnosticSessionResponse(const BITSTRING& par_diagnosticSessionType,
+    const OCTETSTRING& par_p2ServerMax,
+    const OCTETSTRING& par_p2StarServerMax)
+  :   field_diagnosticSessionType(par_diagnosticSessionType),
+  field_p2ServerMax(par_p2ServerMax),
+  field_p2StarServerMax(par_p2StarServerMax)
+{
+}
+
+ExtendedDiagnosticSessionResponse::ExtendedDiagnosticSessionResponse(const ExtendedDiagnosticSessionResponse& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.ExtendedDiagnosticSessionResponse.");
+if (other_value.diagnosticSessionType().is_bound()) field_diagnosticSessionType = other_value.diagnosticSessionType();
+else field_diagnosticSessionType.clean_up();
+if (other_value.p2ServerMax().is_bound()) field_p2ServerMax = other_value.p2ServerMax();
+else field_p2ServerMax.clean_up();
+if (other_value.p2StarServerMax().is_bound()) field_p2StarServerMax = other_value.p2StarServerMax();
+else field_p2StarServerMax.clean_up();
+}
+
+void ExtendedDiagnosticSessionResponse::clean_up()
+{
+field_diagnosticSessionType.clean_up();
+field_p2ServerMax.clean_up();
+field_p2StarServerMax.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ExtendedDiagnosticSessionResponse::get_descriptor() const { return &ExtendedDiagnosticSessionResponse_descr_; }
+ExtendedDiagnosticSessionResponse& ExtendedDiagnosticSessionResponse::operator=(const ExtendedDiagnosticSessionResponse& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.ExtendedDiagnosticSessionResponse.");
+  if (other_value.diagnosticSessionType().is_bound()) field_diagnosticSessionType = other_value.diagnosticSessionType();
+  else field_diagnosticSessionType.clean_up();
+  if (other_value.p2ServerMax().is_bound()) field_p2ServerMax = other_value.p2ServerMax();
+  else field_p2ServerMax.clean_up();
+  if (other_value.p2StarServerMax().is_bound()) field_p2StarServerMax = other_value.p2StarServerMax();
+  else field_p2StarServerMax.clean_up();
+}
+return *this;
+}
+
+boolean ExtendedDiagnosticSessionResponse::operator==(const ExtendedDiagnosticSessionResponse& other_value) const
+{
+return field_diagnosticSessionType==other_value.field_diagnosticSessionType
+  && field_p2ServerMax==other_value.field_p2ServerMax
+  && field_p2StarServerMax==other_value.field_p2StarServerMax;
+}
+
+boolean ExtendedDiagnosticSessionResponse::is_bound() const
+{
+return (field_diagnosticSessionType.is_bound())
+  || (field_p2ServerMax.is_bound())
+  || (field_p2StarServerMax.is_bound());
+}
+boolean ExtendedDiagnosticSessionResponse::is_value() const
+{
+return field_diagnosticSessionType.is_value()
+  && field_p2ServerMax.is_value()
+  && field_p2StarServerMax.is_value();
+}
+void ExtendedDiagnosticSessionResponse::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ diagnosticSessionType := ");
+field_diagnosticSessionType.log();
+TTCN_Logger::log_event_str(", p2ServerMax := ");
+field_p2ServerMax.log();
+TTCN_Logger::log_event_str(", p2StarServerMax := ");
+field_p2StarServerMax.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ExtendedDiagnosticSessionResponse::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 @UnifiedDiagnosticServices.ExtendedDiagnosticSessionResponse 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) diagnosticSessionType().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) p2ServerMax().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) p2StarServerMax().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(), "diagnosticSessionType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          diagnosticSessionType().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(), "p2ServerMax")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          p2ServerMax().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(), "p2StarServerMax")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          p2StarServerMax().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 @UnifiedDiagnosticServices.ExtendedDiagnosticSessionResponse: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.ExtendedDiagnosticSessionResponse");
+  }
+}
+
+void ExtendedDiagnosticSessionResponse::set_implicit_omit()
+{
+if (diagnosticSessionType().is_bound()) diagnosticSessionType().set_implicit_omit();
+if (p2ServerMax().is_bound()) p2ServerMax().set_implicit_omit();
+if (p2StarServerMax().is_bound()) p2StarServerMax().set_implicit_omit();
+}
+
+void ExtendedDiagnosticSessionResponse::encode_text(Text_Buf& text_buf) const
+{
+field_diagnosticSessionType.encode_text(text_buf);
+field_p2ServerMax.encode_text(text_buf);
+field_p2StarServerMax.encode_text(text_buf);
+}
+
+void ExtendedDiagnosticSessionResponse::decode_text(Text_Buf& text_buf)
+{
+field_diagnosticSessionType.decode_text(text_buf);
+field_p2ServerMax.decode_text(text_buf);
+field_p2StarServerMax.decode_text(text_buf);
+}
+
+void ExtendedDiagnosticSessionResponse::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ExtendedDiagnosticSessionResponse::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ExtendedDiagnosticSessionResponse::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, ExtendedDiagnosticSessionResponse_diagnosticSessionType_descr_.raw->forceomit);
+  decoded_field_length = field_diagnosticSessionType.RAW_decode(ExtendedDiagnosticSessionResponse_diagnosticSessionType_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, ExtendedDiagnosticSessionResponse_p2ServerMax_descr_.raw->forceomit);
+  decoded_field_length = field_p2ServerMax.RAW_decode(ExtendedDiagnosticSessionResponse_p2ServerMax_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, ExtendedDiagnosticSessionResponse_p2StarServerMax_descr_.raw->forceomit);
+  decoded_field_length = field_p2StarServerMax.RAW_decode(ExtendedDiagnosticSessionResponse_p2StarServerMax_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 ExtendedDiagnosticSessionResponse::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, ExtendedDiagnosticSessionResponse_diagnosticSessionType_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ExtendedDiagnosticSessionResponse_p2ServerMax_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ExtendedDiagnosticSessionResponse_p2StarServerMax_descr_.raw);
+  encoded_length += field_diagnosticSessionType.RAW_encode(ExtendedDiagnosticSessionResponse_diagnosticSessionType_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_p2ServerMax.RAW_encode(ExtendedDiagnosticSessionResponse_p2ServerMax_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_p2StarServerMax.RAW_encode(ExtendedDiagnosticSessionResponse_p2StarServerMax_descr_, *myleaf.body.node.nodes[2]);
+  return myleaf.length = encoded_length;
+}
+
+struct ExtendedDiagnosticSessionResponse_template::single_value_struct {
+BITSTRING_template field_diagnosticSessionType;
+OCTETSTRING_template field_p2ServerMax;
+OCTETSTRING_template field_p2StarServerMax;
+};
+
+void ExtendedDiagnosticSessionResponse_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_diagnosticSessionType = ANY_VALUE;
+single_value->field_p2ServerMax = ANY_VALUE;
+single_value->field_p2StarServerMax = ANY_VALUE;
+}
+}
+}
+
+void ExtendedDiagnosticSessionResponse_template::copy_value(const ExtendedDiagnosticSessionResponse& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.diagnosticSessionType().is_bound()) {
+  single_value->field_diagnosticSessionType = other_value.diagnosticSessionType();
+} else {
+  single_value->field_diagnosticSessionType.clean_up();
+}
+if (other_value.p2ServerMax().is_bound()) {
+  single_value->field_p2ServerMax = other_value.p2ServerMax();
+} else {
+  single_value->field_p2ServerMax.clean_up();
+}
+if (other_value.p2StarServerMax().is_bound()) {
+  single_value->field_p2StarServerMax = other_value.p2StarServerMax();
+} else {
+  single_value->field_p2StarServerMax.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ExtendedDiagnosticSessionResponse_template::copy_template(const ExtendedDiagnosticSessionResponse_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.diagnosticSessionType().get_selection()) {
+single_value->field_diagnosticSessionType = other_value.diagnosticSessionType();
+} else {
+single_value->field_diagnosticSessionType.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.p2ServerMax().get_selection()) {
+single_value->field_p2ServerMax = other_value.p2ServerMax();
+} else {
+single_value->field_p2ServerMax.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.p2StarServerMax().get_selection()) {
+single_value->field_p2StarServerMax = other_value.p2StarServerMax();
+} else {
+single_value->field_p2StarServerMax.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ExtendedDiagnosticSessionResponse_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.ExtendedDiagnosticSessionResponse.");
+break;
+}
+set_selection(other_value);
+}
+
+ExtendedDiagnosticSessionResponse_template::ExtendedDiagnosticSessionResponse_template()
+{
+}
+
+ExtendedDiagnosticSessionResponse_template::ExtendedDiagnosticSessionResponse_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ExtendedDiagnosticSessionResponse_template::ExtendedDiagnosticSessionResponse_template(const ExtendedDiagnosticSessionResponse& other_value)
+{
+copy_value(other_value);
+}
+
+ExtendedDiagnosticSessionResponse_template::ExtendedDiagnosticSessionResponse_template(const OPTIONAL<ExtendedDiagnosticSessionResponse>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExtendedDiagnosticSessionResponse&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.ExtendedDiagnosticSessionResponse from an unbound optional field.");
+}
+}
+
+ExtendedDiagnosticSessionResponse_template::ExtendedDiagnosticSessionResponse_template(const ExtendedDiagnosticSessionResponse_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ExtendedDiagnosticSessionResponse_template::~ExtendedDiagnosticSessionResponse_template()
+{
+clean_up();
+}
+
+ExtendedDiagnosticSessionResponse_template& ExtendedDiagnosticSessionResponse_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ExtendedDiagnosticSessionResponse_template& ExtendedDiagnosticSessionResponse_template::operator=(const ExtendedDiagnosticSessionResponse& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ExtendedDiagnosticSessionResponse_template& ExtendedDiagnosticSessionResponse_template::operator=(const OPTIONAL<ExtendedDiagnosticSessionResponse>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ExtendedDiagnosticSessionResponse&)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 @UnifiedDiagnosticServices.ExtendedDiagnosticSessionResponse.");
+}
+return *this;
+}
+
+ExtendedDiagnosticSessionResponse_template& ExtendedDiagnosticSessionResponse_template::operator=(const ExtendedDiagnosticSessionResponse_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ExtendedDiagnosticSessionResponse_template::match(const ExtendedDiagnosticSessionResponse& 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.diagnosticSessionType().is_bound()) return FALSE;
+if(!single_value->field_diagnosticSessionType.match(other_value.diagnosticSessionType(), legacy))return FALSE;
+if(!other_value.p2ServerMax().is_bound()) return FALSE;
+if(!single_value->field_p2ServerMax.match(other_value.p2ServerMax(), legacy))return FALSE;
+if(!other_value.p2StarServerMax().is_bound()) return FALSE;
+if(!single_value->field_p2StarServerMax.match(other_value.p2StarServerMax(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.ExtendedDiagnosticSessionResponse.");
+}
+return FALSE;
+}
+
+boolean ExtendedDiagnosticSessionResponse_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_diagnosticSessionType.is_bound()
+
+ ||single_value->field_p2ServerMax.is_bound()
+
+ ||single_value->field_p2StarServerMax.is_bound()
+;
+}
+
+boolean ExtendedDiagnosticSessionResponse_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_diagnosticSessionType.is_value()
+ &&single_value->field_p2ServerMax.is_value()
+ &&single_value->field_p2StarServerMax.is_value();
+}
+
+void ExtendedDiagnosticSessionResponse_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ExtendedDiagnosticSessionResponse ExtendedDiagnosticSessionResponse_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 @UnifiedDiagnosticServices.ExtendedDiagnosticSessionResponse.");
+ExtendedDiagnosticSessionResponse ret_val;
+if (single_value->field_diagnosticSessionType.is_bound()) {
+ret_val.diagnosticSessionType() = single_value->field_diagnosticSessionType.valueof();
+}
+if (single_value->field_p2ServerMax.is_bound()) {
+ret_val.p2ServerMax() = single_value->field_p2ServerMax.valueof();
+}
+if (single_value->field_p2StarServerMax.is_bound()) {
+ret_val.p2StarServerMax() = single_value->field_p2StarServerMax.valueof();
+}
+return ret_val;
+}
+
+void ExtendedDiagnosticSessionResponse_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.ExtendedDiagnosticSessionResponse.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ExtendedDiagnosticSessionResponse_template[list_length];
+}
+
+ExtendedDiagnosticSessionResponse_template& ExtendedDiagnosticSessionResponse_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.ExtendedDiagnosticSessionResponse.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.ExtendedDiagnosticSessionResponse.");
+return value_list.list_value[list_index];
+}
+
+BITSTRING_template& ExtendedDiagnosticSessionResponse_template::diagnosticSessionType()
+{
+set_specific();
+return single_value->field_diagnosticSessionType;
+}
+
+const BITSTRING_template& ExtendedDiagnosticSessionResponse_template::diagnosticSessionType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field diagnosticSessionType of a non-specific template of type @UnifiedDiagnosticServices.ExtendedDiagnosticSessionResponse.");
+return single_value->field_diagnosticSessionType;
+}
+
+OCTETSTRING_template& ExtendedDiagnosticSessionResponse_template::p2ServerMax()
+{
+set_specific();
+return single_value->field_p2ServerMax;
+}
+
+const OCTETSTRING_template& ExtendedDiagnosticSessionResponse_template::p2ServerMax() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field p2ServerMax of a non-specific template of type @UnifiedDiagnosticServices.ExtendedDiagnosticSessionResponse.");
+return single_value->field_p2ServerMax;
+}
+
+OCTETSTRING_template& ExtendedDiagnosticSessionResponse_template::p2StarServerMax()
+{
+set_specific();
+return single_value->field_p2StarServerMax;
+}
+
+const OCTETSTRING_template& ExtendedDiagnosticSessionResponse_template::p2StarServerMax() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field p2StarServerMax of a non-specific template of type @UnifiedDiagnosticServices.ExtendedDiagnosticSessionResponse.");
+return single_value->field_p2StarServerMax;
+}
+
+int ExtendedDiagnosticSessionResponse_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ExtendedDiagnosticSessionResponse 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 @UnifiedDiagnosticServices.ExtendedDiagnosticSessionResponse 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 @UnifiedDiagnosticServices.ExtendedDiagnosticSessionResponse containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ExtendedDiagnosticSessionResponse containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ExtendedDiagnosticSessionResponse containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ExtendedDiagnosticSessionResponse containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.ExtendedDiagnosticSessionResponse.");
+  }
+  return 0;
+}
+
+void ExtendedDiagnosticSessionResponse_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ diagnosticSessionType := ");
+single_value->field_diagnosticSessionType.log();
+TTCN_Logger::log_event_str(", p2ServerMax := ");
+single_value->field_p2ServerMax.log();
+TTCN_Logger::log_event_str(", p2StarServerMax := ");
+single_value->field_p2StarServerMax.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ExtendedDiagnosticSessionResponse_template::log_match(const ExtendedDiagnosticSessionResponse& 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_diagnosticSessionType.match(match_value.diagnosticSessionType(), legacy)){
+TTCN_Logger::log_logmatch_info(".diagnosticSessionType");
+single_value->field_diagnosticSessionType.log_match(match_value.diagnosticSessionType(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_p2ServerMax.match(match_value.p2ServerMax(), legacy)){
+TTCN_Logger::log_logmatch_info(".p2ServerMax");
+single_value->field_p2ServerMax.log_match(match_value.p2ServerMax(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_p2StarServerMax.match(match_value.p2StarServerMax(), legacy)){
+TTCN_Logger::log_logmatch_info(".p2StarServerMax");
+single_value->field_p2StarServerMax.log_match(match_value.p2StarServerMax(), 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("{ diagnosticSessionType := ");
+single_value->field_diagnosticSessionType.log_match(match_value.diagnosticSessionType(), legacy);
+TTCN_Logger::log_event_str(", p2ServerMax := ");
+single_value->field_p2ServerMax.log_match(match_value.p2ServerMax(), legacy);
+TTCN_Logger::log_event_str(", p2StarServerMax := ");
+single_value->field_p2StarServerMax.log_match(match_value.p2StarServerMax(), 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 ExtendedDiagnosticSessionResponse_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_diagnosticSessionType.encode_text(text_buf);
+single_value->field_p2ServerMax.encode_text(text_buf);
+single_value->field_p2StarServerMax.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 @UnifiedDiagnosticServices.ExtendedDiagnosticSessionResponse.");
+}
+}
+
+void ExtendedDiagnosticSessionResponse_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_diagnosticSessionType.decode_text(text_buf);
+single_value->field_p2ServerMax.decode_text(text_buf);
+single_value->field_p2StarServerMax.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 ExtendedDiagnosticSessionResponse_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 @UnifiedDiagnosticServices.ExtendedDiagnosticSessionResponse.");
+}
+}
+
+void ExtendedDiagnosticSessionResponse_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: {
+    ExtendedDiagnosticSessionResponse_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @UnifiedDiagnosticServices.ExtendedDiagnosticSessionResponse 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) diagnosticSessionType().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) p2ServerMax().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) p2StarServerMax().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(), "diagnosticSessionType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          diagnosticSessionType().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(), "p2ServerMax")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          p2ServerMax().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(), "p2StarServerMax")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          p2StarServerMax().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 @UnifiedDiagnosticServices.ExtendedDiagnosticSessionResponse: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.ExtendedDiagnosticSessionResponse");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ExtendedDiagnosticSessionResponse_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_diagnosticSessionType.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.ExtendedDiagnosticSessionResponse");
+single_value->field_p2ServerMax.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.ExtendedDiagnosticSessionResponse");
+single_value->field_p2StarServerMax.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.ExtendedDiagnosticSessionResponse");
+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 : "@UnifiedDiagnosticServices.ExtendedDiagnosticSessionResponse");
+}
+
+boolean ExtendedDiagnosticSessionResponse_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ExtendedDiagnosticSessionResponse_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+SafetySystemDiagnosticSessionResponse::SafetySystemDiagnosticSessionResponse()
+{
+}
+
+SafetySystemDiagnosticSessionResponse::SafetySystemDiagnosticSessionResponse(const BITSTRING& par_diagnosticSessionType,
+    const OCTETSTRING& par_p2ServerMax,
+    const OCTETSTRING& par_p2StarServerMax)
+  :   field_diagnosticSessionType(par_diagnosticSessionType),
+  field_p2ServerMax(par_p2ServerMax),
+  field_p2StarServerMax(par_p2StarServerMax)
+{
+}
+
+SafetySystemDiagnosticSessionResponse::SafetySystemDiagnosticSessionResponse(const SafetySystemDiagnosticSessionResponse& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionResponse.");
+if (other_value.diagnosticSessionType().is_bound()) field_diagnosticSessionType = other_value.diagnosticSessionType();
+else field_diagnosticSessionType.clean_up();
+if (other_value.p2ServerMax().is_bound()) field_p2ServerMax = other_value.p2ServerMax();
+else field_p2ServerMax.clean_up();
+if (other_value.p2StarServerMax().is_bound()) field_p2StarServerMax = other_value.p2StarServerMax();
+else field_p2StarServerMax.clean_up();
+}
+
+void SafetySystemDiagnosticSessionResponse::clean_up()
+{
+field_diagnosticSessionType.clean_up();
+field_p2ServerMax.clean_up();
+field_p2StarServerMax.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SafetySystemDiagnosticSessionResponse::get_descriptor() const { return &SafetySystemDiagnosticSessionResponse_descr_; }
+SafetySystemDiagnosticSessionResponse& SafetySystemDiagnosticSessionResponse::operator=(const SafetySystemDiagnosticSessionResponse& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionResponse.");
+  if (other_value.diagnosticSessionType().is_bound()) field_diagnosticSessionType = other_value.diagnosticSessionType();
+  else field_diagnosticSessionType.clean_up();
+  if (other_value.p2ServerMax().is_bound()) field_p2ServerMax = other_value.p2ServerMax();
+  else field_p2ServerMax.clean_up();
+  if (other_value.p2StarServerMax().is_bound()) field_p2StarServerMax = other_value.p2StarServerMax();
+  else field_p2StarServerMax.clean_up();
+}
+return *this;
+}
+
+boolean SafetySystemDiagnosticSessionResponse::operator==(const SafetySystemDiagnosticSessionResponse& other_value) const
+{
+return field_diagnosticSessionType==other_value.field_diagnosticSessionType
+  && field_p2ServerMax==other_value.field_p2ServerMax
+  && field_p2StarServerMax==other_value.field_p2StarServerMax;
+}
+
+boolean SafetySystemDiagnosticSessionResponse::is_bound() const
+{
+return (field_diagnosticSessionType.is_bound())
+  || (field_p2ServerMax.is_bound())
+  || (field_p2StarServerMax.is_bound());
+}
+boolean SafetySystemDiagnosticSessionResponse::is_value() const
+{
+return field_diagnosticSessionType.is_value()
+  && field_p2ServerMax.is_value()
+  && field_p2StarServerMax.is_value();
+}
+void SafetySystemDiagnosticSessionResponse::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ diagnosticSessionType := ");
+field_diagnosticSessionType.log();
+TTCN_Logger::log_event_str(", p2ServerMax := ");
+field_p2ServerMax.log();
+TTCN_Logger::log_event_str(", p2StarServerMax := ");
+field_p2StarServerMax.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SafetySystemDiagnosticSessionResponse::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 @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionResponse 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) diagnosticSessionType().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) p2ServerMax().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) p2StarServerMax().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(), "diagnosticSessionType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          diagnosticSessionType().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(), "p2ServerMax")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          p2ServerMax().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(), "p2StarServerMax")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          p2StarServerMax().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 @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionResponse: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.SafetySystemDiagnosticSessionResponse");
+  }
+}
+
+void SafetySystemDiagnosticSessionResponse::set_implicit_omit()
+{
+if (diagnosticSessionType().is_bound()) diagnosticSessionType().set_implicit_omit();
+if (p2ServerMax().is_bound()) p2ServerMax().set_implicit_omit();
+if (p2StarServerMax().is_bound()) p2StarServerMax().set_implicit_omit();
+}
+
+void SafetySystemDiagnosticSessionResponse::encode_text(Text_Buf& text_buf) const
+{
+field_diagnosticSessionType.encode_text(text_buf);
+field_p2ServerMax.encode_text(text_buf);
+field_p2StarServerMax.encode_text(text_buf);
+}
+
+void SafetySystemDiagnosticSessionResponse::decode_text(Text_Buf& text_buf)
+{
+field_diagnosticSessionType.decode_text(text_buf);
+field_p2ServerMax.decode_text(text_buf);
+field_p2StarServerMax.decode_text(text_buf);
+}
+
+void SafetySystemDiagnosticSessionResponse::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void SafetySystemDiagnosticSessionResponse::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int SafetySystemDiagnosticSessionResponse::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, SafetySystemDiagnosticSessionResponse_diagnosticSessionType_descr_.raw->forceomit);
+  decoded_field_length = field_diagnosticSessionType.RAW_decode(SafetySystemDiagnosticSessionResponse_diagnosticSessionType_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, SafetySystemDiagnosticSessionResponse_p2ServerMax_descr_.raw->forceomit);
+  decoded_field_length = field_p2ServerMax.RAW_decode(SafetySystemDiagnosticSessionResponse_p2ServerMax_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, SafetySystemDiagnosticSessionResponse_p2StarServerMax_descr_.raw->forceomit);
+  decoded_field_length = field_p2StarServerMax.RAW_decode(SafetySystemDiagnosticSessionResponse_p2StarServerMax_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 SafetySystemDiagnosticSessionResponse::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, SafetySystemDiagnosticSessionResponse_diagnosticSessionType_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, SafetySystemDiagnosticSessionResponse_p2ServerMax_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, SafetySystemDiagnosticSessionResponse_p2StarServerMax_descr_.raw);
+  encoded_length += field_diagnosticSessionType.RAW_encode(SafetySystemDiagnosticSessionResponse_diagnosticSessionType_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_p2ServerMax.RAW_encode(SafetySystemDiagnosticSessionResponse_p2ServerMax_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_p2StarServerMax.RAW_encode(SafetySystemDiagnosticSessionResponse_p2StarServerMax_descr_, *myleaf.body.node.nodes[2]);
+  return myleaf.length = encoded_length;
+}
+
+struct SafetySystemDiagnosticSessionResponse_template::single_value_struct {
+BITSTRING_template field_diagnosticSessionType;
+OCTETSTRING_template field_p2ServerMax;
+OCTETSTRING_template field_p2StarServerMax;
+};
+
+void SafetySystemDiagnosticSessionResponse_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_diagnosticSessionType = ANY_VALUE;
+single_value->field_p2ServerMax = ANY_VALUE;
+single_value->field_p2StarServerMax = ANY_VALUE;
+}
+}
+}
+
+void SafetySystemDiagnosticSessionResponse_template::copy_value(const SafetySystemDiagnosticSessionResponse& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.diagnosticSessionType().is_bound()) {
+  single_value->field_diagnosticSessionType = other_value.diagnosticSessionType();
+} else {
+  single_value->field_diagnosticSessionType.clean_up();
+}
+if (other_value.p2ServerMax().is_bound()) {
+  single_value->field_p2ServerMax = other_value.p2ServerMax();
+} else {
+  single_value->field_p2ServerMax.clean_up();
+}
+if (other_value.p2StarServerMax().is_bound()) {
+  single_value->field_p2StarServerMax = other_value.p2StarServerMax();
+} else {
+  single_value->field_p2StarServerMax.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SafetySystemDiagnosticSessionResponse_template::copy_template(const SafetySystemDiagnosticSessionResponse_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.diagnosticSessionType().get_selection()) {
+single_value->field_diagnosticSessionType = other_value.diagnosticSessionType();
+} else {
+single_value->field_diagnosticSessionType.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.p2ServerMax().get_selection()) {
+single_value->field_p2ServerMax = other_value.p2ServerMax();
+} else {
+single_value->field_p2ServerMax.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.p2StarServerMax().get_selection()) {
+single_value->field_p2StarServerMax = other_value.p2StarServerMax();
+} else {
+single_value->field_p2StarServerMax.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SafetySystemDiagnosticSessionResponse_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionResponse.");
+break;
+}
+set_selection(other_value);
+}
+
+SafetySystemDiagnosticSessionResponse_template::SafetySystemDiagnosticSessionResponse_template()
+{
+}
+
+SafetySystemDiagnosticSessionResponse_template::SafetySystemDiagnosticSessionResponse_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SafetySystemDiagnosticSessionResponse_template::SafetySystemDiagnosticSessionResponse_template(const SafetySystemDiagnosticSessionResponse& other_value)
+{
+copy_value(other_value);
+}
+
+SafetySystemDiagnosticSessionResponse_template::SafetySystemDiagnosticSessionResponse_template(const OPTIONAL<SafetySystemDiagnosticSessionResponse>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SafetySystemDiagnosticSessionResponse&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionResponse from an unbound optional field.");
+}
+}
+
+SafetySystemDiagnosticSessionResponse_template::SafetySystemDiagnosticSessionResponse_template(const SafetySystemDiagnosticSessionResponse_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SafetySystemDiagnosticSessionResponse_template::~SafetySystemDiagnosticSessionResponse_template()
+{
+clean_up();
+}
+
+SafetySystemDiagnosticSessionResponse_template& SafetySystemDiagnosticSessionResponse_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SafetySystemDiagnosticSessionResponse_template& SafetySystemDiagnosticSessionResponse_template::operator=(const SafetySystemDiagnosticSessionResponse& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SafetySystemDiagnosticSessionResponse_template& SafetySystemDiagnosticSessionResponse_template::operator=(const OPTIONAL<SafetySystemDiagnosticSessionResponse>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SafetySystemDiagnosticSessionResponse&)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 @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionResponse.");
+}
+return *this;
+}
+
+SafetySystemDiagnosticSessionResponse_template& SafetySystemDiagnosticSessionResponse_template::operator=(const SafetySystemDiagnosticSessionResponse_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SafetySystemDiagnosticSessionResponse_template::match(const SafetySystemDiagnosticSessionResponse& 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.diagnosticSessionType().is_bound()) return FALSE;
+if(!single_value->field_diagnosticSessionType.match(other_value.diagnosticSessionType(), legacy))return FALSE;
+if(!other_value.p2ServerMax().is_bound()) return FALSE;
+if(!single_value->field_p2ServerMax.match(other_value.p2ServerMax(), legacy))return FALSE;
+if(!other_value.p2StarServerMax().is_bound()) return FALSE;
+if(!single_value->field_p2StarServerMax.match(other_value.p2StarServerMax(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionResponse.");
+}
+return FALSE;
+}
+
+boolean SafetySystemDiagnosticSessionResponse_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_diagnosticSessionType.is_bound()
+
+ ||single_value->field_p2ServerMax.is_bound()
+
+ ||single_value->field_p2StarServerMax.is_bound()
+;
+}
+
+boolean SafetySystemDiagnosticSessionResponse_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_diagnosticSessionType.is_value()
+ &&single_value->field_p2ServerMax.is_value()
+ &&single_value->field_p2StarServerMax.is_value();
+}
+
+void SafetySystemDiagnosticSessionResponse_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SafetySystemDiagnosticSessionResponse SafetySystemDiagnosticSessionResponse_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 @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionResponse.");
+SafetySystemDiagnosticSessionResponse ret_val;
+if (single_value->field_diagnosticSessionType.is_bound()) {
+ret_val.diagnosticSessionType() = single_value->field_diagnosticSessionType.valueof();
+}
+if (single_value->field_p2ServerMax.is_bound()) {
+ret_val.p2ServerMax() = single_value->field_p2ServerMax.valueof();
+}
+if (single_value->field_p2StarServerMax.is_bound()) {
+ret_val.p2StarServerMax() = single_value->field_p2StarServerMax.valueof();
+}
+return ret_val;
+}
+
+void SafetySystemDiagnosticSessionResponse_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionResponse.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SafetySystemDiagnosticSessionResponse_template[list_length];
+}
+
+SafetySystemDiagnosticSessionResponse_template& SafetySystemDiagnosticSessionResponse_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionResponse.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionResponse.");
+return value_list.list_value[list_index];
+}
+
+BITSTRING_template& SafetySystemDiagnosticSessionResponse_template::diagnosticSessionType()
+{
+set_specific();
+return single_value->field_diagnosticSessionType;
+}
+
+const BITSTRING_template& SafetySystemDiagnosticSessionResponse_template::diagnosticSessionType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field diagnosticSessionType of a non-specific template of type @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionResponse.");
+return single_value->field_diagnosticSessionType;
+}
+
+OCTETSTRING_template& SafetySystemDiagnosticSessionResponse_template::p2ServerMax()
+{
+set_specific();
+return single_value->field_p2ServerMax;
+}
+
+const OCTETSTRING_template& SafetySystemDiagnosticSessionResponse_template::p2ServerMax() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field p2ServerMax of a non-specific template of type @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionResponse.");
+return single_value->field_p2ServerMax;
+}
+
+OCTETSTRING_template& SafetySystemDiagnosticSessionResponse_template::p2StarServerMax()
+{
+set_specific();
+return single_value->field_p2StarServerMax;
+}
+
+const OCTETSTRING_template& SafetySystemDiagnosticSessionResponse_template::p2StarServerMax() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field p2StarServerMax of a non-specific template of type @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionResponse.");
+return single_value->field_p2StarServerMax;
+}
+
+int SafetySystemDiagnosticSessionResponse_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionResponse 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 @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionResponse 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 @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionResponse containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionResponse containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionResponse containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionResponse containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionResponse.");
+  }
+  return 0;
+}
+
+void SafetySystemDiagnosticSessionResponse_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ diagnosticSessionType := ");
+single_value->field_diagnosticSessionType.log();
+TTCN_Logger::log_event_str(", p2ServerMax := ");
+single_value->field_p2ServerMax.log();
+TTCN_Logger::log_event_str(", p2StarServerMax := ");
+single_value->field_p2StarServerMax.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SafetySystemDiagnosticSessionResponse_template::log_match(const SafetySystemDiagnosticSessionResponse& 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_diagnosticSessionType.match(match_value.diagnosticSessionType(), legacy)){
+TTCN_Logger::log_logmatch_info(".diagnosticSessionType");
+single_value->field_diagnosticSessionType.log_match(match_value.diagnosticSessionType(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_p2ServerMax.match(match_value.p2ServerMax(), legacy)){
+TTCN_Logger::log_logmatch_info(".p2ServerMax");
+single_value->field_p2ServerMax.log_match(match_value.p2ServerMax(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_p2StarServerMax.match(match_value.p2StarServerMax(), legacy)){
+TTCN_Logger::log_logmatch_info(".p2StarServerMax");
+single_value->field_p2StarServerMax.log_match(match_value.p2StarServerMax(), 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("{ diagnosticSessionType := ");
+single_value->field_diagnosticSessionType.log_match(match_value.diagnosticSessionType(), legacy);
+TTCN_Logger::log_event_str(", p2ServerMax := ");
+single_value->field_p2ServerMax.log_match(match_value.p2ServerMax(), legacy);
+TTCN_Logger::log_event_str(", p2StarServerMax := ");
+single_value->field_p2StarServerMax.log_match(match_value.p2StarServerMax(), 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 SafetySystemDiagnosticSessionResponse_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_diagnosticSessionType.encode_text(text_buf);
+single_value->field_p2ServerMax.encode_text(text_buf);
+single_value->field_p2StarServerMax.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 @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionResponse.");
+}
+}
+
+void SafetySystemDiagnosticSessionResponse_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_diagnosticSessionType.decode_text(text_buf);
+single_value->field_p2ServerMax.decode_text(text_buf);
+single_value->field_p2StarServerMax.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 SafetySystemDiagnosticSessionResponse_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 @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionResponse.");
+}
+}
+
+void SafetySystemDiagnosticSessionResponse_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: {
+    SafetySystemDiagnosticSessionResponse_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionResponse 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) diagnosticSessionType().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) p2ServerMax().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) p2StarServerMax().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(), "diagnosticSessionType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          diagnosticSessionType().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(), "p2ServerMax")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          p2ServerMax().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(), "p2StarServerMax")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          p2StarServerMax().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 @UnifiedDiagnosticServices.SafetySystemDiagnosticSessionResponse: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.SafetySystemDiagnosticSessionResponse");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SafetySystemDiagnosticSessionResponse_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_diagnosticSessionType.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.SafetySystemDiagnosticSessionResponse");
+single_value->field_p2ServerMax.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.SafetySystemDiagnosticSessionResponse");
+single_value->field_p2StarServerMax.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.SafetySystemDiagnosticSessionResponse");
+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 : "@UnifiedDiagnosticServices.SafetySystemDiagnosticSessionResponse");
+}
+
+boolean SafetySystemDiagnosticSessionResponse_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SafetySystemDiagnosticSessionResponse_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+DiagnosticSessionControlResponseSID::DiagnosticSessionControlResponseSID()
+{
+}
+
+DiagnosticSessionControlResponseSID::DiagnosticSessionControlResponseSID(const OCTETSTRING& par_sid,
+    const BITSTRING& par_reserved,
+    const DiagnosticSessionResponseType& par_diagnosticSessionType)
+  :   field_sid(par_sid),
+  field_reserved(par_reserved),
+  field_diagnosticSessionType(par_diagnosticSessionType)
+{
+}
+
+DiagnosticSessionControlResponseSID::DiagnosticSessionControlResponseSID(const DiagnosticSessionControlResponseSID& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.DiagnosticSessionControlResponseSID.");
+if (other_value.sid().is_bound()) field_sid = other_value.sid();
+else field_sid.clean_up();
+if (other_value.reserved().is_bound()) field_reserved = other_value.reserved();
+else field_reserved.clean_up();
+if (other_value.diagnosticSessionType().is_bound()) field_diagnosticSessionType = other_value.diagnosticSessionType();
+else field_diagnosticSessionType.clean_up();
+}
+
+void DiagnosticSessionControlResponseSID::clean_up()
+{
+field_sid.clean_up();
+field_reserved.clean_up();
+field_diagnosticSessionType.clean_up();
+}
+
+const TTCN_Typedescriptor_t* DiagnosticSessionControlResponseSID::get_descriptor() const { return &DiagnosticSessionControlResponseSID_descr_; }
+DiagnosticSessionControlResponseSID& DiagnosticSessionControlResponseSID::operator=(const DiagnosticSessionControlResponseSID& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.DiagnosticSessionControlResponseSID.");
+  if (other_value.sid().is_bound()) field_sid = other_value.sid();
+  else field_sid.clean_up();
+  if (other_value.reserved().is_bound()) field_reserved = other_value.reserved();
+  else field_reserved.clean_up();
+  if (other_value.diagnosticSessionType().is_bound()) field_diagnosticSessionType = other_value.diagnosticSessionType();
+  else field_diagnosticSessionType.clean_up();
+}
+return *this;
+}
+
+boolean DiagnosticSessionControlResponseSID::operator==(const DiagnosticSessionControlResponseSID& other_value) const
+{
+return field_sid==other_value.field_sid
+  && field_reserved==other_value.field_reserved
+  && field_diagnosticSessionType==other_value.field_diagnosticSessionType;
+}
+
+boolean DiagnosticSessionControlResponseSID::is_bound() const
+{
+return (field_sid.is_bound())
+  || (field_reserved.is_bound())
+  || (field_diagnosticSessionType.is_bound());
+}
+boolean DiagnosticSessionControlResponseSID::is_value() const
+{
+return field_sid.is_value()
+  && field_reserved.is_value()
+  && field_diagnosticSessionType.is_value();
+}
+void DiagnosticSessionControlResponseSID::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ sid := ");
+field_sid.log();
+TTCN_Logger::log_event_str(", reserved := ");
+field_reserved.log();
+TTCN_Logger::log_event_str(", diagnosticSessionType := ");
+field_diagnosticSessionType.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void DiagnosticSessionControlResponseSID::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 @UnifiedDiagnosticServices.DiagnosticSessionControlResponseSID 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) sid().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) diagnosticSessionType().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(), "sid")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          sid().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(), "reserved")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved().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(), "diagnosticSessionType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          diagnosticSessionType().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 @UnifiedDiagnosticServices.DiagnosticSessionControlResponseSID: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.DiagnosticSessionControlResponseSID");
+  }
+}
+
+void DiagnosticSessionControlResponseSID::set_implicit_omit()
+{
+if (sid().is_bound()) sid().set_implicit_omit();
+if (reserved().is_bound()) reserved().set_implicit_omit();
+if (diagnosticSessionType().is_bound()) diagnosticSessionType().set_implicit_omit();
+}
+
+void DiagnosticSessionControlResponseSID::encode_text(Text_Buf& text_buf) const
+{
+field_sid.encode_text(text_buf);
+field_reserved.encode_text(text_buf);
+field_diagnosticSessionType.encode_text(text_buf);
+}
+
+void DiagnosticSessionControlResponseSID::decode_text(Text_Buf& text_buf)
+{
+field_sid.decode_text(text_buf);
+field_reserved.decode_text(text_buf);
+field_diagnosticSessionType.decode_text(text_buf);
+}
+
+void DiagnosticSessionControlResponseSID::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void DiagnosticSessionControlResponseSID::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int DiagnosticSessionControlResponseSID::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, DiagnosticSessionControlResponseSID_sid_descr_.raw->forceomit);
+  decoded_field_length = field_sid.RAW_decode(DiagnosticSessionControlResponseSID_sid_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, DiagnosticSessionControlResponseSID_reserved_descr_.raw->forceomit);
+  decoded_field_length = field_reserved.RAW_decode(DiagnosticSessionControlResponseSID_reserved_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, DiagnosticSessionControlResponseSID_diagnosticSessionType_descr_.raw->forceomit);
+  decoded_field_length = field_diagnosticSessionType.RAW_decode(DiagnosticSessionControlResponseSID_diagnosticSessionType_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 DiagnosticSessionControlResponseSID::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, DiagnosticSessionControlResponseSID_sid_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, DiagnosticSessionControlResponseSID_reserved_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, DiagnosticSessionControlResponseSID_diagnosticSessionType_descr_.raw);
+  encoded_length += field_sid.RAW_encode(DiagnosticSessionControlResponseSID_sid_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved.RAW_encode(DiagnosticSessionControlResponseSID_reserved_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_diagnosticSessionType.RAW_encode(DiagnosticSessionControlResponseSID_diagnosticSessionType_descr_, *myleaf.body.node.nodes[2]);
+  return myleaf.length = encoded_length;
+}
+
+struct DiagnosticSessionControlResponseSID_template::single_value_struct {
+OCTETSTRING_template field_sid;
+BITSTRING_template field_reserved;
+DiagnosticSessionResponseType_template field_diagnosticSessionType;
+};
+
+void DiagnosticSessionControlResponseSID_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_sid = ANY_VALUE;
+single_value->field_reserved = ANY_VALUE;
+single_value->field_diagnosticSessionType = ANY_VALUE;
+}
+}
+}
+
+void DiagnosticSessionControlResponseSID_template::copy_value(const DiagnosticSessionControlResponseSID& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.sid().is_bound()) {
+  single_value->field_sid = other_value.sid();
+} else {
+  single_value->field_sid.clean_up();
+}
+if (other_value.reserved().is_bound()) {
+  single_value->field_reserved = other_value.reserved();
+} else {
+  single_value->field_reserved.clean_up();
+}
+if (other_value.diagnosticSessionType().is_bound()) {
+  single_value->field_diagnosticSessionType = other_value.diagnosticSessionType();
+} else {
+  single_value->field_diagnosticSessionType.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void DiagnosticSessionControlResponseSID_template::copy_template(const DiagnosticSessionControlResponseSID_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.sid().get_selection()) {
+single_value->field_sid = other_value.sid();
+} else {
+single_value->field_sid.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved().get_selection()) {
+single_value->field_reserved = other_value.reserved();
+} else {
+single_value->field_reserved.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.diagnosticSessionType().get_selection()) {
+single_value->field_diagnosticSessionType = other_value.diagnosticSessionType();
+} else {
+single_value->field_diagnosticSessionType.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new DiagnosticSessionControlResponseSID_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.DiagnosticSessionControlResponseSID.");
+break;
+}
+set_selection(other_value);
+}
+
+DiagnosticSessionControlResponseSID_template::DiagnosticSessionControlResponseSID_template()
+{
+}
+
+DiagnosticSessionControlResponseSID_template::DiagnosticSessionControlResponseSID_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+DiagnosticSessionControlResponseSID_template::DiagnosticSessionControlResponseSID_template(const DiagnosticSessionControlResponseSID& other_value)
+{
+copy_value(other_value);
+}
+
+DiagnosticSessionControlResponseSID_template::DiagnosticSessionControlResponseSID_template(const OPTIONAL<DiagnosticSessionControlResponseSID>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const DiagnosticSessionControlResponseSID&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.DiagnosticSessionControlResponseSID from an unbound optional field.");
+}
+}
+
+DiagnosticSessionControlResponseSID_template::DiagnosticSessionControlResponseSID_template(const DiagnosticSessionControlResponseSID_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+DiagnosticSessionControlResponseSID_template::~DiagnosticSessionControlResponseSID_template()
+{
+clean_up();
+}
+
+DiagnosticSessionControlResponseSID_template& DiagnosticSessionControlResponseSID_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+DiagnosticSessionControlResponseSID_template& DiagnosticSessionControlResponseSID_template::operator=(const DiagnosticSessionControlResponseSID& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+DiagnosticSessionControlResponseSID_template& DiagnosticSessionControlResponseSID_template::operator=(const OPTIONAL<DiagnosticSessionControlResponseSID>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const DiagnosticSessionControlResponseSID&)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 @UnifiedDiagnosticServices.DiagnosticSessionControlResponseSID.");
+}
+return *this;
+}
+
+DiagnosticSessionControlResponseSID_template& DiagnosticSessionControlResponseSID_template::operator=(const DiagnosticSessionControlResponseSID_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean DiagnosticSessionControlResponseSID_template::match(const DiagnosticSessionControlResponseSID& 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.sid().is_bound()) return FALSE;
+if(!single_value->field_sid.match(other_value.sid(), legacy))return FALSE;
+if(!other_value.reserved().is_bound()) return FALSE;
+if(!single_value->field_reserved.match(other_value.reserved(), legacy))return FALSE;
+if(!other_value.diagnosticSessionType().is_bound()) return FALSE;
+if(!single_value->field_diagnosticSessionType.match(other_value.diagnosticSessionType(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.DiagnosticSessionControlResponseSID.");
+}
+return FALSE;
+}
+
+boolean DiagnosticSessionControlResponseSID_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_sid.is_bound()
+
+ ||single_value->field_reserved.is_bound()
+
+ ||single_value->field_diagnosticSessionType.is_bound()
+;
+}
+
+boolean DiagnosticSessionControlResponseSID_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_sid.is_value()
+ &&single_value->field_reserved.is_value()
+ &&single_value->field_diagnosticSessionType.is_value();
+}
+
+void DiagnosticSessionControlResponseSID_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+DiagnosticSessionControlResponseSID DiagnosticSessionControlResponseSID_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 @UnifiedDiagnosticServices.DiagnosticSessionControlResponseSID.");
+DiagnosticSessionControlResponseSID ret_val;
+if (single_value->field_sid.is_bound()) {
+ret_val.sid() = single_value->field_sid.valueof();
+}
+if (single_value->field_reserved.is_bound()) {
+ret_val.reserved() = single_value->field_reserved.valueof();
+}
+if (single_value->field_diagnosticSessionType.is_bound()) {
+ret_val.diagnosticSessionType() = single_value->field_diagnosticSessionType.valueof();
+}
+return ret_val;
+}
+
+void DiagnosticSessionControlResponseSID_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.DiagnosticSessionControlResponseSID.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new DiagnosticSessionControlResponseSID_template[list_length];
+}
+
+DiagnosticSessionControlResponseSID_template& DiagnosticSessionControlResponseSID_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.DiagnosticSessionControlResponseSID.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.DiagnosticSessionControlResponseSID.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& DiagnosticSessionControlResponseSID_template::sid()
+{
+set_specific();
+return single_value->field_sid;
+}
+
+const OCTETSTRING_template& DiagnosticSessionControlResponseSID_template::sid() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field sid of a non-specific template of type @UnifiedDiagnosticServices.DiagnosticSessionControlResponseSID.");
+return single_value->field_sid;
+}
+
+BITSTRING_template& DiagnosticSessionControlResponseSID_template::reserved()
+{
+set_specific();
+return single_value->field_reserved;
+}
+
+const BITSTRING_template& DiagnosticSessionControlResponseSID_template::reserved() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved of a non-specific template of type @UnifiedDiagnosticServices.DiagnosticSessionControlResponseSID.");
+return single_value->field_reserved;
+}
+
+DiagnosticSessionResponseType_template& DiagnosticSessionControlResponseSID_template::diagnosticSessionType()
+{
+set_specific();
+return single_value->field_diagnosticSessionType;
+}
+
+const DiagnosticSessionResponseType_template& DiagnosticSessionControlResponseSID_template::diagnosticSessionType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field diagnosticSessionType of a non-specific template of type @UnifiedDiagnosticServices.DiagnosticSessionControlResponseSID.");
+return single_value->field_diagnosticSessionType;
+}
+
+int DiagnosticSessionControlResponseSID_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.DiagnosticSessionControlResponseSID 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 @UnifiedDiagnosticServices.DiagnosticSessionControlResponseSID 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 @UnifiedDiagnosticServices.DiagnosticSessionControlResponseSID containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.DiagnosticSessionControlResponseSID containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.DiagnosticSessionControlResponseSID containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.DiagnosticSessionControlResponseSID containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.DiagnosticSessionControlResponseSID.");
+  }
+  return 0;
+}
+
+void DiagnosticSessionControlResponseSID_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ sid := ");
+single_value->field_sid.log();
+TTCN_Logger::log_event_str(", reserved := ");
+single_value->field_reserved.log();
+TTCN_Logger::log_event_str(", diagnosticSessionType := ");
+single_value->field_diagnosticSessionType.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void DiagnosticSessionControlResponseSID_template::log_match(const DiagnosticSessionControlResponseSID& 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_sid.match(match_value.sid(), legacy)){
+TTCN_Logger::log_logmatch_info(".sid");
+single_value->field_sid.log_match(match_value.sid(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved.match(match_value.reserved(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved");
+single_value->field_reserved.log_match(match_value.reserved(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_diagnosticSessionType.match(match_value.diagnosticSessionType(), legacy)){
+TTCN_Logger::log_logmatch_info(".diagnosticSessionType");
+single_value->field_diagnosticSessionType.log_match(match_value.diagnosticSessionType(), 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("{ sid := ");
+single_value->field_sid.log_match(match_value.sid(), legacy);
+TTCN_Logger::log_event_str(", reserved := ");
+single_value->field_reserved.log_match(match_value.reserved(), legacy);
+TTCN_Logger::log_event_str(", diagnosticSessionType := ");
+single_value->field_diagnosticSessionType.log_match(match_value.diagnosticSessionType(), 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 DiagnosticSessionControlResponseSID_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_sid.encode_text(text_buf);
+single_value->field_reserved.encode_text(text_buf);
+single_value->field_diagnosticSessionType.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 @UnifiedDiagnosticServices.DiagnosticSessionControlResponseSID.");
+}
+}
+
+void DiagnosticSessionControlResponseSID_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_sid.decode_text(text_buf);
+single_value->field_reserved.decode_text(text_buf);
+single_value->field_diagnosticSessionType.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 DiagnosticSessionControlResponseSID_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 @UnifiedDiagnosticServices.DiagnosticSessionControlResponseSID.");
+}
+}
+
+void DiagnosticSessionControlResponseSID_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: {
+    DiagnosticSessionControlResponseSID_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @UnifiedDiagnosticServices.DiagnosticSessionControlResponseSID 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) sid().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) diagnosticSessionType().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(), "sid")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          sid().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(), "reserved")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved().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(), "diagnosticSessionType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          diagnosticSessionType().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 @UnifiedDiagnosticServices.DiagnosticSessionControlResponseSID: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.DiagnosticSessionControlResponseSID");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void DiagnosticSessionControlResponseSID_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_sid.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.DiagnosticSessionControlResponseSID");
+single_value->field_reserved.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.DiagnosticSessionControlResponseSID");
+single_value->field_diagnosticSessionType.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.DiagnosticSessionControlResponseSID");
+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 : "@UnifiedDiagnosticServices.DiagnosticSessionControlResponseSID");
+}
+
+boolean DiagnosticSessionControlResponseSID_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean DiagnosticSessionControlResponseSID_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+HardResetRequest::HardResetRequest()
+{
+}
+
+HardResetRequest::HardResetRequest(const BITSTRING& par_resetType)
+  :   field_resetType(par_resetType)
+{
+}
+
+HardResetRequest::HardResetRequest(const HardResetRequest& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.HardResetRequest.");
+if (other_value.resetType().is_bound()) field_resetType = other_value.resetType();
+else field_resetType.clean_up();
+}
+
+void HardResetRequest::clean_up()
+{
+field_resetType.clean_up();
+}
+
+const TTCN_Typedescriptor_t* HardResetRequest::get_descriptor() const { return &HardResetRequest_descr_; }
+HardResetRequest& HardResetRequest::operator=(const HardResetRequest& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.HardResetRequest.");
+  if (other_value.resetType().is_bound()) field_resetType = other_value.resetType();
+  else field_resetType.clean_up();
+}
+return *this;
+}
+
+boolean HardResetRequest::operator==(const HardResetRequest& other_value) const
+{
+return field_resetType==other_value.field_resetType;
+}
+
+boolean HardResetRequest::is_bound() const
+{
+return (field_resetType.is_bound());
+}
+boolean HardResetRequest::is_value() const
+{
+return field_resetType.is_value();
+}
+void HardResetRequest::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ resetType := ");
+field_resetType.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void HardResetRequest::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 (1<param.get_size()) {
+      param.error("record value of type @UnifiedDiagnosticServices.HardResetRequest has 1 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) resetType().set_param(*param.get_elem(0));
+    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(), "resetType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          resetType().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 @UnifiedDiagnosticServices.HardResetRequest: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.HardResetRequest");
+  }
+}
+
+void HardResetRequest::set_implicit_omit()
+{
+if (resetType().is_bound()) resetType().set_implicit_omit();
+}
+
+void HardResetRequest::encode_text(Text_Buf& text_buf) const
+{
+field_resetType.encode_text(text_buf);
+}
+
+void HardResetRequest::decode_text(Text_Buf& text_buf)
+{
+field_resetType.decode_text(text_buf);
+}
+
+void HardResetRequest::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void HardResetRequest::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int HardResetRequest::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, HardResetRequest_resetType_descr_.raw->forceomit);
+  decoded_field_length = field_resetType.RAW_decode(HardResetRequest_resetType_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int HardResetRequest::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 = 1;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(1);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, HardResetRequest_resetType_descr_.raw);
+  encoded_length += field_resetType.RAW_encode(HardResetRequest_resetType_descr_, *myleaf.body.node.nodes[0]);
+  return myleaf.length = encoded_length;
+}
+
+struct HardResetRequest_template::single_value_struct {
+BITSTRING_template field_resetType;
+};
+
+void HardResetRequest_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_resetType = ANY_VALUE;
+}
+}
+}
+
+void HardResetRequest_template::copy_value(const HardResetRequest& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.resetType().is_bound()) {
+  single_value->field_resetType = other_value.resetType();
+} else {
+  single_value->field_resetType.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void HardResetRequest_template::copy_template(const HardResetRequest_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.resetType().get_selection()) {
+single_value->field_resetType = other_value.resetType();
+} else {
+single_value->field_resetType.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new HardResetRequest_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.HardResetRequest.");
+break;
+}
+set_selection(other_value);
+}
+
+HardResetRequest_template::HardResetRequest_template()
+{
+}
+
+HardResetRequest_template::HardResetRequest_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+HardResetRequest_template::HardResetRequest_template(const HardResetRequest& other_value)
+{
+copy_value(other_value);
+}
+
+HardResetRequest_template::HardResetRequest_template(const OPTIONAL<HardResetRequest>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const HardResetRequest&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.HardResetRequest from an unbound optional field.");
+}
+}
+
+HardResetRequest_template::HardResetRequest_template(const HardResetRequest_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+HardResetRequest_template::~HardResetRequest_template()
+{
+clean_up();
+}
+
+HardResetRequest_template& HardResetRequest_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+HardResetRequest_template& HardResetRequest_template::operator=(const HardResetRequest& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+HardResetRequest_template& HardResetRequest_template::operator=(const OPTIONAL<HardResetRequest>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const HardResetRequest&)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 @UnifiedDiagnosticServices.HardResetRequest.");
+}
+return *this;
+}
+
+HardResetRequest_template& HardResetRequest_template::operator=(const HardResetRequest_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean HardResetRequest_template::match(const HardResetRequest& 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.resetType().is_bound()) return FALSE;
+if(!single_value->field_resetType.match(other_value.resetType(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.HardResetRequest.");
+}
+return FALSE;
+}
+
+boolean HardResetRequest_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_resetType.is_bound()
+;
+}
+
+boolean HardResetRequest_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_resetType.is_value();
+}
+
+void HardResetRequest_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+HardResetRequest HardResetRequest_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 @UnifiedDiagnosticServices.HardResetRequest.");
+HardResetRequest ret_val;
+if (single_value->field_resetType.is_bound()) {
+ret_val.resetType() = single_value->field_resetType.valueof();
+}
+return ret_val;
+}
+
+void HardResetRequest_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.HardResetRequest.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new HardResetRequest_template[list_length];
+}
+
+HardResetRequest_template& HardResetRequest_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.HardResetRequest.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.HardResetRequest.");
+return value_list.list_value[list_index];
+}
+
+BITSTRING_template& HardResetRequest_template::resetType()
+{
+set_specific();
+return single_value->field_resetType;
+}
+
+const BITSTRING_template& HardResetRequest_template::resetType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field resetType of a non-specific template of type @UnifiedDiagnosticServices.HardResetRequest.");
+return single_value->field_resetType;
+}
+
+int HardResetRequest_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.HardResetRequest which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 1;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.HardResetRequest 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 @UnifiedDiagnosticServices.HardResetRequest containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.HardResetRequest containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.HardResetRequest containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.HardResetRequest containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.HardResetRequest.");
+  }
+  return 0;
+}
+
+void HardResetRequest_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ resetType := ");
+single_value->field_resetType.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void HardResetRequest_template::log_match(const HardResetRequest& 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_resetType.match(match_value.resetType(), legacy)){
+TTCN_Logger::log_logmatch_info(".resetType");
+single_value->field_resetType.log_match(match_value.resetType(), 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("{ resetType := ");
+single_value->field_resetType.log_match(match_value.resetType(), 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 HardResetRequest_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_resetType.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 @UnifiedDiagnosticServices.HardResetRequest.");
+}
+}
+
+void HardResetRequest_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_resetType.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 HardResetRequest_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 @UnifiedDiagnosticServices.HardResetRequest.");
+}
+}
+
+void HardResetRequest_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: {
+    HardResetRequest_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (1<param.get_size()) {
+      param.error("record template of type @UnifiedDiagnosticServices.HardResetRequest has 1 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) resetType().set_param(*param.get_elem(0));
+    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(), "resetType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          resetType().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 @UnifiedDiagnosticServices.HardResetRequest: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.HardResetRequest");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void HardResetRequest_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_resetType.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.HardResetRequest");
+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 : "@UnifiedDiagnosticServices.HardResetRequest");
+}
+
+boolean HardResetRequest_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean HardResetRequest_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+KeyOffOnResetRequest::KeyOffOnResetRequest()
+{
+}
+
+KeyOffOnResetRequest::KeyOffOnResetRequest(const BITSTRING& par_resetType)
+  :   field_resetType(par_resetType)
+{
+}
+
+KeyOffOnResetRequest::KeyOffOnResetRequest(const KeyOffOnResetRequest& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.KeyOffOnResetRequest.");
+if (other_value.resetType().is_bound()) field_resetType = other_value.resetType();
+else field_resetType.clean_up();
+}
+
+void KeyOffOnResetRequest::clean_up()
+{
+field_resetType.clean_up();
+}
+
+const TTCN_Typedescriptor_t* KeyOffOnResetRequest::get_descriptor() const { return &KeyOffOnResetRequest_descr_; }
+KeyOffOnResetRequest& KeyOffOnResetRequest::operator=(const KeyOffOnResetRequest& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.KeyOffOnResetRequest.");
+  if (other_value.resetType().is_bound()) field_resetType = other_value.resetType();
+  else field_resetType.clean_up();
+}
+return *this;
+}
+
+boolean KeyOffOnResetRequest::operator==(const KeyOffOnResetRequest& other_value) const
+{
+return field_resetType==other_value.field_resetType;
+}
+
+boolean KeyOffOnResetRequest::is_bound() const
+{
+return (field_resetType.is_bound());
+}
+boolean KeyOffOnResetRequest::is_value() const
+{
+return field_resetType.is_value();
+}
+void KeyOffOnResetRequest::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ resetType := ");
+field_resetType.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void KeyOffOnResetRequest::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 (1<param.get_size()) {
+      param.error("record value of type @UnifiedDiagnosticServices.KeyOffOnResetRequest has 1 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) resetType().set_param(*param.get_elem(0));
+    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(), "resetType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          resetType().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 @UnifiedDiagnosticServices.KeyOffOnResetRequest: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.KeyOffOnResetRequest");
+  }
+}
+
+void KeyOffOnResetRequest::set_implicit_omit()
+{
+if (resetType().is_bound()) resetType().set_implicit_omit();
+}
+
+void KeyOffOnResetRequest::encode_text(Text_Buf& text_buf) const
+{
+field_resetType.encode_text(text_buf);
+}
+
+void KeyOffOnResetRequest::decode_text(Text_Buf& text_buf)
+{
+field_resetType.decode_text(text_buf);
+}
+
+void KeyOffOnResetRequest::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void KeyOffOnResetRequest::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int KeyOffOnResetRequest::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, KeyOffOnResetRequest_resetType_descr_.raw->forceomit);
+  decoded_field_length = field_resetType.RAW_decode(KeyOffOnResetRequest_resetType_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int KeyOffOnResetRequest::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 = 1;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(1);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, KeyOffOnResetRequest_resetType_descr_.raw);
+  encoded_length += field_resetType.RAW_encode(KeyOffOnResetRequest_resetType_descr_, *myleaf.body.node.nodes[0]);
+  return myleaf.length = encoded_length;
+}
+
+struct KeyOffOnResetRequest_template::single_value_struct {
+BITSTRING_template field_resetType;
+};
+
+void KeyOffOnResetRequest_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_resetType = ANY_VALUE;
+}
+}
+}
+
+void KeyOffOnResetRequest_template::copy_value(const KeyOffOnResetRequest& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.resetType().is_bound()) {
+  single_value->field_resetType = other_value.resetType();
+} else {
+  single_value->field_resetType.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void KeyOffOnResetRequest_template::copy_template(const KeyOffOnResetRequest_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.resetType().get_selection()) {
+single_value->field_resetType = other_value.resetType();
+} else {
+single_value->field_resetType.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new KeyOffOnResetRequest_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.KeyOffOnResetRequest.");
+break;
+}
+set_selection(other_value);
+}
+
+KeyOffOnResetRequest_template::KeyOffOnResetRequest_template()
+{
+}
+
+KeyOffOnResetRequest_template::KeyOffOnResetRequest_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+KeyOffOnResetRequest_template::KeyOffOnResetRequest_template(const KeyOffOnResetRequest& other_value)
+{
+copy_value(other_value);
+}
+
+KeyOffOnResetRequest_template::KeyOffOnResetRequest_template(const OPTIONAL<KeyOffOnResetRequest>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const KeyOffOnResetRequest&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.KeyOffOnResetRequest from an unbound optional field.");
+}
+}
+
+KeyOffOnResetRequest_template::KeyOffOnResetRequest_template(const KeyOffOnResetRequest_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+KeyOffOnResetRequest_template::~KeyOffOnResetRequest_template()
+{
+clean_up();
+}
+
+KeyOffOnResetRequest_template& KeyOffOnResetRequest_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+KeyOffOnResetRequest_template& KeyOffOnResetRequest_template::operator=(const KeyOffOnResetRequest& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+KeyOffOnResetRequest_template& KeyOffOnResetRequest_template::operator=(const OPTIONAL<KeyOffOnResetRequest>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const KeyOffOnResetRequest&)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 @UnifiedDiagnosticServices.KeyOffOnResetRequest.");
+}
+return *this;
+}
+
+KeyOffOnResetRequest_template& KeyOffOnResetRequest_template::operator=(const KeyOffOnResetRequest_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean KeyOffOnResetRequest_template::match(const KeyOffOnResetRequest& 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.resetType().is_bound()) return FALSE;
+if(!single_value->field_resetType.match(other_value.resetType(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.KeyOffOnResetRequest.");
+}
+return FALSE;
+}
+
+boolean KeyOffOnResetRequest_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_resetType.is_bound()
+;
+}
+
+boolean KeyOffOnResetRequest_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_resetType.is_value();
+}
+
+void KeyOffOnResetRequest_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+KeyOffOnResetRequest KeyOffOnResetRequest_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 @UnifiedDiagnosticServices.KeyOffOnResetRequest.");
+KeyOffOnResetRequest ret_val;
+if (single_value->field_resetType.is_bound()) {
+ret_val.resetType() = single_value->field_resetType.valueof();
+}
+return ret_val;
+}
+
+void KeyOffOnResetRequest_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.KeyOffOnResetRequest.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new KeyOffOnResetRequest_template[list_length];
+}
+
+KeyOffOnResetRequest_template& KeyOffOnResetRequest_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.KeyOffOnResetRequest.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.KeyOffOnResetRequest.");
+return value_list.list_value[list_index];
+}
+
+BITSTRING_template& KeyOffOnResetRequest_template::resetType()
+{
+set_specific();
+return single_value->field_resetType;
+}
+
+const BITSTRING_template& KeyOffOnResetRequest_template::resetType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field resetType of a non-specific template of type @UnifiedDiagnosticServices.KeyOffOnResetRequest.");
+return single_value->field_resetType;
+}
+
+int KeyOffOnResetRequest_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.KeyOffOnResetRequest which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 1;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.KeyOffOnResetRequest 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 @UnifiedDiagnosticServices.KeyOffOnResetRequest containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.KeyOffOnResetRequest containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.KeyOffOnResetRequest containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.KeyOffOnResetRequest containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.KeyOffOnResetRequest.");
+  }
+  return 0;
+}
+
+void KeyOffOnResetRequest_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ resetType := ");
+single_value->field_resetType.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void KeyOffOnResetRequest_template::log_match(const KeyOffOnResetRequest& 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_resetType.match(match_value.resetType(), legacy)){
+TTCN_Logger::log_logmatch_info(".resetType");
+single_value->field_resetType.log_match(match_value.resetType(), 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("{ resetType := ");
+single_value->field_resetType.log_match(match_value.resetType(), 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 KeyOffOnResetRequest_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_resetType.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 @UnifiedDiagnosticServices.KeyOffOnResetRequest.");
+}
+}
+
+void KeyOffOnResetRequest_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_resetType.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 KeyOffOnResetRequest_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 @UnifiedDiagnosticServices.KeyOffOnResetRequest.");
+}
+}
+
+void KeyOffOnResetRequest_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: {
+    KeyOffOnResetRequest_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (1<param.get_size()) {
+      param.error("record template of type @UnifiedDiagnosticServices.KeyOffOnResetRequest has 1 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) resetType().set_param(*param.get_elem(0));
+    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(), "resetType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          resetType().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 @UnifiedDiagnosticServices.KeyOffOnResetRequest: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.KeyOffOnResetRequest");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void KeyOffOnResetRequest_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_resetType.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.KeyOffOnResetRequest");
+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 : "@UnifiedDiagnosticServices.KeyOffOnResetRequest");
+}
+
+boolean KeyOffOnResetRequest_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean KeyOffOnResetRequest_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+SoftResetRequest::SoftResetRequest()
+{
+}
+
+SoftResetRequest::SoftResetRequest(const BITSTRING& par_resetType)
+  :   field_resetType(par_resetType)
+{
+}
+
+SoftResetRequest::SoftResetRequest(const SoftResetRequest& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.SoftResetRequest.");
+if (other_value.resetType().is_bound()) field_resetType = other_value.resetType();
+else field_resetType.clean_up();
+}
+
+void SoftResetRequest::clean_up()
+{
+field_resetType.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SoftResetRequest::get_descriptor() const { return &SoftResetRequest_descr_; }
+SoftResetRequest& SoftResetRequest::operator=(const SoftResetRequest& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.SoftResetRequest.");
+  if (other_value.resetType().is_bound()) field_resetType = other_value.resetType();
+  else field_resetType.clean_up();
+}
+return *this;
+}
+
+boolean SoftResetRequest::operator==(const SoftResetRequest& other_value) const
+{
+return field_resetType==other_value.field_resetType;
+}
+
+boolean SoftResetRequest::is_bound() const
+{
+return (field_resetType.is_bound());
+}
+boolean SoftResetRequest::is_value() const
+{
+return field_resetType.is_value();
+}
+void SoftResetRequest::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ resetType := ");
+field_resetType.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SoftResetRequest::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 (1<param.get_size()) {
+      param.error("record value of type @UnifiedDiagnosticServices.SoftResetRequest has 1 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) resetType().set_param(*param.get_elem(0));
+    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(), "resetType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          resetType().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 @UnifiedDiagnosticServices.SoftResetRequest: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.SoftResetRequest");
+  }
+}
+
+void SoftResetRequest::set_implicit_omit()
+{
+if (resetType().is_bound()) resetType().set_implicit_omit();
+}
+
+void SoftResetRequest::encode_text(Text_Buf& text_buf) const
+{
+field_resetType.encode_text(text_buf);
+}
+
+void SoftResetRequest::decode_text(Text_Buf& text_buf)
+{
+field_resetType.decode_text(text_buf);
+}
+
+void SoftResetRequest::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void SoftResetRequest::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int SoftResetRequest::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, SoftResetRequest_resetType_descr_.raw->forceomit);
+  decoded_field_length = field_resetType.RAW_decode(SoftResetRequest_resetType_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int SoftResetRequest::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 = 1;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(1);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, SoftResetRequest_resetType_descr_.raw);
+  encoded_length += field_resetType.RAW_encode(SoftResetRequest_resetType_descr_, *myleaf.body.node.nodes[0]);
+  return myleaf.length = encoded_length;
+}
+
+struct SoftResetRequest_template::single_value_struct {
+BITSTRING_template field_resetType;
+};
+
+void SoftResetRequest_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_resetType = ANY_VALUE;
+}
+}
+}
+
+void SoftResetRequest_template::copy_value(const SoftResetRequest& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.resetType().is_bound()) {
+  single_value->field_resetType = other_value.resetType();
+} else {
+  single_value->field_resetType.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SoftResetRequest_template::copy_template(const SoftResetRequest_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.resetType().get_selection()) {
+single_value->field_resetType = other_value.resetType();
+} else {
+single_value->field_resetType.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SoftResetRequest_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.SoftResetRequest.");
+break;
+}
+set_selection(other_value);
+}
+
+SoftResetRequest_template::SoftResetRequest_template()
+{
+}
+
+SoftResetRequest_template::SoftResetRequest_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SoftResetRequest_template::SoftResetRequest_template(const SoftResetRequest& other_value)
+{
+copy_value(other_value);
+}
+
+SoftResetRequest_template::SoftResetRequest_template(const OPTIONAL<SoftResetRequest>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SoftResetRequest&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.SoftResetRequest from an unbound optional field.");
+}
+}
+
+SoftResetRequest_template::SoftResetRequest_template(const SoftResetRequest_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SoftResetRequest_template::~SoftResetRequest_template()
+{
+clean_up();
+}
+
+SoftResetRequest_template& SoftResetRequest_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SoftResetRequest_template& SoftResetRequest_template::operator=(const SoftResetRequest& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SoftResetRequest_template& SoftResetRequest_template::operator=(const OPTIONAL<SoftResetRequest>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SoftResetRequest&)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 @UnifiedDiagnosticServices.SoftResetRequest.");
+}
+return *this;
+}
+
+SoftResetRequest_template& SoftResetRequest_template::operator=(const SoftResetRequest_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SoftResetRequest_template::match(const SoftResetRequest& 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.resetType().is_bound()) return FALSE;
+if(!single_value->field_resetType.match(other_value.resetType(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.SoftResetRequest.");
+}
+return FALSE;
+}
+
+boolean SoftResetRequest_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_resetType.is_bound()
+;
+}
+
+boolean SoftResetRequest_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_resetType.is_value();
+}
+
+void SoftResetRequest_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SoftResetRequest SoftResetRequest_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 @UnifiedDiagnosticServices.SoftResetRequest.");
+SoftResetRequest ret_val;
+if (single_value->field_resetType.is_bound()) {
+ret_val.resetType() = single_value->field_resetType.valueof();
+}
+return ret_val;
+}
+
+void SoftResetRequest_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.SoftResetRequest.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SoftResetRequest_template[list_length];
+}
+
+SoftResetRequest_template& SoftResetRequest_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.SoftResetRequest.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.SoftResetRequest.");
+return value_list.list_value[list_index];
+}
+
+BITSTRING_template& SoftResetRequest_template::resetType()
+{
+set_specific();
+return single_value->field_resetType;
+}
+
+const BITSTRING_template& SoftResetRequest_template::resetType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field resetType of a non-specific template of type @UnifiedDiagnosticServices.SoftResetRequest.");
+return single_value->field_resetType;
+}
+
+int SoftResetRequest_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.SoftResetRequest which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 1;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.SoftResetRequest 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 @UnifiedDiagnosticServices.SoftResetRequest containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.SoftResetRequest containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.SoftResetRequest containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.SoftResetRequest containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.SoftResetRequest.");
+  }
+  return 0;
+}
+
+void SoftResetRequest_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ resetType := ");
+single_value->field_resetType.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SoftResetRequest_template::log_match(const SoftResetRequest& 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_resetType.match(match_value.resetType(), legacy)){
+TTCN_Logger::log_logmatch_info(".resetType");
+single_value->field_resetType.log_match(match_value.resetType(), 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("{ resetType := ");
+single_value->field_resetType.log_match(match_value.resetType(), 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 SoftResetRequest_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_resetType.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 @UnifiedDiagnosticServices.SoftResetRequest.");
+}
+}
+
+void SoftResetRequest_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_resetType.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 SoftResetRequest_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 @UnifiedDiagnosticServices.SoftResetRequest.");
+}
+}
+
+void SoftResetRequest_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: {
+    SoftResetRequest_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (1<param.get_size()) {
+      param.error("record template of type @UnifiedDiagnosticServices.SoftResetRequest has 1 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) resetType().set_param(*param.get_elem(0));
+    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(), "resetType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          resetType().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 @UnifiedDiagnosticServices.SoftResetRequest: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.SoftResetRequest");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SoftResetRequest_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_resetType.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.SoftResetRequest");
+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 : "@UnifiedDiagnosticServices.SoftResetRequest");
+}
+
+boolean SoftResetRequest_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SoftResetRequest_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+EnableRapidPowerShutDownRequest::EnableRapidPowerShutDownRequest()
+{
+}
+
+EnableRapidPowerShutDownRequest::EnableRapidPowerShutDownRequest(const BITSTRING& par_resetType)
+  :   field_resetType(par_resetType)
+{
+}
+
+EnableRapidPowerShutDownRequest::EnableRapidPowerShutDownRequest(const EnableRapidPowerShutDownRequest& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.EnableRapidPowerShutDownRequest.");
+if (other_value.resetType().is_bound()) field_resetType = other_value.resetType();
+else field_resetType.clean_up();
+}
+
+void EnableRapidPowerShutDownRequest::clean_up()
+{
+field_resetType.clean_up();
+}
+
+const TTCN_Typedescriptor_t* EnableRapidPowerShutDownRequest::get_descriptor() const { return &EnableRapidPowerShutDownRequest_descr_; }
+EnableRapidPowerShutDownRequest& EnableRapidPowerShutDownRequest::operator=(const EnableRapidPowerShutDownRequest& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.EnableRapidPowerShutDownRequest.");
+  if (other_value.resetType().is_bound()) field_resetType = other_value.resetType();
+  else field_resetType.clean_up();
+}
+return *this;
+}
+
+boolean EnableRapidPowerShutDownRequest::operator==(const EnableRapidPowerShutDownRequest& other_value) const
+{
+return field_resetType==other_value.field_resetType;
+}
+
+boolean EnableRapidPowerShutDownRequest::is_bound() const
+{
+return (field_resetType.is_bound());
+}
+boolean EnableRapidPowerShutDownRequest::is_value() const
+{
+return field_resetType.is_value();
+}
+void EnableRapidPowerShutDownRequest::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ resetType := ");
+field_resetType.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void EnableRapidPowerShutDownRequest::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 (1<param.get_size()) {
+      param.error("record value of type @UnifiedDiagnosticServices.EnableRapidPowerShutDownRequest has 1 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) resetType().set_param(*param.get_elem(0));
+    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(), "resetType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          resetType().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 @UnifiedDiagnosticServices.EnableRapidPowerShutDownRequest: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.EnableRapidPowerShutDownRequest");
+  }
+}
+
+void EnableRapidPowerShutDownRequest::set_implicit_omit()
+{
+if (resetType().is_bound()) resetType().set_implicit_omit();
+}
+
+void EnableRapidPowerShutDownRequest::encode_text(Text_Buf& text_buf) const
+{
+field_resetType.encode_text(text_buf);
+}
+
+void EnableRapidPowerShutDownRequest::decode_text(Text_Buf& text_buf)
+{
+field_resetType.decode_text(text_buf);
+}
+
+void EnableRapidPowerShutDownRequest::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void EnableRapidPowerShutDownRequest::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int EnableRapidPowerShutDownRequest::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, EnableRapidPowerShutDownRequest_resetType_descr_.raw->forceomit);
+  decoded_field_length = field_resetType.RAW_decode(EnableRapidPowerShutDownRequest_resetType_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int EnableRapidPowerShutDownRequest::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 = 1;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(1);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, EnableRapidPowerShutDownRequest_resetType_descr_.raw);
+  encoded_length += field_resetType.RAW_encode(EnableRapidPowerShutDownRequest_resetType_descr_, *myleaf.body.node.nodes[0]);
+  return myleaf.length = encoded_length;
+}
+
+struct EnableRapidPowerShutDownRequest_template::single_value_struct {
+BITSTRING_template field_resetType;
+};
+
+void EnableRapidPowerShutDownRequest_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_resetType = ANY_VALUE;
+}
+}
+}
+
+void EnableRapidPowerShutDownRequest_template::copy_value(const EnableRapidPowerShutDownRequest& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.resetType().is_bound()) {
+  single_value->field_resetType = other_value.resetType();
+} else {
+  single_value->field_resetType.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void EnableRapidPowerShutDownRequest_template::copy_template(const EnableRapidPowerShutDownRequest_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.resetType().get_selection()) {
+single_value->field_resetType = other_value.resetType();
+} else {
+single_value->field_resetType.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new EnableRapidPowerShutDownRequest_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.EnableRapidPowerShutDownRequest.");
+break;
+}
+set_selection(other_value);
+}
+
+EnableRapidPowerShutDownRequest_template::EnableRapidPowerShutDownRequest_template()
+{
+}
+
+EnableRapidPowerShutDownRequest_template::EnableRapidPowerShutDownRequest_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+EnableRapidPowerShutDownRequest_template::EnableRapidPowerShutDownRequest_template(const EnableRapidPowerShutDownRequest& other_value)
+{
+copy_value(other_value);
+}
+
+EnableRapidPowerShutDownRequest_template::EnableRapidPowerShutDownRequest_template(const OPTIONAL<EnableRapidPowerShutDownRequest>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const EnableRapidPowerShutDownRequest&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.EnableRapidPowerShutDownRequest from an unbound optional field.");
+}
+}
+
+EnableRapidPowerShutDownRequest_template::EnableRapidPowerShutDownRequest_template(const EnableRapidPowerShutDownRequest_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+EnableRapidPowerShutDownRequest_template::~EnableRapidPowerShutDownRequest_template()
+{
+clean_up();
+}
+
+EnableRapidPowerShutDownRequest_template& EnableRapidPowerShutDownRequest_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+EnableRapidPowerShutDownRequest_template& EnableRapidPowerShutDownRequest_template::operator=(const EnableRapidPowerShutDownRequest& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+EnableRapidPowerShutDownRequest_template& EnableRapidPowerShutDownRequest_template::operator=(const OPTIONAL<EnableRapidPowerShutDownRequest>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const EnableRapidPowerShutDownRequest&)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 @UnifiedDiagnosticServices.EnableRapidPowerShutDownRequest.");
+}
+return *this;
+}
+
+EnableRapidPowerShutDownRequest_template& EnableRapidPowerShutDownRequest_template::operator=(const EnableRapidPowerShutDownRequest_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean EnableRapidPowerShutDownRequest_template::match(const EnableRapidPowerShutDownRequest& 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.resetType().is_bound()) return FALSE;
+if(!single_value->field_resetType.match(other_value.resetType(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.EnableRapidPowerShutDownRequest.");
+}
+return FALSE;
+}
+
+boolean EnableRapidPowerShutDownRequest_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_resetType.is_bound()
+;
+}
+
+boolean EnableRapidPowerShutDownRequest_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_resetType.is_value();
+}
+
+void EnableRapidPowerShutDownRequest_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+EnableRapidPowerShutDownRequest EnableRapidPowerShutDownRequest_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 @UnifiedDiagnosticServices.EnableRapidPowerShutDownRequest.");
+EnableRapidPowerShutDownRequest ret_val;
+if (single_value->field_resetType.is_bound()) {
+ret_val.resetType() = single_value->field_resetType.valueof();
+}
+return ret_val;
+}
+
+void EnableRapidPowerShutDownRequest_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.EnableRapidPowerShutDownRequest.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new EnableRapidPowerShutDownRequest_template[list_length];
+}
+
+EnableRapidPowerShutDownRequest_template& EnableRapidPowerShutDownRequest_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.EnableRapidPowerShutDownRequest.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.EnableRapidPowerShutDownRequest.");
+return value_list.list_value[list_index];
+}
+
+BITSTRING_template& EnableRapidPowerShutDownRequest_template::resetType()
+{
+set_specific();
+return single_value->field_resetType;
+}
+
+const BITSTRING_template& EnableRapidPowerShutDownRequest_template::resetType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field resetType of a non-specific template of type @UnifiedDiagnosticServices.EnableRapidPowerShutDownRequest.");
+return single_value->field_resetType;
+}
+
+int EnableRapidPowerShutDownRequest_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.EnableRapidPowerShutDownRequest which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 1;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.EnableRapidPowerShutDownRequest 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 @UnifiedDiagnosticServices.EnableRapidPowerShutDownRequest containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.EnableRapidPowerShutDownRequest containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.EnableRapidPowerShutDownRequest containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.EnableRapidPowerShutDownRequest containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.EnableRapidPowerShutDownRequest.");
+  }
+  return 0;
+}
+
+void EnableRapidPowerShutDownRequest_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ resetType := ");
+single_value->field_resetType.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void EnableRapidPowerShutDownRequest_template::log_match(const EnableRapidPowerShutDownRequest& 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_resetType.match(match_value.resetType(), legacy)){
+TTCN_Logger::log_logmatch_info(".resetType");
+single_value->field_resetType.log_match(match_value.resetType(), 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("{ resetType := ");
+single_value->field_resetType.log_match(match_value.resetType(), 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 EnableRapidPowerShutDownRequest_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_resetType.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 @UnifiedDiagnosticServices.EnableRapidPowerShutDownRequest.");
+}
+}
+
+void EnableRapidPowerShutDownRequest_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_resetType.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 EnableRapidPowerShutDownRequest_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 @UnifiedDiagnosticServices.EnableRapidPowerShutDownRequest.");
+}
+}
+
+void EnableRapidPowerShutDownRequest_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: {
+    EnableRapidPowerShutDownRequest_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (1<param.get_size()) {
+      param.error("record template of type @UnifiedDiagnosticServices.EnableRapidPowerShutDownRequest has 1 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) resetType().set_param(*param.get_elem(0));
+    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(), "resetType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          resetType().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 @UnifiedDiagnosticServices.EnableRapidPowerShutDownRequest: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.EnableRapidPowerShutDownRequest");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void EnableRapidPowerShutDownRequest_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_resetType.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.EnableRapidPowerShutDownRequest");
+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 : "@UnifiedDiagnosticServices.EnableRapidPowerShutDownRequest");
+}
+
+boolean EnableRapidPowerShutDownRequest_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean EnableRapidPowerShutDownRequest_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+DisableRapidPowerShutDownRequest::DisableRapidPowerShutDownRequest()
+{
+}
+
+DisableRapidPowerShutDownRequest::DisableRapidPowerShutDownRequest(const BITSTRING& par_resetType)
+  :   field_resetType(par_resetType)
+{
+}
+
+DisableRapidPowerShutDownRequest::DisableRapidPowerShutDownRequest(const DisableRapidPowerShutDownRequest& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.DisableRapidPowerShutDownRequest.");
+if (other_value.resetType().is_bound()) field_resetType = other_value.resetType();
+else field_resetType.clean_up();
+}
+
+void DisableRapidPowerShutDownRequest::clean_up()
+{
+field_resetType.clean_up();
+}
+
+const TTCN_Typedescriptor_t* DisableRapidPowerShutDownRequest::get_descriptor() const { return &DisableRapidPowerShutDownRequest_descr_; }
+DisableRapidPowerShutDownRequest& DisableRapidPowerShutDownRequest::operator=(const DisableRapidPowerShutDownRequest& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.DisableRapidPowerShutDownRequest.");
+  if (other_value.resetType().is_bound()) field_resetType = other_value.resetType();
+  else field_resetType.clean_up();
+}
+return *this;
+}
+
+boolean DisableRapidPowerShutDownRequest::operator==(const DisableRapidPowerShutDownRequest& other_value) const
+{
+return field_resetType==other_value.field_resetType;
+}
+
+boolean DisableRapidPowerShutDownRequest::is_bound() const
+{
+return (field_resetType.is_bound());
+}
+boolean DisableRapidPowerShutDownRequest::is_value() const
+{
+return field_resetType.is_value();
+}
+void DisableRapidPowerShutDownRequest::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ resetType := ");
+field_resetType.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void DisableRapidPowerShutDownRequest::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 (1<param.get_size()) {
+      param.error("record value of type @UnifiedDiagnosticServices.DisableRapidPowerShutDownRequest has 1 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) resetType().set_param(*param.get_elem(0));
+    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(), "resetType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          resetType().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 @UnifiedDiagnosticServices.DisableRapidPowerShutDownRequest: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.DisableRapidPowerShutDownRequest");
+  }
+}
+
+void DisableRapidPowerShutDownRequest::set_implicit_omit()
+{
+if (resetType().is_bound()) resetType().set_implicit_omit();
+}
+
+void DisableRapidPowerShutDownRequest::encode_text(Text_Buf& text_buf) const
+{
+field_resetType.encode_text(text_buf);
+}
+
+void DisableRapidPowerShutDownRequest::decode_text(Text_Buf& text_buf)
+{
+field_resetType.decode_text(text_buf);
+}
+
+void DisableRapidPowerShutDownRequest::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void DisableRapidPowerShutDownRequest::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int DisableRapidPowerShutDownRequest::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, DisableRapidPowerShutDownRequest_resetType_descr_.raw->forceomit);
+  decoded_field_length = field_resetType.RAW_decode(DisableRapidPowerShutDownRequest_resetType_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int DisableRapidPowerShutDownRequest::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 = 1;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(1);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, DisableRapidPowerShutDownRequest_resetType_descr_.raw);
+  encoded_length += field_resetType.RAW_encode(DisableRapidPowerShutDownRequest_resetType_descr_, *myleaf.body.node.nodes[0]);
+  return myleaf.length = encoded_length;
+}
+
+struct DisableRapidPowerShutDownRequest_template::single_value_struct {
+BITSTRING_template field_resetType;
+};
+
+void DisableRapidPowerShutDownRequest_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_resetType = ANY_VALUE;
+}
+}
+}
+
+void DisableRapidPowerShutDownRequest_template::copy_value(const DisableRapidPowerShutDownRequest& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.resetType().is_bound()) {
+  single_value->field_resetType = other_value.resetType();
+} else {
+  single_value->field_resetType.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void DisableRapidPowerShutDownRequest_template::copy_template(const DisableRapidPowerShutDownRequest_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.resetType().get_selection()) {
+single_value->field_resetType = other_value.resetType();
+} else {
+single_value->field_resetType.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new DisableRapidPowerShutDownRequest_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.DisableRapidPowerShutDownRequest.");
+break;
+}
+set_selection(other_value);
+}
+
+DisableRapidPowerShutDownRequest_template::DisableRapidPowerShutDownRequest_template()
+{
+}
+
+DisableRapidPowerShutDownRequest_template::DisableRapidPowerShutDownRequest_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+DisableRapidPowerShutDownRequest_template::DisableRapidPowerShutDownRequest_template(const DisableRapidPowerShutDownRequest& other_value)
+{
+copy_value(other_value);
+}
+
+DisableRapidPowerShutDownRequest_template::DisableRapidPowerShutDownRequest_template(const OPTIONAL<DisableRapidPowerShutDownRequest>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const DisableRapidPowerShutDownRequest&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.DisableRapidPowerShutDownRequest from an unbound optional field.");
+}
+}
+
+DisableRapidPowerShutDownRequest_template::DisableRapidPowerShutDownRequest_template(const DisableRapidPowerShutDownRequest_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+DisableRapidPowerShutDownRequest_template::~DisableRapidPowerShutDownRequest_template()
+{
+clean_up();
+}
+
+DisableRapidPowerShutDownRequest_template& DisableRapidPowerShutDownRequest_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+DisableRapidPowerShutDownRequest_template& DisableRapidPowerShutDownRequest_template::operator=(const DisableRapidPowerShutDownRequest& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+DisableRapidPowerShutDownRequest_template& DisableRapidPowerShutDownRequest_template::operator=(const OPTIONAL<DisableRapidPowerShutDownRequest>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const DisableRapidPowerShutDownRequest&)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 @UnifiedDiagnosticServices.DisableRapidPowerShutDownRequest.");
+}
+return *this;
+}
+
+DisableRapidPowerShutDownRequest_template& DisableRapidPowerShutDownRequest_template::operator=(const DisableRapidPowerShutDownRequest_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean DisableRapidPowerShutDownRequest_template::match(const DisableRapidPowerShutDownRequest& 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.resetType().is_bound()) return FALSE;
+if(!single_value->field_resetType.match(other_value.resetType(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.DisableRapidPowerShutDownRequest.");
+}
+return FALSE;
+}
+
+boolean DisableRapidPowerShutDownRequest_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_resetType.is_bound()
+;
+}
+
+boolean DisableRapidPowerShutDownRequest_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_resetType.is_value();
+}
+
+void DisableRapidPowerShutDownRequest_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+DisableRapidPowerShutDownRequest DisableRapidPowerShutDownRequest_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 @UnifiedDiagnosticServices.DisableRapidPowerShutDownRequest.");
+DisableRapidPowerShutDownRequest ret_val;
+if (single_value->field_resetType.is_bound()) {
+ret_val.resetType() = single_value->field_resetType.valueof();
+}
+return ret_val;
+}
+
+void DisableRapidPowerShutDownRequest_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.DisableRapidPowerShutDownRequest.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new DisableRapidPowerShutDownRequest_template[list_length];
+}
+
+DisableRapidPowerShutDownRequest_template& DisableRapidPowerShutDownRequest_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.DisableRapidPowerShutDownRequest.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.DisableRapidPowerShutDownRequest.");
+return value_list.list_value[list_index];
+}
+
+BITSTRING_template& DisableRapidPowerShutDownRequest_template::resetType()
+{
+set_specific();
+return single_value->field_resetType;
+}
+
+const BITSTRING_template& DisableRapidPowerShutDownRequest_template::resetType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field resetType of a non-specific template of type @UnifiedDiagnosticServices.DisableRapidPowerShutDownRequest.");
+return single_value->field_resetType;
+}
+
+int DisableRapidPowerShutDownRequest_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.DisableRapidPowerShutDownRequest which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 1;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.DisableRapidPowerShutDownRequest 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 @UnifiedDiagnosticServices.DisableRapidPowerShutDownRequest containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.DisableRapidPowerShutDownRequest containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.DisableRapidPowerShutDownRequest containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.DisableRapidPowerShutDownRequest containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.DisableRapidPowerShutDownRequest.");
+  }
+  return 0;
+}
+
+void DisableRapidPowerShutDownRequest_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ resetType := ");
+single_value->field_resetType.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void DisableRapidPowerShutDownRequest_template::log_match(const DisableRapidPowerShutDownRequest& 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_resetType.match(match_value.resetType(), legacy)){
+TTCN_Logger::log_logmatch_info(".resetType");
+single_value->field_resetType.log_match(match_value.resetType(), 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("{ resetType := ");
+single_value->field_resetType.log_match(match_value.resetType(), 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 DisableRapidPowerShutDownRequest_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_resetType.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 @UnifiedDiagnosticServices.DisableRapidPowerShutDownRequest.");
+}
+}
+
+void DisableRapidPowerShutDownRequest_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_resetType.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 DisableRapidPowerShutDownRequest_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 @UnifiedDiagnosticServices.DisableRapidPowerShutDownRequest.");
+}
+}
+
+void DisableRapidPowerShutDownRequest_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: {
+    DisableRapidPowerShutDownRequest_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (1<param.get_size()) {
+      param.error("record template of type @UnifiedDiagnosticServices.DisableRapidPowerShutDownRequest has 1 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) resetType().set_param(*param.get_elem(0));
+    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(), "resetType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          resetType().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 @UnifiedDiagnosticServices.DisableRapidPowerShutDownRequest: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.DisableRapidPowerShutDownRequest");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void DisableRapidPowerShutDownRequest_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_resetType.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.DisableRapidPowerShutDownRequest");
+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 : "@UnifiedDiagnosticServices.DisableRapidPowerShutDownRequest");
+}
+
+boolean DisableRapidPowerShutDownRequest_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean DisableRapidPowerShutDownRequest_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 ECUResetRequestType::copy_value(const ECUResetRequestType& other_value)
+{
+switch (other_value.union_selection) {
+case ALT_hardReset:
+field_hardReset = new HardResetRequest(*other_value.field_hardReset);
+break;
+case ALT_keyOffOnReset:
+field_keyOffOnReset = new KeyOffOnResetRequest(*other_value.field_keyOffOnReset);
+break;
+case ALT_softReset:
+field_softReset = new SoftResetRequest(*other_value.field_softReset);
+break;
+case ALT_enableRapidPowerShutDown:
+field_enableRapidPowerShutDown = new EnableRapidPowerShutDownRequest(*other_value.field_enableRapidPowerShutDown);
+break;
+case ALT_disableRapidPowerShutDown:
+field_disableRapidPowerShutDown = new DisableRapidPowerShutDownRequest(*other_value.field_disableRapidPowerShutDown);
+break;
+default:
+TTCN_error("Assignment of an unbound union value of type @UnifiedDiagnosticServices.ECUResetRequestType.");
+}
+union_selection = other_value.union_selection;
+}
+
+ECUResetRequestType::ECUResetRequestType()
+{
+union_selection = UNBOUND_VALUE;
+}
+
+ECUResetRequestType::ECUResetRequestType(const ECUResetRequestType& other_value)
+: Base_Type(){
+copy_value(other_value);
+}
+
+ECUResetRequestType::~ECUResetRequestType()
+{
+clean_up();
+}
+
+ECUResetRequestType& ECUResetRequestType::operator=(const ECUResetRequestType& other_value)
+{
+if (this != &other_value) {
+clean_up();
+copy_value(other_value);
+}
+return *this;
+}
+
+boolean ECUResetRequestType::operator==(const ECUResetRequestType& other_value) const
+{
+if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @UnifiedDiagnosticServices.ECUResetRequestType.");
+if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @UnifiedDiagnosticServices.ECUResetRequestType.");
+if (union_selection != other_value.union_selection) return FALSE;
+switch (union_selection) {
+case ALT_hardReset:
+return *field_hardReset == *other_value.field_hardReset;
+case ALT_keyOffOnReset:
+return *field_keyOffOnReset == *other_value.field_keyOffOnReset;
+case ALT_softReset:
+return *field_softReset == *other_value.field_softReset;
+case ALT_enableRapidPowerShutDown:
+return *field_enableRapidPowerShutDown == *other_value.field_enableRapidPowerShutDown;
+case ALT_disableRapidPowerShutDown:
+return *field_disableRapidPowerShutDown == *other_value.field_disableRapidPowerShutDown;
+default:
+return FALSE;
+}
+}
+
+HardResetRequest& ECUResetRequestType::hardReset()
+{
+if (union_selection != ALT_hardReset) {
+clean_up();
+field_hardReset = new HardResetRequest;
+union_selection = ALT_hardReset;
+}
+return *field_hardReset;
+}
+
+const HardResetRequest& ECUResetRequestType::hardReset() const
+{
+if (union_selection != ALT_hardReset) TTCN_error("Using non-selected field hardReset in a value of union type @UnifiedDiagnosticServices.ECUResetRequestType.");
+return *field_hardReset;
+}
+
+KeyOffOnResetRequest& ECUResetRequestType::keyOffOnReset()
+{
+if (union_selection != ALT_keyOffOnReset) {
+clean_up();
+field_keyOffOnReset = new KeyOffOnResetRequest;
+union_selection = ALT_keyOffOnReset;
+}
+return *field_keyOffOnReset;
+}
+
+const KeyOffOnResetRequest& ECUResetRequestType::keyOffOnReset() const
+{
+if (union_selection != ALT_keyOffOnReset) TTCN_error("Using non-selected field keyOffOnReset in a value of union type @UnifiedDiagnosticServices.ECUResetRequestType.");
+return *field_keyOffOnReset;
+}
+
+SoftResetRequest& ECUResetRequestType::softReset()
+{
+if (union_selection != ALT_softReset) {
+clean_up();
+field_softReset = new SoftResetRequest;
+union_selection = ALT_softReset;
+}
+return *field_softReset;
+}
+
+const SoftResetRequest& ECUResetRequestType::softReset() const
+{
+if (union_selection != ALT_softReset) TTCN_error("Using non-selected field softReset in a value of union type @UnifiedDiagnosticServices.ECUResetRequestType.");
+return *field_softReset;
+}
+
+EnableRapidPowerShutDownRequest& ECUResetRequestType::enableRapidPowerShutDown()
+{
+if (union_selection != ALT_enableRapidPowerShutDown) {
+clean_up();
+field_enableRapidPowerShutDown = new EnableRapidPowerShutDownRequest;
+union_selection = ALT_enableRapidPowerShutDown;
+}
+return *field_enableRapidPowerShutDown;
+}
+
+const EnableRapidPowerShutDownRequest& ECUResetRequestType::enableRapidPowerShutDown() const
+{
+if (union_selection != ALT_enableRapidPowerShutDown) TTCN_error("Using non-selected field enableRapidPowerShutDown in a value of union type @UnifiedDiagnosticServices.ECUResetRequestType.");
+return *field_enableRapidPowerShutDown;
+}
+
+DisableRapidPowerShutDownRequest& ECUResetRequestType::disableRapidPowerShutDown()
+{
+if (union_selection != ALT_disableRapidPowerShutDown) {
+clean_up();
+field_disableRapidPowerShutDown = new DisableRapidPowerShutDownRequest;
+union_selection = ALT_disableRapidPowerShutDown;
+}
+return *field_disableRapidPowerShutDown;
+}
+
+const DisableRapidPowerShutDownRequest& ECUResetRequestType::disableRapidPowerShutDown() const
+{
+if (union_selection != ALT_disableRapidPowerShutDown) TTCN_error("Using non-selected field disableRapidPowerShutDown in a value of union type @UnifiedDiagnosticServices.ECUResetRequestType.");
+return *field_disableRapidPowerShutDown;
+}
+
+boolean ECUResetRequestType::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 @UnifiedDiagnosticServices.ECUResetRequestType.");
+return union_selection == checked_selection;
+}
+
+boolean ECUResetRequestType::is_bound() const
+{
+  return union_selection != UNBOUND_VALUE;
+}
+
+boolean ECUResetRequestType::is_value() const
+{
+switch (union_selection) {
+case UNBOUND_VALUE: return FALSE;
+case ALT_hardReset: return field_hardReset->is_value();
+case ALT_keyOffOnReset: return field_keyOffOnReset->is_value();
+case ALT_softReset: return field_softReset->is_value();
+case ALT_enableRapidPowerShutDown: return field_enableRapidPowerShutDown->is_value();
+case ALT_disableRapidPowerShutDown: return field_disableRapidPowerShutDown->is_value();
+default: TTCN_error("Invalid selection in union is_bound");}
+}
+
+void ECUResetRequestType::clean_up()
+{
+switch (union_selection) {
+case ALT_hardReset:
+  delete field_hardReset;
+  break;
+case ALT_keyOffOnReset:
+  delete field_keyOffOnReset;
+  break;
+case ALT_softReset:
+  delete field_softReset;
+  break;
+case ALT_enableRapidPowerShutDown:
+  delete field_enableRapidPowerShutDown;
+  break;
+case ALT_disableRapidPowerShutDown:
+  delete field_disableRapidPowerShutDown;
+  break;
+default:
+  break;
+}
+union_selection = UNBOUND_VALUE;
+}
+
+void ECUResetRequestType::log() const
+{
+switch (union_selection) {
+case ALT_hardReset:
+TTCN_Logger::log_event_str("{ hardReset := ");
+field_hardReset->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_keyOffOnReset:
+TTCN_Logger::log_event_str("{ keyOffOnReset := ");
+field_keyOffOnReset->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_softReset:
+TTCN_Logger::log_event_str("{ softReset := ");
+field_softReset->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_enableRapidPowerShutDown:
+TTCN_Logger::log_event_str("{ enableRapidPowerShutDown := ");
+field_enableRapidPowerShutDown->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_disableRapidPowerShutDown:
+TTCN_Logger::log_event_str("{ disableRapidPowerShutDown := ");
+field_disableRapidPowerShutDown->log();
+TTCN_Logger::log_event_str(" }");
+break;
+default:
+TTCN_Logger::log_event_unbound();
+}
+}
+
+void ECUResetRequestType::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, "hardReset")) {
+    hardReset().set_param(*mp_last);
+    if (!hardReset().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "keyOffOnReset")) {
+    keyOffOnReset().set_param(*mp_last);
+    if (!keyOffOnReset().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "softReset")) {
+    softReset().set_param(*mp_last);
+    if (!softReset().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "enableRapidPowerShutDown")) {
+    enableRapidPowerShutDown().set_param(*mp_last);
+    if (!enableRapidPowerShutDown().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "disableRapidPowerShutDown")) {
+    disableRapidPowerShutDown().set_param(*mp_last);
+    if (!disableRapidPowerShutDown().is_bound()) clean_up();
+    return;
+  }
+  mp_last->error("Field %s does not exist in type @UnifiedDiagnosticServices.ECUResetRequestType.", last_name);
+}
+
+void ECUResetRequestType::set_implicit_omit()
+{
+switch (union_selection) {
+case ALT_hardReset:
+field_hardReset->set_implicit_omit(); break;
+case ALT_keyOffOnReset:
+field_keyOffOnReset->set_implicit_omit(); break;
+case ALT_softReset:
+field_softReset->set_implicit_omit(); break;
+case ALT_enableRapidPowerShutDown:
+field_enableRapidPowerShutDown->set_implicit_omit(); break;
+case ALT_disableRapidPowerShutDown:
+field_disableRapidPowerShutDown->set_implicit_omit(); break;
+default: break;
+}
+}
+
+void ECUResetRequestType::encode_text(Text_Buf& text_buf) const
+{
+text_buf.push_int(union_selection);
+switch (union_selection) {
+case ALT_hardReset:
+field_hardReset->encode_text(text_buf);
+break;
+case ALT_keyOffOnReset:
+field_keyOffOnReset->encode_text(text_buf);
+break;
+case ALT_softReset:
+field_softReset->encode_text(text_buf);
+break;
+case ALT_enableRapidPowerShutDown:
+field_enableRapidPowerShutDown->encode_text(text_buf);
+break;
+case ALT_disableRapidPowerShutDown:
+field_disableRapidPowerShutDown->encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an unbound value of union type @UnifiedDiagnosticServices.ECUResetRequestType.");
+}
+}
+
+void ECUResetRequestType::decode_text(Text_Buf& text_buf)
+{
+switch ((union_selection_type)text_buf.pull_int().get_val()) {
+case ALT_hardReset:
+hardReset().decode_text(text_buf);
+break;
+case ALT_keyOffOnReset:
+keyOffOnReset().decode_text(text_buf);
+break;
+case ALT_softReset:
+softReset().decode_text(text_buf);
+break;
+case ALT_enableRapidPowerShutDown:
+enableRapidPowerShutDown().decode_text(text_buf);
+break;
+case ALT_disableRapidPowerShutDown:
+disableRapidPowerShutDown().decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for type @UnifiedDiagnosticServices.ECUResetRequestType.");
+}
+}
+
+void ECUResetRequestType::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ECUResetRequestType::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ECUResetRequestType::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, HardResetRequest_descr_.raw->forceomit);
+      decoded_length = hardReset().RAW_decode(HardResetRequest_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, KeyOffOnResetRequest_descr_.raw->forceomit);
+      decoded_length = keyOffOnReset().RAW_decode(KeyOffOnResetRequest_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, SoftResetRequest_descr_.raw->forceomit);
+      decoded_length = softReset().RAW_decode(SoftResetRequest_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 3: {
+      RAW_Force_Omit field_force_omit(3, force_omit, EnableRapidPowerShutDownRequest_descr_.raw->forceomit);
+      decoded_length = enableRapidPowerShutDown().RAW_decode(EnableRapidPowerShutDownRequest_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 4: {
+      RAW_Force_Omit field_force_omit(4, force_omit, DisableRapidPowerShutDownRequest_descr_.raw->forceomit);
+      decoded_length = disableRapidPowerShutDown().RAW_decode(DisableRapidPowerShutDownRequest_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 {
+    boolean already_failed = FALSE;
+    already_failed = FALSE;
+    if (!already_failed) {
+      BITSTRING temporal_0;
+      int decoded_0_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_0_length = temporal_0.RAW_decode(HardResetRequest_resetType_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_0_length > 0) {
+        if (temporal_0 ==  bs_0) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(0, force_omit, HardResetRequest_descr_.raw->forceomit);
+          decoded_length = hardReset().RAW_decode(HardResetRequest_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_hardReset).resetType() ==  bs_0) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      BITSTRING temporal_1;
+      int decoded_1_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_1_length = temporal_1.RAW_decode(KeyOffOnResetRequest_resetType_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_1_length > 0) {
+        if (temporal_1 ==  bs_1) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(1, force_omit, KeyOffOnResetRequest_descr_.raw->forceomit);
+          decoded_length = keyOffOnReset().RAW_decode(KeyOffOnResetRequest_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_keyOffOnReset).resetType() ==  bs_1) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      BITSTRING temporal_2;
+      int decoded_2_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_2_length = temporal_2.RAW_decode(SoftResetRequest_resetType_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_2_length > 0) {
+        if (temporal_2 ==  bs_2) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(2, force_omit, SoftResetRequest_descr_.raw->forceomit);
+          decoded_length = softReset().RAW_decode(SoftResetRequest_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_softReset).resetType() ==  bs_2) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      BITSTRING temporal_3;
+      int decoded_3_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_3_length = temporal_3.RAW_decode(EnableRapidPowerShutDownRequest_resetType_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_3_length > 0) {
+        if (temporal_3 ==  bs_3) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(3, force_omit, EnableRapidPowerShutDownRequest_descr_.raw->forceomit);
+          decoded_length = enableRapidPowerShutDown().RAW_decode(EnableRapidPowerShutDownRequest_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_enableRapidPowerShutDown).resetType() ==  bs_3) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      BITSTRING temporal_4;
+      int decoded_4_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_4_length = temporal_4.RAW_decode(DisableRapidPowerShutDownRequest_resetType_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_4_length > 0) {
+        if (temporal_4 ==  bs_4) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(4, force_omit, DisableRapidPowerShutDownRequest_descr_.raw->forceomit);
+          decoded_length = disableRapidPowerShutDown().RAW_decode(DisableRapidPowerShutDownRequest_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_disableRapidPowerShutDown).resetType() ==  bs_4) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+ }
+ clean_up();
+ return -1;
+}
+
+int ECUResetRequestType::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const
+{
+  int encoded_length = 0;
+  myleaf.isleaf = FALSE;
+  myleaf.body.node.num_of_nodes = 5;  myleaf.body.node.nodes = init_nodes_of_enc_tree(5);
+  memset(myleaf.body.node.nodes, 0, 5 * sizeof(RAW_enc_tree *));
+  switch (union_selection) {
+  case ALT_hardReset:
+    myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 0, HardResetRequest_descr_.raw);
+    encoded_length = field_hardReset->RAW_encode(HardResetRequest_descr_, *myleaf.body.node.nodes[0]);
+    myleaf.body.node.nodes[0]->coding_descr = &HardResetRequest_descr_;
+    if ((*field_hardReset).resetType() !=  bs_0) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={0,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   bs_0.RAW_encode(HardResetRequest_resetType_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);
+  }
+    }
+    break;
+  case ALT_keyOffOnReset:
+    myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 1, KeyOffOnResetRequest_descr_.raw);
+    encoded_length = field_keyOffOnReset->RAW_encode(KeyOffOnResetRequest_descr_, *myleaf.body.node.nodes[1]);
+    myleaf.body.node.nodes[1]->coding_descr = &KeyOffOnResetRequest_descr_;
+    if ((*field_keyOffOnReset).resetType() !=  bs_1) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={1,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   bs_1.RAW_encode(KeyOffOnResetRequest_resetType_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);
+  }
+    }
+    break;
+  case ALT_softReset:
+    myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 2, SoftResetRequest_descr_.raw);
+    encoded_length = field_softReset->RAW_encode(SoftResetRequest_descr_, *myleaf.body.node.nodes[2]);
+    myleaf.body.node.nodes[2]->coding_descr = &SoftResetRequest_descr_;
+    if ((*field_softReset).resetType() !=  bs_2) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={2,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   bs_2.RAW_encode(SoftResetRequest_resetType_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);
+  }
+    }
+    break;
+  case ALT_enableRapidPowerShutDown:
+    myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 3, EnableRapidPowerShutDownRequest_descr_.raw);
+    encoded_length = field_enableRapidPowerShutDown->RAW_encode(EnableRapidPowerShutDownRequest_descr_, *myleaf.body.node.nodes[3]);
+    myleaf.body.node.nodes[3]->coding_descr = &EnableRapidPowerShutDownRequest_descr_;
+    if ((*field_enableRapidPowerShutDown).resetType() !=  bs_3) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={3,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   bs_3.RAW_encode(EnableRapidPowerShutDownRequest_resetType_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);
+  }
+    }
+    break;
+  case ALT_disableRapidPowerShutDown:
+    myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 4, DisableRapidPowerShutDownRequest_descr_.raw);
+    encoded_length = field_disableRapidPowerShutDown->RAW_encode(DisableRapidPowerShutDownRequest_descr_, *myleaf.body.node.nodes[4]);
+    myleaf.body.node.nodes[4]->coding_descr = &DisableRapidPowerShutDownRequest_descr_;
+    if ((*field_disableRapidPowerShutDown).resetType() !=  bs_4) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={4,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   bs_4.RAW_encode(DisableRapidPowerShutDownRequest_resetType_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);
+  }
+    }
+    break;
+  default:
+    TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
+  }
+  return encoded_length;
+}
+
+void ECUResetRequestType_template::copy_value(const ECUResetRequestType& other_value)
+{
+single_value.union_selection = other_value.get_selection();
+switch (single_value.union_selection) {
+case ECUResetRequestType::ALT_hardReset:
+single_value.field_hardReset = new HardResetRequest_template(other_value.hardReset());
+break;
+case ECUResetRequestType::ALT_keyOffOnReset:
+single_value.field_keyOffOnReset = new KeyOffOnResetRequest_template(other_value.keyOffOnReset());
+break;
+case ECUResetRequestType::ALT_softReset:
+single_value.field_softReset = new SoftResetRequest_template(other_value.softReset());
+break;
+case ECUResetRequestType::ALT_enableRapidPowerShutDown:
+single_value.field_enableRapidPowerShutDown = new EnableRapidPowerShutDownRequest_template(other_value.enableRapidPowerShutDown());
+break;
+case ECUResetRequestType::ALT_disableRapidPowerShutDown:
+single_value.field_disableRapidPowerShutDown = new DisableRapidPowerShutDownRequest_template(other_value.disableRapidPowerShutDown());
+break;
+default:
+TTCN_error("Initializing a template with an unbound value of type @UnifiedDiagnosticServices.ECUResetRequestType.");
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ECUResetRequestType_template::copy_template(const ECUResetRequestType_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 ECUResetRequestType::ALT_hardReset:
+single_value.field_hardReset = new HardResetRequest_template(*other_value.single_value.field_hardReset);
+break;
+case ECUResetRequestType::ALT_keyOffOnReset:
+single_value.field_keyOffOnReset = new KeyOffOnResetRequest_template(*other_value.single_value.field_keyOffOnReset);
+break;
+case ECUResetRequestType::ALT_softReset:
+single_value.field_softReset = new SoftResetRequest_template(*other_value.single_value.field_softReset);
+break;
+case ECUResetRequestType::ALT_enableRapidPowerShutDown:
+single_value.field_enableRapidPowerShutDown = new EnableRapidPowerShutDownRequest_template(*other_value.single_value.field_enableRapidPowerShutDown);
+break;
+case ECUResetRequestType::ALT_disableRapidPowerShutDown:
+single_value.field_disableRapidPowerShutDown = new DisableRapidPowerShutDownRequest_template(*other_value.single_value.field_disableRapidPowerShutDown);
+break;
+default:
+TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @UnifiedDiagnosticServices.ECUResetRequestType.");
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ECUResetRequestType_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;
+default:
+TTCN_error("Copying an uninitialized template of union type @UnifiedDiagnosticServices.ECUResetRequestType.");
+}
+set_selection(other_value);
+}
+
+ECUResetRequestType_template::ECUResetRequestType_template()
+{
+}
+
+ECUResetRequestType_template::ECUResetRequestType_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ECUResetRequestType_template::ECUResetRequestType_template(const ECUResetRequestType& other_value)
+{
+copy_value(other_value);
+}
+
+ECUResetRequestType_template::ECUResetRequestType_template(const OPTIONAL<ECUResetRequestType>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ECUResetRequestType&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of union type @UnifiedDiagnosticServices.ECUResetRequestType from an unbound optional field.");
+}
+}
+
+ECUResetRequestType_template::ECUResetRequestType_template(const ECUResetRequestType_template& other_value)
+: Base_Template(){
+copy_template(other_value);
+}
+
+ECUResetRequestType_template::~ECUResetRequestType_template()
+{
+clean_up();
+}
+
+void ECUResetRequestType_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case ECUResetRequestType::ALT_hardReset:
+delete single_value.field_hardReset;
+break;
+case ECUResetRequestType::ALT_keyOffOnReset:
+delete single_value.field_keyOffOnReset;
+break;
+case ECUResetRequestType::ALT_softReset:
+delete single_value.field_softReset;
+break;
+case ECUResetRequestType::ALT_enableRapidPowerShutDown:
+delete single_value.field_enableRapidPowerShutDown;
+break;
+case ECUResetRequestType::ALT_disableRapidPowerShutDown:
+delete single_value.field_disableRapidPowerShutDown;
+default:
+break;
+}
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ECUResetRequestType_template& ECUResetRequestType_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ECUResetRequestType_template& ECUResetRequestType_template::operator=(const ECUResetRequestType& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ECUResetRequestType_template& ECUResetRequestType_template::operator=(const OPTIONAL<ECUResetRequestType>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ECUResetRequestType&)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 @UnifiedDiagnosticServices.ECUResetRequestType.");
+}
+return *this;
+}
+
+ECUResetRequestType_template& ECUResetRequestType_template::operator=(const ECUResetRequestType_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ECUResetRequestType_template::match(const ECUResetRequestType& 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:
+{
+ECUResetRequestType::union_selection_type value_selection = other_value.get_selection();
+if (value_selection == ECUResetRequestType::UNBOUND_VALUE) return FALSE;
+if (value_selection != single_value.union_selection) return FALSE;
+switch (value_selection) {
+case ECUResetRequestType::ALT_hardReset:
+return single_value.field_hardReset->match(other_value.hardReset(), legacy);
+case ECUResetRequestType::ALT_keyOffOnReset:
+return single_value.field_keyOffOnReset->match(other_value.keyOffOnReset(), legacy);
+case ECUResetRequestType::ALT_softReset:
+return single_value.field_softReset->match(other_value.softReset(), legacy);
+case ECUResetRequestType::ALT_enableRapidPowerShutDown:
+return single_value.field_enableRapidPowerShutDown->match(other_value.enableRapidPowerShutDown(), legacy);
+case ECUResetRequestType::ALT_disableRapidPowerShutDown:
+return single_value.field_disableRapidPowerShutDown->match(other_value.disableRapidPowerShutDown(), legacy);
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @UnifiedDiagnosticServices.ECUResetRequestType.");
+}
+}
+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;
+default:
+TTCN_error ("Matching an uninitialized template of union type @UnifiedDiagnosticServices.ECUResetRequestType.");
+}
+return FALSE;
+}
+
+boolean ECUResetRequestType_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+switch (single_value.union_selection) {
+case ECUResetRequestType::ALT_hardReset:
+return single_value.field_hardReset->is_value();
+case ECUResetRequestType::ALT_keyOffOnReset:
+return single_value.field_keyOffOnReset->is_value();
+case ECUResetRequestType::ALT_softReset:
+return single_value.field_softReset->is_value();
+case ECUResetRequestType::ALT_enableRapidPowerShutDown:
+return single_value.field_enableRapidPowerShutDown->is_value();
+case ECUResetRequestType::ALT_disableRapidPowerShutDown:
+return single_value.field_disableRapidPowerShutDown->is_value();
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @UnifiedDiagnosticServices.ECUResetRequestType.");
+}
+}
+
+ECUResetRequestType ECUResetRequestType_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 @UnifiedDiagnosticServices.ECUResetRequestType.");
+ECUResetRequestType ret_val;
+switch (single_value.union_selection) {
+case ECUResetRequestType::ALT_hardReset:
+ret_val.hardReset() = single_value.field_hardReset->valueof();
+break;
+case ECUResetRequestType::ALT_keyOffOnReset:
+ret_val.keyOffOnReset() = single_value.field_keyOffOnReset->valueof();
+break;
+case ECUResetRequestType::ALT_softReset:
+ret_val.softReset() = single_value.field_softReset->valueof();
+break;
+case ECUResetRequestType::ALT_enableRapidPowerShutDown:
+ret_val.enableRapidPowerShutDown() = single_value.field_enableRapidPowerShutDown->valueof();
+break;
+case ECUResetRequestType::ALT_disableRapidPowerShutDown:
+ret_val.disableRapidPowerShutDown() = single_value.field_disableRapidPowerShutDown->valueof();
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @UnifiedDiagnosticServices.ECUResetRequestType.");
+}
+return ret_val;
+}
+
+ECUResetRequestType_template& ECUResetRequestType_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @UnifiedDiagnosticServices.ECUResetRequestType.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @UnifiedDiagnosticServices.ECUResetRequestType.");
+return value_list.list_value[list_index];
+}
+void ECUResetRequestType_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error ("Internal error: Setting an invalid list for a template of union type @UnifiedDiagnosticServices.ECUResetRequestType.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ECUResetRequestType_template[list_length];
+}
+
+HardResetRequest_template& ECUResetRequestType_template::hardReset()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECUResetRequestType::ALT_hardReset) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_hardReset = new HardResetRequest_template(ANY_VALUE);
+else single_value.field_hardReset = new HardResetRequest_template;
+single_value.union_selection = ECUResetRequestType::ALT_hardReset;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_hardReset;
+}
+
+const HardResetRequest_template& ECUResetRequestType_template::hardReset() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field hardReset in a non-specific template of union type @UnifiedDiagnosticServices.ECUResetRequestType.");
+if (single_value.union_selection != ECUResetRequestType::ALT_hardReset) TTCN_error("Accessing non-selected field hardReset in a template of union type @UnifiedDiagnosticServices.ECUResetRequestType.");
+return *single_value.field_hardReset;
+}
+
+KeyOffOnResetRequest_template& ECUResetRequestType_template::keyOffOnReset()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECUResetRequestType::ALT_keyOffOnReset) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_keyOffOnReset = new KeyOffOnResetRequest_template(ANY_VALUE);
+else single_value.field_keyOffOnReset = new KeyOffOnResetRequest_template;
+single_value.union_selection = ECUResetRequestType::ALT_keyOffOnReset;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_keyOffOnReset;
+}
+
+const KeyOffOnResetRequest_template& ECUResetRequestType_template::keyOffOnReset() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field keyOffOnReset in a non-specific template of union type @UnifiedDiagnosticServices.ECUResetRequestType.");
+if (single_value.union_selection != ECUResetRequestType::ALT_keyOffOnReset) TTCN_error("Accessing non-selected field keyOffOnReset in a template of union type @UnifiedDiagnosticServices.ECUResetRequestType.");
+return *single_value.field_keyOffOnReset;
+}
+
+SoftResetRequest_template& ECUResetRequestType_template::softReset()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECUResetRequestType::ALT_softReset) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_softReset = new SoftResetRequest_template(ANY_VALUE);
+else single_value.field_softReset = new SoftResetRequest_template;
+single_value.union_selection = ECUResetRequestType::ALT_softReset;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_softReset;
+}
+
+const SoftResetRequest_template& ECUResetRequestType_template::softReset() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field softReset in a non-specific template of union type @UnifiedDiagnosticServices.ECUResetRequestType.");
+if (single_value.union_selection != ECUResetRequestType::ALT_softReset) TTCN_error("Accessing non-selected field softReset in a template of union type @UnifiedDiagnosticServices.ECUResetRequestType.");
+return *single_value.field_softReset;
+}
+
+EnableRapidPowerShutDownRequest_template& ECUResetRequestType_template::enableRapidPowerShutDown()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECUResetRequestType::ALT_enableRapidPowerShutDown) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_enableRapidPowerShutDown = new EnableRapidPowerShutDownRequest_template(ANY_VALUE);
+else single_value.field_enableRapidPowerShutDown = new EnableRapidPowerShutDownRequest_template;
+single_value.union_selection = ECUResetRequestType::ALT_enableRapidPowerShutDown;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_enableRapidPowerShutDown;
+}
+
+const EnableRapidPowerShutDownRequest_template& ECUResetRequestType_template::enableRapidPowerShutDown() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field enableRapidPowerShutDown in a non-specific template of union type @UnifiedDiagnosticServices.ECUResetRequestType.");
+if (single_value.union_selection != ECUResetRequestType::ALT_enableRapidPowerShutDown) TTCN_error("Accessing non-selected field enableRapidPowerShutDown in a template of union type @UnifiedDiagnosticServices.ECUResetRequestType.");
+return *single_value.field_enableRapidPowerShutDown;
+}
+
+DisableRapidPowerShutDownRequest_template& ECUResetRequestType_template::disableRapidPowerShutDown()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECUResetRequestType::ALT_disableRapidPowerShutDown) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_disableRapidPowerShutDown = new DisableRapidPowerShutDownRequest_template(ANY_VALUE);
+else single_value.field_disableRapidPowerShutDown = new DisableRapidPowerShutDownRequest_template;
+single_value.union_selection = ECUResetRequestType::ALT_disableRapidPowerShutDown;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_disableRapidPowerShutDown;
+}
+
+const DisableRapidPowerShutDownRequest_template& ECUResetRequestType_template::disableRapidPowerShutDown() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field disableRapidPowerShutDown in a non-specific template of union type @UnifiedDiagnosticServices.ECUResetRequestType.");
+if (single_value.union_selection != ECUResetRequestType::ALT_disableRapidPowerShutDown) TTCN_error("Accessing non-selected field disableRapidPowerShutDown in a template of union type @UnifiedDiagnosticServices.ECUResetRequestType.");
+return *single_value.field_disableRapidPowerShutDown;
+}
+
+boolean ECUResetRequestType_template::ischosen(ECUResetRequestType::union_selection_type checked_selection) const
+{
+if (checked_selection == ECUResetRequestType::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @UnifiedDiagnosticServices.ECUResetRequestType.");
+switch (template_selection) {
+case SPECIFIC_VALUE:
+if (single_value.union_selection == ECUResetRequestType::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @UnifiedDiagnosticServices.ECUResetRequestType.");
+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 @UnifiedDiagnosticServices.ECUResetRequestType 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 ECUResetRequestType_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case ECUResetRequestType::ALT_hardReset:
+TTCN_Logger::log_event_str("{ hardReset := ");
+single_value.field_hardReset->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECUResetRequestType::ALT_keyOffOnReset:
+TTCN_Logger::log_event_str("{ keyOffOnReset := ");
+single_value.field_keyOffOnReset->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECUResetRequestType::ALT_softReset:
+TTCN_Logger::log_event_str("{ softReset := ");
+single_value.field_softReset->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECUResetRequestType::ALT_enableRapidPowerShutDown:
+TTCN_Logger::log_event_str("{ enableRapidPowerShutDown := ");
+single_value.field_enableRapidPowerShutDown->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECUResetRequestType::ALT_disableRapidPowerShutDown:
+TTCN_Logger::log_event_str("{ disableRapidPowerShutDown := ");
+single_value.field_disableRapidPowerShutDown->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 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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ECUResetRequestType_template::log_match(const ECUResetRequestType& 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()) {
+switch (single_value.union_selection) {
+case ECUResetRequestType::ALT_hardReset:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".hardReset");
+single_value.field_hardReset->log_match(match_value.hardReset(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ hardReset := ");
+single_value.field_hardReset->log_match(match_value.hardReset(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECUResetRequestType::ALT_keyOffOnReset:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".keyOffOnReset");
+single_value.field_keyOffOnReset->log_match(match_value.keyOffOnReset(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ keyOffOnReset := ");
+single_value.field_keyOffOnReset->log_match(match_value.keyOffOnReset(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECUResetRequestType::ALT_softReset:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".softReset");
+single_value.field_softReset->log_match(match_value.softReset(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ softReset := ");
+single_value.field_softReset->log_match(match_value.softReset(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECUResetRequestType::ALT_enableRapidPowerShutDown:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".enableRapidPowerShutDown");
+single_value.field_enableRapidPowerShutDown->log_match(match_value.enableRapidPowerShutDown(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ enableRapidPowerShutDown := ");
+single_value.field_enableRapidPowerShutDown->log_match(match_value.enableRapidPowerShutDown(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECUResetRequestType::ALT_disableRapidPowerShutDown:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".disableRapidPowerShutDown");
+single_value.field_disableRapidPowerShutDown->log_match(match_value.disableRapidPowerShutDown(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ disableRapidPowerShutDown := ");
+single_value.field_disableRapidPowerShutDown->log_match(match_value.disableRapidPowerShutDown(), 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 ECUResetRequestType_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 ECUResetRequestType::ALT_hardReset:
+single_value.field_hardReset->encode_text(text_buf);
+break;
+case ECUResetRequestType::ALT_keyOffOnReset:
+single_value.field_keyOffOnReset->encode_text(text_buf);
+break;
+case ECUResetRequestType::ALT_softReset:
+single_value.field_softReset->encode_text(text_buf);
+break;
+case ECUResetRequestType::ALT_enableRapidPowerShutDown:
+single_value.field_enableRapidPowerShutDown->encode_text(text_buf);
+break;
+case ECUResetRequestType::ALT_disableRapidPowerShutDown:
+single_value.field_disableRapidPowerShutDown->encode_text(text_buf);
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @UnifiedDiagnosticServices.ECUResetRequestType.");
+}
+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 @UnifiedDiagnosticServices.ECUResetRequestType.");
+}
+}
+
+void ECUResetRequestType_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+{
+single_value.union_selection = ECUResetRequestType::UNBOUND_VALUE;
+ECUResetRequestType::union_selection_type new_selection = (ECUResetRequestType::union_selection_type)text_buf.pull_int().get_val();
+switch (new_selection) {
+case ECUResetRequestType::ALT_hardReset:
+single_value.field_hardReset = new HardResetRequest_template;
+single_value.field_hardReset->decode_text(text_buf);
+break;
+case ECUResetRequestType::ALT_keyOffOnReset:
+single_value.field_keyOffOnReset = new KeyOffOnResetRequest_template;
+single_value.field_keyOffOnReset->decode_text(text_buf);
+break;
+case ECUResetRequestType::ALT_softReset:
+single_value.field_softReset = new SoftResetRequest_template;
+single_value.field_softReset->decode_text(text_buf);
+break;
+case ECUResetRequestType::ALT_enableRapidPowerShutDown:
+single_value.field_enableRapidPowerShutDown = new EnableRapidPowerShutDownRequest_template;
+single_value.field_enableRapidPowerShutDown->decode_text(text_buf);
+break;
+case ECUResetRequestType::ALT_disableRapidPowerShutDown:
+single_value.field_disableRapidPowerShutDown = new DisableRapidPowerShutDownRequest_template;
+single_value.field_disableRapidPowerShutDown->decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @UnifiedDiagnosticServices.ECUResetRequestType.");
+}
+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 ECUResetRequestType_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 @UnifiedDiagnosticServices.ECUResetRequestType.");
+}
+}
+
+boolean ECUResetRequestType_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ECUResetRequestType_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 ECUResetRequestType_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 `@UnifiedDiagnosticServices.ECUResetRequestType'");
+    }
+    if (strcmp("hardReset", param_field) == 0) {
+      hardReset().set_param(param);
+      return;
+    } else if (strcmp("keyOffOnReset", param_field) == 0) {
+      keyOffOnReset().set_param(param);
+      return;
+    } else if (strcmp("softReset", param_field) == 0) {
+      softReset().set_param(param);
+      return;
+    } else if (strcmp("enableRapidPowerShutDown", param_field) == 0) {
+      enableRapidPowerShutDown().set_param(param);
+      return;
+    } else if (strcmp("disableRapidPowerShutDown", param_field) == 0) {
+      disableRapidPowerShutDown().set_param(param);
+      return;
+    } else param.error("Field `%s' not found in union template type `@UnifiedDiagnosticServices.ECUResetRequestType'", 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: {
+    ECUResetRequestType_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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", "@UnifiedDiagnosticServices.ECUResetRequestType");
+    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, "hardReset")) {
+      hardReset().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "keyOffOnReset")) {
+      keyOffOnReset().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "softReset")) {
+      softReset().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "enableRapidPowerShutDown")) {
+      enableRapidPowerShutDown().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "disableRapidPowerShutDown")) {
+      disableRapidPowerShutDown().set_param(*mp_last);
+      break;
+    }
+    mp_last->error("Field %s does not exist in type @UnifiedDiagnosticServices.ECUResetRequestType.", last_name);
+  } break;
+  default:
+    param.type_error("union template", "@UnifiedDiagnosticServices.ECUResetRequestType");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ECUResetRequestType_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 ECUResetRequestType::ALT_hardReset:
+single_value.field_hardReset->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.ECUResetRequestType");
+return;
+case ECUResetRequestType::ALT_keyOffOnReset:
+single_value.field_keyOffOnReset->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.ECUResetRequestType");
+return;
+case ECUResetRequestType::ALT_softReset:
+single_value.field_softReset->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.ECUResetRequestType");
+return;
+case ECUResetRequestType::ALT_enableRapidPowerShutDown:
+single_value.field_enableRapidPowerShutDown->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.ECUResetRequestType");
+return;
+case ECUResetRequestType::ALT_disableRapidPowerShutDown:
+single_value.field_disableRapidPowerShutDown->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.ECUResetRequestType");
+return;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @UnifiedDiagnosticServices.ECUResetRequestType.");
+}
+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 : "@UnifiedDiagnosticServices.ECUResetRequestType");
+}
+
+HardResetResponse::HardResetResponse()
+{
+}
+
+HardResetResponse::HardResetResponse(const BITSTRING& par_resetType)
+  :   field_resetType(par_resetType)
+{
+}
+
+HardResetResponse::HardResetResponse(const HardResetResponse& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.HardResetResponse.");
+if (other_value.resetType().is_bound()) field_resetType = other_value.resetType();
+else field_resetType.clean_up();
+}
+
+void HardResetResponse::clean_up()
+{
+field_resetType.clean_up();
+}
+
+const TTCN_Typedescriptor_t* HardResetResponse::get_descriptor() const { return &HardResetResponse_descr_; }
+HardResetResponse& HardResetResponse::operator=(const HardResetResponse& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.HardResetResponse.");
+  if (other_value.resetType().is_bound()) field_resetType = other_value.resetType();
+  else field_resetType.clean_up();
+}
+return *this;
+}
+
+boolean HardResetResponse::operator==(const HardResetResponse& other_value) const
+{
+return field_resetType==other_value.field_resetType;
+}
+
+boolean HardResetResponse::is_bound() const
+{
+return (field_resetType.is_bound());
+}
+boolean HardResetResponse::is_value() const
+{
+return field_resetType.is_value();
+}
+void HardResetResponse::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ resetType := ");
+field_resetType.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void HardResetResponse::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 (1<param.get_size()) {
+      param.error("record value of type @UnifiedDiagnosticServices.HardResetResponse has 1 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) resetType().set_param(*param.get_elem(0));
+    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(), "resetType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          resetType().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 @UnifiedDiagnosticServices.HardResetResponse: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.HardResetResponse");
+  }
+}
+
+void HardResetResponse::set_implicit_omit()
+{
+if (resetType().is_bound()) resetType().set_implicit_omit();
+}
+
+void HardResetResponse::encode_text(Text_Buf& text_buf) const
+{
+field_resetType.encode_text(text_buf);
+}
+
+void HardResetResponse::decode_text(Text_Buf& text_buf)
+{
+field_resetType.decode_text(text_buf);
+}
+
+void HardResetResponse::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void HardResetResponse::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int HardResetResponse::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, HardResetResponse_resetType_descr_.raw->forceomit);
+  decoded_field_length = field_resetType.RAW_decode(HardResetResponse_resetType_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int HardResetResponse::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 = 1;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(1);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, HardResetResponse_resetType_descr_.raw);
+  encoded_length += field_resetType.RAW_encode(HardResetResponse_resetType_descr_, *myleaf.body.node.nodes[0]);
+  return myleaf.length = encoded_length;
+}
+
+struct HardResetResponse_template::single_value_struct {
+BITSTRING_template field_resetType;
+};
+
+void HardResetResponse_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_resetType = ANY_VALUE;
+}
+}
+}
+
+void HardResetResponse_template::copy_value(const HardResetResponse& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.resetType().is_bound()) {
+  single_value->field_resetType = other_value.resetType();
+} else {
+  single_value->field_resetType.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void HardResetResponse_template::copy_template(const HardResetResponse_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.resetType().get_selection()) {
+single_value->field_resetType = other_value.resetType();
+} else {
+single_value->field_resetType.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new HardResetResponse_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.HardResetResponse.");
+break;
+}
+set_selection(other_value);
+}
+
+HardResetResponse_template::HardResetResponse_template()
+{
+}
+
+HardResetResponse_template::HardResetResponse_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+HardResetResponse_template::HardResetResponse_template(const HardResetResponse& other_value)
+{
+copy_value(other_value);
+}
+
+HardResetResponse_template::HardResetResponse_template(const OPTIONAL<HardResetResponse>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const HardResetResponse&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.HardResetResponse from an unbound optional field.");
+}
+}
+
+HardResetResponse_template::HardResetResponse_template(const HardResetResponse_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+HardResetResponse_template::~HardResetResponse_template()
+{
+clean_up();
+}
+
+HardResetResponse_template& HardResetResponse_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+HardResetResponse_template& HardResetResponse_template::operator=(const HardResetResponse& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+HardResetResponse_template& HardResetResponse_template::operator=(const OPTIONAL<HardResetResponse>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const HardResetResponse&)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 @UnifiedDiagnosticServices.HardResetResponse.");
+}
+return *this;
+}
+
+HardResetResponse_template& HardResetResponse_template::operator=(const HardResetResponse_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean HardResetResponse_template::match(const HardResetResponse& 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.resetType().is_bound()) return FALSE;
+if(!single_value->field_resetType.match(other_value.resetType(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.HardResetResponse.");
+}
+return FALSE;
+}
+
+boolean HardResetResponse_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_resetType.is_bound()
+;
+}
+
+boolean HardResetResponse_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_resetType.is_value();
+}
+
+void HardResetResponse_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+HardResetResponse HardResetResponse_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 @UnifiedDiagnosticServices.HardResetResponse.");
+HardResetResponse ret_val;
+if (single_value->field_resetType.is_bound()) {
+ret_val.resetType() = single_value->field_resetType.valueof();
+}
+return ret_val;
+}
+
+void HardResetResponse_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.HardResetResponse.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new HardResetResponse_template[list_length];
+}
+
+HardResetResponse_template& HardResetResponse_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.HardResetResponse.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.HardResetResponse.");
+return value_list.list_value[list_index];
+}
+
+BITSTRING_template& HardResetResponse_template::resetType()
+{
+set_specific();
+return single_value->field_resetType;
+}
+
+const BITSTRING_template& HardResetResponse_template::resetType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field resetType of a non-specific template of type @UnifiedDiagnosticServices.HardResetResponse.");
+return single_value->field_resetType;
+}
+
+int HardResetResponse_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.HardResetResponse which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 1;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.HardResetResponse 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 @UnifiedDiagnosticServices.HardResetResponse containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.HardResetResponse containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.HardResetResponse containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.HardResetResponse containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.HardResetResponse.");
+  }
+  return 0;
+}
+
+void HardResetResponse_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ resetType := ");
+single_value->field_resetType.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void HardResetResponse_template::log_match(const HardResetResponse& 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_resetType.match(match_value.resetType(), legacy)){
+TTCN_Logger::log_logmatch_info(".resetType");
+single_value->field_resetType.log_match(match_value.resetType(), 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("{ resetType := ");
+single_value->field_resetType.log_match(match_value.resetType(), 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 HardResetResponse_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_resetType.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 @UnifiedDiagnosticServices.HardResetResponse.");
+}
+}
+
+void HardResetResponse_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_resetType.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 HardResetResponse_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 @UnifiedDiagnosticServices.HardResetResponse.");
+}
+}
+
+void HardResetResponse_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: {
+    HardResetResponse_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (1<param.get_size()) {
+      param.error("record template of type @UnifiedDiagnosticServices.HardResetResponse has 1 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) resetType().set_param(*param.get_elem(0));
+    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(), "resetType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          resetType().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 @UnifiedDiagnosticServices.HardResetResponse: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.HardResetResponse");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void HardResetResponse_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_resetType.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.HardResetResponse");
+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 : "@UnifiedDiagnosticServices.HardResetResponse");
+}
+
+boolean HardResetResponse_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean HardResetResponse_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+KeyOffOnResetResponse::KeyOffOnResetResponse()
+{
+}
+
+KeyOffOnResetResponse::KeyOffOnResetResponse(const BITSTRING& par_resetType)
+  :   field_resetType(par_resetType)
+{
+}
+
+KeyOffOnResetResponse::KeyOffOnResetResponse(const KeyOffOnResetResponse& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.KeyOffOnResetResponse.");
+if (other_value.resetType().is_bound()) field_resetType = other_value.resetType();
+else field_resetType.clean_up();
+}
+
+void KeyOffOnResetResponse::clean_up()
+{
+field_resetType.clean_up();
+}
+
+const TTCN_Typedescriptor_t* KeyOffOnResetResponse::get_descriptor() const { return &KeyOffOnResetResponse_descr_; }
+KeyOffOnResetResponse& KeyOffOnResetResponse::operator=(const KeyOffOnResetResponse& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.KeyOffOnResetResponse.");
+  if (other_value.resetType().is_bound()) field_resetType = other_value.resetType();
+  else field_resetType.clean_up();
+}
+return *this;
+}
+
+boolean KeyOffOnResetResponse::operator==(const KeyOffOnResetResponse& other_value) const
+{
+return field_resetType==other_value.field_resetType;
+}
+
+boolean KeyOffOnResetResponse::is_bound() const
+{
+return (field_resetType.is_bound());
+}
+boolean KeyOffOnResetResponse::is_value() const
+{
+return field_resetType.is_value();
+}
+void KeyOffOnResetResponse::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ resetType := ");
+field_resetType.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void KeyOffOnResetResponse::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 (1<param.get_size()) {
+      param.error("record value of type @UnifiedDiagnosticServices.KeyOffOnResetResponse has 1 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) resetType().set_param(*param.get_elem(0));
+    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(), "resetType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          resetType().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 @UnifiedDiagnosticServices.KeyOffOnResetResponse: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.KeyOffOnResetResponse");
+  }
+}
+
+void KeyOffOnResetResponse::set_implicit_omit()
+{
+if (resetType().is_bound()) resetType().set_implicit_omit();
+}
+
+void KeyOffOnResetResponse::encode_text(Text_Buf& text_buf) const
+{
+field_resetType.encode_text(text_buf);
+}
+
+void KeyOffOnResetResponse::decode_text(Text_Buf& text_buf)
+{
+field_resetType.decode_text(text_buf);
+}
+
+void KeyOffOnResetResponse::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void KeyOffOnResetResponse::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int KeyOffOnResetResponse::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, KeyOffOnResetResponse_resetType_descr_.raw->forceomit);
+  decoded_field_length = field_resetType.RAW_decode(KeyOffOnResetResponse_resetType_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int KeyOffOnResetResponse::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 = 1;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(1);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, KeyOffOnResetResponse_resetType_descr_.raw);
+  encoded_length += field_resetType.RAW_encode(KeyOffOnResetResponse_resetType_descr_, *myleaf.body.node.nodes[0]);
+  return myleaf.length = encoded_length;
+}
+
+struct KeyOffOnResetResponse_template::single_value_struct {
+BITSTRING_template field_resetType;
+};
+
+void KeyOffOnResetResponse_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_resetType = ANY_VALUE;
+}
+}
+}
+
+void KeyOffOnResetResponse_template::copy_value(const KeyOffOnResetResponse& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.resetType().is_bound()) {
+  single_value->field_resetType = other_value.resetType();
+} else {
+  single_value->field_resetType.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void KeyOffOnResetResponse_template::copy_template(const KeyOffOnResetResponse_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.resetType().get_selection()) {
+single_value->field_resetType = other_value.resetType();
+} else {
+single_value->field_resetType.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new KeyOffOnResetResponse_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.KeyOffOnResetResponse.");
+break;
+}
+set_selection(other_value);
+}
+
+KeyOffOnResetResponse_template::KeyOffOnResetResponse_template()
+{
+}
+
+KeyOffOnResetResponse_template::KeyOffOnResetResponse_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+KeyOffOnResetResponse_template::KeyOffOnResetResponse_template(const KeyOffOnResetResponse& other_value)
+{
+copy_value(other_value);
+}
+
+KeyOffOnResetResponse_template::KeyOffOnResetResponse_template(const OPTIONAL<KeyOffOnResetResponse>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const KeyOffOnResetResponse&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.KeyOffOnResetResponse from an unbound optional field.");
+}
+}
+
+KeyOffOnResetResponse_template::KeyOffOnResetResponse_template(const KeyOffOnResetResponse_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+KeyOffOnResetResponse_template::~KeyOffOnResetResponse_template()
+{
+clean_up();
+}
+
+KeyOffOnResetResponse_template& KeyOffOnResetResponse_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+KeyOffOnResetResponse_template& KeyOffOnResetResponse_template::operator=(const KeyOffOnResetResponse& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+KeyOffOnResetResponse_template& KeyOffOnResetResponse_template::operator=(const OPTIONAL<KeyOffOnResetResponse>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const KeyOffOnResetResponse&)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 @UnifiedDiagnosticServices.KeyOffOnResetResponse.");
+}
+return *this;
+}
+
+KeyOffOnResetResponse_template& KeyOffOnResetResponse_template::operator=(const KeyOffOnResetResponse_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean KeyOffOnResetResponse_template::match(const KeyOffOnResetResponse& 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.resetType().is_bound()) return FALSE;
+if(!single_value->field_resetType.match(other_value.resetType(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.KeyOffOnResetResponse.");
+}
+return FALSE;
+}
+
+boolean KeyOffOnResetResponse_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_resetType.is_bound()
+;
+}
+
+boolean KeyOffOnResetResponse_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_resetType.is_value();
+}
+
+void KeyOffOnResetResponse_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+KeyOffOnResetResponse KeyOffOnResetResponse_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 @UnifiedDiagnosticServices.KeyOffOnResetResponse.");
+KeyOffOnResetResponse ret_val;
+if (single_value->field_resetType.is_bound()) {
+ret_val.resetType() = single_value->field_resetType.valueof();
+}
+return ret_val;
+}
+
+void KeyOffOnResetResponse_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.KeyOffOnResetResponse.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new KeyOffOnResetResponse_template[list_length];
+}
+
+KeyOffOnResetResponse_template& KeyOffOnResetResponse_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.KeyOffOnResetResponse.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.KeyOffOnResetResponse.");
+return value_list.list_value[list_index];
+}
+
+BITSTRING_template& KeyOffOnResetResponse_template::resetType()
+{
+set_specific();
+return single_value->field_resetType;
+}
+
+const BITSTRING_template& KeyOffOnResetResponse_template::resetType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field resetType of a non-specific template of type @UnifiedDiagnosticServices.KeyOffOnResetResponse.");
+return single_value->field_resetType;
+}
+
+int KeyOffOnResetResponse_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.KeyOffOnResetResponse which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 1;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.KeyOffOnResetResponse 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 @UnifiedDiagnosticServices.KeyOffOnResetResponse containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.KeyOffOnResetResponse containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.KeyOffOnResetResponse containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.KeyOffOnResetResponse containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.KeyOffOnResetResponse.");
+  }
+  return 0;
+}
+
+void KeyOffOnResetResponse_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ resetType := ");
+single_value->field_resetType.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void KeyOffOnResetResponse_template::log_match(const KeyOffOnResetResponse& 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_resetType.match(match_value.resetType(), legacy)){
+TTCN_Logger::log_logmatch_info(".resetType");
+single_value->field_resetType.log_match(match_value.resetType(), 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("{ resetType := ");
+single_value->field_resetType.log_match(match_value.resetType(), 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 KeyOffOnResetResponse_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_resetType.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 @UnifiedDiagnosticServices.KeyOffOnResetResponse.");
+}
+}
+
+void KeyOffOnResetResponse_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_resetType.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 KeyOffOnResetResponse_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 @UnifiedDiagnosticServices.KeyOffOnResetResponse.");
+}
+}
+
+void KeyOffOnResetResponse_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: {
+    KeyOffOnResetResponse_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (1<param.get_size()) {
+      param.error("record template of type @UnifiedDiagnosticServices.KeyOffOnResetResponse has 1 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) resetType().set_param(*param.get_elem(0));
+    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(), "resetType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          resetType().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 @UnifiedDiagnosticServices.KeyOffOnResetResponse: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.KeyOffOnResetResponse");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void KeyOffOnResetResponse_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_resetType.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.KeyOffOnResetResponse");
+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 : "@UnifiedDiagnosticServices.KeyOffOnResetResponse");
+}
+
+boolean KeyOffOnResetResponse_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean KeyOffOnResetResponse_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+SoftResetResponse::SoftResetResponse()
+{
+}
+
+SoftResetResponse::SoftResetResponse(const BITSTRING& par_resetType)
+  :   field_resetType(par_resetType)
+{
+}
+
+SoftResetResponse::SoftResetResponse(const SoftResetResponse& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.SoftResetResponse.");
+if (other_value.resetType().is_bound()) field_resetType = other_value.resetType();
+else field_resetType.clean_up();
+}
+
+void SoftResetResponse::clean_up()
+{
+field_resetType.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SoftResetResponse::get_descriptor() const { return &SoftResetResponse_descr_; }
+SoftResetResponse& SoftResetResponse::operator=(const SoftResetResponse& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.SoftResetResponse.");
+  if (other_value.resetType().is_bound()) field_resetType = other_value.resetType();
+  else field_resetType.clean_up();
+}
+return *this;
+}
+
+boolean SoftResetResponse::operator==(const SoftResetResponse& other_value) const
+{
+return field_resetType==other_value.field_resetType;
+}
+
+boolean SoftResetResponse::is_bound() const
+{
+return (field_resetType.is_bound());
+}
+boolean SoftResetResponse::is_value() const
+{
+return field_resetType.is_value();
+}
+void SoftResetResponse::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ resetType := ");
+field_resetType.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SoftResetResponse::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 (1<param.get_size()) {
+      param.error("record value of type @UnifiedDiagnosticServices.SoftResetResponse has 1 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) resetType().set_param(*param.get_elem(0));
+    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(), "resetType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          resetType().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 @UnifiedDiagnosticServices.SoftResetResponse: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.SoftResetResponse");
+  }
+}
+
+void SoftResetResponse::set_implicit_omit()
+{
+if (resetType().is_bound()) resetType().set_implicit_omit();
+}
+
+void SoftResetResponse::encode_text(Text_Buf& text_buf) const
+{
+field_resetType.encode_text(text_buf);
+}
+
+void SoftResetResponse::decode_text(Text_Buf& text_buf)
+{
+field_resetType.decode_text(text_buf);
+}
+
+void SoftResetResponse::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void SoftResetResponse::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int SoftResetResponse::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, SoftResetResponse_resetType_descr_.raw->forceomit);
+  decoded_field_length = field_resetType.RAW_decode(SoftResetResponse_resetType_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int SoftResetResponse::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 = 1;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(1);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, SoftResetResponse_resetType_descr_.raw);
+  encoded_length += field_resetType.RAW_encode(SoftResetResponse_resetType_descr_, *myleaf.body.node.nodes[0]);
+  return myleaf.length = encoded_length;
+}
+
+struct SoftResetResponse_template::single_value_struct {
+BITSTRING_template field_resetType;
+};
+
+void SoftResetResponse_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_resetType = ANY_VALUE;
+}
+}
+}
+
+void SoftResetResponse_template::copy_value(const SoftResetResponse& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.resetType().is_bound()) {
+  single_value->field_resetType = other_value.resetType();
+} else {
+  single_value->field_resetType.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SoftResetResponse_template::copy_template(const SoftResetResponse_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.resetType().get_selection()) {
+single_value->field_resetType = other_value.resetType();
+} else {
+single_value->field_resetType.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SoftResetResponse_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.SoftResetResponse.");
+break;
+}
+set_selection(other_value);
+}
+
+SoftResetResponse_template::SoftResetResponse_template()
+{
+}
+
+SoftResetResponse_template::SoftResetResponse_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SoftResetResponse_template::SoftResetResponse_template(const SoftResetResponse& other_value)
+{
+copy_value(other_value);
+}
+
+SoftResetResponse_template::SoftResetResponse_template(const OPTIONAL<SoftResetResponse>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SoftResetResponse&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.SoftResetResponse from an unbound optional field.");
+}
+}
+
+SoftResetResponse_template::SoftResetResponse_template(const SoftResetResponse_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SoftResetResponse_template::~SoftResetResponse_template()
+{
+clean_up();
+}
+
+SoftResetResponse_template& SoftResetResponse_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SoftResetResponse_template& SoftResetResponse_template::operator=(const SoftResetResponse& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SoftResetResponse_template& SoftResetResponse_template::operator=(const OPTIONAL<SoftResetResponse>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SoftResetResponse&)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 @UnifiedDiagnosticServices.SoftResetResponse.");
+}
+return *this;
+}
+
+SoftResetResponse_template& SoftResetResponse_template::operator=(const SoftResetResponse_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SoftResetResponse_template::match(const SoftResetResponse& 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.resetType().is_bound()) return FALSE;
+if(!single_value->field_resetType.match(other_value.resetType(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.SoftResetResponse.");
+}
+return FALSE;
+}
+
+boolean SoftResetResponse_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_resetType.is_bound()
+;
+}
+
+boolean SoftResetResponse_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_resetType.is_value();
+}
+
+void SoftResetResponse_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SoftResetResponse SoftResetResponse_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 @UnifiedDiagnosticServices.SoftResetResponse.");
+SoftResetResponse ret_val;
+if (single_value->field_resetType.is_bound()) {
+ret_val.resetType() = single_value->field_resetType.valueof();
+}
+return ret_val;
+}
+
+void SoftResetResponse_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.SoftResetResponse.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SoftResetResponse_template[list_length];
+}
+
+SoftResetResponse_template& SoftResetResponse_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.SoftResetResponse.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.SoftResetResponse.");
+return value_list.list_value[list_index];
+}
+
+BITSTRING_template& SoftResetResponse_template::resetType()
+{
+set_specific();
+return single_value->field_resetType;
+}
+
+const BITSTRING_template& SoftResetResponse_template::resetType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field resetType of a non-specific template of type @UnifiedDiagnosticServices.SoftResetResponse.");
+return single_value->field_resetType;
+}
+
+int SoftResetResponse_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.SoftResetResponse which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 1;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.SoftResetResponse 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 @UnifiedDiagnosticServices.SoftResetResponse containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.SoftResetResponse containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.SoftResetResponse containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.SoftResetResponse containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.SoftResetResponse.");
+  }
+  return 0;
+}
+
+void SoftResetResponse_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ resetType := ");
+single_value->field_resetType.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SoftResetResponse_template::log_match(const SoftResetResponse& 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_resetType.match(match_value.resetType(), legacy)){
+TTCN_Logger::log_logmatch_info(".resetType");
+single_value->field_resetType.log_match(match_value.resetType(), 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("{ resetType := ");
+single_value->field_resetType.log_match(match_value.resetType(), 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 SoftResetResponse_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_resetType.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 @UnifiedDiagnosticServices.SoftResetResponse.");
+}
+}
+
+void SoftResetResponse_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_resetType.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 SoftResetResponse_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 @UnifiedDiagnosticServices.SoftResetResponse.");
+}
+}
+
+void SoftResetResponse_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: {
+    SoftResetResponse_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (1<param.get_size()) {
+      param.error("record template of type @UnifiedDiagnosticServices.SoftResetResponse has 1 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) resetType().set_param(*param.get_elem(0));
+    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(), "resetType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          resetType().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 @UnifiedDiagnosticServices.SoftResetResponse: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.SoftResetResponse");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SoftResetResponse_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_resetType.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.SoftResetResponse");
+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 : "@UnifiedDiagnosticServices.SoftResetResponse");
+}
+
+boolean SoftResetResponse_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SoftResetResponse_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+EnableRapidPowerShutDownResponse::EnableRapidPowerShutDownResponse()
+{
+}
+
+EnableRapidPowerShutDownResponse::EnableRapidPowerShutDownResponse(const BITSTRING& par_resetType,
+    const OCTETSTRING& par_powerDownTime)
+  :   field_resetType(par_resetType),
+  field_powerDownTime(par_powerDownTime)
+{
+}
+
+EnableRapidPowerShutDownResponse::EnableRapidPowerShutDownResponse(const EnableRapidPowerShutDownResponse& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.EnableRapidPowerShutDownResponse.");
+if (other_value.resetType().is_bound()) field_resetType = other_value.resetType();
+else field_resetType.clean_up();
+if (other_value.powerDownTime().is_bound()) field_powerDownTime = other_value.powerDownTime();
+else field_powerDownTime.clean_up();
+}
+
+void EnableRapidPowerShutDownResponse::clean_up()
+{
+field_resetType.clean_up();
+field_powerDownTime.clean_up();
+}
+
+const TTCN_Typedescriptor_t* EnableRapidPowerShutDownResponse::get_descriptor() const { return &EnableRapidPowerShutDownResponse_descr_; }
+EnableRapidPowerShutDownResponse& EnableRapidPowerShutDownResponse::operator=(const EnableRapidPowerShutDownResponse& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.EnableRapidPowerShutDownResponse.");
+  if (other_value.resetType().is_bound()) field_resetType = other_value.resetType();
+  else field_resetType.clean_up();
+  if (other_value.powerDownTime().is_bound()) field_powerDownTime = other_value.powerDownTime();
+  else field_powerDownTime.clean_up();
+}
+return *this;
+}
+
+boolean EnableRapidPowerShutDownResponse::operator==(const EnableRapidPowerShutDownResponse& other_value) const
+{
+return field_resetType==other_value.field_resetType
+  && field_powerDownTime==other_value.field_powerDownTime;
+}
+
+boolean EnableRapidPowerShutDownResponse::is_bound() const
+{
+return (field_resetType.is_bound())
+  || (field_powerDownTime.is_bound());
+}
+boolean EnableRapidPowerShutDownResponse::is_value() const
+{
+return field_resetType.is_value()
+  && field_powerDownTime.is_value();
+}
+void EnableRapidPowerShutDownResponse::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ resetType := ");
+field_resetType.log();
+TTCN_Logger::log_event_str(", powerDownTime := ");
+field_powerDownTime.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void EnableRapidPowerShutDownResponse::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 @UnifiedDiagnosticServices.EnableRapidPowerShutDownResponse 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) resetType().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) powerDownTime().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(), "resetType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          resetType().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(), "powerDownTime")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          powerDownTime().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 @UnifiedDiagnosticServices.EnableRapidPowerShutDownResponse: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.EnableRapidPowerShutDownResponse");
+  }
+}
+
+void EnableRapidPowerShutDownResponse::set_implicit_omit()
+{
+if (resetType().is_bound()) resetType().set_implicit_omit();
+if (powerDownTime().is_bound()) powerDownTime().set_implicit_omit();
+}
+
+void EnableRapidPowerShutDownResponse::encode_text(Text_Buf& text_buf) const
+{
+field_resetType.encode_text(text_buf);
+field_powerDownTime.encode_text(text_buf);
+}
+
+void EnableRapidPowerShutDownResponse::decode_text(Text_Buf& text_buf)
+{
+field_resetType.decode_text(text_buf);
+field_powerDownTime.decode_text(text_buf);
+}
+
+void EnableRapidPowerShutDownResponse::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void EnableRapidPowerShutDownResponse::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int EnableRapidPowerShutDownResponse::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, EnableRapidPowerShutDownResponse_resetType_descr_.raw->forceomit);
+  decoded_field_length = field_resetType.RAW_decode(EnableRapidPowerShutDownResponse_resetType_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, EnableRapidPowerShutDownResponse_powerDownTime_descr_.raw->forceomit);
+  decoded_field_length = field_powerDownTime.RAW_decode(EnableRapidPowerShutDownResponse_powerDownTime_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 EnableRapidPowerShutDownResponse::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, EnableRapidPowerShutDownResponse_resetType_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, EnableRapidPowerShutDownResponse_powerDownTime_descr_.raw);
+  encoded_length += field_resetType.RAW_encode(EnableRapidPowerShutDownResponse_resetType_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_powerDownTime.RAW_encode(EnableRapidPowerShutDownResponse_powerDownTime_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct EnableRapidPowerShutDownResponse_template::single_value_struct {
+BITSTRING_template field_resetType;
+OCTETSTRING_template field_powerDownTime;
+};
+
+void EnableRapidPowerShutDownResponse_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_resetType = ANY_VALUE;
+single_value->field_powerDownTime = ANY_VALUE;
+}
+}
+}
+
+void EnableRapidPowerShutDownResponse_template::copy_value(const EnableRapidPowerShutDownResponse& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.resetType().is_bound()) {
+  single_value->field_resetType = other_value.resetType();
+} else {
+  single_value->field_resetType.clean_up();
+}
+if (other_value.powerDownTime().is_bound()) {
+  single_value->field_powerDownTime = other_value.powerDownTime();
+} else {
+  single_value->field_powerDownTime.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void EnableRapidPowerShutDownResponse_template::copy_template(const EnableRapidPowerShutDownResponse_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.resetType().get_selection()) {
+single_value->field_resetType = other_value.resetType();
+} else {
+single_value->field_resetType.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.powerDownTime().get_selection()) {
+single_value->field_powerDownTime = other_value.powerDownTime();
+} else {
+single_value->field_powerDownTime.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new EnableRapidPowerShutDownResponse_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.EnableRapidPowerShutDownResponse.");
+break;
+}
+set_selection(other_value);
+}
+
+EnableRapidPowerShutDownResponse_template::EnableRapidPowerShutDownResponse_template()
+{
+}
+
+EnableRapidPowerShutDownResponse_template::EnableRapidPowerShutDownResponse_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+EnableRapidPowerShutDownResponse_template::EnableRapidPowerShutDownResponse_template(const EnableRapidPowerShutDownResponse& other_value)
+{
+copy_value(other_value);
+}
+
+EnableRapidPowerShutDownResponse_template::EnableRapidPowerShutDownResponse_template(const OPTIONAL<EnableRapidPowerShutDownResponse>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const EnableRapidPowerShutDownResponse&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.EnableRapidPowerShutDownResponse from an unbound optional field.");
+}
+}
+
+EnableRapidPowerShutDownResponse_template::EnableRapidPowerShutDownResponse_template(const EnableRapidPowerShutDownResponse_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+EnableRapidPowerShutDownResponse_template::~EnableRapidPowerShutDownResponse_template()
+{
+clean_up();
+}
+
+EnableRapidPowerShutDownResponse_template& EnableRapidPowerShutDownResponse_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+EnableRapidPowerShutDownResponse_template& EnableRapidPowerShutDownResponse_template::operator=(const EnableRapidPowerShutDownResponse& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+EnableRapidPowerShutDownResponse_template& EnableRapidPowerShutDownResponse_template::operator=(const OPTIONAL<EnableRapidPowerShutDownResponse>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const EnableRapidPowerShutDownResponse&)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 @UnifiedDiagnosticServices.EnableRapidPowerShutDownResponse.");
+}
+return *this;
+}
+
+EnableRapidPowerShutDownResponse_template& EnableRapidPowerShutDownResponse_template::operator=(const EnableRapidPowerShutDownResponse_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean EnableRapidPowerShutDownResponse_template::match(const EnableRapidPowerShutDownResponse& 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.resetType().is_bound()) return FALSE;
+if(!single_value->field_resetType.match(other_value.resetType(), legacy))return FALSE;
+if(!other_value.powerDownTime().is_bound()) return FALSE;
+if(!single_value->field_powerDownTime.match(other_value.powerDownTime(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.EnableRapidPowerShutDownResponse.");
+}
+return FALSE;
+}
+
+boolean EnableRapidPowerShutDownResponse_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_resetType.is_bound()
+
+ ||single_value->field_powerDownTime.is_bound()
+;
+}
+
+boolean EnableRapidPowerShutDownResponse_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_resetType.is_value()
+ &&single_value->field_powerDownTime.is_value();
+}
+
+void EnableRapidPowerShutDownResponse_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+EnableRapidPowerShutDownResponse EnableRapidPowerShutDownResponse_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 @UnifiedDiagnosticServices.EnableRapidPowerShutDownResponse.");
+EnableRapidPowerShutDownResponse ret_val;
+if (single_value->field_resetType.is_bound()) {
+ret_val.resetType() = single_value->field_resetType.valueof();
+}
+if (single_value->field_powerDownTime.is_bound()) {
+ret_val.powerDownTime() = single_value->field_powerDownTime.valueof();
+}
+return ret_val;
+}
+
+void EnableRapidPowerShutDownResponse_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.EnableRapidPowerShutDownResponse.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new EnableRapidPowerShutDownResponse_template[list_length];
+}
+
+EnableRapidPowerShutDownResponse_template& EnableRapidPowerShutDownResponse_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.EnableRapidPowerShutDownResponse.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.EnableRapidPowerShutDownResponse.");
+return value_list.list_value[list_index];
+}
+
+BITSTRING_template& EnableRapidPowerShutDownResponse_template::resetType()
+{
+set_specific();
+return single_value->field_resetType;
+}
+
+const BITSTRING_template& EnableRapidPowerShutDownResponse_template::resetType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field resetType of a non-specific template of type @UnifiedDiagnosticServices.EnableRapidPowerShutDownResponse.");
+return single_value->field_resetType;
+}
+
+OCTETSTRING_template& EnableRapidPowerShutDownResponse_template::powerDownTime()
+{
+set_specific();
+return single_value->field_powerDownTime;
+}
+
+const OCTETSTRING_template& EnableRapidPowerShutDownResponse_template::powerDownTime() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field powerDownTime of a non-specific template of type @UnifiedDiagnosticServices.EnableRapidPowerShutDownResponse.");
+return single_value->field_powerDownTime;
+}
+
+int EnableRapidPowerShutDownResponse_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.EnableRapidPowerShutDownResponse 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 @UnifiedDiagnosticServices.EnableRapidPowerShutDownResponse 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 @UnifiedDiagnosticServices.EnableRapidPowerShutDownResponse containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.EnableRapidPowerShutDownResponse containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.EnableRapidPowerShutDownResponse containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.EnableRapidPowerShutDownResponse containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.EnableRapidPowerShutDownResponse.");
+  }
+  return 0;
+}
+
+void EnableRapidPowerShutDownResponse_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ resetType := ");
+single_value->field_resetType.log();
+TTCN_Logger::log_event_str(", powerDownTime := ");
+single_value->field_powerDownTime.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void EnableRapidPowerShutDownResponse_template::log_match(const EnableRapidPowerShutDownResponse& 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_resetType.match(match_value.resetType(), legacy)){
+TTCN_Logger::log_logmatch_info(".resetType");
+single_value->field_resetType.log_match(match_value.resetType(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_powerDownTime.match(match_value.powerDownTime(), legacy)){
+TTCN_Logger::log_logmatch_info(".powerDownTime");
+single_value->field_powerDownTime.log_match(match_value.powerDownTime(), 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("{ resetType := ");
+single_value->field_resetType.log_match(match_value.resetType(), legacy);
+TTCN_Logger::log_event_str(", powerDownTime := ");
+single_value->field_powerDownTime.log_match(match_value.powerDownTime(), 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 EnableRapidPowerShutDownResponse_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_resetType.encode_text(text_buf);
+single_value->field_powerDownTime.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 @UnifiedDiagnosticServices.EnableRapidPowerShutDownResponse.");
+}
+}
+
+void EnableRapidPowerShutDownResponse_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_resetType.decode_text(text_buf);
+single_value->field_powerDownTime.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 EnableRapidPowerShutDownResponse_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 @UnifiedDiagnosticServices.EnableRapidPowerShutDownResponse.");
+}
+}
+
+void EnableRapidPowerShutDownResponse_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: {
+    EnableRapidPowerShutDownResponse_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @UnifiedDiagnosticServices.EnableRapidPowerShutDownResponse 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) resetType().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) powerDownTime().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(), "resetType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          resetType().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(), "powerDownTime")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          powerDownTime().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 @UnifiedDiagnosticServices.EnableRapidPowerShutDownResponse: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.EnableRapidPowerShutDownResponse");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void EnableRapidPowerShutDownResponse_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_resetType.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.EnableRapidPowerShutDownResponse");
+single_value->field_powerDownTime.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.EnableRapidPowerShutDownResponse");
+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 : "@UnifiedDiagnosticServices.EnableRapidPowerShutDownResponse");
+}
+
+boolean EnableRapidPowerShutDownResponse_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean EnableRapidPowerShutDownResponse_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+DisableRapidPowerShutDownResponse::DisableRapidPowerShutDownResponse()
+{
+}
+
+DisableRapidPowerShutDownResponse::DisableRapidPowerShutDownResponse(const BITSTRING& par_resetType)
+  :   field_resetType(par_resetType)
+{
+}
+
+DisableRapidPowerShutDownResponse::DisableRapidPowerShutDownResponse(const DisableRapidPowerShutDownResponse& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.DisableRapidPowerShutDownResponse.");
+if (other_value.resetType().is_bound()) field_resetType = other_value.resetType();
+else field_resetType.clean_up();
+}
+
+void DisableRapidPowerShutDownResponse::clean_up()
+{
+field_resetType.clean_up();
+}
+
+const TTCN_Typedescriptor_t* DisableRapidPowerShutDownResponse::get_descriptor() const { return &DisableRapidPowerShutDownResponse_descr_; }
+DisableRapidPowerShutDownResponse& DisableRapidPowerShutDownResponse::operator=(const DisableRapidPowerShutDownResponse& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.DisableRapidPowerShutDownResponse.");
+  if (other_value.resetType().is_bound()) field_resetType = other_value.resetType();
+  else field_resetType.clean_up();
+}
+return *this;
+}
+
+boolean DisableRapidPowerShutDownResponse::operator==(const DisableRapidPowerShutDownResponse& other_value) const
+{
+return field_resetType==other_value.field_resetType;
+}
+
+boolean DisableRapidPowerShutDownResponse::is_bound() const
+{
+return (field_resetType.is_bound());
+}
+boolean DisableRapidPowerShutDownResponse::is_value() const
+{
+return field_resetType.is_value();
+}
+void DisableRapidPowerShutDownResponse::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ resetType := ");
+field_resetType.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void DisableRapidPowerShutDownResponse::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 (1<param.get_size()) {
+      param.error("record value of type @UnifiedDiagnosticServices.DisableRapidPowerShutDownResponse has 1 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) resetType().set_param(*param.get_elem(0));
+    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(), "resetType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          resetType().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 @UnifiedDiagnosticServices.DisableRapidPowerShutDownResponse: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.DisableRapidPowerShutDownResponse");
+  }
+}
+
+void DisableRapidPowerShutDownResponse::set_implicit_omit()
+{
+if (resetType().is_bound()) resetType().set_implicit_omit();
+}
+
+void DisableRapidPowerShutDownResponse::encode_text(Text_Buf& text_buf) const
+{
+field_resetType.encode_text(text_buf);
+}
+
+void DisableRapidPowerShutDownResponse::decode_text(Text_Buf& text_buf)
+{
+field_resetType.decode_text(text_buf);
+}
+
+void DisableRapidPowerShutDownResponse::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void DisableRapidPowerShutDownResponse::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int DisableRapidPowerShutDownResponse::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, DisableRapidPowerShutDownResponse_resetType_descr_.raw->forceomit);
+  decoded_field_length = field_resetType.RAW_decode(DisableRapidPowerShutDownResponse_resetType_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int DisableRapidPowerShutDownResponse::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 = 1;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(1);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, DisableRapidPowerShutDownResponse_resetType_descr_.raw);
+  encoded_length += field_resetType.RAW_encode(DisableRapidPowerShutDownResponse_resetType_descr_, *myleaf.body.node.nodes[0]);
+  return myleaf.length = encoded_length;
+}
+
+struct DisableRapidPowerShutDownResponse_template::single_value_struct {
+BITSTRING_template field_resetType;
+};
+
+void DisableRapidPowerShutDownResponse_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_resetType = ANY_VALUE;
+}
+}
+}
+
+void DisableRapidPowerShutDownResponse_template::copy_value(const DisableRapidPowerShutDownResponse& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.resetType().is_bound()) {
+  single_value->field_resetType = other_value.resetType();
+} else {
+  single_value->field_resetType.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void DisableRapidPowerShutDownResponse_template::copy_template(const DisableRapidPowerShutDownResponse_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.resetType().get_selection()) {
+single_value->field_resetType = other_value.resetType();
+} else {
+single_value->field_resetType.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new DisableRapidPowerShutDownResponse_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.DisableRapidPowerShutDownResponse.");
+break;
+}
+set_selection(other_value);
+}
+
+DisableRapidPowerShutDownResponse_template::DisableRapidPowerShutDownResponse_template()
+{
+}
+
+DisableRapidPowerShutDownResponse_template::DisableRapidPowerShutDownResponse_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+DisableRapidPowerShutDownResponse_template::DisableRapidPowerShutDownResponse_template(const DisableRapidPowerShutDownResponse& other_value)
+{
+copy_value(other_value);
+}
+
+DisableRapidPowerShutDownResponse_template::DisableRapidPowerShutDownResponse_template(const OPTIONAL<DisableRapidPowerShutDownResponse>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const DisableRapidPowerShutDownResponse&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.DisableRapidPowerShutDownResponse from an unbound optional field.");
+}
+}
+
+DisableRapidPowerShutDownResponse_template::DisableRapidPowerShutDownResponse_template(const DisableRapidPowerShutDownResponse_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+DisableRapidPowerShutDownResponse_template::~DisableRapidPowerShutDownResponse_template()
+{
+clean_up();
+}
+
+DisableRapidPowerShutDownResponse_template& DisableRapidPowerShutDownResponse_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+DisableRapidPowerShutDownResponse_template& DisableRapidPowerShutDownResponse_template::operator=(const DisableRapidPowerShutDownResponse& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+DisableRapidPowerShutDownResponse_template& DisableRapidPowerShutDownResponse_template::operator=(const OPTIONAL<DisableRapidPowerShutDownResponse>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const DisableRapidPowerShutDownResponse&)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 @UnifiedDiagnosticServices.DisableRapidPowerShutDownResponse.");
+}
+return *this;
+}
+
+DisableRapidPowerShutDownResponse_template& DisableRapidPowerShutDownResponse_template::operator=(const DisableRapidPowerShutDownResponse_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean DisableRapidPowerShutDownResponse_template::match(const DisableRapidPowerShutDownResponse& 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.resetType().is_bound()) return FALSE;
+if(!single_value->field_resetType.match(other_value.resetType(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.DisableRapidPowerShutDownResponse.");
+}
+return FALSE;
+}
+
+boolean DisableRapidPowerShutDownResponse_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_resetType.is_bound()
+;
+}
+
+boolean DisableRapidPowerShutDownResponse_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_resetType.is_value();
+}
+
+void DisableRapidPowerShutDownResponse_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+DisableRapidPowerShutDownResponse DisableRapidPowerShutDownResponse_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 @UnifiedDiagnosticServices.DisableRapidPowerShutDownResponse.");
+DisableRapidPowerShutDownResponse ret_val;
+if (single_value->field_resetType.is_bound()) {
+ret_val.resetType() = single_value->field_resetType.valueof();
+}
+return ret_val;
+}
+
+void DisableRapidPowerShutDownResponse_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.DisableRapidPowerShutDownResponse.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new DisableRapidPowerShutDownResponse_template[list_length];
+}
+
+DisableRapidPowerShutDownResponse_template& DisableRapidPowerShutDownResponse_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.DisableRapidPowerShutDownResponse.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.DisableRapidPowerShutDownResponse.");
+return value_list.list_value[list_index];
+}
+
+BITSTRING_template& DisableRapidPowerShutDownResponse_template::resetType()
+{
+set_specific();
+return single_value->field_resetType;
+}
+
+const BITSTRING_template& DisableRapidPowerShutDownResponse_template::resetType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field resetType of a non-specific template of type @UnifiedDiagnosticServices.DisableRapidPowerShutDownResponse.");
+return single_value->field_resetType;
+}
+
+int DisableRapidPowerShutDownResponse_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.DisableRapidPowerShutDownResponse which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 1;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.DisableRapidPowerShutDownResponse 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 @UnifiedDiagnosticServices.DisableRapidPowerShutDownResponse containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.DisableRapidPowerShutDownResponse containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.DisableRapidPowerShutDownResponse containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.DisableRapidPowerShutDownResponse containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.DisableRapidPowerShutDownResponse.");
+  }
+  return 0;
+}
+
+void DisableRapidPowerShutDownResponse_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ resetType := ");
+single_value->field_resetType.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void DisableRapidPowerShutDownResponse_template::log_match(const DisableRapidPowerShutDownResponse& 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_resetType.match(match_value.resetType(), legacy)){
+TTCN_Logger::log_logmatch_info(".resetType");
+single_value->field_resetType.log_match(match_value.resetType(), 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("{ resetType := ");
+single_value->field_resetType.log_match(match_value.resetType(), 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 DisableRapidPowerShutDownResponse_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_resetType.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 @UnifiedDiagnosticServices.DisableRapidPowerShutDownResponse.");
+}
+}
+
+void DisableRapidPowerShutDownResponse_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_resetType.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 DisableRapidPowerShutDownResponse_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 @UnifiedDiagnosticServices.DisableRapidPowerShutDownResponse.");
+}
+}
+
+void DisableRapidPowerShutDownResponse_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: {
+    DisableRapidPowerShutDownResponse_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (1<param.get_size()) {
+      param.error("record template of type @UnifiedDiagnosticServices.DisableRapidPowerShutDownResponse has 1 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) resetType().set_param(*param.get_elem(0));
+    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(), "resetType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          resetType().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 @UnifiedDiagnosticServices.DisableRapidPowerShutDownResponse: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.DisableRapidPowerShutDownResponse");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void DisableRapidPowerShutDownResponse_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_resetType.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.DisableRapidPowerShutDownResponse");
+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 : "@UnifiedDiagnosticServices.DisableRapidPowerShutDownResponse");
+}
+
+boolean DisableRapidPowerShutDownResponse_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean DisableRapidPowerShutDownResponse_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 ECUResetResponseType::copy_value(const ECUResetResponseType& other_value)
+{
+switch (other_value.union_selection) {
+case ALT_hardReset:
+field_hardReset = new HardResetResponse(*other_value.field_hardReset);
+break;
+case ALT_keyOffOnReset:
+field_keyOffOnReset = new KeyOffOnResetResponse(*other_value.field_keyOffOnReset);
+break;
+case ALT_softReset:
+field_softReset = new SoftResetResponse(*other_value.field_softReset);
+break;
+case ALT_enableRapidPowerShutDown:
+field_enableRapidPowerShutDown = new EnableRapidPowerShutDownResponse(*other_value.field_enableRapidPowerShutDown);
+break;
+case ALT_disableRapidPowerShutDown:
+field_disableRapidPowerShutDown = new DisableRapidPowerShutDownResponse(*other_value.field_disableRapidPowerShutDown);
+break;
+default:
+TTCN_error("Assignment of an unbound union value of type @UnifiedDiagnosticServices.ECUResetResponseType.");
+}
+union_selection = other_value.union_selection;
+}
+
+ECUResetResponseType::ECUResetResponseType()
+{
+union_selection = UNBOUND_VALUE;
+}
+
+ECUResetResponseType::ECUResetResponseType(const ECUResetResponseType& other_value)
+: Base_Type(){
+copy_value(other_value);
+}
+
+ECUResetResponseType::~ECUResetResponseType()
+{
+clean_up();
+}
+
+ECUResetResponseType& ECUResetResponseType::operator=(const ECUResetResponseType& other_value)
+{
+if (this != &other_value) {
+clean_up();
+copy_value(other_value);
+}
+return *this;
+}
+
+boolean ECUResetResponseType::operator==(const ECUResetResponseType& other_value) const
+{
+if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @UnifiedDiagnosticServices.ECUResetResponseType.");
+if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @UnifiedDiagnosticServices.ECUResetResponseType.");
+if (union_selection != other_value.union_selection) return FALSE;
+switch (union_selection) {
+case ALT_hardReset:
+return *field_hardReset == *other_value.field_hardReset;
+case ALT_keyOffOnReset:
+return *field_keyOffOnReset == *other_value.field_keyOffOnReset;
+case ALT_softReset:
+return *field_softReset == *other_value.field_softReset;
+case ALT_enableRapidPowerShutDown:
+return *field_enableRapidPowerShutDown == *other_value.field_enableRapidPowerShutDown;
+case ALT_disableRapidPowerShutDown:
+return *field_disableRapidPowerShutDown == *other_value.field_disableRapidPowerShutDown;
+default:
+return FALSE;
+}
+}
+
+HardResetResponse& ECUResetResponseType::hardReset()
+{
+if (union_selection != ALT_hardReset) {
+clean_up();
+field_hardReset = new HardResetResponse;
+union_selection = ALT_hardReset;
+}
+return *field_hardReset;
+}
+
+const HardResetResponse& ECUResetResponseType::hardReset() const
+{
+if (union_selection != ALT_hardReset) TTCN_error("Using non-selected field hardReset in a value of union type @UnifiedDiagnosticServices.ECUResetResponseType.");
+return *field_hardReset;
+}
+
+KeyOffOnResetResponse& ECUResetResponseType::keyOffOnReset()
+{
+if (union_selection != ALT_keyOffOnReset) {
+clean_up();
+field_keyOffOnReset = new KeyOffOnResetResponse;
+union_selection = ALT_keyOffOnReset;
+}
+return *field_keyOffOnReset;
+}
+
+const KeyOffOnResetResponse& ECUResetResponseType::keyOffOnReset() const
+{
+if (union_selection != ALT_keyOffOnReset) TTCN_error("Using non-selected field keyOffOnReset in a value of union type @UnifiedDiagnosticServices.ECUResetResponseType.");
+return *field_keyOffOnReset;
+}
+
+SoftResetResponse& ECUResetResponseType::softReset()
+{
+if (union_selection != ALT_softReset) {
+clean_up();
+field_softReset = new SoftResetResponse;
+union_selection = ALT_softReset;
+}
+return *field_softReset;
+}
+
+const SoftResetResponse& ECUResetResponseType::softReset() const
+{
+if (union_selection != ALT_softReset) TTCN_error("Using non-selected field softReset in a value of union type @UnifiedDiagnosticServices.ECUResetResponseType.");
+return *field_softReset;
+}
+
+EnableRapidPowerShutDownResponse& ECUResetResponseType::enableRapidPowerShutDown()
+{
+if (union_selection != ALT_enableRapidPowerShutDown) {
+clean_up();
+field_enableRapidPowerShutDown = new EnableRapidPowerShutDownResponse;
+union_selection = ALT_enableRapidPowerShutDown;
+}
+return *field_enableRapidPowerShutDown;
+}
+
+const EnableRapidPowerShutDownResponse& ECUResetResponseType::enableRapidPowerShutDown() const
+{
+if (union_selection != ALT_enableRapidPowerShutDown) TTCN_error("Using non-selected field enableRapidPowerShutDown in a value of union type @UnifiedDiagnosticServices.ECUResetResponseType.");
+return *field_enableRapidPowerShutDown;
+}
+
+DisableRapidPowerShutDownResponse& ECUResetResponseType::disableRapidPowerShutDown()
+{
+if (union_selection != ALT_disableRapidPowerShutDown) {
+clean_up();
+field_disableRapidPowerShutDown = new DisableRapidPowerShutDownResponse;
+union_selection = ALT_disableRapidPowerShutDown;
+}
+return *field_disableRapidPowerShutDown;
+}
+
+const DisableRapidPowerShutDownResponse& ECUResetResponseType::disableRapidPowerShutDown() const
+{
+if (union_selection != ALT_disableRapidPowerShutDown) TTCN_error("Using non-selected field disableRapidPowerShutDown in a value of union type @UnifiedDiagnosticServices.ECUResetResponseType.");
+return *field_disableRapidPowerShutDown;
+}
+
+boolean ECUResetResponseType::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 @UnifiedDiagnosticServices.ECUResetResponseType.");
+return union_selection == checked_selection;
+}
+
+boolean ECUResetResponseType::is_bound() const
+{
+  return union_selection != UNBOUND_VALUE;
+}
+
+boolean ECUResetResponseType::is_value() const
+{
+switch (union_selection) {
+case UNBOUND_VALUE: return FALSE;
+case ALT_hardReset: return field_hardReset->is_value();
+case ALT_keyOffOnReset: return field_keyOffOnReset->is_value();
+case ALT_softReset: return field_softReset->is_value();
+case ALT_enableRapidPowerShutDown: return field_enableRapidPowerShutDown->is_value();
+case ALT_disableRapidPowerShutDown: return field_disableRapidPowerShutDown->is_value();
+default: TTCN_error("Invalid selection in union is_bound");}
+}
+
+void ECUResetResponseType::clean_up()
+{
+switch (union_selection) {
+case ALT_hardReset:
+  delete field_hardReset;
+  break;
+case ALT_keyOffOnReset:
+  delete field_keyOffOnReset;
+  break;
+case ALT_softReset:
+  delete field_softReset;
+  break;
+case ALT_enableRapidPowerShutDown:
+  delete field_enableRapidPowerShutDown;
+  break;
+case ALT_disableRapidPowerShutDown:
+  delete field_disableRapidPowerShutDown;
+  break;
+default:
+  break;
+}
+union_selection = UNBOUND_VALUE;
+}
+
+void ECUResetResponseType::log() const
+{
+switch (union_selection) {
+case ALT_hardReset:
+TTCN_Logger::log_event_str("{ hardReset := ");
+field_hardReset->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_keyOffOnReset:
+TTCN_Logger::log_event_str("{ keyOffOnReset := ");
+field_keyOffOnReset->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_softReset:
+TTCN_Logger::log_event_str("{ softReset := ");
+field_softReset->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_enableRapidPowerShutDown:
+TTCN_Logger::log_event_str("{ enableRapidPowerShutDown := ");
+field_enableRapidPowerShutDown->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_disableRapidPowerShutDown:
+TTCN_Logger::log_event_str("{ disableRapidPowerShutDown := ");
+field_disableRapidPowerShutDown->log();
+TTCN_Logger::log_event_str(" }");
+break;
+default:
+TTCN_Logger::log_event_unbound();
+}
+}
+
+void ECUResetResponseType::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, "hardReset")) {
+    hardReset().set_param(*mp_last);
+    if (!hardReset().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "keyOffOnReset")) {
+    keyOffOnReset().set_param(*mp_last);
+    if (!keyOffOnReset().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "softReset")) {
+    softReset().set_param(*mp_last);
+    if (!softReset().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "enableRapidPowerShutDown")) {
+    enableRapidPowerShutDown().set_param(*mp_last);
+    if (!enableRapidPowerShutDown().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "disableRapidPowerShutDown")) {
+    disableRapidPowerShutDown().set_param(*mp_last);
+    if (!disableRapidPowerShutDown().is_bound()) clean_up();
+    return;
+  }
+  mp_last->error("Field %s does not exist in type @UnifiedDiagnosticServices.ECUResetResponseType.", last_name);
+}
+
+void ECUResetResponseType::set_implicit_omit()
+{
+switch (union_selection) {
+case ALT_hardReset:
+field_hardReset->set_implicit_omit(); break;
+case ALT_keyOffOnReset:
+field_keyOffOnReset->set_implicit_omit(); break;
+case ALT_softReset:
+field_softReset->set_implicit_omit(); break;
+case ALT_enableRapidPowerShutDown:
+field_enableRapidPowerShutDown->set_implicit_omit(); break;
+case ALT_disableRapidPowerShutDown:
+field_disableRapidPowerShutDown->set_implicit_omit(); break;
+default: break;
+}
+}
+
+void ECUResetResponseType::encode_text(Text_Buf& text_buf) const
+{
+text_buf.push_int(union_selection);
+switch (union_selection) {
+case ALT_hardReset:
+field_hardReset->encode_text(text_buf);
+break;
+case ALT_keyOffOnReset:
+field_keyOffOnReset->encode_text(text_buf);
+break;
+case ALT_softReset:
+field_softReset->encode_text(text_buf);
+break;
+case ALT_enableRapidPowerShutDown:
+field_enableRapidPowerShutDown->encode_text(text_buf);
+break;
+case ALT_disableRapidPowerShutDown:
+field_disableRapidPowerShutDown->encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an unbound value of union type @UnifiedDiagnosticServices.ECUResetResponseType.");
+}
+}
+
+void ECUResetResponseType::decode_text(Text_Buf& text_buf)
+{
+switch ((union_selection_type)text_buf.pull_int().get_val()) {
+case ALT_hardReset:
+hardReset().decode_text(text_buf);
+break;
+case ALT_keyOffOnReset:
+keyOffOnReset().decode_text(text_buf);
+break;
+case ALT_softReset:
+softReset().decode_text(text_buf);
+break;
+case ALT_enableRapidPowerShutDown:
+enableRapidPowerShutDown().decode_text(text_buf);
+break;
+case ALT_disableRapidPowerShutDown:
+disableRapidPowerShutDown().decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for type @UnifiedDiagnosticServices.ECUResetResponseType.");
+}
+}
+
+void ECUResetResponseType::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ECUResetResponseType::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ECUResetResponseType::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, HardResetResponse_descr_.raw->forceomit);
+      decoded_length = hardReset().RAW_decode(HardResetResponse_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, KeyOffOnResetResponse_descr_.raw->forceomit);
+      decoded_length = keyOffOnReset().RAW_decode(KeyOffOnResetResponse_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, SoftResetResponse_descr_.raw->forceomit);
+      decoded_length = softReset().RAW_decode(SoftResetResponse_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 3: {
+      RAW_Force_Omit field_force_omit(3, force_omit, EnableRapidPowerShutDownResponse_descr_.raw->forceomit);
+      decoded_length = enableRapidPowerShutDown().RAW_decode(EnableRapidPowerShutDownResponse_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 4: {
+      RAW_Force_Omit field_force_omit(4, force_omit, DisableRapidPowerShutDownResponse_descr_.raw->forceomit);
+      decoded_length = disableRapidPowerShutDown().RAW_decode(DisableRapidPowerShutDownResponse_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 {
+    boolean already_failed = FALSE;
+    already_failed = FALSE;
+    if (!already_failed) {
+      BITSTRING temporal_0;
+      int decoded_0_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_0_length = temporal_0.RAW_decode(HardResetResponse_resetType_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_0_length > 0) {
+        if (temporal_0 ==  bs_0) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(0, force_omit, HardResetResponse_descr_.raw->forceomit);
+          decoded_length = hardReset().RAW_decode(HardResetResponse_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_hardReset).resetType() ==  bs_0) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      BITSTRING temporal_1;
+      int decoded_1_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_1_length = temporal_1.RAW_decode(KeyOffOnResetResponse_resetType_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_1_length > 0) {
+        if (temporal_1 ==  bs_1) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(1, force_omit, KeyOffOnResetResponse_descr_.raw->forceomit);
+          decoded_length = keyOffOnReset().RAW_decode(KeyOffOnResetResponse_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_keyOffOnReset).resetType() ==  bs_1) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      BITSTRING temporal_2;
+      int decoded_2_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_2_length = temporal_2.RAW_decode(SoftResetResponse_resetType_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_2_length > 0) {
+        if (temporal_2 ==  bs_2) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(2, force_omit, SoftResetResponse_descr_.raw->forceomit);
+          decoded_length = softReset().RAW_decode(SoftResetResponse_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_softReset).resetType() ==  bs_2) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      BITSTRING temporal_3;
+      int decoded_3_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_3_length = temporal_3.RAW_decode(EnableRapidPowerShutDownResponse_resetType_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_3_length > 0) {
+        if (temporal_3 ==  bs_3) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(3, force_omit, EnableRapidPowerShutDownResponse_descr_.raw->forceomit);
+          decoded_length = enableRapidPowerShutDown().RAW_decode(EnableRapidPowerShutDownResponse_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_enableRapidPowerShutDown).resetType() ==  bs_3) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      BITSTRING temporal_4;
+      int decoded_4_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_4_length = temporal_4.RAW_decode(DisableRapidPowerShutDownResponse_resetType_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_4_length > 0) {
+        if (temporal_4 ==  bs_4) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(4, force_omit, DisableRapidPowerShutDownResponse_descr_.raw->forceomit);
+          decoded_length = disableRapidPowerShutDown().RAW_decode(DisableRapidPowerShutDownResponse_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_disableRapidPowerShutDown).resetType() ==  bs_4) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+ }
+ clean_up();
+ return -1;
+}
+
+int ECUResetResponseType::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const
+{
+  int encoded_length = 0;
+  myleaf.isleaf = FALSE;
+  myleaf.body.node.num_of_nodes = 5;  myleaf.body.node.nodes = init_nodes_of_enc_tree(5);
+  memset(myleaf.body.node.nodes, 0, 5 * sizeof(RAW_enc_tree *));
+  switch (union_selection) {
+  case ALT_hardReset:
+    myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 0, HardResetResponse_descr_.raw);
+    encoded_length = field_hardReset->RAW_encode(HardResetResponse_descr_, *myleaf.body.node.nodes[0]);
+    myleaf.body.node.nodes[0]->coding_descr = &HardResetResponse_descr_;
+    if ((*field_hardReset).resetType() !=  bs_0) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={0,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   bs_0.RAW_encode(HardResetResponse_resetType_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);
+  }
+    }
+    break;
+  case ALT_keyOffOnReset:
+    myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 1, KeyOffOnResetResponse_descr_.raw);
+    encoded_length = field_keyOffOnReset->RAW_encode(KeyOffOnResetResponse_descr_, *myleaf.body.node.nodes[1]);
+    myleaf.body.node.nodes[1]->coding_descr = &KeyOffOnResetResponse_descr_;
+    if ((*field_keyOffOnReset).resetType() !=  bs_1) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={1,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   bs_1.RAW_encode(KeyOffOnResetResponse_resetType_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);
+  }
+    }
+    break;
+  case ALT_softReset:
+    myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 2, SoftResetResponse_descr_.raw);
+    encoded_length = field_softReset->RAW_encode(SoftResetResponse_descr_, *myleaf.body.node.nodes[2]);
+    myleaf.body.node.nodes[2]->coding_descr = &SoftResetResponse_descr_;
+    if ((*field_softReset).resetType() !=  bs_2) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={2,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   bs_2.RAW_encode(SoftResetResponse_resetType_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);
+  }
+    }
+    break;
+  case ALT_enableRapidPowerShutDown:
+    myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 3, EnableRapidPowerShutDownResponse_descr_.raw);
+    encoded_length = field_enableRapidPowerShutDown->RAW_encode(EnableRapidPowerShutDownResponse_descr_, *myleaf.body.node.nodes[3]);
+    myleaf.body.node.nodes[3]->coding_descr = &EnableRapidPowerShutDownResponse_descr_;
+    if ((*field_enableRapidPowerShutDown).resetType() !=  bs_3) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={3,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   bs_3.RAW_encode(EnableRapidPowerShutDownResponse_resetType_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);
+  }
+    }
+    break;
+  case ALT_disableRapidPowerShutDown:
+    myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 4, DisableRapidPowerShutDownResponse_descr_.raw);
+    encoded_length = field_disableRapidPowerShutDown->RAW_encode(DisableRapidPowerShutDownResponse_descr_, *myleaf.body.node.nodes[4]);
+    myleaf.body.node.nodes[4]->coding_descr = &DisableRapidPowerShutDownResponse_descr_;
+    if ((*field_disableRapidPowerShutDown).resetType() !=  bs_4) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={4,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   bs_4.RAW_encode(DisableRapidPowerShutDownResponse_resetType_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);
+  }
+    }
+    break;
+  default:
+    TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
+  }
+  return encoded_length;
+}
+
+void ECUResetResponseType_template::copy_value(const ECUResetResponseType& other_value)
+{
+single_value.union_selection = other_value.get_selection();
+switch (single_value.union_selection) {
+case ECUResetResponseType::ALT_hardReset:
+single_value.field_hardReset = new HardResetResponse_template(other_value.hardReset());
+break;
+case ECUResetResponseType::ALT_keyOffOnReset:
+single_value.field_keyOffOnReset = new KeyOffOnResetResponse_template(other_value.keyOffOnReset());
+break;
+case ECUResetResponseType::ALT_softReset:
+single_value.field_softReset = new SoftResetResponse_template(other_value.softReset());
+break;
+case ECUResetResponseType::ALT_enableRapidPowerShutDown:
+single_value.field_enableRapidPowerShutDown = new EnableRapidPowerShutDownResponse_template(other_value.enableRapidPowerShutDown());
+break;
+case ECUResetResponseType::ALT_disableRapidPowerShutDown:
+single_value.field_disableRapidPowerShutDown = new DisableRapidPowerShutDownResponse_template(other_value.disableRapidPowerShutDown());
+break;
+default:
+TTCN_error("Initializing a template with an unbound value of type @UnifiedDiagnosticServices.ECUResetResponseType.");
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ECUResetResponseType_template::copy_template(const ECUResetResponseType_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 ECUResetResponseType::ALT_hardReset:
+single_value.field_hardReset = new HardResetResponse_template(*other_value.single_value.field_hardReset);
+break;
+case ECUResetResponseType::ALT_keyOffOnReset:
+single_value.field_keyOffOnReset = new KeyOffOnResetResponse_template(*other_value.single_value.field_keyOffOnReset);
+break;
+case ECUResetResponseType::ALT_softReset:
+single_value.field_softReset = new SoftResetResponse_template(*other_value.single_value.field_softReset);
+break;
+case ECUResetResponseType::ALT_enableRapidPowerShutDown:
+single_value.field_enableRapidPowerShutDown = new EnableRapidPowerShutDownResponse_template(*other_value.single_value.field_enableRapidPowerShutDown);
+break;
+case ECUResetResponseType::ALT_disableRapidPowerShutDown:
+single_value.field_disableRapidPowerShutDown = new DisableRapidPowerShutDownResponse_template(*other_value.single_value.field_disableRapidPowerShutDown);
+break;
+default:
+TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @UnifiedDiagnosticServices.ECUResetResponseType.");
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ECUResetResponseType_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;
+default:
+TTCN_error("Copying an uninitialized template of union type @UnifiedDiagnosticServices.ECUResetResponseType.");
+}
+set_selection(other_value);
+}
+
+ECUResetResponseType_template::ECUResetResponseType_template()
+{
+}
+
+ECUResetResponseType_template::ECUResetResponseType_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ECUResetResponseType_template::ECUResetResponseType_template(const ECUResetResponseType& other_value)
+{
+copy_value(other_value);
+}
+
+ECUResetResponseType_template::ECUResetResponseType_template(const OPTIONAL<ECUResetResponseType>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ECUResetResponseType&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of union type @UnifiedDiagnosticServices.ECUResetResponseType from an unbound optional field.");
+}
+}
+
+ECUResetResponseType_template::ECUResetResponseType_template(const ECUResetResponseType_template& other_value)
+: Base_Template(){
+copy_template(other_value);
+}
+
+ECUResetResponseType_template::~ECUResetResponseType_template()
+{
+clean_up();
+}
+
+void ECUResetResponseType_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case ECUResetResponseType::ALT_hardReset:
+delete single_value.field_hardReset;
+break;
+case ECUResetResponseType::ALT_keyOffOnReset:
+delete single_value.field_keyOffOnReset;
+break;
+case ECUResetResponseType::ALT_softReset:
+delete single_value.field_softReset;
+break;
+case ECUResetResponseType::ALT_enableRapidPowerShutDown:
+delete single_value.field_enableRapidPowerShutDown;
+break;
+case ECUResetResponseType::ALT_disableRapidPowerShutDown:
+delete single_value.field_disableRapidPowerShutDown;
+default:
+break;
+}
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ECUResetResponseType_template& ECUResetResponseType_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ECUResetResponseType_template& ECUResetResponseType_template::operator=(const ECUResetResponseType& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ECUResetResponseType_template& ECUResetResponseType_template::operator=(const OPTIONAL<ECUResetResponseType>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ECUResetResponseType&)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 @UnifiedDiagnosticServices.ECUResetResponseType.");
+}
+return *this;
+}
+
+ECUResetResponseType_template& ECUResetResponseType_template::operator=(const ECUResetResponseType_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ECUResetResponseType_template::match(const ECUResetResponseType& 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:
+{
+ECUResetResponseType::union_selection_type value_selection = other_value.get_selection();
+if (value_selection == ECUResetResponseType::UNBOUND_VALUE) return FALSE;
+if (value_selection != single_value.union_selection) return FALSE;
+switch (value_selection) {
+case ECUResetResponseType::ALT_hardReset:
+return single_value.field_hardReset->match(other_value.hardReset(), legacy);
+case ECUResetResponseType::ALT_keyOffOnReset:
+return single_value.field_keyOffOnReset->match(other_value.keyOffOnReset(), legacy);
+case ECUResetResponseType::ALT_softReset:
+return single_value.field_softReset->match(other_value.softReset(), legacy);
+case ECUResetResponseType::ALT_enableRapidPowerShutDown:
+return single_value.field_enableRapidPowerShutDown->match(other_value.enableRapidPowerShutDown(), legacy);
+case ECUResetResponseType::ALT_disableRapidPowerShutDown:
+return single_value.field_disableRapidPowerShutDown->match(other_value.disableRapidPowerShutDown(), legacy);
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @UnifiedDiagnosticServices.ECUResetResponseType.");
+}
+}
+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;
+default:
+TTCN_error ("Matching an uninitialized template of union type @UnifiedDiagnosticServices.ECUResetResponseType.");
+}
+return FALSE;
+}
+
+boolean ECUResetResponseType_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+switch (single_value.union_selection) {
+case ECUResetResponseType::ALT_hardReset:
+return single_value.field_hardReset->is_value();
+case ECUResetResponseType::ALT_keyOffOnReset:
+return single_value.field_keyOffOnReset->is_value();
+case ECUResetResponseType::ALT_softReset:
+return single_value.field_softReset->is_value();
+case ECUResetResponseType::ALT_enableRapidPowerShutDown:
+return single_value.field_enableRapidPowerShutDown->is_value();
+case ECUResetResponseType::ALT_disableRapidPowerShutDown:
+return single_value.field_disableRapidPowerShutDown->is_value();
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @UnifiedDiagnosticServices.ECUResetResponseType.");
+}
+}
+
+ECUResetResponseType ECUResetResponseType_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 @UnifiedDiagnosticServices.ECUResetResponseType.");
+ECUResetResponseType ret_val;
+switch (single_value.union_selection) {
+case ECUResetResponseType::ALT_hardReset:
+ret_val.hardReset() = single_value.field_hardReset->valueof();
+break;
+case ECUResetResponseType::ALT_keyOffOnReset:
+ret_val.keyOffOnReset() = single_value.field_keyOffOnReset->valueof();
+break;
+case ECUResetResponseType::ALT_softReset:
+ret_val.softReset() = single_value.field_softReset->valueof();
+break;
+case ECUResetResponseType::ALT_enableRapidPowerShutDown:
+ret_val.enableRapidPowerShutDown() = single_value.field_enableRapidPowerShutDown->valueof();
+break;
+case ECUResetResponseType::ALT_disableRapidPowerShutDown:
+ret_val.disableRapidPowerShutDown() = single_value.field_disableRapidPowerShutDown->valueof();
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @UnifiedDiagnosticServices.ECUResetResponseType.");
+}
+return ret_val;
+}
+
+ECUResetResponseType_template& ECUResetResponseType_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @UnifiedDiagnosticServices.ECUResetResponseType.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @UnifiedDiagnosticServices.ECUResetResponseType.");
+return value_list.list_value[list_index];
+}
+void ECUResetResponseType_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error ("Internal error: Setting an invalid list for a template of union type @UnifiedDiagnosticServices.ECUResetResponseType.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ECUResetResponseType_template[list_length];
+}
+
+HardResetResponse_template& ECUResetResponseType_template::hardReset()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECUResetResponseType::ALT_hardReset) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_hardReset = new HardResetResponse_template(ANY_VALUE);
+else single_value.field_hardReset = new HardResetResponse_template;
+single_value.union_selection = ECUResetResponseType::ALT_hardReset;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_hardReset;
+}
+
+const HardResetResponse_template& ECUResetResponseType_template::hardReset() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field hardReset in a non-specific template of union type @UnifiedDiagnosticServices.ECUResetResponseType.");
+if (single_value.union_selection != ECUResetResponseType::ALT_hardReset) TTCN_error("Accessing non-selected field hardReset in a template of union type @UnifiedDiagnosticServices.ECUResetResponseType.");
+return *single_value.field_hardReset;
+}
+
+KeyOffOnResetResponse_template& ECUResetResponseType_template::keyOffOnReset()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECUResetResponseType::ALT_keyOffOnReset) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_keyOffOnReset = new KeyOffOnResetResponse_template(ANY_VALUE);
+else single_value.field_keyOffOnReset = new KeyOffOnResetResponse_template;
+single_value.union_selection = ECUResetResponseType::ALT_keyOffOnReset;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_keyOffOnReset;
+}
+
+const KeyOffOnResetResponse_template& ECUResetResponseType_template::keyOffOnReset() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field keyOffOnReset in a non-specific template of union type @UnifiedDiagnosticServices.ECUResetResponseType.");
+if (single_value.union_selection != ECUResetResponseType::ALT_keyOffOnReset) TTCN_error("Accessing non-selected field keyOffOnReset in a template of union type @UnifiedDiagnosticServices.ECUResetResponseType.");
+return *single_value.field_keyOffOnReset;
+}
+
+SoftResetResponse_template& ECUResetResponseType_template::softReset()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECUResetResponseType::ALT_softReset) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_softReset = new SoftResetResponse_template(ANY_VALUE);
+else single_value.field_softReset = new SoftResetResponse_template;
+single_value.union_selection = ECUResetResponseType::ALT_softReset;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_softReset;
+}
+
+const SoftResetResponse_template& ECUResetResponseType_template::softReset() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field softReset in a non-specific template of union type @UnifiedDiagnosticServices.ECUResetResponseType.");
+if (single_value.union_selection != ECUResetResponseType::ALT_softReset) TTCN_error("Accessing non-selected field softReset in a template of union type @UnifiedDiagnosticServices.ECUResetResponseType.");
+return *single_value.field_softReset;
+}
+
+EnableRapidPowerShutDownResponse_template& ECUResetResponseType_template::enableRapidPowerShutDown()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECUResetResponseType::ALT_enableRapidPowerShutDown) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_enableRapidPowerShutDown = new EnableRapidPowerShutDownResponse_template(ANY_VALUE);
+else single_value.field_enableRapidPowerShutDown = new EnableRapidPowerShutDownResponse_template;
+single_value.union_selection = ECUResetResponseType::ALT_enableRapidPowerShutDown;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_enableRapidPowerShutDown;
+}
+
+const EnableRapidPowerShutDownResponse_template& ECUResetResponseType_template::enableRapidPowerShutDown() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field enableRapidPowerShutDown in a non-specific template of union type @UnifiedDiagnosticServices.ECUResetResponseType.");
+if (single_value.union_selection != ECUResetResponseType::ALT_enableRapidPowerShutDown) TTCN_error("Accessing non-selected field enableRapidPowerShutDown in a template of union type @UnifiedDiagnosticServices.ECUResetResponseType.");
+return *single_value.field_enableRapidPowerShutDown;
+}
+
+DisableRapidPowerShutDownResponse_template& ECUResetResponseType_template::disableRapidPowerShutDown()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ECUResetResponseType::ALT_disableRapidPowerShutDown) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_disableRapidPowerShutDown = new DisableRapidPowerShutDownResponse_template(ANY_VALUE);
+else single_value.field_disableRapidPowerShutDown = new DisableRapidPowerShutDownResponse_template;
+single_value.union_selection = ECUResetResponseType::ALT_disableRapidPowerShutDown;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_disableRapidPowerShutDown;
+}
+
+const DisableRapidPowerShutDownResponse_template& ECUResetResponseType_template::disableRapidPowerShutDown() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field disableRapidPowerShutDown in a non-specific template of union type @UnifiedDiagnosticServices.ECUResetResponseType.");
+if (single_value.union_selection != ECUResetResponseType::ALT_disableRapidPowerShutDown) TTCN_error("Accessing non-selected field disableRapidPowerShutDown in a template of union type @UnifiedDiagnosticServices.ECUResetResponseType.");
+return *single_value.field_disableRapidPowerShutDown;
+}
+
+boolean ECUResetResponseType_template::ischosen(ECUResetResponseType::union_selection_type checked_selection) const
+{
+if (checked_selection == ECUResetResponseType::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @UnifiedDiagnosticServices.ECUResetResponseType.");
+switch (template_selection) {
+case SPECIFIC_VALUE:
+if (single_value.union_selection == ECUResetResponseType::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @UnifiedDiagnosticServices.ECUResetResponseType.");
+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 @UnifiedDiagnosticServices.ECUResetResponseType 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 ECUResetResponseType_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case ECUResetResponseType::ALT_hardReset:
+TTCN_Logger::log_event_str("{ hardReset := ");
+single_value.field_hardReset->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECUResetResponseType::ALT_keyOffOnReset:
+TTCN_Logger::log_event_str("{ keyOffOnReset := ");
+single_value.field_keyOffOnReset->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECUResetResponseType::ALT_softReset:
+TTCN_Logger::log_event_str("{ softReset := ");
+single_value.field_softReset->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECUResetResponseType::ALT_enableRapidPowerShutDown:
+TTCN_Logger::log_event_str("{ enableRapidPowerShutDown := ");
+single_value.field_enableRapidPowerShutDown->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ECUResetResponseType::ALT_disableRapidPowerShutDown:
+TTCN_Logger::log_event_str("{ disableRapidPowerShutDown := ");
+single_value.field_disableRapidPowerShutDown->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 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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ECUResetResponseType_template::log_match(const ECUResetResponseType& 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()) {
+switch (single_value.union_selection) {
+case ECUResetResponseType::ALT_hardReset:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".hardReset");
+single_value.field_hardReset->log_match(match_value.hardReset(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ hardReset := ");
+single_value.field_hardReset->log_match(match_value.hardReset(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECUResetResponseType::ALT_keyOffOnReset:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".keyOffOnReset");
+single_value.field_keyOffOnReset->log_match(match_value.keyOffOnReset(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ keyOffOnReset := ");
+single_value.field_keyOffOnReset->log_match(match_value.keyOffOnReset(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECUResetResponseType::ALT_softReset:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".softReset");
+single_value.field_softReset->log_match(match_value.softReset(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ softReset := ");
+single_value.field_softReset->log_match(match_value.softReset(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECUResetResponseType::ALT_enableRapidPowerShutDown:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".enableRapidPowerShutDown");
+single_value.field_enableRapidPowerShutDown->log_match(match_value.enableRapidPowerShutDown(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ enableRapidPowerShutDown := ");
+single_value.field_enableRapidPowerShutDown->log_match(match_value.enableRapidPowerShutDown(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ECUResetResponseType::ALT_disableRapidPowerShutDown:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".disableRapidPowerShutDown");
+single_value.field_disableRapidPowerShutDown->log_match(match_value.disableRapidPowerShutDown(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ disableRapidPowerShutDown := ");
+single_value.field_disableRapidPowerShutDown->log_match(match_value.disableRapidPowerShutDown(), 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 ECUResetResponseType_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 ECUResetResponseType::ALT_hardReset:
+single_value.field_hardReset->encode_text(text_buf);
+break;
+case ECUResetResponseType::ALT_keyOffOnReset:
+single_value.field_keyOffOnReset->encode_text(text_buf);
+break;
+case ECUResetResponseType::ALT_softReset:
+single_value.field_softReset->encode_text(text_buf);
+break;
+case ECUResetResponseType::ALT_enableRapidPowerShutDown:
+single_value.field_enableRapidPowerShutDown->encode_text(text_buf);
+break;
+case ECUResetResponseType::ALT_disableRapidPowerShutDown:
+single_value.field_disableRapidPowerShutDown->encode_text(text_buf);
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @UnifiedDiagnosticServices.ECUResetResponseType.");
+}
+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 @UnifiedDiagnosticServices.ECUResetResponseType.");
+}
+}
+
+void ECUResetResponseType_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+{
+single_value.union_selection = ECUResetResponseType::UNBOUND_VALUE;
+ECUResetResponseType::union_selection_type new_selection = (ECUResetResponseType::union_selection_type)text_buf.pull_int().get_val();
+switch (new_selection) {
+case ECUResetResponseType::ALT_hardReset:
+single_value.field_hardReset = new HardResetResponse_template;
+single_value.field_hardReset->decode_text(text_buf);
+break;
+case ECUResetResponseType::ALT_keyOffOnReset:
+single_value.field_keyOffOnReset = new KeyOffOnResetResponse_template;
+single_value.field_keyOffOnReset->decode_text(text_buf);
+break;
+case ECUResetResponseType::ALT_softReset:
+single_value.field_softReset = new SoftResetResponse_template;
+single_value.field_softReset->decode_text(text_buf);
+break;
+case ECUResetResponseType::ALT_enableRapidPowerShutDown:
+single_value.field_enableRapidPowerShutDown = new EnableRapidPowerShutDownResponse_template;
+single_value.field_enableRapidPowerShutDown->decode_text(text_buf);
+break;
+case ECUResetResponseType::ALT_disableRapidPowerShutDown:
+single_value.field_disableRapidPowerShutDown = new DisableRapidPowerShutDownResponse_template;
+single_value.field_disableRapidPowerShutDown->decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @UnifiedDiagnosticServices.ECUResetResponseType.");
+}
+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 ECUResetResponseType_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 @UnifiedDiagnosticServices.ECUResetResponseType.");
+}
+}
+
+boolean ECUResetResponseType_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ECUResetResponseType_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 ECUResetResponseType_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 `@UnifiedDiagnosticServices.ECUResetResponseType'");
+    }
+    if (strcmp("hardReset", param_field) == 0) {
+      hardReset().set_param(param);
+      return;
+    } else if (strcmp("keyOffOnReset", param_field) == 0) {
+      keyOffOnReset().set_param(param);
+      return;
+    } else if (strcmp("softReset", param_field) == 0) {
+      softReset().set_param(param);
+      return;
+    } else if (strcmp("enableRapidPowerShutDown", param_field) == 0) {
+      enableRapidPowerShutDown().set_param(param);
+      return;
+    } else if (strcmp("disableRapidPowerShutDown", param_field) == 0) {
+      disableRapidPowerShutDown().set_param(param);
+      return;
+    } else param.error("Field `%s' not found in union template type `@UnifiedDiagnosticServices.ECUResetResponseType'", 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: {
+    ECUResetResponseType_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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", "@UnifiedDiagnosticServices.ECUResetResponseType");
+    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, "hardReset")) {
+      hardReset().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "keyOffOnReset")) {
+      keyOffOnReset().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "softReset")) {
+      softReset().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "enableRapidPowerShutDown")) {
+      enableRapidPowerShutDown().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "disableRapidPowerShutDown")) {
+      disableRapidPowerShutDown().set_param(*mp_last);
+      break;
+    }
+    mp_last->error("Field %s does not exist in type @UnifiedDiagnosticServices.ECUResetResponseType.", last_name);
+  } break;
+  default:
+    param.type_error("union template", "@UnifiedDiagnosticServices.ECUResetResponseType");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ECUResetResponseType_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 ECUResetResponseType::ALT_hardReset:
+single_value.field_hardReset->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.ECUResetResponseType");
+return;
+case ECUResetResponseType::ALT_keyOffOnReset:
+single_value.field_keyOffOnReset->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.ECUResetResponseType");
+return;
+case ECUResetResponseType::ALT_softReset:
+single_value.field_softReset->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.ECUResetResponseType");
+return;
+case ECUResetResponseType::ALT_enableRapidPowerShutDown:
+single_value.field_enableRapidPowerShutDown->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.ECUResetResponseType");
+return;
+case ECUResetResponseType::ALT_disableRapidPowerShutDown:
+single_value.field_disableRapidPowerShutDown->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.ECUResetResponseType");
+return;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @UnifiedDiagnosticServices.ECUResetResponseType.");
+}
+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 : "@UnifiedDiagnosticServices.ECUResetResponseType");
+}
+
+ECUResetRequestSID::ECUResetRequestSID()
+{
+}
+
+ECUResetRequestSID::ECUResetRequestSID(const OCTETSTRING& par_sid,
+    const SuppressPosRspMsgIndicationBitType& par_suppressPosRspMsgIndicationBit,
+    const ECUResetRequestType& par_resetType)
+  :   field_sid(par_sid),
+  field_suppressPosRspMsgIndicationBit(par_suppressPosRspMsgIndicationBit),
+  field_resetType(par_resetType)
+{
+}
+
+ECUResetRequestSID::ECUResetRequestSID(const ECUResetRequestSID& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.ECUResetRequestSID.");
+if (other_value.sid().is_bound()) field_sid = other_value.sid();
+else field_sid.clean_up();
+if (other_value.suppressPosRspMsgIndicationBit().is_bound()) field_suppressPosRspMsgIndicationBit = other_value.suppressPosRspMsgIndicationBit();
+else field_suppressPosRspMsgIndicationBit.clean_up();
+if (other_value.resetType().is_bound()) field_resetType = other_value.resetType();
+else field_resetType.clean_up();
+}
+
+void ECUResetRequestSID::clean_up()
+{
+field_sid.clean_up();
+field_suppressPosRspMsgIndicationBit.clean_up();
+field_resetType.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ECUResetRequestSID::get_descriptor() const { return &ECUResetRequestSID_descr_; }
+ECUResetRequestSID& ECUResetRequestSID::operator=(const ECUResetRequestSID& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.ECUResetRequestSID.");
+  if (other_value.sid().is_bound()) field_sid = other_value.sid();
+  else field_sid.clean_up();
+  if (other_value.suppressPosRspMsgIndicationBit().is_bound()) field_suppressPosRspMsgIndicationBit = other_value.suppressPosRspMsgIndicationBit();
+  else field_suppressPosRspMsgIndicationBit.clean_up();
+  if (other_value.resetType().is_bound()) field_resetType = other_value.resetType();
+  else field_resetType.clean_up();
+}
+return *this;
+}
+
+boolean ECUResetRequestSID::operator==(const ECUResetRequestSID& other_value) const
+{
+return field_sid==other_value.field_sid
+  && field_suppressPosRspMsgIndicationBit==other_value.field_suppressPosRspMsgIndicationBit
+  && field_resetType==other_value.field_resetType;
+}
+
+boolean ECUResetRequestSID::is_bound() const
+{
+return (field_sid.is_bound())
+  || (field_suppressPosRspMsgIndicationBit.is_bound())
+  || (field_resetType.is_bound());
+}
+boolean ECUResetRequestSID::is_value() const
+{
+return field_sid.is_value()
+  && field_suppressPosRspMsgIndicationBit.is_value()
+  && field_resetType.is_value();
+}
+void ECUResetRequestSID::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ sid := ");
+field_sid.log();
+TTCN_Logger::log_event_str(", suppressPosRspMsgIndicationBit := ");
+field_suppressPosRspMsgIndicationBit.log();
+TTCN_Logger::log_event_str(", resetType := ");
+field_resetType.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ECUResetRequestSID::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 @UnifiedDiagnosticServices.ECUResetRequestSID 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) sid().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) suppressPosRspMsgIndicationBit().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) resetType().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(), "sid")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          sid().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(), "suppressPosRspMsgIndicationBit")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          suppressPosRspMsgIndicationBit().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(), "resetType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          resetType().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 @UnifiedDiagnosticServices.ECUResetRequestSID: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.ECUResetRequestSID");
+  }
+}
+
+void ECUResetRequestSID::set_implicit_omit()
+{
+if (sid().is_bound()) sid().set_implicit_omit();
+if (suppressPosRspMsgIndicationBit().is_bound()) suppressPosRspMsgIndicationBit().set_implicit_omit();
+if (resetType().is_bound()) resetType().set_implicit_omit();
+}
+
+void ECUResetRequestSID::encode_text(Text_Buf& text_buf) const
+{
+field_sid.encode_text(text_buf);
+field_suppressPosRspMsgIndicationBit.encode_text(text_buf);
+field_resetType.encode_text(text_buf);
+}
+
+void ECUResetRequestSID::decode_text(Text_Buf& text_buf)
+{
+field_sid.decode_text(text_buf);
+field_suppressPosRspMsgIndicationBit.decode_text(text_buf);
+field_resetType.decode_text(text_buf);
+}
+
+void ECUResetRequestSID::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ECUResetRequestSID::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ECUResetRequestSID::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, ECUResetRequestSID_sid_descr_.raw->forceomit);
+  decoded_field_length = field_sid.RAW_decode(ECUResetRequestSID_sid_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, ECUResetRequestSID_suppressPosRspMsgIndicationBit_descr_.raw->forceomit);
+  decoded_field_length = field_suppressPosRspMsgIndicationBit.RAW_decode(ECUResetRequestSID_suppressPosRspMsgIndicationBit_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, ECUResetRequestSID_resetType_descr_.raw->forceomit);
+  decoded_field_length = field_resetType.RAW_decode(ECUResetRequestSID_resetType_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 ECUResetRequestSID::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, ECUResetRequestSID_sid_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ECUResetRequestSID_suppressPosRspMsgIndicationBit_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ECUResetRequestSID_resetType_descr_.raw);
+  encoded_length += field_sid.RAW_encode(ECUResetRequestSID_sid_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_suppressPosRspMsgIndicationBit.RAW_encode(ECUResetRequestSID_suppressPosRspMsgIndicationBit_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_resetType.RAW_encode(ECUResetRequestSID_resetType_descr_, *myleaf.body.node.nodes[2]);
+  return myleaf.length = encoded_length;
+}
+
+struct ECUResetRequestSID_template::single_value_struct {
+OCTETSTRING_template field_sid;
+SuppressPosRspMsgIndicationBitType_template field_suppressPosRspMsgIndicationBit;
+ECUResetRequestType_template field_resetType;
+};
+
+void ECUResetRequestSID_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_sid = ANY_VALUE;
+single_value->field_suppressPosRspMsgIndicationBit = ANY_VALUE;
+single_value->field_resetType = ANY_VALUE;
+}
+}
+}
+
+void ECUResetRequestSID_template::copy_value(const ECUResetRequestSID& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.sid().is_bound()) {
+  single_value->field_sid = other_value.sid();
+} else {
+  single_value->field_sid.clean_up();
+}
+if (other_value.suppressPosRspMsgIndicationBit().is_bound()) {
+  single_value->field_suppressPosRspMsgIndicationBit = other_value.suppressPosRspMsgIndicationBit();
+} else {
+  single_value->field_suppressPosRspMsgIndicationBit.clean_up();
+}
+if (other_value.resetType().is_bound()) {
+  single_value->field_resetType = other_value.resetType();
+} else {
+  single_value->field_resetType.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ECUResetRequestSID_template::copy_template(const ECUResetRequestSID_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.sid().get_selection()) {
+single_value->field_sid = other_value.sid();
+} else {
+single_value->field_sid.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.suppressPosRspMsgIndicationBit().get_selection()) {
+single_value->field_suppressPosRspMsgIndicationBit = other_value.suppressPosRspMsgIndicationBit();
+} else {
+single_value->field_suppressPosRspMsgIndicationBit.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.resetType().get_selection()) {
+single_value->field_resetType = other_value.resetType();
+} else {
+single_value->field_resetType.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ECUResetRequestSID_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.ECUResetRequestSID.");
+break;
+}
+set_selection(other_value);
+}
+
+ECUResetRequestSID_template::ECUResetRequestSID_template()
+{
+}
+
+ECUResetRequestSID_template::ECUResetRequestSID_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ECUResetRequestSID_template::ECUResetRequestSID_template(const ECUResetRequestSID& other_value)
+{
+copy_value(other_value);
+}
+
+ECUResetRequestSID_template::ECUResetRequestSID_template(const OPTIONAL<ECUResetRequestSID>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ECUResetRequestSID&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.ECUResetRequestSID from an unbound optional field.");
+}
+}
+
+ECUResetRequestSID_template::ECUResetRequestSID_template(const ECUResetRequestSID_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ECUResetRequestSID_template::~ECUResetRequestSID_template()
+{
+clean_up();
+}
+
+ECUResetRequestSID_template& ECUResetRequestSID_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ECUResetRequestSID_template& ECUResetRequestSID_template::operator=(const ECUResetRequestSID& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ECUResetRequestSID_template& ECUResetRequestSID_template::operator=(const OPTIONAL<ECUResetRequestSID>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ECUResetRequestSID&)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 @UnifiedDiagnosticServices.ECUResetRequestSID.");
+}
+return *this;
+}
+
+ECUResetRequestSID_template& ECUResetRequestSID_template::operator=(const ECUResetRequestSID_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ECUResetRequestSID_template::match(const ECUResetRequestSID& 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.sid().is_bound()) return FALSE;
+if(!single_value->field_sid.match(other_value.sid(), legacy))return FALSE;
+if(!other_value.suppressPosRspMsgIndicationBit().is_bound()) return FALSE;
+if(!single_value->field_suppressPosRspMsgIndicationBit.match(other_value.suppressPosRspMsgIndicationBit(), legacy))return FALSE;
+if(!other_value.resetType().is_bound()) return FALSE;
+if(!single_value->field_resetType.match(other_value.resetType(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.ECUResetRequestSID.");
+}
+return FALSE;
+}
+
+boolean ECUResetRequestSID_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_sid.is_bound()
+
+ ||single_value->field_suppressPosRspMsgIndicationBit.is_bound()
+
+ ||single_value->field_resetType.is_bound()
+;
+}
+
+boolean ECUResetRequestSID_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_sid.is_value()
+ &&single_value->field_suppressPosRspMsgIndicationBit.is_value()
+ &&single_value->field_resetType.is_value();
+}
+
+void ECUResetRequestSID_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ECUResetRequestSID ECUResetRequestSID_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 @UnifiedDiagnosticServices.ECUResetRequestSID.");
+ECUResetRequestSID ret_val;
+if (single_value->field_sid.is_bound()) {
+ret_val.sid() = single_value->field_sid.valueof();
+}
+if (single_value->field_suppressPosRspMsgIndicationBit.is_bound()) {
+ret_val.suppressPosRspMsgIndicationBit() = single_value->field_suppressPosRspMsgIndicationBit.valueof();
+}
+if (single_value->field_resetType.is_bound()) {
+ret_val.resetType() = single_value->field_resetType.valueof();
+}
+return ret_val;
+}
+
+void ECUResetRequestSID_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.ECUResetRequestSID.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ECUResetRequestSID_template[list_length];
+}
+
+ECUResetRequestSID_template& ECUResetRequestSID_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.ECUResetRequestSID.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.ECUResetRequestSID.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& ECUResetRequestSID_template::sid()
+{
+set_specific();
+return single_value->field_sid;
+}
+
+const OCTETSTRING_template& ECUResetRequestSID_template::sid() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field sid of a non-specific template of type @UnifiedDiagnosticServices.ECUResetRequestSID.");
+return single_value->field_sid;
+}
+
+SuppressPosRspMsgIndicationBitType_template& ECUResetRequestSID_template::suppressPosRspMsgIndicationBit()
+{
+set_specific();
+return single_value->field_suppressPosRspMsgIndicationBit;
+}
+
+const SuppressPosRspMsgIndicationBitType_template& ECUResetRequestSID_template::suppressPosRspMsgIndicationBit() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field suppressPosRspMsgIndicationBit of a non-specific template of type @UnifiedDiagnosticServices.ECUResetRequestSID.");
+return single_value->field_suppressPosRspMsgIndicationBit;
+}
+
+ECUResetRequestType_template& ECUResetRequestSID_template::resetType()
+{
+set_specific();
+return single_value->field_resetType;
+}
+
+const ECUResetRequestType_template& ECUResetRequestSID_template::resetType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field resetType of a non-specific template of type @UnifiedDiagnosticServices.ECUResetRequestSID.");
+return single_value->field_resetType;
+}
+
+int ECUResetRequestSID_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ECUResetRequestSID 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 @UnifiedDiagnosticServices.ECUResetRequestSID 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 @UnifiedDiagnosticServices.ECUResetRequestSID containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ECUResetRequestSID containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ECUResetRequestSID containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ECUResetRequestSID containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.ECUResetRequestSID.");
+  }
+  return 0;
+}
+
+void ECUResetRequestSID_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ sid := ");
+single_value->field_sid.log();
+TTCN_Logger::log_event_str(", suppressPosRspMsgIndicationBit := ");
+single_value->field_suppressPosRspMsgIndicationBit.log();
+TTCN_Logger::log_event_str(", resetType := ");
+single_value->field_resetType.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ECUResetRequestSID_template::log_match(const ECUResetRequestSID& 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_sid.match(match_value.sid(), legacy)){
+TTCN_Logger::log_logmatch_info(".sid");
+single_value->field_sid.log_match(match_value.sid(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_suppressPosRspMsgIndicationBit.match(match_value.suppressPosRspMsgIndicationBit(), legacy)){
+TTCN_Logger::log_logmatch_info(".suppressPosRspMsgIndicationBit");
+single_value->field_suppressPosRspMsgIndicationBit.log_match(match_value.suppressPosRspMsgIndicationBit(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_resetType.match(match_value.resetType(), legacy)){
+TTCN_Logger::log_logmatch_info(".resetType");
+single_value->field_resetType.log_match(match_value.resetType(), 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("{ sid := ");
+single_value->field_sid.log_match(match_value.sid(), legacy);
+TTCN_Logger::log_event_str(", suppressPosRspMsgIndicationBit := ");
+single_value->field_suppressPosRspMsgIndicationBit.log_match(match_value.suppressPosRspMsgIndicationBit(), legacy);
+TTCN_Logger::log_event_str(", resetType := ");
+single_value->field_resetType.log_match(match_value.resetType(), 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 ECUResetRequestSID_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_sid.encode_text(text_buf);
+single_value->field_suppressPosRspMsgIndicationBit.encode_text(text_buf);
+single_value->field_resetType.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 @UnifiedDiagnosticServices.ECUResetRequestSID.");
+}
+}
+
+void ECUResetRequestSID_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_sid.decode_text(text_buf);
+single_value->field_suppressPosRspMsgIndicationBit.decode_text(text_buf);
+single_value->field_resetType.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 ECUResetRequestSID_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 @UnifiedDiagnosticServices.ECUResetRequestSID.");
+}
+}
+
+void ECUResetRequestSID_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: {
+    ECUResetRequestSID_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @UnifiedDiagnosticServices.ECUResetRequestSID 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) sid().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) suppressPosRspMsgIndicationBit().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) resetType().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(), "sid")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          sid().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(), "suppressPosRspMsgIndicationBit")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          suppressPosRspMsgIndicationBit().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(), "resetType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          resetType().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 @UnifiedDiagnosticServices.ECUResetRequestSID: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.ECUResetRequestSID");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ECUResetRequestSID_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_sid.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.ECUResetRequestSID");
+single_value->field_suppressPosRspMsgIndicationBit.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.ECUResetRequestSID");
+single_value->field_resetType.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.ECUResetRequestSID");
+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 : "@UnifiedDiagnosticServices.ECUResetRequestSID");
+}
+
+boolean ECUResetRequestSID_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ECUResetRequestSID_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ECUResetResponseSID::ECUResetResponseSID()
+{
+}
+
+ECUResetResponseSID::ECUResetResponseSID(const OCTETSTRING& par_sid,
+    const BITSTRING& par_reserved,
+    const ECUResetResponseType& par_resetType)
+  :   field_sid(par_sid),
+  field_reserved(par_reserved),
+  field_resetType(par_resetType)
+{
+}
+
+ECUResetResponseSID::ECUResetResponseSID(const ECUResetResponseSID& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.ECUResetResponseSID.");
+if (other_value.sid().is_bound()) field_sid = other_value.sid();
+else field_sid.clean_up();
+if (other_value.reserved().is_bound()) field_reserved = other_value.reserved();
+else field_reserved.clean_up();
+if (other_value.resetType().is_bound()) field_resetType = other_value.resetType();
+else field_resetType.clean_up();
+}
+
+void ECUResetResponseSID::clean_up()
+{
+field_sid.clean_up();
+field_reserved.clean_up();
+field_resetType.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ECUResetResponseSID::get_descriptor() const { return &ECUResetResponseSID_descr_; }
+ECUResetResponseSID& ECUResetResponseSID::operator=(const ECUResetResponseSID& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.ECUResetResponseSID.");
+  if (other_value.sid().is_bound()) field_sid = other_value.sid();
+  else field_sid.clean_up();
+  if (other_value.reserved().is_bound()) field_reserved = other_value.reserved();
+  else field_reserved.clean_up();
+  if (other_value.resetType().is_bound()) field_resetType = other_value.resetType();
+  else field_resetType.clean_up();
+}
+return *this;
+}
+
+boolean ECUResetResponseSID::operator==(const ECUResetResponseSID& other_value) const
+{
+return field_sid==other_value.field_sid
+  && field_reserved==other_value.field_reserved
+  && field_resetType==other_value.field_resetType;
+}
+
+boolean ECUResetResponseSID::is_bound() const
+{
+return (field_sid.is_bound())
+  || (field_reserved.is_bound())
+  || (field_resetType.is_bound());
+}
+boolean ECUResetResponseSID::is_value() const
+{
+return field_sid.is_value()
+  && field_reserved.is_value()
+  && field_resetType.is_value();
+}
+void ECUResetResponseSID::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ sid := ");
+field_sid.log();
+TTCN_Logger::log_event_str(", reserved := ");
+field_reserved.log();
+TTCN_Logger::log_event_str(", resetType := ");
+field_resetType.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ECUResetResponseSID::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 @UnifiedDiagnosticServices.ECUResetResponseSID 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) sid().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) resetType().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(), "sid")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          sid().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(), "reserved")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved().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(), "resetType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          resetType().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 @UnifiedDiagnosticServices.ECUResetResponseSID: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.ECUResetResponseSID");
+  }
+}
+
+void ECUResetResponseSID::set_implicit_omit()
+{
+if (sid().is_bound()) sid().set_implicit_omit();
+if (reserved().is_bound()) reserved().set_implicit_omit();
+if (resetType().is_bound()) resetType().set_implicit_omit();
+}
+
+void ECUResetResponseSID::encode_text(Text_Buf& text_buf) const
+{
+field_sid.encode_text(text_buf);
+field_reserved.encode_text(text_buf);
+field_resetType.encode_text(text_buf);
+}
+
+void ECUResetResponseSID::decode_text(Text_Buf& text_buf)
+{
+field_sid.decode_text(text_buf);
+field_reserved.decode_text(text_buf);
+field_resetType.decode_text(text_buf);
+}
+
+void ECUResetResponseSID::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ECUResetResponseSID::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ECUResetResponseSID::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, ECUResetResponseSID_sid_descr_.raw->forceomit);
+  decoded_field_length = field_sid.RAW_decode(ECUResetResponseSID_sid_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, ECUResetResponseSID_reserved_descr_.raw->forceomit);
+  decoded_field_length = field_reserved.RAW_decode(ECUResetResponseSID_reserved_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, ECUResetResponseSID_resetType_descr_.raw->forceomit);
+  decoded_field_length = field_resetType.RAW_decode(ECUResetResponseSID_resetType_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 ECUResetResponseSID::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, ECUResetResponseSID_sid_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ECUResetResponseSID_reserved_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, ECUResetResponseSID_resetType_descr_.raw);
+  encoded_length += field_sid.RAW_encode(ECUResetResponseSID_sid_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved.RAW_encode(ECUResetResponseSID_reserved_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_resetType.RAW_encode(ECUResetResponseSID_resetType_descr_, *myleaf.body.node.nodes[2]);
+  return myleaf.length = encoded_length;
+}
+
+struct ECUResetResponseSID_template::single_value_struct {
+OCTETSTRING_template field_sid;
+BITSTRING_template field_reserved;
+ECUResetResponseType_template field_resetType;
+};
+
+void ECUResetResponseSID_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_sid = ANY_VALUE;
+single_value->field_reserved = ANY_VALUE;
+single_value->field_resetType = ANY_VALUE;
+}
+}
+}
+
+void ECUResetResponseSID_template::copy_value(const ECUResetResponseSID& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.sid().is_bound()) {
+  single_value->field_sid = other_value.sid();
+} else {
+  single_value->field_sid.clean_up();
+}
+if (other_value.reserved().is_bound()) {
+  single_value->field_reserved = other_value.reserved();
+} else {
+  single_value->field_reserved.clean_up();
+}
+if (other_value.resetType().is_bound()) {
+  single_value->field_resetType = other_value.resetType();
+} else {
+  single_value->field_resetType.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ECUResetResponseSID_template::copy_template(const ECUResetResponseSID_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.sid().get_selection()) {
+single_value->field_sid = other_value.sid();
+} else {
+single_value->field_sid.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved().get_selection()) {
+single_value->field_reserved = other_value.reserved();
+} else {
+single_value->field_reserved.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.resetType().get_selection()) {
+single_value->field_resetType = other_value.resetType();
+} else {
+single_value->field_resetType.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ECUResetResponseSID_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.ECUResetResponseSID.");
+break;
+}
+set_selection(other_value);
+}
+
+ECUResetResponseSID_template::ECUResetResponseSID_template()
+{
+}
+
+ECUResetResponseSID_template::ECUResetResponseSID_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ECUResetResponseSID_template::ECUResetResponseSID_template(const ECUResetResponseSID& other_value)
+{
+copy_value(other_value);
+}
+
+ECUResetResponseSID_template::ECUResetResponseSID_template(const OPTIONAL<ECUResetResponseSID>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ECUResetResponseSID&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.ECUResetResponseSID from an unbound optional field.");
+}
+}
+
+ECUResetResponseSID_template::ECUResetResponseSID_template(const ECUResetResponseSID_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ECUResetResponseSID_template::~ECUResetResponseSID_template()
+{
+clean_up();
+}
+
+ECUResetResponseSID_template& ECUResetResponseSID_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ECUResetResponseSID_template& ECUResetResponseSID_template::operator=(const ECUResetResponseSID& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ECUResetResponseSID_template& ECUResetResponseSID_template::operator=(const OPTIONAL<ECUResetResponseSID>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ECUResetResponseSID&)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 @UnifiedDiagnosticServices.ECUResetResponseSID.");
+}
+return *this;
+}
+
+ECUResetResponseSID_template& ECUResetResponseSID_template::operator=(const ECUResetResponseSID_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ECUResetResponseSID_template::match(const ECUResetResponseSID& 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.sid().is_bound()) return FALSE;
+if(!single_value->field_sid.match(other_value.sid(), legacy))return FALSE;
+if(!other_value.reserved().is_bound()) return FALSE;
+if(!single_value->field_reserved.match(other_value.reserved(), legacy))return FALSE;
+if(!other_value.resetType().is_bound()) return FALSE;
+if(!single_value->field_resetType.match(other_value.resetType(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.ECUResetResponseSID.");
+}
+return FALSE;
+}
+
+boolean ECUResetResponseSID_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_sid.is_bound()
+
+ ||single_value->field_reserved.is_bound()
+
+ ||single_value->field_resetType.is_bound()
+;
+}
+
+boolean ECUResetResponseSID_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_sid.is_value()
+ &&single_value->field_reserved.is_value()
+ &&single_value->field_resetType.is_value();
+}
+
+void ECUResetResponseSID_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ECUResetResponseSID ECUResetResponseSID_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 @UnifiedDiagnosticServices.ECUResetResponseSID.");
+ECUResetResponseSID ret_val;
+if (single_value->field_sid.is_bound()) {
+ret_val.sid() = single_value->field_sid.valueof();
+}
+if (single_value->field_reserved.is_bound()) {
+ret_val.reserved() = single_value->field_reserved.valueof();
+}
+if (single_value->field_resetType.is_bound()) {
+ret_val.resetType() = single_value->field_resetType.valueof();
+}
+return ret_val;
+}
+
+void ECUResetResponseSID_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.ECUResetResponseSID.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ECUResetResponseSID_template[list_length];
+}
+
+ECUResetResponseSID_template& ECUResetResponseSID_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.ECUResetResponseSID.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.ECUResetResponseSID.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& ECUResetResponseSID_template::sid()
+{
+set_specific();
+return single_value->field_sid;
+}
+
+const OCTETSTRING_template& ECUResetResponseSID_template::sid() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field sid of a non-specific template of type @UnifiedDiagnosticServices.ECUResetResponseSID.");
+return single_value->field_sid;
+}
+
+BITSTRING_template& ECUResetResponseSID_template::reserved()
+{
+set_specific();
+return single_value->field_reserved;
+}
+
+const BITSTRING_template& ECUResetResponseSID_template::reserved() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved of a non-specific template of type @UnifiedDiagnosticServices.ECUResetResponseSID.");
+return single_value->field_reserved;
+}
+
+ECUResetResponseType_template& ECUResetResponseSID_template::resetType()
+{
+set_specific();
+return single_value->field_resetType;
+}
+
+const ECUResetResponseType_template& ECUResetResponseSID_template::resetType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field resetType of a non-specific template of type @UnifiedDiagnosticServices.ECUResetResponseSID.");
+return single_value->field_resetType;
+}
+
+int ECUResetResponseSID_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ECUResetResponseSID 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 @UnifiedDiagnosticServices.ECUResetResponseSID 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 @UnifiedDiagnosticServices.ECUResetResponseSID containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ECUResetResponseSID containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ECUResetResponseSID containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ECUResetResponseSID containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.ECUResetResponseSID.");
+  }
+  return 0;
+}
+
+void ECUResetResponseSID_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ sid := ");
+single_value->field_sid.log();
+TTCN_Logger::log_event_str(", reserved := ");
+single_value->field_reserved.log();
+TTCN_Logger::log_event_str(", resetType := ");
+single_value->field_resetType.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ECUResetResponseSID_template::log_match(const ECUResetResponseSID& 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_sid.match(match_value.sid(), legacy)){
+TTCN_Logger::log_logmatch_info(".sid");
+single_value->field_sid.log_match(match_value.sid(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved.match(match_value.reserved(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved");
+single_value->field_reserved.log_match(match_value.reserved(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_resetType.match(match_value.resetType(), legacy)){
+TTCN_Logger::log_logmatch_info(".resetType");
+single_value->field_resetType.log_match(match_value.resetType(), 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("{ sid := ");
+single_value->field_sid.log_match(match_value.sid(), legacy);
+TTCN_Logger::log_event_str(", reserved := ");
+single_value->field_reserved.log_match(match_value.reserved(), legacy);
+TTCN_Logger::log_event_str(", resetType := ");
+single_value->field_resetType.log_match(match_value.resetType(), 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 ECUResetResponseSID_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_sid.encode_text(text_buf);
+single_value->field_reserved.encode_text(text_buf);
+single_value->field_resetType.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 @UnifiedDiagnosticServices.ECUResetResponseSID.");
+}
+}
+
+void ECUResetResponseSID_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_sid.decode_text(text_buf);
+single_value->field_reserved.decode_text(text_buf);
+single_value->field_resetType.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 ECUResetResponseSID_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 @UnifiedDiagnosticServices.ECUResetResponseSID.");
+}
+}
+
+void ECUResetResponseSID_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: {
+    ECUResetResponseSID_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @UnifiedDiagnosticServices.ECUResetResponseSID 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) sid().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) resetType().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(), "sid")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          sid().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(), "reserved")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved().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(), "resetType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          resetType().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 @UnifiedDiagnosticServices.ECUResetResponseSID: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.ECUResetResponseSID");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ECUResetResponseSID_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_sid.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.ECUResetResponseSID");
+single_value->field_reserved.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.ECUResetResponseSID");
+single_value->field_resetType.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.ECUResetResponseSID");
+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 : "@UnifiedDiagnosticServices.ECUResetResponseSID");
+}
+
+boolean ECUResetResponseSID_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ECUResetResponseSID_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+RequestSeedRequest0::RequestSeedRequest0()
+{
+}
+
+RequestSeedRequest0::RequestSeedRequest0(const BITSTRING& par_securityAccessType,
+    const OCTETSTRING& par_securityAccessDataRecord)
+  :   field_securityAccessType(par_securityAccessType),
+  field_securityAccessDataRecord(par_securityAccessDataRecord)
+{
+}
+
+RequestSeedRequest0::RequestSeedRequest0(const RequestSeedRequest0& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.RequestSeedRequest0.");
+if (other_value.securityAccessType().is_bound()) field_securityAccessType = other_value.securityAccessType();
+else field_securityAccessType.clean_up();
+if (other_value.securityAccessDataRecord().is_bound()) field_securityAccessDataRecord = other_value.securityAccessDataRecord();
+else field_securityAccessDataRecord.clean_up();
+}
+
+void RequestSeedRequest0::clean_up()
+{
+field_securityAccessType.clean_up();
+field_securityAccessDataRecord.clean_up();
+}
+
+const TTCN_Typedescriptor_t* RequestSeedRequest0::get_descriptor() const { return &RequestSeedRequest0_descr_; }
+RequestSeedRequest0& RequestSeedRequest0::operator=(const RequestSeedRequest0& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.RequestSeedRequest0.");
+  if (other_value.securityAccessType().is_bound()) field_securityAccessType = other_value.securityAccessType();
+  else field_securityAccessType.clean_up();
+  if (other_value.securityAccessDataRecord().is_bound()) field_securityAccessDataRecord = other_value.securityAccessDataRecord();
+  else field_securityAccessDataRecord.clean_up();
+}
+return *this;
+}
+
+boolean RequestSeedRequest0::operator==(const RequestSeedRequest0& other_value) const
+{
+return field_securityAccessType==other_value.field_securityAccessType
+  && field_securityAccessDataRecord==other_value.field_securityAccessDataRecord;
+}
+
+boolean RequestSeedRequest0::is_bound() const
+{
+return (field_securityAccessType.is_bound())
+  || (field_securityAccessDataRecord.is_bound());
+}
+boolean RequestSeedRequest0::is_value() const
+{
+return field_securityAccessType.is_value()
+  && field_securityAccessDataRecord.is_value();
+}
+void RequestSeedRequest0::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ securityAccessType := ");
+field_securityAccessType.log();
+TTCN_Logger::log_event_str(", securityAccessDataRecord := ");
+field_securityAccessDataRecord.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void RequestSeedRequest0::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 @UnifiedDiagnosticServices.RequestSeedRequest0 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) securityAccessType().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) securityAccessDataRecord().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(), "securityAccessType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          securityAccessType().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(), "securityAccessDataRecord")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          securityAccessDataRecord().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 @UnifiedDiagnosticServices.RequestSeedRequest0: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.RequestSeedRequest0");
+  }
+}
+
+void RequestSeedRequest0::set_implicit_omit()
+{
+if (securityAccessType().is_bound()) securityAccessType().set_implicit_omit();
+if (securityAccessDataRecord().is_bound()) securityAccessDataRecord().set_implicit_omit();
+}
+
+void RequestSeedRequest0::encode_text(Text_Buf& text_buf) const
+{
+field_securityAccessType.encode_text(text_buf);
+field_securityAccessDataRecord.encode_text(text_buf);
+}
+
+void RequestSeedRequest0::decode_text(Text_Buf& text_buf)
+{
+field_securityAccessType.decode_text(text_buf);
+field_securityAccessDataRecord.decode_text(text_buf);
+}
+
+void RequestSeedRequest0::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void RequestSeedRequest0::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int RequestSeedRequest0::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, RequestSeedRequest0_securityAccessType_descr_.raw->forceomit);
+  decoded_field_length = field_securityAccessType.RAW_decode(RequestSeedRequest0_securityAccessType_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, RequestSeedRequest0_securityAccessDataRecord_descr_.raw->forceomit);
+  decoded_field_length = field_securityAccessDataRecord.RAW_decode(RequestSeedRequest0_securityAccessDataRecord_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 RequestSeedRequest0::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, RequestSeedRequest0_securityAccessType_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, RequestSeedRequest0_securityAccessDataRecord_descr_.raw);
+  encoded_length += field_securityAccessType.RAW_encode(RequestSeedRequest0_securityAccessType_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_securityAccessDataRecord.RAW_encode(RequestSeedRequest0_securityAccessDataRecord_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct RequestSeedRequest0_template::single_value_struct {
+BITSTRING_template field_securityAccessType;
+OCTETSTRING_template field_securityAccessDataRecord;
+};
+
+void RequestSeedRequest0_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_securityAccessType = ANY_VALUE;
+single_value->field_securityAccessDataRecord = ANY_VALUE;
+}
+}
+}
+
+void RequestSeedRequest0_template::copy_value(const RequestSeedRequest0& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.securityAccessType().is_bound()) {
+  single_value->field_securityAccessType = other_value.securityAccessType();
+} else {
+  single_value->field_securityAccessType.clean_up();
+}
+if (other_value.securityAccessDataRecord().is_bound()) {
+  single_value->field_securityAccessDataRecord = other_value.securityAccessDataRecord();
+} else {
+  single_value->field_securityAccessDataRecord.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void RequestSeedRequest0_template::copy_template(const RequestSeedRequest0_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.securityAccessType().get_selection()) {
+single_value->field_securityAccessType = other_value.securityAccessType();
+} else {
+single_value->field_securityAccessType.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.securityAccessDataRecord().get_selection()) {
+single_value->field_securityAccessDataRecord = other_value.securityAccessDataRecord();
+} else {
+single_value->field_securityAccessDataRecord.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new RequestSeedRequest0_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.RequestSeedRequest0.");
+break;
+}
+set_selection(other_value);
+}
+
+RequestSeedRequest0_template::RequestSeedRequest0_template()
+{
+}
+
+RequestSeedRequest0_template::RequestSeedRequest0_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+RequestSeedRequest0_template::RequestSeedRequest0_template(const RequestSeedRequest0& other_value)
+{
+copy_value(other_value);
+}
+
+RequestSeedRequest0_template::RequestSeedRequest0_template(const OPTIONAL<RequestSeedRequest0>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const RequestSeedRequest0&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.RequestSeedRequest0 from an unbound optional field.");
+}
+}
+
+RequestSeedRequest0_template::RequestSeedRequest0_template(const RequestSeedRequest0_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+RequestSeedRequest0_template::~RequestSeedRequest0_template()
+{
+clean_up();
+}
+
+RequestSeedRequest0_template& RequestSeedRequest0_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+RequestSeedRequest0_template& RequestSeedRequest0_template::operator=(const RequestSeedRequest0& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+RequestSeedRequest0_template& RequestSeedRequest0_template::operator=(const OPTIONAL<RequestSeedRequest0>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const RequestSeedRequest0&)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 @UnifiedDiagnosticServices.RequestSeedRequest0.");
+}
+return *this;
+}
+
+RequestSeedRequest0_template& RequestSeedRequest0_template::operator=(const RequestSeedRequest0_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean RequestSeedRequest0_template::match(const RequestSeedRequest0& 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.securityAccessType().is_bound()) return FALSE;
+if(!single_value->field_securityAccessType.match(other_value.securityAccessType(), legacy))return FALSE;
+if(!other_value.securityAccessDataRecord().is_bound()) return FALSE;
+if(!single_value->field_securityAccessDataRecord.match(other_value.securityAccessDataRecord(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.RequestSeedRequest0.");
+}
+return FALSE;
+}
+
+boolean RequestSeedRequest0_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_securityAccessType.is_bound()
+
+ ||single_value->field_securityAccessDataRecord.is_bound()
+;
+}
+
+boolean RequestSeedRequest0_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_securityAccessType.is_value()
+ &&single_value->field_securityAccessDataRecord.is_value();
+}
+
+void RequestSeedRequest0_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+RequestSeedRequest0 RequestSeedRequest0_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 @UnifiedDiagnosticServices.RequestSeedRequest0.");
+RequestSeedRequest0 ret_val;
+if (single_value->field_securityAccessType.is_bound()) {
+ret_val.securityAccessType() = single_value->field_securityAccessType.valueof();
+}
+if (single_value->field_securityAccessDataRecord.is_bound()) {
+ret_val.securityAccessDataRecord() = single_value->field_securityAccessDataRecord.valueof();
+}
+return ret_val;
+}
+
+void RequestSeedRequest0_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.RequestSeedRequest0.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new RequestSeedRequest0_template[list_length];
+}
+
+RequestSeedRequest0_template& RequestSeedRequest0_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.RequestSeedRequest0.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.RequestSeedRequest0.");
+return value_list.list_value[list_index];
+}
+
+BITSTRING_template& RequestSeedRequest0_template::securityAccessType()
+{
+set_specific();
+return single_value->field_securityAccessType;
+}
+
+const BITSTRING_template& RequestSeedRequest0_template::securityAccessType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field securityAccessType of a non-specific template of type @UnifiedDiagnosticServices.RequestSeedRequest0.");
+return single_value->field_securityAccessType;
+}
+
+OCTETSTRING_template& RequestSeedRequest0_template::securityAccessDataRecord()
+{
+set_specific();
+return single_value->field_securityAccessDataRecord;
+}
+
+const OCTETSTRING_template& RequestSeedRequest0_template::securityAccessDataRecord() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field securityAccessDataRecord of a non-specific template of type @UnifiedDiagnosticServices.RequestSeedRequest0.");
+return single_value->field_securityAccessDataRecord;
+}
+
+int RequestSeedRequest0_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.RequestSeedRequest0 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 @UnifiedDiagnosticServices.RequestSeedRequest0 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 @UnifiedDiagnosticServices.RequestSeedRequest0 containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.RequestSeedRequest0 containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.RequestSeedRequest0 containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.RequestSeedRequest0 containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.RequestSeedRequest0.");
+  }
+  return 0;
+}
+
+void RequestSeedRequest0_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ securityAccessType := ");
+single_value->field_securityAccessType.log();
+TTCN_Logger::log_event_str(", securityAccessDataRecord := ");
+single_value->field_securityAccessDataRecord.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void RequestSeedRequest0_template::log_match(const RequestSeedRequest0& 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_securityAccessType.match(match_value.securityAccessType(), legacy)){
+TTCN_Logger::log_logmatch_info(".securityAccessType");
+single_value->field_securityAccessType.log_match(match_value.securityAccessType(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_securityAccessDataRecord.match(match_value.securityAccessDataRecord(), legacy)){
+TTCN_Logger::log_logmatch_info(".securityAccessDataRecord");
+single_value->field_securityAccessDataRecord.log_match(match_value.securityAccessDataRecord(), 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("{ securityAccessType := ");
+single_value->field_securityAccessType.log_match(match_value.securityAccessType(), legacy);
+TTCN_Logger::log_event_str(", securityAccessDataRecord := ");
+single_value->field_securityAccessDataRecord.log_match(match_value.securityAccessDataRecord(), 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 RequestSeedRequest0_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_securityAccessType.encode_text(text_buf);
+single_value->field_securityAccessDataRecord.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 @UnifiedDiagnosticServices.RequestSeedRequest0.");
+}
+}
+
+void RequestSeedRequest0_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_securityAccessType.decode_text(text_buf);
+single_value->field_securityAccessDataRecord.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 RequestSeedRequest0_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 @UnifiedDiagnosticServices.RequestSeedRequest0.");
+}
+}
+
+void RequestSeedRequest0_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: {
+    RequestSeedRequest0_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @UnifiedDiagnosticServices.RequestSeedRequest0 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) securityAccessType().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) securityAccessDataRecord().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(), "securityAccessType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          securityAccessType().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(), "securityAccessDataRecord")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          securityAccessDataRecord().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 @UnifiedDiagnosticServices.RequestSeedRequest0: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.RequestSeedRequest0");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void RequestSeedRequest0_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_securityAccessType.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.RequestSeedRequest0");
+single_value->field_securityAccessDataRecord.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.RequestSeedRequest0");
+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 : "@UnifiedDiagnosticServices.RequestSeedRequest0");
+}
+
+boolean RequestSeedRequest0_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean RequestSeedRequest0_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+SendKeyRequest0::SendKeyRequest0()
+{
+}
+
+SendKeyRequest0::SendKeyRequest0(const BITSTRING& par_securityAccessType,
+    const OCTETSTRING& par_securityKey)
+  :   field_securityAccessType(par_securityAccessType),
+  field_securityKey(par_securityKey)
+{
+}
+
+SendKeyRequest0::SendKeyRequest0(const SendKeyRequest0& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.SendKeyRequest0.");
+if (other_value.securityAccessType().is_bound()) field_securityAccessType = other_value.securityAccessType();
+else field_securityAccessType.clean_up();
+if (other_value.securityKey().is_bound()) field_securityKey = other_value.securityKey();
+else field_securityKey.clean_up();
+}
+
+void SendKeyRequest0::clean_up()
+{
+field_securityAccessType.clean_up();
+field_securityKey.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SendKeyRequest0::get_descriptor() const { return &SendKeyRequest0_descr_; }
+SendKeyRequest0& SendKeyRequest0::operator=(const SendKeyRequest0& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.SendKeyRequest0.");
+  if (other_value.securityAccessType().is_bound()) field_securityAccessType = other_value.securityAccessType();
+  else field_securityAccessType.clean_up();
+  if (other_value.securityKey().is_bound()) field_securityKey = other_value.securityKey();
+  else field_securityKey.clean_up();
+}
+return *this;
+}
+
+boolean SendKeyRequest0::operator==(const SendKeyRequest0& other_value) const
+{
+return field_securityAccessType==other_value.field_securityAccessType
+  && field_securityKey==other_value.field_securityKey;
+}
+
+boolean SendKeyRequest0::is_bound() const
+{
+return (field_securityAccessType.is_bound())
+  || (field_securityKey.is_bound());
+}
+boolean SendKeyRequest0::is_value() const
+{
+return field_securityAccessType.is_value()
+  && field_securityKey.is_value();
+}
+void SendKeyRequest0::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ securityAccessType := ");
+field_securityAccessType.log();
+TTCN_Logger::log_event_str(", securityKey := ");
+field_securityKey.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SendKeyRequest0::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 @UnifiedDiagnosticServices.SendKeyRequest0 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) securityAccessType().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) securityKey().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(), "securityAccessType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          securityAccessType().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(), "securityKey")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          securityKey().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 @UnifiedDiagnosticServices.SendKeyRequest0: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.SendKeyRequest0");
+  }
+}
+
+void SendKeyRequest0::set_implicit_omit()
+{
+if (securityAccessType().is_bound()) securityAccessType().set_implicit_omit();
+if (securityKey().is_bound()) securityKey().set_implicit_omit();
+}
+
+void SendKeyRequest0::encode_text(Text_Buf& text_buf) const
+{
+field_securityAccessType.encode_text(text_buf);
+field_securityKey.encode_text(text_buf);
+}
+
+void SendKeyRequest0::decode_text(Text_Buf& text_buf)
+{
+field_securityAccessType.decode_text(text_buf);
+field_securityKey.decode_text(text_buf);
+}
+
+void SendKeyRequest0::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void SendKeyRequest0::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int SendKeyRequest0::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, SendKeyRequest0_securityAccessType_descr_.raw->forceomit);
+  decoded_field_length = field_securityAccessType.RAW_decode(SendKeyRequest0_securityAccessType_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, SendKeyRequest0_securityKey_descr_.raw->forceomit);
+  decoded_field_length = field_securityKey.RAW_decode(SendKeyRequest0_securityKey_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 SendKeyRequest0::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, SendKeyRequest0_securityAccessType_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, SendKeyRequest0_securityKey_descr_.raw);
+  encoded_length += field_securityAccessType.RAW_encode(SendKeyRequest0_securityAccessType_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_securityKey.RAW_encode(SendKeyRequest0_securityKey_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct SendKeyRequest0_template::single_value_struct {
+BITSTRING_template field_securityAccessType;
+OCTETSTRING_template field_securityKey;
+};
+
+void SendKeyRequest0_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_securityAccessType = ANY_VALUE;
+single_value->field_securityKey = ANY_VALUE;
+}
+}
+}
+
+void SendKeyRequest0_template::copy_value(const SendKeyRequest0& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.securityAccessType().is_bound()) {
+  single_value->field_securityAccessType = other_value.securityAccessType();
+} else {
+  single_value->field_securityAccessType.clean_up();
+}
+if (other_value.securityKey().is_bound()) {
+  single_value->field_securityKey = other_value.securityKey();
+} else {
+  single_value->field_securityKey.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SendKeyRequest0_template::copy_template(const SendKeyRequest0_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.securityAccessType().get_selection()) {
+single_value->field_securityAccessType = other_value.securityAccessType();
+} else {
+single_value->field_securityAccessType.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.securityKey().get_selection()) {
+single_value->field_securityKey = other_value.securityKey();
+} else {
+single_value->field_securityKey.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SendKeyRequest0_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.SendKeyRequest0.");
+break;
+}
+set_selection(other_value);
+}
+
+SendKeyRequest0_template::SendKeyRequest0_template()
+{
+}
+
+SendKeyRequest0_template::SendKeyRequest0_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SendKeyRequest0_template::SendKeyRequest0_template(const SendKeyRequest0& other_value)
+{
+copy_value(other_value);
+}
+
+SendKeyRequest0_template::SendKeyRequest0_template(const OPTIONAL<SendKeyRequest0>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SendKeyRequest0&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.SendKeyRequest0 from an unbound optional field.");
+}
+}
+
+SendKeyRequest0_template::SendKeyRequest0_template(const SendKeyRequest0_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SendKeyRequest0_template::~SendKeyRequest0_template()
+{
+clean_up();
+}
+
+SendKeyRequest0_template& SendKeyRequest0_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SendKeyRequest0_template& SendKeyRequest0_template::operator=(const SendKeyRequest0& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SendKeyRequest0_template& SendKeyRequest0_template::operator=(const OPTIONAL<SendKeyRequest0>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SendKeyRequest0&)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 @UnifiedDiagnosticServices.SendKeyRequest0.");
+}
+return *this;
+}
+
+SendKeyRequest0_template& SendKeyRequest0_template::operator=(const SendKeyRequest0_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SendKeyRequest0_template::match(const SendKeyRequest0& 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.securityAccessType().is_bound()) return FALSE;
+if(!single_value->field_securityAccessType.match(other_value.securityAccessType(), legacy))return FALSE;
+if(!other_value.securityKey().is_bound()) return FALSE;
+if(!single_value->field_securityKey.match(other_value.securityKey(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.SendKeyRequest0.");
+}
+return FALSE;
+}
+
+boolean SendKeyRequest0_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_securityAccessType.is_bound()
+
+ ||single_value->field_securityKey.is_bound()
+;
+}
+
+boolean SendKeyRequest0_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_securityAccessType.is_value()
+ &&single_value->field_securityKey.is_value();
+}
+
+void SendKeyRequest0_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SendKeyRequest0 SendKeyRequest0_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 @UnifiedDiagnosticServices.SendKeyRequest0.");
+SendKeyRequest0 ret_val;
+if (single_value->field_securityAccessType.is_bound()) {
+ret_val.securityAccessType() = single_value->field_securityAccessType.valueof();
+}
+if (single_value->field_securityKey.is_bound()) {
+ret_val.securityKey() = single_value->field_securityKey.valueof();
+}
+return ret_val;
+}
+
+void SendKeyRequest0_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.SendKeyRequest0.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SendKeyRequest0_template[list_length];
+}
+
+SendKeyRequest0_template& SendKeyRequest0_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.SendKeyRequest0.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.SendKeyRequest0.");
+return value_list.list_value[list_index];
+}
+
+BITSTRING_template& SendKeyRequest0_template::securityAccessType()
+{
+set_specific();
+return single_value->field_securityAccessType;
+}
+
+const BITSTRING_template& SendKeyRequest0_template::securityAccessType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field securityAccessType of a non-specific template of type @UnifiedDiagnosticServices.SendKeyRequest0.");
+return single_value->field_securityAccessType;
+}
+
+OCTETSTRING_template& SendKeyRequest0_template::securityKey()
+{
+set_specific();
+return single_value->field_securityKey;
+}
+
+const OCTETSTRING_template& SendKeyRequest0_template::securityKey() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field securityKey of a non-specific template of type @UnifiedDiagnosticServices.SendKeyRequest0.");
+return single_value->field_securityKey;
+}
+
+int SendKeyRequest0_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.SendKeyRequest0 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 @UnifiedDiagnosticServices.SendKeyRequest0 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 @UnifiedDiagnosticServices.SendKeyRequest0 containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.SendKeyRequest0 containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.SendKeyRequest0 containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.SendKeyRequest0 containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.SendKeyRequest0.");
+  }
+  return 0;
+}
+
+void SendKeyRequest0_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ securityAccessType := ");
+single_value->field_securityAccessType.log();
+TTCN_Logger::log_event_str(", securityKey := ");
+single_value->field_securityKey.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SendKeyRequest0_template::log_match(const SendKeyRequest0& 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_securityAccessType.match(match_value.securityAccessType(), legacy)){
+TTCN_Logger::log_logmatch_info(".securityAccessType");
+single_value->field_securityAccessType.log_match(match_value.securityAccessType(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_securityKey.match(match_value.securityKey(), legacy)){
+TTCN_Logger::log_logmatch_info(".securityKey");
+single_value->field_securityKey.log_match(match_value.securityKey(), 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("{ securityAccessType := ");
+single_value->field_securityAccessType.log_match(match_value.securityAccessType(), legacy);
+TTCN_Logger::log_event_str(", securityKey := ");
+single_value->field_securityKey.log_match(match_value.securityKey(), 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 SendKeyRequest0_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_securityAccessType.encode_text(text_buf);
+single_value->field_securityKey.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 @UnifiedDiagnosticServices.SendKeyRequest0.");
+}
+}
+
+void SendKeyRequest0_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_securityAccessType.decode_text(text_buf);
+single_value->field_securityKey.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 SendKeyRequest0_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 @UnifiedDiagnosticServices.SendKeyRequest0.");
+}
+}
+
+void SendKeyRequest0_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: {
+    SendKeyRequest0_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @UnifiedDiagnosticServices.SendKeyRequest0 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) securityAccessType().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) securityKey().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(), "securityAccessType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          securityAccessType().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(), "securityKey")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          securityKey().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 @UnifiedDiagnosticServices.SendKeyRequest0: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.SendKeyRequest0");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SendKeyRequest0_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_securityAccessType.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.SendKeyRequest0");
+single_value->field_securityKey.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.SendKeyRequest0");
+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 : "@UnifiedDiagnosticServices.SendKeyRequest0");
+}
+
+boolean SendKeyRequest0_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SendKeyRequest0_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+RequestSeedRequest1::RequestSeedRequest1()
+{
+}
+
+RequestSeedRequest1::RequestSeedRequest1(const BITSTRING& par_securityAccessType,
+    const OCTETSTRING& par_securityAccessDataRecord)
+  :   field_securityAccessType(par_securityAccessType),
+  field_securityAccessDataRecord(par_securityAccessDataRecord)
+{
+}
+
+RequestSeedRequest1::RequestSeedRequest1(const RequestSeedRequest1& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.RequestSeedRequest1.");
+if (other_value.securityAccessType().is_bound()) field_securityAccessType = other_value.securityAccessType();
+else field_securityAccessType.clean_up();
+if (other_value.securityAccessDataRecord().is_bound()) field_securityAccessDataRecord = other_value.securityAccessDataRecord();
+else field_securityAccessDataRecord.clean_up();
+}
+
+void RequestSeedRequest1::clean_up()
+{
+field_securityAccessType.clean_up();
+field_securityAccessDataRecord.clean_up();
+}
+
+const TTCN_Typedescriptor_t* RequestSeedRequest1::get_descriptor() const { return &RequestSeedRequest1_descr_; }
+RequestSeedRequest1& RequestSeedRequest1::operator=(const RequestSeedRequest1& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.RequestSeedRequest1.");
+  if (other_value.securityAccessType().is_bound()) field_securityAccessType = other_value.securityAccessType();
+  else field_securityAccessType.clean_up();
+  if (other_value.securityAccessDataRecord().is_bound()) field_securityAccessDataRecord = other_value.securityAccessDataRecord();
+  else field_securityAccessDataRecord.clean_up();
+}
+return *this;
+}
+
+boolean RequestSeedRequest1::operator==(const RequestSeedRequest1& other_value) const
+{
+return field_securityAccessType==other_value.field_securityAccessType
+  && field_securityAccessDataRecord==other_value.field_securityAccessDataRecord;
+}
+
+boolean RequestSeedRequest1::is_bound() const
+{
+return (field_securityAccessType.is_bound())
+  || (field_securityAccessDataRecord.is_bound());
+}
+boolean RequestSeedRequest1::is_value() const
+{
+return field_securityAccessType.is_value()
+  && field_securityAccessDataRecord.is_value();
+}
+void RequestSeedRequest1::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ securityAccessType := ");
+field_securityAccessType.log();
+TTCN_Logger::log_event_str(", securityAccessDataRecord := ");
+field_securityAccessDataRecord.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void RequestSeedRequest1::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 @UnifiedDiagnosticServices.RequestSeedRequest1 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) securityAccessType().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) securityAccessDataRecord().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(), "securityAccessType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          securityAccessType().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(), "securityAccessDataRecord")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          securityAccessDataRecord().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 @UnifiedDiagnosticServices.RequestSeedRequest1: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.RequestSeedRequest1");
+  }
+}
+
+void RequestSeedRequest1::set_implicit_omit()
+{
+if (securityAccessType().is_bound()) securityAccessType().set_implicit_omit();
+if (securityAccessDataRecord().is_bound()) securityAccessDataRecord().set_implicit_omit();
+}
+
+void RequestSeedRequest1::encode_text(Text_Buf& text_buf) const
+{
+field_securityAccessType.encode_text(text_buf);
+field_securityAccessDataRecord.encode_text(text_buf);
+}
+
+void RequestSeedRequest1::decode_text(Text_Buf& text_buf)
+{
+field_securityAccessType.decode_text(text_buf);
+field_securityAccessDataRecord.decode_text(text_buf);
+}
+
+void RequestSeedRequest1::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void RequestSeedRequest1::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int RequestSeedRequest1::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, RequestSeedRequest1_securityAccessType_descr_.raw->forceomit);
+  decoded_field_length = field_securityAccessType.RAW_decode(RequestSeedRequest1_securityAccessType_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, RequestSeedRequest1_securityAccessDataRecord_descr_.raw->forceomit);
+  decoded_field_length = field_securityAccessDataRecord.RAW_decode(RequestSeedRequest1_securityAccessDataRecord_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 RequestSeedRequest1::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, RequestSeedRequest1_securityAccessType_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, RequestSeedRequest1_securityAccessDataRecord_descr_.raw);
+  encoded_length += field_securityAccessType.RAW_encode(RequestSeedRequest1_securityAccessType_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_securityAccessDataRecord.RAW_encode(RequestSeedRequest1_securityAccessDataRecord_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct RequestSeedRequest1_template::single_value_struct {
+BITSTRING_template field_securityAccessType;
+OCTETSTRING_template field_securityAccessDataRecord;
+};
+
+void RequestSeedRequest1_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_securityAccessType = ANY_VALUE;
+single_value->field_securityAccessDataRecord = ANY_VALUE;
+}
+}
+}
+
+void RequestSeedRequest1_template::copy_value(const RequestSeedRequest1& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.securityAccessType().is_bound()) {
+  single_value->field_securityAccessType = other_value.securityAccessType();
+} else {
+  single_value->field_securityAccessType.clean_up();
+}
+if (other_value.securityAccessDataRecord().is_bound()) {
+  single_value->field_securityAccessDataRecord = other_value.securityAccessDataRecord();
+} else {
+  single_value->field_securityAccessDataRecord.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void RequestSeedRequest1_template::copy_template(const RequestSeedRequest1_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.securityAccessType().get_selection()) {
+single_value->field_securityAccessType = other_value.securityAccessType();
+} else {
+single_value->field_securityAccessType.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.securityAccessDataRecord().get_selection()) {
+single_value->field_securityAccessDataRecord = other_value.securityAccessDataRecord();
+} else {
+single_value->field_securityAccessDataRecord.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new RequestSeedRequest1_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.RequestSeedRequest1.");
+break;
+}
+set_selection(other_value);
+}
+
+RequestSeedRequest1_template::RequestSeedRequest1_template()
+{
+}
+
+RequestSeedRequest1_template::RequestSeedRequest1_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+RequestSeedRequest1_template::RequestSeedRequest1_template(const RequestSeedRequest1& other_value)
+{
+copy_value(other_value);
+}
+
+RequestSeedRequest1_template::RequestSeedRequest1_template(const OPTIONAL<RequestSeedRequest1>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const RequestSeedRequest1&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.RequestSeedRequest1 from an unbound optional field.");
+}
+}
+
+RequestSeedRequest1_template::RequestSeedRequest1_template(const RequestSeedRequest1_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+RequestSeedRequest1_template::~RequestSeedRequest1_template()
+{
+clean_up();
+}
+
+RequestSeedRequest1_template& RequestSeedRequest1_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+RequestSeedRequest1_template& RequestSeedRequest1_template::operator=(const RequestSeedRequest1& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+RequestSeedRequest1_template& RequestSeedRequest1_template::operator=(const OPTIONAL<RequestSeedRequest1>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const RequestSeedRequest1&)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 @UnifiedDiagnosticServices.RequestSeedRequest1.");
+}
+return *this;
+}
+
+RequestSeedRequest1_template& RequestSeedRequest1_template::operator=(const RequestSeedRequest1_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean RequestSeedRequest1_template::match(const RequestSeedRequest1& 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.securityAccessType().is_bound()) return FALSE;
+if(!single_value->field_securityAccessType.match(other_value.securityAccessType(), legacy))return FALSE;
+if(!other_value.securityAccessDataRecord().is_bound()) return FALSE;
+if(!single_value->field_securityAccessDataRecord.match(other_value.securityAccessDataRecord(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.RequestSeedRequest1.");
+}
+return FALSE;
+}
+
+boolean RequestSeedRequest1_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_securityAccessType.is_bound()
+
+ ||single_value->field_securityAccessDataRecord.is_bound()
+;
+}
+
+boolean RequestSeedRequest1_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_securityAccessType.is_value()
+ &&single_value->field_securityAccessDataRecord.is_value();
+}
+
+void RequestSeedRequest1_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+RequestSeedRequest1 RequestSeedRequest1_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 @UnifiedDiagnosticServices.RequestSeedRequest1.");
+RequestSeedRequest1 ret_val;
+if (single_value->field_securityAccessType.is_bound()) {
+ret_val.securityAccessType() = single_value->field_securityAccessType.valueof();
+}
+if (single_value->field_securityAccessDataRecord.is_bound()) {
+ret_val.securityAccessDataRecord() = single_value->field_securityAccessDataRecord.valueof();
+}
+return ret_val;
+}
+
+void RequestSeedRequest1_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.RequestSeedRequest1.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new RequestSeedRequest1_template[list_length];
+}
+
+RequestSeedRequest1_template& RequestSeedRequest1_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.RequestSeedRequest1.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.RequestSeedRequest1.");
+return value_list.list_value[list_index];
+}
+
+BITSTRING_template& RequestSeedRequest1_template::securityAccessType()
+{
+set_specific();
+return single_value->field_securityAccessType;
+}
+
+const BITSTRING_template& RequestSeedRequest1_template::securityAccessType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field securityAccessType of a non-specific template of type @UnifiedDiagnosticServices.RequestSeedRequest1.");
+return single_value->field_securityAccessType;
+}
+
+OCTETSTRING_template& RequestSeedRequest1_template::securityAccessDataRecord()
+{
+set_specific();
+return single_value->field_securityAccessDataRecord;
+}
+
+const OCTETSTRING_template& RequestSeedRequest1_template::securityAccessDataRecord() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field securityAccessDataRecord of a non-specific template of type @UnifiedDiagnosticServices.RequestSeedRequest1.");
+return single_value->field_securityAccessDataRecord;
+}
+
+int RequestSeedRequest1_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.RequestSeedRequest1 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 @UnifiedDiagnosticServices.RequestSeedRequest1 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 @UnifiedDiagnosticServices.RequestSeedRequest1 containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.RequestSeedRequest1 containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.RequestSeedRequest1 containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.RequestSeedRequest1 containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.RequestSeedRequest1.");
+  }
+  return 0;
+}
+
+void RequestSeedRequest1_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ securityAccessType := ");
+single_value->field_securityAccessType.log();
+TTCN_Logger::log_event_str(", securityAccessDataRecord := ");
+single_value->field_securityAccessDataRecord.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void RequestSeedRequest1_template::log_match(const RequestSeedRequest1& 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_securityAccessType.match(match_value.securityAccessType(), legacy)){
+TTCN_Logger::log_logmatch_info(".securityAccessType");
+single_value->field_securityAccessType.log_match(match_value.securityAccessType(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_securityAccessDataRecord.match(match_value.securityAccessDataRecord(), legacy)){
+TTCN_Logger::log_logmatch_info(".securityAccessDataRecord");
+single_value->field_securityAccessDataRecord.log_match(match_value.securityAccessDataRecord(), 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("{ securityAccessType := ");
+single_value->field_securityAccessType.log_match(match_value.securityAccessType(), legacy);
+TTCN_Logger::log_event_str(", securityAccessDataRecord := ");
+single_value->field_securityAccessDataRecord.log_match(match_value.securityAccessDataRecord(), 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 RequestSeedRequest1_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_securityAccessType.encode_text(text_buf);
+single_value->field_securityAccessDataRecord.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 @UnifiedDiagnosticServices.RequestSeedRequest1.");
+}
+}
+
+void RequestSeedRequest1_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_securityAccessType.decode_text(text_buf);
+single_value->field_securityAccessDataRecord.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 RequestSeedRequest1_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 @UnifiedDiagnosticServices.RequestSeedRequest1.");
+}
+}
+
+void RequestSeedRequest1_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: {
+    RequestSeedRequest1_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @UnifiedDiagnosticServices.RequestSeedRequest1 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) securityAccessType().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) securityAccessDataRecord().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(), "securityAccessType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          securityAccessType().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(), "securityAccessDataRecord")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          securityAccessDataRecord().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 @UnifiedDiagnosticServices.RequestSeedRequest1: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.RequestSeedRequest1");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void RequestSeedRequest1_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_securityAccessType.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.RequestSeedRequest1");
+single_value->field_securityAccessDataRecord.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.RequestSeedRequest1");
+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 : "@UnifiedDiagnosticServices.RequestSeedRequest1");
+}
+
+boolean RequestSeedRequest1_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean RequestSeedRequest1_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+SendKeyRequest1::SendKeyRequest1()
+{
+}
+
+SendKeyRequest1::SendKeyRequest1(const BITSTRING& par_securityAccessType,
+    const OCTETSTRING& par_securityKey)
+  :   field_securityAccessType(par_securityAccessType),
+  field_securityKey(par_securityKey)
+{
+}
+
+SendKeyRequest1::SendKeyRequest1(const SendKeyRequest1& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.SendKeyRequest1.");
+if (other_value.securityAccessType().is_bound()) field_securityAccessType = other_value.securityAccessType();
+else field_securityAccessType.clean_up();
+if (other_value.securityKey().is_bound()) field_securityKey = other_value.securityKey();
+else field_securityKey.clean_up();
+}
+
+void SendKeyRequest1::clean_up()
+{
+field_securityAccessType.clean_up();
+field_securityKey.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SendKeyRequest1::get_descriptor() const { return &SendKeyRequest1_descr_; }
+SendKeyRequest1& SendKeyRequest1::operator=(const SendKeyRequest1& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.SendKeyRequest1.");
+  if (other_value.securityAccessType().is_bound()) field_securityAccessType = other_value.securityAccessType();
+  else field_securityAccessType.clean_up();
+  if (other_value.securityKey().is_bound()) field_securityKey = other_value.securityKey();
+  else field_securityKey.clean_up();
+}
+return *this;
+}
+
+boolean SendKeyRequest1::operator==(const SendKeyRequest1& other_value) const
+{
+return field_securityAccessType==other_value.field_securityAccessType
+  && field_securityKey==other_value.field_securityKey;
+}
+
+boolean SendKeyRequest1::is_bound() const
+{
+return (field_securityAccessType.is_bound())
+  || (field_securityKey.is_bound());
+}
+boolean SendKeyRequest1::is_value() const
+{
+return field_securityAccessType.is_value()
+  && field_securityKey.is_value();
+}
+void SendKeyRequest1::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ securityAccessType := ");
+field_securityAccessType.log();
+TTCN_Logger::log_event_str(", securityKey := ");
+field_securityKey.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SendKeyRequest1::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 @UnifiedDiagnosticServices.SendKeyRequest1 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) securityAccessType().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) securityKey().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(), "securityAccessType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          securityAccessType().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(), "securityKey")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          securityKey().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 @UnifiedDiagnosticServices.SendKeyRequest1: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.SendKeyRequest1");
+  }
+}
+
+void SendKeyRequest1::set_implicit_omit()
+{
+if (securityAccessType().is_bound()) securityAccessType().set_implicit_omit();
+if (securityKey().is_bound()) securityKey().set_implicit_omit();
+}
+
+void SendKeyRequest1::encode_text(Text_Buf& text_buf) const
+{
+field_securityAccessType.encode_text(text_buf);
+field_securityKey.encode_text(text_buf);
+}
+
+void SendKeyRequest1::decode_text(Text_Buf& text_buf)
+{
+field_securityAccessType.decode_text(text_buf);
+field_securityKey.decode_text(text_buf);
+}
+
+void SendKeyRequest1::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void SendKeyRequest1::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int SendKeyRequest1::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, SendKeyRequest1_securityAccessType_descr_.raw->forceomit);
+  decoded_field_length = field_securityAccessType.RAW_decode(SendKeyRequest1_securityAccessType_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, SendKeyRequest1_securityKey_descr_.raw->forceomit);
+  decoded_field_length = field_securityKey.RAW_decode(SendKeyRequest1_securityKey_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 SendKeyRequest1::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, SendKeyRequest1_securityAccessType_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, SendKeyRequest1_securityKey_descr_.raw);
+  encoded_length += field_securityAccessType.RAW_encode(SendKeyRequest1_securityAccessType_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_securityKey.RAW_encode(SendKeyRequest1_securityKey_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct SendKeyRequest1_template::single_value_struct {
+BITSTRING_template field_securityAccessType;
+OCTETSTRING_template field_securityKey;
+};
+
+void SendKeyRequest1_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_securityAccessType = ANY_VALUE;
+single_value->field_securityKey = ANY_VALUE;
+}
+}
+}
+
+void SendKeyRequest1_template::copy_value(const SendKeyRequest1& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.securityAccessType().is_bound()) {
+  single_value->field_securityAccessType = other_value.securityAccessType();
+} else {
+  single_value->field_securityAccessType.clean_up();
+}
+if (other_value.securityKey().is_bound()) {
+  single_value->field_securityKey = other_value.securityKey();
+} else {
+  single_value->field_securityKey.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SendKeyRequest1_template::copy_template(const SendKeyRequest1_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.securityAccessType().get_selection()) {
+single_value->field_securityAccessType = other_value.securityAccessType();
+} else {
+single_value->field_securityAccessType.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.securityKey().get_selection()) {
+single_value->field_securityKey = other_value.securityKey();
+} else {
+single_value->field_securityKey.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SendKeyRequest1_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.SendKeyRequest1.");
+break;
+}
+set_selection(other_value);
+}
+
+SendKeyRequest1_template::SendKeyRequest1_template()
+{
+}
+
+SendKeyRequest1_template::SendKeyRequest1_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SendKeyRequest1_template::SendKeyRequest1_template(const SendKeyRequest1& other_value)
+{
+copy_value(other_value);
+}
+
+SendKeyRequest1_template::SendKeyRequest1_template(const OPTIONAL<SendKeyRequest1>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SendKeyRequest1&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.SendKeyRequest1 from an unbound optional field.");
+}
+}
+
+SendKeyRequest1_template::SendKeyRequest1_template(const SendKeyRequest1_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SendKeyRequest1_template::~SendKeyRequest1_template()
+{
+clean_up();
+}
+
+SendKeyRequest1_template& SendKeyRequest1_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SendKeyRequest1_template& SendKeyRequest1_template::operator=(const SendKeyRequest1& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SendKeyRequest1_template& SendKeyRequest1_template::operator=(const OPTIONAL<SendKeyRequest1>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SendKeyRequest1&)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 @UnifiedDiagnosticServices.SendKeyRequest1.");
+}
+return *this;
+}
+
+SendKeyRequest1_template& SendKeyRequest1_template::operator=(const SendKeyRequest1_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SendKeyRequest1_template::match(const SendKeyRequest1& 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.securityAccessType().is_bound()) return FALSE;
+if(!single_value->field_securityAccessType.match(other_value.securityAccessType(), legacy))return FALSE;
+if(!other_value.securityKey().is_bound()) return FALSE;
+if(!single_value->field_securityKey.match(other_value.securityKey(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.SendKeyRequest1.");
+}
+return FALSE;
+}
+
+boolean SendKeyRequest1_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_securityAccessType.is_bound()
+
+ ||single_value->field_securityKey.is_bound()
+;
+}
+
+boolean SendKeyRequest1_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_securityAccessType.is_value()
+ &&single_value->field_securityKey.is_value();
+}
+
+void SendKeyRequest1_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SendKeyRequest1 SendKeyRequest1_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 @UnifiedDiagnosticServices.SendKeyRequest1.");
+SendKeyRequest1 ret_val;
+if (single_value->field_securityAccessType.is_bound()) {
+ret_val.securityAccessType() = single_value->field_securityAccessType.valueof();
+}
+if (single_value->field_securityKey.is_bound()) {
+ret_val.securityKey() = single_value->field_securityKey.valueof();
+}
+return ret_val;
+}
+
+void SendKeyRequest1_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.SendKeyRequest1.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SendKeyRequest1_template[list_length];
+}
+
+SendKeyRequest1_template& SendKeyRequest1_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.SendKeyRequest1.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.SendKeyRequest1.");
+return value_list.list_value[list_index];
+}
+
+BITSTRING_template& SendKeyRequest1_template::securityAccessType()
+{
+set_specific();
+return single_value->field_securityAccessType;
+}
+
+const BITSTRING_template& SendKeyRequest1_template::securityAccessType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field securityAccessType of a non-specific template of type @UnifiedDiagnosticServices.SendKeyRequest1.");
+return single_value->field_securityAccessType;
+}
+
+OCTETSTRING_template& SendKeyRequest1_template::securityKey()
+{
+set_specific();
+return single_value->field_securityKey;
+}
+
+const OCTETSTRING_template& SendKeyRequest1_template::securityKey() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field securityKey of a non-specific template of type @UnifiedDiagnosticServices.SendKeyRequest1.");
+return single_value->field_securityKey;
+}
+
+int SendKeyRequest1_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.SendKeyRequest1 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 @UnifiedDiagnosticServices.SendKeyRequest1 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 @UnifiedDiagnosticServices.SendKeyRequest1 containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.SendKeyRequest1 containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.SendKeyRequest1 containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.SendKeyRequest1 containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.SendKeyRequest1.");
+  }
+  return 0;
+}
+
+void SendKeyRequest1_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ securityAccessType := ");
+single_value->field_securityAccessType.log();
+TTCN_Logger::log_event_str(", securityKey := ");
+single_value->field_securityKey.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SendKeyRequest1_template::log_match(const SendKeyRequest1& 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_securityAccessType.match(match_value.securityAccessType(), legacy)){
+TTCN_Logger::log_logmatch_info(".securityAccessType");
+single_value->field_securityAccessType.log_match(match_value.securityAccessType(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_securityKey.match(match_value.securityKey(), legacy)){
+TTCN_Logger::log_logmatch_info(".securityKey");
+single_value->field_securityKey.log_match(match_value.securityKey(), 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("{ securityAccessType := ");
+single_value->field_securityAccessType.log_match(match_value.securityAccessType(), legacy);
+TTCN_Logger::log_event_str(", securityKey := ");
+single_value->field_securityKey.log_match(match_value.securityKey(), 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 SendKeyRequest1_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_securityAccessType.encode_text(text_buf);
+single_value->field_securityKey.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 @UnifiedDiagnosticServices.SendKeyRequest1.");
+}
+}
+
+void SendKeyRequest1_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_securityAccessType.decode_text(text_buf);
+single_value->field_securityKey.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 SendKeyRequest1_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 @UnifiedDiagnosticServices.SendKeyRequest1.");
+}
+}
+
+void SendKeyRequest1_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: {
+    SendKeyRequest1_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @UnifiedDiagnosticServices.SendKeyRequest1 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) securityAccessType().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) securityKey().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(), "securityAccessType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          securityAccessType().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(), "securityKey")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          securityKey().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 @UnifiedDiagnosticServices.SendKeyRequest1: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.SendKeyRequest1");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SendKeyRequest1_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_securityAccessType.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.SendKeyRequest1");
+single_value->field_securityKey.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.SendKeyRequest1");
+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 : "@UnifiedDiagnosticServices.SendKeyRequest1");
+}
+
+boolean SendKeyRequest1_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SendKeyRequest1_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 SecurityAccessRequestType::copy_value(const SecurityAccessRequestType& other_value)
+{
+switch (other_value.union_selection) {
+case ALT_requestSeed0:
+field_requestSeed0 = new RequestSeedRequest0(*other_value.field_requestSeed0);
+break;
+case ALT_sendKey0:
+field_sendKey0 = new SendKeyRequest0(*other_value.field_sendKey0);
+break;
+case ALT_requestSeed1:
+field_requestSeed1 = new RequestSeedRequest1(*other_value.field_requestSeed1);
+break;
+case ALT_sendKey1:
+field_sendKey1 = new SendKeyRequest1(*other_value.field_sendKey1);
+break;
+default:
+TTCN_error("Assignment of an unbound union value of type @UnifiedDiagnosticServices.SecurityAccessRequestType.");
+}
+union_selection = other_value.union_selection;
+}
+
+SecurityAccessRequestType::SecurityAccessRequestType()
+{
+union_selection = UNBOUND_VALUE;
+}
+
+SecurityAccessRequestType::SecurityAccessRequestType(const SecurityAccessRequestType& other_value)
+: Base_Type(){
+copy_value(other_value);
+}
+
+SecurityAccessRequestType::~SecurityAccessRequestType()
+{
+clean_up();
+}
+
+SecurityAccessRequestType& SecurityAccessRequestType::operator=(const SecurityAccessRequestType& other_value)
+{
+if (this != &other_value) {
+clean_up();
+copy_value(other_value);
+}
+return *this;
+}
+
+boolean SecurityAccessRequestType::operator==(const SecurityAccessRequestType& other_value) const
+{
+if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @UnifiedDiagnosticServices.SecurityAccessRequestType.");
+if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @UnifiedDiagnosticServices.SecurityAccessRequestType.");
+if (union_selection != other_value.union_selection) return FALSE;
+switch (union_selection) {
+case ALT_requestSeed0:
+return *field_requestSeed0 == *other_value.field_requestSeed0;
+case ALT_sendKey0:
+return *field_sendKey0 == *other_value.field_sendKey0;
+case ALT_requestSeed1:
+return *field_requestSeed1 == *other_value.field_requestSeed1;
+case ALT_sendKey1:
+return *field_sendKey1 == *other_value.field_sendKey1;
+default:
+return FALSE;
+}
+}
+
+RequestSeedRequest0& SecurityAccessRequestType::requestSeed0()
+{
+if (union_selection != ALT_requestSeed0) {
+clean_up();
+field_requestSeed0 = new RequestSeedRequest0;
+union_selection = ALT_requestSeed0;
+}
+return *field_requestSeed0;
+}
+
+const RequestSeedRequest0& SecurityAccessRequestType::requestSeed0() const
+{
+if (union_selection != ALT_requestSeed0) TTCN_error("Using non-selected field requestSeed0 in a value of union type @UnifiedDiagnosticServices.SecurityAccessRequestType.");
+return *field_requestSeed0;
+}
+
+SendKeyRequest0& SecurityAccessRequestType::sendKey0()
+{
+if (union_selection != ALT_sendKey0) {
+clean_up();
+field_sendKey0 = new SendKeyRequest0;
+union_selection = ALT_sendKey0;
+}
+return *field_sendKey0;
+}
+
+const SendKeyRequest0& SecurityAccessRequestType::sendKey0() const
+{
+if (union_selection != ALT_sendKey0) TTCN_error("Using non-selected field sendKey0 in a value of union type @UnifiedDiagnosticServices.SecurityAccessRequestType.");
+return *field_sendKey0;
+}
+
+RequestSeedRequest1& SecurityAccessRequestType::requestSeed1()
+{
+if (union_selection != ALT_requestSeed1) {
+clean_up();
+field_requestSeed1 = new RequestSeedRequest1;
+union_selection = ALT_requestSeed1;
+}
+return *field_requestSeed1;
+}
+
+const RequestSeedRequest1& SecurityAccessRequestType::requestSeed1() const
+{
+if (union_selection != ALT_requestSeed1) TTCN_error("Using non-selected field requestSeed1 in a value of union type @UnifiedDiagnosticServices.SecurityAccessRequestType.");
+return *field_requestSeed1;
+}
+
+SendKeyRequest1& SecurityAccessRequestType::sendKey1()
+{
+if (union_selection != ALT_sendKey1) {
+clean_up();
+field_sendKey1 = new SendKeyRequest1;
+union_selection = ALT_sendKey1;
+}
+return *field_sendKey1;
+}
+
+const SendKeyRequest1& SecurityAccessRequestType::sendKey1() const
+{
+if (union_selection != ALT_sendKey1) TTCN_error("Using non-selected field sendKey1 in a value of union type @UnifiedDiagnosticServices.SecurityAccessRequestType.");
+return *field_sendKey1;
+}
+
+boolean SecurityAccessRequestType::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 @UnifiedDiagnosticServices.SecurityAccessRequestType.");
+return union_selection == checked_selection;
+}
+
+boolean SecurityAccessRequestType::is_bound() const
+{
+  return union_selection != UNBOUND_VALUE;
+}
+
+boolean SecurityAccessRequestType::is_value() const
+{
+switch (union_selection) {
+case UNBOUND_VALUE: return FALSE;
+case ALT_requestSeed0: return field_requestSeed0->is_value();
+case ALT_sendKey0: return field_sendKey0->is_value();
+case ALT_requestSeed1: return field_requestSeed1->is_value();
+case ALT_sendKey1: return field_sendKey1->is_value();
+default: TTCN_error("Invalid selection in union is_bound");}
+}
+
+void SecurityAccessRequestType::clean_up()
+{
+switch (union_selection) {
+case ALT_requestSeed0:
+  delete field_requestSeed0;
+  break;
+case ALT_sendKey0:
+  delete field_sendKey0;
+  break;
+case ALT_requestSeed1:
+  delete field_requestSeed1;
+  break;
+case ALT_sendKey1:
+  delete field_sendKey1;
+  break;
+default:
+  break;
+}
+union_selection = UNBOUND_VALUE;
+}
+
+void SecurityAccessRequestType::log() const
+{
+switch (union_selection) {
+case ALT_requestSeed0:
+TTCN_Logger::log_event_str("{ requestSeed0 := ");
+field_requestSeed0->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_sendKey0:
+TTCN_Logger::log_event_str("{ sendKey0 := ");
+field_sendKey0->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_requestSeed1:
+TTCN_Logger::log_event_str("{ requestSeed1 := ");
+field_requestSeed1->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_sendKey1:
+TTCN_Logger::log_event_str("{ sendKey1 := ");
+field_sendKey1->log();
+TTCN_Logger::log_event_str(" }");
+break;
+default:
+TTCN_Logger::log_event_unbound();
+}
+}
+
+void SecurityAccessRequestType::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, "requestSeed0")) {
+    requestSeed0().set_param(*mp_last);
+    if (!requestSeed0().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "sendKey0")) {
+    sendKey0().set_param(*mp_last);
+    if (!sendKey0().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "requestSeed1")) {
+    requestSeed1().set_param(*mp_last);
+    if (!requestSeed1().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "sendKey1")) {
+    sendKey1().set_param(*mp_last);
+    if (!sendKey1().is_bound()) clean_up();
+    return;
+  }
+  mp_last->error("Field %s does not exist in type @UnifiedDiagnosticServices.SecurityAccessRequestType.", last_name);
+}
+
+void SecurityAccessRequestType::set_implicit_omit()
+{
+switch (union_selection) {
+case ALT_requestSeed0:
+field_requestSeed0->set_implicit_omit(); break;
+case ALT_sendKey0:
+field_sendKey0->set_implicit_omit(); break;
+case ALT_requestSeed1:
+field_requestSeed1->set_implicit_omit(); break;
+case ALT_sendKey1:
+field_sendKey1->set_implicit_omit(); break;
+default: break;
+}
+}
+
+void SecurityAccessRequestType::encode_text(Text_Buf& text_buf) const
+{
+text_buf.push_int(union_selection);
+switch (union_selection) {
+case ALT_requestSeed0:
+field_requestSeed0->encode_text(text_buf);
+break;
+case ALT_sendKey0:
+field_sendKey0->encode_text(text_buf);
+break;
+case ALT_requestSeed1:
+field_requestSeed1->encode_text(text_buf);
+break;
+case ALT_sendKey1:
+field_sendKey1->encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an unbound value of union type @UnifiedDiagnosticServices.SecurityAccessRequestType.");
+}
+}
+
+void SecurityAccessRequestType::decode_text(Text_Buf& text_buf)
+{
+switch ((union_selection_type)text_buf.pull_int().get_val()) {
+case ALT_requestSeed0:
+requestSeed0().decode_text(text_buf);
+break;
+case ALT_sendKey0:
+sendKey0().decode_text(text_buf);
+break;
+case ALT_requestSeed1:
+requestSeed1().decode_text(text_buf);
+break;
+case ALT_sendKey1:
+sendKey1().decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for type @UnifiedDiagnosticServices.SecurityAccessRequestType.");
+}
+}
+
+void SecurityAccessRequestType::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void SecurityAccessRequestType::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int SecurityAccessRequestType::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, RequestSeedRequest0_descr_.raw->forceomit);
+      decoded_length = requestSeed0().RAW_decode(RequestSeedRequest0_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, SendKeyRequest0_descr_.raw->forceomit);
+      decoded_length = sendKey0().RAW_decode(SendKeyRequest0_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, RequestSeedRequest1_descr_.raw->forceomit);
+      decoded_length = requestSeed1().RAW_decode(RequestSeedRequest1_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 3: {
+      RAW_Force_Omit field_force_omit(3, force_omit, SendKeyRequest1_descr_.raw->forceomit);
+      decoded_length = sendKey1().RAW_decode(SendKeyRequest1_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 {
+    boolean already_failed = FALSE;
+    already_failed = FALSE;
+    if (!already_failed) {
+      BITSTRING temporal_0;
+      int decoded_0_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_0_length = temporal_0.RAW_decode(RequestSeedRequest0_securityAccessType_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_0_length > 0) {
+        if (temporal_0 ==  bs_0) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(0, force_omit, RequestSeedRequest0_descr_.raw->forceomit);
+          decoded_length = requestSeed0().RAW_decode(RequestSeedRequest0_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_requestSeed0).securityAccessType() ==  bs_0) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      BITSTRING temporal_1;
+      int decoded_1_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_1_length = temporal_1.RAW_decode(SendKeyRequest0_securityAccessType_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_1_length > 0) {
+        if (temporal_1 ==  bs_1) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(1, force_omit, SendKeyRequest0_descr_.raw->forceomit);
+          decoded_length = sendKey0().RAW_decode(SendKeyRequest0_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_sendKey0).securityAccessType() ==  bs_1) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      BITSTRING temporal_2;
+      int decoded_2_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_2_length = temporal_2.RAW_decode(RequestSeedRequest1_securityAccessType_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_2_length > 0) {
+        if (temporal_2 ==  bs_2) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(2, force_omit, RequestSeedRequest1_descr_.raw->forceomit);
+          decoded_length = requestSeed1().RAW_decode(RequestSeedRequest1_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_requestSeed1).securityAccessType() ==  bs_2) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      BITSTRING temporal_3;
+      int decoded_3_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_3_length = temporal_3.RAW_decode(SendKeyRequest1_securityAccessType_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_3_length > 0) {
+        if (temporal_3 ==  bs_3) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(3, force_omit, SendKeyRequest1_descr_.raw->forceomit);
+          decoded_length = sendKey1().RAW_decode(SendKeyRequest1_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_sendKey1).securityAccessType() ==  bs_3) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+ }
+ clean_up();
+ return -1;
+}
+
+int SecurityAccessRequestType::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const
+{
+  int encoded_length = 0;
+  myleaf.isleaf = FALSE;
+  myleaf.body.node.num_of_nodes = 4;  myleaf.body.node.nodes = init_nodes_of_enc_tree(4);
+  memset(myleaf.body.node.nodes, 0, 4 * sizeof(RAW_enc_tree *));
+  switch (union_selection) {
+  case ALT_requestSeed0:
+    myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 0, RequestSeedRequest0_descr_.raw);
+    encoded_length = field_requestSeed0->RAW_encode(RequestSeedRequest0_descr_, *myleaf.body.node.nodes[0]);
+    myleaf.body.node.nodes[0]->coding_descr = &RequestSeedRequest0_descr_;
+    if ((*field_requestSeed0).securityAccessType() !=  bs_0) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={0,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   bs_0.RAW_encode(RequestSeedRequest0_securityAccessType_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);
+  }
+    }
+    break;
+  case ALT_sendKey0:
+    myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 1, SendKeyRequest0_descr_.raw);
+    encoded_length = field_sendKey0->RAW_encode(SendKeyRequest0_descr_, *myleaf.body.node.nodes[1]);
+    myleaf.body.node.nodes[1]->coding_descr = &SendKeyRequest0_descr_;
+    if ((*field_sendKey0).securityAccessType() !=  bs_1) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={1,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   bs_1.RAW_encode(SendKeyRequest0_securityAccessType_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);
+  }
+    }
+    break;
+  case ALT_requestSeed1:
+    myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 2, RequestSeedRequest1_descr_.raw);
+    encoded_length = field_requestSeed1->RAW_encode(RequestSeedRequest1_descr_, *myleaf.body.node.nodes[2]);
+    myleaf.body.node.nodes[2]->coding_descr = &RequestSeedRequest1_descr_;
+    if ((*field_requestSeed1).securityAccessType() !=  bs_2) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={2,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   bs_2.RAW_encode(RequestSeedRequest1_securityAccessType_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);
+  }
+    }
+    break;
+  case ALT_sendKey1:
+    myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 3, SendKeyRequest1_descr_.raw);
+    encoded_length = field_sendKey1->RAW_encode(SendKeyRequest1_descr_, *myleaf.body.node.nodes[3]);
+    myleaf.body.node.nodes[3]->coding_descr = &SendKeyRequest1_descr_;
+    if ((*field_sendKey1).securityAccessType() !=  bs_3) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={3,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   bs_3.RAW_encode(SendKeyRequest1_securityAccessType_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);
+  }
+    }
+    break;
+  default:
+    TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
+  }
+  return encoded_length;
+}
+
+void SecurityAccessRequestType_template::copy_value(const SecurityAccessRequestType& other_value)
+{
+single_value.union_selection = other_value.get_selection();
+switch (single_value.union_selection) {
+case SecurityAccessRequestType::ALT_requestSeed0:
+single_value.field_requestSeed0 = new RequestSeedRequest0_template(other_value.requestSeed0());
+break;
+case SecurityAccessRequestType::ALT_sendKey0:
+single_value.field_sendKey0 = new SendKeyRequest0_template(other_value.sendKey0());
+break;
+case SecurityAccessRequestType::ALT_requestSeed1:
+single_value.field_requestSeed1 = new RequestSeedRequest1_template(other_value.requestSeed1());
+break;
+case SecurityAccessRequestType::ALT_sendKey1:
+single_value.field_sendKey1 = new SendKeyRequest1_template(other_value.sendKey1());
+break;
+default:
+TTCN_error("Initializing a template with an unbound value of type @UnifiedDiagnosticServices.SecurityAccessRequestType.");
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SecurityAccessRequestType_template::copy_template(const SecurityAccessRequestType_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 SecurityAccessRequestType::ALT_requestSeed0:
+single_value.field_requestSeed0 = new RequestSeedRequest0_template(*other_value.single_value.field_requestSeed0);
+break;
+case SecurityAccessRequestType::ALT_sendKey0:
+single_value.field_sendKey0 = new SendKeyRequest0_template(*other_value.single_value.field_sendKey0);
+break;
+case SecurityAccessRequestType::ALT_requestSeed1:
+single_value.field_requestSeed1 = new RequestSeedRequest1_template(*other_value.single_value.field_requestSeed1);
+break;
+case SecurityAccessRequestType::ALT_sendKey1:
+single_value.field_sendKey1 = new SendKeyRequest1_template(*other_value.single_value.field_sendKey1);
+break;
+default:
+TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @UnifiedDiagnosticServices.SecurityAccessRequestType.");
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SecurityAccessRequestType_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;
+default:
+TTCN_error("Copying an uninitialized template of union type @UnifiedDiagnosticServices.SecurityAccessRequestType.");
+}
+set_selection(other_value);
+}
+
+SecurityAccessRequestType_template::SecurityAccessRequestType_template()
+{
+}
+
+SecurityAccessRequestType_template::SecurityAccessRequestType_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SecurityAccessRequestType_template::SecurityAccessRequestType_template(const SecurityAccessRequestType& other_value)
+{
+copy_value(other_value);
+}
+
+SecurityAccessRequestType_template::SecurityAccessRequestType_template(const OPTIONAL<SecurityAccessRequestType>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SecurityAccessRequestType&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of union type @UnifiedDiagnosticServices.SecurityAccessRequestType from an unbound optional field.");
+}
+}
+
+SecurityAccessRequestType_template::SecurityAccessRequestType_template(const SecurityAccessRequestType_template& other_value)
+: Base_Template(){
+copy_template(other_value);
+}
+
+SecurityAccessRequestType_template::~SecurityAccessRequestType_template()
+{
+clean_up();
+}
+
+void SecurityAccessRequestType_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case SecurityAccessRequestType::ALT_requestSeed0:
+delete single_value.field_requestSeed0;
+break;
+case SecurityAccessRequestType::ALT_sendKey0:
+delete single_value.field_sendKey0;
+break;
+case SecurityAccessRequestType::ALT_requestSeed1:
+delete single_value.field_requestSeed1;
+break;
+case SecurityAccessRequestType::ALT_sendKey1:
+delete single_value.field_sendKey1;
+default:
+break;
+}
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SecurityAccessRequestType_template& SecurityAccessRequestType_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SecurityAccessRequestType_template& SecurityAccessRequestType_template::operator=(const SecurityAccessRequestType& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SecurityAccessRequestType_template& SecurityAccessRequestType_template::operator=(const OPTIONAL<SecurityAccessRequestType>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SecurityAccessRequestType&)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 @UnifiedDiagnosticServices.SecurityAccessRequestType.");
+}
+return *this;
+}
+
+SecurityAccessRequestType_template& SecurityAccessRequestType_template::operator=(const SecurityAccessRequestType_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SecurityAccessRequestType_template::match(const SecurityAccessRequestType& 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:
+{
+SecurityAccessRequestType::union_selection_type value_selection = other_value.get_selection();
+if (value_selection == SecurityAccessRequestType::UNBOUND_VALUE) return FALSE;
+if (value_selection != single_value.union_selection) return FALSE;
+switch (value_selection) {
+case SecurityAccessRequestType::ALT_requestSeed0:
+return single_value.field_requestSeed0->match(other_value.requestSeed0(), legacy);
+case SecurityAccessRequestType::ALT_sendKey0:
+return single_value.field_sendKey0->match(other_value.sendKey0(), legacy);
+case SecurityAccessRequestType::ALT_requestSeed1:
+return single_value.field_requestSeed1->match(other_value.requestSeed1(), legacy);
+case SecurityAccessRequestType::ALT_sendKey1:
+return single_value.field_sendKey1->match(other_value.sendKey1(), legacy);
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @UnifiedDiagnosticServices.SecurityAccessRequestType.");
+}
+}
+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;
+default:
+TTCN_error ("Matching an uninitialized template of union type @UnifiedDiagnosticServices.SecurityAccessRequestType.");
+}
+return FALSE;
+}
+
+boolean SecurityAccessRequestType_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+switch (single_value.union_selection) {
+case SecurityAccessRequestType::ALT_requestSeed0:
+return single_value.field_requestSeed0->is_value();
+case SecurityAccessRequestType::ALT_sendKey0:
+return single_value.field_sendKey0->is_value();
+case SecurityAccessRequestType::ALT_requestSeed1:
+return single_value.field_requestSeed1->is_value();
+case SecurityAccessRequestType::ALT_sendKey1:
+return single_value.field_sendKey1->is_value();
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @UnifiedDiagnosticServices.SecurityAccessRequestType.");
+}
+}
+
+SecurityAccessRequestType SecurityAccessRequestType_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 @UnifiedDiagnosticServices.SecurityAccessRequestType.");
+SecurityAccessRequestType ret_val;
+switch (single_value.union_selection) {
+case SecurityAccessRequestType::ALT_requestSeed0:
+ret_val.requestSeed0() = single_value.field_requestSeed0->valueof();
+break;
+case SecurityAccessRequestType::ALT_sendKey0:
+ret_val.sendKey0() = single_value.field_sendKey0->valueof();
+break;
+case SecurityAccessRequestType::ALT_requestSeed1:
+ret_val.requestSeed1() = single_value.field_requestSeed1->valueof();
+break;
+case SecurityAccessRequestType::ALT_sendKey1:
+ret_val.sendKey1() = single_value.field_sendKey1->valueof();
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @UnifiedDiagnosticServices.SecurityAccessRequestType.");
+}
+return ret_val;
+}
+
+SecurityAccessRequestType_template& SecurityAccessRequestType_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @UnifiedDiagnosticServices.SecurityAccessRequestType.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @UnifiedDiagnosticServices.SecurityAccessRequestType.");
+return value_list.list_value[list_index];
+}
+void SecurityAccessRequestType_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error ("Internal error: Setting an invalid list for a template of union type @UnifiedDiagnosticServices.SecurityAccessRequestType.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SecurityAccessRequestType_template[list_length];
+}
+
+RequestSeedRequest0_template& SecurityAccessRequestType_template::requestSeed0()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != SecurityAccessRequestType::ALT_requestSeed0) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_requestSeed0 = new RequestSeedRequest0_template(ANY_VALUE);
+else single_value.field_requestSeed0 = new RequestSeedRequest0_template;
+single_value.union_selection = SecurityAccessRequestType::ALT_requestSeed0;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_requestSeed0;
+}
+
+const RequestSeedRequest0_template& SecurityAccessRequestType_template::requestSeed0() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field requestSeed0 in a non-specific template of union type @UnifiedDiagnosticServices.SecurityAccessRequestType.");
+if (single_value.union_selection != SecurityAccessRequestType::ALT_requestSeed0) TTCN_error("Accessing non-selected field requestSeed0 in a template of union type @UnifiedDiagnosticServices.SecurityAccessRequestType.");
+return *single_value.field_requestSeed0;
+}
+
+SendKeyRequest0_template& SecurityAccessRequestType_template::sendKey0()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != SecurityAccessRequestType::ALT_sendKey0) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_sendKey0 = new SendKeyRequest0_template(ANY_VALUE);
+else single_value.field_sendKey0 = new SendKeyRequest0_template;
+single_value.union_selection = SecurityAccessRequestType::ALT_sendKey0;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_sendKey0;
+}
+
+const SendKeyRequest0_template& SecurityAccessRequestType_template::sendKey0() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field sendKey0 in a non-specific template of union type @UnifiedDiagnosticServices.SecurityAccessRequestType.");
+if (single_value.union_selection != SecurityAccessRequestType::ALT_sendKey0) TTCN_error("Accessing non-selected field sendKey0 in a template of union type @UnifiedDiagnosticServices.SecurityAccessRequestType.");
+return *single_value.field_sendKey0;
+}
+
+RequestSeedRequest1_template& SecurityAccessRequestType_template::requestSeed1()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != SecurityAccessRequestType::ALT_requestSeed1) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_requestSeed1 = new RequestSeedRequest1_template(ANY_VALUE);
+else single_value.field_requestSeed1 = new RequestSeedRequest1_template;
+single_value.union_selection = SecurityAccessRequestType::ALT_requestSeed1;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_requestSeed1;
+}
+
+const RequestSeedRequest1_template& SecurityAccessRequestType_template::requestSeed1() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field requestSeed1 in a non-specific template of union type @UnifiedDiagnosticServices.SecurityAccessRequestType.");
+if (single_value.union_selection != SecurityAccessRequestType::ALT_requestSeed1) TTCN_error("Accessing non-selected field requestSeed1 in a template of union type @UnifiedDiagnosticServices.SecurityAccessRequestType.");
+return *single_value.field_requestSeed1;
+}
+
+SendKeyRequest1_template& SecurityAccessRequestType_template::sendKey1()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != SecurityAccessRequestType::ALT_sendKey1) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_sendKey1 = new SendKeyRequest1_template(ANY_VALUE);
+else single_value.field_sendKey1 = new SendKeyRequest1_template;
+single_value.union_selection = SecurityAccessRequestType::ALT_sendKey1;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_sendKey1;
+}
+
+const SendKeyRequest1_template& SecurityAccessRequestType_template::sendKey1() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field sendKey1 in a non-specific template of union type @UnifiedDiagnosticServices.SecurityAccessRequestType.");
+if (single_value.union_selection != SecurityAccessRequestType::ALT_sendKey1) TTCN_error("Accessing non-selected field sendKey1 in a template of union type @UnifiedDiagnosticServices.SecurityAccessRequestType.");
+return *single_value.field_sendKey1;
+}
+
+boolean SecurityAccessRequestType_template::ischosen(SecurityAccessRequestType::union_selection_type checked_selection) const
+{
+if (checked_selection == SecurityAccessRequestType::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @UnifiedDiagnosticServices.SecurityAccessRequestType.");
+switch (template_selection) {
+case SPECIFIC_VALUE:
+if (single_value.union_selection == SecurityAccessRequestType::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @UnifiedDiagnosticServices.SecurityAccessRequestType.");
+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 @UnifiedDiagnosticServices.SecurityAccessRequestType 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 SecurityAccessRequestType_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case SecurityAccessRequestType::ALT_requestSeed0:
+TTCN_Logger::log_event_str("{ requestSeed0 := ");
+single_value.field_requestSeed0->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case SecurityAccessRequestType::ALT_sendKey0:
+TTCN_Logger::log_event_str("{ sendKey0 := ");
+single_value.field_sendKey0->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case SecurityAccessRequestType::ALT_requestSeed1:
+TTCN_Logger::log_event_str("{ requestSeed1 := ");
+single_value.field_requestSeed1->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case SecurityAccessRequestType::ALT_sendKey1:
+TTCN_Logger::log_event_str("{ sendKey1 := ");
+single_value.field_sendKey1->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 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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SecurityAccessRequestType_template::log_match(const SecurityAccessRequestType& 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()) {
+switch (single_value.union_selection) {
+case SecurityAccessRequestType::ALT_requestSeed0:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".requestSeed0");
+single_value.field_requestSeed0->log_match(match_value.requestSeed0(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ requestSeed0 := ");
+single_value.field_requestSeed0->log_match(match_value.requestSeed0(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case SecurityAccessRequestType::ALT_sendKey0:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".sendKey0");
+single_value.field_sendKey0->log_match(match_value.sendKey0(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ sendKey0 := ");
+single_value.field_sendKey0->log_match(match_value.sendKey0(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case SecurityAccessRequestType::ALT_requestSeed1:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".requestSeed1");
+single_value.field_requestSeed1->log_match(match_value.requestSeed1(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ requestSeed1 := ");
+single_value.field_requestSeed1->log_match(match_value.requestSeed1(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case SecurityAccessRequestType::ALT_sendKey1:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".sendKey1");
+single_value.field_sendKey1->log_match(match_value.sendKey1(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ sendKey1 := ");
+single_value.field_sendKey1->log_match(match_value.sendKey1(), 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 SecurityAccessRequestType_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 SecurityAccessRequestType::ALT_requestSeed0:
+single_value.field_requestSeed0->encode_text(text_buf);
+break;
+case SecurityAccessRequestType::ALT_sendKey0:
+single_value.field_sendKey0->encode_text(text_buf);
+break;
+case SecurityAccessRequestType::ALT_requestSeed1:
+single_value.field_requestSeed1->encode_text(text_buf);
+break;
+case SecurityAccessRequestType::ALT_sendKey1:
+single_value.field_sendKey1->encode_text(text_buf);
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @UnifiedDiagnosticServices.SecurityAccessRequestType.");
+}
+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 @UnifiedDiagnosticServices.SecurityAccessRequestType.");
+}
+}
+
+void SecurityAccessRequestType_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+{
+single_value.union_selection = SecurityAccessRequestType::UNBOUND_VALUE;
+SecurityAccessRequestType::union_selection_type new_selection = (SecurityAccessRequestType::union_selection_type)text_buf.pull_int().get_val();
+switch (new_selection) {
+case SecurityAccessRequestType::ALT_requestSeed0:
+single_value.field_requestSeed0 = new RequestSeedRequest0_template;
+single_value.field_requestSeed0->decode_text(text_buf);
+break;
+case SecurityAccessRequestType::ALT_sendKey0:
+single_value.field_sendKey0 = new SendKeyRequest0_template;
+single_value.field_sendKey0->decode_text(text_buf);
+break;
+case SecurityAccessRequestType::ALT_requestSeed1:
+single_value.field_requestSeed1 = new RequestSeedRequest1_template;
+single_value.field_requestSeed1->decode_text(text_buf);
+break;
+case SecurityAccessRequestType::ALT_sendKey1:
+single_value.field_sendKey1 = new SendKeyRequest1_template;
+single_value.field_sendKey1->decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @UnifiedDiagnosticServices.SecurityAccessRequestType.");
+}
+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 SecurityAccessRequestType_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 @UnifiedDiagnosticServices.SecurityAccessRequestType.");
+}
+}
+
+boolean SecurityAccessRequestType_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SecurityAccessRequestType_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 SecurityAccessRequestType_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 `@UnifiedDiagnosticServices.SecurityAccessRequestType'");
+    }
+    if (strcmp("requestSeed0", param_field) == 0) {
+      requestSeed0().set_param(param);
+      return;
+    } else if (strcmp("sendKey0", param_field) == 0) {
+      sendKey0().set_param(param);
+      return;
+    } else if (strcmp("requestSeed1", param_field) == 0) {
+      requestSeed1().set_param(param);
+      return;
+    } else if (strcmp("sendKey1", param_field) == 0) {
+      sendKey1().set_param(param);
+      return;
+    } else param.error("Field `%s' not found in union template type `@UnifiedDiagnosticServices.SecurityAccessRequestType'", 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: {
+    SecurityAccessRequestType_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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", "@UnifiedDiagnosticServices.SecurityAccessRequestType");
+    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, "requestSeed0")) {
+      requestSeed0().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "sendKey0")) {
+      sendKey0().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "requestSeed1")) {
+      requestSeed1().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "sendKey1")) {
+      sendKey1().set_param(*mp_last);
+      break;
+    }
+    mp_last->error("Field %s does not exist in type @UnifiedDiagnosticServices.SecurityAccessRequestType.", last_name);
+  } break;
+  default:
+    param.type_error("union template", "@UnifiedDiagnosticServices.SecurityAccessRequestType");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SecurityAccessRequestType_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 SecurityAccessRequestType::ALT_requestSeed0:
+single_value.field_requestSeed0->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.SecurityAccessRequestType");
+return;
+case SecurityAccessRequestType::ALT_sendKey0:
+single_value.field_sendKey0->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.SecurityAccessRequestType");
+return;
+case SecurityAccessRequestType::ALT_requestSeed1:
+single_value.field_requestSeed1->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.SecurityAccessRequestType");
+return;
+case SecurityAccessRequestType::ALT_sendKey1:
+single_value.field_sendKey1->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.SecurityAccessRequestType");
+return;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @UnifiedDiagnosticServices.SecurityAccessRequestType.");
+}
+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 : "@UnifiedDiagnosticServices.SecurityAccessRequestType");
+}
+
+SecurityAccessRequestSID::SecurityAccessRequestSID()
+{
+}
+
+SecurityAccessRequestSID::SecurityAccessRequestSID(const OCTETSTRING& par_sid,
+    const SuppressPosRspMsgIndicationBitType& par_suppressPosRspMsgIndicationBit,
+    const SecurityAccessRequestType& par_securityAccessType)
+  :   field_sid(par_sid),
+  field_suppressPosRspMsgIndicationBit(par_suppressPosRspMsgIndicationBit),
+  field_securityAccessType(par_securityAccessType)
+{
+}
+
+SecurityAccessRequestSID::SecurityAccessRequestSID(const SecurityAccessRequestSID& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.SecurityAccessRequestSID.");
+if (other_value.sid().is_bound()) field_sid = other_value.sid();
+else field_sid.clean_up();
+if (other_value.suppressPosRspMsgIndicationBit().is_bound()) field_suppressPosRspMsgIndicationBit = other_value.suppressPosRspMsgIndicationBit();
+else field_suppressPosRspMsgIndicationBit.clean_up();
+if (other_value.securityAccessType().is_bound()) field_securityAccessType = other_value.securityAccessType();
+else field_securityAccessType.clean_up();
+}
+
+void SecurityAccessRequestSID::clean_up()
+{
+field_sid.clean_up();
+field_suppressPosRspMsgIndicationBit.clean_up();
+field_securityAccessType.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SecurityAccessRequestSID::get_descriptor() const { return &SecurityAccessRequestSID_descr_; }
+SecurityAccessRequestSID& SecurityAccessRequestSID::operator=(const SecurityAccessRequestSID& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.SecurityAccessRequestSID.");
+  if (other_value.sid().is_bound()) field_sid = other_value.sid();
+  else field_sid.clean_up();
+  if (other_value.suppressPosRspMsgIndicationBit().is_bound()) field_suppressPosRspMsgIndicationBit = other_value.suppressPosRspMsgIndicationBit();
+  else field_suppressPosRspMsgIndicationBit.clean_up();
+  if (other_value.securityAccessType().is_bound()) field_securityAccessType = other_value.securityAccessType();
+  else field_securityAccessType.clean_up();
+}
+return *this;
+}
+
+boolean SecurityAccessRequestSID::operator==(const SecurityAccessRequestSID& other_value) const
+{
+return field_sid==other_value.field_sid
+  && field_suppressPosRspMsgIndicationBit==other_value.field_suppressPosRspMsgIndicationBit
+  && field_securityAccessType==other_value.field_securityAccessType;
+}
+
+boolean SecurityAccessRequestSID::is_bound() const
+{
+return (field_sid.is_bound())
+  || (field_suppressPosRspMsgIndicationBit.is_bound())
+  || (field_securityAccessType.is_bound());
+}
+boolean SecurityAccessRequestSID::is_value() const
+{
+return field_sid.is_value()
+  && field_suppressPosRspMsgIndicationBit.is_value()
+  && field_securityAccessType.is_value();
+}
+void SecurityAccessRequestSID::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ sid := ");
+field_sid.log();
+TTCN_Logger::log_event_str(", suppressPosRspMsgIndicationBit := ");
+field_suppressPosRspMsgIndicationBit.log();
+TTCN_Logger::log_event_str(", securityAccessType := ");
+field_securityAccessType.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SecurityAccessRequestSID::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 @UnifiedDiagnosticServices.SecurityAccessRequestSID 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) sid().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) suppressPosRspMsgIndicationBit().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) securityAccessType().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(), "sid")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          sid().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(), "suppressPosRspMsgIndicationBit")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          suppressPosRspMsgIndicationBit().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(), "securityAccessType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          securityAccessType().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 @UnifiedDiagnosticServices.SecurityAccessRequestSID: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.SecurityAccessRequestSID");
+  }
+}
+
+void SecurityAccessRequestSID::set_implicit_omit()
+{
+if (sid().is_bound()) sid().set_implicit_omit();
+if (suppressPosRspMsgIndicationBit().is_bound()) suppressPosRspMsgIndicationBit().set_implicit_omit();
+if (securityAccessType().is_bound()) securityAccessType().set_implicit_omit();
+}
+
+void SecurityAccessRequestSID::encode_text(Text_Buf& text_buf) const
+{
+field_sid.encode_text(text_buf);
+field_suppressPosRspMsgIndicationBit.encode_text(text_buf);
+field_securityAccessType.encode_text(text_buf);
+}
+
+void SecurityAccessRequestSID::decode_text(Text_Buf& text_buf)
+{
+field_sid.decode_text(text_buf);
+field_suppressPosRspMsgIndicationBit.decode_text(text_buf);
+field_securityAccessType.decode_text(text_buf);
+}
+
+void SecurityAccessRequestSID::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void SecurityAccessRequestSID::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int SecurityAccessRequestSID::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, SecurityAccessRequestSID_sid_descr_.raw->forceomit);
+  decoded_field_length = field_sid.RAW_decode(SecurityAccessRequestSID_sid_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, SecurityAccessRequestSID_suppressPosRspMsgIndicationBit_descr_.raw->forceomit);
+  decoded_field_length = field_suppressPosRspMsgIndicationBit.RAW_decode(SecurityAccessRequestSID_suppressPosRspMsgIndicationBit_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, SecurityAccessRequestSID_securityAccessType_descr_.raw->forceomit);
+  decoded_field_length = field_securityAccessType.RAW_decode(SecurityAccessRequestSID_securityAccessType_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 SecurityAccessRequestSID::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, SecurityAccessRequestSID_sid_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, SecurityAccessRequestSID_suppressPosRspMsgIndicationBit_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, SecurityAccessRequestSID_securityAccessType_descr_.raw);
+  encoded_length += field_sid.RAW_encode(SecurityAccessRequestSID_sid_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_suppressPosRspMsgIndicationBit.RAW_encode(SecurityAccessRequestSID_suppressPosRspMsgIndicationBit_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_securityAccessType.RAW_encode(SecurityAccessRequestSID_securityAccessType_descr_, *myleaf.body.node.nodes[2]);
+  return myleaf.length = encoded_length;
+}
+
+struct SecurityAccessRequestSID_template::single_value_struct {
+OCTETSTRING_template field_sid;
+SuppressPosRspMsgIndicationBitType_template field_suppressPosRspMsgIndicationBit;
+SecurityAccessRequestType_template field_securityAccessType;
+};
+
+void SecurityAccessRequestSID_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_sid = ANY_VALUE;
+single_value->field_suppressPosRspMsgIndicationBit = ANY_VALUE;
+single_value->field_securityAccessType = ANY_VALUE;
+}
+}
+}
+
+void SecurityAccessRequestSID_template::copy_value(const SecurityAccessRequestSID& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.sid().is_bound()) {
+  single_value->field_sid = other_value.sid();
+} else {
+  single_value->field_sid.clean_up();
+}
+if (other_value.suppressPosRspMsgIndicationBit().is_bound()) {
+  single_value->field_suppressPosRspMsgIndicationBit = other_value.suppressPosRspMsgIndicationBit();
+} else {
+  single_value->field_suppressPosRspMsgIndicationBit.clean_up();
+}
+if (other_value.securityAccessType().is_bound()) {
+  single_value->field_securityAccessType = other_value.securityAccessType();
+} else {
+  single_value->field_securityAccessType.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SecurityAccessRequestSID_template::copy_template(const SecurityAccessRequestSID_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.sid().get_selection()) {
+single_value->field_sid = other_value.sid();
+} else {
+single_value->field_sid.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.suppressPosRspMsgIndicationBit().get_selection()) {
+single_value->field_suppressPosRspMsgIndicationBit = other_value.suppressPosRspMsgIndicationBit();
+} else {
+single_value->field_suppressPosRspMsgIndicationBit.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.securityAccessType().get_selection()) {
+single_value->field_securityAccessType = other_value.securityAccessType();
+} else {
+single_value->field_securityAccessType.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SecurityAccessRequestSID_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.SecurityAccessRequestSID.");
+break;
+}
+set_selection(other_value);
+}
+
+SecurityAccessRequestSID_template::SecurityAccessRequestSID_template()
+{
+}
+
+SecurityAccessRequestSID_template::SecurityAccessRequestSID_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SecurityAccessRequestSID_template::SecurityAccessRequestSID_template(const SecurityAccessRequestSID& other_value)
+{
+copy_value(other_value);
+}
+
+SecurityAccessRequestSID_template::SecurityAccessRequestSID_template(const OPTIONAL<SecurityAccessRequestSID>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SecurityAccessRequestSID&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.SecurityAccessRequestSID from an unbound optional field.");
+}
+}
+
+SecurityAccessRequestSID_template::SecurityAccessRequestSID_template(const SecurityAccessRequestSID_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SecurityAccessRequestSID_template::~SecurityAccessRequestSID_template()
+{
+clean_up();
+}
+
+SecurityAccessRequestSID_template& SecurityAccessRequestSID_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SecurityAccessRequestSID_template& SecurityAccessRequestSID_template::operator=(const SecurityAccessRequestSID& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SecurityAccessRequestSID_template& SecurityAccessRequestSID_template::operator=(const OPTIONAL<SecurityAccessRequestSID>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SecurityAccessRequestSID&)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 @UnifiedDiagnosticServices.SecurityAccessRequestSID.");
+}
+return *this;
+}
+
+SecurityAccessRequestSID_template& SecurityAccessRequestSID_template::operator=(const SecurityAccessRequestSID_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SecurityAccessRequestSID_template::match(const SecurityAccessRequestSID& 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.sid().is_bound()) return FALSE;
+if(!single_value->field_sid.match(other_value.sid(), legacy))return FALSE;
+if(!other_value.suppressPosRspMsgIndicationBit().is_bound()) return FALSE;
+if(!single_value->field_suppressPosRspMsgIndicationBit.match(other_value.suppressPosRspMsgIndicationBit(), legacy))return FALSE;
+if(!other_value.securityAccessType().is_bound()) return FALSE;
+if(!single_value->field_securityAccessType.match(other_value.securityAccessType(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.SecurityAccessRequestSID.");
+}
+return FALSE;
+}
+
+boolean SecurityAccessRequestSID_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_sid.is_bound()
+
+ ||single_value->field_suppressPosRspMsgIndicationBit.is_bound()
+
+ ||single_value->field_securityAccessType.is_bound()
+;
+}
+
+boolean SecurityAccessRequestSID_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_sid.is_value()
+ &&single_value->field_suppressPosRspMsgIndicationBit.is_value()
+ &&single_value->field_securityAccessType.is_value();
+}
+
+void SecurityAccessRequestSID_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SecurityAccessRequestSID SecurityAccessRequestSID_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 @UnifiedDiagnosticServices.SecurityAccessRequestSID.");
+SecurityAccessRequestSID ret_val;
+if (single_value->field_sid.is_bound()) {
+ret_val.sid() = single_value->field_sid.valueof();
+}
+if (single_value->field_suppressPosRspMsgIndicationBit.is_bound()) {
+ret_val.suppressPosRspMsgIndicationBit() = single_value->field_suppressPosRspMsgIndicationBit.valueof();
+}
+if (single_value->field_securityAccessType.is_bound()) {
+ret_val.securityAccessType() = single_value->field_securityAccessType.valueof();
+}
+return ret_val;
+}
+
+void SecurityAccessRequestSID_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.SecurityAccessRequestSID.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SecurityAccessRequestSID_template[list_length];
+}
+
+SecurityAccessRequestSID_template& SecurityAccessRequestSID_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.SecurityAccessRequestSID.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.SecurityAccessRequestSID.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& SecurityAccessRequestSID_template::sid()
+{
+set_specific();
+return single_value->field_sid;
+}
+
+const OCTETSTRING_template& SecurityAccessRequestSID_template::sid() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field sid of a non-specific template of type @UnifiedDiagnosticServices.SecurityAccessRequestSID.");
+return single_value->field_sid;
+}
+
+SuppressPosRspMsgIndicationBitType_template& SecurityAccessRequestSID_template::suppressPosRspMsgIndicationBit()
+{
+set_specific();
+return single_value->field_suppressPosRspMsgIndicationBit;
+}
+
+const SuppressPosRspMsgIndicationBitType_template& SecurityAccessRequestSID_template::suppressPosRspMsgIndicationBit() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field suppressPosRspMsgIndicationBit of a non-specific template of type @UnifiedDiagnosticServices.SecurityAccessRequestSID.");
+return single_value->field_suppressPosRspMsgIndicationBit;
+}
+
+SecurityAccessRequestType_template& SecurityAccessRequestSID_template::securityAccessType()
+{
+set_specific();
+return single_value->field_securityAccessType;
+}
+
+const SecurityAccessRequestType_template& SecurityAccessRequestSID_template::securityAccessType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field securityAccessType of a non-specific template of type @UnifiedDiagnosticServices.SecurityAccessRequestSID.");
+return single_value->field_securityAccessType;
+}
+
+int SecurityAccessRequestSID_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.SecurityAccessRequestSID 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 @UnifiedDiagnosticServices.SecurityAccessRequestSID 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 @UnifiedDiagnosticServices.SecurityAccessRequestSID containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.SecurityAccessRequestSID containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.SecurityAccessRequestSID containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.SecurityAccessRequestSID containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.SecurityAccessRequestSID.");
+  }
+  return 0;
+}
+
+void SecurityAccessRequestSID_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ sid := ");
+single_value->field_sid.log();
+TTCN_Logger::log_event_str(", suppressPosRspMsgIndicationBit := ");
+single_value->field_suppressPosRspMsgIndicationBit.log();
+TTCN_Logger::log_event_str(", securityAccessType := ");
+single_value->field_securityAccessType.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SecurityAccessRequestSID_template::log_match(const SecurityAccessRequestSID& 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_sid.match(match_value.sid(), legacy)){
+TTCN_Logger::log_logmatch_info(".sid");
+single_value->field_sid.log_match(match_value.sid(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_suppressPosRspMsgIndicationBit.match(match_value.suppressPosRspMsgIndicationBit(), legacy)){
+TTCN_Logger::log_logmatch_info(".suppressPosRspMsgIndicationBit");
+single_value->field_suppressPosRspMsgIndicationBit.log_match(match_value.suppressPosRspMsgIndicationBit(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_securityAccessType.match(match_value.securityAccessType(), legacy)){
+TTCN_Logger::log_logmatch_info(".securityAccessType");
+single_value->field_securityAccessType.log_match(match_value.securityAccessType(), 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("{ sid := ");
+single_value->field_sid.log_match(match_value.sid(), legacy);
+TTCN_Logger::log_event_str(", suppressPosRspMsgIndicationBit := ");
+single_value->field_suppressPosRspMsgIndicationBit.log_match(match_value.suppressPosRspMsgIndicationBit(), legacy);
+TTCN_Logger::log_event_str(", securityAccessType := ");
+single_value->field_securityAccessType.log_match(match_value.securityAccessType(), 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 SecurityAccessRequestSID_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_sid.encode_text(text_buf);
+single_value->field_suppressPosRspMsgIndicationBit.encode_text(text_buf);
+single_value->field_securityAccessType.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 @UnifiedDiagnosticServices.SecurityAccessRequestSID.");
+}
+}
+
+void SecurityAccessRequestSID_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_sid.decode_text(text_buf);
+single_value->field_suppressPosRspMsgIndicationBit.decode_text(text_buf);
+single_value->field_securityAccessType.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 SecurityAccessRequestSID_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 @UnifiedDiagnosticServices.SecurityAccessRequestSID.");
+}
+}
+
+void SecurityAccessRequestSID_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: {
+    SecurityAccessRequestSID_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @UnifiedDiagnosticServices.SecurityAccessRequestSID 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) sid().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) suppressPosRspMsgIndicationBit().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) securityAccessType().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(), "sid")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          sid().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(), "suppressPosRspMsgIndicationBit")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          suppressPosRspMsgIndicationBit().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(), "securityAccessType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          securityAccessType().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 @UnifiedDiagnosticServices.SecurityAccessRequestSID: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.SecurityAccessRequestSID");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SecurityAccessRequestSID_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_sid.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.SecurityAccessRequestSID");
+single_value->field_suppressPosRspMsgIndicationBit.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.SecurityAccessRequestSID");
+single_value->field_securityAccessType.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.SecurityAccessRequestSID");
+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 : "@UnifiedDiagnosticServices.SecurityAccessRequestSID");
+}
+
+boolean SecurityAccessRequestSID_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SecurityAccessRequestSID_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+RequestSeedResponse0::RequestSeedResponse0()
+{
+}
+
+RequestSeedResponse0::RequestSeedResponse0(const BITSTRING& par_securityAccessType,
+    const OCTETSTRING& par_securitySeed)
+  :   field_securityAccessType(par_securityAccessType),
+  field_securitySeed(par_securitySeed)
+{
+}
+
+RequestSeedResponse0::RequestSeedResponse0(const RequestSeedResponse0& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.RequestSeedResponse0.");
+if (other_value.securityAccessType().is_bound()) field_securityAccessType = other_value.securityAccessType();
+else field_securityAccessType.clean_up();
+if (other_value.securitySeed().is_bound()) field_securitySeed = other_value.securitySeed();
+else field_securitySeed.clean_up();
+}
+
+void RequestSeedResponse0::clean_up()
+{
+field_securityAccessType.clean_up();
+field_securitySeed.clean_up();
+}
+
+const TTCN_Typedescriptor_t* RequestSeedResponse0::get_descriptor() const { return &RequestSeedResponse0_descr_; }
+RequestSeedResponse0& RequestSeedResponse0::operator=(const RequestSeedResponse0& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.RequestSeedResponse0.");
+  if (other_value.securityAccessType().is_bound()) field_securityAccessType = other_value.securityAccessType();
+  else field_securityAccessType.clean_up();
+  if (other_value.securitySeed().is_bound()) field_securitySeed = other_value.securitySeed();
+  else field_securitySeed.clean_up();
+}
+return *this;
+}
+
+boolean RequestSeedResponse0::operator==(const RequestSeedResponse0& other_value) const
+{
+return field_securityAccessType==other_value.field_securityAccessType
+  && field_securitySeed==other_value.field_securitySeed;
+}
+
+boolean RequestSeedResponse0::is_bound() const
+{
+return (field_securityAccessType.is_bound())
+  || (field_securitySeed.is_bound());
+}
+boolean RequestSeedResponse0::is_value() const
+{
+return field_securityAccessType.is_value()
+  && field_securitySeed.is_value();
+}
+void RequestSeedResponse0::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ securityAccessType := ");
+field_securityAccessType.log();
+TTCN_Logger::log_event_str(", securitySeed := ");
+field_securitySeed.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void RequestSeedResponse0::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 @UnifiedDiagnosticServices.RequestSeedResponse0 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) securityAccessType().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) securitySeed().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(), "securityAccessType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          securityAccessType().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(), "securitySeed")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          securitySeed().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 @UnifiedDiagnosticServices.RequestSeedResponse0: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.RequestSeedResponse0");
+  }
+}
+
+void RequestSeedResponse0::set_implicit_omit()
+{
+if (securityAccessType().is_bound()) securityAccessType().set_implicit_omit();
+if (securitySeed().is_bound()) securitySeed().set_implicit_omit();
+}
+
+void RequestSeedResponse0::encode_text(Text_Buf& text_buf) const
+{
+field_securityAccessType.encode_text(text_buf);
+field_securitySeed.encode_text(text_buf);
+}
+
+void RequestSeedResponse0::decode_text(Text_Buf& text_buf)
+{
+field_securityAccessType.decode_text(text_buf);
+field_securitySeed.decode_text(text_buf);
+}
+
+void RequestSeedResponse0::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void RequestSeedResponse0::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int RequestSeedResponse0::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, RequestSeedResponse0_securityAccessType_descr_.raw->forceomit);
+  decoded_field_length = field_securityAccessType.RAW_decode(RequestSeedResponse0_securityAccessType_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, RequestSeedResponse0_securitySeed_descr_.raw->forceomit);
+  decoded_field_length = field_securitySeed.RAW_decode(RequestSeedResponse0_securitySeed_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 RequestSeedResponse0::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, RequestSeedResponse0_securityAccessType_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, RequestSeedResponse0_securitySeed_descr_.raw);
+  encoded_length += field_securityAccessType.RAW_encode(RequestSeedResponse0_securityAccessType_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_securitySeed.RAW_encode(RequestSeedResponse0_securitySeed_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct RequestSeedResponse0_template::single_value_struct {
+BITSTRING_template field_securityAccessType;
+OCTETSTRING_template field_securitySeed;
+};
+
+void RequestSeedResponse0_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_securityAccessType = ANY_VALUE;
+single_value->field_securitySeed = ANY_VALUE;
+}
+}
+}
+
+void RequestSeedResponse0_template::copy_value(const RequestSeedResponse0& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.securityAccessType().is_bound()) {
+  single_value->field_securityAccessType = other_value.securityAccessType();
+} else {
+  single_value->field_securityAccessType.clean_up();
+}
+if (other_value.securitySeed().is_bound()) {
+  single_value->field_securitySeed = other_value.securitySeed();
+} else {
+  single_value->field_securitySeed.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void RequestSeedResponse0_template::copy_template(const RequestSeedResponse0_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.securityAccessType().get_selection()) {
+single_value->field_securityAccessType = other_value.securityAccessType();
+} else {
+single_value->field_securityAccessType.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.securitySeed().get_selection()) {
+single_value->field_securitySeed = other_value.securitySeed();
+} else {
+single_value->field_securitySeed.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new RequestSeedResponse0_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.RequestSeedResponse0.");
+break;
+}
+set_selection(other_value);
+}
+
+RequestSeedResponse0_template::RequestSeedResponse0_template()
+{
+}
+
+RequestSeedResponse0_template::RequestSeedResponse0_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+RequestSeedResponse0_template::RequestSeedResponse0_template(const RequestSeedResponse0& other_value)
+{
+copy_value(other_value);
+}
+
+RequestSeedResponse0_template::RequestSeedResponse0_template(const OPTIONAL<RequestSeedResponse0>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const RequestSeedResponse0&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.RequestSeedResponse0 from an unbound optional field.");
+}
+}
+
+RequestSeedResponse0_template::RequestSeedResponse0_template(const RequestSeedResponse0_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+RequestSeedResponse0_template::~RequestSeedResponse0_template()
+{
+clean_up();
+}
+
+RequestSeedResponse0_template& RequestSeedResponse0_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+RequestSeedResponse0_template& RequestSeedResponse0_template::operator=(const RequestSeedResponse0& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+RequestSeedResponse0_template& RequestSeedResponse0_template::operator=(const OPTIONAL<RequestSeedResponse0>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const RequestSeedResponse0&)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 @UnifiedDiagnosticServices.RequestSeedResponse0.");
+}
+return *this;
+}
+
+RequestSeedResponse0_template& RequestSeedResponse0_template::operator=(const RequestSeedResponse0_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean RequestSeedResponse0_template::match(const RequestSeedResponse0& 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.securityAccessType().is_bound()) return FALSE;
+if(!single_value->field_securityAccessType.match(other_value.securityAccessType(), legacy))return FALSE;
+if(!other_value.securitySeed().is_bound()) return FALSE;
+if(!single_value->field_securitySeed.match(other_value.securitySeed(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.RequestSeedResponse0.");
+}
+return FALSE;
+}
+
+boolean RequestSeedResponse0_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_securityAccessType.is_bound()
+
+ ||single_value->field_securitySeed.is_bound()
+;
+}
+
+boolean RequestSeedResponse0_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_securityAccessType.is_value()
+ &&single_value->field_securitySeed.is_value();
+}
+
+void RequestSeedResponse0_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+RequestSeedResponse0 RequestSeedResponse0_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 @UnifiedDiagnosticServices.RequestSeedResponse0.");
+RequestSeedResponse0 ret_val;
+if (single_value->field_securityAccessType.is_bound()) {
+ret_val.securityAccessType() = single_value->field_securityAccessType.valueof();
+}
+if (single_value->field_securitySeed.is_bound()) {
+ret_val.securitySeed() = single_value->field_securitySeed.valueof();
+}
+return ret_val;
+}
+
+void RequestSeedResponse0_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.RequestSeedResponse0.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new RequestSeedResponse0_template[list_length];
+}
+
+RequestSeedResponse0_template& RequestSeedResponse0_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.RequestSeedResponse0.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.RequestSeedResponse0.");
+return value_list.list_value[list_index];
+}
+
+BITSTRING_template& RequestSeedResponse0_template::securityAccessType()
+{
+set_specific();
+return single_value->field_securityAccessType;
+}
+
+const BITSTRING_template& RequestSeedResponse0_template::securityAccessType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field securityAccessType of a non-specific template of type @UnifiedDiagnosticServices.RequestSeedResponse0.");
+return single_value->field_securityAccessType;
+}
+
+OCTETSTRING_template& RequestSeedResponse0_template::securitySeed()
+{
+set_specific();
+return single_value->field_securitySeed;
+}
+
+const OCTETSTRING_template& RequestSeedResponse0_template::securitySeed() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field securitySeed of a non-specific template of type @UnifiedDiagnosticServices.RequestSeedResponse0.");
+return single_value->field_securitySeed;
+}
+
+int RequestSeedResponse0_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.RequestSeedResponse0 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 @UnifiedDiagnosticServices.RequestSeedResponse0 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 @UnifiedDiagnosticServices.RequestSeedResponse0 containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.RequestSeedResponse0 containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.RequestSeedResponse0 containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.RequestSeedResponse0 containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.RequestSeedResponse0.");
+  }
+  return 0;
+}
+
+void RequestSeedResponse0_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ securityAccessType := ");
+single_value->field_securityAccessType.log();
+TTCN_Logger::log_event_str(", securitySeed := ");
+single_value->field_securitySeed.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void RequestSeedResponse0_template::log_match(const RequestSeedResponse0& 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_securityAccessType.match(match_value.securityAccessType(), legacy)){
+TTCN_Logger::log_logmatch_info(".securityAccessType");
+single_value->field_securityAccessType.log_match(match_value.securityAccessType(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_securitySeed.match(match_value.securitySeed(), legacy)){
+TTCN_Logger::log_logmatch_info(".securitySeed");
+single_value->field_securitySeed.log_match(match_value.securitySeed(), 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("{ securityAccessType := ");
+single_value->field_securityAccessType.log_match(match_value.securityAccessType(), legacy);
+TTCN_Logger::log_event_str(", securitySeed := ");
+single_value->field_securitySeed.log_match(match_value.securitySeed(), 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 RequestSeedResponse0_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_securityAccessType.encode_text(text_buf);
+single_value->field_securitySeed.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 @UnifiedDiagnosticServices.RequestSeedResponse0.");
+}
+}
+
+void RequestSeedResponse0_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_securityAccessType.decode_text(text_buf);
+single_value->field_securitySeed.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 RequestSeedResponse0_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 @UnifiedDiagnosticServices.RequestSeedResponse0.");
+}
+}
+
+void RequestSeedResponse0_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: {
+    RequestSeedResponse0_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @UnifiedDiagnosticServices.RequestSeedResponse0 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) securityAccessType().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) securitySeed().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(), "securityAccessType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          securityAccessType().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(), "securitySeed")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          securitySeed().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 @UnifiedDiagnosticServices.RequestSeedResponse0: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.RequestSeedResponse0");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void RequestSeedResponse0_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_securityAccessType.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.RequestSeedResponse0");
+single_value->field_securitySeed.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.RequestSeedResponse0");
+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 : "@UnifiedDiagnosticServices.RequestSeedResponse0");
+}
+
+boolean RequestSeedResponse0_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean RequestSeedResponse0_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+SendKeyResponse0::SendKeyResponse0()
+{
+}
+
+SendKeyResponse0::SendKeyResponse0(const BITSTRING& par_securityAccessType)
+  :   field_securityAccessType(par_securityAccessType)
+{
+}
+
+SendKeyResponse0::SendKeyResponse0(const SendKeyResponse0& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.SendKeyResponse0.");
+if (other_value.securityAccessType().is_bound()) field_securityAccessType = other_value.securityAccessType();
+else field_securityAccessType.clean_up();
+}
+
+void SendKeyResponse0::clean_up()
+{
+field_securityAccessType.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SendKeyResponse0::get_descriptor() const { return &SendKeyResponse0_descr_; }
+SendKeyResponse0& SendKeyResponse0::operator=(const SendKeyResponse0& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.SendKeyResponse0.");
+  if (other_value.securityAccessType().is_bound()) field_securityAccessType = other_value.securityAccessType();
+  else field_securityAccessType.clean_up();
+}
+return *this;
+}
+
+boolean SendKeyResponse0::operator==(const SendKeyResponse0& other_value) const
+{
+return field_securityAccessType==other_value.field_securityAccessType;
+}
+
+boolean SendKeyResponse0::is_bound() const
+{
+return (field_securityAccessType.is_bound());
+}
+boolean SendKeyResponse0::is_value() const
+{
+return field_securityAccessType.is_value();
+}
+void SendKeyResponse0::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ securityAccessType := ");
+field_securityAccessType.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SendKeyResponse0::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 (1<param.get_size()) {
+      param.error("record value of type @UnifiedDiagnosticServices.SendKeyResponse0 has 1 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) securityAccessType().set_param(*param.get_elem(0));
+    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(), "securityAccessType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          securityAccessType().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 @UnifiedDiagnosticServices.SendKeyResponse0: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.SendKeyResponse0");
+  }
+}
+
+void SendKeyResponse0::set_implicit_omit()
+{
+if (securityAccessType().is_bound()) securityAccessType().set_implicit_omit();
+}
+
+void SendKeyResponse0::encode_text(Text_Buf& text_buf) const
+{
+field_securityAccessType.encode_text(text_buf);
+}
+
+void SendKeyResponse0::decode_text(Text_Buf& text_buf)
+{
+field_securityAccessType.decode_text(text_buf);
+}
+
+void SendKeyResponse0::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void SendKeyResponse0::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int SendKeyResponse0::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, SendKeyResponse0_securityAccessType_descr_.raw->forceomit);
+  decoded_field_length = field_securityAccessType.RAW_decode(SendKeyResponse0_securityAccessType_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int SendKeyResponse0::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 = 1;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(1);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, SendKeyResponse0_securityAccessType_descr_.raw);
+  encoded_length += field_securityAccessType.RAW_encode(SendKeyResponse0_securityAccessType_descr_, *myleaf.body.node.nodes[0]);
+  return myleaf.length = encoded_length;
+}
+
+struct SendKeyResponse0_template::single_value_struct {
+BITSTRING_template field_securityAccessType;
+};
+
+void SendKeyResponse0_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_securityAccessType = ANY_VALUE;
+}
+}
+}
+
+void SendKeyResponse0_template::copy_value(const SendKeyResponse0& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.securityAccessType().is_bound()) {
+  single_value->field_securityAccessType = other_value.securityAccessType();
+} else {
+  single_value->field_securityAccessType.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SendKeyResponse0_template::copy_template(const SendKeyResponse0_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.securityAccessType().get_selection()) {
+single_value->field_securityAccessType = other_value.securityAccessType();
+} else {
+single_value->field_securityAccessType.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SendKeyResponse0_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.SendKeyResponse0.");
+break;
+}
+set_selection(other_value);
+}
+
+SendKeyResponse0_template::SendKeyResponse0_template()
+{
+}
+
+SendKeyResponse0_template::SendKeyResponse0_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SendKeyResponse0_template::SendKeyResponse0_template(const SendKeyResponse0& other_value)
+{
+copy_value(other_value);
+}
+
+SendKeyResponse0_template::SendKeyResponse0_template(const OPTIONAL<SendKeyResponse0>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SendKeyResponse0&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.SendKeyResponse0 from an unbound optional field.");
+}
+}
+
+SendKeyResponse0_template::SendKeyResponse0_template(const SendKeyResponse0_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SendKeyResponse0_template::~SendKeyResponse0_template()
+{
+clean_up();
+}
+
+SendKeyResponse0_template& SendKeyResponse0_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SendKeyResponse0_template& SendKeyResponse0_template::operator=(const SendKeyResponse0& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SendKeyResponse0_template& SendKeyResponse0_template::operator=(const OPTIONAL<SendKeyResponse0>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SendKeyResponse0&)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 @UnifiedDiagnosticServices.SendKeyResponse0.");
+}
+return *this;
+}
+
+SendKeyResponse0_template& SendKeyResponse0_template::operator=(const SendKeyResponse0_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SendKeyResponse0_template::match(const SendKeyResponse0& 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.securityAccessType().is_bound()) return FALSE;
+if(!single_value->field_securityAccessType.match(other_value.securityAccessType(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.SendKeyResponse0.");
+}
+return FALSE;
+}
+
+boolean SendKeyResponse0_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_securityAccessType.is_bound()
+;
+}
+
+boolean SendKeyResponse0_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_securityAccessType.is_value();
+}
+
+void SendKeyResponse0_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SendKeyResponse0 SendKeyResponse0_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 @UnifiedDiagnosticServices.SendKeyResponse0.");
+SendKeyResponse0 ret_val;
+if (single_value->field_securityAccessType.is_bound()) {
+ret_val.securityAccessType() = single_value->field_securityAccessType.valueof();
+}
+return ret_val;
+}
+
+void SendKeyResponse0_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.SendKeyResponse0.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SendKeyResponse0_template[list_length];
+}
+
+SendKeyResponse0_template& SendKeyResponse0_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.SendKeyResponse0.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.SendKeyResponse0.");
+return value_list.list_value[list_index];
+}
+
+BITSTRING_template& SendKeyResponse0_template::securityAccessType()
+{
+set_specific();
+return single_value->field_securityAccessType;
+}
+
+const BITSTRING_template& SendKeyResponse0_template::securityAccessType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field securityAccessType of a non-specific template of type @UnifiedDiagnosticServices.SendKeyResponse0.");
+return single_value->field_securityAccessType;
+}
+
+int SendKeyResponse0_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.SendKeyResponse0 which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 1;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.SendKeyResponse0 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 @UnifiedDiagnosticServices.SendKeyResponse0 containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.SendKeyResponse0 containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.SendKeyResponse0 containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.SendKeyResponse0 containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.SendKeyResponse0.");
+  }
+  return 0;
+}
+
+void SendKeyResponse0_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ securityAccessType := ");
+single_value->field_securityAccessType.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SendKeyResponse0_template::log_match(const SendKeyResponse0& 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_securityAccessType.match(match_value.securityAccessType(), legacy)){
+TTCN_Logger::log_logmatch_info(".securityAccessType");
+single_value->field_securityAccessType.log_match(match_value.securityAccessType(), 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("{ securityAccessType := ");
+single_value->field_securityAccessType.log_match(match_value.securityAccessType(), 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 SendKeyResponse0_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_securityAccessType.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 @UnifiedDiagnosticServices.SendKeyResponse0.");
+}
+}
+
+void SendKeyResponse0_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_securityAccessType.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 SendKeyResponse0_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 @UnifiedDiagnosticServices.SendKeyResponse0.");
+}
+}
+
+void SendKeyResponse0_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: {
+    SendKeyResponse0_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (1<param.get_size()) {
+      param.error("record template of type @UnifiedDiagnosticServices.SendKeyResponse0 has 1 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) securityAccessType().set_param(*param.get_elem(0));
+    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(), "securityAccessType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          securityAccessType().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 @UnifiedDiagnosticServices.SendKeyResponse0: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.SendKeyResponse0");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SendKeyResponse0_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_securityAccessType.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.SendKeyResponse0");
+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 : "@UnifiedDiagnosticServices.SendKeyResponse0");
+}
+
+boolean SendKeyResponse0_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SendKeyResponse0_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+RequestSeedResponse1::RequestSeedResponse1()
+{
+}
+
+RequestSeedResponse1::RequestSeedResponse1(const BITSTRING& par_securityAccessType,
+    const OCTETSTRING& par_securitySeed)
+  :   field_securityAccessType(par_securityAccessType),
+  field_securitySeed(par_securitySeed)
+{
+}
+
+RequestSeedResponse1::RequestSeedResponse1(const RequestSeedResponse1& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.RequestSeedResponse1.");
+if (other_value.securityAccessType().is_bound()) field_securityAccessType = other_value.securityAccessType();
+else field_securityAccessType.clean_up();
+if (other_value.securitySeed().is_bound()) field_securitySeed = other_value.securitySeed();
+else field_securitySeed.clean_up();
+}
+
+void RequestSeedResponse1::clean_up()
+{
+field_securityAccessType.clean_up();
+field_securitySeed.clean_up();
+}
+
+const TTCN_Typedescriptor_t* RequestSeedResponse1::get_descriptor() const { return &RequestSeedResponse1_descr_; }
+RequestSeedResponse1& RequestSeedResponse1::operator=(const RequestSeedResponse1& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.RequestSeedResponse1.");
+  if (other_value.securityAccessType().is_bound()) field_securityAccessType = other_value.securityAccessType();
+  else field_securityAccessType.clean_up();
+  if (other_value.securitySeed().is_bound()) field_securitySeed = other_value.securitySeed();
+  else field_securitySeed.clean_up();
+}
+return *this;
+}
+
+boolean RequestSeedResponse1::operator==(const RequestSeedResponse1& other_value) const
+{
+return field_securityAccessType==other_value.field_securityAccessType
+  && field_securitySeed==other_value.field_securitySeed;
+}
+
+boolean RequestSeedResponse1::is_bound() const
+{
+return (field_securityAccessType.is_bound())
+  || (field_securitySeed.is_bound());
+}
+boolean RequestSeedResponse1::is_value() const
+{
+return field_securityAccessType.is_value()
+  && field_securitySeed.is_value();
+}
+void RequestSeedResponse1::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ securityAccessType := ");
+field_securityAccessType.log();
+TTCN_Logger::log_event_str(", securitySeed := ");
+field_securitySeed.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void RequestSeedResponse1::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 @UnifiedDiagnosticServices.RequestSeedResponse1 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) securityAccessType().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) securitySeed().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(), "securityAccessType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          securityAccessType().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(), "securitySeed")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          securitySeed().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 @UnifiedDiagnosticServices.RequestSeedResponse1: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.RequestSeedResponse1");
+  }
+}
+
+void RequestSeedResponse1::set_implicit_omit()
+{
+if (securityAccessType().is_bound()) securityAccessType().set_implicit_omit();
+if (securitySeed().is_bound()) securitySeed().set_implicit_omit();
+}
+
+void RequestSeedResponse1::encode_text(Text_Buf& text_buf) const
+{
+field_securityAccessType.encode_text(text_buf);
+field_securitySeed.encode_text(text_buf);
+}
+
+void RequestSeedResponse1::decode_text(Text_Buf& text_buf)
+{
+field_securityAccessType.decode_text(text_buf);
+field_securitySeed.decode_text(text_buf);
+}
+
+void RequestSeedResponse1::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void RequestSeedResponse1::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int RequestSeedResponse1::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, RequestSeedResponse1_securityAccessType_descr_.raw->forceomit);
+  decoded_field_length = field_securityAccessType.RAW_decode(RequestSeedResponse1_securityAccessType_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, RequestSeedResponse1_securitySeed_descr_.raw->forceomit);
+  decoded_field_length = field_securitySeed.RAW_decode(RequestSeedResponse1_securitySeed_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 RequestSeedResponse1::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, RequestSeedResponse1_securityAccessType_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, RequestSeedResponse1_securitySeed_descr_.raw);
+  encoded_length += field_securityAccessType.RAW_encode(RequestSeedResponse1_securityAccessType_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_securitySeed.RAW_encode(RequestSeedResponse1_securitySeed_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct RequestSeedResponse1_template::single_value_struct {
+BITSTRING_template field_securityAccessType;
+OCTETSTRING_template field_securitySeed;
+};
+
+void RequestSeedResponse1_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_securityAccessType = ANY_VALUE;
+single_value->field_securitySeed = ANY_VALUE;
+}
+}
+}
+
+void RequestSeedResponse1_template::copy_value(const RequestSeedResponse1& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.securityAccessType().is_bound()) {
+  single_value->field_securityAccessType = other_value.securityAccessType();
+} else {
+  single_value->field_securityAccessType.clean_up();
+}
+if (other_value.securitySeed().is_bound()) {
+  single_value->field_securitySeed = other_value.securitySeed();
+} else {
+  single_value->field_securitySeed.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void RequestSeedResponse1_template::copy_template(const RequestSeedResponse1_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.securityAccessType().get_selection()) {
+single_value->field_securityAccessType = other_value.securityAccessType();
+} else {
+single_value->field_securityAccessType.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.securitySeed().get_selection()) {
+single_value->field_securitySeed = other_value.securitySeed();
+} else {
+single_value->field_securitySeed.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new RequestSeedResponse1_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.RequestSeedResponse1.");
+break;
+}
+set_selection(other_value);
+}
+
+RequestSeedResponse1_template::RequestSeedResponse1_template()
+{
+}
+
+RequestSeedResponse1_template::RequestSeedResponse1_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+RequestSeedResponse1_template::RequestSeedResponse1_template(const RequestSeedResponse1& other_value)
+{
+copy_value(other_value);
+}
+
+RequestSeedResponse1_template::RequestSeedResponse1_template(const OPTIONAL<RequestSeedResponse1>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const RequestSeedResponse1&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.RequestSeedResponse1 from an unbound optional field.");
+}
+}
+
+RequestSeedResponse1_template::RequestSeedResponse1_template(const RequestSeedResponse1_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+RequestSeedResponse1_template::~RequestSeedResponse1_template()
+{
+clean_up();
+}
+
+RequestSeedResponse1_template& RequestSeedResponse1_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+RequestSeedResponse1_template& RequestSeedResponse1_template::operator=(const RequestSeedResponse1& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+RequestSeedResponse1_template& RequestSeedResponse1_template::operator=(const OPTIONAL<RequestSeedResponse1>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const RequestSeedResponse1&)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 @UnifiedDiagnosticServices.RequestSeedResponse1.");
+}
+return *this;
+}
+
+RequestSeedResponse1_template& RequestSeedResponse1_template::operator=(const RequestSeedResponse1_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean RequestSeedResponse1_template::match(const RequestSeedResponse1& 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.securityAccessType().is_bound()) return FALSE;
+if(!single_value->field_securityAccessType.match(other_value.securityAccessType(), legacy))return FALSE;
+if(!other_value.securitySeed().is_bound()) return FALSE;
+if(!single_value->field_securitySeed.match(other_value.securitySeed(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.RequestSeedResponse1.");
+}
+return FALSE;
+}
+
+boolean RequestSeedResponse1_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_securityAccessType.is_bound()
+
+ ||single_value->field_securitySeed.is_bound()
+;
+}
+
+boolean RequestSeedResponse1_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_securityAccessType.is_value()
+ &&single_value->field_securitySeed.is_value();
+}
+
+void RequestSeedResponse1_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+RequestSeedResponse1 RequestSeedResponse1_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 @UnifiedDiagnosticServices.RequestSeedResponse1.");
+RequestSeedResponse1 ret_val;
+if (single_value->field_securityAccessType.is_bound()) {
+ret_val.securityAccessType() = single_value->field_securityAccessType.valueof();
+}
+if (single_value->field_securitySeed.is_bound()) {
+ret_val.securitySeed() = single_value->field_securitySeed.valueof();
+}
+return ret_val;
+}
+
+void RequestSeedResponse1_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.RequestSeedResponse1.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new RequestSeedResponse1_template[list_length];
+}
+
+RequestSeedResponse1_template& RequestSeedResponse1_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.RequestSeedResponse1.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.RequestSeedResponse1.");
+return value_list.list_value[list_index];
+}
+
+BITSTRING_template& RequestSeedResponse1_template::securityAccessType()
+{
+set_specific();
+return single_value->field_securityAccessType;
+}
+
+const BITSTRING_template& RequestSeedResponse1_template::securityAccessType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field securityAccessType of a non-specific template of type @UnifiedDiagnosticServices.RequestSeedResponse1.");
+return single_value->field_securityAccessType;
+}
+
+OCTETSTRING_template& RequestSeedResponse1_template::securitySeed()
+{
+set_specific();
+return single_value->field_securitySeed;
+}
+
+const OCTETSTRING_template& RequestSeedResponse1_template::securitySeed() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field securitySeed of a non-specific template of type @UnifiedDiagnosticServices.RequestSeedResponse1.");
+return single_value->field_securitySeed;
+}
+
+int RequestSeedResponse1_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.RequestSeedResponse1 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 @UnifiedDiagnosticServices.RequestSeedResponse1 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 @UnifiedDiagnosticServices.RequestSeedResponse1 containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.RequestSeedResponse1 containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.RequestSeedResponse1 containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.RequestSeedResponse1 containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.RequestSeedResponse1.");
+  }
+  return 0;
+}
+
+void RequestSeedResponse1_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ securityAccessType := ");
+single_value->field_securityAccessType.log();
+TTCN_Logger::log_event_str(", securitySeed := ");
+single_value->field_securitySeed.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void RequestSeedResponse1_template::log_match(const RequestSeedResponse1& 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_securityAccessType.match(match_value.securityAccessType(), legacy)){
+TTCN_Logger::log_logmatch_info(".securityAccessType");
+single_value->field_securityAccessType.log_match(match_value.securityAccessType(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_securitySeed.match(match_value.securitySeed(), legacy)){
+TTCN_Logger::log_logmatch_info(".securitySeed");
+single_value->field_securitySeed.log_match(match_value.securitySeed(), 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("{ securityAccessType := ");
+single_value->field_securityAccessType.log_match(match_value.securityAccessType(), legacy);
+TTCN_Logger::log_event_str(", securitySeed := ");
+single_value->field_securitySeed.log_match(match_value.securitySeed(), 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 RequestSeedResponse1_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_securityAccessType.encode_text(text_buf);
+single_value->field_securitySeed.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 @UnifiedDiagnosticServices.RequestSeedResponse1.");
+}
+}
+
+void RequestSeedResponse1_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_securityAccessType.decode_text(text_buf);
+single_value->field_securitySeed.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 RequestSeedResponse1_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 @UnifiedDiagnosticServices.RequestSeedResponse1.");
+}
+}
+
+void RequestSeedResponse1_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: {
+    RequestSeedResponse1_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @UnifiedDiagnosticServices.RequestSeedResponse1 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) securityAccessType().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) securitySeed().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(), "securityAccessType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          securityAccessType().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(), "securitySeed")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          securitySeed().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 @UnifiedDiagnosticServices.RequestSeedResponse1: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.RequestSeedResponse1");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void RequestSeedResponse1_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_securityAccessType.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.RequestSeedResponse1");
+single_value->field_securitySeed.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.RequestSeedResponse1");
+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 : "@UnifiedDiagnosticServices.RequestSeedResponse1");
+}
+
+boolean RequestSeedResponse1_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean RequestSeedResponse1_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+SendKeyResponse1::SendKeyResponse1()
+{
+}
+
+SendKeyResponse1::SendKeyResponse1(const BITSTRING& par_securityAccessType)
+  :   field_securityAccessType(par_securityAccessType)
+{
+}
+
+SendKeyResponse1::SendKeyResponse1(const SendKeyResponse1& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.SendKeyResponse1.");
+if (other_value.securityAccessType().is_bound()) field_securityAccessType = other_value.securityAccessType();
+else field_securityAccessType.clean_up();
+}
+
+void SendKeyResponse1::clean_up()
+{
+field_securityAccessType.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SendKeyResponse1::get_descriptor() const { return &SendKeyResponse1_descr_; }
+SendKeyResponse1& SendKeyResponse1::operator=(const SendKeyResponse1& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.SendKeyResponse1.");
+  if (other_value.securityAccessType().is_bound()) field_securityAccessType = other_value.securityAccessType();
+  else field_securityAccessType.clean_up();
+}
+return *this;
+}
+
+boolean SendKeyResponse1::operator==(const SendKeyResponse1& other_value) const
+{
+return field_securityAccessType==other_value.field_securityAccessType;
+}
+
+boolean SendKeyResponse1::is_bound() const
+{
+return (field_securityAccessType.is_bound());
+}
+boolean SendKeyResponse1::is_value() const
+{
+return field_securityAccessType.is_value();
+}
+void SendKeyResponse1::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ securityAccessType := ");
+field_securityAccessType.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SendKeyResponse1::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 (1<param.get_size()) {
+      param.error("record value of type @UnifiedDiagnosticServices.SendKeyResponse1 has 1 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) securityAccessType().set_param(*param.get_elem(0));
+    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(), "securityAccessType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          securityAccessType().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 @UnifiedDiagnosticServices.SendKeyResponse1: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.SendKeyResponse1");
+  }
+}
+
+void SendKeyResponse1::set_implicit_omit()
+{
+if (securityAccessType().is_bound()) securityAccessType().set_implicit_omit();
+}
+
+void SendKeyResponse1::encode_text(Text_Buf& text_buf) const
+{
+field_securityAccessType.encode_text(text_buf);
+}
+
+void SendKeyResponse1::decode_text(Text_Buf& text_buf)
+{
+field_securityAccessType.decode_text(text_buf);
+}
+
+void SendKeyResponse1::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void SendKeyResponse1::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int SendKeyResponse1::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, SendKeyResponse1_securityAccessType_descr_.raw->forceomit);
+  decoded_field_length = field_securityAccessType.RAW_decode(SendKeyResponse1_securityAccessType_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int SendKeyResponse1::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 = 1;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(1);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, SendKeyResponse1_securityAccessType_descr_.raw);
+  encoded_length += field_securityAccessType.RAW_encode(SendKeyResponse1_securityAccessType_descr_, *myleaf.body.node.nodes[0]);
+  return myleaf.length = encoded_length;
+}
+
+struct SendKeyResponse1_template::single_value_struct {
+BITSTRING_template field_securityAccessType;
+};
+
+void SendKeyResponse1_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_securityAccessType = ANY_VALUE;
+}
+}
+}
+
+void SendKeyResponse1_template::copy_value(const SendKeyResponse1& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.securityAccessType().is_bound()) {
+  single_value->field_securityAccessType = other_value.securityAccessType();
+} else {
+  single_value->field_securityAccessType.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SendKeyResponse1_template::copy_template(const SendKeyResponse1_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.securityAccessType().get_selection()) {
+single_value->field_securityAccessType = other_value.securityAccessType();
+} else {
+single_value->field_securityAccessType.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SendKeyResponse1_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.SendKeyResponse1.");
+break;
+}
+set_selection(other_value);
+}
+
+SendKeyResponse1_template::SendKeyResponse1_template()
+{
+}
+
+SendKeyResponse1_template::SendKeyResponse1_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SendKeyResponse1_template::SendKeyResponse1_template(const SendKeyResponse1& other_value)
+{
+copy_value(other_value);
+}
+
+SendKeyResponse1_template::SendKeyResponse1_template(const OPTIONAL<SendKeyResponse1>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SendKeyResponse1&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.SendKeyResponse1 from an unbound optional field.");
+}
+}
+
+SendKeyResponse1_template::SendKeyResponse1_template(const SendKeyResponse1_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SendKeyResponse1_template::~SendKeyResponse1_template()
+{
+clean_up();
+}
+
+SendKeyResponse1_template& SendKeyResponse1_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SendKeyResponse1_template& SendKeyResponse1_template::operator=(const SendKeyResponse1& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SendKeyResponse1_template& SendKeyResponse1_template::operator=(const OPTIONAL<SendKeyResponse1>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SendKeyResponse1&)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 @UnifiedDiagnosticServices.SendKeyResponse1.");
+}
+return *this;
+}
+
+SendKeyResponse1_template& SendKeyResponse1_template::operator=(const SendKeyResponse1_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SendKeyResponse1_template::match(const SendKeyResponse1& 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.securityAccessType().is_bound()) return FALSE;
+if(!single_value->field_securityAccessType.match(other_value.securityAccessType(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.SendKeyResponse1.");
+}
+return FALSE;
+}
+
+boolean SendKeyResponse1_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_securityAccessType.is_bound()
+;
+}
+
+boolean SendKeyResponse1_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_securityAccessType.is_value();
+}
+
+void SendKeyResponse1_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SendKeyResponse1 SendKeyResponse1_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 @UnifiedDiagnosticServices.SendKeyResponse1.");
+SendKeyResponse1 ret_val;
+if (single_value->field_securityAccessType.is_bound()) {
+ret_val.securityAccessType() = single_value->field_securityAccessType.valueof();
+}
+return ret_val;
+}
+
+void SendKeyResponse1_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.SendKeyResponse1.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SendKeyResponse1_template[list_length];
+}
+
+SendKeyResponse1_template& SendKeyResponse1_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.SendKeyResponse1.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.SendKeyResponse1.");
+return value_list.list_value[list_index];
+}
+
+BITSTRING_template& SendKeyResponse1_template::securityAccessType()
+{
+set_specific();
+return single_value->field_securityAccessType;
+}
+
+const BITSTRING_template& SendKeyResponse1_template::securityAccessType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field securityAccessType of a non-specific template of type @UnifiedDiagnosticServices.SendKeyResponse1.");
+return single_value->field_securityAccessType;
+}
+
+int SendKeyResponse1_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.SendKeyResponse1 which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 1;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.SendKeyResponse1 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 @UnifiedDiagnosticServices.SendKeyResponse1 containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.SendKeyResponse1 containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.SendKeyResponse1 containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.SendKeyResponse1 containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.SendKeyResponse1.");
+  }
+  return 0;
+}
+
+void SendKeyResponse1_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ securityAccessType := ");
+single_value->field_securityAccessType.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SendKeyResponse1_template::log_match(const SendKeyResponse1& 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_securityAccessType.match(match_value.securityAccessType(), legacy)){
+TTCN_Logger::log_logmatch_info(".securityAccessType");
+single_value->field_securityAccessType.log_match(match_value.securityAccessType(), 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("{ securityAccessType := ");
+single_value->field_securityAccessType.log_match(match_value.securityAccessType(), 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 SendKeyResponse1_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_securityAccessType.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 @UnifiedDiagnosticServices.SendKeyResponse1.");
+}
+}
+
+void SendKeyResponse1_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_securityAccessType.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 SendKeyResponse1_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 @UnifiedDiagnosticServices.SendKeyResponse1.");
+}
+}
+
+void SendKeyResponse1_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: {
+    SendKeyResponse1_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (1<param.get_size()) {
+      param.error("record template of type @UnifiedDiagnosticServices.SendKeyResponse1 has 1 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) securityAccessType().set_param(*param.get_elem(0));
+    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(), "securityAccessType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          securityAccessType().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 @UnifiedDiagnosticServices.SendKeyResponse1: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.SendKeyResponse1");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SendKeyResponse1_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_securityAccessType.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.SendKeyResponse1");
+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 : "@UnifiedDiagnosticServices.SendKeyResponse1");
+}
+
+boolean SendKeyResponse1_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SendKeyResponse1_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 SecurityAccessResponseType::copy_value(const SecurityAccessResponseType& other_value)
+{
+switch (other_value.union_selection) {
+case ALT_requestSeed0:
+field_requestSeed0 = new RequestSeedResponse0(*other_value.field_requestSeed0);
+break;
+case ALT_sendKey0:
+field_sendKey0 = new SendKeyResponse0(*other_value.field_sendKey0);
+break;
+case ALT_requestSeed1:
+field_requestSeed1 = new RequestSeedResponse1(*other_value.field_requestSeed1);
+break;
+case ALT_sendKey1:
+field_sendKey1 = new SendKeyResponse1(*other_value.field_sendKey1);
+break;
+default:
+TTCN_error("Assignment of an unbound union value of type @UnifiedDiagnosticServices.SecurityAccessResponseType.");
+}
+union_selection = other_value.union_selection;
+}
+
+SecurityAccessResponseType::SecurityAccessResponseType()
+{
+union_selection = UNBOUND_VALUE;
+}
+
+SecurityAccessResponseType::SecurityAccessResponseType(const SecurityAccessResponseType& other_value)
+: Base_Type(){
+copy_value(other_value);
+}
+
+SecurityAccessResponseType::~SecurityAccessResponseType()
+{
+clean_up();
+}
+
+SecurityAccessResponseType& SecurityAccessResponseType::operator=(const SecurityAccessResponseType& other_value)
+{
+if (this != &other_value) {
+clean_up();
+copy_value(other_value);
+}
+return *this;
+}
+
+boolean SecurityAccessResponseType::operator==(const SecurityAccessResponseType& other_value) const
+{
+if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @UnifiedDiagnosticServices.SecurityAccessResponseType.");
+if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @UnifiedDiagnosticServices.SecurityAccessResponseType.");
+if (union_selection != other_value.union_selection) return FALSE;
+switch (union_selection) {
+case ALT_requestSeed0:
+return *field_requestSeed0 == *other_value.field_requestSeed0;
+case ALT_sendKey0:
+return *field_sendKey0 == *other_value.field_sendKey0;
+case ALT_requestSeed1:
+return *field_requestSeed1 == *other_value.field_requestSeed1;
+case ALT_sendKey1:
+return *field_sendKey1 == *other_value.field_sendKey1;
+default:
+return FALSE;
+}
+}
+
+RequestSeedResponse0& SecurityAccessResponseType::requestSeed0()
+{
+if (union_selection != ALT_requestSeed0) {
+clean_up();
+field_requestSeed0 = new RequestSeedResponse0;
+union_selection = ALT_requestSeed0;
+}
+return *field_requestSeed0;
+}
+
+const RequestSeedResponse0& SecurityAccessResponseType::requestSeed0() const
+{
+if (union_selection != ALT_requestSeed0) TTCN_error("Using non-selected field requestSeed0 in a value of union type @UnifiedDiagnosticServices.SecurityAccessResponseType.");
+return *field_requestSeed0;
+}
+
+SendKeyResponse0& SecurityAccessResponseType::sendKey0()
+{
+if (union_selection != ALT_sendKey0) {
+clean_up();
+field_sendKey0 = new SendKeyResponse0;
+union_selection = ALT_sendKey0;
+}
+return *field_sendKey0;
+}
+
+const SendKeyResponse0& SecurityAccessResponseType::sendKey0() const
+{
+if (union_selection != ALT_sendKey0) TTCN_error("Using non-selected field sendKey0 in a value of union type @UnifiedDiagnosticServices.SecurityAccessResponseType.");
+return *field_sendKey0;
+}
+
+RequestSeedResponse1& SecurityAccessResponseType::requestSeed1()
+{
+if (union_selection != ALT_requestSeed1) {
+clean_up();
+field_requestSeed1 = new RequestSeedResponse1;
+union_selection = ALT_requestSeed1;
+}
+return *field_requestSeed1;
+}
+
+const RequestSeedResponse1& SecurityAccessResponseType::requestSeed1() const
+{
+if (union_selection != ALT_requestSeed1) TTCN_error("Using non-selected field requestSeed1 in a value of union type @UnifiedDiagnosticServices.SecurityAccessResponseType.");
+return *field_requestSeed1;
+}
+
+SendKeyResponse1& SecurityAccessResponseType::sendKey1()
+{
+if (union_selection != ALT_sendKey1) {
+clean_up();
+field_sendKey1 = new SendKeyResponse1;
+union_selection = ALT_sendKey1;
+}
+return *field_sendKey1;
+}
+
+const SendKeyResponse1& SecurityAccessResponseType::sendKey1() const
+{
+if (union_selection != ALT_sendKey1) TTCN_error("Using non-selected field sendKey1 in a value of union type @UnifiedDiagnosticServices.SecurityAccessResponseType.");
+return *field_sendKey1;
+}
+
+boolean SecurityAccessResponseType::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 @UnifiedDiagnosticServices.SecurityAccessResponseType.");
+return union_selection == checked_selection;
+}
+
+boolean SecurityAccessResponseType::is_bound() const
+{
+  return union_selection != UNBOUND_VALUE;
+}
+
+boolean SecurityAccessResponseType::is_value() const
+{
+switch (union_selection) {
+case UNBOUND_VALUE: return FALSE;
+case ALT_requestSeed0: return field_requestSeed0->is_value();
+case ALT_sendKey0: return field_sendKey0->is_value();
+case ALT_requestSeed1: return field_requestSeed1->is_value();
+case ALT_sendKey1: return field_sendKey1->is_value();
+default: TTCN_error("Invalid selection in union is_bound");}
+}
+
+void SecurityAccessResponseType::clean_up()
+{
+switch (union_selection) {
+case ALT_requestSeed0:
+  delete field_requestSeed0;
+  break;
+case ALT_sendKey0:
+  delete field_sendKey0;
+  break;
+case ALT_requestSeed1:
+  delete field_requestSeed1;
+  break;
+case ALT_sendKey1:
+  delete field_sendKey1;
+  break;
+default:
+  break;
+}
+union_selection = UNBOUND_VALUE;
+}
+
+void SecurityAccessResponseType::log() const
+{
+switch (union_selection) {
+case ALT_requestSeed0:
+TTCN_Logger::log_event_str("{ requestSeed0 := ");
+field_requestSeed0->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_sendKey0:
+TTCN_Logger::log_event_str("{ sendKey0 := ");
+field_sendKey0->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_requestSeed1:
+TTCN_Logger::log_event_str("{ requestSeed1 := ");
+field_requestSeed1->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_sendKey1:
+TTCN_Logger::log_event_str("{ sendKey1 := ");
+field_sendKey1->log();
+TTCN_Logger::log_event_str(" }");
+break;
+default:
+TTCN_Logger::log_event_unbound();
+}
+}
+
+void SecurityAccessResponseType::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, "requestSeed0")) {
+    requestSeed0().set_param(*mp_last);
+    if (!requestSeed0().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "sendKey0")) {
+    sendKey0().set_param(*mp_last);
+    if (!sendKey0().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "requestSeed1")) {
+    requestSeed1().set_param(*mp_last);
+    if (!requestSeed1().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "sendKey1")) {
+    sendKey1().set_param(*mp_last);
+    if (!sendKey1().is_bound()) clean_up();
+    return;
+  }
+  mp_last->error("Field %s does not exist in type @UnifiedDiagnosticServices.SecurityAccessResponseType.", last_name);
+}
+
+void SecurityAccessResponseType::set_implicit_omit()
+{
+switch (union_selection) {
+case ALT_requestSeed0:
+field_requestSeed0->set_implicit_omit(); break;
+case ALT_sendKey0:
+field_sendKey0->set_implicit_omit(); break;
+case ALT_requestSeed1:
+field_requestSeed1->set_implicit_omit(); break;
+case ALT_sendKey1:
+field_sendKey1->set_implicit_omit(); break;
+default: break;
+}
+}
+
+void SecurityAccessResponseType::encode_text(Text_Buf& text_buf) const
+{
+text_buf.push_int(union_selection);
+switch (union_selection) {
+case ALT_requestSeed0:
+field_requestSeed0->encode_text(text_buf);
+break;
+case ALT_sendKey0:
+field_sendKey0->encode_text(text_buf);
+break;
+case ALT_requestSeed1:
+field_requestSeed1->encode_text(text_buf);
+break;
+case ALT_sendKey1:
+field_sendKey1->encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an unbound value of union type @UnifiedDiagnosticServices.SecurityAccessResponseType.");
+}
+}
+
+void SecurityAccessResponseType::decode_text(Text_Buf& text_buf)
+{
+switch ((union_selection_type)text_buf.pull_int().get_val()) {
+case ALT_requestSeed0:
+requestSeed0().decode_text(text_buf);
+break;
+case ALT_sendKey0:
+sendKey0().decode_text(text_buf);
+break;
+case ALT_requestSeed1:
+requestSeed1().decode_text(text_buf);
+break;
+case ALT_sendKey1:
+sendKey1().decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for type @UnifiedDiagnosticServices.SecurityAccessResponseType.");
+}
+}
+
+void SecurityAccessResponseType::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void SecurityAccessResponseType::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int SecurityAccessResponseType::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, RequestSeedResponse0_descr_.raw->forceomit);
+      decoded_length = requestSeed0().RAW_decode(RequestSeedResponse0_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, SendKeyResponse0_descr_.raw->forceomit);
+      decoded_length = sendKey0().RAW_decode(SendKeyResponse0_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, RequestSeedResponse1_descr_.raw->forceomit);
+      decoded_length = requestSeed1().RAW_decode(RequestSeedResponse1_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 3: {
+      RAW_Force_Omit field_force_omit(3, force_omit, SendKeyResponse1_descr_.raw->forceomit);
+      decoded_length = sendKey1().RAW_decode(SendKeyResponse1_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 {
+    boolean already_failed = FALSE;
+    already_failed = FALSE;
+    if (!already_failed) {
+      BITSTRING temporal_0;
+      int decoded_0_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_0_length = temporal_0.RAW_decode(RequestSeedResponse0_securityAccessType_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_0_length > 0) {
+        if (temporal_0 ==  bs_0) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(0, force_omit, RequestSeedResponse0_descr_.raw->forceomit);
+          decoded_length = requestSeed0().RAW_decode(RequestSeedResponse0_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_requestSeed0).securityAccessType() ==  bs_0) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      BITSTRING temporal_1;
+      int decoded_1_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_1_length = temporal_1.RAW_decode(SendKeyResponse0_securityAccessType_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_1_length > 0) {
+        if (temporal_1 ==  bs_1) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(1, force_omit, SendKeyResponse0_descr_.raw->forceomit);
+          decoded_length = sendKey0().RAW_decode(SendKeyResponse0_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_sendKey0).securityAccessType() ==  bs_1) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      BITSTRING temporal_2;
+      int decoded_2_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_2_length = temporal_2.RAW_decode(RequestSeedResponse1_securityAccessType_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_2_length > 0) {
+        if (temporal_2 ==  bs_2) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(2, force_omit, RequestSeedResponse1_descr_.raw->forceomit);
+          decoded_length = requestSeed1().RAW_decode(RequestSeedResponse1_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_requestSeed1).securityAccessType() ==  bs_2) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      BITSTRING temporal_3;
+      int decoded_3_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_3_length = temporal_3.RAW_decode(SendKeyResponse1_securityAccessType_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_3_length > 0) {
+        if (temporal_3 ==  bs_3) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(3, force_omit, SendKeyResponse1_descr_.raw->forceomit);
+          decoded_length = sendKey1().RAW_decode(SendKeyResponse1_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_sendKey1).securityAccessType() ==  bs_3) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+ }
+ clean_up();
+ return -1;
+}
+
+int SecurityAccessResponseType::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const
+{
+  int encoded_length = 0;
+  myleaf.isleaf = FALSE;
+  myleaf.body.node.num_of_nodes = 4;  myleaf.body.node.nodes = init_nodes_of_enc_tree(4);
+  memset(myleaf.body.node.nodes, 0, 4 * sizeof(RAW_enc_tree *));
+  switch (union_selection) {
+  case ALT_requestSeed0:
+    myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 0, RequestSeedResponse0_descr_.raw);
+    encoded_length = field_requestSeed0->RAW_encode(RequestSeedResponse0_descr_, *myleaf.body.node.nodes[0]);
+    myleaf.body.node.nodes[0]->coding_descr = &RequestSeedResponse0_descr_;
+    if ((*field_requestSeed0).securityAccessType() !=  bs_0) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={0,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   bs_0.RAW_encode(RequestSeedResponse0_securityAccessType_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);
+  }
+    }
+    break;
+  case ALT_sendKey0:
+    myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 1, SendKeyResponse0_descr_.raw);
+    encoded_length = field_sendKey0->RAW_encode(SendKeyResponse0_descr_, *myleaf.body.node.nodes[1]);
+    myleaf.body.node.nodes[1]->coding_descr = &SendKeyResponse0_descr_;
+    if ((*field_sendKey0).securityAccessType() !=  bs_1) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={1,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   bs_1.RAW_encode(SendKeyResponse0_securityAccessType_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);
+  }
+    }
+    break;
+  case ALT_requestSeed1:
+    myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 2, RequestSeedResponse1_descr_.raw);
+    encoded_length = field_requestSeed1->RAW_encode(RequestSeedResponse1_descr_, *myleaf.body.node.nodes[2]);
+    myleaf.body.node.nodes[2]->coding_descr = &RequestSeedResponse1_descr_;
+    if ((*field_requestSeed1).securityAccessType() !=  bs_2) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={2,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   bs_2.RAW_encode(RequestSeedResponse1_securityAccessType_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);
+  }
+    }
+    break;
+  case ALT_sendKey1:
+    myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 3, SendKeyResponse1_descr_.raw);
+    encoded_length = field_sendKey1->RAW_encode(SendKeyResponse1_descr_, *myleaf.body.node.nodes[3]);
+    myleaf.body.node.nodes[3]->coding_descr = &SendKeyResponse1_descr_;
+    if ((*field_sendKey1).securityAccessType() !=  bs_3) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={3,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   bs_3.RAW_encode(SendKeyResponse1_securityAccessType_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);
+  }
+    }
+    break;
+  default:
+    TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
+  }
+  return encoded_length;
+}
+
+void SecurityAccessResponseType_template::copy_value(const SecurityAccessResponseType& other_value)
+{
+single_value.union_selection = other_value.get_selection();
+switch (single_value.union_selection) {
+case SecurityAccessResponseType::ALT_requestSeed0:
+single_value.field_requestSeed0 = new RequestSeedResponse0_template(other_value.requestSeed0());
+break;
+case SecurityAccessResponseType::ALT_sendKey0:
+single_value.field_sendKey0 = new SendKeyResponse0_template(other_value.sendKey0());
+break;
+case SecurityAccessResponseType::ALT_requestSeed1:
+single_value.field_requestSeed1 = new RequestSeedResponse1_template(other_value.requestSeed1());
+break;
+case SecurityAccessResponseType::ALT_sendKey1:
+single_value.field_sendKey1 = new SendKeyResponse1_template(other_value.sendKey1());
+break;
+default:
+TTCN_error("Initializing a template with an unbound value of type @UnifiedDiagnosticServices.SecurityAccessResponseType.");
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SecurityAccessResponseType_template::copy_template(const SecurityAccessResponseType_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 SecurityAccessResponseType::ALT_requestSeed0:
+single_value.field_requestSeed0 = new RequestSeedResponse0_template(*other_value.single_value.field_requestSeed0);
+break;
+case SecurityAccessResponseType::ALT_sendKey0:
+single_value.field_sendKey0 = new SendKeyResponse0_template(*other_value.single_value.field_sendKey0);
+break;
+case SecurityAccessResponseType::ALT_requestSeed1:
+single_value.field_requestSeed1 = new RequestSeedResponse1_template(*other_value.single_value.field_requestSeed1);
+break;
+case SecurityAccessResponseType::ALT_sendKey1:
+single_value.field_sendKey1 = new SendKeyResponse1_template(*other_value.single_value.field_sendKey1);
+break;
+default:
+TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @UnifiedDiagnosticServices.SecurityAccessResponseType.");
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SecurityAccessResponseType_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;
+default:
+TTCN_error("Copying an uninitialized template of union type @UnifiedDiagnosticServices.SecurityAccessResponseType.");
+}
+set_selection(other_value);
+}
+
+SecurityAccessResponseType_template::SecurityAccessResponseType_template()
+{
+}
+
+SecurityAccessResponseType_template::SecurityAccessResponseType_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SecurityAccessResponseType_template::SecurityAccessResponseType_template(const SecurityAccessResponseType& other_value)
+{
+copy_value(other_value);
+}
+
+SecurityAccessResponseType_template::SecurityAccessResponseType_template(const OPTIONAL<SecurityAccessResponseType>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SecurityAccessResponseType&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of union type @UnifiedDiagnosticServices.SecurityAccessResponseType from an unbound optional field.");
+}
+}
+
+SecurityAccessResponseType_template::SecurityAccessResponseType_template(const SecurityAccessResponseType_template& other_value)
+: Base_Template(){
+copy_template(other_value);
+}
+
+SecurityAccessResponseType_template::~SecurityAccessResponseType_template()
+{
+clean_up();
+}
+
+void SecurityAccessResponseType_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case SecurityAccessResponseType::ALT_requestSeed0:
+delete single_value.field_requestSeed0;
+break;
+case SecurityAccessResponseType::ALT_sendKey0:
+delete single_value.field_sendKey0;
+break;
+case SecurityAccessResponseType::ALT_requestSeed1:
+delete single_value.field_requestSeed1;
+break;
+case SecurityAccessResponseType::ALT_sendKey1:
+delete single_value.field_sendKey1;
+default:
+break;
+}
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SecurityAccessResponseType_template& SecurityAccessResponseType_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SecurityAccessResponseType_template& SecurityAccessResponseType_template::operator=(const SecurityAccessResponseType& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SecurityAccessResponseType_template& SecurityAccessResponseType_template::operator=(const OPTIONAL<SecurityAccessResponseType>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SecurityAccessResponseType&)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 @UnifiedDiagnosticServices.SecurityAccessResponseType.");
+}
+return *this;
+}
+
+SecurityAccessResponseType_template& SecurityAccessResponseType_template::operator=(const SecurityAccessResponseType_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SecurityAccessResponseType_template::match(const SecurityAccessResponseType& 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:
+{
+SecurityAccessResponseType::union_selection_type value_selection = other_value.get_selection();
+if (value_selection == SecurityAccessResponseType::UNBOUND_VALUE) return FALSE;
+if (value_selection != single_value.union_selection) return FALSE;
+switch (value_selection) {
+case SecurityAccessResponseType::ALT_requestSeed0:
+return single_value.field_requestSeed0->match(other_value.requestSeed0(), legacy);
+case SecurityAccessResponseType::ALT_sendKey0:
+return single_value.field_sendKey0->match(other_value.sendKey0(), legacy);
+case SecurityAccessResponseType::ALT_requestSeed1:
+return single_value.field_requestSeed1->match(other_value.requestSeed1(), legacy);
+case SecurityAccessResponseType::ALT_sendKey1:
+return single_value.field_sendKey1->match(other_value.sendKey1(), legacy);
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @UnifiedDiagnosticServices.SecurityAccessResponseType.");
+}
+}
+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;
+default:
+TTCN_error ("Matching an uninitialized template of union type @UnifiedDiagnosticServices.SecurityAccessResponseType.");
+}
+return FALSE;
+}
+
+boolean SecurityAccessResponseType_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+switch (single_value.union_selection) {
+case SecurityAccessResponseType::ALT_requestSeed0:
+return single_value.field_requestSeed0->is_value();
+case SecurityAccessResponseType::ALT_sendKey0:
+return single_value.field_sendKey0->is_value();
+case SecurityAccessResponseType::ALT_requestSeed1:
+return single_value.field_requestSeed1->is_value();
+case SecurityAccessResponseType::ALT_sendKey1:
+return single_value.field_sendKey1->is_value();
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @UnifiedDiagnosticServices.SecurityAccessResponseType.");
+}
+}
+
+SecurityAccessResponseType SecurityAccessResponseType_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 @UnifiedDiagnosticServices.SecurityAccessResponseType.");
+SecurityAccessResponseType ret_val;
+switch (single_value.union_selection) {
+case SecurityAccessResponseType::ALT_requestSeed0:
+ret_val.requestSeed0() = single_value.field_requestSeed0->valueof();
+break;
+case SecurityAccessResponseType::ALT_sendKey0:
+ret_val.sendKey0() = single_value.field_sendKey0->valueof();
+break;
+case SecurityAccessResponseType::ALT_requestSeed1:
+ret_val.requestSeed1() = single_value.field_requestSeed1->valueof();
+break;
+case SecurityAccessResponseType::ALT_sendKey1:
+ret_val.sendKey1() = single_value.field_sendKey1->valueof();
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @UnifiedDiagnosticServices.SecurityAccessResponseType.");
+}
+return ret_val;
+}
+
+SecurityAccessResponseType_template& SecurityAccessResponseType_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @UnifiedDiagnosticServices.SecurityAccessResponseType.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @UnifiedDiagnosticServices.SecurityAccessResponseType.");
+return value_list.list_value[list_index];
+}
+void SecurityAccessResponseType_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error ("Internal error: Setting an invalid list for a template of union type @UnifiedDiagnosticServices.SecurityAccessResponseType.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SecurityAccessResponseType_template[list_length];
+}
+
+RequestSeedResponse0_template& SecurityAccessResponseType_template::requestSeed0()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != SecurityAccessResponseType::ALT_requestSeed0) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_requestSeed0 = new RequestSeedResponse0_template(ANY_VALUE);
+else single_value.field_requestSeed0 = new RequestSeedResponse0_template;
+single_value.union_selection = SecurityAccessResponseType::ALT_requestSeed0;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_requestSeed0;
+}
+
+const RequestSeedResponse0_template& SecurityAccessResponseType_template::requestSeed0() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field requestSeed0 in a non-specific template of union type @UnifiedDiagnosticServices.SecurityAccessResponseType.");
+if (single_value.union_selection != SecurityAccessResponseType::ALT_requestSeed0) TTCN_error("Accessing non-selected field requestSeed0 in a template of union type @UnifiedDiagnosticServices.SecurityAccessResponseType.");
+return *single_value.field_requestSeed0;
+}
+
+SendKeyResponse0_template& SecurityAccessResponseType_template::sendKey0()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != SecurityAccessResponseType::ALT_sendKey0) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_sendKey0 = new SendKeyResponse0_template(ANY_VALUE);
+else single_value.field_sendKey0 = new SendKeyResponse0_template;
+single_value.union_selection = SecurityAccessResponseType::ALT_sendKey0;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_sendKey0;
+}
+
+const SendKeyResponse0_template& SecurityAccessResponseType_template::sendKey0() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field sendKey0 in a non-specific template of union type @UnifiedDiagnosticServices.SecurityAccessResponseType.");
+if (single_value.union_selection != SecurityAccessResponseType::ALT_sendKey0) TTCN_error("Accessing non-selected field sendKey0 in a template of union type @UnifiedDiagnosticServices.SecurityAccessResponseType.");
+return *single_value.field_sendKey0;
+}
+
+RequestSeedResponse1_template& SecurityAccessResponseType_template::requestSeed1()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != SecurityAccessResponseType::ALT_requestSeed1) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_requestSeed1 = new RequestSeedResponse1_template(ANY_VALUE);
+else single_value.field_requestSeed1 = new RequestSeedResponse1_template;
+single_value.union_selection = SecurityAccessResponseType::ALT_requestSeed1;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_requestSeed1;
+}
+
+const RequestSeedResponse1_template& SecurityAccessResponseType_template::requestSeed1() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field requestSeed1 in a non-specific template of union type @UnifiedDiagnosticServices.SecurityAccessResponseType.");
+if (single_value.union_selection != SecurityAccessResponseType::ALT_requestSeed1) TTCN_error("Accessing non-selected field requestSeed1 in a template of union type @UnifiedDiagnosticServices.SecurityAccessResponseType.");
+return *single_value.field_requestSeed1;
+}
+
+SendKeyResponse1_template& SecurityAccessResponseType_template::sendKey1()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != SecurityAccessResponseType::ALT_sendKey1) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_sendKey1 = new SendKeyResponse1_template(ANY_VALUE);
+else single_value.field_sendKey1 = new SendKeyResponse1_template;
+single_value.union_selection = SecurityAccessResponseType::ALT_sendKey1;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_sendKey1;
+}
+
+const SendKeyResponse1_template& SecurityAccessResponseType_template::sendKey1() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field sendKey1 in a non-specific template of union type @UnifiedDiagnosticServices.SecurityAccessResponseType.");
+if (single_value.union_selection != SecurityAccessResponseType::ALT_sendKey1) TTCN_error("Accessing non-selected field sendKey1 in a template of union type @UnifiedDiagnosticServices.SecurityAccessResponseType.");
+return *single_value.field_sendKey1;
+}
+
+boolean SecurityAccessResponseType_template::ischosen(SecurityAccessResponseType::union_selection_type checked_selection) const
+{
+if (checked_selection == SecurityAccessResponseType::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @UnifiedDiagnosticServices.SecurityAccessResponseType.");
+switch (template_selection) {
+case SPECIFIC_VALUE:
+if (single_value.union_selection == SecurityAccessResponseType::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @UnifiedDiagnosticServices.SecurityAccessResponseType.");
+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 @UnifiedDiagnosticServices.SecurityAccessResponseType 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 SecurityAccessResponseType_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case SecurityAccessResponseType::ALT_requestSeed0:
+TTCN_Logger::log_event_str("{ requestSeed0 := ");
+single_value.field_requestSeed0->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case SecurityAccessResponseType::ALT_sendKey0:
+TTCN_Logger::log_event_str("{ sendKey0 := ");
+single_value.field_sendKey0->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case SecurityAccessResponseType::ALT_requestSeed1:
+TTCN_Logger::log_event_str("{ requestSeed1 := ");
+single_value.field_requestSeed1->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case SecurityAccessResponseType::ALT_sendKey1:
+TTCN_Logger::log_event_str("{ sendKey1 := ");
+single_value.field_sendKey1->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 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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SecurityAccessResponseType_template::log_match(const SecurityAccessResponseType& 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()) {
+switch (single_value.union_selection) {
+case SecurityAccessResponseType::ALT_requestSeed0:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".requestSeed0");
+single_value.field_requestSeed0->log_match(match_value.requestSeed0(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ requestSeed0 := ");
+single_value.field_requestSeed0->log_match(match_value.requestSeed0(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case SecurityAccessResponseType::ALT_sendKey0:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".sendKey0");
+single_value.field_sendKey0->log_match(match_value.sendKey0(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ sendKey0 := ");
+single_value.field_sendKey0->log_match(match_value.sendKey0(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case SecurityAccessResponseType::ALT_requestSeed1:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".requestSeed1");
+single_value.field_requestSeed1->log_match(match_value.requestSeed1(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ requestSeed1 := ");
+single_value.field_requestSeed1->log_match(match_value.requestSeed1(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case SecurityAccessResponseType::ALT_sendKey1:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".sendKey1");
+single_value.field_sendKey1->log_match(match_value.sendKey1(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ sendKey1 := ");
+single_value.field_sendKey1->log_match(match_value.sendKey1(), 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 SecurityAccessResponseType_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 SecurityAccessResponseType::ALT_requestSeed0:
+single_value.field_requestSeed0->encode_text(text_buf);
+break;
+case SecurityAccessResponseType::ALT_sendKey0:
+single_value.field_sendKey0->encode_text(text_buf);
+break;
+case SecurityAccessResponseType::ALT_requestSeed1:
+single_value.field_requestSeed1->encode_text(text_buf);
+break;
+case SecurityAccessResponseType::ALT_sendKey1:
+single_value.field_sendKey1->encode_text(text_buf);
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @UnifiedDiagnosticServices.SecurityAccessResponseType.");
+}
+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 @UnifiedDiagnosticServices.SecurityAccessResponseType.");
+}
+}
+
+void SecurityAccessResponseType_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+{
+single_value.union_selection = SecurityAccessResponseType::UNBOUND_VALUE;
+SecurityAccessResponseType::union_selection_type new_selection = (SecurityAccessResponseType::union_selection_type)text_buf.pull_int().get_val();
+switch (new_selection) {
+case SecurityAccessResponseType::ALT_requestSeed0:
+single_value.field_requestSeed0 = new RequestSeedResponse0_template;
+single_value.field_requestSeed0->decode_text(text_buf);
+break;
+case SecurityAccessResponseType::ALT_sendKey0:
+single_value.field_sendKey0 = new SendKeyResponse0_template;
+single_value.field_sendKey0->decode_text(text_buf);
+break;
+case SecurityAccessResponseType::ALT_requestSeed1:
+single_value.field_requestSeed1 = new RequestSeedResponse1_template;
+single_value.field_requestSeed1->decode_text(text_buf);
+break;
+case SecurityAccessResponseType::ALT_sendKey1:
+single_value.field_sendKey1 = new SendKeyResponse1_template;
+single_value.field_sendKey1->decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @UnifiedDiagnosticServices.SecurityAccessResponseType.");
+}
+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 SecurityAccessResponseType_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 @UnifiedDiagnosticServices.SecurityAccessResponseType.");
+}
+}
+
+boolean SecurityAccessResponseType_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SecurityAccessResponseType_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 SecurityAccessResponseType_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 `@UnifiedDiagnosticServices.SecurityAccessResponseType'");
+    }
+    if (strcmp("requestSeed0", param_field) == 0) {
+      requestSeed0().set_param(param);
+      return;
+    } else if (strcmp("sendKey0", param_field) == 0) {
+      sendKey0().set_param(param);
+      return;
+    } else if (strcmp("requestSeed1", param_field) == 0) {
+      requestSeed1().set_param(param);
+      return;
+    } else if (strcmp("sendKey1", param_field) == 0) {
+      sendKey1().set_param(param);
+      return;
+    } else param.error("Field `%s' not found in union template type `@UnifiedDiagnosticServices.SecurityAccessResponseType'", 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: {
+    SecurityAccessResponseType_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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", "@UnifiedDiagnosticServices.SecurityAccessResponseType");
+    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, "requestSeed0")) {
+      requestSeed0().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "sendKey0")) {
+      sendKey0().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "requestSeed1")) {
+      requestSeed1().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "sendKey1")) {
+      sendKey1().set_param(*mp_last);
+      break;
+    }
+    mp_last->error("Field %s does not exist in type @UnifiedDiagnosticServices.SecurityAccessResponseType.", last_name);
+  } break;
+  default:
+    param.type_error("union template", "@UnifiedDiagnosticServices.SecurityAccessResponseType");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SecurityAccessResponseType_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 SecurityAccessResponseType::ALT_requestSeed0:
+single_value.field_requestSeed0->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.SecurityAccessResponseType");
+return;
+case SecurityAccessResponseType::ALT_sendKey0:
+single_value.field_sendKey0->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.SecurityAccessResponseType");
+return;
+case SecurityAccessResponseType::ALT_requestSeed1:
+single_value.field_requestSeed1->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.SecurityAccessResponseType");
+return;
+case SecurityAccessResponseType::ALT_sendKey1:
+single_value.field_sendKey1->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.SecurityAccessResponseType");
+return;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @UnifiedDiagnosticServices.SecurityAccessResponseType.");
+}
+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 : "@UnifiedDiagnosticServices.SecurityAccessResponseType");
+}
+
+SecurityAccessResponseSID::SecurityAccessResponseSID()
+{
+}
+
+SecurityAccessResponseSID::SecurityAccessResponseSID(const OCTETSTRING& par_sid,
+    const BITSTRING& par_reserved,
+    const SecurityAccessResponseType& par_securityAccessType)
+  :   field_sid(par_sid),
+  field_reserved(par_reserved),
+  field_securityAccessType(par_securityAccessType)
+{
+}
+
+SecurityAccessResponseSID::SecurityAccessResponseSID(const SecurityAccessResponseSID& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.SecurityAccessResponseSID.");
+if (other_value.sid().is_bound()) field_sid = other_value.sid();
+else field_sid.clean_up();
+if (other_value.reserved().is_bound()) field_reserved = other_value.reserved();
+else field_reserved.clean_up();
+if (other_value.securityAccessType().is_bound()) field_securityAccessType = other_value.securityAccessType();
+else field_securityAccessType.clean_up();
+}
+
+void SecurityAccessResponseSID::clean_up()
+{
+field_sid.clean_up();
+field_reserved.clean_up();
+field_securityAccessType.clean_up();
+}
+
+const TTCN_Typedescriptor_t* SecurityAccessResponseSID::get_descriptor() const { return &SecurityAccessResponseSID_descr_; }
+SecurityAccessResponseSID& SecurityAccessResponseSID::operator=(const SecurityAccessResponseSID& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.SecurityAccessResponseSID.");
+  if (other_value.sid().is_bound()) field_sid = other_value.sid();
+  else field_sid.clean_up();
+  if (other_value.reserved().is_bound()) field_reserved = other_value.reserved();
+  else field_reserved.clean_up();
+  if (other_value.securityAccessType().is_bound()) field_securityAccessType = other_value.securityAccessType();
+  else field_securityAccessType.clean_up();
+}
+return *this;
+}
+
+boolean SecurityAccessResponseSID::operator==(const SecurityAccessResponseSID& other_value) const
+{
+return field_sid==other_value.field_sid
+  && field_reserved==other_value.field_reserved
+  && field_securityAccessType==other_value.field_securityAccessType;
+}
+
+boolean SecurityAccessResponseSID::is_bound() const
+{
+return (field_sid.is_bound())
+  || (field_reserved.is_bound())
+  || (field_securityAccessType.is_bound());
+}
+boolean SecurityAccessResponseSID::is_value() const
+{
+return field_sid.is_value()
+  && field_reserved.is_value()
+  && field_securityAccessType.is_value();
+}
+void SecurityAccessResponseSID::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ sid := ");
+field_sid.log();
+TTCN_Logger::log_event_str(", reserved := ");
+field_reserved.log();
+TTCN_Logger::log_event_str(", securityAccessType := ");
+field_securityAccessType.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void SecurityAccessResponseSID::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 @UnifiedDiagnosticServices.SecurityAccessResponseSID 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) sid().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) securityAccessType().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(), "sid")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          sid().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(), "reserved")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved().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(), "securityAccessType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          securityAccessType().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 @UnifiedDiagnosticServices.SecurityAccessResponseSID: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.SecurityAccessResponseSID");
+  }
+}
+
+void SecurityAccessResponseSID::set_implicit_omit()
+{
+if (sid().is_bound()) sid().set_implicit_omit();
+if (reserved().is_bound()) reserved().set_implicit_omit();
+if (securityAccessType().is_bound()) securityAccessType().set_implicit_omit();
+}
+
+void SecurityAccessResponseSID::encode_text(Text_Buf& text_buf) const
+{
+field_sid.encode_text(text_buf);
+field_reserved.encode_text(text_buf);
+field_securityAccessType.encode_text(text_buf);
+}
+
+void SecurityAccessResponseSID::decode_text(Text_Buf& text_buf)
+{
+field_sid.decode_text(text_buf);
+field_reserved.decode_text(text_buf);
+field_securityAccessType.decode_text(text_buf);
+}
+
+void SecurityAccessResponseSID::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void SecurityAccessResponseSID::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int SecurityAccessResponseSID::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, SecurityAccessResponseSID_sid_descr_.raw->forceomit);
+  decoded_field_length = field_sid.RAW_decode(SecurityAccessResponseSID_sid_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, SecurityAccessResponseSID_reserved_descr_.raw->forceomit);
+  decoded_field_length = field_reserved.RAW_decode(SecurityAccessResponseSID_reserved_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, SecurityAccessResponseSID_securityAccessType_descr_.raw->forceomit);
+  decoded_field_length = field_securityAccessType.RAW_decode(SecurityAccessResponseSID_securityAccessType_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 SecurityAccessResponseSID::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, SecurityAccessResponseSID_sid_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, SecurityAccessResponseSID_reserved_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, SecurityAccessResponseSID_securityAccessType_descr_.raw);
+  encoded_length += field_sid.RAW_encode(SecurityAccessResponseSID_sid_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved.RAW_encode(SecurityAccessResponseSID_reserved_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_securityAccessType.RAW_encode(SecurityAccessResponseSID_securityAccessType_descr_, *myleaf.body.node.nodes[2]);
+  return myleaf.length = encoded_length;
+}
+
+struct SecurityAccessResponseSID_template::single_value_struct {
+OCTETSTRING_template field_sid;
+BITSTRING_template field_reserved;
+SecurityAccessResponseType_template field_securityAccessType;
+};
+
+void SecurityAccessResponseSID_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_sid = ANY_VALUE;
+single_value->field_reserved = ANY_VALUE;
+single_value->field_securityAccessType = ANY_VALUE;
+}
+}
+}
+
+void SecurityAccessResponseSID_template::copy_value(const SecurityAccessResponseSID& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.sid().is_bound()) {
+  single_value->field_sid = other_value.sid();
+} else {
+  single_value->field_sid.clean_up();
+}
+if (other_value.reserved().is_bound()) {
+  single_value->field_reserved = other_value.reserved();
+} else {
+  single_value->field_reserved.clean_up();
+}
+if (other_value.securityAccessType().is_bound()) {
+  single_value->field_securityAccessType = other_value.securityAccessType();
+} else {
+  single_value->field_securityAccessType.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void SecurityAccessResponseSID_template::copy_template(const SecurityAccessResponseSID_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.sid().get_selection()) {
+single_value->field_sid = other_value.sid();
+} else {
+single_value->field_sid.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved().get_selection()) {
+single_value->field_reserved = other_value.reserved();
+} else {
+single_value->field_reserved.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.securityAccessType().get_selection()) {
+single_value->field_securityAccessType = other_value.securityAccessType();
+} else {
+single_value->field_securityAccessType.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new SecurityAccessResponseSID_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.SecurityAccessResponseSID.");
+break;
+}
+set_selection(other_value);
+}
+
+SecurityAccessResponseSID_template::SecurityAccessResponseSID_template()
+{
+}
+
+SecurityAccessResponseSID_template::SecurityAccessResponseSID_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+SecurityAccessResponseSID_template::SecurityAccessResponseSID_template(const SecurityAccessResponseSID& other_value)
+{
+copy_value(other_value);
+}
+
+SecurityAccessResponseSID_template::SecurityAccessResponseSID_template(const OPTIONAL<SecurityAccessResponseSID>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SecurityAccessResponseSID&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.SecurityAccessResponseSID from an unbound optional field.");
+}
+}
+
+SecurityAccessResponseSID_template::SecurityAccessResponseSID_template(const SecurityAccessResponseSID_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+SecurityAccessResponseSID_template::~SecurityAccessResponseSID_template()
+{
+clean_up();
+}
+
+SecurityAccessResponseSID_template& SecurityAccessResponseSID_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+SecurityAccessResponseSID_template& SecurityAccessResponseSID_template::operator=(const SecurityAccessResponseSID& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+SecurityAccessResponseSID_template& SecurityAccessResponseSID_template::operator=(const OPTIONAL<SecurityAccessResponseSID>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const SecurityAccessResponseSID&)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 @UnifiedDiagnosticServices.SecurityAccessResponseSID.");
+}
+return *this;
+}
+
+SecurityAccessResponseSID_template& SecurityAccessResponseSID_template::operator=(const SecurityAccessResponseSID_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean SecurityAccessResponseSID_template::match(const SecurityAccessResponseSID& 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.sid().is_bound()) return FALSE;
+if(!single_value->field_sid.match(other_value.sid(), legacy))return FALSE;
+if(!other_value.reserved().is_bound()) return FALSE;
+if(!single_value->field_reserved.match(other_value.reserved(), legacy))return FALSE;
+if(!other_value.securityAccessType().is_bound()) return FALSE;
+if(!single_value->field_securityAccessType.match(other_value.securityAccessType(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.SecurityAccessResponseSID.");
+}
+return FALSE;
+}
+
+boolean SecurityAccessResponseSID_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_sid.is_bound()
+
+ ||single_value->field_reserved.is_bound()
+
+ ||single_value->field_securityAccessType.is_bound()
+;
+}
+
+boolean SecurityAccessResponseSID_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_sid.is_value()
+ &&single_value->field_reserved.is_value()
+ &&single_value->field_securityAccessType.is_value();
+}
+
+void SecurityAccessResponseSID_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+SecurityAccessResponseSID SecurityAccessResponseSID_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 @UnifiedDiagnosticServices.SecurityAccessResponseSID.");
+SecurityAccessResponseSID ret_val;
+if (single_value->field_sid.is_bound()) {
+ret_val.sid() = single_value->field_sid.valueof();
+}
+if (single_value->field_reserved.is_bound()) {
+ret_val.reserved() = single_value->field_reserved.valueof();
+}
+if (single_value->field_securityAccessType.is_bound()) {
+ret_val.securityAccessType() = single_value->field_securityAccessType.valueof();
+}
+return ret_val;
+}
+
+void SecurityAccessResponseSID_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.SecurityAccessResponseSID.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new SecurityAccessResponseSID_template[list_length];
+}
+
+SecurityAccessResponseSID_template& SecurityAccessResponseSID_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.SecurityAccessResponseSID.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.SecurityAccessResponseSID.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& SecurityAccessResponseSID_template::sid()
+{
+set_specific();
+return single_value->field_sid;
+}
+
+const OCTETSTRING_template& SecurityAccessResponseSID_template::sid() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field sid of a non-specific template of type @UnifiedDiagnosticServices.SecurityAccessResponseSID.");
+return single_value->field_sid;
+}
+
+BITSTRING_template& SecurityAccessResponseSID_template::reserved()
+{
+set_specific();
+return single_value->field_reserved;
+}
+
+const BITSTRING_template& SecurityAccessResponseSID_template::reserved() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved of a non-specific template of type @UnifiedDiagnosticServices.SecurityAccessResponseSID.");
+return single_value->field_reserved;
+}
+
+SecurityAccessResponseType_template& SecurityAccessResponseSID_template::securityAccessType()
+{
+set_specific();
+return single_value->field_securityAccessType;
+}
+
+const SecurityAccessResponseType_template& SecurityAccessResponseSID_template::securityAccessType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field securityAccessType of a non-specific template of type @UnifiedDiagnosticServices.SecurityAccessResponseSID.");
+return single_value->field_securityAccessType;
+}
+
+int SecurityAccessResponseSID_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.SecurityAccessResponseSID 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 @UnifiedDiagnosticServices.SecurityAccessResponseSID 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 @UnifiedDiagnosticServices.SecurityAccessResponseSID containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.SecurityAccessResponseSID containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.SecurityAccessResponseSID containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.SecurityAccessResponseSID containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.SecurityAccessResponseSID.");
+  }
+  return 0;
+}
+
+void SecurityAccessResponseSID_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ sid := ");
+single_value->field_sid.log();
+TTCN_Logger::log_event_str(", reserved := ");
+single_value->field_reserved.log();
+TTCN_Logger::log_event_str(", securityAccessType := ");
+single_value->field_securityAccessType.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void SecurityAccessResponseSID_template::log_match(const SecurityAccessResponseSID& 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_sid.match(match_value.sid(), legacy)){
+TTCN_Logger::log_logmatch_info(".sid");
+single_value->field_sid.log_match(match_value.sid(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved.match(match_value.reserved(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved");
+single_value->field_reserved.log_match(match_value.reserved(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_securityAccessType.match(match_value.securityAccessType(), legacy)){
+TTCN_Logger::log_logmatch_info(".securityAccessType");
+single_value->field_securityAccessType.log_match(match_value.securityAccessType(), 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("{ sid := ");
+single_value->field_sid.log_match(match_value.sid(), legacy);
+TTCN_Logger::log_event_str(", reserved := ");
+single_value->field_reserved.log_match(match_value.reserved(), legacy);
+TTCN_Logger::log_event_str(", securityAccessType := ");
+single_value->field_securityAccessType.log_match(match_value.securityAccessType(), 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 SecurityAccessResponseSID_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_sid.encode_text(text_buf);
+single_value->field_reserved.encode_text(text_buf);
+single_value->field_securityAccessType.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 @UnifiedDiagnosticServices.SecurityAccessResponseSID.");
+}
+}
+
+void SecurityAccessResponseSID_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_sid.decode_text(text_buf);
+single_value->field_reserved.decode_text(text_buf);
+single_value->field_securityAccessType.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 SecurityAccessResponseSID_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 @UnifiedDiagnosticServices.SecurityAccessResponseSID.");
+}
+}
+
+void SecurityAccessResponseSID_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: {
+    SecurityAccessResponseSID_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @UnifiedDiagnosticServices.SecurityAccessResponseSID 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) sid().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) securityAccessType().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(), "sid")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          sid().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(), "reserved")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved().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(), "securityAccessType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          securityAccessType().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 @UnifiedDiagnosticServices.SecurityAccessResponseSID: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.SecurityAccessResponseSID");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void SecurityAccessResponseSID_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_sid.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.SecurityAccessResponseSID");
+single_value->field_reserved.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.SecurityAccessResponseSID");
+single_value->field_securityAccessType.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.SecurityAccessResponseSID");
+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 : "@UnifiedDiagnosticServices.SecurityAccessResponseSID");
+}
+
+boolean SecurityAccessResponseSID_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean SecurityAccessResponseSID_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+e__ControlType::e__ControlType()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+e__ControlType::e__ControlType(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @UnifiedDiagnosticServices.e_ControlType with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+e__ControlType::e__ControlType(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+e__ControlType::e__ControlType(const e__ControlType& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @UnifiedDiagnosticServices.e_ControlType.");
+enum_value = other_value.enum_value;
+}
+
+e__ControlType& e__ControlType::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @UnifiedDiagnosticServices.e_ControlType.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+e__ControlType& e__ControlType::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+e__ControlType& e__ControlType::operator=(const e__ControlType& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @UnifiedDiagnosticServices.e_ControlType.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean e__ControlType::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.e_ControlType.");
+return enum_value == other_value;
+}
+
+boolean e__ControlType::operator==(const e__ControlType& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.e_ControlType.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.e_ControlType.");
+return enum_value == other_value.enum_value;
+}
+
+boolean e__ControlType::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.e_ControlType.");
+return enum_value < other_value;
+}
+
+boolean e__ControlType::operator<(const e__ControlType& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.e_ControlType.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.e_ControlType.");
+return enum_value < other_value.enum_value;
+}
+
+boolean e__ControlType::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.e_ControlType.");
+return enum_value > other_value;
+}
+
+boolean e__ControlType::operator>(const e__ControlType& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.e_ControlType.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.e_ControlType.");
+return enum_value > other_value.enum_value;
+}
+
+const char *e__ControlType::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case EnableRxAndTx: return "EnableRxAndTx";
+case EnableRxAndDisableTx: return "EnableRxAndDisableTx";
+case DisableRxAndEnableTx: return "DisableRxAndEnableTx";
+case DisableRxAndTx: return "DisableRxAndTx";
+case EnableRxAndDisableTxWithEnhancedAddressInformation: return "EnableRxAndDisableTxWithEnhancedAddressInformation";
+case EnableRxAndTxWithEnhancedAddressInformation: return "EnableRxAndTxWithEnhancedAddressInformation";
+default: return "<unknown>";
+}
+}
+
+e__ControlType::enum_type e__ControlType::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "EnableRxAndTx")) return EnableRxAndTx;
+else if (!strcmp(str_par, "EnableRxAndDisableTx")) return EnableRxAndDisableTx;
+else if (!strcmp(str_par, "DisableRxAndEnableTx")) return DisableRxAndEnableTx;
+else if (!strcmp(str_par, "DisableRxAndTx")) return DisableRxAndTx;
+else if (!strcmp(str_par, "EnableRxAndDisableTxWithEnhancedAddressInformation")) return EnableRxAndDisableTxWithEnhancedAddressInformation;
+else if (!strcmp(str_par, "EnableRxAndTxWithEnhancedAddressInformation")) return EnableRxAndTxWithEnhancedAddressInformation;
+else return UNKNOWN_VALUE;
+}
+
+boolean e__ControlType::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 0:
+case 1:
+case 2:
+case 3:
+case 4:
+case 5:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int e__ControlType::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @UnifiedDiagnosticServices.e_ControlType.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int e__ControlType::enum2int(const e__ControlType& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @UnifiedDiagnosticServices.e_ControlType.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void e__ControlType::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @UnifiedDiagnosticServices.e_ControlType.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+e__ControlType::operator e__ControlType::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @UnifiedDiagnosticServices.e_ControlType.");
+return enum_value;
+}
+
+void e__ControlType::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void e__ControlType::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@UnifiedDiagnosticServices.e_ControlType");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @UnifiedDiagnosticServices.e_ControlType.");
+  }
+}
+
+void e__ControlType::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @UnifiedDiagnosticServices.e_ControlType.");
+text_buf.push_int(enum_value);
+}
+
+void e__ControlType::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @UnifiedDiagnosticServices.e_ControlType.", enum_value);
+}
+
+void e__ControlType::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void e__ControlType::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int e__ControlType::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*)
+{
+  int decoded_value = 0;
+  int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 3, no_err);
+  if (decoded_length < 0) return decoded_length;
+  if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value;
+  else {
+    if(no_err){
+     return -1;
+    } else {
+    TTCN_EncDec_ErrorContext::error
+      (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name);
+    enum_value = UNKNOWN_VALUE;
+    }
+  }
+  return decoded_length;
+}
+
+int e__ControlType::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const
+{
+  return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 3);
+}
+
+void e__ControlType_template::copy_template(const e__ControlType_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new e__ControlType_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @UnifiedDiagnosticServices.e_ControlType.");
+}
+}
+
+e__ControlType_template::e__ControlType_template()
+{
+}
+
+e__ControlType_template::e__ControlType_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+e__ControlType_template::e__ControlType_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!e__ControlType::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @UnifiedDiagnosticServices.e_ControlType with unknown numeric value %d.", other_value);
+single_value = (e__ControlType::enum_type)other_value;
+}
+
+e__ControlType_template::e__ControlType_template(e__ControlType::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+e__ControlType_template::e__ControlType_template(const e__ControlType& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == e__ControlType::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @UnifiedDiagnosticServices.e_ControlType.");
+single_value = other_value.enum_value;
+}
+
+e__ControlType_template::e__ControlType_template(const OPTIONAL<e__ControlType>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__ControlType::enum_type)(const e__ControlType&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @UnifiedDiagnosticServices.e_ControlType from an unbound optional field.");
+}
+}
+
+e__ControlType_template::e__ControlType_template(const e__ControlType_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+e__ControlType_template::~e__ControlType_template()
+{
+clean_up();
+}
+
+boolean e__ControlType_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean e__ControlType_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != e__ControlType::UNBOUND_VALUE;
+}
+
+void e__ControlType_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+e__ControlType_template& e__ControlType_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+e__ControlType_template& e__ControlType_template::operator=(int other_value)
+{
+if (!e__ControlType::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @UnifiedDiagnosticServices.e_ControlType.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (e__ControlType::enum_type)other_value;
+return *this;
+}
+
+e__ControlType_template& e__ControlType_template::operator=(e__ControlType::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+e__ControlType_template& e__ControlType_template::operator=(const e__ControlType& other_value)
+{
+if (other_value.enum_value == e__ControlType::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @UnifiedDiagnosticServices.e_ControlType to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+e__ControlType_template& e__ControlType_template::operator=(const OPTIONAL<e__ControlType>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__ControlType::enum_type)(const e__ControlType&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @UnifiedDiagnosticServices.e_ControlType.");
+}
+return *this;
+}
+
+e__ControlType_template& e__ControlType_template::operator=(const e__ControlType_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean e__ControlType_template::match(e__ControlType::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @UnifiedDiagnosticServices.e_ControlType.");
+}
+return FALSE;
+}
+
+boolean e__ControlType_template::match(const e__ControlType& other_value, boolean) const
+{
+if (other_value.enum_value == e__ControlType::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @UnifiedDiagnosticServices.e_ControlType with an unbound value.");
+return match(other_value.enum_value);
+}
+
+e__ControlType::enum_type e__ControlType_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @UnifiedDiagnosticServices.e_ControlType.");
+return single_value;
+}
+
+void e__ControlType_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @UnifiedDiagnosticServices.e_ControlType.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new e__ControlType_template[list_length];
+}
+
+e__ControlType_template& e__ControlType_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @UnifiedDiagnosticServices.e_ControlType.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @UnifiedDiagnosticServices.e_ControlType.");
+return value_list.list_value[list_index];
+}
+
+void e__ControlType_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(e__ControlType::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void e__ControlType_template::log_match(const e__ControlType& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void e__ControlType_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @UnifiedDiagnosticServices.e_ControlType.");
+}
+}
+
+void e__ControlType_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (e__ControlType::enum_type)text_buf.pull_int().get_val();
+if (!e__ControlType::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @UnifiedDiagnosticServices.e_ControlType.", single_value);
+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 e__ControlType_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @UnifiedDiagnosticServices.e_ControlType.");
+}
+}
+
+boolean e__ControlType_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean e__ControlType_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 e__ControlType_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    e__ControlType_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    e__ControlType::enum_type enum_val = e__ControlType::str_to_enum(m_p->get_enumerated());
+    if (!e__ControlType::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @UnifiedDiagnosticServices.e_ControlType.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@UnifiedDiagnosticServices.e_ControlType");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void e__ControlType_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@UnifiedDiagnosticServices.e_ControlType");
+}
+
+e__DisableEnable::e__DisableEnable()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+e__DisableEnable::e__DisableEnable(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @UnifiedDiagnosticServices.e_DisableEnable with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+e__DisableEnable::e__DisableEnable(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+e__DisableEnable::e__DisableEnable(const e__DisableEnable& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @UnifiedDiagnosticServices.e_DisableEnable.");
+enum_value = other_value.enum_value;
+}
+
+e__DisableEnable& e__DisableEnable::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @UnifiedDiagnosticServices.e_DisableEnable.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+e__DisableEnable& e__DisableEnable::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+e__DisableEnable& e__DisableEnable::operator=(const e__DisableEnable& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @UnifiedDiagnosticServices.e_DisableEnable.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean e__DisableEnable::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.e_DisableEnable.");
+return enum_value == other_value;
+}
+
+boolean e__DisableEnable::operator==(const e__DisableEnable& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.e_DisableEnable.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.e_DisableEnable.");
+return enum_value == other_value.enum_value;
+}
+
+boolean e__DisableEnable::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.e_DisableEnable.");
+return enum_value < other_value;
+}
+
+boolean e__DisableEnable::operator<(const e__DisableEnable& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.e_DisableEnable.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.e_DisableEnable.");
+return enum_value < other_value.enum_value;
+}
+
+boolean e__DisableEnable::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.e_DisableEnable.");
+return enum_value > other_value;
+}
+
+boolean e__DisableEnable::operator>(const e__DisableEnable& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.e_DisableEnable.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.e_DisableEnable.");
+return enum_value > other_value.enum_value;
+}
+
+const char *e__DisableEnable::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case DisableEnableSpecifiedCommunicationType: return "DisableEnableSpecifiedCommunicationType";
+case DisableEnableSpecificSubnetIdentifiedBySubnetNumber1: return "DisableEnableSpecificSubnetIdentifiedBySubnetNumber1";
+case DisableEnableSpecificSubnetIdentifiedBySubnetNumber2: return "DisableEnableSpecificSubnetIdentifiedBySubnetNumber2";
+case DisableEnableSpecificSubnetIdentifiedBySubnetNumber3: return "DisableEnableSpecificSubnetIdentifiedBySubnetNumber3";
+case DisableEnableSpecificSubnetIdentifiedBySubnetNumber4: return "DisableEnableSpecificSubnetIdentifiedBySubnetNumber4";
+case DisableEnableSpecificSubnetIdentifiedBySubnetNumber5: return "DisableEnableSpecificSubnetIdentifiedBySubnetNumber5";
+case DisableEnableSpecificSubnetIdentifiedBySubnetNumber6: return "DisableEnableSpecificSubnetIdentifiedBySubnetNumber6";
+case DisableEnableSpecificSubnetIdentifiedBySubnetNumber7: return "DisableEnableSpecificSubnetIdentifiedBySubnetNumber7";
+case DisableEnableSpecificSubnetIdentifiedBySubnetNumber8: return "DisableEnableSpecificSubnetIdentifiedBySubnetNumber8";
+case DisableEnableSpecificSubnetIdentifiedBySubnetNumber9: return "DisableEnableSpecificSubnetIdentifiedBySubnetNumber9";
+case DisableEnableSpecificSubnetIdentifiedBySubnetNumber10: return "DisableEnableSpecificSubnetIdentifiedBySubnetNumber10";
+case DisableEnableSpecificSubnetIdentifiedBySubnetNumber11: return "DisableEnableSpecificSubnetIdentifiedBySubnetNumber11";
+case DisableEnableSpecificSubnetIdentifiedBySubnetNumber12: return "DisableEnableSpecificSubnetIdentifiedBySubnetNumber12";
+case DisableEnableSpecificSubnetIdentifiedBySubnetNumber13: return "DisableEnableSpecificSubnetIdentifiedBySubnetNumber13";
+case DisableEnableSpecificSubnetIdentifiedBySubnetNumber14: return "DisableEnableSpecificSubnetIdentifiedBySubnetNumber14";
+case DisableEnableNetworkWhichRequestIsReceivedOn: return "DisableEnableNetworkWhichRequestIsReceivedOn";
+default: return "<unknown>";
+}
+}
+
+e__DisableEnable::enum_type e__DisableEnable::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "DisableEnableSpecifiedCommunicationType")) return DisableEnableSpecifiedCommunicationType;
+else if (!strcmp(str_par, "DisableEnableSpecificSubnetIdentifiedBySubnetNumber1")) return DisableEnableSpecificSubnetIdentifiedBySubnetNumber1;
+else if (!strcmp(str_par, "DisableEnableSpecificSubnetIdentifiedBySubnetNumber2")) return DisableEnableSpecificSubnetIdentifiedBySubnetNumber2;
+else if (!strcmp(str_par, "DisableEnableSpecificSubnetIdentifiedBySubnetNumber3")) return DisableEnableSpecificSubnetIdentifiedBySubnetNumber3;
+else if (!strcmp(str_par, "DisableEnableSpecificSubnetIdentifiedBySubnetNumber4")) return DisableEnableSpecificSubnetIdentifiedBySubnetNumber4;
+else if (!strcmp(str_par, "DisableEnableSpecificSubnetIdentifiedBySubnetNumber5")) return DisableEnableSpecificSubnetIdentifiedBySubnetNumber5;
+else if (!strcmp(str_par, "DisableEnableSpecificSubnetIdentifiedBySubnetNumber6")) return DisableEnableSpecificSubnetIdentifiedBySubnetNumber6;
+else if (!strcmp(str_par, "DisableEnableSpecificSubnetIdentifiedBySubnetNumber7")) return DisableEnableSpecificSubnetIdentifiedBySubnetNumber7;
+else if (!strcmp(str_par, "DisableEnableSpecificSubnetIdentifiedBySubnetNumber8")) return DisableEnableSpecificSubnetIdentifiedBySubnetNumber8;
+else if (!strcmp(str_par, "DisableEnableSpecificSubnetIdentifiedBySubnetNumber9")) return DisableEnableSpecificSubnetIdentifiedBySubnetNumber9;
+else if (!strcmp(str_par, "DisableEnableSpecificSubnetIdentifiedBySubnetNumber10")) return DisableEnableSpecificSubnetIdentifiedBySubnetNumber10;
+else if (!strcmp(str_par, "DisableEnableSpecificSubnetIdentifiedBySubnetNumber11")) return DisableEnableSpecificSubnetIdentifiedBySubnetNumber11;
+else if (!strcmp(str_par, "DisableEnableSpecificSubnetIdentifiedBySubnetNumber12")) return DisableEnableSpecificSubnetIdentifiedBySubnetNumber12;
+else if (!strcmp(str_par, "DisableEnableSpecificSubnetIdentifiedBySubnetNumber13")) return DisableEnableSpecificSubnetIdentifiedBySubnetNumber13;
+else if (!strcmp(str_par, "DisableEnableSpecificSubnetIdentifiedBySubnetNumber14")) return DisableEnableSpecificSubnetIdentifiedBySubnetNumber14;
+else if (!strcmp(str_par, "DisableEnableNetworkWhichRequestIsReceivedOn")) return DisableEnableNetworkWhichRequestIsReceivedOn;
+else return UNKNOWN_VALUE;
+}
+
+boolean e__DisableEnable::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 0:
+case 1:
+case 2:
+case 3:
+case 4:
+case 5:
+case 6:
+case 7:
+case 8:
+case 9:
+case 10:
+case 11:
+case 12:
+case 13:
+case 14:
+case 15:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int e__DisableEnable::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @UnifiedDiagnosticServices.e_DisableEnable.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int e__DisableEnable::enum2int(const e__DisableEnable& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @UnifiedDiagnosticServices.e_DisableEnable.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void e__DisableEnable::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @UnifiedDiagnosticServices.e_DisableEnable.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+e__DisableEnable::operator e__DisableEnable::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @UnifiedDiagnosticServices.e_DisableEnable.");
+return enum_value;
+}
+
+void e__DisableEnable::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void e__DisableEnable::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@UnifiedDiagnosticServices.e_DisableEnable");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @UnifiedDiagnosticServices.e_DisableEnable.");
+  }
+}
+
+void e__DisableEnable::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @UnifiedDiagnosticServices.e_DisableEnable.");
+text_buf.push_int(enum_value);
+}
+
+void e__DisableEnable::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @UnifiedDiagnosticServices.e_DisableEnable.", enum_value);
+}
+
+void e__DisableEnable::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void e__DisableEnable::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int e__DisableEnable::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*)
+{
+  int decoded_value = 0;
+  int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 5, no_err);
+  if (decoded_length < 0) return decoded_length;
+  if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value;
+  else {
+    if(no_err){
+     return -1;
+    } else {
+    TTCN_EncDec_ErrorContext::error
+      (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name);
+    enum_value = UNKNOWN_VALUE;
+    }
+  }
+  return decoded_length;
+}
+
+int e__DisableEnable::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const
+{
+  return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 5);
+}
+
+void e__DisableEnable_template::copy_template(const e__DisableEnable_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new e__DisableEnable_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @UnifiedDiagnosticServices.e_DisableEnable.");
+}
+}
+
+e__DisableEnable_template::e__DisableEnable_template()
+{
+}
+
+e__DisableEnable_template::e__DisableEnable_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+e__DisableEnable_template::e__DisableEnable_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!e__DisableEnable::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @UnifiedDiagnosticServices.e_DisableEnable with unknown numeric value %d.", other_value);
+single_value = (e__DisableEnable::enum_type)other_value;
+}
+
+e__DisableEnable_template::e__DisableEnable_template(e__DisableEnable::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+e__DisableEnable_template::e__DisableEnable_template(const e__DisableEnable& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == e__DisableEnable::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @UnifiedDiagnosticServices.e_DisableEnable.");
+single_value = other_value.enum_value;
+}
+
+e__DisableEnable_template::e__DisableEnable_template(const OPTIONAL<e__DisableEnable>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__DisableEnable::enum_type)(const e__DisableEnable&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @UnifiedDiagnosticServices.e_DisableEnable from an unbound optional field.");
+}
+}
+
+e__DisableEnable_template::e__DisableEnable_template(const e__DisableEnable_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+e__DisableEnable_template::~e__DisableEnable_template()
+{
+clean_up();
+}
+
+boolean e__DisableEnable_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean e__DisableEnable_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != e__DisableEnable::UNBOUND_VALUE;
+}
+
+void e__DisableEnable_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+e__DisableEnable_template& e__DisableEnable_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+e__DisableEnable_template& e__DisableEnable_template::operator=(int other_value)
+{
+if (!e__DisableEnable::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @UnifiedDiagnosticServices.e_DisableEnable.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (e__DisableEnable::enum_type)other_value;
+return *this;
+}
+
+e__DisableEnable_template& e__DisableEnable_template::operator=(e__DisableEnable::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+e__DisableEnable_template& e__DisableEnable_template::operator=(const e__DisableEnable& other_value)
+{
+if (other_value.enum_value == e__DisableEnable::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @UnifiedDiagnosticServices.e_DisableEnable to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+e__DisableEnable_template& e__DisableEnable_template::operator=(const OPTIONAL<e__DisableEnable>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__DisableEnable::enum_type)(const e__DisableEnable&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @UnifiedDiagnosticServices.e_DisableEnable.");
+}
+return *this;
+}
+
+e__DisableEnable_template& e__DisableEnable_template::operator=(const e__DisableEnable_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean e__DisableEnable_template::match(e__DisableEnable::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @UnifiedDiagnosticServices.e_DisableEnable.");
+}
+return FALSE;
+}
+
+boolean e__DisableEnable_template::match(const e__DisableEnable& other_value, boolean) const
+{
+if (other_value.enum_value == e__DisableEnable::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @UnifiedDiagnosticServices.e_DisableEnable with an unbound value.");
+return match(other_value.enum_value);
+}
+
+e__DisableEnable::enum_type e__DisableEnable_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @UnifiedDiagnosticServices.e_DisableEnable.");
+return single_value;
+}
+
+void e__DisableEnable_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @UnifiedDiagnosticServices.e_DisableEnable.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new e__DisableEnable_template[list_length];
+}
+
+e__DisableEnable_template& e__DisableEnable_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @UnifiedDiagnosticServices.e_DisableEnable.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @UnifiedDiagnosticServices.e_DisableEnable.");
+return value_list.list_value[list_index];
+}
+
+void e__DisableEnable_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(e__DisableEnable::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void e__DisableEnable_template::log_match(const e__DisableEnable& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void e__DisableEnable_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @UnifiedDiagnosticServices.e_DisableEnable.");
+}
+}
+
+void e__DisableEnable_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (e__DisableEnable::enum_type)text_buf.pull_int().get_val();
+if (!e__DisableEnable::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @UnifiedDiagnosticServices.e_DisableEnable.", single_value);
+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 e__DisableEnable_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @UnifiedDiagnosticServices.e_DisableEnable.");
+}
+}
+
+boolean e__DisableEnable_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean e__DisableEnable_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 e__DisableEnable_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    e__DisableEnable_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    e__DisableEnable::enum_type enum_val = e__DisableEnable::str_to_enum(m_p->get_enumerated());
+    if (!e__DisableEnable::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @UnifiedDiagnosticServices.e_DisableEnable.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@UnifiedDiagnosticServices.e_DisableEnable");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void e__DisableEnable_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@UnifiedDiagnosticServices.e_DisableEnable");
+}
+
+e__CommunicationMessages::e__CommunicationMessages()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+e__CommunicationMessages::e__CommunicationMessages(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @UnifiedDiagnosticServices.e_CommunicationMessages with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+e__CommunicationMessages::e__CommunicationMessages(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+e__CommunicationMessages::e__CommunicationMessages(const e__CommunicationMessages& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @UnifiedDiagnosticServices.e_CommunicationMessages.");
+enum_value = other_value.enum_value;
+}
+
+e__CommunicationMessages& e__CommunicationMessages::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @UnifiedDiagnosticServices.e_CommunicationMessages.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+e__CommunicationMessages& e__CommunicationMessages::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+e__CommunicationMessages& e__CommunicationMessages::operator=(const e__CommunicationMessages& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @UnifiedDiagnosticServices.e_CommunicationMessages.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean e__CommunicationMessages::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.e_CommunicationMessages.");
+return enum_value == other_value;
+}
+
+boolean e__CommunicationMessages::operator==(const e__CommunicationMessages& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.e_CommunicationMessages.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.e_CommunicationMessages.");
+return enum_value == other_value.enum_value;
+}
+
+boolean e__CommunicationMessages::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.e_CommunicationMessages.");
+return enum_value < other_value;
+}
+
+boolean e__CommunicationMessages::operator<(const e__CommunicationMessages& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.e_CommunicationMessages.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.e_CommunicationMessages.");
+return enum_value < other_value.enum_value;
+}
+
+boolean e__CommunicationMessages::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.e_CommunicationMessages.");
+return enum_value > other_value;
+}
+
+boolean e__CommunicationMessages::operator>(const e__CommunicationMessages& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.e_CommunicationMessages.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.e_CommunicationMessages.");
+return enum_value > other_value.enum_value;
+}
+
+const char *e__CommunicationMessages::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case normalMessages: return "normalMessages";
+case networkManagement: return "networkManagement";
+default: return "<unknown>";
+}
+}
+
+e__CommunicationMessages::enum_type e__CommunicationMessages::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "normalMessages")) return normalMessages;
+else if (!strcmp(str_par, "networkManagement")) return networkManagement;
+else return UNKNOWN_VALUE;
+}
+
+boolean e__CommunicationMessages::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 1:
+case 2:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int e__CommunicationMessages::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @UnifiedDiagnosticServices.e_CommunicationMessages.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int e__CommunicationMessages::enum2int(const e__CommunicationMessages& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @UnifiedDiagnosticServices.e_CommunicationMessages.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void e__CommunicationMessages::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @UnifiedDiagnosticServices.e_CommunicationMessages.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+e__CommunicationMessages::operator e__CommunicationMessages::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @UnifiedDiagnosticServices.e_CommunicationMessages.");
+return enum_value;
+}
+
+void e__CommunicationMessages::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void e__CommunicationMessages::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@UnifiedDiagnosticServices.e_CommunicationMessages");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @UnifiedDiagnosticServices.e_CommunicationMessages.");
+  }
+}
+
+void e__CommunicationMessages::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @UnifiedDiagnosticServices.e_CommunicationMessages.");
+text_buf.push_int(enum_value);
+}
+
+void e__CommunicationMessages::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @UnifiedDiagnosticServices.e_CommunicationMessages.", enum_value);
+}
+
+void e__CommunicationMessages::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void e__CommunicationMessages::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int e__CommunicationMessages::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*)
+{
+  int decoded_value = 0;
+  int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 2, no_err);
+  if (decoded_length < 0) return decoded_length;
+  if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value;
+  else {
+    if(no_err){
+     return -1;
+    } else {
+    TTCN_EncDec_ErrorContext::error
+      (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name);
+    enum_value = UNKNOWN_VALUE;
+    }
+  }
+  return decoded_length;
+}
+
+int e__CommunicationMessages::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const
+{
+  return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 2);
+}
+
+void e__CommunicationMessages_template::copy_template(const e__CommunicationMessages_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new e__CommunicationMessages_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @UnifiedDiagnosticServices.e_CommunicationMessages.");
+}
+}
+
+e__CommunicationMessages_template::e__CommunicationMessages_template()
+{
+}
+
+e__CommunicationMessages_template::e__CommunicationMessages_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+e__CommunicationMessages_template::e__CommunicationMessages_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!e__CommunicationMessages::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @UnifiedDiagnosticServices.e_CommunicationMessages with unknown numeric value %d.", other_value);
+single_value = (e__CommunicationMessages::enum_type)other_value;
+}
+
+e__CommunicationMessages_template::e__CommunicationMessages_template(e__CommunicationMessages::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+e__CommunicationMessages_template::e__CommunicationMessages_template(const e__CommunicationMessages& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == e__CommunicationMessages::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @UnifiedDiagnosticServices.e_CommunicationMessages.");
+single_value = other_value.enum_value;
+}
+
+e__CommunicationMessages_template::e__CommunicationMessages_template(const OPTIONAL<e__CommunicationMessages>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__CommunicationMessages::enum_type)(const e__CommunicationMessages&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @UnifiedDiagnosticServices.e_CommunicationMessages from an unbound optional field.");
+}
+}
+
+e__CommunicationMessages_template::e__CommunicationMessages_template(const e__CommunicationMessages_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+e__CommunicationMessages_template::~e__CommunicationMessages_template()
+{
+clean_up();
+}
+
+boolean e__CommunicationMessages_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean e__CommunicationMessages_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != e__CommunicationMessages::UNBOUND_VALUE;
+}
+
+void e__CommunicationMessages_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+e__CommunicationMessages_template& e__CommunicationMessages_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+e__CommunicationMessages_template& e__CommunicationMessages_template::operator=(int other_value)
+{
+if (!e__CommunicationMessages::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @UnifiedDiagnosticServices.e_CommunicationMessages.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (e__CommunicationMessages::enum_type)other_value;
+return *this;
+}
+
+e__CommunicationMessages_template& e__CommunicationMessages_template::operator=(e__CommunicationMessages::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+e__CommunicationMessages_template& e__CommunicationMessages_template::operator=(const e__CommunicationMessages& other_value)
+{
+if (other_value.enum_value == e__CommunicationMessages::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @UnifiedDiagnosticServices.e_CommunicationMessages to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+e__CommunicationMessages_template& e__CommunicationMessages_template::operator=(const OPTIONAL<e__CommunicationMessages>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__CommunicationMessages::enum_type)(const e__CommunicationMessages&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @UnifiedDiagnosticServices.e_CommunicationMessages.");
+}
+return *this;
+}
+
+e__CommunicationMessages_template& e__CommunicationMessages_template::operator=(const e__CommunicationMessages_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean e__CommunicationMessages_template::match(e__CommunicationMessages::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @UnifiedDiagnosticServices.e_CommunicationMessages.");
+}
+return FALSE;
+}
+
+boolean e__CommunicationMessages_template::match(const e__CommunicationMessages& other_value, boolean) const
+{
+if (other_value.enum_value == e__CommunicationMessages::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @UnifiedDiagnosticServices.e_CommunicationMessages with an unbound value.");
+return match(other_value.enum_value);
+}
+
+e__CommunicationMessages::enum_type e__CommunicationMessages_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @UnifiedDiagnosticServices.e_CommunicationMessages.");
+return single_value;
+}
+
+void e__CommunicationMessages_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @UnifiedDiagnosticServices.e_CommunicationMessages.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new e__CommunicationMessages_template[list_length];
+}
+
+e__CommunicationMessages_template& e__CommunicationMessages_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @UnifiedDiagnosticServices.e_CommunicationMessages.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @UnifiedDiagnosticServices.e_CommunicationMessages.");
+return value_list.list_value[list_index];
+}
+
+void e__CommunicationMessages_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(e__CommunicationMessages::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void e__CommunicationMessages_template::log_match(const e__CommunicationMessages& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void e__CommunicationMessages_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @UnifiedDiagnosticServices.e_CommunicationMessages.");
+}
+}
+
+void e__CommunicationMessages_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (e__CommunicationMessages::enum_type)text_buf.pull_int().get_val();
+if (!e__CommunicationMessages::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @UnifiedDiagnosticServices.e_CommunicationMessages.", single_value);
+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 e__CommunicationMessages_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @UnifiedDiagnosticServices.e_CommunicationMessages.");
+}
+}
+
+boolean e__CommunicationMessages_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean e__CommunicationMessages_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 e__CommunicationMessages_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    e__CommunicationMessages_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    e__CommunicationMessages::enum_type enum_val = e__CommunicationMessages::str_to_enum(m_p->get_enumerated());
+    if (!e__CommunicationMessages::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @UnifiedDiagnosticServices.e_CommunicationMessages.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@UnifiedDiagnosticServices.e_CommunicationMessages");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void e__CommunicationMessages_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@UnifiedDiagnosticServices.e_CommunicationMessages");
+}
+
+CommunicationType::CommunicationType()
+{
+}
+
+CommunicationType::CommunicationType(const e__DisableEnable& par_disableEnable,
+    const BITSTRING& par_reserved,
+    const e__CommunicationMessages& par_communicationMessages)
+  :   field_disableEnable(par_disableEnable),
+  field_reserved(par_reserved),
+  field_communicationMessages(par_communicationMessages)
+{
+}
+
+CommunicationType::CommunicationType(const CommunicationType& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.CommunicationType.");
+if (other_value.disableEnable().is_bound()) field_disableEnable = other_value.disableEnable();
+else field_disableEnable.clean_up();
+if (other_value.reserved().is_bound()) field_reserved = other_value.reserved();
+else field_reserved.clean_up();
+if (other_value.communicationMessages().is_bound()) field_communicationMessages = other_value.communicationMessages();
+else field_communicationMessages.clean_up();
+}
+
+void CommunicationType::clean_up()
+{
+field_disableEnable.clean_up();
+field_reserved.clean_up();
+field_communicationMessages.clean_up();
+}
+
+const TTCN_Typedescriptor_t* CommunicationType::get_descriptor() const { return &CommunicationType_descr_; }
+CommunicationType& CommunicationType::operator=(const CommunicationType& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.CommunicationType.");
+  if (other_value.disableEnable().is_bound()) field_disableEnable = other_value.disableEnable();
+  else field_disableEnable.clean_up();
+  if (other_value.reserved().is_bound()) field_reserved = other_value.reserved();
+  else field_reserved.clean_up();
+  if (other_value.communicationMessages().is_bound()) field_communicationMessages = other_value.communicationMessages();
+  else field_communicationMessages.clean_up();
+}
+return *this;
+}
+
+boolean CommunicationType::operator==(const CommunicationType& other_value) const
+{
+return field_disableEnable==other_value.field_disableEnable
+  && field_reserved==other_value.field_reserved
+  && field_communicationMessages==other_value.field_communicationMessages;
+}
+
+boolean CommunicationType::is_bound() const
+{
+return (field_disableEnable.is_bound())
+  || (field_reserved.is_bound())
+  || (field_communicationMessages.is_bound());
+}
+boolean CommunicationType::is_value() const
+{
+return field_disableEnable.is_value()
+  && field_reserved.is_value()
+  && field_communicationMessages.is_value();
+}
+void CommunicationType::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ disableEnable := ");
+field_disableEnable.log();
+TTCN_Logger::log_event_str(", reserved := ");
+field_reserved.log();
+TTCN_Logger::log_event_str(", communicationMessages := ");
+field_communicationMessages.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void CommunicationType::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 @UnifiedDiagnosticServices.CommunicationType 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) disableEnable().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) communicationMessages().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(), "disableEnable")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          disableEnable().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(), "reserved")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved().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(), "communicationMessages")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          communicationMessages().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 @UnifiedDiagnosticServices.CommunicationType: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.CommunicationType");
+  }
+}
+
+void CommunicationType::set_implicit_omit()
+{
+if (disableEnable().is_bound()) disableEnable().set_implicit_omit();
+if (reserved().is_bound()) reserved().set_implicit_omit();
+if (communicationMessages().is_bound()) communicationMessages().set_implicit_omit();
+}
+
+void CommunicationType::encode_text(Text_Buf& text_buf) const
+{
+field_disableEnable.encode_text(text_buf);
+field_reserved.encode_text(text_buf);
+field_communicationMessages.encode_text(text_buf);
+}
+
+void CommunicationType::decode_text(Text_Buf& text_buf)
+{
+field_disableEnable.decode_text(text_buf);
+field_reserved.decode_text(text_buf);
+field_communicationMessages.decode_text(text_buf);
+}
+
+void CommunicationType::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void CommunicationType::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int CommunicationType::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, CommunicationType_disableEnable_descr_.raw->forceomit);
+  decoded_field_length = field_disableEnable.RAW_decode(CommunicationType_disableEnable_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, CommunicationType_reserved_descr_.raw->forceomit);
+  decoded_field_length = field_reserved.RAW_decode(CommunicationType_reserved_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, CommunicationType_communicationMessages_descr_.raw->forceomit);
+  decoded_field_length = field_communicationMessages.RAW_decode(CommunicationType_communicationMessages_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 CommunicationType::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, CommunicationType_disableEnable_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, CommunicationType_reserved_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, CommunicationType_communicationMessages_descr_.raw);
+  encoded_length += field_disableEnable.RAW_encode(CommunicationType_disableEnable_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved.RAW_encode(CommunicationType_reserved_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_communicationMessages.RAW_encode(CommunicationType_communicationMessages_descr_, *myleaf.body.node.nodes[2]);
+  return myleaf.length = encoded_length;
+}
+
+struct CommunicationType_template::single_value_struct {
+e__DisableEnable_template field_disableEnable;
+BITSTRING_template field_reserved;
+e__CommunicationMessages_template field_communicationMessages;
+};
+
+void CommunicationType_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_disableEnable = ANY_VALUE;
+single_value->field_reserved = ANY_VALUE;
+single_value->field_communicationMessages = ANY_VALUE;
+}
+}
+}
+
+void CommunicationType_template::copy_value(const CommunicationType& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.disableEnable().is_bound()) {
+  single_value->field_disableEnable = other_value.disableEnable();
+} else {
+  single_value->field_disableEnable.clean_up();
+}
+if (other_value.reserved().is_bound()) {
+  single_value->field_reserved = other_value.reserved();
+} else {
+  single_value->field_reserved.clean_up();
+}
+if (other_value.communicationMessages().is_bound()) {
+  single_value->field_communicationMessages = other_value.communicationMessages();
+} else {
+  single_value->field_communicationMessages.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void CommunicationType_template::copy_template(const CommunicationType_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.disableEnable().get_selection()) {
+single_value->field_disableEnable = other_value.disableEnable();
+} else {
+single_value->field_disableEnable.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved().get_selection()) {
+single_value->field_reserved = other_value.reserved();
+} else {
+single_value->field_reserved.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.communicationMessages().get_selection()) {
+single_value->field_communicationMessages = other_value.communicationMessages();
+} else {
+single_value->field_communicationMessages.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new CommunicationType_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.CommunicationType.");
+break;
+}
+set_selection(other_value);
+}
+
+CommunicationType_template::CommunicationType_template()
+{
+}
+
+CommunicationType_template::CommunicationType_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+CommunicationType_template::CommunicationType_template(const CommunicationType& other_value)
+{
+copy_value(other_value);
+}
+
+CommunicationType_template::CommunicationType_template(const OPTIONAL<CommunicationType>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CommunicationType&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.CommunicationType from an unbound optional field.");
+}
+}
+
+CommunicationType_template::CommunicationType_template(const CommunicationType_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+CommunicationType_template::~CommunicationType_template()
+{
+clean_up();
+}
+
+CommunicationType_template& CommunicationType_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+CommunicationType_template& CommunicationType_template::operator=(const CommunicationType& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+CommunicationType_template& CommunicationType_template::operator=(const OPTIONAL<CommunicationType>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CommunicationType&)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 @UnifiedDiagnosticServices.CommunicationType.");
+}
+return *this;
+}
+
+CommunicationType_template& CommunicationType_template::operator=(const CommunicationType_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean CommunicationType_template::match(const CommunicationType& 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.disableEnable().is_bound()) return FALSE;
+if(!single_value->field_disableEnable.match(other_value.disableEnable(), legacy))return FALSE;
+if(!other_value.reserved().is_bound()) return FALSE;
+if(!single_value->field_reserved.match(other_value.reserved(), legacy))return FALSE;
+if(!other_value.communicationMessages().is_bound()) return FALSE;
+if(!single_value->field_communicationMessages.match(other_value.communicationMessages(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.CommunicationType.");
+}
+return FALSE;
+}
+
+boolean CommunicationType_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_disableEnable.is_bound()
+
+ ||single_value->field_reserved.is_bound()
+
+ ||single_value->field_communicationMessages.is_bound()
+;
+}
+
+boolean CommunicationType_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_disableEnable.is_value()
+ &&single_value->field_reserved.is_value()
+ &&single_value->field_communicationMessages.is_value();
+}
+
+void CommunicationType_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+CommunicationType CommunicationType_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 @UnifiedDiagnosticServices.CommunicationType.");
+CommunicationType ret_val;
+if (single_value->field_disableEnable.is_bound()) {
+ret_val.disableEnable() = single_value->field_disableEnable.valueof();
+}
+if (single_value->field_reserved.is_bound()) {
+ret_val.reserved() = single_value->field_reserved.valueof();
+}
+if (single_value->field_communicationMessages.is_bound()) {
+ret_val.communicationMessages() = single_value->field_communicationMessages.valueof();
+}
+return ret_val;
+}
+
+void CommunicationType_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.CommunicationType.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new CommunicationType_template[list_length];
+}
+
+CommunicationType_template& CommunicationType_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.CommunicationType.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.CommunicationType.");
+return value_list.list_value[list_index];
+}
+
+e__DisableEnable_template& CommunicationType_template::disableEnable()
+{
+set_specific();
+return single_value->field_disableEnable;
+}
+
+const e__DisableEnable_template& CommunicationType_template::disableEnable() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field disableEnable of a non-specific template of type @UnifiedDiagnosticServices.CommunicationType.");
+return single_value->field_disableEnable;
+}
+
+BITSTRING_template& CommunicationType_template::reserved()
+{
+set_specific();
+return single_value->field_reserved;
+}
+
+const BITSTRING_template& CommunicationType_template::reserved() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved of a non-specific template of type @UnifiedDiagnosticServices.CommunicationType.");
+return single_value->field_reserved;
+}
+
+e__CommunicationMessages_template& CommunicationType_template::communicationMessages()
+{
+set_specific();
+return single_value->field_communicationMessages;
+}
+
+const e__CommunicationMessages_template& CommunicationType_template::communicationMessages() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field communicationMessages of a non-specific template of type @UnifiedDiagnosticServices.CommunicationType.");
+return single_value->field_communicationMessages;
+}
+
+int CommunicationType_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.CommunicationType 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 @UnifiedDiagnosticServices.CommunicationType 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 @UnifiedDiagnosticServices.CommunicationType containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.CommunicationType containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.CommunicationType containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.CommunicationType containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.CommunicationType.");
+  }
+  return 0;
+}
+
+void CommunicationType_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ disableEnable := ");
+single_value->field_disableEnable.log();
+TTCN_Logger::log_event_str(", reserved := ");
+single_value->field_reserved.log();
+TTCN_Logger::log_event_str(", communicationMessages := ");
+single_value->field_communicationMessages.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void CommunicationType_template::log_match(const CommunicationType& 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_disableEnable.match(match_value.disableEnable(), legacy)){
+TTCN_Logger::log_logmatch_info(".disableEnable");
+single_value->field_disableEnable.log_match(match_value.disableEnable(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved.match(match_value.reserved(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved");
+single_value->field_reserved.log_match(match_value.reserved(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_communicationMessages.match(match_value.communicationMessages(), legacy)){
+TTCN_Logger::log_logmatch_info(".communicationMessages");
+single_value->field_communicationMessages.log_match(match_value.communicationMessages(), 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("{ disableEnable := ");
+single_value->field_disableEnable.log_match(match_value.disableEnable(), legacy);
+TTCN_Logger::log_event_str(", reserved := ");
+single_value->field_reserved.log_match(match_value.reserved(), legacy);
+TTCN_Logger::log_event_str(", communicationMessages := ");
+single_value->field_communicationMessages.log_match(match_value.communicationMessages(), 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 CommunicationType_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_disableEnable.encode_text(text_buf);
+single_value->field_reserved.encode_text(text_buf);
+single_value->field_communicationMessages.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 @UnifiedDiagnosticServices.CommunicationType.");
+}
+}
+
+void CommunicationType_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_disableEnable.decode_text(text_buf);
+single_value->field_reserved.decode_text(text_buf);
+single_value->field_communicationMessages.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 CommunicationType_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 @UnifiedDiagnosticServices.CommunicationType.");
+}
+}
+
+void CommunicationType_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: {
+    CommunicationType_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @UnifiedDiagnosticServices.CommunicationType 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) disableEnable().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) communicationMessages().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(), "disableEnable")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          disableEnable().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(), "reserved")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved().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(), "communicationMessages")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          communicationMessages().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 @UnifiedDiagnosticServices.CommunicationType: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.CommunicationType");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void CommunicationType_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_disableEnable.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.CommunicationType");
+single_value->field_reserved.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.CommunicationType");
+single_value->field_communicationMessages.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.CommunicationType");
+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 : "@UnifiedDiagnosticServices.CommunicationType");
+}
+
+boolean CommunicationType_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean CommunicationType_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+EnableRxAndTxRequest::EnableRxAndTxRequest()
+{
+}
+
+EnableRxAndTxRequest::EnableRxAndTxRequest(const SuppressPosRspMsgIndicationBitType& par_suppressPosRspMsgIndicationBit,
+    const BITSTRING& par_controlType,
+    const CommunicationType& par_communicationType)
+  :   field_suppressPosRspMsgIndicationBit(par_suppressPosRspMsgIndicationBit),
+  field_controlType(par_controlType),
+  field_communicationType(par_communicationType)
+{
+}
+
+EnableRxAndTxRequest::EnableRxAndTxRequest(const EnableRxAndTxRequest& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.EnableRxAndTxRequest.");
+if (other_value.suppressPosRspMsgIndicationBit().is_bound()) field_suppressPosRspMsgIndicationBit = other_value.suppressPosRspMsgIndicationBit();
+else field_suppressPosRspMsgIndicationBit.clean_up();
+if (other_value.controlType().is_bound()) field_controlType = other_value.controlType();
+else field_controlType.clean_up();
+if (other_value.communicationType().is_bound()) field_communicationType = other_value.communicationType();
+else field_communicationType.clean_up();
+}
+
+void EnableRxAndTxRequest::clean_up()
+{
+field_suppressPosRspMsgIndicationBit.clean_up();
+field_controlType.clean_up();
+field_communicationType.clean_up();
+}
+
+const TTCN_Typedescriptor_t* EnableRxAndTxRequest::get_descriptor() const { return &EnableRxAndTxRequest_descr_; }
+EnableRxAndTxRequest& EnableRxAndTxRequest::operator=(const EnableRxAndTxRequest& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.EnableRxAndTxRequest.");
+  if (other_value.suppressPosRspMsgIndicationBit().is_bound()) field_suppressPosRspMsgIndicationBit = other_value.suppressPosRspMsgIndicationBit();
+  else field_suppressPosRspMsgIndicationBit.clean_up();
+  if (other_value.controlType().is_bound()) field_controlType = other_value.controlType();
+  else field_controlType.clean_up();
+  if (other_value.communicationType().is_bound()) field_communicationType = other_value.communicationType();
+  else field_communicationType.clean_up();
+}
+return *this;
+}
+
+boolean EnableRxAndTxRequest::operator==(const EnableRxAndTxRequest& other_value) const
+{
+return field_suppressPosRspMsgIndicationBit==other_value.field_suppressPosRspMsgIndicationBit
+  && field_controlType==other_value.field_controlType
+  && field_communicationType==other_value.field_communicationType;
+}
+
+boolean EnableRxAndTxRequest::is_bound() const
+{
+return (field_suppressPosRspMsgIndicationBit.is_bound())
+  || (field_controlType.is_bound())
+  || (field_communicationType.is_bound());
+}
+boolean EnableRxAndTxRequest::is_value() const
+{
+return field_suppressPosRspMsgIndicationBit.is_value()
+  && field_controlType.is_value()
+  && field_communicationType.is_value();
+}
+void EnableRxAndTxRequest::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ suppressPosRspMsgIndicationBit := ");
+field_suppressPosRspMsgIndicationBit.log();
+TTCN_Logger::log_event_str(", controlType := ");
+field_controlType.log();
+TTCN_Logger::log_event_str(", communicationType := ");
+field_communicationType.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void EnableRxAndTxRequest::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 @UnifiedDiagnosticServices.EnableRxAndTxRequest 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) suppressPosRspMsgIndicationBit().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) controlType().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) communicationType().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(), "suppressPosRspMsgIndicationBit")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          suppressPosRspMsgIndicationBit().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(), "controlType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          controlType().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(), "communicationType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          communicationType().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 @UnifiedDiagnosticServices.EnableRxAndTxRequest: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.EnableRxAndTxRequest");
+  }
+}
+
+void EnableRxAndTxRequest::set_implicit_omit()
+{
+if (suppressPosRspMsgIndicationBit().is_bound()) suppressPosRspMsgIndicationBit().set_implicit_omit();
+if (controlType().is_bound()) controlType().set_implicit_omit();
+if (communicationType().is_bound()) communicationType().set_implicit_omit();
+}
+
+void EnableRxAndTxRequest::encode_text(Text_Buf& text_buf) const
+{
+field_suppressPosRspMsgIndicationBit.encode_text(text_buf);
+field_controlType.encode_text(text_buf);
+field_communicationType.encode_text(text_buf);
+}
+
+void EnableRxAndTxRequest::decode_text(Text_Buf& text_buf)
+{
+field_suppressPosRspMsgIndicationBit.decode_text(text_buf);
+field_controlType.decode_text(text_buf);
+field_communicationType.decode_text(text_buf);
+}
+
+void EnableRxAndTxRequest::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void EnableRxAndTxRequest::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int EnableRxAndTxRequest::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, EnableRxAndTxRequest_suppressPosRspMsgIndicationBit_descr_.raw->forceomit);
+  decoded_field_length = field_suppressPosRspMsgIndicationBit.RAW_decode(EnableRxAndTxRequest_suppressPosRspMsgIndicationBit_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, EnableRxAndTxRequest_controlType_descr_.raw->forceomit);
+  decoded_field_length = field_controlType.RAW_decode(EnableRxAndTxRequest_controlType_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, EnableRxAndTxRequest_communicationType_descr_.raw->forceomit);
+  decoded_field_length = field_communicationType.RAW_decode(EnableRxAndTxRequest_communicationType_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 EnableRxAndTxRequest::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, EnableRxAndTxRequest_suppressPosRspMsgIndicationBit_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, EnableRxAndTxRequest_controlType_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, EnableRxAndTxRequest_communicationType_descr_.raw);
+  encoded_length += field_suppressPosRspMsgIndicationBit.RAW_encode(EnableRxAndTxRequest_suppressPosRspMsgIndicationBit_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_controlType.RAW_encode(EnableRxAndTxRequest_controlType_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_communicationType.RAW_encode(EnableRxAndTxRequest_communicationType_descr_, *myleaf.body.node.nodes[2]);
+  return myleaf.length = encoded_length;
+}
+
+struct EnableRxAndTxRequest_template::single_value_struct {
+SuppressPosRspMsgIndicationBitType_template field_suppressPosRspMsgIndicationBit;
+BITSTRING_template field_controlType;
+CommunicationType_template field_communicationType;
+};
+
+void EnableRxAndTxRequest_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_suppressPosRspMsgIndicationBit = ANY_VALUE;
+single_value->field_controlType = ANY_VALUE;
+single_value->field_communicationType = ANY_VALUE;
+}
+}
+}
+
+void EnableRxAndTxRequest_template::copy_value(const EnableRxAndTxRequest& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.suppressPosRspMsgIndicationBit().is_bound()) {
+  single_value->field_suppressPosRspMsgIndicationBit = other_value.suppressPosRspMsgIndicationBit();
+} else {
+  single_value->field_suppressPosRspMsgIndicationBit.clean_up();
+}
+if (other_value.controlType().is_bound()) {
+  single_value->field_controlType = other_value.controlType();
+} else {
+  single_value->field_controlType.clean_up();
+}
+if (other_value.communicationType().is_bound()) {
+  single_value->field_communicationType = other_value.communicationType();
+} else {
+  single_value->field_communicationType.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void EnableRxAndTxRequest_template::copy_template(const EnableRxAndTxRequest_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.suppressPosRspMsgIndicationBit().get_selection()) {
+single_value->field_suppressPosRspMsgIndicationBit = other_value.suppressPosRspMsgIndicationBit();
+} else {
+single_value->field_suppressPosRspMsgIndicationBit.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.controlType().get_selection()) {
+single_value->field_controlType = other_value.controlType();
+} else {
+single_value->field_controlType.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.communicationType().get_selection()) {
+single_value->field_communicationType = other_value.communicationType();
+} else {
+single_value->field_communicationType.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new EnableRxAndTxRequest_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.EnableRxAndTxRequest.");
+break;
+}
+set_selection(other_value);
+}
+
+EnableRxAndTxRequest_template::EnableRxAndTxRequest_template()
+{
+}
+
+EnableRxAndTxRequest_template::EnableRxAndTxRequest_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+EnableRxAndTxRequest_template::EnableRxAndTxRequest_template(const EnableRxAndTxRequest& other_value)
+{
+copy_value(other_value);
+}
+
+EnableRxAndTxRequest_template::EnableRxAndTxRequest_template(const OPTIONAL<EnableRxAndTxRequest>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const EnableRxAndTxRequest&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.EnableRxAndTxRequest from an unbound optional field.");
+}
+}
+
+EnableRxAndTxRequest_template::EnableRxAndTxRequest_template(const EnableRxAndTxRequest_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+EnableRxAndTxRequest_template::~EnableRxAndTxRequest_template()
+{
+clean_up();
+}
+
+EnableRxAndTxRequest_template& EnableRxAndTxRequest_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+EnableRxAndTxRequest_template& EnableRxAndTxRequest_template::operator=(const EnableRxAndTxRequest& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+EnableRxAndTxRequest_template& EnableRxAndTxRequest_template::operator=(const OPTIONAL<EnableRxAndTxRequest>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const EnableRxAndTxRequest&)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 @UnifiedDiagnosticServices.EnableRxAndTxRequest.");
+}
+return *this;
+}
+
+EnableRxAndTxRequest_template& EnableRxAndTxRequest_template::operator=(const EnableRxAndTxRequest_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean EnableRxAndTxRequest_template::match(const EnableRxAndTxRequest& 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.suppressPosRspMsgIndicationBit().is_bound()) return FALSE;
+if(!single_value->field_suppressPosRspMsgIndicationBit.match(other_value.suppressPosRspMsgIndicationBit(), legacy))return FALSE;
+if(!other_value.controlType().is_bound()) return FALSE;
+if(!single_value->field_controlType.match(other_value.controlType(), legacy))return FALSE;
+if(!other_value.communicationType().is_bound()) return FALSE;
+if(!single_value->field_communicationType.match(other_value.communicationType(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.EnableRxAndTxRequest.");
+}
+return FALSE;
+}
+
+boolean EnableRxAndTxRequest_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_suppressPosRspMsgIndicationBit.is_bound()
+
+ ||single_value->field_controlType.is_bound()
+
+ ||single_value->field_communicationType.is_bound()
+;
+}
+
+boolean EnableRxAndTxRequest_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_suppressPosRspMsgIndicationBit.is_value()
+ &&single_value->field_controlType.is_value()
+ &&single_value->field_communicationType.is_value();
+}
+
+void EnableRxAndTxRequest_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+EnableRxAndTxRequest EnableRxAndTxRequest_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 @UnifiedDiagnosticServices.EnableRxAndTxRequest.");
+EnableRxAndTxRequest ret_val;
+if (single_value->field_suppressPosRspMsgIndicationBit.is_bound()) {
+ret_val.suppressPosRspMsgIndicationBit() = single_value->field_suppressPosRspMsgIndicationBit.valueof();
+}
+if (single_value->field_controlType.is_bound()) {
+ret_val.controlType() = single_value->field_controlType.valueof();
+}
+if (single_value->field_communicationType.is_bound()) {
+ret_val.communicationType() = single_value->field_communicationType.valueof();
+}
+return ret_val;
+}
+
+void EnableRxAndTxRequest_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.EnableRxAndTxRequest.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new EnableRxAndTxRequest_template[list_length];
+}
+
+EnableRxAndTxRequest_template& EnableRxAndTxRequest_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.EnableRxAndTxRequest.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.EnableRxAndTxRequest.");
+return value_list.list_value[list_index];
+}
+
+SuppressPosRspMsgIndicationBitType_template& EnableRxAndTxRequest_template::suppressPosRspMsgIndicationBit()
+{
+set_specific();
+return single_value->field_suppressPosRspMsgIndicationBit;
+}
+
+const SuppressPosRspMsgIndicationBitType_template& EnableRxAndTxRequest_template::suppressPosRspMsgIndicationBit() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field suppressPosRspMsgIndicationBit of a non-specific template of type @UnifiedDiagnosticServices.EnableRxAndTxRequest.");
+return single_value->field_suppressPosRspMsgIndicationBit;
+}
+
+BITSTRING_template& EnableRxAndTxRequest_template::controlType()
+{
+set_specific();
+return single_value->field_controlType;
+}
+
+const BITSTRING_template& EnableRxAndTxRequest_template::controlType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field controlType of a non-specific template of type @UnifiedDiagnosticServices.EnableRxAndTxRequest.");
+return single_value->field_controlType;
+}
+
+CommunicationType_template& EnableRxAndTxRequest_template::communicationType()
+{
+set_specific();
+return single_value->field_communicationType;
+}
+
+const CommunicationType_template& EnableRxAndTxRequest_template::communicationType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field communicationType of a non-specific template of type @UnifiedDiagnosticServices.EnableRxAndTxRequest.");
+return single_value->field_communicationType;
+}
+
+int EnableRxAndTxRequest_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.EnableRxAndTxRequest 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 @UnifiedDiagnosticServices.EnableRxAndTxRequest 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 @UnifiedDiagnosticServices.EnableRxAndTxRequest containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.EnableRxAndTxRequest containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.EnableRxAndTxRequest containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.EnableRxAndTxRequest containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.EnableRxAndTxRequest.");
+  }
+  return 0;
+}
+
+void EnableRxAndTxRequest_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ suppressPosRspMsgIndicationBit := ");
+single_value->field_suppressPosRspMsgIndicationBit.log();
+TTCN_Logger::log_event_str(", controlType := ");
+single_value->field_controlType.log();
+TTCN_Logger::log_event_str(", communicationType := ");
+single_value->field_communicationType.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void EnableRxAndTxRequest_template::log_match(const EnableRxAndTxRequest& 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_suppressPosRspMsgIndicationBit.match(match_value.suppressPosRspMsgIndicationBit(), legacy)){
+TTCN_Logger::log_logmatch_info(".suppressPosRspMsgIndicationBit");
+single_value->field_suppressPosRspMsgIndicationBit.log_match(match_value.suppressPosRspMsgIndicationBit(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_controlType.match(match_value.controlType(), legacy)){
+TTCN_Logger::log_logmatch_info(".controlType");
+single_value->field_controlType.log_match(match_value.controlType(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_communicationType.match(match_value.communicationType(), legacy)){
+TTCN_Logger::log_logmatch_info(".communicationType");
+single_value->field_communicationType.log_match(match_value.communicationType(), 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("{ suppressPosRspMsgIndicationBit := ");
+single_value->field_suppressPosRspMsgIndicationBit.log_match(match_value.suppressPosRspMsgIndicationBit(), legacy);
+TTCN_Logger::log_event_str(", controlType := ");
+single_value->field_controlType.log_match(match_value.controlType(), legacy);
+TTCN_Logger::log_event_str(", communicationType := ");
+single_value->field_communicationType.log_match(match_value.communicationType(), 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 EnableRxAndTxRequest_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_suppressPosRspMsgIndicationBit.encode_text(text_buf);
+single_value->field_controlType.encode_text(text_buf);
+single_value->field_communicationType.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 @UnifiedDiagnosticServices.EnableRxAndTxRequest.");
+}
+}
+
+void EnableRxAndTxRequest_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_suppressPosRspMsgIndicationBit.decode_text(text_buf);
+single_value->field_controlType.decode_text(text_buf);
+single_value->field_communicationType.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 EnableRxAndTxRequest_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 @UnifiedDiagnosticServices.EnableRxAndTxRequest.");
+}
+}
+
+void EnableRxAndTxRequest_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: {
+    EnableRxAndTxRequest_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @UnifiedDiagnosticServices.EnableRxAndTxRequest 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) suppressPosRspMsgIndicationBit().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) controlType().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) communicationType().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(), "suppressPosRspMsgIndicationBit")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          suppressPosRspMsgIndicationBit().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(), "controlType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          controlType().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(), "communicationType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          communicationType().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 @UnifiedDiagnosticServices.EnableRxAndTxRequest: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.EnableRxAndTxRequest");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void EnableRxAndTxRequest_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_suppressPosRspMsgIndicationBit.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.EnableRxAndTxRequest");
+single_value->field_controlType.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.EnableRxAndTxRequest");
+single_value->field_communicationType.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.EnableRxAndTxRequest");
+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 : "@UnifiedDiagnosticServices.EnableRxAndTxRequest");
+}
+
+boolean EnableRxAndTxRequest_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean EnableRxAndTxRequest_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+EnableRxAndDisableTxRequest::EnableRxAndDisableTxRequest()
+{
+}
+
+EnableRxAndDisableTxRequest::EnableRxAndDisableTxRequest(const SuppressPosRspMsgIndicationBitType& par_suppressPosRspMsgIndicationBit,
+    const BITSTRING& par_controlType,
+    const CommunicationType& par_communicationType)
+  :   field_suppressPosRspMsgIndicationBit(par_suppressPosRspMsgIndicationBit),
+  field_controlType(par_controlType),
+  field_communicationType(par_communicationType)
+{
+}
+
+EnableRxAndDisableTxRequest::EnableRxAndDisableTxRequest(const EnableRxAndDisableTxRequest& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.EnableRxAndDisableTxRequest.");
+if (other_value.suppressPosRspMsgIndicationBit().is_bound()) field_suppressPosRspMsgIndicationBit = other_value.suppressPosRspMsgIndicationBit();
+else field_suppressPosRspMsgIndicationBit.clean_up();
+if (other_value.controlType().is_bound()) field_controlType = other_value.controlType();
+else field_controlType.clean_up();
+if (other_value.communicationType().is_bound()) field_communicationType = other_value.communicationType();
+else field_communicationType.clean_up();
+}
+
+void EnableRxAndDisableTxRequest::clean_up()
+{
+field_suppressPosRspMsgIndicationBit.clean_up();
+field_controlType.clean_up();
+field_communicationType.clean_up();
+}
+
+const TTCN_Typedescriptor_t* EnableRxAndDisableTxRequest::get_descriptor() const { return &EnableRxAndDisableTxRequest_descr_; }
+EnableRxAndDisableTxRequest& EnableRxAndDisableTxRequest::operator=(const EnableRxAndDisableTxRequest& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.EnableRxAndDisableTxRequest.");
+  if (other_value.suppressPosRspMsgIndicationBit().is_bound()) field_suppressPosRspMsgIndicationBit = other_value.suppressPosRspMsgIndicationBit();
+  else field_suppressPosRspMsgIndicationBit.clean_up();
+  if (other_value.controlType().is_bound()) field_controlType = other_value.controlType();
+  else field_controlType.clean_up();
+  if (other_value.communicationType().is_bound()) field_communicationType = other_value.communicationType();
+  else field_communicationType.clean_up();
+}
+return *this;
+}
+
+boolean EnableRxAndDisableTxRequest::operator==(const EnableRxAndDisableTxRequest& other_value) const
+{
+return field_suppressPosRspMsgIndicationBit==other_value.field_suppressPosRspMsgIndicationBit
+  && field_controlType==other_value.field_controlType
+  && field_communicationType==other_value.field_communicationType;
+}
+
+boolean EnableRxAndDisableTxRequest::is_bound() const
+{
+return (field_suppressPosRspMsgIndicationBit.is_bound())
+  || (field_controlType.is_bound())
+  || (field_communicationType.is_bound());
+}
+boolean EnableRxAndDisableTxRequest::is_value() const
+{
+return field_suppressPosRspMsgIndicationBit.is_value()
+  && field_controlType.is_value()
+  && field_communicationType.is_value();
+}
+void EnableRxAndDisableTxRequest::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ suppressPosRspMsgIndicationBit := ");
+field_suppressPosRspMsgIndicationBit.log();
+TTCN_Logger::log_event_str(", controlType := ");
+field_controlType.log();
+TTCN_Logger::log_event_str(", communicationType := ");
+field_communicationType.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void EnableRxAndDisableTxRequest::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 @UnifiedDiagnosticServices.EnableRxAndDisableTxRequest 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) suppressPosRspMsgIndicationBit().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) controlType().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) communicationType().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(), "suppressPosRspMsgIndicationBit")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          suppressPosRspMsgIndicationBit().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(), "controlType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          controlType().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(), "communicationType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          communicationType().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 @UnifiedDiagnosticServices.EnableRxAndDisableTxRequest: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.EnableRxAndDisableTxRequest");
+  }
+}
+
+void EnableRxAndDisableTxRequest::set_implicit_omit()
+{
+if (suppressPosRspMsgIndicationBit().is_bound()) suppressPosRspMsgIndicationBit().set_implicit_omit();
+if (controlType().is_bound()) controlType().set_implicit_omit();
+if (communicationType().is_bound()) communicationType().set_implicit_omit();
+}
+
+void EnableRxAndDisableTxRequest::encode_text(Text_Buf& text_buf) const
+{
+field_suppressPosRspMsgIndicationBit.encode_text(text_buf);
+field_controlType.encode_text(text_buf);
+field_communicationType.encode_text(text_buf);
+}
+
+void EnableRxAndDisableTxRequest::decode_text(Text_Buf& text_buf)
+{
+field_suppressPosRspMsgIndicationBit.decode_text(text_buf);
+field_controlType.decode_text(text_buf);
+field_communicationType.decode_text(text_buf);
+}
+
+void EnableRxAndDisableTxRequest::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void EnableRxAndDisableTxRequest::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int EnableRxAndDisableTxRequest::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, EnableRxAndDisableTxRequest_suppressPosRspMsgIndicationBit_descr_.raw->forceomit);
+  decoded_field_length = field_suppressPosRspMsgIndicationBit.RAW_decode(EnableRxAndDisableTxRequest_suppressPosRspMsgIndicationBit_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, EnableRxAndDisableTxRequest_controlType_descr_.raw->forceomit);
+  decoded_field_length = field_controlType.RAW_decode(EnableRxAndDisableTxRequest_controlType_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, EnableRxAndDisableTxRequest_communicationType_descr_.raw->forceomit);
+  decoded_field_length = field_communicationType.RAW_decode(EnableRxAndDisableTxRequest_communicationType_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 EnableRxAndDisableTxRequest::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, EnableRxAndDisableTxRequest_suppressPosRspMsgIndicationBit_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, EnableRxAndDisableTxRequest_controlType_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, EnableRxAndDisableTxRequest_communicationType_descr_.raw);
+  encoded_length += field_suppressPosRspMsgIndicationBit.RAW_encode(EnableRxAndDisableTxRequest_suppressPosRspMsgIndicationBit_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_controlType.RAW_encode(EnableRxAndDisableTxRequest_controlType_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_communicationType.RAW_encode(EnableRxAndDisableTxRequest_communicationType_descr_, *myleaf.body.node.nodes[2]);
+  return myleaf.length = encoded_length;
+}
+
+struct EnableRxAndDisableTxRequest_template::single_value_struct {
+SuppressPosRspMsgIndicationBitType_template field_suppressPosRspMsgIndicationBit;
+BITSTRING_template field_controlType;
+CommunicationType_template field_communicationType;
+};
+
+void EnableRxAndDisableTxRequest_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_suppressPosRspMsgIndicationBit = ANY_VALUE;
+single_value->field_controlType = ANY_VALUE;
+single_value->field_communicationType = ANY_VALUE;
+}
+}
+}
+
+void EnableRxAndDisableTxRequest_template::copy_value(const EnableRxAndDisableTxRequest& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.suppressPosRspMsgIndicationBit().is_bound()) {
+  single_value->field_suppressPosRspMsgIndicationBit = other_value.suppressPosRspMsgIndicationBit();
+} else {
+  single_value->field_suppressPosRspMsgIndicationBit.clean_up();
+}
+if (other_value.controlType().is_bound()) {
+  single_value->field_controlType = other_value.controlType();
+} else {
+  single_value->field_controlType.clean_up();
+}
+if (other_value.communicationType().is_bound()) {
+  single_value->field_communicationType = other_value.communicationType();
+} else {
+  single_value->field_communicationType.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void EnableRxAndDisableTxRequest_template::copy_template(const EnableRxAndDisableTxRequest_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.suppressPosRspMsgIndicationBit().get_selection()) {
+single_value->field_suppressPosRspMsgIndicationBit = other_value.suppressPosRspMsgIndicationBit();
+} else {
+single_value->field_suppressPosRspMsgIndicationBit.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.controlType().get_selection()) {
+single_value->field_controlType = other_value.controlType();
+} else {
+single_value->field_controlType.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.communicationType().get_selection()) {
+single_value->field_communicationType = other_value.communicationType();
+} else {
+single_value->field_communicationType.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new EnableRxAndDisableTxRequest_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.EnableRxAndDisableTxRequest.");
+break;
+}
+set_selection(other_value);
+}
+
+EnableRxAndDisableTxRequest_template::EnableRxAndDisableTxRequest_template()
+{
+}
+
+EnableRxAndDisableTxRequest_template::EnableRxAndDisableTxRequest_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+EnableRxAndDisableTxRequest_template::EnableRxAndDisableTxRequest_template(const EnableRxAndDisableTxRequest& other_value)
+{
+copy_value(other_value);
+}
+
+EnableRxAndDisableTxRequest_template::EnableRxAndDisableTxRequest_template(const OPTIONAL<EnableRxAndDisableTxRequest>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const EnableRxAndDisableTxRequest&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.EnableRxAndDisableTxRequest from an unbound optional field.");
+}
+}
+
+EnableRxAndDisableTxRequest_template::EnableRxAndDisableTxRequest_template(const EnableRxAndDisableTxRequest_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+EnableRxAndDisableTxRequest_template::~EnableRxAndDisableTxRequest_template()
+{
+clean_up();
+}
+
+EnableRxAndDisableTxRequest_template& EnableRxAndDisableTxRequest_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+EnableRxAndDisableTxRequest_template& EnableRxAndDisableTxRequest_template::operator=(const EnableRxAndDisableTxRequest& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+EnableRxAndDisableTxRequest_template& EnableRxAndDisableTxRequest_template::operator=(const OPTIONAL<EnableRxAndDisableTxRequest>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const EnableRxAndDisableTxRequest&)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 @UnifiedDiagnosticServices.EnableRxAndDisableTxRequest.");
+}
+return *this;
+}
+
+EnableRxAndDisableTxRequest_template& EnableRxAndDisableTxRequest_template::operator=(const EnableRxAndDisableTxRequest_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean EnableRxAndDisableTxRequest_template::match(const EnableRxAndDisableTxRequest& 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.suppressPosRspMsgIndicationBit().is_bound()) return FALSE;
+if(!single_value->field_suppressPosRspMsgIndicationBit.match(other_value.suppressPosRspMsgIndicationBit(), legacy))return FALSE;
+if(!other_value.controlType().is_bound()) return FALSE;
+if(!single_value->field_controlType.match(other_value.controlType(), legacy))return FALSE;
+if(!other_value.communicationType().is_bound()) return FALSE;
+if(!single_value->field_communicationType.match(other_value.communicationType(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.EnableRxAndDisableTxRequest.");
+}
+return FALSE;
+}
+
+boolean EnableRxAndDisableTxRequest_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_suppressPosRspMsgIndicationBit.is_bound()
+
+ ||single_value->field_controlType.is_bound()
+
+ ||single_value->field_communicationType.is_bound()
+;
+}
+
+boolean EnableRxAndDisableTxRequest_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_suppressPosRspMsgIndicationBit.is_value()
+ &&single_value->field_controlType.is_value()
+ &&single_value->field_communicationType.is_value();
+}
+
+void EnableRxAndDisableTxRequest_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+EnableRxAndDisableTxRequest EnableRxAndDisableTxRequest_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 @UnifiedDiagnosticServices.EnableRxAndDisableTxRequest.");
+EnableRxAndDisableTxRequest ret_val;
+if (single_value->field_suppressPosRspMsgIndicationBit.is_bound()) {
+ret_val.suppressPosRspMsgIndicationBit() = single_value->field_suppressPosRspMsgIndicationBit.valueof();
+}
+if (single_value->field_controlType.is_bound()) {
+ret_val.controlType() = single_value->field_controlType.valueof();
+}
+if (single_value->field_communicationType.is_bound()) {
+ret_val.communicationType() = single_value->field_communicationType.valueof();
+}
+return ret_val;
+}
+
+void EnableRxAndDisableTxRequest_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.EnableRxAndDisableTxRequest.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new EnableRxAndDisableTxRequest_template[list_length];
+}
+
+EnableRxAndDisableTxRequest_template& EnableRxAndDisableTxRequest_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.EnableRxAndDisableTxRequest.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.EnableRxAndDisableTxRequest.");
+return value_list.list_value[list_index];
+}
+
+SuppressPosRspMsgIndicationBitType_template& EnableRxAndDisableTxRequest_template::suppressPosRspMsgIndicationBit()
+{
+set_specific();
+return single_value->field_suppressPosRspMsgIndicationBit;
+}
+
+const SuppressPosRspMsgIndicationBitType_template& EnableRxAndDisableTxRequest_template::suppressPosRspMsgIndicationBit() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field suppressPosRspMsgIndicationBit of a non-specific template of type @UnifiedDiagnosticServices.EnableRxAndDisableTxRequest.");
+return single_value->field_suppressPosRspMsgIndicationBit;
+}
+
+BITSTRING_template& EnableRxAndDisableTxRequest_template::controlType()
+{
+set_specific();
+return single_value->field_controlType;
+}
+
+const BITSTRING_template& EnableRxAndDisableTxRequest_template::controlType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field controlType of a non-specific template of type @UnifiedDiagnosticServices.EnableRxAndDisableTxRequest.");
+return single_value->field_controlType;
+}
+
+CommunicationType_template& EnableRxAndDisableTxRequest_template::communicationType()
+{
+set_specific();
+return single_value->field_communicationType;
+}
+
+const CommunicationType_template& EnableRxAndDisableTxRequest_template::communicationType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field communicationType of a non-specific template of type @UnifiedDiagnosticServices.EnableRxAndDisableTxRequest.");
+return single_value->field_communicationType;
+}
+
+int EnableRxAndDisableTxRequest_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.EnableRxAndDisableTxRequest 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 @UnifiedDiagnosticServices.EnableRxAndDisableTxRequest 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 @UnifiedDiagnosticServices.EnableRxAndDisableTxRequest containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.EnableRxAndDisableTxRequest containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.EnableRxAndDisableTxRequest containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.EnableRxAndDisableTxRequest containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.EnableRxAndDisableTxRequest.");
+  }
+  return 0;
+}
+
+void EnableRxAndDisableTxRequest_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ suppressPosRspMsgIndicationBit := ");
+single_value->field_suppressPosRspMsgIndicationBit.log();
+TTCN_Logger::log_event_str(", controlType := ");
+single_value->field_controlType.log();
+TTCN_Logger::log_event_str(", communicationType := ");
+single_value->field_communicationType.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void EnableRxAndDisableTxRequest_template::log_match(const EnableRxAndDisableTxRequest& 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_suppressPosRspMsgIndicationBit.match(match_value.suppressPosRspMsgIndicationBit(), legacy)){
+TTCN_Logger::log_logmatch_info(".suppressPosRspMsgIndicationBit");
+single_value->field_suppressPosRspMsgIndicationBit.log_match(match_value.suppressPosRspMsgIndicationBit(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_controlType.match(match_value.controlType(), legacy)){
+TTCN_Logger::log_logmatch_info(".controlType");
+single_value->field_controlType.log_match(match_value.controlType(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_communicationType.match(match_value.communicationType(), legacy)){
+TTCN_Logger::log_logmatch_info(".communicationType");
+single_value->field_communicationType.log_match(match_value.communicationType(), 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("{ suppressPosRspMsgIndicationBit := ");
+single_value->field_suppressPosRspMsgIndicationBit.log_match(match_value.suppressPosRspMsgIndicationBit(), legacy);
+TTCN_Logger::log_event_str(", controlType := ");
+single_value->field_controlType.log_match(match_value.controlType(), legacy);
+TTCN_Logger::log_event_str(", communicationType := ");
+single_value->field_communicationType.log_match(match_value.communicationType(), 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 EnableRxAndDisableTxRequest_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_suppressPosRspMsgIndicationBit.encode_text(text_buf);
+single_value->field_controlType.encode_text(text_buf);
+single_value->field_communicationType.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 @UnifiedDiagnosticServices.EnableRxAndDisableTxRequest.");
+}
+}
+
+void EnableRxAndDisableTxRequest_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_suppressPosRspMsgIndicationBit.decode_text(text_buf);
+single_value->field_controlType.decode_text(text_buf);
+single_value->field_communicationType.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 EnableRxAndDisableTxRequest_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 @UnifiedDiagnosticServices.EnableRxAndDisableTxRequest.");
+}
+}
+
+void EnableRxAndDisableTxRequest_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: {
+    EnableRxAndDisableTxRequest_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @UnifiedDiagnosticServices.EnableRxAndDisableTxRequest 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) suppressPosRspMsgIndicationBit().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) controlType().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) communicationType().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(), "suppressPosRspMsgIndicationBit")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          suppressPosRspMsgIndicationBit().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(), "controlType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          controlType().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(), "communicationType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          communicationType().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 @UnifiedDiagnosticServices.EnableRxAndDisableTxRequest: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.EnableRxAndDisableTxRequest");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void EnableRxAndDisableTxRequest_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_suppressPosRspMsgIndicationBit.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.EnableRxAndDisableTxRequest");
+single_value->field_controlType.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.EnableRxAndDisableTxRequest");
+single_value->field_communicationType.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.EnableRxAndDisableTxRequest");
+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 : "@UnifiedDiagnosticServices.EnableRxAndDisableTxRequest");
+}
+
+boolean EnableRxAndDisableTxRequest_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean EnableRxAndDisableTxRequest_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+DisableRxAndEnableTxRequest::DisableRxAndEnableTxRequest()
+{
+}
+
+DisableRxAndEnableTxRequest::DisableRxAndEnableTxRequest(const SuppressPosRspMsgIndicationBitType& par_suppressPosRspMsgIndicationBit,
+    const BITSTRING& par_controlType,
+    const CommunicationType& par_communicationType)
+  :   field_suppressPosRspMsgIndicationBit(par_suppressPosRspMsgIndicationBit),
+  field_controlType(par_controlType),
+  field_communicationType(par_communicationType)
+{
+}
+
+DisableRxAndEnableTxRequest::DisableRxAndEnableTxRequest(const DisableRxAndEnableTxRequest& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.DisableRxAndEnableTxRequest.");
+if (other_value.suppressPosRspMsgIndicationBit().is_bound()) field_suppressPosRspMsgIndicationBit = other_value.suppressPosRspMsgIndicationBit();
+else field_suppressPosRspMsgIndicationBit.clean_up();
+if (other_value.controlType().is_bound()) field_controlType = other_value.controlType();
+else field_controlType.clean_up();
+if (other_value.communicationType().is_bound()) field_communicationType = other_value.communicationType();
+else field_communicationType.clean_up();
+}
+
+void DisableRxAndEnableTxRequest::clean_up()
+{
+field_suppressPosRspMsgIndicationBit.clean_up();
+field_controlType.clean_up();
+field_communicationType.clean_up();
+}
+
+const TTCN_Typedescriptor_t* DisableRxAndEnableTxRequest::get_descriptor() const { return &DisableRxAndEnableTxRequest_descr_; }
+DisableRxAndEnableTxRequest& DisableRxAndEnableTxRequest::operator=(const DisableRxAndEnableTxRequest& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.DisableRxAndEnableTxRequest.");
+  if (other_value.suppressPosRspMsgIndicationBit().is_bound()) field_suppressPosRspMsgIndicationBit = other_value.suppressPosRspMsgIndicationBit();
+  else field_suppressPosRspMsgIndicationBit.clean_up();
+  if (other_value.controlType().is_bound()) field_controlType = other_value.controlType();
+  else field_controlType.clean_up();
+  if (other_value.communicationType().is_bound()) field_communicationType = other_value.communicationType();
+  else field_communicationType.clean_up();
+}
+return *this;
+}
+
+boolean DisableRxAndEnableTxRequest::operator==(const DisableRxAndEnableTxRequest& other_value) const
+{
+return field_suppressPosRspMsgIndicationBit==other_value.field_suppressPosRspMsgIndicationBit
+  && field_controlType==other_value.field_controlType
+  && field_communicationType==other_value.field_communicationType;
+}
+
+boolean DisableRxAndEnableTxRequest::is_bound() const
+{
+return (field_suppressPosRspMsgIndicationBit.is_bound())
+  || (field_controlType.is_bound())
+  || (field_communicationType.is_bound());
+}
+boolean DisableRxAndEnableTxRequest::is_value() const
+{
+return field_suppressPosRspMsgIndicationBit.is_value()
+  && field_controlType.is_value()
+  && field_communicationType.is_value();
+}
+void DisableRxAndEnableTxRequest::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ suppressPosRspMsgIndicationBit := ");
+field_suppressPosRspMsgIndicationBit.log();
+TTCN_Logger::log_event_str(", controlType := ");
+field_controlType.log();
+TTCN_Logger::log_event_str(", communicationType := ");
+field_communicationType.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void DisableRxAndEnableTxRequest::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 @UnifiedDiagnosticServices.DisableRxAndEnableTxRequest 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) suppressPosRspMsgIndicationBit().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) controlType().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) communicationType().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(), "suppressPosRspMsgIndicationBit")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          suppressPosRspMsgIndicationBit().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(), "controlType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          controlType().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(), "communicationType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          communicationType().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 @UnifiedDiagnosticServices.DisableRxAndEnableTxRequest: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.DisableRxAndEnableTxRequest");
+  }
+}
+
+void DisableRxAndEnableTxRequest::set_implicit_omit()
+{
+if (suppressPosRspMsgIndicationBit().is_bound()) suppressPosRspMsgIndicationBit().set_implicit_omit();
+if (controlType().is_bound()) controlType().set_implicit_omit();
+if (communicationType().is_bound()) communicationType().set_implicit_omit();
+}
+
+void DisableRxAndEnableTxRequest::encode_text(Text_Buf& text_buf) const
+{
+field_suppressPosRspMsgIndicationBit.encode_text(text_buf);
+field_controlType.encode_text(text_buf);
+field_communicationType.encode_text(text_buf);
+}
+
+void DisableRxAndEnableTxRequest::decode_text(Text_Buf& text_buf)
+{
+field_suppressPosRspMsgIndicationBit.decode_text(text_buf);
+field_controlType.decode_text(text_buf);
+field_communicationType.decode_text(text_buf);
+}
+
+void DisableRxAndEnableTxRequest::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void DisableRxAndEnableTxRequest::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int DisableRxAndEnableTxRequest::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, DisableRxAndEnableTxRequest_suppressPosRspMsgIndicationBit_descr_.raw->forceomit);
+  decoded_field_length = field_suppressPosRspMsgIndicationBit.RAW_decode(DisableRxAndEnableTxRequest_suppressPosRspMsgIndicationBit_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, DisableRxAndEnableTxRequest_controlType_descr_.raw->forceomit);
+  decoded_field_length = field_controlType.RAW_decode(DisableRxAndEnableTxRequest_controlType_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, DisableRxAndEnableTxRequest_communicationType_descr_.raw->forceomit);
+  decoded_field_length = field_communicationType.RAW_decode(DisableRxAndEnableTxRequest_communicationType_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 DisableRxAndEnableTxRequest::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, DisableRxAndEnableTxRequest_suppressPosRspMsgIndicationBit_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, DisableRxAndEnableTxRequest_controlType_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, DisableRxAndEnableTxRequest_communicationType_descr_.raw);
+  encoded_length += field_suppressPosRspMsgIndicationBit.RAW_encode(DisableRxAndEnableTxRequest_suppressPosRspMsgIndicationBit_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_controlType.RAW_encode(DisableRxAndEnableTxRequest_controlType_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_communicationType.RAW_encode(DisableRxAndEnableTxRequest_communicationType_descr_, *myleaf.body.node.nodes[2]);
+  return myleaf.length = encoded_length;
+}
+
+struct DisableRxAndEnableTxRequest_template::single_value_struct {
+SuppressPosRspMsgIndicationBitType_template field_suppressPosRspMsgIndicationBit;
+BITSTRING_template field_controlType;
+CommunicationType_template field_communicationType;
+};
+
+void DisableRxAndEnableTxRequest_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_suppressPosRspMsgIndicationBit = ANY_VALUE;
+single_value->field_controlType = ANY_VALUE;
+single_value->field_communicationType = ANY_VALUE;
+}
+}
+}
+
+void DisableRxAndEnableTxRequest_template::copy_value(const DisableRxAndEnableTxRequest& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.suppressPosRspMsgIndicationBit().is_bound()) {
+  single_value->field_suppressPosRspMsgIndicationBit = other_value.suppressPosRspMsgIndicationBit();
+} else {
+  single_value->field_suppressPosRspMsgIndicationBit.clean_up();
+}
+if (other_value.controlType().is_bound()) {
+  single_value->field_controlType = other_value.controlType();
+} else {
+  single_value->field_controlType.clean_up();
+}
+if (other_value.communicationType().is_bound()) {
+  single_value->field_communicationType = other_value.communicationType();
+} else {
+  single_value->field_communicationType.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void DisableRxAndEnableTxRequest_template::copy_template(const DisableRxAndEnableTxRequest_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.suppressPosRspMsgIndicationBit().get_selection()) {
+single_value->field_suppressPosRspMsgIndicationBit = other_value.suppressPosRspMsgIndicationBit();
+} else {
+single_value->field_suppressPosRspMsgIndicationBit.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.controlType().get_selection()) {
+single_value->field_controlType = other_value.controlType();
+} else {
+single_value->field_controlType.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.communicationType().get_selection()) {
+single_value->field_communicationType = other_value.communicationType();
+} else {
+single_value->field_communicationType.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new DisableRxAndEnableTxRequest_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.DisableRxAndEnableTxRequest.");
+break;
+}
+set_selection(other_value);
+}
+
+DisableRxAndEnableTxRequest_template::DisableRxAndEnableTxRequest_template()
+{
+}
+
+DisableRxAndEnableTxRequest_template::DisableRxAndEnableTxRequest_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+DisableRxAndEnableTxRequest_template::DisableRxAndEnableTxRequest_template(const DisableRxAndEnableTxRequest& other_value)
+{
+copy_value(other_value);
+}
+
+DisableRxAndEnableTxRequest_template::DisableRxAndEnableTxRequest_template(const OPTIONAL<DisableRxAndEnableTxRequest>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const DisableRxAndEnableTxRequest&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.DisableRxAndEnableTxRequest from an unbound optional field.");
+}
+}
+
+DisableRxAndEnableTxRequest_template::DisableRxAndEnableTxRequest_template(const DisableRxAndEnableTxRequest_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+DisableRxAndEnableTxRequest_template::~DisableRxAndEnableTxRequest_template()
+{
+clean_up();
+}
+
+DisableRxAndEnableTxRequest_template& DisableRxAndEnableTxRequest_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+DisableRxAndEnableTxRequest_template& DisableRxAndEnableTxRequest_template::operator=(const DisableRxAndEnableTxRequest& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+DisableRxAndEnableTxRequest_template& DisableRxAndEnableTxRequest_template::operator=(const OPTIONAL<DisableRxAndEnableTxRequest>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const DisableRxAndEnableTxRequest&)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 @UnifiedDiagnosticServices.DisableRxAndEnableTxRequest.");
+}
+return *this;
+}
+
+DisableRxAndEnableTxRequest_template& DisableRxAndEnableTxRequest_template::operator=(const DisableRxAndEnableTxRequest_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean DisableRxAndEnableTxRequest_template::match(const DisableRxAndEnableTxRequest& 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.suppressPosRspMsgIndicationBit().is_bound()) return FALSE;
+if(!single_value->field_suppressPosRspMsgIndicationBit.match(other_value.suppressPosRspMsgIndicationBit(), legacy))return FALSE;
+if(!other_value.controlType().is_bound()) return FALSE;
+if(!single_value->field_controlType.match(other_value.controlType(), legacy))return FALSE;
+if(!other_value.communicationType().is_bound()) return FALSE;
+if(!single_value->field_communicationType.match(other_value.communicationType(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.DisableRxAndEnableTxRequest.");
+}
+return FALSE;
+}
+
+boolean DisableRxAndEnableTxRequest_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_suppressPosRspMsgIndicationBit.is_bound()
+
+ ||single_value->field_controlType.is_bound()
+
+ ||single_value->field_communicationType.is_bound()
+;
+}
+
+boolean DisableRxAndEnableTxRequest_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_suppressPosRspMsgIndicationBit.is_value()
+ &&single_value->field_controlType.is_value()
+ &&single_value->field_communicationType.is_value();
+}
+
+void DisableRxAndEnableTxRequest_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+DisableRxAndEnableTxRequest DisableRxAndEnableTxRequest_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 @UnifiedDiagnosticServices.DisableRxAndEnableTxRequest.");
+DisableRxAndEnableTxRequest ret_val;
+if (single_value->field_suppressPosRspMsgIndicationBit.is_bound()) {
+ret_val.suppressPosRspMsgIndicationBit() = single_value->field_suppressPosRspMsgIndicationBit.valueof();
+}
+if (single_value->field_controlType.is_bound()) {
+ret_val.controlType() = single_value->field_controlType.valueof();
+}
+if (single_value->field_communicationType.is_bound()) {
+ret_val.communicationType() = single_value->field_communicationType.valueof();
+}
+return ret_val;
+}
+
+void DisableRxAndEnableTxRequest_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.DisableRxAndEnableTxRequest.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new DisableRxAndEnableTxRequest_template[list_length];
+}
+
+DisableRxAndEnableTxRequest_template& DisableRxAndEnableTxRequest_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.DisableRxAndEnableTxRequest.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.DisableRxAndEnableTxRequest.");
+return value_list.list_value[list_index];
+}
+
+SuppressPosRspMsgIndicationBitType_template& DisableRxAndEnableTxRequest_template::suppressPosRspMsgIndicationBit()
+{
+set_specific();
+return single_value->field_suppressPosRspMsgIndicationBit;
+}
+
+const SuppressPosRspMsgIndicationBitType_template& DisableRxAndEnableTxRequest_template::suppressPosRspMsgIndicationBit() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field suppressPosRspMsgIndicationBit of a non-specific template of type @UnifiedDiagnosticServices.DisableRxAndEnableTxRequest.");
+return single_value->field_suppressPosRspMsgIndicationBit;
+}
+
+BITSTRING_template& DisableRxAndEnableTxRequest_template::controlType()
+{
+set_specific();
+return single_value->field_controlType;
+}
+
+const BITSTRING_template& DisableRxAndEnableTxRequest_template::controlType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field controlType of a non-specific template of type @UnifiedDiagnosticServices.DisableRxAndEnableTxRequest.");
+return single_value->field_controlType;
+}
+
+CommunicationType_template& DisableRxAndEnableTxRequest_template::communicationType()
+{
+set_specific();
+return single_value->field_communicationType;
+}
+
+const CommunicationType_template& DisableRxAndEnableTxRequest_template::communicationType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field communicationType of a non-specific template of type @UnifiedDiagnosticServices.DisableRxAndEnableTxRequest.");
+return single_value->field_communicationType;
+}
+
+int DisableRxAndEnableTxRequest_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.DisableRxAndEnableTxRequest 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 @UnifiedDiagnosticServices.DisableRxAndEnableTxRequest 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 @UnifiedDiagnosticServices.DisableRxAndEnableTxRequest containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.DisableRxAndEnableTxRequest containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.DisableRxAndEnableTxRequest containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.DisableRxAndEnableTxRequest containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.DisableRxAndEnableTxRequest.");
+  }
+  return 0;
+}
+
+void DisableRxAndEnableTxRequest_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ suppressPosRspMsgIndicationBit := ");
+single_value->field_suppressPosRspMsgIndicationBit.log();
+TTCN_Logger::log_event_str(", controlType := ");
+single_value->field_controlType.log();
+TTCN_Logger::log_event_str(", communicationType := ");
+single_value->field_communicationType.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void DisableRxAndEnableTxRequest_template::log_match(const DisableRxAndEnableTxRequest& 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_suppressPosRspMsgIndicationBit.match(match_value.suppressPosRspMsgIndicationBit(), legacy)){
+TTCN_Logger::log_logmatch_info(".suppressPosRspMsgIndicationBit");
+single_value->field_suppressPosRspMsgIndicationBit.log_match(match_value.suppressPosRspMsgIndicationBit(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_controlType.match(match_value.controlType(), legacy)){
+TTCN_Logger::log_logmatch_info(".controlType");
+single_value->field_controlType.log_match(match_value.controlType(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_communicationType.match(match_value.communicationType(), legacy)){
+TTCN_Logger::log_logmatch_info(".communicationType");
+single_value->field_communicationType.log_match(match_value.communicationType(), 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("{ suppressPosRspMsgIndicationBit := ");
+single_value->field_suppressPosRspMsgIndicationBit.log_match(match_value.suppressPosRspMsgIndicationBit(), legacy);
+TTCN_Logger::log_event_str(", controlType := ");
+single_value->field_controlType.log_match(match_value.controlType(), legacy);
+TTCN_Logger::log_event_str(", communicationType := ");
+single_value->field_communicationType.log_match(match_value.communicationType(), 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 DisableRxAndEnableTxRequest_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_suppressPosRspMsgIndicationBit.encode_text(text_buf);
+single_value->field_controlType.encode_text(text_buf);
+single_value->field_communicationType.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 @UnifiedDiagnosticServices.DisableRxAndEnableTxRequest.");
+}
+}
+
+void DisableRxAndEnableTxRequest_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_suppressPosRspMsgIndicationBit.decode_text(text_buf);
+single_value->field_controlType.decode_text(text_buf);
+single_value->field_communicationType.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 DisableRxAndEnableTxRequest_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 @UnifiedDiagnosticServices.DisableRxAndEnableTxRequest.");
+}
+}
+
+void DisableRxAndEnableTxRequest_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: {
+    DisableRxAndEnableTxRequest_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @UnifiedDiagnosticServices.DisableRxAndEnableTxRequest 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) suppressPosRspMsgIndicationBit().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) controlType().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) communicationType().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(), "suppressPosRspMsgIndicationBit")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          suppressPosRspMsgIndicationBit().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(), "controlType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          controlType().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(), "communicationType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          communicationType().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 @UnifiedDiagnosticServices.DisableRxAndEnableTxRequest: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.DisableRxAndEnableTxRequest");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void DisableRxAndEnableTxRequest_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_suppressPosRspMsgIndicationBit.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.DisableRxAndEnableTxRequest");
+single_value->field_controlType.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.DisableRxAndEnableTxRequest");
+single_value->field_communicationType.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.DisableRxAndEnableTxRequest");
+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 : "@UnifiedDiagnosticServices.DisableRxAndEnableTxRequest");
+}
+
+boolean DisableRxAndEnableTxRequest_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean DisableRxAndEnableTxRequest_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+DisableRxAndTxRequest::DisableRxAndTxRequest()
+{
+}
+
+DisableRxAndTxRequest::DisableRxAndTxRequest(const SuppressPosRspMsgIndicationBitType& par_suppressPosRspMsgIndicationBit,
+    const BITSTRING& par_controlType,
+    const CommunicationType& par_communicationType)
+  :   field_suppressPosRspMsgIndicationBit(par_suppressPosRspMsgIndicationBit),
+  field_controlType(par_controlType),
+  field_communicationType(par_communicationType)
+{
+}
+
+DisableRxAndTxRequest::DisableRxAndTxRequest(const DisableRxAndTxRequest& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.DisableRxAndTxRequest.");
+if (other_value.suppressPosRspMsgIndicationBit().is_bound()) field_suppressPosRspMsgIndicationBit = other_value.suppressPosRspMsgIndicationBit();
+else field_suppressPosRspMsgIndicationBit.clean_up();
+if (other_value.controlType().is_bound()) field_controlType = other_value.controlType();
+else field_controlType.clean_up();
+if (other_value.communicationType().is_bound()) field_communicationType = other_value.communicationType();
+else field_communicationType.clean_up();
+}
+
+void DisableRxAndTxRequest::clean_up()
+{
+field_suppressPosRspMsgIndicationBit.clean_up();
+field_controlType.clean_up();
+field_communicationType.clean_up();
+}
+
+const TTCN_Typedescriptor_t* DisableRxAndTxRequest::get_descriptor() const { return &DisableRxAndTxRequest_descr_; }
+DisableRxAndTxRequest& DisableRxAndTxRequest::operator=(const DisableRxAndTxRequest& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.DisableRxAndTxRequest.");
+  if (other_value.suppressPosRspMsgIndicationBit().is_bound()) field_suppressPosRspMsgIndicationBit = other_value.suppressPosRspMsgIndicationBit();
+  else field_suppressPosRspMsgIndicationBit.clean_up();
+  if (other_value.controlType().is_bound()) field_controlType = other_value.controlType();
+  else field_controlType.clean_up();
+  if (other_value.communicationType().is_bound()) field_communicationType = other_value.communicationType();
+  else field_communicationType.clean_up();
+}
+return *this;
+}
+
+boolean DisableRxAndTxRequest::operator==(const DisableRxAndTxRequest& other_value) const
+{
+return field_suppressPosRspMsgIndicationBit==other_value.field_suppressPosRspMsgIndicationBit
+  && field_controlType==other_value.field_controlType
+  && field_communicationType==other_value.field_communicationType;
+}
+
+boolean DisableRxAndTxRequest::is_bound() const
+{
+return (field_suppressPosRspMsgIndicationBit.is_bound())
+  || (field_controlType.is_bound())
+  || (field_communicationType.is_bound());
+}
+boolean DisableRxAndTxRequest::is_value() const
+{
+return field_suppressPosRspMsgIndicationBit.is_value()
+  && field_controlType.is_value()
+  && field_communicationType.is_value();
+}
+void DisableRxAndTxRequest::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ suppressPosRspMsgIndicationBit := ");
+field_suppressPosRspMsgIndicationBit.log();
+TTCN_Logger::log_event_str(", controlType := ");
+field_controlType.log();
+TTCN_Logger::log_event_str(", communicationType := ");
+field_communicationType.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void DisableRxAndTxRequest::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 @UnifiedDiagnosticServices.DisableRxAndTxRequest 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) suppressPosRspMsgIndicationBit().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) controlType().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) communicationType().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(), "suppressPosRspMsgIndicationBit")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          suppressPosRspMsgIndicationBit().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(), "controlType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          controlType().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(), "communicationType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          communicationType().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 @UnifiedDiagnosticServices.DisableRxAndTxRequest: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.DisableRxAndTxRequest");
+  }
+}
+
+void DisableRxAndTxRequest::set_implicit_omit()
+{
+if (suppressPosRspMsgIndicationBit().is_bound()) suppressPosRspMsgIndicationBit().set_implicit_omit();
+if (controlType().is_bound()) controlType().set_implicit_omit();
+if (communicationType().is_bound()) communicationType().set_implicit_omit();
+}
+
+void DisableRxAndTxRequest::encode_text(Text_Buf& text_buf) const
+{
+field_suppressPosRspMsgIndicationBit.encode_text(text_buf);
+field_controlType.encode_text(text_buf);
+field_communicationType.encode_text(text_buf);
+}
+
+void DisableRxAndTxRequest::decode_text(Text_Buf& text_buf)
+{
+field_suppressPosRspMsgIndicationBit.decode_text(text_buf);
+field_controlType.decode_text(text_buf);
+field_communicationType.decode_text(text_buf);
+}
+
+void DisableRxAndTxRequest::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void DisableRxAndTxRequest::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int DisableRxAndTxRequest::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, DisableRxAndTxRequest_suppressPosRspMsgIndicationBit_descr_.raw->forceomit);
+  decoded_field_length = field_suppressPosRspMsgIndicationBit.RAW_decode(DisableRxAndTxRequest_suppressPosRspMsgIndicationBit_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, DisableRxAndTxRequest_controlType_descr_.raw->forceomit);
+  decoded_field_length = field_controlType.RAW_decode(DisableRxAndTxRequest_controlType_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, DisableRxAndTxRequest_communicationType_descr_.raw->forceomit);
+  decoded_field_length = field_communicationType.RAW_decode(DisableRxAndTxRequest_communicationType_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 DisableRxAndTxRequest::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, DisableRxAndTxRequest_suppressPosRspMsgIndicationBit_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, DisableRxAndTxRequest_controlType_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, DisableRxAndTxRequest_communicationType_descr_.raw);
+  encoded_length += field_suppressPosRspMsgIndicationBit.RAW_encode(DisableRxAndTxRequest_suppressPosRspMsgIndicationBit_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_controlType.RAW_encode(DisableRxAndTxRequest_controlType_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_communicationType.RAW_encode(DisableRxAndTxRequest_communicationType_descr_, *myleaf.body.node.nodes[2]);
+  return myleaf.length = encoded_length;
+}
+
+struct DisableRxAndTxRequest_template::single_value_struct {
+SuppressPosRspMsgIndicationBitType_template field_suppressPosRspMsgIndicationBit;
+BITSTRING_template field_controlType;
+CommunicationType_template field_communicationType;
+};
+
+void DisableRxAndTxRequest_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_suppressPosRspMsgIndicationBit = ANY_VALUE;
+single_value->field_controlType = ANY_VALUE;
+single_value->field_communicationType = ANY_VALUE;
+}
+}
+}
+
+void DisableRxAndTxRequest_template::copy_value(const DisableRxAndTxRequest& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.suppressPosRspMsgIndicationBit().is_bound()) {
+  single_value->field_suppressPosRspMsgIndicationBit = other_value.suppressPosRspMsgIndicationBit();
+} else {
+  single_value->field_suppressPosRspMsgIndicationBit.clean_up();
+}
+if (other_value.controlType().is_bound()) {
+  single_value->field_controlType = other_value.controlType();
+} else {
+  single_value->field_controlType.clean_up();
+}
+if (other_value.communicationType().is_bound()) {
+  single_value->field_communicationType = other_value.communicationType();
+} else {
+  single_value->field_communicationType.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void DisableRxAndTxRequest_template::copy_template(const DisableRxAndTxRequest_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.suppressPosRspMsgIndicationBit().get_selection()) {
+single_value->field_suppressPosRspMsgIndicationBit = other_value.suppressPosRspMsgIndicationBit();
+} else {
+single_value->field_suppressPosRspMsgIndicationBit.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.controlType().get_selection()) {
+single_value->field_controlType = other_value.controlType();
+} else {
+single_value->field_controlType.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.communicationType().get_selection()) {
+single_value->field_communicationType = other_value.communicationType();
+} else {
+single_value->field_communicationType.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new DisableRxAndTxRequest_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.DisableRxAndTxRequest.");
+break;
+}
+set_selection(other_value);
+}
+
+DisableRxAndTxRequest_template::DisableRxAndTxRequest_template()
+{
+}
+
+DisableRxAndTxRequest_template::DisableRxAndTxRequest_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+DisableRxAndTxRequest_template::DisableRxAndTxRequest_template(const DisableRxAndTxRequest& other_value)
+{
+copy_value(other_value);
+}
+
+DisableRxAndTxRequest_template::DisableRxAndTxRequest_template(const OPTIONAL<DisableRxAndTxRequest>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const DisableRxAndTxRequest&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.DisableRxAndTxRequest from an unbound optional field.");
+}
+}
+
+DisableRxAndTxRequest_template::DisableRxAndTxRequest_template(const DisableRxAndTxRequest_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+DisableRxAndTxRequest_template::~DisableRxAndTxRequest_template()
+{
+clean_up();
+}
+
+DisableRxAndTxRequest_template& DisableRxAndTxRequest_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+DisableRxAndTxRequest_template& DisableRxAndTxRequest_template::operator=(const DisableRxAndTxRequest& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+DisableRxAndTxRequest_template& DisableRxAndTxRequest_template::operator=(const OPTIONAL<DisableRxAndTxRequest>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const DisableRxAndTxRequest&)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 @UnifiedDiagnosticServices.DisableRxAndTxRequest.");
+}
+return *this;
+}
+
+DisableRxAndTxRequest_template& DisableRxAndTxRequest_template::operator=(const DisableRxAndTxRequest_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean DisableRxAndTxRequest_template::match(const DisableRxAndTxRequest& 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.suppressPosRspMsgIndicationBit().is_bound()) return FALSE;
+if(!single_value->field_suppressPosRspMsgIndicationBit.match(other_value.suppressPosRspMsgIndicationBit(), legacy))return FALSE;
+if(!other_value.controlType().is_bound()) return FALSE;
+if(!single_value->field_controlType.match(other_value.controlType(), legacy))return FALSE;
+if(!other_value.communicationType().is_bound()) return FALSE;
+if(!single_value->field_communicationType.match(other_value.communicationType(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.DisableRxAndTxRequest.");
+}
+return FALSE;
+}
+
+boolean DisableRxAndTxRequest_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_suppressPosRspMsgIndicationBit.is_bound()
+
+ ||single_value->field_controlType.is_bound()
+
+ ||single_value->field_communicationType.is_bound()
+;
+}
+
+boolean DisableRxAndTxRequest_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_suppressPosRspMsgIndicationBit.is_value()
+ &&single_value->field_controlType.is_value()
+ &&single_value->field_communicationType.is_value();
+}
+
+void DisableRxAndTxRequest_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+DisableRxAndTxRequest DisableRxAndTxRequest_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 @UnifiedDiagnosticServices.DisableRxAndTxRequest.");
+DisableRxAndTxRequest ret_val;
+if (single_value->field_suppressPosRspMsgIndicationBit.is_bound()) {
+ret_val.suppressPosRspMsgIndicationBit() = single_value->field_suppressPosRspMsgIndicationBit.valueof();
+}
+if (single_value->field_controlType.is_bound()) {
+ret_val.controlType() = single_value->field_controlType.valueof();
+}
+if (single_value->field_communicationType.is_bound()) {
+ret_val.communicationType() = single_value->field_communicationType.valueof();
+}
+return ret_val;
+}
+
+void DisableRxAndTxRequest_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.DisableRxAndTxRequest.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new DisableRxAndTxRequest_template[list_length];
+}
+
+DisableRxAndTxRequest_template& DisableRxAndTxRequest_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.DisableRxAndTxRequest.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.DisableRxAndTxRequest.");
+return value_list.list_value[list_index];
+}
+
+SuppressPosRspMsgIndicationBitType_template& DisableRxAndTxRequest_template::suppressPosRspMsgIndicationBit()
+{
+set_specific();
+return single_value->field_suppressPosRspMsgIndicationBit;
+}
+
+const SuppressPosRspMsgIndicationBitType_template& DisableRxAndTxRequest_template::suppressPosRspMsgIndicationBit() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field suppressPosRspMsgIndicationBit of a non-specific template of type @UnifiedDiagnosticServices.DisableRxAndTxRequest.");
+return single_value->field_suppressPosRspMsgIndicationBit;
+}
+
+BITSTRING_template& DisableRxAndTxRequest_template::controlType()
+{
+set_specific();
+return single_value->field_controlType;
+}
+
+const BITSTRING_template& DisableRxAndTxRequest_template::controlType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field controlType of a non-specific template of type @UnifiedDiagnosticServices.DisableRxAndTxRequest.");
+return single_value->field_controlType;
+}
+
+CommunicationType_template& DisableRxAndTxRequest_template::communicationType()
+{
+set_specific();
+return single_value->field_communicationType;
+}
+
+const CommunicationType_template& DisableRxAndTxRequest_template::communicationType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field communicationType of a non-specific template of type @UnifiedDiagnosticServices.DisableRxAndTxRequest.");
+return single_value->field_communicationType;
+}
+
+int DisableRxAndTxRequest_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.DisableRxAndTxRequest 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 @UnifiedDiagnosticServices.DisableRxAndTxRequest 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 @UnifiedDiagnosticServices.DisableRxAndTxRequest containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.DisableRxAndTxRequest containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.DisableRxAndTxRequest containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.DisableRxAndTxRequest containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.DisableRxAndTxRequest.");
+  }
+  return 0;
+}
+
+void DisableRxAndTxRequest_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ suppressPosRspMsgIndicationBit := ");
+single_value->field_suppressPosRspMsgIndicationBit.log();
+TTCN_Logger::log_event_str(", controlType := ");
+single_value->field_controlType.log();
+TTCN_Logger::log_event_str(", communicationType := ");
+single_value->field_communicationType.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void DisableRxAndTxRequest_template::log_match(const DisableRxAndTxRequest& 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_suppressPosRspMsgIndicationBit.match(match_value.suppressPosRspMsgIndicationBit(), legacy)){
+TTCN_Logger::log_logmatch_info(".suppressPosRspMsgIndicationBit");
+single_value->field_suppressPosRspMsgIndicationBit.log_match(match_value.suppressPosRspMsgIndicationBit(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_controlType.match(match_value.controlType(), legacy)){
+TTCN_Logger::log_logmatch_info(".controlType");
+single_value->field_controlType.log_match(match_value.controlType(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_communicationType.match(match_value.communicationType(), legacy)){
+TTCN_Logger::log_logmatch_info(".communicationType");
+single_value->field_communicationType.log_match(match_value.communicationType(), 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("{ suppressPosRspMsgIndicationBit := ");
+single_value->field_suppressPosRspMsgIndicationBit.log_match(match_value.suppressPosRspMsgIndicationBit(), legacy);
+TTCN_Logger::log_event_str(", controlType := ");
+single_value->field_controlType.log_match(match_value.controlType(), legacy);
+TTCN_Logger::log_event_str(", communicationType := ");
+single_value->field_communicationType.log_match(match_value.communicationType(), 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 DisableRxAndTxRequest_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_suppressPosRspMsgIndicationBit.encode_text(text_buf);
+single_value->field_controlType.encode_text(text_buf);
+single_value->field_communicationType.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 @UnifiedDiagnosticServices.DisableRxAndTxRequest.");
+}
+}
+
+void DisableRxAndTxRequest_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_suppressPosRspMsgIndicationBit.decode_text(text_buf);
+single_value->field_controlType.decode_text(text_buf);
+single_value->field_communicationType.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 DisableRxAndTxRequest_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 @UnifiedDiagnosticServices.DisableRxAndTxRequest.");
+}
+}
+
+void DisableRxAndTxRequest_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: {
+    DisableRxAndTxRequest_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @UnifiedDiagnosticServices.DisableRxAndTxRequest 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) suppressPosRspMsgIndicationBit().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) controlType().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) communicationType().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(), "suppressPosRspMsgIndicationBit")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          suppressPosRspMsgIndicationBit().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(), "controlType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          controlType().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(), "communicationType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          communicationType().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 @UnifiedDiagnosticServices.DisableRxAndTxRequest: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.DisableRxAndTxRequest");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void DisableRxAndTxRequest_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_suppressPosRspMsgIndicationBit.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.DisableRxAndTxRequest");
+single_value->field_controlType.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.DisableRxAndTxRequest");
+single_value->field_communicationType.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.DisableRxAndTxRequest");
+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 : "@UnifiedDiagnosticServices.DisableRxAndTxRequest");
+}
+
+boolean DisableRxAndTxRequest_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean DisableRxAndTxRequest_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+EnableRxAndDisableTxWithEnhancedAddressInformationRequest::EnableRxAndDisableTxWithEnhancedAddressInformationRequest()
+{
+}
+
+EnableRxAndDisableTxWithEnhancedAddressInformationRequest::EnableRxAndDisableTxWithEnhancedAddressInformationRequest(const SuppressPosRspMsgIndicationBitType& par_suppressPosRspMsgIndicationBit,
+    const BITSTRING& par_controlType,
+    const CommunicationType& par_communicationType,
+    const OCTETSTRING& par_nodeIdentificationNumber)
+  :   field_suppressPosRspMsgIndicationBit(par_suppressPosRspMsgIndicationBit),
+  field_controlType(par_controlType),
+  field_communicationType(par_communicationType),
+  field_nodeIdentificationNumber(par_nodeIdentificationNumber)
+{
+}
+
+EnableRxAndDisableTxWithEnhancedAddressInformationRequest::EnableRxAndDisableTxWithEnhancedAddressInformationRequest(const EnableRxAndDisableTxWithEnhancedAddressInformationRequest& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.EnableRxAndDisableTxWithEnhancedAddressInformationRequest.");
+if (other_value.suppressPosRspMsgIndicationBit().is_bound()) field_suppressPosRspMsgIndicationBit = other_value.suppressPosRspMsgIndicationBit();
+else field_suppressPosRspMsgIndicationBit.clean_up();
+if (other_value.controlType().is_bound()) field_controlType = other_value.controlType();
+else field_controlType.clean_up();
+if (other_value.communicationType().is_bound()) field_communicationType = other_value.communicationType();
+else field_communicationType.clean_up();
+if (other_value.nodeIdentificationNumber().is_bound()) field_nodeIdentificationNumber = other_value.nodeIdentificationNumber();
+else field_nodeIdentificationNumber.clean_up();
+}
+
+void EnableRxAndDisableTxWithEnhancedAddressInformationRequest::clean_up()
+{
+field_suppressPosRspMsgIndicationBit.clean_up();
+field_controlType.clean_up();
+field_communicationType.clean_up();
+field_nodeIdentificationNumber.clean_up();
+}
+
+const TTCN_Typedescriptor_t* EnableRxAndDisableTxWithEnhancedAddressInformationRequest::get_descriptor() const { return &EnableRxAndDisableTxWithEnhancedAddressInformationRequest_descr_; }
+EnableRxAndDisableTxWithEnhancedAddressInformationRequest& EnableRxAndDisableTxWithEnhancedAddressInformationRequest::operator=(const EnableRxAndDisableTxWithEnhancedAddressInformationRequest& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.EnableRxAndDisableTxWithEnhancedAddressInformationRequest.");
+  if (other_value.suppressPosRspMsgIndicationBit().is_bound()) field_suppressPosRspMsgIndicationBit = other_value.suppressPosRspMsgIndicationBit();
+  else field_suppressPosRspMsgIndicationBit.clean_up();
+  if (other_value.controlType().is_bound()) field_controlType = other_value.controlType();
+  else field_controlType.clean_up();
+  if (other_value.communicationType().is_bound()) field_communicationType = other_value.communicationType();
+  else field_communicationType.clean_up();
+  if (other_value.nodeIdentificationNumber().is_bound()) field_nodeIdentificationNumber = other_value.nodeIdentificationNumber();
+  else field_nodeIdentificationNumber.clean_up();
+}
+return *this;
+}
+
+boolean EnableRxAndDisableTxWithEnhancedAddressInformationRequest::operator==(const EnableRxAndDisableTxWithEnhancedAddressInformationRequest& other_value) const
+{
+return field_suppressPosRspMsgIndicationBit==other_value.field_suppressPosRspMsgIndicationBit
+  && field_controlType==other_value.field_controlType
+  && field_communicationType==other_value.field_communicationType
+  && field_nodeIdentificationNumber==other_value.field_nodeIdentificationNumber;
+}
+
+boolean EnableRxAndDisableTxWithEnhancedAddressInformationRequest::is_bound() const
+{
+return (field_suppressPosRspMsgIndicationBit.is_bound())
+  || (field_controlType.is_bound())
+  || (field_communicationType.is_bound())
+  || (field_nodeIdentificationNumber.is_bound());
+}
+boolean EnableRxAndDisableTxWithEnhancedAddressInformationRequest::is_value() const
+{
+return field_suppressPosRspMsgIndicationBit.is_value()
+  && field_controlType.is_value()
+  && field_communicationType.is_value()
+  && field_nodeIdentificationNumber.is_value();
+}
+void EnableRxAndDisableTxWithEnhancedAddressInformationRequest::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ suppressPosRspMsgIndicationBit := ");
+field_suppressPosRspMsgIndicationBit.log();
+TTCN_Logger::log_event_str(", controlType := ");
+field_controlType.log();
+TTCN_Logger::log_event_str(", communicationType := ");
+field_communicationType.log();
+TTCN_Logger::log_event_str(", nodeIdentificationNumber := ");
+field_nodeIdentificationNumber.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void EnableRxAndDisableTxWithEnhancedAddressInformationRequest::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 @UnifiedDiagnosticServices.EnableRxAndDisableTxWithEnhancedAddressInformationRequest 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) suppressPosRspMsgIndicationBit().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) controlType().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) communicationType().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) nodeIdentificationNumber().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(), "suppressPosRspMsgIndicationBit")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          suppressPosRspMsgIndicationBit().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(), "controlType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          controlType().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(), "communicationType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          communicationType().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(), "nodeIdentificationNumber")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          nodeIdentificationNumber().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 @UnifiedDiagnosticServices.EnableRxAndDisableTxWithEnhancedAddressInformationRequest: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.EnableRxAndDisableTxWithEnhancedAddressInformationRequest");
+  }
+}
+
+void EnableRxAndDisableTxWithEnhancedAddressInformationRequest::set_implicit_omit()
+{
+if (suppressPosRspMsgIndicationBit().is_bound()) suppressPosRspMsgIndicationBit().set_implicit_omit();
+if (controlType().is_bound()) controlType().set_implicit_omit();
+if (communicationType().is_bound()) communicationType().set_implicit_omit();
+if (nodeIdentificationNumber().is_bound()) nodeIdentificationNumber().set_implicit_omit();
+}
+
+void EnableRxAndDisableTxWithEnhancedAddressInformationRequest::encode_text(Text_Buf& text_buf) const
+{
+field_suppressPosRspMsgIndicationBit.encode_text(text_buf);
+field_controlType.encode_text(text_buf);
+field_communicationType.encode_text(text_buf);
+field_nodeIdentificationNumber.encode_text(text_buf);
+}
+
+void EnableRxAndDisableTxWithEnhancedAddressInformationRequest::decode_text(Text_Buf& text_buf)
+{
+field_suppressPosRspMsgIndicationBit.decode_text(text_buf);
+field_controlType.decode_text(text_buf);
+field_communicationType.decode_text(text_buf);
+field_nodeIdentificationNumber.decode_text(text_buf);
+}
+
+void EnableRxAndDisableTxWithEnhancedAddressInformationRequest::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void EnableRxAndDisableTxWithEnhancedAddressInformationRequest::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int EnableRxAndDisableTxWithEnhancedAddressInformationRequest::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, EnableRxAndDisableTxWithEnhancedAddressInformationRequest_suppressPosRspMsgIndicationBit_descr_.raw->forceomit);
+  decoded_field_length = field_suppressPosRspMsgIndicationBit.RAW_decode(EnableRxAndDisableTxWithEnhancedAddressInformationRequest_suppressPosRspMsgIndicationBit_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, EnableRxAndDisableTxWithEnhancedAddressInformationRequest_controlType_descr_.raw->forceomit);
+  decoded_field_length = field_controlType.RAW_decode(EnableRxAndDisableTxWithEnhancedAddressInformationRequest_controlType_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, EnableRxAndDisableTxWithEnhancedAddressInformationRequest_communicationType_descr_.raw->forceomit);
+  decoded_field_length = field_communicationType.RAW_decode(EnableRxAndDisableTxWithEnhancedAddressInformationRequest_communicationType_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, EnableRxAndDisableTxWithEnhancedAddressInformationRequest_nodeIdentificationNumber_descr_.raw->forceomit);
+  decoded_field_length = field_nodeIdentificationNumber.RAW_decode(EnableRxAndDisableTxWithEnhancedAddressInformationRequest_nodeIdentificationNumber_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int EnableRxAndDisableTxWithEnhancedAddressInformationRequest::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, EnableRxAndDisableTxWithEnhancedAddressInformationRequest_suppressPosRspMsgIndicationBit_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, EnableRxAndDisableTxWithEnhancedAddressInformationRequest_controlType_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, EnableRxAndDisableTxWithEnhancedAddressInformationRequest_communicationType_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, EnableRxAndDisableTxWithEnhancedAddressInformationRequest_nodeIdentificationNumber_descr_.raw);
+  encoded_length += field_suppressPosRspMsgIndicationBit.RAW_encode(EnableRxAndDisableTxWithEnhancedAddressInformationRequest_suppressPosRspMsgIndicationBit_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_controlType.RAW_encode(EnableRxAndDisableTxWithEnhancedAddressInformationRequest_controlType_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_communicationType.RAW_encode(EnableRxAndDisableTxWithEnhancedAddressInformationRequest_communicationType_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_nodeIdentificationNumber.RAW_encode(EnableRxAndDisableTxWithEnhancedAddressInformationRequest_nodeIdentificationNumber_descr_, *myleaf.body.node.nodes[3]);
+  return myleaf.length = encoded_length;
+}
+
+struct EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template::single_value_struct {
+SuppressPosRspMsgIndicationBitType_template field_suppressPosRspMsgIndicationBit;
+BITSTRING_template field_controlType;
+CommunicationType_template field_communicationType;
+OCTETSTRING_template field_nodeIdentificationNumber;
+};
+
+void EnableRxAndDisableTxWithEnhancedAddressInformationRequest_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_suppressPosRspMsgIndicationBit = ANY_VALUE;
+single_value->field_controlType = ANY_VALUE;
+single_value->field_communicationType = ANY_VALUE;
+single_value->field_nodeIdentificationNumber = ANY_VALUE;
+}
+}
+}
+
+void EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template::copy_value(const EnableRxAndDisableTxWithEnhancedAddressInformationRequest& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.suppressPosRspMsgIndicationBit().is_bound()) {
+  single_value->field_suppressPosRspMsgIndicationBit = other_value.suppressPosRspMsgIndicationBit();
+} else {
+  single_value->field_suppressPosRspMsgIndicationBit.clean_up();
+}
+if (other_value.controlType().is_bound()) {
+  single_value->field_controlType = other_value.controlType();
+} else {
+  single_value->field_controlType.clean_up();
+}
+if (other_value.communicationType().is_bound()) {
+  single_value->field_communicationType = other_value.communicationType();
+} else {
+  single_value->field_communicationType.clean_up();
+}
+if (other_value.nodeIdentificationNumber().is_bound()) {
+  single_value->field_nodeIdentificationNumber = other_value.nodeIdentificationNumber();
+} else {
+  single_value->field_nodeIdentificationNumber.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template::copy_template(const EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.suppressPosRspMsgIndicationBit().get_selection()) {
+single_value->field_suppressPosRspMsgIndicationBit = other_value.suppressPosRspMsgIndicationBit();
+} else {
+single_value->field_suppressPosRspMsgIndicationBit.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.controlType().get_selection()) {
+single_value->field_controlType = other_value.controlType();
+} else {
+single_value->field_controlType.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.communicationType().get_selection()) {
+single_value->field_communicationType = other_value.communicationType();
+} else {
+single_value->field_communicationType.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.nodeIdentificationNumber().get_selection()) {
+single_value->field_nodeIdentificationNumber = other_value.nodeIdentificationNumber();
+} else {
+single_value->field_nodeIdentificationNumber.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new EnableRxAndDisableTxWithEnhancedAddressInformationRequest_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.EnableRxAndDisableTxWithEnhancedAddressInformationRequest.");
+break;
+}
+set_selection(other_value);
+}
+
+EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template::EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template()
+{
+}
+
+EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template::EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template::EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template(const EnableRxAndDisableTxWithEnhancedAddressInformationRequest& other_value)
+{
+copy_value(other_value);
+}
+
+EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template::EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template(const OPTIONAL<EnableRxAndDisableTxWithEnhancedAddressInformationRequest>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const EnableRxAndDisableTxWithEnhancedAddressInformationRequest&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.EnableRxAndDisableTxWithEnhancedAddressInformationRequest from an unbound optional field.");
+}
+}
+
+EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template::EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template(const EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template::~EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template()
+{
+clean_up();
+}
+
+EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template& EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template& EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template::operator=(const EnableRxAndDisableTxWithEnhancedAddressInformationRequest& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template& EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template::operator=(const OPTIONAL<EnableRxAndDisableTxWithEnhancedAddressInformationRequest>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const EnableRxAndDisableTxWithEnhancedAddressInformationRequest&)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 @UnifiedDiagnosticServices.EnableRxAndDisableTxWithEnhancedAddressInformationRequest.");
+}
+return *this;
+}
+
+EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template& EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template::operator=(const EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template::match(const EnableRxAndDisableTxWithEnhancedAddressInformationRequest& 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.suppressPosRspMsgIndicationBit().is_bound()) return FALSE;
+if(!single_value->field_suppressPosRspMsgIndicationBit.match(other_value.suppressPosRspMsgIndicationBit(), legacy))return FALSE;
+if(!other_value.controlType().is_bound()) return FALSE;
+if(!single_value->field_controlType.match(other_value.controlType(), legacy))return FALSE;
+if(!other_value.communicationType().is_bound()) return FALSE;
+if(!single_value->field_communicationType.match(other_value.communicationType(), legacy))return FALSE;
+if(!other_value.nodeIdentificationNumber().is_bound()) return FALSE;
+if(!single_value->field_nodeIdentificationNumber.match(other_value.nodeIdentificationNumber(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.EnableRxAndDisableTxWithEnhancedAddressInformationRequest.");
+}
+return FALSE;
+}
+
+boolean EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_suppressPosRspMsgIndicationBit.is_bound()
+
+ ||single_value->field_controlType.is_bound()
+
+ ||single_value->field_communicationType.is_bound()
+
+ ||single_value->field_nodeIdentificationNumber.is_bound()
+;
+}
+
+boolean EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_suppressPosRspMsgIndicationBit.is_value()
+ &&single_value->field_controlType.is_value()
+ &&single_value->field_communicationType.is_value()
+ &&single_value->field_nodeIdentificationNumber.is_value();
+}
+
+void EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+EnableRxAndDisableTxWithEnhancedAddressInformationRequest EnableRxAndDisableTxWithEnhancedAddressInformationRequest_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 @UnifiedDiagnosticServices.EnableRxAndDisableTxWithEnhancedAddressInformationRequest.");
+EnableRxAndDisableTxWithEnhancedAddressInformationRequest ret_val;
+if (single_value->field_suppressPosRspMsgIndicationBit.is_bound()) {
+ret_val.suppressPosRspMsgIndicationBit() = single_value->field_suppressPosRspMsgIndicationBit.valueof();
+}
+if (single_value->field_controlType.is_bound()) {
+ret_val.controlType() = single_value->field_controlType.valueof();
+}
+if (single_value->field_communicationType.is_bound()) {
+ret_val.communicationType() = single_value->field_communicationType.valueof();
+}
+if (single_value->field_nodeIdentificationNumber.is_bound()) {
+ret_val.nodeIdentificationNumber() = single_value->field_nodeIdentificationNumber.valueof();
+}
+return ret_val;
+}
+
+void EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.EnableRxAndDisableTxWithEnhancedAddressInformationRequest.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template[list_length];
+}
+
+EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template& EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.EnableRxAndDisableTxWithEnhancedAddressInformationRequest.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.EnableRxAndDisableTxWithEnhancedAddressInformationRequest.");
+return value_list.list_value[list_index];
+}
+
+SuppressPosRspMsgIndicationBitType_template& EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template::suppressPosRspMsgIndicationBit()
+{
+set_specific();
+return single_value->field_suppressPosRspMsgIndicationBit;
+}
+
+const SuppressPosRspMsgIndicationBitType_template& EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template::suppressPosRspMsgIndicationBit() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field suppressPosRspMsgIndicationBit of a non-specific template of type @UnifiedDiagnosticServices.EnableRxAndDisableTxWithEnhancedAddressInformationRequest.");
+return single_value->field_suppressPosRspMsgIndicationBit;
+}
+
+BITSTRING_template& EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template::controlType()
+{
+set_specific();
+return single_value->field_controlType;
+}
+
+const BITSTRING_template& EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template::controlType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field controlType of a non-specific template of type @UnifiedDiagnosticServices.EnableRxAndDisableTxWithEnhancedAddressInformationRequest.");
+return single_value->field_controlType;
+}
+
+CommunicationType_template& EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template::communicationType()
+{
+set_specific();
+return single_value->field_communicationType;
+}
+
+const CommunicationType_template& EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template::communicationType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field communicationType of a non-specific template of type @UnifiedDiagnosticServices.EnableRxAndDisableTxWithEnhancedAddressInformationRequest.");
+return single_value->field_communicationType;
+}
+
+OCTETSTRING_template& EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template::nodeIdentificationNumber()
+{
+set_specific();
+return single_value->field_nodeIdentificationNumber;
+}
+
+const OCTETSTRING_template& EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template::nodeIdentificationNumber() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field nodeIdentificationNumber of a non-specific template of type @UnifiedDiagnosticServices.EnableRxAndDisableTxWithEnhancedAddressInformationRequest.");
+return single_value->field_nodeIdentificationNumber;
+}
+
+int EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.EnableRxAndDisableTxWithEnhancedAddressInformationRequest 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 @UnifiedDiagnosticServices.EnableRxAndDisableTxWithEnhancedAddressInformationRequest 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 @UnifiedDiagnosticServices.EnableRxAndDisableTxWithEnhancedAddressInformationRequest containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.EnableRxAndDisableTxWithEnhancedAddressInformationRequest containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.EnableRxAndDisableTxWithEnhancedAddressInformationRequest containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.EnableRxAndDisableTxWithEnhancedAddressInformationRequest containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.EnableRxAndDisableTxWithEnhancedAddressInformationRequest.");
+  }
+  return 0;
+}
+
+void EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ suppressPosRspMsgIndicationBit := ");
+single_value->field_suppressPosRspMsgIndicationBit.log();
+TTCN_Logger::log_event_str(", controlType := ");
+single_value->field_controlType.log();
+TTCN_Logger::log_event_str(", communicationType := ");
+single_value->field_communicationType.log();
+TTCN_Logger::log_event_str(", nodeIdentificationNumber := ");
+single_value->field_nodeIdentificationNumber.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template::log_match(const EnableRxAndDisableTxWithEnhancedAddressInformationRequest& 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_suppressPosRspMsgIndicationBit.match(match_value.suppressPosRspMsgIndicationBit(), legacy)){
+TTCN_Logger::log_logmatch_info(".suppressPosRspMsgIndicationBit");
+single_value->field_suppressPosRspMsgIndicationBit.log_match(match_value.suppressPosRspMsgIndicationBit(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_controlType.match(match_value.controlType(), legacy)){
+TTCN_Logger::log_logmatch_info(".controlType");
+single_value->field_controlType.log_match(match_value.controlType(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_communicationType.match(match_value.communicationType(), legacy)){
+TTCN_Logger::log_logmatch_info(".communicationType");
+single_value->field_communicationType.log_match(match_value.communicationType(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_nodeIdentificationNumber.match(match_value.nodeIdentificationNumber(), legacy)){
+TTCN_Logger::log_logmatch_info(".nodeIdentificationNumber");
+single_value->field_nodeIdentificationNumber.log_match(match_value.nodeIdentificationNumber(), 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("{ suppressPosRspMsgIndicationBit := ");
+single_value->field_suppressPosRspMsgIndicationBit.log_match(match_value.suppressPosRspMsgIndicationBit(), legacy);
+TTCN_Logger::log_event_str(", controlType := ");
+single_value->field_controlType.log_match(match_value.controlType(), legacy);
+TTCN_Logger::log_event_str(", communicationType := ");
+single_value->field_communicationType.log_match(match_value.communicationType(), legacy);
+TTCN_Logger::log_event_str(", nodeIdentificationNumber := ");
+single_value->field_nodeIdentificationNumber.log_match(match_value.nodeIdentificationNumber(), 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 EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_suppressPosRspMsgIndicationBit.encode_text(text_buf);
+single_value->field_controlType.encode_text(text_buf);
+single_value->field_communicationType.encode_text(text_buf);
+single_value->field_nodeIdentificationNumber.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 @UnifiedDiagnosticServices.EnableRxAndDisableTxWithEnhancedAddressInformationRequest.");
+}
+}
+
+void EnableRxAndDisableTxWithEnhancedAddressInformationRequest_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_suppressPosRspMsgIndicationBit.decode_text(text_buf);
+single_value->field_controlType.decode_text(text_buf);
+single_value->field_communicationType.decode_text(text_buf);
+single_value->field_nodeIdentificationNumber.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 EnableRxAndDisableTxWithEnhancedAddressInformationRequest_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 @UnifiedDiagnosticServices.EnableRxAndDisableTxWithEnhancedAddressInformationRequest.");
+}
+}
+
+void EnableRxAndDisableTxWithEnhancedAddressInformationRequest_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: {
+    EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @UnifiedDiagnosticServices.EnableRxAndDisableTxWithEnhancedAddressInformationRequest 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) suppressPosRspMsgIndicationBit().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) controlType().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) communicationType().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) nodeIdentificationNumber().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(), "suppressPosRspMsgIndicationBit")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          suppressPosRspMsgIndicationBit().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(), "controlType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          controlType().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(), "communicationType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          communicationType().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(), "nodeIdentificationNumber")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          nodeIdentificationNumber().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 @UnifiedDiagnosticServices.EnableRxAndDisableTxWithEnhancedAddressInformationRequest: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.EnableRxAndDisableTxWithEnhancedAddressInformationRequest");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void EnableRxAndDisableTxWithEnhancedAddressInformationRequest_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_suppressPosRspMsgIndicationBit.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.EnableRxAndDisableTxWithEnhancedAddressInformationRequest");
+single_value->field_controlType.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.EnableRxAndDisableTxWithEnhancedAddressInformationRequest");
+single_value->field_communicationType.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.EnableRxAndDisableTxWithEnhancedAddressInformationRequest");
+single_value->field_nodeIdentificationNumber.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.EnableRxAndDisableTxWithEnhancedAddressInformationRequest");
+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 : "@UnifiedDiagnosticServices.EnableRxAndDisableTxWithEnhancedAddressInformationRequest");
+}
+
+boolean EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+EnableRxAndTxWithEnhancedAddressInformationRequest::EnableRxAndTxWithEnhancedAddressInformationRequest()
+{
+}
+
+EnableRxAndTxWithEnhancedAddressInformationRequest::EnableRxAndTxWithEnhancedAddressInformationRequest(const SuppressPosRspMsgIndicationBitType& par_suppressPosRspMsgIndicationBit,
+    const BITSTRING& par_controlType,
+    const CommunicationType& par_communicationType,
+    const OCTETSTRING& par_nodeIdentificationNumber)
+  :   field_suppressPosRspMsgIndicationBit(par_suppressPosRspMsgIndicationBit),
+  field_controlType(par_controlType),
+  field_communicationType(par_communicationType),
+  field_nodeIdentificationNumber(par_nodeIdentificationNumber)
+{
+}
+
+EnableRxAndTxWithEnhancedAddressInformationRequest::EnableRxAndTxWithEnhancedAddressInformationRequest(const EnableRxAndTxWithEnhancedAddressInformationRequest& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.EnableRxAndTxWithEnhancedAddressInformationRequest.");
+if (other_value.suppressPosRspMsgIndicationBit().is_bound()) field_suppressPosRspMsgIndicationBit = other_value.suppressPosRspMsgIndicationBit();
+else field_suppressPosRspMsgIndicationBit.clean_up();
+if (other_value.controlType().is_bound()) field_controlType = other_value.controlType();
+else field_controlType.clean_up();
+if (other_value.communicationType().is_bound()) field_communicationType = other_value.communicationType();
+else field_communicationType.clean_up();
+if (other_value.nodeIdentificationNumber().is_bound()) field_nodeIdentificationNumber = other_value.nodeIdentificationNumber();
+else field_nodeIdentificationNumber.clean_up();
+}
+
+void EnableRxAndTxWithEnhancedAddressInformationRequest::clean_up()
+{
+field_suppressPosRspMsgIndicationBit.clean_up();
+field_controlType.clean_up();
+field_communicationType.clean_up();
+field_nodeIdentificationNumber.clean_up();
+}
+
+const TTCN_Typedescriptor_t* EnableRxAndTxWithEnhancedAddressInformationRequest::get_descriptor() const { return &EnableRxAndTxWithEnhancedAddressInformationRequest_descr_; }
+EnableRxAndTxWithEnhancedAddressInformationRequest& EnableRxAndTxWithEnhancedAddressInformationRequest::operator=(const EnableRxAndTxWithEnhancedAddressInformationRequest& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.EnableRxAndTxWithEnhancedAddressInformationRequest.");
+  if (other_value.suppressPosRspMsgIndicationBit().is_bound()) field_suppressPosRspMsgIndicationBit = other_value.suppressPosRspMsgIndicationBit();
+  else field_suppressPosRspMsgIndicationBit.clean_up();
+  if (other_value.controlType().is_bound()) field_controlType = other_value.controlType();
+  else field_controlType.clean_up();
+  if (other_value.communicationType().is_bound()) field_communicationType = other_value.communicationType();
+  else field_communicationType.clean_up();
+  if (other_value.nodeIdentificationNumber().is_bound()) field_nodeIdentificationNumber = other_value.nodeIdentificationNumber();
+  else field_nodeIdentificationNumber.clean_up();
+}
+return *this;
+}
+
+boolean EnableRxAndTxWithEnhancedAddressInformationRequest::operator==(const EnableRxAndTxWithEnhancedAddressInformationRequest& other_value) const
+{
+return field_suppressPosRspMsgIndicationBit==other_value.field_suppressPosRspMsgIndicationBit
+  && field_controlType==other_value.field_controlType
+  && field_communicationType==other_value.field_communicationType
+  && field_nodeIdentificationNumber==other_value.field_nodeIdentificationNumber;
+}
+
+boolean EnableRxAndTxWithEnhancedAddressInformationRequest::is_bound() const
+{
+return (field_suppressPosRspMsgIndicationBit.is_bound())
+  || (field_controlType.is_bound())
+  || (field_communicationType.is_bound())
+  || (field_nodeIdentificationNumber.is_bound());
+}
+boolean EnableRxAndTxWithEnhancedAddressInformationRequest::is_value() const
+{
+return field_suppressPosRspMsgIndicationBit.is_value()
+  && field_controlType.is_value()
+  && field_communicationType.is_value()
+  && field_nodeIdentificationNumber.is_value();
+}
+void EnableRxAndTxWithEnhancedAddressInformationRequest::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ suppressPosRspMsgIndicationBit := ");
+field_suppressPosRspMsgIndicationBit.log();
+TTCN_Logger::log_event_str(", controlType := ");
+field_controlType.log();
+TTCN_Logger::log_event_str(", communicationType := ");
+field_communicationType.log();
+TTCN_Logger::log_event_str(", nodeIdentificationNumber := ");
+field_nodeIdentificationNumber.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void EnableRxAndTxWithEnhancedAddressInformationRequest::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 @UnifiedDiagnosticServices.EnableRxAndTxWithEnhancedAddressInformationRequest 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) suppressPosRspMsgIndicationBit().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) controlType().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) communicationType().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) nodeIdentificationNumber().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(), "suppressPosRspMsgIndicationBit")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          suppressPosRspMsgIndicationBit().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(), "controlType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          controlType().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(), "communicationType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          communicationType().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(), "nodeIdentificationNumber")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          nodeIdentificationNumber().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 @UnifiedDiagnosticServices.EnableRxAndTxWithEnhancedAddressInformationRequest: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.EnableRxAndTxWithEnhancedAddressInformationRequest");
+  }
+}
+
+void EnableRxAndTxWithEnhancedAddressInformationRequest::set_implicit_omit()
+{
+if (suppressPosRspMsgIndicationBit().is_bound()) suppressPosRspMsgIndicationBit().set_implicit_omit();
+if (controlType().is_bound()) controlType().set_implicit_omit();
+if (communicationType().is_bound()) communicationType().set_implicit_omit();
+if (nodeIdentificationNumber().is_bound()) nodeIdentificationNumber().set_implicit_omit();
+}
+
+void EnableRxAndTxWithEnhancedAddressInformationRequest::encode_text(Text_Buf& text_buf) const
+{
+field_suppressPosRspMsgIndicationBit.encode_text(text_buf);
+field_controlType.encode_text(text_buf);
+field_communicationType.encode_text(text_buf);
+field_nodeIdentificationNumber.encode_text(text_buf);
+}
+
+void EnableRxAndTxWithEnhancedAddressInformationRequest::decode_text(Text_Buf& text_buf)
+{
+field_suppressPosRspMsgIndicationBit.decode_text(text_buf);
+field_controlType.decode_text(text_buf);
+field_communicationType.decode_text(text_buf);
+field_nodeIdentificationNumber.decode_text(text_buf);
+}
+
+void EnableRxAndTxWithEnhancedAddressInformationRequest::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void EnableRxAndTxWithEnhancedAddressInformationRequest::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int EnableRxAndTxWithEnhancedAddressInformationRequest::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, EnableRxAndTxWithEnhancedAddressInformationRequest_suppressPosRspMsgIndicationBit_descr_.raw->forceomit);
+  decoded_field_length = field_suppressPosRspMsgIndicationBit.RAW_decode(EnableRxAndTxWithEnhancedAddressInformationRequest_suppressPosRspMsgIndicationBit_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, EnableRxAndTxWithEnhancedAddressInformationRequest_controlType_descr_.raw->forceomit);
+  decoded_field_length = field_controlType.RAW_decode(EnableRxAndTxWithEnhancedAddressInformationRequest_controlType_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, EnableRxAndTxWithEnhancedAddressInformationRequest_communicationType_descr_.raw->forceomit);
+  decoded_field_length = field_communicationType.RAW_decode(EnableRxAndTxWithEnhancedAddressInformationRequest_communicationType_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, EnableRxAndTxWithEnhancedAddressInformationRequest_nodeIdentificationNumber_descr_.raw->forceomit);
+  decoded_field_length = field_nodeIdentificationNumber.RAW_decode(EnableRxAndTxWithEnhancedAddressInformationRequest_nodeIdentificationNumber_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int EnableRxAndTxWithEnhancedAddressInformationRequest::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, EnableRxAndTxWithEnhancedAddressInformationRequest_suppressPosRspMsgIndicationBit_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, EnableRxAndTxWithEnhancedAddressInformationRequest_controlType_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, EnableRxAndTxWithEnhancedAddressInformationRequest_communicationType_descr_.raw);
+  myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 3, EnableRxAndTxWithEnhancedAddressInformationRequest_nodeIdentificationNumber_descr_.raw);
+  encoded_length += field_suppressPosRspMsgIndicationBit.RAW_encode(EnableRxAndTxWithEnhancedAddressInformationRequest_suppressPosRspMsgIndicationBit_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_controlType.RAW_encode(EnableRxAndTxWithEnhancedAddressInformationRequest_controlType_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_communicationType.RAW_encode(EnableRxAndTxWithEnhancedAddressInformationRequest_communicationType_descr_, *myleaf.body.node.nodes[2]);
+  encoded_length += field_nodeIdentificationNumber.RAW_encode(EnableRxAndTxWithEnhancedAddressInformationRequest_nodeIdentificationNumber_descr_, *myleaf.body.node.nodes[3]);
+  return myleaf.length = encoded_length;
+}
+
+struct EnableRxAndTxWithEnhancedAddressInformationRequest_template::single_value_struct {
+SuppressPosRspMsgIndicationBitType_template field_suppressPosRspMsgIndicationBit;
+BITSTRING_template field_controlType;
+CommunicationType_template field_communicationType;
+OCTETSTRING_template field_nodeIdentificationNumber;
+};
+
+void EnableRxAndTxWithEnhancedAddressInformationRequest_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_suppressPosRspMsgIndicationBit = ANY_VALUE;
+single_value->field_controlType = ANY_VALUE;
+single_value->field_communicationType = ANY_VALUE;
+single_value->field_nodeIdentificationNumber = ANY_VALUE;
+}
+}
+}
+
+void EnableRxAndTxWithEnhancedAddressInformationRequest_template::copy_value(const EnableRxAndTxWithEnhancedAddressInformationRequest& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.suppressPosRspMsgIndicationBit().is_bound()) {
+  single_value->field_suppressPosRspMsgIndicationBit = other_value.suppressPosRspMsgIndicationBit();
+} else {
+  single_value->field_suppressPosRspMsgIndicationBit.clean_up();
+}
+if (other_value.controlType().is_bound()) {
+  single_value->field_controlType = other_value.controlType();
+} else {
+  single_value->field_controlType.clean_up();
+}
+if (other_value.communicationType().is_bound()) {
+  single_value->field_communicationType = other_value.communicationType();
+} else {
+  single_value->field_communicationType.clean_up();
+}
+if (other_value.nodeIdentificationNumber().is_bound()) {
+  single_value->field_nodeIdentificationNumber = other_value.nodeIdentificationNumber();
+} else {
+  single_value->field_nodeIdentificationNumber.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void EnableRxAndTxWithEnhancedAddressInformationRequest_template::copy_template(const EnableRxAndTxWithEnhancedAddressInformationRequest_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.suppressPosRspMsgIndicationBit().get_selection()) {
+single_value->field_suppressPosRspMsgIndicationBit = other_value.suppressPosRspMsgIndicationBit();
+} else {
+single_value->field_suppressPosRspMsgIndicationBit.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.controlType().get_selection()) {
+single_value->field_controlType = other_value.controlType();
+} else {
+single_value->field_controlType.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.communicationType().get_selection()) {
+single_value->field_communicationType = other_value.communicationType();
+} else {
+single_value->field_communicationType.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.nodeIdentificationNumber().get_selection()) {
+single_value->field_nodeIdentificationNumber = other_value.nodeIdentificationNumber();
+} else {
+single_value->field_nodeIdentificationNumber.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new EnableRxAndTxWithEnhancedAddressInformationRequest_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.EnableRxAndTxWithEnhancedAddressInformationRequest.");
+break;
+}
+set_selection(other_value);
+}
+
+EnableRxAndTxWithEnhancedAddressInformationRequest_template::EnableRxAndTxWithEnhancedAddressInformationRequest_template()
+{
+}
+
+EnableRxAndTxWithEnhancedAddressInformationRequest_template::EnableRxAndTxWithEnhancedAddressInformationRequest_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+EnableRxAndTxWithEnhancedAddressInformationRequest_template::EnableRxAndTxWithEnhancedAddressInformationRequest_template(const EnableRxAndTxWithEnhancedAddressInformationRequest& other_value)
+{
+copy_value(other_value);
+}
+
+EnableRxAndTxWithEnhancedAddressInformationRequest_template::EnableRxAndTxWithEnhancedAddressInformationRequest_template(const OPTIONAL<EnableRxAndTxWithEnhancedAddressInformationRequest>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const EnableRxAndTxWithEnhancedAddressInformationRequest&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.EnableRxAndTxWithEnhancedAddressInformationRequest from an unbound optional field.");
+}
+}
+
+EnableRxAndTxWithEnhancedAddressInformationRequest_template::EnableRxAndTxWithEnhancedAddressInformationRequest_template(const EnableRxAndTxWithEnhancedAddressInformationRequest_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+EnableRxAndTxWithEnhancedAddressInformationRequest_template::~EnableRxAndTxWithEnhancedAddressInformationRequest_template()
+{
+clean_up();
+}
+
+EnableRxAndTxWithEnhancedAddressInformationRequest_template& EnableRxAndTxWithEnhancedAddressInformationRequest_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+EnableRxAndTxWithEnhancedAddressInformationRequest_template& EnableRxAndTxWithEnhancedAddressInformationRequest_template::operator=(const EnableRxAndTxWithEnhancedAddressInformationRequest& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+EnableRxAndTxWithEnhancedAddressInformationRequest_template& EnableRxAndTxWithEnhancedAddressInformationRequest_template::operator=(const OPTIONAL<EnableRxAndTxWithEnhancedAddressInformationRequest>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const EnableRxAndTxWithEnhancedAddressInformationRequest&)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 @UnifiedDiagnosticServices.EnableRxAndTxWithEnhancedAddressInformationRequest.");
+}
+return *this;
+}
+
+EnableRxAndTxWithEnhancedAddressInformationRequest_template& EnableRxAndTxWithEnhancedAddressInformationRequest_template::operator=(const EnableRxAndTxWithEnhancedAddressInformationRequest_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean EnableRxAndTxWithEnhancedAddressInformationRequest_template::match(const EnableRxAndTxWithEnhancedAddressInformationRequest& 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.suppressPosRspMsgIndicationBit().is_bound()) return FALSE;
+if(!single_value->field_suppressPosRspMsgIndicationBit.match(other_value.suppressPosRspMsgIndicationBit(), legacy))return FALSE;
+if(!other_value.controlType().is_bound()) return FALSE;
+if(!single_value->field_controlType.match(other_value.controlType(), legacy))return FALSE;
+if(!other_value.communicationType().is_bound()) return FALSE;
+if(!single_value->field_communicationType.match(other_value.communicationType(), legacy))return FALSE;
+if(!other_value.nodeIdentificationNumber().is_bound()) return FALSE;
+if(!single_value->field_nodeIdentificationNumber.match(other_value.nodeIdentificationNumber(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.EnableRxAndTxWithEnhancedAddressInformationRequest.");
+}
+return FALSE;
+}
+
+boolean EnableRxAndTxWithEnhancedAddressInformationRequest_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_suppressPosRspMsgIndicationBit.is_bound()
+
+ ||single_value->field_controlType.is_bound()
+
+ ||single_value->field_communicationType.is_bound()
+
+ ||single_value->field_nodeIdentificationNumber.is_bound()
+;
+}
+
+boolean EnableRxAndTxWithEnhancedAddressInformationRequest_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_suppressPosRspMsgIndicationBit.is_value()
+ &&single_value->field_controlType.is_value()
+ &&single_value->field_communicationType.is_value()
+ &&single_value->field_nodeIdentificationNumber.is_value();
+}
+
+void EnableRxAndTxWithEnhancedAddressInformationRequest_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+EnableRxAndTxWithEnhancedAddressInformationRequest EnableRxAndTxWithEnhancedAddressInformationRequest_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 @UnifiedDiagnosticServices.EnableRxAndTxWithEnhancedAddressInformationRequest.");
+EnableRxAndTxWithEnhancedAddressInformationRequest ret_val;
+if (single_value->field_suppressPosRspMsgIndicationBit.is_bound()) {
+ret_val.suppressPosRspMsgIndicationBit() = single_value->field_suppressPosRspMsgIndicationBit.valueof();
+}
+if (single_value->field_controlType.is_bound()) {
+ret_val.controlType() = single_value->field_controlType.valueof();
+}
+if (single_value->field_communicationType.is_bound()) {
+ret_val.communicationType() = single_value->field_communicationType.valueof();
+}
+if (single_value->field_nodeIdentificationNumber.is_bound()) {
+ret_val.nodeIdentificationNumber() = single_value->field_nodeIdentificationNumber.valueof();
+}
+return ret_val;
+}
+
+void EnableRxAndTxWithEnhancedAddressInformationRequest_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.EnableRxAndTxWithEnhancedAddressInformationRequest.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new EnableRxAndTxWithEnhancedAddressInformationRequest_template[list_length];
+}
+
+EnableRxAndTxWithEnhancedAddressInformationRequest_template& EnableRxAndTxWithEnhancedAddressInformationRequest_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.EnableRxAndTxWithEnhancedAddressInformationRequest.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.EnableRxAndTxWithEnhancedAddressInformationRequest.");
+return value_list.list_value[list_index];
+}
+
+SuppressPosRspMsgIndicationBitType_template& EnableRxAndTxWithEnhancedAddressInformationRequest_template::suppressPosRspMsgIndicationBit()
+{
+set_specific();
+return single_value->field_suppressPosRspMsgIndicationBit;
+}
+
+const SuppressPosRspMsgIndicationBitType_template& EnableRxAndTxWithEnhancedAddressInformationRequest_template::suppressPosRspMsgIndicationBit() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field suppressPosRspMsgIndicationBit of a non-specific template of type @UnifiedDiagnosticServices.EnableRxAndTxWithEnhancedAddressInformationRequest.");
+return single_value->field_suppressPosRspMsgIndicationBit;
+}
+
+BITSTRING_template& EnableRxAndTxWithEnhancedAddressInformationRequest_template::controlType()
+{
+set_specific();
+return single_value->field_controlType;
+}
+
+const BITSTRING_template& EnableRxAndTxWithEnhancedAddressInformationRequest_template::controlType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field controlType of a non-specific template of type @UnifiedDiagnosticServices.EnableRxAndTxWithEnhancedAddressInformationRequest.");
+return single_value->field_controlType;
+}
+
+CommunicationType_template& EnableRxAndTxWithEnhancedAddressInformationRequest_template::communicationType()
+{
+set_specific();
+return single_value->field_communicationType;
+}
+
+const CommunicationType_template& EnableRxAndTxWithEnhancedAddressInformationRequest_template::communicationType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field communicationType of a non-specific template of type @UnifiedDiagnosticServices.EnableRxAndTxWithEnhancedAddressInformationRequest.");
+return single_value->field_communicationType;
+}
+
+OCTETSTRING_template& EnableRxAndTxWithEnhancedAddressInformationRequest_template::nodeIdentificationNumber()
+{
+set_specific();
+return single_value->field_nodeIdentificationNumber;
+}
+
+const OCTETSTRING_template& EnableRxAndTxWithEnhancedAddressInformationRequest_template::nodeIdentificationNumber() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field nodeIdentificationNumber of a non-specific template of type @UnifiedDiagnosticServices.EnableRxAndTxWithEnhancedAddressInformationRequest.");
+return single_value->field_nodeIdentificationNumber;
+}
+
+int EnableRxAndTxWithEnhancedAddressInformationRequest_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.EnableRxAndTxWithEnhancedAddressInformationRequest 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 @UnifiedDiagnosticServices.EnableRxAndTxWithEnhancedAddressInformationRequest 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 @UnifiedDiagnosticServices.EnableRxAndTxWithEnhancedAddressInformationRequest containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.EnableRxAndTxWithEnhancedAddressInformationRequest containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.EnableRxAndTxWithEnhancedAddressInformationRequest containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.EnableRxAndTxWithEnhancedAddressInformationRequest containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.EnableRxAndTxWithEnhancedAddressInformationRequest.");
+  }
+  return 0;
+}
+
+void EnableRxAndTxWithEnhancedAddressInformationRequest_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ suppressPosRspMsgIndicationBit := ");
+single_value->field_suppressPosRspMsgIndicationBit.log();
+TTCN_Logger::log_event_str(", controlType := ");
+single_value->field_controlType.log();
+TTCN_Logger::log_event_str(", communicationType := ");
+single_value->field_communicationType.log();
+TTCN_Logger::log_event_str(", nodeIdentificationNumber := ");
+single_value->field_nodeIdentificationNumber.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void EnableRxAndTxWithEnhancedAddressInformationRequest_template::log_match(const EnableRxAndTxWithEnhancedAddressInformationRequest& 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_suppressPosRspMsgIndicationBit.match(match_value.suppressPosRspMsgIndicationBit(), legacy)){
+TTCN_Logger::log_logmatch_info(".suppressPosRspMsgIndicationBit");
+single_value->field_suppressPosRspMsgIndicationBit.log_match(match_value.suppressPosRspMsgIndicationBit(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_controlType.match(match_value.controlType(), legacy)){
+TTCN_Logger::log_logmatch_info(".controlType");
+single_value->field_controlType.log_match(match_value.controlType(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_communicationType.match(match_value.communicationType(), legacy)){
+TTCN_Logger::log_logmatch_info(".communicationType");
+single_value->field_communicationType.log_match(match_value.communicationType(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_nodeIdentificationNumber.match(match_value.nodeIdentificationNumber(), legacy)){
+TTCN_Logger::log_logmatch_info(".nodeIdentificationNumber");
+single_value->field_nodeIdentificationNumber.log_match(match_value.nodeIdentificationNumber(), 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("{ suppressPosRspMsgIndicationBit := ");
+single_value->field_suppressPosRspMsgIndicationBit.log_match(match_value.suppressPosRspMsgIndicationBit(), legacy);
+TTCN_Logger::log_event_str(", controlType := ");
+single_value->field_controlType.log_match(match_value.controlType(), legacy);
+TTCN_Logger::log_event_str(", communicationType := ");
+single_value->field_communicationType.log_match(match_value.communicationType(), legacy);
+TTCN_Logger::log_event_str(", nodeIdentificationNumber := ");
+single_value->field_nodeIdentificationNumber.log_match(match_value.nodeIdentificationNumber(), 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 EnableRxAndTxWithEnhancedAddressInformationRequest_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_suppressPosRspMsgIndicationBit.encode_text(text_buf);
+single_value->field_controlType.encode_text(text_buf);
+single_value->field_communicationType.encode_text(text_buf);
+single_value->field_nodeIdentificationNumber.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 @UnifiedDiagnosticServices.EnableRxAndTxWithEnhancedAddressInformationRequest.");
+}
+}
+
+void EnableRxAndTxWithEnhancedAddressInformationRequest_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_suppressPosRspMsgIndicationBit.decode_text(text_buf);
+single_value->field_controlType.decode_text(text_buf);
+single_value->field_communicationType.decode_text(text_buf);
+single_value->field_nodeIdentificationNumber.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 EnableRxAndTxWithEnhancedAddressInformationRequest_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 @UnifiedDiagnosticServices.EnableRxAndTxWithEnhancedAddressInformationRequest.");
+}
+}
+
+void EnableRxAndTxWithEnhancedAddressInformationRequest_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: {
+    EnableRxAndTxWithEnhancedAddressInformationRequest_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @UnifiedDiagnosticServices.EnableRxAndTxWithEnhancedAddressInformationRequest 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) suppressPosRspMsgIndicationBit().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) controlType().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) communicationType().set_param(*param.get_elem(2));
+    if (param.get_size()>3 && param.get_elem(3)->get_type()!=Module_Param::MP_NotUsed) nodeIdentificationNumber().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(), "suppressPosRspMsgIndicationBit")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          suppressPosRspMsgIndicationBit().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(), "controlType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          controlType().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(), "communicationType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          communicationType().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(), "nodeIdentificationNumber")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          nodeIdentificationNumber().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 @UnifiedDiagnosticServices.EnableRxAndTxWithEnhancedAddressInformationRequest: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.EnableRxAndTxWithEnhancedAddressInformationRequest");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void EnableRxAndTxWithEnhancedAddressInformationRequest_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_suppressPosRspMsgIndicationBit.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.EnableRxAndTxWithEnhancedAddressInformationRequest");
+single_value->field_controlType.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.EnableRxAndTxWithEnhancedAddressInformationRequest");
+single_value->field_communicationType.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.EnableRxAndTxWithEnhancedAddressInformationRequest");
+single_value->field_nodeIdentificationNumber.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.EnableRxAndTxWithEnhancedAddressInformationRequest");
+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 : "@UnifiedDiagnosticServices.EnableRxAndTxWithEnhancedAddressInformationRequest");
+}
+
+boolean EnableRxAndTxWithEnhancedAddressInformationRequest_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean EnableRxAndTxWithEnhancedAddressInformationRequest_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 CommunicationControlRequestType::copy_value(const CommunicationControlRequestType& other_value)
+{
+switch (other_value.union_selection) {
+case ALT_enableRxAndTxRequest:
+field_enableRxAndTxRequest = new EnableRxAndTxRequest(*other_value.field_enableRxAndTxRequest);
+break;
+case ALT_enableRxAndDisableTxRequest:
+field_enableRxAndDisableTxRequest = new EnableRxAndDisableTxRequest(*other_value.field_enableRxAndDisableTxRequest);
+break;
+case ALT_disableRxAndEnableTxRequest:
+field_disableRxAndEnableTxRequest = new DisableRxAndEnableTxRequest(*other_value.field_disableRxAndEnableTxRequest);
+break;
+case ALT_disableRxAndTxRequest:
+field_disableRxAndTxRequest = new DisableRxAndTxRequest(*other_value.field_disableRxAndTxRequest);
+break;
+case ALT_enableRxAndDisableTxWithEnhancedAddressInformationRequest:
+field_enableRxAndDisableTxWithEnhancedAddressInformationRequest = new EnableRxAndDisableTxWithEnhancedAddressInformationRequest(*other_value.field_enableRxAndDisableTxWithEnhancedAddressInformationRequest);
+break;
+case ALT_enableRxAndTxWithEnhancedAddressInformationRequest:
+field_enableRxAndTxWithEnhancedAddressInformationRequest = new EnableRxAndTxWithEnhancedAddressInformationRequest(*other_value.field_enableRxAndTxWithEnhancedAddressInformationRequest);
+break;
+default:
+TTCN_error("Assignment of an unbound union value of type @UnifiedDiagnosticServices.CommunicationControlRequestType.");
+}
+union_selection = other_value.union_selection;
+}
+
+CommunicationControlRequestType::CommunicationControlRequestType()
+{
+union_selection = UNBOUND_VALUE;
+}
+
+CommunicationControlRequestType::CommunicationControlRequestType(const CommunicationControlRequestType& other_value)
+: Base_Type(){
+copy_value(other_value);
+}
+
+CommunicationControlRequestType::~CommunicationControlRequestType()
+{
+clean_up();
+}
+
+CommunicationControlRequestType& CommunicationControlRequestType::operator=(const CommunicationControlRequestType& other_value)
+{
+if (this != &other_value) {
+clean_up();
+copy_value(other_value);
+}
+return *this;
+}
+
+boolean CommunicationControlRequestType::operator==(const CommunicationControlRequestType& other_value) const
+{
+if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @UnifiedDiagnosticServices.CommunicationControlRequestType.");
+if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @UnifiedDiagnosticServices.CommunicationControlRequestType.");
+if (union_selection != other_value.union_selection) return FALSE;
+switch (union_selection) {
+case ALT_enableRxAndTxRequest:
+return *field_enableRxAndTxRequest == *other_value.field_enableRxAndTxRequest;
+case ALT_enableRxAndDisableTxRequest:
+return *field_enableRxAndDisableTxRequest == *other_value.field_enableRxAndDisableTxRequest;
+case ALT_disableRxAndEnableTxRequest:
+return *field_disableRxAndEnableTxRequest == *other_value.field_disableRxAndEnableTxRequest;
+case ALT_disableRxAndTxRequest:
+return *field_disableRxAndTxRequest == *other_value.field_disableRxAndTxRequest;
+case ALT_enableRxAndDisableTxWithEnhancedAddressInformationRequest:
+return *field_enableRxAndDisableTxWithEnhancedAddressInformationRequest == *other_value.field_enableRxAndDisableTxWithEnhancedAddressInformationRequest;
+case ALT_enableRxAndTxWithEnhancedAddressInformationRequest:
+return *field_enableRxAndTxWithEnhancedAddressInformationRequest == *other_value.field_enableRxAndTxWithEnhancedAddressInformationRequest;
+default:
+return FALSE;
+}
+}
+
+EnableRxAndTxRequest& CommunicationControlRequestType::enableRxAndTxRequest()
+{
+if (union_selection != ALT_enableRxAndTxRequest) {
+clean_up();
+field_enableRxAndTxRequest = new EnableRxAndTxRequest;
+union_selection = ALT_enableRxAndTxRequest;
+}
+return *field_enableRxAndTxRequest;
+}
+
+const EnableRxAndTxRequest& CommunicationControlRequestType::enableRxAndTxRequest() const
+{
+if (union_selection != ALT_enableRxAndTxRequest) TTCN_error("Using non-selected field enableRxAndTxRequest in a value of union type @UnifiedDiagnosticServices.CommunicationControlRequestType.");
+return *field_enableRxAndTxRequest;
+}
+
+EnableRxAndDisableTxRequest& CommunicationControlRequestType::enableRxAndDisableTxRequest()
+{
+if (union_selection != ALT_enableRxAndDisableTxRequest) {
+clean_up();
+field_enableRxAndDisableTxRequest = new EnableRxAndDisableTxRequest;
+union_selection = ALT_enableRxAndDisableTxRequest;
+}
+return *field_enableRxAndDisableTxRequest;
+}
+
+const EnableRxAndDisableTxRequest& CommunicationControlRequestType::enableRxAndDisableTxRequest() const
+{
+if (union_selection != ALT_enableRxAndDisableTxRequest) TTCN_error("Using non-selected field enableRxAndDisableTxRequest in a value of union type @UnifiedDiagnosticServices.CommunicationControlRequestType.");
+return *field_enableRxAndDisableTxRequest;
+}
+
+DisableRxAndEnableTxRequest& CommunicationControlRequestType::disableRxAndEnableTxRequest()
+{
+if (union_selection != ALT_disableRxAndEnableTxRequest) {
+clean_up();
+field_disableRxAndEnableTxRequest = new DisableRxAndEnableTxRequest;
+union_selection = ALT_disableRxAndEnableTxRequest;
+}
+return *field_disableRxAndEnableTxRequest;
+}
+
+const DisableRxAndEnableTxRequest& CommunicationControlRequestType::disableRxAndEnableTxRequest() const
+{
+if (union_selection != ALT_disableRxAndEnableTxRequest) TTCN_error("Using non-selected field disableRxAndEnableTxRequest in a value of union type @UnifiedDiagnosticServices.CommunicationControlRequestType.");
+return *field_disableRxAndEnableTxRequest;
+}
+
+DisableRxAndTxRequest& CommunicationControlRequestType::disableRxAndTxRequest()
+{
+if (union_selection != ALT_disableRxAndTxRequest) {
+clean_up();
+field_disableRxAndTxRequest = new DisableRxAndTxRequest;
+union_selection = ALT_disableRxAndTxRequest;
+}
+return *field_disableRxAndTxRequest;
+}
+
+const DisableRxAndTxRequest& CommunicationControlRequestType::disableRxAndTxRequest() const
+{
+if (union_selection != ALT_disableRxAndTxRequest) TTCN_error("Using non-selected field disableRxAndTxRequest in a value of union type @UnifiedDiagnosticServices.CommunicationControlRequestType.");
+return *field_disableRxAndTxRequest;
+}
+
+EnableRxAndDisableTxWithEnhancedAddressInformationRequest& CommunicationControlRequestType::enableRxAndDisableTxWithEnhancedAddressInformationRequest()
+{
+if (union_selection != ALT_enableRxAndDisableTxWithEnhancedAddressInformationRequest) {
+clean_up();
+field_enableRxAndDisableTxWithEnhancedAddressInformationRequest = new EnableRxAndDisableTxWithEnhancedAddressInformationRequest;
+union_selection = ALT_enableRxAndDisableTxWithEnhancedAddressInformationRequest;
+}
+return *field_enableRxAndDisableTxWithEnhancedAddressInformationRequest;
+}
+
+const EnableRxAndDisableTxWithEnhancedAddressInformationRequest& CommunicationControlRequestType::enableRxAndDisableTxWithEnhancedAddressInformationRequest() const
+{
+if (union_selection != ALT_enableRxAndDisableTxWithEnhancedAddressInformationRequest) TTCN_error("Using non-selected field enableRxAndDisableTxWithEnhancedAddressInformationRequest in a value of union type @UnifiedDiagnosticServices.CommunicationControlRequestType.");
+return *field_enableRxAndDisableTxWithEnhancedAddressInformationRequest;
+}
+
+EnableRxAndTxWithEnhancedAddressInformationRequest& CommunicationControlRequestType::enableRxAndTxWithEnhancedAddressInformationRequest()
+{
+if (union_selection != ALT_enableRxAndTxWithEnhancedAddressInformationRequest) {
+clean_up();
+field_enableRxAndTxWithEnhancedAddressInformationRequest = new EnableRxAndTxWithEnhancedAddressInformationRequest;
+union_selection = ALT_enableRxAndTxWithEnhancedAddressInformationRequest;
+}
+return *field_enableRxAndTxWithEnhancedAddressInformationRequest;
+}
+
+const EnableRxAndTxWithEnhancedAddressInformationRequest& CommunicationControlRequestType::enableRxAndTxWithEnhancedAddressInformationRequest() const
+{
+if (union_selection != ALT_enableRxAndTxWithEnhancedAddressInformationRequest) TTCN_error("Using non-selected field enableRxAndTxWithEnhancedAddressInformationRequest in a value of union type @UnifiedDiagnosticServices.CommunicationControlRequestType.");
+return *field_enableRxAndTxWithEnhancedAddressInformationRequest;
+}
+
+boolean CommunicationControlRequestType::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 @UnifiedDiagnosticServices.CommunicationControlRequestType.");
+return union_selection == checked_selection;
+}
+
+boolean CommunicationControlRequestType::is_bound() const
+{
+  return union_selection != UNBOUND_VALUE;
+}
+
+boolean CommunicationControlRequestType::is_value() const
+{
+switch (union_selection) {
+case UNBOUND_VALUE: return FALSE;
+case ALT_enableRxAndTxRequest: return field_enableRxAndTxRequest->is_value();
+case ALT_enableRxAndDisableTxRequest: return field_enableRxAndDisableTxRequest->is_value();
+case ALT_disableRxAndEnableTxRequest: return field_disableRxAndEnableTxRequest->is_value();
+case ALT_disableRxAndTxRequest: return field_disableRxAndTxRequest->is_value();
+case ALT_enableRxAndDisableTxWithEnhancedAddressInformationRequest: return field_enableRxAndDisableTxWithEnhancedAddressInformationRequest->is_value();
+case ALT_enableRxAndTxWithEnhancedAddressInformationRequest: return field_enableRxAndTxWithEnhancedAddressInformationRequest->is_value();
+default: TTCN_error("Invalid selection in union is_bound");}
+}
+
+void CommunicationControlRequestType::clean_up()
+{
+switch (union_selection) {
+case ALT_enableRxAndTxRequest:
+  delete field_enableRxAndTxRequest;
+  break;
+case ALT_enableRxAndDisableTxRequest:
+  delete field_enableRxAndDisableTxRequest;
+  break;
+case ALT_disableRxAndEnableTxRequest:
+  delete field_disableRxAndEnableTxRequest;
+  break;
+case ALT_disableRxAndTxRequest:
+  delete field_disableRxAndTxRequest;
+  break;
+case ALT_enableRxAndDisableTxWithEnhancedAddressInformationRequest:
+  delete field_enableRxAndDisableTxWithEnhancedAddressInformationRequest;
+  break;
+case ALT_enableRxAndTxWithEnhancedAddressInformationRequest:
+  delete field_enableRxAndTxWithEnhancedAddressInformationRequest;
+  break;
+default:
+  break;
+}
+union_selection = UNBOUND_VALUE;
+}
+
+void CommunicationControlRequestType::log() const
+{
+switch (union_selection) {
+case ALT_enableRxAndTxRequest:
+TTCN_Logger::log_event_str("{ enableRxAndTxRequest := ");
+field_enableRxAndTxRequest->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_enableRxAndDisableTxRequest:
+TTCN_Logger::log_event_str("{ enableRxAndDisableTxRequest := ");
+field_enableRxAndDisableTxRequest->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_disableRxAndEnableTxRequest:
+TTCN_Logger::log_event_str("{ disableRxAndEnableTxRequest := ");
+field_disableRxAndEnableTxRequest->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_disableRxAndTxRequest:
+TTCN_Logger::log_event_str("{ disableRxAndTxRequest := ");
+field_disableRxAndTxRequest->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_enableRxAndDisableTxWithEnhancedAddressInformationRequest:
+TTCN_Logger::log_event_str("{ enableRxAndDisableTxWithEnhancedAddressInformationRequest := ");
+field_enableRxAndDisableTxWithEnhancedAddressInformationRequest->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_enableRxAndTxWithEnhancedAddressInformationRequest:
+TTCN_Logger::log_event_str("{ enableRxAndTxWithEnhancedAddressInformationRequest := ");
+field_enableRxAndTxWithEnhancedAddressInformationRequest->log();
+TTCN_Logger::log_event_str(" }");
+break;
+default:
+TTCN_Logger::log_event_unbound();
+}
+}
+
+void CommunicationControlRequestType::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, "enableRxAndTxRequest")) {
+    enableRxAndTxRequest().set_param(*mp_last);
+    if (!enableRxAndTxRequest().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "enableRxAndDisableTxRequest")) {
+    enableRxAndDisableTxRequest().set_param(*mp_last);
+    if (!enableRxAndDisableTxRequest().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "disableRxAndEnableTxRequest")) {
+    disableRxAndEnableTxRequest().set_param(*mp_last);
+    if (!disableRxAndEnableTxRequest().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "disableRxAndTxRequest")) {
+    disableRxAndTxRequest().set_param(*mp_last);
+    if (!disableRxAndTxRequest().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "enableRxAndDisableTxWithEnhancedAddressInformationRequest")) {
+    enableRxAndDisableTxWithEnhancedAddressInformationRequest().set_param(*mp_last);
+    if (!enableRxAndDisableTxWithEnhancedAddressInformationRequest().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "enableRxAndTxWithEnhancedAddressInformationRequest")) {
+    enableRxAndTxWithEnhancedAddressInformationRequest().set_param(*mp_last);
+    if (!enableRxAndTxWithEnhancedAddressInformationRequest().is_bound()) clean_up();
+    return;
+  }
+  mp_last->error("Field %s does not exist in type @UnifiedDiagnosticServices.CommunicationControlRequestType.", last_name);
+}
+
+void CommunicationControlRequestType::set_implicit_omit()
+{
+switch (union_selection) {
+case ALT_enableRxAndTxRequest:
+field_enableRxAndTxRequest->set_implicit_omit(); break;
+case ALT_enableRxAndDisableTxRequest:
+field_enableRxAndDisableTxRequest->set_implicit_omit(); break;
+case ALT_disableRxAndEnableTxRequest:
+field_disableRxAndEnableTxRequest->set_implicit_omit(); break;
+case ALT_disableRxAndTxRequest:
+field_disableRxAndTxRequest->set_implicit_omit(); break;
+case ALT_enableRxAndDisableTxWithEnhancedAddressInformationRequest:
+field_enableRxAndDisableTxWithEnhancedAddressInformationRequest->set_implicit_omit(); break;
+case ALT_enableRxAndTxWithEnhancedAddressInformationRequest:
+field_enableRxAndTxWithEnhancedAddressInformationRequest->set_implicit_omit(); break;
+default: break;
+}
+}
+
+void CommunicationControlRequestType::encode_text(Text_Buf& text_buf) const
+{
+text_buf.push_int(union_selection);
+switch (union_selection) {
+case ALT_enableRxAndTxRequest:
+field_enableRxAndTxRequest->encode_text(text_buf);
+break;
+case ALT_enableRxAndDisableTxRequest:
+field_enableRxAndDisableTxRequest->encode_text(text_buf);
+break;
+case ALT_disableRxAndEnableTxRequest:
+field_disableRxAndEnableTxRequest->encode_text(text_buf);
+break;
+case ALT_disableRxAndTxRequest:
+field_disableRxAndTxRequest->encode_text(text_buf);
+break;
+case ALT_enableRxAndDisableTxWithEnhancedAddressInformationRequest:
+field_enableRxAndDisableTxWithEnhancedAddressInformationRequest->encode_text(text_buf);
+break;
+case ALT_enableRxAndTxWithEnhancedAddressInformationRequest:
+field_enableRxAndTxWithEnhancedAddressInformationRequest->encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an unbound value of union type @UnifiedDiagnosticServices.CommunicationControlRequestType.");
+}
+}
+
+void CommunicationControlRequestType::decode_text(Text_Buf& text_buf)
+{
+switch ((union_selection_type)text_buf.pull_int().get_val()) {
+case ALT_enableRxAndTxRequest:
+enableRxAndTxRequest().decode_text(text_buf);
+break;
+case ALT_enableRxAndDisableTxRequest:
+enableRxAndDisableTxRequest().decode_text(text_buf);
+break;
+case ALT_disableRxAndEnableTxRequest:
+disableRxAndEnableTxRequest().decode_text(text_buf);
+break;
+case ALT_disableRxAndTxRequest:
+disableRxAndTxRequest().decode_text(text_buf);
+break;
+case ALT_enableRxAndDisableTxWithEnhancedAddressInformationRequest:
+enableRxAndDisableTxWithEnhancedAddressInformationRequest().decode_text(text_buf);
+break;
+case ALT_enableRxAndTxWithEnhancedAddressInformationRequest:
+enableRxAndTxWithEnhancedAddressInformationRequest().decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for type @UnifiedDiagnosticServices.CommunicationControlRequestType.");
+}
+}
+
+void CommunicationControlRequestType::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void CommunicationControlRequestType::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int CommunicationControlRequestType::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, EnableRxAndTxRequest_descr_.raw->forceomit);
+      decoded_length = enableRxAndTxRequest().RAW_decode(EnableRxAndTxRequest_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, EnableRxAndDisableTxRequest_descr_.raw->forceomit);
+      decoded_length = enableRxAndDisableTxRequest().RAW_decode(EnableRxAndDisableTxRequest_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, DisableRxAndEnableTxRequest_descr_.raw->forceomit);
+      decoded_length = disableRxAndEnableTxRequest().RAW_decode(DisableRxAndEnableTxRequest_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 3: {
+      RAW_Force_Omit field_force_omit(3, force_omit, DisableRxAndTxRequest_descr_.raw->forceomit);
+      decoded_length = disableRxAndTxRequest().RAW_decode(DisableRxAndTxRequest_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 4: {
+      RAW_Force_Omit field_force_omit(4, force_omit, EnableRxAndDisableTxWithEnhancedAddressInformationRequest_descr_.raw->forceomit);
+      decoded_length = enableRxAndDisableTxWithEnhancedAddressInformationRequest().RAW_decode(EnableRxAndDisableTxWithEnhancedAddressInformationRequest_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 5: {
+      RAW_Force_Omit field_force_omit(5, force_omit, EnableRxAndTxWithEnhancedAddressInformationRequest_descr_.raw->forceomit);
+      decoded_length = enableRxAndTxWithEnhancedAddressInformationRequest().RAW_decode(EnableRxAndTxWithEnhancedAddressInformationRequest_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 {
+    boolean already_failed = FALSE;
+    already_failed = FALSE;
+    if (!already_failed) {
+      BITSTRING temporal_0;
+      int decoded_0_length;
+      p_buf.set_pos_bit(starting_pos + 1);
+      decoded_0_length = temporal_0.RAW_decode(EnableRxAndTxRequest_controlType_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_0_length > 0) {
+        if (temporal_0 ==  bs_5) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(0, force_omit, EnableRxAndTxRequest_descr_.raw->forceomit);
+          decoded_length = enableRxAndTxRequest().RAW_decode(EnableRxAndTxRequest_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_enableRxAndTxRequest).controlType() ==  bs_5) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      BITSTRING temporal_1;
+      int decoded_1_length;
+      p_buf.set_pos_bit(starting_pos + 1);
+      decoded_1_length = temporal_1.RAW_decode(EnableRxAndDisableTxRequest_controlType_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_1_length > 0) {
+        if (temporal_1 ==  bs_0) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(1, force_omit, EnableRxAndDisableTxRequest_descr_.raw->forceomit);
+          decoded_length = enableRxAndDisableTxRequest().RAW_decode(EnableRxAndDisableTxRequest_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_enableRxAndDisableTxRequest).controlType() ==  bs_0) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      BITSTRING temporal_2;
+      int decoded_2_length;
+      p_buf.set_pos_bit(starting_pos + 1);
+      decoded_2_length = temporal_2.RAW_decode(DisableRxAndEnableTxRequest_controlType_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_2_length > 0) {
+        if (temporal_2 ==  bs_1) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(2, force_omit, DisableRxAndEnableTxRequest_descr_.raw->forceomit);
+          decoded_length = disableRxAndEnableTxRequest().RAW_decode(DisableRxAndEnableTxRequest_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_disableRxAndEnableTxRequest).controlType() ==  bs_1) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      BITSTRING temporal_3;
+      int decoded_3_length;
+      p_buf.set_pos_bit(starting_pos + 1);
+      decoded_3_length = temporal_3.RAW_decode(DisableRxAndTxRequest_controlType_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_3_length > 0) {
+        if (temporal_3 ==  bs_2) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(3, force_omit, DisableRxAndTxRequest_descr_.raw->forceomit);
+          decoded_length = disableRxAndTxRequest().RAW_decode(DisableRxAndTxRequest_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_disableRxAndTxRequest).controlType() ==  bs_2) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      BITSTRING temporal_4;
+      int decoded_4_length;
+      p_buf.set_pos_bit(starting_pos + 1);
+      decoded_4_length = temporal_4.RAW_decode(EnableRxAndDisableTxWithEnhancedAddressInformationRequest_controlType_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_4_length > 0) {
+        if (temporal_4 ==  bs_3) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(4, force_omit, EnableRxAndDisableTxWithEnhancedAddressInformationRequest_descr_.raw->forceomit);
+          decoded_length = enableRxAndDisableTxWithEnhancedAddressInformationRequest().RAW_decode(EnableRxAndDisableTxWithEnhancedAddressInformationRequest_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_enableRxAndDisableTxWithEnhancedAddressInformationRequest).controlType() ==  bs_3) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      BITSTRING temporal_5;
+      int decoded_5_length;
+      p_buf.set_pos_bit(starting_pos + 1);
+      decoded_5_length = temporal_5.RAW_decode(EnableRxAndTxWithEnhancedAddressInformationRequest_controlType_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_5_length > 0) {
+        if (temporal_5 ==  bs_4) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(5, force_omit, EnableRxAndTxWithEnhancedAddressInformationRequest_descr_.raw->forceomit);
+          decoded_length = enableRxAndTxWithEnhancedAddressInformationRequest().RAW_decode(EnableRxAndTxWithEnhancedAddressInformationRequest_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_enableRxAndTxWithEnhancedAddressInformationRequest).controlType() ==  bs_4) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+ }
+ clean_up();
+ return -1;
+}
+
+int CommunicationControlRequestType::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const
+{
+  int encoded_length = 0;
+  myleaf.isleaf = FALSE;
+  myleaf.body.node.num_of_nodes = 6;  myleaf.body.node.nodes = init_nodes_of_enc_tree(6);
+  memset(myleaf.body.node.nodes, 0, 6 * sizeof(RAW_enc_tree *));
+  switch (union_selection) {
+  case ALT_enableRxAndTxRequest:
+    myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 0, EnableRxAndTxRequest_descr_.raw);
+    encoded_length = field_enableRxAndTxRequest->RAW_encode(EnableRxAndTxRequest_descr_, *myleaf.body.node.nodes[0]);
+    myleaf.body.node.nodes[0]->coding_descr = &EnableRxAndTxRequest_descr_;
+    if ((*field_enableRxAndTxRequest).controlType() !=  bs_5) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={0,1};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   bs_5.RAW_encode(EnableRxAndTxRequest_controlType_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);
+  }
+    }
+    break;
+  case ALT_enableRxAndDisableTxRequest:
+    myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 1, EnableRxAndDisableTxRequest_descr_.raw);
+    encoded_length = field_enableRxAndDisableTxRequest->RAW_encode(EnableRxAndDisableTxRequest_descr_, *myleaf.body.node.nodes[1]);
+    myleaf.body.node.nodes[1]->coding_descr = &EnableRxAndDisableTxRequest_descr_;
+    if ((*field_enableRxAndDisableTxRequest).controlType() !=  bs_0) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={1,1};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   bs_0.RAW_encode(EnableRxAndDisableTxRequest_controlType_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);
+  }
+    }
+    break;
+  case ALT_disableRxAndEnableTxRequest:
+    myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 2, DisableRxAndEnableTxRequest_descr_.raw);
+    encoded_length = field_disableRxAndEnableTxRequest->RAW_encode(DisableRxAndEnableTxRequest_descr_, *myleaf.body.node.nodes[2]);
+    myleaf.body.node.nodes[2]->coding_descr = &DisableRxAndEnableTxRequest_descr_;
+    if ((*field_disableRxAndEnableTxRequest).controlType() !=  bs_1) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={2,1};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   bs_1.RAW_encode(DisableRxAndEnableTxRequest_controlType_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);
+  }
+    }
+    break;
+  case ALT_disableRxAndTxRequest:
+    myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 3, DisableRxAndTxRequest_descr_.raw);
+    encoded_length = field_disableRxAndTxRequest->RAW_encode(DisableRxAndTxRequest_descr_, *myleaf.body.node.nodes[3]);
+    myleaf.body.node.nodes[3]->coding_descr = &DisableRxAndTxRequest_descr_;
+    if ((*field_disableRxAndTxRequest).controlType() !=  bs_2) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={3,1};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   bs_2.RAW_encode(DisableRxAndTxRequest_controlType_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);
+  }
+    }
+    break;
+  case ALT_enableRxAndDisableTxWithEnhancedAddressInformationRequest:
+    myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 4, EnableRxAndDisableTxWithEnhancedAddressInformationRequest_descr_.raw);
+    encoded_length = field_enableRxAndDisableTxWithEnhancedAddressInformationRequest->RAW_encode(EnableRxAndDisableTxWithEnhancedAddressInformationRequest_descr_, *myleaf.body.node.nodes[4]);
+    myleaf.body.node.nodes[4]->coding_descr = &EnableRxAndDisableTxWithEnhancedAddressInformationRequest_descr_;
+    if ((*field_enableRxAndDisableTxWithEnhancedAddressInformationRequest).controlType() !=  bs_3) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={4,1};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   bs_3.RAW_encode(EnableRxAndDisableTxWithEnhancedAddressInformationRequest_controlType_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);
+  }
+    }
+    break;
+  case ALT_enableRxAndTxWithEnhancedAddressInformationRequest:
+    myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 5, EnableRxAndTxWithEnhancedAddressInformationRequest_descr_.raw);
+    encoded_length = field_enableRxAndTxWithEnhancedAddressInformationRequest->RAW_encode(EnableRxAndTxWithEnhancedAddressInformationRequest_descr_, *myleaf.body.node.nodes[5]);
+    myleaf.body.node.nodes[5]->coding_descr = &EnableRxAndTxWithEnhancedAddressInformationRequest_descr_;
+    if ((*field_enableRxAndTxWithEnhancedAddressInformationRequest).controlType() !=  bs_4) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={5,1};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   bs_4.RAW_encode(EnableRxAndTxWithEnhancedAddressInformationRequest_controlType_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);
+  }
+    }
+    break;
+  default:
+    TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
+  }
+  return encoded_length;
+}
+
+void CommunicationControlRequestType_template::copy_value(const CommunicationControlRequestType& other_value)
+{
+single_value.union_selection = other_value.get_selection();
+switch (single_value.union_selection) {
+case CommunicationControlRequestType::ALT_enableRxAndTxRequest:
+single_value.field_enableRxAndTxRequest = new EnableRxAndTxRequest_template(other_value.enableRxAndTxRequest());
+break;
+case CommunicationControlRequestType::ALT_enableRxAndDisableTxRequest:
+single_value.field_enableRxAndDisableTxRequest = new EnableRxAndDisableTxRequest_template(other_value.enableRxAndDisableTxRequest());
+break;
+case CommunicationControlRequestType::ALT_disableRxAndEnableTxRequest:
+single_value.field_disableRxAndEnableTxRequest = new DisableRxAndEnableTxRequest_template(other_value.disableRxAndEnableTxRequest());
+break;
+case CommunicationControlRequestType::ALT_disableRxAndTxRequest:
+single_value.field_disableRxAndTxRequest = new DisableRxAndTxRequest_template(other_value.disableRxAndTxRequest());
+break;
+case CommunicationControlRequestType::ALT_enableRxAndDisableTxWithEnhancedAddressInformationRequest:
+single_value.field_enableRxAndDisableTxWithEnhancedAddressInformationRequest = new EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template(other_value.enableRxAndDisableTxWithEnhancedAddressInformationRequest());
+break;
+case CommunicationControlRequestType::ALT_enableRxAndTxWithEnhancedAddressInformationRequest:
+single_value.field_enableRxAndTxWithEnhancedAddressInformationRequest = new EnableRxAndTxWithEnhancedAddressInformationRequest_template(other_value.enableRxAndTxWithEnhancedAddressInformationRequest());
+break;
+default:
+TTCN_error("Initializing a template with an unbound value of type @UnifiedDiagnosticServices.CommunicationControlRequestType.");
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void CommunicationControlRequestType_template::copy_template(const CommunicationControlRequestType_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 CommunicationControlRequestType::ALT_enableRxAndTxRequest:
+single_value.field_enableRxAndTxRequest = new EnableRxAndTxRequest_template(*other_value.single_value.field_enableRxAndTxRequest);
+break;
+case CommunicationControlRequestType::ALT_enableRxAndDisableTxRequest:
+single_value.field_enableRxAndDisableTxRequest = new EnableRxAndDisableTxRequest_template(*other_value.single_value.field_enableRxAndDisableTxRequest);
+break;
+case CommunicationControlRequestType::ALT_disableRxAndEnableTxRequest:
+single_value.field_disableRxAndEnableTxRequest = new DisableRxAndEnableTxRequest_template(*other_value.single_value.field_disableRxAndEnableTxRequest);
+break;
+case CommunicationControlRequestType::ALT_disableRxAndTxRequest:
+single_value.field_disableRxAndTxRequest = new DisableRxAndTxRequest_template(*other_value.single_value.field_disableRxAndTxRequest);
+break;
+case CommunicationControlRequestType::ALT_enableRxAndDisableTxWithEnhancedAddressInformationRequest:
+single_value.field_enableRxAndDisableTxWithEnhancedAddressInformationRequest = new EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template(*other_value.single_value.field_enableRxAndDisableTxWithEnhancedAddressInformationRequest);
+break;
+case CommunicationControlRequestType::ALT_enableRxAndTxWithEnhancedAddressInformationRequest:
+single_value.field_enableRxAndTxWithEnhancedAddressInformationRequest = new EnableRxAndTxWithEnhancedAddressInformationRequest_template(*other_value.single_value.field_enableRxAndTxWithEnhancedAddressInformationRequest);
+break;
+default:
+TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @UnifiedDiagnosticServices.CommunicationControlRequestType.");
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new CommunicationControlRequestType_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;
+default:
+TTCN_error("Copying an uninitialized template of union type @UnifiedDiagnosticServices.CommunicationControlRequestType.");
+}
+set_selection(other_value);
+}
+
+CommunicationControlRequestType_template::CommunicationControlRequestType_template()
+{
+}
+
+CommunicationControlRequestType_template::CommunicationControlRequestType_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+CommunicationControlRequestType_template::CommunicationControlRequestType_template(const CommunicationControlRequestType& other_value)
+{
+copy_value(other_value);
+}
+
+CommunicationControlRequestType_template::CommunicationControlRequestType_template(const OPTIONAL<CommunicationControlRequestType>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CommunicationControlRequestType&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of union type @UnifiedDiagnosticServices.CommunicationControlRequestType from an unbound optional field.");
+}
+}
+
+CommunicationControlRequestType_template::CommunicationControlRequestType_template(const CommunicationControlRequestType_template& other_value)
+: Base_Template(){
+copy_template(other_value);
+}
+
+CommunicationControlRequestType_template::~CommunicationControlRequestType_template()
+{
+clean_up();
+}
+
+void CommunicationControlRequestType_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case CommunicationControlRequestType::ALT_enableRxAndTxRequest:
+delete single_value.field_enableRxAndTxRequest;
+break;
+case CommunicationControlRequestType::ALT_enableRxAndDisableTxRequest:
+delete single_value.field_enableRxAndDisableTxRequest;
+break;
+case CommunicationControlRequestType::ALT_disableRxAndEnableTxRequest:
+delete single_value.field_disableRxAndEnableTxRequest;
+break;
+case CommunicationControlRequestType::ALT_disableRxAndTxRequest:
+delete single_value.field_disableRxAndTxRequest;
+break;
+case CommunicationControlRequestType::ALT_enableRxAndDisableTxWithEnhancedAddressInformationRequest:
+delete single_value.field_enableRxAndDisableTxWithEnhancedAddressInformationRequest;
+break;
+case CommunicationControlRequestType::ALT_enableRxAndTxWithEnhancedAddressInformationRequest:
+delete single_value.field_enableRxAndTxWithEnhancedAddressInformationRequest;
+default:
+break;
+}
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+CommunicationControlRequestType_template& CommunicationControlRequestType_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+CommunicationControlRequestType_template& CommunicationControlRequestType_template::operator=(const CommunicationControlRequestType& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+CommunicationControlRequestType_template& CommunicationControlRequestType_template::operator=(const OPTIONAL<CommunicationControlRequestType>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CommunicationControlRequestType&)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 @UnifiedDiagnosticServices.CommunicationControlRequestType.");
+}
+return *this;
+}
+
+CommunicationControlRequestType_template& CommunicationControlRequestType_template::operator=(const CommunicationControlRequestType_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean CommunicationControlRequestType_template::match(const CommunicationControlRequestType& 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:
+{
+CommunicationControlRequestType::union_selection_type value_selection = other_value.get_selection();
+if (value_selection == CommunicationControlRequestType::UNBOUND_VALUE) return FALSE;
+if (value_selection != single_value.union_selection) return FALSE;
+switch (value_selection) {
+case CommunicationControlRequestType::ALT_enableRxAndTxRequest:
+return single_value.field_enableRxAndTxRequest->match(other_value.enableRxAndTxRequest(), legacy);
+case CommunicationControlRequestType::ALT_enableRxAndDisableTxRequest:
+return single_value.field_enableRxAndDisableTxRequest->match(other_value.enableRxAndDisableTxRequest(), legacy);
+case CommunicationControlRequestType::ALT_disableRxAndEnableTxRequest:
+return single_value.field_disableRxAndEnableTxRequest->match(other_value.disableRxAndEnableTxRequest(), legacy);
+case CommunicationControlRequestType::ALT_disableRxAndTxRequest:
+return single_value.field_disableRxAndTxRequest->match(other_value.disableRxAndTxRequest(), legacy);
+case CommunicationControlRequestType::ALT_enableRxAndDisableTxWithEnhancedAddressInformationRequest:
+return single_value.field_enableRxAndDisableTxWithEnhancedAddressInformationRequest->match(other_value.enableRxAndDisableTxWithEnhancedAddressInformationRequest(), legacy);
+case CommunicationControlRequestType::ALT_enableRxAndTxWithEnhancedAddressInformationRequest:
+return single_value.field_enableRxAndTxWithEnhancedAddressInformationRequest->match(other_value.enableRxAndTxWithEnhancedAddressInformationRequest(), legacy);
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @UnifiedDiagnosticServices.CommunicationControlRequestType.");
+}
+}
+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;
+default:
+TTCN_error ("Matching an uninitialized template of union type @UnifiedDiagnosticServices.CommunicationControlRequestType.");
+}
+return FALSE;
+}
+
+boolean CommunicationControlRequestType_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+switch (single_value.union_selection) {
+case CommunicationControlRequestType::ALT_enableRxAndTxRequest:
+return single_value.field_enableRxAndTxRequest->is_value();
+case CommunicationControlRequestType::ALT_enableRxAndDisableTxRequest:
+return single_value.field_enableRxAndDisableTxRequest->is_value();
+case CommunicationControlRequestType::ALT_disableRxAndEnableTxRequest:
+return single_value.field_disableRxAndEnableTxRequest->is_value();
+case CommunicationControlRequestType::ALT_disableRxAndTxRequest:
+return single_value.field_disableRxAndTxRequest->is_value();
+case CommunicationControlRequestType::ALT_enableRxAndDisableTxWithEnhancedAddressInformationRequest:
+return single_value.field_enableRxAndDisableTxWithEnhancedAddressInformationRequest->is_value();
+case CommunicationControlRequestType::ALT_enableRxAndTxWithEnhancedAddressInformationRequest:
+return single_value.field_enableRxAndTxWithEnhancedAddressInformationRequest->is_value();
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @UnifiedDiagnosticServices.CommunicationControlRequestType.");
+}
+}
+
+CommunicationControlRequestType CommunicationControlRequestType_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 @UnifiedDiagnosticServices.CommunicationControlRequestType.");
+CommunicationControlRequestType ret_val;
+switch (single_value.union_selection) {
+case CommunicationControlRequestType::ALT_enableRxAndTxRequest:
+ret_val.enableRxAndTxRequest() = single_value.field_enableRxAndTxRequest->valueof();
+break;
+case CommunicationControlRequestType::ALT_enableRxAndDisableTxRequest:
+ret_val.enableRxAndDisableTxRequest() = single_value.field_enableRxAndDisableTxRequest->valueof();
+break;
+case CommunicationControlRequestType::ALT_disableRxAndEnableTxRequest:
+ret_val.disableRxAndEnableTxRequest() = single_value.field_disableRxAndEnableTxRequest->valueof();
+break;
+case CommunicationControlRequestType::ALT_disableRxAndTxRequest:
+ret_val.disableRxAndTxRequest() = single_value.field_disableRxAndTxRequest->valueof();
+break;
+case CommunicationControlRequestType::ALT_enableRxAndDisableTxWithEnhancedAddressInformationRequest:
+ret_val.enableRxAndDisableTxWithEnhancedAddressInformationRequest() = single_value.field_enableRxAndDisableTxWithEnhancedAddressInformationRequest->valueof();
+break;
+case CommunicationControlRequestType::ALT_enableRxAndTxWithEnhancedAddressInformationRequest:
+ret_val.enableRxAndTxWithEnhancedAddressInformationRequest() = single_value.field_enableRxAndTxWithEnhancedAddressInformationRequest->valueof();
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @UnifiedDiagnosticServices.CommunicationControlRequestType.");
+}
+return ret_val;
+}
+
+CommunicationControlRequestType_template& CommunicationControlRequestType_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @UnifiedDiagnosticServices.CommunicationControlRequestType.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @UnifiedDiagnosticServices.CommunicationControlRequestType.");
+return value_list.list_value[list_index];
+}
+void CommunicationControlRequestType_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error ("Internal error: Setting an invalid list for a template of union type @UnifiedDiagnosticServices.CommunicationControlRequestType.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new CommunicationControlRequestType_template[list_length];
+}
+
+EnableRxAndTxRequest_template& CommunicationControlRequestType_template::enableRxAndTxRequest()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != CommunicationControlRequestType::ALT_enableRxAndTxRequest) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_enableRxAndTxRequest = new EnableRxAndTxRequest_template(ANY_VALUE);
+else single_value.field_enableRxAndTxRequest = new EnableRxAndTxRequest_template;
+single_value.union_selection = CommunicationControlRequestType::ALT_enableRxAndTxRequest;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_enableRxAndTxRequest;
+}
+
+const EnableRxAndTxRequest_template& CommunicationControlRequestType_template::enableRxAndTxRequest() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field enableRxAndTxRequest in a non-specific template of union type @UnifiedDiagnosticServices.CommunicationControlRequestType.");
+if (single_value.union_selection != CommunicationControlRequestType::ALT_enableRxAndTxRequest) TTCN_error("Accessing non-selected field enableRxAndTxRequest in a template of union type @UnifiedDiagnosticServices.CommunicationControlRequestType.");
+return *single_value.field_enableRxAndTxRequest;
+}
+
+EnableRxAndDisableTxRequest_template& CommunicationControlRequestType_template::enableRxAndDisableTxRequest()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != CommunicationControlRequestType::ALT_enableRxAndDisableTxRequest) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_enableRxAndDisableTxRequest = new EnableRxAndDisableTxRequest_template(ANY_VALUE);
+else single_value.field_enableRxAndDisableTxRequest = new EnableRxAndDisableTxRequest_template;
+single_value.union_selection = CommunicationControlRequestType::ALT_enableRxAndDisableTxRequest;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_enableRxAndDisableTxRequest;
+}
+
+const EnableRxAndDisableTxRequest_template& CommunicationControlRequestType_template::enableRxAndDisableTxRequest() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field enableRxAndDisableTxRequest in a non-specific template of union type @UnifiedDiagnosticServices.CommunicationControlRequestType.");
+if (single_value.union_selection != CommunicationControlRequestType::ALT_enableRxAndDisableTxRequest) TTCN_error("Accessing non-selected field enableRxAndDisableTxRequest in a template of union type @UnifiedDiagnosticServices.CommunicationControlRequestType.");
+return *single_value.field_enableRxAndDisableTxRequest;
+}
+
+DisableRxAndEnableTxRequest_template& CommunicationControlRequestType_template::disableRxAndEnableTxRequest()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != CommunicationControlRequestType::ALT_disableRxAndEnableTxRequest) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_disableRxAndEnableTxRequest = new DisableRxAndEnableTxRequest_template(ANY_VALUE);
+else single_value.field_disableRxAndEnableTxRequest = new DisableRxAndEnableTxRequest_template;
+single_value.union_selection = CommunicationControlRequestType::ALT_disableRxAndEnableTxRequest;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_disableRxAndEnableTxRequest;
+}
+
+const DisableRxAndEnableTxRequest_template& CommunicationControlRequestType_template::disableRxAndEnableTxRequest() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field disableRxAndEnableTxRequest in a non-specific template of union type @UnifiedDiagnosticServices.CommunicationControlRequestType.");
+if (single_value.union_selection != CommunicationControlRequestType::ALT_disableRxAndEnableTxRequest) TTCN_error("Accessing non-selected field disableRxAndEnableTxRequest in a template of union type @UnifiedDiagnosticServices.CommunicationControlRequestType.");
+return *single_value.field_disableRxAndEnableTxRequest;
+}
+
+DisableRxAndTxRequest_template& CommunicationControlRequestType_template::disableRxAndTxRequest()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != CommunicationControlRequestType::ALT_disableRxAndTxRequest) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_disableRxAndTxRequest = new DisableRxAndTxRequest_template(ANY_VALUE);
+else single_value.field_disableRxAndTxRequest = new DisableRxAndTxRequest_template;
+single_value.union_selection = CommunicationControlRequestType::ALT_disableRxAndTxRequest;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_disableRxAndTxRequest;
+}
+
+const DisableRxAndTxRequest_template& CommunicationControlRequestType_template::disableRxAndTxRequest() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field disableRxAndTxRequest in a non-specific template of union type @UnifiedDiagnosticServices.CommunicationControlRequestType.");
+if (single_value.union_selection != CommunicationControlRequestType::ALT_disableRxAndTxRequest) TTCN_error("Accessing non-selected field disableRxAndTxRequest in a template of union type @UnifiedDiagnosticServices.CommunicationControlRequestType.");
+return *single_value.field_disableRxAndTxRequest;
+}
+
+EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template& CommunicationControlRequestType_template::enableRxAndDisableTxWithEnhancedAddressInformationRequest()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != CommunicationControlRequestType::ALT_enableRxAndDisableTxWithEnhancedAddressInformationRequest) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_enableRxAndDisableTxWithEnhancedAddressInformationRequest = new EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template(ANY_VALUE);
+else single_value.field_enableRxAndDisableTxWithEnhancedAddressInformationRequest = new EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template;
+single_value.union_selection = CommunicationControlRequestType::ALT_enableRxAndDisableTxWithEnhancedAddressInformationRequest;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_enableRxAndDisableTxWithEnhancedAddressInformationRequest;
+}
+
+const EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template& CommunicationControlRequestType_template::enableRxAndDisableTxWithEnhancedAddressInformationRequest() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field enableRxAndDisableTxWithEnhancedAddressInformationRequest in a non-specific template of union type @UnifiedDiagnosticServices.CommunicationControlRequestType.");
+if (single_value.union_selection != CommunicationControlRequestType::ALT_enableRxAndDisableTxWithEnhancedAddressInformationRequest) TTCN_error("Accessing non-selected field enableRxAndDisableTxWithEnhancedAddressInformationRequest in a template of union type @UnifiedDiagnosticServices.CommunicationControlRequestType.");
+return *single_value.field_enableRxAndDisableTxWithEnhancedAddressInformationRequest;
+}
+
+EnableRxAndTxWithEnhancedAddressInformationRequest_template& CommunicationControlRequestType_template::enableRxAndTxWithEnhancedAddressInformationRequest()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != CommunicationControlRequestType::ALT_enableRxAndTxWithEnhancedAddressInformationRequest) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_enableRxAndTxWithEnhancedAddressInformationRequest = new EnableRxAndTxWithEnhancedAddressInformationRequest_template(ANY_VALUE);
+else single_value.field_enableRxAndTxWithEnhancedAddressInformationRequest = new EnableRxAndTxWithEnhancedAddressInformationRequest_template;
+single_value.union_selection = CommunicationControlRequestType::ALT_enableRxAndTxWithEnhancedAddressInformationRequest;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_enableRxAndTxWithEnhancedAddressInformationRequest;
+}
+
+const EnableRxAndTxWithEnhancedAddressInformationRequest_template& CommunicationControlRequestType_template::enableRxAndTxWithEnhancedAddressInformationRequest() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field enableRxAndTxWithEnhancedAddressInformationRequest in a non-specific template of union type @UnifiedDiagnosticServices.CommunicationControlRequestType.");
+if (single_value.union_selection != CommunicationControlRequestType::ALT_enableRxAndTxWithEnhancedAddressInformationRequest) TTCN_error("Accessing non-selected field enableRxAndTxWithEnhancedAddressInformationRequest in a template of union type @UnifiedDiagnosticServices.CommunicationControlRequestType.");
+return *single_value.field_enableRxAndTxWithEnhancedAddressInformationRequest;
+}
+
+boolean CommunicationControlRequestType_template::ischosen(CommunicationControlRequestType::union_selection_type checked_selection) const
+{
+if (checked_selection == CommunicationControlRequestType::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @UnifiedDiagnosticServices.CommunicationControlRequestType.");
+switch (template_selection) {
+case SPECIFIC_VALUE:
+if (single_value.union_selection == CommunicationControlRequestType::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @UnifiedDiagnosticServices.CommunicationControlRequestType.");
+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 @UnifiedDiagnosticServices.CommunicationControlRequestType 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 CommunicationControlRequestType_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case CommunicationControlRequestType::ALT_enableRxAndTxRequest:
+TTCN_Logger::log_event_str("{ enableRxAndTxRequest := ");
+single_value.field_enableRxAndTxRequest->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case CommunicationControlRequestType::ALT_enableRxAndDisableTxRequest:
+TTCN_Logger::log_event_str("{ enableRxAndDisableTxRequest := ");
+single_value.field_enableRxAndDisableTxRequest->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case CommunicationControlRequestType::ALT_disableRxAndEnableTxRequest:
+TTCN_Logger::log_event_str("{ disableRxAndEnableTxRequest := ");
+single_value.field_disableRxAndEnableTxRequest->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case CommunicationControlRequestType::ALT_disableRxAndTxRequest:
+TTCN_Logger::log_event_str("{ disableRxAndTxRequest := ");
+single_value.field_disableRxAndTxRequest->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case CommunicationControlRequestType::ALT_enableRxAndDisableTxWithEnhancedAddressInformationRequest:
+TTCN_Logger::log_event_str("{ enableRxAndDisableTxWithEnhancedAddressInformationRequest := ");
+single_value.field_enableRxAndDisableTxWithEnhancedAddressInformationRequest->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case CommunicationControlRequestType::ALT_enableRxAndTxWithEnhancedAddressInformationRequest:
+TTCN_Logger::log_event_str("{ enableRxAndTxWithEnhancedAddressInformationRequest := ");
+single_value.field_enableRxAndTxWithEnhancedAddressInformationRequest->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 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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void CommunicationControlRequestType_template::log_match(const CommunicationControlRequestType& 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()) {
+switch (single_value.union_selection) {
+case CommunicationControlRequestType::ALT_enableRxAndTxRequest:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".enableRxAndTxRequest");
+single_value.field_enableRxAndTxRequest->log_match(match_value.enableRxAndTxRequest(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ enableRxAndTxRequest := ");
+single_value.field_enableRxAndTxRequest->log_match(match_value.enableRxAndTxRequest(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case CommunicationControlRequestType::ALT_enableRxAndDisableTxRequest:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".enableRxAndDisableTxRequest");
+single_value.field_enableRxAndDisableTxRequest->log_match(match_value.enableRxAndDisableTxRequest(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ enableRxAndDisableTxRequest := ");
+single_value.field_enableRxAndDisableTxRequest->log_match(match_value.enableRxAndDisableTxRequest(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case CommunicationControlRequestType::ALT_disableRxAndEnableTxRequest:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".disableRxAndEnableTxRequest");
+single_value.field_disableRxAndEnableTxRequest->log_match(match_value.disableRxAndEnableTxRequest(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ disableRxAndEnableTxRequest := ");
+single_value.field_disableRxAndEnableTxRequest->log_match(match_value.disableRxAndEnableTxRequest(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case CommunicationControlRequestType::ALT_disableRxAndTxRequest:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".disableRxAndTxRequest");
+single_value.field_disableRxAndTxRequest->log_match(match_value.disableRxAndTxRequest(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ disableRxAndTxRequest := ");
+single_value.field_disableRxAndTxRequest->log_match(match_value.disableRxAndTxRequest(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case CommunicationControlRequestType::ALT_enableRxAndDisableTxWithEnhancedAddressInformationRequest:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".enableRxAndDisableTxWithEnhancedAddressInformationRequest");
+single_value.field_enableRxAndDisableTxWithEnhancedAddressInformationRequest->log_match(match_value.enableRxAndDisableTxWithEnhancedAddressInformationRequest(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ enableRxAndDisableTxWithEnhancedAddressInformationRequest := ");
+single_value.field_enableRxAndDisableTxWithEnhancedAddressInformationRequest->log_match(match_value.enableRxAndDisableTxWithEnhancedAddressInformationRequest(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case CommunicationControlRequestType::ALT_enableRxAndTxWithEnhancedAddressInformationRequest:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".enableRxAndTxWithEnhancedAddressInformationRequest");
+single_value.field_enableRxAndTxWithEnhancedAddressInformationRequest->log_match(match_value.enableRxAndTxWithEnhancedAddressInformationRequest(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ enableRxAndTxWithEnhancedAddressInformationRequest := ");
+single_value.field_enableRxAndTxWithEnhancedAddressInformationRequest->log_match(match_value.enableRxAndTxWithEnhancedAddressInformationRequest(), 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 CommunicationControlRequestType_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 CommunicationControlRequestType::ALT_enableRxAndTxRequest:
+single_value.field_enableRxAndTxRequest->encode_text(text_buf);
+break;
+case CommunicationControlRequestType::ALT_enableRxAndDisableTxRequest:
+single_value.field_enableRxAndDisableTxRequest->encode_text(text_buf);
+break;
+case CommunicationControlRequestType::ALT_disableRxAndEnableTxRequest:
+single_value.field_disableRxAndEnableTxRequest->encode_text(text_buf);
+break;
+case CommunicationControlRequestType::ALT_disableRxAndTxRequest:
+single_value.field_disableRxAndTxRequest->encode_text(text_buf);
+break;
+case CommunicationControlRequestType::ALT_enableRxAndDisableTxWithEnhancedAddressInformationRequest:
+single_value.field_enableRxAndDisableTxWithEnhancedAddressInformationRequest->encode_text(text_buf);
+break;
+case CommunicationControlRequestType::ALT_enableRxAndTxWithEnhancedAddressInformationRequest:
+single_value.field_enableRxAndTxWithEnhancedAddressInformationRequest->encode_text(text_buf);
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @UnifiedDiagnosticServices.CommunicationControlRequestType.");
+}
+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 @UnifiedDiagnosticServices.CommunicationControlRequestType.");
+}
+}
+
+void CommunicationControlRequestType_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+{
+single_value.union_selection = CommunicationControlRequestType::UNBOUND_VALUE;
+CommunicationControlRequestType::union_selection_type new_selection = (CommunicationControlRequestType::union_selection_type)text_buf.pull_int().get_val();
+switch (new_selection) {
+case CommunicationControlRequestType::ALT_enableRxAndTxRequest:
+single_value.field_enableRxAndTxRequest = new EnableRxAndTxRequest_template;
+single_value.field_enableRxAndTxRequest->decode_text(text_buf);
+break;
+case CommunicationControlRequestType::ALT_enableRxAndDisableTxRequest:
+single_value.field_enableRxAndDisableTxRequest = new EnableRxAndDisableTxRequest_template;
+single_value.field_enableRxAndDisableTxRequest->decode_text(text_buf);
+break;
+case CommunicationControlRequestType::ALT_disableRxAndEnableTxRequest:
+single_value.field_disableRxAndEnableTxRequest = new DisableRxAndEnableTxRequest_template;
+single_value.field_disableRxAndEnableTxRequest->decode_text(text_buf);
+break;
+case CommunicationControlRequestType::ALT_disableRxAndTxRequest:
+single_value.field_disableRxAndTxRequest = new DisableRxAndTxRequest_template;
+single_value.field_disableRxAndTxRequest->decode_text(text_buf);
+break;
+case CommunicationControlRequestType::ALT_enableRxAndDisableTxWithEnhancedAddressInformationRequest:
+single_value.field_enableRxAndDisableTxWithEnhancedAddressInformationRequest = new EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template;
+single_value.field_enableRxAndDisableTxWithEnhancedAddressInformationRequest->decode_text(text_buf);
+break;
+case CommunicationControlRequestType::ALT_enableRxAndTxWithEnhancedAddressInformationRequest:
+single_value.field_enableRxAndTxWithEnhancedAddressInformationRequest = new EnableRxAndTxWithEnhancedAddressInformationRequest_template;
+single_value.field_enableRxAndTxWithEnhancedAddressInformationRequest->decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @UnifiedDiagnosticServices.CommunicationControlRequestType.");
+}
+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 CommunicationControlRequestType_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 @UnifiedDiagnosticServices.CommunicationControlRequestType.");
+}
+}
+
+boolean CommunicationControlRequestType_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean CommunicationControlRequestType_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 CommunicationControlRequestType_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 `@UnifiedDiagnosticServices.CommunicationControlRequestType'");
+    }
+    if (strcmp("enableRxAndTxRequest", param_field) == 0) {
+      enableRxAndTxRequest().set_param(param);
+      return;
+    } else if (strcmp("enableRxAndDisableTxRequest", param_field) == 0) {
+      enableRxAndDisableTxRequest().set_param(param);
+      return;
+    } else if (strcmp("disableRxAndEnableTxRequest", param_field) == 0) {
+      disableRxAndEnableTxRequest().set_param(param);
+      return;
+    } else if (strcmp("disableRxAndTxRequest", param_field) == 0) {
+      disableRxAndTxRequest().set_param(param);
+      return;
+    } else if (strcmp("enableRxAndDisableTxWithEnhancedAddressInformationRequest", param_field) == 0) {
+      enableRxAndDisableTxWithEnhancedAddressInformationRequest().set_param(param);
+      return;
+    } else if (strcmp("enableRxAndTxWithEnhancedAddressInformationRequest", param_field) == 0) {
+      enableRxAndTxWithEnhancedAddressInformationRequest().set_param(param);
+      return;
+    } else param.error("Field `%s' not found in union template type `@UnifiedDiagnosticServices.CommunicationControlRequestType'", 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: {
+    CommunicationControlRequestType_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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", "@UnifiedDiagnosticServices.CommunicationControlRequestType");
+    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, "enableRxAndTxRequest")) {
+      enableRxAndTxRequest().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "enableRxAndDisableTxRequest")) {
+      enableRxAndDisableTxRequest().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "disableRxAndEnableTxRequest")) {
+      disableRxAndEnableTxRequest().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "disableRxAndTxRequest")) {
+      disableRxAndTxRequest().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "enableRxAndDisableTxWithEnhancedAddressInformationRequest")) {
+      enableRxAndDisableTxWithEnhancedAddressInformationRequest().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "enableRxAndTxWithEnhancedAddressInformationRequest")) {
+      enableRxAndTxWithEnhancedAddressInformationRequest().set_param(*mp_last);
+      break;
+    }
+    mp_last->error("Field %s does not exist in type @UnifiedDiagnosticServices.CommunicationControlRequestType.", last_name);
+  } break;
+  default:
+    param.type_error("union template", "@UnifiedDiagnosticServices.CommunicationControlRequestType");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void CommunicationControlRequestType_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 CommunicationControlRequestType::ALT_enableRxAndTxRequest:
+single_value.field_enableRxAndTxRequest->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.CommunicationControlRequestType");
+return;
+case CommunicationControlRequestType::ALT_enableRxAndDisableTxRequest:
+single_value.field_enableRxAndDisableTxRequest->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.CommunicationControlRequestType");
+return;
+case CommunicationControlRequestType::ALT_disableRxAndEnableTxRequest:
+single_value.field_disableRxAndEnableTxRequest->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.CommunicationControlRequestType");
+return;
+case CommunicationControlRequestType::ALT_disableRxAndTxRequest:
+single_value.field_disableRxAndTxRequest->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.CommunicationControlRequestType");
+return;
+case CommunicationControlRequestType::ALT_enableRxAndDisableTxWithEnhancedAddressInformationRequest:
+single_value.field_enableRxAndDisableTxWithEnhancedAddressInformationRequest->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.CommunicationControlRequestType");
+return;
+case CommunicationControlRequestType::ALT_enableRxAndTxWithEnhancedAddressInformationRequest:
+single_value.field_enableRxAndTxWithEnhancedAddressInformationRequest->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.CommunicationControlRequestType");
+return;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @UnifiedDiagnosticServices.CommunicationControlRequestType.");
+}
+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 : "@UnifiedDiagnosticServices.CommunicationControlRequestType");
+}
+
+CommunicationControlRequestSID::CommunicationControlRequestSID()
+{
+}
+
+CommunicationControlRequestSID::CommunicationControlRequestSID(const OCTETSTRING& par_sid,
+    const CommunicationControlRequestType& par_communicationControlRequestType)
+  :   field_sid(par_sid),
+  field_communicationControlRequestType(par_communicationControlRequestType)
+{
+}
+
+CommunicationControlRequestSID::CommunicationControlRequestSID(const CommunicationControlRequestSID& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.CommunicationControlRequestSID.");
+if (other_value.sid().is_bound()) field_sid = other_value.sid();
+else field_sid.clean_up();
+if (other_value.communicationControlRequestType().is_bound()) field_communicationControlRequestType = other_value.communicationControlRequestType();
+else field_communicationControlRequestType.clean_up();
+}
+
+void CommunicationControlRequestSID::clean_up()
+{
+field_sid.clean_up();
+field_communicationControlRequestType.clean_up();
+}
+
+const TTCN_Typedescriptor_t* CommunicationControlRequestSID::get_descriptor() const { return &CommunicationControlRequestSID_descr_; }
+CommunicationControlRequestSID& CommunicationControlRequestSID::operator=(const CommunicationControlRequestSID& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.CommunicationControlRequestSID.");
+  if (other_value.sid().is_bound()) field_sid = other_value.sid();
+  else field_sid.clean_up();
+  if (other_value.communicationControlRequestType().is_bound()) field_communicationControlRequestType = other_value.communicationControlRequestType();
+  else field_communicationControlRequestType.clean_up();
+}
+return *this;
+}
+
+boolean CommunicationControlRequestSID::operator==(const CommunicationControlRequestSID& other_value) const
+{
+return field_sid==other_value.field_sid
+  && field_communicationControlRequestType==other_value.field_communicationControlRequestType;
+}
+
+boolean CommunicationControlRequestSID::is_bound() const
+{
+return (field_sid.is_bound())
+  || (field_communicationControlRequestType.is_bound());
+}
+boolean CommunicationControlRequestSID::is_value() const
+{
+return field_sid.is_value()
+  && field_communicationControlRequestType.is_value();
+}
+void CommunicationControlRequestSID::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ sid := ");
+field_sid.log();
+TTCN_Logger::log_event_str(", communicationControlRequestType := ");
+field_communicationControlRequestType.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void CommunicationControlRequestSID::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 @UnifiedDiagnosticServices.CommunicationControlRequestSID 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) sid().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) communicationControlRequestType().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(), "sid")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          sid().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(), "communicationControlRequestType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          communicationControlRequestType().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 @UnifiedDiagnosticServices.CommunicationControlRequestSID: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.CommunicationControlRequestSID");
+  }
+}
+
+void CommunicationControlRequestSID::set_implicit_omit()
+{
+if (sid().is_bound()) sid().set_implicit_omit();
+if (communicationControlRequestType().is_bound()) communicationControlRequestType().set_implicit_omit();
+}
+
+void CommunicationControlRequestSID::encode_text(Text_Buf& text_buf) const
+{
+field_sid.encode_text(text_buf);
+field_communicationControlRequestType.encode_text(text_buf);
+}
+
+void CommunicationControlRequestSID::decode_text(Text_Buf& text_buf)
+{
+field_sid.decode_text(text_buf);
+field_communicationControlRequestType.decode_text(text_buf);
+}
+
+void CommunicationControlRequestSID::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void CommunicationControlRequestSID::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int CommunicationControlRequestSID::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, CommunicationControlRequestSID_sid_descr_.raw->forceomit);
+  decoded_field_length = field_sid.RAW_decode(CommunicationControlRequestSID_sid_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, CommunicationControlRequestSID_communicationControlRequestType_descr_.raw->forceomit);
+  decoded_field_length = field_communicationControlRequestType.RAW_decode(CommunicationControlRequestSID_communicationControlRequestType_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 CommunicationControlRequestSID::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, CommunicationControlRequestSID_sid_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, CommunicationControlRequestSID_communicationControlRequestType_descr_.raw);
+  encoded_length += field_sid.RAW_encode(CommunicationControlRequestSID_sid_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_communicationControlRequestType.RAW_encode(CommunicationControlRequestSID_communicationControlRequestType_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct CommunicationControlRequestSID_template::single_value_struct {
+OCTETSTRING_template field_sid;
+CommunicationControlRequestType_template field_communicationControlRequestType;
+};
+
+void CommunicationControlRequestSID_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_sid = ANY_VALUE;
+single_value->field_communicationControlRequestType = ANY_VALUE;
+}
+}
+}
+
+void CommunicationControlRequestSID_template::copy_value(const CommunicationControlRequestSID& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.sid().is_bound()) {
+  single_value->field_sid = other_value.sid();
+} else {
+  single_value->field_sid.clean_up();
+}
+if (other_value.communicationControlRequestType().is_bound()) {
+  single_value->field_communicationControlRequestType = other_value.communicationControlRequestType();
+} else {
+  single_value->field_communicationControlRequestType.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void CommunicationControlRequestSID_template::copy_template(const CommunicationControlRequestSID_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.sid().get_selection()) {
+single_value->field_sid = other_value.sid();
+} else {
+single_value->field_sid.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.communicationControlRequestType().get_selection()) {
+single_value->field_communicationControlRequestType = other_value.communicationControlRequestType();
+} else {
+single_value->field_communicationControlRequestType.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new CommunicationControlRequestSID_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.CommunicationControlRequestSID.");
+break;
+}
+set_selection(other_value);
+}
+
+CommunicationControlRequestSID_template::CommunicationControlRequestSID_template()
+{
+}
+
+CommunicationControlRequestSID_template::CommunicationControlRequestSID_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+CommunicationControlRequestSID_template::CommunicationControlRequestSID_template(const CommunicationControlRequestSID& other_value)
+{
+copy_value(other_value);
+}
+
+CommunicationControlRequestSID_template::CommunicationControlRequestSID_template(const OPTIONAL<CommunicationControlRequestSID>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CommunicationControlRequestSID&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.CommunicationControlRequestSID from an unbound optional field.");
+}
+}
+
+CommunicationControlRequestSID_template::CommunicationControlRequestSID_template(const CommunicationControlRequestSID_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+CommunicationControlRequestSID_template::~CommunicationControlRequestSID_template()
+{
+clean_up();
+}
+
+CommunicationControlRequestSID_template& CommunicationControlRequestSID_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+CommunicationControlRequestSID_template& CommunicationControlRequestSID_template::operator=(const CommunicationControlRequestSID& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+CommunicationControlRequestSID_template& CommunicationControlRequestSID_template::operator=(const OPTIONAL<CommunicationControlRequestSID>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CommunicationControlRequestSID&)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 @UnifiedDiagnosticServices.CommunicationControlRequestSID.");
+}
+return *this;
+}
+
+CommunicationControlRequestSID_template& CommunicationControlRequestSID_template::operator=(const CommunicationControlRequestSID_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean CommunicationControlRequestSID_template::match(const CommunicationControlRequestSID& 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.sid().is_bound()) return FALSE;
+if(!single_value->field_sid.match(other_value.sid(), legacy))return FALSE;
+if(!other_value.communicationControlRequestType().is_bound()) return FALSE;
+if(!single_value->field_communicationControlRequestType.match(other_value.communicationControlRequestType(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.CommunicationControlRequestSID.");
+}
+return FALSE;
+}
+
+boolean CommunicationControlRequestSID_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_sid.is_bound()
+
+ ||single_value->field_communicationControlRequestType.is_bound()
+;
+}
+
+boolean CommunicationControlRequestSID_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_sid.is_value()
+ &&single_value->field_communicationControlRequestType.is_value();
+}
+
+void CommunicationControlRequestSID_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+CommunicationControlRequestSID CommunicationControlRequestSID_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 @UnifiedDiagnosticServices.CommunicationControlRequestSID.");
+CommunicationControlRequestSID ret_val;
+if (single_value->field_sid.is_bound()) {
+ret_val.sid() = single_value->field_sid.valueof();
+}
+if (single_value->field_communicationControlRequestType.is_bound()) {
+ret_val.communicationControlRequestType() = single_value->field_communicationControlRequestType.valueof();
+}
+return ret_val;
+}
+
+void CommunicationControlRequestSID_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.CommunicationControlRequestSID.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new CommunicationControlRequestSID_template[list_length];
+}
+
+CommunicationControlRequestSID_template& CommunicationControlRequestSID_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.CommunicationControlRequestSID.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.CommunicationControlRequestSID.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& CommunicationControlRequestSID_template::sid()
+{
+set_specific();
+return single_value->field_sid;
+}
+
+const OCTETSTRING_template& CommunicationControlRequestSID_template::sid() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field sid of a non-specific template of type @UnifiedDiagnosticServices.CommunicationControlRequestSID.");
+return single_value->field_sid;
+}
+
+CommunicationControlRequestType_template& CommunicationControlRequestSID_template::communicationControlRequestType()
+{
+set_specific();
+return single_value->field_communicationControlRequestType;
+}
+
+const CommunicationControlRequestType_template& CommunicationControlRequestSID_template::communicationControlRequestType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field communicationControlRequestType of a non-specific template of type @UnifiedDiagnosticServices.CommunicationControlRequestSID.");
+return single_value->field_communicationControlRequestType;
+}
+
+int CommunicationControlRequestSID_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.CommunicationControlRequestSID 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 @UnifiedDiagnosticServices.CommunicationControlRequestSID 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 @UnifiedDiagnosticServices.CommunicationControlRequestSID containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.CommunicationControlRequestSID containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.CommunicationControlRequestSID containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.CommunicationControlRequestSID containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.CommunicationControlRequestSID.");
+  }
+  return 0;
+}
+
+void CommunicationControlRequestSID_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ sid := ");
+single_value->field_sid.log();
+TTCN_Logger::log_event_str(", communicationControlRequestType := ");
+single_value->field_communicationControlRequestType.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void CommunicationControlRequestSID_template::log_match(const CommunicationControlRequestSID& 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_sid.match(match_value.sid(), legacy)){
+TTCN_Logger::log_logmatch_info(".sid");
+single_value->field_sid.log_match(match_value.sid(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_communicationControlRequestType.match(match_value.communicationControlRequestType(), legacy)){
+TTCN_Logger::log_logmatch_info(".communicationControlRequestType");
+single_value->field_communicationControlRequestType.log_match(match_value.communicationControlRequestType(), 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("{ sid := ");
+single_value->field_sid.log_match(match_value.sid(), legacy);
+TTCN_Logger::log_event_str(", communicationControlRequestType := ");
+single_value->field_communicationControlRequestType.log_match(match_value.communicationControlRequestType(), 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 CommunicationControlRequestSID_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_sid.encode_text(text_buf);
+single_value->field_communicationControlRequestType.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 @UnifiedDiagnosticServices.CommunicationControlRequestSID.");
+}
+}
+
+void CommunicationControlRequestSID_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_sid.decode_text(text_buf);
+single_value->field_communicationControlRequestType.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 CommunicationControlRequestSID_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 @UnifiedDiagnosticServices.CommunicationControlRequestSID.");
+}
+}
+
+void CommunicationControlRequestSID_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: {
+    CommunicationControlRequestSID_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @UnifiedDiagnosticServices.CommunicationControlRequestSID 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) sid().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) communicationControlRequestType().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(), "sid")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          sid().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(), "communicationControlRequestType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          communicationControlRequestType().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 @UnifiedDiagnosticServices.CommunicationControlRequestSID: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.CommunicationControlRequestSID");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void CommunicationControlRequestSID_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_sid.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.CommunicationControlRequestSID");
+single_value->field_communicationControlRequestType.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.CommunicationControlRequestSID");
+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 : "@UnifiedDiagnosticServices.CommunicationControlRequestSID");
+}
+
+boolean CommunicationControlRequestSID_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean CommunicationControlRequestSID_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+CommunicationControlResponseSID::CommunicationControlResponseSID()
+{
+}
+
+CommunicationControlResponseSID::CommunicationControlResponseSID(const OCTETSTRING& par_sid,
+    const BITSTRING& par_reserved,
+    const e__ControlType& par_controlType)
+  :   field_sid(par_sid),
+  field_reserved(par_reserved),
+  field_controlType(par_controlType)
+{
+}
+
+CommunicationControlResponseSID::CommunicationControlResponseSID(const CommunicationControlResponseSID& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.CommunicationControlResponseSID.");
+if (other_value.sid().is_bound()) field_sid = other_value.sid();
+else field_sid.clean_up();
+if (other_value.reserved().is_bound()) field_reserved = other_value.reserved();
+else field_reserved.clean_up();
+if (other_value.controlType().is_bound()) field_controlType = other_value.controlType();
+else field_controlType.clean_up();
+}
+
+void CommunicationControlResponseSID::clean_up()
+{
+field_sid.clean_up();
+field_reserved.clean_up();
+field_controlType.clean_up();
+}
+
+const TTCN_Typedescriptor_t* CommunicationControlResponseSID::get_descriptor() const { return &CommunicationControlResponseSID_descr_; }
+CommunicationControlResponseSID& CommunicationControlResponseSID::operator=(const CommunicationControlResponseSID& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.CommunicationControlResponseSID.");
+  if (other_value.sid().is_bound()) field_sid = other_value.sid();
+  else field_sid.clean_up();
+  if (other_value.reserved().is_bound()) field_reserved = other_value.reserved();
+  else field_reserved.clean_up();
+  if (other_value.controlType().is_bound()) field_controlType = other_value.controlType();
+  else field_controlType.clean_up();
+}
+return *this;
+}
+
+boolean CommunicationControlResponseSID::operator==(const CommunicationControlResponseSID& other_value) const
+{
+return field_sid==other_value.field_sid
+  && field_reserved==other_value.field_reserved
+  && field_controlType==other_value.field_controlType;
+}
+
+boolean CommunicationControlResponseSID::is_bound() const
+{
+return (field_sid.is_bound())
+  || (field_reserved.is_bound())
+  || (field_controlType.is_bound());
+}
+boolean CommunicationControlResponseSID::is_value() const
+{
+return field_sid.is_value()
+  && field_reserved.is_value()
+  && field_controlType.is_value();
+}
+void CommunicationControlResponseSID::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ sid := ");
+field_sid.log();
+TTCN_Logger::log_event_str(", reserved := ");
+field_reserved.log();
+TTCN_Logger::log_event_str(", controlType := ");
+field_controlType.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void CommunicationControlResponseSID::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 @UnifiedDiagnosticServices.CommunicationControlResponseSID 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) sid().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) controlType().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(), "sid")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          sid().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(), "reserved")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved().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(), "controlType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          controlType().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 @UnifiedDiagnosticServices.CommunicationControlResponseSID: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.CommunicationControlResponseSID");
+  }
+}
+
+void CommunicationControlResponseSID::set_implicit_omit()
+{
+if (sid().is_bound()) sid().set_implicit_omit();
+if (reserved().is_bound()) reserved().set_implicit_omit();
+if (controlType().is_bound()) controlType().set_implicit_omit();
+}
+
+void CommunicationControlResponseSID::encode_text(Text_Buf& text_buf) const
+{
+field_sid.encode_text(text_buf);
+field_reserved.encode_text(text_buf);
+field_controlType.encode_text(text_buf);
+}
+
+void CommunicationControlResponseSID::decode_text(Text_Buf& text_buf)
+{
+field_sid.decode_text(text_buf);
+field_reserved.decode_text(text_buf);
+field_controlType.decode_text(text_buf);
+}
+
+void CommunicationControlResponseSID::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void CommunicationControlResponseSID::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int CommunicationControlResponseSID::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, CommunicationControlResponseSID_sid_descr_.raw->forceomit);
+  decoded_field_length = field_sid.RAW_decode(CommunicationControlResponseSID_sid_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, CommunicationControlResponseSID_reserved_descr_.raw->forceomit);
+  decoded_field_length = field_reserved.RAW_decode(CommunicationControlResponseSID_reserved_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, CommunicationControlResponseSID_controlType_descr_.raw->forceomit);
+  decoded_field_length = field_controlType.RAW_decode(CommunicationControlResponseSID_controlType_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 CommunicationControlResponseSID::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, CommunicationControlResponseSID_sid_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, CommunicationControlResponseSID_reserved_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, CommunicationControlResponseSID_controlType_descr_.raw);
+  encoded_length += field_sid.RAW_encode(CommunicationControlResponseSID_sid_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved.RAW_encode(CommunicationControlResponseSID_reserved_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_controlType.RAW_encode(CommunicationControlResponseSID_controlType_descr_, *myleaf.body.node.nodes[2]);
+  return myleaf.length = encoded_length;
+}
+
+struct CommunicationControlResponseSID_template::single_value_struct {
+OCTETSTRING_template field_sid;
+BITSTRING_template field_reserved;
+e__ControlType_template field_controlType;
+};
+
+void CommunicationControlResponseSID_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_sid = ANY_VALUE;
+single_value->field_reserved = ANY_VALUE;
+single_value->field_controlType = ANY_VALUE;
+}
+}
+}
+
+void CommunicationControlResponseSID_template::copy_value(const CommunicationControlResponseSID& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.sid().is_bound()) {
+  single_value->field_sid = other_value.sid();
+} else {
+  single_value->field_sid.clean_up();
+}
+if (other_value.reserved().is_bound()) {
+  single_value->field_reserved = other_value.reserved();
+} else {
+  single_value->field_reserved.clean_up();
+}
+if (other_value.controlType().is_bound()) {
+  single_value->field_controlType = other_value.controlType();
+} else {
+  single_value->field_controlType.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void CommunicationControlResponseSID_template::copy_template(const CommunicationControlResponseSID_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.sid().get_selection()) {
+single_value->field_sid = other_value.sid();
+} else {
+single_value->field_sid.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved().get_selection()) {
+single_value->field_reserved = other_value.reserved();
+} else {
+single_value->field_reserved.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.controlType().get_selection()) {
+single_value->field_controlType = other_value.controlType();
+} else {
+single_value->field_controlType.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new CommunicationControlResponseSID_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.CommunicationControlResponseSID.");
+break;
+}
+set_selection(other_value);
+}
+
+CommunicationControlResponseSID_template::CommunicationControlResponseSID_template()
+{
+}
+
+CommunicationControlResponseSID_template::CommunicationControlResponseSID_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+CommunicationControlResponseSID_template::CommunicationControlResponseSID_template(const CommunicationControlResponseSID& other_value)
+{
+copy_value(other_value);
+}
+
+CommunicationControlResponseSID_template::CommunicationControlResponseSID_template(const OPTIONAL<CommunicationControlResponseSID>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CommunicationControlResponseSID&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.CommunicationControlResponseSID from an unbound optional field.");
+}
+}
+
+CommunicationControlResponseSID_template::CommunicationControlResponseSID_template(const CommunicationControlResponseSID_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+CommunicationControlResponseSID_template::~CommunicationControlResponseSID_template()
+{
+clean_up();
+}
+
+CommunicationControlResponseSID_template& CommunicationControlResponseSID_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+CommunicationControlResponseSID_template& CommunicationControlResponseSID_template::operator=(const CommunicationControlResponseSID& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+CommunicationControlResponseSID_template& CommunicationControlResponseSID_template::operator=(const OPTIONAL<CommunicationControlResponseSID>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const CommunicationControlResponseSID&)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 @UnifiedDiagnosticServices.CommunicationControlResponseSID.");
+}
+return *this;
+}
+
+CommunicationControlResponseSID_template& CommunicationControlResponseSID_template::operator=(const CommunicationControlResponseSID_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean CommunicationControlResponseSID_template::match(const CommunicationControlResponseSID& 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.sid().is_bound()) return FALSE;
+if(!single_value->field_sid.match(other_value.sid(), legacy))return FALSE;
+if(!other_value.reserved().is_bound()) return FALSE;
+if(!single_value->field_reserved.match(other_value.reserved(), legacy))return FALSE;
+if(!other_value.controlType().is_bound()) return FALSE;
+if(!single_value->field_controlType.match(other_value.controlType(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.CommunicationControlResponseSID.");
+}
+return FALSE;
+}
+
+boolean CommunicationControlResponseSID_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_sid.is_bound()
+
+ ||single_value->field_reserved.is_bound()
+
+ ||single_value->field_controlType.is_bound()
+;
+}
+
+boolean CommunicationControlResponseSID_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_sid.is_value()
+ &&single_value->field_reserved.is_value()
+ &&single_value->field_controlType.is_value();
+}
+
+void CommunicationControlResponseSID_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+CommunicationControlResponseSID CommunicationControlResponseSID_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 @UnifiedDiagnosticServices.CommunicationControlResponseSID.");
+CommunicationControlResponseSID ret_val;
+if (single_value->field_sid.is_bound()) {
+ret_val.sid() = single_value->field_sid.valueof();
+}
+if (single_value->field_reserved.is_bound()) {
+ret_val.reserved() = single_value->field_reserved.valueof();
+}
+if (single_value->field_controlType.is_bound()) {
+ret_val.controlType() = single_value->field_controlType.valueof();
+}
+return ret_val;
+}
+
+void CommunicationControlResponseSID_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.CommunicationControlResponseSID.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new CommunicationControlResponseSID_template[list_length];
+}
+
+CommunicationControlResponseSID_template& CommunicationControlResponseSID_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.CommunicationControlResponseSID.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.CommunicationControlResponseSID.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& CommunicationControlResponseSID_template::sid()
+{
+set_specific();
+return single_value->field_sid;
+}
+
+const OCTETSTRING_template& CommunicationControlResponseSID_template::sid() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field sid of a non-specific template of type @UnifiedDiagnosticServices.CommunicationControlResponseSID.");
+return single_value->field_sid;
+}
+
+BITSTRING_template& CommunicationControlResponseSID_template::reserved()
+{
+set_specific();
+return single_value->field_reserved;
+}
+
+const BITSTRING_template& CommunicationControlResponseSID_template::reserved() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved of a non-specific template of type @UnifiedDiagnosticServices.CommunicationControlResponseSID.");
+return single_value->field_reserved;
+}
+
+e__ControlType_template& CommunicationControlResponseSID_template::controlType()
+{
+set_specific();
+return single_value->field_controlType;
+}
+
+const e__ControlType_template& CommunicationControlResponseSID_template::controlType() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field controlType of a non-specific template of type @UnifiedDiagnosticServices.CommunicationControlResponseSID.");
+return single_value->field_controlType;
+}
+
+int CommunicationControlResponseSID_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.CommunicationControlResponseSID 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 @UnifiedDiagnosticServices.CommunicationControlResponseSID 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 @UnifiedDiagnosticServices.CommunicationControlResponseSID containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.CommunicationControlResponseSID containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.CommunicationControlResponseSID containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.CommunicationControlResponseSID containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.CommunicationControlResponseSID.");
+  }
+  return 0;
+}
+
+void CommunicationControlResponseSID_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ sid := ");
+single_value->field_sid.log();
+TTCN_Logger::log_event_str(", reserved := ");
+single_value->field_reserved.log();
+TTCN_Logger::log_event_str(", controlType := ");
+single_value->field_controlType.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void CommunicationControlResponseSID_template::log_match(const CommunicationControlResponseSID& 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_sid.match(match_value.sid(), legacy)){
+TTCN_Logger::log_logmatch_info(".sid");
+single_value->field_sid.log_match(match_value.sid(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved.match(match_value.reserved(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved");
+single_value->field_reserved.log_match(match_value.reserved(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_controlType.match(match_value.controlType(), legacy)){
+TTCN_Logger::log_logmatch_info(".controlType");
+single_value->field_controlType.log_match(match_value.controlType(), 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("{ sid := ");
+single_value->field_sid.log_match(match_value.sid(), legacy);
+TTCN_Logger::log_event_str(", reserved := ");
+single_value->field_reserved.log_match(match_value.reserved(), legacy);
+TTCN_Logger::log_event_str(", controlType := ");
+single_value->field_controlType.log_match(match_value.controlType(), 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 CommunicationControlResponseSID_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_sid.encode_text(text_buf);
+single_value->field_reserved.encode_text(text_buf);
+single_value->field_controlType.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 @UnifiedDiagnosticServices.CommunicationControlResponseSID.");
+}
+}
+
+void CommunicationControlResponseSID_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_sid.decode_text(text_buf);
+single_value->field_reserved.decode_text(text_buf);
+single_value->field_controlType.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 CommunicationControlResponseSID_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 @UnifiedDiagnosticServices.CommunicationControlResponseSID.");
+}
+}
+
+void CommunicationControlResponseSID_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: {
+    CommunicationControlResponseSID_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @UnifiedDiagnosticServices.CommunicationControlResponseSID 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) sid().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) controlType().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(), "sid")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          sid().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(), "reserved")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved().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(), "controlType")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          controlType().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 @UnifiedDiagnosticServices.CommunicationControlResponseSID: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.CommunicationControlResponseSID");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void CommunicationControlResponseSID_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_sid.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.CommunicationControlResponseSID");
+single_value->field_reserved.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.CommunicationControlResponseSID");
+single_value->field_controlType.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.CommunicationControlResponseSID");
+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 : "@UnifiedDiagnosticServices.CommunicationControlResponseSID");
+}
+
+boolean CommunicationControlResponseSID_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean CommunicationControlResponseSID_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+TesterPresentRequestSID::TesterPresentRequestSID()
+{
+}
+
+TesterPresentRequestSID::TesterPresentRequestSID(const OCTETSTRING& par_sid,
+    const SuppressPosRspMsgIndicationBitType& par_suppressPosRspMsgIndicationBit,
+    const BITSTRING& par_zero)
+  :   field_sid(par_sid),
+  field_suppressPosRspMsgIndicationBit(par_suppressPosRspMsgIndicationBit),
+  field_zero(par_zero)
+{
+}
+
+TesterPresentRequestSID::TesterPresentRequestSID(const TesterPresentRequestSID& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.TesterPresentRequestSID.");
+if (other_value.sid().is_bound()) field_sid = other_value.sid();
+else field_sid.clean_up();
+if (other_value.suppressPosRspMsgIndicationBit().is_bound()) field_suppressPosRspMsgIndicationBit = other_value.suppressPosRspMsgIndicationBit();
+else field_suppressPosRspMsgIndicationBit.clean_up();
+if (other_value.zero().is_bound()) field_zero = other_value.zero();
+else field_zero.clean_up();
+}
+
+void TesterPresentRequestSID::clean_up()
+{
+field_sid.clean_up();
+field_suppressPosRspMsgIndicationBit.clean_up();
+field_zero.clean_up();
+}
+
+const TTCN_Typedescriptor_t* TesterPresentRequestSID::get_descriptor() const { return &TesterPresentRequestSID_descr_; }
+TesterPresentRequestSID& TesterPresentRequestSID::operator=(const TesterPresentRequestSID& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.TesterPresentRequestSID.");
+  if (other_value.sid().is_bound()) field_sid = other_value.sid();
+  else field_sid.clean_up();
+  if (other_value.suppressPosRspMsgIndicationBit().is_bound()) field_suppressPosRspMsgIndicationBit = other_value.suppressPosRspMsgIndicationBit();
+  else field_suppressPosRspMsgIndicationBit.clean_up();
+  if (other_value.zero().is_bound()) field_zero = other_value.zero();
+  else field_zero.clean_up();
+}
+return *this;
+}
+
+boolean TesterPresentRequestSID::operator==(const TesterPresentRequestSID& other_value) const
+{
+return field_sid==other_value.field_sid
+  && field_suppressPosRspMsgIndicationBit==other_value.field_suppressPosRspMsgIndicationBit
+  && field_zero==other_value.field_zero;
+}
+
+boolean TesterPresentRequestSID::is_bound() const
+{
+return (field_sid.is_bound())
+  || (field_suppressPosRspMsgIndicationBit.is_bound())
+  || (field_zero.is_bound());
+}
+boolean TesterPresentRequestSID::is_value() const
+{
+return field_sid.is_value()
+  && field_suppressPosRspMsgIndicationBit.is_value()
+  && field_zero.is_value();
+}
+void TesterPresentRequestSID::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ sid := ");
+field_sid.log();
+TTCN_Logger::log_event_str(", suppressPosRspMsgIndicationBit := ");
+field_suppressPosRspMsgIndicationBit.log();
+TTCN_Logger::log_event_str(", zero := ");
+field_zero.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void TesterPresentRequestSID::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 @UnifiedDiagnosticServices.TesterPresentRequestSID 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) sid().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) suppressPosRspMsgIndicationBit().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) zero().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(), "sid")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          sid().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(), "suppressPosRspMsgIndicationBit")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          suppressPosRspMsgIndicationBit().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(), "zero")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          zero().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 @UnifiedDiagnosticServices.TesterPresentRequestSID: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.TesterPresentRequestSID");
+  }
+}
+
+void TesterPresentRequestSID::set_implicit_omit()
+{
+if (sid().is_bound()) sid().set_implicit_omit();
+if (suppressPosRspMsgIndicationBit().is_bound()) suppressPosRspMsgIndicationBit().set_implicit_omit();
+if (zero().is_bound()) zero().set_implicit_omit();
+}
+
+void TesterPresentRequestSID::encode_text(Text_Buf& text_buf) const
+{
+field_sid.encode_text(text_buf);
+field_suppressPosRspMsgIndicationBit.encode_text(text_buf);
+field_zero.encode_text(text_buf);
+}
+
+void TesterPresentRequestSID::decode_text(Text_Buf& text_buf)
+{
+field_sid.decode_text(text_buf);
+field_suppressPosRspMsgIndicationBit.decode_text(text_buf);
+field_zero.decode_text(text_buf);
+}
+
+void TesterPresentRequestSID::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void TesterPresentRequestSID::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int TesterPresentRequestSID::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, TesterPresentRequestSID_sid_descr_.raw->forceomit);
+  decoded_field_length = field_sid.RAW_decode(TesterPresentRequestSID_sid_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, TesterPresentRequestSID_suppressPosRspMsgIndicationBit_descr_.raw->forceomit);
+  decoded_field_length = field_suppressPosRspMsgIndicationBit.RAW_decode(TesterPresentRequestSID_suppressPosRspMsgIndicationBit_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, TesterPresentRequestSID_zero_descr_.raw->forceomit);
+  decoded_field_length = field_zero.RAW_decode(TesterPresentRequestSID_zero_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 TesterPresentRequestSID::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, TesterPresentRequestSID_sid_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, TesterPresentRequestSID_suppressPosRspMsgIndicationBit_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, TesterPresentRequestSID_zero_descr_.raw);
+  encoded_length += field_sid.RAW_encode(TesterPresentRequestSID_sid_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_suppressPosRspMsgIndicationBit.RAW_encode(TesterPresentRequestSID_suppressPosRspMsgIndicationBit_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_zero.RAW_encode(TesterPresentRequestSID_zero_descr_, *myleaf.body.node.nodes[2]);
+  return myleaf.length = encoded_length;
+}
+
+struct TesterPresentRequestSID_template::single_value_struct {
+OCTETSTRING_template field_sid;
+SuppressPosRspMsgIndicationBitType_template field_suppressPosRspMsgIndicationBit;
+BITSTRING_template field_zero;
+};
+
+void TesterPresentRequestSID_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_sid = ANY_VALUE;
+single_value->field_suppressPosRspMsgIndicationBit = ANY_VALUE;
+single_value->field_zero = ANY_VALUE;
+}
+}
+}
+
+void TesterPresentRequestSID_template::copy_value(const TesterPresentRequestSID& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.sid().is_bound()) {
+  single_value->field_sid = other_value.sid();
+} else {
+  single_value->field_sid.clean_up();
+}
+if (other_value.suppressPosRspMsgIndicationBit().is_bound()) {
+  single_value->field_suppressPosRspMsgIndicationBit = other_value.suppressPosRspMsgIndicationBit();
+} else {
+  single_value->field_suppressPosRspMsgIndicationBit.clean_up();
+}
+if (other_value.zero().is_bound()) {
+  single_value->field_zero = other_value.zero();
+} else {
+  single_value->field_zero.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void TesterPresentRequestSID_template::copy_template(const TesterPresentRequestSID_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.sid().get_selection()) {
+single_value->field_sid = other_value.sid();
+} else {
+single_value->field_sid.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.suppressPosRspMsgIndicationBit().get_selection()) {
+single_value->field_suppressPosRspMsgIndicationBit = other_value.suppressPosRspMsgIndicationBit();
+} else {
+single_value->field_suppressPosRspMsgIndicationBit.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.zero().get_selection()) {
+single_value->field_zero = other_value.zero();
+} else {
+single_value->field_zero.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new TesterPresentRequestSID_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.TesterPresentRequestSID.");
+break;
+}
+set_selection(other_value);
+}
+
+TesterPresentRequestSID_template::TesterPresentRequestSID_template()
+{
+}
+
+TesterPresentRequestSID_template::TesterPresentRequestSID_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+TesterPresentRequestSID_template::TesterPresentRequestSID_template(const TesterPresentRequestSID& other_value)
+{
+copy_value(other_value);
+}
+
+TesterPresentRequestSID_template::TesterPresentRequestSID_template(const OPTIONAL<TesterPresentRequestSID>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const TesterPresentRequestSID&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.TesterPresentRequestSID from an unbound optional field.");
+}
+}
+
+TesterPresentRequestSID_template::TesterPresentRequestSID_template(const TesterPresentRequestSID_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+TesterPresentRequestSID_template::~TesterPresentRequestSID_template()
+{
+clean_up();
+}
+
+TesterPresentRequestSID_template& TesterPresentRequestSID_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+TesterPresentRequestSID_template& TesterPresentRequestSID_template::operator=(const TesterPresentRequestSID& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+TesterPresentRequestSID_template& TesterPresentRequestSID_template::operator=(const OPTIONAL<TesterPresentRequestSID>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const TesterPresentRequestSID&)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 @UnifiedDiagnosticServices.TesterPresentRequestSID.");
+}
+return *this;
+}
+
+TesterPresentRequestSID_template& TesterPresentRequestSID_template::operator=(const TesterPresentRequestSID_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean TesterPresentRequestSID_template::match(const TesterPresentRequestSID& 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.sid().is_bound()) return FALSE;
+if(!single_value->field_sid.match(other_value.sid(), legacy))return FALSE;
+if(!other_value.suppressPosRspMsgIndicationBit().is_bound()) return FALSE;
+if(!single_value->field_suppressPosRspMsgIndicationBit.match(other_value.suppressPosRspMsgIndicationBit(), legacy))return FALSE;
+if(!other_value.zero().is_bound()) return FALSE;
+if(!single_value->field_zero.match(other_value.zero(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.TesterPresentRequestSID.");
+}
+return FALSE;
+}
+
+boolean TesterPresentRequestSID_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_sid.is_bound()
+
+ ||single_value->field_suppressPosRspMsgIndicationBit.is_bound()
+
+ ||single_value->field_zero.is_bound()
+;
+}
+
+boolean TesterPresentRequestSID_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_sid.is_value()
+ &&single_value->field_suppressPosRspMsgIndicationBit.is_value()
+ &&single_value->field_zero.is_value();
+}
+
+void TesterPresentRequestSID_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+TesterPresentRequestSID TesterPresentRequestSID_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 @UnifiedDiagnosticServices.TesterPresentRequestSID.");
+TesterPresentRequestSID ret_val;
+if (single_value->field_sid.is_bound()) {
+ret_val.sid() = single_value->field_sid.valueof();
+}
+if (single_value->field_suppressPosRspMsgIndicationBit.is_bound()) {
+ret_val.suppressPosRspMsgIndicationBit() = single_value->field_suppressPosRspMsgIndicationBit.valueof();
+}
+if (single_value->field_zero.is_bound()) {
+ret_val.zero() = single_value->field_zero.valueof();
+}
+return ret_val;
+}
+
+void TesterPresentRequestSID_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.TesterPresentRequestSID.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new TesterPresentRequestSID_template[list_length];
+}
+
+TesterPresentRequestSID_template& TesterPresentRequestSID_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.TesterPresentRequestSID.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.TesterPresentRequestSID.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& TesterPresentRequestSID_template::sid()
+{
+set_specific();
+return single_value->field_sid;
+}
+
+const OCTETSTRING_template& TesterPresentRequestSID_template::sid() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field sid of a non-specific template of type @UnifiedDiagnosticServices.TesterPresentRequestSID.");
+return single_value->field_sid;
+}
+
+SuppressPosRspMsgIndicationBitType_template& TesterPresentRequestSID_template::suppressPosRspMsgIndicationBit()
+{
+set_specific();
+return single_value->field_suppressPosRspMsgIndicationBit;
+}
+
+const SuppressPosRspMsgIndicationBitType_template& TesterPresentRequestSID_template::suppressPosRspMsgIndicationBit() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field suppressPosRspMsgIndicationBit of a non-specific template of type @UnifiedDiagnosticServices.TesterPresentRequestSID.");
+return single_value->field_suppressPosRspMsgIndicationBit;
+}
+
+BITSTRING_template& TesterPresentRequestSID_template::zero()
+{
+set_specific();
+return single_value->field_zero;
+}
+
+const BITSTRING_template& TesterPresentRequestSID_template::zero() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field zero of a non-specific template of type @UnifiedDiagnosticServices.TesterPresentRequestSID.");
+return single_value->field_zero;
+}
+
+int TesterPresentRequestSID_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.TesterPresentRequestSID 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 @UnifiedDiagnosticServices.TesterPresentRequestSID 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 @UnifiedDiagnosticServices.TesterPresentRequestSID containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.TesterPresentRequestSID containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.TesterPresentRequestSID containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.TesterPresentRequestSID containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.TesterPresentRequestSID.");
+  }
+  return 0;
+}
+
+void TesterPresentRequestSID_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ sid := ");
+single_value->field_sid.log();
+TTCN_Logger::log_event_str(", suppressPosRspMsgIndicationBit := ");
+single_value->field_suppressPosRspMsgIndicationBit.log();
+TTCN_Logger::log_event_str(", zero := ");
+single_value->field_zero.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void TesterPresentRequestSID_template::log_match(const TesterPresentRequestSID& 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_sid.match(match_value.sid(), legacy)){
+TTCN_Logger::log_logmatch_info(".sid");
+single_value->field_sid.log_match(match_value.sid(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_suppressPosRspMsgIndicationBit.match(match_value.suppressPosRspMsgIndicationBit(), legacy)){
+TTCN_Logger::log_logmatch_info(".suppressPosRspMsgIndicationBit");
+single_value->field_suppressPosRspMsgIndicationBit.log_match(match_value.suppressPosRspMsgIndicationBit(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_zero.match(match_value.zero(), legacy)){
+TTCN_Logger::log_logmatch_info(".zero");
+single_value->field_zero.log_match(match_value.zero(), 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("{ sid := ");
+single_value->field_sid.log_match(match_value.sid(), legacy);
+TTCN_Logger::log_event_str(", suppressPosRspMsgIndicationBit := ");
+single_value->field_suppressPosRspMsgIndicationBit.log_match(match_value.suppressPosRspMsgIndicationBit(), legacy);
+TTCN_Logger::log_event_str(", zero := ");
+single_value->field_zero.log_match(match_value.zero(), 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 TesterPresentRequestSID_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_sid.encode_text(text_buf);
+single_value->field_suppressPosRspMsgIndicationBit.encode_text(text_buf);
+single_value->field_zero.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 @UnifiedDiagnosticServices.TesterPresentRequestSID.");
+}
+}
+
+void TesterPresentRequestSID_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_sid.decode_text(text_buf);
+single_value->field_suppressPosRspMsgIndicationBit.decode_text(text_buf);
+single_value->field_zero.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 TesterPresentRequestSID_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 @UnifiedDiagnosticServices.TesterPresentRequestSID.");
+}
+}
+
+void TesterPresentRequestSID_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: {
+    TesterPresentRequestSID_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @UnifiedDiagnosticServices.TesterPresentRequestSID 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) sid().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) suppressPosRspMsgIndicationBit().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) zero().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(), "sid")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          sid().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(), "suppressPosRspMsgIndicationBit")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          suppressPosRspMsgIndicationBit().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(), "zero")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          zero().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 @UnifiedDiagnosticServices.TesterPresentRequestSID: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.TesterPresentRequestSID");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void TesterPresentRequestSID_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_sid.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.TesterPresentRequestSID");
+single_value->field_suppressPosRspMsgIndicationBit.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.TesterPresentRequestSID");
+single_value->field_zero.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.TesterPresentRequestSID");
+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 : "@UnifiedDiagnosticServices.TesterPresentRequestSID");
+}
+
+boolean TesterPresentRequestSID_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean TesterPresentRequestSID_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+TesterPresentResponseSID::TesterPresentResponseSID()
+{
+}
+
+TesterPresentResponseSID::TesterPresentResponseSID(const OCTETSTRING& par_sid,
+    const BITSTRING& par_reserved,
+    const BITSTRING& par_zero)
+  :   field_sid(par_sid),
+  field_reserved(par_reserved),
+  field_zero(par_zero)
+{
+}
+
+TesterPresentResponseSID::TesterPresentResponseSID(const TesterPresentResponseSID& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.TesterPresentResponseSID.");
+if (other_value.sid().is_bound()) field_sid = other_value.sid();
+else field_sid.clean_up();
+if (other_value.reserved().is_bound()) field_reserved = other_value.reserved();
+else field_reserved.clean_up();
+if (other_value.zero().is_bound()) field_zero = other_value.zero();
+else field_zero.clean_up();
+}
+
+void TesterPresentResponseSID::clean_up()
+{
+field_sid.clean_up();
+field_reserved.clean_up();
+field_zero.clean_up();
+}
+
+const TTCN_Typedescriptor_t* TesterPresentResponseSID::get_descriptor() const { return &TesterPresentResponseSID_descr_; }
+TesterPresentResponseSID& TesterPresentResponseSID::operator=(const TesterPresentResponseSID& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.TesterPresentResponseSID.");
+  if (other_value.sid().is_bound()) field_sid = other_value.sid();
+  else field_sid.clean_up();
+  if (other_value.reserved().is_bound()) field_reserved = other_value.reserved();
+  else field_reserved.clean_up();
+  if (other_value.zero().is_bound()) field_zero = other_value.zero();
+  else field_zero.clean_up();
+}
+return *this;
+}
+
+boolean TesterPresentResponseSID::operator==(const TesterPresentResponseSID& other_value) const
+{
+return field_sid==other_value.field_sid
+  && field_reserved==other_value.field_reserved
+  && field_zero==other_value.field_zero;
+}
+
+boolean TesterPresentResponseSID::is_bound() const
+{
+return (field_sid.is_bound())
+  || (field_reserved.is_bound())
+  || (field_zero.is_bound());
+}
+boolean TesterPresentResponseSID::is_value() const
+{
+return field_sid.is_value()
+  && field_reserved.is_value()
+  && field_zero.is_value();
+}
+void TesterPresentResponseSID::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ sid := ");
+field_sid.log();
+TTCN_Logger::log_event_str(", reserved := ");
+field_reserved.log();
+TTCN_Logger::log_event_str(", zero := ");
+field_zero.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void TesterPresentResponseSID::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 @UnifiedDiagnosticServices.TesterPresentResponseSID 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) sid().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) zero().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(), "sid")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          sid().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(), "reserved")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved().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(), "zero")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          zero().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 @UnifiedDiagnosticServices.TesterPresentResponseSID: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.TesterPresentResponseSID");
+  }
+}
+
+void TesterPresentResponseSID::set_implicit_omit()
+{
+if (sid().is_bound()) sid().set_implicit_omit();
+if (reserved().is_bound()) reserved().set_implicit_omit();
+if (zero().is_bound()) zero().set_implicit_omit();
+}
+
+void TesterPresentResponseSID::encode_text(Text_Buf& text_buf) const
+{
+field_sid.encode_text(text_buf);
+field_reserved.encode_text(text_buf);
+field_zero.encode_text(text_buf);
+}
+
+void TesterPresentResponseSID::decode_text(Text_Buf& text_buf)
+{
+field_sid.decode_text(text_buf);
+field_reserved.decode_text(text_buf);
+field_zero.decode_text(text_buf);
+}
+
+void TesterPresentResponseSID::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void TesterPresentResponseSID::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int TesterPresentResponseSID::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, TesterPresentResponseSID_sid_descr_.raw->forceomit);
+  decoded_field_length = field_sid.RAW_decode(TesterPresentResponseSID_sid_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, TesterPresentResponseSID_reserved_descr_.raw->forceomit);
+  decoded_field_length = field_reserved.RAW_decode(TesterPresentResponseSID_reserved_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, TesterPresentResponseSID_zero_descr_.raw->forceomit);
+  decoded_field_length = field_zero.RAW_decode(TesterPresentResponseSID_zero_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 TesterPresentResponseSID::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, TesterPresentResponseSID_sid_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, TesterPresentResponseSID_reserved_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, TesterPresentResponseSID_zero_descr_.raw);
+  encoded_length += field_sid.RAW_encode(TesterPresentResponseSID_sid_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_reserved.RAW_encode(TesterPresentResponseSID_reserved_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_zero.RAW_encode(TesterPresentResponseSID_zero_descr_, *myleaf.body.node.nodes[2]);
+  return myleaf.length = encoded_length;
+}
+
+struct TesterPresentResponseSID_template::single_value_struct {
+OCTETSTRING_template field_sid;
+BITSTRING_template field_reserved;
+BITSTRING_template field_zero;
+};
+
+void TesterPresentResponseSID_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_sid = ANY_VALUE;
+single_value->field_reserved = ANY_VALUE;
+single_value->field_zero = ANY_VALUE;
+}
+}
+}
+
+void TesterPresentResponseSID_template::copy_value(const TesterPresentResponseSID& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.sid().is_bound()) {
+  single_value->field_sid = other_value.sid();
+} else {
+  single_value->field_sid.clean_up();
+}
+if (other_value.reserved().is_bound()) {
+  single_value->field_reserved = other_value.reserved();
+} else {
+  single_value->field_reserved.clean_up();
+}
+if (other_value.zero().is_bound()) {
+  single_value->field_zero = other_value.zero();
+} else {
+  single_value->field_zero.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void TesterPresentResponseSID_template::copy_template(const TesterPresentResponseSID_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.sid().get_selection()) {
+single_value->field_sid = other_value.sid();
+} else {
+single_value->field_sid.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.reserved().get_selection()) {
+single_value->field_reserved = other_value.reserved();
+} else {
+single_value->field_reserved.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.zero().get_selection()) {
+single_value->field_zero = other_value.zero();
+} else {
+single_value->field_zero.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new TesterPresentResponseSID_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.TesterPresentResponseSID.");
+break;
+}
+set_selection(other_value);
+}
+
+TesterPresentResponseSID_template::TesterPresentResponseSID_template()
+{
+}
+
+TesterPresentResponseSID_template::TesterPresentResponseSID_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+TesterPresentResponseSID_template::TesterPresentResponseSID_template(const TesterPresentResponseSID& other_value)
+{
+copy_value(other_value);
+}
+
+TesterPresentResponseSID_template::TesterPresentResponseSID_template(const OPTIONAL<TesterPresentResponseSID>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const TesterPresentResponseSID&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.TesterPresentResponseSID from an unbound optional field.");
+}
+}
+
+TesterPresentResponseSID_template::TesterPresentResponseSID_template(const TesterPresentResponseSID_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+TesterPresentResponseSID_template::~TesterPresentResponseSID_template()
+{
+clean_up();
+}
+
+TesterPresentResponseSID_template& TesterPresentResponseSID_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+TesterPresentResponseSID_template& TesterPresentResponseSID_template::operator=(const TesterPresentResponseSID& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+TesterPresentResponseSID_template& TesterPresentResponseSID_template::operator=(const OPTIONAL<TesterPresentResponseSID>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const TesterPresentResponseSID&)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 @UnifiedDiagnosticServices.TesterPresentResponseSID.");
+}
+return *this;
+}
+
+TesterPresentResponseSID_template& TesterPresentResponseSID_template::operator=(const TesterPresentResponseSID_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean TesterPresentResponseSID_template::match(const TesterPresentResponseSID& 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.sid().is_bound()) return FALSE;
+if(!single_value->field_sid.match(other_value.sid(), legacy))return FALSE;
+if(!other_value.reserved().is_bound()) return FALSE;
+if(!single_value->field_reserved.match(other_value.reserved(), legacy))return FALSE;
+if(!other_value.zero().is_bound()) return FALSE;
+if(!single_value->field_zero.match(other_value.zero(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.TesterPresentResponseSID.");
+}
+return FALSE;
+}
+
+boolean TesterPresentResponseSID_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_sid.is_bound()
+
+ ||single_value->field_reserved.is_bound()
+
+ ||single_value->field_zero.is_bound()
+;
+}
+
+boolean TesterPresentResponseSID_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_sid.is_value()
+ &&single_value->field_reserved.is_value()
+ &&single_value->field_zero.is_value();
+}
+
+void TesterPresentResponseSID_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+TesterPresentResponseSID TesterPresentResponseSID_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 @UnifiedDiagnosticServices.TesterPresentResponseSID.");
+TesterPresentResponseSID ret_val;
+if (single_value->field_sid.is_bound()) {
+ret_val.sid() = single_value->field_sid.valueof();
+}
+if (single_value->field_reserved.is_bound()) {
+ret_val.reserved() = single_value->field_reserved.valueof();
+}
+if (single_value->field_zero.is_bound()) {
+ret_val.zero() = single_value->field_zero.valueof();
+}
+return ret_val;
+}
+
+void TesterPresentResponseSID_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.TesterPresentResponseSID.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new TesterPresentResponseSID_template[list_length];
+}
+
+TesterPresentResponseSID_template& TesterPresentResponseSID_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.TesterPresentResponseSID.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.TesterPresentResponseSID.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& TesterPresentResponseSID_template::sid()
+{
+set_specific();
+return single_value->field_sid;
+}
+
+const OCTETSTRING_template& TesterPresentResponseSID_template::sid() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field sid of a non-specific template of type @UnifiedDiagnosticServices.TesterPresentResponseSID.");
+return single_value->field_sid;
+}
+
+BITSTRING_template& TesterPresentResponseSID_template::reserved()
+{
+set_specific();
+return single_value->field_reserved;
+}
+
+const BITSTRING_template& TesterPresentResponseSID_template::reserved() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field reserved of a non-specific template of type @UnifiedDiagnosticServices.TesterPresentResponseSID.");
+return single_value->field_reserved;
+}
+
+BITSTRING_template& TesterPresentResponseSID_template::zero()
+{
+set_specific();
+return single_value->field_zero;
+}
+
+const BITSTRING_template& TesterPresentResponseSID_template::zero() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field zero of a non-specific template of type @UnifiedDiagnosticServices.TesterPresentResponseSID.");
+return single_value->field_zero;
+}
+
+int TesterPresentResponseSID_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.TesterPresentResponseSID 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 @UnifiedDiagnosticServices.TesterPresentResponseSID 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 @UnifiedDiagnosticServices.TesterPresentResponseSID containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.TesterPresentResponseSID containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.TesterPresentResponseSID containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.TesterPresentResponseSID containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.TesterPresentResponseSID.");
+  }
+  return 0;
+}
+
+void TesterPresentResponseSID_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ sid := ");
+single_value->field_sid.log();
+TTCN_Logger::log_event_str(", reserved := ");
+single_value->field_reserved.log();
+TTCN_Logger::log_event_str(", zero := ");
+single_value->field_zero.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void TesterPresentResponseSID_template::log_match(const TesterPresentResponseSID& 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_sid.match(match_value.sid(), legacy)){
+TTCN_Logger::log_logmatch_info(".sid");
+single_value->field_sid.log_match(match_value.sid(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_reserved.match(match_value.reserved(), legacy)){
+TTCN_Logger::log_logmatch_info(".reserved");
+single_value->field_reserved.log_match(match_value.reserved(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_zero.match(match_value.zero(), legacy)){
+TTCN_Logger::log_logmatch_info(".zero");
+single_value->field_zero.log_match(match_value.zero(), 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("{ sid := ");
+single_value->field_sid.log_match(match_value.sid(), legacy);
+TTCN_Logger::log_event_str(", reserved := ");
+single_value->field_reserved.log_match(match_value.reserved(), legacy);
+TTCN_Logger::log_event_str(", zero := ");
+single_value->field_zero.log_match(match_value.zero(), 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 TesterPresentResponseSID_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_sid.encode_text(text_buf);
+single_value->field_reserved.encode_text(text_buf);
+single_value->field_zero.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 @UnifiedDiagnosticServices.TesterPresentResponseSID.");
+}
+}
+
+void TesterPresentResponseSID_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_sid.decode_text(text_buf);
+single_value->field_reserved.decode_text(text_buf);
+single_value->field_zero.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 TesterPresentResponseSID_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 @UnifiedDiagnosticServices.TesterPresentResponseSID.");
+}
+}
+
+void TesterPresentResponseSID_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: {
+    TesterPresentResponseSID_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @UnifiedDiagnosticServices.TesterPresentResponseSID 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) sid().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) reserved().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) zero().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(), "sid")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          sid().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(), "reserved")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          reserved().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(), "zero")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          zero().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 @UnifiedDiagnosticServices.TesterPresentResponseSID: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.TesterPresentResponseSID");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void TesterPresentResponseSID_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_sid.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.TesterPresentResponseSID");
+single_value->field_reserved.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.TesterPresentResponseSID");
+single_value->field_zero.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.TesterPresentResponseSID");
+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 : "@UnifiedDiagnosticServices.TesterPresentResponseSID");
+}
+
+boolean TesterPresentResponseSID_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean TesterPresentResponseSID_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ReadDataByIdentifierRequest1::ReadDataByIdentifierRequest1()
+{
+}
+
+ReadDataByIdentifierRequest1::ReadDataByIdentifierRequest1(const OCTETSTRING& par_identifier)
+  :   field_identifier(par_identifier)
+{
+}
+
+ReadDataByIdentifierRequest1::ReadDataByIdentifierRequest1(const ReadDataByIdentifierRequest1& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest1.");
+if (other_value.identifier().is_bound()) field_identifier = other_value.identifier();
+else field_identifier.clean_up();
+}
+
+void ReadDataByIdentifierRequest1::clean_up()
+{
+field_identifier.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ReadDataByIdentifierRequest1::get_descriptor() const { return &ReadDataByIdentifierRequest1_descr_; }
+ReadDataByIdentifierRequest1& ReadDataByIdentifierRequest1::operator=(const ReadDataByIdentifierRequest1& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest1.");
+  if (other_value.identifier().is_bound()) field_identifier = other_value.identifier();
+  else field_identifier.clean_up();
+}
+return *this;
+}
+
+boolean ReadDataByIdentifierRequest1::operator==(const ReadDataByIdentifierRequest1& other_value) const
+{
+return field_identifier==other_value.field_identifier;
+}
+
+boolean ReadDataByIdentifierRequest1::is_bound() const
+{
+return (field_identifier.is_bound());
+}
+boolean ReadDataByIdentifierRequest1::is_value() const
+{
+return field_identifier.is_value();
+}
+void ReadDataByIdentifierRequest1::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ identifier := ");
+field_identifier.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ReadDataByIdentifierRequest1::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 (1<param.get_size()) {
+      param.error("record value of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest1 has 1 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) identifier().set_param(*param.get_elem(0));
+    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(), "identifier")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          identifier().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 @UnifiedDiagnosticServices.ReadDataByIdentifierRequest1: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.ReadDataByIdentifierRequest1");
+  }
+}
+
+void ReadDataByIdentifierRequest1::set_implicit_omit()
+{
+if (identifier().is_bound()) identifier().set_implicit_omit();
+}
+
+void ReadDataByIdentifierRequest1::encode_text(Text_Buf& text_buf) const
+{
+field_identifier.encode_text(text_buf);
+}
+
+void ReadDataByIdentifierRequest1::decode_text(Text_Buf& text_buf)
+{
+field_identifier.decode_text(text_buf);
+}
+
+void ReadDataByIdentifierRequest1::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ReadDataByIdentifierRequest1::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ReadDataByIdentifierRequest1::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, ReadDataByIdentifierRequest1_identifier_descr_.raw->forceomit);
+  decoded_field_length = field_identifier.RAW_decode(ReadDataByIdentifierRequest1_identifier_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ReadDataByIdentifierRequest1::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 = 1;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(1);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, ReadDataByIdentifierRequest1_identifier_descr_.raw);
+  encoded_length += field_identifier.RAW_encode(ReadDataByIdentifierRequest1_identifier_descr_, *myleaf.body.node.nodes[0]);
+  return myleaf.length = encoded_length;
+}
+
+struct ReadDataByIdentifierRequest1_template::single_value_struct {
+OCTETSTRING_template field_identifier;
+};
+
+void ReadDataByIdentifierRequest1_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_identifier = ANY_VALUE;
+}
+}
+}
+
+void ReadDataByIdentifierRequest1_template::copy_value(const ReadDataByIdentifierRequest1& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.identifier().is_bound()) {
+  single_value->field_identifier = other_value.identifier();
+} else {
+  single_value->field_identifier.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ReadDataByIdentifierRequest1_template::copy_template(const ReadDataByIdentifierRequest1_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.identifier().get_selection()) {
+single_value->field_identifier = other_value.identifier();
+} else {
+single_value->field_identifier.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ReadDataByIdentifierRequest1_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest1.");
+break;
+}
+set_selection(other_value);
+}
+
+ReadDataByIdentifierRequest1_template::ReadDataByIdentifierRequest1_template()
+{
+}
+
+ReadDataByIdentifierRequest1_template::ReadDataByIdentifierRequest1_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ReadDataByIdentifierRequest1_template::ReadDataByIdentifierRequest1_template(const ReadDataByIdentifierRequest1& other_value)
+{
+copy_value(other_value);
+}
+
+ReadDataByIdentifierRequest1_template::ReadDataByIdentifierRequest1_template(const OPTIONAL<ReadDataByIdentifierRequest1>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ReadDataByIdentifierRequest1&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest1 from an unbound optional field.");
+}
+}
+
+ReadDataByIdentifierRequest1_template::ReadDataByIdentifierRequest1_template(const ReadDataByIdentifierRequest1_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ReadDataByIdentifierRequest1_template::~ReadDataByIdentifierRequest1_template()
+{
+clean_up();
+}
+
+ReadDataByIdentifierRequest1_template& ReadDataByIdentifierRequest1_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ReadDataByIdentifierRequest1_template& ReadDataByIdentifierRequest1_template::operator=(const ReadDataByIdentifierRequest1& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ReadDataByIdentifierRequest1_template& ReadDataByIdentifierRequest1_template::operator=(const OPTIONAL<ReadDataByIdentifierRequest1>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ReadDataByIdentifierRequest1&)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 @UnifiedDiagnosticServices.ReadDataByIdentifierRequest1.");
+}
+return *this;
+}
+
+ReadDataByIdentifierRequest1_template& ReadDataByIdentifierRequest1_template::operator=(const ReadDataByIdentifierRequest1_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ReadDataByIdentifierRequest1_template::match(const ReadDataByIdentifierRequest1& 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.identifier().is_bound()) return FALSE;
+if(!single_value->field_identifier.match(other_value.identifier(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest1.");
+}
+return FALSE;
+}
+
+boolean ReadDataByIdentifierRequest1_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_identifier.is_bound()
+;
+}
+
+boolean ReadDataByIdentifierRequest1_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_identifier.is_value();
+}
+
+void ReadDataByIdentifierRequest1_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ReadDataByIdentifierRequest1 ReadDataByIdentifierRequest1_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 @UnifiedDiagnosticServices.ReadDataByIdentifierRequest1.");
+ReadDataByIdentifierRequest1 ret_val;
+if (single_value->field_identifier.is_bound()) {
+ret_val.identifier() = single_value->field_identifier.valueof();
+}
+return ret_val;
+}
+
+void ReadDataByIdentifierRequest1_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest1.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ReadDataByIdentifierRequest1_template[list_length];
+}
+
+ReadDataByIdentifierRequest1_template& ReadDataByIdentifierRequest1_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest1.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest1.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& ReadDataByIdentifierRequest1_template::identifier()
+{
+set_specific();
+return single_value->field_identifier;
+}
+
+const OCTETSTRING_template& ReadDataByIdentifierRequest1_template::identifier() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field identifier of a non-specific template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest1.");
+return single_value->field_identifier;
+}
+
+int ReadDataByIdentifierRequest1_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest1 which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 1;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest1 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 @UnifiedDiagnosticServices.ReadDataByIdentifierRequest1 containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest1 containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest1 containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest1 containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest1.");
+  }
+  return 0;
+}
+
+void ReadDataByIdentifierRequest1_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ identifier := ");
+single_value->field_identifier.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ReadDataByIdentifierRequest1_template::log_match(const ReadDataByIdentifierRequest1& 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_identifier.match(match_value.identifier(), legacy)){
+TTCN_Logger::log_logmatch_info(".identifier");
+single_value->field_identifier.log_match(match_value.identifier(), 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("{ identifier := ");
+single_value->field_identifier.log_match(match_value.identifier(), 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 ReadDataByIdentifierRequest1_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_identifier.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 @UnifiedDiagnosticServices.ReadDataByIdentifierRequest1.");
+}
+}
+
+void ReadDataByIdentifierRequest1_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_identifier.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 ReadDataByIdentifierRequest1_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 @UnifiedDiagnosticServices.ReadDataByIdentifierRequest1.");
+}
+}
+
+void ReadDataByIdentifierRequest1_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: {
+    ReadDataByIdentifierRequest1_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (1<param.get_size()) {
+      param.error("record template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest1 has 1 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) identifier().set_param(*param.get_elem(0));
+    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(), "identifier")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          identifier().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 @UnifiedDiagnosticServices.ReadDataByIdentifierRequest1: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.ReadDataByIdentifierRequest1");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ReadDataByIdentifierRequest1_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_identifier.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.ReadDataByIdentifierRequest1");
+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 : "@UnifiedDiagnosticServices.ReadDataByIdentifierRequest1");
+}
+
+boolean ReadDataByIdentifierRequest1_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ReadDataByIdentifierRequest1_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ReadDataByIdentifierRequest2::ReadDataByIdentifierRequest2()
+{
+}
+
+ReadDataByIdentifierRequest2::ReadDataByIdentifierRequest2(const OCTETSTRING& par_identifier)
+  :   field_identifier(par_identifier)
+{
+}
+
+ReadDataByIdentifierRequest2::ReadDataByIdentifierRequest2(const ReadDataByIdentifierRequest2& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest2.");
+if (other_value.identifier().is_bound()) field_identifier = other_value.identifier();
+else field_identifier.clean_up();
+}
+
+void ReadDataByIdentifierRequest2::clean_up()
+{
+field_identifier.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ReadDataByIdentifierRequest2::get_descriptor() const { return &ReadDataByIdentifierRequest2_descr_; }
+ReadDataByIdentifierRequest2& ReadDataByIdentifierRequest2::operator=(const ReadDataByIdentifierRequest2& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest2.");
+  if (other_value.identifier().is_bound()) field_identifier = other_value.identifier();
+  else field_identifier.clean_up();
+}
+return *this;
+}
+
+boolean ReadDataByIdentifierRequest2::operator==(const ReadDataByIdentifierRequest2& other_value) const
+{
+return field_identifier==other_value.field_identifier;
+}
+
+boolean ReadDataByIdentifierRequest2::is_bound() const
+{
+return (field_identifier.is_bound());
+}
+boolean ReadDataByIdentifierRequest2::is_value() const
+{
+return field_identifier.is_value();
+}
+void ReadDataByIdentifierRequest2::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ identifier := ");
+field_identifier.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ReadDataByIdentifierRequest2::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 (1<param.get_size()) {
+      param.error("record value of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest2 has 1 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) identifier().set_param(*param.get_elem(0));
+    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(), "identifier")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          identifier().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 @UnifiedDiagnosticServices.ReadDataByIdentifierRequest2: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.ReadDataByIdentifierRequest2");
+  }
+}
+
+void ReadDataByIdentifierRequest2::set_implicit_omit()
+{
+if (identifier().is_bound()) identifier().set_implicit_omit();
+}
+
+void ReadDataByIdentifierRequest2::encode_text(Text_Buf& text_buf) const
+{
+field_identifier.encode_text(text_buf);
+}
+
+void ReadDataByIdentifierRequest2::decode_text(Text_Buf& text_buf)
+{
+field_identifier.decode_text(text_buf);
+}
+
+void ReadDataByIdentifierRequest2::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ReadDataByIdentifierRequest2::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ReadDataByIdentifierRequest2::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, ReadDataByIdentifierRequest2_identifier_descr_.raw->forceomit);
+  decoded_field_length = field_identifier.RAW_decode(ReadDataByIdentifierRequest2_identifier_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ReadDataByIdentifierRequest2::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 = 1;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(1);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, ReadDataByIdentifierRequest2_identifier_descr_.raw);
+  encoded_length += field_identifier.RAW_encode(ReadDataByIdentifierRequest2_identifier_descr_, *myleaf.body.node.nodes[0]);
+  return myleaf.length = encoded_length;
+}
+
+struct ReadDataByIdentifierRequest2_template::single_value_struct {
+OCTETSTRING_template field_identifier;
+};
+
+void ReadDataByIdentifierRequest2_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_identifier = ANY_VALUE;
+}
+}
+}
+
+void ReadDataByIdentifierRequest2_template::copy_value(const ReadDataByIdentifierRequest2& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.identifier().is_bound()) {
+  single_value->field_identifier = other_value.identifier();
+} else {
+  single_value->field_identifier.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ReadDataByIdentifierRequest2_template::copy_template(const ReadDataByIdentifierRequest2_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.identifier().get_selection()) {
+single_value->field_identifier = other_value.identifier();
+} else {
+single_value->field_identifier.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ReadDataByIdentifierRequest2_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest2.");
+break;
+}
+set_selection(other_value);
+}
+
+ReadDataByIdentifierRequest2_template::ReadDataByIdentifierRequest2_template()
+{
+}
+
+ReadDataByIdentifierRequest2_template::ReadDataByIdentifierRequest2_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ReadDataByIdentifierRequest2_template::ReadDataByIdentifierRequest2_template(const ReadDataByIdentifierRequest2& other_value)
+{
+copy_value(other_value);
+}
+
+ReadDataByIdentifierRequest2_template::ReadDataByIdentifierRequest2_template(const OPTIONAL<ReadDataByIdentifierRequest2>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ReadDataByIdentifierRequest2&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest2 from an unbound optional field.");
+}
+}
+
+ReadDataByIdentifierRequest2_template::ReadDataByIdentifierRequest2_template(const ReadDataByIdentifierRequest2_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ReadDataByIdentifierRequest2_template::~ReadDataByIdentifierRequest2_template()
+{
+clean_up();
+}
+
+ReadDataByIdentifierRequest2_template& ReadDataByIdentifierRequest2_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ReadDataByIdentifierRequest2_template& ReadDataByIdentifierRequest2_template::operator=(const ReadDataByIdentifierRequest2& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ReadDataByIdentifierRequest2_template& ReadDataByIdentifierRequest2_template::operator=(const OPTIONAL<ReadDataByIdentifierRequest2>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ReadDataByIdentifierRequest2&)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 @UnifiedDiagnosticServices.ReadDataByIdentifierRequest2.");
+}
+return *this;
+}
+
+ReadDataByIdentifierRequest2_template& ReadDataByIdentifierRequest2_template::operator=(const ReadDataByIdentifierRequest2_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ReadDataByIdentifierRequest2_template::match(const ReadDataByIdentifierRequest2& 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.identifier().is_bound()) return FALSE;
+if(!single_value->field_identifier.match(other_value.identifier(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest2.");
+}
+return FALSE;
+}
+
+boolean ReadDataByIdentifierRequest2_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_identifier.is_bound()
+;
+}
+
+boolean ReadDataByIdentifierRequest2_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_identifier.is_value();
+}
+
+void ReadDataByIdentifierRequest2_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ReadDataByIdentifierRequest2 ReadDataByIdentifierRequest2_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 @UnifiedDiagnosticServices.ReadDataByIdentifierRequest2.");
+ReadDataByIdentifierRequest2 ret_val;
+if (single_value->field_identifier.is_bound()) {
+ret_val.identifier() = single_value->field_identifier.valueof();
+}
+return ret_val;
+}
+
+void ReadDataByIdentifierRequest2_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest2.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ReadDataByIdentifierRequest2_template[list_length];
+}
+
+ReadDataByIdentifierRequest2_template& ReadDataByIdentifierRequest2_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest2.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest2.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& ReadDataByIdentifierRequest2_template::identifier()
+{
+set_specific();
+return single_value->field_identifier;
+}
+
+const OCTETSTRING_template& ReadDataByIdentifierRequest2_template::identifier() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field identifier of a non-specific template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest2.");
+return single_value->field_identifier;
+}
+
+int ReadDataByIdentifierRequest2_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest2 which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 1;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest2 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 @UnifiedDiagnosticServices.ReadDataByIdentifierRequest2 containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest2 containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest2 containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest2 containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest2.");
+  }
+  return 0;
+}
+
+void ReadDataByIdentifierRequest2_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ identifier := ");
+single_value->field_identifier.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ReadDataByIdentifierRequest2_template::log_match(const ReadDataByIdentifierRequest2& 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_identifier.match(match_value.identifier(), legacy)){
+TTCN_Logger::log_logmatch_info(".identifier");
+single_value->field_identifier.log_match(match_value.identifier(), 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("{ identifier := ");
+single_value->field_identifier.log_match(match_value.identifier(), 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 ReadDataByIdentifierRequest2_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_identifier.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 @UnifiedDiagnosticServices.ReadDataByIdentifierRequest2.");
+}
+}
+
+void ReadDataByIdentifierRequest2_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_identifier.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 ReadDataByIdentifierRequest2_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 @UnifiedDiagnosticServices.ReadDataByIdentifierRequest2.");
+}
+}
+
+void ReadDataByIdentifierRequest2_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: {
+    ReadDataByIdentifierRequest2_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (1<param.get_size()) {
+      param.error("record template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest2 has 1 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) identifier().set_param(*param.get_elem(0));
+    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(), "identifier")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          identifier().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 @UnifiedDiagnosticServices.ReadDataByIdentifierRequest2: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.ReadDataByIdentifierRequest2");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ReadDataByIdentifierRequest2_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_identifier.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.ReadDataByIdentifierRequest2");
+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 : "@UnifiedDiagnosticServices.ReadDataByIdentifierRequest2");
+}
+
+boolean ReadDataByIdentifierRequest2_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ReadDataByIdentifierRequest2_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ReadDataByIdentifierRequest3::ReadDataByIdentifierRequest3()
+{
+}
+
+ReadDataByIdentifierRequest3::ReadDataByIdentifierRequest3(const OCTETSTRING& par_identifier)
+  :   field_identifier(par_identifier)
+{
+}
+
+ReadDataByIdentifierRequest3::ReadDataByIdentifierRequest3(const ReadDataByIdentifierRequest3& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest3.");
+if (other_value.identifier().is_bound()) field_identifier = other_value.identifier();
+else field_identifier.clean_up();
+}
+
+void ReadDataByIdentifierRequest3::clean_up()
+{
+field_identifier.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ReadDataByIdentifierRequest3::get_descriptor() const { return &ReadDataByIdentifierRequest3_descr_; }
+ReadDataByIdentifierRequest3& ReadDataByIdentifierRequest3::operator=(const ReadDataByIdentifierRequest3& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest3.");
+  if (other_value.identifier().is_bound()) field_identifier = other_value.identifier();
+  else field_identifier.clean_up();
+}
+return *this;
+}
+
+boolean ReadDataByIdentifierRequest3::operator==(const ReadDataByIdentifierRequest3& other_value) const
+{
+return field_identifier==other_value.field_identifier;
+}
+
+boolean ReadDataByIdentifierRequest3::is_bound() const
+{
+return (field_identifier.is_bound());
+}
+boolean ReadDataByIdentifierRequest3::is_value() const
+{
+return field_identifier.is_value();
+}
+void ReadDataByIdentifierRequest3::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ identifier := ");
+field_identifier.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ReadDataByIdentifierRequest3::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 (1<param.get_size()) {
+      param.error("record value of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest3 has 1 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) identifier().set_param(*param.get_elem(0));
+    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(), "identifier")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          identifier().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 @UnifiedDiagnosticServices.ReadDataByIdentifierRequest3: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.ReadDataByIdentifierRequest3");
+  }
+}
+
+void ReadDataByIdentifierRequest3::set_implicit_omit()
+{
+if (identifier().is_bound()) identifier().set_implicit_omit();
+}
+
+void ReadDataByIdentifierRequest3::encode_text(Text_Buf& text_buf) const
+{
+field_identifier.encode_text(text_buf);
+}
+
+void ReadDataByIdentifierRequest3::decode_text(Text_Buf& text_buf)
+{
+field_identifier.decode_text(text_buf);
+}
+
+void ReadDataByIdentifierRequest3::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ReadDataByIdentifierRequest3::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ReadDataByIdentifierRequest3::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, ReadDataByIdentifierRequest3_identifier_descr_.raw->forceomit);
+  decoded_field_length = field_identifier.RAW_decode(ReadDataByIdentifierRequest3_identifier_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int ReadDataByIdentifierRequest3::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 = 1;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(1);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, ReadDataByIdentifierRequest3_identifier_descr_.raw);
+  encoded_length += field_identifier.RAW_encode(ReadDataByIdentifierRequest3_identifier_descr_, *myleaf.body.node.nodes[0]);
+  return myleaf.length = encoded_length;
+}
+
+struct ReadDataByIdentifierRequest3_template::single_value_struct {
+OCTETSTRING_template field_identifier;
+};
+
+void ReadDataByIdentifierRequest3_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_identifier = ANY_VALUE;
+}
+}
+}
+
+void ReadDataByIdentifierRequest3_template::copy_value(const ReadDataByIdentifierRequest3& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.identifier().is_bound()) {
+  single_value->field_identifier = other_value.identifier();
+} else {
+  single_value->field_identifier.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ReadDataByIdentifierRequest3_template::copy_template(const ReadDataByIdentifierRequest3_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.identifier().get_selection()) {
+single_value->field_identifier = other_value.identifier();
+} else {
+single_value->field_identifier.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ReadDataByIdentifierRequest3_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest3.");
+break;
+}
+set_selection(other_value);
+}
+
+ReadDataByIdentifierRequest3_template::ReadDataByIdentifierRequest3_template()
+{
+}
+
+ReadDataByIdentifierRequest3_template::ReadDataByIdentifierRequest3_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ReadDataByIdentifierRequest3_template::ReadDataByIdentifierRequest3_template(const ReadDataByIdentifierRequest3& other_value)
+{
+copy_value(other_value);
+}
+
+ReadDataByIdentifierRequest3_template::ReadDataByIdentifierRequest3_template(const OPTIONAL<ReadDataByIdentifierRequest3>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ReadDataByIdentifierRequest3&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest3 from an unbound optional field.");
+}
+}
+
+ReadDataByIdentifierRequest3_template::ReadDataByIdentifierRequest3_template(const ReadDataByIdentifierRequest3_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ReadDataByIdentifierRequest3_template::~ReadDataByIdentifierRequest3_template()
+{
+clean_up();
+}
+
+ReadDataByIdentifierRequest3_template& ReadDataByIdentifierRequest3_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ReadDataByIdentifierRequest3_template& ReadDataByIdentifierRequest3_template::operator=(const ReadDataByIdentifierRequest3& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ReadDataByIdentifierRequest3_template& ReadDataByIdentifierRequest3_template::operator=(const OPTIONAL<ReadDataByIdentifierRequest3>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ReadDataByIdentifierRequest3&)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 @UnifiedDiagnosticServices.ReadDataByIdentifierRequest3.");
+}
+return *this;
+}
+
+ReadDataByIdentifierRequest3_template& ReadDataByIdentifierRequest3_template::operator=(const ReadDataByIdentifierRequest3_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ReadDataByIdentifierRequest3_template::match(const ReadDataByIdentifierRequest3& 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.identifier().is_bound()) return FALSE;
+if(!single_value->field_identifier.match(other_value.identifier(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest3.");
+}
+return FALSE;
+}
+
+boolean ReadDataByIdentifierRequest3_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_identifier.is_bound()
+;
+}
+
+boolean ReadDataByIdentifierRequest3_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_identifier.is_value();
+}
+
+void ReadDataByIdentifierRequest3_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ReadDataByIdentifierRequest3 ReadDataByIdentifierRequest3_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 @UnifiedDiagnosticServices.ReadDataByIdentifierRequest3.");
+ReadDataByIdentifierRequest3 ret_val;
+if (single_value->field_identifier.is_bound()) {
+ret_val.identifier() = single_value->field_identifier.valueof();
+}
+return ret_val;
+}
+
+void ReadDataByIdentifierRequest3_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest3.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ReadDataByIdentifierRequest3_template[list_length];
+}
+
+ReadDataByIdentifierRequest3_template& ReadDataByIdentifierRequest3_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest3.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest3.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& ReadDataByIdentifierRequest3_template::identifier()
+{
+set_specific();
+return single_value->field_identifier;
+}
+
+const OCTETSTRING_template& ReadDataByIdentifierRequest3_template::identifier() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field identifier of a non-specific template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest3.");
+return single_value->field_identifier;
+}
+
+int ReadDataByIdentifierRequest3_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest3 which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 1;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest3 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 @UnifiedDiagnosticServices.ReadDataByIdentifierRequest3 containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest3 containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest3 containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest3 containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest3.");
+  }
+  return 0;
+}
+
+void ReadDataByIdentifierRequest3_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ identifier := ");
+single_value->field_identifier.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ReadDataByIdentifierRequest3_template::log_match(const ReadDataByIdentifierRequest3& 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_identifier.match(match_value.identifier(), legacy)){
+TTCN_Logger::log_logmatch_info(".identifier");
+single_value->field_identifier.log_match(match_value.identifier(), 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("{ identifier := ");
+single_value->field_identifier.log_match(match_value.identifier(), 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 ReadDataByIdentifierRequest3_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_identifier.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 @UnifiedDiagnosticServices.ReadDataByIdentifierRequest3.");
+}
+}
+
+void ReadDataByIdentifierRequest3_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_identifier.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 ReadDataByIdentifierRequest3_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 @UnifiedDiagnosticServices.ReadDataByIdentifierRequest3.");
+}
+}
+
+void ReadDataByIdentifierRequest3_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: {
+    ReadDataByIdentifierRequest3_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (1<param.get_size()) {
+      param.error("record template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest3 has 1 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) identifier().set_param(*param.get_elem(0));
+    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(), "identifier")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          identifier().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 @UnifiedDiagnosticServices.ReadDataByIdentifierRequest3: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.ReadDataByIdentifierRequest3");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ReadDataByIdentifierRequest3_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_identifier.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.ReadDataByIdentifierRequest3");
+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 : "@UnifiedDiagnosticServices.ReadDataByIdentifierRequest3");
+}
+
+boolean ReadDataByIdentifierRequest3_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ReadDataByIdentifierRequest3_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 ReadDataByIdentifierRequest::copy_value(const ReadDataByIdentifierRequest& other_value)
+{
+switch (other_value.union_selection) {
+case ALT_readDataByIdentifier1:
+field_readDataByIdentifier1 = new ReadDataByIdentifierRequest1(*other_value.field_readDataByIdentifier1);
+break;
+case ALT_readDataByIdentifier2:
+field_readDataByIdentifier2 = new ReadDataByIdentifierRequest2(*other_value.field_readDataByIdentifier2);
+break;
+case ALT_readDataByIdentifier3:
+field_readDataByIdentifier3 = new ReadDataByIdentifierRequest3(*other_value.field_readDataByIdentifier3);
+break;
+default:
+TTCN_error("Assignment of an unbound union value of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest.");
+}
+union_selection = other_value.union_selection;
+}
+
+ReadDataByIdentifierRequest::ReadDataByIdentifierRequest()
+{
+union_selection = UNBOUND_VALUE;
+}
+
+ReadDataByIdentifierRequest::ReadDataByIdentifierRequest(const ReadDataByIdentifierRequest& other_value)
+: Base_Type(){
+copy_value(other_value);
+}
+
+ReadDataByIdentifierRequest::~ReadDataByIdentifierRequest()
+{
+clean_up();
+}
+
+ReadDataByIdentifierRequest& ReadDataByIdentifierRequest::operator=(const ReadDataByIdentifierRequest& other_value)
+{
+if (this != &other_value) {
+clean_up();
+copy_value(other_value);
+}
+return *this;
+}
+
+boolean ReadDataByIdentifierRequest::operator==(const ReadDataByIdentifierRequest& other_value) const
+{
+if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest.");
+if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest.");
+if (union_selection != other_value.union_selection) return FALSE;
+switch (union_selection) {
+case ALT_readDataByIdentifier1:
+return *field_readDataByIdentifier1 == *other_value.field_readDataByIdentifier1;
+case ALT_readDataByIdentifier2:
+return *field_readDataByIdentifier2 == *other_value.field_readDataByIdentifier2;
+case ALT_readDataByIdentifier3:
+return *field_readDataByIdentifier3 == *other_value.field_readDataByIdentifier3;
+default:
+return FALSE;
+}
+}
+
+ReadDataByIdentifierRequest1& ReadDataByIdentifierRequest::readDataByIdentifier1()
+{
+if (union_selection != ALT_readDataByIdentifier1) {
+clean_up();
+field_readDataByIdentifier1 = new ReadDataByIdentifierRequest1;
+union_selection = ALT_readDataByIdentifier1;
+}
+return *field_readDataByIdentifier1;
+}
+
+const ReadDataByIdentifierRequest1& ReadDataByIdentifierRequest::readDataByIdentifier1() const
+{
+if (union_selection != ALT_readDataByIdentifier1) TTCN_error("Using non-selected field readDataByIdentifier1 in a value of union type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest.");
+return *field_readDataByIdentifier1;
+}
+
+ReadDataByIdentifierRequest2& ReadDataByIdentifierRequest::readDataByIdentifier2()
+{
+if (union_selection != ALT_readDataByIdentifier2) {
+clean_up();
+field_readDataByIdentifier2 = new ReadDataByIdentifierRequest2;
+union_selection = ALT_readDataByIdentifier2;
+}
+return *field_readDataByIdentifier2;
+}
+
+const ReadDataByIdentifierRequest2& ReadDataByIdentifierRequest::readDataByIdentifier2() const
+{
+if (union_selection != ALT_readDataByIdentifier2) TTCN_error("Using non-selected field readDataByIdentifier2 in a value of union type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest.");
+return *field_readDataByIdentifier2;
+}
+
+ReadDataByIdentifierRequest3& ReadDataByIdentifierRequest::readDataByIdentifier3()
+{
+if (union_selection != ALT_readDataByIdentifier3) {
+clean_up();
+field_readDataByIdentifier3 = new ReadDataByIdentifierRequest3;
+union_selection = ALT_readDataByIdentifier3;
+}
+return *field_readDataByIdentifier3;
+}
+
+const ReadDataByIdentifierRequest3& ReadDataByIdentifierRequest::readDataByIdentifier3() const
+{
+if (union_selection != ALT_readDataByIdentifier3) TTCN_error("Using non-selected field readDataByIdentifier3 in a value of union type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest.");
+return *field_readDataByIdentifier3;
+}
+
+boolean ReadDataByIdentifierRequest::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 @UnifiedDiagnosticServices.ReadDataByIdentifierRequest.");
+return union_selection == checked_selection;
+}
+
+boolean ReadDataByIdentifierRequest::is_bound() const
+{
+  return union_selection != UNBOUND_VALUE;
+}
+
+boolean ReadDataByIdentifierRequest::is_value() const
+{
+switch (union_selection) {
+case UNBOUND_VALUE: return FALSE;
+case ALT_readDataByIdentifier1: return field_readDataByIdentifier1->is_value();
+case ALT_readDataByIdentifier2: return field_readDataByIdentifier2->is_value();
+case ALT_readDataByIdentifier3: return field_readDataByIdentifier3->is_value();
+default: TTCN_error("Invalid selection in union is_bound");}
+}
+
+void ReadDataByIdentifierRequest::clean_up()
+{
+switch (union_selection) {
+case ALT_readDataByIdentifier1:
+  delete field_readDataByIdentifier1;
+  break;
+case ALT_readDataByIdentifier2:
+  delete field_readDataByIdentifier2;
+  break;
+case ALT_readDataByIdentifier3:
+  delete field_readDataByIdentifier3;
+  break;
+default:
+  break;
+}
+union_selection = UNBOUND_VALUE;
+}
+
+void ReadDataByIdentifierRequest::log() const
+{
+switch (union_selection) {
+case ALT_readDataByIdentifier1:
+TTCN_Logger::log_event_str("{ readDataByIdentifier1 := ");
+field_readDataByIdentifier1->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_readDataByIdentifier2:
+TTCN_Logger::log_event_str("{ readDataByIdentifier2 := ");
+field_readDataByIdentifier2->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_readDataByIdentifier3:
+TTCN_Logger::log_event_str("{ readDataByIdentifier3 := ");
+field_readDataByIdentifier3->log();
+TTCN_Logger::log_event_str(" }");
+break;
+default:
+TTCN_Logger::log_event_unbound();
+}
+}
+
+void ReadDataByIdentifierRequest::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, "readDataByIdentifier1")) {
+    readDataByIdentifier1().set_param(*mp_last);
+    if (!readDataByIdentifier1().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "readDataByIdentifier2")) {
+    readDataByIdentifier2().set_param(*mp_last);
+    if (!readDataByIdentifier2().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "readDataByIdentifier3")) {
+    readDataByIdentifier3().set_param(*mp_last);
+    if (!readDataByIdentifier3().is_bound()) clean_up();
+    return;
+  }
+  mp_last->error("Field %s does not exist in type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest.", last_name);
+}
+
+void ReadDataByIdentifierRequest::set_implicit_omit()
+{
+switch (union_selection) {
+case ALT_readDataByIdentifier1:
+field_readDataByIdentifier1->set_implicit_omit(); break;
+case ALT_readDataByIdentifier2:
+field_readDataByIdentifier2->set_implicit_omit(); break;
+case ALT_readDataByIdentifier3:
+field_readDataByIdentifier3->set_implicit_omit(); break;
+default: break;
+}
+}
+
+void ReadDataByIdentifierRequest::encode_text(Text_Buf& text_buf) const
+{
+text_buf.push_int(union_selection);
+switch (union_selection) {
+case ALT_readDataByIdentifier1:
+field_readDataByIdentifier1->encode_text(text_buf);
+break;
+case ALT_readDataByIdentifier2:
+field_readDataByIdentifier2->encode_text(text_buf);
+break;
+case ALT_readDataByIdentifier3:
+field_readDataByIdentifier3->encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an unbound value of union type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest.");
+}
+}
+
+void ReadDataByIdentifierRequest::decode_text(Text_Buf& text_buf)
+{
+switch ((union_selection_type)text_buf.pull_int().get_val()) {
+case ALT_readDataByIdentifier1:
+readDataByIdentifier1().decode_text(text_buf);
+break;
+case ALT_readDataByIdentifier2:
+readDataByIdentifier2().decode_text(text_buf);
+break;
+case ALT_readDataByIdentifier3:
+readDataByIdentifier3().decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest.");
+}
+}
+
+void ReadDataByIdentifierRequest::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ReadDataByIdentifierRequest::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ReadDataByIdentifierRequest::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, ReadDataByIdentifierRequest1_descr_.raw->forceomit);
+      decoded_length = readDataByIdentifier1().RAW_decode(ReadDataByIdentifierRequest1_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, ReadDataByIdentifierRequest2_descr_.raw->forceomit);
+      decoded_length = readDataByIdentifier2().RAW_decode(ReadDataByIdentifierRequest2_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, ReadDataByIdentifierRequest3_descr_.raw->forceomit);
+      decoded_length = readDataByIdentifier3().RAW_decode(ReadDataByIdentifierRequest3_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 {
+    boolean already_failed = FALSE;
+    already_failed = FALSE;
+    if (!already_failed) {
+      OCTETSTRING temporal_0;
+      int decoded_0_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_0_length = temporal_0.RAW_decode(ReadDataByIdentifierRequest1_identifier_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_0_length > 0) {
+        if (temporal_0 ==  os_7) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(0, force_omit, ReadDataByIdentifierRequest1_descr_.raw->forceomit);
+          decoded_length = readDataByIdentifier1().RAW_decode(ReadDataByIdentifierRequest1_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_readDataByIdentifier1).identifier() ==  os_7) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      OCTETSTRING temporal_1;
+      int decoded_1_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_1_length = temporal_1.RAW_decode(ReadDataByIdentifierRequest2_identifier_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_1_length > 0) {
+        if (temporal_1 ==  os_8) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(1, force_omit, ReadDataByIdentifierRequest2_descr_.raw->forceomit);
+          decoded_length = readDataByIdentifier2().RAW_decode(ReadDataByIdentifierRequest2_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_readDataByIdentifier2).identifier() ==  os_8) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      OCTETSTRING temporal_2;
+      int decoded_2_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_2_length = temporal_2.RAW_decode(ReadDataByIdentifierRequest3_identifier_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_2_length > 0) {
+        if (temporal_2 ==  os_9) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(2, force_omit, ReadDataByIdentifierRequest3_descr_.raw->forceomit);
+          decoded_length = readDataByIdentifier3().RAW_decode(ReadDataByIdentifierRequest3_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_readDataByIdentifier3).identifier() ==  os_9) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+ }
+ clean_up();
+ return -1;
+}
+
+int ReadDataByIdentifierRequest::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_readDataByIdentifier1:
+    myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 0, ReadDataByIdentifierRequest1_descr_.raw);
+    encoded_length = field_readDataByIdentifier1->RAW_encode(ReadDataByIdentifierRequest1_descr_, *myleaf.body.node.nodes[0]);
+    myleaf.body.node.nodes[0]->coding_descr = &ReadDataByIdentifierRequest1_descr_;
+    if ((*field_readDataByIdentifier1).identifier() !=  os_7) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={0,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   os_7.RAW_encode(ReadDataByIdentifierRequest1_identifier_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);
+  }
+    }
+    break;
+  case ALT_readDataByIdentifier2:
+    myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 1, ReadDataByIdentifierRequest2_descr_.raw);
+    encoded_length = field_readDataByIdentifier2->RAW_encode(ReadDataByIdentifierRequest2_descr_, *myleaf.body.node.nodes[1]);
+    myleaf.body.node.nodes[1]->coding_descr = &ReadDataByIdentifierRequest2_descr_;
+    if ((*field_readDataByIdentifier2).identifier() !=  os_8) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={1,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   os_8.RAW_encode(ReadDataByIdentifierRequest2_identifier_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);
+  }
+    }
+    break;
+  case ALT_readDataByIdentifier3:
+    myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 2, ReadDataByIdentifierRequest3_descr_.raw);
+    encoded_length = field_readDataByIdentifier3->RAW_encode(ReadDataByIdentifierRequest3_descr_, *myleaf.body.node.nodes[2]);
+    myleaf.body.node.nodes[2]->coding_descr = &ReadDataByIdentifierRequest3_descr_;
+    if ((*field_readDataByIdentifier3).identifier() !=  os_9) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={2,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   os_9.RAW_encode(ReadDataByIdentifierRequest3_identifier_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);
+  }
+    }
+    break;
+  default:
+    TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
+  }
+  return encoded_length;
+}
+
+void ReadDataByIdentifierRequest_template::copy_value(const ReadDataByIdentifierRequest& other_value)
+{
+single_value.union_selection = other_value.get_selection();
+switch (single_value.union_selection) {
+case ReadDataByIdentifierRequest::ALT_readDataByIdentifier1:
+single_value.field_readDataByIdentifier1 = new ReadDataByIdentifierRequest1_template(other_value.readDataByIdentifier1());
+break;
+case ReadDataByIdentifierRequest::ALT_readDataByIdentifier2:
+single_value.field_readDataByIdentifier2 = new ReadDataByIdentifierRequest2_template(other_value.readDataByIdentifier2());
+break;
+case ReadDataByIdentifierRequest::ALT_readDataByIdentifier3:
+single_value.field_readDataByIdentifier3 = new ReadDataByIdentifierRequest3_template(other_value.readDataByIdentifier3());
+break;
+default:
+TTCN_error("Initializing a template with an unbound value of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest.");
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ReadDataByIdentifierRequest_template::copy_template(const ReadDataByIdentifierRequest_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 ReadDataByIdentifierRequest::ALT_readDataByIdentifier1:
+single_value.field_readDataByIdentifier1 = new ReadDataByIdentifierRequest1_template(*other_value.single_value.field_readDataByIdentifier1);
+break;
+case ReadDataByIdentifierRequest::ALT_readDataByIdentifier2:
+single_value.field_readDataByIdentifier2 = new ReadDataByIdentifierRequest2_template(*other_value.single_value.field_readDataByIdentifier2);
+break;
+case ReadDataByIdentifierRequest::ALT_readDataByIdentifier3:
+single_value.field_readDataByIdentifier3 = new ReadDataByIdentifierRequest3_template(*other_value.single_value.field_readDataByIdentifier3);
+break;
+default:
+TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest.");
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ReadDataByIdentifierRequest_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;
+default:
+TTCN_error("Copying an uninitialized template of union type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest.");
+}
+set_selection(other_value);
+}
+
+ReadDataByIdentifierRequest_template::ReadDataByIdentifierRequest_template()
+{
+}
+
+ReadDataByIdentifierRequest_template::ReadDataByIdentifierRequest_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ReadDataByIdentifierRequest_template::ReadDataByIdentifierRequest_template(const ReadDataByIdentifierRequest& other_value)
+{
+copy_value(other_value);
+}
+
+ReadDataByIdentifierRequest_template::ReadDataByIdentifierRequest_template(const OPTIONAL<ReadDataByIdentifierRequest>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ReadDataByIdentifierRequest&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of union type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest from an unbound optional field.");
+}
+}
+
+ReadDataByIdentifierRequest_template::ReadDataByIdentifierRequest_template(const ReadDataByIdentifierRequest_template& other_value)
+: Base_Template(){
+copy_template(other_value);
+}
+
+ReadDataByIdentifierRequest_template::~ReadDataByIdentifierRequest_template()
+{
+clean_up();
+}
+
+void ReadDataByIdentifierRequest_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case ReadDataByIdentifierRequest::ALT_readDataByIdentifier1:
+delete single_value.field_readDataByIdentifier1;
+break;
+case ReadDataByIdentifierRequest::ALT_readDataByIdentifier2:
+delete single_value.field_readDataByIdentifier2;
+break;
+case ReadDataByIdentifierRequest::ALT_readDataByIdentifier3:
+delete single_value.field_readDataByIdentifier3;
+default:
+break;
+}
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ReadDataByIdentifierRequest_template& ReadDataByIdentifierRequest_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ReadDataByIdentifierRequest_template& ReadDataByIdentifierRequest_template::operator=(const ReadDataByIdentifierRequest& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ReadDataByIdentifierRequest_template& ReadDataByIdentifierRequest_template::operator=(const OPTIONAL<ReadDataByIdentifierRequest>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ReadDataByIdentifierRequest&)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 @UnifiedDiagnosticServices.ReadDataByIdentifierRequest.");
+}
+return *this;
+}
+
+ReadDataByIdentifierRequest_template& ReadDataByIdentifierRequest_template::operator=(const ReadDataByIdentifierRequest_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ReadDataByIdentifierRequest_template::match(const ReadDataByIdentifierRequest& 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:
+{
+ReadDataByIdentifierRequest::union_selection_type value_selection = other_value.get_selection();
+if (value_selection == ReadDataByIdentifierRequest::UNBOUND_VALUE) return FALSE;
+if (value_selection != single_value.union_selection) return FALSE;
+switch (value_selection) {
+case ReadDataByIdentifierRequest::ALT_readDataByIdentifier1:
+return single_value.field_readDataByIdentifier1->match(other_value.readDataByIdentifier1(), legacy);
+case ReadDataByIdentifierRequest::ALT_readDataByIdentifier2:
+return single_value.field_readDataByIdentifier2->match(other_value.readDataByIdentifier2(), legacy);
+case ReadDataByIdentifierRequest::ALT_readDataByIdentifier3:
+return single_value.field_readDataByIdentifier3->match(other_value.readDataByIdentifier3(), legacy);
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest.");
+}
+}
+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;
+default:
+TTCN_error ("Matching an uninitialized template of union type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest.");
+}
+return FALSE;
+}
+
+boolean ReadDataByIdentifierRequest_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+switch (single_value.union_selection) {
+case ReadDataByIdentifierRequest::ALT_readDataByIdentifier1:
+return single_value.field_readDataByIdentifier1->is_value();
+case ReadDataByIdentifierRequest::ALT_readDataByIdentifier2:
+return single_value.field_readDataByIdentifier2->is_value();
+case ReadDataByIdentifierRequest::ALT_readDataByIdentifier3:
+return single_value.field_readDataByIdentifier3->is_value();
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest.");
+}
+}
+
+ReadDataByIdentifierRequest ReadDataByIdentifierRequest_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 @UnifiedDiagnosticServices.ReadDataByIdentifierRequest.");
+ReadDataByIdentifierRequest ret_val;
+switch (single_value.union_selection) {
+case ReadDataByIdentifierRequest::ALT_readDataByIdentifier1:
+ret_val.readDataByIdentifier1() = single_value.field_readDataByIdentifier1->valueof();
+break;
+case ReadDataByIdentifierRequest::ALT_readDataByIdentifier2:
+ret_val.readDataByIdentifier2() = single_value.field_readDataByIdentifier2->valueof();
+break;
+case ReadDataByIdentifierRequest::ALT_readDataByIdentifier3:
+ret_val.readDataByIdentifier3() = single_value.field_readDataByIdentifier3->valueof();
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest.");
+}
+return ret_val;
+}
+
+ReadDataByIdentifierRequest_template& ReadDataByIdentifierRequest_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest.");
+return value_list.list_value[list_index];
+}
+void ReadDataByIdentifierRequest_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error ("Internal error: Setting an invalid list for a template of union type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ReadDataByIdentifierRequest_template[list_length];
+}
+
+ReadDataByIdentifierRequest1_template& ReadDataByIdentifierRequest_template::readDataByIdentifier1()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ReadDataByIdentifierRequest::ALT_readDataByIdentifier1) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_readDataByIdentifier1 = new ReadDataByIdentifierRequest1_template(ANY_VALUE);
+else single_value.field_readDataByIdentifier1 = new ReadDataByIdentifierRequest1_template;
+single_value.union_selection = ReadDataByIdentifierRequest::ALT_readDataByIdentifier1;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_readDataByIdentifier1;
+}
+
+const ReadDataByIdentifierRequest1_template& ReadDataByIdentifierRequest_template::readDataByIdentifier1() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field readDataByIdentifier1 in a non-specific template of union type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest.");
+if (single_value.union_selection != ReadDataByIdentifierRequest::ALT_readDataByIdentifier1) TTCN_error("Accessing non-selected field readDataByIdentifier1 in a template of union type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest.");
+return *single_value.field_readDataByIdentifier1;
+}
+
+ReadDataByIdentifierRequest2_template& ReadDataByIdentifierRequest_template::readDataByIdentifier2()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ReadDataByIdentifierRequest::ALT_readDataByIdentifier2) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_readDataByIdentifier2 = new ReadDataByIdentifierRequest2_template(ANY_VALUE);
+else single_value.field_readDataByIdentifier2 = new ReadDataByIdentifierRequest2_template;
+single_value.union_selection = ReadDataByIdentifierRequest::ALT_readDataByIdentifier2;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_readDataByIdentifier2;
+}
+
+const ReadDataByIdentifierRequest2_template& ReadDataByIdentifierRequest_template::readDataByIdentifier2() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field readDataByIdentifier2 in a non-specific template of union type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest.");
+if (single_value.union_selection != ReadDataByIdentifierRequest::ALT_readDataByIdentifier2) TTCN_error("Accessing non-selected field readDataByIdentifier2 in a template of union type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest.");
+return *single_value.field_readDataByIdentifier2;
+}
+
+ReadDataByIdentifierRequest3_template& ReadDataByIdentifierRequest_template::readDataByIdentifier3()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ReadDataByIdentifierRequest::ALT_readDataByIdentifier3) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_readDataByIdentifier3 = new ReadDataByIdentifierRequest3_template(ANY_VALUE);
+else single_value.field_readDataByIdentifier3 = new ReadDataByIdentifierRequest3_template;
+single_value.union_selection = ReadDataByIdentifierRequest::ALT_readDataByIdentifier3;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_readDataByIdentifier3;
+}
+
+const ReadDataByIdentifierRequest3_template& ReadDataByIdentifierRequest_template::readDataByIdentifier3() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field readDataByIdentifier3 in a non-specific template of union type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest.");
+if (single_value.union_selection != ReadDataByIdentifierRequest::ALT_readDataByIdentifier3) TTCN_error("Accessing non-selected field readDataByIdentifier3 in a template of union type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest.");
+return *single_value.field_readDataByIdentifier3;
+}
+
+boolean ReadDataByIdentifierRequest_template::ischosen(ReadDataByIdentifierRequest::union_selection_type checked_selection) const
+{
+if (checked_selection == ReadDataByIdentifierRequest::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest.");
+switch (template_selection) {
+case SPECIFIC_VALUE:
+if (single_value.union_selection == ReadDataByIdentifierRequest::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest.");
+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 @UnifiedDiagnosticServices.ReadDataByIdentifierRequest 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 ReadDataByIdentifierRequest_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case ReadDataByIdentifierRequest::ALT_readDataByIdentifier1:
+TTCN_Logger::log_event_str("{ readDataByIdentifier1 := ");
+single_value.field_readDataByIdentifier1->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ReadDataByIdentifierRequest::ALT_readDataByIdentifier2:
+TTCN_Logger::log_event_str("{ readDataByIdentifier2 := ");
+single_value.field_readDataByIdentifier2->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ReadDataByIdentifierRequest::ALT_readDataByIdentifier3:
+TTCN_Logger::log_event_str("{ readDataByIdentifier3 := ");
+single_value.field_readDataByIdentifier3->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 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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ReadDataByIdentifierRequest_template::log_match(const ReadDataByIdentifierRequest& 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()) {
+switch (single_value.union_selection) {
+case ReadDataByIdentifierRequest::ALT_readDataByIdentifier1:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".readDataByIdentifier1");
+single_value.field_readDataByIdentifier1->log_match(match_value.readDataByIdentifier1(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ readDataByIdentifier1 := ");
+single_value.field_readDataByIdentifier1->log_match(match_value.readDataByIdentifier1(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ReadDataByIdentifierRequest::ALT_readDataByIdentifier2:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".readDataByIdentifier2");
+single_value.field_readDataByIdentifier2->log_match(match_value.readDataByIdentifier2(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ readDataByIdentifier2 := ");
+single_value.field_readDataByIdentifier2->log_match(match_value.readDataByIdentifier2(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ReadDataByIdentifierRequest::ALT_readDataByIdentifier3:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".readDataByIdentifier3");
+single_value.field_readDataByIdentifier3->log_match(match_value.readDataByIdentifier3(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ readDataByIdentifier3 := ");
+single_value.field_readDataByIdentifier3->log_match(match_value.readDataByIdentifier3(), 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 ReadDataByIdentifierRequest_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 ReadDataByIdentifierRequest::ALT_readDataByIdentifier1:
+single_value.field_readDataByIdentifier1->encode_text(text_buf);
+break;
+case ReadDataByIdentifierRequest::ALT_readDataByIdentifier2:
+single_value.field_readDataByIdentifier2->encode_text(text_buf);
+break;
+case ReadDataByIdentifierRequest::ALT_readDataByIdentifier3:
+single_value.field_readDataByIdentifier3->encode_text(text_buf);
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest.");
+}
+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 @UnifiedDiagnosticServices.ReadDataByIdentifierRequest.");
+}
+}
+
+void ReadDataByIdentifierRequest_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+{
+single_value.union_selection = ReadDataByIdentifierRequest::UNBOUND_VALUE;
+ReadDataByIdentifierRequest::union_selection_type new_selection = (ReadDataByIdentifierRequest::union_selection_type)text_buf.pull_int().get_val();
+switch (new_selection) {
+case ReadDataByIdentifierRequest::ALT_readDataByIdentifier1:
+single_value.field_readDataByIdentifier1 = new ReadDataByIdentifierRequest1_template;
+single_value.field_readDataByIdentifier1->decode_text(text_buf);
+break;
+case ReadDataByIdentifierRequest::ALT_readDataByIdentifier2:
+single_value.field_readDataByIdentifier2 = new ReadDataByIdentifierRequest2_template;
+single_value.field_readDataByIdentifier2->decode_text(text_buf);
+break;
+case ReadDataByIdentifierRequest::ALT_readDataByIdentifier3:
+single_value.field_readDataByIdentifier3 = new ReadDataByIdentifierRequest3_template;
+single_value.field_readDataByIdentifier3->decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest.");
+}
+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 ReadDataByIdentifierRequest_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 @UnifiedDiagnosticServices.ReadDataByIdentifierRequest.");
+}
+}
+
+boolean ReadDataByIdentifierRequest_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ReadDataByIdentifierRequest_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 ReadDataByIdentifierRequest_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 `@UnifiedDiagnosticServices.ReadDataByIdentifierRequest'");
+    }
+    if (strcmp("readDataByIdentifier1", param_field) == 0) {
+      readDataByIdentifier1().set_param(param);
+      return;
+    } else if (strcmp("readDataByIdentifier2", param_field) == 0) {
+      readDataByIdentifier2().set_param(param);
+      return;
+    } else if (strcmp("readDataByIdentifier3", param_field) == 0) {
+      readDataByIdentifier3().set_param(param);
+      return;
+    } else param.error("Field `%s' not found in union template type `@UnifiedDiagnosticServices.ReadDataByIdentifierRequest'", 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: {
+    ReadDataByIdentifierRequest_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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", "@UnifiedDiagnosticServices.ReadDataByIdentifierRequest");
+    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, "readDataByIdentifier1")) {
+      readDataByIdentifier1().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "readDataByIdentifier2")) {
+      readDataByIdentifier2().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "readDataByIdentifier3")) {
+      readDataByIdentifier3().set_param(*mp_last);
+      break;
+    }
+    mp_last->error("Field %s does not exist in type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest.", last_name);
+  } break;
+  default:
+    param.type_error("union template", "@UnifiedDiagnosticServices.ReadDataByIdentifierRequest");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ReadDataByIdentifierRequest_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 ReadDataByIdentifierRequest::ALT_readDataByIdentifier1:
+single_value.field_readDataByIdentifier1->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.ReadDataByIdentifierRequest");
+return;
+case ReadDataByIdentifierRequest::ALT_readDataByIdentifier2:
+single_value.field_readDataByIdentifier2->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.ReadDataByIdentifierRequest");
+return;
+case ReadDataByIdentifierRequest::ALT_readDataByIdentifier3:
+single_value.field_readDataByIdentifier3->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.ReadDataByIdentifierRequest");
+return;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @UnifiedDiagnosticServices.ReadDataByIdentifierRequest.");
+}
+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 : "@UnifiedDiagnosticServices.ReadDataByIdentifierRequest");
+}
+
+ReadDataByIdentifierRequestSID::ReadDataByIdentifierRequestSID()
+{
+}
+
+ReadDataByIdentifierRequestSID::ReadDataByIdentifierRequestSID(const OCTETSTRING& par_sid,
+    const ReadDataByIdentifierRequest& par_readDataByIdentifierRequest)
+  :   field_sid(par_sid),
+  field_readDataByIdentifierRequest(par_readDataByIdentifierRequest)
+{
+}
+
+ReadDataByIdentifierRequestSID::ReadDataByIdentifierRequestSID(const ReadDataByIdentifierRequestSID& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequestSID.");
+if (other_value.sid().is_bound()) field_sid = other_value.sid();
+else field_sid.clean_up();
+if (other_value.readDataByIdentifierRequest().is_bound()) field_readDataByIdentifierRequest = other_value.readDataByIdentifierRequest();
+else field_readDataByIdentifierRequest.clean_up();
+}
+
+void ReadDataByIdentifierRequestSID::clean_up()
+{
+field_sid.clean_up();
+field_readDataByIdentifierRequest.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ReadDataByIdentifierRequestSID::get_descriptor() const { return &ReadDataByIdentifierRequestSID_descr_; }
+ReadDataByIdentifierRequestSID& ReadDataByIdentifierRequestSID::operator=(const ReadDataByIdentifierRequestSID& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequestSID.");
+  if (other_value.sid().is_bound()) field_sid = other_value.sid();
+  else field_sid.clean_up();
+  if (other_value.readDataByIdentifierRequest().is_bound()) field_readDataByIdentifierRequest = other_value.readDataByIdentifierRequest();
+  else field_readDataByIdentifierRequest.clean_up();
+}
+return *this;
+}
+
+boolean ReadDataByIdentifierRequestSID::operator==(const ReadDataByIdentifierRequestSID& other_value) const
+{
+return field_sid==other_value.field_sid
+  && field_readDataByIdentifierRequest==other_value.field_readDataByIdentifierRequest;
+}
+
+boolean ReadDataByIdentifierRequestSID::is_bound() const
+{
+return (field_sid.is_bound())
+  || (field_readDataByIdentifierRequest.is_bound());
+}
+boolean ReadDataByIdentifierRequestSID::is_value() const
+{
+return field_sid.is_value()
+  && field_readDataByIdentifierRequest.is_value();
+}
+void ReadDataByIdentifierRequestSID::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ sid := ");
+field_sid.log();
+TTCN_Logger::log_event_str(", readDataByIdentifierRequest := ");
+field_readDataByIdentifierRequest.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ReadDataByIdentifierRequestSID::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 @UnifiedDiagnosticServices.ReadDataByIdentifierRequestSID 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) sid().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) readDataByIdentifierRequest().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(), "sid")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          sid().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(), "readDataByIdentifierRequest")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          readDataByIdentifierRequest().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 @UnifiedDiagnosticServices.ReadDataByIdentifierRequestSID: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.ReadDataByIdentifierRequestSID");
+  }
+}
+
+void ReadDataByIdentifierRequestSID::set_implicit_omit()
+{
+if (sid().is_bound()) sid().set_implicit_omit();
+if (readDataByIdentifierRequest().is_bound()) readDataByIdentifierRequest().set_implicit_omit();
+}
+
+void ReadDataByIdentifierRequestSID::encode_text(Text_Buf& text_buf) const
+{
+field_sid.encode_text(text_buf);
+field_readDataByIdentifierRequest.encode_text(text_buf);
+}
+
+void ReadDataByIdentifierRequestSID::decode_text(Text_Buf& text_buf)
+{
+field_sid.decode_text(text_buf);
+field_readDataByIdentifierRequest.decode_text(text_buf);
+}
+
+void ReadDataByIdentifierRequestSID::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ReadDataByIdentifierRequestSID::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ReadDataByIdentifierRequestSID::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, ReadDataByIdentifierRequestSID_sid_descr_.raw->forceomit);
+  decoded_field_length = field_sid.RAW_decode(ReadDataByIdentifierRequestSID_sid_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, ReadDataByIdentifierRequest_descr_.raw->forceomit);
+  decoded_field_length = field_readDataByIdentifierRequest.RAW_decode(ReadDataByIdentifierRequest_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 ReadDataByIdentifierRequestSID::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, ReadDataByIdentifierRequestSID_sid_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ReadDataByIdentifierRequest_descr_.raw);
+  encoded_length += field_sid.RAW_encode(ReadDataByIdentifierRequestSID_sid_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_readDataByIdentifierRequest.RAW_encode(ReadDataByIdentifierRequest_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct ReadDataByIdentifierRequestSID_template::single_value_struct {
+OCTETSTRING_template field_sid;
+ReadDataByIdentifierRequest_template field_readDataByIdentifierRequest;
+};
+
+void ReadDataByIdentifierRequestSID_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_sid = ANY_VALUE;
+single_value->field_readDataByIdentifierRequest = ANY_VALUE;
+}
+}
+}
+
+void ReadDataByIdentifierRequestSID_template::copy_value(const ReadDataByIdentifierRequestSID& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.sid().is_bound()) {
+  single_value->field_sid = other_value.sid();
+} else {
+  single_value->field_sid.clean_up();
+}
+if (other_value.readDataByIdentifierRequest().is_bound()) {
+  single_value->field_readDataByIdentifierRequest = other_value.readDataByIdentifierRequest();
+} else {
+  single_value->field_readDataByIdentifierRequest.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ReadDataByIdentifierRequestSID_template::copy_template(const ReadDataByIdentifierRequestSID_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.sid().get_selection()) {
+single_value->field_sid = other_value.sid();
+} else {
+single_value->field_sid.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.readDataByIdentifierRequest().get_selection()) {
+single_value->field_readDataByIdentifierRequest = other_value.readDataByIdentifierRequest();
+} else {
+single_value->field_readDataByIdentifierRequest.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ReadDataByIdentifierRequestSID_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequestSID.");
+break;
+}
+set_selection(other_value);
+}
+
+ReadDataByIdentifierRequestSID_template::ReadDataByIdentifierRequestSID_template()
+{
+}
+
+ReadDataByIdentifierRequestSID_template::ReadDataByIdentifierRequestSID_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ReadDataByIdentifierRequestSID_template::ReadDataByIdentifierRequestSID_template(const ReadDataByIdentifierRequestSID& other_value)
+{
+copy_value(other_value);
+}
+
+ReadDataByIdentifierRequestSID_template::ReadDataByIdentifierRequestSID_template(const OPTIONAL<ReadDataByIdentifierRequestSID>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ReadDataByIdentifierRequestSID&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequestSID from an unbound optional field.");
+}
+}
+
+ReadDataByIdentifierRequestSID_template::ReadDataByIdentifierRequestSID_template(const ReadDataByIdentifierRequestSID_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ReadDataByIdentifierRequestSID_template::~ReadDataByIdentifierRequestSID_template()
+{
+clean_up();
+}
+
+ReadDataByIdentifierRequestSID_template& ReadDataByIdentifierRequestSID_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ReadDataByIdentifierRequestSID_template& ReadDataByIdentifierRequestSID_template::operator=(const ReadDataByIdentifierRequestSID& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ReadDataByIdentifierRequestSID_template& ReadDataByIdentifierRequestSID_template::operator=(const OPTIONAL<ReadDataByIdentifierRequestSID>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ReadDataByIdentifierRequestSID&)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 @UnifiedDiagnosticServices.ReadDataByIdentifierRequestSID.");
+}
+return *this;
+}
+
+ReadDataByIdentifierRequestSID_template& ReadDataByIdentifierRequestSID_template::operator=(const ReadDataByIdentifierRequestSID_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ReadDataByIdentifierRequestSID_template::match(const ReadDataByIdentifierRequestSID& 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.sid().is_bound()) return FALSE;
+if(!single_value->field_sid.match(other_value.sid(), legacy))return FALSE;
+if(!other_value.readDataByIdentifierRequest().is_bound()) return FALSE;
+if(!single_value->field_readDataByIdentifierRequest.match(other_value.readDataByIdentifierRequest(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequestSID.");
+}
+return FALSE;
+}
+
+boolean ReadDataByIdentifierRequestSID_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_sid.is_bound()
+
+ ||single_value->field_readDataByIdentifierRequest.is_bound()
+;
+}
+
+boolean ReadDataByIdentifierRequestSID_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_sid.is_value()
+ &&single_value->field_readDataByIdentifierRequest.is_value();
+}
+
+void ReadDataByIdentifierRequestSID_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ReadDataByIdentifierRequestSID ReadDataByIdentifierRequestSID_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 @UnifiedDiagnosticServices.ReadDataByIdentifierRequestSID.");
+ReadDataByIdentifierRequestSID ret_val;
+if (single_value->field_sid.is_bound()) {
+ret_val.sid() = single_value->field_sid.valueof();
+}
+if (single_value->field_readDataByIdentifierRequest.is_bound()) {
+ret_val.readDataByIdentifierRequest() = single_value->field_readDataByIdentifierRequest.valueof();
+}
+return ret_val;
+}
+
+void ReadDataByIdentifierRequestSID_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequestSID.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ReadDataByIdentifierRequestSID_template[list_length];
+}
+
+ReadDataByIdentifierRequestSID_template& ReadDataByIdentifierRequestSID_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequestSID.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequestSID.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& ReadDataByIdentifierRequestSID_template::sid()
+{
+set_specific();
+return single_value->field_sid;
+}
+
+const OCTETSTRING_template& ReadDataByIdentifierRequestSID_template::sid() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field sid of a non-specific template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequestSID.");
+return single_value->field_sid;
+}
+
+ReadDataByIdentifierRequest_template& ReadDataByIdentifierRequestSID_template::readDataByIdentifierRequest()
+{
+set_specific();
+return single_value->field_readDataByIdentifierRequest;
+}
+
+const ReadDataByIdentifierRequest_template& ReadDataByIdentifierRequestSID_template::readDataByIdentifierRequest() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field readDataByIdentifierRequest of a non-specific template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequestSID.");
+return single_value->field_readDataByIdentifierRequest;
+}
+
+int ReadDataByIdentifierRequestSID_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequestSID 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 @UnifiedDiagnosticServices.ReadDataByIdentifierRequestSID 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 @UnifiedDiagnosticServices.ReadDataByIdentifierRequestSID containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequestSID containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequestSID containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequestSID containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.ReadDataByIdentifierRequestSID.");
+  }
+  return 0;
+}
+
+void ReadDataByIdentifierRequestSID_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ sid := ");
+single_value->field_sid.log();
+TTCN_Logger::log_event_str(", readDataByIdentifierRequest := ");
+single_value->field_readDataByIdentifierRequest.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ReadDataByIdentifierRequestSID_template::log_match(const ReadDataByIdentifierRequestSID& 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_sid.match(match_value.sid(), legacy)){
+TTCN_Logger::log_logmatch_info(".sid");
+single_value->field_sid.log_match(match_value.sid(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_readDataByIdentifierRequest.match(match_value.readDataByIdentifierRequest(), legacy)){
+TTCN_Logger::log_logmatch_info(".readDataByIdentifierRequest");
+single_value->field_readDataByIdentifierRequest.log_match(match_value.readDataByIdentifierRequest(), 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("{ sid := ");
+single_value->field_sid.log_match(match_value.sid(), legacy);
+TTCN_Logger::log_event_str(", readDataByIdentifierRequest := ");
+single_value->field_readDataByIdentifierRequest.log_match(match_value.readDataByIdentifierRequest(), 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 ReadDataByIdentifierRequestSID_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_sid.encode_text(text_buf);
+single_value->field_readDataByIdentifierRequest.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 @UnifiedDiagnosticServices.ReadDataByIdentifierRequestSID.");
+}
+}
+
+void ReadDataByIdentifierRequestSID_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_sid.decode_text(text_buf);
+single_value->field_readDataByIdentifierRequest.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 ReadDataByIdentifierRequestSID_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 @UnifiedDiagnosticServices.ReadDataByIdentifierRequestSID.");
+}
+}
+
+void ReadDataByIdentifierRequestSID_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: {
+    ReadDataByIdentifierRequestSID_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @UnifiedDiagnosticServices.ReadDataByIdentifierRequestSID 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) sid().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) readDataByIdentifierRequest().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(), "sid")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          sid().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(), "readDataByIdentifierRequest")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          readDataByIdentifierRequest().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 @UnifiedDiagnosticServices.ReadDataByIdentifierRequestSID: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.ReadDataByIdentifierRequestSID");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ReadDataByIdentifierRequestSID_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_sid.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.ReadDataByIdentifierRequestSID");
+single_value->field_readDataByIdentifierRequest.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.ReadDataByIdentifierRequestSID");
+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 : "@UnifiedDiagnosticServices.ReadDataByIdentifierRequestSID");
+}
+
+boolean ReadDataByIdentifierRequestSID_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ReadDataByIdentifierRequestSID_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ReadDataByIdentifierResponse1::ReadDataByIdentifierResponse1()
+{
+}
+
+ReadDataByIdentifierResponse1::ReadDataByIdentifierResponse1(const OCTETSTRING& par_identifier,
+    const OCTETSTRING& par_readDataByIdentifierResponse)
+  :   field_identifier(par_identifier),
+  field_readDataByIdentifierResponse(par_readDataByIdentifierResponse)
+{
+}
+
+ReadDataByIdentifierResponse1::ReadDataByIdentifierResponse1(const ReadDataByIdentifierResponse1& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse1.");
+if (other_value.identifier().is_bound()) field_identifier = other_value.identifier();
+else field_identifier.clean_up();
+if (other_value.readDataByIdentifierResponse().is_bound()) field_readDataByIdentifierResponse = other_value.readDataByIdentifierResponse();
+else field_readDataByIdentifierResponse.clean_up();
+}
+
+void ReadDataByIdentifierResponse1::clean_up()
+{
+field_identifier.clean_up();
+field_readDataByIdentifierResponse.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ReadDataByIdentifierResponse1::get_descriptor() const { return &ReadDataByIdentifierResponse1_descr_; }
+ReadDataByIdentifierResponse1& ReadDataByIdentifierResponse1::operator=(const ReadDataByIdentifierResponse1& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse1.");
+  if (other_value.identifier().is_bound()) field_identifier = other_value.identifier();
+  else field_identifier.clean_up();
+  if (other_value.readDataByIdentifierResponse().is_bound()) field_readDataByIdentifierResponse = other_value.readDataByIdentifierResponse();
+  else field_readDataByIdentifierResponse.clean_up();
+}
+return *this;
+}
+
+boolean ReadDataByIdentifierResponse1::operator==(const ReadDataByIdentifierResponse1& other_value) const
+{
+return field_identifier==other_value.field_identifier
+  && field_readDataByIdentifierResponse==other_value.field_readDataByIdentifierResponse;
+}
+
+boolean ReadDataByIdentifierResponse1::is_bound() const
+{
+return (field_identifier.is_bound())
+  || (field_readDataByIdentifierResponse.is_bound());
+}
+boolean ReadDataByIdentifierResponse1::is_value() const
+{
+return field_identifier.is_value()
+  && field_readDataByIdentifierResponse.is_value();
+}
+void ReadDataByIdentifierResponse1::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ identifier := ");
+field_identifier.log();
+TTCN_Logger::log_event_str(", readDataByIdentifierResponse := ");
+field_readDataByIdentifierResponse.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ReadDataByIdentifierResponse1::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 @UnifiedDiagnosticServices.ReadDataByIdentifierResponse1 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) identifier().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) readDataByIdentifierResponse().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(), "identifier")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          identifier().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(), "readDataByIdentifierResponse")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          readDataByIdentifierResponse().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 @UnifiedDiagnosticServices.ReadDataByIdentifierResponse1: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.ReadDataByIdentifierResponse1");
+  }
+}
+
+void ReadDataByIdentifierResponse1::set_implicit_omit()
+{
+if (identifier().is_bound()) identifier().set_implicit_omit();
+if (readDataByIdentifierResponse().is_bound()) readDataByIdentifierResponse().set_implicit_omit();
+}
+
+void ReadDataByIdentifierResponse1::encode_text(Text_Buf& text_buf) const
+{
+field_identifier.encode_text(text_buf);
+field_readDataByIdentifierResponse.encode_text(text_buf);
+}
+
+void ReadDataByIdentifierResponse1::decode_text(Text_Buf& text_buf)
+{
+field_identifier.decode_text(text_buf);
+field_readDataByIdentifierResponse.decode_text(text_buf);
+}
+
+void ReadDataByIdentifierResponse1::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ReadDataByIdentifierResponse1::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ReadDataByIdentifierResponse1::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, ReadDataByIdentifierResponse1_identifier_descr_.raw->forceomit);
+  decoded_field_length = field_identifier.RAW_decode(ReadDataByIdentifierResponse1_identifier_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, OCTETSTRING_descr_.raw->forceomit);
+  decoded_field_length = field_readDataByIdentifierResponse.RAW_decode(OCTETSTRING_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 ReadDataByIdentifierResponse1::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, ReadDataByIdentifierResponse1_identifier_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, OCTETSTRING_descr_.raw);
+  encoded_length += field_identifier.RAW_encode(ReadDataByIdentifierResponse1_identifier_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_readDataByIdentifierResponse.RAW_encode(OCTETSTRING_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct ReadDataByIdentifierResponse1_template::single_value_struct {
+OCTETSTRING_template field_identifier;
+OCTETSTRING_template field_readDataByIdentifierResponse;
+};
+
+void ReadDataByIdentifierResponse1_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_identifier = ANY_VALUE;
+single_value->field_readDataByIdentifierResponse = ANY_VALUE;
+}
+}
+}
+
+void ReadDataByIdentifierResponse1_template::copy_value(const ReadDataByIdentifierResponse1& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.identifier().is_bound()) {
+  single_value->field_identifier = other_value.identifier();
+} else {
+  single_value->field_identifier.clean_up();
+}
+if (other_value.readDataByIdentifierResponse().is_bound()) {
+  single_value->field_readDataByIdentifierResponse = other_value.readDataByIdentifierResponse();
+} else {
+  single_value->field_readDataByIdentifierResponse.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ReadDataByIdentifierResponse1_template::copy_template(const ReadDataByIdentifierResponse1_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.identifier().get_selection()) {
+single_value->field_identifier = other_value.identifier();
+} else {
+single_value->field_identifier.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.readDataByIdentifierResponse().get_selection()) {
+single_value->field_readDataByIdentifierResponse = other_value.readDataByIdentifierResponse();
+} else {
+single_value->field_readDataByIdentifierResponse.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ReadDataByIdentifierResponse1_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse1.");
+break;
+}
+set_selection(other_value);
+}
+
+ReadDataByIdentifierResponse1_template::ReadDataByIdentifierResponse1_template()
+{
+}
+
+ReadDataByIdentifierResponse1_template::ReadDataByIdentifierResponse1_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ReadDataByIdentifierResponse1_template::ReadDataByIdentifierResponse1_template(const ReadDataByIdentifierResponse1& other_value)
+{
+copy_value(other_value);
+}
+
+ReadDataByIdentifierResponse1_template::ReadDataByIdentifierResponse1_template(const OPTIONAL<ReadDataByIdentifierResponse1>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ReadDataByIdentifierResponse1&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse1 from an unbound optional field.");
+}
+}
+
+ReadDataByIdentifierResponse1_template::ReadDataByIdentifierResponse1_template(const ReadDataByIdentifierResponse1_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ReadDataByIdentifierResponse1_template::~ReadDataByIdentifierResponse1_template()
+{
+clean_up();
+}
+
+ReadDataByIdentifierResponse1_template& ReadDataByIdentifierResponse1_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ReadDataByIdentifierResponse1_template& ReadDataByIdentifierResponse1_template::operator=(const ReadDataByIdentifierResponse1& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ReadDataByIdentifierResponse1_template& ReadDataByIdentifierResponse1_template::operator=(const OPTIONAL<ReadDataByIdentifierResponse1>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ReadDataByIdentifierResponse1&)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 @UnifiedDiagnosticServices.ReadDataByIdentifierResponse1.");
+}
+return *this;
+}
+
+ReadDataByIdentifierResponse1_template& ReadDataByIdentifierResponse1_template::operator=(const ReadDataByIdentifierResponse1_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ReadDataByIdentifierResponse1_template::match(const ReadDataByIdentifierResponse1& 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.identifier().is_bound()) return FALSE;
+if(!single_value->field_identifier.match(other_value.identifier(), legacy))return FALSE;
+if(!other_value.readDataByIdentifierResponse().is_bound()) return FALSE;
+if(!single_value->field_readDataByIdentifierResponse.match(other_value.readDataByIdentifierResponse(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse1.");
+}
+return FALSE;
+}
+
+boolean ReadDataByIdentifierResponse1_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_identifier.is_bound()
+
+ ||single_value->field_readDataByIdentifierResponse.is_bound()
+;
+}
+
+boolean ReadDataByIdentifierResponse1_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_identifier.is_value()
+ &&single_value->field_readDataByIdentifierResponse.is_value();
+}
+
+void ReadDataByIdentifierResponse1_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ReadDataByIdentifierResponse1 ReadDataByIdentifierResponse1_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 @UnifiedDiagnosticServices.ReadDataByIdentifierResponse1.");
+ReadDataByIdentifierResponse1 ret_val;
+if (single_value->field_identifier.is_bound()) {
+ret_val.identifier() = single_value->field_identifier.valueof();
+}
+if (single_value->field_readDataByIdentifierResponse.is_bound()) {
+ret_val.readDataByIdentifierResponse() = single_value->field_readDataByIdentifierResponse.valueof();
+}
+return ret_val;
+}
+
+void ReadDataByIdentifierResponse1_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse1.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ReadDataByIdentifierResponse1_template[list_length];
+}
+
+ReadDataByIdentifierResponse1_template& ReadDataByIdentifierResponse1_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse1.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse1.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& ReadDataByIdentifierResponse1_template::identifier()
+{
+set_specific();
+return single_value->field_identifier;
+}
+
+const OCTETSTRING_template& ReadDataByIdentifierResponse1_template::identifier() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field identifier of a non-specific template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse1.");
+return single_value->field_identifier;
+}
+
+OCTETSTRING_template& ReadDataByIdentifierResponse1_template::readDataByIdentifierResponse()
+{
+set_specific();
+return single_value->field_readDataByIdentifierResponse;
+}
+
+const OCTETSTRING_template& ReadDataByIdentifierResponse1_template::readDataByIdentifierResponse() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field readDataByIdentifierResponse of a non-specific template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse1.");
+return single_value->field_readDataByIdentifierResponse;
+}
+
+int ReadDataByIdentifierResponse1_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse1 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 @UnifiedDiagnosticServices.ReadDataByIdentifierResponse1 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 @UnifiedDiagnosticServices.ReadDataByIdentifierResponse1 containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse1 containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse1 containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse1 containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse1.");
+  }
+  return 0;
+}
+
+void ReadDataByIdentifierResponse1_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ identifier := ");
+single_value->field_identifier.log();
+TTCN_Logger::log_event_str(", readDataByIdentifierResponse := ");
+single_value->field_readDataByIdentifierResponse.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ReadDataByIdentifierResponse1_template::log_match(const ReadDataByIdentifierResponse1& 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_identifier.match(match_value.identifier(), legacy)){
+TTCN_Logger::log_logmatch_info(".identifier");
+single_value->field_identifier.log_match(match_value.identifier(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_readDataByIdentifierResponse.match(match_value.readDataByIdentifierResponse(), legacy)){
+TTCN_Logger::log_logmatch_info(".readDataByIdentifierResponse");
+single_value->field_readDataByIdentifierResponse.log_match(match_value.readDataByIdentifierResponse(), 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("{ identifier := ");
+single_value->field_identifier.log_match(match_value.identifier(), legacy);
+TTCN_Logger::log_event_str(", readDataByIdentifierResponse := ");
+single_value->field_readDataByIdentifierResponse.log_match(match_value.readDataByIdentifierResponse(), 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 ReadDataByIdentifierResponse1_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_identifier.encode_text(text_buf);
+single_value->field_readDataByIdentifierResponse.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 @UnifiedDiagnosticServices.ReadDataByIdentifierResponse1.");
+}
+}
+
+void ReadDataByIdentifierResponse1_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_identifier.decode_text(text_buf);
+single_value->field_readDataByIdentifierResponse.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 ReadDataByIdentifierResponse1_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 @UnifiedDiagnosticServices.ReadDataByIdentifierResponse1.");
+}
+}
+
+void ReadDataByIdentifierResponse1_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: {
+    ReadDataByIdentifierResponse1_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @UnifiedDiagnosticServices.ReadDataByIdentifierResponse1 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) identifier().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) readDataByIdentifierResponse().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(), "identifier")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          identifier().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(), "readDataByIdentifierResponse")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          readDataByIdentifierResponse().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 @UnifiedDiagnosticServices.ReadDataByIdentifierResponse1: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.ReadDataByIdentifierResponse1");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ReadDataByIdentifierResponse1_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_identifier.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.ReadDataByIdentifierResponse1");
+single_value->field_readDataByIdentifierResponse.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.ReadDataByIdentifierResponse1");
+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 : "@UnifiedDiagnosticServices.ReadDataByIdentifierResponse1");
+}
+
+boolean ReadDataByIdentifierResponse1_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ReadDataByIdentifierResponse1_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ReadDataByIdentifierResponse2::ReadDataByIdentifierResponse2()
+{
+}
+
+ReadDataByIdentifierResponse2::ReadDataByIdentifierResponse2(const OCTETSTRING& par_identifier,
+    const OCTETSTRING& par_readDataByIdentifierResponse)
+  :   field_identifier(par_identifier),
+  field_readDataByIdentifierResponse(par_readDataByIdentifierResponse)
+{
+}
+
+ReadDataByIdentifierResponse2::ReadDataByIdentifierResponse2(const ReadDataByIdentifierResponse2& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse2.");
+if (other_value.identifier().is_bound()) field_identifier = other_value.identifier();
+else field_identifier.clean_up();
+if (other_value.readDataByIdentifierResponse().is_bound()) field_readDataByIdentifierResponse = other_value.readDataByIdentifierResponse();
+else field_readDataByIdentifierResponse.clean_up();
+}
+
+void ReadDataByIdentifierResponse2::clean_up()
+{
+field_identifier.clean_up();
+field_readDataByIdentifierResponse.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ReadDataByIdentifierResponse2::get_descriptor() const { return &ReadDataByIdentifierResponse2_descr_; }
+ReadDataByIdentifierResponse2& ReadDataByIdentifierResponse2::operator=(const ReadDataByIdentifierResponse2& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse2.");
+  if (other_value.identifier().is_bound()) field_identifier = other_value.identifier();
+  else field_identifier.clean_up();
+  if (other_value.readDataByIdentifierResponse().is_bound()) field_readDataByIdentifierResponse = other_value.readDataByIdentifierResponse();
+  else field_readDataByIdentifierResponse.clean_up();
+}
+return *this;
+}
+
+boolean ReadDataByIdentifierResponse2::operator==(const ReadDataByIdentifierResponse2& other_value) const
+{
+return field_identifier==other_value.field_identifier
+  && field_readDataByIdentifierResponse==other_value.field_readDataByIdentifierResponse;
+}
+
+boolean ReadDataByIdentifierResponse2::is_bound() const
+{
+return (field_identifier.is_bound())
+  || (field_readDataByIdentifierResponse.is_bound());
+}
+boolean ReadDataByIdentifierResponse2::is_value() const
+{
+return field_identifier.is_value()
+  && field_readDataByIdentifierResponse.is_value();
+}
+void ReadDataByIdentifierResponse2::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ identifier := ");
+field_identifier.log();
+TTCN_Logger::log_event_str(", readDataByIdentifierResponse := ");
+field_readDataByIdentifierResponse.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ReadDataByIdentifierResponse2::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 @UnifiedDiagnosticServices.ReadDataByIdentifierResponse2 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) identifier().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) readDataByIdentifierResponse().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(), "identifier")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          identifier().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(), "readDataByIdentifierResponse")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          readDataByIdentifierResponse().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 @UnifiedDiagnosticServices.ReadDataByIdentifierResponse2: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.ReadDataByIdentifierResponse2");
+  }
+}
+
+void ReadDataByIdentifierResponse2::set_implicit_omit()
+{
+if (identifier().is_bound()) identifier().set_implicit_omit();
+if (readDataByIdentifierResponse().is_bound()) readDataByIdentifierResponse().set_implicit_omit();
+}
+
+void ReadDataByIdentifierResponse2::encode_text(Text_Buf& text_buf) const
+{
+field_identifier.encode_text(text_buf);
+field_readDataByIdentifierResponse.encode_text(text_buf);
+}
+
+void ReadDataByIdentifierResponse2::decode_text(Text_Buf& text_buf)
+{
+field_identifier.decode_text(text_buf);
+field_readDataByIdentifierResponse.decode_text(text_buf);
+}
+
+void ReadDataByIdentifierResponse2::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ReadDataByIdentifierResponse2::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ReadDataByIdentifierResponse2::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, ReadDataByIdentifierResponse2_identifier_descr_.raw->forceomit);
+  decoded_field_length = field_identifier.RAW_decode(ReadDataByIdentifierResponse2_identifier_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, OCTETSTRING_descr_.raw->forceomit);
+  decoded_field_length = field_readDataByIdentifierResponse.RAW_decode(OCTETSTRING_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 ReadDataByIdentifierResponse2::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, ReadDataByIdentifierResponse2_identifier_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, OCTETSTRING_descr_.raw);
+  encoded_length += field_identifier.RAW_encode(ReadDataByIdentifierResponse2_identifier_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_readDataByIdentifierResponse.RAW_encode(OCTETSTRING_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct ReadDataByIdentifierResponse2_template::single_value_struct {
+OCTETSTRING_template field_identifier;
+OCTETSTRING_template field_readDataByIdentifierResponse;
+};
+
+void ReadDataByIdentifierResponse2_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_identifier = ANY_VALUE;
+single_value->field_readDataByIdentifierResponse = ANY_VALUE;
+}
+}
+}
+
+void ReadDataByIdentifierResponse2_template::copy_value(const ReadDataByIdentifierResponse2& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.identifier().is_bound()) {
+  single_value->field_identifier = other_value.identifier();
+} else {
+  single_value->field_identifier.clean_up();
+}
+if (other_value.readDataByIdentifierResponse().is_bound()) {
+  single_value->field_readDataByIdentifierResponse = other_value.readDataByIdentifierResponse();
+} else {
+  single_value->field_readDataByIdentifierResponse.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ReadDataByIdentifierResponse2_template::copy_template(const ReadDataByIdentifierResponse2_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.identifier().get_selection()) {
+single_value->field_identifier = other_value.identifier();
+} else {
+single_value->field_identifier.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.readDataByIdentifierResponse().get_selection()) {
+single_value->field_readDataByIdentifierResponse = other_value.readDataByIdentifierResponse();
+} else {
+single_value->field_readDataByIdentifierResponse.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ReadDataByIdentifierResponse2_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse2.");
+break;
+}
+set_selection(other_value);
+}
+
+ReadDataByIdentifierResponse2_template::ReadDataByIdentifierResponse2_template()
+{
+}
+
+ReadDataByIdentifierResponse2_template::ReadDataByIdentifierResponse2_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ReadDataByIdentifierResponse2_template::ReadDataByIdentifierResponse2_template(const ReadDataByIdentifierResponse2& other_value)
+{
+copy_value(other_value);
+}
+
+ReadDataByIdentifierResponse2_template::ReadDataByIdentifierResponse2_template(const OPTIONAL<ReadDataByIdentifierResponse2>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ReadDataByIdentifierResponse2&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse2 from an unbound optional field.");
+}
+}
+
+ReadDataByIdentifierResponse2_template::ReadDataByIdentifierResponse2_template(const ReadDataByIdentifierResponse2_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ReadDataByIdentifierResponse2_template::~ReadDataByIdentifierResponse2_template()
+{
+clean_up();
+}
+
+ReadDataByIdentifierResponse2_template& ReadDataByIdentifierResponse2_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ReadDataByIdentifierResponse2_template& ReadDataByIdentifierResponse2_template::operator=(const ReadDataByIdentifierResponse2& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ReadDataByIdentifierResponse2_template& ReadDataByIdentifierResponse2_template::operator=(const OPTIONAL<ReadDataByIdentifierResponse2>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ReadDataByIdentifierResponse2&)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 @UnifiedDiagnosticServices.ReadDataByIdentifierResponse2.");
+}
+return *this;
+}
+
+ReadDataByIdentifierResponse2_template& ReadDataByIdentifierResponse2_template::operator=(const ReadDataByIdentifierResponse2_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ReadDataByIdentifierResponse2_template::match(const ReadDataByIdentifierResponse2& 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.identifier().is_bound()) return FALSE;
+if(!single_value->field_identifier.match(other_value.identifier(), legacy))return FALSE;
+if(!other_value.readDataByIdentifierResponse().is_bound()) return FALSE;
+if(!single_value->field_readDataByIdentifierResponse.match(other_value.readDataByIdentifierResponse(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse2.");
+}
+return FALSE;
+}
+
+boolean ReadDataByIdentifierResponse2_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_identifier.is_bound()
+
+ ||single_value->field_readDataByIdentifierResponse.is_bound()
+;
+}
+
+boolean ReadDataByIdentifierResponse2_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_identifier.is_value()
+ &&single_value->field_readDataByIdentifierResponse.is_value();
+}
+
+void ReadDataByIdentifierResponse2_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ReadDataByIdentifierResponse2 ReadDataByIdentifierResponse2_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 @UnifiedDiagnosticServices.ReadDataByIdentifierResponse2.");
+ReadDataByIdentifierResponse2 ret_val;
+if (single_value->field_identifier.is_bound()) {
+ret_val.identifier() = single_value->field_identifier.valueof();
+}
+if (single_value->field_readDataByIdentifierResponse.is_bound()) {
+ret_val.readDataByIdentifierResponse() = single_value->field_readDataByIdentifierResponse.valueof();
+}
+return ret_val;
+}
+
+void ReadDataByIdentifierResponse2_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse2.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ReadDataByIdentifierResponse2_template[list_length];
+}
+
+ReadDataByIdentifierResponse2_template& ReadDataByIdentifierResponse2_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse2.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse2.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& ReadDataByIdentifierResponse2_template::identifier()
+{
+set_specific();
+return single_value->field_identifier;
+}
+
+const OCTETSTRING_template& ReadDataByIdentifierResponse2_template::identifier() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field identifier of a non-specific template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse2.");
+return single_value->field_identifier;
+}
+
+OCTETSTRING_template& ReadDataByIdentifierResponse2_template::readDataByIdentifierResponse()
+{
+set_specific();
+return single_value->field_readDataByIdentifierResponse;
+}
+
+const OCTETSTRING_template& ReadDataByIdentifierResponse2_template::readDataByIdentifierResponse() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field readDataByIdentifierResponse of a non-specific template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse2.");
+return single_value->field_readDataByIdentifierResponse;
+}
+
+int ReadDataByIdentifierResponse2_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse2 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 @UnifiedDiagnosticServices.ReadDataByIdentifierResponse2 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 @UnifiedDiagnosticServices.ReadDataByIdentifierResponse2 containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse2 containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse2 containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse2 containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse2.");
+  }
+  return 0;
+}
+
+void ReadDataByIdentifierResponse2_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ identifier := ");
+single_value->field_identifier.log();
+TTCN_Logger::log_event_str(", readDataByIdentifierResponse := ");
+single_value->field_readDataByIdentifierResponse.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ReadDataByIdentifierResponse2_template::log_match(const ReadDataByIdentifierResponse2& 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_identifier.match(match_value.identifier(), legacy)){
+TTCN_Logger::log_logmatch_info(".identifier");
+single_value->field_identifier.log_match(match_value.identifier(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_readDataByIdentifierResponse.match(match_value.readDataByIdentifierResponse(), legacy)){
+TTCN_Logger::log_logmatch_info(".readDataByIdentifierResponse");
+single_value->field_readDataByIdentifierResponse.log_match(match_value.readDataByIdentifierResponse(), 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("{ identifier := ");
+single_value->field_identifier.log_match(match_value.identifier(), legacy);
+TTCN_Logger::log_event_str(", readDataByIdentifierResponse := ");
+single_value->field_readDataByIdentifierResponse.log_match(match_value.readDataByIdentifierResponse(), 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 ReadDataByIdentifierResponse2_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_identifier.encode_text(text_buf);
+single_value->field_readDataByIdentifierResponse.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 @UnifiedDiagnosticServices.ReadDataByIdentifierResponse2.");
+}
+}
+
+void ReadDataByIdentifierResponse2_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_identifier.decode_text(text_buf);
+single_value->field_readDataByIdentifierResponse.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 ReadDataByIdentifierResponse2_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 @UnifiedDiagnosticServices.ReadDataByIdentifierResponse2.");
+}
+}
+
+void ReadDataByIdentifierResponse2_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: {
+    ReadDataByIdentifierResponse2_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @UnifiedDiagnosticServices.ReadDataByIdentifierResponse2 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) identifier().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) readDataByIdentifierResponse().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(), "identifier")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          identifier().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(), "readDataByIdentifierResponse")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          readDataByIdentifierResponse().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 @UnifiedDiagnosticServices.ReadDataByIdentifierResponse2: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.ReadDataByIdentifierResponse2");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ReadDataByIdentifierResponse2_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_identifier.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.ReadDataByIdentifierResponse2");
+single_value->field_readDataByIdentifierResponse.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.ReadDataByIdentifierResponse2");
+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 : "@UnifiedDiagnosticServices.ReadDataByIdentifierResponse2");
+}
+
+boolean ReadDataByIdentifierResponse2_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ReadDataByIdentifierResponse2_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+ReadDataByIdentifierResponse3::ReadDataByIdentifierResponse3()
+{
+}
+
+ReadDataByIdentifierResponse3::ReadDataByIdentifierResponse3(const OCTETSTRING& par_identifier,
+    const OCTETSTRING& par_readDataByIdentifierResponse)
+  :   field_identifier(par_identifier),
+  field_readDataByIdentifierResponse(par_readDataByIdentifierResponse)
+{
+}
+
+ReadDataByIdentifierResponse3::ReadDataByIdentifierResponse3(const ReadDataByIdentifierResponse3& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse3.");
+if (other_value.identifier().is_bound()) field_identifier = other_value.identifier();
+else field_identifier.clean_up();
+if (other_value.readDataByIdentifierResponse().is_bound()) field_readDataByIdentifierResponse = other_value.readDataByIdentifierResponse();
+else field_readDataByIdentifierResponse.clean_up();
+}
+
+void ReadDataByIdentifierResponse3::clean_up()
+{
+field_identifier.clean_up();
+field_readDataByIdentifierResponse.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ReadDataByIdentifierResponse3::get_descriptor() const { return &ReadDataByIdentifierResponse3_descr_; }
+ReadDataByIdentifierResponse3& ReadDataByIdentifierResponse3::operator=(const ReadDataByIdentifierResponse3& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse3.");
+  if (other_value.identifier().is_bound()) field_identifier = other_value.identifier();
+  else field_identifier.clean_up();
+  if (other_value.readDataByIdentifierResponse().is_bound()) field_readDataByIdentifierResponse = other_value.readDataByIdentifierResponse();
+  else field_readDataByIdentifierResponse.clean_up();
+}
+return *this;
+}
+
+boolean ReadDataByIdentifierResponse3::operator==(const ReadDataByIdentifierResponse3& other_value) const
+{
+return field_identifier==other_value.field_identifier
+  && field_readDataByIdentifierResponse==other_value.field_readDataByIdentifierResponse;
+}
+
+boolean ReadDataByIdentifierResponse3::is_bound() const
+{
+return (field_identifier.is_bound())
+  || (field_readDataByIdentifierResponse.is_bound());
+}
+boolean ReadDataByIdentifierResponse3::is_value() const
+{
+return field_identifier.is_value()
+  && field_readDataByIdentifierResponse.is_value();
+}
+void ReadDataByIdentifierResponse3::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ identifier := ");
+field_identifier.log();
+TTCN_Logger::log_event_str(", readDataByIdentifierResponse := ");
+field_readDataByIdentifierResponse.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ReadDataByIdentifierResponse3::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 @UnifiedDiagnosticServices.ReadDataByIdentifierResponse3 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) identifier().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) readDataByIdentifierResponse().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(), "identifier")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          identifier().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(), "readDataByIdentifierResponse")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          readDataByIdentifierResponse().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 @UnifiedDiagnosticServices.ReadDataByIdentifierResponse3: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.ReadDataByIdentifierResponse3");
+  }
+}
+
+void ReadDataByIdentifierResponse3::set_implicit_omit()
+{
+if (identifier().is_bound()) identifier().set_implicit_omit();
+if (readDataByIdentifierResponse().is_bound()) readDataByIdentifierResponse().set_implicit_omit();
+}
+
+void ReadDataByIdentifierResponse3::encode_text(Text_Buf& text_buf) const
+{
+field_identifier.encode_text(text_buf);
+field_readDataByIdentifierResponse.encode_text(text_buf);
+}
+
+void ReadDataByIdentifierResponse3::decode_text(Text_Buf& text_buf)
+{
+field_identifier.decode_text(text_buf);
+field_readDataByIdentifierResponse.decode_text(text_buf);
+}
+
+void ReadDataByIdentifierResponse3::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ReadDataByIdentifierResponse3::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ReadDataByIdentifierResponse3::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, ReadDataByIdentifierResponse3_identifier_descr_.raw->forceomit);
+  decoded_field_length = field_identifier.RAW_decode(ReadDataByIdentifierResponse3_identifier_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, OCTETSTRING_descr_.raw->forceomit);
+  decoded_field_length = field_readDataByIdentifierResponse.RAW_decode(OCTETSTRING_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 ReadDataByIdentifierResponse3::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, ReadDataByIdentifierResponse3_identifier_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, OCTETSTRING_descr_.raw);
+  encoded_length += field_identifier.RAW_encode(ReadDataByIdentifierResponse3_identifier_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_readDataByIdentifierResponse.RAW_encode(OCTETSTRING_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct ReadDataByIdentifierResponse3_template::single_value_struct {
+OCTETSTRING_template field_identifier;
+OCTETSTRING_template field_readDataByIdentifierResponse;
+};
+
+void ReadDataByIdentifierResponse3_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_identifier = ANY_VALUE;
+single_value->field_readDataByIdentifierResponse = ANY_VALUE;
+}
+}
+}
+
+void ReadDataByIdentifierResponse3_template::copy_value(const ReadDataByIdentifierResponse3& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.identifier().is_bound()) {
+  single_value->field_identifier = other_value.identifier();
+} else {
+  single_value->field_identifier.clean_up();
+}
+if (other_value.readDataByIdentifierResponse().is_bound()) {
+  single_value->field_readDataByIdentifierResponse = other_value.readDataByIdentifierResponse();
+} else {
+  single_value->field_readDataByIdentifierResponse.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ReadDataByIdentifierResponse3_template::copy_template(const ReadDataByIdentifierResponse3_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.identifier().get_selection()) {
+single_value->field_identifier = other_value.identifier();
+} else {
+single_value->field_identifier.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.readDataByIdentifierResponse().get_selection()) {
+single_value->field_readDataByIdentifierResponse = other_value.readDataByIdentifierResponse();
+} else {
+single_value->field_readDataByIdentifierResponse.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ReadDataByIdentifierResponse3_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse3.");
+break;
+}
+set_selection(other_value);
+}
+
+ReadDataByIdentifierResponse3_template::ReadDataByIdentifierResponse3_template()
+{
+}
+
+ReadDataByIdentifierResponse3_template::ReadDataByIdentifierResponse3_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ReadDataByIdentifierResponse3_template::ReadDataByIdentifierResponse3_template(const ReadDataByIdentifierResponse3& other_value)
+{
+copy_value(other_value);
+}
+
+ReadDataByIdentifierResponse3_template::ReadDataByIdentifierResponse3_template(const OPTIONAL<ReadDataByIdentifierResponse3>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ReadDataByIdentifierResponse3&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse3 from an unbound optional field.");
+}
+}
+
+ReadDataByIdentifierResponse3_template::ReadDataByIdentifierResponse3_template(const ReadDataByIdentifierResponse3_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ReadDataByIdentifierResponse3_template::~ReadDataByIdentifierResponse3_template()
+{
+clean_up();
+}
+
+ReadDataByIdentifierResponse3_template& ReadDataByIdentifierResponse3_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ReadDataByIdentifierResponse3_template& ReadDataByIdentifierResponse3_template::operator=(const ReadDataByIdentifierResponse3& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ReadDataByIdentifierResponse3_template& ReadDataByIdentifierResponse3_template::operator=(const OPTIONAL<ReadDataByIdentifierResponse3>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ReadDataByIdentifierResponse3&)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 @UnifiedDiagnosticServices.ReadDataByIdentifierResponse3.");
+}
+return *this;
+}
+
+ReadDataByIdentifierResponse3_template& ReadDataByIdentifierResponse3_template::operator=(const ReadDataByIdentifierResponse3_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ReadDataByIdentifierResponse3_template::match(const ReadDataByIdentifierResponse3& 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.identifier().is_bound()) return FALSE;
+if(!single_value->field_identifier.match(other_value.identifier(), legacy))return FALSE;
+if(!other_value.readDataByIdentifierResponse().is_bound()) return FALSE;
+if(!single_value->field_readDataByIdentifierResponse.match(other_value.readDataByIdentifierResponse(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse3.");
+}
+return FALSE;
+}
+
+boolean ReadDataByIdentifierResponse3_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_identifier.is_bound()
+
+ ||single_value->field_readDataByIdentifierResponse.is_bound()
+;
+}
+
+boolean ReadDataByIdentifierResponse3_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_identifier.is_value()
+ &&single_value->field_readDataByIdentifierResponse.is_value();
+}
+
+void ReadDataByIdentifierResponse3_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ReadDataByIdentifierResponse3 ReadDataByIdentifierResponse3_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 @UnifiedDiagnosticServices.ReadDataByIdentifierResponse3.");
+ReadDataByIdentifierResponse3 ret_val;
+if (single_value->field_identifier.is_bound()) {
+ret_val.identifier() = single_value->field_identifier.valueof();
+}
+if (single_value->field_readDataByIdentifierResponse.is_bound()) {
+ret_val.readDataByIdentifierResponse() = single_value->field_readDataByIdentifierResponse.valueof();
+}
+return ret_val;
+}
+
+void ReadDataByIdentifierResponse3_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse3.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ReadDataByIdentifierResponse3_template[list_length];
+}
+
+ReadDataByIdentifierResponse3_template& ReadDataByIdentifierResponse3_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse3.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse3.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& ReadDataByIdentifierResponse3_template::identifier()
+{
+set_specific();
+return single_value->field_identifier;
+}
+
+const OCTETSTRING_template& ReadDataByIdentifierResponse3_template::identifier() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field identifier of a non-specific template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse3.");
+return single_value->field_identifier;
+}
+
+OCTETSTRING_template& ReadDataByIdentifierResponse3_template::readDataByIdentifierResponse()
+{
+set_specific();
+return single_value->field_readDataByIdentifierResponse;
+}
+
+const OCTETSTRING_template& ReadDataByIdentifierResponse3_template::readDataByIdentifierResponse() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field readDataByIdentifierResponse of a non-specific template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse3.");
+return single_value->field_readDataByIdentifierResponse;
+}
+
+int ReadDataByIdentifierResponse3_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse3 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 @UnifiedDiagnosticServices.ReadDataByIdentifierResponse3 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 @UnifiedDiagnosticServices.ReadDataByIdentifierResponse3 containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse3 containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse3 containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse3 containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse3.");
+  }
+  return 0;
+}
+
+void ReadDataByIdentifierResponse3_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ identifier := ");
+single_value->field_identifier.log();
+TTCN_Logger::log_event_str(", readDataByIdentifierResponse := ");
+single_value->field_readDataByIdentifierResponse.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ReadDataByIdentifierResponse3_template::log_match(const ReadDataByIdentifierResponse3& 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_identifier.match(match_value.identifier(), legacy)){
+TTCN_Logger::log_logmatch_info(".identifier");
+single_value->field_identifier.log_match(match_value.identifier(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_readDataByIdentifierResponse.match(match_value.readDataByIdentifierResponse(), legacy)){
+TTCN_Logger::log_logmatch_info(".readDataByIdentifierResponse");
+single_value->field_readDataByIdentifierResponse.log_match(match_value.readDataByIdentifierResponse(), 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("{ identifier := ");
+single_value->field_identifier.log_match(match_value.identifier(), legacy);
+TTCN_Logger::log_event_str(", readDataByIdentifierResponse := ");
+single_value->field_readDataByIdentifierResponse.log_match(match_value.readDataByIdentifierResponse(), 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 ReadDataByIdentifierResponse3_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_identifier.encode_text(text_buf);
+single_value->field_readDataByIdentifierResponse.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 @UnifiedDiagnosticServices.ReadDataByIdentifierResponse3.");
+}
+}
+
+void ReadDataByIdentifierResponse3_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_identifier.decode_text(text_buf);
+single_value->field_readDataByIdentifierResponse.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 ReadDataByIdentifierResponse3_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 @UnifiedDiagnosticServices.ReadDataByIdentifierResponse3.");
+}
+}
+
+void ReadDataByIdentifierResponse3_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: {
+    ReadDataByIdentifierResponse3_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @UnifiedDiagnosticServices.ReadDataByIdentifierResponse3 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) identifier().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) readDataByIdentifierResponse().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(), "identifier")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          identifier().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(), "readDataByIdentifierResponse")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          readDataByIdentifierResponse().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 @UnifiedDiagnosticServices.ReadDataByIdentifierResponse3: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.ReadDataByIdentifierResponse3");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ReadDataByIdentifierResponse3_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_identifier.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.ReadDataByIdentifierResponse3");
+single_value->field_readDataByIdentifierResponse.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.ReadDataByIdentifierResponse3");
+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 : "@UnifiedDiagnosticServices.ReadDataByIdentifierResponse3");
+}
+
+boolean ReadDataByIdentifierResponse3_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ReadDataByIdentifierResponse3_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 ReadDataByIdentifierResponse::copy_value(const ReadDataByIdentifierResponse& other_value)
+{
+switch (other_value.union_selection) {
+case ALT_readDataByIdentifier1:
+field_readDataByIdentifier1 = new ReadDataByIdentifierResponse1(*other_value.field_readDataByIdentifier1);
+break;
+case ALT_readDataByIdentifier2:
+field_readDataByIdentifier2 = new ReadDataByIdentifierResponse2(*other_value.field_readDataByIdentifier2);
+break;
+case ALT_readDataByIdentifier3:
+field_readDataByIdentifier3 = new ReadDataByIdentifierResponse3(*other_value.field_readDataByIdentifier3);
+break;
+default:
+TTCN_error("Assignment of an unbound union value of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse.");
+}
+union_selection = other_value.union_selection;
+}
+
+ReadDataByIdentifierResponse::ReadDataByIdentifierResponse()
+{
+union_selection = UNBOUND_VALUE;
+}
+
+ReadDataByIdentifierResponse::ReadDataByIdentifierResponse(const ReadDataByIdentifierResponse& other_value)
+: Base_Type(){
+copy_value(other_value);
+}
+
+ReadDataByIdentifierResponse::~ReadDataByIdentifierResponse()
+{
+clean_up();
+}
+
+ReadDataByIdentifierResponse& ReadDataByIdentifierResponse::operator=(const ReadDataByIdentifierResponse& other_value)
+{
+if (this != &other_value) {
+clean_up();
+copy_value(other_value);
+}
+return *this;
+}
+
+boolean ReadDataByIdentifierResponse::operator==(const ReadDataByIdentifierResponse& other_value) const
+{
+if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse.");
+if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse.");
+if (union_selection != other_value.union_selection) return FALSE;
+switch (union_selection) {
+case ALT_readDataByIdentifier1:
+return *field_readDataByIdentifier1 == *other_value.field_readDataByIdentifier1;
+case ALT_readDataByIdentifier2:
+return *field_readDataByIdentifier2 == *other_value.field_readDataByIdentifier2;
+case ALT_readDataByIdentifier3:
+return *field_readDataByIdentifier3 == *other_value.field_readDataByIdentifier3;
+default:
+return FALSE;
+}
+}
+
+ReadDataByIdentifierResponse1& ReadDataByIdentifierResponse::readDataByIdentifier1()
+{
+if (union_selection != ALT_readDataByIdentifier1) {
+clean_up();
+field_readDataByIdentifier1 = new ReadDataByIdentifierResponse1;
+union_selection = ALT_readDataByIdentifier1;
+}
+return *field_readDataByIdentifier1;
+}
+
+const ReadDataByIdentifierResponse1& ReadDataByIdentifierResponse::readDataByIdentifier1() const
+{
+if (union_selection != ALT_readDataByIdentifier1) TTCN_error("Using non-selected field readDataByIdentifier1 in a value of union type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse.");
+return *field_readDataByIdentifier1;
+}
+
+ReadDataByIdentifierResponse2& ReadDataByIdentifierResponse::readDataByIdentifier2()
+{
+if (union_selection != ALT_readDataByIdentifier2) {
+clean_up();
+field_readDataByIdentifier2 = new ReadDataByIdentifierResponse2;
+union_selection = ALT_readDataByIdentifier2;
+}
+return *field_readDataByIdentifier2;
+}
+
+const ReadDataByIdentifierResponse2& ReadDataByIdentifierResponse::readDataByIdentifier2() const
+{
+if (union_selection != ALT_readDataByIdentifier2) TTCN_error("Using non-selected field readDataByIdentifier2 in a value of union type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse.");
+return *field_readDataByIdentifier2;
+}
+
+ReadDataByIdentifierResponse3& ReadDataByIdentifierResponse::readDataByIdentifier3()
+{
+if (union_selection != ALT_readDataByIdentifier3) {
+clean_up();
+field_readDataByIdentifier3 = new ReadDataByIdentifierResponse3;
+union_selection = ALT_readDataByIdentifier3;
+}
+return *field_readDataByIdentifier3;
+}
+
+const ReadDataByIdentifierResponse3& ReadDataByIdentifierResponse::readDataByIdentifier3() const
+{
+if (union_selection != ALT_readDataByIdentifier3) TTCN_error("Using non-selected field readDataByIdentifier3 in a value of union type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse.");
+return *field_readDataByIdentifier3;
+}
+
+boolean ReadDataByIdentifierResponse::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 @UnifiedDiagnosticServices.ReadDataByIdentifierResponse.");
+return union_selection == checked_selection;
+}
+
+boolean ReadDataByIdentifierResponse::is_bound() const
+{
+  return union_selection != UNBOUND_VALUE;
+}
+
+boolean ReadDataByIdentifierResponse::is_value() const
+{
+switch (union_selection) {
+case UNBOUND_VALUE: return FALSE;
+case ALT_readDataByIdentifier1: return field_readDataByIdentifier1->is_value();
+case ALT_readDataByIdentifier2: return field_readDataByIdentifier2->is_value();
+case ALT_readDataByIdentifier3: return field_readDataByIdentifier3->is_value();
+default: TTCN_error("Invalid selection in union is_bound");}
+}
+
+void ReadDataByIdentifierResponse::clean_up()
+{
+switch (union_selection) {
+case ALT_readDataByIdentifier1:
+  delete field_readDataByIdentifier1;
+  break;
+case ALT_readDataByIdentifier2:
+  delete field_readDataByIdentifier2;
+  break;
+case ALT_readDataByIdentifier3:
+  delete field_readDataByIdentifier3;
+  break;
+default:
+  break;
+}
+union_selection = UNBOUND_VALUE;
+}
+
+void ReadDataByIdentifierResponse::log() const
+{
+switch (union_selection) {
+case ALT_readDataByIdentifier1:
+TTCN_Logger::log_event_str("{ readDataByIdentifier1 := ");
+field_readDataByIdentifier1->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_readDataByIdentifier2:
+TTCN_Logger::log_event_str("{ readDataByIdentifier2 := ");
+field_readDataByIdentifier2->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_readDataByIdentifier3:
+TTCN_Logger::log_event_str("{ readDataByIdentifier3 := ");
+field_readDataByIdentifier3->log();
+TTCN_Logger::log_event_str(" }");
+break;
+default:
+TTCN_Logger::log_event_unbound();
+}
+}
+
+void ReadDataByIdentifierResponse::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, "readDataByIdentifier1")) {
+    readDataByIdentifier1().set_param(*mp_last);
+    if (!readDataByIdentifier1().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "readDataByIdentifier2")) {
+    readDataByIdentifier2().set_param(*mp_last);
+    if (!readDataByIdentifier2().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "readDataByIdentifier3")) {
+    readDataByIdentifier3().set_param(*mp_last);
+    if (!readDataByIdentifier3().is_bound()) clean_up();
+    return;
+  }
+  mp_last->error("Field %s does not exist in type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse.", last_name);
+}
+
+void ReadDataByIdentifierResponse::set_implicit_omit()
+{
+switch (union_selection) {
+case ALT_readDataByIdentifier1:
+field_readDataByIdentifier1->set_implicit_omit(); break;
+case ALT_readDataByIdentifier2:
+field_readDataByIdentifier2->set_implicit_omit(); break;
+case ALT_readDataByIdentifier3:
+field_readDataByIdentifier3->set_implicit_omit(); break;
+default: break;
+}
+}
+
+void ReadDataByIdentifierResponse::encode_text(Text_Buf& text_buf) const
+{
+text_buf.push_int(union_selection);
+switch (union_selection) {
+case ALT_readDataByIdentifier1:
+field_readDataByIdentifier1->encode_text(text_buf);
+break;
+case ALT_readDataByIdentifier2:
+field_readDataByIdentifier2->encode_text(text_buf);
+break;
+case ALT_readDataByIdentifier3:
+field_readDataByIdentifier3->encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an unbound value of union type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse.");
+}
+}
+
+void ReadDataByIdentifierResponse::decode_text(Text_Buf& text_buf)
+{
+switch ((union_selection_type)text_buf.pull_int().get_val()) {
+case ALT_readDataByIdentifier1:
+readDataByIdentifier1().decode_text(text_buf);
+break;
+case ALT_readDataByIdentifier2:
+readDataByIdentifier2().decode_text(text_buf);
+break;
+case ALT_readDataByIdentifier3:
+readDataByIdentifier3().decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse.");
+}
+}
+
+void ReadDataByIdentifierResponse::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ReadDataByIdentifierResponse::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ReadDataByIdentifierResponse::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, ReadDataByIdentifierResponse1_descr_.raw->forceomit);
+      decoded_length = readDataByIdentifier1().RAW_decode(ReadDataByIdentifierResponse1_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, ReadDataByIdentifierResponse2_descr_.raw->forceomit);
+      decoded_length = readDataByIdentifier2().RAW_decode(ReadDataByIdentifierResponse2_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, ReadDataByIdentifierResponse3_descr_.raw->forceomit);
+      decoded_length = readDataByIdentifier3().RAW_decode(ReadDataByIdentifierResponse3_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 {
+    boolean already_failed = FALSE;
+    already_failed = FALSE;
+    if (!already_failed) {
+      OCTETSTRING temporal_0;
+      int decoded_0_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_0_length = temporal_0.RAW_decode(ReadDataByIdentifierResponse1_identifier_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_0_length > 0) {
+        if (temporal_0 ==  os_7) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(0, force_omit, ReadDataByIdentifierResponse1_descr_.raw->forceomit);
+          decoded_length = readDataByIdentifier1().RAW_decode(ReadDataByIdentifierResponse1_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_readDataByIdentifier1).identifier() ==  os_7) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      OCTETSTRING temporal_1;
+      int decoded_1_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_1_length = temporal_1.RAW_decode(ReadDataByIdentifierResponse2_identifier_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_1_length > 0) {
+        if (temporal_1 ==  os_8) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(1, force_omit, ReadDataByIdentifierResponse2_descr_.raw->forceomit);
+          decoded_length = readDataByIdentifier2().RAW_decode(ReadDataByIdentifierResponse2_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_readDataByIdentifier2).identifier() ==  os_8) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      OCTETSTRING temporal_2;
+      int decoded_2_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_2_length = temporal_2.RAW_decode(ReadDataByIdentifierResponse3_identifier_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_2_length > 0) {
+        if (temporal_2 ==  os_9) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(2, force_omit, ReadDataByIdentifierResponse3_descr_.raw->forceomit);
+          decoded_length = readDataByIdentifier3().RAW_decode(ReadDataByIdentifierResponse3_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_readDataByIdentifier3).identifier() ==  os_9) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+ }
+ clean_up();
+ return -1;
+}
+
+int ReadDataByIdentifierResponse::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_readDataByIdentifier1:
+    myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 0, ReadDataByIdentifierResponse1_descr_.raw);
+    encoded_length = field_readDataByIdentifier1->RAW_encode(ReadDataByIdentifierResponse1_descr_, *myleaf.body.node.nodes[0]);
+    myleaf.body.node.nodes[0]->coding_descr = &ReadDataByIdentifierResponse1_descr_;
+    if ((*field_readDataByIdentifier1).identifier() !=  os_7) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={0,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   os_7.RAW_encode(ReadDataByIdentifierResponse1_identifier_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);
+  }
+    }
+    break;
+  case ALT_readDataByIdentifier2:
+    myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 1, ReadDataByIdentifierResponse2_descr_.raw);
+    encoded_length = field_readDataByIdentifier2->RAW_encode(ReadDataByIdentifierResponse2_descr_, *myleaf.body.node.nodes[1]);
+    myleaf.body.node.nodes[1]->coding_descr = &ReadDataByIdentifierResponse2_descr_;
+    if ((*field_readDataByIdentifier2).identifier() !=  os_8) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={1,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   os_8.RAW_encode(ReadDataByIdentifierResponse2_identifier_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);
+  }
+    }
+    break;
+  case ALT_readDataByIdentifier3:
+    myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 2, ReadDataByIdentifierResponse3_descr_.raw);
+    encoded_length = field_readDataByIdentifier3->RAW_encode(ReadDataByIdentifierResponse3_descr_, *myleaf.body.node.nodes[2]);
+    myleaf.body.node.nodes[2]->coding_descr = &ReadDataByIdentifierResponse3_descr_;
+    if ((*field_readDataByIdentifier3).identifier() !=  os_9) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={2,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   os_9.RAW_encode(ReadDataByIdentifierResponse3_identifier_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);
+  }
+    }
+    break;
+  default:
+    TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
+  }
+  return encoded_length;
+}
+
+void ReadDataByIdentifierResponse_template::copy_value(const ReadDataByIdentifierResponse& other_value)
+{
+single_value.union_selection = other_value.get_selection();
+switch (single_value.union_selection) {
+case ReadDataByIdentifierResponse::ALT_readDataByIdentifier1:
+single_value.field_readDataByIdentifier1 = new ReadDataByIdentifierResponse1_template(other_value.readDataByIdentifier1());
+break;
+case ReadDataByIdentifierResponse::ALT_readDataByIdentifier2:
+single_value.field_readDataByIdentifier2 = new ReadDataByIdentifierResponse2_template(other_value.readDataByIdentifier2());
+break;
+case ReadDataByIdentifierResponse::ALT_readDataByIdentifier3:
+single_value.field_readDataByIdentifier3 = new ReadDataByIdentifierResponse3_template(other_value.readDataByIdentifier3());
+break;
+default:
+TTCN_error("Initializing a template with an unbound value of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse.");
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ReadDataByIdentifierResponse_template::copy_template(const ReadDataByIdentifierResponse_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 ReadDataByIdentifierResponse::ALT_readDataByIdentifier1:
+single_value.field_readDataByIdentifier1 = new ReadDataByIdentifierResponse1_template(*other_value.single_value.field_readDataByIdentifier1);
+break;
+case ReadDataByIdentifierResponse::ALT_readDataByIdentifier2:
+single_value.field_readDataByIdentifier2 = new ReadDataByIdentifierResponse2_template(*other_value.single_value.field_readDataByIdentifier2);
+break;
+case ReadDataByIdentifierResponse::ALT_readDataByIdentifier3:
+single_value.field_readDataByIdentifier3 = new ReadDataByIdentifierResponse3_template(*other_value.single_value.field_readDataByIdentifier3);
+break;
+default:
+TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse.");
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ReadDataByIdentifierResponse_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;
+default:
+TTCN_error("Copying an uninitialized template of union type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse.");
+}
+set_selection(other_value);
+}
+
+ReadDataByIdentifierResponse_template::ReadDataByIdentifierResponse_template()
+{
+}
+
+ReadDataByIdentifierResponse_template::ReadDataByIdentifierResponse_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ReadDataByIdentifierResponse_template::ReadDataByIdentifierResponse_template(const ReadDataByIdentifierResponse& other_value)
+{
+copy_value(other_value);
+}
+
+ReadDataByIdentifierResponse_template::ReadDataByIdentifierResponse_template(const OPTIONAL<ReadDataByIdentifierResponse>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ReadDataByIdentifierResponse&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of union type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse from an unbound optional field.");
+}
+}
+
+ReadDataByIdentifierResponse_template::ReadDataByIdentifierResponse_template(const ReadDataByIdentifierResponse_template& other_value)
+: Base_Template(){
+copy_template(other_value);
+}
+
+ReadDataByIdentifierResponse_template::~ReadDataByIdentifierResponse_template()
+{
+clean_up();
+}
+
+void ReadDataByIdentifierResponse_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case ReadDataByIdentifierResponse::ALT_readDataByIdentifier1:
+delete single_value.field_readDataByIdentifier1;
+break;
+case ReadDataByIdentifierResponse::ALT_readDataByIdentifier2:
+delete single_value.field_readDataByIdentifier2;
+break;
+case ReadDataByIdentifierResponse::ALT_readDataByIdentifier3:
+delete single_value.field_readDataByIdentifier3;
+default:
+break;
+}
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ReadDataByIdentifierResponse_template& ReadDataByIdentifierResponse_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ReadDataByIdentifierResponse_template& ReadDataByIdentifierResponse_template::operator=(const ReadDataByIdentifierResponse& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ReadDataByIdentifierResponse_template& ReadDataByIdentifierResponse_template::operator=(const OPTIONAL<ReadDataByIdentifierResponse>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ReadDataByIdentifierResponse&)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 @UnifiedDiagnosticServices.ReadDataByIdentifierResponse.");
+}
+return *this;
+}
+
+ReadDataByIdentifierResponse_template& ReadDataByIdentifierResponse_template::operator=(const ReadDataByIdentifierResponse_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ReadDataByIdentifierResponse_template::match(const ReadDataByIdentifierResponse& 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:
+{
+ReadDataByIdentifierResponse::union_selection_type value_selection = other_value.get_selection();
+if (value_selection == ReadDataByIdentifierResponse::UNBOUND_VALUE) return FALSE;
+if (value_selection != single_value.union_selection) return FALSE;
+switch (value_selection) {
+case ReadDataByIdentifierResponse::ALT_readDataByIdentifier1:
+return single_value.field_readDataByIdentifier1->match(other_value.readDataByIdentifier1(), legacy);
+case ReadDataByIdentifierResponse::ALT_readDataByIdentifier2:
+return single_value.field_readDataByIdentifier2->match(other_value.readDataByIdentifier2(), legacy);
+case ReadDataByIdentifierResponse::ALT_readDataByIdentifier3:
+return single_value.field_readDataByIdentifier3->match(other_value.readDataByIdentifier3(), legacy);
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse.");
+}
+}
+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;
+default:
+TTCN_error ("Matching an uninitialized template of union type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse.");
+}
+return FALSE;
+}
+
+boolean ReadDataByIdentifierResponse_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+switch (single_value.union_selection) {
+case ReadDataByIdentifierResponse::ALT_readDataByIdentifier1:
+return single_value.field_readDataByIdentifier1->is_value();
+case ReadDataByIdentifierResponse::ALT_readDataByIdentifier2:
+return single_value.field_readDataByIdentifier2->is_value();
+case ReadDataByIdentifierResponse::ALT_readDataByIdentifier3:
+return single_value.field_readDataByIdentifier3->is_value();
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse.");
+}
+}
+
+ReadDataByIdentifierResponse ReadDataByIdentifierResponse_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 @UnifiedDiagnosticServices.ReadDataByIdentifierResponse.");
+ReadDataByIdentifierResponse ret_val;
+switch (single_value.union_selection) {
+case ReadDataByIdentifierResponse::ALT_readDataByIdentifier1:
+ret_val.readDataByIdentifier1() = single_value.field_readDataByIdentifier1->valueof();
+break;
+case ReadDataByIdentifierResponse::ALT_readDataByIdentifier2:
+ret_val.readDataByIdentifier2() = single_value.field_readDataByIdentifier2->valueof();
+break;
+case ReadDataByIdentifierResponse::ALT_readDataByIdentifier3:
+ret_val.readDataByIdentifier3() = single_value.field_readDataByIdentifier3->valueof();
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse.");
+}
+return ret_val;
+}
+
+ReadDataByIdentifierResponse_template& ReadDataByIdentifierResponse_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse.");
+return value_list.list_value[list_index];
+}
+void ReadDataByIdentifierResponse_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error ("Internal error: Setting an invalid list for a template of union type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ReadDataByIdentifierResponse_template[list_length];
+}
+
+ReadDataByIdentifierResponse1_template& ReadDataByIdentifierResponse_template::readDataByIdentifier1()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ReadDataByIdentifierResponse::ALT_readDataByIdentifier1) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_readDataByIdentifier1 = new ReadDataByIdentifierResponse1_template(ANY_VALUE);
+else single_value.field_readDataByIdentifier1 = new ReadDataByIdentifierResponse1_template;
+single_value.union_selection = ReadDataByIdentifierResponse::ALT_readDataByIdentifier1;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_readDataByIdentifier1;
+}
+
+const ReadDataByIdentifierResponse1_template& ReadDataByIdentifierResponse_template::readDataByIdentifier1() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field readDataByIdentifier1 in a non-specific template of union type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse.");
+if (single_value.union_selection != ReadDataByIdentifierResponse::ALT_readDataByIdentifier1) TTCN_error("Accessing non-selected field readDataByIdentifier1 in a template of union type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse.");
+return *single_value.field_readDataByIdentifier1;
+}
+
+ReadDataByIdentifierResponse2_template& ReadDataByIdentifierResponse_template::readDataByIdentifier2()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ReadDataByIdentifierResponse::ALT_readDataByIdentifier2) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_readDataByIdentifier2 = new ReadDataByIdentifierResponse2_template(ANY_VALUE);
+else single_value.field_readDataByIdentifier2 = new ReadDataByIdentifierResponse2_template;
+single_value.union_selection = ReadDataByIdentifierResponse::ALT_readDataByIdentifier2;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_readDataByIdentifier2;
+}
+
+const ReadDataByIdentifierResponse2_template& ReadDataByIdentifierResponse_template::readDataByIdentifier2() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field readDataByIdentifier2 in a non-specific template of union type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse.");
+if (single_value.union_selection != ReadDataByIdentifierResponse::ALT_readDataByIdentifier2) TTCN_error("Accessing non-selected field readDataByIdentifier2 in a template of union type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse.");
+return *single_value.field_readDataByIdentifier2;
+}
+
+ReadDataByIdentifierResponse3_template& ReadDataByIdentifierResponse_template::readDataByIdentifier3()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != ReadDataByIdentifierResponse::ALT_readDataByIdentifier3) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_readDataByIdentifier3 = new ReadDataByIdentifierResponse3_template(ANY_VALUE);
+else single_value.field_readDataByIdentifier3 = new ReadDataByIdentifierResponse3_template;
+single_value.union_selection = ReadDataByIdentifierResponse::ALT_readDataByIdentifier3;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_readDataByIdentifier3;
+}
+
+const ReadDataByIdentifierResponse3_template& ReadDataByIdentifierResponse_template::readDataByIdentifier3() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field readDataByIdentifier3 in a non-specific template of union type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse.");
+if (single_value.union_selection != ReadDataByIdentifierResponse::ALT_readDataByIdentifier3) TTCN_error("Accessing non-selected field readDataByIdentifier3 in a template of union type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse.");
+return *single_value.field_readDataByIdentifier3;
+}
+
+boolean ReadDataByIdentifierResponse_template::ischosen(ReadDataByIdentifierResponse::union_selection_type checked_selection) const
+{
+if (checked_selection == ReadDataByIdentifierResponse::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse.");
+switch (template_selection) {
+case SPECIFIC_VALUE:
+if (single_value.union_selection == ReadDataByIdentifierResponse::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse.");
+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 @UnifiedDiagnosticServices.ReadDataByIdentifierResponse 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 ReadDataByIdentifierResponse_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case ReadDataByIdentifierResponse::ALT_readDataByIdentifier1:
+TTCN_Logger::log_event_str("{ readDataByIdentifier1 := ");
+single_value.field_readDataByIdentifier1->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ReadDataByIdentifierResponse::ALT_readDataByIdentifier2:
+TTCN_Logger::log_event_str("{ readDataByIdentifier2 := ");
+single_value.field_readDataByIdentifier2->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ReadDataByIdentifierResponse::ALT_readDataByIdentifier3:
+TTCN_Logger::log_event_str("{ readDataByIdentifier3 := ");
+single_value.field_readDataByIdentifier3->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 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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ReadDataByIdentifierResponse_template::log_match(const ReadDataByIdentifierResponse& 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()) {
+switch (single_value.union_selection) {
+case ReadDataByIdentifierResponse::ALT_readDataByIdentifier1:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".readDataByIdentifier1");
+single_value.field_readDataByIdentifier1->log_match(match_value.readDataByIdentifier1(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ readDataByIdentifier1 := ");
+single_value.field_readDataByIdentifier1->log_match(match_value.readDataByIdentifier1(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ReadDataByIdentifierResponse::ALT_readDataByIdentifier2:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".readDataByIdentifier2");
+single_value.field_readDataByIdentifier2->log_match(match_value.readDataByIdentifier2(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ readDataByIdentifier2 := ");
+single_value.field_readDataByIdentifier2->log_match(match_value.readDataByIdentifier2(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case ReadDataByIdentifierResponse::ALT_readDataByIdentifier3:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".readDataByIdentifier3");
+single_value.field_readDataByIdentifier3->log_match(match_value.readDataByIdentifier3(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ readDataByIdentifier3 := ");
+single_value.field_readDataByIdentifier3->log_match(match_value.readDataByIdentifier3(), 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 ReadDataByIdentifierResponse_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 ReadDataByIdentifierResponse::ALT_readDataByIdentifier1:
+single_value.field_readDataByIdentifier1->encode_text(text_buf);
+break;
+case ReadDataByIdentifierResponse::ALT_readDataByIdentifier2:
+single_value.field_readDataByIdentifier2->encode_text(text_buf);
+break;
+case ReadDataByIdentifierResponse::ALT_readDataByIdentifier3:
+single_value.field_readDataByIdentifier3->encode_text(text_buf);
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse.");
+}
+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 @UnifiedDiagnosticServices.ReadDataByIdentifierResponse.");
+}
+}
+
+void ReadDataByIdentifierResponse_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+{
+single_value.union_selection = ReadDataByIdentifierResponse::UNBOUND_VALUE;
+ReadDataByIdentifierResponse::union_selection_type new_selection = (ReadDataByIdentifierResponse::union_selection_type)text_buf.pull_int().get_val();
+switch (new_selection) {
+case ReadDataByIdentifierResponse::ALT_readDataByIdentifier1:
+single_value.field_readDataByIdentifier1 = new ReadDataByIdentifierResponse1_template;
+single_value.field_readDataByIdentifier1->decode_text(text_buf);
+break;
+case ReadDataByIdentifierResponse::ALT_readDataByIdentifier2:
+single_value.field_readDataByIdentifier2 = new ReadDataByIdentifierResponse2_template;
+single_value.field_readDataByIdentifier2->decode_text(text_buf);
+break;
+case ReadDataByIdentifierResponse::ALT_readDataByIdentifier3:
+single_value.field_readDataByIdentifier3 = new ReadDataByIdentifierResponse3_template;
+single_value.field_readDataByIdentifier3->decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse.");
+}
+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 ReadDataByIdentifierResponse_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 @UnifiedDiagnosticServices.ReadDataByIdentifierResponse.");
+}
+}
+
+boolean ReadDataByIdentifierResponse_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ReadDataByIdentifierResponse_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 ReadDataByIdentifierResponse_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 `@UnifiedDiagnosticServices.ReadDataByIdentifierResponse'");
+    }
+    if (strcmp("readDataByIdentifier1", param_field) == 0) {
+      readDataByIdentifier1().set_param(param);
+      return;
+    } else if (strcmp("readDataByIdentifier2", param_field) == 0) {
+      readDataByIdentifier2().set_param(param);
+      return;
+    } else if (strcmp("readDataByIdentifier3", param_field) == 0) {
+      readDataByIdentifier3().set_param(param);
+      return;
+    } else param.error("Field `%s' not found in union template type `@UnifiedDiagnosticServices.ReadDataByIdentifierResponse'", 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: {
+    ReadDataByIdentifierResponse_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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", "@UnifiedDiagnosticServices.ReadDataByIdentifierResponse");
+    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, "readDataByIdentifier1")) {
+      readDataByIdentifier1().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "readDataByIdentifier2")) {
+      readDataByIdentifier2().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "readDataByIdentifier3")) {
+      readDataByIdentifier3().set_param(*mp_last);
+      break;
+    }
+    mp_last->error("Field %s does not exist in type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse.", last_name);
+  } break;
+  default:
+    param.type_error("union template", "@UnifiedDiagnosticServices.ReadDataByIdentifierResponse");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ReadDataByIdentifierResponse_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 ReadDataByIdentifierResponse::ALT_readDataByIdentifier1:
+single_value.field_readDataByIdentifier1->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.ReadDataByIdentifierResponse");
+return;
+case ReadDataByIdentifierResponse::ALT_readDataByIdentifier2:
+single_value.field_readDataByIdentifier2->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.ReadDataByIdentifierResponse");
+return;
+case ReadDataByIdentifierResponse::ALT_readDataByIdentifier3:
+single_value.field_readDataByIdentifier3->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.ReadDataByIdentifierResponse");
+return;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @UnifiedDiagnosticServices.ReadDataByIdentifierResponse.");
+}
+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 : "@UnifiedDiagnosticServices.ReadDataByIdentifierResponse");
+}
+
+ReadDataByIdentifierResponseSID::ReadDataByIdentifierResponseSID()
+{
+}
+
+ReadDataByIdentifierResponseSID::ReadDataByIdentifierResponseSID(const OCTETSTRING& par_sid,
+    const ReadDataByIdentifierResponse& par_readDataByIdentifierResponse)
+  :   field_sid(par_sid),
+  field_readDataByIdentifierResponse(par_readDataByIdentifierResponse)
+{
+}
+
+ReadDataByIdentifierResponseSID::ReadDataByIdentifierResponseSID(const ReadDataByIdentifierResponseSID& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponseSID.");
+if (other_value.sid().is_bound()) field_sid = other_value.sid();
+else field_sid.clean_up();
+if (other_value.readDataByIdentifierResponse().is_bound()) field_readDataByIdentifierResponse = other_value.readDataByIdentifierResponse();
+else field_readDataByIdentifierResponse.clean_up();
+}
+
+void ReadDataByIdentifierResponseSID::clean_up()
+{
+field_sid.clean_up();
+field_readDataByIdentifierResponse.clean_up();
+}
+
+const TTCN_Typedescriptor_t* ReadDataByIdentifierResponseSID::get_descriptor() const { return &ReadDataByIdentifierResponseSID_descr_; }
+ReadDataByIdentifierResponseSID& ReadDataByIdentifierResponseSID::operator=(const ReadDataByIdentifierResponseSID& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponseSID.");
+  if (other_value.sid().is_bound()) field_sid = other_value.sid();
+  else field_sid.clean_up();
+  if (other_value.readDataByIdentifierResponse().is_bound()) field_readDataByIdentifierResponse = other_value.readDataByIdentifierResponse();
+  else field_readDataByIdentifierResponse.clean_up();
+}
+return *this;
+}
+
+boolean ReadDataByIdentifierResponseSID::operator==(const ReadDataByIdentifierResponseSID& other_value) const
+{
+return field_sid==other_value.field_sid
+  && field_readDataByIdentifierResponse==other_value.field_readDataByIdentifierResponse;
+}
+
+boolean ReadDataByIdentifierResponseSID::is_bound() const
+{
+return (field_sid.is_bound())
+  || (field_readDataByIdentifierResponse.is_bound());
+}
+boolean ReadDataByIdentifierResponseSID::is_value() const
+{
+return field_sid.is_value()
+  && field_readDataByIdentifierResponse.is_value();
+}
+void ReadDataByIdentifierResponseSID::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ sid := ");
+field_sid.log();
+TTCN_Logger::log_event_str(", readDataByIdentifierResponse := ");
+field_readDataByIdentifierResponse.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void ReadDataByIdentifierResponseSID::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 @UnifiedDiagnosticServices.ReadDataByIdentifierResponseSID 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) sid().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) readDataByIdentifierResponse().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(), "sid")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          sid().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(), "readDataByIdentifierResponse")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          readDataByIdentifierResponse().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 @UnifiedDiagnosticServices.ReadDataByIdentifierResponseSID: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.ReadDataByIdentifierResponseSID");
+  }
+}
+
+void ReadDataByIdentifierResponseSID::set_implicit_omit()
+{
+if (sid().is_bound()) sid().set_implicit_omit();
+if (readDataByIdentifierResponse().is_bound()) readDataByIdentifierResponse().set_implicit_omit();
+}
+
+void ReadDataByIdentifierResponseSID::encode_text(Text_Buf& text_buf) const
+{
+field_sid.encode_text(text_buf);
+field_readDataByIdentifierResponse.encode_text(text_buf);
+}
+
+void ReadDataByIdentifierResponseSID::decode_text(Text_Buf& text_buf)
+{
+field_sid.decode_text(text_buf);
+field_readDataByIdentifierResponse.decode_text(text_buf);
+}
+
+void ReadDataByIdentifierResponseSID::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void ReadDataByIdentifierResponseSID::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int ReadDataByIdentifierResponseSID::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, ReadDataByIdentifierResponseSID_sid_descr_.raw->forceomit);
+  decoded_field_length = field_sid.RAW_decode(ReadDataByIdentifierResponseSID_sid_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, ReadDataByIdentifierResponse_descr_.raw->forceomit);
+  decoded_field_length = field_readDataByIdentifierResponse.RAW_decode(ReadDataByIdentifierResponse_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 ReadDataByIdentifierResponseSID::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, ReadDataByIdentifierResponseSID_sid_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, ReadDataByIdentifierResponse_descr_.raw);
+  encoded_length += field_sid.RAW_encode(ReadDataByIdentifierResponseSID_sid_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_readDataByIdentifierResponse.RAW_encode(ReadDataByIdentifierResponse_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct ReadDataByIdentifierResponseSID_template::single_value_struct {
+OCTETSTRING_template field_sid;
+ReadDataByIdentifierResponse_template field_readDataByIdentifierResponse;
+};
+
+void ReadDataByIdentifierResponseSID_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_sid = ANY_VALUE;
+single_value->field_readDataByIdentifierResponse = ANY_VALUE;
+}
+}
+}
+
+void ReadDataByIdentifierResponseSID_template::copy_value(const ReadDataByIdentifierResponseSID& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.sid().is_bound()) {
+  single_value->field_sid = other_value.sid();
+} else {
+  single_value->field_sid.clean_up();
+}
+if (other_value.readDataByIdentifierResponse().is_bound()) {
+  single_value->field_readDataByIdentifierResponse = other_value.readDataByIdentifierResponse();
+} else {
+  single_value->field_readDataByIdentifierResponse.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void ReadDataByIdentifierResponseSID_template::copy_template(const ReadDataByIdentifierResponseSID_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.sid().get_selection()) {
+single_value->field_sid = other_value.sid();
+} else {
+single_value->field_sid.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.readDataByIdentifierResponse().get_selection()) {
+single_value->field_readDataByIdentifierResponse = other_value.readDataByIdentifierResponse();
+} else {
+single_value->field_readDataByIdentifierResponse.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new ReadDataByIdentifierResponseSID_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponseSID.");
+break;
+}
+set_selection(other_value);
+}
+
+ReadDataByIdentifierResponseSID_template::ReadDataByIdentifierResponseSID_template()
+{
+}
+
+ReadDataByIdentifierResponseSID_template::ReadDataByIdentifierResponseSID_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+ReadDataByIdentifierResponseSID_template::ReadDataByIdentifierResponseSID_template(const ReadDataByIdentifierResponseSID& other_value)
+{
+copy_value(other_value);
+}
+
+ReadDataByIdentifierResponseSID_template::ReadDataByIdentifierResponseSID_template(const OPTIONAL<ReadDataByIdentifierResponseSID>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ReadDataByIdentifierResponseSID&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponseSID from an unbound optional field.");
+}
+}
+
+ReadDataByIdentifierResponseSID_template::ReadDataByIdentifierResponseSID_template(const ReadDataByIdentifierResponseSID_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+ReadDataByIdentifierResponseSID_template::~ReadDataByIdentifierResponseSID_template()
+{
+clean_up();
+}
+
+ReadDataByIdentifierResponseSID_template& ReadDataByIdentifierResponseSID_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+ReadDataByIdentifierResponseSID_template& ReadDataByIdentifierResponseSID_template::operator=(const ReadDataByIdentifierResponseSID& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+ReadDataByIdentifierResponseSID_template& ReadDataByIdentifierResponseSID_template::operator=(const OPTIONAL<ReadDataByIdentifierResponseSID>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const ReadDataByIdentifierResponseSID&)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 @UnifiedDiagnosticServices.ReadDataByIdentifierResponseSID.");
+}
+return *this;
+}
+
+ReadDataByIdentifierResponseSID_template& ReadDataByIdentifierResponseSID_template::operator=(const ReadDataByIdentifierResponseSID_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean ReadDataByIdentifierResponseSID_template::match(const ReadDataByIdentifierResponseSID& 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.sid().is_bound()) return FALSE;
+if(!single_value->field_sid.match(other_value.sid(), legacy))return FALSE;
+if(!other_value.readDataByIdentifierResponse().is_bound()) return FALSE;
+if(!single_value->field_readDataByIdentifierResponse.match(other_value.readDataByIdentifierResponse(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponseSID.");
+}
+return FALSE;
+}
+
+boolean ReadDataByIdentifierResponseSID_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_sid.is_bound()
+
+ ||single_value->field_readDataByIdentifierResponse.is_bound()
+;
+}
+
+boolean ReadDataByIdentifierResponseSID_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_sid.is_value()
+ &&single_value->field_readDataByIdentifierResponse.is_value();
+}
+
+void ReadDataByIdentifierResponseSID_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+ReadDataByIdentifierResponseSID ReadDataByIdentifierResponseSID_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 @UnifiedDiagnosticServices.ReadDataByIdentifierResponseSID.");
+ReadDataByIdentifierResponseSID ret_val;
+if (single_value->field_sid.is_bound()) {
+ret_val.sid() = single_value->field_sid.valueof();
+}
+if (single_value->field_readDataByIdentifierResponse.is_bound()) {
+ret_val.readDataByIdentifierResponse() = single_value->field_readDataByIdentifierResponse.valueof();
+}
+return ret_val;
+}
+
+void ReadDataByIdentifierResponseSID_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponseSID.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new ReadDataByIdentifierResponseSID_template[list_length];
+}
+
+ReadDataByIdentifierResponseSID_template& ReadDataByIdentifierResponseSID_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponseSID.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponseSID.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& ReadDataByIdentifierResponseSID_template::sid()
+{
+set_specific();
+return single_value->field_sid;
+}
+
+const OCTETSTRING_template& ReadDataByIdentifierResponseSID_template::sid() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field sid of a non-specific template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponseSID.");
+return single_value->field_sid;
+}
+
+ReadDataByIdentifierResponse_template& ReadDataByIdentifierResponseSID_template::readDataByIdentifierResponse()
+{
+set_specific();
+return single_value->field_readDataByIdentifierResponse;
+}
+
+const ReadDataByIdentifierResponse_template& ReadDataByIdentifierResponseSID_template::readDataByIdentifierResponse() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field readDataByIdentifierResponse of a non-specific template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponseSID.");
+return single_value->field_readDataByIdentifierResponse;
+}
+
+int ReadDataByIdentifierResponseSID_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponseSID 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 @UnifiedDiagnosticServices.ReadDataByIdentifierResponseSID 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 @UnifiedDiagnosticServices.ReadDataByIdentifierResponseSID containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponseSID containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponseSID containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponseSID containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.ReadDataByIdentifierResponseSID.");
+  }
+  return 0;
+}
+
+void ReadDataByIdentifierResponseSID_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ sid := ");
+single_value->field_sid.log();
+TTCN_Logger::log_event_str(", readDataByIdentifierResponse := ");
+single_value->field_readDataByIdentifierResponse.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void ReadDataByIdentifierResponseSID_template::log_match(const ReadDataByIdentifierResponseSID& 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_sid.match(match_value.sid(), legacy)){
+TTCN_Logger::log_logmatch_info(".sid");
+single_value->field_sid.log_match(match_value.sid(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_readDataByIdentifierResponse.match(match_value.readDataByIdentifierResponse(), legacy)){
+TTCN_Logger::log_logmatch_info(".readDataByIdentifierResponse");
+single_value->field_readDataByIdentifierResponse.log_match(match_value.readDataByIdentifierResponse(), 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("{ sid := ");
+single_value->field_sid.log_match(match_value.sid(), legacy);
+TTCN_Logger::log_event_str(", readDataByIdentifierResponse := ");
+single_value->field_readDataByIdentifierResponse.log_match(match_value.readDataByIdentifierResponse(), 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 ReadDataByIdentifierResponseSID_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_sid.encode_text(text_buf);
+single_value->field_readDataByIdentifierResponse.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 @UnifiedDiagnosticServices.ReadDataByIdentifierResponseSID.");
+}
+}
+
+void ReadDataByIdentifierResponseSID_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_sid.decode_text(text_buf);
+single_value->field_readDataByIdentifierResponse.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 ReadDataByIdentifierResponseSID_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 @UnifiedDiagnosticServices.ReadDataByIdentifierResponseSID.");
+}
+}
+
+void ReadDataByIdentifierResponseSID_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: {
+    ReadDataByIdentifierResponseSID_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @UnifiedDiagnosticServices.ReadDataByIdentifierResponseSID 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) sid().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) readDataByIdentifierResponse().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(), "sid")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          sid().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(), "readDataByIdentifierResponse")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          readDataByIdentifierResponse().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 @UnifiedDiagnosticServices.ReadDataByIdentifierResponseSID: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.ReadDataByIdentifierResponseSID");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void ReadDataByIdentifierResponseSID_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_sid.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.ReadDataByIdentifierResponseSID");
+single_value->field_readDataByIdentifierResponse.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.ReadDataByIdentifierResponseSID");
+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 : "@UnifiedDiagnosticServices.ReadDataByIdentifierResponseSID");
+}
+
+boolean ReadDataByIdentifierResponseSID_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean ReadDataByIdentifierResponseSID_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+WriteDataByIdentifierRequest1::WriteDataByIdentifierRequest1()
+{
+}
+
+WriteDataByIdentifierRequest1::WriteDataByIdentifierRequest1(const OCTETSTRING& par_identifier,
+    const OCTETSTRING& par_dataRecord)
+  :   field_identifier(par_identifier),
+  field_dataRecord(par_dataRecord)
+{
+}
+
+WriteDataByIdentifierRequest1::WriteDataByIdentifierRequest1(const WriteDataByIdentifierRequest1& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest1.");
+if (other_value.identifier().is_bound()) field_identifier = other_value.identifier();
+else field_identifier.clean_up();
+if (other_value.dataRecord().is_bound()) field_dataRecord = other_value.dataRecord();
+else field_dataRecord.clean_up();
+}
+
+void WriteDataByIdentifierRequest1::clean_up()
+{
+field_identifier.clean_up();
+field_dataRecord.clean_up();
+}
+
+const TTCN_Typedescriptor_t* WriteDataByIdentifierRequest1::get_descriptor() const { return &WriteDataByIdentifierRequest1_descr_; }
+WriteDataByIdentifierRequest1& WriteDataByIdentifierRequest1::operator=(const WriteDataByIdentifierRequest1& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest1.");
+  if (other_value.identifier().is_bound()) field_identifier = other_value.identifier();
+  else field_identifier.clean_up();
+  if (other_value.dataRecord().is_bound()) field_dataRecord = other_value.dataRecord();
+  else field_dataRecord.clean_up();
+}
+return *this;
+}
+
+boolean WriteDataByIdentifierRequest1::operator==(const WriteDataByIdentifierRequest1& other_value) const
+{
+return field_identifier==other_value.field_identifier
+  && field_dataRecord==other_value.field_dataRecord;
+}
+
+boolean WriteDataByIdentifierRequest1::is_bound() const
+{
+return (field_identifier.is_bound())
+  || (field_dataRecord.is_bound());
+}
+boolean WriteDataByIdentifierRequest1::is_value() const
+{
+return field_identifier.is_value()
+  && field_dataRecord.is_value();
+}
+void WriteDataByIdentifierRequest1::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ identifier := ");
+field_identifier.log();
+TTCN_Logger::log_event_str(", dataRecord := ");
+field_dataRecord.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void WriteDataByIdentifierRequest1::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 @UnifiedDiagnosticServices.WriteDataByIdentifierRequest1 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) identifier().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) dataRecord().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(), "identifier")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          identifier().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(), "dataRecord")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          dataRecord().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 @UnifiedDiagnosticServices.WriteDataByIdentifierRequest1: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.WriteDataByIdentifierRequest1");
+  }
+}
+
+void WriteDataByIdentifierRequest1::set_implicit_omit()
+{
+if (identifier().is_bound()) identifier().set_implicit_omit();
+if (dataRecord().is_bound()) dataRecord().set_implicit_omit();
+}
+
+void WriteDataByIdentifierRequest1::encode_text(Text_Buf& text_buf) const
+{
+field_identifier.encode_text(text_buf);
+field_dataRecord.encode_text(text_buf);
+}
+
+void WriteDataByIdentifierRequest1::decode_text(Text_Buf& text_buf)
+{
+field_identifier.decode_text(text_buf);
+field_dataRecord.decode_text(text_buf);
+}
+
+void WriteDataByIdentifierRequest1::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void WriteDataByIdentifierRequest1::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int WriteDataByIdentifierRequest1::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, WriteDataByIdentifierRequest1_identifier_descr_.raw->forceomit);
+  decoded_field_length = field_identifier.RAW_decode(WriteDataByIdentifierRequest1_identifier_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, OCTETSTRING_descr_.raw->forceomit);
+  decoded_field_length = field_dataRecord.RAW_decode(OCTETSTRING_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 WriteDataByIdentifierRequest1::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, WriteDataByIdentifierRequest1_identifier_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, OCTETSTRING_descr_.raw);
+  encoded_length += field_identifier.RAW_encode(WriteDataByIdentifierRequest1_identifier_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_dataRecord.RAW_encode(OCTETSTRING_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct WriteDataByIdentifierRequest1_template::single_value_struct {
+OCTETSTRING_template field_identifier;
+OCTETSTRING_template field_dataRecord;
+};
+
+void WriteDataByIdentifierRequest1_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_identifier = ANY_VALUE;
+single_value->field_dataRecord = ANY_VALUE;
+}
+}
+}
+
+void WriteDataByIdentifierRequest1_template::copy_value(const WriteDataByIdentifierRequest1& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.identifier().is_bound()) {
+  single_value->field_identifier = other_value.identifier();
+} else {
+  single_value->field_identifier.clean_up();
+}
+if (other_value.dataRecord().is_bound()) {
+  single_value->field_dataRecord = other_value.dataRecord();
+} else {
+  single_value->field_dataRecord.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void WriteDataByIdentifierRequest1_template::copy_template(const WriteDataByIdentifierRequest1_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.identifier().get_selection()) {
+single_value->field_identifier = other_value.identifier();
+} else {
+single_value->field_identifier.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.dataRecord().get_selection()) {
+single_value->field_dataRecord = other_value.dataRecord();
+} else {
+single_value->field_dataRecord.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new WriteDataByIdentifierRequest1_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest1.");
+break;
+}
+set_selection(other_value);
+}
+
+WriteDataByIdentifierRequest1_template::WriteDataByIdentifierRequest1_template()
+{
+}
+
+WriteDataByIdentifierRequest1_template::WriteDataByIdentifierRequest1_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+WriteDataByIdentifierRequest1_template::WriteDataByIdentifierRequest1_template(const WriteDataByIdentifierRequest1& other_value)
+{
+copy_value(other_value);
+}
+
+WriteDataByIdentifierRequest1_template::WriteDataByIdentifierRequest1_template(const OPTIONAL<WriteDataByIdentifierRequest1>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const WriteDataByIdentifierRequest1&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest1 from an unbound optional field.");
+}
+}
+
+WriteDataByIdentifierRequest1_template::WriteDataByIdentifierRequest1_template(const WriteDataByIdentifierRequest1_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+WriteDataByIdentifierRequest1_template::~WriteDataByIdentifierRequest1_template()
+{
+clean_up();
+}
+
+WriteDataByIdentifierRequest1_template& WriteDataByIdentifierRequest1_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+WriteDataByIdentifierRequest1_template& WriteDataByIdentifierRequest1_template::operator=(const WriteDataByIdentifierRequest1& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+WriteDataByIdentifierRequest1_template& WriteDataByIdentifierRequest1_template::operator=(const OPTIONAL<WriteDataByIdentifierRequest1>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const WriteDataByIdentifierRequest1&)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 @UnifiedDiagnosticServices.WriteDataByIdentifierRequest1.");
+}
+return *this;
+}
+
+WriteDataByIdentifierRequest1_template& WriteDataByIdentifierRequest1_template::operator=(const WriteDataByIdentifierRequest1_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean WriteDataByIdentifierRequest1_template::match(const WriteDataByIdentifierRequest1& 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.identifier().is_bound()) return FALSE;
+if(!single_value->field_identifier.match(other_value.identifier(), legacy))return FALSE;
+if(!other_value.dataRecord().is_bound()) return FALSE;
+if(!single_value->field_dataRecord.match(other_value.dataRecord(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest1.");
+}
+return FALSE;
+}
+
+boolean WriteDataByIdentifierRequest1_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_identifier.is_bound()
+
+ ||single_value->field_dataRecord.is_bound()
+;
+}
+
+boolean WriteDataByIdentifierRequest1_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_identifier.is_value()
+ &&single_value->field_dataRecord.is_value();
+}
+
+void WriteDataByIdentifierRequest1_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+WriteDataByIdentifierRequest1 WriteDataByIdentifierRequest1_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 @UnifiedDiagnosticServices.WriteDataByIdentifierRequest1.");
+WriteDataByIdentifierRequest1 ret_val;
+if (single_value->field_identifier.is_bound()) {
+ret_val.identifier() = single_value->field_identifier.valueof();
+}
+if (single_value->field_dataRecord.is_bound()) {
+ret_val.dataRecord() = single_value->field_dataRecord.valueof();
+}
+return ret_val;
+}
+
+void WriteDataByIdentifierRequest1_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest1.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new WriteDataByIdentifierRequest1_template[list_length];
+}
+
+WriteDataByIdentifierRequest1_template& WriteDataByIdentifierRequest1_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest1.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest1.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& WriteDataByIdentifierRequest1_template::identifier()
+{
+set_specific();
+return single_value->field_identifier;
+}
+
+const OCTETSTRING_template& WriteDataByIdentifierRequest1_template::identifier() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field identifier of a non-specific template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest1.");
+return single_value->field_identifier;
+}
+
+OCTETSTRING_template& WriteDataByIdentifierRequest1_template::dataRecord()
+{
+set_specific();
+return single_value->field_dataRecord;
+}
+
+const OCTETSTRING_template& WriteDataByIdentifierRequest1_template::dataRecord() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field dataRecord of a non-specific template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest1.");
+return single_value->field_dataRecord;
+}
+
+int WriteDataByIdentifierRequest1_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest1 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 @UnifiedDiagnosticServices.WriteDataByIdentifierRequest1 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 @UnifiedDiagnosticServices.WriteDataByIdentifierRequest1 containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest1 containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest1 containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest1 containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest1.");
+  }
+  return 0;
+}
+
+void WriteDataByIdentifierRequest1_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ identifier := ");
+single_value->field_identifier.log();
+TTCN_Logger::log_event_str(", dataRecord := ");
+single_value->field_dataRecord.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void WriteDataByIdentifierRequest1_template::log_match(const WriteDataByIdentifierRequest1& 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_identifier.match(match_value.identifier(), legacy)){
+TTCN_Logger::log_logmatch_info(".identifier");
+single_value->field_identifier.log_match(match_value.identifier(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_dataRecord.match(match_value.dataRecord(), legacy)){
+TTCN_Logger::log_logmatch_info(".dataRecord");
+single_value->field_dataRecord.log_match(match_value.dataRecord(), 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("{ identifier := ");
+single_value->field_identifier.log_match(match_value.identifier(), legacy);
+TTCN_Logger::log_event_str(", dataRecord := ");
+single_value->field_dataRecord.log_match(match_value.dataRecord(), 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 WriteDataByIdentifierRequest1_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_identifier.encode_text(text_buf);
+single_value->field_dataRecord.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 @UnifiedDiagnosticServices.WriteDataByIdentifierRequest1.");
+}
+}
+
+void WriteDataByIdentifierRequest1_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_identifier.decode_text(text_buf);
+single_value->field_dataRecord.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 WriteDataByIdentifierRequest1_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 @UnifiedDiagnosticServices.WriteDataByIdentifierRequest1.");
+}
+}
+
+void WriteDataByIdentifierRequest1_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: {
+    WriteDataByIdentifierRequest1_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @UnifiedDiagnosticServices.WriteDataByIdentifierRequest1 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) identifier().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) dataRecord().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(), "identifier")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          identifier().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(), "dataRecord")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          dataRecord().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 @UnifiedDiagnosticServices.WriteDataByIdentifierRequest1: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.WriteDataByIdentifierRequest1");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void WriteDataByIdentifierRequest1_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_identifier.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.WriteDataByIdentifierRequest1");
+single_value->field_dataRecord.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.WriteDataByIdentifierRequest1");
+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 : "@UnifiedDiagnosticServices.WriteDataByIdentifierRequest1");
+}
+
+boolean WriteDataByIdentifierRequest1_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean WriteDataByIdentifierRequest1_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+WriteDataByIdentifierRequest2::WriteDataByIdentifierRequest2()
+{
+}
+
+WriteDataByIdentifierRequest2::WriteDataByIdentifierRequest2(const OCTETSTRING& par_identifier,
+    const OCTETSTRING& par_dataRecord)
+  :   field_identifier(par_identifier),
+  field_dataRecord(par_dataRecord)
+{
+}
+
+WriteDataByIdentifierRequest2::WriteDataByIdentifierRequest2(const WriteDataByIdentifierRequest2& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest2.");
+if (other_value.identifier().is_bound()) field_identifier = other_value.identifier();
+else field_identifier.clean_up();
+if (other_value.dataRecord().is_bound()) field_dataRecord = other_value.dataRecord();
+else field_dataRecord.clean_up();
+}
+
+void WriteDataByIdentifierRequest2::clean_up()
+{
+field_identifier.clean_up();
+field_dataRecord.clean_up();
+}
+
+const TTCN_Typedescriptor_t* WriteDataByIdentifierRequest2::get_descriptor() const { return &WriteDataByIdentifierRequest2_descr_; }
+WriteDataByIdentifierRequest2& WriteDataByIdentifierRequest2::operator=(const WriteDataByIdentifierRequest2& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest2.");
+  if (other_value.identifier().is_bound()) field_identifier = other_value.identifier();
+  else field_identifier.clean_up();
+  if (other_value.dataRecord().is_bound()) field_dataRecord = other_value.dataRecord();
+  else field_dataRecord.clean_up();
+}
+return *this;
+}
+
+boolean WriteDataByIdentifierRequest2::operator==(const WriteDataByIdentifierRequest2& other_value) const
+{
+return field_identifier==other_value.field_identifier
+  && field_dataRecord==other_value.field_dataRecord;
+}
+
+boolean WriteDataByIdentifierRequest2::is_bound() const
+{
+return (field_identifier.is_bound())
+  || (field_dataRecord.is_bound());
+}
+boolean WriteDataByIdentifierRequest2::is_value() const
+{
+return field_identifier.is_value()
+  && field_dataRecord.is_value();
+}
+void WriteDataByIdentifierRequest2::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ identifier := ");
+field_identifier.log();
+TTCN_Logger::log_event_str(", dataRecord := ");
+field_dataRecord.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void WriteDataByIdentifierRequest2::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 @UnifiedDiagnosticServices.WriteDataByIdentifierRequest2 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) identifier().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) dataRecord().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(), "identifier")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          identifier().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(), "dataRecord")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          dataRecord().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 @UnifiedDiagnosticServices.WriteDataByIdentifierRequest2: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.WriteDataByIdentifierRequest2");
+  }
+}
+
+void WriteDataByIdentifierRequest2::set_implicit_omit()
+{
+if (identifier().is_bound()) identifier().set_implicit_omit();
+if (dataRecord().is_bound()) dataRecord().set_implicit_omit();
+}
+
+void WriteDataByIdentifierRequest2::encode_text(Text_Buf& text_buf) const
+{
+field_identifier.encode_text(text_buf);
+field_dataRecord.encode_text(text_buf);
+}
+
+void WriteDataByIdentifierRequest2::decode_text(Text_Buf& text_buf)
+{
+field_identifier.decode_text(text_buf);
+field_dataRecord.decode_text(text_buf);
+}
+
+void WriteDataByIdentifierRequest2::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void WriteDataByIdentifierRequest2::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int WriteDataByIdentifierRequest2::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, WriteDataByIdentifierRequest2_identifier_descr_.raw->forceomit);
+  decoded_field_length = field_identifier.RAW_decode(WriteDataByIdentifierRequest2_identifier_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, OCTETSTRING_descr_.raw->forceomit);
+  decoded_field_length = field_dataRecord.RAW_decode(OCTETSTRING_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 WriteDataByIdentifierRequest2::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, WriteDataByIdentifierRequest2_identifier_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, OCTETSTRING_descr_.raw);
+  encoded_length += field_identifier.RAW_encode(WriteDataByIdentifierRequest2_identifier_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_dataRecord.RAW_encode(OCTETSTRING_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct WriteDataByIdentifierRequest2_template::single_value_struct {
+OCTETSTRING_template field_identifier;
+OCTETSTRING_template field_dataRecord;
+};
+
+void WriteDataByIdentifierRequest2_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_identifier = ANY_VALUE;
+single_value->field_dataRecord = ANY_VALUE;
+}
+}
+}
+
+void WriteDataByIdentifierRequest2_template::copy_value(const WriteDataByIdentifierRequest2& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.identifier().is_bound()) {
+  single_value->field_identifier = other_value.identifier();
+} else {
+  single_value->field_identifier.clean_up();
+}
+if (other_value.dataRecord().is_bound()) {
+  single_value->field_dataRecord = other_value.dataRecord();
+} else {
+  single_value->field_dataRecord.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void WriteDataByIdentifierRequest2_template::copy_template(const WriteDataByIdentifierRequest2_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.identifier().get_selection()) {
+single_value->field_identifier = other_value.identifier();
+} else {
+single_value->field_identifier.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.dataRecord().get_selection()) {
+single_value->field_dataRecord = other_value.dataRecord();
+} else {
+single_value->field_dataRecord.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new WriteDataByIdentifierRequest2_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest2.");
+break;
+}
+set_selection(other_value);
+}
+
+WriteDataByIdentifierRequest2_template::WriteDataByIdentifierRequest2_template()
+{
+}
+
+WriteDataByIdentifierRequest2_template::WriteDataByIdentifierRequest2_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+WriteDataByIdentifierRequest2_template::WriteDataByIdentifierRequest2_template(const WriteDataByIdentifierRequest2& other_value)
+{
+copy_value(other_value);
+}
+
+WriteDataByIdentifierRequest2_template::WriteDataByIdentifierRequest2_template(const OPTIONAL<WriteDataByIdentifierRequest2>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const WriteDataByIdentifierRequest2&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest2 from an unbound optional field.");
+}
+}
+
+WriteDataByIdentifierRequest2_template::WriteDataByIdentifierRequest2_template(const WriteDataByIdentifierRequest2_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+WriteDataByIdentifierRequest2_template::~WriteDataByIdentifierRequest2_template()
+{
+clean_up();
+}
+
+WriteDataByIdentifierRequest2_template& WriteDataByIdentifierRequest2_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+WriteDataByIdentifierRequest2_template& WriteDataByIdentifierRequest2_template::operator=(const WriteDataByIdentifierRequest2& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+WriteDataByIdentifierRequest2_template& WriteDataByIdentifierRequest2_template::operator=(const OPTIONAL<WriteDataByIdentifierRequest2>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const WriteDataByIdentifierRequest2&)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 @UnifiedDiagnosticServices.WriteDataByIdentifierRequest2.");
+}
+return *this;
+}
+
+WriteDataByIdentifierRequest2_template& WriteDataByIdentifierRequest2_template::operator=(const WriteDataByIdentifierRequest2_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean WriteDataByIdentifierRequest2_template::match(const WriteDataByIdentifierRequest2& 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.identifier().is_bound()) return FALSE;
+if(!single_value->field_identifier.match(other_value.identifier(), legacy))return FALSE;
+if(!other_value.dataRecord().is_bound()) return FALSE;
+if(!single_value->field_dataRecord.match(other_value.dataRecord(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest2.");
+}
+return FALSE;
+}
+
+boolean WriteDataByIdentifierRequest2_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_identifier.is_bound()
+
+ ||single_value->field_dataRecord.is_bound()
+;
+}
+
+boolean WriteDataByIdentifierRequest2_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_identifier.is_value()
+ &&single_value->field_dataRecord.is_value();
+}
+
+void WriteDataByIdentifierRequest2_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+WriteDataByIdentifierRequest2 WriteDataByIdentifierRequest2_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 @UnifiedDiagnosticServices.WriteDataByIdentifierRequest2.");
+WriteDataByIdentifierRequest2 ret_val;
+if (single_value->field_identifier.is_bound()) {
+ret_val.identifier() = single_value->field_identifier.valueof();
+}
+if (single_value->field_dataRecord.is_bound()) {
+ret_val.dataRecord() = single_value->field_dataRecord.valueof();
+}
+return ret_val;
+}
+
+void WriteDataByIdentifierRequest2_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest2.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new WriteDataByIdentifierRequest2_template[list_length];
+}
+
+WriteDataByIdentifierRequest2_template& WriteDataByIdentifierRequest2_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest2.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest2.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& WriteDataByIdentifierRequest2_template::identifier()
+{
+set_specific();
+return single_value->field_identifier;
+}
+
+const OCTETSTRING_template& WriteDataByIdentifierRequest2_template::identifier() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field identifier of a non-specific template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest2.");
+return single_value->field_identifier;
+}
+
+OCTETSTRING_template& WriteDataByIdentifierRequest2_template::dataRecord()
+{
+set_specific();
+return single_value->field_dataRecord;
+}
+
+const OCTETSTRING_template& WriteDataByIdentifierRequest2_template::dataRecord() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field dataRecord of a non-specific template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest2.");
+return single_value->field_dataRecord;
+}
+
+int WriteDataByIdentifierRequest2_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest2 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 @UnifiedDiagnosticServices.WriteDataByIdentifierRequest2 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 @UnifiedDiagnosticServices.WriteDataByIdentifierRequest2 containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest2 containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest2 containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest2 containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest2.");
+  }
+  return 0;
+}
+
+void WriteDataByIdentifierRequest2_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ identifier := ");
+single_value->field_identifier.log();
+TTCN_Logger::log_event_str(", dataRecord := ");
+single_value->field_dataRecord.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void WriteDataByIdentifierRequest2_template::log_match(const WriteDataByIdentifierRequest2& 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_identifier.match(match_value.identifier(), legacy)){
+TTCN_Logger::log_logmatch_info(".identifier");
+single_value->field_identifier.log_match(match_value.identifier(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_dataRecord.match(match_value.dataRecord(), legacy)){
+TTCN_Logger::log_logmatch_info(".dataRecord");
+single_value->field_dataRecord.log_match(match_value.dataRecord(), 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("{ identifier := ");
+single_value->field_identifier.log_match(match_value.identifier(), legacy);
+TTCN_Logger::log_event_str(", dataRecord := ");
+single_value->field_dataRecord.log_match(match_value.dataRecord(), 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 WriteDataByIdentifierRequest2_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_identifier.encode_text(text_buf);
+single_value->field_dataRecord.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 @UnifiedDiagnosticServices.WriteDataByIdentifierRequest2.");
+}
+}
+
+void WriteDataByIdentifierRequest2_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_identifier.decode_text(text_buf);
+single_value->field_dataRecord.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 WriteDataByIdentifierRequest2_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 @UnifiedDiagnosticServices.WriteDataByIdentifierRequest2.");
+}
+}
+
+void WriteDataByIdentifierRequest2_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: {
+    WriteDataByIdentifierRequest2_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @UnifiedDiagnosticServices.WriteDataByIdentifierRequest2 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) identifier().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) dataRecord().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(), "identifier")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          identifier().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(), "dataRecord")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          dataRecord().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 @UnifiedDiagnosticServices.WriteDataByIdentifierRequest2: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.WriteDataByIdentifierRequest2");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void WriteDataByIdentifierRequest2_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_identifier.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.WriteDataByIdentifierRequest2");
+single_value->field_dataRecord.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.WriteDataByIdentifierRequest2");
+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 : "@UnifiedDiagnosticServices.WriteDataByIdentifierRequest2");
+}
+
+boolean WriteDataByIdentifierRequest2_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean WriteDataByIdentifierRequest2_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+WriteDataByIdentifierRequest3::WriteDataByIdentifierRequest3()
+{
+}
+
+WriteDataByIdentifierRequest3::WriteDataByIdentifierRequest3(const OCTETSTRING& par_identifier,
+    const OCTETSTRING& par_dataRecord)
+  :   field_identifier(par_identifier),
+  field_dataRecord(par_dataRecord)
+{
+}
+
+WriteDataByIdentifierRequest3::WriteDataByIdentifierRequest3(const WriteDataByIdentifierRequest3& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest3.");
+if (other_value.identifier().is_bound()) field_identifier = other_value.identifier();
+else field_identifier.clean_up();
+if (other_value.dataRecord().is_bound()) field_dataRecord = other_value.dataRecord();
+else field_dataRecord.clean_up();
+}
+
+void WriteDataByIdentifierRequest3::clean_up()
+{
+field_identifier.clean_up();
+field_dataRecord.clean_up();
+}
+
+const TTCN_Typedescriptor_t* WriteDataByIdentifierRequest3::get_descriptor() const { return &WriteDataByIdentifierRequest3_descr_; }
+WriteDataByIdentifierRequest3& WriteDataByIdentifierRequest3::operator=(const WriteDataByIdentifierRequest3& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest3.");
+  if (other_value.identifier().is_bound()) field_identifier = other_value.identifier();
+  else field_identifier.clean_up();
+  if (other_value.dataRecord().is_bound()) field_dataRecord = other_value.dataRecord();
+  else field_dataRecord.clean_up();
+}
+return *this;
+}
+
+boolean WriteDataByIdentifierRequest3::operator==(const WriteDataByIdentifierRequest3& other_value) const
+{
+return field_identifier==other_value.field_identifier
+  && field_dataRecord==other_value.field_dataRecord;
+}
+
+boolean WriteDataByIdentifierRequest3::is_bound() const
+{
+return (field_identifier.is_bound())
+  || (field_dataRecord.is_bound());
+}
+boolean WriteDataByIdentifierRequest3::is_value() const
+{
+return field_identifier.is_value()
+  && field_dataRecord.is_value();
+}
+void WriteDataByIdentifierRequest3::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ identifier := ");
+field_identifier.log();
+TTCN_Logger::log_event_str(", dataRecord := ");
+field_dataRecord.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void WriteDataByIdentifierRequest3::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 @UnifiedDiagnosticServices.WriteDataByIdentifierRequest3 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) identifier().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) dataRecord().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(), "identifier")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          identifier().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(), "dataRecord")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          dataRecord().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 @UnifiedDiagnosticServices.WriteDataByIdentifierRequest3: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.WriteDataByIdentifierRequest3");
+  }
+}
+
+void WriteDataByIdentifierRequest3::set_implicit_omit()
+{
+if (identifier().is_bound()) identifier().set_implicit_omit();
+if (dataRecord().is_bound()) dataRecord().set_implicit_omit();
+}
+
+void WriteDataByIdentifierRequest3::encode_text(Text_Buf& text_buf) const
+{
+field_identifier.encode_text(text_buf);
+field_dataRecord.encode_text(text_buf);
+}
+
+void WriteDataByIdentifierRequest3::decode_text(Text_Buf& text_buf)
+{
+field_identifier.decode_text(text_buf);
+field_dataRecord.decode_text(text_buf);
+}
+
+void WriteDataByIdentifierRequest3::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void WriteDataByIdentifierRequest3::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int WriteDataByIdentifierRequest3::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, WriteDataByIdentifierRequest3_identifier_descr_.raw->forceomit);
+  decoded_field_length = field_identifier.RAW_decode(WriteDataByIdentifierRequest3_identifier_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, OCTETSTRING_descr_.raw->forceomit);
+  decoded_field_length = field_dataRecord.RAW_decode(OCTETSTRING_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 WriteDataByIdentifierRequest3::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, WriteDataByIdentifierRequest3_identifier_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, OCTETSTRING_descr_.raw);
+  encoded_length += field_identifier.RAW_encode(WriteDataByIdentifierRequest3_identifier_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_dataRecord.RAW_encode(OCTETSTRING_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct WriteDataByIdentifierRequest3_template::single_value_struct {
+OCTETSTRING_template field_identifier;
+OCTETSTRING_template field_dataRecord;
+};
+
+void WriteDataByIdentifierRequest3_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_identifier = ANY_VALUE;
+single_value->field_dataRecord = ANY_VALUE;
+}
+}
+}
+
+void WriteDataByIdentifierRequest3_template::copy_value(const WriteDataByIdentifierRequest3& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.identifier().is_bound()) {
+  single_value->field_identifier = other_value.identifier();
+} else {
+  single_value->field_identifier.clean_up();
+}
+if (other_value.dataRecord().is_bound()) {
+  single_value->field_dataRecord = other_value.dataRecord();
+} else {
+  single_value->field_dataRecord.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void WriteDataByIdentifierRequest3_template::copy_template(const WriteDataByIdentifierRequest3_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.identifier().get_selection()) {
+single_value->field_identifier = other_value.identifier();
+} else {
+single_value->field_identifier.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.dataRecord().get_selection()) {
+single_value->field_dataRecord = other_value.dataRecord();
+} else {
+single_value->field_dataRecord.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new WriteDataByIdentifierRequest3_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest3.");
+break;
+}
+set_selection(other_value);
+}
+
+WriteDataByIdentifierRequest3_template::WriteDataByIdentifierRequest3_template()
+{
+}
+
+WriteDataByIdentifierRequest3_template::WriteDataByIdentifierRequest3_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+WriteDataByIdentifierRequest3_template::WriteDataByIdentifierRequest3_template(const WriteDataByIdentifierRequest3& other_value)
+{
+copy_value(other_value);
+}
+
+WriteDataByIdentifierRequest3_template::WriteDataByIdentifierRequest3_template(const OPTIONAL<WriteDataByIdentifierRequest3>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const WriteDataByIdentifierRequest3&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest3 from an unbound optional field.");
+}
+}
+
+WriteDataByIdentifierRequest3_template::WriteDataByIdentifierRequest3_template(const WriteDataByIdentifierRequest3_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+WriteDataByIdentifierRequest3_template::~WriteDataByIdentifierRequest3_template()
+{
+clean_up();
+}
+
+WriteDataByIdentifierRequest3_template& WriteDataByIdentifierRequest3_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+WriteDataByIdentifierRequest3_template& WriteDataByIdentifierRequest3_template::operator=(const WriteDataByIdentifierRequest3& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+WriteDataByIdentifierRequest3_template& WriteDataByIdentifierRequest3_template::operator=(const OPTIONAL<WriteDataByIdentifierRequest3>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const WriteDataByIdentifierRequest3&)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 @UnifiedDiagnosticServices.WriteDataByIdentifierRequest3.");
+}
+return *this;
+}
+
+WriteDataByIdentifierRequest3_template& WriteDataByIdentifierRequest3_template::operator=(const WriteDataByIdentifierRequest3_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean WriteDataByIdentifierRequest3_template::match(const WriteDataByIdentifierRequest3& 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.identifier().is_bound()) return FALSE;
+if(!single_value->field_identifier.match(other_value.identifier(), legacy))return FALSE;
+if(!other_value.dataRecord().is_bound()) return FALSE;
+if(!single_value->field_dataRecord.match(other_value.dataRecord(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest3.");
+}
+return FALSE;
+}
+
+boolean WriteDataByIdentifierRequest3_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_identifier.is_bound()
+
+ ||single_value->field_dataRecord.is_bound()
+;
+}
+
+boolean WriteDataByIdentifierRequest3_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_identifier.is_value()
+ &&single_value->field_dataRecord.is_value();
+}
+
+void WriteDataByIdentifierRequest3_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+WriteDataByIdentifierRequest3 WriteDataByIdentifierRequest3_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 @UnifiedDiagnosticServices.WriteDataByIdentifierRequest3.");
+WriteDataByIdentifierRequest3 ret_val;
+if (single_value->field_identifier.is_bound()) {
+ret_val.identifier() = single_value->field_identifier.valueof();
+}
+if (single_value->field_dataRecord.is_bound()) {
+ret_val.dataRecord() = single_value->field_dataRecord.valueof();
+}
+return ret_val;
+}
+
+void WriteDataByIdentifierRequest3_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest3.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new WriteDataByIdentifierRequest3_template[list_length];
+}
+
+WriteDataByIdentifierRequest3_template& WriteDataByIdentifierRequest3_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest3.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest3.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& WriteDataByIdentifierRequest3_template::identifier()
+{
+set_specific();
+return single_value->field_identifier;
+}
+
+const OCTETSTRING_template& WriteDataByIdentifierRequest3_template::identifier() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field identifier of a non-specific template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest3.");
+return single_value->field_identifier;
+}
+
+OCTETSTRING_template& WriteDataByIdentifierRequest3_template::dataRecord()
+{
+set_specific();
+return single_value->field_dataRecord;
+}
+
+const OCTETSTRING_template& WriteDataByIdentifierRequest3_template::dataRecord() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field dataRecord of a non-specific template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest3.");
+return single_value->field_dataRecord;
+}
+
+int WriteDataByIdentifierRequest3_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest3 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 @UnifiedDiagnosticServices.WriteDataByIdentifierRequest3 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 @UnifiedDiagnosticServices.WriteDataByIdentifierRequest3 containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest3 containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest3 containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest3 containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest3.");
+  }
+  return 0;
+}
+
+void WriteDataByIdentifierRequest3_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ identifier := ");
+single_value->field_identifier.log();
+TTCN_Logger::log_event_str(", dataRecord := ");
+single_value->field_dataRecord.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void WriteDataByIdentifierRequest3_template::log_match(const WriteDataByIdentifierRequest3& 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_identifier.match(match_value.identifier(), legacy)){
+TTCN_Logger::log_logmatch_info(".identifier");
+single_value->field_identifier.log_match(match_value.identifier(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_dataRecord.match(match_value.dataRecord(), legacy)){
+TTCN_Logger::log_logmatch_info(".dataRecord");
+single_value->field_dataRecord.log_match(match_value.dataRecord(), 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("{ identifier := ");
+single_value->field_identifier.log_match(match_value.identifier(), legacy);
+TTCN_Logger::log_event_str(", dataRecord := ");
+single_value->field_dataRecord.log_match(match_value.dataRecord(), 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 WriteDataByIdentifierRequest3_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_identifier.encode_text(text_buf);
+single_value->field_dataRecord.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 @UnifiedDiagnosticServices.WriteDataByIdentifierRequest3.");
+}
+}
+
+void WriteDataByIdentifierRequest3_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_identifier.decode_text(text_buf);
+single_value->field_dataRecord.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 WriteDataByIdentifierRequest3_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 @UnifiedDiagnosticServices.WriteDataByIdentifierRequest3.");
+}
+}
+
+void WriteDataByIdentifierRequest3_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: {
+    WriteDataByIdentifierRequest3_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @UnifiedDiagnosticServices.WriteDataByIdentifierRequest3 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) identifier().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) dataRecord().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(), "identifier")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          identifier().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(), "dataRecord")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          dataRecord().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 @UnifiedDiagnosticServices.WriteDataByIdentifierRequest3: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.WriteDataByIdentifierRequest3");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void WriteDataByIdentifierRequest3_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_identifier.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.WriteDataByIdentifierRequest3");
+single_value->field_dataRecord.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.WriteDataByIdentifierRequest3");
+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 : "@UnifiedDiagnosticServices.WriteDataByIdentifierRequest3");
+}
+
+boolean WriteDataByIdentifierRequest3_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean WriteDataByIdentifierRequest3_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 WriteDataByIdentifierRequest::copy_value(const WriteDataByIdentifierRequest& other_value)
+{
+switch (other_value.union_selection) {
+case ALT_writeDataByIdentifier1:
+field_writeDataByIdentifier1 = new WriteDataByIdentifierRequest1(*other_value.field_writeDataByIdentifier1);
+break;
+case ALT_writeDataByIdentifier2:
+field_writeDataByIdentifier2 = new WriteDataByIdentifierRequest2(*other_value.field_writeDataByIdentifier2);
+break;
+case ALT_writeDataByIdentifier3:
+field_writeDataByIdentifier3 = new WriteDataByIdentifierRequest3(*other_value.field_writeDataByIdentifier3);
+break;
+default:
+TTCN_error("Assignment of an unbound union value of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest.");
+}
+union_selection = other_value.union_selection;
+}
+
+WriteDataByIdentifierRequest::WriteDataByIdentifierRequest()
+{
+union_selection = UNBOUND_VALUE;
+}
+
+WriteDataByIdentifierRequest::WriteDataByIdentifierRequest(const WriteDataByIdentifierRequest& other_value)
+: Base_Type(){
+copy_value(other_value);
+}
+
+WriteDataByIdentifierRequest::~WriteDataByIdentifierRequest()
+{
+clean_up();
+}
+
+WriteDataByIdentifierRequest& WriteDataByIdentifierRequest::operator=(const WriteDataByIdentifierRequest& other_value)
+{
+if (this != &other_value) {
+clean_up();
+copy_value(other_value);
+}
+return *this;
+}
+
+boolean WriteDataByIdentifierRequest::operator==(const WriteDataByIdentifierRequest& other_value) const
+{
+if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest.");
+if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest.");
+if (union_selection != other_value.union_selection) return FALSE;
+switch (union_selection) {
+case ALT_writeDataByIdentifier1:
+return *field_writeDataByIdentifier1 == *other_value.field_writeDataByIdentifier1;
+case ALT_writeDataByIdentifier2:
+return *field_writeDataByIdentifier2 == *other_value.field_writeDataByIdentifier2;
+case ALT_writeDataByIdentifier3:
+return *field_writeDataByIdentifier3 == *other_value.field_writeDataByIdentifier3;
+default:
+return FALSE;
+}
+}
+
+WriteDataByIdentifierRequest1& WriteDataByIdentifierRequest::writeDataByIdentifier1()
+{
+if (union_selection != ALT_writeDataByIdentifier1) {
+clean_up();
+field_writeDataByIdentifier1 = new WriteDataByIdentifierRequest1;
+union_selection = ALT_writeDataByIdentifier1;
+}
+return *field_writeDataByIdentifier1;
+}
+
+const WriteDataByIdentifierRequest1& WriteDataByIdentifierRequest::writeDataByIdentifier1() const
+{
+if (union_selection != ALT_writeDataByIdentifier1) TTCN_error("Using non-selected field writeDataByIdentifier1 in a value of union type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest.");
+return *field_writeDataByIdentifier1;
+}
+
+WriteDataByIdentifierRequest2& WriteDataByIdentifierRequest::writeDataByIdentifier2()
+{
+if (union_selection != ALT_writeDataByIdentifier2) {
+clean_up();
+field_writeDataByIdentifier2 = new WriteDataByIdentifierRequest2;
+union_selection = ALT_writeDataByIdentifier2;
+}
+return *field_writeDataByIdentifier2;
+}
+
+const WriteDataByIdentifierRequest2& WriteDataByIdentifierRequest::writeDataByIdentifier2() const
+{
+if (union_selection != ALT_writeDataByIdentifier2) TTCN_error("Using non-selected field writeDataByIdentifier2 in a value of union type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest.");
+return *field_writeDataByIdentifier2;
+}
+
+WriteDataByIdentifierRequest3& WriteDataByIdentifierRequest::writeDataByIdentifier3()
+{
+if (union_selection != ALT_writeDataByIdentifier3) {
+clean_up();
+field_writeDataByIdentifier3 = new WriteDataByIdentifierRequest3;
+union_selection = ALT_writeDataByIdentifier3;
+}
+return *field_writeDataByIdentifier3;
+}
+
+const WriteDataByIdentifierRequest3& WriteDataByIdentifierRequest::writeDataByIdentifier3() const
+{
+if (union_selection != ALT_writeDataByIdentifier3) TTCN_error("Using non-selected field writeDataByIdentifier3 in a value of union type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest.");
+return *field_writeDataByIdentifier3;
+}
+
+boolean WriteDataByIdentifierRequest::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 @UnifiedDiagnosticServices.WriteDataByIdentifierRequest.");
+return union_selection == checked_selection;
+}
+
+boolean WriteDataByIdentifierRequest::is_bound() const
+{
+  return union_selection != UNBOUND_VALUE;
+}
+
+boolean WriteDataByIdentifierRequest::is_value() const
+{
+switch (union_selection) {
+case UNBOUND_VALUE: return FALSE;
+case ALT_writeDataByIdentifier1: return field_writeDataByIdentifier1->is_value();
+case ALT_writeDataByIdentifier2: return field_writeDataByIdentifier2->is_value();
+case ALT_writeDataByIdentifier3: return field_writeDataByIdentifier3->is_value();
+default: TTCN_error("Invalid selection in union is_bound");}
+}
+
+void WriteDataByIdentifierRequest::clean_up()
+{
+switch (union_selection) {
+case ALT_writeDataByIdentifier1:
+  delete field_writeDataByIdentifier1;
+  break;
+case ALT_writeDataByIdentifier2:
+  delete field_writeDataByIdentifier2;
+  break;
+case ALT_writeDataByIdentifier3:
+  delete field_writeDataByIdentifier3;
+  break;
+default:
+  break;
+}
+union_selection = UNBOUND_VALUE;
+}
+
+void WriteDataByIdentifierRequest::log() const
+{
+switch (union_selection) {
+case ALT_writeDataByIdentifier1:
+TTCN_Logger::log_event_str("{ writeDataByIdentifier1 := ");
+field_writeDataByIdentifier1->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_writeDataByIdentifier2:
+TTCN_Logger::log_event_str("{ writeDataByIdentifier2 := ");
+field_writeDataByIdentifier2->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_writeDataByIdentifier3:
+TTCN_Logger::log_event_str("{ writeDataByIdentifier3 := ");
+field_writeDataByIdentifier3->log();
+TTCN_Logger::log_event_str(" }");
+break;
+default:
+TTCN_Logger::log_event_unbound();
+}
+}
+
+void WriteDataByIdentifierRequest::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, "writeDataByIdentifier1")) {
+    writeDataByIdentifier1().set_param(*mp_last);
+    if (!writeDataByIdentifier1().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "writeDataByIdentifier2")) {
+    writeDataByIdentifier2().set_param(*mp_last);
+    if (!writeDataByIdentifier2().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "writeDataByIdentifier3")) {
+    writeDataByIdentifier3().set_param(*mp_last);
+    if (!writeDataByIdentifier3().is_bound()) clean_up();
+    return;
+  }
+  mp_last->error("Field %s does not exist in type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest.", last_name);
+}
+
+void WriteDataByIdentifierRequest::set_implicit_omit()
+{
+switch (union_selection) {
+case ALT_writeDataByIdentifier1:
+field_writeDataByIdentifier1->set_implicit_omit(); break;
+case ALT_writeDataByIdentifier2:
+field_writeDataByIdentifier2->set_implicit_omit(); break;
+case ALT_writeDataByIdentifier3:
+field_writeDataByIdentifier3->set_implicit_omit(); break;
+default: break;
+}
+}
+
+void WriteDataByIdentifierRequest::encode_text(Text_Buf& text_buf) const
+{
+text_buf.push_int(union_selection);
+switch (union_selection) {
+case ALT_writeDataByIdentifier1:
+field_writeDataByIdentifier1->encode_text(text_buf);
+break;
+case ALT_writeDataByIdentifier2:
+field_writeDataByIdentifier2->encode_text(text_buf);
+break;
+case ALT_writeDataByIdentifier3:
+field_writeDataByIdentifier3->encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an unbound value of union type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest.");
+}
+}
+
+void WriteDataByIdentifierRequest::decode_text(Text_Buf& text_buf)
+{
+switch ((union_selection_type)text_buf.pull_int().get_val()) {
+case ALT_writeDataByIdentifier1:
+writeDataByIdentifier1().decode_text(text_buf);
+break;
+case ALT_writeDataByIdentifier2:
+writeDataByIdentifier2().decode_text(text_buf);
+break;
+case ALT_writeDataByIdentifier3:
+writeDataByIdentifier3().decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest.");
+}
+}
+
+void WriteDataByIdentifierRequest::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void WriteDataByIdentifierRequest::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int WriteDataByIdentifierRequest::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, WriteDataByIdentifierRequest1_descr_.raw->forceomit);
+      decoded_length = writeDataByIdentifier1().RAW_decode(WriteDataByIdentifierRequest1_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, WriteDataByIdentifierRequest2_descr_.raw->forceomit);
+      decoded_length = writeDataByIdentifier2().RAW_decode(WriteDataByIdentifierRequest2_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, WriteDataByIdentifierRequest3_descr_.raw->forceomit);
+      decoded_length = writeDataByIdentifier3().RAW_decode(WriteDataByIdentifierRequest3_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 {
+    boolean already_failed = FALSE;
+    already_failed = FALSE;
+    if (!already_failed) {
+      OCTETSTRING temporal_0;
+      int decoded_0_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_0_length = temporal_0.RAW_decode(WriteDataByIdentifierRequest1_identifier_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_0_length > 0) {
+        if (temporal_0 ==  os_7) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(0, force_omit, WriteDataByIdentifierRequest1_descr_.raw->forceomit);
+          decoded_length = writeDataByIdentifier1().RAW_decode(WriteDataByIdentifierRequest1_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_writeDataByIdentifier1).identifier() ==  os_7) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      OCTETSTRING temporal_1;
+      int decoded_1_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_1_length = temporal_1.RAW_decode(WriteDataByIdentifierRequest2_identifier_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_1_length > 0) {
+        if (temporal_1 ==  os_8) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(1, force_omit, WriteDataByIdentifierRequest2_descr_.raw->forceomit);
+          decoded_length = writeDataByIdentifier2().RAW_decode(WriteDataByIdentifierRequest2_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_writeDataByIdentifier2).identifier() ==  os_8) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      OCTETSTRING temporal_2;
+      int decoded_2_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_2_length = temporal_2.RAW_decode(WriteDataByIdentifierRequest3_identifier_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_2_length > 0) {
+        if (temporal_2 ==  os_9) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(2, force_omit, WriteDataByIdentifierRequest3_descr_.raw->forceomit);
+          decoded_length = writeDataByIdentifier3().RAW_decode(WriteDataByIdentifierRequest3_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_writeDataByIdentifier3).identifier() ==  os_9) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+ }
+ clean_up();
+ return -1;
+}
+
+int WriteDataByIdentifierRequest::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_writeDataByIdentifier1:
+    myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 0, WriteDataByIdentifierRequest1_descr_.raw);
+    encoded_length = field_writeDataByIdentifier1->RAW_encode(WriteDataByIdentifierRequest1_descr_, *myleaf.body.node.nodes[0]);
+    myleaf.body.node.nodes[0]->coding_descr = &WriteDataByIdentifierRequest1_descr_;
+    if ((*field_writeDataByIdentifier1).identifier() !=  os_7) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={0,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   os_7.RAW_encode(WriteDataByIdentifierRequest1_identifier_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);
+  }
+    }
+    break;
+  case ALT_writeDataByIdentifier2:
+    myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 1, WriteDataByIdentifierRequest2_descr_.raw);
+    encoded_length = field_writeDataByIdentifier2->RAW_encode(WriteDataByIdentifierRequest2_descr_, *myleaf.body.node.nodes[1]);
+    myleaf.body.node.nodes[1]->coding_descr = &WriteDataByIdentifierRequest2_descr_;
+    if ((*field_writeDataByIdentifier2).identifier() !=  os_8) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={1,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   os_8.RAW_encode(WriteDataByIdentifierRequest2_identifier_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);
+  }
+    }
+    break;
+  case ALT_writeDataByIdentifier3:
+    myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 2, WriteDataByIdentifierRequest3_descr_.raw);
+    encoded_length = field_writeDataByIdentifier3->RAW_encode(WriteDataByIdentifierRequest3_descr_, *myleaf.body.node.nodes[2]);
+    myleaf.body.node.nodes[2]->coding_descr = &WriteDataByIdentifierRequest3_descr_;
+    if ((*field_writeDataByIdentifier3).identifier() !=  os_9) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={2,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   os_9.RAW_encode(WriteDataByIdentifierRequest3_identifier_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);
+  }
+    }
+    break;
+  default:
+    TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
+  }
+  return encoded_length;
+}
+
+void WriteDataByIdentifierRequest_template::copy_value(const WriteDataByIdentifierRequest& other_value)
+{
+single_value.union_selection = other_value.get_selection();
+switch (single_value.union_selection) {
+case WriteDataByIdentifierRequest::ALT_writeDataByIdentifier1:
+single_value.field_writeDataByIdentifier1 = new WriteDataByIdentifierRequest1_template(other_value.writeDataByIdentifier1());
+break;
+case WriteDataByIdentifierRequest::ALT_writeDataByIdentifier2:
+single_value.field_writeDataByIdentifier2 = new WriteDataByIdentifierRequest2_template(other_value.writeDataByIdentifier2());
+break;
+case WriteDataByIdentifierRequest::ALT_writeDataByIdentifier3:
+single_value.field_writeDataByIdentifier3 = new WriteDataByIdentifierRequest3_template(other_value.writeDataByIdentifier3());
+break;
+default:
+TTCN_error("Initializing a template with an unbound value of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest.");
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void WriteDataByIdentifierRequest_template::copy_template(const WriteDataByIdentifierRequest_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 WriteDataByIdentifierRequest::ALT_writeDataByIdentifier1:
+single_value.field_writeDataByIdentifier1 = new WriteDataByIdentifierRequest1_template(*other_value.single_value.field_writeDataByIdentifier1);
+break;
+case WriteDataByIdentifierRequest::ALT_writeDataByIdentifier2:
+single_value.field_writeDataByIdentifier2 = new WriteDataByIdentifierRequest2_template(*other_value.single_value.field_writeDataByIdentifier2);
+break;
+case WriteDataByIdentifierRequest::ALT_writeDataByIdentifier3:
+single_value.field_writeDataByIdentifier3 = new WriteDataByIdentifierRequest3_template(*other_value.single_value.field_writeDataByIdentifier3);
+break;
+default:
+TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest.");
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new WriteDataByIdentifierRequest_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;
+default:
+TTCN_error("Copying an uninitialized template of union type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest.");
+}
+set_selection(other_value);
+}
+
+WriteDataByIdentifierRequest_template::WriteDataByIdentifierRequest_template()
+{
+}
+
+WriteDataByIdentifierRequest_template::WriteDataByIdentifierRequest_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+WriteDataByIdentifierRequest_template::WriteDataByIdentifierRequest_template(const WriteDataByIdentifierRequest& other_value)
+{
+copy_value(other_value);
+}
+
+WriteDataByIdentifierRequest_template::WriteDataByIdentifierRequest_template(const OPTIONAL<WriteDataByIdentifierRequest>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const WriteDataByIdentifierRequest&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of union type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest from an unbound optional field.");
+}
+}
+
+WriteDataByIdentifierRequest_template::WriteDataByIdentifierRequest_template(const WriteDataByIdentifierRequest_template& other_value)
+: Base_Template(){
+copy_template(other_value);
+}
+
+WriteDataByIdentifierRequest_template::~WriteDataByIdentifierRequest_template()
+{
+clean_up();
+}
+
+void WriteDataByIdentifierRequest_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case WriteDataByIdentifierRequest::ALT_writeDataByIdentifier1:
+delete single_value.field_writeDataByIdentifier1;
+break;
+case WriteDataByIdentifierRequest::ALT_writeDataByIdentifier2:
+delete single_value.field_writeDataByIdentifier2;
+break;
+case WriteDataByIdentifierRequest::ALT_writeDataByIdentifier3:
+delete single_value.field_writeDataByIdentifier3;
+default:
+break;
+}
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+WriteDataByIdentifierRequest_template& WriteDataByIdentifierRequest_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+WriteDataByIdentifierRequest_template& WriteDataByIdentifierRequest_template::operator=(const WriteDataByIdentifierRequest& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+WriteDataByIdentifierRequest_template& WriteDataByIdentifierRequest_template::operator=(const OPTIONAL<WriteDataByIdentifierRequest>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const WriteDataByIdentifierRequest&)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 @UnifiedDiagnosticServices.WriteDataByIdentifierRequest.");
+}
+return *this;
+}
+
+WriteDataByIdentifierRequest_template& WriteDataByIdentifierRequest_template::operator=(const WriteDataByIdentifierRequest_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean WriteDataByIdentifierRequest_template::match(const WriteDataByIdentifierRequest& 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:
+{
+WriteDataByIdentifierRequest::union_selection_type value_selection = other_value.get_selection();
+if (value_selection == WriteDataByIdentifierRequest::UNBOUND_VALUE) return FALSE;
+if (value_selection != single_value.union_selection) return FALSE;
+switch (value_selection) {
+case WriteDataByIdentifierRequest::ALT_writeDataByIdentifier1:
+return single_value.field_writeDataByIdentifier1->match(other_value.writeDataByIdentifier1(), legacy);
+case WriteDataByIdentifierRequest::ALT_writeDataByIdentifier2:
+return single_value.field_writeDataByIdentifier2->match(other_value.writeDataByIdentifier2(), legacy);
+case WriteDataByIdentifierRequest::ALT_writeDataByIdentifier3:
+return single_value.field_writeDataByIdentifier3->match(other_value.writeDataByIdentifier3(), legacy);
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest.");
+}
+}
+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;
+default:
+TTCN_error ("Matching an uninitialized template of union type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest.");
+}
+return FALSE;
+}
+
+boolean WriteDataByIdentifierRequest_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+switch (single_value.union_selection) {
+case WriteDataByIdentifierRequest::ALT_writeDataByIdentifier1:
+return single_value.field_writeDataByIdentifier1->is_value();
+case WriteDataByIdentifierRequest::ALT_writeDataByIdentifier2:
+return single_value.field_writeDataByIdentifier2->is_value();
+case WriteDataByIdentifierRequest::ALT_writeDataByIdentifier3:
+return single_value.field_writeDataByIdentifier3->is_value();
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest.");
+}
+}
+
+WriteDataByIdentifierRequest WriteDataByIdentifierRequest_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 @UnifiedDiagnosticServices.WriteDataByIdentifierRequest.");
+WriteDataByIdentifierRequest ret_val;
+switch (single_value.union_selection) {
+case WriteDataByIdentifierRequest::ALT_writeDataByIdentifier1:
+ret_val.writeDataByIdentifier1() = single_value.field_writeDataByIdentifier1->valueof();
+break;
+case WriteDataByIdentifierRequest::ALT_writeDataByIdentifier2:
+ret_val.writeDataByIdentifier2() = single_value.field_writeDataByIdentifier2->valueof();
+break;
+case WriteDataByIdentifierRequest::ALT_writeDataByIdentifier3:
+ret_val.writeDataByIdentifier3() = single_value.field_writeDataByIdentifier3->valueof();
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest.");
+}
+return ret_val;
+}
+
+WriteDataByIdentifierRequest_template& WriteDataByIdentifierRequest_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest.");
+return value_list.list_value[list_index];
+}
+void WriteDataByIdentifierRequest_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error ("Internal error: Setting an invalid list for a template of union type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new WriteDataByIdentifierRequest_template[list_length];
+}
+
+WriteDataByIdentifierRequest1_template& WriteDataByIdentifierRequest_template::writeDataByIdentifier1()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != WriteDataByIdentifierRequest::ALT_writeDataByIdentifier1) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_writeDataByIdentifier1 = new WriteDataByIdentifierRequest1_template(ANY_VALUE);
+else single_value.field_writeDataByIdentifier1 = new WriteDataByIdentifierRequest1_template;
+single_value.union_selection = WriteDataByIdentifierRequest::ALT_writeDataByIdentifier1;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_writeDataByIdentifier1;
+}
+
+const WriteDataByIdentifierRequest1_template& WriteDataByIdentifierRequest_template::writeDataByIdentifier1() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field writeDataByIdentifier1 in a non-specific template of union type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest.");
+if (single_value.union_selection != WriteDataByIdentifierRequest::ALT_writeDataByIdentifier1) TTCN_error("Accessing non-selected field writeDataByIdentifier1 in a template of union type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest.");
+return *single_value.field_writeDataByIdentifier1;
+}
+
+WriteDataByIdentifierRequest2_template& WriteDataByIdentifierRequest_template::writeDataByIdentifier2()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != WriteDataByIdentifierRequest::ALT_writeDataByIdentifier2) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_writeDataByIdentifier2 = new WriteDataByIdentifierRequest2_template(ANY_VALUE);
+else single_value.field_writeDataByIdentifier2 = new WriteDataByIdentifierRequest2_template;
+single_value.union_selection = WriteDataByIdentifierRequest::ALT_writeDataByIdentifier2;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_writeDataByIdentifier2;
+}
+
+const WriteDataByIdentifierRequest2_template& WriteDataByIdentifierRequest_template::writeDataByIdentifier2() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field writeDataByIdentifier2 in a non-specific template of union type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest.");
+if (single_value.union_selection != WriteDataByIdentifierRequest::ALT_writeDataByIdentifier2) TTCN_error("Accessing non-selected field writeDataByIdentifier2 in a template of union type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest.");
+return *single_value.field_writeDataByIdentifier2;
+}
+
+WriteDataByIdentifierRequest3_template& WriteDataByIdentifierRequest_template::writeDataByIdentifier3()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != WriteDataByIdentifierRequest::ALT_writeDataByIdentifier3) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_writeDataByIdentifier3 = new WriteDataByIdentifierRequest3_template(ANY_VALUE);
+else single_value.field_writeDataByIdentifier3 = new WriteDataByIdentifierRequest3_template;
+single_value.union_selection = WriteDataByIdentifierRequest::ALT_writeDataByIdentifier3;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_writeDataByIdentifier3;
+}
+
+const WriteDataByIdentifierRequest3_template& WriteDataByIdentifierRequest_template::writeDataByIdentifier3() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field writeDataByIdentifier3 in a non-specific template of union type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest.");
+if (single_value.union_selection != WriteDataByIdentifierRequest::ALT_writeDataByIdentifier3) TTCN_error("Accessing non-selected field writeDataByIdentifier3 in a template of union type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest.");
+return *single_value.field_writeDataByIdentifier3;
+}
+
+boolean WriteDataByIdentifierRequest_template::ischosen(WriteDataByIdentifierRequest::union_selection_type checked_selection) const
+{
+if (checked_selection == WriteDataByIdentifierRequest::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest.");
+switch (template_selection) {
+case SPECIFIC_VALUE:
+if (single_value.union_selection == WriteDataByIdentifierRequest::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest.");
+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 @UnifiedDiagnosticServices.WriteDataByIdentifierRequest 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 WriteDataByIdentifierRequest_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case WriteDataByIdentifierRequest::ALT_writeDataByIdentifier1:
+TTCN_Logger::log_event_str("{ writeDataByIdentifier1 := ");
+single_value.field_writeDataByIdentifier1->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case WriteDataByIdentifierRequest::ALT_writeDataByIdentifier2:
+TTCN_Logger::log_event_str("{ writeDataByIdentifier2 := ");
+single_value.field_writeDataByIdentifier2->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case WriteDataByIdentifierRequest::ALT_writeDataByIdentifier3:
+TTCN_Logger::log_event_str("{ writeDataByIdentifier3 := ");
+single_value.field_writeDataByIdentifier3->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 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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void WriteDataByIdentifierRequest_template::log_match(const WriteDataByIdentifierRequest& 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()) {
+switch (single_value.union_selection) {
+case WriteDataByIdentifierRequest::ALT_writeDataByIdentifier1:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".writeDataByIdentifier1");
+single_value.field_writeDataByIdentifier1->log_match(match_value.writeDataByIdentifier1(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ writeDataByIdentifier1 := ");
+single_value.field_writeDataByIdentifier1->log_match(match_value.writeDataByIdentifier1(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case WriteDataByIdentifierRequest::ALT_writeDataByIdentifier2:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".writeDataByIdentifier2");
+single_value.field_writeDataByIdentifier2->log_match(match_value.writeDataByIdentifier2(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ writeDataByIdentifier2 := ");
+single_value.field_writeDataByIdentifier2->log_match(match_value.writeDataByIdentifier2(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case WriteDataByIdentifierRequest::ALT_writeDataByIdentifier3:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".writeDataByIdentifier3");
+single_value.field_writeDataByIdentifier3->log_match(match_value.writeDataByIdentifier3(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ writeDataByIdentifier3 := ");
+single_value.field_writeDataByIdentifier3->log_match(match_value.writeDataByIdentifier3(), 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 WriteDataByIdentifierRequest_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 WriteDataByIdentifierRequest::ALT_writeDataByIdentifier1:
+single_value.field_writeDataByIdentifier1->encode_text(text_buf);
+break;
+case WriteDataByIdentifierRequest::ALT_writeDataByIdentifier2:
+single_value.field_writeDataByIdentifier2->encode_text(text_buf);
+break;
+case WriteDataByIdentifierRequest::ALT_writeDataByIdentifier3:
+single_value.field_writeDataByIdentifier3->encode_text(text_buf);
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest.");
+}
+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 @UnifiedDiagnosticServices.WriteDataByIdentifierRequest.");
+}
+}
+
+void WriteDataByIdentifierRequest_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+{
+single_value.union_selection = WriteDataByIdentifierRequest::UNBOUND_VALUE;
+WriteDataByIdentifierRequest::union_selection_type new_selection = (WriteDataByIdentifierRequest::union_selection_type)text_buf.pull_int().get_val();
+switch (new_selection) {
+case WriteDataByIdentifierRequest::ALT_writeDataByIdentifier1:
+single_value.field_writeDataByIdentifier1 = new WriteDataByIdentifierRequest1_template;
+single_value.field_writeDataByIdentifier1->decode_text(text_buf);
+break;
+case WriteDataByIdentifierRequest::ALT_writeDataByIdentifier2:
+single_value.field_writeDataByIdentifier2 = new WriteDataByIdentifierRequest2_template;
+single_value.field_writeDataByIdentifier2->decode_text(text_buf);
+break;
+case WriteDataByIdentifierRequest::ALT_writeDataByIdentifier3:
+single_value.field_writeDataByIdentifier3 = new WriteDataByIdentifierRequest3_template;
+single_value.field_writeDataByIdentifier3->decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest.");
+}
+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 WriteDataByIdentifierRequest_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 @UnifiedDiagnosticServices.WriteDataByIdentifierRequest.");
+}
+}
+
+boolean WriteDataByIdentifierRequest_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean WriteDataByIdentifierRequest_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 WriteDataByIdentifierRequest_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 `@UnifiedDiagnosticServices.WriteDataByIdentifierRequest'");
+    }
+    if (strcmp("writeDataByIdentifier1", param_field) == 0) {
+      writeDataByIdentifier1().set_param(param);
+      return;
+    } else if (strcmp("writeDataByIdentifier2", param_field) == 0) {
+      writeDataByIdentifier2().set_param(param);
+      return;
+    } else if (strcmp("writeDataByIdentifier3", param_field) == 0) {
+      writeDataByIdentifier3().set_param(param);
+      return;
+    } else param.error("Field `%s' not found in union template type `@UnifiedDiagnosticServices.WriteDataByIdentifierRequest'", 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: {
+    WriteDataByIdentifierRequest_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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", "@UnifiedDiagnosticServices.WriteDataByIdentifierRequest");
+    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, "writeDataByIdentifier1")) {
+      writeDataByIdentifier1().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "writeDataByIdentifier2")) {
+      writeDataByIdentifier2().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "writeDataByIdentifier3")) {
+      writeDataByIdentifier3().set_param(*mp_last);
+      break;
+    }
+    mp_last->error("Field %s does not exist in type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest.", last_name);
+  } break;
+  default:
+    param.type_error("union template", "@UnifiedDiagnosticServices.WriteDataByIdentifierRequest");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void WriteDataByIdentifierRequest_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 WriteDataByIdentifierRequest::ALT_writeDataByIdentifier1:
+single_value.field_writeDataByIdentifier1->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.WriteDataByIdentifierRequest");
+return;
+case WriteDataByIdentifierRequest::ALT_writeDataByIdentifier2:
+single_value.field_writeDataByIdentifier2->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.WriteDataByIdentifierRequest");
+return;
+case WriteDataByIdentifierRequest::ALT_writeDataByIdentifier3:
+single_value.field_writeDataByIdentifier3->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.WriteDataByIdentifierRequest");
+return;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @UnifiedDiagnosticServices.WriteDataByIdentifierRequest.");
+}
+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 : "@UnifiedDiagnosticServices.WriteDataByIdentifierRequest");
+}
+
+WriteDataByIdentifierRequestSID::WriteDataByIdentifierRequestSID()
+{
+}
+
+WriteDataByIdentifierRequestSID::WriteDataByIdentifierRequestSID(const OCTETSTRING& par_sid,
+    const WriteDataByIdentifierRequest& par_writeDataByIdentifierRequest)
+  :   field_sid(par_sid),
+  field_writeDataByIdentifierRequest(par_writeDataByIdentifierRequest)
+{
+}
+
+WriteDataByIdentifierRequestSID::WriteDataByIdentifierRequestSID(const WriteDataByIdentifierRequestSID& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequestSID.");
+if (other_value.sid().is_bound()) field_sid = other_value.sid();
+else field_sid.clean_up();
+if (other_value.writeDataByIdentifierRequest().is_bound()) field_writeDataByIdentifierRequest = other_value.writeDataByIdentifierRequest();
+else field_writeDataByIdentifierRequest.clean_up();
+}
+
+void WriteDataByIdentifierRequestSID::clean_up()
+{
+field_sid.clean_up();
+field_writeDataByIdentifierRequest.clean_up();
+}
+
+const TTCN_Typedescriptor_t* WriteDataByIdentifierRequestSID::get_descriptor() const { return &WriteDataByIdentifierRequestSID_descr_; }
+WriteDataByIdentifierRequestSID& WriteDataByIdentifierRequestSID::operator=(const WriteDataByIdentifierRequestSID& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequestSID.");
+  if (other_value.sid().is_bound()) field_sid = other_value.sid();
+  else field_sid.clean_up();
+  if (other_value.writeDataByIdentifierRequest().is_bound()) field_writeDataByIdentifierRequest = other_value.writeDataByIdentifierRequest();
+  else field_writeDataByIdentifierRequest.clean_up();
+}
+return *this;
+}
+
+boolean WriteDataByIdentifierRequestSID::operator==(const WriteDataByIdentifierRequestSID& other_value) const
+{
+return field_sid==other_value.field_sid
+  && field_writeDataByIdentifierRequest==other_value.field_writeDataByIdentifierRequest;
+}
+
+boolean WriteDataByIdentifierRequestSID::is_bound() const
+{
+return (field_sid.is_bound())
+  || (field_writeDataByIdentifierRequest.is_bound());
+}
+boolean WriteDataByIdentifierRequestSID::is_value() const
+{
+return field_sid.is_value()
+  && field_writeDataByIdentifierRequest.is_value();
+}
+void WriteDataByIdentifierRequestSID::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ sid := ");
+field_sid.log();
+TTCN_Logger::log_event_str(", writeDataByIdentifierRequest := ");
+field_writeDataByIdentifierRequest.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void WriteDataByIdentifierRequestSID::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 @UnifiedDiagnosticServices.WriteDataByIdentifierRequestSID 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) sid().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) writeDataByIdentifierRequest().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(), "sid")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          sid().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(), "writeDataByIdentifierRequest")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          writeDataByIdentifierRequest().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 @UnifiedDiagnosticServices.WriteDataByIdentifierRequestSID: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.WriteDataByIdentifierRequestSID");
+  }
+}
+
+void WriteDataByIdentifierRequestSID::set_implicit_omit()
+{
+if (sid().is_bound()) sid().set_implicit_omit();
+if (writeDataByIdentifierRequest().is_bound()) writeDataByIdentifierRequest().set_implicit_omit();
+}
+
+void WriteDataByIdentifierRequestSID::encode_text(Text_Buf& text_buf) const
+{
+field_sid.encode_text(text_buf);
+field_writeDataByIdentifierRequest.encode_text(text_buf);
+}
+
+void WriteDataByIdentifierRequestSID::decode_text(Text_Buf& text_buf)
+{
+field_sid.decode_text(text_buf);
+field_writeDataByIdentifierRequest.decode_text(text_buf);
+}
+
+void WriteDataByIdentifierRequestSID::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void WriteDataByIdentifierRequestSID::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int WriteDataByIdentifierRequestSID::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, WriteDataByIdentifierRequestSID_sid_descr_.raw->forceomit);
+  decoded_field_length = field_sid.RAW_decode(WriteDataByIdentifierRequestSID_sid_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, WriteDataByIdentifierRequest_descr_.raw->forceomit);
+  decoded_field_length = field_writeDataByIdentifierRequest.RAW_decode(WriteDataByIdentifierRequest_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 WriteDataByIdentifierRequestSID::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, WriteDataByIdentifierRequestSID_sid_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, WriteDataByIdentifierRequest_descr_.raw);
+  encoded_length += field_sid.RAW_encode(WriteDataByIdentifierRequestSID_sid_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_writeDataByIdentifierRequest.RAW_encode(WriteDataByIdentifierRequest_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct WriteDataByIdentifierRequestSID_template::single_value_struct {
+OCTETSTRING_template field_sid;
+WriteDataByIdentifierRequest_template field_writeDataByIdentifierRequest;
+};
+
+void WriteDataByIdentifierRequestSID_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_sid = ANY_VALUE;
+single_value->field_writeDataByIdentifierRequest = ANY_VALUE;
+}
+}
+}
+
+void WriteDataByIdentifierRequestSID_template::copy_value(const WriteDataByIdentifierRequestSID& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.sid().is_bound()) {
+  single_value->field_sid = other_value.sid();
+} else {
+  single_value->field_sid.clean_up();
+}
+if (other_value.writeDataByIdentifierRequest().is_bound()) {
+  single_value->field_writeDataByIdentifierRequest = other_value.writeDataByIdentifierRequest();
+} else {
+  single_value->field_writeDataByIdentifierRequest.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void WriteDataByIdentifierRequestSID_template::copy_template(const WriteDataByIdentifierRequestSID_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.sid().get_selection()) {
+single_value->field_sid = other_value.sid();
+} else {
+single_value->field_sid.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.writeDataByIdentifierRequest().get_selection()) {
+single_value->field_writeDataByIdentifierRequest = other_value.writeDataByIdentifierRequest();
+} else {
+single_value->field_writeDataByIdentifierRequest.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new WriteDataByIdentifierRequestSID_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequestSID.");
+break;
+}
+set_selection(other_value);
+}
+
+WriteDataByIdentifierRequestSID_template::WriteDataByIdentifierRequestSID_template()
+{
+}
+
+WriteDataByIdentifierRequestSID_template::WriteDataByIdentifierRequestSID_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+WriteDataByIdentifierRequestSID_template::WriteDataByIdentifierRequestSID_template(const WriteDataByIdentifierRequestSID& other_value)
+{
+copy_value(other_value);
+}
+
+WriteDataByIdentifierRequestSID_template::WriteDataByIdentifierRequestSID_template(const OPTIONAL<WriteDataByIdentifierRequestSID>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const WriteDataByIdentifierRequestSID&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequestSID from an unbound optional field.");
+}
+}
+
+WriteDataByIdentifierRequestSID_template::WriteDataByIdentifierRequestSID_template(const WriteDataByIdentifierRequestSID_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+WriteDataByIdentifierRequestSID_template::~WriteDataByIdentifierRequestSID_template()
+{
+clean_up();
+}
+
+WriteDataByIdentifierRequestSID_template& WriteDataByIdentifierRequestSID_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+WriteDataByIdentifierRequestSID_template& WriteDataByIdentifierRequestSID_template::operator=(const WriteDataByIdentifierRequestSID& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+WriteDataByIdentifierRequestSID_template& WriteDataByIdentifierRequestSID_template::operator=(const OPTIONAL<WriteDataByIdentifierRequestSID>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const WriteDataByIdentifierRequestSID&)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 @UnifiedDiagnosticServices.WriteDataByIdentifierRequestSID.");
+}
+return *this;
+}
+
+WriteDataByIdentifierRequestSID_template& WriteDataByIdentifierRequestSID_template::operator=(const WriteDataByIdentifierRequestSID_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean WriteDataByIdentifierRequestSID_template::match(const WriteDataByIdentifierRequestSID& 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.sid().is_bound()) return FALSE;
+if(!single_value->field_sid.match(other_value.sid(), legacy))return FALSE;
+if(!other_value.writeDataByIdentifierRequest().is_bound()) return FALSE;
+if(!single_value->field_writeDataByIdentifierRequest.match(other_value.writeDataByIdentifierRequest(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequestSID.");
+}
+return FALSE;
+}
+
+boolean WriteDataByIdentifierRequestSID_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_sid.is_bound()
+
+ ||single_value->field_writeDataByIdentifierRequest.is_bound()
+;
+}
+
+boolean WriteDataByIdentifierRequestSID_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_sid.is_value()
+ &&single_value->field_writeDataByIdentifierRequest.is_value();
+}
+
+void WriteDataByIdentifierRequestSID_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+WriteDataByIdentifierRequestSID WriteDataByIdentifierRequestSID_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 @UnifiedDiagnosticServices.WriteDataByIdentifierRequestSID.");
+WriteDataByIdentifierRequestSID ret_val;
+if (single_value->field_sid.is_bound()) {
+ret_val.sid() = single_value->field_sid.valueof();
+}
+if (single_value->field_writeDataByIdentifierRequest.is_bound()) {
+ret_val.writeDataByIdentifierRequest() = single_value->field_writeDataByIdentifierRequest.valueof();
+}
+return ret_val;
+}
+
+void WriteDataByIdentifierRequestSID_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequestSID.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new WriteDataByIdentifierRequestSID_template[list_length];
+}
+
+WriteDataByIdentifierRequestSID_template& WriteDataByIdentifierRequestSID_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequestSID.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequestSID.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& WriteDataByIdentifierRequestSID_template::sid()
+{
+set_specific();
+return single_value->field_sid;
+}
+
+const OCTETSTRING_template& WriteDataByIdentifierRequestSID_template::sid() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field sid of a non-specific template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequestSID.");
+return single_value->field_sid;
+}
+
+WriteDataByIdentifierRequest_template& WriteDataByIdentifierRequestSID_template::writeDataByIdentifierRequest()
+{
+set_specific();
+return single_value->field_writeDataByIdentifierRequest;
+}
+
+const WriteDataByIdentifierRequest_template& WriteDataByIdentifierRequestSID_template::writeDataByIdentifierRequest() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field writeDataByIdentifierRequest of a non-specific template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequestSID.");
+return single_value->field_writeDataByIdentifierRequest;
+}
+
+int WriteDataByIdentifierRequestSID_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequestSID 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 @UnifiedDiagnosticServices.WriteDataByIdentifierRequestSID 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 @UnifiedDiagnosticServices.WriteDataByIdentifierRequestSID containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequestSID containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequestSID containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequestSID containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.WriteDataByIdentifierRequestSID.");
+  }
+  return 0;
+}
+
+void WriteDataByIdentifierRequestSID_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ sid := ");
+single_value->field_sid.log();
+TTCN_Logger::log_event_str(", writeDataByIdentifierRequest := ");
+single_value->field_writeDataByIdentifierRequest.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void WriteDataByIdentifierRequestSID_template::log_match(const WriteDataByIdentifierRequestSID& 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_sid.match(match_value.sid(), legacy)){
+TTCN_Logger::log_logmatch_info(".sid");
+single_value->field_sid.log_match(match_value.sid(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_writeDataByIdentifierRequest.match(match_value.writeDataByIdentifierRequest(), legacy)){
+TTCN_Logger::log_logmatch_info(".writeDataByIdentifierRequest");
+single_value->field_writeDataByIdentifierRequest.log_match(match_value.writeDataByIdentifierRequest(), 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("{ sid := ");
+single_value->field_sid.log_match(match_value.sid(), legacy);
+TTCN_Logger::log_event_str(", writeDataByIdentifierRequest := ");
+single_value->field_writeDataByIdentifierRequest.log_match(match_value.writeDataByIdentifierRequest(), 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 WriteDataByIdentifierRequestSID_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_sid.encode_text(text_buf);
+single_value->field_writeDataByIdentifierRequest.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 @UnifiedDiagnosticServices.WriteDataByIdentifierRequestSID.");
+}
+}
+
+void WriteDataByIdentifierRequestSID_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_sid.decode_text(text_buf);
+single_value->field_writeDataByIdentifierRequest.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 WriteDataByIdentifierRequestSID_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 @UnifiedDiagnosticServices.WriteDataByIdentifierRequestSID.");
+}
+}
+
+void WriteDataByIdentifierRequestSID_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: {
+    WriteDataByIdentifierRequestSID_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @UnifiedDiagnosticServices.WriteDataByIdentifierRequestSID 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) sid().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) writeDataByIdentifierRequest().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(), "sid")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          sid().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(), "writeDataByIdentifierRequest")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          writeDataByIdentifierRequest().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 @UnifiedDiagnosticServices.WriteDataByIdentifierRequestSID: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.WriteDataByIdentifierRequestSID");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void WriteDataByIdentifierRequestSID_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_sid.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.WriteDataByIdentifierRequestSID");
+single_value->field_writeDataByIdentifierRequest.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.WriteDataByIdentifierRequestSID");
+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 : "@UnifiedDiagnosticServices.WriteDataByIdentifierRequestSID");
+}
+
+boolean WriteDataByIdentifierRequestSID_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean WriteDataByIdentifierRequestSID_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+WriteDataByIdentifierResponse1::WriteDataByIdentifierResponse1()
+{
+}
+
+WriteDataByIdentifierResponse1::WriteDataByIdentifierResponse1(const OCTETSTRING& par_identifier)
+  :   field_identifier(par_identifier)
+{
+}
+
+WriteDataByIdentifierResponse1::WriteDataByIdentifierResponse1(const WriteDataByIdentifierResponse1& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse1.");
+if (other_value.identifier().is_bound()) field_identifier = other_value.identifier();
+else field_identifier.clean_up();
+}
+
+void WriteDataByIdentifierResponse1::clean_up()
+{
+field_identifier.clean_up();
+}
+
+const TTCN_Typedescriptor_t* WriteDataByIdentifierResponse1::get_descriptor() const { return &WriteDataByIdentifierResponse1_descr_; }
+WriteDataByIdentifierResponse1& WriteDataByIdentifierResponse1::operator=(const WriteDataByIdentifierResponse1& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse1.");
+  if (other_value.identifier().is_bound()) field_identifier = other_value.identifier();
+  else field_identifier.clean_up();
+}
+return *this;
+}
+
+boolean WriteDataByIdentifierResponse1::operator==(const WriteDataByIdentifierResponse1& other_value) const
+{
+return field_identifier==other_value.field_identifier;
+}
+
+boolean WriteDataByIdentifierResponse1::is_bound() const
+{
+return (field_identifier.is_bound());
+}
+boolean WriteDataByIdentifierResponse1::is_value() const
+{
+return field_identifier.is_value();
+}
+void WriteDataByIdentifierResponse1::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ identifier := ");
+field_identifier.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void WriteDataByIdentifierResponse1::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 (1<param.get_size()) {
+      param.error("record value of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse1 has 1 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) identifier().set_param(*param.get_elem(0));
+    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(), "identifier")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          identifier().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 @UnifiedDiagnosticServices.WriteDataByIdentifierResponse1: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.WriteDataByIdentifierResponse1");
+  }
+}
+
+void WriteDataByIdentifierResponse1::set_implicit_omit()
+{
+if (identifier().is_bound()) identifier().set_implicit_omit();
+}
+
+void WriteDataByIdentifierResponse1::encode_text(Text_Buf& text_buf) const
+{
+field_identifier.encode_text(text_buf);
+}
+
+void WriteDataByIdentifierResponse1::decode_text(Text_Buf& text_buf)
+{
+field_identifier.decode_text(text_buf);
+}
+
+void WriteDataByIdentifierResponse1::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void WriteDataByIdentifierResponse1::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int WriteDataByIdentifierResponse1::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, WriteDataByIdentifierResponse1_identifier_descr_.raw->forceomit);
+  decoded_field_length = field_identifier.RAW_decode(WriteDataByIdentifierResponse1_identifier_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int WriteDataByIdentifierResponse1::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 = 1;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(1);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, WriteDataByIdentifierResponse1_identifier_descr_.raw);
+  encoded_length += field_identifier.RAW_encode(WriteDataByIdentifierResponse1_identifier_descr_, *myleaf.body.node.nodes[0]);
+  return myleaf.length = encoded_length;
+}
+
+struct WriteDataByIdentifierResponse1_template::single_value_struct {
+OCTETSTRING_template field_identifier;
+};
+
+void WriteDataByIdentifierResponse1_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_identifier = ANY_VALUE;
+}
+}
+}
+
+void WriteDataByIdentifierResponse1_template::copy_value(const WriteDataByIdentifierResponse1& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.identifier().is_bound()) {
+  single_value->field_identifier = other_value.identifier();
+} else {
+  single_value->field_identifier.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void WriteDataByIdentifierResponse1_template::copy_template(const WriteDataByIdentifierResponse1_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.identifier().get_selection()) {
+single_value->field_identifier = other_value.identifier();
+} else {
+single_value->field_identifier.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new WriteDataByIdentifierResponse1_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse1.");
+break;
+}
+set_selection(other_value);
+}
+
+WriteDataByIdentifierResponse1_template::WriteDataByIdentifierResponse1_template()
+{
+}
+
+WriteDataByIdentifierResponse1_template::WriteDataByIdentifierResponse1_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+WriteDataByIdentifierResponse1_template::WriteDataByIdentifierResponse1_template(const WriteDataByIdentifierResponse1& other_value)
+{
+copy_value(other_value);
+}
+
+WriteDataByIdentifierResponse1_template::WriteDataByIdentifierResponse1_template(const OPTIONAL<WriteDataByIdentifierResponse1>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const WriteDataByIdentifierResponse1&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse1 from an unbound optional field.");
+}
+}
+
+WriteDataByIdentifierResponse1_template::WriteDataByIdentifierResponse1_template(const WriteDataByIdentifierResponse1_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+WriteDataByIdentifierResponse1_template::~WriteDataByIdentifierResponse1_template()
+{
+clean_up();
+}
+
+WriteDataByIdentifierResponse1_template& WriteDataByIdentifierResponse1_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+WriteDataByIdentifierResponse1_template& WriteDataByIdentifierResponse1_template::operator=(const WriteDataByIdentifierResponse1& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+WriteDataByIdentifierResponse1_template& WriteDataByIdentifierResponse1_template::operator=(const OPTIONAL<WriteDataByIdentifierResponse1>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const WriteDataByIdentifierResponse1&)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 @UnifiedDiagnosticServices.WriteDataByIdentifierResponse1.");
+}
+return *this;
+}
+
+WriteDataByIdentifierResponse1_template& WriteDataByIdentifierResponse1_template::operator=(const WriteDataByIdentifierResponse1_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean WriteDataByIdentifierResponse1_template::match(const WriteDataByIdentifierResponse1& 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.identifier().is_bound()) return FALSE;
+if(!single_value->field_identifier.match(other_value.identifier(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse1.");
+}
+return FALSE;
+}
+
+boolean WriteDataByIdentifierResponse1_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_identifier.is_bound()
+;
+}
+
+boolean WriteDataByIdentifierResponse1_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_identifier.is_value();
+}
+
+void WriteDataByIdentifierResponse1_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+WriteDataByIdentifierResponse1 WriteDataByIdentifierResponse1_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 @UnifiedDiagnosticServices.WriteDataByIdentifierResponse1.");
+WriteDataByIdentifierResponse1 ret_val;
+if (single_value->field_identifier.is_bound()) {
+ret_val.identifier() = single_value->field_identifier.valueof();
+}
+return ret_val;
+}
+
+void WriteDataByIdentifierResponse1_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse1.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new WriteDataByIdentifierResponse1_template[list_length];
+}
+
+WriteDataByIdentifierResponse1_template& WriteDataByIdentifierResponse1_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse1.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse1.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& WriteDataByIdentifierResponse1_template::identifier()
+{
+set_specific();
+return single_value->field_identifier;
+}
+
+const OCTETSTRING_template& WriteDataByIdentifierResponse1_template::identifier() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field identifier of a non-specific template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse1.");
+return single_value->field_identifier;
+}
+
+int WriteDataByIdentifierResponse1_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse1 which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 1;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse1 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 @UnifiedDiagnosticServices.WriteDataByIdentifierResponse1 containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse1 containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse1 containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse1 containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse1.");
+  }
+  return 0;
+}
+
+void WriteDataByIdentifierResponse1_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ identifier := ");
+single_value->field_identifier.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void WriteDataByIdentifierResponse1_template::log_match(const WriteDataByIdentifierResponse1& 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_identifier.match(match_value.identifier(), legacy)){
+TTCN_Logger::log_logmatch_info(".identifier");
+single_value->field_identifier.log_match(match_value.identifier(), 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("{ identifier := ");
+single_value->field_identifier.log_match(match_value.identifier(), 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 WriteDataByIdentifierResponse1_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_identifier.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 @UnifiedDiagnosticServices.WriteDataByIdentifierResponse1.");
+}
+}
+
+void WriteDataByIdentifierResponse1_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_identifier.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 WriteDataByIdentifierResponse1_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 @UnifiedDiagnosticServices.WriteDataByIdentifierResponse1.");
+}
+}
+
+void WriteDataByIdentifierResponse1_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: {
+    WriteDataByIdentifierResponse1_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (1<param.get_size()) {
+      param.error("record template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse1 has 1 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) identifier().set_param(*param.get_elem(0));
+    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(), "identifier")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          identifier().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 @UnifiedDiagnosticServices.WriteDataByIdentifierResponse1: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.WriteDataByIdentifierResponse1");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void WriteDataByIdentifierResponse1_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_identifier.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.WriteDataByIdentifierResponse1");
+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 : "@UnifiedDiagnosticServices.WriteDataByIdentifierResponse1");
+}
+
+boolean WriteDataByIdentifierResponse1_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean WriteDataByIdentifierResponse1_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+WriteDataByIdentifierResponse2::WriteDataByIdentifierResponse2()
+{
+}
+
+WriteDataByIdentifierResponse2::WriteDataByIdentifierResponse2(const OCTETSTRING& par_identifier)
+  :   field_identifier(par_identifier)
+{
+}
+
+WriteDataByIdentifierResponse2::WriteDataByIdentifierResponse2(const WriteDataByIdentifierResponse2& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse2.");
+if (other_value.identifier().is_bound()) field_identifier = other_value.identifier();
+else field_identifier.clean_up();
+}
+
+void WriteDataByIdentifierResponse2::clean_up()
+{
+field_identifier.clean_up();
+}
+
+const TTCN_Typedescriptor_t* WriteDataByIdentifierResponse2::get_descriptor() const { return &WriteDataByIdentifierResponse2_descr_; }
+WriteDataByIdentifierResponse2& WriteDataByIdentifierResponse2::operator=(const WriteDataByIdentifierResponse2& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse2.");
+  if (other_value.identifier().is_bound()) field_identifier = other_value.identifier();
+  else field_identifier.clean_up();
+}
+return *this;
+}
+
+boolean WriteDataByIdentifierResponse2::operator==(const WriteDataByIdentifierResponse2& other_value) const
+{
+return field_identifier==other_value.field_identifier;
+}
+
+boolean WriteDataByIdentifierResponse2::is_bound() const
+{
+return (field_identifier.is_bound());
+}
+boolean WriteDataByIdentifierResponse2::is_value() const
+{
+return field_identifier.is_value();
+}
+void WriteDataByIdentifierResponse2::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ identifier := ");
+field_identifier.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void WriteDataByIdentifierResponse2::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 (1<param.get_size()) {
+      param.error("record value of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse2 has 1 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) identifier().set_param(*param.get_elem(0));
+    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(), "identifier")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          identifier().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 @UnifiedDiagnosticServices.WriteDataByIdentifierResponse2: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.WriteDataByIdentifierResponse2");
+  }
+}
+
+void WriteDataByIdentifierResponse2::set_implicit_omit()
+{
+if (identifier().is_bound()) identifier().set_implicit_omit();
+}
+
+void WriteDataByIdentifierResponse2::encode_text(Text_Buf& text_buf) const
+{
+field_identifier.encode_text(text_buf);
+}
+
+void WriteDataByIdentifierResponse2::decode_text(Text_Buf& text_buf)
+{
+field_identifier.decode_text(text_buf);
+}
+
+void WriteDataByIdentifierResponse2::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void WriteDataByIdentifierResponse2::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int WriteDataByIdentifierResponse2::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, WriteDataByIdentifierResponse2_identifier_descr_.raw->forceomit);
+  decoded_field_length = field_identifier.RAW_decode(WriteDataByIdentifierResponse2_identifier_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int WriteDataByIdentifierResponse2::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 = 1;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(1);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, WriteDataByIdentifierResponse2_identifier_descr_.raw);
+  encoded_length += field_identifier.RAW_encode(WriteDataByIdentifierResponse2_identifier_descr_, *myleaf.body.node.nodes[0]);
+  return myleaf.length = encoded_length;
+}
+
+struct WriteDataByIdentifierResponse2_template::single_value_struct {
+OCTETSTRING_template field_identifier;
+};
+
+void WriteDataByIdentifierResponse2_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_identifier = ANY_VALUE;
+}
+}
+}
+
+void WriteDataByIdentifierResponse2_template::copy_value(const WriteDataByIdentifierResponse2& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.identifier().is_bound()) {
+  single_value->field_identifier = other_value.identifier();
+} else {
+  single_value->field_identifier.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void WriteDataByIdentifierResponse2_template::copy_template(const WriteDataByIdentifierResponse2_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.identifier().get_selection()) {
+single_value->field_identifier = other_value.identifier();
+} else {
+single_value->field_identifier.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new WriteDataByIdentifierResponse2_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse2.");
+break;
+}
+set_selection(other_value);
+}
+
+WriteDataByIdentifierResponse2_template::WriteDataByIdentifierResponse2_template()
+{
+}
+
+WriteDataByIdentifierResponse2_template::WriteDataByIdentifierResponse2_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+WriteDataByIdentifierResponse2_template::WriteDataByIdentifierResponse2_template(const WriteDataByIdentifierResponse2& other_value)
+{
+copy_value(other_value);
+}
+
+WriteDataByIdentifierResponse2_template::WriteDataByIdentifierResponse2_template(const OPTIONAL<WriteDataByIdentifierResponse2>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const WriteDataByIdentifierResponse2&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse2 from an unbound optional field.");
+}
+}
+
+WriteDataByIdentifierResponse2_template::WriteDataByIdentifierResponse2_template(const WriteDataByIdentifierResponse2_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+WriteDataByIdentifierResponse2_template::~WriteDataByIdentifierResponse2_template()
+{
+clean_up();
+}
+
+WriteDataByIdentifierResponse2_template& WriteDataByIdentifierResponse2_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+WriteDataByIdentifierResponse2_template& WriteDataByIdentifierResponse2_template::operator=(const WriteDataByIdentifierResponse2& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+WriteDataByIdentifierResponse2_template& WriteDataByIdentifierResponse2_template::operator=(const OPTIONAL<WriteDataByIdentifierResponse2>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const WriteDataByIdentifierResponse2&)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 @UnifiedDiagnosticServices.WriteDataByIdentifierResponse2.");
+}
+return *this;
+}
+
+WriteDataByIdentifierResponse2_template& WriteDataByIdentifierResponse2_template::operator=(const WriteDataByIdentifierResponse2_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean WriteDataByIdentifierResponse2_template::match(const WriteDataByIdentifierResponse2& 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.identifier().is_bound()) return FALSE;
+if(!single_value->field_identifier.match(other_value.identifier(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse2.");
+}
+return FALSE;
+}
+
+boolean WriteDataByIdentifierResponse2_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_identifier.is_bound()
+;
+}
+
+boolean WriteDataByIdentifierResponse2_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_identifier.is_value();
+}
+
+void WriteDataByIdentifierResponse2_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+WriteDataByIdentifierResponse2 WriteDataByIdentifierResponse2_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 @UnifiedDiagnosticServices.WriteDataByIdentifierResponse2.");
+WriteDataByIdentifierResponse2 ret_val;
+if (single_value->field_identifier.is_bound()) {
+ret_val.identifier() = single_value->field_identifier.valueof();
+}
+return ret_val;
+}
+
+void WriteDataByIdentifierResponse2_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse2.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new WriteDataByIdentifierResponse2_template[list_length];
+}
+
+WriteDataByIdentifierResponse2_template& WriteDataByIdentifierResponse2_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse2.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse2.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& WriteDataByIdentifierResponse2_template::identifier()
+{
+set_specific();
+return single_value->field_identifier;
+}
+
+const OCTETSTRING_template& WriteDataByIdentifierResponse2_template::identifier() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field identifier of a non-specific template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse2.");
+return single_value->field_identifier;
+}
+
+int WriteDataByIdentifierResponse2_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse2 which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 1;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse2 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 @UnifiedDiagnosticServices.WriteDataByIdentifierResponse2 containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse2 containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse2 containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse2 containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse2.");
+  }
+  return 0;
+}
+
+void WriteDataByIdentifierResponse2_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ identifier := ");
+single_value->field_identifier.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void WriteDataByIdentifierResponse2_template::log_match(const WriteDataByIdentifierResponse2& 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_identifier.match(match_value.identifier(), legacy)){
+TTCN_Logger::log_logmatch_info(".identifier");
+single_value->field_identifier.log_match(match_value.identifier(), 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("{ identifier := ");
+single_value->field_identifier.log_match(match_value.identifier(), 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 WriteDataByIdentifierResponse2_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_identifier.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 @UnifiedDiagnosticServices.WriteDataByIdentifierResponse2.");
+}
+}
+
+void WriteDataByIdentifierResponse2_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_identifier.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 WriteDataByIdentifierResponse2_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 @UnifiedDiagnosticServices.WriteDataByIdentifierResponse2.");
+}
+}
+
+void WriteDataByIdentifierResponse2_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: {
+    WriteDataByIdentifierResponse2_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (1<param.get_size()) {
+      param.error("record template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse2 has 1 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) identifier().set_param(*param.get_elem(0));
+    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(), "identifier")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          identifier().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 @UnifiedDiagnosticServices.WriteDataByIdentifierResponse2: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.WriteDataByIdentifierResponse2");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void WriteDataByIdentifierResponse2_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_identifier.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.WriteDataByIdentifierResponse2");
+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 : "@UnifiedDiagnosticServices.WriteDataByIdentifierResponse2");
+}
+
+boolean WriteDataByIdentifierResponse2_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean WriteDataByIdentifierResponse2_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+WriteDataByIdentifierResponse3::WriteDataByIdentifierResponse3()
+{
+}
+
+WriteDataByIdentifierResponse3::WriteDataByIdentifierResponse3(const OCTETSTRING& par_identifier)
+  :   field_identifier(par_identifier)
+{
+}
+
+WriteDataByIdentifierResponse3::WriteDataByIdentifierResponse3(const WriteDataByIdentifierResponse3& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse3.");
+if (other_value.identifier().is_bound()) field_identifier = other_value.identifier();
+else field_identifier.clean_up();
+}
+
+void WriteDataByIdentifierResponse3::clean_up()
+{
+field_identifier.clean_up();
+}
+
+const TTCN_Typedescriptor_t* WriteDataByIdentifierResponse3::get_descriptor() const { return &WriteDataByIdentifierResponse3_descr_; }
+WriteDataByIdentifierResponse3& WriteDataByIdentifierResponse3::operator=(const WriteDataByIdentifierResponse3& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse3.");
+  if (other_value.identifier().is_bound()) field_identifier = other_value.identifier();
+  else field_identifier.clean_up();
+}
+return *this;
+}
+
+boolean WriteDataByIdentifierResponse3::operator==(const WriteDataByIdentifierResponse3& other_value) const
+{
+return field_identifier==other_value.field_identifier;
+}
+
+boolean WriteDataByIdentifierResponse3::is_bound() const
+{
+return (field_identifier.is_bound());
+}
+boolean WriteDataByIdentifierResponse3::is_value() const
+{
+return field_identifier.is_value();
+}
+void WriteDataByIdentifierResponse3::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ identifier := ");
+field_identifier.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void WriteDataByIdentifierResponse3::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 (1<param.get_size()) {
+      param.error("record value of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse3 has 1 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) identifier().set_param(*param.get_elem(0));
+    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(), "identifier")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          identifier().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 @UnifiedDiagnosticServices.WriteDataByIdentifierResponse3: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.WriteDataByIdentifierResponse3");
+  }
+}
+
+void WriteDataByIdentifierResponse3::set_implicit_omit()
+{
+if (identifier().is_bound()) identifier().set_implicit_omit();
+}
+
+void WriteDataByIdentifierResponse3::encode_text(Text_Buf& text_buf) const
+{
+field_identifier.encode_text(text_buf);
+}
+
+void WriteDataByIdentifierResponse3::decode_text(Text_Buf& text_buf)
+{
+field_identifier.decode_text(text_buf);
+}
+
+void WriteDataByIdentifierResponse3::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void WriteDataByIdentifierResponse3::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int WriteDataByIdentifierResponse3::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, WriteDataByIdentifierResponse3_identifier_descr_.raw->forceomit);
+  decoded_field_length = field_identifier.RAW_decode(WriteDataByIdentifierResponse3_identifier_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());
+  p_buf.set_pos_bit(last_decoded_pos);
+  return decoded_length+prepaddlength+p_buf.increase_pos_padd(p_td.raw->padding);
+}
+
+int WriteDataByIdentifierResponse3::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 = 1;
+  myleaf.body.node.nodes = init_nodes_of_enc_tree(1);
+  myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 0, WriteDataByIdentifierResponse3_identifier_descr_.raw);
+  encoded_length += field_identifier.RAW_encode(WriteDataByIdentifierResponse3_identifier_descr_, *myleaf.body.node.nodes[0]);
+  return myleaf.length = encoded_length;
+}
+
+struct WriteDataByIdentifierResponse3_template::single_value_struct {
+OCTETSTRING_template field_identifier;
+};
+
+void WriteDataByIdentifierResponse3_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_identifier = ANY_VALUE;
+}
+}
+}
+
+void WriteDataByIdentifierResponse3_template::copy_value(const WriteDataByIdentifierResponse3& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.identifier().is_bound()) {
+  single_value->field_identifier = other_value.identifier();
+} else {
+  single_value->field_identifier.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void WriteDataByIdentifierResponse3_template::copy_template(const WriteDataByIdentifierResponse3_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.identifier().get_selection()) {
+single_value->field_identifier = other_value.identifier();
+} else {
+single_value->field_identifier.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new WriteDataByIdentifierResponse3_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse3.");
+break;
+}
+set_selection(other_value);
+}
+
+WriteDataByIdentifierResponse3_template::WriteDataByIdentifierResponse3_template()
+{
+}
+
+WriteDataByIdentifierResponse3_template::WriteDataByIdentifierResponse3_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+WriteDataByIdentifierResponse3_template::WriteDataByIdentifierResponse3_template(const WriteDataByIdentifierResponse3& other_value)
+{
+copy_value(other_value);
+}
+
+WriteDataByIdentifierResponse3_template::WriteDataByIdentifierResponse3_template(const OPTIONAL<WriteDataByIdentifierResponse3>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const WriteDataByIdentifierResponse3&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse3 from an unbound optional field.");
+}
+}
+
+WriteDataByIdentifierResponse3_template::WriteDataByIdentifierResponse3_template(const WriteDataByIdentifierResponse3_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+WriteDataByIdentifierResponse3_template::~WriteDataByIdentifierResponse3_template()
+{
+clean_up();
+}
+
+WriteDataByIdentifierResponse3_template& WriteDataByIdentifierResponse3_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+WriteDataByIdentifierResponse3_template& WriteDataByIdentifierResponse3_template::operator=(const WriteDataByIdentifierResponse3& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+WriteDataByIdentifierResponse3_template& WriteDataByIdentifierResponse3_template::operator=(const OPTIONAL<WriteDataByIdentifierResponse3>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const WriteDataByIdentifierResponse3&)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 @UnifiedDiagnosticServices.WriteDataByIdentifierResponse3.");
+}
+return *this;
+}
+
+WriteDataByIdentifierResponse3_template& WriteDataByIdentifierResponse3_template::operator=(const WriteDataByIdentifierResponse3_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean WriteDataByIdentifierResponse3_template::match(const WriteDataByIdentifierResponse3& 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.identifier().is_bound()) return FALSE;
+if(!single_value->field_identifier.match(other_value.identifier(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse3.");
+}
+return FALSE;
+}
+
+boolean WriteDataByIdentifierResponse3_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_identifier.is_bound()
+;
+}
+
+boolean WriteDataByIdentifierResponse3_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_identifier.is_value();
+}
+
+void WriteDataByIdentifierResponse3_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+WriteDataByIdentifierResponse3 WriteDataByIdentifierResponse3_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 @UnifiedDiagnosticServices.WriteDataByIdentifierResponse3.");
+WriteDataByIdentifierResponse3 ret_val;
+if (single_value->field_identifier.is_bound()) {
+ret_val.identifier() = single_value->field_identifier.valueof();
+}
+return ret_val;
+}
+
+void WriteDataByIdentifierResponse3_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse3.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new WriteDataByIdentifierResponse3_template[list_length];
+}
+
+WriteDataByIdentifierResponse3_template& WriteDataByIdentifierResponse3_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse3.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse3.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& WriteDataByIdentifierResponse3_template::identifier()
+{
+set_specific();
+return single_value->field_identifier;
+}
+
+const OCTETSTRING_template& WriteDataByIdentifierResponse3_template::identifier() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field identifier of a non-specific template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse3.");
+return single_value->field_identifier;
+}
+
+int WriteDataByIdentifierResponse3_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse3 which has an ifpresent attribute.");
+  switch (template_selection)
+  {
+  case SPECIFIC_VALUE:
+    return 1;
+  case VALUE_LIST:
+   {
+     if (value_list.n_values<1)
+       TTCN_error("Internal error: Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse3 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 @UnifiedDiagnosticServices.WriteDataByIdentifierResponse3 containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse3 containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse3 containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse3 containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse3.");
+  }
+  return 0;
+}
+
+void WriteDataByIdentifierResponse3_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ identifier := ");
+single_value->field_identifier.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void WriteDataByIdentifierResponse3_template::log_match(const WriteDataByIdentifierResponse3& 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_identifier.match(match_value.identifier(), legacy)){
+TTCN_Logger::log_logmatch_info(".identifier");
+single_value->field_identifier.log_match(match_value.identifier(), 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("{ identifier := ");
+single_value->field_identifier.log_match(match_value.identifier(), 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 WriteDataByIdentifierResponse3_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_identifier.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 @UnifiedDiagnosticServices.WriteDataByIdentifierResponse3.");
+}
+}
+
+void WriteDataByIdentifierResponse3_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_identifier.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 WriteDataByIdentifierResponse3_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 @UnifiedDiagnosticServices.WriteDataByIdentifierResponse3.");
+}
+}
+
+void WriteDataByIdentifierResponse3_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: {
+    WriteDataByIdentifierResponse3_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 (1<param.get_size()) {
+      param.error("record template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse3 has 1 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) identifier().set_param(*param.get_elem(0));
+    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(), "identifier")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          identifier().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 @UnifiedDiagnosticServices.WriteDataByIdentifierResponse3: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.WriteDataByIdentifierResponse3");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void WriteDataByIdentifierResponse3_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_identifier.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.WriteDataByIdentifierResponse3");
+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 : "@UnifiedDiagnosticServices.WriteDataByIdentifierResponse3");
+}
+
+boolean WriteDataByIdentifierResponse3_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean WriteDataByIdentifierResponse3_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 WriteDataByIdentifierResponse::copy_value(const WriteDataByIdentifierResponse& other_value)
+{
+switch (other_value.union_selection) {
+case ALT_writeDataByIdentifier1:
+field_writeDataByIdentifier1 = new WriteDataByIdentifierResponse1(*other_value.field_writeDataByIdentifier1);
+break;
+case ALT_writeDataByIdentifier2:
+field_writeDataByIdentifier2 = new WriteDataByIdentifierResponse2(*other_value.field_writeDataByIdentifier2);
+break;
+case ALT_writeDataByIdentifier3:
+field_writeDataByIdentifier3 = new WriteDataByIdentifierResponse3(*other_value.field_writeDataByIdentifier3);
+break;
+default:
+TTCN_error("Assignment of an unbound union value of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse.");
+}
+union_selection = other_value.union_selection;
+}
+
+WriteDataByIdentifierResponse::WriteDataByIdentifierResponse()
+{
+union_selection = UNBOUND_VALUE;
+}
+
+WriteDataByIdentifierResponse::WriteDataByIdentifierResponse(const WriteDataByIdentifierResponse& other_value)
+: Base_Type(){
+copy_value(other_value);
+}
+
+WriteDataByIdentifierResponse::~WriteDataByIdentifierResponse()
+{
+clean_up();
+}
+
+WriteDataByIdentifierResponse& WriteDataByIdentifierResponse::operator=(const WriteDataByIdentifierResponse& other_value)
+{
+if (this != &other_value) {
+clean_up();
+copy_value(other_value);
+}
+return *this;
+}
+
+boolean WriteDataByIdentifierResponse::operator==(const WriteDataByIdentifierResponse& other_value) const
+{
+if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse.");
+if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse.");
+if (union_selection != other_value.union_selection) return FALSE;
+switch (union_selection) {
+case ALT_writeDataByIdentifier1:
+return *field_writeDataByIdentifier1 == *other_value.field_writeDataByIdentifier1;
+case ALT_writeDataByIdentifier2:
+return *field_writeDataByIdentifier2 == *other_value.field_writeDataByIdentifier2;
+case ALT_writeDataByIdentifier3:
+return *field_writeDataByIdentifier3 == *other_value.field_writeDataByIdentifier3;
+default:
+return FALSE;
+}
+}
+
+WriteDataByIdentifierResponse1& WriteDataByIdentifierResponse::writeDataByIdentifier1()
+{
+if (union_selection != ALT_writeDataByIdentifier1) {
+clean_up();
+field_writeDataByIdentifier1 = new WriteDataByIdentifierResponse1;
+union_selection = ALT_writeDataByIdentifier1;
+}
+return *field_writeDataByIdentifier1;
+}
+
+const WriteDataByIdentifierResponse1& WriteDataByIdentifierResponse::writeDataByIdentifier1() const
+{
+if (union_selection != ALT_writeDataByIdentifier1) TTCN_error("Using non-selected field writeDataByIdentifier1 in a value of union type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse.");
+return *field_writeDataByIdentifier1;
+}
+
+WriteDataByIdentifierResponse2& WriteDataByIdentifierResponse::writeDataByIdentifier2()
+{
+if (union_selection != ALT_writeDataByIdentifier2) {
+clean_up();
+field_writeDataByIdentifier2 = new WriteDataByIdentifierResponse2;
+union_selection = ALT_writeDataByIdentifier2;
+}
+return *field_writeDataByIdentifier2;
+}
+
+const WriteDataByIdentifierResponse2& WriteDataByIdentifierResponse::writeDataByIdentifier2() const
+{
+if (union_selection != ALT_writeDataByIdentifier2) TTCN_error("Using non-selected field writeDataByIdentifier2 in a value of union type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse.");
+return *field_writeDataByIdentifier2;
+}
+
+WriteDataByIdentifierResponse3& WriteDataByIdentifierResponse::writeDataByIdentifier3()
+{
+if (union_selection != ALT_writeDataByIdentifier3) {
+clean_up();
+field_writeDataByIdentifier3 = new WriteDataByIdentifierResponse3;
+union_selection = ALT_writeDataByIdentifier3;
+}
+return *field_writeDataByIdentifier3;
+}
+
+const WriteDataByIdentifierResponse3& WriteDataByIdentifierResponse::writeDataByIdentifier3() const
+{
+if (union_selection != ALT_writeDataByIdentifier3) TTCN_error("Using non-selected field writeDataByIdentifier3 in a value of union type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse.");
+return *field_writeDataByIdentifier3;
+}
+
+boolean WriteDataByIdentifierResponse::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 @UnifiedDiagnosticServices.WriteDataByIdentifierResponse.");
+return union_selection == checked_selection;
+}
+
+boolean WriteDataByIdentifierResponse::is_bound() const
+{
+  return union_selection != UNBOUND_VALUE;
+}
+
+boolean WriteDataByIdentifierResponse::is_value() const
+{
+switch (union_selection) {
+case UNBOUND_VALUE: return FALSE;
+case ALT_writeDataByIdentifier1: return field_writeDataByIdentifier1->is_value();
+case ALT_writeDataByIdentifier2: return field_writeDataByIdentifier2->is_value();
+case ALT_writeDataByIdentifier3: return field_writeDataByIdentifier3->is_value();
+default: TTCN_error("Invalid selection in union is_bound");}
+}
+
+void WriteDataByIdentifierResponse::clean_up()
+{
+switch (union_selection) {
+case ALT_writeDataByIdentifier1:
+  delete field_writeDataByIdentifier1;
+  break;
+case ALT_writeDataByIdentifier2:
+  delete field_writeDataByIdentifier2;
+  break;
+case ALT_writeDataByIdentifier3:
+  delete field_writeDataByIdentifier3;
+  break;
+default:
+  break;
+}
+union_selection = UNBOUND_VALUE;
+}
+
+void WriteDataByIdentifierResponse::log() const
+{
+switch (union_selection) {
+case ALT_writeDataByIdentifier1:
+TTCN_Logger::log_event_str("{ writeDataByIdentifier1 := ");
+field_writeDataByIdentifier1->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_writeDataByIdentifier2:
+TTCN_Logger::log_event_str("{ writeDataByIdentifier2 := ");
+field_writeDataByIdentifier2->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_writeDataByIdentifier3:
+TTCN_Logger::log_event_str("{ writeDataByIdentifier3 := ");
+field_writeDataByIdentifier3->log();
+TTCN_Logger::log_event_str(" }");
+break;
+default:
+TTCN_Logger::log_event_unbound();
+}
+}
+
+void WriteDataByIdentifierResponse::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, "writeDataByIdentifier1")) {
+    writeDataByIdentifier1().set_param(*mp_last);
+    if (!writeDataByIdentifier1().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "writeDataByIdentifier2")) {
+    writeDataByIdentifier2().set_param(*mp_last);
+    if (!writeDataByIdentifier2().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "writeDataByIdentifier3")) {
+    writeDataByIdentifier3().set_param(*mp_last);
+    if (!writeDataByIdentifier3().is_bound()) clean_up();
+    return;
+  }
+  mp_last->error("Field %s does not exist in type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse.", last_name);
+}
+
+void WriteDataByIdentifierResponse::set_implicit_omit()
+{
+switch (union_selection) {
+case ALT_writeDataByIdentifier1:
+field_writeDataByIdentifier1->set_implicit_omit(); break;
+case ALT_writeDataByIdentifier2:
+field_writeDataByIdentifier2->set_implicit_omit(); break;
+case ALT_writeDataByIdentifier3:
+field_writeDataByIdentifier3->set_implicit_omit(); break;
+default: break;
+}
+}
+
+void WriteDataByIdentifierResponse::encode_text(Text_Buf& text_buf) const
+{
+text_buf.push_int(union_selection);
+switch (union_selection) {
+case ALT_writeDataByIdentifier1:
+field_writeDataByIdentifier1->encode_text(text_buf);
+break;
+case ALT_writeDataByIdentifier2:
+field_writeDataByIdentifier2->encode_text(text_buf);
+break;
+case ALT_writeDataByIdentifier3:
+field_writeDataByIdentifier3->encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an unbound value of union type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse.");
+}
+}
+
+void WriteDataByIdentifierResponse::decode_text(Text_Buf& text_buf)
+{
+switch ((union_selection_type)text_buf.pull_int().get_val()) {
+case ALT_writeDataByIdentifier1:
+writeDataByIdentifier1().decode_text(text_buf);
+break;
+case ALT_writeDataByIdentifier2:
+writeDataByIdentifier2().decode_text(text_buf);
+break;
+case ALT_writeDataByIdentifier3:
+writeDataByIdentifier3().decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse.");
+}
+}
+
+void WriteDataByIdentifierResponse::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void WriteDataByIdentifierResponse::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int WriteDataByIdentifierResponse::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, WriteDataByIdentifierResponse1_descr_.raw->forceomit);
+      decoded_length = writeDataByIdentifier1().RAW_decode(WriteDataByIdentifierResponse1_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, WriteDataByIdentifierResponse2_descr_.raw->forceomit);
+      decoded_length = writeDataByIdentifier2().RAW_decode(WriteDataByIdentifierResponse2_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, WriteDataByIdentifierResponse3_descr_.raw->forceomit);
+      decoded_length = writeDataByIdentifier3().RAW_decode(WriteDataByIdentifierResponse3_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 {
+    boolean already_failed = FALSE;
+    already_failed = FALSE;
+    if (!already_failed) {
+      OCTETSTRING temporal_0;
+      int decoded_0_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_0_length = temporal_0.RAW_decode(WriteDataByIdentifierResponse1_identifier_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_0_length > 0) {
+        if (temporal_0 ==  os_7) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(0, force_omit, WriteDataByIdentifierResponse1_descr_.raw->forceomit);
+          decoded_length = writeDataByIdentifier1().RAW_decode(WriteDataByIdentifierResponse1_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_writeDataByIdentifier1).identifier() ==  os_7) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      OCTETSTRING temporal_1;
+      int decoded_1_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_1_length = temporal_1.RAW_decode(WriteDataByIdentifierResponse2_identifier_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_1_length > 0) {
+        if (temporal_1 ==  os_8) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(1, force_omit, WriteDataByIdentifierResponse2_descr_.raw->forceomit);
+          decoded_length = writeDataByIdentifier2().RAW_decode(WriteDataByIdentifierResponse2_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_writeDataByIdentifier2).identifier() ==  os_8) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      OCTETSTRING temporal_2;
+      int decoded_2_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_2_length = temporal_2.RAW_decode(WriteDataByIdentifierResponse3_identifier_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_2_length > 0) {
+        if (temporal_2 ==  os_9) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(2, force_omit, WriteDataByIdentifierResponse3_descr_.raw->forceomit);
+          decoded_length = writeDataByIdentifier3().RAW_decode(WriteDataByIdentifierResponse3_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_writeDataByIdentifier3).identifier() ==  os_9) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+ }
+ clean_up();
+ return -1;
+}
+
+int WriteDataByIdentifierResponse::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_writeDataByIdentifier1:
+    myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 0, WriteDataByIdentifierResponse1_descr_.raw);
+    encoded_length = field_writeDataByIdentifier1->RAW_encode(WriteDataByIdentifierResponse1_descr_, *myleaf.body.node.nodes[0]);
+    myleaf.body.node.nodes[0]->coding_descr = &WriteDataByIdentifierResponse1_descr_;
+    if ((*field_writeDataByIdentifier1).identifier() !=  os_7) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={0,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   os_7.RAW_encode(WriteDataByIdentifierResponse1_identifier_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);
+  }
+    }
+    break;
+  case ALT_writeDataByIdentifier2:
+    myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 1, WriteDataByIdentifierResponse2_descr_.raw);
+    encoded_length = field_writeDataByIdentifier2->RAW_encode(WriteDataByIdentifierResponse2_descr_, *myleaf.body.node.nodes[1]);
+    myleaf.body.node.nodes[1]->coding_descr = &WriteDataByIdentifierResponse2_descr_;
+    if ((*field_writeDataByIdentifier2).identifier() !=  os_8) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={1,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   os_8.RAW_encode(WriteDataByIdentifierResponse2_identifier_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);
+  }
+    }
+    break;
+  case ALT_writeDataByIdentifier3:
+    myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 2, WriteDataByIdentifierResponse3_descr_.raw);
+    encoded_length = field_writeDataByIdentifier3->RAW_encode(WriteDataByIdentifierResponse3_descr_, *myleaf.body.node.nodes[2]);
+    myleaf.body.node.nodes[2]->coding_descr = &WriteDataByIdentifierResponse3_descr_;
+    if ((*field_writeDataByIdentifier3).identifier() !=  os_9) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={2,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   os_9.RAW_encode(WriteDataByIdentifierResponse3_identifier_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);
+  }
+    }
+    break;
+  default:
+    TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
+  }
+  return encoded_length;
+}
+
+void WriteDataByIdentifierResponse_template::copy_value(const WriteDataByIdentifierResponse& other_value)
+{
+single_value.union_selection = other_value.get_selection();
+switch (single_value.union_selection) {
+case WriteDataByIdentifierResponse::ALT_writeDataByIdentifier1:
+single_value.field_writeDataByIdentifier1 = new WriteDataByIdentifierResponse1_template(other_value.writeDataByIdentifier1());
+break;
+case WriteDataByIdentifierResponse::ALT_writeDataByIdentifier2:
+single_value.field_writeDataByIdentifier2 = new WriteDataByIdentifierResponse2_template(other_value.writeDataByIdentifier2());
+break;
+case WriteDataByIdentifierResponse::ALT_writeDataByIdentifier3:
+single_value.field_writeDataByIdentifier3 = new WriteDataByIdentifierResponse3_template(other_value.writeDataByIdentifier3());
+break;
+default:
+TTCN_error("Initializing a template with an unbound value of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse.");
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void WriteDataByIdentifierResponse_template::copy_template(const WriteDataByIdentifierResponse_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 WriteDataByIdentifierResponse::ALT_writeDataByIdentifier1:
+single_value.field_writeDataByIdentifier1 = new WriteDataByIdentifierResponse1_template(*other_value.single_value.field_writeDataByIdentifier1);
+break;
+case WriteDataByIdentifierResponse::ALT_writeDataByIdentifier2:
+single_value.field_writeDataByIdentifier2 = new WriteDataByIdentifierResponse2_template(*other_value.single_value.field_writeDataByIdentifier2);
+break;
+case WriteDataByIdentifierResponse::ALT_writeDataByIdentifier3:
+single_value.field_writeDataByIdentifier3 = new WriteDataByIdentifierResponse3_template(*other_value.single_value.field_writeDataByIdentifier3);
+break;
+default:
+TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse.");
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new WriteDataByIdentifierResponse_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;
+default:
+TTCN_error("Copying an uninitialized template of union type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse.");
+}
+set_selection(other_value);
+}
+
+WriteDataByIdentifierResponse_template::WriteDataByIdentifierResponse_template()
+{
+}
+
+WriteDataByIdentifierResponse_template::WriteDataByIdentifierResponse_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+WriteDataByIdentifierResponse_template::WriteDataByIdentifierResponse_template(const WriteDataByIdentifierResponse& other_value)
+{
+copy_value(other_value);
+}
+
+WriteDataByIdentifierResponse_template::WriteDataByIdentifierResponse_template(const OPTIONAL<WriteDataByIdentifierResponse>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const WriteDataByIdentifierResponse&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of union type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse from an unbound optional field.");
+}
+}
+
+WriteDataByIdentifierResponse_template::WriteDataByIdentifierResponse_template(const WriteDataByIdentifierResponse_template& other_value)
+: Base_Template(){
+copy_template(other_value);
+}
+
+WriteDataByIdentifierResponse_template::~WriteDataByIdentifierResponse_template()
+{
+clean_up();
+}
+
+void WriteDataByIdentifierResponse_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case WriteDataByIdentifierResponse::ALT_writeDataByIdentifier1:
+delete single_value.field_writeDataByIdentifier1;
+break;
+case WriteDataByIdentifierResponse::ALT_writeDataByIdentifier2:
+delete single_value.field_writeDataByIdentifier2;
+break;
+case WriteDataByIdentifierResponse::ALT_writeDataByIdentifier3:
+delete single_value.field_writeDataByIdentifier3;
+default:
+break;
+}
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+WriteDataByIdentifierResponse_template& WriteDataByIdentifierResponse_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+WriteDataByIdentifierResponse_template& WriteDataByIdentifierResponse_template::operator=(const WriteDataByIdentifierResponse& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+WriteDataByIdentifierResponse_template& WriteDataByIdentifierResponse_template::operator=(const OPTIONAL<WriteDataByIdentifierResponse>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const WriteDataByIdentifierResponse&)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 @UnifiedDiagnosticServices.WriteDataByIdentifierResponse.");
+}
+return *this;
+}
+
+WriteDataByIdentifierResponse_template& WriteDataByIdentifierResponse_template::operator=(const WriteDataByIdentifierResponse_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean WriteDataByIdentifierResponse_template::match(const WriteDataByIdentifierResponse& 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:
+{
+WriteDataByIdentifierResponse::union_selection_type value_selection = other_value.get_selection();
+if (value_selection == WriteDataByIdentifierResponse::UNBOUND_VALUE) return FALSE;
+if (value_selection != single_value.union_selection) return FALSE;
+switch (value_selection) {
+case WriteDataByIdentifierResponse::ALT_writeDataByIdentifier1:
+return single_value.field_writeDataByIdentifier1->match(other_value.writeDataByIdentifier1(), legacy);
+case WriteDataByIdentifierResponse::ALT_writeDataByIdentifier2:
+return single_value.field_writeDataByIdentifier2->match(other_value.writeDataByIdentifier2(), legacy);
+case WriteDataByIdentifierResponse::ALT_writeDataByIdentifier3:
+return single_value.field_writeDataByIdentifier3->match(other_value.writeDataByIdentifier3(), legacy);
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse.");
+}
+}
+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;
+default:
+TTCN_error ("Matching an uninitialized template of union type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse.");
+}
+return FALSE;
+}
+
+boolean WriteDataByIdentifierResponse_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+switch (single_value.union_selection) {
+case WriteDataByIdentifierResponse::ALT_writeDataByIdentifier1:
+return single_value.field_writeDataByIdentifier1->is_value();
+case WriteDataByIdentifierResponse::ALT_writeDataByIdentifier2:
+return single_value.field_writeDataByIdentifier2->is_value();
+case WriteDataByIdentifierResponse::ALT_writeDataByIdentifier3:
+return single_value.field_writeDataByIdentifier3->is_value();
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse.");
+}
+}
+
+WriteDataByIdentifierResponse WriteDataByIdentifierResponse_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 @UnifiedDiagnosticServices.WriteDataByIdentifierResponse.");
+WriteDataByIdentifierResponse ret_val;
+switch (single_value.union_selection) {
+case WriteDataByIdentifierResponse::ALT_writeDataByIdentifier1:
+ret_val.writeDataByIdentifier1() = single_value.field_writeDataByIdentifier1->valueof();
+break;
+case WriteDataByIdentifierResponse::ALT_writeDataByIdentifier2:
+ret_val.writeDataByIdentifier2() = single_value.field_writeDataByIdentifier2->valueof();
+break;
+case WriteDataByIdentifierResponse::ALT_writeDataByIdentifier3:
+ret_val.writeDataByIdentifier3() = single_value.field_writeDataByIdentifier3->valueof();
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse.");
+}
+return ret_val;
+}
+
+WriteDataByIdentifierResponse_template& WriteDataByIdentifierResponse_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse.");
+return value_list.list_value[list_index];
+}
+void WriteDataByIdentifierResponse_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error ("Internal error: Setting an invalid list for a template of union type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new WriteDataByIdentifierResponse_template[list_length];
+}
+
+WriteDataByIdentifierResponse1_template& WriteDataByIdentifierResponse_template::writeDataByIdentifier1()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != WriteDataByIdentifierResponse::ALT_writeDataByIdentifier1) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_writeDataByIdentifier1 = new WriteDataByIdentifierResponse1_template(ANY_VALUE);
+else single_value.field_writeDataByIdentifier1 = new WriteDataByIdentifierResponse1_template;
+single_value.union_selection = WriteDataByIdentifierResponse::ALT_writeDataByIdentifier1;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_writeDataByIdentifier1;
+}
+
+const WriteDataByIdentifierResponse1_template& WriteDataByIdentifierResponse_template::writeDataByIdentifier1() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field writeDataByIdentifier1 in a non-specific template of union type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse.");
+if (single_value.union_selection != WriteDataByIdentifierResponse::ALT_writeDataByIdentifier1) TTCN_error("Accessing non-selected field writeDataByIdentifier1 in a template of union type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse.");
+return *single_value.field_writeDataByIdentifier1;
+}
+
+WriteDataByIdentifierResponse2_template& WriteDataByIdentifierResponse_template::writeDataByIdentifier2()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != WriteDataByIdentifierResponse::ALT_writeDataByIdentifier2) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_writeDataByIdentifier2 = new WriteDataByIdentifierResponse2_template(ANY_VALUE);
+else single_value.field_writeDataByIdentifier2 = new WriteDataByIdentifierResponse2_template;
+single_value.union_selection = WriteDataByIdentifierResponse::ALT_writeDataByIdentifier2;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_writeDataByIdentifier2;
+}
+
+const WriteDataByIdentifierResponse2_template& WriteDataByIdentifierResponse_template::writeDataByIdentifier2() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field writeDataByIdentifier2 in a non-specific template of union type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse.");
+if (single_value.union_selection != WriteDataByIdentifierResponse::ALT_writeDataByIdentifier2) TTCN_error("Accessing non-selected field writeDataByIdentifier2 in a template of union type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse.");
+return *single_value.field_writeDataByIdentifier2;
+}
+
+WriteDataByIdentifierResponse3_template& WriteDataByIdentifierResponse_template::writeDataByIdentifier3()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != WriteDataByIdentifierResponse::ALT_writeDataByIdentifier3) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_writeDataByIdentifier3 = new WriteDataByIdentifierResponse3_template(ANY_VALUE);
+else single_value.field_writeDataByIdentifier3 = new WriteDataByIdentifierResponse3_template;
+single_value.union_selection = WriteDataByIdentifierResponse::ALT_writeDataByIdentifier3;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_writeDataByIdentifier3;
+}
+
+const WriteDataByIdentifierResponse3_template& WriteDataByIdentifierResponse_template::writeDataByIdentifier3() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field writeDataByIdentifier3 in a non-specific template of union type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse.");
+if (single_value.union_selection != WriteDataByIdentifierResponse::ALT_writeDataByIdentifier3) TTCN_error("Accessing non-selected field writeDataByIdentifier3 in a template of union type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse.");
+return *single_value.field_writeDataByIdentifier3;
+}
+
+boolean WriteDataByIdentifierResponse_template::ischosen(WriteDataByIdentifierResponse::union_selection_type checked_selection) const
+{
+if (checked_selection == WriteDataByIdentifierResponse::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse.");
+switch (template_selection) {
+case SPECIFIC_VALUE:
+if (single_value.union_selection == WriteDataByIdentifierResponse::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse.");
+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 @UnifiedDiagnosticServices.WriteDataByIdentifierResponse 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 WriteDataByIdentifierResponse_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case WriteDataByIdentifierResponse::ALT_writeDataByIdentifier1:
+TTCN_Logger::log_event_str("{ writeDataByIdentifier1 := ");
+single_value.field_writeDataByIdentifier1->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case WriteDataByIdentifierResponse::ALT_writeDataByIdentifier2:
+TTCN_Logger::log_event_str("{ writeDataByIdentifier2 := ");
+single_value.field_writeDataByIdentifier2->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case WriteDataByIdentifierResponse::ALT_writeDataByIdentifier3:
+TTCN_Logger::log_event_str("{ writeDataByIdentifier3 := ");
+single_value.field_writeDataByIdentifier3->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 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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void WriteDataByIdentifierResponse_template::log_match(const WriteDataByIdentifierResponse& 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()) {
+switch (single_value.union_selection) {
+case WriteDataByIdentifierResponse::ALT_writeDataByIdentifier1:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".writeDataByIdentifier1");
+single_value.field_writeDataByIdentifier1->log_match(match_value.writeDataByIdentifier1(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ writeDataByIdentifier1 := ");
+single_value.field_writeDataByIdentifier1->log_match(match_value.writeDataByIdentifier1(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case WriteDataByIdentifierResponse::ALT_writeDataByIdentifier2:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".writeDataByIdentifier2");
+single_value.field_writeDataByIdentifier2->log_match(match_value.writeDataByIdentifier2(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ writeDataByIdentifier2 := ");
+single_value.field_writeDataByIdentifier2->log_match(match_value.writeDataByIdentifier2(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case WriteDataByIdentifierResponse::ALT_writeDataByIdentifier3:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".writeDataByIdentifier3");
+single_value.field_writeDataByIdentifier3->log_match(match_value.writeDataByIdentifier3(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ writeDataByIdentifier3 := ");
+single_value.field_writeDataByIdentifier3->log_match(match_value.writeDataByIdentifier3(), 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 WriteDataByIdentifierResponse_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 WriteDataByIdentifierResponse::ALT_writeDataByIdentifier1:
+single_value.field_writeDataByIdentifier1->encode_text(text_buf);
+break;
+case WriteDataByIdentifierResponse::ALT_writeDataByIdentifier2:
+single_value.field_writeDataByIdentifier2->encode_text(text_buf);
+break;
+case WriteDataByIdentifierResponse::ALT_writeDataByIdentifier3:
+single_value.field_writeDataByIdentifier3->encode_text(text_buf);
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse.");
+}
+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 @UnifiedDiagnosticServices.WriteDataByIdentifierResponse.");
+}
+}
+
+void WriteDataByIdentifierResponse_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+{
+single_value.union_selection = WriteDataByIdentifierResponse::UNBOUND_VALUE;
+WriteDataByIdentifierResponse::union_selection_type new_selection = (WriteDataByIdentifierResponse::union_selection_type)text_buf.pull_int().get_val();
+switch (new_selection) {
+case WriteDataByIdentifierResponse::ALT_writeDataByIdentifier1:
+single_value.field_writeDataByIdentifier1 = new WriteDataByIdentifierResponse1_template;
+single_value.field_writeDataByIdentifier1->decode_text(text_buf);
+break;
+case WriteDataByIdentifierResponse::ALT_writeDataByIdentifier2:
+single_value.field_writeDataByIdentifier2 = new WriteDataByIdentifierResponse2_template;
+single_value.field_writeDataByIdentifier2->decode_text(text_buf);
+break;
+case WriteDataByIdentifierResponse::ALT_writeDataByIdentifier3:
+single_value.field_writeDataByIdentifier3 = new WriteDataByIdentifierResponse3_template;
+single_value.field_writeDataByIdentifier3->decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse.");
+}
+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 WriteDataByIdentifierResponse_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 @UnifiedDiagnosticServices.WriteDataByIdentifierResponse.");
+}
+}
+
+boolean WriteDataByIdentifierResponse_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean WriteDataByIdentifierResponse_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 WriteDataByIdentifierResponse_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 `@UnifiedDiagnosticServices.WriteDataByIdentifierResponse'");
+    }
+    if (strcmp("writeDataByIdentifier1", param_field) == 0) {
+      writeDataByIdentifier1().set_param(param);
+      return;
+    } else if (strcmp("writeDataByIdentifier2", param_field) == 0) {
+      writeDataByIdentifier2().set_param(param);
+      return;
+    } else if (strcmp("writeDataByIdentifier3", param_field) == 0) {
+      writeDataByIdentifier3().set_param(param);
+      return;
+    } else param.error("Field `%s' not found in union template type `@UnifiedDiagnosticServices.WriteDataByIdentifierResponse'", 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: {
+    WriteDataByIdentifierResponse_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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", "@UnifiedDiagnosticServices.WriteDataByIdentifierResponse");
+    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, "writeDataByIdentifier1")) {
+      writeDataByIdentifier1().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "writeDataByIdentifier2")) {
+      writeDataByIdentifier2().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "writeDataByIdentifier3")) {
+      writeDataByIdentifier3().set_param(*mp_last);
+      break;
+    }
+    mp_last->error("Field %s does not exist in type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse.", last_name);
+  } break;
+  default:
+    param.type_error("union template", "@UnifiedDiagnosticServices.WriteDataByIdentifierResponse");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void WriteDataByIdentifierResponse_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 WriteDataByIdentifierResponse::ALT_writeDataByIdentifier1:
+single_value.field_writeDataByIdentifier1->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.WriteDataByIdentifierResponse");
+return;
+case WriteDataByIdentifierResponse::ALT_writeDataByIdentifier2:
+single_value.field_writeDataByIdentifier2->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.WriteDataByIdentifierResponse");
+return;
+case WriteDataByIdentifierResponse::ALT_writeDataByIdentifier3:
+single_value.field_writeDataByIdentifier3->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.WriteDataByIdentifierResponse");
+return;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @UnifiedDiagnosticServices.WriteDataByIdentifierResponse.");
+}
+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 : "@UnifiedDiagnosticServices.WriteDataByIdentifierResponse");
+}
+
+WriteDataByIdentifierResponseSID::WriteDataByIdentifierResponseSID()
+{
+}
+
+WriteDataByIdentifierResponseSID::WriteDataByIdentifierResponseSID(const OCTETSTRING& par_sid,
+    const WriteDataByIdentifierResponse& par_writeDataByIdentifierResponse)
+  :   field_sid(par_sid),
+  field_writeDataByIdentifierResponse(par_writeDataByIdentifierResponse)
+{
+}
+
+WriteDataByIdentifierResponseSID::WriteDataByIdentifierResponseSID(const WriteDataByIdentifierResponseSID& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponseSID.");
+if (other_value.sid().is_bound()) field_sid = other_value.sid();
+else field_sid.clean_up();
+if (other_value.writeDataByIdentifierResponse().is_bound()) field_writeDataByIdentifierResponse = other_value.writeDataByIdentifierResponse();
+else field_writeDataByIdentifierResponse.clean_up();
+}
+
+void WriteDataByIdentifierResponseSID::clean_up()
+{
+field_sid.clean_up();
+field_writeDataByIdentifierResponse.clean_up();
+}
+
+const TTCN_Typedescriptor_t* WriteDataByIdentifierResponseSID::get_descriptor() const { return &WriteDataByIdentifierResponseSID_descr_; }
+WriteDataByIdentifierResponseSID& WriteDataByIdentifierResponseSID::operator=(const WriteDataByIdentifierResponseSID& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponseSID.");
+  if (other_value.sid().is_bound()) field_sid = other_value.sid();
+  else field_sid.clean_up();
+  if (other_value.writeDataByIdentifierResponse().is_bound()) field_writeDataByIdentifierResponse = other_value.writeDataByIdentifierResponse();
+  else field_writeDataByIdentifierResponse.clean_up();
+}
+return *this;
+}
+
+boolean WriteDataByIdentifierResponseSID::operator==(const WriteDataByIdentifierResponseSID& other_value) const
+{
+return field_sid==other_value.field_sid
+  && field_writeDataByIdentifierResponse==other_value.field_writeDataByIdentifierResponse;
+}
+
+boolean WriteDataByIdentifierResponseSID::is_bound() const
+{
+return (field_sid.is_bound())
+  || (field_writeDataByIdentifierResponse.is_bound());
+}
+boolean WriteDataByIdentifierResponseSID::is_value() const
+{
+return field_sid.is_value()
+  && field_writeDataByIdentifierResponse.is_value();
+}
+void WriteDataByIdentifierResponseSID::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ sid := ");
+field_sid.log();
+TTCN_Logger::log_event_str(", writeDataByIdentifierResponse := ");
+field_writeDataByIdentifierResponse.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void WriteDataByIdentifierResponseSID::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 @UnifiedDiagnosticServices.WriteDataByIdentifierResponseSID 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) sid().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) writeDataByIdentifierResponse().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(), "sid")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          sid().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(), "writeDataByIdentifierResponse")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          writeDataByIdentifierResponse().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 @UnifiedDiagnosticServices.WriteDataByIdentifierResponseSID: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.WriteDataByIdentifierResponseSID");
+  }
+}
+
+void WriteDataByIdentifierResponseSID::set_implicit_omit()
+{
+if (sid().is_bound()) sid().set_implicit_omit();
+if (writeDataByIdentifierResponse().is_bound()) writeDataByIdentifierResponse().set_implicit_omit();
+}
+
+void WriteDataByIdentifierResponseSID::encode_text(Text_Buf& text_buf) const
+{
+field_sid.encode_text(text_buf);
+field_writeDataByIdentifierResponse.encode_text(text_buf);
+}
+
+void WriteDataByIdentifierResponseSID::decode_text(Text_Buf& text_buf)
+{
+field_sid.decode_text(text_buf);
+field_writeDataByIdentifierResponse.decode_text(text_buf);
+}
+
+void WriteDataByIdentifierResponseSID::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void WriteDataByIdentifierResponseSID::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int WriteDataByIdentifierResponseSID::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, WriteDataByIdentifierResponseSID_sid_descr_.raw->forceomit);
+  decoded_field_length = field_sid.RAW_decode(WriteDataByIdentifierResponseSID_sid_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, WriteDataByIdentifierResponse_descr_.raw->forceomit);
+  decoded_field_length = field_writeDataByIdentifierResponse.RAW_decode(WriteDataByIdentifierResponse_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 WriteDataByIdentifierResponseSID::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, WriteDataByIdentifierResponseSID_sid_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, WriteDataByIdentifierResponse_descr_.raw);
+  encoded_length += field_sid.RAW_encode(WriteDataByIdentifierResponseSID_sid_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_writeDataByIdentifierResponse.RAW_encode(WriteDataByIdentifierResponse_descr_, *myleaf.body.node.nodes[1]);
+  return myleaf.length = encoded_length;
+}
+
+struct WriteDataByIdentifierResponseSID_template::single_value_struct {
+OCTETSTRING_template field_sid;
+WriteDataByIdentifierResponse_template field_writeDataByIdentifierResponse;
+};
+
+void WriteDataByIdentifierResponseSID_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_sid = ANY_VALUE;
+single_value->field_writeDataByIdentifierResponse = ANY_VALUE;
+}
+}
+}
+
+void WriteDataByIdentifierResponseSID_template::copy_value(const WriteDataByIdentifierResponseSID& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.sid().is_bound()) {
+  single_value->field_sid = other_value.sid();
+} else {
+  single_value->field_sid.clean_up();
+}
+if (other_value.writeDataByIdentifierResponse().is_bound()) {
+  single_value->field_writeDataByIdentifierResponse = other_value.writeDataByIdentifierResponse();
+} else {
+  single_value->field_writeDataByIdentifierResponse.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void WriteDataByIdentifierResponseSID_template::copy_template(const WriteDataByIdentifierResponseSID_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.sid().get_selection()) {
+single_value->field_sid = other_value.sid();
+} else {
+single_value->field_sid.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.writeDataByIdentifierResponse().get_selection()) {
+single_value->field_writeDataByIdentifierResponse = other_value.writeDataByIdentifierResponse();
+} else {
+single_value->field_writeDataByIdentifierResponse.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new WriteDataByIdentifierResponseSID_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponseSID.");
+break;
+}
+set_selection(other_value);
+}
+
+WriteDataByIdentifierResponseSID_template::WriteDataByIdentifierResponseSID_template()
+{
+}
+
+WriteDataByIdentifierResponseSID_template::WriteDataByIdentifierResponseSID_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+WriteDataByIdentifierResponseSID_template::WriteDataByIdentifierResponseSID_template(const WriteDataByIdentifierResponseSID& other_value)
+{
+copy_value(other_value);
+}
+
+WriteDataByIdentifierResponseSID_template::WriteDataByIdentifierResponseSID_template(const OPTIONAL<WriteDataByIdentifierResponseSID>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const WriteDataByIdentifierResponseSID&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponseSID from an unbound optional field.");
+}
+}
+
+WriteDataByIdentifierResponseSID_template::WriteDataByIdentifierResponseSID_template(const WriteDataByIdentifierResponseSID_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+WriteDataByIdentifierResponseSID_template::~WriteDataByIdentifierResponseSID_template()
+{
+clean_up();
+}
+
+WriteDataByIdentifierResponseSID_template& WriteDataByIdentifierResponseSID_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+WriteDataByIdentifierResponseSID_template& WriteDataByIdentifierResponseSID_template::operator=(const WriteDataByIdentifierResponseSID& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+WriteDataByIdentifierResponseSID_template& WriteDataByIdentifierResponseSID_template::operator=(const OPTIONAL<WriteDataByIdentifierResponseSID>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const WriteDataByIdentifierResponseSID&)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 @UnifiedDiagnosticServices.WriteDataByIdentifierResponseSID.");
+}
+return *this;
+}
+
+WriteDataByIdentifierResponseSID_template& WriteDataByIdentifierResponseSID_template::operator=(const WriteDataByIdentifierResponseSID_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean WriteDataByIdentifierResponseSID_template::match(const WriteDataByIdentifierResponseSID& 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.sid().is_bound()) return FALSE;
+if(!single_value->field_sid.match(other_value.sid(), legacy))return FALSE;
+if(!other_value.writeDataByIdentifierResponse().is_bound()) return FALSE;
+if(!single_value->field_writeDataByIdentifierResponse.match(other_value.writeDataByIdentifierResponse(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponseSID.");
+}
+return FALSE;
+}
+
+boolean WriteDataByIdentifierResponseSID_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_sid.is_bound()
+
+ ||single_value->field_writeDataByIdentifierResponse.is_bound()
+;
+}
+
+boolean WriteDataByIdentifierResponseSID_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_sid.is_value()
+ &&single_value->field_writeDataByIdentifierResponse.is_value();
+}
+
+void WriteDataByIdentifierResponseSID_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+WriteDataByIdentifierResponseSID WriteDataByIdentifierResponseSID_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 @UnifiedDiagnosticServices.WriteDataByIdentifierResponseSID.");
+WriteDataByIdentifierResponseSID ret_val;
+if (single_value->field_sid.is_bound()) {
+ret_val.sid() = single_value->field_sid.valueof();
+}
+if (single_value->field_writeDataByIdentifierResponse.is_bound()) {
+ret_val.writeDataByIdentifierResponse() = single_value->field_writeDataByIdentifierResponse.valueof();
+}
+return ret_val;
+}
+
+void WriteDataByIdentifierResponseSID_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponseSID.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new WriteDataByIdentifierResponseSID_template[list_length];
+}
+
+WriteDataByIdentifierResponseSID_template& WriteDataByIdentifierResponseSID_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponseSID.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponseSID.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& WriteDataByIdentifierResponseSID_template::sid()
+{
+set_specific();
+return single_value->field_sid;
+}
+
+const OCTETSTRING_template& WriteDataByIdentifierResponseSID_template::sid() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field sid of a non-specific template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponseSID.");
+return single_value->field_sid;
+}
+
+WriteDataByIdentifierResponse_template& WriteDataByIdentifierResponseSID_template::writeDataByIdentifierResponse()
+{
+set_specific();
+return single_value->field_writeDataByIdentifierResponse;
+}
+
+const WriteDataByIdentifierResponse_template& WriteDataByIdentifierResponseSID_template::writeDataByIdentifierResponse() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field writeDataByIdentifierResponse of a non-specific template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponseSID.");
+return single_value->field_writeDataByIdentifierResponse;
+}
+
+int WriteDataByIdentifierResponseSID_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponseSID 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 @UnifiedDiagnosticServices.WriteDataByIdentifierResponseSID 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 @UnifiedDiagnosticServices.WriteDataByIdentifierResponseSID containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponseSID containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponseSID containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponseSID containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.WriteDataByIdentifierResponseSID.");
+  }
+  return 0;
+}
+
+void WriteDataByIdentifierResponseSID_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ sid := ");
+single_value->field_sid.log();
+TTCN_Logger::log_event_str(", writeDataByIdentifierResponse := ");
+single_value->field_writeDataByIdentifierResponse.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void WriteDataByIdentifierResponseSID_template::log_match(const WriteDataByIdentifierResponseSID& 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_sid.match(match_value.sid(), legacy)){
+TTCN_Logger::log_logmatch_info(".sid");
+single_value->field_sid.log_match(match_value.sid(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_writeDataByIdentifierResponse.match(match_value.writeDataByIdentifierResponse(), legacy)){
+TTCN_Logger::log_logmatch_info(".writeDataByIdentifierResponse");
+single_value->field_writeDataByIdentifierResponse.log_match(match_value.writeDataByIdentifierResponse(), 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("{ sid := ");
+single_value->field_sid.log_match(match_value.sid(), legacy);
+TTCN_Logger::log_event_str(", writeDataByIdentifierResponse := ");
+single_value->field_writeDataByIdentifierResponse.log_match(match_value.writeDataByIdentifierResponse(), 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 WriteDataByIdentifierResponseSID_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_sid.encode_text(text_buf);
+single_value->field_writeDataByIdentifierResponse.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 @UnifiedDiagnosticServices.WriteDataByIdentifierResponseSID.");
+}
+}
+
+void WriteDataByIdentifierResponseSID_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_sid.decode_text(text_buf);
+single_value->field_writeDataByIdentifierResponse.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 WriteDataByIdentifierResponseSID_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 @UnifiedDiagnosticServices.WriteDataByIdentifierResponseSID.");
+}
+}
+
+void WriteDataByIdentifierResponseSID_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: {
+    WriteDataByIdentifierResponseSID_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @UnifiedDiagnosticServices.WriteDataByIdentifierResponseSID 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) sid().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) writeDataByIdentifierResponse().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(), "sid")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          sid().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(), "writeDataByIdentifierResponse")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          writeDataByIdentifierResponse().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 @UnifiedDiagnosticServices.WriteDataByIdentifierResponseSID: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.WriteDataByIdentifierResponseSID");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void WriteDataByIdentifierResponseSID_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_sid.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.WriteDataByIdentifierResponseSID");
+single_value->field_writeDataByIdentifierResponse.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.WriteDataByIdentifierResponseSID");
+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 : "@UnifiedDiagnosticServices.WriteDataByIdentifierResponseSID");
+}
+
+boolean WriteDataByIdentifierResponseSID_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean WriteDataByIdentifierResponseSID_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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;
+}
+
+e__RequestSID::e__RequestSID()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+e__RequestSID::e__RequestSID(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @UnifiedDiagnosticServices.e_RequestSID with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+e__RequestSID::e__RequestSID(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+e__RequestSID::e__RequestSID(const e__RequestSID& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @UnifiedDiagnosticServices.e_RequestSID.");
+enum_value = other_value.enum_value;
+}
+
+e__RequestSID& e__RequestSID::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @UnifiedDiagnosticServices.e_RequestSID.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+e__RequestSID& e__RequestSID::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+e__RequestSID& e__RequestSID::operator=(const e__RequestSID& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @UnifiedDiagnosticServices.e_RequestSID.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean e__RequestSID::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.e_RequestSID.");
+return enum_value == other_value;
+}
+
+boolean e__RequestSID::operator==(const e__RequestSID& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.e_RequestSID.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.e_RequestSID.");
+return enum_value == other_value.enum_value;
+}
+
+boolean e__RequestSID::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.e_RequestSID.");
+return enum_value < other_value;
+}
+
+boolean e__RequestSID::operator<(const e__RequestSID& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.e_RequestSID.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.e_RequestSID.");
+return enum_value < other_value.enum_value;
+}
+
+boolean e__RequestSID::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.e_RequestSID.");
+return enum_value > other_value;
+}
+
+boolean e__RequestSID::operator>(const e__RequestSID& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.e_RequestSID.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.e_RequestSID.");
+return enum_value > other_value.enum_value;
+}
+
+const char *e__RequestSID::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case diagnosticSessionControl: return "diagnosticSessionControl";
+case ecuReset: return "ecuReset";
+case clearDiagnosticInformation: return "clearDiagnosticInformation";
+case readDTCInformation: return "readDTCInformation";
+case readDataByIdentifier: return "readDataByIdentifier";
+case readMemoryByAddress: return "readMemoryByAddress";
+case readScalingDataByIdentifier: return "readScalingDataByIdentifier";
+case securityAccess: return "securityAccess";
+case communicationControl: return "communicationControl";
+case readDataByPeriodicIdentifier: return "readDataByPeriodicIdentifier";
+case dynamicallyDefineDataIdentifier: return "dynamicallyDefineDataIdentifier";
+case writeDataByIdentifier: return "writeDataByIdentifier";
+case inputOutputControlByIdentifier: return "inputOutputControlByIdentifier";
+case routineControl: return "routineControl";
+case requestDownload: return "requestDownload";
+case requestUpload: return "requestUpload";
+case transferData: return "transferData";
+case requestTransferExit: return "requestTransferExit";
+case requestFileTransfer: return "requestFileTransfer";
+case writeMemoryByAddress: return "writeMemoryByAddress";
+case testerPresent: return "testerPresent";
+case accessTimingParameter: return "accessTimingParameter";
+case securedDataTransmission: return "securedDataTransmission";
+case controlDTCSetting: return "controlDTCSetting";
+case responseOnEvent: return "responseOnEvent";
+case linkControl: return "linkControl";
+default: return "<unknown>";
+}
+}
+
+e__RequestSID::enum_type e__RequestSID::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "diagnosticSessionControl")) return diagnosticSessionControl;
+else if (!strcmp(str_par, "ecuReset")) return ecuReset;
+else if (!strcmp(str_par, "clearDiagnosticInformation")) return clearDiagnosticInformation;
+else if (!strcmp(str_par, "readDTCInformation")) return readDTCInformation;
+else if (!strcmp(str_par, "readDataByIdentifier")) return readDataByIdentifier;
+else if (!strcmp(str_par, "readMemoryByAddress")) return readMemoryByAddress;
+else if (!strcmp(str_par, "readScalingDataByIdentifier")) return readScalingDataByIdentifier;
+else if (!strcmp(str_par, "securityAccess")) return securityAccess;
+else if (!strcmp(str_par, "communicationControl")) return communicationControl;
+else if (!strcmp(str_par, "readDataByPeriodicIdentifier")) return readDataByPeriodicIdentifier;
+else if (!strcmp(str_par, "dynamicallyDefineDataIdentifier")) return dynamicallyDefineDataIdentifier;
+else if (!strcmp(str_par, "writeDataByIdentifier")) return writeDataByIdentifier;
+else if (!strcmp(str_par, "inputOutputControlByIdentifier")) return inputOutputControlByIdentifier;
+else if (!strcmp(str_par, "routineControl")) return routineControl;
+else if (!strcmp(str_par, "requestDownload")) return requestDownload;
+else if (!strcmp(str_par, "requestUpload")) return requestUpload;
+else if (!strcmp(str_par, "transferData")) return transferData;
+else if (!strcmp(str_par, "requestTransferExit")) return requestTransferExit;
+else if (!strcmp(str_par, "requestFileTransfer")) return requestFileTransfer;
+else if (!strcmp(str_par, "writeMemoryByAddress")) return writeMemoryByAddress;
+else if (!strcmp(str_par, "testerPresent")) return testerPresent;
+else if (!strcmp(str_par, "accessTimingParameter")) return accessTimingParameter;
+else if (!strcmp(str_par, "securedDataTransmission")) return securedDataTransmission;
+else if (!strcmp(str_par, "controlDTCSetting")) return controlDTCSetting;
+else if (!strcmp(str_par, "responseOnEvent")) return responseOnEvent;
+else if (!strcmp(str_par, "linkControl")) return linkControl;
+else return UNKNOWN_VALUE;
+}
+
+boolean e__RequestSID::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 16:
+case 17:
+case 20:
+case 25:
+case 34:
+case 35:
+case 36:
+case 39:
+case 40:
+case 42:
+case 44:
+case 46:
+case 47:
+case 49:
+case 52:
+case 53:
+case 54:
+case 55:
+case 56:
+case 61:
+case 62:
+case 131:
+case 132:
+case 133:
+case 134:
+case 135:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int e__RequestSID::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @UnifiedDiagnosticServices.e_RequestSID.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int e__RequestSID::enum2int(const e__RequestSID& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @UnifiedDiagnosticServices.e_RequestSID.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void e__RequestSID::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @UnifiedDiagnosticServices.e_RequestSID.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+e__RequestSID::operator e__RequestSID::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @UnifiedDiagnosticServices.e_RequestSID.");
+return enum_value;
+}
+
+void e__RequestSID::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void e__RequestSID::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@UnifiedDiagnosticServices.e_RequestSID");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @UnifiedDiagnosticServices.e_RequestSID.");
+  }
+}
+
+void e__RequestSID::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @UnifiedDiagnosticServices.e_RequestSID.");
+text_buf.push_int(enum_value);
+}
+
+void e__RequestSID::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @UnifiedDiagnosticServices.e_RequestSID.", enum_value);
+}
+
+void e__RequestSID::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void e__RequestSID::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int e__RequestSID::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*)
+{
+  int decoded_value = 0;
+  int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 8, no_err);
+  if (decoded_length < 0) return decoded_length;
+  if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value;
+  else {
+    if(no_err){
+     return -1;
+    } else {
+    TTCN_EncDec_ErrorContext::error
+      (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name);
+    enum_value = UNKNOWN_VALUE;
+    }
+  }
+  return decoded_length;
+}
+
+int e__RequestSID::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const
+{
+  return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 8);
+}
+
+void e__RequestSID_template::copy_template(const e__RequestSID_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new e__RequestSID_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @UnifiedDiagnosticServices.e_RequestSID.");
+}
+}
+
+e__RequestSID_template::e__RequestSID_template()
+{
+}
+
+e__RequestSID_template::e__RequestSID_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+e__RequestSID_template::e__RequestSID_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!e__RequestSID::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @UnifiedDiagnosticServices.e_RequestSID with unknown numeric value %d.", other_value);
+single_value = (e__RequestSID::enum_type)other_value;
+}
+
+e__RequestSID_template::e__RequestSID_template(e__RequestSID::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+e__RequestSID_template::e__RequestSID_template(const e__RequestSID& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == e__RequestSID::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @UnifiedDiagnosticServices.e_RequestSID.");
+single_value = other_value.enum_value;
+}
+
+e__RequestSID_template::e__RequestSID_template(const OPTIONAL<e__RequestSID>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__RequestSID::enum_type)(const e__RequestSID&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @UnifiedDiagnosticServices.e_RequestSID from an unbound optional field.");
+}
+}
+
+e__RequestSID_template::e__RequestSID_template(const e__RequestSID_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+e__RequestSID_template::~e__RequestSID_template()
+{
+clean_up();
+}
+
+boolean e__RequestSID_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean e__RequestSID_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != e__RequestSID::UNBOUND_VALUE;
+}
+
+void e__RequestSID_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+e__RequestSID_template& e__RequestSID_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+e__RequestSID_template& e__RequestSID_template::operator=(int other_value)
+{
+if (!e__RequestSID::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @UnifiedDiagnosticServices.e_RequestSID.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (e__RequestSID::enum_type)other_value;
+return *this;
+}
+
+e__RequestSID_template& e__RequestSID_template::operator=(e__RequestSID::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+e__RequestSID_template& e__RequestSID_template::operator=(const e__RequestSID& other_value)
+{
+if (other_value.enum_value == e__RequestSID::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @UnifiedDiagnosticServices.e_RequestSID to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+e__RequestSID_template& e__RequestSID_template::operator=(const OPTIONAL<e__RequestSID>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__RequestSID::enum_type)(const e__RequestSID&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @UnifiedDiagnosticServices.e_RequestSID.");
+}
+return *this;
+}
+
+e__RequestSID_template& e__RequestSID_template::operator=(const e__RequestSID_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean e__RequestSID_template::match(e__RequestSID::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @UnifiedDiagnosticServices.e_RequestSID.");
+}
+return FALSE;
+}
+
+boolean e__RequestSID_template::match(const e__RequestSID& other_value, boolean) const
+{
+if (other_value.enum_value == e__RequestSID::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @UnifiedDiagnosticServices.e_RequestSID with an unbound value.");
+return match(other_value.enum_value);
+}
+
+e__RequestSID::enum_type e__RequestSID_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @UnifiedDiagnosticServices.e_RequestSID.");
+return single_value;
+}
+
+void e__RequestSID_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @UnifiedDiagnosticServices.e_RequestSID.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new e__RequestSID_template[list_length];
+}
+
+e__RequestSID_template& e__RequestSID_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @UnifiedDiagnosticServices.e_RequestSID.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @UnifiedDiagnosticServices.e_RequestSID.");
+return value_list.list_value[list_index];
+}
+
+void e__RequestSID_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(e__RequestSID::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void e__RequestSID_template::log_match(const e__RequestSID& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void e__RequestSID_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @UnifiedDiagnosticServices.e_RequestSID.");
+}
+}
+
+void e__RequestSID_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (e__RequestSID::enum_type)text_buf.pull_int().get_val();
+if (!e__RequestSID::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @UnifiedDiagnosticServices.e_RequestSID.", single_value);
+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 e__RequestSID_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @UnifiedDiagnosticServices.e_RequestSID.");
+}
+}
+
+boolean e__RequestSID_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean e__RequestSID_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 e__RequestSID_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    e__RequestSID_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    e__RequestSID::enum_type enum_val = e__RequestSID::str_to_enum(m_p->get_enumerated());
+    if (!e__RequestSID::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @UnifiedDiagnosticServices.e_RequestSID.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@UnifiedDiagnosticServices.e_RequestSID");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void e__RequestSID_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@UnifiedDiagnosticServices.e_RequestSID");
+}
+
+e__ResponseCode::e__ResponseCode()
+{
+enum_value = UNBOUND_VALUE;
+}
+
+e__ResponseCode::e__ResponseCode(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Initializing a variable of enumerated type @UnifiedDiagnosticServices.e_ResponseCode with invalid numeric value %d.", other_value);
+enum_value = (enum_type)other_value;
+}
+
+e__ResponseCode::e__ResponseCode(enum_type other_value)
+{
+enum_value = other_value;
+}
+
+e__ResponseCode::e__ResponseCode(const e__ResponseCode& other_value)
+: Base_Type()
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Copying an unbound value of enumerated type @UnifiedDiagnosticServices.e_ResponseCode.");
+enum_value = other_value.enum_value;
+}
+
+e__ResponseCode& e__ResponseCode::operator=(int other_value)
+{
+if (!is_valid_enum(other_value)) TTCN_error("Assigning unknown numeric value %d to a variable of enumerated type @UnifiedDiagnosticServices.e_ResponseCode.", other_value);
+enum_value = (enum_type)other_value;
+return *this;
+}
+
+e__ResponseCode& e__ResponseCode::operator=(enum_type other_value)
+{
+enum_value = other_value;
+return *this;
+}
+
+e__ResponseCode& e__ResponseCode::operator=(const e__ResponseCode& other_value)
+{
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @UnifiedDiagnosticServices.e_ResponseCode.");
+enum_value = other_value.enum_value;
+return *this;
+}
+
+boolean e__ResponseCode::operator==(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.e_ResponseCode.");
+return enum_value == other_value;
+}
+
+boolean e__ResponseCode::operator==(const e__ResponseCode& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.e_ResponseCode.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.e_ResponseCode.");
+return enum_value == other_value.enum_value;
+}
+
+boolean e__ResponseCode::operator<(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.e_ResponseCode.");
+return enum_value < other_value;
+}
+
+boolean e__ResponseCode::operator<(const e__ResponseCode& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.e_ResponseCode.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.e_ResponseCode.");
+return enum_value < other_value.enum_value;
+}
+
+boolean e__ResponseCode::operator>(enum_type other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.e_ResponseCode.");
+return enum_value > other_value;
+}
+
+boolean e__ResponseCode::operator>(const e__ResponseCode& other_value) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.e_ResponseCode.");
+if (other_value.enum_value == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of enumerated type @UnifiedDiagnosticServices.e_ResponseCode.");
+return enum_value > other_value.enum_value;
+}
+
+const char *e__ResponseCode::enum_to_str(enum_type enum_par)
+{
+switch (enum_par) {
+case generalReject: return "generalReject";
+case serviceNotSupported: return "serviceNotSupported";
+case subfunctionNotSupported: return "subfunctionNotSupported";
+case incorrectMessageLengthOrInvalidFormat: return "incorrectMessageLengthOrInvalidFormat";
+case responseTooLong: return "responseTooLong";
+case busyRepeatRequest: return "busyRepeatRequest";
+case conditionsNotCorrect: return "conditionsNotCorrect";
+case isosarReserved35: return "isosarReserved35";
+case requestSequenceError: return "requestSequenceError";
+case noResponseFromSubnetComponent: return "noResponseFromSubnetComponent";
+case failurePreventsExecutionOfRequestedAction: return "failurePreventsExecutionOfRequestedAction";
+case requestOutOfRange: return "requestOutOfRange";
+case isosarReserved50: return "isosarReserved50";
+case securityAccessDenied: return "securityAccessDenied";
+case isosarReserved52: return "isosarReserved52";
+case invalidKey: return "invalidKey";
+case exceededNumberOfAttempts: return "exceededNumberOfAttempts";
+case requiredTimeDelayNotExpired: return "requiredTimeDelayNotExpired";
+case uploadDownloadNotAccepted: return "uploadDownloadNotAccepted";
+case transferDataSuspended: return "transferDataSuspended";
+case generalProgrammingFailure: return "generalProgrammingFailure";
+case wrongBlockSequenceCounter: return "wrongBlockSequenceCounter";
+case requestCorrectlyReceivedResponsePending: return "requestCorrectlyReceivedResponsePending";
+case subfunctionNotSupportedInActiveSession: return "subfunctionNotSupportedInActiveSession";
+case serviceNotSupportedInActiveSession: return "serviceNotSupportedInActiveSession";
+case rpmTooHigh: return "rpmTooHigh";
+case rpmTooLow: return "rpmTooLow";
+case engineIsRunning: return "engineIsRunning";
+case engineIsNotRunning: return "engineIsNotRunning";
+case engineRunTimeTooLow: return "engineRunTimeTooLow";
+case temperatureTooHigh: return "temperatureTooHigh";
+case temperatureTooLow: return "temperatureTooLow";
+case vehicleSpeedTooHigh: return "vehicleSpeedTooHigh";
+case vehicleSpeedTooLow: return "vehicleSpeedTooLow";
+case throttle__PedalTooHigh: return "throttle_PedalTooHigh";
+case throttle__PedalTooLow: return "throttle_PedalTooLow";
+case transmissionRangeNotInNeutral: return "transmissionRangeNotInNeutral";
+case transmissionRangeNotInGear: return "transmissionRangeNotInGear";
+case brakeSwitchesNotClosed: return "brakeSwitchesNotClosed";
+case shifterLeverNotInPark: return "shifterLeverNotInPark";
+case torqueConverterClutchLocked: return "torqueConverterClutchLocked";
+case voltageTooHigh: return "voltageTooHigh";
+case voltageTooLow: return "voltageTooLow";
+case vehicleManufacturerSpecificConditionsNotCorrectF0: return "vehicleManufacturerSpecificConditionsNotCorrectF0";
+case vehicleManufacturerSpecificConditionsNotCorrectF1: return "vehicleManufacturerSpecificConditionsNotCorrectF1";
+case vehicleManufacturerSpecificConditionsNotCorrectF2: return "vehicleManufacturerSpecificConditionsNotCorrectF2";
+case vehicleManufacturerSpecificConditionsNotCorrectF3: return "vehicleManufacturerSpecificConditionsNotCorrectF3";
+case vehicleManufacturerSpecificConditionsNotCorrectF4: return "vehicleManufacturerSpecificConditionsNotCorrectF4";
+case vehicleManufacturerSpecificConditionsNotCorrectF5: return "vehicleManufacturerSpecificConditionsNotCorrectF5";
+case vehicleManufacturerSpecificConditionsNotCorrectF6: return "vehicleManufacturerSpecificConditionsNotCorrectF6";
+case vehicleManufacturerSpecificConditionsNotCorrectF7: return "vehicleManufacturerSpecificConditionsNotCorrectF7";
+case vehicleManufacturerSpecificConditionsNotCorrectF8: return "vehicleManufacturerSpecificConditionsNotCorrectF8";
+case vehicleManufacturerSpecificConditionsNotCorrectF9: return "vehicleManufacturerSpecificConditionsNotCorrectF9";
+case vehicleManufacturerSpecificConditionsNotCorrectFA: return "vehicleManufacturerSpecificConditionsNotCorrectFA";
+case vehicleManufacturerSpecificConditionsNotCorrectFB: return "vehicleManufacturerSpecificConditionsNotCorrectFB";
+case vehicleManufacturerSpecificConditionsNotCorrectFC: return "vehicleManufacturerSpecificConditionsNotCorrectFC";
+case vehicleManufacturerSpecificConditionsNotCorrectFD: return "vehicleManufacturerSpecificConditionsNotCorrectFD";
+case vehicleManufacturerSpecificConditionsNotCorrectFE: return "vehicleManufacturerSpecificConditionsNotCorrectFE";
+default: return "<unknown>";
+}
+}
+
+e__ResponseCode::enum_type e__ResponseCode::str_to_enum(const char *str_par)
+{
+if (!strcmp(str_par, "generalReject")) return generalReject;
+else if (!strcmp(str_par, "serviceNotSupported")) return serviceNotSupported;
+else if (!strcmp(str_par, "subfunctionNotSupported")) return subfunctionNotSupported;
+else if (!strcmp(str_par, "incorrectMessageLengthOrInvalidFormat")) return incorrectMessageLengthOrInvalidFormat;
+else if (!strcmp(str_par, "responseTooLong")) return responseTooLong;
+else if (!strcmp(str_par, "busyRepeatRequest")) return busyRepeatRequest;
+else if (!strcmp(str_par, "conditionsNotCorrect")) return conditionsNotCorrect;
+else if (!strcmp(str_par, "isosarReserved35")) return isosarReserved35;
+else if (!strcmp(str_par, "requestSequenceError")) return requestSequenceError;
+else if (!strcmp(str_par, "noResponseFromSubnetComponent")) return noResponseFromSubnetComponent;
+else if (!strcmp(str_par, "failurePreventsExecutionOfRequestedAction")) return failurePreventsExecutionOfRequestedAction;
+else if (!strcmp(str_par, "requestOutOfRange")) return requestOutOfRange;
+else if (!strcmp(str_par, "isosarReserved50")) return isosarReserved50;
+else if (!strcmp(str_par, "securityAccessDenied")) return securityAccessDenied;
+else if (!strcmp(str_par, "isosarReserved52")) return isosarReserved52;
+else if (!strcmp(str_par, "invalidKey")) return invalidKey;
+else if (!strcmp(str_par, "exceededNumberOfAttempts")) return exceededNumberOfAttempts;
+else if (!strcmp(str_par, "requiredTimeDelayNotExpired")) return requiredTimeDelayNotExpired;
+else if (!strcmp(str_par, "uploadDownloadNotAccepted")) return uploadDownloadNotAccepted;
+else if (!strcmp(str_par, "transferDataSuspended")) return transferDataSuspended;
+else if (!strcmp(str_par, "generalProgrammingFailure")) return generalProgrammingFailure;
+else if (!strcmp(str_par, "wrongBlockSequenceCounter")) return wrongBlockSequenceCounter;
+else if (!strcmp(str_par, "requestCorrectlyReceivedResponsePending")) return requestCorrectlyReceivedResponsePending;
+else if (!strcmp(str_par, "subfunctionNotSupportedInActiveSession")) return subfunctionNotSupportedInActiveSession;
+else if (!strcmp(str_par, "serviceNotSupportedInActiveSession")) return serviceNotSupportedInActiveSession;
+else if (!strcmp(str_par, "rpmTooHigh")) return rpmTooHigh;
+else if (!strcmp(str_par, "rpmTooLow")) return rpmTooLow;
+else if (!strcmp(str_par, "engineIsRunning")) return engineIsRunning;
+else if (!strcmp(str_par, "engineIsNotRunning")) return engineIsNotRunning;
+else if (!strcmp(str_par, "engineRunTimeTooLow")) return engineRunTimeTooLow;
+else if (!strcmp(str_par, "temperatureTooHigh")) return temperatureTooHigh;
+else if (!strcmp(str_par, "temperatureTooLow")) return temperatureTooLow;
+else if (!strcmp(str_par, "vehicleSpeedTooHigh")) return vehicleSpeedTooHigh;
+else if (!strcmp(str_par, "vehicleSpeedTooLow")) return vehicleSpeedTooLow;
+else if (!strcmp(str_par, "throttle_PedalTooHigh")) return throttle__PedalTooHigh;
+else if (!strcmp(str_par, "throttle_PedalTooLow")) return throttle__PedalTooLow;
+else if (!strcmp(str_par, "transmissionRangeNotInNeutral")) return transmissionRangeNotInNeutral;
+else if (!strcmp(str_par, "transmissionRangeNotInGear")) return transmissionRangeNotInGear;
+else if (!strcmp(str_par, "brakeSwitchesNotClosed")) return brakeSwitchesNotClosed;
+else if (!strcmp(str_par, "shifterLeverNotInPark")) return shifterLeverNotInPark;
+else if (!strcmp(str_par, "torqueConverterClutchLocked")) return torqueConverterClutchLocked;
+else if (!strcmp(str_par, "voltageTooHigh")) return voltageTooHigh;
+else if (!strcmp(str_par, "voltageTooLow")) return voltageTooLow;
+else if (!strcmp(str_par, "vehicleManufacturerSpecificConditionsNotCorrectF0")) return vehicleManufacturerSpecificConditionsNotCorrectF0;
+else if (!strcmp(str_par, "vehicleManufacturerSpecificConditionsNotCorrectF1")) return vehicleManufacturerSpecificConditionsNotCorrectF1;
+else if (!strcmp(str_par, "vehicleManufacturerSpecificConditionsNotCorrectF2")) return vehicleManufacturerSpecificConditionsNotCorrectF2;
+else if (!strcmp(str_par, "vehicleManufacturerSpecificConditionsNotCorrectF3")) return vehicleManufacturerSpecificConditionsNotCorrectF3;
+else if (!strcmp(str_par, "vehicleManufacturerSpecificConditionsNotCorrectF4")) return vehicleManufacturerSpecificConditionsNotCorrectF4;
+else if (!strcmp(str_par, "vehicleManufacturerSpecificConditionsNotCorrectF5")) return vehicleManufacturerSpecificConditionsNotCorrectF5;
+else if (!strcmp(str_par, "vehicleManufacturerSpecificConditionsNotCorrectF6")) return vehicleManufacturerSpecificConditionsNotCorrectF6;
+else if (!strcmp(str_par, "vehicleManufacturerSpecificConditionsNotCorrectF7")) return vehicleManufacturerSpecificConditionsNotCorrectF7;
+else if (!strcmp(str_par, "vehicleManufacturerSpecificConditionsNotCorrectF8")) return vehicleManufacturerSpecificConditionsNotCorrectF8;
+else if (!strcmp(str_par, "vehicleManufacturerSpecificConditionsNotCorrectF9")) return vehicleManufacturerSpecificConditionsNotCorrectF9;
+else if (!strcmp(str_par, "vehicleManufacturerSpecificConditionsNotCorrectFA")) return vehicleManufacturerSpecificConditionsNotCorrectFA;
+else if (!strcmp(str_par, "vehicleManufacturerSpecificConditionsNotCorrectFB")) return vehicleManufacturerSpecificConditionsNotCorrectFB;
+else if (!strcmp(str_par, "vehicleManufacturerSpecificConditionsNotCorrectFC")) return vehicleManufacturerSpecificConditionsNotCorrectFC;
+else if (!strcmp(str_par, "vehicleManufacturerSpecificConditionsNotCorrectFD")) return vehicleManufacturerSpecificConditionsNotCorrectFD;
+else if (!strcmp(str_par, "vehicleManufacturerSpecificConditionsNotCorrectFE")) return vehicleManufacturerSpecificConditionsNotCorrectFE;
+else return UNKNOWN_VALUE;
+}
+
+boolean e__ResponseCode::is_valid_enum(int int_par)
+{
+switch (int_par) {
+case 16:
+case 17:
+case 18:
+case 19:
+case 20:
+case 33:
+case 34:
+case 35:
+case 36:
+case 37:
+case 38:
+case 49:
+case 50:
+case 51:
+case 52:
+case 53:
+case 54:
+case 55:
+case 112:
+case 113:
+case 114:
+case 115:
+case 120:
+case 126:
+case 127:
+case 129:
+case 130:
+case 131:
+case 132:
+case 133:
+case 134:
+case 135:
+case 136:
+case 137:
+case 138:
+case 139:
+case 140:
+case 141:
+case 143:
+case 144:
+case 145:
+case 146:
+case 147:
+case 240:
+case 241:
+case 242:
+case 243:
+case 244:
+case 245:
+case 246:
+case 247:
+case 248:
+case 249:
+case 250:
+case 251:
+case 252:
+case 253:
+case 254:
+return TRUE;
+default:
+return FALSE;
+}
+}
+
+int e__ResponseCode::enum2int(enum_type enum_par)
+{
+if (enum_par==UNBOUND_VALUE || enum_par==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @UnifiedDiagnosticServices.e_ResponseCode.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par;
+}
+
+int e__ResponseCode::enum2int(const e__ResponseCode& enum_par)
+{
+if (enum_par.enum_value==UNBOUND_VALUE || enum_par.enum_value==UNKNOWN_VALUE) TTCN_error("The argument of function enum2int() is an %s value of enumerated type @UnifiedDiagnosticServices.e_ResponseCode.", enum_par==UNBOUND_VALUE?"unbound":"invalid");
+return enum_par.enum_value;
+}
+
+void e__ResponseCode::int2enum(int int_val)
+{
+if (!is_valid_enum(int_val)) TTCN_error("Assigning invalid numeric value %d to a variable of enumerated type @UnifiedDiagnosticServices.e_ResponseCode.", int_val);
+enum_value = (enum_type)int_val;
+}
+
+e__ResponseCode::operator e__ResponseCode::enum_type() const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Using the value of an unbound variable of enumerated type @UnifiedDiagnosticServices.e_ResponseCode.");
+return enum_value;
+}
+
+void e__ResponseCode::log() const
+{
+if (enum_value != UNBOUND_VALUE) TTCN_Logger::log_event_enum(enum_to_str(enum_value), enum_value);
+else TTCN_Logger::log_event_unbound();
+}
+
+void e__ResponseCode::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_VALUE, "enumerated value");
+  if (param.get_type()!=Module_Param::MP_Enumerated) param.type_error("enumerated value", "@UnifiedDiagnosticServices.e_ResponseCode");
+  enum_value = str_to_enum(param.get_enumerated());
+  if (!is_valid_enum(enum_value)) {
+    param.error("Invalid enumerated value for type @UnifiedDiagnosticServices.e_ResponseCode.");
+  }
+}
+
+void e__ResponseCode::encode_text(Text_Buf& text_buf) const
+{
+if (enum_value == UNBOUND_VALUE) TTCN_error("Text encoder: Encoding an unbound value of enumerated type @UnifiedDiagnosticServices.e_ResponseCode.");
+text_buf.push_int(enum_value);
+}
+
+void e__ResponseCode::decode_text(Text_Buf& text_buf)
+{
+enum_value = (enum_type)text_buf.pull_int().get_val();
+if (!is_valid_enum(enum_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for enumerated type @UnifiedDiagnosticServices.e_ResponseCode.", enum_value);
+}
+
+void e__ResponseCode::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void e__ResponseCode::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int e__ResponseCode::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*)
+{
+  int decoded_value = 0;
+  int decoded_length = RAW_decode_enum_type(p_td, p_buf, limit, top_bit_ord, decoded_value, 8, no_err);
+  if (decoded_length < 0) return decoded_length;
+  if (is_valid_enum(decoded_value)) enum_value = (enum_type)decoded_value;
+  else {
+    if(no_err){
+     return -1;
+    } else {
+    TTCN_EncDec_ErrorContext::error
+      (TTCN_EncDec::ET_ENC_ENUM, "Invalid enum value '%d' for '%s': ",decoded_value, p_td.name);
+    enum_value = UNKNOWN_VALUE;
+    }
+  }
+  return decoded_length;
+}
+
+int e__ResponseCode::RAW_encode(const TTCN_Typedescriptor_t& p_td, RAW_enc_tree& myleaf) const
+{
+  return RAW_encode_enum_type(p_td, myleaf, (int)enum_value, 8);
+}
+
+void e__ResponseCode_template::copy_template(const e__ResponseCode_template& other_value)
+{
+set_selection(other_value);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = other_value.single_value;
+break;
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new e__ResponseCode_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of enumerated type @UnifiedDiagnosticServices.e_ResponseCode.");
+}
+}
+
+e__ResponseCode_template::e__ResponseCode_template()
+{
+}
+
+e__ResponseCode_template::e__ResponseCode_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+e__ResponseCode_template::e__ResponseCode_template(int other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (!e__ResponseCode::is_valid_enum(other_value)) TTCN_error("Initializing a template of enumerated type @UnifiedDiagnosticServices.e_ResponseCode with unknown numeric value %d.", other_value);
+single_value = (e__ResponseCode::enum_type)other_value;
+}
+
+e__ResponseCode_template::e__ResponseCode_template(e__ResponseCode::enum_type other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+single_value = other_value;
+}
+
+e__ResponseCode_template::e__ResponseCode_template(const e__ResponseCode& other_value)
+ : Base_Template(SPECIFIC_VALUE)
+{
+if (other_value.enum_value == e__ResponseCode::UNBOUND_VALUE) TTCN_error("Creating a template from an unbound value of enumerated type @UnifiedDiagnosticServices.e_ResponseCode.");
+single_value = other_value.enum_value;
+}
+
+e__ResponseCode_template::e__ResponseCode_template(const OPTIONAL<e__ResponseCode>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__ResponseCode::enum_type)(const e__ResponseCode&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of enumerated type @UnifiedDiagnosticServices.e_ResponseCode from an unbound optional field.");
+}
+}
+
+e__ResponseCode_template::e__ResponseCode_template(const e__ResponseCode_template& other_value)
+ : Base_Template()
+{
+copy_template(other_value);
+}
+
+e__ResponseCode_template::~e__ResponseCode_template()
+{
+clean_up();
+}
+
+boolean e__ResponseCode_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+return TRUE;
+}
+
+boolean e__ResponseCode_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value != e__ResponseCode::UNBOUND_VALUE;
+}
+
+void e__ResponseCode_template::clean_up()
+{
+if (template_selection == VALUE_LIST || template_selection == COMPLEMENTED_LIST) delete [] value_list.list_value;
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+e__ResponseCode_template& e__ResponseCode_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+e__ResponseCode_template& e__ResponseCode_template::operator=(int other_value)
+{
+if (!e__ResponseCode::is_valid_enum(other_value)) TTCN_warning("Assigning unknown numeric value %d to a template of enumerated type @UnifiedDiagnosticServices.e_ResponseCode.", other_value);
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = (e__ResponseCode::enum_type)other_value;
+return *this;
+}
+
+e__ResponseCode_template& e__ResponseCode_template::operator=(e__ResponseCode::enum_type other_value)
+{
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value;
+return *this;
+}
+
+e__ResponseCode_template& e__ResponseCode_template::operator=(const e__ResponseCode& other_value)
+{
+if (other_value.enum_value == e__ResponseCode::UNBOUND_VALUE) TTCN_error("Assignment of an unbound value of enumerated type @UnifiedDiagnosticServices.e_ResponseCode to a template.");
+clean_up();
+set_selection(SPECIFIC_VALUE);
+single_value = other_value.enum_value;
+return *this;
+}
+
+e__ResponseCode_template& e__ResponseCode_template::operator=(const OPTIONAL<e__ResponseCode>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+set_selection(SPECIFIC_VALUE);
+single_value = (e__ResponseCode::enum_type)(const e__ResponseCode&)other_value;
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Assignment of an unbound optional field to a template of enumerated type @UnifiedDiagnosticServices.e_ResponseCode.");
+}
+return *this;
+}
+
+e__ResponseCode_template& e__ResponseCode_template::operator=(const e__ResponseCode_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean e__ResponseCode_template::match(e__ResponseCode::enum_type other_value, boolean) const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+return single_value == other_value;
+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)) return template_selection == VALUE_LIST;
+return template_selection == COMPLEMENTED_LIST;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of enumerated type @UnifiedDiagnosticServices.e_ResponseCode.");
+}
+return FALSE;
+}
+
+boolean e__ResponseCode_template::match(const e__ResponseCode& other_value, boolean) const
+{
+if (other_value.enum_value == e__ResponseCode::UNBOUND_VALUE) TTCN_error("Matching a template of enumerated type @UnifiedDiagnosticServices.e_ResponseCode with an unbound value.");
+return match(other_value.enum_value);
+}
+
+e__ResponseCode::enum_type e__ResponseCode_template::valueof() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) TTCN_error("Performing a valueof or send operation on a non-specific template of enumerated type @UnifiedDiagnosticServices.e_ResponseCode.");
+return single_value;
+}
+
+void e__ResponseCode_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error("Setting an invalid list type for a template of enumerated type @UnifiedDiagnosticServices.e_ResponseCode.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new e__ResponseCode_template[list_length];
+}
+
+e__ResponseCode_template& e__ResponseCode_template::list_item(unsigned int list_index)
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Accessing a list element in a non-list template of enumerated type @UnifiedDiagnosticServices.e_ResponseCode.");
+if (list_index >= value_list.n_values) TTCN_error("Index overflow in a value list template of enumerated type @UnifiedDiagnosticServices.e_ResponseCode.");
+return value_list.list_value[list_index];
+}
+
+void e__ResponseCode_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_enum(e__ResponseCode::enum_to_str(single_value), single_value);
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+case VALUE_LIST:
+TTCN_Logger::log_char('(');
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++) {
+if (elem_count > 0) TTCN_Logger::log_event_str(", ");
+value_list.list_value[elem_count].log();
+}
+TTCN_Logger::log_char(')');
+break;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void e__ResponseCode_template::log_match(const e__ResponseCode& match_value, boolean) const
+{
+match_value.log();
+TTCN_Logger::log_event_str(" with ");
+log();
+if (match(match_value)) TTCN_Logger::log_event_str(" matched");
+else TTCN_Logger::log_event_str(" unmatched");
+}
+
+void e__ResponseCode_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);
+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 elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an uninitialized/unsupported template of enumerated type @UnifiedDiagnosticServices.e_ResponseCode.");
+}
+}
+
+void e__ResponseCode_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value = (e__ResponseCode::enum_type)text_buf.pull_int().get_val();
+if (!e__ResponseCode::is_valid_enum(single_value)) TTCN_error("Text decoder: Unknown numeric value %d was received for a template of enumerated type @UnifiedDiagnosticServices.e_ResponseCode.", single_value);
+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 e__ResponseCode_template[value_list.n_values];
+for (unsigned int elem_count = 0; elem_count < value_list.n_values; elem_count++)
+value_list.list_value[elem_count].decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: An unknown/unsupported selection was received for a template of enumerated type @UnifiedDiagnosticServices.e_ResponseCode.");
+}
+}
+
+boolean e__ResponseCode_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean e__ResponseCode_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 e__ResponseCode_template::set_param(Module_Param& param)
+{
+  param.basic_check(Module_Param::BC_TEMPLATE, "enumerated 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: {
+    e__ResponseCode_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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_Enumerated: {
+    e__ResponseCode::enum_type enum_val = e__ResponseCode::str_to_enum(m_p->get_enumerated());
+    if (!e__ResponseCode::is_valid_enum(enum_val)) {
+      param.error("Invalid enumerated value for type @UnifiedDiagnosticServices.e_ResponseCode.");
+    }
+    *this = enum_val;
+  } break;
+  default:
+    param.type_error("enumerated template", "@UnifiedDiagnosticServices.e_ResponseCode");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void e__ResponseCode_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_VALUE:
+if (!is_ifpresent && template_selection==SPECIFIC_VALUE) return;
+break;
+case TR_OMIT:
+if (!is_ifpresent && (template_selection==OMIT_VALUE || template_selection==SPECIFIC_VALUE)) return;
+break;
+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 : "@UnifiedDiagnosticServices.e_ResponseCode");
+}
+
+NegativeResponseCodeSID::NegativeResponseCodeSID()
+{
+}
+
+NegativeResponseCodeSID::NegativeResponseCodeSID(const OCTETSTRING& par_sid,
+    const e__RequestSID& par_requestSID,
+    const e__ResponseCode& par_responseCode)
+  :   field_sid(par_sid),
+  field_requestSID(par_requestSID),
+  field_responseCode(par_responseCode)
+{
+}
+
+NegativeResponseCodeSID::NegativeResponseCodeSID(const NegativeResponseCodeSID& other_value)
+{
+if(!other_value.is_bound()) TTCN_error("Copying an unbound value of type @UnifiedDiagnosticServices.NegativeResponseCodeSID.");
+if (other_value.sid().is_bound()) field_sid = other_value.sid();
+else field_sid.clean_up();
+if (other_value.requestSID().is_bound()) field_requestSID = other_value.requestSID();
+else field_requestSID.clean_up();
+if (other_value.responseCode().is_bound()) field_responseCode = other_value.responseCode();
+else field_responseCode.clean_up();
+}
+
+void NegativeResponseCodeSID::clean_up()
+{
+field_sid.clean_up();
+field_requestSID.clean_up();
+field_responseCode.clean_up();
+}
+
+const TTCN_Typedescriptor_t* NegativeResponseCodeSID::get_descriptor() const { return &NegativeResponseCodeSID_descr_; }
+NegativeResponseCodeSID& NegativeResponseCodeSID::operator=(const NegativeResponseCodeSID& other_value)
+{
+if (this != &other_value) {
+  if(!other_value.is_bound()) TTCN_error("Assignment of an unbound value of type @UnifiedDiagnosticServices.NegativeResponseCodeSID.");
+  if (other_value.sid().is_bound()) field_sid = other_value.sid();
+  else field_sid.clean_up();
+  if (other_value.requestSID().is_bound()) field_requestSID = other_value.requestSID();
+  else field_requestSID.clean_up();
+  if (other_value.responseCode().is_bound()) field_responseCode = other_value.responseCode();
+  else field_responseCode.clean_up();
+}
+return *this;
+}
+
+boolean NegativeResponseCodeSID::operator==(const NegativeResponseCodeSID& other_value) const
+{
+return field_sid==other_value.field_sid
+  && field_requestSID==other_value.field_requestSID
+  && field_responseCode==other_value.field_responseCode;
+}
+
+boolean NegativeResponseCodeSID::is_bound() const
+{
+return (field_sid.is_bound())
+  || (field_requestSID.is_bound())
+  || (field_responseCode.is_bound());
+}
+boolean NegativeResponseCodeSID::is_value() const
+{
+return field_sid.is_value()
+  && field_requestSID.is_value()
+  && field_responseCode.is_value();
+}
+void NegativeResponseCodeSID::log() const
+{
+if (!is_bound()) {
+TTCN_Logger::log_event_unbound();
+return;
+}
+TTCN_Logger::log_event_str("{ sid := ");
+field_sid.log();
+TTCN_Logger::log_event_str(", requestSID := ");
+field_requestSID.log();
+TTCN_Logger::log_event_str(", responseCode := ");
+field_responseCode.log();
+TTCN_Logger::log_event_str(" }");
+}
+
+void NegativeResponseCodeSID::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 @UnifiedDiagnosticServices.NegativeResponseCodeSID 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) sid().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) requestSID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) responseCode().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(), "sid")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          sid().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(), "requestSID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          requestSID().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(), "responseCode")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          responseCode().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 @UnifiedDiagnosticServices.NegativeResponseCodeSID: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record value", "@UnifiedDiagnosticServices.NegativeResponseCodeSID");
+  }
+}
+
+void NegativeResponseCodeSID::set_implicit_omit()
+{
+if (sid().is_bound()) sid().set_implicit_omit();
+if (requestSID().is_bound()) requestSID().set_implicit_omit();
+if (responseCode().is_bound()) responseCode().set_implicit_omit();
+}
+
+void NegativeResponseCodeSID::encode_text(Text_Buf& text_buf) const
+{
+field_sid.encode_text(text_buf);
+field_requestSID.encode_text(text_buf);
+field_responseCode.encode_text(text_buf);
+}
+
+void NegativeResponseCodeSID::decode_text(Text_Buf& text_buf)
+{
+field_sid.decode_text(text_buf);
+field_requestSID.decode_text(text_buf);
+field_responseCode.decode_text(text_buf);
+}
+
+void NegativeResponseCodeSID::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void NegativeResponseCodeSID::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int NegativeResponseCodeSID::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, NegativeResponseCodeSID_sid_descr_.raw->forceomit);
+  decoded_field_length = field_sid.RAW_decode(NegativeResponseCodeSID_sid_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, NegativeResponseCodeSID_requestSID_descr_.raw->forceomit);
+  decoded_field_length = field_requestSID.RAW_decode(NegativeResponseCodeSID_requestSID_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, NegativeResponseCodeSID_responseCode_descr_.raw->forceomit);
+  decoded_field_length = field_responseCode.RAW_decode(NegativeResponseCodeSID_responseCode_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 NegativeResponseCodeSID::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, NegativeResponseCodeSID_sid_descr_.raw);
+  myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 1, NegativeResponseCodeSID_requestSID_descr_.raw);
+  myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &(myleaf.curr_pos), 2, NegativeResponseCodeSID_responseCode_descr_.raw);
+  encoded_length += field_sid.RAW_encode(NegativeResponseCodeSID_sid_descr_, *myleaf.body.node.nodes[0]);
+  encoded_length += field_requestSID.RAW_encode(NegativeResponseCodeSID_requestSID_descr_, *myleaf.body.node.nodes[1]);
+  encoded_length += field_responseCode.RAW_encode(NegativeResponseCodeSID_responseCode_descr_, *myleaf.body.node.nodes[2]);
+  return myleaf.length = encoded_length;
+}
+
+struct NegativeResponseCodeSID_template::single_value_struct {
+OCTETSTRING_template field_sid;
+e__RequestSID_template field_requestSID;
+e__ResponseCode_template field_responseCode;
+};
+
+void NegativeResponseCodeSID_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_sid = ANY_VALUE;
+single_value->field_requestSID = ANY_VALUE;
+single_value->field_responseCode = ANY_VALUE;
+}
+}
+}
+
+void NegativeResponseCodeSID_template::copy_value(const NegativeResponseCodeSID& other_value)
+{
+single_value = new single_value_struct;
+if (other_value.sid().is_bound()) {
+  single_value->field_sid = other_value.sid();
+} else {
+  single_value->field_sid.clean_up();
+}
+if (other_value.requestSID().is_bound()) {
+  single_value->field_requestSID = other_value.requestSID();
+} else {
+  single_value->field_requestSID.clean_up();
+}
+if (other_value.responseCode().is_bound()) {
+  single_value->field_responseCode = other_value.responseCode();
+} else {
+  single_value->field_responseCode.clean_up();
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void NegativeResponseCodeSID_template::copy_template(const NegativeResponseCodeSID_template& other_value)
+{
+switch (other_value.template_selection) {
+case SPECIFIC_VALUE:
+single_value = new single_value_struct;
+if (UNINITIALIZED_TEMPLATE != other_value.sid().get_selection()) {
+single_value->field_sid = other_value.sid();
+} else {
+single_value->field_sid.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.requestSID().get_selection()) {
+single_value->field_requestSID = other_value.requestSID();
+} else {
+single_value->field_requestSID.clean_up();
+}
+if (UNINITIALIZED_TEMPLATE != other_value.responseCode().get_selection()) {
+single_value->field_responseCode = other_value.responseCode();
+} else {
+single_value->field_responseCode.clean_up();
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new NegativeResponseCodeSID_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;
+default:
+TTCN_error("Copying an uninitialized/unsupported template of type @UnifiedDiagnosticServices.NegativeResponseCodeSID.");
+break;
+}
+set_selection(other_value);
+}
+
+NegativeResponseCodeSID_template::NegativeResponseCodeSID_template()
+{
+}
+
+NegativeResponseCodeSID_template::NegativeResponseCodeSID_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+NegativeResponseCodeSID_template::NegativeResponseCodeSID_template(const NegativeResponseCodeSID& other_value)
+{
+copy_value(other_value);
+}
+
+NegativeResponseCodeSID_template::NegativeResponseCodeSID_template(const OPTIONAL<NegativeResponseCodeSID>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const NegativeResponseCodeSID&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of type @UnifiedDiagnosticServices.NegativeResponseCodeSID from an unbound optional field.");
+}
+}
+
+NegativeResponseCodeSID_template::NegativeResponseCodeSID_template(const NegativeResponseCodeSID_template& other_value)
+: Base_Template()
+{
+copy_template(other_value);
+}
+
+NegativeResponseCodeSID_template::~NegativeResponseCodeSID_template()
+{
+clean_up();
+}
+
+NegativeResponseCodeSID_template& NegativeResponseCodeSID_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+NegativeResponseCodeSID_template& NegativeResponseCodeSID_template::operator=(const NegativeResponseCodeSID& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+NegativeResponseCodeSID_template& NegativeResponseCodeSID_template::operator=(const OPTIONAL<NegativeResponseCodeSID>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const NegativeResponseCodeSID&)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 @UnifiedDiagnosticServices.NegativeResponseCodeSID.");
+}
+return *this;
+}
+
+NegativeResponseCodeSID_template& NegativeResponseCodeSID_template::operator=(const NegativeResponseCodeSID_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean NegativeResponseCodeSID_template::match(const NegativeResponseCodeSID& 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.sid().is_bound()) return FALSE;
+if(!single_value->field_sid.match(other_value.sid(), legacy))return FALSE;
+if(!other_value.requestSID().is_bound()) return FALSE;
+if(!single_value->field_requestSID.match(other_value.requestSID(), legacy))return FALSE;
+if(!other_value.responseCode().is_bound()) return FALSE;
+if(!single_value->field_responseCode.match(other_value.responseCode(), 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;
+default:
+TTCN_error("Matching an uninitialized/unsupported template of type @UnifiedDiagnosticServices.NegativeResponseCodeSID.");
+}
+return FALSE;
+}
+
+boolean NegativeResponseCodeSID_template::is_bound() const
+{
+if (template_selection == UNINITIALIZED_TEMPLATE && !is_ifpresent) return FALSE;
+if (template_selection != SPECIFIC_VALUE) return TRUE;
+return single_value->field_sid.is_bound()
+
+ ||single_value->field_requestSID.is_bound()
+
+ ||single_value->field_responseCode.is_bound()
+;
+}
+
+boolean NegativeResponseCodeSID_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+return single_value->field_sid.is_value()
+ &&single_value->field_requestSID.is_value()
+ &&single_value->field_responseCode.is_value();
+}
+
+void NegativeResponseCodeSID_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+delete single_value;
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+NegativeResponseCodeSID NegativeResponseCodeSID_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 @UnifiedDiagnosticServices.NegativeResponseCodeSID.");
+NegativeResponseCodeSID ret_val;
+if (single_value->field_sid.is_bound()) {
+ret_val.sid() = single_value->field_sid.valueof();
+}
+if (single_value->field_requestSID.is_bound()) {
+ret_val.requestSID() = single_value->field_requestSID.valueof();
+}
+if (single_value->field_responseCode.is_bound()) {
+ret_val.responseCode() = single_value->field_responseCode.valueof();
+}
+return ret_val;
+}
+
+void NegativeResponseCodeSID_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST)
+TTCN_error("Setting an invalid list for a template of type @UnifiedDiagnosticServices.NegativeResponseCodeSID.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new NegativeResponseCodeSID_template[list_length];
+}
+
+NegativeResponseCodeSID_template& NegativeResponseCodeSID_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST)
+TTCN_error("Accessing a list element of a non-list template of type @UnifiedDiagnosticServices.NegativeResponseCodeSID.");
+if (list_index >= value_list.n_values)
+TTCN_error("Index overflow in a value list template of type @UnifiedDiagnosticServices.NegativeResponseCodeSID.");
+return value_list.list_value[list_index];
+}
+
+OCTETSTRING_template& NegativeResponseCodeSID_template::sid()
+{
+set_specific();
+return single_value->field_sid;
+}
+
+const OCTETSTRING_template& NegativeResponseCodeSID_template::sid() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field sid of a non-specific template of type @UnifiedDiagnosticServices.NegativeResponseCodeSID.");
+return single_value->field_sid;
+}
+
+e__RequestSID_template& NegativeResponseCodeSID_template::requestSID()
+{
+set_specific();
+return single_value->field_requestSID;
+}
+
+const e__RequestSID_template& NegativeResponseCodeSID_template::requestSID() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field requestSID of a non-specific template of type @UnifiedDiagnosticServices.NegativeResponseCodeSID.");
+return single_value->field_requestSID;
+}
+
+e__ResponseCode_template& NegativeResponseCodeSID_template::responseCode()
+{
+set_specific();
+return single_value->field_responseCode;
+}
+
+const e__ResponseCode_template& NegativeResponseCodeSID_template::responseCode() const
+{
+if (template_selection != SPECIFIC_VALUE)
+TTCN_error("Accessing field responseCode of a non-specific template of type @UnifiedDiagnosticServices.NegativeResponseCodeSID.");
+return single_value->field_responseCode;
+}
+
+int NegativeResponseCodeSID_template::size_of() const
+{
+  if (is_ifpresent) TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.NegativeResponseCodeSID 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 @UnifiedDiagnosticServices.NegativeResponseCodeSID 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 @UnifiedDiagnosticServices.NegativeResponseCodeSID containing a value list with different sizes.");
+      }
+      return item_size;
+    }
+  case OMIT_VALUE:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.NegativeResponseCodeSID containing omit value.");
+  case ANY_VALUE:
+  case ANY_OR_OMIT:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.NegativeResponseCodeSID containing */? value.");
+  case COMPLEMENTED_LIST:
+    TTCN_error("Performing sizeof() operation on a template of type @UnifiedDiagnosticServices.NegativeResponseCodeSID containing complemented list.");
+  default:
+    TTCN_error("Performing sizeof() operation on an uninitialized/unsupported template of type @UnifiedDiagnosticServices.NegativeResponseCodeSID.");
+  }
+  return 0;
+}
+
+void NegativeResponseCodeSID_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+TTCN_Logger::log_event_str("{ sid := ");
+single_value->field_sid.log();
+TTCN_Logger::log_event_str(", requestSID := ");
+single_value->field_requestSID.log();
+TTCN_Logger::log_event_str(", responseCode := ");
+single_value->field_responseCode.log();
+TTCN_Logger::log_event_str(" }");
+break;
+case COMPLEMENTED_LIST:
+TTCN_Logger::log_event_str("complement");
+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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void NegativeResponseCodeSID_template::log_match(const NegativeResponseCodeSID& 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_sid.match(match_value.sid(), legacy)){
+TTCN_Logger::log_logmatch_info(".sid");
+single_value->field_sid.log_match(match_value.sid(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_requestSID.match(match_value.requestSID(), legacy)){
+TTCN_Logger::log_logmatch_info(".requestSID");
+single_value->field_requestSID.log_match(match_value.requestSID(), legacy);
+TTCN_Logger::set_logmatch_buffer_len(previous_size);
+}
+if(!single_value->field_responseCode.match(match_value.responseCode(), legacy)){
+TTCN_Logger::log_logmatch_info(".responseCode");
+single_value->field_responseCode.log_match(match_value.responseCode(), 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("{ sid := ");
+single_value->field_sid.log_match(match_value.sid(), legacy);
+TTCN_Logger::log_event_str(", requestSID := ");
+single_value->field_requestSID.log_match(match_value.requestSID(), legacy);
+TTCN_Logger::log_event_str(", responseCode := ");
+single_value->field_responseCode.log_match(match_value.responseCode(), 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 NegativeResponseCodeSID_template::encode_text(Text_Buf& text_buf) const
+{
+encode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+single_value->field_sid.encode_text(text_buf);
+single_value->field_requestSID.encode_text(text_buf);
+single_value->field_responseCode.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 @UnifiedDiagnosticServices.NegativeResponseCodeSID.");
+}
+}
+
+void NegativeResponseCodeSID_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_sid.decode_text(text_buf);
+single_value->field_requestSID.decode_text(text_buf);
+single_value->field_responseCode.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 NegativeResponseCodeSID_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 @UnifiedDiagnosticServices.NegativeResponseCodeSID.");
+}
+}
+
+void NegativeResponseCodeSID_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: {
+    NegativeResponseCodeSID_template new_temp;
+    new_temp.set_type(param.get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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 @UnifiedDiagnosticServices.NegativeResponseCodeSID 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) sid().set_param(*param.get_elem(0));
+    if (param.get_size()>1 && param.get_elem(1)->get_type()!=Module_Param::MP_NotUsed) requestSID().set_param(*param.get_elem(1));
+    if (param.get_size()>2 && param.get_elem(2)->get_type()!=Module_Param::MP_NotUsed) responseCode().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(), "sid")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          sid().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(), "requestSID")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          requestSID().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(), "responseCode")) {
+        if (curr_param->get_type()!=Module_Param::MP_NotUsed) {
+          responseCode().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 @UnifiedDiagnosticServices.NegativeResponseCodeSID: %s", curr_param->get_id()->get_name());
+      break;
+    }
+  } break;
+  default:
+    param.type_error("record template", "@UnifiedDiagnosticServices.NegativeResponseCodeSID");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void NegativeResponseCodeSID_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_sid.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.NegativeResponseCodeSID");
+single_value->field_requestSID.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.NegativeResponseCodeSID");
+single_value->field_responseCode.check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.NegativeResponseCodeSID");
+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 : "@UnifiedDiagnosticServices.NegativeResponseCodeSID");
+}
+
+boolean NegativeResponseCodeSID_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean NegativeResponseCodeSID_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 TopLevelMessage__UDS__requests::copy_value(const TopLevelMessage__UDS__requests& other_value)
+{
+switch (other_value.union_selection) {
+case ALT_diagnosticSessionControlRequestSID:
+field_diagnosticSessionControlRequestSID = new DiagnosticSessionControlRequestSID(*other_value.field_diagnosticSessionControlRequestSID);
+break;
+case ALT_ecuResetRequestSID:
+field_ecuResetRequestSID = new ECUResetRequestSID(*other_value.field_ecuResetRequestSID);
+break;
+case ALT_securityAccessRequestSID:
+field_securityAccessRequestSID = new SecurityAccessRequestSID(*other_value.field_securityAccessRequestSID);
+break;
+case ALT_communicationControlRequestSID:
+field_communicationControlRequestSID = new CommunicationControlRequestSID(*other_value.field_communicationControlRequestSID);
+break;
+case ALT_testerPresentRequestSID:
+field_testerPresentRequestSID = new TesterPresentRequestSID(*other_value.field_testerPresentRequestSID);
+break;
+case ALT_readDataByIdentifierRequestSID:
+field_readDataByIdentifierRequestSID = new ReadDataByIdentifierRequestSID(*other_value.field_readDataByIdentifierRequestSID);
+break;
+case ALT_writeDataByIdentifierRequestSID:
+field_writeDataByIdentifierRequestSID = new WriteDataByIdentifierRequestSID(*other_value.field_writeDataByIdentifierRequestSID);
+break;
+default:
+TTCN_error("Assignment of an unbound union value of type @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.");
+}
+union_selection = other_value.union_selection;
+}
+
+TopLevelMessage__UDS__requests::TopLevelMessage__UDS__requests()
+{
+union_selection = UNBOUND_VALUE;
+}
+
+TopLevelMessage__UDS__requests::TopLevelMessage__UDS__requests(const TopLevelMessage__UDS__requests& other_value)
+: Base_Type(){
+copy_value(other_value);
+}
+
+TopLevelMessage__UDS__requests::~TopLevelMessage__UDS__requests()
+{
+clean_up();
+}
+
+TopLevelMessage__UDS__requests& TopLevelMessage__UDS__requests::operator=(const TopLevelMessage__UDS__requests& other_value)
+{
+if (this != &other_value) {
+clean_up();
+copy_value(other_value);
+}
+return *this;
+}
+
+boolean TopLevelMessage__UDS__requests::operator==(const TopLevelMessage__UDS__requests& other_value) const
+{
+if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.");
+if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.");
+if (union_selection != other_value.union_selection) return FALSE;
+switch (union_selection) {
+case ALT_diagnosticSessionControlRequestSID:
+return *field_diagnosticSessionControlRequestSID == *other_value.field_diagnosticSessionControlRequestSID;
+case ALT_ecuResetRequestSID:
+return *field_ecuResetRequestSID == *other_value.field_ecuResetRequestSID;
+case ALT_securityAccessRequestSID:
+return *field_securityAccessRequestSID == *other_value.field_securityAccessRequestSID;
+case ALT_communicationControlRequestSID:
+return *field_communicationControlRequestSID == *other_value.field_communicationControlRequestSID;
+case ALT_testerPresentRequestSID:
+return *field_testerPresentRequestSID == *other_value.field_testerPresentRequestSID;
+case ALT_readDataByIdentifierRequestSID:
+return *field_readDataByIdentifierRequestSID == *other_value.field_readDataByIdentifierRequestSID;
+case ALT_writeDataByIdentifierRequestSID:
+return *field_writeDataByIdentifierRequestSID == *other_value.field_writeDataByIdentifierRequestSID;
+default:
+return FALSE;
+}
+}
+
+DiagnosticSessionControlRequestSID& TopLevelMessage__UDS__requests::diagnosticSessionControlRequestSID()
+{
+if (union_selection != ALT_diagnosticSessionControlRequestSID) {
+clean_up();
+field_diagnosticSessionControlRequestSID = new DiagnosticSessionControlRequestSID;
+union_selection = ALT_diagnosticSessionControlRequestSID;
+}
+return *field_diagnosticSessionControlRequestSID;
+}
+
+const DiagnosticSessionControlRequestSID& TopLevelMessage__UDS__requests::diagnosticSessionControlRequestSID() const
+{
+if (union_selection != ALT_diagnosticSessionControlRequestSID) TTCN_error("Using non-selected field diagnosticSessionControlRequestSID in a value of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.");
+return *field_diagnosticSessionControlRequestSID;
+}
+
+ECUResetRequestSID& TopLevelMessage__UDS__requests::ecuResetRequestSID()
+{
+if (union_selection != ALT_ecuResetRequestSID) {
+clean_up();
+field_ecuResetRequestSID = new ECUResetRequestSID;
+union_selection = ALT_ecuResetRequestSID;
+}
+return *field_ecuResetRequestSID;
+}
+
+const ECUResetRequestSID& TopLevelMessage__UDS__requests::ecuResetRequestSID() const
+{
+if (union_selection != ALT_ecuResetRequestSID) TTCN_error("Using non-selected field ecuResetRequestSID in a value of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.");
+return *field_ecuResetRequestSID;
+}
+
+SecurityAccessRequestSID& TopLevelMessage__UDS__requests::securityAccessRequestSID()
+{
+if (union_selection != ALT_securityAccessRequestSID) {
+clean_up();
+field_securityAccessRequestSID = new SecurityAccessRequestSID;
+union_selection = ALT_securityAccessRequestSID;
+}
+return *field_securityAccessRequestSID;
+}
+
+const SecurityAccessRequestSID& TopLevelMessage__UDS__requests::securityAccessRequestSID() const
+{
+if (union_selection != ALT_securityAccessRequestSID) TTCN_error("Using non-selected field securityAccessRequestSID in a value of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.");
+return *field_securityAccessRequestSID;
+}
+
+CommunicationControlRequestSID& TopLevelMessage__UDS__requests::communicationControlRequestSID()
+{
+if (union_selection != ALT_communicationControlRequestSID) {
+clean_up();
+field_communicationControlRequestSID = new CommunicationControlRequestSID;
+union_selection = ALT_communicationControlRequestSID;
+}
+return *field_communicationControlRequestSID;
+}
+
+const CommunicationControlRequestSID& TopLevelMessage__UDS__requests::communicationControlRequestSID() const
+{
+if (union_selection != ALT_communicationControlRequestSID) TTCN_error("Using non-selected field communicationControlRequestSID in a value of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.");
+return *field_communicationControlRequestSID;
+}
+
+TesterPresentRequestSID& TopLevelMessage__UDS__requests::testerPresentRequestSID()
+{
+if (union_selection != ALT_testerPresentRequestSID) {
+clean_up();
+field_testerPresentRequestSID = new TesterPresentRequestSID;
+union_selection = ALT_testerPresentRequestSID;
+}
+return *field_testerPresentRequestSID;
+}
+
+const TesterPresentRequestSID& TopLevelMessage__UDS__requests::testerPresentRequestSID() const
+{
+if (union_selection != ALT_testerPresentRequestSID) TTCN_error("Using non-selected field testerPresentRequestSID in a value of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.");
+return *field_testerPresentRequestSID;
+}
+
+ReadDataByIdentifierRequestSID& TopLevelMessage__UDS__requests::readDataByIdentifierRequestSID()
+{
+if (union_selection != ALT_readDataByIdentifierRequestSID) {
+clean_up();
+field_readDataByIdentifierRequestSID = new ReadDataByIdentifierRequestSID;
+union_selection = ALT_readDataByIdentifierRequestSID;
+}
+return *field_readDataByIdentifierRequestSID;
+}
+
+const ReadDataByIdentifierRequestSID& TopLevelMessage__UDS__requests::readDataByIdentifierRequestSID() const
+{
+if (union_selection != ALT_readDataByIdentifierRequestSID) TTCN_error("Using non-selected field readDataByIdentifierRequestSID in a value of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.");
+return *field_readDataByIdentifierRequestSID;
+}
+
+WriteDataByIdentifierRequestSID& TopLevelMessage__UDS__requests::writeDataByIdentifierRequestSID()
+{
+if (union_selection != ALT_writeDataByIdentifierRequestSID) {
+clean_up();
+field_writeDataByIdentifierRequestSID = new WriteDataByIdentifierRequestSID;
+union_selection = ALT_writeDataByIdentifierRequestSID;
+}
+return *field_writeDataByIdentifierRequestSID;
+}
+
+const WriteDataByIdentifierRequestSID& TopLevelMessage__UDS__requests::writeDataByIdentifierRequestSID() const
+{
+if (union_selection != ALT_writeDataByIdentifierRequestSID) TTCN_error("Using non-selected field writeDataByIdentifierRequestSID in a value of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.");
+return *field_writeDataByIdentifierRequestSID;
+}
+
+boolean TopLevelMessage__UDS__requests::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 @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.");
+return union_selection == checked_selection;
+}
+
+boolean TopLevelMessage__UDS__requests::is_bound() const
+{
+  return union_selection != UNBOUND_VALUE;
+}
+
+boolean TopLevelMessage__UDS__requests::is_value() const
+{
+switch (union_selection) {
+case UNBOUND_VALUE: return FALSE;
+case ALT_diagnosticSessionControlRequestSID: return field_diagnosticSessionControlRequestSID->is_value();
+case ALT_ecuResetRequestSID: return field_ecuResetRequestSID->is_value();
+case ALT_securityAccessRequestSID: return field_securityAccessRequestSID->is_value();
+case ALT_communicationControlRequestSID: return field_communicationControlRequestSID->is_value();
+case ALT_testerPresentRequestSID: return field_testerPresentRequestSID->is_value();
+case ALT_readDataByIdentifierRequestSID: return field_readDataByIdentifierRequestSID->is_value();
+case ALT_writeDataByIdentifierRequestSID: return field_writeDataByIdentifierRequestSID->is_value();
+default: TTCN_error("Invalid selection in union is_bound");}
+}
+
+void TopLevelMessage__UDS__requests::clean_up()
+{
+switch (union_selection) {
+case ALT_diagnosticSessionControlRequestSID:
+  delete field_diagnosticSessionControlRequestSID;
+  break;
+case ALT_ecuResetRequestSID:
+  delete field_ecuResetRequestSID;
+  break;
+case ALT_securityAccessRequestSID:
+  delete field_securityAccessRequestSID;
+  break;
+case ALT_communicationControlRequestSID:
+  delete field_communicationControlRequestSID;
+  break;
+case ALT_testerPresentRequestSID:
+  delete field_testerPresentRequestSID;
+  break;
+case ALT_readDataByIdentifierRequestSID:
+  delete field_readDataByIdentifierRequestSID;
+  break;
+case ALT_writeDataByIdentifierRequestSID:
+  delete field_writeDataByIdentifierRequestSID;
+  break;
+default:
+  break;
+}
+union_selection = UNBOUND_VALUE;
+}
+
+void TopLevelMessage__UDS__requests::log() const
+{
+switch (union_selection) {
+case ALT_diagnosticSessionControlRequestSID:
+TTCN_Logger::log_event_str("{ diagnosticSessionControlRequestSID := ");
+field_diagnosticSessionControlRequestSID->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_ecuResetRequestSID:
+TTCN_Logger::log_event_str("{ ecuResetRequestSID := ");
+field_ecuResetRequestSID->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_securityAccessRequestSID:
+TTCN_Logger::log_event_str("{ securityAccessRequestSID := ");
+field_securityAccessRequestSID->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_communicationControlRequestSID:
+TTCN_Logger::log_event_str("{ communicationControlRequestSID := ");
+field_communicationControlRequestSID->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_testerPresentRequestSID:
+TTCN_Logger::log_event_str("{ testerPresentRequestSID := ");
+field_testerPresentRequestSID->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_readDataByIdentifierRequestSID:
+TTCN_Logger::log_event_str("{ readDataByIdentifierRequestSID := ");
+field_readDataByIdentifierRequestSID->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_writeDataByIdentifierRequestSID:
+TTCN_Logger::log_event_str("{ writeDataByIdentifierRequestSID := ");
+field_writeDataByIdentifierRequestSID->log();
+TTCN_Logger::log_event_str(" }");
+break;
+default:
+TTCN_Logger::log_event_unbound();
+}
+}
+
+void TopLevelMessage__UDS__requests::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, "diagnosticSessionControlRequestSID")) {
+    diagnosticSessionControlRequestSID().set_param(*mp_last);
+    if (!diagnosticSessionControlRequestSID().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "ecuResetRequestSID")) {
+    ecuResetRequestSID().set_param(*mp_last);
+    if (!ecuResetRequestSID().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "securityAccessRequestSID")) {
+    securityAccessRequestSID().set_param(*mp_last);
+    if (!securityAccessRequestSID().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "communicationControlRequestSID")) {
+    communicationControlRequestSID().set_param(*mp_last);
+    if (!communicationControlRequestSID().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "testerPresentRequestSID")) {
+    testerPresentRequestSID().set_param(*mp_last);
+    if (!testerPresentRequestSID().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "readDataByIdentifierRequestSID")) {
+    readDataByIdentifierRequestSID().set_param(*mp_last);
+    if (!readDataByIdentifierRequestSID().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "writeDataByIdentifierRequestSID")) {
+    writeDataByIdentifierRequestSID().set_param(*mp_last);
+    if (!writeDataByIdentifierRequestSID().is_bound()) clean_up();
+    return;
+  }
+  mp_last->error("Field %s does not exist in type @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.", last_name);
+}
+
+void TopLevelMessage__UDS__requests::set_implicit_omit()
+{
+switch (union_selection) {
+case ALT_diagnosticSessionControlRequestSID:
+field_diagnosticSessionControlRequestSID->set_implicit_omit(); break;
+case ALT_ecuResetRequestSID:
+field_ecuResetRequestSID->set_implicit_omit(); break;
+case ALT_securityAccessRequestSID:
+field_securityAccessRequestSID->set_implicit_omit(); break;
+case ALT_communicationControlRequestSID:
+field_communicationControlRequestSID->set_implicit_omit(); break;
+case ALT_testerPresentRequestSID:
+field_testerPresentRequestSID->set_implicit_omit(); break;
+case ALT_readDataByIdentifierRequestSID:
+field_readDataByIdentifierRequestSID->set_implicit_omit(); break;
+case ALT_writeDataByIdentifierRequestSID:
+field_writeDataByIdentifierRequestSID->set_implicit_omit(); break;
+default: break;
+}
+}
+
+void TopLevelMessage__UDS__requests::encode_text(Text_Buf& text_buf) const
+{
+text_buf.push_int(union_selection);
+switch (union_selection) {
+case ALT_diagnosticSessionControlRequestSID:
+field_diagnosticSessionControlRequestSID->encode_text(text_buf);
+break;
+case ALT_ecuResetRequestSID:
+field_ecuResetRequestSID->encode_text(text_buf);
+break;
+case ALT_securityAccessRequestSID:
+field_securityAccessRequestSID->encode_text(text_buf);
+break;
+case ALT_communicationControlRequestSID:
+field_communicationControlRequestSID->encode_text(text_buf);
+break;
+case ALT_testerPresentRequestSID:
+field_testerPresentRequestSID->encode_text(text_buf);
+break;
+case ALT_readDataByIdentifierRequestSID:
+field_readDataByIdentifierRequestSID->encode_text(text_buf);
+break;
+case ALT_writeDataByIdentifierRequestSID:
+field_writeDataByIdentifierRequestSID->encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an unbound value of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.");
+}
+}
+
+void TopLevelMessage__UDS__requests::decode_text(Text_Buf& text_buf)
+{
+switch ((union_selection_type)text_buf.pull_int().get_val()) {
+case ALT_diagnosticSessionControlRequestSID:
+diagnosticSessionControlRequestSID().decode_text(text_buf);
+break;
+case ALT_ecuResetRequestSID:
+ecuResetRequestSID().decode_text(text_buf);
+break;
+case ALT_securityAccessRequestSID:
+securityAccessRequestSID().decode_text(text_buf);
+break;
+case ALT_communicationControlRequestSID:
+communicationControlRequestSID().decode_text(text_buf);
+break;
+case ALT_testerPresentRequestSID:
+testerPresentRequestSID().decode_text(text_buf);
+break;
+case ALT_readDataByIdentifierRequestSID:
+readDataByIdentifierRequestSID().decode_text(text_buf);
+break;
+case ALT_writeDataByIdentifierRequestSID:
+writeDataByIdentifierRequestSID().decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for type @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.");
+}
+}
+
+void TopLevelMessage__UDS__requests::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void TopLevelMessage__UDS__requests::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int TopLevelMessage__UDS__requests::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, DiagnosticSessionControlRequestSID_descr_.raw->forceomit);
+      decoded_length = diagnosticSessionControlRequestSID().RAW_decode(DiagnosticSessionControlRequestSID_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, ECUResetRequestSID_descr_.raw->forceomit);
+      decoded_length = ecuResetRequestSID().RAW_decode(ECUResetRequestSID_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, SecurityAccessRequestSID_descr_.raw->forceomit);
+      decoded_length = securityAccessRequestSID().RAW_decode(SecurityAccessRequestSID_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 3: {
+      RAW_Force_Omit field_force_omit(3, force_omit, CommunicationControlRequestSID_descr_.raw->forceomit);
+      decoded_length = communicationControlRequestSID().RAW_decode(CommunicationControlRequestSID_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 4: {
+      RAW_Force_Omit field_force_omit(4, force_omit, TesterPresentRequestSID_descr_.raw->forceomit);
+      decoded_length = testerPresentRequestSID().RAW_decode(TesterPresentRequestSID_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 5: {
+      RAW_Force_Omit field_force_omit(5, force_omit, ReadDataByIdentifierRequestSID_descr_.raw->forceomit);
+      decoded_length = readDataByIdentifierRequestSID().RAW_decode(ReadDataByIdentifierRequestSID_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 6: {
+      RAW_Force_Omit field_force_omit(6, force_omit, WriteDataByIdentifierRequestSID_descr_.raw->forceomit);
+      decoded_length = writeDataByIdentifierRequestSID().RAW_decode(WriteDataByIdentifierRequestSID_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 {
+    boolean already_failed = FALSE;
+    already_failed = FALSE;
+    if (!already_failed) {
+      OCTETSTRING temporal_0;
+      int decoded_0_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_0_length = temporal_0.RAW_decode(DiagnosticSessionControlRequestSID_sid_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_0_length > 0) {
+        if (temporal_0 ==  os_0) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(0, force_omit, DiagnosticSessionControlRequestSID_descr_.raw->forceomit);
+          decoded_length = diagnosticSessionControlRequestSID().RAW_decode(DiagnosticSessionControlRequestSID_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_diagnosticSessionControlRequestSID).sid() ==  os_0) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      OCTETSTRING temporal_1;
+      int decoded_1_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_1_length = temporal_1.RAW_decode(ECUResetRequestSID_sid_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_1_length > 0) {
+        if (temporal_1 ==  os_1) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(1, force_omit, ECUResetRequestSID_descr_.raw->forceomit);
+          decoded_length = ecuResetRequestSID().RAW_decode(ECUResetRequestSID_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_ecuResetRequestSID).sid() ==  os_1) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      OCTETSTRING temporal_2;
+      int decoded_2_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_2_length = temporal_2.RAW_decode(SecurityAccessRequestSID_sid_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_2_length > 0) {
+        if (temporal_2 ==  os_2) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(2, force_omit, SecurityAccessRequestSID_descr_.raw->forceomit);
+          decoded_length = securityAccessRequestSID().RAW_decode(SecurityAccessRequestSID_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_securityAccessRequestSID).sid() ==  os_2) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      OCTETSTRING temporal_3;
+      int decoded_3_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_3_length = temporal_3.RAW_decode(CommunicationControlRequestSID_sid_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_3_length > 0) {
+        if (temporal_3 ==  os_3) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(3, force_omit, CommunicationControlRequestSID_descr_.raw->forceomit);
+          decoded_length = communicationControlRequestSID().RAW_decode(CommunicationControlRequestSID_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_communicationControlRequestSID).sid() ==  os_3) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      OCTETSTRING temporal_4;
+      int decoded_4_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_4_length = temporal_4.RAW_decode(TesterPresentRequestSID_sid_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_4_length > 0) {
+        if (temporal_4 ==  os_4) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(4, force_omit, TesterPresentRequestSID_descr_.raw->forceomit);
+          decoded_length = testerPresentRequestSID().RAW_decode(TesterPresentRequestSID_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_testerPresentRequestSID).sid() ==  os_4) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      OCTETSTRING temporal_5;
+      int decoded_5_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_5_length = temporal_5.RAW_decode(ReadDataByIdentifierRequestSID_sid_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_5_length > 0) {
+        if (temporal_5 ==  os_5) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(5, force_omit, ReadDataByIdentifierRequestSID_descr_.raw->forceomit);
+          decoded_length = readDataByIdentifierRequestSID().RAW_decode(ReadDataByIdentifierRequestSID_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_readDataByIdentifierRequestSID).sid() ==  os_5) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      OCTETSTRING temporal_6;
+      int decoded_6_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_6_length = temporal_6.RAW_decode(WriteDataByIdentifierRequestSID_sid_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_6_length > 0) {
+        if (temporal_6 ==  os_6) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(6, force_omit, WriteDataByIdentifierRequestSID_descr_.raw->forceomit);
+          decoded_length = writeDataByIdentifierRequestSID().RAW_decode(WriteDataByIdentifierRequestSID_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_writeDataByIdentifierRequestSID).sid() ==  os_6) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+ }
+ clean_up();
+ return -1;
+}
+
+int TopLevelMessage__UDS__requests::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const
+{
+  int encoded_length = 0;
+  myleaf.isleaf = FALSE;
+  myleaf.body.node.num_of_nodes = 7;  myleaf.body.node.nodes = init_nodes_of_enc_tree(7);
+  memset(myleaf.body.node.nodes, 0, 7 * sizeof(RAW_enc_tree *));
+  switch (union_selection) {
+  case ALT_diagnosticSessionControlRequestSID:
+    myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 0, DiagnosticSessionControlRequestSID_descr_.raw);
+    encoded_length = field_diagnosticSessionControlRequestSID->RAW_encode(DiagnosticSessionControlRequestSID_descr_, *myleaf.body.node.nodes[0]);
+    myleaf.body.node.nodes[0]->coding_descr = &DiagnosticSessionControlRequestSID_descr_;
+    if ((*field_diagnosticSessionControlRequestSID).sid() !=  os_0) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={0,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   os_0.RAW_encode(DiagnosticSessionControlRequestSID_sid_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);
+  }
+    }
+    break;
+  case ALT_ecuResetRequestSID:
+    myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 1, ECUResetRequestSID_descr_.raw);
+    encoded_length = field_ecuResetRequestSID->RAW_encode(ECUResetRequestSID_descr_, *myleaf.body.node.nodes[1]);
+    myleaf.body.node.nodes[1]->coding_descr = &ECUResetRequestSID_descr_;
+    if ((*field_ecuResetRequestSID).sid() !=  os_1) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={1,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   os_1.RAW_encode(ECUResetRequestSID_sid_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);
+  }
+    }
+    break;
+  case ALT_securityAccessRequestSID:
+    myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 2, SecurityAccessRequestSID_descr_.raw);
+    encoded_length = field_securityAccessRequestSID->RAW_encode(SecurityAccessRequestSID_descr_, *myleaf.body.node.nodes[2]);
+    myleaf.body.node.nodes[2]->coding_descr = &SecurityAccessRequestSID_descr_;
+    if ((*field_securityAccessRequestSID).sid() !=  os_2) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={2,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   os_2.RAW_encode(SecurityAccessRequestSID_sid_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);
+  }
+    }
+    break;
+  case ALT_communicationControlRequestSID:
+    myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 3, CommunicationControlRequestSID_descr_.raw);
+    encoded_length = field_communicationControlRequestSID->RAW_encode(CommunicationControlRequestSID_descr_, *myleaf.body.node.nodes[3]);
+    myleaf.body.node.nodes[3]->coding_descr = &CommunicationControlRequestSID_descr_;
+    if ((*field_communicationControlRequestSID).sid() !=  os_3) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={3,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   os_3.RAW_encode(CommunicationControlRequestSID_sid_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);
+  }
+    }
+    break;
+  case ALT_testerPresentRequestSID:
+    myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 4, TesterPresentRequestSID_descr_.raw);
+    encoded_length = field_testerPresentRequestSID->RAW_encode(TesterPresentRequestSID_descr_, *myleaf.body.node.nodes[4]);
+    myleaf.body.node.nodes[4]->coding_descr = &TesterPresentRequestSID_descr_;
+    if ((*field_testerPresentRequestSID).sid() !=  os_4) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={4,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   os_4.RAW_encode(TesterPresentRequestSID_sid_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);
+  }
+    }
+    break;
+  case ALT_readDataByIdentifierRequestSID:
+    myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 5, ReadDataByIdentifierRequestSID_descr_.raw);
+    encoded_length = field_readDataByIdentifierRequestSID->RAW_encode(ReadDataByIdentifierRequestSID_descr_, *myleaf.body.node.nodes[5]);
+    myleaf.body.node.nodes[5]->coding_descr = &ReadDataByIdentifierRequestSID_descr_;
+    if ((*field_readDataByIdentifierRequestSID).sid() !=  os_5) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={5,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   os_5.RAW_encode(ReadDataByIdentifierRequestSID_sid_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);
+  }
+    }
+    break;
+  case ALT_writeDataByIdentifierRequestSID:
+    myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 6, WriteDataByIdentifierRequestSID_descr_.raw);
+    encoded_length = field_writeDataByIdentifierRequestSID->RAW_encode(WriteDataByIdentifierRequestSID_descr_, *myleaf.body.node.nodes[6]);
+    myleaf.body.node.nodes[6]->coding_descr = &WriteDataByIdentifierRequestSID_descr_;
+    if ((*field_writeDataByIdentifierRequestSID).sid() !=  os_6) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={6,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   os_6.RAW_encode(WriteDataByIdentifierRequestSID_sid_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);
+  }
+    }
+    break;
+  default:
+    TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
+  }
+  return encoded_length;
+}
+
+void TopLevelMessage__UDS__requests_template::copy_value(const TopLevelMessage__UDS__requests& other_value)
+{
+single_value.union_selection = other_value.get_selection();
+switch (single_value.union_selection) {
+case TopLevelMessage__UDS__requests::ALT_diagnosticSessionControlRequestSID:
+single_value.field_diagnosticSessionControlRequestSID = new DiagnosticSessionControlRequestSID_template(other_value.diagnosticSessionControlRequestSID());
+break;
+case TopLevelMessage__UDS__requests::ALT_ecuResetRequestSID:
+single_value.field_ecuResetRequestSID = new ECUResetRequestSID_template(other_value.ecuResetRequestSID());
+break;
+case TopLevelMessage__UDS__requests::ALT_securityAccessRequestSID:
+single_value.field_securityAccessRequestSID = new SecurityAccessRequestSID_template(other_value.securityAccessRequestSID());
+break;
+case TopLevelMessage__UDS__requests::ALT_communicationControlRequestSID:
+single_value.field_communicationControlRequestSID = new CommunicationControlRequestSID_template(other_value.communicationControlRequestSID());
+break;
+case TopLevelMessage__UDS__requests::ALT_testerPresentRequestSID:
+single_value.field_testerPresentRequestSID = new TesterPresentRequestSID_template(other_value.testerPresentRequestSID());
+break;
+case TopLevelMessage__UDS__requests::ALT_readDataByIdentifierRequestSID:
+single_value.field_readDataByIdentifierRequestSID = new ReadDataByIdentifierRequestSID_template(other_value.readDataByIdentifierRequestSID());
+break;
+case TopLevelMessage__UDS__requests::ALT_writeDataByIdentifierRequestSID:
+single_value.field_writeDataByIdentifierRequestSID = new WriteDataByIdentifierRequestSID_template(other_value.writeDataByIdentifierRequestSID());
+break;
+default:
+TTCN_error("Initializing a template with an unbound value of type @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.");
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void TopLevelMessage__UDS__requests_template::copy_template(const TopLevelMessage__UDS__requests_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 TopLevelMessage__UDS__requests::ALT_diagnosticSessionControlRequestSID:
+single_value.field_diagnosticSessionControlRequestSID = new DiagnosticSessionControlRequestSID_template(*other_value.single_value.field_diagnosticSessionControlRequestSID);
+break;
+case TopLevelMessage__UDS__requests::ALT_ecuResetRequestSID:
+single_value.field_ecuResetRequestSID = new ECUResetRequestSID_template(*other_value.single_value.field_ecuResetRequestSID);
+break;
+case TopLevelMessage__UDS__requests::ALT_securityAccessRequestSID:
+single_value.field_securityAccessRequestSID = new SecurityAccessRequestSID_template(*other_value.single_value.field_securityAccessRequestSID);
+break;
+case TopLevelMessage__UDS__requests::ALT_communicationControlRequestSID:
+single_value.field_communicationControlRequestSID = new CommunicationControlRequestSID_template(*other_value.single_value.field_communicationControlRequestSID);
+break;
+case TopLevelMessage__UDS__requests::ALT_testerPresentRequestSID:
+single_value.field_testerPresentRequestSID = new TesterPresentRequestSID_template(*other_value.single_value.field_testerPresentRequestSID);
+break;
+case TopLevelMessage__UDS__requests::ALT_readDataByIdentifierRequestSID:
+single_value.field_readDataByIdentifierRequestSID = new ReadDataByIdentifierRequestSID_template(*other_value.single_value.field_readDataByIdentifierRequestSID);
+break;
+case TopLevelMessage__UDS__requests::ALT_writeDataByIdentifierRequestSID:
+single_value.field_writeDataByIdentifierRequestSID = new WriteDataByIdentifierRequestSID_template(*other_value.single_value.field_writeDataByIdentifierRequestSID);
+break;
+default:
+TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.");
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new TopLevelMessage__UDS__requests_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;
+default:
+TTCN_error("Copying an uninitialized template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.");
+}
+set_selection(other_value);
+}
+
+TopLevelMessage__UDS__requests_template::TopLevelMessage__UDS__requests_template()
+{
+}
+
+TopLevelMessage__UDS__requests_template::TopLevelMessage__UDS__requests_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+TopLevelMessage__UDS__requests_template::TopLevelMessage__UDS__requests_template(const TopLevelMessage__UDS__requests& other_value)
+{
+copy_value(other_value);
+}
+
+TopLevelMessage__UDS__requests_template::TopLevelMessage__UDS__requests_template(const OPTIONAL<TopLevelMessage__UDS__requests>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const TopLevelMessage__UDS__requests&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests from an unbound optional field.");
+}
+}
+
+TopLevelMessage__UDS__requests_template::TopLevelMessage__UDS__requests_template(const TopLevelMessage__UDS__requests_template& other_value)
+: Base_Template(){
+copy_template(other_value);
+}
+
+TopLevelMessage__UDS__requests_template::~TopLevelMessage__UDS__requests_template()
+{
+clean_up();
+}
+
+void TopLevelMessage__UDS__requests_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case TopLevelMessage__UDS__requests::ALT_diagnosticSessionControlRequestSID:
+delete single_value.field_diagnosticSessionControlRequestSID;
+break;
+case TopLevelMessage__UDS__requests::ALT_ecuResetRequestSID:
+delete single_value.field_ecuResetRequestSID;
+break;
+case TopLevelMessage__UDS__requests::ALT_securityAccessRequestSID:
+delete single_value.field_securityAccessRequestSID;
+break;
+case TopLevelMessage__UDS__requests::ALT_communicationControlRequestSID:
+delete single_value.field_communicationControlRequestSID;
+break;
+case TopLevelMessage__UDS__requests::ALT_testerPresentRequestSID:
+delete single_value.field_testerPresentRequestSID;
+break;
+case TopLevelMessage__UDS__requests::ALT_readDataByIdentifierRequestSID:
+delete single_value.field_readDataByIdentifierRequestSID;
+break;
+case TopLevelMessage__UDS__requests::ALT_writeDataByIdentifierRequestSID:
+delete single_value.field_writeDataByIdentifierRequestSID;
+default:
+break;
+}
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+TopLevelMessage__UDS__requests_template& TopLevelMessage__UDS__requests_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+TopLevelMessage__UDS__requests_template& TopLevelMessage__UDS__requests_template::operator=(const TopLevelMessage__UDS__requests& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+TopLevelMessage__UDS__requests_template& TopLevelMessage__UDS__requests_template::operator=(const OPTIONAL<TopLevelMessage__UDS__requests>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const TopLevelMessage__UDS__requests&)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 @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.");
+}
+return *this;
+}
+
+TopLevelMessage__UDS__requests_template& TopLevelMessage__UDS__requests_template::operator=(const TopLevelMessage__UDS__requests_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean TopLevelMessage__UDS__requests_template::match(const TopLevelMessage__UDS__requests& 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:
+{
+TopLevelMessage__UDS__requests::union_selection_type value_selection = other_value.get_selection();
+if (value_selection == TopLevelMessage__UDS__requests::UNBOUND_VALUE) return FALSE;
+if (value_selection != single_value.union_selection) return FALSE;
+switch (value_selection) {
+case TopLevelMessage__UDS__requests::ALT_diagnosticSessionControlRequestSID:
+return single_value.field_diagnosticSessionControlRequestSID->match(other_value.diagnosticSessionControlRequestSID(), legacy);
+case TopLevelMessage__UDS__requests::ALT_ecuResetRequestSID:
+return single_value.field_ecuResetRequestSID->match(other_value.ecuResetRequestSID(), legacy);
+case TopLevelMessage__UDS__requests::ALT_securityAccessRequestSID:
+return single_value.field_securityAccessRequestSID->match(other_value.securityAccessRequestSID(), legacy);
+case TopLevelMessage__UDS__requests::ALT_communicationControlRequestSID:
+return single_value.field_communicationControlRequestSID->match(other_value.communicationControlRequestSID(), legacy);
+case TopLevelMessage__UDS__requests::ALT_testerPresentRequestSID:
+return single_value.field_testerPresentRequestSID->match(other_value.testerPresentRequestSID(), legacy);
+case TopLevelMessage__UDS__requests::ALT_readDataByIdentifierRequestSID:
+return single_value.field_readDataByIdentifierRequestSID->match(other_value.readDataByIdentifierRequestSID(), legacy);
+case TopLevelMessage__UDS__requests::ALT_writeDataByIdentifierRequestSID:
+return single_value.field_writeDataByIdentifierRequestSID->match(other_value.writeDataByIdentifierRequestSID(), legacy);
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.");
+}
+}
+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;
+default:
+TTCN_error ("Matching an uninitialized template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.");
+}
+return FALSE;
+}
+
+boolean TopLevelMessage__UDS__requests_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+switch (single_value.union_selection) {
+case TopLevelMessage__UDS__requests::ALT_diagnosticSessionControlRequestSID:
+return single_value.field_diagnosticSessionControlRequestSID->is_value();
+case TopLevelMessage__UDS__requests::ALT_ecuResetRequestSID:
+return single_value.field_ecuResetRequestSID->is_value();
+case TopLevelMessage__UDS__requests::ALT_securityAccessRequestSID:
+return single_value.field_securityAccessRequestSID->is_value();
+case TopLevelMessage__UDS__requests::ALT_communicationControlRequestSID:
+return single_value.field_communicationControlRequestSID->is_value();
+case TopLevelMessage__UDS__requests::ALT_testerPresentRequestSID:
+return single_value.field_testerPresentRequestSID->is_value();
+case TopLevelMessage__UDS__requests::ALT_readDataByIdentifierRequestSID:
+return single_value.field_readDataByIdentifierRequestSID->is_value();
+case TopLevelMessage__UDS__requests::ALT_writeDataByIdentifierRequestSID:
+return single_value.field_writeDataByIdentifierRequestSID->is_value();
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.");
+}
+}
+
+TopLevelMessage__UDS__requests TopLevelMessage__UDS__requests_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 @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.");
+TopLevelMessage__UDS__requests ret_val;
+switch (single_value.union_selection) {
+case TopLevelMessage__UDS__requests::ALT_diagnosticSessionControlRequestSID:
+ret_val.diagnosticSessionControlRequestSID() = single_value.field_diagnosticSessionControlRequestSID->valueof();
+break;
+case TopLevelMessage__UDS__requests::ALT_ecuResetRequestSID:
+ret_val.ecuResetRequestSID() = single_value.field_ecuResetRequestSID->valueof();
+break;
+case TopLevelMessage__UDS__requests::ALT_securityAccessRequestSID:
+ret_val.securityAccessRequestSID() = single_value.field_securityAccessRequestSID->valueof();
+break;
+case TopLevelMessage__UDS__requests::ALT_communicationControlRequestSID:
+ret_val.communicationControlRequestSID() = single_value.field_communicationControlRequestSID->valueof();
+break;
+case TopLevelMessage__UDS__requests::ALT_testerPresentRequestSID:
+ret_val.testerPresentRequestSID() = single_value.field_testerPresentRequestSID->valueof();
+break;
+case TopLevelMessage__UDS__requests::ALT_readDataByIdentifierRequestSID:
+ret_val.readDataByIdentifierRequestSID() = single_value.field_readDataByIdentifierRequestSID->valueof();
+break;
+case TopLevelMessage__UDS__requests::ALT_writeDataByIdentifierRequestSID:
+ret_val.writeDataByIdentifierRequestSID() = single_value.field_writeDataByIdentifierRequestSID->valueof();
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.");
+}
+return ret_val;
+}
+
+TopLevelMessage__UDS__requests_template& TopLevelMessage__UDS__requests_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.");
+return value_list.list_value[list_index];
+}
+void TopLevelMessage__UDS__requests_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error ("Internal error: Setting an invalid list for a template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new TopLevelMessage__UDS__requests_template[list_length];
+}
+
+DiagnosticSessionControlRequestSID_template& TopLevelMessage__UDS__requests_template::diagnosticSessionControlRequestSID()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != TopLevelMessage__UDS__requests::ALT_diagnosticSessionControlRequestSID) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_diagnosticSessionControlRequestSID = new DiagnosticSessionControlRequestSID_template(ANY_VALUE);
+else single_value.field_diagnosticSessionControlRequestSID = new DiagnosticSessionControlRequestSID_template;
+single_value.union_selection = TopLevelMessage__UDS__requests::ALT_diagnosticSessionControlRequestSID;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_diagnosticSessionControlRequestSID;
+}
+
+const DiagnosticSessionControlRequestSID_template& TopLevelMessage__UDS__requests_template::diagnosticSessionControlRequestSID() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field diagnosticSessionControlRequestSID in a non-specific template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.");
+if (single_value.union_selection != TopLevelMessage__UDS__requests::ALT_diagnosticSessionControlRequestSID) TTCN_error("Accessing non-selected field diagnosticSessionControlRequestSID in a template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.");
+return *single_value.field_diagnosticSessionControlRequestSID;
+}
+
+ECUResetRequestSID_template& TopLevelMessage__UDS__requests_template::ecuResetRequestSID()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != TopLevelMessage__UDS__requests::ALT_ecuResetRequestSID) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_ecuResetRequestSID = new ECUResetRequestSID_template(ANY_VALUE);
+else single_value.field_ecuResetRequestSID = new ECUResetRequestSID_template;
+single_value.union_selection = TopLevelMessage__UDS__requests::ALT_ecuResetRequestSID;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_ecuResetRequestSID;
+}
+
+const ECUResetRequestSID_template& TopLevelMessage__UDS__requests_template::ecuResetRequestSID() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field ecuResetRequestSID in a non-specific template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.");
+if (single_value.union_selection != TopLevelMessage__UDS__requests::ALT_ecuResetRequestSID) TTCN_error("Accessing non-selected field ecuResetRequestSID in a template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.");
+return *single_value.field_ecuResetRequestSID;
+}
+
+SecurityAccessRequestSID_template& TopLevelMessage__UDS__requests_template::securityAccessRequestSID()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != TopLevelMessage__UDS__requests::ALT_securityAccessRequestSID) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_securityAccessRequestSID = new SecurityAccessRequestSID_template(ANY_VALUE);
+else single_value.field_securityAccessRequestSID = new SecurityAccessRequestSID_template;
+single_value.union_selection = TopLevelMessage__UDS__requests::ALT_securityAccessRequestSID;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_securityAccessRequestSID;
+}
+
+const SecurityAccessRequestSID_template& TopLevelMessage__UDS__requests_template::securityAccessRequestSID() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field securityAccessRequestSID in a non-specific template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.");
+if (single_value.union_selection != TopLevelMessage__UDS__requests::ALT_securityAccessRequestSID) TTCN_error("Accessing non-selected field securityAccessRequestSID in a template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.");
+return *single_value.field_securityAccessRequestSID;
+}
+
+CommunicationControlRequestSID_template& TopLevelMessage__UDS__requests_template::communicationControlRequestSID()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != TopLevelMessage__UDS__requests::ALT_communicationControlRequestSID) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_communicationControlRequestSID = new CommunicationControlRequestSID_template(ANY_VALUE);
+else single_value.field_communicationControlRequestSID = new CommunicationControlRequestSID_template;
+single_value.union_selection = TopLevelMessage__UDS__requests::ALT_communicationControlRequestSID;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_communicationControlRequestSID;
+}
+
+const CommunicationControlRequestSID_template& TopLevelMessage__UDS__requests_template::communicationControlRequestSID() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field communicationControlRequestSID in a non-specific template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.");
+if (single_value.union_selection != TopLevelMessage__UDS__requests::ALT_communicationControlRequestSID) TTCN_error("Accessing non-selected field communicationControlRequestSID in a template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.");
+return *single_value.field_communicationControlRequestSID;
+}
+
+TesterPresentRequestSID_template& TopLevelMessage__UDS__requests_template::testerPresentRequestSID()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != TopLevelMessage__UDS__requests::ALT_testerPresentRequestSID) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_testerPresentRequestSID = new TesterPresentRequestSID_template(ANY_VALUE);
+else single_value.field_testerPresentRequestSID = new TesterPresentRequestSID_template;
+single_value.union_selection = TopLevelMessage__UDS__requests::ALT_testerPresentRequestSID;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_testerPresentRequestSID;
+}
+
+const TesterPresentRequestSID_template& TopLevelMessage__UDS__requests_template::testerPresentRequestSID() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field testerPresentRequestSID in a non-specific template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.");
+if (single_value.union_selection != TopLevelMessage__UDS__requests::ALT_testerPresentRequestSID) TTCN_error("Accessing non-selected field testerPresentRequestSID in a template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.");
+return *single_value.field_testerPresentRequestSID;
+}
+
+ReadDataByIdentifierRequestSID_template& TopLevelMessage__UDS__requests_template::readDataByIdentifierRequestSID()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != TopLevelMessage__UDS__requests::ALT_readDataByIdentifierRequestSID) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_readDataByIdentifierRequestSID = new ReadDataByIdentifierRequestSID_template(ANY_VALUE);
+else single_value.field_readDataByIdentifierRequestSID = new ReadDataByIdentifierRequestSID_template;
+single_value.union_selection = TopLevelMessage__UDS__requests::ALT_readDataByIdentifierRequestSID;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_readDataByIdentifierRequestSID;
+}
+
+const ReadDataByIdentifierRequestSID_template& TopLevelMessage__UDS__requests_template::readDataByIdentifierRequestSID() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field readDataByIdentifierRequestSID in a non-specific template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.");
+if (single_value.union_selection != TopLevelMessage__UDS__requests::ALT_readDataByIdentifierRequestSID) TTCN_error("Accessing non-selected field readDataByIdentifierRequestSID in a template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.");
+return *single_value.field_readDataByIdentifierRequestSID;
+}
+
+WriteDataByIdentifierRequestSID_template& TopLevelMessage__UDS__requests_template::writeDataByIdentifierRequestSID()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != TopLevelMessage__UDS__requests::ALT_writeDataByIdentifierRequestSID) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_writeDataByIdentifierRequestSID = new WriteDataByIdentifierRequestSID_template(ANY_VALUE);
+else single_value.field_writeDataByIdentifierRequestSID = new WriteDataByIdentifierRequestSID_template;
+single_value.union_selection = TopLevelMessage__UDS__requests::ALT_writeDataByIdentifierRequestSID;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_writeDataByIdentifierRequestSID;
+}
+
+const WriteDataByIdentifierRequestSID_template& TopLevelMessage__UDS__requests_template::writeDataByIdentifierRequestSID() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field writeDataByIdentifierRequestSID in a non-specific template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.");
+if (single_value.union_selection != TopLevelMessage__UDS__requests::ALT_writeDataByIdentifierRequestSID) TTCN_error("Accessing non-selected field writeDataByIdentifierRequestSID in a template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.");
+return *single_value.field_writeDataByIdentifierRequestSID;
+}
+
+boolean TopLevelMessage__UDS__requests_template::ischosen(TopLevelMessage__UDS__requests::union_selection_type checked_selection) const
+{
+if (checked_selection == TopLevelMessage__UDS__requests::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.");
+switch (template_selection) {
+case SPECIFIC_VALUE:
+if (single_value.union_selection == TopLevelMessage__UDS__requests::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.");
+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 @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests 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 TopLevelMessage__UDS__requests_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case TopLevelMessage__UDS__requests::ALT_diagnosticSessionControlRequestSID:
+TTCN_Logger::log_event_str("{ diagnosticSessionControlRequestSID := ");
+single_value.field_diagnosticSessionControlRequestSID->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case TopLevelMessage__UDS__requests::ALT_ecuResetRequestSID:
+TTCN_Logger::log_event_str("{ ecuResetRequestSID := ");
+single_value.field_ecuResetRequestSID->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case TopLevelMessage__UDS__requests::ALT_securityAccessRequestSID:
+TTCN_Logger::log_event_str("{ securityAccessRequestSID := ");
+single_value.field_securityAccessRequestSID->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case TopLevelMessage__UDS__requests::ALT_communicationControlRequestSID:
+TTCN_Logger::log_event_str("{ communicationControlRequestSID := ");
+single_value.field_communicationControlRequestSID->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case TopLevelMessage__UDS__requests::ALT_testerPresentRequestSID:
+TTCN_Logger::log_event_str("{ testerPresentRequestSID := ");
+single_value.field_testerPresentRequestSID->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case TopLevelMessage__UDS__requests::ALT_readDataByIdentifierRequestSID:
+TTCN_Logger::log_event_str("{ readDataByIdentifierRequestSID := ");
+single_value.field_readDataByIdentifierRequestSID->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case TopLevelMessage__UDS__requests::ALT_writeDataByIdentifierRequestSID:
+TTCN_Logger::log_event_str("{ writeDataByIdentifierRequestSID := ");
+single_value.field_writeDataByIdentifierRequestSID->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 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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void TopLevelMessage__UDS__requests_template::log_match(const TopLevelMessage__UDS__requests& 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()) {
+switch (single_value.union_selection) {
+case TopLevelMessage__UDS__requests::ALT_diagnosticSessionControlRequestSID:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".diagnosticSessionControlRequestSID");
+single_value.field_diagnosticSessionControlRequestSID->log_match(match_value.diagnosticSessionControlRequestSID(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ diagnosticSessionControlRequestSID := ");
+single_value.field_diagnosticSessionControlRequestSID->log_match(match_value.diagnosticSessionControlRequestSID(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case TopLevelMessage__UDS__requests::ALT_ecuResetRequestSID:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".ecuResetRequestSID");
+single_value.field_ecuResetRequestSID->log_match(match_value.ecuResetRequestSID(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ ecuResetRequestSID := ");
+single_value.field_ecuResetRequestSID->log_match(match_value.ecuResetRequestSID(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case TopLevelMessage__UDS__requests::ALT_securityAccessRequestSID:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".securityAccessRequestSID");
+single_value.field_securityAccessRequestSID->log_match(match_value.securityAccessRequestSID(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ securityAccessRequestSID := ");
+single_value.field_securityAccessRequestSID->log_match(match_value.securityAccessRequestSID(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case TopLevelMessage__UDS__requests::ALT_communicationControlRequestSID:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".communicationControlRequestSID");
+single_value.field_communicationControlRequestSID->log_match(match_value.communicationControlRequestSID(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ communicationControlRequestSID := ");
+single_value.field_communicationControlRequestSID->log_match(match_value.communicationControlRequestSID(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case TopLevelMessage__UDS__requests::ALT_testerPresentRequestSID:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".testerPresentRequestSID");
+single_value.field_testerPresentRequestSID->log_match(match_value.testerPresentRequestSID(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ testerPresentRequestSID := ");
+single_value.field_testerPresentRequestSID->log_match(match_value.testerPresentRequestSID(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case TopLevelMessage__UDS__requests::ALT_readDataByIdentifierRequestSID:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".readDataByIdentifierRequestSID");
+single_value.field_readDataByIdentifierRequestSID->log_match(match_value.readDataByIdentifierRequestSID(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ readDataByIdentifierRequestSID := ");
+single_value.field_readDataByIdentifierRequestSID->log_match(match_value.readDataByIdentifierRequestSID(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case TopLevelMessage__UDS__requests::ALT_writeDataByIdentifierRequestSID:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".writeDataByIdentifierRequestSID");
+single_value.field_writeDataByIdentifierRequestSID->log_match(match_value.writeDataByIdentifierRequestSID(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ writeDataByIdentifierRequestSID := ");
+single_value.field_writeDataByIdentifierRequestSID->log_match(match_value.writeDataByIdentifierRequestSID(), 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 TopLevelMessage__UDS__requests_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 TopLevelMessage__UDS__requests::ALT_diagnosticSessionControlRequestSID:
+single_value.field_diagnosticSessionControlRequestSID->encode_text(text_buf);
+break;
+case TopLevelMessage__UDS__requests::ALT_ecuResetRequestSID:
+single_value.field_ecuResetRequestSID->encode_text(text_buf);
+break;
+case TopLevelMessage__UDS__requests::ALT_securityAccessRequestSID:
+single_value.field_securityAccessRequestSID->encode_text(text_buf);
+break;
+case TopLevelMessage__UDS__requests::ALT_communicationControlRequestSID:
+single_value.field_communicationControlRequestSID->encode_text(text_buf);
+break;
+case TopLevelMessage__UDS__requests::ALT_testerPresentRequestSID:
+single_value.field_testerPresentRequestSID->encode_text(text_buf);
+break;
+case TopLevelMessage__UDS__requests::ALT_readDataByIdentifierRequestSID:
+single_value.field_readDataByIdentifierRequestSID->encode_text(text_buf);
+break;
+case TopLevelMessage__UDS__requests::ALT_writeDataByIdentifierRequestSID:
+single_value.field_writeDataByIdentifierRequestSID->encode_text(text_buf);
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.");
+}
+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 @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.");
+}
+}
+
+void TopLevelMessage__UDS__requests_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+{
+single_value.union_selection = TopLevelMessage__UDS__requests::UNBOUND_VALUE;
+TopLevelMessage__UDS__requests::union_selection_type new_selection = (TopLevelMessage__UDS__requests::union_selection_type)text_buf.pull_int().get_val();
+switch (new_selection) {
+case TopLevelMessage__UDS__requests::ALT_diagnosticSessionControlRequestSID:
+single_value.field_diagnosticSessionControlRequestSID = new DiagnosticSessionControlRequestSID_template;
+single_value.field_diagnosticSessionControlRequestSID->decode_text(text_buf);
+break;
+case TopLevelMessage__UDS__requests::ALT_ecuResetRequestSID:
+single_value.field_ecuResetRequestSID = new ECUResetRequestSID_template;
+single_value.field_ecuResetRequestSID->decode_text(text_buf);
+break;
+case TopLevelMessage__UDS__requests::ALT_securityAccessRequestSID:
+single_value.field_securityAccessRequestSID = new SecurityAccessRequestSID_template;
+single_value.field_securityAccessRequestSID->decode_text(text_buf);
+break;
+case TopLevelMessage__UDS__requests::ALT_communicationControlRequestSID:
+single_value.field_communicationControlRequestSID = new CommunicationControlRequestSID_template;
+single_value.field_communicationControlRequestSID->decode_text(text_buf);
+break;
+case TopLevelMessage__UDS__requests::ALT_testerPresentRequestSID:
+single_value.field_testerPresentRequestSID = new TesterPresentRequestSID_template;
+single_value.field_testerPresentRequestSID->decode_text(text_buf);
+break;
+case TopLevelMessage__UDS__requests::ALT_readDataByIdentifierRequestSID:
+single_value.field_readDataByIdentifierRequestSID = new ReadDataByIdentifierRequestSID_template;
+single_value.field_readDataByIdentifierRequestSID->decode_text(text_buf);
+break;
+case TopLevelMessage__UDS__requests::ALT_writeDataByIdentifierRequestSID:
+single_value.field_writeDataByIdentifierRequestSID = new WriteDataByIdentifierRequestSID_template;
+single_value.field_writeDataByIdentifierRequestSID->decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.");
+}
+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 TopLevelMessage__UDS__requests_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 @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.");
+}
+}
+
+boolean TopLevelMessage__UDS__requests_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean TopLevelMessage__UDS__requests_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 TopLevelMessage__UDS__requests_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 `@UnifiedDiagnosticServices.TopLevelMessage_UDS_requests'");
+    }
+    if (strcmp("diagnosticSessionControlRequestSID", param_field) == 0) {
+      diagnosticSessionControlRequestSID().set_param(param);
+      return;
+    } else if (strcmp("ecuResetRequestSID", param_field) == 0) {
+      ecuResetRequestSID().set_param(param);
+      return;
+    } else if (strcmp("securityAccessRequestSID", param_field) == 0) {
+      securityAccessRequestSID().set_param(param);
+      return;
+    } else if (strcmp("communicationControlRequestSID", param_field) == 0) {
+      communicationControlRequestSID().set_param(param);
+      return;
+    } else if (strcmp("testerPresentRequestSID", param_field) == 0) {
+      testerPresentRequestSID().set_param(param);
+      return;
+    } else if (strcmp("readDataByIdentifierRequestSID", param_field) == 0) {
+      readDataByIdentifierRequestSID().set_param(param);
+      return;
+    } else if (strcmp("writeDataByIdentifierRequestSID", param_field) == 0) {
+      writeDataByIdentifierRequestSID().set_param(param);
+      return;
+    } else param.error("Field `%s' not found in union template type `@UnifiedDiagnosticServices.TopLevelMessage_UDS_requests'", 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: {
+    TopLevelMessage__UDS__requests_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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", "@UnifiedDiagnosticServices.TopLevelMessage_UDS_requests");
+    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, "diagnosticSessionControlRequestSID")) {
+      diagnosticSessionControlRequestSID().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "ecuResetRequestSID")) {
+      ecuResetRequestSID().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "securityAccessRequestSID")) {
+      securityAccessRequestSID().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "communicationControlRequestSID")) {
+      communicationControlRequestSID().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "testerPresentRequestSID")) {
+      testerPresentRequestSID().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "readDataByIdentifierRequestSID")) {
+      readDataByIdentifierRequestSID().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "writeDataByIdentifierRequestSID")) {
+      writeDataByIdentifierRequestSID().set_param(*mp_last);
+      break;
+    }
+    mp_last->error("Field %s does not exist in type @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.", last_name);
+  } break;
+  default:
+    param.type_error("union template", "@UnifiedDiagnosticServices.TopLevelMessage_UDS_requests");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void TopLevelMessage__UDS__requests_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 TopLevelMessage__UDS__requests::ALT_diagnosticSessionControlRequestSID:
+single_value.field_diagnosticSessionControlRequestSID->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.TopLevelMessage_UDS_requests");
+return;
+case TopLevelMessage__UDS__requests::ALT_ecuResetRequestSID:
+single_value.field_ecuResetRequestSID->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.TopLevelMessage_UDS_requests");
+return;
+case TopLevelMessage__UDS__requests::ALT_securityAccessRequestSID:
+single_value.field_securityAccessRequestSID->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.TopLevelMessage_UDS_requests");
+return;
+case TopLevelMessage__UDS__requests::ALT_communicationControlRequestSID:
+single_value.field_communicationControlRequestSID->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.TopLevelMessage_UDS_requests");
+return;
+case TopLevelMessage__UDS__requests::ALT_testerPresentRequestSID:
+single_value.field_testerPresentRequestSID->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.TopLevelMessage_UDS_requests");
+return;
+case TopLevelMessage__UDS__requests::ALT_readDataByIdentifierRequestSID:
+single_value.field_readDataByIdentifierRequestSID->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.TopLevelMessage_UDS_requests");
+return;
+case TopLevelMessage__UDS__requests::ALT_writeDataByIdentifierRequestSID:
+single_value.field_writeDataByIdentifierRequestSID->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.TopLevelMessage_UDS_requests");
+return;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests.");
+}
+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 : "@UnifiedDiagnosticServices.TopLevelMessage_UDS_requests");
+}
+
+void TopLevelMessage__UDS__responses::copy_value(const TopLevelMessage__UDS__responses& other_value)
+{
+switch (other_value.union_selection) {
+case ALT_diagnosticSessionControlResponseSID:
+field_diagnosticSessionControlResponseSID = new DiagnosticSessionControlResponseSID(*other_value.field_diagnosticSessionControlResponseSID);
+break;
+case ALT_ecuResetResponseSID:
+field_ecuResetResponseSID = new ECUResetResponseSID(*other_value.field_ecuResetResponseSID);
+break;
+case ALT_securityAccessResponseSID:
+field_securityAccessResponseSID = new SecurityAccessResponseSID(*other_value.field_securityAccessResponseSID);
+break;
+case ALT_communicationControlResponseSID:
+field_communicationControlResponseSID = new CommunicationControlResponseSID(*other_value.field_communicationControlResponseSID);
+break;
+case ALT_testerPresentResponseSID:
+field_testerPresentResponseSID = new TesterPresentResponseSID(*other_value.field_testerPresentResponseSID);
+break;
+case ALT_readDataByIdentifierResponseSID:
+field_readDataByIdentifierResponseSID = new ReadDataByIdentifierResponseSID(*other_value.field_readDataByIdentifierResponseSID);
+break;
+case ALT_writeDataByIdentifierResponseSID:
+field_writeDataByIdentifierResponseSID = new WriteDataByIdentifierResponseSID(*other_value.field_writeDataByIdentifierResponseSID);
+break;
+case ALT_negativeResponseCodeSID:
+field_negativeResponseCodeSID = new NegativeResponseCodeSID(*other_value.field_negativeResponseCodeSID);
+break;
+default:
+TTCN_error("Assignment of an unbound union value of type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+}
+union_selection = other_value.union_selection;
+}
+
+TopLevelMessage__UDS__responses::TopLevelMessage__UDS__responses()
+{
+union_selection = UNBOUND_VALUE;
+}
+
+TopLevelMessage__UDS__responses::TopLevelMessage__UDS__responses(const TopLevelMessage__UDS__responses& other_value)
+: Base_Type(){
+copy_value(other_value);
+}
+
+TopLevelMessage__UDS__responses::~TopLevelMessage__UDS__responses()
+{
+clean_up();
+}
+
+TopLevelMessage__UDS__responses& TopLevelMessage__UDS__responses::operator=(const TopLevelMessage__UDS__responses& other_value)
+{
+if (this != &other_value) {
+clean_up();
+copy_value(other_value);
+}
+return *this;
+}
+
+boolean TopLevelMessage__UDS__responses::operator==(const TopLevelMessage__UDS__responses& other_value) const
+{
+if (union_selection == UNBOUND_VALUE) TTCN_error("The left operand of comparison is an unbound value of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+if (other_value.union_selection == UNBOUND_VALUE) TTCN_error("The right operand of comparison is an unbound value of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+if (union_selection != other_value.union_selection) return FALSE;
+switch (union_selection) {
+case ALT_diagnosticSessionControlResponseSID:
+return *field_diagnosticSessionControlResponseSID == *other_value.field_diagnosticSessionControlResponseSID;
+case ALT_ecuResetResponseSID:
+return *field_ecuResetResponseSID == *other_value.field_ecuResetResponseSID;
+case ALT_securityAccessResponseSID:
+return *field_securityAccessResponseSID == *other_value.field_securityAccessResponseSID;
+case ALT_communicationControlResponseSID:
+return *field_communicationControlResponseSID == *other_value.field_communicationControlResponseSID;
+case ALT_testerPresentResponseSID:
+return *field_testerPresentResponseSID == *other_value.field_testerPresentResponseSID;
+case ALT_readDataByIdentifierResponseSID:
+return *field_readDataByIdentifierResponseSID == *other_value.field_readDataByIdentifierResponseSID;
+case ALT_writeDataByIdentifierResponseSID:
+return *field_writeDataByIdentifierResponseSID == *other_value.field_writeDataByIdentifierResponseSID;
+case ALT_negativeResponseCodeSID:
+return *field_negativeResponseCodeSID == *other_value.field_negativeResponseCodeSID;
+default:
+return FALSE;
+}
+}
+
+DiagnosticSessionControlResponseSID& TopLevelMessage__UDS__responses::diagnosticSessionControlResponseSID()
+{
+if (union_selection != ALT_diagnosticSessionControlResponseSID) {
+clean_up();
+field_diagnosticSessionControlResponseSID = new DiagnosticSessionControlResponseSID;
+union_selection = ALT_diagnosticSessionControlResponseSID;
+}
+return *field_diagnosticSessionControlResponseSID;
+}
+
+const DiagnosticSessionControlResponseSID& TopLevelMessage__UDS__responses::diagnosticSessionControlResponseSID() const
+{
+if (union_selection != ALT_diagnosticSessionControlResponseSID) TTCN_error("Using non-selected field diagnosticSessionControlResponseSID in a value of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+return *field_diagnosticSessionControlResponseSID;
+}
+
+ECUResetResponseSID& TopLevelMessage__UDS__responses::ecuResetResponseSID()
+{
+if (union_selection != ALT_ecuResetResponseSID) {
+clean_up();
+field_ecuResetResponseSID = new ECUResetResponseSID;
+union_selection = ALT_ecuResetResponseSID;
+}
+return *field_ecuResetResponseSID;
+}
+
+const ECUResetResponseSID& TopLevelMessage__UDS__responses::ecuResetResponseSID() const
+{
+if (union_selection != ALT_ecuResetResponseSID) TTCN_error("Using non-selected field ecuResetResponseSID in a value of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+return *field_ecuResetResponseSID;
+}
+
+SecurityAccessResponseSID& TopLevelMessage__UDS__responses::securityAccessResponseSID()
+{
+if (union_selection != ALT_securityAccessResponseSID) {
+clean_up();
+field_securityAccessResponseSID = new SecurityAccessResponseSID;
+union_selection = ALT_securityAccessResponseSID;
+}
+return *field_securityAccessResponseSID;
+}
+
+const SecurityAccessResponseSID& TopLevelMessage__UDS__responses::securityAccessResponseSID() const
+{
+if (union_selection != ALT_securityAccessResponseSID) TTCN_error("Using non-selected field securityAccessResponseSID in a value of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+return *field_securityAccessResponseSID;
+}
+
+CommunicationControlResponseSID& TopLevelMessage__UDS__responses::communicationControlResponseSID()
+{
+if (union_selection != ALT_communicationControlResponseSID) {
+clean_up();
+field_communicationControlResponseSID = new CommunicationControlResponseSID;
+union_selection = ALT_communicationControlResponseSID;
+}
+return *field_communicationControlResponseSID;
+}
+
+const CommunicationControlResponseSID& TopLevelMessage__UDS__responses::communicationControlResponseSID() const
+{
+if (union_selection != ALT_communicationControlResponseSID) TTCN_error("Using non-selected field communicationControlResponseSID in a value of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+return *field_communicationControlResponseSID;
+}
+
+TesterPresentResponseSID& TopLevelMessage__UDS__responses::testerPresentResponseSID()
+{
+if (union_selection != ALT_testerPresentResponseSID) {
+clean_up();
+field_testerPresentResponseSID = new TesterPresentResponseSID;
+union_selection = ALT_testerPresentResponseSID;
+}
+return *field_testerPresentResponseSID;
+}
+
+const TesterPresentResponseSID& TopLevelMessage__UDS__responses::testerPresentResponseSID() const
+{
+if (union_selection != ALT_testerPresentResponseSID) TTCN_error("Using non-selected field testerPresentResponseSID in a value of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+return *field_testerPresentResponseSID;
+}
+
+ReadDataByIdentifierResponseSID& TopLevelMessage__UDS__responses::readDataByIdentifierResponseSID()
+{
+if (union_selection != ALT_readDataByIdentifierResponseSID) {
+clean_up();
+field_readDataByIdentifierResponseSID = new ReadDataByIdentifierResponseSID;
+union_selection = ALT_readDataByIdentifierResponseSID;
+}
+return *field_readDataByIdentifierResponseSID;
+}
+
+const ReadDataByIdentifierResponseSID& TopLevelMessage__UDS__responses::readDataByIdentifierResponseSID() const
+{
+if (union_selection != ALT_readDataByIdentifierResponseSID) TTCN_error("Using non-selected field readDataByIdentifierResponseSID in a value of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+return *field_readDataByIdentifierResponseSID;
+}
+
+WriteDataByIdentifierResponseSID& TopLevelMessage__UDS__responses::writeDataByIdentifierResponseSID()
+{
+if (union_selection != ALT_writeDataByIdentifierResponseSID) {
+clean_up();
+field_writeDataByIdentifierResponseSID = new WriteDataByIdentifierResponseSID;
+union_selection = ALT_writeDataByIdentifierResponseSID;
+}
+return *field_writeDataByIdentifierResponseSID;
+}
+
+const WriteDataByIdentifierResponseSID& TopLevelMessage__UDS__responses::writeDataByIdentifierResponseSID() const
+{
+if (union_selection != ALT_writeDataByIdentifierResponseSID) TTCN_error("Using non-selected field writeDataByIdentifierResponseSID in a value of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+return *field_writeDataByIdentifierResponseSID;
+}
+
+NegativeResponseCodeSID& TopLevelMessage__UDS__responses::negativeResponseCodeSID()
+{
+if (union_selection != ALT_negativeResponseCodeSID) {
+clean_up();
+field_negativeResponseCodeSID = new NegativeResponseCodeSID;
+union_selection = ALT_negativeResponseCodeSID;
+}
+return *field_negativeResponseCodeSID;
+}
+
+const NegativeResponseCodeSID& TopLevelMessage__UDS__responses::negativeResponseCodeSID() const
+{
+if (union_selection != ALT_negativeResponseCodeSID) TTCN_error("Using non-selected field negativeResponseCodeSID in a value of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+return *field_negativeResponseCodeSID;
+}
+
+boolean TopLevelMessage__UDS__responses::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 @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+return union_selection == checked_selection;
+}
+
+boolean TopLevelMessage__UDS__responses::is_bound() const
+{
+  return union_selection != UNBOUND_VALUE;
+}
+
+boolean TopLevelMessage__UDS__responses::is_value() const
+{
+switch (union_selection) {
+case UNBOUND_VALUE: return FALSE;
+case ALT_diagnosticSessionControlResponseSID: return field_diagnosticSessionControlResponseSID->is_value();
+case ALT_ecuResetResponseSID: return field_ecuResetResponseSID->is_value();
+case ALT_securityAccessResponseSID: return field_securityAccessResponseSID->is_value();
+case ALT_communicationControlResponseSID: return field_communicationControlResponseSID->is_value();
+case ALT_testerPresentResponseSID: return field_testerPresentResponseSID->is_value();
+case ALT_readDataByIdentifierResponseSID: return field_readDataByIdentifierResponseSID->is_value();
+case ALT_writeDataByIdentifierResponseSID: return field_writeDataByIdentifierResponseSID->is_value();
+case ALT_negativeResponseCodeSID: return field_negativeResponseCodeSID->is_value();
+default: TTCN_error("Invalid selection in union is_bound");}
+}
+
+void TopLevelMessage__UDS__responses::clean_up()
+{
+switch (union_selection) {
+case ALT_diagnosticSessionControlResponseSID:
+  delete field_diagnosticSessionControlResponseSID;
+  break;
+case ALT_ecuResetResponseSID:
+  delete field_ecuResetResponseSID;
+  break;
+case ALT_securityAccessResponseSID:
+  delete field_securityAccessResponseSID;
+  break;
+case ALT_communicationControlResponseSID:
+  delete field_communicationControlResponseSID;
+  break;
+case ALT_testerPresentResponseSID:
+  delete field_testerPresentResponseSID;
+  break;
+case ALT_readDataByIdentifierResponseSID:
+  delete field_readDataByIdentifierResponseSID;
+  break;
+case ALT_writeDataByIdentifierResponseSID:
+  delete field_writeDataByIdentifierResponseSID;
+  break;
+case ALT_negativeResponseCodeSID:
+  delete field_negativeResponseCodeSID;
+  break;
+default:
+  break;
+}
+union_selection = UNBOUND_VALUE;
+}
+
+void TopLevelMessage__UDS__responses::log() const
+{
+switch (union_selection) {
+case ALT_diagnosticSessionControlResponseSID:
+TTCN_Logger::log_event_str("{ diagnosticSessionControlResponseSID := ");
+field_diagnosticSessionControlResponseSID->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_ecuResetResponseSID:
+TTCN_Logger::log_event_str("{ ecuResetResponseSID := ");
+field_ecuResetResponseSID->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_securityAccessResponseSID:
+TTCN_Logger::log_event_str("{ securityAccessResponseSID := ");
+field_securityAccessResponseSID->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_communicationControlResponseSID:
+TTCN_Logger::log_event_str("{ communicationControlResponseSID := ");
+field_communicationControlResponseSID->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_testerPresentResponseSID:
+TTCN_Logger::log_event_str("{ testerPresentResponseSID := ");
+field_testerPresentResponseSID->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_readDataByIdentifierResponseSID:
+TTCN_Logger::log_event_str("{ readDataByIdentifierResponseSID := ");
+field_readDataByIdentifierResponseSID->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_writeDataByIdentifierResponseSID:
+TTCN_Logger::log_event_str("{ writeDataByIdentifierResponseSID := ");
+field_writeDataByIdentifierResponseSID->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case ALT_negativeResponseCodeSID:
+TTCN_Logger::log_event_str("{ negativeResponseCodeSID := ");
+field_negativeResponseCodeSID->log();
+TTCN_Logger::log_event_str(" }");
+break;
+default:
+TTCN_Logger::log_event_unbound();
+}
+}
+
+void TopLevelMessage__UDS__responses::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, "diagnosticSessionControlResponseSID")) {
+    diagnosticSessionControlResponseSID().set_param(*mp_last);
+    if (!diagnosticSessionControlResponseSID().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "ecuResetResponseSID")) {
+    ecuResetResponseSID().set_param(*mp_last);
+    if (!ecuResetResponseSID().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "securityAccessResponseSID")) {
+    securityAccessResponseSID().set_param(*mp_last);
+    if (!securityAccessResponseSID().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "communicationControlResponseSID")) {
+    communicationControlResponseSID().set_param(*mp_last);
+    if (!communicationControlResponseSID().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "testerPresentResponseSID")) {
+    testerPresentResponseSID().set_param(*mp_last);
+    if (!testerPresentResponseSID().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "readDataByIdentifierResponseSID")) {
+    readDataByIdentifierResponseSID().set_param(*mp_last);
+    if (!readDataByIdentifierResponseSID().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "writeDataByIdentifierResponseSID")) {
+    writeDataByIdentifierResponseSID().set_param(*mp_last);
+    if (!writeDataByIdentifierResponseSID().is_bound()) clean_up();
+    return;
+  }
+  if (!strcmp(last_name, "negativeResponseCodeSID")) {
+    negativeResponseCodeSID().set_param(*mp_last);
+    if (!negativeResponseCodeSID().is_bound()) clean_up();
+    return;
+  }
+  mp_last->error("Field %s does not exist in type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.", last_name);
+}
+
+void TopLevelMessage__UDS__responses::set_implicit_omit()
+{
+switch (union_selection) {
+case ALT_diagnosticSessionControlResponseSID:
+field_diagnosticSessionControlResponseSID->set_implicit_omit(); break;
+case ALT_ecuResetResponseSID:
+field_ecuResetResponseSID->set_implicit_omit(); break;
+case ALT_securityAccessResponseSID:
+field_securityAccessResponseSID->set_implicit_omit(); break;
+case ALT_communicationControlResponseSID:
+field_communicationControlResponseSID->set_implicit_omit(); break;
+case ALT_testerPresentResponseSID:
+field_testerPresentResponseSID->set_implicit_omit(); break;
+case ALT_readDataByIdentifierResponseSID:
+field_readDataByIdentifierResponseSID->set_implicit_omit(); break;
+case ALT_writeDataByIdentifierResponseSID:
+field_writeDataByIdentifierResponseSID->set_implicit_omit(); break;
+case ALT_negativeResponseCodeSID:
+field_negativeResponseCodeSID->set_implicit_omit(); break;
+default: break;
+}
+}
+
+void TopLevelMessage__UDS__responses::encode_text(Text_Buf& text_buf) const
+{
+text_buf.push_int(union_selection);
+switch (union_selection) {
+case ALT_diagnosticSessionControlResponseSID:
+field_diagnosticSessionControlResponseSID->encode_text(text_buf);
+break;
+case ALT_ecuResetResponseSID:
+field_ecuResetResponseSID->encode_text(text_buf);
+break;
+case ALT_securityAccessResponseSID:
+field_securityAccessResponseSID->encode_text(text_buf);
+break;
+case ALT_communicationControlResponseSID:
+field_communicationControlResponseSID->encode_text(text_buf);
+break;
+case ALT_testerPresentResponseSID:
+field_testerPresentResponseSID->encode_text(text_buf);
+break;
+case ALT_readDataByIdentifierResponseSID:
+field_readDataByIdentifierResponseSID->encode_text(text_buf);
+break;
+case ALT_writeDataByIdentifierResponseSID:
+field_writeDataByIdentifierResponseSID->encode_text(text_buf);
+break;
+case ALT_negativeResponseCodeSID:
+field_negativeResponseCodeSID->encode_text(text_buf);
+break;
+default:
+TTCN_error("Text encoder: Encoding an unbound value of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+}
+}
+
+void TopLevelMessage__UDS__responses::decode_text(Text_Buf& text_buf)
+{
+switch ((union_selection_type)text_buf.pull_int().get_val()) {
+case ALT_diagnosticSessionControlResponseSID:
+diagnosticSessionControlResponseSID().decode_text(text_buf);
+break;
+case ALT_ecuResetResponseSID:
+ecuResetResponseSID().decode_text(text_buf);
+break;
+case ALT_securityAccessResponseSID:
+securityAccessResponseSID().decode_text(text_buf);
+break;
+case ALT_communicationControlResponseSID:
+communicationControlResponseSID().decode_text(text_buf);
+break;
+case ALT_testerPresentResponseSID:
+testerPresentResponseSID().decode_text(text_buf);
+break;
+case ALT_readDataByIdentifierResponseSID:
+readDataByIdentifierResponseSID().decode_text(text_buf);
+break;
+case ALT_writeDataByIdentifierResponseSID:
+writeDataByIdentifierResponseSID().decode_text(text_buf);
+break;
+case ALT_negativeResponseCodeSID:
+negativeResponseCodeSID().decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+}
+}
+
+void TopLevelMessage__UDS__responses::encode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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);
+    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;}
+  default:
+    TTCN_error("Unknown coding method requested to encode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+void TopLevelMessage__UDS__responses::decode(const TTCN_Typedescriptor_t& p_td, TTCN_Buffer& p_buf, TTCN_EncDec::coding_t 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();
+    if(b_data[p_buf.get_len()-1]!='\0'){
+      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);
+    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)<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;}
+  default:
+    TTCN_error("Unknown coding method requested to decode type '%s'", p_td.name);
+  }
+  va_end(pvar);
+}
+
+int TopLevelMessage__UDS__responses::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, DiagnosticSessionControlResponseSID_descr_.raw->forceomit);
+      decoded_length = diagnosticSessionControlResponseSID().RAW_decode(DiagnosticSessionControlResponseSID_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, ECUResetResponseSID_descr_.raw->forceomit);
+      decoded_length = ecuResetResponseSID().RAW_decode(ECUResetResponseSID_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, SecurityAccessResponseSID_descr_.raw->forceomit);
+      decoded_length = securityAccessResponseSID().RAW_decode(SecurityAccessResponseSID_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 3: {
+      RAW_Force_Omit field_force_omit(3, force_omit, CommunicationControlResponseSID_descr_.raw->forceomit);
+      decoded_length = communicationControlResponseSID().RAW_decode(CommunicationControlResponseSID_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 4: {
+      RAW_Force_Omit field_force_omit(4, force_omit, TesterPresentResponseSID_descr_.raw->forceomit);
+      decoded_length = testerPresentResponseSID().RAW_decode(TesterPresentResponseSID_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 5: {
+      RAW_Force_Omit field_force_omit(5, force_omit, ReadDataByIdentifierResponseSID_descr_.raw->forceomit);
+      decoded_length = readDataByIdentifierResponseSID().RAW_decode(ReadDataByIdentifierResponseSID_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 6: {
+      RAW_Force_Omit field_force_omit(6, force_omit, WriteDataByIdentifierResponseSID_descr_.raw->forceomit);
+      decoded_length = writeDataByIdentifierResponseSID().RAW_decode(WriteDataByIdentifierResponseSID_descr_, p_buf, limit, top_bit_ord, no_err, -1, TRUE, &field_force_omit);
+      break; }
+    case 7: {
+      RAW_Force_Omit field_force_omit(7, force_omit, NegativeResponseCodeSID_descr_.raw->forceomit);
+      decoded_length = negativeResponseCodeSID().RAW_decode(NegativeResponseCodeSID_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 {
+    boolean already_failed = FALSE;
+    already_failed = FALSE;
+    if (!already_failed) {
+      OCTETSTRING temporal_0;
+      int decoded_0_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_0_length = temporal_0.RAW_decode(DiagnosticSessionControlResponseSID_sid_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_0_length > 0) {
+        if (temporal_0 ==  os_10) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(0, force_omit, DiagnosticSessionControlResponseSID_descr_.raw->forceomit);
+          decoded_length = diagnosticSessionControlResponseSID().RAW_decode(DiagnosticSessionControlResponseSID_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_diagnosticSessionControlResponseSID).sid() ==  os_10) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      OCTETSTRING temporal_1;
+      int decoded_1_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_1_length = temporal_1.RAW_decode(ECUResetResponseSID_sid_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_1_length > 0) {
+        if (temporal_1 ==  os_11) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(1, force_omit, ECUResetResponseSID_descr_.raw->forceomit);
+          decoded_length = ecuResetResponseSID().RAW_decode(ECUResetResponseSID_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_ecuResetResponseSID).sid() ==  os_11) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      OCTETSTRING temporal_2;
+      int decoded_2_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_2_length = temporal_2.RAW_decode(SecurityAccessResponseSID_sid_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_2_length > 0) {
+        if (temporal_2 ==  os_12) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(2, force_omit, SecurityAccessResponseSID_descr_.raw->forceomit);
+          decoded_length = securityAccessResponseSID().RAW_decode(SecurityAccessResponseSID_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_securityAccessResponseSID).sid() ==  os_12) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      OCTETSTRING temporal_3;
+      int decoded_3_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_3_length = temporal_3.RAW_decode(CommunicationControlResponseSID_sid_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_3_length > 0) {
+        if (temporal_3 ==  os_13) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(3, force_omit, CommunicationControlResponseSID_descr_.raw->forceomit);
+          decoded_length = communicationControlResponseSID().RAW_decode(CommunicationControlResponseSID_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_communicationControlResponseSID).sid() ==  os_13) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      OCTETSTRING temporal_4;
+      int decoded_4_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_4_length = temporal_4.RAW_decode(TesterPresentResponseSID_sid_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_4_length > 0) {
+        if (temporal_4 ==  os_14) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(4, force_omit, TesterPresentResponseSID_descr_.raw->forceomit);
+          decoded_length = testerPresentResponseSID().RAW_decode(TesterPresentResponseSID_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_testerPresentResponseSID).sid() ==  os_14) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      OCTETSTRING temporal_5;
+      int decoded_5_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_5_length = temporal_5.RAW_decode(ReadDataByIdentifierResponseSID_sid_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_5_length > 0) {
+        if (temporal_5 ==  os_15) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(5, force_omit, ReadDataByIdentifierResponseSID_descr_.raw->forceomit);
+          decoded_length = readDataByIdentifierResponseSID().RAW_decode(ReadDataByIdentifierResponseSID_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_readDataByIdentifierResponseSID).sid() ==  os_15) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      OCTETSTRING temporal_6;
+      int decoded_6_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_6_length = temporal_6.RAW_decode(WriteDataByIdentifierResponseSID_sid_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_6_length > 0) {
+        if (temporal_6 ==  os_16) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(6, force_omit, WriteDataByIdentifierResponseSID_descr_.raw->forceomit);
+          decoded_length = writeDataByIdentifierResponseSID().RAW_decode(WriteDataByIdentifierResponseSID_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_writeDataByIdentifierResponseSID).sid() ==  os_16) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+    already_failed = FALSE;
+    if (!already_failed) {
+      OCTETSTRING temporal_7;
+      int decoded_7_length;
+      p_buf.set_pos_bit(starting_pos + 0);
+      decoded_7_length = temporal_7.RAW_decode(NegativeResponseCodeSID_sid_descr_, p_buf, limit, top_bit_ord, TRUE);
+      if (decoded_7_length > 0) {
+        if (temporal_7 ==  os_17) {
+          p_buf.set_pos_bit(starting_pos);
+          RAW_Force_Omit field_force_omit(7, force_omit, NegativeResponseCodeSID_descr_.raw->forceomit);
+          decoded_length = negativeResponseCodeSID().RAW_decode(NegativeResponseCodeSID_descr_, p_buf, limit, top_bit_ord, TRUE, -1, TRUE, &field_force_omit);
+          if (decoded_length > 0) {
+             if ((*field_negativeResponseCodeSID).sid() ==  os_17) {
+               return decoded_length + p_buf.increase_pos_padd(p_td.raw->padding) + prepaddlength;
+             }else already_failed = TRUE;
+          }
+        }
+      }
+    }
+ }
+ clean_up();
+ return -1;
+}
+
+int TopLevelMessage__UDS__responses::RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree& myleaf) const
+{
+  int encoded_length = 0;
+  myleaf.isleaf = FALSE;
+  myleaf.body.node.num_of_nodes = 8;  myleaf.body.node.nodes = init_nodes_of_enc_tree(8);
+  memset(myleaf.body.node.nodes, 0, 8 * sizeof(RAW_enc_tree *));
+  switch (union_selection) {
+  case ALT_diagnosticSessionControlResponseSID:
+    myleaf.body.node.nodes[0] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 0, DiagnosticSessionControlResponseSID_descr_.raw);
+    encoded_length = field_diagnosticSessionControlResponseSID->RAW_encode(DiagnosticSessionControlResponseSID_descr_, *myleaf.body.node.nodes[0]);
+    myleaf.body.node.nodes[0]->coding_descr = &DiagnosticSessionControlResponseSID_descr_;
+    if ((*field_diagnosticSessionControlResponseSID).sid() !=  os_10) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={0,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   os_10.RAW_encode(DiagnosticSessionControlResponseSID_sid_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);
+  }
+    }
+    break;
+  case ALT_ecuResetResponseSID:
+    myleaf.body.node.nodes[1] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 1, ECUResetResponseSID_descr_.raw);
+    encoded_length = field_ecuResetResponseSID->RAW_encode(ECUResetResponseSID_descr_, *myleaf.body.node.nodes[1]);
+    myleaf.body.node.nodes[1]->coding_descr = &ECUResetResponseSID_descr_;
+    if ((*field_ecuResetResponseSID).sid() !=  os_11) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={1,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   os_11.RAW_encode(ECUResetResponseSID_sid_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);
+  }
+    }
+    break;
+  case ALT_securityAccessResponseSID:
+    myleaf.body.node.nodes[2] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 2, SecurityAccessResponseSID_descr_.raw);
+    encoded_length = field_securityAccessResponseSID->RAW_encode(SecurityAccessResponseSID_descr_, *myleaf.body.node.nodes[2]);
+    myleaf.body.node.nodes[2]->coding_descr = &SecurityAccessResponseSID_descr_;
+    if ((*field_securityAccessResponseSID).sid() !=  os_12) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={2,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   os_12.RAW_encode(SecurityAccessResponseSID_sid_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);
+  }
+    }
+    break;
+  case ALT_communicationControlResponseSID:
+    myleaf.body.node.nodes[3] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 3, CommunicationControlResponseSID_descr_.raw);
+    encoded_length = field_communicationControlResponseSID->RAW_encode(CommunicationControlResponseSID_descr_, *myleaf.body.node.nodes[3]);
+    myleaf.body.node.nodes[3]->coding_descr = &CommunicationControlResponseSID_descr_;
+    if ((*field_communicationControlResponseSID).sid() !=  os_13) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={3,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   os_13.RAW_encode(CommunicationControlResponseSID_sid_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);
+  }
+    }
+    break;
+  case ALT_testerPresentResponseSID:
+    myleaf.body.node.nodes[4] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 4, TesterPresentResponseSID_descr_.raw);
+    encoded_length = field_testerPresentResponseSID->RAW_encode(TesterPresentResponseSID_descr_, *myleaf.body.node.nodes[4]);
+    myleaf.body.node.nodes[4]->coding_descr = &TesterPresentResponseSID_descr_;
+    if ((*field_testerPresentResponseSID).sid() !=  os_14) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={4,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   os_14.RAW_encode(TesterPresentResponseSID_sid_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);
+  }
+    }
+    break;
+  case ALT_readDataByIdentifierResponseSID:
+    myleaf.body.node.nodes[5] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 5, ReadDataByIdentifierResponseSID_descr_.raw);
+    encoded_length = field_readDataByIdentifierResponseSID->RAW_encode(ReadDataByIdentifierResponseSID_descr_, *myleaf.body.node.nodes[5]);
+    myleaf.body.node.nodes[5]->coding_descr = &ReadDataByIdentifierResponseSID_descr_;
+    if ((*field_readDataByIdentifierResponseSID).sid() !=  os_15) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={5,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   os_15.RAW_encode(ReadDataByIdentifierResponseSID_sid_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);
+  }
+    }
+    break;
+  case ALT_writeDataByIdentifierResponseSID:
+    myleaf.body.node.nodes[6] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 6, WriteDataByIdentifierResponseSID_descr_.raw);
+    encoded_length = field_writeDataByIdentifierResponseSID->RAW_encode(WriteDataByIdentifierResponseSID_descr_, *myleaf.body.node.nodes[6]);
+    myleaf.body.node.nodes[6]->coding_descr = &WriteDataByIdentifierResponseSID_descr_;
+    if ((*field_writeDataByIdentifierResponseSID).sid() !=  os_16) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={6,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   os_16.RAW_encode(WriteDataByIdentifierResponseSID_sid_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);
+  }
+    }
+    break;
+  case ALT_negativeResponseCodeSID:
+    myleaf.body.node.nodes[7] = new RAW_enc_tree(TRUE, &myleaf, &myleaf.curr_pos, 7, NegativeResponseCodeSID_descr_.raw);
+    encoded_length = field_negativeResponseCodeSID->RAW_encode(NegativeResponseCodeSID_descr_, *myleaf.body.node.nodes[7]);
+    myleaf.body.node.nodes[7]->coding_descr = &NegativeResponseCodeSID_descr_;
+    if ((*field_negativeResponseCodeSID).sid() !=  os_17) {
+  RAW_enc_tree* temp_leaf;
+  {
+  RAW_enc_tr_pos pr_pos0;
+  pr_pos0.level=myleaf.curr_pos.level+2;
+  int new_pos0[]={7,0};
+  pr_pos0.pos=init_new_tree_pos(myleaf.curr_pos,2,new_pos0);
+  temp_leaf = myleaf.get_node(pr_pos0);
+  if(temp_leaf != NULL){
+   os_17.RAW_encode(NegativeResponseCodeSID_sid_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);
+  }
+    }
+    break;
+  default:
+    TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_UNBOUND, "Encoding an unbound value.");
+  }
+  return encoded_length;
+}
+
+void TopLevelMessage__UDS__responses_template::copy_value(const TopLevelMessage__UDS__responses& other_value)
+{
+single_value.union_selection = other_value.get_selection();
+switch (single_value.union_selection) {
+case TopLevelMessage__UDS__responses::ALT_diagnosticSessionControlResponseSID:
+single_value.field_diagnosticSessionControlResponseSID = new DiagnosticSessionControlResponseSID_template(other_value.diagnosticSessionControlResponseSID());
+break;
+case TopLevelMessage__UDS__responses::ALT_ecuResetResponseSID:
+single_value.field_ecuResetResponseSID = new ECUResetResponseSID_template(other_value.ecuResetResponseSID());
+break;
+case TopLevelMessage__UDS__responses::ALT_securityAccessResponseSID:
+single_value.field_securityAccessResponseSID = new SecurityAccessResponseSID_template(other_value.securityAccessResponseSID());
+break;
+case TopLevelMessage__UDS__responses::ALT_communicationControlResponseSID:
+single_value.field_communicationControlResponseSID = new CommunicationControlResponseSID_template(other_value.communicationControlResponseSID());
+break;
+case TopLevelMessage__UDS__responses::ALT_testerPresentResponseSID:
+single_value.field_testerPresentResponseSID = new TesterPresentResponseSID_template(other_value.testerPresentResponseSID());
+break;
+case TopLevelMessage__UDS__responses::ALT_readDataByIdentifierResponseSID:
+single_value.field_readDataByIdentifierResponseSID = new ReadDataByIdentifierResponseSID_template(other_value.readDataByIdentifierResponseSID());
+break;
+case TopLevelMessage__UDS__responses::ALT_writeDataByIdentifierResponseSID:
+single_value.field_writeDataByIdentifierResponseSID = new WriteDataByIdentifierResponseSID_template(other_value.writeDataByIdentifierResponseSID());
+break;
+case TopLevelMessage__UDS__responses::ALT_negativeResponseCodeSID:
+single_value.field_negativeResponseCodeSID = new NegativeResponseCodeSID_template(other_value.negativeResponseCodeSID());
+break;
+default:
+TTCN_error("Initializing a template with an unbound value of type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+}
+set_selection(SPECIFIC_VALUE);
+}
+
+void TopLevelMessage__UDS__responses_template::copy_template(const TopLevelMessage__UDS__responses_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 TopLevelMessage__UDS__responses::ALT_diagnosticSessionControlResponseSID:
+single_value.field_diagnosticSessionControlResponseSID = new DiagnosticSessionControlResponseSID_template(*other_value.single_value.field_diagnosticSessionControlResponseSID);
+break;
+case TopLevelMessage__UDS__responses::ALT_ecuResetResponseSID:
+single_value.field_ecuResetResponseSID = new ECUResetResponseSID_template(*other_value.single_value.field_ecuResetResponseSID);
+break;
+case TopLevelMessage__UDS__responses::ALT_securityAccessResponseSID:
+single_value.field_securityAccessResponseSID = new SecurityAccessResponseSID_template(*other_value.single_value.field_securityAccessResponseSID);
+break;
+case TopLevelMessage__UDS__responses::ALT_communicationControlResponseSID:
+single_value.field_communicationControlResponseSID = new CommunicationControlResponseSID_template(*other_value.single_value.field_communicationControlResponseSID);
+break;
+case TopLevelMessage__UDS__responses::ALT_testerPresentResponseSID:
+single_value.field_testerPresentResponseSID = new TesterPresentResponseSID_template(*other_value.single_value.field_testerPresentResponseSID);
+break;
+case TopLevelMessage__UDS__responses::ALT_readDataByIdentifierResponseSID:
+single_value.field_readDataByIdentifierResponseSID = new ReadDataByIdentifierResponseSID_template(*other_value.single_value.field_readDataByIdentifierResponseSID);
+break;
+case TopLevelMessage__UDS__responses::ALT_writeDataByIdentifierResponseSID:
+single_value.field_writeDataByIdentifierResponseSID = new WriteDataByIdentifierResponseSID_template(*other_value.single_value.field_writeDataByIdentifierResponseSID);
+break;
+case TopLevelMessage__UDS__responses::ALT_negativeResponseCodeSID:
+single_value.field_negativeResponseCodeSID = new NegativeResponseCodeSID_template(*other_value.single_value.field_negativeResponseCodeSID);
+break;
+default:
+TTCN_error("Internal error: Invalid union selector in a specific value when copying a template of type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+}
+case OMIT_VALUE:
+case ANY_VALUE:
+case ANY_OR_OMIT:
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+value_list.n_values = other_value.value_list.n_values;
+value_list.list_value = new TopLevelMessage__UDS__responses_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;
+default:
+TTCN_error("Copying an uninitialized template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+}
+set_selection(other_value);
+}
+
+TopLevelMessage__UDS__responses_template::TopLevelMessage__UDS__responses_template()
+{
+}
+
+TopLevelMessage__UDS__responses_template::TopLevelMessage__UDS__responses_template(template_sel other_value)
+ : Base_Template(other_value)
+{
+check_single_selection(other_value);
+}
+
+TopLevelMessage__UDS__responses_template::TopLevelMessage__UDS__responses_template(const TopLevelMessage__UDS__responses& other_value)
+{
+copy_value(other_value);
+}
+
+TopLevelMessage__UDS__responses_template::TopLevelMessage__UDS__responses_template(const OPTIONAL<TopLevelMessage__UDS__responses>& other_value)
+{
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const TopLevelMessage__UDS__responses&)other_value);
+break;
+case OPTIONAL_OMIT:
+set_selection(OMIT_VALUE);
+break;
+default:
+TTCN_error("Creating a template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses from an unbound optional field.");
+}
+}
+
+TopLevelMessage__UDS__responses_template::TopLevelMessage__UDS__responses_template(const TopLevelMessage__UDS__responses_template& other_value)
+: Base_Template(){
+copy_template(other_value);
+}
+
+TopLevelMessage__UDS__responses_template::~TopLevelMessage__UDS__responses_template()
+{
+clean_up();
+}
+
+void TopLevelMessage__UDS__responses_template::clean_up()
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case TopLevelMessage__UDS__responses::ALT_diagnosticSessionControlResponseSID:
+delete single_value.field_diagnosticSessionControlResponseSID;
+break;
+case TopLevelMessage__UDS__responses::ALT_ecuResetResponseSID:
+delete single_value.field_ecuResetResponseSID;
+break;
+case TopLevelMessage__UDS__responses::ALT_securityAccessResponseSID:
+delete single_value.field_securityAccessResponseSID;
+break;
+case TopLevelMessage__UDS__responses::ALT_communicationControlResponseSID:
+delete single_value.field_communicationControlResponseSID;
+break;
+case TopLevelMessage__UDS__responses::ALT_testerPresentResponseSID:
+delete single_value.field_testerPresentResponseSID;
+break;
+case TopLevelMessage__UDS__responses::ALT_readDataByIdentifierResponseSID:
+delete single_value.field_readDataByIdentifierResponseSID;
+break;
+case TopLevelMessage__UDS__responses::ALT_writeDataByIdentifierResponseSID:
+delete single_value.field_writeDataByIdentifierResponseSID;
+break;
+case TopLevelMessage__UDS__responses::ALT_negativeResponseCodeSID:
+delete single_value.field_negativeResponseCodeSID;
+default:
+break;
+}
+break;
+case VALUE_LIST:
+case COMPLEMENTED_LIST:
+delete [] value_list.list_value;
+default:
+break;
+}
+template_selection = UNINITIALIZED_TEMPLATE;
+}
+
+TopLevelMessage__UDS__responses_template& TopLevelMessage__UDS__responses_template::operator=(template_sel other_value)
+{
+check_single_selection(other_value);
+clean_up();
+set_selection(other_value);
+return *this;
+}
+
+TopLevelMessage__UDS__responses_template& TopLevelMessage__UDS__responses_template::operator=(const TopLevelMessage__UDS__responses& other_value)
+{
+clean_up();
+copy_value(other_value);
+return *this;
+}
+
+TopLevelMessage__UDS__responses_template& TopLevelMessage__UDS__responses_template::operator=(const OPTIONAL<TopLevelMessage__UDS__responses>& other_value)
+{
+clean_up();
+switch (other_value.get_selection()) {
+case OPTIONAL_PRESENT:
+copy_value((const TopLevelMessage__UDS__responses&)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 @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+}
+return *this;
+}
+
+TopLevelMessage__UDS__responses_template& TopLevelMessage__UDS__responses_template::operator=(const TopLevelMessage__UDS__responses_template& other_value)
+{
+if (&other_value != this) {
+clean_up();
+copy_template(other_value);
+}
+return *this;
+}
+
+boolean TopLevelMessage__UDS__responses_template::match(const TopLevelMessage__UDS__responses& 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:
+{
+TopLevelMessage__UDS__responses::union_selection_type value_selection = other_value.get_selection();
+if (value_selection == TopLevelMessage__UDS__responses::UNBOUND_VALUE) return FALSE;
+if (value_selection != single_value.union_selection) return FALSE;
+switch (value_selection) {
+case TopLevelMessage__UDS__responses::ALT_diagnosticSessionControlResponseSID:
+return single_value.field_diagnosticSessionControlResponseSID->match(other_value.diagnosticSessionControlResponseSID(), legacy);
+case TopLevelMessage__UDS__responses::ALT_ecuResetResponseSID:
+return single_value.field_ecuResetResponseSID->match(other_value.ecuResetResponseSID(), legacy);
+case TopLevelMessage__UDS__responses::ALT_securityAccessResponseSID:
+return single_value.field_securityAccessResponseSID->match(other_value.securityAccessResponseSID(), legacy);
+case TopLevelMessage__UDS__responses::ALT_communicationControlResponseSID:
+return single_value.field_communicationControlResponseSID->match(other_value.communicationControlResponseSID(), legacy);
+case TopLevelMessage__UDS__responses::ALT_testerPresentResponseSID:
+return single_value.field_testerPresentResponseSID->match(other_value.testerPresentResponseSID(), legacy);
+case TopLevelMessage__UDS__responses::ALT_readDataByIdentifierResponseSID:
+return single_value.field_readDataByIdentifierResponseSID->match(other_value.readDataByIdentifierResponseSID(), legacy);
+case TopLevelMessage__UDS__responses::ALT_writeDataByIdentifierResponseSID:
+return single_value.field_writeDataByIdentifierResponseSID->match(other_value.writeDataByIdentifierResponseSID(), legacy);
+case TopLevelMessage__UDS__responses::ALT_negativeResponseCodeSID:
+return single_value.field_negativeResponseCodeSID->match(other_value.negativeResponseCodeSID(), legacy);
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when matching a template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+}
+}
+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;
+default:
+TTCN_error ("Matching an uninitialized template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+}
+return FALSE;
+}
+
+boolean TopLevelMessage__UDS__responses_template::is_value() const
+{
+if (template_selection != SPECIFIC_VALUE || is_ifpresent) return FALSE;
+switch (single_value.union_selection) {
+case TopLevelMessage__UDS__responses::ALT_diagnosticSessionControlResponseSID:
+return single_value.field_diagnosticSessionControlResponseSID->is_value();
+case TopLevelMessage__UDS__responses::ALT_ecuResetResponseSID:
+return single_value.field_ecuResetResponseSID->is_value();
+case TopLevelMessage__UDS__responses::ALT_securityAccessResponseSID:
+return single_value.field_securityAccessResponseSID->is_value();
+case TopLevelMessage__UDS__responses::ALT_communicationControlResponseSID:
+return single_value.field_communicationControlResponseSID->is_value();
+case TopLevelMessage__UDS__responses::ALT_testerPresentResponseSID:
+return single_value.field_testerPresentResponseSID->is_value();
+case TopLevelMessage__UDS__responses::ALT_readDataByIdentifierResponseSID:
+return single_value.field_readDataByIdentifierResponseSID->is_value();
+case TopLevelMessage__UDS__responses::ALT_writeDataByIdentifierResponseSID:
+return single_value.field_writeDataByIdentifierResponseSID->is_value();
+case TopLevelMessage__UDS__responses::ALT_negativeResponseCodeSID:
+return single_value.field_negativeResponseCodeSID->is_value();
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing is_value operation on a template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+}
+}
+
+TopLevelMessage__UDS__responses TopLevelMessage__UDS__responses_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 @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+TopLevelMessage__UDS__responses ret_val;
+switch (single_value.union_selection) {
+case TopLevelMessage__UDS__responses::ALT_diagnosticSessionControlResponseSID:
+ret_val.diagnosticSessionControlResponseSID() = single_value.field_diagnosticSessionControlResponseSID->valueof();
+break;
+case TopLevelMessage__UDS__responses::ALT_ecuResetResponseSID:
+ret_val.ecuResetResponseSID() = single_value.field_ecuResetResponseSID->valueof();
+break;
+case TopLevelMessage__UDS__responses::ALT_securityAccessResponseSID:
+ret_val.securityAccessResponseSID() = single_value.field_securityAccessResponseSID->valueof();
+break;
+case TopLevelMessage__UDS__responses::ALT_communicationControlResponseSID:
+ret_val.communicationControlResponseSID() = single_value.field_communicationControlResponseSID->valueof();
+break;
+case TopLevelMessage__UDS__responses::ALT_testerPresentResponseSID:
+ret_val.testerPresentResponseSID() = single_value.field_testerPresentResponseSID->valueof();
+break;
+case TopLevelMessage__UDS__responses::ALT_readDataByIdentifierResponseSID:
+ret_val.readDataByIdentifierResponseSID() = single_value.field_readDataByIdentifierResponseSID->valueof();
+break;
+case TopLevelMessage__UDS__responses::ALT_writeDataByIdentifierResponseSID:
+ret_val.writeDataByIdentifierResponseSID() = single_value.field_writeDataByIdentifierResponseSID->valueof();
+break;
+case TopLevelMessage__UDS__responses::ALT_negativeResponseCodeSID:
+ret_val.negativeResponseCodeSID() = single_value.field_negativeResponseCodeSID->valueof();
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing valueof operation on a template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+}
+return ret_val;
+}
+
+TopLevelMessage__UDS__responses_template& TopLevelMessage__UDS__responses_template::list_item(unsigned int list_index) const
+{
+if (template_selection != VALUE_LIST && template_selection != COMPLEMENTED_LIST) TTCN_error("Internal error: Accessing a list element of a non-list template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+if (list_index >= value_list.n_values) TTCN_error("Internal error: Index overflow in a value list template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+return value_list.list_value[list_index];
+}
+void TopLevelMessage__UDS__responses_template::set_type(template_sel template_type, unsigned int list_length)
+{
+if (template_type != VALUE_LIST && template_type != COMPLEMENTED_LIST) TTCN_error ("Internal error: Setting an invalid list for a template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+clean_up();
+set_selection(template_type);
+value_list.n_values = list_length;
+value_list.list_value = new TopLevelMessage__UDS__responses_template[list_length];
+}
+
+DiagnosticSessionControlResponseSID_template& TopLevelMessage__UDS__responses_template::diagnosticSessionControlResponseSID()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != TopLevelMessage__UDS__responses::ALT_diagnosticSessionControlResponseSID) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_diagnosticSessionControlResponseSID = new DiagnosticSessionControlResponseSID_template(ANY_VALUE);
+else single_value.field_diagnosticSessionControlResponseSID = new DiagnosticSessionControlResponseSID_template;
+single_value.union_selection = TopLevelMessage__UDS__responses::ALT_diagnosticSessionControlResponseSID;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_diagnosticSessionControlResponseSID;
+}
+
+const DiagnosticSessionControlResponseSID_template& TopLevelMessage__UDS__responses_template::diagnosticSessionControlResponseSID() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field diagnosticSessionControlResponseSID in a non-specific template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+if (single_value.union_selection != TopLevelMessage__UDS__responses::ALT_diagnosticSessionControlResponseSID) TTCN_error("Accessing non-selected field diagnosticSessionControlResponseSID in a template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+return *single_value.field_diagnosticSessionControlResponseSID;
+}
+
+ECUResetResponseSID_template& TopLevelMessage__UDS__responses_template::ecuResetResponseSID()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != TopLevelMessage__UDS__responses::ALT_ecuResetResponseSID) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_ecuResetResponseSID = new ECUResetResponseSID_template(ANY_VALUE);
+else single_value.field_ecuResetResponseSID = new ECUResetResponseSID_template;
+single_value.union_selection = TopLevelMessage__UDS__responses::ALT_ecuResetResponseSID;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_ecuResetResponseSID;
+}
+
+const ECUResetResponseSID_template& TopLevelMessage__UDS__responses_template::ecuResetResponseSID() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field ecuResetResponseSID in a non-specific template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+if (single_value.union_selection != TopLevelMessage__UDS__responses::ALT_ecuResetResponseSID) TTCN_error("Accessing non-selected field ecuResetResponseSID in a template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+return *single_value.field_ecuResetResponseSID;
+}
+
+SecurityAccessResponseSID_template& TopLevelMessage__UDS__responses_template::securityAccessResponseSID()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != TopLevelMessage__UDS__responses::ALT_securityAccessResponseSID) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_securityAccessResponseSID = new SecurityAccessResponseSID_template(ANY_VALUE);
+else single_value.field_securityAccessResponseSID = new SecurityAccessResponseSID_template;
+single_value.union_selection = TopLevelMessage__UDS__responses::ALT_securityAccessResponseSID;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_securityAccessResponseSID;
+}
+
+const SecurityAccessResponseSID_template& TopLevelMessage__UDS__responses_template::securityAccessResponseSID() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field securityAccessResponseSID in a non-specific template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+if (single_value.union_selection != TopLevelMessage__UDS__responses::ALT_securityAccessResponseSID) TTCN_error("Accessing non-selected field securityAccessResponseSID in a template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+return *single_value.field_securityAccessResponseSID;
+}
+
+CommunicationControlResponseSID_template& TopLevelMessage__UDS__responses_template::communicationControlResponseSID()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != TopLevelMessage__UDS__responses::ALT_communicationControlResponseSID) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_communicationControlResponseSID = new CommunicationControlResponseSID_template(ANY_VALUE);
+else single_value.field_communicationControlResponseSID = new CommunicationControlResponseSID_template;
+single_value.union_selection = TopLevelMessage__UDS__responses::ALT_communicationControlResponseSID;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_communicationControlResponseSID;
+}
+
+const CommunicationControlResponseSID_template& TopLevelMessage__UDS__responses_template::communicationControlResponseSID() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field communicationControlResponseSID in a non-specific template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+if (single_value.union_selection != TopLevelMessage__UDS__responses::ALT_communicationControlResponseSID) TTCN_error("Accessing non-selected field communicationControlResponseSID in a template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+return *single_value.field_communicationControlResponseSID;
+}
+
+TesterPresentResponseSID_template& TopLevelMessage__UDS__responses_template::testerPresentResponseSID()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != TopLevelMessage__UDS__responses::ALT_testerPresentResponseSID) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_testerPresentResponseSID = new TesterPresentResponseSID_template(ANY_VALUE);
+else single_value.field_testerPresentResponseSID = new TesterPresentResponseSID_template;
+single_value.union_selection = TopLevelMessage__UDS__responses::ALT_testerPresentResponseSID;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_testerPresentResponseSID;
+}
+
+const TesterPresentResponseSID_template& TopLevelMessage__UDS__responses_template::testerPresentResponseSID() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field testerPresentResponseSID in a non-specific template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+if (single_value.union_selection != TopLevelMessage__UDS__responses::ALT_testerPresentResponseSID) TTCN_error("Accessing non-selected field testerPresentResponseSID in a template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+return *single_value.field_testerPresentResponseSID;
+}
+
+ReadDataByIdentifierResponseSID_template& TopLevelMessage__UDS__responses_template::readDataByIdentifierResponseSID()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != TopLevelMessage__UDS__responses::ALT_readDataByIdentifierResponseSID) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_readDataByIdentifierResponseSID = new ReadDataByIdentifierResponseSID_template(ANY_VALUE);
+else single_value.field_readDataByIdentifierResponseSID = new ReadDataByIdentifierResponseSID_template;
+single_value.union_selection = TopLevelMessage__UDS__responses::ALT_readDataByIdentifierResponseSID;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_readDataByIdentifierResponseSID;
+}
+
+const ReadDataByIdentifierResponseSID_template& TopLevelMessage__UDS__responses_template::readDataByIdentifierResponseSID() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field readDataByIdentifierResponseSID in a non-specific template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+if (single_value.union_selection != TopLevelMessage__UDS__responses::ALT_readDataByIdentifierResponseSID) TTCN_error("Accessing non-selected field readDataByIdentifierResponseSID in a template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+return *single_value.field_readDataByIdentifierResponseSID;
+}
+
+WriteDataByIdentifierResponseSID_template& TopLevelMessage__UDS__responses_template::writeDataByIdentifierResponseSID()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != TopLevelMessage__UDS__responses::ALT_writeDataByIdentifierResponseSID) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_writeDataByIdentifierResponseSID = new WriteDataByIdentifierResponseSID_template(ANY_VALUE);
+else single_value.field_writeDataByIdentifierResponseSID = new WriteDataByIdentifierResponseSID_template;
+single_value.union_selection = TopLevelMessage__UDS__responses::ALT_writeDataByIdentifierResponseSID;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_writeDataByIdentifierResponseSID;
+}
+
+const WriteDataByIdentifierResponseSID_template& TopLevelMessage__UDS__responses_template::writeDataByIdentifierResponseSID() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field writeDataByIdentifierResponseSID in a non-specific template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+if (single_value.union_selection != TopLevelMessage__UDS__responses::ALT_writeDataByIdentifierResponseSID) TTCN_error("Accessing non-selected field writeDataByIdentifierResponseSID in a template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+return *single_value.field_writeDataByIdentifierResponseSID;
+}
+
+NegativeResponseCodeSID_template& TopLevelMessage__UDS__responses_template::negativeResponseCodeSID()
+{
+if (template_selection != SPECIFIC_VALUE || single_value.union_selection != TopLevelMessage__UDS__responses::ALT_negativeResponseCodeSID) {
+template_sel old_selection = template_selection;
+clean_up();
+if (old_selection == ANY_VALUE || old_selection == ANY_OR_OMIT) single_value.field_negativeResponseCodeSID = new NegativeResponseCodeSID_template(ANY_VALUE);
+else single_value.field_negativeResponseCodeSID = new NegativeResponseCodeSID_template;
+single_value.union_selection = TopLevelMessage__UDS__responses::ALT_negativeResponseCodeSID;
+set_selection(SPECIFIC_VALUE);
+}
+return *single_value.field_negativeResponseCodeSID;
+}
+
+const NegativeResponseCodeSID_template& TopLevelMessage__UDS__responses_template::negativeResponseCodeSID() const
+{
+if (template_selection != SPECIFIC_VALUE) TTCN_error("Accessing field negativeResponseCodeSID in a non-specific template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+if (single_value.union_selection != TopLevelMessage__UDS__responses::ALT_negativeResponseCodeSID) TTCN_error("Accessing non-selected field negativeResponseCodeSID in a template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+return *single_value.field_negativeResponseCodeSID;
+}
+
+boolean TopLevelMessage__UDS__responses_template::ischosen(TopLevelMessage__UDS__responses::union_selection_type checked_selection) const
+{
+if (checked_selection == TopLevelMessage__UDS__responses::UNBOUND_VALUE) TTCN_error("Internal error: Performing ischosen() operation on an invalid field of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+switch (template_selection) {
+case SPECIFIC_VALUE:
+if (single_value.union_selection == TopLevelMessage__UDS__responses::UNBOUND_VALUE) TTCN_error("Internal error: Invalid selector in a specific value when performing ischosen() operation on a template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+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 @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses 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 TopLevelMessage__UDS__responses_template::log() const
+{
+switch (template_selection) {
+case SPECIFIC_VALUE:
+switch (single_value.union_selection) {
+case TopLevelMessage__UDS__responses::ALT_diagnosticSessionControlResponseSID:
+TTCN_Logger::log_event_str("{ diagnosticSessionControlResponseSID := ");
+single_value.field_diagnosticSessionControlResponseSID->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case TopLevelMessage__UDS__responses::ALT_ecuResetResponseSID:
+TTCN_Logger::log_event_str("{ ecuResetResponseSID := ");
+single_value.field_ecuResetResponseSID->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case TopLevelMessage__UDS__responses::ALT_securityAccessResponseSID:
+TTCN_Logger::log_event_str("{ securityAccessResponseSID := ");
+single_value.field_securityAccessResponseSID->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case TopLevelMessage__UDS__responses::ALT_communicationControlResponseSID:
+TTCN_Logger::log_event_str("{ communicationControlResponseSID := ");
+single_value.field_communicationControlResponseSID->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case TopLevelMessage__UDS__responses::ALT_testerPresentResponseSID:
+TTCN_Logger::log_event_str("{ testerPresentResponseSID := ");
+single_value.field_testerPresentResponseSID->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case TopLevelMessage__UDS__responses::ALT_readDataByIdentifierResponseSID:
+TTCN_Logger::log_event_str("{ readDataByIdentifierResponseSID := ");
+single_value.field_readDataByIdentifierResponseSID->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case TopLevelMessage__UDS__responses::ALT_writeDataByIdentifierResponseSID:
+TTCN_Logger::log_event_str("{ writeDataByIdentifierResponseSID := ");
+single_value.field_writeDataByIdentifierResponseSID->log();
+TTCN_Logger::log_event_str(" }");
+break;
+case TopLevelMessage__UDS__responses::ALT_negativeResponseCodeSID:
+TTCN_Logger::log_event_str("{ negativeResponseCodeSID := ");
+single_value.field_negativeResponseCodeSID->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 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;
+default:
+log_generic();
+}
+log_ifpresent();
+}
+
+void TopLevelMessage__UDS__responses_template::log_match(const TopLevelMessage__UDS__responses& 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()) {
+switch (single_value.union_selection) {
+case TopLevelMessage__UDS__responses::ALT_diagnosticSessionControlResponseSID:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".diagnosticSessionControlResponseSID");
+single_value.field_diagnosticSessionControlResponseSID->log_match(match_value.diagnosticSessionControlResponseSID(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ diagnosticSessionControlResponseSID := ");
+single_value.field_diagnosticSessionControlResponseSID->log_match(match_value.diagnosticSessionControlResponseSID(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case TopLevelMessage__UDS__responses::ALT_ecuResetResponseSID:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".ecuResetResponseSID");
+single_value.field_ecuResetResponseSID->log_match(match_value.ecuResetResponseSID(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ ecuResetResponseSID := ");
+single_value.field_ecuResetResponseSID->log_match(match_value.ecuResetResponseSID(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case TopLevelMessage__UDS__responses::ALT_securityAccessResponseSID:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".securityAccessResponseSID");
+single_value.field_securityAccessResponseSID->log_match(match_value.securityAccessResponseSID(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ securityAccessResponseSID := ");
+single_value.field_securityAccessResponseSID->log_match(match_value.securityAccessResponseSID(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case TopLevelMessage__UDS__responses::ALT_communicationControlResponseSID:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".communicationControlResponseSID");
+single_value.field_communicationControlResponseSID->log_match(match_value.communicationControlResponseSID(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ communicationControlResponseSID := ");
+single_value.field_communicationControlResponseSID->log_match(match_value.communicationControlResponseSID(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case TopLevelMessage__UDS__responses::ALT_testerPresentResponseSID:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".testerPresentResponseSID");
+single_value.field_testerPresentResponseSID->log_match(match_value.testerPresentResponseSID(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ testerPresentResponseSID := ");
+single_value.field_testerPresentResponseSID->log_match(match_value.testerPresentResponseSID(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case TopLevelMessage__UDS__responses::ALT_readDataByIdentifierResponseSID:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".readDataByIdentifierResponseSID");
+single_value.field_readDataByIdentifierResponseSID->log_match(match_value.readDataByIdentifierResponseSID(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ readDataByIdentifierResponseSID := ");
+single_value.field_readDataByIdentifierResponseSID->log_match(match_value.readDataByIdentifierResponseSID(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case TopLevelMessage__UDS__responses::ALT_writeDataByIdentifierResponseSID:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".writeDataByIdentifierResponseSID");
+single_value.field_writeDataByIdentifierResponseSID->log_match(match_value.writeDataByIdentifierResponseSID(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ writeDataByIdentifierResponseSID := ");
+single_value.field_writeDataByIdentifierResponseSID->log_match(match_value.writeDataByIdentifierResponseSID(), legacy);
+TTCN_Logger::log_event_str(" }");
+}
+break;
+case TopLevelMessage__UDS__responses::ALT_negativeResponseCodeSID:
+if(TTCN_Logger::VERBOSITY_COMPACT == TTCN_Logger::get_matching_verbosity()){
+TTCN_Logger::log_logmatch_info(".negativeResponseCodeSID");
+single_value.field_negativeResponseCodeSID->log_match(match_value.negativeResponseCodeSID(), legacy);
+} else {
+TTCN_Logger::log_event_str("{ negativeResponseCodeSID := ");
+single_value.field_negativeResponseCodeSID->log_match(match_value.negativeResponseCodeSID(), 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 TopLevelMessage__UDS__responses_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 TopLevelMessage__UDS__responses::ALT_diagnosticSessionControlResponseSID:
+single_value.field_diagnosticSessionControlResponseSID->encode_text(text_buf);
+break;
+case TopLevelMessage__UDS__responses::ALT_ecuResetResponseSID:
+single_value.field_ecuResetResponseSID->encode_text(text_buf);
+break;
+case TopLevelMessage__UDS__responses::ALT_securityAccessResponseSID:
+single_value.field_securityAccessResponseSID->encode_text(text_buf);
+break;
+case TopLevelMessage__UDS__responses::ALT_communicationControlResponseSID:
+single_value.field_communicationControlResponseSID->encode_text(text_buf);
+break;
+case TopLevelMessage__UDS__responses::ALT_testerPresentResponseSID:
+single_value.field_testerPresentResponseSID->encode_text(text_buf);
+break;
+case TopLevelMessage__UDS__responses::ALT_readDataByIdentifierResponseSID:
+single_value.field_readDataByIdentifierResponseSID->encode_text(text_buf);
+break;
+case TopLevelMessage__UDS__responses::ALT_writeDataByIdentifierResponseSID:
+single_value.field_writeDataByIdentifierResponseSID->encode_text(text_buf);
+break;
+case TopLevelMessage__UDS__responses::ALT_negativeResponseCodeSID:
+single_value.field_negativeResponseCodeSID->encode_text(text_buf);
+break;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when encoding a template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+}
+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 @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+}
+}
+
+void TopLevelMessage__UDS__responses_template::decode_text(Text_Buf& text_buf)
+{
+clean_up();
+decode_text_base(text_buf);
+switch (template_selection) {
+case SPECIFIC_VALUE:
+{
+single_value.union_selection = TopLevelMessage__UDS__responses::UNBOUND_VALUE;
+TopLevelMessage__UDS__responses::union_selection_type new_selection = (TopLevelMessage__UDS__responses::union_selection_type)text_buf.pull_int().get_val();
+switch (new_selection) {
+case TopLevelMessage__UDS__responses::ALT_diagnosticSessionControlResponseSID:
+single_value.field_diagnosticSessionControlResponseSID = new DiagnosticSessionControlResponseSID_template;
+single_value.field_diagnosticSessionControlResponseSID->decode_text(text_buf);
+break;
+case TopLevelMessage__UDS__responses::ALT_ecuResetResponseSID:
+single_value.field_ecuResetResponseSID = new ECUResetResponseSID_template;
+single_value.field_ecuResetResponseSID->decode_text(text_buf);
+break;
+case TopLevelMessage__UDS__responses::ALT_securityAccessResponseSID:
+single_value.field_securityAccessResponseSID = new SecurityAccessResponseSID_template;
+single_value.field_securityAccessResponseSID->decode_text(text_buf);
+break;
+case TopLevelMessage__UDS__responses::ALT_communicationControlResponseSID:
+single_value.field_communicationControlResponseSID = new CommunicationControlResponseSID_template;
+single_value.field_communicationControlResponseSID->decode_text(text_buf);
+break;
+case TopLevelMessage__UDS__responses::ALT_testerPresentResponseSID:
+single_value.field_testerPresentResponseSID = new TesterPresentResponseSID_template;
+single_value.field_testerPresentResponseSID->decode_text(text_buf);
+break;
+case TopLevelMessage__UDS__responses::ALT_readDataByIdentifierResponseSID:
+single_value.field_readDataByIdentifierResponseSID = new ReadDataByIdentifierResponseSID_template;
+single_value.field_readDataByIdentifierResponseSID->decode_text(text_buf);
+break;
+case TopLevelMessage__UDS__responses::ALT_writeDataByIdentifierResponseSID:
+single_value.field_writeDataByIdentifierResponseSID = new WriteDataByIdentifierResponseSID_template;
+single_value.field_writeDataByIdentifierResponseSID->decode_text(text_buf);
+break;
+case TopLevelMessage__UDS__responses::ALT_negativeResponseCodeSID:
+single_value.field_negativeResponseCodeSID = new NegativeResponseCodeSID_template;
+single_value.field_negativeResponseCodeSID->decode_text(text_buf);
+break;
+default:
+TTCN_error("Text decoder: Unrecognized union selector was received for a template of type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+}
+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 TopLevelMessage__UDS__responses_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 @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+}
+}
+
+boolean TopLevelMessage__UDS__responses_template::is_present(boolean legacy) const
+{
+if (template_selection==UNINITIALIZED_TEMPLATE) return FALSE;
+return !match_omit(legacy);
+}
+
+boolean TopLevelMessage__UDS__responses_template::match_omit(boolean legacy) const
+{
+if (is_ifpresent) return TRUE;
+switch (template_selection) {
+case OMIT_VALUE:
+case ANY_OR_OMIT:
+return TRUE;
+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 TopLevelMessage__UDS__responses_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 `@UnifiedDiagnosticServices.TopLevelMessage_UDS_responses'");
+    }
+    if (strcmp("diagnosticSessionControlResponseSID", param_field) == 0) {
+      diagnosticSessionControlResponseSID().set_param(param);
+      return;
+    } else if (strcmp("ecuResetResponseSID", param_field) == 0) {
+      ecuResetResponseSID().set_param(param);
+      return;
+    } else if (strcmp("securityAccessResponseSID", param_field) == 0) {
+      securityAccessResponseSID().set_param(param);
+      return;
+    } else if (strcmp("communicationControlResponseSID", param_field) == 0) {
+      communicationControlResponseSID().set_param(param);
+      return;
+    } else if (strcmp("testerPresentResponseSID", param_field) == 0) {
+      testerPresentResponseSID().set_param(param);
+      return;
+    } else if (strcmp("readDataByIdentifierResponseSID", param_field) == 0) {
+      readDataByIdentifierResponseSID().set_param(param);
+      return;
+    } else if (strcmp("writeDataByIdentifierResponseSID", param_field) == 0) {
+      writeDataByIdentifierResponseSID().set_param(param);
+      return;
+    } else if (strcmp("negativeResponseCodeSID", param_field) == 0) {
+      negativeResponseCodeSID().set_param(param);
+      return;
+    } else param.error("Field `%s' not found in union template type `@UnifiedDiagnosticServices.TopLevelMessage_UDS_responses'", 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: {
+    TopLevelMessage__UDS__responses_template new_temp;
+    new_temp.set_type(m_p->get_type()==Module_Param::MP_List_Template ? VALUE_LIST : 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", "@UnifiedDiagnosticServices.TopLevelMessage_UDS_responses");
+    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, "diagnosticSessionControlResponseSID")) {
+      diagnosticSessionControlResponseSID().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "ecuResetResponseSID")) {
+      ecuResetResponseSID().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "securityAccessResponseSID")) {
+      securityAccessResponseSID().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "communicationControlResponseSID")) {
+      communicationControlResponseSID().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "testerPresentResponseSID")) {
+      testerPresentResponseSID().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "readDataByIdentifierResponseSID")) {
+      readDataByIdentifierResponseSID().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "writeDataByIdentifierResponseSID")) {
+      writeDataByIdentifierResponseSID().set_param(*mp_last);
+      break;
+    }
+    if (!strcmp(last_name, "negativeResponseCodeSID")) {
+      negativeResponseCodeSID().set_param(*mp_last);
+      break;
+    }
+    mp_last->error("Field %s does not exist in type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.", last_name);
+  } break;
+  default:
+    param.type_error("union template", "@UnifiedDiagnosticServices.TopLevelMessage_UDS_responses");
+  }
+  is_ifpresent = param.get_ifpresent();
+}
+
+void TopLevelMessage__UDS__responses_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 TopLevelMessage__UDS__responses::ALT_diagnosticSessionControlResponseSID:
+single_value.field_diagnosticSessionControlResponseSID->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.TopLevelMessage_UDS_responses");
+return;
+case TopLevelMessage__UDS__responses::ALT_ecuResetResponseSID:
+single_value.field_ecuResetResponseSID->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.TopLevelMessage_UDS_responses");
+return;
+case TopLevelMessage__UDS__responses::ALT_securityAccessResponseSID:
+single_value.field_securityAccessResponseSID->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.TopLevelMessage_UDS_responses");
+return;
+case TopLevelMessage__UDS__responses::ALT_communicationControlResponseSID:
+single_value.field_communicationControlResponseSID->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.TopLevelMessage_UDS_responses");
+return;
+case TopLevelMessage__UDS__responses::ALT_testerPresentResponseSID:
+single_value.field_testerPresentResponseSID->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.TopLevelMessage_UDS_responses");
+return;
+case TopLevelMessage__UDS__responses::ALT_readDataByIdentifierResponseSID:
+single_value.field_readDataByIdentifierResponseSID->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.TopLevelMessage_UDS_responses");
+return;
+case TopLevelMessage__UDS__responses::ALT_writeDataByIdentifierResponseSID:
+single_value.field_writeDataByIdentifierResponseSID->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.TopLevelMessage_UDS_responses");
+return;
+case TopLevelMessage__UDS__responses::ALT_negativeResponseCodeSID:
+single_value.field_negativeResponseCodeSID->check_restriction(t_res, t_name ? t_name : "@UnifiedDiagnosticServices.TopLevelMessage_UDS_responses");
+return;
+default:
+TTCN_error("Internal error: Invalid selector in a specific value when performing check_restriction operation on a template of union type @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses.");
+}
+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 : "@UnifiedDiagnosticServices.TopLevelMessage_UDS_responses");
+}
+
+
+/* Bodies of functions, altsteps and testcases */
+
+OCTETSTRING encode__TopLevelMessage__UDS__requests(const TopLevelMessage__UDS__requests& pdu)
+{
+if (TTCN_Logger::log_this_event(TTCN_Logger::DEBUG_ENCDEC)) {
+TTCN_Logger::begin_event(TTCN_Logger::DEBUG_ENCDEC);
+TTCN_Logger::log_event_str("encode_TopLevelMessage_UDS_requests(): Encoding @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests: ");
+pdu.log();
+TTCN_Logger::end_event();
+}
+TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT);
+TTCN_Buffer ttcn_buffer;
+pdu.encode(TopLevelMessage__UDS__requests_descr_, ttcn_buffer, TTCN_EncDec::CT_RAW, 0);
+OCTETSTRING ret_val;
+ttcn_buffer.get_string(ret_val);
+if (TTCN_Logger::log_this_event(TTCN_Logger::DEBUG_ENCDEC)) {
+TTCN_Logger::begin_event(TTCN_Logger::DEBUG_ENCDEC);
+TTCN_Logger::log_event_str("encode_TopLevelMessage_UDS_requests(): Stream after encoding: ");
+ret_val.log();
+TTCN_Logger::end_event();
+}
+return ret_val;
+}
+
+TopLevelMessage__UDS__requests decode__TopLevelMessage__UDS__requests(const OCTETSTRING& data)
+{
+if (TTCN_Logger::log_this_event(TTCN_Logger::DEBUG_ENCDEC)) {
+TTCN_Logger::begin_event(TTCN_Logger::DEBUG_ENCDEC);
+TTCN_Logger::log_event_str("decode_TopLevelMessage_UDS_requests(): Stream before decoding: ");
+data.log();
+TTCN_Logger::end_event();
+}
+TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT);
+TTCN_EncDec::clear_error();
+TTCN_Buffer ttcn_buffer(data);
+TopLevelMessage__UDS__requests ret_val;
+ret_val.decode(TopLevelMessage__UDS__requests_descr_, ttcn_buffer, TTCN_EncDec::CT_RAW);
+if (TTCN_Logger::log_this_event(TTCN_Logger::DEBUG_ENCDEC)) {
+TTCN_Logger::begin_event(TTCN_Logger::DEBUG_ENCDEC);
+TTCN_Logger::log_event_str("decode_TopLevelMessage_UDS_requests(): Decoded @UnifiedDiagnosticServices.TopLevelMessage_UDS_requests: ");
+ret_val.log();
+TTCN_Logger::end_event();
+}
+if (TTCN_EncDec::get_last_error_type() == TTCN_EncDec::ET_NONE) {
+if (ttcn_buffer.get_pos() < ttcn_buffer.get_len()) {
+ttcn_buffer.cut();
+OCTETSTRING tmp_os;
+ttcn_buffer.get_string(tmp_os);
+TTCN_Logger::begin_event_log2str();
+tmp_os.log();
+CHARSTRING remaining_stream = TTCN_Logger::end_event_log2str();
+TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_EXTRA_DATA, "decode_TopLevelMessage_UDS_requests(): Data remained at the end of the stream after successful decoding: %s", (const char*) remaining_stream);
+}
+}
+return ret_val;
+}
+
+OCTETSTRING encode__TopLevelMessage__UDS__responses(const TopLevelMessage__UDS__responses& pdu)
+{
+if (TTCN_Logger::log_this_event(TTCN_Logger::DEBUG_ENCDEC)) {
+TTCN_Logger::begin_event(TTCN_Logger::DEBUG_ENCDEC);
+TTCN_Logger::log_event_str("encode_TopLevelMessage_UDS_responses(): Encoding @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses: ");
+pdu.log();
+TTCN_Logger::end_event();
+}
+TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT);
+TTCN_Buffer ttcn_buffer;
+pdu.encode(TopLevelMessage__UDS__responses_descr_, ttcn_buffer, TTCN_EncDec::CT_RAW, 0);
+OCTETSTRING ret_val;
+ttcn_buffer.get_string(ret_val);
+if (TTCN_Logger::log_this_event(TTCN_Logger::DEBUG_ENCDEC)) {
+TTCN_Logger::begin_event(TTCN_Logger::DEBUG_ENCDEC);
+TTCN_Logger::log_event_str("encode_TopLevelMessage_UDS_responses(): Stream after encoding: ");
+ret_val.log();
+TTCN_Logger::end_event();
+}
+return ret_val;
+}
+
+TopLevelMessage__UDS__responses decode__TopLevelMessage__UDS__responses(const OCTETSTRING& data)
+{
+if (TTCN_Logger::log_this_event(TTCN_Logger::DEBUG_ENCDEC)) {
+TTCN_Logger::begin_event(TTCN_Logger::DEBUG_ENCDEC);
+TTCN_Logger::log_event_str("decode_TopLevelMessage_UDS_responses(): Stream before decoding: ");
+data.log();
+TTCN_Logger::end_event();
+}
+TTCN_EncDec::set_error_behavior(TTCN_EncDec::ET_ALL, TTCN_EncDec::EB_DEFAULT);
+TTCN_EncDec::clear_error();
+TTCN_Buffer ttcn_buffer(data);
+TopLevelMessage__UDS__responses ret_val;
+ret_val.decode(TopLevelMessage__UDS__responses_descr_, ttcn_buffer, TTCN_EncDec::CT_RAW);
+if (TTCN_Logger::log_this_event(TTCN_Logger::DEBUG_ENCDEC)) {
+TTCN_Logger::begin_event(TTCN_Logger::DEBUG_ENCDEC);
+TTCN_Logger::log_event_str("decode_TopLevelMessage_UDS_responses(): Decoded @UnifiedDiagnosticServices.TopLevelMessage_UDS_responses: ");
+ret_val.log();
+TTCN_Logger::end_event();
+}
+if (TTCN_EncDec::get_last_error_type() == TTCN_EncDec::ET_NONE) {
+if (ttcn_buffer.get_pos() < ttcn_buffer.get_len()) {
+ttcn_buffer.cut();
+OCTETSTRING tmp_os;
+ttcn_buffer.get_string(tmp_os);
+TTCN_Logger::begin_event_log2str();
+tmp_os.log();
+CHARSTRING remaining_stream = TTCN_Logger::end_event_log2str();
+TTCN_EncDec_ErrorContext::error(TTCN_EncDec::ET_EXTRA_DATA, "decode_TopLevelMessage_UDS_responses(): Data remained at the end of the stream after successful decoding: %s", (const char*) remaining_stream);
+}
+}
+return ret_val;
+}
+
+
+/* Bodies of static functions */
+
+static void pre_init_module()
+{
+TTCN_Location current_location("UnifiedDiagnosticServices.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "UnifiedDiagnosticServices");
+General__Types::module_object.pre_init_module();
+module_object.add_function("encode_TopLevelMessage_UDS_requests", (genericfunc_t)&encode__TopLevelMessage__UDS__requests, NULL);
+module_object.add_function("decode_TopLevelMessage_UDS_requests", (genericfunc_t)&decode__TopLevelMessage__UDS__requests, NULL);
+module_object.add_function("encode_TopLevelMessage_UDS_responses", (genericfunc_t)&encode__TopLevelMessage__UDS__responses, NULL);
+module_object.add_function("decode_TopLevelMessage_UDS_responses", (genericfunc_t)&decode__TopLevelMessage__UDS__responses, NULL);
+}
+
+static void post_init_module()
+{
+TTCN_Location current_location("UnifiedDiagnosticServices.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "UnifiedDiagnosticServices");
+General__Types::module_object.post_init_module();
+}
+
+
+} /* end of namespace */
diff --git a/demo/UnifiedDiagnosticServices.d b/demo/UnifiedDiagnosticServices.d
new file mode 100644
index 0000000..ae042b7
--- /dev/null
+++ b/demo/UnifiedDiagnosticServices.d
@@ -0,0 +1,60 @@
+UnifiedDiagnosticServices.o UnifiedDiagnosticServices.d : UnifiedDiagnosticServices.cc \
+ UnifiedDiagnosticServices.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TTCN3.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/version.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/cversion.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Types.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Vector.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Error.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Basetype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Encdec.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RInt.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON_Tokenizer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Logger.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Template.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Integer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ttcn3float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Boolean.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Null.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Optional.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Param_Types.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/memory.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/BER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Textbuf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Parameters.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XmlReader.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Objid.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Verdicttype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Component.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Bitstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RAW.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/CharCoding.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Hexstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Octetstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Any.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Universal_charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Struct_of.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Array.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_CharacterString.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_External.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TEXT.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_EmbeddedPDV.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Addfunc.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Timer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Port.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Event_Handler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/TitanLoggerApiSimple.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/PreGenRecordOf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Module_list.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Snapshot.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Default.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Runtime.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/OER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Profiler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ProfilerTools.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Debugger.hh \
+ General_Types.hh
diff --git a/demo/UnifiedDiagnosticServices.hh b/demo/UnifiedDiagnosticServices.hh
new file mode 100644
index 0000000..c2b86dc
--- /dev/null
+++ b/demo/UnifiedDiagnosticServices.hh
@@ -0,0 +1,8130 @@
+// This C++ header file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+#ifndef UnifiedDiagnosticServices_HH
+#define UnifiedDiagnosticServices_HH
+
+#ifdef TITAN_RUNTIME_2
+#error Generated code does not match with used runtime.\
+ Code was generated without -R option but -DTITAN_RUNTIME_2 was used.
+#endif
+
+/* Header file includes */
+
+#include <TTCN3.hh>
+#include "General_Types.hh"
+
+#if TTCN3_VERSION != 60600
+#error Version mismatch detected.\
+ Please check the version of the TTCN-3 compiler and the base library.\
+ Run make clean and rebuild the project if the version of the compiler changed recently.
+#endif
+
+#ifndef LINUX
+#error This file should be compiled on LINUX
+#endif
+
+#undef UnifiedDiagnosticServices_HH
+#endif
+
+namespace UnifiedDiagnosticServices {
+
+/* Forward declarations of classes */
+
+class SuppressPosRspMsgIndicationBitType;
+class SuppressPosRspMsgIndicationBitType_template;
+class DefaultSessionRequest;
+class DefaultSessionRequest_template;
+class ProgrammingSessionRequest;
+class ProgrammingSessionRequest_template;
+class ExtendedDiagnosticSessionRequest;
+class ExtendedDiagnosticSessionRequest_template;
+class SafetySystemDiagnosticSessionRequest;
+class SafetySystemDiagnosticSessionRequest_template;
+class DiagnosticSessionRequestType;
+class DiagnosticSessionRequestType_template;
+class DiagnosticSessionControlRequestSID;
+class DiagnosticSessionControlRequestSID_template;
+class DiagnosticSessionResponseType;
+class DiagnosticSessionResponseType_template;
+class DefaultSessionResponse;
+class DefaultSessionResponse_template;
+class ProgrammingSessionResponse;
+class ProgrammingSessionResponse_template;
+class ExtendedDiagnosticSessionResponse;
+class ExtendedDiagnosticSessionResponse_template;
+class SafetySystemDiagnosticSessionResponse;
+class SafetySystemDiagnosticSessionResponse_template;
+class DiagnosticSessionControlResponseSID;
+class DiagnosticSessionControlResponseSID_template;
+class HardResetRequest;
+class HardResetRequest_template;
+class KeyOffOnResetRequest;
+class KeyOffOnResetRequest_template;
+class SoftResetRequest;
+class SoftResetRequest_template;
+class EnableRapidPowerShutDownRequest;
+class EnableRapidPowerShutDownRequest_template;
+class DisableRapidPowerShutDownRequest;
+class DisableRapidPowerShutDownRequest_template;
+class ECUResetRequestType;
+class ECUResetRequestType_template;
+class HardResetResponse;
+class HardResetResponse_template;
+class KeyOffOnResetResponse;
+class KeyOffOnResetResponse_template;
+class SoftResetResponse;
+class SoftResetResponse_template;
+class EnableRapidPowerShutDownResponse;
+class EnableRapidPowerShutDownResponse_template;
+class DisableRapidPowerShutDownResponse;
+class DisableRapidPowerShutDownResponse_template;
+class ECUResetResponseType;
+class ECUResetResponseType_template;
+class ECUResetRequestSID;
+class ECUResetRequestSID_template;
+class ECUResetResponseSID;
+class ECUResetResponseSID_template;
+class RequestSeedRequest0;
+class RequestSeedRequest0_template;
+class SendKeyRequest0;
+class SendKeyRequest0_template;
+class RequestSeedRequest1;
+class RequestSeedRequest1_template;
+class SendKeyRequest1;
+class SendKeyRequest1_template;
+class SecurityAccessRequestType;
+class SecurityAccessRequestType_template;
+class SecurityAccessRequestSID;
+class SecurityAccessRequestSID_template;
+class RequestSeedResponse0;
+class RequestSeedResponse0_template;
+class SendKeyResponse0;
+class SendKeyResponse0_template;
+class RequestSeedResponse1;
+class RequestSeedResponse1_template;
+class SendKeyResponse1;
+class SendKeyResponse1_template;
+class SecurityAccessResponseType;
+class SecurityAccessResponseType_template;
+class SecurityAccessResponseSID;
+class SecurityAccessResponseSID_template;
+class e__ControlType;
+class e__ControlType_template;
+class e__DisableEnable;
+class e__DisableEnable_template;
+class e__CommunicationMessages;
+class e__CommunicationMessages_template;
+class CommunicationType;
+class CommunicationType_template;
+class EnableRxAndTxRequest;
+class EnableRxAndTxRequest_template;
+class EnableRxAndDisableTxRequest;
+class EnableRxAndDisableTxRequest_template;
+class DisableRxAndEnableTxRequest;
+class DisableRxAndEnableTxRequest_template;
+class DisableRxAndTxRequest;
+class DisableRxAndTxRequest_template;
+class EnableRxAndDisableTxWithEnhancedAddressInformationRequest;
+class EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template;
+class EnableRxAndTxWithEnhancedAddressInformationRequest;
+class EnableRxAndTxWithEnhancedAddressInformationRequest_template;
+class CommunicationControlRequestType;
+class CommunicationControlRequestType_template;
+class CommunicationControlRequestSID;
+class CommunicationControlRequestSID_template;
+class CommunicationControlResponseSID;
+class CommunicationControlResponseSID_template;
+class TesterPresentRequestSID;
+class TesterPresentRequestSID_template;
+class TesterPresentResponseSID;
+class TesterPresentResponseSID_template;
+class ReadDataByIdentifierRequest1;
+class ReadDataByIdentifierRequest1_template;
+class ReadDataByIdentifierRequest2;
+class ReadDataByIdentifierRequest2_template;
+class ReadDataByIdentifierRequest3;
+class ReadDataByIdentifierRequest3_template;
+class ReadDataByIdentifierRequest;
+class ReadDataByIdentifierRequest_template;
+class ReadDataByIdentifierRequestSID;
+class ReadDataByIdentifierRequestSID_template;
+class ReadDataByIdentifierResponse1;
+class ReadDataByIdentifierResponse1_template;
+class ReadDataByIdentifierResponse2;
+class ReadDataByIdentifierResponse2_template;
+class ReadDataByIdentifierResponse3;
+class ReadDataByIdentifierResponse3_template;
+class ReadDataByIdentifierResponse;
+class ReadDataByIdentifierResponse_template;
+class ReadDataByIdentifierResponseSID;
+class ReadDataByIdentifierResponseSID_template;
+class WriteDataByIdentifierRequest1;
+class WriteDataByIdentifierRequest1_template;
+class WriteDataByIdentifierRequest2;
+class WriteDataByIdentifierRequest2_template;
+class WriteDataByIdentifierRequest3;
+class WriteDataByIdentifierRequest3_template;
+class WriteDataByIdentifierRequest;
+class WriteDataByIdentifierRequest_template;
+class WriteDataByIdentifierRequestSID;
+class WriteDataByIdentifierRequestSID_template;
+class WriteDataByIdentifierResponse1;
+class WriteDataByIdentifierResponse1_template;
+class WriteDataByIdentifierResponse2;
+class WriteDataByIdentifierResponse2_template;
+class WriteDataByIdentifierResponse3;
+class WriteDataByIdentifierResponse3_template;
+class WriteDataByIdentifierResponse;
+class WriteDataByIdentifierResponse_template;
+class WriteDataByIdentifierResponseSID;
+class WriteDataByIdentifierResponseSID_template;
+class e__RequestSID;
+class e__RequestSID_template;
+class e__ResponseCode;
+class e__ResponseCode_template;
+class NegativeResponseCodeSID;
+class NegativeResponseCodeSID_template;
+class TopLevelMessage__UDS__requests;
+class TopLevelMessage__UDS__requests_template;
+class TopLevelMessage__UDS__responses;
+class TopLevelMessage__UDS__responses_template;
+
+} /* end of namespace */
+
+#ifndef UnifiedDiagnosticServices_HH
+#define UnifiedDiagnosticServices_HH
+
+namespace UnifiedDiagnosticServices {
+
+/* Type definitions */
+
+typedef OCTETSTRING SID;
+typedef OCTETSTRING_template SID_template;
+typedef BITSTRING DiagnosticSessionType;
+typedef BITSTRING_template DiagnosticSessionType_template;
+typedef BITSTRING ResetType;
+typedef BITSTRING_template ResetType_template;
+typedef OCTETSTRING PowerDownTime;
+typedef OCTETSTRING_template PowerDownTime_template;
+typedef BITSTRING SecurityAccessType;
+typedef BITSTRING_template SecurityAccessType_template;
+typedef BITSTRING ControlType;
+typedef BITSTRING_template ControlType_template;
+typedef OCTETSTRING NodeIdentificationNumber;
+typedef OCTETSTRING_template NodeIdentificationNumber_template;
+typedef OCTETSTRING ServiceIdentifier;
+typedef OCTETSTRING_template ServiceIdentifier_template;
+
+/* Class definitions */
+
+class SuppressPosRspMsgIndicationBitType : public Base_Type { // enum
+friend class SuppressPosRspMsgIndicationBitType_template;
+public:
+enum enum_type { doNotsuppresssPos = 0, suppresssPos = 1, UNKNOWN_VALUE = 2, UNBOUND_VALUE = 3 };
+private:
+enum_type enum_value;
+
+public:
+SuppressPosRspMsgIndicationBitType();
+SuppressPosRspMsgIndicationBitType(int other_value);
+SuppressPosRspMsgIndicationBitType(enum_type other_value);
+SuppressPosRspMsgIndicationBitType(const SuppressPosRspMsgIndicationBitType& other_value);
+
+SuppressPosRspMsgIndicationBitType& operator=(int other_value);
+SuppressPosRspMsgIndicationBitType& operator=(enum_type other_value);
+SuppressPosRspMsgIndicationBitType& operator=(const SuppressPosRspMsgIndicationBitType& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const SuppressPosRspMsgIndicationBitType& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const SuppressPosRspMsgIndicationBitType& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const SuppressPosRspMsgIndicationBitType& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const SuppressPosRspMsgIndicationBitType& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const SuppressPosRspMsgIndicationBitType& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const SuppressPosRspMsgIndicationBitType& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const SuppressPosRspMsgIndicationBitType& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class SuppressPosRspMsgIndicationBitType_template : public Base_Template {
+union {
+SuppressPosRspMsgIndicationBitType::enum_type single_value;
+struct {
+unsigned int n_values;
+SuppressPosRspMsgIndicationBitType_template *list_value;
+} value_list;
+};
+
+void copy_template(const SuppressPosRspMsgIndicationBitType_template& other_value);
+
+public:
+SuppressPosRspMsgIndicationBitType_template();
+SuppressPosRspMsgIndicationBitType_template(template_sel other_value);
+SuppressPosRspMsgIndicationBitType_template(int other_value);
+SuppressPosRspMsgIndicationBitType_template(SuppressPosRspMsgIndicationBitType::enum_type other_value);
+SuppressPosRspMsgIndicationBitType_template(const SuppressPosRspMsgIndicationBitType& other_value);
+SuppressPosRspMsgIndicationBitType_template(const OPTIONAL<SuppressPosRspMsgIndicationBitType>& other_value);
+SuppressPosRspMsgIndicationBitType_template(const SuppressPosRspMsgIndicationBitType_template& other_value);
+~SuppressPosRspMsgIndicationBitType_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SuppressPosRspMsgIndicationBitType_template& operator=(template_sel other_value);
+SuppressPosRspMsgIndicationBitType_template& operator=(int other_value);
+SuppressPosRspMsgIndicationBitType_template& operator=(SuppressPosRspMsgIndicationBitType::enum_type other_value);
+SuppressPosRspMsgIndicationBitType_template& operator=(const SuppressPosRspMsgIndicationBitType& other_value);
+SuppressPosRspMsgIndicationBitType_template& operator=(const OPTIONAL<SuppressPosRspMsgIndicationBitType>& other_value);
+SuppressPosRspMsgIndicationBitType_template& operator=(const SuppressPosRspMsgIndicationBitType_template& other_value);
+
+boolean match(SuppressPosRspMsgIndicationBitType::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const SuppressPosRspMsgIndicationBitType& other_value, boolean legacy = FALSE) const;
+SuppressPosRspMsgIndicationBitType::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SuppressPosRspMsgIndicationBitType_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const SuppressPosRspMsgIndicationBitType& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class DefaultSessionRequest : public Base_Type {
+  BITSTRING field_diagnosticSessionType;
+public:
+  DefaultSessionRequest();
+  DefaultSessionRequest(const BITSTRING& par_diagnosticSessionType);
+  DefaultSessionRequest(const DefaultSessionRequest& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  DefaultSessionRequest& operator=(const DefaultSessionRequest& other_value);
+  boolean operator==(const DefaultSessionRequest& other_value) const;
+  inline boolean operator!=(const DefaultSessionRequest& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BITSTRING& diagnosticSessionType()
+    {return field_diagnosticSessionType;}
+  inline const BITSTRING& diagnosticSessionType() const
+    {return field_diagnosticSessionType;}
+  inline int size_of() const
+    {return 1;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class DefaultSessionRequest_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+DefaultSessionRequest_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const DefaultSessionRequest& other_value);
+void copy_template(const DefaultSessionRequest_template& other_value);
+
+public:
+DefaultSessionRequest_template();
+DefaultSessionRequest_template(template_sel other_value);
+DefaultSessionRequest_template(const DefaultSessionRequest& other_value);
+DefaultSessionRequest_template(const OPTIONAL<DefaultSessionRequest>& other_value);
+DefaultSessionRequest_template(const DefaultSessionRequest_template& other_value);
+~DefaultSessionRequest_template();
+DefaultSessionRequest_template& operator=(template_sel other_value);
+DefaultSessionRequest_template& operator=(const DefaultSessionRequest& other_value);
+DefaultSessionRequest_template& operator=(const OPTIONAL<DefaultSessionRequest>& other_value);
+DefaultSessionRequest_template& operator=(const DefaultSessionRequest_template& other_value);
+boolean match(const DefaultSessionRequest& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+DefaultSessionRequest valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+DefaultSessionRequest_template& list_item(unsigned int list_index) const;
+BITSTRING_template& diagnosticSessionType();
+const BITSTRING_template& diagnosticSessionType() const;
+int size_of() const;
+void log() const;
+void log_match(const DefaultSessionRequest& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ProgrammingSessionRequest : public Base_Type {
+  BITSTRING field_diagnosticSessionType;
+public:
+  ProgrammingSessionRequest();
+  ProgrammingSessionRequest(const BITSTRING& par_diagnosticSessionType);
+  ProgrammingSessionRequest(const ProgrammingSessionRequest& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ProgrammingSessionRequest& operator=(const ProgrammingSessionRequest& other_value);
+  boolean operator==(const ProgrammingSessionRequest& other_value) const;
+  inline boolean operator!=(const ProgrammingSessionRequest& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BITSTRING& diagnosticSessionType()
+    {return field_diagnosticSessionType;}
+  inline const BITSTRING& diagnosticSessionType() const
+    {return field_diagnosticSessionType;}
+  inline int size_of() const
+    {return 1;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ProgrammingSessionRequest_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ProgrammingSessionRequest_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ProgrammingSessionRequest& other_value);
+void copy_template(const ProgrammingSessionRequest_template& other_value);
+
+public:
+ProgrammingSessionRequest_template();
+ProgrammingSessionRequest_template(template_sel other_value);
+ProgrammingSessionRequest_template(const ProgrammingSessionRequest& other_value);
+ProgrammingSessionRequest_template(const OPTIONAL<ProgrammingSessionRequest>& other_value);
+ProgrammingSessionRequest_template(const ProgrammingSessionRequest_template& other_value);
+~ProgrammingSessionRequest_template();
+ProgrammingSessionRequest_template& operator=(template_sel other_value);
+ProgrammingSessionRequest_template& operator=(const ProgrammingSessionRequest& other_value);
+ProgrammingSessionRequest_template& operator=(const OPTIONAL<ProgrammingSessionRequest>& other_value);
+ProgrammingSessionRequest_template& operator=(const ProgrammingSessionRequest_template& other_value);
+boolean match(const ProgrammingSessionRequest& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ProgrammingSessionRequest valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ProgrammingSessionRequest_template& list_item(unsigned int list_index) const;
+BITSTRING_template& diagnosticSessionType();
+const BITSTRING_template& diagnosticSessionType() const;
+int size_of() const;
+void log() const;
+void log_match(const ProgrammingSessionRequest& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ExtendedDiagnosticSessionRequest : public Base_Type {
+  BITSTRING field_diagnosticSessionType;
+public:
+  ExtendedDiagnosticSessionRequest();
+  ExtendedDiagnosticSessionRequest(const BITSTRING& par_diagnosticSessionType);
+  ExtendedDiagnosticSessionRequest(const ExtendedDiagnosticSessionRequest& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ExtendedDiagnosticSessionRequest& operator=(const ExtendedDiagnosticSessionRequest& other_value);
+  boolean operator==(const ExtendedDiagnosticSessionRequest& other_value) const;
+  inline boolean operator!=(const ExtendedDiagnosticSessionRequest& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BITSTRING& diagnosticSessionType()
+    {return field_diagnosticSessionType;}
+  inline const BITSTRING& diagnosticSessionType() const
+    {return field_diagnosticSessionType;}
+  inline int size_of() const
+    {return 1;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ExtendedDiagnosticSessionRequest_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ExtendedDiagnosticSessionRequest_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ExtendedDiagnosticSessionRequest& other_value);
+void copy_template(const ExtendedDiagnosticSessionRequest_template& other_value);
+
+public:
+ExtendedDiagnosticSessionRequest_template();
+ExtendedDiagnosticSessionRequest_template(template_sel other_value);
+ExtendedDiagnosticSessionRequest_template(const ExtendedDiagnosticSessionRequest& other_value);
+ExtendedDiagnosticSessionRequest_template(const OPTIONAL<ExtendedDiagnosticSessionRequest>& other_value);
+ExtendedDiagnosticSessionRequest_template(const ExtendedDiagnosticSessionRequest_template& other_value);
+~ExtendedDiagnosticSessionRequest_template();
+ExtendedDiagnosticSessionRequest_template& operator=(template_sel other_value);
+ExtendedDiagnosticSessionRequest_template& operator=(const ExtendedDiagnosticSessionRequest& other_value);
+ExtendedDiagnosticSessionRequest_template& operator=(const OPTIONAL<ExtendedDiagnosticSessionRequest>& other_value);
+ExtendedDiagnosticSessionRequest_template& operator=(const ExtendedDiagnosticSessionRequest_template& other_value);
+boolean match(const ExtendedDiagnosticSessionRequest& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ExtendedDiagnosticSessionRequest valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ExtendedDiagnosticSessionRequest_template& list_item(unsigned int list_index) const;
+BITSTRING_template& diagnosticSessionType();
+const BITSTRING_template& diagnosticSessionType() const;
+int size_of() const;
+void log() const;
+void log_match(const ExtendedDiagnosticSessionRequest& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SafetySystemDiagnosticSessionRequest : public Base_Type {
+  BITSTRING field_diagnosticSessionType;
+public:
+  SafetySystemDiagnosticSessionRequest();
+  SafetySystemDiagnosticSessionRequest(const BITSTRING& par_diagnosticSessionType);
+  SafetySystemDiagnosticSessionRequest(const SafetySystemDiagnosticSessionRequest& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SafetySystemDiagnosticSessionRequest& operator=(const SafetySystemDiagnosticSessionRequest& other_value);
+  boolean operator==(const SafetySystemDiagnosticSessionRequest& other_value) const;
+  inline boolean operator!=(const SafetySystemDiagnosticSessionRequest& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BITSTRING& diagnosticSessionType()
+    {return field_diagnosticSessionType;}
+  inline const BITSTRING& diagnosticSessionType() const
+    {return field_diagnosticSessionType;}
+  inline int size_of() const
+    {return 1;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class SafetySystemDiagnosticSessionRequest_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SafetySystemDiagnosticSessionRequest_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SafetySystemDiagnosticSessionRequest& other_value);
+void copy_template(const SafetySystemDiagnosticSessionRequest_template& other_value);
+
+public:
+SafetySystemDiagnosticSessionRequest_template();
+SafetySystemDiagnosticSessionRequest_template(template_sel other_value);
+SafetySystemDiagnosticSessionRequest_template(const SafetySystemDiagnosticSessionRequest& other_value);
+SafetySystemDiagnosticSessionRequest_template(const OPTIONAL<SafetySystemDiagnosticSessionRequest>& other_value);
+SafetySystemDiagnosticSessionRequest_template(const SafetySystemDiagnosticSessionRequest_template& other_value);
+~SafetySystemDiagnosticSessionRequest_template();
+SafetySystemDiagnosticSessionRequest_template& operator=(template_sel other_value);
+SafetySystemDiagnosticSessionRequest_template& operator=(const SafetySystemDiagnosticSessionRequest& other_value);
+SafetySystemDiagnosticSessionRequest_template& operator=(const OPTIONAL<SafetySystemDiagnosticSessionRequest>& other_value);
+SafetySystemDiagnosticSessionRequest_template& operator=(const SafetySystemDiagnosticSessionRequest_template& other_value);
+boolean match(const SafetySystemDiagnosticSessionRequest& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SafetySystemDiagnosticSessionRequest valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SafetySystemDiagnosticSessionRequest_template& list_item(unsigned int list_index) const;
+BITSTRING_template& diagnosticSessionType();
+const BITSTRING_template& diagnosticSessionType() const;
+int size_of() const;
+void log() const;
+void log_match(const SafetySystemDiagnosticSessionRequest& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class DiagnosticSessionRequestType : public Base_Type {
+public:
+enum union_selection_type { UNBOUND_VALUE = 0, ALT_defaultSession = 1, ALT_programmingSession = 2, ALT_extendedDiagnosticSession = 3, ALT_safetySystemDiagnosticSession = 4 };
+private:
+union_selection_type union_selection;
+union {
+DefaultSessionRequest *field_defaultSession;
+ProgrammingSessionRequest *field_programmingSession;
+ExtendedDiagnosticSessionRequest *field_extendedDiagnosticSession;
+SafetySystemDiagnosticSessionRequest *field_safetySystemDiagnosticSession;
+};
+void copy_value(const DiagnosticSessionRequestType& other_value);
+
+public:
+DiagnosticSessionRequestType();
+DiagnosticSessionRequestType(const DiagnosticSessionRequestType& other_value);
+~DiagnosticSessionRequestType();
+DiagnosticSessionRequestType& operator=(const DiagnosticSessionRequestType& other_value);
+boolean operator==(const DiagnosticSessionRequestType& other_value) const;
+inline boolean operator!=(const DiagnosticSessionRequestType& other_value) const { return !(*this == other_value); }
+DefaultSessionRequest& defaultSession();
+const DefaultSessionRequest& defaultSession() const;
+ProgrammingSessionRequest& programmingSession();
+const ProgrammingSessionRequest& programmingSession() const;
+ExtendedDiagnosticSessionRequest& extendedDiagnosticSession();
+const ExtendedDiagnosticSessionRequest& extendedDiagnosticSession() const;
+SafetySystemDiagnosticSessionRequest& safetySystemDiagnosticSession();
+const SafetySystemDiagnosticSessionRequest& safetySystemDiagnosticSession() const;
+inline union_selection_type get_selection() const { return union_selection; }
+boolean ischosen(union_selection_type checked_selection) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class DiagnosticSessionRequestType_template : public Base_Template {
+union {
+struct {
+DiagnosticSessionRequestType::union_selection_type union_selection;
+union {
+DefaultSessionRequest_template *field_defaultSession;
+ProgrammingSessionRequest_template *field_programmingSession;
+ExtendedDiagnosticSessionRequest_template *field_extendedDiagnosticSession;
+SafetySystemDiagnosticSessionRequest_template *field_safetySystemDiagnosticSession;
+};
+} single_value;
+struct {
+unsigned int n_values;
+DiagnosticSessionRequestType_template *list_value;
+} value_list;
+};
+void copy_value(const DiagnosticSessionRequestType& other_value);
+
+void copy_template(const DiagnosticSessionRequestType_template& other_value);
+
+public:
+DiagnosticSessionRequestType_template();
+DiagnosticSessionRequestType_template(template_sel other_value);
+DiagnosticSessionRequestType_template(const DiagnosticSessionRequestType& other_value);
+DiagnosticSessionRequestType_template(const OPTIONAL<DiagnosticSessionRequestType>& other_value);
+DiagnosticSessionRequestType_template(const DiagnosticSessionRequestType_template& other_value);
+~DiagnosticSessionRequestType_template();
+void clean_up();
+DiagnosticSessionRequestType_template& operator=(template_sel other_value);
+DiagnosticSessionRequestType_template& operator=(const DiagnosticSessionRequestType& other_value);
+DiagnosticSessionRequestType_template& operator=(const OPTIONAL<DiagnosticSessionRequestType>& other_value);
+DiagnosticSessionRequestType_template& operator=(const DiagnosticSessionRequestType_template& other_value);
+boolean match(const DiagnosticSessionRequestType& other_value, boolean legacy = FALSE) const;
+boolean is_value() const;DiagnosticSessionRequestType valueof() const;
+DiagnosticSessionRequestType_template& list_item(unsigned int list_index) const;
+void set_type(template_sel template_type, unsigned int list_length);
+DefaultSessionRequest_template& defaultSession();
+const DefaultSessionRequest_template& defaultSession() const;
+ProgrammingSessionRequest_template& programmingSession();
+const ProgrammingSessionRequest_template& programmingSession() const;
+ExtendedDiagnosticSessionRequest_template& extendedDiagnosticSession();
+const ExtendedDiagnosticSessionRequest_template& extendedDiagnosticSession() const;
+SafetySystemDiagnosticSessionRequest_template& safetySystemDiagnosticSession();
+const SafetySystemDiagnosticSessionRequest_template& safetySystemDiagnosticSession() const;
+boolean ischosen(DiagnosticSessionRequestType::union_selection_type checked_selection) const;
+void log() const;
+void log_match(const DiagnosticSessionRequestType& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class DiagnosticSessionControlRequestSID : public Base_Type {
+  OCTETSTRING field_sid;
+  SuppressPosRspMsgIndicationBitType field_suppressPosRspMsgIndicationBit;
+  DiagnosticSessionRequestType field_diagnosticSessionType;
+public:
+  DiagnosticSessionControlRequestSID();
+  DiagnosticSessionControlRequestSID(const OCTETSTRING& par_sid,
+    const SuppressPosRspMsgIndicationBitType& par_suppressPosRspMsgIndicationBit,
+    const DiagnosticSessionRequestType& par_diagnosticSessionType);
+  DiagnosticSessionControlRequestSID(const DiagnosticSessionControlRequestSID& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  DiagnosticSessionControlRequestSID& operator=(const DiagnosticSessionControlRequestSID& other_value);
+  boolean operator==(const DiagnosticSessionControlRequestSID& other_value) const;
+  inline boolean operator!=(const DiagnosticSessionControlRequestSID& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& sid()
+    {return field_sid;}
+  inline const OCTETSTRING& sid() const
+    {return field_sid;}
+  inline SuppressPosRspMsgIndicationBitType& suppressPosRspMsgIndicationBit()
+    {return field_suppressPosRspMsgIndicationBit;}
+  inline const SuppressPosRspMsgIndicationBitType& suppressPosRspMsgIndicationBit() const
+    {return field_suppressPosRspMsgIndicationBit;}
+  inline DiagnosticSessionRequestType& diagnosticSessionType()
+    {return field_diagnosticSessionType;}
+  inline const DiagnosticSessionRequestType& diagnosticSessionType() const
+    {return field_diagnosticSessionType;}
+  inline int size_of() const
+    {return 3;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class DiagnosticSessionControlRequestSID_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+DiagnosticSessionControlRequestSID_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const DiagnosticSessionControlRequestSID& other_value);
+void copy_template(const DiagnosticSessionControlRequestSID_template& other_value);
+
+public:
+DiagnosticSessionControlRequestSID_template();
+DiagnosticSessionControlRequestSID_template(template_sel other_value);
+DiagnosticSessionControlRequestSID_template(const DiagnosticSessionControlRequestSID& other_value);
+DiagnosticSessionControlRequestSID_template(const OPTIONAL<DiagnosticSessionControlRequestSID>& other_value);
+DiagnosticSessionControlRequestSID_template(const DiagnosticSessionControlRequestSID_template& other_value);
+~DiagnosticSessionControlRequestSID_template();
+DiagnosticSessionControlRequestSID_template& operator=(template_sel other_value);
+DiagnosticSessionControlRequestSID_template& operator=(const DiagnosticSessionControlRequestSID& other_value);
+DiagnosticSessionControlRequestSID_template& operator=(const OPTIONAL<DiagnosticSessionControlRequestSID>& other_value);
+DiagnosticSessionControlRequestSID_template& operator=(const DiagnosticSessionControlRequestSID_template& other_value);
+boolean match(const DiagnosticSessionControlRequestSID& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+DiagnosticSessionControlRequestSID valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+DiagnosticSessionControlRequestSID_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& sid();
+const OCTETSTRING_template& sid() const;
+SuppressPosRspMsgIndicationBitType_template& suppressPosRspMsgIndicationBit();
+const SuppressPosRspMsgIndicationBitType_template& suppressPosRspMsgIndicationBit() const;
+DiagnosticSessionRequestType_template& diagnosticSessionType();
+const DiagnosticSessionRequestType_template& diagnosticSessionType() const;
+int size_of() const;
+void log() const;
+void log_match(const DiagnosticSessionControlRequestSID& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class DiagnosticSessionResponseType : public Base_Type {
+public:
+enum union_selection_type { UNBOUND_VALUE = 0, ALT_defaultSession = 1, ALT_programmingSession = 2, ALT_extendedDiagnosticSession = 3, ALT_safetySystemDiagnosticSession = 4 };
+private:
+union_selection_type union_selection;
+union {
+DefaultSessionResponse *field_defaultSession;
+ProgrammingSessionResponse *field_programmingSession;
+ExtendedDiagnosticSessionResponse *field_extendedDiagnosticSession;
+SafetySystemDiagnosticSessionResponse *field_safetySystemDiagnosticSession;
+};
+void copy_value(const DiagnosticSessionResponseType& other_value);
+
+public:
+DiagnosticSessionResponseType();
+DiagnosticSessionResponseType(const DiagnosticSessionResponseType& other_value);
+~DiagnosticSessionResponseType();
+DiagnosticSessionResponseType& operator=(const DiagnosticSessionResponseType& other_value);
+boolean operator==(const DiagnosticSessionResponseType& other_value) const;
+inline boolean operator!=(const DiagnosticSessionResponseType& other_value) const { return !(*this == other_value); }
+DefaultSessionResponse& defaultSession();
+const DefaultSessionResponse& defaultSession() const;
+ProgrammingSessionResponse& programmingSession();
+const ProgrammingSessionResponse& programmingSession() const;
+ExtendedDiagnosticSessionResponse& extendedDiagnosticSession();
+const ExtendedDiagnosticSessionResponse& extendedDiagnosticSession() const;
+SafetySystemDiagnosticSessionResponse& safetySystemDiagnosticSession();
+const SafetySystemDiagnosticSessionResponse& safetySystemDiagnosticSession() const;
+inline union_selection_type get_selection() const { return union_selection; }
+boolean ischosen(union_selection_type checked_selection) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class DiagnosticSessionResponseType_template : public Base_Template {
+union {
+struct {
+DiagnosticSessionResponseType::union_selection_type union_selection;
+union {
+DefaultSessionResponse_template *field_defaultSession;
+ProgrammingSessionResponse_template *field_programmingSession;
+ExtendedDiagnosticSessionResponse_template *field_extendedDiagnosticSession;
+SafetySystemDiagnosticSessionResponse_template *field_safetySystemDiagnosticSession;
+};
+} single_value;
+struct {
+unsigned int n_values;
+DiagnosticSessionResponseType_template *list_value;
+} value_list;
+};
+void copy_value(const DiagnosticSessionResponseType& other_value);
+
+void copy_template(const DiagnosticSessionResponseType_template& other_value);
+
+public:
+DiagnosticSessionResponseType_template();
+DiagnosticSessionResponseType_template(template_sel other_value);
+DiagnosticSessionResponseType_template(const DiagnosticSessionResponseType& other_value);
+DiagnosticSessionResponseType_template(const OPTIONAL<DiagnosticSessionResponseType>& other_value);
+DiagnosticSessionResponseType_template(const DiagnosticSessionResponseType_template& other_value);
+~DiagnosticSessionResponseType_template();
+void clean_up();
+DiagnosticSessionResponseType_template& operator=(template_sel other_value);
+DiagnosticSessionResponseType_template& operator=(const DiagnosticSessionResponseType& other_value);
+DiagnosticSessionResponseType_template& operator=(const OPTIONAL<DiagnosticSessionResponseType>& other_value);
+DiagnosticSessionResponseType_template& operator=(const DiagnosticSessionResponseType_template& other_value);
+boolean match(const DiagnosticSessionResponseType& other_value, boolean legacy = FALSE) const;
+boolean is_value() const;DiagnosticSessionResponseType valueof() const;
+DiagnosticSessionResponseType_template& list_item(unsigned int list_index) const;
+void set_type(template_sel template_type, unsigned int list_length);
+DefaultSessionResponse_template& defaultSession();
+const DefaultSessionResponse_template& defaultSession() const;
+ProgrammingSessionResponse_template& programmingSession();
+const ProgrammingSessionResponse_template& programmingSession() const;
+ExtendedDiagnosticSessionResponse_template& extendedDiagnosticSession();
+const ExtendedDiagnosticSessionResponse_template& extendedDiagnosticSession() const;
+SafetySystemDiagnosticSessionResponse_template& safetySystemDiagnosticSession();
+const SafetySystemDiagnosticSessionResponse_template& safetySystemDiagnosticSession() const;
+boolean ischosen(DiagnosticSessionResponseType::union_selection_type checked_selection) const;
+void log() const;
+void log_match(const DiagnosticSessionResponseType& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class DefaultSessionResponse : public Base_Type {
+  BITSTRING field_diagnosticSessionType;
+  OCTETSTRING field_p2ServerMax;
+  OCTETSTRING field_p2StarServerMax;
+public:
+  DefaultSessionResponse();
+  DefaultSessionResponse(const BITSTRING& par_diagnosticSessionType,
+    const OCTETSTRING& par_p2ServerMax,
+    const OCTETSTRING& par_p2StarServerMax);
+  DefaultSessionResponse(const DefaultSessionResponse& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  DefaultSessionResponse& operator=(const DefaultSessionResponse& other_value);
+  boolean operator==(const DefaultSessionResponse& other_value) const;
+  inline boolean operator!=(const DefaultSessionResponse& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BITSTRING& diagnosticSessionType()
+    {return field_diagnosticSessionType;}
+  inline const BITSTRING& diagnosticSessionType() const
+    {return field_diagnosticSessionType;}
+  inline OCTETSTRING& p2ServerMax()
+    {return field_p2ServerMax;}
+  inline const OCTETSTRING& p2ServerMax() const
+    {return field_p2ServerMax;}
+  inline OCTETSTRING& p2StarServerMax()
+    {return field_p2StarServerMax;}
+  inline const OCTETSTRING& p2StarServerMax() const
+    {return field_p2StarServerMax;}
+  inline int size_of() const
+    {return 3;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class DefaultSessionResponse_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+DefaultSessionResponse_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const DefaultSessionResponse& other_value);
+void copy_template(const DefaultSessionResponse_template& other_value);
+
+public:
+DefaultSessionResponse_template();
+DefaultSessionResponse_template(template_sel other_value);
+DefaultSessionResponse_template(const DefaultSessionResponse& other_value);
+DefaultSessionResponse_template(const OPTIONAL<DefaultSessionResponse>& other_value);
+DefaultSessionResponse_template(const DefaultSessionResponse_template& other_value);
+~DefaultSessionResponse_template();
+DefaultSessionResponse_template& operator=(template_sel other_value);
+DefaultSessionResponse_template& operator=(const DefaultSessionResponse& other_value);
+DefaultSessionResponse_template& operator=(const OPTIONAL<DefaultSessionResponse>& other_value);
+DefaultSessionResponse_template& operator=(const DefaultSessionResponse_template& other_value);
+boolean match(const DefaultSessionResponse& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+DefaultSessionResponse valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+DefaultSessionResponse_template& list_item(unsigned int list_index) const;
+BITSTRING_template& diagnosticSessionType();
+const BITSTRING_template& diagnosticSessionType() const;
+OCTETSTRING_template& p2ServerMax();
+const OCTETSTRING_template& p2ServerMax() const;
+OCTETSTRING_template& p2StarServerMax();
+const OCTETSTRING_template& p2StarServerMax() const;
+int size_of() const;
+void log() const;
+void log_match(const DefaultSessionResponse& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ProgrammingSessionResponse : public Base_Type {
+  BITSTRING field_diagnosticSessionType;
+  OCTETSTRING field_p2ServerMax;
+  OCTETSTRING field_p2StarServerMax;
+public:
+  ProgrammingSessionResponse();
+  ProgrammingSessionResponse(const BITSTRING& par_diagnosticSessionType,
+    const OCTETSTRING& par_p2ServerMax,
+    const OCTETSTRING& par_p2StarServerMax);
+  ProgrammingSessionResponse(const ProgrammingSessionResponse& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ProgrammingSessionResponse& operator=(const ProgrammingSessionResponse& other_value);
+  boolean operator==(const ProgrammingSessionResponse& other_value) const;
+  inline boolean operator!=(const ProgrammingSessionResponse& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BITSTRING& diagnosticSessionType()
+    {return field_diagnosticSessionType;}
+  inline const BITSTRING& diagnosticSessionType() const
+    {return field_diagnosticSessionType;}
+  inline OCTETSTRING& p2ServerMax()
+    {return field_p2ServerMax;}
+  inline const OCTETSTRING& p2ServerMax() const
+    {return field_p2ServerMax;}
+  inline OCTETSTRING& p2StarServerMax()
+    {return field_p2StarServerMax;}
+  inline const OCTETSTRING& p2StarServerMax() const
+    {return field_p2StarServerMax;}
+  inline int size_of() const
+    {return 3;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ProgrammingSessionResponse_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ProgrammingSessionResponse_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ProgrammingSessionResponse& other_value);
+void copy_template(const ProgrammingSessionResponse_template& other_value);
+
+public:
+ProgrammingSessionResponse_template();
+ProgrammingSessionResponse_template(template_sel other_value);
+ProgrammingSessionResponse_template(const ProgrammingSessionResponse& other_value);
+ProgrammingSessionResponse_template(const OPTIONAL<ProgrammingSessionResponse>& other_value);
+ProgrammingSessionResponse_template(const ProgrammingSessionResponse_template& other_value);
+~ProgrammingSessionResponse_template();
+ProgrammingSessionResponse_template& operator=(template_sel other_value);
+ProgrammingSessionResponse_template& operator=(const ProgrammingSessionResponse& other_value);
+ProgrammingSessionResponse_template& operator=(const OPTIONAL<ProgrammingSessionResponse>& other_value);
+ProgrammingSessionResponse_template& operator=(const ProgrammingSessionResponse_template& other_value);
+boolean match(const ProgrammingSessionResponse& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ProgrammingSessionResponse valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ProgrammingSessionResponse_template& list_item(unsigned int list_index) const;
+BITSTRING_template& diagnosticSessionType();
+const BITSTRING_template& diagnosticSessionType() const;
+OCTETSTRING_template& p2ServerMax();
+const OCTETSTRING_template& p2ServerMax() const;
+OCTETSTRING_template& p2StarServerMax();
+const OCTETSTRING_template& p2StarServerMax() const;
+int size_of() const;
+void log() const;
+void log_match(const ProgrammingSessionResponse& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ExtendedDiagnosticSessionResponse : public Base_Type {
+  BITSTRING field_diagnosticSessionType;
+  OCTETSTRING field_p2ServerMax;
+  OCTETSTRING field_p2StarServerMax;
+public:
+  ExtendedDiagnosticSessionResponse();
+  ExtendedDiagnosticSessionResponse(const BITSTRING& par_diagnosticSessionType,
+    const OCTETSTRING& par_p2ServerMax,
+    const OCTETSTRING& par_p2StarServerMax);
+  ExtendedDiagnosticSessionResponse(const ExtendedDiagnosticSessionResponse& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ExtendedDiagnosticSessionResponse& operator=(const ExtendedDiagnosticSessionResponse& other_value);
+  boolean operator==(const ExtendedDiagnosticSessionResponse& other_value) const;
+  inline boolean operator!=(const ExtendedDiagnosticSessionResponse& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BITSTRING& diagnosticSessionType()
+    {return field_diagnosticSessionType;}
+  inline const BITSTRING& diagnosticSessionType() const
+    {return field_diagnosticSessionType;}
+  inline OCTETSTRING& p2ServerMax()
+    {return field_p2ServerMax;}
+  inline const OCTETSTRING& p2ServerMax() const
+    {return field_p2ServerMax;}
+  inline OCTETSTRING& p2StarServerMax()
+    {return field_p2StarServerMax;}
+  inline const OCTETSTRING& p2StarServerMax() const
+    {return field_p2StarServerMax;}
+  inline int size_of() const
+    {return 3;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ExtendedDiagnosticSessionResponse_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ExtendedDiagnosticSessionResponse_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ExtendedDiagnosticSessionResponse& other_value);
+void copy_template(const ExtendedDiagnosticSessionResponse_template& other_value);
+
+public:
+ExtendedDiagnosticSessionResponse_template();
+ExtendedDiagnosticSessionResponse_template(template_sel other_value);
+ExtendedDiagnosticSessionResponse_template(const ExtendedDiagnosticSessionResponse& other_value);
+ExtendedDiagnosticSessionResponse_template(const OPTIONAL<ExtendedDiagnosticSessionResponse>& other_value);
+ExtendedDiagnosticSessionResponse_template(const ExtendedDiagnosticSessionResponse_template& other_value);
+~ExtendedDiagnosticSessionResponse_template();
+ExtendedDiagnosticSessionResponse_template& operator=(template_sel other_value);
+ExtendedDiagnosticSessionResponse_template& operator=(const ExtendedDiagnosticSessionResponse& other_value);
+ExtendedDiagnosticSessionResponse_template& operator=(const OPTIONAL<ExtendedDiagnosticSessionResponse>& other_value);
+ExtendedDiagnosticSessionResponse_template& operator=(const ExtendedDiagnosticSessionResponse_template& other_value);
+boolean match(const ExtendedDiagnosticSessionResponse& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ExtendedDiagnosticSessionResponse valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ExtendedDiagnosticSessionResponse_template& list_item(unsigned int list_index) const;
+BITSTRING_template& diagnosticSessionType();
+const BITSTRING_template& diagnosticSessionType() const;
+OCTETSTRING_template& p2ServerMax();
+const OCTETSTRING_template& p2ServerMax() const;
+OCTETSTRING_template& p2StarServerMax();
+const OCTETSTRING_template& p2StarServerMax() const;
+int size_of() const;
+void log() const;
+void log_match(const ExtendedDiagnosticSessionResponse& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SafetySystemDiagnosticSessionResponse : public Base_Type {
+  BITSTRING field_diagnosticSessionType;
+  OCTETSTRING field_p2ServerMax;
+  OCTETSTRING field_p2StarServerMax;
+public:
+  SafetySystemDiagnosticSessionResponse();
+  SafetySystemDiagnosticSessionResponse(const BITSTRING& par_diagnosticSessionType,
+    const OCTETSTRING& par_p2ServerMax,
+    const OCTETSTRING& par_p2StarServerMax);
+  SafetySystemDiagnosticSessionResponse(const SafetySystemDiagnosticSessionResponse& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SafetySystemDiagnosticSessionResponse& operator=(const SafetySystemDiagnosticSessionResponse& other_value);
+  boolean operator==(const SafetySystemDiagnosticSessionResponse& other_value) const;
+  inline boolean operator!=(const SafetySystemDiagnosticSessionResponse& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BITSTRING& diagnosticSessionType()
+    {return field_diagnosticSessionType;}
+  inline const BITSTRING& diagnosticSessionType() const
+    {return field_diagnosticSessionType;}
+  inline OCTETSTRING& p2ServerMax()
+    {return field_p2ServerMax;}
+  inline const OCTETSTRING& p2ServerMax() const
+    {return field_p2ServerMax;}
+  inline OCTETSTRING& p2StarServerMax()
+    {return field_p2StarServerMax;}
+  inline const OCTETSTRING& p2StarServerMax() const
+    {return field_p2StarServerMax;}
+  inline int size_of() const
+    {return 3;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class SafetySystemDiagnosticSessionResponse_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SafetySystemDiagnosticSessionResponse_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SafetySystemDiagnosticSessionResponse& other_value);
+void copy_template(const SafetySystemDiagnosticSessionResponse_template& other_value);
+
+public:
+SafetySystemDiagnosticSessionResponse_template();
+SafetySystemDiagnosticSessionResponse_template(template_sel other_value);
+SafetySystemDiagnosticSessionResponse_template(const SafetySystemDiagnosticSessionResponse& other_value);
+SafetySystemDiagnosticSessionResponse_template(const OPTIONAL<SafetySystemDiagnosticSessionResponse>& other_value);
+SafetySystemDiagnosticSessionResponse_template(const SafetySystemDiagnosticSessionResponse_template& other_value);
+~SafetySystemDiagnosticSessionResponse_template();
+SafetySystemDiagnosticSessionResponse_template& operator=(template_sel other_value);
+SafetySystemDiagnosticSessionResponse_template& operator=(const SafetySystemDiagnosticSessionResponse& other_value);
+SafetySystemDiagnosticSessionResponse_template& operator=(const OPTIONAL<SafetySystemDiagnosticSessionResponse>& other_value);
+SafetySystemDiagnosticSessionResponse_template& operator=(const SafetySystemDiagnosticSessionResponse_template& other_value);
+boolean match(const SafetySystemDiagnosticSessionResponse& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SafetySystemDiagnosticSessionResponse valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SafetySystemDiagnosticSessionResponse_template& list_item(unsigned int list_index) const;
+BITSTRING_template& diagnosticSessionType();
+const BITSTRING_template& diagnosticSessionType() const;
+OCTETSTRING_template& p2ServerMax();
+const OCTETSTRING_template& p2ServerMax() const;
+OCTETSTRING_template& p2StarServerMax();
+const OCTETSTRING_template& p2StarServerMax() const;
+int size_of() const;
+void log() const;
+void log_match(const SafetySystemDiagnosticSessionResponse& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class DiagnosticSessionControlResponseSID : public Base_Type {
+  OCTETSTRING field_sid;
+  BITSTRING field_reserved;
+  DiagnosticSessionResponseType field_diagnosticSessionType;
+public:
+  DiagnosticSessionControlResponseSID();
+  DiagnosticSessionControlResponseSID(const OCTETSTRING& par_sid,
+    const BITSTRING& par_reserved,
+    const DiagnosticSessionResponseType& par_diagnosticSessionType);
+  DiagnosticSessionControlResponseSID(const DiagnosticSessionControlResponseSID& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  DiagnosticSessionControlResponseSID& operator=(const DiagnosticSessionControlResponseSID& other_value);
+  boolean operator==(const DiagnosticSessionControlResponseSID& other_value) const;
+  inline boolean operator!=(const DiagnosticSessionControlResponseSID& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& sid()
+    {return field_sid;}
+  inline const OCTETSTRING& sid() const
+    {return field_sid;}
+  inline BITSTRING& reserved()
+    {return field_reserved;}
+  inline const BITSTRING& reserved() const
+    {return field_reserved;}
+  inline DiagnosticSessionResponseType& diagnosticSessionType()
+    {return field_diagnosticSessionType;}
+  inline const DiagnosticSessionResponseType& diagnosticSessionType() const
+    {return field_diagnosticSessionType;}
+  inline int size_of() const
+    {return 3;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class DiagnosticSessionControlResponseSID_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+DiagnosticSessionControlResponseSID_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const DiagnosticSessionControlResponseSID& other_value);
+void copy_template(const DiagnosticSessionControlResponseSID_template& other_value);
+
+public:
+DiagnosticSessionControlResponseSID_template();
+DiagnosticSessionControlResponseSID_template(template_sel other_value);
+DiagnosticSessionControlResponseSID_template(const DiagnosticSessionControlResponseSID& other_value);
+DiagnosticSessionControlResponseSID_template(const OPTIONAL<DiagnosticSessionControlResponseSID>& other_value);
+DiagnosticSessionControlResponseSID_template(const DiagnosticSessionControlResponseSID_template& other_value);
+~DiagnosticSessionControlResponseSID_template();
+DiagnosticSessionControlResponseSID_template& operator=(template_sel other_value);
+DiagnosticSessionControlResponseSID_template& operator=(const DiagnosticSessionControlResponseSID& other_value);
+DiagnosticSessionControlResponseSID_template& operator=(const OPTIONAL<DiagnosticSessionControlResponseSID>& other_value);
+DiagnosticSessionControlResponseSID_template& operator=(const DiagnosticSessionControlResponseSID_template& other_value);
+boolean match(const DiagnosticSessionControlResponseSID& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+DiagnosticSessionControlResponseSID valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+DiagnosticSessionControlResponseSID_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& sid();
+const OCTETSTRING_template& sid() const;
+BITSTRING_template& reserved();
+const BITSTRING_template& reserved() const;
+DiagnosticSessionResponseType_template& diagnosticSessionType();
+const DiagnosticSessionResponseType_template& diagnosticSessionType() const;
+int size_of() const;
+void log() const;
+void log_match(const DiagnosticSessionControlResponseSID& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class HardResetRequest : public Base_Type {
+  BITSTRING field_resetType;
+public:
+  HardResetRequest();
+  HardResetRequest(const BITSTRING& par_resetType);
+  HardResetRequest(const HardResetRequest& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  HardResetRequest& operator=(const HardResetRequest& other_value);
+  boolean operator==(const HardResetRequest& other_value) const;
+  inline boolean operator!=(const HardResetRequest& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BITSTRING& resetType()
+    {return field_resetType;}
+  inline const BITSTRING& resetType() const
+    {return field_resetType;}
+  inline int size_of() const
+    {return 1;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class HardResetRequest_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+HardResetRequest_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const HardResetRequest& other_value);
+void copy_template(const HardResetRequest_template& other_value);
+
+public:
+HardResetRequest_template();
+HardResetRequest_template(template_sel other_value);
+HardResetRequest_template(const HardResetRequest& other_value);
+HardResetRequest_template(const OPTIONAL<HardResetRequest>& other_value);
+HardResetRequest_template(const HardResetRequest_template& other_value);
+~HardResetRequest_template();
+HardResetRequest_template& operator=(template_sel other_value);
+HardResetRequest_template& operator=(const HardResetRequest& other_value);
+HardResetRequest_template& operator=(const OPTIONAL<HardResetRequest>& other_value);
+HardResetRequest_template& operator=(const HardResetRequest_template& other_value);
+boolean match(const HardResetRequest& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+HardResetRequest valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+HardResetRequest_template& list_item(unsigned int list_index) const;
+BITSTRING_template& resetType();
+const BITSTRING_template& resetType() const;
+int size_of() const;
+void log() const;
+void log_match(const HardResetRequest& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class KeyOffOnResetRequest : public Base_Type {
+  BITSTRING field_resetType;
+public:
+  KeyOffOnResetRequest();
+  KeyOffOnResetRequest(const BITSTRING& par_resetType);
+  KeyOffOnResetRequest(const KeyOffOnResetRequest& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  KeyOffOnResetRequest& operator=(const KeyOffOnResetRequest& other_value);
+  boolean operator==(const KeyOffOnResetRequest& other_value) const;
+  inline boolean operator!=(const KeyOffOnResetRequest& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BITSTRING& resetType()
+    {return field_resetType;}
+  inline const BITSTRING& resetType() const
+    {return field_resetType;}
+  inline int size_of() const
+    {return 1;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class KeyOffOnResetRequest_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+KeyOffOnResetRequest_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const KeyOffOnResetRequest& other_value);
+void copy_template(const KeyOffOnResetRequest_template& other_value);
+
+public:
+KeyOffOnResetRequest_template();
+KeyOffOnResetRequest_template(template_sel other_value);
+KeyOffOnResetRequest_template(const KeyOffOnResetRequest& other_value);
+KeyOffOnResetRequest_template(const OPTIONAL<KeyOffOnResetRequest>& other_value);
+KeyOffOnResetRequest_template(const KeyOffOnResetRequest_template& other_value);
+~KeyOffOnResetRequest_template();
+KeyOffOnResetRequest_template& operator=(template_sel other_value);
+KeyOffOnResetRequest_template& operator=(const KeyOffOnResetRequest& other_value);
+KeyOffOnResetRequest_template& operator=(const OPTIONAL<KeyOffOnResetRequest>& other_value);
+KeyOffOnResetRequest_template& operator=(const KeyOffOnResetRequest_template& other_value);
+boolean match(const KeyOffOnResetRequest& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+KeyOffOnResetRequest valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+KeyOffOnResetRequest_template& list_item(unsigned int list_index) const;
+BITSTRING_template& resetType();
+const BITSTRING_template& resetType() const;
+int size_of() const;
+void log() const;
+void log_match(const KeyOffOnResetRequest& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SoftResetRequest : public Base_Type {
+  BITSTRING field_resetType;
+public:
+  SoftResetRequest();
+  SoftResetRequest(const BITSTRING& par_resetType);
+  SoftResetRequest(const SoftResetRequest& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SoftResetRequest& operator=(const SoftResetRequest& other_value);
+  boolean operator==(const SoftResetRequest& other_value) const;
+  inline boolean operator!=(const SoftResetRequest& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BITSTRING& resetType()
+    {return field_resetType;}
+  inline const BITSTRING& resetType() const
+    {return field_resetType;}
+  inline int size_of() const
+    {return 1;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class SoftResetRequest_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SoftResetRequest_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SoftResetRequest& other_value);
+void copy_template(const SoftResetRequest_template& other_value);
+
+public:
+SoftResetRequest_template();
+SoftResetRequest_template(template_sel other_value);
+SoftResetRequest_template(const SoftResetRequest& other_value);
+SoftResetRequest_template(const OPTIONAL<SoftResetRequest>& other_value);
+SoftResetRequest_template(const SoftResetRequest_template& other_value);
+~SoftResetRequest_template();
+SoftResetRequest_template& operator=(template_sel other_value);
+SoftResetRequest_template& operator=(const SoftResetRequest& other_value);
+SoftResetRequest_template& operator=(const OPTIONAL<SoftResetRequest>& other_value);
+SoftResetRequest_template& operator=(const SoftResetRequest_template& other_value);
+boolean match(const SoftResetRequest& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SoftResetRequest valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SoftResetRequest_template& list_item(unsigned int list_index) const;
+BITSTRING_template& resetType();
+const BITSTRING_template& resetType() const;
+int size_of() const;
+void log() const;
+void log_match(const SoftResetRequest& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class EnableRapidPowerShutDownRequest : public Base_Type {
+  BITSTRING field_resetType;
+public:
+  EnableRapidPowerShutDownRequest();
+  EnableRapidPowerShutDownRequest(const BITSTRING& par_resetType);
+  EnableRapidPowerShutDownRequest(const EnableRapidPowerShutDownRequest& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  EnableRapidPowerShutDownRequest& operator=(const EnableRapidPowerShutDownRequest& other_value);
+  boolean operator==(const EnableRapidPowerShutDownRequest& other_value) const;
+  inline boolean operator!=(const EnableRapidPowerShutDownRequest& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BITSTRING& resetType()
+    {return field_resetType;}
+  inline const BITSTRING& resetType() const
+    {return field_resetType;}
+  inline int size_of() const
+    {return 1;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class EnableRapidPowerShutDownRequest_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+EnableRapidPowerShutDownRequest_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const EnableRapidPowerShutDownRequest& other_value);
+void copy_template(const EnableRapidPowerShutDownRequest_template& other_value);
+
+public:
+EnableRapidPowerShutDownRequest_template();
+EnableRapidPowerShutDownRequest_template(template_sel other_value);
+EnableRapidPowerShutDownRequest_template(const EnableRapidPowerShutDownRequest& other_value);
+EnableRapidPowerShutDownRequest_template(const OPTIONAL<EnableRapidPowerShutDownRequest>& other_value);
+EnableRapidPowerShutDownRequest_template(const EnableRapidPowerShutDownRequest_template& other_value);
+~EnableRapidPowerShutDownRequest_template();
+EnableRapidPowerShutDownRequest_template& operator=(template_sel other_value);
+EnableRapidPowerShutDownRequest_template& operator=(const EnableRapidPowerShutDownRequest& other_value);
+EnableRapidPowerShutDownRequest_template& operator=(const OPTIONAL<EnableRapidPowerShutDownRequest>& other_value);
+EnableRapidPowerShutDownRequest_template& operator=(const EnableRapidPowerShutDownRequest_template& other_value);
+boolean match(const EnableRapidPowerShutDownRequest& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+EnableRapidPowerShutDownRequest valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+EnableRapidPowerShutDownRequest_template& list_item(unsigned int list_index) const;
+BITSTRING_template& resetType();
+const BITSTRING_template& resetType() const;
+int size_of() const;
+void log() const;
+void log_match(const EnableRapidPowerShutDownRequest& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class DisableRapidPowerShutDownRequest : public Base_Type {
+  BITSTRING field_resetType;
+public:
+  DisableRapidPowerShutDownRequest();
+  DisableRapidPowerShutDownRequest(const BITSTRING& par_resetType);
+  DisableRapidPowerShutDownRequest(const DisableRapidPowerShutDownRequest& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  DisableRapidPowerShutDownRequest& operator=(const DisableRapidPowerShutDownRequest& other_value);
+  boolean operator==(const DisableRapidPowerShutDownRequest& other_value) const;
+  inline boolean operator!=(const DisableRapidPowerShutDownRequest& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BITSTRING& resetType()
+    {return field_resetType;}
+  inline const BITSTRING& resetType() const
+    {return field_resetType;}
+  inline int size_of() const
+    {return 1;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class DisableRapidPowerShutDownRequest_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+DisableRapidPowerShutDownRequest_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const DisableRapidPowerShutDownRequest& other_value);
+void copy_template(const DisableRapidPowerShutDownRequest_template& other_value);
+
+public:
+DisableRapidPowerShutDownRequest_template();
+DisableRapidPowerShutDownRequest_template(template_sel other_value);
+DisableRapidPowerShutDownRequest_template(const DisableRapidPowerShutDownRequest& other_value);
+DisableRapidPowerShutDownRequest_template(const OPTIONAL<DisableRapidPowerShutDownRequest>& other_value);
+DisableRapidPowerShutDownRequest_template(const DisableRapidPowerShutDownRequest_template& other_value);
+~DisableRapidPowerShutDownRequest_template();
+DisableRapidPowerShutDownRequest_template& operator=(template_sel other_value);
+DisableRapidPowerShutDownRequest_template& operator=(const DisableRapidPowerShutDownRequest& other_value);
+DisableRapidPowerShutDownRequest_template& operator=(const OPTIONAL<DisableRapidPowerShutDownRequest>& other_value);
+DisableRapidPowerShutDownRequest_template& operator=(const DisableRapidPowerShutDownRequest_template& other_value);
+boolean match(const DisableRapidPowerShutDownRequest& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+DisableRapidPowerShutDownRequest valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+DisableRapidPowerShutDownRequest_template& list_item(unsigned int list_index) const;
+BITSTRING_template& resetType();
+const BITSTRING_template& resetType() const;
+int size_of() const;
+void log() const;
+void log_match(const DisableRapidPowerShutDownRequest& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ECUResetRequestType : public Base_Type {
+public:
+enum union_selection_type { UNBOUND_VALUE = 0, ALT_hardReset = 1, ALT_keyOffOnReset = 2, ALT_softReset = 3, ALT_enableRapidPowerShutDown = 4, ALT_disableRapidPowerShutDown = 5 };
+private:
+union_selection_type union_selection;
+union {
+HardResetRequest *field_hardReset;
+KeyOffOnResetRequest *field_keyOffOnReset;
+SoftResetRequest *field_softReset;
+EnableRapidPowerShutDownRequest *field_enableRapidPowerShutDown;
+DisableRapidPowerShutDownRequest *field_disableRapidPowerShutDown;
+};
+void copy_value(const ECUResetRequestType& other_value);
+
+public:
+ECUResetRequestType();
+ECUResetRequestType(const ECUResetRequestType& other_value);
+~ECUResetRequestType();
+ECUResetRequestType& operator=(const ECUResetRequestType& other_value);
+boolean operator==(const ECUResetRequestType& other_value) const;
+inline boolean operator!=(const ECUResetRequestType& other_value) const { return !(*this == other_value); }
+HardResetRequest& hardReset();
+const HardResetRequest& hardReset() const;
+KeyOffOnResetRequest& keyOffOnReset();
+const KeyOffOnResetRequest& keyOffOnReset() const;
+SoftResetRequest& softReset();
+const SoftResetRequest& softReset() const;
+EnableRapidPowerShutDownRequest& enableRapidPowerShutDown();
+const EnableRapidPowerShutDownRequest& enableRapidPowerShutDown() const;
+DisableRapidPowerShutDownRequest& disableRapidPowerShutDown();
+const DisableRapidPowerShutDownRequest& disableRapidPowerShutDown() const;
+inline union_selection_type get_selection() const { return union_selection; }
+boolean ischosen(union_selection_type checked_selection) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ECUResetRequestType_template : public Base_Template {
+union {
+struct {
+ECUResetRequestType::union_selection_type union_selection;
+union {
+HardResetRequest_template *field_hardReset;
+KeyOffOnResetRequest_template *field_keyOffOnReset;
+SoftResetRequest_template *field_softReset;
+EnableRapidPowerShutDownRequest_template *field_enableRapidPowerShutDown;
+DisableRapidPowerShutDownRequest_template *field_disableRapidPowerShutDown;
+};
+} single_value;
+struct {
+unsigned int n_values;
+ECUResetRequestType_template *list_value;
+} value_list;
+};
+void copy_value(const ECUResetRequestType& other_value);
+
+void copy_template(const ECUResetRequestType_template& other_value);
+
+public:
+ECUResetRequestType_template();
+ECUResetRequestType_template(template_sel other_value);
+ECUResetRequestType_template(const ECUResetRequestType& other_value);
+ECUResetRequestType_template(const OPTIONAL<ECUResetRequestType>& other_value);
+ECUResetRequestType_template(const ECUResetRequestType_template& other_value);
+~ECUResetRequestType_template();
+void clean_up();
+ECUResetRequestType_template& operator=(template_sel other_value);
+ECUResetRequestType_template& operator=(const ECUResetRequestType& other_value);
+ECUResetRequestType_template& operator=(const OPTIONAL<ECUResetRequestType>& other_value);
+ECUResetRequestType_template& operator=(const ECUResetRequestType_template& other_value);
+boolean match(const ECUResetRequestType& other_value, boolean legacy = FALSE) const;
+boolean is_value() const;ECUResetRequestType valueof() const;
+ECUResetRequestType_template& list_item(unsigned int list_index) const;
+void set_type(template_sel template_type, unsigned int list_length);
+HardResetRequest_template& hardReset();
+const HardResetRequest_template& hardReset() const;
+KeyOffOnResetRequest_template& keyOffOnReset();
+const KeyOffOnResetRequest_template& keyOffOnReset() const;
+SoftResetRequest_template& softReset();
+const SoftResetRequest_template& softReset() const;
+EnableRapidPowerShutDownRequest_template& enableRapidPowerShutDown();
+const EnableRapidPowerShutDownRequest_template& enableRapidPowerShutDown() const;
+DisableRapidPowerShutDownRequest_template& disableRapidPowerShutDown();
+const DisableRapidPowerShutDownRequest_template& disableRapidPowerShutDown() const;
+boolean ischosen(ECUResetRequestType::union_selection_type checked_selection) const;
+void log() const;
+void log_match(const ECUResetRequestType& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class HardResetResponse : public Base_Type {
+  BITSTRING field_resetType;
+public:
+  HardResetResponse();
+  HardResetResponse(const BITSTRING& par_resetType);
+  HardResetResponse(const HardResetResponse& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  HardResetResponse& operator=(const HardResetResponse& other_value);
+  boolean operator==(const HardResetResponse& other_value) const;
+  inline boolean operator!=(const HardResetResponse& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BITSTRING& resetType()
+    {return field_resetType;}
+  inline const BITSTRING& resetType() const
+    {return field_resetType;}
+  inline int size_of() const
+    {return 1;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class HardResetResponse_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+HardResetResponse_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const HardResetResponse& other_value);
+void copy_template(const HardResetResponse_template& other_value);
+
+public:
+HardResetResponse_template();
+HardResetResponse_template(template_sel other_value);
+HardResetResponse_template(const HardResetResponse& other_value);
+HardResetResponse_template(const OPTIONAL<HardResetResponse>& other_value);
+HardResetResponse_template(const HardResetResponse_template& other_value);
+~HardResetResponse_template();
+HardResetResponse_template& operator=(template_sel other_value);
+HardResetResponse_template& operator=(const HardResetResponse& other_value);
+HardResetResponse_template& operator=(const OPTIONAL<HardResetResponse>& other_value);
+HardResetResponse_template& operator=(const HardResetResponse_template& other_value);
+boolean match(const HardResetResponse& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+HardResetResponse valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+HardResetResponse_template& list_item(unsigned int list_index) const;
+BITSTRING_template& resetType();
+const BITSTRING_template& resetType() const;
+int size_of() const;
+void log() const;
+void log_match(const HardResetResponse& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class KeyOffOnResetResponse : public Base_Type {
+  BITSTRING field_resetType;
+public:
+  KeyOffOnResetResponse();
+  KeyOffOnResetResponse(const BITSTRING& par_resetType);
+  KeyOffOnResetResponse(const KeyOffOnResetResponse& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  KeyOffOnResetResponse& operator=(const KeyOffOnResetResponse& other_value);
+  boolean operator==(const KeyOffOnResetResponse& other_value) const;
+  inline boolean operator!=(const KeyOffOnResetResponse& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BITSTRING& resetType()
+    {return field_resetType;}
+  inline const BITSTRING& resetType() const
+    {return field_resetType;}
+  inline int size_of() const
+    {return 1;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class KeyOffOnResetResponse_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+KeyOffOnResetResponse_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const KeyOffOnResetResponse& other_value);
+void copy_template(const KeyOffOnResetResponse_template& other_value);
+
+public:
+KeyOffOnResetResponse_template();
+KeyOffOnResetResponse_template(template_sel other_value);
+KeyOffOnResetResponse_template(const KeyOffOnResetResponse& other_value);
+KeyOffOnResetResponse_template(const OPTIONAL<KeyOffOnResetResponse>& other_value);
+KeyOffOnResetResponse_template(const KeyOffOnResetResponse_template& other_value);
+~KeyOffOnResetResponse_template();
+KeyOffOnResetResponse_template& operator=(template_sel other_value);
+KeyOffOnResetResponse_template& operator=(const KeyOffOnResetResponse& other_value);
+KeyOffOnResetResponse_template& operator=(const OPTIONAL<KeyOffOnResetResponse>& other_value);
+KeyOffOnResetResponse_template& operator=(const KeyOffOnResetResponse_template& other_value);
+boolean match(const KeyOffOnResetResponse& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+KeyOffOnResetResponse valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+KeyOffOnResetResponse_template& list_item(unsigned int list_index) const;
+BITSTRING_template& resetType();
+const BITSTRING_template& resetType() const;
+int size_of() const;
+void log() const;
+void log_match(const KeyOffOnResetResponse& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SoftResetResponse : public Base_Type {
+  BITSTRING field_resetType;
+public:
+  SoftResetResponse();
+  SoftResetResponse(const BITSTRING& par_resetType);
+  SoftResetResponse(const SoftResetResponse& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SoftResetResponse& operator=(const SoftResetResponse& other_value);
+  boolean operator==(const SoftResetResponse& other_value) const;
+  inline boolean operator!=(const SoftResetResponse& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BITSTRING& resetType()
+    {return field_resetType;}
+  inline const BITSTRING& resetType() const
+    {return field_resetType;}
+  inline int size_of() const
+    {return 1;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class SoftResetResponse_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SoftResetResponse_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SoftResetResponse& other_value);
+void copy_template(const SoftResetResponse_template& other_value);
+
+public:
+SoftResetResponse_template();
+SoftResetResponse_template(template_sel other_value);
+SoftResetResponse_template(const SoftResetResponse& other_value);
+SoftResetResponse_template(const OPTIONAL<SoftResetResponse>& other_value);
+SoftResetResponse_template(const SoftResetResponse_template& other_value);
+~SoftResetResponse_template();
+SoftResetResponse_template& operator=(template_sel other_value);
+SoftResetResponse_template& operator=(const SoftResetResponse& other_value);
+SoftResetResponse_template& operator=(const OPTIONAL<SoftResetResponse>& other_value);
+SoftResetResponse_template& operator=(const SoftResetResponse_template& other_value);
+boolean match(const SoftResetResponse& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SoftResetResponse valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SoftResetResponse_template& list_item(unsigned int list_index) const;
+BITSTRING_template& resetType();
+const BITSTRING_template& resetType() const;
+int size_of() const;
+void log() const;
+void log_match(const SoftResetResponse& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class EnableRapidPowerShutDownResponse : public Base_Type {
+  BITSTRING field_resetType;
+  OCTETSTRING field_powerDownTime;
+public:
+  EnableRapidPowerShutDownResponse();
+  EnableRapidPowerShutDownResponse(const BITSTRING& par_resetType,
+    const OCTETSTRING& par_powerDownTime);
+  EnableRapidPowerShutDownResponse(const EnableRapidPowerShutDownResponse& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  EnableRapidPowerShutDownResponse& operator=(const EnableRapidPowerShutDownResponse& other_value);
+  boolean operator==(const EnableRapidPowerShutDownResponse& other_value) const;
+  inline boolean operator!=(const EnableRapidPowerShutDownResponse& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BITSTRING& resetType()
+    {return field_resetType;}
+  inline const BITSTRING& resetType() const
+    {return field_resetType;}
+  inline OCTETSTRING& powerDownTime()
+    {return field_powerDownTime;}
+  inline const OCTETSTRING& powerDownTime() const
+    {return field_powerDownTime;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class EnableRapidPowerShutDownResponse_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+EnableRapidPowerShutDownResponse_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const EnableRapidPowerShutDownResponse& other_value);
+void copy_template(const EnableRapidPowerShutDownResponse_template& other_value);
+
+public:
+EnableRapidPowerShutDownResponse_template();
+EnableRapidPowerShutDownResponse_template(template_sel other_value);
+EnableRapidPowerShutDownResponse_template(const EnableRapidPowerShutDownResponse& other_value);
+EnableRapidPowerShutDownResponse_template(const OPTIONAL<EnableRapidPowerShutDownResponse>& other_value);
+EnableRapidPowerShutDownResponse_template(const EnableRapidPowerShutDownResponse_template& other_value);
+~EnableRapidPowerShutDownResponse_template();
+EnableRapidPowerShutDownResponse_template& operator=(template_sel other_value);
+EnableRapidPowerShutDownResponse_template& operator=(const EnableRapidPowerShutDownResponse& other_value);
+EnableRapidPowerShutDownResponse_template& operator=(const OPTIONAL<EnableRapidPowerShutDownResponse>& other_value);
+EnableRapidPowerShutDownResponse_template& operator=(const EnableRapidPowerShutDownResponse_template& other_value);
+boolean match(const EnableRapidPowerShutDownResponse& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+EnableRapidPowerShutDownResponse valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+EnableRapidPowerShutDownResponse_template& list_item(unsigned int list_index) const;
+BITSTRING_template& resetType();
+const BITSTRING_template& resetType() const;
+OCTETSTRING_template& powerDownTime();
+const OCTETSTRING_template& powerDownTime() const;
+int size_of() const;
+void log() const;
+void log_match(const EnableRapidPowerShutDownResponse& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class DisableRapidPowerShutDownResponse : public Base_Type {
+  BITSTRING field_resetType;
+public:
+  DisableRapidPowerShutDownResponse();
+  DisableRapidPowerShutDownResponse(const BITSTRING& par_resetType);
+  DisableRapidPowerShutDownResponse(const DisableRapidPowerShutDownResponse& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  DisableRapidPowerShutDownResponse& operator=(const DisableRapidPowerShutDownResponse& other_value);
+  boolean operator==(const DisableRapidPowerShutDownResponse& other_value) const;
+  inline boolean operator!=(const DisableRapidPowerShutDownResponse& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BITSTRING& resetType()
+    {return field_resetType;}
+  inline const BITSTRING& resetType() const
+    {return field_resetType;}
+  inline int size_of() const
+    {return 1;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class DisableRapidPowerShutDownResponse_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+DisableRapidPowerShutDownResponse_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const DisableRapidPowerShutDownResponse& other_value);
+void copy_template(const DisableRapidPowerShutDownResponse_template& other_value);
+
+public:
+DisableRapidPowerShutDownResponse_template();
+DisableRapidPowerShutDownResponse_template(template_sel other_value);
+DisableRapidPowerShutDownResponse_template(const DisableRapidPowerShutDownResponse& other_value);
+DisableRapidPowerShutDownResponse_template(const OPTIONAL<DisableRapidPowerShutDownResponse>& other_value);
+DisableRapidPowerShutDownResponse_template(const DisableRapidPowerShutDownResponse_template& other_value);
+~DisableRapidPowerShutDownResponse_template();
+DisableRapidPowerShutDownResponse_template& operator=(template_sel other_value);
+DisableRapidPowerShutDownResponse_template& operator=(const DisableRapidPowerShutDownResponse& other_value);
+DisableRapidPowerShutDownResponse_template& operator=(const OPTIONAL<DisableRapidPowerShutDownResponse>& other_value);
+DisableRapidPowerShutDownResponse_template& operator=(const DisableRapidPowerShutDownResponse_template& other_value);
+boolean match(const DisableRapidPowerShutDownResponse& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+DisableRapidPowerShutDownResponse valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+DisableRapidPowerShutDownResponse_template& list_item(unsigned int list_index) const;
+BITSTRING_template& resetType();
+const BITSTRING_template& resetType() const;
+int size_of() const;
+void log() const;
+void log_match(const DisableRapidPowerShutDownResponse& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ECUResetResponseType : public Base_Type {
+public:
+enum union_selection_type { UNBOUND_VALUE = 0, ALT_hardReset = 1, ALT_keyOffOnReset = 2, ALT_softReset = 3, ALT_enableRapidPowerShutDown = 4, ALT_disableRapidPowerShutDown = 5 };
+private:
+union_selection_type union_selection;
+union {
+HardResetResponse *field_hardReset;
+KeyOffOnResetResponse *field_keyOffOnReset;
+SoftResetResponse *field_softReset;
+EnableRapidPowerShutDownResponse *field_enableRapidPowerShutDown;
+DisableRapidPowerShutDownResponse *field_disableRapidPowerShutDown;
+};
+void copy_value(const ECUResetResponseType& other_value);
+
+public:
+ECUResetResponseType();
+ECUResetResponseType(const ECUResetResponseType& other_value);
+~ECUResetResponseType();
+ECUResetResponseType& operator=(const ECUResetResponseType& other_value);
+boolean operator==(const ECUResetResponseType& other_value) const;
+inline boolean operator!=(const ECUResetResponseType& other_value) const { return !(*this == other_value); }
+HardResetResponse& hardReset();
+const HardResetResponse& hardReset() const;
+KeyOffOnResetResponse& keyOffOnReset();
+const KeyOffOnResetResponse& keyOffOnReset() const;
+SoftResetResponse& softReset();
+const SoftResetResponse& softReset() const;
+EnableRapidPowerShutDownResponse& enableRapidPowerShutDown();
+const EnableRapidPowerShutDownResponse& enableRapidPowerShutDown() const;
+DisableRapidPowerShutDownResponse& disableRapidPowerShutDown();
+const DisableRapidPowerShutDownResponse& disableRapidPowerShutDown() const;
+inline union_selection_type get_selection() const { return union_selection; }
+boolean ischosen(union_selection_type checked_selection) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ECUResetResponseType_template : public Base_Template {
+union {
+struct {
+ECUResetResponseType::union_selection_type union_selection;
+union {
+HardResetResponse_template *field_hardReset;
+KeyOffOnResetResponse_template *field_keyOffOnReset;
+SoftResetResponse_template *field_softReset;
+EnableRapidPowerShutDownResponse_template *field_enableRapidPowerShutDown;
+DisableRapidPowerShutDownResponse_template *field_disableRapidPowerShutDown;
+};
+} single_value;
+struct {
+unsigned int n_values;
+ECUResetResponseType_template *list_value;
+} value_list;
+};
+void copy_value(const ECUResetResponseType& other_value);
+
+void copy_template(const ECUResetResponseType_template& other_value);
+
+public:
+ECUResetResponseType_template();
+ECUResetResponseType_template(template_sel other_value);
+ECUResetResponseType_template(const ECUResetResponseType& other_value);
+ECUResetResponseType_template(const OPTIONAL<ECUResetResponseType>& other_value);
+ECUResetResponseType_template(const ECUResetResponseType_template& other_value);
+~ECUResetResponseType_template();
+void clean_up();
+ECUResetResponseType_template& operator=(template_sel other_value);
+ECUResetResponseType_template& operator=(const ECUResetResponseType& other_value);
+ECUResetResponseType_template& operator=(const OPTIONAL<ECUResetResponseType>& other_value);
+ECUResetResponseType_template& operator=(const ECUResetResponseType_template& other_value);
+boolean match(const ECUResetResponseType& other_value, boolean legacy = FALSE) const;
+boolean is_value() const;ECUResetResponseType valueof() const;
+ECUResetResponseType_template& list_item(unsigned int list_index) const;
+void set_type(template_sel template_type, unsigned int list_length);
+HardResetResponse_template& hardReset();
+const HardResetResponse_template& hardReset() const;
+KeyOffOnResetResponse_template& keyOffOnReset();
+const KeyOffOnResetResponse_template& keyOffOnReset() const;
+SoftResetResponse_template& softReset();
+const SoftResetResponse_template& softReset() const;
+EnableRapidPowerShutDownResponse_template& enableRapidPowerShutDown();
+const EnableRapidPowerShutDownResponse_template& enableRapidPowerShutDown() const;
+DisableRapidPowerShutDownResponse_template& disableRapidPowerShutDown();
+const DisableRapidPowerShutDownResponse_template& disableRapidPowerShutDown() const;
+boolean ischosen(ECUResetResponseType::union_selection_type checked_selection) const;
+void log() const;
+void log_match(const ECUResetResponseType& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class ECUResetRequestSID : public Base_Type {
+  OCTETSTRING field_sid;
+  SuppressPosRspMsgIndicationBitType field_suppressPosRspMsgIndicationBit;
+  ECUResetRequestType field_resetType;
+public:
+  ECUResetRequestSID();
+  ECUResetRequestSID(const OCTETSTRING& par_sid,
+    const SuppressPosRspMsgIndicationBitType& par_suppressPosRspMsgIndicationBit,
+    const ECUResetRequestType& par_resetType);
+  ECUResetRequestSID(const ECUResetRequestSID& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ECUResetRequestSID& operator=(const ECUResetRequestSID& other_value);
+  boolean operator==(const ECUResetRequestSID& other_value) const;
+  inline boolean operator!=(const ECUResetRequestSID& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& sid()
+    {return field_sid;}
+  inline const OCTETSTRING& sid() const
+    {return field_sid;}
+  inline SuppressPosRspMsgIndicationBitType& suppressPosRspMsgIndicationBit()
+    {return field_suppressPosRspMsgIndicationBit;}
+  inline const SuppressPosRspMsgIndicationBitType& suppressPosRspMsgIndicationBit() const
+    {return field_suppressPosRspMsgIndicationBit;}
+  inline ECUResetRequestType& resetType()
+    {return field_resetType;}
+  inline const ECUResetRequestType& resetType() const
+    {return field_resetType;}
+  inline int size_of() const
+    {return 3;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ECUResetRequestSID_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ECUResetRequestSID_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ECUResetRequestSID& other_value);
+void copy_template(const ECUResetRequestSID_template& other_value);
+
+public:
+ECUResetRequestSID_template();
+ECUResetRequestSID_template(template_sel other_value);
+ECUResetRequestSID_template(const ECUResetRequestSID& other_value);
+ECUResetRequestSID_template(const OPTIONAL<ECUResetRequestSID>& other_value);
+ECUResetRequestSID_template(const ECUResetRequestSID_template& other_value);
+~ECUResetRequestSID_template();
+ECUResetRequestSID_template& operator=(template_sel other_value);
+ECUResetRequestSID_template& operator=(const ECUResetRequestSID& other_value);
+ECUResetRequestSID_template& operator=(const OPTIONAL<ECUResetRequestSID>& other_value);
+ECUResetRequestSID_template& operator=(const ECUResetRequestSID_template& other_value);
+boolean match(const ECUResetRequestSID& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ECUResetRequestSID valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ECUResetRequestSID_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& sid();
+const OCTETSTRING_template& sid() const;
+SuppressPosRspMsgIndicationBitType_template& suppressPosRspMsgIndicationBit();
+const SuppressPosRspMsgIndicationBitType_template& suppressPosRspMsgIndicationBit() const;
+ECUResetRequestType_template& resetType();
+const ECUResetRequestType_template& resetType() const;
+int size_of() const;
+void log() const;
+void log_match(const ECUResetRequestSID& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ECUResetResponseSID : public Base_Type {
+  OCTETSTRING field_sid;
+  BITSTRING field_reserved;
+  ECUResetResponseType field_resetType;
+public:
+  ECUResetResponseSID();
+  ECUResetResponseSID(const OCTETSTRING& par_sid,
+    const BITSTRING& par_reserved,
+    const ECUResetResponseType& par_resetType);
+  ECUResetResponseSID(const ECUResetResponseSID& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ECUResetResponseSID& operator=(const ECUResetResponseSID& other_value);
+  boolean operator==(const ECUResetResponseSID& other_value) const;
+  inline boolean operator!=(const ECUResetResponseSID& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& sid()
+    {return field_sid;}
+  inline const OCTETSTRING& sid() const
+    {return field_sid;}
+  inline BITSTRING& reserved()
+    {return field_reserved;}
+  inline const BITSTRING& reserved() const
+    {return field_reserved;}
+  inline ECUResetResponseType& resetType()
+    {return field_resetType;}
+  inline const ECUResetResponseType& resetType() const
+    {return field_resetType;}
+  inline int size_of() const
+    {return 3;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ECUResetResponseSID_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ECUResetResponseSID_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ECUResetResponseSID& other_value);
+void copy_template(const ECUResetResponseSID_template& other_value);
+
+public:
+ECUResetResponseSID_template();
+ECUResetResponseSID_template(template_sel other_value);
+ECUResetResponseSID_template(const ECUResetResponseSID& other_value);
+ECUResetResponseSID_template(const OPTIONAL<ECUResetResponseSID>& other_value);
+ECUResetResponseSID_template(const ECUResetResponseSID_template& other_value);
+~ECUResetResponseSID_template();
+ECUResetResponseSID_template& operator=(template_sel other_value);
+ECUResetResponseSID_template& operator=(const ECUResetResponseSID& other_value);
+ECUResetResponseSID_template& operator=(const OPTIONAL<ECUResetResponseSID>& other_value);
+ECUResetResponseSID_template& operator=(const ECUResetResponseSID_template& other_value);
+boolean match(const ECUResetResponseSID& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ECUResetResponseSID valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ECUResetResponseSID_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& sid();
+const OCTETSTRING_template& sid() const;
+BITSTRING_template& reserved();
+const BITSTRING_template& reserved() const;
+ECUResetResponseType_template& resetType();
+const ECUResetResponseType_template& resetType() const;
+int size_of() const;
+void log() const;
+void log_match(const ECUResetResponseSID& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class RequestSeedRequest0 : public Base_Type {
+  BITSTRING field_securityAccessType;
+  OCTETSTRING field_securityAccessDataRecord;
+public:
+  RequestSeedRequest0();
+  RequestSeedRequest0(const BITSTRING& par_securityAccessType,
+    const OCTETSTRING& par_securityAccessDataRecord);
+  RequestSeedRequest0(const RequestSeedRequest0& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  RequestSeedRequest0& operator=(const RequestSeedRequest0& other_value);
+  boolean operator==(const RequestSeedRequest0& other_value) const;
+  inline boolean operator!=(const RequestSeedRequest0& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BITSTRING& securityAccessType()
+    {return field_securityAccessType;}
+  inline const BITSTRING& securityAccessType() const
+    {return field_securityAccessType;}
+  inline OCTETSTRING& securityAccessDataRecord()
+    {return field_securityAccessDataRecord;}
+  inline const OCTETSTRING& securityAccessDataRecord() const
+    {return field_securityAccessDataRecord;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class RequestSeedRequest0_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+RequestSeedRequest0_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const RequestSeedRequest0& other_value);
+void copy_template(const RequestSeedRequest0_template& other_value);
+
+public:
+RequestSeedRequest0_template();
+RequestSeedRequest0_template(template_sel other_value);
+RequestSeedRequest0_template(const RequestSeedRequest0& other_value);
+RequestSeedRequest0_template(const OPTIONAL<RequestSeedRequest0>& other_value);
+RequestSeedRequest0_template(const RequestSeedRequest0_template& other_value);
+~RequestSeedRequest0_template();
+RequestSeedRequest0_template& operator=(template_sel other_value);
+RequestSeedRequest0_template& operator=(const RequestSeedRequest0& other_value);
+RequestSeedRequest0_template& operator=(const OPTIONAL<RequestSeedRequest0>& other_value);
+RequestSeedRequest0_template& operator=(const RequestSeedRequest0_template& other_value);
+boolean match(const RequestSeedRequest0& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+RequestSeedRequest0 valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+RequestSeedRequest0_template& list_item(unsigned int list_index) const;
+BITSTRING_template& securityAccessType();
+const BITSTRING_template& securityAccessType() const;
+OCTETSTRING_template& securityAccessDataRecord();
+const OCTETSTRING_template& securityAccessDataRecord() const;
+int size_of() const;
+void log() const;
+void log_match(const RequestSeedRequest0& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SendKeyRequest0 : public Base_Type {
+  BITSTRING field_securityAccessType;
+  OCTETSTRING field_securityKey;
+public:
+  SendKeyRequest0();
+  SendKeyRequest0(const BITSTRING& par_securityAccessType,
+    const OCTETSTRING& par_securityKey);
+  SendKeyRequest0(const SendKeyRequest0& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SendKeyRequest0& operator=(const SendKeyRequest0& other_value);
+  boolean operator==(const SendKeyRequest0& other_value) const;
+  inline boolean operator!=(const SendKeyRequest0& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BITSTRING& securityAccessType()
+    {return field_securityAccessType;}
+  inline const BITSTRING& securityAccessType() const
+    {return field_securityAccessType;}
+  inline OCTETSTRING& securityKey()
+    {return field_securityKey;}
+  inline const OCTETSTRING& securityKey() const
+    {return field_securityKey;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class SendKeyRequest0_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SendKeyRequest0_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SendKeyRequest0& other_value);
+void copy_template(const SendKeyRequest0_template& other_value);
+
+public:
+SendKeyRequest0_template();
+SendKeyRequest0_template(template_sel other_value);
+SendKeyRequest0_template(const SendKeyRequest0& other_value);
+SendKeyRequest0_template(const OPTIONAL<SendKeyRequest0>& other_value);
+SendKeyRequest0_template(const SendKeyRequest0_template& other_value);
+~SendKeyRequest0_template();
+SendKeyRequest0_template& operator=(template_sel other_value);
+SendKeyRequest0_template& operator=(const SendKeyRequest0& other_value);
+SendKeyRequest0_template& operator=(const OPTIONAL<SendKeyRequest0>& other_value);
+SendKeyRequest0_template& operator=(const SendKeyRequest0_template& other_value);
+boolean match(const SendKeyRequest0& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SendKeyRequest0 valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SendKeyRequest0_template& list_item(unsigned int list_index) const;
+BITSTRING_template& securityAccessType();
+const BITSTRING_template& securityAccessType() const;
+OCTETSTRING_template& securityKey();
+const OCTETSTRING_template& securityKey() const;
+int size_of() const;
+void log() const;
+void log_match(const SendKeyRequest0& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class RequestSeedRequest1 : public Base_Type {
+  BITSTRING field_securityAccessType;
+  OCTETSTRING field_securityAccessDataRecord;
+public:
+  RequestSeedRequest1();
+  RequestSeedRequest1(const BITSTRING& par_securityAccessType,
+    const OCTETSTRING& par_securityAccessDataRecord);
+  RequestSeedRequest1(const RequestSeedRequest1& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  RequestSeedRequest1& operator=(const RequestSeedRequest1& other_value);
+  boolean operator==(const RequestSeedRequest1& other_value) const;
+  inline boolean operator!=(const RequestSeedRequest1& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BITSTRING& securityAccessType()
+    {return field_securityAccessType;}
+  inline const BITSTRING& securityAccessType() const
+    {return field_securityAccessType;}
+  inline OCTETSTRING& securityAccessDataRecord()
+    {return field_securityAccessDataRecord;}
+  inline const OCTETSTRING& securityAccessDataRecord() const
+    {return field_securityAccessDataRecord;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class RequestSeedRequest1_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+RequestSeedRequest1_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const RequestSeedRequest1& other_value);
+void copy_template(const RequestSeedRequest1_template& other_value);
+
+public:
+RequestSeedRequest1_template();
+RequestSeedRequest1_template(template_sel other_value);
+RequestSeedRequest1_template(const RequestSeedRequest1& other_value);
+RequestSeedRequest1_template(const OPTIONAL<RequestSeedRequest1>& other_value);
+RequestSeedRequest1_template(const RequestSeedRequest1_template& other_value);
+~RequestSeedRequest1_template();
+RequestSeedRequest1_template& operator=(template_sel other_value);
+RequestSeedRequest1_template& operator=(const RequestSeedRequest1& other_value);
+RequestSeedRequest1_template& operator=(const OPTIONAL<RequestSeedRequest1>& other_value);
+RequestSeedRequest1_template& operator=(const RequestSeedRequest1_template& other_value);
+boolean match(const RequestSeedRequest1& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+RequestSeedRequest1 valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+RequestSeedRequest1_template& list_item(unsigned int list_index) const;
+BITSTRING_template& securityAccessType();
+const BITSTRING_template& securityAccessType() const;
+OCTETSTRING_template& securityAccessDataRecord();
+const OCTETSTRING_template& securityAccessDataRecord() const;
+int size_of() const;
+void log() const;
+void log_match(const RequestSeedRequest1& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SendKeyRequest1 : public Base_Type {
+  BITSTRING field_securityAccessType;
+  OCTETSTRING field_securityKey;
+public:
+  SendKeyRequest1();
+  SendKeyRequest1(const BITSTRING& par_securityAccessType,
+    const OCTETSTRING& par_securityKey);
+  SendKeyRequest1(const SendKeyRequest1& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SendKeyRequest1& operator=(const SendKeyRequest1& other_value);
+  boolean operator==(const SendKeyRequest1& other_value) const;
+  inline boolean operator!=(const SendKeyRequest1& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BITSTRING& securityAccessType()
+    {return field_securityAccessType;}
+  inline const BITSTRING& securityAccessType() const
+    {return field_securityAccessType;}
+  inline OCTETSTRING& securityKey()
+    {return field_securityKey;}
+  inline const OCTETSTRING& securityKey() const
+    {return field_securityKey;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class SendKeyRequest1_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SendKeyRequest1_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SendKeyRequest1& other_value);
+void copy_template(const SendKeyRequest1_template& other_value);
+
+public:
+SendKeyRequest1_template();
+SendKeyRequest1_template(template_sel other_value);
+SendKeyRequest1_template(const SendKeyRequest1& other_value);
+SendKeyRequest1_template(const OPTIONAL<SendKeyRequest1>& other_value);
+SendKeyRequest1_template(const SendKeyRequest1_template& other_value);
+~SendKeyRequest1_template();
+SendKeyRequest1_template& operator=(template_sel other_value);
+SendKeyRequest1_template& operator=(const SendKeyRequest1& other_value);
+SendKeyRequest1_template& operator=(const OPTIONAL<SendKeyRequest1>& other_value);
+SendKeyRequest1_template& operator=(const SendKeyRequest1_template& other_value);
+boolean match(const SendKeyRequest1& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SendKeyRequest1 valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SendKeyRequest1_template& list_item(unsigned int list_index) const;
+BITSTRING_template& securityAccessType();
+const BITSTRING_template& securityAccessType() const;
+OCTETSTRING_template& securityKey();
+const OCTETSTRING_template& securityKey() const;
+int size_of() const;
+void log() const;
+void log_match(const SendKeyRequest1& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SecurityAccessRequestType : public Base_Type {
+public:
+enum union_selection_type { UNBOUND_VALUE = 0, ALT_requestSeed0 = 1, ALT_sendKey0 = 2, ALT_requestSeed1 = 3, ALT_sendKey1 = 4 };
+private:
+union_selection_type union_selection;
+union {
+RequestSeedRequest0 *field_requestSeed0;
+SendKeyRequest0 *field_sendKey0;
+RequestSeedRequest1 *field_requestSeed1;
+SendKeyRequest1 *field_sendKey1;
+};
+void copy_value(const SecurityAccessRequestType& other_value);
+
+public:
+SecurityAccessRequestType();
+SecurityAccessRequestType(const SecurityAccessRequestType& other_value);
+~SecurityAccessRequestType();
+SecurityAccessRequestType& operator=(const SecurityAccessRequestType& other_value);
+boolean operator==(const SecurityAccessRequestType& other_value) const;
+inline boolean operator!=(const SecurityAccessRequestType& other_value) const { return !(*this == other_value); }
+RequestSeedRequest0& requestSeed0();
+const RequestSeedRequest0& requestSeed0() const;
+SendKeyRequest0& sendKey0();
+const SendKeyRequest0& sendKey0() const;
+RequestSeedRequest1& requestSeed1();
+const RequestSeedRequest1& requestSeed1() const;
+SendKeyRequest1& sendKey1();
+const SendKeyRequest1& sendKey1() const;
+inline union_selection_type get_selection() const { return union_selection; }
+boolean ischosen(union_selection_type checked_selection) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class SecurityAccessRequestType_template : public Base_Template {
+union {
+struct {
+SecurityAccessRequestType::union_selection_type union_selection;
+union {
+RequestSeedRequest0_template *field_requestSeed0;
+SendKeyRequest0_template *field_sendKey0;
+RequestSeedRequest1_template *field_requestSeed1;
+SendKeyRequest1_template *field_sendKey1;
+};
+} single_value;
+struct {
+unsigned int n_values;
+SecurityAccessRequestType_template *list_value;
+} value_list;
+};
+void copy_value(const SecurityAccessRequestType& other_value);
+
+void copy_template(const SecurityAccessRequestType_template& other_value);
+
+public:
+SecurityAccessRequestType_template();
+SecurityAccessRequestType_template(template_sel other_value);
+SecurityAccessRequestType_template(const SecurityAccessRequestType& other_value);
+SecurityAccessRequestType_template(const OPTIONAL<SecurityAccessRequestType>& other_value);
+SecurityAccessRequestType_template(const SecurityAccessRequestType_template& other_value);
+~SecurityAccessRequestType_template();
+void clean_up();
+SecurityAccessRequestType_template& operator=(template_sel other_value);
+SecurityAccessRequestType_template& operator=(const SecurityAccessRequestType& other_value);
+SecurityAccessRequestType_template& operator=(const OPTIONAL<SecurityAccessRequestType>& other_value);
+SecurityAccessRequestType_template& operator=(const SecurityAccessRequestType_template& other_value);
+boolean match(const SecurityAccessRequestType& other_value, boolean legacy = FALSE) const;
+boolean is_value() const;SecurityAccessRequestType valueof() const;
+SecurityAccessRequestType_template& list_item(unsigned int list_index) const;
+void set_type(template_sel template_type, unsigned int list_length);
+RequestSeedRequest0_template& requestSeed0();
+const RequestSeedRequest0_template& requestSeed0() const;
+SendKeyRequest0_template& sendKey0();
+const SendKeyRequest0_template& sendKey0() const;
+RequestSeedRequest1_template& requestSeed1();
+const RequestSeedRequest1_template& requestSeed1() const;
+SendKeyRequest1_template& sendKey1();
+const SendKeyRequest1_template& sendKey1() const;
+boolean ischosen(SecurityAccessRequestType::union_selection_type checked_selection) const;
+void log() const;
+void log_match(const SecurityAccessRequestType& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class SecurityAccessRequestSID : public Base_Type {
+  OCTETSTRING field_sid;
+  SuppressPosRspMsgIndicationBitType field_suppressPosRspMsgIndicationBit;
+  SecurityAccessRequestType field_securityAccessType;
+public:
+  SecurityAccessRequestSID();
+  SecurityAccessRequestSID(const OCTETSTRING& par_sid,
+    const SuppressPosRspMsgIndicationBitType& par_suppressPosRspMsgIndicationBit,
+    const SecurityAccessRequestType& par_securityAccessType);
+  SecurityAccessRequestSID(const SecurityAccessRequestSID& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SecurityAccessRequestSID& operator=(const SecurityAccessRequestSID& other_value);
+  boolean operator==(const SecurityAccessRequestSID& other_value) const;
+  inline boolean operator!=(const SecurityAccessRequestSID& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& sid()
+    {return field_sid;}
+  inline const OCTETSTRING& sid() const
+    {return field_sid;}
+  inline SuppressPosRspMsgIndicationBitType& suppressPosRspMsgIndicationBit()
+    {return field_suppressPosRspMsgIndicationBit;}
+  inline const SuppressPosRspMsgIndicationBitType& suppressPosRspMsgIndicationBit() const
+    {return field_suppressPosRspMsgIndicationBit;}
+  inline SecurityAccessRequestType& securityAccessType()
+    {return field_securityAccessType;}
+  inline const SecurityAccessRequestType& securityAccessType() const
+    {return field_securityAccessType;}
+  inline int size_of() const
+    {return 3;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class SecurityAccessRequestSID_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SecurityAccessRequestSID_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SecurityAccessRequestSID& other_value);
+void copy_template(const SecurityAccessRequestSID_template& other_value);
+
+public:
+SecurityAccessRequestSID_template();
+SecurityAccessRequestSID_template(template_sel other_value);
+SecurityAccessRequestSID_template(const SecurityAccessRequestSID& other_value);
+SecurityAccessRequestSID_template(const OPTIONAL<SecurityAccessRequestSID>& other_value);
+SecurityAccessRequestSID_template(const SecurityAccessRequestSID_template& other_value);
+~SecurityAccessRequestSID_template();
+SecurityAccessRequestSID_template& operator=(template_sel other_value);
+SecurityAccessRequestSID_template& operator=(const SecurityAccessRequestSID& other_value);
+SecurityAccessRequestSID_template& operator=(const OPTIONAL<SecurityAccessRequestSID>& other_value);
+SecurityAccessRequestSID_template& operator=(const SecurityAccessRequestSID_template& other_value);
+boolean match(const SecurityAccessRequestSID& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SecurityAccessRequestSID valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SecurityAccessRequestSID_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& sid();
+const OCTETSTRING_template& sid() const;
+SuppressPosRspMsgIndicationBitType_template& suppressPosRspMsgIndicationBit();
+const SuppressPosRspMsgIndicationBitType_template& suppressPosRspMsgIndicationBit() const;
+SecurityAccessRequestType_template& securityAccessType();
+const SecurityAccessRequestType_template& securityAccessType() const;
+int size_of() const;
+void log() const;
+void log_match(const SecurityAccessRequestSID& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class RequestSeedResponse0 : public Base_Type {
+  BITSTRING field_securityAccessType;
+  OCTETSTRING field_securitySeed;
+public:
+  RequestSeedResponse0();
+  RequestSeedResponse0(const BITSTRING& par_securityAccessType,
+    const OCTETSTRING& par_securitySeed);
+  RequestSeedResponse0(const RequestSeedResponse0& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  RequestSeedResponse0& operator=(const RequestSeedResponse0& other_value);
+  boolean operator==(const RequestSeedResponse0& other_value) const;
+  inline boolean operator!=(const RequestSeedResponse0& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BITSTRING& securityAccessType()
+    {return field_securityAccessType;}
+  inline const BITSTRING& securityAccessType() const
+    {return field_securityAccessType;}
+  inline OCTETSTRING& securitySeed()
+    {return field_securitySeed;}
+  inline const OCTETSTRING& securitySeed() const
+    {return field_securitySeed;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class RequestSeedResponse0_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+RequestSeedResponse0_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const RequestSeedResponse0& other_value);
+void copy_template(const RequestSeedResponse0_template& other_value);
+
+public:
+RequestSeedResponse0_template();
+RequestSeedResponse0_template(template_sel other_value);
+RequestSeedResponse0_template(const RequestSeedResponse0& other_value);
+RequestSeedResponse0_template(const OPTIONAL<RequestSeedResponse0>& other_value);
+RequestSeedResponse0_template(const RequestSeedResponse0_template& other_value);
+~RequestSeedResponse0_template();
+RequestSeedResponse0_template& operator=(template_sel other_value);
+RequestSeedResponse0_template& operator=(const RequestSeedResponse0& other_value);
+RequestSeedResponse0_template& operator=(const OPTIONAL<RequestSeedResponse0>& other_value);
+RequestSeedResponse0_template& operator=(const RequestSeedResponse0_template& other_value);
+boolean match(const RequestSeedResponse0& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+RequestSeedResponse0 valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+RequestSeedResponse0_template& list_item(unsigned int list_index) const;
+BITSTRING_template& securityAccessType();
+const BITSTRING_template& securityAccessType() const;
+OCTETSTRING_template& securitySeed();
+const OCTETSTRING_template& securitySeed() const;
+int size_of() const;
+void log() const;
+void log_match(const RequestSeedResponse0& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SendKeyResponse0 : public Base_Type {
+  BITSTRING field_securityAccessType;
+public:
+  SendKeyResponse0();
+  SendKeyResponse0(const BITSTRING& par_securityAccessType);
+  SendKeyResponse0(const SendKeyResponse0& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SendKeyResponse0& operator=(const SendKeyResponse0& other_value);
+  boolean operator==(const SendKeyResponse0& other_value) const;
+  inline boolean operator!=(const SendKeyResponse0& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BITSTRING& securityAccessType()
+    {return field_securityAccessType;}
+  inline const BITSTRING& securityAccessType() const
+    {return field_securityAccessType;}
+  inline int size_of() const
+    {return 1;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class SendKeyResponse0_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SendKeyResponse0_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SendKeyResponse0& other_value);
+void copy_template(const SendKeyResponse0_template& other_value);
+
+public:
+SendKeyResponse0_template();
+SendKeyResponse0_template(template_sel other_value);
+SendKeyResponse0_template(const SendKeyResponse0& other_value);
+SendKeyResponse0_template(const OPTIONAL<SendKeyResponse0>& other_value);
+SendKeyResponse0_template(const SendKeyResponse0_template& other_value);
+~SendKeyResponse0_template();
+SendKeyResponse0_template& operator=(template_sel other_value);
+SendKeyResponse0_template& operator=(const SendKeyResponse0& other_value);
+SendKeyResponse0_template& operator=(const OPTIONAL<SendKeyResponse0>& other_value);
+SendKeyResponse0_template& operator=(const SendKeyResponse0_template& other_value);
+boolean match(const SendKeyResponse0& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SendKeyResponse0 valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SendKeyResponse0_template& list_item(unsigned int list_index) const;
+BITSTRING_template& securityAccessType();
+const BITSTRING_template& securityAccessType() const;
+int size_of() const;
+void log() const;
+void log_match(const SendKeyResponse0& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class RequestSeedResponse1 : public Base_Type {
+  BITSTRING field_securityAccessType;
+  OCTETSTRING field_securitySeed;
+public:
+  RequestSeedResponse1();
+  RequestSeedResponse1(const BITSTRING& par_securityAccessType,
+    const OCTETSTRING& par_securitySeed);
+  RequestSeedResponse1(const RequestSeedResponse1& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  RequestSeedResponse1& operator=(const RequestSeedResponse1& other_value);
+  boolean operator==(const RequestSeedResponse1& other_value) const;
+  inline boolean operator!=(const RequestSeedResponse1& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BITSTRING& securityAccessType()
+    {return field_securityAccessType;}
+  inline const BITSTRING& securityAccessType() const
+    {return field_securityAccessType;}
+  inline OCTETSTRING& securitySeed()
+    {return field_securitySeed;}
+  inline const OCTETSTRING& securitySeed() const
+    {return field_securitySeed;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class RequestSeedResponse1_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+RequestSeedResponse1_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const RequestSeedResponse1& other_value);
+void copy_template(const RequestSeedResponse1_template& other_value);
+
+public:
+RequestSeedResponse1_template();
+RequestSeedResponse1_template(template_sel other_value);
+RequestSeedResponse1_template(const RequestSeedResponse1& other_value);
+RequestSeedResponse1_template(const OPTIONAL<RequestSeedResponse1>& other_value);
+RequestSeedResponse1_template(const RequestSeedResponse1_template& other_value);
+~RequestSeedResponse1_template();
+RequestSeedResponse1_template& operator=(template_sel other_value);
+RequestSeedResponse1_template& operator=(const RequestSeedResponse1& other_value);
+RequestSeedResponse1_template& operator=(const OPTIONAL<RequestSeedResponse1>& other_value);
+RequestSeedResponse1_template& operator=(const RequestSeedResponse1_template& other_value);
+boolean match(const RequestSeedResponse1& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+RequestSeedResponse1 valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+RequestSeedResponse1_template& list_item(unsigned int list_index) const;
+BITSTRING_template& securityAccessType();
+const BITSTRING_template& securityAccessType() const;
+OCTETSTRING_template& securitySeed();
+const OCTETSTRING_template& securitySeed() const;
+int size_of() const;
+void log() const;
+void log_match(const RequestSeedResponse1& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SendKeyResponse1 : public Base_Type {
+  BITSTRING field_securityAccessType;
+public:
+  SendKeyResponse1();
+  SendKeyResponse1(const BITSTRING& par_securityAccessType);
+  SendKeyResponse1(const SendKeyResponse1& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SendKeyResponse1& operator=(const SendKeyResponse1& other_value);
+  boolean operator==(const SendKeyResponse1& other_value) const;
+  inline boolean operator!=(const SendKeyResponse1& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline BITSTRING& securityAccessType()
+    {return field_securityAccessType;}
+  inline const BITSTRING& securityAccessType() const
+    {return field_securityAccessType;}
+  inline int size_of() const
+    {return 1;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class SendKeyResponse1_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SendKeyResponse1_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SendKeyResponse1& other_value);
+void copy_template(const SendKeyResponse1_template& other_value);
+
+public:
+SendKeyResponse1_template();
+SendKeyResponse1_template(template_sel other_value);
+SendKeyResponse1_template(const SendKeyResponse1& other_value);
+SendKeyResponse1_template(const OPTIONAL<SendKeyResponse1>& other_value);
+SendKeyResponse1_template(const SendKeyResponse1_template& other_value);
+~SendKeyResponse1_template();
+SendKeyResponse1_template& operator=(template_sel other_value);
+SendKeyResponse1_template& operator=(const SendKeyResponse1& other_value);
+SendKeyResponse1_template& operator=(const OPTIONAL<SendKeyResponse1>& other_value);
+SendKeyResponse1_template& operator=(const SendKeyResponse1_template& other_value);
+boolean match(const SendKeyResponse1& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SendKeyResponse1 valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SendKeyResponse1_template& list_item(unsigned int list_index) const;
+BITSTRING_template& securityAccessType();
+const BITSTRING_template& securityAccessType() const;
+int size_of() const;
+void log() const;
+void log_match(const SendKeyResponse1& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class SecurityAccessResponseType : public Base_Type {
+public:
+enum union_selection_type { UNBOUND_VALUE = 0, ALT_requestSeed0 = 1, ALT_sendKey0 = 2, ALT_requestSeed1 = 3, ALT_sendKey1 = 4 };
+private:
+union_selection_type union_selection;
+union {
+RequestSeedResponse0 *field_requestSeed0;
+SendKeyResponse0 *field_sendKey0;
+RequestSeedResponse1 *field_requestSeed1;
+SendKeyResponse1 *field_sendKey1;
+};
+void copy_value(const SecurityAccessResponseType& other_value);
+
+public:
+SecurityAccessResponseType();
+SecurityAccessResponseType(const SecurityAccessResponseType& other_value);
+~SecurityAccessResponseType();
+SecurityAccessResponseType& operator=(const SecurityAccessResponseType& other_value);
+boolean operator==(const SecurityAccessResponseType& other_value) const;
+inline boolean operator!=(const SecurityAccessResponseType& other_value) const { return !(*this == other_value); }
+RequestSeedResponse0& requestSeed0();
+const RequestSeedResponse0& requestSeed0() const;
+SendKeyResponse0& sendKey0();
+const SendKeyResponse0& sendKey0() const;
+RequestSeedResponse1& requestSeed1();
+const RequestSeedResponse1& requestSeed1() const;
+SendKeyResponse1& sendKey1();
+const SendKeyResponse1& sendKey1() const;
+inline union_selection_type get_selection() const { return union_selection; }
+boolean ischosen(union_selection_type checked_selection) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class SecurityAccessResponseType_template : public Base_Template {
+union {
+struct {
+SecurityAccessResponseType::union_selection_type union_selection;
+union {
+RequestSeedResponse0_template *field_requestSeed0;
+SendKeyResponse0_template *field_sendKey0;
+RequestSeedResponse1_template *field_requestSeed1;
+SendKeyResponse1_template *field_sendKey1;
+};
+} single_value;
+struct {
+unsigned int n_values;
+SecurityAccessResponseType_template *list_value;
+} value_list;
+};
+void copy_value(const SecurityAccessResponseType& other_value);
+
+void copy_template(const SecurityAccessResponseType_template& other_value);
+
+public:
+SecurityAccessResponseType_template();
+SecurityAccessResponseType_template(template_sel other_value);
+SecurityAccessResponseType_template(const SecurityAccessResponseType& other_value);
+SecurityAccessResponseType_template(const OPTIONAL<SecurityAccessResponseType>& other_value);
+SecurityAccessResponseType_template(const SecurityAccessResponseType_template& other_value);
+~SecurityAccessResponseType_template();
+void clean_up();
+SecurityAccessResponseType_template& operator=(template_sel other_value);
+SecurityAccessResponseType_template& operator=(const SecurityAccessResponseType& other_value);
+SecurityAccessResponseType_template& operator=(const OPTIONAL<SecurityAccessResponseType>& other_value);
+SecurityAccessResponseType_template& operator=(const SecurityAccessResponseType_template& other_value);
+boolean match(const SecurityAccessResponseType& other_value, boolean legacy = FALSE) const;
+boolean is_value() const;SecurityAccessResponseType valueof() const;
+SecurityAccessResponseType_template& list_item(unsigned int list_index) const;
+void set_type(template_sel template_type, unsigned int list_length);
+RequestSeedResponse0_template& requestSeed0();
+const RequestSeedResponse0_template& requestSeed0() const;
+SendKeyResponse0_template& sendKey0();
+const SendKeyResponse0_template& sendKey0() const;
+RequestSeedResponse1_template& requestSeed1();
+const RequestSeedResponse1_template& requestSeed1() const;
+SendKeyResponse1_template& sendKey1();
+const SendKeyResponse1_template& sendKey1() const;
+boolean ischosen(SecurityAccessResponseType::union_selection_type checked_selection) const;
+void log() const;
+void log_match(const SecurityAccessResponseType& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class SecurityAccessResponseSID : public Base_Type {
+  OCTETSTRING field_sid;
+  BITSTRING field_reserved;
+  SecurityAccessResponseType field_securityAccessType;
+public:
+  SecurityAccessResponseSID();
+  SecurityAccessResponseSID(const OCTETSTRING& par_sid,
+    const BITSTRING& par_reserved,
+    const SecurityAccessResponseType& par_securityAccessType);
+  SecurityAccessResponseSID(const SecurityAccessResponseSID& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  SecurityAccessResponseSID& operator=(const SecurityAccessResponseSID& other_value);
+  boolean operator==(const SecurityAccessResponseSID& other_value) const;
+  inline boolean operator!=(const SecurityAccessResponseSID& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& sid()
+    {return field_sid;}
+  inline const OCTETSTRING& sid() const
+    {return field_sid;}
+  inline BITSTRING& reserved()
+    {return field_reserved;}
+  inline const BITSTRING& reserved() const
+    {return field_reserved;}
+  inline SecurityAccessResponseType& securityAccessType()
+    {return field_securityAccessType;}
+  inline const SecurityAccessResponseType& securityAccessType() const
+    {return field_securityAccessType;}
+  inline int size_of() const
+    {return 3;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class SecurityAccessResponseSID_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+SecurityAccessResponseSID_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const SecurityAccessResponseSID& other_value);
+void copy_template(const SecurityAccessResponseSID_template& other_value);
+
+public:
+SecurityAccessResponseSID_template();
+SecurityAccessResponseSID_template(template_sel other_value);
+SecurityAccessResponseSID_template(const SecurityAccessResponseSID& other_value);
+SecurityAccessResponseSID_template(const OPTIONAL<SecurityAccessResponseSID>& other_value);
+SecurityAccessResponseSID_template(const SecurityAccessResponseSID_template& other_value);
+~SecurityAccessResponseSID_template();
+SecurityAccessResponseSID_template& operator=(template_sel other_value);
+SecurityAccessResponseSID_template& operator=(const SecurityAccessResponseSID& other_value);
+SecurityAccessResponseSID_template& operator=(const OPTIONAL<SecurityAccessResponseSID>& other_value);
+SecurityAccessResponseSID_template& operator=(const SecurityAccessResponseSID_template& other_value);
+boolean match(const SecurityAccessResponseSID& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+SecurityAccessResponseSID valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+SecurityAccessResponseSID_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& sid();
+const OCTETSTRING_template& sid() const;
+BITSTRING_template& reserved();
+const BITSTRING_template& reserved() const;
+SecurityAccessResponseType_template& securityAccessType();
+const SecurityAccessResponseType_template& securityAccessType() const;
+int size_of() const;
+void log() const;
+void log_match(const SecurityAccessResponseSID& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class e__ControlType : public Base_Type { // enum
+friend class e__ControlType_template;
+public:
+enum enum_type { EnableRxAndTx = 0, EnableRxAndDisableTx = 1, DisableRxAndEnableTx = 2, DisableRxAndTx = 3, EnableRxAndDisableTxWithEnhancedAddressInformation = 4, EnableRxAndTxWithEnhancedAddressInformation = 5, UNKNOWN_VALUE = 6, UNBOUND_VALUE = 7 };
+private:
+enum_type enum_value;
+
+public:
+e__ControlType();
+e__ControlType(int other_value);
+e__ControlType(enum_type other_value);
+e__ControlType(const e__ControlType& other_value);
+
+e__ControlType& operator=(int other_value);
+e__ControlType& operator=(enum_type other_value);
+e__ControlType& operator=(const e__ControlType& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const e__ControlType& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const e__ControlType& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const e__ControlType& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const e__ControlType& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const e__ControlType& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const e__ControlType& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const e__ControlType& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class e__ControlType_template : public Base_Template {
+union {
+e__ControlType::enum_type single_value;
+struct {
+unsigned int n_values;
+e__ControlType_template *list_value;
+} value_list;
+};
+
+void copy_template(const e__ControlType_template& other_value);
+
+public:
+e__ControlType_template();
+e__ControlType_template(template_sel other_value);
+e__ControlType_template(int other_value);
+e__ControlType_template(e__ControlType::enum_type other_value);
+e__ControlType_template(const e__ControlType& other_value);
+e__ControlType_template(const OPTIONAL<e__ControlType>& other_value);
+e__ControlType_template(const e__ControlType_template& other_value);
+~e__ControlType_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+e__ControlType_template& operator=(template_sel other_value);
+e__ControlType_template& operator=(int other_value);
+e__ControlType_template& operator=(e__ControlType::enum_type other_value);
+e__ControlType_template& operator=(const e__ControlType& other_value);
+e__ControlType_template& operator=(const OPTIONAL<e__ControlType>& other_value);
+e__ControlType_template& operator=(const e__ControlType_template& other_value);
+
+boolean match(e__ControlType::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const e__ControlType& other_value, boolean legacy = FALSE) const;
+e__ControlType::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+e__ControlType_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const e__ControlType& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class e__DisableEnable : public Base_Type { // enum
+friend class e__DisableEnable_template;
+public:
+enum enum_type { DisableEnableSpecifiedCommunicationType = 0, DisableEnableSpecificSubnetIdentifiedBySubnetNumber1 = 1, DisableEnableSpecificSubnetIdentifiedBySubnetNumber2 = 2, DisableEnableSpecificSubnetIdentifiedBySubnetNumber3 = 3, DisableEnableSpecificSubnetIdentifiedBySubnetNumber4 = 4, DisableEnableSpecificSubnetIdentifiedBySubnetNumber5 = 5, DisableEnableSpecificSubnetIdentifiedBySubnetNumber6 = 6, DisableEnableSpecificSubnetIdentifiedBySubnetNumber7 = 7, DisableEnableSpecificSubnetIdentifiedBySubnetNumber8 = 8, DisableEnableSpecificSubnetIdentifiedBySubnetNumber9 = 9, DisableEnableSpecificSubnetIdentifiedBySubnetNumber10 = 10, DisableEnableSpecificSubnetIdentifiedBySubnetNumber11 = 11, DisableEnableSpecificSubnetIdentifiedBySubnetNumber12 = 12, DisableEnableSpecificSubnetIdentifiedBySubnetNumber13 = 13, DisableEnableSpecificSubnetIdentifiedBySubnetNumber14 = 14, DisableEnableNetworkWhichRequestIsReceivedOn = 15, UNKNOWN_VALUE = 16, UNBOUND_VALUE = 17 };
+private:
+enum_type enum_value;
+
+public:
+e__DisableEnable();
+e__DisableEnable(int other_value);
+e__DisableEnable(enum_type other_value);
+e__DisableEnable(const e__DisableEnable& other_value);
+
+e__DisableEnable& operator=(int other_value);
+e__DisableEnable& operator=(enum_type other_value);
+e__DisableEnable& operator=(const e__DisableEnable& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const e__DisableEnable& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const e__DisableEnable& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const e__DisableEnable& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const e__DisableEnable& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const e__DisableEnable& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const e__DisableEnable& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const e__DisableEnable& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class e__DisableEnable_template : public Base_Template {
+union {
+e__DisableEnable::enum_type single_value;
+struct {
+unsigned int n_values;
+e__DisableEnable_template *list_value;
+} value_list;
+};
+
+void copy_template(const e__DisableEnable_template& other_value);
+
+public:
+e__DisableEnable_template();
+e__DisableEnable_template(template_sel other_value);
+e__DisableEnable_template(int other_value);
+e__DisableEnable_template(e__DisableEnable::enum_type other_value);
+e__DisableEnable_template(const e__DisableEnable& other_value);
+e__DisableEnable_template(const OPTIONAL<e__DisableEnable>& other_value);
+e__DisableEnable_template(const e__DisableEnable_template& other_value);
+~e__DisableEnable_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+e__DisableEnable_template& operator=(template_sel other_value);
+e__DisableEnable_template& operator=(int other_value);
+e__DisableEnable_template& operator=(e__DisableEnable::enum_type other_value);
+e__DisableEnable_template& operator=(const e__DisableEnable& other_value);
+e__DisableEnable_template& operator=(const OPTIONAL<e__DisableEnable>& other_value);
+e__DisableEnable_template& operator=(const e__DisableEnable_template& other_value);
+
+boolean match(e__DisableEnable::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const e__DisableEnable& other_value, boolean legacy = FALSE) const;
+e__DisableEnable::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+e__DisableEnable_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const e__DisableEnable& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class e__CommunicationMessages : public Base_Type { // enum
+friend class e__CommunicationMessages_template;
+public:
+enum enum_type { normalMessages = 1, networkManagement = 2, UNKNOWN_VALUE = 0, UNBOUND_VALUE = 3 };
+private:
+enum_type enum_value;
+
+public:
+e__CommunicationMessages();
+e__CommunicationMessages(int other_value);
+e__CommunicationMessages(enum_type other_value);
+e__CommunicationMessages(const e__CommunicationMessages& other_value);
+
+e__CommunicationMessages& operator=(int other_value);
+e__CommunicationMessages& operator=(enum_type other_value);
+e__CommunicationMessages& operator=(const e__CommunicationMessages& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const e__CommunicationMessages& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const e__CommunicationMessages& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const e__CommunicationMessages& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const e__CommunicationMessages& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const e__CommunicationMessages& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const e__CommunicationMessages& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const e__CommunicationMessages& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class e__CommunicationMessages_template : public Base_Template {
+union {
+e__CommunicationMessages::enum_type single_value;
+struct {
+unsigned int n_values;
+e__CommunicationMessages_template *list_value;
+} value_list;
+};
+
+void copy_template(const e__CommunicationMessages_template& other_value);
+
+public:
+e__CommunicationMessages_template();
+e__CommunicationMessages_template(template_sel other_value);
+e__CommunicationMessages_template(int other_value);
+e__CommunicationMessages_template(e__CommunicationMessages::enum_type other_value);
+e__CommunicationMessages_template(const e__CommunicationMessages& other_value);
+e__CommunicationMessages_template(const OPTIONAL<e__CommunicationMessages>& other_value);
+e__CommunicationMessages_template(const e__CommunicationMessages_template& other_value);
+~e__CommunicationMessages_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+e__CommunicationMessages_template& operator=(template_sel other_value);
+e__CommunicationMessages_template& operator=(int other_value);
+e__CommunicationMessages_template& operator=(e__CommunicationMessages::enum_type other_value);
+e__CommunicationMessages_template& operator=(const e__CommunicationMessages& other_value);
+e__CommunicationMessages_template& operator=(const OPTIONAL<e__CommunicationMessages>& other_value);
+e__CommunicationMessages_template& operator=(const e__CommunicationMessages_template& other_value);
+
+boolean match(e__CommunicationMessages::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const e__CommunicationMessages& other_value, boolean legacy = FALSE) const;
+e__CommunicationMessages::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+e__CommunicationMessages_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const e__CommunicationMessages& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class CommunicationType : public Base_Type {
+  e__DisableEnable field_disableEnable;
+  BITSTRING field_reserved;
+  e__CommunicationMessages field_communicationMessages;
+public:
+  CommunicationType();
+  CommunicationType(const e__DisableEnable& par_disableEnable,
+    const BITSTRING& par_reserved,
+    const e__CommunicationMessages& par_communicationMessages);
+  CommunicationType(const CommunicationType& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  CommunicationType& operator=(const CommunicationType& other_value);
+  boolean operator==(const CommunicationType& other_value) const;
+  inline boolean operator!=(const CommunicationType& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline e__DisableEnable& disableEnable()
+    {return field_disableEnable;}
+  inline const e__DisableEnable& disableEnable() const
+    {return field_disableEnable;}
+  inline BITSTRING& reserved()
+    {return field_reserved;}
+  inline const BITSTRING& reserved() const
+    {return field_reserved;}
+  inline e__CommunicationMessages& communicationMessages()
+    {return field_communicationMessages;}
+  inline const e__CommunicationMessages& communicationMessages() const
+    {return field_communicationMessages;}
+  inline int size_of() const
+    {return 3;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class CommunicationType_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+CommunicationType_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const CommunicationType& other_value);
+void copy_template(const CommunicationType_template& other_value);
+
+public:
+CommunicationType_template();
+CommunicationType_template(template_sel other_value);
+CommunicationType_template(const CommunicationType& other_value);
+CommunicationType_template(const OPTIONAL<CommunicationType>& other_value);
+CommunicationType_template(const CommunicationType_template& other_value);
+~CommunicationType_template();
+CommunicationType_template& operator=(template_sel other_value);
+CommunicationType_template& operator=(const CommunicationType& other_value);
+CommunicationType_template& operator=(const OPTIONAL<CommunicationType>& other_value);
+CommunicationType_template& operator=(const CommunicationType_template& other_value);
+boolean match(const CommunicationType& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+CommunicationType valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+CommunicationType_template& list_item(unsigned int list_index) const;
+e__DisableEnable_template& disableEnable();
+const e__DisableEnable_template& disableEnable() const;
+BITSTRING_template& reserved();
+const BITSTRING_template& reserved() const;
+e__CommunicationMessages_template& communicationMessages();
+const e__CommunicationMessages_template& communicationMessages() const;
+int size_of() const;
+void log() const;
+void log_match(const CommunicationType& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class EnableRxAndTxRequest : public Base_Type {
+  SuppressPosRspMsgIndicationBitType field_suppressPosRspMsgIndicationBit;
+  BITSTRING field_controlType;
+  CommunicationType field_communicationType;
+public:
+  EnableRxAndTxRequest();
+  EnableRxAndTxRequest(const SuppressPosRspMsgIndicationBitType& par_suppressPosRspMsgIndicationBit,
+    const BITSTRING& par_controlType,
+    const CommunicationType& par_communicationType);
+  EnableRxAndTxRequest(const EnableRxAndTxRequest& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  EnableRxAndTxRequest& operator=(const EnableRxAndTxRequest& other_value);
+  boolean operator==(const EnableRxAndTxRequest& other_value) const;
+  inline boolean operator!=(const EnableRxAndTxRequest& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline SuppressPosRspMsgIndicationBitType& suppressPosRspMsgIndicationBit()
+    {return field_suppressPosRspMsgIndicationBit;}
+  inline const SuppressPosRspMsgIndicationBitType& suppressPosRspMsgIndicationBit() const
+    {return field_suppressPosRspMsgIndicationBit;}
+  inline BITSTRING& controlType()
+    {return field_controlType;}
+  inline const BITSTRING& controlType() const
+    {return field_controlType;}
+  inline CommunicationType& communicationType()
+    {return field_communicationType;}
+  inline const CommunicationType& communicationType() const
+    {return field_communicationType;}
+  inline int size_of() const
+    {return 3;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class EnableRxAndTxRequest_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+EnableRxAndTxRequest_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const EnableRxAndTxRequest& other_value);
+void copy_template(const EnableRxAndTxRequest_template& other_value);
+
+public:
+EnableRxAndTxRequest_template();
+EnableRxAndTxRequest_template(template_sel other_value);
+EnableRxAndTxRequest_template(const EnableRxAndTxRequest& other_value);
+EnableRxAndTxRequest_template(const OPTIONAL<EnableRxAndTxRequest>& other_value);
+EnableRxAndTxRequest_template(const EnableRxAndTxRequest_template& other_value);
+~EnableRxAndTxRequest_template();
+EnableRxAndTxRequest_template& operator=(template_sel other_value);
+EnableRxAndTxRequest_template& operator=(const EnableRxAndTxRequest& other_value);
+EnableRxAndTxRequest_template& operator=(const OPTIONAL<EnableRxAndTxRequest>& other_value);
+EnableRxAndTxRequest_template& operator=(const EnableRxAndTxRequest_template& other_value);
+boolean match(const EnableRxAndTxRequest& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+EnableRxAndTxRequest valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+EnableRxAndTxRequest_template& list_item(unsigned int list_index) const;
+SuppressPosRspMsgIndicationBitType_template& suppressPosRspMsgIndicationBit();
+const SuppressPosRspMsgIndicationBitType_template& suppressPosRspMsgIndicationBit() const;
+BITSTRING_template& controlType();
+const BITSTRING_template& controlType() const;
+CommunicationType_template& communicationType();
+const CommunicationType_template& communicationType() const;
+int size_of() const;
+void log() const;
+void log_match(const EnableRxAndTxRequest& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class EnableRxAndDisableTxRequest : public Base_Type {
+  SuppressPosRspMsgIndicationBitType field_suppressPosRspMsgIndicationBit;
+  BITSTRING field_controlType;
+  CommunicationType field_communicationType;
+public:
+  EnableRxAndDisableTxRequest();
+  EnableRxAndDisableTxRequest(const SuppressPosRspMsgIndicationBitType& par_suppressPosRspMsgIndicationBit,
+    const BITSTRING& par_controlType,
+    const CommunicationType& par_communicationType);
+  EnableRxAndDisableTxRequest(const EnableRxAndDisableTxRequest& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  EnableRxAndDisableTxRequest& operator=(const EnableRxAndDisableTxRequest& other_value);
+  boolean operator==(const EnableRxAndDisableTxRequest& other_value) const;
+  inline boolean operator!=(const EnableRxAndDisableTxRequest& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline SuppressPosRspMsgIndicationBitType& suppressPosRspMsgIndicationBit()
+    {return field_suppressPosRspMsgIndicationBit;}
+  inline const SuppressPosRspMsgIndicationBitType& suppressPosRspMsgIndicationBit() const
+    {return field_suppressPosRspMsgIndicationBit;}
+  inline BITSTRING& controlType()
+    {return field_controlType;}
+  inline const BITSTRING& controlType() const
+    {return field_controlType;}
+  inline CommunicationType& communicationType()
+    {return field_communicationType;}
+  inline const CommunicationType& communicationType() const
+    {return field_communicationType;}
+  inline int size_of() const
+    {return 3;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class EnableRxAndDisableTxRequest_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+EnableRxAndDisableTxRequest_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const EnableRxAndDisableTxRequest& other_value);
+void copy_template(const EnableRxAndDisableTxRequest_template& other_value);
+
+public:
+EnableRxAndDisableTxRequest_template();
+EnableRxAndDisableTxRequest_template(template_sel other_value);
+EnableRxAndDisableTxRequest_template(const EnableRxAndDisableTxRequest& other_value);
+EnableRxAndDisableTxRequest_template(const OPTIONAL<EnableRxAndDisableTxRequest>& other_value);
+EnableRxAndDisableTxRequest_template(const EnableRxAndDisableTxRequest_template& other_value);
+~EnableRxAndDisableTxRequest_template();
+EnableRxAndDisableTxRequest_template& operator=(template_sel other_value);
+EnableRxAndDisableTxRequest_template& operator=(const EnableRxAndDisableTxRequest& other_value);
+EnableRxAndDisableTxRequest_template& operator=(const OPTIONAL<EnableRxAndDisableTxRequest>& other_value);
+EnableRxAndDisableTxRequest_template& operator=(const EnableRxAndDisableTxRequest_template& other_value);
+boolean match(const EnableRxAndDisableTxRequest& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+EnableRxAndDisableTxRequest valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+EnableRxAndDisableTxRequest_template& list_item(unsigned int list_index) const;
+SuppressPosRspMsgIndicationBitType_template& suppressPosRspMsgIndicationBit();
+const SuppressPosRspMsgIndicationBitType_template& suppressPosRspMsgIndicationBit() const;
+BITSTRING_template& controlType();
+const BITSTRING_template& controlType() const;
+CommunicationType_template& communicationType();
+const CommunicationType_template& communicationType() const;
+int size_of() const;
+void log() const;
+void log_match(const EnableRxAndDisableTxRequest& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class DisableRxAndEnableTxRequest : public Base_Type {
+  SuppressPosRspMsgIndicationBitType field_suppressPosRspMsgIndicationBit;
+  BITSTRING field_controlType;
+  CommunicationType field_communicationType;
+public:
+  DisableRxAndEnableTxRequest();
+  DisableRxAndEnableTxRequest(const SuppressPosRspMsgIndicationBitType& par_suppressPosRspMsgIndicationBit,
+    const BITSTRING& par_controlType,
+    const CommunicationType& par_communicationType);
+  DisableRxAndEnableTxRequest(const DisableRxAndEnableTxRequest& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  DisableRxAndEnableTxRequest& operator=(const DisableRxAndEnableTxRequest& other_value);
+  boolean operator==(const DisableRxAndEnableTxRequest& other_value) const;
+  inline boolean operator!=(const DisableRxAndEnableTxRequest& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline SuppressPosRspMsgIndicationBitType& suppressPosRspMsgIndicationBit()
+    {return field_suppressPosRspMsgIndicationBit;}
+  inline const SuppressPosRspMsgIndicationBitType& suppressPosRspMsgIndicationBit() const
+    {return field_suppressPosRspMsgIndicationBit;}
+  inline BITSTRING& controlType()
+    {return field_controlType;}
+  inline const BITSTRING& controlType() const
+    {return field_controlType;}
+  inline CommunicationType& communicationType()
+    {return field_communicationType;}
+  inline const CommunicationType& communicationType() const
+    {return field_communicationType;}
+  inline int size_of() const
+    {return 3;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class DisableRxAndEnableTxRequest_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+DisableRxAndEnableTxRequest_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const DisableRxAndEnableTxRequest& other_value);
+void copy_template(const DisableRxAndEnableTxRequest_template& other_value);
+
+public:
+DisableRxAndEnableTxRequest_template();
+DisableRxAndEnableTxRequest_template(template_sel other_value);
+DisableRxAndEnableTxRequest_template(const DisableRxAndEnableTxRequest& other_value);
+DisableRxAndEnableTxRequest_template(const OPTIONAL<DisableRxAndEnableTxRequest>& other_value);
+DisableRxAndEnableTxRequest_template(const DisableRxAndEnableTxRequest_template& other_value);
+~DisableRxAndEnableTxRequest_template();
+DisableRxAndEnableTxRequest_template& operator=(template_sel other_value);
+DisableRxAndEnableTxRequest_template& operator=(const DisableRxAndEnableTxRequest& other_value);
+DisableRxAndEnableTxRequest_template& operator=(const OPTIONAL<DisableRxAndEnableTxRequest>& other_value);
+DisableRxAndEnableTxRequest_template& operator=(const DisableRxAndEnableTxRequest_template& other_value);
+boolean match(const DisableRxAndEnableTxRequest& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+DisableRxAndEnableTxRequest valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+DisableRxAndEnableTxRequest_template& list_item(unsigned int list_index) const;
+SuppressPosRspMsgIndicationBitType_template& suppressPosRspMsgIndicationBit();
+const SuppressPosRspMsgIndicationBitType_template& suppressPosRspMsgIndicationBit() const;
+BITSTRING_template& controlType();
+const BITSTRING_template& controlType() const;
+CommunicationType_template& communicationType();
+const CommunicationType_template& communicationType() const;
+int size_of() const;
+void log() const;
+void log_match(const DisableRxAndEnableTxRequest& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class DisableRxAndTxRequest : public Base_Type {
+  SuppressPosRspMsgIndicationBitType field_suppressPosRspMsgIndicationBit;
+  BITSTRING field_controlType;
+  CommunicationType field_communicationType;
+public:
+  DisableRxAndTxRequest();
+  DisableRxAndTxRequest(const SuppressPosRspMsgIndicationBitType& par_suppressPosRspMsgIndicationBit,
+    const BITSTRING& par_controlType,
+    const CommunicationType& par_communicationType);
+  DisableRxAndTxRequest(const DisableRxAndTxRequest& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  DisableRxAndTxRequest& operator=(const DisableRxAndTxRequest& other_value);
+  boolean operator==(const DisableRxAndTxRequest& other_value) const;
+  inline boolean operator!=(const DisableRxAndTxRequest& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline SuppressPosRspMsgIndicationBitType& suppressPosRspMsgIndicationBit()
+    {return field_suppressPosRspMsgIndicationBit;}
+  inline const SuppressPosRspMsgIndicationBitType& suppressPosRspMsgIndicationBit() const
+    {return field_suppressPosRspMsgIndicationBit;}
+  inline BITSTRING& controlType()
+    {return field_controlType;}
+  inline const BITSTRING& controlType() const
+    {return field_controlType;}
+  inline CommunicationType& communicationType()
+    {return field_communicationType;}
+  inline const CommunicationType& communicationType() const
+    {return field_communicationType;}
+  inline int size_of() const
+    {return 3;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class DisableRxAndTxRequest_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+DisableRxAndTxRequest_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const DisableRxAndTxRequest& other_value);
+void copy_template(const DisableRxAndTxRequest_template& other_value);
+
+public:
+DisableRxAndTxRequest_template();
+DisableRxAndTxRequest_template(template_sel other_value);
+DisableRxAndTxRequest_template(const DisableRxAndTxRequest& other_value);
+DisableRxAndTxRequest_template(const OPTIONAL<DisableRxAndTxRequest>& other_value);
+DisableRxAndTxRequest_template(const DisableRxAndTxRequest_template& other_value);
+~DisableRxAndTxRequest_template();
+DisableRxAndTxRequest_template& operator=(template_sel other_value);
+DisableRxAndTxRequest_template& operator=(const DisableRxAndTxRequest& other_value);
+DisableRxAndTxRequest_template& operator=(const OPTIONAL<DisableRxAndTxRequest>& other_value);
+DisableRxAndTxRequest_template& operator=(const DisableRxAndTxRequest_template& other_value);
+boolean match(const DisableRxAndTxRequest& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+DisableRxAndTxRequest valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+DisableRxAndTxRequest_template& list_item(unsigned int list_index) const;
+SuppressPosRspMsgIndicationBitType_template& suppressPosRspMsgIndicationBit();
+const SuppressPosRspMsgIndicationBitType_template& suppressPosRspMsgIndicationBit() const;
+BITSTRING_template& controlType();
+const BITSTRING_template& controlType() const;
+CommunicationType_template& communicationType();
+const CommunicationType_template& communicationType() const;
+int size_of() const;
+void log() const;
+void log_match(const DisableRxAndTxRequest& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class EnableRxAndDisableTxWithEnhancedAddressInformationRequest : public Base_Type {
+  SuppressPosRspMsgIndicationBitType field_suppressPosRspMsgIndicationBit;
+  BITSTRING field_controlType;
+  CommunicationType field_communicationType;
+  OCTETSTRING field_nodeIdentificationNumber;
+public:
+  EnableRxAndDisableTxWithEnhancedAddressInformationRequest();
+  EnableRxAndDisableTxWithEnhancedAddressInformationRequest(const SuppressPosRspMsgIndicationBitType& par_suppressPosRspMsgIndicationBit,
+    const BITSTRING& par_controlType,
+    const CommunicationType& par_communicationType,
+    const OCTETSTRING& par_nodeIdentificationNumber);
+  EnableRxAndDisableTxWithEnhancedAddressInformationRequest(const EnableRxAndDisableTxWithEnhancedAddressInformationRequest& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  EnableRxAndDisableTxWithEnhancedAddressInformationRequest& operator=(const EnableRxAndDisableTxWithEnhancedAddressInformationRequest& other_value);
+  boolean operator==(const EnableRxAndDisableTxWithEnhancedAddressInformationRequest& other_value) const;
+  inline boolean operator!=(const EnableRxAndDisableTxWithEnhancedAddressInformationRequest& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline SuppressPosRspMsgIndicationBitType& suppressPosRspMsgIndicationBit()
+    {return field_suppressPosRspMsgIndicationBit;}
+  inline const SuppressPosRspMsgIndicationBitType& suppressPosRspMsgIndicationBit() const
+    {return field_suppressPosRspMsgIndicationBit;}
+  inline BITSTRING& controlType()
+    {return field_controlType;}
+  inline const BITSTRING& controlType() const
+    {return field_controlType;}
+  inline CommunicationType& communicationType()
+    {return field_communicationType;}
+  inline const CommunicationType& communicationType() const
+    {return field_communicationType;}
+  inline OCTETSTRING& nodeIdentificationNumber()
+    {return field_nodeIdentificationNumber;}
+  inline const OCTETSTRING& nodeIdentificationNumber() const
+    {return field_nodeIdentificationNumber;}
+  inline int size_of() const
+    {return 4;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const EnableRxAndDisableTxWithEnhancedAddressInformationRequest& other_value);
+void copy_template(const EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template& other_value);
+
+public:
+EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template();
+EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template(template_sel other_value);
+EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template(const EnableRxAndDisableTxWithEnhancedAddressInformationRequest& other_value);
+EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template(const OPTIONAL<EnableRxAndDisableTxWithEnhancedAddressInformationRequest>& other_value);
+EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template(const EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template& other_value);
+~EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template();
+EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template& operator=(template_sel other_value);
+EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template& operator=(const EnableRxAndDisableTxWithEnhancedAddressInformationRequest& other_value);
+EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template& operator=(const OPTIONAL<EnableRxAndDisableTxWithEnhancedAddressInformationRequest>& other_value);
+EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template& operator=(const EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template& other_value);
+boolean match(const EnableRxAndDisableTxWithEnhancedAddressInformationRequest& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+EnableRxAndDisableTxWithEnhancedAddressInformationRequest valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template& list_item(unsigned int list_index) const;
+SuppressPosRspMsgIndicationBitType_template& suppressPosRspMsgIndicationBit();
+const SuppressPosRspMsgIndicationBitType_template& suppressPosRspMsgIndicationBit() const;
+BITSTRING_template& controlType();
+const BITSTRING_template& controlType() const;
+CommunicationType_template& communicationType();
+const CommunicationType_template& communicationType() const;
+OCTETSTRING_template& nodeIdentificationNumber();
+const OCTETSTRING_template& nodeIdentificationNumber() const;
+int size_of() const;
+void log() const;
+void log_match(const EnableRxAndDisableTxWithEnhancedAddressInformationRequest& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class EnableRxAndTxWithEnhancedAddressInformationRequest : public Base_Type {
+  SuppressPosRspMsgIndicationBitType field_suppressPosRspMsgIndicationBit;
+  BITSTRING field_controlType;
+  CommunicationType field_communicationType;
+  OCTETSTRING field_nodeIdentificationNumber;
+public:
+  EnableRxAndTxWithEnhancedAddressInformationRequest();
+  EnableRxAndTxWithEnhancedAddressInformationRequest(const SuppressPosRspMsgIndicationBitType& par_suppressPosRspMsgIndicationBit,
+    const BITSTRING& par_controlType,
+    const CommunicationType& par_communicationType,
+    const OCTETSTRING& par_nodeIdentificationNumber);
+  EnableRxAndTxWithEnhancedAddressInformationRequest(const EnableRxAndTxWithEnhancedAddressInformationRequest& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  EnableRxAndTxWithEnhancedAddressInformationRequest& operator=(const EnableRxAndTxWithEnhancedAddressInformationRequest& other_value);
+  boolean operator==(const EnableRxAndTxWithEnhancedAddressInformationRequest& other_value) const;
+  inline boolean operator!=(const EnableRxAndTxWithEnhancedAddressInformationRequest& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline SuppressPosRspMsgIndicationBitType& suppressPosRspMsgIndicationBit()
+    {return field_suppressPosRspMsgIndicationBit;}
+  inline const SuppressPosRspMsgIndicationBitType& suppressPosRspMsgIndicationBit() const
+    {return field_suppressPosRspMsgIndicationBit;}
+  inline BITSTRING& controlType()
+    {return field_controlType;}
+  inline const BITSTRING& controlType() const
+    {return field_controlType;}
+  inline CommunicationType& communicationType()
+    {return field_communicationType;}
+  inline const CommunicationType& communicationType() const
+    {return field_communicationType;}
+  inline OCTETSTRING& nodeIdentificationNumber()
+    {return field_nodeIdentificationNumber;}
+  inline const OCTETSTRING& nodeIdentificationNumber() const
+    {return field_nodeIdentificationNumber;}
+  inline int size_of() const
+    {return 4;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class EnableRxAndTxWithEnhancedAddressInformationRequest_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+EnableRxAndTxWithEnhancedAddressInformationRequest_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const EnableRxAndTxWithEnhancedAddressInformationRequest& other_value);
+void copy_template(const EnableRxAndTxWithEnhancedAddressInformationRequest_template& other_value);
+
+public:
+EnableRxAndTxWithEnhancedAddressInformationRequest_template();
+EnableRxAndTxWithEnhancedAddressInformationRequest_template(template_sel other_value);
+EnableRxAndTxWithEnhancedAddressInformationRequest_template(const EnableRxAndTxWithEnhancedAddressInformationRequest& other_value);
+EnableRxAndTxWithEnhancedAddressInformationRequest_template(const OPTIONAL<EnableRxAndTxWithEnhancedAddressInformationRequest>& other_value);
+EnableRxAndTxWithEnhancedAddressInformationRequest_template(const EnableRxAndTxWithEnhancedAddressInformationRequest_template& other_value);
+~EnableRxAndTxWithEnhancedAddressInformationRequest_template();
+EnableRxAndTxWithEnhancedAddressInformationRequest_template& operator=(template_sel other_value);
+EnableRxAndTxWithEnhancedAddressInformationRequest_template& operator=(const EnableRxAndTxWithEnhancedAddressInformationRequest& other_value);
+EnableRxAndTxWithEnhancedAddressInformationRequest_template& operator=(const OPTIONAL<EnableRxAndTxWithEnhancedAddressInformationRequest>& other_value);
+EnableRxAndTxWithEnhancedAddressInformationRequest_template& operator=(const EnableRxAndTxWithEnhancedAddressInformationRequest_template& other_value);
+boolean match(const EnableRxAndTxWithEnhancedAddressInformationRequest& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+EnableRxAndTxWithEnhancedAddressInformationRequest valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+EnableRxAndTxWithEnhancedAddressInformationRequest_template& list_item(unsigned int list_index) const;
+SuppressPosRspMsgIndicationBitType_template& suppressPosRspMsgIndicationBit();
+const SuppressPosRspMsgIndicationBitType_template& suppressPosRspMsgIndicationBit() const;
+BITSTRING_template& controlType();
+const BITSTRING_template& controlType() const;
+CommunicationType_template& communicationType();
+const CommunicationType_template& communicationType() const;
+OCTETSTRING_template& nodeIdentificationNumber();
+const OCTETSTRING_template& nodeIdentificationNumber() const;
+int size_of() const;
+void log() const;
+void log_match(const EnableRxAndTxWithEnhancedAddressInformationRequest& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class CommunicationControlRequestType : public Base_Type {
+public:
+enum union_selection_type { UNBOUND_VALUE = 0, ALT_enableRxAndTxRequest = 1, ALT_enableRxAndDisableTxRequest = 2, ALT_disableRxAndEnableTxRequest = 3, ALT_disableRxAndTxRequest = 4, ALT_enableRxAndDisableTxWithEnhancedAddressInformationRequest = 5, ALT_enableRxAndTxWithEnhancedAddressInformationRequest = 6 };
+private:
+union_selection_type union_selection;
+union {
+EnableRxAndTxRequest *field_enableRxAndTxRequest;
+EnableRxAndDisableTxRequest *field_enableRxAndDisableTxRequest;
+DisableRxAndEnableTxRequest *field_disableRxAndEnableTxRequest;
+DisableRxAndTxRequest *field_disableRxAndTxRequest;
+EnableRxAndDisableTxWithEnhancedAddressInformationRequest *field_enableRxAndDisableTxWithEnhancedAddressInformationRequest;
+EnableRxAndTxWithEnhancedAddressInformationRequest *field_enableRxAndTxWithEnhancedAddressInformationRequest;
+};
+void copy_value(const CommunicationControlRequestType& other_value);
+
+public:
+CommunicationControlRequestType();
+CommunicationControlRequestType(const CommunicationControlRequestType& other_value);
+~CommunicationControlRequestType();
+CommunicationControlRequestType& operator=(const CommunicationControlRequestType& other_value);
+boolean operator==(const CommunicationControlRequestType& other_value) const;
+inline boolean operator!=(const CommunicationControlRequestType& other_value) const { return !(*this == other_value); }
+EnableRxAndTxRequest& enableRxAndTxRequest();
+const EnableRxAndTxRequest& enableRxAndTxRequest() const;
+EnableRxAndDisableTxRequest& enableRxAndDisableTxRequest();
+const EnableRxAndDisableTxRequest& enableRxAndDisableTxRequest() const;
+DisableRxAndEnableTxRequest& disableRxAndEnableTxRequest();
+const DisableRxAndEnableTxRequest& disableRxAndEnableTxRequest() const;
+DisableRxAndTxRequest& disableRxAndTxRequest();
+const DisableRxAndTxRequest& disableRxAndTxRequest() const;
+EnableRxAndDisableTxWithEnhancedAddressInformationRequest& enableRxAndDisableTxWithEnhancedAddressInformationRequest();
+const EnableRxAndDisableTxWithEnhancedAddressInformationRequest& enableRxAndDisableTxWithEnhancedAddressInformationRequest() const;
+EnableRxAndTxWithEnhancedAddressInformationRequest& enableRxAndTxWithEnhancedAddressInformationRequest();
+const EnableRxAndTxWithEnhancedAddressInformationRequest& enableRxAndTxWithEnhancedAddressInformationRequest() const;
+inline union_selection_type get_selection() const { return union_selection; }
+boolean ischosen(union_selection_type checked_selection) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class CommunicationControlRequestType_template : public Base_Template {
+union {
+struct {
+CommunicationControlRequestType::union_selection_type union_selection;
+union {
+EnableRxAndTxRequest_template *field_enableRxAndTxRequest;
+EnableRxAndDisableTxRequest_template *field_enableRxAndDisableTxRequest;
+DisableRxAndEnableTxRequest_template *field_disableRxAndEnableTxRequest;
+DisableRxAndTxRequest_template *field_disableRxAndTxRequest;
+EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template *field_enableRxAndDisableTxWithEnhancedAddressInformationRequest;
+EnableRxAndTxWithEnhancedAddressInformationRequest_template *field_enableRxAndTxWithEnhancedAddressInformationRequest;
+};
+} single_value;
+struct {
+unsigned int n_values;
+CommunicationControlRequestType_template *list_value;
+} value_list;
+};
+void copy_value(const CommunicationControlRequestType& other_value);
+
+void copy_template(const CommunicationControlRequestType_template& other_value);
+
+public:
+CommunicationControlRequestType_template();
+CommunicationControlRequestType_template(template_sel other_value);
+CommunicationControlRequestType_template(const CommunicationControlRequestType& other_value);
+CommunicationControlRequestType_template(const OPTIONAL<CommunicationControlRequestType>& other_value);
+CommunicationControlRequestType_template(const CommunicationControlRequestType_template& other_value);
+~CommunicationControlRequestType_template();
+void clean_up();
+CommunicationControlRequestType_template& operator=(template_sel other_value);
+CommunicationControlRequestType_template& operator=(const CommunicationControlRequestType& other_value);
+CommunicationControlRequestType_template& operator=(const OPTIONAL<CommunicationControlRequestType>& other_value);
+CommunicationControlRequestType_template& operator=(const CommunicationControlRequestType_template& other_value);
+boolean match(const CommunicationControlRequestType& other_value, boolean legacy = FALSE) const;
+boolean is_value() const;CommunicationControlRequestType valueof() const;
+CommunicationControlRequestType_template& list_item(unsigned int list_index) const;
+void set_type(template_sel template_type, unsigned int list_length);
+EnableRxAndTxRequest_template& enableRxAndTxRequest();
+const EnableRxAndTxRequest_template& enableRxAndTxRequest() const;
+EnableRxAndDisableTxRequest_template& enableRxAndDisableTxRequest();
+const EnableRxAndDisableTxRequest_template& enableRxAndDisableTxRequest() const;
+DisableRxAndEnableTxRequest_template& disableRxAndEnableTxRequest();
+const DisableRxAndEnableTxRequest_template& disableRxAndEnableTxRequest() const;
+DisableRxAndTxRequest_template& disableRxAndTxRequest();
+const DisableRxAndTxRequest_template& disableRxAndTxRequest() const;
+EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template& enableRxAndDisableTxWithEnhancedAddressInformationRequest();
+const EnableRxAndDisableTxWithEnhancedAddressInformationRequest_template& enableRxAndDisableTxWithEnhancedAddressInformationRequest() const;
+EnableRxAndTxWithEnhancedAddressInformationRequest_template& enableRxAndTxWithEnhancedAddressInformationRequest();
+const EnableRxAndTxWithEnhancedAddressInformationRequest_template& enableRxAndTxWithEnhancedAddressInformationRequest() const;
+boolean ischosen(CommunicationControlRequestType::union_selection_type checked_selection) const;
+void log() const;
+void log_match(const CommunicationControlRequestType& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class CommunicationControlRequestSID : public Base_Type {
+  OCTETSTRING field_sid;
+  CommunicationControlRequestType field_communicationControlRequestType;
+public:
+  CommunicationControlRequestSID();
+  CommunicationControlRequestSID(const OCTETSTRING& par_sid,
+    const CommunicationControlRequestType& par_communicationControlRequestType);
+  CommunicationControlRequestSID(const CommunicationControlRequestSID& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  CommunicationControlRequestSID& operator=(const CommunicationControlRequestSID& other_value);
+  boolean operator==(const CommunicationControlRequestSID& other_value) const;
+  inline boolean operator!=(const CommunicationControlRequestSID& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& sid()
+    {return field_sid;}
+  inline const OCTETSTRING& sid() const
+    {return field_sid;}
+  inline CommunicationControlRequestType& communicationControlRequestType()
+    {return field_communicationControlRequestType;}
+  inline const CommunicationControlRequestType& communicationControlRequestType() const
+    {return field_communicationControlRequestType;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class CommunicationControlRequestSID_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+CommunicationControlRequestSID_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const CommunicationControlRequestSID& other_value);
+void copy_template(const CommunicationControlRequestSID_template& other_value);
+
+public:
+CommunicationControlRequestSID_template();
+CommunicationControlRequestSID_template(template_sel other_value);
+CommunicationControlRequestSID_template(const CommunicationControlRequestSID& other_value);
+CommunicationControlRequestSID_template(const OPTIONAL<CommunicationControlRequestSID>& other_value);
+CommunicationControlRequestSID_template(const CommunicationControlRequestSID_template& other_value);
+~CommunicationControlRequestSID_template();
+CommunicationControlRequestSID_template& operator=(template_sel other_value);
+CommunicationControlRequestSID_template& operator=(const CommunicationControlRequestSID& other_value);
+CommunicationControlRequestSID_template& operator=(const OPTIONAL<CommunicationControlRequestSID>& other_value);
+CommunicationControlRequestSID_template& operator=(const CommunicationControlRequestSID_template& other_value);
+boolean match(const CommunicationControlRequestSID& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+CommunicationControlRequestSID valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+CommunicationControlRequestSID_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& sid();
+const OCTETSTRING_template& sid() const;
+CommunicationControlRequestType_template& communicationControlRequestType();
+const CommunicationControlRequestType_template& communicationControlRequestType() const;
+int size_of() const;
+void log() const;
+void log_match(const CommunicationControlRequestSID& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class CommunicationControlResponseSID : public Base_Type {
+  OCTETSTRING field_sid;
+  BITSTRING field_reserved;
+  e__ControlType field_controlType;
+public:
+  CommunicationControlResponseSID();
+  CommunicationControlResponseSID(const OCTETSTRING& par_sid,
+    const BITSTRING& par_reserved,
+    const e__ControlType& par_controlType);
+  CommunicationControlResponseSID(const CommunicationControlResponseSID& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  CommunicationControlResponseSID& operator=(const CommunicationControlResponseSID& other_value);
+  boolean operator==(const CommunicationControlResponseSID& other_value) const;
+  inline boolean operator!=(const CommunicationControlResponseSID& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& sid()
+    {return field_sid;}
+  inline const OCTETSTRING& sid() const
+    {return field_sid;}
+  inline BITSTRING& reserved()
+    {return field_reserved;}
+  inline const BITSTRING& reserved() const
+    {return field_reserved;}
+  inline e__ControlType& controlType()
+    {return field_controlType;}
+  inline const e__ControlType& controlType() const
+    {return field_controlType;}
+  inline int size_of() const
+    {return 3;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class CommunicationControlResponseSID_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+CommunicationControlResponseSID_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const CommunicationControlResponseSID& other_value);
+void copy_template(const CommunicationControlResponseSID_template& other_value);
+
+public:
+CommunicationControlResponseSID_template();
+CommunicationControlResponseSID_template(template_sel other_value);
+CommunicationControlResponseSID_template(const CommunicationControlResponseSID& other_value);
+CommunicationControlResponseSID_template(const OPTIONAL<CommunicationControlResponseSID>& other_value);
+CommunicationControlResponseSID_template(const CommunicationControlResponseSID_template& other_value);
+~CommunicationControlResponseSID_template();
+CommunicationControlResponseSID_template& operator=(template_sel other_value);
+CommunicationControlResponseSID_template& operator=(const CommunicationControlResponseSID& other_value);
+CommunicationControlResponseSID_template& operator=(const OPTIONAL<CommunicationControlResponseSID>& other_value);
+CommunicationControlResponseSID_template& operator=(const CommunicationControlResponseSID_template& other_value);
+boolean match(const CommunicationControlResponseSID& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+CommunicationControlResponseSID valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+CommunicationControlResponseSID_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& sid();
+const OCTETSTRING_template& sid() const;
+BITSTRING_template& reserved();
+const BITSTRING_template& reserved() const;
+e__ControlType_template& controlType();
+const e__ControlType_template& controlType() const;
+int size_of() const;
+void log() const;
+void log_match(const CommunicationControlResponseSID& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class TesterPresentRequestSID : public Base_Type {
+  OCTETSTRING field_sid;
+  SuppressPosRspMsgIndicationBitType field_suppressPosRspMsgIndicationBit;
+  BITSTRING field_zero;
+public:
+  TesterPresentRequestSID();
+  TesterPresentRequestSID(const OCTETSTRING& par_sid,
+    const SuppressPosRspMsgIndicationBitType& par_suppressPosRspMsgIndicationBit,
+    const BITSTRING& par_zero);
+  TesterPresentRequestSID(const TesterPresentRequestSID& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  TesterPresentRequestSID& operator=(const TesterPresentRequestSID& other_value);
+  boolean operator==(const TesterPresentRequestSID& other_value) const;
+  inline boolean operator!=(const TesterPresentRequestSID& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& sid()
+    {return field_sid;}
+  inline const OCTETSTRING& sid() const
+    {return field_sid;}
+  inline SuppressPosRspMsgIndicationBitType& suppressPosRspMsgIndicationBit()
+    {return field_suppressPosRspMsgIndicationBit;}
+  inline const SuppressPosRspMsgIndicationBitType& suppressPosRspMsgIndicationBit() const
+    {return field_suppressPosRspMsgIndicationBit;}
+  inline BITSTRING& zero()
+    {return field_zero;}
+  inline const BITSTRING& zero() const
+    {return field_zero;}
+  inline int size_of() const
+    {return 3;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class TesterPresentRequestSID_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+TesterPresentRequestSID_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const TesterPresentRequestSID& other_value);
+void copy_template(const TesterPresentRequestSID_template& other_value);
+
+public:
+TesterPresentRequestSID_template();
+TesterPresentRequestSID_template(template_sel other_value);
+TesterPresentRequestSID_template(const TesterPresentRequestSID& other_value);
+TesterPresentRequestSID_template(const OPTIONAL<TesterPresentRequestSID>& other_value);
+TesterPresentRequestSID_template(const TesterPresentRequestSID_template& other_value);
+~TesterPresentRequestSID_template();
+TesterPresentRequestSID_template& operator=(template_sel other_value);
+TesterPresentRequestSID_template& operator=(const TesterPresentRequestSID& other_value);
+TesterPresentRequestSID_template& operator=(const OPTIONAL<TesterPresentRequestSID>& other_value);
+TesterPresentRequestSID_template& operator=(const TesterPresentRequestSID_template& other_value);
+boolean match(const TesterPresentRequestSID& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+TesterPresentRequestSID valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+TesterPresentRequestSID_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& sid();
+const OCTETSTRING_template& sid() const;
+SuppressPosRspMsgIndicationBitType_template& suppressPosRspMsgIndicationBit();
+const SuppressPosRspMsgIndicationBitType_template& suppressPosRspMsgIndicationBit() const;
+BITSTRING_template& zero();
+const BITSTRING_template& zero() const;
+int size_of() const;
+void log() const;
+void log_match(const TesterPresentRequestSID& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class TesterPresentResponseSID : public Base_Type {
+  OCTETSTRING field_sid;
+  BITSTRING field_reserved;
+  BITSTRING field_zero;
+public:
+  TesterPresentResponseSID();
+  TesterPresentResponseSID(const OCTETSTRING& par_sid,
+    const BITSTRING& par_reserved,
+    const BITSTRING& par_zero);
+  TesterPresentResponseSID(const TesterPresentResponseSID& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  TesterPresentResponseSID& operator=(const TesterPresentResponseSID& other_value);
+  boolean operator==(const TesterPresentResponseSID& other_value) const;
+  inline boolean operator!=(const TesterPresentResponseSID& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& sid()
+    {return field_sid;}
+  inline const OCTETSTRING& sid() const
+    {return field_sid;}
+  inline BITSTRING& reserved()
+    {return field_reserved;}
+  inline const BITSTRING& reserved() const
+    {return field_reserved;}
+  inline BITSTRING& zero()
+    {return field_zero;}
+  inline const BITSTRING& zero() const
+    {return field_zero;}
+  inline int size_of() const
+    {return 3;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class TesterPresentResponseSID_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+TesterPresentResponseSID_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const TesterPresentResponseSID& other_value);
+void copy_template(const TesterPresentResponseSID_template& other_value);
+
+public:
+TesterPresentResponseSID_template();
+TesterPresentResponseSID_template(template_sel other_value);
+TesterPresentResponseSID_template(const TesterPresentResponseSID& other_value);
+TesterPresentResponseSID_template(const OPTIONAL<TesterPresentResponseSID>& other_value);
+TesterPresentResponseSID_template(const TesterPresentResponseSID_template& other_value);
+~TesterPresentResponseSID_template();
+TesterPresentResponseSID_template& operator=(template_sel other_value);
+TesterPresentResponseSID_template& operator=(const TesterPresentResponseSID& other_value);
+TesterPresentResponseSID_template& operator=(const OPTIONAL<TesterPresentResponseSID>& other_value);
+TesterPresentResponseSID_template& operator=(const TesterPresentResponseSID_template& other_value);
+boolean match(const TesterPresentResponseSID& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+TesterPresentResponseSID valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+TesterPresentResponseSID_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& sid();
+const OCTETSTRING_template& sid() const;
+BITSTRING_template& reserved();
+const BITSTRING_template& reserved() const;
+BITSTRING_template& zero();
+const BITSTRING_template& zero() const;
+int size_of() const;
+void log() const;
+void log_match(const TesterPresentResponseSID& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ReadDataByIdentifierRequest1 : public Base_Type {
+  OCTETSTRING field_identifier;
+public:
+  ReadDataByIdentifierRequest1();
+  ReadDataByIdentifierRequest1(const OCTETSTRING& par_identifier);
+  ReadDataByIdentifierRequest1(const ReadDataByIdentifierRequest1& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ReadDataByIdentifierRequest1& operator=(const ReadDataByIdentifierRequest1& other_value);
+  boolean operator==(const ReadDataByIdentifierRequest1& other_value) const;
+  inline boolean operator!=(const ReadDataByIdentifierRequest1& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& identifier()
+    {return field_identifier;}
+  inline const OCTETSTRING& identifier() const
+    {return field_identifier;}
+  inline int size_of() const
+    {return 1;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ReadDataByIdentifierRequest1_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ReadDataByIdentifierRequest1_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ReadDataByIdentifierRequest1& other_value);
+void copy_template(const ReadDataByIdentifierRequest1_template& other_value);
+
+public:
+ReadDataByIdentifierRequest1_template();
+ReadDataByIdentifierRequest1_template(template_sel other_value);
+ReadDataByIdentifierRequest1_template(const ReadDataByIdentifierRequest1& other_value);
+ReadDataByIdentifierRequest1_template(const OPTIONAL<ReadDataByIdentifierRequest1>& other_value);
+ReadDataByIdentifierRequest1_template(const ReadDataByIdentifierRequest1_template& other_value);
+~ReadDataByIdentifierRequest1_template();
+ReadDataByIdentifierRequest1_template& operator=(template_sel other_value);
+ReadDataByIdentifierRequest1_template& operator=(const ReadDataByIdentifierRequest1& other_value);
+ReadDataByIdentifierRequest1_template& operator=(const OPTIONAL<ReadDataByIdentifierRequest1>& other_value);
+ReadDataByIdentifierRequest1_template& operator=(const ReadDataByIdentifierRequest1_template& other_value);
+boolean match(const ReadDataByIdentifierRequest1& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ReadDataByIdentifierRequest1 valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ReadDataByIdentifierRequest1_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& identifier();
+const OCTETSTRING_template& identifier() const;
+int size_of() const;
+void log() const;
+void log_match(const ReadDataByIdentifierRequest1& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ReadDataByIdentifierRequest2 : public Base_Type {
+  OCTETSTRING field_identifier;
+public:
+  ReadDataByIdentifierRequest2();
+  ReadDataByIdentifierRequest2(const OCTETSTRING& par_identifier);
+  ReadDataByIdentifierRequest2(const ReadDataByIdentifierRequest2& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ReadDataByIdentifierRequest2& operator=(const ReadDataByIdentifierRequest2& other_value);
+  boolean operator==(const ReadDataByIdentifierRequest2& other_value) const;
+  inline boolean operator!=(const ReadDataByIdentifierRequest2& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& identifier()
+    {return field_identifier;}
+  inline const OCTETSTRING& identifier() const
+    {return field_identifier;}
+  inline int size_of() const
+    {return 1;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ReadDataByIdentifierRequest2_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ReadDataByIdentifierRequest2_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ReadDataByIdentifierRequest2& other_value);
+void copy_template(const ReadDataByIdentifierRequest2_template& other_value);
+
+public:
+ReadDataByIdentifierRequest2_template();
+ReadDataByIdentifierRequest2_template(template_sel other_value);
+ReadDataByIdentifierRequest2_template(const ReadDataByIdentifierRequest2& other_value);
+ReadDataByIdentifierRequest2_template(const OPTIONAL<ReadDataByIdentifierRequest2>& other_value);
+ReadDataByIdentifierRequest2_template(const ReadDataByIdentifierRequest2_template& other_value);
+~ReadDataByIdentifierRequest2_template();
+ReadDataByIdentifierRequest2_template& operator=(template_sel other_value);
+ReadDataByIdentifierRequest2_template& operator=(const ReadDataByIdentifierRequest2& other_value);
+ReadDataByIdentifierRequest2_template& operator=(const OPTIONAL<ReadDataByIdentifierRequest2>& other_value);
+ReadDataByIdentifierRequest2_template& operator=(const ReadDataByIdentifierRequest2_template& other_value);
+boolean match(const ReadDataByIdentifierRequest2& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ReadDataByIdentifierRequest2 valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ReadDataByIdentifierRequest2_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& identifier();
+const OCTETSTRING_template& identifier() const;
+int size_of() const;
+void log() const;
+void log_match(const ReadDataByIdentifierRequest2& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ReadDataByIdentifierRequest3 : public Base_Type {
+  OCTETSTRING field_identifier;
+public:
+  ReadDataByIdentifierRequest3();
+  ReadDataByIdentifierRequest3(const OCTETSTRING& par_identifier);
+  ReadDataByIdentifierRequest3(const ReadDataByIdentifierRequest3& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ReadDataByIdentifierRequest3& operator=(const ReadDataByIdentifierRequest3& other_value);
+  boolean operator==(const ReadDataByIdentifierRequest3& other_value) const;
+  inline boolean operator!=(const ReadDataByIdentifierRequest3& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& identifier()
+    {return field_identifier;}
+  inline const OCTETSTRING& identifier() const
+    {return field_identifier;}
+  inline int size_of() const
+    {return 1;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ReadDataByIdentifierRequest3_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ReadDataByIdentifierRequest3_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ReadDataByIdentifierRequest3& other_value);
+void copy_template(const ReadDataByIdentifierRequest3_template& other_value);
+
+public:
+ReadDataByIdentifierRequest3_template();
+ReadDataByIdentifierRequest3_template(template_sel other_value);
+ReadDataByIdentifierRequest3_template(const ReadDataByIdentifierRequest3& other_value);
+ReadDataByIdentifierRequest3_template(const OPTIONAL<ReadDataByIdentifierRequest3>& other_value);
+ReadDataByIdentifierRequest3_template(const ReadDataByIdentifierRequest3_template& other_value);
+~ReadDataByIdentifierRequest3_template();
+ReadDataByIdentifierRequest3_template& operator=(template_sel other_value);
+ReadDataByIdentifierRequest3_template& operator=(const ReadDataByIdentifierRequest3& other_value);
+ReadDataByIdentifierRequest3_template& operator=(const OPTIONAL<ReadDataByIdentifierRequest3>& other_value);
+ReadDataByIdentifierRequest3_template& operator=(const ReadDataByIdentifierRequest3_template& other_value);
+boolean match(const ReadDataByIdentifierRequest3& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ReadDataByIdentifierRequest3 valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ReadDataByIdentifierRequest3_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& identifier();
+const OCTETSTRING_template& identifier() const;
+int size_of() const;
+void log() const;
+void log_match(const ReadDataByIdentifierRequest3& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ReadDataByIdentifierRequest : public Base_Type {
+public:
+enum union_selection_type { UNBOUND_VALUE = 0, ALT_readDataByIdentifier1 = 1, ALT_readDataByIdentifier2 = 2, ALT_readDataByIdentifier3 = 3 };
+private:
+union_selection_type union_selection;
+union {
+ReadDataByIdentifierRequest1 *field_readDataByIdentifier1;
+ReadDataByIdentifierRequest2 *field_readDataByIdentifier2;
+ReadDataByIdentifierRequest3 *field_readDataByIdentifier3;
+};
+void copy_value(const ReadDataByIdentifierRequest& other_value);
+
+public:
+ReadDataByIdentifierRequest();
+ReadDataByIdentifierRequest(const ReadDataByIdentifierRequest& other_value);
+~ReadDataByIdentifierRequest();
+ReadDataByIdentifierRequest& operator=(const ReadDataByIdentifierRequest& other_value);
+boolean operator==(const ReadDataByIdentifierRequest& other_value) const;
+inline boolean operator!=(const ReadDataByIdentifierRequest& other_value) const { return !(*this == other_value); }
+ReadDataByIdentifierRequest1& readDataByIdentifier1();
+const ReadDataByIdentifierRequest1& readDataByIdentifier1() const;
+ReadDataByIdentifierRequest2& readDataByIdentifier2();
+const ReadDataByIdentifierRequest2& readDataByIdentifier2() const;
+ReadDataByIdentifierRequest3& readDataByIdentifier3();
+const ReadDataByIdentifierRequest3& readDataByIdentifier3() const;
+inline union_selection_type get_selection() const { return union_selection; }
+boolean ischosen(union_selection_type checked_selection) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ReadDataByIdentifierRequest_template : public Base_Template {
+union {
+struct {
+ReadDataByIdentifierRequest::union_selection_type union_selection;
+union {
+ReadDataByIdentifierRequest1_template *field_readDataByIdentifier1;
+ReadDataByIdentifierRequest2_template *field_readDataByIdentifier2;
+ReadDataByIdentifierRequest3_template *field_readDataByIdentifier3;
+};
+} single_value;
+struct {
+unsigned int n_values;
+ReadDataByIdentifierRequest_template *list_value;
+} value_list;
+};
+void copy_value(const ReadDataByIdentifierRequest& other_value);
+
+void copy_template(const ReadDataByIdentifierRequest_template& other_value);
+
+public:
+ReadDataByIdentifierRequest_template();
+ReadDataByIdentifierRequest_template(template_sel other_value);
+ReadDataByIdentifierRequest_template(const ReadDataByIdentifierRequest& other_value);
+ReadDataByIdentifierRequest_template(const OPTIONAL<ReadDataByIdentifierRequest>& other_value);
+ReadDataByIdentifierRequest_template(const ReadDataByIdentifierRequest_template& other_value);
+~ReadDataByIdentifierRequest_template();
+void clean_up();
+ReadDataByIdentifierRequest_template& operator=(template_sel other_value);
+ReadDataByIdentifierRequest_template& operator=(const ReadDataByIdentifierRequest& other_value);
+ReadDataByIdentifierRequest_template& operator=(const OPTIONAL<ReadDataByIdentifierRequest>& other_value);
+ReadDataByIdentifierRequest_template& operator=(const ReadDataByIdentifierRequest_template& other_value);
+boolean match(const ReadDataByIdentifierRequest& other_value, boolean legacy = FALSE) const;
+boolean is_value() const;ReadDataByIdentifierRequest valueof() const;
+ReadDataByIdentifierRequest_template& list_item(unsigned int list_index) const;
+void set_type(template_sel template_type, unsigned int list_length);
+ReadDataByIdentifierRequest1_template& readDataByIdentifier1();
+const ReadDataByIdentifierRequest1_template& readDataByIdentifier1() const;
+ReadDataByIdentifierRequest2_template& readDataByIdentifier2();
+const ReadDataByIdentifierRequest2_template& readDataByIdentifier2() const;
+ReadDataByIdentifierRequest3_template& readDataByIdentifier3();
+const ReadDataByIdentifierRequest3_template& readDataByIdentifier3() const;
+boolean ischosen(ReadDataByIdentifierRequest::union_selection_type checked_selection) const;
+void log() const;
+void log_match(const ReadDataByIdentifierRequest& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class ReadDataByIdentifierRequestSID : public Base_Type {
+  OCTETSTRING field_sid;
+  ReadDataByIdentifierRequest field_readDataByIdentifierRequest;
+public:
+  ReadDataByIdentifierRequestSID();
+  ReadDataByIdentifierRequestSID(const OCTETSTRING& par_sid,
+    const ReadDataByIdentifierRequest& par_readDataByIdentifierRequest);
+  ReadDataByIdentifierRequestSID(const ReadDataByIdentifierRequestSID& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ReadDataByIdentifierRequestSID& operator=(const ReadDataByIdentifierRequestSID& other_value);
+  boolean operator==(const ReadDataByIdentifierRequestSID& other_value) const;
+  inline boolean operator!=(const ReadDataByIdentifierRequestSID& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& sid()
+    {return field_sid;}
+  inline const OCTETSTRING& sid() const
+    {return field_sid;}
+  inline ReadDataByIdentifierRequest& readDataByIdentifierRequest()
+    {return field_readDataByIdentifierRequest;}
+  inline const ReadDataByIdentifierRequest& readDataByIdentifierRequest() const
+    {return field_readDataByIdentifierRequest;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ReadDataByIdentifierRequestSID_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ReadDataByIdentifierRequestSID_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ReadDataByIdentifierRequestSID& other_value);
+void copy_template(const ReadDataByIdentifierRequestSID_template& other_value);
+
+public:
+ReadDataByIdentifierRequestSID_template();
+ReadDataByIdentifierRequestSID_template(template_sel other_value);
+ReadDataByIdentifierRequestSID_template(const ReadDataByIdentifierRequestSID& other_value);
+ReadDataByIdentifierRequestSID_template(const OPTIONAL<ReadDataByIdentifierRequestSID>& other_value);
+ReadDataByIdentifierRequestSID_template(const ReadDataByIdentifierRequestSID_template& other_value);
+~ReadDataByIdentifierRequestSID_template();
+ReadDataByIdentifierRequestSID_template& operator=(template_sel other_value);
+ReadDataByIdentifierRequestSID_template& operator=(const ReadDataByIdentifierRequestSID& other_value);
+ReadDataByIdentifierRequestSID_template& operator=(const OPTIONAL<ReadDataByIdentifierRequestSID>& other_value);
+ReadDataByIdentifierRequestSID_template& operator=(const ReadDataByIdentifierRequestSID_template& other_value);
+boolean match(const ReadDataByIdentifierRequestSID& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ReadDataByIdentifierRequestSID valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ReadDataByIdentifierRequestSID_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& sid();
+const OCTETSTRING_template& sid() const;
+ReadDataByIdentifierRequest_template& readDataByIdentifierRequest();
+const ReadDataByIdentifierRequest_template& readDataByIdentifierRequest() const;
+int size_of() const;
+void log() const;
+void log_match(const ReadDataByIdentifierRequestSID& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ReadDataByIdentifierResponse1 : public Base_Type {
+  OCTETSTRING field_identifier;
+  OCTETSTRING field_readDataByIdentifierResponse;
+public:
+  ReadDataByIdentifierResponse1();
+  ReadDataByIdentifierResponse1(const OCTETSTRING& par_identifier,
+    const OCTETSTRING& par_readDataByIdentifierResponse);
+  ReadDataByIdentifierResponse1(const ReadDataByIdentifierResponse1& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ReadDataByIdentifierResponse1& operator=(const ReadDataByIdentifierResponse1& other_value);
+  boolean operator==(const ReadDataByIdentifierResponse1& other_value) const;
+  inline boolean operator!=(const ReadDataByIdentifierResponse1& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& identifier()
+    {return field_identifier;}
+  inline const OCTETSTRING& identifier() const
+    {return field_identifier;}
+  inline OCTETSTRING& readDataByIdentifierResponse()
+    {return field_readDataByIdentifierResponse;}
+  inline const OCTETSTRING& readDataByIdentifierResponse() const
+    {return field_readDataByIdentifierResponse;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ReadDataByIdentifierResponse1_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ReadDataByIdentifierResponse1_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ReadDataByIdentifierResponse1& other_value);
+void copy_template(const ReadDataByIdentifierResponse1_template& other_value);
+
+public:
+ReadDataByIdentifierResponse1_template();
+ReadDataByIdentifierResponse1_template(template_sel other_value);
+ReadDataByIdentifierResponse1_template(const ReadDataByIdentifierResponse1& other_value);
+ReadDataByIdentifierResponse1_template(const OPTIONAL<ReadDataByIdentifierResponse1>& other_value);
+ReadDataByIdentifierResponse1_template(const ReadDataByIdentifierResponse1_template& other_value);
+~ReadDataByIdentifierResponse1_template();
+ReadDataByIdentifierResponse1_template& operator=(template_sel other_value);
+ReadDataByIdentifierResponse1_template& operator=(const ReadDataByIdentifierResponse1& other_value);
+ReadDataByIdentifierResponse1_template& operator=(const OPTIONAL<ReadDataByIdentifierResponse1>& other_value);
+ReadDataByIdentifierResponse1_template& operator=(const ReadDataByIdentifierResponse1_template& other_value);
+boolean match(const ReadDataByIdentifierResponse1& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ReadDataByIdentifierResponse1 valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ReadDataByIdentifierResponse1_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& identifier();
+const OCTETSTRING_template& identifier() const;
+OCTETSTRING_template& readDataByIdentifierResponse();
+const OCTETSTRING_template& readDataByIdentifierResponse() const;
+int size_of() const;
+void log() const;
+void log_match(const ReadDataByIdentifierResponse1& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ReadDataByIdentifierResponse2 : public Base_Type {
+  OCTETSTRING field_identifier;
+  OCTETSTRING field_readDataByIdentifierResponse;
+public:
+  ReadDataByIdentifierResponse2();
+  ReadDataByIdentifierResponse2(const OCTETSTRING& par_identifier,
+    const OCTETSTRING& par_readDataByIdentifierResponse);
+  ReadDataByIdentifierResponse2(const ReadDataByIdentifierResponse2& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ReadDataByIdentifierResponse2& operator=(const ReadDataByIdentifierResponse2& other_value);
+  boolean operator==(const ReadDataByIdentifierResponse2& other_value) const;
+  inline boolean operator!=(const ReadDataByIdentifierResponse2& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& identifier()
+    {return field_identifier;}
+  inline const OCTETSTRING& identifier() const
+    {return field_identifier;}
+  inline OCTETSTRING& readDataByIdentifierResponse()
+    {return field_readDataByIdentifierResponse;}
+  inline const OCTETSTRING& readDataByIdentifierResponse() const
+    {return field_readDataByIdentifierResponse;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ReadDataByIdentifierResponse2_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ReadDataByIdentifierResponse2_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ReadDataByIdentifierResponse2& other_value);
+void copy_template(const ReadDataByIdentifierResponse2_template& other_value);
+
+public:
+ReadDataByIdentifierResponse2_template();
+ReadDataByIdentifierResponse2_template(template_sel other_value);
+ReadDataByIdentifierResponse2_template(const ReadDataByIdentifierResponse2& other_value);
+ReadDataByIdentifierResponse2_template(const OPTIONAL<ReadDataByIdentifierResponse2>& other_value);
+ReadDataByIdentifierResponse2_template(const ReadDataByIdentifierResponse2_template& other_value);
+~ReadDataByIdentifierResponse2_template();
+ReadDataByIdentifierResponse2_template& operator=(template_sel other_value);
+ReadDataByIdentifierResponse2_template& operator=(const ReadDataByIdentifierResponse2& other_value);
+ReadDataByIdentifierResponse2_template& operator=(const OPTIONAL<ReadDataByIdentifierResponse2>& other_value);
+ReadDataByIdentifierResponse2_template& operator=(const ReadDataByIdentifierResponse2_template& other_value);
+boolean match(const ReadDataByIdentifierResponse2& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ReadDataByIdentifierResponse2 valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ReadDataByIdentifierResponse2_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& identifier();
+const OCTETSTRING_template& identifier() const;
+OCTETSTRING_template& readDataByIdentifierResponse();
+const OCTETSTRING_template& readDataByIdentifierResponse() const;
+int size_of() const;
+void log() const;
+void log_match(const ReadDataByIdentifierResponse2& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ReadDataByIdentifierResponse3 : public Base_Type {
+  OCTETSTRING field_identifier;
+  OCTETSTRING field_readDataByIdentifierResponse;
+public:
+  ReadDataByIdentifierResponse3();
+  ReadDataByIdentifierResponse3(const OCTETSTRING& par_identifier,
+    const OCTETSTRING& par_readDataByIdentifierResponse);
+  ReadDataByIdentifierResponse3(const ReadDataByIdentifierResponse3& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ReadDataByIdentifierResponse3& operator=(const ReadDataByIdentifierResponse3& other_value);
+  boolean operator==(const ReadDataByIdentifierResponse3& other_value) const;
+  inline boolean operator!=(const ReadDataByIdentifierResponse3& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& identifier()
+    {return field_identifier;}
+  inline const OCTETSTRING& identifier() const
+    {return field_identifier;}
+  inline OCTETSTRING& readDataByIdentifierResponse()
+    {return field_readDataByIdentifierResponse;}
+  inline const OCTETSTRING& readDataByIdentifierResponse() const
+    {return field_readDataByIdentifierResponse;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ReadDataByIdentifierResponse3_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ReadDataByIdentifierResponse3_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ReadDataByIdentifierResponse3& other_value);
+void copy_template(const ReadDataByIdentifierResponse3_template& other_value);
+
+public:
+ReadDataByIdentifierResponse3_template();
+ReadDataByIdentifierResponse3_template(template_sel other_value);
+ReadDataByIdentifierResponse3_template(const ReadDataByIdentifierResponse3& other_value);
+ReadDataByIdentifierResponse3_template(const OPTIONAL<ReadDataByIdentifierResponse3>& other_value);
+ReadDataByIdentifierResponse3_template(const ReadDataByIdentifierResponse3_template& other_value);
+~ReadDataByIdentifierResponse3_template();
+ReadDataByIdentifierResponse3_template& operator=(template_sel other_value);
+ReadDataByIdentifierResponse3_template& operator=(const ReadDataByIdentifierResponse3& other_value);
+ReadDataByIdentifierResponse3_template& operator=(const OPTIONAL<ReadDataByIdentifierResponse3>& other_value);
+ReadDataByIdentifierResponse3_template& operator=(const ReadDataByIdentifierResponse3_template& other_value);
+boolean match(const ReadDataByIdentifierResponse3& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ReadDataByIdentifierResponse3 valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ReadDataByIdentifierResponse3_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& identifier();
+const OCTETSTRING_template& identifier() const;
+OCTETSTRING_template& readDataByIdentifierResponse();
+const OCTETSTRING_template& readDataByIdentifierResponse() const;
+int size_of() const;
+void log() const;
+void log_match(const ReadDataByIdentifierResponse3& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class ReadDataByIdentifierResponse : public Base_Type {
+public:
+enum union_selection_type { UNBOUND_VALUE = 0, ALT_readDataByIdentifier1 = 1, ALT_readDataByIdentifier2 = 2, ALT_readDataByIdentifier3 = 3 };
+private:
+union_selection_type union_selection;
+union {
+ReadDataByIdentifierResponse1 *field_readDataByIdentifier1;
+ReadDataByIdentifierResponse2 *field_readDataByIdentifier2;
+ReadDataByIdentifierResponse3 *field_readDataByIdentifier3;
+};
+void copy_value(const ReadDataByIdentifierResponse& other_value);
+
+public:
+ReadDataByIdentifierResponse();
+ReadDataByIdentifierResponse(const ReadDataByIdentifierResponse& other_value);
+~ReadDataByIdentifierResponse();
+ReadDataByIdentifierResponse& operator=(const ReadDataByIdentifierResponse& other_value);
+boolean operator==(const ReadDataByIdentifierResponse& other_value) const;
+inline boolean operator!=(const ReadDataByIdentifierResponse& other_value) const { return !(*this == other_value); }
+ReadDataByIdentifierResponse1& readDataByIdentifier1();
+const ReadDataByIdentifierResponse1& readDataByIdentifier1() const;
+ReadDataByIdentifierResponse2& readDataByIdentifier2();
+const ReadDataByIdentifierResponse2& readDataByIdentifier2() const;
+ReadDataByIdentifierResponse3& readDataByIdentifier3();
+const ReadDataByIdentifierResponse3& readDataByIdentifier3() const;
+inline union_selection_type get_selection() const { return union_selection; }
+boolean ischosen(union_selection_type checked_selection) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ReadDataByIdentifierResponse_template : public Base_Template {
+union {
+struct {
+ReadDataByIdentifierResponse::union_selection_type union_selection;
+union {
+ReadDataByIdentifierResponse1_template *field_readDataByIdentifier1;
+ReadDataByIdentifierResponse2_template *field_readDataByIdentifier2;
+ReadDataByIdentifierResponse3_template *field_readDataByIdentifier3;
+};
+} single_value;
+struct {
+unsigned int n_values;
+ReadDataByIdentifierResponse_template *list_value;
+} value_list;
+};
+void copy_value(const ReadDataByIdentifierResponse& other_value);
+
+void copy_template(const ReadDataByIdentifierResponse_template& other_value);
+
+public:
+ReadDataByIdentifierResponse_template();
+ReadDataByIdentifierResponse_template(template_sel other_value);
+ReadDataByIdentifierResponse_template(const ReadDataByIdentifierResponse& other_value);
+ReadDataByIdentifierResponse_template(const OPTIONAL<ReadDataByIdentifierResponse>& other_value);
+ReadDataByIdentifierResponse_template(const ReadDataByIdentifierResponse_template& other_value);
+~ReadDataByIdentifierResponse_template();
+void clean_up();
+ReadDataByIdentifierResponse_template& operator=(template_sel other_value);
+ReadDataByIdentifierResponse_template& operator=(const ReadDataByIdentifierResponse& other_value);
+ReadDataByIdentifierResponse_template& operator=(const OPTIONAL<ReadDataByIdentifierResponse>& other_value);
+ReadDataByIdentifierResponse_template& operator=(const ReadDataByIdentifierResponse_template& other_value);
+boolean match(const ReadDataByIdentifierResponse& other_value, boolean legacy = FALSE) const;
+boolean is_value() const;ReadDataByIdentifierResponse valueof() const;
+ReadDataByIdentifierResponse_template& list_item(unsigned int list_index) const;
+void set_type(template_sel template_type, unsigned int list_length);
+ReadDataByIdentifierResponse1_template& readDataByIdentifier1();
+const ReadDataByIdentifierResponse1_template& readDataByIdentifier1() const;
+ReadDataByIdentifierResponse2_template& readDataByIdentifier2();
+const ReadDataByIdentifierResponse2_template& readDataByIdentifier2() const;
+ReadDataByIdentifierResponse3_template& readDataByIdentifier3();
+const ReadDataByIdentifierResponse3_template& readDataByIdentifier3() const;
+boolean ischosen(ReadDataByIdentifierResponse::union_selection_type checked_selection) const;
+void log() const;
+void log_match(const ReadDataByIdentifierResponse& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class ReadDataByIdentifierResponseSID : public Base_Type {
+  OCTETSTRING field_sid;
+  ReadDataByIdentifierResponse field_readDataByIdentifierResponse;
+public:
+  ReadDataByIdentifierResponseSID();
+  ReadDataByIdentifierResponseSID(const OCTETSTRING& par_sid,
+    const ReadDataByIdentifierResponse& par_readDataByIdentifierResponse);
+  ReadDataByIdentifierResponseSID(const ReadDataByIdentifierResponseSID& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  ReadDataByIdentifierResponseSID& operator=(const ReadDataByIdentifierResponseSID& other_value);
+  boolean operator==(const ReadDataByIdentifierResponseSID& other_value) const;
+  inline boolean operator!=(const ReadDataByIdentifierResponseSID& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& sid()
+    {return field_sid;}
+  inline const OCTETSTRING& sid() const
+    {return field_sid;}
+  inline ReadDataByIdentifierResponse& readDataByIdentifierResponse()
+    {return field_readDataByIdentifierResponse;}
+  inline const ReadDataByIdentifierResponse& readDataByIdentifierResponse() const
+    {return field_readDataByIdentifierResponse;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class ReadDataByIdentifierResponseSID_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+ReadDataByIdentifierResponseSID_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const ReadDataByIdentifierResponseSID& other_value);
+void copy_template(const ReadDataByIdentifierResponseSID_template& other_value);
+
+public:
+ReadDataByIdentifierResponseSID_template();
+ReadDataByIdentifierResponseSID_template(template_sel other_value);
+ReadDataByIdentifierResponseSID_template(const ReadDataByIdentifierResponseSID& other_value);
+ReadDataByIdentifierResponseSID_template(const OPTIONAL<ReadDataByIdentifierResponseSID>& other_value);
+ReadDataByIdentifierResponseSID_template(const ReadDataByIdentifierResponseSID_template& other_value);
+~ReadDataByIdentifierResponseSID_template();
+ReadDataByIdentifierResponseSID_template& operator=(template_sel other_value);
+ReadDataByIdentifierResponseSID_template& operator=(const ReadDataByIdentifierResponseSID& other_value);
+ReadDataByIdentifierResponseSID_template& operator=(const OPTIONAL<ReadDataByIdentifierResponseSID>& other_value);
+ReadDataByIdentifierResponseSID_template& operator=(const ReadDataByIdentifierResponseSID_template& other_value);
+boolean match(const ReadDataByIdentifierResponseSID& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+ReadDataByIdentifierResponseSID valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+ReadDataByIdentifierResponseSID_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& sid();
+const OCTETSTRING_template& sid() const;
+ReadDataByIdentifierResponse_template& readDataByIdentifierResponse();
+const ReadDataByIdentifierResponse_template& readDataByIdentifierResponse() const;
+int size_of() const;
+void log() const;
+void log_match(const ReadDataByIdentifierResponseSID& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class WriteDataByIdentifierRequest1 : public Base_Type {
+  OCTETSTRING field_identifier;
+  OCTETSTRING field_dataRecord;
+public:
+  WriteDataByIdentifierRequest1();
+  WriteDataByIdentifierRequest1(const OCTETSTRING& par_identifier,
+    const OCTETSTRING& par_dataRecord);
+  WriteDataByIdentifierRequest1(const WriteDataByIdentifierRequest1& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  WriteDataByIdentifierRequest1& operator=(const WriteDataByIdentifierRequest1& other_value);
+  boolean operator==(const WriteDataByIdentifierRequest1& other_value) const;
+  inline boolean operator!=(const WriteDataByIdentifierRequest1& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& identifier()
+    {return field_identifier;}
+  inline const OCTETSTRING& identifier() const
+    {return field_identifier;}
+  inline OCTETSTRING& dataRecord()
+    {return field_dataRecord;}
+  inline const OCTETSTRING& dataRecord() const
+    {return field_dataRecord;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class WriteDataByIdentifierRequest1_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+WriteDataByIdentifierRequest1_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const WriteDataByIdentifierRequest1& other_value);
+void copy_template(const WriteDataByIdentifierRequest1_template& other_value);
+
+public:
+WriteDataByIdentifierRequest1_template();
+WriteDataByIdentifierRequest1_template(template_sel other_value);
+WriteDataByIdentifierRequest1_template(const WriteDataByIdentifierRequest1& other_value);
+WriteDataByIdentifierRequest1_template(const OPTIONAL<WriteDataByIdentifierRequest1>& other_value);
+WriteDataByIdentifierRequest1_template(const WriteDataByIdentifierRequest1_template& other_value);
+~WriteDataByIdentifierRequest1_template();
+WriteDataByIdentifierRequest1_template& operator=(template_sel other_value);
+WriteDataByIdentifierRequest1_template& operator=(const WriteDataByIdentifierRequest1& other_value);
+WriteDataByIdentifierRequest1_template& operator=(const OPTIONAL<WriteDataByIdentifierRequest1>& other_value);
+WriteDataByIdentifierRequest1_template& operator=(const WriteDataByIdentifierRequest1_template& other_value);
+boolean match(const WriteDataByIdentifierRequest1& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+WriteDataByIdentifierRequest1 valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+WriteDataByIdentifierRequest1_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& identifier();
+const OCTETSTRING_template& identifier() const;
+OCTETSTRING_template& dataRecord();
+const OCTETSTRING_template& dataRecord() const;
+int size_of() const;
+void log() const;
+void log_match(const WriteDataByIdentifierRequest1& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class WriteDataByIdentifierRequest2 : public Base_Type {
+  OCTETSTRING field_identifier;
+  OCTETSTRING field_dataRecord;
+public:
+  WriteDataByIdentifierRequest2();
+  WriteDataByIdentifierRequest2(const OCTETSTRING& par_identifier,
+    const OCTETSTRING& par_dataRecord);
+  WriteDataByIdentifierRequest2(const WriteDataByIdentifierRequest2& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  WriteDataByIdentifierRequest2& operator=(const WriteDataByIdentifierRequest2& other_value);
+  boolean operator==(const WriteDataByIdentifierRequest2& other_value) const;
+  inline boolean operator!=(const WriteDataByIdentifierRequest2& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& identifier()
+    {return field_identifier;}
+  inline const OCTETSTRING& identifier() const
+    {return field_identifier;}
+  inline OCTETSTRING& dataRecord()
+    {return field_dataRecord;}
+  inline const OCTETSTRING& dataRecord() const
+    {return field_dataRecord;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class WriteDataByIdentifierRequest2_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+WriteDataByIdentifierRequest2_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const WriteDataByIdentifierRequest2& other_value);
+void copy_template(const WriteDataByIdentifierRequest2_template& other_value);
+
+public:
+WriteDataByIdentifierRequest2_template();
+WriteDataByIdentifierRequest2_template(template_sel other_value);
+WriteDataByIdentifierRequest2_template(const WriteDataByIdentifierRequest2& other_value);
+WriteDataByIdentifierRequest2_template(const OPTIONAL<WriteDataByIdentifierRequest2>& other_value);
+WriteDataByIdentifierRequest2_template(const WriteDataByIdentifierRequest2_template& other_value);
+~WriteDataByIdentifierRequest2_template();
+WriteDataByIdentifierRequest2_template& operator=(template_sel other_value);
+WriteDataByIdentifierRequest2_template& operator=(const WriteDataByIdentifierRequest2& other_value);
+WriteDataByIdentifierRequest2_template& operator=(const OPTIONAL<WriteDataByIdentifierRequest2>& other_value);
+WriteDataByIdentifierRequest2_template& operator=(const WriteDataByIdentifierRequest2_template& other_value);
+boolean match(const WriteDataByIdentifierRequest2& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+WriteDataByIdentifierRequest2 valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+WriteDataByIdentifierRequest2_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& identifier();
+const OCTETSTRING_template& identifier() const;
+OCTETSTRING_template& dataRecord();
+const OCTETSTRING_template& dataRecord() const;
+int size_of() const;
+void log() const;
+void log_match(const WriteDataByIdentifierRequest2& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class WriteDataByIdentifierRequest3 : public Base_Type {
+  OCTETSTRING field_identifier;
+  OCTETSTRING field_dataRecord;
+public:
+  WriteDataByIdentifierRequest3();
+  WriteDataByIdentifierRequest3(const OCTETSTRING& par_identifier,
+    const OCTETSTRING& par_dataRecord);
+  WriteDataByIdentifierRequest3(const WriteDataByIdentifierRequest3& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  WriteDataByIdentifierRequest3& operator=(const WriteDataByIdentifierRequest3& other_value);
+  boolean operator==(const WriteDataByIdentifierRequest3& other_value) const;
+  inline boolean operator!=(const WriteDataByIdentifierRequest3& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& identifier()
+    {return field_identifier;}
+  inline const OCTETSTRING& identifier() const
+    {return field_identifier;}
+  inline OCTETSTRING& dataRecord()
+    {return field_dataRecord;}
+  inline const OCTETSTRING& dataRecord() const
+    {return field_dataRecord;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class WriteDataByIdentifierRequest3_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+WriteDataByIdentifierRequest3_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const WriteDataByIdentifierRequest3& other_value);
+void copy_template(const WriteDataByIdentifierRequest3_template& other_value);
+
+public:
+WriteDataByIdentifierRequest3_template();
+WriteDataByIdentifierRequest3_template(template_sel other_value);
+WriteDataByIdentifierRequest3_template(const WriteDataByIdentifierRequest3& other_value);
+WriteDataByIdentifierRequest3_template(const OPTIONAL<WriteDataByIdentifierRequest3>& other_value);
+WriteDataByIdentifierRequest3_template(const WriteDataByIdentifierRequest3_template& other_value);
+~WriteDataByIdentifierRequest3_template();
+WriteDataByIdentifierRequest3_template& operator=(template_sel other_value);
+WriteDataByIdentifierRequest3_template& operator=(const WriteDataByIdentifierRequest3& other_value);
+WriteDataByIdentifierRequest3_template& operator=(const OPTIONAL<WriteDataByIdentifierRequest3>& other_value);
+WriteDataByIdentifierRequest3_template& operator=(const WriteDataByIdentifierRequest3_template& other_value);
+boolean match(const WriteDataByIdentifierRequest3& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+WriteDataByIdentifierRequest3 valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+WriteDataByIdentifierRequest3_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& identifier();
+const OCTETSTRING_template& identifier() const;
+OCTETSTRING_template& dataRecord();
+const OCTETSTRING_template& dataRecord() const;
+int size_of() const;
+void log() const;
+void log_match(const WriteDataByIdentifierRequest3& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class WriteDataByIdentifierRequest : public Base_Type {
+public:
+enum union_selection_type { UNBOUND_VALUE = 0, ALT_writeDataByIdentifier1 = 1, ALT_writeDataByIdentifier2 = 2, ALT_writeDataByIdentifier3 = 3 };
+private:
+union_selection_type union_selection;
+union {
+WriteDataByIdentifierRequest1 *field_writeDataByIdentifier1;
+WriteDataByIdentifierRequest2 *field_writeDataByIdentifier2;
+WriteDataByIdentifierRequest3 *field_writeDataByIdentifier3;
+};
+void copy_value(const WriteDataByIdentifierRequest& other_value);
+
+public:
+WriteDataByIdentifierRequest();
+WriteDataByIdentifierRequest(const WriteDataByIdentifierRequest& other_value);
+~WriteDataByIdentifierRequest();
+WriteDataByIdentifierRequest& operator=(const WriteDataByIdentifierRequest& other_value);
+boolean operator==(const WriteDataByIdentifierRequest& other_value) const;
+inline boolean operator!=(const WriteDataByIdentifierRequest& other_value) const { return !(*this == other_value); }
+WriteDataByIdentifierRequest1& writeDataByIdentifier1();
+const WriteDataByIdentifierRequest1& writeDataByIdentifier1() const;
+WriteDataByIdentifierRequest2& writeDataByIdentifier2();
+const WriteDataByIdentifierRequest2& writeDataByIdentifier2() const;
+WriteDataByIdentifierRequest3& writeDataByIdentifier3();
+const WriteDataByIdentifierRequest3& writeDataByIdentifier3() const;
+inline union_selection_type get_selection() const { return union_selection; }
+boolean ischosen(union_selection_type checked_selection) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class WriteDataByIdentifierRequest_template : public Base_Template {
+union {
+struct {
+WriteDataByIdentifierRequest::union_selection_type union_selection;
+union {
+WriteDataByIdentifierRequest1_template *field_writeDataByIdentifier1;
+WriteDataByIdentifierRequest2_template *field_writeDataByIdentifier2;
+WriteDataByIdentifierRequest3_template *field_writeDataByIdentifier3;
+};
+} single_value;
+struct {
+unsigned int n_values;
+WriteDataByIdentifierRequest_template *list_value;
+} value_list;
+};
+void copy_value(const WriteDataByIdentifierRequest& other_value);
+
+void copy_template(const WriteDataByIdentifierRequest_template& other_value);
+
+public:
+WriteDataByIdentifierRequest_template();
+WriteDataByIdentifierRequest_template(template_sel other_value);
+WriteDataByIdentifierRequest_template(const WriteDataByIdentifierRequest& other_value);
+WriteDataByIdentifierRequest_template(const OPTIONAL<WriteDataByIdentifierRequest>& other_value);
+WriteDataByIdentifierRequest_template(const WriteDataByIdentifierRequest_template& other_value);
+~WriteDataByIdentifierRequest_template();
+void clean_up();
+WriteDataByIdentifierRequest_template& operator=(template_sel other_value);
+WriteDataByIdentifierRequest_template& operator=(const WriteDataByIdentifierRequest& other_value);
+WriteDataByIdentifierRequest_template& operator=(const OPTIONAL<WriteDataByIdentifierRequest>& other_value);
+WriteDataByIdentifierRequest_template& operator=(const WriteDataByIdentifierRequest_template& other_value);
+boolean match(const WriteDataByIdentifierRequest& other_value, boolean legacy = FALSE) const;
+boolean is_value() const;WriteDataByIdentifierRequest valueof() const;
+WriteDataByIdentifierRequest_template& list_item(unsigned int list_index) const;
+void set_type(template_sel template_type, unsigned int list_length);
+WriteDataByIdentifierRequest1_template& writeDataByIdentifier1();
+const WriteDataByIdentifierRequest1_template& writeDataByIdentifier1() const;
+WriteDataByIdentifierRequest2_template& writeDataByIdentifier2();
+const WriteDataByIdentifierRequest2_template& writeDataByIdentifier2() const;
+WriteDataByIdentifierRequest3_template& writeDataByIdentifier3();
+const WriteDataByIdentifierRequest3_template& writeDataByIdentifier3() const;
+boolean ischosen(WriteDataByIdentifierRequest::union_selection_type checked_selection) const;
+void log() const;
+void log_match(const WriteDataByIdentifierRequest& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class WriteDataByIdentifierRequestSID : public Base_Type {
+  OCTETSTRING field_sid;
+  WriteDataByIdentifierRequest field_writeDataByIdentifierRequest;
+public:
+  WriteDataByIdentifierRequestSID();
+  WriteDataByIdentifierRequestSID(const OCTETSTRING& par_sid,
+    const WriteDataByIdentifierRequest& par_writeDataByIdentifierRequest);
+  WriteDataByIdentifierRequestSID(const WriteDataByIdentifierRequestSID& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  WriteDataByIdentifierRequestSID& operator=(const WriteDataByIdentifierRequestSID& other_value);
+  boolean operator==(const WriteDataByIdentifierRequestSID& other_value) const;
+  inline boolean operator!=(const WriteDataByIdentifierRequestSID& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& sid()
+    {return field_sid;}
+  inline const OCTETSTRING& sid() const
+    {return field_sid;}
+  inline WriteDataByIdentifierRequest& writeDataByIdentifierRequest()
+    {return field_writeDataByIdentifierRequest;}
+  inline const WriteDataByIdentifierRequest& writeDataByIdentifierRequest() const
+    {return field_writeDataByIdentifierRequest;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class WriteDataByIdentifierRequestSID_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+WriteDataByIdentifierRequestSID_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const WriteDataByIdentifierRequestSID& other_value);
+void copy_template(const WriteDataByIdentifierRequestSID_template& other_value);
+
+public:
+WriteDataByIdentifierRequestSID_template();
+WriteDataByIdentifierRequestSID_template(template_sel other_value);
+WriteDataByIdentifierRequestSID_template(const WriteDataByIdentifierRequestSID& other_value);
+WriteDataByIdentifierRequestSID_template(const OPTIONAL<WriteDataByIdentifierRequestSID>& other_value);
+WriteDataByIdentifierRequestSID_template(const WriteDataByIdentifierRequestSID_template& other_value);
+~WriteDataByIdentifierRequestSID_template();
+WriteDataByIdentifierRequestSID_template& operator=(template_sel other_value);
+WriteDataByIdentifierRequestSID_template& operator=(const WriteDataByIdentifierRequestSID& other_value);
+WriteDataByIdentifierRequestSID_template& operator=(const OPTIONAL<WriteDataByIdentifierRequestSID>& other_value);
+WriteDataByIdentifierRequestSID_template& operator=(const WriteDataByIdentifierRequestSID_template& other_value);
+boolean match(const WriteDataByIdentifierRequestSID& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+WriteDataByIdentifierRequestSID valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+WriteDataByIdentifierRequestSID_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& sid();
+const OCTETSTRING_template& sid() const;
+WriteDataByIdentifierRequest_template& writeDataByIdentifierRequest();
+const WriteDataByIdentifierRequest_template& writeDataByIdentifierRequest() const;
+int size_of() const;
+void log() const;
+void log_match(const WriteDataByIdentifierRequestSID& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class WriteDataByIdentifierResponse1 : public Base_Type {
+  OCTETSTRING field_identifier;
+public:
+  WriteDataByIdentifierResponse1();
+  WriteDataByIdentifierResponse1(const OCTETSTRING& par_identifier);
+  WriteDataByIdentifierResponse1(const WriteDataByIdentifierResponse1& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  WriteDataByIdentifierResponse1& operator=(const WriteDataByIdentifierResponse1& other_value);
+  boolean operator==(const WriteDataByIdentifierResponse1& other_value) const;
+  inline boolean operator!=(const WriteDataByIdentifierResponse1& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& identifier()
+    {return field_identifier;}
+  inline const OCTETSTRING& identifier() const
+    {return field_identifier;}
+  inline int size_of() const
+    {return 1;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class WriteDataByIdentifierResponse1_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+WriteDataByIdentifierResponse1_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const WriteDataByIdentifierResponse1& other_value);
+void copy_template(const WriteDataByIdentifierResponse1_template& other_value);
+
+public:
+WriteDataByIdentifierResponse1_template();
+WriteDataByIdentifierResponse1_template(template_sel other_value);
+WriteDataByIdentifierResponse1_template(const WriteDataByIdentifierResponse1& other_value);
+WriteDataByIdentifierResponse1_template(const OPTIONAL<WriteDataByIdentifierResponse1>& other_value);
+WriteDataByIdentifierResponse1_template(const WriteDataByIdentifierResponse1_template& other_value);
+~WriteDataByIdentifierResponse1_template();
+WriteDataByIdentifierResponse1_template& operator=(template_sel other_value);
+WriteDataByIdentifierResponse1_template& operator=(const WriteDataByIdentifierResponse1& other_value);
+WriteDataByIdentifierResponse1_template& operator=(const OPTIONAL<WriteDataByIdentifierResponse1>& other_value);
+WriteDataByIdentifierResponse1_template& operator=(const WriteDataByIdentifierResponse1_template& other_value);
+boolean match(const WriteDataByIdentifierResponse1& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+WriteDataByIdentifierResponse1 valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+WriteDataByIdentifierResponse1_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& identifier();
+const OCTETSTRING_template& identifier() const;
+int size_of() const;
+void log() const;
+void log_match(const WriteDataByIdentifierResponse1& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class WriteDataByIdentifierResponse2 : public Base_Type {
+  OCTETSTRING field_identifier;
+public:
+  WriteDataByIdentifierResponse2();
+  WriteDataByIdentifierResponse2(const OCTETSTRING& par_identifier);
+  WriteDataByIdentifierResponse2(const WriteDataByIdentifierResponse2& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  WriteDataByIdentifierResponse2& operator=(const WriteDataByIdentifierResponse2& other_value);
+  boolean operator==(const WriteDataByIdentifierResponse2& other_value) const;
+  inline boolean operator!=(const WriteDataByIdentifierResponse2& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& identifier()
+    {return field_identifier;}
+  inline const OCTETSTRING& identifier() const
+    {return field_identifier;}
+  inline int size_of() const
+    {return 1;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class WriteDataByIdentifierResponse2_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+WriteDataByIdentifierResponse2_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const WriteDataByIdentifierResponse2& other_value);
+void copy_template(const WriteDataByIdentifierResponse2_template& other_value);
+
+public:
+WriteDataByIdentifierResponse2_template();
+WriteDataByIdentifierResponse2_template(template_sel other_value);
+WriteDataByIdentifierResponse2_template(const WriteDataByIdentifierResponse2& other_value);
+WriteDataByIdentifierResponse2_template(const OPTIONAL<WriteDataByIdentifierResponse2>& other_value);
+WriteDataByIdentifierResponse2_template(const WriteDataByIdentifierResponse2_template& other_value);
+~WriteDataByIdentifierResponse2_template();
+WriteDataByIdentifierResponse2_template& operator=(template_sel other_value);
+WriteDataByIdentifierResponse2_template& operator=(const WriteDataByIdentifierResponse2& other_value);
+WriteDataByIdentifierResponse2_template& operator=(const OPTIONAL<WriteDataByIdentifierResponse2>& other_value);
+WriteDataByIdentifierResponse2_template& operator=(const WriteDataByIdentifierResponse2_template& other_value);
+boolean match(const WriteDataByIdentifierResponse2& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+WriteDataByIdentifierResponse2 valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+WriteDataByIdentifierResponse2_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& identifier();
+const OCTETSTRING_template& identifier() const;
+int size_of() const;
+void log() const;
+void log_match(const WriteDataByIdentifierResponse2& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class WriteDataByIdentifierResponse3 : public Base_Type {
+  OCTETSTRING field_identifier;
+public:
+  WriteDataByIdentifierResponse3();
+  WriteDataByIdentifierResponse3(const OCTETSTRING& par_identifier);
+  WriteDataByIdentifierResponse3(const WriteDataByIdentifierResponse3& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  WriteDataByIdentifierResponse3& operator=(const WriteDataByIdentifierResponse3& other_value);
+  boolean operator==(const WriteDataByIdentifierResponse3& other_value) const;
+  inline boolean operator!=(const WriteDataByIdentifierResponse3& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& identifier()
+    {return field_identifier;}
+  inline const OCTETSTRING& identifier() const
+    {return field_identifier;}
+  inline int size_of() const
+    {return 1;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class WriteDataByIdentifierResponse3_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+WriteDataByIdentifierResponse3_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const WriteDataByIdentifierResponse3& other_value);
+void copy_template(const WriteDataByIdentifierResponse3_template& other_value);
+
+public:
+WriteDataByIdentifierResponse3_template();
+WriteDataByIdentifierResponse3_template(template_sel other_value);
+WriteDataByIdentifierResponse3_template(const WriteDataByIdentifierResponse3& other_value);
+WriteDataByIdentifierResponse3_template(const OPTIONAL<WriteDataByIdentifierResponse3>& other_value);
+WriteDataByIdentifierResponse3_template(const WriteDataByIdentifierResponse3_template& other_value);
+~WriteDataByIdentifierResponse3_template();
+WriteDataByIdentifierResponse3_template& operator=(template_sel other_value);
+WriteDataByIdentifierResponse3_template& operator=(const WriteDataByIdentifierResponse3& other_value);
+WriteDataByIdentifierResponse3_template& operator=(const OPTIONAL<WriteDataByIdentifierResponse3>& other_value);
+WriteDataByIdentifierResponse3_template& operator=(const WriteDataByIdentifierResponse3_template& other_value);
+boolean match(const WriteDataByIdentifierResponse3& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+WriteDataByIdentifierResponse3 valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+WriteDataByIdentifierResponse3_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& identifier();
+const OCTETSTRING_template& identifier() const;
+int size_of() const;
+void log() const;
+void log_match(const WriteDataByIdentifierResponse3& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class WriteDataByIdentifierResponse : public Base_Type {
+public:
+enum union_selection_type { UNBOUND_VALUE = 0, ALT_writeDataByIdentifier1 = 1, ALT_writeDataByIdentifier2 = 2, ALT_writeDataByIdentifier3 = 3 };
+private:
+union_selection_type union_selection;
+union {
+WriteDataByIdentifierResponse1 *field_writeDataByIdentifier1;
+WriteDataByIdentifierResponse2 *field_writeDataByIdentifier2;
+WriteDataByIdentifierResponse3 *field_writeDataByIdentifier3;
+};
+void copy_value(const WriteDataByIdentifierResponse& other_value);
+
+public:
+WriteDataByIdentifierResponse();
+WriteDataByIdentifierResponse(const WriteDataByIdentifierResponse& other_value);
+~WriteDataByIdentifierResponse();
+WriteDataByIdentifierResponse& operator=(const WriteDataByIdentifierResponse& other_value);
+boolean operator==(const WriteDataByIdentifierResponse& other_value) const;
+inline boolean operator!=(const WriteDataByIdentifierResponse& other_value) const { return !(*this == other_value); }
+WriteDataByIdentifierResponse1& writeDataByIdentifier1();
+const WriteDataByIdentifierResponse1& writeDataByIdentifier1() const;
+WriteDataByIdentifierResponse2& writeDataByIdentifier2();
+const WriteDataByIdentifierResponse2& writeDataByIdentifier2() const;
+WriteDataByIdentifierResponse3& writeDataByIdentifier3();
+const WriteDataByIdentifierResponse3& writeDataByIdentifier3() const;
+inline union_selection_type get_selection() const { return union_selection; }
+boolean ischosen(union_selection_type checked_selection) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class WriteDataByIdentifierResponse_template : public Base_Template {
+union {
+struct {
+WriteDataByIdentifierResponse::union_selection_type union_selection;
+union {
+WriteDataByIdentifierResponse1_template *field_writeDataByIdentifier1;
+WriteDataByIdentifierResponse2_template *field_writeDataByIdentifier2;
+WriteDataByIdentifierResponse3_template *field_writeDataByIdentifier3;
+};
+} single_value;
+struct {
+unsigned int n_values;
+WriteDataByIdentifierResponse_template *list_value;
+} value_list;
+};
+void copy_value(const WriteDataByIdentifierResponse& other_value);
+
+void copy_template(const WriteDataByIdentifierResponse_template& other_value);
+
+public:
+WriteDataByIdentifierResponse_template();
+WriteDataByIdentifierResponse_template(template_sel other_value);
+WriteDataByIdentifierResponse_template(const WriteDataByIdentifierResponse& other_value);
+WriteDataByIdentifierResponse_template(const OPTIONAL<WriteDataByIdentifierResponse>& other_value);
+WriteDataByIdentifierResponse_template(const WriteDataByIdentifierResponse_template& other_value);
+~WriteDataByIdentifierResponse_template();
+void clean_up();
+WriteDataByIdentifierResponse_template& operator=(template_sel other_value);
+WriteDataByIdentifierResponse_template& operator=(const WriteDataByIdentifierResponse& other_value);
+WriteDataByIdentifierResponse_template& operator=(const OPTIONAL<WriteDataByIdentifierResponse>& other_value);
+WriteDataByIdentifierResponse_template& operator=(const WriteDataByIdentifierResponse_template& other_value);
+boolean match(const WriteDataByIdentifierResponse& other_value, boolean legacy = FALSE) const;
+boolean is_value() const;WriteDataByIdentifierResponse valueof() const;
+WriteDataByIdentifierResponse_template& list_item(unsigned int list_index) const;
+void set_type(template_sel template_type, unsigned int list_length);
+WriteDataByIdentifierResponse1_template& writeDataByIdentifier1();
+const WriteDataByIdentifierResponse1_template& writeDataByIdentifier1() const;
+WriteDataByIdentifierResponse2_template& writeDataByIdentifier2();
+const WriteDataByIdentifierResponse2_template& writeDataByIdentifier2() const;
+WriteDataByIdentifierResponse3_template& writeDataByIdentifier3();
+const WriteDataByIdentifierResponse3_template& writeDataByIdentifier3() const;
+boolean ischosen(WriteDataByIdentifierResponse::union_selection_type checked_selection) const;
+void log() const;
+void log_match(const WriteDataByIdentifierResponse& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class WriteDataByIdentifierResponseSID : public Base_Type {
+  OCTETSTRING field_sid;
+  WriteDataByIdentifierResponse field_writeDataByIdentifierResponse;
+public:
+  WriteDataByIdentifierResponseSID();
+  WriteDataByIdentifierResponseSID(const OCTETSTRING& par_sid,
+    const WriteDataByIdentifierResponse& par_writeDataByIdentifierResponse);
+  WriteDataByIdentifierResponseSID(const WriteDataByIdentifierResponseSID& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  WriteDataByIdentifierResponseSID& operator=(const WriteDataByIdentifierResponseSID& other_value);
+  boolean operator==(const WriteDataByIdentifierResponseSID& other_value) const;
+  inline boolean operator!=(const WriteDataByIdentifierResponseSID& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& sid()
+    {return field_sid;}
+  inline const OCTETSTRING& sid() const
+    {return field_sid;}
+  inline WriteDataByIdentifierResponse& writeDataByIdentifierResponse()
+    {return field_writeDataByIdentifierResponse;}
+  inline const WriteDataByIdentifierResponse& writeDataByIdentifierResponse() const
+    {return field_writeDataByIdentifierResponse;}
+  inline int size_of() const
+    {return 2;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class WriteDataByIdentifierResponseSID_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+WriteDataByIdentifierResponseSID_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const WriteDataByIdentifierResponseSID& other_value);
+void copy_template(const WriteDataByIdentifierResponseSID_template& other_value);
+
+public:
+WriteDataByIdentifierResponseSID_template();
+WriteDataByIdentifierResponseSID_template(template_sel other_value);
+WriteDataByIdentifierResponseSID_template(const WriteDataByIdentifierResponseSID& other_value);
+WriteDataByIdentifierResponseSID_template(const OPTIONAL<WriteDataByIdentifierResponseSID>& other_value);
+WriteDataByIdentifierResponseSID_template(const WriteDataByIdentifierResponseSID_template& other_value);
+~WriteDataByIdentifierResponseSID_template();
+WriteDataByIdentifierResponseSID_template& operator=(template_sel other_value);
+WriteDataByIdentifierResponseSID_template& operator=(const WriteDataByIdentifierResponseSID& other_value);
+WriteDataByIdentifierResponseSID_template& operator=(const OPTIONAL<WriteDataByIdentifierResponseSID>& other_value);
+WriteDataByIdentifierResponseSID_template& operator=(const WriteDataByIdentifierResponseSID_template& other_value);
+boolean match(const WriteDataByIdentifierResponseSID& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+WriteDataByIdentifierResponseSID valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+WriteDataByIdentifierResponseSID_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& sid();
+const OCTETSTRING_template& sid() const;
+WriteDataByIdentifierResponse_template& writeDataByIdentifierResponse();
+const WriteDataByIdentifierResponse_template& writeDataByIdentifierResponse() const;
+int size_of() const;
+void log() const;
+void log_match(const WriteDataByIdentifierResponseSID& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class e__RequestSID : public Base_Type { // enum
+friend class e__RequestSID_template;
+public:
+enum enum_type { diagnosticSessionControl = 16, ecuReset = 17, clearDiagnosticInformation = 20, readDTCInformation = 25, readDataByIdentifier = 34, readMemoryByAddress = 35, readScalingDataByIdentifier = 36, securityAccess = 39, communicationControl = 40, readDataByPeriodicIdentifier = 42, dynamicallyDefineDataIdentifier = 44, writeDataByIdentifier = 46, inputOutputControlByIdentifier = 47, routineControl = 49, requestDownload = 52, requestUpload = 53, transferData = 54, requestTransferExit = 55, requestFileTransfer = 56, writeMemoryByAddress = 61, testerPresent = 62, accessTimingParameter = 131, securedDataTransmission = 132, controlDTCSetting = 133, responseOnEvent = 134, linkControl = 135, UNKNOWN_VALUE = 0, UNBOUND_VALUE = 1 };
+private:
+enum_type enum_value;
+
+public:
+e__RequestSID();
+e__RequestSID(int other_value);
+e__RequestSID(enum_type other_value);
+e__RequestSID(const e__RequestSID& other_value);
+
+e__RequestSID& operator=(int other_value);
+e__RequestSID& operator=(enum_type other_value);
+e__RequestSID& operator=(const e__RequestSID& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const e__RequestSID& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const e__RequestSID& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const e__RequestSID& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const e__RequestSID& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const e__RequestSID& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const e__RequestSID& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const e__RequestSID& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class e__RequestSID_template : public Base_Template {
+union {
+e__RequestSID::enum_type single_value;
+struct {
+unsigned int n_values;
+e__RequestSID_template *list_value;
+} value_list;
+};
+
+void copy_template(const e__RequestSID_template& other_value);
+
+public:
+e__RequestSID_template();
+e__RequestSID_template(template_sel other_value);
+e__RequestSID_template(int other_value);
+e__RequestSID_template(e__RequestSID::enum_type other_value);
+e__RequestSID_template(const e__RequestSID& other_value);
+e__RequestSID_template(const OPTIONAL<e__RequestSID>& other_value);
+e__RequestSID_template(const e__RequestSID_template& other_value);
+~e__RequestSID_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+e__RequestSID_template& operator=(template_sel other_value);
+e__RequestSID_template& operator=(int other_value);
+e__RequestSID_template& operator=(e__RequestSID::enum_type other_value);
+e__RequestSID_template& operator=(const e__RequestSID& other_value);
+e__RequestSID_template& operator=(const OPTIONAL<e__RequestSID>& other_value);
+e__RequestSID_template& operator=(const e__RequestSID_template& other_value);
+
+boolean match(e__RequestSID::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const e__RequestSID& other_value, boolean legacy = FALSE) const;
+e__RequestSID::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+e__RequestSID_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const e__RequestSID& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class e__ResponseCode : public Base_Type { // enum
+friend class e__ResponseCode_template;
+public:
+enum enum_type { generalReject = 16, serviceNotSupported = 17, subfunctionNotSupported = 18, incorrectMessageLengthOrInvalidFormat = 19, responseTooLong = 20, busyRepeatRequest = 33, conditionsNotCorrect = 34, isosarReserved35 = 35, requestSequenceError = 36, noResponseFromSubnetComponent = 37, failurePreventsExecutionOfRequestedAction = 38, requestOutOfRange = 49, isosarReserved50 = 50, securityAccessDenied = 51, isosarReserved52 = 52, invalidKey = 53, exceededNumberOfAttempts = 54, requiredTimeDelayNotExpired = 55, uploadDownloadNotAccepted = 112, transferDataSuspended = 113, generalProgrammingFailure = 114, wrongBlockSequenceCounter = 115, requestCorrectlyReceivedResponsePending = 120, subfunctionNotSupportedInActiveSession = 126, serviceNotSupportedInActiveSession = 127, rpmTooHigh = 129, rpmTooLow = 130, engineIsRunning = 131, engineIsNotRunning = 132, engineRunTimeTooLow = 133, temperatureTooHigh = 134, temperatureTooLow = 135, vehicleSpeedTooHigh = 136, vehicleSpeedTooLow = 137, throttle__PedalTooHigh = 138, throttle__PedalTooLow = 139, transmissionRangeNotInNeutral = 140, transmissionRangeNotInGear = 141, brakeSwitchesNotClosed = 143, shifterLeverNotInPark = 144, torqueConverterClutchLocked = 145, voltageTooHigh = 146, voltageTooLow = 147, vehicleManufacturerSpecificConditionsNotCorrectF0 = 240, vehicleManufacturerSpecificConditionsNotCorrectF1 = 241, vehicleManufacturerSpecificConditionsNotCorrectF2 = 242, vehicleManufacturerSpecificConditionsNotCorrectF3 = 243, vehicleManufacturerSpecificConditionsNotCorrectF4 = 244, vehicleManufacturerSpecificConditionsNotCorrectF5 = 245, vehicleManufacturerSpecificConditionsNotCorrectF6 = 246, vehicleManufacturerSpecificConditionsNotCorrectF7 = 247, vehicleManufacturerSpecificConditionsNotCorrectF8 = 248, vehicleManufacturerSpecificConditionsNotCorrectF9 = 249, vehicleManufacturerSpecificConditionsNotCorrectFA = 250, vehicleManufacturerSpecificConditionsNotCorrectFB = 251, vehicleManufacturerSpecificConditionsNotCorrectFC = 252, vehicleManufacturerSpecificConditionsNotCorrectFD = 253, vehicleManufacturerSpecificConditionsNotCorrectFE = 254, UNKNOWN_VALUE = 0, UNBOUND_VALUE = 1 };
+private:
+enum_type enum_value;
+
+public:
+e__ResponseCode();
+e__ResponseCode(int other_value);
+e__ResponseCode(enum_type other_value);
+e__ResponseCode(const e__ResponseCode& other_value);
+
+e__ResponseCode& operator=(int other_value);
+e__ResponseCode& operator=(enum_type other_value);
+e__ResponseCode& operator=(const e__ResponseCode& other_value);
+
+boolean operator==(enum_type other_value) const;
+boolean operator==(const e__ResponseCode& other_value) const;
+inline boolean operator!=(enum_type other_value) const { return !(*this == other_value); }
+inline boolean operator!=(const e__ResponseCode& other_value) const { return !(*this == other_value); }
+boolean operator<(enum_type other_value) const;
+boolean operator<(const e__ResponseCode& other_value) const;
+boolean operator>(enum_type other_value) const;
+boolean operator>(const e__ResponseCode& other_value) const;
+inline boolean operator<=(enum_type other_value) const { return !(*this > other_value); }
+inline boolean operator<=(const e__ResponseCode& other_value) const { return !(*this > other_value); }
+inline boolean operator>=(enum_type other_value) const { return !(*this < other_value); }
+inline boolean operator>=(const e__ResponseCode& other_value) const { return !(*this < other_value); }
+
+static const char *enum_to_str(enum_type enum_par);
+static enum_type str_to_enum(const char *str_par);
+static boolean is_valid_enum(int int_par);
+
+static int enum2int(enum_type enum_par);
+static int enum2int(const e__ResponseCode& enum_par);
+int as_int() const { return enum2int(enum_value); }
+void from_int(int p_val) { *this = p_val; }
+void int2enum(int int_val);
+operator enum_type() const;
+inline boolean is_bound() const { return enum_value != UNBOUND_VALUE; }
+inline boolean is_value() const { return enum_value != UNBOUND_VALUE; }
+inline void clean_up(){ enum_value = UNBOUND_VALUE; }
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class e__ResponseCode_template : public Base_Template {
+union {
+e__ResponseCode::enum_type single_value;
+struct {
+unsigned int n_values;
+e__ResponseCode_template *list_value;
+} value_list;
+};
+
+void copy_template(const e__ResponseCode_template& other_value);
+
+public:
+e__ResponseCode_template();
+e__ResponseCode_template(template_sel other_value);
+e__ResponseCode_template(int other_value);
+e__ResponseCode_template(e__ResponseCode::enum_type other_value);
+e__ResponseCode_template(const e__ResponseCode& other_value);
+e__ResponseCode_template(const OPTIONAL<e__ResponseCode>& other_value);
+e__ResponseCode_template(const e__ResponseCode_template& other_value);
+~e__ResponseCode_template();
+
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+e__ResponseCode_template& operator=(template_sel other_value);
+e__ResponseCode_template& operator=(int other_value);
+e__ResponseCode_template& operator=(e__ResponseCode::enum_type other_value);
+e__ResponseCode_template& operator=(const e__ResponseCode& other_value);
+e__ResponseCode_template& operator=(const OPTIONAL<e__ResponseCode>& other_value);
+e__ResponseCode_template& operator=(const e__ResponseCode_template& other_value);
+
+boolean match(e__ResponseCode::enum_type other_value, boolean legacy = FALSE) const;
+boolean match(const e__ResponseCode& other_value, boolean legacy = FALSE) const;
+e__ResponseCode::enum_type valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+e__ResponseCode_template& list_item(unsigned int list_index);
+void log() const;
+void log_match(const e__ResponseCode& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class NegativeResponseCodeSID : public Base_Type {
+  OCTETSTRING field_sid;
+  e__RequestSID field_requestSID;
+  e__ResponseCode field_responseCode;
+public:
+  NegativeResponseCodeSID();
+  NegativeResponseCodeSID(const OCTETSTRING& par_sid,
+    const e__RequestSID& par_requestSID,
+    const e__ResponseCode& par_responseCode);
+  NegativeResponseCodeSID(const NegativeResponseCodeSID& other_value);
+  inline boolean is_component() { return FALSE; }
+  void clean_up();
+const TTCN_Typedescriptor_t* get_descriptor() const;
+  NegativeResponseCodeSID& operator=(const NegativeResponseCodeSID& other_value);
+  boolean operator==(const NegativeResponseCodeSID& other_value) const;
+  inline boolean operator!=(const NegativeResponseCodeSID& other_value) const
+    { return !(*this == other_value); }
+
+  boolean is_bound() const;
+
+inline boolean is_present() const { return is_bound(); }
+  boolean is_value() const;
+
+  inline OCTETSTRING& sid()
+    {return field_sid;}
+  inline const OCTETSTRING& sid() const
+    {return field_sid;}
+  inline e__RequestSID& requestSID()
+    {return field_requestSID;}
+  inline const e__RequestSID& requestSID() const
+    {return field_requestSID;}
+  inline e__ResponseCode& responseCode()
+    {return field_responseCode;}
+  inline const e__ResponseCode& responseCode() const
+    {return field_responseCode;}
+  inline int size_of() const
+    {return 3;}
+  void log() const;
+  void set_param(Module_Param& param);
+  void set_implicit_omit();
+  void encode_text(Text_Buf& text_buf) const;
+  void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class NegativeResponseCodeSID_template : public Base_Template {
+struct single_value_struct;
+union {
+single_value_struct *single_value;
+struct {
+unsigned int n_values;
+NegativeResponseCodeSID_template *list_value;
+} value_list;
+};
+
+void set_specific();
+void copy_value(const NegativeResponseCodeSID& other_value);
+void copy_template(const NegativeResponseCodeSID_template& other_value);
+
+public:
+NegativeResponseCodeSID_template();
+NegativeResponseCodeSID_template(template_sel other_value);
+NegativeResponseCodeSID_template(const NegativeResponseCodeSID& other_value);
+NegativeResponseCodeSID_template(const OPTIONAL<NegativeResponseCodeSID>& other_value);
+NegativeResponseCodeSID_template(const NegativeResponseCodeSID_template& other_value);
+~NegativeResponseCodeSID_template();
+NegativeResponseCodeSID_template& operator=(template_sel other_value);
+NegativeResponseCodeSID_template& operator=(const NegativeResponseCodeSID& other_value);
+NegativeResponseCodeSID_template& operator=(const OPTIONAL<NegativeResponseCodeSID>& other_value);
+NegativeResponseCodeSID_template& operator=(const NegativeResponseCodeSID_template& other_value);
+boolean match(const NegativeResponseCodeSID& other_value, boolean legacy = FALSE) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+NegativeResponseCodeSID valueof() const;
+void set_type(template_sel template_type, unsigned int list_length);
+NegativeResponseCodeSID_template& list_item(unsigned int list_index) const;
+OCTETSTRING_template& sid();
+const OCTETSTRING_template& sid() const;
+e__RequestSID_template& requestSID();
+const e__RequestSID_template& requestSID() const;
+e__ResponseCode_template& responseCode();
+const e__ResponseCode_template& responseCode() const;
+int size_of() const;
+void log() const;
+void log_match(const NegativeResponseCodeSID& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+};
+
+class TopLevelMessage__UDS__requests : public Base_Type {
+public:
+enum union_selection_type { UNBOUND_VALUE = 0, ALT_diagnosticSessionControlRequestSID = 1, ALT_ecuResetRequestSID = 2, ALT_securityAccessRequestSID = 3, ALT_communicationControlRequestSID = 4, ALT_testerPresentRequestSID = 5, ALT_readDataByIdentifierRequestSID = 6, ALT_writeDataByIdentifierRequestSID = 7 };
+private:
+union_selection_type union_selection;
+union {
+DiagnosticSessionControlRequestSID *field_diagnosticSessionControlRequestSID;
+ECUResetRequestSID *field_ecuResetRequestSID;
+SecurityAccessRequestSID *field_securityAccessRequestSID;
+CommunicationControlRequestSID *field_communicationControlRequestSID;
+TesterPresentRequestSID *field_testerPresentRequestSID;
+ReadDataByIdentifierRequestSID *field_readDataByIdentifierRequestSID;
+WriteDataByIdentifierRequestSID *field_writeDataByIdentifierRequestSID;
+};
+void copy_value(const TopLevelMessage__UDS__requests& other_value);
+
+public:
+TopLevelMessage__UDS__requests();
+TopLevelMessage__UDS__requests(const TopLevelMessage__UDS__requests& other_value);
+~TopLevelMessage__UDS__requests();
+TopLevelMessage__UDS__requests& operator=(const TopLevelMessage__UDS__requests& other_value);
+boolean operator==(const TopLevelMessage__UDS__requests& other_value) const;
+inline boolean operator!=(const TopLevelMessage__UDS__requests& other_value) const { return !(*this == other_value); }
+DiagnosticSessionControlRequestSID& diagnosticSessionControlRequestSID();
+const DiagnosticSessionControlRequestSID& diagnosticSessionControlRequestSID() const;
+ECUResetRequestSID& ecuResetRequestSID();
+const ECUResetRequestSID& ecuResetRequestSID() const;
+SecurityAccessRequestSID& securityAccessRequestSID();
+const SecurityAccessRequestSID& securityAccessRequestSID() const;
+CommunicationControlRequestSID& communicationControlRequestSID();
+const CommunicationControlRequestSID& communicationControlRequestSID() const;
+TesterPresentRequestSID& testerPresentRequestSID();
+const TesterPresentRequestSID& testerPresentRequestSID() const;
+ReadDataByIdentifierRequestSID& readDataByIdentifierRequestSID();
+const ReadDataByIdentifierRequestSID& readDataByIdentifierRequestSID() const;
+WriteDataByIdentifierRequestSID& writeDataByIdentifierRequestSID();
+const WriteDataByIdentifierRequestSID& writeDataByIdentifierRequestSID() const;
+inline union_selection_type get_selection() const { return union_selection; }
+boolean ischosen(union_selection_type checked_selection) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class TopLevelMessage__UDS__requests_template : public Base_Template {
+union {
+struct {
+TopLevelMessage__UDS__requests::union_selection_type union_selection;
+union {
+DiagnosticSessionControlRequestSID_template *field_diagnosticSessionControlRequestSID;
+ECUResetRequestSID_template *field_ecuResetRequestSID;
+SecurityAccessRequestSID_template *field_securityAccessRequestSID;
+CommunicationControlRequestSID_template *field_communicationControlRequestSID;
+TesterPresentRequestSID_template *field_testerPresentRequestSID;
+ReadDataByIdentifierRequestSID_template *field_readDataByIdentifierRequestSID;
+WriteDataByIdentifierRequestSID_template *field_writeDataByIdentifierRequestSID;
+};
+} single_value;
+struct {
+unsigned int n_values;
+TopLevelMessage__UDS__requests_template *list_value;
+} value_list;
+};
+void copy_value(const TopLevelMessage__UDS__requests& other_value);
+
+void copy_template(const TopLevelMessage__UDS__requests_template& other_value);
+
+public:
+TopLevelMessage__UDS__requests_template();
+TopLevelMessage__UDS__requests_template(template_sel other_value);
+TopLevelMessage__UDS__requests_template(const TopLevelMessage__UDS__requests& other_value);
+TopLevelMessage__UDS__requests_template(const OPTIONAL<TopLevelMessage__UDS__requests>& other_value);
+TopLevelMessage__UDS__requests_template(const TopLevelMessage__UDS__requests_template& other_value);
+~TopLevelMessage__UDS__requests_template();
+void clean_up();
+TopLevelMessage__UDS__requests_template& operator=(template_sel other_value);
+TopLevelMessage__UDS__requests_template& operator=(const TopLevelMessage__UDS__requests& other_value);
+TopLevelMessage__UDS__requests_template& operator=(const OPTIONAL<TopLevelMessage__UDS__requests>& other_value);
+TopLevelMessage__UDS__requests_template& operator=(const TopLevelMessage__UDS__requests_template& other_value);
+boolean match(const TopLevelMessage__UDS__requests& other_value, boolean legacy = FALSE) const;
+boolean is_value() const;TopLevelMessage__UDS__requests valueof() const;
+TopLevelMessage__UDS__requests_template& list_item(unsigned int list_index) const;
+void set_type(template_sel template_type, unsigned int list_length);
+DiagnosticSessionControlRequestSID_template& diagnosticSessionControlRequestSID();
+const DiagnosticSessionControlRequestSID_template& diagnosticSessionControlRequestSID() const;
+ECUResetRequestSID_template& ecuResetRequestSID();
+const ECUResetRequestSID_template& ecuResetRequestSID() const;
+SecurityAccessRequestSID_template& securityAccessRequestSID();
+const SecurityAccessRequestSID_template& securityAccessRequestSID() const;
+CommunicationControlRequestSID_template& communicationControlRequestSID();
+const CommunicationControlRequestSID_template& communicationControlRequestSID() const;
+TesterPresentRequestSID_template& testerPresentRequestSID();
+const TesterPresentRequestSID_template& testerPresentRequestSID() const;
+ReadDataByIdentifierRequestSID_template& readDataByIdentifierRequestSID();
+const ReadDataByIdentifierRequestSID_template& readDataByIdentifierRequestSID() const;
+WriteDataByIdentifierRequestSID_template& writeDataByIdentifierRequestSID();
+const WriteDataByIdentifierRequestSID_template& writeDataByIdentifierRequestSID() const;
+boolean ischosen(TopLevelMessage__UDS__requests::union_selection_type checked_selection) const;
+void log() const;
+void log_match(const TopLevelMessage__UDS__requests& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+class TopLevelMessage__UDS__responses : public Base_Type {
+public:
+enum union_selection_type { UNBOUND_VALUE = 0, ALT_diagnosticSessionControlResponseSID = 1, ALT_ecuResetResponseSID = 2, ALT_securityAccessResponseSID = 3, ALT_communicationControlResponseSID = 4, ALT_testerPresentResponseSID = 5, ALT_readDataByIdentifierResponseSID = 6, ALT_writeDataByIdentifierResponseSID = 7, ALT_negativeResponseCodeSID = 8 };
+private:
+union_selection_type union_selection;
+union {
+DiagnosticSessionControlResponseSID *field_diagnosticSessionControlResponseSID;
+ECUResetResponseSID *field_ecuResetResponseSID;
+SecurityAccessResponseSID *field_securityAccessResponseSID;
+CommunicationControlResponseSID *field_communicationControlResponseSID;
+TesterPresentResponseSID *field_testerPresentResponseSID;
+ReadDataByIdentifierResponseSID *field_readDataByIdentifierResponseSID;
+WriteDataByIdentifierResponseSID *field_writeDataByIdentifierResponseSID;
+NegativeResponseCodeSID *field_negativeResponseCodeSID;
+};
+void copy_value(const TopLevelMessage__UDS__responses& other_value);
+
+public:
+TopLevelMessage__UDS__responses();
+TopLevelMessage__UDS__responses(const TopLevelMessage__UDS__responses& other_value);
+~TopLevelMessage__UDS__responses();
+TopLevelMessage__UDS__responses& operator=(const TopLevelMessage__UDS__responses& other_value);
+boolean operator==(const TopLevelMessage__UDS__responses& other_value) const;
+inline boolean operator!=(const TopLevelMessage__UDS__responses& other_value) const { return !(*this == other_value); }
+DiagnosticSessionControlResponseSID& diagnosticSessionControlResponseSID();
+const DiagnosticSessionControlResponseSID& diagnosticSessionControlResponseSID() const;
+ECUResetResponseSID& ecuResetResponseSID();
+const ECUResetResponseSID& ecuResetResponseSID() const;
+SecurityAccessResponseSID& securityAccessResponseSID();
+const SecurityAccessResponseSID& securityAccessResponseSID() const;
+CommunicationControlResponseSID& communicationControlResponseSID();
+const CommunicationControlResponseSID& communicationControlResponseSID() const;
+TesterPresentResponseSID& testerPresentResponseSID();
+const TesterPresentResponseSID& testerPresentResponseSID() const;
+ReadDataByIdentifierResponseSID& readDataByIdentifierResponseSID();
+const ReadDataByIdentifierResponseSID& readDataByIdentifierResponseSID() const;
+WriteDataByIdentifierResponseSID& writeDataByIdentifierResponseSID();
+const WriteDataByIdentifierResponseSID& writeDataByIdentifierResponseSID() const;
+NegativeResponseCodeSID& negativeResponseCodeSID();
+const NegativeResponseCodeSID& negativeResponseCodeSID() const;
+inline union_selection_type get_selection() const { return union_selection; }
+boolean ischosen(union_selection_type checked_selection) const;
+boolean is_bound() const;
+boolean is_value() const;
+void clean_up();
+inline boolean is_present() const { return is_bound(); }
+void log() const;
+void set_param(Module_Param& param);
+  void set_implicit_omit();
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+void encode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...) const;
+void decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, TTCN_EncDec::coding_t, ...);
+int RAW_encode(const TTCN_Typedescriptor_t&, RAW_enc_tree&) const;
+int RAW_decode(const TTCN_Typedescriptor_t&, TTCN_Buffer&, int, raw_order_t, boolean no_err=FALSE,int sel_field=-1, boolean first_call=TRUE, const RAW_Force_Omit* force_omit = NULL);
+};
+
+class TopLevelMessage__UDS__responses_template : public Base_Template {
+union {
+struct {
+TopLevelMessage__UDS__responses::union_selection_type union_selection;
+union {
+DiagnosticSessionControlResponseSID_template *field_diagnosticSessionControlResponseSID;
+ECUResetResponseSID_template *field_ecuResetResponseSID;
+SecurityAccessResponseSID_template *field_securityAccessResponseSID;
+CommunicationControlResponseSID_template *field_communicationControlResponseSID;
+TesterPresentResponseSID_template *field_testerPresentResponseSID;
+ReadDataByIdentifierResponseSID_template *field_readDataByIdentifierResponseSID;
+WriteDataByIdentifierResponseSID_template *field_writeDataByIdentifierResponseSID;
+NegativeResponseCodeSID_template *field_negativeResponseCodeSID;
+};
+} single_value;
+struct {
+unsigned int n_values;
+TopLevelMessage__UDS__responses_template *list_value;
+} value_list;
+};
+void copy_value(const TopLevelMessage__UDS__responses& other_value);
+
+void copy_template(const TopLevelMessage__UDS__responses_template& other_value);
+
+public:
+TopLevelMessage__UDS__responses_template();
+TopLevelMessage__UDS__responses_template(template_sel other_value);
+TopLevelMessage__UDS__responses_template(const TopLevelMessage__UDS__responses& other_value);
+TopLevelMessage__UDS__responses_template(const OPTIONAL<TopLevelMessage__UDS__responses>& other_value);
+TopLevelMessage__UDS__responses_template(const TopLevelMessage__UDS__responses_template& other_value);
+~TopLevelMessage__UDS__responses_template();
+void clean_up();
+TopLevelMessage__UDS__responses_template& operator=(template_sel other_value);
+TopLevelMessage__UDS__responses_template& operator=(const TopLevelMessage__UDS__responses& other_value);
+TopLevelMessage__UDS__responses_template& operator=(const OPTIONAL<TopLevelMessage__UDS__responses>& other_value);
+TopLevelMessage__UDS__responses_template& operator=(const TopLevelMessage__UDS__responses_template& other_value);
+boolean match(const TopLevelMessage__UDS__responses& other_value, boolean legacy = FALSE) const;
+boolean is_value() const;TopLevelMessage__UDS__responses valueof() const;
+TopLevelMessage__UDS__responses_template& list_item(unsigned int list_index) const;
+void set_type(template_sel template_type, unsigned int list_length);
+DiagnosticSessionControlResponseSID_template& diagnosticSessionControlResponseSID();
+const DiagnosticSessionControlResponseSID_template& diagnosticSessionControlResponseSID() const;
+ECUResetResponseSID_template& ecuResetResponseSID();
+const ECUResetResponseSID_template& ecuResetResponseSID() const;
+SecurityAccessResponseSID_template& securityAccessResponseSID();
+const SecurityAccessResponseSID_template& securityAccessResponseSID() const;
+CommunicationControlResponseSID_template& communicationControlResponseSID();
+const CommunicationControlResponseSID_template& communicationControlResponseSID() const;
+TesterPresentResponseSID_template& testerPresentResponseSID();
+const TesterPresentResponseSID_template& testerPresentResponseSID() const;
+ReadDataByIdentifierResponseSID_template& readDataByIdentifierResponseSID();
+const ReadDataByIdentifierResponseSID_template& readDataByIdentifierResponseSID() const;
+WriteDataByIdentifierResponseSID_template& writeDataByIdentifierResponseSID();
+const WriteDataByIdentifierResponseSID_template& writeDataByIdentifierResponseSID() const;
+NegativeResponseCodeSID_template& negativeResponseCodeSID();
+const NegativeResponseCodeSID_template& negativeResponseCodeSID() const;
+boolean ischosen(TopLevelMessage__UDS__responses::union_selection_type checked_selection) const;
+void log() const;
+void log_match(const TopLevelMessage__UDS__responses& match_value, boolean legacy = FALSE) const;
+void encode_text(Text_Buf& text_buf) const;
+void decode_text(Text_Buf& text_buf);
+boolean is_present(boolean legacy = FALSE) const;
+boolean match_omit(boolean legacy = FALSE) const;
+void set_param(Module_Param& param);
+void check_restriction(template_res t_res, const char* t_name=NULL, boolean legacy = FALSE) const;
+};
+
+
+/* Function prototypes */
+
+extern OCTETSTRING encode__TopLevelMessage__UDS__requests(const TopLevelMessage__UDS__requests& pdu);
+extern TopLevelMessage__UDS__requests decode__TopLevelMessage__UDS__requests(const OCTETSTRING& data);
+extern OCTETSTRING encode__TopLevelMessage__UDS__responses(const TopLevelMessage__UDS__responses& pdu);
+extern TopLevelMessage__UDS__responses decode__TopLevelMessage__UDS__responses(const OCTETSTRING& data);
+
+/* Global variable declarations */
+
+extern const XERdescriptor_t SID_xer_;
+extern const TTCN_OERdescriptor_t SID_oer_;
+extern const TTCN_Typedescriptor_t SID_descr_;
+extern const TTCN_RAWdescriptor_t SuppressPosRspMsgIndicationBitType_raw_;
+extern const TTCN_Typedescriptor_t SuppressPosRspMsgIndicationBitType_descr_;
+extern const XERdescriptor_t DiagnosticSessionType_xer_;
+extern const TTCN_OERdescriptor_t DiagnosticSessionType_oer_;
+extern const TTCN_Typedescriptor_t DiagnosticSessionType_descr_;
+extern const TTCN_RAWdescriptor_t DefaultSessionRequest_diagnosticSessionType_raw_;
+extern const XERdescriptor_t DefaultSessionRequest_diagnosticSessionType_xer_;
+extern const TTCN_OERdescriptor_t DefaultSessionRequest_diagnosticSessionType_oer_;
+extern const TTCN_Typedescriptor_t DefaultSessionRequest_diagnosticSessionType_descr_;
+extern const TTCN_RAWdescriptor_t DefaultSessionRequest_raw_;
+extern const TTCN_Typedescriptor_t DefaultSessionRequest_descr_;
+extern const TTCN_RAWdescriptor_t ProgrammingSessionRequest_diagnosticSessionType_raw_;
+extern const XERdescriptor_t ProgrammingSessionRequest_diagnosticSessionType_xer_;
+extern const TTCN_OERdescriptor_t ProgrammingSessionRequest_diagnosticSessionType_oer_;
+extern const TTCN_Typedescriptor_t ProgrammingSessionRequest_diagnosticSessionType_descr_;
+extern const TTCN_RAWdescriptor_t ProgrammingSessionRequest_raw_;
+extern const TTCN_Typedescriptor_t ProgrammingSessionRequest_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedDiagnosticSessionRequest_diagnosticSessionType_raw_;
+extern const XERdescriptor_t ExtendedDiagnosticSessionRequest_diagnosticSessionType_xer_;
+extern const TTCN_OERdescriptor_t ExtendedDiagnosticSessionRequest_diagnosticSessionType_oer_;
+extern const TTCN_Typedescriptor_t ExtendedDiagnosticSessionRequest_diagnosticSessionType_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedDiagnosticSessionRequest_raw_;
+extern const TTCN_Typedescriptor_t ExtendedDiagnosticSessionRequest_descr_;
+extern const TTCN_RAWdescriptor_t SafetySystemDiagnosticSessionRequest_diagnosticSessionType_raw_;
+extern const XERdescriptor_t SafetySystemDiagnosticSessionRequest_diagnosticSessionType_xer_;
+extern const TTCN_OERdescriptor_t SafetySystemDiagnosticSessionRequest_diagnosticSessionType_oer_;
+extern const TTCN_Typedescriptor_t SafetySystemDiagnosticSessionRequest_diagnosticSessionType_descr_;
+extern const TTCN_RAWdescriptor_t SafetySystemDiagnosticSessionRequest_raw_;
+extern const TTCN_Typedescriptor_t SafetySystemDiagnosticSessionRequest_descr_;
+extern const TTCN_RAWdescriptor_t DiagnosticSessionRequestType_raw_;
+extern const TTCN_Typedescriptor_t DiagnosticSessionRequestType_descr_;
+extern const TTCN_RAWdescriptor_t DiagnosticSessionControlRequestSID_sid_raw_;
+extern const XERdescriptor_t DiagnosticSessionControlRequestSID_sid_xer_;
+extern const TTCN_OERdescriptor_t DiagnosticSessionControlRequestSID_sid_oer_;
+extern const TTCN_Typedescriptor_t DiagnosticSessionControlRequestSID_sid_descr_;
+extern const TTCN_RAWdescriptor_t DiagnosticSessionControlRequestSID_suppressPosRspMsgIndicationBit_raw_;
+extern const TTCN_Typedescriptor_t DiagnosticSessionControlRequestSID_suppressPosRspMsgIndicationBit_descr_;
+extern const TTCN_RAWdescriptor_t DiagnosticSessionControlRequestSID_diagnosticSessionType_raw_;
+extern const TTCN_Typedescriptor_t DiagnosticSessionControlRequestSID_diagnosticSessionType_descr_;
+extern const TTCN_RAWdescriptor_t DiagnosticSessionControlRequestSID_raw_;
+extern const TTCN_Typedescriptor_t DiagnosticSessionControlRequestSID_descr_;
+extern const TTCN_RAWdescriptor_t DiagnosticSessionControlResponseSID_sid_raw_;
+extern const XERdescriptor_t DiagnosticSessionControlResponseSID_sid_xer_;
+extern const TTCN_OERdescriptor_t DiagnosticSessionControlResponseSID_sid_oer_;
+extern const TTCN_Typedescriptor_t DiagnosticSessionControlResponseSID_sid_descr_;
+extern const TTCN_RAWdescriptor_t DiagnosticSessionControlResponseSID_reserved_raw_;
+extern const XERdescriptor_t DiagnosticSessionControlResponseSID_reserved_xer_;
+extern const TTCN_OERdescriptor_t DiagnosticSessionControlResponseSID_reserved_oer_;
+extern const TTCN_Typedescriptor_t DiagnosticSessionControlResponseSID_reserved_descr_;
+extern const TTCN_RAWdescriptor_t DiagnosticSessionResponseType_raw_;
+extern const TTCN_Typedescriptor_t DiagnosticSessionResponseType_descr_;
+extern const TTCN_RAWdescriptor_t DefaultSessionResponse_diagnosticSessionType_raw_;
+extern const XERdescriptor_t DefaultSessionResponse_diagnosticSessionType_xer_;
+extern const TTCN_OERdescriptor_t DefaultSessionResponse_diagnosticSessionType_oer_;
+extern const TTCN_Typedescriptor_t DefaultSessionResponse_diagnosticSessionType_descr_;
+extern const TTCN_RAWdescriptor_t DefaultSessionResponse_p2ServerMax_raw_;
+extern const XERdescriptor_t DefaultSessionResponse_p2ServerMax_xer_;
+extern const TTCN_OERdescriptor_t DefaultSessionResponse_p2ServerMax_oer_;
+extern const TTCN_Typedescriptor_t DefaultSessionResponse_p2ServerMax_descr_;
+extern const TTCN_RAWdescriptor_t DefaultSessionResponse_p2StarServerMax_raw_;
+extern const XERdescriptor_t DefaultSessionResponse_p2StarServerMax_xer_;
+extern const TTCN_OERdescriptor_t DefaultSessionResponse_p2StarServerMax_oer_;
+extern const TTCN_Typedescriptor_t DefaultSessionResponse_p2StarServerMax_descr_;
+extern const TTCN_RAWdescriptor_t DefaultSessionResponse_raw_;
+extern const TTCN_Typedescriptor_t DefaultSessionResponse_descr_;
+extern const TTCN_RAWdescriptor_t ProgrammingSessionResponse_diagnosticSessionType_raw_;
+extern const XERdescriptor_t ProgrammingSessionResponse_diagnosticSessionType_xer_;
+extern const TTCN_OERdescriptor_t ProgrammingSessionResponse_diagnosticSessionType_oer_;
+extern const TTCN_Typedescriptor_t ProgrammingSessionResponse_diagnosticSessionType_descr_;
+extern const TTCN_RAWdescriptor_t ProgrammingSessionResponse_p2ServerMax_raw_;
+extern const XERdescriptor_t ProgrammingSessionResponse_p2ServerMax_xer_;
+extern const TTCN_OERdescriptor_t ProgrammingSessionResponse_p2ServerMax_oer_;
+extern const TTCN_Typedescriptor_t ProgrammingSessionResponse_p2ServerMax_descr_;
+extern const TTCN_RAWdescriptor_t ProgrammingSessionResponse_p2StarServerMax_raw_;
+extern const XERdescriptor_t ProgrammingSessionResponse_p2StarServerMax_xer_;
+extern const TTCN_OERdescriptor_t ProgrammingSessionResponse_p2StarServerMax_oer_;
+extern const TTCN_Typedescriptor_t ProgrammingSessionResponse_p2StarServerMax_descr_;
+extern const TTCN_RAWdescriptor_t ProgrammingSessionResponse_raw_;
+extern const TTCN_Typedescriptor_t ProgrammingSessionResponse_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedDiagnosticSessionResponse_diagnosticSessionType_raw_;
+extern const XERdescriptor_t ExtendedDiagnosticSessionResponse_diagnosticSessionType_xer_;
+extern const TTCN_OERdescriptor_t ExtendedDiagnosticSessionResponse_diagnosticSessionType_oer_;
+extern const TTCN_Typedescriptor_t ExtendedDiagnosticSessionResponse_diagnosticSessionType_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedDiagnosticSessionResponse_p2ServerMax_raw_;
+extern const XERdescriptor_t ExtendedDiagnosticSessionResponse_p2ServerMax_xer_;
+extern const TTCN_OERdescriptor_t ExtendedDiagnosticSessionResponse_p2ServerMax_oer_;
+extern const TTCN_Typedescriptor_t ExtendedDiagnosticSessionResponse_p2ServerMax_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedDiagnosticSessionResponse_p2StarServerMax_raw_;
+extern const XERdescriptor_t ExtendedDiagnosticSessionResponse_p2StarServerMax_xer_;
+extern const TTCN_OERdescriptor_t ExtendedDiagnosticSessionResponse_p2StarServerMax_oer_;
+extern const TTCN_Typedescriptor_t ExtendedDiagnosticSessionResponse_p2StarServerMax_descr_;
+extern const TTCN_RAWdescriptor_t ExtendedDiagnosticSessionResponse_raw_;
+extern const TTCN_Typedescriptor_t ExtendedDiagnosticSessionResponse_descr_;
+extern const TTCN_RAWdescriptor_t SafetySystemDiagnosticSessionResponse_diagnosticSessionType_raw_;
+extern const XERdescriptor_t SafetySystemDiagnosticSessionResponse_diagnosticSessionType_xer_;
+extern const TTCN_OERdescriptor_t SafetySystemDiagnosticSessionResponse_diagnosticSessionType_oer_;
+extern const TTCN_Typedescriptor_t SafetySystemDiagnosticSessionResponse_diagnosticSessionType_descr_;
+extern const TTCN_RAWdescriptor_t SafetySystemDiagnosticSessionResponse_p2ServerMax_raw_;
+extern const XERdescriptor_t SafetySystemDiagnosticSessionResponse_p2ServerMax_xer_;
+extern const TTCN_OERdescriptor_t SafetySystemDiagnosticSessionResponse_p2ServerMax_oer_;
+extern const TTCN_Typedescriptor_t SafetySystemDiagnosticSessionResponse_p2ServerMax_descr_;
+extern const TTCN_RAWdescriptor_t SafetySystemDiagnosticSessionResponse_p2StarServerMax_raw_;
+extern const XERdescriptor_t SafetySystemDiagnosticSessionResponse_p2StarServerMax_xer_;
+extern const TTCN_OERdescriptor_t SafetySystemDiagnosticSessionResponse_p2StarServerMax_oer_;
+extern const TTCN_Typedescriptor_t SafetySystemDiagnosticSessionResponse_p2StarServerMax_descr_;
+extern const TTCN_RAWdescriptor_t SafetySystemDiagnosticSessionResponse_raw_;
+extern const TTCN_Typedescriptor_t SafetySystemDiagnosticSessionResponse_descr_;
+extern const TTCN_RAWdescriptor_t DiagnosticSessionControlResponseSID_diagnosticSessionType_raw_;
+extern const TTCN_Typedescriptor_t DiagnosticSessionControlResponseSID_diagnosticSessionType_descr_;
+extern const TTCN_RAWdescriptor_t DiagnosticSessionControlResponseSID_raw_;
+extern const TTCN_Typedescriptor_t DiagnosticSessionControlResponseSID_descr_;
+extern const XERdescriptor_t ResetType_xer_;
+extern const TTCN_OERdescriptor_t ResetType_oer_;
+extern const TTCN_Typedescriptor_t ResetType_descr_;
+extern const TTCN_RAWdescriptor_t HardResetRequest_resetType_raw_;
+extern const XERdescriptor_t HardResetRequest_resetType_xer_;
+extern const TTCN_OERdescriptor_t HardResetRequest_resetType_oer_;
+extern const TTCN_Typedescriptor_t HardResetRequest_resetType_descr_;
+extern const TTCN_RAWdescriptor_t HardResetRequest_raw_;
+extern const TTCN_Typedescriptor_t HardResetRequest_descr_;
+extern const TTCN_RAWdescriptor_t KeyOffOnResetRequest_resetType_raw_;
+extern const XERdescriptor_t KeyOffOnResetRequest_resetType_xer_;
+extern const TTCN_OERdescriptor_t KeyOffOnResetRequest_resetType_oer_;
+extern const TTCN_Typedescriptor_t KeyOffOnResetRequest_resetType_descr_;
+extern const TTCN_RAWdescriptor_t KeyOffOnResetRequest_raw_;
+extern const TTCN_Typedescriptor_t KeyOffOnResetRequest_descr_;
+extern const TTCN_RAWdescriptor_t SoftResetRequest_resetType_raw_;
+extern const XERdescriptor_t SoftResetRequest_resetType_xer_;
+extern const TTCN_OERdescriptor_t SoftResetRequest_resetType_oer_;
+extern const TTCN_Typedescriptor_t SoftResetRequest_resetType_descr_;
+extern const TTCN_RAWdescriptor_t SoftResetRequest_raw_;
+extern const TTCN_Typedescriptor_t SoftResetRequest_descr_;
+extern const TTCN_RAWdescriptor_t EnableRapidPowerShutDownRequest_resetType_raw_;
+extern const XERdescriptor_t EnableRapidPowerShutDownRequest_resetType_xer_;
+extern const TTCN_OERdescriptor_t EnableRapidPowerShutDownRequest_resetType_oer_;
+extern const TTCN_Typedescriptor_t EnableRapidPowerShutDownRequest_resetType_descr_;
+extern const TTCN_RAWdescriptor_t EnableRapidPowerShutDownRequest_raw_;
+extern const TTCN_Typedescriptor_t EnableRapidPowerShutDownRequest_descr_;
+extern const TTCN_RAWdescriptor_t DisableRapidPowerShutDownRequest_resetType_raw_;
+extern const XERdescriptor_t DisableRapidPowerShutDownRequest_resetType_xer_;
+extern const TTCN_OERdescriptor_t DisableRapidPowerShutDownRequest_resetType_oer_;
+extern const TTCN_Typedescriptor_t DisableRapidPowerShutDownRequest_resetType_descr_;
+extern const TTCN_RAWdescriptor_t DisableRapidPowerShutDownRequest_raw_;
+extern const TTCN_Typedescriptor_t DisableRapidPowerShutDownRequest_descr_;
+extern const TTCN_RAWdescriptor_t ECUResetRequestType_raw_;
+extern const TTCN_Typedescriptor_t ECUResetRequestType_descr_;
+extern const TTCN_RAWdescriptor_t HardResetResponse_resetType_raw_;
+extern const XERdescriptor_t HardResetResponse_resetType_xer_;
+extern const TTCN_OERdescriptor_t HardResetResponse_resetType_oer_;
+extern const TTCN_Typedescriptor_t HardResetResponse_resetType_descr_;
+extern const TTCN_RAWdescriptor_t HardResetResponse_raw_;
+extern const TTCN_Typedescriptor_t HardResetResponse_descr_;
+extern const TTCN_RAWdescriptor_t KeyOffOnResetResponse_resetType_raw_;
+extern const XERdescriptor_t KeyOffOnResetResponse_resetType_xer_;
+extern const TTCN_OERdescriptor_t KeyOffOnResetResponse_resetType_oer_;
+extern const TTCN_Typedescriptor_t KeyOffOnResetResponse_resetType_descr_;
+extern const TTCN_RAWdescriptor_t KeyOffOnResetResponse_raw_;
+extern const TTCN_Typedescriptor_t KeyOffOnResetResponse_descr_;
+extern const TTCN_RAWdescriptor_t SoftResetResponse_resetType_raw_;
+extern const XERdescriptor_t SoftResetResponse_resetType_xer_;
+extern const TTCN_OERdescriptor_t SoftResetResponse_resetType_oer_;
+extern const TTCN_Typedescriptor_t SoftResetResponse_resetType_descr_;
+extern const TTCN_RAWdescriptor_t SoftResetResponse_raw_;
+extern const TTCN_Typedescriptor_t SoftResetResponse_descr_;
+extern const XERdescriptor_t PowerDownTime_xer_;
+extern const TTCN_OERdescriptor_t PowerDownTime_oer_;
+extern const TTCN_Typedescriptor_t PowerDownTime_descr_;
+extern const TTCN_RAWdescriptor_t EnableRapidPowerShutDownResponse_resetType_raw_;
+extern const XERdescriptor_t EnableRapidPowerShutDownResponse_resetType_xer_;
+extern const TTCN_OERdescriptor_t EnableRapidPowerShutDownResponse_resetType_oer_;
+extern const TTCN_Typedescriptor_t EnableRapidPowerShutDownResponse_resetType_descr_;
+extern const TTCN_RAWdescriptor_t EnableRapidPowerShutDownResponse_powerDownTime_raw_;
+extern const XERdescriptor_t EnableRapidPowerShutDownResponse_powerDownTime_xer_;
+extern const TTCN_OERdescriptor_t EnableRapidPowerShutDownResponse_powerDownTime_oer_;
+extern const TTCN_Typedescriptor_t EnableRapidPowerShutDownResponse_powerDownTime_descr_;
+extern const TTCN_RAWdescriptor_t EnableRapidPowerShutDownResponse_raw_;
+extern const TTCN_Typedescriptor_t EnableRapidPowerShutDownResponse_descr_;
+extern const TTCN_RAWdescriptor_t DisableRapidPowerShutDownResponse_resetType_raw_;
+extern const XERdescriptor_t DisableRapidPowerShutDownResponse_resetType_xer_;
+extern const TTCN_OERdescriptor_t DisableRapidPowerShutDownResponse_resetType_oer_;
+extern const TTCN_Typedescriptor_t DisableRapidPowerShutDownResponse_resetType_descr_;
+extern const TTCN_RAWdescriptor_t DisableRapidPowerShutDownResponse_raw_;
+extern const TTCN_Typedescriptor_t DisableRapidPowerShutDownResponse_descr_;
+extern const TTCN_RAWdescriptor_t ECUResetResponseType_raw_;
+extern const TTCN_Typedescriptor_t ECUResetResponseType_descr_;
+extern const TTCN_RAWdescriptor_t ECUResetRequestSID_sid_raw_;
+extern const XERdescriptor_t ECUResetRequestSID_sid_xer_;
+extern const TTCN_OERdescriptor_t ECUResetRequestSID_sid_oer_;
+extern const TTCN_Typedescriptor_t ECUResetRequestSID_sid_descr_;
+extern const TTCN_RAWdescriptor_t ECUResetRequestSID_suppressPosRspMsgIndicationBit_raw_;
+extern const TTCN_Typedescriptor_t ECUResetRequestSID_suppressPosRspMsgIndicationBit_descr_;
+extern const TTCN_RAWdescriptor_t ECUResetRequestSID_resetType_raw_;
+extern const TTCN_Typedescriptor_t ECUResetRequestSID_resetType_descr_;
+extern const TTCN_RAWdescriptor_t ECUResetRequestSID_raw_;
+extern const TTCN_Typedescriptor_t ECUResetRequestSID_descr_;
+extern const TTCN_RAWdescriptor_t ECUResetResponseSID_sid_raw_;
+extern const XERdescriptor_t ECUResetResponseSID_sid_xer_;
+extern const TTCN_OERdescriptor_t ECUResetResponseSID_sid_oer_;
+extern const TTCN_Typedescriptor_t ECUResetResponseSID_sid_descr_;
+extern const TTCN_RAWdescriptor_t ECUResetResponseSID_reserved_raw_;
+extern const XERdescriptor_t ECUResetResponseSID_reserved_xer_;
+extern const TTCN_OERdescriptor_t ECUResetResponseSID_reserved_oer_;
+extern const TTCN_Typedescriptor_t ECUResetResponseSID_reserved_descr_;
+extern const TTCN_RAWdescriptor_t ECUResetResponseSID_resetType_raw_;
+extern const TTCN_Typedescriptor_t ECUResetResponseSID_resetType_descr_;
+extern const TTCN_RAWdescriptor_t ECUResetResponseSID_raw_;
+extern const TTCN_Typedescriptor_t ECUResetResponseSID_descr_;
+extern const XERdescriptor_t SecurityAccessType_xer_;
+extern const TTCN_OERdescriptor_t SecurityAccessType_oer_;
+extern const TTCN_Typedescriptor_t SecurityAccessType_descr_;
+extern const TTCN_RAWdescriptor_t RequestSeedRequest0_securityAccessType_raw_;
+extern const XERdescriptor_t RequestSeedRequest0_securityAccessType_xer_;
+extern const TTCN_OERdescriptor_t RequestSeedRequest0_securityAccessType_oer_;
+extern const TTCN_Typedescriptor_t RequestSeedRequest0_securityAccessType_descr_;
+extern const TTCN_RAWdescriptor_t RequestSeedRequest0_securityAccessDataRecord_raw_;
+extern const XERdescriptor_t RequestSeedRequest0_securityAccessDataRecord_xer_;
+extern const TTCN_OERdescriptor_t RequestSeedRequest0_securityAccessDataRecord_oer_;
+extern const TTCN_Typedescriptor_t RequestSeedRequest0_securityAccessDataRecord_descr_;
+extern const TTCN_RAWdescriptor_t RequestSeedRequest0_raw_;
+extern const TTCN_Typedescriptor_t RequestSeedRequest0_descr_;
+extern const TTCN_RAWdescriptor_t SendKeyRequest0_securityAccessType_raw_;
+extern const XERdescriptor_t SendKeyRequest0_securityAccessType_xer_;
+extern const TTCN_OERdescriptor_t SendKeyRequest0_securityAccessType_oer_;
+extern const TTCN_Typedescriptor_t SendKeyRequest0_securityAccessType_descr_;
+extern const TTCN_RAWdescriptor_t SendKeyRequest0_securityKey_raw_;
+extern const XERdescriptor_t SendKeyRequest0_securityKey_xer_;
+extern const TTCN_OERdescriptor_t SendKeyRequest0_securityKey_oer_;
+extern const TTCN_Typedescriptor_t SendKeyRequest0_securityKey_descr_;
+extern const TTCN_RAWdescriptor_t SendKeyRequest0_raw_;
+extern const TTCN_Typedescriptor_t SendKeyRequest0_descr_;
+extern const TTCN_RAWdescriptor_t RequestSeedRequest1_securityAccessType_raw_;
+extern const XERdescriptor_t RequestSeedRequest1_securityAccessType_xer_;
+extern const TTCN_OERdescriptor_t RequestSeedRequest1_securityAccessType_oer_;
+extern const TTCN_Typedescriptor_t RequestSeedRequest1_securityAccessType_descr_;
+extern const TTCN_RAWdescriptor_t RequestSeedRequest1_securityAccessDataRecord_raw_;
+extern const XERdescriptor_t RequestSeedRequest1_securityAccessDataRecord_xer_;
+extern const TTCN_OERdescriptor_t RequestSeedRequest1_securityAccessDataRecord_oer_;
+extern const TTCN_Typedescriptor_t RequestSeedRequest1_securityAccessDataRecord_descr_;
+extern const TTCN_RAWdescriptor_t RequestSeedRequest1_raw_;
+extern const TTCN_Typedescriptor_t RequestSeedRequest1_descr_;
+extern const TTCN_RAWdescriptor_t SendKeyRequest1_securityAccessType_raw_;
+extern const XERdescriptor_t SendKeyRequest1_securityAccessType_xer_;
+extern const TTCN_OERdescriptor_t SendKeyRequest1_securityAccessType_oer_;
+extern const TTCN_Typedescriptor_t SendKeyRequest1_securityAccessType_descr_;
+extern const TTCN_RAWdescriptor_t SendKeyRequest1_securityKey_raw_;
+extern const XERdescriptor_t SendKeyRequest1_securityKey_xer_;
+extern const TTCN_OERdescriptor_t SendKeyRequest1_securityKey_oer_;
+extern const TTCN_Typedescriptor_t SendKeyRequest1_securityKey_descr_;
+extern const TTCN_RAWdescriptor_t SendKeyRequest1_raw_;
+extern const TTCN_Typedescriptor_t SendKeyRequest1_descr_;
+extern const TTCN_RAWdescriptor_t SecurityAccessRequestType_raw_;
+extern const TTCN_Typedescriptor_t SecurityAccessRequestType_descr_;
+extern const TTCN_RAWdescriptor_t SecurityAccessRequestSID_sid_raw_;
+extern const XERdescriptor_t SecurityAccessRequestSID_sid_xer_;
+extern const TTCN_OERdescriptor_t SecurityAccessRequestSID_sid_oer_;
+extern const TTCN_Typedescriptor_t SecurityAccessRequestSID_sid_descr_;
+extern const TTCN_RAWdescriptor_t SecurityAccessRequestSID_suppressPosRspMsgIndicationBit_raw_;
+extern const TTCN_Typedescriptor_t SecurityAccessRequestSID_suppressPosRspMsgIndicationBit_descr_;
+extern const TTCN_RAWdescriptor_t SecurityAccessRequestSID_securityAccessType_raw_;
+extern const TTCN_Typedescriptor_t SecurityAccessRequestSID_securityAccessType_descr_;
+extern const TTCN_RAWdescriptor_t SecurityAccessRequestSID_raw_;
+extern const TTCN_Typedescriptor_t SecurityAccessRequestSID_descr_;
+extern const TTCN_RAWdescriptor_t RequestSeedResponse0_securityAccessType_raw_;
+extern const XERdescriptor_t RequestSeedResponse0_securityAccessType_xer_;
+extern const TTCN_OERdescriptor_t RequestSeedResponse0_securityAccessType_oer_;
+extern const TTCN_Typedescriptor_t RequestSeedResponse0_securityAccessType_descr_;
+extern const TTCN_RAWdescriptor_t RequestSeedResponse0_securitySeed_raw_;
+extern const XERdescriptor_t RequestSeedResponse0_securitySeed_xer_;
+extern const TTCN_OERdescriptor_t RequestSeedResponse0_securitySeed_oer_;
+extern const TTCN_Typedescriptor_t RequestSeedResponse0_securitySeed_descr_;
+extern const TTCN_RAWdescriptor_t RequestSeedResponse0_raw_;
+extern const TTCN_Typedescriptor_t RequestSeedResponse0_descr_;
+extern const TTCN_RAWdescriptor_t SendKeyResponse0_securityAccessType_raw_;
+extern const XERdescriptor_t SendKeyResponse0_securityAccessType_xer_;
+extern const TTCN_OERdescriptor_t SendKeyResponse0_securityAccessType_oer_;
+extern const TTCN_Typedescriptor_t SendKeyResponse0_securityAccessType_descr_;
+extern const TTCN_RAWdescriptor_t SendKeyResponse0_raw_;
+extern const TTCN_Typedescriptor_t SendKeyResponse0_descr_;
+extern const TTCN_RAWdescriptor_t RequestSeedResponse1_securityAccessType_raw_;
+extern const XERdescriptor_t RequestSeedResponse1_securityAccessType_xer_;
+extern const TTCN_OERdescriptor_t RequestSeedResponse1_securityAccessType_oer_;
+extern const TTCN_Typedescriptor_t RequestSeedResponse1_securityAccessType_descr_;
+extern const TTCN_RAWdescriptor_t RequestSeedResponse1_securitySeed_raw_;
+extern const XERdescriptor_t RequestSeedResponse1_securitySeed_xer_;
+extern const TTCN_OERdescriptor_t RequestSeedResponse1_securitySeed_oer_;
+extern const TTCN_Typedescriptor_t RequestSeedResponse1_securitySeed_descr_;
+extern const TTCN_RAWdescriptor_t RequestSeedResponse1_raw_;
+extern const TTCN_Typedescriptor_t RequestSeedResponse1_descr_;
+extern const TTCN_RAWdescriptor_t SendKeyResponse1_securityAccessType_raw_;
+extern const XERdescriptor_t SendKeyResponse1_securityAccessType_xer_;
+extern const TTCN_OERdescriptor_t SendKeyResponse1_securityAccessType_oer_;
+extern const TTCN_Typedescriptor_t SendKeyResponse1_securityAccessType_descr_;
+extern const TTCN_RAWdescriptor_t SendKeyResponse1_raw_;
+extern const TTCN_Typedescriptor_t SendKeyResponse1_descr_;
+extern const TTCN_RAWdescriptor_t SecurityAccessResponseType_raw_;
+extern const TTCN_Typedescriptor_t SecurityAccessResponseType_descr_;
+extern const TTCN_RAWdescriptor_t SecurityAccessResponseSID_sid_raw_;
+extern const XERdescriptor_t SecurityAccessResponseSID_sid_xer_;
+extern const TTCN_OERdescriptor_t SecurityAccessResponseSID_sid_oer_;
+extern const TTCN_Typedescriptor_t SecurityAccessResponseSID_sid_descr_;
+extern const TTCN_RAWdescriptor_t SecurityAccessResponseSID_reserved_raw_;
+extern const XERdescriptor_t SecurityAccessResponseSID_reserved_xer_;
+extern const TTCN_OERdescriptor_t SecurityAccessResponseSID_reserved_oer_;
+extern const TTCN_Typedescriptor_t SecurityAccessResponseSID_reserved_descr_;
+extern const TTCN_RAWdescriptor_t SecurityAccessResponseSID_securityAccessType_raw_;
+extern const TTCN_Typedescriptor_t SecurityAccessResponseSID_securityAccessType_descr_;
+extern const TTCN_RAWdescriptor_t SecurityAccessResponseSID_raw_;
+extern const TTCN_Typedescriptor_t SecurityAccessResponseSID_descr_;
+extern const XERdescriptor_t ControlType_xer_;
+extern const TTCN_OERdescriptor_t ControlType_oer_;
+extern const TTCN_Typedescriptor_t ControlType_descr_;
+extern const TTCN_RAWdescriptor_t e__ControlType_raw_;
+extern const TTCN_Typedescriptor_t e__ControlType_descr_;
+extern const TTCN_RAWdescriptor_t e__DisableEnable_raw_;
+extern const TTCN_Typedescriptor_t e__DisableEnable_descr_;
+extern const TTCN_RAWdescriptor_t e__CommunicationMessages_raw_;
+extern const TTCN_Typedescriptor_t e__CommunicationMessages_descr_;
+extern const TTCN_RAWdescriptor_t CommunicationType_disableEnable_raw_;
+extern const TTCN_Typedescriptor_t CommunicationType_disableEnable_descr_;
+extern const TTCN_RAWdescriptor_t CommunicationType_reserved_raw_;
+extern const XERdescriptor_t CommunicationType_reserved_xer_;
+extern const TTCN_OERdescriptor_t CommunicationType_reserved_oer_;
+extern const TTCN_Typedescriptor_t CommunicationType_reserved_descr_;
+extern const TTCN_RAWdescriptor_t CommunicationType_communicationMessages_raw_;
+extern const TTCN_Typedescriptor_t CommunicationType_communicationMessages_descr_;
+extern const TTCN_RAWdescriptor_t CommunicationType_raw_;
+extern const TTCN_Typedescriptor_t CommunicationType_descr_;
+extern const TTCN_RAWdescriptor_t EnableRxAndTxRequest_suppressPosRspMsgIndicationBit_raw_;
+extern const TTCN_Typedescriptor_t EnableRxAndTxRequest_suppressPosRspMsgIndicationBit_descr_;
+extern const TTCN_RAWdescriptor_t EnableRxAndTxRequest_controlType_raw_;
+extern const XERdescriptor_t EnableRxAndTxRequest_controlType_xer_;
+extern const TTCN_OERdescriptor_t EnableRxAndTxRequest_controlType_oer_;
+extern const TTCN_Typedescriptor_t EnableRxAndTxRequest_controlType_descr_;
+extern const TTCN_RAWdescriptor_t EnableRxAndTxRequest_communicationType_raw_;
+extern const TTCN_Typedescriptor_t EnableRxAndTxRequest_communicationType_descr_;
+extern const TTCN_RAWdescriptor_t EnableRxAndTxRequest_raw_;
+extern const TTCN_Typedescriptor_t EnableRxAndTxRequest_descr_;
+extern const TTCN_RAWdescriptor_t EnableRxAndDisableTxRequest_suppressPosRspMsgIndicationBit_raw_;
+extern const TTCN_Typedescriptor_t EnableRxAndDisableTxRequest_suppressPosRspMsgIndicationBit_descr_;
+extern const TTCN_RAWdescriptor_t EnableRxAndDisableTxRequest_controlType_raw_;
+extern const XERdescriptor_t EnableRxAndDisableTxRequest_controlType_xer_;
+extern const TTCN_OERdescriptor_t EnableRxAndDisableTxRequest_controlType_oer_;
+extern const TTCN_Typedescriptor_t EnableRxAndDisableTxRequest_controlType_descr_;
+extern const TTCN_RAWdescriptor_t EnableRxAndDisableTxRequest_communicationType_raw_;
+extern const TTCN_Typedescriptor_t EnableRxAndDisableTxRequest_communicationType_descr_;
+extern const TTCN_RAWdescriptor_t EnableRxAndDisableTxRequest_raw_;
+extern const TTCN_Typedescriptor_t EnableRxAndDisableTxRequest_descr_;
+extern const TTCN_RAWdescriptor_t DisableRxAndEnableTxRequest_suppressPosRspMsgIndicationBit_raw_;
+extern const TTCN_Typedescriptor_t DisableRxAndEnableTxRequest_suppressPosRspMsgIndicationBit_descr_;
+extern const TTCN_RAWdescriptor_t DisableRxAndEnableTxRequest_controlType_raw_;
+extern const XERdescriptor_t DisableRxAndEnableTxRequest_controlType_xer_;
+extern const TTCN_OERdescriptor_t DisableRxAndEnableTxRequest_controlType_oer_;
+extern const TTCN_Typedescriptor_t DisableRxAndEnableTxRequest_controlType_descr_;
+extern const TTCN_RAWdescriptor_t DisableRxAndEnableTxRequest_communicationType_raw_;
+extern const TTCN_Typedescriptor_t DisableRxAndEnableTxRequest_communicationType_descr_;
+extern const TTCN_RAWdescriptor_t DisableRxAndEnableTxRequest_raw_;
+extern const TTCN_Typedescriptor_t DisableRxAndEnableTxRequest_descr_;
+extern const TTCN_RAWdescriptor_t DisableRxAndTxRequest_suppressPosRspMsgIndicationBit_raw_;
+extern const TTCN_Typedescriptor_t DisableRxAndTxRequest_suppressPosRspMsgIndicationBit_descr_;
+extern const TTCN_RAWdescriptor_t DisableRxAndTxRequest_controlType_raw_;
+extern const XERdescriptor_t DisableRxAndTxRequest_controlType_xer_;
+extern const TTCN_OERdescriptor_t DisableRxAndTxRequest_controlType_oer_;
+extern const TTCN_Typedescriptor_t DisableRxAndTxRequest_controlType_descr_;
+extern const TTCN_RAWdescriptor_t DisableRxAndTxRequest_communicationType_raw_;
+extern const TTCN_Typedescriptor_t DisableRxAndTxRequest_communicationType_descr_;
+extern const TTCN_RAWdescriptor_t DisableRxAndTxRequest_raw_;
+extern const TTCN_Typedescriptor_t DisableRxAndTxRequest_descr_;
+extern const XERdescriptor_t NodeIdentificationNumber_xer_;
+extern const TTCN_OERdescriptor_t NodeIdentificationNumber_oer_;
+extern const TTCN_Typedescriptor_t NodeIdentificationNumber_descr_;
+extern const TTCN_RAWdescriptor_t EnableRxAndDisableTxWithEnhancedAddressInformationRequest_suppressPosRspMsgIndicationBit_raw_;
+extern const TTCN_Typedescriptor_t EnableRxAndDisableTxWithEnhancedAddressInformationRequest_suppressPosRspMsgIndicationBit_descr_;
+extern const TTCN_RAWdescriptor_t EnableRxAndDisableTxWithEnhancedAddressInformationRequest_controlType_raw_;
+extern const XERdescriptor_t EnableRxAndDisableTxWithEnhancedAddressInformationRequest_controlType_xer_;
+extern const TTCN_OERdescriptor_t EnableRxAndDisableTxWithEnhancedAddressInformationRequest_controlType_oer_;
+extern const TTCN_Typedescriptor_t EnableRxAndDisableTxWithEnhancedAddressInformationRequest_controlType_descr_;
+extern const TTCN_RAWdescriptor_t EnableRxAndDisableTxWithEnhancedAddressInformationRequest_communicationType_raw_;
+extern const TTCN_Typedescriptor_t EnableRxAndDisableTxWithEnhancedAddressInformationRequest_communicationType_descr_;
+extern const TTCN_RAWdescriptor_t EnableRxAndDisableTxWithEnhancedAddressInformationRequest_nodeIdentificationNumber_raw_;
+extern const XERdescriptor_t EnableRxAndDisableTxWithEnhancedAddressInformationRequest_nodeIdentificationNumber_xer_;
+extern const TTCN_OERdescriptor_t EnableRxAndDisableTxWithEnhancedAddressInformationRequest_nodeIdentificationNumber_oer_;
+extern const TTCN_Typedescriptor_t EnableRxAndDisableTxWithEnhancedAddressInformationRequest_nodeIdentificationNumber_descr_;
+extern const TTCN_RAWdescriptor_t EnableRxAndDisableTxWithEnhancedAddressInformationRequest_raw_;
+extern const TTCN_Typedescriptor_t EnableRxAndDisableTxWithEnhancedAddressInformationRequest_descr_;
+extern const TTCN_RAWdescriptor_t EnableRxAndTxWithEnhancedAddressInformationRequest_suppressPosRspMsgIndicationBit_raw_;
+extern const TTCN_Typedescriptor_t EnableRxAndTxWithEnhancedAddressInformationRequest_suppressPosRspMsgIndicationBit_descr_;
+extern const TTCN_RAWdescriptor_t EnableRxAndTxWithEnhancedAddressInformationRequest_controlType_raw_;
+extern const XERdescriptor_t EnableRxAndTxWithEnhancedAddressInformationRequest_controlType_xer_;
+extern const TTCN_OERdescriptor_t EnableRxAndTxWithEnhancedAddressInformationRequest_controlType_oer_;
+extern const TTCN_Typedescriptor_t EnableRxAndTxWithEnhancedAddressInformationRequest_controlType_descr_;
+extern const TTCN_RAWdescriptor_t EnableRxAndTxWithEnhancedAddressInformationRequest_communicationType_raw_;
+extern const TTCN_Typedescriptor_t EnableRxAndTxWithEnhancedAddressInformationRequest_communicationType_descr_;
+extern const TTCN_RAWdescriptor_t EnableRxAndTxWithEnhancedAddressInformationRequest_nodeIdentificationNumber_raw_;
+extern const XERdescriptor_t EnableRxAndTxWithEnhancedAddressInformationRequest_nodeIdentificationNumber_xer_;
+extern const TTCN_OERdescriptor_t EnableRxAndTxWithEnhancedAddressInformationRequest_nodeIdentificationNumber_oer_;
+extern const TTCN_Typedescriptor_t EnableRxAndTxWithEnhancedAddressInformationRequest_nodeIdentificationNumber_descr_;
+extern const TTCN_RAWdescriptor_t EnableRxAndTxWithEnhancedAddressInformationRequest_raw_;
+extern const TTCN_Typedescriptor_t EnableRxAndTxWithEnhancedAddressInformationRequest_descr_;
+extern const TTCN_RAWdescriptor_t CommunicationControlRequestType_raw_;
+extern const TTCN_Typedescriptor_t CommunicationControlRequestType_descr_;
+extern const TTCN_RAWdescriptor_t CommunicationControlRequestSID_sid_raw_;
+extern const XERdescriptor_t CommunicationControlRequestSID_sid_xer_;
+extern const TTCN_OERdescriptor_t CommunicationControlRequestSID_sid_oer_;
+extern const TTCN_Typedescriptor_t CommunicationControlRequestSID_sid_descr_;
+extern const TTCN_RAWdescriptor_t CommunicationControlRequestSID_communicationControlRequestType_raw_;
+extern const TTCN_Typedescriptor_t CommunicationControlRequestSID_communicationControlRequestType_descr_;
+extern const TTCN_RAWdescriptor_t CommunicationControlRequestSID_raw_;
+extern const TTCN_Typedescriptor_t CommunicationControlRequestSID_descr_;
+extern const TTCN_RAWdescriptor_t CommunicationControlResponseSID_sid_raw_;
+extern const XERdescriptor_t CommunicationControlResponseSID_sid_xer_;
+extern const TTCN_OERdescriptor_t CommunicationControlResponseSID_sid_oer_;
+extern const TTCN_Typedescriptor_t CommunicationControlResponseSID_sid_descr_;
+extern const TTCN_RAWdescriptor_t CommunicationControlResponseSID_reserved_raw_;
+extern const XERdescriptor_t CommunicationControlResponseSID_reserved_xer_;
+extern const TTCN_OERdescriptor_t CommunicationControlResponseSID_reserved_oer_;
+extern const TTCN_Typedescriptor_t CommunicationControlResponseSID_reserved_descr_;
+extern const TTCN_RAWdescriptor_t CommunicationControlResponseSID_controlType_raw_;
+extern const TTCN_Typedescriptor_t CommunicationControlResponseSID_controlType_descr_;
+extern const TTCN_RAWdescriptor_t CommunicationControlResponseSID_raw_;
+extern const TTCN_Typedescriptor_t CommunicationControlResponseSID_descr_;
+extern const TTCN_RAWdescriptor_t TesterPresentRequestSID_sid_raw_;
+extern const XERdescriptor_t TesterPresentRequestSID_sid_xer_;
+extern const TTCN_OERdescriptor_t TesterPresentRequestSID_sid_oer_;
+extern const TTCN_Typedescriptor_t TesterPresentRequestSID_sid_descr_;
+extern const TTCN_RAWdescriptor_t TesterPresentRequestSID_suppressPosRspMsgIndicationBit_raw_;
+extern const TTCN_Typedescriptor_t TesterPresentRequestSID_suppressPosRspMsgIndicationBit_descr_;
+extern const TTCN_RAWdescriptor_t TesterPresentRequestSID_zero_raw_;
+extern const XERdescriptor_t TesterPresentRequestSID_zero_xer_;
+extern const TTCN_OERdescriptor_t TesterPresentRequestSID_zero_oer_;
+extern const TTCN_Typedescriptor_t TesterPresentRequestSID_zero_descr_;
+extern const TTCN_RAWdescriptor_t TesterPresentRequestSID_raw_;
+extern const TTCN_Typedescriptor_t TesterPresentRequestSID_descr_;
+extern const TTCN_RAWdescriptor_t TesterPresentResponseSID_sid_raw_;
+extern const XERdescriptor_t TesterPresentResponseSID_sid_xer_;
+extern const TTCN_OERdescriptor_t TesterPresentResponseSID_sid_oer_;
+extern const TTCN_Typedescriptor_t TesterPresentResponseSID_sid_descr_;
+extern const TTCN_RAWdescriptor_t TesterPresentResponseSID_reserved_raw_;
+extern const XERdescriptor_t TesterPresentResponseSID_reserved_xer_;
+extern const TTCN_OERdescriptor_t TesterPresentResponseSID_reserved_oer_;
+extern const TTCN_Typedescriptor_t TesterPresentResponseSID_reserved_descr_;
+extern const TTCN_RAWdescriptor_t TesterPresentResponseSID_zero_raw_;
+extern const XERdescriptor_t TesterPresentResponseSID_zero_xer_;
+extern const TTCN_OERdescriptor_t TesterPresentResponseSID_zero_oer_;
+extern const TTCN_Typedescriptor_t TesterPresentResponseSID_zero_descr_;
+extern const TTCN_RAWdescriptor_t TesterPresentResponseSID_raw_;
+extern const TTCN_Typedescriptor_t TesterPresentResponseSID_descr_;
+extern const XERdescriptor_t ServiceIdentifier_xer_;
+extern const TTCN_OERdescriptor_t ServiceIdentifier_oer_;
+extern const TTCN_Typedescriptor_t ServiceIdentifier_descr_;
+extern const TTCN_RAWdescriptor_t ReadDataByIdentifierRequest1_identifier_raw_;
+extern const XERdescriptor_t ReadDataByIdentifierRequest1_identifier_xer_;
+extern const TTCN_OERdescriptor_t ReadDataByIdentifierRequest1_identifier_oer_;
+extern const TTCN_Typedescriptor_t ReadDataByIdentifierRequest1_identifier_descr_;
+extern const TTCN_RAWdescriptor_t ReadDataByIdentifierRequest1_raw_;
+extern const TTCN_Typedescriptor_t ReadDataByIdentifierRequest1_descr_;
+extern const TTCN_RAWdescriptor_t ReadDataByIdentifierRequest2_identifier_raw_;
+extern const XERdescriptor_t ReadDataByIdentifierRequest2_identifier_xer_;
+extern const TTCN_OERdescriptor_t ReadDataByIdentifierRequest2_identifier_oer_;
+extern const TTCN_Typedescriptor_t ReadDataByIdentifierRequest2_identifier_descr_;
+extern const TTCN_RAWdescriptor_t ReadDataByIdentifierRequest2_raw_;
+extern const TTCN_Typedescriptor_t ReadDataByIdentifierRequest2_descr_;
+extern const TTCN_RAWdescriptor_t ReadDataByIdentifierRequest3_identifier_raw_;
+extern const XERdescriptor_t ReadDataByIdentifierRequest3_identifier_xer_;
+extern const TTCN_OERdescriptor_t ReadDataByIdentifierRequest3_identifier_oer_;
+extern const TTCN_Typedescriptor_t ReadDataByIdentifierRequest3_identifier_descr_;
+extern const TTCN_RAWdescriptor_t ReadDataByIdentifierRequest3_raw_;
+extern const TTCN_Typedescriptor_t ReadDataByIdentifierRequest3_descr_;
+extern const TTCN_RAWdescriptor_t ReadDataByIdentifierRequestSID_sid_raw_;
+extern const XERdescriptor_t ReadDataByIdentifierRequestSID_sid_xer_;
+extern const TTCN_OERdescriptor_t ReadDataByIdentifierRequestSID_sid_oer_;
+extern const TTCN_Typedescriptor_t ReadDataByIdentifierRequestSID_sid_descr_;
+extern const TTCN_RAWdescriptor_t ReadDataByIdentifierRequest_raw_;
+extern const TTCN_Typedescriptor_t ReadDataByIdentifierRequest_descr_;
+extern const TTCN_RAWdescriptor_t ReadDataByIdentifierRequestSID_raw_;
+extern const TTCN_Typedescriptor_t ReadDataByIdentifierRequestSID_descr_;
+extern const TTCN_RAWdescriptor_t ReadDataByIdentifierResponse1_identifier_raw_;
+extern const XERdescriptor_t ReadDataByIdentifierResponse1_identifier_xer_;
+extern const TTCN_OERdescriptor_t ReadDataByIdentifierResponse1_identifier_oer_;
+extern const TTCN_Typedescriptor_t ReadDataByIdentifierResponse1_identifier_descr_;
+extern const XERdescriptor_t ReadDataByIdentifierResponse1_readDataByIdentifierResponse_xer_;
+extern const TTCN_OERdescriptor_t ReadDataByIdentifierResponse1_readDataByIdentifierResponse_oer_;
+extern const TTCN_Typedescriptor_t ReadDataByIdentifierResponse1_readDataByIdentifierResponse_descr_;
+extern const TTCN_RAWdescriptor_t ReadDataByIdentifierResponse1_raw_;
+extern const TTCN_Typedescriptor_t ReadDataByIdentifierResponse1_descr_;
+extern const TTCN_RAWdescriptor_t ReadDataByIdentifierResponse2_identifier_raw_;
+extern const XERdescriptor_t ReadDataByIdentifierResponse2_identifier_xer_;
+extern const TTCN_OERdescriptor_t ReadDataByIdentifierResponse2_identifier_oer_;
+extern const TTCN_Typedescriptor_t ReadDataByIdentifierResponse2_identifier_descr_;
+extern const XERdescriptor_t ReadDataByIdentifierResponse2_readDataByIdentifierResponse_xer_;
+extern const TTCN_OERdescriptor_t ReadDataByIdentifierResponse2_readDataByIdentifierResponse_oer_;
+extern const TTCN_Typedescriptor_t ReadDataByIdentifierResponse2_readDataByIdentifierResponse_descr_;
+extern const TTCN_RAWdescriptor_t ReadDataByIdentifierResponse2_raw_;
+extern const TTCN_Typedescriptor_t ReadDataByIdentifierResponse2_descr_;
+extern const TTCN_RAWdescriptor_t ReadDataByIdentifierResponse3_identifier_raw_;
+extern const XERdescriptor_t ReadDataByIdentifierResponse3_identifier_xer_;
+extern const TTCN_OERdescriptor_t ReadDataByIdentifierResponse3_identifier_oer_;
+extern const TTCN_Typedescriptor_t ReadDataByIdentifierResponse3_identifier_descr_;
+extern const XERdescriptor_t ReadDataByIdentifierResponse3_readDataByIdentifierResponse_xer_;
+extern const TTCN_OERdescriptor_t ReadDataByIdentifierResponse3_readDataByIdentifierResponse_oer_;
+extern const TTCN_Typedescriptor_t ReadDataByIdentifierResponse3_readDataByIdentifierResponse_descr_;
+extern const TTCN_RAWdescriptor_t ReadDataByIdentifierResponse3_raw_;
+extern const TTCN_Typedescriptor_t ReadDataByIdentifierResponse3_descr_;
+extern const TTCN_RAWdescriptor_t ReadDataByIdentifierResponseSID_sid_raw_;
+extern const XERdescriptor_t ReadDataByIdentifierResponseSID_sid_xer_;
+extern const TTCN_OERdescriptor_t ReadDataByIdentifierResponseSID_sid_oer_;
+extern const TTCN_Typedescriptor_t ReadDataByIdentifierResponseSID_sid_descr_;
+extern const TTCN_RAWdescriptor_t ReadDataByIdentifierResponse_raw_;
+extern const TTCN_Typedescriptor_t ReadDataByIdentifierResponse_descr_;
+extern const TTCN_RAWdescriptor_t ReadDataByIdentifierResponseSID_raw_;
+extern const TTCN_Typedescriptor_t ReadDataByIdentifierResponseSID_descr_;
+extern const TTCN_RAWdescriptor_t WriteDataByIdentifierRequest1_identifier_raw_;
+extern const XERdescriptor_t WriteDataByIdentifierRequest1_identifier_xer_;
+extern const TTCN_OERdescriptor_t WriteDataByIdentifierRequest1_identifier_oer_;
+extern const TTCN_Typedescriptor_t WriteDataByIdentifierRequest1_identifier_descr_;
+extern const XERdescriptor_t WriteDataByIdentifierRequest1_dataRecord_xer_;
+extern const TTCN_OERdescriptor_t WriteDataByIdentifierRequest1_dataRecord_oer_;
+extern const TTCN_Typedescriptor_t WriteDataByIdentifierRequest1_dataRecord_descr_;
+extern const TTCN_RAWdescriptor_t WriteDataByIdentifierRequest1_raw_;
+extern const TTCN_Typedescriptor_t WriteDataByIdentifierRequest1_descr_;
+extern const TTCN_RAWdescriptor_t WriteDataByIdentifierRequest2_identifier_raw_;
+extern const XERdescriptor_t WriteDataByIdentifierRequest2_identifier_xer_;
+extern const TTCN_OERdescriptor_t WriteDataByIdentifierRequest2_identifier_oer_;
+extern const TTCN_Typedescriptor_t WriteDataByIdentifierRequest2_identifier_descr_;
+extern const XERdescriptor_t WriteDataByIdentifierRequest2_dataRecord_xer_;
+extern const TTCN_OERdescriptor_t WriteDataByIdentifierRequest2_dataRecord_oer_;
+extern const TTCN_Typedescriptor_t WriteDataByIdentifierRequest2_dataRecord_descr_;
+extern const TTCN_RAWdescriptor_t WriteDataByIdentifierRequest2_raw_;
+extern const TTCN_Typedescriptor_t WriteDataByIdentifierRequest2_descr_;
+extern const TTCN_RAWdescriptor_t WriteDataByIdentifierRequest3_identifier_raw_;
+extern const XERdescriptor_t WriteDataByIdentifierRequest3_identifier_xer_;
+extern const TTCN_OERdescriptor_t WriteDataByIdentifierRequest3_identifier_oer_;
+extern const TTCN_Typedescriptor_t WriteDataByIdentifierRequest3_identifier_descr_;
+extern const XERdescriptor_t WriteDataByIdentifierRequest3_dataRecord_xer_;
+extern const TTCN_OERdescriptor_t WriteDataByIdentifierRequest3_dataRecord_oer_;
+extern const TTCN_Typedescriptor_t WriteDataByIdentifierRequest3_dataRecord_descr_;
+extern const TTCN_RAWdescriptor_t WriteDataByIdentifierRequest3_raw_;
+extern const TTCN_Typedescriptor_t WriteDataByIdentifierRequest3_descr_;
+extern const TTCN_RAWdescriptor_t WriteDataByIdentifierRequest_raw_;
+extern const TTCN_Typedescriptor_t WriteDataByIdentifierRequest_descr_;
+extern const TTCN_RAWdescriptor_t WriteDataByIdentifierRequestSID_sid_raw_;
+extern const XERdescriptor_t WriteDataByIdentifierRequestSID_sid_xer_;
+extern const TTCN_OERdescriptor_t WriteDataByIdentifierRequestSID_sid_oer_;
+extern const TTCN_Typedescriptor_t WriteDataByIdentifierRequestSID_sid_descr_;
+extern const TTCN_RAWdescriptor_t WriteDataByIdentifierRequestSID_raw_;
+extern const TTCN_Typedescriptor_t WriteDataByIdentifierRequestSID_descr_;
+extern const TTCN_RAWdescriptor_t WriteDataByIdentifierResponse1_identifier_raw_;
+extern const XERdescriptor_t WriteDataByIdentifierResponse1_identifier_xer_;
+extern const TTCN_OERdescriptor_t WriteDataByIdentifierResponse1_identifier_oer_;
+extern const TTCN_Typedescriptor_t WriteDataByIdentifierResponse1_identifier_descr_;
+extern const TTCN_RAWdescriptor_t WriteDataByIdentifierResponse1_raw_;
+extern const TTCN_Typedescriptor_t WriteDataByIdentifierResponse1_descr_;
+extern const TTCN_RAWdescriptor_t WriteDataByIdentifierResponse2_identifier_raw_;
+extern const XERdescriptor_t WriteDataByIdentifierResponse2_identifier_xer_;
+extern const TTCN_OERdescriptor_t WriteDataByIdentifierResponse2_identifier_oer_;
+extern const TTCN_Typedescriptor_t WriteDataByIdentifierResponse2_identifier_descr_;
+extern const TTCN_RAWdescriptor_t WriteDataByIdentifierResponse2_raw_;
+extern const TTCN_Typedescriptor_t WriteDataByIdentifierResponse2_descr_;
+extern const TTCN_RAWdescriptor_t WriteDataByIdentifierResponse3_identifier_raw_;
+extern const XERdescriptor_t WriteDataByIdentifierResponse3_identifier_xer_;
+extern const TTCN_OERdescriptor_t WriteDataByIdentifierResponse3_identifier_oer_;
+extern const TTCN_Typedescriptor_t WriteDataByIdentifierResponse3_identifier_descr_;
+extern const TTCN_RAWdescriptor_t WriteDataByIdentifierResponse3_raw_;
+extern const TTCN_Typedescriptor_t WriteDataByIdentifierResponse3_descr_;
+extern const TTCN_RAWdescriptor_t WriteDataByIdentifierResponseSID_sid_raw_;
+extern const XERdescriptor_t WriteDataByIdentifierResponseSID_sid_xer_;
+extern const TTCN_OERdescriptor_t WriteDataByIdentifierResponseSID_sid_oer_;
+extern const TTCN_Typedescriptor_t WriteDataByIdentifierResponseSID_sid_descr_;
+extern const TTCN_RAWdescriptor_t WriteDataByIdentifierResponse_raw_;
+extern const TTCN_Typedescriptor_t WriteDataByIdentifierResponse_descr_;
+extern const TTCN_RAWdescriptor_t WriteDataByIdentifierResponseSID_raw_;
+extern const TTCN_Typedescriptor_t WriteDataByIdentifierResponseSID_descr_;
+extern const TTCN_RAWdescriptor_t e__RequestSID_raw_;
+extern const TTCN_Typedescriptor_t e__RequestSID_descr_;
+extern const TTCN_RAWdescriptor_t e__ResponseCode_raw_;
+extern const TTCN_Typedescriptor_t e__ResponseCode_descr_;
+extern const TTCN_RAWdescriptor_t NegativeResponseCodeSID_sid_raw_;
+extern const XERdescriptor_t NegativeResponseCodeSID_sid_xer_;
+extern const TTCN_OERdescriptor_t NegativeResponseCodeSID_sid_oer_;
+extern const TTCN_Typedescriptor_t NegativeResponseCodeSID_sid_descr_;
+extern const TTCN_RAWdescriptor_t NegativeResponseCodeSID_requestSID_raw_;
+extern const TTCN_Typedescriptor_t NegativeResponseCodeSID_requestSID_descr_;
+extern const TTCN_RAWdescriptor_t NegativeResponseCodeSID_responseCode_raw_;
+extern const TTCN_Typedescriptor_t NegativeResponseCodeSID_responseCode_descr_;
+extern const TTCN_RAWdescriptor_t NegativeResponseCodeSID_raw_;
+extern const TTCN_Typedescriptor_t NegativeResponseCodeSID_descr_;
+extern const TTCN_RAWdescriptor_t TopLevelMessage__UDS__requests_raw_;
+extern const TTCN_Typedescriptor_t TopLevelMessage__UDS__requests_descr_;
+extern const TTCN_RAWdescriptor_t TopLevelMessage__UDS__responses_raw_;
+extern const TTCN_Typedescriptor_t TopLevelMessage__UDS__responses_descr_;
+extern TTCN_Module module_object;
+
+} /* end of namespace */
+
+#endif
diff --git a/demo/UnifiedDiagnosticServices.o b/demo/UnifiedDiagnosticServices.o
new file mode 100644
index 0000000..a219e7c
--- /dev/null
+++ b/demo/UnifiedDiagnosticServices.o
Binary files differ
diff --git a/demo/UnifiedDiagnosticServices_Template.cc b/demo/UnifiedDiagnosticServices_Template.cc
new file mode 100644
index 0000000..96d6a06
--- /dev/null
+++ b/demo/UnifiedDiagnosticServices_Template.cc
@@ -0,0 +1,601 @@
+// This C++ source file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+/* Including header files */
+
+#include "UnifiedDiagnosticServices_Template.hh"
+
+namespace UnifiedDiagnosticServices__Template {
+
+/* Prototypes of static functions */
+
+static void pre_init_module();
+static void post_init_module();
+
+/* Literal string constants */
+
+static const unsigned char bs_4_bits[] = { 0 },
+bs_6_bits[] = { 0 },
+bs_7_bits[] = { 0 },
+bs_0_bits[] = { 64 },
+bs_1_bits[] = { 32 },
+bs_2_bits[] = { 96 },
+bs_3_bits[] = { 16 },
+bs_5_bits[] = { 80 };
+static const BITSTRING bs_4(1, bs_4_bits),
+bs_6(2, bs_6_bits),
+bs_7(7, bs_7_bits),
+bs_0(7, bs_0_bits),
+bs_1(7, bs_1_bits),
+bs_2(7, bs_2_bits),
+bs_3(7, bs_3_bits),
+bs_5(7, bs_5_bits);
+static const unsigned char os_0_octets[] = { 16 },
+os_2_octets[] = { 17 },
+os_12_octets[] = { 34 },
+os_4_octets[] = { 39 },
+os_6_octets[] = { 40 },
+os_14_octets[] = { 46 },
+os_8_octets[] = { 62 },
+os_1_octets[] = { 80 },
+os_3_octets[] = { 81 },
+os_13_octets[] = { 98 },
+os_5_octets[] = { 103 },
+os_7_octets[] = { 104 },
+os_15_octets[] = { 110 },
+os_16_octets[] = { 127 },
+os_9_octets[] = { 128, 0 },
+os_10_octets[] = { 128, 1 },
+os_11_octets[] = { 128, 2 };
+static const OCTETSTRING os_0(1, os_0_octets),
+os_2(1, os_2_octets),
+os_12(1, os_12_octets),
+os_4(1, os_4_octets),
+os_6(1, os_6_octets),
+os_14(1, os_14_octets),
+os_8(1, os_8_octets),
+os_1(1, os_1_octets),
+os_3(1, os_3_octets),
+os_13(1, os_13_octets),
+os_5(1, os_5_octets),
+os_7(1, os_7_octets),
+os_15(1, os_15_octets),
+os_16(1, os_16_octets),
+os_9(2, os_9_octets),
+os_10(2, os_10_octets),
+os_11(2, os_11_octets);
+static const unsigned char module_checksum[] = { 0x7f, 0xa0, 0xbc, 0x66, 0x30, 0x00, 0x1b, 0x64, 0x4d, 0x53, 0x23, 0x92, 0xf5, 0xb2, 0x2a, 0x2a };
+
+/* Global variable definitions */
+
+static UnifiedDiagnosticServices::DefaultSessionRequest_template template_t__DefaultSessionRequest;
+const UnifiedDiagnosticServices::DefaultSessionRequest_template& t__DefaultSessionRequest = template_t__DefaultSessionRequest;
+static UnifiedDiagnosticServices::ProgrammingSessionRequest_template template_t__ProgrammingSessionRequest;
+const UnifiedDiagnosticServices::ProgrammingSessionRequest_template& t__ProgrammingSessionRequest = template_t__ProgrammingSessionRequest;
+static UnifiedDiagnosticServices::ExtendedDiagnosticSessionRequest_template template_t__ExtendedDiagnosticSessionRequest;
+const UnifiedDiagnosticServices::ExtendedDiagnosticSessionRequest_template& t__ExtendedDiagnosticSessionRequest = template_t__ExtendedDiagnosticSessionRequest;
+static UnifiedDiagnosticServices::SafetySystemDiagnosticSessionRequest_template template_t__SafetySystemDiagnosticSessionRequest;
+const UnifiedDiagnosticServices::SafetySystemDiagnosticSessionRequest_template& t__SafetySystemDiagnosticSessionRequest = template_t__SafetySystemDiagnosticSessionRequest;
+static UnifiedDiagnosticServices::HardResetRequest_template template_t__HardResetRequest;
+const UnifiedDiagnosticServices::HardResetRequest_template& t__HardResetRequest = template_t__HardResetRequest;
+static UnifiedDiagnosticServices::KeyOffOnResetRequest_template template_t__KeyOffOnResetRequest;
+const UnifiedDiagnosticServices::KeyOffOnResetRequest_template& t__KeyOffOnResetRequest = template_t__KeyOffOnResetRequest;
+static UnifiedDiagnosticServices::SoftResetRequest_template template_t__SoftResetRequest;
+const UnifiedDiagnosticServices::SoftResetRequest_template& t__SoftResetRequest = template_t__SoftResetRequest;
+static UnifiedDiagnosticServices::EnableRapidPowerShutDownRequest_template template_t__EnableRapidPowerShutDownRequest;
+const UnifiedDiagnosticServices::EnableRapidPowerShutDownRequest_template& t__EnableRapidPowerShutDownRequest = template_t__EnableRapidPowerShutDownRequest;
+static UnifiedDiagnosticServices::DisableRapidPowerShutDownRequest_template template_t__DisableRapidPowerShutDownRequest;
+const UnifiedDiagnosticServices::DisableRapidPowerShutDownRequest_template& t__DisableRapidPowerShutDownRequest = template_t__DisableRapidPowerShutDownRequest;
+static UnifiedDiagnosticServices::HardResetResponse_template template_t__HardResetResponse;
+const UnifiedDiagnosticServices::HardResetResponse_template& t__HardResetResponse = template_t__HardResetResponse;
+static UnifiedDiagnosticServices::KeyOffOnResetResponse_template template_t__KeyOffOnResetResponse;
+const UnifiedDiagnosticServices::KeyOffOnResetResponse_template& t__KeyOffOnResetResponse = template_t__KeyOffOnResetResponse;
+static UnifiedDiagnosticServices::SoftResetResponse_template template_t__SoftResetResponse;
+const UnifiedDiagnosticServices::SoftResetResponse_template& t__SoftResetResponse = template_t__SoftResetResponse;
+static UnifiedDiagnosticServices::DisableRapidPowerShutDownResponse_template template_t__DisableRapidPowerShutDownResponse;
+const UnifiedDiagnosticServices::DisableRapidPowerShutDownResponse_template& t__DisableRapidPowerShutDownResponse = template_t__DisableRapidPowerShutDownResponse;
+static UnifiedDiagnosticServices::SendKeyResponse0_template template_t__sendKeyResponse0;
+const UnifiedDiagnosticServices::SendKeyResponse0_template& t__sendKeyResponse0 = template_t__sendKeyResponse0;
+static UnifiedDiagnosticServices::SendKeyResponse1_template template_t__sendKeyResponse1;
+const UnifiedDiagnosticServices::SendKeyResponse1_template& t__sendKeyResponse1 = template_t__sendKeyResponse1;
+static UnifiedDiagnosticServices::ReadDataByIdentifierRequest1_template template_t__ReadDataByIdentifierRequest1;
+const UnifiedDiagnosticServices::ReadDataByIdentifierRequest1_template& t__ReadDataByIdentifierRequest1 = template_t__ReadDataByIdentifierRequest1;
+static UnifiedDiagnosticServices::ReadDataByIdentifierRequest2_template template_t__ReadDataByIdentifierRequest2;
+const UnifiedDiagnosticServices::ReadDataByIdentifierRequest2_template& t__ReadDataByIdentifierRequest2 = template_t__ReadDataByIdentifierRequest2;
+static UnifiedDiagnosticServices::ReadDataByIdentifierRequest3_template template_t__ReadDataByIdentifierRequest3;
+const UnifiedDiagnosticServices::ReadDataByIdentifierRequest3_template& t__ReadDataByIdentifierRequest3 = template_t__ReadDataByIdentifierRequest3;
+static UnifiedDiagnosticServices::WriteDataByIdentifierResponse1_template template_t__WriteDataByIdentifierResponse1;
+const UnifiedDiagnosticServices::WriteDataByIdentifierResponse1_template& t__WriteDataByIdentifierResponse1 = template_t__WriteDataByIdentifierResponse1;
+static UnifiedDiagnosticServices::WriteDataByIdentifierResponse2_template template_t__WriteDataByIdentifierResponse2;
+const UnifiedDiagnosticServices::WriteDataByIdentifierResponse2_template& t__WriteDataByIdentifierResponse2 = template_t__WriteDataByIdentifierResponse2;
+static UnifiedDiagnosticServices::WriteDataByIdentifierResponse3_template template_t__WriteDataByIdentifierResponse3;
+const UnifiedDiagnosticServices::WriteDataByIdentifierResponse3_template& t__WriteDataByIdentifierResponse3 = template_t__WriteDataByIdentifierResponse3;
+TTCN_Module module_object("UnifiedDiagnosticServices_Template", __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);
+
+static const RuntimeVersionChecker ver_checker(  current_runtime_version.requires_major_version_6,
+  current_runtime_version.requires_minor_version_6,
+  current_runtime_version.requires_patch_level_0,  current_runtime_version.requires_runtime_1);
+
+/* Bodies of functions, altsteps and testcases */
+
+UnifiedDiagnosticServices::TopLevelMessage__UDS__requests_template t__diagnosticSessionControlRequestSID(const UnifiedDiagnosticServices::SuppressPosRspMsgIndicationBitType& p__suppressPosRspMsgIndicationBit, const UnifiedDiagnosticServices::DiagnosticSessionRequestType_template& p__diagnosticSessionType)
+{
+TTCN_Location current_location("UnifiedDiagnosticServices_Template.ttcn", 24, TTCN_Location::LOCATION_TEMPLATE, "t_diagnosticSessionControlRequestSID");
+UnifiedDiagnosticServices::TopLevelMessage__UDS__requests_template ret_val;
+{
+UnifiedDiagnosticServices::DiagnosticSessionControlRequestSID_template& tmp_0 = ret_val.diagnosticSessionControlRequestSID();
+tmp_0.sid() = os_0;
+tmp_0.suppressPosRspMsgIndicationBit() = p__suppressPosRspMsgIndicationBit;
+tmp_0.diagnosticSessionType() = p__diagnosticSessionType;
+}
+return ret_val;
+}
+
+UnifiedDiagnosticServices::DefaultSessionResponse_template t__DefaultSessionResponse(const OCTETSTRING& p__p2ServerMax, const OCTETSTRING& p__p2StarServerMax)
+{
+TTCN_Location current_location("UnifiedDiagnosticServices_Template.ttcn", 37, TTCN_Location::LOCATION_TEMPLATE, "t_DefaultSessionResponse");
+UnifiedDiagnosticServices::DefaultSessionResponse_template ret_val;
+ret_val.diagnosticSessionType() = bs_0;
+ret_val.p2ServerMax() = p__p2ServerMax;
+ret_val.p2StarServerMax() = p__p2StarServerMax;
+return ret_val;
+}
+
+UnifiedDiagnosticServices::ProgrammingSessionResponse_template t__ProgrammingSessionResponse(const OCTETSTRING& p__p2ServerMax, const OCTETSTRING& p__p2StarServerMax)
+{
+TTCN_Location current_location("UnifiedDiagnosticServices_Template.ttcn", 43, TTCN_Location::LOCATION_TEMPLATE, "t_ProgrammingSessionResponse");
+UnifiedDiagnosticServices::ProgrammingSessionResponse_template ret_val;
+ret_val.diagnosticSessionType() = bs_1;
+ret_val.p2ServerMax() = p__p2ServerMax;
+ret_val.p2StarServerMax() = p__p2StarServerMax;
+return ret_val;
+}
+
+UnifiedDiagnosticServices::ExtendedDiagnosticSessionResponse_template t__ExtendedDiagnosticSessionResponse(const OCTETSTRING& p__p2ServerMax, const OCTETSTRING& p__p2StarServerMax)
+{
+TTCN_Location current_location("UnifiedDiagnosticServices_Template.ttcn", 49, TTCN_Location::LOCATION_TEMPLATE, "t_ExtendedDiagnosticSessionResponse");
+UnifiedDiagnosticServices::ExtendedDiagnosticSessionResponse_template ret_val;
+ret_val.diagnosticSessionType() = bs_2;
+ret_val.p2ServerMax() = p__p2ServerMax;
+ret_val.p2StarServerMax() = p__p2StarServerMax;
+return ret_val;
+}
+
+UnifiedDiagnosticServices::SafetySystemDiagnosticSessionResponse_template t__SafetySystemDiagnosticSessionResponse(const OCTETSTRING& p__p2ServerMax, const OCTETSTRING& p__p2StarServerMax)
+{
+TTCN_Location current_location("UnifiedDiagnosticServices_Template.ttcn", 55, TTCN_Location::LOCATION_TEMPLATE, "t_SafetySystemDiagnosticSessionResponse");
+UnifiedDiagnosticServices::SafetySystemDiagnosticSessionResponse_template ret_val;
+ret_val.diagnosticSessionType() = bs_3;
+ret_val.p2ServerMax() = p__p2ServerMax;
+ret_val.p2StarServerMax() = p__p2StarServerMax;
+return ret_val;
+}
+
+UnifiedDiagnosticServices::TopLevelMessage__UDS__responses_template t__diagnosticSessionControlResponseSID(const UnifiedDiagnosticServices::DiagnosticSessionResponseType_template& p__diagnosticSessionType)
+{
+TTCN_Location current_location("UnifiedDiagnosticServices_Template.ttcn", 61, TTCN_Location::LOCATION_TEMPLATE, "t_diagnosticSessionControlResponseSID");
+UnifiedDiagnosticServices::TopLevelMessage__UDS__responses_template ret_val;
+{
+UnifiedDiagnosticServices::DiagnosticSessionControlResponseSID_template& tmp_1 = ret_val.diagnosticSessionControlResponseSID();
+tmp_1.sid() = os_1;
+tmp_1.reserved() = bs_4;
+tmp_1.diagnosticSessionType() = p__diagnosticSessionType;
+}
+return ret_val;
+}
+
+UnifiedDiagnosticServices::TopLevelMessage__UDS__requests_template t__ecuResetRequestTypeSID(const UnifiedDiagnosticServices::SuppressPosRspMsgIndicationBitType& p__suppressPosRspMsgIndicationBit, const UnifiedDiagnosticServices::ECUResetRequestType_template& p__resetType)
+{
+TTCN_Location current_location("UnifiedDiagnosticServices_Template.ttcn", 94, TTCN_Location::LOCATION_TEMPLATE, "t_ecuResetRequestTypeSID");
+UnifiedDiagnosticServices::TopLevelMessage__UDS__requests_template ret_val;
+{
+UnifiedDiagnosticServices::ECUResetRequestSID_template& tmp_2 = ret_val.ecuResetRequestSID();
+tmp_2.sid() = os_2;
+tmp_2.suppressPosRspMsgIndicationBit() = p__suppressPosRspMsgIndicationBit;
+tmp_2.resetType() = p__resetType;
+}
+return ret_val;
+}
+
+UnifiedDiagnosticServices::EnableRapidPowerShutDownResponse_template t__EnableRapidPowerShutDownResponse(const OCTETSTRING& p__powerDownTime)
+{
+TTCN_Location current_location("UnifiedDiagnosticServices_Template.ttcn", 120, TTCN_Location::LOCATION_TEMPLATE, "t_EnableRapidPowerShutDownResponse");
+UnifiedDiagnosticServices::EnableRapidPowerShutDownResponse_template ret_val;
+ret_val.resetType() = bs_3;
+ret_val.powerDownTime() = p__powerDownTime;
+return ret_val;
+}
+
+UnifiedDiagnosticServices::TopLevelMessage__UDS__responses_template t__ecuResetResponseTypeSID(const UnifiedDiagnosticServices::ECUResetResponseType_template& p__resetType)
+{
+TTCN_Location current_location("UnifiedDiagnosticServices_Template.ttcn", 129, TTCN_Location::LOCATION_TEMPLATE, "t_ecuResetResponseTypeSID");
+UnifiedDiagnosticServices::TopLevelMessage__UDS__responses_template ret_val;
+{
+UnifiedDiagnosticServices::ECUResetResponseSID_template& tmp_3 = ret_val.ecuResetResponseSID();
+tmp_3.sid() = os_3;
+tmp_3.reserved() = bs_4;
+tmp_3.resetType() = p__resetType;
+}
+return ret_val;
+}
+
+UnifiedDiagnosticServices::RequestSeedRequest0_template t__requestSeedRequest0(const OCTETSTRING& p__securityAccessDataRecord)
+{
+TTCN_Location current_location("UnifiedDiagnosticServices_Template.ttcn", 142, TTCN_Location::LOCATION_TEMPLATE, "t_requestSeedRequest0");
+UnifiedDiagnosticServices::RequestSeedRequest0_template ret_val;
+ret_val.securityAccessType() = bs_0;
+ret_val.securityAccessDataRecord() = p__securityAccessDataRecord;
+return ret_val;
+}
+
+UnifiedDiagnosticServices::SendKeyRequest0_template t__sendKeyRequest0(const OCTETSTRING& p__securityKey)
+{
+TTCN_Location current_location("UnifiedDiagnosticServices_Template.ttcn", 147, TTCN_Location::LOCATION_TEMPLATE, "t_sendKeyRequest0");
+UnifiedDiagnosticServices::SendKeyRequest0_template ret_val;
+ret_val.securityAccessType() = bs_1;
+ret_val.securityKey() = p__securityKey;
+return ret_val;
+}
+
+UnifiedDiagnosticServices::RequestSeedRequest1_template t__requestSeedRequest1(const OCTETSTRING& p__securityAccessDataRecord)
+{
+TTCN_Location current_location("UnifiedDiagnosticServices_Template.ttcn", 152, TTCN_Location::LOCATION_TEMPLATE, "t_requestSeedRequest1");
+UnifiedDiagnosticServices::RequestSeedRequest1_template ret_val;
+ret_val.securityAccessType() = bs_2;
+ret_val.securityAccessDataRecord() = p__securityAccessDataRecord;
+return ret_val;
+}
+
+UnifiedDiagnosticServices::SendKeyRequest1_template t__sendKeyRequest1(const OCTETSTRING& p__securityKey)
+{
+TTCN_Location current_location("UnifiedDiagnosticServices_Template.ttcn", 157, TTCN_Location::LOCATION_TEMPLATE, "t_sendKeyRequest1");
+UnifiedDiagnosticServices::SendKeyRequest1_template ret_val;
+ret_val.securityAccessType() = bs_3;
+ret_val.securityKey() = p__securityKey;
+return ret_val;
+}
+
+UnifiedDiagnosticServices::TopLevelMessage__UDS__requests_template t__securityAccessRequest(const UnifiedDiagnosticServices::SuppressPosRspMsgIndicationBitType& p__suppressPosRspMsgIndicationBit, const UnifiedDiagnosticServices::SecurityAccessRequestType_template& p__securityAccessType)
+{
+TTCN_Location current_location("UnifiedDiagnosticServices_Template.ttcn", 162, TTCN_Location::LOCATION_TEMPLATE, "t_securityAccessRequest");
+UnifiedDiagnosticServices::TopLevelMessage__UDS__requests_template ret_val;
+{
+UnifiedDiagnosticServices::SecurityAccessRequestSID_template& tmp_4 = ret_val.securityAccessRequestSID();
+tmp_4.sid() = os_4;
+tmp_4.suppressPosRspMsgIndicationBit() = p__suppressPosRspMsgIndicationBit;
+tmp_4.securityAccessType() = p__securityAccessType;
+}
+return ret_val;
+}
+
+UnifiedDiagnosticServices::RequestSeedResponse0_template t__requestSeedResponse0(const OCTETSTRING& p__securitySeed)
+{
+TTCN_Location current_location("UnifiedDiagnosticServices_Template.ttcn", 176, TTCN_Location::LOCATION_TEMPLATE, "t_requestSeedResponse0");
+UnifiedDiagnosticServices::RequestSeedResponse0_template ret_val;
+ret_val.securityAccessType() = bs_0;
+ret_val.securitySeed() = p__securitySeed;
+return ret_val;
+}
+
+UnifiedDiagnosticServices::RequestSeedResponse1_template t__requestSeedResponse1(const OCTETSTRING& p__securitySeed)
+{
+TTCN_Location current_location("UnifiedDiagnosticServices_Template.ttcn", 185, TTCN_Location::LOCATION_TEMPLATE, "t_requestSeedResponse1");
+UnifiedDiagnosticServices::RequestSeedResponse1_template ret_val;
+ret_val.securityAccessType() = bs_2;
+ret_val.securitySeed() = p__securitySeed;
+return ret_val;
+}
+
+UnifiedDiagnosticServices::TopLevelMessage__UDS__responses_template t__SecurityAccessResponseSID(const UnifiedDiagnosticServices::SecurityAccessResponseType_template& p__securityAccessType)
+{
+TTCN_Location current_location("UnifiedDiagnosticServices_Template.ttcn", 194, TTCN_Location::LOCATION_TEMPLATE, "t_SecurityAccessResponseSID");
+UnifiedDiagnosticServices::TopLevelMessage__UDS__responses_template ret_val;
+{
+UnifiedDiagnosticServices::SecurityAccessResponseSID_template& tmp_5 = ret_val.securityAccessResponseSID();
+tmp_5.sid() = os_5;
+tmp_5.reserved() = bs_4;
+tmp_5.securityAccessType() = p__securityAccessType;
+}
+return ret_val;
+}
+
+UnifiedDiagnosticServices::CommunicationType_template t__communicationType(const UnifiedDiagnosticServices::e__DisableEnable& p__disableEnable, const UnifiedDiagnosticServices::e__CommunicationMessages& p__communicationMessages)
+{
+TTCN_Location current_location("UnifiedDiagnosticServices_Template.ttcn", 206, TTCN_Location::LOCATION_TEMPLATE, "t_communicationType");
+UnifiedDiagnosticServices::CommunicationType_template ret_val;
+ret_val.disableEnable() = p__disableEnable;
+ret_val.reserved() = bs_6;
+ret_val.communicationMessages() = p__communicationMessages;
+return ret_val;
+}
+
+UnifiedDiagnosticServices::CommunicationControlRequestType_template t__EnableRxAndTxRequest(const UnifiedDiagnosticServices::SuppressPosRspMsgIndicationBitType& p__suppressPosRspMsgIndicationBit, const UnifiedDiagnosticServices::CommunicationType_template& p__communicationType)
+{
+TTCN_Location current_location("UnifiedDiagnosticServices_Template.ttcn", 216, TTCN_Location::LOCATION_TEMPLATE, "t_EnableRxAndTxRequest");
+UnifiedDiagnosticServices::CommunicationControlRequestType_template ret_val;
+{
+UnifiedDiagnosticServices::EnableRxAndTxRequest_template& tmp_6 = ret_val.enableRxAndTxRequest();
+tmp_6.suppressPosRspMsgIndicationBit() = p__suppressPosRspMsgIndicationBit;
+tmp_6.controlType() = bs_7;
+tmp_6.communicationType() = p__communicationType;
+}
+return ret_val;
+}
+
+UnifiedDiagnosticServices::CommunicationControlRequestType_template t__EnableRxAndDisableTxRequest(const UnifiedDiagnosticServices::SuppressPosRspMsgIndicationBitType& p__suppressPosRspMsgIndicationBit, const UnifiedDiagnosticServices::CommunicationType_template& p__communicationType)
+{
+TTCN_Location current_location("UnifiedDiagnosticServices_Template.ttcn", 226, TTCN_Location::LOCATION_TEMPLATE, "t_EnableRxAndDisableTxRequest");
+UnifiedDiagnosticServices::CommunicationControlRequestType_template ret_val;
+{
+UnifiedDiagnosticServices::EnableRxAndDisableTxRequest_template& tmp_7 = ret_val.enableRxAndDisableTxRequest();
+tmp_7.suppressPosRspMsgIndicationBit() = p__suppressPosRspMsgIndicationBit;
+tmp_7.controlType() = bs_0;
+tmp_7.communicationType() = p__communicationType;
+}
+return ret_val;
+}
+
+UnifiedDiagnosticServices::CommunicationControlRequestType_template t__DisableRxAndEnableTxRequest(const UnifiedDiagnosticServices::SuppressPosRspMsgIndicationBitType& p__suppressPosRspMsgIndicationBit, const UnifiedDiagnosticServices::CommunicationType_template& p__communicationType)
+{
+TTCN_Location current_location("UnifiedDiagnosticServices_Template.ttcn", 236, TTCN_Location::LOCATION_TEMPLATE, "t_DisableRxAndEnableTxRequest");
+UnifiedDiagnosticServices::CommunicationControlRequestType_template ret_val;
+{
+UnifiedDiagnosticServices::DisableRxAndEnableTxRequest_template& tmp_8 = ret_val.disableRxAndEnableTxRequest();
+tmp_8.suppressPosRspMsgIndicationBit() = p__suppressPosRspMsgIndicationBit;
+tmp_8.controlType() = bs_1;
+tmp_8.communicationType() = p__communicationType;
+}
+return ret_val;
+}
+
+UnifiedDiagnosticServices::CommunicationControlRequestType_template t__DisableRxAndTxRequest(const UnifiedDiagnosticServices::SuppressPosRspMsgIndicationBitType& p__suppressPosRspMsgIndicationBit, const UnifiedDiagnosticServices::CommunicationType_template& p__communicationType)
+{
+TTCN_Location current_location("UnifiedDiagnosticServices_Template.ttcn", 246, TTCN_Location::LOCATION_TEMPLATE, "t_DisableRxAndTxRequest");
+UnifiedDiagnosticServices::CommunicationControlRequestType_template ret_val;
+{
+UnifiedDiagnosticServices::DisableRxAndTxRequest_template& tmp_9 = ret_val.disableRxAndTxRequest();
+tmp_9.suppressPosRspMsgIndicationBit() = p__suppressPosRspMsgIndicationBit;
+tmp_9.controlType() = bs_2;
+tmp_9.communicationType() = p__communicationType;
+}
+return ret_val;
+}
+
+UnifiedDiagnosticServices::TopLevelMessage__UDS__requests_template t__communicationControlRequest(const UnifiedDiagnosticServices::CommunicationControlRequestType_template& p__communicationControlRequestType)
+{
+TTCN_Location current_location("UnifiedDiagnosticServices_Template.ttcn", 256, TTCN_Location::LOCATION_TEMPLATE, "t_communicationControlRequest");
+UnifiedDiagnosticServices::TopLevelMessage__UDS__requests_template ret_val;
+{
+UnifiedDiagnosticServices::CommunicationControlRequestSID_template& tmp_10 = ret_val.communicationControlRequestSID();
+tmp_10.sid() = os_6;
+tmp_10.communicationControlRequestType() = p__communicationControlRequestType;
+}
+return ret_val;
+}
+
+UnifiedDiagnosticServices::TopLevelMessage__UDS__responses_template t__communicationControlResponse(const UnifiedDiagnosticServices::e__ControlType_template& p__controlType)
+{
+TTCN_Location current_location("UnifiedDiagnosticServices_Template.ttcn", 268, TTCN_Location::LOCATION_TEMPLATE, "t_communicationControlResponse");
+UnifiedDiagnosticServices::TopLevelMessage__UDS__responses_template ret_val;
+{
+UnifiedDiagnosticServices::CommunicationControlResponseSID_template& tmp_11 = ret_val.communicationControlResponseSID();
+tmp_11.sid() = os_7;
+tmp_11.reserved() = bs_4;
+tmp_11.controlType() = p__controlType;
+}
+return ret_val;
+}
+
+UnifiedDiagnosticServices::TopLevelMessage__UDS__requests_template t__testerPresentRequest(const UnifiedDiagnosticServices::SuppressPosRspMsgIndicationBitType& p__suppressPosRspMsgIndicationBit)
+{
+TTCN_Location current_location("UnifiedDiagnosticServices_Template.ttcn", 280, TTCN_Location::LOCATION_TEMPLATE, "t_testerPresentRequest");
+UnifiedDiagnosticServices::TopLevelMessage__UDS__requests_template ret_val;
+{
+UnifiedDiagnosticServices::TesterPresentRequestSID_template& tmp_12 = ret_val.testerPresentRequestSID();
+tmp_12.sid() = os_8;
+tmp_12.suppressPosRspMsgIndicationBit() = p__suppressPosRspMsgIndicationBit;
+tmp_12.zero() = bs_7;
+}
+return ret_val;
+}
+
+UnifiedDiagnosticServices::TopLevelMessage__UDS__requests_template t__ReadDataByIdentifierRequestSID(const UnifiedDiagnosticServices::ReadDataByIdentifierRequest_template& p__readDataByIdentifierRequest)
+{
+TTCN_Location current_location("UnifiedDiagnosticServices_Template.ttcn", 308, TTCN_Location::LOCATION_TEMPLATE, "t_ReadDataByIdentifierRequestSID");
+UnifiedDiagnosticServices::TopLevelMessage__UDS__requests_template ret_val;
+{
+UnifiedDiagnosticServices::ReadDataByIdentifierRequestSID_template& tmp_13 = ret_val.readDataByIdentifierRequestSID();
+tmp_13.sid() = os_12;
+tmp_13.readDataByIdentifierRequest() = p__readDataByIdentifierRequest;
+}
+return ret_val;
+}
+
+UnifiedDiagnosticServices::ReadDataByIdentifierResponse1_template t__ReadDataByIdentifierResponse1(const OCTETSTRING& p__readDataByIdentifierResponse)
+{
+TTCN_Location current_location("UnifiedDiagnosticServices_Template.ttcn", 319, TTCN_Location::LOCATION_TEMPLATE, "t_ReadDataByIdentifierResponse1");
+UnifiedDiagnosticServices::ReadDataByIdentifierResponse1_template ret_val;
+ret_val.identifier() = os_9;
+ret_val.readDataByIdentifierResponse() = p__readDataByIdentifierResponse;
+return ret_val;
+}
+
+UnifiedDiagnosticServices::ReadDataByIdentifierResponse2_template t__ReadDataByIdentifierResponse2(const OCTETSTRING& p__readDataByIdentifierResponse)
+{
+TTCN_Location current_location("UnifiedDiagnosticServices_Template.ttcn", 324, TTCN_Location::LOCATION_TEMPLATE, "t_ReadDataByIdentifierResponse2");
+UnifiedDiagnosticServices::ReadDataByIdentifierResponse2_template ret_val;
+ret_val.identifier() = os_10;
+ret_val.readDataByIdentifierResponse() = p__readDataByIdentifierResponse;
+return ret_val;
+}
+
+UnifiedDiagnosticServices::ReadDataByIdentifierResponse3_template t__ReadDataByIdentifierResponse3(const OCTETSTRING& p__readDataByIdentifierResponse)
+{
+TTCN_Location current_location("UnifiedDiagnosticServices_Template.ttcn", 329, TTCN_Location::LOCATION_TEMPLATE, "t_ReadDataByIdentifierResponse3");
+UnifiedDiagnosticServices::ReadDataByIdentifierResponse3_template ret_val;
+ret_val.identifier() = os_11;
+ret_val.readDataByIdentifierResponse() = p__readDataByIdentifierResponse;
+return ret_val;
+}
+
+UnifiedDiagnosticServices::TopLevelMessage__UDS__responses_template t__ReadDataByIdentifierResponseSID(const UnifiedDiagnosticServices::ReadDataByIdentifierResponse_template& p__readDataByIdentifierResponse)
+{
+TTCN_Location current_location("UnifiedDiagnosticServices_Template.ttcn", 334, TTCN_Location::LOCATION_TEMPLATE, "t_ReadDataByIdentifierResponseSID");
+UnifiedDiagnosticServices::TopLevelMessage__UDS__responses_template ret_val;
+{
+UnifiedDiagnosticServices::ReadDataByIdentifierResponseSID_template& tmp_14 = ret_val.readDataByIdentifierResponseSID();
+tmp_14.sid() = os_13;
+tmp_14.readDataByIdentifierResponse() = p__readDataByIdentifierResponse;
+}
+return ret_val;
+}
+
+UnifiedDiagnosticServices::WriteDataByIdentifierRequest1_template t__WriteDataByIdentifierRequest1(const OCTETSTRING& p__dataRecord)
+{
+TTCN_Location current_location("UnifiedDiagnosticServices_Template.ttcn", 344, TTCN_Location::LOCATION_TEMPLATE, "t_WriteDataByIdentifierRequest1");
+UnifiedDiagnosticServices::WriteDataByIdentifierRequest1_template ret_val;
+ret_val.identifier() = os_9;
+ret_val.dataRecord() = p__dataRecord;
+return ret_val;
+}
+
+UnifiedDiagnosticServices::WriteDataByIdentifierRequest2_template t__WriteDataByIdentifierRequest2(const OCTETSTRING& p__dataRecord)
+{
+TTCN_Location current_location("UnifiedDiagnosticServices_Template.ttcn", 349, TTCN_Location::LOCATION_TEMPLATE, "t_WriteDataByIdentifierRequest2");
+UnifiedDiagnosticServices::WriteDataByIdentifierRequest2_template ret_val;
+ret_val.identifier() = os_10;
+ret_val.dataRecord() = p__dataRecord;
+return ret_val;
+}
+
+UnifiedDiagnosticServices::WriteDataByIdentifierRequest3_template t__WriteDataByIdentifierRequest3(const OCTETSTRING& p__dataRecord)
+{
+TTCN_Location current_location("UnifiedDiagnosticServices_Template.ttcn", 354, TTCN_Location::LOCATION_TEMPLATE, "t_WriteDataByIdentifierRequest3");
+UnifiedDiagnosticServices::WriteDataByIdentifierRequest3_template ret_val;
+ret_val.identifier() = os_11;
+ret_val.dataRecord() = p__dataRecord;
+return ret_val;
+}
+
+UnifiedDiagnosticServices::TopLevelMessage__UDS__requests_template t__WriteDataByIdentifierRequestSID(const UnifiedDiagnosticServices::WriteDataByIdentifierRequest_template& p__writeDataByIdentifierRequest)
+{
+TTCN_Location current_location("UnifiedDiagnosticServices_Template.ttcn", 359, TTCN_Location::LOCATION_TEMPLATE, "t_WriteDataByIdentifierRequestSID");
+UnifiedDiagnosticServices::TopLevelMessage__UDS__requests_template ret_val;
+{
+UnifiedDiagnosticServices::WriteDataByIdentifierRequestSID_template& tmp_15 = ret_val.writeDataByIdentifierRequestSID();
+tmp_15.sid() = os_14;
+tmp_15.writeDataByIdentifierRequest() = p__writeDataByIdentifierRequest;
+}
+return ret_val;
+}
+
+UnifiedDiagnosticServices::TopLevelMessage__UDS__responses_template t__WriteDataByIdentifierResponseSID(const UnifiedDiagnosticServices::WriteDataByIdentifierResponse_template& p__writeDataByIdentifierResponse)
+{
+TTCN_Location current_location("UnifiedDiagnosticServices_Template.ttcn", 384, TTCN_Location::LOCATION_TEMPLATE, "t_WriteDataByIdentifierResponseSID");
+UnifiedDiagnosticServices::TopLevelMessage__UDS__responses_template ret_val;
+{
+UnifiedDiagnosticServices::WriteDataByIdentifierResponseSID_template& tmp_16 = ret_val.writeDataByIdentifierResponseSID();
+tmp_16.sid() = os_15;
+tmp_16.writeDataByIdentifierResponse() = p__writeDataByIdentifierResponse;
+}
+return ret_val;
+}
+
+UnifiedDiagnosticServices::TopLevelMessage__UDS__responses_template t__NegativeResponseCodeSID(const UnifiedDiagnosticServices::e__RequestSID& p__requestSID, const UnifiedDiagnosticServices::e__ResponseCode& p__responseCode)
+{
+TTCN_Location current_location("UnifiedDiagnosticServices_Template.ttcn", 393, TTCN_Location::LOCATION_TEMPLATE, "t_NegativeResponseCodeSID");
+UnifiedDiagnosticServices::TopLevelMessage__UDS__responses_template ret_val;
+{
+UnifiedDiagnosticServices::NegativeResponseCodeSID_template& tmp_17 = ret_val.negativeResponseCodeSID();
+tmp_17.sid() = os_16;
+tmp_17.requestSID() = p__requestSID;
+tmp_17.responseCode() = p__responseCode;
+}
+return ret_val;
+}
+
+
+/* Bodies of static functions */
+
+static void pre_init_module()
+{
+TTCN_Location current_location("UnifiedDiagnosticServices_Template.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "UnifiedDiagnosticServices_Template");
+UnifiedDiagnosticServices::module_object.pre_init_module();
+}
+
+static void post_init_module()
+{
+TTCN_Location current_location("UnifiedDiagnosticServices_Template.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "UnifiedDiagnosticServices_Template");
+UnifiedDiagnosticServices::module_object.post_init_module();
+current_location.update_lineno(8);
+#line 8 "UnifiedDiagnosticServices_Template.ttcn"
+template_t__DefaultSessionRequest.diagnosticSessionType() = bs_0;
+current_location.update_lineno(12);
+#line 12 "UnifiedDiagnosticServices_Template.ttcn"
+template_t__ProgrammingSessionRequest.diagnosticSessionType() = bs_1;
+current_location.update_lineno(16);
+#line 16 "UnifiedDiagnosticServices_Template.ttcn"
+template_t__ExtendedDiagnosticSessionRequest.diagnosticSessionType() = bs_2;
+current_location.update_lineno(20);
+#line 20 "UnifiedDiagnosticServices_Template.ttcn"
+template_t__SafetySystemDiagnosticSessionRequest.diagnosticSessionType() = bs_3;
+current_location.update_lineno(74);
+#line 74 "UnifiedDiagnosticServices_Template.ttcn"
+template_t__HardResetRequest.resetType() = bs_0;
+current_location.update_lineno(78);
+#line 78 "UnifiedDiagnosticServices_Template.ttcn"
+template_t__KeyOffOnResetRequest.resetType() = bs_1;
+current_location.update_lineno(82);
+#line 82 "UnifiedDiagnosticServices_Template.ttcn"
+template_t__SoftResetRequest.resetType() = bs_2;
+current_location.update_lineno(86);
+#line 86 "UnifiedDiagnosticServices_Template.ttcn"
+template_t__EnableRapidPowerShutDownRequest.resetType() = bs_3;
+current_location.update_lineno(90);
+#line 90 "UnifiedDiagnosticServices_Template.ttcn"
+template_t__DisableRapidPowerShutDownRequest.resetType() = bs_5;
+current_location.update_lineno(108);
+#line 108 "UnifiedDiagnosticServices_Template.ttcn"
+template_t__HardResetResponse.resetType() = bs_0;
+current_location.update_lineno(112);
+#line 112 "UnifiedDiagnosticServices_Template.ttcn"
+template_t__KeyOffOnResetResponse.resetType() = bs_1;
+current_location.update_lineno(116);
+#line 116 "UnifiedDiagnosticServices_Template.ttcn"
+template_t__SoftResetResponse.resetType() = bs_2;
+current_location.update_lineno(125);
+#line 125 "UnifiedDiagnosticServices_Template.ttcn"
+template_t__DisableRapidPowerShutDownResponse.resetType() = bs_5;
+current_location.update_lineno(181);
+#line 181 "UnifiedDiagnosticServices_Template.ttcn"
+template_t__sendKeyResponse0.securityAccessType() = bs_1;
+current_location.update_lineno(190);
+#line 190 "UnifiedDiagnosticServices_Template.ttcn"
+template_t__sendKeyResponse1.securityAccessType() = bs_3;
+current_location.update_lineno(293);
+#line 293 "UnifiedDiagnosticServices_Template.ttcn"
+template_t__ReadDataByIdentifierRequest1.identifier() = os_9;
+current_location.update_lineno(298);
+#line 298 "UnifiedDiagnosticServices_Template.ttcn"
+template_t__ReadDataByIdentifierRequest2.identifier() = os_10;
+current_location.update_lineno(303);
+#line 303 "UnifiedDiagnosticServices_Template.ttcn"
+template_t__ReadDataByIdentifierRequest3.identifier() = os_11;
+current_location.update_lineno(369);
+#line 369 "UnifiedDiagnosticServices_Template.ttcn"
+template_t__WriteDataByIdentifierResponse1.identifier() = os_9;
+current_location.update_lineno(374);
+#line 374 "UnifiedDiagnosticServices_Template.ttcn"
+template_t__WriteDataByIdentifierResponse2.identifier() = os_10;
+current_location.update_lineno(379);
+#line 379 "UnifiedDiagnosticServices_Template.ttcn"
+template_t__WriteDataByIdentifierResponse3.identifier() = os_11;
+}
+
+
+} /* end of namespace */
diff --git a/demo/UnifiedDiagnosticServices_Template.d b/demo/UnifiedDiagnosticServices_Template.d
new file mode 100644
index 0000000..d78abf1
--- /dev/null
+++ b/demo/UnifiedDiagnosticServices_Template.d
@@ -0,0 +1,61 @@
+UnifiedDiagnosticServices_Template.o UnifiedDiagnosticServices_Template.d : \
+ UnifiedDiagnosticServices_Template.cc \
+ UnifiedDiagnosticServices_Template.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TTCN3.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/version.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/cversion.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Types.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Vector.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Error.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Basetype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Encdec.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RInt.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON_Tokenizer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Logger.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Template.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Integer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ttcn3float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Boolean.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Null.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Optional.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Param_Types.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/memory.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/BER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Textbuf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Parameters.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XmlReader.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Objid.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Verdicttype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Component.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Bitstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RAW.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/CharCoding.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Hexstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Octetstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Any.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Universal_charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Struct_of.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Array.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_CharacterString.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_External.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TEXT.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_EmbeddedPDV.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Addfunc.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Timer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Port.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Event_Handler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/TitanLoggerApiSimple.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/PreGenRecordOf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Module_list.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Snapshot.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Default.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Runtime.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/OER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Profiler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ProfilerTools.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Debugger.hh \
+ UnifiedDiagnosticServices.hh General_Types.hh
diff --git a/demo/UnifiedDiagnosticServices_Template.hh b/demo/UnifiedDiagnosticServices_Template.hh
new file mode 100644
index 0000000..f554514
--- /dev/null
+++ b/demo/UnifiedDiagnosticServices_Template.hh
@@ -0,0 +1,100 @@
+// This C++ header file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+#ifndef UnifiedDiagnosticServices__Template_HH
+#define UnifiedDiagnosticServices__Template_HH
+
+#ifdef TITAN_RUNTIME_2
+#error Generated code does not match with used runtime.\
+ Code was generated without -R option but -DTITAN_RUNTIME_2 was used.
+#endif
+
+/* Header file includes */
+
+#include <TTCN3.hh>
+#include "UnifiedDiagnosticServices.hh"
+
+#if TTCN3_VERSION != 60600
+#error Version mismatch detected.\
+ Please check the version of the TTCN-3 compiler and the base library.\
+ Run make clean and rebuild the project if the version of the compiler changed recently.
+#endif
+
+#ifndef LINUX
+#error This file should be compiled on LINUX
+#endif
+
+namespace UnifiedDiagnosticServices__Template {
+
+/* Function prototypes */
+
+extern UnifiedDiagnosticServices::TopLevelMessage__UDS__requests_template t__diagnosticSessionControlRequestSID(const UnifiedDiagnosticServices::SuppressPosRspMsgIndicationBitType& p__suppressPosRspMsgIndicationBit, const UnifiedDiagnosticServices::DiagnosticSessionRequestType_template& p__diagnosticSessionType);
+extern UnifiedDiagnosticServices::DefaultSessionResponse_template t__DefaultSessionResponse(const OCTETSTRING& p__p2ServerMax, const OCTETSTRING& p__p2StarServerMax);
+extern UnifiedDiagnosticServices::ProgrammingSessionResponse_template t__ProgrammingSessionResponse(const OCTETSTRING& p__p2ServerMax, const OCTETSTRING& p__p2StarServerMax);
+extern UnifiedDiagnosticServices::ExtendedDiagnosticSessionResponse_template t__ExtendedDiagnosticSessionResponse(const OCTETSTRING& p__p2ServerMax, const OCTETSTRING& p__p2StarServerMax);
+extern UnifiedDiagnosticServices::SafetySystemDiagnosticSessionResponse_template t__SafetySystemDiagnosticSessionResponse(const OCTETSTRING& p__p2ServerMax, const OCTETSTRING& p__p2StarServerMax);
+extern UnifiedDiagnosticServices::TopLevelMessage__UDS__responses_template t__diagnosticSessionControlResponseSID(const UnifiedDiagnosticServices::DiagnosticSessionResponseType_template& p__diagnosticSessionType);
+extern UnifiedDiagnosticServices::TopLevelMessage__UDS__requests_template t__ecuResetRequestTypeSID(const UnifiedDiagnosticServices::SuppressPosRspMsgIndicationBitType& p__suppressPosRspMsgIndicationBit, const UnifiedDiagnosticServices::ECUResetRequestType_template& p__resetType);
+extern UnifiedDiagnosticServices::EnableRapidPowerShutDownResponse_template t__EnableRapidPowerShutDownResponse(const OCTETSTRING& p__powerDownTime);
+extern UnifiedDiagnosticServices::TopLevelMessage__UDS__responses_template t__ecuResetResponseTypeSID(const UnifiedDiagnosticServices::ECUResetResponseType_template& p__resetType);
+extern UnifiedDiagnosticServices::RequestSeedRequest0_template t__requestSeedRequest0(const OCTETSTRING& p__securityAccessDataRecord);
+extern UnifiedDiagnosticServices::SendKeyRequest0_template t__sendKeyRequest0(const OCTETSTRING& p__securityKey);
+extern UnifiedDiagnosticServices::RequestSeedRequest1_template t__requestSeedRequest1(const OCTETSTRING& p__securityAccessDataRecord);
+extern UnifiedDiagnosticServices::SendKeyRequest1_template t__sendKeyRequest1(const OCTETSTRING& p__securityKey);
+extern UnifiedDiagnosticServices::TopLevelMessage__UDS__requests_template t__securityAccessRequest(const UnifiedDiagnosticServices::SuppressPosRspMsgIndicationBitType& p__suppressPosRspMsgIndicationBit, const UnifiedDiagnosticServices::SecurityAccessRequestType_template& p__securityAccessType);
+extern UnifiedDiagnosticServices::RequestSeedResponse0_template t__requestSeedResponse0(const OCTETSTRING& p__securitySeed);
+extern UnifiedDiagnosticServices::RequestSeedResponse1_template t__requestSeedResponse1(const OCTETSTRING& p__securitySeed);
+extern UnifiedDiagnosticServices::TopLevelMessage__UDS__responses_template t__SecurityAccessResponseSID(const UnifiedDiagnosticServices::SecurityAccessResponseType_template& p__securityAccessType);
+extern UnifiedDiagnosticServices::CommunicationType_template t__communicationType(const UnifiedDiagnosticServices::e__DisableEnable& p__disableEnable, const UnifiedDiagnosticServices::e__CommunicationMessages& p__communicationMessages);
+extern UnifiedDiagnosticServices::CommunicationControlRequestType_template t__EnableRxAndTxRequest(const UnifiedDiagnosticServices::SuppressPosRspMsgIndicationBitType& p__suppressPosRspMsgIndicationBit, const UnifiedDiagnosticServices::CommunicationType_template& p__communicationType);
+extern UnifiedDiagnosticServices::CommunicationControlRequestType_template t__EnableRxAndDisableTxRequest(const UnifiedDiagnosticServices::SuppressPosRspMsgIndicationBitType& p__suppressPosRspMsgIndicationBit, const UnifiedDiagnosticServices::CommunicationType_template& p__communicationType);
+extern UnifiedDiagnosticServices::CommunicationControlRequestType_template t__DisableRxAndEnableTxRequest(const UnifiedDiagnosticServices::SuppressPosRspMsgIndicationBitType& p__suppressPosRspMsgIndicationBit, const UnifiedDiagnosticServices::CommunicationType_template& p__communicationType);
+extern UnifiedDiagnosticServices::CommunicationControlRequestType_template t__DisableRxAndTxRequest(const UnifiedDiagnosticServices::SuppressPosRspMsgIndicationBitType& p__suppressPosRspMsgIndicationBit, const UnifiedDiagnosticServices::CommunicationType_template& p__communicationType);
+extern UnifiedDiagnosticServices::TopLevelMessage__UDS__requests_template t__communicationControlRequest(const UnifiedDiagnosticServices::CommunicationControlRequestType_template& p__communicationControlRequestType);
+extern UnifiedDiagnosticServices::TopLevelMessage__UDS__responses_template t__communicationControlResponse(const UnifiedDiagnosticServices::e__ControlType_template& p__controlType);
+extern UnifiedDiagnosticServices::TopLevelMessage__UDS__requests_template t__testerPresentRequest(const UnifiedDiagnosticServices::SuppressPosRspMsgIndicationBitType& p__suppressPosRspMsgIndicationBit);
+extern UnifiedDiagnosticServices::TopLevelMessage__UDS__requests_template t__ReadDataByIdentifierRequestSID(const UnifiedDiagnosticServices::ReadDataByIdentifierRequest_template& p__readDataByIdentifierRequest);
+extern UnifiedDiagnosticServices::ReadDataByIdentifierResponse1_template t__ReadDataByIdentifierResponse1(const OCTETSTRING& p__readDataByIdentifierResponse);
+extern UnifiedDiagnosticServices::ReadDataByIdentifierResponse2_template t__ReadDataByIdentifierResponse2(const OCTETSTRING& p__readDataByIdentifierResponse);
+extern UnifiedDiagnosticServices::ReadDataByIdentifierResponse3_template t__ReadDataByIdentifierResponse3(const OCTETSTRING& p__readDataByIdentifierResponse);
+extern UnifiedDiagnosticServices::TopLevelMessage__UDS__responses_template t__ReadDataByIdentifierResponseSID(const UnifiedDiagnosticServices::ReadDataByIdentifierResponse_template& p__readDataByIdentifierResponse);
+extern UnifiedDiagnosticServices::WriteDataByIdentifierRequest1_template t__WriteDataByIdentifierRequest1(const OCTETSTRING& p__dataRecord);
+extern UnifiedDiagnosticServices::WriteDataByIdentifierRequest2_template t__WriteDataByIdentifierRequest2(const OCTETSTRING& p__dataRecord);
+extern UnifiedDiagnosticServices::WriteDataByIdentifierRequest3_template t__WriteDataByIdentifierRequest3(const OCTETSTRING& p__dataRecord);
+extern UnifiedDiagnosticServices::TopLevelMessage__UDS__requests_template t__WriteDataByIdentifierRequestSID(const UnifiedDiagnosticServices::WriteDataByIdentifierRequest_template& p__writeDataByIdentifierRequest);
+extern UnifiedDiagnosticServices::TopLevelMessage__UDS__responses_template t__WriteDataByIdentifierResponseSID(const UnifiedDiagnosticServices::WriteDataByIdentifierResponse_template& p__writeDataByIdentifierResponse);
+extern UnifiedDiagnosticServices::TopLevelMessage__UDS__responses_template t__NegativeResponseCodeSID(const UnifiedDiagnosticServices::e__RequestSID& p__requestSID, const UnifiedDiagnosticServices::e__ResponseCode& p__responseCode);
+
+/* Global variable declarations */
+
+extern const UnifiedDiagnosticServices::DefaultSessionRequest_template& t__DefaultSessionRequest;
+extern const UnifiedDiagnosticServices::ProgrammingSessionRequest_template& t__ProgrammingSessionRequest;
+extern const UnifiedDiagnosticServices::ExtendedDiagnosticSessionRequest_template& t__ExtendedDiagnosticSessionRequest;
+extern const UnifiedDiagnosticServices::SafetySystemDiagnosticSessionRequest_template& t__SafetySystemDiagnosticSessionRequest;
+extern const UnifiedDiagnosticServices::HardResetRequest_template& t__HardResetRequest;
+extern const UnifiedDiagnosticServices::KeyOffOnResetRequest_template& t__KeyOffOnResetRequest;
+extern const UnifiedDiagnosticServices::SoftResetRequest_template& t__SoftResetRequest;
+extern const UnifiedDiagnosticServices::EnableRapidPowerShutDownRequest_template& t__EnableRapidPowerShutDownRequest;
+extern const UnifiedDiagnosticServices::DisableRapidPowerShutDownRequest_template& t__DisableRapidPowerShutDownRequest;
+extern const UnifiedDiagnosticServices::HardResetResponse_template& t__HardResetResponse;
+extern const UnifiedDiagnosticServices::KeyOffOnResetResponse_template& t__KeyOffOnResetResponse;
+extern const UnifiedDiagnosticServices::SoftResetResponse_template& t__SoftResetResponse;
+extern const UnifiedDiagnosticServices::DisableRapidPowerShutDownResponse_template& t__DisableRapidPowerShutDownResponse;
+extern const UnifiedDiagnosticServices::SendKeyResponse0_template& t__sendKeyResponse0;
+extern const UnifiedDiagnosticServices::SendKeyResponse1_template& t__sendKeyResponse1;
+extern const UnifiedDiagnosticServices::ReadDataByIdentifierRequest1_template& t__ReadDataByIdentifierRequest1;
+extern const UnifiedDiagnosticServices::ReadDataByIdentifierRequest2_template& t__ReadDataByIdentifierRequest2;
+extern const UnifiedDiagnosticServices::ReadDataByIdentifierRequest3_template& t__ReadDataByIdentifierRequest3;
+extern const UnifiedDiagnosticServices::WriteDataByIdentifierResponse1_template& t__WriteDataByIdentifierResponse1;
+extern const UnifiedDiagnosticServices::WriteDataByIdentifierResponse2_template& t__WriteDataByIdentifierResponse2;
+extern const UnifiedDiagnosticServices::WriteDataByIdentifierResponse3_template& t__WriteDataByIdentifierResponse3;
+extern TTCN_Module module_object;
+
+} /* end of namespace */
+
+#endif
diff --git a/demo/UnifiedDiagnosticServices_Template.o b/demo/UnifiedDiagnosticServices_Template.o
new file mode 100644
index 0000000..75abac1
--- /dev/null
+++ b/demo/UnifiedDiagnosticServices_Template.o
Binary files differ
diff --git a/demo/UnifiedDiagnosticServicestest.cc b/demo/UnifiedDiagnosticServicestest.cc
new file mode 100644
index 0000000..f0691f4
--- /dev/null
+++ b/demo/UnifiedDiagnosticServicestest.cc
@@ -0,0 +1,640 @@
+// This C++ source file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+/* Including header files */
+
+#include "UnifiedDiagnosticServicestest.hh"
+
+namespace UnifiedDiagnosticServicestest {
+
+/* Prototypes of static functions */
+
+static void pre_init_module();
+static void post_init_module();
+static boolean init_comp_type(const char *component_type, boolean init_base_comps);
+
+/* Literal string constants */
+
+static const unsigned char os_4_octets[] = { 0 },
+os_2_octets[] = { 1 },
+os_3_octets[] = { 1, 35, 69, 103 },
+os_0_octets[] = { 16, 32 },
+os_5_octets[] = { 18, 52, 86 },
+os_1_octets[] = { 48, 64 };
+static const OCTETSTRING os_4(1, os_4_octets),
+os_2(1, os_2_octets),
+os_3(4, os_3_octets),
+os_0(2, os_0_octets),
+os_5(3, os_5_octets),
+os_1(2, os_1_octets);
+static const unsigned char module_checksum[] = { 0x71, 0x2b, 0xd6, 0xa0, 0xf1, 0x8d, 0xcc, 0x94, 0x27, 0x93, 0xd3, 0x8e, 0x7f, 0xf9, 0x77, 0x8f };
+
+/* Global variable definitions */
+
+const TTCN_Typedescriptor_t& MTC__CT_descr_ = COMPONENT_descr_;
+TTCN_Module module_object("UnifiedDiagnosticServicestest", __DATE__, __TIME__, module_checksum, pre_init_module, NULL, 0U, 4294967295U, 4294967295U, 4294967295U, NULL, 0LU, 0, post_init_module, NULL, NULL, NULL, init_comp_type, NULL, NULL, NULL);
+
+static const RuntimeVersionChecker ver_checker(  current_runtime_version.requires_major_version_6,
+  current_runtime_version.requires_minor_version_6,
+  current_runtime_version.requires_patch_level_0,  current_runtime_version.requires_runtime_1);
+
+/* Bodies of functions, altsteps and testcases */
+
+verdicttype testcase_tc__encdec__DiagnosticSessionControlRequest(boolean has_timer, double timer_value)
+{
+TTCN_Runtime::check_begin_testcase(has_timer, timer_value);
+TTCN_Location current_location("UnifiedDiagnosticServicestest.ttcn", 13, TTCN_Location::LOCATION_TESTCASE, "tc_encdec_DiagnosticSessionControlRequest");
+try {
+TTCN_Runtime::begin_testcase("UnifiedDiagnosticServicestest", "tc_encdec_DiagnosticSessionControlRequest", "UnifiedDiagnosticServicestest", "MTC_CT", "UnifiedDiagnosticServicestest", "MTC_CT", has_timer, timer_value);
+current_location.update_lineno(16);
+#line 16 "UnifiedDiagnosticServicestest.ttcn"
+UnifiedDiagnosticServices::TopLevelMessage__UDS__requests_template t__UDSRequestMessage;
+{
+UnifiedDiagnosticServices::DiagnosticSessionRequestType_template tmp_0;
+tmp_0.extendedDiagnosticSession() = UnifiedDiagnosticServices__Template::t__ExtendedDiagnosticSessionRequest;
+t__UDSRequestMessage = UnifiedDiagnosticServices__Template::t__diagnosticSessionControlRequestSID(UnifiedDiagnosticServices::SuppressPosRspMsgIndicationBitType::suppresssPos, tmp_0);
+}
+current_location.update_lineno(20);
+#line 20 "UnifiedDiagnosticServicestest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+UnifiedDiagnosticServices::encode__TopLevelMessage__UDS__requests(t__UDSRequestMessage.valueof()).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(21);
+#line 21 "UnifiedDiagnosticServicestest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+UnifiedDiagnosticServices::decode__TopLevelMessage__UDS__requests(UnifiedDiagnosticServices::encode__TopLevelMessage__UDS__requests(t__UDSRequestMessage.valueof())).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+} catch (const TC_Error& tc_error) {
+} catch (const TC_End& tc_end) {
+TTCN_Logger::log_str(TTCN_FUNCTION, "Test case tc_encdec_DiagnosticSessionControlRequest was stopped.");
+}
+return TTCN_Runtime::end_testcase();
+}
+
+verdicttype testcase_tc__encdec__DiagnosticSessionControlResponse(boolean has_timer, double timer_value)
+{
+TTCN_Runtime::check_begin_testcase(has_timer, timer_value);
+TTCN_Location current_location("UnifiedDiagnosticServicestest.ttcn", 25, TTCN_Location::LOCATION_TESTCASE, "tc_encdec_DiagnosticSessionControlResponse");
+try {
+TTCN_Runtime::begin_testcase("UnifiedDiagnosticServicestest", "tc_encdec_DiagnosticSessionControlResponse", "UnifiedDiagnosticServicestest", "MTC_CT", "UnifiedDiagnosticServicestest", "MTC_CT", has_timer, timer_value);
+current_location.update_lineno(27);
+#line 27 "UnifiedDiagnosticServicestest.ttcn"
+UnifiedDiagnosticServices::TopLevelMessage__UDS__responses_template t__UDSResponseMessage;
+{
+UnifiedDiagnosticServices::DiagnosticSessionResponseType_template tmp_1;
+tmp_1.extendedDiagnosticSession() = UnifiedDiagnosticServices__Template::t__ExtendedDiagnosticSessionResponse(os_0, os_1);
+t__UDSResponseMessage = UnifiedDiagnosticServices__Template::t__diagnosticSessionControlResponseSID(tmp_1);
+}
+current_location.update_lineno(31);
+#line 31 "UnifiedDiagnosticServicestest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+UnifiedDiagnosticServices::encode__TopLevelMessage__UDS__responses(t__UDSResponseMessage.valueof()).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(32);
+#line 32 "UnifiedDiagnosticServicestest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+UnifiedDiagnosticServices::decode__TopLevelMessage__UDS__responses(UnifiedDiagnosticServices::encode__TopLevelMessage__UDS__responses(t__UDSResponseMessage.valueof())).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+} catch (const TC_Error& tc_error) {
+} catch (const TC_End& tc_end) {
+TTCN_Logger::log_str(TTCN_FUNCTION, "Test case tc_encdec_DiagnosticSessionControlResponse was stopped.");
+}
+return TTCN_Runtime::end_testcase();
+}
+
+verdicttype testcase_tc__encdec__ECUResetRequest(boolean has_timer, double timer_value)
+{
+TTCN_Runtime::check_begin_testcase(has_timer, timer_value);
+TTCN_Location current_location("UnifiedDiagnosticServicestest.ttcn", 37, TTCN_Location::LOCATION_TESTCASE, "tc_encdec_ECUResetRequest");
+try {
+TTCN_Runtime::begin_testcase("UnifiedDiagnosticServicestest", "tc_encdec_ECUResetRequest", "UnifiedDiagnosticServicestest", "MTC_CT", "UnifiedDiagnosticServicestest", "MTC_CT", has_timer, timer_value);
+current_location.update_lineno(40);
+#line 40 "UnifiedDiagnosticServicestest.ttcn"
+UnifiedDiagnosticServices::TopLevelMessage__UDS__requests_template t__UDSRequestMessage;
+{
+UnifiedDiagnosticServices::ECUResetRequestType_template tmp_2;
+tmp_2.hardReset() = UnifiedDiagnosticServices__Template::t__HardResetRequest;
+t__UDSRequestMessage = UnifiedDiagnosticServices__Template::t__ecuResetRequestTypeSID(UnifiedDiagnosticServices::SuppressPosRspMsgIndicationBitType::suppresssPos, tmp_2);
+}
+current_location.update_lineno(43);
+#line 43 "UnifiedDiagnosticServicestest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+UnifiedDiagnosticServices::encode__TopLevelMessage__UDS__requests(t__UDSRequestMessage.valueof()).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(44);
+#line 44 "UnifiedDiagnosticServicestest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+UnifiedDiagnosticServices::decode__TopLevelMessage__UDS__requests(UnifiedDiagnosticServices::encode__TopLevelMessage__UDS__requests(t__UDSRequestMessage.valueof())).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+} catch (const TC_Error& tc_error) {
+} catch (const TC_End& tc_end) {
+TTCN_Logger::log_str(TTCN_FUNCTION, "Test case tc_encdec_ECUResetRequest was stopped.");
+}
+return TTCN_Runtime::end_testcase();
+}
+
+verdicttype testcase_tc__encdec__ECUResetResponse(boolean has_timer, double timer_value)
+{
+TTCN_Runtime::check_begin_testcase(has_timer, timer_value);
+TTCN_Location current_location("UnifiedDiagnosticServicestest.ttcn", 49, TTCN_Location::LOCATION_TESTCASE, "tc_encdec_ECUResetResponse");
+try {
+TTCN_Runtime::begin_testcase("UnifiedDiagnosticServicestest", "tc_encdec_ECUResetResponse", "UnifiedDiagnosticServicestest", "MTC_CT", "UnifiedDiagnosticServicestest", "MTC_CT", has_timer, timer_value);
+current_location.update_lineno(52);
+#line 52 "UnifiedDiagnosticServicestest.ttcn"
+UnifiedDiagnosticServices::TopLevelMessage__UDS__responses_template t__UDSResponseMessage;
+{
+UnifiedDiagnosticServices::ECUResetResponseType_template tmp_3;
+tmp_3.enableRapidPowerShutDown() = UnifiedDiagnosticServices__Template::t__EnableRapidPowerShutDownResponse(os_2);
+t__UDSResponseMessage = UnifiedDiagnosticServices__Template::t__ecuResetResponseTypeSID(tmp_3);
+}
+current_location.update_lineno(55);
+#line 55 "UnifiedDiagnosticServicestest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+UnifiedDiagnosticServices::encode__TopLevelMessage__UDS__responses(t__UDSResponseMessage.valueof()).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(56);
+#line 56 "UnifiedDiagnosticServicestest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+UnifiedDiagnosticServices::decode__TopLevelMessage__UDS__responses(UnifiedDiagnosticServices::encode__TopLevelMessage__UDS__responses(t__UDSResponseMessage.valueof())).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+} catch (const TC_Error& tc_error) {
+} catch (const TC_End& tc_end) {
+TTCN_Logger::log_str(TTCN_FUNCTION, "Test case tc_encdec_ECUResetResponse was stopped.");
+}
+return TTCN_Runtime::end_testcase();
+}
+
+verdicttype testcase_tc__encdec__SecurityAccessRequest(boolean has_timer, double timer_value)
+{
+TTCN_Runtime::check_begin_testcase(has_timer, timer_value);
+TTCN_Location current_location("UnifiedDiagnosticServicestest.ttcn", 62, TTCN_Location::LOCATION_TESTCASE, "tc_encdec_SecurityAccessRequest");
+try {
+TTCN_Runtime::begin_testcase("UnifiedDiagnosticServicestest", "tc_encdec_SecurityAccessRequest", "UnifiedDiagnosticServicestest", "MTC_CT", "UnifiedDiagnosticServicestest", "MTC_CT", has_timer, timer_value);
+current_location.update_lineno(65);
+#line 65 "UnifiedDiagnosticServicestest.ttcn"
+UnifiedDiagnosticServices::TopLevelMessage__UDS__requests_template t__UDSRequestMessage;
+{
+UnifiedDiagnosticServices::SecurityAccessRequestType_template tmp_4;
+tmp_4.requestSeed1() = UnifiedDiagnosticServices__Template::t__requestSeedRequest1(os_3);
+t__UDSRequestMessage = UnifiedDiagnosticServices__Template::t__securityAccessRequest(UnifiedDiagnosticServices::SuppressPosRspMsgIndicationBitType::suppresssPos, tmp_4);
+}
+current_location.update_lineno(68);
+#line 68 "UnifiedDiagnosticServicestest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+UnifiedDiagnosticServices::encode__TopLevelMessage__UDS__requests(t__UDSRequestMessage.valueof()).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(69);
+#line 69 "UnifiedDiagnosticServicestest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+UnifiedDiagnosticServices::decode__TopLevelMessage__UDS__requests(UnifiedDiagnosticServices::encode__TopLevelMessage__UDS__requests(t__UDSRequestMessage.valueof())).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+} catch (const TC_Error& tc_error) {
+} catch (const TC_End& tc_end) {
+TTCN_Logger::log_str(TTCN_FUNCTION, "Test case tc_encdec_SecurityAccessRequest was stopped.");
+}
+return TTCN_Runtime::end_testcase();
+}
+
+verdicttype testcase_tc__encdec__SecurityAccessResponse(boolean has_timer, double timer_value)
+{
+TTCN_Runtime::check_begin_testcase(has_timer, timer_value);
+TTCN_Location current_location("UnifiedDiagnosticServicestest.ttcn", 74, TTCN_Location::LOCATION_TESTCASE, "tc_encdec_SecurityAccessResponse");
+try {
+TTCN_Runtime::begin_testcase("UnifiedDiagnosticServicestest", "tc_encdec_SecurityAccessResponse", "UnifiedDiagnosticServicestest", "MTC_CT", "UnifiedDiagnosticServicestest", "MTC_CT", has_timer, timer_value);
+current_location.update_lineno(77);
+#line 77 "UnifiedDiagnosticServicestest.ttcn"
+UnifiedDiagnosticServices::TopLevelMessage__UDS__responses_template t__UDSResponseMessage;
+{
+UnifiedDiagnosticServices::SecurityAccessResponseType_template tmp_5;
+tmp_5.requestSeed0() = UnifiedDiagnosticServices__Template::t__requestSeedResponse0(os_4);
+t__UDSResponseMessage = UnifiedDiagnosticServices__Template::t__SecurityAccessResponseSID(tmp_5);
+}
+current_location.update_lineno(80);
+#line 80 "UnifiedDiagnosticServicestest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+UnifiedDiagnosticServices::encode__TopLevelMessage__UDS__responses(t__UDSResponseMessage.valueof()).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(81);
+#line 81 "UnifiedDiagnosticServicestest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+UnifiedDiagnosticServices::decode__TopLevelMessage__UDS__responses(UnifiedDiagnosticServices::encode__TopLevelMessage__UDS__responses(t__UDSResponseMessage.valueof())).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+} catch (const TC_Error& tc_error) {
+} catch (const TC_End& tc_end) {
+TTCN_Logger::log_str(TTCN_FUNCTION, "Test case tc_encdec_SecurityAccessResponse was stopped.");
+}
+return TTCN_Runtime::end_testcase();
+}
+
+verdicttype testcase_tc__encdec__CommunicationControlRequest(boolean has_timer, double timer_value)
+{
+TTCN_Runtime::check_begin_testcase(has_timer, timer_value);
+TTCN_Location current_location("UnifiedDiagnosticServicestest.ttcn", 85, TTCN_Location::LOCATION_TESTCASE, "tc_encdec_CommunicationControlRequest");
+try {
+TTCN_Runtime::begin_testcase("UnifiedDiagnosticServicestest", "tc_encdec_CommunicationControlRequest", "UnifiedDiagnosticServicestest", "MTC_CT", "UnifiedDiagnosticServicestest", "MTC_CT", has_timer, timer_value);
+current_location.update_lineno(88);
+#line 88 "UnifiedDiagnosticServicestest.ttcn"
+UnifiedDiagnosticServices::TopLevelMessage__UDS__requests_template t__UDSRequestMessage(UnifiedDiagnosticServices__Template::t__communicationControlRequest(UnifiedDiagnosticServices__Template::t__DisableRxAndTxRequest(UnifiedDiagnosticServices::SuppressPosRspMsgIndicationBitType::suppresssPos, UnifiedDiagnosticServices__Template::t__communicationType(UnifiedDiagnosticServices::e__DisableEnable::DisableEnableSpecificSubnetIdentifiedBySubnetNumber7, UnifiedDiagnosticServices::e__CommunicationMessages::normalMessages))));
+current_location.update_lineno(92);
+#line 92 "UnifiedDiagnosticServicestest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+UnifiedDiagnosticServices::encode__TopLevelMessage__UDS__requests(t__UDSRequestMessage.valueof()).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(93);
+#line 93 "UnifiedDiagnosticServicestest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+UnifiedDiagnosticServices::decode__TopLevelMessage__UDS__requests(UnifiedDiagnosticServices::encode__TopLevelMessage__UDS__requests(t__UDSRequestMessage.valueof())).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+} catch (const TC_Error& tc_error) {
+} catch (const TC_End& tc_end) {
+TTCN_Logger::log_str(TTCN_FUNCTION, "Test case tc_encdec_CommunicationControlRequest was stopped.");
+}
+return TTCN_Runtime::end_testcase();
+}
+
+verdicttype testcase_tc__encdec__CommunicationControlResponse(boolean has_timer, double timer_value)
+{
+TTCN_Runtime::check_begin_testcase(has_timer, timer_value);
+TTCN_Location current_location("UnifiedDiagnosticServicestest.ttcn", 98, TTCN_Location::LOCATION_TESTCASE, "tc_encdec_CommunicationControlResponse");
+try {
+TTCN_Runtime::begin_testcase("UnifiedDiagnosticServicestest", "tc_encdec_CommunicationControlResponse", "UnifiedDiagnosticServicestest", "MTC_CT", "UnifiedDiagnosticServicestest", "MTC_CT", has_timer, timer_value);
+current_location.update_lineno(101);
+#line 101 "UnifiedDiagnosticServicestest.ttcn"
+UnifiedDiagnosticServices::TopLevelMessage__UDS__responses_template t__UDSResponseMessage(UnifiedDiagnosticServices__Template::t__communicationControlResponse(UnifiedDiagnosticServices::e__ControlType_template(UnifiedDiagnosticServices::e__ControlType::DisableRxAndEnableTx)));
+current_location.update_lineno(104);
+#line 104 "UnifiedDiagnosticServicestest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+UnifiedDiagnosticServices::encode__TopLevelMessage__UDS__responses(t__UDSResponseMessage.valueof()).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(105);
+#line 105 "UnifiedDiagnosticServicestest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+UnifiedDiagnosticServices::decode__TopLevelMessage__UDS__responses(UnifiedDiagnosticServices::encode__TopLevelMessage__UDS__responses(t__UDSResponseMessage.valueof())).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+} catch (const TC_Error& tc_error) {
+} catch (const TC_End& tc_end) {
+TTCN_Logger::log_str(TTCN_FUNCTION, "Test case tc_encdec_CommunicationControlResponse was stopped.");
+}
+return TTCN_Runtime::end_testcase();
+}
+
+verdicttype testcase_tc__encdec__TesterPresentRequest(boolean has_timer, double timer_value)
+{
+TTCN_Runtime::check_begin_testcase(has_timer, timer_value);
+TTCN_Location current_location("UnifiedDiagnosticServicestest.ttcn", 109, TTCN_Location::LOCATION_TESTCASE, "tc_encdec_TesterPresentRequest");
+try {
+TTCN_Runtime::begin_testcase("UnifiedDiagnosticServicestest", "tc_encdec_TesterPresentRequest", "UnifiedDiagnosticServicestest", "MTC_CT", "UnifiedDiagnosticServicestest", "MTC_CT", has_timer, timer_value);
+current_location.update_lineno(112);
+#line 112 "UnifiedDiagnosticServicestest.ttcn"
+UnifiedDiagnosticServices::TopLevelMessage__UDS__requests_template t__UDSRequestMessage(UnifiedDiagnosticServices__Template::t__testerPresentRequest(UnifiedDiagnosticServices::SuppressPosRspMsgIndicationBitType::suppresssPos));
+current_location.update_lineno(114);
+#line 114 "UnifiedDiagnosticServicestest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+UnifiedDiagnosticServices::encode__TopLevelMessage__UDS__requests(t__UDSRequestMessage.valueof()).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(115);
+#line 115 "UnifiedDiagnosticServicestest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+UnifiedDiagnosticServices::decode__TopLevelMessage__UDS__requests(UnifiedDiagnosticServices::encode__TopLevelMessage__UDS__requests(t__UDSRequestMessage.valueof())).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+} catch (const TC_Error& tc_error) {
+} catch (const TC_End& tc_end) {
+TTCN_Logger::log_str(TTCN_FUNCTION, "Test case tc_encdec_TesterPresentRequest was stopped.");
+}
+return TTCN_Runtime::end_testcase();
+}
+
+verdicttype testcase_tc__encdec__ReadDataByIdentifierRequest(boolean has_timer, double timer_value)
+{
+TTCN_Runtime::check_begin_testcase(has_timer, timer_value);
+TTCN_Location current_location("UnifiedDiagnosticServicestest.ttcn", 120, TTCN_Location::LOCATION_TESTCASE, "tc_encdec_ReadDataByIdentifierRequest");
+try {
+TTCN_Runtime::begin_testcase("UnifiedDiagnosticServicestest", "tc_encdec_ReadDataByIdentifierRequest", "UnifiedDiagnosticServicestest", "MTC_CT", "UnifiedDiagnosticServicestest", "MTC_CT", has_timer, timer_value);
+current_location.update_lineno(123);
+#line 123 "UnifiedDiagnosticServicestest.ttcn"
+UnifiedDiagnosticServices::TopLevelMessage__UDS__requests_template t__UDSRequestMessage;
+{
+UnifiedDiagnosticServices::ReadDataByIdentifierRequest_template tmp_6;
+tmp_6.readDataByIdentifier1() = UnifiedDiagnosticServices__Template::t__ReadDataByIdentifierRequest1;
+t__UDSRequestMessage = UnifiedDiagnosticServices__Template::t__ReadDataByIdentifierRequestSID(tmp_6);
+}
+current_location.update_lineno(126);
+#line 126 "UnifiedDiagnosticServicestest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+UnifiedDiagnosticServices::encode__TopLevelMessage__UDS__requests(t__UDSRequestMessage.valueof()).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(127);
+#line 127 "UnifiedDiagnosticServicestest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+UnifiedDiagnosticServices::decode__TopLevelMessage__UDS__requests(UnifiedDiagnosticServices::encode__TopLevelMessage__UDS__requests(t__UDSRequestMessage.valueof())).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+} catch (const TC_Error& tc_error) {
+} catch (const TC_End& tc_end) {
+TTCN_Logger::log_str(TTCN_FUNCTION, "Test case tc_encdec_ReadDataByIdentifierRequest was stopped.");
+}
+return TTCN_Runtime::end_testcase();
+}
+
+verdicttype testcase_tc__encdec__ReadDataByIdentifierResponse(boolean has_timer, double timer_value)
+{
+TTCN_Runtime::check_begin_testcase(has_timer, timer_value);
+TTCN_Location current_location("UnifiedDiagnosticServicestest.ttcn", 132, TTCN_Location::LOCATION_TESTCASE, "tc_encdec_ReadDataByIdentifierResponse");
+try {
+TTCN_Runtime::begin_testcase("UnifiedDiagnosticServicestest", "tc_encdec_ReadDataByIdentifierResponse", "UnifiedDiagnosticServicestest", "MTC_CT", "UnifiedDiagnosticServicestest", "MTC_CT", has_timer, timer_value);
+current_location.update_lineno(135);
+#line 135 "UnifiedDiagnosticServicestest.ttcn"
+UnifiedDiagnosticServices::TopLevelMessage__UDS__responses_template t__UDSResponseMessage;
+{
+UnifiedDiagnosticServices::ReadDataByIdentifierResponse_template tmp_7;
+tmp_7.readDataByIdentifier1() = UnifiedDiagnosticServices__Template::t__ReadDataByIdentifierResponse1(os_3);
+t__UDSResponseMessage = UnifiedDiagnosticServices__Template::t__ReadDataByIdentifierResponseSID(tmp_7);
+}
+current_location.update_lineno(138);
+#line 138 "UnifiedDiagnosticServicestest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+UnifiedDiagnosticServices::encode__TopLevelMessage__UDS__responses(t__UDSResponseMessage.valueof()).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(139);
+#line 139 "UnifiedDiagnosticServicestest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+UnifiedDiagnosticServices::decode__TopLevelMessage__UDS__responses(UnifiedDiagnosticServices::encode__TopLevelMessage__UDS__responses(t__UDSResponseMessage.valueof())).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+} catch (const TC_Error& tc_error) {
+} catch (const TC_End& tc_end) {
+TTCN_Logger::log_str(TTCN_FUNCTION, "Test case tc_encdec_ReadDataByIdentifierResponse was stopped.");
+}
+return TTCN_Runtime::end_testcase();
+}
+
+verdicttype testcase_tc__encdec__WriteDataByIdentifierRequest(boolean has_timer, double timer_value)
+{
+TTCN_Runtime::check_begin_testcase(has_timer, timer_value);
+TTCN_Location current_location("UnifiedDiagnosticServicestest.ttcn", 144, TTCN_Location::LOCATION_TESTCASE, "tc_encdec_WriteDataByIdentifierRequest");
+try {
+TTCN_Runtime::begin_testcase("UnifiedDiagnosticServicestest", "tc_encdec_WriteDataByIdentifierRequest", "UnifiedDiagnosticServicestest", "MTC_CT", "UnifiedDiagnosticServicestest", "MTC_CT", has_timer, timer_value);
+current_location.update_lineno(147);
+#line 147 "UnifiedDiagnosticServicestest.ttcn"
+UnifiedDiagnosticServices::TopLevelMessage__UDS__requests_template t__UDSRequestMessage;
+{
+UnifiedDiagnosticServices::WriteDataByIdentifierRequest_template tmp_8;
+tmp_8.writeDataByIdentifier1() = UnifiedDiagnosticServices__Template::t__WriteDataByIdentifierRequest1(os_5);
+t__UDSRequestMessage = UnifiedDiagnosticServices__Template::t__WriteDataByIdentifierRequestSID(tmp_8);
+}
+current_location.update_lineno(150);
+#line 150 "UnifiedDiagnosticServicestest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+UnifiedDiagnosticServices::encode__TopLevelMessage__UDS__requests(t__UDSRequestMessage.valueof()).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(151);
+#line 151 "UnifiedDiagnosticServicestest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+UnifiedDiagnosticServices::decode__TopLevelMessage__UDS__requests(UnifiedDiagnosticServices::encode__TopLevelMessage__UDS__requests(t__UDSRequestMessage.valueof())).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+} catch (const TC_Error& tc_error) {
+} catch (const TC_End& tc_end) {
+TTCN_Logger::log_str(TTCN_FUNCTION, "Test case tc_encdec_WriteDataByIdentifierRequest was stopped.");
+}
+return TTCN_Runtime::end_testcase();
+}
+
+verdicttype testcase_tc__encdec__WriteDataByIdentifierResponse(boolean has_timer, double timer_value)
+{
+TTCN_Runtime::check_begin_testcase(has_timer, timer_value);
+TTCN_Location current_location("UnifiedDiagnosticServicestest.ttcn", 157, TTCN_Location::LOCATION_TESTCASE, "tc_encdec_WriteDataByIdentifierResponse");
+try {
+TTCN_Runtime::begin_testcase("UnifiedDiagnosticServicestest", "tc_encdec_WriteDataByIdentifierResponse", "UnifiedDiagnosticServicestest", "MTC_CT", "UnifiedDiagnosticServicestest", "MTC_CT", has_timer, timer_value);
+current_location.update_lineno(160);
+#line 160 "UnifiedDiagnosticServicestest.ttcn"
+UnifiedDiagnosticServices::TopLevelMessage__UDS__responses_template t__UDSResponseMessage;
+{
+UnifiedDiagnosticServices::WriteDataByIdentifierResponse_template tmp_9;
+tmp_9.writeDataByIdentifier1() = UnifiedDiagnosticServices__Template::t__WriteDataByIdentifierResponse1;
+t__UDSResponseMessage = UnifiedDiagnosticServices__Template::t__WriteDataByIdentifierResponseSID(tmp_9);
+}
+current_location.update_lineno(163);
+#line 163 "UnifiedDiagnosticServicestest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+UnifiedDiagnosticServices::encode__TopLevelMessage__UDS__responses(t__UDSResponseMessage.valueof()).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(164);
+#line 164 "UnifiedDiagnosticServicestest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+UnifiedDiagnosticServices::decode__TopLevelMessage__UDS__responses(UnifiedDiagnosticServices::encode__TopLevelMessage__UDS__responses(t__UDSResponseMessage.valueof())).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+} catch (const TC_Error& tc_error) {
+} catch (const TC_End& tc_end) {
+TTCN_Logger::log_str(TTCN_FUNCTION, "Test case tc_encdec_WriteDataByIdentifierResponse was stopped.");
+}
+return TTCN_Runtime::end_testcase();
+}
+
+verdicttype testcase_tc__encdec__NegativeResponseCode(boolean has_timer, double timer_value)
+{
+TTCN_Runtime::check_begin_testcase(has_timer, timer_value);
+TTCN_Location current_location("UnifiedDiagnosticServicestest.ttcn", 169, TTCN_Location::LOCATION_TESTCASE, "tc_encdec_NegativeResponseCode");
+try {
+TTCN_Runtime::begin_testcase("UnifiedDiagnosticServicestest", "tc_encdec_NegativeResponseCode", "UnifiedDiagnosticServicestest", "MTC_CT", "UnifiedDiagnosticServicestest", "MTC_CT", has_timer, timer_value);
+current_location.update_lineno(172);
+#line 172 "UnifiedDiagnosticServicestest.ttcn"
+UnifiedDiagnosticServices::TopLevelMessage__UDS__responses_template t__UDSResponseMessage(UnifiedDiagnosticServices__Template::t__NegativeResponseCodeSID(UnifiedDiagnosticServices::e__RequestSID::readDataByIdentifier, UnifiedDiagnosticServices::e__ResponseCode::voltageTooLow));
+current_location.update_lineno(175);
+#line 175 "UnifiedDiagnosticServicestest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+UnifiedDiagnosticServices::encode__TopLevelMessage__UDS__responses(t__UDSResponseMessage.valueof()).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+current_location.update_lineno(176);
+#line 176 "UnifiedDiagnosticServicestest.ttcn"
+try {
+TTCN_Logger::begin_event(TTCN_USER);
+UnifiedDiagnosticServices::decode__TopLevelMessage__UDS__responses(UnifiedDiagnosticServices::encode__TopLevelMessage__UDS__responses(t__UDSResponseMessage.valueof())).log();
+TTCN_Logger::end_event();
+} catch (...) {
+TTCN_Logger::finish_event();
+throw;
+}
+} catch (const TC_Error& tc_error) {
+} catch (const TC_End& tc_end) {
+TTCN_Logger::log_str(TTCN_FUNCTION, "Test case tc_encdec_NegativeResponseCode was stopped.");
+}
+return TTCN_Runtime::end_testcase();
+}
+
+
+/* Bodies of static functions */
+
+static void pre_init_module()
+{
+TTCN_Location current_location("UnifiedDiagnosticServicestest.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "UnifiedDiagnosticServicestest");
+UnifiedDiagnosticServices__Template::module_object.pre_init_module();
+module_object.add_testcase_nonpard("tc_encdec_DiagnosticSessionControlRequest", testcase_tc__encdec__DiagnosticSessionControlRequest);
+module_object.add_testcase_nonpard("tc_encdec_DiagnosticSessionControlResponse", testcase_tc__encdec__DiagnosticSessionControlResponse);
+module_object.add_testcase_nonpard("tc_encdec_ECUResetRequest", testcase_tc__encdec__ECUResetRequest);
+module_object.add_testcase_nonpard("tc_encdec_ECUResetResponse", testcase_tc__encdec__ECUResetResponse);
+module_object.add_testcase_nonpard("tc_encdec_SecurityAccessRequest", testcase_tc__encdec__SecurityAccessRequest);
+module_object.add_testcase_nonpard("tc_encdec_SecurityAccessResponse", testcase_tc__encdec__SecurityAccessResponse);
+module_object.add_testcase_nonpard("tc_encdec_CommunicationControlRequest", testcase_tc__encdec__CommunicationControlRequest);
+module_object.add_testcase_nonpard("tc_encdec_CommunicationControlResponse", testcase_tc__encdec__CommunicationControlResponse);
+module_object.add_testcase_nonpard("tc_encdec_TesterPresentRequest", testcase_tc__encdec__TesterPresentRequest);
+module_object.add_testcase_nonpard("tc_encdec_ReadDataByIdentifierRequest", testcase_tc__encdec__ReadDataByIdentifierRequest);
+module_object.add_testcase_nonpard("tc_encdec_ReadDataByIdentifierResponse", testcase_tc__encdec__ReadDataByIdentifierResponse);
+module_object.add_testcase_nonpard("tc_encdec_WriteDataByIdentifierRequest", testcase_tc__encdec__WriteDataByIdentifierRequest);
+module_object.add_testcase_nonpard("tc_encdec_WriteDataByIdentifierResponse", testcase_tc__encdec__WriteDataByIdentifierResponse);
+module_object.add_testcase_nonpard("tc_encdec_NegativeResponseCode", testcase_tc__encdec__NegativeResponseCode);
+}
+
+static void post_init_module()
+{
+TTCN_Location current_location("UnifiedDiagnosticServicestest.ttcn", 0, TTCN_Location::LOCATION_UNKNOWN, "UnifiedDiagnosticServicestest");
+UnifiedDiagnosticServices__Template::module_object.post_init_module();
+}
+
+static boolean init_comp_type(const char *component_type, boolean init_base_comps)
+{
+(void)init_base_comps;
+if (!strcmp(component_type, "MTC_CT")) {
+return TRUE;
+} else return FALSE;
+}
+
+
+} /* end of namespace */
diff --git a/demo/UnifiedDiagnosticServicestest.d b/demo/UnifiedDiagnosticServicestest.d
new file mode 100644
index 0000000..782d246
--- /dev/null
+++ b/demo/UnifiedDiagnosticServicestest.d
@@ -0,0 +1,61 @@
+UnifiedDiagnosticServicestest.o UnifiedDiagnosticServicestest.d : UnifiedDiagnosticServicestest.cc \
+ UnifiedDiagnosticServicestest.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TTCN3.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/version.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/cversion.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Types.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Vector.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Error.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Basetype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Encdec.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RInt.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/JSON_Tokenizer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Logger.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Template.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Integer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ttcn3float.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Boolean.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Null.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Optional.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Param_Types.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/memory.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/BER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Textbuf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Parameters.h \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/XmlReader.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Objid.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Verdicttype.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Component.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Bitstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RAW.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/CharCoding.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Hexstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Octetstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_Any.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Universal_charstring.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Struct_of.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Array.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_CharacterString.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_External.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/TEXT.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ASN_EmbeddedPDV.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Addfunc.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Timer.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Port.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Event_Handler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/TitanLoggerApiSimple.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/RT1/PreGenRecordOf.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Module_list.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Snapshot.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Default.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Runtime.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/OER.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Profiler.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/ProfilerTools.hh \
+ /home/elnrnag/Ericsson/git/titan.core/Install/include/Debugger.hh \
+ UnifiedDiagnosticServices_Template.hh UnifiedDiagnosticServices.hh \
+ General_Types.hh
diff --git a/demo/UnifiedDiagnosticServicestest.hh b/demo/UnifiedDiagnosticServicestest.hh
new file mode 100644
index 0000000..f298f08
--- /dev/null
+++ b/demo/UnifiedDiagnosticServicestest.hh
@@ -0,0 +1,63 @@
+// This C++ header file was generated by the TTCN-3 compiler
+// of the TTCN-3 Test Executor version CRL 113 200/6 R6A
+// for Lénárd Nagy (elnrnag@elx78355y6x) on Thu Oct 24 10:29:40 2019
+
+// Copyright (c) 2000-2019 Ericsson Telecom AB
+
+// Do not edit this file unless you know what you are doing.
+
+#ifndef UnifiedDiagnosticServicestest_HH
+#define UnifiedDiagnosticServicestest_HH
+
+#ifdef TITAN_RUNTIME_2
+#error Generated code does not match with used runtime.\
+ Code was generated without -R option but -DTITAN_RUNTIME_2 was used.
+#endif
+
+/* Header file includes */
+
+#include <TTCN3.hh>
+#include "UnifiedDiagnosticServices_Template.hh"
+
+#if TTCN3_VERSION != 60600
+#error Version mismatch detected.\
+ Please check the version of the TTCN-3 compiler and the base library.\
+ Run make clean and rebuild the project if the version of the compiler changed recently.
+#endif
+
+#ifndef LINUX
+#error This file should be compiled on LINUX
+#endif
+
+namespace UnifiedDiagnosticServicestest {
+
+/* Type definitions */
+
+typedef COMPONENT MTC__CT;
+typedef COMPONENT_template MTC__CT_template;
+
+/* Function prototypes */
+
+extern verdicttype testcase_tc__encdec__DiagnosticSessionControlRequest(boolean has_timer, double timer_value);
+extern verdicttype testcase_tc__encdec__DiagnosticSessionControlResponse(boolean has_timer, double timer_value);
+extern verdicttype testcase_tc__encdec__ECUResetRequest(boolean has_timer, double timer_value);
+extern verdicttype testcase_tc__encdec__ECUResetResponse(boolean has_timer, double timer_value);
+extern verdicttype testcase_tc__encdec__SecurityAccessRequest(boolean has_timer, double timer_value);
+extern verdicttype testcase_tc__encdec__SecurityAccessResponse(boolean has_timer, double timer_value);
+extern verdicttype testcase_tc__encdec__CommunicationControlRequest(boolean has_timer, double timer_value);
+extern verdicttype testcase_tc__encdec__CommunicationControlResponse(boolean has_timer, double timer_value);
+extern verdicttype testcase_tc__encdec__TesterPresentRequest(boolean has_timer, double timer_value);
+extern verdicttype testcase_tc__encdec__ReadDataByIdentifierRequest(boolean has_timer, double timer_value);
+extern verdicttype testcase_tc__encdec__ReadDataByIdentifierResponse(boolean has_timer, double timer_value);
+extern verdicttype testcase_tc__encdec__WriteDataByIdentifierRequest(boolean has_timer, double timer_value);
+extern verdicttype testcase_tc__encdec__WriteDataByIdentifierResponse(boolean has_timer, double timer_value);
+extern verdicttype testcase_tc__encdec__NegativeResponseCode(boolean has_timer, double timer_value);
+
+/* Global variable declarations */
+
+extern const TTCN_Typedescriptor_t& MTC__CT_descr_;
+extern TTCN_Module module_object;
+
+} /* end of namespace */
+
+#endif
diff --git a/demo/UnifiedDiagnosticServicestest.o b/demo/UnifiedDiagnosticServicestest.o
new file mode 100644
index 0000000..909fc5d
--- /dev/null
+++ b/demo/UnifiedDiagnosticServicestest.o
Binary files differ
diff --git a/demo/compile b/demo/compile
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/demo/compile